@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,25 @@
1
+ function Pr(i){"@babel/helpers - typeof";return Pr=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Pr(i)}function Yo(i,e){if(Pr(i)!="object"||!i)return i;var t=i[Symbol.toPrimitive];if(t!==void 0){var r=t.call(i,e);if(Pr(r)!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(i)}function Xo(i){var e=Yo(i,"string");return Pr(e)=="symbol"?e:e+""}function c(i,e,t){return(e=Xo(e))in i?Object.defineProperty(i,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):i[e]=t,i}function $i(i,e,t,r,n,a,s){try{var o=i[a](s),l=o.value}catch(d){return void t(d)}o.done?e(l):Promise.resolve(l).then(r,n)}function R(i){return function(){var e=this,t=arguments;return new Promise(function(r,n){var a=i.apply(e,t);function s(l){$i(a,r,n,s,o,"next",l)}function o(l){$i(a,r,n,s,o,"throw",l)}s(void 0)})}}function Xs(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var un={exports:{}},Qo=un.exports,Wi;function Zo(){return Wi||(Wi=1,(function(i){(function(e,t){i.exports?i.exports=t():e.log=t()})(Qo,function(){var e=function(){},t="undefined",r=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),n=["trace","debug","info","warn","error"],a={},s=null;function o(p,I){var S=p[I];if(typeof S.bind=="function")return S.bind(p);try{return Function.prototype.bind.call(S,p)}catch{return function(){return Function.prototype.apply.apply(S,[p,arguments])}}}function l(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function d(p){return p==="debug"&&(p="log"),typeof console===t?!1:p==="trace"&&r?l:console[p]!==void 0?o(console,p):console.log!==void 0?o(console,"log"):e}function u(){for(var p=this.getLevel(),I=0;I<n.length;I++){var S=n[I];this[S]=I<p?e:this.methodFactory(S,p,this.name)}if(this.log=this.debug,typeof console===t&&p<this.levels.SILENT)return"No console available for logging"}function h(p){return function(){typeof console!==t&&(u.call(this),this[p].apply(this,arguments))}}function m(p,I,S){return d(p)||h.apply(this,arguments)}function E(p,I){var S=this,g,_,y,b="loglevel";typeof p=="string"?b+=":"+p:typeof p=="symbol"&&(b=void 0);function v(D){var B=(n[D]||"silent").toUpperCase();if(!(typeof window===t||!b)){try{window.localStorage[b]=B;return}catch{}try{window.document.cookie=encodeURIComponent(b)+"="+B+";"}catch{}}}function w(){var D;if(!(typeof window===t||!b)){try{D=window.localStorage[b]}catch{}if(typeof D===t)try{var B=window.document.cookie,Z=encodeURIComponent(b),ge=B.indexOf(Z+"=");ge!==-1&&(D=/^([^;]+)/.exec(B.slice(ge+Z.length+1))[1])}catch{}return S.levels[D]===void 0&&(D=void 0),D}}function C(){if(!(typeof window===t||!b)){try{window.localStorage.removeItem(b)}catch{}try{window.document.cookie=encodeURIComponent(b)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch{}}}function k(D){var B=D;if(typeof B=="string"&&S.levels[B.toUpperCase()]!==void 0&&(B=S.levels[B.toUpperCase()]),typeof B=="number"&&B>=0&&B<=S.levels.SILENT)return B;throw new TypeError("log.setLevel() called with invalid level: "+D)}S.name=p,S.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},S.methodFactory=I||m,S.getLevel=function(){return y??_??g},S.setLevel=function(D,B){return y=k(D),B!==!1&&v(y),u.call(S)},S.setDefaultLevel=function(D){_=k(D),w()||S.setLevel(D,!1)},S.resetLevel=function(){y=null,C(),u.call(S)},S.enableAll=function(D){S.setLevel(S.levels.TRACE,D)},S.disableAll=function(D){S.setLevel(S.levels.SILENT,D)},S.rebuild=function(){if(s!==S&&(g=k(s.getLevel())),u.call(S),s===S)for(var D in a)a[D].rebuild()},g=k(s?s.getLevel():"WARN");var P=w();P!=null&&(y=k(P)),u.call(S)}s=new E,s.getLogger=function(I){if(typeof I!="symbol"&&typeof I!="string"||I==="")throw new TypeError("You must supply a name when creating a logger.");var S=a[I];return S||(S=a[I]=new E(I,s.methodFactory)),S};var f=typeof window!==t?window.log:void 0;return s.noConflict=function(){return typeof window!==t&&window.log===s&&(window.log=f),s},s.getLoggers=function(){return a},s.default=s,s})})(un)),un.exports}var el=Zo(),ti=Xs(el),tl="matrix";ti.methodFactory=function(i,e,t){return function(){for(var r=arguments.length,n=new Array(r),a=0;a<r;a++)n[a]=arguments[a];this.prefix&&n.unshift(this.prefix);var s=i==="error"||i==="warn"||i==="trace"||i==="info"||i==="debug";return s?console[i](...n):console.log(...n)}};function Qs(i){var e=tl+(i===void 0?"":"-".concat(i)),t=ti.getLogger(e);return t.getChild===void 0&&(t.prefix=i,t.getChild=r=>{var n=Qs((i??"")+r);return n.methodFactory=t.methodFactory,n.rebuild(),n},t.setLevel(ti.levels.DEBUG,!1)),t}var T=Qs();class Eh{constructor(e,t){this.parent=e,c(this,"name",void 0),this.name=t+":"}trace(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];this.parent.trace(this.name,...t)}debug(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];this.parent.debug(this.name,...t)}info(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];this.parent.info(this.name,...t)}warn(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];this.parent.warn(this.name,...t)}error(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];this.parent.error(this.name,...t)}}const rl="l",nl="rn";var il={0:"O",1:"l","֭":"֖","֮":"֘","֨":"֙","֤":"֚","᪴":"ۛ","⃛":"ۛ","ؙ":"̓","ࣳ":"̓","̓":"̓","̕":"̓","ُ":"̓","ٝ":"̔","֜":"́","֝":"́","ؘ":"́","݇":"́","́":"́","॔":"́","َ":"́","̀":"̀","॓":"̀","̌":"̆","꙼":"̆","٘":"̆","ٚ":"̆","ͮ":"̆","ۨ":"̆̇","̐":"̆̇","ँ":"̆̇","ঁ":"̆̇","ઁ":"̆̇","ଁ":"̆̇","ఀ":"̆̇","ಁ":"̆̇","ഁ":"̆̇","𑒿":"̆̇","᳐":"̂","̑":"̂","ٛ":"̂","߮":"̂","꛰":"̂","֯":"̊","۟":"̊","៓":"̊","゚":"̊","ْ":"̊","ஂ":"̊","ံ":"̊","ំ":"̊","𑌀":"̊","ํ":"̊","ໍ":"̊","ͦ":"̊","ⷪ":"̊","࣫":"̈","߳":"̈","ً":"̋","ࣰ":"̋","͂":"̃","ٓ":"̃","ׄ":"̇","۬":"̇","݀":"̇","࣪":"̇","݁":"̇","͘":"̇","ֹ":"̇","ֺ":"̇","ׂ":"̇","ׁ":"̇","߭":"̇","ं":"̇","ਂ":"̇","ં":"̇","்":"̇","̷":"̸","᪷":"̨","̢":"̨","ͅ":"̨","᳒":"̄","̅":"̄","ٙ":"̄","߫":"̄","꛱":"̄","᳚":"̎","ٗ":"̒","͗":"͐","ࣿ":"͐","ࣸ":"͐","ऀ":"͒","᳭":"̖","᳜":"̩","ٖ":"̩","᳕":"̫","͇":"̳","ࣹ":"͔","ࣺ":"͕","゛":"゙","゜":"゚","̶":"̵","〬":"̉","ׅ":"̣","࣭":"̣","᳝":"̣","ִ":"̣","ٜ":"̣","़":"̣","়":"̣","਼":"̣","઼":"̣","଼":"̣","𑇊":"̣","𑓃":"̣","𐨺":"̣","࣮":"̤","᳞":"̤","༷":"̥","〭":"̥","̧":"̦","̡":"̦","̹":"̦","᳙":"̭","᳘":"̮","॒":"̱","̠":"̱","ࣱ":"ٌ","ࣨ":"ٌ","ࣥ":"ٌ",ﱞ:"ﹲّ","ࣲ":"ٍ",ﱟ:"ﹴّ",ﳲ:"ﹷّ",ﱠ:"ﹶّ",ﳳ:"ﹹّ",ﱡ:"ﹸّ","ؚ":"ِ","̗":"ِ",ﳴ:"ﹻّ",ﱢ:"ﹺّ",ﱣ:"ﹼٰ","ٟ":"ٕ","̍":"ٰ","݂":"ܼ","ਃ":"ঃ","ః":"ঃ","ಃ":"ঃ","ഃ":"ঃ","ඃ":"ঃ","း":"ঃ","𑓁":"ঃ","់":"่","່":"่","້":"้","໊":"๊","໋":"๋","꙯":"⃩","\u2028":" ","\u2029":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" ","ߺ":"_","﹍":"_","﹎":"_","﹏":"_","‐":"-","‑":"-","‒":"-","–":"-","﹘":"-","۔":"-","⁃":"-","˗":"-","−":"-","➖":"-","Ⲻ":"-","⨩":"-̓","⸚":"-̈","﬩":"-̇","∸":"-̇","⨪":"-̣","꓾":"-.","~":"〜","؍":",","٫":",","‚":",","¸":",","ꓹ":",","⸲":"،","٬":"،",";":";","⸵":"؛","ः":":","ઃ":":",":":":","։":":","܃":":","܄":":","᛬":":","︰":":","᠃":":","᠉":":","⁚":":","׃":":","˸":":","꞉":":","∶":":",ː:":","ꓽ":":","⩴":"::=","⧴":":→","!":"!",ǃ:"!","ⵑ":"!","‼":"!!","⁉":"!?",ʔ:"?","Ɂ":"?","ॽ":"?",Ꭾ:"?","ꛫ":"?","⁈":"?!","⁇":"??","⸮":"؟","𝅭":".","․":".","܁":".","܂":".","꘎":".","𐩐":".","٠":".","۰":".","ꓸ":".","ꓻ":".,","‥":"..","ꓺ":"..","…":"...","꛴":"꛳꛳","・":"·","・":"·","᛫":"·","·":"·","⸱":"·","𐄁":"·","•":"·","‧":"·","∙":"·","⋅":"·","ꞏ":"·",ᐧ:"·","⋯":"···","ⵈ":"···",ᑄ:"·<","⋗":"·>",ᐷ:"·>",ᑀ:"·>",ᔯ:"·4",ᑾ:"·b",ᒀ:"·ḃ",ᑺ:"·d",ᒘ:"·J",ᒶ:"·L",ᑶ:"·P",ᑗ:"·U",ᐺ:"·V",ᐼ:"·Ʌ",ᒮ:"·Γ",ᐎ:"·Δ",ᑙ:"·Ո",ᐌ:"·ᐁ",ᐐ:"·ᐄ",ᐒ:"·ᐅ",ᐔ:"·ᐆ",ᐗ:"·ᐊ",ᐙ:"·ᐋ",ᐾ:"·ᐲ",ᑂ:"·ᐴ",ᑆ:"·ᐹ",ᑛ:"·ᑏ",ᑔ:"·ᑐ",ᑝ:"·ᑐ",ᑟ:"·ᑑ",ᑡ:"·ᑕ",ᑣ:"·ᑖ",ᑴ:"·ᑫ",ᑸ:"·ᑮ",ᑼ:"·ᑰ",ᒒ:"·ᒉ",ᒔ:"·ᒋ",ᒖ:"·ᒌ",ᒚ:"·ᒎ",ᒜ:"·ᒐ",ᒞ:"·ᒑ",ᒬ:"·ᒣ",ᒰ:"·ᒦ",ᒲ:"·ᒧ",ᒴ:"·ᒨ",ᒸ:"·ᒫ",ᓉ:"·ᓀ","ᣆ":"·ᓂ","ᣈ":"·ᓃ","ᣊ":"·ᓄ","ᣌ":"·ᓅ",ᓋ:"·ᓇ",ᓍ:"·ᓈ",ᓜ:"·ᓓ",ᓞ:"·ᓕ",ᓠ:"·ᓖ",ᓢ:"·ᓗ",ᓤ:"·ᓘ",ᓦ:"·ᓚ",ᓨ:"·ᓛ",ᓶ:"·ᓭ",ᓸ:"·ᓯ",ᓺ:"·ᓰ",ᓼ:"·ᓱ",ᓾ:"·ᓲ",ᔀ:"·ᓴ",ᔂ:"·ᓵ",ᔗ:"·ᔐ",ᔙ:"·ᔑ",ᔛ:"·ᔒ",ᔝ:"·ᔓ",ᔟ:"·ᔔ",ᔡ:"·ᔕ",ᔣ:"·ᔖ",ᔱ:"·ᔨ",ᔳ:"·ᔩ",ᔵ:"·ᔪ",ᔷ:"·ᔫ",ᔹ:"·ᔭ",ᔻ:"·ᔮ","ᣎ":"·ᕃ","ᣏ":"·ᕆ","ᣐ":"·ᕇ","ᣑ":"·ᕈ","ᣒ":"·ᕉ","ᣓ":"·ᕋ",ᕎ:"·ᕌ",ᕛ:"·ᕚ",ᕨ:"·ᕧ","ᢳ":"·ᢱ","ᢶ":"·ᢴ","ᢹ":"·ᢸ","ᣂ":"·ᣀ","꠰":"।","॥":"।।","᰼":"᰻᰻","။":"၊၊","᪩":"᪨᪨","᪫":"᪪᪨","᭟":"᭞᭞","𐩗":"𐩖𐩖","𑑌":"𑑋𑑋","𑙂":"𑙁𑙁","𑱂":"𑱁𑱁","᱿":"᱾᱾","՝":"'","'":"'","‘":"'","’":"'","‛":"'","′":"'","‵":"'","՚":"'","׳":"'","`":"'","`":"'","`":"'","´":"'","΄":"'","´":"'","᾽":"'","᾿":"'","῾":"'","ʹ":"'","ʹ":"'","ˈ":"'","ˊ":"'","ˋ":"'","˴":"'",ʻ:"'",ʽ:"'",ʼ:"'",ʾ:"'","ꞌ":"'",י:"'","ߴ":"'","ߵ":"'",ᑊ:"'",ᛌ:"'","𖽑":"'","𖽒":"'","᳓":"''",'"':"''",""":"''","“":"''","”":"''","‟":"''","″":"''","‶":"''","〃":"''","״":"''","˝":"''","ʺ":"''","˶":"''",ˮ:"''",ײ:"''","‴":"'''","‷":"'''","⁗":"''''",Ɓ:"'B",Ɗ:"'D",ʼn:"'n",Ƥ:"'P",Ƭ:"'T",Ƴ:"'Y","[":"(","❨":"(","❲":"(","〔":"(","﴾":"(","⸨":"((","㈠":"(ー)","⑵":"(2)","⒇":"(2O)","⑶":"(3)","⑷":"(4)","⑸":"(5)","⑹":"(6)","⑺":"(7)","⑻":"(8)","⑼":"(9)","⒜":"(a)","🄐":"(A)","⒝":"(b)","🄑":"(B)","⒞":"(c)","🄒":"(C)","⒟":"(d)","🄓":"(D)","⒠":"(e)","🄔":"(E)","⒡":"(f)","🄕":"(F)","⒢":"(g)","🄖":"(G)","⒣":"(h)","🄗":"(H)","⒤":"(i)","⒥":"(j)","🄙":"(J)","⒦":"(k)","🄚":"(K)","⑴":"(l)","🄘":"(l)","⒧":"(l)","🄛":"(L)","⑿":"(l2)","⒀":"(l3)","⒁":"(l4)","⒂":"(l5)","⒃":"(l6)","⒄":"(l7)","⒅":"(l8)","⒆":"(l9)","⑾":"(ll)","⑽":"(lO)","🄜":"(M)","⒩":"(n)","🄝":"(N)","⒪":"(o)","🄞":"(O)","⒫":"(p)","🄟":"(P)","⒬":"(q)","🄠":"(Q)","⒭":"(r)","🄡":"(R)","⒨":"(rn)","⒮":"(s)","🄢":"(S)","🄪":"(S)","⒯":"(t)","🄣":"(T)","⒰":"(u)","🄤":"(U)","⒱":"(v)","🄥":"(V)","⒲":"(w)","🄦":"(W)","⒳":"(x)","🄧":"(X)","⒴":"(y)","🄨":"(Y)","⒵":"(z)","🄩":"(Z)","㈀":"(ᄀ)","㈎":"(가)","㈁":"(ᄂ)","㈏":"(나)","㈂":"(ᄃ)","㈐":"(다)","㈃":"(ᄅ)","㈑":"(라)","㈄":"(ᄆ)","㈒":"(마)","㈅":"(ᄇ)","㈓":"(바)","㈆":"(ᄉ)","㈔":"(사)","㈇":"(ᄋ)","㈕":"(아)","㈝":"(오전)","㈞":"(오후)","㈈":"(ᄌ)","㈖":"(자)","㈜":"(주)","㈉":"(ᄎ)","㈗":"(차)","㈊":"(ᄏ)","㈘":"(카)","㈋":"(ᄐ)","㈙":"(타)","㈌":"(ᄑ)","㈚":"(파)","㈍":"(ᄒ)","㈛":"(하)","㈦":"(七)","㈢":"(三)","🉁":"(三)","㈨":"(九)","㈡":"(二)","🉂":"(二)","㈤":"(五)","㈹":"(代)","㈽":"(企)","㉁":"(休)","㈧":"(八)","㈥":"(六)","㈸":"(労)","🉇":"(勝)","㈩":"(十)","㈿":"(協)","㈴":"(名)","㈺":"(呼)","㈣":"(四)","㈯":"(土)","㈻":"(学)","🉃":"(安)","🉅":"(打)","🉈":"(敗)","㈰":"(日)","㈪":"(月)","㈲":"(有)","㈭":"(木)","🉀":"(本)","㈱":"(株)","㈬":"(水)","㈫":"(火)","🉄":"(点)","㈵":"(特)","🉆":"(盗)","㈼":"(監)","㈳":"(社)","㈷":"(祝)","㉀":"(祭)","㉂":"(自)","㉃":"(至)","㈶":"(財)","㈾":"(資)","㈮":"(金)","]":")","❩":")","❳":")","〕":")","﴿":")","⸩":"))","❴":"{","𝄔":"{","❵":"}","〚":"⟦","〛":"⟧","⟨":"❬","〈":"❬","〈":"❬","㇛":"❬",く:"❬","𡿨":"❬","⟩":"❭","〉":"❭","〉":"❭","^":"︿","⸿":"¶","⁎":"*","٭":"*","∗":"*","𐌟":"*","᜵":"/","⁁":"/","∕":"/","⁄":"/","╱":"/","⟋":"/","⧸":"/","𝈺":"/","㇓":"/",〳:"/","Ⳇ":"/",ノ:"/",丿:"/","⼃":"/","⧶":"/̄","⫽":"//","⫻":"///","\":"\\","﹨":"\\","∖":"\\","⟍":"\\","⧵":"\\","⧹":"\\","𝈏":"\\","𝈻":"\\","㇔":"\\",丶:"\\","⼂":"\\","⳹":"\\\\","⑊":"\\\\","⟈":"\\ᑕ","ꝸ":"&","૰":"॰","𑂻":"॰","𑇇":"॰","⚬":"॰","𑇛":"꣼","៙":"๏","៕":"๚","៚":"๛","༌":"་","༎":"།།","˄":"^","ˆ":"^","꙾":"ˇ","˘":"ˇ","‾":"ˉ","﹉":"ˉ","﹊":"ˉ","﹋":"ˉ","﹌":"ˉ","¯":"ˉ"," ̄":"ˉ","▔":"ˉ",ъ:"ˉb","ꙑ":"ˉbi","͵":"ˏ","˻":"˪","꜖":"˪","꜔":"˫","。":"˳","⸰":"°","˚":"°","∘":"°","○":"°","◦":"°","⍜":"°̲","⍤":"°̈","℃":"°C","℉":"°F","௵":"௳","༛":"༚༚","༟":"༚༝","࿎":"༝༚","༞":"༝༝","Ⓒ":"©","Ⓡ":"®","Ⓟ":"℗","𝈛":"⅄","⯬":"↞","⯭":"↟","⯮":"↠","⯯":"↡","↵":"↲","⥥":"⇃⇂","⥯":"⇃ᛚ","𝛛":"∂","𝜕":"∂","𝝏":"∂","𝞉":"∂","𝟃":"∂","𞣌":"∂","𞣍":"∂̵",ð:"∂̵","⌀":"∅","𝛁":"∇","𝛻":"∇","𝜵":"∇","𝝯":"∇","𝞩":"∇","𑢨":"∇","⍢":"∇̈","⍫":"∇̴","█":"∎","■":"∎","⨿":"∐","᛭":"+","➕":"+","𐊛":"+","⨣":"+̂","⨢":"+̊","⨤":"+̃","∔":"+̇","⨥":"+̣","⨦":"+̰","⨧":"+₂","➗":"÷","‹":"<","❮":"<","˂":"<","𝈶":"<",ᐸ:"<",ᚲ:"<","⋖":"<·","Ⲵ":"<·",ᑅ:"<·","≪":"<<","⋘":"<<<","᐀":"=","⹀":"=","゠":"=","꓿":"=","≚":"=̆","≙":"=̂","≗":"=̊","≐":"=̇","≑":"=̣̇","⩮":"=⃰","⩵":"==","⩶":"===","≞":"=ͫ","›":">","❯":">","˃":">","𝈷":">",ᐳ:">","𖼿":">",ᑁ:">·","⪥":"><","≫":">>","⨠":">>","⋙":">>>","⁓":"~","˜":"~","῀":"~","∼":"~","⍨":"~̈","⸞":"~̇","⩪":"~̇","⸟":"~̣","𞣈":"∠","⋀":"∧","∯":"∮∮","∰":"∮∮∮","⸫":"∴","⸪":"∵","⸬":"∷","𑇞":"≈","♎":"≏","🝞":"≏","≣":"≡","⨃":"⊍","⨄":"⊎","𝈸":"⊏","𝈹":"⊐","⨅":"⊓","⨆":"⊔","⨂":"⊗","⍟":"⊛","🝱":"⊠","🝕":"⊡","◁":"⊲","▷":"⊳","⍣":"⋆̈","︴":"⌇","◠":"⌒","⨽":"⌙","⌥":"⌤","⧇":"⌻","◎":"⌾","⦾":"⌾","⧅":"⍂","⦰":"⍉","⏃":"⍋","⏂":"⍎","⏁":"⍕","⏆":"⍭","☸":"⎈","︵":"⏜","︶":"⏝","︷":"⏞","︸":"⏟","︹":"⏠","︺":"⏡","▱":"⏥","⏼":"⏻","︱":"│","|":"│","┃":"│","┏":"┌","┣":"├","▐":"▌","▗":"▖","▝":"▘","☐":"□","■":"▪","▸":"▶","►":"▶","⳩":"☧","🜊":"☩","🌒":"☽","🌙":"☽","⏾":"☾","🌘":"☾","⧙":"⦚","🜺":"⧟","⨾":"⨟","𐆠":"⳨","♩":"𝅘𝅥","♪":"𝅘𝅥𝅮","⓪":"🄍","↺":"🄎","˙":"ॱ","ൎ":"ॱ","-":"ー","—":"ー","―":"ー","─":"ー","━":"ー","㇐":"ー","ꟷ":"ー",ᅳ:"ー",ㅡ:"ー",一:"ー","⼀":"ー",ᆖ:"ーー","ힹ":"ーᅡ","ힺ":"ーᅥ","ힻ":"ーᅥ丨","ힼ":"ーᅩ",ᆕ:"ーᅮ",ᅴ:"ー丨",ㅢ:"ー丨",ᆗ:"ー丨ᅮ","🄏":"$⃠","₤":"£","〒":"₸","〶":"₸","᭜":"᭐","꧆":"꧐","𑓑":"১","೧":"౧","ၥ":"၁","①":"➀","⑩":"➉","⏨":"₁₀","𝟐":"2","𝟚":"2","𝟤":"2","𝟮":"2","𝟸":"2","🯲":"2","Ꝛ":"2",Ƨ:"2",Ϩ:"2","Ꙅ":"2",ᒿ:"2","ꛯ":"2","ꧏ":"٢","۲":"٢","૨":"२","𑓒":"২","೨":"౨","②":"➁",ƻ:"2̵","🄃":"2,","⒉":"2.","㏵":"22日","㍮":"22点","㏶":"23日","㍯":"23点","㏷":"24日","㍰":"24点","㏸":"25日","㏹":"26日","㏺":"27日","㏻":"28日","㏼":"29日","㏴":"2l日","㍭":"2l点","⒛":"2O.","㏳":"2O日","㍬":"2O点","෩":"෨ා","෯":"෨ී","㏡":"2日","㋁":"2月","㍚":"2点","𝈆":"3","𝟑":"3","𝟛":"3","𝟥":"3","𝟯":"3","𝟹":"3","🯳":"3","Ɜ":"3",Ȝ:"3",Ʒ:"3","Ꝫ":"3","Ⳍ":"3",З:"3",Ӡ:"3","𖼻":"3","𑣊":"3","۳":"٣","𞣉":"٣","૩":"३","③":"➂",Ҙ:"3̦","🄄":"3,","⒊":"3.","㏾":"3l日","㏽":"3O日","㏢":"3日","㋂":"3月","㍛":"3点","𝟒":"4","𝟜":"4","𝟦":"4","𝟰":"4","𝟺":"4","🯴":"4",Ꮞ:"4","𑢯":"4","۴":"٤","૪":"४","④":"➃","🄅":"4,","⒋":"4.",ᔰ:"4·","㏣":"4日","㋃":"4月","㍜":"4点","𝟓":"5","𝟝":"5","𝟧":"5","𝟱":"5","𝟻":"5","🯵":"5",Ƽ:"5","𑢻":"5","⑤":"➄","🄆":"5,","⒌":"5.","㏤":"5日","㋄":"5月","㍝":"5点","𝟔":"6","𝟞":"6","𝟨":"6","𝟲":"6","𝟼":"6","🯶":"6","Ⳓ":"6",б:"6",Ꮾ:"6","𑣕":"6","۶":"٦","𑓖":"৬","⑥":"➅","🄇":"6,","⒍":"6.","㏥":"6日","㋅":"6月","㍞":"6点","𝈒":"7","𝟕":"7","𝟟":"7","𝟩":"7","𝟳":"7","𝟽":"7","🯷":"7","𐓒":"7","𑣆":"7","⑦":"➆","🄈":"7,","⒎":"7.","㏦":"7日","㋆":"7月","㍟":"7点","ଃ":"8","৪":"8","੪":"8","𞣋":"8","𝟖":"8","𝟠":"8","𝟪":"8","𝟴":"8","𝟾":"8","🯸":"8",ȣ:"8",Ȣ:"8","𐌚":"8","૮":"८","⑧":"➇","🄉":"8,","⒏":"8.","㏧":"8日","㋇":"8月","㍠":"8点","੧":"9","୨":"9","৭":"9","൭":"9","𝟗":"9","𝟡":"9","𝟫":"9","𝟵":"9","𝟿":"9","🯹":"9","Ꝯ":"9","Ⳋ":"9","𑣌":"9","𑢬":"9","𑣖":"9","१":"٩","𑣤":"٩","۹":"٩","೯":"౯","⑨":"➈","🄊":"9,","⒐":"9.","㏨":"9日","㋈":"9月","㍡":"9点","⍺":"a",a:"a","𝐚":"a","𝑎":"a","𝒂":"a","𝒶":"a","𝓪":"a","𝔞":"a","𝕒":"a","𝖆":"a","𝖺":"a","𝗮":"a","𝘢":"a","𝙖":"a","𝚊":"a",ɑ:"a",α:"a","𝛂":"a","𝛼":"a","𝜶":"a","𝝰":"a","𝞪":"a",а:"a","ⷶ":"ͣ",A:"A","𝐀":"A","𝐴":"A","𝑨":"A","𝒜":"A","𝓐":"A","𝔄":"A","𝔸":"A","𝕬":"A","𝖠":"A","𝗔":"A","𝘈":"A","𝘼":"A","𝙰":"A",Α:"A","𝚨":"A","𝛢":"A","𝜜":"A","𝝖":"A","𝞐":"A",А:"A",Ꭺ:"A",ᗅ:"A","ꓮ":"A","𖽀":"A","𐊠":"A","⍶":"a̲",ǎ:"ă",Ǎ:"Ă",ȧ:"å",Ȧ:"Å",ẚ:"ả","℀":"a/c","℁":"a/s","ꜳ":"aa","Ꜳ":"AA",æ:"ae",ӕ:"ae",Æ:"AE",Ӕ:"AE","ꜵ":"ao","Ꜵ":"AO","🜇":"AR","ꜷ":"au","Ꜷ":"AU","ꜹ":"av","ꜻ":"av","Ꜹ":"AV","Ꜻ":"AV","ꜽ":"ay","Ꜽ":"AY","ꭺ":"ᴀ","∀":"Ɐ","𝈗":"Ɐ",ᗄ:"Ɐ","ꓯ":"Ɐ","𐐟":"Ɒ","𝐛":"b","𝑏":"b","𝒃":"b","𝒷":"b","𝓫":"b","𝔟":"b","𝕓":"b","𝖇":"b","𝖻":"b","𝗯":"b","𝘣":"b","𝙗":"b","𝚋":"b",Ƅ:"b",Ь:"b",Ꮟ:"b",ᑲ:"b",ᖯ:"b",B:"B",ℬ:"B","𝐁":"B","𝐵":"B","𝑩":"B","𝓑":"B","𝔅":"B","𝔹":"B","𝕭":"B","𝖡":"B","𝗕":"B","𝘉":"B","𝘽":"B","𝙱":"B","Ꞵ":"B",Β:"B","𝚩":"B","𝛣":"B","𝜝":"B","𝝗":"B","𝞑":"B",В:"B",Ᏼ:"B",ᗷ:"B","ꓐ":"B","𐊂":"B","𐊡":"B","𐌁":"B",ɓ:"b̔",ᑳ:"ḃ",ƃ:"b̄",Ƃ:"b̄",Б:"b̄",ƀ:"b̵",ҍ:"b̵",Ҍ:"b̵",ѣ:"b̵",Ѣ:"b̵",ᑿ:"b·",ᒁ:"ḃ·",ᒈ:"b'",Ы:"bl",в:"ʙ","ᏼ":"ʙ",c:"c","ⅽ":"c","𝐜":"c","𝑐":"c","𝒄":"c","𝒸":"c","𝓬":"c","𝔠":"c","𝕔":"c","𝖈":"c","𝖼":"c","𝗰":"c","𝘤":"c","𝙘":"c","𝚌":"c","ᴄ":"c",ϲ:"c","ⲥ":"c",с:"c","ꮯ":"c","𐐽":"c","ⷭ":"ͨ","🝌":"C","𑣲":"C","𑣩":"C",C:"C","Ⅽ":"C",ℂ:"C",ℭ:"C","𝐂":"C","𝐶":"C","𝑪":"C","𝒞":"C","𝓒":"C","𝕮":"C","𝖢":"C","𝗖":"C","𝘊":"C","𝘾":"C","𝙲":"C","Ϲ":"C","Ⲥ":"C",С:"C",Ꮯ:"C","ꓚ":"C","𐊢":"C","𐌂":"C","𐐕":"C","𐔜":"C","¢":"c̸","ȼ":"c̸","₡":"C⃫","🅮":"C⃠",ç:"c̦",ҫ:"c̦",Ç:"C̦",Ҫ:"C̦",Ƈ:"C'","℅":"c/o","℆":"c/u","🅭":"㏄ ⃝","⋴":"ꞓ",ɛ:"ꞓ",ε:"ꞓ","ϵ":"ꞓ","𝛆":"ꞓ","𝛜":"ꞓ","𝜀":"ꞓ","𝜖":"ꞓ","𝜺":"ꞓ","𝝐":"ꞓ","𝝴":"ꞓ","𝞊":"ꞓ","𝞮":"ꞓ","𝟄":"ꞓ","ⲉ":"ꞓ",є:"ꞓ","ԑ":"ꞓ","ꮛ":"ꞓ","𑣎":"ꞓ","𐐩":"ꞓ","€":"Ꞓ","Ⲉ":"Ꞓ",Є:"Ꞓ","⍷":"ꞓ̲","ͽ":"ꜿ","Ͽ":"Ꜿ","ⅾ":"d","ⅆ":"d","𝐝":"d","𝑑":"d","𝒅":"d","𝒹":"d","𝓭":"d","𝔡":"d","𝕕":"d","𝖉":"d","𝖽":"d","𝗱":"d","𝘥":"d","𝙙":"d","𝚍":"d","ԁ":"d",Ꮷ:"d",ᑯ:"d","ꓒ":"d","Ⅾ":"D","ⅅ":"D","𝐃":"D","𝐷":"D","𝑫":"D","𝒟":"D","𝓓":"D","𝔇":"D","𝔻":"D","𝕯":"D","𝖣":"D","𝗗":"D","𝘋":"D","𝘿":"D","𝙳":"D",Ꭰ:"D",ᗞ:"D",ᗪ:"D","ꓓ":"D",ɗ:"d̔",ɖ:"d̨",ƌ:"d̄",đ:"d̵",Đ:"D̵",Ð:"D̵",Ɖ:"D̵","₫":"ḏ̵","ꝺ":"Ꝺ",ᑻ:"d·",ᒇ:"d'",ʤ:"dȝ",dz:"dz",ʣ:"dz",Dz:"Dz",DZ:"DZ",dž:"dž",Dž:"Dž",DŽ:"DŽ",ʥ:"dʑ","ꭰ":"ᴅ","⸹":"ẟ",δ:"ẟ","𝛅":"ẟ","𝛿":"ẟ","𝜹":"ẟ","𝝳":"ẟ","𝞭":"ẟ",ծ:"ẟ",ᕷ:"ẟ","℮":"e",e:"e",ℯ:"e","ⅇ":"e","𝐞":"e","𝑒":"e","𝒆":"e","𝓮":"e","𝔢":"e","𝕖":"e","𝖊":"e","𝖾":"e","𝗲":"e","𝘦":"e","𝙚":"e","𝚎":"e","ꬲ":"e",е:"e",ҽ:"e","ⷷ":"ͤ","⋿":"E",E:"E",ℰ:"E","𝐄":"E","𝐸":"E","𝑬":"E","𝓔":"E","𝔈":"E","𝔼":"E","𝕰":"E","𝖤":"E","𝗘":"E","𝘌":"E","𝙀":"E","𝙴":"E",Ε:"E","𝚬":"E","𝛦":"E","𝜠":"E","𝝚":"E","𝞔":"E",Е:"E","ⴹ":"E",Ꭼ:"E","ꓰ":"E","𑢦":"E","𑢮":"E","𐊆":"E",ě:"ĕ",Ě:"Ĕ","ɇ":"e̸","Ɇ":"E̸",ҿ:"ę","ꭼ":"ᴇ",ə:"ǝ",ә:"ǝ","∃":"Ǝ","ⴺ":"Ǝ","ꓱ":"Ǝ",ɚ:"ǝ˞","ᴔ":"ǝo","ꭁ":"ǝo̸","ꭂ":"ǝo̵",Ә:"Ə","𝈡":"Ɛ",ℇ:"Ɛ","Ԑ":"Ɛ",Ꮛ:"Ɛ","𖼭":"Ɛ","𐐁":"Ɛ","ᶟ":"ᵋ","ᴈ":"ɜ",з:"ɜ",ҙ:"ɜ̦","𐑂":"ɞ","ꞝ":"ʚ","𐐪":"ʚ","𝐟":"f","𝑓":"f","𝒇":"f","𝒻":"f","𝓯":"f","𝔣":"f","𝕗":"f","𝖋":"f","𝖿":"f","𝗳":"f","𝘧":"f","𝙛":"f","𝚏":"f","ꬵ":"f","ꞙ":"f",ſ:"f","ẝ":"f",ք:"f","𝈓":"F",ℱ:"F","𝐅":"F","𝐹":"F","𝑭":"F","𝓕":"F","𝔉":"F","𝔽":"F","𝕱":"F","𝖥":"F","𝗙":"F","𝘍":"F","𝙁":"F","𝙵":"F","Ꞙ":"F",Ϝ:"F","𝟊":"F",ᖴ:"F","ꓝ":"F","𑣂":"F","𑢢":"F","𐊇":"F","𐊥":"F","𐔥":"F",ƒ:"f̦",Ƒ:"F̦","ᵮ":"f̴","℻":"FAX",ff:"ff",ffi:"ffi",ffl:"ffl",fi:"fi",fl:"fl",ʩ:"fŋ",ᖵ:"Ⅎ","ꓞ":"Ⅎ","𝈰":"ꟻ",ᖷ:"ꟻ",g:"g",ℊ:"g","𝐠":"g","𝑔":"g","𝒈":"g","𝓰":"g","𝔤":"g","𝕘":"g","𝖌":"g","𝗀":"g","𝗴":"g","𝘨":"g","𝙜":"g","𝚐":"g",ɡ:"g","ᶃ":"g",ƍ:"g",ց:"g","𝐆":"G","𝐺":"G","𝑮":"G","𝒢":"G","𝓖":"G","𝔊":"G","𝔾":"G","𝕲":"G","𝖦":"G","𝗚":"G","𝘎":"G","𝙂":"G","𝙶":"G","Ԍ":"G",Ꮐ:"G",Ᏻ:"G","ꓖ":"G","ᶢ":"ᵍ",ɠ:"g̔",ǧ:"ğ",Ǧ:"Ğ",ǵ:"ģ",ǥ:"g̵",Ǥ:"G̵",Ɠ:"G'","ԍ":"ɢ","ꮐ":"ɢ","ᏻ":"ɢ",h:"h",ℎ:"h","𝐡":"h","𝒉":"h","𝒽":"h","𝓱":"h","𝔥":"h","𝕙":"h","𝖍":"h","𝗁":"h","𝗵":"h","𝘩":"h","𝙝":"h","𝚑":"h",һ:"h",հ:"h",Ꮒ:"h",H:"H",ℋ:"H",ℌ:"H",ℍ:"H","𝐇":"H","𝐻":"H","𝑯":"H","𝓗":"H","𝕳":"H","𝖧":"H","𝗛":"H","𝘏":"H","𝙃":"H","𝙷":"H",Η:"H","𝚮":"H","𝛨":"H","𝜢":"H","𝝜":"H","𝞖":"H","Ⲏ":"H",Н:"H",Ꮋ:"H",ᕼ:"H","ꓧ":"H","𐋏":"H","ᵸ":"ᴴ",ɦ:"h̔","ꚕ":"h̔",Ᏺ:"h̔","Ⱨ":"H̩",Ң:"H̩",ħ:"h̵",ℏ:"h̵",ћ:"h̵",Ħ:"H̵","Ӊ":"H̦",Ӈ:"H̦",н:"ʜ","ꮋ":"ʜ",ң:"ʜ̩","ӊ":"ʜ̦",ӈ:"ʜ̦","Ԋ":"Ƕ","ꮀ":"ⱶ","Ͱ":"Ⱶ",Ꭸ:"Ⱶ",Ꮀ:"Ⱶ","ꚱ":"Ⱶ","ꞕ":"ꜧ","˛":"i","⍳":"i",i:"i","ⅰ":"i",ℹ:"i","ⅈ":"i","𝐢":"i","𝑖":"i","𝒊":"i","𝒾":"i","𝓲":"i","𝔦":"i","𝕚":"i","𝖎":"i","𝗂":"i","𝗶":"i","𝘪":"i","𝙞":"i","𝚒":"i",ı:"i","𝚤":"i",ɪ:"i",ɩ:"i",ι:"i",ι:"i",ͺ:"i","𝛊":"i","𝜄":"i","𝜾":"i","𝝸":"i","𝞲":"i",і:"i","ꙇ":"i","ӏ":"i","ꭵ":"i",Ꭵ:"i","𑣃":"i","ⓛ":"Ⓘ","⍸":"i̲",ǐ:"ĭ",Ǐ:"Ĭ",ɨ:"i̵","ᵻ":"i̵","ᵼ":"i̵","ⅱ":"ii","ⅲ":"iii",ij:"ij","ⅳ":"iv","ⅸ":"ix",j:"j","ⅉ":"j","𝐣":"j","𝑗":"j","𝒋":"j","𝒿":"j","𝓳":"j","𝔧":"j","𝕛":"j","𝖏":"j","𝗃":"j","𝗷":"j","𝘫":"j","𝙟":"j","𝚓":"j",ϳ:"j",ј:"j",J:"J","𝐉":"J","𝐽":"J","𝑱":"J","𝒥":"J","𝓙":"J","𝔍":"J","𝕁":"J","𝕵":"J","𝖩":"J","𝗝":"J","𝘑":"J","𝙅":"J","𝙹":"J","Ʝ":"J","Ϳ":"J",Ј:"J",Ꭻ:"J",ᒍ:"J","ꓙ":"J","ɉ":"j̵","Ɉ":"J̵",ᒙ:"J·","𝚥":"ȷ",յ:"ȷ","ꭻ":"ᴊ","𝐤":"k","𝑘":"k","𝒌":"k","𝓀":"k","𝓴":"k","𝔨":"k","𝕜":"k","𝖐":"k","𝗄":"k","𝗸":"k","𝘬":"k","𝙠":"k","𝚔":"k",K:"K",K:"K","𝐊":"K","𝐾":"K","𝑲":"K","𝒦":"K","𝓚":"K","𝔎":"K","𝕂":"K","𝕶":"K","𝖪":"K","𝗞":"K","𝘒":"K","𝙆":"K","𝙺":"K",Κ:"K","𝚱":"K","𝛫":"K","𝜥":"K","𝝟":"K","𝞙":"K","Ⲕ":"K",К:"K",Ꮶ:"K",ᛕ:"K","ꓗ":"K","𐔘":"K",ƙ:"k̔","Ⱪ":"K̩",Қ:"K̩","₭":"K̵","Ꝁ":"K̵",Ҟ:"K̵",Ƙ:"K'","׀":"l","|":"l","∣":"l","⏽":"l","│":"l","١":"l","۱":"l","𐌠":"l","𞣇":"l","𝟏":"l","𝟙":"l","𝟣":"l","𝟭":"l","𝟷":"l","🯱":"l",I:rl,I:"l","Ⅰ":"l",ℐ:"l",ℑ:"l","𝐈":"l","𝐼":"l","𝑰":"l","𝓘":"l","𝕀":"l","𝕴":"l","𝖨":"l","𝗜":"l","𝘐":"l","𝙄":"l","𝙸":"l",Ɩ:"l",l:"l","ⅼ":"l",ℓ:"l","𝐥":"l","𝑙":"l","𝒍":"l","𝓁":"l","𝓵":"l","𝔩":"l","𝕝":"l","𝖑":"l","𝗅":"l","𝗹":"l","𝘭":"l","𝙡":"l","𝚕":"l",ǀ:"l",Ι:"l","𝚰":"l","𝛪":"l","𝜤":"l","𝝞":"l","𝞘":"l","Ⲓ":"l",І:"l",Ӏ:"l",ו:"l",ן:"l",ا:"l","𞸀":"l","𞺀":"l",ﺎ:"l",ﺍ:"l","ߊ":"l","ⵏ":"l",ᛁ:"l","ꓲ":"l","𖼨":"l","𐊊":"l","𐌉":"l","𝈪":"L","Ⅼ":"L",ℒ:"L","𝐋":"L","𝐿":"L","𝑳":"L","𝓛":"L","𝔏":"L","𝕃":"L","𝕷":"L","𝖫":"L","𝗟":"L","𝘓":"L","𝙇":"L","𝙻":"L","Ⳑ":"L",Ꮮ:"L",ᒪ:"L","ꓡ":"L","𖼖":"L","𑢣":"L","𑢲":"L","𐐛":"L","𐔦":"L",ﴼ:"l̋",ﴽ:"l̋",ł:"l̸",Ł:"L̸",ɭ:"l̨",Ɨ:"l̵",ƚ:"l̵",ɫ:"l̴",إ:"lٕ",ﺈ:"lٕ",ﺇ:"lٕ",ٳ:"lٕ",ŀ:"l·",Ŀ:"l·",ᒷ:"l·","🄂":"l,","⒈":"l.",ױ:"l'","⒓":"l2.","㏫":"l2日","㋋":"l2月","㍤":"l2点","⒔":"l3.","㏬":"l3日","㍥":"l3点","⒕":"l4.","㏭":"l4日","㍦":"l4点","⒖":"l5.","㏮":"l5日","㍧":"l5点","⒗":"l6.","㏯":"l6日","㍨":"l6点","⒘":"l7.","㏰":"l7日","㍩":"l7点","⒙":"l8.","㏱":"l8日","㍪":"l8点","⒚":"l9.","㏲":"l9日","㍫":"l9点",lj:"lj",IJ:"lJ",Lj:"Lj",LJ:"LJ","‖":"ll","∥":"ll","Ⅱ":"ll",ǁ:"ll",װ:"ll","𐆙":"l̵l̵","⒒":"ll.","Ⅲ":"lll","𐆘":"l̵l̵S̵","㏪":"ll日","㋊":"ll月","㍣":"ll点",Ю:"lO","⒑":"lO.","㏩":"lO日","㋉":"lO月","㍢":"lO点",ʪ:"ls","₶":"lt","Ⅳ":"lV","Ⅸ":"lX",ɮ:"lȝ",ʫ:"lz",أ:"lٴ",ﺄ:"lٴ",ﺃ:"lٴ",ٲ:"lٴ",ٵ:"lٴ",ﷳ:"lكبر",ﷲ:"lللّٰo","㏠":"l日","㋀":"l月","㍙":"l点","ⳑ":"ʟ","ꮮ":"ʟ","𐑃":"ʟ",M:"M","Ⅿ":"M",ℳ:"M","𝐌":"M","𝑀":"M","𝑴":"M","𝓜":"M","𝔐":"M","𝕄":"M","𝕸":"M","𝖬":"M","𝗠":"M","𝘔":"M","𝙈":"M","𝙼":"M",Μ:"M","𝚳":"M","𝛭":"M","𝜧":"M","𝝡":"M","𝞛":"M","Ϻ":"M","Ⲙ":"M",М:"M",Ꮇ:"M",ᗰ:"M",ᛖ:"M","ꓟ":"M","𐊰":"M","𐌑":"M","Ӎ":"M̦","🝫":"MB","ⷨ":"ᷟ","𝐧":"n","𝑛":"n","𝒏":"n","𝓃":"n","𝓷":"n","𝔫":"n","𝕟":"n","𝖓":"n","𝗇":"n","𝗻":"n","𝘯":"n","𝙣":"n","𝚗":"n",ո:"n",ռ:"n",N:"N",ℕ:"N","𝐍":"N","𝑁":"N","𝑵":"N","𝒩":"N","𝓝":"N","𝔑":"N","𝕹":"N","𝖭":"N","𝗡":"N","𝘕":"N","𝙉":"N","𝙽":"N",Ν:"N","𝚴":"N","𝛮":"N","𝜨":"N","𝝢":"N","𝞜":"N","Ⲛ":"N","ꓠ":"N","𐔓":"N","𐆎":"N̊",ɳ:"n̨",ƞ:"n̩",η:"n̩","𝛈":"n̩","𝜂":"n̩","𝜼":"n̩","𝝶":"n̩","𝞰":"n̩",Ɲ:"N̦","ᵰ":"n̴",nj:"nj",Nj:"Nj",NJ:"NJ","№":"No","ͷ":"ᴎ",и:"ᴎ","𐑍":"ᴎ",ņ:"ɲ","ం":"o","ಂ":"o","ം":"o","ං":"o","०":"o","੦":"o","૦":"o","௦":"o","౦":"o","೦":"o","൦":"o","๐":"o","໐":"o","၀":"o","٥":"o","۵":"o",o:"o",ℴ:"o","𝐨":"o","𝑜":"o","𝒐":"o","𝓸":"o","𝔬":"o","𝕠":"o","𝖔":"o","𝗈":"o","𝗼":"o","𝘰":"o","𝙤":"o","𝚘":"o","ᴏ":"o","ᴑ":"o","ꬽ":"o",ο:"o","𝛐":"o","𝜊":"o","𝝄":"o","𝝾":"o","𝞸":"o",σ:"o","𝛔":"o","𝜎":"o","𝝈":"o","𝞂":"o","𝞼":"o","ⲟ":"o",о:"o","ჿ":"o",օ:"o",ס:"o",ه:"o","𞸤":"o","𞹤":"o","𞺄":"o",ﻫ:"o",ﻬ:"o",ﻪ:"o",ﻩ:"o",ھ:"o",ﮬ:"o",ﮭ:"o",ﮫ:"o",ﮪ:"o",ہ:"o",ﮨ:"o",ﮩ:"o",ﮧ:"o",ﮦ:"o",ە:"o",ഠ:"o",ဝ:"o","𐓪":"o","𑣈":"o","𑣗":"o","𐐬":"o","߀":"O","০":"O","୦":"O","〇":"O","𑓐":"O","𑣠":"O","𝟎":"O","𝟘":"O","𝟢":"O","𝟬":"O","𝟶":"O","🯰":"O",O:"O","𝐎":"O","𝑂":"O","𝑶":"O","𝒪":"O","𝓞":"O","𝔒":"O","𝕆":"O","𝕺":"O","𝖮":"O","𝗢":"O","𝘖":"O","𝙊":"O","𝙾":"O",Ο:"O","𝚶":"O","𝛰":"O","𝜪":"O","𝝤":"O","𝞞":"O","Ⲟ":"O",О:"O",Օ:"O","ⵔ":"O",ዐ:"O",ଠ:"O","𐓂":"O","ꓳ":"O","𑢵":"O","𐊒":"O","𐊫":"O","𐐄":"O","𐔖":"O","⁰":"º","ᵒ":"º",ǒ:"ŏ",Ǒ:"Ŏ","ۿ":"ô",Ő:"Ö",ø:"o̸","ꬾ":"o̸",Ø:"O̸","ⵁ":"O̸",Ǿ:"Ó̸",ɵ:"o̵","ꝋ":"o̵",ө:"o̵",ѳ:"o̵","ꮎ":"o̵","ꮻ":"o̵","⊖":"O̵","⊝":"O̵","⍬":"O̵","𝈚":"O̵","🜔":"O̵",Ɵ:"O̵","Ꝋ":"O̵",θ:"O̵",ϑ:"O̵","𝛉":"O̵","𝛝":"O̵","𝜃":"O̵","𝜗":"O̵","𝜽":"O̵","𝝑":"O̵","𝝷":"O̵","𝞋":"O̵","𝞱":"O̵","𝟅":"O̵",Θ:"O̵","ϴ":"O̵","𝚯":"O̵","𝚹":"O̵","𝛩":"O̵","𝛳":"O̵","𝜣":"O̵","𝜭":"O̵","𝝝":"O̵","𝝧":"O̵","𝞗":"O̵","𝞡":"O̵",Ө:"O̵",Ѳ:"O̵","ⴱ":"O̵",Ꮎ:"O̵",Ꮻ:"O̵","ꭴ":"ơ",ﳙ:"oٰ","🄁":"O,","🄀":"O.",ơ:"o'",Ơ:"O'",Ꭴ:"O'","%":"º/₀","٪":"º/₀","⁒":"º/₀","‰":"º/₀₀","؉":"º/₀₀","‱":"º/₀₀₀","؊":"º/₀₀₀",œ:"oe",Œ:"OE",ɶ:"oᴇ","∞":"oo","ꝏ":"oo","ꚙ":"oo","Ꝏ":"OO","Ꚙ":"OO",ﳗ:"oج",ﱑ:"oج",ﳘ:"oم",ﱒ:"oم",ﶓ:"oمج",ﶔ:"oمم",ﱓ:"oى",ﱔ:"oى","ൟ":"oരo",တ:"oာ","㍘":"O点","ↄ":"ɔ","ᴐ":"ɔ","ͻ":"ɔ","𐑋":"ɔ","Ↄ":"Ɔ","Ͻ":"Ɔ","ꓛ":"Ɔ","𐐣":"Ɔ","ꬿ":"ɔ̸","ꭢ":"ɔe","𐐿":"ɷ","⍴":"p",p:"p","𝐩":"p","𝑝":"p","𝒑":"p","𝓅":"p","𝓹":"p","𝔭":"p","𝕡":"p","𝖕":"p","𝗉":"p","𝗽":"p","𝘱":"p","𝙥":"p","𝚙":"p",ρ:"p",ϱ:"p","𝛒":"p","𝛠":"p","𝜌":"p","𝜚":"p","𝝆":"p","𝝔":"p","𝞀":"p","𝞎":"p","𝞺":"p","𝟈":"p","ⲣ":"p",р:"p",P:"P",ℙ:"P","𝐏":"P","𝑃":"P","𝑷":"P","𝒫":"P","𝓟":"P","𝔓":"P","𝕻":"P","𝖯":"P","𝗣":"P","𝘗":"P","𝙋":"P","𝙿":"P",Ρ:"P","𝚸":"P","𝛲":"P","𝜬":"P","𝝦":"P","𝞠":"P","Ⲣ":"P",Р:"P",Ꮲ:"P",ᑭ:"P","ꓑ":"P","𐊕":"P",ƥ:"p̔","ᵽ":"p̵",ᑷ:"p·",ᒆ:"P'","ᴩ":"ᴘ","ꮲ":"ᴘ",φ:"ɸ",ϕ:"ɸ","𝛗":"ɸ","𝛟":"ɸ","𝜑":"ɸ","𝜙":"ɸ","𝝋":"ɸ","𝝓":"ɸ","𝞅":"ɸ","𝞍":"ɸ","𝞿":"ɸ","𝟇":"ɸ","ⲫ":"ɸ",ф:"ɸ","𝐪":"q","𝑞":"q","𝒒":"q","𝓆":"q","𝓺":"q","𝔮":"q","𝕢":"q","𝖖":"q","𝗊":"q","𝗾":"q","𝘲":"q","𝙦":"q","𝚚":"q","ԛ":"q",գ:"q",զ:"q",ℚ:"Q","𝐐":"Q","𝑄":"Q","𝑸":"Q","𝒬":"Q","𝓠":"Q","𝔔":"Q","𝕼":"Q","𝖰":"Q","𝗤":"Q","𝘘":"Q","𝙌":"Q","𝚀":"Q","ⵕ":"Q",ʠ:"q̔","🜀":"QE","ᶐ":"ɋ","ᴋ":"ĸ",κ:"ĸ",ϰ:"ĸ","𝛋":"ĸ","𝛞":"ĸ","𝜅":"ĸ","𝜘":"ĸ","𝜿":"ĸ","𝝒":"ĸ","𝝹":"ĸ","𝞌":"ĸ","𝞳":"ĸ","𝟆":"ĸ","ⲕ":"ĸ",к:"ĸ","ꮶ":"ĸ",қ:"ĸ̩",ҟ:"ĸ̵","𝐫":"r","𝑟":"r","𝒓":"r","𝓇":"r","𝓻":"r","𝔯":"r","𝕣":"r","𝖗":"r","𝗋":"r","𝗿":"r","𝘳":"r","𝙧":"r","𝚛":"r","ꭇ":"r","ꭈ":"r","ᴦ":"r","ⲅ":"r",г:"r","ꮁ":"r","𝈖":"R",ℛ:"R",ℜ:"R",ℝ:"R","𝐑":"R","𝑅":"R","𝑹":"R","𝓡":"R","𝕽":"R","𝖱":"R","𝗥":"R","𝘙":"R","𝙍":"R","𝚁":"R",Ʀ:"R",Ꭱ:"R",Ꮢ:"R","𐒴":"R",ᖇ:"R","ꓣ":"R","𖼵":"R",ɽ:"r̨",ɼ:"r̩","ɍ":"r̵",ғ:"r̵","ᵲ":"r̴",ґ:"r'","𑣣":"rn",m:nl,"ⅿ":"rn","𝐦":"rn","𝑚":"rn","𝒎":"rn","𝓂":"rn","𝓶":"rn","𝔪":"rn","𝕞":"rn","𝖒":"rn","𝗆":"rn","𝗺":"rn","𝘮":"rn","𝙢":"rn","𝚖":"rn","𑜀":"rn","₥":"rn̸",ɱ:"rn̦","ᵯ":"rn̴","₨":"Rs","ꭱ":"ʀ","ꮢ":"ʀ",я:"ᴙ","ᵳ":"ɾ̴","℩":"ɿ",s:"s","𝐬":"s","𝑠":"s","𝒔":"s","𝓈":"s","𝓼":"s","𝔰":"s","𝕤":"s","𝖘":"s","𝗌":"s","𝘀":"s","𝘴":"s","𝙨":"s","𝚜":"s","ꜱ":"s",ƽ:"s",ѕ:"s","ꮪ":"s","𑣁":"s","𐑈":"s",S:"S","𝐒":"S","𝑆":"S","𝑺":"S","𝒮":"S","𝓢":"S","𝔖":"S","𝕊":"S","𝕾":"S","𝖲":"S","𝗦":"S","𝘚":"S","𝙎":"S","𝚂":"S",Ѕ:"S",Տ:"S",Ꮥ:"S",Ꮪ:"S","ꓢ":"S","𖼺":"S","𐊖":"S","𐐠":"S",ʂ:"s̨","ᵴ":"s̴","ꞵ":"ß",β:"ß",ϐ:"ß","𝛃":"ß","𝛽":"ß","𝜷":"ß","𝝱":"ß","𝞫":"ß",Ᏸ:"ß","🝜":"sss",st:"st","∫":"ʃ","ꭍ":"ʃ","∑":"Ʃ","⅀":"Ʃ",Σ:"Ʃ","𝚺":"Ʃ","𝛴":"Ʃ","𝜮":"Ʃ","𝝨":"Ʃ","𝞢":"Ʃ","ⵉ":"Ʃ","∬":"ʃʃ","∭":"ʃʃʃ","⨌":"ʃʃʃʃ","𝐭":"t","𝑡":"t","𝒕":"t","𝓉":"t","𝓽":"t","𝔱":"t","𝕥":"t","𝖙":"t","𝗍":"t","𝘁":"t","𝘵":"t","𝙩":"t","𝚝":"t","⊤":"T","⟙":"T","🝨":"T",T:"T","𝐓":"T","𝑇":"T","𝑻":"T","𝒯":"T","𝓣":"T","𝔗":"T","𝕋":"T","𝕿":"T","𝖳":"T","𝗧":"T","𝘛":"T","𝙏":"T","𝚃":"T",Τ:"T","𝚻":"T","𝛵":"T","𝜯":"T","𝝩":"T","𝞣":"T","Ⲧ":"T",Т:"T",Ꭲ:"T","ꓔ":"T","𖼊":"T","𑢼":"T","𐊗":"T","𐊱":"T","𐌕":"T",ƭ:"t̔","⍡":"T̈","Ⱦ":"T̸",Ț:"Ţ",Ʈ:"T̨",Ҭ:"T̩","₮":"T⃫",ŧ:"t̵",Ŧ:"T̵","ᵵ":"t̴",Ⴀ:"Ꞇ","Ꜩ":"T3",ʨ:"tɕ","℡":"TEL","ꝷ":"tf",ʦ:"ts",ʧ:"tʃ","ꜩ":"tȝ",τ:"ᴛ","𝛕":"ᴛ","𝜏":"ᴛ","𝝉":"ᴛ","𝞃":"ᴛ","𝞽":"ᴛ",т:"ᴛ","ꭲ":"ᴛ",ҭ:"ᴛ̩",ţ:"ƫ",ț:"ƫ",Ꮏ:"ƫ","𝐮":"u","𝑢":"u","𝒖":"u","𝓊":"u","𝓾":"u","𝔲":"u","𝕦":"u","𝖚":"u","𝗎":"u","𝘂":"u","𝘶":"u","𝙪":"u","𝚞":"u","ꞟ":"u","ᴜ":"u","ꭎ":"u","ꭒ":"u",ʋ:"u",υ:"u","𝛖":"u","𝜐":"u","𝝊":"u","𝞄":"u","𝞾":"u",ս:"u","𐓶":"u","𑣘":"u","∪":"U","⋃":"U","𝐔":"U","𝑈":"U","𝑼":"U","𝒰":"U","𝓤":"U","𝔘":"U","𝕌":"U","𝖀":"U","𝖴":"U","𝗨":"U","𝘜":"U","𝙐":"U","𝚄":"U",Ս:"U",ሀ:"U","𐓎":"U",ᑌ:"U","ꓴ":"U","𖽂":"U","𑢸":"U",ǔ:"ŭ",Ǔ:"Ŭ","ᵾ":"u̵","ꮜ":"u̵","Ʉ":"U̵",Ꮜ:"U̵",ᑘ:"U·",ᑧ:"U'","ᵫ":"ue","ꭣ":"uo",ṃ:"ꭑ",պ:"ɰ",ሣ:"ɰ","℧":"Ʊ",ᘮ:"Ʊ",ᘴ:"Ʊ","ᵿ":"ʊ̵","∨":"v","⋁":"v",v:"v","ⅴ":"v","𝐯":"v","𝑣":"v","𝒗":"v","𝓋":"v","𝓿":"v","𝔳":"v","𝕧":"v","𝖛":"v","𝗏":"v","𝘃":"v","𝘷":"v","𝙫":"v","𝚟":"v","ᴠ":"v",ν:"v","𝛎":"v","𝜈":"v","𝝂":"v","𝝼":"v","𝞶":"v",ѵ:"v",ט:"v","𑜆":"v","ꮩ":"v","𑣀":"v","𝈍":"V","٧":"V","۷":"V","Ⅴ":"V","𝐕":"V","𝑉":"V","𝑽":"V","𝒱":"V","𝓥":"V","𝔙":"V","𝕍":"V","𝖁":"V","𝖵":"V","𝗩":"V","𝘝":"V","𝙑":"V","𝚅":"V",Ѵ:"V","ⴸ":"V",Ꮩ:"V",ᐯ:"V","ꛟ":"V","ꓦ":"V","𖼈":"V","𑢠":"V","𐔝":"V","𐆗":"V̵",ᐻ:"V·","🝬":"VB","ⅵ":"vi","ⅶ":"vii","ⅷ":"viii","Ⅵ":"Vl","Ⅶ":"Vll","Ⅷ":"Vlll","🜈":"Vᷤ","ᴧ":"ʌ","𐓘":"ʌ","٨":"Ʌ","۸":"Ʌ",Λ:"Ʌ","𝚲":"Ʌ","𝛬":"Ʌ","𝜦":"Ʌ","𝝠":"Ʌ","𝞚":"Ʌ",Л:"Ʌ","ⴷ":"Ʌ","𐒰":"Ʌ",ᐱ:"Ʌ","ꛎ":"Ʌ","ꓥ":"Ʌ","𖼽":"Ʌ","𐊍":"Ʌ","Ӆ":"Ʌ̦",ᐽ:"Ʌ·",ɯ:"w","𝐰":"w","𝑤":"w","𝒘":"w","𝓌":"w","𝔀":"w","𝔴":"w","𝕨":"w","𝖜":"w","𝗐":"w","𝘄":"w","𝘸":"w","𝙬":"w","𝚠":"w","ᴡ":"w",ѡ:"w","ԝ":"w",ա:"w","𑜊":"w","𑜎":"w","𑜏":"w","ꮃ":"w","𑣯":"W","𑣦":"W","𝐖":"W","𝑊":"W","𝑾":"W","𝒲":"W","𝓦":"W","𝔚":"W","𝕎":"W","𝖂":"W","𝖶":"W","𝗪":"W","𝘞":"W","𝙒":"W","𝚆":"W","Ԝ":"W",Ꮃ:"W",Ꮤ:"W","ꓪ":"W",ѽ:"w҆҇","𑓅":"ẇ","₩":"W̵","ꝡ":"w̦","ᴍ":"ʍ",м:"ʍ","ꮇ":"ʍ","ӎ":"ʍ̦","᙮":"x","×":"x","⤫":"x","⤬":"x","⨯":"x",x:"x","ⅹ":"x","𝐱":"x","𝑥":"x","𝒙":"x","𝓍":"x","𝔁":"x","𝔵":"x","𝕩":"x","𝖝":"x","𝗑":"x","𝘅":"x","𝘹":"x","𝙭":"x","𝚡":"x",х:"x",ᕁ:"x",ᕽ:"x","ⷯ":"ͯ","᙭":"X","╳":"X","𐌢":"X","𑣬":"X",X:"X","Ⅹ":"X","𝐗":"X","𝑋":"X","𝑿":"X","𝒳":"X","𝓧":"X","𝔛":"X","𝕏":"X","𝖃":"X","𝖷":"X","𝗫":"X","𝘟":"X","𝙓":"X","𝚇":"X","Ꭓ":"X",Χ:"X","𝚾":"X","𝛸":"X","𝜲":"X","𝝬":"X","𝞦":"X","Ⲭ":"X",Х:"X","ⵝ":"X",ᚷ:"X","ꓫ":"X","𐊐":"X","𐊴":"X","𐌗":"X","𐔧":"X","⨰":"ẋ",Ҳ:"X̩","𐆖":"X̵","ⅺ":"xi","ⅻ":"xii","Ⅺ":"Xl","Ⅻ":"Xll",ɣ:"y","ᶌ":"y",y:"y","𝐲":"y","𝑦":"y","𝒚":"y","𝓎":"y","𝔂":"y","𝔶":"y","𝕪":"y","𝖞":"y","𝗒":"y","𝘆":"y","𝘺":"y","𝙮":"y","𝚢":"y",ʏ:"y","ỿ":"y","ꭚ":"y",γ:"y","ℽ":"y","𝛄":"y","𝛾":"y","𝜸":"y","𝝲":"y","𝞬":"y",у:"y",ү:"y",ყ:"y","𑣜":"y",Y:"Y","𝐘":"Y","𝑌":"Y","𝒀":"Y","𝒴":"Y","𝓨":"Y","𝔜":"Y","𝕐":"Y","𝖄":"Y","𝖸":"Y","𝗬":"Y","𝘠":"Y","𝙔":"Y","𝚈":"Y",Υ:"Y",ϒ:"Y","𝚼":"Y","𝛶":"Y","𝜰":"Y","𝝪":"Y","𝞤":"Y","Ⲩ":"Y",У:"Y",Ү:"Y",Ꭹ:"Y",Ꮍ:"Y","ꓬ":"Y","𖽃":"Y","𑢤":"Y","𐊲":"Y",ƴ:"y̔","ɏ":"y̵",ұ:"y̵","¥":"Y̵","Ɏ":"Y̵",Ұ:"Y̵",ʒ:"ȝ","ꝫ":"ȝ","ⳍ":"ȝ",ӡ:"ȝ",ჳ:"ȝ","𝐳":"z","𝑧":"z","𝒛":"z","𝓏":"z","𝔃":"z","𝔷":"z","𝕫":"z","𝖟":"z","𝗓":"z","𝘇":"z","𝘻":"z","𝙯":"z","𝚣":"z","ᴢ":"z","ꮓ":"z","𑣄":"z","𐋵":"Z","𑣥":"Z",Z:"Z",ℤ:"Z",ℨ:"Z","𝐙":"Z","𝑍":"Z","𝒁":"Z","𝒵":"Z","𝓩":"Z","𝖅":"Z","𝖹":"Z","𝗭":"Z","𝘡":"Z","𝙕":"Z","𝚉":"Z",Ζ:"Z","𝚭":"Z","𝛧":"Z","𝜡":"Z","𝝛":"Z","𝞕":"Z",Ꮓ:"Z","ꓜ":"Z","𑢩":"Z",ʐ:"z̨",ƶ:"z̵",Ƶ:"Z̵",ȥ:"z̦",Ȥ:"Z̦","ᵶ":"z̴",ƿ:"þ","ϸ":"þ","Ϸ":"Þ","𐓄":"Þ","⁹":"ꝰ","ᴤ":"ƨ",ϩ:"ƨ","ꙅ":"ƨ",ь:"ƅ","ꮟ":"ƅ",ы:"ƅi","ꭾ":"ɂ",ˤ:"ˁ","ꛍ":"ʡ","⊙":"ʘ","☉":"ʘ","⨀":"ʘ","Ꙩ":"ʘ","ⵙ":"ʘ","𐓃":"ʘ","ℾ":"Γ","𝚪":"Γ","𝛤":"Γ","𝜞":"Γ","𝝘":"Γ","𝞒":"Γ","Ⲅ":"Γ",Г:"Γ",Ꮁ:"Γ",ᒥ:"Γ","𖼇":"Γ",Ғ:"Γ̵",ᒯ:"Γ·",Ґ:"Γ'","∆":"Δ","△":"Δ","🜂":"Δ","𝚫":"Δ","𝛥":"Δ","𝜟":"Δ","𝝙":"Δ","𝞓":"Δ","Ⲇ":"Δ","ⵠ":"Δ",ᐃ:"Δ","𖼚":"Δ","𐊅":"Δ","𐊣":"Δ","⍙":"Δ̲",ᐏ:"Δ·",ᐬ:"Δᐠ","𝟋":"ϝ","𝛇":"ζ","𝜁":"ζ","𝜻":"ζ","𝝵":"ζ","𝞯":"ζ","ⳤ":"ϗ","𝛌":"λ","𝜆":"λ","𝝀":"λ","𝝺":"λ","𝞴":"λ","Ⲗ":"λ","𐓛":"λ",µ:"μ","𝛍":"μ","𝜇":"μ","𝝁":"μ","𝝻":"μ","𝞵":"μ","𝛏":"ξ","𝜉":"ξ","𝝃":"ξ","𝝽":"ξ","𝞷":"ξ","𝚵":"Ξ","𝛯":"Ξ","𝜩":"Ξ","𝝣":"Ξ","𝞝":"Ξ",ϖ:"π","ℼ":"π","𝛑":"π","𝛡":"π","𝜋":"π","𝜛":"π","𝝅":"π","𝝕":"π","𝝿":"π","𝞏":"π","𝞹":"π","𝟉":"π","ᴨ":"π",п:"π","∏":"Π","ℿ":"Π","𝚷":"Π","𝛱":"Π","𝜫":"Π","𝝥":"Π","𝞟":"Π","Ⲡ":"Π",П:"Π","ꛛ":"Π","𐊭":"Ϙ","𐌒":"Ϙ",ϛ:"ς","𝛓":"ς","𝜍":"ς","𝝇":"ς","𝞁":"ς","𝞻":"ς","𝚽":"Φ","𝛷":"Φ","𝜱":"Φ","𝝫":"Φ","𝞥":"Φ","Ⲫ":"Φ",Ф:"Φ",Փ:"Φ",ቀ:"Φ","ᛰ":"Φ","𐊳":"Φ","ꭓ":"χ","ꭕ":"χ","𝛘":"χ","𝜒":"χ","𝝌":"χ","𝞆":"χ","𝟀":"χ","ⲭ":"χ","𝛙":"ψ","𝜓":"ψ","𝝍":"ψ","𝞇":"ψ","𝟁":"ψ",ѱ:"ψ","𐓹":"ψ","𝚿":"Ψ","𝛹":"Ψ","𝜳":"Ψ","𝝭":"Ψ","𝞧":"Ψ","Ⲯ":"Ψ",Ѱ:"Ψ","𐓑":"Ψ",ᛘ:"Ψ","𐊵":"Ψ","⍵":"ω","ꞷ":"ω","𝛚":"ω","𝜔":"ω","𝝎":"ω","𝞈":"ω","𝟂":"ω","ⲱ":"ω","ꙍ":"ω",Ω:"Ω","𝛀":"Ω","𝛺":"Ω","𝜴":"Ω","𝝮":"Ω","𝞨":"Ω",ᘯ:"Ω",ᘵ:"Ω","𐊶":"Ω","⍹":"ω̲",ώ:"ῴ","☰":"Ⲷ","Ⳝ":"Ϭ",җ:"ж̩",Җ:"Ж̩","𝈋":"И","Ͷ":"И","ꚡ":"И","𐐥":"И",Й:"Ѝ","Ҋ":"Ѝ̦",ѝ:"й","ҋ":"й̦","𐒼":"Ӄ","ᴫ":"л","ӆ":"л̦","ꭠ":"љ","𐓫":"ꙩ","ᷮ":"ⷬ","𐓍":"Ћ","𝈂":"Ӿ","𝈢":"Ѡ",Ꮗ:"Ѡ",ᗯ:"Ѡ",Ѽ:"Ѡ҆҇","ᣭ":"Ѡ·","Ꞷ":"Ꙍ",ӌ:"ҷ",Ӌ:"Ҷ",Ҿ:"Ҽ̨","ⲽ":"ш","Ⲽ":"Ш","Ꙑ":"Ъl","℈":"Э","🜁":"Ꙙ","𖼜":"Ꙙ","ꦒ":"ⰿ",և:"եւ",ኔ:"ձ",ﬔ:"մե",ﬕ:"մի",ﬗ:"մխ",ﬓ:"մն","∩":"Ո","⋂":"Ո","𝉅":"Ո",በ:"Ո",ᑎ:"Ո","ꓵ":"Ո",ᑚ:"Ո·",ᑨ:"Ո'",ﬖ:"վն","₽":"Ք","˓":"ՙ",ʿ:"ՙ",ℵ:"א",ﬡ:"א",אָ:"אַ",אּ:"אַ",ﭏ:"אל",ℶ:"ב",ℷ:"ג",ℸ:"ד",ﬢ:"ד",ﬣ:"ה",יּ:"יִ",ﬤ:"כ",ﬥ:"ל",ﬦ:"ם",ﬠ:"ע",ﬧ:"ר",שׂ:"שׁ",שּ:"שׁ",שּׂ:"שּׁ",ﬨ:"ת",ﺀ:"ء","۽":"ء͈",ﺂ:"آ",ﺁ:"آ",ﭑ:"ٱ",ﭐ:"ٱ","𞸁":"ب","𞸡":"ب","𞹡":"ب","𞺁":"ب","𞺡":"ب",ﺑ:"ب",ﺒ:"ب",ﺐ:"ب",ﺏ:"ب","ݑ":"بۛ","ࢶ":"بۢ","ࢡ":"بٔ",ﲠ:"بo",ﳢ:"بo",ﲜ:"بج",ﰅ:"بج",ﲝ:"بح",ﰆ:"بح",ﷂ:"بحى",ﲞ:"بخ",ﰇ:"بخ",ﳒ:"بخ",ﱋ:"بخ",ﶞ:"بخى",ﱪ:"بر",ﱫ:"بز",ﲟ:"بم",ﳡ:"بم",ﱬ:"بم",ﰈ:"بم",ﱭ:"بن",ﱮ:"بى",ﰉ:"بى",ﱯ:"بى",ﰊ:"بى",ﭔ:"ٻ",ﭕ:"ٻ",ﭓ:"ٻ",ﭒ:"ٻ",ې:"ٻ",ﯦ:"ٻ",ﯧ:"ٻ",ﯥ:"ٻ",ﯤ:"ٻ",ﭜ:"ڀ",ﭝ:"ڀ",ﭛ:"ڀ",ﭚ:"ڀ","ࢩ":"ݔ","ݧ":"ݔ","⍥":"ة",ö:"ة",ﺔ:"ة",ﺓ:"ة",ۃ:"ة","𞸕":"ت","𞸵":"ت","𞹵":"ت","𞺕":"ت","𞺵":"ت",ﺗ:"ت",ﺘ:"ت",ﺖ:"ت",ﺕ:"ت",ﲥ:"تo",ﳤ:"تo",ﲡ:"تج",ﰋ:"تج",ﵐ:"تجم",ﶠ:"تجى",ﶟ:"تجى",ﲢ:"تح",ﰌ:"تح",ﵒ:"تحج",ﵑ:"تحج",ﵓ:"تحم",ﲣ:"تخ",ﰍ:"تخ",ﵔ:"تخم",ﶢ:"تخى",ﶡ:"تخى",ﱰ:"تر",ﱱ:"تز",ﲤ:"تم",ﳣ:"تم",ﱲ:"تم",ﰎ:"تم",ﵕ:"تمج",ﵖ:"تمح",ﵗ:"تمخ",ﶤ:"تمى",ﶣ:"تمى",ﱳ:"تن",ﱴ:"تى",ﰏ:"تى",ﱵ:"تى",ﰐ:"تى",ﭠ:"ٺ",ﭡ:"ٺ",ﭟ:"ٺ",ﭞ:"ٺ",ﭤ:"ٿ",ﭥ:"ٿ",ﭣ:"ٿ",ﭢ:"ٿ","𞸂":"ج","𞸢":"ج","𞹂":"ج","𞹢":"ج","𞺂":"ج","𞺢":"ج",ﺟ:"ج",ﺠ:"ج",ﺞ:"ج",ﺝ:"ج",ﲧ:"جح",ﰕ:"جح",ﶦ:"جحى",ﶾ:"جحى",ﷻ:"جل جلlلo",ﲨ:"جم",ﰖ:"جم",ﵙ:"جمح",ﵘ:"جمح",ﶧ:"جمى",ﶥ:"جمى",ﴝ:"جى",ﴁ:"جى",ﴞ:"جى",ﴂ:"جى",ﭸ:"ڃ",ﭹ:"ڃ",ﭷ:"ڃ",ﭶ:"ڃ",ﭴ:"ڄ",ﭵ:"ڄ",ﭳ:"ڄ",ﭲ:"ڄ",ﭼ:"چ",ﭽ:"چ",ﭻ:"چ",ﭺ:"چ",ﮀ:"ڇ",ﮁ:"ڇ",ﭿ:"ڇ",ﭾ:"ڇ","𞸇":"ح","𞸧":"ح","𞹇":"ح","𞹧":"ح","𞺇":"ح","𞺧":"ح",ﺣ:"ح",ﺤ:"ح",ﺢ:"ح",ﺡ:"ح",څ:"حۛ",ځ:"حٔ","ݲ":"حٔ",ﲩ:"حج",ﰗ:"حج",ﶿ:"حجى",ﲪ:"حم",ﰘ:"حم",ﵛ:"حمى",ﵚ:"حمى",ﴛ:"حى",ﳿ:"حى",ﴜ:"حى",ﴀ:"حى","𞸗":"خ","𞸷":"خ","𞹗":"خ","𞹷":"خ","𞺗":"خ","𞺷":"خ",ﺧ:"خ",ﺨ:"خ",ﺦ:"خ",ﺥ:"خ",ﲫ:"خج",ﰙ:"خج",ﰚ:"خح",ﲬ:"خم",ﰛ:"خم",ﴟ:"خى",ﴃ:"خى",ﴠ:"خى",ﴄ:"خى","𐋡":"د","𞸃":"د","𞺃":"د","𞺣":"د",ﺪ:"د",ﺩ:"د",ڈ:"دؕ",ﮉ:"دؕ",ﮈ:"دؕ",ڎ:"دۛ",ﮇ:"دۛ",ﮆ:"دۛ","ۮ":"د̂","ࢮ":"د̤̣","𞸘":"ذ","𞺘":"ذ","𞺸":"ذ",ﺬ:"ذ",ﺫ:"ذ",ﱛ:"ذٰ",ڋ:"ڊؕ",ﮅ:"ڌ",ﮄ:"ڌ",ﮃ:"ڍ",ﮂ:"ڍ","𞸓":"ر","𞺓":"ر","𞺳":"ر",ﺮ:"ر",ﺭ:"ر",ڑ:"رؕ",ﮍ:"رؕ",ﮌ:"رؕ",ژ:"رۛ",ﮋ:"رۛ",ﮊ:"رۛ",ڒ:"ر̆","ࢹ":"ر̆̇","ۯ":"ر̂","ݬ":"رٔ",ﱜ:"رٰ",ﷶ:"رسول","﷼":"رىlل","𞸆":"ز","𞺆":"ز","𞺦":"ز",ﺰ:"ز",ﺯ:"ز","ࢲ":"ز̂","ݱ":"ڗؕ","𞸎":"س","𞸮":"س","𞹎":"س","𞹮":"س","𞺎":"س","𞺮":"س",ﺳ:"س",ﺴ:"س",ﺲ:"س",ﺱ:"س",ش:"سۛ","𞸔":"سۛ","𞸴":"سۛ","𞹔":"سۛ","𞹴":"سۛ","𞺔":"سۛ","𞺴":"سۛ",ﺷ:"سۛ",ﺸ:"سۛ",ﺶ:"سۛ",ﺵ:"سۛ","ݾ":"س̂",ﴱ:"سo",ﳨ:"سo",ﴲ:"سۛo",ﳪ:"سۛo",ﲭ:"سج",ﴴ:"سج",ﰜ:"سج",ﴭ:"سۛج",ﴷ:"سۛج",ﴥ:"سۛج",ﴉ:"سۛج",ﵝ:"سجح",ﵞ:"سجى",ﵩ:"سۛجى",ﲮ:"سح",ﴵ:"سح",ﰝ:"سح",ﴮ:"سۛح",ﴸ:"سۛح",ﴦ:"سۛح",ﴊ:"سۛح",ﵜ:"سحج",ﵨ:"سۛحم",ﵧ:"سۛحم",ﶪ:"سۛحى",ﲯ:"سخ",ﴶ:"سخ",ﰞ:"سخ",ﴯ:"سۛخ",ﴹ:"سۛخ",ﴧ:"سۛخ",ﴋ:"سۛخ",ﶨ:"سخى",ﷆ:"سخى",ﴪ:"سر",ﴎ:"سر",ﴩ:"سۛر",ﴍ:"سۛر",ﲰ:"سم",ﳧ:"سم",ﰟ:"سم",ﴰ:"سۛم",ﳩ:"سۛم",ﴨ:"سۛم",ﴌ:"سۛم",ﵡ:"سمج",ﵠ:"سمح",ﵟ:"سمح",ﵫ:"سۛمخ",ﵪ:"سۛمخ",ﵣ:"سمم",ﵢ:"سمم",ﵭ:"سۛمم",ﵬ:"سۛمم",ﴗ:"سى",ﳻ:"سى",ﴘ:"سى",ﳼ:"سى",ﴙ:"سۛى",ﳽ:"سۛى",ﴚ:"سۛى",ﳾ:"سۛى","𐋲":"ص","𞸑":"ص","𞸱":"ص","𞹑":"ص","𞹱":"ص","𞺑":"ص","𞺱":"ص",ﺻ:"ص",ﺼ:"ص",ﺺ:"ص",ﺹ:"ص",ڞ:"صۛ","ࢯ":"ص̤̣",ﲱ:"صح",ﰠ:"صح",ﵥ:"صحح",ﵤ:"صحح",ﶩ:"صحى",ﲲ:"صخ",ﴫ:"صر",ﴏ:"صر",ﷵ:"صلعم",ﷹ:"صلى",ﷰ:"صلى",ﷺ:"صلى lللo علىo وسلم",ﲳ:"صم",ﰡ:"صم",ﷅ:"صمم",ﵦ:"صمم",ﴡ:"صى",ﴅ:"صى",ﴢ:"صى",ﴆ:"صى","𞸙":"ض","𞸹":"ض","𞹙":"ض","𞹹":"ض","𞺙":"ض","𞺹":"ض",ﺿ:"ض",ﻀ:"ض",ﺾ:"ض",ﺽ:"ض",ﲴ:"ضج",ﰢ:"ضج",ﲵ:"ضح",ﰣ:"ضح",ﵮ:"ضحى",ﶫ:"ضحى",ﲶ:"ضخ",ﰤ:"ضخ",ﵰ:"ضخم",ﵯ:"ضخم",ﴬ:"ضر",ﴐ:"ضر",ﲷ:"ضم",ﰥ:"ضم",ﴣ:"ضى",ﴇ:"ضى",ﴤ:"ضى",ﴈ:"ضى","𐋨":"ط","𞸈":"ط","𞹨":"ط","𞺈":"ط","𞺨":"ط",ﻃ:"ط",ﻄ:"ط",ﻂ:"ط",ﻁ:"ط",ڟ:"طۛ",ﲸ:"طح",ﰦ:"طح",ﴳ:"طم",ﴺ:"طم",ﰧ:"طم",ﵲ:"طمح",ﵱ:"طمح",ﵳ:"طمم",ﵴ:"طمى",ﴑ:"طى",ﳵ:"طى",ﴒ:"طى",ﳶ:"طى","𞸚":"ظ","𞹺":"ظ","𞺚":"ظ","𞺺":"ظ",ﻇ:"ظ",ﻈ:"ظ",ﻆ:"ظ",ﻅ:"ظ",ﲹ:"ظم",ﴻ:"ظم",ﰨ:"ظم","؏":"ع","𞸏":"ع","𞸯":"ع","𞹏":"ع","𞹯":"ع","𞺏":"ع","𞺯":"ع",ﻋ:"ع",ﻌ:"ع",ﻊ:"ع",ﻉ:"ع",ﲺ:"عج",ﰩ:"عج",ﷄ:"عجم",ﵵ:"عجم",ﷷ:"علىo",ﲻ:"عم",ﰪ:"عم",ﵷ:"عمم",ﵶ:"عمم",ﵸ:"عمى",ﶶ:"عمى",ﴓ:"عى",ﳷ:"عى",ﴔ:"عى",ﳸ:"عى","𞸛":"غ","𞸻":"غ","𞹛":"غ","𞹻":"غ","𞺛":"غ","𞺻":"غ",ﻏ:"غ",ﻐ:"غ",ﻎ:"غ",ﻍ:"غ",ﲼ:"غج",ﰫ:"غج",ﲽ:"غم",ﰬ:"غم",ﵹ:"غمم",ﵻ:"غمى",ﵺ:"غمى",ﴕ:"غى",ﳹ:"غى",ﴖ:"غى",ﳺ:"غى","𞸐":"ف","𞸰":"ف","𞹰":"ف","𞺐":"ف","𞺰":"ف",ﻓ:"ف",ﻔ:"ف",ﻒ:"ف",ﻑ:"ف",ڧ:"ف",ﲾ:"فج",ﰭ:"فج",ﲿ:"فح",ﰮ:"فح",ﳀ:"فخ",ﰯ:"فخ",ﵽ:"فخم",ﵼ:"فخم",ﳁ:"فم",ﰰ:"فم",ﷁ:"فمى",ﱼ:"فى",ﰱ:"فى",ﱽ:"فى",ﰲ:"فى","𞸞":"ڡ","𞹾":"ڡ","ࢻ":"ڡ","ٯ":"ڡ","𞸟":"ڡ","𞹟":"ڡ","ࢼ":"ڡ",ڤ:"ڡۛ",ﭬ:"ڡۛ",ﭭ:"ڡۛ",ﭫ:"ڡۛ",ﭪ:"ڡۛ",ڨ:"ڡۛ","ࢤ":"ڢۛ",ﭰ:"ڦ",ﭱ:"ڦ",ﭯ:"ڦ",ﭮ:"ڦ","𞸒":"ق","𞸲":"ق","𞹒":"ق","𞹲":"ق","𞺒":"ق","𞺲":"ق",ﻗ:"ق",ﻘ:"ق",ﻖ:"ق",ﻕ:"ق",ﳂ:"قح",ﰳ:"قح",ﷱ:"قلى",ﳃ:"قم",ﰴ:"قم",ﶴ:"قمح",ﵾ:"قمح",ﵿ:"قمم",ﶲ:"قمى",ﱾ:"قى",ﰵ:"قى",ﱿ:"قى",ﰶ:"قى","𞸊":"ك","𞸪":"ك","𞹪":"ك",ﻛ:"ك",ﻜ:"ك",ﻚ:"ك",ﻙ:"ك",ک:"ك",ﮐ:"ك",ﮑ:"ك",ﮏ:"ك",ﮎ:"ك",ڪ:"ك",ڭ:"كۛ",ﯕ:"كۛ",ﯖ:"كۛ",ﯔ:"كۛ",ﯓ:"كۛ","ݣ":"كۛ",ﲀ:"كl",ﰷ:"كl",ﳄ:"كج",ﰸ:"كج",ﳅ:"كح",ﰹ:"كح",ﳆ:"كخ",ﰺ:"كخ",ﳇ:"كل",ﳫ:"كل",ﲁ:"كل",ﰻ:"كل",ﳈ:"كم",ﳬ:"كم",ﲂ:"كم",ﰼ:"كم",ﷃ:"كمم",ﶻ:"كمم",ﶷ:"كمى",ﲃ:"كى",ﰽ:"كى",ﲄ:"كى",ﰾ:"كى","ݢ":"ڬ",ﮔ:"گ",ﮕ:"گ",ﮓ:"گ",ﮒ:"گ","ࢰ":"گ",ڴ:"گۛ",ﮜ:"ڱ",ﮝ:"ڱ",ﮛ:"ڱ",ﮚ:"ڱ",ﮘ:"ڳ",ﮙ:"ڳ",ﮗ:"ڳ",ﮖ:"ڳ","𞸋":"ل","𞸫":"ل","𞹋":"ل","𞺋":"ل","𞺫":"ل",ﻟ:"ل",ﻠ:"ل",ﻞ:"ل",ﻝ:"ل",ڷ:"لۛ",ڵ:"ل̆",ﻼ:"لl",ﻻ:"لl",ﻺ:"لlٕ",ﻹ:"لlٕ",ﻸ:"لlٴ",ﻷ:"لlٴ",ﳍ:"لo",ﻶ:"لآ",ﻵ:"لآ",ﳉ:"لج",ﰿ:"لج",ﶃ:"لجج",ﶄ:"لجج",ﶺ:"لجم",ﶼ:"لجم",ﶬ:"لجى",ﳊ:"لح",ﱀ:"لح",ﶵ:"لحم",ﶀ:"لحم",ﶂ:"لحى",ﶁ:"لحى",ﳋ:"لخ",ﱁ:"لخ",ﶆ:"لخم",ﶅ:"لخم",ﳌ:"لم",ﳭ:"لم",ﲅ:"لم",ﱂ:"لم",ﶈ:"لمح",ﶇ:"لمح",ﶭ:"لمى",ﲆ:"لى",ﱃ:"لى",ﲇ:"لى",ﱄ:"لى","𞸌":"م","𞸬":"م","𞹬":"م","𞺌":"م","𞺬":"م",ﻣ:"م",ﻤ:"م",ﻢ:"م",ﻡ:"م","ࢧ":"مۛ","۾":"م͈",ﲈ:"مl",ﳎ:"مج",ﱅ:"مج",ﶌ:"مجح",ﶒ:"مجخ",ﶍ:"مجم",ﷀ:"مجى",ﳏ:"مح",ﱆ:"مح",ﶉ:"محج",ﶊ:"محم",ﷴ:"محمد",ﶋ:"محى",ﳐ:"مخ",ﱇ:"مخ",ﶎ:"مخج",ﶏ:"مخم",ﶹ:"مخى",ﳑ:"مم",ﲉ:"مم",ﱈ:"مم",ﶱ:"ممى",ﱉ:"مى",ﱊ:"مى","𞸍":"ن","𞸭":"ن","𞹍":"ن","𞹭":"ن","𞺍":"ن","𞺭":"ن",ﻧ:"ن",ﻨ:"ن",ﻦ:"ن",ﻥ:"ن","ݨ":"نؕ","ݩ":"ن̆",ﳖ:"نo",ﳯ:"نo",ﶸ:"نجح",ﶽ:"نجح",ﶘ:"نجم",ﶗ:"نجم",ﶙ:"نجى",ﷇ:"نجى",ﳓ:"نح",ﱌ:"نح",ﶕ:"نحم",ﶖ:"نحى",ﶳ:"نحى",ﳔ:"نخ",ﱍ:"نخ",ﲊ:"نر",ﲋ:"نز",ﳕ:"نم",ﳮ:"نم",ﲌ:"نم",ﱎ:"نم",ﶛ:"نمى",ﶚ:"نمى",ﲍ:"نن",ﲎ:"نى",ﱏ:"نى",ﲏ:"نى",ﱐ:"نى",ۂ:"ۀ",ﮥ:"ۀ",ﮤ:"ۀ","𐋤":"و","𞸅":"و","𞺅":"و","𞺥":"و",ﻮ:"و",ﻭ:"و","ࢱ":"و",ۋ:"وۛ",ﯟ:"وۛ",ﯞ:"وۛ",ۇ:"و̓",ﯘ:"و̓",ﯗ:"و̓",ۆ:"و̆",ﯚ:"و̆",ﯙ:"و̆",ۉ:"و̂",ﯣ:"و̂",ﯢ:"و̂",ۈ:"وٰ",ﯜ:"وٰ",ﯛ:"وٰ",ؤ:"وٴ",ﺆ:"وٴ",ﺅ:"وٴ",ٶ:"وٴ",ٷ:"و̓ٴ",ﯝ:"و̓ٴ",ﷸ:"وسلم",ﯡ:"ۅ",ﯠ:"ۅ","ٮ":"ى","𞸜":"ى","𞹼":"ى",ں:"ى","𞸝":"ى","𞹝":"ى",ﮟ:"ى",ﮞ:"ى","ࢽ":"ى",ﯨ:"ى",ﯩ:"ى",ﻰ:"ى",ﻯ:"ى",ي:"ى","𞸉":"ى","𞸩":"ى","𞹉":"ى","𞹩":"ى","𞺉":"ى","𞺩":"ى",ﻳ:"ى",ﻴ:"ى",ﻲ:"ى",ﻱ:"ى",ی:"ى",ﯾ:"ى",ﯿ:"ى",ﯽ:"ى",ﯼ:"ى",ے:"ى",ﮯ:"ى",ﮮ:"ى",ٹ:"ىؕ",ﭨ:"ىؕ",ﭩ:"ىؕ",ﭧ:"ىؕ",ﭦ:"ىؕ",ڻ:"ىؕ",ﮢ:"ىؕ",ﮣ:"ىؕ",ﮡ:"ىؕ",ﮠ:"ىؕ",پ:"ىۛ",ﭘ:"ىۛ",ﭙ:"ىۛ",ﭗ:"ىۛ",ﭖ:"ىۛ",ث:"ىۛ","𞸖":"ىۛ","𞸶":"ىۛ","𞹶":"ىۛ","𞺖":"ىۛ","𞺶":"ىۛ",ﺛ:"ىۛ",ﺜ:"ىۛ",ﺚ:"ىۛ",ﺙ:"ىۛ",ڽ:"ىۛ",ۑ:"ىۛ","ؿ":"ىۛ","ࢷ":"ىۛۢ","ݖ":"ى̆",ێ:"ى̆","ࢺ":"ى̆̇","ؽ":"ى̂","ࢨ":"ىٔ",ﲐ:"ىٰ",ﱝ:"ىٰ",ﳞ:"ىo",ﳱ:"ىo",ﳦ:"ىۛo",ئ:"ىٴ",ﺋ:"ىٴ",ﺌ:"ىٴ",ﺊ:"ىٴ",ﺉ:"ىٴ",ٸ:"ىٴ",ﯫ:"ىٴl",ﯪ:"ىٴl",ﲛ:"ىٴo",ﳠ:"ىٴo",ﯭ:"ىٴo",ﯬ:"ىٴo",ﯸ:"ىٴٻ",ﯷ:"ىٴٻ",ﯶ:"ىٴٻ",ﲗ:"ىٴج",ﰀ:"ىٴج",ﲘ:"ىٴح",ﰁ:"ىٴح",ﲙ:"ىٴخ",ﱤ:"ىٴر",ﱥ:"ىٴز",ﲚ:"ىٴم",ﳟ:"ىٴم",ﱦ:"ىٴم",ﰂ:"ىٴم",ﱧ:"ىٴن",ﯯ:"ىٴو",ﯮ:"ىٴو",ﯱ:"ىٴو̓",ﯰ:"ىٴو̓",ﯳ:"ىٴو̆",ﯲ:"ىٴو̆",ﯵ:"ىٴوٰ",ﯴ:"ىٴوٰ",ﯻ:"ىٴى",ﯺ:"ىٴى",ﱨ:"ىٴى",ﯹ:"ىٴى",ﰃ:"ىٴى",ﱩ:"ىٴى",ﰄ:"ىٴى",ﳚ:"ىج",ﱕ:"ىج",ﰑ:"ىۛج",ﶯ:"ىجى",ﳛ:"ىح",ﱖ:"ىح",ﶮ:"ىحى",ﳜ:"ىخ",ﱗ:"ىخ",ﲑ:"ىر",ﱶ:"ىۛر",ﲒ:"ىز",ﱷ:"ىۛز",ﳝ:"ىم",ﳰ:"ىم",ﲓ:"ىم",ﱘ:"ىم",ﲦ:"ىۛم",ﳥ:"ىۛم",ﱸ:"ىۛم",ﰒ:"ىۛم",ﶝ:"ىمم",ﶜ:"ىمم",ﶰ:"ىمى",ﲔ:"ىن",ﱹ:"ىۛن",ﲕ:"ىى",ﱙ:"ىى",ﲖ:"ىى",ﱚ:"ىى",ﱺ:"ىۛى",ﰓ:"ىۛى",ﱻ:"ىۛى",ﰔ:"ىۛى",ﮱ:"ۓ",ﮰ:"ۓ","𐊸":"ⵀ","⁞":"ⵂ","⸽":"ⵂ","⦙":"ⵂ","︙":"ⵗ","⁝":"ⵗ","⋮":"ⵗ",Մ:"ሆ",Ռ:"ቡ",Ի:"ኮ",Պ:"ጣ",आ:"अा",ऒ:"अाॆ",ओ:"अाे",औ:"अाै","ऄ":"अॆ",ऑ:"अॉ",ऍ:"एॅ",ऎ:"एॆ",ऐ:"एे",ई:"र्इ",ઽ:"ऽ","𑇜":"ꣻ","𑇋":"ऺ","ુ":"ु","ૂ":"ू","ੋ":"ॆ","੍":"्","્":"्",আ:"অা",ৠ:"ঋৃ",ৡ:"ঋৃ","𑒒":"ঘ","𑒔":"চ","𑒖":"জ","𑒘":"ঞ","𑒙":"ট","𑒛":"ড","𑒪":"ণ","𑒞":"ত","𑒟":"থ","𑒠":"দ","𑒡":"ধ","𑒢":"ন","𑒣":"প","𑒩":"ব","𑒧":"ম","𑒨":"য","𑒫":"র","𑒝":"ল","𑒭":"ষ","𑒮":"স","𑓄":"ঽ","𑒰":"া","𑒱":"ি","𑒹":"ে","𑒼":"ো","𑒾":"ৌ","𑓂":"্","𑒽":"ৗ",ਉ:"ੳੁ",ਊ:"ੳੂ",ਆ:"ਅਾ",ਐ:"ਅੈ",ਔ:"ਅੌ",ਇ:"ੲਿ",ਈ:"ੲੀ",ਏ:"ੲੇ",આ:"અા",ઑ:"અાૅ",ઓ:"અાે",ઔ:"અાૈ",ઍ:"અૅ",એ:"અે",ઐ:"અૈ",ଆ:"ଅା","௮":"அ",ர:"ஈ","ா":"ஈ","௫":"ஈு","௨":"உ",ഉ:"உ",ஊ:"உள",ഊ:"உൗ","௭":"எ","௷":"எவ",ஜ:"ஐ",ജ:"ஐ","௧":"க","௪":"ச","௬":"சு","௲":"சூ","ഺ":"டி",ണ:"ண","௺":"நீ","௴":"மீ","௰":"ய",ഴ:"ழ","ௗ":"ள","ை":"ன",ശ:"ஶ","௸":"ஷ","ി":"ி","ീ":"ி","ொ":"ெஈ","ௌ":"ெள","ோ":"ேஈ",ಅ:"అ",ಆ:"ఆ",ಇ:"ఇ",ౠ:"ఋా",ౡ:"ఌా",ಒ:"ఒ",ఔ:"ఒౌ",ಔ:"ఒౌ",ఓ:"ఒౕ",ಓ:"ఒౕ",ಜ:"జ",ಞ:"ఞ",ఢ:"డ̣",ಣ:"ణ",థ:"ధּ",భ:"బ̣",ಯ:"య",ఠ:"రּ",ಱ:"ఱ",ಲ:"ల",ష:"వ̣",హ:"వా",మ:"వు","ూ":"ుా","ౄ":"ృా",ೡ:"ಌಾ",ഈ:"ഇൗ",ഐ:"എെ",ഓ:"ഒാ",ഔ:"ഒൗ",ൡ:"ഞ","൫":"ദ്ര","൹":"നു",ഌ:"നു",ങ:"നു","൯":"ന്","ൻ":"ന്","൬":"ന്ന","൚":"ന്മ",റ:"ര","൪":"ര്","ർ":"ര്","൮":"വ്ര","൶":"ഹ്മ","ൂ":"ു","ൃ":"ു","ൈ":"െെ","෪":"ජ","෫":"ද","𑐓":"𑐴𑑂𑐒","𑐙":"𑐴𑑂𑐘","𑐤":"𑐴𑑂𑐣","𑐪":"𑐴𑑂𑐩","𑐭":"𑐴𑑂𑐬","𑐯":"𑐴𑑂𑐮","𑗘":"𑖂","𑗙":"𑖂","𑗚":"𑖃","𑗛":"𑖄","𑗜":"𑖲","𑗝":"𑖳",ฃ:"ข",ด:"ค",ต:"ค",ม:"ฆ",ຈ:"จ",ซ:"ช",ฏ:"ฎ",ท:"ฑ",ບ:"บ",ປ:"ป",ຝ:"ฝ",ພ:"พ",ຟ:"ฟ",ฦ:"ภ",ຍ:"ย","។":"ฯ",ๅ:"า",ำ:"̊า","ិ":"ิ","ី":"ี","ឹ":"ึ","ឺ":"ื","ຸ":"ุ","ູ":"ู",แ:"เเ",ໜ:"ຫນ",ໝ:"ຫມ",ຳ:"̊າ","༂":"འུྂཿ","༃":"འུྂ༔",ཪ:"ར",ༀ:"ཨོཾ","ཷ":"ྲཱྀ","ཹ":"ླཱྀ","𑲲":"𑲪","ႁ":"ဂှ",က:"ဂာ","ၰ":"ဃှ","ၦ":"ပှ",ဟ:"ပာ","ၯ":"ပာှ","ၾ":"ၽှ",ဩ:"သြ",ဪ:"သြော်","႞":"ႃ̊",ឣ:"អ","᧐":"ᦞ","᧑":"ᦱ","᪀":"ᩅ","᪐":"ᩅ","꩓":"ꨁ","꩖":"ꨣ","᭒":"ᬍ","᭓":"ᬑ","᭘":"ᬨ","ꦣ":"ꦝ",ᢖ:"ᡜ",ᡕ:"ᠵ",ῶ:"Ꮿ",ᐍ:"ᐁ·",ᐫ:"ᐁᐠ",ᐑ:"ᐄ·",ᐓ:"ᐅ·",ᐭ:"ᐅᐠ",ᐕ:"ᐆ·",ᐘ:"ᐊ·",ᐮ:"ᐊᐠ",ᐚ:"ᐋ·","ᣝ":"ᐞᣟ",ᓑ:"ᐡ",ᕀ:"ᐩ",ᐿ:"ᐲ·",ᑃ:"ᐴ·","⍩":"ᐵ",ᑇ:"ᐹ·",ᑜ:"ᑏ·","⸧":"ᑐ","⊃":"ᑐ",ᑞ:"ᑐ·",ᑩ:"ᑐ'","⟉":"ᑐ/","⫗":"ᑐᑕ",ᑠ:"ᑑ·","⸦":"ᑕ","⊂":"ᑕ",ᑢ:"ᑕ·",ᑪ:"ᑕ'",ᑤ:"ᑖ·",ᑵ:"ᑫ·",ᒅ:"ᑫ'",ᑹ:"ᑮ·",ᑽ:"ᑰ·",ᘃ:"ᒉ",ᒓ:"ᒉ·",ᒕ:"ᒋ·",ᒗ:"ᒌ·",ᒛ:"ᒎ·",ᘂ:"ᒐ",ᒝ:"ᒐ·",ᒟ:"ᒑ·",ᒭ:"ᒣ·",ᒱ:"ᒦ·",ᒳ:"ᒧ·",ᒵ:"ᒨ·",ᒹ:"ᒫ·",ᓊ:"ᓀ·","ᣇ":"ᓂ·","ᣉ":"ᓃ·","ᣋ":"ᓄ·","ᣍ":"ᓅ·",ᓌ:"ᓇ·",ᓎ:"ᓈ·",ᘄ:"ᓓ",ᓝ:"ᓓ·",ᓟ:"ᓕ·",ᓡ:"ᓖ·",ᓣ:"ᓗ·",ᓥ:"ᓘ·",ᘇ:"ᓚ",ᓧ:"ᓚ·",ᓩ:"ᓛ·",ᓷ:"ᓭ·",ᓹ:"ᓯ·",ᓻ:"ᓰ·",ᓽ:"ᓱ·",ᓿ:"ᓲ·",ᔁ:"ᓴ·",ᔃ:"ᓵ·",ᔌ:"ᔋ<",ᔎ:"ᔋb",ᔍ:"ᔋᑕ",ᔏ:"ᔋᒐ",ᔘ:"ᔐ·",ᔚ:"ᔑ·",ᔜ:"ᔒ·",ᔞ:"ᔓ·",ᔠ:"ᔔ·",ᔢ:"ᔕ·",ᔤ:"ᔖ·",ᔲ:"ᔨ·",ᔴ:"ᔩ·",ᔶ:"ᔪ·",ᔸ:"ᔫ·",ᔺ:"ᔭ·",ᔼ:"ᔮ·",ᘢ:"ᕃ","ᣠ":"ᕃ·",ᘣ:"ᕆ",ᘤ:"ᕊ",ᕏ:"ᕌ·",ᖃ:"ᕐb",ᖄ:"ᕐḃ",ᖁ:"ᕐd",ᕿ:"ᕐP",ᙯ:"ᕐᑫ",ᕾ:"ᕐᑬ",ᖀ:"ᕐᑮ",ᖂ:"ᕐᑰ",ᖅ:"ᕐᒃ",ᕜ:"ᕚ·","ᣣ":"ᕞ·","ᣤ":"ᕦ·",ᕩ:"ᕧ·","ᣥ":"ᕫ·","ᣨ":"ᖆ·",ᖑ:"ᖕJ",ᙰ:"ᖕᒉ",ᖎ:"ᖕᒊ",ᖏ:"ᖕᒋ",ᖐ:"ᖕᒌ",ᖒ:"ᖕᒎ",ᖓ:"ᖕᒐ",ᖔ:"ᖕᒑ",ᙳ:"ᖖJ",ᙱ:"ᖖᒋ",ᙲ:"ᖖᒌ",ᙴ:"ᖖᒎ",ᙵ:"ᖖᒐ",ᙶ:"ᖖᒑ","ᣪ":"ᖗ·","ᙷ":"ᖧ·","ᙸ":"ᖨ·","ᙹ":"ᖩ·","ᙺ":"ᖪ·","ᙻ":"ᖫ·","ᙼ":"ᖬ·","ᙽ":"ᖭ·","⪫":"ᗒ","⪪":"ᗕ","ꓷ":"ᗡ","ᣰ":"ᗴ·","ᣲ":"ᘛ·","ᶻ":"ᙆ","ꓭ":"ᙠ","ᶺ":"ᣔ","ᴾ":"ᣖ","ᣜ":"ᣟᐞ",ˡ:"ᣳ",ʳ:"ᣴ",ˢ:"ᣵ","ᣛ":"ᣵ","ꚰ":"ᚹ",ᛡ:"ᚼ","⍿":"ᚽ",ᛂ:"ᚽ","𝈿":"ᛋ","↑":"ᛏ","↿":"ᛐ","⥮":"ᛐ⇂","⥣":"ᛐᛚ","ⵣ":"ᛯ","↾":"ᛚ","⨡":"ᛚ","⋄":"ᛜ","◇":"ᛜ","◊":"ᛜ","♢":"ᛜ","🝔":"ᛜ","𑢷":"ᛜ","𐊔":"ᛜ","⍚":"ᛜ̲","⋈":"ᛞ","⨝":"ᛞ","𐓐":"ᛦ","↕":"ᛨ","𐳼":"𐲂","𐳺":"𐲥",ㄱ:"ᄀ",ᆨ:"ᄀ",ᄁ:"ᄀᄀ",ㄲ:"ᄀᄀ",ᆩ:"ᄀᄀ","ᇺ":"ᄀᄂ","ᅚ":"ᄀᄃ",ᇃ:"ᄀᄅ","ᇻ":"ᄀᄇ",ᆪ:"ᄀᄉ",ㄳ:"ᄀᄉ",ᇄ:"ᄀᄉᄀ","ᇼ":"ᄀᄎ","ᇽ":"ᄀᄏ","ᇾ":"ᄀᄒ",ㄴ:"ᄂ",ᆫ:"ᄂ",ᄓ:"ᄂᄀ",ᇅ:"ᄂᄀ",ᄔ:"ᄂᄂ",ㅥ:"ᄂᄂ","ᇿ":"ᄂᄂ",ᄕ:"ᄂᄃ",ㅦ:"ᄂᄃ",ᇆ:"ᄂᄃ","ퟋ":"ᄂᄅ",ᄖ:"ᄂᄇ","ᅛ":"ᄂᄉ",ᇇ:"ᄂᄉ",ㅧ:"ᄂᄉ","ᅜ":"ᄂᄌ",ᆬ:"ᄂᄌ",ㄵ:"ᄂᄌ","ퟌ":"ᄂᄎ",ᇉ:"ᄂᄐ","ᅝ":"ᄂᄒ",ᆭ:"ᄂᄒ",ㄶ:"ᄂᄒ",ᇈ:"ᄂᅀ",ㅨ:"ᄂᅀ",ㄷ:"ᄃ",ᆮ:"ᄃ",ᄗ:"ᄃᄀ",ᇊ:"ᄃᄀ",ᄄ:"ᄃᄃ",ㄸ:"ᄃᄃ","ퟍ":"ᄃᄃ","ퟎ":"ᄃᄃᄇ","ᅞ":"ᄃᄅ",ᇋ:"ᄃᄅ","ꥠ":"ᄃᄆ","ꥡ":"ᄃᄇ","ퟏ":"ᄃᄇ","ꥢ":"ᄃᄉ","ퟐ":"ᄃᄉ","ퟑ":"ᄃᄉᄀ","ꥣ":"ᄃᄌ","ퟒ":"ᄃᄌ","ퟓ":"ᄃᄎ","ퟔ":"ᄃᄐ",ㄹ:"ᄅ",ᆯ:"ᄅ","ꥤ":"ᄅᄀ",ᆰ:"ᄅᄀ",ㄺ:"ᄅᄀ","ꥥ":"ᄅᄀᄀ","ퟕ":"ᄅᄀᄀ",ᇌ:"ᄅᄀᄉ",ㅩ:"ᄅᄀᄉ","ퟖ":"ᄅᄀᄒ",ᄘ:"ᄅᄂ",ᇍ:"ᄅᄂ","ꥦ":"ᄅᄃ",ᇎ:"ᄅᄃ",ㅪ:"ᄅᄃ","ꥧ":"ᄅᄃᄃ",ᇏ:"ᄅᄃᄒ",ᄙ:"ᄅᄅ",ᇐ:"ᄅᄅ","ퟗ":"ᄅᄅᄏ","ꥨ":"ᄅᄆ",ᆱ:"ᄅᄆ",ㄻ:"ᄅᄆ",ᇑ:"ᄅᄆᄀ",ᇒ:"ᄅᄆᄉ","ퟘ":"ᄅᄆᄒ","ꥩ":"ᄅᄇ",ᆲ:"ᄅᄇ",ㄼ:"ᄅᄇ","ퟙ":"ᄅᄇᄃ","ꥪ":"ᄅᄇᄇ",ᇓ:"ᄅᄇᄉ",ㅫ:"ᄅᄇᄉ","ꥫ":"ᄅᄇᄋ",ᇕ:"ᄅᄇᄋ","ퟚ":"ᄅᄇᄑ",ᇔ:"ᄅᄇᄒ","ꥬ":"ᄅᄉ",ᆳ:"ᄅᄉ",ㄽ:"ᄅᄉ",ᇖ:"ᄅᄉᄉ",ᄛ:"ᄅᄋ","ퟝ":"ᄅᄋ","ꥭ":"ᄅᄌ","ꥮ":"ᄅᄏ",ᇘ:"ᄅᄏ",ᆴ:"ᄅᄐ",ㄾ:"ᄅᄐ",ᆵ:"ᄅᄑ",ㄿ:"ᄅᄑ",ᄚ:"ᄅᄒ",ㅀ:"ᄅᄒ",ᄻ:"ᄅᄒ",ᆶ:"ᄅᄒ","ퟲ":"ᄅᄒ",ᇗ:"ᄅᅀ",ㅬ:"ᄅᅀ","ퟛ":"ᄅᅌ",ᇙ:"ᄅᅙ",ㅭ:"ᄅᅙ","ퟜ":"ᄅᅙᄒ",ㅁ:"ᄆ",ᆷ:"ᄆ","ꥯ":"ᄆᄀ",ᇚ:"ᄆᄀ","ퟞ":"ᄆᄂ","ퟟ":"ᄆᄂᄂ","ꥰ":"ᄆᄃ",ᇛ:"ᄆᄅ","ퟠ":"ᄆᄆ",ᄜ:"ᄆᄇ",ㅮ:"ᄆᄇ",ᇜ:"ᄆᄇ","ퟡ":"ᄆᄇᄉ","ꥱ":"ᄆᄉ",ᇝ:"ᄆᄉ",ㅯ:"ᄆᄉ",ᇞ:"ᄆᄉᄉ",ᄝ:"ᄆᄋ",ㅱ:"ᄆᄋ",ᇢ:"ᄆᄋ","ퟢ":"ᄆᄌ",ᇠ:"ᄆᄎ",ᇡ:"ᄆᄒ",ᇟ:"ᄆᅀ",ㅰ:"ᄆᅀ",ㅂ:"ᄇ",ᆸ:"ᄇ",ᄞ:"ᄇᄀ",ㅲ:"ᄇᄀ",ᄟ:"ᄇᄂ",ᄠ:"ᄇᄃ",ㅳ:"ᄇᄃ","ퟣ":"ᄇᄃ",ᇣ:"ᄇᄅ","ퟤ":"ᄇᄅᄑ","ퟥ":"ᄇᄆ",ᄈ:"ᄇᄇ",ㅃ:"ᄇᄇ","ퟦ":"ᄇᄇ",ᄬ:"ᄇᄇᄋ",ㅹ:"ᄇᄇᄋ",ᄡ:"ᄇᄉ",ㅄ:"ᄇᄉ",ᆹ:"ᄇᄉ",ᄢ:"ᄇᄉᄀ",ㅴ:"ᄇᄉᄀ",ᄣ:"ᄇᄉᄃ",ㅵ:"ᄇᄉᄃ","ퟧ":"ᄇᄉᄃ",ᄤ:"ᄇᄉᄇ",ᄥ:"ᄇᄉᄉ",ᄦ:"ᄇᄉᄌ","ꥲ":"ᄇᄉᄐ",ᄫ:"ᄇᄋ",ㅸ:"ᄇᄋ",ᇦ:"ᄇᄋ",ᄧ:"ᄇᄌ",ㅶ:"ᄇᄌ","ퟨ":"ᄇᄌ",ᄨ:"ᄇᄎ","ퟩ":"ᄇᄎ","ꥳ":"ᄇᄏ",ᄩ:"ᄇᄐ",ㅷ:"ᄇᄐ",ᄪ:"ᄇᄑ",ᇤ:"ᄇᄑ","ꥴ":"ᄇᄒ",ᇥ:"ᄇᄒ",ㅅ:"ᄉ",ᆺ:"ᄉ",ᄭ:"ᄉᄀ",ㅺ:"ᄉᄀ",ᇧ:"ᄉᄀ",ᄮ:"ᄉᄂ",ㅻ:"ᄉᄂ",ᄯ:"ᄉᄃ",ㅼ:"ᄉᄃ",ᇨ:"ᄉᄃ",ᄰ:"ᄉᄅ",ᇩ:"ᄉᄅ",ᄱ:"ᄉᄆ","ퟪ":"ᄉᄆ",ᄲ:"ᄉᄇ",ㅽ:"ᄉᄇ",ᇪ:"ᄉᄇ",ᄳ:"ᄉᄇᄀ","ퟫ":"ᄉᄇᄋ",ᄊ:"ᄉᄉ",ㅆ:"ᄉᄉ",ᆻ:"ᄉᄉ","ퟬ":"ᄉᄉᄀ","ퟭ":"ᄉᄉᄃ","ꥵ":"ᄉᄉᄇ",ᄴ:"ᄉᄉᄉ",ᄵ:"ᄉᄋ",ᄶ:"ᄉᄌ",ㅾ:"ᄉᄌ","ퟯ":"ᄉᄌ",ᄷ:"ᄉᄎ","ퟰ":"ᄉᄎ",ᄸ:"ᄉᄏ",ᄹ:"ᄉᄐ","ퟱ":"ᄉᄐ",ᄺ:"ᄉᄑ","ퟮ":"ᄉᅀ",ㅇ:"ᄋ",ᆼ:"ᄋ",ᅁ:"ᄋᄀ",ᇬ:"ᄋᄀ",ᇭ:"ᄋᄀᄀ",ᅂ:"ᄋᄃ","ꥶ":"ᄋᄅ",ᅃ:"ᄋᄆ",ᅄ:"ᄋᄇ",ᅅ:"ᄋᄉ",ᇱ:"ᄋᄉ",ㆂ:"ᄋᄉ",ᅇ:"ᄋᄋ",ㆀ:"ᄋᄋ",ᇮ:"ᄋᄋ",ᅈ:"ᄋᄌ",ᅉ:"ᄋᄎ",ᇯ:"ᄋᄏ",ᅊ:"ᄋᄐ",ᅋ:"ᄋᄑ","ꥷ":"ᄋᄒ",ᅆ:"ᄋᅀ",ᇲ:"ᄋᅀ",ㆃ:"ᄋᅀ",ㅈ:"ᄌ",ᆽ:"ᄌ","ퟷ":"ᄌᄇ","ퟸ":"ᄌᄇᄇ",ᅍ:"ᄌᄋ",ᄍ:"ᄌᄌ",ㅉ:"ᄌᄌ","ퟹ":"ᄌᄌ","ꥸ":"ᄌᄌᄒ",ㅊ:"ᄎ",ᆾ:"ᄎ",ᅒ:"ᄎᄏ",ᅓ:"ᄎᄒ",ㅋ:"ᄏ",ᆿ:"ᄏ",ㅌ:"ᄐ",ᇀ:"ᄐ","ꥹ":"ᄐᄐ",ㅍ:"ᄑ",ᇁ:"ᄑ",ᅖ:"ᄑᄇ",ᇳ:"ᄑᄇ","ퟺ":"ᄑᄉ",ᅗ:"ᄑᄋ",ㆄ:"ᄑᄋ",ᇴ:"ᄑᄋ","ퟻ":"ᄑᄐ","ꥺ":"ᄑᄒ",ㅎ:"ᄒ",ᇂ:"ᄒ",ᇵ:"ᄒᄂ",ᇶ:"ᄒᄅ",ᇷ:"ᄒᄆ",ᇸ:"ᄒᄇ","ꥻ":"ᄒᄉ",ᅘ:"ᄒᄒ",ㆅ:"ᄒᄒ",ᄽ:"ᄼᄼ",ᄿ:"ᄾᄾ",ㅿ:"ᅀ",ᇫ:"ᅀ","ퟳ":"ᅀᄇ","ퟴ":"ᅀᄇᄋ",ㆁ:"ᅌ",ᇰ:"ᅌ","ퟵ":"ᅌᄆ","ퟶ":"ᅌᄒ",ᅏ:"ᅎᅎ",ᅑ:"ᅐᅐ",ㆆ:"ᅙ",ᇹ:"ᅙ","ꥼ":"ᅙᅙ",ㅤ:"ᅠ",ㅏ:"ᅡ","ᆣ":"ᅡー",ᅶ:"ᅡᅩ",ᅷ:"ᅡᅮ",ᅢ:"ᅡ丨",ㅐ:"ᅡ丨",ㅑ:"ᅣ",ᅸ:"ᅣᅩ",ᅹ:"ᅣᅭ","ᆤ":"ᅣᅮ",ᅤ:"ᅣ丨",ㅒ:"ᅣ丨",ㅓ:"ᅥ",ᅼ:"ᅥー",ᅺ:"ᅥᅩ",ᅻ:"ᅥᅮ",ᅦ:"ᅥ丨",ㅔ:"ᅥ丨",ㅕ:"ᅧ","ᆥ":"ᅧᅣ",ᅽ:"ᅧᅩ",ᅾ:"ᅧᅮ",ᅨ:"ᅧ丨",ㅖ:"ᅧ丨",ㅗ:"ᅩ",ᅪ:"ᅩᅡ",ㅘ:"ᅩᅡ",ᅫ:"ᅩᅡ丨",ㅙ:"ᅩᅡ丨","ᆦ":"ᅩᅣ","ᆧ":"ᅩᅣ丨",ᅿ:"ᅩᅥ",ᆀ:"ᅩᅥ丨","ힰ":"ᅩᅧ",ᆁ:"ᅩᅧ丨",ᆂ:"ᅩᅩ","ힱ":"ᅩᅩ丨",ᆃ:"ᅩᅮ",ᅬ:"ᅩ丨",ㅚ:"ᅩ丨",ㅛ:"ᅭ","ힲ":"ᅭᅡ","ힳ":"ᅭᅡ丨",ᆄ:"ᅭᅣ",ㆇ:"ᅭᅣ",ᆆ:"ᅭᅣ",ᆅ:"ᅭᅣ丨",ㆈ:"ᅭᅣ丨","ힴ":"ᅭᅥ",ᆇ:"ᅭᅩ",ᆈ:"ᅭ丨",ㆉ:"ᅭ丨",ㅜ:"ᅮ",ᆉ:"ᅮᅡ",ᆊ:"ᅮᅡ丨",ᅯ:"ᅮᅥ",ㅝ:"ᅮᅥ",ᆋ:"ᅮᅥー",ᅰ:"ᅮᅥ丨",ㅞ:"ᅮᅥ丨","ힵ":"ᅮᅧ",ᆌ:"ᅮᅧ丨",ᆍ:"ᅮᅮ",ᅱ:"ᅮ丨",ㅟ:"ᅮ丨","ힶ":"ᅮ丨丨",ㅠ:"ᅲ",ᆎ:"ᅲᅡ","ힷ":"ᅲᅡ丨",ᆏ:"ᅲᅥ",ᆐ:"ᅲᅥ丨",ᆑ:"ᅲᅧ",ㆊ:"ᅲᅧ",ᆒ:"ᅲᅧ丨",ㆋ:"ᅲᅧ丨","ힸ":"ᅲᅩ",ᆓ:"ᅲᅮ",ᆔ:"ᅲ丨",ㆌ:"ᅲ丨",ㆍ:"ᆞ","ퟅ":"ᆞᅡ",ᆟ:"ᆞᅥ","ퟆ":"ᆞᅥ丨",ᆠ:"ᆞᅮ",ᆢ:"ᆞᆞ",ᆡ:"ᆞ丨",ㆎ:"ᆞ丨",ヘ:"へ","⍁":"〼","⧄":"〼","꒞":"ꁊ","꒬":"ꁐ","꒜":"ꃀ","꒨":"ꄲ","꒿":"ꉙ","꒾":"ꊱ","꒔":"ꋍ","꓀":"ꎫ","꓂":"ꎵ","꒺":"ꎿ","꒰":"ꏂ","꒧":"ꑘ","⊥":"ꓕ","⟂":"ꓕ","𝈜":"ꓕ","Ʇ":"ꓕ","Ꞟ":"ꓤ","⅁":"ꓨ","⅂":"ꓶ","𝈕":"ꓶ","𝈫":"ꓶ","𖼦":"ꓶ","𐐑":"ꓶ","⅃":"𖼀","𑫦":"𑫥𑫯","𑫨":"𑫥𑫥","𑫩":"𑫥𑫥𑫯","𑫪":"𑫥𑫥𑫰","𑫧":"𑫥𑫰","𑫴":"𑫳𑫯","𑫶":"𑫳𑫳","𑫷":"𑫳𑫳𑫯","𑫸":"𑫳𑫳𑫰","𑫵":"𑫳𑫰","𑫬":"𑫫𑫯","𑫭":"𑫫𑫫","𑫮":"𑫫𑫫𑫯","⊕":"𐊨","⨁":"𐊨","🜨":"𐊨","Ꚛ":"𐊨","▽":"𐊼","𝈔":"𐊼","🜄":"𐊼","⧖":"𐋀","ꞛ":"𐐺","Ꞛ":"𐐒","𐒠":"𐒆","𐏑":"𐎂","𐏓":"𐎓","𒀸":"𐎚","☥":"𐦞","𓋹":"𐦞","〹":"卄",不:"不","丽":"丽","並":"並","⎜":"丨","⎟":"丨","⎢":"丨","⎥":"丨","⎪":"丨","⎮":"丨","㇑":"丨",ᅵ:"丨",ㅣ:"丨","⼁":"丨",ᆜ:"丨ー",ᆘ:"丨ᅡ",ᆙ:"丨ᅣ","ힽ":"丨ᅣᅩ","ힾ":"丨ᅣ丨","ힿ":"丨ᅧ","ퟀ":"丨ᅧ丨",ᆚ:"丨ᅩ","ퟁ":"丨ᅩ丨","ퟂ":"丨ᅭ",ᆛ:"丨ᅮ","ퟃ":"丨ᅲ",ᆝ:"丨ᆞ","ퟄ":"丨丨",串:"串","丸":"丸",丹:"丹","乁":"乁","㇠":"乙","⼄":"乙","㇟":"乚","⺃":"乚","㇖":"乛","⺂":"乛","⻲":"亀",亂:"亂","㇚":"亅","⼅":"亅",了:"了",ニ:"二","⼆":"二","𠄢":"𠄢","⼇":"亠",亮:"亮","⼈":"人",イ:"亻","⺅":"亻",什:"什","仌":"仌",令:"令","你":"你",倂:"併","倂":"併","侀":"侀",來:"來",例:"例","侮":"侮","侮":"侮","侻":"侻",便:"便",值:"値",倫:"倫","偺":"偺","備":"備","像":"像",僚:"僚","僧":"僧","僧":"僧","㒞":"㒞","⼉":"儿",兀:"兀","⺎":"兀","充":"充","免":"免","免":"免","兔":"兔","兤":"兤","⼊":"入","內":"內","全":"全",兩:"兩",ハ:"八","⼋":"八",六:"六","具":"具","𠔜":"𠔜","𠔥":"𠔥","冀":"冀","㒹":"㒹","⼌":"冂","再":"再","𠕋":"𠕋","冒":"冒","冕":"冕","㒻":"㒻","最":"最","⼍":"冖","冗":"冗","冤":"冤","⼎":"冫","冬":"冬","况":"况","况":"况",冷:"冷",凉:"凉",凌:"凌",凜:"凜",凞:"凞","⼏":"几","𠘺":"𠘺","凵":"凵","⼐":"凵","⼑":"刀","⺉":"刂","刃":"刃",切:"切","切":"切",列:"列",利:"利","㓟":"㓟",刺:"刺","刻":"刻","剆":"剆","割":"割","剷":"剷",劉:"劉","𠠄":"𠠄",カ:"力",力:"力","⼒":"力",劣:"劣","㔕":"㔕","劳":"劳","勇":"勇","勇":"勇","勉":"勉","勉":"勉",勒:"勒",勞:"勞","勤":"勤","勤":"勤",勵:"勵","⼓":"勹","勺":"勺","勺":"勺","包":"包","匆":"匆","𠣞":"𠣞","⼔":"匕",北:"北","北":"北","⼕":"匚","⼖":"匸",匿:"匿","⼗":"十","〸":"十","〺":"卅","卉":"卉","࿖":"卍","࿕":"卐","卑":"卑","卑":"卑","博":"博",ト:"卜","⼘":"卜","⼙":"卩","⺋":"㔾","即":"即",卵:"卵","卽":"卽","卿":"卿","卿":"卿","卿":"卿","⼚":"厂","𠨬":"𠨬","⼛":"厶",參:"參","⼜":"又","及":"及","叟":"叟","𠭣":"𠭣",ロ:"口","⼝":"口",囗:"口","⼞":"口",句:"句","叫":"叫","叱":"叱","吆":"吆",吏:"吏",吝:"吝","吸":"吸",呂:"呂","呈":"呈","周":"周","咞":"咞","咢":"咢",咽:"咽",䎛:"㖈","哶":"哶","唐":"唐","啓":"啓",啟:"啓","啕":"啕","啣":"啣","善":"善","善":"善",喇:"喇","喙":"喙","喙":"喙","喝":"喝","喝":"喝","喫":"喫","喳":"喳",嗀:"嗀","嗂":"嗂","嗢":"嗢","嘆":"嘆","嘆":"嘆","噑":"噑","噴":"噴","器":"器",囹:"囹","圖":"圖","圗":"圗","⼟":"土",士:"土","⼠":"土","型":"型","城":"城",㦳:"㘽","埴":"埴","堍":"堍","報":"報","堲":"堲","塀":"塀",塚:"塚","塚":"塚",塞:"塞",填:"塡",壿:"墫","墬":"墬","墳":"墳",壘:"壘",壟:"壟","𡓤":"𡓤","壮":"壮","売":"売","壷":"壷","⼡":"夂","夆":"夆","⼢":"夊",タ:"夕","⼣":"夕","多":"多","夢":"夢","⼤":"大","奄":"奄",奈:"奈",契:"契","奔":"奔","奢":"奢",女:"女","⼥":"女","𡚨":"𡚨","𡛪":"𡛪","姘":"姘","姬":"姬","娛":"娛","娧":"娧","婢":"婢","婦":"婦",嬀:"媯","㛮":"㛮","㛼":"㛼","媵":"媵","嬈":"嬈","嬨":"嬨","嬾":"嬾","嬾":"嬾","⼦":"子","⼧":"宀",宅:"宅","𡧈":"𡧈","寃":"寃","寘":"寘",寧:"寧",寧:"寧","寧":"寧",寮:"寮","寳":"寳","𡬘":"𡬘","⼨":"寸","寿":"寿","将":"将","⼩":"小","尢":"尢","⺐":"尢","⼪":"尢","⺏":"尣","㞁":"㞁","⼫":"尸",尿:"尿","屠":"屠",屢:"屢","層":"層",履:"履","屮":"屮","屮":"屮","⼬":"屮","𡴋":"𡴋","⼭":"山","峀":"峀","岍":"岍","𡷤":"𡷤","𡷦":"𡷦",崙:"崙","嵃":"嵃",嵐:"嵐","嵫":"嵫","嵮":"嵮","嵼":"嵼","嶲":"嶲",嶺:"嶺","⼮":"巛","巢":"巢",エ:"工","⼯":"工","⼰":"己","⺒":"巳","㠯":"㠯","巽":"巽","⼱":"巾",帲:"帡","帨":"帨","帽":"帽","幩":"幩","㡢":"㡢","𢆃":"𢆃","⼲":"干",年:"年","𢆟":"𢆟","⺓":"幺","⼳":"幺","⼴":"广",度:"度","㡼":"㡼","庰":"庰","庳":"庳","庶":"庶",廊:"廊","廊":"廊",廉:"廉","廒":"廒",廓:"廓","廙":"廙",廬:"廬","⼵":"廴","廾":"廾","⼶":"廾","𢌱":"𢌱","𢌱":"𢌱",弄:"弄","⼷":"弋","⼸":"弓","弢":"弢","弢":"弢","⼹":"彐","⺔":"彑","当":"当","㣇":"㣇","⼺":"彡","形":"形","彩":"彩","彫":"彫","⼻":"彳",律:"律","㣣":"㣣","徚":"徚",復:"復","徭":"徭","⼼":"心","⺖":"忄","⺗":"㣺","忍":"忍","志":"志",念:"念","忹":"忹",怒:"怒",怜:"怜","恵":"恵","㤜":"㤜","㤺":"㤺","悁":"悁","悔":"悔","悔":"悔","惇":"惇","惘":"惘",惡:"惡","𢛔":"𢛔","愈":"愈","慨":"慨",慄:"慄","慈":"慈","慌":"慌","慌":"慌","慎":"慎","慎":"慎","慠":"慠","慺":"慺","憎":"憎","憎":"憎","憎":"憎",憐:"憐","憤":"憤","憯":"憯","憲":"憲","𢡄":"𢡄","𢡊":"𢡊","懞":"懞","懲":"懲","懲":"懲","懲":"懲",懶:"懶","懶":"懶",戀:"戀","⼽":"戈","成":"成","戛":"戛",戮:"戮","戴":"戴","⼾":"戶",戸:"戶","⼿":"手","⺘":"扌","扝":"扝","抱":"抱",拉:"拉",拏:"拏",拓:"拓","拔":"拔","拼":"拼",拾:"拾","𢬌":"𢬌","挽":"挽","捐":"捐","捨":"捨",捻:"捻","掃":"掃",掠:"掠","掩":"掩","揄":"揄","揤":"揤","摒":"摒","𢯱":"𢯱","搜":"搜","搢":"搢","揅":"揅","摩":"摩","摷":"摷","摾":"摾","㨮":"㨮",搉:"㩁",撚:"撚","撝":"撝",擄:"擄","㩬":"㩬","⽀":"支","⽁":"攴","⺙":"攵","敏":"敏","敏":"敏","敖":"敖","敬":"敬",數:"數","𣀊":"𣀊","⽂":"文","⻫":"斉","⽃":"斗",料:"料","⽄":"斤","⽅":"方",旅:"旅","⽆":"无","⺛":"旡","既":"既","旣":"旣","⽇":"日",易:"易",曶:"㫚","㫤":"㫤","晉":"晉",晩:"晚",晴:"晴","晴":"晴","暑":"暑","暑":"暑",暈:"暈","㬈":"㬈","暜":"暜",暴:"暴",曆:"曆","㬙":"㬙","𣊸":"𣊸","⽈":"曰",更:"更","書":"書","⽉":"月","𣍟":"𣍟",肦:"朌",胐:"朏",胊:"朐",脁:"朓",胶:"㬵",朗:"朗","朗":"朗","朗":"朗",脧:"朘","望":"望","望":"望",幐:"㬺",䐠:"㬻","𣎓":"𣎓",膧:"朣","𣎜":"𣎜","⽊":"木",李:"李","杓":"杓","杖":"杖","杞":"杞","𣏃":"𣏃",柿:"杮",杻:"杻","枅":"枅",林:"林","㭉":"㭉","𣏕":"𣏕",柳:"柳","柺":"柺",栗:"栗","栟":"栟","桒":"桒","𣑭":"𣑭",梁:"梁","梅":"梅","梅":"梅","梎":"梎",梨:"梨","椔":"椔","楂":"楂","㮝":"㮝","㮝":"㮝",槩:"㮣",樧:"榝","榣":"榣","槪":"槪",樂:"樂",樂:"樂",樂:"樂",樓:"樓","𣚣":"𣚣","檨":"檨",櫓:"櫓","櫛":"櫛",欄:"欄","㰘":"㰘","⽋":"欠","次":"次","𣢧":"𣢧","歔":"歔","㱎":"㱎","⽌":"止","⻭":"歯","歲":"歲",歷:"歷","歹":"歹","⽍":"歹","⺞":"歺","殟":"殟",殮:"殮","⽎":"殳",殺:"殺","殺":"殺","殺":"殺","殻":"殻","𣪍":"𣪍","⽏":"毋","⺟":"母","𣫺":"𣫺","⽐":"比","⽑":"毛","⽒":"氏","⺠":"民","⽓":"气","⽔":"水","⺡":"氵","⺢":"氺","汎":"汎","汧":"汧",沈:"沈","沿":"沿",泌:"泌","泍":"泍",泥:"泥","𣲼":"𣲼",洛:"洛",洞:"洞","洴":"洴","派":"派",流:"流","流":"流","流":"流","洖":"洖","浩":"浩",浪:"浪","海":"海","海":"海","浸":"浸","涅":"涅","𣴞":"𣴞",淋:"淋",淚:"淚",淪:"淪","淹":"淹","渚":"渚","港":"港","湮":"湮",潙:"溈","滋":"滋","滋":"滋",溜:"溜",溺:"溺","滇":"滇",滑:"滑","滛":"滛","㴳":"㴳",漏:"漏","漢":"漢","漢":"漢",漣:"漣","𣻑":"𣻑","潮":"潮","𣽞":"𣽞","𣾎":"𣾎","濆":"濆",濫:"濫",濾:"濾","瀛":"瀛","瀞":"瀞","瀞":"瀞","瀹":"瀹","灊":"灊","㶖":"㶖","⽕":"火","⺣":"灬","灰":"灰","灷":"灷","災":"災",炙:"炙","炭":"炭",烈:"烈",烙:"烙","煮":"煮","煮":"煮","𤉣":"𤉣","煅":"煅",煉:"煉","𤋮":"𤋮","熜":"熜",燎:"燎",燐:"燐","𤎫":"𤎫",爐:"爐",爛:"爛","爨":"爨","⽖":"爪","爫":"爫","⺤":"爫","爵":"爵","爵":"爵","⽗":"父","⽘":"爻","⺦":"丬","⽙":"爿","⽚":"片","牐":"牐","⽛":"牙","𤘈":"𤘈","⽜":"牛",牢:"牢","犀":"犀","犕":"犕","⽝":"犬","⺨":"犭","犯":"犯",狀:"狀","𤜵":"𤜵",狼:"狼",猪:"猪","猪":"猪","𤠔":"𤠔",獵:"獵","獺":"獺","⽞":"玄",率:"率",率:"率","⽟":"玉","王":"王","㺬":"㺬","玥":"玥",玲:"玲","㺸":"㺸","㺸":"㺸",珞:"珞",琉:"琉",理:"理","琢":"琢","瑇":"瑇","瑜":"瑜",瑩:"瑩","瑱":"瑱","瑱":"瑱","璅":"璅",璉:"璉",璘:"璘","瓊":"瓊","⽠":"瓜","⽡":"瓦","㼛":"㼛","甆":"甆","⽢":"甘","⽣":"生","甤":"甤","⽤":"用","⽥":"田","画":"画","甾":"甾","𤰶":"𤰶",留:"留",略:"略",異:"異","異":"異","𤲒":"𤲒","⽦":"疋","⽧":"疒",痢:"痢","瘐":"瘐","瘟":"瘟","瘝":"瘝",療:"療",癩:"癩","⽨":"癶","⽩":"白","𤾡":"𤾡","𤾸":"𤾸","⽪":"皮","⽫":"皿","𥁄":"𥁄","㿼":"㿼",益:"益","益":"益","盛":"盛",盧:"盧","䀈":"䀈","⽬":"目","直":"直","直":"直","𥃲":"𥃲","𥃳":"𥃳",省:"省","䀘":"䀘","𥄙":"𥄙","眞":"眞","真":"真","真":"真","𥄳":"𥄳","着":"着","睊":"睊","睊":"睊","鿃":"䀹","䀹":"䀹","䀹":"䀹",晣:"䀿","䁆":"䁆","瞋":"瞋","𥉉":"𥉉","瞧":"瞧","⽭":"矛","⽮":"矢","⽯":"石","䂖":"䂖","𥐝":"𥐝",硏:"研","硎":"硎",硫:"硫",碌:"碌","碌":"碌","碑":"碑",磊:"磊","磌":"磌","磌":"磌",磻:"磻","䃣":"䃣",礪:"礪","⽰":"示","⺭":"礻",礼:"礼","社":"社","祈":"祈","祉":"祉","𥘦":"𥘦","祐":"祐","祖":"祖","祖":"祖","祝":"祝",神:"神",祥:"祥","視":"視","視":"視",祿:"祿","𥚚":"𥚚","禍":"禍","禎":"禎",福:"福","福":"福","𥛅":"𥛅",禮:"禮","⽱":"禸","⽲":"禾",秊:"秊","䄯":"䄯","秫":"秫",稜:"稜","穊":"穊","穀":"穀","穀":"穀","穏":"穏","⽳":"穴","突":"突","𥥼":"𥥼","窱":"窱",立:"立","⽴":"立","⻯":"竜","𥪧":"𥪧","𥪧":"𥪧","竮":"竮","⽵":"竹",笠:"笠","節":"節","節":"節","䈂":"䈂","𥮫":"𥮫","篆":"篆","䈧":"䈧","築":"築","𥲀":"𥲀","𥳐":"𥳐",簾:"簾",籠:"籠","⽶":"米","类":"类",粒:"粒",精:"精","糒":"糒",糖:"糖","糨":"糨","䊠":"䊠","糣":"糣",糧:"糧","⽷":"糸","⺯":"糹","𥾆":"𥾆","紀":"紀",紐:"紐",索:"索",累:"累",絶:"絕","絣":"絣","絛":"絛",綠:"綠",綾:"綾","緇":"緇",練:"練","練":"練","練":"練","縂":"縂","䌁":"䌁","縉":"縉",縷:"縷","繁":"繁","繅":"繅","𦇚":"𦇚","䌴":"䌴","⽸":"缶","𦈨":"𦈨","缾":"缾","𦉇":"𦉇","⽹":"网","⺫":"罒","⺲":"罒","⺱":"罓","䍙":"䍙","署":"署","𦋙":"𦋙",罹:"罹","罺":"罺",羅:"羅","𦌾":"𦌾","⽺":"羊","羕":"羕",羚:"羚",羽:"羽","⽻":"羽","翺":"翺",老:"老","⽼":"老","⺹":"耂","者":"者","者":"者","者":"者","⽽":"而","𦓚":"𦓚","⽾":"耒","𦔣":"𦔣","⽿":"耳",聆:"聆","聠":"聠","𦖨":"𦖨",聯:"聯","聰":"聰",聾:"聾","⾀":"聿","⺺":"肀","⾁":"肉",肋:"肋","肭":"肭","育":"育","䏕":"䏕","䏙":"䏙",腁:"胼","脃":"脃","脾":"脾","䐋":"䐋","朡":"朡","𦞧":"𦞧","𦞵":"𦞵",朦:"䑃",臘:"臘","⾂":"臣",臨:"臨","⾃":"自","臭":"臭","⾄":"至","⾅":"臼","舁":"舁","舁":"舁","舄":"舄","⾆":"舌","舘":"舘","⾇":"舛","⾈":"舟","䑫":"䑫","⾉":"艮",良:"良","⾊":"色","⾋":"艸","艹":"艹","艹":"艹","⺾":"艹","⺿":"艹","⻀":"艹","芋":"芋","芑":"芑","芝":"芝","花":"花","芳":"芳","芽":"芽",若:"若","若":"若","苦":"苦","𦬼":"𦬼",茶:"茶","荒":"荒","荣":"荣","茝":"茝","茣":"茣","莽":"莽","荓":"荓",菉:"菉","菊":"菊","菌":"菌","菜":"菜","菧":"菧","華":"華",菱:"菱","著":"著","著":"著","𦰶":"𦰶","莭":"莭",落:"落",葉:"葉",蔿:"蒍","𦳕":"𦳕","𦵫":"𦵫",蓮:"蓮","蓱":"蓱","蓳":"蓳",蓼:"蓼","蔖":"蔖","䔫":"䔫","蕤":"蕤","𦼬":"𦼬",藍:"藍","䕝":"䕝","𦾱":"𦾱","䕡":"䕡",藺:"藺",蘆:"蘆","䕫":"䕫",蘒:"蘒",蘭:"蘭","𧃒":"𧃒",虁:"蘷",蘿:"蘿","⾌":"虍","⻁":"虎","虐":"虐",虜:"虜","虜":"虜","虧":"虧","虩":"虩","⾍":"虫","蚩":"蚩","蚈":"蚈","蛢":"蛢","蜎":"蜎","蜨":"蜨","蝫":"蝫","蟡":"蟡","蝹":"蝹","蝹":"蝹","螆":"螆","䗗":"䗗","𧏊":"𧏊",螺:"螺","蠁":"蠁","䗹":"䗹",蠟:"蠟","⾎":"血",行:"行","⾏":"行","衠":"衠","衣":"衣","⾐":"衣","⻂":"衤",裂:"裂","𧙧":"𧙧",裏:"裏","裗":"裗","裞":"裞",裡:"裡",裸:"裸","裺":"裺","䘵":"䘵","褐":"褐","襁":"襁",襤:"襤","⾑":"襾","⻄":"西","⻃":"覀","覆":"覆",見:"見","⾒":"見","𧢮":"𧢮","⻅":"见","⾓":"角","⾔":"言","𧥦":"𧥦",詽:"訮",訞:"䚶","䚾":"䚾","䛇":"䛇","誠":"誠",說:"說",說:"說","調":"調","請":"請",諒:"諒",論:"論","諭":"諭","諭":"諭",諸:"諸","諸":"諸",諾:"諾","諾":"諾","謁":"謁","謁":"謁","謹":"謹","謹":"謹",識:"識",讀:"讀",讏:"讆","變":"變","變":"變","⻈":"讠","⾕":"谷","⾖":"豆",豈:"豈","豕":"豕","⾗":"豕",豣:"豜","⾘":"豸","𧲨":"𧲨","⾙":"貝","貫":"貫","賁":"賁",賂:"賂",賈:"賈","賓":"賓","贈":"贈","贈":"贈","贛":"贛","⻉":"贝","⾚":"赤","⾛":"走","起":"起",趆:"赿","𧻓":"𧻓","𧼯":"𧼯","⾜":"足","跋":"跋","趼":"趼",跺:"跥",路:"路","跰":"跰",躛:"躗","⾝":"身",車:"車","⾞":"車","軔":"軔",輧:"軿",輦:"輦",輪:"輪","輸":"輸","輸":"輸",輻:"輻",轢:"轢","⻋":"车","⾟":"辛","辞":"辞",辰:"辰","⾠":"辰","⾡":"辵","辶":"辶","⻌":"辶","⻍":"辶","巡":"巡",連:"連",逸:"逸","逸":"逸","遲":"遲",遼:"遼","𨗒":"𨗒","𨗭":"𨗭",邏:"邏","⾢":"邑","邔":"邔",郎:"郎",郞:"郎","郞":"郎","郱":"郱",都:"都","𨜮":"𨜮","鄑":"鄑","鄛":"鄛","⾣":"酉",酪:"酪","醙":"醙",醴:"醴","⾤":"釆",里:"里","⾥":"里",量:"量",金:"金","⾦":"金",鈴:"鈴","鈸":"鈸","鉶":"鉶","鋗":"鋗","鋘":"鋘","鉼":"鉼",錄:"錄",鍊:"鍊",鎮:"鎭","鏹":"鏹","鐕":"鐕","𨯺":"𨯺","⻐":"钅","⻑":"長","⾧":"長","⻒":"镸","⻓":"长","⾨":"門","開":"開","䦕":"䦕",閭:"閭","閷":"閷","𨵷":"𨵷","⻔":"门","⾩":"阜","⻏":"阝","⻖":"阝",阮:"阮",陋:"陋",降:"降",陵:"陵",陸:"陸","陼":"陼",隆:"隆",隣:"隣","䧦":"䧦","⾪":"隶","隷":"隷",隸:"隷",隸:"隷","⾫":"隹","雃":"雃",離:"離","難":"難","難":"難","⾬":"雨",零:"零",雷:"雷","霣":"霣","𩅅":"𩅅",露:"露",靈:"靈","⾭":"靑","⻘":"青",靖:"靖","靖":"靖","𩇟":"𩇟","⾮":"非","⾯":"面","𩈚":"𩈚","⾰":"革","䩮":"䩮","䩶":"䩶","⾱":"韋","韛":"韛","韠":"韠","⻙":"韦","⾲":"韭","𩐊":"𩐊","⾳":"音","響":"響","響":"響","⾴":"頁","䪲":"䪲","頋":"頋","頋":"頋","頋":"頋",領:"領","頩":"頩","𩒖":"𩒖","頻":"頻","頻":"頻",類:"類","⻚":"页","⾵":"風","𩖶":"𩖶","⻛":"风","⾶":"飛","⻜":"飞","⻝":"食","⾷":"食","⻟":"飠","飢":"飢",飯:"飯",飼:"飼","䬳":"䬳",館:"館","餩":"餩","⻠":"饣","⾸":"首","⾹":"香","馧":"馧","⾺":"馬","駂":"駂",駱:"駱","駾":"駾",驪:"驪","⻢":"马","⾻":"骨","䯎":"䯎","⾼":"高","⾽":"髟","𩬰":"𩬰","鬒":"鬒","鬒":"鬒","⾾":"鬥","⾿":"鬯","⿀":"鬲","⿁":"鬼","⻤":"鬼","⿂":"魚",魯:"魯","鱀":"鱀",鱗:"鱗","⻥":"鱼","⿃":"鳥","鳽":"鳽","䳎":"䳎","鵧":"鵧","䳭":"䳭","𪃎":"𪃎",鶴:"鶴","𪄅":"𪄅","䳸":"䳸",鷺:"鷺","𪈎":"𪈎",鸞:"鸞",鹃:"鹂","⿄":"鹵",鹿:"鹿","⿅":"鹿","𪊑":"𪊑",麗:"麗",麟:"麟","⿆":"麥","⻨":"麦","麻":"麻","⿇":"麻","𪎒":"𪎒","⿈":"黃","⻩":"黄","⿉":"黍",黎:"黎","䵖":"䵖","⿊":"黑",黒:"黑","墨":"墨","黹":"黹","⿋":"黹","⿌":"黽","鼅":"鼅","黾":"黾","⿍":"鼎","鼏":"鼏","⿎":"鼓","鼖":"鼖","⿏":"鼠","鼻":"鼻","⿐":"鼻","齃":"齃","⿑":"齊","⻬":"齐","⿒":"齒","𪘀":"𪘀","⻮":"齿",龍:"龍","⿓":"龍","龎":"龎","⻰":"龙",龜:"龜",龜:"龜","龜":"龜","⿔":"龜","⻳":"龟","⿕":"龠"},Pn,Ji;function al(){if(Ji)return Pn;Ji=1;var i=il;function e(a){return a.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}var t=RegExp(Object.keys(i).map(e).join("|"),"g");function r(a){return i[a]}function n(a){return a.replace(t,r)}return Pn=n,Pn}var sl=al(),ol=Xs(sl);const ll=Object.prototype.toString,dl=i=>ll.call(i)==="[object Error]",ul=new Set(["network error","Failed to fetch","NetworkError when attempting to fetch resource.","The Internet connection appears to be offline.","Network request failed","fetch failed","terminated"," A network error occurred.","Network connection lost"]);function cl(i){if(!(i&&dl(i)&&i.name==="TypeError"&&typeof i.message=="string"))return!1;const{message:t,stack:r}=i;return t==="Load failed"?r===void 0||"__sentry_captured__"in i:t.startsWith("error sending request for url")?!0:ul.has(t)}function hl(i){if(typeof i=="number"){if(i<0)throw new TypeError("Expected `retries` to be a non-negative number.");if(Number.isNaN(i))throw new TypeError("Expected `retries` to be a valid number or Infinity, got NaN.")}else if(i!==void 0)throw new TypeError("Expected `retries` to be a number or Infinity.")}function Wr(i,e,{min:t=0,allowInfinity:r=!1}={}){if(e!==void 0){if(typeof e!="number"||Number.isNaN(e))throw new TypeError(`Expected \`${i}\` to be a number${r?" or Infinity":""}.`);if(!r&&!Number.isFinite(e))throw new TypeError(`Expected \`${i}\` to be a finite number.`);if(e<t)throw new TypeError(`Expected \`${i}\` to be ≥ ${t}.`)}}class Zs extends Error{constructor(e){super(),e instanceof Error?(this.originalError=e,{message:e}=e):(this.originalError=new Error(e),this.originalError.stack=this.stack),this.name="AbortError",this.message=e}}const vl=(i,e,t)=>{const r=t.retries-(e-1);return Object.freeze({error:i,attemptNumber:e,retriesLeft:r})};function fl(i,e){const t=e.randomize?Math.random()+1:1;let r=Math.round(t*Math.max(e.minTimeout,1)*e.factor**(i-1));return r=Math.min(r,e.maxTimeout),r}async function ml(i,e,t,r,n){let a=i;if(a instanceof Error||(a=new TypeError(`Non-error was thrown: "${a}". You should only throw errors.`)),a instanceof Zs)throw a.originalError;if(a instanceof TypeError&&!cl(a))throw a;const s=vl(a,e,t);await t.onFailedAttempt(s);const o=Date.now();if(o-r>=n||e>=t.retries+1||!await t.shouldRetry(s))throw a;const l=fl(e,t),d=n-(o-r);if(d<=0)throw a;const u=Math.min(l,d);u>0&&await new Promise((h,m)=>{const E=()=>{clearTimeout(f),t.signal?.removeEventListener("abort",E),m(t.signal.reason)},f=setTimeout(()=>{t.signal?.removeEventListener("abort",E),h()},u);t.unref&&f.unref?.(),t.signal?.addEventListener("abort",E,{once:!0})}),t.signal?.throwIfAborted()}async function pl(i,e={}){if(e={...e},hl(e.retries),Object.hasOwn(e,"forever"))throw new Error("The `forever` option is no longer supported. For many use-cases, you can set `retries: Infinity` instead.");e.retries??=10,e.factor??=2,e.minTimeout??=1e3,e.maxTimeout??=Number.POSITIVE_INFINITY,e.randomize??=!1,e.onFailedAttempt??=()=>{},e.shouldRetry??=()=>!0,Wr("factor",e.factor,{min:0,allowInfinity:!1}),Wr("minTimeout",e.minTimeout,{min:0,allowInfinity:!1}),Wr("maxTimeout",e.maxTimeout,{min:0,allowInfinity:!0});const t=e.maxRetryTime??Number.POSITIVE_INFINITY;Wr("maxRetryTime",t,{min:0,allowInfinity:!0}),e.factor>0||(e.factor=1),e.signal?.throwIfAborted();let r=0;const n=Date.now(),a=t;for(;r<e.retries+1;){r++;try{e.signal?.throwIfAborted();const s=await i(r);return e.signal?.throwIfAborted(),s}catch(s){await ml(s,r,e,n,a)}}throw new Error("Retry attempts exhausted without throwing an error.")}let er=class{constructor(e,t){if(this.stable=e,this.unstable=t,!this.unstable&&!this.stable)throw new Error("One of stable or unstable values must be supplied")}get name(){return this.stable?this.stable:this.unstable}get altName(){return this.stable?this.unstable:null}get names(){var e=[this.name],t=this.altName;return t&&e.push(t),e}matches(e){return this.name===e||this.altName===e}findIn(e){var t=void 0;return this.name&&(t=e?.[this.name]),!t&&this.altName&&(t=e?.[this.altName]),t}includedIn(e){var t=!1;return this.name&&(t=e.includes(this.name)),!t&&this.altName&&(t=e.includes(this.altName)),t}};class Mn extends er{constructor(){super(...arguments),c(this,"preferUnstable",!1)}setPreferUnstable(e){this.preferUnstable=e}get name(){return this.stable&&!this.preferUnstable?this.stable:this.unstable}}class pe extends er{constructor(e,t){if(super(e,t),!this.unstable)throw new Error("Unstable value must be supplied")}get name(){return this.unstable}get altName(){return this.stable}}var gl=new pe("m.asset","org.matrix.msc3488.asset"),Oi=new pe("m.ts","org.matrix.msc3488.ts"),yl=new pe("m.location","org.matrix.msc3488.location"),we=(function(i){return i.Read="m.read",i.FullyRead="m.fully_read",i.ReadPrivate="m.read.private",i})({}),On="main";function zi(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(i);e&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(i,n).enumerable})),t.push.apply(t,r)}return t}function Yi(i){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?zi(Object(t),!0).forEach(function(r){c(i,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(t)):zi(Object(t)).forEach(function(r){Object.defineProperty(i,r,Object.getOwnPropertyDescriptor(t,r))})}return i}var An=new Map;function Ln(i){return i instanceof String&&(i=i.toString()),An.has(i)||An.set(i,i),An.get(i)}function ri(i,e){var t=e??new URLSearchParams,r=function(o){a!=null&&(Array.isArray(a)?a.forEach(l=>{t.append(o,String(l))}):t.append(o,String(a)))};for(var[n,a]of Object.entries(i))r(n);return t}function Xi(i,e,t){var r=Yi(Yi({},t),{},{[e]:t[i]});return delete r[i],r}function A(i,e){for(var t in e)if(e.hasOwnProperty(t)){var r=e[t];r!=null&&(i=i.replace(t,encodeURIComponent(r)))}return i}function pn(i,e,t){var r;if(t){for(r=i.length-1;r>=0;r--)if(e(i[r],r,i))return i.splice(r,1),!0}else for(r=0;r<i.length;r++)if(e(i[r],r,i))return i.splice(r,1),!0;return!1}function eo(i,e){for(var t of e)if(!i.hasOwnProperty(t))throw new Error("Missing required key: "+t)}function Br(i){return JSON.parse(JSON.stringify(i))}function Xt(i,e){if(i===e)return!0;if(typeof i!=typeof e)return!1;if(typeof i=="number"&&isNaN(i)&&isNaN(e))return!0;if(i===null||e===null)return i===e;if(i.constructor.name!=="Object"&&i.constructor.name!=="RegExp"&&i.constructor.name!=="Date"&&i.constructor.name!=="Array"||i.prototype!==e.prototype)return!1;if(i instanceof RegExp||i instanceof Date)return i.toString()===e.toString();if(Array.isArray(i)){if(i.length!==e.length)return!1;for(var t=0;t<i.length;t++)if(!Xt(i[t],e[t]))return!1}else{for(var r in e)if(e.hasOwnProperty(r)!==i.hasOwnProperty(r))return!1;for(var n in i)if(e.hasOwnProperty(n)!==i.hasOwnProperty(n)||!Xt(i[n],e[n]))return!1}return!0}function ni(i){if(typeof i!="object"||i==null||Array.isArray(i))return i;var e=[];for(var[t,r]of Object.entries(i))e.push([t,ni(r)]);return e.sort((n,a)=>cn(n[0],a[0])),e}function Qi(i){return typeof i=="number"&&isFinite(i)}function At(i){return typeof i=="string"?ol(i.normalize("NFD").replace(Sl,"")):""}function ii(i){return typeof i=="string"?i.replace(/[\u202d-\u202e]/g,""):""}function El(i){return At(i.toLowerCase()).replace(/[\\'!"#$%&()*+,\-./:;<=>?@[\]^_`{|}~\u2000-\u206f\u2e00-\u2e7f]/g,"").toLowerCase()}var Sl=/[\u2000-\u200F\u202A-\u202F\u0300-\u036F\uFEFF\u061C\u2800\u2062-\u2063\s]/g;function to(i){return i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function ro(i){return to(i).replace(/\\\*/g,".*").replace(/\?/g,".")}function Dn(i){return i!=null&&i.endsWith("/")?i.slice(0,-1):i}function jr(i,e){return new Promise(t=>{setTimeout(t,i,e)})}function bh(i,e,t){return ai.apply(this,arguments)}function ai(){return ai=R(function*(i,e,t){var r=Date.now();try{return yield t()}finally{var n=Date.now();i.debug("[Perf]: ".concat(e," took ").concat(n-r,"ms"))}}),ai.apply(this,arguments)}function bl(i,e,t){var r=Date.now();try{return t()}finally{var n=Date.now();i.debug("[Perf]: ".concat(e," took ").concat(n-r,"ms"))}}function no(i){return i==null}function Zi(i,e){return si.apply(this,arguments)}function si(){return si=R(function*(i,e){for(var t of i)yield e(yield t)}),si.apply(this,arguments)}function xt(i){return Promise.resolve(i())}function _l(i,e){return pl(t=>i(t),{retries:1/0,shouldRetry:e?t=>{var{error:r}=t;return e(r)}:void 0,factor:2,minTimeout:3e3,maxTimeout:15e3})}var yt=(()=>{for(var i="",e=32;e<=126;e++)i+=String.fromCharCode(e);return i})();function ea(i,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:yt;return i.padEnd(e,t[0])}function Ar(i){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:yt,t=BigInt(e.length);if(i<=t){var r;return(r=e[Number(i)-1])!==null&&r!==void 0?r:""}var n=i/t,a=Number(i%t)-1;return a<0&&(n-=BigInt(Math.abs(a)),a=Number(t)-1),Ar(n,e)+e[a]}function gn(i){for(var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:yt,t=BigInt(e.length),r=BigInt(0),n=i.length-1,a=BigInt(0);n>=0;n--,a++){var s=i.charCodeAt(n)-e.charCodeAt(0);r+=BigInt(1+s)*t**a}return r}function Rl(i,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:yt,r=Math.max(i.length,e.length),n=gn(ea(i,r,t),t),a=gn(ea(e,r,t),t),s=(n+a)/BigInt(2);return s===n||s==a?Ar(s,t)+t[0]:Ar(s,t)}function or(i){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:yt;return Ar(gn(i,e)+BigInt(1),e)}function ta(i){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:yt;return Ar(gn(i,e)-BigInt(1),e)}function cn(i,e){return i<e?-1:i>e?1:0}function io(i,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;for(var[r,n]of Object.entries(e)){if(i[r]instanceof Object&&n){io(i[r],n);continue}if(n!=null||!t){oi(i,r,n);continue}}return i}function ra(i){var e;return(e=Oi.findIn(i.getContent()))!==null&&e!==void 0?e:-1}function Il(i,e){return ra(e)-ra(i)}function ki(i){return[we.Read,we.ReadPrivate].includes(i)}function na(i,e){var t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:(s,o)=>s===o;if(i.size!==e.size)return!1;for(var[r,n]of i){var a=e.get(r);if(a===void 0||!t(n,a))return!1}return!0}function ao(i){return i instanceof Map?Pi(i):Array.isArray(i)?i.map(e=>ao(e)):i}function Pi(i){var e=new Map;for(var[t,r]of i)e.set(t,ao(r));return Object.fromEntries(e.entries())}function _r(i){return i==="__proto__"||i==="prototype"||i==="constructor"}function oi(i,e,t){if(_r(e))throw new Error("Trying to modify prototype or constructor");i[e]=t}function He(i){return!(_r(i.room_id)||_r(i.sender)||_r(i.event_id))}class Rr extends Map{constructor(e){super(),this.createDefault=e}getOrCreate(e){return this.has(e)||this.set(e,this.createDefault()),this.get(e)}}var Un={},lr={},dr={},ia;function so(){if(ia)return dr;ia=1,Object.defineProperty(dr,"__esModule",{value:!0}),dr.NamespacedMap=void 0;function i(l,d){var u=typeof Symbol<"u"&&l[Symbol.iterator]||l["@@iterator"];if(!u){if(Array.isArray(l)||(u=e(l))||d){u&&(l=u);var h=0,m=function(){};return{s:m,n:function(){return h>=l.length?{done:!0}:{done:!1,value:l[h++]}},e:function(S){throw S},f:m}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
2
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var E=!0,f=!1,p;return{s:function(){u=u.call(l)},n:function(){var S=u.next();return E=S.done,S},e:function(S){f=!0,p=S},f:function(){try{!E&&u.return!=null&&u.return()}finally{if(f)throw p}}}}function e(l,d){if(l){if(typeof l=="string")return t(l,d);var u=Object.prototype.toString.call(l).slice(8,-1);if(u==="Object"&&l.constructor&&(u=l.constructor.name),u==="Map"||u==="Set")return Array.from(l);if(u==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(u))return t(l,d)}}function t(l,d){(d==null||d>l.length)&&(d=l.length);for(var u=0,h=new Array(d);u<d;u++)h[u]=l[u];return h}function r(l,d){if(!(l instanceof d))throw new TypeError("Cannot call a class as a function")}function n(l,d){for(var u=0;u<d.length;u++){var h=d[u];h.enumerable=h.enumerable||!1,h.configurable=!0,"value"in h&&(h.writable=!0),Object.defineProperty(l,h.key,h)}}function a(l,d,u){return d&&n(l.prototype,d),Object.defineProperty(l,"prototype",{writable:!1}),l}function s(l,d,u){return d in l?Object.defineProperty(l,d,{value:u,enumerable:!0,configurable:!0,writable:!0}):l[d]=u,l}var o=(function(){function l(d){if(r(this,l),s(this,"internalMap",new Map),d){var u=i(d),h;try{for(u.s();!(h=u.n()).done;){var m=h.value;this.set(m[0],m[1])}}catch(E){u.e(E)}finally{u.f()}}}return a(l,[{key:"get",value:function(u){return u.name&&this.internalMap.has(u.name)?this.internalMap.get(u.name):u.altName&&this.internalMap.has(u.altName)?this.internalMap.get(u.altName):null}},{key:"set",value:function(u,h){u.name&&this.internalMap.set(u.name,h),u.altName&&this.internalMap.set(u.altName,h)}},{key:"has",value:function(u){return!!this.get(u)}},{key:"delete",value:function(u){u.name&&this.internalMap.delete(u.name),u.altName&&this.internalMap.delete(u.altName)}},{key:"hasNamespaced",value:function(u){return this.internalMap.has(u)}},{key:"getNamespaced",value:function(u){return this.internalMap.get(u)}}]),l})();return dr.NamespacedMap=o,dr}var ur={},aa;function tr(){if(aa)return ur;aa=1;function i(f){"@babel/helpers - typeof";return i=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(p){return typeof p}:function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p},i(f)}Object.defineProperty(ur,"__esModule",{value:!0}),ur.InvalidEventError=void 0;function e(f,p,I){return Object.defineProperty(f,"prototype",{writable:!1}),f}function t(f,p){if(!(f instanceof p))throw new TypeError("Cannot call a class as a function")}function r(f,p){if(typeof p!="function"&&p!==null)throw new TypeError("Super expression must either be null or a function");f.prototype=Object.create(p&&p.prototype,{constructor:{value:f,writable:!0,configurable:!0}}),Object.defineProperty(f,"prototype",{writable:!1}),p&&h(f,p)}function n(f){var p=d();return function(){var S=m(f),g;if(p){var _=m(this).constructor;g=Reflect.construct(S,arguments,_)}else g=S.apply(this,arguments);return a(this,g)}}function a(f,p){if(p&&(i(p)==="object"||typeof p=="function"))return p;if(p!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return s(f)}function s(f){if(f===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return f}function o(f){var p=typeof Map=="function"?new Map:void 0;return o=function(S){if(S===null||!u(S))return S;if(typeof S!="function")throw new TypeError("Super expression must either be null or a function");if(typeof p<"u"){if(p.has(S))return p.get(S);p.set(S,g)}function g(){return l(S,arguments,m(this).constructor)}return g.prototype=Object.create(S.prototype,{constructor:{value:g,enumerable:!1,writable:!0,configurable:!0}}),h(g,S)},o(f)}function l(f,p,I){return d()?l=Reflect.construct:l=function(g,_,y){var b=[null];b.push.apply(b,_);var v=Function.bind.apply(g,b),w=new v;return y&&h(w,y.prototype),w},l.apply(null,arguments)}function d(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function u(f){return Function.toString.call(f).indexOf("[native code]")!==-1}function h(f,p){return h=Object.setPrototypeOf||function(S,g){return S.__proto__=g,S},h(f,p)}function m(f){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(I){return I.__proto__||Object.getPrototypeOf(I)},m(f)}var E=(function(f){r(I,f);var p=n(I);function I(S){return t(this,I),p.call(this,S)}return e(I)})(o(Error));return ur.InvalidEventError=E,ur}var Ft={},cr={},hr={},sa;function Kr(){if(sa)return hr;sa=1,Object.defineProperty(hr,"__esModule",{value:!0}),hr.ExtensibleEvent=void 0;function i(n,a){if(!(n instanceof a))throw new TypeError("Cannot call a class as a function")}function e(n,a){for(var s=0;s<a.length;s++){var o=a[s];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(n,o.key,o)}}function t(n,a,s){return a&&e(n.prototype,a),Object.defineProperty(n,"prototype",{writable:!1}),n}var r=(function(){function n(a){i(this,n),this.wireFormat=a}return t(n,[{key:"wireContent",get:function(){return this.wireFormat.content}}]),n})();return hr.ExtensibleEvent=r,hr}var vr={},oa;function oo(){if(oa)return vr;oa=1,Object.defineProperty(vr,"__esModule",{value:!0}),vr.isOptionalAString=i,vr.isProvided=e;function i(t){return e(t)&&typeof t=="string"}function e(t){return t!=null}return vr}var Oe={},St={},la;function rr(){if(la)return St;la=1;function i(E){"@babel/helpers - typeof";return i=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(f){return typeof f}:function(f){return f&&typeof Symbol=="function"&&f.constructor===Symbol&&f!==Symbol.prototype?"symbol":typeof f},i(E)}Object.defineProperty(St,"__esModule",{value:!0}),St.UnstableValue=St.NamespacedValue=void 0;function e(E,f){if(typeof f!="function"&&f!==null)throw new TypeError("Super expression must either be null or a function");E.prototype=Object.create(f&&f.prototype,{constructor:{value:E,writable:!0,configurable:!0}}),Object.defineProperty(E,"prototype",{writable:!1}),f&&t(E,f)}function t(E,f){return t=Object.setPrototypeOf||function(I,S){return I.__proto__=S,I},t(E,f)}function r(E){var f=s();return function(){var I=o(E),S;if(f){var g=o(this).constructor;S=Reflect.construct(I,arguments,g)}else S=I.apply(this,arguments);return n(this,S)}}function n(E,f){if(f&&(i(f)==="object"||typeof f=="function"))return f;if(f!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return a(E)}function a(E){if(E===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return E}function s(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function o(E){return o=Object.setPrototypeOf?Object.getPrototypeOf:function(p){return p.__proto__||Object.getPrototypeOf(p)},o(E)}function l(E,f){if(!(E instanceof f))throw new TypeError("Cannot call a class as a function")}function d(E,f){for(var p=0;p<f.length;p++){var I=f[p];I.enumerable=I.enumerable||!1,I.configurable=!0,"value"in I&&(I.writable=!0),Object.defineProperty(E,I.key,I)}}function u(E,f,p){return f&&d(E.prototype,f),Object.defineProperty(E,"prototype",{writable:!1}),E}var h=(function(){function E(f,p){if(l(this,E),this.stable=f,this.unstable=p,!this.unstable&&!this.stable)throw new Error("One of stable or unstable values must be supplied")}return u(E,[{key:"name",get:function(){return this.stable?this.stable:this.unstable}},{key:"altName",get:function(){return this.stable?this.unstable:null}},{key:"matches",value:function(p){return!!this.name&&this.name===p||!!this.altName&&this.altName===p}},{key:"findIn",value:function(p){var I;return this.name&&(I=p?.[this.name]),!I&&this.altName&&(I=p?.[this.altName]),I}},{key:"includedIn",value:function(p){var I=!1;return this.name&&(I=p.includes(this.name)),!I&&this.altName&&(I=p.includes(this.altName)),I}}]),E})();St.NamespacedValue=h;var m=(function(E){e(p,E);var f=r(p);function p(I,S){var g;if(l(this,p),g=f.call(this,I,S),!g.unstable)throw new Error("Unstable value must be supplied");return g}return u(p,[{key:"name",get:function(){return this.unstable}},{key:"altName",get:function(){return this.stable}}]),p})(h);return St.UnstableValue=m,St}var da;function Qe(){if(da)return Oe;da=1,Object.defineProperty(Oe,"__esModule",{value:!0}),Oe.M_TEXT=Oe.M_NOTICE=Oe.M_MESSAGE=Oe.M_HTML=Oe.M_EMOTE=void 0;var i=rr(),e=new i.UnstableValue("m.message","org.matrix.msc1767.message");Oe.M_MESSAGE=e;var t=new i.UnstableValue("m.text","org.matrix.msc1767.text");Oe.M_TEXT=t;var r=new i.UnstableValue("m.html","org.matrix.msc1767.html");Oe.M_HTML=r;var n=new i.UnstableValue("m.emote","org.matrix.msc1767.emote");Oe.M_EMOTE=n;var a=new i.UnstableValue("m.notice","org.matrix.msc1767.notice");return Oe.M_NOTICE=a,Oe}var Jr={},ua;function Ut(){if(ua)return Jr;ua=1,Object.defineProperty(Jr,"__esModule",{value:!0}),Jr.isEventTypeSame=i;function i(e,t){if(typeof e=="string")return typeof t=="string"?t===e:t.matches(e);if(typeof t=="string")return e.matches(t);var r=t,n=e;return r.matches(n.name)||r.matches(n.altName)}return Jr}var ca;function Nt(){if(ca)return cr;ca=1;function i(y){"@babel/helpers - typeof";return i=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(b){return typeof b}:function(b){return b&&typeof Symbol=="function"&&b.constructor===Symbol&&b!==Symbol.prototype?"symbol":typeof b},i(y)}Object.defineProperty(cr,"__esModule",{value:!0}),cr.MessageEvent=void 0;var e=Kr(),t=oo(),r=tr(),n=Qe(),a=Ut();function s(y,b){var v=Object.keys(y);if(Object.getOwnPropertySymbols){var w=Object.getOwnPropertySymbols(y);b&&(w=w.filter(function(C){return Object.getOwnPropertyDescriptor(y,C).enumerable})),v.push.apply(v,w)}return v}function o(y){for(var b=1;b<arguments.length;b++){var v=arguments[b]!=null?arguments[b]:{};b%2?s(Object(v),!0).forEach(function(w){g(y,w,v[w])}):Object.getOwnPropertyDescriptors?Object.defineProperties(y,Object.getOwnPropertyDescriptors(v)):s(Object(v)).forEach(function(w){Object.defineProperty(y,w,Object.getOwnPropertyDescriptor(v,w))})}return y}function l(y,b){if(!(y instanceof b))throw new TypeError("Cannot call a class as a function")}function d(y,b){for(var v=0;v<b.length;v++){var w=b[v];w.enumerable=w.enumerable||!1,w.configurable=!0,"value"in w&&(w.writable=!0),Object.defineProperty(y,w.key,w)}}function u(y,b,v){return b&&d(y.prototype,b),v&&d(y,v),Object.defineProperty(y,"prototype",{writable:!1}),y}function h(y,b){if(typeof b!="function"&&b!==null)throw new TypeError("Super expression must either be null or a function");y.prototype=Object.create(b&&b.prototype,{constructor:{value:y,writable:!0,configurable:!0}}),Object.defineProperty(y,"prototype",{writable:!1}),b&&m(y,b)}function m(y,b){return m=Object.setPrototypeOf||function(w,C){return w.__proto__=C,w},m(y,b)}function E(y){var b=I();return function(){var w=S(y),C;if(b){var k=S(this).constructor;C=Reflect.construct(w,arguments,k)}else C=w.apply(this,arguments);return f(this,C)}}function f(y,b){if(b&&(i(b)==="object"||typeof b=="function"))return b;if(b!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return p(y)}function p(y){if(y===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return y}function I(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function S(y){return S=Object.setPrototypeOf?Object.getPrototypeOf:function(v){return v.__proto__||Object.getPrototypeOf(v)},S(y)}function g(y,b,v){return b in y?Object.defineProperty(y,b,{value:v,enumerable:!0,configurable:!0,writable:!0}):y[b]=v,y}var _=(function(y){h(v,y);var b=E(v);function v(w){var C;l(this,v),C=b.call(this,w),g(p(C),"text",void 0),g(p(C),"html",void 0),g(p(C),"renderings",void 0);var k=n.M_MESSAGE.findIn(C.wireContent),P=n.M_TEXT.findIn(C.wireContent),D=n.M_HTML.findIn(C.wireContent);if((0,t.isProvided)(k)){if(!Array.isArray(k))throw new r.InvalidEventError("m.message contents must be an array");var B=k.find(function(ge){return!(0,t.isProvided)(ge.mimetype)||ge.mimetype==="text/plain"}),Z=k.find(function(ge){return ge.mimetype==="text/html"});if(!B)throw new r.InvalidEventError("m.message is missing a plain text representation");C.text=B.body,C.html=Z?.body,C.renderings=k}else if((0,t.isOptionalAString)(P))C.text=P,C.html=D,C.renderings=[{body:P,mimetype:"text/plain"}],C.html&&C.renderings.push({body:C.html,mimetype:"text/html"});else throw new r.InvalidEventError("Missing textual representation for event");return C}return u(v,[{key:"isEmote",get:function(){return n.M_EMOTE.matches(this.wireFormat.type)||(0,t.isProvided)(n.M_EMOTE.findIn(this.wireFormat.content))}},{key:"isNotice",get:function(){return n.M_NOTICE.matches(this.wireFormat.type)||(0,t.isProvided)(n.M_NOTICE.findIn(this.wireFormat.content))}},{key:"isEquivalentTo",value:function(C){return(0,a.isEventTypeSame)(C,n.M_MESSAGE)}},{key:"serializeMMessageOnly",value:function(){var C=g({},n.M_MESSAGE.name,this.renderings);if(this.renderings.length===1){var k=this.renderings[0].mimetype;(k===void 0||k==="text/plain")&&(C=g({},n.M_TEXT.name,this.renderings[0].body))}return C}},{key:"serialize",value:function(){var C;return{type:"m.room.message",content:o(o({},this.serializeMMessageOnly()),{},{body:this.text,msgtype:"m.text",format:this.html?"org.matrix.custom.html":void 0,formatted_body:(C=this.html)!==null&&C!==void 0?C:void 0})}}}],[{key:"from",value:function(C,k){var P;return new v({type:n.M_MESSAGE.name,content:(P={},g(P,n.M_TEXT.name,C),g(P,n.M_HTML.name,k),P)})}}]),v})(e.ExtensibleEvent);return cr.MessageEvent=_,cr}var fr={},ha;function Ai(){if(ha)return fr;ha=1;function i(g){"@babel/helpers - typeof";return i=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(_){return typeof _}:function(_){return _&&typeof Symbol=="function"&&_.constructor===Symbol&&_!==Symbol.prototype?"symbol":typeof _},i(g)}Object.defineProperty(fr,"__esModule",{value:!0}),fr.NoticeEvent=void 0;var e=Nt(),t=Qe(),r=Ut();function n(g,_,y){return _ in g?Object.defineProperty(g,_,{value:y,enumerable:!0,configurable:!0,writable:!0}):g[_]=y,g}function a(g,_){if(!(g instanceof _))throw new TypeError("Cannot call a class as a function")}function s(g,_){for(var y=0;y<_.length;y++){var b=_[y];b.enumerable=b.enumerable||!1,b.configurable=!0,"value"in b&&(b.writable=!0),Object.defineProperty(g,b.key,b)}}function o(g,_,y){return _&&s(g.prototype,_),y&&s(g,y),Object.defineProperty(g,"prototype",{writable:!1}),g}function l(){return typeof Reflect<"u"&&Reflect.get?l=Reflect.get:l=function(_,y,b){var v=d(_,y);if(v){var w=Object.getOwnPropertyDescriptor(v,y);return w.get?w.get.call(arguments.length<3?_:b):w.value}},l.apply(this,arguments)}function d(g,_){for(;!Object.prototype.hasOwnProperty.call(g,_)&&(g=I(g),g!==null););return g}function u(g,_){if(typeof _!="function"&&_!==null)throw new TypeError("Super expression must either be null or a function");g.prototype=Object.create(_&&_.prototype,{constructor:{value:g,writable:!0,configurable:!0}}),Object.defineProperty(g,"prototype",{writable:!1}),_&&h(g,_)}function h(g,_){return h=Object.setPrototypeOf||function(b,v){return b.__proto__=v,b},h(g,_)}function m(g){var _=p();return function(){var b=I(g),v;if(_){var w=I(this).constructor;v=Reflect.construct(b,arguments,w)}else v=b.apply(this,arguments);return E(this,v)}}function E(g,_){if(_&&(i(_)==="object"||typeof _=="function"))return _;if(_!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return f(g)}function f(g){if(g===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return g}function p(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function I(g){return I=Object.setPrototypeOf?Object.getPrototypeOf:function(y){return y.__proto__||Object.getPrototypeOf(y)},I(g)}var S=(function(g){u(y,g);var _=m(y);function y(b){return a(this,y),_.call(this,b)}return o(y,[{key:"isNotice",get:function(){return!0}},{key:"isEquivalentTo",value:function(v){return(0,r.isEventTypeSame)(v,t.M_NOTICE)||l(I(y.prototype),"isEquivalentTo",this).call(this,v)}},{key:"serialize",value:function(){var v=l(I(y.prototype),"serialize",this).call(this);return v.content.msgtype="m.notice",v}}],[{key:"from",value:function(v,w){var C;return new y({type:t.M_NOTICE.name,content:(C={},n(C,t.M_TEXT.name,v),n(C,t.M_HTML.name,w),C)})}}]),y})(e.MessageEvent);return fr.NoticeEvent=S,fr}var mr={},va;function Li(){if(va)return mr;va=1;function i(g){"@babel/helpers - typeof";return i=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(_){return typeof _}:function(_){return _&&typeof Symbol=="function"&&_.constructor===Symbol&&_!==Symbol.prototype?"symbol":typeof _},i(g)}Object.defineProperty(mr,"__esModule",{value:!0}),mr.EmoteEvent=void 0;var e=Nt(),t=Qe(),r=Ut();function n(g,_,y){return _ in g?Object.defineProperty(g,_,{value:y,enumerable:!0,configurable:!0,writable:!0}):g[_]=y,g}function a(g,_){if(!(g instanceof _))throw new TypeError("Cannot call a class as a function")}function s(g,_){for(var y=0;y<_.length;y++){var b=_[y];b.enumerable=b.enumerable||!1,b.configurable=!0,"value"in b&&(b.writable=!0),Object.defineProperty(g,b.key,b)}}function o(g,_,y){return _&&s(g.prototype,_),y&&s(g,y),Object.defineProperty(g,"prototype",{writable:!1}),g}function l(){return typeof Reflect<"u"&&Reflect.get?l=Reflect.get:l=function(_,y,b){var v=d(_,y);if(v){var w=Object.getOwnPropertyDescriptor(v,y);return w.get?w.get.call(arguments.length<3?_:b):w.value}},l.apply(this,arguments)}function d(g,_){for(;!Object.prototype.hasOwnProperty.call(g,_)&&(g=I(g),g!==null););return g}function u(g,_){if(typeof _!="function"&&_!==null)throw new TypeError("Super expression must either be null or a function");g.prototype=Object.create(_&&_.prototype,{constructor:{value:g,writable:!0,configurable:!0}}),Object.defineProperty(g,"prototype",{writable:!1}),_&&h(g,_)}function h(g,_){return h=Object.setPrototypeOf||function(b,v){return b.__proto__=v,b},h(g,_)}function m(g){var _=p();return function(){var b=I(g),v;if(_){var w=I(this).constructor;v=Reflect.construct(b,arguments,w)}else v=b.apply(this,arguments);return E(this,v)}}function E(g,_){if(_&&(i(_)==="object"||typeof _=="function"))return _;if(_!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return f(g)}function f(g){if(g===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return g}function p(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function I(g){return I=Object.setPrototypeOf?Object.getPrototypeOf:function(y){return y.__proto__||Object.getPrototypeOf(y)},I(g)}var S=(function(g){u(y,g);var _=m(y);function y(b){return a(this,y),_.call(this,b)}return o(y,[{key:"isEmote",get:function(){return!0}},{key:"isEquivalentTo",value:function(v){return(0,r.isEventTypeSame)(v,t.M_EMOTE)||l(I(y.prototype),"isEquivalentTo",this).call(this,v)}},{key:"serialize",value:function(){var v=l(I(y.prototype),"serialize",this).call(this);return v.content.msgtype="m.emote",v}}],[{key:"from",value:function(v,w){var C;return new y({type:t.M_EMOTE.name,content:(C={},n(C,t.M_TEXT.name,v),n(C,t.M_HTML.name,w),C)})}}]),y})(e.MessageEvent);return mr.EmoteEvent=S,mr}var fa;function lo(){if(fa)return Ft;fa=1,Object.defineProperty(Ft,"__esModule",{value:!0}),Ft.LEGACY_M_ROOM_MESSAGE=void 0,Ft.parseMRoomMessage=d;var i=Nt(),e=Ai(),t=Li(),r=rr(),n=Qe();function a(u,h){var m=Object.keys(u);if(Object.getOwnPropertySymbols){var E=Object.getOwnPropertySymbols(u);h&&(E=E.filter(function(f){return Object.getOwnPropertyDescriptor(u,f).enumerable})),m.push.apply(m,E)}return m}function s(u){for(var h=1;h<arguments.length;h++){var m=arguments[h]!=null?arguments[h]:{};h%2?a(Object(m),!0).forEach(function(E){o(u,E,m[E])}):Object.getOwnPropertyDescriptors?Object.defineProperties(u,Object.getOwnPropertyDescriptors(m)):a(Object(m)).forEach(function(E){Object.defineProperty(u,E,Object.getOwnPropertyDescriptor(m,E))})}return u}function o(u,h,m){return h in u?Object.defineProperty(u,h,{value:m,enumerable:!0,configurable:!0,writable:!0}):u[h]=m,u}var l=new r.NamespacedValue("m.room.message");Ft.LEGACY_M_ROOM_MESSAGE=l;function d(u){var h,m,E;if(n.M_MESSAGE.findIn(u.content)||n.M_TEXT.findIn(u.content))return new i.MessageEvent(u);var f=(h=u.content)===null||h===void 0?void 0:h.msgtype,p=(m=u.content)===null||m===void 0?void 0:m.body,I=((E=u.content)===null||E===void 0?void 0:E.format)==="org.matrix.custom.html"?u.content.formatted_body:null;if(f==="m.text"){var S;return new i.MessageEvent(s(s({},u),{},{content:s(s({},u.content),{},(S={},o(S,n.M_TEXT.name,p),o(S,n.M_HTML.name,I),S))}))}else if(f==="m.notice"){var g;return new e.NoticeEvent(s(s({},u),{},{content:s(s({},u.content),{},(g={},o(g,n.M_TEXT.name,p),o(g,n.M_HTML.name,I),g))}))}else if(f==="m.emote"){var _;return new t.EmoteEvent(s(s({},u),{},{content:s(s({},u.content),{},(_={},o(_,n.M_TEXT.name,p),o(_,n.M_HTML.name,I),_))}))}else return null}return Ft}var zr={},ma;function uo(){if(ma)return zr;ma=1,Object.defineProperty(zr,"__esModule",{value:!0}),zr.parseMMessage=n;var i=Nt(),e=Qe(),t=Li(),r=Ai();function n(a){return e.M_EMOTE.matches(a.type)?new t.EmoteEvent(a):e.M_NOTICE.matches(a.type)?new r.NoticeEvent(a):new i.MessageEvent(a)}return zr}var ke={},pa;function nr(){if(pa)return ke;pa=1,Object.defineProperty(ke,"__esModule",{value:!0}),ke.M_POLL_START=ke.M_POLL_RESPONSE=ke.M_POLL_KIND_UNDISCLOSED=ke.M_POLL_KIND_DISCLOSED=ke.M_POLL_END=void 0;var i=rr(),e=new i.UnstableValue("m.poll.disclosed","org.matrix.msc3381.poll.disclosed");ke.M_POLL_KIND_DISCLOSED=e;var t=new i.UnstableValue("m.poll.undisclosed","org.matrix.msc3381.poll.undisclosed");ke.M_POLL_KIND_UNDISCLOSED=t;var r=new i.UnstableValue("m.poll.start","org.matrix.msc3381.poll.start");ke.M_POLL_START=r;var n=new i.UnstableValue("m.poll.response","org.matrix.msc3381.poll.response");ke.M_POLL_RESPONSE=n;var a=new i.UnstableValue("m.poll.end","org.matrix.msc3381.poll.end");return ke.M_POLL_END=a,ke}var Yr={},bt={},ga;function co(){if(ga)return bt;ga=1;function i(L){"@babel/helpers - typeof";return i=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(F){return typeof F}:function(F){return F&&typeof Symbol=="function"&&F.constructor===Symbol&&F!==Symbol.prototype?"symbol":typeof F},i(L)}Object.defineProperty(bt,"__esModule",{value:!0}),bt.PollStartEvent=bt.PollAnswerSubevent=void 0;var e=nr(),t=Nt(),r=Qe(),n=tr(),a=rr(),s=Ut(),o=Kr();function l(L){return m(L)||h(L)||u(L)||d()}function d(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
3
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function u(L,F){if(L){if(typeof L=="string")return E(L,F);var j=Object.prototype.toString.call(L).slice(8,-1);if(j==="Object"&&L.constructor&&(j=L.constructor.name),j==="Map"||j==="Set")return Array.from(L);if(j==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(j))return E(L,F)}}function h(L){if(typeof Symbol<"u"&&L[Symbol.iterator]!=null||L["@@iterator"]!=null)return Array.from(L)}function m(L){if(Array.isArray(L))return E(L)}function E(L,F){(F==null||F>L.length)&&(F=L.length);for(var j=0,$=new Array(F);j<F;j++)$[j]=L[j];return $}function f(L,F){var j=Object.keys(L);if(Object.getOwnPropertySymbols){var $=Object.getOwnPropertySymbols(L);F&&($=$.filter(function(G){return Object.getOwnPropertyDescriptor(L,G).enumerable})),j.push.apply(j,$)}return j}function p(L){for(var F=1;F<arguments.length;F++){var j=arguments[F]!=null?arguments[F]:{};F%2?f(Object(j),!0).forEach(function($){P(L,$,j[$])}):Object.getOwnPropertyDescriptors?Object.defineProperties(L,Object.getOwnPropertyDescriptors(j)):f(Object(j)).forEach(function($){Object.defineProperty(L,$,Object.getOwnPropertyDescriptor(j,$))})}return L}function I(L,F){if(!(L instanceof F))throw new TypeError("Cannot call a class as a function")}function S(L,F){for(var j=0;j<F.length;j++){var $=F[j];$.enumerable=$.enumerable||!1,$.configurable=!0,"value"in $&&($.writable=!0),Object.defineProperty(L,$.key,$)}}function g(L,F,j){return F&&S(L.prototype,F),j&&S(L,j),Object.defineProperty(L,"prototype",{writable:!1}),L}function _(L,F){if(typeof F!="function"&&F!==null)throw new TypeError("Super expression must either be null or a function");L.prototype=Object.create(F&&F.prototype,{constructor:{value:L,writable:!0,configurable:!0}}),Object.defineProperty(L,"prototype",{writable:!1}),F&&y(L,F)}function y(L,F){return y=Object.setPrototypeOf||function($,G){return $.__proto__=G,$},y(L,F)}function b(L){var F=C();return function(){var $=k(L),G;if(F){var ne=k(this).constructor;G=Reflect.construct($,arguments,ne)}else G=$.apply(this,arguments);return v(this,G)}}function v(L,F){if(F&&(i(F)==="object"||typeof F=="function"))return F;if(F!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return w(L)}function w(L){if(L===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return L}function C(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function k(L){return k=Object.setPrototypeOf?Object.getPrototypeOf:function(j){return j.__proto__||Object.getPrototypeOf(j)},k(L)}function P(L,F,j){return F in L?Object.defineProperty(L,F,{value:j,enumerable:!0,configurable:!0,writable:!0}):L[F]=j,L}var D=(function(L){_(j,L);var F=b(j);function j($){var G;I(this,j),G=F.call(this,$),P(w(G),"id",void 0);var ne=$.content.id;if(!ne||typeof ne!="string")throw new n.InvalidEventError("Answer ID must be a non-empty string");return G.id=ne,G}return g(j,[{key:"serialize",value:function(){return{type:"org.matrix.sdk.poll.answer",content:p({id:this.id},this.serializeMMessageOnly())}}}],[{key:"from",value:function(G,ne){return new j({type:"org.matrix.sdk.poll.answer",content:P({id:G},r.M_TEXT.name,ne)})}}]),j})(t.MessageEvent);bt.PollAnswerSubevent=D;var B=(function(L){_(j,L);var F=b(j);function j($){var G;I(this,j),G=F.call(this,$),P(w(G),"question",void 0),P(w(G),"kind",void 0),P(w(G),"rawKind",void 0),P(w(G),"maxSelections",void 0),P(w(G),"answers",void 0);var ne=e.M_POLL_START.findIn(G.wireContent);if(!ne.question)throw new n.InvalidEventError("A question is required");if(G.question=new t.MessageEvent({type:"org.matrix.sdk.poll.question",content:ne.question}),G.rawKind=ne.kind,e.M_POLL_KIND_DISCLOSED.matches(G.rawKind)?G.kind=e.M_POLL_KIND_DISCLOSED:G.kind=e.M_POLL_KIND_UNDISCLOSED,G.maxSelections=Number.isFinite(ne.max_selections)&&ne.max_selections>0?ne.max_selections:1,!Array.isArray(ne.answers))throw new n.InvalidEventError("Poll answers must be an array");var Fe=ne.answers.slice(0,20).map(function(Be){return new D({type:"org.matrix.sdk.poll.answer",content:Be})});if(Fe.length<=0)throw new n.InvalidEventError("No answers available");return G.answers=Fe,G}return g(j,[{key:"isEquivalentTo",value:function(G){return(0,s.isEventTypeSame)(G,e.M_POLL_START)}},{key:"serialize",value:function(){var G;return{type:e.M_POLL_START.name,content:(G={},P(G,e.M_POLL_START.name,{question:this.question.serialize().content,kind:this.rawKind,max_selections:this.maxSelections,answers:this.answers.map(function(ne){return ne.serialize().content})}),P(G,r.M_TEXT.name,"".concat(this.question.text,`
4
+ `).concat(this.answers.map(function(ne,Fe){return"".concat(Fe+1,". ").concat(ne.text)}).join(`
5
+ `))),G)}}}],[{key:"from",value:function(G,ne,Fe){var Be,Gr=arguments.length>3&&arguments[3]!==void 0?arguments[3]:1;return new j({type:e.M_POLL_START.name,content:(Be={},P(Be,r.M_TEXT.name,G),P(Be,e.M_POLL_START.name,{question:P({},r.M_TEXT.name,G),kind:Fe instanceof a.NamespacedValue?Fe.name:Fe,max_selections:Gr,answers:ne.map(function(ar){return P({id:ge()},r.M_TEXT.name,ar)})}),Be)})}}]),j})(o.ExtensibleEvent);bt.PollStartEvent=B;var Z="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";function ge(){return l(Array(16)).map(function(){return Z.charAt(Math.floor(Math.random()*Z.length))}).join("")}return bt}var pr={},gr={},ya;function Di(){if(ya)return gr;ya=1,Object.defineProperty(gr,"__esModule",{value:!0}),gr.REFERENCE_RELATION=void 0;var i=rr(),e=new i.NamespacedValue("m.reference");return gr.REFERENCE_RELATION=e,gr}var Ea;function ho(){if(Ea)return pr;Ea=1;function i(g){"@babel/helpers - typeof";return i=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(_){return typeof _}:function(_){return _&&typeof Symbol=="function"&&_.constructor===Symbol&&_!==Symbol.prototype?"symbol":typeof _},i(g)}Object.defineProperty(pr,"__esModule",{value:!0}),pr.PollResponseEvent=void 0;var e=Kr(),t=nr(),r=tr(),n=Di(),a=Ut();function s(g,_){if(!(g instanceof _))throw new TypeError("Cannot call a class as a function")}function o(g,_){for(var y=0;y<_.length;y++){var b=_[y];b.enumerable=b.enumerable||!1,b.configurable=!0,"value"in b&&(b.writable=!0),Object.defineProperty(g,b.key,b)}}function l(g,_,y){return _&&o(g.prototype,_),y&&o(g,y),Object.defineProperty(g,"prototype",{writable:!1}),g}function d(g,_){if(typeof _!="function"&&_!==null)throw new TypeError("Super expression must either be null or a function");g.prototype=Object.create(_&&_.prototype,{constructor:{value:g,writable:!0,configurable:!0}}),Object.defineProperty(g,"prototype",{writable:!1}),_&&u(g,_)}function u(g,_){return u=Object.setPrototypeOf||function(b,v){return b.__proto__=v,b},u(g,_)}function h(g){var _=f();return function(){var b=p(g),v;if(_){var w=p(this).constructor;v=Reflect.construct(b,arguments,w)}else v=b.apply(this,arguments);return m(this,v)}}function m(g,_){if(_&&(i(_)==="object"||typeof _=="function"))return _;if(_!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return E(g)}function E(g){if(g===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return g}function f(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function p(g){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(y){return y.__proto__||Object.getPrototypeOf(y)},p(g)}function I(g,_,y){return _ in g?Object.defineProperty(g,_,{value:y,enumerable:!0,configurable:!0,writable:!0}):g[_]=y,g}var S=(function(g){d(y,g);var _=h(y);function y(b){var v;s(this,y),v=_.call(this,b),I(E(v),"internalAnswerIds",void 0),I(E(v),"internalSpoiled",void 0),I(E(v),"pollEventId",void 0);var w=v.wireContent["m.relates_to"];if(!n.REFERENCE_RELATION.matches(w?.rel_type)||typeof w?.event_id!="string")throw new r.InvalidEventError("Relationship must be a reference to an event");return v.pollEventId=w.event_id,v.validateAgainst(null),v}return l(y,[{key:"answerIds",get:function(){return this.internalAnswerIds}},{key:"spoiled",get:function(){return this.internalSpoiled}},{key:"validateAgainst",value:function(v){var w=t.M_POLL_RESPONSE.findIn(this.wireContent);if(!Array.isArray(w?.answers)){this.internalSpoiled=!0,this.internalAnswerIds=[];return}var C=w.answers;if(C.some(function(k){return typeof k!="string"})||C.length===0){this.internalSpoiled=!0,this.internalAnswerIds=[];return}if(v){if(C.some(function(k){return!v.answers.some(function(P){return P.id===k})})){this.internalSpoiled=!0,this.internalAnswerIds=[];return}C=C.slice(0,v.maxSelections)}this.internalAnswerIds=C,this.internalSpoiled=!1}},{key:"isEquivalentTo",value:function(v){return(0,a.isEventTypeSame)(v,t.M_POLL_RESPONSE)}},{key:"serialize",value:function(){return{type:t.M_POLL_RESPONSE.name,content:I({"m.relates_to":{rel_type:n.REFERENCE_RELATION.name,event_id:this.pollEventId}},t.M_POLL_RESPONSE.name,{answers:this.spoiled?void 0:this.answerIds})}}}],[{key:"from",value:function(v,w){return new y({type:t.M_POLL_RESPONSE.name,content:I({"m.relates_to":{rel_type:n.REFERENCE_RELATION.name,event_id:w}},t.M_POLL_RESPONSE.name,{answers:v})})}}]),y})(e.ExtensibleEvent);return pr.PollResponseEvent=S,pr}var yr={},Sa;function vo(){if(Sa)return yr;Sa=1;function i(v){"@babel/helpers - typeof";return i=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(w){return typeof w}:function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},i(v)}Object.defineProperty(yr,"__esModule",{value:!0}),yr.PollEndEvent=void 0;var e=nr(),t=tr(),r=Di(),n=Nt(),a=Qe(),s=Ut(),o=Kr();function l(v,w){var C=Object.keys(v);if(Object.getOwnPropertySymbols){var k=Object.getOwnPropertySymbols(v);w&&(k=k.filter(function(P){return Object.getOwnPropertyDescriptor(v,P).enumerable})),C.push.apply(C,k)}return C}function d(v){for(var w=1;w<arguments.length;w++){var C=arguments[w]!=null?arguments[w]:{};w%2?l(Object(C),!0).forEach(function(k){y(v,k,C[k])}):Object.getOwnPropertyDescriptors?Object.defineProperties(v,Object.getOwnPropertyDescriptors(C)):l(Object(C)).forEach(function(k){Object.defineProperty(v,k,Object.getOwnPropertyDescriptor(C,k))})}return v}function u(v,w){if(!(v instanceof w))throw new TypeError("Cannot call a class as a function")}function h(v,w){for(var C=0;C<w.length;C++){var k=w[C];k.enumerable=k.enumerable||!1,k.configurable=!0,"value"in k&&(k.writable=!0),Object.defineProperty(v,k.key,k)}}function m(v,w,C){return w&&h(v.prototype,w),C&&h(v,C),Object.defineProperty(v,"prototype",{writable:!1}),v}function E(v,w){if(typeof w!="function"&&w!==null)throw new TypeError("Super expression must either be null or a function");v.prototype=Object.create(w&&w.prototype,{constructor:{value:v,writable:!0,configurable:!0}}),Object.defineProperty(v,"prototype",{writable:!1}),w&&f(v,w)}function f(v,w){return f=Object.setPrototypeOf||function(k,P){return k.__proto__=P,k},f(v,w)}function p(v){var w=g();return function(){var k=_(v),P;if(w){var D=_(this).constructor;P=Reflect.construct(k,arguments,D)}else P=k.apply(this,arguments);return I(this,P)}}function I(v,w){if(w&&(i(w)==="object"||typeof w=="function"))return w;if(w!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return S(v)}function S(v){if(v===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return v}function g(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function _(v){return _=Object.setPrototypeOf?Object.getPrototypeOf:function(C){return C.__proto__||Object.getPrototypeOf(C)},_(v)}function y(v,w,C){return w in v?Object.defineProperty(v,w,{value:C,enumerable:!0,configurable:!0,writable:!0}):v[w]=C,v}var b=(function(v){E(C,v);var w=p(C);function C(k){var P;u(this,C),P=w.call(this,k),y(S(P),"pollEventId",void 0),y(S(P),"closingMessage",void 0);var D=P.wireContent["m.relates_to"];if(!r.REFERENCE_RELATION.matches(D?.rel_type)||typeof D?.event_id!="string")throw new t.InvalidEventError("Relationship must be a reference to an event");return P.pollEventId=D.event_id,P.closingMessage=new n.MessageEvent(P.wireFormat),P}return m(C,[{key:"isEquivalentTo",value:function(P){return(0,s.isEventTypeSame)(P,e.M_POLL_END)}},{key:"serialize",value:function(){return{type:e.M_POLL_END.name,content:d(y({"m.relates_to":{rel_type:r.REFERENCE_RELATION.name,event_id:this.pollEventId}},e.M_POLL_END.name,{}),this.closingMessage.serialize().content)}}}],[{key:"from",value:function(P,D){var B;return new C({type:e.M_POLL_END.name,content:(B={"m.relates_to":{rel_type:r.REFERENCE_RELATION.name,event_id:P}},y(B,e.M_POLL_END.name,{}),y(B,a.M_TEXT.name,D),B)})}}]),C})(o.ExtensibleEvent);return yr.PollEndEvent=b,yr}var ba;function fo(){if(ba)return Yr;ba=1,Object.defineProperty(Yr,"__esModule",{value:!0}),Yr.parseMPoll=n;var i=nr(),e=co(),t=ho(),r=vo();function n(a){return i.M_POLL_START.matches(a.type)?new e.PollStartEvent(a):i.M_POLL_RESPONSE.matches(a.type)?new t.PollResponseEvent(a):i.M_POLL_END.matches(a.type)?new r.PollEndEvent(a):null}return Yr}var _a;function Tl(){if(_a)return lr;_a=1,Object.defineProperty(lr,"__esModule",{value:!0}),lr.ExtensibleEvents=void 0;var i=so(),e=tr(),t=lo(),r=uo(),n=Qe(),a=nr(),s=fo();function o(p,I){var S=typeof Symbol<"u"&&p[Symbol.iterator]||p["@@iterator"];if(!S){if(Array.isArray(p)||(S=l(p))||I){S&&(p=S);var g=0,_=function(){};return{s:_,n:function(){return g>=p.length?{done:!0}:{done:!1,value:p[g++]}},e:function(C){throw C},f:_}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
6
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var y=!0,b=!1,v;return{s:function(){S=S.call(p)},n:function(){var C=S.next();return y=C.done,C},e:function(C){b=!0,v=C},f:function(){try{!y&&S.return!=null&&S.return()}finally{if(b)throw v}}}}function l(p,I){if(p){if(typeof p=="string")return d(p,I);var S=Object.prototype.toString.call(p).slice(8,-1);if(S==="Object"&&p.constructor&&(S=p.constructor.name),S==="Map"||S==="Set")return Array.from(p);if(S==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(S))return d(p,I)}}function d(p,I){(I==null||I>p.length)&&(I=p.length);for(var S=0,g=new Array(I);S<I;S++)g[S]=p[S];return g}function u(p,I){if(!(p instanceof I))throw new TypeError("Cannot call a class as a function")}function h(p,I){for(var S=0;S<I.length;S++){var g=I[S];g.enumerable=g.enumerable||!1,g.configurable=!0,"value"in g&&(g.writable=!0),Object.defineProperty(p,g.key,g)}}function m(p,I,S){return I&&h(p.prototype,I),S&&h(p,S),Object.defineProperty(p,"prototype",{writable:!1}),p}function E(p,I,S){return I in p?Object.defineProperty(p,I,{value:S,enumerable:!0,configurable:!0,writable:!0}):p[I]=S,p}var f=(function(){function p(){u(this,p),E(this,"interpreters",new i.NamespacedMap([[t.LEGACY_M_ROOM_MESSAGE,t.parseMRoomMessage],[n.M_MESSAGE,r.parseMMessage],[n.M_EMOTE,r.parseMMessage],[n.M_NOTICE,r.parseMMessage],[a.M_POLL_START,s.parseMPoll],[a.M_POLL_RESPONSE,s.parseMPoll],[a.M_POLL_END,s.parseMPoll]])),E(this,"_unknownInterpretOrder",[n.M_MESSAGE])}return m(p,[{key:"unknownInterpretOrder",get:function(){var S;return(S=this._unknownInterpretOrder)!==null&&S!==void 0?S:[]},set:function(S){this._unknownInterpretOrder=S}},{key:"registerInterpreter",value:function(S,g){this.interpreters.set(S,g)}},{key:"parse",value:function(S){try{if(this.interpreters.hasNamespaced(S.type))return this.interpreters.getNamespaced(S.type)(S);var g=o(this.unknownInterpretOrder),_;try{for(g.s();!(_=g.n()).done;){var y=_.value;if(this.interpreters.has(y)){var b=this.interpreters.get(y)(S);if(b)return b}}}catch(v){g.e(v)}finally{g.f()}return null}catch(v){if(v instanceof e.InvalidEventError)return null;throw v}}}],[{key:"defaultInstance",get:function(){return p._defaultInstance}},{key:"unknownInterpretOrder",get:function(){return p.defaultInstance.unknownInterpretOrder},set:function(S){p.defaultInstance.unknownInterpretOrder=S}},{key:"registerInterpreter",value:function(S,g){p.defaultInstance.registerInterpreter(S,g)}},{key:"parse",value:function(S){return p.defaultInstance.parse(S)}}]),p})();return lr.ExtensibleEvents=f,E(f,"_defaultInstance",new f),lr}var Nn={},Ra;function wl(){return Ra||(Ra=1,Object.defineProperty(Nn,"__esModule",{value:!0})),Nn}var _t={},Ia;function Cl(){if(Ia)return _t;Ia=1,Object.defineProperty(_t,"__esModule",{value:!0}),_t.LegacyMsgType=void 0,_t.isEventLike=t;var i=Qe(),e;_t.LegacyMsgType=e,(function(r){r.Text="m.text",r.Notice="m.notice",r.Emote="m.emote"})(e||(_t.LegacyMsgType=e={}));function t(r,n){var a=r.content;return n===e.Text?i.M_MESSAGE.matches(r.type)||r.type==="m.room.message"&&a?.msgtype==="m.text":n===e.Emote?i.M_EMOTE.matches(r.type)||r.type==="m.room.message"&&a?.msgtype==="m.emote":n===e.Notice?i.M_NOTICE.matches(r.type)||r.type==="m.room.message"&&a?.msgtype==="m.notice":!1}return _t}var Ta;function Ml(){return Ta||(Ta=1,(function(i){Object.defineProperty(i,"__esModule",{value:!0});var e=Tl();Object.keys(e).forEach(function(v){v==="default"||v==="__esModule"||v in i&&i[v]===e[v]||Object.defineProperty(i,v,{enumerable:!0,get:function(){return e[v]}})});var t=wl();Object.keys(t).forEach(function(v){v==="default"||v==="__esModule"||v in i&&i[v]===t[v]||Object.defineProperty(i,v,{enumerable:!0,get:function(){return t[v]}})});var r=tr();Object.keys(r).forEach(function(v){v==="default"||v==="__esModule"||v in i&&i[v]===r[v]||Object.defineProperty(i,v,{enumerable:!0,get:function(){return r[v]}})});var n=rr();Object.keys(n).forEach(function(v){v==="default"||v==="__esModule"||v in i&&i[v]===n[v]||Object.defineProperty(i,v,{enumerable:!0,get:function(){return n[v]}})});var a=so();Object.keys(a).forEach(function(v){v==="default"||v==="__esModule"||v in i&&i[v]===a[v]||Object.defineProperty(i,v,{enumerable:!0,get:function(){return a[v]}})});var s=oo();Object.keys(s).forEach(function(v){v==="default"||v==="__esModule"||v in i&&i[v]===s[v]||Object.defineProperty(i,v,{enumerable:!0,get:function(){return s[v]}})});var o=Cl();Object.keys(o).forEach(function(v){v==="default"||v==="__esModule"||v in i&&i[v]===o[v]||Object.defineProperty(i,v,{enumerable:!0,get:function(){return o[v]}})});var l=Ut();Object.keys(l).forEach(function(v){v==="default"||v==="__esModule"||v in i&&i[v]===l[v]||Object.defineProperty(i,v,{enumerable:!0,get:function(){return l[v]}})});var d=lo();Object.keys(d).forEach(function(v){v==="default"||v==="__esModule"||v in i&&i[v]===d[v]||Object.defineProperty(i,v,{enumerable:!0,get:function(){return d[v]}})});var u=uo();Object.keys(u).forEach(function(v){v==="default"||v==="__esModule"||v in i&&i[v]===u[v]||Object.defineProperty(i,v,{enumerable:!0,get:function(){return u[v]}})});var h=fo();Object.keys(h).forEach(function(v){v==="default"||v==="__esModule"||v in i&&i[v]===h[v]||Object.defineProperty(i,v,{enumerable:!0,get:function(){return h[v]}})});var m=Di();Object.keys(m).forEach(function(v){v==="default"||v==="__esModule"||v in i&&i[v]===m[v]||Object.defineProperty(i,v,{enumerable:!0,get:function(){return m[v]}})});var E=Kr();Object.keys(E).forEach(function(v){v==="default"||v==="__esModule"||v in i&&i[v]===E[v]||Object.defineProperty(i,v,{enumerable:!0,get:function(){return E[v]}})});var f=Qe();Object.keys(f).forEach(function(v){v==="default"||v==="__esModule"||v in i&&i[v]===f[v]||Object.defineProperty(i,v,{enumerable:!0,get:function(){return f[v]}})});var p=Nt();Object.keys(p).forEach(function(v){v==="default"||v==="__esModule"||v in i&&i[v]===p[v]||Object.defineProperty(i,v,{enumerable:!0,get:function(){return p[v]}})});var I=Li();Object.keys(I).forEach(function(v){v==="default"||v==="__esModule"||v in i&&i[v]===I[v]||Object.defineProperty(i,v,{enumerable:!0,get:function(){return I[v]}})});var S=Ai();Object.keys(S).forEach(function(v){v==="default"||v==="__esModule"||v in i&&i[v]===S[v]||Object.defineProperty(i,v,{enumerable:!0,get:function(){return S[v]}})});var g=nr();Object.keys(g).forEach(function(v){v==="default"||v==="__esModule"||v in i&&i[v]===g[v]||Object.defineProperty(i,v,{enumerable:!0,get:function(){return g[v]}})});var _=co();Object.keys(_).forEach(function(v){v==="default"||v==="__esModule"||v in i&&i[v]===_[v]||Object.defineProperty(i,v,{enumerable:!0,get:function(){return _[v]}})});var y=ho();Object.keys(y).forEach(function(v){v==="default"||v==="__esModule"||v in i&&i[v]===y[v]||Object.defineProperty(i,v,{enumerable:!0,get:function(){return y[v]}})});var b=vo();Object.keys(b).forEach(function(v){v==="default"||v==="__esModule"||v in i&&i[v]===b[v]||Object.defineProperty(i,v,{enumerable:!0,get:function(){return b[v]}})})})(Un)),Un}var Me=Ml(),M=(function(i){return i.RoomCanonicalAlias="m.room.canonical_alias",i.RoomCreate="m.room.create",i.RoomJoinRules="m.room.join_rules",i.RoomMember="m.room.member",i.RoomThirdPartyInvite="m.room.third_party_invite",i.RoomPowerLevels="m.room.power_levels",i.RoomName="m.room.name",i.RoomTopic="m.room.topic",i.RoomAvatar="m.room.avatar",i.RoomPinnedEvents="m.room.pinned_events",i.RoomEncryption="m.room.encryption",i.RoomHistoryVisibility="m.room.history_visibility",i.RoomGuestAccess="m.room.guest_access",i.RoomServerAcl="m.room.server_acl",i.RoomTombstone="m.room.tombstone",i.RoomPredecessor="org.matrix.msc3946.room_predecessor",i.PolicyRuleUser="m.policy.rule.user",i.PolicyRuleRoom="m.policy.rule.room",i.PolicyRuleServer="m.policy.rule.server",i.SpaceChild="m.space.child",i.SpaceParent="m.space.parent",i.RoomRedaction="m.room.redaction",i.RoomMessage="m.room.message",i.RoomMessageEncrypted="m.room.encrypted",i.Sticker="m.sticker",i.CallInvite="m.call.invite",i.CallCandidates="m.call.candidates",i.CallAnswer="m.call.answer",i.CallHangup="m.call.hangup",i.CallReject="m.call.reject",i.CallSelectAnswer="m.call.select_answer",i.CallNegotiate="m.call.negotiate",i.CallSDPStreamMetadataChanged="m.call.sdp_stream_metadata_changed",i.CallSDPStreamMetadataChangedPrefix="org.matrix.call.sdp_stream_metadata_changed",i.CallReplaces="m.call.replaces",i.CallAssertedIdentity="m.call.asserted_identity",i.CallAssertedIdentityPrefix="org.matrix.call.asserted_identity",i.CallEncryptionKeysPrefix="io.element.call.encryption_keys",i.KeyVerificationRequest="m.key.verification.request",i.KeyVerificationStart="m.key.verification.start",i.KeyVerificationCancel="m.key.verification.cancel",i.KeyVerificationMac="m.key.verification.mac",i.KeyVerificationDone="m.key.verification.done",i.KeyVerificationKey="m.key.verification.key",i.KeyVerificationAccept="m.key.verification.accept",i.KeyVerificationReady="m.key.verification.ready",i.RoomMessageFeedback="m.room.message.feedback",i.Reaction="m.reaction",i.PollStart="org.matrix.msc3381.poll.start",i.Typing="m.typing",i.Receipt="m.receipt",i.Presence="m.presence",i.FullyRead="m.fully_read",i.Tag="m.tag",i.SpaceOrder="org.matrix.msc3230.space_order",i.PushRules="m.push_rules",i.Direct="m.direct",i.IgnoredUserList="m.ignored_user_list",i.InvitePermissionConfig="m.invite_permission_config",i.RoomKey="m.room_key",i.RoomKeyRequest="m.room_key_request",i.ForwardedRoomKey="m.forwarded_room_key",i.Dummy="m.dummy",i.SecretRequest="m.secret.request",i.SecretSend="m.secret.send",i.GroupCallPrefix="org.matrix.msc3401.call",i.GroupCallMemberPrefix="org.matrix.msc3401.call.member",i.RTCMembership="org.matrix.msc4143.rtc.member",i.CallNotify="org.matrix.msc4075.call.notify",i.RTCNotification="org.matrix.msc4075.rtc.notification",i.RTCDecline="org.matrix.msc4310.rtc.decline",i.RoomPolicy="org.matrix.msc4284.policy",i})({}),se=(function(i){return i.Annotation="m.annotation",i.Replace="m.replace",i.Reference="m.reference",i.Thread="m.thread",i})({}),Et=(function(i){return i.Text="m.text",i.Emote="m.emote",i.Notice="m.notice",i.Image="m.image",i.File="m.file",i.Audio="m.audio",i.Location="m.location",i.Video="m.video",i.KeyVerificationRequest="m.key.verification.request",i})({}),li="type",Ir=(function(i){return i.Space="m.space",i.UnstableCall="org.matrix.msc3417.call",i.ElementVideo="io.element.video",i})({}),Ui="org.matrix.msgid",wa=new pe("m.room.purpose","org.matrix.msc3088.purpose"),Ca=new pe("m.enabled","org.matrix.msc3088.enabled"),Ma=new pe("m.data_tree","org.matrix.msc3089.data_tree"),Ol=new pe("m.leaf","org.matrix.msc3089.leaf"),vt=new pe("m.branch","org.matrix.msc3089.branch"),kl=new pe("m.room.marker","org.matrix.msc2716.marker"),Oa=new pe("with_rel_types","org.matrix.msc3912.with_relations"),Pl=new pe("io.element.functional_members","io.element.functional_members"),$t=new pe("m.visibility","org.matrix.msc3531.visibility"),ka=new pe("enabled","org.matrix.msc3881.enabled");new pe("device_id","org.matrix.msc3881.device_id");var Al=new pe("m.local_notification_settings","org.matrix.msc3890.local_notification_settings"),di=new pe("thread_id","org.matrix.msc4023.thread_id"),Ll=new er("membership","io.element.msc4115.membership");function Dl(i,e){if(i==null)return{};var t={};for(var r in i)if({}.hasOwnProperty.call(i,r)){if(e.includes(r))continue;t[r]=i[r]}return t}function Ul(i,e){if(i==null)return{};var t,r,n=Dl(i,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(i);for(r=0;r<a.length;r++)t=a[r],e.includes(t)||{}.propertyIsEnumerable.call(i,t)&&(n[t]=i[t])}return n}var Xr={exports:{}},Pa;function Nl(){if(Pa)return Xr.exports;Pa=1;var i=typeof Reflect=="object"?Reflect:null,e=i&&typeof i.apply=="function"?i.apply:function(b,v,w){return Function.prototype.apply.call(b,v,w)},t;i&&typeof i.ownKeys=="function"?t=i.ownKeys:Object.getOwnPropertySymbols?t=function(b){return Object.getOwnPropertyNames(b).concat(Object.getOwnPropertySymbols(b))}:t=function(b){return Object.getOwnPropertyNames(b)};function r(y){console&&console.warn&&console.warn(y)}var n=Number.isNaN||function(b){return b!==b};function a(){a.init.call(this)}Xr.exports=a,Xr.exports.once=S,a.EventEmitter=a,a.prototype._events=void 0,a.prototype._eventsCount=0,a.prototype._maxListeners=void 0;var s=10;function o(y){if(typeof y!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof y)}Object.defineProperty(a,"defaultMaxListeners",{enumerable:!0,get:function(){return s},set:function(y){if(typeof y!="number"||y<0||n(y))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+y+".");s=y}}),a.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},a.prototype.setMaxListeners=function(b){if(typeof b!="number"||b<0||n(b))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+b+".");return this._maxListeners=b,this};function l(y){return y._maxListeners===void 0?a.defaultMaxListeners:y._maxListeners}a.prototype.getMaxListeners=function(){return l(this)},a.prototype.emit=function(b){for(var v=[],w=1;w<arguments.length;w++)v.push(arguments[w]);var C=b==="error",k=this._events;if(k!==void 0)C=C&&k.error===void 0;else if(!C)return!1;if(C){var P;if(v.length>0&&(P=v[0]),P instanceof Error)throw P;var D=new Error("Unhandled error."+(P?" ("+P.message+")":""));throw D.context=P,D}var B=k[b];if(B===void 0)return!1;if(typeof B=="function")e(B,this,v);else for(var Z=B.length,ge=f(B,Z),w=0;w<Z;++w)e(ge[w],this,v);return!0};function d(y,b,v,w){var C,k,P;if(o(v),k=y._events,k===void 0?(k=y._events=Object.create(null),y._eventsCount=0):(k.newListener!==void 0&&(y.emit("newListener",b,v.listener?v.listener:v),k=y._events),P=k[b]),P===void 0)P=k[b]=v,++y._eventsCount;else if(typeof P=="function"?P=k[b]=w?[v,P]:[P,v]:w?P.unshift(v):P.push(v),C=l(y),C>0&&P.length>C&&!P.warned){P.warned=!0;var D=new Error("Possible EventEmitter memory leak detected. "+P.length+" "+String(b)+" listeners added. Use emitter.setMaxListeners() to increase limit");D.name="MaxListenersExceededWarning",D.emitter=y,D.type=b,D.count=P.length,r(D)}return y}a.prototype.addListener=function(b,v){return d(this,b,v,!1)},a.prototype.on=a.prototype.addListener,a.prototype.prependListener=function(b,v){return d(this,b,v,!0)};function u(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function h(y,b,v){var w={fired:!1,wrapFn:void 0,target:y,type:b,listener:v},C=u.bind(w);return C.listener=v,w.wrapFn=C,C}a.prototype.once=function(b,v){return o(v),this.on(b,h(this,b,v)),this},a.prototype.prependOnceListener=function(b,v){return o(v),this.prependListener(b,h(this,b,v)),this},a.prototype.removeListener=function(b,v){var w,C,k,P,D;if(o(v),C=this._events,C===void 0)return this;if(w=C[b],w===void 0)return this;if(w===v||w.listener===v)--this._eventsCount===0?this._events=Object.create(null):(delete C[b],C.removeListener&&this.emit("removeListener",b,w.listener||v));else if(typeof w!="function"){for(k=-1,P=w.length-1;P>=0;P--)if(w[P]===v||w[P].listener===v){D=w[P].listener,k=P;break}if(k<0)return this;k===0?w.shift():p(w,k),w.length===1&&(C[b]=w[0]),C.removeListener!==void 0&&this.emit("removeListener",b,D||v)}return this},a.prototype.off=a.prototype.removeListener,a.prototype.removeAllListeners=function(b){var v,w,C;if(w=this._events,w===void 0)return this;if(w.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):w[b]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete w[b]),this;if(arguments.length===0){var k=Object.keys(w),P;for(C=0;C<k.length;++C)P=k[C],P!=="removeListener"&&this.removeAllListeners(P);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(v=w[b],typeof v=="function")this.removeListener(b,v);else if(v!==void 0)for(C=v.length-1;C>=0;C--)this.removeListener(b,v[C]);return this};function m(y,b,v){var w=y._events;if(w===void 0)return[];var C=w[b];return C===void 0?[]:typeof C=="function"?v?[C.listener||C]:[C]:v?I(C):f(C,C.length)}a.prototype.listeners=function(b){return m(this,b,!0)},a.prototype.rawListeners=function(b){return m(this,b,!1)},a.listenerCount=function(y,b){return typeof y.listenerCount=="function"?y.listenerCount(b):E.call(y,b)},a.prototype.listenerCount=E;function E(y){var b=this._events;if(b!==void 0){var v=b[y];if(typeof v=="function")return 1;if(v!==void 0)return v.length}return 0}a.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]};function f(y,b){for(var v=new Array(b),w=0;w<b;++w)v[w]=y[w];return v}function p(y,b){for(;b+1<y.length;b++)y[b]=y[b+1];y.pop()}function I(y){for(var b=new Array(y.length),v=0;v<b.length;++v)b[v]=y[v].listener||y[v];return b}function S(y,b){return new Promise(function(v,w){function C(P){y.removeListener(b,k),w(P)}function k(){typeof y.removeListener=="function"&&y.removeListener("error",C),v([].slice.call(arguments))}_(y,b,k,{once:!0}),b!=="error"&&g(y,C,{once:!0})})}function g(y,b,v){typeof y.on=="function"&&_(y,"error",b,v)}function _(y,b,v,w){if(typeof y.on=="function")w.once?y.once(b,v):y.on(b,v);else if(typeof y.addEventListener=="function")y.addEventListener(b,function C(k){w.once&&y.removeEventListener(b,C),v(k)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof y)}return Xr.exports}var xl=Nl(),Fl=(function(i){return i.NewListener="newListener",i.RemoveListener="removeListener",i.Error="error",i})({});class fe extends xl.EventEmitter{addListener(e,t){return super.addListener(e,t)}emit(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];return super.emit(e,...r)}emitPromised(e){var t=arguments,r=this;return R(function*(){for(var n=t.length,a=new Array(n>1?n-1:0),s=1;s<n;s++)a[s-1]=t[s];var o=r.listeners(e);return Promise.allSettled(o.map(l=>l(...a))).then(()=>o.length>0)})()}listenerCount(e){return super.listenerCount(e)}listeners(e){return super.listeners(e)}off(e,t){return super.off(e,t)}on(e,t){return super.on(e,t)}once(e,t){return super.once(e,t)}prependListener(e,t){return super.prependListener(e,t)}prependOnceListener(e,t){return super.prependOnceListener(e,t)}removeAllListeners(e){return e===void 0?super.removeAllListeners():super.removeAllListeners(e)}removeListener(e,t){return super.removeListener(e,t)}rawListeners(e){return super.rawListeners(e)}}var Ue=(function(i){return i.DisplayName="User.displayName",i.AvatarUrl="User.avatarUrl",i.Presence="User.presence",i.CurrentlyActive="User.currentlyActive",i.LastPresenceTs="User.lastPresenceTs",i})({});class Lt extends fe{constructor(e){super(),this.userId=e,c(this,"modified",-1),c(this,"displayName",void 0),c(this,"rawDisplayName",void 0),c(this,"avatarUrl",void 0),c(this,"presenceStatusMsg",void 0),c(this,"presence","offline"),c(this,"lastActiveAgo",0),c(this,"lastPresenceTs",0),c(this,"currentlyActive",!1),c(this,"events",{}),this.displayName=e,this.rawDisplayName=e,this.updateModifiedTime()}static createUser(e,t){var r=new Lt(e);return t.reEmitter.reEmit(r,[Ue.AvatarUrl,Ue.DisplayName,Ue.Presence,Ue.CurrentlyActive,Ue.LastPresenceTs]),r}setPresenceEvent(e){if(e.getType()==="m.presence"){var t=this.events.presence===null;this.events.presence=e;var r=[];(e.getContent().presence!==this.presence||t)&&r.push(Ue.Presence),e.getContent().avatar_url&&e.getContent().avatar_url!==this.avatarUrl&&r.push(Ue.AvatarUrl),e.getContent().displayname&&e.getContent().displayname!==this.displayName&&r.push(Ue.DisplayName),e.getContent().currently_active!==void 0&&e.getContent().currently_active!==this.currentlyActive&&r.push(Ue.CurrentlyActive),this.presence=e.getContent().presence,r.push(Ue.LastPresenceTs),e.getContent().status_msg&&(this.presenceStatusMsg=e.getContent().status_msg),e.getContent().displayname&&(this.displayName=e.getContent().displayname),e.getContent().avatar_url&&(this.avatarUrl=e.getContent().avatar_url),this.lastActiveAgo=e.getContent().last_active_ago,this.lastPresenceTs=Date.now(),this.currentlyActive=e.getContent().currently_active,this.updateModifiedTime();for(var n of r)this.emit(n,e,this)}}setDisplayName(e){var t=this.displayName;this.displayName=e,e!==t&&this.updateModifiedTime()}setRawDisplayName(e){this.rawDisplayName=e}setAvatarUrl(e){var t=this.avatarUrl;this.avatarUrl=e,e!==t&&this.updateModifiedTime()}updateModifiedTime(){this.modified=Date.now()}getLastModifiedTime(){return this.modified}getLastActiveTs(){return this.lastPresenceTs-this.lastActiveAgo}}var Bl=/^(?:(?:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})|(?:\[[\dA-Fa-f:.]{2,45}])|(?:[A-Za-z\d\-.]{1,255}))(?::\d{1,5})?$/;function jl(i){var e=Bl.exec(i);return e?.[0]===i}var Kl=/^[\w-]+$/;function Vl(i){var e=Kl.exec(i);return e?.[0]===i}function Ni(i,e,t,r,n){var a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!1,s=arguments.length>6?arguments[6]:void 0,o=arguments.length>7?arguments[7]:void 0;if(typeof e!="string"||!e)return"";if(!e.startsWith("mxc://"))return a?e:"";var[l,d,...u]=e.slice(6).split("/");if(u.length>0||!jl(l)||!Vl(d))return"";o&&(s=!0);var h,m=!!t||!!r||!!n,E=m?"thumbnail":"download";o?h="/_matrix/client/v1/media/".concat(E):h="/_matrix/media/v3/".concat(E);var f=new URL("".concat(h,"/").concat(l,"/").concat(d),i);return t&&f.searchParams.set("width",Math.round(t).toString()),r&&f.searchParams.set("height",Math.round(r).toString()),n&&f.searchParams.set("method",n),typeof s=="boolean"&&f.searchParams.set("allow_redirect",JSON.stringify(s)),f.href}var J=(function(i){return i.Ban="ban",i.Invite="invite",i.Join="join",i.Knock="knock",i.Leave="leave",i})({}),Le=(function(i){return i.Membership="RoomMember.membership",i.Name="RoomMember.name",i.PowerLevel="RoomMember.powerLevel",i.Typing="RoomMember.typing",i})({});class yn extends fe{constructor(e,t){super(),this.roomId=e,this.userId=t,c(this,"_isOutOfBand",!1),c(this,"modified",-1),c(this,"requestedProfileInfo",!1),c(this,"typing",!1),c(this,"name",void 0),c(this,"rawDisplayName",void 0),c(this,"powerLevel",0),c(this,"user",void 0),c(this,"membership",void 0),c(this,"disambiguate",!1),c(this,"events",{}),this.name=t,this.rawDisplayName=t,this.updateModifiedTime()}markOutOfBand(){this._isOutOfBand=!0}isOutOfBand(){return this._isOutOfBand}setMembershipEvent(e,t){var r,n,a=(r=e.getDirectionalContent().displayname)!==null&&r!==void 0?r:"";if(e.getType()===M.RoomMember){this._isOutOfBand=!1,this.events.member=e;var s=this.membership;this.membership=e.getDirectionalContent().membership,this.membership===void 0&&T.trace("membership event with membership undefined (forwardLooking: ".concat(e.forwardLooking,")!"),e.getContent(),"prevcontent is ",e.getPrevContent()),this.disambiguate=Hl(this.userId,a,t);var o=this.name;this.name=Gl(this.userId,a,this.disambiguate),this.rawDisplayName=ii((n=e.getDirectionalContent().displayname)!==null&&n!==void 0?n:""),(!this.rawDisplayName||!At(this.rawDisplayName))&&(this.rawDisplayName=this.userId),s!==this.membership&&(this.updateModifiedTime(),this.emit(Le.Membership,e,this,s)),o!==this.name&&(this.updateModifiedTime(),this.emit(Le.Name,e,this,o))}}setPowerLevel(e,t){var r=this.powerLevel;this.powerLevel=e,r!==this.powerLevel&&(this.updateModifiedTime(),this.emit(Le.PowerLevel,t,this))}setTypingEvent(e){if(e.getType()==="m.typing"){var t=this.typing;this.typing=!1;var r=e.getContent().user_ids;Array.isArray(r)&&(r.indexOf(this.userId)!==-1&&(this.typing=!0),t!==this.typing&&(this.updateModifiedTime(),this.emit(Le.Typing,e,this)))}}updateModifiedTime(){this.modified=Date.now()}getLastModifiedTime(){return this.modified}isKicked(){return this.membership===J.Leave&&this.events.member!==void 0&&this.events.member.getSender()!==this.events.member.getStateKey()}getDMInviter(){if(this.events.member){var e=this.events.member,t=e.getContent(),r=e.getSender();if(t.membership===J.Join&&(t=e.getPrevContent(),r=e.getUnsigned().prev_sender),t.membership===J.Invite&&t.is_direct)return r}}getAvatarUrl(e,t,r,n){var a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,s=arguments.length>5?arguments[5]:void 0,o=arguments.length>6&&arguments[6]!==void 0?arguments[6]:!1,l=this.getMxcAvatarUrl();if(!l&&!a)return null;var d=Ni(e,l,t,r,n,s,void 0,o);return d||null}getMxcAvatarUrl(){if(this.events.member)return this.events.member.getDirectionalContent().avatar_url;if(this.user)return this.user.avatarUrl}}var mo=/@.+:.+/,ql=/[\u200E\u200F\u202A-\u202F]/;function Hl(i,e,t){if(!e||e===i||!t)return!1;var r=At(e);if(!r)return!1;if(mo.test(r)||ql.test(e))return!0;var n=t.getUserIdsWithDisplayName(e);return!!n.some(a=>a!==i)}function Gl(i,e,t){return!e||e===i?i:t?ii(e)+" ("+i+")":At(e)?ii(e):i}var po=(function(i){return i.PrivateChat="private_chat",i.TrustedPrivateChat="trusted_private_chat",i.PublicChat="public_chat",i})({}),$l=(function(i){return i.Public="public",i.Invite="invite",i.Private="private",i.Knock="knock",i.Restricted="restricted",i})({}),ui=(function(i){return i.CanJoin="can_join",i.Forbidden="forbidden",i})({}),go=(function(i){return i.Invited="invited",i.Joined="joined",i.Shared="shared",i.WorldReadable="world_readable",i})({});function Aa(i){return i!=null}new Me.UnstableValue("m.message","org.matrix.msc1767.message");new Me.UnstableValue("m.text","org.matrix.msc1767.text");new Me.UnstableValue("m.html","org.matrix.msc1767.html");new Me.NamespacedValue("m.reference");var Wl=new er("m.topic");function Jl(i,e){return{msgtype:Et.Text,format:"org.matrix.custom.html",body:i,formatted_body:e}}function zl(i,e){return{msgtype:Et.Notice,format:"org.matrix.custom.html",body:i,formatted_body:e}}function Yl(i,e){return{msgtype:Et.Emote,format:"org.matrix.custom.html",body:i,formatted_body:e}}function Xl(i){return{msgtype:Et.Text,body:i}}function Ql(i){return{msgtype:Et.Notice,body:i}}function Zl(i){return{msgtype:Et.Emote,body:i}}var ed=(i,e)=>{var t=[];return Aa(e)&&t.push({body:e,mimetype:"text/html"}),Aa(i)&&t.push({body:i,mimetype:"text/plain"}),{topic:i,[Wl.name]:{"m.text":t}}},td=i=>{var e,{description:t,timeout:r,live:n}=i,a=(e=Oi.findIn(i))!==null&&e!==void 0?e:void 0,s=gl.findIn(i);return{description:t,timeout:r,live:n,assetType:s?.type,timestamp:a}},La=i=>{var e,t=yl.findIn(i),r=(e=Oi.findIn(i))!==null&&e!==void 0?e:void 0;return{description:t?.description,uri:t?.uri,timestamp:r}},de=(function(i){return i.New="Beacon.new",i.Update="Beacon.update",i.LivenessChange="Beacon.LivenessChange",i.Destroy="Beacon.Destroy",i.LocationUpdate="Beacon.LocationUpdate",i})({}),Da=(i,e,t)=>t>=i&&i+e>=t,ci=i=>"".concat(i.getRoomId(),"_").concat(i.getStateKey());class rd extends fe{constructor(e){super(),this.rootEvent=e,c(this,"roomId",void 0),c(this,"_beaconInfo",void 0),c(this,"_isLive",void 0),c(this,"livenessWatchTimeout",void 0),c(this,"_latestLocationEvent",void 0),c(this,"clearLatestLocation",()=>{this._latestLocationEvent=void 0,this.emit(de.LocationUpdate,this.latestLocationState)}),this.roomId=this.rootEvent.getRoomId(),this.setBeaconInfo(this.rootEvent)}get isLive(){return!!this._isLive}get identifier(){return ci(this.rootEvent)}get beaconInfoId(){return this.rootEvent.getId()}get beaconInfoOwner(){return this.rootEvent.getStateKey()}get beaconInfoEventType(){return this.rootEvent.getType()}get beaconInfo(){return this._beaconInfo}get latestLocationState(){return this._latestLocationEvent&&La(this._latestLocationEvent.getContent())}get latestLocationEvent(){return this._latestLocationEvent}update(e){if(ci(e)!==this.identifier)throw new Error("Invalid updating event");e.getTs()<this.rootEvent.getTs()||(this.rootEvent=e,this.setBeaconInfo(this.rootEvent),this.emit(de.Update,e,this),this.clearLatestLocation())}destroy(){this.livenessWatchTimeout&&clearTimeout(this.livenessWatchTimeout),this._isLive=!1,this.emit(de.Destroy,this.identifier)}monitorLiveness(){if(this.livenessWatchTimeout&&clearTimeout(this.livenessWatchTimeout),this.checkLiveness(),!!this.beaconInfo)if(this.isLive){var e=this.beaconInfo.timestamp+this.beaconInfo.timeout-Date.now();e>1&&(this.livenessWatchTimeout=setTimeout(()=>{this.monitorLiveness()},e))}else this.beaconInfo.timestamp>Date.now()&&(this.livenessWatchTimeout=setTimeout(()=>{this.monitorLiveness()},this.beaconInfo.timestamp-Date.now()))}addLocations(e){var t;if(this.isLive){var r=e.filter(a=>{var s=a.getContent(),o=La(s);if(!o.uri||!o.timestamp)return!1;var{timestamp:l}=o;return this._beaconInfo.timestamp&&Da(this._beaconInfo.timestamp,this._beaconInfo.timeout,l)&&(!this.latestLocationState||l>this.latestLocationState.timestamp)}),n=(t=r.sort(Il))===null||t===void 0?void 0:t[0];n&&(this._latestLocationEvent=n,this.emit(de.LocationUpdate,this.latestLocationState))}}setBeaconInfo(e){this._beaconInfo=td(e.getContent()),this.checkLiveness()}checkLiveness(){var e=this.isLive;if(this.beaconInfo){var t=this.beaconInfo.timestamp>Date.now()?this.beaconInfo.timestamp-36e4:this.beaconInfo.timestamp;this._isLive=!!this._beaconInfo.live&&!!t&&Da(t,this._beaconInfo.timeout,Date.now()),e!==this.isLive&&this.emit(de.LivenessChange,this.isLive,this)}}}class yo{constructor(e){this.target=e,c(this,"reEmitters",new WeakMap)}reEmit(e,t){var r=this,n=this.reEmitters.get(e);n||(n=new Map,this.reEmitters.set(e,n));var a=function(l){if(n.has(l))return 1;var d=function(){if(!(l==="error"&&r.target.listenerCount("error")===0)){for(var h=arguments.length,m=new Array(h),E=0;E<h;E++)m[E]=arguments[E];r.target.emit(l,...m,e)}};e.on(l,d),n.set(l,d)};for(var s of t)a(s)}stopReEmitting(e,t){var r=this.reEmitters.get(e);if(r){for(var n of t)e.off(n,r.get(n)),r.delete(n);r.size===0&&this.reEmitters.delete(e)}}}class ir extends yo{constructor(e){super(e)}reEmit(e,t){super.reEmit(e,t)}stopReEmitting(e,t){super.stopReEmitting(e,t)}}var Eo=new pe("m.beacon_info","org.matrix.msc3672.beacon_info"),Ua=new pe("m.beacon","org.matrix.msc3672.beacon"),nd=["1","2","3","4","5","6","7","8","9","10","11"];function id(i){return!nd.includes(i)}var Pe=(function(i){return i[i.NotStarted=0]="NotStarted",i[i.InProgress=1]="InProgress",i[i.Finished=2]="Finished",i})(Pe||{}),X=(function(i){return i.Events="RoomState.events",i.Members="RoomState.members",i.NewMember="RoomState.newMember",i.Update="RoomState.update",i.BeaconLiveness="RoomState.BeaconLiveness",i.Marker="RoomState.Marker",i})({});class En extends fe{constructor(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{status:Pe.NotStarted};super(),this.roomId=e,this.oobMemberFlags=t,c(this,"reEmitter",new ir(this)),c(this,"sentinels",{}),c(this,"displayNameToUserIds",new Map),c(this,"userIdsToDisplayNames",{}),c(this,"tokenToInvite",{}),c(this,"joinedMemberCount",null),c(this,"summaryJoinedMemberCount",null),c(this,"invitedMemberCount",null),c(this,"summaryInvitedMemberCount",null),c(this,"modified",-1),c(this,"members",{}),c(this,"events",new Map),c(this,"paginationToken",null),c(this,"beacons",new Map),c(this,"_liveBeaconIds",[]),c(this,"getVersionWarning",!1),this.updateModifiedTime()}getRoomVersion(){var e,t=this.getStateEvents(M.RoomCreate,"");return t?(e=t.getContent().room_version)!==null&&e!==void 0?e:"1":(this.getVersionWarning||(T.warn("[getVersion] Room "+this.roomId+" does not have an m.room.create event"),this.getVersionWarning=!0),"1")}getJoinedMemberCount(){return this.summaryJoinedMemberCount!==null?this.summaryJoinedMemberCount:(this.joinedMemberCount===null&&(this.joinedMemberCount=this.getMembers().reduce((e,t)=>t.membership===J.Join?e+1:e,0)),this.joinedMemberCount)}setJoinedMemberCount(e){this.summaryJoinedMemberCount=e}getInvitedMemberCount(){return this.summaryInvitedMemberCount!==null?this.summaryInvitedMemberCount:(this.invitedMemberCount===null&&(this.invitedMemberCount=this.getMembers().reduce((e,t)=>t.membership===J.Invite?e+1:e,0)),this.invitedMemberCount)}setInvitedMemberCount(e){this.summaryInvitedMemberCount=e}getMembers(){return Object.values(this.members)}getMembersExcept(e){return this.getMembers().filter(t=>!e.includes(t.userId))}getMember(e){return this.members[e]||null}getSentinelMember(e){if(!e)return null;var t=this.sentinels[e];if(t===void 0){t=new yn(this.roomId,e);var r=this.members[e];r!=null&&r.events.member&&t.setMembershipEvent(r.events.member,this),this.sentinels[e]=t}return t}getStateEvents(e,t){if(!this.events.has(e))return t===void 0?[]:null;if(t===void 0)return Array.from(this.events.get(e).values());var r=this.events.get(e).get(t);return r||null}get hasLiveBeacons(){var e;return!!((e=this.liveBeaconIds)!==null&&e!==void 0&&e.length)}get liveBeaconIds(){return this._liveBeaconIds}clone(){var e=new En(this.roomId,this.oobMemberFlags),t=this.oobMemberFlags.status;return this.oobMemberFlags.status=Pe.NotStarted,Array.from(this.events.values()).forEach(r=>{e.setStateEvents(Array.from(r.values()))}),this.oobMemberFlags.status=t,this.summaryInvitedMemberCount!==null&&e.setInvitedMemberCount(this.getInvitedMemberCount()),this.summaryJoinedMemberCount!==null&&e.setJoinedMemberCount(this.getJoinedMemberCount()),this.oobMemberFlags.status==Pe.Finished&&this.getMembers().forEach(r=>{if(r.isOutOfBand()){var n;(n=e.getMember(r.userId))===null||n===void 0||n.markOutOfBand()}}),e}setUnknownStateEvents(e){var t=e.filter(r=>!this.events.has(r.getType())||!this.events.get(r.getType()).has(r.getStateKey()));this.setStateEvents(t)}setStateEvents(e,t){this.updateModifiedTime(),e.forEach(r=>{if(!(r.getRoomId()!==this.roomId||!r.isState())){Eo.matches(r.getType())&&this.setBeacon(r);var n=this.getStateEventMatching(r);if(this.setStateEvent(r),r.getType()===M.RoomMember){var a;this.updateDisplayNameCache(r.getStateKey(),(a=r.getContent().displayname)!==null&&a!==void 0?a:""),this.updateThirdPartyTokenCache(r)}this.emit(X.Events,r,this,n)}}),this.onBeaconLivenessChange(),e.forEach(r=>{if(!(r.getRoomId()!==this.roomId||!r.isState()))if(r.getType()===M.RoomMember){var n=r.getStateKey();(r.getContent().membership===J.Leave||r.getContent().membership===J.Ban)&&(r.getContent().avatar_url=r.getContent().avatar_url||r.getPrevContent().avatar_url,r.getContent().displayname=r.getContent().displayname||r.getPrevContent().displayname);var a=this.getOrCreateMember(n,r);a.setMembershipEvent(r,this),this.updateMember(a),this.emit(X.Members,r,this,a)}else if(r.getType()===M.RoomPowerLevels){if(r.getStateKey()!=="")return;var s=Object.values(this.members),o=this.getStateEvents(M.RoomCreate,""),l=Na(this.getRoomVersion(),o);s.forEach(d=>{var u=d.getLastModifiedTime();if(o){var h=xa(d.userId,r,l);d.setPowerLevel(h,r)}u!==d.getLastModifiedTime()&&this.emit(X.Members,r,this,d)}),this.sentinels={}}else kl.matches(r.getType())&&this.emit(X.Marker,r,t)}),this.emit(X.Update,this)}processBeaconEvents(e,t){var r=this;return R(function*(){if(!(!e.length||!r.beacons.size)){var n=[...r.beacons.values()].reduce((d,u)=>(d[u.beaconInfoId]=u,d),{}),a=(d,u)=>{if(Ua.matches(u.getType())){var h=n[d];h&&h.addLocations([u])}},s=function*(u){var h,m=(h=u.getRelation())===null||h===void 0?void 0:h.event_id;if(!m||!n[m])return{v:void 0};if(!Ua.matches(u.getType())&&!u.isEncrypted())return{v:void 0};try{yield t.decryptEventIfNeeded(u),a(m,u)}catch{u.isDecryptionFailure()&&u.once(ee.Decrypted,R(function*(){a(m,u)}))}},o;for(var l of e)if(o=yield*s(l),o)return o.v}})()}getOrCreateMember(e,t){var r=this.members[e];return r||(r=new yn(this.roomId,e),this.members[e]=r,this.emit(X.NewMember,t,this,r)),r}setStateEvent(e){this.events.has(e.getType())||this.events.set(e.getType(),new Map),this.events.get(e.getType()).set(e.getStateKey(),e)}setBeacon(e){var t=ci(e);if(this.beacons.has(t)){var r=this.beacons.get(t);if(e.isRedacted()){var n;r.beaconInfoId===((n=e.getRedactionEvent())===null||n===void 0?void 0:n.redacts)&&(r.destroy(),this.beacons.delete(t));return}return r.update(e)}if(!e.isRedacted()){var a=new rd(e);this.reEmitter.reEmit(a,[de.New,de.Update,de.Destroy,de.LivenessChange]),this.emit(de.New,e,a),a.on(de.LivenessChange,this.onBeaconLivenessChange.bind(this)),a.on(de.Destroy,this.onBeaconLivenessChange.bind(this)),this.beacons.set(a.identifier,a)}}onBeaconLivenessChange(){this._liveBeaconIds=Array.from(this.beacons.values()).filter(e=>e.isLive).map(e=>e.identifier),this.emit(X.BeaconLiveness,this,this.hasLiveBeacons)}getStateEventMatching(e){var t,r;return(t=(r=this.events.get(e.getType()))===null||r===void 0?void 0:r.get(e.getStateKey()))!==null&&t!==void 0?t:null}updateMember(e){var t=this.getStateEvents(M.RoomCreate,""),r=this.getStateEvents(M.RoomPowerLevels,"");if(r&&t){var n=xa(e.userId,r,Na(this.getRoomVersion(),t));e.setPowerLevel(n,r)}delete this.sentinels[e.userId],this.members[e.userId]=e,this.joinedMemberCount=null,this.invitedMemberCount=null}needsOutOfBandMembers(){return this.oobMemberFlags.status===Pe.NotStarted}outOfBandMembersReady(){return this.oobMemberFlags.status===Pe.Finished}markOutOfBandMembersStarted(){this.oobMemberFlags.status===Pe.NotStarted&&(this.oobMemberFlags.status=Pe.InProgress)}markOutOfBandMembersFailed(){this.oobMemberFlags.status===Pe.InProgress&&(this.oobMemberFlags.status=Pe.NotStarted)}clearOutOfBandMembers(){var e=0;Object.keys(this.members).forEach(t=>{var r=this.members[t];r.isOutOfBand()&&(++e,delete this.members[t])}),T.log("LL: RoomState removed ".concat(e," members...")),this.oobMemberFlags.status=Pe.NotStarted}setOutOfBandMembers(e){T.log("LL: RoomState about to set ".concat(e.length," OOB members ...")),this.oobMemberFlags.status===Pe.InProgress&&(T.log("LL: RoomState put in finished state ..."),this.oobMemberFlags.status=Pe.Finished,e.forEach(t=>this.setOutOfBandMember(t)),this.emit(X.Update,this))}setOutOfBandMember(e){if(e.getType()===M.RoomMember){var t=e.getStateKey(),r=this.getMember(t);if(!(r&&!r.isOutOfBand())){var n=this.getOrCreateMember(t,e);n.setMembershipEvent(e,this),n.markOutOfBand(),this.updateDisplayNameCache(n.userId,n.name),this.setStateEvent(e),this.updateMember(n),this.emit(X.Members,e,this,n)}}}setTypingEvent(e){Object.values(this.members).forEach(function(t){t.setTypingEvent(e)})}getInviteForThreePidToken(e){return this.tokenToInvite[e]||null}updateModifiedTime(){this.modified=Date.now()}getLastModifiedTime(){return this.modified}getUserIdsWithDisplayName(e){var t;return(t=this.displayNameToUserIds.get(At(e)))!==null&&t!==void 0?t:[]}maySendRedactionForEvent(e,t){var r=this.getMember(t);if(!r||r.membership===J.Leave||e.status||e.isRedacted())return!1;var n=this.maySendEvent(M.RoomRedaction,t);return n?e.getSender()===t?!0:this.hasSufficientPowerLevelFor("redact",r.powerLevel):!1}hasSufficientPowerLevelFor(e,t){var r=this.getStateEvents(M.RoomPowerLevels,""),n={};r&&(n=r.getContent());var a=50;return Qi(n[e])&&(a=n[e]),t>=a}maySendMessage(e){return this.maySendEventOfType(M.RoomMessage,e,!1)}maySendEvent(e,t){return this.maySendEventOfType(e,t,!1)}mayClientSendStateEvent(e,t){return t.isGuest()||!t.credentials.userId?!1:this.maySendStateEvent(e,t.credentials.userId)}maySendStateEvent(e,t){return this.maySendEventOfType(e,t,!0)}maySendEventOfType(e,t,r){var n,a=this.getStateEvents(M.RoomPowerLevels,""),s,o={},l=0,d=0;a&&(s=a.getContent(),o=s.events||{},Number.isSafeInteger(s.state_default)?l=s.state_default:l=50,Number.isSafeInteger(s.events_default)&&(d=s.events_default));var u=r?l:d;Number.isSafeInteger(o[e])&&(u=o[e]);var h=this.getMember(t),m=(n=h?.powerLevel)!==null&&n!==void 0?n:0;return m>=u}mayTriggerNotifOfType(e,t){var r=this.getMember(t);if(!r)return!1;var n=this.getStateEvents(M.RoomPowerLevels,""),a=50;return n&&n.getContent()&&n.getContent().notifications&&Qi(n.getContent().notifications[e])&&(a=n.getContent().notifications[e]),r.powerLevel>=a}getJoinRule(){var e,t=this.getStateEvents(M.RoomJoinRules,""),r=(e=t?.getContent())!==null&&e!==void 0?e:{};return r.join_rule||$l.Invite}getHistoryVisibility(){var e,t=this.getStateEvents(M.RoomHistoryVisibility,""),r=(e=t?.getContent())!==null&&e!==void 0?e:{};return r.history_visibility||go.Shared}getGuestAccess(){var e,t=this.getStateEvents(M.RoomGuestAccess,""),r=(e=t?.getContent())!==null&&e!==void 0?e:{};return r.guest_access||ui.Forbidden}findPredecessor(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;if(e){var t=this.getStateEvents(M.RoomPredecessor,"");if(t){var r=t.getContent(),n=r.predecessor_room_id,a=r.last_known_event_id;typeof a!="string"&&(a=void 0);var s=r.via_servers;if(Array.isArray(s)||(s=void 0),typeof n=="string")return{roomId:n,eventId:a,viaServers:s}}}var o=this.getStateEvents(M.RoomCreate,"");if(o){var l=o.getContent().predecessor;if(l){var d=l.room_id;if(typeof d=="string"){var u=l.event_id;return(typeof u!="string"||u==="")&&(u=void 0),{roomId:d,eventId:u}}}}return null}updateThirdPartyTokenCache(e){if(e.getContent().third_party_invite){var t=(e.getContent().third_party_invite.signed||{}).token;if(t){var r=this.getStateEvents(M.RoomThirdPartyInvite,t);r&&(this.tokenToInvite[t]=e)}}}updateDisplayNameCache(e,t){var r=this.userIdsToDisplayNames[e];if(delete this.userIdsToDisplayNames[e],r){var n=At(r),a=this.displayNameToUserIds.get(n);if(a){var s=a.filter(u=>u!==e);this.displayNameToUserIds.set(n,s)}}this.userIdsToDisplayNames[e]=t;var o=t&&At(t);if(o){var l,d=(l=this.displayNameToUserIds.get(o))!==null&&l!==void 0?l:[];d.push(e),this.displayNameToUserIds.set(o,d)}}}function Na(i,e){var t=new Set;if(id(i)&&e){var r=e.getSender();r&&t.add(r);var n=e.getDirectionalContent().additional_creators;Array.isArray(n)&&n.forEach(a=>t.add(a))}return t}function xa(i,e,t){if(t.has(i))return 1/0;var r=e.getDirectionalContent(),n=r.users||{};return n[i]!==void 0&&Number.isInteger(n[i])?n[i]:r.users_default!==void 0?r.users_default:0}var z=(function(i){return i.Backward="b",i.Forward="f",i})({});class N{static setEventMetadata(e,t,r){e.setMetadata(t,r)}constructor(e){var t,r;this.eventTimelineSet=e,c(this,"roomId",void 0),c(this,"name",void 0),c(this,"events",[]),c(this,"baseIndex",0),c(this,"startState",void 0),c(this,"endState",void 0),c(this,"startToken",null),c(this,"endToken",null),c(this,"prevTimeline",null),c(this,"nextTimeline",null),c(this,"paginationRequests",{[z.Backward]:null,[z.Forward]:null}),this.roomId=(t=(r=e.room)===null||r===void 0?void 0:r.roomId)!==null&&t!==void 0?t:null,this.roomId&&(this.startState=new En(this.roomId),this.endState=new En(this.roomId)),this.paginationRequests={b:null,f:null},this.name=this.roomId+":"+new Date().toISOString()}initialiseState(e){var t,r,{timelineWasEmpty:n}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(this.events.length>0)throw new Error("Cannot initialise state after events are added");(t=this.startState)===null||t===void 0||t.setStateEvents(e,{timelineWasEmpty:n}),(r=this.endState)===null||r===void 0||r.setStateEvents(e,{timelineWasEmpty:n})}forkLive(e){var t=this.getState(e),r=new N(this.eventTimelineSet);return r.startState=t?.clone(),r.endState=t,this.endState=t?.clone(),r}fork(e){var t=this.getState(e),r=new N(this.eventTimelineSet);return r.startState=t?.clone(),r.endState=t?.clone(),r}getRoomId(){return this.roomId}getFilter(){return this.eventTimelineSet.getFilter()}getTimelineSet(){return this.eventTimelineSet}getBaseIndex(){return this.baseIndex}getEvents(){return this.events}getState(e){if(e==N.BACKWARDS)return this.startState;if(e==N.FORWARDS)return this.endState;throw new Error("Invalid direction '"+e+"'")}getPaginationToken(e){return this.roomId?this.getState(e).paginationToken:e===z.Backward?this.startToken:this.endToken}setPaginationToken(e,t){this.roomId?this.getState(t).paginationToken=e:t===z.Backward?this.startToken=e:this.endToken=e}getNeighbouringTimeline(e){if(e==N.BACKWARDS)return this.prevTimeline;if(e==N.FORWARDS)return this.nextTimeline;throw new Error("Invalid direction '"+e+"'")}setNeighbouringTimeline(e,t){if(this.getNeighbouringTimeline(t))throw new Error("timeline already has a neighbouring timeline - cannot reset neighbour (direction: "+t+")");if(t==N.BACKWARDS)this.prevTimeline=e;else if(t==N.FORWARDS)this.nextTimeline=e;else throw new Error("Invalid direction '"+t+"'");this.setPaginationToken(null,t)}addEvent(e,t){var{toStartOfTimeline:r,roomState:n,timelineWasEmpty:a,addToState:s}=t;n||(n=r?this.startState:this.endState);var o=this.getTimelineSet();if(o.room&&(N.setEventMetadata(e,n,r),s&&e.isState()&&o.room.getUnfilteredTimelineSet()===o)){var l;(l=n)===null||l===void 0||l.setStateEvents([e],{timelineWasEmpty:a}),(!e.sender||e.getType()===M.RoomMember&&!r)&&N.setEventMetadata(e,n,r)}var d;r?d=0:d=this.events.length,this.events.splice(d,0,e),r&&this.baseIndex++}insertEvent(e,t,r,n){var a=this.getTimelineSet();a.room&&(N.setEventMetadata(e,r,!1),n&&e.isState()&&a.room.getUnfilteredTimelineSet()===a&&(r.setStateEvents([e],{}),(!e.sender||e.getType()===M.RoomMember)&&N.setEventMetadata(e,r,!1))),this.events.splice(t,0,e)}removeEvent(e){for(var t=this.events.length-1;t>=0;t--){var r=this.events[t];if(r.getId()==e)return this.events.splice(t,1),t<this.baseIndex&&this.baseIndex--,r}return null}toString(){return this.name}}c(N,"BACKWARDS",z.Backward);c(N,"FORWARDS",z.Forward);var xn=(function(i){return i.Add="Relations.add",i.Remove="Relations.remove",i.Redaction="Relations.redaction",i})({}),ad=function(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[];return[t,...r].includes(e)};class So extends fe{constructor(e,t,r,n){var a;super(),a=this,this.relationType=e,this.eventType=t,this.altEventTypes=n,c(this,"relationEventIds",new Set),c(this,"relations",new Set),c(this,"annotationsByKey",{}),c(this,"annotationsBySender",{}),c(this,"sortedAnnotationsByKey",[]),c(this,"targetEvent",null),c(this,"creationEmitted",!1),c(this,"client",void 0),c(this,"onEventStatus",(s,o)=>{if(!s.isSending()){s.removeListener(ee.Status,this.onEventStatus);return}o===q.CANCELLED&&(s.removeListener(ee.Status,this.onEventStatus),this.removeEvent(s))}),c(this,"onBeforeRedaction",(function(){var s=R(function*(o){if(a.relations.has(o)){if(a.relations.delete(o),a.relationType===se.Annotation)a.removeAnnotationFromAggregation(o);else if(a.relationType===se.Replace&&a.targetEvent&&!a.targetEvent.isState()){var l=yield a.getLastReplacement();a.targetEvent.makeReplaced(l)}o.removeListener(ee.BeforeRedaction,a.onBeforeRedaction),a.emit(xn.Redaction,o)}});return function(o){return s.apply(this,arguments)}})()),this.client=r instanceof ji?r.client:r}addEvent(e){var t=this;return R(function*(){if(!t.relationEventIds.has(e.getId())){var r=e.getRelation();if(!r){T.error("Event must have relation info");return}var n=r.rel_type,a=e.getType();if(t.relationType!==n||!ad(a,t.eventType,t.altEventTypes)){T.error("Event relation info doesn't match this container");return}if(e.isSending()&&e.on(ee.Status,t.onEventStatus),t.relations.add(e),t.relationEventIds.add(e.getId()),t.relationType===se.Annotation)t.addAnnotationToAggregation(e);else if(t.relationType===se.Replace&&t.targetEvent&&!t.targetEvent.isState()){var s=yield t.getLastReplacement();t.targetEvent.makeReplaced(s)}e.on(ee.BeforeRedaction,t.onBeforeRedaction),t.emit(xn.Add,e),t.maybeEmitCreated()}})()}removeEvent(e){var t=this;return R(function*(){if(t.relations.has(e)){if(t.relations.delete(e),t.relationType===se.Annotation)t.removeAnnotationFromAggregation(e);else if(t.relationType===se.Replace&&t.targetEvent&&!t.targetEvent.isState()){var r=yield t.getLastReplacement();t.targetEvent.makeReplaced(r)}t.emit(xn.Remove,e)}})()}getRelations(){return[...this.relations]}addAnnotationToAggregation(e){var t,{key:r}=(t=e.getRelation())!==null&&t!==void 0?t:{};if(r){var n=this.annotationsByKey[r];n||(n=this.annotationsByKey[r]=new Set,this.sortedAnnotationsByKey.push([r,n])),n.add(e),this.sortedAnnotationsByKey.sort((o,l)=>{var d=o[1],u=l[1];return u.size-d.size});var a=e.getSender(),s=this.annotationsBySender[a];s||(s=this.annotationsBySender[a]=new Set),s.add(e)}}removeAnnotationFromAggregation(e){var t,{key:r}=(t=e.getRelation())!==null&&t!==void 0?t:{};if(r){var n=this.annotationsByKey[r];n&&(n.delete(e),this.sortedAnnotationsByKey.sort((o,l)=>{var d=o[1],u=l[1];return u.size-d.size}));var a=e.getSender(),s=this.annotationsBySender[a];s&&s.delete(e)}}getSortedAnnotationsByKey(){return this.relationType!==se.Annotation?null:this.sortedAnnotationsByKey}getAnnotationsBySender(){return this.relationType!==se.Annotation?null:this.annotationsBySender}getLastReplacement(){var e=this;return R(function*(){if(e.relationType!==se.Replace||!e.targetEvent)return null;var t=e.targetEvent.getServerAggregatedRelation(se.Replace),r=t?.origin_server_ts,n=e.getRelations().reduce((a,s)=>s.getSender()!==e.targetEvent.getSender()||r&&r>s.getTs()||a&&a.getTs()>s.getTs()?a:s,null);return n!=null&&n.shouldAttemptDecryption()&&e.client.getCrypto()?yield n.attemptDecryption(e.client.getCrypto()):n!=null&&n.isBeingDecrypted()&&(yield n.getDecryptionPromise()),n})()}setTargetEvent(e){var t=this;return R(function*(){if(!t.targetEvent){if(t.targetEvent=e,t.relationType===se.Replace&&!t.targetEvent.isState()){var r=yield t.getLastReplacement();r&&t.targetEvent.makeReplaced(r)}t.maybeEmitCreated()}})()}maybeEmitCreated(){this.creationEmitted||!this.targetEvent||!this.relations.size||(this.creationEmitted=!0,this.targetEvent.emit(ee.RelationsCreated,this.relationType,this.eventType))}}class bo{constructor(e,t){this.client=e,this.room=t,c(this,"relations",new Map)}getChildEventsForEvent(e,t,r){var n;return(n=this.relations.get(e))===null||n===void 0||(n=n.get(t))===null||n===void 0?void 0:n.get(r)}getAllChildEventsForEvent(e){var t,r=(t=this.relations.get(e))!==null&&t!==void 0?t:new Map,n=[];for(var a of r.values())for(var s of a.values())n.push(...s.getRelations());return n}aggregateParentEvent(e){var t=this.relations.get(e.getId());if(t)for(var r of t.values())for(var n of r.values())n.setTargetEvent(e)}aggregateChildEvent(e,t){if(!(e.isRedacted()||e.status===q.CANCELLED)){var r=e.getRelation();if(r){var n=()=>{if(e.isDecryptionFailure()){e.once(ee.Decrypted,n);return}this.aggregateChildEvent(e,t)};if(e.isBeingDecrypted()||e.shouldAttemptDecryption()){e.once(ee.Decrypted,n);return}var{event_id:a,rel_type:s}=r,o=e.getType(),l=this.relations.get(a);l||(l=new Map,this.relations.set(a,l));var d=l.get(s);d||(d=new Map,l.set(s,d));var u=d.get(o);if(!u){var h,m,E;u=new So(s,o,this.client),d.set(o,u);var f=(h=this.room)!==null&&h!==void 0?h:t?.room,p=(m=(E=t?.findEventById(a))!==null&&E!==void 0?E:f?.findEventById(a))!==null&&m!==void 0?m:f?.getPendingEvent(a);p&&u.setTargetEvent(p)}u.addEvent(e)}}}}var Gt;Gt=T.log.bind(T);var hn=(function(i){return i.Ignore="ignore",i.Replace="replace",i})({});class br extends fe{constructor(e){var t,r,n,a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},s=arguments.length>2?arguments[2]:void 0,o=arguments.length>3?arguments[3]:void 0,l=arguments.length>4&&arguments[4]!==void 0?arguments[4]:null;super(),this.room=e,this.thread=o,this.threadListType=l,c(this,"relations",void 0),c(this,"timelineSupport",void 0),c(this,"displayPendingEvents",void 0),c(this,"liveTimeline",void 0),c(this,"timelines",void 0),c(this,"_eventIdToTimeline",new Map),c(this,"filter",void 0),this.timelineSupport=!!a.timelineSupport,this.liveTimeline=new N(this),this.displayPendingEvents=a.pendingEvents!==!1,this.timelines=[this.liveTimeline],this._eventIdToTimeline=new Map,this.filter=a.filter,this.relations=(t=(r=this.room)===null||r===void 0?void 0:r.relations)!==null&&t!==void 0?t:new bo((n=e?.client)!==null&&n!==void 0?n:s)}getTimelines(){return this.timelines}getFilter(){return this.filter}setFilter(e){this.filter=e}getPendingEvents(){return!this.room||!this.displayPendingEvents?[]:this.room.getPendingEvents()}getLiveTimeline(){return this.liveTimeline}setLiveTimeline(e){this.liveTimeline=e}eventIdToTimeline(e){return this._eventIdToTimeline.get(e)}replaceEventId(e,t){var r=this._eventIdToTimeline.get(e);r&&(this._eventIdToTimeline.delete(e),this._eventIdToTimeline.set(t,r))}resetLiveTimeline(e,t){var r=!this.timelineSupport||!t,n=this.liveTimeline,a=r?n.forkLive(N.FORWARDS):n.fork(N.FORWARDS);r?(this.timelines=[a],this._eventIdToTimeline=new Map):this.timelines.push(a),t&&n.setPaginationToken(t,N.FORWARDS),a.setPaginationToken(e??null,N.BACKWARDS),this.liveTimeline=a,this.emit(U.TimelineReset,this.room,this,r)}getTimelineForEvent(e){if(e==null)return null;var t=this._eventIdToTimeline.get(e);return t===void 0?null:t}findEventById(e){var t=this.getTimelineForEvent(e);if(t)return t.getEvents().find(function(r){return r.getId()==e})}addTimeline(){if(!this.timelineSupport)throw new Error("timeline support is disabled. Set the 'timelineSupport' parameter to true when creating MatrixClient to enable it.");var e=new N(this);return this.timelines.push(e),e}addEventsToTimeline(e,t,r,n,a){if(!n)throw new Error("'timeline' not specified for EventTimelineSet.addEventsToTimeline");if(!t&&n==this.liveTimeline)throw new Error("EventTimelineSet.addEventsToTimeline cannot be used for adding events to the live timeline - use Room.addLiveEvents instead");if(!(this.filter&&(e=this.filter.filterRoomTimeline(e),!e.length))){var s=t?N.BACKWARDS:N.FORWARDS,o=t?N.FORWARDS:N.BACKWARDS,l=!1,d=!1;for(var u of e){var h=u.getId(),m=this._eventIdToTimeline.get(h);if(!m){this.addEventToTimeline(u,n,{toStartOfTimeline:t,addToState:r}),d=!0,l=!0;continue}if(d=!1,m==n){Gt("Event "+h+" already in timeline "+n);continue}var E=n.getNeighbouringTimeline(s);if(E){m==E?Gt("Event "+h+" in neighbouring timeline - switching to "+m):Gt("Event "+h+" already in a different timeline "+m),n=m;continue}T.info("Already have timeline for "+h+" - joining timeline "+n+" to "+m);var f=m===this.liveTimeline,p=n===this.liveTimeline,I=s===N.BACKWARDS&&f,S=s===N.FORWARDS&&p;if(I||S){I&&T.warn("Refusing to set a preceding existingTimeLine on our timeline as the existingTimeLine is live ("+m+")"),S&&T.warn("Refusing to set our preceding timeline on a existingTimeLine as our timeline is live ("+n+")");continue}n.setNeighbouringTimeline(m,s),m.setNeighbouringTimeline(n,o),n=m,l=!0}if(d||!l){if(s===N.FORWARDS&&n===this.liveTimeline){T.warn({lastEventWasNew:d,didUpdate:l}),T.warn("Refusing to set forwards pagination token of live timeline "+"".concat(n," to ").concat(a));return}n.setPaginationToken(a??null,s)}}}addLiveEvent(e,t){var{duplicateStrategy:r,fromCache:n,roomState:a,timelineWasEmpty:s,addToState:o}=t;if(this.filter){var l=this.filter.filterRoomTimeline([e]);if(!l.length)return}var d=this._eventIdToTimeline.get(e.getId());if(d){if(r===hn.Replace){Gt("EventTimelineSet.addLiveEvent: replacing duplicate event "+e.getId());for(var u=d.getEvents(),h=0;h<u.length;h++)if(u[h].getId()===e.getId()){a||(a=d.getState(N.FORWARDS)),N.setEventMetadata(e,a,!1),u[h]=e;break}}else Gt("EventTimelineSet.addLiveEvent: ignoring duplicate event "+e.getId());return}this.addEventToTimeline(e,this.liveTimeline,{toStartOfTimeline:!1,fromCache:n,roomState:a,timelineWasEmpty:s,addToState:o})}addEventToTimeline(e,t,r){var{toStartOfTimeline:n,fromCache:a=!1,roomState:s,timelineWasEmpty:o,addToState:l}=r;if(t.getTimelineSet()!==this){var d;throw new Error("EventTimelineSet.addEventToTimeline: Timeline=".concat(t.toString(),` does not belong " +
7
+ "in timelineSet(threadId=`).concat((d=this.thread)===null||d===void 0?void 0:d.id,")"))}var u=e.getId();if(this.relations.aggregateParentEvent(e),this.relations.aggregateChildEvent(e,this),this.room&&!this.canContain(e)){var h,m="event=".concat(u);e.threadRootId&&(m+="(belongs to thread=".concat(e.threadRootId,")")),T.warn("EventTimelineSet.addEventToTimeline: Ignoring ".concat(m," that does not belong ")+"in timeline=".concat(t.toString()," timelineSet(threadId=").concat((h=this.thread)===null||h===void 0?void 0:h.id,")"));return}t.addEvent(e,{toStartOfTimeline:n,roomState:s,timelineWasEmpty:o,addToState:l}),this._eventIdToTimeline.set(u,t);var E={timeline:t,liveEvent:!n&&t==this.liveTimeline&&!a};this.emit(U.Timeline,e,this.room,!!n,!1,E)}insertEventIntoTimeline(e,t,r,n){if(t.getTimelineSet()!==this){var a;throw new Error("EventTimelineSet.insertEventIntoTimeline: Timeline=".concat(t.toString(),` does not belong " +
8
+ "in timelineSet(threadId=`).concat((a=this.thread)===null||a===void 0?void 0:a.id,")"))}var s=e.getId();if(this.relations.aggregateParentEvent(e),this.relations.aggregateChildEvent(e,this),this.room&&!this.canContain(e)){var o,l="event=".concat(s);e.threadRootId&&(l+="(belongs to thread=".concat(e.threadRootId,")")),T.warn("EventTimelineSet.insertEventIntoTimeline: Ignoring ".concat(l," that does not belong ")+"in timeline=".concat(t.toString()," timelineSet(threadId=").concat((o=this.thread)===null||o===void 0?void 0:o.id,")"));return}var d=e.relationEventId;if(!d){this.addEventToTimeline(e,t,{toStartOfTimeline:!1,fromCache:!1,timelineWasEmpty:!1,roomState:r,addToState:n});return}for(var u=this.findEventById(d),h=t.getEvents(),m=u!==void 0?h.indexOf(u):0,E=m;E<h.length;E++){var f=h[E];if(f.getTs()>e.getTs())break}t.insertEvent(e,E,r,n),this._eventIdToTimeline.set(s,t);var p={timeline:t,liveEvent:!1};this.emit(U.Timeline,e,this.room,!1,!1,p)}handleRemoteEcho(e,t,r){var n=this._eventIdToTimeline.get(t);n?(this._eventIdToTimeline.delete(t),this._eventIdToTimeline.set(r,n)):(!this.filter||this.filter.filterRoomTimeline([e]).length)&&this.addEventToTimeline(e,this.liveTimeline,{toStartOfTimeline:!1,addToState:!1})}removeEvent(e){var t=this._eventIdToTimeline.get(e);if(!t)return null;var r=t.removeEvent(e);if(r){this._eventIdToTimeline.delete(e);var n={timeline:t};this.emit(U.Timeline,r,this.room,void 0,!0,n)}return r}compareEventOrdering(e,t){if(e==t)return 0;var r=this._eventIdToTimeline.get(e),n=this._eventIdToTimeline.get(t);if(r===void 0||n===void 0)return null;if(r===n){for(var a=void 0,s=void 0,o=r.getEvents(),l=0;l<o.length&&(a===void 0||s===void 0);l++){var d=o[l].getId();d==e&&(a=l),d==t&&(s=l)}var u=a-s;return u<0?-1:u>0?1:0}for(var h=r;h;){if(h===n)return-1;h=h.getNeighbouringTimeline(N.FORWARDS)}for(h=r;h;){if(h===n)return 1;h=h.getNeighbouringTimeline(N.BACKWARDS)}return null}canContain(e){if(!this.room)throw new Error("Cannot call `EventTimelineSet::canContain without a `room` set. Set the room when creating the EventTimelineSet to call this method.");var{threadId:t,shouldLiveInRoom:r,shouldLiveInThread:n}=this.room.eventShouldLiveIn(e);if(this.thread)return this.thread.id===t;if(!r&&!n){var a;T.warn("EventTimelineSet:canContain event encountered which cannot be added to any timeline roomId=".concat((a=this.room)===null||a===void 0?void 0:a.roomId," eventId=").concat(e.getId()," threadId=").concat(e.threadRootId))}return r}}var q=(function(i){return i.NOT_SENT="not_sent",i.ENCRYPTING="encrypting",i.SENDING="sending",i.QUEUED="queued",i.SENT="sent",i.CANCELLED="cancelled",i})({});class sd{constructor(e,t){this.roomId=e}}var Lr=new Mn("unread_thread_notifications","org.matrix.msc3773.unread_thread_notifications");function od(i,e){if(e.endsWith("*")){var t=e.slice(0,-1);return i.slice(0,t.length)===t}else return i===e}class Fa{constructor(e,t){this.filterJson=e,this.userId=t}check(e){var t,r,n=((t=e.getUnsigned())===null||t===void 0?void 0:t["m.relations"])||{},a=Object.keys(n),s=[];return this.userId&&n!==null&&n!==void 0&&(r=n[re.name])!==null&&r!==void 0&&r.current_user_participated&&s.push(this.userId),this.checkFields(e.getRoomId(),e.getSender(),e.getType(),e.getContent()?e.getContent().url!==void 0:!1,a,s)}toJSON(){return Object.fromEntries(Object.entries({types:this.filterJson.types,not_types:this.filterJson.not_types,rooms:this.filterJson.rooms,not_rooms:this.filterJson.not_rooms,senders:this.filterJson.senders,not_senders:this.filterJson.not_senders,contains_url:this.filterJson.contains_url,[Or.name]:this.filterJson[Or.name],[kr.name]:this.filterJson[kr.name]}).filter(e=>{var[t,r]=e;return r}))}checkFields(e,t,r,n,a,s){var o={rooms:function(S){return e===S},senders:function(S){return t===S},types:function(S){return od(r,S)}};for(var l in o){var d=o[l],u="not_"+l,h=this.filterJson[u];if(h!=null&&h.some(d))return!1;var m=this.filterJson[l];if(m&&!m.some(d))return!1}var E=this.filterJson.contains_url;if(E!==void 0&&E!==n)return!1;var f=this.filterJson[kr.name];if(f!==void 0&&!this.arrayMatchesFilter(f,a))return!1;var p=this.filterJson[Or.name];return!(p!==void 0&&!this.arrayMatchesFilter(p,s))}arrayMatchesFilter(e,t){return t.length>0&&e.every(r=>t.includes(r))}filter(e){return e.filter(this.check,this)}limit(){return this.filterJson.limit!==void 0?this.filterJson.limit:10}}function Ba(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(i);e&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(i,n).enumerable})),t.push.apply(t,r)}return t}function Bt(i){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?Ba(Object(t),!0).forEach(function(r){c(i,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(t)):Ba(Object(t)).forEach(function(r){Object.defineProperty(i,r,Object.getOwnPropertyDescriptor(t,r))})}return i}function Fn(i,e,t){for(var r=e.split("."),n=i,a=0;a<r.length-1;a++)n[r[a]]||(n[r[a]]={}),n=n[r[a]];n[r[r.length-1]]=t}class xe{static fromJson(e,t,r){var n=new xe(e,t);return n.setDefinition(r),n}constructor(e,t){this.userId=e,this.filterId=t,c(this,"definition",{}),c(this,"roomFilter",void 0),c(this,"roomTimelineFilter",void 0)}getFilterId(){return this.filterId}getDefinition(){return this.definition}setDefinition(e){this.definition=e;var t=e.room,r={};t&&(t.rooms&&(r.rooms=t.rooms),t.rooms&&(r.not_rooms=t.not_rooms)),this.roomFilter=new Fa(r,this.userId),this.roomTimelineFilter=new Fa(t?.timeline||{},this.userId)}getRoomTimelineFilterComponent(){return this.roomTimelineFilter}filterRoomTimeline(e){return this.roomFilter&&(e=this.roomFilter.filter(e)),this.roomTimelineFilter&&(e=this.roomTimelineFilter.filter(e)),e}setTimelineLimit(e){Fn(this.definition,"room.timeline.limit",e)}setUnreadThreadNotifications(e){var t,r;this.definition=Bt(Bt({},this.definition),{},{room:Bt(Bt({},(t=this.definition)===null||t===void 0?void 0:t.room),{},{timeline:Bt(Bt({},(r=this.definition)===null||r===void 0||(r=r.room)===null||r===void 0?void 0:r.timeline),{},{[Lr.name]:e})})})}setLazyLoadMembers(e){Fn(this.definition,"room.state.lazy_load_members",e)}setIncludeLeaveRooms(e){Fn(this.definition,"room.include_leave",e)}}c(xe,"LAZY_LOADING_MESSAGES_FILTER",{lazy_load_members:!0});function ja(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(i);e&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(i,n).enumerable})),t.push.apply(t,r)}return t}function ld(i){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?ja(Object(t),!0).forEach(function(r){c(i,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(t)):ja(Object(t)).forEach(function(r){Object.defineProperty(i,r,Object.getOwnPropertyDescriptor(t,r))})}return i}function _o(i,e,t){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;return new Ge({content:{[e.getId()]:{[t]:{[i]:ld({ts:e.getTs()},!r&&{thread_id:Fr(e)})}}},type:M.Receipt,room_id:e.getRoomId()})}var jt=0,Kt=1;class Ro extends fe{constructor(){super(...arguments),c(this,"receipts",new Rr(()=>new Map)),c(this,"receiptCacheByEventId",new Map)}getReadReceiptForUserId(e){var t,r,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:we.Read,[s,o]=(t=(r=this.receipts.get(a))===null||r===void 0?void 0:r.get(e))!==null&&t!==void 0?t:[null,null];return n?s:o??s}compareReceipts(e,t){var r;return(r=this.getUnfilteredTimelineSet().compareEventOrdering(e.eventId,t.eventId))!==null&&r!==void 0?r:e.data.ts-t.data.ts}getEventReadUpTo(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,r=this.getLatestReceipt(e,t);return r&&this.receiptPointsAtConsistentEvent(r)?r.eventId:null}receiptPointsAtConsistentEvent(e){var t,r=this.findEventById(e.eventId);if(!r)return!1;if(!((t=e.data)!==null&&t!==void 0&&t.thread_id))return!0;if(e.data.thread_id===On){var n=Cn(r);if(n)return!0}else if(r.threadRootId===e.data.thread_id)return!0;return T.warn("Ignoring receipt because its thread_id (".concat(e.data.thread_id,") disagrees ")+"with the thread root (".concat(r.threadRootId,") of the referenced event ")+"(event ID = ".concat(e.eventId,")")),!1}getLatestReceipt(e,t){var r,n,a=this.getReadReceiptForUserId(e,t,we.Read),s=this.getReadReceiptForUserId(e,t,we.ReadPrivate),o;return a!=null&&a.eventId&&s!==null&&s!==void 0&&s.eventId&&(o=this.compareReceipts(a,s)),o?(n=o<0?s:a)!==null&&n!==void 0?n:null:(r=s??a)!==null&&r!==void 0?r:null}addReceiptToStructure(e,t,r,n,a){var s,o,l=this.receipts.getOrCreate(t),d=l.get(r);d||(d=[null,null],l.set(r,d));var u=d[jt];if(a){var h;u=(h=d[Kt])!==null&&h!==void 0?h:d[jt]}var m={eventId:e,data:n};if(u){var E=this.compareReceipts(u,m);if(E>=0)return}var f=a?d[jt]:m,p=a?m:d[Kt],I=null;f&&p&&(I=this.getUnfilteredTimelineSet().compareEventOrdering(f.eventId,p.eventId));var S=I===null||I<0,g=(s=d[Kt])!==null&&s!==void 0?s:d[jt];a&&S?d[Kt]=m:a||(d[jt]=m,S||(d[Kt]=null));var _=(o=d[Kt])!==null&&o!==void 0?o:d[jt];if(g!==_){if(g&&this.receiptCacheByEventId.get(g.eventId)){var y=g.eventId;this.receiptCacheByEventId.set(y,this.receiptCacheByEventId.get(y).filter(b=>b.type!==t||b.userId!==r)),this.receiptCacheByEventId.get(y).length<1&&this.receiptCacheByEventId.delete(y)}this.receiptCacheByEventId.get(e)||this.receiptCacheByEventId.set(e,[]),this.receiptCacheByEventId.get(e).push({userId:r,type:t,data:n})}}getReceiptsForEvent(e){return this.receiptCacheByEventId.get(e.getId())||[]}fixupNotifications(e){var t=this.getReadReceiptForUserId(e,!1),r=this.timeline[this.timeline.length-1];r&&t?.eventId===r.getId()&&e===r.getSender()&&(this.setUnread(Q.Total,0),this.setUnread(Q.Highlight,0))}addLocalEchoReceipt(e,t,r){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;this.addReceipt(_o(e,t,r,n),!0)}getUsersReadUpTo(e){return this.getReceiptsForEvent(e).filter(function(t){return ki(t.type)}).map(function(t){return t.userId})}}new Me.UnstableValue("m.poll.disclosed","org.matrix.msc3381.poll.disclosed");new Me.UnstableValue("m.poll.undisclosed","org.matrix.msc3381.poll.undisclosed");new Me.UnstableValue("m.poll.start","org.matrix.msc3381.poll.start");var Sn=new Me.UnstableValue("m.poll.response","org.matrix.msc3381.poll.response"),hi=new Me.UnstableValue("m.poll.end","org.matrix.msc3381.poll.end"),wt=(function(i){return i.New="Poll.new",i.End="Poll.end",i.Update="Poll.update",i.Responses="Poll.Responses",i.Destroy="Poll.Destroy",i.UndecryptableRelations="Poll.UndecryptableRelations",i})({}),Ka=(i,e)=>{var t=i.filter(r=>{if(!r.isDecryptionFailure())return Sn.matches(r.getType())&&r.getTs()<=e});return{responseEvents:t}};class dd extends fe{constructor(e,t,r){if(super(),this.rootEvent=e,this.matrixClient=t,this.room=r,c(this,"roomId",void 0),c(this,"pollEvent",void 0),c(this,"_isFetchingResponses",!1),c(this,"relationsNextBatch",void 0),c(this,"responses",null),c(this,"endEvent",void 0),c(this,"undecryptableRelationEventIds",new Set),c(this,"countUndecryptableEvents",n=>{var a=n.filter(o=>o.isDecryptionFailure()).map(o=>o.getId()),s=this.undecryptableRelationsCount;this.undecryptableRelationEventIds=new Set([...this.undecryptableRelationEventIds,...a]),this.undecryptableRelationsCount!==s&&this.emit(wt.UndecryptableRelations,this.undecryptableRelationsCount)}),!this.rootEvent.getRoomId()||!this.rootEvent.getId())throw new Error("Invalid poll start event.");this.roomId=this.rootEvent.getRoomId(),this.pollEvent=this.rootEvent.unstableExtensibleEvent}get pollId(){return this.rootEvent.getId()}get endEventId(){var e;return(e=this.endEvent)===null||e===void 0?void 0:e.getId()}get isEnded(){return!!this.endEvent}get isFetchingResponses(){return this._isFetchingResponses}get undecryptableRelationsCount(){return this.undecryptableRelationEventIds.size}getResponses(){var e=this;return R(function*(){return e.responses||e.isFetchingResponses||(yield e.fetchResponses()),e.responses})()}onNewRelation(e){var t;if(hi.matches(e.getType())&&this.validateEndEvent(e)&&(this.endEvent=e,this.refilterResponsesOnEnd(),this.emit(wt.End)),!!this.responses){var r=((t=this.endEvent)===null||t===void 0?void 0:t.getTs())||Number.MAX_SAFE_INTEGER,{responseEvents:n}=Ka([e],r);this.countUndecryptableEvents([e]),n.length&&(n.forEach(a=>{this.responses.addEvent(a)}),this.emit(wt.Responses,this.responses))}}fetchResponses(){var e=this;return R(function*(){var t,r;e._isFetchingResponses=!0;var n=yield e.matrixClient.relations(e.roomId,e.rootEvent.getId(),"m.reference",void 0,{from:e.relationsNextBatch||void 0});yield Promise.all(n.events.map(d=>e.matrixClient.decryptEventIfNeeded(d)));var a=e.responses||new So("m.reference",Sn.name,e.matrixClient,[Sn.altName]),s=n.events.find(d=>hi.matches(d.getType()));e.validateEndEvent(s)&&(e.endEvent=s,e.refilterResponsesOnEnd(),e.emit(wt.End));var o=((t=e.endEvent)===null||t===void 0?void 0:t.getTs())||Number.MAX_SAFE_INTEGER,{responseEvents:l}=Ka(n.events,o);l.forEach(d=>{a.addEvent(d)}),e.relationsNextBatch=(r=n.nextBatch)!==null&&r!==void 0?r:void 0,e.responses=a,e.countUndecryptableEvents(n.events),e.relationsNextBatch?e.fetchResponses():e._isFetchingResponses=!1,e.emit(wt.Responses,e.responses)})()}refilterResponsesOnEnd(){var e;if(this.responses){var t=((e=this.endEvent)===null||e===void 0?void 0:e.getTs())||Number.MAX_SAFE_INTEGER;this.responses.getRelations().forEach(r=>{if(r.getTs()>t){var n;(n=this.responses)===null||n===void 0||n.removeEvent(r)}}),this.emit(wt.Responses,this.responses)}}validateEndEvent(e){if(!e||this.endEvent&&this.endEvent.getTs()<e.getTs())return!1;var t=this.room.currentState,r=e.getSender();return!!r&&(r===this.rootEvent.getSender()||t.maySendRedactionForEvent(this.rootEvent,r))}}var ud=i=>{var e=i.getType();return Me.M_POLL_START.matches(e)||Sn.matches(e)||hi.matches(e)};class cd{constructor(e){c(this,"room",void 0),c(this,"threadedReceipts",void 0),c(this,"unthreadedReceipts",void 0),c(this,"danglingReceipts",void 0),c(this,"onTimelineEvent",t=>{var r=t.getId();if(r){var n=this.danglingReceipts.remove(r);n?.forEach(a=>{a.receipt.thread_id?this.threadedReceipts.set(a.receipt.thread_id,a.eventId,a.receiptType,a.userId,a.receipt.ts,a.synthetic):this.unthreadedReceipts.set(r,a.receiptType,a.userId,a.receipt.ts,a.synthetic)})}}),this.room=e,this.threadedReceipts=new md(e),this.unthreadedReceipts=new Io(e),this.danglingReceipts=new pd,e.on(U.Timeline,this.onTimelineEvent)}add(e,t){for(var[r,n]of Object.entries(e))for(var[a,s]of Object.entries(n))for(var[o,l]of Object.entries(s)){var d=this.room.findEventById(r);d?l.thread_id?this.threadedReceipts.set(l.thread_id,r,a,o,l.ts,t):this.unthreadedReceipts.set(r,a,o,l.ts,t):this.danglingReceipts.add(new vd(r,a,o,l,t))}}hasUserReadEvent(e,t){var r=this.unthreadedReceipts.get(e);if(r&&vi(r.eventId,t,this.room))return!0;var n=this.room.findEventById(t);if(!n)return T.warn("hasUserReadEvent event ID ".concat(t," not found in room ").concat(this.room.roomId,": this shouldn't happen!")),!1;var a=Fr(n),s=this.threadedReceipts.get(a,e);return!!(s&&vi(s.eventId,t,this.room)||this.userSentLatestEventInThread(a,e))}userSentLatestEventInThread(e,t){var r,n=e===On?this.room.getLiveTimeline().getEvents():(r=this.room.getThread(e))===null||r===void 0?void 0:r.timeline;return!!(n&&n.length>0&&n[n.length-1].getSender()===t)}}class hd{constructor(e,t,r){this.eventId=e,this.receiptType=t,this.ts=r}}class vd{constructor(e,t,r,n,a){this.eventId=e,this.receiptType=t,this.userId=r,this.receipt=n,this.synthetic=a}}class fd{constructor(e){c(this,"room",void 0),c(this,"real",void 0),c(this,"synthetic",void 0),this.room=e,this.real=void 0,this.synthetic=void 0}set(e,t){e?this.synthetic=t:this.real=t,this.synthetic&&this.real&&vi(this.real.eventId,this.synthetic.eventId,this.room)&&(this.synthetic=void 0)}get(){var e;return(e=this.synthetic)!==null&&e!==void 0?e:this.real}getByType(e){return e?this.synthetic:this.real}}class Io{constructor(e){c(this,"room",void 0),c(this,"data",void 0),this.room=e,this.data=new Map}set(e,t,r,n,a){var s=xi(this.data,r,()=>new fd(this.room)),o=s.getByType(a);o&&gd(o.eventId,e,this.room)||s.set(a,new hd(e,t,n))}get(e){var t;return(t=this.data.get(e))===null||t===void 0?void 0:t.get()}}class md{constructor(e){c(this,"room",void 0),c(this,"data",void 0),this.room=e,this.data=new Map}set(e,t,r,n,a,s){var o=xi(this.data,e,()=>new Io(this.room));o.set(t,r,n,a,s)}get(e,t){var r;return(r=this.data.get(e))===null||r===void 0?void 0:r.get(t)}}class pd{constructor(){c(this,"data",new Map)}add(e){var t=xi(this.data,e.eventId,()=>[]);t.push(e)}remove(e){var t=this.data.get(e);return this.data.delete(e),t}}function xi(i,e,t){var r=i.get(e);if(r)return r;var n=t();return i.set(e,n),n}function vi(i,e,t){var r=t.compareEventOrdering(i,e);return r!==null&&r>=0}function gd(i,e,t){var r=t.compareEventOrdering(i,e);return r!==null&&r>0}function yd(i,e,t){var r=i.findEventById(e),n=i.findEventById(t);if(!r||!n)return null;var a=Cn(r),s=Cn(n);return a&&s?Ed(i,e,t,r,n):Sd(e,t,r,n)}function Ed(i,e,t,r,n){var a=i.getUnfilteredTimelineSet(),s=a.compareEventOrdering(e,t);if(s!==null)return s;var o=a.getTimelineForEvent(e);if(o===a.getLiveTimeline())return 1;var l=a.getTimelineForEvent(t);return l===a.getLiveTimeline()?-1:To(r,n)}function Sd(i,e,t,r){var n=Fr(t),a=Fr(r),s=t.getThread();return s&&n===a?s.timelineSet.compareEventOrdering(i,e):To(t,r)}function To(i,e){var t=i.getTs(),r=e.getTs();return t<r?-1:t>r?1:0}var O=(function(i){return i.Get="GET",i.Put="PUT",i.Post="POST",i.Delete="DELETE",i.Options="OPTIONS",i.Head="HEAD",i.Patch="PATCH",i})({});function Va(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(i);e&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(i,n).enumerable})),t.push.apply(t,r)}return t}function bd(i){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?Va(Object(t),!0).forEach(function(r){c(i,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(t)):Va(Object(t)).forEach(function(r){Object.defineProperty(i,r,Object.getOwnPropertyDescriptor(t,r))})}return i}class Qt extends Error{constructor(e,t,r){super(e),this.httpStatus=t,this.httpHeaders=r}isRateLimitError(){return this.httpStatus===429}getRetryAfterMs(){var e,t=(e=this.httpHeaders)===null||e===void 0?void 0:e.get("Retry-After");if(t!=null){if(/^\d+$/.test(t)){var r=Number.parseInt(t)*1e3;if(!Number.isFinite(r))throw new Error("Retry-After header integer value is too large");return r}var n=new Date(t);if(n.toUTCString()!==t)throw new Error("Retry-After header value is not a valid HTTP-date or non-negative decimal integer");return n.getTime()-Date.now()}return null}}class ue extends Qt{constructor(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,r=arguments.length>2?arguments[2]:void 0,n=arguments.length>3?arguments[3]:void 0,a=arguments.length>4?arguments[4]:void 0,s=e.error||"Unknown message";t&&(s="[".concat(t,"] ").concat(s)),r&&(s="".concat(s," (").concat(r,")")),super("MatrixError: ".concat(s),t,a),this.url=r,this.event=n,c(this,"errcode",void 0),c(this,"error",void 0),c(this,"data",void 0),this.errcode=e.errcode,this.error=e.error,this.name=e.errcode||"Unknown error code",this.data=e}isRateLimitError(){return this.errcode==="M_LIMIT_EXCEEDED"||(this.errcode==="M_UNKNOWN"||this.errcode===void 0)&&super.isRateLimitError()}getRetryAfterMs(){var e=super.getRetryAfterMs();if(e!==null)return e;if(this.errcode==="M_LIMIT_EXCEEDED"&&"retry_after_ms"in this.data){if(!Number.isInteger(this.data.retry_after_ms))throw new Error("retry_after_ms is not an integer");return this.data.retry_after_ms}return null}asWidgetApiErrorData(){var e,t,r,n,a={};if(this.httpHeaders)for(var[s,o]of this.httpHeaders)a[s]=o;return{http_status:(e=this.httpStatus)!==null&&e!==void 0?e:400,http_headers:a,url:(t=this.url)!==null&&t!==void 0?t:"",response:bd({errcode:(r=this.errcode)!==null&&r!==void 0?r:"M_UNKNOWN",error:(n=this.data.error)!==null&&n!==void 0?n:"Unknown message"},this.data)}}static fromWidgetApiErrorData(e){return new ue(e.response,e.http_status,e.url,void 0,new Headers(e.http_headers))}}function wo(i,e){if(!(i instanceof Qt)||!i.isRateLimitError())return e;try{var t;return(t=i.getRetryAfterMs())!==null&&t!==void 0?t:e}catch{return e}}class Vr extends Error{constructor(e,t){super(e+(t?": ".concat(t.message):""))}get name(){return"ConnectionError"}}class _d extends Error{constructor(e){var t;super((t=e?.message)!==null&&t!==void 0?t:"")}get name(){return"TokenRefreshError"}}class Rd extends Error{constructor(e){var t;super((t=e?.message)!==null&&t!==void 0?t:"")}get name(){return"TokenRefreshLogoutError"}}var Id=new er(null,"ORG.MATRIX.MSC4387_SAFETY");class Td extends ue{constructor(){super(...arguments),c(this,"harms",void 0),c(this,"expiry",void 0);var e=arguments.length<=0?void 0:arguments[0];this.harms=new Set(e&&"harms"in e&&Array.isArray(e.harms)?e.harms:[]),this.message="".concat(super.message," (").concat([...this.harms].join(", "),")"),e&&"expiry"in e&&typeof e.expiry=="number"&&(this.expiry=new Date(e.expiry))}}var qa=(function(i){return i.SessionLoggedOut="Session.logged_out",i.NoConsent="no_consent",i})({}),Qr={};var Ha;function wd(){if(Ha)return Qr;Ha=1;var i=/; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g,e=/^[\u000b\u0020-\u007e\u0080-\u00ff]+$/,t=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,r=/\\([\u000b\u0020-\u00ff])/g,n=/([\\"])/g,a=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;Qr.format=s,Qr.parse=o;function s(h){if(!h||typeof h!="object")throw new TypeError("argument obj is required");var m=h.parameters,E=h.type;if(!E||!a.test(E))throw new TypeError("invalid type");var f=E;if(m&&typeof m=="object")for(var p,I=Object.keys(m).sort(),S=0;S<I.length;S++){if(p=I[S],!t.test(p))throw new TypeError("invalid parameter name");f+="; "+p+"="+d(m[p])}return f}function o(h){if(!h)throw new TypeError("argument string is required");var m=typeof h=="object"?l(h):h;if(typeof m!="string")throw new TypeError("argument string is required to be a string");var E=m.indexOf(";"),f=E!==-1?m.slice(0,E).trim():m.trim();if(!a.test(f))throw new TypeError("invalid media type");var p=new u(f.toLowerCase());if(E!==-1){var I,S,g;for(i.lastIndex=E;S=i.exec(m);){if(S.index!==E)throw new TypeError("invalid parameter format");E+=S[0].length,I=S[1].toLowerCase(),g=S[2],g.charCodeAt(0)===34&&(g=g.slice(1,-1),g.indexOf("\\")!==-1&&(g=g.replace(r,"$1"))),p.parameters[I]=g}if(E!==m.length)throw new TypeError("invalid parameter format")}return p}function l(h){var m;if(typeof h.getHeader=="function"?m=h.getHeader("content-type"):typeof h.headers=="object"&&(m=h.headers&&h.headers["content-type"]),typeof m!="string")throw new TypeError("content-type header is missing from object");return m}function d(h){var m=String(h);if(t.test(m))return m;if(m.length>0&&!e.test(m))throw new TypeError("invalid parameter value");return'"'+m.replace(n,"\\$1")+'"'}function u(h){this.parameters=Object.create(null),this.type=h}return Qr}var Cd=wd();function Fi(i){var e=new AbortController;return setTimeout(()=>{e.abort()},i),e.signal}function Md(i){var e=new AbortController;function t(){for(var a of i)a.removeEventListener("abort",r)}function r(){e.abort(),t()}for(var n of i){if(n.aborted){r();break}n.addEventListener("abort",r)}return{signal:e.signal,cleanup:t}}function Co(i,e){var t,r,n=Bn(i)?new Headers(i.getAllResponseHeaders().trim().split(/[\r\n]+/).map(o=>{var l=o.indexOf(":");return[o.substring(0,l),o.substring(l+1)]})):i.headers,a;try{a=Od(n)}catch(o){return o}if(((t=a)===null||t===void 0?void 0:t.type)==="application/json"&&e){var s=JSON.parse(e);return s.errcode&&Id.matches(s.errcode)?new Td(s,i.status,Bn(i)?i.responseURL:i.url,void 0,n):new ue(s,i.status,Bn(i)?i.responseURL:i.url,void 0,n)}return((r=a)===null||r===void 0?void 0:r.type)==="text/plain"?new Qt("Server returned ".concat(i.status," error: ").concat(e),i.status,n):new Qt("Server returned ".concat(i.status," error"),i.status,n)}function Bn(i){return"getResponseHeader"in i}function Od(i){var e=i.get("Content-Type");if(e===null)return null;try{return Cd.parse(e)}catch(t){throw new Error("Error parsing Content-Type '".concat(e,"': ").concat(t))}}function Ga(i,e){return fi.apply(this,arguments)}function fi(){return fi=R(function*(i,e){for(var t=0,r=null;t<i;)try{if(t>0){var n=1e3*Math.pow(2,t);T.log("network operation failed ".concat(t," times, retrying in ").concat(n,"ms...")),yield jr(n)}return yield e()}catch(a){if(a instanceof Vr)t+=1,r=a;else throw a}throw r}),fi.apply(this,arguments)}function kd(i,e,t){return e>4||i instanceof Vr&&!t||i.httpStatus&&Math.floor(i.httpStatus/100)===4&&i.httpStatus!==429||i.name==="AbortError"||i.name==="M_TOO_LARGE"?-1:wo(i,1e3*Math.pow(2,e))}var ct=(function(i){return i.Success="success",i.Failure="failure",i.Logout="logout",i})({}),Pd=500,Ad=60*1e3;class Ld{constructor(e){this.opts=e,c(this,"tokenRefreshPromise",void 0),c(this,"latestTokenRefreshExpiry",void 0)}prepareForRequest(){var e=this;return R(function*(){return yield e.refreshIfNeeded(),{accessToken:e.opts.accessToken,refreshToken:e.opts.refreshToken,expiry:e.latestTokenRefreshExpiry}})()}refreshIfNeeded(){var e=this;return R(function*(){if(e.tokenRefreshPromise)return e.tokenRefreshPromise;if(e.latestTokenRefreshExpiry){var t=e.latestTokenRefreshExpiry.getTime()-Date.now();t<=Pd&&(yield e._handleUnknownToken())}})()}handleUnknownToken(e,t){var r=this;return R(function*(){return r._handleUnknownToken(e,t)})()}_handleUnknownToken(e,t){var r=this;return R(function*(){if(e!=null&&e.expiry){var n=e.expiry.getTime()-Date.now();if(n>=Ad)return ct.Logout}if(!e||e?.accessToken===r.opts.accessToken){var a;(a=r.tokenRefreshPromise)!==null&&a!==void 0||(r.tokenRefreshPromise=r.doTokenRefresh(t));try{return yield r.tokenRefreshPromise}finally{r.tokenRefreshPromise=void 0}}return ct.Success})()}doTokenRefresh(e){var t=this;return R(function*(){if(!t.opts.refreshToken||!t.opts.tokenRefreshFunction){var r;return(r=t.opts.logger)===null||r===void 0||r.error("Unable to refresh token - no refresh token or refresh function"),ct.Logout}e&&e>1&&(yield jr(1e3*Math.min(32,2**e)));try{var n,a;(n=t.opts.logger)===null||n===void 0||n.debug("Attempting to refresh token");var{accessToken:s,refreshToken:o,expiry:l}=yield t.opts.tokenRefreshFunction(t.opts.refreshToken);return t.opts.accessToken=s,t.opts.refreshToken=o,t.latestTokenRefreshExpiry=l,(a=t.opts.logger)===null||a===void 0||a.debug("... token refresh complete, new token expiry:",l),ct.Success}catch(h){var d;if(h instanceof Rd||h instanceof ue){var u;return(u=t.opts.logger)===null||u===void 0||u.error("Failed to refresh token",h),ct.Logout}return(d=t.opts.logger)===null||d===void 0||d.warn("Failed to refresh token",h),ct.Failure}})()}}function $a(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(i);e&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(i,n).enumerable})),t.push.apply(t,r)}return t}function Wa(i){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?$a(Object(t),!0).forEach(function(r){c(i,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(t)):$a(Object(t)).forEach(function(r){Object.defineProperty(i,r,Object.getOwnPropertyDescriptor(t,r))})}return i}class Dd{constructor(e,t){var r;if(this.eventEmitter=e,this.opts=t,c(this,"abortController",new AbortController),c(this,"tokenRefresher",void 0),eo(t,["baseUrl","prefix"]),!t.onlyData)throw new Error("Constructing FetchHttpApi without `onlyData=true` is no longer supported.");t.useAuthorizationHeader=(r=t.useAuthorizationHeader)!==null&&r!==void 0?r:!0,this.tokenRefresher=new Ld(t)}abort(){this.abortController.abort(),this.abortController=new AbortController}fetch(e,t){return this.opts.fetchFn?this.opts.fetchFn(e,t):globalThis.fetch(e,t)}setIdBaseUrl(e){this.opts.idBaseUrl=e}idServerRequest(e,t,r,n,a){if(!this.opts.idBaseUrl)throw new Error("No identity server base URL set");var s=void 0,o=void 0;e===O.Get?s=r:o=r;var l=this.getUrl(t,s,n,this.opts.idBaseUrl),d={json:!0,headers:{}};return a&&(d.headers.Authorization="Bearer ".concat(a)),this.requestOtherUrl(e,l,o,d)}authedRequest(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},n=arguments.length>3?arguments[3]:void 0,a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{};return this.doAuthedRequest(1,e,t,r,n,a)}doAuthedRequest(e,t,r,n,a){var s=arguments,o=this;return R(function*(){var l=s.length>5&&s[5]!==void 0?s[5]:{},d=Br(l);d.abortSignal=l.abortSignal;var u=yield o.tokenRefresher.prepareForRequest();u.accessToken&&(o.opts.useAuthorizationHeader?(d.headers||(d.headers={}),d.headers.Authorization||(d.headers.Authorization="Bearer ".concat(u.accessToken)),n.access_token&&delete n.access_token):n.access_token||(n.access_token=u.accessToken));try{var h=yield o.request(t,r,n,a,d);return h}catch(E){if(!(E instanceof ue))throw E;if(E.errcode==="M_UNKNOWN_TOKEN"){var m=yield o.tokenRefresher.handleUnknownToken(u,e);if(m===ct.Success)return o.doAuthedRequest(e+1,t,r,n,a,l);if(m===ct.Failure)throw new _d(E);d!=null&&d.inhibitLogoutEmit||o.eventEmitter.emit(qa.SessionLoggedOut,E)}else E.errcode=="M_CONSENT_NOT_GIVEN"&&o.eventEmitter.emit(qa.NoConsent,E.message,E.data.consent_uri);throw E}})()}request(e,t,r,n,a){var s=this.getUrl(t,r,a?.prefix,a?.baseUrl);return this.requestOtherUrl(e,s,n,a)}requestOtherUrl(e,t,r){var n=arguments,a=this;return R(function*(){var s,o,l,d,u=n.length>3&&n[3]!==void 0?n[3]:{};if(u.json!==void 0&&u.rawResponseBody!==void 0)throw new Error("Invalid call to `FetchHttpApi` sets both `opts.json` and `opts.rawResponseBody`");var h=a.sanitizeUrlForLogs(t);(s=a.opts.logger)===null||s===void 0||s.debug("FetchHttpApi: --> ".concat(e," ").concat(h));var m=Object.assign({},u.headers||{}),E=!u.rawResponseBody&&u.json!==!1;E&&(m.Accept||(m.Accept="application/json"));var f=(o=u.localTimeoutMs)!==null&&o!==void 0?o:a.opts.localTimeoutMs,p=(l=u.keepAlive)!==null&&l!==void 0?l:!1,I=[a.abortController.signal];f!==void 0&&I.push(Fi(f)),u.abortSignal&&I.push(u.abortSignal);var S;u.json!==!1&&(r==null||(d=r.constructor)===null||d===void 0?void 0:d.name)===Object.name?(S=JSON.stringify(r),m["Content-Type"]||(m["Content-Type"]="application/json")):S=r;var{signal:g,cleanup:_}=Md(I),y="Authorization"in m?void 0:"no-cache",b,v=Date.now();try{var w;b=yield a.fetch(t,{signal:g,method:e,body:S,headers:m,mode:"cors",redirect:"follow",referrer:"",referrerPolicy:"no-referrer",cache:y,credentials:"omit",keepalive:p,priority:u.priority}),(w=a.opts.logger)===null||w===void 0||w.debug("FetchHttpApi: <-- ".concat(e," ").concat(h," [").concat(Date.now()-v,"ms ").concat(b.status,"]"))}catch(k){var C;throw(C=a.opts.logger)===null||C===void 0||C.debug("FetchHttpApi: <-- ".concat(e," ").concat(h," [").concat(Date.now()-v,"ms ").concat(k,"]")),k.name==="AbortError"?k:new Vr("fetch failed",k)}finally{_()}if(!b.ok)throw Co(b,yield b.text());return u.rawResponseBody?yield b.blob():E?yield b.json():yield b.text()})()}sanitizeUrlForLogs(e){try{var t;typeof e=="string"?t=new URL(e):t=e;var r=new URLSearchParams;for(var n of t.searchParams.keys())r.append(n,"xxx");var a=r.toString(),s=a?"?".concat(a):"";return t.origin+t.pathname+s}catch{return"??"}}getUrl(e,t,r,n){var a=n??this.opts.baseUrl,s=a.endsWith("/")?a.slice(0,-1):a,o=new URL(s+(r??this.opts.prefix)+e);if(this.opts.extraParams||t){var l=Wa(Wa({},this.opts.extraParams),t);ri(l,o.searchParams)}return o}}var ce=(function(i){return i.V1="/_matrix/client/v1",i.V3="/_matrix/client/v3",i.Unstable="/_matrix/client/unstable",i})({}),st=(function(i){return i.V2="/_matrix/identity/v2",i})({}),Tr=(function(i){return i.V1="/_matrix/media/v1",i.V3="/_matrix/media/v3",i})({}),Ud=1e3,Nd=0,jn,at=[],xd=function(){};function Ja(i,e){for(var t=arguments.length,r=new Array(t>2?t-2:0),n=2;n<t;n++)r[n-2]=arguments[n];e=e||0,e<0&&(e=0);var a=Date.now()+e,s=Nd++,o={runAt:a,func:i,params:r,key:s},l=Bd(at,function(d){return d.runAt-a});return at.splice(l,0,o),Bi(),s}function za(i){if(at.length!==0){var e;for(e=0;e<at.length;e++){var t=at[e];if(t.key==i){at.splice(e,1);break}}e===0&&Bi()}}function Bi(){jn&&globalThis.clearTimeout(jn);var i=at[0];if(i){var e=Date.now(),t=Math.min(i.runAt-e,Ud);jn=globalThis.setTimeout(Fd,t)}}function Fd(){for(var i=Date.now(),e=[];;){var t=at[0];if(!t||t.runAt>i)break;var r=at.shift();xd("runCallbacks: popping",r.key),e.push(r)}Bi();for(var n of e)try{n.func.apply(globalThis,n.params)}catch(a){T.error("Uncaught exception in callback function",a)}}function Bd(i,e){for(var t=0,r=i.length;t<r;){var n=t+r>>1,a=e(i[n]);a>0?r=n:t=n+1}return t}class jd extends Dd{constructor(){super(...arguments),c(this,"uploads",[])}uploadContent(e){var t,r,n,a,s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=(t=s.includeFilename)!==null&&t!==void 0?t:!0,l=(r=s.abortController)!==null&&r!==void 0?r:new AbortController,d=((n=s.type)!==null&&n!==void 0?n:e.type)||"application/octet-stream",u=(a=s.name)!==null&&a!==void 0?a:e.name,h={loaded:0,total:0,abortController:l},m=Promise.withResolvers();if(globalThis.XMLHttpRequest){var E=new globalThis.XMLHttpRequest,f=function(){E.abort(),m.reject(new Error("Timeout"))},p=Ja(f,3e4);E.onreadystatechange=function(){switch(E.readyState){case globalThis.XMLHttpRequest.DONE:za(p);try{if(E.status===0)throw new DOMException(E.statusText,"AbortError");if(!E.responseText)throw new Error("No response body.");E.status>=400?m.reject(Co(E,E.responseText)):m.resolve(JSON.parse(E.responseText))}catch(_){if(_.name==="AbortError"){m.reject(_);return}m.reject(new Vr("request failed",_))}break}},E.upload.onprogress=_=>{var y;za(p),h.loaded=_.loaded,h.total=_.total,p=Ja(f,3e4),(y=s.progressHandler)===null||y===void 0||y.call(s,{loaded:_.loaded,total:_.total})};var I=this.getUrl("/upload",void 0,Tr.V3);o&&u&&I.searchParams.set("filename",encodeURIComponent(u)),!this.opts.useAuthorizationHeader&&this.opts.accessToken&&I.searchParams.set("access_token",encodeURIComponent(this.opts.accessToken)),E.open(O.Post,I.href),this.opts.useAuthorizationHeader&&this.opts.accessToken&&E.setRequestHeader("Authorization","Bearer "+this.opts.accessToken),E.setRequestHeader("Content-Type",d),E.send(e),l.signal.addEventListener("abort",()=>{E.abort()})}else{var S={};o&&u&&(S.filename=u);var g={"Content-Type":d};this.authedRequest(O.Post,"/upload",S,e,{prefix:Tr.V3,headers:g,abortSignal:l.signal}).then(m.resolve,m.reject)}return h.promise=m.promise.finally(()=>{pn(this.uploads,_=>_===h)}),l.signal.addEventListener("abort",()=>{pn(this.uploads,_=>_===h),m.reject(new DOMException("Aborted","AbortError"))}),this.uploads.push(h),h.promise}cancelUpload(e){var t=this.uploads.find(r=>r.promise===e);return t?(t.abortController.abort(),!0):!1}getCurrentUploads(){return this.uploads}getContentUri(){return{base:this.opts.baseUrl,path:Tr.V3+"/upload",params:{access_token:this.opts.accessToken}}}}var Kd=360*60*1e3,Vd=30*1e3,qd=(function(i){return i.Stable="stable",i.Unstable="unstable",i})({});class Hd{constructor(e,t){var r=this;this.logger=e,this.http=t,c(this,"capabilities",void 0),c(this,"retryTimeout",void 0),c(this,"refreshTimeout",void 0),c(this,"fetchCapabilities",R(function*(){var n=yield r.http.authedRequest(O.Get,"/capabilities");return r.capabilities=n.capabilities,r.capabilities})),c(this,"poll",R(function*(){try{yield r.fetchCapabilities(),r.clearTimeouts(),r.refreshTimeout=setTimeout(r.poll,Kd),r.logger.debug("Fetched new server capabilities")}catch(a){r.clearTimeouts();var n=Math.floor(Vd+Math.random()*5e3);r.retryTimeout=setTimeout(r.poll,n),r.logger.warn("Failed to refresh capabilities: retrying in ".concat(n,"ms"),a)}}))}start(){this.poll().then()}stop(){this.clearTimeouts()}getCachedCapabilities(){return this.capabilities}clearTimeouts(){this.refreshTimeout&&(clearInterval(this.refreshTimeout),this.refreshTimeout=void 0),this.retryTimeout&&(clearTimeout(this.retryTimeout),this.retryTimeout=void 0)}}var Er=T.getChild("RoomStickyEvents"),ft=(function(i){return i.Update="RoomStickyEvents.Update",i})({});function Kn(i){if(typeof i!="string")throw new Error("Not a string");if(!i.startsWith("@"))throw new Error("Not a userId")}class kt extends fe{constructor(){super(...arguments),c(this,"stickyEventsMap",new Map),c(this,"unkeyedStickyEvents",new Set),c(this,"stickyEventTimer",void 0),c(this,"nextStickyEventExpiryTs",Number.MAX_SAFE_INTEGER),c(this,"cleanExpiredStickyEvents",()=>{var e=Date.now(),t=[];this.nextStickyEventExpiryTs=Number.MAX_SAFE_INTEGER;for(var[r,n]of this.stickyEventsMap.entries()){var a;for(var[s,[o,...l]]of n)e>=o.unstableStickyExpiresAt?(Er.debug("Expiring sticky event",o.getId()),t.push(o),this.stickyEventsMap.get(r).delete(s)):(this.stickyEventsMap.get(r).set(s,[o,...l.filter(u=>u.unstableStickyExpiresAt<=e)]),this.nextStickyEventExpiryTs=Math.min(this.nextStickyEventExpiryTs,o.unstableStickyExpiresAt));((a=this.stickyEventsMap.get(r))===null||a===void 0?void 0:a.size)===0&&this.stickyEventsMap.delete(r)}for(var d of this.unkeyedStickyEvents)e>=d.unstableStickyExpiresAt?(Er.debug("Expiring sticky event",d.getId()),this.unkeyedStickyEvents.delete(d),t.push(d)):this.nextStickyEventExpiryTs=Math.min(this.nextStickyEventExpiryTs,d.unstableStickyExpiresAt);t.length&&this.emit(ft.Update,[],[],t),this.scheduleStickyTimer()})}static sortStickyEvent(e,t){var r,n;if(t.getTs()!==e.getTs())return t.getTs()-e.getTs();if(((r=t.getId())!==null&&r!==void 0?r:"")>((n=e.getId())!==null&&n!==void 0?n:""))return 1;throw Error("Comparing two sticky events with the same event ID is not allowed.")}static stickyMapKey(e,t){return"".concat(e).concat(t)}*getStickyEvents(){yield*this.unkeyedStickyEvents;for(var e of this.stickyEventsMap.values())for(var t of e.values())yield t[0]}getKeyedStickyEvent(e,t,r){var n;return Kn(e),(n=this.stickyEventsMap.get(t))===null||n===void 0||(n=n.get(kt.stickyMapKey(r,e)))===null||n===void 0?void 0:n[0]}getUnkeyedStickyEvent(e,t){return[...this.unkeyedStickyEvents].filter(r=>r.getType()===t&&r.getSender()===e)}addStickyEvent(e){var t,r,n,a=e.getContent().msc4354_sticky_key;if(typeof a!="string"&&a!==void 0)throw new Error("".concat(e.getId()," is missing msc4354_sticky_key"));if(e.unstableStickyExpiresAt===void 0)throw new Error("".concat(e.getId()," is missing msc4354_sticky.duration_ms"));var s=e.getSender(),o=e.getType();if(Kn(s),e.unstableStickyExpiresAt<=Date.now())return Er.info("ignored sticky event with older expiration time than current time",a),{added:!1};if(!s.startsWith("@"))throw new Error("Expected sender to start with @");var l=e;if(a===void 0)return this.unkeyedStickyEvents.add(l),this.nextStickyEventExpiryTs=Math.min(e.unstableStickyExpiresAt,this.nextStickyEventExpiryTs),this.scheduleStickyTimer(),{added:!0};var d=kt.stickyMapKey(a,s),u=[l,...(t=(r=this.stickyEventsMap.get(o))===null||r===void 0?void 0:r.get(d))!==null&&t!==void 0?t:[]].sort(kt.sortStickyEvent);return this.stickyEventsMap.has(o)||this.stickyEventsMap.set(o,new Map),(n=this.stickyEventsMap.get(o))===null||n===void 0||n.set(d,u),this.nextStickyEventExpiryTs=Math.min(l.unstableStickyExpiresAt,this.nextStickyEventExpiryTs),this.scheduleStickyTimer(),{added:u[0]===l,prevEvent:u?.[1]}}addStickyEvents(e){var t=[],r=[];for(var n of e)try{var a=this.addStickyEvent(n);a.added&&(a.prevEvent?r.push({current:n,previous:a.prevEvent}):t.push(n))}catch(s){Er.warn("ignored invalid sticky event",s)}(t.length||r.length)&&this.emit(ft.Update,t,r,[]),this.scheduleStickyTimer()}scheduleStickyTimer(){this.stickyEventTimer&&(clearTimeout(this.stickyEventTimer),this.stickyEventTimer=void 0),this.nextStickyEventExpiryTs!==Number.MAX_SAFE_INTEGER&&(this.stickyEventTimer=setTimeout(this.cleanExpiredStickyEvents,this.nextStickyEventExpiryTs-Date.now()))}handleRedaction(e){var t=typeof e=="string"?e:e.getId();for(var r of this.unkeyedStickyEvents)if(r.getId()===t){this.unkeyedStickyEvents.delete(r),this.emit(ft.Update,[],[],[r]);return}if(typeof e!="string"&&!e.isRedacted()){var n,a,s=e.getContent().msc4354_sticky_key;if(typeof s!="string"&&s!==void 0)return;var o=e.getType(),l=e.getSender();Kn(l);var d=this.stickyEventsMap.get(o);if(!d)return;var u=kt.stickyMapKey(s,l),[h,...m]=(n=d.get(u))!==null&&n!==void 0?n:[];if(!h)return;Er.debug("Redaction for ".concat(t," under sticky key ").concat(s));var E=m.filter(I=>!I.isRedacted()).sort(kt.sortStickyEvent);(a=this.stickyEventsMap.get(o))===null||a===void 0||a.set(u,E),E.length?this.emit(ft.Update,[],[{previous:h,current:E[0]}],[]):(d.delete(u),d.size===0&&this.stickyEventsMap.delete(o),this.emit(ft.Update,[],[],[h]));return}for(var f of this.stickyEventsMap.values())for(var[p]of f.values())if(p.getId()===t)return this.handleRedaction(p)}clear(){this.stickyEventsMap.clear(),this.nextStickyEventExpiryTs=Number.MAX_SAFE_INTEGER,this.scheduleStickyTimer()}}function Ya(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(i);e&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(i,n).enumerable})),t.push.apply(t,r)}return t}function Sr(i){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?Ya(Object(t),!0).forEach(function(r){c(i,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(t)):Ya(Object(t)).forEach(function(r){Object.defineProperty(i,r,Object.getOwnPropertyDescriptor(t,r))})}return i}var Gd="10",$d=["1","2","3","4","5","6","7","8","9","10"],Wd=30,Q=(function(i){return i.Highlight="highlight",i.Total="total",i})({}),U=(function(i){return i.MyMembership="Room.myMembership",i.Tags="Room.tags",i.AccountData="Room.accountData",i.Receipt="Room.receipt",i.Name="Room.name",i.Redaction="Room.redaction",i.RedactionCancelled="Room.redactionCancelled",i.LocalEchoUpdated="Room.localEchoUpdated",i.Timeline="Room.timeline",i.TimelineReset="Room.timelineReset",i.TimelineRefresh="Room.TimelineRefresh",i.OldStateUpdated="Room.OldStateUpdated",i.CurrentStateUpdated="Room.CurrentStateUpdated",i.HistoryImportedWithinTimeline="Room.historyImportedWithinTimeline",i.UnreadNotifications="Room.UnreadNotifications",i.Summary="Room.Summary",i})({});class ji extends Ro{constructor(e,t,r){var n,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};super(),n=this,this.roomId=e,this.client=t,this.myUserId=r,this.opts=a,c(this,"reEmitter",void 0),c(this,"txnToEvent",new Map),c(this,"notificationCounts",{}),c(this,"bumpStamp",void 0),c(this,"threadNotifications",new Map),c(this,"cachedThreadReadReceipts",new Map),c(this,"oldestThreadedReceiptTs",1/0),c(this,"unthreadedReceipts",new Map),c(this,"timelineSets",void 0),c(this,"polls",new Map),c(this,"threadsTimelineSets",[]),c(this,"filteredTimelineSets",{}),c(this,"timelineNeedsRefresh",!1),c(this,"pendingEventList",void 0),c(this,"blacklistUnverifiedDevices",void 0),c(this,"selfMembership",void 0),c(this,"heroes",null),c(this,"getTypeWarning",!1),c(this,"membersPromise",void 0),c(this,"name",void 0),c(this,"normalizedName",void 0),c(this,"tags",{}),c(this,"accountData",new Map),c(this,"summary",null),c(this,"oldState",void 0),c(this,"currentState",void 0),c(this,"relations",void 0),c(this,"threads",new Map),c(this,"visibilityEvents",new Map),c(this,"roomReceipts",new cd(this)),c(this,"stickyEvents",new kt),c(this,"threadTimelineSetsPromise",null),c(this,"threadsReady",!1),c(this,"updateThreadRootEvents",(s,o,l)=>{if(s.length){var d;if(this.updateThreadRootEvent((d=this.threadsTimelineSets)===null||d===void 0?void 0:d[0],s,o,l),s.hasCurrentUserParticipated){var u;this.updateThreadRootEvent((u=this.threadsTimelineSets)===null||u===void 0?void 0:u[1],s,o,l)}}}),c(this,"updateThreadRootEvent",(s,o,l,d)=>{s&&o.rootEvent&&(d&&s.removeEvent(o.id),le.hasServerSideSupport?s.addLiveEvent(o.rootEvent,{duplicateStrategy:hn.Replace,fromCache:!1,roomState:this.currentState,addToState:!1}):s.addEventToTimeline(o.rootEvent,s.getLiveTimeline(),{toStartOfTimeline:l,addToState:!1}))}),c(this,"tryApplyRedaction",s=>{if(s.isRedaction()){var o=s.event.redacts,l=o?this.findEventById(o):void 0;if(o)try{this.stickyEvents.handleRedaction(l||o)}catch(f){T.error("Failed to handle redaction for sticky event",f)}l&&this.applyEventAsRedaction(s,l)}else if(s.getType()===M.RoomMember){var d=s.getContent().membership;if(d!==J.Ban&&!(d===J.Leave&&s.getStateKey()!==s.getSender()))return;var u=s.getContent()["org.matrix.msc4293.redact_events"];if(u!==!0)return;var h=this.getLiveTimeline().getState(z.Forward);if(!h.maySendRedactionForEvent(s,s.getSender()))return;var m=this.getTimelineSets().map(f=>f.getTimelines()).reduce((f,p)=>(f.push(...p),f),[]).map(f=>f.getEvents().filter(p=>p.getSender()===s.getStateKey())).reduce((f,p)=>(f.push(...p),p),[]);for(var E of m)this.applyEventAsRedaction(s,E)}}),this.setMaxListeners(100),this.reEmitter=new ir(this),a.pendingEventOrdering=a.pendingEventOrdering||xr.Chronological,this.name=e,this.normalizedName=e,this.relations=new bo(this.client,this),this.on(U.Receipt,this.onReceipt),this.reEmitter.reEmit(this.stickyEvents,[ft.Update]),this.timelineSets=[new br(this,a)],this.reEmitter.reEmit(this.getUnfilteredTimelineSet(),[U.Timeline,U.TimelineReset]),this.fixUpLegacyTimelineFields(),this.opts.pendingEventOrdering===xr.Detached&&(this.pendingEventList=[],this.client.store.getPendingEvents(this.roomId).then(s=>{var o=this.client.getEventMapper({decrypt:!1});s.forEach((function(){var l=R(function*(d){var u=o(d);yield t.decryptEventIfNeeded(u),u.setStatus(q.NOT_SENT),n.addPendingEvent(u,u.getTxnId())});return function(d){return l.apply(this,arguments)}})())})),this.opts.lazyLoadMembers?this.membersPromise=void 0:this.membersPromise=Promise.resolve(!1)}createThreadsTimelineSets(){var e=this;return R(function*(){var t;if(e.threadTimelineSetsPromise)return e.threadTimelineSetsPromise;if((t=e.client)!==null&&t!==void 0&&t.supportsThreads())try{e.threadTimelineSetsPromise=Promise.all([e.createThreadTimelineSet(),e.createThreadTimelineSet(Xe.My)]);var r=yield e.threadTimelineSetsPromise;return e.threadsTimelineSets[0]=r[0],e.threadsTimelineSets[1]=r[1],r}catch{return e.threadTimelineSetsPromise=null,null}return null})()}decryptCriticalEvents(){var e=this;return R(function*(){if(e.client.getCrypto()){var t=e.getEventReadUpTo(e.client.getUserId(),!0),r=e.getLiveTimeline().getEvents(),n=r.findIndex(s=>s.event.event_id===t),a=r.slice(n).reverse().map(s=>e.client.decryptEventIfNeeded(s));yield Promise.allSettled(a)}})()}decryptAllEvents(){var e=this;return R(function*(){if(e.client.getCrypto()){var t=e.getUnfilteredTimelineSet().getLiveTimeline().getEvents().slice(0).reverse().map(r=>e.client.decryptEventIfNeeded(r));yield Promise.allSettled(t)}})()}getCreator(){var e,t=this.currentState.getStateEvents(M.RoomCreate,"");return(e=t?.getSender())!==null&&e!==void 0?e:null}getVersion(){return this.currentState.getRoomVersion()}getRecommendedVersion(){var e=this;return R(function*(){var t={};try{t=yield e.client.getCapabilities()}catch{}var r=t["m.room_versions"];if(!r){r={default:Gd,available:{}};for(var n of $d)r.available[n]=qd.Stable}var a=e.checkVersionAgainstCapability(r);if(a.urgent&&a.needsUpgrade){T.warn("Refreshing room version capability because the server looks to be supporting a newer room version we don't know about.");try{t=yield e.client.fetchCapabilities()}catch(s){T.warn("Failed to refresh room version capabilities",s)}if(r=t["m.room_versions"],r)a=e.checkVersionAgainstCapability(r);else return T.warn("No room version capability - assuming upgrade required."),a}return a})()}checkVersionAgainstCapability(e){var t=this.getVersion();T.log("[".concat(this.roomId,"] Current version: ").concat(t)),T.log("[".concat(this.roomId,"] Version capability: "),e);var r={version:t,needsUpgrade:!1,urgent:!1};if(t===e.default)return r;var n=Object.keys(e.available).filter(a=>e.available[a]==="stable");return n.includes(t)||(r.version=e.default,r.needsUpgrade=!0,r.urgent=!!this.getVersion().match(/^[0-9]+[0-9.]*$/g),r.urgent?T.warn("URGENT upgrade required on ".concat(this.roomId)):T.warn("Non-urgent upgrade required on ".concat(this.roomId))),r}userMayUpgradeRoom(e){return this.currentState.maySendStateEvent(M.RoomTombstone,e)}getPendingEvents(){if(!this.pendingEventList)throw new Error("Cannot call getPendingEvents with pendingEventOrdering == "+this.opts.pendingEventOrdering);return this.pendingEventList}removePendingEvent(e){if(!this.pendingEventList)throw new Error("Cannot call removePendingEvent with pendingEventOrdering == "+this.opts.pendingEventOrdering);var t=pn(this.pendingEventList,function(r){return r.getId()==e},!1);return this.savePendingEvents(),t}hasPendingEvent(e){var t,r;return(t=(r=this.pendingEventList)===null||r===void 0?void 0:r.some(n=>n.getId()===e))!==null&&t!==void 0?t:!1}getPendingEvent(e){var t,r;return(t=(r=this.pendingEventList)===null||r===void 0?void 0:r.find(n=>n.getId()===e))!==null&&t!==void 0?t:null}getLiveTimeline(){return this.getUnfilteredTimelineSet().getLiveTimeline()}get timeline(){return this.getLiveTimeline().getEvents()}getLastActiveTimestamp(){var e=this.getLiveTimeline(),t=e.getEvents();if(t.length){var r=t[t.length-1];return r.getTs()}else return Number.MIN_SAFE_INTEGER}getLastLiveEvent(){var e,t,r=this.getLiveTimeline().getEvents(),n=r[r.length-1],a=this.getLastThread();if(!a)return n;var s=a.events[a.events.length-1];return((e=n?.getTs())!==null&&e!==void 0?e:0)>((t=s?.getTs())!==null&&t!==void 0?t:0)?n:s}getLastThread(){return this.getThreads().reduce((e,t)=>{var r,n;if(!e)return t;var a=t.events[t.events.length-1],s=e.events[e.events.length-1];return((r=a?.getTs())!==null&&r!==void 0?r:0)>=((n=s?.getTs())!==null&&n!==void 0?n:0)?t:e},void 0)}getMyMembership(){var e;return(e=this.selfMembership)!==null&&e!==void 0?e:J.Leave}getDMInviter(){var e=this.getMember(this.myUserId);if(e)return e.getDMInviter();if(this.selfMembership===J.Invite){var t=this.getInvitedAndJoinedMemberCount();if(t===2){var r;return(r=this.heroes)===null||r===void 0||(r=r[0])===null||r===void 0?void 0:r.userId}}}guessDMUserId(){var e=this.getMember(this.myUserId);if(e){var t=e.getDMInviter();if(t)return t}if(Array.isArray(this.heroes)&&this.heroes.length)return this.heroes[0].userId;var r=this.currentState.getMembers(),n=r.find(a=>a.userId!==this.myUserId);return n?n.userId:this.myUserId}getFunctionalMembers(){var e=this.currentState.getStateEvents(Pl.name,"");return Array.isArray(e?.getContent().service_members)?e.getContent().service_members:[]}getAvatarFallbackMember(){var e,t=this.getFunctionalMembers(),r=0;if(this.getMembers().forEach(p=>{p.membership!=="join"&&p.membership!=="invite"||t.includes(p.userId)||r++}),!(r>2)){var n=(e=this.heroes)===null||e===void 0?void 0:e.filter(p=>!t.includes(p.userId)),a=Array.isArray(n)&&n.length;if(a){for(var s of n)if(s.fromMSC4186){var l=new yn(this.roomId,s.userId);return l.setMembershipEvent(new Ge({event_id:"$"+this.roomId+s.userId+new Date().getTime(),type:M.RoomMember,state_key:s.userId,content:{displayname:s.displayName,avatar_url:s.avatarUrl}})),l}else{var o=this.getMember(s.userId);if(o)return o}var d=n.map(p=>this.getMember(p.userId)).find(p=>!!p);if(d)return d}var u=this.getMembers(),h=u?.filter(p=>!t.includes(p.userId));if(h.length<=2){var m=h.find(p=>p.userId!==this.myUserId);if(m)return m}if(a){var E=n.map(p=>this.client.getUser(p.userId)).find(p=>!!p);if(E){var f=new yn(this.roomId,E.userId);return f.user=E,f}}}}updateMyMembership(e){var t=this.selfMembership;this.selfMembership=e,t!==e&&(e===J.Leave&&this.cleanupAfterLeaving(),this.emit(U.MyMembership,this,e,t))}loadMembersFromServer(){var e=this;return R(function*(){var t=e.client.store.getSyncToken(),r=yield e.client.members(e.roomId,void 0,J.Leave,t??void 0);return r.chunk})()}loadMembers(){var e=this;return R(function*(){var t=!1,r=yield e.client.store.getOutOfBandMembers(e.roomId);(r===null||e.hasEncryptionStateEvent())&&(t=!0,r=yield e.loadMembersFromServer(),T.log("LL: got ".concat(r.length," ")+"members from server for room ".concat(e.roomId)));var n=r.filter(He).map(e.client.getEventMapper());return{memberEvents:n,fromServer:t}})()}membersLoaded(){return this.opts.lazyLoadMembers?this.currentState.outOfBandMembersReady():!0}loadMembersIfNeeded(){if(this.membersPromise)return this.membersPromise;this.currentState.markOutOfBandMembersStarted();var e=this.loadMembers().then(t=>(this.currentState.setOutOfBandMembers(t.memberEvents),this.recalculate(),t.fromServer)).catch(t=>{throw this.membersPromise=void 0,this.currentState.markOutOfBandMembersFailed(),t});return e.then(t=>{if(t){var r=this.currentState.getMembers().filter(a=>a.isOutOfBand()).map(a=>{var s;return(s=a.events.member)===null||s===void 0?void 0:s.event});T.log("LL: telling store to write ".concat(r.length)+" members for room ".concat(this.roomId));var n=this.client.store;return n.setOutOfBandMembers(this.roomId,r).catch(a=>{T.log("LL: storing OOB room members failed, oh well",a)})}}).catch(t=>{T.error(t)}),this.membersPromise=e,this.membersPromise}clearLoadedMembersIfNeeded(){var e=this;return R(function*(){e.opts.lazyLoadMembers&&e.membersPromise&&(yield e.loadMembersIfNeeded(),yield e.client.store.clearOutOfBandMembers(e.roomId),e.currentState.clearOutOfBandMembers(),e.membersPromise=void 0)})()}cleanupAfterLeaving(){this.clearLoadedMembersIfNeeded().catch(e=>{T.error("error after clearing loaded members from "+"room ".concat(this.roomId," after leaving")),T.log(e)})}refreshLiveTimeline(){var e=this;return R(function*(){var t=e.getLiveTimeline(),r=t.getPaginationToken(N.FORWARDS),n=t.getPaginationToken(N.BACKWARDS),a=t.getEvents(),s=a[a.length-1];T.log("[refreshLiveTimeline for ".concat(e.roomId,"] at ")+"mostRecentEventInTimeline=".concat(s&&s.getId()," ")+"liveTimelineBefore=".concat(t.toString()," ")+"forwardPaginationToken=".concat(r," ")+"backwardPaginationToken=".concat(n));var o=e.getUnfilteredTimelineSet(),l=null;s?(e.resetLiveTimeline(null,null),e.emit(U.TimelineRefresh,e,o),l=yield e.client.getEventTimeline(o,s.getId())):l=yield e.client.getLatestTimeline(o);var d=o.getLiveTimeline();!d||d.getPaginationToken(z.Forward)===null&&d.getPaginationToken(z.Backward)===null&&d.getEvents().length===0?(T.log("[refreshLiveTimeline for ".concat(e.roomId,"] using our new live timeline")),l.setPaginationToken(r,N.FORWARDS),o.setLiveTimeline(l),e.fixUpLegacyTimelineFields()):T.log("[refreshLiveTimeline for ".concat(e.roomId,"] `/sync` or some other request beat us to creating a new ")+"live timeline after we reset it. We'll use that instead since any events in the scrollback from this timeline will include the history."),e.setTimelineNeedsRefresh(!1),e.emit(U.TimelineRefresh,e,o)})()}resetLiveTimeline(e,t){for(var r of this.timelineSets)r.resetLiveTimeline(e??void 0,t??void 0);for(var n of this.threads.values())n.resetLiveTimeline(e,t);this.fixUpLegacyTimelineFields()}fixUpLegacyTimelineFields(){var e=this.oldState,t=this.currentState;this.oldState=this.getLiveTimeline().getState(N.BACKWARDS),this.currentState=this.getLiveTimeline().getState(N.FORWARDS),e!==this.oldState&&this.emit(U.OldStateUpdated,this,e,this.oldState),t!==this.currentState&&(this.emit(U.CurrentStateUpdated,this,t,this.currentState),this.reEmitter.stopReEmitting(t,[X.Events,X.Members,X.NewMember,X.Update,X.Marker,de.New,de.Update,de.Destroy,de.LivenessChange]),this.reEmitter.reEmit(this.currentState,[X.Events,X.Members,X.NewMember,X.Update,X.Marker,de.New,de.Update,de.Destroy,de.LivenessChange]))}onReceipt(e){this.hasEncryptionStateEvent()&&this.clearNotificationsOnReceipt(e)}clearNotificationsOnReceipt(e){var t=[],r=!1,n=e.getContent();for(var a of Object.values(n))for(var[s,o]of Object.entries(a))if(ki(s)&&o){for(var[l,d]of Object.entries(o))if(!(!d||typeof d!="object")){var u=d;l===this.client.getUserId()&&(u.thread_id===void 0?r=!0:typeof u.thread_id=="string"&&t.push(u.thread_id))}}r&&(t=this.getThreads().filter(b=>this.getThreadUnreadNotificationCount(b.id,Q.Total)>0||this.getThreadUnreadNotificationCount(b.id,Q.Highlight)>0).map(b=>b.id),t.push("main"));for(var h of t){var m,E=20,f=h==="main"?this.getLiveTimeline():(m=this.getThread(h))===null||m===void 0?void 0:m.liveTimeline;if(!f){T.warn("Couldn't find timeline for thread ID ".concat(h," in room ").concat(this.roomId));continue}for(var p=f.getEvents(),I=0,S=p.length-1;S>=0;S--){var g;if(S===p.length-E)return;var _=p[S];if(this.hasUserReadEvent(this.client.getUserId(),_.getId()))break;var y=this.client.getPushActionsForEvent(_);I+=y!=null&&(g=y.tweaks)!==null&&g!==void 0&&g.highlight?1:0}h==="main"?this.setUnreadNotificationCount(Q.Highlight,I):this.setThreadUnreadNotificationCount(h,Q.Highlight,I)}}getTimelineSets(){return this.timelineSets}getUnfilteredTimelineSet(){return this.timelineSets[0]}getTimelineForEvent(e){var t=this.findEventById(e),r=this.findThreadForEvent(t);return r?r.timelineSet.getTimelineForEvent(e):this.getUnfilteredTimelineSet().getTimelineForEvent(e)}addTimeline(){return this.getUnfilteredTimelineSet().addTimeline()}setTimelineNeedsRefresh(e){this.timelineNeedsRefresh=e}getTimelineNeedsRefresh(){return this.timelineNeedsRefresh}findEventById(e){var t=this.getUnfilteredTimelineSet().findEventById(e);if(!t)for(var r=this.getThreads(),n=0;n<r.length;n++){var a=r[n];if(t=a.findEventById(e),t)return t}return t}getUnreadNotificationCount(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Q.Total,t=this.getRoomUnreadNotificationCount(e);for(var r of this.threadNotifications.values()){var n;t+=(n=r[e])!==null&&n!==void 0?n:0}return t}getUnreadCountForEventContext(){var e,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Q.Total,r=arguments.length>1?arguments[1]:void 0,n=!!r.threadRootId&&!r.isThreadRoot;return(e=n?this.getThreadUnreadNotificationCount(r.threadRootId,t):this.getRoomUnreadNotificationCount(t))!==null&&e!==void 0?e:0}getRoomUnreadNotificationCount(){var e,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Q.Total;return(e=this.notificationCounts[t])!==null&&e!==void 0?e:0}getThreadUnreadNotificationCount(e){var t,r,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Q.Total;return(t=(r=this.threadNotifications.get(e))===null||r===void 0?void 0:r[n])!==null&&t!==void 0?t:0}hasThreadUnreadNotification(){for(var e of this.threadNotifications.values()){var t,r;if(((t=e.highlight)!==null&&t!==void 0?t:0)>0||((r=e.total)!==null&&r!==void 0?r:0)>0)return!0}return!1}setThreadUnreadNotificationCount(e,t,r){var n,a,s=Sr({highlight:(n=this.threadNotifications.get(e))===null||n===void 0?void 0:n.highlight,total:(a=this.threadNotifications.get(e))===null||a===void 0?void 0:a.total},{[t]:r});this.threadNotifications.set(e,s),this.emit(U.UnreadNotifications,s,e)}get threadsAggregateNotificationType(){var e=null;for(var t of this.threadNotifications.values()){var r,n;if(((r=t.highlight)!==null&&r!==void 0?r:0)>0)return Q.Highlight;((n=t.total)!==null&&n!==void 0?n:0)>0&&!e&&(e=Q.Total)}return e}resetThreadUnreadNotificationCountFromSync(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],t=this.hasEncryptionStateEvent();for(var[r,n]of this.threadNotifications)e.includes(r)||(n.total=0,t||(n.highlight=0));this.emit(U.UnreadNotifications)}setBumpStamp(e){this.bumpStamp=e}getBumpStamp(){return this.bumpStamp}setUnreadNotificationCount(e,t){this.notificationCounts[e]=t,this.emit(U.UnreadNotifications,this.notificationCounts)}setUnread(e,t){return this.setUnreadNotificationCount(e,t)}setSummary(e){var t,r=(t=e["m.heroes"])===null||t===void 0?void 0:t.map(s=>({userId:s,fromMSC4186:!1})),n=e["m.joined_member_count"],a=e["m.invited_member_count"];Number.isInteger(n)&&this.currentState.setJoinedMemberCount(n),Number.isInteger(a)&&this.currentState.setInvitedMemberCount(a),Array.isArray(r)&&(this.heroes=r.filter(s=>s.userId!=this.myUserId)),this.emit(U.Summary,e)}setMSC4186SummaryData(e,t,r){e&&(this.heroes=e.filter(n=>n.user_id!==this.myUserId).map(n=>({userId:n.user_id,displayName:n.displayname,avatarUrl:n.avatar_url,fromMSC4186:!0}))),t!==void 0&&Number.isInteger(t)&&this.currentState.setJoinedMemberCount(t),r!==void 0&&Number.isInteger(r)&&this.currentState.setInvitedMemberCount(r),this.emit(U.Summary,{"m.heroes":this.heroes?this.heroes.map(n=>n.userId):[],"m.joined_member_count":t,"m.invited_member_count":r})}setBlacklistUnverifiedDevices(e){this.blacklistUnverifiedDevices=e}getBlacklistUnverifiedDevices(){return this.blacklistUnverifiedDevices===void 0?null:this.blacklistUnverifiedDevices}getAvatarUrl(e,t,r,n){var a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,s=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!1,o=this.getMxcAvatarUrl();return!o&&!a?null:o?Ni(e,o,t,r,n,void 0,void 0,s):null}getMxcAvatarUrl(){var e,t=(e=this.currentState.getStateEvents(M.RoomAvatar,""))===null||e===void 0?void 0:e.getContent().url;return t&&typeof t=="string"?t:null}getCanonicalAlias(){var e,t=(e=this.currentState.getStateEvents(M.RoomCanonicalAlias,""))===null||e===void 0?void 0:e.getContent().alias;return t&&typeof t=="string"?t:null}getAltAliases(){var e,t=(e=this.currentState.getStateEvents(M.RoomCanonicalAlias,""))===null||e===void 0?void 0:e.getContent().alt_aliases;return Array.isArray(t)?t.filter(r=>typeof r=="string"):[]}addEventsToTimeline(e,t,r,n,a){n.getTimelineSet().addEventsToTimeline(e,t,r,n,a)}getThread(e){var t;return(t=this.threads.get(e))!==null&&t!==void 0?t:null}getThreads(){return Array.from(this.threads.values())}getMember(e){return this.currentState.getMember(e)}getMembers(){return this.currentState.getMembers()}getJoinedMembers(){return this.getMembersWithMembership(J.Join)}getJoinedMemberCount(){return this.currentState.getJoinedMemberCount()}getInvitedMemberCount(){return this.currentState.getInvitedMemberCount()}getInvitedAndJoinedMemberCount(){return this.getInvitedMemberCount()+this.getJoinedMemberCount()}getMembersWithMembership(e){return this.currentState.getMembers().filter(function(t){return t.membership===e})}getEncryptionTargetMembers(){var e=this;return R(function*(){yield e.loadMembersIfNeeded();var t=e.getMembersWithMembership(J.Join);return e.shouldEncryptForInvitedMembers()&&(t=t.concat(e.getMembersWithMembership(J.Invite))),t})()}shouldEncryptForInvitedMembers(){var e,t=this.currentState.getStateEvents(M.RoomHistoryVisibility,"");return(t==null||(e=t.getContent())===null||e===void 0?void 0:e.history_visibility)!=="joined"}getDefaultRoomName(e){return this.calculateRoomName(e,!0)}hasMembershipState(e,t){var r=this.getMember(e);return r?r.membership===t:!1}getOrCreateFilteredTimelineSet(e){var{prepopulateTimeline:t=!0,useSyncEvents:r=!0,pendingEvents:n=!0}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(this.filteredTimelineSets[e.filterId])return this.filteredTimelineSets[e.filterId];var a=Object.assign({filter:e,pendingEvents:n},this.opts),s=new br(this,a);this.reEmitter.reEmit(s,[U.Timeline,U.TimelineReset]),r&&(this.filteredTimelineSets[e.filterId]=s,this.timelineSets.push(s));var o=this.getLiveTimeline();if(t){o.getEvents().forEach(function(u){s.addLiveEvent(u,{addToState:!1})});for(var l=o;l.getNeighbouringTimeline(N.BACKWARDS);)l=l.getNeighbouringTimeline(N.BACKWARDS);s.getLiveTimeline().setPaginationToken(l.getPaginationToken(N.BACKWARDS),N.BACKWARDS)}else if(r){var d=o.getPaginationToken(z.Forward);s.getLiveTimeline().setPaginationToken(d,z.Backward)}return s}getThreadListFilter(){var e=arguments,t=this;return R(function*(){var r=e.length>0&&e[0]!==void 0?e[0]:Xe.All,n=t.client.getUserId(),a=new xe(n),s={room:{timeline:{[kr.name]:[re.name]}}};r===Xe.My&&(s.room.timeline[Or.name]=[n]),a.setDefinition(s);var o=yield t.client.getOrCreateFilter("THREAD_PANEL_".concat(t.roomId,"_").concat(r),a);return a.filterId=o,a})()}createThreadTimelineSet(e){var t=this;return R(function*(){var r;if(le.hasServerSideListSupport)r=new br(t,Sr(Sr({},t.opts),{},{pendingEvents:!1}),void 0,void 0,e??Xe.All),t.reEmitter.reEmit(r,[U.Timeline,U.TimelineReset]);else if(le.hasServerSideSupport){var n=yield t.getThreadListFilter(e);r=t.getOrCreateFilteredTimelineSet(n,{prepopulateTimeline:!1,useSyncEvents:!1,pendingEvents:!1})}else r=new br(t,{pendingEvents:!1}),Array.from(t.threads).forEach(a=>{var[,s]=a;if(s.length!==0){var o=s.timeline.some(l=>l.getSender()===t.client.getUserId());(e!==Xe.My||o)&&r.getLiveTimeline().addEvent(s.rootEvent,{toStartOfTimeline:!1,addToState:!1})}});return r})()}processThreadRoots(e,t){if(this.client.supportsThreads())for(var r of e)N.setEventMetadata(r,this.currentState,t),this.getThread(r.getId())||this.createThread(r.getId(),r,[],t)}fetchRoomThreads(){var e=this;return R(function*(){if(!(e.threadsReady||!e.client.supportsThreads())){if(le.hasServerSideListSupport)yield Promise.all([e.fetchRoomThreadList(Xe.All),e.fetchRoomThreadList(Xe.My)]);else{var t=yield e.getThreadListFilter(),{chunk:r}=yield e.client.createMessagesRequest(e.roomId,"",Number.MAX_SAFE_INTEGER,z.Backward,t);if(!r.length)return;var n=r.map(e.client.getEventMapper()).sort((m,E)=>{var f=m.getServerAggregatedRelation(re.name),p=E.getServerAggregatedRelation(re.name);return f.latest_event.origin_server_ts-p.latest_event.origin_server_ts}),a,s=e.getLiveTimeline().getState(N.FORWARDS);for(var o of n){var l,d={duplicateStrategy:hn.Ignore,fromCache:!1,addToState:!1,roomState:s};(l=e.threadsTimelineSets[0])===null||l===void 0||l.addLiveEvent(o,d);var u=o.getServerAggregatedRelation(re.name);if(u!=null&&u.current_user_participated){var h;(h=e.threadsTimelineSets[1])===null||h===void 0||h.addLiveEvent(o,d),a=o}}e.processThreadRoots(n,!0),e.client.decryptEventIfNeeded(n[n.length-1]),a&&e.client.decryptEventIfNeeded(a)}e.on(Ce.NewReply,e.onThreadReply),e.on(Ce.Update,e.onThreadUpdate),e.on(Ce.Delete,e.onThreadDelete),e.threadsReady=!0}})()}processPollEvents(e){var t=this;return R(function*(){for(var r of e)try{if(!r.isEncrypted()&&!ud(r))continue;yield t.client.decryptEventIfNeeded(r),t.processPollEvent(r)}catch(n){T.warn("Error processing poll event",r.getId(),n)}})()}processPollEvent(e){var t=this;return R(function*(){if(e.isDecryptionFailure()){e.once(ee.Decrypted,s=>{t.processPollEvent(s)});return}if(Me.M_POLL_START.matches(e.getType())){try{var r=new dd(e,t.client,t);t.polls.set(e.getId(),r),t.emit(wt.New,r),e.once(ee.BeforeRedaction,s=>{t.polls.delete(s.getId())})}catch{}return}var n=e.relationEventId;if(n&&t.polls.has(n)){var a=t.polls.get(n);a?.onNewRelation(e)}})()}fetchRoomThreadList(e){var t=this;return R(function*(){if(t.client.supportsThreads()&&t.threadsTimelineSets.length!==0){var r=e===Xe.My?t.threadsTimelineSets[1]:t.threadsTimelineSets[0],{chunk:n,end:a}=yield t.client.createThreadListMessagesRequest(t.roomId,null,void 0,z.Backward,r.threadListType,r.getFilter());if(r.getLiveTimeline().setPaginationToken(a??null,z.Backward),!!n.length){var s=n.map(t.client.getEventMapper());t.processThreadRoots(s,!0);var o=t.getLiveTimeline().getState(N.FORWARDS);for(var l of s)r.addLiveEvent(l,{duplicateStrategy:hn.Replace,fromCache:!1,roomState:o,addToState:!1})}}})()}onThreadUpdate(e){this.updateThreadRootEvents(e,!1,!1)}onThreadReply(e){this.updateThreadRootEvents(e,!1,!0)}onThreadDelete(e){var t;this.threads.delete(e.id);var r=this.getTimelineForEvent(e.id),n=r==null||(t=r.getEvents())===null||t===void 0?void 0:t.find(s=>s.getId()===e.id);n?e.clearEventMetadata(n):T.debug("onThreadDelete: Could not find root event in room timeline");for(var a of this.threadsTimelineSets)a.removeEvent(e.id)}removeFilteredTimelineSet(e){var t=this.filteredTimelineSets[e.filterId];delete this.filteredTimelineSets[e.filterId];var r=this.timelineSets.indexOf(t);r>-1&&this.timelineSets.splice(r,1)}eventShouldLiveIn(e,t,r){var n;if(!((n=this.client)!==null&&n!==void 0&&n.supportsThreads()))return{shouldLiveInRoom:!0,shouldLiveInThread:!1};if(e.isThreadRoot||r!=null&&r.has(e.getId()))return{shouldLiveInRoom:!0,shouldLiveInThread:!0,threadId:e.getId()};var a=e.isRelation(re.name),s=e.getAssociatedId(),o=e.threadRootId;if(s&&!a&&(o===s||r!=null&&r.has(s)))return{shouldLiveInRoom:!0,shouldLiveInThread:!1};var l;if(s){var d;l=(d=this.findEventById(s))!==null&&d!==void 0?d:t?.find(u=>u.getId()===s)}return l&&!a?this.eventShouldLiveIn(l,t,r):o!=null?{shouldLiveInRoom:!1,shouldLiveInThread:!0,threadId:o}:!s||e.replyEventId?{shouldLiveInRoom:!0,shouldLiveInThread:!1}:{shouldLiveInRoom:!1,shouldLiveInThread:!1}}findThreadForEvent(e){if(!e)return null;var{threadId:t}=this.eventShouldLiveIn(e);return t?this.getThread(t):null}addThreadedEvents(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,n=this.getThread(e);if(n)n.addEvents(t,r);else{var a,s=(a=this.findEventById(e))!==null&&a!==void 0?a:t.find(o=>o.getId()===e);this.createThread(e,s,t,r)}}processThreadedEvents(e,t){e.forEach(this.tryApplyRedaction);var r={};for(var n of e){var a,{threadId:s,shouldLiveInThread:o}=this.eventShouldLiveIn(n);o&&!r[s]&&(r[s]=[]),(a=r[s])===null||a===void 0||a.push(n)}Object.entries(r).map(l=>{var[d,u]=l;return this.addThreadedEvents(d,u,t)})}createThread(e,t){var r,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[],a=arguments.length>3?arguments[3]:void 0;if(this.threads.has(e))return this.threads.get(e);if(t){var s=this.relations.getAllChildEventsForEvent(t.getId());s!=null&&s.length&&(n=n.concat(s.filter(l=>!l.isRelation(se.Replace))))}var o=new le(e,t,{room:this,client:this.client,pendingEventOrdering:this.opts.pendingEventOrdering,receipts:(r=this.cachedThreadReadReceipts.get(e))!==null&&r!==void 0?r:[]});return this.reEmitter.reEmit(o,[Ce.Delete,Ce.Update,Ce.NewReply,U.Timeline,U.TimelineReset]),this.cachedThreadReadReceipts.delete(e),this.threads.set(o.id,o),o.addEvents(n,!1),this.threadsReady&&o.initialEventsFetched&&this.updateThreadRootEvents(o,a,!1),this.emit(Ce.New,o,a),o}applyEventAsRedaction(e,t){var r=t.threadRootId;if(t.makeRedacted(e,this),t.isState()){var n=this.currentState.getStateEvents(t.getType(),t.getStateKey());n?.getId()===t.getId()&&this.currentState.setStateEvents([t])}this.emit(U.Redaction,e,this,r),this.visibilityEvents.delete(t.getId()),t.isVisibilityEvent()&&this.redactVisibilityChangeEvent(e)}processLiveEvent(e){this.tryApplyRedaction(e),e.isVisibilityEvent()&&this.applyNewVisibilityEvent(e),this.applyPendingVisibilityEvents(e);var t=e.getUnsigned().transaction_id;if(!t&&e.getSender()===this.myUserId){for(var[r,n]of this.txnToEvent)if(n.getId()===e.getId()){T.debug("processLiveEvent: found sent event without txn ID: ",r,e.getId());var a=e.getUnsigned();a.transaction_id=r,e.setUnsigned(a);break}}}addLiveEvent(e,t){var{duplicateStrategy:r,timelineWasEmpty:n,fromCache:a,addToState:s}=t;for(var o of this.timelineSets)o.addLiveEvent(e,{duplicateStrategy:r,fromCache:a,timelineWasEmpty:n,addToState:s});e.sender&&e.getType()!==M.RoomRedaction&&this.addReceipt(_o(e.sender.userId,e,we.Read),!0)}addPendingEvent(e,t){if(e.status!==q.SENDING&&e.status!==q.NOT_SENT)throw new Error("addPendingEvent called on an event with status "+e.status);if(this.txnToEvent.get(t))throw new Error("addPendingEvent called on an event with known txnId "+t);if(N.setEventMetadata(e,this.getLiveTimeline().getState(N.FORWARDS),!1),this.txnToEvent.set(t,e),this.pendingEventList){if(this.pendingEventList.some(s=>s.status===q.NOT_SENT)&&(T.warn("Setting event as NOT_SENT due to messages in the same state"),e.setStatus(q.NOT_SENT)),this.pendingEventList.push(e),this.savePendingEvents(),e.isRelation()&&this.aggregateNonLiveRelation(e),e.isRedaction()){var r=e.event.redacts,n=this.pendingEventList.find(s=>s.getId()===r);!n&&r&&(n=this.findEventById(r)),n&&(n.markLocallyRedacted(e),this.emit(U.Redaction,e,this,n.threadRootId))}}else for(var a of this.timelineSets)a.getFilter()?a.getFilter().filterRoomTimeline([e]).length&&a.addEventToTimeline(e,a.getLiveTimeline(),{toStartOfTimeline:!1,addToState:!1}):a.addEventToTimeline(e,a.getLiveTimeline(),{toStartOfTimeline:!1,addToState:!1});this.emit(U.LocalEchoUpdated,e,this)}savePendingEvents(){if(this.pendingEventList){var e=this.pendingEventList.map(t=>Sr(Sr({},t.event),{},{txn_id:t.getTxnId()})).filter(t=>{var r=t.type===M.RoomMessageEncrypted,n=this.hasEncryptionStateEvent();return r||!n});this.client.store.setPendingEvents(this.roomId,e)}}aggregateNonLiveRelation(e){this.relations.aggregateChildEvent(e)}getEventForTxnId(e){return this.txnToEvent.get(e)}handleRemoteEcho(e,t){var r=t.getId(),n=e.getId(),a=t.status;T.debug("Got remote echo for event ".concat(r," -> ").concat(n," old status ").concat(a)),this.txnToEvent.delete(e.getUnsigned().transaction_id),this.pendingEventList&&this.removePendingEvent(r),t.handleRemoteEcho(e.event);var{shouldLiveInRoom:s,threadId:o}=this.eventShouldLiveIn(e),l=o?this.getThread(o):null;if(l?.setEventMetadata(t),l?.timelineSet.handleRemoteEcho(t,r,n),s)for(var d of this.timelineSets)d.handleRemoteEcho(t,r,n);this.emit(U.LocalEchoUpdated,t,this,r,a)}updatePendingEvent(e,t,r){if(T.log("setting pendingEvent status to ".concat(t," in ").concat(e.getRoomId()," ")+"event ID ".concat(e.getId()," -> ").concat(r)),t==q.SENT&&!r)throw new Error("updatePendingEvent called with status=SENT, but no new event id");if(t==q.SENT){var n=this.getTimelineForEvent(r);if(n){var a=this.findEventById(r),s=a?.getUnsigned().transaction_id;if(!s&&a){var o=a.getUnsigned();o.transaction_id=e.getTxnId(),a.setUnsigned(o),this.removeEvent(a.getId()),this.handleRemoteEcho(a,e)}return}}var l=e.status,d=e.getId();if(!l)throw new Error("updatePendingEventStatus called on an event which is not a local echo.");var u=Jd[l];if(!(u!=null&&u.includes(t)))throw new Error("Invalid EventStatus transition ".concat(l,"->").concat(t));if(e.setStatus(t),t==q.SENT){e.replaceLocalEventId(r);var{shouldLiveInRoom:h,threadId:m}=this.eventShouldLiveIn(e),E=m?this.getThread(m):void 0;if(E?.setEventMetadata(e),E?.timelineSet.replaceEventId(d,r),h)for(var f of this.timelineSets)f.replaceEventId(d,r)}else if(t==q.CANCELLED){if(this.pendingEventList){var p=this.getPendingEvent(d);this.removePendingEvent(d),p!=null&&p.isRedaction()&&this.revertRedactionLocalEcho(p)}this.removeEvent(d)}this.savePendingEvents(),this.emit(U.LocalEchoUpdated,e,this,d,l)}revertRedactionLocalEcho(e){var t=e.event.redacts;if(t){var r=this.getUnfilteredTimelineSet().findEventById(t);r&&(r.unmarkLocallyRedacted(),this.emit(U.RedactionCancelled,e,this),r.isRelation()&&this.aggregateNonLiveRelation(r))}}assertTimelineSetsAreLive(){for(var e=0;e<this.timelineSets.length;e++){var t=this.timelineSets[e].getLiveTimeline();if(t.getPaginationToken(N.FORWARDS))throw new Error("live timeline "+e+" is no longer live - it has a pagination token ("+t.getPaginationToken(N.FORWARDS)+")");if(t.getNeighbouringTimeline(N.FORWARDS))throw new Error("live timeline ".concat(e," is no longer live - it has a neighbouring timeline"))}}addLiveEvents(e,t){var r=this;return R(function*(){var{duplicateStrategy:n,fromCache:a,timelineWasEmpty:s=!1,addToState:o}=t;if(n&&["replace","ignore"].indexOf(n)===-1)throw new Error("duplicateStrategy MUST be either 'replace' or 'ignore'");r.assertTimelineSetsAreLive();var l=r.findThreadRoots(e),d={},u={duplicateStrategy:n,fromCache:a,timelineWasEmpty:s,addToState:o},h=[...e];for(var m of e){var E;if(r.processLiveEvent(m),m.getUnsigned().transaction_id){var f=r.txnToEvent.get(m.getUnsigned().transaction_id);if(f){r.handleRemoteEcho(m,f);continue}}var{shouldLiveInRoom:p,shouldLiveInThread:I,threadId:S=""}=r.eventShouldLiveIn(m,h,l);if(!I&&!p&&m.isRelation())try{var g=new Ge(yield r.client.fetchRoomEvent(r.roomId,m.relationEventId));if(h.push(g),g.threadRootId){l.add(g.threadRootId);var _=m.getUnsigned();_[di.name]=g.threadRootId,m.setUnsigned(_)}({shouldLiveInRoom:p,shouldLiveInThread:I,threadId:S=""}=r.eventShouldLiveIn(m,h,l))}catch(y){T.error("Failed to load parent event of unhandled relation",y)}I&&!d[S]&&(d[S]=[]),(E=d[S])===null||E===void 0||E.push(m),p?r.addLiveEvent(m,u):!I&&m.isRelation()&&r.relations.aggregateChildEvent(m)}Object.entries(d).forEach(y=>{var[b,v]=y;r.addThreadedEvents(b,v,!1)})})()}partitionThreadedEvents(e){var t=0,r=1,n=2;if(this.client.supportsThreads()){var a=this.findThreadRoots(e);return e.reduce((s,o)=>{var{shouldLiveInRoom:l,shouldLiveInThread:d,threadId:u}=this.eventShouldLiveIn(o,e,a);return l&&s[t].push(o),d&&(o.setThreadId(u??""),s[r].push(o)),!d&&!l&&s[n].push(o),s},[[],[],[]])}else return[e,[],[]]}findThreadRoots(e){var t=new Set;for(var r of e){var n=r.threadRootId;n!=null&&t.add(n)}return t}addReceipt(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,r=e.getContent();this.roomReceipts.add(r,t),Object.keys(r).forEach(n=>{Object.keys(r[n]).forEach(a=>{Object.keys(r[n][a]).forEach(s=>{var o,l,d,u=r[n][a][s],h=!u.thread_id||u.thread_id===On,m=h?this:this.threads.get((o=u.thread_id)!==null&&o!==void 0?o:"");if(m){if(m.addReceiptToStructure(n,a,s,u,t),!t&&this.client.isInitialSyncComplete()&&s===this.client.getUserId()){var E=m.timeline[m.timeline.length-1];E&&n===E.getId()&&s===E.getSender()&&(m.setUnread(Q.Total,0),m.setUnread(Q.Highlight,0))}}else{var f;this.cachedThreadReadReceipts.set(u.thread_id,[...(f=this.cachedThreadReadReceipts.get(u.thread_id))!==null&&f!==void 0?f:[],{eventId:n,receiptType:a,userId:s,receipt:u,synthetic:t}])}var p=this.client.getUserId();s===p&&!h&&u.ts<this.oldestThreadedReceiptTs&&(this.oldestThreadedReceiptTs=u.ts),!u.thread_id&&u.ts>((l=(d=this.unthreadedReceipts.get(s))===null||d===void 0?void 0:d.ts)!==null&&l!==void 0?l:0)&&this.unthreadedReceipts.set(s,u)})})}),this.emit(U.Receipt,e,this)}addEphemeralEvents(e){for(var t of e)t.getType()===M.Typing?this.currentState.setTypingEvent(t):t.getType()===M.Receipt&&this.addReceipt(t)}removeEvents(e){for(var t of e)this.removeEvent(t)}removeEvent(e){var t=!1;for(var r of this.timelineSets){var n=r.removeEvent(e);n&&(n.isRedaction()&&this.revertRedactionLocalEcho(n),t=!0)}return t}recalculate(){var e=this.currentState.getStateEvents(M.RoomMember,this.myUserId);if(e){var t=e.getContent().membership;if(this.updateMyMembership(t),t===J.Invite){var r=e.getUnsigned().invite_room_state||[];r.forEach(a=>{var s=this.currentState.getStateEvents(a.type,a.state_key);s||this.currentState.setStateEvents([new Ge({type:a.type,state_key:a.state_key,content:a.content,event_id:"$fake"+Date.now(),room_id:this.roomId,sender:this.myUserId})])})}}var n=this.name;this.name=this.calculateRoomName(this.myUserId),this.normalizedName=El(this.name),this.summary=new sd(this.roomId,{title:this.name}),n!==this.name&&this.emit(U.Name,this)}addTags(e){this.tags=e.getContent().tags||{},this.emit(U.Tags,e,this)}addAccountData(e){for(var t of e){t.getType()==="m.tag"&&this.addTags(t);var r=t.getType(),n=this.accountData.get(r);this.accountData.set(r,t),this.emit(U.AccountData,t,this,n)}}getAccountData(e){return this.accountData.get(e)}_unstable_getStickyEvents(){return this.stickyEvents.getStickyEvents()}_unstable_getKeyedStickyEvent(e,t,r){return this.stickyEvents.getKeyedStickyEvent(e,t,r)}_unstable_getUnkeyedStickyEvent(e,t){return this.stickyEvents.getUnkeyedStickyEvent(e,t)}_unstable_addStickyEvents(e){return this.stickyEvents.addStickyEvents(e)}maySendMessage(){return this.getMyMembership()===J.Join&&(this.hasEncryptionStateEvent()?this.currentState.maySendEvent(M.RoomMessageEncrypted,this.myUserId):this.currentState.maySendEvent(M.RoomMessage,this.myUserId))}canInvite(e){var t=this.getMyMembership()===J.Join,r=this.currentState.getStateEvents(M.RoomPowerLevels,""),n=r&&r.getContent(),a=this.getMember(e);return n&&a&&n.invite>a.powerLevel&&(t=!1),t}getJoinRule(){return this.currentState.getJoinRule()}getHistoryVisibility(){return this.currentState.getHistoryVisibility()}getGuestAccess(){return this.currentState.getGuestAccess()}getType(){var e=this.currentState.getStateEvents(M.RoomCreate,"");if(!e){this.getTypeWarning||(T.warn("[getType] Room "+this.roomId+" does not have an m.room.create event"),this.getTypeWarning=!0);return}return e.getContent()[li]}isSpaceRoom(){return this.getType()===Ir.Space}isCallRoom(){return this.getType()===Ir.UnstableCall}isElementVideoRoom(){return this.getType()===Ir.ElementVideo}findPredecessor(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,t=this.getLiveTimeline().getState(N.FORWARDS);return t?t.findPredecessor(e):null}roomNameGenerator(e){if(this.client.roomNameGenerator){var t=this.client.roomNameGenerator(this.roomId,e);if(t!==null)return t}switch(e.type){case et.Actual:return e.name;case et.Generated:return e.subtype==="Inviting"?"Inviting ".concat(Xa(e.names,e.count)):Xa(e.names,e.count);case et.EmptyRoom:return e.oldName?"Empty room (was ".concat(e.oldName,")"):"Empty room"}}calculateRoomName(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(!t){var r,n=(r=this.currentState.getStateEvents(M.RoomName,""))===null||r===void 0?void 0:r.getContent().name;if(n&&typeof n=="string")return this.roomNameGenerator({type:et.Actual,name:n})}var a=this.getCanonicalAlias();if(a)return this.roomNameGenerator({type:et.Actual,name:a});var s=this.currentState.getJoinedMemberCount(),o=this.currentState.getInvitedMemberCount(),l=s+o-1,d=this.getFunctionalMembers(),u=[];if(this.heroes)this.heroes.forEach(g=>{if(d.includes(g.userId)){l--;return}if(g.displayName)u.push(g.displayName);else{var _=this.getMember(g.userId);u.push(_?_.name:g.userId)}});else{var h=this.currentState.getMembers().filter(g=>g.userId!==e&&(g.membership===J.Invite||g.membership===J.Join));h=h.filter(g=>{var{userId:_}=g;return d.includes(_)?(l--,!1):!0});var m=new Intl.Collator;h.sort((g,_)=>m.compare(g.userId,_.userId)),h=h.slice(0,5),u=h.map(g=>g.name)}if(l)return this.roomNameGenerator({type:et.Generated,names:u,count:l});var E=this.getMyMembership();if(E==J.Join){var f=this.currentState.getStateEvents(M.RoomThirdPartyInvite);if(f!=null&&f.length){var p=f.map(g=>g.getContent().display_name);return this.roomNameGenerator({type:et.Generated,subtype:"Inviting",names:p,count:p.length+1})}}var I=u;I.length||(I=this.currentState.getMembers().filter(g=>g.userId!==e&&g.membership!==J.Invite&&g.membership!==J.Join).map(g=>g.name));var S;return I.length&&(S=this.roomNameGenerator({type:et.Generated,names:I,count:I.length+1})),this.roomNameGenerator({type:et.EmptyRoom,oldName:S})}applyNewVisibilityEvent(e){var t=e.asVisibilityChange();if(t){var r=e.getSender();if(r){var n=$t.name&&this.currentState.maySendStateEvent($t.name,r)||$t.altName&&this.currentState.maySendStateEvent($t.altName,r);if(n){var a=this.visibilityEvents.get(t.eventId);if(a){for(var s=a.length-1,o=Math.max(0,a.length-Wd);s>=o;--s){var l=a[s];if(l.getTs()<e.getTs())break}s===-1?a.unshift(e):a.splice(s+1,0,e)}else this.visibilityEvents.set(t.eventId,[e]);var d=this.findEventById(t.eventId);d&&d.applyVisibilityEvent(t)}}}}redactVisibilityChangeEvent(e){if(!e.isVisibilityEvent)throw new Error("expected a visibility change event");var t=e.getRelation(),r=t?.event_id,n=this.visibilityEvents.get(r);if(n){var a=n.findIndex(d=>d.getId()===e.getId());if(a!==-1&&(n.splice(a,1),a===n.length)){var s=this.findEventById(r);if(!s)return;if(a===0)this.visibilityEvents.delete(r),s.applyVisibilityEvent();else{var o=n[n.length-1],l=o.asVisibilityChange();if(!l)throw new Error("at this stage, visibility changes should be well-formed");s.applyVisibilityEvent(l)}}}}applyPendingVisibilityEvents(e){var t=this.visibilityEvents.get(e.getId());if(!(!t||t.length==0)){var r=t[t.length-1],n=r.asVisibilityChange();n&&(n.visible,!(r.getTs()<e.getTs())&&e.applyVisibilityEvent(n))}}getOldestThreadedReceiptTs(){return this.oldestThreadedReceiptTs}hasUserReadEvent(e,t){return this.roomReceipts.hasUserReadEvent(e,t)}getLastUnthreadedReceiptFor(e){return this.unthreadedReceipts.get(e)}fixupNotifications(e){super.fixupNotifications(e);var t=this.getThreads().filter(n=>this.getThreadUnreadNotificationCount(n.id,Q.Total)>0);for(var r of t)r.fixupNotifications(e)}compareEventOrdering(e,t){return yd(this,e,t)}hasEncryptionStateEvent(){var e;return!!(!((e=this.getLiveTimeline().getState(N.FORWARDS))===null||e===void 0)&&e.getStateEvents(M.RoomEncryption,""))}}var Jd={[q.ENCRYPTING]:[q.SENDING,q.NOT_SENT,q.CANCELLED],[q.SENDING]:[q.ENCRYPTING,q.QUEUED,q.NOT_SENT,q.SENT],[q.QUEUED]:[q.SENDING,q.NOT_SENT,q.CANCELLED],[q.SENT]:[],[q.NOT_SENT]:[q.SENDING,q.QUEUED,q.CANCELLED],[q.CANCELLED]:[]},et=(function(i){return i[i.EmptyRoom=0]="EmptyRoom",i[i.Generated=1]="Generated",i[i.Actual=2]="Actual",i})({});function Xa(i,e){var t=e-1;if(i.length){if(i.length===1&&t<=1)return i[0];if(i.length===2&&t<=2)return"".concat(i[0]," and ").concat(i[1]);var r=t>1;return r?"".concat(i[0]," and ").concat(t," others"):"".concat(i[0]," and 1 other")}else return"Empty room"}var Ee=(function(i){return i[i.Stable=0]="Stable",i[i.Unstable=1]="Unstable",i[i.Unsupported=2]="Unsupported",i})({}),Se=(function(i){return i.Thread="Thread",i.ThreadUnreadNotifications="ThreadUnreadNotifications",i.LoginTokenRequest="LoginTokenRequest",i.RelationBasedRedactions="RelationBasedRedactions",i.AccountDataDeletion="AccountDataDeletion",i.RelationsRecursion="RelationsRecursion",i.IntentionalMentions="IntentionalMentions",i})({}),zd={[Se.Thread]:{unstablePrefixes:["org.matrix.msc3440"],matrixVersion:"v1.3"},[Se.ThreadUnreadNotifications]:{unstablePrefixes:["org.matrix.msc3771","org.matrix.msc3773"],matrixVersion:"v1.4"},[Se.LoginTokenRequest]:{unstablePrefixes:["org.matrix.msc3882"]},[Se.RelationBasedRedactions]:{unstablePrefixes:["org.matrix.msc3912"]},[Se.AccountDataDeletion]:{unstablePrefixes:["org.matrix.msc3391"]},[Se.RelationsRecursion]:{unstablePrefixes:["org.matrix.msc3981"],matrixVersion:"v1.10"},[Se.IntentionalMentions]:{unstablePrefixes:["org.matrix.msc3952_intentional_mentions"],matrixVersion:"v1.7"}};function Yd(i){return mi.apply(this,arguments)}function mi(){return mi=R(function*(i){var e=new Map;for(var[t,r]of Object.entries(zd)){var n,a,s,o,l=(n=(a=i.versions)===null||a===void 0?void 0:a.includes(r.matrixVersion||""))!==null&&n!==void 0?n:!1,d=(s=(o=r.unstablePrefixes)===null||o===void 0?void 0:o.every(u=>{var h;return((h=i.unstable_features)===null||h===void 0?void 0:h[u])===!0}))!==null&&s!==void 0?s:!1;l?e.set(t,Ee.Stable):d?e.set(t,Ee.Unstable):e.set(t,Ee.Unsupported)}return e}),mi.apply(this,arguments)}function Qa(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(i);e&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(i,n).enumerable})),t.push.apply(t,r)}return t}function bn(i){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?Qa(Object(t),!0).forEach(function(r){c(i,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(t)):Qa(Object(t)).forEach(function(r){Object.defineProperty(i,r,Object.getOwnPropertyDescriptor(t,r))})}return i}var Za=80*1e3,Xd=3,ae=(function(i){return i.Error="ERROR",i.Prepared="PREPARED",i.Stopped="STOPPED",i.Syncing="SYNCING",i.Catchup="CATCHUP",i.Reconnecting="RECONNECTING",i})({}),Qd=["org.matrix.msc2716v3"];function es(i,e){return"FILTER_SYNC_".concat(i)+(e?"_"+e:"")}var Zd=(function(i){return i.Offline="offline",i.Online="online",i.Unavailable="unavailable",i})({});function Mo(i){return bn({initialSyncLimit:8,resolveInvitesToProfiles:!1,pollTimeout:30*1e3,pendingEventOrdering:xr.Chronological,threadSupport:!1},i)}function Oo(i){return bn({canResetEntireTimeline:e=>!1},i)}class Zr{constructor(e,t,r){var n=this;this.client=e,c(this,"opts",void 0),c(this,"syncOpts",void 0),c(this,"_peekRoom",null),c(this,"currentSyncRequest",void 0),c(this,"abortController",void 0),c(this,"syncState",null),c(this,"syncStateData",void 0),c(this,"catchingUp",!1),c(this,"running",!1),c(this,"keepAliveTimer",void 0),c(this,"connectionReturnedResolvers",void 0),c(this,"notifEvents",[]),c(this,"failedSyncCount",0),c(this,"storeIsInvalid",!1),c(this,"presence",void 0),c(this,"getPushRules",R(function*(){try{n.syncOpts.logger.debug("Getting push rules...");var a=yield n.client.getPushRules();n.syncOpts.logger.debug("Got push rules"),n.client.pushRules=a}catch(s){return n.syncOpts.logger.error("Getting push rules failed",s),n.shouldAbortSync(s)?void 0:(n.syncOpts.logger.debug("Waiting for saved sync before retrying push rules..."),yield n.recoverFromSyncStartupError(n.savedSyncPromise,s),n.getPushRules())}})),c(this,"buildDefaultFilter",()=>{var a=new xe(this.client.credentials.userId);return this.client.canSupport.get(Se.ThreadUnreadNotifications)!==Ee.Unsupported&&a.setUnreadThreadNotifications(!0),a}),c(this,"prepareLazyLoadingForSync",R(function*(){n.syncOpts.logger.debug("Prepare lazy loading for sync..."),n.client.isGuest()&&(n.opts.lazyLoadMembers=!1),n.opts.lazyLoadMembers&&(n.syncOpts.logger.debug("Enabling lazy load on sync filter..."),n.opts.filter||(n.opts.filter=n.buildDefaultFilter()),n.opts.filter.setLazyLoadMembers(!0))})),c(this,"storeClientOptions",R(function*(){try{n.syncOpts.logger.debug("Storing client options..."),yield n.client.storeClientOptions(),n.syncOpts.logger.debug("Stored client options")}catch(a){throw n.syncOpts.logger.error("Storing client options failed",a),a}})),c(this,"getFilter",R(function*(){n.syncOpts.logger.debug("Getting filter...");var a;n.opts.filter?a=n.opts.filter:a=n.buildDefaultFilter();var s;try{s=yield n.client.getOrCreateFilter(es(n.client.credentials.userId),a)}catch(o){return n.syncOpts.logger.error("Getting filter failed",o),n.shouldAbortSync(o)?{}:(n.syncOpts.logger.debug("Waiting for saved sync before retrying filter..."),yield n.recoverFromSyncStartupError(n.savedSyncPromise,o),n.getFilter())}return{filter:a,filterId:s}})),c(this,"savedSyncPromise",void 0),c(this,"onOnline",()=>{this.syncOpts.logger.debug("Browser thinks we are back online"),this.startKeepAlives(0)}),this.opts=Mo(t),this.syncOpts=Oo(r),e.getNotifTimelineSet()&&e.reEmitter.reEmit(e.getNotifTimelineSet(),[U.Timeline,U.TimelineReset])}createRoom(e){var t=ko(this.client,e,this.opts);return t.on(X.Marker,(r,n)=>{this.onMarkerStateEvent(t,r,n)}),t}onMarkerStateEvent(e,t){var{timelineWasEmpty:r}=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(r){this.syncOpts.logger.debug("MarkerState: Ignoring markerEventId=".concat(t.getId()," in roomId=").concat(e.roomId," ")+"because the timeline was empty before the marker arrived which means there is nothing to refresh.");return}var n=Qd.includes(e.getVersion())||t.getSender()===e.getCreator();n?(this.syncOpts.logger.debug("MarkerState: Timeline needs to be refreshed because "+"a new markerEventId=".concat(t.getId()," was sent in roomId=").concat(e.roomId)),e.setTimelineNeedsRefresh(!0),e.emit(U.HistoryImportedWithinTimeline,t,e)):this.syncOpts.logger.debug("MarkerState: Ignoring markerEventId=".concat(t.getId()," in roomId=").concat(e.roomId," because ")+"MSC2716 is not supported in the room version or for any room version, the marker wasn't sent by the room creator.")}syncLeftRooms(){var e=this;return R(function*(){var t,r=e.client,n=new xe(e.client.credentials.userId);n.setTimelineLimit(1),n.setIncludeLeaveRooms(!0);var a=e.opts.pollTimeout+Za,s=yield r.getOrCreateFilter(es(r.credentials.userId,"LEFT_ROOMS"),n),o={timeout:0,filter:s,"org.matrix.msc4222.use_state_after":!0},l=yield r.http.authedRequest(O.Get,"/sync",o,void 0,{localTimeoutMs:a}),d=[];(t=l.rooms)!==null&&t!==void 0&&t.leave&&(d=e.mapSyncResponseToRoomArray(l.rooms.leave));var u=yield Promise.all(d.map((function(){var h=R(function*(m){var E=m.room;if(m.isBrandNewRoom){m.timeline=m.timeline||{prev_batch:null,events:[]},E.getLiveTimeline().setPaginationToken(m.timeline.prev_batch,N.BACKWARDS);var{timelineEvents:f}=yield e.mapAndInjectRoomEvents(m);return E.recalculate(),r.store.storeRoom(E),r.emit(x.Room,E),e.processEventsForNotifs(E,f),E}});return function(m){return h.apply(this,arguments)}})()));return u.filter(Boolean)})()}peek(e){var t,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:20;if(((t=this._peekRoom)===null||t===void 0?void 0:t.roomId)===e)return Promise.resolve(this._peekRoom);var n=this.client;return this._peekRoom=this.createRoom(e),this.client.roomInitialSync(e,r).then(a=>{var s;if(((s=this._peekRoom)===null||s===void 0?void 0:s.roomId)!==e)throw new Error("Peeking aborted");a.messages=a.messages||{chunk:[]},a.messages.chunk=a.messages.chunk||[],a.state=a.state||[];var o=Br(a.state).map(n.getEventMapper()),l=a.state.map(n.getEventMapper()),d=a.messages.chunk.map(n.getEventMapper());return Array.isArray(a.presence)&&a.presence.map(n.getEventMapper()).forEach(function(u){var h=n.store.getUser(u.getContent().user_id);h?h.setPresenceEvent(u):(h=Lt.createUser(u.getContent().user_id,n),h.setPresenceEvent(u),n.store.storeUser(h)),n.emit(x.Event,u)}),a.messages.start&&(this._peekRoom.oldState.paginationToken=a.messages.start),this._peekRoom.oldState.setStateEvents(o),this._peekRoom.currentState.setStateEvents(l),this.resolveInvites(this._peekRoom),this._peekRoom.recalculate(),this._peekRoom.addEventsToTimeline(d.reverse(),!0,!0,this._peekRoom.getLiveTimeline(),a.messages.start),n.store.storeRoom(this._peekRoom),n.emit(x.Room,this._peekRoom),this.peekPoll(this._peekRoom),this._peekRoom})}stopPeeking(){this._peekRoom=null}peekPoll(e,t){var r,n=this;if(this._peekRoom!==e){this.syncOpts.logger.debug("Stopped peeking in room %s",e.roomId);return}this.client.http.authedRequest(O.Get,"/events",{room_id:e.roomId,timeout:String(30*1e3),from:t},void 0,{localTimeoutMs:50*1e3,abortSignal:(r=this.abortController)===null||r===void 0?void 0:r.signal}).then((function(){var a=R(function*(s){if(n._peekRoom!==e){n.syncOpts.logger.debug("Stopped peeking in room %s",e.roomId);return}s.chunk.filter(function(l){return l.type==="m.presence"}).map(n.client.getEventMapper()).forEach(l=>{var d=n.client.store.getUser(l.getContent().user_id);d?d.setPresenceEvent(l):(d=Lt.createUser(l.getContent().user_id,n.client),d.setPresenceEvent(l),n.client.store.storeUser(d)),n.client.emit(x.Event,l)});var o=s.chunk.filter(function(l){return l.room_id===e.roomId&&l.event_id}).map(n.client.getEventMapper());yield e.addLiveEvents(o,{addToState:!0}),n.peekPoll(e,s.end)});return function(s){return a.apply(this,arguments)}})(),a=>{this.syncOpts.logger.error("[%s] Peek poll failed: %s",e.roomId,a),setTimeout(()=>{this.peekPoll(e,t)},30*1e3)})}getSyncState(){return this.syncState}getSyncStateData(){var e;return(e=this.syncStateData)!==null&&e!==void 0?e:null}recoverFromSyncStartupError(e,t){var r=this;return R(function*(){yield e;var n=r.startKeepAlives();r.updateSyncState(ae.Error,{error:t}),yield n})()}shouldAbortSync(e){return e.errcode==="M_UNKNOWN_TOKEN"?(this.syncOpts.logger.warn("Token no longer valid - assuming logout"),this.stop(),this.updateSyncState(ae.Error,{error:e}),!0):!1}sync(){var e=this;return R(function*(){var t,r;if(e.running=!0,e.abortController=new AbortController,(t=globalThis.window)===null||t===void 0||(r=t.addEventListener)===null||r===void 0||r.call(t,"online",e.onOnline,!1),e.client.isGuest())return e.doSync({});e.syncOpts.logger.debug("Getting saved sync token...");var n=e.client.store.getSavedSyncToken().then(u=>(e.syncOpts.logger.debug("Got saved sync token"),u));e.savedSyncPromise=e.client.store.getSavedSync().then(u=>{if(e.syncOpts.logger.debug("Got reply from saved sync, exists? ".concat(!!u)),u)return e.syncFromCache(u)}).catch(u=>{e.syncOpts.logger.error("Getting saved sync failed",u)}),yield e.getPushRules(),yield e.prepareLazyLoadingForSync(),yield e.storeClientOptions();var{filterId:a,filter:s}=yield e.getFilter();if(s){if(e.client.resetNotifTimelineSet(),!e.currentSyncRequest){var o=a,l=yield n;if(l)e.syncOpts.logger.debug("Sending first sync request...");else{e.syncOpts.logger.debug("Sending initial sync request...");var d=e.buildDefaultFilter();d.setDefinition(s.getDefinition()),d.setTimelineLimit(e.opts.initialSyncLimit),o=JSON.stringify(d.getDefinition())}e.currentSyncRequest=e.doSyncRequest({filter:o},l)}return e.syncOpts.logger.debug("Waiting for saved sync before starting sync processing..."),yield e.savedSyncPromise,e.doSync({filter:a})}})()}stop(){var e,t,r;this.syncOpts.logger.debug("SyncApi.stop"),(e=globalThis.window)===null||e===void 0||(t=e.removeEventListener)===null||t===void 0||t.call(e,"online",this.onOnline,!1),this.running=!1,(r=this.abortController)===null||r===void 0||r.abort(),this.keepAliveTimer&&(clearTimeout(this.keepAliveTimer),this.keepAliveTimer=void 0)}retryImmediately(){return this.connectionReturnedResolvers?(this.startKeepAlives(0),!0):!1}syncFromCache(e){var t=this;return R(function*(){t.syncOpts.logger.debug("sync(): not doing HTTP hit, instead returning stored /sync data");var r=e.nextBatch;t.client.store.setSyncToken(r);var n={nextSyncToken:r,catchingUp:!1,fromCache:!0},a={next_batch:r,rooms:e.roomsData,account_data:{events:e.accountData}};try{yield t.processSyncResponse(n,a)}catch(s){t.syncOpts.logger.error("Error processing cached sync",s)}t.storeIsInvalid||t.updateSyncState(ae.Prepared,n)})()}doSync(e){var t=this;return R(function*(){for(;t.running;){var r=t.client.store.getSyncToken(),n=void 0;try{t.currentSyncRequest||(t.currentSyncRequest=t.doSyncRequest(e,r)),n=yield t.currentSyncRequest}catch(o){var a=yield t.onSyncError(o);if(a)return;continue}finally{t.currentSyncRequest=void 0}t.client.store.setSyncToken(n.next_batch),t.failedSyncCount=0;var s={oldSyncToken:r??void 0,nextSyncToken:n.next_batch,catchingUp:t.catchingUp};try{yield t.processSyncResponse(s,n)}catch(o){t.syncOpts.logger.error("Caught /sync error",o),t.client.emit(x.SyncUnexpectedError,o)}yield t.client.store.setSyncData(n),s.catchingUp=t.catchingUp,e.hasSyncedBefore||(t.updateSyncState(ae.Prepared,s),e.hasSyncedBefore=!0),t.syncOpts.cryptoCallbacks&&(yield t.syncOpts.cryptoCallbacks.onSyncCompleted(s)),t.updateSyncState(ae.Syncing,s),t.client.store.wantsSave()&&(yield t.client.store.save())}t.running||(t.syncOpts.logger.debug("Sync no longer running: exiting."),t.connectionReturnedResolvers&&(t.connectionReturnedResolvers.reject(),t.connectionReturnedResolvers=void 0),t.updateSyncState(ae.Stopped))})()}doSyncRequest(e,t){var r,n=this.getSyncParams(e,t);return this.client.http.authedRequest(O.Get,"/sync",n,void 0,{localTimeoutMs:n.timeout+Za,abortSignal:(r=this.abortController)===null||r===void 0?void 0:r.signal})}getSyncParams(e,t){var r=this.opts.pollTimeout;(this.getSyncState()!==ae.Syncing||this.catchingUp)&&(this.catchingUp=!0,r=0);var n=e.filter;this.client.isGuest()&&!n&&(n=this.getGuestFilter());var a={filter:n,timeout:r,"org.matrix.msc4222.use_state_after":!0};return this.opts.disablePresence?a.set_presence=Zd.Offline:this.presence!==void 0&&(a.set_presence=this.presence),t?a.since=t:a._cacheBuster=Date.now(),[ae.Reconnecting,ae.Error].includes(this.getSyncState())&&(a.timeout=0),a}setPresence(e){this.presence=e}onSyncError(e){var t=this;return R(function*(){if(!t.running)return t.syncOpts.logger.debug("Sync no longer running: exiting"),t.connectionReturnedResolvers&&(t.connectionReturnedResolvers.reject(),t.connectionReturnedResolvers=void 0),t.updateSyncState(ae.Stopped),!0;if(t.syncOpts.logger.error("/sync error %s",e),t.shouldAbortSync(e))return!0;t.failedSyncCount++,t.syncOpts.logger.debug("Number of consecutive failed sync requests:",t.failedSyncCount),t.syncOpts.logger.debug("Starting keep-alive");var r=t.startKeepAlives();t.currentSyncRequest=void 0,t.updateSyncState(t.failedSyncCount>=Xd?ae.Error:ae.Reconnecting,{error:e});var n=yield r;return n&&t.getSyncState()===ae.Error&&t.updateSyncState(ae.Catchup,{catchingUp:!0}),!1})()}processSyncResponse(e,t){var r=this;return R(function*(){var n,a,s,o,l=r.client;if(Array.isArray((n=t.presence)===null||n===void 0?void 0:n.events)&&t.presence.events.filter(He).map(l.getEventMapper()).forEach(function(S){var g=l.store.getUser(S.getSender());g?g.setPresenceEvent(S):(g=Lt.createUser(S.getSender(),l),g.setPresenceEvent(S),l.store.storeUser(g)),l.emit(x.Event,S)}),Array.isArray((a=t.account_data)===null||a===void 0?void 0:a.events)){var d=t.account_data.events.filter(He).map(l.getEventMapper()),u=d.reduce((S,g)=>(S[g.getType()]=l.store.getAccountData(g.getType()),S),{});l.store.storeAccountDataEvents(d),d.forEach(function(S){if(S.getType()===M.PushRules){var g=S.getContent();l.setPushRules(g)}var _=u[S.getType()];return l.emit(x.AccountData,S,_),S})}if(t.to_device&&Array.isArray(t.to_device.events)&&t.to_device.events.length>0){var h=t.to_device.events.filter(He),m;r.syncOpts.cryptoCallbacks?m=yield r.syncOpts.cryptoCallbacks.preprocessToDeviceMessages(h):m=h.map(S=>({message:S,encryptionInfo:null})),Po(m,l)}else r.catchingUp=!1;var E=[],f=[],p=[],I=[];t.rooms&&(t.rooms.invite&&(E=r.mapSyncResponseToRoomArray(t.rooms.invite)),t.rooms.join&&(f=r.mapSyncResponseToRoomArray(t.rooms.join)),t.rooms.leave&&(p=r.mapSyncResponseToRoomArray(t.rooms.leave)),t.rooms.knock&&(I=r.mapSyncResponseToRoomArray(t.rooms.knock))),r.notifEvents=[],yield Promise.all(E.map((function(){var S=R(function*(g){var _=g.room,y=r.mapSyncEventsFormat(g.invite_state,_);yield r.injectRoomEvents(_,y,void 0),g.isBrandNewRoom?(_.recalculate(),l.store.storeRoom(_),l.emit(x.Room,_)):_.recalculate(),y.forEach(function(b){l.emit(x.Event,b)})});return function(g){return S.apply(this,arguments)}})())),yield Promise.all(f.map((function(){var S=R(function*(g){var _,y=g.room,b=r.mapSyncEventsFormat(g.state,y),v=r.mapSyncEventsFormat(g["org.matrix.msc4222.state_after"],y),w=r.mapSyncEventsFormat(g.timeline,y,!1),C=r.mapSyncEventsFormat(g.ephemeral),k=r.mapSyncEventsFormat(g.account_data),P=r.mapSyncEventsFormat(g.msc4354_sticky),D=g["org.matrix.msc4222.state_after"]?v:b.concat(w),B=r.isRoomEncrypted(y,D);if(g.unread_notifications){if(!B||g.unread_notifications.notification_count===0){var Z;y.setUnreadNotificationCount(Q.Total,(Z=g.unread_notifications.notification_count)!==null&&Z!==void 0?Z:0)}if(!B||y.getUnreadNotificationCount(Q.Highlight)<=0){var ge;y.setUnreadNotificationCount(Q.Highlight,(ge=g.unread_notifications.highlight_count)!==null&&ge!==void 0?ge:0)}}var L=(_=g[Lr.name])!==null&&_!==void 0?_:g[Lr.altName];if(L){y.resetThreadUnreadNotificationCountFromSync(Object.keys(L));for(var[F,j]of Object.entries(L)){if(!B||j.notification_count===0){var $;y.setThreadUnreadNotificationCount(F,Q.Total,($=j.notification_count)!==null&&$!==void 0?$:0)}var G=y.getThreadUnreadNotificationCount(F,Q.Highlight)<=0;if(!B||B&&G){var ne;y.setThreadUnreadNotificationCount(F,Q.Highlight,(ne=j.highlight_count)!==null&&ne!==void 0?ne:0)}}}else y.resetThreadUnreadNotificationCountFromSync();if(g.timeline=g.timeline||{},g.isBrandNewRoom)g.timeline.prev_batch!==null&&y.getLiveTimeline().setPaginationToken(g.timeline.prev_batch,N.BACKWARDS);else if(g.timeline.limited){for(var Fe=!0,Be=w.length-1;Be>=0;Be--){var Gr=w[Be].getId();if(y.getTimelineForEvent(Gr)){r.syncOpts.logger.debug("Already have event ".concat(Gr," in limited sync - not resetting")),Fe=!1,w.splice(0,Be);break}}if(Fe){var ar;y.resetLiveTimeline(g.timeline.prev_batch,r.syncOpts.canResetEntireTimeline(y.roomId)?null:(ar=e.oldSyncToken)!==null&&ar!==void 0?ar:null),l.resetNotifTimelineSet()}}if(r.syncOpts.cryptoCallbacks)for(var $r of D)$r.isState()&&$r.getType()===M.RoomEncryption&&$r.getStateKey()===""&&(yield r.syncOpts.cryptoCallbacks.onCryptoEvent(y,$r));for(var Wo of w.filter(Ze=>Ze.isState()))yield r.client.decryptEventIfNeeded(Wo);try{"org.matrix.msc4222.state_after"in g?yield r.injectRoomEvents(y,void 0,v,w,e.fromCache):yield r.injectRoomEvents(y,b,void 0,w,e.fromCache)}catch(Ze){r.syncOpts.logger.error("Failed to process events on room ".concat(y.roomId,":"),Ze)}g.summary&&y.setSummary(g.summary),y.addEphemeralEvents(C),y.addAccountData(k);var Jo=P.concat(w.filter(Ze=>Ze.unstableStickyInfo!==void 0));y._unstable_addStickyEvents(Jo),y.recalculate(),g.isBrandNewRoom&&(l.store.storeRoom(y),l.emit(x.Room,y)),r.processEventsForNotifs(y,w);var sr=Ze=>l.emit(x.Event,Ze);b.forEach(sr),w.forEach(sr),C.forEach(sr),k.forEach(sr),P.filter(Ze=>!w.some(zo=>zo.getId()===Ze.getId())).forEach(sr),y.decryptCriticalEvents()});return function(g){return S.apply(this,arguments)}})())),yield Promise.all(p.map((function(){var S=R(function*(g){var _=g.room,{timelineEvents:y,stateEvents:b,stateAfterEvents:v}=yield r.mapAndInjectRoomEvents(g),w=r.mapSyncEventsFormat(g.account_data);_.addAccountData(w),_.recalculate(),g.isBrandNewRoom&&(l.store.storeRoom(_),l.emit(x.Room,_)),r.processEventsForNotifs(_,y),b?.forEach(function(C){l.emit(x.Event,C)}),v?.forEach(function(C){l.emit(x.Event,C)}),y.forEach(function(C){l.emit(x.Event,C)}),w.forEach(function(C){l.emit(x.Event,C)})});return function(g){return S.apply(this,arguments)}})())),yield Promise.all(I.map((function(){var S=R(function*(g){var _=g.room,y=r.mapSyncEventsFormat(g.knock_state,_);yield r.injectRoomEvents(_,y,void 0),g.isBrandNewRoom?(_.recalculate(),l.store.storeRoom(_),l.emit(x.Room,_)):_.recalculate(),y.forEach(function(b){l.emit(x.Event,b)})});return function(g){return S.apply(this,arguments)}})())),e.oldSyncToken&&r.notifEvents.length&&(r.notifEvents.sort(function(S,g){return S.getTs()-g.getTs()}),r.notifEvents.forEach(function(S){var g;(g=l.getNotifTimelineSet())===null||g===void 0||g.addLiveEvent(S,{addToState:!0})})),t.device_lists&&r.syncOpts.cryptoCallbacks&&(yield r.syncOpts.cryptoCallbacks.processDeviceLists(t.device_lists)),yield(s=r.syncOpts.cryptoCallbacks)===null||s===void 0?void 0:s.processKeyCounts(t.device_one_time_keys_count,(o=t.device_unused_fallback_key_types)!==null&&o!==void 0?o:t["org.matrix.msc2732.device_unused_fallback_key_types"])})()}startKeepAlives(e){return e===void 0&&(e=2e3+Math.floor(Math.random()*5e3)),this.keepAliveTimer!==null&&clearTimeout(this.keepAliveTimer),e>0?this.keepAliveTimer=setTimeout(this.pokeKeepAlive.bind(this),e):this.pokeKeepAlive(),this.connectionReturnedResolvers||(this.connectionReturnedResolvers=Promise.withResolvers()),this.connectionReturnedResolvers.promise}pokeKeepAlive(){var e,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;if(!this.running){clearTimeout(this.keepAliveTimer),this.connectionReturnedResolvers&&(this.connectionReturnedResolvers.reject("SyncApi.stop() was called"),this.connectionReturnedResolvers=void 0);return}var r=()=>{clearTimeout(this.keepAliveTimer),this.connectionReturnedResolvers&&(this.connectionReturnedResolvers.resolve(t),this.connectionReturnedResolvers=void 0)};this.client.http.request(O.Get,"/_matrix/client/versions",void 0,void 0,{prefix:"",localTimeoutMs:15*1e3,abortSignal:(e=this.abortController)===null||e===void 0?void 0:e.signal}).then(()=>{r()},n=>{n.httpStatus==400||n.httpStatus==404?this.keepAliveTimer=setTimeout(r,2e3):(t=!0,this.keepAliveTimer=setTimeout(this.pokeKeepAlive.bind(this,t),5e3+Math.floor(Math.random()*5e3)),this.updateSyncState(ae.Error,{error:n}))})}mapSyncResponseToRoomArray(e){var t=this.client;return Object.keys(e).filter(r=>!_r(r)).map(r=>{var n=t.store.getRoom(r),a=!1;return n||(n=this.createRoom(r),a=!0),bn(bn({},e[r]),{},{room:n,isBrandNewRoom:a})})}mapSyncEventsFormat(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(!e||!Array.isArray(e.events))return[];var n=this.client.getEventMapper({decrypt:r});return e.events.filter(He).map(function(a){return t&&(a.room_id=t.roomId),n(a)})}resolveInvites(e){if(!(!e||!this.opts.resolveInvitesToProfiles)){var t=this.client;e.getMembersWithMembership(J.Invite).forEach(function(r){if(!r.requestedProfileInfo){r.requestedProfileInfo=!0;var n=t.getUser(r.userId),a;n?a=Promise.resolve({avatar_url:n.avatarUrl,displayname:n.displayName}):a=t.getProfileInfo(r.userId),a.then(function(s){var o=r.events.member;o?.getContent().membership===J.Invite&&(o.getContent().avatar_url=s.avatar_url,o.getContent().displayname=s.displayname,r.setMembershipEvent(o,e.currentState))},function(s){})}})}}findEncryptionEvent(e){return e?.find(t=>t.getType()===M.RoomEncryption&&t.getStateKey()==="")}isRoomEncrypted(e,t){return e.hasEncryptionStateEvent()||!!this.findEncryptionEvent(t)}mapAndInjectRoomEvents(e){var t=this;return R(function*(){var r=t.mapSyncEventsFormat(e.state,e.room),n=t.mapSyncEventsFormat(e["org.matrix.msc4222.state_after"],e.room),a=t.mapSyncEventsFormat(e.timeline,e.room);return"org.matrix.msc4222.state_after"in e?yield t.injectRoomEvents(e.room,void 0,n,a):yield t.injectRoomEvents(e.room,r,void 0,a),{timelineEvents:a,stateEvents:r,stateAfterEvents:n}})()}injectRoomEvents(e,t,r,n){var a=arguments,s=this;return R(function*(){var o=a.length>4&&a[4]!==void 0?a[4]:!1,l=r??t,d=e.getLiveTimeline(),u=d.getEvents().length==0;if(u){for(var h of l)s.client.getPushActionsForEvent(h);d.initialiseState(l,{timelineWasEmpty:u})}s.resolveInvites(e),e.recalculate(),u||(e.oldState.setStateEvents(l),e.currentState.setStateEvents(l)),yield e.addLiveEvents(n||[],{fromCache:o,timelineWasEmpty:u,addToState:r===void 0}),s.client.processBeaconEvents(e,n)})()}processEventsForNotifs(e,t){if(this.client.getNotifTimelineSet())for(var r of t){var n,a=this.client.getPushActionsForEvent(r);a!=null&&a.notify&&(n=a.tweaks)!==null&&n!==void 0&&n.highlight&&this.notifEvents.push(r)}}getGuestFilter(){return"{}"}updateSyncState(e,t){var r=this.syncState;this.syncState=e,this.syncStateData=t,this.client.emit(x.Sync,this.syncState,r,t)}}function ko(i,e,t){var{timelineSupport:r}=i,n=new ji(e,i,i.getUserId(),{lazyLoadMembers:t.lazyLoadMembers,pendingEventOrdering:t.pendingEventOrdering,timelineSupport:r});return i.reEmitter.reEmit(n,[U.Name,U.Redaction,U.RedactionCancelled,U.Receipt,U.Tags,U.LocalEchoUpdated,U.AccountData,U.MyMembership,U.Timeline,U.TimelineReset,X.Events,X.Members,X.NewMember,X.Update,de.New,de.Update,de.Destroy,de.LivenessChange]),n.on(X.NewMember,(a,s,o)=>{var l;o.user=(l=i.getUser(o.userId))!==null&&l!==void 0?l:void 0,i.reEmitter.reEmit(o,[Le.Name,Le.Typing,Le.PowerLevel,Le.Membership])}),n}function Po(i,e){var t=[];i.map(r=>{if(r.message.type==="m.key.verification.cancel"){var n=r.message.content.transaction_id;n&&t.push(n)}return r}).forEach(function(r){{var n=r.message,a=n.content,s=new Ge(Object.assign({},n));if(n.type==="m.key.verification.start"||n.type==="m.key.verification.request"){var o=a.transaction_id;t.includes(o)&&s.flagCancelled()}r.encryptionInfo&&s.makeEncrypted(M.RoomMessageEncrypted,{ciphertext:""},r.encryptionInfo.senderCurve25519KeyBase64,""),e.emit(x.ToDeviceEvent,s)}e.emit(x.ReceivedToDeviceMessage,r)})}class eu{constructor(){c(this,"accountData",new Map),c(this,"fromToken",null)}isNewlyCreated(){return Promise.resolve(!0)}getSyncToken(){return this.fromToken}setSyncToken(e){this.fromToken=e}storeRoom(e){}getRoom(e){return null}getRooms(){return[]}removeRoom(e){}getRoomSummaries(){return[]}storeUser(e){}getUser(e){return null}getUsers(){return[]}scrollback(e,t){return[]}setUserCreator(e){}storeEvents(e,t,r,n){}storeFilter(e){}getFilter(e,t){return null}getFilterIdByName(e){return null}setFilterIdByName(e,t){}storeAccountDataEvents(e){}getAccountData(e){}setSyncData(e){return Promise.resolve()}wantsSave(){return!1}save(){return Promise.resolve()}startup(){return Promise.resolve()}getSavedSync(){return Promise.resolve(null)}getSavedSyncToken(){return Promise.resolve(null)}deleteAllData(){return Promise.resolve()}getOutOfBandMembers(){return Promise.resolve(null)}setOutOfBandMembers(e,t){return Promise.resolve()}clearOutOfBandMembers(){return Promise.resolve()}getClientOptions(){return Promise.resolve(void 0)}storeClientOptions(e){return Promise.resolve()}getPendingEvents(e){return R(function*(){return[]})()}setPendingEvents(e,t){return Promise.resolve()}saveToDeviceBatches(e){return R(function*(){return Promise.resolve()})()}getOldestToDeviceBatch(){return Promise.resolve(null)}removeToDeviceBatch(e){return R(function*(){return Promise.resolve()})()}destroy(){return R(function*(){})()}}const _e=[];for(let i=0;i<256;++i)_e.push((i+256).toString(16).slice(1));function tu(i,e=0){return(_e[i[e+0]]+_e[i[e+1]]+_e[i[e+2]]+_e[i[e+3]]+"-"+_e[i[e+4]]+_e[i[e+5]]+"-"+_e[i[e+6]]+_e[i[e+7]]+"-"+_e[i[e+8]]+_e[i[e+9]]+"-"+_e[i[e+10]]+_e[i[e+11]]+_e[i[e+12]]+_e[i[e+13]]+_e[i[e+14]]+_e[i[e+15]]).toLowerCase()}let Vn;const ru=new Uint8Array(16);function nu(){if(!Vn){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");Vn=crypto.getRandomValues.bind(crypto)}return Vn(ru)}const iu=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto);var ts={randomUUID:iu};function au(i,e,t){i=i||{};const r=i.random??i.rng?.()??nu();if(r.length<16)throw new Error("Random bytes length must be >= 16");return r[6]=r[6]&15|64,r[8]=r[8]&63|128,tu(r)}function su(i,e,t){return ts.randomUUID&&!i?ts.randomUUID():au(i)}var je={},qn={},Hn={exports:{}},rs;function Ki(){if(rs)return Hn.exports;rs=1;var i=Hn.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:["username","sessionId","sessionVersion","netType","ipVer","address"],format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}],p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:["payload","codec","rate","encoding"],format:function(e){return e.encoding?"rtpmap:%d %s/%s/%s":e.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(e){return e.address!=null?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(e){return e.subtype!=null?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(e){return"extmap:%d"+(e.direction?"/%s":"%v")+(e["encrypt-uri"]?" %s":"%v")+" %s"+(e.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(e){return e.sessionConfig!=null?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{push:"msid",reg:/^msid:([\w-]+)(?: ([\w-]+))?/,names:["id","appdata"],format:"msid:%s %s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(e){var t="candidate:%s %d %s %d %s %d typ %s";return t+=e.raddr!=null?" raddr %s rport %d":"%v%v",t+=e.tcptype!=null?" tcptype %s":"%v",e.generation!=null&&(t+=" generation %d"),t+=e["network-id"]!=null?" network-id %d":"%v",t+=e["network-cost"]!=null?" network-cost %d":"%v",t}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(e){var t="ssrc:%d";return e.attribute!=null&&(t+=" %s",e.value!=null&&(t+=":%s")),t}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(e){return e.maxMessageSize!=null?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(e){return e.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:new RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(e){return"imageattr:%s %s %s"+(e.dir2?" %s %s":"")}},{name:"simulcast",reg:new RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(e){return"simulcast:%s %s"+(e.dir2?" %s %s":"")}},{name:"simulcast_03",reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:["value"],format:"simulcast: %s"},{name:"framerate",reg:/^framerate:(\d+(?:$|\.\d+))/,format:"framerate:%s"},{name:"sourceFilter",reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:["filterMode","netType","addressTypes","destAddress","srcList"],format:"source-filter: %s %s %s %s %s"},{name:"bundleOnly",reg:/^(bundle-only)/},{name:"label",reg:/^label:(.+)/,format:"label:%s"},{name:"sctpPort",reg:/^sctp-port:(\d+)$/,format:"sctp-port:%s"},{name:"maxMessageSize",reg:/^max-message-size:(\d+)$/,format:"max-message-size:%s"},{push:"tsRefClocks",reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:["clksrc","clksrcExt"],format:function(e){return"ts-refclk:%s"+(e.clksrcExt!=null?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(e){var t="mediaclk:";return t+=e.id!=null?"id=%s %s":"%v%s",t+=e.mediaClockValue!=null?"=%s":"",t+=e.rateNumerator!=null?" rate=%s":"",t+=e.rateDenominator!=null?"/%s":"",t}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};return Object.keys(i).forEach(function(e){var t=i[e];t.forEach(function(r){r.reg||(r.reg=/(.*)/),r.format||(r.format="%s")})}),Hn.exports}var ns;function ou(){return ns||(ns=1,(function(i){var e=function(o){return String(Number(o))===o?Number(o):o},t=function(o,l,d,u){if(u&&!d)l[u]=e(o[1]);else for(var h=0;h<d.length;h+=1)o[h+1]!=null&&(l[d[h]]=e(o[h+1]))},r=function(o,l,d){var u=o.name&&o.names;o.push&&!l[o.push]?l[o.push]=[]:u&&!l[o.name]&&(l[o.name]={});var h=o.push?{}:u?l[o.name]:l;t(d.match(o.reg),h,o.names,o.name),o.push&&l[o.push].push(h)},n=Ki(),a=RegExp.prototype.test.bind(/^([a-z])=(.*)/);i.parse=function(o){var l={},d=[],u=l;return o.split(/(\r\n|\r|\n)/).filter(a).forEach(function(h){var m=h[0],E=h.slice(2);m==="m"&&(d.push({rtp:[],fmtp:[]}),u=d[d.length-1]);for(var f=0;f<(n[m]||[]).length;f+=1){var p=n[m][f];if(p.reg.test(E))return r(p,u,E)}}),l.media=d,l};var s=function(o,l){var d=l.split(/=(.+)/,2);return d.length===2?o[d[0]]=e(d[1]):d.length===1&&l.length>1&&(o[d[0]]=void 0),o};i.parseParams=function(o){return o.split(/;\s?/).reduce(s,{})},i.parseFmtpConfig=i.parseParams,i.parsePayloads=function(o){return o.toString().split(" ").map(Number)},i.parseRemoteCandidates=function(o){for(var l=[],d=o.split(" ").map(e),u=0;u<d.length;u+=3)l.push({component:d[u],ip:d[u+1],port:d[u+2]});return l},i.parseImageAttributes=function(o){return o.split(" ").map(function(l){return l.substring(1,l.length-1).split(",").reduce(s,{})})},i.parseSimulcastStreamList=function(o){return o.split(";").map(function(l){return l.split(",").map(function(d){var u,h=!1;return d[0]!=="~"?u=e(d):(u=e(d.substring(1,d.length)),h=!0),{scid:u,paused:h}})})}})(qn)),qn}var Gn,is;function lu(){if(is)return Gn;is=1;var i=Ki(),e=/%[sdv%]/g,t=function(s){var o=1,l=arguments,d=l.length;return s.replace(e,function(u){if(o>=d)return u;var h=l[o];switch(o+=1,u){case"%%":return"%";case"%s":return String(h);case"%d":return Number(h);case"%v":return""}})},r=function(s,o,l){var d=o.format instanceof Function?o.format(o.push?l:l[o.name]):o.format,u=[s+"="+d];if(o.names)for(var h=0;h<o.names.length;h+=1){var m=o.names[h];o.name?u.push(l[o.name][m]):u.push(l[o.names[h]])}else u.push(l[o.name]);return t.apply(null,u)},n=["v","o","s","i","u","e","p","c","b","t","r","z","a"],a=["i","c","b","a"];return Gn=function(s,o){o=o||{},s.version==null&&(s.version=0),s.name==null&&(s.name=" "),s.media.forEach(function(h){h.payloads==null&&(h.payloads="")});var l=o.outerOrder||n,d=o.innerOrder||a,u=[];return l.forEach(function(h){i[h].forEach(function(m){m.name in s&&s[m.name]!=null?u.push(r(h,m,s)):m.push in s&&s[m.push]!=null&&s[m.push].forEach(function(E){u.push(r(h,m,E))})})}),s.media.forEach(function(h){u.push(r("m",i.m[0],h)),d.forEach(function(m){i[m].forEach(function(E){E.name in h&&h[E.name]!=null?u.push(r(m,E,h)):E.push in h&&h[E.push]!=null&&h[E.push].forEach(function(f){u.push(r(m,E,f))})})})}),u.join(`\r
9
+ `)+`\r
10
+ `},Gn}var as;function du(){if(as)return je;as=1;var i=ou(),e=lu(),t=Ki();return je.grammar=t,je.write=e,je.parse=i.parse,je.parseParams=i.parseParams,je.parseFmtpConfig=i.parseFmtpConfig,je.parsePayloads=i.parsePayloads,je.parseRemoteCandidates=i.parseRemoteCandidates,je.parseImageAttributes=i.parseImageAttributes,je.parseSimulcastStreamList=i.parseSimulcastStreamList,je}var pi=du();function Vi(i,e){if(typeof i.toBase64=="function")return i.toBase64(e);var t=btoa(i.reduce((r,n)=>r+String.fromCharCode(n),""));return e.omitPadding&&(t=t.replace(/={1,2}$/,"")),e.alphabet==="base64url"&&(t=t.replace(/\+/g,"-").replace(/\//g,"_")),t}function vn(i){return Vi(i,{alphabet:"base64",omitPadding:!1})}function Ao(i){return Vi(i,{alphabet:"base64",omitPadding:!0})}function Lo(i){return Vi(i,{alphabet:"base64url",omitPadding:!0})}function uu(i,e){return typeof Uint8Array.fromBase64=="function"?Uint8Array.fromBase64(i,e):Uint8Array.from(atob(i),t=>t.charCodeAt(0))}function Jt(i){return uu(i.replace(/-/g,"+").replace(/_/g,"/"),{alphabet:"base64",lastChunkHandling:"loose"})}var cu="abcdefghijklmnopqrstuvwxyz",hu="ABCDEFGHIJKLMNOPQRSTUVWXYZ",vu="0123456789";function fu(i){var e=new Uint8Array(i);return globalThis.crypto.getRandomValues(e),Lo(e)}function _n(i){return mu(i,hu+cu+vu)}function mu(i,e){if(e.length<2||e.length>256)throw new Error("Character set must be between 2 and 256 characters long");if(i<1||i>32768)throw new Error("Requested random string length must be between 1 and 32768");for(var t=256-256%e.length,r=new Uint8Array(Math.floor(i*1.3)),n=r.length,a=[];a.length<i;){n===r.length&&(globalThis.crypto.getRandomValues(r),n=0);var s=r[n++];s<t&&a.push(e[s%e.length])}return a.join("")}var ot="org.matrix.msc3077.sdp_stream_metadata",te=(function(i){return i.Usermedia="m.usermedia",i.Screenshare="m.screenshare",i})({}),wr=null,gi=0,pu=()=>(wr===null&&(wr=new AudioContext),gi++,wr),gu=()=>{if(gi--,gi===0){var i;(i=wr)===null||i===void 0||i.close(),wr=null}},yu=200,yi=-60,Eu=8,tt=(function(i){return i.NewStream="new_stream",i.MuteStateChanged="mute_state_changed",i.LocalVolumeChanged="local_volume_changed",i.VolumeChanged="volume_changed",i.ConnectedChanged="connected_changed",i.Speaking="speaking",i.Disposed="disposed",i})({});class it extends fe{constructor(e){super(),c(this,"stream",void 0),c(this,"sdpMetadataStreamId",void 0),c(this,"userId",void 0),c(this,"deviceId",void 0),c(this,"purpose",void 0),c(this,"speakingVolumeSamples",void 0),c(this,"client",void 0),c(this,"call",void 0),c(this,"roomId",void 0),c(this,"audioMuted",void 0),c(this,"videoMuted",void 0),c(this,"localVolume",1),c(this,"measuringVolumeActivity",!1),c(this,"audioContext",void 0),c(this,"analyser",void 0),c(this,"frequencyBinCount",void 0),c(this,"speakingThreshold",yi),c(this,"speaking",!1),c(this,"volumeLooperTimeout",void 0),c(this,"_disposed",!1),c(this,"_connected",!1),c(this,"onAddTrack",()=>{this.emit(tt.NewStream,this.stream)}),c(this,"onCallState",t=>{t===V.Connected?this.connected=!0:t===V.Connecting&&(this.connected=!1)}),c(this,"volumeLooper",()=>{if(this.analyser&&this.measuringVolumeActivity){this.analyser.getFloatFrequencyData(this.frequencyBinCount);var t=-1/0;for(var r of this.frequencyBinCount)r>t&&(t=r);this.speakingVolumeSamples.shift(),this.speakingVolumeSamples.push(t),this.emit(tt.VolumeChanged,t);var n=!1;for(var a of this.speakingVolumeSamples)if(a>this.speakingThreshold){n=!0;break}this.speaking!==n&&(this.speaking=n,this.emit(tt.Speaking,this.speaking)),this.volumeLooperTimeout=setTimeout(this.volumeLooper,yu)}}),this.client=e.client,this.call=e.call,this.roomId=e.roomId,this.userId=e.userId,this.deviceId=e.deviceId,this.purpose=e.purpose,this.audioMuted=e.audioMuted,this.videoMuted=e.videoMuted,this.speakingVolumeSamples=new Array(Eu).fill(-1/0),this.sdpMetadataStreamId=e.stream.id,this.updateStream(null,e.stream),this.stream=e.stream,this.hasAudioTrack&&this.initVolumeMeasuring(),e.call&&(e.call.addListener(Y.State,this.onCallState),this.onCallState(e.call.state))}get connected(){return this.isLocal()||this._connected}set connected(e){this._connected=e,this.emit(tt.ConnectedChanged,this.connected)}get hasAudioTrack(){return this.stream.getAudioTracks().length>0}updateStream(e,t){if(t!==e){var r=this.measuringVolumeActivity;e&&(e.removeEventListener("addtrack",this.onAddTrack),this.measureVolumeActivity(!1)),this.stream=t,t.addEventListener("addtrack",this.onAddTrack),this.hasAudioTrack?(this.initVolumeMeasuring(),r&&this.measureVolumeActivity(!0)):this.measureVolumeActivity(!1),this.emit(tt.NewStream,this.stream)}}initVolumeMeasuring(){if(this.hasAudioTrack){this.audioContext||(this.audioContext=pu()),this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=512,this.analyser.smoothingTimeConstant=.1;var e=this.audioContext.createMediaStreamSource(this.stream);e.connect(this.analyser),this.frequencyBinCount=new Float32Array(this.analyser.frequencyBinCount)}}getMember(){var e,t=this.client.getRoom(this.roomId);return(e=t?.getMember(this.userId))!==null&&e!==void 0?e:null}isLocal(){return this.userId===this.client.getUserId()&&(this.deviceId===void 0||this.deviceId===this.client.getDeviceId())}isAudioMuted(){return this.stream.getAudioTracks().length===0||this.audioMuted}isVideoMuted(){return this.stream.getVideoTracks().length===0||this.videoMuted}isSpeaking(){return this.speaking}setNewStream(e){this.updateStream(this.stream,e)}setAudioVideoMuted(e,t){e!==null&&(this.audioMuted!==e&&this.speakingVolumeSamples.fill(-1/0),this.audioMuted=e),t!==null&&(this.videoMuted=t),this.emit(tt.MuteStateChanged,this.audioMuted,this.videoMuted)}measureVolumeActivity(e){if(e){if(!this.analyser||!this.frequencyBinCount||!this.hasAudioTrack)return;this.measuringVolumeActivity=!0,this.volumeLooper()}else this.measuringVolumeActivity=!1,this.speakingVolumeSamples.fill(-1/0),this.emit(tt.VolumeChanged,-1/0)}setSpeakingThreshold(e){this.speakingThreshold=e}clone(){var e=this.client.getMediaHandler(),t=this.stream.clone();return T.log("CallFeed clone() cloning stream (originalStreamId=".concat(this.stream.id,", newStreamId").concat(t.id,")")),this.purpose===te.Usermedia?e.userMediaStreams.push(t):e.screensharingStreams.push(t),new it({client:this.client,roomId:this.roomId,userId:this.userId,deviceId:this.deviceId,stream:t,purpose:this.purpose,audioMuted:this.audioMuted,videoMuted:this.videoMuted})}dispose(){var e,t;clearTimeout(this.volumeLooperTimeout),(e=this.stream)===null||e===void 0||e.removeEventListener("addtrack",this.onAddTrack),(t=this.call)===null||t===void 0||t.removeListener(Y.State,this.onCallState),this.audioContext&&(this.audioContext=void 0,this.analyser=void 0,gu()),this._disposed=!0,this.emit(tt.Disposed)}get disposed(){return this._disposed}set disposed(e){this._disposed=e}getLocalVolume(){return this.localVolume}setLocalVolume(e){this.localVolume=e,this.emit(tt.LocalVolumeChanged,e)}}var Su=3e3,Ei=(function(i){return i.Incoming="Call.incoming",i})({});class bu{constructor(e){c(this,"calls",void 0),c(this,"callEventBuffer",void 0),c(this,"nextSeqByCall",new Map),c(this,"toDeviceEventBuffers",new Map),c(this,"client",void 0),c(this,"candidateEventsByCall",void 0),c(this,"eventBufferPromiseChain",void 0),c(this,"onSync",()=>{var t=this.callEventBuffer;this.callEventBuffer=[],this.eventBufferPromiseChain?this.eventBufferPromiseChain=this.eventBufferPromiseChain.then(()=>this.evaluateEventBuffer(t)):this.eventBufferPromiseChain=this.evaluateEventBuffer(t)}),c(this,"onRoomTimeline",t=>{this.callEventBuffer.push(t)}),c(this,"onToDeviceEvent",t=>{var r=t.getContent();if(!r.call_id){this.callEventBuffer.push(t);return}if(this.nextSeqByCall.has(r.call_id)||this.nextSeqByCall.set(r.call_id,0),r.seq===void 0){this.callEventBuffer.push(t);return}var n=this.nextSeqByCall.get(r.call_id)||0;if(r.seq!==n){this.toDeviceEventBuffers.has(r.call_id)||this.toDeviceEventBuffers.set(r.call_id,[]);var a=this.toDeviceEventBuffers.get(r.call_id),s=a.findIndex(u=>u.getContent().seq>r.seq);s===-1?a.push(t):a.splice(s,0,t)}else{var o=r.call_id;this.callEventBuffer.push(t),this.nextSeqByCall.set(o,r.seq+1);for(var l=this.toDeviceEventBuffers.get(o),d=l&&l.shift();d&&d.getContent().seq===this.nextSeqByCall.get(o);)this.callEventBuffer.push(d),this.nextSeqByCall.set(o,d.getContent().seq+1),d=l.shift()}}),this.client=e,this.calls=new Map,this.callEventBuffer=[],this.candidateEventsByCall=new Map}start(){this.client.on(x.Sync,this.onSync),this.client.on(U.Timeline,this.onRoomTimeline),this.client.on(x.ToDeviceEvent,this.onToDeviceEvent)}stop(){this.client.removeListener(x.Sync,this.onSync),this.client.removeListener(U.Timeline,this.onRoomTimeline),this.client.removeListener(x.ToDeviceEvent,this.onToDeviceEvent)}evaluateEventBuffer(e){var t=this;return R(function*(){yield Promise.all(e.map(u=>t.client.decryptEventIfNeeded(u)));var r=e.filter(u=>{var h=u.getType();return h.startsWith("m.call.")||h.startsWith("org.matrix.call.")}),n=new Set;for(var a of r){var s=a.getType();(s===M.CallAnswer||s===M.CallHangup)&&n.add(a.getContent().call_id)}for(var o of r){var l=o.getType(),d=o.getContent().call_id;if(!(l===M.CallInvite&&n.has(d)))try{yield t.handleCallEvent(o)}catch(u){T.error("CallEventHandler evaluateEventBuffer() caught exception handling call event",u)}}})()}handleCallEvent(e){var t=this;return R(function*(){var r;t.client.emit(x.ReceivedVoipEvent,e);var n=e.getContent(),a=e.getRoomId()||((r=t.client.groupCallEventHandler.getGroupCallById(n.conf_id))===null||r===void 0||(r=r.room)===null||r===void 0?void 0:r.roomId),s=n.conf_id,o=e.getType(),l=e.getSender(),d=n.call_id?t.calls.get(n.call_id):void 0,u,h;if(s){if(h=t.client.groupCallEventHandler.getGroupCallById(s),!h){T.warn("CallEventHandler handleCallEvent() could not find a group call - ignoring event (groupCallId=".concat(s,", type=").concat(o,")"));return}if(u=n.device_id,!u){T.warn("CallEventHandler handleCallEvent() could not find a device id - ignoring event (senderId=".concat(l,")")),h.emit(ie.Error,new Uo(l));return}if(n.dest_session_id!==t.client.getSessionId()){T.warn("CallEventHandler handleCallEvent() call event does not match current session id - ignoring");return}}var m=l===t.client.credentials.userId&&(u===void 0||u===t.client.getDeviceId());if(a){if(o===M.CallInvite){var E,f,p;if(m||e.getLocalAge()>n.lifetime-Su||d&&d.state===V.Ended||(d&&T.warn("CallEventHandler handleCallEvent() already has a call but got an invite - clobbering (callId=".concat(n.call_id,")")),n.invitee&&n.invitee!==t.client.getUserId()))return;var I=((E=t.client.getTurnServersExpiry())!==null&&E!==void 0?E:0)-Date.now();if(T.info("CallEventHandler handleCallEvent() current turn creds expire in "+I+" ms"),d=(f=Rn(t.client,a,{forceTURN:t.client.forceTURN,opponentDeviceId:u,groupCallId:s,opponentSessionId:n.sender_session_id}))!==null&&f!==void 0?f:void 0,!d){T.log("CallEventHandler handleCallEvent() this client does not support WebRTC (callId=".concat(n.call_id,")"));return}d.callId=n.call_id;var S=(p=h)===null||p===void 0?void 0:p.getGroupCallStats();S&&d.initStats(S);try{yield d.initWithInvite(e)}catch(k){if(k instanceof nt)if(k.code===Mr.UnknownDevice){var g;(g=h)===null||g===void 0||g.emit(ie.Error,k)}else T.error(k)}if(t.calls.set(d.callId,d),t.candidateEventsByCall.get(d.callId))for(var _ of t.candidateEventsByCall.get(d.callId))d.onRemoteIceCandidatesReceived(_);var y;for(var b of t.calls.values()){var v,w=[V.WaitLocalMedia,V.CreateOffer,V.InviteSent].includes(b.state);if(d.roomId===b.roomId&&b.direction===ut.Outbound&&((v=d.getOpponentMember())===null||v===void 0?void 0:v.userId)===b.invitee&&w){y=b;break}}y?y.callId>d.callId?(T.log("CallEventHandler handleCallEvent() detected glare - answering incoming call and canceling outgoing call (incomingId=".concat(d.callId,", outgoingId=").concat(y.callId,")")),y.replacedBy(d)):(T.log("CallEventHandler handleCallEvent() detected glare - hanging up incoming call (incomingId=".concat(d.callId,", outgoingId=").concat(y.callId,")")),d.hangup(W.Replaced,!0)):t.client.emit(Ei.Incoming,d);return}else if(o===M.CallCandidates){if(m)return;d?d.onRemoteIceCandidatesReceived(e):(t.candidateEventsByCall.has(n.call_id)||t.candidateEventsByCall.set(n.call_id,[]),t.candidateEventsByCall.get(n.call_id).push(e));return}else if([M.CallHangup,M.CallReject].includes(o)){if(d)d.state!==V.Ended&&(o===M.CallHangup?d.onHangupReceived(n):d.onRejectReceived(n),d.state===V.Ended&&t.calls.delete(n.call_id));else{var C;d=(C=Rn(t.client,a,{opponentDeviceId:u,opponentSessionId:n.sender_session_id}))!==null&&C!==void 0?C:void 0,d&&(d.callId=n.call_id,d.initWithHangup(e),t.calls.set(n.call_id,d))}return}if(!d||!d.hasPeerConnection){T.info("CallEventHandler handleCallEvent() discarding possible call event as we don't have a call (type=".concat(o,")"));return}if(e.getContent().party_id!==d.ourPartyId)switch(o){case M.CallAnswer:m?d.state===V.Ringing&&d.onAnsweredElsewhere(n):d.onAnswerReceived(e);break;case M.CallSelectAnswer:d.onSelectAnswerReceived(e);break;case M.CallNegotiate:d.onNegotiateReceived(e);break;case M.CallAssertedIdentity:case M.CallAssertedIdentityPrefix:d.onAssertedIdentityReceived(e);break;case M.CallSDPStreamMetadataChanged:case M.CallSDPStreamMetadataChangedPrefix:d.onSDPStreamMetadataChangedReceived(e);break}}})()}}var Si=(function(i){return i.Incoming="GroupCall.incoming",i.Outgoing="GroupCall.outgoing",i.Ended="GroupCall.ended",i.Participants="GroupCall.participants",i})({});class _u{constructor(e){this.client=e,c(this,"groupCalls",new Map),c(this,"roomDeferreds",new Map),c(this,"onRoomsChanged",t=>{this.createGroupCallForRoom(t)}),c(this,"onRoomStateChanged",(t,r)=>{var n=t.getType();if(n===M.GroupCallPrefix){var a=t.getStateKey(),s=t.getContent(),o=this.groupCalls.get(r.roomId);!o&&!s["m.terminated"]&&!t.isRedacted()?this.createGroupCallFromRoomStateEvent(t):o&&o.groupCallId===a?s["m.terminated"]||t.isRedacted()?o.terminate(!1):s["m.type"]!==o.type&&T.warn("GroupCallEventHandler onRoomStateChanged() currently does not support changing type (roomId=".concat(r.roomId,")")):o&&o.groupCallId!==a&&T.warn("GroupCallEventHandler onRoomStateChanged() currently does not support multiple calls (roomId=".concat(r.roomId,")"))}})}start(){var e=this;return R(function*(){e.client.getSyncState()!==ae.Syncing&&(T.debug("GroupCallEventHandler start() waiting for client to start syncing"),yield new Promise(n=>{var a=()=>{if(e.client.getSyncState()===ae.Syncing)return e.client.off(x.Sync,a),n()};e.client.on(x.Sync,a)}));var t=e.client.getRooms();for(var r of t)e.createGroupCallForRoom(r);e.client.on(x.Room,e.onRoomsChanged),e.client.on(X.Events,e.onRoomStateChanged)})()}stop(){this.client.removeListener(x.Room,this.onRoomsChanged),this.client.removeListener(X.Events,this.onRoomStateChanged)}getRoomDeferred(e){var t=this.roomDeferreds.get(e);if(t===void 0){var r;t={prom:new Promise(n=>{r=n})},t.resolve=r,this.roomDeferreds.set(e,t)}return t}waitUntilRoomReadyForGroupCalls(e){return this.getRoomDeferred(e).prom}getGroupCallById(e){return[...this.groupCalls.values()].find(t=>t.groupCallId===e)}createGroupCallForRoom(e){var t=e.currentState.getStateEvents(M.GroupCallPrefix),r=t.sort((s,o)=>o.getTs()-s.getTs());for(var n of r){var a=n.getContent();if(!(a["m.terminated"]||n.isRedacted())){T.debug("GroupCallEventHandler createGroupCallForRoom() choosing group call from possible calls (stateKey=".concat(n.getStateKey(),", ts=").concat(n.getTs(),", roomId=").concat(e.roomId,", numOfPossibleCalls=").concat(t.length,")")),this.createGroupCallFromRoomStateEvent(n);break}}this.getRoomDeferred(e.roomId).resolve()}createGroupCallFromRoomStateEvent(e){var t=e.getRoomId(),r=e.getContent(),n=this.client.getRoom(t);if(!n){T.warn("GroupCallEventHandler createGroupCallFromRoomStateEvent() couldn't find room for call (roomId=".concat(t,")"));return}var a=e.getStateKey(),s=r["m.type"];if(!Object.values(qi).includes(s)){T.warn("GroupCallEventHandler createGroupCallFromRoomStateEvent() received invalid call type (type=".concat(s,", roomId=").concat(t,")"));return}var o=r["m.intent"];if(!Object.values(Lu).includes(o)){T.warn("Received invalid group call intent (type=".concat(s,", roomId=").concat(t,")"));return}var l=!!r["io.element.ptt"],d;if(r!=null&&r.dataChannelsEnabled&&r!==null&&r!==void 0&&r.dataChannelOptions){var{ordered:u,maxPacketLifeTime:h,maxRetransmits:m,protocol:E}=r.dataChannelOptions;d={ordered:u,maxPacketLifeTime:h,maxRetransmits:m,protocol:E}}var f=new No(this.client,n,s,l,o,a,r?.dataChannelsEnabled||this.client.isVoipWithNoMediaAllowed,d,this.client.isVoipWithNoMediaAllowed,this.client.useLivekitForGroupCalls,r["io.element.livekit_service_url"]);return this.groupCalls.set(n.roomId,f),this.client.emit(Si.Incoming,f),f}}class Ru{constructor(){c(this,"bandwidth",{}),c(this,"bitrate",{}),c(this,"packetLoss",{}),c(this,"transport",[])}}class Iu{static buildBandwidthReport(e){var t=e.availableIncomingBitrate,r=e.availableOutgoingBitrate;return{download:t?Math.round(t/1e3):0,upload:r?Math.round(r/1e3):0}}}class Tu{static buildReport(e,t,r,n){var a=e?.get(t.localCandidateId),s=e?.get(t.remoteCandidateId);if(s&&a){var o=s.ip!==void 0?s.ip:s.address,l=s.port,d="".concat(o,":").concat(l),u=a.ip!==void 0?a.ip:a.address,h=a.port,m="".concat(u,":").concat(h),E=s.protocol;r.some(f=>f.ip===d&&f.type===E&&f.localIp===m)||r.push({ip:d,type:E,localIp:m,isFocus:n,localCandidateType:a.candidateType,remoteCandidateType:s.candidateType,networkType:a.networkType,rtt:t.currentRoundTripTime?t.currentRoundTripTime*1e3:NaN})}return r}}class wu{constructor(){c(this,"ssrcToMid",{local:new Map,remote:new Map})}findMidBySsrc(e,t){var r;return this.ssrcToMid[t].forEach((n,a)=>{if(n.find(s=>s==e)){r=a;return}}),r}parse(e,t){var r=pi.parse(e),n=new Map;r.media.forEach(a=>{if(a.mid&&a.type==="video"||a.type==="audio"){var s,o=[];(s=a.ssrcs)===null||s===void 0||s.forEach(l=>{l.attribute==="cname"&&o.push("".concat(l.id))}),n.set("".concat(a.mid),o)}}),this.ssrcToMid[t]=n}getSsrcToMidMap(e){return this.ssrcToMid[e]}}class Cu{constructor(e){this.pc=e}getLocalTracks(e){var t=r=>r!==null&&r.kind===e;return this.pc.getTransceivers().filter(r=>r.currentDirection==="sendonly"||r.currentDirection==="sendrecv").filter(r=>r.sender!==null).map(r=>r.sender).map(r=>r.track).filter(t)}getTackById(e){return this.pc.getTransceivers().map(t=>{if(t?.sender.track!==null&&t.sender.track.id===e)return t.sender.track;if(t?.receiver.track!==null&&t.receiver.track.id===e)return t.receiver.track}).find(t=>t!==void 0)}getLocalTrackIdByMid(e){var t,r=this.pc.getTransceivers().find(n=>n.mid===e);return r==null||(t=r.sender)===null||t===void 0||(t=t.track)===null||t===void 0?void 0:t.id}getRemoteTrackIdByMid(e){var t,r=this.pc.getTransceivers().find(n=>n.mid===e);return r==null||(t=r.receiver)===null||t===void 0||(t=t.track)===null||t===void 0?void 0:t.id}getActiveSimulcastStreams(){return 3}getTransceiverByTrackId(e){return this.pc.getTransceivers().find(t=>t.receiver.track.id===e||t.sender.track!==null&&t.sender.track.id===e)}}class Mu{constructor(e,t,r){this.trackId=e,this.type=t,this.kind=r,c(this,"loss",{packetsTotal:0,packetsLost:0,isDownloadStream:!1}),c(this,"bitrate",{download:0,upload:0}),c(this,"resolution",{width:-1,height:-1}),c(this,"audioConcealment",{concealedAudio:0,totalAudioDuration:0}),c(this,"framerate",0),c(this,"jitter",0),c(this,"codec",""),c(this,"isAlive",!0),c(this,"isMuted",!1),c(this,"isEnabled",!0)}getType(){return this.type}setLoss(e){this.loss=e}getLoss(){return this.loss}setResolution(e){this.resolution=e}getResolution(){return this.resolution}setFramerate(e){this.framerate=e}getFramerate(){return this.framerate}setBitrate(e){this.bitrate=e}getBitrate(){return this.bitrate}setCodec(e){return this.codec=e,!0}getCodec(){return this.codec}resetBitrate(){this.bitrate={download:0,upload:0}}set alive(e){this.isAlive=e}get alive(){return this.isAlive}set muted(e){this.isMuted=e}get muted(){return this.isMuted}set enabled(e){this.isEnabled=e}get enabled(){return this.isEnabled}setJitter(e){this.jitter=e}getJitter(){return this.jitter}setAudioConcealment(e,t){this.audioConcealment.concealedAudio=e,this.audioConcealment.totalAudioDuration=t}getAudioConcealment(){return this.audioConcealment}}class Ou{constructor(e,t){this.mediaSsrcHandler=e,this.mediaTrackHandler=t,c(this,"track2stats",new Map)}findTrack2Stats(e,t){var r;if(e.trackIdentifier)r=e.trackIdentifier;else if(e.mid)r=t==="remote"?this.mediaTrackHandler.getRemoteTrackIdByMid(e.mid):this.mediaTrackHandler.getLocalTrackIdByMid(e.mid);else if(e.ssrc){var n=this.mediaSsrcHandler.findMidBySsrc(e.ssrc,t);if(!n)return;r=t==="remote"?this.mediaTrackHandler.getRemoteTrackIdByMid(e.mid):this.mediaTrackHandler.getLocalTrackIdByMid(e.mid)}if(r){var a=this.track2stats.get(r);if(!a){var s=this.mediaTrackHandler.getTackById(r);if(s!==void 0){var o=s.kind==="audio"?s.kind:"video";a=new Mu(r,t,o),this.track2stats.set(r,a)}else return}return a}}findLocalVideoTrackStats(e){var t=this.mediaTrackHandler.getLocalTracks("video");if(t.length!==0)return this.findTrack2Stats(e,"local")}getTrack2stats(){return this.track2stats}findTransceiverByTrackId(e){return this.mediaTrackHandler.getTransceiverByTrackId(e)}}class Ct{static getNonNegativeValue(e){var t=e;return typeof t!="number"&&(t=Number(t)),isNaN(t)?0:Math.max(0,t)}}class Ae{static buildFramerateResolution(e,t){var r={height:t.frameHeight,width:t.frameWidth},n=t.framesPerSecond;r.height&&r.width&&e.setResolution(r),e.setFramerate(Math.round(n||0))}static calculateSimulcastFramerate(e,t,r,n){var a=e.getFramerate();if(!a){if(r){var s=t.timestamp-r.timestamp;if(s>0&&t.framesSent){var o=t.framesSent-r.framesSent;a=o/s*1e3}}if(!a)return}a=n?Math.round(a/n):0,e.setFramerate(a)}static buildCodec(e,t,r){var n=e?.get(r.codecId);if(n){var a=n.mimeType.split("/")[1];a&&t.setCodec(a)}}static buildBitrateReceived(e,t,r){e.setBitrate({download:Ae.calculateBitrate(t.bytesReceived,r.bytesReceived,t.timestamp,r.timestamp),upload:0})}static buildBitrateSend(e,t,r){e.setBitrate({download:0,upload:this.calculateBitrate(t.bytesSent,r.bytesSent,t.timestamp,r.timestamp)})}static buildPacketsLost(e,t,r){var n=t.type==="outbound-rtp"?"packetsSent":"packetsReceived",a=t[n];(!a||a<0)&&(a=0);var s=Ct.getNonNegativeValue(r[n]),o=Math.max(0,a-s),l=Ct.getNonNegativeValue(t.packetsLost),d=Ct.getNonNegativeValue(r.packetsLost),u=Math.max(0,l-d);e.setLoss({packetsTotal:o+u,packetsLost:u,isDownloadStream:t.type!=="outbound-rtp"})}static calculateBitrate(e,t,r,n){var a=Ct.getNonNegativeValue(e),s=Ct.getNonNegativeValue(t),o=Math.max(0,a-s),l=r-n,d=0;return l>0&&(d=Math.round(o*8/l)),d}static setTrackStatsState(e,t){var r;if(t===void 0){e.alive=!1;return}var n=e.getType()==="remote"?t.receiver.track:t==null||(r=t.sender)===null||r===void 0?void 0:r.track;if(n==null){e.alive=!1;return}if(n.readyState==="ended"){e.alive=!1;return}e.muted=n.muted,e.enabled=n.enabled,e.alive=!0}static buildTrackSummary(e){var t={count:0,muted:0,maxJitter:0,maxPacketLoss:0,concealedAudio:0,totalAudio:0},r={count:0,muted:0,maxJitter:0,maxPacketLoss:0,concealedAudio:0,totalAudio:0},n=e.filter(s=>s.getType()==="remote"),a=n.filter(s=>s.kind==="audio");return n.forEach(s=>{var o=s.kind==="video"?t:r;if(o.count++,s.alive&&s.muted&&o.muted++,o.maxJitter<s.getJitter()&&(o.maxJitter=s.getJitter()),o.maxPacketLoss<s.getLoss().packetsLost&&(o.maxPacketLoss=s.getLoss().packetsLost),a.length>0){var l,d;o.concealedAudio+=(l=s.getAudioConcealment())===null||l===void 0?void 0:l.concealedAudio,o.totalAudio+=(d=s.getAudioConcealment())===null||d===void 0?void 0:d.totalAudioDuration}}),{audioTrackSummary:r,videoTrackSummary:t}}static buildJitter(e,t){if(t.type==="inbound-rtp"){var r=t?.jitter;if(r!==void 0){var n=Ct.getNonNegativeValue(r);e.setJitter(Math.round(n*1e3))}else e.setJitter(-1)}}static buildAudioConcealment(e,t){if(t.type==="inbound-rtp"){var r=1e3*t?.totalSamplesDuration/t?.totalSamplesReceived,n=r*t?.concealedSamples,a=1e3*t?.totalSamplesDuration;e.setAudioConcealment(n,a)}}}class Cr{static build(e){var t={},r={download:0,upload:0},n={download:0,upload:0},a=0,s=0,o={local:new Map,remote:new Map},l={local:new Map,remote:new Map},d={local:new Map,remote:new Map},u=new Map,h=new Map,m=0,E=0,f=0,p=0,I=0,S=0;for(var[g,_]of e){var y=_.getLoss(),b=y.isDownloadStream?"download":"upload";if(r[b]+=y.packetsTotal,n[b]+=y.packetsLost,a+=_.getBitrate().download,s+=_.getBitrate().upload,_.kind==="audio"){var v=_.getAudioConcealment();I+=v.concealedAudio,S+=v.totalAudioDuration,m+=_.getBitrate().download,E+=_.getBitrate().upload}else f+=_.getBitrate().download,p+=_.getBitrate().upload;o[_.getType()].set(g,_.getResolution()),l[_.getType()].set(g,_.getFramerate()),d[_.getType()].set(g,_.getCodec()),_.getType()==="remote"&&(u.set(g,_.getJitter()),_.kind==="audio"&&h.set(g,_.getAudioConcealment())),_.resetBitrate()}return t.bitrate={upload:s,download:a},t.bitrate.audio={upload:E,download:m},t.bitrate.video={upload:p,download:f},t.packetLoss={total:Cr.calculatePacketLoss(n.download+n.upload,r.download+r.upload),download:Cr.calculatePacketLoss(n.download,r.download),upload:Cr.calculatePacketLoss(n.upload,r.upload)},t.audioConcealment=h,t.totalAudioConcealment={concealedAudio:I,totalAudioDuration:S},t.framerate=l,t.resolution=o,t.codec=d,t.jitter=u,t}static calculatePacketLoss(e,t){return!t||t<=0||!e||e<=0?0:Math.round(e/t*100)}}class mt{static buildCallFeedReport(e,t,r){var n=r.getTransceivers(),a=[],s=[];return n.forEach(o=>{var l,d=(l=o.sender)!==null&&l!==void 0&&l.track?mt.buildTrackStats(o.sender.track,"sender"):null,u=mt.buildTrackStats(o.receiver.track,"receiver");a.push({mid:o.mid==null?"null":o.mid,direction:o.direction,currentDirection:o.currentDirection==null?"null":o.currentDirection,sender:d,receiver:u})}),{callId:e,opponentMemberId:t,transceiver:a,callFeeds:s}}static buildTrackStats(e){var t,r,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"--",a=(t=e.getSettings())===null||t===void 0?void 0:t.deviceId,s=(r=e.getConstraints())===null||r===void 0?void 0:r.deviceId;return{id:e.id,kind:e.kind,settingDeviceId:a??"unknown",constrainDeviceId:s??"unknown",muted:e.muted,enabled:e.enabled,readyState:e.readyState,label:n}}static expandCallFeedReport(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"unknown";return t.forEach(n=>{var a=n.stream.getAudioTracks(),s=n.stream.getVideoTracks(),o=a.length>0?mt.buildTrackStats(n.stream.getAudioTracks()[0],n.purpose):null,l=s.length>0?mt.buildTrackStats(n.stream.getVideoTracks()[0],n.purpose):null,d={stream:n.stream.id,type:n.isLocal()?"local":"remote",audio:o,video:l,purpose:n.purpose,prefix:r,isVideoMuted:n.isVideoMuted(),isAudioMuted:n.isAudioMuted()};e.callFeeds.push(d)}),e}}function ss(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(i);e&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(i,n).enumerable})),t.push.apply(t,r)}return t}function en(i){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?ss(Object(t),!0).forEach(function(r){c(i,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(t)):ss(Object(t)).forEach(function(r){Object.defineProperty(i,r,Object.getOwnPropertyDescriptor(t,r))})}return i}class ku{constructor(e,t,r,n){var a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0;this.callId=e,this.opponentMemberId=t,this.pc=r,this.emitter=n,this.isFocus=a,c(this,"isActive",!0),c(this,"previousStatsReport",void 0),c(this,"currentStatsReport",void 0),c(this,"connectionStats",new Ru),c(this,"trackStats",void 0),r.addEventListener("signalingstatechange",this.onSignalStateChange.bind(this)),this.trackStats=new Ou(new wu,new Cu(r))}processStats(e,t){var r=this;return R(function*(){var n={isFirstCollection:r.previousStatsReport===void 0,receivedMedia:0,receivedAudioMedia:0,receivedVideoMedia:0,audioTrackSummary:{count:0,muted:0,maxPacketLoss:0,maxJitter:0,concealedAudio:0,totalAudio:0},videoTrackSummary:{count:0,muted:0,maxPacketLoss:0,maxJitter:0,concealedAudio:0,totalAudio:0}};if(r.isActive){var a=r.pc.getStats();if(typeof a?.then=="function")return a.then(s=>{var o,l;r.currentStatsReport=typeof s?.result=="function"?s.result():s;try{r.processStatsReport(e,t)}catch(u){return r.handleError(u),n}r.previousStatsReport=r.currentStatsReport,n.receivedMedia=r.connectionStats.bitrate.download,n.receivedAudioMedia=((o=r.connectionStats.bitrate.audio)===null||o===void 0?void 0:o.download)||0,n.receivedVideoMedia=((l=r.connectionStats.bitrate.video)===null||l===void 0?void 0:l.download)||0;var d=Ae.buildTrackSummary(Array.from(r.trackStats.getTrack2stats().values()));return en(en({},n),{},{audioTrackSummary:d.audioTrackSummary,videoTrackSummary:d.videoTrackSummary})}).catch(s=>(r.handleError(s),n));r.isActive=!1}return Promise.resolve(n)})()}processStatsReport(e,t){var r,n=new Map;n.callId=this.callId,n.opponentMemberId=this.opponentMemberId,(r=this.currentStatsReport)===null||r===void 0||r.forEach(a=>{var s=this.previousStatsReport?this.previousStatsReport.get(a.id):null;if(a.type==="candidate-pair"&&a.nominated&&a.state==="succeeded")this.connectionStats.bandwidth=Iu.buildBandwidthReport(a),this.connectionStats.transport=Tu.buildReport(this.currentStatsReport,a,this.connectionStats.transport,this.isFocus);else if(a.type==="inbound-rtp"||a.type==="outbound-rtp"){var o=this.trackStats.findTrack2Stats(a,a.type==="inbound-rtp"?"remote":"local");if(!o)return;if(s&&Ae.buildPacketsLost(o,a,s),a.type==="inbound-rtp"){Ae.buildFramerateResolution(o,a),s&&Ae.buildBitrateReceived(o,a,s);var l=this.trackStats.findTransceiverByTrackId(o.trackId);Ae.setTrackStatsState(o,l),Ae.buildJitter(o,a),Ae.buildAudioConcealment(o,a)}else s&&(n.set(o.trackId,Ct.getNonNegativeValue(a.bytesSent)),Ae.buildBitrateSend(o,a,s));Ae.buildCodec(this.currentStatsReport,o,a)}else if(a.type==="track"&&a.kind==="video"&&!a.remoteSource){var d=this.trackStats.findLocalVideoTrackStats(a);if(!d)return;Ae.buildFramerateResolution(d,a),Ae.calculateSimulcastFramerate(d,a,s,this.trackStats.mediaTrackHandler.getActiveSimulcastStreams())}}),this.emitter.emitByteSendReport(n),this.emitter.emitCallFeedReport(mt.buildCallFeedReport(this.callId,this.opponentMemberId,this.pc)),this.processAndEmitConnectionStatsReport()}setActive(e){this.isActive=e}getActive(){return this.isActive}handleError(e){this.isActive=!1,T.warn("CallStatsReportGatherer ".concat(this.callId," processStatsReport fails and set to inactive ").concat(e))}processAndEmitConnectionStatsReport(){var e=Cr.build(this.trackStats.getTrack2stats());e.callId=this.callId,e.opponentMemberId=this.opponentMemberId,this.connectionStats.bandwidth=e.bandwidth,this.connectionStats.bitrate=e.bitrate,this.connectionStats.packetLoss=e.packetLoss,this.emitter.emitConnectionStatsReport(en(en({},e),{},{transport:this.connectionStats.transport})),this.connectionStats.transport=[]}stopProcessingStats(){}onSignalStateChange(){this.pc.signalingState==="stable"&&(this.pc.currentRemoteDescription&&this.trackStats.mediaSsrcHandler.parse(this.pc.currentRemoteDescription.sdp,"remote"),this.pc.currentLocalDescription&&this.trackStats.mediaSsrcHandler.parse(this.pc.currentLocalDescription.sdp,"local"))}setOpponentMemberId(e){this.opponentMemberId=e}}var pt=(function(i){return i.CONNECTION_STATS="StatsReport.connection_stats",i.CALL_FEED_REPORT="StatsReport.call_feed_report",i.BYTE_SENT_STATS="StatsReport.byte_sent_stats",i.SUMMARY_STATS="StatsReport.summary_stats",i})({});class Pu extends fe{emitByteSendReport(e){this.emit(pt.BYTE_SENT_STATS,e)}emitConnectionStatsReport(e){this.emit(pt.CONNECTION_STATS,e)}emitCallFeedReport(e){this.emit(pt.CALL_FEED_REPORT,e)}emitSummaryStatsReport(e){this.emit(pt.SUMMARY_STATS,e)}}class Do{constructor(e){this.emitter=e}build(e){var t=e.filter(u=>!u.isFirstCollection),r=t.length,n=e.length;if(r!==0){var a={receivedAudio:0,receivedVideo:0,receivedMedia:0,concealedAudio:0,totalAudio:0},s=0,o=0;t.forEach(u=>{this.countTrackListReceivedMedia(a,u),this.countConcealedAudio(a,u),s=this.buildMaxJitter(s,u),o=this.buildMaxPacketLoss(o,u)});var l=5,d={percentageReceivedMedia:Number((a.receivedMedia/r).toFixed(l)),percentageReceivedVideoMedia:Number((a.receivedVideo/r).toFixed(l)),percentageReceivedAudioMedia:Number((a.receivedAudio/r).toFixed(l)),maxJitter:s,maxPacketLoss:o,percentageConcealedAudio:Number(a.totalAudio>0?(a.concealedAudio/a.totalAudio).toFixed(l):0),peerConnections:n};this.emitter.emitSummaryStatsReport(d)}}static extendSummaryReport(e,t){var r=[],n=[];for(var a of t){n.push(a);for(var s of a[1])r.push(s)}e.opponentDevicesInCall=Math.max(0,r.length-1),e.opponentUsersInCall=Math.max(0,n.length-1),e.diffDevicesToPeerConnections=Math.max(0,r.length-1)-e.peerConnections,e.ratioPeerConnectionToDevices=Math.max(0,r.length-1)==0?0:e.peerConnections/(r.length-1)}countTrackListReceivedMedia(e,t){var r=!1,n=!1;(t.receivedAudioMedia>0||t.audioTrackSummary.count===0)&&(e.receivedAudio++,r=!0),(t.receivedVideoMedia>0||t.videoTrackSummary.count===0||t.videoTrackSummary.muted>0&&t.videoTrackSummary.muted===t.videoTrackSummary.count)&&(e.receivedVideo++,n=!0),n&&r&&e.receivedMedia++}buildMaxJitter(e,t){return e<t.videoTrackSummary.maxJitter&&(e=t.videoTrackSummary.maxJitter),e<t.audioTrackSummary.maxJitter&&(e=t.audioTrackSummary.maxJitter),e}buildMaxPacketLoss(e,t){return e<t.videoTrackSummary.maxPacketLoss&&(e=t.videoTrackSummary.maxPacketLoss),e<t.audioTrackSummary.maxPacketLoss&&(e=t.audioTrackSummary.maxPacketLoss),e}countConcealedAudio(e,t){e.concealedAudio+=t.audioTrackSummary.concealedAudio,e.totalAudio+=t.audioTrackSummary.totalAudio}}class Au{constructor(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1e4;this.groupCallId=e,this.userId=t,this.interval=r,c(this,"timer",void 0),c(this,"gatherers",new Map),c(this,"reports",new Pu),c(this,"summaryStatsReportGatherer",new Do(this.reports))}start(){this.timer===void 0&&this.interval>0&&(this.timer=setInterval(()=>{this.processStats()},this.interval))}stop(){this.timer!==void 0&&(clearInterval(this.timer),this.gatherers.forEach(e=>e.stopProcessingStats()))}hasStatsReportGatherer(e){return this.gatherers.has(e)}addStatsReportGatherer(e,t,r){return this.hasStatsReportGatherer(e)?!1:(this.gatherers.set(e,new ku(e,t,r,this.reports)),!0)}removeStatsReportGatherer(e){return this.gatherers.delete(e)}getStatsReportGatherer(e){return this.hasStatsReportGatherer(e)?this.gatherers.get(e):void 0}updateOpponentMember(e,t){var r;(r=this.getStatsReportGatherer(e))===null||r===void 0||r.setOpponentMemberId(t)}processStats(){var e=[];this.gatherers.forEach(t=>{e.push(t.processStats(this.groupCallId,this.userId))}),Promise.all(e).then(t=>this.summaryStatsReportGatherer.build(t)).catch(t=>{T.error("Could not build summary stats report",t)})}setInterval(e){this.interval=e}}function os(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(i);e&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(i,n).enumerable})),t.push.apply(t,r)}return t}function tn(i){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?os(Object(t),!0).forEach(function(r){c(i,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(t)):os(Object(t)).forEach(function(r){Object.defineProperty(i,r,Object.getOwnPropertyDescriptor(t,r))})}return i}var Lu=(function(i){return i.Ring="m.ring",i.Prompt="m.prompt",i.Room="m.room",i})({}),qi=(function(i){return i.Video="m.video",i.Voice="m.voice",i})({}),Du=(function(i){return i.CallEnded="call_ended",i})({}),ie=(function(i){return i.GroupCallStateChanged="group_call_state_changed",i.ActiveSpeakerChanged="active_speaker_changed",i.CallsChanged="calls_changed",i.UserMediaFeedsChanged="user_media_feeds_changed",i.ScreenshareFeedsChanged="screenshare_feeds_changed",i.LocalScreenshareStateChanged="local_screenshare_state_changed",i.LocalMuteStateChanged="local_mute_state_changed",i.ParticipantsChanged="participants_changed",i.Error="group_call_error",i})({}),rn=(function(i){return i.ConnectionStats="GroupCall.connection_stats",i.ByteSentStats="GroupCall.byte_sent_stats",i.SummaryStats="GroupCall.summary_stats",i.CallFeedStats="GroupCall.call_feed_stats",i})({}),Mr=(function(i){return i.NoUserMedia="no_user_media",i.UnknownDevice="unknown_device",i.PlaceCallFailed="place_call_failed",i})({});class bi extends Error{constructor(e,t,r){r?(super(t+": "+r),c(this,"code",void 0)):(super(t),c(this,"code",void 0)),this.code=e}}class Uo extends bi{constructor(e){super(Mr.UnknownDevice,"No device found for "+e),this.userId=e}}var ve=(function(i){return i.LocalCallFeedUninitialized="local_call_feed_uninitialized",i.InitializingLocalCallFeed="initializing_local_call_feed",i.LocalCallFeedInitialized="local_call_feed_initialized",i.Entered="entered",i.Ended="ended",i})({}),ls=1e3*60*60;function nn(i){var e;return((e=i.getOpponentMember())===null||e===void 0?void 0:e.userId)||i.invitee||null}class No extends fe{constructor(e,t,r,n,a,s,o,l,d){var u,h,m=arguments.length>9&&arguments[9]!==void 0?arguments[9]:!1,E=arguments.length>10?arguments[10]:void 0;super(),this.client=e,this.room=t,this.type=r,this.isPtt=n,this.intent=a,this.dataChannelsEnabled=o,this.dataChannelOptions=l,this.useLivekit=m,c(this,"activeSpeakerInterval",1e3),c(this,"retryCallInterval",5e3),c(this,"participantTimeout",1e3*15),c(this,"pttMaxTransmitTime",1e3*20),c(this,"activeSpeaker",void 0),c(this,"localCallFeed",void 0),c(this,"localScreenshareFeed",void 0),c(this,"localDesktopCapturerSourceId",void 0),c(this,"userMediaFeeds",[]),c(this,"screenshareFeeds",[]),c(this,"groupCallId",void 0),c(this,"allowCallWithoutVideoAndAudio",void 0),c(this,"calls",new Map),c(this,"callHandlers",new Map),c(this,"activeSpeakerLoopInterval",void 0),c(this,"retryCallLoopInterval",void 0),c(this,"retryCallCounts",new Map),c(this,"reEmitter",void 0),c(this,"transmitTimer",null),c(this,"participantsExpirationTimer",null),c(this,"resendMemberStateTimer",null),c(this,"initWithAudioMuted",!1),c(this,"initWithVideoMuted",!1),c(this,"initCallFeedPromise",void 0),c(this,"_livekitServiceURL",void 0),c(this,"stats",void 0),c(this,"statsCollectIntervalTime",0),c(this,"onConnectionStats",f=>{this.emit(rn.ConnectionStats,{report:f})}),c(this,"onByteSentStats",f=>{this.emit(rn.ByteSentStats,{report:f})}),c(this,"onSummaryStats",f=>{Do.extendSummaryReport(f,this.participants),this.emit(rn.SummaryStats,{report:f})}),c(this,"onCallFeedReport",f=>{this.localCallFeed&&(f=mt.expandCallFeedReport(f,[this.localCallFeed],"from-local-feed"));var p=[];this.forEachCall(I=>{I.callId===f.callId&&I.getFeeds().forEach(S=>p.push(S))}),f=mt.expandCallFeedReport(f,p,"from-call-feed"),this.emit(rn.CallFeedStats,{report:f})}),c(this,"_state",ve.LocalCallFeedUninitialized),c(this,"_participants",new Map),c(this,"_creationTs",null),c(this,"_enteredViaAnotherSession",!1),c(this,"onIncomingCall",f=>{var p,I;if(f.roomId===this.room.roomId){if(f.state!==V.Ringing){T.warn("GroupCall ".concat(this.groupCallId," onIncomingCall() incoming call no longer in ringing state - ignoring"));return}if(!f.groupCallId||f.groupCallId!==this.groupCallId){T.log("GroupCall ".concat(this.groupCallId," onIncomingCall() ignored because it doesn't match the current group call")),f.reject();return}var S=(p=f.getOpponentMember())===null||p===void 0?void 0:p.userId;if(S===void 0){T.warn("GroupCall ".concat(this.groupCallId," onIncomingCall() incoming call with no member - ignoring"));return}if(this.useLivekit){T.info("Received incoming call whilst in signaling-only mode! Ignoring.");return}var g=(I=this.calls.get(S))!==null&&I!==void 0?I:new Map,_=g.get(f.getOpponentDeviceId());if(_?.callId!==f.callId){T.log("GroupCall ".concat(this.groupCallId," onIncomingCall() incoming call (userId=").concat(S,", callId=").concat(f.callId,")")),_&&_.hangup(W.Replaced,!1),g.set(f.getOpponentDeviceId(),f),this.calls.set(S,g),this.initCall(f);var y=this.getLocalFeeds().map(v=>v.clone());if(!this.callExpected(f))for(var b of y)me(b.stream.getAudioTracks(),!1),me(b.stream.getVideoTracks(),!1);f.answerWithCallFeeds(y),this.emit(ie.CallsChanged,this.calls)}}}),c(this,"onRetryCallLoop",()=>{var f=!1;for(var[{userId:p},I]of this.participants){var S=this.calls.get(p),g=this.retryCallCounts.get(p);for(var[_,y]of I){var b,v,w=S?.get(_),C=(b=(v=g)===null||v===void 0?void 0:v.get(_))!==null&&b!==void 0?b:0;w?.getOpponentSessionId()!==y.sessionId&&this.wantsOutgoingCall(p,_)&&C<3&&(g===void 0&&(g=new Map,this.retryCallCounts.set(p,g)),g.set(_,C+1),f=!0)}}f&&this.placeOutgoingCalls()}),c(this,"onCallFeedsChanged",f=>{var p=nn(f),I=f.getOpponentDeviceId();if(!p)throw new Error("Cannot change call feeds without user id");var S=this.getUserMediaFeed(p,I),g=f.remoteUsermediaFeed,_=g!==S,y=this.calls.get(p),b=y?.get(I);if(b?.callId===f.callId){_&&(!S&&g?this.addUserMediaFeed(g):S&&g?this.replaceUserMediaFeed(S,g):S&&!g&&this.removeUserMediaFeed(S));var v=this.getScreenshareFeed(p,I),w=f.remoteScreensharingFeed,C=w!==v;C&&(!v&&w?this.addScreenshareFeed(w):v&&w?this.replaceScreenshareFeed(v,w):v&&!w&&this.removeScreenshareFeed(v))}}),c(this,"onCallStateChanged",(f,p,I)=>{var S;if(p!==V.Ended){var g=this.localCallFeed.isAudioMuted();f.localUsermediaStream&&f.isMicrophoneMuted()!==g&&f.setMicrophoneMuted(g);var _=this.localCallFeed.isVideoMuted();f.localUsermediaStream&&f.isLocalVideoMuted()!==_&&f.setLocalVideoMuted(_);var y=(S=f.getOpponentMember())===null||S===void 0?void 0:S.userId;if(p===V.Connected&&y){var b=this.retryCallCounts.get(y);b?.delete(f.getOpponentDeviceId()),b?.size===0&&this.retryCallCounts.delete(y)}}}),c(this,"onCallHangup",f=>{var p,I;if(f.hangupReason!==W.Replaced){var S=(p=(I=f.getOpponentMember())===null||I===void 0?void 0:I.userId)!==null&&p!==void 0?p:this.room.getMember(f.invitee).userId,g=this.calls.get(S);g?.get(f.getOpponentDeviceId())===f&&(this.disposeCall(f,f.hangupReason),g.delete(f.getOpponentDeviceId()),g.size===0&&this.calls.delete(S),this.emit(ie.CallsChanged,this.calls))}}),c(this,"onCallReplaced",(f,p)=>{var I=f.getOpponentMember().userId,S=this.calls.get(I);S===void 0&&(S=new Map,this.calls.set(I,S)),f.hangup(W.Replaced,!1),this.initCall(p),S.set(f.getOpponentDeviceId(),p),this.emit(ie.CallsChanged,this.calls)}),c(this,"onActiveSpeakerLoop",()=>{var f=void 0,p=void 0;for(var I of this.userMediaFeeds)if(!(I.isLocal()&&this.userMediaFeeds.length>1)){var S=I.speakingVolumeSamples.reduce((_,y)=>_+Math.max(y,yi)),g=S/I.speakingVolumeSamples.length;(!f||g>f)&&(f=g,p=I)}p&&this.activeSpeaker!==p&&f&&f>yi&&(this.activeSpeaker=p,this.emit(ie.ActiveSpeakerChanged,this.activeSpeaker))}),c(this,"onRoomState",()=>this.updateParticipants()),c(this,"onParticipantsChanged",()=>{this.forEachCall(f=>{var p=this.callExpected(f);for(var I of f.getLocalFeeds())me(I.stream.getAudioTracks(),!I.isAudioMuted()&&p),me(I.stream.getVideoTracks(),!I.isVideoMuted()&&p)}),this.state===ve.Entered&&!this.useLivekit&&this.placeOutgoingCalls()}),c(this,"onStateChanged",(f,p)=>{(f===ve.Entered||p===ve.Entered||f===ve.Ended)&&(this.updateParticipants(),this.updateMemberState().catch(I=>T.error("GroupCall ".concat(this.groupCallId,' onStateChanged() failed to update member state devices"'),I)))}),c(this,"onLocalFeedsChanged",()=>{this.state===ve.Entered&&this.updateMemberState().catch(f=>T.error("GroupCall ".concat(this.groupCallId," onLocalFeedsChanged() failed to update member state feeds"),f))}),this.reEmitter=new yo(this),this.groupCallId=s??Mt(),this._livekitServiceURL=E,this.creationTs=(u=(h=t.currentState.getStateEvents(M.GroupCallPrefix,this.groupCallId))===null||h===void 0?void 0:h.getTs())!==null&&u!==void 0?u:null,this.updateParticipants(),t.on(X.Update,this.onRoomState),this.on(ie.ParticipantsChanged,this.onParticipantsChanged),this.on(ie.GroupCallStateChanged,this.onStateChanged),this.on(ie.LocalScreenshareStateChanged,this.onLocalFeedsChanged),this.allowCallWithoutVideoAndAudio=!!d}create(){var e=this;return R(function*(){return e.creationTs=Date.now(),e.client.groupCallEventHandler.groupCalls.set(e.room.roomId,e),e.client.emit(Si.Outgoing,e),yield e.sendCallStateEvent(),e})()}sendCallStateEvent(){var e=this;return R(function*(){var t={"m.intent":e.intent,"m.type":e.type,"io.element.ptt":e.isPtt,dataChannelsEnabled:e.dataChannelsEnabled,dataChannelOptions:e.dataChannelsEnabled?e.dataChannelOptions:void 0};e.livekitServiceURL&&(t["io.element.livekit_service_url"]=e.livekitServiceURL),yield e.client.sendStateEvent(e.room.roomId,M.GroupCallPrefix,t,e.groupCallId)})()}get livekitServiceURL(){return this._livekitServiceURL}updateLivekitServiceURL(e){return this._livekitServiceURL=e,this.sendCallStateEvent()}get state(){return this._state}set state(e){var t=this._state;e!==t&&(this._state=e,this.emit(ie.GroupCallStateChanged,e,t))}get participants(){return this._participants}set participants(e){var t=this._participants,r=(a,s)=>a.sessionId===s.sessionId&&a.screensharing===s.screensharing,n=(a,s)=>na(a,s,r);na(e,t,n)||(this._participants=e,this.emit(ie.ParticipantsChanged,e))}get creationTs(){return this._creationTs}set creationTs(e){this._creationTs=e}get enteredViaAnotherSession(){return this._enteredViaAnotherSession}set enteredViaAnotherSession(e){this._enteredViaAnotherSession=e,this.updateParticipants()}forEachCall(e){for(var t of this.calls.values())for(var r of t.values())e(r)}getLocalFeeds(){var e=[];return this.localCallFeed&&e.push(this.localCallFeed),this.localScreenshareFeed&&e.push(this.localScreenshareFeed),e}hasLocalParticipant(){var e,t;return(e=(t=this.participants.get(this.room.getMember(this.client.getUserId())))===null||t===void 0?void 0:t.has(this.client.getDeviceId()))!==null&&e!==void 0?e:!1}callExpected(e){var t,r=nn(e),n=r===null?null:this.room.getMember(r),a=e.getOpponentDeviceId();return n!==null&&a!==void 0&&((t=this.participants.get(n))===null||t===void 0?void 0:t.get(a))!==void 0}initLocalCallFeed(){var e=this;return R(function*(){if(e.useLivekit){T.info("Livekit group call: not starting local call feed.");return}if(e.state!==ve.LocalCallFeedUninitialized)throw new Error('Cannot initialize local call feed in the "'.concat(e.state,'" state.'));if(e.state=ve.InitializingLocalCallFeed,e.initCallFeedPromise)return e.initCallFeedPromise;try{e.initCallFeedPromise=e.initLocalCallFeedInternal(),yield e.initCallFeedPromise}finally{e.initCallFeedPromise=void 0}})()}initLocalCallFeedInternal(){var e=this;return R(function*(){T.log("GroupCall ".concat(e.groupCallId," initLocalCallFeedInternal() running"));var t;try{t=yield e.client.getMediaHandler().getUserMediaStream(!0,e.type===qi.Video)}catch(n){if(e.allowCallWithoutVideoAndAudio)t=new MediaStream;else throw e.state=ve.LocalCallFeedUninitialized,n}if(e._state!==ve.InitializingLocalCallFeed)throw e.client.getMediaHandler().stopUserMediaStream(t),new Error("Group call disposed while gathering media stream");var r=new it({client:e.client,roomId:e.room.roomId,userId:e.client.getUserId(),deviceId:e.client.getDeviceId(),stream:t,purpose:te.Usermedia,audioMuted:e.initWithAudioMuted||t.getAudioTracks().length===0||e.isPtt,videoMuted:e.initWithVideoMuted||t.getVideoTracks().length===0});me(t.getAudioTracks(),!r.isAudioMuted()),me(t.getVideoTracks(),!r.isVideoMuted()),e.localCallFeed=r,e.addUserMediaFeed(r),e.state=ve.LocalCallFeedInitialized})()}updateLocalUsermediaStream(e){var t=this;return R(function*(){if(t.localCallFeed){var r=t.localCallFeed.stream;t.localCallFeed.setNewStream(e);var n=t.localCallFeed.isAudioMuted(),a=t.localCallFeed.isVideoMuted();T.log("GroupCall ".concat(t.groupCallId," updateLocalUsermediaStream() (oldStreamId=").concat(r.id,", newStreamId=").concat(e.id,", micShouldBeMuted=").concat(n,", vidShouldBeMuted=").concat(a,")")),me(e.getAudioTracks(),!n),me(e.getVideoTracks(),!a),t.client.getMediaHandler().stopUserMediaStream(r)}})()}enter(){var e=this;return R(function*(){if(e.state===ve.LocalCallFeedUninitialized)yield e.initLocalCallFeed();else if(e.state!==ve.LocalCallFeedInitialized)throw new Error('Cannot enter call in the "'.concat(e.state,'" state'));T.log("GroupCall ".concat(e.groupCallId," enter() running")),e.state=ve.Entered,e.client.on(Ei.Incoming,e.onIncomingCall);for(var t of e.client.callEventHandler.calls.values())e.onIncomingCall(t);e.useLivekit||(e.retryCallLoopInterval=setInterval(e.onRetryCallLoop,e.retryCallInterval),e.activeSpeaker=void 0,e.onActiveSpeakerLoop(),e.activeSpeakerLoopInterval=setInterval(e.onActiveSpeakerLoop,e.activeSpeakerInterval))})()}dispose(){var e;this.localCallFeed&&(this.removeUserMediaFeed(this.localCallFeed),this.localCallFeed=void 0),this.localScreenshareFeed&&(this.client.getMediaHandler().stopScreensharingStream(this.localScreenshareFeed.stream),this.removeScreenshareFeed(this.localScreenshareFeed),this.localScreenshareFeed=void 0,this.localDesktopCapturerSourceId=void 0),this.client.getMediaHandler().stopAllStreams(),this.transmitTimer!==null&&(clearTimeout(this.transmitTimer),this.transmitTimer=null),this.retryCallLoopInterval!==void 0&&(clearInterval(this.retryCallLoopInterval),this.retryCallLoopInterval=void 0),this.participantsExpirationTimer!==null&&(clearTimeout(this.participantsExpirationTimer),this.participantsExpirationTimer=null),this.state===ve.Entered&&(this.forEachCall(t=>t.hangup(W.UserHangup,!1)),this.activeSpeaker=void 0,clearInterval(this.activeSpeakerLoopInterval),this.retryCallCounts.clear(),clearInterval(this.retryCallLoopInterval),this.client.removeListener(Ei.Incoming,this.onIncomingCall),(e=this.stats)===null||e===void 0||e.stop())}leave(){this.dispose(),this.state=ve.LocalCallFeedUninitialized}terminate(){var e=arguments,t=this;return R(function*(){var r=e.length>0&&e[0]!==void 0?e[0]:!0;if(t.dispose(),t.room.off(X.Update,t.onRoomState),t.client.groupCallEventHandler.groupCalls.delete(t.room.roomId),t.client.emit(Si.Ended,t),t.state=ve.Ended,r){var n=t.room.currentState.getStateEvents(M.GroupCallPrefix,t.groupCallId);yield t.client.sendStateEvent(t.room.roomId,M.GroupCallPrefix,tn(tn({},n.getContent()),{},{"m.terminated":Du.CallEnded}),t.groupCallId)}})()}isLocalVideoMuted(){return this.localCallFeed?this.localCallFeed.isVideoMuted():!0}isMicrophoneMuted(){return this.localCallFeed?this.localCallFeed.isAudioMuted():!0}setMicrophoneMuted(e){var t=this;return R(function*(){if(!e&&!(yield t.client.getMediaHandler().hasAudioDevice()))return!1;var r=!e&&t.isPtt;t.isPtt&&(!e&&t.isMicrophoneMuted()?t.transmitTimer=setTimeout(()=>{t.setMicrophoneMuted(!0)},t.pttMaxTransmitTime):e&&!t.isMicrophoneMuted()&&(t.transmitTimer!==null&&clearTimeout(t.transmitTimer),t.transmitTimer=null)),t.forEachCall(s=>{var o;return(o=s.localUsermediaFeed)===null||o===void 0?void 0:o.setAudioVideoMuted(e,null)});var n=(function(){var s=R(function*(){var o=[];t.forEachCall(l=>o.push(l.sendMetadataUpdate())),yield Promise.all(o).catch(l=>T.info("GroupCall ".concat(t.groupCallId," setMicrophoneMuted() failed to send some metadata updates"),l))});return function(){return s.apply(this,arguments)}})();if(r&&(yield n()),t.localCallFeed){T.log("GroupCall ".concat(t.groupCallId," setMicrophoneMuted() (streamId=").concat(t.localCallFeed.stream.id,", muted=").concat(e,")"));var a=yield t.checkAudioPermissionIfNecessary(e);if(!a)return!1;t.localCallFeed.setAudioVideoMuted(e,null),me(t.localCallFeed.stream.getAudioTracks(),!e)}else T.log("GroupCall ".concat(t.groupCallId," setMicrophoneMuted() no stream muted (muted=").concat(e,")")),t.initWithAudioMuted=e;return t.forEachCall(s=>me(s.localUsermediaFeed.stream.getAudioTracks(),!e&&t.callExpected(s))),t.emit(ie.LocalMuteStateChanged,e,t.isLocalVideoMuted()),r||(yield n()),!0})()}checkAudioPermissionIfNecessary(e){var t=this;return R(function*(){try{if(!e&&t.localCallFeed&&!t.localCallFeed.hasAudioTrack){var r=yield t.client.getMediaHandler().getUserMediaStream(!0,!t.localCallFeed.isVideoMuted());if(r?.getTracks().length===0)return T.log("GroupCall ".concat(t.groupCallId," setMicrophoneMuted() no device to receive local stream, muted=").concat(e)),!1}}catch{return T.log("GroupCall ".concat(t.groupCallId," setMicrophoneMuted() no device or permission to receive local stream, muted=").concat(e)),!1}return!0})()}setLocalVideoMuted(e){var t=this;return R(function*(){if(!e&&!(yield t.client.getMediaHandler().hasVideoDevice()))return!1;if(t.localCallFeed){T.log("GroupCall ".concat(t.groupCallId," setLocalVideoMuted() (stream=").concat(t.localCallFeed.stream.id,", muted=").concat(e,")"));try{var r=yield t.client.getMediaHandler().getUserMediaStream(!0,!e);yield t.updateLocalUsermediaStream(r),t.localCallFeed.setAudioVideoMuted(null,e),me(t.localCallFeed.stream.getVideoTracks(),!e)}catch{return T.log("GroupCall ".concat(t.groupCallId," setLocalVideoMuted() no device or permission to receive local stream, muted=").concat(e)),!1}}else T.log("GroupCall ".concat(t.groupCallId," setLocalVideoMuted() no stream muted (muted=").concat(e,")")),t.initWithVideoMuted=e;var n=[];return t.forEachCall(a=>n.push(a.setLocalVideoMuted(e))),yield Promise.all(n),t.forEachCall(a=>me(a.localUsermediaFeed.stream.getVideoTracks(),!e&&t.callExpected(a))),t.emit(ie.LocalMuteStateChanged,t.isMicrophoneMuted(),e),!0})()}setScreensharingEnabled(e){var t=arguments,r=this;return R(function*(){var n=t.length>1&&t[1]!==void 0?t[1]:{};if(e===r.isScreensharing())return e;if(e)try{T.log("GroupCall ".concat(r.groupCallId," setScreensharingEnabled() is asking for screensharing permissions"));var a=yield r.client.getMediaHandler().getScreensharingStream(n),s=function*(d){var u=()=>{r.setScreensharingEnabled(!1),d.removeEventListener("ended",u)};d.addEventListener("ended",u)};for(var o of a.getTracks())yield*s(o);return T.log("GroupCall ".concat(r.groupCallId," setScreensharingEnabled() granted screensharing permissions. Setting screensharing enabled on all calls")),r.localDesktopCapturerSourceId=n.desktopCapturerSourceId,r.localScreenshareFeed=new it({client:r.client,roomId:r.room.roomId,userId:r.client.getUserId(),deviceId:r.client.getDeviceId(),stream:a,purpose:te.Screenshare,audioMuted:!1,videoMuted:!1}),r.addScreenshareFeed(r.localScreenshareFeed),r.emit(ie.LocalScreenshareStateChanged,!0,r.localScreenshareFeed,r.localDesktopCapturerSourceId),r.forEachCall(l=>l.pushLocalFeed(r.localScreenshareFeed.clone())),!0}catch(l){if(n.throwOnFail)throw l;return T.error("GroupCall ".concat(r.groupCallId," setScreensharingEnabled() enabling screensharing error"),l),r.emit(ie.Error,new bi(Mr.NoUserMedia,"Failed to get screen-sharing stream: ",l)),!1}else return r.forEachCall(l=>{l.localScreensharingFeed&&l.removeLocalFeed(l.localScreensharingFeed)}),r.client.getMediaHandler().stopScreensharingStream(r.localScreenshareFeed.stream),r.removeScreenshareFeed(r.localScreenshareFeed),r.localScreenshareFeed=void 0,r.localDesktopCapturerSourceId=void 0,r.emit(ie.LocalScreenshareStateChanged,!1,void 0,void 0),!1})()}isScreensharing(){return!!this.localScreenshareFeed}wantsOutgoingCall(e,t){var r=this.client.getUserId(),n=this.client.getDeviceId();return e>=r&&(e!==r||t>n)}placeOutgoingCalls(){var e=this,t=!1,r=function(o){var l,d=(l=e.calls.get(o))!==null&&l!==void 0?l:new Map,u=function(f){var p=d.get(f);if(p?.getOpponentSessionId()!==m.sessionId&&e.wantsOutgoingCall(o,f)){t=!0,p!==void 0&&(T.debug("GroupCall ".concat(e.groupCallId," placeOutgoingCalls() replacing call (userId=").concat(o,", deviceId=").concat(f,", callId=").concat(p.callId,")")),p.hangup(W.NewSession,!1));var I=Rn(e.client,e.room.roomId,{invitee:o,opponentDeviceId:f,opponentSessionId:m.sessionId,groupCallId:e.groupCallId});I===null?(T.error("GroupCall ".concat(e.groupCallId," placeOutgoingCalls() failed to create call (userId=").concat(o,", device=").concat(f,")")),d.delete(f)):(e.initCall(I),d.set(f,I),T.debug("GroupCall ".concat(e.groupCallId," placeOutgoingCalls() placing call (userId=").concat(o,", deviceId=").concat(f,", sessionId=").concat(m.sessionId,")")),I.placeCallWithCallFeeds(e.getLocalFeeds().map(S=>S.clone()),m.screensharing).then(()=>{e.dataChannelsEnabled&&I.createDataChannel("datachannel",e.dataChannelOptions)}).catch(S=>{T.warn("GroupCall ".concat(e.groupCallId," placeOutgoingCalls() failed to place call (userId=").concat(o,")"),S),S instanceof nt&&S.code===Mr.UnknownDevice?e.emit(ie.Error,S):e.emit(ie.Error,new bi(Mr.PlaceCallFailed,"Failed to place call to ".concat(o))),I.hangup(W.SignallingFailed,!1),d.get(f)===I&&d.delete(f)}))}};for(var[h,m]of a)u(h);d.size>0?e.calls.set(o,d):e.calls.delete(o)};for(var[{userId:n},a]of this.participants)r(n);t&&this.emit(ie.CallsChanged,this.calls)}getMemberStateEvents(e){return e===void 0?this.room.currentState.getStateEvents(M.GroupCallMemberPrefix):this.room.currentState.getStateEvents(M.GroupCallMemberPrefix,e)}initCall(e){var t=nn(e);if(!t)throw new Error("Cannot init call without user id");var r=()=>this.onCallFeedsChanged(e),n=(l,d)=>this.onCallStateChanged(e,l,d),a=this.onCallHangup,s=l=>this.onCallReplaced(e,l),o=this.callHandlers.get(t);o===void 0&&(o=new Map,this.callHandlers.set(t,o)),o.set(e.getOpponentDeviceId(),{onCallFeedsChanged:r,onCallStateChanged:n,onCallHangup:a,onCallReplaced:s}),e.on(Y.FeedsChanged,r),e.on(Y.State,n),e.on(Y.Hangup,a),e.on(Y.Replaced,s),e.isPtt=this.isPtt,this.reEmitter.reEmit(e,Object.values(Y)),e.initStats(this.getGroupCallStats()),r()}disposeCall(e,t){var r=nn(e),n=e.getOpponentDeviceId();if(!r)throw new Error("Cannot dispose call without user id");var a=this.callHandlers.get(r),{onCallFeedsChanged:s,onCallStateChanged:o,onCallHangup:l,onCallReplaced:d}=a.get(n);if(e.removeListener(Y.FeedsChanged,s),e.removeListener(Y.State,o),e.removeListener(Y.Hangup,l),e.removeListener(Y.Replaced,d),a.delete(r),a.size===0&&this.callHandlers.delete(r),e.hangupReason!==W.Replaced){var u=this.getUserMediaFeed(r,n);u&&this.removeUserMediaFeed(u);var h=this.getScreenshareFeed(r,n);h&&this.removeScreenshareFeed(h)}}getUserMediaFeed(e,t){return this.userMediaFeeds.find(r=>r.userId===e&&r.deviceId===t)}addUserMediaFeed(e){this.userMediaFeeds.push(e),e.measureVolumeActivity(!0),this.emit(ie.UserMediaFeedsChanged,this.userMediaFeeds)}replaceUserMediaFeed(e,t){var r=this.userMediaFeeds.findIndex(n=>n.userId===e.userId&&n.deviceId===e.deviceId);if(r===-1)throw new Error("Couldn't find user media feed to replace");this.userMediaFeeds.splice(r,1,t),e.dispose(),t.measureVolumeActivity(!0),this.emit(ie.UserMediaFeedsChanged,this.userMediaFeeds)}removeUserMediaFeed(e){var t=this.userMediaFeeds.findIndex(r=>r.userId===e.userId&&r.deviceId===e.deviceId);if(t===-1)throw new Error("Couldn't find user media feed to remove");this.userMediaFeeds.splice(t,1),e.dispose(),this.emit(ie.UserMediaFeedsChanged,this.userMediaFeeds),this.activeSpeaker===e&&(this.activeSpeaker=this.userMediaFeeds[0],this.emit(ie.ActiveSpeakerChanged,this.activeSpeaker))}getScreenshareFeed(e,t){return this.screenshareFeeds.find(r=>r.userId===e&&r.deviceId===t)}addScreenshareFeed(e){this.screenshareFeeds.push(e),this.emit(ie.ScreenshareFeedsChanged,this.screenshareFeeds)}replaceScreenshareFeed(e,t){var r=this.screenshareFeeds.findIndex(n=>n.userId===e.userId&&n.deviceId===e.deviceId);if(r===-1)throw new Error("Couldn't find screenshare feed to replace");this.screenshareFeeds.splice(r,1,t),e.dispose(),this.emit(ie.ScreenshareFeedsChanged,this.screenshareFeeds)}removeScreenshareFeed(e){var t=this.screenshareFeeds.findIndex(r=>r.userId===e.userId&&r.deviceId===e.deviceId);if(t===-1)throw new Error("Couldn't find screenshare feed to remove");this.screenshareFeeds.splice(t,1),e.dispose(),this.emit(ie.ScreenshareFeedsChanged,this.screenshareFeeds)}updateParticipants(){var e=this.room.getMember(this.client.getSafeUserId());if(!e){T.warn("GroupCall ".concat(this.groupCallId," updateParticipants() tried to update participants before local room member is available"));return}if(this.participantsExpirationTimer!==null&&(clearTimeout(this.participantsExpirationTimer),this.participantsExpirationTimer=null),this.state===ve.Ended){this.participants=new Map;return}var t=new Map,r=Date.now(),n=this.state===ve.Entered||this.enteredViaAnotherSession,a=1/0;for(var s of this.getMemberStateEvents()){var o=this.room.getMember(s.getStateKey()),l=s.getContent(),d=Array.isArray(l["m.calls"])?l["m.calls"]:[],u=d.find(I=>I["m.call_id"]===this.groupCallId),h=Array.isArray(u?.["m.devices"])?u["m.devices"]:[],m=h.filter(I=>typeof I.device_id=="string"&&typeof I.session_id=="string"&&typeof I.expires_ts=="number"&&I.expires_ts>r&&Array.isArray(I.feeds));if(!n&&o?.userId===this.client.getUserId()&&(m=m.filter(I=>I.device_id!==this.client.getDeviceId())),m.length>0&&o?.membership===J.Join){var E=new Map;t.set(o,E);for(var f of m)E.set(f.device_id,{sessionId:f.session_id,screensharing:f.feeds.some(I=>I.purpose===te.Screenshare)}),f.expires_ts<a&&(a=f.expires_ts)}}if(n){var p=t.get(e);p===void 0&&(p=new Map,t.set(e,p)),p.has(this.client.getDeviceId())||p.set(this.client.getDeviceId(),{sessionId:this.client.getSessionId(),screensharing:this.getLocalFeeds().some(I=>I.purpose===te.Screenshare)})}this.participants=t,a<1/0&&(this.participantsExpirationTimer=setTimeout(()=>this.updateParticipants(),a-r))}updateDevices(e){var t=arguments,r=this;return R(function*(){var n,a=t.length>1&&t[1]!==void 0?t[1]:!1,s=Date.now(),o=r.client.getUserId(),l=r.getMemberStateEvents(o),d=(n=l?.getContent())!==null&&n!==void 0?n:{},u=Array.isArray(d["m.calls"])?d["m.calls"]:[],h=null,m=[];for(var E of u)E["m.call_id"]===r.groupCallId?h=E:m.push(E);h===null&&(h={});var f=Array.isArray(h["m.devices"])?h["m.devices"]:[],p=f.filter(_=>typeof _.device_id=="string"&&typeof _.session_id=="string"&&typeof _.expires_ts=="number"&&_.expires_ts>s&&Array.isArray(_.feeds)),I=e(p);if(I!==null){var S=[...m];I.length>0&&S.push(tn(tn({},h),{},{"m.call_id":r.groupCallId,"m.devices":I}));var g={"m.calls":S};yield r.client.sendStateEvent(r.room.roomId,M.GroupCallMemberPrefix,g,o,{keepAlive:a})}})()}addDeviceToMemberState(){var e=this;return R(function*(){yield e.updateDevices(t=>[...t.filter(r=>r.device_id!==e.client.getDeviceId()),{device_id:e.client.getDeviceId(),session_id:e.client.getSessionId(),expires_ts:Date.now()+ls,feeds:e.getLocalFeeds().map(r=>({purpose:r.purpose}))}])})()}updateMemberState(){var e=this;return R(function*(){e.resendMemberStateTimer!==null&&(clearInterval(e.resendMemberStateTimer),e.resendMemberStateTimer=null),e.state===ve.Entered?(yield e.addDeviceToMemberState(),e.resendMemberStateTimer=setInterval(R(function*(){T.log("GroupCall ".concat(e.groupCallId,' updateMemberState() resending call member state"'));try{yield e.addDeviceToMemberState()}catch(t){T.error("GroupCall ".concat(e.groupCallId," updateMemberState() failed to resend call member state"),t)}}),ls*3/4)):yield e.updateDevices(t=>t.filter(r=>r.device_id!==e.client.getDeviceId()),!0)})()}cleanMemberState(){var e=this;return R(function*(){var{devices:t}=yield e.client.getDevices(),r=new Map(t.map(n=>[n.device_id,n]));yield e.updateDevices(n=>{var a=n.filter(s=>{var o=r.get(s.device_id);return o?.last_seen_ts!==void 0&&!(s.device_id===e.client.getDeviceId()&&e.state!==ve.Entered&&!e.enteredViaAnotherSession)});return a.length===n.length?null:a})})()}getGroupCallStats(){if(this.stats===void 0){var e=this.client.getUserId()||"unknown";this.stats=new Au(this.groupCallId,e,this.statsCollectIntervalTime),this.stats.reports.on(pt.CONNECTION_STATS,this.onConnectionStats),this.stats.reports.on(pt.BYTE_SENT_STATS,this.onByteSentStats),this.stats.reports.on(pt.SUMMARY_STATS,this.onSummaryStats),this.stats.reports.on(pt.CALL_FEED_REPORT,this.onCallFeedReport)}return this.stats}setGroupCallStatsInterval(e){this.statsCollectIntervalTime=e,this.stats!==void 0&&(this.stats.stop(),this.stats.setInterval(e),e>0&&this.stats.start())}}function ds(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(i);e&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(i,n).enumerable})),t.push.apply(t,r)}return t}function an(i){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?ds(Object(t),!0).forEach(function(r){c(i,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(t)):ds(Object(t)).forEach(function(r){Object.defineProperty(i,r,Object.getOwnPropertyDescriptor(t,r))})}return i}var V=(function(i){return i.Fledgling="fledgling",i.InviteSent="invite_sent",i.WaitLocalMedia="wait_local_media",i.CreateOffer="create_offer",i.CreateAnswer="create_answer",i.Connecting="connecting",i.Connected="connected",i.Ringing="ringing",i.Ended="ended",i})({}),us=(function(i){return i.Voice="voice",i.Video="video",i})({}),ut=(function(i){return i.Inbound="inbound",i.Outbound="outbound",i})({}),he=(function(i){return i.Local="local",i.Remote="remote",i})({}),Y=(function(i){return i.Hangup="hangup",i.State="state",i.Error="error",i.Replaced="replaced",i.LocalHoldUnhold="local_hold_unhold",i.RemoteHoldUnhold="remote_hold_unhold",i.HoldUnhold="hold_unhold",i.FeedsChanged="feeds_changed",i.AssertedIdentityChanged="asserted_identity_changed",i.LengthChanged="length_changed",i.DataChannel="datachannel",i.SendVoipEvent="send_voip_event",i.PeerConnectionCreated="peer_connection_created",i})({}),W=(function(i){return i.UserHangup="user_hangup",i.LocalOfferFailed="local_offer_failed",i.NoUserMedia="no_user_media",i.UnknownDevices="unknown_devices",i.SendInvite="send_invite",i.CreateAnswer="create_answer",i.CreateOffer="create_offer",i.SendAnswer="send_answer",i.SetRemoteDescription="set_remote_description",i.SetLocalDescription="set_local_description",i.AnsweredElsewhere="answered_elsewhere",i.IceFailed="ice_failed",i.InviteTimeout="invite_timeout",i.Replaced="replaced",i.SignallingFailed="signalling_timeout",i.UserBusy="user_busy",i.Transferred="transferred",i.NewSession="new_session",i})({}),Uu="1",Nu="stun:turn.matrix.org",$n=60*1e3,xu=1e3,Fu=30*1e3,Bu=2*1e3;class nt extends Error{constructor(e,t,r){super(t+": "+r),c(this,"code",void 0),this.code=e}}function Mt(){return Date.now().toString()+_n(16)}function cs(i){var e=[{mediaType:"audio",codec:"opus",enableDtx:!0,maxAverageBitrate:i?12e3:void 0}];return e}function Ke(i,e){return i+":"+e}class ju extends fe{constructor(e){var t,r;if(super(),t=this,c(this,"roomId",void 0),c(this,"callId",void 0),c(this,"invitee",void 0),c(this,"hangupParty",void 0),c(this,"hangupReason",void 0),c(this,"direction",void 0),c(this,"ourPartyId",void 0),c(this,"peerConn",void 0),c(this,"toDeviceSeq",0),c(this,"isPtt",!1),c(this,"_state",V.Fledgling),c(this,"client",void 0),c(this,"forceTURN",void 0),c(this,"turnServers",void 0),c(this,"candidateSendQueue",[]),c(this,"candidateSendTries",0),c(this,"candidatesEnded",!1),c(this,"feeds",[]),c(this,"transceivers",new Map),c(this,"inviteOrAnswerSent",!1),c(this,"waitForLocalAVStream",!1),c(this,"successor",void 0),c(this,"opponentMember",void 0),c(this,"opponentVersion",void 0),c(this,"opponentPartyId",void 0),c(this,"opponentCaps",void 0),c(this,"iceDisconnectedTimeout",void 0),c(this,"iceReconnectionTimeOut",void 0),c(this,"inviteTimeout",void 0),c(this,"removeTrackListeners",new Map),c(this,"remoteOnHold",!1),c(this,"callStatsAtEnd",void 0),c(this,"makingOffer",!1),c(this,"ignoreOffer",!1),c(this,"isSettingRemoteAnswerPending",!1),c(this,"responsePromiseChain",void 0),c(this,"remoteCandidateBuffer",new Map),c(this,"remoteAssertedIdentity",void 0),c(this,"remoteSDPStreamMetadata",void 0),c(this,"callLengthInterval",void 0),c(this,"callStartTime",void 0),c(this,"opponentDeviceId",void 0),c(this,"hasOpponentDeviceInfo",void 0),c(this,"opponentSessionId",void 0),c(this,"groupCallId",void 0),c(this,"stopVideoTrackTimer",void 0),c(this,"isOnlyDataChannelAllowed",void 0),c(this,"stats",void 0),c(this,"gotLocalIceCandidate",a=>{if(a.candidate){if(this.candidatesEnded&&T.warn("Call ".concat(this.callId," gotLocalIceCandidate() got candidate after candidates have ended!")),T.debug("Call ".concat(this.callId," got local ICE ").concat(a.candidate.sdpMid," ").concat(a.candidate.candidate)),this.callHasEnded())return;a.candidate.candidate===""?this.queueCandidate(null):this.queueCandidate(a.candidate)}}),c(this,"onIceGatheringStateChange",a=>{var s;T.debug("Call ".concat(this.callId," onIceGatheringStateChange() ice gathering state changed to ").concat(this.peerConn.iceGatheringState)),((s=this.peerConn)===null||s===void 0?void 0:s.iceGatheringState)==="complete"&&(this.queueCandidate(null),T.debug("Call ".concat(this.callId," onIceGatheringStateChange() ice gathering state complete, set candidates have ended")))}),c(this,"getLocalOfferFailed",a=>{T.error("Call ".concat(this.callId," getLocalOfferFailed() running"),a),this.emit(Y.Error,new nt(W.LocalOfferFailed,"Failed to get local offer!",a),this),this.terminate(he.Local,W.LocalOfferFailed,!1)}),c(this,"getUserMediaFailed",a=>{if(this.successor){this.successor.getUserMediaFailed(a);return}T.warn("Call ".concat(this.callId," getUserMediaFailed() failed to get user media - ending call"),a),this.emit(Y.Error,new nt(W.NoUserMedia,"Couldn't start capturing media! Is your microphone set up and does this app have permission?",a),this),this.terminate(he.Local,W.NoUserMedia,!1)}),c(this,"placeCallFailed",a=>{if(this.successor){this.successor.placeCallFailed(a);return}T.warn("Call ".concat(this.callId," placeCallWithCallFeeds() failed - ending call"),a),this.emit(Y.Error,new nt(W.IceFailed,"Couldn't start call! Invalid ICE server configuration.",a),this),this.terminate(he.Local,W.IceFailed,!1)}),c(this,"onIceConnectionStateChanged",()=>{var a,s,o,l,d,u;if(!this.callHasEnded()){if(T.debug("Call ".concat(this.callId," onIceConnectionStateChanged() running (state=").concat((a=this.peerConn)===null||a===void 0?void 0:a.iceConnectionState,", conn=").concat((s=this.peerConn)===null||s===void 0?void 0:s.connectionState,")")),["connected","completed"].includes((o=(l=this.peerConn)===null||l===void 0?void 0:l.iceConnectionState)!==null&&o!==void 0?o:""))clearTimeout(this.iceDisconnectedTimeout),this.iceDisconnectedTimeout=void 0,this.iceReconnectionTimeOut&&clearTimeout(this.iceReconnectionTimeOut),this.state=V.Connected,!this.callLengthInterval&&!this.callStartTime&&(this.callStartTime=Date.now(),this.callLengthInterval=setInterval(()=>{this.emit(Y.LengthChanged,Math.round((Date.now()-this.callStartTime)/1e3),this)},xu));else if(((d=this.peerConn)===null||d===void 0?void 0:d.iceConnectionState)=="failed"){var h;if(this.candidatesEnded=!1,(h=this.peerConn)!==null&&h!==void 0&&h.restartIce){var m;this.candidatesEnded=!1,T.debug("Call ".concat(this.callId," onIceConnectionStateChanged() ice restart (state=").concat((m=this.peerConn)===null||m===void 0?void 0:m.iceConnectionState,")")),this.peerConn.restartIce()}else T.info("Call ".concat(this.callId," onIceConnectionStateChanged() hanging up call (ICE failed and no ICE restart method)")),this.hangup(W.IceFailed,!1)}else((u=this.peerConn)===null||u===void 0?void 0:u.iceConnectionState)=="disconnected"&&(this.candidatesEnded=!1,this.iceReconnectionTimeOut=setTimeout(()=>{var f,p,I;T.info("Call ".concat(this.callId," onIceConnectionStateChanged() ICE restarting because of ICE disconnected, (state=").concat((f=this.peerConn)===null||f===void 0?void 0:f.iceConnectionState,", conn=").concat((p=this.peerConn)===null||p===void 0?void 0:p.connectionState,")")),(I=this.peerConn)!==null&&I!==void 0&&I.restartIce&&(this.candidatesEnded=!1,this.peerConn.restartIce()),this.iceReconnectionTimeOut=void 0},Bu),this.iceDisconnectedTimeout=setTimeout(()=>{T.info("Call ".concat(this.callId," onIceConnectionStateChanged() hanging up call (ICE disconnected for too long)")),this.hangup(W.IceFailed,!1)},Fu),this.state=V.Connecting);if(this.isPtt&&["failed","disconnected"].includes(this.peerConn.iceConnectionState))for(var E of this.getRemoteFeeds())E.setAudioVideoMuted(!0,!0)}}),c(this,"onSignallingStateChanged",()=>{var a;T.debug("Call ".concat(this.callId," onSignallingStateChanged() running (state=").concat((a=this.peerConn)===null||a===void 0?void 0:a.signalingState,")"))}),c(this,"onTrack",a=>{if(a.streams.length===0){T.warn("Call ".concat(this.callId," onTrack() called with streamless track streamless (kind=").concat(a.track.kind,")"));return}var s=a.streams[0];if(this.pushRemoteFeed(s),!this.removeTrackListeners.has(s)){var o=()=>{s.getTracks().length===0&&(T.info("Call ".concat(this.callId," onTrack() removing track (streamId=").concat(s.id,")")),this.deleteFeedByStream(s),s.removeEventListener("removetrack",o),this.removeTrackListeners.delete(s))};s.addEventListener("removetrack",o),this.removeTrackListeners.set(s,o)}}),c(this,"onDataChannel",a=>{this.emit(Y.DataChannel,a.channel,this)}),c(this,"onNegotiationNeeded",R(function*(){if(T.info("Call ".concat(t.callId," onNegotiationNeeded() negotiation is needed!")),t.state!==V.CreateOffer&&t.opponentVersion===0){T.info("Call ".concat(t.callId," onNegotiationNeeded() opponent does not support renegotiation: ignoring negotiationneeded event"));return}t.queueGotLocalOffer()})),c(this,"onHangupReceived",a=>{T.debug("Call ".concat(this.callId," onHangupReceived() running")),this.partyIdMatches(a)||this.state===V.Ringing?this.terminate(he.Remote,a.reason||W.UserHangup,!0):T.info("Call ".concat(this.callId," onHangupReceived() ignoring message from party ID ").concat(a.party_id,": our partner is ").concat(this.opponentPartyId))}),c(this,"onRejectReceived",a=>{T.debug("Call ".concat(this.callId," onRejectReceived() running"));var s=[V.InviteSent,V.Ringing].includes(this.state)||this.state===V.Fledgling&&this.direction===ut.Inbound;s?this.terminate(he.Remote,a.reason||W.UserHangup,!0):T.debug("Call ".concat(this.callId," onRejectReceived() called in wrong state (state=").concat(this.state,")"))}),c(this,"onAnsweredElsewhere",a=>{T.debug("Call ".concat(this.callId," onAnsweredElsewhere() running")),this.terminate(he.Remote,W.AnsweredElsewhere,!0)}),this.roomId=e.roomId,this.invitee=e.invitee,this.client=e.client,!this.client.deviceId)throw new Error("Client must have a device ID to start calls");this.forceTURN=(r=e.forceTURN)!==null&&r!==void 0?r:!1,this.ourPartyId=this.client.deviceId,this.opponentDeviceId=e.opponentDeviceId,this.opponentSessionId=e.opponentSessionId,this.groupCallId=e.groupCallId,this.turnServers=e.turnServers||[],this.turnServers.length===0&&this.client.isFallbackICEServerAllowed()&&this.turnServers.push({urls:[Nu]});for(var n of this.turnServers)eo(n,["urls"]);this.callId=Mt(),this.isOnlyDataChannelAllowed=this.client.isVoipWithNoMediaAllowed}placeVoiceCall(){var e=this;return R(function*(){yield e.placeCall(!0,!1)})()}placeVideoCall(){var e=this;return R(function*(){yield e.placeCall(!0,!0)})()}createDataChannel(e,t){var r=this.peerConn.createDataChannel(e,t);return this.emit(Y.DataChannel,r,this),r}getOpponentMember(){return this.opponentMember}getOpponentDeviceId(){return this.opponentDeviceId}getOpponentSessionId(){return this.opponentSessionId}opponentCanBeTransferred(){return!!(this.opponentCaps&&this.opponentCaps["m.call.transferee"])}opponentSupportsDTMF(){return!!(this.opponentCaps&&this.opponentCaps["m.call.dtmf"])}getRemoteAssertedIdentity(){return this.remoteAssertedIdentity}get state(){return this._state}set state(e){var t=this._state;this._state=e,this.emit(Y.State,e,t,this)}get type(){return this.hasUserMediaVideoSender||this.hasRemoteUserMediaVideoTrack?us.Video:us.Voice}get hasLocalUserMediaVideoTrack(){var e;return!!((e=this.localUsermediaStream)!==null&&e!==void 0&&e.getVideoTracks().length)}get hasRemoteUserMediaVideoTrack(){return this.getRemoteFeeds().some(e=>{var t;return e.purpose===te.Usermedia&&((t=e.stream)===null||t===void 0?void 0:t.getVideoTracks().length)})}get hasLocalUserMediaAudioTrack(){var e;return!!((e=this.localUsermediaStream)!==null&&e!==void 0&&e.getAudioTracks().length)}get hasRemoteUserMediaAudioTrack(){return this.getRemoteFeeds().some(e=>{var t;return e.purpose===te.Usermedia&&!!((t=e.stream)!==null&&t!==void 0&&t.getAudioTracks().length)})}get hasUserMediaAudioSender(){var e;return!!(!((e=this.transceivers.get(Ke(te.Usermedia,"audio")))===null||e===void 0)&&e.sender)}get hasUserMediaVideoSender(){var e;return!!(!((e=this.transceivers.get(Ke(te.Usermedia,"video")))===null||e===void 0)&&e.sender)}get localUsermediaFeed(){return this.getLocalFeeds().find(e=>e.purpose===te.Usermedia)}get localScreensharingFeed(){return this.getLocalFeeds().find(e=>e.purpose===te.Screenshare)}get localUsermediaStream(){var e;return(e=this.localUsermediaFeed)===null||e===void 0?void 0:e.stream}get localScreensharingStream(){var e;return(e=this.localScreensharingFeed)===null||e===void 0?void 0:e.stream}get remoteUsermediaFeed(){return this.getRemoteFeeds().find(e=>e.purpose===te.Usermedia)}get remoteScreensharingFeed(){return this.getRemoteFeeds().find(e=>e.purpose===te.Screenshare)}get remoteUsermediaStream(){var e;return(e=this.remoteUsermediaFeed)===null||e===void 0?void 0:e.stream}get remoteScreensharingStream(){var e;return(e=this.remoteScreensharingFeed)===null||e===void 0?void 0:e.stream}getFeedByStreamId(e){return this.getFeeds().find(t=>t.stream.id===e)}getFeeds(){return this.feeds}getLocalFeeds(){return this.feeds.filter(e=>e.isLocal())}getRemoteFeeds(){return this.feeds.filter(e=>!e.isLocal())}initOpponentCrypto(){var e=this;return R(function*(){var t;if(e.opponentDeviceId&&e.client.getUseE2eForGroupCall()){if(!e.client.getCrypto()){e.hasOpponentDeviceInfo=!0;return}var r=e.invitee||((t=e.getOpponentMember())===null||t===void 0?void 0:t.userId);throw r?(e.hasOpponentDeviceInfo=!1,new Uo(r)):new Error("Couldn't find opponent user ID to init crypto")}})()}getLocalSDPStreamMetadata(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,t={};for(var r of this.getLocalFeeds())e&&(r.sdpMetadataStreamId=r.stream.id),t[r.sdpMetadataStreamId]={purpose:r.purpose,audio_muted:r.isAudioMuted(),video_muted:r.isVideoMuted()};return t}noIncomingFeeds(){return!this.feeds.some(e=>!e.isLocal())}pushRemoteFeed(e){if(!this.opponentSupportsSDPStreamMetadata()){this.pushRemoteFeedWithoutMetadata(e);return}var t=this.getOpponentMember().userId,r=this.remoteSDPStreamMetadata[e.id].purpose,n=this.remoteSDPStreamMetadata[e.id].audio_muted,a=this.remoteSDPStreamMetadata[e.id].video_muted;if(!r){T.warn("Call ".concat(this.callId," pushRemoteFeed() ignoring stream because we didn't get any metadata about it (streamId=").concat(e.id,")"));return}if(this.getFeedByStreamId(e.id)){T.warn("Call ".concat(this.callId," pushRemoteFeed() ignoring stream because we already have a feed for it (streamId=").concat(e.id,")"));return}this.feeds.push(new it({client:this.client,call:this,roomId:this.roomId,userId:t,deviceId:this.getOpponentDeviceId(),stream:e,purpose:r,audioMuted:n,videoMuted:a})),this.emit(Y.FeedsChanged,this.feeds,this),T.info("Call ".concat(this.callId," pushRemoteFeed() pushed stream (streamId=").concat(e.id,", active=").concat(e.active,", purpose=").concat(r,")"))}pushRemoteFeedWithoutMetadata(e){var t,r=this.getOpponentMember().userId,n=te.Usermedia,a=(t=this.feeds.find(s=>!s.isLocal()))===null||t===void 0?void 0:t.stream;if(a&&e.id!==a.id){T.warn("Call ".concat(this.callId," pushRemoteFeedWithoutMetadata() ignoring new stream because we already have stream (streamId=").concat(e.id,")"));return}if(this.getFeedByStreamId(e.id)){T.warn("Call ".concat(this.callId," pushRemoteFeedWithoutMetadata() ignoring stream because we already have a feed for it (streamId=").concat(e.id,")"));return}this.feeds.push(new it({client:this.client,call:this,roomId:this.roomId,audioMuted:!1,videoMuted:!1,userId:r,deviceId:this.getOpponentDeviceId(),stream:e,purpose:n})),this.emit(Y.FeedsChanged,this.feeds,this),T.info("Call ".concat(this.callId," pushRemoteFeedWithoutMetadata() pushed stream (streamId=").concat(e.id,", active=").concat(e.active,")"))}pushNewLocalFeed(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,n=this.client.getUserId();if(me(e.getAudioTracks(),!0),me(e.getVideoTracks(),!0),this.getFeedByStreamId(e.id)){T.warn("Call ".concat(this.callId," pushNewLocalFeed() ignoring stream because we already have a feed for it (streamId=").concat(e.id,")"));return}this.pushLocalFeed(new it({client:this.client,roomId:this.roomId,audioMuted:!1,videoMuted:!1,userId:n,deviceId:this.getOpponentDeviceId(),stream:e,purpose:t}),r)}pushLocalFeed(e){var t=this,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(this.feeds.some(s=>e.stream.id===s.stream.id)){T.info("Call ".concat(this.callId," pushLocalFeed() ignoring duplicate local stream (streamId=").concat(e.stream.id,")"));return}if(this.feeds.push(e),r){var n=function(){T.info("Call ".concat(t.callId," pushLocalFeed() adding track to peer connection (id=").concat(a.id,", kind=").concat(a.kind,", streamId=").concat(e.stream.id,", streamPurpose=").concat(e.purpose,", enabled=").concat(a.enabled,")"));var o=Ke(e.purpose,a.kind);if(t.transceivers.has(o)){var l=t.transceivers.get(o);l.sender.replaceTrack(a),l.direction=l.direction==="inactive"?"sendonly":"sendrecv"}else{var d=t.peerConn.addTrack(a,e.stream),u=t.peerConn.getTransceivers().find(h=>h.sender===d);u?t.transceivers.set(o,u):T.warn("Call ".concat(t.callId," pushLocalFeed() didn't find a matching transceiver after adding track!"))}};for(var a of e.stream.getTracks())n()}T.info("Call ".concat(this.callId," pushLocalFeed() pushed stream (id=").concat(e.stream.id,", active=").concat(e.stream.active,", purpose=").concat(e.purpose,")")),this.emit(Y.FeedsChanged,this.feeds,this)}removeLocalFeed(e){var t=Ke(e.purpose,"audio"),r=Ke(e.purpose,"video");for(var n of[t,r])if(this.transceivers.has(n)){var a=this.transceivers.get(n);a.sender&&this.peerConn.removeTrack(a.sender)}e.purpose===te.Screenshare&&this.client.getMediaHandler().stopScreensharingStream(e.stream),this.deleteFeed(e)}deleteAllFeeds(){for(var e of this.feeds)(!e.isLocal()||!this.groupCallId)&&e.dispose();this.feeds=[],this.emit(Y.FeedsChanged,this.feeds,this)}deleteFeedByStream(e){var t=this.getFeedByStreamId(e.id);if(!t){T.warn("Call ".concat(this.callId," deleteFeedByStream() didn't find the feed to delete (streamId=").concat(e.id,")"));return}this.deleteFeed(t)}deleteFeed(e){e.dispose(),this.feeds.splice(this.feeds.indexOf(e),1),this.emit(Y.FeedsChanged,this.feeds,this)}getCurrentCallStats(){var e=this;return R(function*(){return e.callHasEnded()?e.callStatsAtEnd:e.collectCallStats()})()}collectCallStats(){var e=this;return R(function*(){if(e.peerConn){var t=yield e.peerConn.getStats(),r=[];return t.forEach(n=>{r.push(n)}),r}})()}initWithInvite(e){var t=this;return R(function*(){var r,n=e.getContent();t.direction=ut.Inbound;var a=yield t.client.checkTurnServers();a||T.warn("Call ".concat(t.callId," initWithInvite() failed to get TURN credentials! Proceeding with call anyway..."));var s=n[ot];s?t.updateRemoteSDPStreamMetadata(s):T.debug("Call ".concat(t.callId," initWithInvite() did not get any SDPStreamMetadata! Can not send/receive multiple streams")),t.peerConn=t.createPeerConnection(),t.emit(Y.PeerConnectionCreated,t.peerConn,t),t.chooseOpponent(e),yield t.initOpponentCrypto();try{yield t.peerConn.setRemoteDescription(n.offer),T.debug("Call ".concat(t.callId," initWithInvite() set remote description: ").concat(n.offer.type)),yield t.addBufferedIceCandidates()}catch(u){T.debug("Call ".concat(t.callId," initWithInvite() failed to set remote description"),u),t.terminate(he.Local,W.SetRemoteDescription,!1);return}var o=(r=t.feeds.find(u=>!u.isLocal()))===null||r===void 0?void 0:r.stream;if(!t.isOnlyDataChannelAllowed&&(!o||o.getTracks().length===0)){T.error("Call ".concat(t.callId," initWithInvite() no remote stream or no tracks after setting remote description!")),t.terminate(he.Local,W.SetRemoteDescription,!1);return}if(t.state=V.Ringing,e.getLocalAge()){var l=setTimeout(()=>{if(t.state==V.Ringing){var u;T.debug("Call ".concat(t.callId," initWithInvite() invite has expired. Hanging up.")),t.hangupParty=he.Remote,t.state=V.Ended,t.stopAllMedia(),t.peerConn.signalingState!="closed"&&t.peerConn.close(),(u=t.stats)===null||u===void 0||u.removeStatsReportGatherer(t.callId),t.emit(Y.Hangup,t)}},n.lifetime-e.getLocalAge()),d=u=>{u!==V.Ringing&&(clearTimeout(l),t.off(Y.State,d))};t.on(Y.State,d)}})()}initWithHangup(e){this.state=V.Ended}shouldAnswerWithMediaType(e,t,r){return e&&!t?(T.warn("Call ".concat(this.callId," shouldAnswerWithMediaType() unable to answer with ").concat(r," because the other side isn't sending it either.")),!1):!no(e)&&e!==t&&!this.opponentSupportsSDPStreamMetadata()?(T.warn("Call ".concat(this.callId," shouldAnswerWithMediaType() unable to answer with ").concat(r,"=").concat(e," because the other side doesn't support it. Answering with ").concat(r,"=").concat(t,".")),t):e??t}answer(e,t){var r=this;return R(function*(){if(!r.inviteOrAnswerSent){if(e===!1&&t===!1)throw new Error("You CANNOT answer a call without media");if(!r.localUsermediaStream&&!r.waitForLocalAVStream){var n=r.state,a=r.shouldAnswerWithMediaType(e,r.hasRemoteUserMediaAudioTrack,"audio"),s=r.shouldAnswerWithMediaType(t,r.hasRemoteUserMediaVideoTrack,"video");r.state=V.WaitLocalMedia,r.waitForLocalAVStream=!0;try{var o,l=yield r.client.getMediaHandler().getUserMediaStream(a,s);r.waitForLocalAVStream=!1;var d=new it({client:r.client,roomId:r.roomId,userId:r.client.getUserId(),deviceId:(o=r.client.getDeviceId())!==null&&o!==void 0?o:void 0,stream:l,purpose:te.Usermedia,audioMuted:!1,videoMuted:!1}),u=[d];r.localScreensharingFeed&&u.push(r.localScreensharingFeed),r.answerWithCallFeeds(u)}catch(h){if(s)T.warn("Call ".concat(r.callId," answer() failed to getUserMedia(), trying to getUserMedia() without video")),r.state=n,r.waitForLocalAVStream=!1,yield r.answer(a,!1);else{r.getUserMediaFailed(h);return}}}else r.waitForLocalAVStream&&(r.state=V.WaitLocalMedia)}})()}answerWithCallFeeds(e){this.inviteOrAnswerSent||this.queueGotCallFeedsForAnswer(e)}replacedBy(e){T.debug("Call ".concat(this.callId," replacedBy() running (newCallId=").concat(e.callId,")")),this.state===V.WaitLocalMedia?(T.debug("Call ".concat(this.callId," replacedBy() telling new call to wait for local media (newCallId=").concat(e.callId,")")),e.waitForLocalAVStream=!0):[V.CreateOffer,V.InviteSent].includes(this.state)&&(e.direction===ut.Outbound?e.queueGotCallFeedsForAnswer([]):(T.debug("Call ".concat(this.callId," replacedBy() handing local stream to new call(newCallId=").concat(e.callId,")")),e.queueGotCallFeedsForAnswer(this.getLocalFeeds().map(t=>t.clone())))),this.successor=e,this.emit(Y.Replaced,e,this),this.hangup(W.Replaced,!0)}hangup(e,t){if(!this.callHasEnded()&&(T.debug("Call ".concat(this.callId," hangup() ending call (reason=").concat(e,")")),this.terminate(he.Local,e,!t),![V.Fledgling,V.WaitLocalMedia].includes(this.state))){var r={};(this.opponentVersion&&this.opponentVersion!==0||e!==W.UserHangup)&&(r.reason=e),this.sendVoipEvent(M.CallHangup,r)}}reject(){if(this.state!==V.Ringing)throw Error("Call must be in 'ringing' state to reject!");if(this.opponentVersion===0){T.info("Call ".concat(this.callId," reject() opponent version is less than 1: sending hangup instead of reject (opponentVersion=").concat(this.opponentVersion,")")),this.hangup(W.UserHangup,!0);return}T.debug("Rejecting call: "+this.callId),this.terminate(he.Local,W.UserHangup,!0),this.sendVoipEvent(M.CallReject,{})}upgradeCall(e,t){var r=this;return R(function*(){if(!(!e&&!t)&&r.opponentSupportsSDPStreamMetadata())try{T.debug("Call ".concat(r.callId," upgradeCall() upgrading call (audio=").concat(e,", video=").concat(t,")"));var n=e||r.hasLocalUserMediaAudioTrack,a=t||r.hasLocalUserMediaVideoTrack,s=yield r.client.getMediaHandler().getUserMediaStream(n,a,!1);yield r.updateLocalUsermediaStream(s,e,t)}catch(o){T.error("Call ".concat(r.callId," upgradeCall() failed to upgrade the call"),o),r.emit(Y.Error,new nt(W.NoUserMedia,"Failed to get camera access: ",o),r)}})()}opponentSupportsSDPStreamMetadata(){return!!this.remoteSDPStreamMetadata}isScreensharing(){return!!this.localScreensharingStream}setScreensharingEnabled(e,t){var r=this;return R(function*(){if(e&&r.isScreensharing())return T.warn("Call ".concat(r.callId," setScreensharingEnabled() there is already a screensharing stream - there is nothing to do!")),!0;if(!e&&!r.isScreensharing())return T.warn("Call ".concat(r.callId," setScreensharingEnabled() there already isn't a screensharing stream - there is nothing to do!")),!1;if(!r.opponentSupportsSDPStreamMetadata())return r.setScreensharingEnabledWithoutMetadataSupport(e,t);if(T.debug("Call ".concat(r.callId," setScreensharingEnabled() running (enabled=").concat(e,")")),e)try{var n=yield r.client.getMediaHandler().getScreensharingStream(t);return n?(r.pushNewLocalFeed(n,te.Screenshare),!0):!1}catch(l){return T.error("Call ".concat(r.callId," setScreensharingEnabled() failed to get screen-sharing stream:"),l),!1}else{var a=r.transceivers.get(Ke(te.Screenshare,"audio")),s=r.transceivers.get(Ke(te.Screenshare,"video"));for(var o of[a,s])o&&o.sender&&r.peerConn.removeTrack(o.sender);return r.client.getMediaHandler().stopScreensharingStream(r.localScreensharingStream),r.deleteFeedByStream(r.localScreensharingStream),!1}})()}setScreensharingEnabledWithoutMetadataSupport(e,t){var r=this;return R(function*(){if(T.debug("Call ".concat(r.callId," setScreensharingEnabledWithoutMetadataSupport() running (enabled=").concat(e,")")),e)try{var n,a=yield r.client.getMediaHandler().getScreensharingStream(t);if(!a)return!1;var s=a.getTracks().find(m=>m.kind==="video"),o=(n=r.transceivers.get(Ke(te.Usermedia,"video")))===null||n===void 0?void 0:n.sender;return o?.replaceTrack(s??null),r.pushNewLocalFeed(a,te.Screenshare,!1),!0}catch(m){return T.error("Call ".concat(r.callId," setScreensharingEnabledWithoutMetadataSupport() failed to get screen-sharing stream:"),m),!1}else{var l,d,u=(l=r.localUsermediaStream)===null||l===void 0?void 0:l.getTracks().find(m=>m.kind==="video"),h=(d=r.transceivers.get(Ke(te.Usermedia,"video")))===null||d===void 0?void 0:d.sender;return h?.replaceTrack(u??null),r.client.getMediaHandler().stopScreensharingStream(r.localScreensharingStream),r.deleteFeedByStream(r.localScreensharingStream),!1}})()}updateLocalUsermediaStream(e){var t=arguments,r=this;return R(function*(){var n=t.length>1&&t[1]!==void 0?t[1]:!1,a=t.length>2&&t[2]!==void 0?t[2]:!1,s=r.localUsermediaFeed,o=n||!s.isAudioMuted()&&!r.remoteOnHold,l=a||!s.isVideoMuted()&&!r.remoteOnHold;T.log("Call ".concat(r.callId," updateLocalUsermediaStream() running (streamId=").concat(e.id,", audio=").concat(o,", video=").concat(l,")")),me(e.getAudioTracks(),o),me(e.getVideoTracks(),l);for(var d of r.localUsermediaStream.getTracks())r.localUsermediaStream.removeTrack(d),d.stop();for(var u of e.getTracks())r.localUsermediaStream.addTrack(u);var h=function*(){var f=Ke(te.Usermedia,m.kind),p=r.transceivers.get(f),I=p?.sender,S=!1;if(I)try{T.info("Call ".concat(r.callId," updateLocalUsermediaStream() replacing track (id=").concat(m.id,", kind=").concat(m.kind,", streamId=").concat(e.id,", streamPurpose=").concat(s.purpose,")")),yield I.replaceTrack(m),p.direction=p.direction==="inactive"?"sendonly":"sendrecv",S=!0}catch(y){T.warn("Call ".concat(r.callId," updateLocalUsermediaStream() replaceTrack failed: adding new transceiver instead"),y)}if(!S){T.info("Call ".concat(r.callId," updateLocalUsermediaStream() adding track to peer connection (id=").concat(m.id,", kind=").concat(m.kind,", streamId=").concat(e.id,", streamPurpose=").concat(s.purpose,")"));var g=r.peerConn.addTrack(m,r.localUsermediaStream),_=r.peerConn.getTransceivers().find(y=>y.sender===g);_?r.transceivers.set(f,_):T.warn("Call ".concat(r.callId," updateLocalUsermediaStream() couldn't find matching transceiver for newly added track!"))}};for(var m of e.getTracks())yield*h()})()}setLocalVideoMuted(e){var t=this;return R(function*(){var r;if(T.log("Call ".concat(t.callId," setLocalVideoMuted() running ").concat(e)),!e&&t.stopVideoTrackTimer!==void 0&&(clearTimeout(t.stopVideoTrackTimer),t.stopVideoTrackTimer=void 0),!(yield t.client.getMediaHandler().hasVideoDevice()))return t.isLocalVideoMuted();if(!t.hasUserMediaVideoSender&&!e){var n;return(n=t.localUsermediaFeed)===null||n===void 0||n.setAudioVideoMuted(null,e),yield t.upgradeCall(!1,!0),t.isLocalVideoMuted()}if(!e&&t.localUsermediaStream.getVideoTracks().length===0){var a=yield t.client.getMediaHandler().getUserMediaStream(!0,!0);yield t.updateLocalUsermediaStream(a)}return(r=t.localUsermediaFeed)===null||r===void 0||r.setAudioVideoMuted(null,e),t.updateMuteStatus(),yield t.sendMetadataUpdate(),e&&(t.stopVideoTrackTimer=setTimeout(()=>{for(var s of t.localUsermediaStream.getVideoTracks())s.stop(),t.localUsermediaStream.removeTrack(s)},120)),t.isLocalVideoMuted()})()}isLocalVideoMuted(){var e,t;return(e=(t=this.localUsermediaFeed)===null||t===void 0?void 0:t.isVideoMuted())!==null&&e!==void 0?e:!1}setMicrophoneMuted(e){var t=this;return R(function*(){var r;return T.log("Call ".concat(t.callId," setMicrophoneMuted() running ").concat(e)),(yield t.client.getMediaHandler().hasAudioDevice())?!e&&(!t.hasUserMediaAudioSender||!t.hasLocalUserMediaAudioTrack)?(yield t.upgradeCall(!0,!1),t.isMicrophoneMuted()):((r=t.localUsermediaFeed)===null||r===void 0||r.setAudioVideoMuted(e,null),t.updateMuteStatus(),yield t.sendMetadataUpdate(),t.isMicrophoneMuted()):t.isMicrophoneMuted()})()}isMicrophoneMuted(){var e,t;return(e=(t=this.localUsermediaFeed)===null||t===void 0?void 0:t.isAudioMuted())!==null&&e!==void 0?e:!1}isRemoteOnHold(){return this.remoteOnHold}setRemoteOnHold(e){if(this.isRemoteOnHold()!==e){this.remoteOnHold=e;for(var t of this.peerConn.getTransceivers())t.direction=e?"sendonly":"sendrecv";this.updateMuteStatus(),this.sendMetadataUpdate(),this.emit(Y.RemoteHoldUnhold,this.remoteOnHold,this)}}isLocalOnHold(){if(this.state!==V.Connected)return!1;var e=!0;for(var t of this.peerConn.getTransceivers()){var r=["inactive","recvonly"].includes(t.currentDirection);r||(e=!1)}return e}sendDtmfDigit(e){for(var t of this.peerConn.getSenders()){var r;if(((r=t.track)===null||r===void 0?void 0:r.kind)==="audio"&&t.dtmf){t.dtmf.insertDTMF(e);return}}throw new Error("Unable to find a track to send DTMF on")}updateMuteStatus(){var e=this.isMicrophoneMuted()||this.remoteOnHold,t=this.isLocalVideoMuted()||this.remoteOnHold;T.log("Call ".concat(this.callId," updateMuteStatus stream ").concat(this.localUsermediaStream.id," micShouldBeMuted ").concat(e," vidShouldBeMuted ").concat(t)),me(this.localUsermediaStream.getAudioTracks(),!e),me(this.localUsermediaStream.getVideoTracks(),!t)}sendMetadataUpdate(){var e=this;return R(function*(){yield e.sendVoipEvent(M.CallSDPStreamMetadataChangedPrefix,{[ot]:e.getLocalSDPStreamMetadata()})})()}gotCallFeedsForInvite(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(this.successor){this.successor.queueGotCallFeedsForAnswer(e);return}if(this.callHasEnded()){this.stopAllMedia();return}for(var r of e)this.pushLocalFeed(r);t&&this.peerConn.addTransceiver("video",{direction:"recvonly"}),this.state=V.CreateOffer,T.debug("Call ".concat(this.callId," gotUserMediaForInvite() run"))}sendAnswer(){var e=this;return R(function*(){var t={answer:{sdp:e.peerConn.localDescription.sdp,type:e.peerConn.localDescription.type},[ot]:e.getLocalSDPStreamMetadata(!0)};t.capabilities={"m.call.transferee":e.client.supportsCallTransfer,"m.call.dtmf":!1};var r=e.discardDuplicateCandidates();T.info("Call ".concat(e.callId," sendAnswer() discarding ").concat(r," candidates that will be sent in answer"));try{yield e.sendVoipEvent(M.CallAnswer,t),e.inviteOrAnswerSent=!0}catch(s){e.state=V.Ringing,s instanceof ue&&s.event&&e.client.cancelPendingEvent(s.event);var n=W.SendAnswer,a="Failed to send answer";throw s.name=="UnknownDeviceError"&&(n=W.UnknownDevices,a="Unknown devices present in the room"),e.emit(Y.Error,new nt(n,a,s),e),s}e.sendCandidateQueue()})()}queueGotCallFeedsForAnswer(e){this.responsePromiseChain?this.responsePromiseChain=this.responsePromiseChain.then(()=>this.gotCallFeedsForAnswer(e)):this.responsePromiseChain=this.gotCallFeedsForAnswer(e)}mungeSdp(e,t){var r=pi.parse(e.sdp);r.media.forEach(n=>{var a=new Map,s=new Map;for(var o of n.rtp)a.set(o.payload,o.codec),s.set(o.codec,o.payload);for(var l of t)if(l.mediaType===n.type){if(!s.has(l.codec)){T.info("Call ".concat(this.callId," mungeSdp() ignoring SDP modifications for ").concat(l.codec," as it's not present."));continue}var d=[];l.enableDtx!==void 0&&d.push("usedtx=".concat(l.enableDtx?"1":"0")),l.maxAverageBitrate!==void 0&&d.push("maxaveragebitrate=".concat(l.maxAverageBitrate));var u=!1;for(var h of n.fmtp)a.get(h.payload)===l.codec&&(u=!0,h.config+=";"+d.join(";"));u||n.fmtp.push({payload:s.get(l.codec),config:d.join(";")})}}),e.sdp=pi.write(r)}createOffer(){var e=this;return R(function*(){var t=yield e.peerConn.createOffer();return e.mungeSdp(t,cs(e.isPtt)),t})()}createAnswer(){var e=this;return R(function*(){var t=yield e.peerConn.createAnswer();return e.mungeSdp(t,cs(e.isPtt)),t})()}gotCallFeedsForAnswer(e){var t=this;return R(function*(){if(!t.callHasEnded()){t.waitForLocalAVStream=!1;for(var r of e)t.pushLocalFeed(r);t.state=V.CreateAnswer;var n;try{t.getRidOfRTXCodecs(),n=yield t.createAnswer()}catch(a){T.debug("Call ".concat(t.callId," gotCallFeedsForAnswer() failed to create answer: "),a),t.terminate(he.Local,W.CreateAnswer,!0);return}try{if(yield t.peerConn.setLocalDescription(n),t.callHasEnded()||(t.state=V.Connecting,yield new Promise(a=>{setTimeout(a,200)}),t.callHasEnded()))return;t.sendAnswer()}catch(a){T.debug("Call ".concat(t.callId," gotCallFeedsForAnswer() error setting local description!"),a),t.terminate(he.Local,W.SetLocalDescription,!0);return}}})()}onRemoteIceCandidatesReceived(e){var t=this;return R(function*(){if(!t.callHasEnded()){var r=e.getContent(),n=r.candidates;if(!n){T.info("Call ".concat(t.callId," onRemoteIceCandidatesReceived() ignoring candidates event with no candidates!"));return}var a=r.version===0?null:r.party_id||null;if(t.opponentPartyId===void 0){if(a){T.info("Call ".concat(t.callId," onRemoteIceCandidatesReceived() buffering ").concat(n.length," candidates until we pick an opponent"));var s=t.remoteCandidateBuffer.get(a)||[];s.push(...n),t.remoteCandidateBuffer.set(a,s)}return}if(!t.partyIdMatches(r)){T.info("Call ".concat(t.callId," onRemoteIceCandidatesReceived() ignoring candidates from party ID ").concat(r.party_id,": we have chosen party ID ").concat(t.opponentPartyId));return}yield t.addIceCandidates(n)}})()}onAnswerReceived(e){var t=this;return R(function*(){var r=e.getContent();if(T.debug("Call ".concat(t.callId," onAnswerReceived() running (hangupParty=").concat(r.party_id,")")),t.callHasEnded()){T.debug("Call ".concat(t.callId," onAnswerReceived() ignoring answer because call has ended"));return}if(t.opponentPartyId!==void 0){T.info("Call ".concat(t.callId," onAnswerReceived() ignoring answer from party ID ").concat(r.party_id,": we already have an answer/reject from ").concat(t.opponentPartyId));return}t.chooseOpponent(e),yield t.addBufferedIceCandidates(),t.state=V.Connecting;var n=r[ot];n?t.updateRemoteSDPStreamMetadata(n):T.warn("Call ".concat(t.callId," onAnswerReceived() did not get any SDPStreamMetadata! Can not send/receive multiple streams"));try{t.isSettingRemoteAnswerPending=!0,yield t.peerConn.setRemoteDescription(r.answer),t.isSettingRemoteAnswerPending=!1,T.debug("Call ".concat(t.callId," onAnswerReceived() set remote description: ").concat(r.answer.type))}catch(a){t.isSettingRemoteAnswerPending=!1,T.debug("Call ".concat(t.callId," onAnswerReceived() failed to set remote description"),a),t.terminate(he.Local,W.SetRemoteDescription,!1);return}if(t.opponentPartyId!==null)try{yield t.sendVoipEvent(M.CallSelectAnswer,{selected_party_id:t.opponentPartyId})}catch(a){T.warn("Call ".concat(t.callId," onAnswerReceived() failed to send select_answer event"),a)}})()}onSelectAnswerReceived(e){var t=this;return R(function*(){if(t.direction!==ut.Inbound){T.warn("Call ".concat(t.callId," onSelectAnswerReceived() got select_answer for an outbound call: ignoring"));return}var r=e.getContent().selected_party_id;if(r==null){T.warn("Call ".concat(t.callId," onSelectAnswerReceived() got nonsensical select_answer with null/undefined selected_party_id: ignoring"));return}r!==t.ourPartyId&&(T.info("Call ".concat(t.callId," onSelectAnswerReceived() got select_answer for party ID ").concat(r,": we are party ID ").concat(t.ourPartyId,".")),yield t.terminate(he.Remote,W.AnsweredElsewhere,!0))})()}onNegotiateReceived(e){var t=this;return R(function*(){var r=e.getContent(),n=r.description;if(!n||!n.sdp||!n.type){T.info("Call ".concat(t.callId," onNegotiateReceived() ignoring invalid m.call.negotiate event"));return}var a=t.direction===ut.Inbound,s=!t.makingOffer&&(t.peerConn.signalingState==="stable"||t.isSettingRemoteAnswerPending),o=n.type==="offer"&&!s;if(t.ignoreOffer=!a&&o,t.ignoreOffer){T.info("Call ".concat(t.callId," onNegotiateReceived() ignoring colliding negotiate event because we're impolite"));return}var l=t.isLocalOnHold(),d=r[ot];d?t.updateRemoteSDPStreamMetadata(d):T.warn("Call ".concat(t.callId," onNegotiateReceived() received negotiation event without SDPStreamMetadata!"));try{if(t.isSettingRemoteAnswerPending=n.type=="answer",yield t.peerConn.setRemoteDescription(n),t.isSettingRemoteAnswerPending=!1,T.debug("Call ".concat(t.callId," onNegotiateReceived() set remote description: ").concat(n.type)),n.type==="offer"){var u,h;try{t.getRidOfRTXCodecs(),h=yield t.createAnswer()}catch(E){T.debug("Call ".concat(t.callId," onNegotiateReceived() failed to create answer: "),E),t.terminate(he.Local,W.CreateAnswer,!0);return}yield t.peerConn.setLocalDescription(h),T.debug("Call ".concat(t.callId," onNegotiateReceived() create an answer")),t.sendVoipEvent(M.CallNegotiate,{lifetime:$n,description:(u=t.peerConn.localDescription)===null||u===void 0?void 0:u.toJSON(),[ot]:t.getLocalSDPStreamMetadata(!0)})}}catch(E){t.isSettingRemoteAnswerPending=!1,T.warn("Call ".concat(t.callId," onNegotiateReceived() failed to complete negotiation"),E)}var m=t.isLocalOnHold();l!==m&&(t.emit(Y.LocalHoldUnhold,m,t),t.emit(Y.HoldUnhold,m))})()}updateRemoteSDPStreamMetadata(e){this.remoteSDPStreamMetadata=io(this.remoteSDPStreamMetadata||{},e,!0);for(var t of this.getRemoteFeeds()){var r,n=t.stream.id,a=this.remoteSDPStreamMetadata[n];t.setAudioVideoMuted(a?.audio_muted,a?.video_muted),t.purpose=(r=this.remoteSDPStreamMetadata[n])===null||r===void 0?void 0:r.purpose}}onSDPStreamMetadataChangedReceived(e){var t=e.getContent(),r=t[ot];this.updateRemoteSDPStreamMetadata(r)}onAssertedIdentityReceived(e){var t=this;return R(function*(){var r=e.getContent();r.asserted_identity&&(t.remoteAssertedIdentity={id:r.asserted_identity.id,displayName:r.asserted_identity.display_name},t.emit(Y.AssertedIdentityChanged,t))})()}callHasEnded(){return this.state===V.Ended}queueGotLocalOffer(){this.responsePromiseChain?this.responsePromiseChain=this.responsePromiseChain.then(()=>this.wrappedGotLocalOffer()):this.responsePromiseChain=this.wrappedGotLocalOffer()}wrappedGotLocalOffer(){var e=this;return R(function*(){e.makingOffer=!0;try{yield e.gotLocalOffer()}catch(t){e.getLocalOfferFailed(t);return}finally{e.makingOffer=!1}})()}gotLocalOffer(){var e=this;return R(function*(){if(T.debug("Call ".concat(e.callId," gotLocalOffer() running")),e.callHasEnded()){T.debug("Call ".concat(e.callId,' gotLocalOffer() ignoring newly created offer because the call has ended"'));return}var t;try{e.getRidOfRTXCodecs(),t=yield e.createOffer()}catch(u){T.debug("Call ".concat(e.callId," gotLocalOffer() failed to create offer: "),u),e.terminate(he.Local,W.CreateOffer,!0);return}try{yield e.peerConn.setLocalDescription(t)}catch(u){T.debug("Call ".concat(e.callId," gotLocalOffer() error setting local description!"),u),e.terminate(he.Local,W.SetLocalDescription,!0);return}if(e.peerConn.iceGatheringState==="gathering"&&(yield new Promise(u=>{setTimeout(u,200)})),!e.callHasEnded()){var r=e.state===V.CreateOffer?M.CallInvite:M.CallNegotiate,n={lifetime:$n};if(r===M.CallInvite&&e.invitee&&(n.invitee=e.invitee),e.state===V.CreateOffer){var a;n.offer=(a=e.peerConn.localDescription)===null||a===void 0?void 0:a.toJSON()}else{var s;n.description=(s=e.peerConn.localDescription)===null||s===void 0?void 0:s.toJSON()}n.capabilities={"m.call.transferee":e.client.supportsCallTransfer,"m.call.dtmf":!1},n[ot]=e.getLocalSDPStreamMetadata(!0);var o=e.discardDuplicateCandidates();T.info("Call ".concat(e.callId," gotLocalOffer() discarding ").concat(o," candidates that will be sent in offer"));try{yield e.sendVoipEvent(r,n)}catch(u){T.error("Call ".concat(e.callId," gotLocalOffer() failed to send invite"),u),u instanceof ue&&u.event&&e.client.cancelPendingEvent(u.event);var l=W.SignallingFailed,d="Signalling failed";e.state===V.CreateOffer&&(l=W.SendInvite,d="Failed to send invite"),u.name=="UnknownDeviceError"&&(l=W.UnknownDevices,d="Unknown devices present in the room"),e.emit(Y.Error,new nt(l,d,u),e),e.terminate(he.Local,l,!1);return}e.sendCandidateQueue(),e.state===V.CreateOffer&&(e.inviteOrAnswerSent=!0,e.state=V.InviteSent,e.inviteTimeout=setTimeout(()=>{e.inviteTimeout=void 0,e.state===V.InviteSent&&e.hangup(W.InviteTimeout,!1)},$n))}})()}getRidOfRTXCodecs(){if(!(!RTCRtpReceiver.getCapabilities||!RTCRtpSender.getCapabilities)){var e=this.transceivers.get(Ke(te.Screenshare,"video"));if(!(!e||!e.setCodecPreferences)){var t=RTCRtpReceiver.getCapabilities("video").codecs,r=RTCRtpSender.getCapabilities("video").codecs,n=[];for(var a of[...t,...r])if(a.mimeType!=="video/rtx"){n.push(a);try{e.setCodecPreferences(n)}catch(s){T.info("Working around buggy WebRTC impl: claimed to support codec but threw when setting codec preferences",a,s),n.pop()}}}}}sendVoipEvent(e,t){var r=this;return R(function*(){var n=an(an({},t),{},{version:Uu,call_id:r.callId,party_id:r.ourPartyId,conf_id:r.groupCallId});if(r.opponentDeviceId){var a,s=r.toDeviceSeq++,o=an(an({},n),{},{device_id:r.client.deviceId,sender_session_id:r.client.getSessionId(),dest_session_id:r.opponentSessionId,seq:s,[Ui]:su()});r.emit(Y.SendVoipEvent,{type:"toDevice",eventType:e,userId:r.invitee||((a=r.getOpponentMember())===null||a===void 0?void 0:a.userId),opponentDeviceId:r.opponentDeviceId,content:o},r);var l=r.invitee||r.getOpponentMember().userId;if(r.client.getUseE2eForGroupCall()){if(!r.hasOpponentDeviceInfo){T.warn("Call ".concat(r.callId," sendVoipEvent() failed: we do not have opponentDeviceInfo"));return}throw new Error("Unimplemented")}else yield r.client.sendToDevice(e,new Map([[l,new Map([[r.opponentDeviceId,o]])]]))}else{var d;r.emit(Y.SendVoipEvent,{type:"sendEvent",eventType:e,roomId:r.roomId,content:n,userId:r.invitee||((d=r.getOpponentMember())===null||d===void 0?void 0:d.userId)},r),yield r.client.sendEvent(r.roomId,e,n)}})()}queueCandidate(e){if(e?this.candidateSendQueue.push(e):this.candidatesEnded=!0,!(this.state===V.Ringing||!this.inviteOrAnswerSent)){var t=this.direction===ut.Inbound?500:2e3;this.candidateSendTries===0&&setTimeout(()=>{this.sendCandidateQueue()},t)}}discardDuplicateCandidates(){for(var e=0,t=[],r=0;r<this.candidateSendQueue.length;r++){var n=this.candidateSendQueue[r];n.candidate===""?t.push(n):e++}return this.candidateSendQueue=t,e}transfer(e){var t=this;return R(function*(){var r=yield t.client.getProfileInfo(e),n=Mt(),a={replacement_id:Mt(),target_user:{id:e,display_name:r.displayname,avatar_url:r.avatar_url},create_call:n};yield t.sendVoipEvent(M.CallReplaces,a),yield t.terminate(he.Local,W.Transferred,!0)})()}transferToCall(e){var t=this;return R(function*(){var r,n,a=(r=e.getOpponentMember())===null||r===void 0?void 0:r.userId,s=a?yield t.client.getProfileInfo(a):void 0,o=(n=t.getOpponentMember())===null||n===void 0?void 0:n.userId,l=o?yield t.client.getProfileInfo(o):void 0,d=Mt(),u={replacement_id:Mt(),target_user:{id:o,display_name:l?.displayname,avatar_url:l?.avatar_url},await_call:d};yield e.sendVoipEvent(M.CallReplaces,u);var h={replacement_id:Mt(),target_user:{id:a,display_name:s?.displayname,avatar_url:s?.avatar_url},create_call:d};yield t.sendVoipEvent(M.CallReplaces,h),yield t.terminate(he.Local,W.Transferred,!0),yield e.terminate(he.Local,W.Transferred,!0)})()}terminate(e,t,r){var n=this;return R(function*(){var a;if(!n.callHasEnded()){n.hangupParty=e,n.hangupReason=t,n.state=V.Ended,n.inviteTimeout&&(clearTimeout(n.inviteTimeout),n.inviteTimeout=void 0),n.iceDisconnectedTimeout!==void 0&&(clearTimeout(n.iceDisconnectedTimeout),n.iceDisconnectedTimeout=void 0),n.callLengthInterval&&(clearInterval(n.callLengthInterval),n.callLengthInterval=void 0),n.stopVideoTrackTimer!==void 0&&(clearTimeout(n.stopVideoTrackTimer),n.stopVideoTrackTimer=void 0);for(var[s,o]of n.removeTrackListeners)s.removeEventListener("removetrack",o);n.removeTrackListeners.clear(),n.callStatsAtEnd=yield n.collectCallStats(),n.stopAllMedia(),n.deleteAllFeeds(),n.peerConn&&n.peerConn.signalingState!=="closed"&&n.peerConn.close(),(a=n.stats)===null||a===void 0||a.removeStatsReportGatherer(n.callId),r&&n.emit(Y.Hangup,n),n.client.callEventHandler.calls.delete(n.callId)}})()}stopAllMedia(){T.debug("Call ".concat(this.callId," stopAllMedia() running"));for(var e of this.feeds)if(e.isLocal()&&e.purpose===te.Usermedia)this.client.getMediaHandler().stopUserMediaStream(e.stream);else if(e.isLocal()&&e.purpose===te.Screenshare)this.client.getMediaHandler().stopScreensharingStream(e.stream);else if(!e.isLocal()){T.debug("Call ".concat(this.callId," stopAllMedia() stopping stream (streamId=").concat(e.stream.id,")"));for(var t of e.stream.getTracks())t.stop()}}checkForErrorListener(){if(this.listeners(Fl.Error).length===0)throw new Error("You MUST attach an error listener using call.on('error', function() {})")}sendCandidateQueue(){var e=this;return R(function*(){if(!(e.candidateSendQueue.length===0||e.callHasEnded())){var t=e.candidateSendQueue;e.candidateSendQueue=[],++e.candidateSendTries;var r={candidates:t.map(o=>o.toJSON())};e.candidatesEnded&&r.candidates.push({candidate:""}),T.debug("Call ".concat(e.callId," sendCandidateQueue() attempting to send ").concat(t.length," candidates"));try{yield e.sendVoipEvent(M.CallCandidates,r),e.candidateSendTries=0,e.sendCandidateQueue()}catch(o){if(o instanceof ue&&o.event&&e.client.cancelPendingEvent(o.event),e.candidateSendQueue.push(...t),e.candidateSendTries>5){T.debug("Call ".concat(e.callId," sendCandidateQueue() failed to send candidates on attempt ").concat(e.candidateSendTries,". Giving up on this call."),o);var n=W.SignallingFailed,a="Signalling failed";e.emit(Y.Error,new nt(n,a,o),e),e.hangup(n,!1);return}var s=500*Math.pow(2,e.candidateSendTries);++e.candidateSendTries,T.debug("Call ".concat(e.callId," sendCandidateQueue() failed to send candidates. Retrying in ").concat(s,"ms"),o),setTimeout(()=>{e.sendCandidateQueue()},s)}}})()}placeCall(e,t){var r=this;return R(function*(){if(!e)throw new Error("You CANNOT start a call without audio");r.state=V.WaitLocalMedia;var n;try{var a,s=yield r.client.getMediaHandler().getUserMediaStream(e,t);me(s.getAudioTracks(),!0),me(s.getVideoTracks(),!0),n=new it({client:r.client,roomId:r.roomId,userId:r.client.getUserId(),deviceId:(a=r.client.getDeviceId())!==null&&a!==void 0?a:void 0,stream:s,purpose:te.Usermedia,audioMuted:!1,videoMuted:!1})}catch(o){r.getUserMediaFailed(o);return}try{yield r.placeCallWithCallFeeds([n])}catch(o){r.placeCallFailed(o);return}})()}placeCallWithCallFeeds(e){var t=arguments,r=this;return R(function*(){var n=t.length>1&&t[1]!==void 0?t[1]:!1;r.checkForErrorListener(),r.direction=ut.Outbound,yield r.initOpponentCrypto(),r.client.callEventHandler.calls.set(r.callId,r);var a=yield r.client.checkTurnServers();a||T.warn("Call ".concat(r.callId," placeCallWithCallFeeds() failed to get TURN credentials! Proceeding with call anyway...")),r.peerConn=r.createPeerConnection(),r.emit(Y.PeerConnectionCreated,r.peerConn,r),r.gotCallFeedsForInvite(e,n)})()}createPeerConnection(){var e,t=new window.RTCPeerConnection({iceTransportPolicy:this.forceTURN?"relay":void 0,iceServers:this.turnServers.length?this.turnServers:void 0,iceCandidatePoolSize:this.client.iceCandidatePoolSize,bundlePolicy:"max-bundle"});t.addEventListener("iceconnectionstatechange",this.onIceConnectionStateChanged),t.addEventListener("signalingstatechange",this.onSignallingStateChanged),t.addEventListener("icecandidate",this.gotLocalIceCandidate),t.addEventListener("icegatheringstatechange",this.onIceGatheringStateChange),t.addEventListener("track",this.onTrack),t.addEventListener("negotiationneeded",this.onNegotiationNeeded),t.addEventListener("datachannel",this.onDataChannel);var r=this.getOpponentMember(),n=r?r.userId:"unknown";return(e=this.stats)===null||e===void 0||e.addStatsReportGatherer(this.callId,n,t),t}partyIdMatches(e){var t=e.version===0?null:e.party_id||null;return t===this.opponentPartyId}chooseOpponent(e){var t,r=e.getContent();if(T.debug("Call ".concat(this.callId," chooseOpponent() running (partyId=").concat(r.party_id,")")),this.opponentVersion=r.version,this.opponentVersion===0?this.opponentPartyId=null:this.opponentPartyId=r.party_id||null,this.opponentCaps=r.capabilities||{},this.opponentMember=(t=this.client.getRoom(this.roomId).getMember(e.getSender()))!==null&&t!==void 0?t:void 0,this.opponentMember){var n;(n=this.stats)===null||n===void 0||n.updateOpponentMember(this.callId,this.opponentMember.userId)}}addBufferedIceCandidates(){var e=this;return R(function*(){var t=e.remoteCandidateBuffer.get(e.opponentPartyId);t&&(T.info("Call ".concat(e.callId," addBufferedIceCandidates() adding ").concat(t.length," buffered candidates for opponent ").concat(e.opponentPartyId)),yield e.addIceCandidates(t)),e.remoteCandidateBuffer.clear()})()}addIceCandidates(e){var t=this;return R(function*(){for(var r of e){(r.sdpMid===null||r.sdpMid===void 0)&&(r.sdpMLineIndex===null||r.sdpMLineIndex===void 0)?T.debug("Call ".concat(t.callId," addIceCandidates() got remote ICE end-of-candidates")):T.debug("Call ".concat(t.callId," addIceCandidates() got remote ICE candidate (sdpMid=").concat(r.sdpMid,", candidate=").concat(r.candidate,")"));try{yield t.peerConn.addIceCandidate(r)}catch(n){t.ignoreOffer?T.debug("Call ".concat(t.callId," addIceCandidates() failed to add remote ICE candidate because ignoring offer"),n):T.info("Call ".concat(t.callId," addIceCandidates() failed to add remote ICE candidate"),n)}}})()}get hasPeerConnection(){return!!this.peerConn}initStats(e){this.stats=e,this.stats.start()}}function me(i,e){for(var t of i)t.enabled=e}function _i(){if(typeof window>"u"||typeof document>"u")return!1;try{var i,e,t,r=!!((i=(e=(t=window.RTCPeerConnection)!==null&&t!==void 0?t:window.RTCSessionDescription)!==null&&e!==void 0?e:window.RTCIceCandidate)!==null&&i!==void 0?i:navigator.mediaDevices);if(!r)return T.error("WebRTC is not supported in this browser / environment"),!1}catch(n){return T.error("Exception thrown when trying to access WebRTC",n),!1}return!0}function Rn(i,e,t){if(!_i())return null;var r=t?t.forceTURN:!1,n={client:i,roomId:e,invitee:t?.invitee,turnServers:i.getTurnServers(),forceTURN:i.forceTURN||r,opponentDeviceId:t?.opponentDeviceId,opponentSessionId:t?.opponentSessionId,groupCallId:t?.groupCallId},a=new ju(n);return i.reEmitter.reEmit(a,Object.values(Y)),a}var Dt=(function(i){return i.DontNotify="dont_notify",i.Notify="notify",i.Coalesce="coalesce",i})({}),xo=(function(i){return i.Highlight="highlight",i.Sound="sound",i})({}),ye=(function(i){return i.EventMatch="event_match",i.EventPropertyIs="event_property_is",i.EventPropertyContains="event_property_contains",i.ContainsDisplayName="contains_display_name",i.RoomMemberCount="room_member_count",i.SenderNotificationPermission="sender_notification_permission",i.CallStarted="call_started",i.CallStartedPrefix="org.matrix.msc3914.call_started",i})({}),Ie=(function(i){return i.Override="override",i.ContentSpecific="content",i.RoomSpecific="room",i.SenderSpecific="sender",i.Underride="underride",i})({}),Re=(function(i){return i.Master=".m.rule.master",i.IsUserMention=".m.rule.is_user_mention",i.IsRoomMention=".m.rule.is_room_mention",i.ContainsDisplayName=".m.rule.contains_display_name",i.ContainsUserName=".m.rule.contains_user_name",i.AtRoomNotification=".m.rule.roomnotif",i.DM=".m.rule.room_one_to_one",i.EncryptedDM=".m.rule.encrypted_room_one_to_one",i.Message=".m.rule.message",i.EncryptedMessage=".m.rule.encrypted",i.InviteToSelf=".m.rule.invite_for_me",i.MemberEvent=".m.rule.member_event",i.IncomingCall=".m.rule.call",i.SuppressNotices=".m.rule.suppress_notices",i.Tombstone=".m.rule.tombstone",i.PollStart=".m.rule.poll_start",i.PollStartUnstable=".org.matrix.msc3930.rule.poll_start",i.PollEnd=".m.rule.poll_end",i.PollEndUnstable=".org.matrix.msc3930.rule.poll_end",i.PollStartOneToOne=".m.rule.poll_start_one_to_one",i.PollStartOneToOneUnstable=".org.matrix.msc3930.rule.poll_start_one_to_one",i.PollEndOneToOne=".m.rule.poll_end_one_to_one",i.PollEndOneToOneUnstable=".org.matrix.msc3930.rule.poll_end_one_to_one",i})({});function hs(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(i);e&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(i,n).enumerable})),t.push.apply(t,r)}return t}function vs(i){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?hs(Object(t),!0).forEach(function(r){c(i,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(t)):hs(Object(t)).forEach(function(r){Object.defineProperty(i,r,Object.getOwnPropertyDescriptor(t,r))})}return i}var fs=[Ie.Override,Ie.ContentSpecific,Ie.RoomSpecific,Ie.SenderSpecific,Ie.Underride],Ku={".m.rule.is_room_mention":{rule_id:".m.rule.is_room_mention",default:!0,enabled:!0,conditions:[{kind:ye.EventPropertyIs,key:"content.m\\.mentions.room",value:!0},{kind:ye.SenderNotificationPermission,key:"room"}],actions:[Dt.Notify,{set_tweak:xo.Highlight}]},".m.rule.reaction":{rule_id:".m.rule.reaction",default:!0,enabled:!0,conditions:[{kind:ye.EventMatch,key:"type",pattern:"m.reaction"}],actions:[Dt.DontNotify]},".org.matrix.msc3786.rule.room.server_acl":{rule_id:".org.matrix.msc3786.rule.room.server_acl",default:!0,enabled:!0,conditions:[{kind:ye.EventMatch,key:"type",pattern:M.RoomServerAcl},{kind:ye.EventMatch,key:"state_key",pattern:""}],actions:[]}},Hi=Symbol("UserDefinedRules"),Vu=[Re.Master,Hi,Re.SuppressNotices,Re.InviteToSelf,Re.MemberEvent,Re.IsUserMention,Re.ContainsDisplayName,Re.IsRoomMention,Re.AtRoomNotification,Re.Tombstone,".m.rule.reaction",".m.rule.room.server_acl",".org.matrix.msc3786.rule.room.server_acl",".m.rule.suppress_edits"],qu={".org.matrix.msc3914.rule.room.call":{rule_id:".org.matrix.msc3914.rule.room.call",default:!0,enabled:!0,conditions:[{kind:ye.EventMatch,key:"type",pattern:"org.matrix.msc3401.call"},{kind:ye.CallStarted}],actions:[Dt.Notify,{set_tweak:xo.Sound,value:"default"}]}},Hu=[Hi,Re.IncomingCall,".org.matrix.msc3914.rule.room.call",Re.EncryptedDM,Re.DM,Re.Message,Re.EncryptedMessage];function ms(i,e,t,r,n){var a=t.filter(f=>f.default),s=t.filter(f=>!f.default);function o(f){f===Hi?d.push(...s):f in r?(i.warn("Adding default global ".concat(e," push rule ").concat(f)),d.push(r[f])):i.warn("Missing default global ".concat(e," push rule ").concat(f))}var l=0,d=[];for(var u of a){var h=n.indexOf(u.rule_id);if(h===-1){d.push(u);continue}for(;h>l;){var m=n[l];o(m),l+=1}d.push(u),l+=1}for(var E of n.slice(l))o(E);return d}class qe{constructor(e){this.client=e,c(this,"parsedKeys",new Map)}static actionListToActionsObject(e){var t={notify:!1,tweaks:{}};for(var r of e)r===Dt.Notify?t.notify=!0:typeof r=="object"&&(r.value===void 0&&(r.value=!0),t.tweaks[r.set_tweak]=r.value);return t}static rewriteDefaultRules(e,t){var r=JSON.parse(JSON.stringify(t));return r||(r={}),r.global||(r.global={}),r.global.override||(r.global.override=[]),r.global.underride||(r.global.underride=[]),r.global.override=ms(e,Ie.Override,r.global.override,Ku,Vu),r.global.underride=ms(e,Ie.Underride,r.global.underride,qu,Hu),r}static getPushRuleGlobRegex(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"i",[n,a]=t?["(?<=^|\\W)","(?=\\W|$)"]:["^","$"],s="".concat(t,"-").concat(r,"-").concat(e);return qe.cachedGlobToRegex[s]||(qe.cachedGlobToRegex[s]=new RegExp(n+"("+ro(e)+")"+a,r)),qe.cachedGlobToRegex[s]}updateCachedPushRuleKeys(e){e||(e={}),e.global||(e.global={}),e.global.override||(e.global.override=[]),e.global.room||(e.global.room=[]),e.global.sender||(e.global.sender=[]),e.global.underride||(e.global.underride=[]);var t=new Set(this.parsedKeys.keys());for(var r of[e.global.override,e.global.room,e.global.sender,e.global.underride])for(var n of r)if(n.conditions)for(var a of n.conditions)a.kind===ye.EventMatch&&(t.delete(a.key),this.parsedKeys.set(a.key,qe.partsForDottedKey(a.key)));t.forEach(s=>this.parsedKeys.delete(s))}matchingRuleFromKindSet(e,t){for(var r of fs){var n=t[r];if(n){for(var a of n)if(a.enabled){var s=this.templateRuleToRaw(r,a);if(s&&this.ruleMatchesEvent(s,e))return vs(vs({},a),{},{kind:r})}}}return null}templateRuleToRaw(e,t){var r={rule_id:t.rule_id,actions:t.actions,conditions:[]};switch(e){case Ie.Underride:case Ie.Override:r.conditions=t.conditions;break;case Ie.RoomSpecific:if(!t.rule_id)return null;r.conditions.push({kind:ye.EventMatch,key:"room_id",value:t.rule_id});break;case Ie.SenderSpecific:if(!t.rule_id)return null;r.conditions.push({kind:ye.EventMatch,key:"user_id",value:t.rule_id});break;case Ie.ContentSpecific:if(!t.pattern)return null;r.conditions.push({kind:ye.EventMatch,key:"content.body",pattern:t.pattern});break}return r}eventFulfillsCondition(e,t){switch(e.kind){case ye.EventMatch:return this.eventFulfillsEventMatchCondition(e,t);case ye.EventPropertyIs:return this.eventFulfillsEventPropertyIsCondition(e,t);case ye.EventPropertyContains:return this.eventFulfillsEventPropertyContains(e,t);case ye.ContainsDisplayName:return this.eventFulfillsDisplayNameCondition(e,t);case ye.RoomMemberCount:return this.eventFulfillsRoomMemberCountCondition(e,t);case ye.SenderNotificationPermission:return this.eventFulfillsSenderNotifPermCondition(e,t);case ye.CallStarted:case ye.CallStartedPrefix:return this.eventFulfillsCallStartedCondition(e,t)}return!1}eventFulfillsSenderNotifPermCondition(e,t){var r=e.key;if(!r)return!1;var n=this.client.getRoom(t.getRoomId());return n!=null&&n.currentState?n.currentState.mayTriggerNotifOfType(r,t.getSender()):!1}eventFulfillsRoomMemberCountCondition(e,t){if(!e.is)return!1;var r=this.client.getRoom(t.getRoomId());if(!r||!r.currentState||!r.currentState.members)return!1;var n=r.currentState.getJoinedMemberCount(),a=e.is.match(/^([=<>]*)(\d*)$/);if(!a)return!1;var s=a[1],o=parseInt(a[2]);if(isNaN(o))return!1;switch(s){case"":case"==":return n==o;case"<":return n<o;case">":return n>o;case"<=":return n<=o;case">=":return n>=o;default:return!1}}eventFulfillsDisplayNameCondition(e,t){var r,n=t.getContent();if(t.isEncrypted()&&t.getClearContent()&&(n=t.getClearContent()),!n||!n.body||typeof n.body!="string")return!1;var a=this.client.getRoom(t.getRoomId()),s=a==null||(r=a.currentState)===null||r===void 0?void 0:r.getMember(this.client.credentials.userId);if(!s)return!1;var o=s.name,l=new RegExp("(^|\\W)"+to(o)+"(\\W|$)","i");return n.body.search(l)>-1}eventFulfillsEventMatchCondition(e,t){if(!e.key)return!1;var r=this.valueForDottedKey(e.key,t);if(typeof r!="string")return!1;if(e.value)return e.value===r;if(typeof e.pattern!="string")return!1;var n=qe.getPushRuleGlobRegex(e.pattern,e.key==="content.body");return!!r.match(n)}eventFulfillsEventPropertyIsCondition(e,t){return!e.key||e.value===void 0?!1:e.value===this.valueForDottedKey(e.key,t)}eventFulfillsEventPropertyContains(e,t){if(!e.key||e.value===void 0)return!1;var r=this.valueForDottedKey(e.key,t);return Array.isArray(r)?r.includes(e.value):!1}eventFulfillsCallStartedCondition(e,t){return["m.ring","m.prompt"].includes(t.getContent()["m.intent"])&&!("m.terminated"in t.getContent())&&(t.getPrevContent()["m.terminated"]!==t.getContent()["m.terminated"]||Xt(t.getPrevContent(),{}))}static partsForDottedKey(e){var t=[],r="",n=!1;for(var a of e){if(n){a==="\\"||a==="."?r+=a:r+="\\"+a,n=!1;continue}a=="."?(t.push(r),r=""):a=="\\"?n=!0:r+=a}return n&&(r+="\\"),t.push(r),t}valueForDottedKey(e,t){var r=this.parsedKeys.get(e);r===void 0&&(r=qe.partsForDottedKey(e),this.parsedKeys.set(e,r));var n,a=r[0],s=0;for(a==="content"?(n=t.getContent(),++s):a==="type"?(n=t.getType(),++s):n=t.event;s<r.length;++s){if(no(n))return;var o=r[s];n=n[o]}return n}matchingRuleForEventWithRulesets(e,t){return!t||e.getSender()===this.client.getSafeUserId()?null:this.matchingRuleFromKindSet(e,t.global)}pushActionsForEventAndRulesets(e,t){var r=this.matchingRuleForEventWithRulesets(e,t);if(!r)return{};var n=qe.actionListToActionsObject(r.actions);return n.tweaks.highlight===void 0&&(n.tweaks.highlight=r.kind==Ie.ContentSpecific),{actions:n,rule:r}}ruleMatchesEvent(e,t){var r;return this.client.supportsIntentionalMentions()&&t.getContent()["m.mentions"]!==void 0&&(e.rule_id===Re.ContainsUserName||e.rule_id===Re.ContainsDisplayName||e.rule_id===Re.AtRoomNotification)?!1:!((r=e.conditions)!==null&&r!==void 0&&r.some(n=>!this.eventFulfillsCondition(n,t)))}actionsForEvent(e){var{actions:t}=this.pushActionsForEventAndRulesets(e,this.client.pushRules);return t||{}}actionsAndRuleForEvent(e){return this.pushActionsForEventAndRulesets(e,this.client.pushRules)}getPushRuleById(e){var t,r=this.getPushRuleAndKindById(e);return(t=r?.rule)!==null&&t!==void 0?t:null}getPushRuleAndKindById(e){for(var t of["global"]){var r;if(((r=this.client.pushRules)===null||r===void 0?void 0:r[t])!==void 0){for(var n of fs)if(this.client.pushRules[t][n]!==void 0){for(var a of this.client.pushRules[t][n])if(a.rule_id===e)return{rule:a,kind:n}}}}return null}}c(qe,"cachedGlobToRegex",{});var In=["v1.1","v1.2","v1.3","v1.4","v1.5","v1.6","v1.7","v1.8","v1.9"];In[0];In[In.length-1];var Ne=(function(i){return i.SUCCESS="SUCCESS",i.IGNORE="IGNORE",i.PROMPT="PROMPT",i.FAIL_PROMPT="FAIL_PROMPT",i.FAIL_ERROR="FAIL_ERROR",i})({}),$e=(function(i){return i.Invalid="Invalid homeserver discovery response",i.GenericFailure="Failed to get autodiscovery configuration from server",i.InvalidHsBaseUrl="Invalid base_url for m.homeserver",i.InvalidHomeserver="Homeserver URL does not appear to be a valid Matrix homeserver",i.InvalidIsBaseUrl="Invalid base_url for m.identity_server",i.InvalidIdentityServer="Identity server URL does not appear to be a valid identity server",i.InvalidIs="Invalid identity server discovery response",i.MissingWellknown="No .well-known JSON file found",i.InvalidJson="Invalid JSON",i.UnsupportedHomeserverSpecVersion="The homeserver does not meet the version requirements",i})({});class H{static fromDiscoveryConfig(e){var t=this;return R(function*(){var r,n={"m.homeserver":{state:H.FAIL_ERROR,error:H.ERROR_INVALID,base_url:null},"m.identity_server":{state:H.PROMPT,error:null,base_url:null}};if(!(e!=null&&e["m.homeserver"]))return T.error("No m.homeserver key in config"),n["m.homeserver"].state=H.FAIL_PROMPT,n["m.homeserver"].error=H.ERROR_INVALID,Promise.resolve(n);if(!e["m.homeserver"].base_url)return T.error("No m.homeserver base_url in config"),n["m.homeserver"].state=H.FAIL_PROMPT,n["m.homeserver"].error=H.ERROR_INVALID_HS_BASE_URL,Promise.resolve(n);var a=t.sanitizeWellKnownUrl(e["m.homeserver"].base_url);if(!a)return T.error("Invalid base_url for m.homeserver"),n["m.homeserver"].error=H.ERROR_INVALID_HS_BASE_URL,Promise.resolve(n);var s=yield t.fetchWellKnownObject("".concat(a,"/_matrix/client/versions"));if(!s||!Array.isArray((r=s.raw)===null||r===void 0?void 0:r.versions))return T.error("Invalid /versions response"),n["m.homeserver"].error=H.ERROR_INVALID_HOMESERVER,n["m.homeserver"].base_url=a,Promise.resolve(n);var o=new Set(s.raw.versions),l=!1;for(var d of In)if(o.has(d)){l=!0;break}if(!l)return T.error("Homeserver does not meet version requirements"),n["m.homeserver"].error=H.ERROR_UNSUPPORTED_HOMESERVER_SPEC_VERSION,n["m.homeserver"].base_url=a,Promise.resolve(n);n["m.homeserver"]={state:H.SUCCESS,error:null,base_url:a};var u="";if(e["m.identity_server"]){var h={"m.homeserver":n["m.homeserver"],"m.identity_server":{state:H.FAIL_PROMPT,error:H.ERROR_INVALID_IS,base_url:null}};if(u=t.sanitizeWellKnownUrl(e["m.identity_server"].base_url),!u)return T.error("Invalid base_url for m.identity_server"),h["m.identity_server"].error=H.ERROR_INVALID_IS_BASE_URL,Promise.resolve(h);var m=yield t.fetchWellKnownObject("".concat(u,"/_matrix/identity/v2"));if(!(m!=null&&m.raw)||m.action!==Ne.SUCCESS)return T.error("Invalid /v2 response"),h["m.identity_server"].error=H.ERROR_INVALID_IDENTITY_SERVER,h["m.identity_server"].base_url=u,Promise.resolve(h)}return u&&u.toString().length>0&&(n["m.identity_server"]={state:H.SUCCESS,error:null,base_url:u}),Object.keys(e).forEach(E=>{if(E==="m.homeserver"||E==="m.identity_server"){var f=["error","state","base_url"];for(var p of Object.keys(e[E]))f.includes(p)||(n[E][p]=e[E][p])}else n[E]=e[E]}),Promise.resolve(n)})()}static findClientConfig(e){var t=this;return R(function*(){if(!e||typeof e!="string"||e.length===0)throw new Error("'domain' must be a string of non-zero length");var r={"m.homeserver":{state:H.FAIL_ERROR,error:H.ERROR_INVALID,base_url:null},"m.identity_server":{state:H.PROMPT,error:null,base_url:null}},n=e.includes("://")?e:"https://".concat(e),a=yield t.fetchWellKnownObject("".concat(n,"/.well-known/matrix/client"));return!a||a.action!==Ne.SUCCESS?(T.error("No response or error when parsing .well-known"),a.reason&&T.error(a.reason),a.action===Ne.IGNORE?r["m.homeserver"]={state:H.PROMPT,error:null,base_url:null}:(r["m.homeserver"].state=H.FAIL_PROMPT,r["m.homeserver"].error=H.ERROR_INVALID),Promise.resolve(r)):H.fromDiscoveryConfig(a.raw)})()}static getRawClientConfig(e){var t=this;return R(function*(){var r;if(!e||typeof e!="string"||e.length===0)throw new Error("'domain' must be a string of non-zero length");var n=yield t.fetchWellKnownObject("https://".concat(e,"/.well-known/matrix/client"));return n?(r=n.raw)!==null&&r!==void 0?r:{}:{}})()}static sanitizeWellKnownUrl(e){if(!e)return!1;try{var t,r;try{r=new URL(e)}catch(o){T.error("Could not parse url",o)}if(!((t=r)!==null&&t!==void 0&&t.hostname)||r.protocol!=="http:"&&r.protocol!=="https:")return!1;var n=r.port?":".concat(r.port):"",a=r.pathname?r.pathname:"",s="".concat(r.protocol,"//").concat(r.hostname).concat(n).concat(a);return s.endsWith("/")&&(s=s.substring(0,s.length-1)),s}catch(o){return T.error(o),!1}}static fetch(e,t){return this.fetchFn?this.fetchFn(e,t):globalThis.fetch(e,t)}static setFetchFn(e){H.fetchFn=e}static fetchWellKnownObject(e){return R(function*(){var t;try{if(t=yield H.fetch(e,{method:O.Get,signal:Fi(5e3)}),t.status===404)return{raw:{},action:Ne.IGNORE,reason:H.ERROR_MISSING_WELLKNOWN};if(t.status!==200)return{raw:{},action:Ne.FAIL_PROMPT,reason:"General failure"}}catch(s){var r=s,n="";return typeof r=="object"&&(n=r?.message),{error:r,raw:{},action:Ne.FAIL_PROMPT,reason:n||"General failure"}}try{return{raw:yield t.json(),action:Ne.SUCCESS}}catch(s){var a=s;return{error:a,raw:{},action:Ne.FAIL_PROMPT,reason:a?.name==="SyntaxError"?H.ERROR_INVALID_JSON:H.ERROR_INVALID}}})()}}c(H,"ERROR_INVALID",$e.Invalid);c(H,"ERROR_GENERIC_FAILURE",$e.GenericFailure);c(H,"ERROR_INVALID_HS_BASE_URL",$e.InvalidHsBaseUrl);c(H,"ERROR_INVALID_HOMESERVER",$e.InvalidHomeserver);c(H,"ERROR_INVALID_IS_BASE_URL",$e.InvalidIsBaseUrl);c(H,"ERROR_INVALID_IDENTITY_SERVER",$e.InvalidIdentityServer);c(H,"ERROR_INVALID_IS",$e.InvalidIs);c(H,"ERROR_MISSING_WELLKNOWN",$e.MissingWellknown);c(H,"ERROR_INVALID_JSON",$e.InvalidJson);c(H,"ERROR_UNSUPPORTED_HOMESERVER_SPEC_VERSION",$e.UnsupportedHomeserverSpecVersion);c(H,"ALL_ERRORS",Object.keys($e));c(H,"FAIL_ERROR",Ne.FAIL_ERROR);c(H,"FAIL_PROMPT",Ne.FAIL_PROMPT);c(H,"PROMPT",Ne.PROMPT);c(H,"SUCCESS",Ne.SUCCESS);c(H,"fetchFn",void 0);var ps=(function(i){return i.IS="SERVICE_TYPE_IS",i.IM="SERVICE_TYPE_IM",i})({});class Gu{constructor(e){this.ourEvent=e,c(this,"timeline",void 0),c(this,"ourEventIndex",0),c(this,"paginateTokens",{[z.Backward]:null,[z.Forward]:null}),this.timeline=[e]}getEvent(){return this.timeline[this.ourEventIndex]}getTimeline(){return this.timeline}getOurEventIndex(){return this.ourEventIndex}getPaginateToken(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;return this.paginateTokens[e?z.Backward:z.Forward]}setPaginateToken(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;this.paginateTokens[t?z.Backward:z.Forward]=e??null}addEvents(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;t?(this.timeline=e.concat(this.timeline),this.ourEventIndex+=e.length):this.timeline=this.timeline.concat(e)}}class Gi{static fromJson(e,t){var r=e.context||{},n=(r.events_before||[]).map(t),a=(r.events_after||[]).map(t),s=new Gu(t(e.result)),o=s.ourEvent.threadRootId;return n=n.filter(l=>l.threadRootId===o),a=a.filter(l=>l.threadRootId===o),s.setPaginateToken(r.start,!0),s.addEvents(n,!0),s.addEvents(a,!1),s.setPaginateToken(r.end,!1),new Gi(e.rank,s)}constructor(e,t){this.rank=e,this.context=t}}function gs(i){return"parent_delay_id"in i&&typeof i.parent_delay_id!="string"?!1:"delay"in i&&typeof i.delay!="number"?!0:"delay"in i||"parent_delay_id"in i}var Wn=(function(i){return i.Cancel="cancel",i.Restart="restart",i.Send="send",i})({});function ys(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(i);e&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(i,n).enumerable})),t.push.apply(t,r)}return t}function Es(i){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?ys(Object(t),!0).forEach(function(r){c(i,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(t)):ys(Object(t)).forEach(function(r){Object.defineProperty(i,r,Object.getOwnPropertyDescriptor(t,r))})}return i}function $u(i,e){var t=!!e.preventReEmit,r=e.decrypt!==!1;function n(a){var s=i.getRoom(a.room_id),o;s&&a.state_key===void 0&&(o=s.findEventById(a.event_id)),!o||o.status?o=new Ge(a):(o.setUnsigned(Es(Es({},o.getUnsigned()),a.unsigned)),t=!0);var l=o.getServerAggregatedRelation(se.Replace);if(l!=null&&l.content){var d=n(l);o.makeReplaced(d)}var u=s?.findThreadForEvent(o);return u&&o.setThread(u),o.isEncrypted()&&(t||i.reEmitter.reEmit(o,[ee.Decrypted]),r&&i.decryptEventIfNeeded(o)),t||(i.reEmitter.reEmit(o,[ee.Replaced,ee.VisibilityChange]),s?.reEmitter.reEmit(o,[ee.BeforeRedaction])),o}return n}function Ss(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(i);e&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(i,n).enumerable})),t.push.apply(t,r)}return t}function lt(i){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?Ss(Object(t),!0).forEach(function(r){c(i,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(t)):Ss(Object(t)).forEach(function(r){Object.defineProperty(i,r,Object.getOwnPropertyDescriptor(t,r))})}return i}class bs{constructor(e,t,r){this.client=e,this.indexEvent=t,this.directory=r}get id(){var e=this.indexEvent.getStateKey();if(!e)throw new Error("State key not found for branch");return e}get isActive(){return this.indexEvent.getContent().active===!0}get version(){var e;return(e=this.indexEvent.getContent().version)!==null&&e!==void 0?e:1}get roomId(){return this.indexEvent.getRoomId()}delete(){var e=this;return R(function*(){yield e.client.sendStateEvent(e.roomId,vt.name,{},e.id),yield e.client.redactEvent(e.roomId,e.id);var t=(yield e.getVersionHistory())[1];t&&(yield t.delete())})()}getName(){return this.indexEvent.getContent().name||"Unnamed File"}setName(e){var t=this;return R(function*(){yield t.client.sendStateEvent(t.roomId,vt.name,lt(lt({},t.indexEvent.getContent()),{},{name:e}),t.id)})()}isLocked(){return this.indexEvent.getContent().locked||!1}setLocked(e){var t=this;return R(function*(){yield t.client.sendStateEvent(t.roomId,vt.name,lt(lt({},t.indexEvent.getContent()),{},{locked:e}),t.id)})()}getFileInfo(){var e=this;return R(function*(){var t=yield e.getFileEvent(),r=t.getOriginalContent().file,n=e.client.mxcUrlToHttp(r.url);if(!n)throw new Error("No HTTP URL available for ".concat(r.url));return{info:r,httpUrl:n}})()}getFileEvent(){var e=this;return R(function*(){var t=e.client.getRoom(e.roomId);if(!t)throw new Error("Unknown room");for(var r=t.getUnfilteredTimelineSet().findEventById(e.id);!r&&t.getLiveTimeline().getState(N.BACKWARDS).paginationToken;)yield e.client.scrollback(t,100),r=t.getUnfilteredTimelineSet().findEventById(e.id);if(!r)throw new Error("Failed to find event");return yield e.client.decryptEventIfNeeded(r),r})()}createNewVersion(e,t,r,n){var a=this;return R(function*(){var s=yield a.directory.createFile(e,t,r,lt(lt({},n??{}),{},{"m.new_content":!0,"m.relates_to":{rel_type:se.Replace,event_id:a.id}}));return yield a.client.sendStateEvent(a.roomId,vt.name,{active:!0,name:e,version:a.version+1},s.event_id),yield a.client.sendStateEvent(a.roomId,vt.name,lt(lt({},a.indexEvent.getContent()),{},{active:!1}),a.id),s})()}getVersionHistory(){var e=this;return R(function*(){var t=[];t.push(e);var r=e.client.getRoom(e.roomId);if(!r)throw new Error("Invalid or unknown room");var n=[...r.getLiveTimeline().getEvents()].reverse(),a,s=yield e.getFileEvent();do if(a=n.find(l=>l.replacingEventId()===s.getId()),a){var o=e.directory.getFile(a.getId());if(o)t.push(o),s=a;else break}while(a);return t})()}}function _s(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(i);e&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(i,n).enumerable})),t.push.apply(t,r)}return t}function Rt(i){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?_s(Object(t),!0).forEach(function(r){c(i,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(t)):_s(Object(t)).forEach(function(r){Object.defineProperty(i,r,Object.getOwnPropertyDescriptor(t,r))})}return i}var Wu={invite:100,kick:100,ban:100,redact:50,state_default:50,events_default:50,users_default:0,events:{[M.RoomPowerLevels]:100,[M.RoomHistoryVisibility]:100,[M.RoomTombstone]:100,[M.RoomEncryption]:100,[M.RoomName]:50,[M.RoomMessage]:50,[M.RoomMessageEncrypted]:50,[M.Sticker]:50},users:{}},Vt=(function(i){return i.Viewer="viewer",i.Editor="editor",i.Owner="owner",i})({});class Rs{constructor(e,t){if(this.client=e,this.roomId=t,c(this,"room",void 0),this.room=this.client.getRoom(this.roomId),!this.room)throw new Error("Unknown room")}get id(){return this.roomId}get isTopLevel(){var e=this.room.currentState.getStateEvents(M.SpaceParent);return e!=null&&e.length?e.every(t=>{var r;return!((r=t.getContent())!==null&&r!==void 0&&r.via)}):!0}setName(e){var t=this;return R(function*(){yield t.client.sendStateEvent(t.roomId,M.RoomName,{name:e},"")})()}invite(e){var t=arguments,r=this;return R(function*(){var n=t.length>1&&t[1]!==void 0?t[1]:!0,a=[r.retryInvite(e)];n&&a.push(...r.getDirectories().map(s=>s.invite(e,n))),yield Promise.all(a)})()}retryInvite(e){var t=this;return R(function*(){yield _l(()=>t.client.invite(t.roomId,e),r=>!(r instanceof ue&&r.errcode==="M_FORBIDDEN"))})()}setPermissions(e,t){var r=this;return R(function*(){var n,a=r.room.currentState.getStateEvents(M.RoomPowerLevels,"");if(Array.isArray(a))throw new Error("Unexpected return type for power levels");var s=a?.getContent()||{},o=s.users_default||0,l=s.events_default||50,d=((n=s.events)===null||n===void 0?void 0:n[M.RoomPowerLevels])||100,u=s.users||{};switch(t){case Vt.Viewer:u[e]=o;break;case Vt.Editor:u[e]=l;break;case Vt.Owner:u[e]=d;break;default:throw new Error("Invalid role: "+t)}s.users=u,yield r.client.sendStateEvent(r.roomId,M.RoomPowerLevels,s,"")})()}getPermissions(e){var t,r,n=this.room.currentState.getStateEvents(M.RoomPowerLevels,"");if(Array.isArray(n))throw new Error("Unexpected return type for power levels");var a=n?.getContent()||{},s=a.users_default||0,o=a.events_default||50,l=((t=a.events)===null||t===void 0?void 0:t[M.RoomPowerLevels])||100,d=((r=a.users)===null||r===void 0?void 0:r[e])||s;return d>=l?Vt.Owner:d>=o?Vt.Editor:Vt.Viewer}createDirectory(e){var t=this;return R(function*(){var r=yield t.client.unstableCreateFileTree(e);return yield t.client.sendStateEvent(t.roomId,M.SpaceChild,{via:[t.client.getDomain()]},r.roomId),yield t.client.sendStateEvent(r.roomId,M.SpaceParent,{via:[t.client.getDomain()]},t.roomId),r})()}getDirectories(){var e=[],t=this.room.currentState.getStateEvents(M.SpaceChild);for(var r of t)try{var n=r.getStateKey();if(n){var a=this.client.unstableGetFileTreeSpace(n);a&&e.push(a)}}catch(s){T.warn("Unable to create tree space instance for listing. Are we joined?",s)}return e}getDirectory(e){return this.getDirectories().find(t=>t.roomId===e)}delete(){var e=this;return R(function*(){var t=e.getDirectories();for(var r of t)yield r.delete();var n=[J.Invite,J.Knock,J.Join],a=e.room.currentState.getStateEvents(M.RoomMember);for(var s of a){var o=s.getStateKey()!==e.client.getUserId();if(o&&n.includes(s.getContent().membership)){var l=s.getStateKey();if(!l)throw new Error("State key not found for branch");yield e.client.kick(e.roomId,l,"Room deleted")}}yield e.client.leave(e.roomId)})()}getOrderedChildren(e){var t=e.map(r=>({roomId:r.getStateKey(),order:r.getContent().order})).filter(r=>r.roomId);return t.sort((r,n)=>{if(r.order&&!n.order)return-1;if(!r.order&&n.order)return 1;if(!r.order&&!n.order){var a,s,o,l,d=this.client.getRoom(r.roomId),u=this.client.getRoom(n.roomId);if(!d||!u)return cn(r.roomId,n.roomId);var h=(a=(s=d.currentState.getStateEvents(M.RoomCreate,""))===null||s===void 0?void 0:s.getTs())!==null&&a!==void 0?a:0,m=(o=(l=u.currentState.getStateEvents(M.RoomCreate,""))===null||l===void 0?void 0:l.getTs())!==null&&o!==void 0?o:0;return h===m?cn(r.roomId,n.roomId):h-m}else return cn(r.order,n.order)}),t}getParentRoom(){var e=this.room.currentState.getStateEvents(M.SpaceParent),t=e[0];if(!t)throw new Error("Expected to have a parent in a non-top level space");var r=t.getStateKey();if(!r)throw new Error("No state key found for parent");var n=this.client.getRoom(r);if(!n)throw new Error("Unable to locate room for parent");return n}getOrder(){if(this.isTopLevel)return-1;var e=this.getParentRoom(),t=e.currentState.getStateEvents(M.SpaceChild),r=this.getOrderedChildren(t);return r.findIndex(n=>n.roomId===this.roomId)}setOrder(e){var t=this;return R(function*(){var r;if(t.isTopLevel)throw new Error("Cannot set order of top level spaces currently");var n=t.getParentRoom(),a=n.currentState.getStateEvents(M.SpaceChild),s=t.getOrderedChildren(a);e=Math.max(Math.min(e,s.length-1),0);var o=t.getOrder(),l=o<e;l&&e===s.length-1?e--:!l&&e===0&&e++;var d=s[l?e:e-1],u=s[l?e+1:e],h=yt[0],m=!1;if(!d)u!=null&&u.order&&(h=ta(u.order));else if(e===s.length-1)u!=null&&u.order&&(h=or(u.order));else{var E=d?.order,f=u?.order;E&&f?E===f?h=or(E):h=Rl(E,f):E?h=or(E):f?h=ta(f):m=!0}if(m){for(var p,I=0;I<=e;I++){var S=s[I];if(I===0&&(p=S.order),S.order)p=S.order;else{var g;p=p?or(p):yt[0];var _=n.currentState.getStateEvents(M.SpaceChild,S.roomId),y=(g=_?.getContent())!==null&&g!==void 0?g:{via:[t.client.getDomain()]};yield t.client.sendStateEvent(n.roomId,M.SpaceChild,Rt(Rt({},y),{},{order:p}),S.roomId)}}p&&(h=or(p))}var b=n.currentState.getStateEvents(M.SpaceChild,t.roomId),v=(r=b?.getContent())!==null&&r!==void 0?r:{via:[t.client.getDomain()]};yield t.client.sendStateEvent(n.roomId,M.SpaceChild,Rt(Rt({},v),{},{order:h}),t.roomId)})()}createFile(e,t,r,n){var a=this;return R(function*(){var{content_uri:s}=yield a.client.uploadContent(t,{includeFilename:!1});r.url=s;var o={msgtype:Et.File,body:e,url:s,file:r};n=n??{},n["m.new_content"]&&(n["m.new_content"]=o);var l=yield a.client.sendMessage(a.roomId,Rt(Rt(Rt({},n),o),{},{[Ol.name]:{}}));return yield a.client.sendStateEvent(a.roomId,vt.name,{active:!0,name:e},l.event_id),l})()}getFile(e){var t=this.room.currentState.getStateEvents(vt.name,e);return t?new bs(this.client,t,this):null}listFiles(){return this.listAllFiles().filter(e=>e.isActive)}listAllFiles(){var e,t=(e=this.room.currentState.getStateEvents(vt.name))!==null&&e!==void 0?e:[];return t.map(r=>new bs(this.client,r,this))}}var Ju=(function(i){return i.Recent="recent",i.Rank="rank",i})({}),qt=(function(i){return i.LocalStreamsChanged="local_streams_changed",i})({});class zu extends fe{constructor(e){super(),this.client=e,c(this,"audioInput",void 0),c(this,"audioSettings",void 0),c(this,"videoInput",void 0),c(this,"localUserMediaStream",void 0),c(this,"userMediaStreams",[]),c(this,"screensharingStreams",[]),c(this,"getMediaStreamPromise",void 0)}restoreMediaSettings(e,t){this.audioInput=e,this.videoInput=t}setAudioInput(e){var t=this;return R(function*(){T.info("MediaHandler setAudioInput() running (deviceId=".concat(e,")")),t.audioInput!==e&&(t.audioInput=e,yield t.updateLocalUsermediaStreams())})()}setAudioSettings(e){var t=this;return R(function*(){T.info("MediaHandler setAudioSettings() running (opts=".concat(JSON.stringify(e),")")),t.audioSettings=Object.assign({},e),yield t.updateLocalUsermediaStreams()})()}setVideoInput(e){var t=this;return R(function*(){T.info("MediaHandler setVideoInput() running (deviceId=".concat(e,")")),t.videoInput!==e&&(t.videoInput=e,yield t.updateLocalUsermediaStreams())})()}setMediaInputs(e,t){var r=this;return R(function*(){T.log("MediaHandler setMediaInputs() running (audioInput: ".concat(e," videoInput: ").concat(t,")")),r.audioInput=e,r.videoInput=t,yield r.updateLocalUsermediaStreams()})()}updateLocalUsermediaStreams(){var e=this;return R(function*(){if(e.userMediaStreams.length!==0){var t=new Map;for(var r of e.client.callEventHandler.calls.values())t.set(r.callId,{audio:r.hasLocalUserMediaAudioTrack,video:r.hasLocalUserMediaVideoTrack});for(var n of e.userMediaStreams){T.log("MediaHandler updateLocalUsermediaStreams() stopping all tracks (streamId=".concat(n.id,")"));for(var a of n.getTracks())a.stop()}e.userMediaStreams=[],e.localUserMediaStream=void 0;for(var s of e.client.callEventHandler.calls.values())if(!(s.callHasEnded()||!t.has(s.callId))){var{audio:o,video:l}=t.get(s.callId);T.log("MediaHandler updateLocalUsermediaStreams() calling getUserMediaStream() (callId=".concat(s.callId,")"));var d=yield e.getUserMediaStream(o,l);s.callHasEnded()||(yield s.updateLocalUsermediaStream(d))}for(var u of e.client.groupCallEventHandler.groupCalls.values())if(u.localCallFeed){T.log("MediaHandler updateLocalUsermediaStreams() calling getUserMediaStream() (groupCallId=".concat(u.groupCallId,")"));var h=yield e.getUserMediaStream(!0,u.type===qi.Video);u.state!==ve.Ended&&(yield u.updateLocalUsermediaStream(h))}e.emit(qt.LocalStreamsChanged)}})()}hasAudioDevice(){return R(function*(){try{var e=yield navigator.mediaDevices.enumerateDevices();return e.filter(t=>t.kind==="audioinput").length>0}catch(t){return T.log("MediaHandler hasAudioDevice() calling navigator.mediaDevices.enumerateDevices with error",t),!1}})()}hasVideoDevice(){return R(function*(){try{var e=yield navigator.mediaDevices.enumerateDevices();return e.filter(t=>t.kind==="videoinput").length>0}catch(t){return T.log("MediaHandler hasVideoDevice() calling navigator.mediaDevices.enumerateDevices with error",t),!1}})()}getUserMediaStream(e,t){var r=arguments,n=this;return R(function*(){var a=r.length>2&&r[2]!==void 0?r[2]:!0;return n.getMediaStreamPromise?n.getMediaStreamPromise=n.getMediaStreamPromise.then(()=>n.getUserMediaStreamInternal(e,t,a)):n.getMediaStreamPromise=n.getUserMediaStreamInternal(e,t,a),n.getMediaStreamPromise})()}getUserMediaStreamInternal(e,t,r){var n=this;return R(function*(){var a=e&&(yield n.hasAudioDevice()),s=t&&(yield n.hasVideoDevice()),o,l=!0;if(n.localUserMediaStream){var d,u;a!==n.localUserMediaStream.getAudioTracks().length>0&&(l=!1),s!==n.localUserMediaStream.getVideoTracks().length>0&&(l=!1),a&&((d=n.localUserMediaStream.getAudioTracks()[0])===null||d===void 0||(d=d.getSettings())===null||d===void 0?void 0:d.deviceId)!==n.audioInput&&(l=!1),s&&((u=n.localUserMediaStream.getVideoTracks()[0])===null||u===void 0||(u=u.getSettings())===null||u===void 0?void 0:u.deviceId)!==n.videoInput&&(l=!1)}else l=!1;if(l){var f;if(o=n.localUserMediaStream.clone(),T.log("MediaHandler getUserMediaStreamInternal() cloning (oldStreamId=".concat((f=n.localUserMediaStream)===null||f===void 0?void 0:f.id," newStreamId=").concat(o.id," shouldRequestAudio=").concat(a," shouldRequestVideo=").concat(s,")")),!a)for(var p of o.getAudioTracks())o.removeTrack(p);if(!s)for(var I of o.getVideoTracks())o.removeTrack(I)}else{var h;try{h=n.getUserMediaContraints(a,s,!0),o=yield navigator.mediaDevices.getUserMedia(h)}catch(S){T.warn("MediaHandler getUserMediaStreamInternal() error (e=".concat(S,"), retrying without exact deviceId")),h=n.getUserMediaContraints(a,s,!1),o=yield navigator.mediaDevices.getUserMedia(h)}T.log("MediaHandler getUserMediaStreamInternal() calling getUserMediaStream (streamId=".concat(o.id,", shouldRequestAudio=").concat(a,", shouldRequestVideo=").concat(s,", constraints=").concat(JSON.stringify(h),")"));for(var m of o.getTracks()){var E=m.getSettings();m.kind==="audio"?n.audioInput=E.deviceId:m.kind==="video"&&(n.videoInput=E.deviceId)}r&&(n.localUserMediaStream=o)}return r&&n.userMediaStreams.push(o),n.emit(qt.LocalStreamsChanged),o})()}stopUserMediaStream(e){T.log("MediaHandler stopUserMediaStream() stopping (streamId=".concat(e.id,")"));for(var t of e.getTracks())t.stop();var r=this.userMediaStreams.indexOf(e);if(r!==-1&&(T.debug("MediaHandler stopUserMediaStream() splicing usermedia stream out stream array (streamId=".concat(e.id,")"),e.id),this.userMediaStreams.splice(r,1)),this.emit(qt.LocalStreamsChanged),this.localUserMediaStream===e)this.localUserMediaStream=void 0;else for(var n of e.getTracks()){var a;if((a=this.localUserMediaStream)!==null&&a!==void 0&&a.getTrackById(n.id)){this.stopUserMediaStream(this.localUserMediaStream);break}}}getScreensharingStream(){var e=arguments,t=this;return R(function*(){var r=e.length>0&&e[0]!==void 0?e[0]:{},n=e.length>1&&e[1]!==void 0?e[1]:!0,a;if(t.screensharingStreams.length===0){var s=t.getScreenshareContraints(r);r.desktopCapturerSourceId?(T.debug("MediaHandler getScreensharingStream() calling getUserMedia() (opts=".concat(JSON.stringify(r),")")),a=yield navigator.mediaDevices.getUserMedia(s)):(T.debug("MediaHandler getScreensharingStream() calling getDisplayMedia() (opts=".concat(JSON.stringify(r),")")),a=yield navigator.mediaDevices.getDisplayMedia(s))}else{var o=t.screensharingStreams[t.screensharingStreams.length-1];T.log("MediaHandler getScreensharingStream() cloning (streamId=".concat(o.id,")")),a=o.clone()}return n&&t.screensharingStreams.push(a),t.emit(qt.LocalStreamsChanged),a})()}stopScreensharingStream(e){T.debug("MediaHandler stopScreensharingStream() stopping stream (streamId=".concat(e.id,")"));for(var t of e.getTracks())t.stop();var r=this.screensharingStreams.indexOf(e);r!==-1&&(T.debug("MediaHandler stopScreensharingStream() splicing stream out (streamId=".concat(e.id,")")),this.screensharingStreams.splice(r,1)),this.emit(qt.LocalStreamsChanged)}stopAllStreams(){for(var e of this.userMediaStreams){T.log("MediaHandler stopAllStreams() stopping (streamId=".concat(e.id,")"));for(var t of e.getTracks())t.stop()}for(var r of this.screensharingStreams)for(var n of r.getTracks())n.stop();this.userMediaStreams=[],this.screensharingStreams=[],this.localUserMediaStream=void 0,this.emit(qt.LocalStreamsChanged)}getUserMediaContraints(e,t,r){var n=!!navigator.webkitGetUserMedia,a=r?"exact":"ideal",s={};this.audioInput&&(s.deviceId={[a]:this.audioInput}),this.audioSettings&&(s.autoGainControl={ideal:this.audioSettings.autoGainControl},s.echoCancellation={ideal:this.audioSettings.echoCancellation},s.noiseSuppression={ideal:this.audioSettings.noiseSuppression});var o={width:n?{exact:640}:{ideal:640},height:n?{exact:360}:{ideal:360}};return this.videoInput&&(o.deviceId={[a]:this.videoInput}),{audio:e?s:!1,video:t?o:!1}}getScreenshareContraints(e){var{desktopCapturerSourceId:t,audio:r}=e;return t?{audio:r??!1,video:{mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:t}}}:{audio:r??!1,video:!0}}}var Is=(function(i){return i.RequestFinished="FINISHED",i.Complete="COMPLETE",i})({}),qr=(function(i){return i.PreProcess="ExtState.PreProcess",i.PostProcess="ExtState.PostProcess",i})({}),Ts=(function(i){return i.RoomData="SlidingSync.RoomData",i.Lifecycle="SlidingSync.Lifecycle",i})({}),Yu=3;class Xu{constructor(e){this.crypto=e}name(){return"e2ee"}when(){return qr.PreProcess}onRequest(e){var t=this;return R(function*(){return e&&(T.log("ExtensionE2EE: invalidating all device lists due to missing 'pos'"),yield t.crypto.markAllTrackedUsersAsDirty()),{enabled:!0}})()}onResponse(e){var t=this;return R(function*(){e.device_lists&&(yield t.crypto.processDeviceLists(e.device_lists)),yield t.crypto.processKeyCounts(e.device_one_time_keys_count,e.device_unused_fallback_key_types||e["org.matrix.msc2732.device_unused_fallback_key_types"]),t.crypto.onSyncCompleted({})})()}}class Qu{constructor(e,t){this.client=e,this.cryptoCallbacks=t,c(this,"nextBatch",null)}name(){return"to_device"}when(){return qr.PreProcess}onRequest(e){var t=this;return R(function*(){return{since:t.nextBatch!==null?t.nextBatch:void 0,limit:100,enabled:!0}})()}onResponse(e){var t=this;return R(function*(){var r=e.events||[],n;t.cryptoCallbacks?n=yield t.cryptoCallbacks.preprocessToDeviceMessages(r):n=r.map(a=>({message:a,encryptionInfo:null})),Po(n,t.client),t.nextBatch=e.next_batch})()}}class Zu{constructor(e){this.client=e}name(){return"account_data"}when(){return qr.PostProcess}onRequest(e){return R(function*(){return{enabled:!0}})()}onResponse(e){var t=this;return R(function*(){e.global&&e.global.length>0&&t.processGlobalAccountData(e.global);for(var r in e.rooms){var n=zt(t.client,r,e.rooms[r]),a=t.client.getRoom(r);if(!a){T.warn("got account data for room but room doesn't exist on client:",r);continue}a.addAccountData(n),n.forEach(s=>{t.client.emit(x.Event,s)})}})()}processGlobalAccountData(e){var t=zt(this.client,void 0,e),r=t.reduce((n,a)=>(n[a.getType()]=this.client.store.getAccountData(a.getType()),n),{});this.client.store.storeAccountDataEvents(t),t.forEach(n=>{if(n.getType()===M.PushRules){var a=n.getContent();this.client.setPushRules(a)}var s=r[n.getType()];return this.client.emit(x.AccountData,n,s),n})}}class ec{constructor(e){this.client=e}name(){return"typing"}when(){return qr.PostProcess}onRequest(e){return R(function*(){return{enabled:!0}})()}onResponse(e){var t=this;return R(function*(){if(e!=null&&e.rooms)for(var r in e.rooms)Fo(t.client,r,[e.rooms[r]])})()}}class tc{constructor(e){this.client=e}name(){return"receipts"}when(){return qr.PostProcess}onRequest(e){return R(function*(){return{enabled:!0}})()}onResponse(e){var t=this;return R(function*(){if(e!=null&&e.rooms)for(var r in e.rooms)Fo(t.client,r,[e.rooms[r]])})()}}class rc{constructor(e,t,r,n){this.slidingSync=e,this.client=t,c(this,"opts",void 0),c(this,"syncOpts",void 0),c(this,"syncState",null),c(this,"syncStateData",void 0),c(this,"lastPos",null),c(this,"failCount",0),c(this,"notifEvents",[]),this.opts=Mo(r),this.syncOpts=Oo(n),t.getNotifTimelineSet()&&t.reEmitter.reEmit(t.getNotifTimelineSet(),[U.Timeline,U.TimelineReset]),this.slidingSync.on(Ts.Lifecycle,this.onLifecycle.bind(this)),this.slidingSync.on(Ts.RoomData,this.onRoomData.bind(this));var a=[new Qu(this.client,this.syncOpts.cryptoCallbacks),new Zu(this.client),new ec(this.client),new tc(this.client)];this.syncOpts.cryptoCallbacks&&a.push(new Xu(this.syncOpts.cryptoCallbacks)),a.forEach(s=>{this.slidingSync.registerExtension(s)})}onRoomData(e,t){var r=this;return R(function*(){var n=r.client.store.getRoom(e);if(!n){if(!t.initial){r.syncOpts.logger.debug("initial flag not set but no stored room exists for room ",e,t);return}n=ko(r.client,e,r.opts)}yield r.processRoomData(r.client,n,t)})()}onLifecycle(e,t,r){switch(r&&this.syncOpts.logger.debug("onLifecycle",e,r),e){case Is.Complete:if(this.purgeNotifications(),!t)break;this.lastPos||this.updateSyncState(ae.Prepared,{oldSyncToken:void 0,nextSyncToken:t.pos,catchingUp:!1,fromCache:!1}),this.updateSyncState(ae.Syncing,{oldSyncToken:this.lastPos,nextSyncToken:t.pos,catchingUp:!1,fromCache:!1}),this.lastPos=t.pos;break;case Is.RequestFinished:if(r){if(this.failCount+=1,this.updateSyncState(this.failCount>Yu?ae.Error:ae.Reconnecting,{error:new ue(r)}),this.shouldAbortSync(new ue(r)))return}else this.failCount=0,this.syncOpts.logger.debug("SlidingSyncState.RequestFinished with ".concat(Object.keys(t?.rooms||[]).length," rooms"));break}}syncLeftRooms(){return R(function*(){return[]})()}peek(e){return R(function*(){return null})()}stopPeeking(){}setPresence(e){}getSyncState(){return this.syncState}getSyncStateData(){var e;return(e=this.syncStateData)!==null&&e!==void 0?e:null}createRoom(e){var{timelineSupport:t}=this.client,r=new ji(e,this.client,this.client.getUserId(),{lazyLoadMembers:this.opts.lazyLoadMembers,pendingEventOrdering:this.opts.pendingEventOrdering,timelineSupport:t});return this.client.reEmitter.reEmit(r,[U.Name,U.Redaction,U.RedactionCancelled,U.Receipt,U.Tags,U.LocalEchoUpdated,U.AccountData,U.MyMembership,U.Timeline,U.TimelineReset]),this.registerStateListeners(r),r}registerStateListeners(e){this.client.reEmitter.reEmit(e.currentState,[X.Events,X.Members,X.NewMember,X.Update]),e.currentState.on(X.NewMember,(t,r,n)=>{var a;n.user=(a=this.client.getUser(n.userId))!==null&&a!==void 0?a:void 0,this.client.reEmitter.reEmit(n,[Le.Name,Le.Typing,Le.PowerLevel,Le.Membership])})}shouldAbortSync(e){return e.errcode==="M_UNKNOWN_TOKEN"?(this.syncOpts.logger.warn("Token no longer valid - assuming logout"),this.stop(),this.updateSyncState(ae.Error,{error:e}),!0):!1}processRoomData(e,t,r){var n=this;return R(function*(){r=nc(e,t.roomId,r);var a=zt(n.client,t.roomId,r.required_state),s=zt(n.client,t.roomId,r.timeline,!1),o=[];if(r.limited||r.initial){var l=new Set;t.getLiveTimeline().getEvents().forEach(g=>{l.add(g.getId())});for(var d=[],u=[],h=!1,m=s.length-1;m>=0;m--){var E=s[m];if(l.has(E.getId())){h=!0;continue}h?d.push(E):u.unshift(E)}s=u,d.length>0&&t.addEventsToTimeline(d,!0,!1,t.getLiveTimeline(),r.prev_batch)}var f=t.hasEncryptionStateEvent();if(r.notification_count!=null&&t.setUnreadNotificationCount(Q.Total,r.notification_count),r.highlight_count!=null&&(!f||f&&t.getUnreadNotificationCount(Q.Highlight)<=0)&&t.setUnreadNotificationCount(Q.Highlight,r.highlight_count),r.bump_stamp&&t.setBumpStamp(r.bump_stamp),Number.isInteger(r.invited_count)&&t.currentState.setInvitedMemberCount(r.invited_count),Number.isInteger(r.joined_count)&&t.currentState.setJoinedMemberCount(r.joined_count),r.invite_state){var p=zt(n.client,t.roomId,r.invite_state);yield n.injectRoomEvents(t,p),r.initial&&(t.recalculate(),n.client.store.storeRoom(t),n.client.emit(x.Room,t)),p.forEach(g=>{n.client.emit(x.Event,g)});return}if(r.limited){var I;t.getLiveTimeline().setPaginationToken((I=r.prev_batch)!==null&&I!==void 0?I:null,N.BACKWARDS)}yield n.injectRoomEvents(t,a,s,r.num_live),t.addEphemeralEvents(o),t.updateMyMembership(J.Join),t.setMSC4186SummaryData(r.heroes,r.joined_count,r.invited_count),t.recalculate(),r.initial&&(e.store.storeRoom(t),e.emit(x.Room,t)),n.addNotifications(s);var S=(function(){var g=R(function*(_){e.emit(x.Event,_),_.isState()&&_.getType()==M.RoomEncryption&&n.syncOpts.cryptoCallbacks&&(yield n.syncOpts.cryptoCallbacks.onCryptoEvent(t,_))});return function(y){return g.apply(this,arguments)}})();yield Zi(a,S),yield Zi(s,S),o.forEach(function(g){e.emit(x.Event,g)}),t.decryptCriticalEvents()})()}injectRoomEvents(e,t){var r=arguments,n=this;return R(function*(){var a=r.length>2&&r[2]!==void 0?r[2]:[],s=r.length>3&&r[3]!==void 0?r[3]:0,o=e.getLiveTimeline(),l=o.getEvents().length==0;if(l){for(var d of t)n.client.getPushActionsForEvent(d);o.initialiseState(t)}l||(e.oldState.setStateEvents(t),e.currentState.setStateEvents(t));var u=[];s>0&&(u=a.slice(-1*s),a=a.slice(0,-1*u.length)),yield e.addLiveEvents(a,{fromCache:!0,addToState:!1}),u.length>0&&(yield e.addLiveEvents(u,{fromCache:!1,addToState:!1})),e.recalculate(),n.resolveInvites(e)})()}resolveInvites(e){if(!(!e||!this.opts.resolveInvitesToProfiles)){var t=this.client;e.getMembersWithMembership(J.Invite).forEach(function(r){if(!r.requestedProfileInfo){r.requestedProfileInfo=!0;var n=t.getUser(r.userId),a;n?a=Promise.resolve({avatar_url:n.avatarUrl,displayname:n.displayName}):a=t.getProfileInfo(r.userId),a.then(function(s){var o=r.events.member;o.getContent().membership===J.Invite&&(o.getContent().avatar_url=s.avatar_url,o.getContent().displayname=s.displayname,r.setMembershipEvent(o,e.currentState))},function(s){})}})}}retryImmediately(){return!0}sync(){var e=this;return R(function*(){for(e.syncOpts.logger.debug("Sliding sync init loop");!e.client.isGuest();)try{e.syncOpts.logger.debug("Getting push rules...");var t=yield e.client.getPushRules();e.syncOpts.logger.debug("Got push rules"),e.client.pushRules=t;break}catch(r){if(e.syncOpts.logger.error("Getting push rules failed",r),e.shouldAbortSync(r))return}yield e.slidingSync.start()})()}stop(){this.syncOpts.logger.debug("SyncApi.stop"),this.slidingSync.stop()}updateSyncState(e,t){var r=this.syncState;this.syncState=e,this.syncStateData=t,this.client.emit(x.Sync,this.syncState,r,t)}addNotifications(e){if(this.client.getNotifTimelineSet())for(var t of e){var r=this.client.getPushActionsForEvent(t);r&&r.notify&&r.tweaks&&r.tweaks.highlight&&this.notifEvents.push(t)}}purgeNotifications(){this.notifEvents.sort(function(e,t){return e.getTs()-t.getTs()}),this.notifEvents.forEach(e=>{var t;(t=this.client.getNotifTimelineSet())===null||t===void 0||t.addLiveEvent(e,{addToState:!1})}),this.notifEvents=[]}}function nc(i,e,t){if(!t.name)return t;for(var r of t.required_state)if(r.type===M.RoomName&&r.state_key==="")return r.content={name:t.name},t;return t.required_state.push({event_id:"$fake-sliding-sync-name-event-"+e,state_key:"",type:M.RoomName,content:{name:t.name},sender:i.getUserId(),origin_server_ts:new Date().getTime()}),t}function zt(i,e,t){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,n=i.getEventMapper({decrypt:r});return t.map(function(a){return a.room_id=e,n(a)})}function Fo(i,e,t){var r=zt(i,e,t),n=i.getRoom(e);if(!n){T.warn("got ephemeral events for room but room doesn't exist on client:",e);return}n.addEphemeralEvents(r),r.forEach(a=>{i.emit(x.Event,a)})}class Tn{static RETRY_BACKOFF_RATELIMIT(e,t,r){return kd(r,t,!1)}static QUEUE_MESSAGES(e){return e.getType()===M.RoomMessage||e.hasAssociation()?"message":null}constructor(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Tn.RETRY_BACKOFF_RATELIMIT,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Tn.QUEUE_MESSAGES;this.retryAlgorithm=e,this.queueAlgorithm=t,c(this,"queues",{}),c(this,"activeQueues",[]),c(this,"procFn",null),c(this,"processQueue",r=>{var n=this.peekNextEvent(r);if(!n){this.disableQueue(r);return}this.queues[r].length,Promise.resolve().then(()=>this.procFn(n.event)).then(a=>{this.removeNextEvent(r),n.event.getId(),n.resolvers.resolve(a),this.processQueue(r)},a=>{n.attempts+=1;var s=this.retryAlgorithm(n.event,n.attempts,a);n.attempts,n.event.getId(),s===-1?(T.info("Queue '%s' giving up on event %s",r,n.event.getId()),this.clearQueue(r,a)):setTimeout(this.processQueue,s,r)})})}getQueueForEvent(e){var t=this.queueAlgorithm(e);return!t||!this.queues[t]?null:this.queues[t].map(function(r){return r.event})}removeEventFromQueue(e){var t=this.queueAlgorithm(e);if(!t||!this.queues[t])return!1;var r=!1;return pn(this.queues[t],n=>n.event.getId()===e.getId()?(r=!0,!0):!1),r}setProcessFunction(e){this.procFn=e,this.startProcessingQueues()}queueEvent(e){var t=this.queueAlgorithm(e);if(!t)return null;this.queues[t]||(this.queues[t]=[]);var r=Promise.withResolvers();return this.queues[t].push({event:e,resolvers:r,attempts:0}),e.getId(),this.startProcessingQueues(),r.promise}startProcessingQueues(){this.procFn&&Object.keys(this.queues).filter(e=>this.activeQueues.indexOf(e)===-1&&this.queues[e].length>0).forEach(e=>{this.activeQueues.push(e),this.processQueue(e)})}disableQueue(e){var t=this.activeQueues.indexOf(e);t>=0&&this.activeQueues.splice(t,1),T.info("Stopping queue '%s' as it is now empty",e)}clearQueue(e,t){T.info("clearing queue '%s'",e);for(var r;r=this.removeNextEvent(e);)r.resolvers.reject(t);this.disableQueue(e)}peekNextEvent(e){var t=this.queues[e];if(Array.isArray(t))return t[0]}removeNextEvent(e){var t=this.queues[e];if(Array.isArray(t))return t.shift()}}var ws=20;class ic{constructor(e,t){var r=this;this.client=e,this.logger=t,c(this,"sending",!1),c(this,"running",!0),c(this,"retryTimeout",null),c(this,"retryAttempts",0),c(this,"sendQueue",R(function*(){if(r.retryTimeout!==null&&clearTimeout(r.retryTimeout),r.retryTimeout=null,!(r.sending||!r.running)){r.logger.debug("Attempting to send queued to-device messages"),r.sending=!0;var n;try{for(;r.running&&(n=yield r.client.store.getOldestToDeviceBatch(),n!==null);)yield r.sendBatch(n),yield r.client.store.removeToDeviceBatch(n.id),r.retryAttempts=0;if(!r.running)return;r.logger.debug("All queued to-device messages sent")}catch(s){++r.retryAttempts;var a=Tn.RETRY_BACKOFF_RATELIMIT(null,r.retryAttempts,s);if(a===-1){Math.floor(s.httpStatus/100)===4?(r.logger.error("Fatal error when sending to-device message - dropping to-device batch!",s),yield r.client.store.removeToDeviceBatch(n.id)):r.logger.info("Automatic retry limit reached for to-device messages.");return}r.logger.info("Failed to send batch of to-device messages. Will retry in ".concat(a,"ms"),s),r.retryTimeout=setTimeout(r.sendQueue,a)}finally{r.sending=!1}}})),c(this,"onResumedSync",(n,a)=>{n===ae.Syncing&&a!==ae.Syncing&&(this.logger.info("Resuming queue after resumed sync"),this.sendQueue())})}start(){this.running=!0,this.sendQueue(),this.client.on(x.Sync,this.onResumedSync)}stop(){this.running=!1,this.retryTimeout!==null&&clearTimeout(this.retryTimeout),this.retryTimeout=null,this.client.removeListener(x.Sync,this.onResumedSync)}queueBatch(e){var t=this;return R(function*(){for(var r=[],n=0;n<e.batch.length;n+=ws){var a={eventType:e.eventType,batch:e.batch.slice(n,n+ws),txnId:t.client.makeTxnId()};r.push(a);var s=a.batch.map(o=>"".concat(o.userId,"/").concat(o.deviceId," (msgid ").concat(o.payload[Ui],")"));t.logger.info("Enqueuing batch of to-device messages. type=".concat(e.eventType," txnid=").concat(a.txnId),s)}yield t.client.store.saveToDeviceBatches(r),t.sendQueue()})()}sendBatch(e){var t=this;return R(function*(){var r=new Rr(()=>new Map);for(var n of e.batch)r.getOrCreate(n.userId).set(n.deviceId,n.payload);t.logger.info("Sending batch of ".concat(e.batch.length," to-device messages with ID ").concat(e.id," and txnId ").concat(e.txnId)),yield t.client.sendToDevice(e.eventType,r,e.txnId)})()}}var Jn=new Me.UnstableValue("m.policies","org.matrix.msc3847.policies"),sn=new Me.UnstableValue("m.ignore.invites","org.matrix.msc3847.ignore.invites"),Cs=(function(i){return i.Ban="m.ban",i})({}),Yt=(function(i){return i.User="m.policy.user",i.Room="m.policy.room",i.Server="m.policy.server",i})({}),Ms={[Yt.User]:M.PolicyRuleUser,[Yt.Room]:M.PolicyRuleRoom,[Yt.Server]:M.PolicyRuleServer};class ac{constructor(e){this.client=e}addRule(e,t,r){var n=this;return R(function*(){var a=yield n.getOrCreateTargetRoom(),s=yield n.client.sendStateEvent(a.roomId,Ms[e],{entity:t,reason:r,recommendation:Cs.Ban});return s.event_id})()}removeRule(e){var t=this;return R(function*(){yield t.client.redactEvent(e.getRoomId(),e.getId())})()}addSource(e){var t=this;return R(function*(){yield t.client.joinRoom(e);var r=(yield t.getOrCreateSourceRooms()).map(n=>n.roomId);return r.includes(e)?!1:(r.push(e),yield t.withIgnoreInvitesPolicies(n=>{n.sources=r}),!0)})()}getRuleForInvite(e){var t=this;return R(function*(){var{sender:r,roomId:n}=e,a=yield t.getOrCreateSourceRooms(),s=r.split(":")[1],o=n.split(":")[1];for(var l of a){var d=l.getUnfilteredTimelineSet().getLiveTimeline().getState(N.FORWARDS);for(var{scope:u,entities:h}of[{scope:Yt.Room,entities:[n]},{scope:Yt.User,entities:[r]},{scope:Yt.Server,entities:[s,o]}]){var m=d.getStateEvents(Ms[u]);for(var E of m){var f=E.getContent();if(f?.recommendation==Cs.Ban){var p=f?.entity;if(p){var I=void 0;try{I=new RegExp(ro(p))}catch{continue}for(var S of h)if(S&&I.test(S))return E}}}}}return null})()}getOrCreateTargetRoom(){var e=this;return R(function*(){var t=e.getIgnoreInvitesPolicies(),r=t.target;if(typeof r!="string"&&(r=null),r){var n=e.client.getRoom(r);if(n)return n;r=null}return r=(yield e.client.createRoom({name:"Individual Policy Room",preset:po.PrivateChat})).room_id,yield e.withIgnoreInvitesPolicies(a=>{a.target=r}),e.client.getRoom(r)})()}getOrCreateSourceRooms(){var e=this;return R(function*(){var t=e.getIgnoreInvitesPolicies(),r=t.sources,n=!1;Array.isArray(r)||(n=!0,r=[]);var a=r.filter(o=>typeof o=="string").map(o=>e.client.getRoom(o)).filter(o=>!!o);if(a.length!=r.length&&(n=!0),a.length==0){var s=yield e.getOrCreateTargetRoom();n=!0,a=[s]}return n&&(yield e.withIgnoreInvitesPolicies(o=>{o.sources=r})),a})()}getIgnoreInvitesPolicies(){return this.getPoliciesAndIgnoreInvitesPolicies().ignoreInvitesPolicies}withIgnoreInvitesPolicies(e){var t=this;return R(function*(){var{policies:r,ignoreInvitesPolicies:n}=t.getPoliciesAndIgnoreInvitesPolicies();e(n),r[sn.name]=n,yield t.client.setAccountData(Jn.name,r)})()}getPoliciesAndIgnoreInvitesPolicies(){var e={};for(var t of[Jn.name,Jn.altName]){var r;if(t){var n=(r=this.client.getAccountData(t))===null||r===void 0?void 0:r.getContent();if(n){e=n;break}}}var a={},s=!1;for(var o of[sn.name,sn.altName])if(o){var l=e[o];if(l&&typeof l=="object"){a=l,s=!0;break}}return s||(e[sn.name]=a),{policies:e,ignoreInvitesPolicies:a}}}var zn="matrix-js-sdk";function sc(i){if(i.length>=255)throw new TypeError("Alphabet too long");const e=new Uint8Array(256);for(let d=0;d<e.length;d++)e[d]=255;for(let d=0;d<i.length;d++){const u=i.charAt(d),h=u.charCodeAt(0);if(e[h]!==255)throw new TypeError(u+" is ambiguous");e[h]=d}const t=i.length,r=i.charAt(0),n=Math.log(t)/Math.log(256),a=Math.log(256)/Math.log(t);function s(d){if(d instanceof Uint8Array||(ArrayBuffer.isView(d)?d=new Uint8Array(d.buffer,d.byteOffset,d.byteLength):Array.isArray(d)&&(d=Uint8Array.from(d))),!(d instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(d.length===0)return"";let u=0,h=0,m=0;const E=d.length;for(;m!==E&&d[m]===0;)m++,u++;const f=(E-m)*a+1>>>0,p=new Uint8Array(f);for(;m!==E;){let g=d[m],_=0;for(let y=f-1;(g!==0||_<h)&&y!==-1;y--,_++)g+=256*p[y]>>>0,p[y]=g%t>>>0,g=g/t>>>0;if(g!==0)throw new Error("Non-zero carry");h=_,m++}let I=f-h;for(;I!==f&&p[I]===0;)I++;let S=r.repeat(u);for(;I<f;++I)S+=i.charAt(p[I]);return S}function o(d){if(typeof d!="string")throw new TypeError("Expected String");if(d.length===0)return new Uint8Array;let u=0,h=0,m=0;for(;d[u]===r;)h++,u++;const E=(d.length-u)*n+1>>>0,f=new Uint8Array(E);for(;u<d.length;){const g=d.charCodeAt(u);if(g>255)return;let _=e[g];if(_===255)return;let y=0;for(let b=E-1;(_!==0||y<m)&&b!==-1;b--,y++)_+=t*f[b]>>>0,f[b]=_%256>>>0,_=_/256>>>0;if(_!==0)throw new Error("Non-zero carry");m=y,u++}let p=E-m;for(;p!==E&&f[p]===0;)p++;const I=new Uint8Array(h+(E-p));let S=h;for(;p!==E;)I[S++]=f[p++];return I}function l(d){const u=o(d);if(u)return u;throw new Error("Non-base"+t+" character")}return{encode:s,decodeUnsafe:o,decode:l}}var oc="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz",_h=sc(oc),be=(function(i){return i.UserTrustStatusChanged="userTrustStatusChanged",i.KeyBackupStatus="crypto.keyBackupStatus",i.KeyBackupFailed="crypto.keyBackupFailed",i.KeyBackupSessionsRemaining="crypto.keyBackupSessionsRemaining",i.KeyBackupDecryptionKeyCached="crypto.keyBackupDecryptionKeyCached",i.VerificationRequestReceived="crypto.verificationRequestReceived",i.WillUpdateDevices="crypto.willUpdateDevices",i.DevicesUpdated="crypto.devicesUpdated",i.KeysChanged="crossSigning.keysChanged",i.LegacyCryptoStoreMigrationProgress="crypto.legacyCryptoStoreMigrationProgress",i.DehydratedDeviceCreated="dehydration.DehydratedDeviceCreated",i.DehydratedDeviceUploaded="dehydration.DehydratedDeviceUploaded",i.RehydrationStarted="dehydration.RehydrationStarted",i.RehydrationProgress="dehydration.RehydrationProgress",i.RehydrationCompleted="dehydration.RehydrationCompleted",i.RehydrationError="dehydration.RehydrationError",i.DehydrationKeyCached="dehydration.DehydrationKeyCached",i.DehydratedDeviceRotationError="dehydration.DehydratedDeviceRotationError",i})({}),lc=(function(i){return i.MEGOLM_UNKNOWN_INBOUND_SESSION_ID="MEGOLM_UNKNOWN_INBOUND_SESSION_ID",i.MEGOLM_KEY_WITHHELD="MEGOLM_KEY_WITHHELD",i.MEGOLM_KEY_WITHHELD_FOR_UNVERIFIED_DEVICE="MEGOLM_KEY_WITHHELD_FOR_UNVERIFIED_DEVICE",i.OLM_UNKNOWN_MESSAGE_INDEX="OLM_UNKNOWN_MESSAGE_INDEX",i.HISTORICAL_MESSAGE_NO_KEY_BACKUP="HISTORICAL_MESSAGE_NO_KEY_BACKUP",i.HISTORICAL_MESSAGE_BACKUP_UNCONFIGURED="HISTORICAL_MESSAGE_BACKUP_UNCONFIGURED",i.HISTORICAL_MESSAGE_WORKING_BACKUP="HISTORICAL_MESSAGE_WORKING_BACKUP",i.HISTORICAL_MESSAGE_USER_NOT_JOINED="HISTORICAL_MESSAGE_USER_NOT_JOINED",i.SENDER_IDENTITY_PREVIOUSLY_VERIFIED="SENDER_IDENTITY_PREVIOUSLY_VERIFIED",i.UNSIGNED_SENDER_DEVICE="UNSIGNED_SENDER_DEVICE",i.UNKNOWN_SENDER_DEVICE="UNKNOWN_SENDER_DEVICE",i.UNKNOWN_ERROR="UNKNOWN_ERROR",i})({}),dc=(function(i){return i[i.AllDevicesIsolationMode=0]="AllDevicesIsolationMode",i[i.OnlySignedDevicesIsolationMode=1]="OnlySignedDevicesIsolationMode",i})({});class Rh{constructor(e){this.errorOnVerifiedUserProblems=e,c(this,"kind",dc.AllDevicesIsolationMode)}}class Ih{constructor(e,t,r){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;this.crossSigningVerified=e,this.crossSigningVerifiedBefore=t,this.tofu=r,c(this,"needsUserApproval",void 0),this.needsUserApproval=n}isVerified(){return this.isCrossSigningVerified()}isCrossSigningVerified(){return this.crossSigningVerified}wasCrossSigningVerified(){return this.crossSigningVerifiedBefore}isTofu(){return this.tofu}}class Th{constructor(e){var t,r,n,a,s;c(this,"signedByOwner",void 0),c(this,"crossSigningVerified",void 0),c(this,"tofu",void 0),c(this,"localVerified",void 0),c(this,"trustCrossSignedDevices",void 0),this.signedByOwner=(t=e.signedByOwner)!==null&&t!==void 0?t:!1,this.crossSigningVerified=(r=e.crossSigningVerified)!==null&&r!==void 0?r:!1,this.tofu=(n=e.tofu)!==null&&n!==void 0?n:!1,this.localVerified=(a=e.localVerified)!==null&&a!==void 0?a:!1,this.trustCrossSignedDevices=(s=e.trustCrossSignedDevices)!==null&&s!==void 0?s:!1}isVerified(){return this.localVerified||this.trustCrossSignedDevices&&this.crossSigningVerified}}var wh=(function(i){return i.Fetch="fetch",i.LoadKeys="load_keys",i})({}),Ch=(function(i){return i.Master="master",i.SelfSigning="self_signing",i.UserSigning="user_signing",i})({}),Mh=(function(i){return i[i.NONE=0]="NONE",i[i.GREY=1]="GREY",i[i.RED=2]="RED",i})({}),Oh=(function(i){return i[i.UNKNOWN=0]="UNKNOWN",i[i.UNVERIFIED_IDENTITY=1]="UNVERIFIED_IDENTITY",i[i.UNSIGNED_DEVICE=2]="UNSIGNED_DEVICE",i[i.UNKNOWN_DEVICE=3]="UNKNOWN_DEVICE",i[i.AUTHENTICITY_NOT_GUARANTEED=4]="AUTHENTICITY_NOT_GUARANTEED",i[i.MISMATCHED_SENDER_KEY=5]="MISMATCHED_SENDER_KEY",i[i.SENT_IN_CLEAR=6]="SENT_IN_CLEAR",i[i.VERIFICATION_VIOLATION=7]="VERIFICATION_VIOLATION",i[i.MISMATCHED_SENDER=8]="MISMATCHED_SENDER",i})({}),uc=new Uint8Array(8);function Bo(i,e){return Ri.apply(this,arguments)}function Ri(){return Ri=R(function*(i,e){var t=yield globalThis.crypto.subtle.importKey("raw",i,{name:"HKDF"},!1,["deriveBits"]),r=yield globalThis.crypto.subtle.deriveBits({name:"HKDF",salt:uc,info:new TextEncoder().encode(e),hash:"SHA-256"},t,512),n=r.slice(0,32),a=r.slice(32),s=globalThis.crypto.subtle.importKey("raw",n,{name:"AES-CTR"},!1,["encrypt","decrypt"]),o=globalThis.crypto.subtle.importKey("raw",a,{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign","verify"]);return Promise.all([s,o])}),Ri.apply(this,arguments)}function jo(i,e,t,r){return Ii.apply(this,arguments)}function Ii(){return Ii=R(function*(i,e,t,r){var n;r?n=Jt(r):(n=new Uint8Array(16),globalThis.crypto.getRandomValues(n),n[8]&=127);var[a,s]=yield Bo(e,t),o=new TextEncoder().encode(i),l=yield globalThis.crypto.subtle.encrypt({name:"AES-CTR",counter:n,length:64},a,o),d=yield globalThis.crypto.subtle.sign({name:"HMAC"},s,l);return{iv:vn(n),ciphertext:vn(new Uint8Array(l)),mac:vn(new Uint8Array(d))}}),Ii.apply(this,arguments)}function cc(i,e,t){return Ti.apply(this,arguments)}function Ti(){return Ti=R(function*(i,e,t){var[r,n]=yield Bo(e,t),a=Jt(i.ciphertext);if(!(yield globalThis.crypto.subtle.verify({name:"HMAC"},n,Jt(i.mac),a)))throw new Error("Error decrypting secret ".concat(t,": bad MAC"));var s=yield globalThis.crypto.subtle.decrypt({name:"AES-CTR",counter:Jt(i.iv),length:64},r,a);return new TextDecoder().decode(new Uint8Array(s))}),Ti.apply(this,arguments)}var Ht="m.secret_storage.v1.aes-hmac-sha2";class hc{constructor(e,t){this.accountDataAdapter=e,this.callbacks=t}getDefaultKeyId(){var e=this;return R(function*(){var t,r=yield e.accountDataAdapter.getAccountDataFromServer("m.secret_storage.default_key");return r&&(t=r.key)!==null&&t!==void 0?t:null})()}setDefaultKeyId(e){return new Promise((t,r)=>{var n=s=>{if(s.getType()==="m.secret_storage.default_key"){var o=s.getContent(),l=e===null?Object.keys(o).length===0:o.key===e;l&&(this.accountDataAdapter.removeListener(x.AccountData,n),t())}};this.accountDataAdapter.on(x.AccountData,n);var a=e===null?{}:{key:e};this.accountDataAdapter.setAccountData("m.secret_storage.default_key",a).catch(s=>{this.accountDataAdapter.removeListener(x.AccountData,n),r(s)})})}addKey(e,t,r){var n=this;return R(function*(){if(e!==Ht)throw new Error("Unknown key algorithm ".concat(e));var a={algorithm:e};t.name&&(a.name=t.name),t.passphrase&&(a.passphrase=t.passphrase);var{iv:s,mac:o}=yield ks(t.key);if(a.iv=s,a.mac=o,!r)do r=_n(32);while(yield n.accountDataAdapter.getAccountDataFromServer("m.secret_storage.key.".concat(r)));return yield n.accountDataAdapter.setAccountData("m.secret_storage.key.".concat(r),a),{keyId:r,keyInfo:a}})()}getKey(e){var t=this;return R(function*(){if(e||(e=yield t.getDefaultKeyId()),!e)return null;var r=yield t.accountDataAdapter.getAccountDataFromServer("m.secret_storage.key.".concat(e));return r?[e,r]:null})()}hasKey(e){var t=this;return R(function*(){var r=yield t.getKey(e);return!!r})()}checkKey(e,t){return R(function*(){if(t.algorithm===Ht)if(t.mac){var{mac:r}=yield ks(e,t.iv);return Os(t.mac)===Os(r)}else return!0;else throw new Error("Unknown algorithm")})()}store(e,t,r){var n=this;return R(function*(){if(t===null){yield n.accountDataAdapter.setAccountData(e,{});return}var a={};if(!r){var s=yield n.getDefaultKeyId();if(!s)throw new Error("No keys specified and no default key present");r=[s]}if(r.length===0)throw new Error("Zero keys given to encrypt with!");for(var o of r){var l=yield n.accountDataAdapter.getAccountDataFromServer("m.secret_storage.key.".concat(o));if(!l)throw new Error("Unknown key: "+o);if(l.algorithm===Ht){var d={[o]:l},[,u]=yield n.getSecretStorageKey(d,e);a[o]=yield u.encrypt(t)}else T.warn("unknown algorithm for secret storage key "+o+": "+l.algorithm)}yield n.accountDataAdapter.setAccountData(e,{encrypted:a})})()}get(e){var t=this;return R(function*(){var r=yield t.accountDataAdapter.getAccountDataFromServer(e);if(r){if(!r.encrypted)throw new Error("Content is not encrypted!");var n={};for(var a of Object.keys(r.encrypted)){var s=yield t.accountDataAdapter.getAccountDataFromServer("m.secret_storage.key.".concat(a)),o=r.encrypted[a];s?.algorithm===Ht&&o.iv&&o.ciphertext&&o.mac&&(n[a]=s)}if(Object.keys(n).length===0)throw new Error("Could not decrypt ".concat(e," because none of ")+"the keys it is encrypted with are for a supported algorithm");var[l,d]=yield t.getSecretStorageKey(n,e),u=r.encrypted[l];return d.decrypt(u)}})()}isStored(e){var t=this;return R(function*(){var r=yield t.accountDataAdapter.getAccountDataFromServer(e);if(!(r!=null&&r.encrypted))return null;var n={};for(var a of Object.keys(r.encrypted)){var s=yield t.accountDataAdapter.getAccountDataFromServer("m.secret_storage.key.".concat(a));if(s){var o=r.encrypted[a];s.algorithm===Ht&&o.iv&&o.ciphertext&&o.mac&&(n[a]=s)}}return Object.keys(n).length?n:null})()}getSecretStorageKey(e,t){var r=this;return R(function*(){if(!r.callbacks.getSecretStorageKey)throw new Error("No getSecretStorageKey callback supplied");var n=yield r.callbacks.getSecretStorageKey({keys:e},t);if(!n)throw new Error("getSecretStorageKey callback returned falsey");if(n.length<2)throw new Error("getSecretStorageKey callback returned invalid data");var[a,s]=n;if(!e[a])throw new Error("App returned unknown key from getSecretStorageKey!");if(e[a].algorithm===Ht){var o={encrypt:function(d){return jo(d,s,t)},decrypt:function(d){return cc(d,s,t)}};return[a,o]}else throw new Error("Unknown key type: "+e[a].algorithm)})()}}function Os(i){for(var e=i.length;e>=1&&i.charCodeAt(e-1)==61;)e--;return e<i.length?i.substring(0,e):i}var vc="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";function ks(i,e){return jo(vc,i,"",e)}function Ko(i){return wi.apply(this,arguments)}function wi(){return wi=R(function*(i){if(!globalThis.crypto.subtle)throw new Error("Crypto.subtle is not available: insecure context?");var e=new TextEncoder().encode(i),t=yield globalThis.crypto.subtle.digest("SHA-256",e);return new Uint8Array(t)}),wi.apply(this,arguments)}var Vo=1e3*60*60*4,fc=(i,e,t)=>{var r,n=" - ";if(typeof i.slot_id!="string"?e.push(n+"slot_id must be string"):i.slot_id.split("#").length!==2&&e.push(n+'slot_id must include exactly one "#"'),typeof i.member!="object"||i.member===null?e.push(n+"member must be an object"):(typeof i.member.user_id!="string"?e.push(n+"member.user_id must be string"):mo.test(i.member.user_id)?i.member.user_id!==t&&e.push(n+"member.user_id must match the sender"):e.push(n+"member.user_id must be a valid mxid"),typeof i.member.device_id!="string"&&e.push(n+"member.device_id must be string"),typeof i.member.id!="string"&&e.push(n+"member.id must be string")),typeof i.application!="object"||i.application===null?e.push(n+"application must be an object"):typeof i.application.type!="string"?e.push(n+"application.type must be a string"):i.application.type.includes("#")&&e.push(n+'application.type must not include "#"'),i.rtc_transports===void 0||!Array.isArray(i.rtc_transports))e.push(n+"rtc_transports must be an array");else for(var a of i.rtc_transports)if(typeof a!="object"||a===null||typeof a.type!="string"){e.push(n+"rtc_transports entries must be objects with a string type");break}if(i.versions===void 0||!Array.isArray(i.versions)?e.push(n+"versions must be an array"):i.versions.every(o=>typeof o=="string")||e.push(n+"versions must be an array of strings"),((r=i.sticky_key)!==null&&r!==void 0?r:i.msc4354_sticky_key)===void 0&&e.push(n+"sticky_key or msc4354_sticky_key must be a defined"),i.sticky_key!==void 0&&typeof i.sticky_key!="string"&&e.push(n+"sticky_key must be a string"),i.msc4354_sticky_key!==void 0&&typeof i.msc4354_sticky_key!="string"&&e.push(n+"msc4354_sticky_key must be a string"),i.sticky_key!==void 0&&i.msc4354_sticky_key!==void 0&&i.sticky_key!==i.msc4354_sticky_key&&e.push(n+"sticky_key and msc4354_sticky_key must be equal if both are defined"),i["m.relates_to"]!==void 0){var s=i["m.relates_to"];typeof s!="object"||s===null?e.push(n+"m.relates_to must be an object if provided"):(typeof s.event_id!="string"&&e.push(n+"m.relates_to.event_id must be a string"),s.rel_type!=="m.reference"&&e.push(n+"m.relates_to.rel_type must be m.reference"))}return e.length===0},mc=(i,e)=>{var t,r=" - ";return typeof i.device_id!="string"&&e.push(r+"device_id must be string"),typeof i.call_id!="string"&&e.push(r+"call_id must be string"),typeof i.application!="string"&&e.push(r+"application must be a string"),typeof((t=i.focus_active)===null||t===void 0?void 0:t.type)!="string"&&e.push(r+"focus_active.type must be a string"),i.focus_active===void 0&&e.push(r+"focus_active has an invalid type"),i.foci_preferred!==void 0&&!(Array.isArray(i.foci_preferred)&&i.foci_preferred.every(n=>typeof n=="object"&&n!==null&&typeof n.type=="string"))&&e.push(r+"foci_preferred must be an array of transport objects"),i.created_ts!==void 0&&typeof i.created_ts!="number"&&e.push(r+"created_ts must be number"),i.scope!==void 0&&typeof i.scope!="string"&&e.push(r+"scope must be string"),i["m.call.intent"]!==void 0&&typeof i["m.call.intent"]!="string"&&e.push(r+"m.call.intent must be a string"),e.length===0};class gt{static equal(e,t){return Xt(e?.membershipData,t?.membershipData)}constructor(e,t,r,n){this.membershipData=t,this.rtcBackendIdentity=r,c(this,"logger",void 0),c(this,"matrixEventData",void 0);var[a,s,o]=[e.getId(),e.getSender(),e.getTs()];if(a===void 0)throw new Error("parentEvent is missing eventId field");if(s===void 0)throw new Error("parentEvent is missing sender field");this.matrixEventData={eventId:a,sender:s,ts:o},this.logger=n?.getChild("[CallMembership ".concat(s,":").concat(this.deviceId,"]"))}static computeRtcBackendIdentity(e,t){return R(function*(){var{kind:r,data:n}=t;switch(r){case"rtc":return gt.computeRtcIdentityRaw(n.member.user_id,n.member.device_id,n.member.id);case"session":return"".concat(e.getSender(),":").concat(n.device_id)}})()}static computeRtcIdentityRaw(e,t,r){return R(function*(){return Ao(yield Ko("".concat(e,"|").concat(t,"|").concat(r)))})()}static membershipDataFromMatrixEvent(e){var[t,r,n]=[e.getId(),e.getSender(),e.getContent()];if(t===void 0)throw new Error("parentEvent is missing eventId field");if(r===void 0)throw new Error("parentEvent is missing sender field");var a=[],s=[];if(mc(n,a))return{kind:"session",data:n};if(fc(n,s,r))return{kind:"rtc",data:n};var o=a.length<s.length?`Does not match MSC4143 m.call.member:
11
+ `.concat(a.join(`
12
+ `),`
13
+
14
+ `):`Does not match MSC4143 m.rtc.member:
15
+ `.concat(s.join(`
16
+ `),`
17
+
18
+ `),l=`
19
+ event:
20
+ `+JSON.stringify(n).replaceAll('"',"'");throw Error(`unknown CallMembership data.
21
+ `+o+l)}get sender(){return this.userId}get userId(){var{kind:e,data:t}=this.membershipData;return e==="rtc"?t.member.user_id:this.matrixEventData.sender}get eventId(){return this.matrixEventData.eventId}get slotId(){var e,{kind:t,data:r}=this.membershipData;if(r.application==="m.call")switch(t){case"rtc":return r.slot_id;default:{var[n,a]=[this.application,r.call_id],s;if(a===""){var o;s="ROOM",(o=this.logger)===null||o===void 0||o.info("use slotId compat hack emptyString -> ROOM")}else s=a;return Ur({application:n,id:s})}}if((e=this.logger)===null||e===void 0||e.info("NOT using slotId compat hack emptyString -> ROOM"),t==="rtc")return r.slot_id;var[l,d]=[this.application,r.call_id];return Ur({application:l,id:d})}get deviceId(){var{kind:e,data:t}=this.membershipData;return e==="rtc"?t.member.device_id:t.device_id}get callIntent(){var{kind:e,data:t}=this.membershipData;switch(e){case"rtc":{var r,n=t.application["m.call.intent"];if(typeof n=="string")return n;(r=this.logger)===null||r===void 0||r.warn("RTC membership has invalid m.call.intent");return}default:return t["m.call.intent"]}}get slotDescription(){return Cc(this.slotId)}get application(){var{kind:e,data:t}=this.membershipData;return e==="rtc"?t.application.type:t.application}get applicationData(){var{kind:e,data:t}=this.membershipData;return e==="rtc"?t.application:{type:t.application,"m.call.intent":t["m.call.intent"]}}get scope(){var{kind:e,data:t}=this.membershipData;if(e!=="rtc")return t.scope}get membershipID(){return this.memberId}get memberId(){var e,{kind:t,data:r}=this.membershipData;return t==="rtc"?r.member.id:(e=r.membershipID)!==null&&e!==void 0?e:"".concat(this.matrixEventData.sender,":").concat(r.device_id)}createdTs(){var e,{kind:t,data:r}=this.membershipData;return t==="rtc"?this.matrixEventData.ts:(e=r.created_ts)!==null&&e!==void 0?e:this.matrixEventData.ts}getAbsoluteExpiry(){var e,{kind:t,data:r}=this.membershipData;if(t!=="rtc")return this.createdTs()+((e=r.expires)!==null&&e!==void 0?e:Vo)}getMsUntilExpiry(){var{kind:e}=this.membershipData;if(e!=="rtc")return this.getAbsoluteExpiry()-Date.now()}isExpired(){var{kind:e}=this.membershipData;return e==="rtc"?!1:this.getMsUntilExpiry()<=0}getTransport(e){var{kind:t,data:r}=this.membershipData;switch(t){case"rtc":return r.rtc_transports[0];case"session":switch(r.focus_active.focus_selection){case"multi_sfu":return r.foci_preferred[0];case"oldest_membership":if(gt.equal(this,e))return r.foci_preferred[0];if(e!==void 0)return e.getTransport(e);break}}}getFocusActive(){var{kind:e,data:t}=this.membershipData;if(e==="session")return t.focus_active}get transports(){var{kind:e,data:t}=this.membershipData;return e==="rtc"?t.rtc_transports:t.foci_preferred}get kind(){return this.membershipData.kind}}var It=(function(i){return i.Disconnected="Disconnected",i.Connecting="Connecting",i.Connected="Connected",i.Disconnecting="Disconnecting",i.Unknown="Unknown",i})({}),fn=(i,e,t)=>i.sender===e&&i.deviceId===t;class pc{constructor(e,t){this.membershipLoopHandler=e,c(this,"logger",void 0),c(this,"running",!1),c(this,"wakeup",r=>{this.logger.error("Cannot call wakeup before calling `startWithJoin()`")}),c(this,"_actions",[]),this.logger=(t??T).getChild("[NewMembershipActionScheduler]")}get actions(){return this._actions}startWithJoin(){var e=this;return R(function*(){if(e.running){e.logger.error("Cannot call startWithJoin() on NewMembershipActionScheduler while already running");return}e.running=!0,e._actions=[{ts:Date.now(),type:K.SendDelayedEvent}];try{for(var t=function*(){e._actions.sort((d,u)=>d.ts-u.ts);var n=e._actions[0],a=void 0,s=new Promise(d=>{e.wakeup=u=>{a=u,d()}});n.ts>Date.now()&&(yield Promise.race([s,jr(n.ts-Date.now())]));var o={};if(!a){e.logger.debug("Current MembershipManager processing: ".concat(n.type,`
22
+ Queue:`),e._actions,`
23
+ Date.now: "`.concat(Date.now()));try{o=yield e.membershipLoopHandler(n.type)}catch(d){throw Error("The MembershipManager shut down because of the end condition: ".concat(d))}}e._actions.splice(0,1);var l=a??o;"replace"in l?e._actions=l.replace:"insert"in l&&e._actions.push(...l.insert)};e._actions.length>0;)yield*t()}finally{e.running=!1}e.logger.debug("Leave MembershipManager ActionScheduler loop (no more actions)")})()}initiateJoin(){var e;(e=this.wakeup)===null||e===void 0||e.call(this,{replace:[{ts:Date.now(),type:K.SendDelayedEvent}]})}initiateLeave(){var e;(e=this.wakeup)===null||e===void 0||e.call(this,{replace:[{ts:Date.now(),type:K.SendScheduledDelayedLeaveEvent}]})}}var gc=(function(i){return i.TooNew="TOO_NEW",i})({});class yc extends Error{constructor(e){var t="Crypto store is invalid because ".concat(e,", ")+"please stop the client, delete all data and start the client again";super(t),this.reason=e,this.name="InvalidCryptoStoreError"}}c(yc,"TOO_NEW",gc.TooNew);class kh extends Error{constructor(){super("MatrixClient has been stopped")}}class Ot extends Error{constructor(e,t){super(e),this.clientEndpoint=t,this.name="UnsupportedDelayedEventsEndpointError"}}class Ps extends Error{constructor(e,t){super(e),this.clientEndpoint=t,this.name="UnsupportedStickyEventsEndpointError"}}var Pt=(function(i){return i.StatusChanged="StatusChanged",i.ProbablyLeft="ProbablyLeft",i.DelayIdChanged="DelayIdChanged",i})({}),Ec=i=>i.type==="livekit"&&"livekit_service_url"in i;function As(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(i);e&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(i,n).enumerable})),t.push.apply(t,r)}return t}function Wt(i){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?As(Object(t),!0).forEach(function(r){c(i,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(t)):As(Object(t)).forEach(function(r){Object.defineProperty(i,r,Object.getOwnPropertyDescriptor(t,r))})}return i}var Ci=3600*1e3,K=(function(i){return i.SendDelayedEvent="SendDelayedEvent",i.SendJoinEvent="SendJoinEvent",i.RestartDelayedEvent="RestartDelayedEvent",i.UpdateExpiry="UpdateExpiry",i.SendScheduledDelayedLeaveEvent="SendScheduledDelayedLeaveEvent",i.SendLeaveEvent="SendLeaveEvent",i})({});function De(i,e){return{insert:[{ts:Date.now()+(e??0),type:i}]}}function Yn(i,e){return{replace:[{ts:Date.now()+0,type:i}]}}class Dr extends fe{isActivated(){return this.activated}isJoined(){return this.isActivated()}join(e,t,r){if(this.scheduler.running){this.logger.error("MembershipManager is already running. Ignoring join request.");return}this.fociPreferred=e,this.rtcTransport=t,this.leavePromiseResolvers=void 0,this.activated=!0,this.oldStatus=this.status,this.state=Dr.defaultState,this.scheduler.startWithJoin().catch(n=>{this.logger.error("MembershipManager stopped because: ",n),r?.(n)}).finally(()=>{if(this.activated=!1,this.oldStatus&&this.oldStatus!==this.status&&this.emit(Pt.StatusChanged,this.oldStatus,this.status),!this.scheduler.running){var n;(n=this.leavePromiseResolvers)===null||n===void 0||n.resolve(!0),this.leavePromiseResolvers=void 0}})}leave(e){return this.scheduler.running?(this.leavePromiseResolvers||(this.leavePromiseResolvers=Promise.withResolvers(),this.activated=!1,this.scheduler.initiateLeave(),e&&setTimeout(()=>{var t;return(t=this.leavePromiseResolvers)===null||t===void 0?void 0:t.resolve(!1)},e)),this.leavePromiseResolvers.promise):(this.logger.warn("Called MembershipManager.leave() even though the MembershipManager is not running"),Promise.resolve(!0))}onRTCSessionMemberUpdate(e){if(!this.isActivated())return Promise.resolve();if(this._ownMembership=e.find(r=>fn(r,this.userId,this.deviceId)),!this._ownMembership){var t=[K.SendDelayedEvent,K.SendJoinEvent];this.logger.warn("Missing own membership: force re-join"),this.state.hasMemberStateEvent=!1,this.scheduler.actions.some(r=>t.includes(r.type))?this.logger.error("tried adding another `SendDelayedEvent` actions even though we already have one in the Queue\nActionQueueOnMemberUpdate:",this.scheduler.actions):this.scheduler.initiateJoin()}return Promise.resolve()}updateCallIntent(e){var t=this;return R(function*(){if(!t.activated||!t.ownMembership)throw Error("You cannot update your intent before joining the call");t.ownMembership.callIntent!==e&&(t.callIntent=e,yield t.sendJoinEvent())})()}constructor(e,t,r,n,a){super(),this.joinConfig=e,this.room=t,this.client=r,this.slotDescription=n,c(this,"activated",!1),c(this,"logger",void 0),c(this,"callIntent",void 0),c(this,"leavePromiseResolvers",void 0),c(this,"_ownMembership",void 0),c(this,"oldStatus",void 0),c(this,"scheduler",void 0),c(this,"state",void 0),c(this,"deviceId",void 0),c(this,"userId",void 0),c(this,"stateKey",void 0),c(this,"rtcTransport",void 0),c(this,"fociPreferred",void 0),c(this,"delayedLeaveEventDelayMsOverride",void 0),c(this,"clientSendDelayedDisconnectMembership",()=>this.client._unstable_sendDelayedStateEvent(this.room.roomId,{delay:this.delayedLeaveEventDelayMs},M.GroupCallMemberPrefix,{},this.stateKey)),c(this,"clientSendMembership",l=>this.client.sendStateEvent(this.room.roomId,M.GroupCallMemberPrefix,l,this.stateKey)),this.logger=(a??T).getChild("[MembershipManager]");var[s,o]=[this.client.getUserId(),this.client.getDeviceId()];if(s===null)throw Error("Missing userId in client");if(o===null)throw Error("Missing deviceId in client");this.deviceId=o,this.userId=s,this.stateKey=this.makeMembershipStateKey(s,o),this.state=Dr.defaultState,this.callIntent=e?.callIntent,this.scheduler=new pc(l=>(this.oldStatus&&(this.logger.debug("MembershipManager applied action changes. Status: ".concat(this.oldStatus," -> ").concat(this.status)),this.oldStatus!==this.status&&this.emit(Pt.StatusChanged,this.oldStatus,this.status)),this.oldStatus=this.status,this.logger.debug("MembershipManager before processing action. status=".concat(this.oldStatus)),this.membershipLoopHandler(l)),this.logger)}get ownMembership(){return this._ownMembership}static get defaultState(){return{hasMemberStateEvent:!1,delayId:void 0,startTime:0,rateLimitRetries:new Map,networkErrorRetries:new Map,expireUpdateIterations:1,probablyLeft:!1}}get networkErrorRetryMs(){var e,t;return(e=(t=this.joinConfig)===null||t===void 0?void 0:t.networkErrorRetryMs)!==null&&e!==void 0?e:3e3}get membershipEventExpiryMs(){var e,t;return(e=(t=this.joinConfig)===null||t===void 0?void 0:t.membershipEventExpiryMs)!==null&&e!==void 0?e:Vo}get membershipEventExpiryHeadroomMs(){var e,t;return(e=(t=this.joinConfig)===null||t===void 0?void 0:t.membershipEventExpiryHeadroomMs)!==null&&e!==void 0?e:5e3}computeNextExpiryActionTs(e){return this.state.startTime+Math.min(this.membershipEventExpiryMs,Ci)*e-this.membershipEventExpiryHeadroomMs}get delayedLeaveEventDelayMs(){var e,t,r;return(e=(t=this.delayedLeaveEventDelayMsOverride)!==null&&t!==void 0?t:(r=this.joinConfig)===null||r===void 0?void 0:r.delayedLeaveEventDelayMs)!==null&&e!==void 0?e:8e3}get delayedLeaveEventRestartMs(){var e,t;return(e=(t=this.joinConfig)===null||t===void 0?void 0:t.delayedLeaveEventRestartMs)!==null&&e!==void 0?e:5e3}get maximumRateLimitRetryCount(){var e,t;return(e=(t=this.joinConfig)===null||t===void 0?void 0:t.maximumRateLimitRetryCount)!==null&&e!==void 0?e:10}get maximumNetworkErrorRetryCount(){var e,t;return(e=(t=this.joinConfig)===null||t===void 0?void 0:t.maximumNetworkErrorRetryCount)!==null&&e!==void 0?e:10}get delayedLeaveEventRestartLocalTimeoutMs(){var e,t;return(e=(t=this.joinConfig)===null||t===void 0?void 0:t.delayedLeaveEventRestartLocalTimeoutMs)!==null&&e!==void 0?e:2e3}membershipLoopHandler(e){var t=this;return R(function*(){switch(e){case K.SendDelayedEvent:return t.state.delayId?t.cancelKnownDelayIdBeforeSendDelayedEvent(t.state.delayId):t.sendOrResendDelayedLeaveEvent();case K.RestartDelayedEvent:return t.state.delayId?t.restartDelayedEvent(t.state.delayId):De(K.SendDelayedEvent);case K.SendScheduledDelayedLeaveEvent:return t.state.hasMemberStateEvent?t.state.delayId?t.sendScheduledDelayedLeaveEventOrFallbackToSendLeaveEvent(t.state.delayId):De(K.SendLeaveEvent):{replace:[]};case K.SendJoinEvent:return t.sendJoinEvent();case K.UpdateExpiry:return t.updateExpiryOnJoinedEvent();case K.SendLeaveEvent:return t.state.hasMemberStateEvent?t.sendFallbackLeaveEvent():{replace:[]}}})()}sendOrResendDelayedLeaveEvent(){var e=this;return R(function*(){return yield e.clientSendDelayedDisconnectMembership().then(t=>(e.state.expectedServerDelayLeaveTs=Date.now()+e.delayedLeaveEventDelayMs,e.setAndEmitProbablyLeft(!1),e.resetRateLimitCounter(K.SendDelayedEvent),e.setAndEmitDelayId(t.delay_id),e.state.hasMemberStateEvent?De(K.RestartDelayedEvent,e.delayedLeaveEventRestartMs):De(K.SendJoinEvent))).catch(t=>{var r=K.SendDelayedEvent;if(e.manageMaxDelayExceededSituation(t))return De(r);var n=e.actionUpdateFromErrors(t,r,"_unstable_sendDelayedStateEvent");if(n)return n;if(e.state.hasMemberStateEvent){if(e.isUnsupportedDelayedEndpoint(t))return{};throw Error("Could not send delayed event, even though delayed events are supported. "+t)}else return e.isUnsupportedDelayedEndpoint(t)?e.logger.info("Not using delayed event because the endpoint is not supported"):e.logger.info("Not using delayed event because: "+t),De(K.SendJoinEvent)})})()}cancelKnownDelayIdBeforeSendDelayedEvent(e){var t=this;return R(function*(){return yield t.client._unstable_cancelScheduledDelayedEvent(e).then(()=>(t.setAndEmitDelayId(void 0),t.resetRateLimitCounter(K.SendDelayedEvent),Yn(K.SendDelayedEvent))).catch(r=>{var n=K.SendDelayedEvent,a=t.actionUpdateFromErrors(r,n,"cancelScheduledDelayedEvent");if(a)return a;if(t.isNotFoundError(r))return t.setAndEmitDelayId(void 0),Yn(n);if(t.isUnsupportedDelayedEndpoint(r))return Yn(K.SendJoinEvent);throw Error("We failed to cancel a delayed event where we already had a delay id with an error we cannot automatically handle")})})()}setAndEmitProbablyLeft(e){this.state.probablyLeft!==e&&(this.state.probablyLeft=e,this.emit(Pt.ProbablyLeft,this.state.probablyLeft))}setAndEmitDelayId(e){this.state.delayId!==e&&(this.state.delayId=e,this.emit(Pt.DelayIdChanged,this.state.delayId))}restartDelayedEvent(e){var t=this;return R(function*(){var r=t.state.expectedServerDelayLeaveTs?t.state.expectedServerDelayLeaveTs-Date.now():void 0,n=new Promise((a,s)=>{setTimeout(()=>{s(new Zs("Restart delayed event timed out before the HS responded"))},r!==void 0&&!t.state.probablyLeft?Math.min(t.delayedLeaveEventRestartLocalTimeoutMs,r):t.delayedLeaveEventRestartLocalTimeoutMs)});return yield Promise.race([t.client._unstable_restartScheduledDelayedEvent(e),n]).then(()=>(t.state.expectedServerDelayLeaveTs=Date.now()+t.delayedLeaveEventDelayMs,t.resetRateLimitCounter(K.RestartDelayedEvent),t.setAndEmitProbablyLeft(!1),De(K.RestartDelayedEvent,t.delayedLeaveEventRestartMs))).catch(a=>{t.state.expectedServerDelayLeaveTs&&t.state.expectedServerDelayLeaveTs<=Date.now()&&t.setAndEmitProbablyLeft(!0);var s=K.RestartDelayedEvent;if(t.isNotFoundError(a))return t.setAndEmitDelayId(void 0),De(K.SendDelayedEvent);if(t.isUnsupportedDelayedEndpoint(a))return{};var o=t.actionUpdateFromErrors(a,s,"restartScheduledDelayedEvent");if(o)return o;throw Error("Could not restart delayed event, even though delayed events are supported. "+a)})})()}sendScheduledDelayedLeaveEventOrFallbackToSendLeaveEvent(e){var t=this;return R(function*(){return yield t.client._unstable_sendScheduledDelayedEvent(e).then(()=>(t.state.hasMemberStateEvent=!1,t.setAndEmitDelayId(void 0),t.resetRateLimitCounter(K.SendScheduledDelayedLeaveEvent),{replace:[]})).catch(r=>{var n=K.SendLeaveEvent;if(t.isUnsupportedDelayedEndpoint(r))return{};if(t.isNotFoundError(r))return t.setAndEmitDelayId(void 0),De(n);var a=t.actionUpdateFromErrors(r,n,"sendScheduledDelayedEvent");return a||(t.logger.warn("Encountered unexpected error during SendScheduledDelayedLeaveEvent. Falling back to SendLeaveEvent",r),De(n))})})()}sendJoinEvent(){var e=this;return R(function*(){return yield e.clientSendMembership(e.makeMyMembership(e.membershipEventExpiryMs)).then(()=>{e.setAndEmitProbablyLeft(!1),e.state.startTime=Date.now(),e.state.expireUpdateIterations=1,e.state.hasMemberStateEvent=!0,e.resetRateLimitCounter(K.SendJoinEvent);var t=e.scheduler.actions.filter(r=>r.type!==K.UpdateExpiry&&r.type!==K.SendJoinEvent);return{replace:[...t,{ts:Date.now(),type:K.RestartDelayedEvent},{ts:e.computeNextExpiryActionTs(e.state.expireUpdateIterations),type:K.UpdateExpiry}]}}).catch(t=>{var r=e.actionUpdateFromErrors(t,K.SendJoinEvent,"sendStateEvent");if(r)return r;throw t})})()}updateExpiryOnJoinedEvent(){var e=this;return R(function*(){var t=e.state.expireUpdateIterations+1;return yield e.clientSendMembership(e.makeMyMembership(e.membershipEventExpiryMs*t)).then(()=>(e.resetRateLimitCounter(K.UpdateExpiry),e.state.expireUpdateIterations=t,{insert:[{ts:e.computeNextExpiryActionTs(t),type:K.UpdateExpiry}]})).catch(r=>{var n=e.actionUpdateFromErrors(r,K.UpdateExpiry,"sendStateEvent");if(n)return n;throw r})})()}sendFallbackLeaveEvent(){var e=this;return R(function*(){return yield e.clientSendMembership({}).then(()=>(e.resetRateLimitCounter(K.SendLeaveEvent),e.state.hasMemberStateEvent=!1,{replace:[]})).catch(t=>{var r=e.actionUpdateFromErrors(t,K.SendLeaveEvent,"sendStateEvent");if(r)return r;throw t})})()}makeMembershipStateKey(e,t){var r=this.slotDescription.application,n=r==="m.call"&&this.slotDescription.id==="ROOM",a=n?"":this.slotDescription.id,s="".concat(e,"_").concat(t,"_").concat(r).concat(a);return/^org\.matrix\.msc(3757|3779)\b/.exec(this.room.getVersion())?s:"_".concat(s)}makeMyMembership(e){var t,r,n=this.ownMembership,a=this.slotDescription.application==="m.call"&&this.slotDescription.id==="ROOM",s=this.rtcTransport===void 0?{focus_active:{type:"livekit",focus_selection:"oldest_membership"},foci_preferred:(t=this.fociPreferred)!==null&&t!==void 0?t:[]}:{focus_active:{type:"livekit",focus_selection:"multi_sfu"},foci_preferred:[this.rtcTransport,...(r=this.fociPreferred)!==null&&r!==void 0?r:[]]};return Wt(Wt({application:this.slotDescription.application,call_id:a?"":this.slotDescription.id,scope:"m.room",device_id:this.deviceId,membershipID:"".concat(this.userId,":").concat(this.deviceId),expires:e,"m.call.intent":this.callIntent},s),n!==void 0?{created_ts:n.createdTs()}:void 0)}isNotFoundError(e){return e instanceof ue&&e.errcode==="M_NOT_FOUND"}manageMaxDelayExceededSituation(e){if(e instanceof ue&&e.errcode==="M_UNKNOWN"&&e.data["org.matrix.msc4140.errcode"]==="M_MAX_DELAY_EXCEEDED"){var t=e.data["org.matrix.msc4140.max_delay"];return typeof t=="number"&&this.delayedLeaveEventDelayMs>t&&(this.delayedLeaveEventDelayMsOverride=t),this.logger.warn("Retry sending delayed disconnection event due to server timeout limitations:",e),!0}return!1}actionUpdateFromErrors(e,t,r){var n=this.actionUpdateFromRateLimitError(e,r,t);if(n)return n;var a=this.actionUpdateFromNetworkErrorRetry(e,t);if(a)return a}actionUpdateFromRateLimitError(e,t,r){var n;if((e instanceof Qt||e instanceof ue)&&e.isRateLimitError()){var a=(n=this.state.rateLimitRetries.get(r))!==null&&n!==void 0?n:0;if(a<this.maximumRateLimitRetryCount){var s,o=5e3;try{var l;s=(l=e.getRetryAfterMs())!==null&&l!==void 0?l:o,this.logger.info("Rate limited by server, retrying in ".concat(s,"ms"))}catch(d){this.logger.warn("Error while retrieving a rate-limit retry delay, retrying after default delay of ".concat(o),d),s=o}return this.state.rateLimitRetries.set(r,a+1),De(r,s)}throw Error("Exceeded maximum retries for "+r+" attempts (client."+t+")",{cause:e})}}actionUpdateFromNetworkErrorRetry(e,t){var r,n=(r=this.state.networkErrorRetries.get(t))!==null&&r!==void 0?r:0,a=this.networkErrorRetryMs/1e3+"s",s="("+n+"/"+this.maximumNetworkErrorRetryCount+")",o=this.networkErrorRetryMs;if(e instanceof Error&&e.name==="AbortError")o=0,this.logger.warn("Network local timeout error while sending event, immediate retry ("+s+")",e);else if(e instanceof Error&&e.message.includes("updating delayed event"))this.logger.warn("delayed event update timeout error, retrying in "+a+" "+s,e);else if(e instanceof Vr)this.logger.warn("Network connection error while sending event, retrying in "+a+" "+s,e);else if((e instanceof Qt||e instanceof ue)&&typeof e.httpStatus=="number"&&e.httpStatus>=500&&e.httpStatus<600)this.logger.warn("Server error while sending event, retrying in "+a+" "+s,e);else return;if(n<this.maximumNetworkErrorRetryCount)return this.state.networkErrorRetries.set(t,n+1),De(t,o);throw Error("Reached maximum ("+this.maximumNetworkErrorRetryCount+") retries cause by: "+e)}isUnsupportedDelayedEndpoint(e){return e instanceof Ot}resetRateLimitCounter(e){this.state.rateLimitRetries.set(e,0),this.state.networkErrorRetries.set(e,0)}get status(){var e=this.scheduler.actions;if(e.length===1){var{type:t}=e[0];switch(t){case K.SendDelayedEvent:case K.SendJoinEvent:return It.Connecting;case K.UpdateExpiry:return It.Connected;case K.SendScheduledDelayedLeaveEvent:case K.SendLeaveEvent:return It.Disconnecting}}else if(e.length===2){var r=e.map(a=>a.type);if((r.includes(K.RestartDelayedEvent)||r.includes(K.SendDelayedEvent)&&this.state.hasMemberStateEvent)&&r.includes(K.UpdateExpiry))return It.Connected}else if(e.length===3){var n=e.map(a=>a.type);if(n.filter(a=>a===K.RestartDelayedEvent).length===2&&n.includes(K.UpdateExpiry))return It.Connected}return this.scheduler.running?(this.logger.error("MembershipManager has an unknown state. Actions: ",e),It.Unknown):It.Disconnected}get probablyLeft(){return this.state.probablyLeft}get delayId(){return this.state.delayId}}class kn extends Dr{constructor(e,t,r,n,a,s){super(e,t,r,n,s),this.clientWithSticky=r,this.memberId=a,c(this,"clientSendDelayedDisconnectMembership",()=>this.clientWithSticky._unstable_sendStickyDelayedEvent(this.room.roomId,Ci,{delay:this.delayedLeaveEventDelayMs},null,M.RTCMembership,{msc4354_sticky_key:this.memberId})),c(this,"clientSendMembership",o=>this.clientWithSticky._unstable_sendStickyEvent(this.room.roomId,Ci,null,M.RTCMembership,Wt(Wt({},o),{},{msc4354_sticky_key:this.memberId})))}actionUpdateFromErrors(e,t,r){var n;return super.actionUpdateFromErrors(e,t,(n=kn.nameMap.get(r))!==null&&n!==void 0?n:"unknown")}makeMyMembership(e){var t=this.ownMembership,r=Ec(this.rtcTransport)?this.rtcTransport:void 0,n=t!=null&&t.eventId?{"m.relation":{rel_type:se.Reference,event_id:t?.eventId}}:{};return Wt({application:Wt({type:this.slotDescription.application},this.callIntent?{"m.call.intent":this.callIntent}:{}),slot_id:Ur(this.slotDescription),rtc_transports:r?[{type:r.type,livekit_service_url:r.livekit_service_url}]:[],member:{device_id:this.deviceId,user_id:this.userId,id:this.memberId},versions:[]},n)}}c(kn,"nameMap",new Map([["sendStateEvent","_unstable_sendStickyEvent"],["sendDelayedStateEvent","_unstable_sendStickyDelayedEvent"]]));var Zt=(function(i){return i.ReceivedKeys="received_keys",i.NotSupportedError="not_supported_error",i})({});function ht(i){return"".concat(i.userId,":").concat(i.deviceId,"(").concat(i.memberId,")")}class Sc{get updateEncryptionKeyThrottle(){var e,t;return(e=(t=this.joinConfig)===null||t===void 0?void 0:t.updateEncryptionKeyThrottle)!==null&&e!==void 0?e:3e3}get makeKeyDelay(){var e,t;return(e=(t=this.joinConfig)===null||t===void 0?void 0:t.makeKeyDelay)!==null&&e!==void 0?e:3e3}get useKeyDelay(){var e,t;return(e=(t=this.joinConfig)===null||t===void 0?void 0:t.useKeyDelay)!==null&&e!==void 0?e:5e3}constructor(e,t,r,n,a,s){var o=this;this.membership=e,this.getMemberships=t,this.transport=r,this.statistics=n,this.onEncryptionKeysChanged=a,c(this,"manageMediaKeys",!1),c(this,"keysEventUpdateTimeout",void 0),c(this,"makeNewKeyTimeout",void 0),c(this,"setNewKeyTimeouts",new Set),c(this,"encryptionKeys",new Map),c(this,"lastEncryptionKeyUpdateRequest",void 0),c(this,"lastMembershipFingerprints",void 0),c(this,"latestGeneratedKeyIndex",-1),c(this,"joinConfig",void 0),c(this,"logger",void 0),c(this,"joined",!1),c(this,"sendEncryptionKeysEvent",(function(){var l=R(function*(d){if(o.keysEventUpdateTimeout!==void 0&&(clearTimeout(o.keysEventUpdateTimeout),o.keysEventUpdateTimeout=void 0),o.lastEncryptionKeyUpdateRequest=Date.now(),!!o.joined){var u=o.getKeysForParticipant(o.membership);if(!u){o.logger.warn("Tried to send encryption keys event but no keys found!");return}if(typeof d!="number"&&o.latestGeneratedKeyIndex===-1){o.logger.warn("Tried to send encryption keys event but no current key index found!");return}var h=d??o.latestGeneratedKeyIndex;o.logger.info("Try sending encryption keys event. keyIndexToSend=".concat(h," (method parameter: ").concat(d,")"));var m=u[h];try{o.statistics.counters.roomEventEncryptionKeysSent+=1;var E=o.getMemberships().filter(p=>p.sender!=null).map(p=>({userId:p.sender,deviceId:p.deviceId,membershipTs:p.createdTs()}));yield o.transport.sendKey(Ao(m),h,E),o.logger.debug("sendEncryptionKeysEvent participantId=".concat(o.membership.userId,":").concat(o.membership.deviceId," numKeys=").concat(u.length," currentKeyIndex=").concat(o.latestGeneratedKeyIndex," keyIndexToSend=").concat(h))}catch(p){if(o.keysEventUpdateTimeout===void 0){var f=wo(p,5e3);o.logger.warn("Failed to send m.call.encryption_key, retrying in ".concat(f),p),o.keysEventUpdateTimeout=setTimeout(()=>{o.sendEncryptionKeysEvent()},f)}else o.logger.info("Not scheduling key resend as another re-send is already pending")}}});return function(d){return l.apply(this,arguments)}})()),c(this,"onNewKeyReceived",(l,d,u,h)=>{this.logger.debug("Received key over key transport ".concat(l.userId,":").concat(l.deviceId," at index ").concat(u)),this.setEncryptionKey(l,u,d,h)}),c(this,"onRotateKeyTimeout",()=>{if(this.manageMediaKeys){this.makeNewKeyTimeout=void 0,this.logger.info("Making new sender key for key rotation");var l=this.makeNewSenderKey(!0);this.sendEncryptionKeysEvent(l)}}),this.logger=(s??T).getChild("[EncryptionManager]")}rtcBackendIdentityFromMembershipParts(e){return"".concat(e.userId,":").concat(e.deviceId)}getEncryptionKeys(){var e=new Map;for(var[t,r]of this.encryptionKeys){var n=r.map((a,s)=>({key:a.key,membership:a.membership,keyIndex:s,rtcBackendIdentity:this.rtcBackendIdentityFromMembershipParts(a.membership)}));e.set(t,n)}return e}join(e){var t,r,n;this.joinConfig=e,this.joined=!0,this.manageMediaKeys=(t=(r=this.joinConfig)===null||r===void 0?void 0:r.manageMediaKeys)!==null&&t!==void 0?t:this.manageMediaKeys,this.transport.on(Zt.ReceivedKeys,this.onNewKeyReceived),this.transport.start(),(n=this.joinConfig)!==null&&n!==void 0&&n.manageMediaKeys&&(this.makeNewSenderKey(),this.requestSendCurrentKey())}leave(){this.encryptionKeys.set(ht(this.membership),[]),this.transport.off(Zt.ReceivedKeys,this.onNewKeyReceived),this.transport.stop(),this.makeNewKeyTimeout!==void 0&&(clearTimeout(this.makeNewKeyTimeout),this.makeNewKeyTimeout=void 0);for(var e of this.setNewKeyTimeouts)clearTimeout(e);this.setNewKeyTimeouts.clear(),this.manageMediaKeys=!1,this.joined=!1}onMembershipsUpdate(e){if(this.manageMediaKeys&&this.joined){var t=new Set(e.filter(d=>!fn(d,this.membership.userId,this.membership.deviceId)).map(ht)),r=new Set(this.getMemberships().filter(d=>!fn(d,this.membership.userId,this.membership.deviceId)).map(ht)),n=Array.from(t).some(d=>!r.has(d)),a=Array.from(r).some(d=>!t.has(d)),s=this.lastMembershipFingerprints;if(this.storeLastMembershipFingerprints(),n)this.makeNewKeyTimeout||(this.logger.debug("Member(s) have left: queueing sender key rotation"),this.makeNewKeyTimeout=setTimeout(this.onRotateKeyTimeout,this.makeKeyDelay));else if(a)this.logger.debug("New member(s) have joined: re-sending keys"),this.requestSendCurrentKey();else if(s){var o=this.lastMembershipFingerprints,l=Array.from(s).some(d=>!o.has(d))||Array.from(o).some(d=>!s.has(d));l&&(this.logger.debug("Member(s) have updated/reconnected: re-sending keys to everyone"),this.requestSendCurrentKey())}}}makeNewSenderKey(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,t=fu(16),r=this.getNewEncryptionKeyIndex();return this.logger.info("Generated new key at index "+r),this.setEncryptionKey(this.membership,r,t,Date.now(),e),r}requestSendCurrentKey(){if(this.manageMediaKeys){if(this.lastEncryptionKeyUpdateRequest&&this.lastEncryptionKeyUpdateRequest+this.updateEncryptionKeyThrottle>Date.now()){this.logger.info("Last encryption key event sent too recently: postponing"),this.keysEventUpdateTimeout===void 0&&(this.keysEventUpdateTimeout=setTimeout(()=>{this.sendEncryptionKeysEvent()},this.updateEncryptionKeyThrottle));return}this.sendEncryptionKeysEvent()}}getKeysForParticipant(e){var t;return(t=this.encryptionKeys.get(ht(e)))===null||t===void 0?void 0:t.map(r=>r.key)}storeLastMembershipFingerprints(){this.lastMembershipFingerprints=new Set(this.getMemberships().filter(e=>!fn(e,this.membership.userId,this.membership.deviceId)).map(e=>"".concat(ht(e),":").concat(e.createdTs())))}getNewEncryptionKeyIndex(){return this.latestGeneratedKeyIndex===-1?0:(this.latestGeneratedKeyIndex+1)%256}setEncryptionKey(e,t,r,n){var a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1;this.logger.debug("Setting encryption key for ".concat(e.userId,":").concat(e.deviceId," at index ").concat(t));var s=Jt(r),o=ht(e);this.encryptionKeys.has(o)||this.encryptionKeys.set(o,[]);var l=this.encryptionKeys.get(o),d=l[t];if(d){if(d.timestamp>n){this.logger.info("Ignoring new key at index ".concat(t," for ").concat(o," as it is older than existing known key"));return}if(bc(d.key,s)){d.timestamp=n;return}}if(e.userId===this.membership.userId&&e.deviceId===this.membership.deviceId&&(this.latestGeneratedKeyIndex=t),l[t]={key:s,timestamp:n,membership:e},a){var u=setTimeout(()=>{this.setNewKeyTimeouts.delete(u),this.logger.info("Delayed-emitting key changed event for ".concat(o," index ").concat(t)),this.onEncryptionKeysChanged(s,t,e,this.rtcBackendIdentityFromMembershipParts(e))},this.useKeyDelay);this.setNewKeyTimeouts.add(u)}else this.onEncryptionKeysChanged(s,t,e,this.rtcBackendIdentityFromMembershipParts(e))}}function bc(i,e){return i===e?!0:!!i&&!!e&&i.length===e.length&&i.every((t,r)=>t===e[r])}class _c{constructor(){c(this,"tsBuffer",new Map)}isOutdated(e,t){var r,n=ht(e);this.tsBuffer.has(n)||this.tsBuffer.set(n,new Map);var a=(r=this.tsBuffer.get(n))===null||r===void 0?void 0:r.get(t.keyIndex);return a&&a>t.creationTS?!0:(this.tsBuffer.get(n).set(t.keyIndex,t.creationTS),!1)}}class Rc{constructor(e,t,r,n,a,s,o){this.ownMembership=e,this.getMemberships=t,this.transport=r,this.statistics=n,this.onEncryptionKeysChanged=a,c(this,"manageMediaKeys",!1),c(this,"useHashedRtcBackendIdentity",!1),c(this,"ownRtcBackendIdentityCache",void 0),c(this,"participantKeyRings",new Map),c(this,"outboundSession",null),c(this,"currentKeyDistributionPromise",null),c(this,"useKeyDelay",5e3),c(this,"keyRotationGracePeriodMs",1e4),c(this,"needToEnsureKeyAgain",!1),c(this,"keyBuffer",new _c),c(this,"logger",void 0),c(this,"rtcIdentityProvider",void 0),c(this,"keysWithoutMatchingRTCMembership",[]),c(this,"onNewKeyReceived",(l,d,u,h)=>{var m;if(!this.manageMediaKeys){var E;(E=this.logger)===null||E===void 0||E.warn("Received key over transport ".concat(l.userId,":").concat(l.deviceId," at index ").concat(u," but media keys are disabled"));return}(m=this.logger)===null||m===void 0||m.debug("Received key over transport ".concat(l.userId,":").concat(l.deviceId," at index ").concat(u));var f=Jt(d),p={key:f,membership:l,keyIndex:u,creationTS:h},I=this.keyBuffer.isOutdated(l,p);if(!I)this.addKeyToParticipant(p.key,p.keyIndex,p.membership),this.statistics.counters.roomEventEncryptionKeysReceived+=1;else{var S;(S=this.logger)===null||S===void 0||S.info("Received an out of order key for ".concat(l.userId,":").concat(l.deviceId,", dropping it"))}}),this.logger=s?.getChild("[EncryptionManager]"),this.rtcIdentityProvider=o??gt.computeRtcIdentityRaw}getOwnRtcBackendIdentity(){var e=this;return R(function*(){if(e.ownRtcBackendIdentityCache)return e.ownRtcBackendIdentityCache;if(e.useHashedRtcBackendIdentity){var t,{userId:r,deviceId:n,memberId:a}=e.ownMembership;(t=e.logger)===null||t===void 0||t.info("Computing RTC backend identity for ".concat(r,":").concat(n,":").concat(a," (SHOULD ONLY BE CALLED ONCE)")),e.ownRtcBackendIdentityCache=yield e.rtcIdentityProvider(r,n,a)}else e.ownRtcBackendIdentityCache="".concat(e.ownMembership.userId,":").concat(e.ownMembership.deviceId);return e.ownRtcBackendIdentityCache})()}getEncryptionKeys(){return new Map(this.participantKeyRings)}checkKeysWithoutMatchingRTCMembership(){var e=this.keysWithoutMatchingRTCMembership;this.keysWithoutMatchingRTCMembership=[],e.forEach(t=>{this.addKeyToParticipant(t.key,t.keyIndex,t.membership)})}addKeyToParticipant(e,t,r){var n=this.getMemberships(),a=n.find(o=>o.userId===r.userId&&o.deviceId===r.deviceId);if(!a){var s;(s=this.logger)===null||s===void 0||s.info("No matching RTC membership for key from ".concat(r.userId,":").concat(r.deviceId,", delaying key addition")),this.keysWithoutMatchingRTCMembership.push({key:e,keyIndex:t,membership:r});return}this.addKeyToParticipantWithBackendIdentity(e,t,r,a.rtcBackendIdentity)}addKeyToParticipantWithBackendIdentity(e,t,r,n){var a=ht(r);this.participantKeyRings.has(a)||this.participantKeyRings.set(a,[]),this.participantKeyRings.get(a).push({key:e,keyIndex:t,membership:r,rtcBackendIdentity:n}),this.onEncryptionKeysChanged(e,t,r,n)}join(e){var t,r,n,a,s;this.manageMediaKeys=(t=e?.manageMediaKeys)!==null&&t!==void 0?t:!0,this.useHashedRtcBackendIdentity=(r=e?.unstableSendStickyEvents)!==null&&r!==void 0?r:!1,this.useKeyDelay=(n=e?.useKeyDelay)!==null&&n!==void 0?n:1e3,this.keyRotationGracePeriodMs=(a=e?.keyRotationGracePeriodMs)!==null&&a!==void 0?a:1e4,this.transport.on(Zt.ReceivedKeys,this.onNewKeyReceived),this.getOwnRtcBackendIdentity(),(s=this.logger)===null||s===void 0||s.info("Joining room"),this.transport.start()}leave(){this.transport.off(Zt.ReceivedKeys,this.onNewKeyReceived),this.transport.stop(),this.participantKeyRings.clear()}ensureKeyDistribution(){if(this.manageMediaKeys)if(this.currentKeyDistributionPromise==null){var e;(e=this.logger)===null||e===void 0||e.debug("No active rollout, start a new one"),this.currentKeyDistributionPromise=this.rolloutOutboundKey().then(()=>{var r;if((r=this.logger)===null||r===void 0||r.debug("Rollout completed"),this.currentKeyDistributionPromise=null,this.needToEnsureKeyAgain){var n;(n=this.logger)===null||n===void 0||n.debug("New Rollout needed"),this.needToEnsureKeyAgain=!1,this.ensureKeyDistribution()}})}else{var t;(t=this.logger)===null||t===void 0||t.debug("Rollout in progress, a new rollout will be started after the current one"),this.needToEnsureKeyAgain=!0}}onMembershipsUpdate(){var e;(e=this.logger)===null||e===void 0||e.trace("onMembershipsUpdate"),this.ensureKeyDistribution(),this.checkKeysWithoutMatchingRTCMembership()}rolloutOutboundKey(){var e=this;return R(function*(){var t,r,n=e.outboundSession==null;if(n){var a={key:e.generateRandomKey(),creationTS:Date.now(),sharedWith:[],keyId:0};e.outboundSession=a,e.addKeyToParticipantWithBackendIdentity(a.key,a.keyId,e.ownMembership,yield e.getOwnRtcBackendIdentity())}var s=e.getMemberships().filter(C=>C.sender!=null).map(C=>({userId:C.sender,deviceId:C.deviceId,membershipTs:C.createdTs()})),o=(t=(r=e.outboundSession)===null||r===void 0?void 0:r.sharedWith)!==null&&t!==void 0?t:[];o=o.filter(C=>!s.some(k=>C.userId==k.userId&&C.deviceId==k.deviceId&&C.membershipTs!=k.membershipTs));var l=o.filter(C=>!s.some(k=>C.userId==k.userId&&C.deviceId==k.deviceId&&C.membershipTs==k.membershipTs)),d=s.filter(C=>!o.some(k=>C.userId==k.userId&&C.deviceId==k.deviceId&&C.membershipTs==k.membershipTs)),u=[],h,m=!1;if(l.length>0){var E=e.createNewOutboundSession();m=!0,u=s,h=E}else if(d.length>0){var f=Date.now(),p=f-e.outboundSession.creationTS;if(p<e.keyRotationGracePeriodMs){var I;(I=e.logger)===null||I===void 0||I.debug("New joiners detected, but the key is recent enough (age:".concat(p,"), keeping it")),u=d,h=e.outboundSession}else{var S;(S=e.logger)===null||S===void 0||S.debug("New joiners detected, rotating the key");var g=e.createNewOutboundSession();m=!0,u=s,h=g}}else return;try{var _,y;if((_=e.logger)===null||_===void 0||_.trace("Sending key..."),yield e.transport.sendKey(vn(h.key),h.keyId,u),e.statistics.counters.roomEventEncryptionKeysSent+=1,h.sharedWith.push(...u),(y=e.logger)===null||y===void 0||y.trace("key index:".concat(h.keyId," sent to ").concat(h.sharedWith.map(C=>"".concat(C.userId,":").concat(C.deviceId)).join(","))),m){var b,v;(b=e.logger)===null||b===void 0||b.trace("Delay Rollout for key:".concat(h.keyId,"...")),yield jr(e.useKeyDelay),(v=e.logger)===null||v===void 0||v.trace("...Delayed rollout of index:".concat(h.keyId," ")),e.addKeyToParticipantWithBackendIdentity(h.key,h.keyId,e.ownMembership,yield e.getOwnRtcBackendIdentity())}}catch(C){var w;(w=e.logger)===null||w===void 0||w.error("Failed to rollout key",C)}})()}createNewOutboundSession(){var e,t={key:this.generateRandomKey(),creationTS:Date.now(),sharedWith:[],keyId:this.nextKeyIndex()};return(e=this.logger)===null||e===void 0||e.info("creating new outbound key index:".concat(t.keyId)),this.outboundSession=t,t}nextKeyIndex(){return this.outboundSession?(this.outboundSession.keyId+1)%256:0}generateRandomKey(){var e=new Uint8Array(16);return globalThis.crypto.getRandomValues(e),e}}class Ic extends Error{constructor(e){super(e)}get name(){return"NotSupportedError"}}class Tc extends fe{setParentLogger(e){this.logger=e.getChild("[ToDeviceKeyTransport]")}constructor(e,t,r,n,a){super(),this.membership=e,this.roomId=t,this.client=r,this.statistics=n,c(this,"logger",T),c(this,"onToDeviceEvent",s=>{if(s.getType()===M.CallEncryptionKeysPrefix){var o=this.getValidEventContent(s);o&&s.getSender()&&this.receiveCallKeyEvent(s.getSender(),o)}}),this.setParentLogger(a??T)}start(){this.client.on(x.ToDeviceEvent,this.onToDeviceEvent)}stop(){this.client.off(x.ToDeviceEvent,this.onToDeviceEvent)}sendKey(e,t,r){var n=this;return R(function*(){var a={keys:{index:t,key:e},room_id:n.roomId,member:{claimed_device_id:n.membership.deviceId,id:n.membership.memberId},session:{call_id:"",application:"m.call",scope:"m.room"},sent_ts:Date.now()},s=r.map(o=>({userId:o.userId,deviceId:o.deviceId})).filter(o=>!(o.userId==n.membership.userId&&o.deviceId==n.membership.deviceId));s.length>0?(yield n.client.encryptAndSendToDevice(M.CallEncryptionKeysPrefix,s,a).catch(o=>{var l=o.message;if(l.includes("unknown variant")&&l.includes("send_to_device")||l.includes("not supported"))throw new Ic("The widget driver does not support to-device encryption")}),n.statistics.counters.roomEventEncryptionKeysSent+=1):n.logger.warn("No targets found for sending key")})()}receiveCallKeyEvent(e,t){var r;this.statistics.counters.roomEventEncryptionKeysReceived+=1;var n=Date.now(),a=n-(typeof t.sent_ts=="number"?t.sent_ts:n);this.statistics.totals.roomEventEncryptionKeysReceivedTotalAge+=a;var s="".concat(e,":").concat(t.member.claimed_device_id);this.emit(Zt.ReceivedKeys,{userId:e,deviceId:t.member.claimed_device_id,memberId:(r=t.member.id)!==null&&r!==void 0?r:s},t.keys.key,t.keys.index,n)}getValidEventContent(e){var t=e.getContent(),r=t.room_id;if(!r){this.logger.warn("Malformed Event: invalid call encryption keys event, no roomId");return}if(r!==this.roomId){this.logger.warn("Malformed Event: Mismatch roomId");return}if(!t.keys||!t.keys.key||typeof t.keys.index!="number"){this.logger.warn("Malformed Event: Missing keys field");return}if(!t.member||!t.member.claimed_device_id){this.logger.warn("Malformed Event: Missing claimed_device_id");return}return t}}class wc extends fe{setParentLogger(e){this.logger=e.getChild("[RoomKeyTransport]")}constructor(e,t,r,n){super(),this.room=e,this.client=t,this.statistics=r,c(this,"logger",T),this.setParentLogger(n??T)}start(){this.room.on(U.Timeline,e=>{this.consumeCallEncryptionEvent(e)})}stop(){this.room.off(U.Timeline,e=>{this.consumeCallEncryptionEvent(e)})}consumeCallEncryptionEvent(e){var t=arguments,r=this;return R(function*(){var n=t.length>1&&t[1]!==void 0?t[1]:!1;if(yield r.client.decryptEventIfNeeded(e),e.isDecryptionFailure()){n?r.logger.warn("Decryption failed for event ".concat(e.getId(),": ").concat(e.decryptionFailureReason)):(r.logger.warn("Decryption failed for event ".concat(e.getId(),": ").concat(e.decryptionFailureReason," will retry once only")),setTimeout(()=>{r.consumeCallEncryptionEvent(e,!0)},1e3));return}else n&&r.logger.info("Decryption succeeded for event ".concat(e.getId()," after retry"));if(e.getType()!==M.CallEncryptionKeysPrefix)return Promise.resolve();if(!r.room)return r.logger.error("Got room state event for unknown room ".concat(e.getRoomId(),"!")),Promise.resolve();r.onEncryptionEvent(e)})()}sendKey(e,t,r){var n=this;return R(function*(){var a={keys:[{index:t,key:e}],device_id:n.client.getDeviceId(),call_id:"",sent_ts:Date.now()};try{yield n.client.sendEvent(n.room.roomId,M.CallEncryptionKeysPrefix,a)}catch(o){n.logger.error("Failed to send call encryption keys",o);var s=o;throw s.event&&n.client.cancelPendingEvent(s.event),o}})()}onEncryptionEvent(e){var t=e.getSender(),r=e.getContent(),n=r.device_id,a=r.call_id;if(!t){this.logger.warn("Received m.call.encryption_keys with no userId: callId=".concat(a));return}if(a!==""){this.logger.warn("Received m.call.encryption_keys with unsupported callId: userId=".concat(t,", deviceId=").concat(n,", callId=").concat(a));return}if(!Array.isArray(r.keys)){this.logger.warn("Received m.call.encryption_keys where keys wasn't an array: callId=".concat(a));return}if(t===this.client.getUserId()&&n===this.client.getDeviceId()){this.logger.info("Ignoring our own keys event");return}this.statistics.counters.roomEventEncryptionKeysReceived+=1;var s=Date.now()-(typeof r.sent_ts=="number"?r.sent_ts:e.getTs());this.statistics.totals.roomEventEncryptionKeysReceivedTotalAge+=s;for(var o of r.keys){if(!o){this.logger.info("Ignoring false-y key in keys event");continue}var l=o.key,d=o.index;!l||d===void 0||d===null||a===void 0||a===null||typeof n!="string"||typeof a!="string"||typeof l!="string"||typeof d!="number"?this.logger.warn("Malformed call encryption_key: userId=".concat(t,", deviceId=").concat(n,", encryptionKeyIndex=").concat(d," callId=").concat(a)):(this.logger.debug("onCallEncryption userId=".concat(t,":").concat(n," encryptionKeyIndex=").concat(d," age=").concat(s,"ms")),this.emit(Zt.ReceivedKeys,{userId:t,deviceId:n,memberId:"".concat(t,":").concat(n)},l,d,e.getTs()))}}}function Ls(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(i);e&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(i,n).enumerable})),t.push.apply(t,r)}return t}function Ds(i){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?Ls(Object(t),!0).forEach(function(r){c(i,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(t)):Ls(Object(t)).forEach(function(r){Object.defineProperty(i,r,Object.getOwnPropertyDescriptor(t,r))})}return i}var rt=(function(i){return i.MembershipsChanged="memberships_changed",i.JoinStateChanged="join_state_changed",i.EncryptionKeyChanged="encryption_key_changed",i.MembershipManagerError="membership_manager_error",i.DidSendCallNotification="did_send_call_notification",i})({});function Cc(i){var[e,t]=i.split("#");return{application:e,id:t}}function Ur(i){return"".concat(i.application,"#").concat(i.id)}var Mc={listenForStickyEvents:!0,listenForMemberStateEvents:!0};class Nr extends fe{get membershipStatus(){var e;return(e=this.membershipManager)===null||e===void 0?void 0:e.status}get probablyLeft(){var e;return(e=this.membershipManager)===null||e===void 0?void 0:e.probablyLeft}get delayId(){var e;return(e=this.membershipManager)===null||e===void 0?void 0:e.delayId}get callId(){var e;return(e=this.slotDescription)===null||e===void 0?void 0:e.id}get slotId(){return Ur(this.slotDescription)}static sessionMembershipsForSlot(e,t){var r=arguments;return R(function*(){var n=r.length>2&&r[2]!==void 0?r[2]:Mc,a=T.getChild("[MatrixRTCSession ".concat(e.roomId,"]")),s=Ac(e,n,a),o=yield Oc(e,s,t,a);return o.sort((l,d)=>l.createdTs()-d.createdTs()),o.length>1&&a.debug("Call memberships in room ".concat(e.roomId,", in order: "),o.map(l=>[l.createdTs(),l.userId])),o})()}static sessionForSlot(e,t,r,n){return new Nr(e,t,r,n)}get room(){return this.roomSubset}constructor(e,t,r,n){var a;super(),a=this,this.client=e,this.roomSubset=t,this.slotDescription=r,this.calculateMembershipsOpts=n,c(this,"membershipManager",void 0),c(this,"encryptionManager",void 0),c(this,"joinConfig",void 0),c(this,"logger",void 0),c(this,"pendingNotificationToSend",void 0),c(this,"expiryTimeout",void 0),c(this,"memberships",[]),c(this,"statistics",{counters:{roomEventEncryptionKeysSent:0,roomEventEncryptionKeysReceived:0},totals:{roomEventEncryptionKeysReceivedTotalAge:0}}),c(this,"reEmitter",new ir(this)),c(this,"onRoomMemberUpdate",()=>{this.ensureRecalculateSessionMembers()}),c(this,"onStickyEventUpdate",(s,o,l)=>{[...s,...l,...o.flatMap(d=>[d.current,d.previous])].some(d=>d.getType()===M.RTCMembership)&&this.ensureRecalculateSessionMembers()}),c(this,"_onRTCSessionMemberUpdate",R(function*(){yield a.recalculateSessionMembers()})),c(this,"recalculateSessionMembersDirty",!1),c(this,"recalculateSessionMembersPromise",void 0),c(this,"recalculateSessionMembers",R(function*(){var s,o=a.memberships;a.memberships=yield Nr.sessionMembershipsForSlot(a.room,Ur(a.slotDescription),a.calculateMembershipsOpts);var l=o.length!=a.memberships.length||o.some((E,f)=>!gt.equal(E,a.memberships[f]));if(l){var d,u;a.logger.info("Memberships for call in room ".concat(a.roomSubset.roomId," have changed: emitting (").concat(a.memberships.length," members)")),bl(a.logger,"emit MatrixRTCSessionEvent.MembershipsChanged",()=>{a.emit(rt.MembershipsChanged,o,a.memberships)}),(d=a.membershipManager)===null||d===void 0||d.onRTCSessionMemberUpdate(a.memberships);var h=(u=a.membershipManager)===null||u===void 0?void 0:u.ownMembership;if(a.pendingNotificationToSend&&h&&o.length===0){var m;h.eventId&&(m=a.joinConfig)!==null&&m!==void 0&&m.notificationType?a.sendCallNotify(h.eventId,a.joinConfig.notificationType,h.callIntent):a.logger.warn("Own membership eventId is undefined, cannot send call notification")}a.memberships.length>0&&(a.pendingNotificationToSend=void 0)}else a.logger.debug("No membership changes detected for room ".concat(a.roomSubset.roomId));(s=a.encryptionManager)===null||s===void 0||s.onMembershipsUpdate(o),a.setExpiryTimer()})),this.logger=T.getChild("[MatrixRTCSession ".concat(t.roomId,"]")),this.roomSubset.on(X.Members,this.onRoomMemberUpdate),this.roomSubset.on(ft.Update,this.onStickyEventUpdate),this.ensureRecalculateSessionMembers(),this.setExpiryTimer()}isJoined(){var e,t;return(e=(t=this.membershipManager)===null||t===void 0?void 0:t.isJoined())!==null&&e!==void 0?e:!1}stop(){var e=this;return R(function*(){var t;yield(t=e.membershipManager)===null||t===void 0?void 0:t.leave(1e3),e.expiryTimeout&&(clearTimeout(e.expiryTimeout),e.expiryTimeout=void 0),e.roomSubset.off(X.Members,e.onRoomMemberUpdate),e.roomSubset.off(ft.Update,e.onStickyEventUpdate)})()}joinRTCSession(e,t,r,n){var a;if(this.isJoined()){this.logger.info("Already joined to session in room ".concat(this.roomSubset.roomId,": ignoring join call"));return}else{this.membershipManager=n!=null&&n.unstableSendStickyEvents?new kn(n,this.roomSubset,this.client,this.slotDescription,e.memberId,this.logger):new Dr(n,this.roomSubset,this.client,this.slotDescription,this.logger),this.reEmitter.reEmit(this.membershipManager,[Pt.ProbablyLeft,Pt.StatusChanged,Pt.DelayIdChanged]);var s;if(n!=null&&n.useExperimentalToDeviceTransport){this.logger.info("Using experimental to-device transport for encryption keys"),this.logger.info("Using to-device with room fallback transport for encryption keys");var[o,l,d]=[this.roomSubset,this.client,this.statistics],u=new Tc(e,o.roomId,l,d);this.encryptionManager=new Rc(e,()=>this.memberships,u,this.statistics,(h,m,E,f)=>{this.emit(rt.EncryptionKeyChanged,h,m,E,f)},this.logger)}else s=new wc(this.roomSubset,this.client,this.statistics),this.encryptionManager=new Sc(e,()=>this.memberships,s,this.statistics,(h,m,E,f)=>{this.emit(rt.EncryptionKeyChanged,h,m,E,f)})}this.joinConfig=n,this.pendingNotificationToSend=(a=this.joinConfig)===null||a===void 0?void 0:a.notificationType,this.membershipManager.join(t,r,h=>{this.logger.error("MembershipManager encountered an unrecoverable error: ",h),this.emit(rt.MembershipManagerError,h),this.emit(rt.JoinStateChanged,this.isJoined())}),this.encryptionManager.join(n),this.emit(rt.JoinStateChanged,!0)}joinRoomSession(e,t,r){var[n,a]=[this.client.getUserId(),this.client.getDeviceId()],s="".concat(n,":").concat(a);this.joinRTCSession({userId:n,deviceId:a,memberId:s},e,t,r)}leaveRoomSession(){var e=arguments,t=this;return R(function*(){var r=e.length>0&&e[0]!==void 0?e[0]:void 0;if(!t.isJoined())return t.logger.info("Not joined to session in room ".concat(t.roomSubset.roomId,": ignoring leave call")),!1;t.logger.info("Leaving call session in room ".concat(t.roomSubset.roomId)),t.encryptionManager.leave();var n=t.membershipManager.leave(r);return t.emit(rt.JoinStateChanged,!1),yield n})()}getFocusInUse(){var e=this.getOldestMembership();return e?.getTransport(e)}getActiveFocus(){var e;return(e=this.getOldestMembership())===null||e===void 0?void 0:e.getFocusActive()}getOldestMembership(){return this.memberships[0]}getConsensusCallIntent(){var e,t=(e=this.memberships.find(r=>!!r.callIntent))===null||e===void 0?void 0:e.callIntent;if(t&&this.memberships.every(r=>!r.callIntent||r.callIntent===t))return t}updateCallIntent(e){var t=this;return R(function*(){var r,n,a=(r=t.membershipManager)===null||r===void 0?void 0:r.ownMembership;if(!a)throw Error("Not connected yet");yield(n=t.membershipManager)===null||n===void 0?void 0:n.updateCallIntent(e)})()}reemitEncryptionKeys(){var e;(e=this.encryptionManager)===null||e===void 0||e.getEncryptionKeys().forEach((t,r)=>{t.forEach(n=>{this.emit(rt.EncryptionKeyChanged,n.key,n.keyIndex,n.membership,n.rtcBackendIdentity)})})}setExpiryTimer(){this.expiryTimeout&&(clearTimeout(this.expiryTimeout),this.expiryTimeout=void 0);var e;for(var t of this.memberships){var r=t.getMsUntilExpiry();r!==void 0&&(e===void 0||r<e)&&(e=r)}e!=null&&(this.expiryTimeout=setTimeout(this.ensureRecalculateSessionMembers.bind(this),e))}sendCallNotify(e,t,r){var n=this,a=(function(){var s=R(function*(){var o={"m.mentions":{user_ids:[],room:!0},notification_type:t,"m.relates_to":{event_id:e,rel_type:se.Reference},sender_ts:Date.now(),lifetime:3e4};r&&(o["m.call.intent"]=r);var l=yield n.client.sendEvent(n.roomSubset.roomId,M.RTCNotification,o);return{response:l,content:o}});return function(){return s.apply(this,arguments)}})();a().then(s=>{var o=Ds(Ds({},s.response),s.content);this.emit(rt.DidSendCallNotification,o)}).catch(s=>{var[o,l]=s;return this.logger.error("Failed to send call notification",o,l)})}ensureRecalculateSessionMembers(){this.recalculateSessionMembersPromise===void 0?this.recalculateSessionMembersPromise=this.recalculateSessionMembers().then(()=>{this.recalculateSessionMembersPromise=void 0,this.recalculateSessionMembersDirty&&(this.ensureRecalculateSessionMembers(),this.recalculateSessionMembersDirty=!1)}):this.recalculateSessionMembersDirty=!0}}function Oc(i,e,t,r){return Mi.apply(this,arguments)}function Mi(){return Mi=R(function*(i,e,t,r){var n=[];for(var a of e){var s=a.getContent();if(kc(s,r))try{var o=gt.membershipDataFromMatrixEvent(a),l=new gt(a,o,yield gt.computeRtcBackendIdentity(a,o),r);Pc(l,i,t,r)&&n.push(l)}catch(d){r.warn("Couldn't construct call membership: ",d)}}return n}),Mi.apply(this,arguments)}function kc(i,e){var t=Object.keys(i).filter(r=>r!=="msc4354_sticky_key").length;return t===0?!1:t>1&&"application"in i?!0:(t===1&&"memberships"in i&&e.warn("Legacy event found. Those are ignored, they do not contribute to the MatrixRTC session"),!1)}function Pc(i,e,t,r){var n;return i.slotId!==t?(r.info("Ignoring membership of user ".concat(i.userId," for a different slot: user: ").concat(JSON.stringify(i.slotDescription),", slotId: ").concat(t,")")),!1):i.isExpired()?(r.info("Ignoring expired device membership ".concat(i.userId,"/").concat(i.deviceId)),!1):e.hasMembershipState((n=i.userId)!==null&&n!==void 0?n:"",J.Join)?!0:(r.info("Ignoring membership of user ".concat(i.userId," who is not in the room.")),!1)}function Ac(i,e,t){var{listenForStickyEvents:r,listenForMemberStateEvents:n}=e,a=[];if(r&&(a=[...i._unstable_getStickyEvents()].filter(l=>l.getType()===M.RTCMembership)),n){var s=i.getLiveTimeline().getState(N.FORWARDS);if(!s)return t.warn("Couldn't get state for room "+i.roomId+"using empty membership array"),[];var o=s.getStateEvents(M.GroupCallMemberPrefix);a=a.concat(o.filter(l=>!a.some(d=>d.getContent().msc4354_sticky_key===l.getStateKey())))}return a}var Us=(function(i){return i.SessionStarted="session_started",i.SessionEnded="session_ended",i})({});class Lc extends fe{constructor(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{application:"m.call",id:"ROOM"};super(),this.client=t,this.slotDescription=r,c(this,"roomSessions",new Map),c(this,"logger",void 0),c(this,"onRoom",n=>{this.refreshRoom(n)}),c(this,"onEvent",n=>{if(n.unstableStickyExpiresAt&&n.getType()===M.RTCMembership){var a=this.client.getRoom(n.getRoomId());a&&this.refreshRoom(a)}}),c(this,"onRoomState",n=>{if(n.getType()===M.GroupCallMemberPrefix){var a=this.client.getRoom(n.getRoomId());if(!a){this.logger.error("Got room state event for unknown room ".concat(n.getRoomId(),"!"));return}this.refreshRoom(a)}}),this.logger=e.getChild("[MatrixRTCSessionManager]")}start(){for(var e of(t=this.client.getRooms())!==null&&t!==void 0?t:[]){var t,r=Nr.sessionForSlot(this.client,e,this.slotDescription);r.memberships.length>0&&this.roomSessions.set(e.roomId,r)}this.client.on(x.Room,this.onRoom),this.client.on(x.Event,this.onEvent),this.client.on(X.Events,this.onRoomState)}stop(){for(var e of this.roomSessions.values())e.stop();this.roomSessions.clear(),this.client.off(x.Room,this.onRoom),this.client.off(x.Event,this.onEvent),this.client.off(X.Events,this.onRoomState)}getActiveRoomSession(e){return this.roomSessions.get(e.roomId)}getRoomSession(e){return this.roomSessions.has(e.roomId)||this.roomSessions.set(e.roomId,Nr.sessionForSlot(this.client,e,this.slotDescription)),this.roomSessions.get(e.roomId)}refreshRoom(e){var t=this;return R(function*(){var r=!t.roomSessions.has(e.roomId),n=t.getRoomSession(e),a=n.memberships.length>0&&!r;yield n._onRTCSessionMemberUpdate().catch(o=>{t.logger.error("Error updating RTC session members for ".concat(e.roomId,": ").concat(o))});var s=n.memberships.length>0;a&&!s?(t.logger.trace("Session ended for ".concat(e.roomId," (").concat(n.memberships.length," members)")),t.emit(Us.SessionEnded,e.roomId,t.roomSessions.get(e.roomId))):!a&&s&&(t.logger.trace("Session started for ".concat(e.roomId," (").concat(n.memberships.length," members)")),t.emit(Us.SessionStarted,e.roomId,t.roomSessions.get(e.roomId)))})()}}function Xn(i){return e=>{var t,r;return((t=e.content)===null||t===void 0||(t=t["m.relates_to"])===null||t===void 0?void 0:t.event_id)!==i||((r=e.content)===null||r===void 0||(r=r["m.relates_to"])===null||r===void 0?void 0:r.rel_type)===re.name}}class Dc extends Error{}Dc.prototype.name="InvalidTokenError";var Uc={debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}},ze,Ye,wn=(i=>(i[i.NONE=0]="NONE",i[i.ERROR=1]="ERROR",i[i.WARN=2]="WARN",i[i.INFO=3]="INFO",i[i.DEBUG=4]="DEBUG",i))(wn||{});(i=>{function e(){ze=3,Ye=Uc}i.reset=e;function t(n){if(!(0<=n&&n<=4))throw new Error("Invalid log level");ze=n}i.setLevel=t;function r(n){Ye=n}i.setLogger=r})(wn||(wn={}));var Hr=class Je{constructor(e){this._name=e}debug(...e){ze>=4&&Ye.debug(Je._format(this._name,this._method),...e)}info(...e){ze>=3&&Ye.info(Je._format(this._name,this._method),...e)}warn(...e){ze>=2&&Ye.warn(Je._format(this._name,this._method),...e)}error(...e){ze>=1&&Ye.error(Je._format(this._name,this._method),...e)}throw(e){throw this.error(e),e}create(e){const t=Object.create(this);return t._method=e,t.debug("begin"),t}static createStatic(e,t){const r=new Je(`${e}.${t}`);return r.debug("begin"),r}static _format(e,t){const r=`[${e}]`;return t?`${r} ${t}:`:r}static debug(e,...t){ze>=4&&Ye.debug(Je._format(e),...t)}static info(e,...t){ze>=3&&Ye.info(Je._format(e),...t)}static warn(e,...t){ze>=2&&Ye.warn(Je._format(e),...t)}static error(e,...t){ze>=1&&Ye.error(Je._format(e),...t)}};wn.reset();var Ns=class extends Error{constructor(i,e){var t,r,n;if(super(i.error_description||i.error||""),this.form=e,this.name="ErrorResponse",!i.error)throw Hr.error("ErrorResponse","No error passed"),new Error("No error passed");this.error=i.error,this.error_description=(t=i.error_description)!=null?t:null,this.error_uri=(r=i.error_uri)!=null?r:null,this.state=i.userState,this.session_state=(n=i.session_state)!=null?n:null,this.url_state=i.url_state}},Nc=class extends Error{constructor(i){super(i),this.name="ErrorTimeout"}},xc=class{constructor(){this._logger=new Hr("InMemoryWebStorage"),this._data={}}clear(){this._logger.create("clear"),this._data={}}getItem(i){return this._logger.create(`getItem('${i}')`),this._data[i]}setItem(i,e){this._logger.create(`setItem('${i}')`),this._data[i]=e}removeItem(i){this._logger.create(`removeItem('${i}')`),delete this._data[i]}get length(){return Object.getOwnPropertyNames(this._data).length}key(i){return Object.getOwnPropertyNames(this._data)[i]}},Fc=class extends Error{constructor(i,e){super(e),this.name="ErrorDPoPNonce",this.nonce=i}},Bc=class{constructor(i=[],e=null,t={}){this._jwtHandler=e,this._extraHeaders=t,this._logger=new Hr("JsonService"),this._contentTypes=[],this._contentTypes.push(...i,"application/json"),e&&this._contentTypes.push("application/jwt")}async fetchWithTimeout(i,e={}){const{timeoutInSeconds:t,...r}=e;if(!t)return await fetch(i,r);const n=new AbortController,a=setTimeout(()=>n.abort(),t*1e3);try{return await fetch(i,{...e,signal:n.signal})}catch(s){throw s instanceof DOMException&&s.name==="AbortError"?new Nc("Network timed out"):s}finally{clearTimeout(a)}}async getJson(i,{token:e,credentials:t,timeoutInSeconds:r}={}){const n=this._logger.create("getJson"),a={Accept:this._contentTypes.join(", ")};e&&(n.debug("token passed, setting Authorization header"),a.Authorization="Bearer "+e),this.appendExtraHeaders(a);let s;try{n.debug("url:",i),s=await this.fetchWithTimeout(i,{method:"GET",headers:a,timeoutInSeconds:r,credentials:t})}catch(d){throw n.error("Network Error"),d}n.debug("HTTP response received, status",s.status);const o=s.headers.get("Content-Type");if(o&&!this._contentTypes.find(d=>o.startsWith(d))&&n.throw(new Error(`Invalid response Content-Type: ${o??"undefined"}, from URL: ${i}`)),s.ok&&this._jwtHandler&&o?.startsWith("application/jwt"))return await this._jwtHandler(await s.text());let l;try{l=await s.json()}catch(d){throw n.error("Error parsing JSON response",d),s.ok?d:new Error(`${s.statusText} (${s.status})`)}if(!s.ok)throw n.error("Error from server:",l),l.error?new Ns(l):new Error(`${s.statusText} (${s.status}): ${JSON.stringify(l)}`);return l}async postForm(i,{body:e,basicAuth:t,timeoutInSeconds:r,initCredentials:n,extraHeaders:a}){const s=this._logger.create("postForm"),o={Accept:this._contentTypes.join(", "),"Content-Type":"application/x-www-form-urlencoded",...a};t!==void 0&&(o.Authorization="Basic "+t),this.appendExtraHeaders(o);let l;try{s.debug("url:",i),l=await this.fetchWithTimeout(i,{method:"POST",headers:o,body:e,timeoutInSeconds:r,credentials:n})}catch(m){throw s.error("Network error"),m}s.debug("HTTP response received, status",l.status);const d=l.headers.get("Content-Type");if(d&&!this._contentTypes.find(m=>d.startsWith(m)))throw new Error(`Invalid response Content-Type: ${d??"undefined"}, from URL: ${i}`);const u=await l.text();let h={};if(u)try{h=JSON.parse(u)}catch(m){throw s.error("Error parsing JSON response",m),l.ok?m:new Error(`${l.statusText} (${l.status})`)}if(!l.ok){if(s.error("Error from server:",h),l.headers.has("dpop-nonce")){const m=l.headers.get("dpop-nonce");throw new Fc(m,`${JSON.stringify(h)}`)}throw h.error?new Ns(h,e):new Error(`${l.statusText} (${l.status}): ${JSON.stringify(h)}`)}return h}appendExtraHeaders(i){const e=this._logger.create("appendExtraHeaders"),t=Object.keys(this._extraHeaders),r=["authorization","accept","content-type"];t.length!==0&&t.forEach(n=>{if(r.includes(n.toLocaleLowerCase())){e.warn("Protected header could not be overridden",n,r);return}const a=typeof this._extraHeaders[n]=="function"?this._extraHeaders[n]():this._extraHeaders[n];a&&a!==""&&(i[n]=a)})}},jc=class{constructor(i){this._settings=i,this._logger=new Hr("MetadataService"),this._signingKeys=null,this._metadata=null,this._metadataUrl=this._settings.metadataUrl,this._jsonService=new Bc(["application/jwk-set+json"],null,this._settings.extraHeaders),this._settings.signingKeys&&(this._logger.debug("using signingKeys from settings"),this._signingKeys=this._settings.signingKeys),this._settings.metadata&&(this._logger.debug("using metadata from settings"),this._metadata=this._settings.metadata),this._settings.fetchRequestCredentials&&(this._logger.debug("using fetchRequestCredentials from settings"),this._fetchRequestCredentials=this._settings.fetchRequestCredentials)}resetSigningKeys(){this._signingKeys=null}async getMetadata(){const i=this._logger.create("getMetadata");if(this._metadata)return i.debug("using cached values"),this._metadata;if(!this._metadataUrl)throw i.throw(new Error("No authority or metadataUrl configured on settings")),null;i.debug("getting metadata from",this._metadataUrl);const e=await this._jsonService.getJson(this._metadataUrl,{credentials:this._fetchRequestCredentials,timeoutInSeconds:this._settings.requestTimeoutInSeconds});return i.debug("merging remote JSON with seed metadata"),this._metadata=Object.assign({},this._settings.metadataSeed,e),this._metadata}getIssuer(){return this._getMetadataProperty("issuer")}getAuthorizationEndpoint(){return this._getMetadataProperty("authorization_endpoint")}getUserInfoEndpoint(){return this._getMetadataProperty("userinfo_endpoint")}getTokenEndpoint(i=!0){return this._getMetadataProperty("token_endpoint",i)}getCheckSessionIframe(){return this._getMetadataProperty("check_session_iframe",!0)}getEndSessionEndpoint(){return this._getMetadataProperty("end_session_endpoint",!0)}getRevocationEndpoint(i=!0){return this._getMetadataProperty("revocation_endpoint",i)}getKeysEndpoint(i=!0){return this._getMetadataProperty("jwks_uri",i)}async _getMetadataProperty(i,e=!1){const t=this._logger.create(`_getMetadataProperty('${i}')`),r=await this.getMetadata();if(t.debug("resolved"),r[i]===void 0){if(e===!0){t.warn("Metadata does not contain optional property");return}t.throw(new Error("Metadata does not contain property "+i))}return r[i]}async getSigningKeys(){const i=this._logger.create("getSigningKeys");if(this._signingKeys)return i.debug("returning signingKeys from cache"),this._signingKeys;const e=await this.getKeysEndpoint(!1);i.debug("got jwks_uri",e);const t=await this._jsonService.getJson(e,{timeoutInSeconds:this._settings.requestTimeoutInSeconds});if(i.debug("got key set",t),!Array.isArray(t.keys))throw i.throw(new Error("Missing keys on keyset")),null;return this._signingKeys=t.keys,this._signingKeys}},Kc=class{constructor({prefix:i="oidc.",store:e=localStorage}={}){this._logger=new Hr("WebStorageStateStore"),this._store=e,this._prefix=i}async set(i,e){this._logger.create(`set('${i}')`),i=this._prefix+i,await this._store.setItem(i,e)}async get(i){return this._logger.create(`get('${i}')`),i=this._prefix+i,await this._store.getItem(i)}async remove(i){this._logger.create(`remove('${i}')`),i=this._prefix+i;const e=await this._store.getItem(i);return await this._store.removeItem(i),e}async getAllKeys(){this._logger.create("getAllKeys");const i=await this._store.length,e=[];for(let t=0;t<i;t++){const r=await this._store.key(t);r&&r.indexOf(this._prefix)===0&&e.push(r.substr(this._prefix.length))}return e}},Vc="code",qc="openid",Hc="client_secret_post",Gc=900,$c=class{constructor({authority:i,metadataUrl:e,metadata:t,signingKeys:r,metadataSeed:n,client_id:a,client_secret:s,response_type:o=Vc,scope:l=qc,redirect_uri:d,post_logout_redirect_uri:u,client_authentication:h=Hc,prompt:m,display:E,max_age:f,ui_locales:p,acr_values:I,resource:S,response_mode:g,filterProtocolClaims:_=!0,loadUserInfo:y=!1,requestTimeoutInSeconds:b,staleStateAgeInSeconds:v=Gc,mergeClaimsStrategy:w={array:"replace"},disablePKCE:C=!1,stateStore:k,revokeTokenAdditionalContentTypes:P,fetchRequestCredentials:D,refreshTokenAllowedScope:B,extraQueryParams:Z={},extraTokenParams:ge={},extraHeaders:L={},dpop:F,omitScopeWhenRequesting:j=!1}){var $;if(this.authority=i,e?this.metadataUrl=e:(this.metadataUrl=i,i&&(this.metadataUrl.endsWith("/")||(this.metadataUrl+="/"),this.metadataUrl+=".well-known/openid-configuration")),this.metadata=t,this.metadataSeed=n,this.signingKeys=r,this.client_id=a,this.client_secret=s,this.response_type=o,this.scope=l,this.redirect_uri=d,this.post_logout_redirect_uri=u,this.client_authentication=h,this.prompt=m,this.display=E,this.max_age=f,this.ui_locales=p,this.acr_values=I,this.resource=S,this.response_mode=g,this.filterProtocolClaims=_??!0,this.loadUserInfo=!!y,this.staleStateAgeInSeconds=v,this.mergeClaimsStrategy=w,this.omitScopeWhenRequesting=j,this.disablePKCE=!!C,this.revokeTokenAdditionalContentTypes=P,this.fetchRequestCredentials=D||"same-origin",this.requestTimeoutInSeconds=b,k)this.stateStore=k;else{const G=typeof window<"u"?window.localStorage:new xc;this.stateStore=new Kc({store:G})}if(this.refreshTokenAllowedScope=B,this.extraQueryParams=Z,this.extraTokenParams=ge,this.extraHeaders=L,this.dpop=F,this.dpop&&!(($=this.dpop)!=null&&$.store))throw new Error("A DPoPStore is required when dpop is enabled")}},xs=(function(i){return i.NotSupported="OIDC authentication not supported",i.Misconfigured="OIDC is misconfigured",i.General="Something went wrong with OIDC discovery",i.OpSupport="Configured OIDC OP does not support required functions",i.DynamicRegistrationNotSupported="Dynamic registration not supported",i.DynamicRegistrationFailed="Dynamic registration failed",i.DynamicRegistrationInvalid="Dynamic registration invalid response",i.CodeExchangeFailed="Failed to exchange code for token",i.InvalidBearerTokenResponse="Invalid bearer token response",i.InvalidIdToken="Invalid ID token",i.MissingOrInvalidStoredState="State required to finish logging in is not found in storage.",i})({}),Wc=i=>!!i&&typeof i=="object"&&!Array.isArray(i),on=(i,e)=>!i[e]||!mn(i,e)?(T.error("Missing or invalid property: ".concat(e)),!1):!0,mn=(i,e)=>i[e]&&typeof i[e]!="string"?(T.error("Invalid property: ".concat(e)),!1):!0,Fs=(i,e)=>i[e]&&(!Array.isArray(i[e])||!i[e].every(t=>typeof t=="string"))?(T.error("Invalid property: ".concat(e)),!1):!0,Qn=(i,e,t)=>{var r=i[e];return!r||!Array.isArray(r)||!r.includes(t)?(T.error("Invalid property: ".concat(e,". ").concat(t," is required.")),!1):!0},Jc=i=>{if(!Wc(i))throw T.error("Issuer configuration not found or malformed"),new Error(xs.OpSupport);var e=[on(i,"issuer"),on(i,"authorization_endpoint"),on(i,"token_endpoint"),on(i,"revocation_endpoint"),mn(i,"registration_endpoint"),mn(i,"account_management_uri"),mn(i,"device_authorization_endpoint"),Fs(i,"account_management_actions_supported"),Qn(i,"response_types_supported","code"),Qn(i,"grant_types_supported",Yc.AuthorizationCode),Qn(i,"code_challenge_methods_supported","S256"),Fs(i,"prompt_values_supported")].some(t=>!t);if(!e)return i;throw T.error("Issuer configuration not valid"),new Error(xs.OpSupport)};function Bs(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(i);e&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(i,n).enumerable})),t.push.apply(t,r)}return t}function js(i){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?Bs(Object(t),!0).forEach(function(r){c(i,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(t)):Bs(Object(t)).forEach(function(r){Object.defineProperty(i,r,Object.getOwnPropertyDescriptor(t,r))})}return i}var zc=(function(){var i=R(function*(e){var t=new URL(".well-known/openid-configuration",e),r=yield fetch(t,{method:O.Get,signal:Fi(5e3)}),n=yield r.json();return qo(n)});return function(t){return i.apply(this,arguments)}})(),qo=(function(){var i=R(function*(e){var t=Jc(e),r=new $c({authority:t.issuer,metadata:t,redirect_uri:"",client_id:""}),n=new jc(r);return js(js({},t),{},{signingKeys:yield n.getSigningKeys()})});return function(t){return i.apply(this,arguments)}})(),Yc=(function(i){return i.AuthorizationCode="authorization_code",i.RefreshToken="refresh_token",i.DeviceAuthorization="urn:ietf:params:oauth:grant-type:device_code",i})({}),Xc=["server","limit","since"];function Ks(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(i);e&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(i,n).enumerable})),t.push.apply(t,r)}return t}function oe(i){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?Ks(Object(t),!0).forEach(function(r){c(i,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(t)):Ks(Object(t)).forEach(function(r){Object.defineProperty(i,r,Object.getOwnPropertyDescriptor(t,r))})}return i}var Qc=3e3,Vs=600*1e3;new pe("last_seen_user_agent","org.matrix.msc3852.last_seen_user_agent");var xr=(function(i){return i.Chronological="chronological",i.Detached="detached",i})({});new er("m.get_login_token","org.matrix.msc3882.get_login_token");var Zc="uk.half-shot.msc2666",eh="uk.half-shot.msc2666.mutual_rooms",th="uk.half-shot.msc2666.query_mutual_rooms",Ve="org.matrix.msc4140",qs="org.matrix.msc4354",rh="uk.tcpip.msc4133",nh="uk.tcpip.msc4133.stable",We="$",x=(function(i){return i.Sync="sync",i.Event="event",i.ToDeviceEvent="toDeviceEvent",i.ReceivedToDeviceMessage="receivedToDeviceMessage",i.AccountData="accountData",i.Room="Room",i.DeleteRoom="deleteRoom",i.SyncUnexpectedError="sync.unexpectedError",i.ClientWellKnown="WellKnown.client",i.ReceivedVoipEvent="received_voip_event",i.TurnServers="turnServers",i.TurnServersError="turnServers.error",i})({}),Hs=new pe("action","org.matrix.msc3824.action");class ih extends fe{constructor(e){var t,r,n,a,s,o;super(),n=this,c(this,"logger",void 0),c(this,"reEmitter",new ir(this)),c(this,"olmVersion",null),c(this,"usingExternalCrypto",!1),c(this,"_store",void 0),c(this,"deviceId",void 0),c(this,"credentials",void 0),c(this,"legacyPickleKey",void 0),c(this,"scheduler",void 0),c(this,"clientRunning",!1),c(this,"timelineSupport",!1),c(this,"urlPreviewCache",{}),c(this,"identityServer",void 0),c(this,"http",void 0),c(this,"cryptoBackend",void 0),c(this,"enableEncryptedStateEvents",void 0),c(this,"cryptoCallbacks",void 0),c(this,"callEventHandler",void 0),c(this,"groupCallEventHandler",void 0),c(this,"supportsCallTransfer",!1),c(this,"forceTURN",!1),c(this,"iceCandidatePoolSize",0),c(this,"idBaseUrl",void 0),c(this,"baseUrl",void 0),c(this,"isVoipWithNoMediaAllowed",void 0),c(this,"disableVoip",void 0),c(this,"useLivekitForGroupCalls",void 0),c(this,"canSupportVoip",!1),c(this,"peekSync",null),c(this,"isGuestAccount",!1),c(this,"ongoingScrollbacks",{}),c(this,"notifTimelineSet",null),c(this,"legacyCryptoStore",void 0),c(this,"verificationMethods",void 0),c(this,"fallbackICEServerAllowed",!1),c(this,"syncApi",void 0),c(this,"roomNameGenerator",void 0),c(this,"pushRules",void 0),c(this,"syncLeftRoomsPromise",void 0),c(this,"syncedLeftRooms",!1),c(this,"clientOpts",void 0),c(this,"clientWellKnownIntervalID",void 0),c(this,"canResetTimelineCallback",void 0),c(this,"canSupport",new Map),c(this,"pushProcessor",new qe(this)),c(this,"serverVersionsPromise",void 0),c(this,"clientWellKnown",void 0),c(this,"clientWellKnownPromise",void 0),c(this,"turnServers",[]),c(this,"turnServersExpiry",0),c(this,"checkTurnServersIntervalID",void 0),c(this,"txnCtr",0),c(this,"mediaHandler",new zu(this)),c(this,"sessionId",void 0),c(this,"eventsBeingEncrypted",new Set),c(this,"useE2eForGroupCall",!0),c(this,"toDeviceMessageQueue",void 0),c(this,"livekitServiceURL",void 0),c(this,"_secretStorage",void 0),c(this,"ignoredInvites",void 0),c(this,"matrixRTC",void 0),c(this,"serverCapabilitiesService",void 0),c(this,"startCallEventHandler",()=>{this.isInitialSyncComplete()&&(_i()&&(this.callEventHandler.start(),this.groupCallEventHandler.start()),this.off(x.Sync,this.startCallEventHandler))}),c(this,"startMatrixRTC",()=>{this.isInitialSyncComplete()&&(this.matrixRTC.start(),this.off(x.Sync,this.startMatrixRTC))}),c(this,"fixupRoomNotifications",()=>{if(this.isInitialSyncComplete()){var d,u=((d=this.getRooms())!==null&&d!==void 0?d:[]).filter(E=>E.getUnreadNotificationCount(Q.Total)>0);for(var h of u){var m=this.getSafeUserId();h.fixupNotifications(m)}this.off(x.Sync,this.fixupRoomNotifications)}}),this.logger=(t=e.logger)!==null&&t!==void 0?t:T,e.baseUrl=Dn(e.baseUrl),e.idBaseUrl=Dn(e.idBaseUrl),this.baseUrl=e.baseUrl,this.idBaseUrl=e.idBaseUrl,this.identityServer=e.identityServer,this.usingExternalCrypto=(r=e.usingExternalCrypto)!==null&&r!==void 0?r:!1,this.store=e.store||new eu,this.deviceId=e.deviceId||null,this.sessionId=_n(10);var l=e.userId||null;this.credentials={userId:l},this.http=new jd(this,{fetchFn:e.fetchFn,baseUrl:e.baseUrl,idBaseUrl:e.idBaseUrl,accessToken:e.accessToken,refreshToken:e.refreshToken,tokenRefreshFunction:e.tokenRefreshFunction,prefix:ce.V3,onlyData:!0,extraParams:e.queryParams,localTimeoutMs:e.localTimeoutMs,useAuthorizationHeader:e.useAuthorizationHeader,logger:this.logger}),e.pickleKey&&(this.legacyPickleKey=e.pickleKey),this.useLivekitForGroupCalls=!!e.useLivekitForGroupCalls,this.scheduler=e.scheduler,this.scheduler&&this.scheduler.setProcessFunction((function(){var d=R(function*(u){var h=n.getRoom(u.getRoomId());u.status!==q.SENDING&&n.updatePendingEventStatus(h,u,q.SENDING);var m=yield n.sendEventHttpRequest(u);return h&&h.updatePendingEvent(u,q.SENT,m.event_id),m});return function(u){return d.apply(this,arguments)}})()),this.disableVoip=(a=e.disableVoip)!==null&&a!==void 0?a:!1,!this.disableVoip&&_i()&&(this.callEventHandler=new bu(this),this.groupCallEventHandler=new _u(this),this.canSupportVoip=!0,this.on(x.Sync,this.startCallEventHandler)),this.matrixRTC=new Lc(this.logger,this),this.serverCapabilitiesService=new Hd(this.logger,this.http),this.on(x.Sync,this.fixupRoomNotifications),this.timelineSupport=!!e.timelineSupport,this.legacyCryptoStore=e.cryptoStore,this.verificationMethods=e.verificationMethods,this.cryptoCallbacks=e.cryptoCallbacks||{},this.enableEncryptedStateEvents=(s=e.enableEncryptedStateEvents)!==null&&s!==void 0?s:!1,this.forceTURN=e.forceTURN||!1,this.iceCandidatePoolSize=e.iceCandidatePoolSize===void 0?0:e.iceCandidatePoolSize,this.supportsCallTransfer=e.supportsCallTransfer||!1,this.fallbackICEServerAllowed=e.fallbackICEServerAllowed||!1,this.isVoipWithNoMediaAllowed=e.isVoipWithNoMediaAllowed||!1,e.useE2eForGroupCall!==void 0&&(this.useE2eForGroupCall=e.useE2eForGroupCall),this.livekitServiceURL=e.livekitServiceURL,this.roomNameGenerator=e.roomNameGenerator,this.toDeviceMessageQueue=new ic(this,this.logger),this.on(ee.Decrypted,d=>{ah(this,d)}),this.ignoredInvites=new ac(this),this._secretStorage=new hc(this,(o=e.cryptoCallbacks)!==null&&o!==void 0?o:{}),this.setMaxListeners(0)}set store(e){this._store=e,this._store.setUserCreator(t=>Lt.createUser(t,this))}get store(){return this._store}startClient(e){var t=this;return R(function*(){if(!t.clientRunning){t.clientRunning=!0,t.on(x.Sync,t.startMatrixRTC);var r=t.getUserId();r&&t.store.storeUser(new Lt(r)),t.supportsVoip()&&(t.checkTurnServersIntervalID=setInterval(()=>{t.checkTurnServers()},Vs),t.checkTurnServers()),t.syncApi&&(t.logger.error("Still have sync object whilst not running: stopping old one"),t.syncApi.stop());try{yield t.getVersions();var{threads:n,list:a,fwdPagination:s}=yield t.doesServerSupportThread();le.setServerSideSupport(n),le.setServerSideListSupport(a),le.setServerSideFwdPaginationSupport(s)}catch(o){t.logger.error("Can't fetch server versions, continuing to initialise sync, this will be retried later",o)}t.clientOpts=e??{},t.clientOpts.slidingSync?t.syncApi=new rc(t.clientOpts.slidingSync,t,t.clientOpts,t.buildSyncApiOptions()):t.syncApi=new Zr(t,t.clientOpts,t.buildSyncApiOptions()),t.syncApi.sync().catch(o=>t.logger.info("Sync startup aborted with an error:",o)),t.clientOpts.clientWellKnownPollPeriod!==void 0&&(t.clientWellKnownIntervalID=setInterval(()=>{t.fetchClientWellKnown()},1e3*t.clientOpts.clientWellKnownPollPeriod),t.fetchClientWellKnown()),t.toDeviceMessageQueue.start(),t.serverCapabilitiesService.start()}})()}buildSyncApiOptions(){return{cryptoCallbacks:this.cryptoBackend,canResetEntireTimeline:e=>this.canResetTimelineCallback?this.canResetTimelineCallback(e):!1,logger:this.logger.getChild("sync")}}stopClient(){var e,t,r,n,a;(e=this.cryptoBackend)===null||e===void 0||e.stop(),this.off(x.Sync,this.startMatrixRTC),this.clientRunning&&(this.logger.debug("stopping MatrixClient"),this.clientRunning=!1,(t=this.syncApi)===null||t===void 0||t.stop(),this.syncApi=void 0,(r=this.peekSync)===null||r===void 0||r.stopPeeking(),(n=this.callEventHandler)===null||n===void 0||n.stop(),(a=this.groupCallEventHandler)===null||a===void 0||a.stop(),this.callEventHandler=void 0,this.groupCallEventHandler=void 0,globalThis.clearInterval(this.checkTurnServersIntervalID),this.checkTurnServersIntervalID=void 0,this.clientWellKnownIntervalID!==void 0&&globalThis.clearInterval(this.clientWellKnownIntervalID),this.toDeviceMessageQueue.stop(),this.matrixRTC.stop(),this.serverCapabilitiesService.stop())}clearStores(){var e=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(this.clientRunning)throw new Error("Cannot clear stores while client is running");var r=[];r.push(this.store.deleteAllData()),this.legacyCryptoStore&&r.push(this.legacyCryptoStore.deleteAllData());var n=(function(){var a=R(function*(){var s;try{if(s=globalThis.indexedDB,!s)return}catch{return}var o=function*(m){var E=new Promise((f,p)=>{e.logger.info("Removing IndexedDB instance ".concat(m));var I=s.deleteDatabase(m);I.onsuccess=S=>{e.logger.info("Removed IndexedDB instance ".concat(m)),f(0)},I.onerror=S=>{e.logger.warn("Failed to remove IndexedDB instance ".concat(m,":"),S),f(0)},I.onblocked=S=>{e.logger.info("cannot yet remove IndexedDB instance ".concat(m))}});yield E};for(var l of["".concat((d=t.cryptoDatabasePrefix)!==null&&d!==void 0?d:zn,"::matrix-sdk-crypto"),"".concat((u=t.cryptoDatabasePrefix)!==null&&u!==void 0?u:zn,"::matrix-sdk-crypto-meta")]){var d,u;yield*o(l)}});return function(){return a.apply(this,arguments)}})();return r.push(n()),Promise.all(r).then()}getUserId(){var e,t;return(e=(t=this.credentials)===null||t===void 0?void 0:t.userId)!==null&&e!==void 0?e:null}getSafeUserId(){var e=this.getUserId();if(!e)throw new Error("Expected logged in user but found none.");return e}getDomain(){var e;return(e=this.credentials)!==null&&e!==void 0&&e.userId?this.credentials.userId.replace(/^.*?:/,""):null}getUserIdLocalpart(){var e,t;return(e=(t=this.credentials)===null||t===void 0||(t=t.userId)===null||t===void 0?void 0:t.split(":")[0].substring(1))!==null&&e!==void 0?e:null}getDeviceId(){return this.deviceId}getSessionId(){return this.sessionId}supportsVoip(){return!this.disableVoip&&this.canSupportVoip}getMediaHandler(){return this.mediaHandler}setForceTURN(e){this.forceTURN=e}setSupportsCallTransfer(e){this.supportsCallTransfer=e}getUseE2eForGroupCall(){return this.useE2eForGroupCall}createCall(e){return Rn(this,e)}createGroupCall(e,t,r,n,a,s){var o=this;return R(function*(){if(o.getGroupCallForRoom(e))throw new Error("".concat(e," already has an existing group call"));var l=o.getRoom(e);if(!l)throw new Error("Cannot find room ".concat(e));return new No(o,l,t,r,n,void 0,a||o.isVoipWithNoMediaAllowed,s,o.isVoipWithNoMediaAllowed,o.useLivekitForGroupCalls,o.livekitServiceURL).create()})()}getLivekitServiceURL(){return this.livekitServiceURL}setLivekitServiceURL(e){this.livekitServiceURL=e}waitUntilRoomReadyForGroupCalls(e){return this.groupCallEventHandler.waitUntilRoomReadyForGroupCalls(e)}getGroupCallForRoom(e){return this.groupCallEventHandler.groupCalls.get(e)||null}getSyncState(){var e,t;return(e=(t=this.syncApi)===null||t===void 0?void 0:t.getSyncState())!==null&&e!==void 0?e:null}getSyncStateData(){return this.syncApi?this.syncApi.getSyncStateData():null}isInitialSyncComplete(){var e=this.getSyncState();return e?e===ae.Prepared||e===ae.Syncing:!1}isGuest(){return this.isGuestAccount}setGuest(e){this.isGuestAccount=e}getScheduler(){return this.scheduler}retryImmediately(){var e,t;return this.toDeviceMessageQueue.sendQueue(),(e=(t=this.syncApi)===null||t===void 0?void 0:t.retryImmediately())!==null&&e!==void 0?e:!1}getNotifTimelineSet(){return this.notifTimelineSet}setNotifTimelineSet(e){this.notifTimelineSet=e}getCapabilities(){var e=this;return R(function*(){var t=e.serverCapabilitiesService.getCachedCapabilities();return t||e.serverCapabilitiesService.fetchCapabilities()})()}getCachedCapabilities(){return this.serverCapabilitiesService.getCachedCapabilities()}fetchCapabilities(){return this.serverCapabilitiesService.fetchCapabilities()}initRustCrypto(){var e=arguments,t=this;return R(function*(){var r,n,a=e.length>0&&e[0]!==void 0?e[0]:{};if(t.cryptoBackend){t.logger.warn("Attempt to re-initialise e2e encryption on MatrixClient");return}var s=t.getUserId();if(s===null)throw new Error("Cannot enable encryption on MatrixClient with unknown userId: ensure userId is passed in createClient().");var o=t.getDeviceId();if(o===null)throw new Error("Cannot enable encryption on MatrixClient with unknown deviceId: ensure deviceId is passed in createClient().");t.logger.debug("Downloading Rust crypto library");var l=yield import("./index-BOka8551.js"),d=yield l.initRustCrypto({logger:t.logger,http:t.http,userId:s,deviceId:o,secretStorage:t.secretStorage,cryptoCallbacks:t.cryptoCallbacks,storePrefix:a.useIndexedDB===!1?null:(r=a.cryptoDatabasePrefix)!==null&&r!==void 0?r:zn,storeKey:a.storageKey,storePassphrase:a.storagePassword,legacyCryptoStore:t.legacyCryptoStore,legacyPickleKey:(n=t.legacyPickleKey)!==null&&n!==void 0?n:"DEFAULT_KEY",legacyMigrationProgressListener:(u,h)=>{t.emit(be.LegacyCryptoStoreMigrationProgress,u,h)},enableEncryptedStateEvents:t.enableEncryptedStateEvents});d.setSupportedVerificationMethods(t.verificationMethods),t.cryptoBackend=d,t.on(Le.Membership,d.onRoomMembership.bind(d)),t.on(x.Event,u=>{d.onLiveEventFromSync(u)}),t.reEmitter.reEmit(d,[be.VerificationRequestReceived,be.UserTrustStatusChanged,be.KeyBackupStatus,be.KeyBackupSessionsRemaining,be.KeyBackupFailed,be.KeyBackupDecryptionKeyCached,be.KeysChanged,be.DevicesUpdated,be.WillUpdateDevices,be.DehydratedDeviceCreated,be.DehydratedDeviceUploaded,be.RehydrationStarted,be.RehydrationProgress,be.RehydrationCompleted,be.RehydrationError,be.DehydrationKeyCached,be.DehydratedDeviceRotationError])})()}get secretStorage(){return this._secretStorage}getCrypto(){return this.cryptoBackend}isRoomEncrypted(e){var t=this.getRoom(e);return t?t.hasEncryptionStateEvent():!1}isKeyBackupKeyStored(){return Promise.resolve(this.secretStorage.isStored("m.megolm_backup.v1"))}makeKeyBackupPath(e,t,r){var n;t!==void 0?n=A("/room_keys/keys/$roomId/$sessionId",{$roomId:e,$sessionId:t}):e!==void 0?n=A("/room_keys/keys/$roomId",{$roomId:e}):n="/room_keys/keys";var a=r===void 0?void 0:{version:r};return{path:n,queryData:a}}deleteKeysFromBackup(e,t,r){var n=this;return R(function*(){var a=n.makeKeyBackupPath(e,t,r);yield n.http.authedRequest(O.Delete,a.path,a.queryData,void 0,{prefix:ce.V3})})()}getMediaConfig(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,t=e?"/media/config":"/config";return this.http.authedRequest(O.Get,t,void 0,void 0,{prefix:e?ce.V1:Tr.V3})}getRoom(e){return e?this.store.getRoom(e):null}getRooms(){return this.store.getRooms()}getVisibleRooms(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,t=this.store.getRooms(),r=new Set(t);for(var n of r){var a=this.findPredecessorRooms(n,!0,e);for(var s of a)r.delete(s)}return Array.from(r)}getUser(e){return this.store.getUser(e)}getUsers(){return this.store.getUsers()}setAccountData(e,t){var r=this;return R(function*(){if(!r.clientRunning)return r.logger.warn("Calling `setAccountData` before the client is started: `getAccountData` may return inconsistent results."),yield Ga(5,()=>r.setAccountDataRaw(e,t));var n=r.store.getAccountData(e);if(n&&Xt(n.event.content,t))return{};var a=Promise.withResolvers();function s(l){l.getType()===e&&a.resolve()}r.addListener(x.AccountData,s);try{var o=yield Ga(5,()=>r.setAccountDataRaw(e,t));return yield a.promise,o}finally{r.removeListener(x.AccountData,s)}})()}setAccountDataRaw(e,t){var r=A("/user/$userId/account_data/$type",{$userId:this.credentials.userId,$type:e});return this.http.authedRequest(O.Put,r,void 0,t)}getAccountData(e){return this.store.getAccountData(e)}getAccountDataFromServer(e){var t=this;return R(function*(){if(t.isInitialSyncComplete()){var r=t.store.getAccountData(e);return r?r.getContent():null}var n=A("/user/$userId/account_data/$type",{$userId:t.credentials.userId,$type:e});try{return yield t.http.authedRequest(O.Get,n)}catch(s){var a;if(((a=s.data)===null||a===void 0?void 0:a.errcode)==="M_NOT_FOUND")return null;throw s}})()}deleteAccountData(e){var t=this;return R(function*(){var r=t.canSupport.get(Se.AccountDataDeletion);if(r===Ee.Unsupported){yield t.setAccountData(e,{});return}var n=A("/user/$userId/account_data/$type",{$userId:t.getSafeUserId(),$type:e}),a=r===Ee.Unstable?{prefix:"/_matrix/client/unstable/org.matrix.msc3391"}:void 0;return yield t.http.authedRequest(O.Delete,n,void 0,void 0,a)})()}getIgnoredUsers(){var e=this.getAccountData(M.IgnoredUserList);return e!=null&&e.getContent().ignored_users?Object.keys(e.getContent().ignored_users):[]}setIgnoredUsers(e){var t={ignored_users:{}};return e.forEach(r=>{t.ignored_users[r]={}}),this.setAccountData(M.IgnoredUserList,t)}isUserIgnored(e){return this.getIgnoredUsers().includes(e)}joinRoom(e){var t=arguments,r=this;return R(function*(){var n,a,s=t.length>1&&t[1]!==void 0?t[1]:{},o=r.getRoom(e),l=o?.getMember(r.getSafeUserId()),d=l?.membership,u=d==J.Invite&&(n=l==null||(a=l.events.member)===null||a===void 0?void 0:a.getSender())!==null&&n!==void 0?n:null;if(r.logger.debug("joinRoom[".concat(e,"]: preJoinMembership=").concat(d,", inviter=").concat(u,", opts=").concat(JSON.stringify(s))),d==J.Join)return o;var h=Promise.resolve();if(s.inviteSignUrl){var m=new URL(s.inviteSignUrl);m.searchParams.set("mxid",r.credentials.userId),h=r.http.requestOtherUrl(O.Post,m)}var E={};s.viaServers&&(E.via=E.server_name=s.viaServers.slice(0,3));var f={},p=yield h;p&&(f.third_party_signed=p);var I=A("/join/$roomid",{$roomid:e}),S=yield r.http.authedRequest(O.Post,I,E,f),g=S.room_id;if(s.acceptSharedHistory&&u&&r.cryptoBackend){var _=yield r.cryptoBackend.maybeAcceptKeyBundle(g,u);_||r.cryptoBackend.markRoomAsPendingKeyBundle(g,u)}var y=r.getRoom(g);if(y!=null&&y.hasMembershipState(r.credentials.userId,J.Join))return y;var b=new Zr(r,r.clientOpts,r.buildSyncApiOptions());return b.createRoom(g)})()}knockRoom(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=this.getRoom(e);if(r!=null&&r.hasMembershipState(this.credentials.userId,J.Knock))return Promise.resolve({room_id:r.roomId});var n=A("/knock/$roomIdOrAlias",{$roomIdOrAlias:e}),a={};if(t.viaServers){var s=Array.isArray(t.viaServers)?t.viaServers.slice(0,3):[t.viaServers];a.server_name=s,a.via=s}var o={};return t.reason&&(o.reason=t.reason),this.http.authedRequest(O.Post,n,a,o)}resendEvent(e,t){return this.toDeviceMessageQueue.sendQueue(),this.updatePendingEventStatus(t,e,q.SENDING),this.encryptAndSendEvent(t,e)}cancelPendingEvent(e){if(![q.QUEUED,q.NOT_SENT,q.ENCRYPTING].includes(e.status))throw new Error("cannot cancel an event with status "+e.status);e.status===q.ENCRYPTING?this.eventsBeingEncrypted.delete(e.getId()):this.scheduler&&e.status===q.QUEUED&&this.scheduler.removeEventFromQueue(e);var t=this.getRoom(e.getRoomId());this.updatePendingEventStatus(t,e,q.CANCELLED)}setRoomName(e,t){return this.sendStateEvent(e,M.RoomName,{name:t})}setRoomTopic(e,t,r){var n=ed(t,r);return this.sendStateEvent(e,M.RoomTopic,n)}getRoomTags(e){var t=A("/user/$userId/rooms/$roomId/tags",{$userId:this.credentials.userId,$roomId:e});return this.http.authedRequest(O.Get,t)}setRoomTag(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},n=A("/user/$userId/rooms/$roomId/tags/$tag",{$userId:this.credentials.userId,$roomId:e,$tag:t});return this.http.authedRequest(O.Put,n,void 0,r)}deleteRoomTag(e,t){var r=A("/user/$userId/rooms/$roomId/tags/$tag",{$userId:this.credentials.userId,$roomId:e,$tag:t});return this.http.authedRequest(O.Delete,r)}setRoomAccountData(e,t,r){var n=A("/user/$userId/rooms/$roomId/account_data/$type",{$userId:this.credentials.userId,$roomId:e,$type:t});return this.http.authedRequest(O.Put,n,void 0,r)}setPowerLevel(e,t,r){var n=this;return R(function*(){var a,s;if(n.clientRunning&&n.isInitialSyncComplete()){var o;s=(o=n.getRoom(e))===null||o===void 0||(o=o.currentState)===null||o===void 0||(o=o.getStateEvents(M.RoomPowerLevels,""))===null||o===void 0?void 0:o.getContent()}if(!s)try{s=yield n.getStateEvent(e,M.RoomPowerLevels,"")}catch(u){if(u instanceof ue&&u.errcode==="M_NOT_FOUND")s={};else throw u}s=Br(s),(a=s)!==null&&a!==void 0&&a.users||(s.users={});var l=Array.isArray(t)?t:[t];for(var d of l)r==null?delete s.users[d]:s.users[d]=r;return n.sendStateEvent(e,M.RoomPowerLevels,s,"")})()}unstable_createLiveBeacon(e,t){var r=this;return R(function*(){return r.unstable_setLiveBeacon(e,t)})()}unstable_setLiveBeacon(e,t){var r=this;return R(function*(){return r.sendStateEvent(e,Eo.name,t,r.getUserId())})()}sendEvent(e,t,r,n,a){var s,o,l,d;return!(t!=null&&t.startsWith(We))&&t!==null?(d=n,l=r,o=t,s=null):(d=a,l=n,o=r,s=t),this.addThreadRelationIfNeeded(l,s,e),this.sendCompleteEvent({roomId:e,threadId:s,eventObject:{type:o,content:l},txnId:d})}addThreadRelationIfNeeded(e,t,r){var n;if(t&&!((n=e["m.relates_to"])!==null&&n!==void 0&&n.rel_type)){var a,s,o=!!((a=e["m.relates_to"])!==null&&a!==void 0&&a["m.in_reply_to"]);e["m.relates_to"]=oe(oe({},e["m.relates_to"]),{},{rel_type:re.name,event_id:t,is_falling_back:!o});var l=(s=this.getRoom(r))===null||s===void 0?void 0:s.getThread(t);if(l&&!o){var d,u;e["m.relates_to"]["m.in_reply_to"]={event_id:(d=(u=l.lastReply(h=>h.isRelation(re.name)&&!h.status))===null||u===void 0?void 0:u.getId())!==null&&d!==void 0?d:t}}}}sendCompleteEvent(e){var{roomId:t,threadId:r,eventObject:n,delayOpts:a,queryDict:s,txnId:o}=e;o||(o=this.makeTxnId());var l=new Ge(Object.assign(n,{event_id:"~"+t+":"+o,user_id:this.credentials.userId,sender:this.credentials.userId,room_id:t,origin_server_ts:new Date().getTime()})),d=this.getRoom(t),u=r?d?.getThread(r):void 0;u&&l.setThread(u),a||(this.reEmitter.reEmit(l,[ee.Replaced,ee.VisibilityChange]),d?.reEmitter.reEmit(l,[ee.BeforeRedaction]));var h=l.getAssociatedId();if(h!=null&&h.startsWith("~")){var m=d?.getPendingEvents().find(f=>f.getId()===h);m?.once(ee.LocalEventIdReplaced,()=>{l.updateAssociatedId(m.getId())})}var E=l.getType();return this.logger.debug("sendEvent of type ".concat(E," in ").concat(t," with txnId ").concat(o).concat(a?" (delayed event)":"").concat(s?" query params: "+JSON.stringify(s):"")),l.setTxnId(o),l.setStatus(q.SENDING),a?this.encryptAndSendEvent(d,l,a,s):(d?.addPendingEvent(l,o),l.status===q.NOT_SENT?Promise.reject(new Error("Event blocked by other events not yet sent")):this.encryptAndSendEvent(d,l,s))}encryptAndSendEvent(e,t,r,n){var a=this;return R(function*(){var s=n;if(r&&gs(r))return a.sendEventHttpRequest(t,r,s);s||(s=r);try{var o;a.eventsBeingEncrypted.add(t.getId());try{yield a.encryptEventIfNeeded(t,e??void 0)}finally{o=!a.eventsBeingEncrypted.delete(t.getId())}if(o)return{};t.status===q.ENCRYPTING&&a.updatePendingEventStatus(e,t,q.SENDING);var l=null;return a.scheduler&&(l=a.scheduler.queueEvent(t),l&&a.scheduler.getQueueForEvent(t).length>1&&a.updatePendingEventStatus(e,t,q.QUEUED)),l||(l=a.sendEventHttpRequest(t,s),e&&(l=l.then(d=>(e.updatePendingEvent(t,q.SENT,d.event_id),d)))),yield l}catch(d){a.logger.error("Error sending event",d);try{t.error=d,a.updatePendingEventStatus(e,t,q.NOT_SENT)}catch(u){a.logger.error("Exception in error handler!",u)}throw d instanceof ue&&(d.event=t),d}})()}encryptEventIfNeeded(e,t){var r=this;return R(function*(){if(t&&(yield r.shouldEncryptEventForRoom(e,t))&&!(!r.cryptoBackend&&r.usingExternalCrypto)){if(!r.cryptoBackend)throw new Error("This room is configured to use encryption, but your client does not support encryption.");r.updatePendingEventStatus(t,e,q.ENCRYPTING),yield r.cryptoBackend.encryptEvent(e,t)}})()}shouldEncryptEventForRoom(e,t){var r=this;return R(function*(){var n;return e.isEncrypted()||e.getType()===M.Reaction||e.isRedaction()?!1:!!(t.hasEncryptionStateEvent()||(yield(n=r.cryptoBackend)===null||n===void 0?void 0:n.isEncryptionEnabledInRoom(t.roomId)))})()}getEncryptedIfNeededEventType(e,t){var r;return t===M.Reaction?t:(r=this.getRoom(e))!==null&&r!==void 0&&r.hasEncryptionStateEvent()?M.RoomMessageEncrypted:t}updatePendingEventStatus(e,t,r){e?e.updatePendingEvent(t,r):t.setStatus(r)}sendEventHttpRequest(e,t,r){var n=e.getTxnId();n||(n=this.makeTxnId(),e.setTxnId(n));var a={$roomId:e.getRoomId(),$eventType:e.getWireType(),$stateKey:e.getStateKey(),$txnId:n},s;if(e.isState()){var o="/rooms/$roomId/state/$eventType";e.getStateKey()&&e.getStateKey().length>0&&(o="/rooms/$roomId/state/$eventType/$stateKey"),s=A(o,a)}else if(e.isRedaction()&&e.event.redacts){var l="/rooms/$roomId/redact/$redactsEventId/$txnId";s=A(l,oe({$redactsEventId:e.event.redacts},a))}else s=A("/rooms/$roomId/send/$eventType/$txnId",a);var d=t&&gs(t)?t:void 0,u=d?r:t,h=e.getWireContent();return d?this.http.authedRequest(O.Put,s,oe(oe({},Gs(d)),u),h):this.http.authedRequest(O.Put,s,u,h).then(m=>(this.logger.debug("Event sent to ".concat(e.getRoomId()," with event id ").concat(m.event_id)),m))}redactEvent(e,t,r,n,a){var s,o,l;(s=r)!==null&&s!==void 0&&s.startsWith(We)||(a=n,n=r,r=t,t=null);var d=(o=a)===null||o===void 0?void 0:o.reason,u={reason:d};if(((l=a)===null||l===void 0?void 0:l.with_rel_types)!==void 0){if(this.canSupport.get(Se.RelationBasedRedactions)===Ee.Unsupported)throw new Error("Server does not support relation based redactions "+"roomId ".concat(e," eventId ").concat(r," txnId: ").concat(n," threadId ").concat(t));var h=this.canSupport.get(Se.RelationBasedRedactions)===Ee.Stable?Oa.stable:Oa.unstable;u[h]=a.with_rel_types}return this.sendCompleteEvent({roomId:e,threadId:t,eventObject:{type:M.RoomRedaction,content:u,redacts:r},txnId:n})}sendMessage(e,t,r,n){typeof t!="string"&&t!==null&&(n=r,r=t,t=null);var a=M.RoomMessage,s=r;return this.sendEvent(e,t,a,s,n)}sendTextMessage(e,t,r,n){var a;!((a=t)!==null&&a!==void 0&&a.startsWith(We))&&t!==null&&(n=r,r=t,t=null);var s=Xl(r);return this.sendMessage(e,t,s,n)}sendNotice(e,t,r,n){var a;!((a=t)!==null&&a!==void 0&&a.startsWith(We))&&t!==null&&(n=r,r=t,t=null);var s=Ql(r);return this.sendMessage(e,t,s,n)}sendEmoteMessage(e,t,r,n){var a;!((a=t)!==null&&a!==void 0&&a.startsWith(We))&&t!==null&&(n=r,r=t,t=null);var s=Zl(r);return this.sendMessage(e,t,s,n)}sendImageMessage(e,t,r,n){var a,s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:"Image";!((a=t)!==null&&a!==void 0&&a.startsWith(We))&&t!==null&&(s=n||"Image",n=r,r=t,t=null);var o={msgtype:Et.Image,url:r,info:n,body:s};return this.sendMessage(e,t,o)}sendStickerMessage(e,t,r,n){var a,s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:"Sticker";!((a=t)!==null&&a!==void 0&&a.startsWith(We))&&t!==null&&(s=n||"Sticker",n=r,r=t,t=null);var o={url:r,info:n,body:s};return this.sendEvent(e,t,M.Sticker,o)}sendHtmlMessage(e,t,r,n){var a;!((a=t)!==null&&a!==void 0&&a.startsWith(We))&&t!==null&&(n=r,r=t,t=null);var s=Jl(r,n);return this.sendMessage(e,t,s)}sendHtmlNotice(e,t,r,n){var a;!((a=t)!==null&&a!==void 0&&a.startsWith(We))&&t!==null&&(n=r,r=t,t=null);var s=zl(r,n);return this.sendMessage(e,t,s)}sendHtmlEmote(e,t,r,n){var a;!((a=t)!==null&&a!==void 0&&a.startsWith(We))&&t!==null&&(n=r,r=t,t=null);var s=Yl(r,n);return this.sendMessage(e,t,s)}_unstable_sendDelayedEvent(e,t,r,n,a,s){var o=this;return R(function*(){if(!(yield o.doesServerSupportUnstableFeature(Ve)))throw new Ot("Server does not support the delayed events API","sendDelayedEvent");return o.addThreadRelationIfNeeded(a,r,e),o.sendCompleteEvent({roomId:e,threadId:r,eventObject:{type:n,content:a},delayOpts:t,txnId:s})})()}_unstable_sendStickyDelayedEvent(e,t,r,n,a,s,o){var l=this;return R(function*(){if(!(yield l.doesServerSupportUnstableFeature(Ve)))throw new Ot("Server does not support the delayed events API","getDelayedEvents");if(!(yield l.doesServerSupportUnstableFeature(qs)))throw new Ps("Server does not support the sticky events","sendStickyEvent");return l.addThreadRelationIfNeeded(s,n,e),l.sendCompleteEvent({roomId:e,threadId:n,eventObject:{type:a,content:s},queryDict:{"org.matrix.msc4354.sticky_duration_ms":t},delayOpts:r,txnId:o})})()}_unstable_sendDelayedStateEvent(e,t,r,n){var a=arguments,s=this;return R(function*(){var o=a.length>4&&a[4]!==void 0?a[4]:"",l=a.length>5&&a[5]!==void 0?a[5]:{};if(!(yield s.doesServerSupportUnstableFeature(Ve)))throw new Ot("Server does not support the delayed events API","sendDelayedStateEvent");var d={$roomId:e,$eventType:r,$stateKey:o},u=A("/rooms/$roomId/state/$eventType",d);return o!==void 0&&(u=A(u+"/$stateKey",d)),s.http.authedRequest(O.Put,u,Gs(t),n,l)})()}_unstable_sendStickyEvent(e,t,r,n,a,s){var o=this;return R(function*(){if(!(yield o.doesServerSupportUnstableFeature(qs)))throw new Ps("Server does not support the sticky events","sendStickyEvent");return o.addThreadRelationIfNeeded(a,r,e),o.sendCompleteEvent({roomId:e,threadId:r,eventObject:{type:n,content:a},queryDict:{"org.matrix.msc4354.sticky_duration_ms":t},txnId:s})})()}_unstable_getDelayedEvents(e,t,r){var n=this;return R(function*(){if(!(yield n.doesServerSupportUnstableFeature(Ve)))throw new Ot("Server does not support the delayed events API","getDelayedEvents");var a={from:r,status:e,delay_id:t};return yield n.http.authedRequest(O.Get,"/delayed_events",a,void 0,{prefix:"".concat(ce.Unstable,"/").concat(Ve)})})()}_unstable_updateDelayedEvent(e,t){var r=arguments,n=this;return R(function*(){var a=r.length>2&&r[2]!==void 0?r[2]:{};if(!(yield n.doesServerSupportUnstableFeature(Ve)))throw new Ot("Server does not support the delayed events API","updateDelayedEvent");return yield n.updateScheduledDelayedEventWithActionInBody(e,t,a)})()}_unstable_cancelScheduledDelayedEvent(e){var t=arguments,r=this;return R(function*(){var n=t.length>1&&t[1]!==void 0?t[1]:{};return yield r.updateScheduledDelayedEvent(e,Wn.Cancel,n)})()}_unstable_restartScheduledDelayedEvent(e){var t=arguments,r=this;return R(function*(){var n=t.length>1&&t[1]!==void 0?t[1]:{};return yield r.updateScheduledDelayedEvent(e,Wn.Restart,n)})()}_unstable_sendScheduledDelayedEvent(e){var t=arguments,r=this;return R(function*(){var n=t.length>1&&t[1]!==void 0?t[1]:{};return yield r.updateScheduledDelayedEvent(e,Wn.Send,n)})()}updateScheduledDelayedEvent(e,t){var r=arguments,n=this;return R(function*(){var a=r.length>2&&r[2]!==void 0?r[2]:{};if(!(yield n.doesServerSupportUnstableFeature(Ve)))throw new Ot("Server does not support the delayed events API","".concat(t,"ScheduledDelayedEvent"));try{var s=A("/delayed_events/$delayId/$action",{$delayId:e,$action:t});return yield n.http.request(O.Post,s,void 0,void 0,oe(oe({},a),{},{prefix:"".concat(ce.Unstable,"/").concat(Ve)}))}catch(o){if(o instanceof ue&&o.errcode==="M_UNRECOGNIZED")return yield n.updateScheduledDelayedEventWithActionInBody(e,t,a);throw o}})()}updateScheduledDelayedEventWithActionInBody(e,t){var r=arguments,n=this;return R(function*(){var a=r.length>2&&r[2]!==void 0?r[2]:{},s=A("/delayed_events/$delayId",{$delayId:e}),o={action:t};try{return yield n.http.request(O.Post,s,void 0,o,oe(oe({},a),{},{prefix:"".concat(ce.Unstable,"/").concat(Ve)}))}catch(l){if(l instanceof ue&&l.errcode==="M_MISSING_TOKEN")return yield n.http.authedRequest(O.Post,s,void 0,o,oe(oe({},a),{},{prefix:"".concat(ce.Unstable,"/").concat(Ve)}));throw l}})()}sendReceipt(e,t,r){var n=arguments,a=this;return R(function*(){var s=n.length>3&&n[3]!==void 0?n[3]:!1;if(a.isGuest())return Promise.resolve({});var o=A("/rooms/$roomId/receipt/$receiptType/$eventId",{$roomId:e.getRoomId(),$receiptType:t,$eventId:e.getId()}),l=!s&&a.supportsThreads(),d=l?oe(oe({},r),{},{thread_id:Fr(e)}):r,u=a.http.authedRequest(O.Post,o,void 0,d||{}),h=a.getRoom(e.getRoomId());return h&&a.credentials.userId&&h.addLocalEchoReceipt(a.credentials.userId,e,t,s),u})()}sendReadReceipt(e){var t=arguments,r=this;return R(function*(){var n=t.length>1&&t[1]!==void 0?t[1]:we.Read,a=t.length>2&&t[2]!==void 0?t[2]:!1;if(e){var s=e.getId(),o=r.getRoom(e.getRoomId());if(o!=null&&o.hasPendingEvent(s))throw new Error("Cannot set read receipt to a pending event (".concat(s,")"));return r.sendReceipt(e,n,{},a)}})()}setRoomReadMarkers(e,t,r,n){var a=this;return R(function*(){var s=a.getRoom(e);if(s!=null&&s.hasPendingEvent(t))throw new Error("Cannot set read marker to a pending event (".concat(t,")"));var o;if(r){if(o=r.getId(),s!=null&&s.hasPendingEvent(o))throw new Error("Cannot set read receipt to a pending event (".concat(o,")"));s?.addLocalEchoReceipt(a.credentials.userId,r,we.Read)}var l;if(n){if(l=n.getId(),s!=null&&s.hasPendingEvent(l))throw new Error("Cannot set read receipt to a pending event (".concat(l,")"));s?.addLocalEchoReceipt(a.credentials.userId,n,we.ReadPrivate)}return yield a.setRoomReadMarkersHttpRequest(e,t,o,l)})()}sendRtcDecline(e,t){return this.sendEvent(e,M.RTCDecline,{"m.relates_to":{event_id:t,rel_type:se.Reference}})}getUrlPreview(e,t){t=Math.floor(t/6e4)*6e4;var r=new URL(e);r.hash="",e=r.toString();var n=t+"_"+e;if(n in this.urlPreviewCache)return this.urlPreviewCache[n];var a=this.http.authedRequest(O.Get,"/preview_url",{url:e,ts:t.toString()},void 0,{prefix:Tr.V3,priority:"low"});return this.urlPreviewCache[n]=a,a}sendTyping(e,t,r){if(this.isGuest())return Promise.resolve({});var n=A("/rooms/$roomId/typing/$userId",{$roomId:e,$userId:this.getUserId()}),a={typing:t};return t&&(a.timeout=r||2e4),this.http.authedRequest(O.Put,n,void 0,a)}getRoomUpgradeHistory(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,n=this.getRoom(e);if(!n)return[];var a=this.findPredecessorRooms(n,t,r),s=this.findSuccessorRooms(n,t,r);return[...a,n,...s]}findPredecessorRooms(e,t,r){for(var n,a=[],s=new Set([e.roomId]),o=(n=e.findPredecessor(r))===null||n===void 0?void 0:n.roomId;o!==null;){var l;if(o){if(s.has(o))break;s.add(o)}var d=this.getRoom(o);if(d===null)break;if(t){var u=d.currentState.getStateEvents(M.RoomTombstone,"");if(!u||u.getContent().replacement_room!==e.roomId)break}a.splice(0,0,d),e=d,o=(l=e.findPredecessor(r))===null||l===void 0?void 0:l.roomId}return a}findSuccessorRooms(e,t,r){for(var n=[],a=e.currentState.getStateEvents(M.RoomTombstone,"");a;){var s=this.getRoom(a.getContent().replacement_room);if(!s||s.roomId===e.roomId)break;if(t){var o,l=(o=s.findPredecessor(r))===null||o===void 0?void 0:o.roomId;if(!l||l!==e.roomId)break}n.push(s);var d=new Set(n.map(u=>u.roomId));if(d.size<n.length)return n.slice(0,n.length-1);e=s,a=e.currentState.getStateEvents(M.RoomTombstone,"")}return n}invite(e,t){var r=arguments,n=this;return R(function*(){var a=r.length>2&&r[2]!==void 0?r[2]:{};if(typeof a!="object"&&(a={reason:a}),a.shareEncryptedHistory){var s;yield(s=n.cryptoBackend)===null||s===void 0?void 0:s.shareRoomHistoryWithUser(e,t)}return yield n.membershipChange(e,t,J.Invite,a.reason)})()}inviteByEmail(e,t){return this.inviteByThreePid(e,"email",t)}inviteByThreePid(e,t,r){var n=this;return R(function*(){var a,s=A("/rooms/$roomId/invite",{$roomId:e}),o=n.getIdentityServerUrl(!0);if(!o)return Promise.reject(new ue({error:"No supplied identity server URL",errcode:"ORG.MATRIX.JSSDK_MISSING_PARAM"}));var l={id_server:o,medium:t,address:r};if((a=n.identityServer)!==null&&a!==void 0&&a.getAccessToken){var d=yield n.identityServer.getAccessToken();d&&(l.id_access_token=d)}return n.http.authedRequest(O.Post,s,void 0,l)})()}leave(e){return this.membershipChange(e,void 0,J.Leave)}leaveRoomChain(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this.getRoomUpgradeHistory(e,!0),n=r;if(!t){n=[];for(var a of r)if(n.push(a),a.roomId===e)break}var s={},o=[],l=u=>this.leave(u).then(()=>{delete s[u]}).catch(h=>{s[u]=h});for(var d of n)o.push(l(d.roomId));return Promise.all(o).then(()=>s)}ban(e,t,r){return this.membershipChange(e,t,J.Ban,r)}forget(e){var t=arguments,r=this;return R(function*(){var n=t.length>1&&t[1]!==void 0?t[1]:!0,a=A("/rooms/$room_id/forget",{$room_id:e}),s=yield r.http.authedRequest(O.Post,a);return n&&(r.store.removeRoom(e),r.emit(x.DeleteRoom,e)),s})()}unban(e,t){var r=A("/rooms/$roomId/unban",{$roomId:e}),n={user_id:t};return this.http.authedRequest(O.Post,r,void 0,n)}kick(e,t,r){var n=A("/rooms/$roomId/kick",{$roomId:e}),a={user_id:t,reason:r};return this.http.authedRequest(O.Post,n,void 0,a)}membershipChange(e,t,r,n){var a=A("/rooms/$room_id/$membership",{$room_id:e,$membership:r});return this.http.authedRequest(O.Post,a,void 0,{user_id:t,reason:n})}getPushActionsForEvent(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(!e.getPushActions()||t){var{actions:r,rule:n}=this.pushProcessor.actionsAndRuleForEvent(e);e.setPushDetails(r,n)}return e.getPushActions()}getPushDetailsForEvent(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(!e.getPushDetails()||t){var{actions:r,rule:n}=this.pushProcessor.actionsAndRuleForEvent(e);e.setPushDetails(r,n)}return e.getPushDetails()}setProfileInfo(e,t){var r=A("/profile/$userId/$info",{$userId:this.credentials.userId,$info:e});return this.http.authedRequest(O.Put,r,void 0,t)}setDisplayName(e){var t=this;return R(function*(){var r=yield t.setProfileInfo("displayname",{displayname:e}),n=t.getUser(t.getUserId());return n&&(n.displayName=e,n.emit(Ue.DisplayName,n.events.presence,n)),r})()}setAvatarUrl(e){var t=this;return R(function*(){var r=yield t.setProfileInfo("avatar_url",{avatar_url:e}),n=t.getUser(t.getUserId());return n&&(n.avatarUrl=e,n.emit(Ue.AvatarUrl,n.events.presence,n)),r})()}mxcUrlToHttp(e,t,r,n,a,s,o){return Ni(this.baseUrl,e,t,r,n,a,s,o)}setSyncPresence(e){var t=this;return R(function*(){var r;(r=t.syncApi)===null||r===void 0||r.setPresence(e)})()}setPresence(e){var t=this;return R(function*(){var r=A("/presence/$userId/status",{$userId:t.credentials.userId}),n=["offline","online","unavailable"];if(n.indexOf(e.presence)===-1)throw new Error("Bad presence value: "+e.presence);yield t.http.authedRequest(O.Put,r,void 0,e)})()}getPresence(e){var t=A("/presence/$userId/status",{$userId:e});return this.http.authedRequest(O.Get,t)}scrollback(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:30,r=0,n=this.ongoingScrollbacks[e.roomId]||{};if(n.promise)return n.promise;if(n.errorTs){var a=Date.now()-n.errorTs;r=Math.max(Qc-a,0)}if(e.oldState.paginationToken===null)return Promise.resolve(e);var s=this.store.scrollback(e,t).length;if(s===t)return Promise.resolve(e);t=t-s;var o=new Promise((l,d)=>{jr(r).then(()=>this.createMessagesRequest(e.roomId,e.oldState.paginationToken,t,z.Backward)).then(u=>{var h,m,E=u.chunk.map(this.getEventMapper());if(u.state){var f=u.state.map(this.getEventMapper());e.currentState.setUnknownStateEvents(f)}var[p,I,S]=e.partitionThreadedEvents(E);this.processAggregatedTimelineEvents(e,p),e.addEventsToTimeline(p,!0,!0,e.getLiveTimeline()),this.processThreadEvents(e,I,!0),S.forEach(g=>e.relations.aggregateChildEvent(g)),e.oldState.paginationToken=(h=u.end)!==null&&h!==void 0?h:null,u.chunk.length===0&&(e.oldState.paginationToken=null),this.store.storeEvents(e,E,(m=u.end)!==null&&m!==void 0?m:null,!0),delete this.ongoingScrollbacks[e.roomId],l(e)}).catch(u=>{this.ongoingScrollbacks[e.roomId]={errorTs:Date.now()},d(u)})});return n={promise:o},this.ongoingScrollbacks[e.roomId]=n,o}getEventMapper(e){return $u(this,e||{})}getEventContext(e,t){var r=this;return R(function*(){var n,a=A("/rooms/$roomId/context/$eventId",{$roomId:e,$eventId:t}),s={limit:"0"};(n=r.clientOpts)!==null&&n!==void 0&&n.lazyLoadMembers&&(s.filter=JSON.stringify(xe.LAZY_LOADING_MESSAGES_FILTER));var o=yield r.http.authedRequest(O.Get,a,s);if(o.event){var l,d,u;return{start:o.start,end:o.end,event:o.event,events_after:(l=o.events_after)!==null&&l!==void 0?l:[],events_before:(d=o.events_before)!==null&&d!==void 0?d:[],state:(u=o.state)!==null&&u!==void 0?u:[]}}throw new Error("'event' not in '/context' result - homeserver too old?")})()}getEventTimeline(e,t){var r=this;return R(function*(){var n,a,s;if(!r.timelineSupport)throw new Error("timeline support is disabled. Set the 'timelineSupport' parameter to true when creating MatrixClient to enable it.");if(!(e!=null&&e.room))throw new Error("getEventTimeline only supports room timelines");if(e.getTimelineForEvent(t))return e.getTimelineForEvent(t);if(e.thread&&r.supportsThreads()){var o;return(o=yield r.getThreadTimeline(e,t))!==null&&o!==void 0?o:null}var l=yield r.getEventContext(e.room.roomId,t);if(e.getTimelineForEvent(t))return e.getTimelineForEvent(t);var d=r.getEventMapper(),u=d(l.event);if(u.isRelation(re.name))return r.logger.warn("Tried loading a regular timeline at the position of a thread event"),null;var h=[...l.events_after.reverse().map(d),u,...l.events_before.map(d)],m=e.getTimelineForEvent(h[0].getId());if(m)m.getState(N.BACKWARDS).setUnknownStateEvents(l.state.map(d));else{var E;m=e.addTimeline(),m.initialiseState(l.state.map(d)),m.getState(N.FORWARDS).paginationToken=(E=l.end)!==null&&E!==void 0?E:null}var[f,p,I]=e.room.partitionThreadedEvents(h);return e.addEventsToTimeline(f,!0,!1,m,l.start),r.processThreadEvents(e.room,p,!0),r.processAggregatedTimelineEvents(e.room,f),I.forEach(S=>e.relations.aggregateChildEvent(S)),(n=(a=e.getTimelineForEvent(t))!==null&&a!==void 0?a:(s=e.room.findThreadForEvent(u))===null||s===void 0?void 0:s.liveTimeline)!==null&&n!==void 0?n:m})()}getThreadTimeline(e,t){var r=this;return R(function*(){if(!r.supportsThreads())throw new Error("could not get thread timeline: no client support");if(!e.room)throw new Error("could not get thread timeline: not a room timeline");if(!e.thread)throw new Error("could not get thread timeline: not a thread timeline");var n=yield r.getEventContext(e.room.roomId,t),a=r.getEventMapper(),s=a(n.event);if(e.canContain(s)){var o=r.canSupport.get(Se.RelationsRecursion)!==Ee.Unsupported;if(le.hasServerSideSupport)if(le.hasServerSideFwdPaginationSupport){var l,d,u;if(!e.thread)throw new Error("could not get thread timeline: not a thread timeline");var h=e.thread,m=yield r.fetchRelations(e.room.roomId,h.id,null,null,{dir:z.Backward,from:n.start,recurse:o||void 0}),E=yield r.fetchRelations(e.room.roomId,h.id,null,null,{dir:z.Forward,from:n.end,recurse:o||void 0}),f=[...E.chunk.reverse().filter(Xn(h.id)).map(a),s,...m.chunk.filter(Xn(h.id)).map(a)];for(var p of f){var I;yield(I=e.thread)===null||I===void 0?void 0:I.processEvent(p)}var S=e.getTimelineForEvent(s.getId());if(S?S.getState(N.BACKWARDS).setUnknownStateEvents(n.state.map(a)):(S=e.addTimeline(),S.initialiseState(n.state.map(a))),e.addEventsToTimeline(f,!0,!1,S,E.next_batch),!m.next_batch){var g=yield r.fetchRoomEvent(e.room.roomId,h.id);e.addEventsToTimeline([a(g)],!0,!1,S,null)}return S.setPaginationToken((l=m.next_batch)!==null&&l!==void 0?l:null,z.Backward),S.setPaginationToken((d=E.next_batch)!==null&&d!==void 0?d:null,z.Forward),r.processAggregatedTimelineEvents(e.room,f),(u=e.getTimelineForEvent(t))!==null&&u!==void 0?u:S}else{for(var _,y=e.thread,b=yield r.fetchRelations(e.room.roomId,y.id,re.name,null,{dir:z.Backward,from:n.start,recurse:o||void 0}),v=[],w=n.end;w;){var C=yield r.fetchRelations(e.room.roomId,y.id,re.name,null,{dir:z.Forward,from:w,recurse:o||void 0});w=C.next_batch,v.push(...C.chunk)}var k=[...v.reverse().map(a),s,...b.chunk.map(a)];for(var P of k){var D;yield(D=e.thread)===null||D===void 0?void 0:D.processEvent(P)}var B=e.getLiveTimeline();if(B.getState(N.BACKWARDS).setUnknownStateEvents(n.state.map(a)),e.addEventsToTimeline(k,!0,!1,B,null),!b.next_batch){var Z=yield r.fetchRoomEvent(e.room.roomId,y.id);e.addEventsToTimeline([a(Z)],!0,!1,B,null)}return B.setPaginationToken((_=b.next_batch)!==null&&_!==void 0?_:null,z.Backward),B.setPaginationToken(null,z.Forward),r.processAggregatedTimelineEvents(e.room,k),B}}})()}getLatestTimeline(e){var t=this;return R(function*(){if(!t.timelineSupport)throw new Error("timeline support is disabled. Set the 'timelineSupport' parameter to true when creating MatrixClient to enable it.");if(!e.room)throw new Error("getLatestTimeline only supports room timelines");var r;if(e.threadListType!==null){var n,a=yield t.createThreadListMessagesRequest(e.room.roomId,null,1,z.Backward,e.threadListType,e.getFilter());r=(n=a.chunk)===null||n===void 0?void 0:n[0]}else if(e.thread&&le.hasServerSideSupport){var s,o=t.canSupport.get(Se.RelationsRecursion)!==Ee.Unsupported,l=yield t.fetchRelations(e.room.roomId,e.thread.id,re.name,null,{dir:z.Backward,limit:1,recurse:o||void 0});r=(s=l.chunk)===null||s===void 0?void 0:s[0]}else{var d,u,h=A("/rooms/$roomId/messages",{$roomId:e.room.roomId}),m={dir:"b"};(d=t.clientOpts)!==null&&d!==void 0&&d.lazyLoadMembers&&(m.filter=JSON.stringify(xe.LAZY_LOADING_MESSAGES_FILTER));var E=yield t.http.authedRequest(O.Get,h,m);r=(u=E.chunk)===null||u===void 0?void 0:u[0]}if(!r)throw new Error("No message returned when trying to construct getLatestTimeline");return t.getEventTimeline(e,r.event_id)})()}createMessagesRequest(e,t){var r,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:30,a=arguments.length>3?arguments[3]:void 0,s=arguments.length>4?arguments[4]:void 0,o=A("/rooms/$roomId/messages",{$roomId:e}),l={limit:n.toString(),dir:a};t&&(l.from=t);var d=null;if((r=this.clientOpts)!==null&&r!==void 0&&r.lazyLoadMembers&&(d=Object.assign({},xe.LAZY_LOADING_MESSAGES_FILTER)),s){var u;d=d||{},Object.assign(d,(u=s.getRoomTimelineFilterComponent())===null||u===void 0?void 0:u.toJSON())}return d&&(l.filter=JSON.stringify(d)),this.http.authedRequest(O.Get,o,l)}createThreadListMessagesRequest(e,t){var r,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:30,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:z.Backward,s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:Xe.All,o=arguments.length>5?arguments[5]:void 0,l=A("/rooms/$roomId/threads",{$roomId:e}),d={limit:n.toString(),dir:a,include:oh(s)};t&&(d.from=t);var u={};if((r=this.clientOpts)!==null&&r!==void 0&&r.lazyLoadMembers&&(u=oe({},xe.LAZY_LOADING_MESSAGES_FILTER)),o){var h;u=oe(oe({},u),(h=o.getRoomTimelineFilterComponent())===null||h===void 0?void 0:h.toJSON())}Object.keys(u).length&&(d.filter=JSON.stringify(u));var m={prefix:le.hasServerSideListSupport===Te.Stable?ce.V1:"/_matrix/client/unstable/org.matrix.msc3856"};return this.http.authedRequest(O.Get,l,d,void 0,m).then(E=>{var f;return oe(oe({},E),{},{chunk:(f=E.chunk)===null||f===void 0?void 0:f.reverse(),start:E.prev_batch,end:E.next_batch})})}paginateEventTimeline(e,t){var r=this,n=e.getTimelineSet()===this.notifTimelineSet,a=this.getRoom(e.getRoomId()),s=e.getTimelineSet().threadListType,o=e.getTimelineSet().thread;t=t||{};var l=t.backwards||!1;if(n&&!l)throw new Error("paginateNotifTimeline can only paginate backwards");var d=l?N.BACKWARDS:N.FORWARDS,u=e.getPaginationToken(d),h=e.paginationRequests[d];if(h)return h;var m,E,f;if(n){var p;m="/notifications",E={limit:((p=t.limit)!==null&&p!==void 0?p:30).toString(),only:"highlight"},u&&u!=="end"&&(E.from=u),f=this.http.authedRequest(O.Get,m,E).then((function(){var y=R(function*(b){var v=b.next_token,w=[];b.notifications=b.notifications.filter(He);for(var C=0;C<b.notifications.length;C++){var k=b.notifications[C],P=r.getEventMapper()(k.event);r.getPushDetailsForEvent(P,!0),P.event.room_id=k.room_id,w[C]=P}var D=e.getTimelineSet();return D.addEventsToTimeline(w,l,!1,e,v),r.processAggregatedTimelineEvents(D.room,w),l&&!b.next_token&&e.setPaginationToken(null,d),!!b.next_token});return function(b){return y.apply(this,arguments)}})()).finally(()=>{e.paginationRequests[d]=null}),e.paginationRequests[d]=f}else if(s!==null){if(!a)throw new Error("Unknown room "+e.getRoomId());if(!le.hasServerSideFwdPaginationSupport&&d===z.Forward)throw new Error("Cannot paginate threads forwards without server-side support for MSC 3715");f=this.createThreadListMessagesRequest(e.getRoomId(),u,t.limit,d,s,e.getFilter()).then(y=>{if(y.state){var b=e.getState(d),v=y.state.filter(He).map(this.getEventMapper());b.setUnknownStateEvents(v)}var w=y.end,C=y.chunk.filter(He).map(this.getEventMapper()),k=e.getTimelineSet();return k.addEventsToTimeline(C,l,!1,e,w),this.processAggregatedTimelineEvents(a,C),this.processThreadRoots(a,C,l),l&&y.end==y.start&&e.setPaginationToken(null,d),y.end!==y.start}).finally(()=>{e.paginationRequests[d]=null}),e.paginationRequests[d]=f}else if(o){var I,S,g=this.getRoom((I=e.getRoomId())!==null&&I!==void 0?I:void 0);if(!g)throw new Error("Unknown room "+e.getRoomId());var _=this.canSupport.get(Se.RelationsRecursion)!==Ee.Unsupported;f=this.fetchRelations((S=e.getRoomId())!==null&&S!==void 0?S:"",o.id,null,null,{dir:d,limit:t.limit,from:u??void 0,recurse:_||void 0}).then((function(){var y=R(function*(b){var v=r.getEventMapper(),w=b.chunk.filter(He).filter(Xn(o.id)).map(v);for(var C of w.slice().reverse()){yield o?.processEvent(C);var k=C.getSender();(!l||o?.getEventReadUpTo(k)===null)&&g.addLocalEchoReceipt(k,C,we.Read)}var P=b.next_batch,D=e.getTimelineSet();if(D.addEventsToTimeline(w,l,!1,e,P??null),!P&&l){var B,Z,ge=(B=o.rootEvent)!==null&&B!==void 0?B:v(yield r.fetchRoomEvent((Z=e.getRoomId())!==null&&Z!==void 0?Z:"",o.id));D.addEventsToTimeline([ge],!0,!1,e,null)}return r.processAggregatedTimelineEvents(D.room,w),l&&!P&&e.setPaginationToken(null,d),!!P});return function(b){return y.apply(this,arguments)}})()).finally(()=>{e.paginationRequests[d]=null}),e.paginationRequests[d]=f}else{if(!a)throw new Error("Unknown room "+e.getRoomId());f=this.createMessagesRequest(e.getRoomId(),u,t.limit,d,e.getFilter()).then(y=>{if(y.state){var b=e.getState(d),v=y.state.filter(He).map(this.getEventMapper());b.setUnknownStateEvents(v)}var w=y.end,C=y.chunk.filter(He).map(this.getEventMapper()),k=e.getTimelineSet(),[P,,D]=a.partitionThreadedEvents(C);k.addEventsToTimeline(P,l,!1,e,w),this.processAggregatedTimelineEvents(a,P),this.processThreadRoots(a,P.filter(Z=>Z.getServerAggregatedRelation(re.name)),!1),D.forEach(Z=>a.relations.aggregateChildEvent(Z));var B=y.end===void 0||y.end===y.start;return l&&B&&e.setPaginationToken(null,d),!B}).finally(()=>{e.paginationRequests[d]=null}),e.paginationRequests[d]=f}return f}resetNotifTimelineSet(){this.notifTimelineSet&&this.notifTimelineSet.resetLiveTimeline("end")}peekInRoom(e){var t,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:20;return(t=this.peekSync)===null||t===void 0||t.stopPeeking(),this.peekSync=new Zr(this,this.clientOpts,this.buildSyncApiOptions()),this.peekSync.peek(e,r)}stopPeeking(){this.peekSync&&(this.peekSync.stopPeeking(),this.peekSync=null)}setGuestAccess(e,t){var r=this.sendStateEvent(e,M.RoomGuestAccess,{guest_access:t.allowJoin?ui.CanJoin:ui.Forbidden},""),n=Promise.resolve();return t.allowRead&&(n=this.sendStateEvent(e,M.RoomHistoryVisibility,{history_visibility:go.WorldReadable},"")),Promise.all([n,r]).then()}requestRegisterEmailToken(e,t,r,n){return this.requestTokenFromEndpoint("/register/email/requestToken",{email:e,client_secret:t,send_attempt:r,next_link:n})}requestRegisterMsisdnToken(e,t,r,n,a){return this.requestTokenFromEndpoint("/register/msisdn/requestToken",{country:e,phone_number:t,client_secret:r,send_attempt:n,next_link:a})}requestAdd3pidEmailToken(e,t,r,n){return this.requestTokenFromEndpoint("/account/3pid/email/requestToken",{email:e,client_secret:t,send_attempt:r,next_link:n})}requestAdd3pidMsisdnToken(e,t,r,n,a){return this.requestTokenFromEndpoint("/account/3pid/msisdn/requestToken",{country:e,phone_number:t,client_secret:r,send_attempt:n,next_link:a})}requestPasswordEmailToken(e,t,r,n){return this.requestTokenFromEndpoint("/account/password/email/requestToken",{email:e,client_secret:t,send_attempt:r,next_link:n})}requestPasswordMsisdnToken(e,t,r,n,a){return this.requestTokenFromEndpoint("/account/password/msisdn/requestToken",{country:e,phone_number:t,client_secret:r,send_attempt:n,next_link:a})}requestTokenFromEndpoint(e,t){var r=this;return R(function*(){var n=Object.assign({},t);return r.http.request(O.Post,e,void 0,n)})()}getRoomPushRule(e,t){if(this.pushRules){var r;return(r=this.pushRules[e])===null||r===void 0||(r=r.room)===null||r===void 0?void 0:r.find(n=>n.rule_id===t)}else throw new Error("SyncApi.sync() must be done before accessing to push rules.")}setRoomMutePushRule(e,t,r){var n,a=!1,s=this.getRoomPushRule(e,t);if(s!=null&&s.actions.includes(Dt.DontNotify)&&(a=!0),!r)a&&(n=this.deletePushRule(e,Ie.RoomSpecific,s.rule_id));else if(!s)n=this.addPushRule(e,Ie.RoomSpecific,t,{actions:[Dt.DontNotify]});else if(!a){var o=Promise.withResolvers();this.deletePushRule(e,Ie.RoomSpecific,s.rule_id).then(()=>{this.addPushRule(e,Ie.RoomSpecific,t,{actions:[Dt.DontNotify]}).then(()=>{o.resolve()}).catch(l=>{o.reject(l)})}).catch(l=>{o.reject(l)}),n=o.promise}if(n)return new Promise((l,d)=>{n.then(()=>{this.getPushRules().then(u=>{this.pushRules=u,l()}).catch(u=>{d(u)})}).catch(u=>{this.getPushRules().then(h=>{this.pushRules=h,d(u)}).catch(h=>{d(u)})})})}searchMessageText(e){var t={search_term:e.query};return"keys"in e&&(t.keys=e.keys),this.search({body:{search_categories:{room_events:t}}})}searchRoomEvents(e){var t={search_categories:{room_events:{search_term:e.term,filter:e.filter,order_by:Ju.Recent,event_context:{before_limit:1,after_limit:1,include_profile:!0}}}},r={_query:t,results:[],highlights:[]};return this.search({body:t}).then(n=>this.processRoomEventsSearch(r,n))}backPaginateRoomEventsSearch(e){if(!e.next_batch)return Promise.reject(new Error("Cannot backpaginate event search any further"));if(e.pendingRequest)return e.pendingRequest;var t={body:e._query,next_batch:e.next_batch},r=this.search(t,e.abortSignal).then(n=>this.processRoomEventsSearch(e,n)).finally(()=>{e.pendingRequest=void 0});return e.pendingRequest=r,r}processRoomEventsSearch(e,t){var r,n,a=t.search_categories.room_events;e.count=a.count,e.next_batch=a.next_batch;var s=new Set(a.highlights);e.highlights.forEach(E=>{s.add(E)}),e.highlights=Array.from(s);for(var o=this.getEventMapper(),l=(r=(n=a.results)===null||n===void 0?void 0:n.length)!==null&&r!==void 0?r:0,d=0;d<l;d++){var u=Gi.fromJson(a.results[d],o),h=this.getRoom(u.context.getEvent().getRoomId());if(h)for(var m of u.context.getTimeline())m.setMetadata(h.currentState,!1);e.results.push(u)}return e}syncLeftRooms(){if(this.syncedLeftRooms)return Promise.resolve([]);if(this.syncLeftRoomsPromise)return this.syncLeftRoomsPromise;var e=new Zr(this,this.clientOpts,this.buildSyncApiOptions());return this.syncLeftRoomsPromise=e.syncLeftRooms(),this.syncLeftRoomsPromise.then(()=>{this.logger.debug("Marking success of sync left room request"),this.syncedLeftRooms=!0}).finally(()=>{this.syncLeftRoomsPromise=void 0}),this.syncLeftRoomsPromise}createFilter(e){var t=A("/user/$userId/filter",{$userId:this.credentials.userId});return this.http.authedRequest(O.Post,t,void 0,e).then(r=>{var n=xe.fromJson(this.credentials.userId,r.filter_id,e);return this.store.storeFilter(n),n})}getFilter(e,t,r){if(r){var n=this.store.getFilter(e,t);if(n)return Promise.resolve(n)}var a=A("/user/$userId/filter/$filterId",{$userId:e,$filterId:t});return this.http.authedRequest(O.Get,a).then(s=>{var o=xe.fromJson(e,t,s);return this.store.storeFilter(o),o})}getOrCreateFilter(e,t){var r=this;return R(function*(){var n=r.store.getFilterIdByName(e),a;if(n){try{var s=yield r.getFilter(r.credentials.userId,n,!0);if(s){var o=s.getDefinition(),l=t.getDefinition();Xt(o,l)&&(a=n)}}catch(u){if(u.errcode!=="M_UNKNOWN"&&u.errcode!=="M_NOT_FOUND")throw u}a||r.store.setFilterIdByName(e,void 0)}if(a)return a;var d=yield r.createFilter(t.getDefinition());return r.store.setFilterIdByName(e,d.filterId),d.filterId})()}getOpenIdToken(){var e=A("/user/$userId/openid/request_token",{$userId:this.credentials.userId});return this.http.authedRequest(O.Post,e,void 0,{})}turnServer(){return this.http.authedRequest(O.Get,"/voip/turnServer")}getTurnServers(){return this.turnServers||[]}getTurnServersExpiry(){return this.turnServersExpiry}get pollingTurnServers(){return this.checkTurnServersIntervalID!==void 0}checkTurnServers(){var e=this;return R(function*(){if(e.supportsVoip()){var t=!1,r=e.turnServersExpiry-Date.now();if(r>Vs)e.logger.debug("TURN creds are valid for another "+r+" ms: not fetching new ones."),t=!0;else{e.logger.debug("Fetching new TURN credentials");try{var n=yield e.turnServer();if(n.uris){e.logger.debug("Got TURN URIs: "+n.uris+" refresh in "+n.ttl+" secs");var a={urls:n.uris,username:n.username,credential:n.password};e.turnServers=[a],e.turnServersExpiry=Date.now()+n.ttl*1e3,t=!0,e.emit(x.TurnServers,e.turnServers)}}catch(s){e.logger.error("Failed to get TURN URIs",s),s.httpStatus===403?(e.logger.info("TURN access unavailable for this account: stopping credentials checks"),e.checkTurnServersIntervalID!==null&&globalThis.clearInterval(e.checkTurnServersIntervalID),e.checkTurnServersIntervalID=void 0,e.emit(x.TurnServersError,s,!0)):e.emit(x.TurnServersError,s,!1)}}return t}})()}setFallbackICEServerAllowed(e){this.fallbackICEServerAllowed=e}isFallbackICEServerAllowed(){return this.fallbackICEServerAllowed}isSynapseAdministrator(){var e=A("/_synapse/admin/v1/users/$userId/admin",{$userId:this.getUserId()});return this.http.authedRequest(O.Get,e,void 0,void 0,{prefix:""}).then(t=>t.admin)}whoisSynapseUser(e){var t=A("/_synapse/admin/v1/whois/$userId",{$userId:e});return this.http.authedRequest(O.Get,t,void 0,void 0,{prefix:""})}deactivateSynapseUser(e){var t=A("/_synapse/admin/v1/deactivate/$userId",{$userId:e});return this.http.authedRequest(O.Post,t,void 0,void 0,{prefix:""})}fetchClientWellKnown(){var e=this;return R(function*(){var t;e.clientWellKnownPromise=H.getRawClientConfig((t=e.getDomain())!==null&&t!==void 0?t:void 0),e.clientWellKnown=yield e.clientWellKnownPromise,e.emit(x.ClientWellKnown,e.clientWellKnown)})()}getClientWellKnown(){return this.clientWellKnown}waitForClientWellKnown(){if(!this.clientRunning)throw new Error("Client is not running");return this.clientWellKnownPromise}storeClientOptions(){var e=["boolean","string","number"],t=Object.entries(this.clientOpts).filter(r=>{var[n,a]=r;return e.includes(typeof a)}).reduce((r,n)=>{var[a,s]=n;return r[a]=s,r},{});return this.store.storeClientOptions(t)}_unstable_getSharedRooms(e){var t=this;return R(function*(){var r=yield t.doesServerSupportUnstableFeature(Zc),n=yield t.doesServerSupportUnstableFeature(eh),a=yield t.doesServerSupportUnstableFeature(th);if(!r&&!n&&!a)throw Error("Server does not support the Mutual Rooms API");var s,o;a?(s="/uk.half-shot.msc2666/user/mutual_rooms",o={user_id:e}):(s=A("/uk.half-shot.msc2666/user/".concat(n?"mutual_rooms":"shared_rooms","/$userId"),{$userId:e}),o={});var l=[],d=null;do{var u={};d!=null&&a&&(u.batch_token=d);var h=yield t.http.authedRequest(O.Get,s,oe(oe({},o),u),void 0,{prefix:ce.Unstable});l.push(...h.joined),h.next_batch_token!==void 0?d=h.next_batch_token:d=null}while(d!=null);return l})()}_unstable_getRTCTransports(){var e=this;return R(function*(){return(yield e.http.authedRequest(O.Get,"/rtc/transports",void 0,void 0,{prefix:"".concat(ce.Unstable,"/org.matrix.msc4143")})).rtc_transports})()}getVersions(){var e=this;return R(function*(){if(e.serverVersionsPromise)return e.serverVersionsPromise;e.serverVersionsPromise=e.http.authedRequest(O.Get,"/_matrix/client/versions",void 0,void 0,{prefix:""}).catch(r=>{throw e.serverVersionsPromise=void 0,r});var t=yield e.serverVersionsPromise;return e.canSupport=yield Yd(t),e.serverVersionsPromise})()}isVersionSupported(e){var t=this;return R(function*(){var{versions:r}=yield t.getVersions();return r&&r.includes(e)})()}doesServerSupportUnstableFeature(e){var t=this;return R(function*(){var r=yield t.getVersions();if(!r)return!1;var n=r.unstable_features;return n&&!!n[e]})()}doesServerForceEncryptionForPreset(e){var t=this;return R(function*(){var r=yield t.getVersions();if(!r)return!1;var n=r.unstable_features,a=e.includes("_chat")?e.substring(0,e.indexOf("_chat")):e;return n&&!!n["io.element.e2ee_forced.".concat(a)]})()}doesServerSupportThread(){var e=this;return R(function*(){if(yield e.isVersionSupported("v1.4"))return{threads:Te.Stable,list:Te.Stable,fwdPagination:Te.Stable};try{var[t,r,n,a,s,o]=yield Promise.all([e.doesServerSupportUnstableFeature("org.matrix.msc3440"),e.doesServerSupportUnstableFeature("org.matrix.msc3440.stable"),e.doesServerSupportUnstableFeature("org.matrix.msc3856"),e.doesServerSupportUnstableFeature("org.matrix.msc3856.stable"),e.doesServerSupportUnstableFeature("org.matrix.msc3715"),e.doesServerSupportUnstableFeature("org.matrix.msc3715.stable")]);return{threads:Zn(r,t),list:Zn(a,n),fwdPagination:Zn(o,s)}}catch{return{threads:Te.None,list:Te.None,fwdPagination:Te.None}}})()}hasLazyLoadMembersEnabled(){var e;return!!((e=this.clientOpts)!==null&&e!==void 0&&e.lazyLoadMembers)}setCanResetTimelineCallback(e){this.canResetTimelineCallback=e}getCanResetTimelineCallback(){return this.canResetTimelineCallback}relations(e,t,r,n){var a=arguments,s=this;return R(function*(){var o,l,d=a.length>4&&a[4]!==void 0?a[4]:{dir:z.Backward},u=n?s.getEncryptedIfNeededEventType(e,n):null,[h,m]=yield Promise.all([s.fetchRoomEvent(e,t),s.fetchRelations(e,t,r,u,d)]),E=s.getEventMapper(),f=h?E(h):void 0,p=m.chunk.map(E);if(u===M.RoomMessageEncrypted){var I=f?p.concat(f):p;yield Promise.all(I.map(S=>s.decryptEventIfNeeded(S))),n!==null&&(p=p.filter(S=>S.getType()===n))}return f&&r===se.Replace&&(p=p.filter(S=>S.getSender()===f.getSender())),{originalEvent:f??null,events:p,nextBatch:(o=m.next_batch)!==null&&o!==void 0?o:null,prevBatch:(l=m.prev_batch)!==null&&l!==void 0?l:null}})()}generateClientSecret(){return _n(32)}decryptEventIfNeeded(e,t){return e.isState()&&!this.enableEncryptedStateEvents?Promise.resolve():(e.shouldAttemptDecryption()&&this.getCrypto()&&e.attemptDecryption(this.cryptoBackend,t),e.isBeingDecrypted()?e.getDecryptionPromise():Promise.resolve())}termsUrlForService(e,t){switch(e){case ps.IS:return this.http.getUrl("/terms",void 0,st.V2,t);case ps.IM:return this.http.getUrl("/terms",void 0,"/_matrix/integrations/v1",t);default:throw new Error("Unsupported service type")}}getHomeserverUrl(){return this.baseUrl}getIdentityServerUrl(){var e,t,r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;return r&&((e=this.idBaseUrl)!==null&&e!==void 0&&e.startsWith("http://")||(t=this.idBaseUrl)!==null&&t!==void 0&&t.startsWith("https://"))?this.idBaseUrl.split("://")[1]:this.idBaseUrl}setIdentityServerUrl(e){this.idBaseUrl=Dn(e),this.http.setIdBaseUrl(this.idBaseUrl)}getAccessToken(){return this.http.opts.accessToken||null}getRefreshToken(){var e;return(e=this.http.opts.refreshToken)!==null&&e!==void 0?e:null}setAccessToken(e){this.http.opts.accessToken=e,this.serverVersionsPromise=void 0}isLoggedIn(){return this.http.opts.accessToken!==void 0}makeTxnId(){return"m"+new Date().getTime()+"."+this.txnCtr++}isUsernameAvailable(e){return this.http.authedRequest(O.Get,"/register/available",{username:e}).then(t=>t.available).catch(t=>t.errcode==="M_USER_IN_USE"?!1:Promise.reject(t))}register(e,t,r,n,a,s,o){r&&(n.session=r);var l={auth:n,refresh_token:!0};return e!=null&&(l.username=e),t!=null&&(l.password=t),s!=null&&(l.guest_access_token=s),o!=null&&(l.inhibit_login=o),this.registerRequest(l)}registerGuest(){var{body:e}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return this.registerRequest(e||{},"guest")}registerRequest(e,t){var r={};return t&&(r.kind=t),this.http.request(O.Post,"/register",r,e)}refreshToken(e){var t=r=>this.http.authedRequest(O.Post,"/refresh",void 0,{refresh_token:e},{prefix:r,inhibitLogoutEmit:!0});return t(ce.V3).catch(r=>{if(r.errcode==="M_UNRECOGNIZED")return t(ce.V1);throw r})}loginFlows(){return this.http.request(O.Get,"/login")}login(e,t){return this.loginRequest(oe(oe({},t),{},{type:e})).then(r=>(r.access_token&&r.user_id&&(this.http.opts.accessToken=r.access_token,this.credentials={userId:r.user_id}),r))}loginWithPassword(e,t){return this.login("m.login.password",{user:e,password:t})}getCasLoginUrl(e){return this.getSsoLoginUrl(e,"cas")}getSsoLoginUrl(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"sso",r=arguments.length>2?arguments[2]:void 0,n=arguments.length>3?arguments[3]:void 0,a="/login/"+t+"/redirect";r&&(a+="/"+r);var s={redirectUrl:e,[Hs.stable]:n,[Hs.unstable]:n};return this.http.getUrl(a,s).href}loginWithToken(e){return this.login("m.login.token",{token:e})}loginRequest(e){var t=this;return R(function*(){return yield t.http.authedRequest(O.Post,"/login",void 0,e)})()}logout(){var e=arguments,t=this;return R(function*(){var r=e.length>0&&e[0]!==void 0?e[0]:!1;return r&&(t.stopClient(),t.http.abort()),t.http.authedRequest(O.Post,"/logout")})()}deactivateAccount(e,t){var r={};return e&&(r.auth=e),t!==void 0&&(r.erase=t),this.http.authedRequest(O.Post,"/account/deactivate",void 0,r)}requestLoginToken(e){var t=this;return R(function*(){var r={auth:e};return t.http.authedRequest(O.Post,"/login/get_token",void 0,r,{prefix:ce.V1})})()}getFallbackAuthUrl(e,t){var r=A("/auth/$loginType/fallback/web",{$loginType:e});return this.http.getUrl(r,{session:t}).href}createRoom(e){var t=this;return R(function*(){var r,n=(e.invite_3pid||[]).filter(o=>!o.id_access_token);if(n.length>0&&(r=t.identityServer)!==null&&r!==void 0&&r.getAccessToken){var a=yield t.identityServer.getAccessToken();if(a)for(var s of n)s.id_access_token=a}return t.http.authedRequest(O.Post,"/createRoom",void 0,e)})()}fetchRelations(e,t,r,n){var a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{dir:z.Backward},s=a;le.hasServerSideFwdPaginationSupport===Te.Experimental&&(s=Xi("dir","org.matrix.msc3715.dir",s)),this.canSupport.get(Se.RelationsRecursion)===Ee.Unstable&&(s=Xi("recurse","org.matrix.msc3981.recurse",s));var o=ri(s),l="/rooms/$roomId/relations/$eventId";r!==null?(l+="/$relationType",n!==null&&(l+="/$eventType")):n!==null&&(this.logger.warn("eventType: ".concat(n,` ignored when fetching
24
+ relations as relationType is null`)),n=null);var d=A(l+"?"+o,{$roomId:e,$eventId:t,$relationType:r,$eventType:n});return this.http.authedRequest(O.Get,d,void 0,void 0,{prefix:ce.V1})}roomState(e){var t=A("/rooms/$roomId/state",{$roomId:e});return this.http.authedRequest(O.Get,t)}fetchRoomEvent(e,t){var r=A("/rooms/$roomId/event/$eventId",{$roomId:e,$eventId:t});return this.http.authedRequest(O.Get,r)}members(e,t,r,n){var a={};t&&(a.membership=t),r&&(a.not_membership=r),n&&(a.at=n);var s=ri(a),o=A("/rooms/$roomId/members?"+s,{$roomId:e});return this.http.authedRequest(O.Get,o)}upgradeRoom(e,t,r){var n=A("/rooms/$roomId/upgrade",{$roomId:e});return this.http.authedRequest(O.Post,n,void 0,{new_version:t,additional_creators:r})}getStateEvent(e,t,r){var n={$roomId:e,$eventType:t,$stateKey:r},a=A("/rooms/$roomId/state/$eventType",n);return r!==void 0&&(a=A(a+"/$stateKey",n)),this.http.authedRequest(O.Get,a)}sendStateEvent(e,t,r){var n=arguments,a=this;return R(function*(){var s=n.length>3&&n[3]!==void 0?n[3]:"",o=n.length>4&&n[4]!==void 0?n[4]:{},l=a.getRoom(e),d=new Ge({room_id:e,type:t,state_key:s,content:r});yield a.encryptStateEventIfNeeded(d,l??void 0);var u={$roomId:e,$eventType:d.getWireType(),$stateKey:d.getWireStateKey()},h=A("/rooms/$roomId/state/$eventType",u);return s!==void 0&&(h=A(h+"/$stateKey",u)),a.http.authedRequest(O.Put,h,void 0,d.getWireContent(),o)})()}encryptStateEventIfNeeded(e,t){var r=this;return R(function*(){if(r.enableEncryptedStateEvents&&t&&!(!r.cryptoBackend&&r.usingExternalCrypto)){if(!r.cryptoBackend)throw new Error("This room is configured to use encryption, but your client does not support encryption.");(yield r.shouldEncryptEventForRoom(e,t))&&(yield r.cryptoBackend.isStateEncryptionEnabledInRoom(t.roomId))&&(["m.room.create","m.room.member","m.room.join_rules","m.room.power_levels","m.room.third_party_invite","m.room.history_visibility","m.room.guest_access","m.room.encryption"].includes(e.getType())||(yield r.cryptoBackend.encryptEvent(e,t)))}})()}roomInitialSync(e,t){var r,n=A("/rooms/$roomId/initialSync",{$roomId:e});return this.http.authedRequest(O.Get,n,{limit:(r=t?.toString())!==null&&r!==void 0?r:"30"})}setRoomReadMarkersHttpRequest(e,t,r,n){var a=this;return R(function*(){var s=A("/rooms/$roomId/read_markers",{$roomId:e}),o={[we.FullyRead]:t,[we.Read]:r};return((yield a.doesServerSupportUnstableFeature("org.matrix.msc2285.stable"))||(yield a.isVersionSupported("v1.4")))&&(o[we.ReadPrivate]=n),a.http.authedRequest(O.Post,s,void 0,o)})()}getJoinedRooms(){var e=A("/joined_rooms",{});return this.http.authedRequest(O.Get,e)}getJoinedRoomMembers(e){var t=A("/rooms/$roomId/joined_members",{$roomId:e});return this.http.authedRequest(O.Get,t)}publicRooms(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{server:t,limit:r,since:n}=e,a=Ul(e,Xc);if(Object.keys(a).length===0){var s={server:t,limit:r,since:n};return this.http.authedRequest(O.Get,"/publicRooms",s)}else{var o={server:t},l=oe({limit:r,since:n},a);return this.http.authedRequest(O.Post,"/publicRooms",o,l)}}createAlias(e,t){var r=A("/directory/room/$alias",{$alias:e}),n={room_id:t};return this.http.authedRequest(O.Put,r,void 0,n)}deleteAlias(e){var t=A("/directory/room/$alias",{$alias:e});return this.http.authedRequest(O.Delete,t)}getLocalAliases(e){var t=A("/rooms/$roomId/aliases",{$roomId:e}),r=ce.V3;return this.http.authedRequest(O.Get,t,void 0,void 0,{prefix:r})}getRoomIdForAlias(e){var t=A("/directory/room/$alias",{$alias:e});return this.http.authedRequest(O.Get,t)}getRoomDirectoryVisibility(e){var t=A("/directory/list/room/$roomId",{$roomId:e});return this.http.authedRequest(O.Get,t)}setRoomDirectoryVisibility(e,t){var r=A("/directory/list/room/$roomId",{$roomId:e});return this.http.authedRequest(O.Put,r,void 0,{visibility:t})}searchUserDirectory(e){var{term:t,limit:r}=e,n={search_term:t};return r!==void 0&&(n.limit=r),this.http.authedRequest(O.Post,"/user_directory/search",void 0,n)}uploadContent(e,t){return this.http.uploadContent(e,t)}cancelUpload(e){return this.http.cancelUpload(e)}getCurrentUploads(){return this.http.getCurrentUploads()}getProfileInfo(e,t){var r=t?A("/profile/$userId/$info",{$userId:e,$info:t}):A("/profile/$userId",{$userId:e});return this.http.authedRequest(O.Get,r)}doesServerSupportExtendedProfiles(){var e=this;return R(function*(){return(yield e.isVersionSupported("v1.16"))||(yield e.doesServerSupportUnstableFeature(rh))||(yield e.doesServerSupportUnstableFeature(nh))})()}getExtendedProfileRequestPrefix(){var e=this;return R(function*(){return(yield e.isVersionSupported("v1.16"))||(yield e.doesServerSupportUnstableFeature("uk.tcpip.msc4133.stable"))?ce.V3:"/_matrix/client/unstable/uk.tcpip.msc4133"})()}getExtendedProfile(e){var t=this;return R(function*(){if(!(yield t.doesServerSupportExtendedProfiles()))throw new Error("Server does not support extended profiles");return t.http.authedRequest(O.Get,A("/profile/$userId",{$userId:e}),void 0,void 0,{prefix:yield t.getExtendedProfileRequestPrefix()})})()}getExtendedProfileProperty(e,t){var r=this;return R(function*(){if(!(yield r.doesServerSupportExtendedProfiles()))throw new Error("Server does not support extended profiles");var n=yield r.http.authedRequest(O.Get,A("/profile/$userId/$key",{$userId:e,$key:t}),void 0,void 0,{prefix:yield r.getExtendedProfileRequestPrefix()});return n[t]})()}setExtendedProfileProperty(e,t){var r=this;return R(function*(){if(!(yield r.doesServerSupportExtendedProfiles()))throw new Error("Server does not support extended profiles");var n=r.getUserId();yield r.http.authedRequest(O.Put,A("/profile/$userId/$key",{$userId:n,$key:e}),void 0,{[e]:t},{prefix:yield r.getExtendedProfileRequestPrefix()})})()}deleteExtendedProfileProperty(e){var t=this;return R(function*(){if(!(yield t.doesServerSupportExtendedProfiles()))throw new Error("Server does not support extended profiles");var r=t.getUserId();yield t.http.authedRequest(O.Delete,A("/profile/$userId/$key",{$userId:r,$key:e}),void 0,void 0,{prefix:yield t.getExtendedProfileRequestPrefix()})})()}patchExtendedProfile(e){var t=this;return R(function*(){if(!(yield t.doesServerSupportExtendedProfiles()))throw new Error("Server does not support extended profiles");var r=t.getUserId();return t.http.authedRequest(O.Patch,A("/profile/$userId",{$userId:r}),{},e,{prefix:yield t.getExtendedProfileRequestPrefix()})})()}setExtendedProfile(e){var t=this;return R(function*(){if(!(yield t.doesServerSupportExtendedProfiles()))throw new Error("Server does not support extended profiles");var r=t.getUserId();yield t.http.authedRequest(O.Put,A("/profile/$userId",{$userId:r}),{},e,{prefix:yield t.getExtendedProfileRequestPrefix()})})()}getThreePids(){return this.http.authedRequest(O.Get,"/account/3pid")}addThreePidOnly(e){var t=this;return R(function*(){var r="/account/3pid/add";return t.http.authedRequest(O.Post,r,void 0,e)})()}bindThreePid(e){var t=this;return R(function*(){var r="/account/3pid/bind";return t.http.authedRequest(O.Post,r,void 0,e)})()}unbindThreePid(e,t){var r=this;return R(function*(){var n="/account/3pid/unbind",a={medium:e,address:t,id_server:r.getIdentityServerUrl(!0)};return r.http.authedRequest(O.Post,n,void 0,a)})()}deleteThreePid(e,t){var r="/account/3pid/delete";return this.http.authedRequest(O.Post,r,void 0,{medium:e,address:t})}setPassword(e,t,r){var n="/account/password",a={auth:e,new_password:t,logout_devices:r};return this.http.authedRequest(O.Post,n,void 0,a)}getDevices(){return this.http.authedRequest(O.Get,"/devices")}getDevice(e){var t=A("/devices/$device_id",{$device_id:e});return this.http.authedRequest(O.Get,t)}setDeviceDetails(e,t){var r=A("/devices/$device_id",{$device_id:e});return this.http.authedRequest(O.Put,r,void 0,t)}deleteDevice(e,t){var r=A("/devices/$device_id",{$device_id:e}),n={};return t&&(n.auth=t),this.http.authedRequest(O.Delete,r,void 0,n)}deleteMultipleDevices(e,t){var r={devices:e};t&&(r.auth=t);var n="/delete_devices";return this.http.authedRequest(O.Post,n,void 0,r)}getPushers(){var e=this;return R(function*(){var t=yield e.http.authedRequest(O.Get,"/pushers");return(yield e.doesServerSupportUnstableFeature("org.matrix.msc3881"))||(t.pushers=t.pushers.map(r=>(r.hasOwnProperty(ka.name)||(r[ka.name]=!0),r))),t})()}setPusher(e){var t="/pushers/set";return this.http.authedRequest(O.Post,t,void 0,e)}removePusher(e,t){var r="/pushers/set",n={pushkey:e,app_id:t,kind:null};return this.http.authedRequest(O.Post,r,void 0,n)}setLocalNotificationSettings(e,t){var r="".concat(Al.name,".").concat(e);return this.setAccountData(r,t)}getPushRules(){return this.http.authedRequest(O.Get,"/pushrules/").then(e=>(this.setPushRules(e),this.pushRules))}setPushRules(e){this.pushRules=qe.rewriteDefaultRules(this.logger,e,this.getUserId()),this.pushProcessor.updateCachedPushRuleKeys(this.pushRules)}addPushRule(e,t,r,n){var a=A("/pushrules/"+e+"/$kind/$ruleId",{$kind:t,$ruleId:r});return this.http.authedRequest(O.Put,a,void 0,n)}deletePushRule(e,t,r){var n=A("/pushrules/"+e+"/$kind/$ruleId",{$kind:t,$ruleId:r});return this.http.authedRequest(O.Delete,n)}setPushRuleEnabled(e,t,r,n){var a=A("/pushrules/"+e+"/$kind/$ruleId/enabled",{$kind:t,$ruleId:r});return this.http.authedRequest(O.Put,a,void 0,{enabled:n})}setPushRuleActions(e,t,r,n){var a=A("/pushrules/"+e+"/$kind/$ruleId/actions",{$kind:t,$ruleId:r});return this.http.authedRequest(O.Put,a,void 0,{actions:n})}search(e,t){var{body:r,next_batch:n}=e,a={};return n&&(a.next_batch=n),this.http.authedRequest(O.Post,"/search",a,r,{abortSignal:t})}uploadKeysRequest(e,t){return this.http.authedRequest(O.Post,"/keys/upload",void 0,e)}uploadKeySignatures(e){return this.http.authedRequest(O.Post,"/keys/signatures/upload",void 0,e)}downloadKeysForUsers(e){var{token:t}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r={device_keys:{}};return t!==void 0&&(r.token=t),e.forEach(n=>{r.device_keys[n]=[]}),this.http.authedRequest(O.Post,"/keys/query",void 0,r)}claimOneTimeKeys(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"signed_curve25519",r=arguments.length>2?arguments[2]:void 0,n={};t===void 0&&(t="signed_curve25519");for(var[a,s]of e){var o=n[a]||{};oi(n,a,o),oi(o,s,t)}var l={one_time_keys:n};r&&(l.timeout=r);var d="/keys/claim";return this.http.authedRequest(O.Post,d,void 0,l)}getKeyChanges(e,t){var r={from:e,to:t};return this.http.authedRequest(O.Get,"/keys/changes",r)}uploadDeviceSigningKeys(e,t){var r=Object.assign({},t);return e&&Object.assign(r,{auth:e}),this.http.authedRequest(O.Post,"/keys/device_signing/upload",void 0,r,{prefix:ce.Unstable})}registerWithIdentityServer(e){if(!this.idBaseUrl)throw new Error("No identity server base URL set");var t=this.http.getUrl("/account/register",void 0,st.V2,this.idBaseUrl);return this.http.requestOtherUrl(O.Post,t,e)}requestEmailToken(e,t,r,n,a){var s={client_secret:t,email:e,send_attempt:r?.toString()};return n&&(s.next_link=n),this.http.idServerRequest(O.Post,"/validate/email/requestToken",s,st.V2,a)}requestMsisdnToken(e,t,r,n,a,s){var o={client_secret:r,country:e,phone_number:t,send_attempt:n?.toString()};return a&&(o.next_link=a),this.http.idServerRequest(O.Post,"/validate/msisdn/requestToken",o,st.V2,s)}submitMsisdnToken(e,t,r,n){var a={sid:e,client_secret:t,token:r};return this.http.idServerRequest(O.Post,"/validate/msisdn/submitToken",a,st.V2,n??void 0)}submitMsisdnTokenOtherUrl(e,t,r,n){var a={sid:t,client_secret:r,token:n};return this.http.requestOtherUrl(O.Post,e,a)}getIdentityHashDetails(e){return this.http.idServerRequest(O.Get,"/hash_details",void 0,st.V2,e)}identityHashedLookup(e,t){var r=this;return R(function*(){var n={},a=yield r.getIdentityHashDetails(t);if(!a||!a.lookup_pepper||!a.algorithms)throw new Error("Unsupported identity server: bad response");n.pepper=a.lookup_pepper;var s={};if(a.algorithms.includes("sha256"))n.addresses=yield Promise.all(e.map((function(){var m=R(function*(E){var f=E[0].toLowerCase(),p=E[1].toLowerCase(),I=yield Ko("".concat(f," ").concat(p," ").concat(n.pepper)),S=Lo(I);return s[S]=E[0],S});return function(E){return m.apply(this,arguments)}})())),n.algorithm="sha256";else if(a.algorithms.includes("none"))n.addresses=e.map(m=>{var E=m[0].toLowerCase(),f=m[1].toLowerCase(),p="".concat(E," ").concat(f);return s[p]=m[0],p}),n.algorithm="none";else throw new Error("Unsupported identity server: unknown hash algorithm");var o=yield r.http.idServerRequest(O.Post,"/lookup",n,st.V2,t);if(!(o!=null&&o.mappings))return[];var l=[];for(var d of Object.keys(o.mappings)){var u=o.mappings[d],h=s[d];if(!h)throw new Error("Identity server returned more results than expected");l.push({address:h,mxid:u})}return l})()}lookupThreePid(e,t,r){var n=this;return R(function*(){var a=yield n.identityHashedLookup([[t,e]],r),s=a.find(l=>l.address===t);if(!s)return{};var o={address:t,medium:e,mxid:s.mxid};return o})()}bulkLookupThreePids(e,t){var r=this;return R(function*(){var n=yield r.identityHashedLookup(e.map(l=>[l[1],l[0]]),t),a=[],s=function*(d){var u=e.find(h=>h[1]===d.address);if(!u)throw new Error("Identity sever returned unexpected results");a.push([u[0],d.address,d.mxid])};for(var o of n)yield*s(o);return{threepids:a}})()}getIdentityAccount(e){return this.http.idServerRequest(O.Get,"/account",void 0,st.V2,e)}sendToDevice(e,t,r){var n=A("/sendToDevice/$eventType/$txnId",{$eventType:e,$txnId:r||this.makeTxnId()}),a={messages:Pi(t)},s=new Map;for(var[o,l]of t)s.set(o,Array.from(l.keys()));return this.logger.debug("PUT ".concat(n),s),this.http.authedRequest(O.Put,n,void 0,a)}encryptAndSendToDevice(e,t,r){var n=this;return R(function*(){if(!n.cryptoBackend)throw new Error("Cannot encrypt to device event, your client does not support encryption.");var a=yield n.cryptoBackend.encryptToDeviceMessages(e,t,r);yield n.queueToDevice(a)})()}queueToDevice(e){return this.toDeviceMessageQueue.queueBatch(e)}getThirdpartyProtocols(){return this.http.authedRequest(O.Get,"/thirdparty/protocols").then(e=>{if(!e||typeof e!="object")throw new Error("/thirdparty/protocols did not return an object: ".concat(e));return e})}getThirdpartyLocation(e,t){var r=A("/thirdparty/location/$protocol",{$protocol:e});return this.http.authedRequest(O.Get,r,t)}getThirdpartyUser(e,t){var r=A("/thirdparty/user/$protocol",{$protocol:e});return this.http.authedRequest(O.Get,r,t)}getTerms(e,t){var r=this.termsUrlForService(e,t);return this.http.requestOtherUrl(O.Get,r)}agreeToTerms(e,t,r,n){var a=this.termsUrlForService(e,t),s={Authorization:"Bearer "+r};return this.http.requestOtherUrl(O.Post,a,{user_accepts:n},{headers:s})}reportEvent(e,t,r,n){var a=A("/rooms/$roomId/report/$eventId",{$roomId:e,$eventId:t});return this.http.authedRequest(O.Post,a,void 0,{score:r,reason:n})}reportRoom(e,t){var r=A("/rooms/$roomId/report",{$roomId:e});return this.http.authedRequest(O.Post,r,void 0,{reason:t})}getRoomHierarchy(e,t,r){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,a=arguments.length>4?arguments[4]:void 0,s=A("/rooms/$roomId/hierarchy",{$roomId:e}),o={suggested_only:String(n),max_depth:r?.toString(),from:a,limit:t?.toString()};return this.http.authedRequest(O.Get,s,o,void 0,{prefix:ce.V1}).catch(l=>{if(l.errcode==="M_UNRECOGNIZED")return this.http.authedRequest(O.Get,s,o,void 0,{prefix:"/_matrix/client/unstable/org.matrix.msc2946"});throw l})}unstableCreateFileTree(e){var t=this;return R(function*(){var{room_id:r}=yield t.createRoom({name:e,preset:po.PrivateChat,power_level_content_override:oe(oe({},Wu),{},{users:{[t.getUserId()]:100}}),creation_content:{[li]:Ir.Space},initial_state:[{type:wa.name,state_key:Ma.name,content:{[Ca.name]:!0}},{type:M.RoomEncryption,state_key:"",content:{algorithm:"m.megolm.v1.aes-sha2"}}]});return new Rs(t,r)})()}unstableGetFileTreeSpace(e){var t,r,n=this.getRoom(e);if(n?.getMyMembership()!==J.Join)return null;var a=n.currentState.getStateEvents(M.RoomCreate,""),s=n.currentState.getStateEvents(wa.name,Ma.name);if(!a)throw new Error("Expected single room create event");return!(s!=null&&(t=s.getContent())!==null&&t!==void 0&&t[Ca.name])||((r=a.getContent())===null||r===void 0?void 0:r[li])!==Ir.Space?null:new Rs(this,e)}slidingSync(e,t,r){var n={};e.pos&&(n.pos=e.pos,delete e.pos),e.timeout&&(n.timeout=e.timeout,delete e.timeout);var a=e.clientTimeout;return delete e.clientTimeout,this.http.authedRequest(O.Post,"/sync",n,e,{prefix:"/_matrix/client/unstable/org.matrix.simplified_msc3575",baseUrl:t,localTimeoutMs:a,abortSignal:r})}supportsThreads(){var e;return((e=this.clientOpts)===null||e===void 0?void 0:e.threadSupport)||!1}supportsIntentionalMentions(){return this.canSupport.get(Se.IntentionalMentions)!==Ee.Unsupported}getRoomSummary(e,t){var r=this;return R(function*(){var n={prefix:"/_matrix/client/unstable/im.nheko.summary"};try{var a=A("/summary/$roomid",{$roomid:e});return yield r.http.authedRequest(O.Get,a,{via:t},void 0,n)}catch(o){if(o instanceof ue&&o.errcode==="M_UNRECOGNIZED"){var s=A("/rooms/$roomid/summary",{$roomid:e});return yield r.http.authedRequest(O.Get,s,{via:t},void 0,n)}else throw o}})()}processThreadEvents(e,t,r){e.processThreadedEvents(t,r)}processThreadRoots(e,t,r){this.supportsThreads()&&e.processThreadRoots(t,r)}processBeaconEvents(e,t){this.processAggregatedTimelineEvents(e,t)}processAggregatedTimelineEvents(e,t){t!=null&&t.length&&e&&(e.currentState.processBeaconEvents(t,this),e.processPollEvents(t))}whoami(){var e=this;return R(function*(){return e.http.authedRequest(O.Get,"/account/whoami")})()}timestampToEvent(e,t,r){var n=this;return R(function*(){var a=A("/rooms/$roomId/timestamp_to_event",{$roomId:e}),s={ts:t.toString(),dir:r};try{return yield n.http.authedRequest(O.Get,a,s,void 0,{prefix:ce.V1})}catch(o){if(o.errcode==="M_UNRECOGNIZED"&&(o.httpStatus===400||o.httpStatus===404||o.httpStatus===405))return yield n.http.authedRequest(O.Get,a,s,void 0,{prefix:"/_matrix/client/unstable/org.matrix.msc3030"});throw o}})()}getAuthMetadata(){var e=this;return R(function*(){var t;try{var r=yield e.isVersionSupported("v1.15");t=yield e.http.request(O.Get,"/auth_metadata",void 0,void 0,{prefix:r?ce.V1:ce.Unstable+"/org.matrix.msc2965"})}catch(a){if(a instanceof ue&&a.errcode==="M_UNRECOGNIZED"){var{issuer:n}=yield e.http.request(O.Get,"/auth_issuer",void 0,void 0,{prefix:ce.Unstable+"/org.matrix.msc2965"});return zc(n)}throw a}return qo(t)})()}}c(ih,"RESTORE_BACKUP_ERROR_BAD_KEY","RESTORE_BACKUP_ERROR_BAD_KEY");function Gs(i){return Object.fromEntries(Object.entries(i).map(e=>{var[t,r]=e;return["".concat(Ve,".").concat(t),r]}))}function ah(i,e){var t,r=i.getUserId(),n=e.getId(),a=i.getRoom(e.getRoomId());if(!(!a||!r||!n)){if(!a.findEventById(n)){T.info("Decrypted event ".concat(e.getId()," is not in room ").concat(a.roomId,": ignoring"));return}var s=!!e.threadRootId&&!e.isThreadRoot,o;if(s){var l=a.getThread(e.threadRootId);o=l?l.hasUserReadEvent(r,n):!0}else o=a.hasUserReadEvent(r,n);if(!o){var d=i.getPushActionsForEvent(e,!0),u=!!(d!=null&&(t=d.tweaks)!==null&&t!==void 0&&t.highlight);if(u){var h=a.getUnreadCountForEventContext(Q.Highlight,e)+1;s?a.setThreadUnreadNotificationCount(e.threadRootId,Q.Highlight,h):a.setUnreadNotificationCount(Q.Highlight,h)}var m=!!(d!=null&&d.notify);if(m){var E=a.getUnreadCountForEventContext(Q.Total,e)+1;s?a.setThreadUnreadNotificationCount(e.threadRootId,Q.Total,E):a.setUnreadNotificationCount(Q.Total,E)}}}}function Fr(i){return Cn(i)?On:i.threadRootId}function Cn(i){if(!i.threadRootId||i.isThreadRoot)return!0;if(!i.isRelation())return T.warn("Event is not a relation or a thread root, but still has a threadRootId! id=".concat(i.getId())),!0;if(i.isRelation(re.name))return!1;var e=i.relationEventId===i.threadRootId;return e}function $s(i,e){var t=Object.keys(i);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(i);e&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(i,n).enumerable})),t.push.apply(t,r)}return t}function Ws(i){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?$s(Object(t),!0).forEach(function(r){c(i,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(t)):$s(Object(t)).forEach(function(r){Object.defineProperty(i,r,Object.getOwnPropertyDescriptor(t,r))})}return i}var Ce=(function(i){return i.New="Thread.new",i.Update="Thread.update",i.NewReply="Thread.newReply",i.ViewThread="Thread.viewThread",i.Delete="Thread.delete",i})({}),Te=(function(i){return i[i.None=0]="None",i[i.Experimental=1]="Experimental",i[i.Stable=2]="Stable",i})({});function Zn(i,e){return i?Te.Stable:e?Te.Experimental:Te.None}class le extends Ro{constructor(e,t,r){var n,a;if(super(),n=this,this.id=e,this.rootEvent=t,c(this,"timelineSet",void 0),c(this,"_currentUserParticipated",!1),c(this,"reEmitter",void 0),c(this,"lastEvent",void 0),c(this,"replyCount",0),c(this,"lastPendingEvent",void 0),c(this,"pendingReplyCount",0),c(this,"room",void 0),c(this,"client",void 0),c(this,"pendingEventOrdering",void 0),c(this,"processRootEventPromise",void 0),c(this,"initialEventsFetched",!le.hasServerSideSupport),c(this,"initalEventFetchProm",void 0),c(this,"replayEvents",[]),c(this,"onTimelineReset",R(function*(){yield n.processRootEventPromise,n.processRootEventPromise=void 0})),c(this,"onBeforeRedaction",(s,o)=>{s!=null&&s.isRelation(re.name)&&this.room.eventShouldLiveIn(s).threadId===this.id&&s.getId()!==this.id&&!o.status&&(this.replyCount--,this.updatePendingReplyCount(),this.emit(Ce.Update,this))}),c(this,"onRedaction",(function(){var s=R(function*(o,l,d){if(d===n.id)if(n.replyCount<=0){for(var u of n.timeline)n.clearEventMetadata(u);n.lastEvent=n.rootEvent,n._currentUserParticipated=!1,n.emit(Ce.Delete,n)}else{var h;((h=n.lastEvent)===null||h===void 0?void 0:h.getId())===o.getAssociatedId()&&(yield n.processRootEventPromise,n.processRootEventPromise=void 0),yield n.updateThreadMetadata()}});return function(o,l,d){return s.apply(this,arguments)}})()),c(this,"onTimelineEvent",(s,o,l)=>{if(!l){var d=s.getSender();d&&o&&this.shouldSendLocalEchoReceipt(d,s)&&o.addLocalEchoReceipt(d,s,we.Read),s.getId()!==this.id&&s.isRelation(re.name)&&this.replyCount++}this.onEcho(s,l??!1)}),c(this,"onLocalEcho",s=>{this.onEcho(s,!1)}),c(this,"onEcho",(function(){var s=R(function*(o,l){o.threadRootId===n.id&&n.lastEvent!==o&&(yield n.updateThreadMetadata(),o.isRelation(re.name)&&(l||(n.lastEvent=void 0,n.emit(Ce.NewReply,n,o))))});return function(o,l){return s.apply(this,arguments)}})()),this.setMaxListeners(1e3),!(r!=null&&r.room))throw new Error("element-web#22141: A thread requires a room in order to function");this.room=r.room,this.client=r.client,this.pendingEventOrdering=(a=r.pendingEventOrdering)!==null&&a!==void 0?a:xr.Chronological,this.timelineSet=new br(this.room,{timelineSupport:!0,pendingEvents:!0},this.client,this),this.reEmitter=new ir(this),this.reEmitter.reEmit(this.timelineSet,[U.Timeline,U.TimelineReset]),this.room.on(ee.BeforeRedaction,this.onBeforeRedaction),this.room.on(U.Redaction,this.onRedaction),this.room.on(U.LocalEchoUpdated,this.onLocalEcho),this.room.on(U.TimelineReset,this.onTimelineReset),this.timelineSet.on(U.Timeline,this.onTimelineEvent),this.processReceipts(r.receipts),this.updateThreadMetadata(),this.setEventMetadata(this.rootEvent)}fetchRootEvent(){var e=this;return R(function*(){try{var t=yield e.client.fetchRoomEvent(e.roomId,e.id),r=e.client.getEventMapper();e.rootEvent=r(t)}catch(n){T.error("Failed to fetch thread root to construct thread with",n)}yield e.processEvent(e.rootEvent)})()}static setServerSideSupport(e){le.hasServerSideSupport=e,e!==Te.Stable&&(Or.setPreferUnstable(!0),kr.setPreferUnstable(!0),re.setPreferUnstable(!0))}static setServerSideListSupport(e){le.hasServerSideListSupport=e}static setServerSideFwdPaginationSupport(e){le.hasServerSideFwdPaginationSupport=e}shouldSendLocalEchoReceipt(e,t){var r,n=(r=this.client.canSupport.get(Se.RelationsRecursion))!==null&&r!==void 0?r:Ee.Unsupported;if(n===Ee.Unsupported){var a,s=(a=this.getReadReceiptForUserId(e))===null||a===void 0?void 0:a.eventId;if(s){var o=this.findEventById(s);if(o&&o.getTs()>t.getTs())return!1}}return!0}get roomState(){return this.room.getLiveTimeline().getState(N.FORWARDS)}addEventToTimeline(e,t){this.findEventById(e.getId())||this.timelineSet.addEventToTimeline(e,this.liveTimeline,{toStartOfTimeline:t,fromCache:!1,roomState:this.roomState,addToState:!1})}insertEventIntoTimeline(e){var t=e.getId();t&&(this.findEventById(t)||this.timelineSet.insertEventIntoTimeline(e,this.liveTimeline,this.roomState,!1))}addEvents(e,t){e.forEach(r=>this.addEvent(r,t,!1)),this.updateThreadMetadata()}addEvent(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;this.setEventMetadata(e);var n=this.lastReply(),a=!n||e.localTimestamp>=n.localTimestamp;if(!le.hasServerSideSupport)this.addEventToTimeline(e,t),this.client.decryptEventIfNeeded(e);else if(e.isRelation(se.Annotation)||e.isRelation(se.Replace)){this.addRelatedThreadEvent(e,t);return}else!t&&a?(this.addEventToTimeline(e,!1),this.fetchEditsWhereNeeded(e)):t?this.addEventToTimeline(e,t):this.insertEventIntoTimeline(e);e.getId()!==this.id&&e.isRelation(re.name)&&!t&&a&&(this.lastEvent=void 0),r&&(this.emit(Ce.NewReply,this,e),this.updateThreadMetadata())}addRelatedThreadEvent(e,t){if(this.initialEventsFetched){var a,s=(a=this.client.canSupport.get(Se.RelationsRecursion))!==null&&a!==void 0?a:Ee.Unsupported;s===Ee.Unsupported?this.insertEventIntoTimeline(e):this.addEventToTimeline(e,t)}else{var r;if((r=this.replayEvents)===null||r===void 0||r.push(e),e.isRelation(se.Annotation)){var n;(n=this.timelineSet.relations)===null||n===void 0||n.aggregateChildEvent(e,this.timelineSet)}}}processEvent(e){var t=this;return R(function*(){e&&(t.setEventMetadata(e),yield t.fetchEditsWhereNeeded(e))})()}processReceipts(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[];for(var{eventId:t,receiptType:r,userId:n,receipt:a,synthetic:s}of e)this.addReceiptToStructure(t,r,n,a,s)}getRootEventBundledRelationship(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.rootEvent;return e?.getServerAggregatedRelation(re.name)}processRootEvent(){var e=this;return R(function*(){var t=e.getRootEventBundledRelationship();if(le.hasServerSideSupport&&t){e.replyCount=t.count,e._currentUserParticipated=!!t.current_user_participated;var r=e.client.getEventMapper();e.lastEvent=r(Ws(Ws({},t.latest_event),{},{room_id:e.roomId})),e.updatePendingReplyCount(),yield e.processEvent(e.lastEvent)}})()}updatePendingReplyCount(){var e=this.pendingEventOrdering===xr.Detached?this.room.getPendingEvents():this.events,t=e.filter(r=>{var n;return r.threadRootId===this.id&&r.isRelation(re.name)&&r.status!==null&&r.getId()!==((n=this.lastEvent)===null||n===void 0?void 0:n.getId())});this.lastPendingEvent=t.length?t[t.length-1]:void 0,this.pendingReplyCount=t.length}resetLiveTimeline(e,t){var r=this;return R(function*(){var n=r.liveTimeline;r.timelineSet.resetLiveTimeline(e??void 0,t??void 0);var a=r.liveTimeline,s,o;if(e){var l=yield r.client.createMessagesRequest(r.roomId,e,1,z.Forward);s=l.end}if(t){var d=yield r.client.createMessagesRequest(r.roomId,t,1,z.Backward);o=d.start}t&&n.getPaginationToken(z.Forward)===t&&n.setPaginationToken(o??null,z.Forward),e&&a.getPaginationToken(z.Backward)===e&&a.setPaginationToken(s??null,z.Backward)})()}updateThreadFromRootEvent(){var e=this;return R(function*(){le.hasServerSideSupport&&(!e.initialEventsFetched&&!e.lastEvent&&(yield e.processRootEvent()),yield e.fetchRootEvent()),yield e.processRootEvent()})()}updateThreadMetadata(){var e=this;return R(function*(){if(e.updatePendingReplyCount(),e.processRootEventPromise||(e.processRootEventPromise=e.updateThreadFromRootEvent()),yield e.processRootEventPromise,!e.initialEventsFetched)if(e.initalEventFetchProm)yield e.initalEventFetchProm;else try{e.timelineSet.resetLiveTimeline(),e.replyCount===0&&e.rootEvent?(e.timelineSet.addEventsToTimeline([e.rootEvent],!0,!1,e.liveTimeline,null),e.liveTimeline.setPaginationToken(null,z.Backward)):(e.initalEventFetchProm=e.client.paginateEventTimeline(e.liveTimeline,{backwards:!0}),yield e.initalEventFetchProm),e.initialEventsFetched=!0;for(var t of e.replayEvents)e.addEvent(t,!1);e.replayEvents=null,e.emit(U.TimelineReset,e.room,e.timelineSet,!0)}catch(r){T.error("Failed to load start of newly created thread: ",r),e.initialEventsFetched=!1}e.emit(Ce.Update,e)})()}fetchEditsWhereNeeded(){var e=arguments,t=this;return R(function*(){var r,n=(r=t.client.canSupport.get(Se.RelationsRecursion))!==null&&r!==void 0?r:Ee.Unsupported;if(n===Ee.Unsupported){for(var a=e.length,s=new Array(a),o=0;o<a;o++)s[o]=e[o];return Promise.all(s.filter(sh).map((function(){var l=R(function*(d){try{var u=yield t.client.relations(t.roomId,d.getId(),se.Replace,d.getType(),{limit:1});if(u.events.length){var h=u.events[0];d.makeReplaced(h),t.insertEventIntoTimeline(h)}}catch(m){T.error("Failed to load edits for encrypted thread event",m)}});return function(d){return l.apply(this,arguments)}})()))}})()}setEventMetadata(e){e&&(N.setEventMetadata(e,this.roomState,!1),e.setThread(this))}clearEventMetadata(e){if(e){var t;e.setThread(void 0),(t=e.event)===null||t===void 0||(t=t.unsigned)===null||t===void 0||(t=t["m.relations"])===null||t===void 0||delete t[re.name]}}findEventById(e){return this.timelineSet.findEventById(e)}lastReply(){for(var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:n=>n.isRelation(re.name),t=this.timeline.length-1;t>=0;t--){var r=this.timeline[t];if(e(r))return r}return null}get roomId(){return this.room.roomId}get length(){return this.replyCount+this.pendingReplyCount}get replyToEvent(){var e,t;return(e=(t=this.lastPendingEvent)!==null&&t!==void 0?t:this.lastEvent)!==null&&e!==void 0?e:this.lastReply()}get timeline(){return this.events}get events(){return this.liveTimeline.getEvents()}has(e){return this.timelineSet.findEventById(e)instanceof Ge}get hasCurrentUserParticipated(){return this._currentUserParticipated}get liveTimeline(){return this.timelineSet.getLiveTimeline()}getUnfilteredTimelineSet(){return this.timelineSet}addReceipt(e,t){throw new Error("Unsupported function on the thread model")}getEventReadUpTo(e,t){var r=e===this.client.getUserId(),n=this.timeline[this.timeline.length-1];if(r&&n){var a=n.getTs()<this.room.getOldestThreadedReceiptTs(),s=n.getId();if(a&&s)return s}var o=super.getEventReadUpTo(e,t);if(n){var l=this.room.getLastUnthreadedReceiptFor(e);if(!l)return o;for(var d=((u=this.timeline)===null||u===void 0?void 0:u.length)-1;d>=0;--d){var u,h,m=this.timeline[d];if(m.getId()===o)return o;if(m.getTs()<l.ts)return(h=m.getId())!==null&&h!==void 0?h:o}}return o}hasUserReadEvent(e,t){if(e===this.client.getUserId()){var r,n,a,s,o,l,d=((r=(n=this.lastReply())===null||n===void 0?void 0:n.getTs())!==null&&r!==void 0?r:0)<this.room.getOldestThreadedReceiptTs(),u=(a=(s=this.room.getLastUnthreadedReceiptFor(e))===null||s===void 0?void 0:s.ts)!==null&&a!==void 0?a:0,h=((o=this===null||this===void 0||(l=this.lastReply())===null||l===void 0?void 0:l.getTs())!==null&&o!==void 0?o:0)<u;if(d||h)return!0}return this.room.hasUserReadEvent(e,t)}setUnread(e,t){return this.room.setThreadUnreadNotificationCount(this.id,e,t)}getLastUnthreadedReceiptFor(e){return this.room.getLastUnthreadedReceiptFor(e)}}c(le,"hasServerSideSupport",Te.None);c(le,"hasServerSideListSupport",Te.None);c(le,"hasServerSideFwdPaginationSupport",Te.None);function sh(i){return i.isEncrypted()&&(i.isRelation(re.name)||i.isThreadRoot)}var Or=new Mn("related_by_senders","io.element.relation_senders"),kr=new Mn("related_by_rel_types","io.element.relation_types"),re=new Mn("m.thread","io.element.thread"),Xe=(function(i){return i[i.My=0]="My",i[i.All=1]="All",i})({});function oh(i){return i===Xe.My?"participated":"all"}class Js extends Error{constructor(e,t,r){super(t),this.code=e,c(this,"detailedString",void 0),this.name="DecryptionError",this.detailedString=lh(this,r)}}function lh(i,e){var t=i.name+"[msg: "+i.message;return e&&(t+=", "+Object.keys(e).map(r=>r+": "+e[r]).join(", ")),t+="]",t}var zs=Object.freeze({visible:!0}),Ho=36e5,ee=(function(i){return i.Decrypted="Event.decrypted",i.BeforeRedaction="Event.beforeRedaction",i.VisibilityChange="Event.visibilityChange",i.LocalEventIdReplaced="Event.localEventIdReplaced",i.Status="Event.status",i.Replaced="Event.replaced",i.RelationsCreated="Event.relationsCreated",i.SentinelUpdated="Event.sentinelUpdated",i})({});class Ge extends fe{setMetadata(e,t){var r,n,a=this.isState()&&this.getType()===M.RoomMember&&this.getSender()===this.getStateKey(),s=!1;if(a||!((r=this.sender)!==null&&r!==void 0&&(r=r.events)!==null&&r!==void 0&&r.member)){var o=e.getSentinelMember(this.getSender());o!==this.sender&&(s=!0),this.sender=o}if(a||!((n=this.target)!==null&&n!==void 0&&(n=n.events)!==null&&n!==void 0&&n.member)&&this.getType()===M.RoomMember){var l=e.getSentinelMember(this.getStateKey());l!==this.target&&(s=!0),this.target=l}this.isState()&&t&&(this.forwardLooking=!1),s&&this.emit(ee.SentinelUpdated)}constructor(){var e,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};super(),this.event=t,c(this,"pushDetails",{}),c(this,"_replacingEvent",null),c(this,"_localRedactionEvent",null),c(this,"_isCancelled",!1),c(this,"clearEvent",void 0),c(this,"visibility",zs),c(this,"_hasCachedExtEv",!1),c(this,"_cachedExtEv",void 0),c(this,"_decryptionFailureReason",null),c(this,"senderCurve25519Key",null),c(this,"claimedEd25519Key",null),c(this,"keyForwardedBy",void 0),c(this,"decryptionPromise",null),c(this,"retryDecryption",!1),c(this,"txnId",void 0),c(this,"thread",void 0),c(this,"threadId",void 0),c(this,"localTimestamp",void 0),c(this,"sender",null),c(this,"target",null),c(this,"status",null),c(this,"error",null),c(this,"forwardLooking",!0),c(this,"reEmitter",void 0),c(this,"unstableStickyExpiresAt",void 0),["state_key","type","sender","room_id","membership"].forEach(a=>{typeof t[a]=="string"&&(t[a]=Ln(t[a]))}),["membership","avatar_url","displayname"].forEach(a=>{var s;typeof((s=t.content)===null||s===void 0?void 0:s[a])=="string"&&(t.content[a]=Ln(t.content[a]))}),["rel_type"].forEach(a=>{var s;typeof((s=t.content)===null||s===void 0||(s=s["m.relates_to"])===null||s===void 0?void 0:s[a])=="string"&&(t.content["m.relates_to"][a]=Ln(t.content["m.relates_to"][a]))}),this.txnId=t.txn_id;var r=this.getAge(),n=Date.now();this.localTimestamp=r!==void 0?n-r:(e=this.getTs())!==null&&e!==void 0?e:n,this.reEmitter=new ir(this),this.unstableStickyInfo&&(this.unstableStickyInfo.duration_ttl_ms?this.unstableStickyExpiresAt=n+this.unstableStickyInfo.duration_ttl_ms:this.unstableStickyExpiresAt=Math.min(n,this.getTs())+this.unstableStickyInfo.duration_ms)}get unstableExtensibleEvent(){if(!this._hasCachedExtEv){var e;this._cachedExtEv=(e=Me.ExtensibleEvents.parse(this.getEffectiveEvent()))!==null&&e!==void 0?e:void 0}return this._cachedExtEv}invalidateExtensibleEvent(){this._hasCachedExtEv=!1}getEffectiveEvent(){var e=Object.assign({},this.getContent());if(this.getWireType()===M.RoomMessageEncrypted)for(var[t,r]of Object.entries(this.getWireContent()))["algorithm","ciphertext","device_id","sender_key","session_id"].includes(t)||e[t]===void 0&&(e[t]=r);return Object.assign({},this.event,this.clearEvent,{content:e})}getId(){return this.event.event_id}getSender(){return this.event.sender}getType(){return this.clearEvent?this.clearEvent.type:this.event.type}getWireType(){return this.event.type}getRoomId(){return this.event.room_id}getTs(){return this.event.origin_server_ts}getDate(){return this.event.origin_server_ts?new Date(this.event.origin_server_ts):null}getDetails(){var e=this.getRoomId();if(e){var t;return"id=".concat(this.getId()," type=").concat(this.getWireType()," sender=").concat(this.getSender()," room=").concat(e," ts=").concat((t=this.getDate())===null||t===void 0?void 0:t.toISOString())}else{var r=this.getContent()[Ui];return"msgid=".concat(r," type=").concat(this.getWireType()," sender=").concat(this.getSender())}}getOriginalContent(){var e;if(this._localRedactionEvent)return{};if(this.clearEvent){var t;return(t=this.clearEvent.content)!==null&&t!==void 0?t:{}}return(e=this.event.content)!==null&&e!==void 0?e:{}}getContent(){if(this._localRedactionEvent)return{};if(this._replacingEvent){var e;return(e=this._replacingEvent.getContent()["m.new_content"])!==null&&e!==void 0?e:{}}else return this.getOriginalContent()}getWireContent(){return this.event.content||{}}get threadRootId(){var e;if(!this.isState()){var t=(e=this.getWireContent())===null||e===void 0?void 0:e["m.relates_to"];if(t?.rel_type===re.name)return t.event_id;if(this.thread)return this.thread.id;if(this.threadId!==void 0)return this.threadId;var r=this.getUnsigned();if(typeof r[di.name]=="string")return r[di.name]}}get isThreadRoot(){if(this.isState())return!1;var e=this.getServerAggregatedRelation(re.name);return!!e||this.threadRootId===this.getId()}get replyEventId(){var e;return(e=this.getWireContent()["m.relates_to"])===null||e===void 0||(e=e["m.in_reply_to"])===null||e===void 0?void 0:e.event_id}get relationEventId(){var e;return(e=this.getWireContent())===null||e===void 0||(e=e["m.relates_to"])===null||e===void 0?void 0:e.event_id}getPrevContent(){return this.getUnsigned().prev_content||{}}getDirectionalContent(){return this.forwardLooking?this.getContent():this.getPrevContent()}getAge(){return this.getUnsigned().age}getLocalAge(){return Date.now()-this.localTimestamp}getStateKey(){return this.clearEvent?this.clearEvent.state_key:this.event.state_key}getWireStateKey(){return this.event.state_key}isState(){return this.event.state_key!==void 0}getMembershipAtEvent(){var e=this.getUnsigned();return Ll.findIn(e)}makeEncrypted(e,t,r,n){this.clearEvent={type:this.event.type,content:this.event.content,state_key:this.event.state_key},this.event.type=e,this.event.content=t,this.senderCurve25519Key=r,this.claimedEd25519Key=n,this.isState()&&(this.event.state_key="".concat(this.clearEvent.type,":").concat(this.clearEvent.state_key))}isBeingDecrypted(){return this.decryptionPromise!=null}getDecryptionPromise(){return this.decryptionPromise}isDecryptionFailure(){return this._decryptionFailureReason!==null}get decryptionFailureReason(){return this._decryptionFailureReason}shouldAttemptDecryption(){return!(this.isRedacted()||this.isBeingDecrypted()||this.clearEvent||!this.isEncrypted())}attemptDecryption(e){var t=arguments,r=this;return R(function*(){var n=t.length>1&&t[1]!==void 0?t[1]:{};if(!r.isEncrypted())throw new Error("Attempt to decrypt event which isn't encrypted");var a=r.clearEvent&&!r.isDecryptionFailure();if(a)throw new Error("Attempt to decrypt event which has already been decrypted");return r.decryptionPromise?(T.log("Event ".concat(r.getId()," already being decrypted; queueing a retry")),r.retryDecryption=!0,r.decryptionPromise):(r.decryptionPromise=r.decryptionLoop(e,n),r.decryptionPromise)})()}getKeyRequestRecipients(e){var t=[{userId:e,deviceId:"*"}];return t}decryptionLoop(e){var t=arguments,r=this;return R(function*(){var n=t.length>1&&t[1]!==void 0?t[1]:{};for(yield Promise.resolve();;){r.retryDecryption=!1;var a=void 0;try{var s=yield e.decryptEvent(r);n.isRetry===!0&&T.info("Decrypted event on retry (".concat(r.getDetails(),")")),r.setClearData(s),r._decryptionFailureReason=null}catch(l){var o=l instanceof Js?l.detailedString:String(l);if(a=l,r.retryDecryption){T.log("Error decrypting event (".concat(r.getDetails(),"), but retrying: ").concat(o));continue}T.warn("Error decrypting event (".concat(r.getDetails(),"): ").concat(o)),r.setClearDataForDecryptionFailure(String(l)),r._decryptionFailureReason=l instanceof Js?l.code:lc.UNKNOWN_ERROR}r.decryptionPromise=null,r.retryDecryption=!1,r.setPushDetails(),n.emit!==!1&&r.emit(ee.Decrypted,r,a);return}})()}setClearData(e){var t,r;this.clearEvent=e.clearEvent,this.senderCurve25519Key=(t=e.senderCurve25519Key)!==null&&t!==void 0?t:null,this.claimedEd25519Key=(r=e.claimedEd25519Key)!==null&&r!==void 0?r:null,this.keyForwardedBy=e.keyForwardedBy,this.invalidateExtensibleEvent()}setClearDataForDecryptionFailure(e){this.clearEvent={type:M.RoomMessage,content:{msgtype:"m.bad.encrypted",body:"** Unable to decrypt: ".concat(e," **")}},this.senderCurve25519Key=null,this.claimedEd25519Key=null,this.invalidateExtensibleEvent()}getClearContent(){return this.clearEvent?this.clearEvent.content:null}isEncrypted(){return this.event.type===M.RoomMessageEncrypted}getSenderKey(){return this.senderCurve25519Key}getKeysClaimed(){return this.claimedEd25519Key?{ed25519:this.claimedEd25519Key}:{}}getClaimedEd25519Key(){return this.claimedEd25519Key}getForwardingCurve25519KeyChain(){return[]}isKeySourceUntrusted(){return!1}getKeyForwardingUser(){return this.keyForwardedBy}getUnsigned(){return this.event.unsigned||{}}setUnsigned(e){this.event.unsigned=e}unmarkLocallyRedacted(){var e=this._localRedactionEvent;return this._localRedactionEvent=null,this.event.unsigned&&(this.event.unsigned.redacted_because=void 0),!!e}markLocallyRedacted(e){this._localRedactionEvent||(this.emit(ee.BeforeRedaction,this,e),this._localRedactionEvent=e,this.event.unsigned||(this.event.unsigned={}),this.event.unsigned.redacted_because=e.event)}applyVisibilityEvent(e){var t,r,n=(t=e?.visible)!==null&&t!==void 0?t:!0,a=(r=e?.reason)!==null&&r!==void 0?r:null,s=!1;(this.visibility.visible!==n||!this.visibility.visible&&this.visibility.reason!==a)&&(s=!0),s&&(n?this.visibility=zs:this.visibility=Object.freeze({visible:!1,reason:a}),this.emit(ee.VisibilityChange,this,n))}messageVisibility(){return this.visibility}makeRedacted(e,t){if(!e.event)throw new Error("invalid redactionEvent in makeRedacted");this._localRedactionEvent=null,this.emit(ee.BeforeRedaction,this,e),this._replacingEvent=null,this.event.unsigned||(this.event.unsigned={}),this.event.unsigned.redacted_because=e.event;for(var r in this.event)this.event.hasOwnProperty(r)&&!dh.has(r)&&delete this.event[r];this.isEncrypted()&&(this.clearEvent=void 0);var n=this.getType()in Ys?Ys[this.getType()]:{},a=this.getContent();for(var s in a)a.hasOwnProperty(s)&&!n[s]&&delete a[s];!this.isThreadRoot&&this.threadRootId&&this.threadRootId!==this.getId()&&(this.moveAllRelatedToMainTimeline(t),e.moveToMainTimeline(t)),this.invalidateExtensibleEvent()}moveAllRelatedToMainTimeline(e){var t=this.thread;if(this.moveToMainTimeline(e),t)for(var r of t.events){var n;((n=r.getRelation())===null||n===void 0?void 0:n.event_id)===this.getId()&&r.moveAllRelatedToMainTimeline(e)}}moveToMainTimeline(e){var t;(t=this.thread)===null||t===void 0||t.timelineSet.removeEvent(this.getId()),this.setThread(void 0);var r=e.getLiveTimeline();r.getTimelineSet().insertEventIntoTimeline(this,r,r.getState(N.FORWARDS),!1)}isRedacted(){return!!this.getUnsigned().redacted_because}isRedaction(){return this.getType()===M.RoomRedaction}asVisibilityChange(){if(!$t.matches(this.getType()))return null;var e=this.getRelation();if(!e||e.rel_type!="m.reference")return null;var t=e.event_id;if(!t)return null;var r=this.getWireContent(),n=!!r.visible,a=r.reason;return a&&typeof a!="string"?null:{visible:n,reason:a,eventId:t}}isVisibilityEvent(){return $t.matches(this.getType())}getRedactionEvent(){var e,t;if(!this.isRedacted())return null;if((e=this.clearEvent)!==null&&e!==void 0&&e.unsigned){var r,n;return(r=(n=this.clearEvent)===null||n===void 0?void 0:n.unsigned.redacted_because)!==null&&r!==void 0?r:null}else return(t=this.event.unsigned)!==null&&t!==void 0&&t.redacted_because?this.event.unsigned.redacted_because:{}}getPushActions(){return this.pushDetails.actions||null}getPushDetails(){return this.pushDetails}setPushDetails(e,t){this.pushDetails={actions:e,rule:t}}handleRemoteEcho(e){var t,r=this.getUnsigned(),n=this.getId();this.event=e,r.redacted_because&&(this.event.unsigned||(this.event.unsigned={}),this.event.unsigned.redacted_because=r.redacted_because),this.setStatus(null),this.getId()!==n&&this.emit(ee.LocalEventIdReplaced,this),this.localTimestamp=Date.now()-((t=this.getAge())!==null&&t!==void 0?t:0)}isSending(){return!!this.status}setStatus(e){this.status=e,this.emit(ee.Status,this,e)}replaceLocalEventId(e){this.event.event_id=e,this.emit(ee.LocalEventIdReplaced,this)}isRelation(e){var t,r=(t=this.getWireContent())===null||t===void 0?void 0:t["m.relates_to"];return this.isState()&&(r!=null&&r.rel_type)&&[se.Replace,se.Thread].includes(r.rel_type)?!1:!!(r!=null&&r.rel_type&&r.event_id&&(!e||r.rel_type===e))}getRelation(){var e;return this.isRelation()&&(e=this.getWireContent()["m.relates_to"])!==null&&e!==void 0?e:null}makeReplaced(e){this.isRedacted()&&e||this.isState()||this._replacingEvent!==e&&(this._replacingEvent=e??null,this.emit(ee.Replaced,this),this.invalidateExtensibleEvent())}getAssociatedStatus(){return this._replacingEvent?this._replacingEvent.status:this._localRedactionEvent?this._localRedactionEvent.status:this.status}getServerAggregatedRelation(e){var t;return(t=this.getUnsigned()["m.relations"])===null||t===void 0?void 0:t[e]}replacingEventId(){var e=this.getServerAggregatedRelation(se.Replace);if(e)return e.event_id;if(this._replacingEvent)return this._replacingEvent.getId()}replacingEvent(){return this._replacingEvent}replacingEventDate(){var e=this.getServerAggregatedRelation(se.Replace);if(e){var t=e.origin_server_ts;if(Number.isFinite(t))return new Date(t)}else if(this._replacingEvent){var r;return(r=this._replacingEvent.getDate())!==null&&r!==void 0?r:void 0}}localRedactionEvent(){return this._localRedactionEvent}getAssociatedId(){var e=this.getRelation();if(this.replyEventId)return this.replyEventId;if(e)return e.event_id;if(this.isRedaction())return this.event.redacts}hasAssociation(){return!!this.getAssociatedId()}updateAssociatedId(e){var t=this.getRelation();t?t.event_id=e:this.isRedaction()&&(this.event.redacts=e)}flagCancelled(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;this._isCancelled=e}isCancelled(){return this._isCancelled}toSnapshot(){var e=new Ge(JSON.parse(JSON.stringify(this.event)));for(var[t,r]of Object.entries(this))t!=="event"&&(e[t]=r);return e}isEquivalentTo(e){if(!e)return!1;if(e===this)return!0;var t=ni(this.event),r=ni(e.event);return JSON.stringify(t)===JSON.stringify(r)}toJSON(){var e=this.getEffectiveEvent();return this.isEncrypted()?{decrypted:e,encrypted:this.event}:e}setTxnId(e){this.txnId=e}getTxnId(){return this.txnId}setThread(e){this.isState()||(this.thread&&this.reEmitter.stopReEmitting(this.thread,[Ce.Update]),this.thread=e,this.setThreadId(e?.id),e&&this.reEmitter.reEmit(e,[Ce.Update]))}getThread(){return this.thread}setThreadId(e){this.threadId=e}get unstableStickyInfo(){var e,t;if((e=this.event.msc4354_sticky)!==null&&e!==void 0&&e.duration_ms)return{duration_ms:Math.min(Ho,this.event.msc4354_sticky.duration_ms),duration_ttl_ms:(t=this.event.unsigned)===null||t===void 0?void 0:t.msc4354_sticky_duration_ttl_ms}}}var dh=new Set(["event_id","type","room_id","user_id","sender","state_key","prev_state","content","unsigned","origin_server_ts"]),Ys={[M.RoomMember]:{membership:1},[M.RoomJoinRules]:{join_rule:1},[M.RoomPowerLevels]:{ban:1,events:1,events_default:1,kick:1,redact:1,state_default:1,users:1,users_default:1}};class uh{constructor(){c(this,"unthreadedReadReceipts",new Map),c(this,"threadedReadReceipts",new Rr(()=>new Map))}setUnthreaded(e,t){this.unthreadedReadReceipts.set(e,t)}setThreaded(e,t,r){this.threadedReadReceipts.getOrCreate(e).set(t,r)}allUnthreaded(){return this.unthreadedReadReceipts.entries()}*allThreaded(){for(var e of this.threadedReadReceipts.values())for(var t of e.entries())yield t}consumeEphemeralEvents(e){e?.forEach(t=>{t.type!==M.Receipt||!t.content||Object.keys(t.content).forEach(r=>{Object.entries(t.content[r]).forEach(n=>{var[a,s]=n;if(ki(a))for(var o of Object.keys(s)){var l=t.content[r][a][o],d={data:t.content[r][a][o],type:a,eventId:r};l.thread_id?this.setThreaded(l.thread_id,o,d):this.setUnthreaded(o,d)}})})})}buildAccumulatedReceiptEvent(e){var t={type:M.Receipt,room_id:e,content:{}},r=new Rr(()=>new Rr(()=>new Map));for(var[n,a]of this.allUnthreaded())r.getOrCreate(a.eventId).getOrCreate(a.type).set(n,a.data);for(var[s,o]of this.allThreaded())r.getOrCreate(o.eventId).getOrCreate(o.type).set(s,o.data);return t.content=Pi(r),r.size>0?t:null}}var dt=(function(i){return i.Invite="invite",i.Leave="leave",i.Join="join",i.Knock="knock",i})({});function ch(i){return"_localTs"in i&&i._localTs!==void 0}class hh{constructor(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.opts=e,c(this,"accountData",{}),c(this,"inviteRooms",{}),c(this,"knockRooms",{}),c(this,"joinRooms",{}),c(this,"nextBatch",null),this.opts.maxTimelineEntries=this.opts.maxTimelineEntries||50}accumulate(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;this.accumulateRooms(e,t),this.accumulateAccountData(e),this.nextBatch=e.next_batch}accumulateAccountData(e){!e.account_data||!e.account_data.events||e.account_data.events.forEach(t=>{this.accountData[t.type]=t})}accumulateRooms(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;e.rooms&&(e.rooms.invite&&Object.keys(e.rooms.invite).forEach(r=>{this.accumulateRoom(r,dt.Invite,e.rooms.invite[r],t)}),e.rooms.join&&Object.keys(e.rooms.join).forEach(r=>{this.accumulateRoom(r,dt.Join,e.rooms.join[r],t)}),e.rooms.leave&&Object.keys(e.rooms.leave).forEach(r=>{this.accumulateRoom(r,dt.Leave,e.rooms.leave[r],t)}),e.rooms.knock&&Object.keys(e.rooms.knock).forEach(r=>{this.accumulateRoom(r,dt.Knock,e.rooms.knock[r],t)}))}accumulateRoom(e,t,r){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;switch(t){case dt.Invite:this.knockRooms[e]&&delete this.knockRooms[e],this.accumulateInviteState(e,r);break;case dt.Knock:this.accumulateKnockState(e,r);break;case dt.Join:this.knockRooms[e]?delete this.knockRooms[e]:this.inviteRooms[e]&&delete this.inviteRooms[e],this.accumulateJoinState(e,r,n);break;case dt.Leave:this.knockRooms[e]?delete this.knockRooms[e]:this.inviteRooms[e]?delete this.inviteRooms[e]:delete this.joinRooms[e];break;default:T.error("Unknown cateogory: ",t)}}accumulateInviteState(e,t){if(!(!t.invite_state||!t.invite_state.events)){if(!this.inviteRooms[e]){this.inviteRooms[e]={invite_state:t.invite_state};return}var r=this.inviteRooms[e];t.invite_state.events.forEach(n=>{for(var a=!1,s=0;s<r.invite_state.events.length;s++){var o=r.invite_state.events[s];o.type===n.type&&o.state_key==n.state_key&&(r.invite_state.events[s]=n,a=!0)}a||r.invite_state.events.push(n)})}}accumulateKnockState(e,t){if(!(!t.knock_state||!t.knock_state.events)){if(!this.knockRooms[e]){this.knockRooms[e]={knock_state:t.knock_state};return}var r=this.knockRooms[e];t.knock_state.events.forEach(n=>{for(var a=!1,s=0;s<r.knock_state.events.length;s++){var o=r.knock_state.events[s];o.type===n.type&&o.state_key==n.state_key&&(r.knock_state.events[s]=n,a=!0)}a||r.knock_state.events.push(n)})}}accumulateJoinState(e,t){var r,n,a,s,o,l,d,u=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,h=Date.now();this.joinRooms[e]||(this.joinRooms[e]={_currentState:Object.create(null),_timeline:[],_accountData:Object.create(null),_unreadNotifications:{},_unreadThreadNotifications:{},_summary:{},_receipts:new uh,_stickyEvents:[]});var m=this.joinRooms[e];if(t.account_data&&t.account_data.events&&t.account_data.events.forEach(w=>{m._accountData[w.type]=w}),t.unread_notifications&&(m._unreadNotifications=t.unread_notifications),m._unreadThreadNotifications=(r=(n=t[Lr.stable])!==null&&n!==void 0?n:t[Lr.unstable])!==null&&r!==void 0?r:void 0,t.summary){var E,f,p,I="m.heroes",S="m.invited_member_count",g="m.joined_member_count",_=m._summary,y=t.summary;_[I]=(E=y[I])!==null&&E!==void 0?E:_[I],_[g]=(f=y[g])!==null&&f!==void 0?f:_[g],_[S]=(p=y[S])!==null&&p!==void 0?p:_[S]}if(m._receipts.consumeEphemeralEvents((a=t.ephemeral)===null||a===void 0?void 0:a.events),t.timeline&&t.timeline.limited&&(m._timeline=[]),(s=t.state)===null||s===void 0||(s=s.events)===null||s===void 0||s.forEach(w=>{ln(m._currentState,w)}),(o=t["org.matrix.msc4222.state_after"])===null||o===void 0||(o=o.events)===null||o===void 0||o.forEach(w=>{ln(m._currentState,w)}),(l=t.timeline)===null||l===void 0||(l=l.events)===null||l===void 0||l.forEach((w,C)=>{var k;t["org.matrix.msc4222.state_after"]||ln(m._currentState,w);var P;if(u)P=w;else{var D;P=Object.assign({},w),P.unsigned!==void 0&&(P.unsigned=Object.assign({},P.unsigned));var B=(D=w.unsigned)===null||D===void 0?void 0:D.age;B!==void 0&&(P._localTs=Date.now()-B)}m._timeline.push({event:P,token:C===0&&(k=t.timeline.prev_batch)!==null&&k!==void 0?k:null})}),m._stickyEvents=m._stickyEvents.filter(w=>{var{expiresTs:C}=w;return C>h}),(d=t.msc4354_sticky)!==null&&d!==void 0&&d.events&&(m._stickyEvents=m._stickyEvents.concat(t.msc4354_sticky.events.map(w=>{var C=Math.min(w.msc4354_sticky.duration_ms,Ho),k=Math.min(w.origin_server_ts,h);return{event:w,expiresTs:C+k}}))),m._timeline.length>this.opts.maxTimelineEntries){for(var b=m._timeline.length-this.opts.maxTimelineEntries,v=b;v<m._timeline.length;v++)if(m._timeline[v].token){m._timeline=m._timeline.slice(v,m._timeline.length);break}}}getJSON(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,t={join:{},invite:{},knock:{},leave:{}};Object.keys(this.inviteRooms).forEach(n=>{t.invite[n]=this.inviteRooms[n]}),Object.keys(this.knockRooms).forEach(n=>{t.knock[n]=this.knockRooms[n]}),Object.keys(this.joinRooms).forEach(n=>{var a,s=this.joinRooms[n],o={ephemeral:{events:[]},account_data:{events:[]},state:{events:[]},"org.matrix.msc4222.state_after":{events:[]},timeline:{events:[],prev_batch:null},unread_notifications:s._unreadNotifications,unread_thread_notifications:s._unreadThreadNotifications,summary:s._summary,msc4354_sticky:(a=s._stickyEvents)!==null&&a!==void 0&&a.length?{events:s._stickyEvents.map(E=>E.event)}:void 0};Object.keys(s._accountData).forEach(E=>{o.account_data.events.push(s._accountData[E])});var l=s._receipts.buildAccumulatedReceiptEvent(n);l&&o.ephemeral.events.push(l),s._timeline.forEach(E=>{if(!o.timeline.prev_batch){if(!E.token)return;o.timeline.prev_batch=E.token}var f;!e&&ch(E.event)?(f=Object.assign({},E.event),f.unsigned!==void 0&&(f.unsigned=Object.assign({},f.unsigned)),delete f._localTs,f.unsigned=f.unsigned||{},f.unsigned.age=Date.now()-E.event._localTs):f=E.event,o.timeline.events.push(f)});for(var d=Object.create(null),u=o.timeline.events.length-1;u>=0;u--){var h=o.timeline.events[u];if(!(h.state_key===null||h.state_key===void 0)){var m=Br(h);m.unsigned&&(m.unsigned.prev_content&&(m.content=m.unsigned.prev_content),m.unsigned.prev_sender&&(m.sender=m.unsigned.prev_sender)),ln(d,m)}}Object.keys(s._currentState).forEach(E=>{Object.keys(s._currentState[E]).forEach(f=>{var p=s._currentState[E][f];o["org.matrix.msc4222.state_after"].events.push(p),d[E]&&d[E][f]&&(p=d[E][f]),o.state.events.push(p)})}),t.join[n]=o});var r=[];return Object.keys(this.accountData).forEach(n=>{r.push(this.accountData[n])}),{nextBatch:this.nextBatch,roomsData:t,accountData:r}}getNextBatchToken(){return this.nextBatch}}function ln(i,e){e.state_key===null||e.state_key===void 0||!e.type||(i[e.type]||(i[e.type]=Object.create(null)),i[e.type][e.state_key]=e)}function vh(i,e){return new Promise((t,r)=>{var n=!0,a=i.open(e);a.onupgradeneeded=()=>{n=!1},a.onblocked=()=>r(a.error),a.onsuccess=()=>{var s=a.result;s.close(),n||i.deleteDatabase(e),t(n)},a.onerror=()=>r(a.error)})}var Go=[i=>{i.createObjectStore("users",{keyPath:["userId"]}),i.createObjectStore("accountData",{keyPath:["type"]}),i.createObjectStore("sync",{keyPath:["clobber"]})},i=>{var e=i.createObjectStore("oob_membership_events",{keyPath:["room_id","state_key"]});e.createIndex("room","room_id")},i=>{i.createObjectStore("client_options",{keyPath:["clobber"]})},i=>{i.createObjectStore("to_device_queue",{autoIncrement:!0})}],fh=Go.length;function dn(i,e,t){var r=i.openCursor(e);return new Promise((n,a)=>{var s=[];r.onerror=()=>{var o;a(new Error("Query failed: "+((o=r.error)===null||o===void 0?void 0:o.name)))},r.onsuccess=()=>{var o=r.result;if(!o){n(s);return}s.push(t(o)),o.continue()}})}function Tt(i){return new Promise((e,t)=>{i.oncomplete=function(r){e(r)},i.onerror=function(){t(i.error)}})}function $o(i){return new Promise((e,t)=>{i.onsuccess=function(r){e(r)},i.onerror=function(){t(i.error)}})}function mh(i){return new Promise((e,t)=>{i.onsuccess=()=>e(i),i.onerror=r=>t(r)})}function ei(i){return $o(i).then(e=>i.result)}class ph{static exists(e,t){return t="matrix-js-sdk:"+(t||"default"),vh(e,t)}constructor(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"default";this.indexedDB=e,c(this,"dbName",void 0),c(this,"syncAccumulator",void 0),c(this,"db",void 0),c(this,"disconnected",!0),c(this,"_isNewlyCreated",!1),c(this,"syncToDatabasePromise",void 0),c(this,"pendingUserPresenceData",[]),this.dbName="matrix-js-sdk:"+t,this.syncAccumulator=new hh}connect(e){var t=this;if(!this.disconnected)return T.log("LocalIndexedDBStoreBackend.connect: already connected or connecting"),Promise.resolve();this.disconnected=!1,T.log("LocalIndexedDBStoreBackend.connect: connecting...");var r=this.indexedDB.open(this.dbName,fh);return r.onupgradeneeded=n=>{var a=r.result,s=n.oldVersion;T.log("LocalIndexedDBStoreBackend.connect: upgrading from ".concat(s)),s<1&&(this._isNewlyCreated=!0),Go.forEach((o,l)=>{s<=l&&o(a)})},r.onblocked=()=>{T.log("can't yet open LocalIndexedDBStoreBackend because it is open elsewhere")},T.log("LocalIndexedDBStoreBackend.connect: awaiting connection..."),$o(r).then(R(function*(){T.log("LocalIndexedDBStoreBackend.connect: connected"),t.db=r.result,t.db.onversionchange=()=>{var n;(n=t.db)===null||n===void 0||n.close(),t.disconnected=!0,t.db=void 0},t.db.onclose=()=>{t.disconnected=!0,t.db=void 0,e?.()},yield t.init()}))}isNewlyCreated(){return Promise.resolve(this._isNewlyCreated)}init(){return Promise.all([this.loadAccountData(),this.loadSyncData()]).then(e=>{var[t,r]=e;T.log("LocalIndexedDBStoreBackend: loaded initial data"),this.syncAccumulator.accumulate({next_batch:r.nextBatch,rooms:r.roomsData,account_data:{events:t}},!0)})}getOutOfBandMembers(e){return new Promise((t,r)=>{var n=this.db.transaction(["oob_membership_events"],"readonly"),a=n.objectStore("oob_membership_events"),s=a.index("room"),o=IDBKeyRange.only(e),l=s.openCursor(o),d=[],u=!1;l.onsuccess=()=>{var h=l.result;if(!h)return!d.length&&!u?t(null):t(d);var m=h.value;m.oob_written?u=!0:d.push(m),h.continue()},l.onerror=h=>{r(h)}}).then(t=>(T.log("LL: got ".concat(t?.length," membershipEvents from storage for room ").concat(e," ...")),t))}setOutOfBandMembers(e,t){var r=this;return R(function*(){T.log("LL: backend about to store ".concat(t.length)+" members for ".concat(e));var n=r.db.transaction(["oob_membership_events"],"readwrite"),a=n.objectStore("oob_membership_events");t.forEach(o=>{a.put(o)});var s={room_id:e,oob_written:!0,state_key:0};a.put(s),yield Tt(n),T.log("LL: backend done storing for ".concat(e,"!"))})()}clearOutOfBandMembers(e){var t=this;return R(function*(){var r=t.db.transaction(["oob_membership_events"],"readonly"),n=r.objectStore("oob_membership_events"),a=n.index("room"),s=IDBKeyRange.only(e),o=ei(a.openKeyCursor(s,"next")).then(f=>(f?.primaryKey)[1]),l=ei(a.openKeyCursor(s,"prev")).then(f=>(f?.primaryKey)[1]),[d,u]=yield Promise.all([o,l]),h=t.db.transaction(["oob_membership_events"],"readwrite"),m=h.objectStore("oob_membership_events"),E=IDBKeyRange.bound([e,d],[e,u]);T.log("LL: Deleting all users + marker in storage for room ".concat(e,", with key range:"),[e,d],[e,u]),yield mh(m.delete(E))})()}clearDatabase(){return new Promise(e=>{var t;T.log("Removing indexeddb instance: ".concat(this.dbName)),(t=this.db)===null||t===void 0||t.close();var r=this.indexedDB.deleteDatabase(this.dbName);r.onblocked=()=>{T.log("can't yet delete indexeddb ".concat(this.dbName," because it is open elsewhere"))},r.onerror=()=>{var n;T.warn("unable to delete js-sdk store indexeddb: ".concat((n=r.error)===null||n===void 0?void 0:n.name)),e()},r.onsuccess=()=>{T.log("Removed indexeddb instance: ".concat(this.dbName)),e()}})}getSavedSync(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,t=this.syncAccumulator.getJSON();return t.nextBatch?e?Promise.resolve(Br(t)):Promise.resolve(t):Promise.resolve(null)}getNextBatchToken(){return Promise.resolve(this.syncAccumulator.getNextBatchToken())}setSyncData(e){return Promise.resolve().then(()=>{this.syncAccumulator.accumulate(e)})}syncToDatabase(e){var t=this;return R(function*(){return t.syncToDatabasePromise?(T.warn("Skipping syncToDatabase() as persist already in flight"),t.pendingUserPresenceData.push(...e),t.syncToDatabasePromise):(e.unshift(...t.pendingUserPresenceData),t.syncToDatabasePromise=t.doSyncToDatabase(e),t.syncToDatabasePromise)})()}doSyncToDatabase(e){var t=this;return R(function*(){try{var r=t.syncAccumulator.getJSON(!0);yield Promise.all([t.persistUserPresenceEvents(e),t.persistAccountData(r.accountData),t.persistSyncData(r.nextBatch,r.roomsData)])}finally{t.syncToDatabasePromise=void 0}})()}persistSyncData(e,t){return T.log("Persisting sync data up to",e),xt(()=>{var r=this.db.transaction(["sync"],"readwrite"),n=r.objectStore("sync");return n.put({clobber:"-",nextBatch:e,roomsData:t}),Tt(r).then(()=>{T.log("Persisted sync data up to",e)})})}persistAccountData(e){return xt(()=>{var t=this.db.transaction(["accountData"],"readwrite"),r=t.objectStore("accountData");for(var n of e)r.put(n);return Tt(t).then()})}persistUserPresenceEvents(e){return xt(()=>{var t=this.db.transaction(["users"],"readwrite"),r=t.objectStore("users");for(var n of e)r.put({userId:n[0],event:n[1]});return Tt(t).then()})}getUserPresenceEvents(){return xt(()=>{var e=this.db.transaction(["users"],"readonly"),t=e.objectStore("users");return dn(t,void 0,r=>[r.value.userId,r.value.event])})}loadAccountData(){return T.log("LocalIndexedDBStoreBackend: loading account data..."),xt(()=>{var e=this.db.transaction(["accountData"],"readonly"),t=e.objectStore("accountData");return dn(t,void 0,r=>r.value).then(r=>(T.log("LocalIndexedDBStoreBackend: loaded account data"),r))})}loadSyncData(){return T.log("LocalIndexedDBStoreBackend: loading sync data..."),xt(()=>{var e=this.db.transaction(["sync"],"readonly"),t=e.objectStore("sync");return dn(t,void 0,r=>r.value).then(r=>(T.log("LocalIndexedDBStoreBackend: loaded sync data"),r.length>1&&T.warn("loadSyncData: More than 1 sync row found."),r.length>0?r[0]:{}))})}getClientOptions(){return Promise.resolve().then(()=>{var e=this.db.transaction(["client_options"],"readonly"),t=e.objectStore("client_options");return dn(t,void 0,r=>{var n;return(n=r.value)===null||n===void 0?void 0:n.options}).then(r=>r[0])})}storeClientOptions(e){var t=this;return R(function*(){var r=t.db.transaction(["client_options"],"readwrite"),n=r.objectStore("client_options");n.put({clobber:"-",options:e}),yield Tt(r)})()}saveToDeviceBatches(e){var t=this;return R(function*(){var r=t.db.transaction(["to_device_queue"],"readwrite"),n=r.objectStore("to_device_queue");for(var a of e)n.add(a);yield Tt(r)})()}getOldestToDeviceBatch(){var e=this;return R(function*(){var t=e.db.transaction(["to_device_queue"],"readonly"),r=t.objectStore("to_device_queue"),n=yield ei(r.openCursor());if(!n)return null;var a=n.value;return{id:n.key,txnId:a.txnId,eventType:a.eventType,batch:a.batch}})()}removeToDeviceBatch(e){var t=this;return R(function*(){var r=t.db.transaction(["to_device_queue"],"readwrite"),n=r.objectStore("to_device_queue");n.delete(e),yield Tt(r)})()}destroy(){var e=this;return R(function*(){var t;(t=e.db)===null||t===void 0||t.close()})()}}class gh{constructor(e){this.postMessage=e,c(this,"backend",void 0),c(this,"onClose",()=>{this.postMessage.call(null,{command:"closed"})}),c(this,"onMessage",t=>{var r,n,a,s,o,l,d,u,h,m,E,f,p,I,S,g,_=t.data,y;switch(_.command){case"setupWorker":this.backend=new ph(indexedDB,_.args[0]),y=Promise.resolve();break;case"connect":y=(r=this.backend)===null||r===void 0?void 0:r.connect(this.onClose);break;case"isNewlyCreated":y=(n=this.backend)===null||n===void 0?void 0:n.isNewlyCreated();break;case"clearDatabase":y=(a=this.backend)===null||a===void 0?void 0:a.clearDatabase();break;case"getSavedSync":y=(s=this.backend)===null||s===void 0?void 0:s.getSavedSync(!1);break;case"setSyncData":y=(o=this.backend)===null||o===void 0?void 0:o.setSyncData(_.args[0]);break;case"syncToDatabase":y=(l=this.backend)===null||l===void 0?void 0:l.syncToDatabase(_.args[0]);break;case"getUserPresenceEvents":y=(d=this.backend)===null||d===void 0?void 0:d.getUserPresenceEvents();break;case"getNextBatchToken":y=(u=this.backend)===null||u===void 0?void 0:u.getNextBatchToken();break;case"getOutOfBandMembers":y=(h=this.backend)===null||h===void 0?void 0:h.getOutOfBandMembers(_.args[0]);break;case"clearOutOfBandMembers":y=(m=this.backend)===null||m===void 0?void 0:m.clearOutOfBandMembers(_.args[0]);break;case"setOutOfBandMembers":y=(E=this.backend)===null||E===void 0?void 0:E.setOutOfBandMembers(_.args[0],_.args[1]);break;case"getClientOptions":y=(f=this.backend)===null||f===void 0?void 0:f.getClientOptions();break;case"storeClientOptions":y=(p=this.backend)===null||p===void 0?void 0:p.storeClientOptions(_.args[0]);break;case"saveToDeviceBatches":y=(I=this.backend)===null||I===void 0?void 0:I.saveToDeviceBatches(_.args[0]);break;case"getOldestToDeviceBatch":y=(S=this.backend)===null||S===void 0?void 0:S.getOldestToDeviceBatch();break;case"removeToDeviceBatch":y=(g=this.backend)===null||g===void 0?void 0:g.removeToDeviceBatch(_.args[0]);break}if(y===void 0){this.postMessage({command:"cmd_fail",seq:_.seq,error:"Unrecognised command"});return}y.then(b=>{this.postMessage.call(null,{command:"cmd_success",seq:_.seq,result:b})},b=>{T.error("Error running command: "+_.command,b),this.postMessage.call(null,{command:"cmd_fail",seq:_.seq,error:{message:b.message,name:b.name}})})})}}const yh=new gh(self.postMessage);self.onmessage=yh.onMessage;export{Rh as A,T as B,be as C,dc as D,M as E,vh as F,yc as G,go as H,wh as I,gc as J,J as K,Eh as L,O as M,cc as N,Ht as S,fe as T,Ih as U,R as _,c as a,_h as b,Ui as c,Jt as d,A as e,kd as f,Xs as g,ir as h,Et as i,ue as j,ce as k,bh as l,kh as m,vn as n,Ni as o,Th as p,Ch as q,_n as r,jr as s,ee as t,Rr as u,Js as v,lc as w,Mh as x,Oh as y,oi as z};
25
+ //# sourceMappingURL=IndexedDBWorker-Dgn5IQFp.js.map