p2party 0.7.10 → 0.8.0

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.
Files changed (63) hide show
  1. package/lib/api/signalingServerApi.d.ts +0 -3
  2. package/lib/api/signalingServerApi.d.ts.map +1 -0
  3. package/lib/api/webrtc/baseQuery.d.ts.map +1 -1
  4. package/lib/api/webrtc/disconnectFromPeerChannelLabelQuery.d.ts.map +1 -1
  5. package/lib/api/webrtc/disconnectFromPeerQuery.d.ts.map +1 -1
  6. package/lib/api/webrtc/index.d.ts.map +1 -1
  7. package/lib/api/webrtc/interfaces.d.ts +3 -0
  8. package/lib/api/webrtc/interfaces.d.ts.map +1 -1
  9. package/lib/api/webrtc/sendMessageQuery.d.ts.map +1 -1
  10. package/lib/api/webrtc/setDescriptionQuery.d.ts.map +1 -1
  11. package/lib/cryptography/chacha20poly1305.d.ts.map +1 -0
  12. package/lib/cryptography/ed25519.d.ts.map +1 -0
  13. package/lib/cryptography/interfaces.d.ts.map +1 -0
  14. package/lib/cryptography/memory.d.ts.map +1 -0
  15. package/lib/cryptography/merkle.d.ts.map +1 -0
  16. package/lib/cryptography/mnemonic.d.ts.map +1 -0
  17. package/lib/cryptography/utils.d.ts.map +1 -0
  18. package/lib/cryptography/wasmLoader.d.ts +2 -0
  19. package/lib/cryptography/wasmLoader.d.ts.map +1 -0
  20. package/lib/db/api.d.ts.map +1 -0
  21. package/lib/db/db.worker.d.ts.map +1 -0
  22. package/lib/db/types.d.ts.map +1 -0
  23. package/lib/db.worker.js +1 -1
  24. package/lib/db.worker.js.map +1 -0
  25. package/lib/handlers/handleChallenge.d.ts +1 -2
  26. package/lib/handlers/handleChallenge.d.ts.map +1 -0
  27. package/lib/handlers/handleConnectToPeer.d.ts.map +1 -0
  28. package/lib/handlers/handleMessageQueueing.d.ts +5 -0
  29. package/lib/handlers/handleMessageQueueing.d.ts.map +1 -0
  30. package/lib/handlers/handleOpenChannel.d.ts.map +1 -0
  31. package/lib/handlers/handleQueuedIceCandidates.d.ts.map +1 -0
  32. package/lib/handlers/handleReadReceipt.d.ts +1 -2
  33. package/lib/handlers/handleReadReceipt.d.ts.map +1 -0
  34. package/lib/handlers/handleReceiveMessage.d.ts.map +1 -0
  35. package/lib/handlers/handleSendMessage.d.ts.map +1 -0
  36. package/lib/handlers/handleWebSocketMessage.d.ts +2 -1
  37. package/lib/handlers/handleWebSocketMessage.d.ts.map +1 -0
  38. package/lib/index.d.ts +1 -0
  39. package/lib/index.d.ts.map +1 -0
  40. package/lib/index.js +1 -1
  41. package/lib/index.js.map +1 -0
  42. package/lib/index.min.js +1 -1
  43. package/lib/index.min.js.map +1 -0
  44. package/lib/index.mjs +1 -1
  45. package/lib/index.mjs.map +1 -0
  46. package/lib/middleware/keyPairListenerMiddleware.d.ts.map +1 -0
  47. package/lib/middleware/roomListenerMiddleware.d.ts.map +1 -0
  48. package/lib/reducers/commonSlice.d.ts.map +1 -0
  49. package/lib/reducers/keyPairSlice.d.ts.map +1 -0
  50. package/lib/reducers/roomSlice.d.ts.map +1 -0
  51. package/lib/reducers/signalingServerSlice.d.ts.map +1 -0
  52. package/lib/store.d.ts.map +1 -0
  53. package/lib/utils/allocators.d.ts.map +1 -0
  54. package/lib/utils/channelLabel.d.ts.map +1 -0
  55. package/lib/utils/constants.d.ts.map +1 -0
  56. package/lib/utils/interfaces.d.ts +21 -0
  57. package/lib/utils/interfaces.d.ts.map +1 -0
  58. package/lib/utils/messageTypes.d.ts.map +1 -0
  59. package/lib/utils/metadata.d.ts.map +1 -0
  60. package/lib/utils/splitToChunks.d.ts.map +1 -0
  61. package/lib/utils/uint8array.d.ts.map +1 -0
  62. package/package.json +16 -25
  63. package/lib/handlers/handleSendMessageWebsocket.d.ts +0 -4
package/lib/index.min.js CHANGED
@@ -1,2 +1,2 @@
1
- var A,e;A=this,e=function(A){"use strict";function e(A){return A&&A.__esModule&&Object.prototype.hasOwnProperty.call(A,"default")?A.default:A}var I,g={exports:{}};function Q(){return I||(I=1,function(A,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(A){if(null==A)throw new TypeError("Expected a string but received a ".concat(A));if("String"!==A.constructor.name)throw new TypeError("Expected a string but received a ".concat(A.constructor.name))},A.exports=e.default,A.exports.default=e.default}(g,g.exports)),g.exports}var t,B={exports:{}};var E=e((t||(t=1,function(A,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(A){return(0,g.default)(A),t.test(A)};var I,g=(I=Q())&&I.__esModule?I:{default:I},t=/^(0x|0h)?[0-9A-F]+$/i;A.exports=e.default,A.exports.default=e.default}(B,B.exports)),B.exports));function i(A){return"string"==typeof A&&E(A)}var C,a={exports:{}};var n=e((C||(C=1,function(A,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(A,e){return(0,g.default)(A),null==e&&(e="all"),e in t&&t[e].test(A)};var I,g=(I=Q())&&I.__esModule?I:{default:I},t={1:/^[0-9A-F]{8}-[0-9A-F]{4}-1[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,2:/^[0-9A-F]{8}-[0-9A-F]{4}-2[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,3:/^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,4:/^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,5:/^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,6:/^[0-9A-F]{8}-[0-9A-F]{4}-6[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,7:/^[0-9A-F]{8}-[0-9A-F]{4}-7[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,8:/^[0-9A-F]{8}-[0-9A-F]{4}-8[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,nil:/^00000000-0000-0000-0000-000000000000$/i,max:/^ffffffff-ffff-ffff-ffff-ffffffffffff$/i,loose:/^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i,all:/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i};A.exports=e.default,A.exports.default=e.default}(a,a.exports)),a.exports));function o(A,e){return"string"==typeof A&&n(A,e)}function r(A){return`Minified Redux error #${A}; visit https://redux.js.org/Errors?code=${A} for the full message or use the non-minified dev environment for full errors. `}var s="function"==typeof Symbol&&Symbol.observable||"@@observable",c=()=>Math.random().toString(36).substring(7).split("").join("."),h={INIT:`@@redux/INIT${c()}`,REPLACE:`@@redux/REPLACE${c()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${c()}`};function l(A){if("object"!=typeof A||null===A)return!1;let e=A;for(;null!==Object.getPrototypeOf(e);)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(A)===e||null===Object.getPrototypeOf(A)}function f(A,e,I){if("function"!=typeof A)throw new Error(r(2));if("function"==typeof e&&"function"==typeof I||"function"==typeof I&&"function"==typeof arguments[3])throw new Error(r(0));if("function"==typeof e&&void 0===I&&(I=e,e=void 0),void 0!==I){if("function"!=typeof I)throw new Error(r(1));return I(f)(A,e)}let g=A,Q=e,t=new Map,B=t,E=0,i=!1;function C(){B===t&&(B=new Map,t.forEach((A,e)=>{B.set(e,A)}))}function a(){if(i)throw new Error(r(3));return Q}function n(A){if("function"!=typeof A)throw new Error(r(4));if(i)throw new Error(r(5));let e=!0;C();const I=E++;return B.set(I,A),function(){if(e){if(i)throw new Error(r(6));e=!1,C(),B.delete(I),t=null}}}function o(A){if(!l(A))throw new Error(r(7));if(void 0===A.type)throw new Error(r(8));if("string"!=typeof A.type)throw new Error(r(17));if(i)throw new Error(r(9));try{i=!0,Q=g(Q,A)}finally{i=!1}return(t=B).forEach(A=>{A()}),A}return o({type:h.INIT}),{dispatch:o,subscribe:n,getState:a,replaceReducer:function(A){if("function"!=typeof A)throw new Error(r(10));g=A,o({type:h.REPLACE})},[s]:function(){const A=n;return{subscribe(e){if("object"!=typeof e||null===e)throw new Error(r(11));function I(){const A=e;A.next&&A.next(a())}return I(),{unsubscribe:A(I)}},[s](){return this}}}}}function d(A){const e=Object.keys(A),I={};for(let g=0;g<e.length;g++){const Q=e[g];"function"==typeof A[Q]&&(I[Q]=A[Q])}const g=Object.keys(I);let Q;try{!function(A){Object.keys(A).forEach(e=>{const I=A[e];if(void 0===I(void 0,{type:h.INIT}))throw new Error(r(12));if(void 0===I(void 0,{type:h.PROBE_UNKNOWN_ACTION()}))throw new Error(r(13))})}(I)}catch(A){Q=A}return function(A={},e){if(Q)throw Q;let t=!1;const B={};for(let Q=0;Q<g.length;Q++){const E=g[Q],i=I[E],C=A[E],a=i(C,e);if(void 0===a)throw e&&e.type,new Error(r(14));B[E]=a,t=t||a!==C}return t=t||g.length!==Object.keys(A).length,t?B:A}}function w(...A){return 0===A.length?A=>A:1===A.length?A[0]:A.reduce((A,e)=>(...I)=>A(e(...I)))}function u(A){return l(A)&&"type"in A&&"string"==typeof A.type}var y=Symbol.for("immer-nothing"),D=Symbol.for("immer-draftable"),p=Symbol.for("immer-state");function k(A,...e){throw new Error(`[Immer] minified error nr: ${A}. Full error at: https://bit.ly/3cXEKWf`)}var m=Object.getPrototypeOf;function F(A){return!!A&&!!A[p]}function S(A){return!!A&&(G(A)||Array.isArray(A)||!!A[D]||!!A.constructor?.[D]||v(A)||P(A))}var R=Object.prototype.constructor.toString();function G(A){if(!A||"object"!=typeof A)return!1;const e=m(A);if(null===e)return!0;const I=Object.hasOwnProperty.call(e,"constructor")&&e.constructor;return I===Object||"function"==typeof I&&Function.toString.call(I)===R}function H(A,e){0===U(A)?Reflect.ownKeys(A).forEach(I=>{e(I,A[I],A)}):A.forEach((I,g)=>e(g,I,A))}function U(A){const e=A[p];return e?e.type_:Array.isArray(A)?1:v(A)?2:P(A)?3:0}function M(A,e){return 2===U(A)?A.has(e):Object.prototype.hasOwnProperty.call(A,e)}function J(A,e){return 2===U(A)?A.get(e):A[e]}function b(A,e,I){const g=U(A);2===g?A.set(e,I):3===g?A.add(I):A[e]=I}function v(A){return A instanceof Map}function P(A){return A instanceof Set}function x(A){return A.copy_||A.base_}function N(A,e){if(v(A))return new Map(A);if(P(A))return new Set(A);if(Array.isArray(A))return Array.prototype.slice.call(A);const I=G(A);if(!0===e||"class_only"===e&&!I){const e=Object.getOwnPropertyDescriptors(A);delete e[p];let I=Reflect.ownKeys(e);for(let g=0;g<I.length;g++){const Q=I[g],t=e[Q];!1===t.writable&&(t.writable=!0,t.configurable=!0),(t.get||t.set)&&(e[Q]={configurable:!0,writable:!0,enumerable:t.enumerable,value:A[Q]})}return Object.create(m(A),e)}{const e=m(A);if(null!==e&&I)return{...A};const g=Object.create(e);return Object.assign(g,A)}}function q(A,e=!1){return Y(A)||F(A)||!S(A)||(U(A)>1&&Object.defineProperties(A,{set:{value:K},add:{value:K},clear:{value:K},delete:{value:K}}),Object.freeze(A),e&&Object.values(A).forEach(A=>q(A,!0))),A}function K(){k(2)}function Y(A){return Object.isFrozen(A)}var L,T={};function V(A){const e=T[A];return e||k(0),e}function O(){return L}function X(A,e){e&&(V("Patches"),A.patches_=[],A.inversePatches_=[],A.patchListener_=e)}function j(A){W(A),A.drafts_.forEach(z),A.drafts_=null}function W(A){A===L&&(L=A.parent_)}function Z(A){return L={drafts_:[],parent_:L,immer_:A,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function z(A){const e=A[p];0===e.type_||1===e.type_?e.revoke_():e.revoked_=!0}function _(A,e){e.unfinalizedDrafts_=e.drafts_.length;const I=e.drafts_[0];return void 0!==A&&A!==I?(I[p].modified_&&(j(e),k(4)),S(A)&&(A=$(e,A),e.parent_||eA(e,A)),e.patches_&&V("Patches").generateReplacementPatches_(I[p].base_,A,e.patches_,e.inversePatches_)):A=$(e,I,[]),j(e),e.patches_&&e.patchListener_(e.patches_,e.inversePatches_),A!==y?A:void 0}function $(A,e,I){if(Y(e))return e;const g=e[p];if(!g)return H(e,(Q,t)=>AA(A,g,e,Q,t,I)),e;if(g.scope_!==A)return e;if(!g.modified_)return eA(A,g.base_,!0),g.base_;if(!g.finalized_){g.finalized_=!0,g.scope_.unfinalizedDrafts_--;const e=g.copy_;let Q=e,t=!1;3===g.type_&&(Q=new Set(e),e.clear(),t=!0),H(Q,(Q,B)=>AA(A,g,e,Q,B,I,t)),eA(A,e,!1),I&&A.patches_&&V("Patches").generatePatches_(g,I,A.patches_,A.inversePatches_)}return g.copy_}function AA(A,e,I,g,Q,t,B){if(F(Q)){const B=$(A,Q,t&&e&&3!==e.type_&&!M(e.assigned_,g)?t.concat(g):void 0);if(b(I,g,B),!F(B))return;A.canAutoFreeze_=!1}else B&&I.add(Q);if(S(Q)&&!Y(Q)){if(!A.immer_.autoFreeze_&&A.unfinalizedDrafts_<1)return;$(A,Q),e&&e.scope_.parent_||"symbol"==typeof g||!(v(I)?I.has(g):Object.prototype.propertyIsEnumerable.call(I,g))||eA(A,Q)}}function eA(A,e,I=!1){!A.parent_&&A.immer_.autoFreeze_&&A.canAutoFreeze_&&q(e,I)}var IA={get(A,e){if(e===p)return A;const I=x(A);if(!M(I,e))return function(A,e,I){const g=tA(e,I);return g?"value"in g?g.value:g.get?.call(A.draft_):void 0}(A,I,e);const g=I[e];return A.finalized_||!S(g)?g:g===QA(A.base_,e)?(EA(A),A.copy_[e]=iA(g,A)):g},has:(A,e)=>e in x(A),ownKeys:A=>Reflect.ownKeys(x(A)),set(A,e,I){const g=tA(x(A),e);if(g?.set)return g.set.call(A.draft_,I),!0;if(!A.modified_){const g=QA(x(A),e),B=g?.[p];if(B&&B.base_===I)return A.copy_[e]=I,A.assigned_[e]=!1,!0;if(((Q=I)===(t=g)?0!==Q||1/Q==1/t:Q!=Q&&t!=t)&&(void 0!==I||M(A.base_,e)))return!0;EA(A),BA(A)}var Q,t;return A.copy_[e]===I&&(void 0!==I||e in A.copy_)||Number.isNaN(I)&&Number.isNaN(A.copy_[e])||(A.copy_[e]=I,A.assigned_[e]=!0),!0},deleteProperty:(A,e)=>(void 0!==QA(A.base_,e)||e in A.base_?(A.assigned_[e]=!1,EA(A),BA(A)):delete A.assigned_[e],A.copy_&&delete A.copy_[e],!0),getOwnPropertyDescriptor(A,e){const I=x(A),g=Reflect.getOwnPropertyDescriptor(I,e);return g?{writable:!0,configurable:1!==A.type_||"length"!==e,enumerable:g.enumerable,value:I[e]}:g},defineProperty(){k(11)},getPrototypeOf:A=>m(A.base_),setPrototypeOf(){k(12)}},gA={};function QA(A,e){const I=A[p];return(I?x(I):A)[e]}function tA(A,e){if(!(e in A))return;let I=m(A);for(;I;){const A=Object.getOwnPropertyDescriptor(I,e);if(A)return A;I=m(I)}}function BA(A){A.modified_||(A.modified_=!0,A.parent_&&BA(A.parent_))}function EA(A){A.copy_||(A.copy_=N(A.base_,A.scope_.immer_.useStrictShallowCopy_))}function iA(A,e){const I=v(A)?V("MapSet").proxyMap_(A,e):P(A)?V("MapSet").proxySet_(A,e):function(A,e){const I=Array.isArray(A),g={type_:I?1:0,scope_:e?e.scope_:O(),modified_:!1,finalized_:!1,assigned_:{},parent_:e,base_:A,draft_:null,copy_:null,revoke_:null,isManual_:!1};let Q=g,t=IA;I&&(Q=[g],t=gA);const{revoke:B,proxy:E}=Proxy.revocable(Q,t);return g.draft_=E,g.revoke_=B,E}(A,e);return(e?e.scope_:O()).drafts_.push(I),I}function CA(A){if(!S(A)||Y(A))return A;const e=A[p];let I;if(e){if(!e.modified_)return e.base_;e.finalized_=!0,I=N(A,e.scope_.immer_.useStrictShallowCopy_)}else I=N(A,!0);return H(I,(A,e)=>{b(I,A,CA(e))}),e&&(e.finalized_=!1),I}function aA(){const A="replace",e="add",I="remove";function g(A){if(!S(A))return A;if(Array.isArray(A))return A.map(g);if(v(A))return new Map(Array.from(A.entries()).map(([A,e])=>[A,g(e)]));if(P(A))return new Set(Array.from(A).map(g));const e=Object.create(m(A));for(const I in A)e[I]=g(A[I]);return M(A,D)&&(e[D]=A[D]),e}function Q(A){return F(A)?g(A):A}var t;t={applyPatches_:function(Q,t){return t.forEach(t=>{const{path:B,op:E}=t;let i=Q;for(let A=0;A<B.length-1;A++){const e=U(i);let I=B[A];"string"!=typeof I&&"number"!=typeof I&&(I=""+I),0!==e&&1!==e||"__proto__"!==I&&"constructor"!==I||k(19),"function"==typeof i&&"prototype"===I&&k(19),i=J(i,I),"object"!=typeof i&&k(18,B.join("/"))}const C=U(i),a=g(t.value),n=B[B.length-1];switch(E){case A:switch(C){case 2:return i.set(n,a);case 3:k(16);default:return i[n]=a}case e:switch(C){case 1:return"-"===n?i.push(a):i.splice(n,0,a);case 2:return i.set(n,a);case 3:return i.add(a);default:return i[n]=a}case I:switch(C){case 1:return i.splice(n,1);case 2:return i.delete(n);case 3:return i.delete(t.value);default:return delete i[n]}default:k(17)}}),Q},generatePatches_:function(g,t,B,E){switch(g.type_){case 0:case 2:return function(g,t,B,E){const{base_:i,copy_:C}=g;H(g.assigned_,(g,a)=>{const n=J(i,g),o=J(C,g),r=a?M(i,g)?A:e:I;if(n===o&&r===A)return;const s=t.concat(g);B.push(r===I?{op:r,path:s}:{op:r,path:s,value:o}),E.push(r===e?{op:I,path:s}:r===I?{op:e,path:s,value:Q(n)}:{op:A,path:s,value:Q(n)})})}(g,t,B,E);case 1:return function(g,t,B,E){let{base_:i,assigned_:C}=g,a=g.copy_;a.length<i.length&&([i,a]=[a,i],[B,E]=[E,B]);for(let e=0;e<i.length;e++)if(C[e]&&a[e]!==i[e]){const I=t.concat([e]);B.push({op:A,path:I,value:Q(a[e])}),E.push({op:A,path:I,value:Q(i[e])})}for(let A=i.length;A<a.length;A++){const I=t.concat([A]);B.push({op:e,path:I,value:Q(a[A])})}for(let A=a.length-1;i.length<=A;--A){const e=t.concat([A]);E.push({op:I,path:e})}}(g,t,B,E);case 3:return function(A,g,Q,t){let{base_:B,copy_:E}=A,i=0;B.forEach(A=>{if(!E.has(A)){const B=g.concat([i]);Q.push({op:I,path:B,value:A}),t.unshift({op:e,path:B,value:A})}i++}),i=0,E.forEach(A=>{if(!B.has(A)){const B=g.concat([i]);Q.push({op:e,path:B,value:A}),t.unshift({op:I,path:B,value:A})}i++})}(g,t,B,E)}},generateReplacementPatches_:function(e,I,g,Q){g.push({op:A,path:[],value:I===y?void 0:I}),Q.push({op:A,path:[],value:e})}},T["Patches"]||(T.Patches=t)}H(IA,(A,e)=>{gA[A]=function(){return arguments[0]=arguments[0][0],e.apply(this,arguments)}}),gA.deleteProperty=function(A,e){return gA.set.call(this,A,e,void 0)},gA.set=function(A,e,I){return IA.set.call(this,A[0],e,I,A[0])};var nA=new class{constructor(A){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.produce=(A,e,I)=>{if("function"==typeof A&&"function"!=typeof e){const I=e;e=A;const g=this;return function(A=I,...Q){return g.produce(A,A=>e.call(this,A,...Q))}}let g;if("function"!=typeof e&&k(6),void 0!==I&&"function"!=typeof I&&k(7),S(A)){const Q=Z(this),t=iA(A,void 0);let B=!0;try{g=e(t),B=!1}finally{B?j(Q):W(Q)}return X(Q,I),_(g,Q)}if(!A||"object"!=typeof A){if(g=e(A),void 0===g&&(g=A),g===y&&(g=void 0),this.autoFreeze_&&q(g,!0),I){const e=[],Q=[];V("Patches").generateReplacementPatches_(A,g,e,Q),I(e,Q)}return g}k(1)},this.produceWithPatches=(A,e)=>{if("function"==typeof A)return(e,...I)=>this.produceWithPatches(e,e=>A(e,...I));let I,g;return[this.produce(A,e,(A,e)=>{I=A,g=e}),I,g]},"boolean"==typeof A?.autoFreeze&&this.setAutoFreeze(A.autoFreeze),"boolean"==typeof A?.useStrictShallowCopy&&this.setUseStrictShallowCopy(A.useStrictShallowCopy)}createDraft(A){var e;S(A)||k(8),F(A)&&(F(e=A)||k(10),A=CA(e));const I=Z(this),g=iA(A,void 0);return g[p].isManual_=!0,W(I),g}finishDraft(A,e){const I=A&&A[p];I&&I.isManual_||k(9);const{scope_:g}=I;return X(g,e),_(void 0,g)}setAutoFreeze(A){this.autoFreeze_=A}setUseStrictShallowCopy(A){this.useStrictShallowCopy_=A}applyPatches(A,e){let I;for(I=e.length-1;I>=0;I--){const g=e[I];if(0===g.path.length&&"replace"===g.op){A=g.value;break}}I>-1&&(e=e.slice(I+1));const g=V("Patches").applyPatches_;return F(A)?g(A,e):this.produce(A,A=>g(A,e))}},oA=nA.produce,rA=nA.produceWithPatches.bind(nA),sA=nA.applyPatches.bind(nA),cA=A=>Array.isArray(A)?A:[A];var hA="undefined"!=typeof WeakRef?WeakRef:class{constructor(A){this.value=A}deref(){return this.value}};function lA(){return{s:0,v:void 0,o:null,p:null}}function fA(A,e={}){let I={s:0,v:void 0,o:null,p:null};const{resultEqualityCheck:g}=e;let Q,t=0;function B(){let e=I;const{length:B}=arguments;for(let A=0,I=B;A<I;A++){const I=arguments[A];if("function"==typeof I||"object"==typeof I&&null!==I){let A=e.o;null===A&&(e.o=A=new WeakMap);const g=A.get(I);void 0===g?(e=lA(),A.set(I,e)):e=g}else{let A=e.p;null===A&&(e.p=A=new Map);const g=A.get(I);void 0===g?(e=lA(),A.set(I,e)):e=g}}const E=e;let i;if(1===e.s)i=e.v;else if(i=A.apply(null,arguments),t++,g){const A=Q?.deref?.()??Q;null!=A&&g(A,i)&&(i=A,0!==t&&t--),Q="object"==typeof i&&null!==i||"function"==typeof i?new hA(i):i}return E.s=1,E.v=i,i}return B.clearCache=()=>{I={s:0,v:void 0,o:null,p:null},B.resetResultsCount()},B.resultsCount=()=>t,B.resetResultsCount=()=>{t=0},B}var dA=function(A,...e){const I="function"==typeof A?{memoize:A,memoizeOptions:e}:A,g=(...A)=>{let e,g=0,Q=0,t={},B=A.pop();"object"==typeof B&&(t=B,B=A.pop()),function(A,e="expected a function, instead received "+typeof A){if("function"!=typeof A)throw new TypeError(e)}(B,`createSelector expects an output function after the inputs, but received: [${typeof B}]`);const E={...I,...t},{memoize:i,memoizeOptions:C=[],argsMemoize:a=fA,argsMemoizeOptions:n=[]}=E,o=cA(C),r=cA(n),s=function(A){const e=Array.isArray(A[0])?A[0]:A;return function(A,e="expected all items to be functions, instead received the following types: "){if(!A.every(A=>"function"==typeof A)){const I=A.map(A=>"function"==typeof A?`function ${A.name||"unnamed"}()`:typeof A).join(", ");throw new TypeError(`${e}[${I}]`)}}(e,"createSelector expects all input-selectors to be functions, but received the following types: "),e}(A),c=i(function(){return g++,B.apply(null,arguments)},...o),h=a(function(){Q++;const A=function(A,e){const I=[],{length:g}=A;for(let Q=0;Q<g;Q++)I.push(A[Q].apply(null,e));return I}(s,arguments);return e=c.apply(null,A),e},...r);return Object.assign(h,{resultFunc:B,memoizedResultFunc:c,dependencies:s,dependencyRecomputations:()=>Q,resetDependencyRecomputations:()=>{Q=0},lastResult:()=>e,recomputations:()=>g,resetRecomputations:()=>{g=0},memoize:i,argsMemoize:a})};return Object.assign(g,{withTypes:()=>g}),g}(fA),wA=Object.assign((A,e=dA)=>{!function(A,e="expected an object, instead received "+typeof A){if("object"!=typeof A)throw new TypeError(e)}(A,"createStructuredSelector expects first argument to be an object where each property is a selector, instead received a "+typeof A);const I=Object.keys(A);return e(I.map(e=>A[e]),(...A)=>A.reduce((A,e,g)=>(A[I[g]]=e,A),{}))},{withTypes:()=>wA});function uA(A){return({dispatch:e,getState:I})=>g=>Q=>"function"==typeof Q?Q(e,I,A):g(Q)}var yA=uA(),DA=uA,pA="undefined"!=typeof window&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(0!==arguments.length)return"object"==typeof arguments[0]?w:w.apply(null,arguments)};function kA(A,e){function I(...I){if(e){let g=e(...I);if(!g)throw new Error(Me(0));return{type:A,payload:g.payload,..."meta"in g&&{meta:g.meta},..."error"in g&&{error:g.error}}}return{type:A,payload:I[0]}}return I.toString=()=>`${A}`,I.type=A,I.match=e=>u(e)&&e.type===A,I}var mA=class A extends Array{constructor(...e){super(...e),Object.setPrototypeOf(this,A.prototype)}static get[Symbol.species](){return A}concat(...A){return super.concat.apply(this,A)}prepend(...e){return 1===e.length&&Array.isArray(e[0])?new A(...e[0].concat(this)):new A(...e.concat(this))}};function FA(A){return S(A)?oA(A,()=>{}):A}function SA(A,e,I){return A.has(e)?A.get(e):A.set(e,I(e)).get(e)}var RA="RTK_autoBatch",GA=()=>A=>({payload:A,meta:{[RA]:!0}}),HA=A=>e=>{setTimeout(e,A)};function UA(A){const e={},I=[];let g;const Q={addCase(A,I){const g="string"==typeof A?A:A.type;if(!g)throw new Error(Me(28));if(g in e)throw new Error(Me(29));return e[g]=I,Q},addAsyncThunk:(A,g)=>(g.pending&&(e[A.pending.type]=g.pending),g.rejected&&(e[A.rejected.type]=g.rejected),g.fulfilled&&(e[A.fulfilled.type]=g.fulfilled),g.settled&&I.push({matcher:A.settled,reducer:g.settled}),Q),addMatcher:(A,e)=>(I.push({matcher:A,reducer:e}),Q),addDefaultCase:A=>(g=A,Q)};return A(Q),[e,I,g]}var MA=(A,e)=>{return(I=A)&&"function"==typeof I.match?A.match(e):A(e);var I};function JA(...A){return e=>A.some(A=>MA(A,e))}function bA(...A){return e=>A.every(A=>MA(A,e))}function vA(A,e){if(!A||!A.meta)return!1;const I="string"==typeof A.meta.requestId,g=e.indexOf(A.meta.requestStatus)>-1;return I&&g}function PA(A){return"function"==typeof A[0]&&"pending"in A[0]&&"fulfilled"in A[0]&&"rejected"in A[0]}function xA(...A){return 0===A.length?A=>vA(A,["pending"]):PA(A)?JA(...A.map(A=>A.pending)):xA()(A[0])}function NA(...A){return 0===A.length?A=>vA(A,["rejected"]):PA(A)?JA(...A.map(A=>A.rejected)):NA()(A[0])}function qA(...A){return 0===A.length||PA(A)?bA(NA(...A),A=>A&&A.meta&&A.meta.rejectedWithValue):qA()(A[0])}function KA(...A){return 0===A.length?A=>vA(A,["fulfilled"]):PA(A)?JA(...A.map(A=>A.fulfilled)):KA()(A[0])}function YA(...A){return 0===A.length?A=>vA(A,["pending","fulfilled","rejected"]):PA(A)?JA(...A.flatMap(A=>[A.pending,A.rejected,A.fulfilled])):YA()(A[0])}var LA=(A=21)=>{let e="",I=A;for(;I--;)e+="ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW"[64*Math.random()|0];return e},TA=["name","message","stack","code"],VA=class{constructor(A,e){this.payload=A,this.meta=e}_type},OA=class{constructor(A,e){this.payload=A,this.meta=e}_type},XA=A=>{if("object"==typeof A&&null!==A){const e={};for(const I of TA)"string"==typeof A[I]&&(e[I]=A[I]);return e}return{message:String(A)}},jA="External signal was aborted",WA=(()=>{function A(A,e,I){const g=kA(A+"/fulfilled",(A,e,I,g)=>({payload:A,meta:{...g||{},arg:I,requestId:e,requestStatus:"fulfilled"}})),Q=kA(A+"/pending",(A,e,I)=>({payload:void 0,meta:{...I||{},arg:e,requestId:A,requestStatus:"pending"}})),t=kA(A+"/rejected",(A,e,g,Q,t)=>({payload:Q,error:(I&&I.serializeError||XA)(A||"Rejected"),meta:{...t||{},arg:g,requestId:e,rejectedWithValue:!!Q,requestStatus:"rejected",aborted:"AbortError"===A?.name,condition:"ConditionError"===A?.name}}));return Object.assign(function(A,{signal:B}={}){return(E,i,C)=>{const a=I?.idGenerator?I.idGenerator(A):LA(),n=new AbortController;let o,r;function s(A){r=A,n.abort()}B&&(B.aborted?s(jA):B.addEventListener("abort",()=>s(jA),{once:!0}));const c=async function(){let B;try{let t=I?.condition?.(A,{getState:i,extra:C});if(null!==(c=t)&&"object"==typeof c&&"function"==typeof c.then&&(t=await t),!1===t||n.signal.aborted)throw{name:"ConditionError",message:"Aborted due to condition callback returning false."};const h=new Promise((A,e)=>{o=()=>{e({name:"AbortError",message:r||"Aborted"})},n.signal.addEventListener("abort",o)});E(Q(a,A,I?.getPendingMeta?.({requestId:a,arg:A},{getState:i,extra:C}))),B=await Promise.race([h,Promise.resolve(e(A,{dispatch:E,getState:i,extra:C,requestId:a,signal:n.signal,abort:s,rejectWithValue:(A,e)=>new VA(A,e),fulfillWithValue:(A,e)=>new OA(A,e)})).then(e=>{if(e instanceof VA)throw e;return e instanceof OA?g(e.payload,a,A,e.meta):g(e,a,A)})])}catch(e){B=e instanceof VA?t(null,a,A,e.payload,e.meta):t(e,a,A)}finally{o&&n.signal.removeEventListener("abort",o)}var c;return I&&!I.dispatchConditionRejection&&t.match(B)&&B.meta.condition||E(B),B}();return Object.assign(c,{abort:s,requestId:a,arg:A,unwrap:()=>c.then(ZA)})}},{pending:Q,rejected:t,fulfilled:g,settled:JA(t,g),typePrefix:A})}return A.withTypes=()=>A,A})();function ZA(A){if(A.meta&&A.meta.rejectedWithValue)throw A.payload;if(A.error)throw A.error;return A.payload}var zA=Symbol.for("rtk-slice-createasyncthunk");function _A(A,e){return`${A}/${e}`}function $A(A,e,I,g){function Q(Q,...t){let B=e(Q);return void 0===B&&g&&(B=I()),A(B,...t)}return Q.unwrapped=A,Q}var Ae=function({creators:A}={}){const e=A?.asyncThunk?.[zA];return function(A){const{name:I,reducerPath:g=I}=A;if(!I)throw new Error(Me(11));const Q=("function"==typeof A.reducers?A.reducers(function(){function A(A,e){return{_reducerDefinitionType:"asyncThunk",payloadCreator:A,...e}}return A.withTypes=()=>A,{reducer:A=>Object.assign({[A.name]:(...e)=>A(...e)}[A.name],{_reducerDefinitionType:"reducer"}),preparedReducer:(A,e)=>({_reducerDefinitionType:"reducerWithPrepare",prepare:A,reducer:e}),asyncThunk:A}}()):A.reducers)||{},t=Object.keys(Q),B={sliceCaseReducersByName:{},sliceCaseReducersByType:{},actionCreators:{},sliceMatchers:[]},E={addCase(A,e){const I="string"==typeof A?A:A.type;if(!I)throw new Error(Me(12));if(I in B.sliceCaseReducersByType)throw new Error(Me(13));return B.sliceCaseReducersByType[I]=e,E},addMatcher:(A,e)=>(B.sliceMatchers.push({matcher:A,reducer:e}),E),exposeAction:(A,e)=>(B.actionCreators[A]=e,E),exposeCaseReducer:(A,e)=>(B.sliceCaseReducersByName[A]=e,E)};function i(){const[e={},I=[],g]="function"==typeof A.extraReducers?UA(A.extraReducers):[A.extraReducers],Q={...e,...B.sliceCaseReducersByType};return function(A,e){let I,[g,Q,t]=UA(e);if("function"==typeof A)I=()=>FA(A());else{const e=FA(A);I=()=>e}function B(A=I(),e){let B=[g[e.type],...Q.filter(({matcher:A})=>A(e)).map(({reducer:A})=>A)];return 0===B.filter(A=>!!A).length&&(B=[t]),B.reduce((A,I)=>{if(I){if(F(A)){const g=I(A,e);return void 0===g?A:g}if(S(A))return oA(A,A=>I(A,e));{const g=I(A,e);if(void 0===g){if(null===A)return A;throw Error("A case reducer on a non-draftable value must not return undefined")}return g}}return A},A)}return B.getInitialState=I,B}(A.initialState,A=>{for(let e in Q)A.addCase(e,Q[e]);for(let e of B.sliceMatchers)A.addMatcher(e.matcher,e.reducer);for(let e of I)A.addMatcher(e.matcher,e.reducer);g&&A.addDefaultCase(g)})}t.forEach(g=>{const t=Q[g],B={reducerName:g,type:_A(I,g),createNotation:"function"==typeof A.reducers};!function(A){return"asyncThunk"===A._reducerDefinitionType}(t)?function({type:A,reducerName:e,createNotation:I},g,Q){let t,B;if("reducer"in g){if(I&&!function(A){return"reducerWithPrepare"===A._reducerDefinitionType}(g))throw new Error(Me(17));t=g.reducer,B=g.prepare}else t=g;Q.addCase(A,t).exposeCaseReducer(e,t).exposeAction(e,B?kA(A,B):kA(A))}(B,t,E):function({type:A,reducerName:e},I,g,Q){if(!Q)throw new Error(Me(18));const{payloadCreator:t,fulfilled:B,pending:E,rejected:i,settled:C,options:a}=I,n=Q(A,t,a);g.exposeAction(e,n),B&&g.addCase(n.fulfilled,B),E&&g.addCase(n.pending,E),i&&g.addCase(n.rejected,i),C&&g.addMatcher(n.settled,C),g.exposeCaseReducer(e,{fulfilled:B||ee,pending:E||ee,rejected:i||ee,settled:C||ee})}(B,t,E,e)});const C=A=>A,a=new Map,n=new WeakMap;let o;function r(A,e){return o||(o=i()),o(A,e)}function s(){return o||(o=i()),o.getInitialState()}function c(e,I=!1){function g(A){let Q=A[e];return void 0===Q&&I&&(Q=SA(n,g,s)),Q}function Q(e=C){const g=SA(a,I,()=>new WeakMap);return SA(g,e,()=>{const g={};for(const[Q,t]of Object.entries(A.selectors??{}))g[Q]=$A(t,e,()=>SA(n,e,s),I);return g})}return{reducerPath:e,getSelectors:Q,get selectors(){return Q(g)},selectSlice:g}}const h={name:I,reducer:r,actions:B.actionCreators,caseReducers:B.sliceCaseReducersByName,getInitialState:s,...c(g),injectInto(A,{reducerPath:e,...I}={}){const Q=e??g;return A.inject({reducerPath:Q,reducer:r},I),{...h,...c(Q,!0)}}};return h}}();function ee(){}var Ie="listener",ge="completed",Qe="cancelled",te=`task-${Qe}`,Be=`task-${ge}`,Ee=`${Ie}-${Qe}`,ie=`${Ie}-${ge}`,Ce=class{constructor(A){this.code=A,this.message=`task ${Qe} (reason: ${A})`}name="TaskAbortError";message},ae=(A,e)=>{if("function"!=typeof A)throw new TypeError(Me(32))},ne=()=>{},oe=(A,e=ne)=>(A.catch(e),A),re=(A,e)=>(A.addEventListener("abort",e,{once:!0}),()=>A.removeEventListener("abort",e)),se=(A,e)=>{const I=A.signal;I.aborted||("reason"in I||Object.defineProperty(I,"reason",{enumerable:!0,value:e,configurable:!0,writable:!0}),A.abort(e))},ce=A=>{if(A.aborted){const{reason:e}=A;throw new Ce(e)}};function he(A,e){let I=ne;return new Promise((g,Q)=>{const t=()=>Q(new Ce(A.reason));A.aborted?t():(I=re(A,t),e.finally(()=>I()).then(g,Q))}).finally(()=>{I=ne})}var le=A=>e=>oe(he(A,e).then(e=>(ce(A),e))),fe=A=>{const e=le(A);return A=>e(new Promise(e=>setTimeout(e,A)))},{assign:de}=Object,we={},ue="listenerMiddleware",ye=(A,e)=>(I,g)=>{ae(I);const Q=new AbortController;var t;t=Q,re(A,()=>se(t,A.reason));const B=(async A=>{try{return await Promise.resolve(),{status:"ok",value:await A()}}catch(A){return{status:A instanceof Ce?"cancelled":"rejected",error:A}}finally{se(Q,Be)}})(async()=>{ce(A),ce(Q.signal);const e=await I({pause:le(Q.signal),delay:fe(Q.signal),signal:Q.signal});return ce(Q.signal),e});return g?.autoJoin&&e.push(B.catch(ne)),{result:le(A)(B),cancel(){se(Q,te)}}},De=A=>{let{type:e,actionCreator:I,matcher:g,predicate:Q,effect:t}=A;if(e)Q=kA(e).match;else if(I)e=I.type,Q=I.match;else if(g)Q=g;else if(!Q)throw new Error(Me(21));return ae(t),{predicate:Q,type:e,effect:t}},pe=de(A=>{const{type:e,predicate:I,effect:g}=De(A);return{id:LA(),effect:g,type:e,predicate:I,pending:new Set,unsubscribe:()=>{throw new Error(Me(22))}}},{withTypes:()=>pe}),ke=(A,e)=>{const{type:I,effect:g,predicate:Q}=De(e);return Array.from(A.values()).find(A=>("string"==typeof I?A.type===I:A.predicate===Q)&&A.effect===g)},me=A=>{A.pending.forEach(A=>{se(A,Ee)})},Fe=(A,e,I)=>{try{A(e,I)}catch(A){setTimeout(()=>{throw A},0)}},Se=de(kA(`${ue}/add`),{withTypes:()=>Se}),Re=kA(`${ue}/removeAll`),Ge=de(kA(`${ue}/remove`),{withTypes:()=>Ge}),He=(...A)=>{console.error(`${ue}/error`,...A)},Ue=(A={})=>{const e=new Map,{extra:I,onError:g=He}=A;ae(g);const Q=A=>(A=>(A.unsubscribe=()=>e.delete(A.id),e.set(A.id,A),e=>{A.unsubscribe(),e?.cancelActive&&me(A)}))(ke(e,A)??pe(A));de(Q,{withTypes:()=>Q});const t=A=>{const I=ke(e,A);return I&&(I.unsubscribe(),A.cancelActive&&me(I)),!!I};de(t,{withTypes:()=>t});const B=async(A,t,B,E)=>{const i=new AbortController,C=((A,e)=>(I,g)=>oe((async(I,g)=>{ce(e);let Q=()=>{};const t=[new Promise((e,g)=>{let t=A({predicate:I,effect:(A,I)=>{I.unsubscribe(),e([A,I.getState(),I.getOriginalState()])}});Q=()=>{t(),g()}})];null!=g&&t.push(new Promise(A=>setTimeout(A,g,null)));try{const A=await he(e,Promise.race(t));return ce(e),A}finally{Q()}})(I,g)))(Q,i.signal),a=[];try{A.pending.add(i),await Promise.resolve(A.effect(t,de({},B,{getOriginalState:E,condition:(A,e)=>C(A,e).then(Boolean),take:C,delay:fe(i.signal),pause:le(i.signal),extra:I,signal:i.signal,fork:ye(i.signal,a),unsubscribe:A.unsubscribe,subscribe:()=>{e.set(A.id,A)},cancelActiveListeners:()=>{A.pending.forEach((A,e,I)=>{A!==i&&(se(A,Ee),I.delete(A))})},cancel:()=>{se(i,Ee),A.pending.delete(i)},throwIfCancelled:()=>{ce(i.signal)}})))}catch(A){A instanceof Ce||Fe(g,A,{raisedBy:"effect"})}finally{await Promise.all(a),se(i,ie),A.pending.delete(i)}},E=(A=>()=>{A.forEach(me),A.clear()})(e);return{middleware:A=>I=>i=>{if(!u(i))return I(i);if(Se.match(i))return Q(i.payload);if(Re.match(i))return void E();if(Ge.match(i))return t(i.payload);let C=A.getState();const a=()=>{if(C===we)throw new Error(Me(23));return C};let n;try{if(n=I(i),e.size>0){const I=A.getState(),Q=Array.from(e.values());for(const e of Q){let Q=!1;try{Q=e.predicate(i,I,C)}catch(A){Q=!1,Fe(g,A,{raisedBy:"predicate"})}Q&&B(e,i,A,a)}}}finally{C=we}return n},startListening:Q,stopListening:t,clearListeners:E}};function Me(A){return`Minified Redux Toolkit error #${A}; visit https://redux-toolkit.js.org/Errors?code=${A} for the full message or use the non-minified dev environment for full errors. `}const Je=Ae({name:"commonState",initialState:{currentRoomUrl:""},reducers:{setCurrentRoomUrl:(A,e)=>{A.currentRoomUrl=e.payload}}}),{setCurrentRoomUrl:be}=Je.actions;var ve=Je.reducer;const Pe={peerId:localStorage.getItem("peerId")??"",challengeId:localStorage.getItem("challengeId")??"",publicKey:localStorage.getItem("publicKey")??"",secretKey:localStorage.getItem("secretKey")??"",challenge:localStorage.getItem("challenge")??"",signature:localStorage.getItem("signature")??""},xe=Ae({name:"keyPair",initialState:Pe,reducers:{setKeyPair:(A,e)=>{const{publicKey:I,secretKey:g}=e.payload;64===I.length&&128===g.length&&(A.publicKey=e.payload.publicKey,A.secretKey=e.payload.secretKey)},setReconnectData:(A,e)=>{const{peerId:I,challenge:g,signature:Q,challengeId:t}=e.payload;o(I,4)&&o(t)&&i(g)&&i(Q)&&64===g.length&&128===Q.length&&(A.peerId=I,A.challenge=g,A.signature=Q,A.challengeId=t)},setPeerData:(A,e)=>{const{peerId:I,challenge:g,signature:Q}=e.payload;o(I,4)&&i(g)&&i(Q)&&64===g.length&&128===Q.length&&(A.peerId=I,A.challenge=g,A.signature=Q)},setChallengeId:(A,e)=>{const{challengeId:I}=e.payload;o(I)&&(A.challengeId=I)},resetIdentity:(A,e)=>({peerId:"",challengeId:"",publicKey:"",secretKey:"",challenge:"",signature:""})}}),{setKeyPair:Ne,setReconnectData:qe,setPeerData:Ke,setChallengeId:Ye,resetIdentity:Le}=xe.actions;var Te=xe.reducer;const Ve=64*Uint8Array.BYTES_PER_ELEMENT,Oe=64*Uint8Array.BYTES_PER_ELEMENT,Xe=32*Uint8Array.BYTES_PER_ELEMENT,je=32*Uint8Array.BYTES_PER_ELEMENT,We=64*Uint8Array.BYTES_PER_ELEMENT,Ze=16*Uint8Array.BYTES_PER_ELEMENT,ze=32*Uint8Array.BYTES_PER_ELEMENT,_e=32*Uint8Array.BYTES_PER_ELEMENT,$e=12*Uint8Array.BYTES_PER_ELEMENT,AI=12*Uint8Array.BYTES_PER_ELEMENT,eI=16*Uint8Array.BYTES_PER_ELEMENT,II=A=>AI+A+Ze,gI=A=>A-AI-Ze,QI={iceServers:[{urls:["stun:stun.p2party.com:3478"]}],iceTransportPolicy:"all"},tI=Ae({name:"rooms",initialState:[],reducers:{setRoom:(A,e)=>{const{url:I,id:g,canBeConnectionRelay:Q,rtcConfig:t,onlyConnectWithKnownPeers:B}=e.payload;if(64===I.length&&o(g)){const e=A.findIndex(A=>A.url===I||A.id===g);e>-1?(A[e].url=I,A[e].id=g,null!=Q&&(A[e].canBeConnectionRelay=Q),t&&(A[e].rtcConfig=t),A[e].onlyConnectWithKnownAddresses=null!=B?B:"true"===localStorage.getItem(I+"-onlyConnectWithKnownPeers")):A.push({url:I,id:g,connectingToPeers:!1,connectedToPeers:!1,canBeConnectionRelay:Q??!0,onlyConnectWithKnownAddresses:B??"true"===localStorage.getItem(I+"-onlyConnectWithKnownPeers"),rtcConfig:t??QI,peers:[],channels:[],messages:[]})}else if(64===I.length){const e=A.findIndex(A=>A.url===I);e>-1?(A[e].url=I,A[e].id="",null!=Q&&(A[e].canBeConnectionRelay=Q),t&&(A[e].rtcConfig=t),A[e].onlyConnectWithKnownAddresses=null!=B?B:"true"===localStorage.getItem(I+"-onlyConnectWithKnownPeers")):A.push({url:I,id:"",connectingToPeers:!1,connectedToPeers:!1,canBeConnectionRelay:Q??!0,onlyConnectWithKnownAddresses:B??"true"===localStorage.getItem(I+"-onlyConnectWithKnownPeers"),rtcConfig:t??QI,peers:[],channels:[],messages:[]})}},setConnectingToPeers:(A,e)=>{const{roomId:I,connectingToPeers:g}=e.payload,Q=A.findIndex(A=>A.id===I);Q>-1&&(A[Q].connectingToPeers=g)},setConnectedToPeers:(A,e)=>{const{roomId:I,connectedToPeers:g}=e.payload,Q=A.findIndex(A=>A.id===I);Q>-1&&(A[Q].connectingToPeers=!1,A[Q].connectedToPeers=g)},setConnectionRelay:(A,e)=>{const{roomId:I,canBeConnectionRelay:g}=e.payload,Q=A.findIndex(A=>A.id===I);Q>-1&&(A[Q].canBeConnectionRelay=g)},setPeer:(A,e)=>{const{roomId:I,peerId:g,peerPublicKey:Q}=e.payload,t=A.findIndex(A=>A.id===I);t>-1&&-1===A[t].peers.findIndex(A=>A.peerId===g)&&A[t].peers.push({peerId:g,peerPublicKey:Q})},deletePeer:(A,e)=>{const I=A.length;for(let g=0;g<I;g++){const I=A[g].peers.findIndex(A=>A.peerId===e.payload.peerId);I>-1&&A[g].peers.splice(I,1)}},setChannel:(A,e)=>{const{roomId:I,label:g,peerId:Q}=e.payload,t=A.findIndex(A=>A.id===I);if(t>-1){const e=A[t].channels.findIndex(A=>A.label===g);e>-1?-1===A[t].channels[e].peerIds.findIndex(A=>A===Q)&&A[t].channels[e].peerIds.push(Q):A[t].channels.push({label:g,peerIds:[Q]})}},deleteChannel:(A,e)=>{const{peerId:I,label:g}=e.payload,Q=A.length;for(let e=0;e<Q;e++)if(g&&!I){const I=A[e].channels.findIndex(A=>A.label===g);I>-1&&A[e].channels.splice(I,1)}else if(!g&&I){const g=A[e].channels.length;for(let Q=0;Q<g;Q++){const g=A[e].channels[e].peerIds.findIndex(A=>A===I);g>-1&&(A[e].channels[Q].peerIds.splice(g,1),0===A[e].channels[Q].peerIds.length&&A[e].channels.splice(Q,1))}}else if(I&&g){const Q=A[e].channels.findIndex(A=>A.label===g&&A.peerIds.includes(I));if(Q>-1){const g=A[e].channels[Q].peerIds.findIndex(A=>A===I);A[e].channels[Q].peerIds.splice(g,1),0===A[e].channels[Q].peerIds.length&&A[e].channels.splice(Q,1)}}},setIceServers:(A,e)=>{const{roomId:I,iceServers:g}=e.payload,Q=A.findIndex(A=>A.id===I);if(Q>-1){const e=g.length,I=A[Q].rtcConfig.iceServers?.flatMap(A=>Array.isArray(A.urls)?A.urls:[A.urls])??[];for(let t=0;t<e;t++){const e=g[t].urls.length;let B=!1;for(let A=0;A<e;A++)if(!I.includes(g[t].urls[A])){B=!0;break}B&&A[Q].rtcConfig.iceServers?.push(g[t])}}},setMessage:(A,e)=>{const{roomId:I,merkleRootHex:g,sha512Hex:Q,filename:t,channelLabel:B,fromPeerId:E,messageType:i,chunkSize:C,totalSize:a,chunksCreated:n,totalChunks:r,timestamp:s}=e.payload,c=A.findIndex(A=>A.id===I);if(c>-1){const e=A[c].messages.findLastIndex(A=>A.merkleRootHex===g||A.sha512Hex===Q&&0===A.merkleRootHex.length);-1===e?B&&E&&o(E)&&i&&a&&A[c].messages.push({merkleRootHex:g,sha512Hex:Q,channelLabel:B,filename:t.length>0?t:"txt",messageType:i,fromPeerId:E,timestamp:s??Date.now(),savedSize:C>0?C:0,totalSize:a,chunksCreated:n??0,totalChunks:r??0}):A[c].messages[e].timestamp!==s&&A[c].messages[e].sha512Hex===Q&&A[c].messages[e].savedSize===A[c].messages[e].totalSize?A[c].messages.push({merkleRootHex:g,sha512Hex:Q,channelLabel:B,filename:t.length>0?t:"txt",messageType:i,fromPeerId:E,timestamp:s??Date.now(),savedSize:C,totalSize:a,chunksCreated:n??0,totalChunks:r??0}):(g.length===2*Ve&&""===A[c].messages[e].merkleRootHex&&(A[c].messages[e].merkleRootHex=g),a>0&&A[c].messages[e].totalSize!==a&&(A[c].messages[e].totalSize=a),C>0&&A[c].messages[e].totalSize>=A[c].messages[e].savedSize+C&&(A[c].messages[e].savedSize+=C),n&&n<=A[c].messages[e].totalChunks&&(A[c].messages[e].chunksCreated=n+1))}},setMessageAllChunks:(A,e)=>{const{roomId:I,merkleRootHex:g,sha512Hex:Q,channelLabel:t,filename:B,messageType:E,fromPeerId:i,timestamp:C,totalSize:a}=e.payload,n=A.findIndex(A=>A.id===I);if(n>-1){const e=A[n].messages.findLastIndex(A=>A.merkleRootHex===g);-1===e&&t&&i&&o(i)&&E&&a||e>-1&&A[n].messages[e].timestamp<C?A[n].messages.push({merkleRootHex:g,sha512Hex:Q,channelLabel:t,filename:B.length>0?B:"txt",messageType:E,fromPeerId:i,timestamp:C,savedSize:a,totalSize:a,chunksCreated:0,totalChunks:0}):e>-1&&A[n].messages[e].savedSize!==a&&(A[n].messages[e].savedSize=a)}},deleteMessage:(A,e)=>{const{merkleRootHex:I,hashHex:g}=e.payload;if(!I&&!g)return;if(I&&I.length!==2*Ve)return;if(g&&g.length!==2*Ve)return;const Q=A.length;for(let e=0;e<Q;e++)if(I){const g=A[e].messages.findIndex(A=>A.merkleRootHex===I);g>-1&&A[e].messages.splice(g,1)}else if(g){const I=A[e].messages.findLastIndex(A=>A.sha512Hex===g);I>-1&&A[e].messages.splice(I,1)}},setOnlyConnectWithKnownPeers:(A,e)=>{const{roomId:I,onlyConnectWithKnownPeers:g}=e.payload,Q=A.findIndex(A=>A.id===I);Q>-1&&(A[Q].onlyConnectWithKnownAddresses=g)},deleteRoom:(A,e)=>{const I=A.findIndex(A=>A.url===e.payload||A.id===e.payload);if(I>-1){const e=A[I].url;A[I]={url:e,id:"",connectingToPeers:!1,connectedToPeers:!1,canBeConnectionRelay:!0,onlyConnectWithKnownAddresses:!1,rtcConfig:QI,peers:[],channels:[],messages:[]}}}}}),{setRoom:BI,setConnectingToPeers:EI,setConnectedToPeers:iI,setConnectionRelay:CI,setOnlyConnectWithKnownPeers:aI,setPeer:nI,setChannel:oI,setIceServers:rI,setMessage:sI,setMessageAllChunks:cI,deletePeer:hI,deleteChannel:lI,deleteMessage:fI,deleteRoom:dI}=tI.actions;var wI=tI.reducer;const uI="wss://signaling.p2party.com/ws",yI=Ae({name:"signalingServer",initialState:{isEstablishingConnection:!1,isConnected:!1,serverUrl:uI},reducers:{startConnecting:(A,e)=>{A.isEstablishingConnection=!0,A.serverUrl=e.payload??uI},connectionEstablished:A=>{A.isConnected=!0,A.isEstablishingConnection=!1},disconnect:A=>{A.isConnected=!1,A.isEstablishingConnection=!1}}}),DI=yI.actions;var pI=yI.reducer,kI=class extends Error{issues;constructor(A){super(A[0].message),this.name="SchemaError",this.issues=A}};function mI(A){return{status:A,isUninitialized:"uninitialized"===A,isLoading:"pending"===A,isSuccess:"fulfilled"===A,isError:"rejected"===A}}var FI=l;function SI(A,e){if(A===e||!(FI(A)&&FI(e)||Array.isArray(A)&&Array.isArray(e)))return e;const I=Object.keys(e),g=Object.keys(A);let Q=I.length===g.length;const t=Array.isArray(e)?[]:{};for(const g of I)t[g]=SI(A[g],e[g]),Q&&(Q=A[g]===t[g]);return Q?A:t}function RI(A){let e=0;for(const I in A)e++;return e}var GI=A=>[].concat(...A);function HI(A){return null!=A}function UI(A,e,I){return A.has(e)?A.get(e):A.set(e,I(e)).get(e)}var MI=()=>new Map,JI=class{constructor(A,e=void 0){this.value=A,this.meta=e}},bI=kA("__rtkq/focused"),vI=kA("__rtkq/unfocused"),PI=kA("__rtkq/online"),xI=kA("__rtkq/offline");function NI(A){return"query"===A.type}function qI(A){return"infinitequery"===A.type}function KI(A){return NI(A)||qI(A)}function YI(A,e,I,g,Q,t){return"function"==typeof A?A(e,I,g,Q).filter(HI).map(LI).map(t):Array.isArray(A)?A.map(LI).map(t):[]}function LI(A){return"string"==typeof A?{type:A}:A}var TI=Symbol("forceQueryFn"),VI=A=>"function"==typeof A[TI],OI=class extends kI{constructor(A,e,I,g){super(A),this.value=e,this.schemaName=I,this._bqMeta=g}},XI=(A,e)=>Array.isArray(A)?A.includes(e):!!A;async function jI(A,e,I,g){const Q=await A["~standard"].validate(e);if(Q.issues)throw new OI(Q.issues,e,I,g);return Q.value}function WI(A){return A}var ZI=(A={})=>({...A,[RA]:!0});function zI(A,{pages:e,pageParams:I},g){const Q=e.length-1;return A.getNextPageParam(e[Q],e,I[Q],I,g)}function _I(A,{pages:e,pageParams:I},g){return A.getPreviousPageParam?.(e[0],e,I[0],I,g)}function $I(A,e,I,g){return YI(I[A.meta.arg.endpointName][e],KA(A)?A.payload:void 0,qA(A)?A.payload:void 0,A.meta.arg.originalArgs,"baseQueryMeta"in A.meta?A.meta.baseQueryMeta:void 0,g)}function Ag(A,e,I){const g=A[e];g&&I(g)}function eg(A){return("arg"in A?A.arg.fixedCacheKey:A.fixedCacheKey)??A.requestId}function Ig(A,e,I){const g=A[eg(e)];g&&I(g)}var gg={};function Qg({reducerPath:A,queryThunk:e,mutationThunk:I,serializeQueryArgs:g,context:{endpointDefinitions:Q,apiUid:t,extractRehydrationInfo:B,hasRehydrationInfo:E},assertTagType:i,config:C}){const a=kA(`${A}/resetApiState`);function n(A,e,I,g){A[e.queryCacheKey]??={status:"uninitialized",endpointName:e.endpointName},Ag(A,e.queryCacheKey,A=>{A.status="pending",A.requestId=I&&A.requestId?A.requestId:g.requestId,void 0!==e.originalArgs&&(A.originalArgs=e.originalArgs),A.startedTimeStamp=g.startedTimeStamp,qI(Q[g.arg.endpointName])&&"direction"in e&&(A.direction=e.direction)})}function o(A,e,I,g){Ag(A,e.arg.queryCacheKey,A=>{if(A.requestId!==e.requestId&&!g)return;const{merge:t}=Q[e.arg.endpointName];if(A.status="fulfilled",t)if(void 0!==A.data){const{fulfilledTimeStamp:g,arg:Q,baseQueryMeta:B,requestId:E}=e;let i=oA(A.data,A=>t(A,I,{arg:Q.originalArgs,baseQueryMeta:B,fulfilledTimeStamp:g,requestId:E}));A.data=i}else A.data=I;else A.data=Q[e.arg.endpointName].structuralSharing??1?SI(F(A.data)?(F(B=A.data)||k(15),B[p].base_):A.data,I):I;var B;delete A.error,A.fulfilledTimeStamp=e.fulfilledTimeStamp})}const r=Ae({name:`${A}/queries`,initialState:gg,reducers:{removeQueryResult:{reducer(A,{payload:{queryCacheKey:e}}){delete A[e]},prepare:GA()},cacheEntriesUpserted:{reducer(A,e){for(const I of e.payload){const{queryDescription:g,value:Q}=I;n(A,g,!0,{arg:g,requestId:e.meta.requestId,startedTimeStamp:e.meta.timestamp}),o(A,{arg:g,requestId:e.meta.requestId,fulfilledTimeStamp:e.meta.timestamp,baseQueryMeta:{}},Q,!0)}},prepare:A=>({payload:A.map(A=>{const{endpointName:e,arg:I,value:t}=A,B=Q[e];return{queryDescription:{type:"query",endpointName:e,originalArgs:A.arg,queryCacheKey:g({queryArgs:I,endpointDefinition:B,endpointName:e})},value:t}}),meta:{[RA]:!0,requestId:LA(),timestamp:Date.now()}})},queryResultPatched:{reducer(A,{payload:{queryCacheKey:e,patches:I}}){Ag(A,e,A=>{A.data=sA(A.data,I.concat())})},prepare:GA()}},extraReducers(A){A.addCase(e.pending,(A,{meta:e,meta:{arg:I}})=>{n(A,I,VI(I),e)}).addCase(e.fulfilled,(A,{meta:e,payload:I})=>{o(A,e,I,VI(e.arg))}).addCase(e.rejected,(A,{meta:{condition:e,arg:I,requestId:g},error:Q,payload:t})=>{Ag(A,I.queryCacheKey,A=>{if(e);else{if(A.requestId!==g)return;A.status="rejected",A.error=t??Q}})}).addMatcher(E,(A,e)=>{const{queries:I}=B(e);for(const[e,g]of Object.entries(I))"fulfilled"!==g?.status&&"rejected"!==g?.status||(A[e]=g)})}}),s=Ae({name:`${A}/mutations`,initialState:gg,reducers:{removeMutationResult:{reducer(A,{payload:e}){const I=eg(e);I in A&&delete A[I]},prepare:GA()}},extraReducers(A){A.addCase(I.pending,(A,{meta:e,meta:{requestId:I,arg:g,startedTimeStamp:Q}})=>{g.track&&(A[eg(e)]={requestId:I,status:"pending",endpointName:g.endpointName,startedTimeStamp:Q})}).addCase(I.fulfilled,(A,{payload:e,meta:I})=>{I.arg.track&&Ig(A,I,A=>{A.requestId===I.requestId&&(A.status="fulfilled",A.data=e,A.fulfilledTimeStamp=I.fulfilledTimeStamp)})}).addCase(I.rejected,(A,{payload:e,error:I,meta:g})=>{g.arg.track&&Ig(A,g,A=>{A.requestId===g.requestId&&(A.status="rejected",A.error=e??I)})}).addMatcher(E,(A,e)=>{const{mutations:I}=B(e);for(const[e,g]of Object.entries(I))"fulfilled"!==g?.status&&"rejected"!==g?.status||e===g?.requestId||(A[e]=g)})}}),c=Ae({name:`${A}/invalidation`,initialState:{tags:{},keys:{}},reducers:{updateProvidedBy:{reducer(A,e){for(const{queryCacheKey:I,providedTags:g}of e.payload){h(A,I);for(const{type:e,id:Q}of g){const g=(A.tags[e]??={})[Q||"__internal_without_id"]??=[];g.includes(I)||g.push(I)}A.keys[I]=g}},prepare:GA()}},extraReducers(A){A.addCase(r.actions.removeQueryResult,(A,{payload:{queryCacheKey:e}})=>{h(A,e)}).addMatcher(E,(A,e)=>{const{provided:I}=B(e);for(const[e,g]of Object.entries(I.tags??{}))for(const[Q,t]of Object.entries(g)){const g=(A.tags[e]??={})[Q||"__internal_without_id"]??=[];for(const e of t)g.includes(e)||g.push(e),A.keys[e]=I.keys[e]}}).addMatcher(JA(KA(e),qA(e)),(A,e)=>{l(A,[e])}).addMatcher(r.actions.cacheEntriesUpserted.match,(A,e)=>{l(A,e.payload.map(({queryDescription:A,value:e})=>({type:"UNKNOWN",payload:e,meta:{requestStatus:"fulfilled",requestId:"UNKNOWN",arg:A}})))})}});function h(A,e){const I=A.keys[e]??[];for(const g of I){const I=g.type,Q=g.id??"__internal_without_id",t=A.tags[I]?.[Q];t&&(A.tags[I][Q]=t.filter(A=>A!==e))}delete A.keys[e]}function l(A,e){const I=e.map(A=>{const e=$I(A,"providesTags",Q,i),{queryCacheKey:I}=A.meta.arg;return{queryCacheKey:I,providedTags:e}});c.caseReducers.updateProvidedBy(A,c.actions.updateProvidedBy(I))}const f=Ae({name:`${A}/subscriptions`,initialState:gg,reducers:{updateSubscriptionOptions(A,e){},unsubscribeQueryResult(A,e){},internal_getRTKQSubscriptions(){}}}),w=Ae({name:`${A}/internalSubscriptions`,initialState:gg,reducers:{subscriptionsUpdated:{reducer:(A,e)=>sA(A,e.payload),prepare:GA()}}}),u=Ae({name:`${A}/config`,initialState:{online:"undefined"==typeof navigator||void 0===navigator.onLine||navigator.onLine,focused:"undefined"==typeof document||"hidden"!==document.visibilityState,middlewareRegistered:!1,...C},reducers:{middlewareRegistered(A,{payload:e}){A.middlewareRegistered="conflict"!==A.middlewareRegistered&&t===e||"conflict"}},extraReducers:A=>{A.addCase(PI,A=>{A.online=!0}).addCase(xI,A=>{A.online=!1}).addCase(bI,A=>{A.focused=!0}).addCase(vI,A=>{A.focused=!1}).addMatcher(E,A=>({...A}))}}),y=d({queries:r.reducer,mutations:s.reducer,provided:c.reducer,subscriptions:w.reducer,config:u.reducer});return{reducer:(A,e)=>y(a.match(e)?void 0:A,e),actions:{...u.actions,...r.actions,...f.actions,...w.actions,...s.actions,...c.actions,resetApiState:a}}}var tg=Symbol.for("RTKQ/skipToken"),Bg={status:"uninitialized"},Eg=oA(Bg,()=>{}),ig=oA(Bg,()=>{}),Cg=WeakMap?new WeakMap:void 0,ag=({endpointName:A,queryArgs:e})=>{let I="";const g=Cg?.get(e);if("string"==typeof g)I=g;else{const A=JSON.stringify(e,(A,e)=>e=l(e="bigint"==typeof e?{$bigint:e.toString()}:e)?Object.keys(e).sort().reduce((A,I)=>(A[I]=e[I],A),{}):e);l(e)&&Cg?.set(e,A),I=A}return`${A}(${I})`};function ng(A,...e){return Object.assign(A,...e)}var og=({reducerPath:A,api:e,queryThunk:I,context:g,internalState:Q,selectors:{selectQueryEntry:t,selectConfig:B},getRunningQueryThunk:E,mwApi:i})=>{const{removeQueryResult:C,unsubscribeQueryResult:a,cacheEntriesUpserted:n}=e.internalActions,o=Q.runningQueries.get(i.dispatch),r=JA(a.match,I.fulfilled,I.rejected,n.match);function s(A){const e=Q.currentSubscriptions.get(A);return!!e&&(e.size>0||void 0!==o?.[A])}const c={};function h(A,e,I){const g=e.getState();for(const Q of A){const A=t(g,Q);A?.endpointName&&l(Q,A.endpointName,e,I)}}function l(A,e,I,Q){const B=g.endpointDefinitions[e],i=B?.keepUnusedDataFor??Q.keepUnusedDataFor;if(i===1/0)return;const a=Math.max(0,Math.min(i,2147482.647));if(!s(A)){const e=c[A];e&&clearTimeout(e),c[A]=setTimeout(()=>{if(!s(A)){const e=t(I.getState(),A);if(e?.endpointName){const A=I.dispatch(E(e.endpointName,e.originalArgs));A?.abort()}I.dispatch(C({queryCacheKey:A}))}delete c[A]},1e3*a)}}return(A,I,Q)=>{const t=I.getState(),E=B(t);if(r(A)){let e;if(n.match(A))e=A.payload.map(A=>A.queryDescription.queryCacheKey);else{const{queryCacheKey:I}=a.match(A)?A.payload:A.meta.arg;e=[I]}h(e,I,E)}if(e.util.resetApiState.match(A))for(const[A,e]of Object.entries(c))e&&clearTimeout(e),delete c[A];if(g.hasRehydrationInfo(A)){const{queries:e}=g.extractRehydrationInfo(A);h(Object.keys(e),I,E)}}},rg=new Error("Promise never resolved before cacheEntryRemoved."),sg=({api:A,reducerPath:e,context:I,queryThunk:g,mutationThunk:Q,internalState:t,selectors:{selectQueryEntry:B,selectApiState:E}})=>{const i=YA(g),C=YA(Q),a=KA(g,Q),n={};function o(A,e,I){const g=n[A];g?.valueResolved&&(g.valueResolved({data:e,meta:I}),delete g.valueResolved)}function r(A){const e=n[A];e&&(delete n[A],e.cacheEntryRemoved())}function s(e,g,Q,t,B){const E=I.endpointDefinitions[e],i=E?.onCacheEntryAdded;if(!i)return;const C={},a=new Promise(A=>{C.cacheEntryRemoved=A}),o=Promise.race([new Promise(A=>{C.valueResolved=A}),a.then(()=>{throw rg})]);o.catch(()=>{}),n[Q]=C;const r=A.endpoints[e].select(KI(E)?g:Q),s=t.dispatch((A,e,I)=>I),c={...t,getCacheEntry:()=>r(t.getState()),requestId:B,extra:s,updateCachedData:KI(E)?I=>t.dispatch(A.util.updateQueryData(e,g,I)):void 0,cacheDataLoaded:o,cacheEntryRemoved:a},h=i(g,c);Promise.resolve(h).catch(A=>{if(A!==rg)throw A})}return(I,t,E)=>{const c=function(e){return i(e)?e.meta.arg.queryCacheKey:C(e)?e.meta.arg.fixedCacheKey??e.meta.requestId:A.internalActions.removeQueryResult.match(e)?e.payload.queryCacheKey:A.internalActions.removeMutationResult.match(e)?eg(e.payload):""}(I);function h(A,e,I,g){const Q=B(E,e),i=B(t.getState(),e);!Q&&i&&s(A,g,e,t,I)}if(g.pending.match(I))h(I.meta.arg.endpointName,c,I.meta.requestId,I.meta.arg.originalArgs);else if(A.internalActions.cacheEntriesUpserted.match(I))for(const{queryDescription:A,value:e}of I.payload){const{endpointName:g,originalArgs:Q,queryCacheKey:t}=A;h(g,t,I.meta.requestId,Q),o(t,e,{})}else if(Q.pending.match(I))t.getState()[e].mutations[c]&&s(I.meta.arg.endpointName,I.meta.arg.originalArgs,c,t,I.meta.requestId);else if(a(I))o(c,I.payload,I.meta.baseQueryMeta);else if(A.internalActions.removeQueryResult.match(I)||A.internalActions.removeMutationResult.match(I))r(c);else if(A.util.resetApiState.match(I))for(const A of Object.keys(n))r(A)}},cg=({api:A,context:{apiUid:e},reducerPath:I})=>(I,g)=>{A.util.resetApiState.match(I)&&g.dispatch(A.internalActions.middlewareRegistered(e))},hg=({reducerPath:A,context:e,context:{endpointDefinitions:I},mutationThunk:g,queryThunk:Q,api:t,assertTagType:B,refetchQuery:E,internalState:i})=>{const{removeQueryResult:C}=t.internalActions,a=JA(KA(g),qA(g)),n=JA(KA(g,Q),NA(g,Q));let o=[];function r(I,g){const Q=g.getState(),B=Q[A];if(o.push(...I),"delayed"===B.config.invalidationBehavior&&function(A){const{queries:e,mutations:I}=A;for(const A of[e,I])for(const e in A)if("pending"===A[e]?.status)return!0;return!1}(B))return;const a=o;if(o=[],0===a.length)return;const n=t.util.selectInvalidatedBy(Q,a);e.batch(()=>{const A=Array.from(n.values());for(const{queryCacheKey:e}of A){const A=B.queries[e],I=UI(i.currentSubscriptions,e,MI);A&&(0===I.size?g.dispatch(C({queryCacheKey:e})):"uninitialized"!==A.status&&g.dispatch(E(A)))}})}return(A,e)=>{a(A)?r($I(A,"invalidatesTags",I,B),e):n(A)?r([],e):t.util.invalidateTags.match(A)&&r(YI(A.payload,void 0,void 0,void 0,void 0,B),e)}},lg=({reducerPath:A,queryThunk:e,api:I,refetchQuery:g,internalState:Q})=>{const{currentPolls:t,currentSubscriptions:B}=Q,E=new Set;let i=null;function C(A,e){E.add(A),i||(i=setTimeout(()=>{for(const A of E)n({queryCacheKey:A},e);E.clear(),i=null},0))}function a({queryCacheKey:e},I){const Q=I.getState()[A],E=Q.queries[e],i=B.get(e);if(!E||"uninitialized"===E.status)return;const{lowestPollingInterval:C,skipPollingIfUnfocused:n}=r(i);if(!Number.isFinite(C))return;const o=t.get(e);o?.timeout&&(clearTimeout(o.timeout),o.timeout=void 0);const s=Date.now()+C;t.set(e,{nextPollTimestamp:s,pollingInterval:C,timeout:setTimeout(()=>{!Q.config.focused&&n||I.dispatch(g(E)),a({queryCacheKey:e},I)},C)})}function n({queryCacheKey:e},I){const g=I.getState()[A].queries[e],Q=B.get(e);if(!g||"uninitialized"===g.status)return;const{lowestPollingInterval:E}=r(Q);if(!Number.isFinite(E))return void o(e);const i=t.get(e),C=Date.now()+E;(!i||C<i.nextPollTimestamp)&&a({queryCacheKey:e},I)}function o(A){const e=t.get(A);e?.timeout&&clearTimeout(e.timeout),t.delete(A)}function r(A=new Map){let e=!1,I=Number.POSITIVE_INFINITY;for(const g of A.values())g.pollingInterval&&(I=Math.min(g.pollingInterval,I),e=g.skipPollingIfUnfocused||e);return{lowestPollingInterval:I,skipPollingIfUnfocused:e}}return(A,g)=>{(I.internalActions.updateSubscriptionOptions.match(A)||I.internalActions.unsubscribeQueryResult.match(A))&&C(A.payload.queryCacheKey,g),(e.pending.match(A)||e.rejected.match(A)&&A.meta.condition)&&C(A.meta.arg.queryCacheKey,g),(e.fulfilled.match(A)||e.rejected.match(A)&&!A.meta.condition)&&a(A.meta.arg,g),I.util.resetApiState.match(A)&&(function(){for(const A of t.keys())o(A)}(),i&&(clearTimeout(i),i=null),E.clear())}},fg=({api:A,context:e,queryThunk:I,mutationThunk:g})=>{const Q=xA(I,g),t=NA(I,g),B=KA(I,g),E={};return(I,g)=>{if(Q(I)){const{requestId:Q,arg:{endpointName:t,originalArgs:B}}=I.meta,i=e.endpointDefinitions[t],C=i?.onQueryStarted;if(C){const e={},I=new Promise((A,I)=>{e.resolve=A,e.reject=I});I.catch(()=>{}),E[Q]=e;const a=A.endpoints[t].select(KI(i)?B:Q),n=g.dispatch((A,e,I)=>I),o={...g,getCacheEntry:()=>a(g.getState()),requestId:Q,extra:n,updateCachedData:KI(i)?e=>g.dispatch(A.util.updateQueryData(t,B,e)):void 0,queryFulfilled:I};C(B,o)}}else if(B(I)){const{requestId:A,baseQueryMeta:e}=I.meta;E[A]?.resolve({data:I.payload,meta:e}),delete E[A]}else if(t(I)){const{requestId:A,rejectedWithValue:e,baseQueryMeta:g}=I.meta;E[A]?.reject({error:I.payload??I.error,isUnhandledError:!e,meta:g}),delete E[A]}}};function dg(A){const{reducerPath:e,queryThunk:I,api:g,context:Q,internalState:t}=A,{apiUid:B}=Q,E={invalidateTags:kA(`${e}/invalidateTags`)},i=A=>A.type.startsWith(`${e}/`),C=[cg,og,hg,lg,sg,fg];return{middleware:I=>{let E=!1;const n={...A,internalState:t,refetchQuery:a,isThisApiSliceAction:i,mwApi:I},o=C.map(A=>A(n)),r=(({api:A,queryThunk:e,internalState:I,mwApi:g})=>{const Q=`${A.reducerPath}/subscriptions`;let t=null,B=null;const{updateSubscriptionOptions:E,unsubscribeQueryResult:i}=A.internalActions,C=()=>I.currentSubscriptions,a={getSubscriptions:C,getSubscriptionCount:A=>{const e=C().get(A);return e?.size??0},isRequestSubscribed:(A,e)=>{const I=C();return!!I?.get(A)?.get(e)}};function n(A){return JSON.parse(JSON.stringify(Object.fromEntries([...A].map(([A,e])=>[A,Object.fromEntries(e)]))))}return(g,C)=>{if(t||(t=n(I.currentSubscriptions)),A.util.resetApiState.match(g))return t={},I.currentSubscriptions.clear(),B=null,[!0,!1];if(A.internalActions.internal_getRTKQSubscriptions.match(g))return[!1,a];const o=((I,g)=>{if(E.match(g)){const{queryCacheKey:A,requestId:e,options:Q}=g.payload,t=I.get(A);return t?.has(e)&&t.set(e,Q),!0}if(i.match(g)){const{queryCacheKey:A,requestId:e}=g.payload,Q=I.get(A);return Q&&Q.delete(e),!0}if(A.internalActions.removeQueryResult.match(g))return I.delete(g.payload.queryCacheKey),!0;if(e.pending.match(g)){const{meta:{arg:A,requestId:e}}=g,Q=UI(I,A.queryCacheKey,MI);return A.subscribe&&Q.set(e,A.subscriptionOptions??Q.get(e)??{}),!0}let Q=!1;if(e.rejected.match(g)){const{meta:{condition:A,arg:e,requestId:t}}=g;if(A&&e.subscribe){const A=UI(I,e.queryCacheKey,MI);A.set(t,e.subscriptionOptions??A.get(t)??{}),Q=!0}}return Q})(I.currentSubscriptions,g);let r=!0;if(o){B||(B=setTimeout(()=>{const e=n(I.currentSubscriptions),[,g]=rA(t,()=>e);C.next(A.internalActions.subscriptionsUpdated(g)),t=e,B=null},500));const E="string"==typeof g.type&&!!g.type.startsWith(Q),i=e.rejected.match(g)&&g.meta.condition&&!!g.meta.arg.subscribe;r=!E&&!i}return[r,!1]}})(n),s=(({reducerPath:A,context:e,api:I,refetchQuery:g,internalState:Q})=>{const{removeQueryResult:t}=I.internalActions;function B(I,B){const E=I.getState()[A],i=E.queries,C=Q.currentSubscriptions;e.batch(()=>{for(const A of C.keys()){const e=i[A],Q=C.get(A);if(!Q||!e)continue;const a=[...Q.values()];(a.some(A=>!0===A[B])||a.every(A=>void 0===A[B])&&E.config[B])&&(0===Q.size?I.dispatch(t({queryCacheKey:A})):"uninitialized"!==e.status&&I.dispatch(g(e)))}})}return(A,e)=>{bI.match(A)&&B(e,"refetchOnFocus"),PI.match(A)&&B(e,"refetchOnReconnect")}})(n);return A=>t=>{if(!u(t))return A(t);E||(E=!0,I.dispatch(g.internalActions.middlewareRegistered(B)));const C={...I,next:A},a=I.getState(),[n,c]=r(t,C,a);let h;if(h=n?A(t):c,I.getState()[e]&&(s(t,C,a),i(t)||Q.hasRehydrationInfo(t)))for(const A of o)A(t,C,a);return h}},actions:E};function a(e){return A.api.endpoints[e.endpointName].initiate(e.originalArgs,{subscribe:!1,forceRefetch:!0})}}var wg=Symbol(),ug=function(...A){return function(e){const I=fA(A=>e.extractRehydrationInfo?.(A,{reducerPath:e.reducerPath??"api"})),g={reducerPath:"api",keepUnusedDataFor:60,refetchOnMountOrArgChange:!1,refetchOnFocus:!1,refetchOnReconnect:!1,invalidationBehavior:"delayed",...e,extractRehydrationInfo:I,serializeQueryArgs(A){let I=ag;if("serializeQueryArgs"in A.endpointDefinition){const e=A.endpointDefinition.serializeQueryArgs;I=A=>{const I=e(A);return"string"==typeof I?I:ag({...A,queryArgs:I})}}else e.serializeQueryArgs&&(I=e.serializeQueryArgs);return I(A)},tagTypes:[...e.tagTypes||[]]},Q={endpointDefinitions:{},batch(A){A()},apiUid:LA(),extractRehydrationInfo:I,hasRehydrationInfo:fA(A=>null!=I(A))},t={injectEndpoints:function(A){const e=A.endpoints({query:A=>({...A,type:"query"}),mutation:A=>({...A,type:"mutation"}),infiniteQuery:A=>({...A,type:"infinitequery"})});for(const[I,g]of Object.entries(e))if(!0!==A.overrideExisting&&I in Q.endpointDefinitions){if("throw"===A.overrideExisting)throw new Error(Me(39))}else{Q.endpointDefinitions[I]=g;for(const A of B)A.injectEndpoint(I,g)}return t},enhanceEndpoints({addTagTypes:A,endpoints:e}){if(A)for(const e of A)g.tagTypes.includes(e)||g.tagTypes.push(e);if(e)for(const[A,I]of Object.entries(e))"function"==typeof I?I(Q.endpointDefinitions[A]):Object.assign(Q.endpointDefinitions[A]||{},I);return t}},B=A.map(A=>A.init(t,g,Q));return t.injectEndpoints({endpoints:e.endpoints})}}((({createSelector:A=dA}={})=>({name:wg,init(e,{baseQuery:I,tagTypes:g,reducerPath:Q,serializeQueryArgs:t,keepUnusedDataFor:B,refetchOnMountOrArgChange:E,refetchOnFocus:i,refetchOnReconnect:C,invalidationBehavior:a,onSchemaFailure:n,catchSchemaFailure:o,skipSchemaValidation:r},s){aA();const c=A=>A;Object.assign(e,{reducerPath:Q,endpoints:{},internalActions:{onOnline:PI,onOffline:xI,onFocus:bI,onFocusLost:vI},util:{}});const h=function({serializeQueryArgs:A,reducerPath:e,createSelector:I}){const g=A=>Eg,Q=A=>ig;return{buildQuerySelector:function(A,e){return C(A,e,t)},buildInfiniteQuerySelector:function(A,e){const{infiniteQueryOptions:I}=e;return C(A,e,function(A){const e={...A,...mI(A.status)},{isLoading:g,isError:Q,direction:t}=e,B="forward"===t,E="backward"===t;return{...e,hasNextPage:a(I,e.data,e.originalArgs),hasPreviousPage:n(I,e.data,e.originalArgs),isFetchingNextPage:g&&B,isFetchingPreviousPage:g&&E,isFetchNextPageError:Q&&B,isFetchPreviousPageError:Q&&E}})},buildMutationSelector:function(){return A=>{let e;return e="object"==typeof A?eg(A)??tg:A,I(e===tg?Q:A=>B(A)?.mutations?.[e]??ig,t)}},selectInvalidatedBy:function(A,I){const g=A[e],Q=new Set;for(const A of I.filter(HI).map(LI)){const e=g.provided.tags[A.type];if(!e)continue;let I=(void 0!==A.id?e[A.id]:GI(Object.values(e)))??[];for(const A of I)Q.add(A)}return GI(Array.from(Q.values()).map(A=>{const e=g.queries[A];return e?[{queryCacheKey:A,endpointName:e.endpointName,originalArgs:e.originalArgs}]:[]}))},selectCachedArgsForQuery:function(A,e){return Object.values(E(A)).filter(A=>A?.endpointName===e&&"uninitialized"!==A.status).map(A=>A.originalArgs)},selectApiState:B,selectQueries:E,selectMutations:function(A){return B(A)?.mutations},selectQueryEntry:i,selectConfig:function(A){return B(A)?.config}};function t(A){return{...A,...mI(A.status)}}function B(A){return A[e]}function E(A){return B(A)?.queries}function i(A,e){return E(A)?.[e]}function C(e,Q,t){return B=>{if(B===tg)return I(g,t);const E=A({queryArgs:B,endpointDefinition:Q,endpointName:e});return I(A=>i(A,E)??Eg,t)}}function a(A,e,I){return!!e&&null!=zI(A,e,I)}function n(A,e,I){return!(!e||!A.getPreviousPageParam)&&null!=_I(A,e,I)}}({serializeQueryArgs:t,reducerPath:Q,createSelector:A}),{selectInvalidatedBy:l,selectCachedArgsForQuery:f,buildQuerySelector:d,buildInfiniteQuerySelector:w,buildMutationSelector:u}=h;ng(e.util,{selectInvalidatedBy:l,selectCachedArgsForQuery:f});const{queryThunk:y,infiniteQueryThunk:D,mutationThunk:p,patchQueryData:k,updateQueryData:m,upsertQueryData:F,prefetch:R,buildMatchThunkActions:G}=function({reducerPath:A,baseQuery:e,context:{endpointDefinitions:I},serializeQueryArgs:g,api:Q,assertTagType:t,selectors:B,onSchemaFailure:E,catchSchemaFailure:i,skipSchemaValidation:C}){function a(A,e,I=0){const g=[e,...A];return I&&g.length>I?g.slice(0,-1):g}function n(A,e,I=0){const g=[...A,e];return I&&g.length>I?g.slice(1):g}const o=(A,e)=>A.query&&A[e]?A[e]:WI,r=async(A,{signal:g,abort:Q,rejectWithValue:t,fulfillWithValue:r,dispatch:c,getState:h,extra:l})=>{const f=I[A.endpointName],{metaSchema:d,skipSchemaValidation:w=C}=f;try{let u=WI;const y={signal:g,abort:Q,dispatch:c,getState:h,extra:l,endpoint:A.endpointName,type:A.type,forced:"query"===A.type?s(A,h()):void 0,queryCacheKey:"query"===A.type?A.queryCacheKey:void 0},D="query"===A.type?A[TI]:void 0;let p;const k=async(e,I,g,Q)=>{if(null==I&&e.pages.length)return Promise.resolve({data:e});const t={queryArg:A.originalArgs,pageParam:I},B=await m(t),E=Q?a:n;return{data:{pages:E(e.pages,B.data,g),pageParams:E(e.pageParams,I,g)},meta:B.meta}};async function m(A){let I;const{extraOptions:g,argSchema:Q,rawResponseSchema:t,responseSchema:B}=f;if(Q&&!XI(w,"arg")&&(A=await jI(Q,A,"argSchema",{})),D?I=D():f.query?(u=o(f,"transformResponse"),I=await e(f.query(A),y,g)):I=await f.queryFn(A,y,g,A=>e(A,y,g)),I.error)throw new JI(I.error,I.meta);let{data:E}=I;t&&!XI(w,"rawResponse")&&(E=await jI(t,I.data,"rawResponseSchema",I.meta));let i=await u(E,I.meta,A);return B&&!XI(w,"response")&&(i=await jI(B,i,"responseSchema",I.meta)),{...I,data:i}}if("query"===A.type&&"infiniteQueryOptions"in f){const{infiniteQueryOptions:F}=f,{maxPages:S=1/0}=F;let R;const G={pages:[],pageParams:[]},H=B.selectQueryEntry(h(),A.queryCacheKey)?.data,U=s(A,h())&&!A.direction||!H?G:H;if("direction"in A&&A.direction&&U.pages.length){const M="backward"===A.direction,J=(M?_I:zI)(F,U,A.originalArgs);R=await k(U,J,S,M)}else{const{initialPageParam:b=F.initialPageParam}=A,v=H?.pageParams??[],P=v[0]??b,x=v.length;R=await k(U,P,S),D&&(R={data:R.data.pages[0]});for(let N=1;N<x;N++){const q=zI(F,R.data,A.originalArgs);R=await k(R.data,q,S)}}p=R}else p=await m(A.originalArgs);return d&&!XI(w,"meta")&&p.meta&&(p.meta=await jI(d,p.meta,"metaSchema",p.meta)),r(p.data,ZI({fulfilledTimeStamp:Date.now(),baseQueryMeta:p.meta}))}catch(K){let Y=K;if(Y instanceof JI){let L=o(f,"transformErrorResponse");const{rawErrorResponseSchema:T,errorResponseSchema:V}=f;let{value:O,meta:X}=Y;try{T&&!XI(w,"rawErrorResponse")&&(O=await jI(T,O,"rawErrorResponseSchema",X)),d&&!XI(w,"meta")&&(X=await jI(d,X,"metaSchema",X));let j=await L(O,X,A.originalArgs);return V&&!XI(w,"errorResponse")&&(j=await jI(V,j,"errorResponseSchema",X)),t(j,ZI({baseQueryMeta:X}))}catch(W){Y=W}}try{if(Y instanceof OI){const Z={endpoint:A.endpointName,arg:A.originalArgs,type:A.type,queryCacheKey:"query"===A.type?A.queryCacheKey:void 0};f.onSchemaFailure?.(Y,Z),E?.(Y,Z);const{catchSchemaFailure:z=i}=f;if(z)return t(z(Y,Z),ZI({baseQueryMeta:Y._bqMeta}))}}catch(_){Y=_}throw console.error(Y),Y}};function s(A,e){const I=B.selectQueryEntry(e,A.queryCacheKey),g=B.selectConfig(e).refetchOnMountOrArgChange,Q=I?.fulfilledTimeStamp,t=A.forceRefetch??(A.subscribe&&g);return!!t&&(!0===t||(Number(new Date)-Number(Q))/1e3>=t)}const c=()=>WA(`${A}/executeQuery`,r,{getPendingMeta({arg:A}){const e=I[A.endpointName];return ZI({startedTimeStamp:Date.now(),...qI(e)?{direction:A.direction}:{}})},condition(A,{getState:e}){const g=e(),Q=B.selectQueryEntry(g,A.queryCacheKey),t=Q?.fulfilledTimeStamp,E=A.originalArgs,i=Q?.originalArgs,C=I[A.endpointName],a=A.direction;return!(!VI(A)&&("pending"===Q?.status||!s(A,g)&&(!NI(C)||!C?.forceRefetch?.({currentArg:E,previousArg:i,endpointState:Q,state:g}))&&t&&!a))},dispatchConditionRejection:!0}),h=c(),l=c();function f(A){return e=>e?.meta?.arg?.endpointName===A}return{queryThunk:h,mutationThunk:WA(`${A}/executeMutation`,r,{getPendingMeta:()=>ZI({startedTimeStamp:Date.now()})}),infiniteQueryThunk:l,prefetch:(A,e,I)=>(g,t)=>{const B=(A=>"force"in A)(I)&&I.force,E=(A=>"ifOlderThan"in A)(I)&&I.ifOlderThan,i=(I=!0)=>{const g={forceRefetch:I,isPrefetch:!0};return Q.endpoints[A].initiate(e,g)},C=Q.endpoints[A].select(e)(t());if(B)g(i());else if(E){const A=C?.fulfilledTimeStamp;if(!A)return void g(i());(Number(new Date)-Number(new Date(A)))/1e3>=E&&g(i())}else g(i(!1))},updateQueryData:(A,e,I,g=!0)=>(t,B)=>{const E=Q.endpoints[A].select(e)(B()),i={patches:[],inversePatches:[],undo:()=>t(Q.util.patchQueryData(A,e,i.inversePatches,g))};if("uninitialized"===E.status)return i;let C;if("data"in E)if(S(E.data)){const[A,e,g]=rA(E.data,I);i.patches.push(...e),i.inversePatches.push(...g),C=A}else C=I(E.data),i.patches.push({op:"replace",path:[],value:C}),i.inversePatches.push({op:"replace",path:[],value:E.data});return 0===i.patches.length||t(Q.util.patchQueryData(A,e,i.patches,g)),i},upsertQueryData:(A,e,I)=>g=>g(Q.endpoints[A].initiate(e,{subscribe:!1,forceRefetch:!0,[TI]:()=>({data:I})})),patchQueryData:(A,e,B,E)=>(i,C)=>{const a=I[A],n=g({queryArgs:e,endpointDefinition:a,endpointName:A});if(i(Q.internalActions.queryResultPatched({queryCacheKey:n,patches:B})),!E)return;const o=Q.endpoints[A].select(e)(C()),r=YI(a.providesTags,o.data,void 0,e,{},t);i(Q.internalActions.updateProvidedBy([{queryCacheKey:n,providedTags:r}]))},buildMatchThunkActions:function(A,e){return{matchPending:bA(xA(A),f(e)),matchFulfilled:bA(KA(A),f(e)),matchRejected:bA(NA(A),f(e))}}}}({baseQuery:I,reducerPath:Q,context:s,api:e,serializeQueryArgs:t,assertTagType:c,selectors:h,onSchemaFailure:n,catchSchemaFailure:o,skipSchemaValidation:r}),{reducer:H,actions:U}=Qg({context:s,queryThunk:y,mutationThunk:p,serializeQueryArgs:t,reducerPath:Q,assertTagType:c,config:{refetchOnFocus:i,refetchOnReconnect:C,refetchOnMountOrArgChange:E,keepUnusedDataFor:B,reducerPath:Q,invalidationBehavior:a}});ng(e.util,{patchQueryData:k,updateQueryData:m,upsertQueryData:F,prefetch:R,resetApiState:U.resetApiState,upsertQueryEntries:U.cacheEntriesUpserted}),ng(e.internalActions,U);const M={currentSubscriptions:new Map,currentPolls:new Map,runningQueries:new Map,runningMutations:new Map},{buildInitiateQuery:J,buildInitiateInfiniteQuery:b,buildInitiateMutation:v,getRunningMutationThunk:P,getRunningMutationsThunk:x,getRunningQueriesThunk:N,getRunningQueryThunk:q}=function({serializeQueryArgs:A,queryThunk:e,infiniteQueryThunk:I,mutationThunk:g,api:Q,context:t,internalState:B}){const{runningQueries:E,runningMutations:i}=B,{unsubscribeQueryResult:C,removeMutationResult:a,updateSubscriptionOptions:n}=Q.internalActions;return{buildInitiateQuery:function(A,e){return o(A,e)},buildInitiateInfiniteQuery:function(A,e){return o(A,e)},buildInitiateMutation:function(A){return(e,{track:I=!0,fixedCacheKey:Q}={})=>(t,B)=>{const E=g({type:"mutation",endpointName:A,originalArgs:e,track:I,fixedCacheKey:Q}),C=t(E),{requestId:n,abort:o,unwrap:r}=C,s=(c=A=>({error:A}),C.unwrap().then(A=>({data:A})).catch(c));var c;const h=Object.assign(s,{arg:C.arg,requestId:n,abort:o,unwrap:r,reset:()=>{t(a({requestId:n,fixedCacheKey:Q}))}}),l=i.get(t)||{};return i.set(t,l),l[n]=h,h.then(()=>{delete l[n],RI(l)||i.delete(t)}),Q&&(l[Q]=h,h.then(()=>{l[Q]===h&&(delete l[Q],RI(l)||i.delete(t))})),h}},getRunningQueryThunk:function(e,I){return g=>{const Q=t.endpointDefinitions[e],B=A({queryArgs:I,endpointDefinition:Q,endpointName:e});return E.get(g)?.[B]}},getRunningMutationThunk:function(A,e){return A=>i.get(A)?.[e]},getRunningQueriesThunk:function(){return A=>Object.values(E.get(A)||{}).filter(HI)},getRunningMutationsThunk:function(){return A=>Object.values(i.get(A)||{}).filter(HI)}};function o(g,t){const B=(i,{subscribe:a=!0,forceRefetch:o,subscriptionOptions:r,[TI]:s,...c}={})=>(h,l)=>{const f=A({queryArgs:i,endpointDefinition:t,endpointName:g});let d;const w={...c,type:"query",subscribe:a,forceRefetch:o,subscriptionOptions:r,endpointName:g,originalArgs:i,queryCacheKey:f,[TI]:s};if(NI(t))d=e(w);else{const{direction:A,initialPageParam:e}=c;d=I({...w,direction:A,initialPageParam:e})}const u=Q.endpoints[g].select(i),y=h(d),D=u(l()),{requestId:p,abort:k}=y,m=D.requestId!==p,F=E.get(h)?.[f],S=()=>u(l()),R=Object.assign(s?y.then(S):m&&!F?Promise.resolve(D):Promise.all([F,y]).then(S),{arg:i,requestId:p,subscriptionOptions:r,queryCacheKey:f,abort:k,async unwrap(){const A=await R;if(A.isError)throw A.error;return A.data},refetch:()=>h(B(i,{subscribe:!1,forceRefetch:!0})),unsubscribe(){a&&h(C({queryCacheKey:f,requestId:p}))},updateSubscriptionOptions(A){R.subscriptionOptions=A,h(n({endpointName:g,requestId:p,queryCacheKey:f,options:A}))}});if(!F&&!m&&!s){const A=(H=h,U={},(G=E).has(H)?G.get(H):G.set(H,U).get(H));A[f]=R,R.then(()=>{delete A[f],RI(A)||E.delete(h)})}var G,H,U;return R};return B}}({queryThunk:y,mutationThunk:p,infiniteQueryThunk:D,api:e,serializeQueryArgs:t,context:s,internalState:M});ng(e.util,{getRunningMutationThunk:P,getRunningMutationsThunk:x,getRunningQueryThunk:q,getRunningQueriesThunk:N});const{middleware:K,actions:Y}=dg({reducerPath:Q,context:s,queryThunk:y,mutationThunk:p,infiniteQueryThunk:D,api:e,assertTagType:c,selectors:h,getRunningQueryThunk:q,internalState:M});return ng(e.util,Y),ng(e,{reducer:H,middleware:K}),{name:wg,injectEndpoint(A,I){const g=e,Q=g.endpoints[A]??={};NI(I)&&ng(Q,{name:A,select:d(A,I),initiate:J(A,I)},G(y,A)),"mutation"===I.type&&ng(Q,{name:A,select:u(),initiate:v(A)},G(p,A)),qI(I)&&ng(Q,{name:A,select:w(A,I),initiate:b(A,I)},G(y,A))}}}}))());const yg=new Blob(['const e=(e,t)=>t.some(t=>e instanceof t);let t,a;const n=new WeakMap,o=new WeakMap,r=new WeakMap;let s={get(e,t,a){if(e instanceof IDBTransaction){if("done"===t)return n.get(e);if("store"===t)return a.objectStoreNames[1]?void 0:a.objectStore(a.objectStoreNames[0])}return d(e[t])},set:(e,t,a)=>(e[t]=a,!0),has:(e,t)=>e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e};function i(e){s=e(s)}function c(e){return(a||(a=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(e)?function(...t){return e.apply(l(this),t),d(this.request)}:function(...t){return d(e.apply(l(this),t))}}function u(a){return"function"==typeof a?c(a):(a instanceof IDBTransaction&&function(e){if(n.has(e))return;const t=new Promise((t,a)=>{const n=()=>{e.removeEventListener("complete",o),e.removeEventListener("error",r),e.removeEventListener("abort",r)},o=()=>{t(),n()},r=()=>{a(e.error||new DOMException("AbortError","AbortError")),n()};e.addEventListener("complete",o),e.addEventListener("error",r),e.addEventListener("abort",r)});n.set(e,t)}(a),e(a,t||(t=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction]))?new Proxy(a,s):a)}function d(e){if(e instanceof IDBRequest)return function(e){const t=new Promise((t,a)=>{const n=()=>{e.removeEventListener("success",o),e.removeEventListener("error",r)},o=()=>{t(d(e.result)),n()},r=()=>{a(e.error),n()};e.addEventListener("success",o),e.addEventListener("error",r)});return r.set(t,e),t}(e);if(o.has(e))return o.get(e);const t=u(e);return t!==e&&(o.set(e,t),r.set(t,e)),t}const l=e=>r.get(e);const w=["get","getKey","getAll","getAllKeys","count"],h=["put","add","delete","clear"],m=new Map;function g(e,t){if(!(e instanceof IDBDatabase)||t in e||"string"!=typeof t)return;if(m.get(t))return m.get(t);const a=t.replace(/FromIndex$/,""),n=t!==a,o=h.includes(a);if(!(a in(n?IDBIndex:IDBObjectStore).prototype)||!o&&!w.includes(a))return;const r=async function(e,...t){const r=this.transaction(e,o?"readwrite":"readonly");let s=r.store;return n&&(s=s.index(t.shift())),(await Promise.all([s[a](...t),o&&r.done]))[0]};return m.set(t,r),r}i(e=>({...e,get:(t,a,n)=>g(t,a)||e.get(t,a,n),has:(t,a)=>!!g(t,a)||e.has(t,a)}));const k=["continue","continuePrimaryKey","advance"],y={},b=new WeakMap,f=new WeakMap,I={get(e,t){if(!k.includes(t))return e[t];let a=y[t];return a||(a=y[t]=function(...e){b.set(this,f.get(this)[t](...e))}),a}};async function*x(...e){let t=this;if(t instanceof IDBCursor||(t=await t.openCursor(...e)),!t)return;const a=new Proxy(t,I);for(f.set(a,t),r.set(a,l(t));t;)yield a,t=await(b.get(a)||t.continue()),b.delete(a)}function p(t,a){return a===Symbol.asyncIterator&&e(t,[IDBIndex,IDBObjectStore,IDBCursor])||"iterate"===a&&e(t,[IDBIndex,IDBObjectStore])}i(e=>({...e,get:(t,a,n)=>p(t,a)?x:e.get(t,a,n),has:(t,a)=>p(t,a)||e.has(t,a)}));const D=64*Uint8Array.BYTES_PER_ELEMENT,B="p2party";async function S(){return function(e,t,{blocked:a,upgrade:n,blocking:o,terminated:r}={}){const s=indexedDB.open(e,t),i=d(s);return n&&s.addEventListener("upgradeneeded",e=>{n(d(s.result),e.oldVersion,e.newVersion,d(s.transaction),e)}),a&&s.addEventListener("blocked",e=>a(e.oldVersion,e.newVersion,e)),i.then(e=>{r&&e.addEventListener("close",()=>r()),o&&e.addEventListener("versionchange",e=>o(e.oldVersion,e.newVersion,e))}).catch(()=>{}),i}(B,16,{upgrade(e,t,a,n){if(e.objectStoreNames.contains("addressBook")){const e=n.objectStore("addressBook");e.indexNames.contains("username")||e.createIndex("username","username",{unique:!1}),e.indexNames.contains("peerId")||e.createIndex("peerId","peerId",{unique:!0}),e.indexNames.contains("peerPublicKey")||e.createIndex("peerPublicKey","peerPublicKey",{unique:!0})}else{const t=e.createObjectStore("addressBook",{keyPath:["peerId"]});t.createIndex("username","username",{unique:!1}),t.createIndex("peerId","peerId",{unique:!0}),t.createIndex("peerPublicKey","peerPublicKey",{unique:!0})}if(e.objectStoreNames.contains("blacklist")){const e=n.objectStore("blacklist");e.indexNames.contains("username")||e.createIndex("username","username",{unique:!1}),e.indexNames.contains("peerId")||e.createIndex("peerId","peerId",{unique:!0}),e.indexNames.contains("peerPublicKey")||e.createIndex("peerPublicKey","peerPublicKey",{unique:!0})}else{const t=e.createObjectStore("blacklist",{keyPath:["peerId"]});t.createIndex("username","username",{unique:!1}),t.createIndex("peerId","peerId",{unique:!0}),t.createIndex("peerPublicKey","peerPublicKey",{unique:!0})}if(e.objectStoreNames.contains("uniqueRoom")){const e=n.objectStore("uniqueRoom");e.indexNames.contains("roomUrl")||e.createIndex("roomUrl","roomUrl",{unique:!0}),e.indexNames.contains("roomId")||e.createIndex("roomId","roomId",{unique:!0})}else{const t=e.createObjectStore("uniqueRoom",{keyPath:["roomId"]});t.createIndex("roomUrl","roomUrl",{unique:!0}),t.createIndex("roomId","roomId",{unique:!0})}if(e.objectStoreNames.contains("messageData")){const e=n.objectStore("messageData");e.indexNames.contains("roomId")||e.createIndex("roomId","roomId",{unique:!1}),e.indexNames.contains("hash")||e.createIndex("hash","hash",{unique:!1}),e.indexNames.contains("merkleRoot")||e.createIndex("merkleRoot","merkleRoot",{unique:!0}),e.indexNames.contains("fromPeerId")||e.createIndex("fromPeerId","fromPeerId",{unique:!1})}else{const t=e.createObjectStore("messageData",{keyPath:["timestamp","roomId","merkleRoot"]});t.createIndex("roomId","roomId",{unique:!1}),t.createIndex("hash","hash",{unique:!1}),t.createIndex("merkleRoot","merkleRoot",{unique:!0}),t.createIndex("fromPeerId","fromPeerId",{unique:!1})}if(e.objectStoreNames.contains("chunks")){const e=n.objectStore("chunks");e.indexNames.contains("merkleRoot")||e.createIndex("merkleRoot","merkleRoot",{unique:!1}),e.indexNames.contains("hash")||e.createIndex("hash","hash",{unique:!1})}else{const t=e.createObjectStore("chunks",{keyPath:["merkleRoot","chunkIndex"]});t.createIndex("merkleRoot","merkleRoot",{unique:!1}),t.createIndex("hash","hash",{unique:!1})}if(e.objectStoreNames.contains("newChunks")){const e=n.objectStore("newChunks");e.indexNames.contains("hash")||e.createIndex("hash","hash",{unique:!1}),e.indexNames.contains("merkleRoot")||e.createIndex("merkleRoot","merkleRoot",{unique:!1}),e.indexNames.contains("realChunkHash")||e.createIndex("realChunkHash","realChunkHash",{unique:!0})}else{const t=e.createObjectStore("newChunks",{keyPath:["hash","chunkIndex"]});t.createIndex("hash","hash",{unique:!1}),t.createIndex("merkleRoot","merkleRoot",{unique:!1}),t.createIndex("realChunkHash","realChunkHash",{unique:!0})}if(e.objectStoreNames.contains("sendQueue")){const e=n.objectStore("sendQueue");e.indexNames.contains("labelPeer")||e.createIndex("labelPeer",["label","toPeerId"],{unique:!1})}else{e.createObjectStore("sendQueue",{keyPath:["position","label","toPeerId"]}).createIndex("labelPeer",["label","toPeerId"],{unique:!1})}}})}async function R(){await function(e,{blocked:t}={}){const a=indexedDB.deleteDatabase(e);return t&&a.addEventListener("blocked",e=>t(e.oldVersion,e)),d(a).then(()=>{})}(B,{blocked(){console.error("DB deletion BLOCKED")}})}onmessage=async e=>{const t=e.data,{id:a,method:n}=t;try{let e;switch(n){case"getDBAddressBookEntry":e=await async function(e,t){if(!e&&!t)return;if(e&&e.length<10&&!t)return;if(t&&64!==t.length&&!e)return;const a=await S();try{const n=a.transaction("addressBook","readonly"),o=e?n.objectStore("addressBook").index("peerId"):n.objectStore("addressBook").index("peerPublicKey"),r=e?await o.get(e):await o.get(t);return await n.done,a.close(),r?{username:r.username,peerId:r.peerId,peerPublicKey:r.peerPublicKey}:void 0}catch(e){return void a.close()}}(...t.args);break;case"getAllDBAddressBookEntries":e=await async function(){try{const e=await S(),t=await e.getAll("addressBook");return e.close(),t}catch(e){return[]}}(...t.args);break;case"setDBAddressBookEntry":e=await async function(e,t,a){try{const n=await S(),o=n.transaction(["addressBook"],"readwrite"),r=o.objectStore("addressBook"),s=r.index("peerId"),i=r.index("peerPublicKey"),c=await s.get(t),u=await i.get(a);(!c&&!u||c&&!u||!c&&u)&&await r.put({username:e,peerId:t,peerPublicKey:a,dateAdded:Date.now()}),await o.done,n.close()}catch(e){console.error(e)}}(...t.args);break;case"deleteDBAddressBookEntry":e=await async function(e,t,a){const n=!e||0===e.length,o=!t||t.length<10,r=!a||64!==a.length;if(n&&o&&r)throw new Error("Cannot delete address book with no data");let s=t??"";try{const n=await S(),i=n.transaction("addressBook","readwrite"),c=i.objectStore("addressBook");if(o)if(r){const t=c.index("username"),a=await t.getKey(e);if(a){const n=await t.get(e);s=n?.peerId??"",await c.delete(a)}}else{const e=c.index("peerPublicKey"),t=await e.getKey(a);if(t){const n=await e.get(a);s=n?.peerId??"",await c.delete(t)}}else{const e=c.index("peerId"),a=await e.getKey(t);a&&await c.delete(a)}await i.done,n.close()}catch{}return s}(...t.args);break;case"getDBPeerIsBlacklisted":e=await async function(e,t){if(!e&&!t)return!1;if(e&&e.length<10&&!t)return!1;if(t&&64!==t.length&&!e)return!1;try{const a=await S(),n=a.transaction("blacklist","readonly"),o=e?n.objectStore("blacklist").index("peerId"):n.objectStore("blacklist").index("peerPublicKey"),r=e?await o.get(e):await o.get(t);return await n.done,a.close(),!!r}catch(e){return!1}}(...t.args);break;case"getAllDBBlacklisted":e=await async function(){const e=await S();try{const t=await e.getAll("blacklist");return e.close(),t}catch(t){return e.close(),[]}}(...t.args);break;case"setDBPeerInBlacklist":e=await async function(e,t){try{const a=await S(),n=a.transaction(["blacklist"],"readwrite"),o=n.objectStore("blacklist"),r=o.index("peerId"),s=o.index("peerPublicKey"),i=await r.get(e),c=await s.get(t);(!i&&!c||i&&!c||!i&&c)&&await o.put({peerId:e,peerPublicKey:t,dateAdded:Date.now()}),await n.done,a.close()}catch(e){console.error(e)}}(...t.args);break;case"deleteDBPeerFromBlacklist":e=await async function(e,t){const a=!e||e.length<10,n=!t||64!==t.length;if(a&&n)throw new Error("Cannot delete blacklisted with no data");try{const n=await S(),o=n.transaction("blacklist","readwrite"),r=o.objectStore("blacklist");if(a){const e=r.index("peerPublicKey"),a=await e.getKey(t);a&&await r.delete(a)}else{const t=r.index("peerId"),a=await t.getKey(e);a&&await r.delete(a)}await o.done,n.close()}catch(e){console.error(e)}}(...t.args);break;case"getAllDBUniqueRooms":e=await async function(){const e=await S();try{const t=await e.getAll("uniqueRoom");return e.close(),t}catch(t){return e.close(),[]}}(...t.args);break;case"setDBUniqueRoom":e=await async function(e,t){try{const a=await S(),n=a.transaction(["uniqueRoom"],"readwrite"),o=n.objectStore("uniqueRoom"),r=o.index("roomUrl"),s=o.index("roomId"),i=await r.get(e),c=await s.get(t);if(!i&&!c){const a=Date.now();await o.put({roomId:t,roomUrl:e,messageCount:0,lastMessageMerkleRoot:"",createdAt:a,updatedAt:a})}await n.done,a.close()}catch(e){console.error(e)}}(...t.args);break;case"getDBMessageData":e=await async function(e,t){try{const a=await S(),n=a.transaction(["messageData"],"readonly"),o=n.objectStore("messageData"),r=o.index("merkleRoot"),s=o.index("hash");if(e&&e.length===2*D){const o=await r.get(e);if(o)return await n.done,a.close(),o;if(t&&t.length===2*D){const e=await s.get(t);return await n.done,a.close(),e}return await n.done,void a.close()}if(t&&t.length===2*D){const e=await s.get(t);return await n.done,a.close(),e}return await n.done,void a.close()}catch(e){return void console.error(e)}}(...t.args);break;case"getDBRoomMessageData":e=await async function(e){const t=await S(),a=await t.getAllFromIndex("messageData","roomId",e);t.close();const n=a.length,o=[];for(let t=0;t<n;t++)o.push({roomId:e,merkleRoot:a[t].merkleRoot,hash:a[t].hash,fromPeerId:a[t].fromPeerId,filename:a[t].filename,messageType:a[t].messageType,savedSize:a[t].savedSize,totalSize:a[t].totalSize,channelLabel:a[t].channelLabel,timestamp:a[t].timestamp});return o}(...t.args);break;case"setDBRoomMessageData":e=await async function(e,t,a,n,o,r,s,i,c,u){try{const d=await S(),l=d.transaction(["messageData","uniqueRoom"],"readwrite"),w=l.objectStore("messageData"),h=await w.index("merkleRoot").get(t),m=h?.savedSize??0;try{await w.put({roomId:e,timestamp:u,merkleRoot:t,hash:a,fromPeerId:n,filename:i,messageType:s,savedSize:m+o<=r?m+o:r,totalSize:r,channelLabel:c})}catch(e){throw await l.done,d.close(),e}const g=l.objectStore("uniqueRoom"),k=await g.index("roomId").get(e);if(k&&k.lastMessageMerkleRoot!==t)try{await g.put({...k,lastMessageMerkleRoot:t,messageCount:k.messageCount+1,updatedAt:u})}catch(e){throw await l.done,d.close(),e}await l.done,d.close()}catch(e){throw console.error(e),e}}(...t.args);break;case"getDBChunk":e=await async function(e,t){const a=await S(),n=await a.get("chunks",[e,t]);return a.close(),n?.data}(...t.args);break;case"existsDBChunk":e=await async function(e,t){const a=await S(),n=await a.count("chunks",[e,t]);return a.close(),n>0}(...t.args);break;case"getDBNewChunk":e=await async function(e,t){try{const a=await S(),n=t??-1;if(n>-1){const t=await a.get("newChunks",[e,n]);return a.close(),t}{const t=a.transaction("newChunks"),n=t.objectStore("newChunks").index("realChunkHash"),o=await n.get(e);return await t.done,a.close(),o}}catch(e){return void console.error(e)}}(...t.args);break;case"existsDBNewChunk":e=await async function(e,t){const a=await S(),n=await a.count("newChunks",[e,t]);return a.close(),n>0}(...t.args);break;case"getDBSendQueue":e=await async function(e,t,a){const n=await S();if(a){const o=await n.get("sendQueue",[a,e,t]);return n.close(),o?[o]:[]}const o=n.transaction("sendQueue","readonly").objectStore("sendQueue").index("labelPeer"),r=IDBKeyRange.only([e,t]),s=await o.getAll(r);return n.close(),s}(...t.args);break;case"getDBAllChunks":e=await async function(e,t){try{const a=await S(),n=a.transaction("chunks","readonly"),o=n.objectStore("chunks"),r=o.index("hash"),s=o.index("merkleRoot");if(e&&e.length===2*D){const t=await s.getAll(e);return 0===t.length?(await n.done,a.close(),[]):(await n.done,a.close(),t)}if(t&&t.length===2*D){const e=await r.getAll(t);return await n.done,a.close(),e.length>0?e.filter(t=>t.merkleRoot===e[0].merkleRoot):e}return await n.done,a.close(),[]}catch(e){return console.error(e),[]}}(...t.args);break;case"getDBAllChunksCount":e=await async function(e,t){try{const a=await S(),n=a.transaction(["chunks"],"readonly"),o=n.objectStore("chunks"),r=o.index("hash"),s=o.index("merkleRoot");if(t&&t.length===2*D){const o=await r.count(t);if(0===o){if(e&&e.length===2*D){const t=await s.count(e);return await n.done,a.close(),t}return await n.done,a.close(),0}return await n.done,a.close(),o}if(e&&e.length===2*D){const t=await s.count(e);return await n.done,a.close(),t}return await n.done,a.close(),0}catch(e){return 0}}(...t.args);break;case"setDBChunk":e=await async function(e){const t=await S();try{await t.add("chunks",e)}catch(e){}t.close()}(...t.args);break;case"getDBAllNewChunks":e=await async function(e,t){if(!e&&!t)return[];if(e?.length!==2*D&&t?.length!==2*D)return[];const a=await S();if((e?await a.countFromIndex("newChunks","hash",e):await a.countFromIndex("newChunks","merkleRoot",t))>0){const n=e?await a.getAllFromIndex("newChunks","hash",e):await a.getAllFromIndex("newChunks","merkleRoot",t);return a.close(),n}{const n=a.transaction("newChunks","readonly").objectStore("newChunks"),o=e?n.index("hash"):n.index("merkleRoot"),r=e?IDBKeyRange.only(e):IDBKeyRange.only(t),s=await o.getAll(r);return a.close(),s}}(...t.args);break;case"getDBAllNewChunksCount":e=await async function(e){const t=await S(),a=await t.countFromIndex("newChunks","hash",e);return t.close(),a}(...t.args);break;case"setDBNewChunk":e=await async function(e){const t=await S();await t.put("newChunks",e),t.close()}(...t.args);break;case"setDBSendQueue":e=await async function(e){const t=await S();await t.put("sendQueue",e),t.close()}(...t.args);break;case"countDBSendQueue":e=await async function(e,t){const a=await S(),n=a.transaction("sendQueue","readonly").objectStore("sendQueue").index("labelPeer"),o=IDBKeyRange.only([e,t]),r=await n.count(o);return a.close(),r}(...t.args);break;case"deleteDBChunk":e=await async function(e,t){try{const a=await S(),n=a.transaction("chunks","readwrite"),o=n.objectStore("chunks");if(t){const a=IDBKeyRange.only([e,t]);await o.delete(a)}else{const t=o.index("hash"),a=await t.getAllKeys(e),n=a.length;if(0===n){const t=o.index("merkleRoot"),a=await t.getAllKeys(e),n=a.length;for(let e=0;e<n;e++)await o.delete(a[e])}else for(let e=0;e<n;e++)await o.delete(a[e])}await n.done,a.close()}catch(e){}}(...t.args);break;case"deleteDBNewChunk":e=await async function(e,t,a,n){try{const o=await S(),r=o.transaction("newChunks","readwrite"),s=r.objectStore("newChunks");if(e){const t=s.index("merkleRoot"),a=await t.getAllKeys(e),n=a.length;for(let e=0;e<n;e++)await s.delete(a[e])}else if(a&&n)await s.delete([a,n]);else if(a){const e=s.index("hash"),t=await e.getAllKeys(a),n=t.length;for(let e=0;e<n;e++)await s.delete(t[e])}else if(t){const e=s.index("realChunkHash"),a=await e.getKey(t);a&&await s.delete(a)}await r.done,o.close()}catch(e){console.error(e)}}(...t.args);break;case"deleteDBMessageData":e=await async function(e){try{const t=await S(),a=t.transaction(["messageData","uniqueRoom"],"readwrite"),n=a.objectStore("messageData"),o=a.objectStore("uniqueRoom"),r=n.index("merkleRoot"),s=await r.getAllKeys(e),i=s.length;let c="";for(let e=0;e<i;e++){if(0===e||0===c.length){const t=await n.get(s[e]);c=t?.roomId??""}await n.delete(s[e])}if(c.length>0){const e=o.index("roomId"),t=await e.get(c);if(t){const e=n.index("roomId"),a=await e.getAllKeys(c),r=a.length,s=r>0?await n.get(a[r-1]):void 0;await o.put({...t,messageCount:t.messageCount>0?t.messageCount-1:0,updatedAt:s?.timestamp??Date.now(),lastMessageMerkleRoot:s?.merkleRoot??""})}}await a.done,t.close()}catch(e){}}(...t.args);break;case"deleteDBUniqueRoom":e=await async function(e){try{const t=await S(),a=t.transaction("uniqueRoom","readwrite"),n=a.objectStore("uniqueRoom"),o=n.index("roomId"),r=await o.getKey(e);r&&await n.delete(r),await a.done,t.close()}catch(e){}}(...t.args);break;case"deleteDBSendQueue":e=await async function(e,t,a){try{const n=await S();if(a)await n.delete("sendQueue",[a,e,t]);else{const a=IDBKeyRange.only([e,t]);await n.delete("sendQueue",a)}n.close()}catch(e){}}(...t.args);break;case"deleteDB":e=await R();break;default:return void postMessage({id:a,error:"Method not found"})}postMessage({id:a,result:e})}catch(e){postMessage({id:a,error:String(e)})}};\n//# sourceMappingURL=db.worker.js.map\n'],{type:"application/javascript"}),Dg=new Worker(URL.createObjectURL(yg),{type:"module"});let pg=0;const kg=new Map;function mg(A,...e){return new Promise((I,g)=>{const Q=++pg;kg.set(Q,{resolve:I,reject:g}),Dg.postMessage({id:Q,method:A,args:e})})}Dg.onmessage=A=>{const{id:e,result:I,error:g}=A.data,Q=kg.get(e);Q&&(kg.delete(e),g?Q.reject(g):Q.resolve(I))};const Fg=(A,e)=>mg("getDBAddressBookEntry",A,e),Sg=(A,e)=>mg("getDBPeerIsBlacklisted",A,e),Rg=()=>mg("getAllDBUniqueRooms"),Gg=A=>mg("getDBRoomMessageData",A),Hg=(A,e,I,g,Q,t,B,E,i,C)=>mg("setDBRoomMessageData",A,e,I,g,Q,t,B,E,i,C),Ug=(A,e)=>mg("getDBNewChunk",A,e),Mg=(A,e)=>mg("getDBSendQueue",A,e),Jg=A=>mg("setDBChunk",A),bg=A=>mg("setDBNewChunk",A),vg=A=>mg("setDBSendQueue",A),Pg=(A,e)=>mg("deleteDBChunk",A,e),xg=(A,e,I,g)=>mg("deleteDBNewChunk",A,e,I,g),Ng=(A,e,I)=>mg("deleteDBSendQueue",A,e,I),qg={Text:1,ImagePNG:2,ImageJPEG:3,ImageJPG:4,ImageGIF:5,ImageBMP:6,ImageTIFF:7,ImageSVG:8,ImageWEBP:9,ImageHEIC:10,DocumentPDF:11,DocumentDOC:12,DocumentDOCX:13,DocumentXLS:14,DocumentXLSX:15,DocumentPPT:16,DocumentPPTX:17,DocumentTXT:18,DocumentRTF:19,DocumentODT:20,AudioMP3:21,AudioWAV:22,AudioAAC:23,AudioFLAC:24,AudioOGG:25,AudioM4A:26,VideoMP4:27,VideoAVI:28,VideoMKV:29,VideoMOV:30,VideoWMV:31,VideoFLV:32,VideoWEBM:33,CompressedZIP:34,CompressedRAR:35,Compressed7Z:36,CompressedTAR:37,CompressedGZ:38,CodeHTML:39,CodeCSS:40,CodeJS:41,CodeJSX:42,CodeTS:43,CodeTSX:44,CodeJSON:45,CodeXML:46,CodePY:47,CodeJAVA:48,CodeC:49,CodeCPP:50,CodeCS:51,CodeRB:52,CodePHP:53,CodeSQL:54,EbookEPUB:55,EbookMOBI:56,EbookAZW:57,FontTTF:58,FontOTF:59,ImageICO:60,ExecutableEXE:61,ExecutableDMG:62,ExecutableAPK:63,Unknown:64},Kg={Text:"Text",Image:"Image",Document:"Document",Audio:"Audio",Video:"Video",Compressed:"Compressed",Code:"Code",Ebook:"Ebook",Font:"Font",Executable:"Executable",Unknown:"Unknown"},Yg=A=>{switch(A){case qg.Text:return"text/plain";case qg.ImagePNG:return"image/png";case qg.ImageJPEG:case qg.ImageJPG:return"image/jpeg";case qg.ImageGIF:return"image/gif";case qg.ImageBMP:return"image/bmp";case qg.ImageTIFF:return"image/tiff";case qg.ImageSVG:return"image/svg+xml";case qg.ImageWEBP:return"image/webp";case qg.ImageHEIC:return"image/heic";case qg.ImageICO:return"image/vnd.microsoft.icon";case qg.DocumentPDF:return"application/pdf";case qg.DocumentDOC:return"application/msword";case qg.DocumentDOCX:return"application/vnd.openxmlformats-officedocument.wordprocessingml.document";case qg.DocumentXLS:return"application/vnd.ms-excel";case qg.DocumentXLSX:return"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";case qg.DocumentPPT:return"application/vnd.ms-powerpoint";case qg.DocumentPPTX:return"application/vnd.openxmlformats-officedocument.presentationml.presentation";case qg.DocumentTXT:return"text/plain";case qg.DocumentRTF:return"application/rtf";case qg.DocumentODT:return"application/vnd.oasis.opendocument.text";case qg.AudioMP3:return"audio/mpeg";case qg.AudioWAV:return"audio/wav";case qg.AudioAAC:return"audio/aac";case qg.AudioFLAC:return"audio/flac";case qg.AudioOGG:return"audio/ogg";case qg.AudioM4A:return"audio/mp4";case qg.VideoMP4:return"video/mp4";case qg.VideoAVI:return"video/x-msvideo";case qg.VideoMKV:return"video/x-matroska";case qg.VideoMOV:return"video/quicktime";case qg.VideoWMV:return"video/x-ms-wmv";case qg.VideoFLV:return"video/x-flv";case qg.VideoWEBM:return"video/webm";case qg.CompressedZIP:return"application/zip";case qg.CompressedRAR:return"application/vnd.rar";case qg.Compressed7Z:return"application/x-7z-compressed";case qg.CompressedTAR:return"application/x-tar";case qg.CompressedGZ:return"application/gzip";case qg.CodeHTML:return"text/html";case qg.CodeCSS:return"text/css";case qg.CodeJS:case qg.CodeJSX:return"application/javascript";case qg.CodeTS:case qg.CodeTSX:return"application/typescript";case qg.CodeJSON:return"application/json";case qg.CodeXML:return"application/xml";case qg.CodePY:return"text/x-python";case qg.CodeJAVA:return"text/x-java-source";case qg.CodeC:return"text/x-c";case qg.CodeCPP:return"text/x-c++";case qg.CodeCS:return"text/plain";case qg.CodeRB:return"text/x-ruby";case qg.CodePHP:return"application/x-httpd-php";case qg.CodeSQL:return"application/sql";case qg.EbookEPUB:return"application/epub+zip";case qg.EbookMOBI:return"application/x-mobipocket-ebook";case qg.EbookAZW:return"application/vnd.amazon.ebook";case qg.FontTTF:return"font/ttf";case qg.FontOTF:return"font/otf";case qg.ExecutableEXE:return"application/vnd.microsoft.portable-executable";case qg.ExecutableDMG:return"application/x-apple-diskimage";case qg.ExecutableAPK:return"application/vnd.android.package-archive";default:return"application/octet-stream"}},Lg="0123456789abcdef",Tg=new Array(64),Vg=new Array(128),Og=A=>new Promise(e=>{let I=0;const g=A.length;for(let e=0;e<g;e++)I+=A[e].length;const Q=new Uint8Array(I);let t=0;for(const e of A)Q.set(e,t),t+=e.length;e(Q)}),Xg=A=>{const e=A.length,I=e===Ve?Vg:32===e?Tg:new Array(2*e);let g=0;for(let Q=0;Q<e;Q++){const e=A[Q];I[g++]=Lg[e>>4],I[g++]=Lg[15&e]}return I.join("")},jg=A=>{(A=A.replace(/^0x/,"")).length%2!=0&&(A="0"+A);const e=/[G-Z\s]/i.exec(A);if(e)throw new Error(`Found non-hex characters ${e[0]}`);const I=A.match(/[\dA-F]{2}/gi);if(!I)throw new Error("No hex characters in string");const g=I.length,Q=new Uint8Array(g);for(let A=0;A<g;A++)Q[A]=parseInt(I[A],16);return Q},Wg=65536,Zg=131072,zg=9+Ve+8+8+256+8+8+8,_g=4+48*(Ve+1),$g=je+Oe+(zg+_g)+AI+Ze,AQ=Wg-$g,eQ=zg+_g+AQ,IQ=II(eQ),gQ=A=>{const e=new Uint8Array(zg);let I=0;new DataView(e.buffer,I,8).setBigUint64(0,BigInt(A.schemaVersion),!1),I+=8,e[I]=A.messageType,I+=1,e.set(A.hash,I),I+=Ve,new DataView(e.buffer,I,8).setBigUint64(0,BigInt(A.totalSize),!1),I+=8,new DataView(e.buffer,I,8).setBigInt64(0,BigInt(A.date.getTime()),!1),I+=8;const g=(new TextEncoder).encode(A.name),Q=new Uint8Array(256);return Q.set(g.subarray(0,Math.min(256,g.length))),e.set(Q,I),I+=256,new DataView(e.buffer,I,8).setBigUint64(0,BigInt(A.chunkStartIndex),!1),I+=8,new DataView(e.buffer,I,8).setBigUint64(0,BigInt(A.chunkEndIndex),!1),I+=8,new DataView(e.buffer,I,8).setBigUint64(0,BigInt(A.chunkIndex),!1),I+=8,e},QQ=A=>{if(A.length!==zg)throw new Error("Invalid metadata buffer totalSize");let e=0;const I=new DataView(A.buffer,A.byteOffset+e,8),g=Number(I.getBigUint64(0,!1));e+=8;const Q=A[e];e+=1;const t=A.slice(e,e+Ve);e+=Ve;const B=new DataView(A.buffer,A.byteOffset+e,8),E=Number(B.getBigUint64(0,!1));e+=8;const i=new DataView(A.buffer,A.byteOffset+e,8),C=Number(i.getBigUint64(0,!1)),a=new Date(C);e+=8;const n=A.slice(e,e+256),o=(new TextDecoder).decode(n).replace(/\0+$/,"");e+=256;const r=new DataView(A.buffer,A.byteOffset+e,8),s=Number(r.getBigUint64(0,!1));e+=8;const c=new DataView(A.buffer,A.byteOffset+e,8),h=Number(c.getBigUint64(0,!1));e+=8;const l=new DataView(A.buffer,A.byteOffset+e,8);return{schemaVersion:g,messageType:Q,hash:t,totalSize:E,date:a,name:o,chunkStartIndex:s,chunkEndIndex:h,chunkIndex:Number(l.getBigUint64(0,!1))}},tQ=(A,e,I)=>{e=e??32,I=I??16384;const g=65536,Q=Math.ceil(A/g);if(Q>I)throw new Error(`Memory required is ${String(Q*g)} bytes while declared maximum is ${String(I*g)} bytes`);return Q<e?e:Q};var BQ,EQ=(A,e)=>{const I=II(A),g=(A+je+e+I+AI+1*(A+Ze)+2*ze+2*_e+$e)*Uint8Array.BYTES_PER_ELEMENT,Q=tQ(g);return new WebAssembly.Memory({initial:Q,maximum:Q})},iQ=()=>{const A=(je+Oe+je)*Uint8Array.BYTES_PER_ELEMENT,e=Wg-je-Oe,I=gI(e),g=(e+We+Ve+I+2*ze+$e+_e)*Uint8Array.BYTES_PER_ELEMENT,Q=_g*Uint8Array.BYTES_PER_ELEMENT+4*Ve,t=tQ(I+Wg+2*Ve+je+We+A+g+Q+Ve);return new WebAssembly.Memory({initial:t,maximum:t})},CQ={exports:{}},aQ=(BQ||(BQ=1,function(A){async function e(A={}){var e,I=A,g=[],Q=(A,e)=>{throw e};e=self.location.href;var t,B,E="";try{E=new URL(".",e).href}catch{}B=A=>{var e=new XMLHttpRequest;return e.open("GET",A,!1),e.responseType="arraybuffer",e.send(null),new Uint8Array(e.response)},t=async A=>{var e=await fetch(A,{credentials:"same-origin"});if(e.ok)return e.arrayBuffer();throw new Error(e.status+" : "+e.url)},console.log.bind(console);var i,C,a,n,o,r,s=console.error.bind(console),c=[],h=!1,l=!1,f=!1,d=[];function w(A){s(A="Aborted("+A+")"),h=!0,A+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(A);throw a?.(e),e}async function u(A,e,I){return async function(A,e){try{var I=await async function(A){return function(A){if(ArrayBuffer.isView(A))return A;if(B)return B(A);throw"both async and sync fetching of the wasm failed"}(A)}(A);return await WebAssembly.instantiate(I,e)}catch(A){s(`failed to asynchronously prepare wasm: ${A}`),w(A)}}(e,I)}class y{name="ExitStatus";constructor(A){this.message=`Program terminated with exit(${A})`,this.status=A}}var D,p={},k=new Set([]),m={get(A,e){var I=p[e];return I||(I=p[e]=new WebAssembly.Global({value:"i32",mutable:!0})),k.has(e)||(I.required=!0),I}},F=A=>{for(;A.length>0;)A.shift()(I)},S="undefined"!=typeof TextDecoder?new TextDecoder:void 0,R=(A,e=0,I,g)=>{var Q=((A,e,I)=>{for(var g=e+I;A[e]&&!(e>=g);)++e;return e})(A,e,I);if(Q-e>16&&A.buffer&&S)return S.decode(A.subarray(e,Q));for(var t="";e<Q;){var B=A[e++];if(128&B){var E=63&A[e++];if(192!=(224&B)){var i=63&A[e++];if((B=224==(240&B)?(15&B)<<12|E<<6|i:(7&B)<<18|E<<12|i<<6|63&A[e++])<65536)t+=String.fromCharCode(B);else{var C=B-65536;t+=String.fromCharCode(55296|C>>10,56320|1023&C)}}else t+=String.fromCharCode((31&B)<<6|E)}else t+=String.fromCharCode(B)}return t},G=A=>{var e=0,I=0;function g(){return A[e++]}function Q(){for(var I=0,g=1;;){var Q=A[e++];if(I+=(127&Q)*g,g*=128,!(128&Q))break}return I}function t(){var I=Q();return R(A,(e+=I)-I,I)}function B(){for(var A=Q(),e=[];A--;)e.push(t());return e}function E(A,e){if(A)throw new Error(e)}if(A instanceof WebAssembly.Module){var i=WebAssembly.Module.customSections(A,"dylink.0");E(0===i.length,"need dylink section"),I=(A=new Uint8Array(i[0])).length}else{E(!(1836278016==new Uint32Array(new Uint8Array(A.subarray(0,24)).buffer)[0]),"need to see wasm magic number"),E(0!==A[8],"need the dylink section to be first"),e=9;var C=Q();I=e+C,E("dylink.0"!==t())}for(var a={neededDynlibs:[],tlsExports:new Set,weakImports:new Set,runtimePaths:[]};e<I;){var n=g(),o=Q();if(1===n)a.memorySize=Q(),a.memoryAlign=Q(),a.tableSize=Q(),a.tableAlign=Q();else if(2===n)a.neededDynlibs=B();else if(3===n)for(var r=Q();r--;){var s=t();256&Q()&&a.tlsExports.add(s)}else if(4===n)for(r=Q();r--;)t(),s=t(),1==(3&Q())&&a.weakImports.add(s);else 5===n?a.runtimePaths=B():e+=o}return a},H=(A,e,I)=>{var g={refcount:1/0,name:A,exports:I,global:!0};return U.loadedLibsByName[A]=g,null!=e&&(U.loadedLibsByHandle[e]=g),g},U={loadedLibsByName:{},loadedLibsByHandle:{},init(){H("__main__",0,FA)}},M=562416,J=(A,e)=>Math.ceil(A/e)*e,b=A=>["__cpp_exception","__c_longjmp","__wasm_apply_data_relocs","__dso_handle","__tls_size","__tls_align","__set_stack_limits","_emscripten_tls_init","__wasm_init_tls","__wasm_call_ctors","__start_em_asm","__stop_em_asm","__start_em_js","__stop_em_js"].includes(A)||A.startsWith("__em_js__"),v=A=>{const e=A.length;return[e%128|128,e>>7,...A]},P={i:127,p:127,j:126,f:125,d:124,e:111},x=A=>v(Array.from(A,A=>P[A])),N=[],q=new WebAssembly.Table({initial:3,element:"anyfunc"}),K=A=>{var e=N[A];return e||(N[A]=e=q.get(A)),e},Y=(A,e)=>{if(D)for(var I=A;I<A+e;I++){var g=K(I);g&&D.set(g,I)}},L=[],T=(A,e)=>{q.set(A,e),N[A]=q.get(A)},V=(A,e)=>{var I=(A=>(D||(D=new WeakMap,Y(0,q.length)),D.get(A)||0))(A);if(I)return I;var g=L.length?L.pop():q.grow(1);try{T(g,A)}catch(I){if(!(I instanceof TypeError))throw I;var Q=((A,e)=>{var I=Uint8Array.of(0,97,115,109,1,0,0,0,1,...v([1,96,...x(e.slice(1)),...x("v"===e[0]?"":e[0])]),2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0),g=new WebAssembly.Module(I);return new WebAssembly.Instance(g,{e:{f:A}}).exports.f})(A,e);T(g,Q)}return D.set(A,g),g},O=(A,e,I)=>{var g={};for(var Q in A){var t=A[Q];"object"==typeof t&&(t=t.value),"number"==typeof t&&(t+=e),g[Q]=t}return(A=>{for(var e in A)if(!b(e)){var I=A[e];p[e]||=new WebAssembly.Global({value:"i32",mutable:!0}),0==p[e].value&&("function"==typeof I?p[e].value=V(I):"number"==typeof I?p[e].value=I:s(`unhandled export type for '${e}': ${typeof I}`))}})(g),g},X=A=>{var e=FA[A];return!(!e||e.stub)},j=(A,e=!1)=>{var I;return X(A)&&(I=FA[A]),{sym:I,name:A}},W=[],Z=(A,e,I)=>A?R(o,A,e):"",z=(A,e,I,g,Q)=>{var t=G(A);function B(){var I,Q=Math.pow(2,t.memoryAlign),B=t.memorySize?J((A=>{if(l)return wA(A,1);var e=M,I=e+J(A,16);return M=I,p.__heap_base.value=I,e})(t.memorySize+Q),Q):0,E=t.tableSize?q.length:0;t.tableSize&&q.grow(t.tableSize);var i=new Proxy({},{get(A,e){switch(e){case"__memory_base":return B;case"__table_base":return E}var Q;return e in FA&&!FA[e].stub?FA[e]:(e in A||(A[e]=(...A)=>(Q||=function(A){var e=j(A).sym;return!e&&g&&(e=g[A]),e||(e=I[A]),e}(e),Q(...A))),A[e])}});k=t.weakImports;var C={"GOT.mem":new Proxy({},m),"GOT.func":new Proxy({},m),env:i,wasi_snapshot_preview1:i};function a(A,g){function Q(A,e){for(var I=[],g=0;g<16&&-1!=e.indexOf("$"+g);g++)I.push("$"+g);I=I.join(","),w("DYNAMIC_EXECUTION=0 was set, cannot eval")}if(Y(E,t.tableSize),I=O(g.exports,B),e.allowUndefined||eA(),"__start_em_asm"in I)for(var i=I.__start_em_asm,C=I.__stop_em_asm;i<C;)Q(0,Z(i)),i=o.indexOf(0,i)+1;function a(A,e,I){var g=[];if("void"!=(e=e.slice(1,-1)))for(var Q in e=e.split(",")){var t=e[Q].split(" ").pop();g.push(t.replace("*",""))}w("DYNAMIC_EXECUTION=0 was set, cannot eval")}for(var n in I)if(n.startsWith("__em_js__")){i=I[n];var r=Z(i).split("<::>");a(n.replace("__em_js__",""),r[0],r[1]),delete I[n]}var s=I.__wasm_apply_data_relocs;s&&(l?s():d.push(s));var c,h=I.__wasm_call_ctors;return h&&(l?h():(c=h,W.push(c))),I}if(e.loadAsync)return(async()=>{var e;return A instanceof WebAssembly.Module?e=new WebAssembly.Instance(A,C):({module:A,instance:e}=await WebAssembly.instantiate(A,C)),a(0,e)})();var n=A instanceof WebAssembly.Module?A:new WebAssembly.Module(A);return a(0,new WebAssembly.Instance(n,C))}return(e={...e,rpath:{parentLibPath:I,paths:t.runtimePaths}}).loadAsync?t.neededDynlibs.reduce((A,I)=>A.then(()=>AA(I,e,g)),Promise.resolve()).then(B):(t.neededDynlibs.forEach(A=>AA(A,e,g)),B())},_=(A,e)=>{for(var[I,g]of Object.entries(A)){const A=A=>{X(A)||(FA[A]=g)};A(I);const e="__main_argc_argv";"main"==I&&A(e),I==e&&A("main")}},$=async A=>{var e=await t(A);return new Uint8Array(e)};function AA(A,e={global:!0,nodelete:!0},I,g){var Q=U.loadedLibsByName[A];if(Q)return e.global&&(Q.global||(Q.global=!0,_(Q.exports))),e.nodelete&&Q.refcount!==1/0&&(Q.refcount=1/0),Q.refcount++,!e.loadAsync||Promise.resolve(!0);function t(){var I=E+A;if(e.loadAsync)return $(I);if(!B)throw new Error(`${I}: file not found, and synchronous loading of external files is not available`);return B(I)}function i(){return e.loadAsync?t().then(g=>z(g,e,A,I)):z(t(),e,A,I)}function C(A){Q.global&&_(A),Q.exports=A}return(Q=H(A,g,"loading")).refcount=e.nodelete?1/0:1,Q.global=e.global,e.loadAsync?i().then(A=>(C(A),!0)):(C(i()),!0)}var eA=()=>{for(var[A,e]of Object.entries(p))if(0==e.value){var I=j(A,!0).sym;if(!I&&!e.required)continue;if("function"==typeof I)e.value=V(I,I.sig);else{if("number"!=typeof I)throw new Error(`bad export type for '${A}': ${typeof I}`);e.value=I}}},IA=0,gA=null,QA=(A,e,I,g)=>w(`Assertion failed: ${Z(A)}, at: `+[e?Z(e):"unknown filename",I,g?Z(g):"unknown function"]);QA.sig="vppip";var tA=new WebAssembly.Global({value:"i32",mutable:!1},4096),BA=new WebAssembly.Global({value:"i32",mutable:!0},562416),EA=new WebAssembly.Global({value:"i32",mutable:!1},1),iA=()=>w("");iA.sig="v";var CA=0,aA=()=>{CA=0};aA.sig="v";var nA={},oA=A=>{if(A instanceof y||"unwind"==A)return i;Q(0,A)},rA=()=>CA>0,sA=A=>{i=A,rA()||(h=!0),Q(0,new y(A))};sA.sig="vi";var cA=(A,e)=>{i=A,rA()||(fA(),f=!0),sA(A)};cA.sig="vi";var hA=()=>performance.now();hA.sig="d";var lA=(A,e)=>{if(nA[A]&&(clearTimeout(nA[A].id),delete nA[A]),!e)return 0;var I=setTimeout(()=>{delete nA[A],(A=>{if(!f&&!h)try{A(),(()=>{if(!f&&!rA())try{cA(i)}catch(A){oA(A)}})()}catch(A){oA(A)}})(()=>dA(A,hA()))},e);return nA[A]={id:I,timeout_ms:e},0};lA.sig="iid";var fA,dA,wA,uA,yA,DA=A=>{o.length,w("OOM")};DA.sig="ip";for(var pA=new Uint8Array(123),kA=25;kA>=0;--kA)pA[48+kA]=52+kA,pA[65+kA]=kA,pA[97+kA]=26+kA;pA[43]=62,pA[47]=63,yA=(n=I.wasmMemory?I.wasmMemory:new WebAssembly.Memory({initial:32,maximum:32})).buffer,o=new Uint8Array(yA),new BigInt64Array(yA),new BigUint64Array(yA);var mA,FA={__assert_fail:QA,__heap_base:M,__indirect_function_table:q,__memory_base:tA,__stack_high:562416,__stack_pointer:BA,__table_base:EA,_abort_js:iA,_emscripten_runtime_keepalive_clear:aA,_setitimer_js:lA,alignfault:function(){w("alignment fault")},emscripten_resize_heap:DA,memory:n,proc_exit:sA,segfault:function(){w("segmentation fault")}};return mA=await async function(){function A(A,e){mA=A.exports,mA=O(mA,4096);var g=G(e);return g.neededDynlibs&&(c=g.neededDynlibs.concat(c)),_(mA),U.init(),(async()=>{if(c.length){for(var A of(IA++,c))await AA(A,{loadAsync:!0,global:!0,nodelete:!0,allowUndefined:!0});eA(),(()=>{if(0==--IA&&gA){var A=gA;gA=null,A()}})()}else eA()})(),d.push(mA.__wasm_apply_data_relocs),function(A){I._argon2=A.argon2,I._malloc=A.malloc,I._free=A.free,I._encrypt_chachapoly_asymmetric=A.encrypt_chachapoly_asymmetric,I._decrypt_chachapoly_asymmetric=A.decrypt_chachapoly_asymmetric,I._keypair_from_seed=A.keypair_from_seed,I._keypair_from_secret_key=A.keypair_from_secret_key,I._sign=A.sign,I._verify=A.verify,I._get_merkle_root=A.get_merkle_root,I._get_merkle_proof=A.get_merkle_proof,I._get_merkle_root_from_proof=A.get_merkle_root_from_proof,I._verify_merkle_proof=A.verify_merkle_proof,I._receive_message=A.receive_message,fA=A.__funcs_on_exit,dA=A._emscripten_timeout,A.sbrk,wA=A.calloc,uA=A.realloc,A.emscripten_stack_get_base,A._emscripten_stack_alloc,A.__wasm_apply_data_relocs}(mA),mA}var e={env:FA,wasi_snapshot_preview1:FA,"GOT.mem":new Proxy(FA,m),"GOT.func":new Proxy(FA,m)};r??=(A=>{for(var e,I,g=0,Q=0,t=A.length,B=new Uint8Array((3*t>>2)-("="==A[t-2])-("="==A[t-1]));g<t;g+=4,Q+=3)e=pA[A.charCodeAt(g+1)],I=pA[A.charCodeAt(g+2)],B[Q]=pA[A.charCodeAt(g)]<<2|e>>4,B[Q+1]=e<<4|I>>2,B[Q+2]=I<<6|pA[A.charCodeAt(g+3)];return B})("AGFzbQEAAAAAEQhkeWxpbmsuMAEG8IkCBAIAAYYBFGACf38AYAJ/fwF/YAN/f38AYAAAYAN/f34AYAJ/fwF+YAF/AGABfwF/YAR/f39/AX9gA39/fwF/YAR/f39/AGAEf39/fgBgBX9/fn9/AGAEf39+fwF/YAd/f39/f39/AX9gAn98AX9gAn98AGAFf39/f38Bf2AIf39/f39/f38Bf2AAAX8C4wIPA2VudghzZWdmYXVsdAADA2VudgphbGlnbmZhdWx0AAMWd2FzaV9zbmFwc2hvdF9wcmV2aWV3MQlwcm9jX2V4aXQABgNlbnYjX2Vtc2NyaXB0ZW5fcnVudGltZV9rZWVwYWxpdmVfY2xlYXIAAwNlbnYNX3NldGl0aW1lcl9qcwAPA2VudhZlbXNjcmlwdGVuX3Jlc2l6ZV9oZWFwAAcDZW52CV9hYm9ydF9qcwADA2Vudg1fX2Fzc2VydF9mYWlsAAoDZW52D19fc3RhY2tfcG9pbnRlcgN/AQNlbnYNX19tZW1vcnlfYmFzZQN/AANlbnYMX190YWJsZV9iYXNlA38AB0dPVC5tZW0LX19oZWFwX2Jhc2UDfwEHR09ULm1lbQxfX3N0YWNrX2hpZ2gDfwEDZW52Bm1lbW9yeQIBICADZW52GV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBcAACA1taAQICAQQFAAIEBQUEBAUBBgQCAAcHAQIAAAAEAgAEAAUCAQAHBQUJBQAHCgEEBQIEAgAGAAoLAAAMAgIBAAMDCA0OCQEBAQYGEAERCAgJCAgBCQMSCAcDEwMDBgYBfwFBAAsHqQMXEV9fd2FzbV9jYWxsX2N0b3JzAGEGYXJnb24yAFwGbWFsbG9jABwEZnJlZQAXHWVuY3J5cHRfY2hhY2hhcG9seV9hc3ltbWV0cmljAFsdZGVjcnlwdF9jaGFjaGFwb2x5X2FzeW1tZXRyaWMASRFrZXlwYWlyX2Zyb21fc2VlZABZF2tleXBhaXJfZnJvbV9zZWNyZXRfa2V5AFgEc2lnbgBXBnZlcmlmeQBWD2dldF9tZXJrbGVfcm9vdABVEGdldF9tZXJrbGVfcHJvb2YAVBpnZXRfbWVya2xlX3Jvb3RfZnJvbV9wcm9vZgBTE3ZlcmlmeV9tZXJrbGVfcHJvb2YARw9yZWNlaXZlX21lc3Nh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IAJQDQAgAEHIACAAQcgAEA0iAyACQgOGfCIEEAwgAEHAACAAQcAAEA0gAyAEVq18EAwgAEHQAGohCUKAASADQgOIQv8AgyIEfSIHIAJYBEBCACEDIARC/wCFQgNaBEAgB0L8AYMhBQNAIAkgAyAEfKdqQQAgASADp2pBABALEAogCSADQgGEIgggBHynakEAIAEgCKdqQQAQCxAKIAkgA0IChCIIIAR8p2pBACABIAinakEAEAsQCiAJIANCA4QiCCAEfKdqQQAgASAIp2pBABALEAogA0IEfCIDIAVSDQALCyAHQgODIgVCAFIEQANAIAkgAyAEfKdqQQAgASADp2pBABALEAogA0IBfCEDIAZCAXwiBiAFUg0ACwsgACAJIAogCkGABWoiCxAyIAEgB6dqIQEgAiAHfSICQv8AVgRAA0AgACABIAogCxAyIAFBgAFqIQEgAkKAAX0iAkL/AFYNAAsLAkAgAlANAEIAIQZCACEDIAJCBFoEQCACQvwAgyEEA0AgCSADpyIAakEAIAAgAWpBABALEAogCSAAQQFyIgtqQQAgASALakEAEAsQCiAJIABBAnIiC2pBACABIAtqQQAQCxAKIAkgAEEDciIAakEAIAAgAWpBABALEAogA0IEfCIDIARSDQALCyACQgODIgJQDQADQCAJIAOnIgBqQQAgACABakEAEAsQCiADQgF8IQMgBkIBfCIGIAJSDQALCyAKQcwFIAoQCUEAIQADQCAKQcwFEAggAGpBAEEAEAogCkHMBRAIIABqQQFBABAKIApBzAUQCCAAakECQQAQCiAKQcwFEAggAGpBA0EAEAogCkHMBRAIIABBBHIiAWpBAEEAEAogCkHMBRAIIAFqQQFBABAKIApBzAUQCCABakECQQAQCiAKQcwFEAggAWpBA0EAEAogAEEIaiIAQcAFRw0ACwwBC0IAIQMgAkIEWgRAIAJC/P///w+DIQcDQCAJIAMgBHynakEAIAEgA6dqQQAQCxAKIAkgA0IBhCIFIAR8p2pBACABIAWnakEAEAsQCiAJIANCAoQiBSAEfKdqQQAgASAFp2pBABALEAogCSADQgOEIgUgBHynakEAIAEgBadqQQAQCxAKIANCBHwiAyAHUg0ACwsgAkIDgyICUA0AA0AgCSADIAR8p2pBACABIAOnakEAEAsQCiADQgF8IQMg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//8fgyAOQv////8Pg358IgkgAUHgABANhUIgiSIPIAFBwAAQDSISfCAPQv////8PgyASQgGGQv7///8fg358IhIgDoVCKIkiDiAJfCAOQv////8PgyAJQgGGQv7///8fg358Igl8IANC/////w+DIAlCAYZC/v///x+DfnwiCIVCIIkiEyABQTAQDSIQIAFBEBANIgx8IAxCAYZC/v///x+DIBBC/////w+DfnwiDCABQfAAEA2FQiCJIhEgAUHQABANIg18IBFC/////w+DIA1CAYZC/v///x+DfnwiDSAQhUIoiSIQIAx8IBBC/////w+DIAxCAYZC/v///x+DfnwiDCARhUIwiSIRIA18IBFC/////w+DIA1CAYZC/v///x+DfnwiDXwgE0L/////D4MgDUIBhkL+////H4N+fCIUIAOFQiiJIgMgCHwgA0L/////D4MgCEIBhkL+////H4N+fCIIEAwgAUH4ACAIIBOFQjCJIggQDCABQdAAIAggFHwgCEL/////D4MgFEIBhkL+////H4N+fCIIEAwgAUEoIAMgCIVCAYkQDCABQeAAIA0gEIVCAYkiAyAGfCADQv////8PgyAGQgGGQv7///8fg358IgYgCSAPhUIwiSIJhUIgiSIPIAQgB3wgBEL/////D4MgB0IBhkL+////H4N+fCIEfCAPQv////8PgyAEQgGGQv7///8fg358IgcgA4VCKIkiAyAGfCADQv////8PgyAGQgGGQv7///8fg358IgggD4VCMIkiBhAMIAFBCCAIEAwgAUHYACAGIAd8IAZC/////w+DIAdCAYZC/v///x+DfnwiBxAMIAFBMCADIAeFQgGJEAwgAUHoACACIASFQgGJIgIgDHwgAkL/////D4MgDEIBhkL+////H4N+fCIEIAqFQiCJIgcgCSASfCAJQv////8PgyASQgGGQv7///8fg358IgN8IAdC/////w+DIANCAYZC/v///x+DfnwiBiAChUIoiSICIAR8IAJC/////w+DIARCAYZC/v///x+DfnwiCiAHhUIwiSIEEAwgAUEQIAoQDCABQcAAIAQgBnwgBEL/////D4MgBkIBhkL+////H4N+fCIEEAwgAUE4IAIgBIVCAYkQDCABQfAAIAUgAyAOhUIBiSICfCAFQgGGQv7///8fgyACQv////8Pg358IgUgEYVCIIkiBCALfCAEQv////8PgyALQgGGQv7///8fg358IgcgAoVCKIkiAiAFfCACQv////8PgyAFQgGGQv7///8fg358IgMgBIVCMIkiBRAMIAFBGCADEAwgAUHIACAFIAd8IAVC/////w+DIAdCAYZC/v///x+DfnwiBRAMIAFBICACIAWFQgGJEAwgF0EBaiIXQQhHDQALA0AgGEGAGGogFkEEdGoiAUEAIAFBiAMQDSICIAFBiAEQDSIFfCAFQgGGQv7///8fgyACQv////8Pg358IgUgAUGIBxANhUIgiSIEIAFBiAUQDSIHfCAEQv////8PgyAHQgGGQv7///8fg358IgcgAoVCKIkiAiAFfCACQv////8PgyAFQgGGQv7///8fg358IgUgBIVCMIkiBCABQYgCEA0iAyABQQgQDSIGfCAGQgGGQv7///8fgyADQv////8Pg358IgYgAUGIBhANhUIgiSIKIAFBiAQQDSILfCAKQv////8PgyALQgGGQv7///8fg358IgsgA4VCKIkiAyAGfCADQv////8PgyAGQgGGQv7///8fg358IgYgCoVCMIkiCiALfCAKQv////8PgyALQgGGQv7///8fg358IgsgA4VCAYkiAyABQYACEA0iDiABQQAQDSIJfCAJQgGGQv7///8fgyAOQv////8Pg358IgkgAUGABhANhUIgiSIPIAFBgAQQDSISfCAPQv////8PgyASQgGGQv7///8fg358IhIgDoVCKIkiDiAJfCAOQv////8PgyAJQgGGQv7///8fg358Igl8IANC/////w+DIAlCAYZC/v///x+DfnwiCIVCIIkiEyABQYADEA0iECABQYABEA0iDHwgDEIBhkL+////H4MgEEL/////D4N+fCIMIAFBgAcQDYVCIIkiESABQYAFEA0iDXwgEUL/////D4MgDUIBhkL+////H4N+fCINIBCFQiiJIhAgDHwgEEL/////D4MgDEIBhkL+////H4N+fCIMIBGFQjCJIhEgDXwgEUL/////D4MgDUIBhkL+////H4N+fCINfCATQv////8PgyANQgGGQv7///8fg358IhQgA4VCKIkiAyAIfCADQv////8PgyAIQgGGQv7///8fg358IggQDCABQYgHIAggE4VCMIkiCBAMIAFBgAUgCCAUfCAIQv////8PgyAUQgGGQv7///8fg358IggQDCABQYgCIAMgCIVCAYkQDCABQYAGIA0gEIVCAYkiAyAGfCADQv////8PgyAGQgGGQv7///8fg358IgYgCSAPhUIwiSIJhUIgiSIPIAQgB3wgBEL/////D4MgB0IBhkL+////H4N+fCIEfCAPQv////8PgyAEQgGGQv7///8fg358IgcgA4VCKIkiAyAGfCADQv////8PgyAGQgGGQv7///8fg358IgggD4VCMIkiBhAMIAFBCCAIEAwgAUGIBSAGIAd8IAZC/////w+DIAdCAYZC/v///x+DfnwiBxAMIAFBgAMgAyAHhUIBiRAMIAFBiAYgAiAEhUIBiSICIAx8IAJC/////w+DIAxCAYZC/v///x+DfnwiBCAKhUIgiSIHIAkgEnwgCUL/////D4MgEkIBhkL+////H4N+fCIDfCAHQv////8PgyADQgGGQv7///8fg358IgYgAoVCKIkiAiAEfCACQv////8PgyAEQgGGQv7///8fg358IgogB4VCMIkiBBAMIAFBgAEgChAMIAFBgAQgBCAGfCAEQv////8PgyAGQgGGQv7///8fg358IgQQDCABQYgDIAIgBIVCAYkQDCABQYAHIAUgAyAOhUIBiSICfCAFQgGGQv7///8fgyACQv////8Pg358IgUgEYVCIIkiBCALfCAEQv////8PgyALQgGGQv7///8fg358IgcgAoVCKIkiAiAFfCACQv////8PgyAFQgGGQv7///8fg358IgMgBIVCMIkiBRAMIAFBiAEgAxAMIAFBiAQgBSAHfCAFQv////8PgyAHQgGGQv7///8fg358IgUQDCABQYACIAIgBYVCAYkQDCAWQQFqIhZBCEcNAAsgHCAYQYAQakGACPwKAABBACEWA0AgHCAWQQN0IgFqIhdBACAXQQAQDSAYQYAYaiIeIAFqQQAQDYUQDCAcIAFBCHIiF2oiGkEAIBpBABANIBcgHmpBABANhRAMIBwgAUEQciIXaiIaQQAgGkEAEA0gGEGAGGogF2pBABANhRAMIBwgAUEYciIBaiIXQQAgF0EAEA0gGEGAGGogAWpBABANhRAMIBZBBGoiFkGAAUcNAAsLICFBAWohFiAbQQFqIRsgGUEBaiIZIABBFBAIIhdJDQALCyAYQYAgaiQAC3kCAX8BfiAArUIHfEL4////H4MhAiMBQdCCAmoiAUEAEAgiAEUEQCABQQAjAyIAEAkLAkAgAiAArXwiAkL/////D1gEQCACpyIBPwBBEHRNDQEgARAFDQELIwFB5IQCakEAQTAQCUF/DwsjAUHQggJqQQAgARAJIAALUgEBfyMBQdCCAmoiAigCAEUEQCACIwM2AgALIwFB0IICaigCACAAIAFqIgFBBGpJIAAgAUtyIAFBgAhJcgRAEAAACyABQQNxBEAQAQsgATUCAAtSAQF/IwFB0IICaiICKAIARQRAIAIjAzYCAAsjAUHQggJqKAIAIAAgAWoiAUEEakkgACABS3IgAUGACElyBEAQAAALIAFBA3EEQBABCyABNAIAC/kFAgV/An4jAEHQAGsiAyQAAkAgAgRAQX8hBCAAQdAAakEAEBFQBEAgAEHgAhAWIgVBgQFPBEAgAEHAACAAQcAAEBEiCEKAAXwQECAAQcgAIABByAAQESAIQv9+Vq18EBAgACAAQeAAaiIFECAgAEHgAiAAQeACEBZBgAFrIgQQHiAEQYEBTw0DIAQEQCAFIABB4AFqIAT8CgAACyAAQeACEBYhBQsgAEHAACAAQcAAEBEiCCAFrXwiCRAQIABByAAgAEHIABARIAggCVatfBAQIABB5AIQCwRAIABB2ABCfxAQCyAAQdAAakEAQn8QECAAQeAAaiEGQQAhBEGAAiAFayIHBEAgBSAGakEAIAf8CwALIAAgBhAgIANBACAAQQAQERAMIANBCCAAQQgQERAMIANBECAAQRAQERAMIANBGCAAQRgQERAMIANBICAAQSAQERAMIANBKCAAQSgQERAMIANBMCAAQTAQERAMIANBOCAAQTgQERAMIAIEQCABIAMgAvwKAAALIANBzAAgABAJA0AgA0HMABAIIARqQQBBABAKIANBzAAQCCAEakEBQQAQCiADQcwAEAggBGpBAkEAEAogA0HMABAIIARqQQNBABAKIANBzAAQCCAEQQRyIgBqQQBBABAKIANBzAAQCCAAakEBQQAQCiADQcwAEAggAGpBAkEAEAogA0HMABAIIABqQQNBABAKIARBCGoiBEHAAEcNAAsgA0HMACAGEAlBACEEA0AgA0HMABAIIARqQQBBABAKIANBzAAQCCAEakEBQQAQCiADQcwAEAggBGpBAkEAEAogA0HMABAIIARqQQNBABAKIANBzAAQCCAEQQRyIgBqQQBBABAKIANBzAAQCCAAakEBQQAQCiADQcwAEAggAGpBAkEAEAogA0HMABAIIABqQQNBABAKIARBCGoiBEGAAkcNAAtBACEECyADQdAAaiQAIAQPCxBGAAsjASIAQbOAAmogAEHG/wFqQbICIABBsP8BahAHAAtIAQF/IwFB0IICaiICKAIARQRAIAIjAzYCAAsjAUHQggJqKAIAIAAgAWoiAUECakkgACABS3IgAUGACElyBEAQAAALIAEzAAALyggBA38jAEHAAWsiAiQAIAJBkAFqIgQgARAOIAJB4ABqIgMgBBAOIAMgAxAOIAMgASADEA8gBCAEIAMQDyACQTBqIgEgBBAOIAMgAyABEA8gASADEA4gASABEA4gASABEA4gASABEA4gASABEA4gAyABIAMQDyABIAMQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEgAxAPIAIgARAOIAIgAhAOIAIgAhAOIAIgAhAOIAIgAhAOIAIgAhAOIAIgAhAOIAIgAhAOIAIgAhAOIAIgAhAOIAIgAhAOIAIgAhAOIAIgAhAOIAIgAhAOIAIgAhAOIAIgAhAOIAIgAhAOIAIgAhAOIAIgAhAOIAIgAhAOIAEgAiABEA8gASABEA4gASABEA4gASABEA4gASABEA4gASABEA4gASABEA4gASABEA4gASABEA4gASABEA4gASABEA4gAyABIAMQDyABIAMQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEQDiABIAEgAxAPIAIgARAOQQEhAQNAIAIgAhAOIAFBAWoiAUHkAEcNAAsgAkEwaiIBIAIgARAPIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAEgARAOIAJB4ABqIgMgASADEA8gAyADEA4gAyADEA4gAyADEA4gAyADEA4gAyADEA4gACADIAJBkAFqEA8gAkHAAWokAAuUGgEffyMAQaACayIBJAAgAUHAAWoiAiAAQdAAahAwIAFBkAFqIgQgACACEA8gAUHgAGoiAyAEECEgAUEwQQAQCiABQTAgAUHgABALIAFBMBALchAKIAFBMCABQeEAEAsgAUEwEAtyEAogAUEwIAFB4gAQCyABQTAQC3IQCiABQTAgAUHjABALIAFBMBALchAKIAFBMCABQeQAEAsgAUEwEAtyEAogAUEwIAFB5QAQCyABQTAQC3IQCiABQTAgAUHmABALIAFBMBALchAKIAFBMCABQecAEAsgAUEwEAtyEAogAUEwIAFB6AAQCyABQTAQC3IQCiABQTAgAUHpABALIAFBMBALchAKIAFBMCABQeoAEAsgAUEwEAtyEAogAUEwIAFB6wAQCyABQTAQC3IQCiABQTAgAUHsABALIAFBMBALchAKIAFBMCABQe0AEAsgAUEwEAtyEAogAUEwIAFB7gAQCyABQTAQC3IQCiABQTAgAUHvABALIAFBMBALchAKIAFBMCABQfAAEAsgAUEwEAtyEAogAUEwIAFB8QAQCyABQTAQC3IQCiABQTAgAUHyABALIAFBMBALchAKIAFBMCABQfMAEAsgAUEwEAtyEAogAUEwIAFB9AAQCyABQTAQC3IQCiABQTAgAUH1ABALIAFBMBALchAKIAFBMCABQfYAEAsgAUEwEAtyEAogAUEwIAFB9wAQCyABQTAQC3IQCiABQTAgAUH4ABALIAFBMBALchAKIAFBMCABQfkAEAsgAUEwEAtyEAogAUEwIAFB+gAQCyABQTAQC3IQCiABQTAgAUH7ABALIAFBMBALchAKIAFBMCABQfwAEAsgAUEwEAtyEAogAUEwIAFB/QAQCyABQTAQC3IQCiABQTAgAUH+ABALIAFBMBALchAKIAFBMCABQf8AEAsgAUEwEAtyEAogAUEwEAshDCADIABBKGogAhAPIAFBMGoiAiADECEgAUEAQQAQCiABQQAgAUEwEAsgAUEAEAtyEAogAUEAIAFBMRALIAFBABALchAKIAFBACABQTIQCyABQQAQC3IQCiABQQAgAUEzEAsgAUEAEAtyEAogAUEAIAFBNBALIAFBABALchAKIAFBACABQTUQCyABQQAQC3IQCiABQQAgAUE2EAsgAUEAEAtyEAogAUEAIAFBNxALIAFBABALchAKIAFBACABQTgQCyABQQAQC3IQCiABQQAgAUE5EAsgAUEAEAtyEAogAUEAIAFBOhALIAFBABALchAKIAFBACABQTsQCyABQQAQC3IQCiABQQAgAUE8EAsgAUEAEAtyEAogAUEAIAFBPRALIAFBABALchAKIAFBACABQT4QCyABQQAQC3IQCiABQQAgAUE/EAsgAUEAEAtyEAogAUEAIAFBwAAQCyABQQAQC3IQCiABQQAgAUHBABALIAFBABALchAKIAFBACABQcIAEAsgAUEAEAtyEAogAUEAIAFBwwAQCyABQQAQC3IQCiABQQAgAUHEABALIAFBABALchAKIAFBACABQcUAEAsgAUEAEAtyEAogAUEAIAFBxgAQCyABQQAQC3IQCiABQQAgAUHHABALIAFBABALchAKIAFBACABQcgAEAsgAUEAEAtyEAogAUEAIAFByQAQCyABQQAQC3IQCiABQQAgAUHKABALIAFBABALchAKIAFBACABQcsAEAsgAUEAEAtyEAogAUEAIAFBzAAQCyABQQAQC3IQCiABQQAgAUHNABALIAFBABALchAKIAFBACABQc4AEAsgAUEAEAtyEAogAUEAIAFBzwAQCyABQQAQC3IQCiABQQAQCyENIABBABAIIQ4gAEEEEAghDyAAQQgQCCEQIABBDBAIIREgAEEQEAghEiAAQRQQCCETIABBGBAIIRQgAEEcEAghFSAAQSAQCCEWIABBJBAIIRcgAiADIwFB8AZqEA8gAUGQARAIIQMgAUEwEAghACABQZQBEAghBSABQTQQCCECIAFBmAEQCCEYIAFBOBAIIQQgAUGcARAIIRkgAUE8EAghBiABQaABEAghGiABQcAAEAghByABQaQBEAghGyABQcQAEAghCCABQagBEAghHCABQcgAEAghCSABQawBEAghHSABQcwAEAghCiABQbABEAghHiABQdAAEAghCyABQSQgAUHUABAIIh8gAUG0ARAIaxAJIAFBICALIB5rEAkgAUEcIAogHWsQCSABQRggCSAcaxAJIAFBFCAIIBtrEAkgAUEQIAcgGmsQCSABQQwgBiAZaxAJIAFBCCAEIBhrEAkgAUEEIAIgBWsQCSABQQAgACADaxAJIAFB8AFqIgUgARAhIAFBnwJBABAKIAFBnwIgAUHwARALIAFBnwIQC3IQCiABQZ8CIAFB8QEQCyABQZ8CEAtyEAogAUGfAiABQfIBEAsgAUGfAhALchAKIAFBnwIgAUHzARALIAFBnwIQC3IQCiABQZ8CIAFB9AEQCyABQZ8CEAtyEAogAUGfAiABQfUBEAsgAUGfAhALchAKIAFBnwIgAUH2ARALIAFBnwIQC3IQCiABQZ8CIAFB9wEQCyABQZ8CEAtyEAogAUGfAiABQfgBEAsgAUGfAhALchAKIAFBnwIgAUH5ARALIAFBnwIQC3IQCiABQZ8CIAFB+gEQCyABQZ8CEAtyEAogAUGfAiABQfsBEAsgAUGfAhALchAKIAFBnwIgAUH8ARALIAFBnwIQC3IQCiABQZ8CIAFB/QEQCyABQZ8CEAtyEAogAUGfAiABQf4BEAsgAUGfAhALchAKIAFBnwIgAUH/ARALIAFBnwIQC3IQCiABQZ8CIAFBgAIQCyABQZ8CEAtyEAogAUGfAiABQYECEAsgAUGfAhALchAKIAFBnwIgAUGCAhALIAFBnwIQC3IQCiABQZ8CIAFBgwIQCyABQZ8CEAtyEAogAUGfAiABQYQCEAsgAUGfAhALchAKIAFBnwIgAUGFAhALIAFBnwIQC3IQCiABQZ8CIAFBhgIQCyABQZ8CEAtyEAogAUGfAiABQYcCEAsgAUGfAhALchAKIAFBnwIgAUGIAhALIAFBnwIQC3IQCiABQZ8CIAFBiQIQCyABQZ8CEAtyEAogAUGfAiABQYoCEAsgAUGfAhALchAKIAFBnwIgAUGLAhALIAFBnwIQC3IQCiABQZ8CIAFBjAIQCyABQZ8CEAtyEAogAUGfAiABQY0CEAsgAUGfAhALchAKIAFBnwIgAUGOAhALIAFBnwIQC3IQCiABQZ8CIAFBjwIQCyABQZ8CEAtyEAogAUGfAhALIQMgAUEkIBcgH2oQCSABQSAgCyAWahAJIAFBHCAKIBVqEAkgAUEYIAkgFGoQCSABQRQgCCATahAJIAFBECAHIBJqEAkgAUEMIAYgEWoQCSABQQggBCAQahAJIAFBBCACIA9qEAkgAUEAIAAgDmoQCSAFIAEQISABQZ8CQQAQCiABQZ8CIAFB8AEQCyABQZ8CEAtyEAogAUGfAiABQfEBEAsgAUGfAhALchAKIAFBnwIgAUHyARALIAFBnwIQC3IQCiABQZ8CIAFB8wEQCyABQZ8CEAtyEAogAUGfAiABQfQBEAsgAUGfAhALchAKIAFBnwIgAUH1ARALIAFBnwIQC3IQCiABQZ8CIAFB9gEQCyABQZ8CEAtyEAogAUGfAiABQfcBEAsgAUGfAhALchAKIAFBnwIgAUH4ARALIAFBnwIQC3IQCiABQZ8CIAFB+QEQCyABQZ8CEAtyEAogAUGfAiABQfoBEAsgAUGfAhALchAKIAFBnwIgAUH7ARALIAFBnwIQC3IQCiABQZ8CIAFB/AEQCyABQZ8CEAtyEAogAUGfAiABQf0BEAsgAUGfAhALchAKIAFBnwIgAUH+ARALIAFBnwIQC3IQCiABQZ8CIAFB/wEQCyABQZ8CEAtyEAogAUGfAiABQYACEAsgAUGfAhALchAKIAFBnwIgAUGBAhALIAFBnwIQC3IQCiABQZ8CIAFBggIQCyABQZ8CEAtyEAogAUGfAiABQYMCEAsgAUGfAhALchAKIAFBnwIgAUGEAhALIAFBnwIQC3IQCiABQZ8CIAFBhQIQCyABQZ8CEAtyEAogAUGfAiABQYYCEAsgAUGfAhALchAKIAFBnwIgAUGHAhALIAFBnwIQC3IQCiABQZ8CIAFBiAIQCyABQZ8CEAtyEAogAUGfAiABQYkCEAsgAUGfAhALchAKIAFBnwIg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CElyBEAQAAALIAEgAj4AAAtSAQF/IwFB0IICaiICKAIARQRAIAIjAzYCAAsjAUHQggJqKAIAIAAgAWoiAUECakkgACABS3IgAUGACElyBEAQAAALIAFBAXEEQBABCyABMwEAC5caAhN+BX8jAEGAEGsiGCQAIBhBgAhqIAFBgAj8CgAAQQAhAQNAIAFBA3QiFiAYQYAIaiIaaiIXQQAgF0EAEA0gACAWakEAEA2FEAwgGiAWQQhyIhdqIhlBACAZQQAQDSAAIBdqQQAQDYUQDCAaIBZBEHIiF2oiGUEAIBlBABANIAAgF2pBABANhRAMIBogFkEYciIWaiIXQQAgF0EAEA0gACAWakEAEA2FEAwgAUEEaiIBQYABRw0ACyAYIBpBgAj8CgAAQQAhAEEAIQEDQCAYIAFBA3QiFmoiF0EAIBdBABANIAIgFmpBABANhRAMIBggFkEIciIXaiIZQQAgGUEAEA0gAiAXakEAEA2FEAwgGCAWQRByIhdqIhlBACAZQQAQDSACIBdqQQAQDYUQDCAYIBZBGHIiFmoiF0EAIBdBABANIAIgFmpBABANhRAMIAFBBGoiAUGAAUcNAAsDQCAYQYAIaiAAQQd0aiIBQQAgAUE4EA0iBSABQRgQDSIHfCAHQgGGQv7///8fgyAFQv////8Pg358IgcgAUH4ABANhUIgiSIEIAFB2AAQDSIGfCAGQgGGQv7///8fgyAEQv////8Pg358IgYgBYVCKIkiBSAHfCAFQv////8PgyAHQgGGQv7///8fg358IgcgBIVCMIkiBCABQSgQDSIDIAFBCBANIgh8IAhCAYZC/v///x+DIANC/////w+DfnwiCCABQegAEA2FQiCJIgsgAUHIABANIgx8IAxCAYZC/v///x+DIAtC/////w+DfnwiDCADhUIoiSIDIAh8IANC/////w+DIAhCAYZC/v///x+DfnwiCCALhUIwiSILIAx8IAtC/////w+DIAxCAYZC/v///x+DfnwiDCADhUIBiSIDIAFBIBANIg8gAUEAEA0iCnwgCkIBhkL+////H4MgD0L/////D4N+fCIKIAFB4AAQDYVCIIkiECABQcAAEA0iE3wgE0IBhkL+////H4MgEEL/////D4N+fCITIA+FQiiJIg8gCnwgD0L/////D4MgCkIBhkL+////H4N+fCIKfCADQv////8PgyAKQgGGQv7///8fg358IgmFQiCJIhQgAUEwEA0iESABQRAQDSINfCANQgGGQv7///8fgyARQv////8Pg358Ig0gAUHwABANhUIgiSISIAFB0AAQDSIOfCAOQgGGQv7///8fgyASQv////8Pg358Ig4gEYVCKIkiESANfCARQv////8PgyANQgGGQv7///8fg358Ig0gEoVCMIkiEiAOfCASQv////8PgyAOQgGGQv7///8fg358Ig58IBRC/////w+DIA5CAYZC/v///x+DfnwiFSADhUIoiSIDIAl8IANC/////w+DIAlCAYZC/v///x+DfnwiCRAMIAFB+AAgCSAUhUIwiSIJEAwgAUHQACAJIBV8IAlC/////w+DIBVCAYZC/v///x+DfnwiCRAMIAFBKCADIAmFQgGJEAwgAUHgACAEIAZ8IARC/////w+DIAZCAYZC/v///x+DfnwiBCAOIBGFQgGJIgYgCHwgBkL/////D4MgCEIBhkL+////H4N+fCIDIAogEIVCMIkiCIVCIIkiCnwgBEIBhkL+////H4MgCkL/////D4N+fCIQIAaFQiiJIgYgA3wgBkL/////D4MgA0IBhkL+////H4N+fCIJIAqFQjCJIgMQDCABQQggCRAMIAFB2AAgAyAQfCADQv////8PgyAQQgGGQv7///8fg358IgMQDCABQTAgAyAGhUIBiRAMIAFB6AAgBCAFhUIBiSIFIA18IAVC/////w+DIA1CAYZC/v///x+DfnwiBCALhUIgiSIGIAggE3wgCEL/////D4MgE0IBhkL+////H4N+fCIDfCAGQv////8PgyADQgGGQv7///8fg358IgggBYVCKIkiBSAEfCAFQv////8PgyAEQgGGQv7///8fg358IgsgBoVCMIkiBBAMIAFBECALEAwgAUHAACAEIAh8IARC/////w+DIAhCAYZC/v///x+DfnwiBBAMIAFBOCAEIAWFQgGJEAwgAUHwACAHIAMgD4VCAYkiBXwgB0IBhkL+////H4MgBUL/////D4N+fCIHIBKFQiCJIgQgDHwgBEL/////D4MgDEIBhkL+////H4N+fCIGIAWFQiiJIgUgB3wgBUL/////D4MgB0IBhkL+////H4N+fCIDIASFQjCJIgcQDCABQRggAxAMIAFByAAgBiAHfCAHQv////8PgyAGQgGGQv7///8fg358IgcQDCABQSAgBSAHhUIBiRAMIABBAWoiAEEIRw0AC0EAIQADQCAYQYAIaiAAQQR0aiIBQQAgAUGIAxANIgUgAUGIARANIgd8IAdCAYZC/v///x+DIAVC/////w+DfnwiByABQYgHEA2FQiCJIgQgAUGIBRANIgZ8IAZCAYZC/v///x+DIARC/////w+DfnwiBiAFhUIoiSIFIAd8IAVC/////w+DIAdCAYZC/v///x+DfnwiByAEhUIwiSIEIAFBiAIQDSIDIAFBCBANIgh8IAhCAYZC/v///x+DIANC/////w+DfnwiCCABQYgGEA2FQiCJIgsgAUGIBBANIgx8IAxCAYZC/v///x+DIAtC/////w+DfnwiDCADhUIoiSIDIAh8IANC/////w+DIAhCAYZC/v///x+DfnwiCCALhUIwiSILIAx8IAtC/////w+DIAxCAYZC/v///x+DfnwiDCADhUIBiSIDIAFBgAIQDSIPIAFBABANIgp8IApCAYZC/v///x+DIA9C/////w+DfnwiCiABQYAGEA2FQiCJIhAgAUGABBANIhN8IBNCAYZC/v///x+DIBBC/////w+DfnwiEyAPhUIoiSIPIAp8IA9C/////w+DIApCAYZC/v///x+DfnwiCnwgA0L/////D4MgCkIBhkL+////H4N+fCIJhUIgiSIUIAFBgAMQDSIRIAFBgAEQDSINfCANQgGGQv7///8fgyARQv////8Pg358Ig0gAUGABxANhUIgiSISIAFBgAUQDSIOfCAOQgGGQv7///8fgyASQv////8Pg358Ig4gEYVCKIkiESANfCARQv////8PgyANQgGGQv7///8fg358Ig0gEoVCMIkiEiAOfCASQv////8PgyAOQgGGQv7///8fg358Ig58IBRC/////w+DIA5CAYZC/v///x+DfnwiFSADhUIoiSIDIAl8IANC/////w+DIAlCAYZC/v///x+DfnwiCRAMIAFBiAcgCSAUhUIwiSIJEAwgAUGABSAJIBV8IAlC/////w+DIBVCAYZC/v///x+DfnwiCRAMIAFBiAIgAyAJhUIBiRAMIAFBgAYgBCAGfCAEQv////8PgyAGQgGGQv7///8fg358IgQgDiARhUIBiSIGIAh8IAZC/////w+DIAhCAYZC/v///x+DfnwiAyAKIBCFQjCJIgiFQiCJIgp8IARCAYZC/v///x+DIApC/////w+DfnwiECAGhUIoiSIGIAN8IAZC/////w+DIANCAYZC/v///x+DfnwiCSAKhUIwiSIDEAwgAUEIIAkQDCABQYgFIAMgEHwgA0L/////D4MgEEIBhkL+////H4N+fCIDEAwgAUGAAyADIAaFQgGJEAwgAUGIBiAEIAWFQgGJIgUgDXwgBUL/////D4MgDUIBhkL+////H4N+fCIEIAuFQiCJIgYgCCATfCAIQv////8PgyATQgGGQv7///8fg358IgN8IAZC/////w+DIANCAYZC/v///x+DfnwiCCAFhUIoiSIFIAR8IAVC/////w+DIARCAYZC/v///x+DfnwiCyAGhUIwiSIEEAwgAUGAASALEAwgAUGABCAEIAh8IARC/////w+DIAhCAYZC/v///x+DfnwiBBAMIAFBiAMgBCAFhUIBiRAMIAFBgAcgByADIA+FQgGJIgV8IAdCAYZC/v///x+DIAVC/////w+DfnwiByAShUIgiSIEIAx8IARC/////w+DIAxCAYZC/v///x+DfnwiBiAFhUIoiSIFIAd8IAVC/////w+DIAdCAYZC/v///x+DfnwiAyAEhUIwiSIHEAwgAUGIASADEAwgAUGIBCAGIAd8IAdC/////w+DIAZCAYZC/v///x+DfnwiBxAMIAFBgAIgBSAHhUIBiRAMIABBAWoiAEEIRw0ACyACIBhBgAj8CgAAQQAhAANAIAIgAEEDdCIBaiIWQQAgFkEAEA0gGEGACGoiGSABakEAEA2FEAwgAiABQQhyIhZqIhdBACAXQQAQDSAWIBlqQQAQDYUQDCACIAFBEHIiFmoiF0EAIBdBABANIBhBgAhqIBZqQQAQDYUQDCACIAFBGHIiAWoiFkEAIBZBABANIBhBgAhqIAFqQQAQDYUQDCAAQQRqIgBBgAFHDQALIBhBgBBqJAALuAQCDn4Kf0EAQYCAgAggAEHQABALGyEWIABBBBAIIhdBBWytIQ8gAEEIEAgiGEEFbK0hDSAAQQwQCCIZQQVsrSELIABBEBAIIhpBBWytIQkgAEEAECwhCCAAQSQQCCESIABBIBAIIRMgAEEcEAghFCAAQRgQCCEVIABBFBAIIREgGq0hECAZrSEOIBitIQwgF60h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AiAFayIDrSILWA0AIAMEQCAHIAIgA/wKAAALIARB4AMgBEHgAxAIIANqEAkgBEHAASAEQcABEA0iDEKAAXwQDCAEQcgBIARByAEQDSAMQv9+Vq18EAwgBEGAAWogBhAgIAYgCEGAAfwKAAAgBEHgAyAEQeADEAhBgAFrIgUQCSACIANqIQIgCiALfSEKDAELCyAKpyIDBEAgByACIAP8CgAACyAEQeADIARB4AMQCCADahAJIARBgAFqIAAgARAuGgwBCyAEQcABakEAQaUC/AsAIARBuAFC+cL4m5Gjs/DbABAMIARBsAFC6/qG2r+19sEfEAwgBEGoAUKf2PnZwpHagpt/EAwgBEGgAULRhZrv+s+Uh9EAEAwgBEGYAULx7fT4paf9p6V/EAwgBEGQAUKr8NP0r+68tzwQDCAEQYgBQrvOqqbY0Ouzu38QDCAEQYABQsiS95X/zPmE6gAQDCAEQeABIARB/AAQCBAJIARB4AMgBEHgAxAIQQRqIgUQCSADrSEKIARB4AJqIQggBEHgAWohBgNAAkAgBSAGaiEHIApBgAIgBWsiA60iC1gNACADBEAgByACIAP8CgAACyAEQeADIARB4AMQCCADahAJIARBwAEgBEHAARANIgxCgAF8EAwgBEHIASAEQcgBEA0gDEL/flatfBAMIARBgAFqIAYQICAGIAhBgAH8CgAAIARB4AMgBEHgAxAIQYABayIFEAkgAiADaiECIAogC30hCgwBCwsgCqciAwRAIAcgAiAD/AoAAAsgBEHgAyAEQeADEAggA2oQCSAEQYABaiAEQTBqQcAAEC5BAEgNACAAQQAgBEEwEA0QECAAQQhqQQAgBEE4EA0QECAAQRhqQQAgBEHIAGoiA0EAEA0QECAAQRBqQQAgBEFAayIGQQAQDRAQIABBIGohAiABQSBrIgVBwQBPBEAgBEHgBGohACAEQcAEaiEBA0AgAUEAQaUC/AsAIARBuARC+cL4m5Gjs/DbABAMIARBqARCn9j52cKR2oKbfxAMIARBoARC0YWa7/rPlIfRABAMIARBmARC8e30+KWn/aelfxAMIARBiARCu86qptjQ67O7fxAMIARBgARCyJL3lf/M+YTqABAMIABBCGpBACAEQTgQDRAMIABBGGpBACADQQAQDRAMIABBKGpBACAEQdgAakEAEA0QDCAAQThqQQAgBEHoAGpBABANEAwgBEGwBELr+obav7X2wR8QDCAEQZAEQqvw0/Sv7ry3PBAMIABBMGpBACAEQeAAakEAEA0QDCAAQSBqQQAgBEHQAGpBABANEAwgAEEQakEAIAZBABANEAwgAEEAIARBMBANEAwgBEHgBkHAABAJIARBgARqIARBMGpBwAAQLhogAkEYakEAIANBABANEBAgAkEQakEAIAZBABANEBAgAkEIakEAIARBOBANEBAgAkEAIARBMBANEBAgAkEgaiECIAVBIGsiBUHAAEsNAAsLIARBwARqQQBBpQL8CwAgBEHoBGpBACAEQTgQDRAMIARB8ARqQQAgBEFAa0EAEA0QDCAEQfgEakEAIARByABqQQAQDRAMIARBgAVqQQAgBEHQAGpBABANEAwgBEGIBWpBACAEQdgAakEAEA0QDCAEQZAFakEAIARB4ABqQQAQDRAMIARBmAVqQQAgBEHoAGpBABANEAwgBEG4BEL5wvibkaOz8NsAEAwgBEGwBELr+obav7X2wR8QDCAEQagEQp/Y+dnCkdqCm38QDCAEQaAEQtGFmu/6z5SH0QAQDCAEQZgEQvHt9Pilp/2npX8QDCAEQZAEQqvw0/Sv7ry3PBAMIARBiARCu86qptjQ67O7fxAMIARBgAQgBa1CiJL3lf/M+YTqAIUQDCAEQeAEIARBMBANEAwgBEHgBkHAABAJIARBgARqIARBMGoiACAFEC4aIAVFDQAgAiAAIAX8CgAACyAEQYAEIARBgAFqEAlBACEDA0AgBEGABBAIIANqQQBBABAKIARBgAQQCCADakEBQQAQCiAEQYAEEAggA2pBAkEAEAogBEGABBAIIANqQQNBABAKIARBgAQQCCADQQRyIgBqQQBBABAKIARBgAQQCCAAakEBQQAQCiAEQYAEEAggAGpBAkEAEAogBEGABBAIIABqQQNBABAKIANBCGoiA0GAA0cNAAskAAv7CQE3fyMAIABBPBAIIR0gAEE4EAghHiAAQTQQCCESIABBMBAIIRMgAEEsEAghHyAAQSgQCCEgIABBJBAIISEgAEEgEAghIiAAQRwQCCEjIABBGBAIISQgAEEUEAghJSAAQRAQCCEmIABBDBAIIScgAEEIEAghKCAAQQQQCCEpIABBABAIISpBQGoiCUE4aiEsIAlBMGohLSAJQShqIS4g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CCIFIA9rEAkgAkHIACACQfgAEAgiEiAOaxAJIAJBxAAgAkH0ABAIIhMgDWsQCSACQcAAIAJB8AAQCCIUIAxrEAkgAkE8IAJB7AAQCCIVIAtrEAkgAkE4IAJB6AAQCCIWIAprEAkgAkE0IAJB5AAQCCIXIAlrEAkgAkEwIAJB4AAQCCIYIAhrEAkgAiACQTBqECEgAkGgAkEAEAogAkGgAiACQQAQCyACQaACEAtyEAogAkGgAiACQQEQCyACQaACEAtyEAogAkGgAiACQQIQCyACQaACEAtyEAogAkGgAiACQQMQCyACQaACEAtyEAogAkGgAiACQQQQCyACQaACEAtyEAogAkGgAiACQQUQCyACQaACEAtyEAogAkGgAiACQQYQCyACQaACEAtyEAogAkGgAiACQQcQCyACQaACEAtyEAogAkGgAiACQQgQCyACQaACEAtyEAogAkGgAiACQQkQCyACQaACEAtyEAogAkGgAiACQQoQCyACQaACEAtyEAogAkGgAiACQQsQCyACQaACEAtyEAogAkGgAiACQQwQCyACQaACEAtyEAogAkGgAiACQQ0QCyACQaACEAtyEAogAkGgAiACQQ4QCyACQaACEAtyEAogAkGgAiACQQ8QCyACQaACEAtyEAogAkGgAiACQRAQCyACQaACEAtyEAogAkGgAiACQREQCyACQaACEAtyEAogAkGgAiACQRIQCyACQaACEAtyEAogAkGgAiACQRMQCyACQaACEAtyEAogAkGgAiACQRQQCyACQaACEAtyEAogAkGgAiACQRUQCyACQaACEAtyEAogAkGgAiACQRYQCyACQaACEAtyEAogAkGgAiACQRcQCyACQaACEAtyEAogAkGgAiACQRgQCyACQaACEAtyEAogAkGgAiACQRkQCyACQaACEAtyEAogAkGgAiACQRoQCyACQaACEAtyEAogAkGgAiACQRsQCyACQaACEAtyEAogAkGgAiACQRwQCyACQaACEAtyEAogAkGgAiACQR0QCyACQaACEAtyEAogAkGgAiACQR4QCyACQaACEAtyEAogAkGgAiACQR8QCyACQaACEAtyEAoCQCACQaACEAtBAWtBgAJxRQRAIAJBJCAEIBFqEAkgAkEgIAMgEGoQCSACQRwgBSAPahAJIAJBGCAOIBJqEAkgAkEUIA0gE2oQCSACQRAgDCAUahAJIAJBDCALIBVqEAkgAkEIIAogFmoQCSACQQQgCSAXahAJIAJBACAIIBhqEAkgAkGgAmogAhAhIAJBzwJBABAKIAJBzwIgAkGgAhALIAJBzwIQC3IQCiACQc8CIAJBoQIQCyACQc8CEAtyEAogAkHPAiACQaICEAsgAkHPAhALchAKIAJBzwIgAkGjAhALIAJBzwIQC3IQCiACQc8CIAJBpAIQCyACQc8CEAtyEAogAkHPAiACQaUCEAsgAkHPAhALchAKIAJBzwIgAkGmAhALIAJBzwIQC3IQCiACQc8CIAJBpwIQCyACQc8CEAtyEAogAkHPAiACQagCEAsgAkHPAhALchAKIAJBzwIgAkGpAhALIAJBzwIQC3IQCiACQc8CIAJBqgIQCyACQc8CEAtyEAogAkHPAiACQasCEAsgAkHPAhALchAKIAJBzwIgAkGsAhALIAJBzwIQC3IQCiACQc8CIAJBrQIQCyACQc8CEAtyEAogAkHPAiACQa4CEAsgAkHPAhALchAKIAJBzwIgAkGvAhALIAJBzwIQC3IQCiACQc8CIAJBsAIQCyACQc8CEAtyEAogAkHPAiACQbECEAsgAkHPAhALchAKIAJBzwIgAkGyAhALIAJBzwIQC3IQCiACQc8CIAJBswIQCyACQc8CEAtyEAogAkHPAiACQbQCEAsgAkHPAhALchAKIAJBzwIgAkG1AhALIAJBzwIQC3IQCiACQc8CIAJBtgIQCyACQc8CEAtyEAogAkHPAiACQbcCEAsgAkHPAhALchAKIAJBzwIgAkG4AhALIAJBzwIQC3IQCiACQc8CIAJBuQIQCyACQc8CEAtyEAogAkHPAiACQboCEAsgAkHPAhALchAKIAJBzwIgAkG7AhALIAJBzwIQC3IQCiACQc8CIAJBvAIQCyACQc8CEAtyEAogAkHPAiACQb0CEAsgAkHPAhALchAKIAJBzwIgAkG+AhALIAJBzwIQC3IQCiACQc8CIAJBvwIQCyACQc8CEAtyEAogAkHPAhALQQFrQYACcUUNASAAIAAjAUHwBmoQDwsgAkGgAmogABAhIAJBoAIQC0EBcSABQR8QC0EHdkYEQCAAQSRBACAAQSQQCGsQCSAAQSBBACAAQSAQCGsQCSAAQRxBACAAQRwQCGsQCSAAQRhBACAAQRgQCGsQCSAAQRRBACAAQRQQCGsQCSAAQRBBACAAQRAQCGsQCSAAQQxBACAAQQwQCGsQCSAAQQhBACAAQQgQCGsQCSAAQQRBACAAQQQQCGsQCSAAQQBBACAAQQAQCGsQCQsgAEH4AGogACAGEA9BACEHCyACQdACaiQAIAcLrggBA38jAEGQAWsiAyQAIANB4ABqIgQgARAOIANBMGoiAiAEEA4gAiACEA4gAiABIAIQDyAEIAQgAhAPIAQgBBAOIAQgAiAEEA8gAiAEEA4gAiACEA4gAiACEA4gAiACEA4gAiACEA4gBCACIAQQDyACIAQQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIgBBAPIAMgAhAOIAMgAxAOIAMgAxAOIAMgAxAOIAMgAxAOIAMgAxAOIAMgAxAOIAMgAxAOIAMgAxAOIAMgAxAOIAMgAxAOIAMgAxAOIAMgAxAOIAMgAxAOIAMgAxAOIAMgAxAOIAMgAxAOIAMgAxAOIAMgAxAOIAMgAxAOIAIgAyACEA8gAiACEA4gAiACEA4gAiACEA4gAiACEA4gAiACEA4gAiACEA4gAiACEA4gAiACEA4gAiACEA4gAiACEA4gBCACIAQQDyACIAQQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIQDiACIAIgBBAPIAMgAhAOQQEhAgNAIAMgAxAOIAJBAWoiAkHkAEcNAAsgA0EwaiICIAMgAhAPIAIgAhAOIAIgAhAOIAIgAhAOIAIgAhAOIAIgAhAOIAIgAhAOIAIgAhAOIAIgAhAOIAIg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CSAFQQQgBUGEARAIIhwgBGsQCSAFQQAgBUGAARAIIh0gC2sQCSAFQaQGIBEgEmoQCSAFQaAGIBAgE2oQCSAFQZwGIA8gFGoQCSAFQZgGIA4gFWoQCSAFQZQGIA0gFmoQCSAFQZAGIAwgF2oQCSAFQYwGIAggGGoQCSAFQYgGIAYgGWoQCSAFQYQGIAQgHGoQCSAFQYAGIAsgHWoQCSAFQZAIaiIEIAUQISAFQcAIQQAQCiAFQcAIIAVBkAgQCyAFQcAIEAtyEAogBUHACCAFQZEIEAsgBUHACBALchAKIAVBwAggBUGSCBALIAVBwAgQC3IQCiAFQcAIIAVBkwgQCyAFQcAIEAtyEAogBUHACCAFQZQIEAsgBUHACBALchAKIAVBwAggBUGVCBALIAVBwAgQC3IQCiAFQcAIIAVBlggQCyAFQcAIEAtyEAogBUHACCAFQZcIEAsgBUHACBALchAKIAVBwAggBUGYCBALIAVBwAgQC3IQCiAFQcAIIAVBmQgQCyAFQcAIEAtyEAogBUHACCAFQZoIEAsgBUHACBALchAKIAVBwAggBUGbCBALIAVBwAgQC3IQCiAFQcAIIAVBnAgQCyAFQcAIEAtyEAogBUHACCAFQZ0IEAsgBUHACBALchAKIAVBwAggBUGeCBALIAVBwAgQC3IQCiAFQcAIIAVBnwgQCyAFQcAIEAtyEAogBUHACCAFQaAIEAsgBUHACBALchAKIAVBwAggBUGhCBALIAVBwAgQC3IQCiAFQcAIIAVBoggQCyAFQcAIEAtyEAogBUHACCAFQaMIEAsgBUHACBALchAKIAVBwAggBUGkCBALIAVBwAgQC3IQCiAFQcAIIAVBpQgQCyAFQcAIEAtyEAogBUHACCAFQaYIEAsgBUHACBALchAKIAVBwAggBUGnCBALIAVBwAgQC3IQCiAFQcAIIAVBqAgQCyAFQcAIEAtyEAogBUHACCAFQakIEAsgBUHACBALchAKIAVBwAggBUGqCBALIAVBwAgQC3IQCiAFQcAIIAVBqwgQCyAFQcAIEAtyEAogBUHACCAFQawIEAsgBUHACBALchAKIAVBwAggBUGtCBALIAVBwAgQC3IQCiAFQcAIIAVBrggQCyAFQcAIEAtyEAogBUHACCAFQa8IEAsgBUHACBALchAKIAVBwAgQCyEGIAQgBUGABmoiCxAhIAVBwAhBABAKIAVBwAggBUGQCBALIAVBwAgQC3IQCiAFQcAIIAVBkQgQCyAFQcAIEAtyEAogBUHACCAFQZIIEAsgBUHACBALchAKIAVBwAggBUGTCBALIAVBwAgQC3IQCiAFQcAIIAVBlAgQCyAFQcAIEAtyEAogBUHACCAFQZUIEAsgBUHACBALchAKIAVBwAggBUGWCBALIAVBwAgQC3IQCiAFQcAIIAVBlwgQCyAFQcAIEAtyEAogBUHACCAFQZgIEAsgBUHACBALchAKIAVBwAggBUGZCBALIAVBwAgQC3IQCiAFQcAIIAVBmggQCyAFQcAIEAtyEAogBUHACCAFQZsIEAsgBUHACBALchAKIAVBwAggBUGcCBALIAVBwAgQC3IQCiAFQcAIIAVBnQgQCyAFQcAIEAtyEAogBUHACCAFQZ4IEAsgBUHACBALchAKIAVBwAggBUGfCBALIAVBwAgQC3IQCiAFQcAIIAVBoAgQCyAFQcAIEAtyEAogBUHACCAFQaEIEAsgBUHACBALchAKIAVBwAggBUGiCBALIAVBwAgQC3IQCiAFQcAIIAVBowgQCyAFQcAIEAtyEAogBUHACCAFQaQIEAsgBUHACBALchAKIAVBwAggBUGlCBALIAVBwAgQC3IQCiAFQcAIIAVBpggQCyAFQcAIEAtyEAogBUHACCAFQacIEAsgBUHACBALchAKIAVBwAggBUGoCBALIAVBwAgQC3IQCiAFQcAIIAVBqQgQCyAFQcAIEAtyEAogBUHACCAFQaoIEAsgBUHACBALchAKIAVBwAggBUGrCBALIAVBwAgQC3IQCiAFQcAIIAVBrAgQCyAFQcAIEAtyEAogBUHACCAFQa0IEAsgBUHACBALchAKIAVBwAggBUGuCBALIAVBwAgQC3IQCiAFQcAIIAVBrwgQCyAFQcAIEAtyEAogBUHACBALIAQgHiAbQfAGahAPIAVBsAgQCCEVIAVB4AMQCCETIAVBrAgQCCEWIAVB3AMQCCESIAVBqAgQCCEXIAVB2AMQCCERIAVBpAgQCCEYIAVB1AMQCCEQIAVBoAgQCCEZIAVB0AMQCCEPIAVBnAgQCCEcIAVBzAMQCCEOIAVBmAgQCCEdIAVByAMQCCENIAVBlAgQCCEjIAVBxAMQCCEMIAVBkAgQCCEkIAVBwAMQCCEIIAVB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QcQCEAghKSAEQcACEAghKiAEQegCEAghAyAEQZADEAghCCAEQewCEAghDCAEQZQDEAghDSAEQfACEAghDiAEQZgDEAghDyAEQfQCEAghECAEQZwDEAghESAEQfgCEAghEiAEQaADEAghEyAEQfwCEAghGiAEQaQDEAghGyAEQYADEAghFCAEQagDEAghFSAEQYQDEAghFiAEQawDEAghFyAEQYgDEAghGCAEQbADEAghGSAEQYwDIARBjAMQCCIrIARBtAMQCCIsahAJIARBiAMgGCAZahAJIARBhAMgFiAXahAJIARBgAMgFCAVahAJIARB/AIgGiAbahAJIARB+AIgEiATahAJIARB9AIgECARahAJIARB8AIgDiAPahAJIARB7AIgDCANahAJIARB6AIgAyAIahAJIARB5AIgLCAraxAJIARB4AIgGSAYaxAJIARB3AIgFyAWaxAJIARB2AIgFSAUaxAJIARB1AIgGyAaaxAJIARB0AIgEyASaxAJIARBzAIgESAQaxAJIARByAIgDyAOaxAJIARBxAIgDSAMaxAJIARBwAIgCCADaxAJIARBkAMgKkEBdCIDIARBuAMQCCIIaxAJIARBlAMgKUEBdCIMIARBvAMQCCINaxAJIARBmAMgKEEBdCIOIARBwAMQCCIPaxAJIARBnAMgJ0EBdCIQIARBxAMQCCIRaxAJIARBoAMgJkEBdCISIARByAMQCCITaxAJIARBpAMgJUEBdCIaIARBzAMQCCIbaxAJIARBqAMgIkEBdCIUIARB0AMQCCIVaxAJIARBrAMgIUEBdCIWIARB1AMQCCIXaxAJIARBsAMgHUEBdCIYIARB2AMQCCIZaxAJIARBtAMgHEEBdCIcIARB3AMQCCIdaxAJIARBuAMgAyAIahAJIARBvAMgDCANahAJIARBwAMgDiAPahAJIARBxAMgECARahAJIARByAMgEiATahAJIARBzAMgGiAbahAJIARB0AMgFCAVahAJIARB1AMgFiAXahAJIARB2AMgGCAZahAJIARB3AMgHCAdahAJCwJAIARB4A1qIABqEBsiA0EASgRAIARBoAFqIgwgBEHAAmoiCCALEA8gBiABIAcQDyAJIAcgCxAPIAogCCABEA8gCCAMIwFBoAdqIANB/gFxQQF2QfgAbGoQOAwBCyADQQBODQAgBEGgAWog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QccAEAsQCiADQQggB0HIABALEAogA0EJIAdByQAQCxAKIANBCiAHQcoAEAsQCiADQQsgB0HLABALEAogA0EMIAdBzAAQCxAKIANBDSAHQc0AEAsQCiADQQ4gB0HOABALEAogA0EPIAdBzwAQCxAKIANBECAHQdAAEAsQCiADQREgB0HRABALEAogA0ESIAdB0gAQCxAKIANBEyAHQdMAEAsQCiADQRQgB0HUABALEAogA0EVIAdB1QAQCxAKIANBFiAHQdYAEAsQCiADQRcgB0HXABALEAogA0EYIAdB2AAQCxAKIANBGSAHQdkAEAsQCiADQRogB0HaABALEAogA0EbIAdB2wAQCxAKIANBHCAHQdwAEAsQCiADQR0gB0HdABALEAogA0EeIAdB3gAQCxAKIANBHyAHQd8AEAsQCiAHQbwEIAdBIGoQCUEAIQADQCAHQbwEEAggAGpBAEEAEAogB0G8BBAIIABqQQFBABAKIAdBvAQQCCAAakECQQAQCiAHQbwEEAggAGpBA0EAEAogB0G8BBAIIABBBHIiAmpBAEEAEAogB0G8BBAIIAJqQQFBABAKIAdBvAQQCCACakECQQAQCiAHQbwEEAggAmpBA0EAEAogAEEIaiIAQcAARw0ACyALEBcgCBAXIAkQFyAHQYABaiABQQxqIQggBK0hEiMAQfACayIAJAACQAJAIBCtIhNCEFQNACAAQSBqIgIgASADEEEgAEH8AGpBAEIAEBMgAEGEAWpBAEEAEAkgAEH0AEIAEBMgAEGwAUEAEAogAEGYAUIAEAwgAEGIASAAQTAQCBAJIABBjAEgAEE0EBIQEyAAQZQBIABBPBAIEAkgAEHgACAAQSAQCEH///8fcRAJIABB5AAgAEEjEBZBAnZBg/7/H3EQCSAAQegAIABBJhApQQR2Qf+B/x9xEAkgAEHsACAAQSkQFkEGdkH//8AfcRAJIABB8AAgAEEsEAhBCHZB//8/cRAJIABB7AIgAhAJQQAhAgNAIABB7AIQCCACakEAQQAQCiAAQewCEAggAmpBAUEAEAogAEHsAhAIIAJqQQJBABAKIABB7AIQCCACakEDQQAQCiAAQewCEAggAkEEciIEakEAQQAQCiAAQewCEAggBGpBAUEAEAogAEHsAhAIIARqQQJBABAKIABB7AIQCCAEakEDQQAQCiACQQhqIgJBwABHDQALIABB4ABqIgIgBSASECUgAiMBQeCAAmoiBEIAIBJ9Qg+DECUgAiAIIBNCEH0iERAlIAIgBEIAIBN9Qg+DECUgAEEYIBIQDCACIABBGGoiBEIIECUgAEEYIBEQDCACIARCCBAlIAIgABA+IABB7AIgAhAJQQAhAgNAIABB7AIQCCACakEAQQAQCiAAQewCEAggAmpBAUEAEAogAEHsAhAIIAJqQQJBABAKIABB7AIQCCACakEDQQAQCiAAQewCEAggAkEEciIEakEAQQAQCiAAQewCEAggBGpBAUEAEAogAEHsAhAIIARqQQJBABAKIABB7AIQCCAEakEDQQAQCiACQQhqIgJBgAJHDQALIABB7AIgABAJIABB6AIgCCATp2pBEGsQCSAAQQAQHyAAQewCEAhBABALIQIgAEHoAhAIQQAQCyEEIAAgAEHmAhAdIAIgBHNB/wFxchAfIABB7AIQCEEBEAshAiAAQegCEAhBARALIQQgACAAQeYCEB0gAiAEc0H/AXFyEB8gAEHsAhAIQQIQCyECIABB6AIQCEECEAshBCAAIABB5gIQHSACIARzQf8BcXIQHyAAQewCEAhBAxALIQIgAEHoAhAIQQMQCyEEIAAgAEHmAhAdIAIgBHNB/wFxchAfIABB7AIQCEEEEAshAiAAQegCEAhBBBALIQQgACAAQeYCEB0gAiAEc0H/AXFyEB8gAEHsAhAIQQUQCyECIABB6AIQCEEFEAshBCAAIABB5gIQHSACIARzQf8BcXIQHyAAQewCEAhBBhALIQIgAEHoAhAIQQYQCyEEIAAgAEHmAhAdIAIgBHNB/wFxchAfIABB7AIQCEEHEAshAiAAQegCEAhBBxALIQQgACAAQeYCEB0gAiAEc0H/AXFyEB8gAEHsAhAIQQgQCyECIABB6AIQCEEIEAshBCAAIABB5gIQHSACIARzQf8BcXIQHyAAQewCEAhBCRALIQIgAEHoAhAIQQkQCyEEIAAgAEHmAhAdIAIgBHNB/wFxchAfIABB7AIQCEEKEAshAiAAQegCEAhBChALIQQgACAAQeYCEB0gAiAEc0H/AXFyEB8gAEHsAhAIQQsQCyECIABB6AIQCEELEAshBCAAIABB5gIQHSACIARzQf8BcXIQHyAAQewCEAhBDBALIQIgAEHoAhAIQQwQCyEEIAAgAEHmAhAdIAIgBHNB/wFxchAfIABB7AIQCEENEAshAiAAQegCEAhBDRALIQQgACAAQeYCEB0gAiAEc0H/AXFyEB8gAEHsAhAIQQ4QCyECIABB6AIQCEEOEAshBCAAIABB5gIQHSACIARzQf8BcXIQHyAAQewCEAhBDxALIQIgAEHoAhAIQQ8QCyEEIAAgAEHmAhAdIAIgBHNB/wFxchAfIAAgAEHmAhAdQQFrEB8gAEHmAhAdIQIgACMBQeaIAmpBABAdQQJ2IAJBD3ZzEB8gAEHmAhAdIABB7AIgABAJIABB7AIQCEEAQQAQCiAAQewCEAhBAUEAEAogAEHsAhAIQQJBABAKIABB7AIQCEEDQQAQCiAAQewCEAhBBEEAEAogAEHsAhAIQQVBABAKIABB7AIQCEEGQQAQCiAAQewCEAhBB0EAEAogAEHsAhAIQQhBABAKIABB7AIQCEEJQQAQCiAAQewCEAhBCkEAEAogAEHsAhAIQQtBABAKIABB7AIQCEEMQQAQCiAAQewCEAhBDUEAEAogAEHsAhAIQQ5BABAKIABB7AIQCEEPQQAQCkH//wNxQQFrIQICQCAGBEAgAkUNASARpyIBRQ0CIAZBACAB/AsADAILQgAgESACGyERDAILIAYgCCARIAEgAxBAQQAhAgwBC0IAIRFBfyECC0EAIBEQDCAAQfACaiQAIAMQFyAMJABBd0EAIAIbDwsgCxAXIAgQFyAJEBcgAxAXIAwkAEF4C8UnAkF/DX4jAEGABWsiAyQAIANBD0EAEAoDQCACIAVqQQAQCyIGIwFB8IACaiAFaiIEQcABEAtzIA5yIQ4gBEGgARALIAZzIAlyIQkgBEGAARALIAZzIAxyIQwgBEHgABALIAZzIAhyIQggBEHAABALIAZzIAtyIQsgBEEgEAsgBnMgB3IhByAEQQAQCyAGcyAKciEKIAVBAWoiBUEfRw0AC0F/IQQgAkEfEAtB/wBxIgYgB3JB/wFxQQFrIAYgCnJB/wFxQQFrciAGIAtyQf8BcUEBa3IgBkHXAHMgCHJB/wFxQQFrciAGQf8AcyIGIAxyQf8BcUEBa3IgBiAJckH/AXFBAWtyIAYgDnJB/wFxQQFrckGAAnFFBEAgA0HoBGpBACABQRhqQQAQERAMIANB4ARqQQAgAUEQakEAEBEQDCADQdAEIAFBABARIkQQDCADQdgEIAFBCGpBABAREAwgA0HQBCBEp0H4AXEQCiADQe8EIANB7wQQC0E/cUHAAHIQCiADQaAEaiACEDkgA0GEBGpBAEIAEBMgA0GMBGpBAEIAEBMgA0GUBGpBAEEAEAkgA0GgA2pBAEIAEAwgA0GoA2pBAEIAEAwgA0GwA2pBAEIAEAwgA0HQA2pBACADQbAEakEAEA0QDCADQdgDakEAIANBuARqQQAQDRAMIANB4ANqQQAgA0HABGpBABANEAwgA0H0A0IAEBMgA0HwA0EBEAkgA0H8A0IAEBMgA0GQA0IAEAwgA0GYA0IAEAwgA0HAAyADQaAEEA0QDCADQcgDIANBqAQQDRAMIANB9AJqQQBCABATIANB/AJqQQBCABATIANBhANqQQBBABAJIANB5AJCABATIANB4AJBARAJIANB7AJCABATQf4BIQJBACEGA0AgA0GUBBAIIQQgA0HkAxAIIQUgA0HUAxAIIQogA0GEBBAIIQcgA0HYAxAIIQsgA0GIBBAIIQggA0HcAxAIIQwgA0GMBBAIIQkgA0HgAxAIIQ4gA0GQBBAIIRIgA0HQAxAIIRMgA0GABBAIIQ8gA0HMAxAIIRQgA0H8AxAIIRAgA0HIAxAIIRUgA0H4AxAIIREgA0HEAxAIIRYgA0H0AxAIIRkgA0G0AxAIIQ0gA0GEAxAIIR4gA0HwAyADQcADEAgiLCADQfADEAgiF3NBACAGIANB0ARqIjAgAiIBQQN2akEAEAsgAkEHcXZBAXEiBnNrIgJxIi0gF3MiFxAJIANB9AMgGSAWIBlzIAJxIi5zIhkQCSADQfgDIBEgESAVcyACcSIxcyIREAkgA0H8AyAQIBAgFHMgAnEiMnMiEBAJIANBgAQgDyAPIBNzIAJxIjNzIg8QCSADQZADEAghHyADQeACEAghICADQZQDEAghISADQeQCEAghIiADQZgDEAghGCADQegCEAghIyADQZwDEAghJCADQewCEAghJSADQaADEAghJiADQfACEAghKSADQaQDEAghGiADQfQCEAghJyADQagDEAghGyADQfgCEAghKCADQawDEAghHCADQfwCEAghKiADQbADEAghHSADQYADEAghKyADQdQCIA0gDSAecyACcSI0cyINIAQgBCAFcyACcSI1cyIEahAJIANB0AIgHSAdICtzIAJxIjZzIh0gEiAOIBJzIAJxIjdzIhJqEAkgA0HMAiAcIBwgKnMgAnEiOHMiHCAJIAkgDHMgAnEiOXMiCWoQCSADQcgCIBsgGyAocyACcSI6cyIbIAggCCALcyACcSI7cyIIahAJIANBxAIgGiAaICdzIAJxIjxzIhogByAHIApzIAJxIj1zIgdqEAkgA0GkAiAEIA1rEAkgA0GgAiASIB1rEAkgA0GcAiAJIBxrEAkgA0GYAiAIIBtrEAkgA0GUAiAHIBprEAkgA0HAAiAmICYgKXMgAnEiDXMiBCAPahAJIANBvAIgJCAkICVzIAJxIiZzIgcgEGoQCSADQbgCIBggGCAjcyACcSIkcyIIIBFqEAkgA0G0AiAhICEgInMgAnEiGHMiCSAZahAJIANBsAIgHyAfICBzIAJxIiFzIgIgF2oQCSADQZACIA8gBGsQCSADQYwCIBAgB2sQCSADQYgCIBEgCGsQCSADQYQCIBkgCWsQCSADQYACIBcgAmsQCSADQdABaiICIANBsAJqIj4QDiADQaABaiIEIANBgAJqIj8QDiADQfADaiIvIAIgBBAPIANBwAEQCCECIANB8AEQCCEXIANBvAEQCCEEIANB7AEQCCEfIANBuAEQCCEHIANB6AEQCCEaIANBtAEQCCEIIANB5AEQCCEbIANBsAEQCCEJIANB4AEQCCEcIANBrAEQCCESIANB3AEQCCEdIANBqAEQCCEPIANB2AEQCCFAIANBpAEQCCEQIANB1AEQCCFBIANBxAEQCCERIANB9AEQCCFCIANBoAEQCCEZIANB0AEQCCFDIANB5AAgBSA1cyIFIB4gNHMiHmsQCSADQeAAIA4gN3MiDiArIDZzIitrEAkgA0HcACAMIDlzIgwgKiA4cyIqaxAJIANB2AAgCyA7cyILICggOnMiKGsQCSADQdQAIAogPXMiCiAnIDxzIidrEAkgA0HQACATIDNzIhMgDSApcyINaxAJIANBzAAgFCAycyIUICUgJnMiJWsQCSADQcgAIBUgMXMiFSAjICRzIiNrEAkgA0HEACAWIC5zIhYgGCAicyIiaxAJIANBwAAgLCAtcyIYICAgIXMiIGsQCSADQfAAIEMgGWsiJBAJIANBlAEgQiARayImEAkgA0H0ACBBIBBrIikQCSADQfgAIEAgD2siLBAJIANB/AAgHSASayIdEAkgA0GAASAcIAlrIhwQCSADQYQBIBsgCGsiGxAJIANBiAEgGiAHayIaEAkgA0GMASAfIARrIi0QCSADQZABIBcgAmsiLhAJIANBQGsiFyAXID4QDyADQTQgBSAeahAJIANBMCAOICtqEAkgA0EsIAwgKmoQCSADQSggCyAoahAJIANBJCAKICdqEAkgA0EgIA0gE2oQCSADQRwgFCAlahAJIANBGCAVICNqEAkgA0EUIBYgImoQCSADQRAgGCAgahAJIANBEGoiBSAFID8QDyADQRAQCCEFIANBwAAQCCEKIANBFBAIIQsgA0HEABAIIQwgA0EYEAghDiADQcgAEAghEyADQRwQCCEUIANBzAAQCCEVIANBIBAIIRYgA0HQABAIIQ0gA0EkEAghHiADQdQAEAghFyADQSgQCCEfIANB2AAQCCEgIANBLBAIISEgA0HcABAIISIgA0EwEAghGCADQeAAEAghIyADQeQDIANBNBAIIiUgA0HkABAIIidqEAkgA0HgAyAYICNqEAkgA0HcAyAhICJqEAkgA0HYAyAfICBqEAkgA0HUAyAXIB5qEAkgA0HQAyANIBZqEAkgA0HMAyAUIBVqEAkgA0HIAyAOIBNqEAkgA0HEAyALIAxqEAkgA0HAAyAFIApqEAkgA0HAA2oiKCAoEA4gA0GEAyAnICVrEAkgA0GAAyAjIBhrEAkgA0H8AiAiICFrEAkgA0H4AiAgIB9rEAkgA0H0AiAXIB5rEAkgA0HwAiANIBZrEAkgA0HsAiAVIBRrEAkgA0HoAiATIA5rEAkgA0HkAiAMIAtrEAkgA0HgAiAKIAVrEAkgA0HgAmoiBSAFEA4gBSAFIANBoARqEA8gA0GwAyACIC6sQsK2B34gLaxCwrYHfiJEQoCAgAh8IkZCGYd8IkUgRUKAgIAQfCJFQoCAgOAPg32nahAJIANBqAMgByAarELCtgd+IBusQsK2B34iSkKAgIAIfCJLQhmHfCJHIEdCgICAEHwiR0KAgIDgD4N9p2oQCSADQaADIAkgHKxCwrYHfiAdrELCtgd+IkxCgICACHwiTUIZh3wiSCBIQoCAgBB8IkhCgICA4A+DfadqEAkgA0GYAyAPICysQsK2B34gKaxCwrYHfiJOQoCAgAh8Ik9CGYd8IkkgSUKAgIAQfCJJQoCAgOAPg32nahAJIANBtAMgESAmrELCtgd+IlAgRUIaiHwgUEKAgIAIfCJFQoCAgPAPg32nahAJIANBrAMgBCBHQhqIIER8IEZCgICA8A+DfadqEAkgA0GkAyAIIEhCGoggSnwgS0KAgIDwD4N9p2oQCSADQZwDIBIgSUIaiCBMfCBNQoCAgPAPg32nahAJIANBlAMgECBOIE9CgICA8A+DfSBFQhmHQhN+ICSsQsK2B358IkRCgICAEHwiRkIaiHynahAJIANBkAMgGSBEIEZCgICA4A+DfadqEAkgAUEBayECIANBkANqIg0gDSADQfAAahAPIAENAAsgA0HAAxAIIQ4gA0HwAxAIIQIgA0HEAxAIIRIgA0H0AxAIIQQgA0HIAxAIIRMgA0H4AxAIIQUgA0HMAxAIIQ8gA0H8AxAIIQogA0HQAxAIIRQgA0GABBAIIQcgA0HUAxAIIRAgA0GEBBAIIQsgA0HYAxAIIRUgA0GIBBAIIQggA0HcAxAIIREgA0GMBBAIIQwgA0HgAxAIIRYgA0GQBBAIIQkgA0GUBEEAIAZrIgEgA0HkAxAIIANBlAQQCCIGc3EgBnMQCSADQZAEIAkgCSAWcyABcXMQCSADQYwEIAwgDCARcyABcXMQCSADQYgEIAggCCAVcyABcXMQCSADQYQEIAsgCyAQcyABcXMQCSADQYAEIAcgByAUcyABcXMQCSADQfwDIAogCiAPcyABcXMQCSADQfgDIAUgBSATcyABcXMQCSADQfQDIAQgBCAScyABcXMQCSADQfADIAIgAiAOcyABcXMQCSADQZADEAghAiADQeACEAghCSADQZQDEAghBiADQeQCEAghDiADQZgDEAghBCADQegCEAghEiADQZwDEAghBSADQewCEAghEyADQaADEAghCiADQfACEAghDyADQaQDEAghByADQfQCEAghFCADQagDEAghCyADQfgCEAghECADQawDEAghCCADQfwCEAghFSADQbADEAghDCADQYADEAghESADQbQDIANBhAMQCCADQbQDEAgiFnMgAXEgFnMQCSADQbADIAwgDCARcyABcXMQCSADQawDIAggCCAVcyABcXMQCSADQagDIAsgCyAQcyABcXMQCSADQaQDIAcgByAUcyABcXMQCSADQaADIAogCiAPcyABcXMQCSADQZwDIAUgBSATcyABcXMQCSADQZgDIAQgBCAS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QbAYaiAGIAEQDyACQdgYaiADIAUQDyAEIBsQGiADIBggBBAZIAJBwBZqIhwgAyABEA8gAkHoFmogBSAGEA8gAkGQF2ogBiABEA8gAkG4F2ogAyAFEA8gB0EAIAJBgBhqQQAQEhAMIAlBACACQfgXakEAEBIQDCAMQQAgAkHwF2pBABASEAwgDUEAIAJB6BdqQQAQEhAMIA5BACACQZAYakEAEBIQDCAPQQAgAkGYGGpBABASEAwgEEEAIAJBoBhqQQAQEhAMIBFBACACQagYakEAEBIQDCACQYAeIAJB4BcQEhAMIAJBqB4gAkGIGBASEAwgE0EAIAJB0BhqQQAQEhAMIBRBACACQcgYakEAEBIQDCAVQQAgAkHAGGpBABASEAwgF0EAIAJBuBhqQQAQEhAMIAJB0B4gAkGwGBASEAwgBCADECYgAkGgFWoiHSAEIAoQDyACQcgVaiALIAgQDyACQfAVaiAIIAoQDyACQZgWaiAEIAsQDyAHQQAgAkHAFWpBABASEAwgCUEAIAJBuBVqQQAQEhAMIAxBACACQbAVakEAEBIQDCANQQAgAkGoFWpBABASEAwgDkEAIAJB0BVqQQAQEhAMIA9BACACQdgVakEAEBIQDCAQQQAgAkHgFWpBABASEAwgEUEAIAJB6BVqQQAQEhAMIAJBgB4gAkGgFRASEAwgAkGoHiACQcgVEBIQDCATQQAgAkGQFmpBABASEAwgFEEAIAJBiBZqQQAQEhAMIBVBACACQYAWakEAEBIQDCAXQQAgAkH4FWpBABASEAwgAkHQHiACQfAVEBIQDCAEIAMQJiACQYAUaiIaIAQgChAPIAJBqBRqIAsgCBAPIAJB0BRqIAggChAPIAJB+BRqIAQgCxAPIAQgGhAaIAMgGSAEEBkgAkHgEmoiGiADIAEQDyACQYgTaiAFIAYQDyACQbATaiAGIAEQDyACQdgTaiADIAUQDyAHQQAgAkGgFGpBABASEAwgCUEAIAJBmBRqQQAQEhAMIAxBACACQZAUakEAEBIQDCANQQAgAkGIFGpBABASEAwgDkEAIAJBsBRqQQAQEhAMIA9BACACQbgUakEAEBIQDCAQQQAgAkHAFGpBABASEAwgEUEAIAJByBRqQQAQEhAMIAJBgB4gAkGAFBASEAwgAkGoHiACQagUEBIQDCATQQAgAkHwFGpBABASEAwgFEEAIAJB6BRqQQAQEhAMIBVBACACQeAUakEAEBIQDCAXQQAgAkHYFGpBABASEAwgAkHQHiACQdAUEBIQDCAEIAMQJiACQcARaiIHIAQgChAPIAJB6BFqIAsgCBAPIAJBkBJqIAggChAPIAJBuBJqIAQgCxAPIAQgBxAaIAMgHSAEEBkgAkGgEGoiCCADIAEQDyACQcgQaiAFIAYQDyACQfAQaiAGIAEQDyACQZgRaiADIAUQDyAEIAgQGiADIBggBBAZIAJBgA9qIgwgAyABEA8gAkGoD2ogBSAGEA8gAkHQD2ogBiABEA8gAkH4D2ogAyAFEA8gBCAMEBogAyAdIAQQGSACQeANaiIPIAMgARAPIAJBiA5qIAUgBhAPIAJBsA5qIAYgARAPIAJB2A5qIAMgBRAPIAQgDxAaIAMgEiAEEBkgAkHADGoiECADIAEQDyACQegMaiAFIAYQDyACQZANaiAGIAEQDyACQbgNaiADIAUQDyAEIBAQGiADIBIgBBAZIAJBoAtqIhMgAyABEA8gAkHIC2ogBSAGEA8gAkHwC2ogBiABEA8gAkGYDGogAyAFEA8gBCAMEBogAyAHIAQQGSACQYAKaiINIAMgARAPIAJBqApqIAUgBhAPIAJB0ApqIAYgARAPIAJB+ApqIAMgBRAPIAQgDRAaIAMgEiAEEBkgAkHgCGoiDiADIAEQDyACQYgJaiAFIAYQDyACQbAJaiAGIAEQDyACQdgJaiADIAUQDyAEIA4QGiADIBogBBAZIAJBwAdqIhQgAyABEA8gAkHoB2ogBSAGEA8gAkGQCGogBiABEA8gAkG4CGogAyAFEA8gBCANEBogAyAHIAQQGSACQaAGaiIVIAMgARAPIAJByAZqIAUgBhAPIAJB8AZqIAYgARAPIAJBmAdqIAMgBRAPIAQgDhAaIAMgCCAEEBkgAkGABWoiESADIAEQDyACQagFaiAFIAYQDyACQdAFaiAGIAEQDyACQfgFaiADIAUQDyAEIBEQGiADIBkgBBAZIAJB4ANqIhIgAyABEA8gAkGIBGogBSAGEA8gAkGwBGogBiABEA8gAkHYBGogAyAFEA8gBCASEBogAyAbIAQQGSACQcACaiIJIAMgARAPIAJB6AJqIAUgBhAPIAJBkANqIAYgARAPIAJBuANqIAMgBRAPIAQgCRAaIAMgHCAEEBkgAkGgAWoiByADIAEQDyACQcgBaiIKIAUgBhAPIAJB8AFqIgsgBiABEA8gAkGYAmoiCCADIAUQDyAHQf4AIAwQIyAHQQkgFhAjIAQgCRAaIAMgByAEEBkgByADIAEQDyAKIAUgBhAPIAsgBiABEA8gCCADIAUQDyAHQQcgEBAjIAdBCSAJECMgB0ELIBQQIyAHQQggERAjIAdBCSATECMgB0EGIBwQIyAHQQ4gDRAjIAdBCiAPECMgB0EJIA4QIyAHQQogCRAjIAdBCCAVECMgB0EIIBIQIyAEIAcQISACQYAeQQAQCiACQYAeIAJBoB8QCyACQYAeEAtyEAogAkGAHiACQaEfEAsgAkGAHhALchAKIAJBgB4gAkGiHxALIAJBgB4QC3IQCiACQYAeIAJBox8QCyACQYAeEAtyEAogAkGAHiACQaQfEAsgAkGAHhALchAKIAJBgB4gAkGlHxALIAJBgB4QC3IQCiACQYAeIAJBph8QCyACQYAeEAtyEAogAkGAHiACQacfEAsgAkGAHhALchAKIAJBgB4gAkGoHxALIAJBgB4QC3IQCiACQYAeIAJBqR8QCyACQYAeEAtyEAogAkGAHiACQaofEAsgAkGAHhALchAKIAJBgB4gAkGrHxALIAJBgB4QC3IQCiACQYAeIAJBrB8QCyACQYAeEAtyEAogAkGAHiACQa0fEAsgAkGAHhALchAKIAJBgB4gAkGuHxALIAJBgB4QC3IQCiACQYAeIAJBrx8QCyACQYAeEAtyEAogAkGAHiACQbAfEAsgAkGAHhALchAKIAJBgB4gAkGxHxALIAJBgB4QC3IQCiACQYAeIAJBsh8QCyACQYAeEAtyEAogAkGAHiACQbMfEAsgAkGAHhALchAKIAJBgB4gAkG0HxALIAJBgB4QC3IQCiACQYAeIAJBtR8QCyACQYAeEAtyEAogAkGAHiACQbYfEAsgAkGAHhALchAKIAJBgB4gAkG3HxALIAJBgB4QC3IQCiACQYAeIAJBuB8QCyACQYAeEAtyEAogAkGAHiACQbkfEAsgAkGAHhALchAKIAJBgB4gAkG6HxALIAJBgB4QC3IQCiACQYAeIAJBux8QCyACQYAeEAtyEAogAkGAHiACQbwfEAsgAkGAHhALchAKIAJBgB4gAkG9HxALIAJBgB4QC3IQCiACQYAeIAJBvh8QCyACQYAeEAtyEAogAkGAHiACQb8fEAsgAkGAHhALchAKQX8hBSACQYAeEAtBAWtBgAJxRQ0AIAJBpB5BACACQcwAEAgiAWsQCSACQaAeQQAgAkHIABAIIghrEAkgAkGcHkEAIAJBxAAQCCIFaxAJIAJBmB5BACACQcAAEAgiB2sQCSACQZQeQQAgAkE8EAgiBmsQCSACQZAeQQAgAkE4EAgiCWsQCSACQYweQQAgAkE0EAgiCmsQCSACQYgeQQAgAkEwEAgiDGsQCSACQYQeQQAgAkEsEAgiC2sQCSACQYAeQQEgAkEoEAgiDWsQCSADIAMQMCACQbgfIAJBhB4QCCIOrCImIAZBAXSsIi9+IAJBgB4QLSIeIAesIiF+fCACQYgeEAgiB6wiKCAJrCIifnwgAkGMHhAIIgmsIisgCkEBdKwiMH58IAJBkB4QCCIPrCIsIAysIiN+fCACQZQeEAgiDKwiMSALQQF0rCIyfnwgAkGYHhAIIhCsIjsgDUEBaqwiJH58IAJBnB4QCCINQRNsrCInIAFBAXSsIjN+fCACQaAeEAgiEUETbKwiHyAIrCIlfnwgAkGkHhAIIghBE2ysIiAgBUEBdKwiNH58ICIgJn4gHiAGrCI1fnwgKCAKrCI2fnwgIyArfnwgLCALrCI3fnwgJCAxfnwgEEETbKwiKSABrCI4fnwgJSAnfnwgHyAFrCI5fnwgICAhfnwgJiAwfiAeICJ+fCAjICh+fCArIDJ+fCAkICx+fCAMQRNsrCI6IDN+fCAlICl+fCAnIDR+fCAfICF+fCAgIC9+fCI9QoCAgBB8Ij5CGod8Ij9CgICACHwiQEIZh3wiLSAtQoCAgBB8Ii5CgICA4A+DfRAYIAJBqB8gJiAyfiAeICN+fCAkICh+fCAJQRNsrCIqIDN+fCAPQRNsrCItICV+fCA0IDp+fCAhICl+fCAnIC9+fCAfICJ+fCAgIDB+fCAkICZ+IB4gN358IAdBE2ysIjwgOH58ICUgKn58IC0gOX58ICEgOn58ICkgNX58ICIgJ358IB8gNn58ICAgI358IA5BE2ysIDN+IB4gJH58ICUgPH58ICogNH58ICEgLX58IC8gOn58ICIgKX58ICcgMH58IB8gI358ICAgMn58IjxCgICAEHwiQUIah3wiQkKAgIAIfCJDQhmHfCIqICpCgICAEHwiREKAgIDgD4N9EBggAkG8HyAhICZ+IB4gOX58ICggNX58ICIgK358ICwgNn58ICMgMX58IDcgO358IA2sIiogJH58IB8gOH58ICAgJX58IC5CGod8Ii4gLkKAgIAIfCIuQoCAgPAPg30QGCACQawfICMgJn4gHiA2fnwgKCA3fnwgJCArfnwgLSA4fnwgJSA6fnwgKSA5fnwgISAnfnwgHyA1fnwgICAifnwgREIah3wiHyAfQoCAgAh8Ih9CgICA8A+DfRAYIAJBwB8gJiA0fiAeICV+fCAhICh+fCArIC9+fCAiICx+fCAwIDF+fCAjIDt+fCAqIDJ+fCARrCInICR+fCAgIDN+fCAuQhmHfCIgICBCgICAEHwiIEKAgIDgD4N9EBggAkG0HyA/IEBCgICA8A+DfSA9ID5CgICAYIN9IB9CGYd8Ih9CgICAEHwiKUIaiHwQGCACQbAfIB8gKUKAgIDgD4N9EBggAkHEHyAlICZ+IB4gOH58ICggOX58ICEgK358ICwgNX58ICIgMX58IDYgO358ICMgKn58ICcgN358IAisICR+fCAgQhqHfCIeIB5CgICACHwiHkKAgIDwD4N9EBggAkGkHyBCIENCgICA8A+DfSA8IEFCgICAYIN9IB5CGYdCE358Ih5CgICAEHwiIUIaiHwQGCACQaAfIB4gIUKAgIDgD4N9EBggACAEECFBACEFCyACQcAgaiQAIAUL+gYBFH8jAEGwAmsiAiQAIABBACABQQAQCxAKIABBASABQQEQCxAKIABBAiABQQIQCxAKIABBAyABQQMQCxAKIABBBCABQQQQCxAKIABBBSABQQUQCxAKIABBBiABQQYQCxAKIABBByABQQcQCxAKIABBCCABQQgQCxAKIABBCSABQQkQCxAKIABBCiABQQoQCxAKIABBCyABQQsQCxAKIABBDCABQQwQCxAKIABBDSABQQ0QCxAKIABBDiABQQ4QCxAKIABBDyABQQ8QCxAKIABBECABQRAQCxAKIABBESABQREQCxAKIABBEiABQRIQCxAKIABBEyABQRMQCxAKIABBFCABQRQQCxAKIABBFSABQRUQCxAKIABBFiABQRYQCxAKIABBFyABQRcQCxAKIABBGCABQRgQCxAKIABBGSABQRkQCxAKIABBGiABQRoQCxAKIABBGyABQRsQ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EGpBACADQdAAakEAEBEQECAGQQhqQQAgA0HIAGpBABAREBAgBkEAIANBwAAQERAQIAlBCGpBAEIAEAwgCUEAQgAQDCAEQThqQQAjASIDQThqQQAQDRAMIARBMGpBACADQTBqQQAQDRAMIARBKGpBACADQShqQQAQDRAMIARBIGpBACADQSBqQQAQDRAMIARBGGpBACADQRhqQQAQDRAMIARBEGpBACADQRBqQQAQDRAMIARBCGpBACADQQhqQQAQDRAMIARBACADQQAQDRAMIAQgBUKAARAiIAQgASAIQQZ0ahAkIAhBAWohCCAHQQJqIgcgAEkNAAwCCwALA0AgBUEAIAEgB0EGdGoiA0EAEBEQECAFQThqQQAgA0E4akEAEBEQECAFQTBqQQAgA0EwakEAEBEQECAFQShqQQAgA0EoakEAEBEQECAFQSBqQQAgA0EgakEAEBEQECAFQRhqQQAgA0EYakEAEBEQECAFQRBqQQAgA0EQakEAEBEQECAFQQhqQQAgA0EIakEAEBEQECAGQThqQQAgA0HAAEEAIAdBAXIgAEcbaiIDQThqQQAQERAQIAZBMGpBACADQTBqQQAQERAQIAZBKGpBACADQShqQQAQERAQIAZBIGpBACADQSBqQQAQERAQIAZBGGpBACADQRhqQQAQERAQIAZBEGpBACADQRBqQQAQERAQIAZBCGpBACADQQhqQQAQERAQIAZBACADQQAQERAQIAlBCGpBAEIAEAwgCUEAQgAQDCAEQThqQQAjASIDQThqQQAQDRAMIARBMGpBACADQTBqQQAQDRAMIARBKGpBACADQShqQQAQDRAMIARBIGpBACADQSBqQQAQDRAMIARBGGpBACADQRhqQQAQDRAMIARBEGpBACADQRBqQQAQDRAMIARBCGpBACADQQhqQQAQDRAMIARBACADQQAQDRAMIAQgBUKAARAiIAQgASAIQQZ0ahAkIAhBAWohCCAHQQJqIgcgAEkNAAsLIAC4RAAAAAAAAOA/opv8AyIAQQFLDQALCyACQQAgAUEAEBEQECACQThqQQAgAUE4akEAEBEQECACQTBqQQAgAUEwakEAEBEQECACQShqQQAgAUEoakEAEBEQECACQSBqQQAgAUEgakEAEBEQECACQRhqQQAgAUEYakEAEBEQECACQRBqQQAgAUEQakEAEBEQ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ACADQcgAakEAQgAQDCADQQhqQQAjASIEQQhqQQAQDRAMIANBEGpBACAEQRBqQQAQDRAMIANBGGpBACAEQRhqQQAQDRAMIANBIGpBACAEQSBqQQAQDRAMIANBKGoiBUEAIARBKGpBABANEAwgA0EwakEAIARBMGpBABANEAwgA0E4akEAIARBOGpBABANEAwgA0HAAEIAEAwgA0EAIARBABANEAwgAyACQiAQIiADIAEQJCABQQAgAUEAEAtB+AFxEAogAUEfIAFBHxALQT9xQcAAchAKIAMgARA7IANBsAJqIgQgA0HQAGoQMCADQYACaiIGIAMgBBAPIANB0AFqIgcgBSAEEA8gACAHECEgA0HgAmogBhAhIABBHyAAQR8QCyADQeACEAtBB3RzEAogAkEIakEAEBEhCCACQRBqQQAQESEJIAJBABARIQogAUEYakEAIAJBGGpBABAREBAgAUEQakEAIAkQECABQQhqQQAgCBAQIAFBACAKEBAgAEEIakEAEBEhCCAAQRBqQQAQESEJIABBABARIQogAUE4akEAIABBGGpBABAREBAgAUEwakEAIAkQECABQShqQQAgCBAQIAFBICAKEBAgA0GAA2okAEEACxEAIwFB5IQCakEAQYwF/AsAC54aAgp/A34jACIJIQ0gCUHABGtBQHEiCCQAQSAQHCILRQRAIA0kAEF/DwtBIBAcIgpFBEAgCxAXIA0kAEF+DwsgCEHIAWpBAEIAEAwgCEGIAWpBACMBIglBCGpBABANEAwgCEGQAWpBACAJQRBqQQAQDRAMIAhBmAFqQQAgCUEYakEAEA0QDCAIQaABakEAIAlBIGpBABANEAwgCEGoAWpBACAJQShqQQAQDRAMIAhBsAFqQQAgCUEwakEAEA0QDCAIQbgBakEAIAlBOGpBABANEAwgCEHAAUIAEAwgCEGAASAJQQAQDRAMIAhBgAFqIgkgA0IgECIgCSAIQSBqIgMQJCAIQSAgCEEgEAtB+AFxEAogCEE/IAhBPxALQT9xQcAAchAKIApBEGpBACAIQTBqQQAQDRAQIApBCGpBACAIQSgQDRAQIApBACAIQSAQDRAQIApBGGpBACAIQThqQQAQDRAQIAhBgAEgAxAJQQAhAwNAIAhBgAEQCCADakEAQQAQCiAIQYABEAggA2pBAUEAEAogCEGAARAIIANq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QQAQCiAEQfwREAggAEEEciICakEAQQAQCiAEQfwREAggAmpBAUEAEAogBEH8ERAIIAJqQQJBABAKIARB/BEQCCACakEDQQAQCiAAQQhqIgBBgAhHDQALIARBwAkgBEHAAWoQCUEAIQADQCAEQcAJEAggAGpBAEEAEAogBEHACRAIIABqQQFBABAKIARBwAkQCCAAakECQQAQCiAEQcAJEAggAGpBA0EAEAogBEHACRAIIABBBHIiAmpBAEEAEAogBEHACRAIIAJqQQFBABAKIARBwAkQCCACakECQQAQCiAEQcAJEAggAmpBA0EAEAogAEEIaiIAQcgARw0AC0EAIQAgBEHICWoiAkEAQQAQCiAEQcwJQQAQCSAEQYgBakEAIAJBABASEAwgBEGAAUIAEAwgBEHACUIAEBMgBEGUAWoiAyAEQYABahAqIAJBAEEBEAogBEHMCUEAEAkgBEH4AGpBACACQQAQEhAMIARBxAlBABAJIARB8AAgBEHACRASEAwgAyAEQfAAahAqIAJBAEECEAogBEHMCUEAEAkgBEHoAGpBACACQQAQEhAMIARBxAlBABAJIARB4AAgBEHACRASEAwgAyAEQeAAahAqIAJBAEEDEAogBEHMCUEAEAkgBEHYAGpBACACQQAQEhAMIARBxAlBABAJIARB0AAgBEHACRASEAwgAyAEQdAAahAqIAJBAEEAEAogBEHMCUEAEAkgBEHIAGpBACACQQAQEhAMIARBwABCARAMIARBwAlCARATIAMgBEFAaxAqIAJBAEEBEAogBEHMCUEAEAkgBEE4akEAIAJBABASEAwgBEHECUEAEAkgBEEwIARBwAkQEhAMIAMgBEEwahAqIAJBAEECEAogBEHMCUEAEAkgBEEoakEAIAJBABASEAwgBEHECUEAEAkgBEEgIARBwAkQEhAMIAMgBEEgahAqIAJBAEEDEAogBEHMCUEAEAkgBEEYakEAIAJBABASEAwgBEHECUEAEAkgBEEQIARBwAkQEhAMIAMgBEEQahAqIARBwAlqIgIgC0EEEAhBgPj/H2pBgAj8CgAAIARBwAFqIAJBgAj8CgAAIAxBICACQYAIEDwgBEH8ESACEAkDQCAEQfwREAggAGpBAEEAEAogBEH8ERAIIABqQQFBABAKIARB/BEQCCAAakECQQAQCiAEQfwREAggAGpB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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4Ot6fDtBuK4WVuP68Z/EatoJjeucMrH9hmIFFl9JuABfnJW8o1CMJLHQsVWcg+9bBERcxFgcjobYIk7d0J8RV+z///////////////////////////////////////9/7f///////////////////////////////////////3/u////////////////////////////////////////fwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==");var g=function(e){return A(e.instance,e.module)}(await u(0,r,e));return g}(),function A(e=g){IA>0||IA>0?gA=A:(I.calledRun=!0,h||(l=!0,F(d),mA.__wasm_call_ctors(),F(W),C?.(I)))}(),(()=>{var A=null,e=0;function g(){if(A&&l){var e=A;A=null,e.forEach(A=>onmessage(A))}}function Q(){g(),A&&setTimeout(Q,100)}onmessage=t=>{if(!l)return A||(A=[],setTimeout(Q,100)),void A.push(t);g();var B=I["_"+t.data.funcName];B||w("invalid worker function to call: "+t.data.funcName);var E=t.data.data;E&&(E.byteLength||(E=new Uint8Array(E)),e=uA(e,E.length),o.set(E,e)),t.data.callbackId,E?B(e,E.length):B(0,0)}})(),l?I:new Promise((A,e)=>{C=A,a=e})}A.exports=e,A.exports.default=e}(CQ)),CQ.exports),nQ=e(aQ);const oQ=async(A,e,I,g)=>{if(A.length%Ve!==0)throw new Error("Hashes were not passed");const Q=A.length/Ve;if(0===Q)throw new Error("Cannot calculate Merkle proof of element of empty tree.");if(1===Q){const A=new Uint8Array(Ve+1);if(A.set(e),g){const e=Ve+1,I=window.crypto.getRandomValues(new Uint8Array(g));let Q=0;const t=4;return new DataView(I.buffer,Q,t).setUint32(0,e,!1),Q+=t,I.set(A,Q),I}return A}const t=I?.wasmMemory??(A=>{const e=tQ(A*Ve+A*(Ve+1)+3*Ve);return new WebAssembly.Memory({initial:e,maximum:e})})(Q),B=I??await nQ({wasmMemory:t}),E=B._malloc(Q*Ve),i=new Uint8Array(t.buffer,E,Q*Ve);i.set(A);const C=B._malloc(Ve),a=new Uint8Array(t.buffer,C,Ve);a.set(e);const n=Q*(Ve+1),o=B._malloc(n),r=new Uint8Array(t.buffer,o,n),s=B._get_merkle_proof(Q,i.byteOffset,a.byteOffset,r.byteOffset);switch(B._free(E),B._free(C),s){case-1:throw B._free(o),new Error("Element not in tree.");case-2:throw B._free(o),new Error("Could not allocate memory for hash concatenation helper array.");case-3:throw B._free(o),new Error("Could not calculate hash.");default:if(s>0){if(g&&g>=s){const A=window.crypto.getRandomValues(new Uint8Array(g));let e=0;const I=4;return new DataView(A.buffer,e,I).setUint32(0,s,!1),e+=I,A.set(r.slice(0,s),e),B._free(o),A}{const A=Uint8Array.from([...r.slice(0,s)]);return B._free(o),A}}throw B._free(o),new Error("An unexpected error occured")}},rQ=(A,e)=>new Promise((I,g)=>{try{A===e&&I(A);const g=e-A,Q=Math.ceil(Math.log2(g)/8),t=Math.pow(Math.pow(2,8),Q),B=Math.floor(t/g)*g;let E=new Uint8Array(Q),i=B;for(;i>=B;){E=window.crypto.getRandomValues(E),i=0;for(let A=0;A<Q;A++)i<<=8,i+=E[A];i<B&&(i%=g,I(A+i))}I(i)}catch(A){g(A)}}),sQ=async(A,e,I=!0,g=!0,Q=!0)=>{if(e??=A,0===e&&A===e)return"";const t=e>A?await rQ(A,e):A,B=await((A,e=!0,I=!0,g=!0)=>new Promise((Q,t)=>{try{let t="";e&&(t+="abcdefghijklmnopqrstuvwxyz"),I&&(t+="ABCDEFGHIJKLMNOPQRSTUVWXYZ"),g&&(t+="0123456789");let B="";const E=window.crypto.getRandomValues(new Uint8Array(A));for(let e=0;e<A;e++)B+=t[E[e]%t.length];Q(B)}catch(A){t(A)}}))(t,I,g,Q);return B};function cQ(A,e){if(!(e>A))return A;const I=e-A,g=Math.floor(4294967296/I)*I;let Q=0;do{Q=crypto.getRandomValues(new Uint32Array(1))[0]}while(Q>=g);return A+Q%I}function hQ(A){const e=A.slice();for(let A=e.length-1;A>0;A--){const I=cQ(0,A+1);[e[A],e[I]]=[e[I],e[A]]}return e}const lQ=[1],fQ="CANCEL_SEND",dQ=async(A,e,I,g,Q,t=1,B=AQ,E=.9,i=1)=>{const{keyPair:C}=e.getState();if(t<1)throw new Error("Need at least one chunk.");if(E<1e-4||E>1)throw new Error("Percentage of useful data in chunk should be in (0, 1].");if(!lQ.includes(i))throw new Error("Unknown metadata version schema.");if(B>AQ||B<=$g)throw new Error(`Chunk length needs to be between ${String($g)} and ${String(AQ)}`);let a=!1;const n=()=>{a=!0};window.addEventListener(fQ,n);const o=(A=>{if("string"==typeof A)return qg.Text;const e=A.name.split(".").pop()?.toLowerCase()??"";return{png:qg.ImagePNG,jpeg:qg.ImageJPEG,jpg:qg.ImageJPG,gif:qg.ImageGIF,bmp:qg.ImageBMP,tiff:qg.ImageTIFF,svg:qg.ImageSVG,webp:qg.ImageWEBP,heic:qg.ImageHEIC,pdf:qg.DocumentPDF,doc:qg.DocumentDOC,docx:qg.DocumentDOCX,xls:qg.DocumentXLS,xlsx:qg.DocumentXLSX,ppt:qg.DocumentPPT,pptx:qg.DocumentPPTX,txt:qg.DocumentTXT,rtf:qg.DocumentRTF,odt:qg.DocumentODT,mp3:qg.AudioMP3,wav:qg.AudioWAV,aac:qg.AudioAAC,flac:qg.AudioFLAC,ogg:qg.AudioOGG,m4a:qg.AudioM4A,mp4:qg.VideoMP4,avi:qg.VideoAVI,mkv:qg.VideoMKV,mov:qg.VideoMOV,wmv:qg.VideoWMV,flv:qg.VideoFLV,webm:qg.VideoWEBM,zip:qg.CompressedZIP,rar:qg.CompressedRAR,"7z":qg.Compressed7Z,tar:qg.CompressedTAR,gz:qg.CompressedGZ,html:qg.CodeHTML,css:qg.CodeCSS,js:qg.CodeJS,ts:qg.CodeTS,jsx:qg.CodeJSX,tsx:qg.CodeTSX,json:qg.CodeJSON,xml:qg.CodeXML,py:qg.CodePY,java:qg.CodeJAVA,c:qg.CodeC,cpp:qg.CodeCPP,cs:qg.CodeCS,rb:qg.CodeRB,php:qg.CodePHP,sql:qg.CodeSQL,epub:qg.EbookEPUB,mobi:qg.EbookMOBI,azw:qg.EbookAZW,ttf:qg.FontTTF,otf:qg.FontOTF,ico:qg.ImageICO,exe:qg.ExecutableEXE,dmg:qg.ExecutableDMG,apk:qg.ExecutableAPK}[e]??qg.Unknown})(A),r=o===qg.Text?await sQ(256):A.name.substring(0,255),s="string"==typeof A?(new TextEncoder).encode(A):A,c=await navigator.storage.estimate(),h=(c.quota??10737418240)-(c.usage??65536),l="string"==typeof A?s.length:s.size;if(l>h)throw new Error("Not enough space to save the file in the browser.");if(l<1)throw new Error("No data to split in chunks");const f=new Date,d=await window.crypto.subtle.digest("SHA-512",l<10485760?"string"==typeof A?s.buffer:await s.arrayBuffer():"string"==typeof A?s.subarray(0,10485760).buffer:await s.slice(0,10485760).arrayBuffer()),w=new Uint8Array(d),u=Xg(w),y={schemaVersion:i,messageType:o,hash:w,name:r,totalSize:l,date:f};let D=0;const p=Math.max(t,Math.ceil(l/(B*E))),k=new Uint8Array(B),m=new Uint8Array(p*Ve),F=Math.floor(B*(1-E)),S=Math.ceil(B*E);for(let Q=0;Q<p&&!a;Q++){window.crypto.getRandomValues(k);const t=await rQ(0,F),B=l-D,E=Math.min(Math.max(B,0),S);let i=t+E;if(B>0){const e=s.slice(D,D+E);if("string"==typeof A)k.set(e,t);else{const A=await e.arrayBuffer();k.set(new Uint8Array(A),t)}D+=E}else{const A=i+l+1,e=Number.MAX_SAFE_INTEGER-A;i+=await rQ(A,e)}const a=await window.crypto.subtle.digest("SHA-512",k),n=new Uint8Array(a),c=Xg(n);m.set(n,Q*Ve);const h=gQ({...y,chunkStartIndex:t,chunkEndIndex:i,chunkIndex:Q});try{await bg({hash:u,merkleRoot:"",chunkIndex:Q,realChunkHash:c,data:k.buffer,metadata:h.buffer,merkleProof:(new Uint8Array).buffer})}catch{}e.dispatch(sI({roomId:g.id,merkleRootHex:"",sha512Hex:u,fromPeerId:C.peerId,chunkSize:0,totalSize:l,chunksCreated:Q+1,totalChunks:p,messageType:o,filename:r,channelLabel:I,timestamp:f.getTime()}))}if(a)return window.removeEventListener(fQ,n),await xg(void 0,void 0,u),e.dispatch(fI({hashHex:u})),{merkleRoot:new Uint8Array,merkleRootHex:"",hash:new Uint8Array,hashHex:"",totalChunks:0,totalSize:0,messageType:0,chunkHashes:new Uint8Array};const R=await(async(A,e)=>{if(A.length%Ve!==0)throw new Error("Hashes were not passed");const I=A.length/Ve;if(0===I)throw new Error("Cannot calculate Merkle root of tree with no leaves.");if(1===I)return A;const g=e?.wasmMemory??(A=>{const e=tQ((2*A+3)*Ve);return new WebAssembly.Memory({initial:e,maximum:e})})(I),Q=e??await nQ({wasmMemory:g}),t=Q._malloc(I*Ve),B=new Uint8Array(g.buffer,t,I*Ve);B.set(A);const E=Q._malloc(Ve),i=new Uint8Array(g.buffer,E,Ve),C=Q._get_merkle_root(I,B.byteOffset,i.byteOffset);switch(Q._free(t),C){case 0:{const A=Uint8Array.from([...i]);return Q._free(E),A}case-1:throw Q._free(E),new Error("Could not allocate memory for hash concatenation helper array.");case-2:throw Q._free(E),new Error("Could not calculate hash.");default:throw Q._free(E),new Error("Unexpected error occured.")}})(m,Q),G=Xg(R);try{await Hg(g.id,G,u,C.peerId,l,l,o,r,I,f.getTime())}catch(A){console.error(A)}return e.dispatch(sI({roomId:g.id,merkleRootHex:G,sha512Hex:u,fromPeerId:C.peerId,chunkSize:0,totalSize:l,chunksCreated:p,totalChunks:p,messageType:o,filename:r,channelLabel:I,timestamp:f.getTime()})),window.removeEventListener(fQ,n),{merkleRoot:R,merkleRootHex:G,hash:w,hashHex:u,totalSize:l,totalChunks:p,messageType:o,chunkHashes:m}},wQ=async(A,e,I,g,Q)=>{const t=A.length,B=g.length,E=Q?.wasmMemory??EQ(t,B),i=Q??await nQ({wasmMemory:E}),C=i._malloc(t*Uint8Array.BYTES_PER_ELEMENT),a=new Uint8Array(E.buffer,C,t*Uint8Array.BYTES_PER_ELEMENT);a.set(A);const n=i._malloc(je),o=new Uint8Array(E.buffer,n,je);o.set(e);const r=i._malloc(We),s=new Uint8Array(E.buffer,r,We);s.set(I);const c=i._malloc(AI),h=new Uint8Array(E.buffer,c,AI),l=window.crypto.getRandomValues(new Uint8Array(AI));h.set(l);const f=i._malloc(B*Uint8Array.BYTES_PER_ELEMENT),d=new Uint8Array(E.buffer,f,B*Uint8Array.BYTES_PER_ELEMENT);d.set(g);const w=II(t),u=i._malloc(w*Uint8Array.BYTES_PER_ELEMENT),y=new Uint8Array(E.buffer,u,w*Uint8Array.BYTES_PER_ELEMENT),D=i._encrypt_chachapoly_asymmetric(t,a.byteOffset,o.byteOffset,s.byteOffset,h.byteOffset,B,d.byteOffset,y.byteOffset);switch(i._free(C),i._free(n),i._free(r),i._free(c),i._free(f),D){case 0:{const A=Uint8Array.from([...y]);return i._free(u),A}case-1:throw i._free(u),new Error("Could not allocate memory for the ephemeral x25519 public key array.");case-2:throw i._free(u),new Error("Could not allocate memory for the ephemeral x25519 secret key array.");case-3:throw i._free(u),new Error("Could not convert Ed25519 secret key to X25519.");case-4:throw i._free(u),new Error("Could not calculate x25519 public key from x25519 secret key.");case-5:throw i._free(u),new Error("Could not allocate memory for the receiver's ed25519 converted to x25519 public key array.");case-6:throw i._free(u),new Error("Could not convert Ed25519 public key to X25519.");case-7:throw i._free(u),new Error("Could not allocate memory for the shared secret.");case-8:throw i._free(u),new Error("Could not calculate the shared secret.");case-9:throw i._free(u),new Error("Could not encrypt.");default:throw i._free(u),new Error("An unexpected error occured.")}},uQ=async(A,e,I,g,Q)=>{const{keyPair:t,rooms:B}=g.getState(),E=jg(t.secretKey),i=B.findIndex(A=>A.id===e);if(i>-1){const C=B[i].peers,a=B[i].channels,n=Q?a.findIndex(A=>A.label===Q):0;if(-1===n)throw new Error("No channel with label "+Q);const{merkleRoot:o,merkleRootHex:r,hashHex:s,totalSize:c,totalChunks:h}=await dQ(A,g,Q,B[i],I),l=a[n].peerIds.length;for(let A=0;A<l;A++){const B=a[n].peerIds[A],i=C.findIndex(A=>A.peerId===B);if(-1===i)continue;const l=C[i].peerPublicKey,f=jg(l),d=Array.from({length:h},(A,e)=>e),w=hQ(d);for(let A=0;A<h;A++){const i=w[A],C=await Ug(s,i);if(!C)continue;const h=QQ(new Uint8Array(C.data).slice(0,zg));h.chunkStartIndex<h.chunkEndIndex?g.dispatch(sI({roomId:e,merkleRootHex:r,sha512Hex:s,fromPeerId:t.peerId,chunkSize:h.chunkEndIndex-h.chunkStartIndex,totalSize:c,messageType:h.messageType,filename:h.name,channelLabel:Q??a[n].label})):await Pg(r,h.chunkIndex);const l=await wQ(new Uint8Array(C.data),f,E,o,I),d=await Og([o,l]);await g.dispatch(KQ.endpoints.sendMessage.initiate({content:{type:"message",message:Xg(d),roomId:e,fromPeerId:t.peerId,toPeerId:B,label:Q}}))}}}},yQ=async A=>{const e=A?.wasmMemory??(()=>{const A=(je+We)*Uint8Array.BYTES_PER_ELEMENT,e=tQ(A);return new WebAssembly.Memory({initial:e,maximum:e})})(),I=A??await nQ({wasmMemory:e}),g=I._malloc(je),Q=new Uint8Array(e.buffer,g,je),t=I._malloc(We),B=new Uint8Array(e.buffer,t,We),E=I._malloc(Xe),i=new Uint8Array(e.buffer,E,Xe);window.crypto.getRandomValues(i);const C=I._keypair_from_seed(Q.byteOffset,B.byteOffset,i.byteOffset);if(I._free(E),0===C){const A={publicKey:Uint8Array.from(Q),secretKey:Uint8Array.from(B)};return I._free(g),I._free(t),A}throw I._free(g),I._free(t),new Error("An unexpected error occured.")},DQ=async(A,e,I)=>{const g=A.length,Q=I?I.wasmMemory:(A=>{const e=(A+Oe+We+Ve)*Uint8Array.BYTES_PER_ELEMENT,I=tQ(e);return new WebAssembly.Memory({initial:I,maximum:I})})(g),t=I??await nQ({wasmMemory:Q}),B=t._malloc(g*Uint8Array.BYTES_PER_ELEMENT),E=new Uint8Array(Q.buffer,B,g*Uint8Array.BYTES_PER_ELEMENT);E.set(A);const i=t._malloc(Oe),C=new Uint8Array(Q.buffer,i,Oe),a=t._malloc(We),n=new Uint8Array(Q.buffer,a,We);n.set(e),t._sign(g,E.byteOffset,n.byteOffset,C.byteOffset);const o=Uint8Array.from([...C]);return t._free(B),t._free(i),t._free(a),o},pQ=(A,e)=>new Promise((I,g)=>{try{(A.length<=0||A.length>32)&&g(new Error("Label larger than 128 characters")),"string"==typeof e&&e.length!==2*Ve?g(new Error("Merkle root hex should be 128 bytes")):"string"!=typeof e&&e.length!==Ve&&g(new Error("Merkle root should be 64 bytes"));let Q="";const t=(new TextEncoder).encode(A),B=new Uint8Array(32);B.set(t.subarray(0,Math.min(32,t.length))),Q+=Xg(B),Q+="~",Q+="string"==typeof e?e:Xg(e),I(Q)}catch(A){g(A)}}),kQ=A=>new Promise((e,I)=>{try{const g=A.split("~"),Q=g.length;2!==Q&&Q>1?I(new Error(`Channel message label needs to have ${String(2)} components.`)):1===Q&&e({channelLabel:A,merkleRootHex:"",merkleRoot:new Uint8Array});const t=jg(g[0]);32!==t.length&&I(new Error("Channel label is not 128 bytes long."));const B=(new TextDecoder).decode(t).replace(/\0+$/,""),E=jg(g[1]);E.length!==Ve&&I(new Error("Merkle root has invalid length")),e({channelLabel:B,merkleRoot:E,merkleRootHex:g[1]})}catch(A){I(A)}}),mQ=async({channel:A,epc:e,roomId:I,dataChannels:g},Q)=>{const{keyPair:t,rooms:B}=Q.getState(),E=jg(e.withPeerPublicKey),i=jg(t.secretKey),C=B.findIndex(A=>A.id===I);let a=e.rooms.findLastIndex(A=>A.roomId===I);if(-1===a){const A=iQ(),g=await nQ({wasmMemory:A});a=e.rooms.length,e.rooms.push({roomId:I,receiveMessageModule:g})}const n=new Set,o=new Map;let r=!1;if("string"==typeof A){const I=g.findIndex(I=>I.label===A&&I.withPeerId===e.withPeerId);if(I>-1&&"open"===g[I].readyState)return g[I]}const s="string"==typeof A?A:A.label,{channelLabel:c,merkleRoot:h,merkleRootHex:l}=await kQ(s),f="string"==typeof A?e.createDataChannel(A,{ordered:!1,protocol:"raw"}):A;f.binaryType="arraybuffer",f.bufferedAmountLowThreshold=Wg,f.onbufferedamountlow=async()=>{for(;"open"===f.readyState;){const A=await Mg(s,e.withPeerId);if(0===A.length)break;for(;A.length>0&&f.bufferedAmount<Zg&&"open"===f.readyState;){let I=await rQ(0,A.length);I===A.length&&(I=0);const[g]=A.splice(I,1);"open"===f.readyState&&(f.send(g.encryptedData),await Ng(s,e.withPeerId,g.position))}}};const d=f;let w,u,y,D,p,k,m,F,S,R;d.withPeerId=e.withPeerId,d.roomIds=[I];const G=async A=>{if(w&&y&&p&&m&&S&&u&&D&&k&&F&&R)try{D.set([...A]);const{date:g,chunkSize:t,chunkIndex:B,receivedFullSize:E,chunkAlreadyExists:i,totalSize:C,messageType:n,filename:o,chunkHash:r,messageHash:s}=await(async(A,e,I,g,Q,t)=>{switch(t._receive_message(A.byteOffset,e.byteOffset,I.byteOffset,g.byteOffset,Q.byteOffset)){case 0:{const e=A.slice(0,zg),g=A.slice(zg+_g),Q=QQ(e),t=g.slice(Q.chunkStartIndex,Q.chunkEndIndex),B=await window.crypto.subtle.digest("SHA-512",g),E=new Uint8Array(B),i=Q.chunkEndIndex-Q.chunkStartIndex>Q.totalSize||Q.chunkEndIndex-Q.chunkStartIndex>Wg?0:Q.chunkEndIndex-Q.chunkStartIndex;if(0===i)return{date:Q.date,chunkIndex:-1,chunkSize:0,receivedFullSize:!1,chunkAlreadyExists:!0,totalSize:Q.totalSize,messageType:Q.messageType,filename:Q.name,chunkHash:E,messageHash:Q.hash};const C=Xg(I),a=await(A=>mg("getDBMessageData",A,void 0))(C),n=null!=a&&a.savedSize===a.totalSize,o=!a||a.savedSize+i<=a.totalSize,r=n||i===Q.totalSize||null!=a&&a.savedSize+i===a.totalSize;if(!o)return{date:Q.date,chunkIndex:-1,chunkSize:i,receivedFullSize:r,chunkAlreadyExists:!0,totalSize:Q.totalSize,messageType:Q.messageType,filename:Q.name,chunkHash:E,messageHash:Q.hash};const s=Yg(Q.messageType);try{return await Jg({merkleRoot:C,hash:Xg(Q.hash),chunkIndex:Q.chunkIndex,data:t.buffer,mimeType:s}),{date:Q.date,chunkIndex:Q.chunkIndex,chunkSize:i,receivedFullSize:r,chunkAlreadyExists:!1,totalSize:Q.totalSize,messageType:Q.messageType,filename:Q.name,chunkHash:E,messageHash:Q.hash}}catch(A){return{date:Q.date,chunkIndex:Q.chunkIndex,chunkSize:0,receivedFullSize:null!=a&&r,chunkAlreadyExists:!0,totalSize:0,messageType:Q.messageType,filename:Q.name,chunkHash:E,messageHash:Q.hash}}}case-1:return console.error("Message signature is wrong"),{date:new Date,chunkIndex:-1,chunkSize:0,receivedFullSize:!1,chunkAlreadyExists:!1,totalSize:0,messageType:qg.Text,filename:"",chunkHash:new Uint8Array,messageHash:new Uint8Array};case-2:return console.error("Could not decrypt message"),{date:new Date,chunkIndex:-1,chunkSize:0,receivedFullSize:!1,chunkAlreadyExists:!1,totalSize:0,messageType:qg.Text,filename:"",chunkHash:new Uint8Array,messageHash:new Uint8Array};case-3:return console.error("Merkle proof length is wrong"),{date:new Date,chunkIndex:-1,chunkSize:0,receivedFullSize:!1,chunkAlreadyExists:!1,totalSize:0,messageType:qg.Text,filename:"",chunkHash:new Uint8Array,messageHash:new Uint8Array};case-4:return console.error("Could not allocate memory for hash"),{date:new Date,chunkIndex:-1,chunkSize:0,receivedFullSize:!1,chunkAlreadyExists:!1,totalSize:0,messageType:qg.Text,filename:"",chunkHash:new Uint8Array,messageHash:new Uint8Array};case-5:return console.error("Could not hash chunk"),{date:new Date,chunkIndex:-1,chunkSize:0,receivedFullSize:!1,chunkAlreadyExists:!1,totalSize:0,messageType:qg.Text,filename:"",chunkHash:new Uint8Array,messageHash:new Uint8Array};case-6:return console.error("Could not verify Merkle proof"),{date:new Date,chunkIndex:-1,chunkSize:0,receivedFullSize:!1,chunkAlreadyExists:!1,totalSize:0,messageType:qg.Text,filename:"",chunkHash:new Uint8Array,messageHash:new Uint8Array};default:return console.error("Unexpected error occured."),{date:new Date,chunkIndex:-1,chunkSize:0,receivedFullSize:!1,chunkAlreadyExists:!1,totalSize:0,messageType:qg.Text,filename:"",chunkHash:new Uint8Array,messageHash:new Uint8Array}}})(u,D,k,F,R,e.rooms[a].receiveMessageModule),h=Xg(s);E?(await Hg(I,l,h,e.withPeerId,C,C,n,o,c,g.getTime()),Q.dispatch(cI({roomId:I,merkleRootHex:l,sha512Hex:h,fromPeerId:e.withPeerId,totalSize:C,messageType:n,filename:o,channelLabel:c,timestamp:g.getTime(),alsoSendFinishedMessage:!0}))):t>0&&B>-1&&!i&&(await Hg(I,l,h,e.withPeerId,t,C,n,o,c,g.getTime()),Q.dispatch(sI({roomId:I,merkleRootHex:l,sha512Hex:h,fromPeerId:e.withPeerId,chunkSize:t,totalSize:C,messageType:n,filename:o,channelLabel:c,timestamp:g.getTime()}))),C>0&&r.length===Ve&&"open"===d.readyState&&!i&&d.send(r.buffer)}catch(A){console.error(A)}},H=async()=>{r=!0;try{for(;n.size>0;){const A=n.values().next();if(A.done)break;const e=A.value;n.delete(e);const I=o.get(e);I&&(o.delete(e),await G(I))}}finally{r=!1,n.size>0&&await H()}};return d.onclose=async()=>{console.log(`Channel with label ${d.label} has closed.`),a&&e.rooms[a]&&(w&&e.rooms[a].receiveMessageModule._free(w),y&&e.rooms[a].receiveMessageModule._free(y),p&&e.rooms[a].receiveMessageModule._free(p),m&&e.rooms[a].receiveMessageModule._free(m),S&&e.rooms[a].receiveMessageModule._free(S)),await Q.dispatch(JQ.endpoints.disconnectFromPeerChannelLabel.initiate({peerId:e.withPeerId,label:d.label})),"main"===d.label&&Q.dispatch(EI({roomId:I,connectingToPeers:!0}))},d.onerror=async A=>{console.error(A),await Q.dispatch(JQ.endpoints.disconnectFromPeerChannelLabel.initiate({peerId:e.withPeerId,label:d.label})),Q.dispatch(EI({roomId:I,connectingToPeers:!0}))},d.onmessage=async A=>{const e=A.data,I=new Uint8Array(e);if(C>-1&&I.byteLength===Ve)try{await(async(A,e,I,g,Q)=>{try{const t=Q.filter(A=>A.label===e.label),B=Xg(A),{channelLabel:E,merkleRootHex:i}=await kQ(e.label),C=I.messages.findLastIndex(A=>A.merkleRootHex===i);if(C<0)return;const a=I.messages[C].sha512Hex;if(B===a){g.dispatch(cI({roomId:I.id,merkleRootHex:i,sha512Hex:a,fromPeerId:I.messages[C].fromPeerId,totalSize:I.messages[C].totalSize,messageType:I.messages[C].messageType,filename:I.messages[C].filename,channelLabel:E,timestamp:I.messages[C].timestamp}));const A=jg(a);await g.dispatch(JQ.endpoints.disconnectFromChannelLabel.initiate({label:e.label,messageHash:A,alsoDeleteData:!1}))}else{const A=await Ug(B),e=A?.chunkIndex??-1;if(A&&e>-1){const A=I.messages.findLastIndex(A=>A.merkleRootHex===i),Q=await((A,e)=>mg("getDBChunk",A,e))(i,e),C=Q?.byteLength??0;Q&&A>-1&&C>0&&I.messages[A].savedSize+C<=I.messages[A].totalSize?(g.dispatch(sI({roomId:I.id,merkleRootHex:i,sha512Hex:a,fromPeerId:I.messages[A].fromPeerId,chunkSize:C,totalSize:I.messages[A].totalSize,messageType:I.messages[A].messageType,filename:I.messages[A].filename,channelLabel:E,timestamp:I.messages[A].timestamp})),1===t.length&&await xg(void 0,B)):-1===A&&console.log("No message with hex "+a)}}}catch(A){throw console.error(A),A}})(I,d,B[C],Q,g)}catch(A){console.error(A)}else if(I.byteLength===Wg){const A=Xg(I.subarray(0,16));o.has(A)||(o.set(A,I),n.add(A)),r||await H()}else console.error(new Error("Wrong data length received"))},d.onopen=()=>{console.log(`Channel with label "${d.label}" and client ${e.withPeerId} is open.`),g.push(d),""===l&&c.length>0&&Q.dispatch(oI({roomId:I,label:s,peerId:d.withPeerId}));try{w=e.rooms[a].receiveMessageModule._malloc(eQ),u=new Uint8Array(e.rooms[a].receiveMessageModule.wasmMemory.buffer,w,eQ),y=e.rooms[a].receiveMessageModule._malloc(Wg),D=new Uint8Array(e.rooms[a].receiveMessageModule.wasmMemory.buffer,y,Wg),p=e.rooms[a].receiveMessageModule._malloc(Ve),k=new Uint8Array(e.rooms[a].receiveMessageModule.wasmMemory.buffer,p,Ve),k.set(h),m=e.rooms[a].receiveMessageModule._malloc(je),F=new Uint8Array(e.rooms[a].receiveMessageModule.wasmMemory.buffer,m,je),F.set(E),S=e.rooms[a].receiveMessageModule._malloc(We),R=new Uint8Array(e.rooms[a].receiveMessageModule.wasmMemory.buffer,S,We),R.set(i)}catch(A){console.error(A)}},d},FQ=async({peerId:A,peerPublicKey:e,roomId:I,peerConnections:g,rtcConfig:Q},t)=>{const{keyPair:B}=t.getState();if(Q??=QI,!o(A))throw new Error("PeerId is not a valid uuidv4");if(64!==e.length)throw new Error("Peer public key is not a valid length");const E=g.findIndex(e=>e.withPeerId===A);if(E>-1){if(-1===g[E].rooms.findIndex(A=>A.roomId===I)){const A=iQ(),e=await nQ({wasmMemory:A});g[E].rooms.push({roomId:I,receiveMessageModule:e})}return g[E]}const i=new RTCPeerConnection(Q);i.withPeerId=A,i.withPeerPublicKey=e,i.makingOffer=!1,i.iceCandidates=[];const C=iQ(),a=await nQ({wasmMemory:C});return i.rooms=[{roomId:I,receiveMessageModule:a}],i.onnegotiationneeded=async()=>{try{i.makingOffer=!0,await i.setLocalDescription(),i.localDescription&&(await t.dispatch(KQ.endpoints.sendMessage.initiate({content:{type:"description",description:i.localDescription,fromPeerId:B.peerId,fromPeerPublicKey:B.publicKey,toPeerId:A,roomId:I}})),console.log(`Negotiation was needed with ${A} and you sent a description ${i.localDescription.type}.`))}catch(A){console.error(A)}finally{i.makingOffer=!1}},i.onicecandidate=async({candidate:e})=>{e&&""!==e.candidate&&await t.dispatch(KQ.endpoints.sendMessage.initiate({content:{type:"candidate",candidate:e,fromPeerId:B.peerId,toPeerId:A,roomId:I}}))},i.onicecandidateerror=A=>{console.error(A)},i.oniceconnectionstatechange=async()=>{if("failed"===i.iceConnectionState){const{signalingServer:A}=t.getState();!A.isConnected&&!A.isEstablishingConnection&&A.serverUrl.length>0&&await t.dispatch(KQ.endpoints.connectWebSocket.initiate(A.serverUrl)),i.restartIce()}console.log(`ICE candidate connection state with ${A} is ${i.iceConnectionState}.`)},i.onicegatheringstatechange=()=>{console.log(`ICE gathering state with ${A} is ${i.iceGatheringState}.`)},i.onsignalingstatechange=async()=>{console.log(`Signaling state with ${A} is ${i.signalingState}.`),"stable"===i.signalingState&&i.remoteDescription&&await(async A=>{for(;A.iceCandidates.length>0&&"stable"===A.signalingState&&A.remoteDescription;){const e=A.iceCandidates.shift();if(e){const I=new RTCIceCandidate(e);I.usernameFragment!==e.usernameFragment&&await A.addIceCandidate(I)}}})(i)},i.onconnectionstatechange=async()=>{if("closed"===i.connectionState||"failed"===i.connectionState||"disconnected"===i.connectionState){if(await t.dispatch(JQ.endpoints.disconnectFromPeer.initiate({peerId:A})),console.error(`Connection with peer ${A} has ${i.connectionState}.`),"closed"===i.connectionState){const{signalingServer:A}=t.getState();A.isConnected&&await t.dispatch(KQ.endpoints.sendMessage.initiate({content:{type:"peers",fromPeerId:B.peerId,roomId:I}}))}}else"connected"===i.connectionState&&(t.dispatch(nI({roomId:I,peerId:A,peerPublicKey:e})),console.log(`Connection status with peer ${A} is ${i.connectionState}.`))},i},SQ=async(A,e,I,g,Q,t,B,E,i)=>{let C=!1;const{merkleRootHex:a}=await kQ(A.label),n=hQ(Array.from({length:I},(A,e)=>e)),{ptr1:o,ptr2:r,ptr3:s,ptr5:c,ptr6:h,ptr7:l,ptr9:f,ptr10:d,senderEphemeralPublicKey:w,senderEphemeralSecretKey:u,seedBytes:y,senderEphemeralSignature:D,chunkArray:p,receiverPublicKeyArray:k,nonceArray:m,encryptedArray:F}=(A=>{const e=A._malloc(je),I=new Uint8Array(A.wasmMemory.buffer,e,je),g=A._malloc(We),Q=new Uint8Array(A.wasmMemory.buffer,g,We),t=A._malloc(Xe),B=new Uint8Array(A.wasmMemory.buffer,t,Xe),E=A._malloc(We),i=A._malloc(Oe),C=new Uint8Array(A.wasmMemory.buffer,i,Oe),a=A._malloc(eQ),n=new Uint8Array(A.wasmMemory.buffer,a,eQ),o=A._malloc(je),r=new Uint8Array(A.wasmMemory.buffer,o,je),s=A._malloc(Ve),c=A._malloc(AI),h=new Uint8Array(A.wasmMemory.buffer,c,AI),l=A._malloc(IQ);return{ptr1:e,ptr2:g,ptr3:t,ptr4:E,ptr5:i,ptr6:a,ptr7:o,ptr8:s,ptr9:c,ptr10:l,senderEphemeralPublicKey:I,senderEphemeralSecretKey:Q,seedBytes:B,senderEphemeralSignature:C,chunkArray:n,receiverPublicKeyArray:r,nonceArray:h,encryptedArray:new Uint8Array(A.wasmMemory.buffer,l,IQ)}})(E),S=B.withPeerPublicKey;k.set(jg(S));for(let B=0;B<I;B++){const I=n[B];if(window.crypto.getRandomValues(y),0!==E._keypair_from_seed(w.byteOffset,u.byteOffset,y.byteOffset))continue;if(0!==E._sign(je,w.byteOffset,e.byteOffset,D.byteOffset))continue;const o=await Ug(t,I);if(!o)continue;const r=new Uint8Array(o.metadata),s=QQ(r);if(s.chunkStartIndex>=0&&s.chunkEndIndex>s.chunkStartIndex&&s.chunkEndIndex-s.chunkStartIndex<=s.totalSize){const A=Yg(s.messageType),e=o.data.slice(s.chunkStartIndex,s.chunkEndIndex);await Jg({merkleRoot:a,hash:t,chunkIndex:s.chunkIndex,data:e,mimeType:A})}const c=new Uint8Array(_g);if(0===o.merkleProof.byteLength){const e=await oQ(g,jg(o.realChunkHash),i,_g);c.set(e);try{await bg({hash:t,merkleRoot:a,realChunkHash:o.realChunkHash,chunkIndex:I,data:o.data,metadata:o.metadata,merkleProof:c.buffer})}catch(A){console.warn(A)}}else if(c.set(new Uint8Array(o.merkleProof)),0===o.merkleRoot.length)try{await bg({hash:t,merkleRoot:a,realChunkHash:o.realChunkHash,chunkIndex:I,data:o.data,metadata:o.metadata,merkleProof:o.merkleProof})}catch(A){console.warn(A)}if(eQ!==r.length+c.length+new Uint8Array(o.data).length)continue;const h=await Og([r,c,new Uint8Array(o.data)]);if(p.set(h),window.crypto.getRandomValues(m),0!==E._encrypt_chachapoly_asymmetric(eQ,p.byteOffset,k.byteOffset,u.byteOffset,m.byteOffset,Ve,Q.byteOffset,F.byteOffset))continue;const l=await Og([w,D,F]);if("open"===A.readyState&&A.bufferedAmount<Zg)A.send(l.buffer);else{if("closed"===A.readyState){console.log("Cannot send message because channel is "+A.readyState+" and bufferedAmount is "+String(A.bufferedAmount));break}C=!0;try{await vg({position:I,label:A.label,toPeerId:A.withPeerId,encryptedData:l.buffer})}catch(A){console.error(A)}}}if(C)for(;"open"===A.readyState&&A.bufferedAmount<Zg;){const e=await Mg(A.label,B.withPeerId);for(;e.length>0&&A.bufferedAmount<Zg&&"open"===A.readyState;){let I=await rQ(0,e.length);I===e.length&&(I=0);const[g]=e.splice(I,1);if("open"===A.readyState){A.send(g.encryptedData);try{await Ng(A.label,B.withPeerId,g.position)}catch(A){console.error(A)}}}}E._free(o),E._free(r),E._free(s),E._free(c),E._free(h),E._free(l),E._free(f),E._free(d)},RQ=[],GQ=[],HQ=[],UQ=EQ(AQ,Ve),MQ=(A=>{const e=A*Uint8Array.BYTES_PER_ELEMENT+4*Ve,I=tQ(e);return new WebAssembly.Memory({initial:I,maximum:I})})(_g),JQ=ug({reducerPath:"webrtcApi",baseQuery:async({peerId:A,peerPublicKey:e,roomId:I,initiator:g,rtcConfig:Q,peerConnections:t,dataChannels:B},E)=>{const{keyPair:i}=E.getState();if(A===i.peerId)throw new Error("Cannot create a connection with oneself.");if(await Sg(A))return{data:void 0};const C=t.findIndex(e=>e.withPeerId===A);if(-1===C){const i=await FQ({peerId:A,peerPublicKey:e,roomId:I,peerConnections:t,rtcConfig:Q},E);i.ondatachannel=async A=>{await mQ({channel:A.channel,epc:i,roomId:I,dataChannels:B},E)},t.push(i),g&&await mQ({channel:"main",epc:i,roomId:I,dataChannels:B},E)}else{const g=t[C];if("connected"===g.connectionState){const Q=iQ(),t=await nQ({wasmMemory:Q});g.rooms.push({roomId:I,receiveMessageModule:t}),E.dispatch(nI({roomId:I,peerId:A,peerPublicKey:e}));const i=B.length;for(let e=0;e<i;e++)B[e].withPeerId===A&&B[e].roomIds.push(I);const{rooms:C}=E.getState(),a=C.length;for(let e=0;e<a;e++){const g=C[e].channels.findIndex(e=>e.peerIds.includes(A));g>-1&&E.dispatch(oI({roomId:I,label:C[e].channels[g].label,peerId:A}))}}}return{data:void 0}},endpoints:A=>({connectWithPeer:A.mutation({query:({peerId:A,peerPublicKey:e,roomId:I,initiator:g=!1,rtcConfig:Q={iceServers:[{urls:["stun:stun.p2party.com:3478"]}]}})=>({peerId:A,peerPublicKey:e,roomId:I,initiator:g,rtcConfig:Q,peerConnections:RQ,dataChannels:HQ})}),setDescription:A.mutation({queryFn:(A,e,I)=>(async({peerId:A,peerPublicKey:e,roomId:I,description:g,rtcConfig:Q,peerConnections:t,iceCandidates:B,dataChannels:E},i)=>{const{keyPair:C}=i.getState(),a=t.findIndex(e=>e.withPeerId===A),n=a>-1?t[a]:await FQ({peerId:A,peerPublicKey:e,roomId:I,peerConnections:t,rtcConfig:Q},i);-1!==a&&null!=t[a].ondatachannel||(n.ondatachannel=async A=>{await mQ({channel:A.channel,epc:n,roomId:I,dataChannels:E},i)});const o=B.length,r=[];for(let e=0;e<o;e++)B[e].withPeerId===A&&(r.push(e),n.iceCandidates.push(B[e]));const s=r.length;for(let A=0;A<s;A++)B.splice(r[A],1);-1===a&&t.push(n);const c="offer"===g.type&&(n.makingOffer||"stable"!==n.signalingState);if(!(C.peerId<n.withPeerId)&&c)return{data:void 0};if("closed"!==n.signalingState){if(await n.setRemoteDescription(g),"offer"===g.type){await n.setLocalDescription();const e=n.localDescription;e&&await i.dispatch(KQ.endpoints.sendMessage.initiate({content:{type:"description",description:e,fromPeerId:C.peerId,fromPeerPublicKey:C.publicKey,toPeerId:A,roomId:I}}))}}else await i.dispatch(JQ.endpoints.disconnectFromPeer.initiate({peerId:n.withPeerId})),await i.dispatch(KQ.endpoints.sendMessage.initiate({content:{type:"peers",fromPeerId:C.peerId,roomId:I}}));return"connected"===n.connectionState&&a>-1&&await mQ({channel:"main",epc:n,roomId:I,dataChannels:E},i),{data:void 0}})({...A,peerConnections:RQ,iceCandidates:GQ,dataChannels:HQ},e)}),setCandidate:A.mutation({queryFn:(A,e,I)=>(async({peerId:A,candidate:e,peerConnections:I,iceCandidates:g},Q)=>{const{keyPair:t}=Q.getState(),B=I.findIndex(e=>e.withPeerId===A);if(B>-1){const A=I[B],g=new RTCIceCandidate(e);if(A.remoteDescription&&"stable"===A.signalingState)try{await A.addIceCandidate(g)}catch(e){const I=A.makingOffer||"stable"!==A.signalingState;!(t.peerId<A.withPeerId)&&I||(await Q.dispatch(JQ.endpoints.disconnectFromPeer.initiate({peerId:A.withPeerId})),A.restartIce())}else A.iceCandidates.push(g)}else g.push({...e,withPeerId:A});return{data:void 0}})({...A,peerConnections:RQ,iceCandidates:GQ},e)}),openChannel:A.mutation({queryFn:(A,e,I)=>(async({roomId:A,channel:e,withPeers:I,peerConnections:g,dataChannels:Q},t)=>{const{keyPair:B}=t.getState();if(I&&I.length>0){const E=I.length;for(let i=0;i<E;i++){if(B.peerId===I[i].peerId)continue;const E=g.findIndex(A=>A.withPeerId===I[i].peerId);if(E>-1){const I=g[E];await mQ({channel:e,epc:I,roomId:A,dataChannels:Q},t)}}}else{const I=g.length;for(let B=0;B<I;B++){const I=g[B];await mQ({channel:e,epc:I,roomId:A,dataChannels:Q},t)}}return{data:void 0}})({...A,peerConnections:RQ,dataChannels:HQ},e)}),sendMessage:A.mutation({queryFn:(A,e,I)=>(async({data:A,label:e,roomId:I,peerConnections:g,dataChannels:Q,encryptionWasmMemory:t,merkleWasmMemory:B,minChunks:E,chunkSize:i,percentageFilledChunk:C,metadataSchemaVersion:a},n)=>{const o=await nQ({wasmMemory:t}),r=await nQ({wasmMemory:B});return await(async(A,e,I,g,Q,t,B,E,i=1,C=AQ,a=.9,n=1)=>{try{const{rooms:o,keyPair:r}=e.getState(),s=o.findIndex(A=>A.id===g);if(s>-1){const c=o[s].channels.findIndex(A=>A.label===I);if(-1===c)throw new Error("No channel with label "+I);const{merkleRoot:h,merkleRootHex:l,hashHex:f,totalChunks:d,chunkHashes:w}=await dQ(A,e,I,o[s],E,i,C,a,n);if(0===h.length||0===f.length||0===d||0===w.length)return;const u=await pQ(I,l),y=B._malloc(We),D=new Uint8Array(B.wasmMemory.buffer,y,We);D.set(jg(r.secretKey));const p=B._malloc(Ve),k=new Uint8Array(B.wasmMemory.buffer,p,Ve);k.set(h);const m=o[s].channels[c].peerIds.length,F=[];for(let A=0;A<m;A++){const I=Q.findIndex(e=>e.withPeerId===o[s].channels[c].peerIds[A]);if(-1===I)continue;const i=await mQ({channel:u,epc:Q[I],roomId:g,dataChannels:t},e);F.push(SQ(i,D,d,w,k,f,Q[I],B,E))}await Promise.allSettled(F),B._free(y),B._free(p)}}catch(A){console.trace(A)}})(A,n,e,I,g,Q,o,r,E,i,C,a),{data:void 0}})({...A,peerConnections:RQ,dataChannels:HQ,encryptionWasmMemory:UQ,merkleWasmMemory:MQ},e)}),disconnect:A.mutation({queryFn:(A,e,I)=>(async({alsoDeleteDB:A,peerConnections:e,dataChannels:I},g)=>{const Q=I.length;for(let A=0;A<Q;A++)"open"===I[A].readyState&&I[A].close();const t=e.length;for(let A=0;A<t;A++)await g.dispatch(JQ.endpoints.disconnectFromPeer.initiate({peerId:e[A].withPeerId}));return A&&await mg("deleteDB"),{data:void 0}})({...A,peerConnections:RQ,dataChannels:HQ},e)}),disconnectFromRoom:A.mutation({queryFn:(A,e,I)=>(async({roomId:A,deleteMessages:e,peerConnections:I,dataChannels:g},Q)=>{const t=g.length;for(let e=0;e<t;e++){if(!g[e]||!g[e].roomIds.includes(A)||"open"!==g[e].readyState)continue;const I=g[e].roomIds.findIndex(e=>e===A);I>-1&&(g[e].roomIds.splice(I,1),0===g[e].roomIds.length&&g[e].close())}const B=I.length;for(let e=0;e<B;e++){if(!I[e]||"connected"!==I[e].connectionState)continue;const g=I[e].rooms.findIndex(e=>e.roomId===A);-1!==g&&(I[e].rooms.splice(g,1),0===I[e].rooms.length&&await Q.dispatch(JQ.endpoints.disconnectFromPeer.initiate({peerId:I[e].withPeerId})))}if(e&&(await Rg()).findIndex(e=>e.roomId===A)>-1){await(A=>mg("deleteDBUniqueRoom",A))(A);const e=await Gg(A),I=e.length;for(let A=0;A<I;A++)Q.dispatch(fI({merkleRootHex:e[A].merkleRoot}))}return{data:void 0}})({...A,peerConnections:RQ,dataChannels:HQ},e)}),disconnectFromAllRooms:A.mutation({queryFn:(A,e,I)=>(async({deleteMessages:A,exceptionRoomIds:e,peerConnections:I,dataChannels:g},Q)=>{let t,B=0;const E=g.length;for(t=0;t<E;t++)if(g[t]&&"open"===g[t].readyState)if(e&&e.length>0){const A=g[t].roomIds.length,I=[];for(B=0;B<A;B++)e.includes(g[t].roomIds[B])||I.push(B);const Q=I.length;for(B=0;B<Q;B++)g[t].roomIds.splice(I[B],1);0===g[t].roomIds.length&&g[t].close()}else g[t].close();const i=I.length;for(t=0;t<i;t++)if(I[t]&&"connected"===I[t].connectionState)if(e&&e.length>0){const A=I[t].rooms.length,g=[];for(B=0;B<A;B++)e.includes(I[t].rooms[B].roomId)||g.push(B);const E=g.length;for(B=0;B<E;B++)I[t].rooms.splice(g[B],1);0===I[t].rooms.length&&await Q.dispatch(JQ.endpoints.disconnectFromPeer.initiate({peerId:I[t].withPeerId}))}else await Q.dispatch(JQ.endpoints.disconnectFromPeer.initiate({peerId:I[t].withPeerId}));if(A){const{rooms:A}=Q.getState(),I=A.length;for(t=0;t<I;t++){if(e&&e.includes(A[t].id))continue;const I=A[t].messages.length;for(B=0;B<I;B++)Q.dispatch(fI({merkleRootHex:A[t].messages[B].merkleRootHex}))}}return{data:void 0}})({...A,peerConnections:RQ,dataChannels:HQ},e)}),disconnectFromPeer:A.mutation({queryFn:(A,e,I)=>(({peerId:A,alsoDeleteData:e,peerConnections:I,dataChannels:g},Q)=>{Q.dispatch(hI({peerId:A}));const t=I.findIndex(e=>e.withPeerId===A);t>-1&&(I[t].ontrack=null,I[t].ondatachannel=null,I[t].onicecandidate=null,I[t].onicecandidateerror=null,I[t].onnegotiationneeded=null,I[t].onsignalingstatechange=null,I[t].onconnectionstatechange=null,I[t].onicegatheringstatechange=null,I[t].oniceconnectionstatechange=null,"failed"!==I[t].connectionState&&"connected"!==I[t].connectionState||I[t].close(),I.splice(t,1));const B=g.length;for(let e=0;e<B;e++)g[e].withPeerId===A&&"open"===g[e].readyState&&g[e].close();if(e){const{rooms:e}=Q.getState(),I=e.length;for(let g=0;g<I;g++){const I=e[g].messages.length;for(let t=0;t<I;t++)e[g].messages[t].fromPeerId===A&&Q.dispatch(fI({merkleRootHex:e[g].messages[t].merkleRootHex}))}}return{data:void 0}})({...A,peerConnections:RQ,dataChannels:HQ},e)}),disconnectFromChannelLabel:A.mutation({queryFn:(A,e,I)=>(async({label:A,messageHash:e,alsoDeleteData:I,alsoSendFinishedMessage:g,dataChannels:Q},t)=>{const B=Q.length;if(0===B)return{data:void 0};for(let E=0;E<B;E++)if(Q[E]&&Q[E].label===A&&"open"===Q[E].readyState&&(e&&g&&e.length===Ve&&Q[E].send(e.buffer),Q[E].close(),I)){const{merkleRootHex:e}=await kQ(A);I&&t.dispatch(fI({merkleRootHex:e}))}return{data:void 0}})({...A,dataChannels:HQ},e)}),disconnectFromPeerChannelLabel:A.mutation({queryFn:(A,e,I)=>(async({peerId:A,label:e,peerConnections:I,dataChannels:g},Q)=>{const t=g.findIndex(I=>I.label===e&&I.withPeerId===A);t>-1&&g[t]&&(g[t].onopen=null,g[t].onclose=null,g[t].onerror=null,g[t].onclosing=null,g[t].onmessage=null,g[t].onbufferedamountlow=null,"open"===g[t].readyState&&g[t].close(),g.splice(t,1),Q.dispatch(lI({peerId:A,label:e})),await Ng(e,A));const{merkleRootHex:B}=await kQ(e);B.length>0&&g.findIndex(A=>{const e=A.label.split("~");return 2===e.length&&e[1]===B})<0&&await xg(B);const{rooms:E}=Q.getState(),i=E.length;let C=!1;for(let e=0;e<i;e++){const I=E[e].channels.length;for(let g=0;g<I;g++)if(E[e].channels[g].peerIds.includes(A)){C=!0;break}if(C)break}if(!C){const e=I.findIndex(e=>e.withPeerId===A);e>-1&&("failed"===I[e].connectionState||"connected"===I[e].connectionState)&&await Q.dispatch(JQ.endpoints.disconnectFromPeer.initiate({peerId:I[e].withPeerId}))}return{data:void 0}})({...A,peerConnections:RQ,dataChannels:HQ},e)})})}),bQ=EQ(65536-Ve-AI-Ze,Ve),vQ=(A,e,I=10,g=20)=>{let Q=0;const t=setInterval(()=>{A.readyState===WebSocket.OPEN?(clearInterval(t),e()):(Q+=1,console.log(`Waiting for connection... Attempt ${String(Q)}`),Q>=I&&(clearInterval(t),console.log("WebSocket failed to connect after multiple attempts, closing..."),A.removeEventListener("message",()=>{}),A.removeEventListener("open",()=>{}),A.removeEventListener("close",()=>{}),A.close()))},g)};let PQ=null;const xQ=(A,e)=>(PQ&&(PQ.removeEventListener("message",()=>{}),PQ.removeEventListener("open",()=>{}),PQ.removeEventListener("close",()=>{}),PQ.close(),PQ=null,console.log("WebSocket manually disconnected")),e.dispatch(DI.disconnect()),{data:void 0}),NQ=(A,e)=>{if(PQ&&PQ.readyState===WebSocket.OPEN){const{keyPair:I}=e.getState();return o(I.peerId)&&i(I.challenge)&&i(I.signature)&&128===I.signature.length&&64===I.challenge.length&&vQ(PQ,()=>{PQ.send(JSON.stringify(A.content))}),{data:void 0}}return console.warn("WebSocket is not open"),{data:void 0}},qQ=async({peerId:A,peerPublicKey:e,roomId:I},g)=>{if(PQ&&PQ.readyState===WebSocket.OPEN){const{keyPair:Q}=g.getState();if(o(Q.peerId)&&i(Q.challenge)&&i(Q.signature)&&128===Q.signature.length&&64===Q.challenge.length&&o(A)&&64===e.length&&o(I)){g.dispatch(nI({roomId:I,peerId:A,peerPublicKey:e}));const t=[];g.dispatch(oI({roomId:I,label:"main",peerId:A})),t.push("main"),g.dispatch(oI({roomId:I,label:"signaling",peerId:A})),t.push("signaling"),vQ(PQ,()=>{PQ.send(JSON.stringify({type:"connection",roomId:I,fromPeerId:Q.peerId,toPeerId:A,labels:t}))});const B=t.length,E=await nQ({wasmMemory:bQ});for(let A=0;A<B;A++){const e=`Connected with ${Q.peerId} on channel ${t[A]}`;await uQ(e,I,E,g,t[A])}}return{data:void 0}}return console.warn("WebSocket is not open"),{data:void 0}},KQ=ug({reducerPath:"signalingServerApi",baseQuery:async({signalingServerUrl:A},e)=>{const{signalingServer:I}=e.getState();if(PQ||I.isConnected||I.isEstablishingConnection)return console.log("WebSocket already connected"),{data:void 0};e.dispatch(DI.startConnecting(A));try{const{keyPair:I}=e.getState();let g=localStorage.getItem("publicKey")??"",Q=localStorage.getItem("secretKey")??"";if(0===I.secretKey.length&&0===Q.length){const A=await yQ();g=Xg(A.publicKey),Q=Xg(A.secretKey),e.dispatch(Ne({publicKey:g,secretKey:Q}))}else if(0===I.secretKey.length)if(128===Q.length&&64===g.length)e.dispatch(Ne({publicKey:g,secretKey:Q}));else{const A=await yQ();g=Xg(A.publicKey),Q=Xg(A.secretKey),e.dispatch(Ne({publicKey:g,secretKey:Q}))}else g=I.publicKey;const t=A+"?publickey="+g;return PQ=new WebSocket(t),PQ.binaryType="arraybuffer",await new Promise((A,g)=>{try{PQ.onopen=()=>{console.log("WebSocket connected to:",t),e.dispatch(DI.connectionEstablished());const{rooms:g,commonState:Q}=e.getState(),B=64===Q.currentRoomUrl.length?g.findIndex(A=>A.url===Q.currentRoomUrl):-1;B>-1&&o(I.peerId)&&o(g[B].id)?e.dispatch(EI({roomId:g[B].id,connectingToPeers:!0})):o(I.peerId)&&64===Q.currentRoomUrl.length&&vQ(PQ,()=>{PQ.send(JSON.stringify({type:"room",fromPeerId:I.peerId,roomUrl:Q.currentRoomUrl}))}),A({data:void 0})},PQ.onerror=A=>{console.error("WebSocket error:",A),PQ&&(PQ.removeEventListener("message",()=>{}),PQ.removeEventListener("open",()=>{}),PQ.removeEventListener("close",()=>{}),PQ.close(),PQ=null),e.dispatch(DI.disconnect()),g({error:"WebSocket connection failed"})},PQ.onmessage=async A=>{await(async(A,e,I)=>{try{if("PING"===A.data)return void e.send("PONG");const g=JSON.parse(A.data);switch(g.type){case"ping":{const{keyPair:A}=I.getState();await I.dispatch(KQ.endpoints.sendMessage.initiate({content:{type:"pong",fromPeerId:A.peerId}}));break}case"peerId":{const{keyPair:A}=I.getState(),e=g.peerId.length>0?g.peerId:"",Q=g.challenge.length>0?g.challenge:"",t=o(e)&&i(Q)&&64===Q.length&&0===A.challenge.length&&0===A.signature.length&&!g.challengeId&&!g.username&&!g.credential,B=o(e)&&o(A.peerId)&&A.peerId!==e&&i(Q)&&64===Q.length&&!g.challengeId&&!g.username&&!g.credential;t||B?await(async(A,e,I,g)=>{const Q=jg(A.secretKey),t=Uint8Array.from(I.match(/.{1,2}/g).map(A=>parseInt(A,16))),B=await DQ(t,Q),E=[...new Uint8Array(B)].map(A=>A.toString(16).padStart(2,"0")).join("");g.dispatch(Ke({peerId:e,challenge:I,signature:E}))})(A,e,Q,I):I.dispatch(qe({peerId:e,challenge:Q,signature:g.signature??"",challengeId:g.challengeId??"",username:g.username??"",credential:g.credential??""}));break}case"roomId":I.dispatch(BI({id:g.roomId,url:g.roomUrl}));break;case"challenge":I.dispatch(Ye(g));break;case"peerConnection":{if(await Sg(g.peer.id,g.peer.publicKey))break;const{keyPair:A,rooms:e}=I.getState(),Q=e.findIndex(A=>A.id===g.roomId);if(Q>-1&&e[Q].onlyConnectWithKnownAddresses&&!await Fg(g.peer.id,g.peer.publicKey))break;await I.dispatch(KQ.endpoints.sendMessage.initiate({content:{type:"peerConnection",roomId:g.roomId,fromPeerId:A.peerId,toPeerId:g.peer.id}}));break}case"peers":{const{keyPair:A,rooms:e,commonState:Q}=I.getState(),t=64===Q.currentRoomUrl.length?e.findIndex(A=>A.url===Q.currentRoomUrl):-1;if(t>-1){const Q=g.peers.length;if(0===Q)break;const B=e[t].onlyConnectWithKnownAddresses;for(let E=0;E<Q;E++)if(g.peers[E].publicKey!==A.publicKey&&g.peers[E].id!==A.peerId&&o(g.peers[E].id)&&64===g.peers[E].publicKey.length&&!await Sg(g.peers[E].id,g.peers[E].publicKey)){if(B&&!await Fg(g.peers[E].id,g.peers[E].publicKey))continue;await I.dispatch(JQ.endpoints.connectWithPeer.initiate({roomId:g.roomId,peerId:g.peers[E].id,peerPublicKey:g.peers[E].publicKey,initiator:!0,rtcConfig:e[t].rtcConfig}))}}break}case"description":await Sg(g.fromPeerId,g.fromPeerPublicKey)||await I.dispatch(JQ.endpoints.setDescription.initiate({peerId:g.fromPeerId,peerPublicKey:g.fromPeerPublicKey,roomId:g.roomId,description:g.description}));break;case"candidate":await Sg(g.fromPeerId)||await I.dispatch(JQ.endpoints.setCandidate.initiate({peerId:g.fromPeerId,candidate:g.candidate}));break;case"error":console.error(g);break;default:console.error("Unknown message type "+JSON.stringify(g))}}catch(A){return}})(A,PQ,e)},PQ.onclose=()=>{PQ&&(PQ.removeEventListener("message",()=>{}),PQ.removeEventListener("open",()=>{}),PQ.removeEventListener("close",()=>{}),PQ.close(),PQ=null),e.dispatch(DI.disconnect()),console.log("WebSocket disconnected"),A({data:void 0})}}catch(A){g(A)}return()=>{PQ&&(console.log("Cleaning up WebSocket connection..."),PQ.removeEventListener("message",()=>{}),PQ.removeEventListener("open",()=>{}),PQ.removeEventListener("close",()=>{}),PQ.close(),PQ=null)}})}catch(A){return PQ&&(PQ.removeEventListener("message",()=>{}),PQ.removeEventListener("open",()=>{}),PQ.removeEventListener("close",()=>{}),PQ.close(),PQ=null),e.dispatch(DI.disconnect()),console.error("Error during WebSocket setup:",A),{error:"WebSocket connection failed"}}},endpoints:A=>({connectWebSocket:A.mutation({query:(A="wss://signaling.p2party.com/ws")=>({signalingServerUrl:A})}),disconnectWebSocket:A.mutation({queryFn:xQ}),sendMessage:A.mutation({queryFn:NQ}),connectWithPeer:A.mutation({queryFn:qQ})})}),YQ=Ue();YQ.startListening({matcher:JA(EI,BI,sI,cI,fI,dI),effect:async(A,e)=>{if(EI.match(A)){const{roomId:I,connectingToPeers:g}=A.payload;if(g){const{signalingServer:A,keyPair:g,rooms:Q}=e.getState(),t=Q.findIndex(A=>A.id===I);A.isConnected&&o(g.peerId)&&t>-1&&o(Q[t].id)&&await e.dispatch(KQ.endpoints.sendMessage.initiate({content:{type:"peers",fromPeerId:g.peerId,roomId:I}})),e.dispatch(EI({roomId:I,connectingToPeers:!1}))}}else if(BI.match(A)){const{signalingServer:Q,keyPair:t,rooms:B}=e.getState(),{url:E,id:i,onlyConnectWithKnownPeers:C}=A.payload;if(64===E.length&&null!=C&&localStorage.setItem(E+"-onlyConnectWithKnownPeers",String(C)),64===E.length&&o(i)){await(I=E,g=i,mg("setDBUniqueRoom",I,g));const A=await Gg(i),C=A.length;for(let I=0;I<C;I++)e.dispatch(sI({roomId:A[I].roomId,merkleRootHex:A[I].merkleRoot,sha512Hex:A[I].hash,fromPeerId:A[I].fromPeerId,filename:A[I].filename,messageType:A[I].messageType,chunkSize:A[I].savedSize,totalSize:A[I].totalSize,channelLabel:A[I].channelLabel,timestamp:A[I].timestamp}));const a=B.findIndex(A=>A.id===i);Q.isConnected&&o(t.peerId)&&a>-1&&o(B[a].id)&&await e.dispatch(KQ.endpoints.sendMessage.initiate({content:{type:"peers",fromPeerId:t.peerId,roomId:B[a].id}}))}}else if(cI.match(A)){const{roomId:I,merkleRootHex:g,sha512Hex:Q,alsoSendFinishedMessage:t}=A.payload,{rooms:B,keyPair:E}=e.getState(),i=B.findIndex(A=>A.id===I);if(i>-1){const A=B[i].messages.findLastIndex(A=>A.merkleRootHex===g&&A.fromPeerId!==E.peerId);if(A>-1){const I=await pQ(B[i].messages[A].channelLabel,B[i].messages[A].merkleRootHex),g=jg(Q);await e.dispatch(JQ.endpoints.disconnectFromChannelLabel.initiate({label:I,messageHash:g,alsoDeleteData:!1,alsoSendFinishedMessage:t}))}}}else if(fI.match(A)){const{merkleRootHex:e,hashHex:I}=A.payload;if(!e&&!I)return;if(e&&e.length!==2*Ve)return;if(I&&I.length!==2*Ve)return;e?(await Pg(e),await xg(e),await(A=>mg("deleteDBMessageData",A))(e)):I&&await xg(void 0,void 0,I)}else if(dI.match(A)){const I=A.payload;await e.dispatch(JQ.endpoints.disconnectFromRoom.initiate({roomId:I,deleteMessages:!0}))}var I,g}});const LQ=Ue();LQ.startListening({matcher:JA(Ne,qe,Ke,Ye,Le),effect:async(A,e)=>{if(Ne.match(A)){const{publicKey:e,secretKey:I}=A.payload;64===e.length&&128===I.length&&(localStorage.setItem("publicKey",A.payload.publicKey),localStorage.setItem("secretKey",A.payload.secretKey))}else if(qe.match(A)){const{peerId:I,challenge:g,signature:Q,challengeId:t,username:B,credential:E}=A.payload;if(o(I)&&o(t)&&i(g)&&i(Q)&&64===g.length&&128===Q.length){localStorage.setItem("peerId",I),localStorage.setItem("challenge",g),localStorage.setItem("signature",Q),localStorage.setItem("challengeId",t);const{keyPair:i,rooms:C,commonState:a}=e.getState(),n=64===a.currentRoomUrl.length?C.findIndex(A=>A.url===a.currentRoomUrl):-1;n>-1?(A.payload.username&&A.payload.credential&&e.dispatch(rI({roomId:C[n].id,iceServers:[{urls:["turn:turn.p2party.com:3478?transport=udp","turn:turn.p2party.com:3478?transport=tcp","turns:turn.p2party.com:443?transport=tcp"],username:B,credential:E}]})),o(C[n].id)&&e.dispatch(EI({roomId:C[n].id,connectingToPeers:!0}))):o(i.peerId)&&64===a.currentRoomUrl.length&&await e.dispatch(KQ.endpoints.sendMessage.initiate({content:{type:"room",fromPeerId:i.peerId,roomUrl:a.currentRoomUrl}}))}}else if(Ke.match(A)){const{peerId:I,challenge:g,signature:Q}=A.payload;o(I)&&i(g)&&i(Q)&&64===g.length&&128===Q.length&&(localStorage.setItem("peerId",I),localStorage.setItem("challenge",g),localStorage.setItem("signature",Q),await e.dispatch(KQ.endpoints.sendMessage.initiate({content:{type:"challenge",fromPeerId:I,challenge:g,signature:Q}})))}else if(Ye.match(A)){const{challengeId:I}=A.payload;if(o(I)){localStorage.setItem("challengeId",I);const{keyPair:g,rooms:Q,commonState:t}=e.getState(),B=64===t.currentRoomUrl.length?Q.findIndex(A=>A.url===t.currentRoomUrl):-1;B>-1?A.payload.username&&A.payload.credential&&(e.dispatch(rI({roomId:Q[B].id,iceServers:[{urls:["turn:turn.p2party.com:3478?transport=udp","turn:turn.p2party.com:3478?transport=tcp","turns:turn.p2party.com:443?transport=tcp"],username:A.payload.username,credential:A.payload.credential}]})),o(Q[B].id)?e.dispatch(EI({roomId:Q[B].id,connectingToPeers:!0})):o(g.peerId)&&64===t.currentRoomUrl.length&&await e.dispatch(KQ.endpoints.sendMessage.initiate({content:{type:"room",fromPeerId:g.peerId,roomUrl:t.currentRoomUrl}}))):o(g.peerId)&&64===t.currentRoomUrl.length&&await e.dispatch(KQ.endpoints.sendMessage.initiate({content:{type:"room",fromPeerId:g.peerId,roomUrl:t.currentRoomUrl}}))}}else Le.match(A)&&(localStorage.setItem("peerId",""),localStorage.setItem("challengeId",""),localStorage.setItem("publicKey",""),localStorage.setItem("secretKey",""),localStorage.setItem("challenge",""),localStorage.setItem("signature",""))}});const TQ=function(A){const e=function(A){const{thunk:e=!0,immutableCheck:I=!0,serializableCheck:g=!0,actionCreatorCheck:Q=!0}=A??{};let t=new mA;return e&&("boolean"==typeof e?t.push(yA):t.push(DA(e.extraArgument))),t},{reducer:I,middleware:g,devTools:Q=!0,preloadedState:t,enhancers:B}=A||{};let E,i;if("function"==typeof I)E=I;else{if(!l(I))throw new Error(Me(1));E=d(I)}i="function"==typeof g?g(e):e();let C=w;Q&&(C=pA({trace:!1,..."object"==typeof Q&&Q}));const a=function(...A){return e=>(I,g)=>{const Q=e(I,g);let t=()=>{throw new Error(r(15))};const B={getState:Q.getState,dispatch:(A,...e)=>t(A,...e)},E=A.map(A=>A(B));return t=w(...E)(Q.dispatch),{...Q,dispatch:t}}}(...i),n=(A=>function(e){const{autoBatch:I=!0}=e??{};let g=new mA(A);return I&&g.push(((A={type:"raf"})=>e=>(...I)=>{const g=e(...I);let Q=!0,t=!1,B=!1;const E=new Set,i="tick"===A.type?queueMicrotask:"raf"===A.type?"undefined"!=typeof window&&window.requestAnimationFrame?window.requestAnimationFrame:HA(10):"callback"===A.type?A.queueNotification:HA(A.timeout),C=()=>{B=!1,t&&(t=!1,E.forEach(A=>A()))};return Object.assign({},g,{subscribe(A){const e=g.subscribe(()=>Q&&A());return E.add(A),()=>{e(),E.delete(A)}},dispatch(A){try{return Q=!A?.meta?.[RA],t=!Q,t&&(B||(B=!0,i(C))),g.dispatch(A)}finally{Q=!0}}})})("object"==typeof I?I:void 0)),g})(a);return f(E,t,C(..."function"==typeof B?B(n):n()))}({reducer:{commonState:ve,keyPair:Te,rooms:wI,signalingServer:pI,[KQ.reducerPath]:KQ.reducer,[JQ.reducerPath]:JQ.reducer},middleware:A=>A().concat([KQ.middleware,JQ.middleware,YQ.middleware,LQ.middleware])}),VQ=TQ.dispatch;var OQ=["abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse","access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act","action","actor","actress","actual","adapt","add","addict","address","adjust","admit","adult","advance","advice","aerobic","affair","afford","afraid","again","age","agent","agree","ahead","aim","air","airport","aisle","alarm","album","alcohol","alert","alien","all","alley","allow","almost","alone","alpha","already","also","alter","always","amateur","amazing","among","amount","amused","analyst","anchor","ancient","anger","angle","angry","animal","ankle","announce","annual","another","answer","antenna","antique","anxiety","any","apart","apology","appear","apple","approve","april","arch","arctic","area","arena","argue","arm","armed","armor","army","around","arrange","arrest","arrive","arrow","art","artefact","artist","artwork","ask","aspect","assault","asset","assist","assume","asthma","athlete","atom","attack","attend","attitude","attract","auction","audit","august","aunt","author","auto","autumn","average","avocado","avoid","awake","aware","away","awesome","awful","awkward","axis","baby","bachelor","bacon","badge","bag","balance","balcony","ball","bamboo","banana","banner","bar","barely","bargain","barrel","base","basic","basket","battle","beach","bean","beauty","because","become","beef","before","begin","behave","behind","believe","below","belt","bench","benefit","best","betray","better","between","beyond","bicycle","bid","bike","bind","biology","bird","birth","bitter","black","blade","blame","blanket","blast","bleak","bless","blind","blood","blossom","blouse","blue","blur","blush","board","boat","body","boil","bomb","bone","bonus","book","boost","border","boring","borrow","boss","bottom","bounce","box","boy","bracket","brain","brand","brass","brave","bread","breeze","brick","bridge","brief","bright","bring","brisk","broccoli","broken","bronze","broom","brother","brown","brush","bubble","buddy","budget","buffalo","build","bulb","bulk","bullet","bundle","bunker","burden","burger","burst","bus","business","busy","butter","buyer","buzz","cabbage","cabin","cable","cactus","cage","cake","call","calm","camera","camp","can","canal","cancel","candy","cannon","canoe","canvas","canyon","capable","capital","captain","car","carbon","card","cargo","carpet","carry","cart","case","cash","casino","castle","casual","cat","catalog","catch","category","cattle","caught","cause","caution","cave","ceiling","celery","cement","census","century","cereal","certain","chair","chalk","champion","change","chaos","chapter","charge","chase","chat","cheap","check","cheese","chef","cherry","chest","chicken","chief","child","chimney","choice","choose","chronic","chuckle","chunk","churn","cigar","cinnamon","circle","citizen","city","civil","claim","clap","clarify","claw","clay","clean","clerk","clever","click","client","cliff","climb","clinic","clip","clock","clog","close","cloth","cloud","clown","club","clump","cluster","clutch","coach","coast","coconut","code","coffee","coil","coin","collect","color","column","combine","come","comfort","comic","common","company","concert","conduct","confirm","congress","connect","consider","control","convince","cook","cool","copper","copy","coral","core","corn","correct","cost","cotton","couch","country","couple","course","cousin","cover","coyote","crack","cradle","craft","cram","crane","crash","crater","crawl","crazy","cream","credit","creek","crew","cricket","crime","crisp","critic","crop","cross","crouch","crowd","crucial","cruel","cruise","crumble","crunch","crush","cry","crystal","cube","culture","cup","cupboard","curious","current","curtain","curve","cushion","custom","cute","cycle","dad","damage","damp","dance","danger","daring","dash","daughter","dawn","day","deal","debate","debris","decade","december","decide","decline","decorate","decrease","deer","defense","define","defy","degree","delay","deliver","demand","demise","denial","dentist","deny","depart","depend","deposit","depth","deputy","derive","describe","desert","design","desk","despair","destroy","detail","detect","develop","device","devote","diagram","dial","diamond","diary","dice","diesel","diet","differ","digital","dignity","dilemma","dinner","dinosaur","direct","dirt","disagree","discover","disease","dish","dismiss","disorder","display","distance","divert","divide","divorce","dizzy","doctor","document","dog","doll","dolphin","domain","donate","donkey","donor","door","dose","double","dove","draft","dragon","drama","drastic","draw","dream","dress","drift","drill","drink","drip","drive","drop","drum","dry","duck","dumb","dune","during","dust","dutch","duty","dwarf","dynamic","eager","eagle","early","earn","earth","easily","east","easy","echo","ecology","economy","edge","edit","educate","effort","egg","eight","either","elbow","elder","electric","elegant","element","elephant","elevator","elite","else","embark","embody","embrace","emerge","emotion","employ","empower","empty","enable","enact","end","endless","endorse","enemy","energy","enforce","engage","engine","enhance","enjoy","enlist","enough","enrich","enroll","ensure","enter","entire","entry","envelope","episode","equal","equip","era","erase","erode","erosion","error","erupt","escape","essay","essence","estate","eternal","ethics","evidence","evil","evoke","evolve","exact","example","excess","exchange","excite","exclude","excuse","execute","exercise","exhaust","exhibit","exile","exist","exit","exotic","expand","expect","expire","explain","expose","express","extend","extra","eye","eyebrow","fabric","face","faculty","fade","faint","faith","fall","false","fame","family","famous","fan","fancy","fantasy","farm","fashion","fat","fatal","father","fatigue","fault","favorite","feature","february","federal","fee","feed","feel","female","fence","festival","fetch","fever","few","fiber","fiction","field","figure","file","film","filter","final","find","fine","finger","finish","fire","firm","first","fiscal","fish","fit","fitness","fix","flag","flame","flash","flat","flavor","flee","flight","flip","float","flock","floor","flower","fluid","flush","fly","foam","focus","fog","foil","fold","follow","food","foot","force","forest","forget","fork","fortune","forum","forward","fossil","foster","found","fox","fragile","frame","frequent","fresh","friend","fringe","frog","front","frost","frown","frozen","fruit","fuel","fun","funny","furnace","fury","future","gadget","gain","galaxy","gallery","game","gap","garage","garbage","garden","garlic","garment","gas","gasp","gate","gather","gauge","gaze","general","genius","genre","gentle","genuine","gesture","ghost","giant","gift","giggle","ginger","giraffe","girl","give","glad","glance","glare","glass","glide","glimpse","globe","gloom","glory","glove","glow","glue","goat","goddess","gold","good","goose","gorilla","gospel","gossip","govern","gown","grab","grace","grain","grant","grape","grass","gravity","great","green","grid","grief","grit","grocery","group","grow","grunt","guard","guess","guide","guilt","guitar","gun","gym","habit","hair","half","hammer","hamster","hand","happy","harbor","hard","harsh","harvest","hat","have","hawk","hazard","head","health","heart","heavy","hedgehog","height","hello","helmet","help","hen","hero","hidden","high","hill","hint","hip","hire","history","hobby","hockey","hold","hole","holiday","hollow","home","honey","hood","hope","horn","horror","horse","hospital","host","hotel","hour","hover","hub","huge","human","humble","humor","hundred","hungry","hunt","hurdle","hurry","hurt","husband","hybrid","ice","icon","idea","identify","idle","ignore","ill","illegal","illness","image","imitate","immense","immune","impact","impose","improve","impulse","inch","include","income","increase","index","indicate","indoor","industry","infant","inflict","inform","inhale","inherit","initial","inject","injury","inmate","inner","innocent","input","inquiry","insane","insect","inside","inspire","install","intact","interest","into","invest","invite","involve","iron","island","isolate","issue","item","ivory","jacket","jaguar","jar","jazz","jealous","jeans","jelly","jewel","job","join","joke","journey","joy","judge","juice","jump","jungle","junior","junk","just","kangaroo","keen","keep","ketchup","key","kick","kid","kidney","kind","kingdom","kiss","kit","kitchen","kite","kitten","kiwi","knee","knife","knock","know","lab","label","labor","ladder","lady","lake","lamp","language","laptop","large","later","latin","laugh","laundry","lava","law","lawn","lawsuit","layer","lazy","leader","leaf","learn","leave","lecture","left","leg","legal","legend","leisure","lemon","lend","length","lens","leopard","lesson","letter","level","liar","liberty","library","license","life","lift","light","like","limb","limit","link","lion","liquid","list","little","live","lizard","load","loan","lobster","local","lock","logic","lonely","long","loop","lottery","loud","lounge","love","loyal","lucky","luggage","lumber","lunar","lunch","luxury","lyrics","machine","mad","magic","magnet","maid","mail","main","major","make","mammal","man","manage","mandate","mango","mansion","manual","maple","marble","march","margin","marine","market","marriage","mask","mass","master","match","material","math","matrix","matter","maximum","maze","meadow","mean","measure","meat","mechanic","medal","media","melody","melt","member","memory","mention","menu","mercy","merge","merit","merry","mesh","message","metal","method","middle","midnight","milk","million","mimic","mind","minimum","minor","minute","miracle","mirror","misery","miss","mistake","mix","mixed","mixture","mobile","model","modify","mom","moment","monitor","monkey","monster","month","moon","moral","more","morning","mosquito","mother","motion","motor","mountain","mouse","move","movie","much","muffin","mule","multiply","muscle","museum","mushroom","music","must","mutual","myself","mystery","myth","naive","name","napkin","narrow","nasty","nation","nature","near","neck","need","negative","neglect","neither","nephew","nerve","nest","net","network","neutral","never","news","next","nice","night","noble","noise","nominee","noodle","normal","north","nose","notable","note","nothing","notice","novel","now","nuclear","number","nurse","nut","oak","obey","object","oblige","obscure","observe","obtain","obvious","occur","ocean","october","odor","off","offer","office","often","oil","okay","old","olive","olympic","omit","once","one","onion","online","only","open","opera","opinion","oppose","option","orange","orbit","orchard","order","ordinary","organ","orient","original","orphan","ostrich","other","outdoor","outer","output","outside","oval","oven","over","own","owner","oxygen","oyster","ozone","pact","paddle","page","pair","palace","palm","panda","panel","panic","panther","paper","parade","parent","park","parrot","party","pass","patch","path","patient","patrol","pattern","pause","pave","payment","peace","peanut","pear","peasant","pelican","pen","penalty","pencil","people","pepper","perfect","permit","person","pet","phone","photo","phrase","physical","piano","picnic","picture","piece","pig","pigeon","pill","pilot","pink","pioneer","pipe","pistol","pitch","pizza","place","planet","plastic","plate","play","please","pledge","pluck","plug","plunge","poem","poet","point","polar","pole","police","pond","pony","pool","popular","portion","position","possible","post","potato","pottery","poverty","powder","power","practice","praise","predict","prefer","prepare","present","pretty","prevent","price","pride","primary","print","priority","prison","private","prize","problem","process","produce","profit","program","project","promote","proof","property","prosper","protect","proud","provide","public","pudding","pull","pulp","pulse","pumpkin","punch","pupil","puppy","purchase","purity","purpose","purse","push","put","puzzle","pyramid","quality","quantum","quarter","question","quick","quit","quiz","quote","rabbit","raccoon","race","rack","radar","radio","rail","rain","raise","rally","ramp","ranch","random","range","rapid","rare","rate","rather","raven","raw","razor","ready","real","reason","rebel","rebuild","recall","receive","recipe","record","recycle","reduce","reflect","reform","refuse","region","regret","regular","reject","relax","release","relief","rely","remain","remember","remind","remove","render","renew","rent","reopen","repair","repeat","replace","report","require","rescue","resemble","resist","resource","response","result","retire","retreat","return","reunion","reveal","review","reward","rhythm","rib","ribbon","rice","rich","ride","ridge","rifle","right","rigid","ring","riot","ripple","risk","ritual","rival","river","road","roast","robot","robust","rocket","romance","roof","rookie","room","rose","rotate","rough","round","route","royal","rubber","rude","rug","rule","run","runway","rural","sad","saddle","sadness","safe","sail","salad","salmon","salon","salt","salute","same","sample","sand","satisfy","satoshi","sauce","sausage","save","say","scale","scan","scare","scatter","scene","scheme","school","science","scissors","scorpion","scout","scrap","screen","script","scrub","sea","search","season","seat","second","secret","section","security","seed","seek","segment","select","sell","seminar","senior","sense","sentence","series","service","session","settle","setup","seven","shadow","shaft","shallow","share","shed","shell","sheriff","shield","shift","shine","ship","shiver","shock","shoe","shoot","shop","short","shoulder","shove","shrimp","shrug","shuffle","shy","sibling","sick","side","siege","sight","sign","silent","silk","silly","silver","similar","simple","since","sing","siren","sister","situate","six","size","skate","sketch","ski","skill","skin","skirt","skull","slab","slam","sleep","slender","slice","slide","slight","slim","slogan","slot","slow","slush","small","smart","smile","smoke","smooth","snack","snake","snap","sniff","snow","soap","soccer","social","sock","soda","soft","solar","soldier","solid","solution","solve","someone","song","soon","sorry","sort","soul","sound","soup","source","south","space","spare","spatial","spawn","speak","special","speed","spell","spend","sphere","spice","spider","spike","spin","spirit","split","spoil","sponsor","spoon","sport","spot","spray","spread","spring","spy","square","squeeze","squirrel","stable","stadium","staff","stage","stairs","stamp","stand","start","state","stay","steak","steel","stem","step","stereo","stick","still","sting","stock","stomach","stone","stool","story","stove","strategy","street","strike","strong","struggle","student","stuff","stumble","style","subject","submit","subway","success","such","sudden","suffer","sugar","suggest","suit","summer","sun","sunny","sunset","super","supply","supreme","sure","surface","surge","surprise","surround","survey","suspect","sustain","swallow","swamp","swap","swarm","swear","sweet","swift","swim","swing","switch","sword","symbol","symptom","syrup","system","table","tackle","tag","tail","talent","talk","tank","tape","target","task","taste","tattoo","taxi","teach","team","tell","ten","tenant","tennis","tent","term","test","text","thank","that","theme","then","theory","there","they","thing","this","thought","three","thrive","throw","thumb","thunder","ticket","tide","tiger","tilt","timber","time","tiny","tip","tired","tissue","title","toast","tobacco","today","toddler","toe","together","toilet","token","tomato","tomorrow","tone","tongue","tonight","tool","tooth","top","topic","topple","torch","tornado","tortoise","toss","total","tourist","toward","tower","town","toy","track","trade","traffic","tragic","train","transfer","trap","trash","travel","tray","treat","tree","trend","trial","tribe","trick","trigger","trim","trip","trophy","trouble","truck","true","truly","trumpet","trust","truth","try","tube","tuition","tumble","tuna","tunnel","turkey","turn","turtle","twelve","twenty","twice","twin","twist","two","type","typical","ugly","umbrella","unable","unaware","uncle","uncover","under","undo","unfair","unfold","unhappy","uniform","unique","unit","universe","unknown","unlock","until","unusual","unveil","update","upgrade","uphold","upon","upper","upset","urban","urge","usage","use","used","useful","useless","usual","utility","vacant","vacuum","vague","valid","valley","valve","van","vanish","vapor","various","vast","vault","vehicle","velvet","vendor","venture","venue","verb","verify","version","very","vessel","veteran","viable","vibrant","vicious","victory","video","view","village","vintage","violin","virtual","virus","visa","visit","visual","vital","vivid","vocal","voice","void","volcano","volume","vote","voyage","wage","wagon","wait","walk","wall","walnut","want","warfare","warm","warrior","wash","wasp","waste","water","wave","way","wealth","weapon","wear","weasel","weather","web","wedding","weekend","weird","welcome","west","wet","whale","what","wheat","wheel","when","where","whip","whisper","wide","width","wife","wild","will","win","window","wine","wing","wink","winner","winter","wire","wisdom","wise","wish","witness","wolf","woman","wonder","wood","wool","word","work","world","worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year","yellow","you","young","youth","zebra","zero","zone","zoo"];const XQ=A=>A.normalize("NFKD"),jQ={store:TQ,commonStateSelector:A=>A.commonState,signalingServerSelector:A=>A.signalingServer,roomSelector:A=>A.rooms,keyPairSelector:A=>A.keyPair,connect:async(A,e="wss://signaling.p2party.com/ws",I={iceServers:[{urls:["stun:stun.p2party.com:3478"]}],iceTransportPolicy:"all"})=>{if(64!==A.length)throw new Error("Invalid room url length");const{keyPair:g,signalingServer:Q,rooms:t,commonState:B}=TQ.getState(),E=t.findIndex(e=>e.url===A);-1===E&&VQ(BI({url:A,id:"",rtcConfig:I})),B.currentRoomUrl!==A&&VQ(be(A)),Q.isConnected&&o(g.peerId)?-1===E?await VQ(KQ.endpoints.sendMessage.initiate({content:{type:"room",fromPeerId:g.peerId,roomUrl:A}})):VQ(EI({roomId:t[E].id,connectingToPeers:!0})):await VQ(KQ.endpoints.connectWebSocket.initiate(e))},connectToSignalingServer:async(A,e="wss://signaling.p2party.com/ws")=>{if(64!==A.length)throw new Error("Invalid room url length");const{signalingServer:I,rooms:g,commonState:Q}=TQ.getState();-1===g.findIndex(e=>e.url===A)&&VQ(BI({url:A,id:""})),Q.currentRoomUrl!==A&&VQ(be(A)),I.serverUrl===e&&(I.isConnected||I.isEstablishingConnection)||await VQ(KQ.endpoints.connectWebSocket.initiate(e))},disconnectFromSignalingServer:async()=>{await VQ(KQ.endpoints.disconnectWebSocket.initiate())},disconnectFromRoom:async(A,e=!1)=>{await VQ(JQ.endpoints.disconnectFromRoom.initiate({roomId:A,deleteMessages:e}))},disconnectFromAllRooms:async(A=!1,e=[])=>{await VQ(JQ.endpoints.disconnectFromAllRooms.initiate({deleteMessages:A,exceptionRoomIds:e}))},disconnectFromPeer:async A=>{await VQ(JQ.endpoints.disconnectFromPeer.initiate({peerId:A}))},allowConnectionRelay:(A,e=!0)=>{const{rooms:I}=TQ.getState(),g=I.findIndex(e=>e.id===A);g>-1&&VQ(CI({roomId:I[g].id,canBeConnectionRelay:e}))},onlyAllowConnectionsFromAddressBook:async(A,e)=>{if(64===A.length){const{rooms:I}=TQ.getState(),g=I.findIndex(e=>e.url===A);if(g>-1&&!I[g].onlyConnectWithKnownAddresses&&e&&I[g].peers.length>0){const A=I[g].peers.length;for(let e=0;e<A;e++)await Fg(I[g].peers[e].peerId,I[g].peers[e].peerPublicKey)||await VQ(JQ.endpoints.disconnectFromPeer.initiate({peerId:I[g].peers[e].peerId,alsoDeleteData:!1}))}VQ(BI({url:g>-1?I[g].url:A,id:g>-1?I[g].id:"",onlyConnectWithKnownPeers:e}))}},addPeerToAddressBook:(A,e,I)=>mg("setDBAddressBookEntry",A,e,I),getPeerAddressBookEntry:Fg,getAllPeersInAddressBook:()=>mg("getAllDBAddressBookEntries"),getAllPeersInBlacklist:()=>mg("getAllDBBlacklisted"),deletePeerFromAddressBook:async(A,e,I)=>{const g=await((A,e,I)=>mg("deleteDBAddressBookEntry",A,e,I))(A,e,I);o(g)&&await VQ(JQ.endpoints.disconnectFromPeer.initiate({peerId:g,alsoDeleteData:!1}))},blacklistPeer:async(A,e)=>{await((A,e)=>mg("setDBPeerInBlacklist",A,e))(A,e),await VQ(JQ.endpoints.disconnectFromPeer.initiate({peerId:A,alsoDeleteData:!0}))},getPeerIsBlacklisted:Sg,removePeerFromBlacklist:(A,e)=>mg("deleteDBPeerFromBlacklist",A,e),getAllExistingRooms:Rg,sendMessage:async(A,e,I,g=.9,Q=3,t=AQ,B=1)=>{await VQ(JQ.endpoints.sendMessage.initiate({data:A,label:e,roomId:I,minChunks:Q,chunkSize:t,percentageFilledChunk:g,metadataSchemaVersion:B}))},readMessage:async(A,e)=>{if(!A&&!e)return{message:"No message",percentage:0,size:0,filename:"",mimeType:"text/plain",extension:"txt",category:Kg.Text};try{const{keyPair:I,rooms:g}=TQ.getState(),Q=g.length;let t=-1,B=-1;for(let E=0;E<Q;E++)if(B=g[E].messages.findLastIndex(g=>g.merkleRootHex===A||I.peerId===g.fromPeerId&&g.sha512Hex===e&&""===g.merkleRootHex),B>-1){t=E;break}if(-1===t||-1===B)return{message:"No message",percentage:0,size:0,filename:"",mimeType:"text/plain",extension:"",category:Kg.Text};const E=g[t].messages[B].messageType,i=Yg(E),C=(A=>{switch(A){case qg.ImagePNG:return"png";case qg.ImageJPEG:return"jpeg";case qg.ImageJPG:return"jpg";case qg.ImageGIF:return"gif";case qg.ImageBMP:return"bmp";case qg.ImageTIFF:return"tiff";case qg.ImageSVG:return"svg";case qg.ImageWEBP:return"webp";case qg.ImageHEIC:return"heic";case qg.DocumentPDF:return"pdf";case qg.DocumentDOC:return"doc";case qg.DocumentDOCX:return"docx";case qg.DocumentXLS:return"xls";case qg.DocumentXLSX:return"xlsx";case qg.DocumentPPT:return"ppt";case qg.DocumentPPTX:return"pptx";case qg.DocumentTXT:return"txt";case qg.DocumentRTF:return"rtf";case qg.DocumentODT:return"odt";case qg.AudioMP3:return"mp3";case qg.AudioWAV:return"wav";case qg.AudioAAC:return"aac";case qg.AudioFLAC:return"flac";case qg.AudioOGG:return"ogg";case qg.AudioM4A:return"m4a";case qg.VideoMP4:return"mp4";case qg.VideoAVI:return"avi";case qg.VideoMKV:return"mkv";case qg.VideoMOV:return"mov";case qg.VideoWMV:return"wmv";case qg.VideoFLV:return"flv";case qg.VideoWEBM:return"webm";case qg.CompressedZIP:return"zip";case qg.CompressedRAR:return"rar";case qg.Compressed7Z:return"7z";case qg.CompressedTAR:return"tar";case qg.CompressedGZ:return"gz";case qg.CodeHTML:return"html";case qg.CodeCSS:return"css";case qg.CodeJS:return"js";case qg.CodeTS:return"ts";case qg.CodeJSX:return"jsx";case qg.CodeTSX:return"tsx";case qg.CodeJSON:return"json";case qg.CodeXML:return"xml";case qg.CodePY:return"py";case qg.CodeJAVA:return"java";case qg.CodeC:return"c";case qg.CodeCPP:return"cpp";case qg.CodeCS:return"cs";case qg.CodeRB:return"rb";case qg.CodePHP:return"php";case qg.CodeSQL:return"sql";case qg.EbookEPUB:return"epub";case qg.EbookMOBI:return"mobi";case qg.EbookAZW:return"azw";case qg.FontTTF:return"ttf";case qg.FontOTF:return"otf";case qg.ImageICO:return"ico";case qg.ExecutableEXE:return"exe";case qg.ExecutableDMG:return"dmg";case qg.ExecutableAPK:return"apk";default:return""}})(E),a=(A=>{switch(A){case qg.Text:return Kg.Text;case qg.ImagePNG:case qg.ImageJPEG:case qg.ImageJPG:case qg.ImageGIF:case qg.ImageBMP:case qg.ImageTIFF:case qg.ImageSVG:case qg.ImageWEBP:case qg.ImageHEIC:case qg.ImageICO:return Kg.Image;case qg.DocumentPDF:case qg.DocumentDOC:case qg.DocumentDOCX:case qg.DocumentXLS:case qg.DocumentXLSX:case qg.DocumentPPT:case qg.DocumentPPTX:case qg.DocumentTXT:case qg.DocumentRTF:case qg.DocumentODT:return Kg.Document;case qg.AudioMP3:case qg.AudioWAV:case qg.AudioAAC:case qg.AudioFLAC:case qg.AudioOGG:case qg.AudioM4A:return Kg.Audio;case qg.VideoMP4:case qg.VideoAVI:case qg.VideoMKV:case qg.VideoMOV:case qg.VideoWMV:case qg.VideoFLV:case qg.VideoWEBM:return Kg.Video;case qg.CompressedZIP:case qg.CompressedRAR:case qg.Compressed7Z:case qg.CompressedTAR:case qg.CompressedGZ:return Kg.Compressed;case qg.CodeHTML:case qg.CodeCSS:case qg.CodeJS:case qg.CodeJSX:case qg.CodeTS:case qg.CodeTSX:case qg.CodeJSON:case qg.CodeXML:case qg.CodePY:case qg.CodeJAVA:case qg.CodeC:case qg.CodeCPP:case qg.CodeCS:case qg.CodeRB:case qg.CodePHP:case qg.CodeSQL:return Kg.Code;case qg.EbookEPUB:case qg.EbookMOBI:case qg.EbookAZW:return Kg.Ebook;case qg.FontTTF:case qg.FontOTF:return Kg.Font;case qg.ExecutableEXE:case qg.ExecutableDMG:case qg.ExecutableAPK:return Kg.Executable;default:return Kg.Unknown}})(E),n=g[t].messages[B].fromPeerId===I.peerId?100:Math.floor(g[t].messages[B].savedSize/g[t].messages[B].totalSize*100),o=100===n?await((A,e)=>mg("getDBAllChunks",A,e))(g[t].messages[B].merkleRootHex,g[t].messages[B].sha512Hex):[],r=o.map(A=>A.data);try{const A=new Blob(r,{type:i});return E===qg.Text?{message:r.length>0?await A.text():"Incoming message...",percentage:n,size:g[t].messages[B].totalSize,filename:"",mimeType:i,extension:C,category:a}:{message:A,percentage:n,size:g[t].messages[B].totalSize,filename:g[t].messages[B].filename,mimeType:i,extension:C,category:a}}catch{return{message:"Invalid message",percentage:0,size:g[t].messages[B].totalSize,filename:g[t].messages[B].filename,mimeType:i,extension:C,category:a}}}catch(A){return console.error(A),{message:"Irretrievable message",percentage:0,size:0,filename:"",mimeType:"text/plain",extension:"",category:Kg.Text}}},cancelMessage:async(A,e,I)=>{if(!e&&!I)throw new Error("Need to provide either merkle root or hash");if(e&&"string"==typeof e&&e.length!==2*Ve)throw new Error("Invalid Merkle root length");if(e&&"string"!=typeof e&&e.length!==Ve)throw new Error("Invalid Merkle root length");if(I&&"string"==typeof I&&I.length!==2*Ve)throw new Error("Invalid hash length");if(I&&"string"!=typeof I&&I.length!==Ve)throw new Error("Invalid hash length");const g=new CustomEvent(fQ);window.dispatchEvent(g);const Q=e&&"string"==typeof e?e:e&&"string"!=typeof e?Xg(e):"";let t=-1,B=-1;const{rooms:E}=TQ.getState(),i=E.length;for(let A=0;A<i;A++)if(B=e?E[A].messages.findIndex(A=>A.merkleRootHex===Q):-1,B>-1){t=A;break}if(t>-1&&B>-1&&E[t].messages[B].merkleRootHex.length===2*Ve){const e=await pQ(A,E[t].messages[B].merkleRootHex);await TQ.dispatch(JQ.endpoints.disconnectFromChannelLabel.initiate({label:e,alsoDeleteData:!0})),TQ.dispatch(fI({merkleRootHex:E[t].messages[B].merkleRootHex}))}},deleteMessage:async(A,e)=>{if(!A&&!e)throw new Error("Need to provide either merkle root or hash");if(A&&"string"==typeof A&&A.length!==2*Ve)throw new Error("Invalid Merkle root length");if(A&&"string"!=typeof A&&A.length!==Ve)throw new Error("Invalid Merkle root length");if(e&&"string"==typeof e&&e.length!==2*Ve)throw new Error("Invalid hash length");if(e&&"string"!=typeof e&&e.length!==Ve)throw new Error("Invalid hash length");const I=new CustomEvent(fQ);window.dispatchEvent(I);const g=A&&"string"==typeof A?A:A&&"string"!=typeof A?Xg(A):"",Q=e&&"string"==typeof e?e:e&&"string"!=typeof e?Xg(e):"";let t=-1,B=-1;const{rooms:E}=TQ.getState(),i=E.length;for(let I=0;I<i;I++)if(B=A?E[I].messages.findIndex(A=>A.merkleRootHex===g):e?E[I].messages.findIndex(A=>A.sha512Hex===Q):-1,B>-1){t=I;break}if(t>-1&&B>-1&&E[t].messages[B].merkleRootHex.length===2*Ve){const A=await pQ(E[t].messages[B].channelLabel,E[t].messages[B].merkleRootHex);await TQ.dispatch(JQ.endpoints.disconnectFromChannelLabel.initiate({label:A,alsoDeleteData:!0})),TQ.dispatch(fI({merkleRootHex:E[t].messages[B].merkleRootHex}))}},purgeIdentity:async()=>{const A=new CustomEvent(fQ);window.dispatchEvent(A),VQ(Le());const{rooms:e}=TQ.getState(),I=e.length;for(let A=0;A<I;A++)await VQ(JQ.endpoints.disconnectFromRoom.initiate({roomId:e[A].id}));await VQ(KQ.endpoints.disconnectWebSocket.initiate())},purgeRoom:async A=>{const e=new CustomEvent(fQ);window.dispatchEvent(e);const{rooms:I}=TQ.getState(),g=I.findIndex(e=>e.url===A);g>-1&&VQ(dI(I[g].id)),await VQ(KQ.endpoints.disconnectWebSocket.initiate())},purge:async()=>{const A=new CustomEvent(fQ);window.dispatchEvent(A),VQ(Le()),await VQ(KQ.endpoints.disconnectWebSocket.initiate());const e=await Rg(),I=e.length;for(let A=0;A<I;A++)VQ(dI(e[A].roomId))},generateRandomRoomUrl:async()=>{const A=await sQ(256),e=(new TextEncoder).encode(A),I=await window.crypto.subtle.digest("SHA-512",e),g=await window.crypto.subtle.digest("SHA-256",I),Q=new Uint8Array(g);return Xg(Q)},encrypt:wQ,decrypt:async(A,e,I,g,Q)=>{const t=A.length,B=g.length,E=Q?.wasmMemory??((A,e)=>{const I=gI(A),g=(A+We+e+I+2*ze+$e+_e)*Uint8Array.BYTES_PER_ELEMENT,Q=tQ(g);return new WebAssembly.Memory({initial:Q,maximum:Q})})(t,B),i=Q??await nQ({wasmMemory:E}),C=gI(t),a=i._malloc(t*Uint8Array.BYTES_PER_ELEMENT),n=new Uint8Array(E.buffer,a,t*Uint8Array.BYTES_PER_ELEMENT);n.set(A);const o=i._malloc(je),r=new Uint8Array(E.buffer,o,je);r.set(e);const s=i._malloc(We),c=new Uint8Array(E.buffer,s,We);c.set(I);const h=i._malloc(B*Uint8Array.BYTES_PER_ELEMENT),l=new Uint8Array(E.buffer,h,B*Uint8Array.BYTES_PER_ELEMENT);l.set(g);const f=i._malloc(C*Uint8Array.BYTES_PER_ELEMENT),d=new Uint8Array(E.buffer,f,C*Uint8Array.BYTES_PER_ELEMENT),w=i._decrypt_chachapoly_asymmetric(t,n.byteOffset,r.byteOffset,c.byteOffset,B,l.byteOffset,d.byteOffset);switch(i._free(a),i._free(o),i._free(s),i._free(h),w){case 0:{const A=Uint8Array.from([...d]);return i._free(f),A}case-1:throw i._free(f),new Error("Could not allocate memory for the ed25519 converted to x25519 public key array.");case-2:throw i._free(f),new Error("Could not allocate memory for the ed25519 converted to x25519 secret key array.");case-3:throw i._free(f),new Error("Could not convert receiver ed25519 secret key to x25519.");case-4:throw i._free(f),new Error("Could not generate x25519 public key from x25519 secret key.");case-5:throw i._free(f),new Error("Could not allocate memory for the ed25519 converted to x25519 receiver public key.");case-6:throw i._free(f),new Error("Could not convert receiver ed25519 public key to x25519.");case-7:throw i._free(f),new Error("Could not allocate memory for the shared secret.");case-8:throw i._free(f),new Error("Could not calculate the shared secret.");case-9:throw i._free(f),new Error("Could not decrypt");default:throw i._free(f),new Error("Unsuccessful decryption attempt")}},sign:DQ,verify:async(A,e,I,g)=>{const Q=A.length,t=g?g.wasmMemory:(A=>{const e=(A+Oe+je)*Uint8Array.BYTES_PER_ELEMENT,I=tQ(e);return new WebAssembly.Memory({initial:I,maximum:I})})(Q),B=g??await nQ({wasmMemory:t}),E=B._malloc(Q*Uint8Array.BYTES_PER_ELEMENT),i=new Uint8Array(t.buffer,E,Q*Uint8Array.BYTES_PER_ELEMENT);i.set(A);const C=B._malloc(Oe),a=new Uint8Array(t.buffer,C,Oe);a.set(e);const n=B._malloc(je),o=new Uint8Array(t.buffer,n,je);o.set(I);const r=B._verify(Q,i.byteOffset,o.byteOffset,a.byteOffset);return B._free(E),B._free(C),B._free(n),0===r},newKeyPair:yQ,generateMnemonic:async(A=128)=>{if(!OQ)throw new Error("English wordlist could not be loaded.");if(A%32!=0)throw new TypeError("Mnemonic strength needs to be multiple of 32.");if(![128,160,192,224,256,288,320,352,384,416,448,480,512].includes(A))throw new Error("Wrong mnemonic strength");const e=window.crypto.getRandomValues(new Uint8Array(A/8)),I=e.reduce((A,e)=>A+e.toString(2).padStart(8,"0"),""),g=A/32,Q=Uint8Array.from(e),t=await window.crypto.subtle.digest("SHA-512",Q);return(I+new Uint8Array(t).reduce((A,e)=>A+e.toString(2).padStart(8,"0"),"").slice(0,g)).match(/(.{1,11})/g).map(A=>{const e=parseInt(A,2);return OQ[e]}).join(" ")},keyPairFromMnemonic:async(A,e)=>{if(!await(async A=>{try{return await(async A=>{const e=XQ(A).split(" ");if(e.length%3!=0)throw new Error("Number of words in mnemonic must be multiple of three.");const I=e.map(A=>{const e=OQ.indexOf(A);if(-1===e)throw new Error("Could not find word in wordlist.");return e.toString(2).padStart(11,"0")}).join(""),g=32*Math.floor(I.length/33),Q=I.slice(0,g),t=I.slice(g),B=Q.match(/(.{1,8})/g).map(A=>parseInt(A,2));if(B.length<16)throw new Error("Entropy length too small (less than 128 bits).");if(B.length>64)throw new Error("Entropy length too large (more than 512 bits).");const E=B.length/4,i=Uint8Array.from(B),C=await window.crypto.subtle.digest("SHA-512",i);if(new Uint8Array(C).reduce((A,e)=>A+e.toString(2).padStart(8,"0"),"").slice(0,E)!==t)throw new Error("Invalid checksum.");return!0})(A)}catch{return!1}})(A))throw new Error("Invalid mnemonic.");const I=new Uint8Array(eI),g=new TextEncoder;g.encodeInto("password12345678",I);const Q=new Uint8Array(eI);if(e){const A=g.encode(e),I=await window.crypto.subtle.digest("SHA-512",A);Q.set(new Uint8Array(I).slice(Ve-eI,Ve))}else Q.set(I);const t=await(async(A,e,I)=>{const g=XQ(A),Q=(new TextEncoder).encode(g).buffer,t=new Int8Array(Q),B=t.length;e=e??window.crypto.getRandomValues(new Uint8Array(eI));const E=I?.wasmMemory??(A=>{const e=(78643200+A+Xe+eI)*Uint8Array.BYTES_PER_ELEMENT,I=tQ(e);return new WebAssembly.Memory({initial:I,maximum:I})})(B),i=(I=I??await nQ({wasmMemory:E}))._malloc(Xe),C=new Uint8Array(E.buffer,i,Xe),a=window.crypto.getRandomValues(new Uint8Array(Xe));C.set(a);const n=I._malloc(B*Uint8Array.BYTES_PER_ELEMENT),o=new Int8Array(E.buffer,n,B*Uint8Array.BYTES_PER_ELEMENT);o.set(t);const r=I._malloc(eI),s=new Uint8Array(E.buffer,r,eI);s.set(e);const c=I._argon2(B,C.byteOffset,o.byteOffset,s.byteOffset),h=Uint8Array.from(C);if(I._free(i),I._free(n),I._free(r),0===c)return h;throw new Error("Could not generate argon2id for mnemonic.")})(A,Q);return await(async A=>{const e=(()=>{const A=(je+We+Xe)*Uint8Array.BYTES_PER_ELEMENT,e=tQ(A);return new WebAssembly.Memory({initial:e,maximum:e})})(),I=await nQ({wasmMemory:e}),g=I._malloc(je),Q=new Uint8Array(e.buffer,g,je),t=I._malloc(We),B=new Uint8Array(e.buffer,t,We),E=I._malloc(Xe),i=new Uint8Array(e.buffer,E,Xe);i.set(A);const C=I._keypair_from_seed(Q.byteOffset,B.byteOffset,i.byteOffset);if(I._free(E),0===C){const A={publicKey:Uint8Array.from(Q),secretKey:Uint8Array.from(B)};return I._free(g),I._free(t),A}throw I._free(g),I._free(t),new Error("An unexpected error occured.")})(t)},MIN_CHUNKS:3,MIN_CHUNK_SIZE:$g+1,MAX_CHUNK_SIZE:AQ,MIN_PERCENTAGE_FILLED_CHUNK:.1,MAX_PERCENTAGE_FILLED_CHUNK:1,ROOM_URL_LENGTH:64,MessageType:qg,MessageCategory:Kg};"undefined"!=typeof window&&(window.p2party=jQ),A.default=jQ,A.p2party=jQ},"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((A="undefined"!=typeof globalThis?globalThis:A||self).p2party=A.p2party||{});
1
+ var e,t;e=this,t=function(e){"use strict";function t(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var n,r={exports:{}};function a(){return n||(n=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){if(null==e)throw new TypeError("Expected a string but received a ".concat(e));if("String"!==e.constructor.name)throw new TypeError("Expected a string but received a ".concat(e.constructor.name))},e.exports=t.default,e.exports.default=t.default}(r,r.exports)),r.exports}var o,s={exports:{}};var i=t((o||(o=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(0,r.default)(e),o.test(e)};var n,r=(n=a())&&n.__esModule?n:{default:n},o=/^(0x|0h)?[0-9A-F]+$/i;e.exports=t.default,e.exports.default=t.default}(s,s.exports)),s.exports));function c(e){return"string"==typeof e&&i(e)}var l,d={exports:{}};var u=t((l||(l=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){return(0,r.default)(e),null==t&&(t="all"),t in o&&o[t].test(e)};var n,r=(n=a())&&n.__esModule?n:{default:n},o={1:/^[0-9A-F]{8}-[0-9A-F]{4}-1[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,2:/^[0-9A-F]{8}-[0-9A-F]{4}-2[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,3:/^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,4:/^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,5:/^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,6:/^[0-9A-F]{8}-[0-9A-F]{4}-6[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,7:/^[0-9A-F]{8}-[0-9A-F]{4}-7[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,8:/^[0-9A-F]{8}-[0-9A-F]{4}-8[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,nil:/^00000000-0000-0000-0000-000000000000$/i,max:/^ffffffff-ffff-ffff-ffff-ffffffffffff$/i,loose:/^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i,all:/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i};e.exports=t.default,e.exports.default=t.default}(d,d.exports)),d.exports));function m(e,t){return"string"==typeof e&&u(e,t)}function f(e){return`Minified Redux error #${e}; visit https://redux.js.org/Errors?code=${e} for the full message or use the non-minified dev environment for full errors. `}var p="function"==typeof Symbol&&Symbol.observable||"@@observable",h=()=>Math.random().toString(36).substring(7).split("").join("."),y={INIT:`@@redux/INIT${h()}`,REPLACE:`@@redux/REPLACE${h()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${h()}`};function g(e){if("object"!=typeof e||null===e)return!1;let t=e;for(;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t||null===Object.getPrototypeOf(e)}function w(e,t,n){if("function"!=typeof e)throw new Error(f(2));if("function"==typeof t&&"function"==typeof n||"function"==typeof n&&"function"==typeof arguments[3])throw new Error(f(0));if("function"==typeof t&&void 0===n&&(n=t,t=void 0),void 0!==n){if("function"!=typeof n)throw new Error(f(1));return n(w)(e,t)}let r=e,a=t,o=new Map,s=o,i=0,c=!1;function l(){s===o&&(s=new Map,o.forEach((e,t)=>{s.set(t,e)}))}function d(){if(c)throw new Error(f(3));return a}function u(e){if("function"!=typeof e)throw new Error(f(4));if(c)throw new Error(f(5));let t=!0;l();const n=i++;return s.set(n,e),function(){if(t){if(c)throw new Error(f(6));t=!1,l(),s.delete(n),o=null}}}function m(e){if(!g(e))throw new Error(f(7));if(void 0===e.type)throw new Error(f(8));if("string"!=typeof e.type)throw new Error(f(17));if(c)throw new Error(f(9));try{c=!0,a=r(a,e)}finally{c=!1}return(o=s).forEach(e=>{e()}),e}return m({type:y.INIT}),{dispatch:m,subscribe:u,getState:d,replaceReducer:function(e){if("function"!=typeof e)throw new Error(f(10));r=e,m({type:y.REPLACE})},[p]:function(){const e=u;return{subscribe(t){if("object"!=typeof t||null===t)throw new Error(f(11));function n(){const e=t;e.next&&e.next(d())}return n(),{unsubscribe:e(n)}},[p](){return this}}}}}function b(e){const t=Object.keys(e),n={};for(let r=0;r<t.length;r++){const a=t[r];"function"==typeof e[a]&&(n[a]=e[a])}const r=Object.keys(n);let a;try{!function(e){Object.keys(e).forEach(t=>{const n=e[t];if(void 0===n(void 0,{type:y.INIT}))throw new Error(f(12));if(void 0===n(void 0,{type:y.PROBE_UNKNOWN_ACTION()}))throw new Error(f(13))})}(n)}catch(e){a=e}return function(e={},t){if(a)throw a;let o=!1;const s={};for(let a=0;a<r.length;a++){const i=r[a],c=n[i],l=e[i],d=c(l,t);if(void 0===d)throw t&&t.type,new Error(f(14));s[i]=d,o=o||d!==l}return o=o||r.length!==Object.keys(e).length,o?s:e}}function I(...e){return 0===e.length?e=>e:1===e.length?e[0]:e.reduce((e,t)=>(...n)=>e(t(...n)))}function v(e){return g(e)&&"type"in e&&"string"==typeof e.type}var k=Symbol.for("immer-nothing"),S=Symbol.for("immer-draftable"),_=Symbol.for("immer-state");function A(e,...t){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var P=Object.getPrototypeOf;function x(e){return!!e&&!!e[_]}function E(e){return!!e&&(T(e)||Array.isArray(e)||!!e[S]||!!e.constructor?.[S]||B(e)||q(e))}var C=Object.prototype.constructor.toString();function T(e){if(!e||"object"!=typeof e)return!1;const t=P(e);if(null===t)return!0;const n=Object.hasOwnProperty.call(t,"constructor")&&t.constructor;return n===Object||"function"==typeof n&&Function.toString.call(n)===C}function R(e,t){0===M(e)?Reflect.ownKeys(e).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function M(e){const t=e[_];return t?t.type_:Array.isArray(e)?1:B(e)?2:q(e)?3:0}function D(e,t){return 2===M(e)?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function U(e,t){return 2===M(e)?e.get(t):e[t]}function O(e,t,n){const r=M(e);2===r?e.set(t,n):3===r?e.add(n):e[t]=n}function B(e){return e instanceof Map}function q(e){return e instanceof Set}function j(e){return e.copy_||e.base_}function K(e,t){if(B(e))return new Map(e);if(q(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);const n=T(e);if(!0===t||"class_only"===t&&!n){const t=Object.getOwnPropertyDescriptors(e);delete t[_];let n=Reflect.ownKeys(t);for(let r=0;r<n.length;r++){const a=n[r],o=t[a];!1===o.writable&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(t[a]={configurable:!0,writable:!0,enumerable:o.enumerable,value:e[a]})}return Object.create(P(e),t)}{const t=P(e);if(null!==t&&n)return{...e};const r=Object.create(t);return Object.assign(r,e)}}function F(e,t=!1){return z(e)||x(e)||!E(e)||(M(e)>1&&Object.defineProperties(e,{set:{value:N},add:{value:N},clear:{value:N},delete:{value:N}}),Object.freeze(e),t&&Object.values(e).forEach(e=>F(e,!0))),e}function N(){A(2)}function z(e){return Object.isFrozen(e)}var L,H={};function W(e){const t=H[e];return t||A(0),t}function V(){return L}function Q(e,t){t&&(W("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function $(e){G(e),e.drafts_.forEach(Y),e.drafts_=null}function G(e){e===L&&(L=e.parent_)}function X(e){return L={drafts_:[],parent_:L,immer_:e,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function Y(e){const t=e[_];0===t.type_||1===t.type_?t.revoke_():t.revoked_=!0}function J(e,t){t.unfinalizedDrafts_=t.drafts_.length;const n=t.drafts_[0];return void 0!==e&&e!==n?(n[_].modified_&&($(t),A(4)),E(e)&&(e=Z(t,e),t.parent_||te(t,e)),t.patches_&&W("Patches").generateReplacementPatches_(n[_].base_,e,t.patches_,t.inversePatches_)):e=Z(t,n,[]),$(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==k?e:void 0}function Z(e,t,n){if(z(t))return t;const r=t[_];if(!r)return R(t,(a,o)=>ee(e,r,t,a,o,n)),t;if(r.scope_!==e)return t;if(!r.modified_)return te(e,r.base_,!0),r.base_;if(!r.finalized_){r.finalized_=!0,r.scope_.unfinalizedDrafts_--;const t=r.copy_;let a=t,o=!1;3===r.type_&&(a=new Set(t),t.clear(),o=!0),R(a,(a,s)=>ee(e,r,t,a,s,n,o)),te(e,t,!1),n&&e.patches_&&W("Patches").generatePatches_(r,n,e.patches_,e.inversePatches_)}return r.copy_}function ee(e,t,n,r,a,o,s){if(x(a)){const s=Z(e,a,o&&t&&3!==t.type_&&!D(t.assigned_,r)?o.concat(r):void 0);if(O(n,r,s),!x(s))return;e.canAutoFreeze_=!1}else s&&n.add(a);if(E(a)&&!z(a)){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1)return;Z(e,a),t&&t.scope_.parent_||"symbol"==typeof r||!(B(n)?n.has(r):Object.prototype.propertyIsEnumerable.call(n,r))||te(e,a)}}function te(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&F(t,n)}var ne={get(e,t){if(t===_)return e;const n=j(e);if(!D(n,t))return function(e,t,n){const r=oe(t,n);return r?"value"in r?r.value:r.get?.call(e.draft_):void 0}(e,n,t);const r=n[t];return e.finalized_||!E(r)?r:r===ae(e.base_,t)?(ie(e),e.copy_[t]=ce(r,e)):r},has:(e,t)=>t in j(e),ownKeys:e=>Reflect.ownKeys(j(e)),set(e,t,n){const r=oe(j(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){const r=ae(j(e),t),s=r?.[_];if(s&&s.base_===n)return e.copy_[t]=n,e.assigned_[t]=!1,!0;if(((a=n)===(o=r)?0!==a||1/a==1/o:a!=a&&o!=o)&&(void 0!==n||D(e.base_,t)))return!0;ie(e),se(e)}var a,o;return e.copy_[t]===n&&(void 0!==n||t in e.copy_)||Number.isNaN(n)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=n,e.assigned_[t]=!0),!0},deleteProperty:(e,t)=>(void 0!==ae(e.base_,t)||t in e.base_?(e.assigned_[t]=!1,ie(e),se(e)):delete e.assigned_[t],e.copy_&&delete e.copy_[t],!0),getOwnPropertyDescriptor(e,t){const n=j(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r?{writable:!0,configurable:1!==e.type_||"length"!==t,enumerable:r.enumerable,value:n[t]}:r},defineProperty(){A(11)},getPrototypeOf:e=>P(e.base_),setPrototypeOf(){A(12)}},re={};function ae(e,t){const n=e[_];return(n?j(n):e)[t]}function oe(e,t){if(!(t in e))return;let n=P(e);for(;n;){const e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=P(n)}}function se(e){e.modified_||(e.modified_=!0,e.parent_&&se(e.parent_))}function ie(e){e.copy_||(e.copy_=K(e.base_,e.scope_.immer_.useStrictShallowCopy_))}function ce(e,t){const n=B(e)?W("MapSet").proxyMap_(e,t):q(e)?W("MapSet").proxySet_(e,t):function(e,t){const n=Array.isArray(e),r={type_:n?1:0,scope_:t?t.scope_:V(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1};let a=r,o=ne;n&&(a=[r],o=re);const{revoke:s,proxy:i}=Proxy.revocable(a,o);return r.draft_=i,r.revoke_=s,i}(e,t);return(t?t.scope_:V()).drafts_.push(n),n}function le(e){if(!E(e)||z(e))return e;const t=e[_];let n;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=K(e,t.scope_.immer_.useStrictShallowCopy_)}else n=K(e,!0);return R(n,(e,t)=>{O(n,e,le(t))}),t&&(t.finalized_=!1),n}function de(){const e="replace",t="add",n="remove";function r(e){if(!E(e))return e;if(Array.isArray(e))return e.map(r);if(B(e))return new Map(Array.from(e.entries()).map(([e,t])=>[e,r(t)]));if(q(e))return new Set(Array.from(e).map(r));const t=Object.create(P(e));for(const n in e)t[n]=r(e[n]);return D(e,S)&&(t[S]=e[S]),t}function a(e){return x(e)?r(e):e}var o;o={applyPatches_:function(a,o){return o.forEach(o=>{const{path:s,op:i}=o;let c=a;for(let e=0;e<s.length-1;e++){const t=M(c);let n=s[e];"string"!=typeof n&&"number"!=typeof n&&(n=""+n),0!==t&&1!==t||"__proto__"!==n&&"constructor"!==n||A(19),"function"==typeof c&&"prototype"===n&&A(19),c=U(c,n),"object"!=typeof c&&A(18,s.join("/"))}const l=M(c),d=r(o.value),u=s[s.length-1];switch(i){case e:switch(l){case 2:return c.set(u,d);case 3:A(16);default:return c[u]=d}case t:switch(l){case 1:return"-"===u?c.push(d):c.splice(u,0,d);case 2:return c.set(u,d);case 3:return c.add(d);default:return c[u]=d}case n:switch(l){case 1:return c.splice(u,1);case 2:return c.delete(u);case 3:return c.delete(o.value);default:return delete c[u]}default:A(17)}}),a},generatePatches_:function(r,o,s,i){switch(r.type_){case 0:case 2:return function(r,o,s,i){const{base_:c,copy_:l}=r;R(r.assigned_,(r,d)=>{const u=U(c,r),m=U(l,r),f=d?D(c,r)?e:t:n;if(u===m&&f===e)return;const p=o.concat(r);s.push(f===n?{op:f,path:p}:{op:f,path:p,value:m}),i.push(f===t?{op:n,path:p}:f===n?{op:t,path:p,value:a(u)}:{op:e,path:p,value:a(u)})})}(r,o,s,i);case 1:return function(r,o,s,i){let{base_:c,assigned_:l}=r,d=r.copy_;d.length<c.length&&([c,d]=[d,c],[s,i]=[i,s]);for(let t=0;t<c.length;t++)if(l[t]&&d[t]!==c[t]){const n=o.concat([t]);s.push({op:e,path:n,value:a(d[t])}),i.push({op:e,path:n,value:a(c[t])})}for(let e=c.length;e<d.length;e++){const n=o.concat([e]);s.push({op:t,path:n,value:a(d[e])})}for(let e=d.length-1;c.length<=e;--e){const t=o.concat([e]);i.push({op:n,path:t})}}(r,o,s,i);case 3:return function(e,r,a,o){let{base_:s,copy_:i}=e,c=0;s.forEach(e=>{if(!i.has(e)){const s=r.concat([c]);a.push({op:n,path:s,value:e}),o.unshift({op:t,path:s,value:e})}c++}),c=0,i.forEach(e=>{if(!s.has(e)){const s=r.concat([c]);a.push({op:t,path:s,value:e}),o.unshift({op:n,path:s,value:e})}c++})}(r,o,s,i)}},generateReplacementPatches_:function(t,n,r,a){r.push({op:e,path:[],value:n===k?void 0:n}),a.push({op:e,path:[],value:t})}},H["Patches"]||(H.Patches=o)}R(ne,(e,t)=>{re[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}}),re.deleteProperty=function(e,t){return re.set.call(this,e,t,void 0)},re.set=function(e,t,n){return ne.set.call(this,e[0],t,n,e[0])};var ue=new class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.produce=(e,t,n)=>{if("function"==typeof e&&"function"!=typeof t){const n=t;t=e;const r=this;return function(e=n,...a){return r.produce(e,e=>t.call(this,e,...a))}}let r;if("function"!=typeof t&&A(6),void 0!==n&&"function"!=typeof n&&A(7),E(e)){const a=X(this),o=ce(e,void 0);let s=!0;try{r=t(o),s=!1}finally{s?$(a):G(a)}return Q(a,n),J(r,a)}if(!e||"object"!=typeof e){if(r=t(e),void 0===r&&(r=e),r===k&&(r=void 0),this.autoFreeze_&&F(r,!0),n){const t=[],a=[];W("Patches").generateReplacementPatches_(e,r,t,a),n(t,a)}return r}A(1)},this.produceWithPatches=(e,t)=>{if("function"==typeof e)return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},"boolean"==typeof e?.autoFreeze&&this.setAutoFreeze(e.autoFreeze),"boolean"==typeof e?.useStrictShallowCopy&&this.setUseStrictShallowCopy(e.useStrictShallowCopy)}createDraft(e){var t;E(e)||A(8),x(e)&&(x(t=e)||A(10),e=le(t));const n=X(this),r=ce(e,void 0);return r[_].isManual_=!0,G(n),r}finishDraft(e,t){const n=e&&e[_];n&&n.isManual_||A(9);const{scope_:r}=n;return Q(r,t),J(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){const r=t[n];if(0===r.path.length&&"replace"===r.op){e=r.value;break}}n>-1&&(t=t.slice(n+1));const r=W("Patches").applyPatches_;return x(e)?r(e,t):this.produce(e,e=>r(e,t))}},me=ue.produce,fe=ue.produceWithPatches.bind(ue),pe=ue.applyPatches.bind(ue),he=e=>Array.isArray(e)?e:[e];var ye="undefined"!=typeof WeakRef?WeakRef:class{constructor(e){this.value=e}deref(){return this.value}};function ge(){return{s:0,v:void 0,o:null,p:null}}function we(e,t={}){let n={s:0,v:void 0,o:null,p:null};const{resultEqualityCheck:r}=t;let a,o=0;function s(){let t=n;const{length:s}=arguments;for(let e=0,n=s;e<n;e++){const n=arguments[e];if("function"==typeof n||"object"==typeof n&&null!==n){let e=t.o;null===e&&(t.o=e=new WeakMap);const r=e.get(n);void 0===r?(t=ge(),e.set(n,t)):t=r}else{let e=t.p;null===e&&(t.p=e=new Map);const r=e.get(n);void 0===r?(t=ge(),e.set(n,t)):t=r}}const i=t;let c;if(1===t.s)c=t.v;else if(c=e.apply(null,arguments),o++,r){const e=a?.deref?.()??a;null!=e&&r(e,c)&&(c=e,0!==o&&o--),a="object"==typeof c&&null!==c||"function"==typeof c?new ye(c):c}return i.s=1,i.v=c,c}return s.clearCache=()=>{n={s:0,v:void 0,o:null,p:null},s.resetResultsCount()},s.resultsCount=()=>o,s.resetResultsCount=()=>{o=0},s}var be=function(e,...t){const n="function"==typeof e?{memoize:e,memoizeOptions:t}:e,r=(...e)=>{let t,r=0,a=0,o={},s=e.pop();"object"==typeof s&&(o=s,s=e.pop()),function(e,t="expected a function, instead received "+typeof e){if("function"!=typeof e)throw new TypeError(t)}(s,`createSelector expects an output function after the inputs, but received: [${typeof s}]`);const i={...n,...o},{memoize:c,memoizeOptions:l=[],argsMemoize:d=we,argsMemoizeOptions:u=[]}=i,m=he(l),f=he(u),p=function(e){const t=Array.isArray(e[0])?e[0]:e;return function(e,t="expected all items to be functions, instead received the following types: "){if(!e.every(e=>"function"==typeof e)){const n=e.map(e=>"function"==typeof e?`function ${e.name||"unnamed"}()`:typeof e).join(", ");throw new TypeError(`${t}[${n}]`)}}(t,"createSelector expects all input-selectors to be functions, but received the following types: "),t}(e),h=c(function(){return r++,s.apply(null,arguments)},...m),y=d(function(){a++;const e=function(e,t){const n=[],{length:r}=e;for(let a=0;a<r;a++)n.push(e[a].apply(null,t));return n}(p,arguments);return t=h.apply(null,e),t},...f);return Object.assign(y,{resultFunc:s,memoizedResultFunc:h,dependencies:p,dependencyRecomputations:()=>a,resetDependencyRecomputations:()=>{a=0},lastResult:()=>t,recomputations:()=>r,resetRecomputations:()=>{r=0},memoize:c,argsMemoize:d})};return Object.assign(r,{withTypes:()=>r}),r}(we),Ie=Object.assign((e,t=be)=>{!function(e,t="expected an object, instead received "+typeof e){if("object"!=typeof e)throw new TypeError(t)}(e,"createStructuredSelector expects first argument to be an object where each property is a selector, instead received a "+typeof e);const n=Object.keys(e);return t(n.map(t=>e[t]),(...e)=>e.reduce((e,t,r)=>(e[n[r]]=t,e),{}))},{withTypes:()=>Ie});function ve(e){return({dispatch:t,getState:n})=>r=>a=>"function"==typeof a?a(t,n,e):r(a)}var ke=ve(),Se=ve,_e="undefined"!=typeof window&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(0!==arguments.length)return"object"==typeof arguments[0]?I:I.apply(null,arguments)};function Ae(e,t){function n(...n){if(t){let r=t(...n);if(!r)throw new Error(Dt(0));return{type:e,payload:r.payload,..."meta"in r&&{meta:r.meta},..."error"in r&&{error:r.error}}}return{type:e,payload:n[0]}}return n.toString=()=>`${e}`,n.type=e,n.match=t=>v(t)&&t.type===e,n}var Pe=class e extends Array{constructor(...t){super(...t),Object.setPrototypeOf(this,e.prototype)}static get[Symbol.species](){return e}concat(...e){return super.concat.apply(this,e)}prepend(...t){return 1===t.length&&Array.isArray(t[0])?new e(...t[0].concat(this)):new e(...t.concat(this))}};function xe(e){return E(e)?me(e,()=>{}):e}function Ee(e,t,n){return e.has(t)?e.get(t):e.set(t,n(t)).get(t)}var Ce="RTK_autoBatch",Te=()=>e=>({payload:e,meta:{[Ce]:!0}}),Re=e=>t=>{setTimeout(t,e)};function Me(e){const t={},n=[];let r;const a={addCase(e,n){const r="string"==typeof e?e:e.type;if(!r)throw new Error(Dt(28));if(r in t)throw new Error(Dt(29));return t[r]=n,a},addAsyncThunk:(e,r)=>(r.pending&&(t[e.pending.type]=r.pending),r.rejected&&(t[e.rejected.type]=r.rejected),r.fulfilled&&(t[e.fulfilled.type]=r.fulfilled),r.settled&&n.push({matcher:e.settled,reducer:r.settled}),a),addMatcher:(e,t)=>(n.push({matcher:e,reducer:t}),a),addDefaultCase:e=>(r=e,a)};return e(a),[t,n,r]}var De=(e,t)=>{return(n=e)&&"function"==typeof n.match?e.match(t):e(t);var n};function Ue(...e){return t=>e.some(e=>De(e,t))}function Oe(...e){return t=>e.every(e=>De(e,t))}function Be(e,t){if(!e||!e.meta)return!1;const n="string"==typeof e.meta.requestId,r=t.indexOf(e.meta.requestStatus)>-1;return n&&r}function qe(e){return"function"==typeof e[0]&&"pending"in e[0]&&"fulfilled"in e[0]&&"rejected"in e[0]}function je(...e){return 0===e.length?e=>Be(e,["pending"]):qe(e)?Ue(...e.map(e=>e.pending)):je()(e[0])}function Ke(...e){return 0===e.length?e=>Be(e,["rejected"]):qe(e)?Ue(...e.map(e=>e.rejected)):Ke()(e[0])}function Fe(...e){return 0===e.length||qe(e)?Oe(Ke(...e),e=>e&&e.meta&&e.meta.rejectedWithValue):Fe()(e[0])}function Ne(...e){return 0===e.length?e=>Be(e,["fulfilled"]):qe(e)?Ue(...e.map(e=>e.fulfilled)):Ne()(e[0])}function ze(...e){return 0===e.length?e=>Be(e,["pending","fulfilled","rejected"]):qe(e)?Ue(...e.flatMap(e=>[e.pending,e.rejected,e.fulfilled])):ze()(e[0])}var Le=(e=21)=>{let t="",n=e;for(;n--;)t+="ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW"[64*Math.random()|0];return t},He=["name","message","stack","code"],We=class{constructor(e,t){this.payload=e,this.meta=t}_type},Ve=class{constructor(e,t){this.payload=e,this.meta=t}_type},Qe=e=>{if("object"==typeof e&&null!==e){const t={};for(const n of He)"string"==typeof e[n]&&(t[n]=e[n]);return t}return{message:String(e)}},$e="External signal was aborted",Ge=(()=>{function e(e,t,n){const r=Ae(e+"/fulfilled",(e,t,n,r)=>({payload:e,meta:{...r||{},arg:n,requestId:t,requestStatus:"fulfilled"}})),a=Ae(e+"/pending",(e,t,n)=>({payload:void 0,meta:{...n||{},arg:t,requestId:e,requestStatus:"pending"}})),o=Ae(e+"/rejected",(e,t,r,a,o)=>({payload:a,error:(n&&n.serializeError||Qe)(e||"Rejected"),meta:{...o||{},arg:r,requestId:t,rejectedWithValue:!!a,requestStatus:"rejected",aborted:"AbortError"===e?.name,condition:"ConditionError"===e?.name}}));return Object.assign(function(e,{signal:s}={}){return(i,c,l)=>{const d=n?.idGenerator?n.idGenerator(e):Le(),u=new AbortController;let m,f;function p(e){f=e,u.abort()}s&&(s.aborted?p($e):s.addEventListener("abort",()=>p($e),{once:!0}));const h=async function(){let s;try{let o=n?.condition?.(e,{getState:c,extra:l});if(null!==(h=o)&&"object"==typeof h&&"function"==typeof h.then&&(o=await o),!1===o||u.signal.aborted)throw{name:"ConditionError",message:"Aborted due to condition callback returning false."};const y=new Promise((e,t)=>{m=()=>{t({name:"AbortError",message:f||"Aborted"})},u.signal.addEventListener("abort",m)});i(a(d,e,n?.getPendingMeta?.({requestId:d,arg:e},{getState:c,extra:l}))),s=await Promise.race([y,Promise.resolve(t(e,{dispatch:i,getState:c,extra:l,requestId:d,signal:u.signal,abort:p,rejectWithValue:(e,t)=>new We(e,t),fulfillWithValue:(e,t)=>new Ve(e,t)})).then(t=>{if(t instanceof We)throw t;return t instanceof Ve?r(t.payload,d,e,t.meta):r(t,d,e)})])}catch(t){s=t instanceof We?o(null,d,e,t.payload,t.meta):o(t,d,e)}finally{m&&u.signal.removeEventListener("abort",m)}var h;return n&&!n.dispatchConditionRejection&&o.match(s)&&s.meta.condition||i(s),s}();return Object.assign(h,{abort:p,requestId:d,arg:e,unwrap:()=>h.then(Xe)})}},{pending:a,rejected:o,fulfilled:r,settled:Ue(o,r),typePrefix:e})}return e.withTypes=()=>e,e})();function Xe(e){if(e.meta&&e.meta.rejectedWithValue)throw e.payload;if(e.error)throw e.error;return e.payload}var Ye=Symbol.for("rtk-slice-createasyncthunk");function Je(e,t){return`${e}/${t}`}function Ze(e,t,n,r){function a(a,...o){let s=t(a);return void 0===s&&r&&(s=n()),e(s,...o)}return a.unwrapped=e,a}var et=function({creators:e}={}){const t=e?.asyncThunk?.[Ye];return function(e){const{name:n,reducerPath:r=n}=e;if(!n)throw new Error(Dt(11));const a=("function"==typeof e.reducers?e.reducers(function(){function e(e,t){return{_reducerDefinitionType:"asyncThunk",payloadCreator:e,...t}}return e.withTypes=()=>e,{reducer:e=>Object.assign({[e.name]:(...t)=>e(...t)}[e.name],{_reducerDefinitionType:"reducer"}),preparedReducer:(e,t)=>({_reducerDefinitionType:"reducerWithPrepare",prepare:e,reducer:t}),asyncThunk:e}}()):e.reducers)||{},o=Object.keys(a),s={sliceCaseReducersByName:{},sliceCaseReducersByType:{},actionCreators:{},sliceMatchers:[]},i={addCase(e,t){const n="string"==typeof e?e:e.type;if(!n)throw new Error(Dt(12));if(n in s.sliceCaseReducersByType)throw new Error(Dt(13));return s.sliceCaseReducersByType[n]=t,i},addMatcher:(e,t)=>(s.sliceMatchers.push({matcher:e,reducer:t}),i),exposeAction:(e,t)=>(s.actionCreators[e]=t,i),exposeCaseReducer:(e,t)=>(s.sliceCaseReducersByName[e]=t,i)};function c(){const[t={},n=[],r]="function"==typeof e.extraReducers?Me(e.extraReducers):[e.extraReducers],a={...t,...s.sliceCaseReducersByType};return function(e,t){let n,[r,a,o]=Me(t);if("function"==typeof e)n=()=>xe(e());else{const t=xe(e);n=()=>t}function s(e=n(),t){let s=[r[t.type],...a.filter(({matcher:e})=>e(t)).map(({reducer:e})=>e)];return 0===s.filter(e=>!!e).length&&(s=[o]),s.reduce((e,n)=>{if(n){if(x(e)){const r=n(e,t);return void 0===r?e:r}if(E(e))return me(e,e=>n(e,t));{const r=n(e,t);if(void 0===r){if(null===e)return e;throw Error("A case reducer on a non-draftable value must not return undefined")}return r}}return e},e)}return s.getInitialState=n,s}(e.initialState,e=>{for(let t in a)e.addCase(t,a[t]);for(let t of s.sliceMatchers)e.addMatcher(t.matcher,t.reducer);for(let t of n)e.addMatcher(t.matcher,t.reducer);r&&e.addDefaultCase(r)})}o.forEach(r=>{const o=a[r],s={reducerName:r,type:Je(n,r),createNotation:"function"==typeof e.reducers};!function(e){return"asyncThunk"===e._reducerDefinitionType}(o)?function({type:e,reducerName:t,createNotation:n},r,a){let o,s;if("reducer"in r){if(n&&!function(e){return"reducerWithPrepare"===e._reducerDefinitionType}(r))throw new Error(Dt(17));o=r.reducer,s=r.prepare}else o=r;a.addCase(e,o).exposeCaseReducer(t,o).exposeAction(t,s?Ae(e,s):Ae(e))}(s,o,i):function({type:e,reducerName:t},n,r,a){if(!a)throw new Error(Dt(18));const{payloadCreator:o,fulfilled:s,pending:i,rejected:c,settled:l,options:d}=n,u=a(e,o,d);r.exposeAction(t,u),s&&r.addCase(u.fulfilled,s),i&&r.addCase(u.pending,i),c&&r.addCase(u.rejected,c),l&&r.addMatcher(u.settled,l),r.exposeCaseReducer(t,{fulfilled:s||tt,pending:i||tt,rejected:c||tt,settled:l||tt})}(s,o,i,t)});const l=e=>e,d=new Map,u=new WeakMap;let m;function f(e,t){return m||(m=c()),m(e,t)}function p(){return m||(m=c()),m.getInitialState()}function h(t,n=!1){function r(e){let a=e[t];return void 0===a&&n&&(a=Ee(u,r,p)),a}function a(t=l){const r=Ee(d,n,()=>new WeakMap);return Ee(r,t,()=>{const r={};for(const[a,o]of Object.entries(e.selectors??{}))r[a]=Ze(o,t,()=>Ee(u,t,p),n);return r})}return{reducerPath:t,getSelectors:a,get selectors(){return a(r)},selectSlice:r}}const y={name:n,reducer:f,actions:s.actionCreators,caseReducers:s.sliceCaseReducersByName,getInitialState:p,...h(r),injectInto(e,{reducerPath:t,...n}={}){const a=t??r;return e.inject({reducerPath:a,reducer:f},n),{...y,...h(a,!0)}}};return y}}();function tt(){}var nt="listener",rt="completed",at="cancelled",ot=`task-${at}`,st=`task-${rt}`,it=`${nt}-${at}`,ct=`${nt}-${rt}`,lt=class{constructor(e){this.code=e,this.message=`task ${at} (reason: ${e})`}name="TaskAbortError";message},dt=(e,t)=>{if("function"!=typeof e)throw new TypeError(Dt(32))},ut=()=>{},mt=(e,t=ut)=>(e.catch(t),e),ft=(e,t)=>(e.addEventListener("abort",t,{once:!0}),()=>e.removeEventListener("abort",t)),pt=(e,t)=>{const n=e.signal;n.aborted||("reason"in n||Object.defineProperty(n,"reason",{enumerable:!0,value:t,configurable:!0,writable:!0}),e.abort(t))},ht=e=>{if(e.aborted){const{reason:t}=e;throw new lt(t)}};function yt(e,t){let n=ut;return new Promise((r,a)=>{const o=()=>a(new lt(e.reason));e.aborted?o():(n=ft(e,o),t.finally(()=>n()).then(r,a))}).finally(()=>{n=ut})}var gt=e=>t=>mt(yt(e,t).then(t=>(ht(e),t))),wt=e=>{const t=gt(e);return e=>t(new Promise(t=>setTimeout(t,e)))},{assign:bt}=Object,It={},vt="listenerMiddleware",kt=(e,t)=>(n,r)=>{dt(n);const a=new AbortController;var o;o=a,ft(e,()=>pt(o,e.reason));const s=(async e=>{try{return await Promise.resolve(),{status:"ok",value:await e()}}catch(e){return{status:e instanceof lt?"cancelled":"rejected",error:e}}finally{pt(a,st)}})(async()=>{ht(e),ht(a.signal);const t=await n({pause:gt(a.signal),delay:wt(a.signal),signal:a.signal});return ht(a.signal),t});return r?.autoJoin&&t.push(s.catch(ut)),{result:gt(e)(s),cancel(){pt(a,ot)}}},St=e=>{let{type:t,actionCreator:n,matcher:r,predicate:a,effect:o}=e;if(t)a=Ae(t).match;else if(n)t=n.type,a=n.match;else if(r)a=r;else if(!a)throw new Error(Dt(21));return dt(o),{predicate:a,type:t,effect:o}},_t=bt(e=>{const{type:t,predicate:n,effect:r}=St(e);return{id:Le(),effect:r,type:t,predicate:n,pending:new Set,unsubscribe:()=>{throw new Error(Dt(22))}}},{withTypes:()=>_t}),At=(e,t)=>{const{type:n,effect:r,predicate:a}=St(t);return Array.from(e.values()).find(e=>("string"==typeof n?e.type===n:e.predicate===a)&&e.effect===r)},Pt=e=>{e.pending.forEach(e=>{pt(e,it)})},xt=(e,t,n)=>{try{e(t,n)}catch(e){setTimeout(()=>{throw e},0)}},Et=bt(Ae(`${vt}/add`),{withTypes:()=>Et}),Ct=Ae(`${vt}/removeAll`),Tt=bt(Ae(`${vt}/remove`),{withTypes:()=>Tt}),Rt=(...e)=>{console.error(`${vt}/error`,...e)},Mt=(e={})=>{const t=new Map,{extra:n,onError:r=Rt}=e;dt(r);const a=e=>(e=>(e.unsubscribe=()=>t.delete(e.id),t.set(e.id,e),t=>{e.unsubscribe(),t?.cancelActive&&Pt(e)}))(At(t,e)??_t(e));bt(a,{withTypes:()=>a});const o=e=>{const n=At(t,e);return n&&(n.unsubscribe(),e.cancelActive&&Pt(n)),!!n};bt(o,{withTypes:()=>o});const s=async(e,o,s,i)=>{const c=new AbortController,l=((e,t)=>(n,r)=>mt((async(n,r)=>{ht(t);let a=()=>{};const o=[new Promise((t,r)=>{let o=e({predicate:n,effect:(e,n)=>{n.unsubscribe(),t([e,n.getState(),n.getOriginalState()])}});a=()=>{o(),r()}})];null!=r&&o.push(new Promise(e=>setTimeout(e,r,null)));try{const e=await yt(t,Promise.race(o));return ht(t),e}finally{a()}})(n,r)))(a,c.signal),d=[];try{e.pending.add(c),await Promise.resolve(e.effect(o,bt({},s,{getOriginalState:i,condition:(e,t)=>l(e,t).then(Boolean),take:l,delay:wt(c.signal),pause:gt(c.signal),extra:n,signal:c.signal,fork:kt(c.signal,d),unsubscribe:e.unsubscribe,subscribe:()=>{t.set(e.id,e)},cancelActiveListeners:()=>{e.pending.forEach((e,t,n)=>{e!==c&&(pt(e,it),n.delete(e))})},cancel:()=>{pt(c,it),e.pending.delete(c)},throwIfCancelled:()=>{ht(c.signal)}})))}catch(e){e instanceof lt||xt(r,e,{raisedBy:"effect"})}finally{await Promise.all(d),pt(c,ct),e.pending.delete(c)}},i=(e=>()=>{e.forEach(Pt),e.clear()})(t);return{middleware:e=>n=>c=>{if(!v(c))return n(c);if(Et.match(c))return a(c.payload);if(Ct.match(c))return void i();if(Tt.match(c))return o(c.payload);let l=e.getState();const d=()=>{if(l===It)throw new Error(Dt(23));return l};let u;try{if(u=n(c),t.size>0){const n=e.getState(),a=Array.from(t.values());for(const t of a){let a=!1;try{a=t.predicate(c,n,l)}catch(e){a=!1,xt(r,e,{raisedBy:"predicate"})}a&&s(t,c,e,d)}}}finally{l=It}return u},startListening:a,stopListening:o,clearListeners:i}};function Dt(e){return`Minified Redux Toolkit error #${e}; visit https://redux-toolkit.js.org/Errors?code=${e} for the full message or use the non-minified dev environment for full errors. `}const Ut=et({name:"commonState",initialState:{currentRoomUrl:""},reducers:{setCurrentRoomUrl:(e,t)=>{e.currentRoomUrl=t.payload}}}),{setCurrentRoomUrl:Ot}=Ut.actions;var Bt=Ut.reducer;const qt={peerId:localStorage.getItem("peerId")??"",challengeId:localStorage.getItem("challengeId")??"",publicKey:localStorage.getItem("publicKey")??"",secretKey:localStorage.getItem("secretKey")??"",challenge:localStorage.getItem("challenge")??"",signature:localStorage.getItem("signature")??""},jt=et({name:"keyPair",initialState:qt,reducers:{setKeyPair:(e,t)=>{const{publicKey:n,secretKey:r}=t.payload;64===n.length&&128===r.length&&(e.publicKey=t.payload.publicKey,e.secretKey=t.payload.secretKey)},setReconnectData:(e,t)=>{const{peerId:n,challenge:r,signature:a,challengeId:o}=t.payload;m(n,4)&&m(o)&&c(r)&&c(a)&&64===r.length&&128===a.length&&(e.peerId=n,e.challenge=r,e.signature=a,e.challengeId=o)},setPeerData:(e,t)=>{const{peerId:n,challenge:r,signature:a}=t.payload;m(n,4)&&c(r)&&c(a)&&64===r.length&&128===a.length&&(e.peerId=n,e.challenge=r,e.signature=a)},setChallengeId:(e,t)=>{const{challengeId:n}=t.payload;m(n)&&(e.challengeId=n)},resetIdentity:(e,t)=>({peerId:"",challengeId:"",publicKey:"",secretKey:"",challenge:"",signature:""})}}),{setKeyPair:Kt,setReconnectData:Ft,setPeerData:Nt,setChallengeId:zt,resetIdentity:Lt}=jt.actions;var Ht=jt.reducer;const Wt=64*Uint8Array.BYTES_PER_ELEMENT,Vt=64*Uint8Array.BYTES_PER_ELEMENT,Qt=32*Uint8Array.BYTES_PER_ELEMENT,$t=32*Uint8Array.BYTES_PER_ELEMENT,Gt=64*Uint8Array.BYTES_PER_ELEMENT,Xt=16*Uint8Array.BYTES_PER_ELEMENT,Yt=32*Uint8Array.BYTES_PER_ELEMENT,Jt=32*Uint8Array.BYTES_PER_ELEMENT,Zt=12*Uint8Array.BYTES_PER_ELEMENT,en=12*Uint8Array.BYTES_PER_ELEMENT,tn=16*Uint8Array.BYTES_PER_ELEMENT,nn=e=>en+e+Xt,rn=e=>e-en-Xt,an={iceServers:[{urls:["stun:stun.p2party.com:3478"]}],iceTransportPolicy:"all"},on=et({name:"rooms",initialState:[],reducers:{setRoom:(e,t)=>{const{url:n,id:r,canBeConnectionRelay:a,rtcConfig:o,onlyConnectWithKnownPeers:s}=t.payload;if(64===n.length&&m(r)){const t=e.findIndex(e=>e.url===n||e.id===r);t>-1?(e[t].url=n,e[t].id=r,null!=a&&(e[t].canBeConnectionRelay=a),o&&(e[t].rtcConfig=o),e[t].onlyConnectWithKnownAddresses=null!=s?s:"true"===localStorage.getItem(n+"-onlyConnectWithKnownPeers")):e.push({url:n,id:r,connectingToPeers:!1,connectedToPeers:!1,canBeConnectionRelay:a??!0,onlyConnectWithKnownAddresses:s??"true"===localStorage.getItem(n+"-onlyConnectWithKnownPeers"),rtcConfig:o??an,peers:[],channels:[],messages:[]})}else if(64===n.length){const t=e.findIndex(e=>e.url===n);t>-1?(e[t].url=n,e[t].id="",null!=a&&(e[t].canBeConnectionRelay=a),o&&(e[t].rtcConfig=o),e[t].onlyConnectWithKnownAddresses=null!=s?s:"true"===localStorage.getItem(n+"-onlyConnectWithKnownPeers")):e.push({url:n,id:"",connectingToPeers:!1,connectedToPeers:!1,canBeConnectionRelay:a??!0,onlyConnectWithKnownAddresses:s??"true"===localStorage.getItem(n+"-onlyConnectWithKnownPeers"),rtcConfig:o??an,peers:[],channels:[],messages:[]})}},setConnectingToPeers:(e,t)=>{const{roomId:n,connectingToPeers:r}=t.payload,a=e.findIndex(e=>e.id===n);a>-1&&(e[a].connectingToPeers=r)},setConnectedToPeers:(e,t)=>{const{roomId:n,connectedToPeers:r}=t.payload,a=e.findIndex(e=>e.id===n);a>-1&&(e[a].connectingToPeers=!1,e[a].connectedToPeers=r)},setConnectionRelay:(e,t)=>{const{roomId:n,canBeConnectionRelay:r}=t.payload,a=e.findIndex(e=>e.id===n);a>-1&&(e[a].canBeConnectionRelay=r)},setPeer:(e,t)=>{const{roomId:n,peerId:r,peerPublicKey:a}=t.payload,o=e.findIndex(e=>e.id===n);o>-1&&-1===e[o].peers.findIndex(e=>e.peerId===r)&&e[o].peers.push({peerId:r,peerPublicKey:a})},deletePeer:(e,t)=>{const n=e.length;for(let r=0;r<n;r++){const n=e[r].peers.findIndex(e=>e.peerId===t.payload.peerId);n>-1&&e[r].peers.splice(n,1)}},setChannel:(e,t)=>{const{roomId:n,label:r,peerId:a}=t.payload,o=e.findIndex(e=>e.id===n);if(o>-1){const t=e[o].channels.findIndex(e=>e.label===r);t>-1?-1===e[o].channels[t].peerIds.findIndex(e=>e===a)&&e[o].channels[t].peerIds.push(a):e[o].channels.push({label:r,peerIds:[a]})}},deleteChannel:(e,t)=>{const{peerId:n,label:r}=t.payload,a=e.length;for(let t=0;t<a;t++)if(r&&!n){const n=e[t].channels.findIndex(e=>e.label===r);n>-1&&e[t].channels.splice(n,1)}else if(!r&&n){const r=e[t].channels.length;for(let a=0;a<r;a++){const r=e[t].channels[t].peerIds.findIndex(e=>e===n);r>-1&&(e[t].channels[a].peerIds.splice(r,1),0===e[t].channels[a].peerIds.length&&e[t].channels.splice(a,1))}}else if(n&&r){const a=e[t].channels.findIndex(e=>e.label===r&&e.peerIds.includes(n));if(a>-1){const r=e[t].channels[a].peerIds.findIndex(e=>e===n);e[t].channels[a].peerIds.splice(r,1),0===e[t].channels[a].peerIds.length&&e[t].channels.splice(a,1)}}},setIceServers:(e,t)=>{const{roomId:n,iceServers:r}=t.payload,a=e.findIndex(e=>e.id===n);if(a>-1){const t=r.length,n=e[a].rtcConfig.iceServers?.flatMap(e=>Array.isArray(e.urls)?e.urls:[e.urls])??[];for(let o=0;o<t;o++){const t=r[o].urls.length;let s=!1;for(let e=0;e<t;e++)if(!n.includes(r[o].urls[e])){s=!0;break}s&&e[a].rtcConfig.iceServers?.push(r[o])}}},setMessage:(e,t)=>{const{roomId:n,merkleRootHex:r,sha512Hex:a,filename:o,channelLabel:s,fromPeerId:i,messageType:c,chunkSize:l,totalSize:d,chunksCreated:u,totalChunks:f,timestamp:p}=t.payload,h=e.findIndex(e=>e.id===n);if(h>-1){const t=e[h].messages.findLastIndex(e=>e.merkleRootHex===r||e.sha512Hex===a&&0===e.merkleRootHex.length);-1===t?s&&i&&m(i)&&c&&d&&e[h].messages.push({merkleRootHex:r,sha512Hex:a,channelLabel:s,filename:o.length>0?o:"txt",messageType:c,fromPeerId:i,timestamp:p??Date.now(),savedSize:l>0?l:0,totalSize:d,chunksCreated:u??0,totalChunks:f??0}):e[h].messages[t].timestamp!==p&&e[h].messages[t].sha512Hex===a&&e[h].messages[t].savedSize===e[h].messages[t].totalSize?e[h].messages.push({merkleRootHex:r,sha512Hex:a,channelLabel:s,filename:o.length>0?o:"txt",messageType:c,fromPeerId:i,timestamp:p??Date.now(),savedSize:l,totalSize:d,chunksCreated:u??0,totalChunks:f??0}):(r.length===2*Wt&&""===e[h].messages[t].merkleRootHex&&(e[h].messages[t].merkleRootHex=r),d>0&&e[h].messages[t].totalSize!==d&&(e[h].messages[t].totalSize=d),l>0&&e[h].messages[t].totalSize>=e[h].messages[t].savedSize+l&&(e[h].messages[t].savedSize+=l),u&&u<=e[h].messages[t].totalChunks&&(e[h].messages[t].chunksCreated=u+1))}},setMessageAllChunks:(e,t)=>{const{roomId:n,merkleRootHex:r,sha512Hex:a,channelLabel:o,filename:s,messageType:i,fromPeerId:c,timestamp:l,totalSize:d}=t.payload,u=e.findIndex(e=>e.id===n);if(u>-1){const t=e[u].messages.findLastIndex(e=>e.merkleRootHex===r);-1===t&&o&&c&&m(c)&&i&&d||t>-1&&e[u].messages[t].timestamp<l?e[u].messages.push({merkleRootHex:r,sha512Hex:a,channelLabel:o,filename:s.length>0?s:"txt",messageType:i,fromPeerId:c,timestamp:l,savedSize:d,totalSize:d,chunksCreated:0,totalChunks:0}):t>-1&&e[u].messages[t].savedSize!==d&&(e[u].messages[t].savedSize=d)}},deleteMessage:(e,t)=>{const{merkleRootHex:n,hashHex:r}=t.payload;if(!n&&!r)return;if(n&&n.length!==2*Wt)return;if(r&&r.length!==2*Wt)return;const a=e.length;for(let t=0;t<a;t++)if(n){const r=e[t].messages.findIndex(e=>e.merkleRootHex===n);r>-1&&e[t].messages.splice(r,1)}else if(r){const n=e[t].messages.findLastIndex(e=>e.sha512Hex===r);n>-1&&e[t].messages.splice(n,1)}},setOnlyConnectWithKnownPeers:(e,t)=>{const{roomId:n,onlyConnectWithKnownPeers:r}=t.payload,a=e.findIndex(e=>e.id===n);a>-1&&(e[a].onlyConnectWithKnownAddresses=r)},deleteRoom:(e,t)=>{const n=e.findIndex(e=>e.url===t.payload||e.id===t.payload);if(n>-1){const t=e[n].url;e[n]={url:t,id:"",connectingToPeers:!1,connectedToPeers:!1,canBeConnectionRelay:!0,onlyConnectWithKnownAddresses:!1,rtcConfig:an,peers:[],channels:[],messages:[]}}}}}),{setRoom:sn,setConnectingToPeers:cn,setConnectedToPeers:ln,setConnectionRelay:dn,setOnlyConnectWithKnownPeers:un,setPeer:mn,setChannel:fn,setIceServers:pn,setMessage:hn,setMessageAllChunks:yn,deletePeer:gn,deleteChannel:wn,deleteMessage:bn,deleteRoom:In}=on.actions;var vn=on.reducer;const kn="wss://signaling.p2party.com/ws",Sn=et({name:"signalingServer",initialState:{isEstablishingConnection:!1,isConnected:!1,serverUrl:kn},reducers:{startConnecting:(e,t)=>{e.isEstablishingConnection=!0,e.serverUrl=t.payload??kn},connectionEstablished:e=>{e.isConnected=!0,e.isEstablishingConnection=!1},disconnect:e=>{e.isConnected=!1,e.isEstablishingConnection=!1}}}),_n=Sn.actions;var An=Sn.reducer,Pn=class extends Error{issues;constructor(e){super(e[0].message),this.name="SchemaError",this.issues=e}};function xn(e){return{status:e,isUninitialized:"uninitialized"===e,isLoading:"pending"===e,isSuccess:"fulfilled"===e,isError:"rejected"===e}}var En=g;function Cn(e,t){if(e===t||!(En(e)&&En(t)||Array.isArray(e)&&Array.isArray(t)))return t;const n=Object.keys(t),r=Object.keys(e);let a=n.length===r.length;const o=Array.isArray(t)?[]:{};for(const r of n)o[r]=Cn(e[r],t[r]),a&&(a=e[r]===o[r]);return a?e:o}function Tn(e){let t=0;for(const n in e)t++;return t}var Rn=e=>[].concat(...e);function Mn(e){return null!=e}function Dn(e,t,n){return e.has(t)?e.get(t):e.set(t,n(t)).get(t)}var Un=()=>new Map,On=class{constructor(e,t=void 0){this.value=e,this.meta=t}},Bn=Ae("__rtkq/focused"),qn=Ae("__rtkq/unfocused"),jn=Ae("__rtkq/online"),Kn=Ae("__rtkq/offline");function Fn(e){return"query"===e.type}function Nn(e){return"infinitequery"===e.type}function zn(e){return Fn(e)||Nn(e)}function Ln(e,t,n,r,a,o){return"function"==typeof e?e(t,n,r,a).filter(Mn).map(Hn).map(o):Array.isArray(e)?e.map(Hn).map(o):[]}function Hn(e){return"string"==typeof e?{type:e}:e}var Wn=Symbol("forceQueryFn"),Vn=e=>"function"==typeof e[Wn],Qn=class extends Pn{constructor(e,t,n,r){super(e),this.value=t,this.schemaName=n,this._bqMeta=r}},$n=(e,t)=>Array.isArray(e)?e.includes(t):!!e;async function Gn(e,t,n,r){const a=await e["~standard"].validate(t);if(a.issues)throw new Qn(a.issues,t,n,r);return a.value}function Xn(e){return e}var Yn=(e={})=>({...e,[Ce]:!0});function Jn(e,{pages:t,pageParams:n},r){const a=t.length-1;return e.getNextPageParam(t[a],t,n[a],n,r)}function Zn(e,{pages:t,pageParams:n},r){return e.getPreviousPageParam?.(t[0],t,n[0],n,r)}function er(e,t,n,r){return Ln(n[e.meta.arg.endpointName][t],Ne(e)?e.payload:void 0,Fe(e)?e.payload:void 0,e.meta.arg.originalArgs,"baseQueryMeta"in e.meta?e.meta.baseQueryMeta:void 0,r)}function tr(e,t,n){const r=e[t];r&&n(r)}function nr(e){return("arg"in e?e.arg.fixedCacheKey:e.fixedCacheKey)??e.requestId}function rr(e,t,n){const r=e[nr(t)];r&&n(r)}var ar={};function or({reducerPath:e,queryThunk:t,mutationThunk:n,serializeQueryArgs:r,context:{endpointDefinitions:a,apiUid:o,extractRehydrationInfo:s,hasRehydrationInfo:i},assertTagType:c,config:l}){const d=Ae(`${e}/resetApiState`);function u(e,t,n,r){e[t.queryCacheKey]??={status:"uninitialized",endpointName:t.endpointName},tr(e,t.queryCacheKey,e=>{e.status="pending",e.requestId=n&&e.requestId?e.requestId:r.requestId,void 0!==t.originalArgs&&(e.originalArgs=t.originalArgs),e.startedTimeStamp=r.startedTimeStamp,Nn(a[r.arg.endpointName])&&"direction"in t&&(e.direction=t.direction)})}function m(e,t,n,r){tr(e,t.arg.queryCacheKey,e=>{if(e.requestId!==t.requestId&&!r)return;const{merge:o}=a[t.arg.endpointName];if(e.status="fulfilled",o)if(void 0!==e.data){const{fulfilledTimeStamp:r,arg:a,baseQueryMeta:s,requestId:i}=t;let c=me(e.data,e=>o(e,n,{arg:a.originalArgs,baseQueryMeta:s,fulfilledTimeStamp:r,requestId:i}));e.data=c}else e.data=n;else e.data=a[t.arg.endpointName].structuralSharing??1?Cn(x(e.data)?(x(s=e.data)||A(15),s[_].base_):e.data,n):n;var s;delete e.error,e.fulfilledTimeStamp=t.fulfilledTimeStamp})}const f=et({name:`${e}/queries`,initialState:ar,reducers:{removeQueryResult:{reducer(e,{payload:{queryCacheKey:t}}){delete e[t]},prepare:Te()},cacheEntriesUpserted:{reducer(e,t){for(const n of t.payload){const{queryDescription:r,value:a}=n;u(e,r,!0,{arg:r,requestId:t.meta.requestId,startedTimeStamp:t.meta.timestamp}),m(e,{arg:r,requestId:t.meta.requestId,fulfilledTimeStamp:t.meta.timestamp,baseQueryMeta:{}},a,!0)}},prepare:e=>({payload:e.map(e=>{const{endpointName:t,arg:n,value:o}=e,s=a[t];return{queryDescription:{type:"query",endpointName:t,originalArgs:e.arg,queryCacheKey:r({queryArgs:n,endpointDefinition:s,endpointName:t})},value:o}}),meta:{[Ce]:!0,requestId:Le(),timestamp:Date.now()}})},queryResultPatched:{reducer(e,{payload:{queryCacheKey:t,patches:n}}){tr(e,t,e=>{e.data=pe(e.data,n.concat())})},prepare:Te()}},extraReducers(e){e.addCase(t.pending,(e,{meta:t,meta:{arg:n}})=>{u(e,n,Vn(n),t)}).addCase(t.fulfilled,(e,{meta:t,payload:n})=>{m(e,t,n,Vn(t.arg))}).addCase(t.rejected,(e,{meta:{condition:t,arg:n,requestId:r},error:a,payload:o})=>{tr(e,n.queryCacheKey,e=>{if(t);else{if(e.requestId!==r)return;e.status="rejected",e.error=o??a}})}).addMatcher(i,(e,t)=>{const{queries:n}=s(t);for(const[t,r]of Object.entries(n))"fulfilled"!==r?.status&&"rejected"!==r?.status||(e[t]=r)})}}),p=et({name:`${e}/mutations`,initialState:ar,reducers:{removeMutationResult:{reducer(e,{payload:t}){const n=nr(t);n in e&&delete e[n]},prepare:Te()}},extraReducers(e){e.addCase(n.pending,(e,{meta:t,meta:{requestId:n,arg:r,startedTimeStamp:a}})=>{r.track&&(e[nr(t)]={requestId:n,status:"pending",endpointName:r.endpointName,startedTimeStamp:a})}).addCase(n.fulfilled,(e,{payload:t,meta:n})=>{n.arg.track&&rr(e,n,e=>{e.requestId===n.requestId&&(e.status="fulfilled",e.data=t,e.fulfilledTimeStamp=n.fulfilledTimeStamp)})}).addCase(n.rejected,(e,{payload:t,error:n,meta:r})=>{r.arg.track&&rr(e,r,e=>{e.requestId===r.requestId&&(e.status="rejected",e.error=t??n)})}).addMatcher(i,(e,t)=>{const{mutations:n}=s(t);for(const[t,r]of Object.entries(n))"fulfilled"!==r?.status&&"rejected"!==r?.status||t===r?.requestId||(e[t]=r)})}}),h=et({name:`${e}/invalidation`,initialState:{tags:{},keys:{}},reducers:{updateProvidedBy:{reducer(e,t){for(const{queryCacheKey:n,providedTags:r}of t.payload){y(e,n);for(const{type:t,id:a}of r){const r=(e.tags[t]??={})[a||"__internal_without_id"]??=[];r.includes(n)||r.push(n)}e.keys[n]=r}},prepare:Te()}},extraReducers(e){e.addCase(f.actions.removeQueryResult,(e,{payload:{queryCacheKey:t}})=>{y(e,t)}).addMatcher(i,(e,t)=>{const{provided:n}=s(t);for(const[t,r]of Object.entries(n.tags??{}))for(const[a,o]of Object.entries(r)){const r=(e.tags[t]??={})[a||"__internal_without_id"]??=[];for(const t of o)r.includes(t)||r.push(t),e.keys[t]=n.keys[t]}}).addMatcher(Ue(Ne(t),Fe(t)),(e,t)=>{g(e,[t])}).addMatcher(f.actions.cacheEntriesUpserted.match,(e,t)=>{g(e,t.payload.map(({queryDescription:e,value:t})=>({type:"UNKNOWN",payload:t,meta:{requestStatus:"fulfilled",requestId:"UNKNOWN",arg:e}})))})}});function y(e,t){const n=e.keys[t]??[];for(const r of n){const n=r.type,a=r.id??"__internal_without_id",o=e.tags[n]?.[a];o&&(e.tags[n][a]=o.filter(e=>e!==t))}delete e.keys[t]}function g(e,t){const n=t.map(e=>{const t=er(e,"providesTags",a,c),{queryCacheKey:n}=e.meta.arg;return{queryCacheKey:n,providedTags:t}});h.caseReducers.updateProvidedBy(e,h.actions.updateProvidedBy(n))}const w=et({name:`${e}/subscriptions`,initialState:ar,reducers:{updateSubscriptionOptions(e,t){},unsubscribeQueryResult(e,t){},internal_getRTKQSubscriptions(){}}}),I=et({name:`${e}/internalSubscriptions`,initialState:ar,reducers:{subscriptionsUpdated:{reducer:(e,t)=>pe(e,t.payload),prepare:Te()}}}),v=et({name:`${e}/config`,initialState:{online:"undefined"==typeof navigator||void 0===navigator.onLine||navigator.onLine,focused:"undefined"==typeof document||"hidden"!==document.visibilityState,middlewareRegistered:!1,...l},reducers:{middlewareRegistered(e,{payload:t}){e.middlewareRegistered="conflict"!==e.middlewareRegistered&&o===t||"conflict"}},extraReducers:e=>{e.addCase(jn,e=>{e.online=!0}).addCase(Kn,e=>{e.online=!1}).addCase(Bn,e=>{e.focused=!0}).addCase(qn,e=>{e.focused=!1}).addMatcher(i,e=>({...e}))}}),k=b({queries:f.reducer,mutations:p.reducer,provided:h.reducer,subscriptions:I.reducer,config:v.reducer});return{reducer:(e,t)=>k(d.match(t)?void 0:e,t),actions:{...v.actions,...f.actions,...w.actions,...I.actions,...p.actions,...h.actions,resetApiState:d}}}var sr=Symbol.for("RTKQ/skipToken"),ir={status:"uninitialized"},cr=me(ir,()=>{}),lr=me(ir,()=>{}),dr=WeakMap?new WeakMap:void 0,ur=({endpointName:e,queryArgs:t})=>{let n="";const r=dr?.get(t);if("string"==typeof r)n=r;else{const e=JSON.stringify(t,(e,t)=>t=g(t="bigint"==typeof t?{$bigint:t.toString()}:t)?Object.keys(t).sort().reduce((e,n)=>(e[n]=t[n],e),{}):t);g(t)&&dr?.set(t,e),n=e}return`${e}(${n})`};function mr(e,...t){return Object.assign(e,...t)}var fr=({reducerPath:e,api:t,queryThunk:n,context:r,internalState:a,selectors:{selectQueryEntry:o,selectConfig:s},getRunningQueryThunk:i,mwApi:c})=>{const{removeQueryResult:l,unsubscribeQueryResult:d,cacheEntriesUpserted:u}=t.internalActions,m=a.runningQueries.get(c.dispatch),f=Ue(d.match,n.fulfilled,n.rejected,u.match);function p(e){const t=a.currentSubscriptions.get(e);return!!t&&(t.size>0||void 0!==m?.[e])}const h={};function y(e,t,n){const r=t.getState();for(const a of e){const e=o(r,a);e?.endpointName&&g(a,e.endpointName,t,n)}}function g(e,t,n,a){const s=r.endpointDefinitions[t],c=s?.keepUnusedDataFor??a.keepUnusedDataFor;if(c===1/0)return;const d=Math.max(0,Math.min(c,2147482.647));if(!p(e)){const t=h[e];t&&clearTimeout(t),h[e]=setTimeout(()=>{if(!p(e)){const t=o(n.getState(),e);if(t?.endpointName){const e=n.dispatch(i(t.endpointName,t.originalArgs));e?.abort()}n.dispatch(l({queryCacheKey:e}))}delete h[e]},1e3*d)}}return(e,n,a)=>{const o=n.getState(),i=s(o);if(f(e)){let t;if(u.match(e))t=e.payload.map(e=>e.queryDescription.queryCacheKey);else{const{queryCacheKey:n}=d.match(e)?e.payload:e.meta.arg;t=[n]}y(t,n,i)}if(t.util.resetApiState.match(e))for(const[e,t]of Object.entries(h))t&&clearTimeout(t),delete h[e];if(r.hasRehydrationInfo(e)){const{queries:t}=r.extractRehydrationInfo(e);y(Object.keys(t),n,i)}}},pr=new Error("Promise never resolved before cacheEntryRemoved."),hr=({api:e,reducerPath:t,context:n,queryThunk:r,mutationThunk:a,internalState:o,selectors:{selectQueryEntry:s,selectApiState:i}})=>{const c=ze(r),l=ze(a),d=Ne(r,a),u={};function m(e,t,n){const r=u[e];r?.valueResolved&&(r.valueResolved({data:t,meta:n}),delete r.valueResolved)}function f(e){const t=u[e];t&&(delete u[e],t.cacheEntryRemoved())}function p(t,r,a,o,s){const i=n.endpointDefinitions[t],c=i?.onCacheEntryAdded;if(!c)return;const l={},d=new Promise(e=>{l.cacheEntryRemoved=e}),m=Promise.race([new Promise(e=>{l.valueResolved=e}),d.then(()=>{throw pr})]);m.catch(()=>{}),u[a]=l;const f=e.endpoints[t].select(zn(i)?r:a),p=o.dispatch((e,t,n)=>n),h={...o,getCacheEntry:()=>f(o.getState()),requestId:s,extra:p,updateCachedData:zn(i)?n=>o.dispatch(e.util.updateQueryData(t,r,n)):void 0,cacheDataLoaded:m,cacheEntryRemoved:d},y=c(r,h);Promise.resolve(y).catch(e=>{if(e!==pr)throw e})}return(n,o,i)=>{const h=function(t){return c(t)?t.meta.arg.queryCacheKey:l(t)?t.meta.arg.fixedCacheKey??t.meta.requestId:e.internalActions.removeQueryResult.match(t)?t.payload.queryCacheKey:e.internalActions.removeMutationResult.match(t)?nr(t.payload):""}(n);function y(e,t,n,r){const a=s(i,t),c=s(o.getState(),t);!a&&c&&p(e,r,t,o,n)}if(r.pending.match(n))y(n.meta.arg.endpointName,h,n.meta.requestId,n.meta.arg.originalArgs);else if(e.internalActions.cacheEntriesUpserted.match(n))for(const{queryDescription:e,value:t}of n.payload){const{endpointName:r,originalArgs:a,queryCacheKey:o}=e;y(r,o,n.meta.requestId,a),m(o,t,{})}else if(a.pending.match(n))o.getState()[t].mutations[h]&&p(n.meta.arg.endpointName,n.meta.arg.originalArgs,h,o,n.meta.requestId);else if(d(n))m(h,n.payload,n.meta.baseQueryMeta);else if(e.internalActions.removeQueryResult.match(n)||e.internalActions.removeMutationResult.match(n))f(h);else if(e.util.resetApiState.match(n))for(const e of Object.keys(u))f(e)}},yr=({api:e,context:{apiUid:t},reducerPath:n})=>(n,r)=>{e.util.resetApiState.match(n)&&r.dispatch(e.internalActions.middlewareRegistered(t))},gr=({reducerPath:e,context:t,context:{endpointDefinitions:n},mutationThunk:r,queryThunk:a,api:o,assertTagType:s,refetchQuery:i,internalState:c})=>{const{removeQueryResult:l}=o.internalActions,d=Ue(Ne(r),Fe(r)),u=Ue(Ne(r,a),Ke(r,a));let m=[];function f(n,r){const a=r.getState(),s=a[e];if(m.push(...n),"delayed"===s.config.invalidationBehavior&&function(e){const{queries:t,mutations:n}=e;for(const e of[t,n])for(const t in e)if("pending"===e[t]?.status)return!0;return!1}(s))return;const d=m;if(m=[],0===d.length)return;const u=o.util.selectInvalidatedBy(a,d);t.batch(()=>{const e=Array.from(u.values());for(const{queryCacheKey:t}of e){const e=s.queries[t],n=Dn(c.currentSubscriptions,t,Un);e&&(0===n.size?r.dispatch(l({queryCacheKey:t})):"uninitialized"!==e.status&&r.dispatch(i(e)))}})}return(e,t)=>{d(e)?f(er(e,"invalidatesTags",n,s),t):u(e)?f([],t):o.util.invalidateTags.match(e)&&f(Ln(e.payload,void 0,void 0,void 0,void 0,s),t)}},wr=({reducerPath:e,queryThunk:t,api:n,refetchQuery:r,internalState:a})=>{const{currentPolls:o,currentSubscriptions:s}=a,i=new Set;let c=null;function l(e,t){i.add(e),c||(c=setTimeout(()=>{for(const e of i)u({queryCacheKey:e},t);i.clear(),c=null},0))}function d({queryCacheKey:t},n){const a=n.getState()[e],i=a.queries[t],c=s.get(t);if(!i||"uninitialized"===i.status)return;const{lowestPollingInterval:l,skipPollingIfUnfocused:u}=f(c);if(!Number.isFinite(l))return;const m=o.get(t);m?.timeout&&(clearTimeout(m.timeout),m.timeout=void 0);const p=Date.now()+l;o.set(t,{nextPollTimestamp:p,pollingInterval:l,timeout:setTimeout(()=>{!a.config.focused&&u||n.dispatch(r(i)),d({queryCacheKey:t},n)},l)})}function u({queryCacheKey:t},n){const r=n.getState()[e].queries[t],a=s.get(t);if(!r||"uninitialized"===r.status)return;const{lowestPollingInterval:i}=f(a);if(!Number.isFinite(i))return void m(t);const c=o.get(t),l=Date.now()+i;(!c||l<c.nextPollTimestamp)&&d({queryCacheKey:t},n)}function m(e){const t=o.get(e);t?.timeout&&clearTimeout(t.timeout),o.delete(e)}function f(e=new Map){let t=!1,n=Number.POSITIVE_INFINITY;for(const r of e.values())r.pollingInterval&&(n=Math.min(r.pollingInterval,n),t=r.skipPollingIfUnfocused||t);return{lowestPollingInterval:n,skipPollingIfUnfocused:t}}return(e,r)=>{(n.internalActions.updateSubscriptionOptions.match(e)||n.internalActions.unsubscribeQueryResult.match(e))&&l(e.payload.queryCacheKey,r),(t.pending.match(e)||t.rejected.match(e)&&e.meta.condition)&&l(e.meta.arg.queryCacheKey,r),(t.fulfilled.match(e)||t.rejected.match(e)&&!e.meta.condition)&&d(e.meta.arg,r),n.util.resetApiState.match(e)&&(function(){for(const e of o.keys())m(e)}(),c&&(clearTimeout(c),c=null),i.clear())}},br=({api:e,context:t,queryThunk:n,mutationThunk:r})=>{const a=je(n,r),o=Ke(n,r),s=Ne(n,r),i={};return(n,r)=>{if(a(n)){const{requestId:a,arg:{endpointName:o,originalArgs:s}}=n.meta,c=t.endpointDefinitions[o],l=c?.onQueryStarted;if(l){const t={},n=new Promise((e,n)=>{t.resolve=e,t.reject=n});n.catch(()=>{}),i[a]=t;const d=e.endpoints[o].select(zn(c)?s:a),u=r.dispatch((e,t,n)=>n),m={...r,getCacheEntry:()=>d(r.getState()),requestId:a,extra:u,updateCachedData:zn(c)?t=>r.dispatch(e.util.updateQueryData(o,s,t)):void 0,queryFulfilled:n};l(s,m)}}else if(s(n)){const{requestId:e,baseQueryMeta:t}=n.meta;i[e]?.resolve({data:n.payload,meta:t}),delete i[e]}else if(o(n)){const{requestId:e,rejectedWithValue:t,baseQueryMeta:r}=n.meta;i[e]?.reject({error:n.payload??n.error,isUnhandledError:!t,meta:r}),delete i[e]}}};function Ir(e){const{reducerPath:t,queryThunk:n,api:r,context:a,internalState:o}=e,{apiUid:s}=a,i={invalidateTags:Ae(`${t}/invalidateTags`)},c=e=>e.type.startsWith(`${t}/`),l=[yr,fr,gr,wr,hr,br];return{middleware:n=>{let i=!1;const u={...e,internalState:o,refetchQuery:d,isThisApiSliceAction:c,mwApi:n},m=l.map(e=>e(u)),f=(({api:e,queryThunk:t,internalState:n,mwApi:r})=>{const a=`${e.reducerPath}/subscriptions`;let o=null,s=null;const{updateSubscriptionOptions:i,unsubscribeQueryResult:c}=e.internalActions,l=()=>n.currentSubscriptions,d={getSubscriptions:l,getSubscriptionCount:e=>{const t=l().get(e);return t?.size??0},isRequestSubscribed:(e,t)=>{const n=l();return!!n?.get(e)?.get(t)}};function u(e){return JSON.parse(JSON.stringify(Object.fromEntries([...e].map(([e,t])=>[e,Object.fromEntries(t)]))))}return(r,l)=>{if(o||(o=u(n.currentSubscriptions)),e.util.resetApiState.match(r))return o={},n.currentSubscriptions.clear(),s=null,[!0,!1];if(e.internalActions.internal_getRTKQSubscriptions.match(r))return[!1,d];const m=((n,r)=>{if(i.match(r)){const{queryCacheKey:e,requestId:t,options:a}=r.payload,o=n.get(e);return o?.has(t)&&o.set(t,a),!0}if(c.match(r)){const{queryCacheKey:e,requestId:t}=r.payload,a=n.get(e);return a&&a.delete(t),!0}if(e.internalActions.removeQueryResult.match(r))return n.delete(r.payload.queryCacheKey),!0;if(t.pending.match(r)){const{meta:{arg:e,requestId:t}}=r,a=Dn(n,e.queryCacheKey,Un);return e.subscribe&&a.set(t,e.subscriptionOptions??a.get(t)??{}),!0}let a=!1;if(t.rejected.match(r)){const{meta:{condition:e,arg:t,requestId:o}}=r;if(e&&t.subscribe){const e=Dn(n,t.queryCacheKey,Un);e.set(o,t.subscriptionOptions??e.get(o)??{}),a=!0}}return a})(n.currentSubscriptions,r);let f=!0;if(m){s||(s=setTimeout(()=>{const t=u(n.currentSubscriptions),[,r]=fe(o,()=>t);l.next(e.internalActions.subscriptionsUpdated(r)),o=t,s=null},500));const i="string"==typeof r.type&&!!r.type.startsWith(a),c=t.rejected.match(r)&&r.meta.condition&&!!r.meta.arg.subscribe;f=!i&&!c}return[f,!1]}})(u),p=(({reducerPath:e,context:t,api:n,refetchQuery:r,internalState:a})=>{const{removeQueryResult:o}=n.internalActions;function s(n,s){const i=n.getState()[e],c=i.queries,l=a.currentSubscriptions;t.batch(()=>{for(const e of l.keys()){const t=c[e],a=l.get(e);if(!a||!t)continue;const d=[...a.values()];(d.some(e=>!0===e[s])||d.every(e=>void 0===e[s])&&i.config[s])&&(0===a.size?n.dispatch(o({queryCacheKey:e})):"uninitialized"!==t.status&&n.dispatch(r(t)))}})}return(e,t)=>{Bn.match(e)&&s(t,"refetchOnFocus"),jn.match(e)&&s(t,"refetchOnReconnect")}})(u);return e=>o=>{if(!v(o))return e(o);i||(i=!0,n.dispatch(r.internalActions.middlewareRegistered(s)));const l={...n,next:e},d=n.getState(),[u,h]=f(o,l,d);let y;if(y=u?e(o):h,n.getState()[t]&&(p(o,l,d),c(o)||a.hasRehydrationInfo(o)))for(const e of m)e(o,l,d);return y}},actions:i};function d(t){return e.api.endpoints[t.endpointName].initiate(t.originalArgs,{subscribe:!1,forceRefetch:!0})}}var vr=Symbol(),kr=function(...e){return function(t){const n=we(e=>t.extractRehydrationInfo?.(e,{reducerPath:t.reducerPath??"api"})),r={reducerPath:"api",keepUnusedDataFor:60,refetchOnMountOrArgChange:!1,refetchOnFocus:!1,refetchOnReconnect:!1,invalidationBehavior:"delayed",...t,extractRehydrationInfo:n,serializeQueryArgs(e){let n=ur;if("serializeQueryArgs"in e.endpointDefinition){const t=e.endpointDefinition.serializeQueryArgs;n=e=>{const n=t(e);return"string"==typeof n?n:ur({...e,queryArgs:n})}}else t.serializeQueryArgs&&(n=t.serializeQueryArgs);return n(e)},tagTypes:[...t.tagTypes||[]]},a={endpointDefinitions:{},batch(e){e()},apiUid:Le(),extractRehydrationInfo:n,hasRehydrationInfo:we(e=>null!=n(e))},o={injectEndpoints:function(e){const t=e.endpoints({query:e=>({...e,type:"query"}),mutation:e=>({...e,type:"mutation"}),infiniteQuery:e=>({...e,type:"infinitequery"})});for(const[n,r]of Object.entries(t))if(!0!==e.overrideExisting&&n in a.endpointDefinitions){if("throw"===e.overrideExisting)throw new Error(Dt(39))}else{a.endpointDefinitions[n]=r;for(const e of s)e.injectEndpoint(n,r)}return o},enhanceEndpoints({addTagTypes:e,endpoints:t}){if(e)for(const t of e)r.tagTypes.includes(t)||r.tagTypes.push(t);if(t)for(const[e,n]of Object.entries(t))"function"==typeof n?n(a.endpointDefinitions[e]):Object.assign(a.endpointDefinitions[e]||{},n);return o}},s=e.map(e=>e.init(o,r,a));return o.injectEndpoints({endpoints:t.endpoints})}}((({createSelector:e=be}={})=>({name:vr,init(t,{baseQuery:n,tagTypes:r,reducerPath:a,serializeQueryArgs:o,keepUnusedDataFor:s,refetchOnMountOrArgChange:i,refetchOnFocus:c,refetchOnReconnect:l,invalidationBehavior:d,onSchemaFailure:u,catchSchemaFailure:m,skipSchemaValidation:f},p){de();const h=e=>e;Object.assign(t,{reducerPath:a,endpoints:{},internalActions:{onOnline:jn,onOffline:Kn,onFocus:Bn,onFocusLost:qn},util:{}});const y=function({serializeQueryArgs:e,reducerPath:t,createSelector:n}){const r=e=>cr,a=e=>lr;return{buildQuerySelector:function(e,t){return l(e,t,o)},buildInfiniteQuerySelector:function(e,t){const{infiniteQueryOptions:n}=t;return l(e,t,function(e){const t={...e,...xn(e.status)},{isLoading:r,isError:a,direction:o}=t,s="forward"===o,i="backward"===o;return{...t,hasNextPage:d(n,t.data,t.originalArgs),hasPreviousPage:u(n,t.data,t.originalArgs),isFetchingNextPage:r&&s,isFetchingPreviousPage:r&&i,isFetchNextPageError:a&&s,isFetchPreviousPageError:a&&i}})},buildMutationSelector:function(){return e=>{let t;return t="object"==typeof e?nr(e)??sr:e,n(t===sr?a:e=>s(e)?.mutations?.[t]??lr,o)}},selectInvalidatedBy:function(e,n){const r=e[t],a=new Set;for(const e of n.filter(Mn).map(Hn)){const t=r.provided.tags[e.type];if(!t)continue;let n=(void 0!==e.id?t[e.id]:Rn(Object.values(t)))??[];for(const e of n)a.add(e)}return Rn(Array.from(a.values()).map(e=>{const t=r.queries[e];return t?[{queryCacheKey:e,endpointName:t.endpointName,originalArgs:t.originalArgs}]:[]}))},selectCachedArgsForQuery:function(e,t){return Object.values(i(e)).filter(e=>e?.endpointName===t&&"uninitialized"!==e.status).map(e=>e.originalArgs)},selectApiState:s,selectQueries:i,selectMutations:function(e){return s(e)?.mutations},selectQueryEntry:c,selectConfig:function(e){return s(e)?.config}};function o(e){return{...e,...xn(e.status)}}function s(e){return e[t]}function i(e){return s(e)?.queries}function c(e,t){return i(e)?.[t]}function l(t,a,o){return s=>{if(s===sr)return n(r,o);const i=e({queryArgs:s,endpointDefinition:a,endpointName:t});return n(e=>c(e,i)??cr,o)}}function d(e,t,n){return!!t&&null!=Jn(e,t,n)}function u(e,t,n){return!(!t||!e.getPreviousPageParam)&&null!=Zn(e,t,n)}}({serializeQueryArgs:o,reducerPath:a,createSelector:e}),{selectInvalidatedBy:g,selectCachedArgsForQuery:w,buildQuerySelector:b,buildInfiniteQuerySelector:I,buildMutationSelector:v}=y;mr(t.util,{selectInvalidatedBy:g,selectCachedArgsForQuery:w});const{queryThunk:k,infiniteQueryThunk:S,mutationThunk:_,patchQueryData:A,updateQueryData:P,upsertQueryData:x,prefetch:C,buildMatchThunkActions:T}=function({reducerPath:e,baseQuery:t,context:{endpointDefinitions:n},serializeQueryArgs:r,api:a,assertTagType:o,selectors:s,onSchemaFailure:i,catchSchemaFailure:c,skipSchemaValidation:l}){function d(e,t,n=0){const r=[t,...e];return n&&r.length>n?r.slice(0,-1):r}function u(e,t,n=0){const r=[...e,t];return n&&r.length>n?r.slice(1):r}const m=(e,t)=>e.query&&e[t]?e[t]:Xn,f=async(e,{signal:r,abort:a,rejectWithValue:o,fulfillWithValue:f,dispatch:h,getState:y,extra:g})=>{const w=n[e.endpointName],{metaSchema:b,skipSchemaValidation:I=l}=w;try{let v=Xn;const k={signal:r,abort:a,dispatch:h,getState:y,extra:g,endpoint:e.endpointName,type:e.type,forced:"query"===e.type?p(e,y()):void 0,queryCacheKey:"query"===e.type?e.queryCacheKey:void 0},S="query"===e.type?e[Wn]:void 0;let _;const A=async(t,n,r,a)=>{if(null==n&&t.pages.length)return Promise.resolve({data:t});const o={queryArg:e.originalArgs,pageParam:n},s=await P(o),i=a?d:u;return{data:{pages:i(t.pages,s.data,r),pageParams:i(t.pageParams,n,r)},meta:s.meta}};async function P(e){let n;const{extraOptions:r,argSchema:a,rawResponseSchema:o,responseSchema:s}=w;if(a&&!$n(I,"arg")&&(e=await Gn(a,e,"argSchema",{})),S?n=S():w.query?(v=m(w,"transformResponse"),n=await t(w.query(e),k,r)):n=await w.queryFn(e,k,r,e=>t(e,k,r)),n.error)throw new On(n.error,n.meta);let{data:i}=n;o&&!$n(I,"rawResponse")&&(i=await Gn(o,n.data,"rawResponseSchema",n.meta));let c=await v(i,n.meta,e);return s&&!$n(I,"response")&&(c=await Gn(s,c,"responseSchema",n.meta)),{...n,data:c}}if("query"===e.type&&"infiniteQueryOptions"in w){const{infiniteQueryOptions:x}=w,{maxPages:E=1/0}=x;let C;const T={pages:[],pageParams:[]},R=s.selectQueryEntry(y(),e.queryCacheKey)?.data,M=p(e,y())&&!e.direction||!R?T:R;if("direction"in e&&e.direction&&M.pages.length){const D="backward"===e.direction,U=(D?Zn:Jn)(x,M,e.originalArgs);C=await A(M,U,E,D)}else{const{initialPageParam:O=x.initialPageParam}=e,B=R?.pageParams??[],q=B[0]??O,j=B.length;C=await A(M,q,E),S&&(C={data:C.data.pages[0]});for(let K=1;K<j;K++){const F=Jn(x,C.data,e.originalArgs);C=await A(C.data,F,E)}}_=C}else _=await P(e.originalArgs);return b&&!$n(I,"meta")&&_.meta&&(_.meta=await Gn(b,_.meta,"metaSchema",_.meta)),f(_.data,Yn({fulfilledTimeStamp:Date.now(),baseQueryMeta:_.meta}))}catch(N){let z=N;if(z instanceof On){let L=m(w,"transformErrorResponse");const{rawErrorResponseSchema:H,errorResponseSchema:W}=w;let{value:V,meta:Q}=z;try{H&&!$n(I,"rawErrorResponse")&&(V=await Gn(H,V,"rawErrorResponseSchema",Q)),b&&!$n(I,"meta")&&(Q=await Gn(b,Q,"metaSchema",Q));let $=await L(V,Q,e.originalArgs);return W&&!$n(I,"errorResponse")&&($=await Gn(W,$,"errorResponseSchema",Q)),o($,Yn({baseQueryMeta:Q}))}catch(G){z=G}}try{if(z instanceof Qn){const X={endpoint:e.endpointName,arg:e.originalArgs,type:e.type,queryCacheKey:"query"===e.type?e.queryCacheKey:void 0};w.onSchemaFailure?.(z,X),i?.(z,X);const{catchSchemaFailure:Y=c}=w;if(Y)return o(Y(z,X),Yn({baseQueryMeta:z._bqMeta}))}}catch(J){z=J}throw console.error(z),z}};function p(e,t){const n=s.selectQueryEntry(t,e.queryCacheKey),r=s.selectConfig(t).refetchOnMountOrArgChange,a=n?.fulfilledTimeStamp,o=e.forceRefetch??(e.subscribe&&r);return!!o&&(!0===o||(Number(new Date)-Number(a))/1e3>=o)}const h=()=>Ge(`${e}/executeQuery`,f,{getPendingMeta({arg:e}){const t=n[e.endpointName];return Yn({startedTimeStamp:Date.now(),...Nn(t)?{direction:e.direction}:{}})},condition(e,{getState:t}){const r=t(),a=s.selectQueryEntry(r,e.queryCacheKey),o=a?.fulfilledTimeStamp,i=e.originalArgs,c=a?.originalArgs,l=n[e.endpointName],d=e.direction;return!(!Vn(e)&&("pending"===a?.status||!p(e,r)&&(!Fn(l)||!l?.forceRefetch?.({currentArg:i,previousArg:c,endpointState:a,state:r}))&&o&&!d))},dispatchConditionRejection:!0}),y=h(),g=h();function w(e){return t=>t?.meta?.arg?.endpointName===e}return{queryThunk:y,mutationThunk:Ge(`${e}/executeMutation`,f,{getPendingMeta:()=>Yn({startedTimeStamp:Date.now()})}),infiniteQueryThunk:g,prefetch:(e,t,n)=>(r,o)=>{const s=(e=>"force"in e)(n)&&n.force,i=(e=>"ifOlderThan"in e)(n)&&n.ifOlderThan,c=(n=!0)=>{const r={forceRefetch:n,isPrefetch:!0};return a.endpoints[e].initiate(t,r)},l=a.endpoints[e].select(t)(o());if(s)r(c());else if(i){const e=l?.fulfilledTimeStamp;if(!e)return void r(c());(Number(new Date)-Number(new Date(e)))/1e3>=i&&r(c())}else r(c(!1))},updateQueryData:(e,t,n,r=!0)=>(o,s)=>{const i=a.endpoints[e].select(t)(s()),c={patches:[],inversePatches:[],undo:()=>o(a.util.patchQueryData(e,t,c.inversePatches,r))};if("uninitialized"===i.status)return c;let l;if("data"in i)if(E(i.data)){const[e,t,r]=fe(i.data,n);c.patches.push(...t),c.inversePatches.push(...r),l=e}else l=n(i.data),c.patches.push({op:"replace",path:[],value:l}),c.inversePatches.push({op:"replace",path:[],value:i.data});return 0===c.patches.length||o(a.util.patchQueryData(e,t,c.patches,r)),c},upsertQueryData:(e,t,n)=>r=>r(a.endpoints[e].initiate(t,{subscribe:!1,forceRefetch:!0,[Wn]:()=>({data:n})})),patchQueryData:(e,t,s,i)=>(c,l)=>{const d=n[e],u=r({queryArgs:t,endpointDefinition:d,endpointName:e});if(c(a.internalActions.queryResultPatched({queryCacheKey:u,patches:s})),!i)return;const m=a.endpoints[e].select(t)(l()),f=Ln(d.providesTags,m.data,void 0,t,{},o);c(a.internalActions.updateProvidedBy([{queryCacheKey:u,providedTags:f}]))},buildMatchThunkActions:function(e,t){return{matchPending:Oe(je(e),w(t)),matchFulfilled:Oe(Ne(e),w(t)),matchRejected:Oe(Ke(e),w(t))}}}}({baseQuery:n,reducerPath:a,context:p,api:t,serializeQueryArgs:o,assertTagType:h,selectors:y,onSchemaFailure:u,catchSchemaFailure:m,skipSchemaValidation:f}),{reducer:R,actions:M}=or({context:p,queryThunk:k,mutationThunk:_,serializeQueryArgs:o,reducerPath:a,assertTagType:h,config:{refetchOnFocus:c,refetchOnReconnect:l,refetchOnMountOrArgChange:i,keepUnusedDataFor:s,reducerPath:a,invalidationBehavior:d}});mr(t.util,{patchQueryData:A,updateQueryData:P,upsertQueryData:x,prefetch:C,resetApiState:M.resetApiState,upsertQueryEntries:M.cacheEntriesUpserted}),mr(t.internalActions,M);const D={currentSubscriptions:new Map,currentPolls:new Map,runningQueries:new Map,runningMutations:new Map},{buildInitiateQuery:U,buildInitiateInfiniteQuery:O,buildInitiateMutation:B,getRunningMutationThunk:q,getRunningMutationsThunk:j,getRunningQueriesThunk:K,getRunningQueryThunk:F}=function({serializeQueryArgs:e,queryThunk:t,infiniteQueryThunk:n,mutationThunk:r,api:a,context:o,internalState:s}){const{runningQueries:i,runningMutations:c}=s,{unsubscribeQueryResult:l,removeMutationResult:d,updateSubscriptionOptions:u}=a.internalActions;return{buildInitiateQuery:function(e,t){return m(e,t)},buildInitiateInfiniteQuery:function(e,t){return m(e,t)},buildInitiateMutation:function(e){return(t,{track:n=!0,fixedCacheKey:a}={})=>(o,s)=>{const i=r({type:"mutation",endpointName:e,originalArgs:t,track:n,fixedCacheKey:a}),l=o(i),{requestId:u,abort:m,unwrap:f}=l,p=(h=e=>({error:e}),l.unwrap().then(e=>({data:e})).catch(h));var h;const y=Object.assign(p,{arg:l.arg,requestId:u,abort:m,unwrap:f,reset:()=>{o(d({requestId:u,fixedCacheKey:a}))}}),g=c.get(o)||{};return c.set(o,g),g[u]=y,y.then(()=>{delete g[u],Tn(g)||c.delete(o)}),a&&(g[a]=y,y.then(()=>{g[a]===y&&(delete g[a],Tn(g)||c.delete(o))})),y}},getRunningQueryThunk:function(t,n){return r=>{const a=o.endpointDefinitions[t],s=e({queryArgs:n,endpointDefinition:a,endpointName:t});return i.get(r)?.[s]}},getRunningMutationThunk:function(e,t){return e=>c.get(e)?.[t]},getRunningQueriesThunk:function(){return e=>Object.values(i.get(e)||{}).filter(Mn)},getRunningMutationsThunk:function(){return e=>Object.values(c.get(e)||{}).filter(Mn)}};function m(r,o){const s=(c,{subscribe:d=!0,forceRefetch:m,subscriptionOptions:f,[Wn]:p,...h}={})=>(y,g)=>{const w=e({queryArgs:c,endpointDefinition:o,endpointName:r});let b;const I={...h,type:"query",subscribe:d,forceRefetch:m,subscriptionOptions:f,endpointName:r,originalArgs:c,queryCacheKey:w,[Wn]:p};if(Fn(o))b=t(I);else{const{direction:e,initialPageParam:t}=h;b=n({...I,direction:e,initialPageParam:t})}const v=a.endpoints[r].select(c),k=y(b),S=v(g()),{requestId:_,abort:A}=k,P=S.requestId!==_,x=i.get(y)?.[w],E=()=>v(g()),C=Object.assign(p?k.then(E):P&&!x?Promise.resolve(S):Promise.all([x,k]).then(E),{arg:c,requestId:_,subscriptionOptions:f,queryCacheKey:w,abort:A,async unwrap(){const e=await C;if(e.isError)throw e.error;return e.data},refetch:()=>y(s(c,{subscribe:!1,forceRefetch:!0})),unsubscribe(){d&&y(l({queryCacheKey:w,requestId:_}))},updateSubscriptionOptions(e){C.subscriptionOptions=e,y(u({endpointName:r,requestId:_,queryCacheKey:w,options:e}))}});if(!x&&!P&&!p){const e=(R=y,M={},(T=i).has(R)?T.get(R):T.set(R,M).get(R));e[w]=C,C.then(()=>{delete e[w],Tn(e)||i.delete(y)})}var T,R,M;return C};return s}}({queryThunk:k,mutationThunk:_,infiniteQueryThunk:S,api:t,serializeQueryArgs:o,context:p,internalState:D});mr(t.util,{getRunningMutationThunk:q,getRunningMutationsThunk:j,getRunningQueryThunk:F,getRunningQueriesThunk:K});const{middleware:N,actions:z}=Ir({reducerPath:a,context:p,queryThunk:k,mutationThunk:_,infiniteQueryThunk:S,api:t,assertTagType:h,selectors:y,getRunningQueryThunk:F,internalState:D});return mr(t.util,z),mr(t,{reducer:R,middleware:N}),{name:vr,injectEndpoint(e,n){const r=t,a=r.endpoints[e]??={};Fn(n)&&mr(a,{name:e,select:b(e,n),initiate:U(e,n)},T(k,e)),"mutation"===n.type&&mr(a,{name:e,select:v(),initiate:B(e)},T(_,e)),Nn(n)&&mr(a,{name:e,select:I(e,n),initiate:O(e,n)},T(k,e))}}}}))());const Sr="0123456789abcdef",_r=new Array(64),Ar=new Array(128),Pr=e=>new Promise(t=>{let n=0;const r=e.length;for(let t=0;t<r;t++)n+=e[t].length;const a=new Uint8Array(n);let o=0;for(const t of e)a.set(t,o),o+=t.length;t(a)}),xr=e=>{const t=e.length,n=t===Wt?Ar:32===t?_r:new Array(2*t);let r=0;for(let a=0;a<t;a++){const t=e[a];n[r++]=Sr[t>>4],n[r++]=Sr[15&t]}return n.join("")},Er=e=>{(e=e.replace(/^0x/,"")).length%2!=0&&(e="0"+e);const t=/[G-Z\s]/i.exec(e);if(t)throw new Error(`Found non-hex characters ${t[0]}`);const n=e.match(/[\dA-F]{2}/gi);if(!n)throw new Error("No hex characters in string");const r=n.length,a=new Uint8Array(r);for(let e=0;e<r;e++)a[e]=parseInt(n[e],16);return a},Cr=65536,Tr=131072,Rr=9+Wt+8+8+256+8+8+8,Mr=4+48*(Wt+1),Dr=$t+Vt+(Rr+Mr)+en+Xt,Ur=Cr-Dr,Or=Rr+Mr+Ur,Br=nn(Or),qr=(e,t,n)=>{t=t??32,n=n??16384;const r=65536,a=Math.ceil(e/r);if(a>n)throw new Error(`Memory required is ${String(a*r)} bytes while declared maximum is ${String(n*r)} bytes`);return a<t?t:a};var jr,Kr=(e,t)=>{const n=nn(e),r=(e+$t+t+n+en+1*(e+Xt)+2*Yt+2*Jt+Zt)*Uint8Array.BYTES_PER_ELEMENT,a=qr(r);return new WebAssembly.Memory({initial:a,maximum:a})},Fr=()=>{const e=($t+Vt+$t)*Uint8Array.BYTES_PER_ELEMENT,t=Cr-$t-Vt,n=rn(t),r=(t+Gt+Wt+n+2*Yt+Zt+Jt)*Uint8Array.BYTES_PER_ELEMENT,a=Mr*Uint8Array.BYTES_PER_ELEMENT+4*Wt,o=qr(n+Cr+2*Wt+$t+Gt+e+r+a+Wt);return new WebAssembly.Memory({initial:o,maximum:o})},Nr={exports:{}},zr=(jr||(jr=1,function(e){async function t(e={}){var t,n=e,r=[],a=(e,t)=>{throw t};t=self.location.href;var o,s,i="";function c(e){return i+e}try{i=new URL(".",t).href}catch{}s=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)},o=async e=>{var t=await fetch(e,{credentials:"same-origin"});if(t.ok)return t.arrayBuffer();throw new Error(t.status+" : "+t.url)},console.log.bind(console);var l,d,u,m,f,p,h,y=console.error.bind(console),g=[],w=!1,b=!1,I=!1,v=[];function k(e){y(e="Aborted("+e+")"),w=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw m?.(t),t}async function S(e,t,n){if(!e)try{var r=fetch(t,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(r,n)}catch(e){y(`wasm streaming compile failed: ${e}`),y("falling back to ArrayBuffer instantiation")}return async function(e,t){try{var n=await async function(e){if(!l)try{var t=await o(e);return new Uint8Array(t)}catch{}return function(e){if(e==h&&l)return new Uint8Array(l);if(s)return s(e);throw"both async and sync fetching of the wasm failed"}(e)}(e);return await WebAssembly.instantiate(n,t)}catch(e){y(`failed to asynchronously prepare wasm: ${e}`),k(e)}}(t,n)}class _{name="ExitStatus";constructor(e){this.message=`Program terminated with exit(${e})`,this.status=e}}var A,P={},x=new Set([]),E={get(e,t){var n=P[t];return n||(n=P[t]=new WebAssembly.Global({value:"i32",mutable:!0})),x.has(t)||(n.required=!0),n}},C=e=>{for(;e.length>0;)e.shift()(n)},T="undefined"!=typeof TextDecoder?new TextDecoder:void 0,R=(e,t=0,n,r)=>{var a=((e,t,n)=>{for(var r=t+n;e[t]&&!(t>=r);)++t;return t})(e,t,n);if(a-t>16&&e.buffer&&T)return T.decode(e.subarray(t,a));for(var o="";t<a;){var s=e[t++];if(128&s){var i=63&e[t++];if(192!=(224&s)){var c=63&e[t++];if((s=224==(240&s)?(15&s)<<12|i<<6|c:(7&s)<<18|i<<12|c<<6|63&e[t++])<65536)o+=String.fromCharCode(s);else{var l=s-65536;o+=String.fromCharCode(55296|l>>10,56320|1023&l)}}else o+=String.fromCharCode((31&s)<<6|i)}else o+=String.fromCharCode(s)}return o},M=e=>{var t=0,n=0;function r(){return e[t++]}function a(){for(var n=0,r=1;;){var a=e[t++];if(n+=(127&a)*r,r*=128,!(128&a))break}return n}function o(){var n=a();return R(e,(t+=n)-n,n)}function s(){for(var e=a(),t=[];e--;)t.push(o());return t}function i(e,t){if(e)throw new Error(t)}if(e instanceof WebAssembly.Module){var c=WebAssembly.Module.customSections(e,"dylink.0");i(0===c.length,"need dylink section"),n=(e=new Uint8Array(c[0])).length}else{i(!(1836278016==new Uint32Array(new Uint8Array(e.subarray(0,24)).buffer)[0]),"need to see wasm magic number"),i(0!==e[8],"need the dylink section to be first"),t=9;var l=a();n=t+l,i("dylink.0"!==o())}for(var d={neededDynlibs:[],tlsExports:new Set,weakImports:new Set,runtimePaths:[]};t<n;){var u=r(),m=a();if(1===u)d.memorySize=a(),d.memoryAlign=a(),d.tableSize=a(),d.tableAlign=a();else if(2===u)d.neededDynlibs=s();else if(3===u)for(var f=a();f--;){var p=o();256&a()&&d.tlsExports.add(p)}else if(4===u)for(f=a();f--;)o(),p=o(),1==(3&a())&&d.weakImports.add(p);else 5===u?d.runtimePaths=s():t+=m}return d},D=(e,t,n)=>{var r={refcount:1/0,name:e,exports:n,global:!0};return U.loadedLibsByName[e]=r,null!=t&&(U.loadedLibsByHandle[t]=r),r},U={loadedLibsByName:{},loadedLibsByHandle:{},init(){D("__main__",0,xe)}},O=562416,B=(e,t)=>Math.ceil(e/t)*t,q=e=>["__cpp_exception","__c_longjmp","__wasm_apply_data_relocs","__dso_handle","__tls_size","__tls_align","__set_stack_limits","_emscripten_tls_init","__wasm_init_tls","__wasm_call_ctors","__start_em_asm","__stop_em_asm","__start_em_js","__stop_em_js"].includes(e)||e.startsWith("__em_js__"),j=e=>{const t=e.length;return[t%128|128,t>>7,...e]},K={i:127,p:127,j:126,f:125,d:124,e:111},F=e=>j(Array.from(e,e=>K[e])),N=[],z=new WebAssembly.Table({initial:3,element:"anyfunc"}),L=e=>{var t=N[e];return t||(N[e]=t=z.get(e)),t},H=(e,t)=>{if(A)for(var n=e;n<e+t;n++){var r=L(n);r&&A.set(r,n)}},W=[],V=(e,t)=>{z.set(e,t),N[e]=z.get(e)},Q=(e,t)=>{var n=(e=>(A||(A=new WeakMap,H(0,z.length)),A.get(e)||0))(e);if(n)return n;var r=W.length?W.pop():z.grow(1);try{V(r,e)}catch(n){if(!(n instanceof TypeError))throw n;var a=((e,t)=>{var n=Uint8Array.of(0,97,115,109,1,0,0,0,1,...j([1,96,...F(t.slice(1)),...F("v"===t[0]?"":t[0])]),2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0),r=new WebAssembly.Module(n);return new WebAssembly.Instance(r,{e:{f:e}}).exports.f})(e,t);V(r,a)}return A.set(e,r),r},$=(e,t,n)=>{var r={};for(var a in e){var o=e[a];"object"==typeof o&&(o=o.value),"number"==typeof o&&(o+=t),r[a]=o}return(e=>{for(var t in e)if(!q(t)){var n=e[t];P[t]||=new WebAssembly.Global({value:"i32",mutable:!0}),0==P[t].value&&("function"==typeof n?P[t].value=Q(n):"number"==typeof n?P[t].value=n:y(`unhandled export type for '${t}': ${typeof n}`))}})(r),r},G=e=>{var t=xe[e];return!(!t||t.stub)},X=(e,t=!1)=>{var n;return G(e)&&(n=xe[e]),{sym:n,name:e}},Y=[],J=(e,t,n)=>e?R(p,e,t):"",Z=(e,t,n,r,a)=>{var o=M(e);function s(){var n,a=Math.pow(2,o.memoryAlign),s=o.memorySize?B((e=>{if(b)return ke(e,1);var t=O,n=t+B(e,16);return O=n,P.__heap_base.value=n,t})(o.memorySize+a),a):0,i=o.tableSize?z.length:0;o.tableSize&&z.grow(o.tableSize);var c=new Proxy({},{get(e,t){switch(t){case"__memory_base":return s;case"__table_base":return i}var a;return t in xe&&!xe[t].stub?xe[t]:(t in e||(e[t]=(...e)=>(a||=function(e){var t=X(e).sym;return!t&&r&&(t=r[e]),t||(t=n[e]),t}(t),a(...e))),e[t])}});x=o.weakImports;var l={"GOT.mem":new Proxy({},E),"GOT.func":new Proxy({},E),env:c,wasi_snapshot_preview1:c};function d(e,r){function a(e,t){for(var n=[],r=0;r<16&&-1!=t.indexOf("$"+r);r++)n.push("$"+r);n=n.join(","),k("DYNAMIC_EXECUTION=0 was set, cannot eval")}if(H(i,o.tableSize),n=$(r.exports,s),t.allowUndefined||re(),"__start_em_asm"in n)for(var c=n.__start_em_asm,l=n.__stop_em_asm;c<l;)a(0,J(c)),c=p.indexOf(0,c)+1;function d(e,t,n){var r=[];if("void"!=(t=t.slice(1,-1)))for(var a in t=t.split(",")){var o=t[a].split(" ").pop();r.push(o.replace("*",""))}k("DYNAMIC_EXECUTION=0 was set, cannot eval")}for(var u in n)if(u.startsWith("__em_js__")){c=n[u];var m=J(c).split("<::>");d(u.replace("__em_js__",""),m[0],m[1]),delete n[u]}var f=n.__wasm_apply_data_relocs;f&&(b?f():v.push(f));var h,y=n.__wasm_call_ctors;return y&&(b?y():(h=y,Y.push(h))),n}if(t.loadAsync)return(async()=>{var t;return e instanceof WebAssembly.Module?t=new WebAssembly.Instance(e,l):({module:e,instance:t}=await WebAssembly.instantiate(e,l)),d(0,t)})();var u=e instanceof WebAssembly.Module?e:new WebAssembly.Module(e);return d(0,new WebAssembly.Instance(u,l))}return(t={...t,rpath:{parentLibPath:n,paths:o.runtimePaths}}).loadAsync?o.neededDynlibs.reduce((e,n)=>e.then(()=>ne(n,t,r)),Promise.resolve()).then(s):(o.neededDynlibs.forEach(e=>ne(e,t,r)),s())},ee=(e,t)=>{for(var[n,r]of Object.entries(e)){const e=e=>{G(e)||(xe[e]=r)};e(n);const t="__main_argc_argv";"main"==n&&e(t),n==t&&e("main")}},te=async e=>{var t=await o(e);return new Uint8Array(t)};function ne(e,t={global:!0,nodelete:!0},n,r){var a=U.loadedLibsByName[e];if(a)return t.global&&(a.global||(a.global=!0,ee(a.exports))),t.nodelete&&a.refcount!==1/0&&(a.refcount=1/0),a.refcount++,!t.loadAsync||Promise.resolve(!0);function o(){var n=c(e);if(t.loadAsync)return te(n);if(!s)throw new Error(`${n}: file not found, and synchronous loading of external files is not available`);return s(n)}function i(){return t.loadAsync?o().then(r=>Z(r,t,e,n)):Z(o(),t,e,n)}function l(e){a.global&&ee(e),a.exports=e}return(a=D(e,r,"loading")).refcount=t.nodelete?1/0:1,a.global=t.global,t.loadAsync?i().then(e=>(l(e),!0)):(l(i()),!0)}var re=()=>{for(var[e,t]of Object.entries(P))if(0==t.value){var n=X(e,!0).sym;if(!n&&!t.required)continue;if("function"==typeof n)t.value=Q(n,n.sig);else{if("number"!=typeof n)throw new Error(`bad export type for '${e}': ${typeof n}`);t.value=n}}},ae=0,oe=null,se=(e,t,n,r)=>k(`Assertion failed: ${J(e)}, at: `+[t?J(t):"unknown filename",n,r?J(r):"unknown function"]);se.sig="vppip";var ie=new WebAssembly.Global({value:"i32",mutable:!1},4096),ce=new WebAssembly.Global({value:"i32",mutable:!0},562416),le=new WebAssembly.Global({value:"i32",mutable:!1},1),de=()=>k("");de.sig="v";var ue=0,me=()=>{ue=0};me.sig="v";var fe={},pe=e=>{if(e instanceof _||"unwind"==e)return d;a(0,e)},he=()=>ue>0,ye=e=>{d=e,he()||(w=!0),a(0,new _(e))};ye.sig="vi";var ge=(e,t)=>{d=e,he()||(Ie(),I=!0),ye(e)};ge.sig="vi";var we=()=>performance.now();we.sig="d";var be=(e,t)=>{if(fe[e]&&(clearTimeout(fe[e].id),delete fe[e]),!t)return 0;var n=setTimeout(()=>{delete fe[e],(e=>{if(!I&&!w)try{e(),(()=>{if(!I&&!he())try{ge(d)}catch(e){pe(e)}})()}catch(e){pe(e)}})(()=>ve(e,we()))},t);return fe[e]={id:n,timeout_ms:t},0};be.sig="iid";var Ie,ve,ke,Se,_e,Ae=e=>{p.length,k("OOM")};Ae.sig="ip",_e=(f=n.wasmMemory?n.wasmMemory:new WebAssembly.Memory({initial:32,maximum:32})).buffer,p=new Uint8Array(_e),new BigInt64Array(_e),new BigUint64Array(_e),n.wasmBinary&&(l=n.wasmBinary);var Pe,xe={__assert_fail:se,__heap_base:O,__indirect_function_table:z,__memory_base:ie,__stack_high:562416,__stack_pointer:ce,__table_base:le,_abort_js:de,_emscripten_runtime_keepalive_clear:me,_setitimer_js:be,alignfault:function(){k("alignment fault")},emscripten_resize_heap:Ae,memory:f,proc_exit:ye,segfault:function(){k("segmentation fault")}};return Pe=await async function(){function e(e,t){Pe=e.exports,Pe=$(Pe,4096);var r=M(t);return r.neededDynlibs&&(g=r.neededDynlibs.concat(g)),ee(Pe),U.init(),(async()=>{if(g.length){for(var e of(ae++,g))await ne(e,{loadAsync:!0,global:!0,nodelete:!0,allowUndefined:!0});re(),(()=>{if(0==--ae&&oe){var e=oe;oe=null,e()}})()}else re()})(),v.push(Pe.__wasm_apply_data_relocs),function(e){n._argon2=e.argon2,n._malloc=e.malloc,n._free=e.free,n._encrypt_chachapoly_asymmetric=e.encrypt_chachapoly_asymmetric,n._decrypt_chachapoly_asymmetric=e.decrypt_chachapoly_asymmetric,n._keypair_from_seed=e.keypair_from_seed,n._keypair_from_secret_key=e.keypair_from_secret_key,n._sign=e.sign,n._verify=e.verify,n._get_merkle_root=e.get_merkle_root,n._get_merkle_proof=e.get_merkle_proof,n._get_merkle_root_from_proof=e.get_merkle_root_from_proof,n._verify_merkle_proof=e.verify_merkle_proof,n._receive_message=e.receive_message,Ie=e.__funcs_on_exit,ve=e._emscripten_timeout,e.sbrk,ke=e.calloc,Se=e.realloc,e.emscripten_stack_get_base,e._emscripten_stack_alloc,e.__wasm_apply_data_relocs}(Pe),Pe}var t={env:xe,wasi_snapshot_preview1:xe,"GOT.mem":new Proxy(xe,E),"GOT.func":new Proxy(xe,E)};h??=c("libcrypto.wasm");var r=function(t){return e(t.instance,t.module)}(await S(l,h,t));return r}(),function e(t=r){ae>0||ae>0?oe=e:(n.calledRun=!0,w||(b=!0,C(v),Pe.__wasm_call_ctors(),C(Y),u?.(n)))}(),(()=>{var e=null,t=0;function r(){if(e&&b){var t=e;e=null,t.forEach(e=>onmessage(e))}}function a(){r(),e&&setTimeout(a,100)}onmessage=o=>{if(!b)return e||(e=[],setTimeout(a,100)),void e.push(o);r();var s=n["_"+o.data.funcName];s||k("invalid worker function to call: "+o.data.funcName);var i=o.data.data;i&&(i.byteLength||(i=new Uint8Array(i)),t=Se(t,i.length),p.set(i,t)),o.data.callbackId,i?s(t,i.length):s(0,0)}})(),b?n:new Promise((e,t)=>{u=e,m=t})}e.exports=t,e.exports.default=t}(Nr)),Nr.exports),Lr=t(zr);if("object"!=typeof WebAssembly)throw new Error("no native wasm support detected");const Hr=async e=>{const t=new URL("https://cdn.p2party.com/@0.7.11/libcrypto.wasm"),n=await fetch(t,{integrity:"sha384-iCNxnyD3ho2bH3H868svpjRIZTRA66sPJDwbi4loPTBIAsYlghPXQFThc96d5jIC"}),r=await n.arrayBuffer();return await Lr({wasmBinary:r,wasmMemory:e})},Wr=async e=>{const t=e?.wasmMemory??(()=>{const e=($t+Gt)*Uint8Array.BYTES_PER_ELEMENT,t=qr(e);return new WebAssembly.Memory({initial:t,maximum:t})})(),n=e??await Hr(t),r=n._malloc($t),a=new Uint8Array(t.buffer,r,$t),o=n._malloc(Gt),s=new Uint8Array(t.buffer,o,Gt),i=n._malloc(Qt),c=new Uint8Array(t.buffer,i,Qt);window.crypto.getRandomValues(c);const l=n._keypair_from_seed(a.byteOffset,s.byteOffset,c.byteOffset);if(n._free(i),0===l){const e={publicKey:Uint8Array.from(a),secretKey:Uint8Array.from(s)};return n._free(r),n._free(o),e}throw n._free(r),n._free(o),new Error("An unexpected error occured.")},Vr=async(e,t,n)=>{const r=e.length,a=n?n.wasmMemory:(e=>{const t=(e+Vt+Gt+Wt)*Uint8Array.BYTES_PER_ELEMENT,n=qr(t);return new WebAssembly.Memory({initial:n,maximum:n})})(r),o=n??await Hr(a),s=o._malloc(r*Uint8Array.BYTES_PER_ELEMENT),i=new Uint8Array(a.buffer,s,r*Uint8Array.BYTES_PER_ELEMENT);i.set(e);const c=o._malloc(Vt),l=new Uint8Array(a.buffer,c,Vt),d=o._malloc(Gt),u=new Uint8Array(a.buffer,d,Gt);u.set(t),o._sign(r,i.byteOffset,u.byteOffset,l.byteOffset);const m=Uint8Array.from([...l]);return o._free(s),o._free(c),o._free(d),m},Qr=e=>{const t=new Uint8Array(Rr);let n=0;new DataView(t.buffer,n,8).setBigUint64(0,BigInt(e.schemaVersion),!1),n+=8,t[n]=e.messageType,n+=1,t.set(e.hash,n),n+=Wt,new DataView(t.buffer,n,8).setBigUint64(0,BigInt(e.totalSize),!1),n+=8,new DataView(t.buffer,n,8).setBigInt64(0,BigInt(e.date.getTime()),!1),n+=8;const r=(new TextEncoder).encode(e.name),a=new Uint8Array(256);return a.set(r.subarray(0,Math.min(256,r.length))),t.set(a,n),n+=256,new DataView(t.buffer,n,8).setBigUint64(0,BigInt(e.chunkStartIndex),!1),n+=8,new DataView(t.buffer,n,8).setBigUint64(0,BigInt(e.chunkEndIndex),!1),n+=8,new DataView(t.buffer,n,8).setBigUint64(0,BigInt(e.chunkIndex),!1),n+=8,t},$r=e=>{if(e.length!==Rr)throw new Error("Invalid metadata buffer totalSize");let t=0;const n=new DataView(e.buffer,e.byteOffset+t,8),r=Number(n.getBigUint64(0,!1));t+=8;const a=e[t];t+=1;const o=e.slice(t,t+Wt);t+=Wt;const s=new DataView(e.buffer,e.byteOffset+t,8),i=Number(s.getBigUint64(0,!1));t+=8;const c=new DataView(e.buffer,e.byteOffset+t,8),l=Number(c.getBigUint64(0,!1)),d=new Date(l);t+=8;const u=e.slice(t,t+256),m=(new TextDecoder).decode(u).replace(/\0+$/,"");t+=256;const f=new DataView(e.buffer,e.byteOffset+t,8),p=Number(f.getBigUint64(0,!1));t+=8;const h=new DataView(e.buffer,e.byteOffset+t,8),y=Number(h.getBigUint64(0,!1));t+=8;const g=new DataView(e.buffer,e.byteOffset+t,8);return{schemaVersion:r,messageType:a,hash:o,totalSize:i,date:d,name:m,chunkStartIndex:p,chunkEndIndex:y,chunkIndex:Number(g.getBigUint64(0,!1))}},Gr={Text:1,ImagePNG:2,ImageJPEG:3,ImageJPG:4,ImageGIF:5,ImageBMP:6,ImageTIFF:7,ImageSVG:8,ImageWEBP:9,ImageHEIC:10,DocumentPDF:11,DocumentDOC:12,DocumentDOCX:13,DocumentXLS:14,DocumentXLSX:15,DocumentPPT:16,DocumentPPTX:17,DocumentTXT:18,DocumentRTF:19,DocumentODT:20,AudioMP3:21,AudioWAV:22,AudioAAC:23,AudioFLAC:24,AudioOGG:25,AudioM4A:26,VideoMP4:27,VideoAVI:28,VideoMKV:29,VideoMOV:30,VideoWMV:31,VideoFLV:32,VideoWEBM:33,CompressedZIP:34,CompressedRAR:35,Compressed7Z:36,CompressedTAR:37,CompressedGZ:38,CodeHTML:39,CodeCSS:40,CodeJS:41,CodeJSX:42,CodeTS:43,CodeTSX:44,CodeJSON:45,CodeXML:46,CodePY:47,CodeJAVA:48,CodeC:49,CodeCPP:50,CodeCS:51,CodeRB:52,CodePHP:53,CodeSQL:54,EbookEPUB:55,EbookMOBI:56,EbookAZW:57,FontTTF:58,FontOTF:59,ImageICO:60,ExecutableEXE:61,ExecutableDMG:62,ExecutableAPK:63,Unknown:64},Xr={Text:"Text",Image:"Image",Document:"Document",Audio:"Audio",Video:"Video",Compressed:"Compressed",Code:"Code",Ebook:"Ebook",Font:"Font",Executable:"Executable",Unknown:"Unknown"},Yr=e=>{switch(e){case Gr.Text:return"text/plain";case Gr.ImagePNG:return"image/png";case Gr.ImageJPEG:case Gr.ImageJPG:return"image/jpeg";case Gr.ImageGIF:return"image/gif";case Gr.ImageBMP:return"image/bmp";case Gr.ImageTIFF:return"image/tiff";case Gr.ImageSVG:return"image/svg+xml";case Gr.ImageWEBP:return"image/webp";case Gr.ImageHEIC:return"image/heic";case Gr.ImageICO:return"image/vnd.microsoft.icon";case Gr.DocumentPDF:return"application/pdf";case Gr.DocumentDOC:return"application/msword";case Gr.DocumentDOCX:return"application/vnd.openxmlformats-officedocument.wordprocessingml.document";case Gr.DocumentXLS:return"application/vnd.ms-excel";case Gr.DocumentXLSX:return"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";case Gr.DocumentPPT:return"application/vnd.ms-powerpoint";case Gr.DocumentPPTX:return"application/vnd.openxmlformats-officedocument.presentationml.presentation";case Gr.DocumentTXT:return"text/plain";case Gr.DocumentRTF:return"application/rtf";case Gr.DocumentODT:return"application/vnd.oasis.opendocument.text";case Gr.AudioMP3:return"audio/mpeg";case Gr.AudioWAV:return"audio/wav";case Gr.AudioAAC:return"audio/aac";case Gr.AudioFLAC:return"audio/flac";case Gr.AudioOGG:return"audio/ogg";case Gr.AudioM4A:return"audio/mp4";case Gr.VideoMP4:return"video/mp4";case Gr.VideoAVI:return"video/x-msvideo";case Gr.VideoMKV:return"video/x-matroska";case Gr.VideoMOV:return"video/quicktime";case Gr.VideoWMV:return"video/x-ms-wmv";case Gr.VideoFLV:return"video/x-flv";case Gr.VideoWEBM:return"video/webm";case Gr.CompressedZIP:return"application/zip";case Gr.CompressedRAR:return"application/vnd.rar";case Gr.Compressed7Z:return"application/x-7z-compressed";case Gr.CompressedTAR:return"application/x-tar";case Gr.CompressedGZ:return"application/gzip";case Gr.CodeHTML:return"text/html";case Gr.CodeCSS:return"text/css";case Gr.CodeJS:case Gr.CodeJSX:return"application/javascript";case Gr.CodeTS:case Gr.CodeTSX:return"application/typescript";case Gr.CodeJSON:return"application/json";case Gr.CodeXML:return"application/xml";case Gr.CodePY:return"text/x-python";case Gr.CodeJAVA:return"text/x-java-source";case Gr.CodeC:return"text/x-c";case Gr.CodeCPP:return"text/x-c++";case Gr.CodeCS:return"text/plain";case Gr.CodeRB:return"text/x-ruby";case Gr.CodePHP:return"application/x-httpd-php";case Gr.CodeSQL:return"application/sql";case Gr.EbookEPUB:return"application/epub+zip";case Gr.EbookMOBI:return"application/x-mobipocket-ebook";case Gr.EbookAZW:return"application/vnd.amazon.ebook";case Gr.FontTTF:return"font/ttf";case Gr.FontOTF:return"font/otf";case Gr.ExecutableEXE:return"application/vnd.microsoft.portable-executable";case Gr.ExecutableDMG:return"application/x-apple-diskimage";case Gr.ExecutableAPK:return"application/vnd.android.package-archive";default:return"application/octet-stream"}},Jr=new Blob(['const e=(e,t)=>t.some(t=>e instanceof t);let t,a;const n=new WeakMap,o=new WeakMap,r=new WeakMap;let s={get(e,t,a){if(e instanceof IDBTransaction){if("done"===t)return n.get(e);if("store"===t)return a.objectStoreNames[1]?void 0:a.objectStore(a.objectStoreNames[0])}return d(e[t])},set:(e,t,a)=>(e[t]=a,!0),has:(e,t)=>e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e};function i(e){s=e(s)}function c(e){return(a||(a=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(e)?function(...t){return e.apply(l(this),t),d(this.request)}:function(...t){return d(e.apply(l(this),t))}}function u(a){return"function"==typeof a?c(a):(a instanceof IDBTransaction&&function(e){if(n.has(e))return;const t=new Promise((t,a)=>{const n=()=>{e.removeEventListener("complete",o),e.removeEventListener("error",r),e.removeEventListener("abort",r)},o=()=>{t(),n()},r=()=>{a(e.error||new DOMException("AbortError","AbortError")),n()};e.addEventListener("complete",o),e.addEventListener("error",r),e.addEventListener("abort",r)});n.set(e,t)}(a),e(a,t||(t=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction]))?new Proxy(a,s):a)}function d(e){if(e instanceof IDBRequest)return function(e){const t=new Promise((t,a)=>{const n=()=>{e.removeEventListener("success",o),e.removeEventListener("error",r)},o=()=>{t(d(e.result)),n()},r=()=>{a(e.error),n()};e.addEventListener("success",o),e.addEventListener("error",r)});return r.set(t,e),t}(e);if(o.has(e))return o.get(e);const t=u(e);return t!==e&&(o.set(e,t),r.set(t,e)),t}const l=e=>r.get(e);const w=["get","getKey","getAll","getAllKeys","count"],h=["put","add","delete","clear"],m=new Map;function g(e,t){if(!(e instanceof IDBDatabase)||t in e||"string"!=typeof t)return;if(m.get(t))return m.get(t);const a=t.replace(/FromIndex$/,""),n=t!==a,o=h.includes(a);if(!(a in(n?IDBIndex:IDBObjectStore).prototype)||!o&&!w.includes(a))return;const r=async function(e,...t){const r=this.transaction(e,o?"readwrite":"readonly");let s=r.store;return n&&(s=s.index(t.shift())),(await Promise.all([s[a](...t),o&&r.done]))[0]};return m.set(t,r),r}i(e=>({...e,get:(t,a,n)=>g(t,a)||e.get(t,a,n),has:(t,a)=>!!g(t,a)||e.has(t,a)}));const k=["continue","continuePrimaryKey","advance"],y={},b=new WeakMap,f=new WeakMap,I={get(e,t){if(!k.includes(t))return e[t];let a=y[t];return a||(a=y[t]=function(...e){b.set(this,f.get(this)[t](...e))}),a}};async function*x(...e){let t=this;if(t instanceof IDBCursor||(t=await t.openCursor(...e)),!t)return;const a=new Proxy(t,I);for(f.set(a,t),r.set(a,l(t));t;)yield a,t=await(b.get(a)||t.continue()),b.delete(a)}function p(t,a){return a===Symbol.asyncIterator&&e(t,[IDBIndex,IDBObjectStore,IDBCursor])||"iterate"===a&&e(t,[IDBIndex,IDBObjectStore])}i(e=>({...e,get:(t,a,n)=>p(t,a)?x:e.get(t,a,n),has:(t,a)=>p(t,a)||e.has(t,a)}));const D=64*Uint8Array.BYTES_PER_ELEMENT,B="p2party";async function S(){return function(e,t,{blocked:a,upgrade:n,blocking:o,terminated:r}={}){const s=indexedDB.open(e,t),i=d(s);return n&&s.addEventListener("upgradeneeded",e=>{n(d(s.result),e.oldVersion,e.newVersion,d(s.transaction),e)}),a&&s.addEventListener("blocked",e=>a(e.oldVersion,e.newVersion,e)),i.then(e=>{r&&e.addEventListener("close",()=>r()),o&&e.addEventListener("versionchange",e=>o(e.oldVersion,e.newVersion,e))}).catch(()=>{}),i}(B,16,{upgrade(e,t,a,n){if(e.objectStoreNames.contains("addressBook")){const e=n.objectStore("addressBook");e.indexNames.contains("username")||e.createIndex("username","username",{unique:!1}),e.indexNames.contains("peerId")||e.createIndex("peerId","peerId",{unique:!0}),e.indexNames.contains("peerPublicKey")||e.createIndex("peerPublicKey","peerPublicKey",{unique:!0})}else{const t=e.createObjectStore("addressBook",{keyPath:["peerId"]});t.createIndex("username","username",{unique:!1}),t.createIndex("peerId","peerId",{unique:!0}),t.createIndex("peerPublicKey","peerPublicKey",{unique:!0})}if(e.objectStoreNames.contains("blacklist")){const e=n.objectStore("blacklist");e.indexNames.contains("username")||e.createIndex("username","username",{unique:!1}),e.indexNames.contains("peerId")||e.createIndex("peerId","peerId",{unique:!0}),e.indexNames.contains("peerPublicKey")||e.createIndex("peerPublicKey","peerPublicKey",{unique:!0})}else{const t=e.createObjectStore("blacklist",{keyPath:["peerId"]});t.createIndex("username","username",{unique:!1}),t.createIndex("peerId","peerId",{unique:!0}),t.createIndex("peerPublicKey","peerPublicKey",{unique:!0})}if(e.objectStoreNames.contains("uniqueRoom")){const e=n.objectStore("uniqueRoom");e.indexNames.contains("roomUrl")||e.createIndex("roomUrl","roomUrl",{unique:!0}),e.indexNames.contains("roomId")||e.createIndex("roomId","roomId",{unique:!0})}else{const t=e.createObjectStore("uniqueRoom",{keyPath:["roomId"]});t.createIndex("roomUrl","roomUrl",{unique:!0}),t.createIndex("roomId","roomId",{unique:!0})}if(e.objectStoreNames.contains("messageData")){const e=n.objectStore("messageData");e.indexNames.contains("roomId")||e.createIndex("roomId","roomId",{unique:!1}),e.indexNames.contains("hash")||e.createIndex("hash","hash",{unique:!1}),e.indexNames.contains("merkleRoot")||e.createIndex("merkleRoot","merkleRoot",{unique:!0}),e.indexNames.contains("fromPeerId")||e.createIndex("fromPeerId","fromPeerId",{unique:!1})}else{const t=e.createObjectStore("messageData",{keyPath:["timestamp","roomId","merkleRoot"]});t.createIndex("roomId","roomId",{unique:!1}),t.createIndex("hash","hash",{unique:!1}),t.createIndex("merkleRoot","merkleRoot",{unique:!0}),t.createIndex("fromPeerId","fromPeerId",{unique:!1})}if(e.objectStoreNames.contains("chunks")){const e=n.objectStore("chunks");e.indexNames.contains("merkleRoot")||e.createIndex("merkleRoot","merkleRoot",{unique:!1}),e.indexNames.contains("hash")||e.createIndex("hash","hash",{unique:!1})}else{const t=e.createObjectStore("chunks",{keyPath:["merkleRoot","chunkIndex"]});t.createIndex("merkleRoot","merkleRoot",{unique:!1}),t.createIndex("hash","hash",{unique:!1})}if(e.objectStoreNames.contains("newChunks")){const e=n.objectStore("newChunks");e.indexNames.contains("hash")||e.createIndex("hash","hash",{unique:!1}),e.indexNames.contains("merkleRoot")||e.createIndex("merkleRoot","merkleRoot",{unique:!1}),e.indexNames.contains("realChunkHash")||e.createIndex("realChunkHash","realChunkHash",{unique:!0})}else{const t=e.createObjectStore("newChunks",{keyPath:["hash","chunkIndex"]});t.createIndex("hash","hash",{unique:!1}),t.createIndex("merkleRoot","merkleRoot",{unique:!1}),t.createIndex("realChunkHash","realChunkHash",{unique:!0})}if(e.objectStoreNames.contains("sendQueue")){const e=n.objectStore("sendQueue");e.indexNames.contains("labelPeer")||e.createIndex("labelPeer",["label","toPeerId"],{unique:!1})}else{e.createObjectStore("sendQueue",{keyPath:["position","label","toPeerId"]}).createIndex("labelPeer",["label","toPeerId"],{unique:!1})}}})}async function R(){await function(e,{blocked:t}={}){const a=indexedDB.deleteDatabase(e);return t&&a.addEventListener("blocked",e=>t(e.oldVersion,e)),d(a).then(()=>{})}(B,{blocked(){console.error("DB deletion BLOCKED")}})}onmessage=async e=>{const t=e.data,{id:a,method:n}=t;try{let e;switch(n){case"getDBAddressBookEntry":e=await async function(e,t){if(!e&&!t)return;if(e&&e.length<10&&!t)return;if(t&&64!==t.length&&!e)return;const a=await S();try{const n=a.transaction("addressBook","readonly"),o=e?n.objectStore("addressBook").index("peerId"):n.objectStore("addressBook").index("peerPublicKey"),r=e?await o.get(e):await o.get(t);return await n.done,a.close(),r?{username:r.username,peerId:r.peerId,peerPublicKey:r.peerPublicKey}:void 0}catch(e){return void a.close()}}(...t.args);break;case"getAllDBAddressBookEntries":e=await async function(){try{const e=await S(),t=await e.getAll("addressBook");return e.close(),t}catch(e){return[]}}(...t.args);break;case"setDBAddressBookEntry":e=await async function(e,t,a){try{const n=await S(),o=n.transaction(["addressBook"],"readwrite"),r=o.objectStore("addressBook"),s=r.index("peerId"),i=r.index("peerPublicKey"),c=await s.get(t),u=await i.get(a);(!c&&!u||c&&!u||!c&&u)&&await r.put({username:e,peerId:t,peerPublicKey:a,dateAdded:Date.now()}),await o.done,n.close()}catch(e){console.error(e)}}(...t.args);break;case"deleteDBAddressBookEntry":e=await async function(e,t,a){const n=!e||0===e.length,o=!t||t.length<10,r=!a||64!==a.length;if(n&&o&&r)throw new Error("Cannot delete address book with no data");let s=t??"";try{const n=await S(),i=n.transaction("addressBook","readwrite"),c=i.objectStore("addressBook");if(o)if(r){const t=c.index("username"),a=await t.getKey(e);if(a){const n=await t.get(e);s=n?.peerId??"",await c.delete(a)}}else{const e=c.index("peerPublicKey"),t=await e.getKey(a);if(t){const n=await e.get(a);s=n?.peerId??"",await c.delete(t)}}else{const e=c.index("peerId"),a=await e.getKey(t);a&&await c.delete(a)}await i.done,n.close()}catch{}return s}(...t.args);break;case"getDBPeerIsBlacklisted":e=await async function(e,t){if(!e&&!t)return!1;if(e&&e.length<10&&!t)return!1;if(t&&64!==t.length&&!e)return!1;try{const a=await S(),n=a.transaction("blacklist","readonly"),o=e?n.objectStore("blacklist").index("peerId"):n.objectStore("blacklist").index("peerPublicKey"),r=e?await o.get(e):await o.get(t);return await n.done,a.close(),!!r}catch(e){return!1}}(...t.args);break;case"getAllDBBlacklisted":e=await async function(){const e=await S();try{const t=await e.getAll("blacklist");return e.close(),t}catch(t){return e.close(),[]}}(...t.args);break;case"setDBPeerInBlacklist":e=await async function(e,t){try{const a=await S(),n=a.transaction(["blacklist"],"readwrite"),o=n.objectStore("blacklist"),r=o.index("peerId"),s=o.index("peerPublicKey"),i=await r.get(e),c=await s.get(t);(!i&&!c||i&&!c||!i&&c)&&await o.put({peerId:e,peerPublicKey:t,dateAdded:Date.now()}),await n.done,a.close()}catch(e){console.error(e)}}(...t.args);break;case"deleteDBPeerFromBlacklist":e=await async function(e,t){const a=!e||e.length<10,n=!t||64!==t.length;if(a&&n)throw new Error("Cannot delete blacklisted with no data");try{const n=await S(),o=n.transaction("blacklist","readwrite"),r=o.objectStore("blacklist");if(a){const e=r.index("peerPublicKey"),a=await e.getKey(t);a&&await r.delete(a)}else{const t=r.index("peerId"),a=await t.getKey(e);a&&await r.delete(a)}await o.done,n.close()}catch(e){console.error(e)}}(...t.args);break;case"getAllDBUniqueRooms":e=await async function(){const e=await S();try{const t=await e.getAll("uniqueRoom");return e.close(),t}catch(t){return e.close(),[]}}(...t.args);break;case"setDBUniqueRoom":e=await async function(e,t){try{const a=await S(),n=a.transaction(["uniqueRoom"],"readwrite"),o=n.objectStore("uniqueRoom"),r=o.index("roomUrl"),s=o.index("roomId"),i=await r.get(e),c=await s.get(t);if(!i&&!c){const a=Date.now();await o.put({roomId:t,roomUrl:e,messageCount:0,lastMessageMerkleRoot:"",createdAt:a,updatedAt:a})}await n.done,a.close()}catch(e){console.error(e)}}(...t.args);break;case"getDBMessageData":e=await async function(e,t){try{const a=await S(),n=a.transaction(["messageData"],"readonly"),o=n.objectStore("messageData"),r=o.index("merkleRoot"),s=o.index("hash");if(e&&e.length===2*D){const o=await r.get(e);if(o)return await n.done,a.close(),o;if(t&&t.length===2*D){const e=await s.get(t);return await n.done,a.close(),e}return await n.done,void a.close()}if(t&&t.length===2*D){const e=await s.get(t);return await n.done,a.close(),e}return await n.done,void a.close()}catch(e){return void console.error(e)}}(...t.args);break;case"getDBRoomMessageData":e=await async function(e){const t=await S(),a=await t.getAllFromIndex("messageData","roomId",e);t.close();const n=a.length,o=[];for(let t=0;t<n;t++)o.push({roomId:e,merkleRoot:a[t].merkleRoot,hash:a[t].hash,fromPeerId:a[t].fromPeerId,filename:a[t].filename,messageType:a[t].messageType,savedSize:a[t].savedSize,totalSize:a[t].totalSize,channelLabel:a[t].channelLabel,timestamp:a[t].timestamp});return o}(...t.args);break;case"setDBRoomMessageData":e=await async function(e,t,a,n,o,r,s,i,c,u){try{const d=await S(),l=d.transaction(["messageData","uniqueRoom"],"readwrite"),w=l.objectStore("messageData"),h=await w.index("merkleRoot").get(t),m=h?.savedSize??0;try{await w.put({roomId:e,timestamp:u,merkleRoot:t,hash:a,fromPeerId:n,filename:i,messageType:s,savedSize:m+o<=r?m+o:r,totalSize:r,channelLabel:c})}catch(e){throw await l.done,d.close(),e}const g=l.objectStore("uniqueRoom"),k=await g.index("roomId").get(e);if(k&&k.lastMessageMerkleRoot!==t)try{await g.put({...k,lastMessageMerkleRoot:t,messageCount:k.messageCount+1,updatedAt:u})}catch(e){throw await l.done,d.close(),e}await l.done,d.close()}catch(e){throw console.error(e),e}}(...t.args);break;case"getDBChunk":e=await async function(e,t){const a=await S(),n=await a.get("chunks",[e,t]);return a.close(),n?.data}(...t.args);break;case"existsDBChunk":e=await async function(e,t){const a=await S(),n=await a.count("chunks",[e,t]);return a.close(),n>0}(...t.args);break;case"getDBNewChunk":e=await async function(e,t){try{const a=await S(),n=t??-1;if(n>-1){const t=await a.get("newChunks",[e,n]);return a.close(),t}{const t=a.transaction("newChunks"),n=t.objectStore("newChunks").index("realChunkHash"),o=await n.get(e);return await t.done,a.close(),o}}catch(e){return void console.error(e)}}(...t.args);break;case"existsDBNewChunk":e=await async function(e,t){const a=await S(),n=await a.count("newChunks",[e,t]);return a.close(),n>0}(...t.args);break;case"getDBSendQueue":e=await async function(e,t,a){const n=await S();if(a){const o=await n.get("sendQueue",[a,e,t]);return n.close(),o?[o]:[]}const o=n.transaction("sendQueue","readonly").objectStore("sendQueue").index("labelPeer"),r=IDBKeyRange.only([e,t]),s=await o.getAll(r);return n.close(),s}(...t.args);break;case"getDBAllChunks":e=await async function(e,t){try{const a=await S(),n=a.transaction("chunks","readonly"),o=n.objectStore("chunks"),r=o.index("hash"),s=o.index("merkleRoot");if(e&&e.length===2*D){const t=await s.getAll(e);return 0===t.length?(await n.done,a.close(),[]):(await n.done,a.close(),t)}if(t&&t.length===2*D){const e=await r.getAll(t);return await n.done,a.close(),e.length>0?e.filter(t=>t.merkleRoot===e[0].merkleRoot):e}return await n.done,a.close(),[]}catch(e){return console.error(e),[]}}(...t.args);break;case"getDBAllChunksCount":e=await async function(e,t){try{const a=await S(),n=a.transaction(["chunks"],"readonly"),o=n.objectStore("chunks"),r=o.index("hash"),s=o.index("merkleRoot");if(t&&t.length===2*D){const o=await r.count(t);if(0===o){if(e&&e.length===2*D){const t=await s.count(e);return await n.done,a.close(),t}return await n.done,a.close(),0}return await n.done,a.close(),o}if(e&&e.length===2*D){const t=await s.count(e);return await n.done,a.close(),t}return await n.done,a.close(),0}catch(e){return 0}}(...t.args);break;case"setDBChunk":e=await async function(e){const t=await S();await t.add("chunks",e),t.close()}(...t.args);break;case"getDBAllNewChunks":e=await async function(e,t){if(!e&&!t)return[];if(e?.length!==2*D&&t?.length!==2*D)return[];const a=await S();if((e?await a.countFromIndex("newChunks","hash",e):await a.countFromIndex("newChunks","merkleRoot",t))>0){const n=e?await a.getAllFromIndex("newChunks","hash",e):await a.getAllFromIndex("newChunks","merkleRoot",t);return a.close(),n}{const n=a.transaction("newChunks","readonly").objectStore("newChunks"),o=e?n.index("hash"):n.index("merkleRoot"),r=e?IDBKeyRange.only(e):IDBKeyRange.only(t),s=await o.getAll(r);return a.close(),s}}(...t.args);break;case"getDBAllNewChunksCount":e=await async function(e){const t=await S(),a=await t.countFromIndex("newChunks","hash",e);return t.close(),a}(...t.args);break;case"setDBNewChunk":e=await async function(e){const t=await S();await t.put("newChunks",e),t.close()}(...t.args);break;case"setDBSendQueue":e=await async function(e){const t=await S();await t.put("sendQueue",e),t.close()}(...t.args);break;case"countDBSendQueue":e=await async function(e,t){const a=await S(),n=a.transaction("sendQueue","readonly").objectStore("sendQueue").index("labelPeer"),o=IDBKeyRange.only([e,t]),r=await n.count(o);return a.close(),r}(...t.args);break;case"deleteDBChunk":e=await async function(e,t){try{const a=await S(),n=a.transaction("chunks","readwrite"),o=n.objectStore("chunks");if(t){const a=IDBKeyRange.only([e,t]);await o.delete(a)}else{const t=o.index("hash"),a=await t.getAllKeys(e),n=a.length;if(0===n){const t=o.index("merkleRoot"),a=await t.getAllKeys(e),n=a.length;for(let e=0;e<n;e++)await o.delete(a[e])}else for(let e=0;e<n;e++)await o.delete(a[e])}await n.done,a.close()}catch(e){}}(...t.args);break;case"deleteDBNewChunk":e=await async function(e,t,a,n){try{const o=await S(),r=o.transaction("newChunks","readwrite"),s=r.objectStore("newChunks");if(e){const t=s.index("merkleRoot"),a=await t.getAllKeys(e),n=a.length;for(let e=0;e<n;e++)await s.delete(a[e])}else if(a&&n)await s.delete([a,n]);else if(a){const e=s.index("hash"),t=await e.getAllKeys(a),n=t.length;for(let e=0;e<n;e++)await s.delete(t[e])}else if(t){const e=s.index("realChunkHash"),a=await e.getKey(t);a&&await s.delete(a)}await r.done,o.close()}catch(e){console.error(e)}}(...t.args);break;case"deleteDBMessageData":e=await async function(e){try{const t=await S(),a=t.transaction(["messageData","uniqueRoom"],"readwrite"),n=a.objectStore("messageData"),o=a.objectStore("uniqueRoom"),r=n.index("merkleRoot"),s=await r.getAllKeys(e),i=s.length;let c="";for(let e=0;e<i;e++){if(0===e||0===c.length){const t=await n.get(s[e]);c=t?.roomId??""}await n.delete(s[e])}if(c.length>0){const e=o.index("roomId"),t=await e.get(c);if(t){const e=n.index("roomId"),a=await e.getAllKeys(c),r=a.length,s=r>0?await n.get(a[r-1]):void 0;await o.put({...t,messageCount:t.messageCount>0?t.messageCount-1:0,updatedAt:s?.timestamp??Date.now(),lastMessageMerkleRoot:s?.merkleRoot??""})}}await a.done,t.close()}catch(e){}}(...t.args);break;case"deleteDBUniqueRoom":e=await async function(e){try{const t=await S(),a=t.transaction("uniqueRoom","readwrite"),n=a.objectStore("uniqueRoom"),o=n.index("roomId"),r=await o.getKey(e);r&&await n.delete(r),await a.done,t.close()}catch(e){}}(...t.args);break;case"deleteDBSendQueue":e=await async function(e,t,a){try{const n=await S();if(a)await n.delete("sendQueue",[a,e,t]);else{const a=IDBKeyRange.only([e,t]);await n.delete("sendQueue",a)}n.close()}catch(e){}}(...t.args);break;case"deleteDB":e=await R();break;default:return void postMessage({id:a,error:"Method not found"})}postMessage({id:a,result:e})}catch(e){postMessage({id:a,error:String(e)})}};\n//# sourceMappingURL=db.worker.js.map\n'],{type:"application/javascript"}),Zr=new Worker(URL.createObjectURL(Jr),{type:"module"});let ea=0;const ta=new Map;function na(e,...t){return new Promise((n,r)=>{const a=++ea;ta.set(a,{resolve:n,reject:r}),Zr.postMessage({id:a,method:e,args:t})})}Zr.onmessage=e=>{const{id:t,result:n,error:r}=e.data,a=ta.get(t);a&&(ta.delete(t),r?a.reject(r):a.resolve(n))};const ra=(e,t)=>na("getDBAddressBookEntry",e,t),aa=(e,t)=>na("getDBPeerIsBlacklisted",e,t),oa=()=>na("getAllDBUniqueRooms"),sa=e=>na("getDBRoomMessageData",e),ia=(e,t,n,r,a,o,s,i,c,l)=>na("setDBRoomMessageData",e,t,n,r,a,o,s,i,c,l),ca=(e,t)=>na("getDBNewChunk",e,t),la=(e,t)=>na("getDBSendQueue",e,t),da=e=>na("setDBChunk",e),ua=e=>na("setDBNewChunk",e),ma=e=>na("setDBSendQueue",e),fa=(e,t,n,r)=>na("deleteDBNewChunk",e,t,n,r),pa=(e,t,n)=>na("deleteDBSendQueue",e,t,n),ha=(e,t)=>new Promise((n,r)=>{try{(e.length<=0||e.length>32)&&r(new Error("Label larger than 128 characters")),"string"==typeof t&&t.length!==2*Wt?r(new Error("Merkle root hex should be 128 bytes")):"string"!=typeof t&&t.length!==Wt&&r(new Error("Merkle root should be 64 bytes"));let a="";const o=(new TextEncoder).encode(e),s=new Uint8Array(32);s.set(o.subarray(0,Math.min(32,o.length))),a+=xr(s),a+="~",a+="string"==typeof t?t:xr(t),n(a)}catch(e){r(e)}}),ya=e=>new Promise((t,n)=>{try{const r=e.split("~"),a=r.length;2!==a&&a>1?n(new Error(`Channel message label needs to have ${String(2)} components.`)):1===a&&t({channelLabel:e,merkleRootHex:"",merkleRoot:new Uint8Array});const o=Er(r[0]);32!==o.length&&n(new Error("Channel label is not 128 bytes long."));const s=(new TextDecoder).decode(o).replace(/\0+$/,""),i=Er(r[1]);i.length!==Wt&&n(new Error("Merkle root has invalid length")),t({channelLabel:s,merkleRoot:i,merkleRootHex:r[1]})}catch(e){n(e)}}),ga=async(e,t,n,r,a,o,s,i,c,l,d,u,m)=>{if(i&&c&&l&&d&&u)try{c.set(e);const{date:f,chunkSize:p,chunkIndex:h,receivedFullSize:y,chunkAlreadyExists:g,totalSize:w,messageType:b,filename:I,chunkHash:v,messageHash:k}=await(async(e,t,n,r,a,o)=>{switch(o._receive_message(e.byteOffset,t.byteOffset,n.byteOffset,r.byteOffset,a.byteOffset)){case 0:{const t=e.slice(0,Rr),r=e.slice(Rr+Mr),a=$r(t),o=r.slice(a.chunkStartIndex,a.chunkEndIndex),s=await window.crypto.subtle.digest("SHA-512",r),i=new Uint8Array(s),c=a.chunkEndIndex-a.chunkStartIndex>a.totalSize||a.chunkEndIndex-a.chunkStartIndex>Cr?0:a.chunkEndIndex-a.chunkStartIndex;if(0===c)return{date:a.date,chunkIndex:-1,chunkSize:0,receivedFullSize:!1,chunkAlreadyExists:!0,totalSize:a.totalSize,messageType:a.messageType,filename:a.name,chunkHash:i,messageHash:a.hash};const l=xr(n),d=await(e=>na("getDBMessageData",e,void 0))(l),u=null!=d&&d.savedSize===d.totalSize,m=!d||d.savedSize+c<=d.totalSize,f=u||c===a.totalSize||null!=d&&d.savedSize+c===d.totalSize;if(!m)return{date:a.date,chunkIndex:-1,chunkSize:c,receivedFullSize:f,chunkAlreadyExists:!0,totalSize:a.totalSize,messageType:a.messageType,filename:a.name,chunkHash:i,messageHash:a.hash};const p=Yr(a.messageType);try{return await da({merkleRoot:l,hash:xr(a.hash),chunkIndex:a.chunkIndex,data:o.buffer,mimeType:p}),{date:a.date,chunkIndex:a.chunkIndex,chunkSize:c,receivedFullSize:f,chunkAlreadyExists:!1,totalSize:a.totalSize,messageType:a.messageType,filename:a.name,chunkHash:i,messageHash:a.hash}}catch(e){return{date:a.date,chunkIndex:a.chunkIndex,chunkSize:c,receivedFullSize:f,chunkAlreadyExists:!0,totalSize:a.totalSize,messageType:a.messageType,filename:a.name,chunkHash:i,messageHash:a.hash}}}case-1:return console.error("Message signature is wrong"),{date:new Date,chunkIndex:-1,chunkSize:0,receivedFullSize:!1,chunkAlreadyExists:!1,totalSize:0,messageType:Gr.Text,filename:"",chunkHash:new Uint8Array,messageHash:new Uint8Array};case-2:return console.error("Could not decrypt message"),{date:new Date,chunkIndex:-1,chunkSize:0,receivedFullSize:!1,chunkAlreadyExists:!1,totalSize:0,messageType:Gr.Text,filename:"",chunkHash:new Uint8Array,messageHash:new Uint8Array};case-3:return console.error("Merkle proof length is wrong"),{date:new Date,chunkIndex:-1,chunkSize:0,receivedFullSize:!1,chunkAlreadyExists:!1,totalSize:0,messageType:Gr.Text,filename:"",chunkHash:new Uint8Array,messageHash:new Uint8Array};case-4:return console.error("Could not allocate memory for hash"),{date:new Date,chunkIndex:-1,chunkSize:0,receivedFullSize:!1,chunkAlreadyExists:!1,totalSize:0,messageType:Gr.Text,filename:"",chunkHash:new Uint8Array,messageHash:new Uint8Array};case-5:return console.error("Could not hash chunk"),{date:new Date,chunkIndex:-1,chunkSize:0,receivedFullSize:!1,chunkAlreadyExists:!1,totalSize:0,messageType:Gr.Text,filename:"",chunkHash:new Uint8Array,messageHash:new Uint8Array};case-6:return console.error("Could not verify Merkle proof"),{date:new Date,chunkIndex:-1,chunkSize:0,receivedFullSize:!1,chunkAlreadyExists:!1,totalSize:0,messageType:Gr.Text,filename:"",chunkHash:new Uint8Array,messageHash:new Uint8Array};default:return console.error("Unexpected error occured."),{date:new Date,chunkIndex:-1,chunkSize:0,receivedFullSize:!1,chunkAlreadyExists:!1,totalSize:0,messageType:Gr.Text,filename:"",chunkHash:new Uint8Array,messageHash:new Uint8Array}}})(i,c,l,d,u,m),{signalingServer:S,keyPair:_}=t.getState();if(w>0&&v.length===Wt&&!g)if(s&&"open"===s.readyState)s.send(v.buffer);else{const e=await ha(a,o);S.isConnected&&await t.dispatch(La.endpoints.sendMessage.initiate({content:{type:"message",message:xr(v),roomId:n,fromPeerId:_.peerId,toPeerId:r,label:e}}))}const A=xr(k);if(y)if(await ia(n,o,A,r,w,w,b,I,a,f.getTime()),t.dispatch(yn({roomId:n,merkleRootHex:o,sha512Hex:A,fromPeerId:r,totalSize:w,messageType:b,filename:I,channelLabel:a,timestamp:f.getTime(),alsoSendFinishedMessage:!0})),s&&"open"===s.readyState)s.send(k.buffer);else{const e=await ha(a,o);S.isConnected&&await t.dispatch(La.endpoints.sendMessage.initiate({content:{type:"message",message:xr(k),roomId:n,fromPeerId:_.peerId,toPeerId:r,label:e}}))}else p>0&&h>-1&&!g&&(await ia(n,o,A,r,p,w,b,I,a,f.getTime()),t.dispatch(hn({roomId:n,merkleRootHex:o,sha512Hex:A,fromPeerId:r,chunkSize:p,totalSize:w,messageType:b,filename:I,channelLabel:a,timestamp:f.getTime()})));return{receivedFullSize:y}}catch(e){return console.error(e),{receivedFullSize:!1}}return{receivedFullSize:!1}},wa=async(e,t,n,r,a,o,s,i,c,l,d,u,m,f,p)=>{if(!n){n=!0;try{for(;;){const t=e.pop();if(!t)break;await ga(t,r,a,o,s,i,c,l,d,u,m,f,p)}}finally{n=!1,e.length>0&&wa(e,t,n,r,a,o,s,i,c,l,d,u,m,f,p)}}},ba=(e,t,n,r,a,o,s,i,c,l,d,u,m,f,p,h)=>{const y=(e=>{const t=new DataView(e.buffer,e.byteOffset,16);return t.getBigUint64(0,!1).toString(16).padStart(16,"0")+t.getBigUint64(8,!1).toString(16).padStart(16,"0")})(e);n.has(y)||(n.add(y),t.push(e),r||wa(t,n,r,a,o,s,i,c,l,d,u,m,f,p,h))},Ia=(e,t)=>new Promise((n,r)=>{try{e===t&&n(e);const r=t-e,a=Math.ceil(Math.log2(r)/8),o=Math.pow(Math.pow(2,8),a),s=Math.floor(o/r)*r;let i=new Uint8Array(a),c=s;for(;c>=s;){i=window.crypto.getRandomValues(i),c=0;for(let e=0;e<a;e++)c<<=8,c+=i[e];c<s&&(c%=r,n(e+c))}n(c)}catch(e){r(e)}}),va=async(e,t,n=!0,r=!0,a=!0)=>{if(t??=e,0===t&&e===t)return"";const o=t>e?await Ia(e,t):e,s=await((e,t=!0,n=!0,r=!0)=>new Promise((a,o)=>{try{let o="";t&&(o+="abcdefghijklmnopqrstuvwxyz"),n&&(o+="ABCDEFGHIJKLMNOPQRSTUVWXYZ"),r&&(o+="0123456789");let s="";const i=window.crypto.getRandomValues(new Uint8Array(e));for(let t=0;t<e;t++)s+=o[i[t]%o.length];a(s)}catch(e){o(e)}}))(o,n,r,a);return s};function ka(e,t){if(!(t>e))return e;const n=t-e,r=Math.floor(4294967296/n)*n;let a=0;do{a=crypto.getRandomValues(new Uint32Array(1))[0]}while(a>=r);return e+a%n}const Sa=async({channel:e,epc:t,roomId:n,dataChannels:r},a)=>{const{keyPair:o,rooms:s}=a.getState(),i=Er(t.withPeerPublicKey),c=Er(o.secretKey),l=s.findIndex(e=>e.id===n);let d=t.rooms.findLastIndex(e=>e.roomId===n);if(-1===d){const e=Fr(),r=await Hr(e);d=t.rooms.length,t.rooms.push({roomId:n,receiveMessageModule:r})}const u=[],m=new Set;if("string"==typeof e){const n=r.findIndex(n=>n.label===e&&n.withPeerId===t.withPeerId);if(n>-1&&"open"===r[n].readyState)return r[n]}const f="string"==typeof e?e:e.label,{channelLabel:p,merkleRoot:h,merkleRootHex:y}=await ya(f),g="string"==typeof e?t.createDataChannel(e,{ordered:!1,protocol:"raw"}):e;g.binaryType="arraybuffer",g.bufferedAmountLowThreshold=Cr,g.onbufferedamountlow=async()=>{for(;"open"===g.readyState;){const e=await la(f,t.withPeerId);if(0===e.length)break;for(;e.length>0&&g.bufferedAmount<Tr&&"open"===g.readyState;){let n=await Ia(0,e.length);n===e.length&&(n=0);const[r]=e.splice(n,1);"open"===g.readyState&&(g.send(r.encryptedData),await pa(f,t.withPeerId,r.position))}}};const w=g;let b,I,v,k,S,_,A,P,x,E;return w.withPeerId=t.withPeerId,w.roomIds=[n],w.onclose=async()=>{console.log(`Channel with label ${w.label} has closed.`),d&&t.rooms[d]&&(b&&t.rooms[d].receiveMessageModule._free(b),v&&t.rooms[d].receiveMessageModule._free(v),S&&t.rooms[d].receiveMessageModule._free(S),A&&t.rooms[d].receiveMessageModule._free(A),x&&t.rooms[d].receiveMessageModule._free(x)),await a.dispatch(Oa.endpoints.disconnectFromPeerChannelLabel.initiate({peerId:t.withPeerId,label:w.label})),"main"===w.label&&a.dispatch(cn({roomId:n,connectingToPeers:!0}))},w.onerror=async e=>{console.error(e),await a.dispatch(Oa.endpoints.disconnectFromPeerChannelLabel.initiate({peerId:t.withPeerId,label:w.label})),a.dispatch(cn({roomId:n,connectingToPeers:!0}))},w.onmessage=async e=>{const r=new Uint8Array(e.data);if(l>-1&&r.length===Wt)try{await Ba(r,w.label,w.withPeerId,s[l],a)}catch(e){console.error(e)}else r.length!==Cr?console.error(new Error("Wrong data length received")):ba(r,u,m,!1,a,n,w.withPeerId,p,y,w,I,k,_,P,E,t.rooms[d].receiveMessageModule)},w.onopen=()=>{console.log(`Channel with label "${w.label}" and client ${t.withPeerId} is open.`),r.push(w),""===y&&p.length>0&&a.dispatch(fn({roomId:n,label:f,peerId:w.withPeerId}));try{b=t.rooms[d].receiveMessageModule._malloc(Or),I=new Uint8Array(t.rooms[d].receiveMessageModule.wasmMemory.buffer,b,Or),v=t.rooms[d].receiveMessageModule._malloc(Cr),k=new Uint8Array(t.rooms[d].receiveMessageModule.wasmMemory.buffer,v,Cr),S=t.rooms[d].receiveMessageModule._malloc(Wt),_=new Uint8Array(t.rooms[d].receiveMessageModule.wasmMemory.buffer,S,Wt),_.set(h),A=t.rooms[d].receiveMessageModule._malloc($t),P=new Uint8Array(t.rooms[d].receiveMessageModule.wasmMemory.buffer,A,$t),P.set(i),x=t.rooms[d].receiveMessageModule._malloc(Gt),E=new Uint8Array(t.rooms[d].receiveMessageModule.wasmMemory.buffer,x,Gt),E.set(c)}catch(e){console.error(e)}},w},_a=async({peerId:e,peerPublicKey:t,roomId:n,peerConnections:r,rtcConfig:a},o)=>{const{keyPair:s,signalingServer:i}=o.getState();if(a??=an,!m(e))throw new Error("PeerId is not a valid uuidv4");if(64!==t.length)throw new Error("Peer public key is not a valid length");const c=r.findIndex(t=>t.withPeerId===e);if(c>-1){if(-1===r[c].rooms.findIndex(e=>e.roomId===n)){const e=Fr(),t=await Hr(e);r[c].rooms.push({roomId:n,receiveMessageModule:t})}return r[c]}const l=new RTCPeerConnection(a);l.withPeerId=e,l.withPeerPublicKey=t,l.makingOffer=!1,l.iceCandidates=[],i.isConnected&&await o.dispatch(La.endpoints.connectWithPeer.initiate({roomId:n,peerId:e,peerPublicKey:t}));const d=Fr(),u=await Hr(d);return l.rooms=[{roomId:n,receiveMessageModule:u}],l.onnegotiationneeded=async()=>{try{l.makingOffer=!0,await l.setLocalDescription(),l.localDescription&&(await o.dispatch(La.endpoints.sendMessage.initiate({content:{type:"description",description:l.localDescription,fromPeerId:s.peerId,fromPeerPublicKey:s.publicKey,toPeerId:e,roomId:n}})),console.log(`Negotiation was needed with ${e} and you sent a description ${l.localDescription.type}.`))}catch(e){console.error(e)}finally{l.makingOffer=!1}},l.onicecandidate=async({candidate:t})=>{t&&""!==t.candidate&&await o.dispatch(La.endpoints.sendMessage.initiate({content:{type:"candidate",candidate:t,fromPeerId:s.peerId,toPeerId:e,roomId:n}}))},l.onicecandidateerror=e=>{console.error(e)},l.oniceconnectionstatechange=async()=>{if("failed"===l.iceConnectionState){const{signalingServer:e}=o.getState();!e.isConnected&&!e.isEstablishingConnection&&e.serverUrl.length>0&&await o.dispatch(La.endpoints.connectWebSocket.initiate(e.serverUrl)),l.restartIce()}console.log(`ICE candidate connection state with ${e} is ${l.iceConnectionState}.`)},l.onicegatheringstatechange=()=>{console.log(`ICE gathering state with ${e} is ${l.iceGatheringState}.`)},l.onsignalingstatechange=async()=>{console.log(`Signaling state with ${e} is ${l.signalingState}.`),"stable"===l.signalingState&&l.remoteDescription&&await(async e=>{for(;e.iceCandidates.length>0&&"stable"===e.signalingState&&e.remoteDescription;){const t=e.iceCandidates.shift();if(t){const n=new RTCIceCandidate(t);n.usernameFragment!==t.usernameFragment&&await e.addIceCandidate(n)}}})(l)},l.onconnectionstatechange=async()=>{if("closed"===l.connectionState||"failed"===l.connectionState||"disconnected"===l.connectionState){if(await o.dispatch(Oa.endpoints.disconnectFromPeer.initiate({peerId:e})),console.error(`RTC Connection with peer ${e} has ${l.connectionState}.`),"closed"===l.connectionState){const{signalingServer:e}=o.getState();e.isConnected&&await o.dispatch(La.endpoints.sendMessage.initiate({content:{type:"peers",fromPeerId:s.peerId,roomId:n}}))}}else"connected"===l.connectionState&&(o.dispatch(mn({roomId:n,peerId:e,peerPublicKey:t})),console.log(`RTC Connection status with peer ${e} is ${l.connectionState}.`))},l},Aa=async(e,t,n,r)=>{if(e.length%Wt!==0)throw new Error("Hashes were not passed");const a=e.length/Wt;if(0===a)throw new Error("Cannot calculate Merkle proof of element of empty tree.");if(1===a){const e=new Uint8Array(Wt+1);if(e.set(t),r){const t=Wt+1,n=window.crypto.getRandomValues(new Uint8Array(r));let a=0;const o=4;return new DataView(n.buffer,a,o).setUint32(0,t,!1),a+=o,n.set(e,a),n}return e}const o=n?.wasmMemory??(e=>{const t=qr(e*Wt+e*(Wt+1)+3*Wt);return new WebAssembly.Memory({initial:t,maximum:t})})(a),s=n??await Hr(o),i=s._malloc(a*Wt),c=new Uint8Array(o.buffer,i,a*Wt);c.set(e);const l=s._malloc(Wt),d=new Uint8Array(o.buffer,l,Wt);d.set(t);const u=a*(Wt+1),m=s._malloc(u),f=new Uint8Array(o.buffer,m,u),p=s._get_merkle_proof(a,c.byteOffset,d.byteOffset,f.byteOffset);switch(s._free(i),s._free(l),p){case-1:throw s._free(m),new Error("Element not in tree.");case-2:throw s._free(m),new Error("Could not allocate memory for hash concatenation helper array.");case-3:throw s._free(m),new Error("Could not calculate hash.");default:if(p>0){if(r&&r>=p){const e=window.crypto.getRandomValues(new Uint8Array(r));let t=0;const n=4;return new DataView(e.buffer,t,n).setUint32(0,p,!1),t+=n,e.set(f.slice(0,p),t),s._free(m),e}{const e=Uint8Array.from([...f.slice(0,p)]);return s._free(m),e}}throw s._free(m),new Error("An unexpected error occured")}},Pa=[1],xa="CANCEL_SEND",Ea=async(e,t,n,r,a,o=1,s=Ur,i=.9,c=1)=>{const{keyPair:l}=t.getState();if(o<1)throw new Error("Need at least one chunk.");if(i<1e-4||i>1)throw new Error("Percentage of useful data in chunk should be in (0, 1].");if(!Pa.includes(c))throw new Error("Unknown metadata version schema.");if(s>Ur||s<=Dr)throw new Error(`Chunk length needs to be between ${String(Dr)} and ${String(Ur)}`);let d=!1;const u=()=>{d=!0};window.addEventListener(xa,u);const m=(e=>{if("string"==typeof e)return Gr.Text;const t=e.name.split(".").pop()?.toLowerCase()??"";return{png:Gr.ImagePNG,jpeg:Gr.ImageJPEG,jpg:Gr.ImageJPG,gif:Gr.ImageGIF,bmp:Gr.ImageBMP,tiff:Gr.ImageTIFF,svg:Gr.ImageSVG,webp:Gr.ImageWEBP,heic:Gr.ImageHEIC,pdf:Gr.DocumentPDF,doc:Gr.DocumentDOC,docx:Gr.DocumentDOCX,xls:Gr.DocumentXLS,xlsx:Gr.DocumentXLSX,ppt:Gr.DocumentPPT,pptx:Gr.DocumentPPTX,txt:Gr.DocumentTXT,rtf:Gr.DocumentRTF,odt:Gr.DocumentODT,mp3:Gr.AudioMP3,wav:Gr.AudioWAV,aac:Gr.AudioAAC,flac:Gr.AudioFLAC,ogg:Gr.AudioOGG,m4a:Gr.AudioM4A,mp4:Gr.VideoMP4,avi:Gr.VideoAVI,mkv:Gr.VideoMKV,mov:Gr.VideoMOV,wmv:Gr.VideoWMV,flv:Gr.VideoFLV,webm:Gr.VideoWEBM,zip:Gr.CompressedZIP,rar:Gr.CompressedRAR,"7z":Gr.Compressed7Z,tar:Gr.CompressedTAR,gz:Gr.CompressedGZ,html:Gr.CodeHTML,css:Gr.CodeCSS,js:Gr.CodeJS,ts:Gr.CodeTS,jsx:Gr.CodeJSX,tsx:Gr.CodeTSX,json:Gr.CodeJSON,xml:Gr.CodeXML,py:Gr.CodePY,java:Gr.CodeJAVA,c:Gr.CodeC,cpp:Gr.CodeCPP,cs:Gr.CodeCS,rb:Gr.CodeRB,php:Gr.CodePHP,sql:Gr.CodeSQL,epub:Gr.EbookEPUB,mobi:Gr.EbookMOBI,azw:Gr.EbookAZW,ttf:Gr.FontTTF,otf:Gr.FontOTF,ico:Gr.ImageICO,exe:Gr.ExecutableEXE,dmg:Gr.ExecutableDMG,apk:Gr.ExecutableAPK}[t]??Gr.Unknown})(e),f=m===Gr.Text?await va(256):e.name.substring(0,255),p="string"==typeof e?(new TextEncoder).encode(e):e,h=await navigator.storage.estimate(),y=(h.quota??10737418240)-(h.usage??65536),g="string"==typeof e?p.length:p.size;if(g>y)throw new Error("Not enough space to save the file in the browser.");if(g<1)throw new Error("No data to split in chunks");const w=new Date,b=await window.crypto.subtle.digest("SHA-512",g<10485760?"string"==typeof e?p.buffer:await p.arrayBuffer():"string"==typeof e?p.subarray(0,10485760).buffer:await p.slice(0,10485760).arrayBuffer()),I=new Uint8Array(b),v=xr(I),k={schemaVersion:c,messageType:m,hash:I,name:f,totalSize:g,date:w};let S=0;const _=Math.max(o,Math.ceil(g/(s*i))),A=new Uint8Array(s),P=new Uint8Array(_*Wt),x=Math.floor(s*(1-i)),E=Math.ceil(s*i);for(let a=0;a<_&&!d;a++){window.crypto.getRandomValues(A);const o=await Ia(0,x),s=g-S,i=Math.min(Math.max(s,0),E);let c=o+i;if(s>0){const t=p.slice(S,S+i);if("string"==typeof e)A.set(t,o);else{const e=await t.arrayBuffer();A.set(new Uint8Array(e),o)}S+=i}else{const e=c+g+1,t=Number.MAX_SAFE_INTEGER-e;c+=await Ia(e,t)}const d=await window.crypto.subtle.digest("SHA-512",A),u=new Uint8Array(d),h=xr(u);P.set(u,a*Wt);const y=Qr({...k,chunkStartIndex:o,chunkEndIndex:c,chunkIndex:a});try{await ua({hash:v,merkleRoot:"",chunkIndex:a,realChunkHash:h,data:A.buffer,metadata:y.buffer,merkleProof:(new Uint8Array).buffer})}catch{}t.dispatch(hn({roomId:r.id,merkleRootHex:"",sha512Hex:v,fromPeerId:l.peerId,chunkSize:0,totalSize:g,chunksCreated:a+1,totalChunks:_,messageType:m,filename:f,channelLabel:n,timestamp:w.getTime()}))}if(d)return window.removeEventListener(xa,u),await fa(void 0,void 0,v),t.dispatch(bn({hashHex:v})),{merkleRoot:new Uint8Array,merkleRootHex:"",hash:new Uint8Array,hashHex:"",totalChunks:0,totalSize:0,messageType:0,chunkHashes:new Uint8Array};const C=await(async(e,t)=>{if(e.length%Wt!==0)throw new Error("Hashes were not passed");const n=e.length/Wt;if(0===n)throw new Error("Cannot calculate Merkle root of tree with no leaves.");if(1===n)return e;const r=t?.wasmMemory??(e=>{const t=qr((2*e+3)*Wt);return new WebAssembly.Memory({initial:t,maximum:t})})(n),a=t??await Hr(r),o=a._malloc(n*Wt),s=new Uint8Array(r.buffer,o,n*Wt);s.set(e);const i=a._malloc(Wt),c=new Uint8Array(r.buffer,i,Wt),l=a._get_merkle_root(n,s.byteOffset,c.byteOffset);switch(a._free(o),l){case 0:{const e=Uint8Array.from([...c]);return a._free(i),e}case-1:throw a._free(i),new Error("Could not allocate memory for hash concatenation helper array.");case-2:throw a._free(i),new Error("Could not calculate hash.");default:throw a._free(i),new Error("Unexpected error occured.")}})(P,a),T=xr(C);try{await ia(r.id,T,v,l.peerId,g,g,m,f,n,w.getTime())}catch(e){console.error(e)}return t.dispatch(hn({roomId:r.id,merkleRootHex:T,sha512Hex:v,fromPeerId:l.peerId,chunkSize:0,totalSize:g,chunksCreated:_,totalChunks:_,messageType:m,filename:f,channelLabel:n,timestamp:w.getTime()})),window.removeEventListener(xa,u),{merkleRoot:C,merkleRootHex:T,hash:I,hashHex:v,totalSize:g,totalChunks:_,messageType:m,chunkHashes:P}},Ca=async(e,t,n,r,a,o,s,i,c,l,d,u)=>{let m=!1;const{keyPair:f}=t.getState(),{channelLabel:p,merkleRootHex:h}=await ya("string"==typeof e?e:e.label),y=function(e){const t=e.slice();for(let e=t.length-1;e>0;e--){const n=ka(0,e+1);[t[e],t[n]]=[t[n],t[e]]}return t}(Array.from({length:a},(e,t)=>t)),{ptr1:g,ptr2:w,ptr3:b,ptr5:I,ptr6:v,ptr7:k,ptr9:S,ptr10:_,senderEphemeralPublicKey:A,senderEphemeralSecretKey:P,seedBytes:x,senderEphemeralSignature:E,chunkArray:C,receiverPublicKeyArray:T,nonceArray:R,encryptedArray:M}=(e=>{const t=e._malloc($t),n=new Uint8Array(e.wasmMemory.buffer,t,$t),r=e._malloc(Gt),a=new Uint8Array(e.wasmMemory.buffer,r,Gt),o=e._malloc(Qt),s=new Uint8Array(e.wasmMemory.buffer,o,Qt),i=e._malloc(Gt),c=e._malloc(Vt),l=new Uint8Array(e.wasmMemory.buffer,c,Vt),d=e._malloc(Or),u=new Uint8Array(e.wasmMemory.buffer,d,Or),m=e._malloc($t),f=new Uint8Array(e.wasmMemory.buffer,m,$t),p=e._malloc(Wt),h=e._malloc(en),y=new Uint8Array(e.wasmMemory.buffer,h,en),g=e._malloc(Br);return{ptr1:t,ptr2:r,ptr3:o,ptr4:i,ptr5:c,ptr6:d,ptr7:m,ptr8:p,ptr9:h,ptr10:g,senderEphemeralPublicKey:n,senderEphemeralSecretKey:a,seedBytes:s,senderEphemeralSignature:l,chunkArray:u,receiverPublicKeyArray:f,nonceArray:y,encryptedArray:new Uint8Array(e.wasmMemory.buffer,g,Br)}})(d);T.set(Er(l));for(let l=0;l<a;l++){const a=y[l];if(window.crypto.getRandomValues(x),0!==d._keypair_from_seed(A.byteOffset,P.byteOffset,x.byteOffset))continue;if(0!==d._sign($t,A.byteOffset,r.byteOffset,E.byteOffset))continue;const p=await ca(i,a);if(!p)continue;const g=new Uint8Array(p.metadata),w=$r(g);if(w.chunkStartIndex>=0&&w.chunkEndIndex>w.chunkStartIndex&&w.chunkEndIndex-w.chunkStartIndex<=w.totalSize){const e=Yr(w.messageType),t=p.data.slice(w.chunkStartIndex,w.chunkEndIndex);try{await da({merkleRoot:h,hash:i,chunkIndex:w.chunkIndex,data:t,mimeType:e})}catch{}}const b=new Uint8Array(Mr);if(0===p.merkleProof.byteLength){const t=await Aa(o,Er(p.realChunkHash),u,Mr);b.set(t);try{await ua({hash:i,merkleRoot:h,realChunkHash:p.realChunkHash,chunkIndex:a,data:p.data,metadata:p.metadata,merkleProof:b.buffer})}catch(e){console.warn(e)}}else if(b.set(new Uint8Array(p.merkleProof)),0===p.merkleRoot.length)try{await ua({hash:i,merkleRoot:h,realChunkHash:p.realChunkHash,chunkIndex:a,data:p.data,metadata:p.metadata,merkleProof:p.merkleProof})}catch(e){console.warn(e)}if(Or!==g.length+b.length+new Uint8Array(p.data).length)continue;const I=await Pr([g,b,new Uint8Array(p.data)]);if(C.set(I),window.crypto.getRandomValues(R),0!==d._encrypt_chachapoly_asymmetric(Or,C.byteOffset,T.byteOffset,P.byteOffset,R.byteOffset,Wt,s.byteOffset,M.byteOffset))continue;const v=await Pr([A,E,M]);if("string"==typeof e||"open"!==e.readyState||e.bufferedAmount>=Tr)await t.dispatch(La.endpoints.sendMessage.initiate({content:{type:"message",message:xr(v),roomId:n,fromPeerId:f.peerId,toPeerId:c,label:"string"==typeof e?e:e.label}}));else if("open"===e.readyState&&e.bufferedAmount<Tr)e.send(v.buffer);else{if(!(e.bufferedAmount>Tr)){console.log("Cannot send message because channel is "+e.readyState+" and bufferedAmount is "+String(e.bufferedAmount));break}m=!0;try{await ma({position:a,label:e.label,toPeerId:e.withPeerId,encryptedData:v.buffer})}catch(e){console.error(e)}}}if(m)if("string"==typeof e){const r=await la(e,c);for(;r.length>0;){let a=await Ia(0,r.length);a===r.length&&(a=0);const[o]=r.splice(a,1);await t.dispatch(La.endpoints.sendMessage.initiate({content:{type:"message",message:xr(new Uint8Array(o.encryptedData)),roomId:n,fromPeerId:f.peerId,toPeerId:c,label:p}}));try{await pa(e,c,o.position)}catch(e){console.error(e)}}}else for(;"open"===e.readyState&&e.bufferedAmount<Tr;){const t=await la(e.label,c);for(;t.length>0&&e.bufferedAmount<Tr&&"open"===e.readyState;){let n=await Ia(0,t.length);n===t.length&&(n=0);const[r]=t.splice(n,1);if("open"===e.readyState){e.send(r.encryptedData);try{await pa(e.label,c,r.position)}catch(e){console.error(e)}}}}d._free(g),d._free(w),d._free(b),d._free(I),d._free(v),d._free(k),d._free(S),d._free(_)},Ta=[],Ra=[],Ma=[],Da=Kr(Ur,Wt),Ua=(e=>{const t=e*Uint8Array.BYTES_PER_ELEMENT+4*Wt,n=qr(t);return new WebAssembly.Memory({initial:n,maximum:n})})(Mr),Oa=kr({reducerPath:"webrtcApi",baseQuery:async({peerId:e,peerPublicKey:t,roomId:n,initiator:r,rtcConfig:a,peerConnections:o,dataChannels:s},i)=>{const{keyPair:c}=i.getState();if(e===c.peerId)throw new Error("Cannot create a connection with oneself.");if(await aa(e))return{data:void 0};const l=o.findIndex(t=>t.withPeerId===e);if(-1===l){const c=await _a({peerId:e,peerPublicKey:t,roomId:n,peerConnections:o,rtcConfig:a},i);c.ondatachannel=async e=>{await Sa({channel:e.channel,epc:c,roomId:n,dataChannels:s},i)},o.push(c),r&&await Sa({channel:"main",epc:c,roomId:n,dataChannels:s},i)}else{const r=o[l];if("connected"===r.connectionState){if(-1===r.rooms.findIndex(e=>e.roomId===n)){const a=Fr(),o=await Hr(a);r.rooms.push({roomId:n,receiveMessageModule:o}),i.dispatch(mn({roomId:n,peerId:e,peerPublicKey:t}))}const a=s.length;for(let t=0;t<a;t++)s[t].withPeerId!==e||s[t].roomIds.includes(n)||s[t].roomIds.push(n);const{rooms:o}=i.getState(),c=o.length;for(let t=0;t<c;t++){const r=o[t].channels.findIndex(t=>t.peerIds.includes(e));r>-1&&i.dispatch(fn({roomId:n,label:o[t].channels[r].label,peerId:e}))}}}return{data:void 0}},endpoints:e=>({connectWithPeer:e.mutation({query:({peerId:e,peerPublicKey:t,roomId:n,initiator:r=!1,rtcConfig:a={iceServers:[{urls:["stun:stun.p2party.com:3478"]}]}})=>({peerId:e,peerPublicKey:t,roomId:n,initiator:r,rtcConfig:a,peerConnections:Ta,dataChannels:Ma})}),setDescription:e.mutation({queryFn:(e,t,n)=>(async({peerId:e,peerPublicKey:t,roomId:n,description:r,rtcConfig:a,peerConnections:o,iceCandidates:s,dataChannels:i},c)=>{const{keyPair:l}=c.getState(),d=o.findIndex(t=>t.withPeerId===e),u=d>-1?o[d]:await _a({peerId:e,peerPublicKey:t,roomId:n,peerConnections:o,rtcConfig:a},c);-1!==d&&null!=o[d].ondatachannel||(u.ondatachannel=async e=>{await Sa({channel:e.channel,epc:u,roomId:n,dataChannels:i},c)});const m=s.length,f=[];for(let t=0;t<m;t++)s[t].withPeerId===e&&(f.push(t),u.iceCandidates.push(s[t]));const p=f.length;for(let e=0;e<p;e++)s.splice(f[e],1);-1===d&&o.push(u);const h="offer"===r.type&&(u.makingOffer||"stable"!==u.signalingState);if(!(l.peerId<u.withPeerId)&&h)return{data:void 0};if("closed"!==u.signalingState){if(await u.setRemoteDescription(r),"offer"===r.type){await u.setLocalDescription();const t=u.localDescription;t&&await c.dispatch(La.endpoints.sendMessage.initiate({content:{type:"description",description:t,fromPeerId:l.peerId,fromPeerPublicKey:l.publicKey,toPeerId:e,roomId:n}}))}}else await c.dispatch(Oa.endpoints.disconnectFromPeer.initiate({peerId:u.withPeerId})),await c.dispatch(La.endpoints.sendMessage.initiate({content:{type:"peers",fromPeerId:l.peerId,roomId:n}}));return"connected"===u.connectionState&&d>-1&&await Sa({channel:"main",epc:u,roomId:n,dataChannels:i},c),{data:void 0}})({...e,peerConnections:Ta,iceCandidates:Ra,dataChannels:Ma},t)}),setCandidate:e.mutation({queryFn:(e,t,n)=>(async({peerId:e,candidate:t,peerConnections:n,iceCandidates:r},a)=>{const{keyPair:o}=a.getState(),s=n.findIndex(t=>t.withPeerId===e);if(s>-1){const e=n[s],r=new RTCIceCandidate(t);if(e.remoteDescription&&"stable"===e.signalingState)try{await e.addIceCandidate(r)}catch(t){const n=e.makingOffer||"stable"!==e.signalingState;!(o.peerId<e.withPeerId)&&n||(await a.dispatch(Oa.endpoints.disconnectFromPeer.initiate({peerId:e.withPeerId})),e.restartIce())}else e.iceCandidates.push(r)}else r.push({...t,withPeerId:e});return{data:void 0}})({...e,peerConnections:Ta,iceCandidates:Ra},t)}),openChannel:e.mutation({queryFn:(e,t,n)=>(async({roomId:e,channel:t,withPeers:n,peerConnections:r,dataChannels:a},o)=>{const{keyPair:s}=o.getState();if(n&&n.length>0){const i=n.length;for(let c=0;c<i;c++){if(s.peerId===n[c].peerId)continue;const i=r.findIndex(e=>e.withPeerId===n[c].peerId);if(i>-1){const n=r[i];await Sa({channel:t,epc:n,roomId:e,dataChannels:a},o)}}}else{const n=r.length;for(let s=0;s<n;s++){const n=r[s];await Sa({channel:t,epc:n,roomId:e,dataChannels:a},o)}}return{data:void 0}})({...e,peerConnections:Ta,dataChannels:Ma},t)}),sendMessage:e.mutation({queryFn:(e,t,n)=>(async({data:e,label:t,roomId:n,peerConnections:r,dataChannels:a,encryptionWasmMemory:o,merkleWasmMemory:s,minChunks:i,chunkSize:c,percentageFilledChunk:l,metadataSchemaVersion:d},u)=>{const m=await Hr(o),f=await Hr(s);return await(async(e,t,n,r,a,o,s,i,c=1,l=Ur,d=.9,u=1)=>{try{const{rooms:m,keyPair:f,signalingServer:p}=t.getState(),h=m.findIndex(e=>e.id===r);if(h>-1){const y=m[h].channels.findIndex(e=>e.label===n);if(-1===y)throw new Error("No channel with label "+n);const{merkleRoot:g,merkleRootHex:w,hashHex:b,totalChunks:I,chunkHashes:v}=await Ea(e,t,n,m[h],i,c,l,d,u);if(0===g.length||0===b.length||0===I||0===v.length)return;const k=await ha(n,w),S=s._malloc(Gt),_=new Uint8Array(s.wasmMemory.buffer,S,Gt);_.set(Er(f.secretKey));const A=s._malloc(Wt),P=new Uint8Array(s.wasmMemory.buffer,A,Wt);P.set(g);const x=m[h].channels[y].peerIds.length,E=[];for(let e=0;e<x;e++){const n=a.findIndex(t=>t.withPeerId===m[h].channels[y].peerIds[e]);if(-1===n&&!p.isConnected)continue;const c=n>-1&&"connected"===a[n].connectionState?await Sa({channel:k,epc:a[n],roomId:r,dataChannels:o},t):k,l=n>-1?a[n].withPeerId:m[h].channels[y].peerIds[e],d=m[h].peers.findIndex(e=>e.peerId===l),u=n>-1?a[n].withPeerPublicKey:d>-1?m[h].peers[d].peerPublicKey:"";u.length===2*$t&&E.push(Ca(c,t,r,_,I,v,P,b,l,u,s,i))}await Promise.allSettled(E),s._free(S),s._free(A)}}catch(e){console.trace(e)}})(e,u,t,n,r,a,m,f,i,c,l,d),{data:void 0}})({...e,peerConnections:Ta,dataChannels:Ma,encryptionWasmMemory:Da,merkleWasmMemory:Ua},t)}),disconnect:e.mutation({queryFn:(e,t,n)=>(async({alsoDeleteDB:e,peerConnections:t,dataChannels:n},r)=>{const a=n.length;for(let e=0;e<a;e++)"open"===n[e].readyState&&n[e].close();const o=t.length;for(let e=0;e<o;e++)await r.dispatch(Oa.endpoints.disconnectFromPeer.initiate({peerId:t[e].withPeerId}));return e&&await na("deleteDB"),{data:void 0}})({...e,peerConnections:Ta,dataChannels:Ma},t)}),disconnectFromRoom:e.mutation({queryFn:(e,t,n)=>(async({roomId:e,deleteMessages:t,peerConnections:n,dataChannels:r},a)=>{const o=r.length;for(let t=0;t<o;t++){if(!r[t]||!r[t].roomIds.includes(e)||"open"!==r[t].readyState)continue;const n=r[t].roomIds.findIndex(t=>t===e);n>-1&&(r[t].roomIds.splice(n,1),0===r[t].roomIds.length&&r[t].close())}const s=n.length;for(let t=0;t<s;t++){if(!n[t]||"connected"!==n[t].connectionState)continue;const r=n[t].rooms.findIndex(t=>t.roomId===e);-1!==r&&(n[t].rooms.splice(r,1),0===n[t].rooms.length&&await a.dispatch(Oa.endpoints.disconnectFromPeer.initiate({peerId:n[t].withPeerId})))}if(t&&(await oa()).findIndex(t=>t.roomId===e)>-1){await(e=>na("deleteDBUniqueRoom",e))(e);const t=await sa(e),n=t.length;for(let e=0;e<n;e++)a.dispatch(bn({merkleRootHex:t[e].merkleRoot}))}return{data:void 0}})({...e,peerConnections:Ta,dataChannels:Ma},t)}),disconnectFromAllRooms:e.mutation({queryFn:(e,t,n)=>(async({deleteMessages:e,exceptionRoomIds:t,peerConnections:n,dataChannels:r},a)=>{let o,s=0;const i=r.length;for(o=0;o<i;o++)if(r[o]&&"open"===r[o].readyState)if(t&&t.length>0){const e=r[o].roomIds.length,n=[];for(s=0;s<e;s++)t.includes(r[o].roomIds[s])||n.push(s);const a=n.length;for(s=0;s<a;s++)r[o].roomIds.splice(n[s],1);0===r[o].roomIds.length&&r[o].close()}else r[o].close();const c=n.length;for(o=0;o<c;o++)if(n[o]&&"connected"===n[o].connectionState)if(t&&t.length>0){const e=n[o].rooms.length,r=[];for(s=0;s<e;s++)t.includes(n[o].rooms[s].roomId)||r.push(s);const i=r.length;for(s=0;s<i;s++)n[o].rooms.splice(r[s],1);0===n[o].rooms.length&&await a.dispatch(Oa.endpoints.disconnectFromPeer.initiate({peerId:n[o].withPeerId}))}else await a.dispatch(Oa.endpoints.disconnectFromPeer.initiate({peerId:n[o].withPeerId}));if(e){const{rooms:e}=a.getState(),n=e.length;for(o=0;o<n;o++){if(t&&t.includes(e[o].id))continue;const n=e[o].messages.length;for(s=0;s<n;s++)a.dispatch(bn({merkleRootHex:e[o].messages[s].merkleRootHex}))}}return{data:void 0}})({...e,peerConnections:Ta,dataChannels:Ma},t)}),disconnectFromPeer:e.mutation({queryFn:(e,t,n)=>(({peerId:e,alsoDeleteData:t,peerConnections:n,dataChannels:r},a)=>{const{signalingServer:o}=a.getState(),s=n.findIndex(t=>t.withPeerId===e);s>-1&&(n[s].ontrack=null,n[s].ondatachannel=null,n[s].onicecandidate=null,n[s].onicecandidateerror=null,n[s].onnegotiationneeded=null,n[s].onsignalingstatechange=null,n[s].onconnectionstatechange=null,n[s].onicegatheringstatechange=null,n[s].oniceconnectionstatechange=null,"failed"!==n[s].connectionState&&"connected"!==n[s].connectionState||n[s].close(),n.splice(s,1)),o.isConnected&&!t||a.dispatch(gn({peerId:e}));const i=r.length;for(let t=0;t<i;t++)r[t].withPeerId===e&&"open"===r[t].readyState&&r[t].close();if(t){const{rooms:t}=a.getState(),n=t.length;for(let r=0;r<n;r++){const n=t[r].messages.length;for(let o=0;o<n;o++)t[r].messages[o].fromPeerId===e&&a.dispatch(bn({merkleRootHex:t[r].messages[o].merkleRootHex}))}}return{data:void 0}})({...e,peerConnections:Ta,dataChannels:Ma},t)}),disconnectFromChannelLabel:e.mutation({queryFn:(e,t,n)=>(async({label:e,messageHash:t,alsoDeleteData:n,alsoSendFinishedMessage:r,dataChannels:a},o)=>{const s=a.length;if(0===s)return{data:void 0};for(let i=0;i<s;i++)if(a[i]&&a[i].label===e&&"open"===a[i].readyState&&(t&&r&&t.length===Wt&&a[i].send(t.buffer),a[i].close(),n)){const{merkleRootHex:t}=await ya(e);n&&o.dispatch(bn({merkleRootHex:t}))}return{data:void 0}})({...e,dataChannels:Ma},t)}),disconnectFromPeerChannelLabel:e.mutation({queryFn:(e,t,n)=>(async({peerId:e,label:t,messageHash:n,alsoDeleteData:r,alsoSendFinishedMessage:a,peerConnections:o,dataChannels:s},i)=>{const{rooms:c,signalingServer:l}=i.getState(),d=s.findIndex(n=>n.label===t&&n.withPeerId===e);d>-1&&s[d]&&(n&&a&&n.length===Wt&&s[d].send(n.buffer),s[d].onopen=null,s[d].onclose=null,s[d].onerror=null,s[d].onclosing=null,s[d].onmessage=null,s[d].onbufferedamountlow=null,"open"===s[d].readyState&&s[d].close(),s.splice(d,1),await pa(t,e));const{merkleRootHex:u}=await ya(t);u.length>0?(r&&i.dispatch(bn({merkleRootHex:u})),s.findIndex(e=>e.label===t)<0&&await fa(u)):l.isConnected&&!r||i.dispatch(wn({peerId:e,label:t}));const m=c.length;let f=!1;for(let t=0;t<m;t++){const n=c[t].channels.length;for(let r=0;r<n;r++)if(c[t].channels[r].peerIds.includes(e)){f=!0;break}if(f)break}if(!f){const t=o.findIndex(t=>t.withPeerId===e);t>-1&&("failed"===o[t].connectionState||"connected"===o[t].connectionState)&&await i.dispatch(Oa.endpoints.disconnectFromPeer.initiate({peerId:o[t].withPeerId}))}return{data:void 0}})({...e,peerConnections:Ta,dataChannels:Ma},t)})})}),Ba=async(e,t,n,r,a)=>{try{const o=xr(e),{channelLabel:s,merkleRootHex:i}=await ya(t),c=r.messages.findLastIndex(e=>e.merkleRootHex===i);if(c<0)return;const l=r.messages[c].sha512Hex;if(o===l){a.dispatch(yn({roomId:r.id,merkleRootHex:i,sha512Hex:l,fromPeerId:r.messages[c].fromPeerId,totalSize:r.messages[c].totalSize,messageType:r.messages[c].messageType,filename:r.messages[c].filename,channelLabel:s,timestamp:r.messages[c].timestamp}));const e=Er(l);await a.dispatch(Oa.endpoints.disconnectFromPeerChannelLabel.initiate({peerId:n,label:t,messageHash:e,alsoDeleteData:!1,alsoSendFinishedMessage:!1}))}else{const e=await ca(o),t=e?.chunkIndex??-1;if(e&&t>-1){const e=r.messages.findLastIndex(e=>e.merkleRootHex===i),n=await((e,t)=>na("getDBChunk",e,t))(i,t),o=n?.byteLength??0;n&&e>-1&&o>0&&r.messages[e].savedSize+o<=r.messages[e].totalSize?a.dispatch(hn({roomId:r.id,merkleRootHex:i,sha512Hex:l,fromPeerId:r.messages[e].fromPeerId,chunkSize:o,totalSize:r.messages[e].totalSize,messageType:r.messages[e].messageType,filename:r.messages[e].filename,channelLabel:s,timestamp:r.messages[e].timestamp})):-1===e&&console.log("No message with hex "+l)}}}catch(e){throw console.error(e),e}},qa=(e,t,n=10,r=20)=>{let a=0;const o=setInterval(()=>{e.readyState===WebSocket.OPEN?(clearInterval(o),t()):(a+=1,console.log(`Waiting for connection... Attempt ${String(a)}`),a>=n&&(clearInterval(o),console.log("WebSocket failed to connect after multiple attempts, closing..."),e.removeEventListener("message",()=>{}),e.removeEventListener("open",()=>{}),e.removeEventListener("close",()=>{}),e.close()))},r)};let ja=null;const Ka=[],Fa=(e,t)=>(ja&&(ja.removeEventListener("message",()=>{}),ja.removeEventListener("open",()=>{}),ja.removeEventListener("close",()=>{}),ja.close(),ja=null,console.log("WebSocket manually disconnected")),t.dispatch(_n.disconnect()),{data:void 0}),Na=(e,t)=>{if(ja&&ja.readyState===WebSocket.OPEN){const{keyPair:n}=t.getState();return m(n.peerId)&&c(n.challenge)&&c(n.signature)&&128===n.signature.length&&64===n.challenge.length&&qa(ja,()=>{ja.send(JSON.stringify(e.content))}),{data:void 0}}return console.warn("WebSocket is not open"),{data:void 0}},za=async({peerId:e,peerPublicKey:t,roomId:n},r)=>{if(ja&&ja.readyState===WebSocket.OPEN){const{keyPair:a}=r.getState();return m(a.peerId)&&c(a.challenge)&&c(a.signature)&&128===a.signature.length&&64===a.challenge.length&&64===t.length&&(r.dispatch(mn({roomId:n,peerId:e,peerPublicKey:t})),r.dispatch(fn({roomId:n,label:"main",peerId:e})),console.log(`Connected with ${a.peerId} on channel main`),qa(ja,()=>{ja.send(JSON.stringify({type:"connection",roomId:n,fromPeerId:a.peerId,toPeerId:e,labels:["main"]}))})),{data:void 0}}return console.warn("WebSocket is not open"),{data:void 0}},La=kr({reducerPath:"signalingServerApi",baseQuery:async({signalingServerUrl:e},t)=>{const{keyPair:n,signalingServer:r}=t.getState();if(ja||r.isConnected||r.isEstablishingConnection)return console.log("WebSocket already connected"),{data:void 0};t.dispatch(_n.startConnecting(e));try{let r=localStorage.getItem("publicKey")??"",a=localStorage.getItem("secretKey")??"";if(0===n.secretKey.length&&0===a.length){const e=await Wr();r=xr(e.publicKey),a=xr(e.secretKey),t.dispatch(Kt({publicKey:r,secretKey:a}))}else if(0===n.secretKey.length)if(128===a.length&&64===r.length)t.dispatch(Kt({publicKey:r,secretKey:a}));else{const e=await Wr();r=xr(e.publicKey),a=xr(e.secretKey),t.dispatch(Kt({publicKey:r,secretKey:a}))}else r=n.publicKey;const o=e+"?publickey="+r;return ja=new WebSocket(o),ja.binaryType="arraybuffer",await new Promise((e,r)=>{try{ja.onopen=()=>{console.log("WebSocket connected to:",o),t.dispatch(_n.connectionEstablished());const{rooms:r,commonState:a}=t.getState(),s=64===a.currentRoomUrl.length?r.findIndex(e=>e.url===a.currentRoomUrl):-1;s>-1&&m(n.peerId)&&m(r[s].id)?t.dispatch(cn({roomId:r[s].id,connectingToPeers:!0})):m(n.peerId)&&64===a.currentRoomUrl.length&&qa(ja,()=>{ja.send(JSON.stringify({type:"room",fromPeerId:n.peerId,roomUrl:a.currentRoomUrl}))}),e({data:void 0})},ja.onerror=e=>{console.error("WebSocket error:",e),ja&&(ja.removeEventListener("message",()=>{}),ja.removeEventListener("open",()=>{}),ja.removeEventListener("close",()=>{}),ja.close(),ja=null),t.dispatch(_n.disconnect()),r({error:"WebSocket connection failed"})},ja.onmessage=async e=>{await(async(e,t,n,r)=>{try{if("PING"===e.data)return void t.send("PONG");const a=JSON.parse(e.data);switch(a.type){case"ping":{const{keyPair:e}=n.getState();await n.dispatch(La.endpoints.sendMessage.initiate({content:{type:"pong",fromPeerId:e.peerId}}));break}case"peerId":{const{keyPair:e}=n.getState(),t=a.peerId.length>0?a.peerId:"",r=a.challenge.length>0?a.challenge:"",o=m(t)&&c(r)&&64===r.length&&0===e.challenge.length&&0===e.signature.length&&!a.challengeId&&!a.username&&!a.credential,s=m(t)&&m(e.peerId)&&e.peerId!==t&&c(r)&&64===r.length&&!a.challengeId&&!a.username&&!a.credential;o||s?await(async(e,t,n,r)=>{const a=Er(e.secretKey),o=Uint8Array.from(n.match(/.{1,2}/g).map(e=>parseInt(e,16))),s=await Vr(o,a),i=[...new Uint8Array(s)].map(e=>e.toString(16).padStart(2,"0")).join("");r.dispatch(Nt({peerId:t,challenge:n,signature:i}))})(e,t,r,n):n.dispatch(Ft({peerId:t,challenge:r,signature:a.signature??"",challengeId:a.challengeId??"",username:a.username??"",credential:a.credential??""}));break}case"roomId":n.dispatch(sn({id:a.roomId,url:a.roomUrl}));break;case"challenge":n.dispatch(zt(a));break;case"peerConnection":{if(await aa(a.peer.id,a.peer.publicKey))break;const{keyPair:e,rooms:t}=n.getState(),r=t.findIndex(e=>e.id===a.roomId);if(r>-1&&t[r].onlyConnectWithKnownAddresses&&!await ra(a.peer.id,a.peer.publicKey))break;await n.dispatch(La.endpoints.sendMessage.initiate({content:{type:"peerConnection",roomId:a.roomId,fromPeerId:e.peerId,toPeerId:a.peer.id}}));break}case"peers":{const{keyPair:e,rooms:t,commonState:r}=n.getState(),o=64===r.currentRoomUrl.length?t.findIndex(e=>e.url===r.currentRoomUrl):-1;if(o>-1){const r=a.peers.length;if(0===r)break;const s=t[o].onlyConnectWithKnownAddresses;for(let i=0;i<r;i++)if(a.peers[i].publicKey!==e.publicKey&&a.peers[i].id!==e.peerId&&m(a.peers[i].id)&&64===a.peers[i].publicKey.length&&!await aa(a.peers[i].id,a.peers[i].publicKey)){if(s&&!await ra(a.peers[i].id,a.peers[i].publicKey))continue;await n.dispatch(Oa.endpoints.connectWithPeer.initiate({roomId:a.roomId,peerId:a.peers[i].id,peerPublicKey:a.peers[i].publicKey,initiator:!0,rtcConfig:t[o].rtcConfig}))}}break}case"description":if(!await aa(a.fromPeerId,a.fromPeerPublicKey)){const{rooms:e,commonState:t}=n.getState(),r=64===t.currentRoomUrl.length?e.findIndex(e=>e.url===t.currentRoomUrl):-1;if(r>-1&&e[r].onlyConnectWithKnownAddresses&&!await ra(a.fromPeerId,a.fromPeerPublicKey))break;await n.dispatch(Oa.endpoints.setDescription.initiate({peerId:a.fromPeerId,peerPublicKey:a.fromPeerPublicKey,roomId:a.roomId,description:a.description}))}break;case"candidate":if(!await aa(a.fromPeerId)){const{rooms:e,commonState:t}=n.getState(),r=64===t.currentRoomUrl.length?e.findIndex(e=>e.url===t.currentRoomUrl):-1;if(r>-1&&e[r].onlyConnectWithKnownAddresses&&!await ra(a.fromPeerId))break;await n.dispatch(Oa.endpoints.setCandidate.initiate({peerId:a.fromPeerId,candidate:a.candidate}))}break;case"message":{const{rooms:t}=n.getState(),o=t.findIndex(e=>e.id===a.roomId),s=new Uint8Array(Er(a.message));if(o>-1&&s.length===Wt){try{await Ba(s,a.label,a.fromPeerId,t[o],n)}catch(e){console.error(e)}break}if(s.length===Cr){const e=r.findIndex(e=>e.withPeerId===a.fromPeerId);if(-1===e)break;const t=r[e].rooms.findLastIndex(e=>e.roomId===a.roomId);if(-1===t)break;const{channelLabel:o,merkleRoot:i,merkleRootHex:c}=await ya(a.label);i.length===Wt&&r[e].rooms[t].ptr3&&r[e].rooms[t].merkleRootArray&&(r[e].rooms[t].merkleRootArray.set(i),ba(s,r[e].rooms[t].queue,r[e].rooms[t].seen,r[e].rooms[t].draining,n,r[e].rooms[t].roomId,a.fromPeerId,o,c,void 0,r[e].rooms[t].decrypted,r[e].rooms[t].messageArray,r[e].rooms[t].merkleRootArray,r[e].rooms[t].senderPublicKeyArray,r[e].rooms[t].receiverSecretKeyArray,r[e].rooms[t].receiveMessageModule));break}console.error(new Error("Wrong data length received, "+String(s.length)));break}case"connection":{const{keyPair:e}=n.getState();if(m(e.peerId)&&c(e.challenge)&&c(e.signature)&&128===e.signature.length&&64===e.challenge.length&&m(a.fromPeerId)&&64===a.fromPeerPublicKey.length&&m(a.roomId)){n.dispatch(mn({roomId:a.roomId,peerId:a.fromPeerId,peerPublicKey:a.fromPeerPublicKey}));const t=a.labels.length;for(let r=0;r<t;r++)n.dispatch(fn({roomId:a.roomId,label:a.labels[r],peerId:a.fromPeerId})),console.log(`Connected with ${e.peerId} on websocket channel ${a.labels[r]}`);const o=r.findIndex(e=>e.withPeerId===a.fromPeerId||e.withPeerPublicKey===a.fromPeerPublicKey);if(-1===o){const t=Fr(),n=await Hr(t),o=n._malloc(Or),s=new Uint8Array(n.wasmMemory.buffer,o,Or),i=n._malloc(Cr),c=new Uint8Array(n.wasmMemory.buffer,i,Cr),l=n._malloc(Wt),d=new Uint8Array(n.wasmMemory.buffer,l,Wt),u=Er(a.fromPeerPublicKey),m=n._malloc($t),f=new Uint8Array(n.wasmMemory.buffer,m,$t);f.set(u);const p=Er(e.secretKey),h=n._malloc(Gt),y=new Uint8Array(n.wasmMemory.buffer,h,Gt);y.set(p),r.push({withPeerId:a.fromPeerId,withPeerPublicKey:a.fromPeerPublicKey,rooms:[{roomId:a.roomId,receiveMessageModule:n,queue:[],seen:new Set,draining:!1,ptr1:o,decrypted:s,ptr2:i,messageArray:c,ptr3:l,merkleRootArray:d,ptr4:m,senderPublicKeyArray:f,ptr5:h,receiverSecretKeyArray:y}]})}else if(-1===r[o].rooms.findLastIndex(e=>e.roomId===a.roomId)){const e=Fr(),t=await Hr(e),n=t._malloc(Or),s=new Uint8Array(t.wasmMemory.buffer,n,Or),i=t._malloc(Cr),c=new Uint8Array(t.wasmMemory.buffer,i,Cr),l=t._malloc(Wt),d=new Uint8Array(t.wasmMemory.buffer,l,Wt),u=t._malloc($t),m=new Uint8Array(t.wasmMemory.buffer,u,$t),f=t._malloc(Gt),p=new Uint8Array(t.wasmMemory.buffer,f,Gt);r[o].rooms.push({roomId:a.roomId,receiveMessageModule:t,queue:[],seen:new Set,draining:!1,ptr1:n,decrypted:s,ptr2:i,messageArray:c,ptr3:l,merkleRootArray:d,ptr4:u,senderPublicKeyArray:m,ptr5:f,receiverSecretKeyArray:p})}}break}case"error":console.error(a);break;default:console.error("Unknown message type "+JSON.stringify(a))}}catch(e){return}})(e,ja,t,Ka)},ja.onclose=()=>{ja&&(ja.removeEventListener("message",()=>{}),ja.removeEventListener("open",()=>{}),ja.removeEventListener("close",()=>{}),ja.close(),ja=null),t.dispatch(_n.disconnect()),console.log("WebSocket disconnected"),e({data:void 0})}}catch(e){r(e)}return()=>{ja&&(console.log("Cleaning up WebSocket connection..."),ja.removeEventListener("message",()=>{}),ja.removeEventListener("open",()=>{}),ja.removeEventListener("close",()=>{}),ja.close(),ja=null)}})}catch(e){return ja&&(ja.removeEventListener("message",()=>{}),ja.removeEventListener("open",()=>{}),ja.removeEventListener("close",()=>{}),ja.close(),ja=null),t.dispatch(_n.disconnect()),console.error("Error during WebSocket setup:",e),{error:"WebSocket connection failed"}}},endpoints:e=>({connectWebSocket:e.mutation({query:(e="wss://signaling.p2party.com/ws")=>({signalingServerUrl:e})}),disconnectWebSocket:e.mutation({queryFn:Fa}),sendMessage:e.mutation({queryFn:Na}),connectWithPeer:e.mutation({queryFn:za})})}),Ha=Mt();Ha.startListening({matcher:Ue(cn,sn,hn,bn,In),effect:async(e,t)=>{if(cn.match(e)){const{roomId:n,connectingToPeers:r}=e.payload;if(r){const{signalingServer:e,keyPair:r,rooms:a}=t.getState(),o=a.findIndex(e=>e.id===n);e.isConnected&&m(r.peerId)&&o>-1&&m(a[o].id)&&await t.dispatch(La.endpoints.sendMessage.initiate({content:{type:"peers",fromPeerId:r.peerId,roomId:n}})),t.dispatch(cn({roomId:n,connectingToPeers:!1}))}}else if(sn.match(e)){const{signalingServer:a,keyPair:o,rooms:s}=t.getState(),{url:i,id:c,onlyConnectWithKnownPeers:l}=e.payload;if(64===i.length&&null!=l&&localStorage.setItem(i+"-onlyConnectWithKnownPeers",String(l)),64===i.length&&m(c)){await(n=i,r=c,na("setDBUniqueRoom",n,r));const e=await sa(c),l=e.length;for(let n=0;n<l;n++)t.dispatch(hn({roomId:e[n].roomId,merkleRootHex:e[n].merkleRoot,sha512Hex:e[n].hash,fromPeerId:e[n].fromPeerId,filename:e[n].filename,messageType:e[n].messageType,chunkSize:e[n].savedSize,totalSize:e[n].totalSize,channelLabel:e[n].channelLabel,timestamp:e[n].timestamp}));const d=s.findIndex(e=>e.id===c);a.isConnected&&m(o.peerId)&&d>-1&&m(s[d].id)&&await t.dispatch(La.endpoints.sendMessage.initiate({content:{type:"peers",fromPeerId:o.peerId,roomId:s[d].id}}))}}else if(hn.match(e)){const{roomId:n,merkleRootHex:r,sha512Hex:a,chunkSize:o,totalSize:s}=e.payload,{rooms:i,keyPair:c}=t.getOriginalState(),l=i.findIndex(e=>e.id===n);if(l>-1){const e=i[l].messages.findLastIndex(e=>e.merkleRootHex===r&&e.fromPeerId!==c.peerId&&e.savedSize+o===s);if(e>-1){const n=await ha(i[l].messages[e].channelLabel,i[l].messages[e].merkleRootHex),r=Er(a);await t.dispatch(Oa.endpoints.disconnectFromChannelLabel.initiate({label:n,messageHash:r,alsoDeleteData:!1,alsoSendFinishedMessage:!0}))}}}else if(bn.match(e)){const{merkleRootHex:t,hashHex:n}=e.payload;if(!t&&!n)return;if(t&&t.length!==2*Wt)return;if(n&&n.length!==2*Wt)return;t?(await(e=>na("deleteDBChunk",e,void 0))(t),await fa(t),await(e=>na("deleteDBMessageData",e))(t)):n&&await fa(void 0,void 0,n)}else if(In.match(e)){const n=e.payload;await t.dispatch(Oa.endpoints.disconnectFromRoom.initiate({roomId:n,deleteMessages:!0}))}var n,r}});const Wa=Mt();Wa.startListening({matcher:Ue(Kt,Ft,Nt,zt,Lt),effect:async(e,t)=>{if(Kt.match(e)){const{publicKey:t,secretKey:n}=e.payload;64===t.length&&128===n.length&&(localStorage.setItem("publicKey",e.payload.publicKey),localStorage.setItem("secretKey",e.payload.secretKey))}else if(Ft.match(e)){const{peerId:n,challenge:r,signature:a,challengeId:o,username:s,credential:i}=e.payload;if(m(n)&&m(o)&&c(r)&&c(a)&&64===r.length&&128===a.length){localStorage.setItem("peerId",n),localStorage.setItem("challenge",r),localStorage.setItem("signature",a),localStorage.setItem("challengeId",o);const{keyPair:c,rooms:l,commonState:d}=t.getState(),u=64===d.currentRoomUrl.length?l.findIndex(e=>e.url===d.currentRoomUrl):-1;u>-1?(e.payload.username&&e.payload.credential&&t.dispatch(pn({roomId:l[u].id,iceServers:[{urls:["turn:turn.p2party.com:3478?transport=udp","turn:turn.p2party.com:3478?transport=tcp","turns:turn.p2party.com:443?transport=tcp"],username:s,credential:i}]})),m(l[u].id)&&t.dispatch(cn({roomId:l[u].id,connectingToPeers:!0}))):m(c.peerId)&&64===d.currentRoomUrl.length&&await t.dispatch(La.endpoints.sendMessage.initiate({content:{type:"room",fromPeerId:c.peerId,roomUrl:d.currentRoomUrl}}))}}else if(Nt.match(e)){const{peerId:n,challenge:r,signature:a}=e.payload;m(n)&&c(r)&&c(a)&&64===r.length&&128===a.length&&(localStorage.setItem("peerId",n),localStorage.setItem("challenge",r),localStorage.setItem("signature",a),await t.dispatch(La.endpoints.sendMessage.initiate({content:{type:"challenge",fromPeerId:n,challenge:r,signature:a}})))}else if(zt.match(e)){const{challengeId:n}=e.payload;if(m(n)){localStorage.setItem("challengeId",n);const{keyPair:r,rooms:a,commonState:o}=t.getState(),s=64===o.currentRoomUrl.length?a.findIndex(e=>e.url===o.currentRoomUrl):-1;s>-1?e.payload.username&&e.payload.credential&&(t.dispatch(pn({roomId:a[s].id,iceServers:[{urls:["turn:turn.p2party.com:3478?transport=udp","turn:turn.p2party.com:3478?transport=tcp","turns:turn.p2party.com:443?transport=tcp"],username:e.payload.username,credential:e.payload.credential}]})),m(a[s].id)?t.dispatch(cn({roomId:a[s].id,connectingToPeers:!0})):m(r.peerId)&&64===o.currentRoomUrl.length&&await t.dispatch(La.endpoints.sendMessage.initiate({content:{type:"room",fromPeerId:r.peerId,roomUrl:o.currentRoomUrl}}))):m(r.peerId)&&64===o.currentRoomUrl.length&&await t.dispatch(La.endpoints.sendMessage.initiate({content:{type:"room",fromPeerId:r.peerId,roomUrl:o.currentRoomUrl}}))}}else Lt.match(e)&&(localStorage.setItem("peerId",""),localStorage.setItem("challengeId",""),localStorage.setItem("publicKey",""),localStorage.setItem("secretKey",""),localStorage.setItem("challenge",""),localStorage.setItem("signature",""))}});const Va=function(e){const t=function(e){const{thunk:t=!0,immutableCheck:n=!0,serializableCheck:r=!0,actionCreatorCheck:a=!0}=e??{};let o=new Pe;return t&&("boolean"==typeof t?o.push(ke):o.push(Se(t.extraArgument))),o},{reducer:n,middleware:r,devTools:a=!0,preloadedState:o,enhancers:s}=e||{};let i,c;if("function"==typeof n)i=n;else{if(!g(n))throw new Error(Dt(1));i=b(n)}c="function"==typeof r?r(t):t();let l=I;a&&(l=_e({trace:!1,..."object"==typeof a&&a}));const d=function(...e){return t=>(n,r)=>{const a=t(n,r);let o=()=>{throw new Error(f(15))};const s={getState:a.getState,dispatch:(e,...t)=>o(e,...t)},i=e.map(e=>e(s));return o=I(...i)(a.dispatch),{...a,dispatch:o}}}(...c),u=(e=>function(t){const{autoBatch:n=!0}=t??{};let r=new Pe(e);return n&&r.push(((e={type:"raf"})=>t=>(...n)=>{const r=t(...n);let a=!0,o=!1,s=!1;const i=new Set,c="tick"===e.type?queueMicrotask:"raf"===e.type?"undefined"!=typeof window&&window.requestAnimationFrame?window.requestAnimationFrame:Re(10):"callback"===e.type?e.queueNotification:Re(e.timeout),l=()=>{s=!1,o&&(o=!1,i.forEach(e=>e()))};return Object.assign({},r,{subscribe(e){const t=r.subscribe(()=>a&&e());return i.add(e),()=>{t(),i.delete(e)}},dispatch(e){try{return a=!e?.meta?.[Ce],o=!a,o&&(s||(s=!0,c(l))),r.dispatch(e)}finally{a=!0}}})})("object"==typeof n?n:void 0)),r})(d);return w(i,o,l(..."function"==typeof s?s(u):u()))}({reducer:{commonState:Bt,keyPair:Ht,rooms:vn,signalingServer:An,[La.reducerPath]:La.reducer,[Oa.reducerPath]:Oa.reducer},middleware:e=>e().concat([La.middleware,Oa.middleware,Ha.middleware,Wa.middleware])}),Qa=Va.dispatch;var $a=["abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse","access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act","action","actor","actress","actual","adapt","add","addict","address","adjust","admit","adult","advance","advice","aerobic","affair","afford","afraid","again","age","agent","agree","ahead","aim","air","airport","aisle","alarm","album","alcohol","alert","alien","all","alley","allow","almost","alone","alpha","already","also","alter","always","amateur","amazing","among","amount","amused","analyst","anchor","ancient","anger","angle","angry","animal","ankle","announce","annual","another","answer","antenna","antique","anxiety","any","apart","apology","appear","apple","approve","april","arch","arctic","area","arena","argue","arm","armed","armor","army","around","arrange","arrest","arrive","arrow","art","artefact","artist","artwork","ask","aspect","assault","asset","assist","assume","asthma","athlete","atom","attack","attend","attitude","attract","auction","audit","august","aunt","author","auto","autumn","average","avocado","avoid","awake","aware","away","awesome","awful","awkward","axis","baby","bachelor","bacon","badge","bag","balance","balcony","ball","bamboo","banana","banner","bar","barely","bargain","barrel","base","basic","basket","battle","beach","bean","beauty","because","become","beef","before","begin","behave","behind","believe","below","belt","bench","benefit","best","betray","better","between","beyond","bicycle","bid","bike","bind","biology","bird","birth","bitter","black","blade","blame","blanket","blast","bleak","bless","blind","blood","blossom","blouse","blue","blur","blush","board","boat","body","boil","bomb","bone","bonus","book","boost","border","boring","borrow","boss","bottom","bounce","box","boy","bracket","brain","brand","brass","brave","bread","breeze","brick","bridge","brief","bright","bring","brisk","broccoli","broken","bronze","broom","brother","brown","brush","bubble","buddy","budget","buffalo","build","bulb","bulk","bullet","bundle","bunker","burden","burger","burst","bus","business","busy","butter","buyer","buzz","cabbage","cabin","cable","cactus","cage","cake","call","calm","camera","camp","can","canal","cancel","candy","cannon","canoe","canvas","canyon","capable","capital","captain","car","carbon","card","cargo","carpet","carry","cart","case","cash","casino","castle","casual","cat","catalog","catch","category","cattle","caught","cause","caution","cave","ceiling","celery","cement","census","century","cereal","certain","chair","chalk","champion","change","chaos","chapter","charge","chase","chat","cheap","check","cheese","chef","cherry","chest","chicken","chief","child","chimney","choice","choose","chronic","chuckle","chunk","churn","cigar","cinnamon","circle","citizen","city","civil","claim","clap","clarify","claw","clay","clean","clerk","clever","click","client","cliff","climb","clinic","clip","clock","clog","close","cloth","cloud","clown","club","clump","cluster","clutch","coach","coast","coconut","code","coffee","coil","coin","collect","color","column","combine","come","comfort","comic","common","company","concert","conduct","confirm","congress","connect","consider","control","convince","cook","cool","copper","copy","coral","core","corn","correct","cost","cotton","couch","country","couple","course","cousin","cover","coyote","crack","cradle","craft","cram","crane","crash","crater","crawl","crazy","cream","credit","creek","crew","cricket","crime","crisp","critic","crop","cross","crouch","crowd","crucial","cruel","cruise","crumble","crunch","crush","cry","crystal","cube","culture","cup","cupboard","curious","current","curtain","curve","cushion","custom","cute","cycle","dad","damage","damp","dance","danger","daring","dash","daughter","dawn","day","deal","debate","debris","decade","december","decide","decline","decorate","decrease","deer","defense","define","defy","degree","delay","deliver","demand","demise","denial","dentist","deny","depart","depend","deposit","depth","deputy","derive","describe","desert","design","desk","despair","destroy","detail","detect","develop","device","devote","diagram","dial","diamond","diary","dice","diesel","diet","differ","digital","dignity","dilemma","dinner","dinosaur","direct","dirt","disagree","discover","disease","dish","dismiss","disorder","display","distance","divert","divide","divorce","dizzy","doctor","document","dog","doll","dolphin","domain","donate","donkey","donor","door","dose","double","dove","draft","dragon","drama","drastic","draw","dream","dress","drift","drill","drink","drip","drive","drop","drum","dry","duck","dumb","dune","during","dust","dutch","duty","dwarf","dynamic","eager","eagle","early","earn","earth","easily","east","easy","echo","ecology","economy","edge","edit","educate","effort","egg","eight","either","elbow","elder","electric","elegant","element","elephant","elevator","elite","else","embark","embody","embrace","emerge","emotion","employ","empower","empty","enable","enact","end","endless","endorse","enemy","energy","enforce","engage","engine","enhance","enjoy","enlist","enough","enrich","enroll","ensure","enter","entire","entry","envelope","episode","equal","equip","era","erase","erode","erosion","error","erupt","escape","essay","essence","estate","eternal","ethics","evidence","evil","evoke","evolve","exact","example","excess","exchange","excite","exclude","excuse","execute","exercise","exhaust","exhibit","exile","exist","exit","exotic","expand","expect","expire","explain","expose","express","extend","extra","eye","eyebrow","fabric","face","faculty","fade","faint","faith","fall","false","fame","family","famous","fan","fancy","fantasy","farm","fashion","fat","fatal","father","fatigue","fault","favorite","feature","february","federal","fee","feed","feel","female","fence","festival","fetch","fever","few","fiber","fiction","field","figure","file","film","filter","final","find","fine","finger","finish","fire","firm","first","fiscal","fish","fit","fitness","fix","flag","flame","flash","flat","flavor","flee","flight","flip","float","flock","floor","flower","fluid","flush","fly","foam","focus","fog","foil","fold","follow","food","foot","force","forest","forget","fork","fortune","forum","forward","fossil","foster","found","fox","fragile","frame","frequent","fresh","friend","fringe","frog","front","frost","frown","frozen","fruit","fuel","fun","funny","furnace","fury","future","gadget","gain","galaxy","gallery","game","gap","garage","garbage","garden","garlic","garment","gas","gasp","gate","gather","gauge","gaze","general","genius","genre","gentle","genuine","gesture","ghost","giant","gift","giggle","ginger","giraffe","girl","give","glad","glance","glare","glass","glide","glimpse","globe","gloom","glory","glove","glow","glue","goat","goddess","gold","good","goose","gorilla","gospel","gossip","govern","gown","grab","grace","grain","grant","grape","grass","gravity","great","green","grid","grief","grit","grocery","group","grow","grunt","guard","guess","guide","guilt","guitar","gun","gym","habit","hair","half","hammer","hamster","hand","happy","harbor","hard","harsh","harvest","hat","have","hawk","hazard","head","health","heart","heavy","hedgehog","height","hello","helmet","help","hen","hero","hidden","high","hill","hint","hip","hire","history","hobby","hockey","hold","hole","holiday","hollow","home","honey","hood","hope","horn","horror","horse","hospital","host","hotel","hour","hover","hub","huge","human","humble","humor","hundred","hungry","hunt","hurdle","hurry","hurt","husband","hybrid","ice","icon","idea","identify","idle","ignore","ill","illegal","illness","image","imitate","immense","immune","impact","impose","improve","impulse","inch","include","income","increase","index","indicate","indoor","industry","infant","inflict","inform","inhale","inherit","initial","inject","injury","inmate","inner","innocent","input","inquiry","insane","insect","inside","inspire","install","intact","interest","into","invest","invite","involve","iron","island","isolate","issue","item","ivory","jacket","jaguar","jar","jazz","jealous","jeans","jelly","jewel","job","join","joke","journey","joy","judge","juice","jump","jungle","junior","junk","just","kangaroo","keen","keep","ketchup","key","kick","kid","kidney","kind","kingdom","kiss","kit","kitchen","kite","kitten","kiwi","knee","knife","knock","know","lab","label","labor","ladder","lady","lake","lamp","language","laptop","large","later","latin","laugh","laundry","lava","law","lawn","lawsuit","layer","lazy","leader","leaf","learn","leave","lecture","left","leg","legal","legend","leisure","lemon","lend","length","lens","leopard","lesson","letter","level","liar","liberty","library","license","life","lift","light","like","limb","limit","link","lion","liquid","list","little","live","lizard","load","loan","lobster","local","lock","logic","lonely","long","loop","lottery","loud","lounge","love","loyal","lucky","luggage","lumber","lunar","lunch","luxury","lyrics","machine","mad","magic","magnet","maid","mail","main","major","make","mammal","man","manage","mandate","mango","mansion","manual","maple","marble","march","margin","marine","market","marriage","mask","mass","master","match","material","math","matrix","matter","maximum","maze","meadow","mean","measure","meat","mechanic","medal","media","melody","melt","member","memory","mention","menu","mercy","merge","merit","merry","mesh","message","metal","method","middle","midnight","milk","million","mimic","mind","minimum","minor","minute","miracle","mirror","misery","miss","mistake","mix","mixed","mixture","mobile","model","modify","mom","moment","monitor","monkey","monster","month","moon","moral","more","morning","mosquito","mother","motion","motor","mountain","mouse","move","movie","much","muffin","mule","multiply","muscle","museum","mushroom","music","must","mutual","myself","mystery","myth","naive","name","napkin","narrow","nasty","nation","nature","near","neck","need","negative","neglect","neither","nephew","nerve","nest","net","network","neutral","never","news","next","nice","night","noble","noise","nominee","noodle","normal","north","nose","notable","note","nothing","notice","novel","now","nuclear","number","nurse","nut","oak","obey","object","oblige","obscure","observe","obtain","obvious","occur","ocean","october","odor","off","offer","office","often","oil","okay","old","olive","olympic","omit","once","one","onion","online","only","open","opera","opinion","oppose","option","orange","orbit","orchard","order","ordinary","organ","orient","original","orphan","ostrich","other","outdoor","outer","output","outside","oval","oven","over","own","owner","oxygen","oyster","ozone","pact","paddle","page","pair","palace","palm","panda","panel","panic","panther","paper","parade","parent","park","parrot","party","pass","patch","path","patient","patrol","pattern","pause","pave","payment","peace","peanut","pear","peasant","pelican","pen","penalty","pencil","people","pepper","perfect","permit","person","pet","phone","photo","phrase","physical","piano","picnic","picture","piece","pig","pigeon","pill","pilot","pink","pioneer","pipe","pistol","pitch","pizza","place","planet","plastic","plate","play","please","pledge","pluck","plug","plunge","poem","poet","point","polar","pole","police","pond","pony","pool","popular","portion","position","possible","post","potato","pottery","poverty","powder","power","practice","praise","predict","prefer","prepare","present","pretty","prevent","price","pride","primary","print","priority","prison","private","prize","problem","process","produce","profit","program","project","promote","proof","property","prosper","protect","proud","provide","public","pudding","pull","pulp","pulse","pumpkin","punch","pupil","puppy","purchase","purity","purpose","purse","push","put","puzzle","pyramid","quality","quantum","quarter","question","quick","quit","quiz","quote","rabbit","raccoon","race","rack","radar","radio","rail","rain","raise","rally","ramp","ranch","random","range","rapid","rare","rate","rather","raven","raw","razor","ready","real","reason","rebel","rebuild","recall","receive","recipe","record","recycle","reduce","reflect","reform","refuse","region","regret","regular","reject","relax","release","relief","rely","remain","remember","remind","remove","render","renew","rent","reopen","repair","repeat","replace","report","require","rescue","resemble","resist","resource","response","result","retire","retreat","return","reunion","reveal","review","reward","rhythm","rib","ribbon","rice","rich","ride","ridge","rifle","right","rigid","ring","riot","ripple","risk","ritual","rival","river","road","roast","robot","robust","rocket","romance","roof","rookie","room","rose","rotate","rough","round","route","royal","rubber","rude","rug","rule","run","runway","rural","sad","saddle","sadness","safe","sail","salad","salmon","salon","salt","salute","same","sample","sand","satisfy","satoshi","sauce","sausage","save","say","scale","scan","scare","scatter","scene","scheme","school","science","scissors","scorpion","scout","scrap","screen","script","scrub","sea","search","season","seat","second","secret","section","security","seed","seek","segment","select","sell","seminar","senior","sense","sentence","series","service","session","settle","setup","seven","shadow","shaft","shallow","share","shed","shell","sheriff","shield","shift","shine","ship","shiver","shock","shoe","shoot","shop","short","shoulder","shove","shrimp","shrug","shuffle","shy","sibling","sick","side","siege","sight","sign","silent","silk","silly","silver","similar","simple","since","sing","siren","sister","situate","six","size","skate","sketch","ski","skill","skin","skirt","skull","slab","slam","sleep","slender","slice","slide","slight","slim","slogan","slot","slow","slush","small","smart","smile","smoke","smooth","snack","snake","snap","sniff","snow","soap","soccer","social","sock","soda","soft","solar","soldier","solid","solution","solve","someone","song","soon","sorry","sort","soul","sound","soup","source","south","space","spare","spatial","spawn","speak","special","speed","spell","spend","sphere","spice","spider","spike","spin","spirit","split","spoil","sponsor","spoon","sport","spot","spray","spread","spring","spy","square","squeeze","squirrel","stable","stadium","staff","stage","stairs","stamp","stand","start","state","stay","steak","steel","stem","step","stereo","stick","still","sting","stock","stomach","stone","stool","story","stove","strategy","street","strike","strong","struggle","student","stuff","stumble","style","subject","submit","subway","success","such","sudden","suffer","sugar","suggest","suit","summer","sun","sunny","sunset","super","supply","supreme","sure","surface","surge","surprise","surround","survey","suspect","sustain","swallow","swamp","swap","swarm","swear","sweet","swift","swim","swing","switch","sword","symbol","symptom","syrup","system","table","tackle","tag","tail","talent","talk","tank","tape","target","task","taste","tattoo","taxi","teach","team","tell","ten","tenant","tennis","tent","term","test","text","thank","that","theme","then","theory","there","they","thing","this","thought","three","thrive","throw","thumb","thunder","ticket","tide","tiger","tilt","timber","time","tiny","tip","tired","tissue","title","toast","tobacco","today","toddler","toe","together","toilet","token","tomato","tomorrow","tone","tongue","tonight","tool","tooth","top","topic","topple","torch","tornado","tortoise","toss","total","tourist","toward","tower","town","toy","track","trade","traffic","tragic","train","transfer","trap","trash","travel","tray","treat","tree","trend","trial","tribe","trick","trigger","trim","trip","trophy","trouble","truck","true","truly","trumpet","trust","truth","try","tube","tuition","tumble","tuna","tunnel","turkey","turn","turtle","twelve","twenty","twice","twin","twist","two","type","typical","ugly","umbrella","unable","unaware","uncle","uncover","under","undo","unfair","unfold","unhappy","uniform","unique","unit","universe","unknown","unlock","until","unusual","unveil","update","upgrade","uphold","upon","upper","upset","urban","urge","usage","use","used","useful","useless","usual","utility","vacant","vacuum","vague","valid","valley","valve","van","vanish","vapor","various","vast","vault","vehicle","velvet","vendor","venture","venue","verb","verify","version","very","vessel","veteran","viable","vibrant","vicious","victory","video","view","village","vintage","violin","virtual","virus","visa","visit","visual","vital","vivid","vocal","voice","void","volcano","volume","vote","voyage","wage","wagon","wait","walk","wall","walnut","want","warfare","warm","warrior","wash","wasp","waste","water","wave","way","wealth","weapon","wear","weasel","weather","web","wedding","weekend","weird","welcome","west","wet","whale","what","wheat","wheel","when","where","whip","whisper","wide","width","wife","wild","will","win","window","wine","wing","wink","winner","winter","wire","wisdom","wise","wish","witness","wolf","woman","wonder","wood","wool","word","work","world","worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year","yellow","you","young","youth","zebra","zero","zone","zoo"];const Ga=e=>e.normalize("NFKD"),Xa={store:Va,commonStateSelector:e=>e.commonState,signalingServerSelector:e=>e.signalingServer,roomSelector:e=>e.rooms,keyPairSelector:e=>e.keyPair,connect:async(e,t="wss://signaling.p2party.com/ws",n={iceServers:[{urls:["stun:stun.p2party.com:3478"]}],iceTransportPolicy:"all"})=>{if(64!==e.length)throw new Error("Invalid room url length");const{keyPair:r,signalingServer:a,rooms:o,commonState:s}=Va.getState(),i=o.findIndex(t=>t.url===e);-1===i&&Qa(sn({url:e,id:"",rtcConfig:n})),s.currentRoomUrl!==e&&Qa(Ot(e)),a.isConnected&&m(r.peerId)?-1===i?await Qa(La.endpoints.sendMessage.initiate({content:{type:"room",fromPeerId:r.peerId,roomUrl:e}})):Qa(cn({roomId:o[i].id,connectingToPeers:!0})):await Qa(La.endpoints.connectWebSocket.initiate(t))},connectToSignalingServer:async(e,t="wss://signaling.p2party.com/ws")=>{if(64!==e.length)throw new Error("Invalid room url length");const{signalingServer:n,rooms:r,commonState:a}=Va.getState();-1===r.findIndex(t=>t.url===e)&&Qa(sn({url:e,id:""})),a.currentRoomUrl!==e&&Qa(Ot(e)),n.serverUrl===t&&(n.isConnected||n.isEstablishingConnection)||await Qa(La.endpoints.connectWebSocket.initiate(t))},disconnectFromSignalingServer:async()=>{await Qa(La.endpoints.disconnectWebSocket.initiate())},disconnectFromRoom:async(e,t=!1)=>{await Qa(Oa.endpoints.disconnectFromRoom.initiate({roomId:e,deleteMessages:t}))},disconnectFromAllRooms:async(e=!1,t=[])=>{await Qa(Oa.endpoints.disconnectFromAllRooms.initiate({deleteMessages:e,exceptionRoomIds:t}))},disconnectFromPeer:async e=>{await Qa(Oa.endpoints.disconnectFromPeer.initiate({peerId:e}))},allowConnectionRelay:(e,t=!0)=>{const{rooms:n}=Va.getState(),r=n.findIndex(t=>t.id===e);r>-1&&Qa(dn({roomId:n[r].id,canBeConnectionRelay:t}))},onlyAllowConnectionsFromAddressBook:async(e,t)=>{if(64===e.length){const{rooms:n}=Va.getState(),r=n.findIndex(t=>t.url===e);if(r>-1&&!n[r].onlyConnectWithKnownAddresses&&t&&n[r].peers.length>0){const e=n[r].peers.length;for(let t=0;t<e;t++)await ra(n[r].peers[t].peerId,n[r].peers[t].peerPublicKey)||await Qa(Oa.endpoints.disconnectFromPeer.initiate({peerId:n[r].peers[t].peerId,alsoDeleteData:!1}))}Qa(sn({url:r>-1?n[r].url:e,id:r>-1?n[r].id:"",onlyConnectWithKnownPeers:t}))}},addPeerToAddressBook:(e,t,n)=>na("setDBAddressBookEntry",e,t,n),getPeerAddressBookEntry:ra,getAllPeersInAddressBook:()=>na("getAllDBAddressBookEntries"),getAllPeersInBlacklist:()=>na("getAllDBBlacklisted"),deletePeerFromAddressBook:async(e,t,n)=>{const r=await((e,t,n)=>na("deleteDBAddressBookEntry",e,t,n))(e,t,n);m(r)&&await Qa(Oa.endpoints.disconnectFromPeer.initiate({peerId:r,alsoDeleteData:!1}))},blacklistPeer:async(e,t)=>{await((e,t)=>na("setDBPeerInBlacklist",e,t))(e,t),await Qa(Oa.endpoints.disconnectFromPeer.initiate({peerId:e,alsoDeleteData:!0}))},getPeerIsBlacklisted:aa,removePeerFromBlacklist:(e,t)=>na("deleteDBPeerFromBlacklist",e,t),getAllExistingRooms:oa,sendMessage:async(e,t,n,r=.9,a=3,o=Ur,s=1)=>{await Qa(Oa.endpoints.sendMessage.initiate({data:e,label:t,roomId:n,minChunks:a,chunkSize:o,percentageFilledChunk:r,metadataSchemaVersion:s}))},readMessage:async(e,t)=>{if(!e&&!t)return{message:"No message",percentage:0,size:0,filename:"",mimeType:"text/plain",extension:"txt",category:Xr.Text};try{const{keyPair:n,rooms:r}=Va.getState(),a=r.length;let o=-1,s=-1;for(let i=0;i<a;i++)if(s=r[i].messages.findLastIndex(r=>r.merkleRootHex===e||n.peerId===r.fromPeerId&&r.sha512Hex===t&&""===r.merkleRootHex),s>-1){o=i;break}if(-1===o||-1===s)return{message:"No message",percentage:0,size:0,filename:"",mimeType:"text/plain",extension:"",category:Xr.Text};const i=r[o].messages[s].messageType,c=Yr(i),l=(e=>{switch(e){case Gr.ImagePNG:return"png";case Gr.ImageJPEG:return"jpeg";case Gr.ImageJPG:return"jpg";case Gr.ImageGIF:return"gif";case Gr.ImageBMP:return"bmp";case Gr.ImageTIFF:return"tiff";case Gr.ImageSVG:return"svg";case Gr.ImageWEBP:return"webp";case Gr.ImageHEIC:return"heic";case Gr.DocumentPDF:return"pdf";case Gr.DocumentDOC:return"doc";case Gr.DocumentDOCX:return"docx";case Gr.DocumentXLS:return"xls";case Gr.DocumentXLSX:return"xlsx";case Gr.DocumentPPT:return"ppt";case Gr.DocumentPPTX:return"pptx";case Gr.DocumentTXT:return"txt";case Gr.DocumentRTF:return"rtf";case Gr.DocumentODT:return"odt";case Gr.AudioMP3:return"mp3";case Gr.AudioWAV:return"wav";case Gr.AudioAAC:return"aac";case Gr.AudioFLAC:return"flac";case Gr.AudioOGG:return"ogg";case Gr.AudioM4A:return"m4a";case Gr.VideoMP4:return"mp4";case Gr.VideoAVI:return"avi";case Gr.VideoMKV:return"mkv";case Gr.VideoMOV:return"mov";case Gr.VideoWMV:return"wmv";case Gr.VideoFLV:return"flv";case Gr.VideoWEBM:return"webm";case Gr.CompressedZIP:return"zip";case Gr.CompressedRAR:return"rar";case Gr.Compressed7Z:return"7z";case Gr.CompressedTAR:return"tar";case Gr.CompressedGZ:return"gz";case Gr.CodeHTML:return"html";case Gr.CodeCSS:return"css";case Gr.CodeJS:return"js";case Gr.CodeTS:return"ts";case Gr.CodeJSX:return"jsx";case Gr.CodeTSX:return"tsx";case Gr.CodeJSON:return"json";case Gr.CodeXML:return"xml";case Gr.CodePY:return"py";case Gr.CodeJAVA:return"java";case Gr.CodeC:return"c";case Gr.CodeCPP:return"cpp";case Gr.CodeCS:return"cs";case Gr.CodeRB:return"rb";case Gr.CodePHP:return"php";case Gr.CodeSQL:return"sql";case Gr.EbookEPUB:return"epub";case Gr.EbookMOBI:return"mobi";case Gr.EbookAZW:return"azw";case Gr.FontTTF:return"ttf";case Gr.FontOTF:return"otf";case Gr.ImageICO:return"ico";case Gr.ExecutableEXE:return"exe";case Gr.ExecutableDMG:return"dmg";case Gr.ExecutableAPK:return"apk";default:return""}})(i),d=(e=>{switch(e){case Gr.Text:return Xr.Text;case Gr.ImagePNG:case Gr.ImageJPEG:case Gr.ImageJPG:case Gr.ImageGIF:case Gr.ImageBMP:case Gr.ImageTIFF:case Gr.ImageSVG:case Gr.ImageWEBP:case Gr.ImageHEIC:case Gr.ImageICO:return Xr.Image;case Gr.DocumentPDF:case Gr.DocumentDOC:case Gr.DocumentDOCX:case Gr.DocumentXLS:case Gr.DocumentXLSX:case Gr.DocumentPPT:case Gr.DocumentPPTX:case Gr.DocumentTXT:case Gr.DocumentRTF:case Gr.DocumentODT:return Xr.Document;case Gr.AudioMP3:case Gr.AudioWAV:case Gr.AudioAAC:case Gr.AudioFLAC:case Gr.AudioOGG:case Gr.AudioM4A:return Xr.Audio;case Gr.VideoMP4:case Gr.VideoAVI:case Gr.VideoMKV:case Gr.VideoMOV:case Gr.VideoWMV:case Gr.VideoFLV:case Gr.VideoWEBM:return Xr.Video;case Gr.CompressedZIP:case Gr.CompressedRAR:case Gr.Compressed7Z:case Gr.CompressedTAR:case Gr.CompressedGZ:return Xr.Compressed;case Gr.CodeHTML:case Gr.CodeCSS:case Gr.CodeJS:case Gr.CodeJSX:case Gr.CodeTS:case Gr.CodeTSX:case Gr.CodeJSON:case Gr.CodeXML:case Gr.CodePY:case Gr.CodeJAVA:case Gr.CodeC:case Gr.CodeCPP:case Gr.CodeCS:case Gr.CodeRB:case Gr.CodePHP:case Gr.CodeSQL:return Xr.Code;case Gr.EbookEPUB:case Gr.EbookMOBI:case Gr.EbookAZW:return Xr.Ebook;case Gr.FontTTF:case Gr.FontOTF:return Xr.Font;case Gr.ExecutableEXE:case Gr.ExecutableDMG:case Gr.ExecutableAPK:return Xr.Executable;default:return Xr.Unknown}})(i),u=r[o].messages[s].fromPeerId===n.peerId?100:Math.floor(r[o].messages[s].savedSize/r[o].messages[s].totalSize*100),m=100===u?await((e,t)=>na("getDBAllChunks",e,t))(r[o].messages[s].merkleRootHex,r[o].messages[s].sha512Hex):[],f=m.map(e=>e.data);try{const e=new Blob(f,{type:c});return i===Gr.Text?{message:f.length>0?await e.text():r[o].messages[s].fromPeerId===n.peerId?"Outgoing message...":"Incoming message...",percentage:u,size:r[o].messages[s].totalSize,filename:"",mimeType:c,extension:l,category:d}:{message:e,percentage:u,size:r[o].messages[s].totalSize,filename:r[o].messages[s].filename,mimeType:c,extension:l,category:d}}catch{return{message:"Invalid message",percentage:0,size:r[o].messages[s].totalSize,filename:r[o].messages[s].filename,mimeType:c,extension:l,category:d}}}catch(e){return console.error(e),{message:"Irretrievable message",percentage:0,size:0,filename:"",mimeType:"text/plain",extension:"",category:Xr.Text}}},cancelMessage:async(e,t,n)=>{if(!t&&!n)throw new Error("Need to provide either merkle root or hash");if(t&&"string"==typeof t&&t.length!==2*Wt)throw new Error("Invalid Merkle root length");if(t&&"string"!=typeof t&&t.length!==Wt)throw new Error("Invalid Merkle root length");if(n&&"string"==typeof n&&n.length!==2*Wt)throw new Error("Invalid hash length");if(n&&"string"!=typeof n&&n.length!==Wt)throw new Error("Invalid hash length");const r=new CustomEvent(xa);window.dispatchEvent(r);const a=t&&"string"==typeof t?t:t&&"string"!=typeof t?xr(t):"";let o=-1,s=-1;const{rooms:i}=Va.getState(),c=i.length;for(let e=0;e<c;e++)if(s=t?i[e].messages.findIndex(e=>e.merkleRootHex===a):-1,s>-1){o=e;break}if(o>-1&&s>-1&&i[o].messages[s].merkleRootHex.length===2*Wt){const t=await ha(e,i[o].messages[s].merkleRootHex);await Va.dispatch(Oa.endpoints.disconnectFromChannelLabel.initiate({label:t,alsoDeleteData:!0})),Va.dispatch(bn({merkleRootHex:i[o].messages[s].merkleRootHex}))}},deleteMessage:async(e,t)=>{if(!e&&!t)throw new Error("Need to provide either merkle root or hash");if(e&&"string"==typeof e&&e.length!==2*Wt)throw new Error("Invalid Merkle root length");if(e&&"string"!=typeof e&&e.length!==Wt)throw new Error("Invalid Merkle root length");if(t&&"string"==typeof t&&t.length!==2*Wt)throw new Error("Invalid hash length");if(t&&"string"!=typeof t&&t.length!==Wt)throw new Error("Invalid hash length");const n=new CustomEvent(xa);window.dispatchEvent(n);const r=e&&"string"==typeof e?e:e&&"string"!=typeof e?xr(e):"",a=t&&"string"==typeof t?t:t&&"string"!=typeof t?xr(t):"";let o=-1,s=-1;const{rooms:i}=Va.getState(),c=i.length;for(let n=0;n<c;n++)if(s=e?i[n].messages.findIndex(e=>e.merkleRootHex===r):t?i[n].messages.findIndex(e=>e.sha512Hex===a):-1,s>-1){o=n;break}if(o>-1&&s>-1&&i[o].messages[s].merkleRootHex.length===2*Wt){const e=await ha(i[o].messages[s].channelLabel,i[o].messages[s].merkleRootHex);await Va.dispatch(Oa.endpoints.disconnectFromChannelLabel.initiate({label:e,alsoDeleteData:!0})),Va.dispatch(bn({merkleRootHex:i[o].messages[s].merkleRootHex}))}},purgeIdentity:async()=>{const e=new CustomEvent(xa);window.dispatchEvent(e),Qa(Lt());const{rooms:t}=Va.getState(),n=t.length;for(let e=0;e<n;e++)await Qa(Oa.endpoints.disconnectFromRoom.initiate({roomId:t[e].id}));await Qa(La.endpoints.disconnectWebSocket.initiate())},purgeRoom:async e=>{const t=new CustomEvent(xa);window.dispatchEvent(t);const{rooms:n}=Va.getState(),r=n.findIndex(t=>t.url===e);r>-1&&Qa(In(n[r].id)),await Qa(La.endpoints.disconnectWebSocket.initiate())},purge:async()=>{const e=new CustomEvent(xa);window.dispatchEvent(e),Qa(Lt()),await Qa(La.endpoints.disconnectWebSocket.initiate());const t=await oa(),n=t.length;for(let e=0;e<n;e++)Qa(In(t[e].roomId))},generateRandomRoomUrl:async()=>{const e=await va(256),t=(new TextEncoder).encode(e),n=await window.crypto.subtle.digest("SHA-512",t),r=await window.crypto.subtle.digest("SHA-256",n),a=new Uint8Array(r);return xr(a)},encrypt:async(e,t,n,r,a)=>{const o=e.length,s=r.length,i=a?.wasmMemory??Kr(o,s),c=a??await Hr(i),l=c._malloc(o*Uint8Array.BYTES_PER_ELEMENT),d=new Uint8Array(i.buffer,l,o*Uint8Array.BYTES_PER_ELEMENT);d.set(e);const u=c._malloc($t),m=new Uint8Array(i.buffer,u,$t);m.set(t);const f=c._malloc(Gt),p=new Uint8Array(i.buffer,f,Gt);p.set(n);const h=c._malloc(en),y=new Uint8Array(i.buffer,h,en),g=window.crypto.getRandomValues(new Uint8Array(en));y.set(g);const w=c._malloc(s*Uint8Array.BYTES_PER_ELEMENT),b=new Uint8Array(i.buffer,w,s*Uint8Array.BYTES_PER_ELEMENT);b.set(r);const I=nn(o),v=c._malloc(I*Uint8Array.BYTES_PER_ELEMENT),k=new Uint8Array(i.buffer,v,I*Uint8Array.BYTES_PER_ELEMENT),S=c._encrypt_chachapoly_asymmetric(o,d.byteOffset,m.byteOffset,p.byteOffset,y.byteOffset,s,b.byteOffset,k.byteOffset);switch(c._free(l),c._free(u),c._free(f),c._free(h),c._free(w),S){case 0:{const e=Uint8Array.from([...k]);return c._free(v),e}case-1:throw c._free(v),new Error("Could not allocate memory for the ephemeral x25519 public key array.");case-2:throw c._free(v),new Error("Could not allocate memory for the ephemeral x25519 secret key array.");case-3:throw c._free(v),new Error("Could not convert Ed25519 secret key to X25519.");case-4:throw c._free(v),new Error("Could not calculate x25519 public key from x25519 secret key.");case-5:throw c._free(v),new Error("Could not allocate memory for the receiver's ed25519 converted to x25519 public key array.");case-6:throw c._free(v),new Error("Could not convert Ed25519 public key to X25519.");case-7:throw c._free(v),new Error("Could not allocate memory for the shared secret.");case-8:throw c._free(v),new Error("Could not calculate the shared secret.");case-9:throw c._free(v),new Error("Could not encrypt.");default:throw c._free(v),new Error("An unexpected error occured.")}},decrypt:async(e,t,n,r,a)=>{const o=e.length,s=r.length,i=a?.wasmMemory??((e,t)=>{const n=rn(e),r=(e+Gt+t+n+2*Yt+Zt+Jt)*Uint8Array.BYTES_PER_ELEMENT,a=qr(r);return new WebAssembly.Memory({initial:a,maximum:a})})(o,s),c=a??await Hr(i),l=rn(o),d=c._malloc(o*Uint8Array.BYTES_PER_ELEMENT),u=new Uint8Array(i.buffer,d,o*Uint8Array.BYTES_PER_ELEMENT);u.set(e);const m=c._malloc($t),f=new Uint8Array(i.buffer,m,$t);f.set(t);const p=c._malloc(Gt),h=new Uint8Array(i.buffer,p,Gt);h.set(n);const y=c._malloc(s*Uint8Array.BYTES_PER_ELEMENT),g=new Uint8Array(i.buffer,y,s*Uint8Array.BYTES_PER_ELEMENT);g.set(r);const w=c._malloc(l*Uint8Array.BYTES_PER_ELEMENT),b=new Uint8Array(i.buffer,w,l*Uint8Array.BYTES_PER_ELEMENT),I=c._decrypt_chachapoly_asymmetric(o,u.byteOffset,f.byteOffset,h.byteOffset,s,g.byteOffset,b.byteOffset);switch(c._free(d),c._free(m),c._free(p),c._free(y),I){case 0:{const e=Uint8Array.from([...b]);return c._free(w),e}case-1:throw c._free(w),new Error("Could not allocate memory for the ed25519 converted to x25519 public key array.");case-2:throw c._free(w),new Error("Could not allocate memory for the ed25519 converted to x25519 secret key array.");case-3:throw c._free(w),new Error("Could not convert receiver ed25519 secret key to x25519.");case-4:throw c._free(w),new Error("Could not generate x25519 public key from x25519 secret key.");case-5:throw c._free(w),new Error("Could not allocate memory for the ed25519 converted to x25519 receiver public key.");case-6:throw c._free(w),new Error("Could not convert receiver ed25519 public key to x25519.");case-7:throw c._free(w),new Error("Could not allocate memory for the shared secret.");case-8:throw c._free(w),new Error("Could not calculate the shared secret.");case-9:throw c._free(w),new Error("Could not decrypt");default:throw c._free(w),new Error("Unsuccessful decryption attempt")}},sign:Vr,verify:async(e,t,n,r)=>{const a=e.length,o=r?r.wasmMemory:(e=>{const t=(e+Vt+$t)*Uint8Array.BYTES_PER_ELEMENT,n=qr(t);return new WebAssembly.Memory({initial:n,maximum:n})})(a),s=r??await Hr(o),i=s._malloc(a*Uint8Array.BYTES_PER_ELEMENT),c=new Uint8Array(o.buffer,i,a*Uint8Array.BYTES_PER_ELEMENT);c.set(e);const l=s._malloc(Vt),d=new Uint8Array(o.buffer,l,Vt);d.set(t);const u=s._malloc($t),m=new Uint8Array(o.buffer,u,$t);m.set(n);const f=s._verify(a,c.byteOffset,m.byteOffset,d.byteOffset);return s._free(i),s._free(l),s._free(u),0===f},newKeyPair:Wr,generateMnemonic:async(e=128)=>{if(!$a)throw new Error("English wordlist could not be loaded.");if(e%32!=0)throw new TypeError("Mnemonic strength needs to be multiple of 32.");if(![128,160,192,224,256,288,320,352,384,416,448,480,512].includes(e))throw new Error("Wrong mnemonic strength");const t=window.crypto.getRandomValues(new Uint8Array(e/8)),n=t.reduce((e,t)=>e+t.toString(2).padStart(8,"0"),""),r=e/32,a=Uint8Array.from(t),o=await window.crypto.subtle.digest("SHA-512",a);return(n+new Uint8Array(o).reduce((e,t)=>e+t.toString(2).padStart(8,"0"),"").slice(0,r)).match(/(.{1,11})/g).map(e=>{const t=parseInt(e,2);return $a[t]}).join(" ")},keyPairFromMnemonic:async(e,t)=>{if(!await(async e=>{try{return await(async e=>{const t=Ga(e).split(" ");if(t.length%3!=0)throw new Error("Number of words in mnemonic must be multiple of three.");const n=t.map(e=>{const t=$a.indexOf(e);if(-1===t)throw new Error("Could not find word in wordlist.");return t.toString(2).padStart(11,"0")}).join(""),r=32*Math.floor(n.length/33),a=n.slice(0,r),o=n.slice(r),s=a.match(/(.{1,8})/g).map(e=>parseInt(e,2));if(s.length<16)throw new Error("Entropy length too small (less than 128 bits).");if(s.length>64)throw new Error("Entropy length too large (more than 512 bits).");const i=s.length/4,c=Uint8Array.from(s),l=await window.crypto.subtle.digest("SHA-512",c);if(new Uint8Array(l).reduce((e,t)=>e+t.toString(2).padStart(8,"0"),"").slice(0,i)!==o)throw new Error("Invalid checksum.");return!0})(e)}catch{return!1}})(e))throw new Error("Invalid mnemonic.");const n=new Uint8Array(tn),r=new TextEncoder;r.encodeInto("password12345678",n);const a=new Uint8Array(tn);if(t){const e=r.encode(t),n=await window.crypto.subtle.digest("SHA-512",e);a.set(new Uint8Array(n).slice(Wt-tn,Wt))}else a.set(n);const o=await(async(e,t,n)=>{const r=Ga(e),a=(new TextEncoder).encode(r).buffer,o=new Int8Array(a),s=o.length;t=t??window.crypto.getRandomValues(new Uint8Array(tn));const i=n?.wasmMemory??(e=>{const t=(78643200+e+Qt+tn)*Uint8Array.BYTES_PER_ELEMENT,n=qr(t);return new WebAssembly.Memory({initial:n,maximum:n})})(s),c=(n=n??await Hr(i))._malloc(Qt),l=new Uint8Array(i.buffer,c,Qt),d=window.crypto.getRandomValues(new Uint8Array(Qt));l.set(d);const u=n._malloc(s*Uint8Array.BYTES_PER_ELEMENT),m=new Int8Array(i.buffer,u,s*Uint8Array.BYTES_PER_ELEMENT);m.set(o);const f=n._malloc(tn),p=new Uint8Array(i.buffer,f,tn);p.set(t);const h=n._argon2(s,l.byteOffset,m.byteOffset,p.byteOffset),y=Uint8Array.from(l);if(n._free(c),n._free(u),n._free(f),0===h)return y;throw new Error("Could not generate argon2id for mnemonic.")})(e,a);return await(async e=>{const t=(()=>{const e=($t+Gt+Qt)*Uint8Array.BYTES_PER_ELEMENT,t=qr(e);return new WebAssembly.Memory({initial:t,maximum:t})})(),n=await Hr(t),r=n._malloc($t),a=new Uint8Array(t.buffer,r,$t),o=n._malloc(Gt),s=new Uint8Array(t.buffer,o,Gt),i=n._malloc(Qt),c=new Uint8Array(t.buffer,i,Qt);c.set(e);const l=n._keypair_from_seed(a.byteOffset,s.byteOffset,c.byteOffset);if(n._free(i),0===l){const e={publicKey:Uint8Array.from(a),secretKey:Uint8Array.from(s)};return n._free(r),n._free(o),e}throw n._free(r),n._free(o),new Error("An unexpected error occured.")})(o)},MIN_CHUNKS:1,MIN_CHUNK_SIZE:Dr+1,MAX_CHUNK_SIZE:Ur,MIN_PERCENTAGE_FILLED_CHUNK:.1,MAX_PERCENTAGE_FILLED_CHUNK:1,ROOM_URL_LENGTH:64,MessageType:Gr,MessageCategory:Xr,VERSION:"0.8.0"};"undefined"!=typeof window&&(window.p2party=Xa),e.default=Xa,e.p2party=Xa},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).p2party=e.p2party||{});
2
2
  //# sourceMappingURL=index.min.js.map