@sableclient/sable-call-embedded 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/LICENSE-AGPL-3.0 +661 -0
  2. package/LICENSE-COMMERCIAL +6 -0
  3. package/README.md +14 -0
  4. package/dist/assets/IndexedDBWorker-Dgn5IQFp.js +25 -0
  5. package/dist/assets/IndexedDBWorker-Dgn5IQFp.js.map +1 -0
  6. package/dist/assets/baduntss-Ca1ZuBEK.ogg +0 -0
  7. package/dist/assets/baduntss-DOe0oFuS.mp3 +0 -0
  8. package/dist/assets/call_declined-1jWRbd4p.mp3 +0 -0
  9. package/dist/assets/call_declined-C6gHsCGH.ogg +0 -0
  10. package/dist/assets/call_timeout-BCxXxRD8.mp3 +0 -0
  11. package/dist/assets/call_timeout-DPKAj6sz.ogg +0 -0
  12. package/dist/assets/cat-4r_NkDcK.ogg +0 -0
  13. package/dist/assets/cat-Dd8bv_2W.mp3 +0 -0
  14. package/dist/assets/clap-AxCMZLTd.ogg +0 -0
  15. package/dist/assets/clap-Dxm5qGyl.mp3 +0 -0
  16. package/dist/assets/crickets-CcwrRdbq.mp3 +0 -0
  17. package/dist/assets/crickets-DUJdcuUa.ogg +0 -0
  18. package/dist/assets/cs-app-Du_5mVg3.json +236 -0
  19. package/dist/assets/da-app-BBz-lePm.json +236 -0
  20. package/dist/assets/de-app-DjOuqT-j.json +237 -0
  21. package/dist/assets/deer-91r1Gyrx.mp3 +0 -0
  22. package/dist/assets/deer-DPSlVch4.ogg +0 -0
  23. package/dist/assets/dog-BoQdnF-w.mp3 +0 -0
  24. package/dist/assets/dog-CxIWtkNX.ogg +0 -0
  25. package/dist/assets/el-app-BBr3LLTK.json +122 -0
  26. package/dist/assets/en-app-D4wTuGKD.json +261 -0
  27. package/dist/assets/es-app-Q3c7lmEj.json +88 -0
  28. package/dist/assets/et-app-DLvuR7m2.json +234 -0
  29. package/dist/assets/fi-app-tnO3DMdi.json +224 -0
  30. package/dist/assets/fr-app-BxTYbDfK.json +111 -0
  31. package/dist/assets/generic-BBbS3Wph.ogg +0 -0
  32. package/dist/assets/generic-BFeSb6fL.mp3 +0 -0
  33. package/dist/assets/id-app-BEz8ptLJ.json +223 -0
  34. package/dist/assets/inconsolata-latin-400-normal-DTZQ6lD6.woff2 +0 -0
  35. package/dist/assets/inconsolata-latin-400-normal-HYADljCo.woff +0 -0
  36. package/dist/assets/inconsolata-latin-700-normal-ByjKuJjN.woff2 +0 -0
  37. package/dist/assets/inconsolata-latin-700-normal-DzgUY3Rl.woff +0 -0
  38. package/dist/assets/inconsolata-latin-ext-400-normal-BaHVOdFB.woff2 +0 -0
  39. package/dist/assets/inconsolata-latin-ext-400-normal-yvPjCxxx.woff +0 -0
  40. package/dist/assets/inconsolata-latin-ext-700-normal-D0Kpgs_9.woff2 +0 -0
  41. package/dist/assets/inconsolata-latin-ext-700-normal-Dlt-daqV.woff +0 -0
  42. package/dist/assets/inconsolata-vietnamese-400-normal-ByiM2lek.woff +0 -0
  43. package/dist/assets/inconsolata-vietnamese-400-normal-DfC_iMic.woff2 +0 -0
  44. package/dist/assets/inconsolata-vietnamese-700-normal-DLCFFAUf.woff +0 -0
  45. package/dist/assets/inconsolata-vietnamese-700-normal-DuasYmn8.woff2 +0 -0
  46. package/dist/assets/index-BOka8551.js +4 -0
  47. package/dist/assets/index-BOka8551.js.map +1 -0
  48. package/dist/assets/index-BxK4r5m1.css +1 -0
  49. package/dist/assets/index-CSLbyoDR.js +3 -0
  50. package/dist/assets/index-CSLbyoDR.js.map +1 -0
  51. package/dist/assets/index-zdC0P6j0.js +300 -0
  52. package/dist/assets/index-zdC0P6j0.js.map +1 -0
  53. package/dist/assets/inter-cyrillic-400-normal-HOLc17fK.woff +0 -0
  54. package/dist/assets/inter-cyrillic-400-normal-obahsSVq.woff2 +0 -0
  55. package/dist/assets/inter-cyrillic-500-normal-BasfLYem.woff2 +0 -0
  56. package/dist/assets/inter-cyrillic-500-normal-CxZf_p3X.woff +0 -0
  57. package/dist/assets/inter-cyrillic-600-normal-4D_pXhcN.woff +0 -0
  58. package/dist/assets/inter-cyrillic-600-normal-CWCymEST.woff2 +0 -0
  59. package/dist/assets/inter-cyrillic-700-normal-CjBOestx.woff2 +0 -0
  60. package/dist/assets/inter-cyrillic-700-normal-DrXBdSj3.woff +0 -0
  61. package/dist/assets/inter-cyrillic-ext-400-normal-BQZuk6qB.woff2 +0 -0
  62. package/dist/assets/inter-cyrillic-ext-400-normal-DQukG94-.woff +0 -0
  63. package/dist/assets/inter-cyrillic-ext-500-normal-B0yAr1jD.woff2 +0 -0
  64. package/dist/assets/inter-cyrillic-ext-500-normal-BmqWE9Dz.woff +0 -0
  65. package/dist/assets/inter-cyrillic-ext-600-normal-Bcila6Z-.woff +0 -0
  66. package/dist/assets/inter-cyrillic-ext-600-normal-Dfes3d0z.woff2 +0 -0
  67. package/dist/assets/inter-cyrillic-ext-700-normal-BjwYoWNd.woff2 +0 -0
  68. package/dist/assets/inter-cyrillic-ext-700-normal-LO58E6JB.woff +0 -0
  69. package/dist/assets/inter-greek-400-normal-B4URO6DV.woff2 +0 -0
  70. package/dist/assets/inter-greek-400-normal-q2sYcFCs.woff +0 -0
  71. package/dist/assets/inter-greek-500-normal-BIZE56-Y.woff2 +0 -0
  72. package/dist/assets/inter-greek-500-normal-Xzm54t5V.woff +0 -0
  73. package/dist/assets/inter-greek-600-normal-BZpKdvQh.woff +0 -0
  74. package/dist/assets/inter-greek-600-normal-plRanbMR.woff2 +0 -0
  75. package/dist/assets/inter-greek-700-normal-BUv2fZ6O.woff +0 -0
  76. package/dist/assets/inter-greek-700-normal-C3JjAnD8.woff2 +0 -0
  77. package/dist/assets/inter-greek-ext-400-normal-DGGRlc-M.woff2 +0 -0
  78. package/dist/assets/inter-greek-ext-400-normal-KugGGMne.woff +0 -0
  79. package/dist/assets/inter-greek-ext-500-normal-2j5mBUwD.woff +0 -0
  80. package/dist/assets/inter-greek-ext-500-normal-C4iEst2y.woff2 +0 -0
  81. package/dist/assets/inter-greek-ext-600-normal-B8X0CLgF.woff +0 -0
  82. package/dist/assets/inter-greek-ext-600-normal-DRtmH8MT.woff2 +0 -0
  83. package/dist/assets/inter-greek-ext-700-normal-BoQ6DsYi.woff +0 -0
  84. package/dist/assets/inter-greek-ext-700-normal-qfdV9bQt.woff2 +0 -0
  85. package/dist/assets/inter-latin-400-normal-C38fXH4l.woff2 +0 -0
  86. package/dist/assets/inter-latin-400-normal-CyCys3Eg.woff +0 -0
  87. package/dist/assets/inter-latin-500-normal-BL9OpVg8.woff +0 -0
  88. package/dist/assets/inter-latin-500-normal-Cerq10X2.woff2 +0 -0
  89. package/dist/assets/inter-latin-600-normal-CiBQ2DWP.woff +0 -0
  90. package/dist/assets/inter-latin-600-normal-LgqL8muc.woff2 +0 -0
  91. package/dist/assets/inter-latin-700-normal-BLAVimhd.woff +0 -0
  92. package/dist/assets/inter-latin-700-normal-Yt3aPRUw.woff2 +0 -0
  93. package/dist/assets/inter-latin-ext-400-normal-77YHD8bZ.woff +0 -0
  94. package/dist/assets/inter-latin-ext-400-normal-C1nco2VV.woff2 +0 -0
  95. package/dist/assets/inter-latin-ext-500-normal-BxGbmqWO.woff +0 -0
  96. package/dist/assets/inter-latin-ext-500-normal-CV4jyFjo.woff2 +0 -0
  97. package/dist/assets/inter-latin-ext-600-normal-CIVaiw4L.woff +0 -0
  98. package/dist/assets/inter-latin-ext-600-normal-D2bJ5OIk.woff2 +0 -0
  99. package/dist/assets/inter-latin-ext-700-normal-Ca8adRJv.woff2 +0 -0
  100. package/dist/assets/inter-latin-ext-700-normal-TidjK2hL.woff +0 -0
  101. package/dist/assets/inter-vietnamese-400-normal-Bbgyi5SW.woff +0 -0
  102. package/dist/assets/inter-vietnamese-400-normal-DMkecbls.woff2 +0 -0
  103. package/dist/assets/inter-vietnamese-500-normal-DOriooB6.woff2 +0 -0
  104. package/dist/assets/inter-vietnamese-500-normal-mJboJaSs.woff +0 -0
  105. package/dist/assets/inter-vietnamese-600-normal-BuLX-rYi.woff +0 -0
  106. package/dist/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2 +0 -0
  107. package/dist/assets/inter-vietnamese-700-normal-BZaoP0fm.woff +0 -0
  108. package/dist/assets/inter-vietnamese-700-normal-DlLaEgI2.woff2 +0 -0
  109. package/dist/assets/it-app-Cik25Qgd.json +215 -0
  110. package/dist/assets/ja-app-Cp_00ujI.json +123 -0
  111. package/dist/assets/join_call-DlMV9nHk.ogg +0 -0
  112. package/dist/assets/join_call-dEJCP2wD.mp3 +0 -0
  113. package/dist/assets/left_call-BbqmRgnC.mp3 +0 -0
  114. package/dist/assets/left_call-C7NMl6WI.ogg +0 -0
  115. package/dist/assets/lightbulb-BIeJtAR_.ogg +0 -0
  116. package/dist/assets/lightbulb-BrnY00qi.mp3 +0 -0
  117. package/dist/assets/livekit-client.e2ee.worker-Bmrtztct.js.map +1 -0
  118. package/dist/assets/lv-app-D-ZV3Ytk.json +222 -0
  119. package/dist/assets/matrix-sdk-crypto-wasm-BsWSMcLv.js +3 -0
  120. package/dist/assets/matrix-sdk-crypto-wasm-BsWSMcLv.js.map +1 -0
  121. package/dist/assets/matrix_sdk_crypto_wasm_bg-DU_51VO6.wasm +0 -0
  122. package/dist/assets/pako.esm-Cf42LiW4.js +2 -0
  123. package/dist/assets/pako.esm-Cf42LiW4.js.map +1 -0
  124. package/dist/assets/party-BZPeTgC3.mp3 +0 -0
  125. package/dist/assets/party-D7rIOhAQ.ogg +0 -0
  126. package/dist/assets/pl-app-CUkXVSZk.json +221 -0
  127. package/dist/assets/polyfill-force-DGhxcQMk.js +3 -0
  128. package/dist/assets/polyfill-force-DGhxcQMk.js.map +1 -0
  129. package/dist/assets/polyfill-force-DSyAwg73.js +2 -0
  130. package/dist/assets/polyfill-force-DSyAwg73.js.map +1 -0
  131. package/dist/assets/raise_hand-Bzqn65WB.mp3 +0 -0
  132. package/dist/assets/raise_hand-CUbxEnt9.ogg +0 -0
  133. package/dist/assets/ringtone-B-nJXbbw.ogg +0 -0
  134. package/dist/assets/ringtone-B2csBdU4.mp3 +0 -0
  135. package/dist/assets/ro-app-CdYgKCOW.json +206 -0
  136. package/dist/assets/rock-BVCJXNC-.ogg +0 -0
  137. package/dist/assets/rock-CHdnB31m.mp3 +0 -0
  138. package/dist/assets/ru-app-CIijOjFj.json +229 -0
  139. package/dist/assets/screen_share_started-DH3qxml5.mp3 +0 -0
  140. package/dist/assets/screen_share_started-IZDL-kAw.ogg +0 -0
  141. package/dist/assets/selfie_segmenter-DF05sdL4.tflite +0 -0
  142. package/dist/assets/sk-app-DaVEeQWZ.json +230 -0
  143. package/dist/assets/spa-DBidebYi.js +2 -0
  144. package/dist/assets/spa-DBidebYi.js.map +1 -0
  145. package/dist/assets/sv-app-DHLBEOTp.json +236 -0
  146. package/dist/assets/tr-app-Dk--6BpP.json +209 -0
  147. package/dist/assets/uk-app-DZD01h76.json +222 -0
  148. package/dist/assets/vision_wasm_internal-B105rqk5.js +2 -0
  149. package/dist/assets/vision_wasm_internal-cvmXinav.wasm +0 -0
  150. package/dist/assets/wave-Bzf1LSMH.mp3 +0 -0
  151. package/dist/assets/wave-FiiOzicp.ogg +0 -0
  152. package/dist/assets/zh-Hans-app-BY5jJGyr.json +133 -0
  153. package/dist/assets/zh-Hant-app-BV1LKS_j.json +114 -0
  154. package/dist/config.json +1 -0
  155. package/dist/index.html +1 -0
  156. package/package.json +14 -0
@@ -0,0 +1,3 @@
1
+ import{c as Er,d as c,b as Mr,e as y,K as se,L as te,h as M,D as ae,E as w,H as Y,T as W,j as v,k as m,m as ve,n as ce,o as Cr,p as Ir,s as P,q as ne,r as ur,u as dr,v as lr,I as A,M as gr,w as j,A as Dr,x as Br,y as fe,z as Or,B as qr,U as xe,F as $,S as Ae,G as Le,J as de,N as Fe,O as b,P as _,Q as ie,R as B,V as J,W as R,X as Pr}from"./index-zdC0P6j0.js";import{U as f,E as Tr,a as G,C as me,R as S,H as z,D as je,b as D,K as Ur,c as Vr,d as Nr,S as xr,e as Ar,T as Lr,f as Fr,g as jr,P as Gr,V as Z,h as Ge,Q as We,i as O,j as Wr,k as T,B as V,l as Jr,L as Je,O as Hr,m as Qr,n as Yr,o as $r,p as He,q as X,r as yr,s as Qe,t as zr,M as Zr,u as q,v as Ye,w as U,x as hr,y as Xr,z as Te,A as et,F as rt,G as le,I as tt}from"./matrix-sdk-crypto-wasm-BsWSMcLv.js";var L=(function(o){return o.Change="change",o})({}),k=(function(o){return o[o.Unsent=1]="Unsent",o[o.Requested=2]="Requested",o[o.Ready=3]="Ready",o[o.Started=4]="Started",o[o.Cancelled=5]="Cancelled",o[o.Done=6]="Done",o})({}),pr=(function(o){return o.Cancel="cancel",o.ShowSas="show_sas",o.ShowReciprocateQr="show_reciprocate_qr",o})({}),ge=[139,1];function $e(o){var e,r=new Uint8Array(ge.length+o.length+1);r.set(ge,0),r.set(o,ge.length);for(var t=0,n=0;n<r.length-1;++n)t^=r[n];r[r.length-1]=t;var i=Er.encode(r);return(e=i.match(/.{1,4}/g))===null||e===void 0?void 0:e.join(" ")}var nt=256;function vr(o,e,r){return ke.apply(this,arguments)}function ke(){return ke=c(function*(o,e,r){var t=arguments.length>3&&arguments[3]!==void 0?arguments[3]:nt;if(!globalThis.crypto.subtle||!TextEncoder)throw new Error("Password-based backup is not available on this platform");var n=yield globalThis.crypto.subtle.importKey("raw",new TextEncoder().encode(o),{name:"PBKDF2"},!1,["deriveBits"]),i=yield globalThis.crypto.subtle.deriveBits({name:"PBKDF2",salt:new TextEncoder().encode(e),iterations:r,hash:"SHA-512"},n,t);return new Uint8Array(i)}),ke.apply(this,arguments)}var ye,ze;function it(){if(ze)return ye;ze=1;for(var o=/[\\\"\x00-\x1F]/g,e={},r=0;r<32;++r)e[String.fromCharCode(r)]="\\U"+("0000"+r.toString(16)).slice(-4).toUpperCase();e["\b"]="\\b",e[" "]="\\t",e[`
2
+ `]="\\n",e["\f"]="\\f",e["\r"]="\\r",e['"']='\\"',e["\\"]="\\\\";function t(a){return o.lastIndex=0,a.replace(o,function(u){return e[u]})}function n(a){switch(typeof a){case"string":return'"'+t(a)+'"';case"number":return isFinite(a)?a:"null";case"boolean":return a;case"object":return a===null?"null":Array.isArray(a)?i(a):s(a);default:throw new Error("Cannot stringify: "+typeof a)}}function i(a){for(var u="[",d="",l=0;l<a.length;++l)d+=u,u=",",d+=n(a[l]);return u!=","?"[]":d+"]"}function s(a){var u="{",d="",l=Object.keys(a);l.sort();for(var g=0;g<l.length;++g){var p=l[g];d+=u+'"'+t(p)+'":',u=",",d+=n(a[p])}return u!=","?"{}":d+"}"}return ye={stringify:n},ye}var ot=it();const st=Mr(ot);class at{constructor(e,r,t,n,i,s){this.prefixedLogger=e,this.olmMachine=r,this.keyClaimManager=t,this.outgoingRequestManager=n,this.room=i,this.encryptionSettings=s,y(this,"lazyLoadedMembersResolved",!1),y(this,"currentEncryptionPromise",Promise.resolve());var a=i.getJoinedMembers();this.olmMachine.updateTrackedUsers(a.map(u=>new f(u.userId))).catch(u=>this.prefixedLogger.error("Error initializing tracked users",u))}onCryptoEvent(e){if(JSON.stringify(this.encryptionSettings)!=JSON.stringify(e))throw new Error("Cannot reconfigure an active RoomEncryptor")}onRoomMembership(e){(e.membership==se.Join||e.membership==se.Invite&&this.room.shouldEncryptForInvitedMembers())&&this.olmMachine.updateTrackedUsers([new f(e.userId)]).catch(r=>{this.prefixedLogger.error("Unable to update tracked users",r)})}prepareForEncryption(e,r){var t=this;return c(function*(){yield t.encryptEvent(null,e,r)})()}encryptEvent(e,r,t){var n,i=this,s=new te(this.prefixedLogger,e?(n=e.getTxnId())!==null&&n!==void 0?n:"":"prepareForEncryption"),a=this.currentEncryptionPromise.catch(()=>{}).then(c(function*(){yield M(s,"ensureEncryptionSession",c(function*(){yield i.ensureEncryptionSession(s,r,t)})),e&&(yield M(s,"encryptEventInner",c(function*(){yield i.encryptEventInner(s,e)})))}));return this.currentEncryptionPromise=a,a}ensureEncryptionSession(e,r,t){var n=this;return c(function*(){if(n.encryptionSettings.algorithm!=="m.megolm.v1.aes-sha2")throw new Error("Cannot encrypt in ".concat(n.room.roomId," for unsupported algorithm '").concat(n.encryptionSettings.algorithm,"'"));e.debug("Starting encryption");var i=yield n.room.getEncryptionTargetMembers();n.lazyLoadedMembersResolved?(e.debug("Processing outgoing requests in background"),n.outgoingRequestManager.doProcessOutgoingRequests()):(yield M(e,"loadMembersIfNeeded: updateTrackedUsers",c(function*(){yield n.olmMachine.updateTrackedUsers(i.map(l=>new f(l.userId)))})),e.debug("Updated tracked users"),n.lazyLoadedMembersResolved=!0,e.debug("Processing outgoing requests"),yield M(e,"doProcessOutgoingRequests",c(function*(){yield n.outgoingRequestManager.doProcessOutgoingRequests()}))),e.debug("Encrypting for users (shouldEncryptForInvitedMembers: ".concat(n.room.shouldEncryptForInvitedMembers(),"):"),i.map(l=>"".concat(l.userId," (").concat(l.membership,")")));var s=i.map(l=>new f(l.userId));yield M(e,"ensureSessionsForUsers",c(function*(){yield n.keyClaimManager.ensureSessionsForUsers(e,s)}));var a=new Tr;switch(a.historyVisibility=ct(n.room.getHistoryVisibility()),a.algorithm=G.MegolmV1AesSha2,typeof n.encryptionSettings.rotation_period_ms=="number"&&(a.rotationPeriod=BigInt(n.encryptionSettings.rotation_period_ms*1e3)),typeof n.encryptionSettings.rotation_period_msgs=="number"&&(a.rotationPeriodMessages=BigInt(n.encryptionSettings.rotation_period_msgs)),t.kind){case ae.AllDevicesIsolationMode:{var u,d=(u=n.room.getBlacklistUnverifiedDevices())!==null&&u!==void 0?u:r;a.sharingStrategy=me.deviceBasedStrategy(d,t.errorOnVerifiedUserProblems)}break;case ae.OnlySignedDevicesIsolationMode:a.sharingStrategy=me.identityBasedStrategy();break}yield M(e,"shareRoomKey",c(function*(){var l=yield n.olmMachine.shareRoomKey(new S(n.room.roomId),s,a);if(l)for(var g of l)yield n.outgoingRequestManager.outgoingRequestProcessor.makeOutgoingRequest(g)}))})()}forceDiscardSession(){var e=this;return c(function*(){var r=yield e.olmMachine.invalidateGroupSession(new S(e.room.roomId));r&&e.prefixedLogger.info("Discarded existing group session")})()}encryptEventInner(e,r){var t=this;return c(function*(){e.debug("Encrypting actual message content");var n=new S(t.room.roomId),i=r.getType(),s=JSON.stringify(r.getContent()),a;r.isState()?a=yield t.olmMachine.encryptStateEvent(n,i,r.getStateKey(),s):a=yield t.olmMachine.encryptRoomEvent(n,i,s),r.makeEncrypted(w.RoomMessageEncrypted,JSON.parse(a),t.olmMachine.identityKeys.curve25519.toBase64(),t.olmMachine.identityKeys.ed25519.toBase64()),e.debug("Encrypted event successfully")})()}}function ct(o){switch(o){case Y.Invited:return z.Invited;case Y.Joined:return z.Joined;case Y.Shared:return z.Shared;case Y.WorldReadable:return z.WorldReadable}}var F="/_matrix/client/unstable/org.matrix.msc3814.v1",he="org.matrix.msc3814",ut=10080*60*1e3;class dt extends W{constructor(e,r,t,n,i){super(),this.logger=e,this.olmMachine=r,this.http=t,this.outgoingRequestProcessor=n,this.secretStorage=i,y(this,"intervalId",void 0)}cacheKey(e){var r=this;return c(function*(){yield r.olmMachine.dehydratedDevices().saveDehydratedDeviceKey(e),r.emit(v.DehydrationKeyCached)})()}isSupported(){var e=this;return c(function*(){try{yield e.http.authedRequest(m.Get,"/dehydrated_device",void 0,void 0,{prefix:F})}catch(t){var r=t;if(r.errcode==="M_UNRECOGNIZED")return!1;if(r.errcode==="M_NOT_FOUND")return!0;throw t}return!0})()}start(){var e=arguments,r=this;return c(function*(){var t=e.length>0&&e[0]!==void 0?e[0]:{};if(typeof t=="boolean"&&(t={createNewKey:t}),!(t.onlyIfKeyCached&&!(yield r.olmMachine.dehydratedDevices().getDehydratedDeviceKey()))){if(r.stop(),t.rehydrate!==!1)try{yield r.rehydrateDeviceIfAvailable()}catch(n){r.logger.info("dehydration: Error rehydrating device:",n),r.emit(v.RehydrationError,n.message)}t.createNewKey&&(yield r.resetKey()),yield r.scheduleDeviceDehydration()}})()}isKeyStored(){var e=this;return c(function*(){return!!(yield e.secretStorage.isStored(he))})()}resetKey(){var e=this;return c(function*(){var r=je.createRandomKey();return yield e.secretStorage.store(he,r.toBase64()),yield e.cacheKey(r),r})()}getKey(e){var r=this;return c(function*(){var t=yield r.olmMachine.dehydratedDevices().getDehydratedDeviceKey();if(t)return t;var n=yield r.secretStorage.get(he);if(n===void 0)return e?yield r.resetKey():null;var i=ve(n);try{var s=je.createKeyFromArray(i);return yield r.cacheKey(s),s}finally{i.fill(0)}})()}rehydrateDeviceIfAvailable(){var e=this;return c(function*(){var r=yield e.getKey(!1);if(!r)return!1;var t;try{t=yield e.http.authedRequest(m.Get,"/dehydrated_device",void 0,void 0,{prefix:F})}catch(p){var n=p;if(n.errcode==="M_NOT_FOUND"||n.errcode==="M_UNRECOGNIZED")return e.logger.info("dehydration: No dehydrated device"),!1;throw n}e.logger.info("dehydration: dehydrated device found"),e.emit(v.RehydrationStarted);var i=yield e.olmMachine.dehydratedDevices().rehydrate(r,new D(t.device_id),JSON.stringify(t.device_data));e.logger.info("dehydration: device rehydrated");for(var s=void 0,a=0,u=0,d=ce("/dehydrated_device/$device_id/events",{$device_id:t.device_id});;){var l=yield e.http.authedRequest(m.Post,d,void 0,s?{next_batch:s}:{},{prefix:F});if(l.events.length===0)break;a+=l.events.length,s=l.next_batch;var g=yield i.receiveEvents(JSON.stringify(l.events));u+=g.length,e.emit(v.RehydrationProgress,u,a)}return e.logger.info("dehydration: received ".concat(u," room keys from ").concat(a," to-device events")),e.emit(v.RehydrationCompleted),!0})()}createAndUploadDehydratedDevice(){var e=this;return c(function*(){var r=yield e.getKey(!0),t=yield e.olmMachine.dehydratedDevices().create();e.emit(v.DehydratedDeviceCreated);var n=yield t.keysForUpload("Dehydrated device",r);yield e.outgoingRequestProcessor.makeOutgoingRequest(n),e.emit(v.DehydratedDeviceUploaded),e.logger.info("dehydration: uploaded device")})()}scheduleDeviceDehydration(){var e=this;return c(function*(){e.stop(),yield e.createAndUploadDehydratedDevice(),e.intervalId=setInterval(()=>{e.createAndUploadDehydratedDevice().catch(r=>{e.emit(v.DehydratedDeviceRotationError,r.message),e.logger.error("Error creating dehydrated device:",r)})},ut)})()}stop(){this.intervalId&&(clearInterval(this.intervalId),this.intervalId=void 0)}delete(){var e=this;return c(function*(){e.stop();try{yield e.http.authedRequest(m.Delete,"/dehydrated_device",void 0,{},{prefix:F})}catch(t){var r=t;if(r.errcode==="M_UNRECOGNIZED")return;if(r.errcode==="M_NOT_FOUND")return;throw t}})()}}function Ze(o,e){var r=Object.keys(o);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(o);e&&(t=t.filter(function(n){return Object.getOwnPropertyDescriptor(o,n).enumerable})),r.push.apply(r,t)}return r}function lt(o){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?Ze(Object(r),!0).forEach(function(t){y(o,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(o,Object.getOwnPropertyDescriptors(r)):Ze(Object(r)).forEach(function(t){Object.defineProperty(o,t,Object.getOwnPropertyDescriptor(r,t))})}return o}class gt{constructor(e,r,t){this.logger=e,this.olmMachine=r,this.http=t}makeOutgoingRequest(e,r){var t=this;return c(function*(){var n;if(e instanceof Ur)n=yield t.requestWithRetry(m.Post,"/_matrix/client/v3/keys/upload",{},e.body);else if(e instanceof Vr)n=yield t.requestWithRetry(m.Post,"/_matrix/client/v3/keys/query",{},e.body);else if(e instanceof Nr)n=yield t.requestWithRetry(m.Post,"/_matrix/client/v3/keys/claim",{},e.body);else if(e instanceof xr)n=yield t.requestWithRetry(m.Post,"/_matrix/client/v3/keys/signatures/upload",{},e.body);else if(e instanceof Ar)n=yield t.requestWithRetry(m.Put,"/_matrix/client/v3/room_keys/keys",{version:e.version},e.body);else if(e instanceof Lr)n=yield t.sendToDeviceRequest(e);else if(e instanceof Fr){var i="/_matrix/client/v3/rooms/".concat(encodeURIComponent(e.room_id),"/send/")+"".concat(encodeURIComponent(e.event_type),"/").concat(encodeURIComponent(e.txn_id));n=yield t.requestWithRetry(m.Put,i,{},e.body)}else if(e instanceof jr){yield t.makeRequestWithUIA(m.Post,"/_matrix/client/v3/keys/device_signing/upload",{},e.body,r);return}else if(e instanceof Gr){var s=F+"/dehydrated_device";yield t.rawJsonRequest(m.Put,s,{},e.body);return}else t.logger.warn("Unsupported outgoing message",Object.getPrototypeOf(e)),n="";if(e.id)try{yield M(t.logger,"Mark Request as sent ".concat(e.type),c(function*(){yield t.olmMachine.markRequestAsSent(e.id,e.type,n)}))}catch(a){if(a instanceof Error&&(a.message==="Attempt to use a moved value"||a.message==="null pointer passed to rust"))t.logger.debug("Ignoring error '".concat(a.message,"': client is likely shutting down"));else throw a}else t.logger.trace("Outgoing request type:".concat(e.type," does not have an ID"))})()}sendToDeviceRequest(e){var r=this;return c(function*(){var t=JSON.parse(e.body),n=[];for(var[i,s]of Object.entries(t.messages))for(var[a,u]of Object.entries(s))n.push("".concat(i,"/").concat(a," (msgid ").concat(u[Cr],")"));r.logger.info("Sending batch of to-device messages. type=".concat(e.event_type," txnid=").concat(e.txn_id),n);var d="/_matrix/client/v3/sendToDevice/".concat(encodeURIComponent(e.event_type),"/")+encodeURIComponent(e.txn_id);return yield r.requestWithRetry(m.Put,d,{},e.body)})()}makeRequestWithUIA(e,r,t,n,i){var s=this;return c(function*(){if(!i)return yield s.requestWithRetry(e,r,t,n);var a=JSON.parse(n),u=(function(){var l=c(function*(g){var p=lt({},a);g!==null&&(p.auth=g);var h=yield s.requestWithRetry(e,r,t,JSON.stringify(p));return JSON.parse(h)});return function(p){return l.apply(this,arguments)}})(),d=yield i(u);return JSON.stringify(d)})()}requestWithRetry(e,r,t,n){var i=this;return c(function*(){for(var s=0;;)try{return yield i.rawJsonRequest(e,r,t,n)}catch(u){s++;var a=Ir(u,s,!0);if(a<0)throw u;yield P(a)}})()}rawJsonRequest(e,r,t,n){var i=this;return c(function*(){var s={json:!1,headers:{"Content-Type":"application/json",Accept:"application/json"},prefix:"",localTimeoutMs:6e4};return yield i.http.authedRequest(e,r,t,n,s)})()}}class yt{constructor(e,r){this.olmMachine=e,this.outgoingRequestProcessor=r,y(this,"currentClaimPromise",void 0),y(this,"stopped",!1),this.currentClaimPromise=Promise.resolve()}stop(){this.stopped=!0}ensureSessionsForUsers(e,r){var t=this.currentClaimPromise.catch(()=>{}).then(()=>this.ensureSessionsForUsersInner(e,r));return this.currentClaimPromise=t,t}ensureSessionsForUsersInner(e,r){var t=this;return c(function*(){if(t.stopped)throw new Error("Cannot ensure Olm sessions: shutting down");e.info("Checking for missing Olm sessions");var n=yield t.olmMachine.getMissingSessions(r.map(i=>i.clone()));n&&(e.info("Making /keys/claim request"),yield t.outgoingRequestProcessor.makeOutgoingRequest(n)),e.info("Olm sessions prepared")})()}}function ht(o,e){var r=new Map;for(var[t,n]of o.keys.entries())r.set(t.toString(),n.toBase64());var i=ne.Unverified;o.isBlacklisted()?i=ne.Blocked:o.isVerified()&&(i=ne.Verified);var s=new Map,a=o.signatures.get(e);if(a){var u=new Map;for(var[d,l]of a.entries())l.isValid()&&l.signature&&u.set(d,l.signature.toBase64());s.set(e.toString(),u)}var g=o.algorithms,p=new Set;return g.forEach(h=>{switch(h){case G.MegolmV1AesSha2:p.add("m.megolm.v1.aes-sha2");break;case G.OlmV1Curve25519AesSha2:default:p.add("m.olm.v1.curve25519-aes-sha2");break}}),new ur({deviceId:o.deviceId.toString(),userId:e.toString(),keys:r,algorithms:Array.from(p),verified:i,signatures:s,displayName:o.displayName,dehydrated:o.isDehydrated})}function pt(o){return new Map(Object.entries(o).map(e=>{var[r,t]=e;return[r,vt(t)]}))}function vt(o){var e,r=new Map(Object.entries(o.keys)),t=(e=o.unsigned)===null||e===void 0?void 0:e.device_display_name,n=new Map;if(o.signatures)for(var i in o.signatures)n.set(i,new Map(Object.entries(o.signatures[i])));return new ur({deviceId:o.device_id,userId:o.user_id,keys:r,algorithms:o.algorithms,verified:ne.Unverified,signatures:n,displayName:t})}class ft{constructor(e,r,t,n){this.logger=e,this.olmMachine=r,this.outgoingRequestProcessor=t,this.secretStorage=n}bootstrapCrossSigning(e){var r=this;return c(function*(){if(e.setupNewCrossSigning){yield r.resetCrossSigning(e.authUploadDeviceSigningKeys);return}var t=yield r.olmMachine.crossSigningStatus(),n=yield r.secretStorage.get("m.cross_signing.master"),i=yield r.secretStorage.get("m.cross_signing.self_signing"),s=yield r.secretStorage.get("m.cross_signing.user_signing"),a=!!(n&&i&&s),u=t.hasMaster&&t.hasUserSigning&&t.hasSelfSigning;if(r.logger.debug("bootstrapCrossSigning: starting",{setupNewCrossSigning:e.setupNewCrossSigning,olmDeviceHasMaster:t.hasMaster,olmDeviceHasUserSigning:t.hasUserSigning,olmDeviceHasSelfSigning:t.hasSelfSigning,privateKeysInSecretStorage:a}),u)(yield r.secretStorage.hasKey())?a?r.logger.debug("bootstrapCrossSigning: Olm device has private keys and they are saved in secret storage; doing nothing"):(r.logger.debug("bootstrapCrossSigning: Olm device has private keys: exporting to secret storage"),yield r.exportCrossSigningKeysToStorage()):r.logger.warn("bootstrapCrossSigning: Olm device has private keys, but secret storage is not yet set up; doing nothing for now.");else if(a){r.logger.debug("bootstrapCrossSigning: Cross-signing private keys not found locally, but they are available in secret storage, reading storage and caching locally");var d=yield r.olmMachine.importCrossSigningKeys(n,i,s);if(!d.hasMaster||!d.hasSelfSigning||!d.hasUserSigning)throw new Error("importCrossSigningKeys failed to import the keys");var l=yield r.olmMachine.getDevice(r.olmMachine.userId,r.olmMachine.deviceId);try{var g=yield l.verify();yield r.outgoingRequestProcessor.makeOutgoingRequest(g)}finally{l.free()}}else r.logger.debug("bootstrapCrossSigning: Cross-signing private keys not found locally or in secret storage, creating new keys"),yield r.resetCrossSigning(e.authUploadDeviceSigningKeys);r.logger.debug("bootstrapCrossSigning: complete")})()}resetCrossSigning(e){var r=this;return c(function*(){var t=yield r.olmMachine.bootstrapCrossSigning(!0);(yield r.secretStorage.hasKey())?(r.logger.debug("resetCrossSigning: exporting private keys to secret storage"),yield r.exportCrossSigningKeysToStorage()):r.logger.warn("resetCrossSigning: Secret storage is not yet set up; not exporting keys to secret storage yet."),r.logger.debug("resetCrossSigning: publishing public keys to server");for(var n of[t.uploadKeysRequest,t.uploadSigningKeysRequest,t.uploadSignaturesRequest])n&&(yield r.outgoingRequestProcessor.makeOutgoingRequest(n,e))})()}exportCrossSigningKeysToStorage(){var e=this;return c(function*(){var r=yield e.olmMachine.exportCrossSigningKeys();r!=null&&r.masterKey?yield e.secretStorage.store("m.cross_signing.master",r.masterKey):e.logger.error("Cannot export MSK to secret storage, private key unknown"),r!=null&&r.self_signing_key?yield e.secretStorage.store("m.cross_signing.self_signing",r.self_signing_key):e.logger.error("Cannot export SSK to secret storage, private key unknown"),r!=null&&r.userSigningKey?yield e.secretStorage.store("m.cross_signing.user_signing",r.userSigningKey):e.logger.error("Cannot export USK to secret storage, private key unknown")})()}}function Xe(o){return Se.apply(this,arguments)}function Se(){return Se=c(function*(o){return mt(o,["m.cross_signing.master","m.cross_signing.user_signing","m.cross_signing.self_signing"])}),Se.apply(this,arguments)}function mt(o,e){return _e.apply(this,arguments)}function _e(){return _e=c(function*(o,e){var r=yield o.getDefaultKeyId();if(!r)return!1;for(var t of e){var n=(yield o.isStored(t))||{};if(!(r in n))return!1}return!0}),_e.apply(this,arguments)}var K=(function(o){return o.Sas="m.sas.v1",o.ShowQrCode="m.qr_code.show.v1",o.ScanQrCode="m.qr_code.scan.v1",o.Reciprocate="m.reciprocate.v1",o})({});class kt extends W{constructor(e,r,t,n,i){super(),this.logger=e,this.olmMachine=r,this.inner=t,this.outgoingRequestProcessor=n,this.supportedVerificationMethods=i,y(this,"reEmitter",void 0),y(this,"_accepting",!1),y(this,"_cancelling",!1),y(this,"_verifier",void 0),this.reEmitter=new dr(this);var s=new WeakRef(this);t.registerChangesCallback(c(function*(){var a;return(a=s.deref())===null||a===void 0?void 0:a.onChange()}))}onChange(){var e=this.inner.getVerification();e instanceof Ge?this._verifier===void 0||this._verifier instanceof er?this.setVerifier(new rr(e,this,this.outgoingRequestProcessor)):this._verifier instanceof rr&&this._verifier.replaceInner(e):e instanceof We&&this._verifier===void 0&&this.setVerifier(new er(e,this.outgoingRequestProcessor)),this.emit(L.Change)}setVerifier(e){this._verifier&&this.reEmitter.stopReEmitting(this._verifier,[L.Change]),this._verifier=e,this.reEmitter.reEmit(this._verifier,[L.Change])}get transactionId(){return this.inner.flowId}get roomId(){var e;return(e=this.inner.roomId)===null||e===void 0?void 0:e.toString()}get initiatedByMe(){return this.inner.weStarted()}get otherUserId(){return this.inner.otherUserId.toString()}get otherDeviceId(){var e;return(e=this.inner.otherDeviceId)===null||e===void 0?void 0:e.toString()}getOtherDevice(){var e=this;return c(function*(){var r=e.inner.otherDeviceId;if(r)return yield e.olmMachine.getDevice(e.inner.otherUserId,r,5)})()}get isSelfVerification(){return this.inner.isSelfVerification()}get phase(){var e=this.inner.phase();switch(e){case O.Created:case O.Requested:return k.Requested;case O.Ready:return this._accepting?k.Requested:k.Ready;case O.Transitioned:if(!this._verifier)throw new Error("VerificationRequest: inner phase == Transitioned but no verifier!");return this._verifier.verificationPhase;case O.Done:return k.Done;case O.Cancelled:return k.Cancelled}throw new Error("Unknown verification phase ".concat(e))}get pending(){if(this.inner.isPassive())return!1;var e=this.phase;return e!==k.Done&&e!==k.Cancelled}get accepting(){return this._accepting}get declining(){return this._cancelling}get timeout(){return this.inner.timeRemainingMillis()}get methods(){throw new Error("not implemented")}get chosenMethod(){if(this.phase!==k.Started)return null;var e=this.inner.getVerification();return e instanceof Ge?K.Sas:e instanceof We?K.Reciprocate:null}otherPartySupportsMethod(e){var r=this.inner.theirSupportedMethods;if(r===void 0)return!1;var t=mr[e];return r.some(n=>n===t)}accept(){var e=this;return c(function*(){if(e.inner.phase()!==O.Requested||e._accepting)throw new Error("Cannot accept a verification request in phase ".concat(e.phase));e._accepting=!0;try{var r=e.inner.acceptWithMethods(e.supportedVerificationMethods.map(oe));r&&(yield e.outgoingRequestProcessor.makeOutgoingRequest(r))}finally{e._accepting=!1}e.emit(L.Change)})()}cancel(e){var r=this;return c(function*(){if(!r._cancelling){r.logger.info("Cancelling verification request with params:",e),r._cancelling=!0;try{var t=r.inner.cancel();t&&(yield r.outgoingRequestProcessor.makeOutgoingRequest(t))}finally{r._cancelling=!1}}})()}beginKeyVerification(e,r){throw new Error("not implemented")}startVerification(e){var r=this;return c(function*(){if(e!==K.Sas)throw new Error("Unsupported verification method ".concat(e));if(!(yield r.getOtherDevice()))throw new Error("startVerification(): other device is unknown");var t=yield r.inner.startSas();if(t){var[,n]=t;yield r.outgoingRequestProcessor.makeOutgoingRequest(n)}if(!r._verifier)throw new Error("Still no verifier after startSas() call");return r._verifier})()}scanQRCode(e){var r=this;return c(function*(){var t=Wr.fromBytes(e),n=yield r.inner.scanQrCode(t);if(!r._verifier)throw new Error("Still no verifier after scanQrCode() call");var i=n.reciprocate();return i&&(yield r.outgoingRequestProcessor.makeOutgoingRequest(i)),r._verifier})()}get verifier(){return this.phase===k.Started?this._verifier:void 0}getQRCodeBytes(){throw new Error("getQRCodeBytes() unsupported in Rust Crypto; use generateQRCode() instead.")}generateQRCode(){var e=this;return c(function*(){if(!(yield e.getOtherDevice()))throw new Error("generateQRCode(): other device is unknown");var r=yield e.inner.generateQrCode();if(r)return r.toBytes()})()}get cancellationCode(){var e,r;return(e=(r=this.inner.cancelInfo)===null||r===void 0?void 0:r.cancelCode())!==null&&e!==void 0?e:null}get cancellingUserId(){var e=this.inner.cancelInfo;if(e)return e.cancelledbyUs()?this.olmMachine.userId.toString():this.inner.otherUserId.toString()}}class fr extends W{constructor(e,r){super(),this.inner=e,this.outgoingRequestProcessor=r,y(this,"completionDeferred",void 0),this.completionDeferred=Promise.withResolvers();var t=new WeakRef(this);e.registerChangesCallback(c(function*(){var n;return(n=t.deref())===null||n===void 0?void 0:n.onChange()})),this.completionDeferred.promise.catch(()=>null)}onChange(){if(this.inner.isDone())this.completionDeferred.resolve(void 0);else if(this.inner.isCancelled()){var e=this.inner.cancelInfo();this.completionDeferred.reject(new Error("Verification cancelled by ".concat(e.cancelledbyUs()?"us":"them"," with code ").concat(e.cancelCode(),": ").concat(e.reason())))}this.emit(L.Change)}get hasBeenCancelled(){return this.inner.isCancelled()}get userId(){return this.inner.otherUserId.toString()}cancel(e){var r=this.inner.cancel();r&&this.outgoingRequestProcessor.makeOutgoingRequest(r)}getShowSasCallbacks(){return null}getReciprocateQrCodeCallbacks(){return null}}class er extends fr{constructor(e,r){super(e,r),y(this,"callbacks",null)}onChange(){this.callbacks===null&&this.inner.hasBeenScanned()&&(this.callbacks={confirm:()=>{this.confirmScanning()},cancel:()=>this.cancel()}),super.onChange()}verify(){var e=this;return c(function*(){e.callbacks!==null&&e.emit(pr.ShowReciprocateQr,e.callbacks),yield e.completionDeferred.promise})()}get verificationPhase(){switch(this.inner.state()){case T.Created:return k.Ready;case T.Scanned:return k.Started;case T.Confirmed:return k.Started;case T.Reciprocated:return k.Started;case T.Done:return k.Done;case T.Cancelled:return k.Cancelled;default:throw new Error("Unknown qr code state ".concat(this.inner.state()))}}getReciprocateQrCodeCallbacks(){return this.callbacks}confirmScanning(){var e=this;return c(function*(){var r=e.inner.confirmScanning();r&&(yield e.outgoingRequestProcessor.makeOutgoingRequest(r))})()}}class rr extends fr{constructor(e,r,t){super(e,t),y(this,"callbacks",null)}verify(){var e=this;return c(function*(){yield e.sendAccept(),yield e.completionDeferred.promise})()}sendAccept(){var e=this;return c(function*(){var r=e.inner.accept();r&&(yield e.outgoingRequestProcessor.makeOutgoingRequest(r))})()}onChange(){var e=this;if(super.onChange(),this.callbacks===null){var r=this.inner.emoji(),t=this.inner.decimals();if(r===void 0&&t===void 0)return;var n={};r&&(n.emoji=r.map(i=>[i.symbol,i.description])),t&&(n.decimal=[t[0],t[1],t[2]]),this.callbacks={sas:n,confirm:(function(){var i=c(function*(){var a=yield e.inner.confirm();for(var u of a)yield e.outgoingRequestProcessor.makeOutgoingRequest(u)});function s(){return i.apply(this,arguments)}return s})(),mismatch:()=>{var i=this.inner.cancelWithCode("m.mismatched_sas");i&&this.outgoingRequestProcessor.makeOutgoingRequest(i)},cancel:()=>{var i=this.inner.cancelWithCode("m.user");i&&this.outgoingRequestProcessor.makeOutgoingRequest(i)}},this.emit(pr.ShowSas,this.callbacks)}}get verificationPhase(){return k.Started}getShowSasCallbacks(){return this.callbacks}replaceInner(e){if(this.inner!=e){this.inner=e;var r=new WeakRef(this);e.registerChangesCallback(c(function*(){var t;return(t=r.deref())===null||t===void 0?void 0:t.onChange()})),this.sendAccept(),this.onChange()}}}var mr={[K.Sas]:Z.SasV1,[K.ScanQrCode]:Z.QrCodeScanV1,[K.ShowQrCode]:Z.QrCodeShowV1,[K.Reciprocate]:Z.ReciprocateV1};function oe(o){var e=mr[o];if(e===void 0)throw new Error("Unknown verification method ".concat(o));return e}function St(o){switch(o.getType()){case w.KeyVerificationCancel:case w.KeyVerificationDone:case w.KeyVerificationMac:case w.KeyVerificationStart:case w.KeyVerificationKey:case w.KeyVerificationReady:case w.KeyVerificationAccept:return!0;case w.RoomMessage:return o.getContent().msgtype===lr.KeyVerificationRequest;default:return!1}}class _t extends W{constructor(e,r,t,n){super(),this.logger=e,this.olmMachine=r,this.http=t,this.outgoingRequestProcessor=n,y(this,"checkedForBackup",!1),y(this,"serverBackupInfo",void 0),y(this,"activeBackupVersion",null),y(this,"stopped",!1),y(this,"backupKeysLoopRunning",!1),y(this,"keyBackupCheckInProgress",null)}stop(){this.stopped=!0}getActiveBackupVersion(){var e=this;return c(function*(){return(yield e.olmMachine.isBackupEnabled())?e.activeBackupVersion:null})()}getServerBackupInfo(){var e=this;return c(function*(){return yield e.checkKeyBackupAndEnable(!1),e.serverBackupInfo})()}isKeyBackupTrusted(e){var r=this;return c(function*(){var t=yield r.olmMachine.verifyBackup(e),n=yield r.olmMachine.getBackupKeys(),i=n?.decryptionKey,s=!!i&&r.backupInfoMatchesBackupDecryptionKey(e,i);return{matchesDecryptionKey:s,trusted:t.trusted()}})()}checkKeyBackupAndEnable(e){return!e&&this.checkedForBackup?Promise.resolve(null):(this.keyBackupCheckInProgress||(this.keyBackupCheckInProgress=this.doCheckKeyBackup().finally(()=>{this.keyBackupCheckInProgress=null})),this.keyBackupCheckInProgress)}handleBackupSecretReceived(e){var r=this;return c(function*(){var t,n;try{n=yield r.requestKeyBackupVersion()}catch(a){return r.logger.warn("handleBackupSecretReceived: Error checking for latest key backup",a),!1}if(!((t=n)!==null&&t!==void 0&&t.version))return r.logger.warn("handleBackupSecretReceived: Received a backup decryption key, but there is no trusted server-side key backup"),!1;try{var i=V.fromBase64(e),s=r.backupInfoMatchesBackupDecryptionKey(n,i);return s?(r.logger.info("handleBackupSecretReceived: A valid backup decryption key has been received and stored in cache."),yield r.saveBackupDecryptionKey(i,n.version),!0):(r.logger.warn("handleBackupSecretReceived: Private decryption key does not match the public key of the current remote backup."),!1)}catch(a){r.logger.warn("handleBackupSecretReceived: Invalid backup decryption key",a)}return!1})()}saveBackupDecryptionKey(e,r){var t=this;return c(function*(){yield t.olmMachine.saveBackupDecryptionKey(e,r),t.emit(v.KeyBackupDecryptionKeyCached,r)})()}importRoomKeys(e,r){var t=this;return c(function*(){yield t.importRoomKeysAsJson(JSON.stringify(e),r)})()}importRoomKeysAsJson(e,r){var t=this;return c(function*(){yield t.olmMachine.importExportedRoomKeys(e,(n,i)=>{var s,a={total:Number(i),successes:Number(n),stage:A.LoadKeys,failures:0};r==null||(s=r.progressCallback)===null||s===void 0||s.call(r,a)})})()}importBackedUpRoomKeys(e,r,t){var n=this;return c(function*(){var i=new Map;for(var s of e){var a=new S(s.room_id);i.has(a)||i.set(a,new Map),i.get(a).set(s.session_id,s)}yield n.olmMachine.importBackedUpRoomKeys(i,(u,d,l)=>{var g,p={total:Number(d),successes:Number(u),stage:A.LoadKeys,failures:Number(l)};t==null||(g=t.progressCallback)===null||g===void 0||g.call(t,p)},r)})()}doCheckKeyBackup(){var e=this;return c(function*(){e.logger.debug("Checking key backup status...");var r;try{r=yield e.requestKeyBackupVersion()}catch(i){return e.logger.warn("Error checking for active key backup",i),e.serverBackupInfo=void 0,null}e.checkedForBackup=!0,r&&!r.version&&(e.logger.warn("active backup lacks a useful 'version'; ignoring it"),r=void 0),e.serverBackupInfo=r;var t=yield e.getActiveBackupVersion();if(!r)return t!==null?(e.logger.debug("No key backup present on server: disabling key backup"),yield e.disableKeyBackup()):e.logger.debug("No key backup present on server: not enabling key backup"),null;var n=yield e.isKeyBackupTrusted(r);return!n.matchesDecryptionKey&&!n.trusted?t!==null?(e.logger.debug("Key backup present on server but not trusted: disabling key backup"),yield e.disableKeyBackup()):e.logger.debug("Key backup present on server but not trusted: not enabling key backup"):t===null?(e.logger.debug("Found usable key backup v".concat(r.version,": enabling key backups")),yield e.enableKeyBackup(r)):t!==r.version?(e.logger.debug("On backup version ".concat(t," but found version ").concat(r.version,": switching.")),yield e.disableKeyBackup(),yield e.enableKeyBackup(r)):e.logger.debug("Backup version ".concat(r.version," still current")),{backupInfo:r,trustInfo:n}})()}enableKeyBackup(e){var r=this;return c(function*(){yield r.olmMachine.enableBackupV1(e.auth_data.public_key,e.version),r.activeBackupVersion=e.version,r.emit(v.KeyBackupStatus,!0),r.backupKeysLoop()})()}maybeUploadKey(){var e=this;return c(function*(){e.activeBackupVersion!=null&&e.backupKeysLoop()})()}disableKeyBackup(){var e=this;return c(function*(){yield e.olmMachine.disableBackup(),e.activeBackupVersion=null,e.emit(v.KeyBackupStatus,!1)})()}backupKeysLoop(){var e=arguments,r=this;return c(function*(){var t=e.length>0&&e[0]!==void 0?e[0]:1e4;if(r.backupKeysLoopRunning){r.logger.debug("Backup loop already running");return}r.backupKeysLoopRunning=!0,r.logger.debug("Backup: Starting keys upload loop for backup version:".concat(r.activeBackupVersion,"."));var n=Math.random()*t;yield P(n);try{for(var i=0,s=null,a=!0;!r.stopped;){var u=void 0;try{u=yield M(r.logger,"BackupRoomKeys: Get keys to backup from rust crypto-sdk",c(function*(){return yield r.olmMachine.backupRoomKeys()}))}catch(h){r.logger.error("Backup: Failed to get keys to backup from rust crypto-sdk",h)}if(!u||r.stopped||!r.activeBackupVersion){r.logger.debug("Backup: Ending loop for version ".concat(r.activeBackupVersion,".")),u||r.emit(v.KeyBackupSessionsRemaining,0);return}try{if(yield r.outgoingRequestProcessor.makeOutgoingRequest(u),i=0,r.stopped)break;if(!a&&s===null)try{var d=yield r.olmMachine.roomKeyCounts();s=d.total-d.backedUp}catch(h){r.logger.error("Backup: Failed to get key counts from rust crypto-sdk",h)}if(s!==null){r.emit(v.KeyBackupSessionsRemaining,s);var l=r.keysCountInBatch(u);s=Math.max(s-l,0)}}catch(h){if(i++,r.logger.error("Backup: Error processing backup request for rust crypto-sdk",h),h instanceof gr){var g=h.data.errcode;if(g=="M_NOT_FOUND"||g=="M_WRONG_ROOM_KEYS_VERSION"){r.logger.debug("Backup: Failed to upload keys to current vesion: ".concat(g,"."));try{yield r.disableKeyBackup()}catch(E){r.logger.error("Backup: An error occurred while disabling key backup:",E)}r.emit(v.KeyBackupFailed,h.data.errcode),r.backupKeysLoopRunning=!1,r.checkKeyBackupAndEnable(!0);return}else if(h.isRateLimitError())try{var p=h.getRetryAfterMs();if(p&&p>0){yield P(p);continue}}catch(E){r.logger.warn("Backup: An error occurred while retrieving a rate-limit retry delay",E)}}yield P(1e3*Math.pow(2,Math.min(i-1,4)))}a=!1}}finally{r.backupKeysLoopRunning=!1}})()}keysCountInBatch(e){var r=JSON.parse(e.body);return tr(r)}requestKeyBackupVersion(e){var r=this;return c(function*(){return yield kr(r.http,e)})()}setupKeyBackup(e){var r=this;return c(function*(){yield r.deleteAllKeyBackupVersions();var t=V.createRandomKey(),n=t.megolmV1PublicKey,i={public_key:n.publicKeyBase64};yield e(i);var s=yield r.http.authedRequest(m.Post,"/room_keys/version",void 0,{algorithm:n.algorithm,auth_data:i},{prefix:j.V3});return yield r.saveBackupDecryptionKey(t,s.version),{version:s.version,algorithm:n.algorithm,authData:i,decryptionKey:t}})()}deleteAllKeyBackupVersions(){var e=this;return c(function*(){for(var r,t,n=(r=(t=yield e.requestKeyBackupVersion())===null||t===void 0?void 0:t.version)!==null&&r!==void 0?r:null;n!=null;){var i,s;yield e.deleteKeyBackupVersion(n),n=(i=(s=yield e.requestKeyBackupVersion())===null||s===void 0?void 0:s.version)!==null&&i!==void 0?i:null}})()}deleteKeyBackupVersion(e){var r=this;return c(function*(){r.logger.debug("deleteKeyBackupVersion v:".concat(e));var t=ce("/room_keys/version/$version",{$version:e});yield r.http.authedRequest(m.Delete,t,void 0,void 0,{prefix:j.V3}),r.activeBackupVersion===e&&(r.serverBackupInfo=null,yield r.disableKeyBackup())})()}createBackupDecryptor(e){return new bt(this.logger,e)}restoreKeyBackup(e,r,t){var n=this;return c(function*(){var i=yield n.downloadKeyBackup(e);return n.importKeyBackup(i,e,r,t)})()}downloadKeyBackup(e){return this.http.authedRequest(m.Get,"/room_keys/keys",{version:e},void 0,{prefix:j.V3})}importKeyBackup(e,r,t,n){var i=this;return c(function*(){var s,a=200,u=tr(e),d=0,l=0;n==null||(s=n.progressCallback)===null||s===void 0||s.call(n,{total:u,successes:d,stage:A.LoadKeys,failures:l});var g=(function(){var br=c(function*(ue){var H,Q=[],wr=function*(Ve){var Kr=yield t.decryptSessions(ue.get(Ve));Kr.forEach(Ne=>{Ne.room_id=Ve,Q.push(Ne)})};for(var Rr of ue.keys())yield*wr(Rr);try{yield i.importBackedUpRoomKeys(Q,r),d+=Q.length}catch(Ue){l+=Q.length,i.logger.error("Error importing keys from backup",Ue)}n==null||(H=n.progressCallback)===null||H===void 0||H.call(n,{total:u,successes:d,stage:A.LoadKeys,failures:l})});return function(H){return br.apply(this,arguments)}})(),p=0,h=new Map;for(var[E,C]of Object.entries(e.rooms))if(C.sessions){h.set(E,{});for(var[N,Sr]of Object.entries(C.sessions)){var _r=h.get(E);_r[N]=Sr,p+=1,p>=a&&(yield g(h),h=new Map,h.set(E,{}),p=0)}}return p>0&&(yield g(h)),{total:u,imported:d}})()}backupInfoMatchesBackupDecryptionKey(e,r){var t;return e.algorithm!=="m.megolm_backup.v1.curve25519-aes-sha2"?(this.logger.warn("backupMatchesPrivateKey: Unsupported backup algorithm",e.algorithm),!1):((t=e.auth_data)===null||t===void 0?void 0:t.public_key)===r.megolmV1PublicKey.publicKeyBase64}}class bt{constructor(e,r){this.logger=e,y(this,"decryptionKey",void 0),y(this,"sourceTrusted",void 0),this.decryptionKey=r,this.sourceTrusted=!1}decryptSessions(e){var r=this;return c(function*(){var t=[];for(var[n,i]of Object.entries(e))try{var s=JSON.parse(r.decryptionKey.decryptV1(i.session_data.ephemeral,i.session_data.mac,i.session_data.ciphertext));s.session_id=n,t.push(s)}catch(a){r.logger.debug("Failed to decrypt megolm session from backup",a,i)}return t})()}free(){this.decryptionKey.free()}}function kr(o,e){return be.apply(this,arguments)}function be(){return be=c(function*(o,e){try{var r=e?ce("/room_keys/version/$version",{$version:e}):"/room_keys/version";return yield o.authedRequest(m.Get,r,void 0,void 0,{prefix:j.V3})}catch(t){if(t.errcode==="M_NOT_FOUND")return null;throw t}}),be.apply(this,arguments)}function pe(o,e){var r=e.auth_data;return r.public_key===o.megolmV1PublicKey.publicKeyBase64}function tr(o){var e=0;for(var{sessions:r}of Object.values(o.rooms))e+=Object.keys(r).length;return e}class wt{constructor(e,r,t){this.logger=e,this.olmMachine=r,this.outgoingRequestProcessor=t,y(this,"stopped",!1),y(this,"outgoingRequestLoopRunning",!1),y(this,"nextLoopDeferred",void 0)}stop(){this.stopped=!0}doProcessOutgoingRequests(){this.nextLoopDeferred||(this.nextLoopDeferred=Promise.withResolvers());var e=this.nextLoopDeferred.promise;return this.outgoingRequestLoopRunning||this.outgoingRequestLoop().catch(r=>{this.logger.error("Uncaught error in outgoing request loop",r)}),e}outgoingRequestLoop(){var e=this;return c(function*(){if(e.outgoingRequestLoopRunning)throw new Error("Cannot run two outgoing request loops");e.outgoingRequestLoopRunning=!0;try{for(;!e.stopped&&e.nextLoopDeferred;){var r=e.nextLoopDeferred;e.nextLoopDeferred=void 0,yield e.processOutgoingRequests().then(r.resolve,r.reject)}}finally{e.outgoingRequestLoopRunning=!1}e.nextLoopDeferred&&e.nextLoopDeferred.reject(new Error("OutgoingRequestsManager was stopped"))})()}processOutgoingRequests(){var e=this;return c(function*(){if(!e.stopped){var r=yield e.olmMachine.outgoingRequests(),t=0,n=function*(u){if(e.stopped)return{v:void 0};try{yield M(e.logger,"Make outgoing request ".concat(u.type),c(function*(){yield e.outgoingRequestProcessor.makeOutgoingRequest(u),t++}))}catch(d){e.logger.error("Failed to process outgoing request ".concat(u.type,": ").concat(d))}},i;for(var s of r)if(i=yield*n(s),i)return i.v;t>0&&e.doProcessOutgoingRequests().catch(a=>{e.logger.warn("processOutgoingRequests: Error re-checking outgoing requests",a)})}})()}}var ee=5e3,I=(function(o){return o.MISSING_DECRYPTION_KEY="MISSING_DECRYPTION_KEY",o.NETWORK_ERROR="NETWORK_ERROR",o.STOPPED="STOPPED",o})(I||{});class x extends Error{constructor(e){super("Failed to get key from backup: ".concat(e)),this.code=e,this.name="KeyDownloadError"}}class nr extends Error{constructor(e){super("Failed to get key from backup: rate limited"),this.retryMillis=e,this.name="KeyDownloadRateLimitError"}}class Rt{constructor(e,r,t,n){this.olmMachine=r,this.http=t,this.backupManager=n,y(this,"stopped",!1),y(this,"configuration",null),y(this,"sessionLastCheckAttemptedTime",new Map),y(this,"logger",void 0),y(this,"downloadLoopRunning",!1),y(this,"queuedRequests",[]),y(this,"hasConfigurationProblem",!1),y(this,"currentBackupVersionCheck",null),y(this,"onBackupStatusChanged",()=>{this.hasConfigurationProblem=!1,this.configuration=null,this.getOrCreateBackupConfiguration().then(i=>{i&&this.downloadKeysLoop()})}),this.logger=e.getChild("[PerSessionKeyBackupDownloader]"),n.on(v.KeyBackupStatus,this.onBackupStatusChanged),n.on(v.KeyBackupFailed,this.onBackupStatusChanged),n.on(v.KeyBackupDecryptionKeyCached,this.onBackupStatusChanged)}isKeyBackupDownloadConfigured(){return this.configuration!==null}getServerBackupInfo(){var e=this;return c(function*(){return yield e.backupManager.getServerBackupInfo()})()}onDecryptionKeyMissingError(e,r){if(this.isAlreadyInQueue(e,r)){this.logger.trace("Not checking key backup for session ".concat(r," as it is already queued"));return}if(this.wasRequestedRecently(r)){this.logger.trace("Not checking key backup for session ".concat(r," as it was already requested recently"));return}this.queuedRequests.push({roomId:e,megolmSessionId:r}),this.downloadKeysLoop()}stop(){this.stopped=!0,this.backupManager.off(v.KeyBackupStatus,this.onBackupStatusChanged),this.backupManager.off(v.KeyBackupFailed,this.onBackupStatusChanged),this.backupManager.off(v.KeyBackupDecryptionKeyCached,this.onBackupStatusChanged)}isAlreadyInQueue(e,r){return this.queuedRequests.some(t=>t.roomId==e&&t.megolmSessionId==r)}markAsNotFoundInBackup(e){var r=Date.now();this.sessionLastCheckAttemptedTime.set(e,r),this.sessionLastCheckAttemptedTime.size>100&&(this.sessionLastCheckAttemptedTime=new Map(Array.from(this.sessionLastCheckAttemptedTime).filter((t,n)=>Math.max(r-n,0)<ee)))}wasRequestedRecently(e){var r=this.sessionLastCheckAttemptedTime.get(e);return r?Math.max(Date.now()-r,0)<ee:!1}getBackupDecryptionKey(){var e=this;return c(function*(){try{return yield e.olmMachine.getBackupKeys()}catch{return null}})()}requestRoomKeyFromBackup(e,r,t){var n=this;return c(function*(){var i=ce("/room_keys/keys/$roomId/$sessionId",{$roomId:r,$sessionId:t});return yield n.http.authedRequest(m.Get,i,{version:e},void 0,{prefix:j.V3})})()}downloadKeysLoop(){var e=this;return c(function*(){if(!e.downloadLoopRunning&&!e.hasConfigurationProblem){e.downloadLoopRunning=!0;try{for(;e.queuedRequests.length>0;){var r=e.queuedRequests[0];try{var t=yield e.getOrCreateBackupConfiguration();if(!t){e.downloadLoopRunning=!1;return}var n=yield e.queryKeyBackup(r.roomId,r.megolmSessionId,t);if(e.stopped)return;try{yield e.decryptAndImport(r,n,t)}catch(i){e.logger.error("Error while decrypting and importing key backup for session ".concat(r.megolmSessionId),i)}e.queuedRequests.shift()}catch(i){if(i instanceof x)switch(i.code){case I.MISSING_DECRYPTION_KEY:e.markAsNotFoundInBackup(r.megolmSessionId),e.queuedRequests.shift();break;case I.NETWORK_ERROR:yield P(ee);break;case I.STOPPED:e.downloadLoopRunning=!1;return}else i instanceof nr&&(yield P(i.retryMillis))}}}finally{e.downloadLoopRunning=!1}}})()}queryKeyBackup(e,r,t){var n=this;return c(function*(){if(n.logger.debug("Checking key backup for session ".concat(r)),n.stopped)throw new x(I.STOPPED);try{var i=yield n.requestRoomKeyFromBackup(t.backupVersion,e,r);return n.logger.debug("Got key from backup for sessionId:".concat(r)),i}catch(d){if(n.stopped)throw new x(I.STOPPED);if(n.logger.info("No luck requesting key backup for session ".concat(r,": ").concat(d)),d instanceof gr){var s=d.data.errcode;if(s=="M_NOT_FOUND")throw new x(I.MISSING_DECRYPTION_KEY);if(d.isRateLimitError()){var a;try{var u;a=(u=d.getRetryAfterMs())!==null&&u!==void 0?u:void 0}catch(l){n.logger.warn("Error while retrieving a rate-limit retry delay",l)}throw a&&a>0&&n.logger.info("Rate limited by server, waiting ".concat(a,"ms")),new nr(a??ee)}}throw new x(I.NETWORK_ERROR)}})()}decryptAndImport(e,r,t){var n=this;return c(function*(){var i={[e.megolmSessionId]:r},s=yield t.decryptor.decryptSessions(i);for(var a of s)a.room_id=e.roomId;yield n.backupManager.importBackedUpRoomKeys(s,t.backupVersion)})()}getOrCreateBackupConfiguration(){var e=this;return c(function*(){if(e.configuration)return e.configuration;if(e.hasConfigurationProblem)return null;if(e.currentBackupVersionCheck!=null)return e.logger.debug("Already checking server version, use current promise"),yield e.currentBackupVersionCheck;e.currentBackupVersionCheck=e.internalCheckFromServer();try{return yield e.currentBackupVersionCheck}finally{e.currentBackupVersionCheck=null}})()}internalCheckFromServer(){var e=this;return c(function*(){var r,t,n,i=null;try{i=yield e.backupManager.getServerBackupInfo()}catch(g){return e.logger.debug("Backup: error while checking server version: ".concat(g)),e.hasConfigurationProblem=!0,null}if(e.logger.debug("Got current backup version from server: ".concat((r=i)===null||r===void 0?void 0:r.version)),((t=i)===null||t===void 0?void 0:t.algorithm)!="m.megolm_backup.v1.curve25519-aes-sha2"){var s;return e.logger.info("Unsupported algorithm ".concat((s=i)===null||s===void 0?void 0:s.algorithm)),e.hasConfigurationProblem=!0,null}if(!((n=i)!==null&&n!==void 0&&n.version))return e.logger.info("No current key backup"),e.hasConfigurationProblem=!0,null;var a=yield e.backupManager.getActiveBackupVersion();if(a==null||i.version!=a)return e.logger.info("The current backup version on the server (".concat(i.version,") is not trusted. Version we are currently backing up to: ").concat(a)),e.hasConfigurationProblem=!0,null;var u=yield e.getBackupDecryptionKey();if(!(u!=null&&u.decryptionKey))return e.logger.debug("Not checking key backup for session (no decryption key)"),e.hasConfigurationProblem=!0,null;if(a!=u.backupVersion)return e.logger.debug("Version for which we have a decryption key (".concat(u.backupVersion,") doesn't match the version we are backing up to (").concat(a,")")),e.hasConfigurationProblem=!0,null;var d=i.auth_data;if(d.public_key!=u.decryptionKey.megolmV1PublicKey.publicKeyBase64)return e.logger.debug("Key backup on server does not match our decryption key"),e.hasConfigurationProblem=!0,null;var l=e.backupManager.createBackupDecryptor(u.decryptionKey);return e.hasConfigurationProblem=!1,e.configuration={decryptor:l,backupVersion:a},e.configuration})()}}function Kt(o,e){if(!o.private_key_salt||!o.private_key_iterations)throw new Error("Salt and/or iterations not found: this backup cannot be restored with a passphrase");return vr(e,o.private_key_salt,o.private_key_iterations,o.private_key_bits)}function ir(o,e){var r=Object.keys(o);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(o);e&&(t=t.filter(function(n){return Object.getOwnPropertyDescriptor(o,n).enumerable})),r.push.apply(r,t)}return r}function or(o){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?ir(Object(r),!0).forEach(function(t){y(o,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(o,Object.getOwnPropertyDescriptors(r)):ir(Object(r)).forEach(function(t){Object.defineProperty(o,t,Object.getOwnPropertyDescriptor(r,t))})}return o}var sr=[K.Sas,K.ScanQrCode,K.ShowQrCode,K.Reciprocate];class Et extends W{constructor(e,r,t,n,i,s,a){var u=arguments.length>7&&arguments[7]!==void 0?arguments[7]:!1;super(),this.logger=e,this.olmMachine=r,this.http=t,this.userId=n,this.secretStorage=s,this.cryptoCallbacks=a,this.enableEncryptedStateEvents=u,y(this,"RECOVERY_KEY_DERIVATION_ITERATIONS",5e5),y(this,"_trustCrossSignedDevices",!0),y(this,"deviceIsolationMode",new Dr(!1)),y(this,"stopped",!1),y(this,"roomEncryptors",{}),y(this,"roomsPendingKeyBundles",new Map),y(this,"eventDecryptor",void 0),y(this,"keyClaimManager",void 0),y(this,"outgoingRequestProcessor",void 0),y(this,"crossSigningIdentity",void 0),y(this,"backupManager",void 0),y(this,"outgoingRequestsManager",void 0),y(this,"perSessionBackupDownloader",void 0),y(this,"dehydratedDeviceManager",void 0),y(this,"reemitter",new dr(this)),y(this,"globalBlacklistUnverifiedDevices",!1),y(this,"_supportedVerificationMethods",sr),this.outgoingRequestProcessor=new gt(e,r,t),this.outgoingRequestsManager=new wt(this.logger,r,this.outgoingRequestProcessor),this.keyClaimManager=new yt(r,this.outgoingRequestProcessor),this.backupManager=new _t(e,r,t,this.outgoingRequestProcessor),this.perSessionBackupDownloader=new Rt(this.logger,this.olmMachine,this.http,this.backupManager),this.dehydratedDeviceManager=new dt(this.logger,r,t,this.outgoingRequestProcessor,s),this.eventDecryptor=new Mt(this.logger,r,this.perSessionBackupDownloader),this.reemitter.reEmit(this.backupManager,[v.KeyBackupStatus,v.KeyBackupSessionsRemaining,v.KeyBackupFailed,v.KeyBackupDecryptionKeyCached]),this.reemitter.reEmit(this.dehydratedDeviceManager,[v.DehydratedDeviceCreated,v.DehydratedDeviceUploaded,v.RehydrationStarted,v.RehydrationProgress,v.RehydrationCompleted,v.RehydrationError,v.DehydrationKeyCached,v.DehydratedDeviceRotationError]),this.crossSigningIdentity=new ft(e,r,this.outgoingRequestProcessor,s),this.checkKeyBackupAndEnable()}getOlmMachineOrThrow(){if(this.stopped)throw new Br;return this.olmMachine}set globalErrorOnUnknownDevices(e){}get globalErrorOnUnknownDevices(){return!1}stop(){this.stopped||(this.stopped=!0,this.keyClaimManager.stop(),this.backupManager.stop(),this.outgoingRequestsManager.stop(),this.perSessionBackupDownloader.stop(),this.dehydratedDeviceManager.stop(),this.olmMachine.close())}encryptEvent(e,r){var t=this;return c(function*(){var n=e.getRoomId(),i=t.roomEncryptors[n];if(!i)throw new Error("Cannot encrypt event in unconfigured room ".concat(n));yield i.encryptEvent(e,t.globalBlacklistUnverifiedDevices,t.deviceIsolationMode)})()}decryptEvent(e){var r=this;return c(function*(){var t=e.getRoomId();if(!t)throw new Error("to-device event was not decrypted in preprocessToDeviceMessages");return yield r.eventDecryptor.attemptEventDecryption(e,r.deviceIsolationMode)})()}getBackupDecryptor(e,r){var t=this;return c(function*(){if(!(r instanceof Uint8Array))throw new Error("getBackupDecryptor: expects Uint8Array");if(e.algorithm!="m.megolm_backup.v1.curve25519-aes-sha2")throw new Error("getBackupDecryptor: Unsupported algorithm ".concat(e.algorithm));var n=V.fromBase64(fe(r));if(!pe(n,e))throw new Error("getBackupDecryptor: key backup on server does not match the decryption key");return t.backupManager.createBackupDecryptor(n)})()}importBackedUpRoomKeys(e,r,t){var n=this;return c(function*(){return yield n.backupManager.importBackedUpRoomKeys(e,r,t)})()}maybeAcceptKeyBundle(e,r){var t=this;return c(function*(){var n=new te(t.logger,"maybeAcceptKeyBundle(".concat(e,", ").concat(r,")"));n.info("Checking inviter cross-signing keys");var i=t.olmMachine.queryKeysForUsers([new f(r)]);yield t.outgoingRequestProcessor.makeOutgoingRequest(i);var s=yield t.olmMachine.getReceivedRoomKeyBundleData(new S(e),new f(r));if(!s)return n.info("No key bundle found for user"),!1;n.info("Fetching key bundle ".concat(s.url));var a=Or(t.http.opts.baseUrl,s.url,void 0,void 0,void 0,!1,!0,!0),u;try{var d=new URL(a);u=yield t.http.authedRequest(m.Get,d.pathname+d.search,{},void 0,{rawResponseBody:!0,prefix:""})}catch(l){throw n.warn("Error downloading encrypted bundle from ".concat(a,":"),l),l}n.info("Received blob of length ".concat(u.size));try{yield t.olmMachine.receiveRoomKeyBundle(s,new Uint8Array(yield u.arrayBuffer()))}catch(l){throw n.warn("Error receiving encrypted bundle:",l),l}return!0})()}markRoomAsPendingKeyBundle(e,r){this.roomsPendingKeyBundles.set(e,r)}getVersion(){var e=Jr();return"Rust SDK ".concat(e.matrix_sdk_crypto," (").concat(e.git_sha,"), Vodozemac ").concat(e.vodozemac)}setDeviceIsolationMode(e){this.deviceIsolationMode=e}isEncryptionEnabledInRoom(e){var r=this;return c(function*(){var t=yield r.olmMachine.getRoomSettings(new S(e));return!!t?.algorithm})()}isStateEncryptionEnabledInRoom(e){var r=this;return c(function*(){var t=yield r.olmMachine.getRoomSettings(new S(e));return!!t?.encryptStateEvents})()}getOwnDeviceKeys(){var e=this;return c(function*(){var r=e.olmMachine.identityKeys;return{ed25519:r.ed25519.toBase64(),curve25519:r.curve25519.toBase64()}})()}prepareToEncrypt(e){var r=this.roomEncryptors[e.roomId];r&&r.prepareForEncryption(this.globalBlacklistUnverifiedDevices,this.deviceIsolationMode)}forceDiscardSession(e){var r;return(r=this.roomEncryptors[e])===null||r===void 0?void 0:r.forceDiscardSession()}exportRoomKeys(){var e=this;return c(function*(){var r=yield e.olmMachine.exportRoomKeys(()=>!0);return JSON.parse(r)})()}exportRoomKeysAsJson(){var e=this;return c(function*(){return yield e.olmMachine.exportRoomKeys(()=>!0)})()}importRoomKeys(e,r){var t=this;return c(function*(){return yield t.backupManager.importRoomKeys(e,r)})()}importRoomKeysAsJson(e,r){var t=this;return c(function*(){return yield t.backupManager.importRoomKeysAsJson(e,r)})()}userHasCrossSigningKeys(){var e=arguments,r=this;return c(function*(){var t=e.length>0&&e[0]!==void 0?e[0]:r.userId,n=e.length>1&&e[1]!==void 0?e[1]:!1,i=yield r.olmMachine.trackedUsers(),s;for(var a of i)if(t===a.toString()){s=a;break}if(s!==void 0){if(t===r.userId){var u=r.olmMachine.queryKeysForUsers([s.clone()]);yield r.outgoingRequestProcessor.makeOutgoingRequest(u)}var d=yield r.olmMachine.getIdentity(s);return d?.free(),d!==void 0}else if(n){var l,g=yield r.downloadDeviceList(new Set([t])),p=(l=g.master_keys)===null||l===void 0?void 0:l[t];return p?!!Object.values(p.keys)[0]:!1}else return!1})()}getUserDeviceInfo(e){var r=arguments,t=this;return c(function*(){var n=r.length>1&&r[1]!==void 0?r[1]:!1,i=new Map,s=yield t.getOlmMachineOrThrow().trackedUsers(),a=new Set;s.forEach(g=>a.add(g.toString()));var u=new Set;for(var d of e)a.has(d)?i.set(d,yield t.getUserDevices(d)):u.add(d);if(n&&u.size>=1){var l=yield t.downloadDeviceList(u);Object.entries(l.device_keys).forEach(g=>{var[p,h]=g;return i.set(p,pt(h))})}return i})()}getUserDevices(e){var r=this;return c(function*(){var t=new f(e),n=yield r.olmMachine.getUserDevices(t,1);try{var i=n.devices();try{return new Map(i.map(s=>[s.deviceId.toString(),ht(s,t)]))}finally{i.forEach(s=>s.free())}}finally{n.free()}})()}downloadDeviceList(e){var r=this;return c(function*(){var t={device_keys:{}};return e.forEach(n=>t.device_keys[n]=[]),yield r.http.authedRequest(m.Post,"/_matrix/client/v3/keys/query",void 0,t,{prefix:""})})()}getTrustCrossSignedDevices(){return this._trustCrossSignedDevices}setTrustCrossSignedDevices(e){this._trustCrossSignedDevices=e}setDeviceVerified(e,r){var t=arguments,n=this;return c(function*(){var i=t.length>2&&t[2]!==void 0?t[2]:!0,s=yield n.olmMachine.getDevice(new f(e),new D(r));if(!s)throw new Error("Unknown device ".concat(e,"|").concat(r));try{yield s.setLocalTrust(i?Je.Verified:Je.Unset)}finally{s.free()}})()}crossSignDevice(e){var r=this;return c(function*(){var t=yield r.olmMachine.getDevice(new f(r.userId),new D(e));if(!t)throw new Error("Unknown device ".concat(e));try{var n=yield t.verify();yield r.outgoingRequestProcessor.makeOutgoingRequest(n)}finally{t.free()}})()}getDeviceVerificationStatus(e,r){var t=this;return c(function*(){var n=yield t.olmMachine.getDevice(new f(e),new D(r));if(!n)return null;try{return new qr({signedByOwner:n.isCrossSignedByOwner(),crossSigningVerified:n.isCrossSigningTrusted(),localVerified:n.isLocallyTrusted(),trustCrossSignedDevices:t._trustCrossSignedDevices})}finally{n.free()}})()}getUserVerificationStatus(e){var r=this;return c(function*(){var t=yield r.getOlmMachineOrThrow().getIdentity(new f(e));if(t===void 0)return new xe(!1,!1,!1);var n=t.isVerified(),i=t.wasPreviouslyVerified(),s=t instanceof Hr?t.identityNeedsUserApproval():!1;return t.free(),new xe(n,i,!1,s)})()}pinCurrentUserIdentity(e){var r=this;return c(function*(){var t=yield r.getOlmMachineOrThrow().getIdentity(new f(e));if(t===void 0)throw new Error("Cannot pin identity of unknown user");if(t instanceof Qr)throw new Error("Cannot pin identity of own user");yield t.pinCurrentMasterKey()})()}withdrawVerificationRequirement(e){var r=this;return c(function*(){var t=yield r.getOlmMachineOrThrow().getIdentity(new f(e));if(t===void 0)throw new Error("Cannot withdraw verification of unknown user");yield t.withdrawVerification()})()}isCrossSigningReady(){var e=this;return c(function*(){var{privateKeysInSecretStorage:r,privateKeysCachedLocally:t}=yield e.getCrossSigningStatus(),n=!!t.masterKey&&!!t.selfSigningKey&&!!t.userSigningKey,i=yield e.getOwnIdentity();return!!(i!=null&&i.isVerified())&&(n||r)})()}getCrossSigningKeyId(){var e=arguments,r=this;return c(function*(){var t=e.length>0&&e[0]!==void 0?e[0]:$.Master,n=yield r.olmMachine.getIdentity(new f(r.userId));if(!n)return null;try{var i=yield r.olmMachine.crossSigningStatus(),s=i.hasMaster&&i.hasUserSigning&&i.hasSelfSigning;if(!s||!n.isVerified())return null;var a;switch(t){case $.Master:a=n.masterKey;break;case $.SelfSigning:a=n.selfSigningKey;break;case $.UserSigning:a=n.userSigningKey;break;default:return null}var u=JSON.parse(a);return Object.values(u.keys)[0]}finally{n.free()}})()}bootstrapCrossSigning(e){var r=this;return c(function*(){yield r.crossSigningIdentity.bootstrapCrossSigning(e)})()}isSecretStorageReady(){var e=this;return c(function*(){return(yield e.getSecretStorageStatus()).ready})()}getSecretStorageStatus(){var e=this;return c(function*(){var r=["m.cross_signing.master","m.cross_signing.user_signing","m.cross_signing.self_signing"],t=(yield e.backupManager.getActiveBackupVersion())!=null;t&&r.push("m.megolm_backup.v1");var n=yield e.secretStorage.getDefaultKeyId(),i={ready:!0,defaultKeyId:n,secretStorageKeyValidityMap:{}};for(var s of r){var a=(yield e.secretStorage.isStored(s))||{},u=!!n&&n in a;i.secretStorageKeyValidityMap[s]=u,i.ready=i.ready&&u}return i})()}bootstrapSecretStorage(){var e=arguments,r=this;return c(function*(){var{createSecretStorageKey:t,setupNewSecretStorage:n,setupNewKeyBackup:i}=e.length>0&&e[0]!==void 0?e[0]:{},s=n||!(yield r.secretStorageHasAESKey());if(s){if(!t)throw new Error("unable to create a new secret storage key, createSecretStorageKey is not set");r.logger.info("bootstrapSecretStorage: creating new secret storage key");var a=yield t();if(!a)throw new Error("createSecretStorageKey() callback did not return a secret storage key");yield r.addSecretStorageKeyToSecretStorage(a)}var u=yield r.olmMachine.exportCrossSigningKeys(),d=u&&u.masterKey!==void 0&&u.self_signing_key!==void 0&&u.userSigningKey!==void 0;d&&(s||!(yield Xe(r.secretStorage)))&&(r.logger.info("bootstrapSecretStorage: cross-signing keys not yet exported; doing so now."),yield r.secretStorage.store("m.cross_signing.master",u.masterKey),yield r.secretStorage.store("m.cross_signing.user_signing",u.userSigningKey),yield r.secretStorage.store("m.cross_signing.self_signing",u.self_signing_key)),i?yield r.resetKeyBackup():yield r.saveBackupKeyToStorage()})()}saveBackupKeyToStorage(){var e=this;return c(function*(){var r=yield e.backupManager.getServerBackupInfo();if(!r||!r.version){e.logger.info("Not saving backup key to secret storage: no backup info");return}var t=yield e.olmMachine.getBackupKeys();if(!t.decryptionKey){e.logger.info("Not saving backup key to secret storage: no backup key");return}if(!pe(t.decryptionKey,r)){e.logger.info("Not saving backup key to secret storage: decryption key does not match backup info");return}var n=t.decryptionKey.toBase64();yield e.secretStorage.store("m.megolm_backup.v1",n)})()}addSecretStorageKeyToSecretStorage(e){var r=this;return c(function*(){var t,n,i,s,a=yield r.secretStorage.addKey(Ae,{passphrase:(t=e.keyInfo)===null||t===void 0?void 0:t.passphrase,name:(n=e.keyInfo)===null||n===void 0?void 0:n.name,key:e.privateKey});yield r.secretStorage.setDefaultKeyId(a.keyId),(i=(s=r.cryptoCallbacks).cacheSecretStorageKey)===null||i===void 0||i.call(s,a.keyId,a.keyInfo,e.privateKey)})()}secretStorageHasAESKey(){var e=this;return c(function*(){var r=yield e.secretStorage.getKey();if(!r)return!1;var[,t]=r;return t.algorithm===Ae})()}getCrossSigningStatus(){var e=this;return c(function*(){var r=yield e.getOlmMachineOrThrow().getIdentity(new f(e.userId)),t=!!r?.masterKey&&!!r?.selfSigningKey&&!!r?.userSigningKey;r?.free();var n=yield Xe(e.secretStorage),i=yield e.getOlmMachineOrThrow().crossSigningStatus();return{publicKeysOnDevice:t,privateKeysInSecretStorage:n,privateKeysCachedLocally:{masterKey:!!i?.hasMaster,userSigningKey:!!i?.hasUserSigning,selfSigningKey:!!i?.hasSelfSigning}}})()}createRecoveryKeyFromPassphrase(e){var r=this;return c(function*(){if(e){var t=Le(32),n=yield vr(e,t,r.RECOVERY_KEY_DERIVATION_ITERATIONS);return{keyInfo:{passphrase:{algorithm:"m.pbkdf2",iterations:r.RECOVERY_KEY_DERIVATION_ITERATIONS,salt:t}},privateKey:n,encodedPrivateKey:$e(n)}}else{var i=new Uint8Array(32);return globalThis.crypto.getRandomValues(i),{privateKey:i,encodedPrivateKey:$e(i)}}})()}getEncryptionInfoForEvent(e){var r=this;return c(function*(){return r.eventDecryptor.getEncryptionInfoForEvent(e)})()}getVerificationRequestsToDeviceInProgress(e){var r=this.olmMachine.getVerificationRequests(new f(e));return r.filter(t=>t.roomId===void 0&&!t.isCancelled()).map(t=>this.makeVerificationRequest(t))}findVerificationRequestDMInProgress(e,r){if(!r)throw new Error("missing userId");var t=this.olmMachine.getVerificationRequests(new f(r)),n=t.find(i=>{var s;return((s=i.roomId)===null||s===void 0?void 0:s.toString())===e&&!i.isCancelled()});if(n)return this.makeVerificationRequest(n)}requestVerificationDM(e,r){var t=this;return c(function*(){var n=yield t.olmMachine.getIdentity(new f(e));if(!n)throw new Error("unknown userId ".concat(e));try{var i=t._supportedVerificationMethods.map(g=>oe(g)),s=yield n.verificationRequestContent(i),a=JSON.parse(s);a.msgtype="m.key.verification.request";var u=JSON.stringify(a),d=yield t.sendVerificationRequestContent(r,u),l=yield n.requestVerification(new S(r),new Yr(d),i);return t.makeVerificationRequest(l)}finally{n.free()}})()}sendVerificationRequestContent(e,r){var t=this;return c(function*(){var n=Le(32),{event_id:i}=yield t.http.authedRequest(m.Put,"/_matrix/client/v3/rooms/".concat(encodeURIComponent(e),"/send/m.room.message/").concat(encodeURIComponent(n)),void 0,r,{prefix:""});return i})()}setSupportedVerificationMethods(e){this._supportedVerificationMethods=e??sr}requestOwnUserVerification(){var e=this;return c(function*(){var r=yield e.olmMachine.getIdentity(new f(e.userId));if(r===void 0)throw new Error("cannot request verification for this device when there is no existing cross-signing key");try{var[t,n]=yield r.requestVerification(e._supportedVerificationMethods.map(oe));return yield e.outgoingRequestProcessor.makeOutgoingRequest(n),e.makeVerificationRequest(t)}finally{r.free()}})()}requestDeviceVerification(e,r){var t=this;return c(function*(){var n=yield t.olmMachine.getDevice(new f(e),new D(r));if(!n)throw new Error("Not a known device");try{var[i,s]=n.requestVerification(t._supportedVerificationMethods.map(oe));return yield t.outgoingRequestProcessor.makeOutgoingRequest(s),t.makeVerificationRequest(i)}finally{n.free()}})()}getSessionBackupPrivateKey(){var e=this;return c(function*(){var r=yield e.olmMachine.getBackupKeys();return r.decryptionKey?ve(r.decryptionKey.toBase64()):null})()}storeSessionBackupPrivateKey(e,r){var t=this;return c(function*(){var n=fe(e);if(!r)throw new Error("storeSessionBackupPrivateKey: version is required");yield t.backupManager.saveBackupDecryptionKey(V.fromBase64(n),r)})()}loadSessionBackupPrivateKeyFromSecretStorage(){var e=this;return c(function*(){var r=yield e.secretStorage.get("m.megolm_backup.v1");if(!r)throw new Error("loadSessionBackupPrivateKeyFromSecretStorage: missing decryption key in secret storage");var t=yield e.backupManager.getServerBackupInfo();if(!t||!t.version)throw new Error("loadSessionBackupPrivateKeyFromSecretStorage: unable to get backup version");var n=V.fromBase64(r);if(!pe(n,t))throw new Error("loadSessionBackupPrivateKeyFromSecretStorage: decryption key does not match backup info");yield e.backupManager.saveBackupDecryptionKey(n,t.version)})()}getActiveSessionBackupVersion(){var e=this;return c(function*(){return yield e.backupManager.getActiveBackupVersion()})()}getKeyBackupInfo(){var e=this;return c(function*(){return(yield e.backupManager.getServerBackupInfo())||null})()}isKeyBackupTrusted(e){var r=this;return c(function*(){return yield r.backupManager.isKeyBackupTrusted(e)})()}checkKeyBackupAndEnable(){var e=this;return c(function*(){return yield e.backupManager.checkKeyBackupAndEnable(!0)})()}deleteKeyBackupVersion(e){var r=this;return c(function*(){yield r.backupManager.deleteKeyBackupVersion(e)})()}resetKeyBackup(){var e=this;return c(function*(){var r=yield e.backupManager.setupKeyBackup(t=>e.signObject(t));(yield e.secretStorageHasAESKey())&&(yield e.secretStorage.store("m.megolm_backup.v1",r.decryptionKey.toBase64())),e.checkKeyBackupAndEnable()})()}disableKeyStorage(){var e=this;return c(function*(){var r=yield e.getKeyBackupInfo();r!=null&&r.version?yield e.deleteKeyBackupVersion(r.version):e.logger.error("Can't delete key backup version: no version available"),yield e.deleteSecretStorage(),yield e.dehydratedDeviceManager.delete()})()}signObject(e){var r=this;return c(function*(){var t=new Map(Object.entries(e.signatures||{})),n=e.unsigned;delete e.signatures,delete e.unsigned;var i=t.get(r.userId)||{},s=st.stringify(e),a=yield r.olmMachine.sign(s),u=JSON.parse(a.asJSON());t.set(r.userId,or(or({},i),u[r.userId])),n!==void 0&&(e.unsigned=n),e.signatures=Object.fromEntries(t.entries())})()}restoreKeyBackupWithPassphrase(e,r){var t=this;return c(function*(){var n=yield t.backupManager.getServerBackupInfo();if(!(n!=null&&n.version))throw new Error("No backup info available");var i=yield Kt(n.auth_data,e);return yield t.storeSessionBackupPrivateKey(i,n.version),t.restoreKeyBackup(r)})()}restoreKeyBackup(e){var r=this;return c(function*(){var t=yield r.olmMachine.getBackupKeys(),{decryptionKey:n,backupVersion:i}=t;if(!n||!i)throw new Error("No decryption key found in crypto store");var s=ve(n.toBase64()),a=yield r.backupManager.requestKeyBackupVersion(i);if(!a)throw new Error("Backup version to restore ".concat(i," not found on server"));var u=yield r.getBackupDecryptor(a,s);try{var d;return e==null||(d=e.progressCallback)===null||d===void 0||d.call(e,{stage:A.Fetch}),yield r.backupManager.restoreKeyBackup(i,u,e)}finally{u.free()}})()}isDehydrationSupported(){var e=this;return c(function*(){return yield e.dehydratedDeviceManager.isSupported()})()}startDehydration(){var e=arguments,r=this;return c(function*(){var t=e.length>0&&e[0]!==void 0?e[0]:{};if(!(yield r.isCrossSigningReady())||!(yield r.isSecretStorageReady()))throw new Error("Device dehydration requires cross-signing and secret storage to be set up");return yield r.dehydratedDeviceManager.start(t||{})})()}importSecretsBundle(e){var r=this;return c(function*(){var t=$r.from_json(e);yield r.getOlmMachineOrThrow().importSecretsBundle(t)})()}exportSecretsBundle(){var e=this;return c(function*(){var r=yield e.getOlmMachineOrThrow().exportSecretsBundle(),t=r.to_json();return r.free(),t})()}encryptToDeviceMessages(e,r,t){var n=this;return c(function*(){var i=new te(n.logger,"encryptToDeviceMessages"),s=new Set(r.map(u=>{var{userId:d}=u;return d}));yield n.keyClaimManager.ensureSessionsForUsers(i,Array.from(s).map(u=>new f(u)));var a={batch:[],eventType:w.RoomMessageEncrypted};return yield Promise.all(r.map((function(){var u=c(function*(d){var{userId:l,deviceId:g}=d,p=yield n.olmMachine.getDevice(new f(l),new D(g));if(p){var h=JSON.parse(yield p.encryptToDeviceEvent(e,t));a.batch.push({deviceId:g,userId:l,payload:h})}else n.logger.warn("encryptToDeviceMessages: unknown device ".concat(l,":").concat(g))});return function(d){return u.apply(this,arguments)}})())),a})()}resetEncryption(e){var r=this;return c(function*(){r.logger.debug("resetEncryption: resetting encryption"),r.dehydratedDeviceManager.delete(),yield r.backupManager.deleteAllKeyBackupVersions(),yield r.deleteSecretStorage(),yield r.crossSigningIdentity.bootstrapCrossSigning({setupNewCrossSigning:!0,authUploadDeviceSigningKeys:e}),yield r.resetKeyBackup(),r.logger.debug("resetEncryption: ended")})()}deleteSecretStorage(){var e=this;return c(function*(){yield e.secretStorage.store("m.cross_signing.master",null),yield e.secretStorage.store("m.cross_signing.self_signing",null),yield e.secretStorage.store("m.cross_signing.user_signing",null),yield e.secretStorage.store("m.megolm_backup.v1",null);var r=yield e.secretStorage.getDefaultKeyId();r&&(yield e.secretStorage.store("m.secret_storage.key.".concat(r),null)),yield e.secretStorage.setDefaultKeyId(null)})()}shareRoomHistoryWithUser(e,r){var t=this;return c(function*(){var n=new te(t.logger,"shareRoomHistoryWithUser(".concat(e,", ").concat(r,")")),i=yield t.getOwnIdentity();if(!(i!=null&&i.isVerified())){n.warn("Not sharing message history as the current device is not verified by our cross-signing identity");return}n.info("Sharing message history");var s=yield t.getOlmMachineOrThrow().buildRoomKeyBundle(new S(e));if(!s){n.info("No keys to share");return}var a=yield t.http.uploadContent(s.encryptedData);n.info("Uploaded encrypted key blob: ".concat(JSON.stringify(a)));var u=t.getOlmMachineOrThrow().queryKeysForUsers([new f(r)]);yield t.outgoingRequestProcessor.makeOutgoingRequest(u),yield t.keyClaimManager.ensureSessionsForUsers(n,[new f(r)]);var d=yield t.getOlmMachineOrThrow().shareRoomKeyBundleData(new f(r),new S(e),a.content_uri,s.mediaEncryptionInfo,me.identityBasedStrategy());for(var l of d)yield t.outgoingRequestProcessor.makeOutgoingRequest(l)})()}receiveSyncChanges(e){var r=this;return c(function*(){var{events:t,oneTimeKeysCounts:n=new Map,unusedFallbackKeys:i,devices:s=new He}=e;return yield r.olmMachine.receiveSyncChanges(t?JSON.stringify(t):"[]",s,n,i)})()}preprocessToDeviceMessages(e){var r=this;return c(function*(){var t=yield r.receiveSyncChanges({events:e}),n=[],i=function*(){var u=JSON.parse(s.rawEvent);if(u.type===w.KeyVerificationRequest){var d=u.sender,l=u.content.transaction_id;l&&d&&r.onIncomingKeyVerificationRequest(d,l)}switch(s.type){case X.Decrypted:{var g,p=s.encryptionInfo;n.push({message:u,encryptionInfo:{sender:p.sender.toString(),senderDevice:(g=p.senderDevice)===null||g===void 0?void 0:g.toString(),senderCurve25519KeyBase64:p.senderCurve25519Key,senderVerified:p.isSenderVerified()}}),It(u)&&r.roomsPendingKeyBundles.has(u.content.room_id)&&r.maybeAcceptKeyBundle(u.content.room_id,r.roomsPendingKeyBundles.get(u.content.room_id)).then(h=>{h&&r.roomsPendingKeyBundles.delete(u.content.room_id)},h=>{r.logger.error("Error attempting to download key bundle for room ".concat(u.content.room_id)),r.logger.error(h)});break}case X.PlainText:{n.push({message:u,encryptionInfo:null});break}case X.UnableToDecrypt:break;case X.Invalid:break}};for(var s of t)yield*i();return n})()}processKeyCounts(e,r){var t=this;return c(function*(){var n=e&&new Map(Object.entries(e)),i=r&&new Set(r);(n!==void 0||i!==void 0)&&(yield t.receiveSyncChanges({oneTimeKeysCounts:n,unusedFallbackKeys:i}))})()}processDeviceLists(e){var r=this;return c(function*(){var t,n,i=new He((t=e.changed)===null||t===void 0?void 0:t.map(s=>new f(s)),(n=e.left)===null||n===void 0?void 0:n.map(s=>new f(s)));yield r.receiveSyncChanges({devices:i})})()}onCryptoEvent(e,r){var t=this;return c(function*(){var n=r.getContent(),i=new yr;if(n.algorithm==="m.megolm.v1.aes-sha2")i.algorithm=G.MegolmV1AesSha2;else{t.logger.warn("Room ".concat(e.roomId,": ignoring crypto event with invalid algorithm ").concat(n.algorithm));return}n["io.element.msc4362.encrypt_state_events"]&&t.enableEncryptedStateEvents&&(t.logger.info("crypto Enabling state event encryption..."),i.encryptStateEvents=!0);try{i.sessionRotationPeriodMs=n.rotation_period_ms,i.sessionRotationPeriodMessages=n.rotation_period_msgs,yield t.olmMachine.setRoomSettings(new S(e.roomId),i)}catch(a){t.logger.warn("Room ".concat(e.roomId,": ignoring crypto event which caused error: ").concat(a));return}var s=t.roomEncryptors[e.roomId];s?s.onCryptoEvent(n):t.roomEncryptors[e.roomId]=new at(t.logger.getChild("[".concat(e.roomId," encryption]")),t.olmMachine,t.keyClaimManager,t.outgoingRequestsManager,e,n)})()}onSyncCompleted(e){this.outgoingRequestsManager.doProcessOutgoingRequests().catch(r=>{this.logger.warn("onSyncCompleted: Error processing outgoing requests",r)})}markAllTrackedUsersAsDirty(){var e=this;return c(function*(){yield e.olmMachine.markAllTrackedUsersAsDirty()})()}onIncomingKeyVerificationRequest(e,r){var t=this.olmMachine.getVerificationRequest(new f(e),r);t?this.emit(v.VerificationRequestReceived,this.makeVerificationRequest(t)):this.logger.info("Ignoring just-received verification request ".concat(r," which did not start a rust-side verification"))}makeVerificationRequest(e){return new kt(this.logger,this.olmMachine,e,this.outgoingRequestProcessor,this._supportedVerificationMethods)}onRoomMembership(e,r,t){var n=this.roomEncryptors[e.getRoomId()];n&&n.onRoomMembership(r)}onRoomKeysUpdated(e){var r=this;return c(function*(){for(var t of e)r.onRoomKeyUpdated(t);r.backupManager.maybeUploadKey()})()}onRoomKeyUpdated(e){var r=this;if(!this.stopped){this.logger.debug("Got update for session ".concat(e.sessionId," from sender ").concat(e.senderKey.toBase64()," in ").concat(e.roomId.toString()));var t=this.eventDecryptor.getEventsPendingRoomKey(e.roomId.toString(),e.sessionId);if(t.length!==0){this.logger.debug("Retrying decryption on events:",t.map(s=>"".concat(s.getId())));var n=function(a){a.attemptDecryption(r,{isRetry:!0}).catch(u=>{r.logger.info("Still unable to decrypt event ".concat(a.getId()," after receiving key"))})};for(var i of t)n(i)}}}onRoomKeysWithheld(e){var r=this;return c(function*(){for(var t of e){r.logger.debug("Got withheld message for session ".concat(t.sessionId," in ").concat(t.roomId.toString()));var n=r.eventDecryptor.getEventsPendingRoomKey(t.roomId.toString(),t.sessionId);if(n.length===0)return;r.logger.debug("Retrying decryption on events:",n.map(s=>"".concat(s.getId())));for(var i of n)i.attemptDecryption(r,{isRetry:!0}).catch(s=>{})}})()}onUserIdentityUpdated(e){var r=this;return c(function*(){var t=yield r.getUserVerificationStatus(e.toString());r.emit(v.UserTrustStatusChanged,e.toString(),t),e.toString()===r.userId&&(r.emit(v.KeysChanged,{}),yield r.checkKeyBackupAndEnable())})()}onDevicesUpdated(e){var r=this;return c(function*(){r.emit(v.WillUpdateDevices,e,!1),r.emit(v.DevicesUpdated,e,!1)})()}handleSecretReceived(e,r){var t=this;return c(function*(){return t.logger.debug("onReceiveSecret: Received secret ".concat(e)),e==="m.megolm_backup.v1"?yield t.backupManager.handleBackupSecretReceived(r):!1})()}checkSecrets(e){var r=this;return c(function*(){var t=yield r.olmMachine.getSecretsFromInbox(e);for(var n of t)if(yield r.handleSecretReceived(e,n))break;yield r.olmMachine.deleteSecretsFromInbox(e)})()}onLiveEventFromSync(e){var r=this;return c(function*(){if(!(e.isState()||e.getUnsigned().transaction_id)){var t=(function(){var a=c(function*(u){St(e)&&(yield r.onKeyVerificationEvent(u))});return function(d){return a.apply(this,arguments)}})();if(e.isDecryptionFailure()||e.isEncrypted()){var n=3e5,i=setTimeout(()=>e.off(de.Decrypted,s),n),s=(a,u)=>{u||(clearTimeout(i),e.off(de.Decrypted,s),t(a))};e.on(de.Decrypted,s)}else yield t(e)}})()}onKeyVerificationEvent(e){var r=this;return c(function*(){var t=e.getRoomId(),n=e.getSender();if(!t)throw new Error("missing roomId in the event");if(!n)throw new Error("missing sender in the event");r.logger.debug("Incoming verification event ".concat(e.getId()," type ").concat(e.getType()," from ").concat(e.getSender()));var i=e.getType()===w.RoomMessage&&e.getContent().msgtype===lr.KeyVerificationRequest;if(i){var s=r.getOlmMachineOrThrow().queryKeysForUsers([new f(n)]);yield r.outgoingRequestProcessor.makeOutgoingRequest(s)}yield r.getOlmMachineOrThrow().receiveVerificationEvent(JSON.stringify({event_id:e.getId(),type:e.getType(),sender:n,state_key:e.getStateKey(),content:e.getContent(),origin_server_ts:e.getTs()}),new S(t)),i&&r.onIncomingKeyVerificationRequest(n,e.getId()),r.outgoingRequestsManager.doProcessOutgoingRequests().catch(a=>{r.logger.warn("onKeyVerificationRequest: Error processing outgoing requests",a)})})()}getOwnIdentity(){var e=this;return c(function*(){return yield e.olmMachine.getIdentity(new f(e.userId))})()}}class Mt{constructor(e,r,t){this.logger=e,this.olmMachine=r,this.perSessionBackupDownloader=t,y(this,"eventsPendingKey",new Fe(()=>new Fe(()=>new Set)))}attemptEventDecryption(e,r){var t=this;return c(function*(){t.addEventToPendingList(e);var n;switch(r.kind){case ae.AllDevicesIsolationMode:n=Qe.Untrusted;break;case ae.OnlySignedDevicesIsolationMode:n=Qe.CrossSignedOrLegacy;break}try{var i,s=yield t.olmMachine.decryptRoomEvent(ar(e),new S(e.getRoomId()),new zr(n));return t.removeEventFromPendingList(e),{clearEvent:JSON.parse(s.event),claimedEd25519Key:s.senderClaimedEd25519Key,senderCurve25519Key:s.senderCurve25519Key,keyForwardedBy:(i=s.forwarder)===null||i===void 0?void 0:i.toString()}}catch(a){if(a instanceof Zr)t.onMegolmDecryptionError(e,a,yield t.perSessionBackupDownloader.getServerBackupInfo());else throw new b(_.UNKNOWN_ERROR,"Unknown error")}})()}onMegolmDecryptionError(e,r,t){var n=e.getWireContent(),i={sender_key:n.sender_key,session_id:n.session_id};if(r.code===q.MissingRoomKey||r.code===q.UnknownMessageIndex){this.perSessionBackupDownloader.onDecryptionKeyMissingError(e.getRoomId(),n.session_id);var s=e.getMembershipAtEvent();if(s&&s!==se.Join&&s!==se.Invite)throw new b(_.HISTORICAL_MESSAGE_USER_NOT_JOINED,"This message was sent when we were not a member of the room.",i);if(e.getTs()<=this.olmMachine.deviceCreationTimeMs)throw t===null?new b(_.HISTORICAL_MESSAGE_NO_KEY_BACKUP,"This message was sent before this device logged in, and there is no key backup on the server.",i):this.perSessionBackupDownloader.isKeyBackupDownloadConfigured()?new b(_.HISTORICAL_MESSAGE_WORKING_BACKUP,"This message was sent before this device logged in. Key backup is working, but we still do not (yet) have the key.",i):new b(_.HISTORICAL_MESSAGE_BACKUP_UNCONFIGURED,"This message was sent before this device logged in, and key backup is not working.",i)}if(r.maybe_withheld){var a=r.maybe_withheld==="The sender has disabled encrypting to unverified devices."?_.MEGOLM_KEY_WITHHELD_FOR_UNVERIFIED_DEVICE:_.MEGOLM_KEY_WITHHELD;throw new b(a,r.maybe_withheld,i)}switch(r.code){case q.MissingRoomKey:throw new b(_.MEGOLM_UNKNOWN_INBOUND_SESSION_ID,"The sender's device has not sent us the keys for this message.",i);case q.UnknownMessageIndex:throw new b(_.OLM_UNKNOWN_MESSAGE_INDEX,"The sender's device has not sent us the keys for this message at this index.",i);case q.SenderIdentityVerificationViolation:throw this.removeEventFromPendingList(e),new b(_.SENDER_IDENTITY_PREVIOUSLY_VERIFIED,"The sender identity is unverified, but was previously verified.");case q.UnknownSenderDevice:throw this.removeEventFromPendingList(e),new b(_.UNKNOWN_SENDER_DEVICE,"The sender device is not known.");case q.UnsignedSenderDevice:throw this.removeEventFromPendingList(e),new b(_.UNSIGNED_SENDER_DEVICE,"The sender identity is not cross-signed.");default:throw new b(_.UNKNOWN_ERROR,r.description,i)}}getEncryptionInfoForEvent(e){var r=this;return c(function*(){if(!e.getClearContent()||e.isDecryptionFailure())return null;if(e.status!==null)return{shieldColour:ie.NONE,shieldReason:null};var t=yield r.olmMachine.getRoomEventEncryptionInfo(ar(e),new S(e.getRoomId()));return Ct(r.logger,t)})()}getEventsPendingRoomKey(e,r){var t=this.eventsPendingKey.get(e);if(!t)return[];var n=t.get(r);return n?[...n]:[]}addEventToPendingList(e){var r=e.getRoomId();if(r){var t=this.eventsPendingKey.getOrCreate(r),n=t.getOrCreate(e.getWireContent().session_id);n.add(e)}}removeEventFromPendingList(e){var r=e.getRoomId();if(r){var t=this.eventsPendingKey.getOrCreate(r);if(t){var n=t.get(e.getWireContent().session_id);n&&(n.delete(e),n.size===0&&(t.delete(e.getWireContent().session_id),t.size===0&&this.eventsPendingKey.delete(r)))}}}}function ar(o){return JSON.stringify({event_id:o.getId(),type:o.getWireType(),sender:o.getSender(),state_key:o.getStateKey(),content:o.getWireContent(),origin_server_ts:o.getTs()})}function Ct(o,e){if(e===void 0)return null;var r=e.shieldState(!1),t;switch(r.color){case Ye.Grey:t=ie.GREY;break;case Ye.None:t=ie.NONE;break;default:t=ie.RED}var n;switch(r.code){case void 0:case null:n=null;break;case U.AuthenticityNotGuaranteed:n=B.AUTHENTICITY_NOT_GUARANTEED;break;case U.UnknownDevice:n=B.UNKNOWN_DEVICE;break;case U.UnsignedDevice:n=B.UNSIGNED_DEVICE;break;case U.UnverifiedIdentity:n=B.UNVERIFIED_IDENTITY;break;case U.VerificationViolation:n=B.VERIFICATION_VIOLATION;break;case U.MismatchedSender:n=B.MISMATCHED_SENDER;break;default:n=B.UNKNOWN;break}return{shieldColour:t,shieldReason:n}}function It(o){return o.type==="io.element.msc4268.room_key_bundle"&&typeof o.content.room_id=="string"}function Dt(o){return we.apply(this,arguments)}function we(){return we=c(function*(o){var e,{logger:r,legacyStore:t}=o;if(yield hr(),!(yield t.containsData()))return;yield t.startup();var n=null;if(yield t.doTxn("readonly",[J.STORE_ACCOUNT],p=>{t.getAccount(p,h=>{n=h})}),!n){r.debug("Legacy crypto store is not set up (no account found). Not migrating.");return}var i=yield t.getMigrationState();if(i>=R.MEGOLM_SESSIONS_MIGRATED)return;var s=yield Ot(r,t),a=yield qt(r,t),u=1+s+a;r.info("Migrating data from legacy crypto store. ".concat(s," olm sessions and ").concat(a," megolm sessions to migrate."));var d=0;function l(p){var h;d+=p,(h=o.legacyMigrationProgressListener)===null||h===void 0||h.call(o,d,u)}l(0);var g=new TextEncoder().encode(o.legacyPickleKey).slice();i===R.NOT_STARTED&&(r.info("Migrating data from legacy crypto store. Step 1: base data"),yield Bt(o.http,o.userId,o.deviceId,t,g,o.storeHandle,r),i=R.INITIAL_DATA_MIGRATED,yield t.setMigrationState(i)),l(1),i===R.INITIAL_DATA_MIGRATED&&(r.info("Migrating data from legacy crypto store. Step 2: olm sessions (".concat(s," sessions to migrate).")),yield Pt(r,t,g,o.storeHandle,l),i=R.OLM_SESSIONS_MIGRATED,yield t.setMigrationState(i)),i===R.OLM_SESSIONS_MIGRATED&&(r.info("Migrating data from legacy crypto store. Step 3: megolm sessions (".concat(a," sessions to migrate).")),yield Tt(r,t,g,o.storeHandle,l),i=R.MEGOLM_SESSIONS_MIGRATED,yield t.setMigrationState(i)),(e=o.legacyMigrationProgressListener)===null||e===void 0||e.call(o,-1,-1),r.info("Migration from legacy crypto store complete")}),we.apply(this,arguments)}function Bt(o,e,r,t,n,i,s){return Re.apply(this,arguments)}function Re(){return Re=c(function*(o,e,r,t,n,i,s){var a=new Xr;a.userId=new f(e),a.deviceId=new D(r),yield t.doTxn("readonly",[J.STORE_ACCOUNT],C=>t.getAccount(C,N=>{a.pickledAccount=N??""}));var u=yield re(t,n,"m.megolm_backup.v1");if(u){for(var d=!1,l=null;!d;)try{l=yield kr(o),d=!0}catch(C){s.info("Failed to get backup version during migration, retrying in 2 seconds",C),yield P(2e3)}if(l&&l.algorithm=="m.megolm_backup.v1.curve25519-aes-sha2")try{var g,p=V.fromBase64(u),h=(g=l.auth_data)===null||g===void 0?void 0:g.public_key,E=p.megolmV1PublicKey.publicKeyBase64==h;E?(a.backupVersion=l.version,a.backupRecoveryKey=u):s.debug("The backup key to migrate does not match the active backup version","Cached pub key: ".concat(p.megolmV1PublicKey.publicKeyBase64),"Active pub key: ".concat(h))}catch(C){s.warn("Failed to check if the backup key to migrate matches the active backup version",C)}}a.privateCrossSigningMasterKey=yield re(t,n,"master"),a.privateCrossSigningSelfSigningKey=yield re(t,n,"self_signing"),a.privateCrossSigningUserSigningKey=yield re(t,n,"user_signing"),yield Te.migrateBaseData(a,n,i,s)}),Re.apply(this,arguments)}function Ot(o,e){return Ke.apply(this,arguments)}function Ke(){return Ke=c(function*(o,e){o.debug("Counting olm sessions to be migrated");var r;return yield e.doTxn("readonly",[J.STORE_SESSIONS],t=>e.countEndToEndSessions(t,n=>r=n)),r}),Ke.apply(this,arguments)}function qt(o,e){return Ee.apply(this,arguments)}function Ee(){return Ee=c(function*(o,e){return o.debug("Counting megolm sessions to be migrated"),yield e.countEndToEndInboundGroupSessions()}),Ee.apply(this,arguments)}function Pt(o,e,r,t,n){return Me.apply(this,arguments)}function Me(){return Me=c(function*(o,e,r,t,n){for(;;){var i=yield e.getEndToEndSessionsBatch();if(i===null)return;o.debug("Migrating batch of ".concat(i.length," olm sessions"));var s=[];for(var a of i){var u=new et;u.senderKey=a.deviceKey,u.pickle=a.session,u.lastUseTime=u.creationTime=new Date(a.lastReceivedMessageTs),s.push(u)}yield Te.migrateOlmSessions(s,r,t,o),yield e.deleteEndToEndSessionsBatch(i),n(i.length)}}),Me.apply(this,arguments)}function Tt(o,e,r,t,n){return Ce.apply(this,arguments)}function Ce(){return Ce=c(function*(o,e,r,t,n){for(;;){var i=yield e.getEndToEndInboundGroupSessionsBatch();if(i===null)return;o.debug("Migrating batch of ".concat(i.length," megolm sessions"));var s=[];for(var a of i){var u,d=a.sessionData,l=new rt;l.pickle=d.session,l.roomId=new S(d.room_id),l.senderKey=a.senderKey,l.senderSigningKey=(u=d.keysClaimed)===null||u===void 0?void 0:u.ed25519,l.backedUp=!a.needsBackup,l.imported=d.untrusted===!0,s.push(l)}yield Te.migrateMegolmSessions(s,r,t,o),yield e.deleteEndToEndInboundGroupSessionsBatch(i),n(i.length)}}),Ce.apply(this,arguments)}function Ut(o){return Ie.apply(this,arguments)}function Ie(){return Ie=c(function*(o){var{logger:e,legacyStore:r,olmMachine:t}=o;if(yield r.containsData()){var n=yield r.getMigrationState();if(!(n>=R.ROOM_SETTINGS_MIGRATED)){var i={};yield r.doTxn("readwrite",[J.STORE_ROOMS],d=>{r.getEndToEndRooms(d,l=>{i=l})}),e.debug("Migrating ".concat(Object.keys(i).length," sets of room settings"));for(var[s,a]of Object.entries(i))try{var u=new yr;if(a.algorithm!=="m.megolm.v1.aes-sha2"){e.warn("Room ".concat(s,": ignoring room with invalid algorithm ").concat(a.algorithm));continue}u.algorithm=G.MegolmV1AesSha2,u.sessionRotationPeriodMs=a.rotation_period_ms,u.sessionRotationPeriodMessages=a.rotation_period_msgs,yield t.setRoomSettings(new S(s),u)}catch(d){e.warn("Room ".concat(s,": ignoring settings ").concat(JSON.stringify(a)," which caused error ").concat(d))}e.debug("Completed room settings migration"),yield r.setMigrationState(R.ROOM_SETTINGS_MIGRATED)}}}),Ie.apply(this,arguments)}function re(o,e,r){return De.apply(this,arguments)}function De(){return De=c(function*(o,e,r){var t=yield new Promise(n=>{o.doTxn("readonly",[J.STORE_ACCOUNT],i=>{o.getSecretStorePrivateKey(i,n,r)})});return t&&t.ciphertext&&t.iv&&t.mac?yield Pr(t,e,r):t instanceof Uint8Array?fe(t):void 0}),De.apply(this,arguments)}function Vt(o){return Be.apply(this,arguments)}function Be(){return Be=c(function*(o){var{legacyCryptoStore:e,rustCrypto:r,logger:t}=o,n=yield r.getOwnIdentity();if(n&&!n.isVerified()){var i=yield Nt(e);if(i){var s=JSON.parse(n.masterKey);if(!s.keys||Object.keys(s.keys).length===0){t.error("Post Migration | Unexpected error: no master key in the rust session.");return}var a=Object.values(s.keys)[0];a&&a==i&&(t.info("Post Migration: Migrating legacy trusted MSK: ".concat(i," to locally verified.")),yield n.verify())}}}),Be.apply(this,arguments)}function Nt(o){return Oe.apply(this,arguments)}function Oe(){return Oe=c(function*(o){var e=null;return yield o.doTxn("readonly","account",r=>{o.getCrossSigningKeys(r,t=>{var n=t?.master;n&&Object.keys(n.keys).length!=0&&(e=Object.values(n.keys)[0])})}),e}),Oe.apply(this,arguments)}function cr(o,e){var r=Object.keys(o);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(o);e&&(t=t.filter(function(n){return Object.getOwnPropertyDescriptor(o,n).enumerable})),r.push.apply(r,t)}return r}function xt(o){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?cr(Object(r),!0).forEach(function(t){y(o,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(o,Object.getOwnPropertyDescriptors(r)):cr(Object(r)).forEach(function(t){Object.defineProperty(o,t,Object.getOwnPropertyDescriptor(r,t))})}return o}function jt(o){return qe.apply(this,arguments)}function qe(){return qe=c(function*(o){var{logger:e}=o;e.debug("Initialising Rust crypto-sdk WASM artifact"),yield hr(),e.debug("Opening Rust CryptoStore");var r;o.storePrefix?o.storeKey?r=yield le.openWithKey(o.storePrefix,o.storeKey,e):r=yield le.open(o.storePrefix,o.storePassphrase,e):r=yield le.open(null,null,e),o.legacyCryptoStore&&(yield Dt(xt({legacyStore:o.legacyCryptoStore,storeHandle:r},o)));var t=yield At(e,o.http,o.userId,o.deviceId,o.secretStorage,o.cryptoCallbacks,r,o.legacyCryptoStore,o.enableEncryptedStateEvents);return r.free(),e.debug("Completed rust crypto-sdk setup"),t}),qe.apply(this,arguments)}function At(o,e,r,t,n,i,s,a,u){return Pe.apply(this,arguments)}function Pe(){return Pe=c(function*(o,e,r,t,n,i,s,a,u){o.debug("Init OlmMachine");var d=yield tt.initFromStore(new f(r),new D(t),s,o);a&&(yield Ut({logger:o,legacyStore:a,olmMachine:d})),d.roomKeyRequestsEnabled=!1;var l=new Et(o,d,e,r,t,n,i,u);if(yield d.registerRoomKeyUpdatedCallback(h=>l.onRoomKeysUpdated(h)),yield d.registerRoomKeysWithheldCallback(h=>l.onRoomKeysWithheld(h)),yield d.registerUserIdentityUpdatedCallback(h=>l.onUserIdentityUpdated(h)),yield d.registerDevicesUpdatedCallback(h=>l.onDevicesUpdated(h)),l.checkSecrets("m.megolm_backup.v1"),yield d.registerReceiveSecretCallback((h,E)=>l.checkSecrets(h)),yield d.outgoingRequests(),a&&(yield a.containsData())){var g=yield a.getMigrationState();if(g<R.INITIAL_OWN_KEY_QUERY_DONE){o.debug("Performing initial key query after migration");for(var p=!1;!p;)try{yield l.userHasCrossSigningKeys(r),p=!0}catch(h){o.error("Failed to check for cross-signing keys after migration, retrying",h)}yield Vt({legacyCryptoStore:a,rustCrypto:l,logger:o}),yield a.setMigrationState(R.INITIAL_OWN_KEY_QUERY_DONE)}}return l}),Pe.apply(this,arguments)}export{jt as initRustCrypto};
3
+ //# sourceMappingURL=index-CSLbyoDR.js.map