polfan-server-js-client 0.2.107 → 0.2.108

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.umd.js","mappings":"CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,GACe,iBAAZC,QACdA,QAAqB,YAAID,IAEzBD,EAAkB,YAAIC,GACvB,CATD,CASGK,KAAM,I,mBCRT,IAAIC,EAAsB,CCA1BA,EAAwB,CAACL,EAASM,KACjC,IAAI,IAAIC,KAAOD,EACXD,EAAoBG,EAAEF,EAAYC,KAASF,EAAoBG,EAAER,EAASO,IAC5EE,OAAOC,eAAeV,EAASO,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,MCJ3EF,EAAwB,CAACQ,EAAKC,IAAUL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,GCClFT,EAAyBL,IACH,oBAAXkB,QAA0BA,OAAOC,aAC1CV,OAAOC,eAAeV,EAASkB,OAAOC,YAAa,CAAEC,MAAO,WAE7DX,OAAOC,eAAeV,EAAS,aAAc,CAAEoB,OAAO,M,ipCCkBhD,IAAMC,EAAW,WAEsD,O,EAFtD,SAAAA,K,4FAAAC,CAAA,KAAAD,GAAAE,EAAA,cACY,IAAIC,KAAkCD,EAAA,kBAClC,IAAIC,IAAkC,G,EAAA,EAAAjB,IAAA,KAAAa,MAI1E,SAAUK,EAAmBC,GAEzB,OADAtB,KAAKuB,WAAWvB,KAAKwB,OAAQH,EAAWC,GACjCtB,IACX,GAAC,CAAAG,IAAA,OAAAa,MAID,SAAYK,EAAmBC,GAE3B,OADAtB,KAAKuB,WAAWvB,KAAKyB,WAAYJ,EAAWC,GACrCtB,IACX,GAAC,CAAAG,IAAA,MAAAa,MAID,SAAWK,EAAmBC,GAAkC,IAAAI,EAAAC,EACtDC,EAAkC,QAA7BF,EAAG1B,KAAKwB,OAAOhB,IAAIa,UAAU,IAAAK,OAAA,EAA1BA,EAA4BG,QAAQP,GAClD,YAAcQ,IAAVF,GAAuBA,EAAQ,GAGT,QAA1BD,EAAA3B,KAAKwB,OAAOhB,IAAIa,UAAU,IAAAM,GAA1BA,EAA4BI,OAAOH,EAAO,GAF/B5B,IAIf,GAAC,CAAAG,IAAA,OAAAa,MAID,SAAYK,EAAmBW,GAI3B,OAHAhC,KAAKiC,aAAajC,KAAKwB,OAAQH,EAAWW,GAC1ChC,KAAKiC,aAAajC,KAAKyB,WAAYJ,EAAWW,GAC9ChC,KAAKyB,WAAU,OAAQJ,GAChBrB,IACX,GAAC,CAAAG,IAAA,aAAAa,MAED,SAAmBkB,EAAkBb,EAAmBC,GAAkC,IAAAa,EAChFC,EAA6B,QAArBD,EAAGD,EAAI1B,IAAIa,UAAU,IAAAc,EAAAA,EAAI,GACvCC,EAASC,KAAKf,GACdY,EAAII,IAAIjB,EAAWe,EACvB,GAAC,CAAAjC,IAAA,eAAAa,MAED,SAAqBkB,EAAkBb,EAAmBW,GAAsB,IAAAO,EAC1D,QAAlBA,EAAAL,EAAI1B,IAAIa,UAAU,IAAAkB,GAAlBA,EAAoBC,QAAQ,SAAAC,GAAQ,OAAIA,EAAST,EAAM,EAC3D,M,yFAAC,CA9CmB,G,2lFCyGjB,IAAeU,EAAkB,SAAAC,GAAA,SAAAD,IAAA,IAAAE,G,4FAAA1B,CAAA,KAAAwB,GAAA,QAAAG,EAAAC,UAAAC,OAAAC,EAAA,IAAAC,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAAF,EAAAE,GAAAJ,UAAAI,GAEF,OAFE/B,EAAAyB,EAAAO,EAAA,KAAAT,EAAA,GAAAU,OAAAJ,IAAA,mBACgC,IAAI5B,KAAsCD,EAAAyB,EAAA,cAC7E,GAACA,CAAA,Q,qRAAAS,CAAAX,EAAAC,G,EAAAD,E,EAAA,EAAAvC,IAAA,iBAAAa,MAKlC,SAAmCsC,EAAcC,GAC7C,MAAO,CACHD,KAAAA,EAAMC,KAAAA,EAAMC,OAAQxD,KAAKyD,aAAaC,WAE9C,GAAC,CAAAvD,IAAA,mCAAAa,MAED,SACyC2C,GACa,IAAAC,EAAA,KAClD,OAAO,IAAIC,QAAQ,mBAAAC,EAAAhB,UAAAC,OAAIC,EAAI,IAAAC,MAAAa,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJf,EAAIe,GAAAjB,UAAAiB,GAAA,OACtBH,EAAKI,iBAAiB1B,IAAIqB,EAASH,IAAeR,EAAK,EAChE,GAAC,CAAA7C,IAAA,yBAAAa,MAED,SAAiC2C,GAC7B,GAAK3D,KAAKgE,iBAAiBC,IAAIN,EAASH,KAAxC,CAGA,IAAMU,EAA4B,UAAlBP,EAASL,KACzBtD,KAAKgE,iBAAiBxD,IAAImD,EAASH,KAAK,GAAG,CACvCD,KAAMW,EAAU,KAAOP,EAASJ,KAChCY,MAAOD,EAAUP,EAASJ,KAAO,OAErCvD,KAAKgE,iBAAgB,OAAQL,EAASH,IANtC,CAOJ,GAAC,CAAArD,IAAA,0BAAAa,MAED,SAAkC2C,EAAoBQ,GAC7CnE,KAAKgE,iBAAiBC,IAAIN,EAASH,OAGxCxD,KAAKgE,iBAAiBxD,IAAImD,EAASH,KAAK,GAAGW,GAC3CnE,KAAKgE,iBAAgB,OAAQL,EAASH,KAC1C,GAEA,CAAArD,IAAA,wBAAAa,MASA,SAAgCmD,GAC5B,GAAMnE,KAAKgE,iBAAiBI,KAA5B,CAIA,IAAMC,EAAUpB,MAAMqB,KAAKtE,KAAKgE,iBAAiBO,UACjDvE,KAAKgE,iBAAiBQ,QAEtB,IAAK,IAALC,EAAA,EAAAC,EAAyBL,EAAOI,EAAAC,EAAA3B,OAAA0B,KAC5BE,EADCC,EAAAF,EAAAD,GAAA,GAAe,IACTN,EANX,CAQJ,I,4FAAC,CA5DmC,CAAsDlD,G,m+IC9HvF,IAAM4D,EAAiB,WAG1B,SAAAA,IAA6D,IAA1CC,EAAmChC,UAAAC,OAAA,QAAAjB,IAAAgB,UAAA,GAAAA,UAAA,GAAG,GAAE5B,EAAA,KAAA2D,GAAA1D,EAAA,cAFrB,IAAIC,KAGtCpB,KAAKsC,IAAGyC,MAAR/E,KAAIgF,EAAQF,GAChB,CAAC,OAAAG,EAAAJ,EAAA,EAAA1E,IAAA,QAAAK,IAED,WACI,OAAOR,KAAKkF,MAChB,GAAC,CAAA/E,IAAA,SAAAK,IAED,WACI,OAAOR,KAAKkF,OAAOd,IACvB,GAAC,CAAAjE,IAAA,MAAAa,MAED,WAA6C,QAAA6B,EAAAC,UAAAC,OAA/B+B,EAAK,IAAA7B,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAL4B,EAAK5B,GAAAJ,UAAAI,GACf,IAAK,IAALuB,EAAA,EAAAS,EAAmBJ,EAAKL,EAAAS,EAAAnC,OAAA0B,IAAE,CAArB,IAAMU,EAAID,EAAAT,GACXzE,KAAKkF,OAAO5C,IAAI6C,EAAK,GAAIA,EAAK,GAClC,CACJ,GAAC,CAAAhF,IAAA,MAAAa,MAED,SAAWoE,GACP,OAAOpF,KAAK8E,MAAMtE,IAAI4E,EAC1B,GAAC,CAAAjF,IAAA,MAAAa,MAED,SAAWoE,GACP,OAAOpF,KAAK8E,MAAMb,IAAImB,EAC1B,GAAC,CAAAjF,IAAA,SAAAa,MAED,WAAoC,QAAA8C,EAAAhB,UAAAC,OAAnBsC,EAAG,IAAApC,MAAAa,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAHsB,EAAGtB,GAAAjB,UAAAiB,GAChB,IAAK,IAALuB,EAAA,EAAAC,EAAiBF,EAAGC,EAAAC,EAAAxC,OAAAuC,IAAE,CAAjB,IAAMF,EAAEG,EAAAD,GACTtF,KAAK8E,MAAK,OAAQM,EACtB,CACJ,GAAC,CAAAjF,IAAA,YAAAa,MAED,WACIhB,KAAK8E,MAAMN,OACf,GAAC,CAAArE,IAAA,SAAAa,MAED,SAAcwE,EAAqBC,GAA6E,IAE7DC,EAFEC,EAAa7C,UAAAC,OAAA,QAAAjB,IAAAgB,UAAA,GAAAA,UAAA,GAAG8C,IAC3DC,EAAS,IAAIhB,EAAkCiB,EAAAC,EAC1B/F,KAAK8E,MAAMkB,WAAS,IAA/C,IAAAF,EAAAG,MAAAP,EAAAI,EAAAI,KAAAC,MAAiD,KAAAC,EAAAxB,EAAAc,EAAA1E,MAAA,GAArCb,EAAGiG,EAAA,GAAEpF,EAAKoF,EAAA,GAClB,GAAIP,EAAO9C,QAAU4C,EACjB,MAEA3E,EAAMwE,KAAWC,GACjBI,EAAOvD,IAAI,CAACnC,EAAKa,GAEzB,CAAC,OAAAqF,GAAAP,EAAAQ,EAAAD,EAAA,SAAAP,EAAAS,GAAA,CACD,OAAOV,CACX,GAAC,CAAA1F,IAAA,eAAAa,MAED,WACI,IAAMwF,EAAO,IAAI3B,EAEjB,OADA2B,EAAKtB,OAASlF,KAAKkF,OACZsB,CACX,IAAC,CAxDyB,GA2DjBC,EAAuB,WAGhC,SAAAA,EACoBrB,GAElB,IADEN,EAAUhC,UAAAC,OAAA,QAAAjB,IAAAgB,UAAA,GAAAA,UAAA,GAAG,GAAE5B,EAAA,KAAAuF,GAAAtF,EAAA,2BADCiE,GAAAA,EAGhBpF,KAAKkF,OAAS,IAAIL,EAClB7E,KAAKsC,IAAGyC,MAAR/E,KAAIgF,EAAQF,GAChB,CAAC,OAAAG,EAAAwB,EAAA,EAAAtG,IAAA,QAAAK,IAED,WACI,OAAOyC,MAAMqB,KAAKtE,KAAKkF,OAAOJ,MAAMP,SACxC,GAAC,CAAApE,IAAA,SAAAK,IAED,WACI,OAAOR,KAAKkF,OAAOnC,MACvB,GAAC,CAAA5C,IAAA,MAAAa,MAED,WAAgC,QAAA0F,EAAA9D,EAAA,KAAA+D,EAAA7D,UAAAC,OAAlB+B,EAAK,IAAA7B,MAAA0D,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAL9B,EAAK8B,GAAA9D,UAAA8D,IACfF,EAAA1G,KAAKkF,QAAO5C,IAAGyC,MAAA2B,EAAA1B,EAAKF,EAAM5C,IAAI,SAAAiD,GAAI,MAAI,CAACvC,EAAKiE,MAAM1B,GAAOA,EAAK,IAClE,GAAC,CAAAhF,IAAA,MAAAa,MAED,SAAWoE,GACP,OAAOpF,KAAKkF,OAAO1E,IAAI4E,EAC3B,GAAC,CAAAjF,IAAA,QAAAa,MAED,SAAaY,GACT,OAAO5B,KAAK8E,MAAMlD,EACtB,GAAC,CAAAzB,IAAA,MAAAa,MAED,SAAWoE,GACP,OAAOpF,KAAKkF,OAAOjB,IAAImB,EAC3B,GAAC,CAAAjF,IAAA,SAAAa,MAED,WAAmC,IAAA8F,GAC/BA,EAAA9G,KAAKkF,QAAM,OAAOH,MAAA+B,EAAAhE,UACtB,GAAC,CAAA3C,IAAA,YAAAa,MAED,WACIhB,KAAKkF,OAAO6B,WAChB,GAAC,CAAA5G,IAAA,SAAAa,MAED,SAAcwE,EAAgBC,GAAoE,IAEhEuB,EAFcrB,EAAa7C,UAAAC,OAAA,QAAAjB,IAAAgB,UAAA,GAAAA,UAAA,GAAG,KACtD+C,EAAS,IAAIY,EAA2BzG,KAAKoF,IAAI6B,EAAAlB,EACnC/F,KAAK8E,OAAK,IAA9B,IAAAmC,EAAAhB,MAAAe,EAAAC,EAAAf,KAAAC,MAAgC,KAArBnF,EAAKgG,EAAAhG,MACZ,GAAI2E,GAASE,EAAO9C,SAAW4C,EAC3B,MAEA3E,EAAMwE,KAAWC,GACjBI,EAAOvD,IAAItB,EAEnB,CAAC,OAAAqF,GAAAY,EAAAX,EAAAD,EAAA,SAAAY,EAAAV,GAAA,CACD,OAAOV,CACX,GAAC,CAAA1F,IAAA,eAAAa,MAED,WACI,IAAMwF,EAAO,IAAIC,EAA2BzG,KAAKoF,IAEjD,OADAoB,EAAKtB,OAASlF,KAAKkF,OACZsB,CACX,GAAC,CAAArG,IAAA,QAAAa,MAED,SAAgBmE,GACZ,MAA0B,mBAAZnF,KAAKoF,GAAoBpF,KAAKoF,GAAGD,GAAQA,EAAKnF,KAAKoF,GACrE,IAAC,CAhE+B,GAuEvB8B,EAA2B,SAAAC,GAQpC,SAAAD,IAA6D,IAAAE,EAAAxD,EAA1CkB,EAAmChC,UAAAC,OAAA,QAAAjB,IAAAgB,UAAA,GAAAA,UAAA,GAAG,GAGlC,OAHoC5B,EAAA,KAAAgG,GAC/C/F,EAARyC,EAAAT,EAAA,KAAA+D,GAAQ,sBACRtD,EAAKyD,YAAc,IAAIpG,GACvBmG,EAAAxD,GAAKtB,IAAGyC,MAAAqC,EAAApC,EAAIF,IAAOlB,CACvB,CAAC,OAAAP,EAAA6D,EAAAC,GAAAlC,EAAAiC,EAAA,EAAA/G,IAAA,MAAAa,MAED,WAAuC,QAAAsG,EAAAxE,UAAAC,OAAzB+B,EAAK,IAAA7B,MAAAqE,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAALzC,EAAKyC,GAAAzE,UAAAyE,GACXzC,EAAM/B,SACNyE,EAAAN,EAAA,aAAAM,CAAa1C,GACb9E,KAAKqH,YAAYI,KAAK,SAAU,CAAEC,SAAU5C,EAAM5C,IAAI,SAAAiD,GAAI,OAAIA,EAAK,EAAE,KAE7E,GAAC,CAAAhF,IAAA,SAAAa,MAED,WAA8B,QAAA2G,EAAA7E,UAAAC,OAAbsC,EAAG,IAAApC,MAAA0E,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAHvC,EAAGuC,GAAA9E,UAAA8E,GACZvC,EAAItC,SACJyE,EAAAN,EAAA,gBAAAM,CAAgBnC,GAChBrF,KAAKqH,YAAYI,KAAK,SAAU,CAAEI,aAAcxC,IAExD,GAAC,CAAAlF,IAAA,YAAAa,MAED,WACI,GAAIhB,KAAK+C,OAAQ,CACb,IAAMsC,EAAMpC,MAAMqB,KAAKtE,KAAKkF,OAAO4C,QACnCN,EAAAN,EAAA,mBAAAM,CAAA,IACAxH,KAAKqH,YAAYI,KAAK,SAAU,CAAEI,aAAc5E,MAAMqB,KAAKe,IAC/D,CACJ,GAAC,CAAAlF,IAAA,eAAAa,MAED,WACI,IAAMwF,EAAO,IAAIU,EAGjB,OAFAV,EAAKa,YAAcrH,KAAKqH,YACxBb,EAAKtB,OAASlF,KAAKkF,OACZsB,CACX,GAAC,CAAArG,IAAA,KAAAa,MAED,SAA8CK,EAAcC,GAExD,OADAtB,KAAKqH,YAAYU,GAAG1G,EAAWC,GACxBtB,IACX,GAAC,CAAAG,IAAA,OAAAa,MAED,SAAgDK,EAAcC,GAE1D,OADAtB,KAAKqH,YAAYW,KAAK3G,EAAWC,GAC1BtB,IACX,GAAC,CAAAG,IAAA,MAAAa,MAED,SAA+CK,EAAcC,GAEzD,OADAtB,KAAKqH,YAAYY,IAAI5G,EAAWC,GACzBtB,IACX,IAAC,CAxDmC,CAI9B6E,GAuDGqD,EAAiC,SAAAC,GAM1C,SAAAD,EACI9C,GAEF,IAAAgD,EAAAC,EADEvD,EAAchC,UAAAC,OAAA,QAAAjB,IAAAgB,UAAA,GAAAA,UAAA,GAAG,GAIE,OAJA5B,EAAA,KAAAgH,GAET/G,EAAVkH,EAAAlF,EAAA,KAAA+E,EAAA,CAAM9C,IAAI,sBACViD,EAAKhB,YAAc,IAAIpG,GACvBmH,EAAAC,GAAK/F,IAAGyC,MAAAqD,EAAApD,EAAIF,IAAOuD,CACvB,CAAC,OAAAhF,EAAA6E,EAAAC,GAAAlD,EAAAiD,EAAA,EAAA/H,IAAA,MAAAa,MAED,WAA8B,QAAAsH,EAAA,KAAAC,EAAAzF,UAAAC,OAAhB+B,EAAK,IAAA7B,MAAAsF,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAL1D,EAAK0D,GAAA1F,UAAA0F,GACX1D,EAAM/B,SACNyE,EAAAU,EAAA,aAAAV,CAAa1C,GACb9E,KAAKqH,YAAYI,KAAK,SAAU,CAAEC,SAAU5C,EAAM5C,IAAI,SAAAiD,GAAI,OAAImD,EAAKzB,MAAM1B,EAAK,KAEtF,GAAC,CAAAhF,IAAA,SAAAa,MAED,WAAgC,QAAAyH,EAAA3F,UAAAC,OAAfsC,EAAG,IAAApC,MAAAwF,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAHrD,EAAGqD,GAAA5F,UAAA4F,GACZrD,EAAItC,SACJyE,EAAAU,EAAA,gBAAAV,CAAgBnC,GAChBrF,KAAKqH,YAAYI,KAAK,SAAU,CAAEI,aAAcxC,IAExD,GAAC,CAAAlF,IAAA,YAAAa,MAED,WAAmB,IAAA2H,EAAA,KACf,GAAI3I,KAAK+C,OAAQ,CACb,IAAMsC,EAAMrF,KAAK8E,MAAM5C,IAAI,SAAAiD,GAAI,OAAIwD,EAAK9B,MAAM1B,EAAK,GACnDqC,EAAAU,EAAA,mBAAAV,CAAA,IACAxH,KAAKqH,YAAYI,KAAK,SAAU,CAAEI,aAAcxC,GACpD,CACJ,GAEA,CAAAlF,IAAA,YAAAa,MAOA,WAAoC,QAAA4H,EAAAC,EAAA,KAAAC,EAAAhG,UAAAC,OAAhB+B,EAAK,IAAA7B,MAAA6F,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAALjE,EAAKiE,GAAAjG,UAAAiG,GACrB,IAGiCC,EAH3BC,EAAc,IAAIC,IAAIpE,EAAM5C,IAAI,SAAAiD,GAAI,OAAI0D,EAAKhC,MAAM1B,EAAK,IACxD0C,EAAyB,GAAGsB,EAAApD,EAEX/F,KAAK8E,OAAK,IAAjC,IAAAqE,EAAAlD,MAAA+C,EAAAG,EAAAjD,KAAAC,MAAmC,KAAxBiD,EAAQJ,EAAAhI,MACToE,EAAKpF,KAAK6G,MAAMuC,GAChBH,EAAYhF,IAAImB,IAClByC,EAAaxF,KAAK+C,EAE1B,CAAC,OAAAiB,GAAA8C,EAAA7C,EAAAD,EAAA,SAAA8C,EAAA5C,GAAA,EAEKzB,EAAM/B,QAAY8E,EAAa9E,WAIrC6F,EAAA5I,KAAKkF,QAAM,OAAOH,MAAA6D,EAAIf,GACtBL,EAAAU,EAAA,aAAAV,CAAa1C,GAEb9E,KAAKqH,YAAYI,KAAK,SAAU,CAC5BC,SAAU5C,EAAM5C,IAAI,SAAAiD,GAAI,OAAI0D,EAAKhC,MAAM1B,EAAK,GAC5C0C,aAAAA,IAER,GAAC,CAAA1H,IAAA,eAAAa,MAED,WACI,IAAMwF,EAAO,IAAI0B,EAAoDlI,KAAKoF,IAG1E,OAFAoB,EAAKa,YAAcrH,KAAKqH,YACxBb,EAAKtB,OAASlF,KAAKkF,OACZsB,CACX,GAAC,CAAArG,IAAA,KAAAa,MAED,SACIK,EACAC,GAGA,OADAtB,KAAKqH,YAAYU,GAAG1G,EAAWC,GACxBtB,IACX,GAAC,CAAAG,IAAA,OAAAa,MAED,SACIK,EACAC,GAGA,OADAtB,KAAKqH,YAAYW,KAAK3G,EAAWC,GAC1BtB,IACX,GAAC,CAAAG,IAAA,MAAAa,MAED,SACIK,EACAC,GAGA,OADAtB,KAAKqH,YAAYY,IAAI5G,EAAWC,GACzBtB,IACX,IAAC,CAjGyC,CAGpCyG,G,6gCChMH,IAAM4C,EAAYpE,EAIrB,SAAAoE,IAAqB,IAAAzG,EAAA,KAAA1B,EAAA,KAAAmI,GAAAlI,EAAA,uBAAAA,EAAA,uBACjBnB,KAAKsJ,QAAU,IAAIzF,QAAc,SAAC0F,GAAO,OAAK3G,EAAK2G,QAAUA,CAAO,EACxE,GAGSC,EAAe,WACwC,OAAAvE,EADxC,SAAAuE,IAAAtI,EAAA,KAAAsI,GAAArI,EAAA,gBACL,IAAI0D,EAAyC,IAAA1E,IAAA,WAAAa,MAEhE,SAAyBsI,EAAqBnJ,GAAmB,IAAAyD,EAAA,KAC7D5D,KAAKyJ,SAASnH,IAAI,CAACnC,EAAKmJ,IAOxBA,EAAO,MAAO,WACN1F,EAAK6F,SAASjJ,IAAIL,KAASmJ,GAC3B1F,EAAK6F,SAAQ,OAAQtJ,EAE7B,EACJ,GAAC,CAAAA,IAAA,qBAAAa,MAED,SAA0B0I,EAAwBvJ,GAC9CH,KAAK2J,SAASD,IAAMvJ,EACxB,GAAC,CAAAA,IAAA,MAAAa,MAED,SAAoBb,GAChB,OAAOH,KAAKyJ,SAASjJ,IAAIL,EAC7B,GAAC,CAAAA,IAAA,MAAAa,MAED,SAAWb,GACP,OAAOH,KAAKyJ,SAASxF,IAAI9D,EAC7B,GAAC,CAAAA,IAAA,WAAAa,MAED,SAAgBb,GACZ,OAASH,KAAKiE,IAAI9D,EACtB,GAAC,CAAAA,IAAA,SAAAa,MAED,WAAuC,IAAA4I,GACnCA,EAAA5J,KAAKyJ,UAAQ,OAAO1E,MAAA6E,EAAA9G,UACxB,GAAC,CAAA3C,IAAA,YAAAa,MAED,WACIhB,KAAKyJ,SAAS1C,WAClB,IAAC,CAxCuB,G,2mECV5B,IAAAT,EAAAuD,EAAAC,EAAA,mBAAAhJ,OAAAA,OAAA,GAAAoF,EAAA4D,EAAAC,UAAA,aAAA3J,EAAA0J,EAAA/I,aAAA,yBAAAiJ,EAAAF,EAAA5D,EAAA9F,EAAA4J,GAAA,IAAAC,EAAA/D,GAAAA,EAAAvF,qBAAAuJ,EAAAhE,EAAAgE,EAAAC,EAAA9J,OAAA+J,OAAAH,EAAAtJ,WAAA,OAAA0J,GAAAF,EAAA,mBAAAL,EAAA5D,EAAA9F,GAAA,IAAA4J,EAAAC,EAAAE,EAAA5D,EAAA,EAAA+D,EAAAlK,GAAA,GAAAmK,GAAA,EAAAC,EAAA,CAAAF,EAAA,EAAApE,EAAA,EAAAuE,EAAAnE,EAAAoE,EAAAC,EAAApE,EAAAoE,EAAAC,KAAAtE,EAAA,GAAAqE,EAAA,SAAAd,EAAAC,GAAA,OAAAE,EAAAH,EAAAI,EAAA,EAAAE,EAAA7D,EAAAkE,EAAAtE,EAAA4D,EAAAY,CAAA,YAAAC,EAAAb,EAAA5D,GAAA,IAAA+D,EAAAH,EAAAK,EAAAjE,EAAA2D,EAAA,GAAAU,GAAAhE,IAAAnG,GAAAyJ,EAAAS,EAAAvH,OAAA8G,IAAA,KAAAzJ,EAAA4J,EAAAM,EAAAT,GAAAc,EAAAH,EAAAF,EAAAO,EAAAb,EAAA,GAAAF,EAAA,GAAA1J,EAAAyK,IAAA3E,KAAAiE,EAAAH,GAAAC,EAAAD,EAAA,OAAAC,EAAA,MAAAD,EAAA,GAAAA,EAAA,GAAA1D,GAAA0D,EAAA,IAAAW,KAAAvK,EAAA0J,EAAA,GAAAa,EAAAX,EAAA,KAAAC,EAAA,EAAAO,EAAAC,EAAAvE,EAAAsE,EAAAtE,EAAA8D,EAAA,IAAAW,EAAAE,IAAAzK,EAAA0J,EAAA,GAAAE,EAAA,GAAA9D,GAAAA,EAAA2E,KAAAb,EAAA,GAAAF,EAAAE,EAAA,GAAA9D,EAAAsE,EAAAtE,EAAA2E,EAAAZ,EAAA,OAAA7J,GAAA0J,EAAA,SAAAY,EAAA,MAAAH,GAAA,EAAArE,CAAA,iBAAA9F,EAAAkK,EAAAO,GAAA,GAAAtE,EAAA,QAAAuE,UAAA,oCAAAP,GAAA,IAAAD,GAAAK,EAAAL,EAAAO,GAAAZ,EAAAK,EAAAH,EAAAU,GAAAhB,EAAAI,EAAA,EAAA3D,EAAA6D,KAAAI,GAAA,CAAAP,IAAAC,EAAAA,EAAA,GAAAA,EAAA,IAAAO,EAAAtE,GAAA,GAAAyE,EAAAV,EAAAE,IAAAK,EAAAtE,EAAAiE,EAAAK,EAAAC,EAAAN,GAAA,OAAA5D,EAAA,EAAAyD,EAAA,IAAAC,IAAA7J,EAAA,QAAAyJ,EAAAG,EAAA5J,GAAA,MAAAyJ,EAAAA,EAAAhJ,KAAAmJ,EAAAG,IAAA,MAAAW,UAAA,wCAAAjB,EAAA1D,KAAA,OAAA0D,EAAAM,EAAAN,EAAA7I,MAAAiJ,EAAA,IAAAA,EAAA,YAAAA,IAAAJ,EAAAG,EAAA,SAAAH,EAAAhJ,KAAAmJ,GAAAC,EAAA,IAAAE,EAAAW,UAAA,oCAAA1K,EAAA,YAAA6J,EAAA,GAAAD,EAAA1D,CAAA,UAAAuD,GAAAU,EAAAC,EAAAtE,EAAA,GAAAiE,EAAAL,EAAAjJ,KAAAqF,EAAAsE,MAAAE,EAAA,YAAAb,GAAAG,EAAA1D,EAAA2D,EAAA,EAAAE,EAAAN,CAAA,SAAAtD,EAAA,UAAAvF,MAAA6I,EAAA1D,KAAAoE,EAAA,GAAAT,EAAA1J,EAAA4J,IAAA,GAAAG,CAAA,KAAAO,EAAA,YAAAR,IAAA,UAAAa,IAAA,UAAAC,IAAA,CAAAnB,EAAAxJ,OAAA4K,eAAA,IAAAhB,EAAA,GAAA/D,GAAA2D,EAAAA,EAAA,GAAA3D,QAAAmE,GAAAR,EAAA,GAAA3D,EAAA,yBAAA2D,GAAAM,EAAAa,EAAArK,UAAAuJ,EAAAvJ,UAAAN,OAAA+J,OAAAH,GAAA,SAAA1D,EAAAD,GAAA,OAAAjG,OAAA6K,eAAA7K,OAAA6K,eAAA5E,EAAA0E,IAAA1E,EAAA6E,UAAAH,EAAAX,GAAA/D,EAAAlG,EAAA,sBAAAkG,EAAA3F,UAAAN,OAAA+J,OAAAD,GAAA7D,CAAA,QAAAyE,EAAApK,UAAAqK,EAAAX,GAAAF,EAAA,cAAAa,GAAAX,GAAAW,EAAA,cAAAD,GAAAA,EAAAK,YAAA,oBAAAf,GAAAW,EAAA5K,EAAA,qBAAAiK,GAAAF,GAAAE,GAAAF,EAAA/J,EAAA,aAAAiK,GAAAF,EAAAjE,EAAA,yBAAAmE,GAAAF,EAAA,oDAAAkB,GAAA,kBAAAC,EAAAtB,EAAAuB,EAAAhF,EAAA,cAAA8D,GAAA/D,EAAAwD,EAAA5D,EAAA2D,GAAA,IAAAG,EAAA3J,OAAAC,eAAA,IAAA0J,EAAA,gBAAA1D,GAAA0D,EAAA,EAAAK,GAAA,SAAA/D,EAAAwD,EAAA5D,EAAA2D,GAAA,SAAAzJ,EAAA0J,EAAA5D,GAAAmE,GAAA/D,EAAAwD,EAAA,SAAAxD,GAAA,YAAAkF,QAAA1B,EAAA5D,EAAAI,EAAA,GAAAwD,EAAAE,EAAAA,EAAA1D,EAAAwD,EAAA,CAAA9I,MAAAkF,EAAA3F,YAAAsJ,EAAA4B,cAAA5B,EAAA6B,UAAA7B,IAAAvD,EAAAwD,GAAA5D,GAAA9F,EAAA,UAAAA,EAAA,WAAAA,EAAA,cAAAiK,GAAA/D,EAAAwD,EAAA5D,EAAA2D,EAAA,UAAA8B,GAAAzF,EAAA2D,EAAAvD,EAAAwD,EAAA1J,EAAAsK,EAAAT,GAAA,QAAAD,EAAA9D,EAAAwE,GAAAT,GAAAE,EAAAH,EAAAhJ,KAAA,OAAAkF,GAAA,YAAAI,EAAAJ,EAAA,CAAA8D,EAAA7D,KAAA0D,EAAAM,GAAAtG,QAAA0F,QAAAY,GAAAyB,KAAA9B,EAAA1J,EAAA,UAAAyL,GAAA3F,GAAA,sBAAA2D,EAAA,KAAAvD,EAAAxD,UAAA,WAAAe,QAAA,SAAAiG,EAAA1J,GAAA,IAAAsK,EAAAxE,EAAAnB,MAAA8E,EAAAvD,GAAA,SAAAwF,EAAA5F,GAAAyF,GAAAjB,EAAAZ,EAAA1J,EAAA0L,EAAAC,EAAA,OAAA7F,EAAA,UAAA6F,EAAA7F,GAAAyF,GAAAjB,EAAAZ,EAAA1J,EAAA0L,EAAAC,EAAA,QAAA7F,EAAA,CAAA4F,OAAA,eAAA5K,GAAAwJ,EAAAxE,GAAA,KAAAwE,aAAAxE,GAAA,UAAA4E,UAAA,8CAAAkB,GAAA1F,EAAAwD,GAAA,QAAAD,EAAA,EAAAA,EAAAC,EAAA/G,OAAA8G,IAAA,KAAAzJ,EAAA0J,EAAAD,GAAAzJ,EAAAG,WAAAH,EAAAG,aAAA,EAAAH,EAAAqL,cAAA,YAAArL,IAAAA,EAAAsL,UAAA,GAAArL,OAAAC,eAAAgG,EAAA2F,GAAA7L,EAAAD,KAAAC,EAAA,WAAA6E,GAAAqB,EAAAwD,EAAAD,GAAA,OAAAC,GAAAkC,GAAA1F,EAAA3F,UAAAmJ,GAAAD,GAAAmC,GAAA1F,EAAAuD,GAAAxJ,OAAAC,eAAAgG,EAAA,aAAAoF,UAAA,IAAApF,CAAA,UAAAnD,GAAA0G,EAAAzJ,EAAAkG,GAAA,OAAAlG,EAAA8L,GAAA9L,GAAA,SAAAyJ,EAAAvD,GAAA,GAAAA,IAAA,UAAA6F,EAAA7F,IAAA,mBAAAA,GAAA,OAAAA,EAAA,YAAAA,EAAA,UAAAwE,UAAA,4EAAAxE,GAAA,YAAAA,EAAA,UAAA8F,eAAA,oEAAA9F,CAAA,CAAA+F,CAAAxC,EAAA,CAAAyC,CAAAzC,EAAA0C,KAAAC,QAAAC,UAAArM,EAAAkG,GAAA,GAAA4F,GAAArC,GAAA6C,aAAAtM,EAAA2E,MAAA8E,EAAAvD,GAAA,UAAAiG,KAAA,QAAA1C,GAAA8C,QAAAhM,UAAAiM,QAAA/L,KAAA2L,QAAAC,UAAAE,QAAA,wBAAA9C,GAAA,QAAA0C,GAAA,mBAAA1C,CAAA,cAAAqC,GAAArC,GAAA,OAAAqC,GAAA7L,OAAA6K,eAAA7K,OAAA4K,eAAAL,OAAA,SAAAf,GAAA,OAAAA,EAAAsB,WAAA9K,OAAA4K,eAAApB,EAAA,EAAAqC,GAAArC,EAAA,UAAAxG,GAAAwG,EAAAvD,GAAA,sBAAAA,GAAA,OAAAA,EAAA,UAAAwE,UAAA,sDAAAjB,EAAAlJ,UAAAN,OAAA+J,OAAA9D,GAAAA,EAAA3F,UAAA,CAAA+L,YAAA,CAAA1L,MAAA6I,EAAA6B,UAAA,EAAAD,cAAA,KAAApL,OAAAC,eAAAuJ,EAAA,aAAA6B,UAAA,IAAApF,GAAAuG,GAAAhD,EAAAvD,EAAA,UAAAuG,GAAAhD,EAAAvD,GAAA,OAAAuG,GAAAxM,OAAA6K,eAAA7K,OAAA6K,eAAAN,OAAA,SAAAf,EAAAvD,GAAA,OAAAuD,EAAAsB,UAAA7E,EAAAuD,CAAA,EAAAgD,GAAAhD,EAAAvD,EAAA,UAAAnF,GAAAmF,EAAAwD,EAAAD,GAAA,OAAAC,EAAAmC,GAAAnC,MAAAxD,EAAAjG,OAAAC,eAAAgG,EAAAwD,EAAA,CAAA9I,MAAA6I,EAAAtJ,YAAA,EAAAkL,cAAA,EAAAC,UAAA,IAAApF,EAAAwD,GAAAD,EAAAvD,CAAA,UAAA2F,GAAApC,GAAA,IAAAG,EAAA,SAAAH,EAAAC,GAAA,aAAAqC,EAAAtC,KAAAA,EAAA,OAAAA,EAAA,IAAAvD,EAAAuD,EAAA/I,OAAAgM,aAAA,YAAAxG,EAAA,KAAA0D,EAAA1D,EAAAzF,KAAAgJ,EAAAC,GAAA,wBAAAqC,EAAAnC,GAAA,OAAAA,EAAA,UAAAc,UAAA,kEAAAhB,EAAAiD,OAAAC,QAAAnD,EAAA,CAAAoD,CAAApD,EAAA,0BAAAsC,EAAAnC,GAAAA,EAAAA,EAAA,GAGO,IAAKkD,GAAW,SAAXA,GAAW,OAAXA,EAAAA,EAAW,eAAXA,EAAAA,EAAW,mBAAXA,EAAAA,EAAW,eAAXA,EAAAA,EAAW,mBAAXA,CAAW,MAiSVC,GAAkB,SAAAC,GAa3B,SAAAD,EACYE,EACAC,EACAC,GAEV,IAAAnG,EADEoG,IAAmB1K,UAAAC,OAAA,QAAAjB,IAAAgB,UAAA,KAAAA,UAAA,GASlB,OATyB5B,GAAA,KAAAiM,GAb9BhM,GAeIiG,EAAAjE,GAAA,KAAAgK,EAAA,CAAM,OAfV,cAGkDD,IAAW9F,EAOjDiG,OAAAA,EAAcjG,EACdkG,QAAAA,EAAelG,EACfmG,QAAAA,EAKRnG,EAAKqG,cAAcC,cAAe,EAE9BF,IACApG,EAAKmG,QAAQI,OAAO5F,GAAG,aAAc,SAAA6F,GAAE,OAAIxG,EAAKyG,iBAAiBD,EAAG,GACpExG,EAAKmG,QAAQI,OAAO5F,GAAG,mBAAoB,SAAA6F,GAAE,OAAIxG,EAAK0G,uBAAuBF,EAAG,IACnFxG,CACL,CAAC,OAAA/D,GAAA8J,EAAAC,GAAAnI,GAAAkI,EAAA,EAAAhN,IAAA,eAAAa,MAED,WACI,IAAMwF,EAAO,IAAI2G,EAAmBnN,KAAKqN,OAAQrN,KAAKsN,QAAStN,KAAKuN,SAAS,GAI7E,OAHA/G,EAAKa,YAAcrH,KAAKqH,YACxBb,EAAKtB,OAASlF,KAAKkF,OACnBsB,EAAKiH,cAAgBzN,KAAKyN,cACnBjH,CACX,GAAC,CAAArG,IAAA,mBAAAK,IAED,WACI,OAAOR,KAAKyN,cAAcC,YAC9B,GAAC,CAAAvN,IAAA,kBAAAa,OAAA+M,EAAAlC,GAAAR,KAAAE,EAED,SAAAyC,EAA6BC,GAAa,OAAA5C,KAAAC,EAAA,SAAA4C,GAAA,cAAAA,EAAAhI,GAAA,OACC,GAAvClG,KAAKyN,cAAcC,aAAeO,GAE9BA,GAASjO,KAAKmO,QAAUjB,GAAYkB,MAAQpO,KAAKmO,QAAUjB,GAAYmB,OAAO,CAAAH,EAAAhI,EAAA,eAAAgI,EAAAhI,EAAA,EAAAsB,EAAA2F,EAAA,uBAAA3F,CAAA,kBAAA0G,EAAAxD,EAAA,KAAAsD,EAAA,SAGrF,SAN2BM,GAAA,OAAAP,EAAAhJ,MAAC,KAADjC,UAAA,KAAA3C,IAAA,gBAAAa,OAAAuN,EAAA1C,GAAAR,KAAAE,EAQ5B,SAAAiD,IAAA,IAAAC,EAAAC,EAAA5L,UAAA,OAAAuI,KAAAC,EAAA,SAAAqD,GAAA,cAAAA,EAAAzI,GAAA,OAAiD,GAAtBuI,EAAcC,EAAA3L,OAAA,QAAAjB,IAAA4M,EAAA,IAAAA,EAAA,IACjC1O,KAAKyN,cAAcC,aAAc,CAAFiB,EAAAzI,EAAA,eAAAyI,EAAAjE,EAAA,iBAAAiE,EAAAjE,EAAA,EAAAlD,EAAA2F,EAAA,uBAAA3F,CAAA,CAGRiH,KAAK,EAAAD,EAAA,SACnC,WALyB,OAAAD,EAAAxJ,MAAC,KAADjC,UAAA,KAAA3C,IAAA,YAAAa,OAAA4N,EAAA/C,GAAAR,KAAAE,EAO1B,SAAAsD,IAAA,OAAAxD,KAAAC,EAAA,SAAAwD,GAAA,cAAAA,EAAA5I,GAAA,WACQlG,KAAKyN,cAAcC,aAAc,CAAFoB,EAAA5I,EAAA,eAAA4I,EAAApE,EAAA,iBAAAoE,EAAApE,EAAA,EAAAlD,EAAA2F,EAAA,mBAAA3F,CAAA,OAAAqH,EAAA,SAItC,WALqB,OAAAD,EAAA7J,MAAC,KAADjC,UAAA,KAAA3C,IAAA,gBAAAa,OAAA+N,EAAAlD,GAAAR,KAAAE,EAOtB,SAAAyD,IAAA,OAAA3D,KAAAC,EAAA,SAAA2D,GAAA,cAAAA,EAAA/I,GAAA,WACQlG,KAAKyN,cAAcC,aAAc,CAAFuB,EAAA/I,EAAA,eAAA+I,EAAAvE,EAAA,iBAAAuE,EAAAvE,EAAA,EAAAlD,EAAA2F,EAAA,uBAAA3F,CAAA,OAAAwH,EAAA,SAItC,WALyB,OAAAD,EAAAhK,MAAC,KAADjC,UAAA,KAAA3C,IAAA,SAAAa,OAAAkO,EAAArD,GAAAR,KAAAE,EAO1B,SAAA4D,EAAoB/J,GAAU,OAAAiG,KAAAC,EAAA,SAAA8D,GAAA,cAAAA,EAAAlJ,GAAA,WACtBlG,KAAKyN,cAAcC,aAAc,CAAF0B,EAAAlJ,EAAA,eAAAkJ,EAAA1E,EAAA,iBAAA0E,EAAA1E,EAAA,EAAAlD,EAAA2F,EAAA,gBAAA3F,CAAA,CAGfpC,KAAE,EAAA+J,EAAA,SACzB,SALkBE,GAAA,OAAAH,EAAAnK,MAAC,KAADjC,UAAA,IAOnB,CAAA3C,IAAA,0BAAAa,MAIA,SAA+BsO,GAC3B,IAAMC,EAAavP,KAAKQ,IAAI8O,EAASC,WAAWnK,IAE5CmK,GAEAvP,KAAKsC,IAAGkN,EAAAA,EAAC,CAAC,EAAGD,GAAU,IAAEE,SAAUH,EAASlK,KAEpD,GAAC,CAAAjF,IAAA,kBAAAa,OAAA0O,EAAA7D,GAAAR,KAAAE,EAED,SAAAoE,IAAA,IAAAC,EAAAC,EAAAhK,EAAA,OAAAwF,KAAAC,EAAA,SAAAwE,GAAA,cAAAA,EAAA5J,GAAA,OACmD,GAAzC2J,EAAqC,QAA9BD,EAAG5P,KAAK+P,MAAM/P,KAAK+C,OAAS,UAAE,IAAA6M,OAAA,EAA3BA,EAA6BxK,GAE9B,CAAF0K,EAAA5J,EAAA,eAAA4J,EAAApF,EAAA,EAEF,MAAI,cAAAoF,EAAA5J,EAAA,EAGMlG,KAAKuN,QAAQI,OAAOqC,KAAK,cAAe,CACzDC,SAAU,CAAC5C,OAAQrN,KAAKqN,OAAQC,QAAStN,KAAKsN,SAC9C4C,MAAOL,EACPlK,MAAO3F,KAAKyN,cAAc0C,aAC5B,OAJU,KAANtK,EAAMiK,EAAArF,GAMDtG,MAAO,CAAF2L,EAAA5J,EAAA,cACN,IAAIkK,MAAM,0BAADhN,OAA2ByC,EAAO1B,MAAMkM,UAAU,cAAAP,EAAApF,EAAA,EAG9D7E,EAAOtC,KAAK+M,UAAQ,EAAAX,EAAA,SAC9B,WAnB8B,OAAAD,EAAA3K,MAAC,KAADjC,UAAA,KAAA3C,IAAA,mBAAAa,OAAAuP,EAAA1E,GAAAR,KAAAE,EAqB/B,SAAAiF,EAAiCpL,GAAU,IAAAS,EAAA,OAAAwF,KAAAC,EAAA,SAAAmF,GAAA,cAAAA,EAAAvK,GAAA,cAAAuK,EAAAvK,EAAA,EAClBlG,KAAKuN,QAAQI,OAAOqC,KAAK,cAAe,CACzDC,SAAU,CAAC5C,OAAQrN,KAAKqN,OAAQC,QAAStN,KAAKsN,SAC9CoD,OAAQtL,EACRO,MAAO3F,KAAKyN,cAAc0C,aAC5B,OAJU,KAANtK,EAAM4K,EAAAhG,GAMDtG,MAAO,CAAFsM,EAAAvK,EAAA,cACN,IAAIkK,MAAM,0BAADhN,OAA2ByC,EAAO1B,MAAMkM,UAAU,cAAAI,EAAA/F,EAAA,EAG9D7E,EAAOtC,KAAK+M,UAAQ,EAAAE,EAAA,SAC9B,SAZ+BG,GAAA,OAAAJ,EAAAxL,MAAC,KAADjC,UAAA,KAAA3C,IAAA,mBAAAa,OAAA4P,EAAA/E,GAAAR,KAAAE,EAchC,SAAAsF,IAAA,IAAAC,EAAAC,EAAAlL,EAAA,OAAAwF,KAAAC,EAAA,SAAA0F,GAAA,cAAAA,EAAA9K,GAAA,OACsC,GAA5B6K,EAAwB,QAAhBD,EAAG9Q,KAAK+P,MAAM,UAAE,IAAAe,OAAA,EAAbA,EAAe1L,GAEhB,CAAF4L,EAAA9K,EAAA,eAAA8K,EAAAtG,EAAA,EAEH,MAAI,cAAAsG,EAAA9K,EAAA,EAGMlG,KAAKuN,QAAQI,OAAOqC,KAAK,cAAe,CACzDC,SAAU,CAAC5C,OAAQrN,KAAKqN,OAAQC,QAAStN,KAAKsN,SAC9C2D,OAAQF,EACRpL,MAAO3F,KAAKyN,cAAc0C,aAC5B,OAJU,KAANtK,EAAMmL,EAAAvG,GAMDtG,MAAO,CAAF6M,EAAA9K,EAAA,cACN,IAAIkK,MAAM,0BAADhN,OAA2ByC,EAAO1B,MAAMkM,UAAU,cAAAW,EAAAtG,EAAA,EAG9D7E,EAAOtC,KAAK+M,UAAQ,EAAAO,EAAA,SAC9B,WAnB+B,OAAAD,EAAA7L,MAAC,KAADjC,UAAA,KAAA3C,IAAA,mBAAAa,OAAAkQ,EAAArF,GAAAR,KAAAE,EAqBhC,SAAA4F,IAAA,IAAAtL,EAAA,OAAAwF,KAAAC,EAAA,SAAA8F,GAAA,cAAAA,EAAAlL,GAAA,cAAAkL,EAAAlL,EAAA,EACyBlG,KAAKuN,QAAQI,OAAOqC,KAAK,cAAe,CACzDC,SAAU,CAAC5C,OAAQrN,KAAKqN,OAAQC,QAAStN,KAAKsN,SAC9C3H,MAAO3F,KAAKyN,cAAc0C,aAC5B,OAHU,KAANtK,EAAMuL,EAAA3G,GAKDtG,MAAO,CAAFiN,EAAAlL,EAAA,cACN,IAAIkK,MAAM,0BAADhN,OAA2ByC,EAAO1B,MAAMkM,UAAU,cAAAe,EAAA1G,EAAA,EAG9D7E,EAAOtC,KAAK+M,UAAQ,EAAAa,EAAA,SAC9B,WAX+B,OAAAD,EAAAnM,MAAC,KAADjC,UAAA,KAAA3C,IAAA,WAAAa,OAAAqQ,EAAAxF,GAAAR,KAAAE,EAahC,SAAA+F,IAAA,OAAAjG,KAAAC,EAAA,SAAAiG,GAAA,cAAAA,EAAArL,GAAA,cAAAqL,EAAArL,EAAA,EACkBlG,KAAKuN,QAAQiE,MAAMC,UAAUzR,KAAKqN,OAAQ,CAACrN,KAAKsN,UAAS,cAAAiE,EAAA7G,EAAA,EAAA6G,EAAA9G,EAAEjK,IAAIR,KAAKsN,UAAO,EAAAgE,EAAA,SAC5F,WAFqB,OAAAD,EAAAtM,MAAC,KAADjC,UAAA,KAAA3C,IAAA,qBAAAa,OAAA0Q,EAAA7F,GAAAR,KAAAE,EAItB,SAAAoG,IAAA,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAA3G,KAAAC,EAAA,SAAA2G,GAAA,cAAAA,EAAA/L,GAAA,cAAA+L,EAAA/L,EAAA,EACkBlG,KAAKkS,WAAU,UAAAH,EAAAH,EAAAK,EAAAxH,EAAAqH,EAAA,OAAAC,EAAA,CAAAE,EAAA/L,EAAA,QAAA4L,OAAA,IAAAF,EAAA,UAAAC,EAAAC,EAAA,CAAAG,EAAA/L,EAAA,QAAA2L,EAAc,QAAdD,EAAtBA,EAAyBO,mBAAW,IAAAP,EAAA,WAAAC,EAAA,CAAAI,EAAA/L,EAAA,QAAA8L,OAAA,EAAAC,EAAA/L,EAAA,eAAA8L,EAApCJ,EAAsCxM,GAAE,cAAA6M,EAAAvH,EAAA,EAAAsH,GAAA,EAAAL,EAAA,SAClD,WAF+B,OAAAD,EAAA3M,MAAC,KAADjC,UAAA,KAAA3C,IAAA,qBAAAa,OAAAoR,EAAAvG,GAAAR,KAAAE,EAIhC,SAAA8G,IAAA,IAAAC,EAAA,OAAAjH,KAAAC,EAAA,SAAAiH,GAAA,cAAAA,EAAArM,GAAA,cAAAqM,EAAArM,EAAA,EACgClG,KAAKwS,qBAAoB,OAAlC,OAAbF,EAAaC,EAAA9H,EAAA8H,EAAA7H,EAAA,GACZ4H,GAAgBtS,KAAKiE,IAAIqO,IAAqB,EAAAD,EAAA,SACxD,WAHiC,OAAAD,EAAArN,MAAC,KAADjC,UAAA,KAAA3C,IAAA,mBAAAa,OAAAyR,EAAA5G,GAAAR,KAAAE,EAKlC,SAAAmH,EAA+B9E,GAAc,IAAA+E,EAAA,OAAAtH,KAAAC,EAAA,SAAAsH,GAAA,cAAAA,EAAA1M,GAAA,OAErC,CAACgH,GAAYmB,OAAQnB,GAAYkB,MAAMyE,SAAS7S,KAAKmO,QAClDP,EAAGyC,QAAQJ,SAAS5C,SAAWrN,KAAKqN,QACpCO,EAAGyC,QAAQJ,SAAS3C,UAAYtN,KAAKsN,UAElCqF,EAAgB3S,KAAKmO,MAC3BnO,KAAK8S,SAAS,CAAClF,EAAGyC,SAAU,QAC5BrQ,KAAK+S,oBAAmB,EAAMJ,IACjC,cAAAC,EAAAlI,EAAA,KAAAgI,EAAA,SACJ,SAV6BM,GAAA,OAAAP,EAAA1N,MAAC,KAADjC,UAAA,KAAA3C,IAAA,yBAAAa,OAAAiS,EAAApH,GAAAR,KAAAE,EAY9B,SAAA2H,EAAqCtF,GAAoB,IAAAuF,EAAA,OAAA9H,KAAAC,EAAA,SAAA8H,GAAA,cAAAA,EAAAlN,GAAA,UACjD0H,EAAGqC,SAAS3C,UAAYtN,KAAKsN,SAAWM,EAAGqC,SAAS5C,SAAWrN,KAAKqN,OAAM,CAAA+F,EAAAlN,EAAA,eAAAkN,EAAA1I,EAAA,UAQvD,GAJjByI,EAAcnT,KAAK8E,MACpBuO,OAAO,SAAAC,GAAG,OAAIA,EAAI7D,UAAY7B,EAAGvI,IAAIwN,SAASS,EAAIlO,GAAG,GACrDlD,IAAI,SAAAoR,GAAG,OAAIA,EAAI7D,QAAQ,GAE5BzP,KAAI,OAAO+E,MAAX/E,KAAIgF,EAAW4I,EAAGvI,MAEE,IAAhBrF,KAAK+C,OAAY,CAAAqQ,EAAAlN,EAAA,eAAAkN,EAAAlN,EAAA,EACXlG,KAAKuT,gBAAe,OAG1BJ,EAAYpQ,OAAS,GACrB/C,KAAKqH,YAAYI,KAAK,mBAAoB0L,GAC7C,cAAAC,EAAA1I,EAAA,KAAAwI,EAAA,SACJ,SAlBmCM,GAAA,OAAAP,EAAAlO,MAAC,KAADjC,UAAA,MAZN,IAAAmQ,EALIR,EAJFL,EAJVV,EAbUL,EArBAH,EAdAN,EArBDL,EAF9Bb,EAzByBR,EAPJH,EAPIH,EAREL,EAF3BR,CAiJmC,CAxLT,CAzQkB,SAAA0F,GAAA,SAAAC,IAAA,IAAA9Q,EAAA1B,GAAA,KAAAwS,GAAA,QAAA7Q,EAAAC,UAAAC,OAAAC,EAAA,IAAAC,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAAF,EAAAE,GAAAJ,UAAAI,GA2B5C,OA3B4C/B,GAAAyB,EAAAO,GAAA,KAAAuQ,EAAA,GAAAtQ,OAAAJ,IAAA,gBAmBzC,CACA2Q,QAASzG,GAAYkB,KACrBwF,aAAS9R,EACT6D,MAAO,IACPkO,YAAa,EACb1D,WAAY,GACZ2D,eAAgB,EAChBC,SAAU,OACbnR,CAAA,QAAAS,GAAAqQ,EAAAD,GAAAxO,GAAAyO,EAAA,EAAAvT,IAAA,QAAAK,IApBD,WACI,OAAOR,KAAKyN,cAAckG,OAC9B,GAAC,CAAAxT,IAAA,aAAAK,IAuBD,WACI,OAAOR,KAAKyN,cAAc0C,UAC9B,EAEA7N,IAGA,SAAsBtB,GAClBhB,KAAKyN,cAAc0C,WAAanP,CACpC,GAEA,CAAAb,IAAA,QAAAK,IAIA,WACI,OAAOR,KAAKyN,cAAc9H,KAC9B,EAEArD,IAIA,SAAiBtB,GACbhB,KAAKyN,cAAc9H,MAAQ3E,CAC/B,GAEA,CAAAb,IAAA,cAAAK,IAGA,WACI,OAAOR,KAAKyN,cAAcoG,WAC9B,EAEAvR,IAGA,SAAuBtB,GACnBhB,KAAKyN,cAAcoG,YAAc7S,CACrC,GAAC,CAAAb,IAAA,YAAAK,IAED,WACI,MAAO,CAAC0M,GAAYmB,OAAQnB,GAAYkB,MAAMyE,SAAS7S,KAAKmO,MAChE,GAAC,CAAAhO,IAAA,YAAAK,IAED,WACI,OAAOR,KAAKmO,QAAUjB,GAAY8G,QAC3BhU,KAAKmO,QAAUjB,GAAYmB,QAAUrO,KAAK+C,OAAS/C,KAAKmQ,YACxB,OAAhCnQ,KAAKyN,cAAcsG,UAAqB/T,KAAKiE,IAAIjE,KAAKyN,cAAcsG,SAC/E,GAAC,CAAA5T,IAAA,gBAAAa,OAAAiT,EAAApI,GAAAR,KAAAE,EAID,SAAA2I,IAAA,IAAAzF,EAAA5I,EAAA8M,EAAAwB,EAAArR,UAAA,OAAAuI,KAAAC,EAAA,SAAA8I,GAAA,cAAAA,EAAA9J,EAAA8J,EAAAlO,GAAA,OAAiD,GAAtBuI,EAAc0F,EAAApR,OAAA,QAAAjB,IAAAqS,EAAA,IAAAA,EAAA,IACjCnU,KAAKyN,cAAcmG,UAAcnF,GAASzO,KAAKyN,cAAckG,UAAYzG,GAAYmB,QAAO,CAAA+F,EAAAlO,EAAA,eAAAkO,EAAA1J,EAAA,UAMhD,OAD1CiI,EAAgB3S,KAAKmO,MAC3BnO,KAAKyN,cAAcmG,QAAU1G,GAAYmB,OAAO+F,EAAA9J,EAAA,EAAA8J,EAAAlO,EAAA,EAG7BlG,KAAKqU,mBAAkB,OAAtCxO,EAAMuO,EAAA3J,EACNzK,KAAKyN,cAAcqG,eAAiBjO,EAAO9C,OAAO,OAEX,OAFWqR,EAAA9J,EAAA,EAElDtK,KAAKyN,cAAcmG,aAAU9R,EAAUsS,EAAA7N,EAAA,UAG3CvG,KAAKkF,OAAO6B,YACZ/G,KAAK8S,SAASjN,EAAQ,QACtB7F,KAAKyN,cAAckG,QAAUzG,GAAYmB,OACzCrO,KAAK+S,oBAAmB,EAAMJ,GAAe,cAAAyB,EAAA1J,EAAA,KAAAwJ,EAAA,oBAChD,WApByB,OAAAD,EAAAlP,MAAC,KAADjC,UAAA,KAAA3C,IAAA,gBAAAa,OAAAsT,EAAAzI,GAAAR,KAAAE,EAsB1B,SAAAgJ,IAAA,IAAA1O,EAAA8M,EAAA6B,EAAA,OAAAnJ,KAAAC,EAAA,SAAAmJ,GAAA,cAAAA,EAAAnK,EAAAmK,EAAAvO,GAAA,WACQlG,KAAKyN,cAAcmG,UAAW5T,KAAK0U,UAAS,CAAAD,EAAAvO,EAAA,eAAAuO,EAAA/J,EAAA,UAMF,OADxCiI,EAAgB3S,KAAKmO,MAC3BnO,KAAKyN,cAAcmG,QAAU1G,GAAYyH,KAAKF,EAAAnK,EAAA,EAAAmK,EAAAvO,EAAA,EAG3BlG,KAAK4U,mBAAkB,OAAtC/O,EAAM4O,EAAAhK,EACNzK,KAAKyN,cAAcqG,eAAiBjO,EAASA,EAAO9C,OAAS,EAAE,OAExB,OAFwB0R,EAAAnK,EAAA,EAE/DtK,KAAKyN,cAAcmG,aAAU9R,EAAU2S,EAAAlO,EAAA,aAGrCV,EAAQ,CAAF4O,EAAAvO,EAAA,eAAAuO,EAAA/J,EAAA,EACD1K,KAAKuT,iBAAe,UAGzB1N,EAAO9C,OAAQ,CAAF0R,EAAAvO,EAAA,QAEwD,OADjEsO,EAAYxU,KAAK+P,MAAM,GAC7B/P,KAAKyN,cAAcsG,SAAWS,EAAYxU,KAAK6G,MAAM2N,GAAa,KAAKC,EAAAvO,EAAA,EAEjElG,KAAK6U,sBAAqB,OAOc,OAJ1C7U,KAAKyN,cAAckG,UAAYzG,GAAYyH,OAC3C3U,KAAKyN,cAAckG,QAAUzG,GAAY8G,QAG7ChU,KAAK+S,oBAAmB,EAAOJ,GAAe8B,EAAA/J,EAAA,UAIpB,OAA9B1K,KAAK8S,SAASjN,EAAQ,QAAQ4O,EAAAvO,EAAA,EACxBlG,KAAK6U,sBAAqB,OAChC7U,KAAK+S,oBAAmB,EAAMJ,GAAe,eAAA8B,EAAA/J,EAAA,KAAA6J,EAAA,oBAChD,WAtCyB,OAAAD,EAAAvP,MAAC,KAADjC,UAAA,KAAA3C,IAAA,YAAAa,OAAA8T,EAAAjJ,GAAAR,KAAAE,EAwC1B,SAAAwJ,IAAA,IAAAlP,EAAA8M,EAAA,OAAAtH,KAAAC,EAAA,SAAA0J,GAAA,cAAAA,EAAA1K,EAAA0K,EAAA9O,GAAA,WACQlG,KAAKyN,cAAcmG,UAAW5T,KAAKiV,UAAS,CAAAD,EAAA9O,EAAA,eAAA8O,EAAAtK,EAAA,UAMF,OADxCiI,EAAgB3S,KAAKmO,MAC3BnO,KAAKyN,cAAcmG,QAAU1G,GAAYyH,KAAKK,EAAA1K,EAAA,EAAA0K,EAAA9O,EAAA,EAG3BlG,KAAKkV,kBAAiB,OAArCrP,EAAMmP,EAAAvK,EACNzK,KAAKyN,cAAcqG,eAAiBjO,EAASA,EAAO9C,OAAS,EAAE,OAExB,OAFwBiS,EAAA1K,EAAA,EAE/DtK,KAAKyN,cAAcmG,aAAU9R,EAAUkT,EAAAzO,EAAA,aAGrCV,EAAQ,CAAFmP,EAAA9O,EAAA,eAAA8O,EAAA9O,EAAA,EACFlG,KAAKuT,gBAAe,cAAAyB,EAAAtK,EAAA,cAI1B7E,EAAO9C,OAAQ,CAAFiS,EAAA9O,EAAA,QACiB,OAA9BlG,KAAK8S,SAASjN,EAAQ,QAAQmP,EAAA9O,EAAA,EACxBlG,KAAK6U,sBAAqB,OACa,OAA7C7U,KAAK+S,oBAAmB,EAAMJ,GAAeqC,EAAAtK,EAAA,iBAAAsK,EAAAtK,EAAA,KAAAqK,EAAA,oBAGpD,WA3BqB,OAAAD,EAAA/P,MAAC,KAADjC,UAAA,KAAA3C,IAAA,SAAAa,OAAAmU,EAAAtJ,GAAAR,KAAAE,EA6BtB,SAAA6J,EAAoBhQ,GAAU,IAAAS,EAAA8M,EAAA,OAAAtH,KAAAC,EAAA,SAAA+J,GAAA,cAAAA,EAAA/K,EAAA+K,EAAAnP,GAAA,YACtBlG,KAAKyN,cAAcmG,SAAY5T,KAAKmO,QAAUjB,GAAYkB,MAAQpO,KAAKkF,OAAOjB,IAAImB,IAAI,CAAAiQ,EAAAnP,EAAA,eAAAmP,EAAA3K,EAAA,UAM5C,OADxCiI,EAAgB3S,KAAKmO,MAC3BnO,KAAKyN,cAAcmG,QAAU1G,GAAYyH,KAAKU,EAAA/K,EAAA,EAAA+K,EAAAnP,EAAA,EAG3BlG,KAAKsV,iBAAiBlQ,GAAG,OACuB,GAD/DS,EAAMwP,EAAA5K,EACNzK,KAAKyN,cAAcqG,eAAiBjO,EAASA,EAAO9C,OAAS,GAEzD8C,EAAQ,CAAFwP,EAAAnP,EAAA,QAEwB,OAD9BlG,KAAKkF,OAAO6B,YACZ/G,KAAK8S,SAASjN,EAAQ,QAAQwP,EAAAnP,EAAA,EACxBlG,KAAK6U,sBAAqB,OAGG,OAHHQ,EAAA/K,EAAA,EAGpCtK,KAAKyN,cAAcmG,aAAU9R,EAAUuT,EAAA9O,EAAA,UAG3CvG,KAAK+S,qBAAqBlN,EAAQ8M,GAAe,cAAA0C,EAAA3K,EAAA,KAAA0K,EAAA,oBACpD,SAvBkBG,GAAA,OAAAJ,EAAApQ,MAAC,KAADjC,UAAA,KAAA3C,IAAA,sBAAAa,OAAAwU,EAAA3J,GAAAR,KAAAE,EAmCnB,SAAAkK,IAAA,IAAAC,EAAA,OAAArK,KAAAC,EAAA,SAAAqK,GAAA,cAAAA,EAAAzP,GAAA,cAAAyP,EAAAzP,EAAA,EACwClG,KAAK4V,qBAAoB,WAAAD,EAAAlL,EAAE,CAAFkL,EAAAzP,EAAA,QAAAwP,EAAIxI,GAAYmB,OAAMsH,EAAAzP,EAAA,eAAAwP,EAAGxI,GAAYyH,KAAI,OAAtG3U,KAAKyN,cAAckG,QAAO+B,EAAA,cAAAC,EAAAjL,EAAA,KAAA+K,EAAA,SAC7B,WAFkC,OAAAD,EAAAzQ,MAAC,KAADjC,UAAA,KAAA3C,IAAA,WAAAa,MAInC,SAAmB6U,EAAmBC,GAA2B,IAAApP,EACzDb,EADyDjC,EAAA,KAGlD,SAAPkS,IACAjQ,EAAS7F,KAAK+V,sBAAsB,GAAD3S,OAAA4B,EAAK6Q,GAAQ7Q,EAAKhF,KAAK8E,QAAQ,SAG3D,SAAPgR,IACAjQ,EAAS7F,KAAK+V,sBAAsB,GAAD3S,OAAA4B,EAAKhF,KAAK8E,OAAKE,EAAK6Q,IAAW,SAItE7V,KAAKkF,OAAO6B,aACZL,EAAA1G,KAAKkF,QAAO5C,IAAGyC,MAAA2B,EAAA1B,EAAKa,EAAO3D,IAAI,SAAAiD,GAAI,MAAI,CAACvB,EAAKiD,MAAM1B,GAAOA,EAAK,IACnE,GAAC,CAAAhF,IAAA,qBAAAa,MAED,SAA6BgV,EAAsBrD,IAC3CqD,GAAerD,IAAkB3S,KAAKmO,QACtCnO,KAAKqH,YAAYI,KAAK,SAAU,CAAEC,SAAUzE,MAAMqB,KAAKtE,KAAKkF,OAAOJ,MAAMgD,SAEjF,GAEA,CAAA3H,IAAA,wBAAAa,MAGA,SAA8B8D,EAAgBR,GAC1C,IAAM2R,EAAgBjW,KAAK2F,MAE3B,GAAsB,OAAlBsQ,GAA0BnR,EAAM/B,QAAUkT,EAC1C,OAAOnR,EAGX,IAAMoR,EAAeC,KAAKC,MAAMH,EAAgBjW,KAAKyN,cAAcoG,aAEnE,MAAa,SAATvP,EACOQ,EAAMuR,OAAOH,GAGX,SAAT5R,EACOQ,EAAMuR,MAAM,EAAGH,GAGnBpR,CACX,KAlFmB,IAAA0Q,EA7BGL,EAxCIL,EAtBAR,EAJzBL,CAiLA,CAlQ4C,CAGvC/L,I,gxDC9BV,IAAA5B,EAAAuD,EAAAC,EAAA,mBAAAhJ,OAAAA,OAAA,GAAAoF,EAAA4D,EAAAC,UAAA,aAAA3J,EAAA0J,EAAA/I,aAAA,yBAAAiJ,EAAAF,EAAA5D,EAAA9F,EAAA4J,GAAA,IAAAC,EAAA/D,GAAAA,EAAAvF,qBAAAuJ,EAAAhE,EAAAgE,EAAAC,EAAA9J,OAAA+J,OAAAH,EAAAtJ,WAAA,OAAA0J,GAAAF,EAAA,mBAAAL,EAAA5D,EAAA9F,GAAA,IAAA4J,EAAAC,EAAAE,EAAA5D,EAAA,EAAA+D,EAAAlK,GAAA,GAAAmK,GAAA,EAAAC,EAAA,CAAAF,EAAA,EAAApE,EAAA,EAAAuE,EAAAnE,EAAAoE,EAAAC,EAAApE,EAAAoE,EAAAC,KAAAtE,EAAA,GAAAqE,EAAA,SAAAd,EAAAC,GAAA,OAAAE,EAAAH,EAAAI,EAAA,EAAAE,EAAA7D,EAAAkE,EAAAtE,EAAA4D,EAAAY,CAAA,YAAAC,EAAAb,EAAA5D,GAAA,IAAA+D,EAAAH,EAAAK,EAAAjE,EAAA2D,EAAA,GAAAU,GAAAhE,IAAAnG,GAAAyJ,EAAAS,EAAAvH,OAAA8G,IAAA,KAAAzJ,EAAA4J,EAAAM,EAAAT,GAAAc,EAAAH,EAAAF,EAAAO,EAAAb,EAAA,GAAAF,EAAA,GAAA1J,EAAAyK,IAAA3E,KAAAiE,EAAAH,GAAAC,EAAAD,EAAA,OAAAC,EAAA,MAAAD,EAAA,GAAAA,EAAA,GAAA1D,GAAA0D,EAAA,IAAAW,KAAAvK,EAAA0J,EAAA,GAAAa,EAAAX,EAAA,KAAAC,EAAA,EAAAO,EAAAC,EAAAvE,EAAAsE,EAAAtE,EAAA8D,EAAA,IAAAW,EAAAE,IAAAzK,EAAA0J,EAAA,GAAAE,EAAA,GAAA9D,GAAAA,EAAA2E,KAAAb,EAAA,GAAAF,EAAAE,EAAA,GAAA9D,EAAAsE,EAAAtE,EAAA2E,EAAAZ,EAAA,OAAA7J,GAAA0J,EAAA,SAAAY,EAAA,MAAAH,GAAA,EAAArE,CAAA,iBAAA9F,EAAAkK,EAAAO,GAAA,GAAAtE,EAAA,QAAAuE,UAAA,oCAAAP,GAAA,IAAAD,GAAAK,EAAAL,EAAAO,GAAAZ,EAAAK,EAAAH,EAAAU,GAAAhB,EAAAI,EAAA,EAAA3D,EAAA6D,KAAAI,GAAA,CAAAP,IAAAC,EAAAA,EAAA,GAAAA,EAAA,IAAAO,EAAAtE,GAAA,GAAAyE,EAAAV,EAAAE,IAAAK,EAAAtE,EAAAiE,EAAAK,EAAAC,EAAAN,GAAA,OAAA5D,EAAA,EAAAyD,EAAA,IAAAC,IAAA7J,EAAA,QAAAyJ,EAAAG,EAAA5J,GAAA,MAAAyJ,EAAAA,EAAAhJ,KAAAmJ,EAAAG,IAAA,MAAAW,UAAA,wCAAAjB,EAAA1D,KAAA,OAAA0D,EAAAM,EAAAN,EAAA7I,MAAAiJ,EAAA,IAAAA,EAAA,YAAAA,IAAAJ,EAAAG,EAAA,SAAAH,EAAAhJ,KAAAmJ,GAAAC,EAAA,IAAAE,EAAAW,UAAA,oCAAA1K,EAAA,YAAA6J,EAAA,GAAAD,EAAA1D,CAAA,UAAAuD,GAAAU,EAAAC,EAAAtE,EAAA,GAAAiE,EAAAL,EAAAjJ,KAAAqF,EAAAsE,MAAAE,EAAA,YAAAb,GAAAG,EAAA1D,EAAA2D,EAAA,EAAAE,EAAAN,CAAA,SAAAtD,EAAA,UAAAvF,MAAA6I,EAAA1D,KAAAoE,EAAA,GAAAT,EAAA1J,EAAA4J,IAAA,GAAAG,CAAA,KAAAO,EAAA,YAAAR,IAAA,UAAAa,IAAA,UAAAC,IAAA,CAAAnB,EAAAxJ,OAAA4K,eAAA,IAAAhB,EAAA,GAAA/D,GAAA2D,EAAAA,EAAA,GAAA3D,QAAAmE,GAAAR,EAAA,GAAA3D,EAAA,yBAAA2D,GAAAM,EAAAa,EAAArK,UAAAuJ,EAAAvJ,UAAAN,OAAA+J,OAAAH,GAAA,SAAA1D,EAAAD,GAAA,OAAAjG,OAAA6K,eAAA7K,OAAA6K,eAAA5E,EAAA0E,IAAA1E,EAAA6E,UAAAH,EAAAX,GAAA/D,EAAAlG,EAAA,sBAAAkG,EAAA3F,UAAAN,OAAA+J,OAAAD,GAAA7D,CAAA,QAAAyE,EAAApK,UAAAqK,EAAAX,GAAAF,EAAA,cAAAa,GAAAX,GAAAW,EAAA,cAAAD,GAAAA,EAAAK,YAAA,oBAAAf,GAAAW,EAAA5K,EAAA,qBAAAiK,GAAAF,GAAAE,GAAAF,EAAA/J,EAAA,aAAAiK,GAAAF,EAAAjE,EAAA,yBAAAmE,GAAAF,EAAA,oDAAAkB,GAAA,kBAAAC,EAAAtB,EAAAuB,EAAAhF,EAAA,cAAA8D,GAAA/D,EAAAwD,EAAA5D,EAAA2D,GAAA,IAAAG,EAAA3J,OAAAC,eAAA,IAAA0J,EAAA,gBAAA1D,GAAA0D,EAAA,EAAAK,GAAA,SAAA/D,EAAAwD,EAAA5D,EAAA2D,GAAA,SAAAzJ,EAAA0J,EAAA5D,GAAAmE,GAAA/D,EAAAwD,EAAA,SAAAxD,GAAA,YAAAkF,QAAA1B,EAAA5D,EAAAI,EAAA,GAAAwD,EAAAE,EAAAA,EAAA1D,EAAAwD,EAAA,CAAA9I,MAAAkF,EAAA3F,YAAAsJ,EAAA4B,cAAA5B,EAAA6B,UAAA7B,IAAAvD,EAAAwD,GAAA5D,GAAA9F,EAAA,UAAAA,EAAA,WAAAA,EAAA,cAAAiK,GAAA/D,EAAAwD,EAAA5D,EAAA2D,EAAA,UAAA8B,GAAAzF,EAAA2D,EAAAvD,EAAAwD,EAAA1J,EAAAsK,EAAAT,GAAA,QAAAD,EAAA9D,EAAAwE,GAAAT,GAAAE,EAAAH,EAAAhJ,KAAA,OAAAkF,GAAA,YAAAI,EAAAJ,EAAA,CAAA8D,EAAA7D,KAAA0D,EAAAM,GAAAtG,QAAA0F,QAAAY,GAAAyB,KAAA9B,EAAA1J,EAAA,UAAAyL,GAAA3F,GAAA,sBAAA2D,EAAA,KAAAvD,EAAAxD,UAAA,WAAAe,QAAA,SAAAiG,EAAA1J,GAAA,IAAAsK,EAAAxE,EAAAnB,MAAA8E,EAAAvD,GAAA,SAAAwF,EAAA5F,GAAAyF,GAAAjB,EAAAZ,EAAA1J,EAAA0L,EAAAC,EAAA,OAAA7F,EAAA,UAAA6F,EAAA7F,GAAAyF,GAAAjB,EAAAZ,EAAA1J,EAAA0L,EAAAC,EAAA,QAAA7F,EAAA,CAAA4F,OAAA,eAAAE,GAAA1F,EAAAwD,GAAA,QAAAD,EAAA,EAAAA,EAAAC,EAAA/G,OAAA8G,IAAA,KAAAzJ,EAAA0J,EAAAD,GAAAzJ,EAAAG,WAAAH,EAAAG,aAAA,EAAAH,EAAAqL,cAAA,YAAArL,IAAAA,EAAAsL,UAAA,GAAArL,OAAAC,eAAAgG,EAAA2F,GAAA7L,EAAAD,KAAAC,EAAA,WAAAe,GAAAmF,EAAAwD,EAAAD,GAAA,OAAAC,EAAAmC,GAAAnC,MAAAxD,EAAAjG,OAAAC,eAAAgG,EAAAwD,EAAA,CAAA9I,MAAA6I,EAAAtJ,YAAA,EAAAkL,cAAA,EAAAC,UAAA,IAAApF,EAAAwD,GAAAD,EAAAvD,CAAA,UAAA2F,GAAApC,GAAA,IAAAG,EAAA,SAAAH,EAAAC,GAAA,aAAAqC,GAAAtC,KAAAA,EAAA,OAAAA,EAAA,IAAAvD,EAAAuD,EAAA/I,OAAAgM,aAAA,YAAAxG,EAAA,KAAA0D,EAAA1D,EAAAzF,KAAAgJ,EAAAC,GAAA,wBAAAqC,GAAAnC,GAAA,OAAAA,EAAA,UAAAc,UAAA,kEAAAhB,EAAAiD,OAAAC,QAAAnD,EAAA,CAAAoD,CAAApD,EAAA,0BAAAsC,GAAAnC,GAAAA,EAAAA,EAAA,GAIO,IAAMsM,GAAmB,WAmB5B,OAvBJhQ,EAQI,SAAAgQ,EACYC,EACAhJ,GACV,IAAA3K,EAAA,MAXN,SAAA8H,EAAAxE,GAAA,KAAAwE,aAAAxE,GAAA,UAAA4E,UAAA,qCAWM5J,CAAA,KAAAoV,GAAAnV,GAAA,sBANuB,IAAI0D,GAA+C1D,GAAA,qBAC5C,GAAK,KAGzBoV,KAAAA,EAAU,KACVhJ,QAAAA,EAERvN,KAAKuN,QAAQI,OAAO5F,GAAG,cAAe,SAAA6F,GAAE,OAAIhL,EAAK4T,kBAAkB5I,EAAG,GACtE5N,KAAKuN,QAAQI,OAAO5F,GAAG,WAAY,SAAA6F,GAAE,OAAIhL,EAAK6T,eAAe7I,EAAG,GAChE5N,KAAKuN,QAAQI,OAAO5F,GAAG,eAAgB,SAAA6F,GAAE,OAAIhL,EAAK8T,mBAAmB9I,EAAG,GAExE5N,KAAK2W,mBAAmB3W,KAAKuW,MAEzBvW,KAAKuW,KAAKK,cACV5W,KAAK6W,4BAA4B7W,KAAKuW,KAAKK,aAEnD,EArBJ9M,EAuBI,EAAA3J,IAAA,oBAAAa,OAAA8V,EAAAjL,GAAAR,KAAAE,EAKA,SAAA2I,EAA+B5G,GAAe,IAAAyJ,EAAAC,EAAA7C,EAAArR,UAAA,OAAAuI,KAAAC,EAAA,SAAA8I,GAAA,cAAAA,EAAAlO,GAAA,OAAuB,GAArB6Q,EAAa5C,EAAApR,OAAA,QAAAjB,IAAAqS,EAAA,IAAAA,EAAA,GACpDnU,KAAKiX,eAAehT,IAAIqJ,IAAayJ,EAAI,CAAA3C,EAAAlO,EAAA,eAAAkO,EAAAlO,EAAA,EACrBlG,KAAKuN,QAAQiE,MAAMC,UAAUzR,KAAKuW,KAAKnR,GAAI,CAACkI,IAAS,QAApE0J,EAAK5C,EAAA3J,EAAiEjK,IAAI8M,KAG5EtN,KAAK6W,4BAA4BG,GACpC,cAAA5C,EAAA1J,EAAA,EAGE1K,KAAKiX,eAAezW,IAAI8M,IAAQ,EAAA4G,EAAA,SAC1C,SAV6BqB,GAAA,OAAAuB,EAAA/R,MAAC,KAADjC,UAAA,IAY9B,CAAA3C,IAAA,SAAAa,OAAAkW,EAAArL,GAAAR,KAAAE,EAWA,SAAAgJ,EAAoBgC,GAAU,IAAA9R,EAAA0S,EAAAC,EAAAC,EAAA,OAAAhM,KAAAC,EAAA,SAAAmJ,GAAA,cAAAA,EAAAnK,EAAAmK,EAAAvO,GAAA,OAC1BlG,KAAKuW,KAAOA,EACZvW,KAAK2W,mBAAmBJ,GAEpBvW,KAAKuW,KAAKK,cACV5W,KAAK6W,4BAA4B7W,KAAKuW,KAAKK,cAC9CnS,EAAA,EAAA0S,EAEwBlU,MAAMqB,KAAKtE,KAAKiX,eAAenS,OAAM,YAAAL,EAAA0S,EAAApU,QAAA,CAAA0R,EAAAvO,EAAA,QAA1C,OAA0CkR,EAAAxS,GAAAuS,EAAA1S,GAAA,GAAhD4S,EAAMD,EAAA,GAAA3C,EAAAnK,EAAA,EAAAmK,EAAAvO,EAAA,EAENmR,EAAOC,gBAAgBtX,KAAK0N,cAAa,WAI3C1N,KAAK0N,aAAc,CAAF+G,EAAAvO,EAAA,eAAAuO,EAAA/J,EAAA,eAIjB2M,EAAOlJ,QAAUjB,GAAYmB,OAAM,CAAAoG,EAAAvO,EAAA,eAAAuO,EAAAvO,EAAA,EAC7BmR,EAAO9D,eAAc,GAAK,OAAAkB,EAAAvO,EAAA,eAAAuO,EAAAnK,EAAA,EAAAmK,EAAAhK,EAAA,OAAAhG,IAAAgQ,EAAAvO,EAAA,sBAAAuO,EAAA/J,EAAA,KAAA6J,EAAA,iBAQ/C,SA3BkBjG,GAAA,OAAA4I,EAAAnS,MAAC,KAADjC,UAAA,KAAA3C,IAAA,oBAAAa,OAAAuW,EAAA1L,GAAAR,KAAAE,EA6BnB,SAAAwJ,EAAgCnH,GAAe,IAAAtI,EAAAkS,EAAAC,EAAAJ,EAAA,OAAAhM,KAAAC,EAAA,SAAA0J,GAAA,cAAAA,EAAA9O,GAAA,UACvClG,KAAKuW,KAAKnR,KAAOwI,EAAG2I,KAAKnR,GAAE,CAAA4P,EAAA9O,EAAA,QAC3BlG,KAAKuW,KAAO3I,EAAG2I,KAEfvW,KAAK2W,mBAAmB/I,EAAG2I,MAEvB3I,EAAG2I,KAAKK,cACR5W,KAAK6W,4BAA4BjJ,EAAG2I,KAAKK,cAC5CtR,EAAA,EAAAkS,EAEwBvU,MAAMqB,KAAKtE,KAAKiX,eAAenS,OAAM,YAAAQ,EAAAkS,EAAAzU,QAAA,CAAAiS,EAAA9O,EAAA,QAA1C,OAA0CuR,EAAA7S,GAAA4S,EAAAlS,GAAA,GAAhD+R,EAAMI,EAAA,GAAAzC,EAAA9O,EAAA,EACVmR,EAAOC,gBAAgBtX,KAAK0N,cAAa,OAAApI,IAAA0P,EAAA9O,EAAA,sBAAA8O,EAAAtK,EAAA,KAAAqK,EAAA,SAG1D,SAd8B1F,GAAA,OAAAkI,EAAAxS,MAAC,KAADjC,UAAA,KAAA3C,IAAA,iBAAAa,MAgB/B,SAAuB4M,GACf5N,KAAKuW,KAAKnR,KAAOwI,EAAGP,QACpBrN,KAAK6W,4BAA4BjJ,EAAGoJ,MAE5C,GAAC,CAAA7W,IAAA,qBAAAa,MAED,SAA2B4M,GACnB5N,KAAKuW,KAAKnR,KAAOwI,EAAGqC,SAAS5C,QAC7BrN,KAAKiX,eAAc,OAAQrJ,EAAGqC,SAAS3C,QAE/C,GAAC,CAAAnN,IAAA,8BAAAa,MAED,SAAoCgW,GAAoB,IAAApT,EAAA,KACpD,IAAI5D,KAAKiX,eAAehT,IAAI+S,EAAM5R,IAAlC,CAIA,IAAMsS,EAAgB,IAAIvK,GAAmBnN,KAAKuW,KAAKnR,GAAI4R,EAAM5R,GAAIpF,KAAKuN,SAgB1E,GAdKmK,EAAcJ,gBAAgBtX,KAAK0N,cAExC1N,KAAKiX,eAAe3U,IAAI,CAAC0U,EAAM5R,GAAIsS,IAInCA,EAAc3P,GAAG,mBAAoB,SAAC4P,GAA8B,IAAAC,EAC3BlS,EAD2BI,E,ioBAAAC,CAC1C4R,GAAe,IAArC,IAAA7R,EAAAG,MAAAP,EAAAI,EAAAI,KAAAC,MAAuC,KAA5BmH,EAAO5H,EAAA1E,MACd4C,EAAKqT,eAAc,OAAQ3J,EAC/B,CAAC,OAAAjH,GAAAP,EAAAQ,EAAAD,EAAA,SAAAP,EAAAS,GAAA,EACDqR,EAAAhU,EAAK2J,QAAQiE,OAAMqG,sBAAqB9S,MAAA6S,EAAA,CAAChU,EAAK2S,KAAKnR,IAAEhC,OAAA4B,GAAK2S,IAC9D,GAGIX,EAAMzH,WAAY,CAClB,IAAMuI,EAAmB9X,KAAKiX,eAAezW,IAAIwW,EAAMzH,WAAWU,SAAS3C,SAC3EwK,SAAAA,EAAkBC,wBAAwBf,EAC9C,CArBA,CAsBJ,GAAC,CAAA7W,IAAA,qBAAAa,MAED,SAA2BuV,GACvBvW,KAAK0N,aAAqC,cAAtB6I,EAAKyB,QAAQC,IACrC,IAzIJnO,GAAAkC,GAAA1F,EAAA3F,UAAAmJ,GAAAD,GAAAmC,GAAA1F,EAAAuD,GAAAxJ,OAAAC,eAAAgG,EAAA,aAAAoF,UAAA,IAAApF,EAAA,IAAAA,EAAAwD,EAAAD,EAmDuB0N,EAXnBL,EAjBAJ,CAkHC,CArI2B,G,k5CCJhC,IAAAxQ,EAAAuD,EAAAC,EAAA,mBAAAhJ,OAAAA,OAAA,GAAAoF,EAAA4D,EAAAC,UAAA,aAAA3J,EAAA0J,EAAA/I,aAAA,yBAAAiJ,EAAAF,EAAA5D,EAAA9F,EAAA4J,GAAA,IAAAC,EAAA/D,GAAAA,EAAAvF,qBAAAuJ,EAAAhE,EAAAgE,EAAAC,EAAA9J,OAAA+J,OAAAH,EAAAtJ,WAAA,OAAA0J,GAAAF,EAAA,mBAAAL,EAAA5D,EAAA9F,GAAA,IAAA4J,EAAAC,EAAAE,EAAA5D,EAAA,EAAA+D,EAAAlK,GAAA,GAAAmK,GAAA,EAAAC,EAAA,CAAAF,EAAA,EAAApE,EAAA,EAAAuE,EAAAnE,EAAAoE,EAAAC,EAAApE,EAAAoE,EAAAC,KAAAtE,EAAA,GAAAqE,EAAA,SAAAd,EAAAC,GAAA,OAAAE,EAAAH,EAAAI,EAAA,EAAAE,EAAA7D,EAAAkE,EAAAtE,EAAA4D,EAAAY,CAAA,YAAAC,EAAAb,EAAA5D,GAAA,IAAA+D,EAAAH,EAAAK,EAAAjE,EAAA2D,EAAA,GAAAU,GAAAhE,IAAAnG,GAAAyJ,EAAAS,EAAAvH,OAAA8G,IAAA,KAAAzJ,EAAA4J,EAAAM,EAAAT,GAAAc,EAAAH,EAAAF,EAAAO,EAAAb,EAAA,GAAAF,EAAA,GAAA1J,EAAAyK,IAAA3E,KAAAiE,EAAAH,GAAAC,EAAAD,EAAA,OAAAC,EAAA,MAAAD,EAAA,GAAAA,EAAA,GAAA1D,GAAA0D,EAAA,IAAAW,KAAAvK,EAAA0J,EAAA,GAAAa,EAAAX,EAAA,KAAAC,EAAA,EAAAO,EAAAC,EAAAvE,EAAAsE,EAAAtE,EAAA8D,EAAA,IAAAW,EAAAE,IAAAzK,EAAA0J,EAAA,GAAAE,EAAA,GAAA9D,GAAAA,EAAA2E,KAAAb,EAAA,GAAAF,EAAAE,EAAA,GAAA9D,EAAAsE,EAAAtE,EAAA2E,EAAAZ,EAAA,OAAA7J,GAAA0J,EAAA,SAAAY,EAAA,MAAAH,GAAA,EAAArE,CAAA,iBAAA9F,EAAAkK,EAAAO,GAAA,GAAAtE,EAAA,QAAAuE,UAAA,oCAAAP,GAAA,IAAAD,GAAAK,EAAAL,EAAAO,GAAAZ,EAAAK,EAAAH,EAAAU,GAAAhB,EAAAI,EAAA,EAAA3D,EAAA6D,KAAAI,GAAA,CAAAP,IAAAC,EAAAA,EAAA,GAAAA,EAAA,IAAAO,EAAAtE,GAAA,GAAAyE,EAAAV,EAAAE,IAAAK,EAAAtE,EAAAiE,EAAAK,EAAAC,EAAAN,GAAA,OAAA5D,EAAA,EAAAyD,EAAA,IAAAC,IAAA7J,EAAA,QAAAyJ,EAAAG,EAAA5J,GAAA,MAAAyJ,EAAAA,EAAAhJ,KAAAmJ,EAAAG,IAAA,MAAAW,UAAA,wCAAAjB,EAAA1D,KAAA,OAAA0D,EAAAM,EAAAN,EAAA7I,MAAAiJ,EAAA,IAAAA,EAAA,YAAAA,IAAAJ,EAAAG,EAAA,SAAAH,EAAAhJ,KAAAmJ,GAAAC,EAAA,IAAAE,EAAAW,UAAA,oCAAA1K,EAAA,YAAA6J,EAAA,GAAAD,EAAA1D,CAAA,UAAAuD,GAAAU,EAAAC,EAAAtE,EAAA,GAAAiE,EAAAL,EAAAjJ,KAAAqF,EAAAsE,MAAAE,EAAA,YAAAb,GAAAG,EAAA1D,EAAA2D,EAAA,EAAAE,EAAAN,CAAA,SAAAtD,EAAA,UAAAvF,MAAA6I,EAAA1D,KAAAoE,EAAA,GAAAT,EAAA1J,EAAA4J,IAAA,GAAAG,CAAA,KAAAO,EAAA,YAAAR,IAAA,UAAAa,IAAA,UAAAC,IAAA,CAAAnB,EAAAxJ,OAAA4K,eAAA,IAAAhB,EAAA,GAAA/D,GAAA2D,EAAAA,EAAA,GAAA3D,QAAAmE,GAAAR,EAAA,GAAA3D,EAAA,yBAAA2D,GAAAM,EAAAa,EAAArK,UAAAuJ,EAAAvJ,UAAAN,OAAA+J,OAAAH,GAAA,SAAA1D,EAAAD,GAAA,OAAAjG,OAAA6K,eAAA7K,OAAA6K,eAAA5E,EAAA0E,IAAA1E,EAAA6E,UAAAH,EAAAX,GAAA/D,EAAAlG,EAAA,sBAAAkG,EAAA3F,UAAAN,OAAA+J,OAAAD,GAAA7D,CAAA,QAAAyE,EAAApK,UAAAqK,EAAAX,GAAAF,EAAA,cAAAa,GAAAX,GAAAW,EAAA,cAAAD,GAAAA,EAAAK,YAAA,oBAAAf,GAAAW,EAAA5K,EAAA,qBAAAiK,GAAAF,GAAAE,GAAAF,EAAA/J,EAAA,aAAAiK,GAAAF,EAAAjE,EAAA,yBAAAmE,GAAAF,EAAA,oDAAAkB,GAAA,kBAAAC,EAAAtB,EAAAuB,EAAAhF,EAAA,cAAA8D,GAAA/D,EAAAwD,EAAA5D,EAAA2D,GAAA,IAAAG,EAAA3J,OAAAC,eAAA,IAAA0J,EAAA,gBAAA1D,GAAA0D,EAAA,EAAAK,GAAA,SAAA/D,EAAAwD,EAAA5D,EAAA2D,GAAA,SAAAzJ,EAAA0J,EAAA5D,GAAAmE,GAAA/D,EAAAwD,EAAA,SAAAxD,GAAA,YAAAkF,QAAA1B,EAAA5D,EAAAI,EAAA,GAAAwD,EAAAE,EAAAA,EAAA1D,EAAAwD,EAAA,CAAA9I,MAAAkF,EAAA3F,YAAAsJ,EAAA4B,cAAA5B,EAAA6B,UAAA7B,IAAAvD,EAAAwD,GAAA5D,GAAA9F,EAAA,UAAAA,EAAA,WAAAA,EAAA,cAAAiK,GAAA/D,EAAAwD,EAAA5D,EAAA2D,EAAA,UAAA8B,GAAAzF,EAAA2D,EAAAvD,EAAAwD,EAAA1J,EAAAsK,EAAAT,GAAA,QAAAD,EAAA9D,EAAAwE,GAAAT,GAAAE,EAAAH,EAAAhJ,KAAA,OAAAkF,GAAA,YAAAI,EAAAJ,EAAA,CAAA8D,EAAA7D,KAAA0D,EAAAM,GAAAtG,QAAA0F,QAAAY,GAAAyB,KAAA9B,EAAA1J,EAAA,UAAAyL,GAAA3F,GAAA,sBAAA2D,EAAA,KAAAvD,EAAAxD,UAAA,WAAAe,QAAA,SAAAiG,EAAA1J,GAAA,IAAAsK,EAAAxE,EAAAnB,MAAA8E,EAAAvD,GAAA,SAAAwF,EAAA5F,GAAAyF,GAAAjB,EAAAZ,EAAA1J,EAAA0L,EAAAC,EAAA,OAAA7F,EAAA,UAAA6F,EAAA7F,GAAAyF,GAAAjB,EAAAZ,EAAA1J,EAAA0L,EAAAC,EAAA,QAAA7F,EAAA,CAAA4F,OAAA,eAAAE,GAAA1F,EAAAwD,GAAA,QAAAD,EAAA,EAAAA,EAAAC,EAAA/G,OAAA8G,IAAA,KAAAzJ,EAAA0J,EAAAD,GAAAzJ,EAAAG,WAAAH,EAAAG,aAAA,EAAAH,EAAAqL,cAAA,YAAArL,IAAAA,EAAAsL,UAAA,GAAArL,OAAAC,eAAAgG,EAAA2F,GAAA7L,EAAAD,KAAAC,EAAA,WAAAe,GAAAmF,EAAAwD,EAAAD,GAAA,OAAAC,EAAAmC,GAAAnC,MAAAxD,EAAAjG,OAAAC,eAAAgG,EAAAwD,EAAA,CAAA9I,MAAA6I,EAAAtJ,YAAA,EAAAkL,cAAA,EAAAC,UAAA,IAAApF,EAAAwD,GAAAD,EAAAvD,CAAA,UAAA2F,GAAApC,GAAA,IAAAG,EAAA,SAAAH,EAAAC,GAAA,aAAAqC,GAAAtC,KAAAA,EAAA,OAAAA,EAAA,IAAAvD,EAAAuD,EAAA/I,OAAAgM,aAAA,YAAAxG,EAAA,KAAA0D,EAAA1D,EAAAzF,KAAAgJ,EAAAC,GAAA,wBAAAqC,GAAAnC,GAAA,OAAAA,EAAA,UAAAc,UAAA,kEAAAhB,EAAAiD,OAAAC,QAAAnD,EAAA,CAAAoD,CAAApD,EAAA,0BAAAsC,GAAAnC,GAAAA,EAAAA,EAAA,GAYO,IAAMkO,GAAe,WAWxB,OAvBJ5R,EAgBI,SAAA4R,EAA2B3K,GAA2B,IAAA3K,EAAA,MAhB1D,SAAA8H,EAAAxE,GAAA,KAAAwE,aAAAxE,GAAA,UAAA4E,UAAA,qCAgB0D5J,CAAA,KAAAgX,GAAA/W,GAAA,qBAHrB,IAAI0D,GAAgD1D,GAAA,uBAClD,IAAIkI,GAAc,KAE1BkE,QAAAA,EACvBvN,KAAKuN,QAAQI,OAAO5F,GAAG,UAAW,SAAA6F,GAAE,OAAIhL,EAAKuV,cAAcvK,EAAG,GAC9D5N,KAAKuN,QAAQI,OAAO5F,GAAG,aAAc,SAAA6F,GAAE,OAAIhL,EAAKwV,eAAexK,EAAG,GAClE5N,KAAKuN,QAAQI,OAAO5F,GAAG,cAAe,SAAA6F,GAAE,OAAIhL,EAAKyV,kBAAkBzK,EAAG,GACtE5N,KAAKuN,QAAQI,OAAO5F,GAAG,WAAY,SAAA6F,GAAE,OAAIhL,EAAK0V,eAAe1K,EAAG,EACpE,EArBJ9D,EAuBI,EAAA3J,IAAA,iBAAAa,OAAAuX,EAAA1M,GAAAR,KAAAE,EAGA,SAAA2I,EAA4B7G,GAAc,OAAAhC,KAAAC,EAAA,SAAA8I,GAAA,cAAAA,EAAAlO,GAAA,cAAAkO,EAAAlO,EAAA,EAChClG,KAAKwY,gBAAgBlP,QAAO,cAAA8K,EAAA1J,EAAA,EAC3B1K,KAAKyY,cAAcjY,IAAI6M,IAAO,EAAA6G,EAAA,SACxC,SAH0BqB,GAAA,OAAAgD,EAAAxT,MAAC,KAADjC,UAAA,IAK3B,CAAA3C,IAAA,sBAAAa,OAAA0X,EAAA7M,GAAAR,KAAAE,EAIA,SAAAgJ,EAAiCtE,GAAsB,IAAAI,EAAAsI,EAAA9S,EAAA,OAAAwF,KAAAC,EAAA,SAAAmJ,GAAA,cAAAA,EAAAvO,GAAA,cAAAuO,EAAAvO,EAAA,EAEtBlG,KAAK4Y,eAAe3I,EAAS5C,QACrDzB,KAAK,SAAAiN,GAAW,OAAIA,aAAW,EAAXA,EAAaC,kBAAkB7I,EAAS3C,SAAS,EAAK,GAC1E1B,KACG,SAAA8L,GAAa,OACTA,aAAa,EAAbA,EAAezC,YAAayC,EAAc3H,MAAM2H,EAAc3U,OAAS,EAAE,GAChF,OALe,GAAhBsN,EAAgBoE,EAAAhK,EAON,CAAFgK,EAAAvO,EAAA,eAAAuO,EAAAvO,EAAA,EACalG,KAAKuN,QAAQI,OAAOqC,KAAK,cAAe,CACzDC,SAAAA,EACAtK,MAAO,IACT,OAHIE,EAAM4O,EAAAhK,EAIZ4F,EAAqB,QAAdsI,EAAG9S,EAAOtC,YAAI,IAAAoV,OAAA,EAAXA,EAAarI,SAAS,GAAG,cAAAmE,EAAA/J,EAAA,EAGhC2F,GAAW,MAAI,EAAAkE,EAAA,SACzB,SAlB+BjG,GAAA,OAAAoK,EAAA3T,MAAC,KAADjC,UAAA,KAAA3C,IAAA,0BAAAa,MAoBhC,SAAgCuV,GAC5BvW,KAAKyY,cAAcnW,IAAI,CAACiU,EAAKnR,GAAI,IAAIkR,GAAoBC,EAAMvW,KAAKuN,UACxE,GAAC,CAAApN,IAAA,oBAAAa,MAED,SAA0B4M,GACtB5N,KAAKyY,cAAa,OAAQ7K,EAAGxI,GACjC,GAAC,CAAAjF,IAAA,iBAAAa,MAED,SAAuB4M,GACnB5N,KAAK+Y,wBAAwBnL,EAAG2I,KACpC,GAAC,CAAApW,IAAA,iBAAAa,MAED,SAAuB4M,GACnB5N,KAAKyY,cAAa,OAAQ7K,EAAGxI,GACjC,GAAC,CAAAjF,IAAA,gBAAAa,MAED,SAAsB4M,GAIlB,IAHA,IAAMoL,EAAe,IAAI9P,IAAI0E,EAAGO,MAAMqD,MAAMtP,IAAI,SAAAqU,GAAI,OAAIA,EAAKnR,EAAE,IAG/DX,EAAA,EAAA0S,EAAqBlU,MAAMqB,KAAKtE,KAAKyY,cAAc3T,MAAMgD,QAAOrD,EAAA0S,EAAApU,OAAA0B,IAAE,CAA7D,IAAM4I,EAAM8J,EAAA1S,GACPuU,EAAa/U,IAAIoJ,IACnBrN,KAAKyY,cAAa,OAAQpL,EAElC,CAIA,IACiC3H,EADjCI,EAAAC,GACmB6H,EAAGO,MAAMqD,OAAK,IAAjC,IAAA1L,EAAAG,MAAAP,EAAAI,EAAAI,KAAAC,MAAmC,KAAxBoQ,EAAI7Q,EAAA1E,MACLgX,EAAUhY,KAAKyY,cAAcjY,IAAI+V,EAAKnR,IACxC4S,EACKA,EAAQiB,OAAO1C,GAEpBvW,KAAK+Y,wBAAwBxC,EAErC,CAAC,OAAAlQ,GAAAP,EAAAQ,EAAAD,EAAA,SAAAP,EAAAS,GAAA,CAEDvG,KAAKwY,gBAAgBjP,SACzB,IA9FJO,GAAAkC,GAAA1F,EAAA3F,UAAAmJ,GAAAD,GAAAmC,GAAA1F,EAAAuD,GAAAxJ,OAAAC,eAAAgG,EAAA,aAAAoF,UAAA,IAAApF,EAAA,IAAAA,EAAAwD,EAAAD,EA+BI6O,EARAH,CAuEC,CAlFuB,G,m0ECZ5B,IAAAjS,EAAAuD,EAAAC,EAAA,mBAAAhJ,OAAAA,OAAA,GAAAoF,EAAA4D,EAAAC,UAAA,aAAA3J,EAAA0J,EAAA/I,aAAA,yBAAAiJ,EAAAF,EAAA5D,EAAA9F,EAAA4J,GAAA,IAAAC,EAAA/D,GAAAA,EAAAvF,qBAAAuJ,EAAAhE,EAAAgE,EAAAC,EAAA9J,OAAA+J,OAAAH,EAAAtJ,WAAA,OAAA0J,GAAAF,EAAA,mBAAAL,EAAA5D,EAAA9F,GAAA,IAAA4J,EAAAC,EAAAE,EAAA5D,EAAA,EAAA+D,EAAAlK,GAAA,GAAAmK,GAAA,EAAAC,EAAA,CAAAF,EAAA,EAAApE,EAAA,EAAAuE,EAAAnE,EAAAoE,EAAAC,EAAApE,EAAAoE,EAAAC,KAAAtE,EAAA,GAAAqE,EAAA,SAAAd,EAAAC,GAAA,OAAAE,EAAAH,EAAAI,EAAA,EAAAE,EAAA7D,EAAAkE,EAAAtE,EAAA4D,EAAAY,CAAA,YAAAC,EAAAb,EAAA5D,GAAA,IAAA+D,EAAAH,EAAAK,EAAAjE,EAAA2D,EAAA,GAAAU,GAAAhE,IAAAnG,GAAAyJ,EAAAS,EAAAvH,OAAA8G,IAAA,KAAAzJ,EAAA4J,EAAAM,EAAAT,GAAAc,EAAAH,EAAAF,EAAAO,EAAAb,EAAA,GAAAF,EAAA,GAAA1J,EAAAyK,IAAA3E,KAAAiE,EAAAH,GAAAC,EAAAD,EAAA,OAAAC,EAAA,MAAAD,EAAA,GAAAA,EAAA,GAAA1D,GAAA0D,EAAA,IAAAW,KAAAvK,EAAA0J,EAAA,GAAAa,EAAAX,EAAA,KAAAC,EAAA,EAAAO,EAAAC,EAAAvE,EAAAsE,EAAAtE,EAAA8D,EAAA,IAAAW,EAAAE,IAAAzK,EAAA0J,EAAA,GAAAE,EAAA,GAAA9D,GAAAA,EAAA2E,KAAAb,EAAA,GAAAF,EAAAE,EAAA,GAAA9D,EAAAsE,EAAAtE,EAAA2E,EAAAZ,EAAA,OAAA7J,GAAA0J,EAAA,SAAAY,EAAA,MAAAH,GAAA,EAAArE,CAAA,iBAAA9F,EAAAkK,EAAAO,GAAA,GAAAtE,EAAA,QAAAuE,UAAA,oCAAAP,GAAA,IAAAD,GAAAK,EAAAL,EAAAO,GAAAZ,EAAAK,EAAAH,EAAAU,GAAAhB,EAAAI,EAAA,EAAA3D,EAAA6D,KAAAI,GAAA,CAAAP,IAAAC,EAAAA,EAAA,GAAAA,EAAA,IAAAO,EAAAtE,GAAA,GAAAyE,EAAAV,EAAAE,IAAAK,EAAAtE,EAAAiE,EAAAK,EAAAC,EAAAN,GAAA,OAAA5D,EAAA,EAAAyD,EAAA,IAAAC,IAAA7J,EAAA,QAAAyJ,EAAAG,EAAA5J,GAAA,MAAAyJ,EAAAA,EAAAhJ,KAAAmJ,EAAAG,IAAA,MAAAW,UAAA,wCAAAjB,EAAA1D,KAAA,OAAA0D,EAAAM,EAAAN,EAAA7I,MAAAiJ,EAAA,IAAAA,EAAA,YAAAA,IAAAJ,EAAAG,EAAA,SAAAH,EAAAhJ,KAAAmJ,GAAAC,EAAA,IAAAE,EAAAW,UAAA,oCAAA1K,EAAA,YAAA6J,EAAA,GAAAD,EAAA1D,CAAA,UAAAuD,GAAAU,EAAAC,EAAAtE,EAAA,GAAAiE,EAAAL,EAAAjJ,KAAAqF,EAAAsE,MAAAE,EAAA,YAAAb,GAAAG,EAAA1D,EAAA2D,EAAA,EAAAE,EAAAN,CAAA,SAAAtD,EAAA,UAAAvF,MAAA6I,EAAA1D,KAAAoE,EAAA,GAAAT,EAAA1J,EAAA4J,IAAA,GAAAG,CAAA,KAAAO,EAAA,YAAAR,IAAA,UAAAa,IAAA,UAAAC,IAAA,CAAAnB,EAAAxJ,OAAA4K,eAAA,IAAAhB,EAAA,GAAA/D,GAAA2D,EAAAA,EAAA,GAAA3D,QAAAmE,GAAAR,EAAA,GAAA3D,EAAA,yBAAA2D,GAAAM,EAAAa,EAAArK,UAAAuJ,EAAAvJ,UAAAN,OAAA+J,OAAAH,GAAA,SAAA1D,EAAAD,GAAA,OAAAjG,OAAA6K,eAAA7K,OAAA6K,eAAA5E,EAAA0E,IAAA1E,EAAA6E,UAAAH,EAAAX,GAAA/D,EAAAlG,EAAA,sBAAAkG,EAAA3F,UAAAN,OAAA+J,OAAAD,GAAA7D,CAAA,QAAAyE,EAAApK,UAAAqK,EAAAX,GAAAF,EAAA,cAAAa,GAAAX,GAAAW,EAAA,cAAAD,GAAAA,EAAAK,YAAA,oBAAAf,GAAAW,EAAA5K,EAAA,qBAAAiK,GAAAF,GAAAE,GAAAF,EAAA/J,EAAA,aAAAiK,GAAAF,EAAAjE,EAAA,yBAAAmE,GAAAF,EAAA,oDAAAkB,GAAA,kBAAAC,EAAAtB,EAAAuB,EAAAhF,EAAA,cAAA8D,GAAA/D,EAAAwD,EAAA5D,EAAA2D,GAAA,IAAAG,EAAA3J,OAAAC,eAAA,IAAA0J,EAAA,gBAAA1D,GAAA0D,EAAA,EAAAK,GAAA,SAAA/D,EAAAwD,EAAA5D,EAAA2D,GAAA,SAAAzJ,EAAA0J,EAAA5D,GAAAmE,GAAA/D,EAAAwD,EAAA,SAAAxD,GAAA,YAAAkF,QAAA1B,EAAA5D,EAAAI,EAAA,GAAAwD,EAAAE,EAAAA,EAAA1D,EAAAwD,EAAA,CAAA9I,MAAAkF,EAAA3F,YAAAsJ,EAAA4B,cAAA5B,EAAA6B,UAAA7B,IAAAvD,EAAAwD,GAAA5D,GAAA9F,EAAA,UAAAA,EAAA,WAAAA,EAAA,cAAAiK,GAAA/D,EAAAwD,EAAA5D,EAAA2D,EAAA,UAAA8B,GAAAzF,EAAA2D,EAAAvD,EAAAwD,EAAA1J,EAAAsK,EAAAT,GAAA,QAAAD,EAAA9D,EAAAwE,GAAAT,GAAAE,EAAAH,EAAAhJ,KAAA,OAAAkF,GAAA,YAAAI,EAAAJ,EAAA,CAAA8D,EAAA7D,KAAA0D,EAAAM,GAAAtG,QAAA0F,QAAAY,GAAAyB,KAAA9B,EAAA1J,EAAA,UAAAyL,GAAA3F,GAAA,sBAAA2D,EAAA,KAAAvD,EAAAxD,UAAA,WAAAe,QAAA,SAAAiG,EAAA1J,GAAA,IAAAsK,EAAAxE,EAAAnB,MAAA8E,EAAAvD,GAAA,SAAAwF,EAAA5F,GAAAyF,GAAAjB,EAAAZ,EAAA1J,EAAA0L,EAAAC,EAAA,OAAA7F,EAAA,UAAA6F,EAAA7F,GAAAyF,GAAAjB,EAAAZ,EAAA1J,EAAA0L,EAAAC,EAAA,QAAA7F,EAAA,CAAA4F,OAAA,eAAAE,GAAA1F,EAAAwD,GAAA,QAAAD,EAAA,EAAAA,EAAAC,EAAA/G,OAAA8G,IAAA,KAAAzJ,EAAA0J,EAAAD,GAAAzJ,EAAAG,WAAAH,EAAAG,aAAA,EAAAH,EAAAqL,cAAA,YAAArL,IAAAA,EAAAsL,UAAA,GAAArL,OAAAC,eAAAgG,EAAA2F,GAAA7L,EAAAD,KAAAC,EAAA,WAAA+C,GAAA0G,EAAAzJ,EAAAkG,GAAA,OAAAlG,EAAA8L,GAAA9L,GAAA,SAAAyJ,EAAAvD,GAAA,GAAAA,IAAA,UAAA6F,GAAA7F,IAAA,mBAAAA,GAAA,OAAAA,EAAA,YAAAA,EAAA,UAAAwE,UAAA,4EAAAxE,GAAA,YAAAA,EAAA,UAAA8F,eAAA,oEAAA9F,CAAA,CAAA+F,CAAAxC,EAAA,CAAAyC,CAAAzC,EAAA0C,KAAAC,QAAAC,UAAArM,EAAAkG,GAAA,GAAA4F,GAAArC,GAAA6C,aAAAtM,EAAA2E,MAAA8E,EAAAvD,GAAA,UAAAiG,KAAA,QAAA1C,GAAA8C,QAAAhM,UAAAiM,QAAA/L,KAAA2L,QAAAC,UAAAE,QAAA,wBAAA9C,GAAA,QAAA0C,GAAA,mBAAA1C,CAAA,cAAAqC,GAAArC,GAAA,OAAAqC,GAAA7L,OAAA6K,eAAA7K,OAAA4K,eAAAL,OAAA,SAAAf,GAAA,OAAAA,EAAAsB,WAAA9K,OAAA4K,eAAApB,EAAA,EAAAqC,GAAArC,EAAA,UAAAgD,GAAAhD,EAAAvD,GAAA,OAAAuG,GAAAxM,OAAA6K,eAAA7K,OAAA6K,eAAAN,OAAA,SAAAf,EAAAvD,GAAA,OAAAuD,EAAAsB,UAAA7E,EAAAuD,CAAA,EAAAgD,GAAAhD,EAAAvD,EAAA,UAAAnF,GAAAmF,EAAAwD,EAAAD,GAAA,OAAAC,EAAAmC,GAAAnC,MAAAxD,EAAAjG,OAAAC,eAAAgG,EAAAwD,EAAA,CAAA9I,MAAA6I,EAAAtJ,YAAA,EAAAkL,cAAA,EAAAC,UAAA,IAAApF,EAAAwD,GAAAD,EAAAvD,CAAA,UAAA2F,GAAApC,GAAA,IAAAG,EAAA,SAAAH,EAAAC,GAAA,aAAAqC,GAAAtC,KAAAA,EAAA,OAAAA,EAAA,IAAAvD,EAAAuD,EAAA/I,OAAAgM,aAAA,YAAAxG,EAAA,KAAA0D,EAAA1D,EAAAzF,KAAAgJ,EAAAC,GAAA,wBAAAqC,GAAAnC,GAAA,OAAAA,EAAA,UAAAc,UAAA,kEAAAhB,EAAAiD,OAAAC,QAAAnD,EAAA,CAAAoD,CAAApD,EAAA,0BAAAsC,GAAAnC,GAAAA,EAAAA,EAAA,GAkBO,IAAMkP,GAAqB,SAAAvW,GAY9B,SAAAuW,EAA2B3L,GAA2B,IAAA3K,EAYwB,OA1ClF,SAAA8H,EAAAxE,GAAA,KAAAwE,aAAAxE,GAAA,UAAA4E,UAAA,qCA8B0D5J,CAAA,KAAAgY,GAC1C/X,GAARyB,EAAAO,GAAA,KAAA+V,GAAQ,iBAZsB,IAAIrU,GAA6E1D,GAAAyB,EAAA,yBACzE,IAAI4G,GAAiBrI,GAAAyB,EAAA,kBAC5B,IAAIyG,GAAclI,GAAAyB,EAAA,iBACnB,IAAIxB,KAEtCD,GAAAyB,EAAA,aAI8B,IAAIsG,KAAatG,EAEpB2K,QAAAA,EAGvB3K,EAAK2K,QAAQI,OAAO5F,GAAG,UAAW,SAAA6F,GAAE,OAAIhL,EAAKuV,cAAcvK,EAAG,GAC9DhL,EAAK2K,QAAQI,OAAO5F,GAAG,aAAc,SAAA6F,GAAE,OAAIhL,EAAKwV,eAAexK,EAAG,GAClEhL,EAAK2K,QAAQI,OAAO5F,GAAG,WAAY,SAAA6F,GAAE,OAAIhL,EAAK6T,eAAe7I,EAAG,GAChEhL,EAAK2K,QAAQI,OAAO5F,GAAG,uBAAwB,SAAA6F,GAAE,OAAIhL,EAAKuW,2BAA2BvL,EAAG,GACxFhL,EAAK2K,QAAQI,OAAO5F,GAAG,gBAAiB,SAAA6F,GAAE,OAAIhL,EAAKwW,oBAAoBxL,EAAG,GAC1EhL,EAAK2K,QAAQI,OAAO5F,GAAG,kBAAmB,SAAA6F,GAAE,OAAIhL,EAAKyW,sBAAsBzL,EAAG,GAC9EhL,EAAK2K,QAAQI,OAAO5F,GAAG,aAAc,SAAA6F,GAAE,OAAIhL,EAAKiL,iBAAiBD,EAAG,GACpEhL,EAAK2K,QAAQI,OAAO5F,GAAG,cAAe,SAAA6F,GAAE,OAAIhL,EAAKyV,kBAAkBzK,EAAG,GACtEhL,EAAK2K,QAAQI,OAAO5F,GAAG,WAAY,SAAA6F,GAAE,OAAIhL,EAAK0V,eAAe1K,EAAG,GAChEhL,EAAK2K,QAAQI,OAAO5F,GAAG,eAAgB,SAAA6F,GAAE,OAAIhL,EAAK8T,mBAAmB9I,EAAG,GAAEhL,CAC9E,CAEA,OA7CJ,SAAAiH,EAAAvD,GAAA,sBAAAA,GAAA,OAAAA,EAAA,UAAAwE,UAAA,sDAAAjB,EAAAlJ,UAAAN,OAAA+J,OAAA9D,GAAAA,EAAA3F,UAAA,CAAA+L,YAAA,CAAA1L,MAAA6I,EAAA6B,UAAA,EAAAD,cAAA,KAAApL,OAAAC,eAAAuJ,EAAA,aAAA6B,UAAA,IAAApF,GAAAuG,GAAAhD,EAAAvD,EAAA,CA6CIjD,CAAA6V,EAAAvW,GA7CJ2D,EA6CI4S,EA7CJpP,EA6CI,EAAA3J,IAAA,gBAAAa,OAAAsY,EAAAzN,GAAAR,KAAAE,EAKA,SAAAgJ,EAA2BgF,GAAsB,IAAA/H,EAAAgI,EAAAC,EAAA/D,EAAA9R,EAAA,YAAAyH,KAAAC,EAAA,SAAAmJ,GAAA,cAAAA,EAAAvO,GAAA,OAClC,KADkCwP,EACzC6D,GAAO,CAAA9E,EAAAvO,EAAA,eAAAuO,EAAAvO,EAAA,EAAalG,KAAKuN,QAAQmM,OAAOlZ,MAAK,OAAAkV,GAAAjB,EAAAhK,EAAExG,IAAIsV,GAAO,WAAA7D,EAAA,CAAAjB,EAAAvO,EAAA,cACpD,IAAIkK,MAAM,wBAADhN,OAAyBmW,IAAU,cAAA9E,EAAAvO,EAAA,EAGlClG,KAAKuN,QAAQiE,MAAMhR,MAAK,OAGY,GAHlDgR,EAAKiD,EAAAhK,GACL+O,EAAUD,EACV/H,EAAMmI,OAAO,UAAWJ,GAASzU,MAAM5C,IAAI,SAAA4H,GAAC,OAAIA,EAAE1E,EAAE,GACpDoM,EAAM1M,MAAMuO,OAAO,SAAAvJ,GAAC,OAAKA,EAAEyP,OAAO,GAAErX,IAAI,SAAA4H,GAAC,OAAIA,EAAE1E,EAAE,IAE1CrC,OAAQ,CAAF0R,EAAAvO,EAAA,eAAAuO,EAAA/J,EAAA,UAIwF,GAAxF8O,EAAQI,KAAK,SAAAvM,GAAM,OAAMzJ,EAAKiW,eAAe5V,IAAIoJ,IAAWzJ,EAAKkW,WAAW7V,IAAIoJ,EAAO,GACxF,CAAFoH,EAAAvO,EAAA,eAAAuO,EAAA/J,EAAA,UAaf,OATK+O,EAAmB,eAAHrW,OAAkBmW,GAAW,aAE/CvZ,KAAK+Z,uBAAuBC,SAASP,IACrCzZ,KAAK+Z,uBAAuBE,mBAAkBpO,GAAAR,KAAAE,EAAC,SAAA2I,IAAA,IAAArO,EAAA,OAAAwF,KAAAC,EAAA,SAAA8I,GAAA,cAAAA,EAAAlO,GAAA,cAAAkO,EAAAlO,EAAA,EACtBtC,EAAK2J,QAAQI,OAAOqC,KAAK,oBAAqB,CAACC,SAAU,CAACsJ,QAAAA,KAAU,OAA7E,KAAN1T,EAAMuO,EAAA3J,GACDtG,MAAO,CAAFiQ,EAAAlO,EAAA,cAAQL,EAAO1B,MAAK,OAEpCP,EAAKsW,6BAA6BV,EAAS3T,EAAOtC,KAAKsW,gBAAgB,cAAAzF,EAAA1J,EAAA,KAAAwJ,EAAA,IACxEuF,GACNhF,EAAAvO,EAAA,EAEKlG,KAAK+Z,uBAAuBvZ,IAAIiZ,GAAiB,cAAAhF,EAAA/J,EAAA,KAAA6J,EAAA,SAC1D,SA/ByBgB,GAAA,OAAA+D,EAAAvU,MAAC,KAADjC,UAAA,IAiC1B,CAAA3C,IAAA,aAAAa,OAAAmZ,EAAAtO,GAAAR,KAAAE,EAIA,SAAA6J,EAAwB/H,GAAc,IAAAjG,EAAA,YAAAiE,KAAAC,EAAA,SAAA+J,GAAA,cAAAA,EAAAnP,GAAA,cAAAmP,EAAAnP,EAAA,EACrBlG,KAAKuN,QAAQiE,MAAMhR,MAAK,UAAA6U,EAAA5K,EAAExG,IAAIoJ,GAAS,CAAHgI,EAAAnP,EAAA,eAAAmP,EAAA3K,EAAA,OACtC5I,GAAS,UAGd9B,KAAK6Z,eAAe5V,IAAIoJ,KAAWrN,KAAK8Z,WAAW7V,IAAIoJ,GAAO,CAAAgI,EAAAnP,EAAA,QAY/D,OAXGlG,KAAK+Z,uBAAuBC,SAAS3M,IACrCrN,KAAK+Z,uBAAuBE,mBAAkBpO,GAAAR,KAAAE,EAAC,SAAAwJ,IAAA,IAAAlP,EAAA,OAAAwF,KAAAC,EAAA,SAAA0J,GAAA,cAAAA,EAAA9O,GAAA,cAAA8O,EAAA9O,EAAA,EACtBkB,EAAKmG,QAAQI,OAAOqC,KAAK,oBAAqB,CAACC,SAAU,CAAC5C,OAAAA,KAAS,OAA5E,KAANxH,EAAMmP,EAAAvK,GAEDtG,MAAO,CAAF6Q,EAAA9O,EAAA,cACNL,EAAO1B,MAAK,OAGtBiD,EAAKgT,wBAAwB/M,EAAQxH,EAAOtC,KAAKsW,gBACjDzS,EAAKiT,0BAA0BhN,GAAQ,cAAA2H,EAAAtK,EAAA,KAAAqK,EAAA,IACxC1H,GACNgI,EAAAnP,EAAA,EAEKlG,KAAK+Z,uBAAuBvZ,IAAI6M,GAAO,cAAAgI,EAAA3K,EAAA,EAG1C1K,KAAK6Z,eAAerZ,IAAI6M,IAAO,EAAA+H,EAAA,SACzC,SAvBsB9G,GAAA,OAAA6L,EAAApV,MAAC,KAADjC,UAAA,IAyBvB,CAAA3C,IAAA,UAAAa,OAAAsZ,EAAAzO,GAAAR,KAAAE,EAGA,SAAAkK,EAAqBpI,GAAc,IAAAkN,EAAAzU,EAAAJ,EAAA8U,EAAA3I,EAAA,OAAAxG,KAAAC,EAAA,SAAAqK,GAAA,cAAAA,EAAArL,EAAAqL,EAAAzP,GAAA,cAAAyP,EAAAzP,EAAA,EACNlG,KAAKya,WAAWpN,GAAO,OAAhC,GAAVkN,EAAU5E,EAAAlL,EAEE,CAAFkL,EAAAzP,EAAA,eAAAyP,EAAAjL,EAAA,UAAA5E,EAAAC,GAIYwU,EAAWzV,OAAK6Q,EAAArL,EAAA,EAAAxE,EAAAG,IAAA,WAAAP,EAAAI,EAAAI,KAAAC,KAAE,CAAFwP,EAAAzP,EAAA,QAApB,KAAbsU,EAAa9U,EAAA1E,OACF0Z,SAAU,CAAF/E,EAAAzP,EAAA,eAAAyP,EAAAzP,EAAA,EAChBlG,KAAKuN,QAAQI,OAAOqC,KAAK,MAAO,CAACC,SAAUuK,EAAcvK,WAAU,OAAA0F,EAAAzP,EAAA,eAAAyP,EAAAzP,EAAA,eAAAyP,EAAArL,EAAA,EAAAuH,EAAA8D,EAAAlL,EAAA3E,EAAAQ,EAAAuL,GAAA,cAAA8D,EAAArL,EAAA,EAAAxE,EAAAS,IAAAoP,EAAApP,EAAA,iBAAAoP,EAAAjL,EAAA,KAAA+K,EAAA,qBAGpF,SAZmBpG,GAAA,OAAAiL,EAAAvV,MAAC,KAADjC,UAAA,IAcpB,CAAA3C,IAAA,YAAAa,OAAA2Z,EAAA9O,GAAAR,KAAAE,EAMA,SAAAyC,EAAuBiC,GAAsB,IAAA2K,EAAApB,EAAAqB,EAAArJ,EAAAsJ,EAAAJ,EAAAzT,EAAAD,EAAAqG,EAAAkN,EAAApR,EAAAH,EAAA+R,EAAA/D,EAAAnR,EAAAiM,EAAAC,EAAA,OAAA1G,KAAAC,EAAA,SAAA4C,GAAA,cAAAA,EAAA5D,EAAA4D,EAAAhI,GAAA,OAOhB,GANnB0U,EAAW3K,EAAS3C,QAAO,SAAAlK,OAClB6M,EAAS5C,OAAM,KAAAjK,OAAI6M,EAAS3C,SACrC2C,EAAS5C,OAAM,QAAAjK,OACH6M,EAAS5C,QACjB4C,EAASsJ,QAAO,SAAAnW,OACH6M,EAASsJ,SAClB,aAEVvZ,KAAKgb,eAAe/W,IAAI2W,GAAW,CAAF1M,EAAAhI,EAAA,eAAAgI,EAAAxD,EAAA,EAC1B1K,KAAKgb,eAAexa,IAAIoa,IAAS,OAGlB,OAAtBpB,EAAoB,GAAEtL,EAAAhI,EAAA,EAENlG,KAAKuN,QAAQiE,MAAMhR,MAAK,OAAjC,GAALgR,EAAKtD,EAAAzD,GAEPwF,EAAS3C,QAAS,CAAFY,EAAAhI,EAAA,WACX+J,EAAS5C,OAAQ,CAAFa,EAAAhI,EAAA,cACV,IAAIkK,MAAM,+CAA8C,OAElEoJ,EAAU,CAACvJ,EAAS5C,QACpBwN,EAAgB5K,EAAS3C,QAAQY,EAAAhI,EAAA,mBAC1B+J,EAAS5C,OAAQ,CAAFa,EAAAhI,EAAA,QACtBsT,EAAU,CAACvJ,EAAS5C,QAAQa,EAAAhI,EAAA,mBACrB+J,EAASsJ,QAAS,CAAFrL,EAAAhI,EAAA,eAAAgI,EAAAhI,EAAA,EACjBlG,KAAKib,cAAchL,EAASsJ,SAAQ,OAC1CC,EAAUhI,EAAMmI,OAAO,UAAW1J,EAASsJ,SAASzU,MAAM5C,IAAI,SAAA4H,GAAC,OAAIA,EAAE1E,EAAE,GAAE8I,EAAAhI,EAAA,sBAAAgI,EAAAhI,EAAA,EAEnElG,KAAKib,cAAc,MAAK,OAC9BzB,EAAUhI,EAAM1M,MAAMuO,OAAO,SAAAvJ,GAAC,OAAKA,EAAEyP,OAAO,GAAErX,IAAI,SAAA4H,GAAC,OAAIA,EAAE1E,EAAE,GAAE,OAG7D0V,EAAe,EACfJ,GAAW,EAAKzT,EAAAlB,GAECyT,GAAOtL,EAAA5D,EAAA,GAAArD,EAAAhB,IAAA,YAAAe,EAAAC,EAAAf,KAAAC,KAAE,CAAF+H,EAAAhI,EAAA,SAAX,OAANmH,EAAMrG,EAAAhG,MAAAkN,EAAAhI,EAAA,GACYlG,KAAKya,WAAWpN,GAAO,QAAhC,GAAVkN,EAAUrM,EAAAzD,EAEC,CAAFyD,EAAAhI,EAAA,gBAAAgI,EAAAxD,EAAA,cAAAvB,EAAApD,GAIKwU,EAAWzV,OAAKoJ,EAAA5D,EAAA,GAAAnB,EAAAlD,IAAA,YAAA+C,EAAAG,EAAAjD,KAAAC,KAAE,CAAF+H,EAAAhI,EAAA,SAApB,GAAL8Q,EAAKhO,EAAAhI,OACR6Z,GAAiB7D,EAAM/G,SAAS3C,UAAYuN,EAAa,CAAA3M,EAAAhI,EAAA,gBAAAgI,EAAAxD,EAAA,cAIzDsM,EAAM0D,WACNA,GAAW,GAGfI,GAAmC,QAAvBC,EAAK/D,EAAM8D,oBAAY,IAAAC,EAAAA,EAAI,EAAG,QAAA7M,EAAAhI,EAAA,iBAAAgI,EAAAhI,EAAA,iBAAAgI,EAAA5D,EAAA,GAAAwH,EAAA5D,EAAAzD,EAAAtB,EAAA7C,EAAAwL,GAAA,eAAA5D,EAAA5D,EAAA,GAAAnB,EAAA5C,IAAA2H,EAAA3H,EAAA,YAAA2H,EAAAhI,EAAA,iBAAAgI,EAAAhI,EAAA,iBAAAgI,EAAA5D,EAAA,GAAAyH,EAAA7D,EAAAzD,EAAAxD,EAAAX,EAAAyL,GAAA,eAAA7D,EAAA5D,EAAA,GAAArD,EAAAV,IAAA2H,EAAA3H,EAAA,YAKR,OADpCV,EAAS,CAAEiV,aAAAA,EAAcJ,SAAAA,GAC/B1a,KAAKgb,eAAe1Y,IAAIsY,EAAU/U,GAAQqI,EAAAxD,EAAA,EAEnC7E,GAAM,EAAAmI,EAAA,uCAChB,SA5DqB2C,GAAA,OAAAgK,EAAA5V,MAAC,KAADjC,UAAA,IA8DtB,CAAA3C,IAAA,oBAAAa,MAIA,SAAyBqM,GAA6C,QAAA6N,EAAA7S,EAAA,KAAAxF,EAAAC,UAAAC,OAA1BoY,EAAQ,IAAAlY,MAAAJ,EAAA,EAAAA,EAAA,KAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAARiY,EAAQjY,EAAA,GAAAJ,UAAAI,GACjB,QAA/BgY,EAAAlb,KAAK6Z,eAAerZ,IAAI6M,UAAO,IAAA6N,GAA/BA,EAAA,OAAuCnW,MAAAmW,EAAIC,GAC3CA,EAAS3Y,QAAQ,SAAA8K,GAAO,OAAIjF,EAAKgS,0BAA0BhN,EAAQC,EAAQ,EAC/E,GAAC,CAAAnN,IAAA,gBAAAa,MAED,SAAsB4M,GAIlB,IACqDwN,EADrDC,EAAAtV,GACqB/F,KAAK6Z,eAAe/U,MAAMgD,QAAM,IAArD,IAAAuT,EAAApV,MAAAmV,EAAAC,EAAAnV,KAAAC,MAAuD,KAA5CkH,EAAM+N,EAAApa,MACbhB,KAAK8Z,WAAWwB,IAAIjO,EACxB,CAAC,OAAAhH,GAAAgV,EAAA/U,EAAAD,EAAA,SAAAgV,EAAA9U,GAAA,CACDvG,KAAK+Z,uBAAuBwB,YAC5Bvb,KAAKqa,4BACLra,KAAKwY,gBAAgBjP,SACzB,GAAC,CAAApJ,IAAA,mBAAAa,MAED,SAAyB4M,GAChB5N,KAAKwb,uCAAuC5N,EACrD,GAAC,CAAAzN,IAAA,6BAAAa,MAED,SAAmC4M,GAAgC,IAAA6N,EACN,QAAzDA,EAAAzb,KAAK6Z,eAAerZ,IAAIoN,EAAG4M,cAAcvK,SAAS5C,eAAO,IAAAoO,GAAzDA,EAA2DnZ,IAAIsL,EAAG4M,eAClExa,KAAKqa,0BAA0BzM,EAAG4M,cAAcvK,SAAS5C,OAAQO,EAAG4M,cAAcvK,SAAS3C,QAC/F,GAAC,CAAAnN,IAAA,sBAAAa,MAED,SAA4B4M,GACxB5N,KAAK0b,uBAAuB,CAAC9N,EAAG4M,cAAcvK,SAAS5C,QAAS,CAACO,EAAG4M,gBACpExa,KAAKqa,0BAA0BzM,EAAG4M,cAAcvK,SAAS5C,OAAQO,EAAG4M,cAAcvK,SAAS3C,QAC/F,GAAC,CAAAnN,IAAA,wBAAAa,MAED,SAA8B4M,GAA2B,IAAA+N,EACV,QAA3CA,EAAA3b,KAAK6Z,eAAerZ,IAAIoN,EAAGqC,SAAS5C,eAAO,IAAAsO,GAA3CA,EAAA,OAAoD/N,EAAGqC,SAAS3C,SAChEtN,KAAKqa,0BAA0BzM,EAAGqC,SAAS5C,OAAQO,EAAGqC,SAAS3C,QACnE,GAAC,CAAAnN,IAAA,oBAAAa,MAED,SAA0B4M,GACtB5N,KAAK4b,kCAAkChO,EAAGxI,GAC9C,GAAC,CAAAjF,IAAA,iBAAAa,MAED,SAAuB4M,GACnB5N,KAAK4b,kCAAkChO,EAAG2I,KAAKnR,GACnD,GAAC,CAAAjF,IAAA,iBAAAa,MAED,SAAuB4M,GACnB5N,KAAK4b,kCAAkChO,EAAGxI,GAC9C,GAAC,CAAAjF,IAAA,iBAAAa,OAAA6a,EAAAhQ,GAAAR,KAAAE,EAED,SAAAiD,EAA6BZ,GAAY,IAAA/H,EAAA2U,EAAA,OAAAnP,KAAAC,EAAA,SAAAqD,GAAA,cAAAA,EAAAzI,GAAA,WACjClG,KAAK6Z,eAAe5V,IAAI2J,EAAGP,QAAS,CAAFsB,EAAAzI,EAAA,eAAAyI,EAAAzI,EAAA,EAGblG,KAAKuN,QAAQI,OAAOqC,KACrC,oBACA,CAACC,SAAU,CAAC5C,OAAQO,EAAGP,OAAQC,QAASM,EAAGoJ,MAAM5R,MACpD,OAHKS,EAAM8I,EAAAlE,GAIN+P,EAAgB3U,EAAOtC,KAAKsW,eAAe,MAE7C7Z,KAAK6Z,eAAerZ,IAAIoN,EAAGP,QAAQ/K,IAAIkY,GACvCxa,KAAKqa,0BAA0BzM,EAAGP,OAAQO,EAAGoJ,MAAM5R,KACtD,cAAAuJ,EAAAjE,EAAA,KAAA8D,EAAA,SAER,SAd2BwE,GAAA,OAAA6I,EAAA9W,MAAC,KAADjC,UAAA,KAAA3C,IAAA,qBAAAa,MAgB5B,SAA2B4M,GAAwB,IAAAkO,EACJ,QAA3CA,EAAA9b,KAAK6Z,eAAerZ,IAAIoN,EAAGqC,SAAS5C,eAAO,IAAAyO,GAA3CA,EAAA,OAAoDlO,EAAGqC,SAAS3C,SAChEtN,KAAKqa,0BAA0BzM,EAAGqC,SAAS5C,OAAQO,EAAGqC,SAAS3C,QACnE,GAEA,CAAAnN,IAAA,4BAAAa,MAGA,SAAkCqM,EAAiBC,GAC/C,GAAID,EAAQ,CAGR,GAFArN,KAAKgb,eAAc,OAAQ,QAAD5X,OAASiK,IAE/BC,EACAtN,KAAKgb,eAAc,OAAQ,SAAD5X,OAAUiK,EAAM,KAAAjK,OAAIkK,QAC3C,KACyCyO,EADzCC,EAAAjW,GACe/F,KAAKgb,eAAelT,QAAM,IAA5C,IAAAkU,EAAA/V,MAAA8V,EAAAC,EAAA9V,KAAAC,MAA8C,KAAnChG,EAAG4b,EAAA/a,MACNb,EAAI8b,WAAW,SAAD7Y,OAAUiK,EAAM,OAC9BrN,KAAKgb,eAAc,OAAQ7a,EAEnC,CAAC,OAAAkG,GAAA2V,EAAA1V,EAAAD,EAAA,SAAA2V,EAAAzV,GAAA,CACL,CAAC,IAE2C2V,EAF3CC,EAAApW,GAEiB/F,KAAKgb,eAAelT,QAAM,IAA5C,IAAAqU,EAAAlW,MAAAiW,EAAAC,EAAAjW,KAAAC,MAA8C,KAAnChG,EAAG+b,EAAAlb,OACNb,EAAI8b,WAAW,WAAqB,cAAR9b,IAC5BH,KAAKgb,eAAc,OAAQ7a,EAEnC,CAAC,OAAAkG,GAAA8V,EAAA7V,EAAAD,EAAA,SAAA8V,EAAA5V,GAAA,CACL,MACIvG,KAAKgb,eAAexW,QAGxBxE,KAAKyH,KAAK,SACd,GAAC,CAAAtH,IAAA,oCAAAa,MAED,SAA0CwY,GAAyB,IAAApR,EAAA,KACzDgU,EAAa,IAAIlT,IAAIsQ,GAC3BA,EAAQhX,QAAQ,SAAA6K,GACZjF,EAAK4S,eAAc,OAAQ,QAAD5X,OAASiK,GACvC,GAAG,IAEyCgP,EAFzCC,EAAAvW,GAEe/F,KAAKgb,eAAelT,QAAM,IAA5C,IAAAwU,EAAArW,MAAAoW,EAAAC,EAAApW,KAAAC,MAA8C,KAAnChG,EAAGkc,EAAArb,MACV,GAAIb,EAAI8b,WAAW,WAAqB,cAAR9b,EAC5BH,KAAKgb,eAAc,OAAQ7a,QAG/B,GAAIA,EAAI8b,WAAW,UAAW,CAC1B,IAAMM,EAAQpc,EAAIqc,MAAM,KACpBD,EAAMxZ,QAAU,GAAKqZ,EAAWnY,IAAIsY,EAAM,KAC1Cvc,KAAKgb,eAAc,OAAQ7a,EAEnC,CACJ,CAAC,OAAAkG,GAAAiW,EAAAhW,EAAAD,EAAA,SAAAiW,EAAA/V,GAAA,CAEDvG,KAAKyH,KAAK,SACd,GAAC,CAAAtH,IAAA,yCAAAa,OAAAyb,EAAA5Q,GAAAR,KAAAE,EAED,SAAAsD,EAAqDjB,GAAc,IAAA8O,EAAAlC,EAAAmC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAA9R,KAAAC,EAAA,SAAAwD,GAAA,cAAAA,EAAA5I,GAAA,OAEW,GADpEwW,EAAqB1c,KAAK6Z,eAAerZ,IAAIoN,EAAGyC,QAAQJ,SAAS5C,QACjEmN,EAAgBkC,aAAkB,EAAlBA,EAAoBlc,IAAIoN,EAAGyC,QAAQJ,SAAS3C,SAE7DoP,GAAuBlC,GAAqC,cAApB5M,EAAGyC,QAAQ/M,KAAoB,CAAAwL,EAAA5I,EAAA,eAAA4I,EAAApE,EAAA,iBAAAoE,EAAA5I,EAAA,EAK3DlG,KAAKuN,QAAQ6P,QAAO,OACW,GAD1CT,EAAE7N,EAAArE,EACKmD,EAAGyC,QAAQgN,OAAOC,KAAKlY,KAAOuX,EAAGvX,GAGpC,CAAF0J,EAAA5I,EAAA,QAEJ0W,EAAS,CAACW,OAAQ,EAAGC,iBAAkB5P,EAAGyC,QAAQjL,IAAI0J,EAAA5I,EAAA,kBAC3B,SAApB0H,EAAGyC,QAAQ/M,KAAe,CAAAwL,EAAA5I,EAAA,eAAA4I,EAAA5I,EAAA,EAEZlG,KAAKuN,QAAQiE,MAAM4L,MAAMxP,EAAGyC,QAAQJ,SAAS5C,QAAO,OAAnE2P,EAAMlO,EAAArE,EACNwS,EAAU,GAAH7Z,OAAA4B,GAAiC,QAAjC6X,EAA0B,QAA1BC,EAAQE,EAAOS,mBAAW,IAAAX,OAAA,EAAlBA,EAAoBY,aAAK,IAAAb,EAAAA,EAAI,IAAE7X,GAAmB,QAAnB+X,EAAOC,EAAOU,aAAK,IAAAX,EAAAA,EAAI,KACrEG,EAAkB,GAAH9Z,OAAA4B,GACdiY,EAAQ/a,IAAI,SAAAkD,GAAE,YAAAhC,OAAUgC,EAAE,QAAI,MAAAhC,OAC5BuZ,EAAGvX,GAAE,OAER+X,EAAgBD,EAAgBtD,KAAK,SAAAtY,GAAO,OAAIsM,EAAGyC,QAAQsN,QAAQ9K,SAASvR,EAAQ,GAE1Fsb,EAAS,CACLW,OAAiC,OAAzB/C,EAAc+C,OAAkB,KAAO/C,EAAc+C,OAAS,EACtE7C,UAAU,EACVI,aAAcN,EAAcM,cAAgBqC,EAAgB,EAAI,IAClErO,EAAA5I,EAAA,eAGF0W,EAAS,CACLW,OAAiC,OAAzB/C,EAAc+C,OAAkB,KAAO/C,EAAc+C,OAAS,EACtE7C,UAAU,GACZ,OAGNgC,EAAmBpa,IAAGkN,GAAAA,GAAC,CAAC,EAAGgL,GAAkBoC,IAC7C5c,KAAKqa,0BAA0BzM,EAAGyC,QAAQJ,SAAS5C,OAAQO,EAAGyC,QAAQJ,SAAS3C,SAAS,cAAAwB,EAAApE,EAAA,KAAAmE,EAAA,SAC3F,SAzCmD2E,GAAA,OAAAiJ,EAAA1X,MAAC,KAADjC,UAAA,IA2CpD,CAAA3C,IAAA,0BAAAa,MAMA,SAAgCqM,EAAgBwM,GAAuC,IAAA+D,EAC7E5d,KAAK6Z,eAAe5V,IAAIoJ,IAC1BrN,KAAK6Z,eAAevX,IAAI,CAAC+K,EAAQ,IAAInF,EACjC,SAAAsS,GAAa,OAAIA,EAAcvK,SAAS3C,OAAO,MAIvDsQ,EAAA5d,KAAK6Z,eAAerZ,IAAI6M,IAAQwQ,UAAS9Y,MAAA6Y,EAAA5Y,GAAI6U,IAC7C7Z,KAAK8Z,WAAU,OAAQzM,EAC3B,GAEA,CAAAlN,IAAA,+BAAAa,MAKA,SAAqCwY,EAAmBK,GAAuC,IAAAvR,EAAA,KACrFwV,EAAoD,CAAC,EAE3DjE,EAAerX,QAAQ,SAAAgY,GAAiB,IAAAuD,EAAAC,GACQ,QAA5CA,EAACF,EAAYC,EAACvD,EAAcvK,SAAS5C,eAAO,IAAA2Q,EAAAA,EAA3CF,EAAYC,GAAoC,IAAI1b,KAAKmY,EAC9D,GAEAhB,EAAQhX,QAAQ,SAAA6K,GAAM,IAAA4Q,EAAA,OAAI3V,EAAK8R,wBAAwB/M,EAA4B,QAAtB4Q,EAAEH,EAAazQ,UAAO,IAAA4Q,EAAAA,EAAI,GAAG,GAE1Fje,KAAKke,kCAAkC1E,EAC3C,GAAC,CAAArZ,IAAA,yBAAAa,MAED,SAA+BwY,EAAmBK,GAAuC,IAAAlR,EAAA,KAC/EmV,EAAoD,CAAC,EAG3DjE,EAAerX,QAAQ,SAAAgY,GAAiB,IAAA2D,EAAAC,EACO,QAA3CA,EAAAN,EAAYK,EAAC3D,EAAcvK,SAAS5C,eAAO,IAAA+Q,IAA3CN,EAAYK,GAAoC,IAChDL,EAAatD,EAAcvK,SAAS5C,QAAQhL,KAAKmY,EACrD,GAEAhB,EAAQhX,QAAQ,SAAA6K,GAOc,IAAAgR,EANpB1V,EAAKkR,eAAe5V,IAAIoJ,IAC1B1E,EAAKkR,eAAevX,IAAI,CAAC+K,EAAQ,IAAInF,EACjC,SAAAsS,GAAa,OAAIA,EAAcvK,SAAS3C,OAAO,KAInDwQ,EAAazQ,KACbgR,EAAA1V,EAAKkR,eAAerZ,IAAI6M,IAAQ/K,IAAGyC,MAAAsZ,EAAArZ,GAAI8Y,EAAazQ,IAE5D,GAEArN,KAAKke,kCAAkC1E,EAC3C,GAAC,CAAArZ,IAAA,oCAAAa,MAED,SAA0CqM,GACtCrN,KAAK6Z,eAAc,OAAQxM,GAC3BrN,KAAK+Z,uBAAuBuE,OAAOjR,GACnCrN,KAAK8Z,WAAU,OAAQzM,GACvBrN,KAAKqa,0BAA0BhN,EACnC,IA5aJvD,GAAAkC,GAAA1F,EAAA3F,UAAAmJ,GAAAD,GAAAmC,GAAA1F,EAAAuD,GAAAxJ,OAAAC,eAAAgG,EAAA,aAAAoF,UAAA,IAAApF,EAAA,IAAAA,EAAAwD,EAAAD,EAgUK4S,EAxEAZ,EAvHDlB,EAjBAL,EA7BAH,EAtCAb,CA+XC,CA1Z6B,CAASrY,G,m0EClB3C,IAAAqF,EAAAuD,EAAAC,EAAA,mBAAAhJ,OAAAA,OAAA,GAAAoF,EAAA4D,EAAAC,UAAA,aAAA3J,EAAA0J,EAAA/I,aAAA,yBAAAiJ,EAAAF,EAAA5D,EAAA9F,EAAA4J,GAAA,IAAAC,EAAA/D,GAAAA,EAAAvF,qBAAAuJ,EAAAhE,EAAAgE,EAAAC,EAAA9J,OAAA+J,OAAAH,EAAAtJ,WAAA,OAAA0J,GAAAF,EAAA,mBAAAL,EAAA5D,EAAA9F,GAAA,IAAA4J,EAAAC,EAAAE,EAAA5D,EAAA,EAAA+D,EAAAlK,GAAA,GAAAmK,GAAA,EAAAC,EAAA,CAAAF,EAAA,EAAApE,EAAA,EAAAuE,EAAAnE,EAAAoE,EAAAC,EAAApE,EAAAoE,EAAAC,KAAAtE,EAAA,GAAAqE,EAAA,SAAAd,EAAAC,GAAA,OAAAE,EAAAH,EAAAI,EAAA,EAAAE,EAAA7D,EAAAkE,EAAAtE,EAAA4D,EAAAY,CAAA,YAAAC,EAAAb,EAAA5D,GAAA,IAAA+D,EAAAH,EAAAK,EAAAjE,EAAA2D,EAAA,GAAAU,GAAAhE,IAAAnG,GAAAyJ,EAAAS,EAAAvH,OAAA8G,IAAA,KAAAzJ,EAAA4J,EAAAM,EAAAT,GAAAc,EAAAH,EAAAF,EAAAO,EAAAb,EAAA,GAAAF,EAAA,GAAA1J,EAAAyK,IAAA3E,KAAAiE,EAAAH,GAAAC,EAAAD,EAAA,OAAAC,EAAA,MAAAD,EAAA,GAAAA,EAAA,GAAA1D,GAAA0D,EAAA,IAAAW,KAAAvK,EAAA0J,EAAA,GAAAa,EAAAX,EAAA,KAAAC,EAAA,EAAAO,EAAAC,EAAAvE,EAAAsE,EAAAtE,EAAA8D,EAAA,IAAAW,EAAAE,IAAAzK,EAAA0J,EAAA,GAAAE,EAAA,GAAA9D,GAAAA,EAAA2E,KAAAb,EAAA,GAAAF,EAAAE,EAAA,GAAA9D,EAAAsE,EAAAtE,EAAA2E,EAAAZ,EAAA,OAAA7J,GAAA0J,EAAA,SAAAY,EAAA,MAAAH,GAAA,EAAArE,CAAA,iBAAA9F,EAAAkK,EAAAO,GAAA,GAAAtE,EAAA,QAAAuE,UAAA,oCAAAP,GAAA,IAAAD,GAAAK,EAAAL,EAAAO,GAAAZ,EAAAK,EAAAH,EAAAU,GAAAhB,EAAAI,EAAA,EAAA3D,EAAA6D,KAAAI,GAAA,CAAAP,IAAAC,EAAAA,EAAA,GAAAA,EAAA,IAAAO,EAAAtE,GAAA,GAAAyE,EAAAV,EAAAE,IAAAK,EAAAtE,EAAAiE,EAAAK,EAAAC,EAAAN,GAAA,OAAA5D,EAAA,EAAAyD,EAAA,IAAAC,IAAA7J,EAAA,QAAAyJ,EAAAG,EAAA5J,GAAA,MAAAyJ,EAAAA,EAAAhJ,KAAAmJ,EAAAG,IAAA,MAAAW,UAAA,wCAAAjB,EAAA1D,KAAA,OAAA0D,EAAAM,EAAAN,EAAA7I,MAAAiJ,EAAA,IAAAA,EAAA,YAAAA,IAAAJ,EAAAG,EAAA,SAAAH,EAAAhJ,KAAAmJ,GAAAC,EAAA,IAAAE,EAAAW,UAAA,oCAAA1K,EAAA,YAAA6J,EAAA,GAAAD,EAAA1D,CAAA,UAAAuD,GAAAU,EAAAC,EAAAtE,EAAA,GAAAiE,EAAAL,EAAAjJ,KAAAqF,EAAAsE,MAAAE,EAAA,YAAAb,GAAAG,EAAA1D,EAAA2D,EAAA,EAAAE,EAAAN,CAAA,SAAAtD,EAAA,UAAAvF,MAAA6I,EAAA1D,KAAAoE,EAAA,GAAAT,EAAA1J,EAAA4J,IAAA,GAAAG,CAAA,KAAAO,EAAA,YAAAR,IAAA,UAAAa,IAAA,UAAAC,IAAA,CAAAnB,EAAAxJ,OAAA4K,eAAA,IAAAhB,EAAA,GAAA/D,GAAA2D,EAAAA,EAAA,GAAA3D,QAAAmE,GAAAR,EAAA,GAAA3D,EAAA,yBAAA2D,GAAAM,EAAAa,EAAArK,UAAAuJ,EAAAvJ,UAAAN,OAAA+J,OAAAH,GAAA,SAAA1D,EAAAD,GAAA,OAAAjG,OAAA6K,eAAA7K,OAAA6K,eAAA5E,EAAA0E,IAAA1E,EAAA6E,UAAAH,EAAAX,GAAA/D,EAAAlG,EAAA,sBAAAkG,EAAA3F,UAAAN,OAAA+J,OAAAD,GAAA7D,CAAA,QAAAyE,EAAApK,UAAAqK,EAAAX,GAAAF,EAAA,cAAAa,GAAAX,GAAAW,EAAA,cAAAD,GAAAA,EAAAK,YAAA,oBAAAf,GAAAW,EAAA5K,EAAA,qBAAAiK,GAAAF,GAAAE,GAAAF,EAAA/J,EAAA,aAAAiK,GAAAF,EAAAjE,EAAA,yBAAAmE,GAAAF,EAAA,oDAAAkB,GAAA,kBAAAC,EAAAtB,EAAAuB,EAAAhF,EAAA,cAAA8D,GAAA/D,EAAAwD,EAAA5D,EAAA2D,GAAA,IAAAG,EAAA3J,OAAAC,eAAA,IAAA0J,EAAA,gBAAA1D,GAAA0D,EAAA,EAAAK,GAAA,SAAA/D,EAAAwD,EAAA5D,EAAA2D,GAAA,SAAAzJ,EAAA0J,EAAA5D,GAAAmE,GAAA/D,EAAAwD,EAAA,SAAAxD,GAAA,YAAAkF,QAAA1B,EAAA5D,EAAAI,EAAA,GAAAwD,EAAAE,EAAAA,EAAA1D,EAAAwD,EAAA,CAAA9I,MAAAkF,EAAA3F,YAAAsJ,EAAA4B,cAAA5B,EAAA6B,UAAA7B,IAAAvD,EAAAwD,GAAA5D,GAAA9F,EAAA,UAAAA,EAAA,WAAAA,EAAA,cAAAiK,GAAA/D,EAAAwD,EAAA5D,EAAA2D,EAAA,UAAA8B,GAAAzF,EAAA2D,EAAAvD,EAAAwD,EAAA1J,EAAAsK,EAAAT,GAAA,QAAAD,EAAA9D,EAAAwE,GAAAT,GAAAE,EAAAH,EAAAhJ,KAAA,OAAAkF,GAAA,YAAAI,EAAAJ,EAAA,CAAA8D,EAAA7D,KAAA0D,EAAAM,GAAAtG,QAAA0F,QAAAY,GAAAyB,KAAA9B,EAAA1J,EAAA,UAAAyL,GAAA3F,GAAA,sBAAA2D,EAAA,KAAAvD,EAAAxD,UAAA,WAAAe,QAAA,SAAAiG,EAAA1J,GAAA,IAAAsK,EAAAxE,EAAAnB,MAAA8E,EAAAvD,GAAA,SAAAwF,EAAA5F,GAAAyF,GAAAjB,EAAAZ,EAAA1J,EAAA0L,EAAAC,EAAA,OAAA7F,EAAA,UAAA6F,EAAA7F,GAAAyF,GAAAjB,EAAAZ,EAAA1J,EAAA0L,EAAAC,EAAA,QAAA7F,EAAA,CAAA4F,OAAA,eAAAE,GAAA1F,EAAAwD,GAAA,QAAAD,EAAA,EAAAA,EAAAC,EAAA/G,OAAA8G,IAAA,KAAAzJ,EAAA0J,EAAAD,GAAAzJ,EAAAG,WAAAH,EAAAG,aAAA,EAAAH,EAAAqL,cAAA,YAAArL,IAAAA,EAAAsL,UAAA,GAAArL,OAAAC,eAAAgG,EAAA2F,GAAA7L,EAAAD,KAAAC,EAAA,WAAAe,GAAAmF,EAAAwD,EAAAD,GAAA,OAAAC,EAAAmC,GAAAnC,MAAAxD,EAAAjG,OAAAC,eAAAgG,EAAAwD,EAAA,CAAA9I,MAAA6I,EAAAtJ,YAAA,EAAAkL,cAAA,EAAAC,UAAA,IAAApF,EAAAwD,GAAAD,EAAAvD,CAAA,UAAA2F,GAAApC,GAAA,IAAAG,EAAA,SAAAH,EAAAC,GAAA,aAAAqC,GAAAtC,KAAAA,EAAA,OAAAA,EAAA,IAAAvD,EAAAuD,EAAA/I,OAAAgM,aAAA,YAAAxG,EAAA,KAAA0D,EAAA1D,EAAAzF,KAAAgJ,EAAAC,GAAA,wBAAAqC,GAAAnC,GAAA,OAAAA,EAAA,UAAAc,UAAA,kEAAAhB,EAAAiD,OAAAC,QAAAnD,EAAA,CAAAoD,CAAApD,EAAA,0BAAAsC,GAAAnC,GAAAA,EAAAA,EAAA,GAmBO,IAAMuU,GAAY,WAoCrB,OAvDJjY,EA8BI,SAAAiY,EAA2BhR,GAA2B,IAAA3K,EAAA,MA9B1D,SAAA8H,EAAAxE,GAAA,KAAAwE,aAAAxE,GAAA,UAAA4E,UAAA,qCA8B0D5J,CAAA,KAAAqd,GAAApd,GAAA,wBAAAA,GAAA,8BAAAA,GAAA,YAP9B,IAAI+G,EAAwC,OAAK/G,GAAA,cAC/C,IAAI0D,GAAqE1D,GAAA,eACxE,IAAI0D,GAA0E1D,GAAA,uBACtE,IAAIkI,GAAclI,GAAA,uBAClB,IAAIqI,GAAiBrI,GAAA,sBACtB,IAAIqI,GAAiB,KAE5B+D,QAAAA,EACvBvN,KAAKsQ,SAAW,IAAI4H,GAAgB3K,GACpCvN,KAAK6Z,eAAiB,IAAIX,GAAsB3L,GAEhDvN,KAAKuN,QAAQI,OAAO5F,GAAG,aAAc,SAAA6F,GAAE,OAAIhL,EAAKiL,iBAAiBD,EAAG,GACpE5N,KAAKuN,QAAQI,OAAO5F,GAAG,mBAAoB,SAAA6F,GAAE,OAAIhL,EAAKkL,uBAAuBF,EAAG,GAChF5N,KAAKuN,QAAQI,OAAO5F,GAAG,WAAY,SAAA6F,GAAE,OAAIhL,EAAK6T,eAAe7I,EAAG,GAChE5N,KAAKuN,QAAQI,OAAO5F,GAAG,eAAgB,SAAA6F,GAAE,OAAIhL,EAAK8T,mBAAmB9I,EAAG,GACxE5N,KAAKuN,QAAQI,OAAO5F,GAAG,aAAc,SAAA6F,GAAE,OAAIhL,EAAK4b,iBAAiB5Q,EAAG,GACpE5N,KAAKuN,QAAQI,OAAO5F,GAAG,WAAY,SAAA6F,GAAE,OAAIhL,EAAK0V,eAAe1K,EAAG,GAChE5N,KAAKuN,QAAQI,OAAO5F,GAAG,cAAe,SAAA6F,GAAE,OAAIhL,EAAK4T,kBAAkB5I,EAAG,GACtE5N,KAAKuN,QAAQI,OAAO5F,GAAG,cAAe,SAAA6F,GAAE,OAAIhL,EAAKyV,kBAAkBzK,EAAG,GACtE5N,KAAKuN,QAAQI,OAAO5F,GAAG,eAAgB,SAAA6F,GAAE,OAAIhL,EAAK6b,mBAAmB7Q,EAAG,GACxE5N,KAAKuN,QAAQI,OAAO5F,GAAG,mBAAoB,SAAA6F,GAAE,OAAIhL,EAAK8b,uBAAuB9Q,EAAG,GAChF5N,KAAKuN,QAAQI,OAAO5F,GAAG,iBAAkB,SAAA6F,GAAE,OAAIhL,EAAK+b,qBAAqB/Q,EAAG,GAC5E5N,KAAKuN,QAAQI,OAAO5F,GAAG,cAAe,SAAA6F,GAAE,OAAIhL,EAAKgc,kBAAkBhR,EAAG,GACtE5N,KAAKuN,QAAQI,OAAO5F,GAAG,oBAAqB,SAAA6F,GAAE,OAAIhL,EAAKic,wBAAwBjR,EAAG,GAClF5N,KAAKuN,QAAQI,OAAO5F,GAAG,kBAAmB,SAAA6F,GAAE,OAAIhL,EAAKkc,sBAAsBlR,EAAG,GAC9E5N,KAAKuN,QAAQI,OAAO5F,GAAG,qBAAsB,SAAA6F,GAAE,OAAIhL,EAAKmc,yBAAyBnR,EAAG,GACpF5N,KAAKuN,QAAQI,OAAO5F,GAAG,eAAgB,SAAA6F,GAAE,OAAIhL,EAAKoc,mBAAmBpR,EAAG,GACxE5N,KAAKuN,QAAQI,OAAO5F,GAAG,YAAa,SAAA6F,GAAE,OAAIhL,EAAKoc,mBAAmBpR,EAAG,GACrE5N,KAAKuN,QAAQI,OAAO5F,GAAG,cAAe,SAAA6F,GAAE,OAAIhL,EAAKqc,kBAAkBrR,EAAG,GACtE5N,KAAKuN,QAAQI,OAAO5F,GAAG,UAAW,SAAA6F,GAAE,OAAIhL,EAAKuV,cAAcvK,EAAG,EAClE,EArDJ9D,EAuDI,EAAA3J,IAAA,aAAAa,OAAAke,EAAArT,GAAAR,KAAAE,EAGA,SAAAgJ,EAAwBlH,GAAc,IAAAzJ,EAAA,YAAAyH,KAAAC,EAAA,SAAAmJ,GAAA,cAAAA,EAAAvO,GAAA,OASjC,OARGlG,KAAKmf,gBAAgBnF,SAAS3M,IAC9BrN,KAAKmf,gBAAgBlF,mBAAkBpO,GAAAR,KAAAE,EAAC,SAAA2I,IAAA,IAAArO,EAAA,OAAAwF,KAAAC,EAAA,SAAA8I,GAAA,cAAAA,EAAAlO,GAAA,cAAAkO,EAAAlO,EAAA,EACftC,EAAK2J,QAAQI,OAAOqC,KAAK,iBAAkB,CAAC5K,GAAIiI,IAAQ,OAAjE,KAANxH,EAAMuO,EAAA3J,GACDtG,MAAO,CAAFiQ,EAAAlO,EAAA,cACNL,EAAO1B,MAAK,OAEtBP,EAAKgb,kBAAkB/Y,EAAOtC,MAAM,cAAA6Q,EAAA1J,EAAA,KAAAwJ,EAAA,IACrC7G,GACNoH,EAAAvO,EAAA,EAEKlG,KAAKmf,gBAAgB3e,IAAI6M,GAAO,cAAAoH,EAAA/J,EAAA,EAC/B1K,KAAKof,QAAQ5e,IAAI6M,IAAO,EAAAkH,EAAA,SAClC,SAbsBgB,GAAA,OAAA2J,EAAAna,MAAC,KAADjC,UAAA,IAevB,CAAA3C,IAAA,QAAAa,OAAAqe,EAAAxT,GAAAR,KAAAE,EAGA,SAAAwJ,EAAmB1H,GAAc,IAAAiS,EAAAF,EAAA,OAAA/T,KAAAC,EAAA,SAAA0J,GAAA,cAAAA,EAAA9O,GAAA,cAAA8O,EAAA9O,EAAA,EACPlG,KAAKuN,QAAQ6P,QAAO,OAAI,GAAxCkC,EAAMtK,EAAAvK,EAAgCrF,GAEtCpF,KAAKuf,KAAKtb,IAAIoJ,GAAS,CAAF2H,EAAA9O,EAAA,eAAA8O,EAAAtK,EAAA,OAEhB5I,GAAS,cAAAkT,EAAA9O,EAAA,EAGElG,KAAKwf,WAAWnS,GAAO,OAAhC,OAAP+R,EAAOpK,EAAAvK,EAAAuK,EAAAtK,EAAA,EACN0U,aAAO,EAAPA,EAASta,MAAM2a,KAAK,SAAAzC,GAAM,IAAA0C,EAAAC,EAAA,OAAoB,QAAhBD,EAAY,QAAZC,EAAC3C,EAAOM,YAAI,IAAAqC,OAAA,EAAXA,EAAava,UAAE,IAAAsa,EAAAA,EAAI1C,EAAOS,YAAYH,KAAKlY,MAAQka,CAAM,IAAC,EAAAvK,EAAA,SACnG,SAViBzG,GAAA,OAAA+Q,EAAAta,MAAC,KAADjC,UAAA,IAYlB,CAAA3C,IAAA,MAAAa,MAAA,eAAA4e,EAAA/T,GAAAR,KAAAE,EAGA,SAAA6J,IAAA,OAAA/J,KAAAC,EAAA,SAAA+J,GAAA,cAAAA,EAAAnP,GAAA,cAAAmP,EAAAnP,EAAA,EACUlG,KAAKwY,gBAAgBlP,QAAO,cAAA+L,EAAA3K,EAAA,EAC3B1K,KAAKuf,MAAI,EAAAnK,EAAA,SAFJ,OAGf,WAHe,OAAAwK,EAAA7a,MAAC,KAADjC,UAAA,EAHhB,IAQA,CAAA3C,IAAA,YAAAa,OAAA6e,EAAAhU,GAAAR,KAAAE,EAIA,SAAAkK,EAAuBpI,EAAgByS,GAA6B,IAAAC,EAAAC,EAAA1W,EAAAxD,EAAAJ,EAAA4H,EAAAoI,EAAAtO,EAAA,YAAAiE,KAAAC,EAAA,SAAAqK,GAAA,cAAAA,EAAArL,EAAAqL,EAAAzP,GAAA,cAAAyP,EAAAzP,EAAA,EAC1DlG,KAAKwY,gBAAgBlP,QAAO,UAE9BwW,UAAAA,EAAoB/c,OAAM,CAAA4S,EAAAzP,EAAA,QAEpB6Z,EAAW,SAACzS,GAAe,IAAA2S,EAAA,QAA8B,QAAzBA,EAAE7Y,EAAK8Y,OAAO1f,IAAI6M,UAAO,IAAA4S,GAAvBA,EAAyBhc,IAAIqJ,IAAclG,EAAK+Y,eAAelc,IAAIoJ,EAASC,GAAQ,GACtH0S,EAAaF,EAAmBzM,OAAO0M,IAE9Bhd,SACLuG,EAAUtJ,KAAKuN,QAChBI,OACAqC,KAAK,YAAa,CAAC3C,OAAAA,EAAQ8N,SAAU6E,IACrCpU,KAAK,SAAA/F,GAAM,IAAAua,EAAA,OAAgD,QAAhDA,EAAIhZ,EAAK8Y,OAAO1f,IAAIqF,EAAOtC,KAAK0M,SAAS5C,eAAO,IAAA+S,OAAA,EAA5CA,EAA8C9d,IAAGyC,MAAAqb,EAAApb,GAAIa,EAAOtC,KAAK2c,QAAO,GAE5FF,EAAWxd,QAAQ,SAAA8K,GAAO,OAAIlG,EAAK+Y,eAAexW,SAASL,EAAS+D,EAASC,EAAQ,IACxFxH,EAAAC,GAEqB+Z,GAAkBnK,EAAArL,EAAA,EAAAxE,EAAAG,IAAA,WAAAP,EAAAI,EAAAI,KAAAC,KAAE,CAAFwP,EAAAzP,EAAA,QAAtB,OAAPoH,EAAO5H,EAAA1E,MAAA2U,EAAAzP,EAAA,EACRlG,KAAKmgB,eAAe3f,IAAI6M,EAASC,GAAQ,OAAAqI,EAAAzP,EAAA,eAAAyP,EAAAzP,EAAA,eAAAyP,EAAArL,EAAA,EAAAoL,EAAAC,EAAAlL,EAAA3E,EAAAQ,EAAAoP,GAAA,cAAAC,EAAArL,EAAA,EAAAxE,EAAAS,IAAAoP,EAAApP,EAAA,iBAAAoP,EAAAjL,EAAA,EAIhD1K,KAAKkgB,OAAO1f,IAAI6M,IAAO,EAAAoI,EAAA,qBACjC,SAvBqBpG,EAAAsB,GAAA,OAAAkP,EAAA9a,MAAC,KAADjC,UAAA,IAyBtB,CAAA3C,IAAA,wBAAAa,MAIA,SAA6BqM,GAA6C,QAAAgT,EAAAxd,EAAAC,UAAAC,OAA1BoY,EAAQ,IAAAlY,MAAAJ,EAAA,EAAAA,EAAA,KAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAARiY,EAAQjY,EAAA,GAAAJ,UAAAI,GAC7B,QAAvBmd,EAAArgB,KAAKkgB,OAAO1f,IAAI6M,UAAO,IAAAgT,GAAvBA,EAAA,OAA+Btb,MAAAsb,EAAIlF,EACvC,GAAC,CAAAhb,IAAA,aAAAa,MAED,WAA+C,QAAAsf,EAAAC,EAAAC,EAAAC,EAAA3c,EAAAhB,UAAAC,OAAzByW,EAAO,IAAAvW,MAAAa,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAPyV,EAAOzV,GAAAjB,UAAAiB,IACzBuc,EAAAtgB,KAAKuf,MAAI,OAAOxa,MAAAub,EAAI9G,IACpB+G,EAAAvgB,KAAKof,SAAO,OAAOra,MAAAwb,EAAI/G,IACvBgH,EAAAxgB,KAAKmf,iBAAgBb,OAAMvZ,MAAAyb,EAAIhH,GAE/B,IAAK,IAAL/U,EAAA,EAAAic,EAAqBlH,EAAO/U,EAAAic,EAAA3d,OAAA0B,IAAE,KAAAkc,EAAAC,EAAAC,EAAnBxT,EAAMqT,EAAAjc,GACP0W,EAA0E,QAAxDwF,EAA0B,QAA1BC,EAAG5gB,KAAKkgB,OAAO1f,IAAI6M,UAAO,IAAAuT,OAAA,EAAvBA,EAAyB9b,MAAM5C,IAAI,SAAA8U,GAAK,OAAIA,EAAM5R,EAAE,UAAC,IAAAub,EAAAA,EAAI,IACpFE,EAAA7gB,KAAK6Z,gBAAeiH,kBAAiB/b,MAAA8b,EAAA,CAACxT,GAAMjK,OAAA4B,GAAKmW,IACrD,EAEAsF,EAAAzgB,KAAKkgB,QAAM,OAAOnb,MAAA0b,EAAIjH,EAC1B,GAAC,CAAArZ,IAAA,uBAAAa,MAED,SAA6BuY,GACzBvZ,KAAK+gB,WAAUhc,MAAf/E,KAAIgF,GACGhF,KAAKuf,KAAK5F,OAAO,UAAWJ,GAASzU,MAAM5C,IAAI,SAAAqU,GAAI,OAAIA,EAAKnR,EAAE,IAEzE,GAAC,CAAAjF,IAAA,2BAAAa,MAED,SAAiC4M,GAC7B,IACgE5G,EADhEC,EAAAlB,GACmB/F,KAAKuf,KAAK5F,OAAO,UAAW/L,EAAG2L,SAASzU,OAAK,IAAhE,IAAAmC,EAAAhB,MAAAe,EAAAC,EAAAf,KAAAC,MAAkE,KAAvDoQ,EAAIvP,EAAAhG,MACLggB,EAAchhB,KAAKof,QAAQ5e,IAAI+V,EAAKnR,IAE1C,GAAK4b,GAAgBA,EAAY/c,IAAI2J,EAAG0R,QAAxC,CAOA,IAAM2B,EAAaD,EAAYxgB,IAAIoN,EAAG0R,QAChC7B,EAAc7P,EAAGoP,OACvBS,EAAYH,KAAO2D,EAAWxD,YAAYH,KAC1C0D,EAAY1e,IAAGkN,GAAAA,GAAC,CAAC,EAAIyR,GAAU,IAAExD,YAAAA,IANjC,CAOJ,CAAC,OAAApX,GAAAY,EAAAX,EAAAD,EAAA,SAAAY,EAAAV,GAAA,CACL,GAAC,CAAApG,IAAA,wBAAAa,MAED,SAA8B4M,GAA2B,IAAAvF,EAAA,KACrDrI,KAAKuf,KACA5F,OAAO,UAAW/L,EAAG2L,SAASzU,MAC9BtC,QAAQ,SAAA+T,GAAI,IAAA2K,EAAA,OAA6B,QAA7BA,EAAI7Y,EAAK+W,QAAQ5e,IAAI+V,EAAKnR,WAAG,IAAA8b,OAAA,EAAzBA,EAAA,OAAkCtT,EAAG0R,OAAO,EACrE,GAAC,CAAAnf,IAAA,0BAAAa,MAED,SAAgC4M,GAA6B,IAAAuT,EAAArE,EACzD,GAAM9c,KAAKof,QAAQnb,IAAI2J,EAAGP,QAA1B,CAKA,IAAM+R,EAAUpf,KAAKof,QAAQ5e,IAAIoN,EAAGP,QAC9B2P,EAASoC,EAAQ5e,IAAIoN,EAAG0R,QACxB8B,EAAYxT,EAAGoP,OACfM,EAA+B,QAA3B6D,EAAqB,QAArBrE,EAAGE,EAAOS,mBAAW,IAAAX,OAAA,EAAlBA,EAAoBQ,YAAI,IAAA6D,EAAAA,EAAInE,EAAOM,KAG5C8D,EAAU3D,YACV2D,EAAU3D,YAAYH,KAAOA,EAE7B8D,EAAU9D,KAAOA,EAGrB8B,EAAQ9c,IAAI8e,EAdZ,CAeJ,GAAC,CAAAjhB,IAAA,qBAAAa,MAED,SAA2B4M,GACvB5N,KAAKqhB,qBAAqBzT,EAAGxI,GACjC,GAAC,CAAAjF,IAAA,qBAAAa,MAED,SAA2B4M,GAAwB,IAAA0T,EAC5BthB,KAAKkgB,OAAO1f,IAAIoN,EAAGqC,SAAS5C,QACrC,OAAQO,EAAGqC,SAAS3C,SAE9B,IAAMiJ,EAAOvW,KAAKuf,KAAK/e,IAAIoN,EAAGqC,SAAS5C,SAClB,QAAjBiU,EAAA/K,EAAKK,oBAAY,IAAA0K,OAAA,EAAjBA,EAAmBlc,MAAOwI,EAAGqC,SAAS3C,SACtCtN,KAAKuf,KAAKjd,IAAGkN,GAAAA,GAAC,CAAC,EAAG+G,GAAI,IAAEK,aAAc,OAE9C,GAAC,CAAAzW,IAAA,iBAAAa,MAED,SAAuB4M,GACnB5N,KAAKuhB,oBAAoB3T,EAAGP,OAAQO,EAAGoJ,MAC3C,GAAC,CAAA7W,IAAA,sBAAAa,MAED,SAA4BqM,GAA0C,QAAA1G,EAAA7D,UAAAC,OAAvBmd,EAAM,IAAAjd,MAAA0D,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAANsZ,EAAMtZ,EAAA,GAAA9D,UAAA8D,GACpB,IAAA4a,EAAzBxhB,KAAKkgB,OAAOjc,IAAIoJ,IAChBmU,EAAAxhB,KAAKkgB,OAAO1f,IAAI6M,IAAQ/K,IAAGyC,MAAAyc,EAAItB,GAE/BlgB,KAAKkgB,OAAO5d,IAAI,CAAC+K,EAAQ,IAAInF,EAAyC,KAAMgY,IAEpF,GAAC,CAAA/f,IAAA,mBAAAa,MAED,SAAyB4M,GACrB5N,KAAKyhB,eAAe7T,EAAG2I,KAC3B,GAAC,CAAApW,IAAA,oBAAAa,MAED,SAA0B4M,GAClB5N,KAAKuf,KAAKtb,IAAI2J,EAAG2I,KAAKnR,KACtBpF,KAAKuf,KAAKjd,IAAIsL,EAAG2I,KAEzB,GAAC,CAAApW,IAAA,oBAAAa,MAED,SAA0B4M,GACtB5N,KAAK+gB,WAAWnT,EAAGxI,GACvB,GAAC,CAAAjF,IAAA,qBAAAa,MAED,SAA2B4M,GAAwB,IAAA8T,EACzCnL,EAAOvW,KAAKuf,KAAK/e,IAAIoN,EAAGqC,SAAS5C,QAMvC,GAJuC,QAAvCqU,EAAI1hB,KAAKkgB,OAAO1f,IAAIoN,EAAGqC,SAAS5C,eAAO,IAAAqU,GAAnCA,EAAqCzd,IAAI2J,EAAGoJ,MAAM5R,KAClDpF,KAAKkgB,OAAO1f,IAAIoN,EAAGqC,SAAS5C,QAAQ/K,IAAIsL,EAAGoJ,OAG3CT,EAAKK,aAAaxR,KAAOwI,EAAGoJ,MAAM5R,GAAI,CACtC,IAAMuc,EAAOnS,GAAA,GAAQ+G,GACrBoL,EAAQ/K,aAAehJ,EAAGoJ,MAC1BhX,KAAKuf,KAAKjd,IAAIqf,EAClB,CACJ,GAAC,CAAAxhB,IAAA,iBAAAa,MAED,WAA+C,QAAA4gB,EAAAta,EAAAxE,UAAAC,OAArByO,EAAK,IAAAvO,MAAAqE,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAALiK,EAAKjK,GAAAzE,UAAAyE,GAC3B,IAAK,IAALjC,EAAA,EAAAuc,EAAmBrQ,EAAKlM,EAAAuc,EAAA9e,OAAAuC,IAAE,CAArB,IAAMiR,EAAIsL,EAAAvc,GACPiR,EAAKK,cACL5W,KAAKuhB,oBAAoBhL,EAAKnR,GAAImR,EAAKK,cAGzB,OAAdL,EAAKjT,MAAiBiT,EAAKuL,aAI3B9hB,KAAK4e,kBAAkB,CACnBxZ,GAAImR,EAAKnR,GACTga,QAAS7I,EAAKuL,WAAW5f,IAAI,SAAAob,GAAI,MAAK,CAClCA,KAAAA,EACAG,YAAa,KACbC,MAAO,KACPqE,YAAa,KACbC,WAAY,KACZC,OAAQ,GACX,KAELjiB,KAAKmf,gBAAgBxV,SAAS9F,QAAQ0F,UAAWgN,EAAKnR,IAE9D,EACAwc,EAAA5hB,KAAKuf,MAAKjd,IAAGyC,MAAA6c,EAAIpQ,EACrB,GAAC,CAAArR,IAAA,iBAAAa,MAED,SAAuB4M,GACnB5N,KAAK+gB,WAAWnT,EAAGxI,GACvB,GAAC,CAAAjF,IAAA,yBAAAa,MAED,SAA+B4M,GACvB5N,KAAKof,QAAQnb,IAAI2J,EAAGP,SACpBrN,KAAKof,QAAQ5e,IAAIoN,EAAGP,QAAQ/K,IAAIsL,EAAGoP,OAE3C,GAAC,CAAA7c,IAAA,uBAAAa,MAED,SAA6B4M,GACrB5N,KAAKof,QAAQnb,IAAI2J,EAAGP,SACpBrN,KAAKof,QAAQ5e,IAAIoN,EAAGP,QAAO,OAAQO,EAAG0R,OAE9C,GAAC,CAAAnf,IAAA,oBAAAa,MAED,SAA0B4M,GASf,IAAAsU,EARDliB,KAAKof,QAAQnb,IAAI2J,EAAGxI,KAWtB8c,EAAAliB,KAAKof,QAAQ5e,IAAIoN,EAAGxI,KAAIyY,UAAS9Y,MAAAmd,EAAAld,GAAI4I,EAAGwR,UAVxCpf,KAAKof,QAAQ9c,IAAI,CACbsL,EAAGxI,GACH,IAAI8C,EACA,SAAA8U,GAAM,IAAAmF,EAAAC,EAAA,OAAmB,QAAnBD,EAAe,QAAfC,EAAIpF,EAAOM,YAAI,IAAA8E,OAAA,EAAXA,EAAahd,UAAE,IAAA+c,EAAAA,EAAInF,EAAOS,YAAYH,KAAKlY,EAAE,EACvDwI,EAAGwR,UAQnB,GAAC,CAAAjf,IAAA,gBAAAa,MAED,SAAsB4M,GAClB,IAAMoL,EAAe,IAAI9P,IAAI0E,EAAGO,MAAMqD,MAAMtP,IAAI,SAAAqU,GAAI,OAAIA,EAAKnR,EAAE,IAKzDid,EAAiBriB,KAAKuf,KAAKza,MAC5BuO,OAAO,SAAAkD,GAAI,OAAMyC,EAAa/U,IAAIsS,EAAKnR,GAAG,GAC1ClD,IAAI,SAAAqU,GAAI,OAAIA,EAAKnR,EAAE,GACpBid,EAAetf,QACf/C,KAAK+gB,WAAUhc,MAAf/E,KAAIgF,GAAeqd,IAMvBriB,KAAKmf,gBAAgB5D,YACrBvb,KAAKmgB,eAAe5E,YAGpBvb,KAAKyhB,eAAc1c,MAAnB/E,KAAIgF,GAAmB4I,EAAGO,MAAMqD,QAEhCxR,KAAKwY,gBAAgBjP,SACzB,GAAC,CAAApJ,IAAA,oBAAAa,MAED,SAA0B4M,GAAuB,IAAA0U,EAE7CtiB,KAAKof,QAAQta,MAAMtC,QAAQ,SAAC4c,GACxB,IAAMpC,EAASoC,EAAQ5e,IAAIoN,EAAG0P,KAAKlY,IAEnC,GAAM4X,EAAN,CAKA,IAAMoE,EAAqB5R,GAAA,GAAOwN,GAE9BA,EAAOM,KACP8D,EAAU9D,KAAO1P,EAAG0P,KAEpB8D,EAAU3D,YAAYH,KAAO1P,EAAG0P,KAGpC8B,EAAQ9c,IAAI8e,EAVZ,CAWJ,GAGA,IAAMmB,EAAmB,GACzBviB,KAAKuf,KAAKza,MAAMtC,QAAQ,SAAA+T,GAAQ,IAAAiM,EACT,QAAnBA,EAAIjM,EAAKuL,kBAAU,IAAAU,GAAfA,EAAiB5I,KAAK,SAAA0D,GAAI,OAAIA,EAAKlY,KAAOwI,EAAG0P,KAAKlY,EAAE,KACpDmR,EAAKuL,WAAavL,EAAKuL,WAAW5f,IAAI,SAAAob,GAAI,OAAIA,EAAKlY,KAAOwI,EAAG0P,KAAKlY,GAAKwI,EAAG0P,KAAOA,CAAI,GACrFiF,EAASlgB,KAAImN,GAAC,CAAC,EAAG+G,IAE1B,IACA+L,EAAAtiB,KAAKuf,MAAKjd,IAAGyC,MAAAud,EAAIC,EACrB,GAAC,CAAApiB,IAAA,mBAAAa,MAED,SAAyB4M,GAAsB,IAAA6U,EACrCvC,EAASlgB,KAAKkgB,OAAO1f,IAAIoN,EAAGyC,QAAQJ,SAAS5C,QAC7C2J,EAAQkJ,aAAM,EAANA,EAAQ1f,IAAIoN,EAAGyC,QAAQJ,SAAS3C,SAE9C,GAAK0J,EAAL,CAIA,IAAM0L,EAAQlT,GAAAA,GAAA,GACPwH,GAAK,IACR2L,aAAc3L,EAAM2L,aAAe,EACnCxQ,YAAavE,EAAGyC,UAGpB6P,EAAO5d,IAAIogB,GACX,IAAMnM,EAAOvW,KAAKuf,KAAK/e,IAAIoN,EAAGyC,QAAQJ,SAAS5C,SAE1B,QAAjBoV,EAAAlM,EAAKK,oBAAY,IAAA6L,OAAA,EAAjBA,EAAmBrd,MAAOwI,EAAGyC,QAAQJ,SAAS3C,SAC9CtN,KAAKuf,KAAKjd,IAAGkN,GAAAA,GAAC,CAAC,EAAI+G,GAAI,IAAEK,aAAc8L,IAZ3C,CAcJ,GAAC,CAAAviB,IAAA,yBAAAa,OAAAiS,EAAApH,GAAAR,KAAAE,EAED,SAAAyC,EAAqCJ,GAAoB,IAAAsS,EAAAlJ,EAAA2L,EAAAxQ,EAAAN,EAAA,OAAAxG,KAAAC,EAAA,SAAA4C,GAAA,cAAAA,EAAAhI,GAAA,OAGP,GADxCga,EAASlgB,KAAKkgB,OAAO1f,IAAIoN,EAAGqC,SAAS5C,UACrC2J,EAAQkJ,aAAM,EAANA,EAAQ1f,IAAIoN,EAAGqC,SAAS3C,UAC3B,CAAFY,EAAAhI,EAAA,QAC+D,MAA9Dyc,EAAexM,KAAKyM,IAAI5L,EAAM2L,aAAe/U,EAAGvI,IAAItC,OAAQ,IACtB,GAAC,CAAAmL,EAAAhI,EAAA,eAAAgI,EAAAhI,EAAA,EAASlG,KAAKsQ,SAASuS,oBAAoBjV,EAAGqC,UAAS,OAAA4B,EAAA3D,EAAAzD,EAAAyD,EAAAhI,EAAA,eAAA2L,EAAG,KAAI,OAArGM,EAAoBN,EAC1BqO,EAAO5d,IAAGkN,GAAAA,GAAC,CAAC,EAAIwH,GAAK,IAAE2L,aAAAA,EAAcxQ,YAAAA,KAAwB,cAAAjE,EAAAxD,EAAA,KAAAsD,EAAA,SAEpE,SATmCgF,GAAA,OAAAC,EAAAlO,MAAC,KAADjC,UAAA,KAtYxCgH,GAAAkC,GAAA1F,EAAA3F,UAAAmJ,GAAAD,GAAAmC,GAAA1F,EAAAuD,GAAAxJ,OAAAC,eAAAgG,EAAA,aAAAoF,UAAA,IAAApF,EAAA,IAAAA,EAAAwD,EAAAD,EAoYKoJ,EApSD4M,EAvBAR,EAlBAH,CA+UoC,CAnXf,GCMlB,SAAS4D,GAAsB9F,GAA+C,IAAA2C,EAAAoD,EACjF,OAAkB,QAAlBpD,EAAO3C,EAAOM,YAAI,IAAAqC,EAAAA,EAAsC,QAAtCoD,EAAK/F,EAAsBS,mBAAW,IAAAsF,OAAA,EAAlCA,EAAoCzF,IAC9D,C,m0EC3BA,IAAAhX,EAAAuD,EAAAC,EAAA,mBAAAhJ,OAAAA,OAAA,GAAAoF,EAAA4D,EAAAC,UAAA,aAAA3J,EAAA0J,EAAA/I,aAAA,yBAAAiJ,EAAAF,EAAA5D,EAAA9F,EAAA4J,GAAA,IAAAC,EAAA/D,GAAAA,EAAAvF,qBAAAuJ,EAAAhE,EAAAgE,EAAAC,EAAA9J,OAAA+J,OAAAH,EAAAtJ,WAAA,OAAA0J,GAAAF,EAAA,mBAAAL,EAAA5D,EAAA9F,GAAA,IAAA4J,EAAAC,EAAAE,EAAA5D,EAAA,EAAA+D,EAAAlK,GAAA,GAAAmK,GAAA,EAAAC,EAAA,CAAAF,EAAA,EAAApE,EAAA,EAAAuE,EAAAnE,EAAAoE,EAAAC,EAAApE,EAAAoE,EAAAC,KAAAtE,EAAA,GAAAqE,EAAA,SAAAd,EAAAC,GAAA,OAAAE,EAAAH,EAAAI,EAAA,EAAAE,EAAA7D,EAAAkE,EAAAtE,EAAA4D,EAAAY,CAAA,YAAAC,EAAAb,EAAA5D,GAAA,IAAA+D,EAAAH,EAAAK,EAAAjE,EAAA2D,EAAA,GAAAU,GAAAhE,IAAAnG,GAAAyJ,EAAAS,EAAAvH,OAAA8G,IAAA,KAAAzJ,EAAA4J,EAAAM,EAAAT,GAAAc,EAAAH,EAAAF,EAAAO,EAAAb,EAAA,GAAAF,EAAA,GAAA1J,EAAAyK,IAAA3E,KAAAiE,EAAAH,GAAAC,EAAAD,EAAA,OAAAC,EAAA,MAAAD,EAAA,GAAAA,EAAA,GAAA1D,GAAA0D,EAAA,IAAAW,KAAAvK,EAAA0J,EAAA,GAAAa,EAAAX,EAAA,KAAAC,EAAA,EAAAO,EAAAC,EAAAvE,EAAAsE,EAAAtE,EAAA8D,EAAA,IAAAW,EAAAE,IAAAzK,EAAA0J,EAAA,GAAAE,EAAA,GAAA9D,GAAAA,EAAA2E,KAAAb,EAAA,GAAAF,EAAAE,EAAA,GAAA9D,EAAAsE,EAAAtE,EAAA2E,EAAAZ,EAAA,OAAA7J,GAAA0J,EAAA,SAAAY,EAAA,MAAAH,GAAA,EAAArE,CAAA,iBAAA9F,EAAAkK,EAAAO,GAAA,GAAAtE,EAAA,QAAAuE,UAAA,oCAAAP,GAAA,IAAAD,GAAAK,EAAAL,EAAAO,GAAAZ,EAAAK,EAAAH,EAAAU,GAAAhB,EAAAI,EAAA,EAAA3D,EAAA6D,KAAAI,GAAA,CAAAP,IAAAC,EAAAA,EAAA,GAAAA,EAAA,IAAAO,EAAAtE,GAAA,GAAAyE,EAAAV,EAAAE,IAAAK,EAAAtE,EAAAiE,EAAAK,EAAAC,EAAAN,GAAA,OAAA5D,EAAA,EAAAyD,EAAA,IAAAC,IAAA7J,EAAA,QAAAyJ,EAAAG,EAAA5J,GAAA,MAAAyJ,EAAAA,EAAAhJ,KAAAmJ,EAAAG,IAAA,MAAAW,UAAA,wCAAAjB,EAAA1D,KAAA,OAAA0D,EAAAM,EAAAN,EAAA7I,MAAAiJ,EAAA,IAAAA,EAAA,YAAAA,IAAAJ,EAAAG,EAAA,SAAAH,EAAAhJ,KAAAmJ,GAAAC,EAAA,IAAAE,EAAAW,UAAA,oCAAA1K,EAAA,YAAA6J,EAAA,GAAAD,EAAA1D,CAAA,UAAAuD,GAAAU,EAAAC,EAAAtE,EAAA,GAAAiE,EAAAL,EAAAjJ,KAAAqF,EAAAsE,MAAAE,EAAA,YAAAb,GAAAG,EAAA1D,EAAA2D,EAAA,EAAAE,EAAAN,CAAA,SAAAtD,EAAA,UAAAvF,MAAA6I,EAAA1D,KAAAoE,EAAA,GAAAT,EAAA1J,EAAA4J,IAAA,GAAAG,CAAA,KAAAO,EAAA,YAAAR,IAAA,UAAAa,IAAA,UAAAC,IAAA,CAAAnB,EAAAxJ,OAAA4K,eAAA,IAAAhB,EAAA,GAAA/D,GAAA2D,EAAAA,EAAA,GAAA3D,QAAAmE,GAAAR,EAAA,GAAA3D,EAAA,yBAAA2D,GAAAM,EAAAa,EAAArK,UAAAuJ,EAAAvJ,UAAAN,OAAA+J,OAAAH,GAAA,SAAA1D,EAAAD,GAAA,OAAAjG,OAAA6K,eAAA7K,OAAA6K,eAAA5E,EAAA0E,IAAA1E,EAAA6E,UAAAH,EAAAX,GAAA/D,EAAAlG,EAAA,sBAAAkG,EAAA3F,UAAAN,OAAA+J,OAAAD,GAAA7D,CAAA,QAAAyE,EAAApK,UAAAqK,EAAAX,GAAAF,EAAA,cAAAa,GAAAX,GAAAW,EAAA,cAAAD,GAAAA,EAAAK,YAAA,oBAAAf,GAAAW,EAAA5K,EAAA,qBAAAiK,GAAAF,GAAAE,GAAAF,EAAA/J,EAAA,aAAAiK,GAAAF,EAAAjE,EAAA,yBAAAmE,GAAAF,EAAA,oDAAAkB,GAAA,kBAAAC,EAAAtB,EAAAuB,EAAAhF,EAAA,cAAA8D,GAAA/D,EAAAwD,EAAA5D,EAAA2D,GAAA,IAAAG,EAAA3J,OAAAC,eAAA,IAAA0J,EAAA,gBAAA1D,GAAA0D,EAAA,EAAAK,GAAA,SAAA/D,EAAAwD,EAAA5D,EAAA2D,GAAA,SAAAzJ,EAAA0J,EAAA5D,GAAAmE,GAAA/D,EAAAwD,EAAA,SAAAxD,GAAA,YAAAkF,QAAA1B,EAAA5D,EAAAI,EAAA,GAAAwD,EAAAE,EAAAA,EAAA1D,EAAAwD,EAAA,CAAA9I,MAAAkF,EAAA3F,YAAAsJ,EAAA4B,cAAA5B,EAAA6B,UAAA7B,IAAAvD,EAAAwD,GAAA5D,GAAA9F,EAAA,UAAAA,EAAA,WAAAA,EAAA,cAAAiK,GAAA/D,EAAAwD,EAAA5D,EAAA2D,EAAA,UAAA8B,GAAAzF,EAAA2D,EAAAvD,EAAAwD,EAAA1J,EAAAsK,EAAAT,GAAA,QAAAD,EAAA9D,EAAAwE,GAAAT,GAAAE,EAAAH,EAAAhJ,KAAA,OAAAkF,GAAA,YAAAI,EAAAJ,EAAA,CAAA8D,EAAA7D,KAAA0D,EAAAM,GAAAtG,QAAA0F,QAAAY,GAAAyB,KAAA9B,EAAA1J,EAAA,UAAAyL,GAAA3F,GAAA,sBAAA2D,EAAA,KAAAvD,EAAAxD,UAAA,WAAAe,QAAA,SAAAiG,EAAA1J,GAAA,IAAAsK,EAAAxE,EAAAnB,MAAA8E,EAAAvD,GAAA,SAAAwF,EAAA5F,GAAAyF,GAAAjB,EAAAZ,EAAA1J,EAAA0L,EAAAC,EAAA,OAAA7F,EAAA,UAAA6F,EAAA7F,GAAAyF,GAAAjB,EAAAZ,EAAA1J,EAAA0L,EAAAC,EAAA,QAAA7F,EAAA,CAAA4F,OAAA,eAAAE,GAAA1F,EAAAwD,GAAA,QAAAD,EAAA,EAAAA,EAAAC,EAAA/G,OAAA8G,IAAA,KAAAzJ,EAAA0J,EAAAD,GAAAzJ,EAAAG,WAAAH,EAAAG,aAAA,EAAAH,EAAAqL,cAAA,YAAArL,IAAAA,EAAAsL,UAAA,GAAArL,OAAAC,eAAAgG,EAAA2F,GAAA7L,EAAAD,KAAAC,EAAA,WAAAe,GAAAmF,EAAAwD,EAAAD,GAAA,OAAAC,EAAAmC,GAAAnC,MAAAxD,EAAAjG,OAAAC,eAAAgG,EAAAwD,EAAA,CAAA9I,MAAA6I,EAAAtJ,YAAA,EAAAkL,cAAA,EAAAC,UAAA,IAAApF,EAAAwD,GAAAD,EAAAvD,CAAA,UAAA2F,GAAApC,GAAA,IAAAG,EAAA,SAAAH,EAAAC,GAAA,aAAAqC,GAAAtC,KAAAA,EAAA,OAAAA,EAAA,IAAAvD,EAAAuD,EAAA/I,OAAAgM,aAAA,YAAAxG,EAAA,KAAA0D,EAAA1D,EAAAzF,KAAAgJ,EAAAC,GAAA,wBAAAqC,GAAAnC,GAAA,OAAAA,EAAA,UAAAc,UAAA,kEAAAhB,EAAAiD,OAAAC,QAAAnD,EAAA,CAAAoD,CAAApD,EAAA,0BAAAsC,GAAAnC,GAAAA,EAAAA,EAAA,GA4BO,IAAMgZ,GAAa,WA+BtB,OA3DJ1c,EAsCI,SAAA0c,EAA2BzV,GAA2B,IAAA3K,EAAA,MAtC1D,SAAA8H,EAAAxE,GAAA,KAAAwE,aAAAxE,GAAA,UAAA4E,UAAA,qCAsC0D5J,CAAA,KAAA8hB,GAAA7hB,GAAA,YAT9B,IAAI+G,EAAyC,OAAK/G,GAAA,aACjD,IAAI0D,GAAoE1D,GAAA,aACxE,IAAI0D,GAA2E1D,GAAA,uBACrE,IAAI0D,GAAmC1D,GAAA,eAC/C,IAAI0D,GAA2E1D,GAAA,uBACvE,IAAIkI,GAAclI,GAAA,qBACpB,IAAIqI,GAAiBrI,GAAA,uBACnB,IAAIqI,GAAiB,KAE7B+D,QAAAA,EACvBvN,KAAKuN,QAAQI,OAAO5F,GAAG,UAAW,SAAA6F,GAAE,OAAIhL,EAAKqgB,cAAcrV,EAAG,GAC9D5N,KAAKuN,QAAQI,OAAO5F,GAAG,cAAe,SAAA6F,GAAE,OAAIhL,EAAKyV,kBAAkBzK,EAAG,GACtE5N,KAAKuN,QAAQI,OAAO5F,GAAG,cAAe,SAAA6F,GAAE,OAAIhL,EAAK4T,kBAAkB5I,EAAG,GACtE5N,KAAKuN,QAAQI,OAAO5F,GAAG,eAAgB,SAAA6F,GAAE,OAAIhL,EAAKoc,mBAAmBpR,EAAG,GACxE5N,KAAKuN,QAAQI,OAAO5F,GAAG,eAAgB,SAAA6F,GAAE,OAAIhL,EAAKsgB,mBAAmBtV,EAAG,GACxE5N,KAAKuN,QAAQI,OAAO5F,GAAG,cAAe,SAAA6F,GAAE,OAAIhL,EAAKugB,kBAAkBvV,EAAG,GACtE5N,KAAKuN,QAAQI,OAAO5F,GAAG,YAAa,SAAA6F,GAAE,OAAIhL,EAAKoc,mBAAmBpR,EAAG,GACrE5N,KAAKuN,QAAQI,OAAO5F,GAAG,oBAAqB,SAAA6F,GAAE,OAAIhL,EAAKwgB,wBAAwBxV,EAAG,GAClF5N,KAAKuN,QAAQI,OAAO5F,GAAG,kBAAmB,SAAA6F,GAAE,OAAIhL,EAAKkc,sBAAsBlR,EAAG,GAC9E5N,KAAKuN,QAAQI,OAAO5F,GAAG,eAAgB,SAAA6F,GAAE,OAAIhL,EAAKygB,mBAAmBzV,EAAG,GACxE5N,KAAKuN,QAAQI,OAAO5F,GAAG,aAAc,SAAA6F,GAAE,OAAIhL,EAAK0gB,iBAAiB1V,EAAG,GACpE5N,KAAKuN,QAAQI,OAAO5F,GAAG,qBAAsB,SAAA6F,GAAE,OAAIhL,EAAK2gB,yBAAyB3V,EAAG,GACpF5N,KAAKuN,QAAQI,OAAO5F,GAAG,qBAAsB,SAAA6F,GAAE,OAAIhL,EAAKmc,yBAAyBnR,EAAG,GACpF5N,KAAKuN,QAAQI,OAAO5F,GAAG,cAAe,SAAA6F,GAAE,OAAIhL,EAAKqc,kBAAkBrR,EAAG,GACtE5N,KAAKuN,QAAQI,OAAO5F,GAAG,UAAW,SAAA6F,GAAE,OAAIhL,EAAK4gB,cAAc5V,EAAG,GAC9D5N,KAAKuN,QAAQI,OAAO5F,GAAG,cAAe,SAAA6F,GAAE,OAAIhL,EAAK6gB,kBAAkB7V,EAAG,GACtE5N,KAAKuN,QAAQI,OAAO5F,GAAG,cAAe,SAAA6F,GAAE,OAAIhL,EAAK8gB,kBAAkB9V,EAAG,GACtE5N,KAAKuN,QAAQI,OAAO5F,GAAG,UAAW,SAAA6F,GAAE,OAAIhL,EAAKuV,cAAcvK,EAAG,EAClE,EAzDJ9D,EA2DI,EAAA3J,IAAA,MAAAa,MAAA,eAAA4e,EAAA/T,GAAAR,KAAAE,EAGA,SAAA2I,IAAA,OAAA7I,KAAAC,EAAA,SAAA8I,GAAA,cAAAA,EAAAlO,GAAA,cAAAkO,EAAAlO,EAAA,EACUlG,KAAKwY,gBAAgBlP,QAAO,cAAA8K,EAAA1J,EAAA,EAC3B1K,KAAKuf,MAAI,EAAArL,EAAA,SAFJ,OAGf,WAHe,OAAA0L,EAAA7a,MAAC,KAADjC,UAAA,EAHhB,IAQA,CAAA3C,IAAA,WAAAa,OAAA2iB,EAAA9X,GAAAR,KAAAE,EAGA,SAAAgJ,EAAsBgF,GAAe,OAAAlO,KAAAC,EAAA,SAAAmJ,GAAA,cAAAA,EAAAvO,GAAA,cAAAuO,EAAAvO,EAAA,EAC3BlG,KAAKwY,gBAAgBlP,QAAO,cAAAmL,EAAA/J,EAAA,EAC3B1K,KAAK0d,MAAMld,IAAI+Y,IAAQ,EAAAhF,EAAA,SACjC,SAHoBgB,GAAA,OAAAoO,EAAA5e,MAAC,KAADjC,UAAA,IAKrB,CAAA3C,IAAA,WAAAa,OAAA4iB,EAAA/X,GAAAR,KAAAE,EAGA,SAAA6J,EAAsBmE,GAAe,IAAA3V,EAAA,YAAAyH,KAAAC,EAAA,SAAA+J,GAAA,cAAAA,EAAAnP,GAAA,OAShC,OARGlG,KAAK6jB,cAAc7J,SAAST,IAC5BvZ,KAAK6jB,cAAc5J,mBAAkBpO,GAAAR,KAAAE,EAAC,SAAAwJ,IAAA,IAAAlP,EAAA,OAAAwF,KAAAC,EAAA,SAAA0J,GAAA,cAAAA,EAAA9O,GAAA,cAAA8O,EAAA9O,EAAA,EACbtC,EAAK2J,QAAQI,OAAOqC,KAAK,gBAAiB,CAAC5K,GAAImU,IAAS,OAAjE,KAAN1T,EAAMmP,EAAAvK,GACDtG,MAAO,CAAF6Q,EAAA9O,EAAA,cACNL,EAAO1B,MAAK,OAEtBP,EAAK0f,iBAAiBzd,EAAOtC,MAAM,cAAAyR,EAAAtK,EAAA,KAAAqK,EAAA,IACpCwE,GACNlE,EAAAnP,EAAA,EAEKlG,KAAK6jB,cAAcrjB,IAAI+Y,GAAQ,cAAAlE,EAAA3K,EAAA,EAC9B1K,KAAKwR,MAAMhR,IAAI+Y,IAAQ,EAAAnE,EAAA,SACjC,SAboB9G,GAAA,OAAAsV,EAAA7e,MAAC,KAADjC,UAAA,IAerB,CAAA3C,IAAA,aAAAa,OAAAke,EAAArT,GAAAR,KAAAE,EAGA,SAAAyC,EAAwBuL,GAAe,IAAAnS,EAAA,YAAAiE,KAAAC,EAAA,SAAA4C,GAAA,cAAAA,EAAAhI,GAAA,OASlC,OARGlG,KAAKmf,gBAAgBnF,SAAST,IAC9BvZ,KAAKmf,gBAAgBlF,mBAAkBpO,GAAAR,KAAAE,EAAC,SAAAkK,IAAA,IAAA5P,EAAA,OAAAwF,KAAAC,EAAA,SAAAqK,GAAA,cAAAA,EAAAzP,GAAA,cAAAyP,EAAAzP,EAAA,EACfkB,EAAKmG,QAAQI,OAAOqC,KAAK,kBAAmB,CAAC5K,GAAImU,IAAS,OAAnE,KAAN1T,EAAM8P,EAAAlL,GACDtG,MAAO,CAAFwR,EAAAzP,EAAA,cACNL,EAAO1B,MAAK,OAEtBiD,EAAKic,mBAAmBxd,EAAOtC,MAAM,cAAAoS,EAAAjL,EAAA,KAAA+K,EAAA,IACtC8D,GACNrL,EAAAhI,EAAA,EAEKlG,KAAKmf,gBAAgB3e,IAAI+Y,GAAQ,cAAArL,EAAAxD,EAAA,EAChC1K,KAAKof,QAAQ5e,IAAI+Y,IAAQ,EAAAvL,EAAA,SACnC,SAbsBqB,GAAA,OAAA6P,EAAAna,MAAC,KAADjC,UAAA,IAevB,CAAA3C,IAAA,QAAAa,OAAAqe,EAAAxT,GAAAR,KAAAE,EAGA,SAAAiD,EAAmB+K,GAAe,IAAA+F,EAAAF,EAAA,OAAA/T,KAAAC,EAAA,SAAAqD,GAAA,cAAAA,EAAAzI,GAAA,cAAAyI,EAAAzI,EAAA,EACRlG,KAAKuN,QAAQ6P,QAAO,OAAI,GAAxCkC,EAAM3Q,EAAAlE,EAAgCrF,GAEtCpF,KAAKuf,KAAKtb,IAAIsV,GAAU,CAAF5K,EAAAzI,EAAA,eAAAyI,EAAAjE,EAAA,OAEjB5I,GAAS,cAAA6M,EAAAzI,EAAA,EAGElG,KAAKwf,WAAWjG,GAAQ,OAAjC,OAAP6F,EAAOzQ,EAAAlE,EAAAkE,EAAAjE,EAAA,EACN0U,aAAO,EAAPA,EAASta,MAAM2a,KAAK,SAAAzC,GAAM,OAAIA,EAAOM,KAAKlY,KAAOka,CAAM,IAAC,EAAA9Q,EAAA,SAClE,SAViBmC,GAAA,OAAA0O,EAAAta,MAAC,KAADjC,UAAA,KAAA3C,IAAA,gBAAAa,MAYlB,SAAsB4M,GAClB,IAAM2M,EAAava,KAAK0d,MAAMld,IAAIoN,EAAG2L,SACrCgB,EAAWjY,IAAIsL,EAAGkW,MAClB9jB,KAAKuf,KAAK/e,IAAIoN,EAAG2L,SAASmE,MAAQnD,EAAWzV,KACjD,GAAC,CAAA3E,IAAA,gBAAAa,MAED,SAAsB4M,GAAmB,IAAAmW,EACX,QAA1BA,EAAA/jB,KAAKwR,MAAMhR,IAAIoN,EAAG2L,gBAAQ,IAAAwK,GAA1BA,EAA4BzhB,IAAIsL,EAAGoW,SACnChkB,KAAKikB,gBAAgB3hB,IAAI,CAACsL,EAAGoW,QAAQ5e,GAAIwI,EAAG2L,SAChD,GAAC,CAAApZ,IAAA,oBAAAa,MAED,SAA0B4M,GACtB,GAAIA,EAAG2I,KAAKgD,SAAWvZ,KAAKwR,MAAMvN,IAAI2J,EAAG2I,KAAKgD,SAAU,CACpD,IAAM/H,EAAQxR,KAAKwR,MAAMhR,IAAIoN,EAAG2I,KAAKgD,SACrC/H,EAAMlP,IAAGkN,GAAAA,GAAC,CAAC,EACJgC,EAAMhR,IAAIoN,EAAG2I,KAAKnR,KAAG,IACxB8e,KAAMtW,EAAG2I,KAAK2N,KACdC,YAAavW,EAAG2I,KAAK4N,cAE7B,CACJ,GAAC,CAAAhkB,IAAA,oBAAAa,OAAAojB,EAAAvY,GAAAR,KAAAE,EAED,SAAAsD,EAAgCjB,GAAe,IAAAyW,EAAA9K,EAAA+K,EAAAC,EAAA,OAAAlZ,KAAAC,EAAA,SAAAwD,GAAA,cAAAA,EAAA5I,GAAA,OAER,GAD7BqT,EAAUvZ,KAAKikB,gBAAgBzjB,IAAIoN,EAAGxI,IAC5CpF,KAAKikB,gBAAe,OAAQrW,EAAGxI,IAEzBmU,EAAS,CAAFzK,EAAA5I,EAAA,eAAA4I,EAAApE,EAAA,UAIP4Z,EAAQtkB,KAAKuf,KAAK/e,IAAI+Y,GACxBgL,GAAe,EAEI,QAAvBF,EAAArkB,KAAKwR,MAAMhR,IAAI+Y,UAAQ,IAAA8K,GAAvBA,EAAA,OAAgCzW,EAAGxI,IAE/Bkf,EAAME,aAAe5W,EAAGxI,KACxBkf,EAAME,WAAa,KACnBD,GAAe,GAGfD,EAAMG,aAAa5R,SAASjF,EAAGxI,MAC/Bkf,EAAMG,aAAeH,EAAMG,aAAapR,OAAO,SAAAhG,GAAM,OAAIA,IAAWO,EAAGxI,EAAE,GACzEmf,GAAe,GAGfA,GACAvkB,KAAKuf,KAAKjd,IAAIgiB,GACjB,cAAAxV,EAAApE,EAAA,KAAAmE,EAAA,SACJ,SA1B8BmE,GAAA,OAAAoR,EAAArf,MAAC,KAADjC,UAAA,KAAA3C,IAAA,oBAAAa,MA4B/B,SAA0B4M,GACtB,IAAM2M,EAAava,KAAK0d,MAAMld,IAAIoN,EAAG2L,SACrCgB,EAAU,OAAQ3M,EAAGxI,IACrBpF,KAAKuf,KAAK/e,IAAIoN,EAAG2L,SAASmE,MAAQnD,EAAWzV,KACjD,GAAC,CAAA3E,IAAA,qBAAAa,MAED,SAA2B4M,GACvB5N,KAAKuf,KAAKjd,IAAIsL,EAAG0W,MACrB,GAAC,CAAAnkB,IAAA,qBAAAa,MAED,SAA2B4M,GAAoC,IAAA8W,EAAAC,EAAAC,EACrDpL,EAA2D,QAApDkL,EAAwB,QAAxBC,EAAG3kB,KAAKwR,MAAMhR,IAAIoN,EAAGxI,WAAG,IAAAuf,OAAA,EAArBA,EAAuB7f,MAAM5C,IAAI,SAAAiD,GAAI,OAAIA,EAAKC,EAAE,UAAC,IAAAsf,EAAAA,EAAI,IACrEE,EAAA5kB,KAAKikB,iBAAe,OAAOlf,MAAA6f,EAAA5f,GAAIwU,IAE/BxZ,KAAK0d,MAAK,OAAQ9P,EAAGxI,IACrBpF,KAAKof,QAAO,OAAQxR,EAAGxI,IACvBpF,KAAKmf,gBAAgBb,OAAO1Q,EAAGxI,IAC/BpF,KAAKwR,MAAK,OAAQ5D,EAAGxI,IACrBpF,KAAK6jB,cAAcvF,OAAO1Q,EAAGxI,IAC7BpF,KAAKuf,KAAI,OAAQ3R,EAAGxI,GACxB,GAAC,CAAAjF,IAAA,oBAAAa,MAED,SAA0B4M,GACtB5N,KAAK6kB,gBAAgBjX,EAAG0W,MAC5B,GAAC,CAAAnkB,IAAA,kBAAAa,MAED,WAAkD,QAAA8jB,EAAAxE,EAAAzd,EAAAC,UAAAC,OAAvB2W,EAAM,IAAAzW,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAANwW,EAAMxW,GAAAJ,UAAAI,IAC7B4hB,EAAA9kB,KAAK0d,OAAMpb,IAAGyC,MAAA+f,EAAA9f,GAAK0U,EAAOxX,IAAI,SAAAoiB,GAAK,MAAI,CACnCA,EAAMlf,GACN,IAAI8C,EAAwC,KAAMoc,EAAM5G,OAC3D,MACD4C,EAAAtgB,KAAKuf,MAAKjd,IAAGyC,MAAAub,EAAI5G,EACrB,GAAC,CAAAvZ,IAAA,0BAAAa,MAED,SAAgC4M,GACxB5N,KAAKof,QAAQnb,IAAI2J,EAAG2L,UACpBvZ,KAAKof,QAAQ5e,IAAIoN,EAAG2L,SAASjX,IAAIsL,EAAGoP,OAE5C,GAAC,CAAA7c,IAAA,wBAAAa,MAED,SAA8B4M,GACtB5N,KAAKof,QAAQnb,IAAI2J,EAAG2L,UACpBvZ,KAAKof,QAAQ5e,IAAIoN,EAAG2L,SAAQ,OAAQ3L,EAAG0R,OAE/C,GAAC,CAAAnf,IAAA,qBAAAa,MAED,SAA2B4M,GAMhB,IAAAsU,EALDliB,KAAKof,QAAQnb,IAAI2J,EAAGxI,KAQtB8c,EAAAliB,KAAKof,QAAQ5e,IAAIoN,EAAGxI,KAAIyY,UAAS9Y,MAAAmd,EAAAld,GAAI4I,EAAGwR,UAPxCpf,KAAKof,QAAQ9c,IAAI,CACbsL,EAAGxI,GACH,IAAI8C,EAAkC,SAAA8U,GAAM,OAAIA,aAAM,EAANA,EAAQM,KAAKlY,EAAE,EAAEwI,EAAGwR,UAOhF,GAAC,CAAAjf,IAAA,mBAAAa,MAED,SAAyB4M,GAAsB,IAGpCmX,EAHoC1c,EAAA,KACrCrI,KAAKwR,MAAMvN,IAAI2J,EAAGxI,KAGpB2f,EAAA/kB,KAAKwR,MAAMhR,IAAIoN,EAAGxI,KAAIyY,UAAS9Y,MAAAggB,EAAA/f,GAAI4I,EAAGoX,YAFtChlB,KAAKwR,MAAMlP,IAAI,CAACsL,EAAGxI,GAAI,IAAI8C,EAAkC,KAAM0F,EAAGoX,aAI1EpX,EAAGoX,UAAUxiB,QAAQ,SAAAwhB,GAAO,OAAI3b,EAAK4b,gBAAgB3hB,IAAI,CAAC0hB,EAAQ5e,GAAIwI,EAAGxI,IAAI,EACjF,GAAC,CAAAjF,IAAA,2BAAAa,OAAAikB,EAAApZ,GAAAR,KAAAE,EAED,SAAAyD,EAAuCpB,GAAsB,IAAA2L,EAAA2L,EAAAF,EAAAG,EAAAC,EAAA,OAAA/Z,KAAAC,EAAA,SAAA2D,GAAA,cAAAA,EAAA/I,GAAA,OAIzD,GAHMqT,EAAUvZ,KAAKikB,gBAAgBzjB,IAAIoN,EAAGoW,QAAQ5e,IAC9C8f,EAAmBllB,KAAK6jB,cAAcrjB,IAAI+Y,IAM5CA,IAAW2L,EAAgB,CAAAjW,EAAA/I,EAAA,eAAA+I,EAAA/I,EAAA,EACrBgf,EAAgB,OAEhBF,EAAYhlB,KAAKwR,MAAMhR,IAAI+Y,GAC3B4L,EAAaH,EAAUxkB,IAAIoN,EAAGoW,QAAQ5e,IAIxCggB,EADAD,EACU3V,GAAAA,GAAA,GAAO2V,GAAevX,EAAGoW,SAEtBpW,EAAGoW,QAGpBgB,EAAU1iB,IAAI8iB,GAAY,cAAAnW,EAAAvE,EAAA,KAAAsE,EAAA,SAEjC,SAvBqCwE,GAAA,OAAAyR,EAAAlgB,MAAC,KAADjC,UAAA,KAAA3C,IAAA,2BAAAa,MAyBtC,SAAiC4M,GAC7B,GAAI5N,KAAKof,QAAQnb,IAAI2J,EAAG2L,SAAU,CAC9B,IAAM6F,EAAUpf,KAAKof,QAAQ5e,IAAIoN,EAAG2L,SAC9ByD,EAASoC,EAAQ5e,IAAIoN,EAAG0R,QAC9BF,EAAQ9c,IAAGkN,GAAAA,GAAC,CAAC,EAAG5B,EAAGoP,QAAM,IAAEM,KAAMN,EAAOM,OAC5C,CACJ,GAAC,CAAAnd,IAAA,oBAAAa,MAED,SAA0B4M,GAAuB,IAAAyX,EACvC3H,EAAQ1d,KAAK0d,MAAMld,IAAIoN,EAAG2L,SAC1B+L,EAAU5H,EAAMld,IAAIoN,EAAGkW,KAAK1e,IAC5BmgB,EAAU3X,EAAGkW,KACb0B,EAAgB,CAACD,GAEnBD,EAAQG,WAAaF,EAAQE,UAC7BD,EAAcnjB,KAAI0C,MAAlBygB,EAAaxgB,GD3RlB,SAAsC0gB,EAAkBJ,EAAeK,GAE1E,IAAMC,EAAaD,EAAYF,SAAWH,EAAQG,SAAY,EACxDI,GAAcD,EACdE,EAAuB,GAiB7B,OAfAJ,EAASljB,QAAQ,SAAAshB,GACTA,EAAK1e,KAAOugB,EAAYvgB,KAIxBwgB,GAAaN,EAAQG,UAAY3B,EAAK2B,WACtC3B,EAAK2B,WACLK,EAAazjB,KAAKyhB,IAElB+B,GAAaF,EAAYF,UAAY3B,EAAK2B,WAC1C3B,EAAK2B,WACLK,EAAazjB,KAAKyhB,IAE1B,GAEOgC,CACX,CCsQmBC,CAA6BrI,EAAM5Y,MAAOwgB,EAASC,MAI9DF,EAAArlB,KAAK0d,MAAMld,IAAIoN,EAAG2L,UAASjX,IAAGyC,MAAAsgB,EAAIG,EACtC,GAAC,CAAArlB,IAAA,gBAAAa,MAED,SAAsB4M,GAAmB,IAAAgU,EAQAlc,EAP/BsgB,EAAgB,IAAI9c,IAAI0E,EAAGO,MAAMuL,OAAOxX,IAAI,SAAAoiB,GAAK,OAAIA,EAAMlf,EAAE,IAI7D6gB,EAAkBjmB,KAAKuf,KAAKza,MAC7BuO,OAAO,SAAAiR,GAAK,OAAM0B,EAAc/hB,IAAIqgB,EAAMlf,GAAG,GAC7ClD,IAAI,SAAAoiB,GAAK,OAAIA,EAAMlf,EAAE,GAAEU,EAAAC,GACNkgB,GAAe,IAArC,IAAAngB,EAAAG,MAAAP,EAAAI,EAAAI,KAAAC,MAAuC,KAA5BoT,EAAO7T,EAAA1E,MACdhB,KAAKgf,mBAAmB,CAAE5Z,GAAImU,GAClC,CAGA,OAAAlT,GAAAP,EAAAQ,EAAAD,EAAA,SAAAP,EAAAS,GAAA,CACAvG,KAAK6jB,cAActI,YACnBvb,KAAKmf,gBAAgB5D,YAGrB,IACmCvU,EADnCC,EAAAlB,GACoB6H,EAAGO,MAAMuL,QAAM,IAAnC,IAAAzS,EAAAhB,MAAAe,EAAAC,EAAAf,KAAAC,MAAqC,KACH+f,EADvB5B,EAAKtd,EAAAhG,MACRhB,KAAK0d,MAAMzZ,IAAIqgB,EAAMlf,KACrB8gB,EAAAlmB,KAAK0d,MAAMld,IAAI8jB,EAAMlf,KAAIyY,UAAS9Y,MAAAmhB,EAAAlhB,GAAIsf,EAAM5G,QAE5C1d,KAAK0d,MAAMpb,IAAI,CACXgiB,EAAMlf,GACN,IAAI8C,EAAwC,KAAMoc,EAAM5G,QAGpE,CAAC,OAAArX,GAAAY,EAAAX,EAAAD,EAAA,SAAAY,EAAAV,GAAA,EAEDqb,EAAA5hB,KAAKuf,MAAKjd,IAAGyC,MAAA6c,EAAA5c,GAAI4I,EAAGO,MAAMuL,SAE1B1Z,KAAKwY,gBAAgBjP,SACzB,GAAC,CAAApJ,IAAA,oBAAAa,MAED,SAA0B4M,GACtB5N,KAAKof,QAAQta,MAAMtC,QAAQ,SAAC4c,GACxB,IAAMpC,EAASoC,EAAQ5e,IAAIoN,EAAG0P,KAAKlY,IAE7B4X,GAKNoC,EAAQ9c,IAAGkN,GAAAA,GAAC,CAAC,EAAGwN,GAAM,IAAEM,KAAM1P,EAAG0P,OACrC,EACJ,IAlVJxT,GAAAkC,GAAA1F,EAAA3F,UAAAmJ,GAAAD,GAAAmC,GAAA1F,EAAAuD,GAAAxJ,OAAAC,eAAAgG,EAAA,aAAAoF,UAAA,IAAApF,EAAA,IAAAA,EAAAwD,EAAAD,EAkPKob,EAhGAb,EAnCD/E,EAlBAH,EAlBA0E,EARAD,CA+QC,CAtTqB,G,4hCC7BnB,IAAKwC,GAAK,SAALA,GAAK,OAALA,EAAAA,EAAK,mBAALA,EAAAA,EAAK,iBAALA,EAAAA,EAAK,eAALA,EAAAA,EAAK,iBAALA,CAAK,MAOJC,GAAoBnhB,GAAA,SAAAmhB,IAAAllB,GAAA,KAAAklB,GAAAjlB,GAAA,qBAAAA,GAAA,0BAKpBklB,GAAW,kBAAAphB,GAAA,SAAAohB,IAAAnlB,GAAA,KAAAmlB,EAAA,SAAAlmB,IAAA,WAAAa,MAwBpB,WACI,OAAOX,OAAOyH,KAAK9H,KAAKuf,KAC5B,GAAC,CAAApf,IAAA,YAAAa,MAED,SAAwBkjB,GACpB,OAAOlkB,KAAKuf,KAAK2E,EACrB,GAAC,CAAA/jB,IAAA,sBAAAa,MAED,SAAkCslB,EAAwCC,GAGtE,IAFYvmB,KAAKwmB,UAAUF,GAGvB,MAAM,IAAIlW,MAAM,4BAADhN,OAA6BkjB,IAGhD,OAAOC,GAASvmB,KAAKwmB,UAAUF,GAAgBG,QACnD,IAAC,CAxCmB,G,o5ECXxB,IAAAngB,EAAAuD,EAAAC,EAAA,mBAAAhJ,OAAAA,OAAA,GAAAoF,EAAA4D,EAAAC,UAAA,aAAA3J,EAAA0J,EAAA/I,aAAA,yBAAAiJ,EAAAF,EAAA5D,EAAA9F,EAAA4J,GAAA,IAAAC,EAAA/D,GAAAA,EAAAvF,qBAAAuJ,EAAAhE,EAAAgE,EAAAC,EAAA9J,OAAA+J,OAAAH,EAAAtJ,WAAA,OAAA0J,GAAAF,EAAA,mBAAAL,EAAA5D,EAAA9F,GAAA,IAAA4J,EAAAC,EAAAE,EAAA5D,EAAA,EAAA+D,EAAAlK,GAAA,GAAAmK,GAAA,EAAAC,EAAA,CAAAF,EAAA,EAAApE,EAAA,EAAAuE,EAAAnE,EAAAoE,EAAAC,EAAApE,EAAAoE,EAAAC,KAAAtE,EAAA,GAAAqE,EAAA,SAAAd,EAAAC,GAAA,OAAAE,EAAAH,EAAAI,EAAA,EAAAE,EAAA7D,EAAAkE,EAAAtE,EAAA4D,EAAAY,CAAA,YAAAC,EAAAb,EAAA5D,GAAA,IAAA+D,EAAAH,EAAAK,EAAAjE,EAAA2D,EAAA,GAAAU,GAAAhE,IAAAnG,GAAAyJ,EAAAS,EAAAvH,OAAA8G,IAAA,KAAAzJ,EAAA4J,EAAAM,EAAAT,GAAAc,EAAAH,EAAAF,EAAAO,EAAAb,EAAA,GAAAF,EAAA,GAAA1J,EAAAyK,IAAA3E,KAAAiE,EAAAH,GAAAC,EAAAD,EAAA,OAAAC,EAAA,MAAAD,EAAA,GAAAA,EAAA,GAAA1D,GAAA0D,EAAA,IAAAW,KAAAvK,EAAA0J,EAAA,GAAAa,EAAAX,EAAA,KAAAC,EAAA,EAAAO,EAAAC,EAAAvE,EAAAsE,EAAAtE,EAAA8D,EAAA,IAAAW,EAAAE,IAAAzK,EAAA0J,EAAA,GAAAE,EAAA,GAAA9D,GAAAA,EAAA2E,KAAAb,EAAA,GAAAF,EAAAE,EAAA,GAAA9D,EAAAsE,EAAAtE,EAAA2E,EAAAZ,EAAA,OAAA7J,GAAA0J,EAAA,SAAAY,EAAA,MAAAH,GAAA,EAAArE,CAAA,iBAAA9F,EAAAkK,EAAAO,GAAA,GAAAtE,EAAA,QAAAuE,UAAA,oCAAAP,GAAA,IAAAD,GAAAK,EAAAL,EAAAO,GAAAZ,EAAAK,EAAAH,EAAAU,GAAAhB,EAAAI,EAAA,EAAA3D,EAAA6D,KAAAI,GAAA,CAAAP,IAAAC,EAAAA,EAAA,GAAAA,EAAA,IAAAO,EAAAtE,GAAA,GAAAyE,EAAAV,EAAAE,IAAAK,EAAAtE,EAAAiE,EAAAK,EAAAC,EAAAN,GAAA,OAAA5D,EAAA,EAAAyD,EAAA,IAAAC,IAAA7J,EAAA,QAAAyJ,EAAAG,EAAA5J,GAAA,MAAAyJ,EAAAA,EAAAhJ,KAAAmJ,EAAAG,IAAA,MAAAW,UAAA,wCAAAjB,EAAA1D,KAAA,OAAA0D,EAAAM,EAAAN,EAAA7I,MAAAiJ,EAAA,IAAAA,EAAA,YAAAA,IAAAJ,EAAAG,EAAA,SAAAH,EAAAhJ,KAAAmJ,GAAAC,EAAA,IAAAE,EAAAW,UAAA,oCAAA1K,EAAA,YAAA6J,EAAA,GAAAD,EAAA1D,CAAA,UAAAuD,GAAAU,EAAAC,EAAAtE,EAAA,GAAAiE,EAAAL,EAAAjJ,KAAAqF,EAAAsE,MAAAE,EAAA,YAAAb,GAAAG,EAAA1D,EAAA2D,EAAA,EAAAE,EAAAN,CAAA,SAAAtD,EAAA,UAAAvF,MAAA6I,EAAA1D,KAAAoE,EAAA,GAAAT,EAAA1J,EAAA4J,IAAA,GAAAG,CAAA,KAAAO,EAAA,YAAAR,IAAA,UAAAa,IAAA,UAAAC,IAAA,CAAAnB,EAAAxJ,OAAA4K,eAAA,IAAAhB,EAAA,GAAA/D,GAAA2D,EAAAA,EAAA,GAAA3D,QAAAmE,GAAAR,EAAA,GAAA3D,EAAA,yBAAA2D,GAAAM,EAAAa,EAAArK,UAAAuJ,EAAAvJ,UAAAN,OAAA+J,OAAAH,GAAA,SAAA1D,EAAAD,GAAA,OAAAjG,OAAA6K,eAAA7K,OAAA6K,eAAA5E,EAAA0E,IAAA1E,EAAA6E,UAAAH,EAAAX,GAAA/D,EAAAlG,EAAA,sBAAAkG,EAAA3F,UAAAN,OAAA+J,OAAAD,GAAA7D,CAAA,QAAAyE,EAAApK,UAAAqK,EAAAX,GAAAF,EAAA,cAAAa,GAAAX,GAAAW,EAAA,cAAAD,GAAAA,EAAAK,YAAA,oBAAAf,GAAAW,EAAA5K,EAAA,qBAAAiK,GAAAF,GAAAE,GAAAF,EAAA/J,EAAA,aAAAiK,GAAAF,EAAAjE,EAAA,yBAAAmE,GAAAF,EAAA,oDAAAkB,GAAA,kBAAAC,EAAAtB,EAAAuB,EAAAhF,EAAA,cAAA8D,GAAA/D,EAAAwD,EAAA5D,EAAA2D,GAAA,IAAAG,EAAA3J,OAAAC,eAAA,IAAA0J,EAAA,gBAAA1D,GAAA0D,EAAA,EAAAK,GAAA,SAAA/D,EAAAwD,EAAA5D,EAAA2D,GAAA,SAAAzJ,EAAA0J,EAAA5D,GAAAmE,GAAA/D,EAAAwD,EAAA,SAAAxD,GAAA,YAAAkF,QAAA1B,EAAA5D,EAAAI,EAAA,GAAAwD,EAAAE,EAAAA,EAAA1D,EAAAwD,EAAA,CAAA9I,MAAAkF,EAAA3F,YAAAsJ,EAAA4B,cAAA5B,EAAA6B,UAAA7B,IAAAvD,EAAAwD,GAAA5D,GAAA9F,EAAA,UAAAA,EAAA,WAAAA,EAAA,cAAAiK,GAAA/D,EAAAwD,EAAA5D,EAAA2D,EAAA,UAAA8B,GAAAzF,EAAA2D,EAAAvD,EAAAwD,EAAA1J,EAAAsK,EAAAT,GAAA,QAAAD,EAAA9D,EAAAwE,GAAAT,GAAAE,EAAAH,EAAAhJ,KAAA,OAAAkF,GAAA,YAAAI,EAAAJ,EAAA,CAAA8D,EAAA7D,KAAA0D,EAAAM,GAAAtG,QAAA0F,QAAAY,GAAAyB,KAAA9B,EAAA1J,EAAA,UAAAyL,GAAA3F,GAAA,sBAAA2D,EAAA,KAAAvD,EAAAxD,UAAA,WAAAe,QAAA,SAAAiG,EAAA1J,GAAA,IAAAsK,EAAAxE,EAAAnB,MAAA8E,EAAAvD,GAAA,SAAAwF,EAAA5F,GAAAyF,GAAAjB,EAAAZ,EAAA1J,EAAA0L,EAAAC,EAAA,OAAA7F,EAAA,UAAA6F,EAAA7F,GAAAyF,GAAAjB,EAAAZ,EAAA1J,EAAA0L,EAAAC,EAAA,QAAA7F,EAAA,CAAA4F,OAAA,eAAAE,GAAA1F,EAAAwD,GAAA,QAAAD,EAAA,EAAAA,EAAAC,EAAA/G,OAAA8G,IAAA,KAAAzJ,EAAA0J,EAAAD,GAAAzJ,EAAAG,WAAAH,EAAAG,aAAA,EAAAH,EAAAqL,cAAA,YAAArL,IAAAA,EAAAsL,UAAA,GAAArL,OAAAC,eAAAgG,EAAA2F,GAAA7L,EAAAD,KAAAC,EAAA,WAAA+C,GAAA0G,EAAAzJ,EAAAkG,GAAA,OAAAlG,EAAA8L,GAAA9L,GAAA,SAAAyJ,EAAAvD,GAAA,GAAAA,IAAA,UAAA6F,GAAA7F,IAAA,mBAAAA,GAAA,OAAAA,EAAA,YAAAA,EAAA,UAAAwE,UAAA,4EAAAxE,GAAA,YAAAA,EAAA,UAAA8F,eAAA,oEAAA9F,CAAA,CAAA+F,CAAAxC,EAAA,CAAAyC,CAAAzC,EAAA0C,KAAAC,QAAAC,UAAArM,EAAAkG,GAAA,GAAA4F,GAAArC,GAAA6C,aAAAtM,EAAA2E,MAAA8E,EAAAvD,GAAA,UAAAiG,KAAA,QAAA1C,GAAA8C,QAAAhM,UAAAiM,QAAA/L,KAAA2L,QAAAC,UAAAE,QAAA,wBAAA9C,GAAA,QAAA0C,GAAA,mBAAA1C,CAAA,cAAAqC,GAAArC,GAAA,OAAAqC,GAAA7L,OAAA6K,eAAA7K,OAAA4K,eAAAL,OAAA,SAAAf,GAAA,OAAAA,EAAAsB,WAAA9K,OAAA4K,eAAApB,EAAA,EAAAqC,GAAArC,EAAA,UAAAgD,GAAAhD,EAAAvD,GAAA,OAAAuG,GAAAxM,OAAA6K,eAAA7K,OAAA6K,eAAAN,OAAA,SAAAf,EAAAvD,GAAA,OAAAuD,EAAAsB,UAAA7E,EAAAuD,CAAA,EAAAgD,GAAAhD,EAAAvD,EAAA,UAAAnF,GAAAmF,EAAAwD,EAAAD,GAAA,OAAAC,EAAAmC,GAAAnC,MAAAxD,EAAAjG,OAAAC,eAAAgG,EAAAwD,EAAA,CAAA9I,MAAA6I,EAAAtJ,YAAA,EAAAkL,cAAA,EAAAC,UAAA,IAAApF,EAAAwD,GAAAD,EAAAvD,CAAA,UAAA2F,GAAApC,GAAA,IAAAG,EAAA,SAAAH,EAAAC,GAAA,aAAAqC,GAAAtC,KAAAA,EAAA,OAAAA,EAAA,IAAAvD,EAAAuD,EAAA/I,OAAAgM,aAAA,YAAAxG,EAAA,KAAA0D,EAAA1D,EAAAzF,KAAAgJ,EAAAC,GAAA,wBAAAqC,GAAAnC,GAAA,OAAAA,EAAA,UAAAc,UAAA,kEAAAhB,EAAAiD,OAAAC,QAAAnD,EAAA,CAAAoD,CAAApD,EAAA,0BAAAsC,GAAAnC,GAAAA,EAAAA,EAAA,GDoDC7I,GAzCYklB,GAAW,OACU,CAC1BK,KAAM,CAAC1lB,MAAO,EAAQylB,SAAUN,GAAMQ,MACtCC,aAAc,CAAC5lB,MAAO,EAAQylB,SAAUN,GAAMU,QAC9CC,YAAa,CAAC9lB,MAAO,EAAQylB,SAAUN,GAAMY,OAC7CC,YAAa,CAAChmB,MAAO,EAAQylB,SAAUN,GAAMY,OAE7CE,aAAc,CAACjmB,MAAO,GAAQylB,SAAUN,GAAMQ,MAC9CO,YAAa,CAAClmB,MAAO,GAAQylB,SAAUN,GAAMgB,OAC7CC,qBAAsB,CAACpmB,MAAO,IAAQylB,SAAUN,GAAMY,OACtDM,kBAAmB,CAACrmB,MAAO,IAAQylB,SAAUN,GAAMQ,MACnDW,eAAgB,CAACtmB,MAAO,IAAQylB,SAAUN,GAAMgB,OAChDI,kBAAmB,CAACvmB,MAAO,KAASylB,SAAUN,GAAMgB,OACpDK,YAAa,CAACxmB,MAAO,KAASylB,SAAUN,GAAMY,OAC9CU,WAAY,CAACzmB,MAAO,KAASylB,SAAUN,GAAMQ,MAC7Ce,gBAAiB,CAAC1mB,MAAO,KAASylB,SAAUN,GAAMY,OAClDY,gBAAiB,CAAC3mB,MAAO,MAASylB,SAAUN,GAAMY,OAClDa,WAAY,CAAC5mB,MAAO,MAASylB,SAAUN,GAAMQ,MAC7CkB,KAAM,CAAC7mB,MAAO,MAASylB,SAAUN,GAAMQ,MACvCmB,cAAe,CAAC9mB,MAAO,GAAK,GAAIylB,SAAUN,GAAMY,OAChDgB,eAAgB,CAAC/mB,MAAO,GAAK,GAAIylB,SAAUN,GAAMQ,MACjDqB,eAAgB,CAAChnB,MAAO,GAAK,GAAIylB,SAAUN,GAAMgB,SCdzD,IAAMc,GAAU,SACZhY,EACAiY,GAAmC,MAClC,CAACjY,EAASsJ,QAAStJ,EAAS5C,OAAQ4C,EAAS3C,QAAS4a,aAAM,EAANA,EAAQ5kB,KAAM4kB,aAAM,EAANA,EAAQ5I,OAAQ4I,aAAM,EAANA,EAAQC,QAAQ9U,OAAO1G,SAASyb,KAAK,IAAI,EAE5HC,GACA,SAACC,GAA8D,OAAaL,GAAQK,EAAWrY,SAAUqY,EAAWJ,OAAO,EAcpHK,GAAkB,SAAA5lB,GAI3B,SAAA4lB,EAA2Bhb,GAA2B,IAAA3K,EAYc,OAtDxE,SAAA8H,EAAAxE,GAAA,KAAAwE,aAAAxE,GAAA,UAAA4E,UAAA,qCA0C0D5J,CAAA,KAAAqnB,GAC1CpnB,GAARyB,EAAAO,GAAA,KAAAolB,GAAQ,aAJkB,IAAI1jB,GAAiD1D,GAAAyB,EAAA,qBAC7C,IAAI4G,GAAiB5G,EAEhC2K,QAAAA,EAEvB3K,EAAK2K,QAAQI,OAAO5F,GAAG,uBAAwB,SAAA6F,GAAE,OAAIhL,EAAK4lB,2BAA2B5a,EAAG,GACxFhL,EAAK2K,QAAQI,OAAO5F,GAAG,8BAA+B,SAAA6F,GAAE,OAAIhL,EAAK4lB,2BAA2B5a,EAAG,GAC/FhL,EAAK2K,QAAQI,OAAO5F,GAAG,eAAgB,SAAA6F,GAAE,OAAIhL,EAAKoc,mBAAmBpR,EAAG,GACxEhL,EAAK2K,QAAQI,OAAO5F,GAAG,YAAa,SAAA6F,GAAE,OAAIhL,EAAKoc,mBAAmBpR,EAAG,GACrEhL,EAAK2K,QAAQI,OAAO5F,GAAG,cAAe,SAAA6F,GAAE,OAAIhL,EAAKyV,kBAAkBzK,EAAG,GACtEhL,EAAK2K,QAAQI,OAAO5F,GAAG,WAAY,SAAA6F,GAAE,OAAIhL,EAAKyV,kBAAkBzK,EAAG,GACnEhL,EAAK2K,QAAQI,OAAO5F,GAAG,eAAgB,SAAA6F,GAAE,OAAIhL,EAAK8T,mBAAmB9I,EAAG,GACxEhL,EAAK2K,QAAQI,OAAO5F,GAAG,cAAe,SAAA6F,GAAE,OAAIhL,EAAK6gB,kBAAkB7V,EAAG,GACtEhL,EAAK2K,QAAQI,OAAO5F,GAAG,qBAAsB,SAAA6F,GAAE,OAAIhL,EAAKmc,yBAAyBnR,EAAG,GACpFhL,EAAK2K,QAAQI,OAAO5F,GAAG,oBAAqB,SAAA6F,GAAE,OAAIhL,EAAKic,wBAAwBjR,EAAG,GAClFhL,EAAK2K,QAAQI,OAAO5F,GAAG,UAAW,SAAA6F,GAAE,OAAIhL,EAAKuV,cAAcvK,EAAG,GAAEhL,CACpE,CAAC,OAvDL,SAAAiH,EAAAvD,GAAA,sBAAAA,GAAA,OAAAA,EAAA,UAAAwE,UAAA,sDAAAjB,EAAAlJ,UAAAN,OAAA+J,OAAA9D,GAAAA,EAAA3F,UAAA,CAAA+L,YAAA,CAAA1L,MAAA6I,EAAA6B,UAAA,EAAAD,cAAA,KAAApL,OAAAC,eAAAuJ,EAAA,aAAA6B,UAAA,IAAApF,GAAAuG,GAAAhD,EAAAvD,EAAA,CAuDKjD,CAAAklB,EAAA5lB,GAvDL2D,EAuDKiiB,EAvDLze,EAuDK,EAAA3J,IAAA,gBAAAa,OAAAynB,EAAA5c,GAAAR,KAAAE,EAED,SAAAgJ,EACItE,EACAiY,GAAkC,IAAA9iB,EAAAxB,EAAA,YAAAyH,KAAAC,EAAA,SAAAmJ,GAAA,cAAAA,EAAAvO,GAAA,OAiBjC,OAfDlG,KAAK0oB,iBAAiBzY,GAEhB7K,EAAK6iB,GAAQhY,EAAUiY,GAEzBloB,KAAK2oB,mBAAmB3O,SAAS5U,IACjCpF,KAAK2oB,mBAAmB1O,mBAAkBpO,GAAAR,KAAAE,EAAC,SAAA2I,IAAA,IAAArO,EAAA,OAAAwF,KAAAC,EAAA,SAAA8I,GAAA,cAAAA,EAAAlO,GAAA,cAAAkO,EAAAlO,EAAA,EAClBtC,EAAK2J,QAAQI,OAAOqC,KACrC,0BACA,CAACC,SAAAA,EAAUiY,OAAAA,IACd,OAHW,KAANriB,EAAMuO,EAAA3J,GAIDtG,MAAO,CAAFiQ,EAAAlO,EAAA,cACNL,EAAO1B,MAAK,OAEtBP,EAAK4kB,2BAA2B3iB,EAAOtC,MAAM,cAAA6Q,EAAA1J,EAAA,KAAAwJ,EAAA,IAC9C9O,GACNqP,EAAAvO,EAAA,EAEKlG,KAAK2oB,mBAAmBnoB,IAAI4E,GAAG,cAAAqP,EAAA/J,EAAA,EAC9B1K,KAAKsoB,WAAW9nB,IAAI4E,IAAG,EAAAmP,EAAA,SACjC,SAvByBgB,EAAAjH,GAAA,OAAAma,EAAA1jB,MAAC,KAADjC,UAAA,KAAA3C,IAAA,QAAAa,OAAA4nB,EAAA/c,GAAAR,KAAAE,EAyB1B,SAAAwJ,EACI8T,EACA5Y,GAAsB,IAAA6Y,EAAAC,EAAA,OAAA1d,KAAAC,EAAA,SAAA0J,GAAA,cAAAA,EAAA9O,GAAA,UAEhB2iB,EAAgB9lB,OAAQ,CAAFiS,EAAA9O,EAAA,cAClB,IAAIkK,MAAM,0CAAyC,cAAA4E,EAAA9O,EAAA,EAG9BlG,KAAKgpB,qBAAqB/Y,GAAS,OAO/D,OAPG6Y,EAAgB9T,EAAAvK,EAChBse,EAAoB,GAE1BF,EAAgBrmB,QAAQ,SAAA0hB,IACd4E,EAAmBzC,GAAYG,UAAUtC,GAAMljB,OACjD+nB,EAAQ1mB,KAAK6hB,EAErB,GAAGlP,EAAAtK,EAAA,EAEI,CACHue,GAAuB,IAAnBF,EAAQhmB,OACZmmB,OAA2B,IAAnBH,EAAQhmB,OAChBomB,OAAQJ,EAAQhmB,OAAS8lB,EAAgB9lB,OACzCgmB,QAAAA,IACH,EAAAhU,EAAA,SACJ,SAvBiB1F,EAAAsB,GAAA,OAAAiY,EAAA7jB,MAAC,KAADjC,UAAA,KAAA3C,IAAA,uBAAAa,OAAAooB,EAAAvd,GAAAR,KAAAE,EAyBlB,SAAA6J,EAAkCnF,GAAsB,IAAAoZ,EAAAC,EAAAC,EAAAC,EAAAC,EAAAlT,EAAA+I,EAAAoK,EAAAC,EAAAlM,EAAAwD,EAAA2I,EAAAngB,EAAAogB,EAAAC,EAAApU,EAAA7D,EAAAC,EAAAC,EAAAC,EAAA+X,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAA9e,KAAAC,EAAA,SAAA+J,GAAA,cAAAA,EAAAnP,GAAA,WACvC+J,EAAS5C,OAAM,CAAAgI,EAAAnP,EAAA,eAAAmP,EAAAnP,EAAA,EAAUlG,KAAKuN,QAAQiE,MAAMhR,MAAK,OAAAkV,EAAAL,EAAA5K,EAAEjK,IAAIyP,EAAS5C,QAAMgI,EAAAnP,EAAA,eAAAwP,EAAI,KAAI,OAO3D,OAP1Ba,EAAIb,EACVzF,EAAW,CACPsJ,QAAyB,QAAlB8P,EAAEpZ,EAASsJ,eAAO,IAAA8P,EAAAA,EAAI9S,aAAI,EAAJA,EAAMgD,QACnClM,OAAQ4C,EAAS5C,OACjBC,QAAS2C,EAAS3C,SAGtBtN,KAAK0oB,iBAAiBzY,GAAUoF,EAAAnP,EAAA,EAEVlG,KAAKuN,QAAQ6P,QAAO,OAAI,OAAxCkC,EAAMjK,EAAA5K,EAAgCrF,GAAEiQ,EAAAnP,EAAA,EACNlG,KAAKoqB,mBAAmBna,GAAS,OAOrD,GAPqDyZ,EAAArU,EAAA5K,EAAAkf,EAAA/kB,GAAA8kB,EAAA,GAAlEjM,EAAWkM,EAAA,GAAE1I,EAAU0I,EAAA,GACxBC,EAAsB,GAAHxmB,OAAA4B,GAA0B,QAA1BskB,EAAQ7L,aAAW,EAAXA,EAAaC,aAAK,IAAA4L,EAAAA,EAAI,IAAEtkB,GAAwB,QAAxBukB,EAAOtI,aAAU,EAAVA,EAAYvD,aAAK,IAAA6L,EAAAA,EAAI,KAC/E9f,EAAiD,CAEnDzJ,KAAKqqB,cAAc,CAAC,EAAG,CAAE/mB,KAAM,OAAQgc,OAAAA,IAAU1T,KAAK,SAAAnB,GAAC,OAAIA,EAAE6d,UAAU,MAC1EzW,EAEG5B,EAASsJ,SAAO,CAAAlE,EAAAnP,EAAA,eAAAmP,EAAAnP,EAAA,EAAWlG,KAAKuN,QAAQmM,OAAOlZ,MAAK,UAAAwR,EAAAwX,EAAAnU,EAAA5K,IAAAsH,EAAA,OAAAC,GAAA,CAAAqD,EAAAnP,EAAA,QAAA6L,OAAA,IAAAyX,EAAA,YAAA1X,EAAAC,GAAA,CAAAsD,EAAAnP,EAAA,QAAA4L,EAAhC0X,EAAmCvlB,IAAIgM,EAASsJ,SAAQ,OAAA1H,EAAAC,EAAA,WAAAD,EAAE,CAAFwD,EAAAnP,EAAA,SACtE2jB,EAA+B,CAACtQ,QAAStJ,EAASsJ,SACxD9P,EAASpH,KAAKrC,KAAKsqB,sBAAsBT,EAAgBD,IACzDngB,EAASpH,KAAKrC,KAAKqqB,cAAcR,EAAgB,CAAEvmB,KAAM,OAAQgc,OAAAA,IAAU1T,KAAK,SAAAnB,GAAC,OAAIA,EAAE6d,UAAU,IAAG,QAWpF,GARhB/R,IACMsT,EAA+B,CAACtQ,QAAStJ,EAASsJ,QAASlM,OAAQ4C,EAAS5C,QAC9Euc,EAAU7mB,QACV0G,EAASpH,KAAKrC,KAAKsqB,sBAAsBT,EAAgBD,IAE7DngB,EAASpH,KAAKrC,KAAKqqB,cAAcR,EAAgB,CAAEvmB,KAAM,OAAQgc,OAAAA,IAAU1T,KAAK,SAAAnB,GAAC,OAAIA,EAAE6d,UAAU,OACpGyB,EAEG9Z,EAAS3C,SAAO,CAAA+H,EAAAnP,EAAA,gBAAAmP,EAAAnP,EAAA,GAAWlG,KAAKuN,QAAQiE,MAAMC,UAAUxB,EAAS5C,QAAO,WAAA6c,EAAAT,EAAApU,EAAA5K,IAAAwf,EAAA,OAAAC,GAAA,CAAA7U,EAAAnP,EAAA,SAAA+jB,OAAA,IAAAR,EAAA,aAAAO,EAAAC,GAAA,CAAA5U,EAAAnP,EAAA,SAAA8jB,EAApDP,EAAuDxlB,IAAIgM,EAAS3C,SAAQ,QAAAyc,EAAAC,EAAA,YAAAD,EAAE,CAAF1U,EAAAnP,EAAA,SAC5F0jB,EAAU7mB,QACV0G,EAASpH,KAAKrC,KAAKsqB,sBAAsBra,EAAU2Z,IAEvDngB,EAASpH,KAAKrC,KAAKqqB,cAAcpa,EAAU,CAAE3M,KAAM,OAAQgc,OAAAA,IAAU1T,KAAK,SAAAnB,GAAC,OAAIA,EAAE6d,UAAU,IAAG,QAGvF,OAHuF6B,EAG3FnqB,KAAIqV,EAAAnP,EAAA,GAAkCrC,QAAQ0mB,IAAI9gB,GAAS,eAAA4L,EAAA3K,EAAA,EAAAyf,EAAtDK,2BAA0B3pB,KAAAspB,EAAA9U,EAAA5K,IAAA,EAAA2K,EAAA,SACzC,SAxCgCpC,GAAA,OAAAoW,EAAArkB,MAAC,KAADjC,UAAA,KAAA3C,IAAA,6BAAAa,MA0CjC,SAAmC4M,GAC/B5N,KAAKsoB,WAAWhmB,IAAI,CAAC+lB,GAAgBza,GAAKA,IAC1C5N,KAAKyH,KAAK,SACd,GAAC,CAAAtH,IAAA,qBAAAa,MAED,SAA2B4M,GAAoC,IAAA6c,EACrDplB,EAAMrF,KAAK0qB,2BAA2BzC,GAAQ,CAAC1O,QAAS3L,EAAGxI,OACjEqlB,EAAAzqB,KAAK2oB,oBAAmBrK,OAAMvZ,MAAA0lB,EAAAzlB,GAAIK,GACtC,GAAC,CAAAlF,IAAA,oBAAAa,OAAAojB,EAAAvY,GAAAR,KAAAE,EAED,SAAAkK,EAAgC7H,GAA0B,IAAA2I,EAAAoU,EAAAtlB,EAAA,OAAAgG,KAAAC,EAAA,SAAAqK,GAAA,cAAAA,EAAAzP,GAAA,cAAAyP,EAAAzP,EAAA,EAClClG,KAAKuN,QAAQiE,MAAMhR,MAAK,QAAtC+V,EAAIZ,EAAAlL,EAAoCjK,IAAIoN,EAAGxI,OAE3CC,EAAMrF,KAAK0qB,2BAA2BzC,GAAQ,CAAC1O,QAAShD,EAAKgD,QAASlM,OAAQkJ,EAAKnR,OACzFulB,EAAA3qB,KAAK2oB,oBAAmBrK,OAAMvZ,MAAA4lB,EAAA3lB,GAAIK,KACrC,cAAAsQ,EAAAjL,EAAA,KAAA+K,EAAA,SACJ,SAN8BjC,GAAA,OAAA4Q,EAAArf,MAAC,KAADjC,UAAA,KAAA3C,IAAA,qBAAAa,MAQ/B,SAA2B4M,GAAwB,IAAAgd,EACzCvlB,EAAMrF,KAAK0qB,2BAA2BzC,GAAQra,EAAGqC,YACvD2a,EAAA5qB,KAAK2oB,oBAAmBrK,OAAMvZ,MAAA6lB,EAAA5lB,GAAIK,GACtC,GAAC,CAAAlF,IAAA,oBAAAa,MAED,SAA0B4M,GAAuB,IAAAid,EACvCxlB,EAAMrF,KAAK0qB,2BAA2BzC,GAAQ,CAAC1O,QAAS3L,EAAG2L,SAAU,CAAEjW,KAAM,OAAQ6kB,OAAQva,EAAGxI,OACtGylB,EAAA7qB,KAAK2oB,oBAAmBrK,OAAMvZ,MAAA8lB,EAAA7lB,GAAIK,GACtC,GAAC,CAAAlF,IAAA,2BAAAa,MAED,SAAiC4M,GAA8B,IAAAkd,EACvDld,EAAG0R,UAA0B,QAApBwL,EAAK9qB,KAAKuN,QAAQoP,UAAE,IAAAmO,OAAA,EAAfA,EAAiB1lB,KAE/BpF,KAAKyH,KAAK,SAElB,GAAC,CAAAtH,IAAA,0BAAAa,MAED,SAAgC4M,GAA6B,IAAAmd,EACrDnd,EAAG0R,UAA0B,QAApByL,EAAK/qB,KAAKuN,QAAQoP,UAAE,IAAAoO,OAAA,EAAfA,EAAiB3lB,KAE/BpF,KAAKyH,KAAK,SAElB,GAEA,CAAAtH,IAAA,6BAAAa,MAGA,SAAmCgqB,GAA0B,IAAA5jB,EAAA,KACnD/B,EAAgB,GAQtB,OAPArF,KAAKsoB,WAAWxjB,MAAMtC,QAAQ,SAAC8lB,GAC3B,IAAMljB,EAAKijB,GAAgBC,GACvBljB,EAAG6W,WAAW+O,KACd3lB,EAAIhD,KAAK+C,GACTgC,EAAKkhB,WAAU,OAAQljB,GAE/B,GACOC,CACX,GAAC,CAAAlF,IAAA,wBAAAa,OAAAiqB,EAAApf,GAAAR,KAAAE,EAED,SAAAyC,EACIiC,EACA2Z,GAAmB,IAAAsB,EAAA7iB,EAAA,YAAAgD,KAAAC,EAAA,SAAA4C,GAAA,cAAAA,EAAAhI,GAAA,cAAAgI,EAAAhI,EAAA,EAEUrC,QAAQ0mB,IAAIX,EAAU1nB,IAC/C,SAAAimB,GAAM,OAAI9f,EAAKgiB,cAAcpa,EAAU,CAAE3M,KAAM,OAAQ6kB,OAAAA,GAAS,IAClE,OAFkB,OAAd+C,EAAchd,EAAAzD,EAAAyD,EAAAxD,EAAA,EAIb1K,KAAKmrB,kCAAkClb,EAASsJ,QAAS2R,IAAe,EAAAld,EAAA,SAClF,SATkCod,EAAAC,GAAA,OAAAJ,EAAAlmB,MAAC,KAADjC,UAAA,KAAA3C,IAAA,oCAAAa,OAAAsqB,EAAAzf,GAAAR,KAAAE,EAWnC,SAAAiD,EACI+K,EACA+O,GAAkC,IAAAiD,EAAAC,EAAA9N,EAAA+N,EAAAC,EAAA,OAAArgB,KAAAC,EAAA,SAAAqD,GAAA,cAAAA,EAAAzI,GAAA,OAER,OAAtBqlB,EAAS,EAAGC,EAAS,EAAC7c,EAAAzI,EAAA,EACNlG,KAAKuN,QAAQmM,OAAOiS,SAASpS,GAAQ,OAkCtD,OAlCGmE,EAAK/O,EAAAlE,EACLghB,EAAmBnD,EAAWsD,KAChC,SAAClhB,EAAGmhB,GAAC,OACDnO,EAAMld,IAAIkK,EAAEwd,OAAOC,QAAQ1C,SAAW/H,EAAMld,IAAIqrB,EAAE3D,OAAOC,QAAQ1C,QAAQ,GAI3EiG,EAAoBpD,EAAWwD,OACjC,SAACC,EAAuBC,GAAkC,IAAAC,EAAAC,EAAAC,EAAAC,EAAA,OACtDjW,KAAKyM,IACDmJ,EACiD,QADpCE,EACgB,QADhBC,EACbF,EAAa1D,WAAW+D,aAAK,IAAAH,OAAA,EAA7BA,EAA+BxoB,SAAS,GAAGX,cAAM,IAAAkpB,EAAAA,EAAI,EACL,QADME,EAC1B,QAD0BC,EACtDJ,EAAa1D,WAAWgE,YAAI,IAAAF,OAAA,EAA5BA,EAA8B1oB,SAAS,GAAGX,cAAM,IAAAopB,EAAAA,EAAI,EACvD,EACL,GAGJV,EAAiBjpB,QAAQ,SAAA+pB,GAKrB,IALuC,IAAAC,EAAAC,EAAAC,EAAAC,EACjCrE,EAAaiE,EAAejE,WAC5BsE,EAAwE,QAA5DJ,EAAkB,QAAlBC,EAAGnE,EAAWgE,YAAI,IAAAG,OAAA,EAAfA,EAAiB/oB,SAAS,GAAG8Y,MAAM,IAAIqQ,UAAUzE,KAAK,WAAG,IAAAoE,EAAAA,EAAI,GAC5EM,EAAyE,QAA7DJ,EAAmB,QAAnBC,EAAGrE,EAAW+D,aAAK,IAAAM,OAAA,EAAhBA,EAAkBjpB,SAAS,GAAG8Y,MAAM,IAAIqQ,UAAUzE,KAAK,WAAG,IAAAsE,EAAAA,EAAI,GAE1E1iB,EAAI,EAAGA,EAAI0hB,EAAmB1hB,IAAK,KAAA+iB,EAAAC,EAClCV,EAAOW,SAAwB,QAAhBF,EAACH,EAAa5iB,UAAE,IAAA+iB,EAAAA,EAAI,KACnCV,EAAQY,SAAwB,QAAhBD,EAACF,EAAa9iB,UAAE,IAAAgjB,EAAAA,EAAI,KAEtCV,IACAd,GAAU,GAAKxhB,GAGfqiB,IACAd,GAAU,GAAKvhB,EAEvB,CACJ,GAAG2E,EAAAjE,EAAA,EAEI,CAAC2hB,MAAOd,EAAQe,KAAMd,IAAO,EAAAhd,EAAA,SACvC,SA1C8C0e,EAAAC,GAAA,OAAA7B,EAAAvmB,MAAC,KAADjC,UAAA,KAAA3C,IAAA,6BAAAa,MA4C/C,SAAmCosB,GAC/B,IAE8C1nB,EAF1CG,EAAS,EAAEC,EAAAC,GAEKqnB,GAA0B,IAA9C,IAAAtnB,EAAAG,MAAAP,EAAAI,EAAAI,KAAAC,MAAgD,KAArCnF,EAAK0E,EAAA1E,MACZ,GAAIA,EAAMqrB,MAAQhG,GAAYG,UAAU,QAAQxlB,MAC5C,OAAOhB,KAAKqtB,qBAGhBxnB,EAAUA,GAAU7E,EAAMsrB,KAAQtrB,EAAMqrB,KAC5C,CAAC,OAAAhmB,GAAAP,EAAAQ,EAAAD,EAAA,SAAAP,EAAAS,GAAA,CAED,OAAOV,CACX,GAAC,CAAA1F,IAAA,qBAAAa,MAED,WACI,IAEyCgG,EAFrCnB,EAAS,EAAEoB,EAAAlB,GAEIsgB,GAAYiH,YAAU,IAAzC,IAAArmB,EAAAhB,MAAAe,EAAAC,EAAAf,KAAAC,MAA2C,KAAhC+d,EAAIld,EAAAhG,MACX6E,GAAUwgB,GAAYG,UAAUtC,GAAMljB,KAC1C,CAAC,OAAAqF,GAAAY,EAAAX,EAAAD,EAAA,SAAAY,EAAAV,GAAA,CAED,OAAOV,CACX,GAAC,CAAA1F,IAAA,qBAAAa,OAAAusB,EAAA1hB,GAAAR,KAAAE,EAED,SAAAsD,EAAiCoB,GAAsB,IAAAud,EAAAC,EAAAC,EAAAnH,EAAA,OAAAlb,KAAAC,EAAA,SAAAwD,GAAA,cAAAA,EAAA5I,GAAA,cAAA4I,EAAA5I,EAAA,EAC7BrC,QAAQ0mB,IAAI,CAC9Bta,EAASsJ,QAAUvZ,KAAKuN,QAAQmM,OAAO0D,MAAMnN,EAASsJ,SAAW,KACjEtJ,EAAS5C,OAASrN,KAAKuN,QAAQiE,MAAM4L,MAAMnN,EAAS5C,QAAU,OAChE,OAG8C,GAN1CmgB,EAAO1e,EAAArE,EAKPgjB,EAAYxd,EAASsJ,UAAaiU,EAAQ,GAC1CE,EAAWzd,EAAS5C,SAAYmgB,EAAQ,IAE1CC,IAAaC,EAAQ,CAAA5e,EAAA5I,EAAA,QACgE,MAA/EqgB,EAAQkH,EAAY,UAAHrqB,OAAa6M,EAASsJ,QAAO,cAAAnW,OAAe6M,EAAS5C,OAAM,KAC5E,IAAI+C,MAAM,6CAADhN,OAA8CmjB,EAAK,sCAAoC,cAAAzX,EAAApE,EAAA,EAGnG8iB,GAAO,EAAA3e,EAAA,SACjB,SAf+B8e,GAAA,OAAAJ,EAAAxoB,MAAC,KAADjC,UAAA,KAAA3C,IAAA,mBAAAa,MAiBhC,SAAyBiP,GACrB,GAAIA,EAAS3C,UAAa2C,EAAS5C,OAC/B,MAAM,IAAI+C,MAAM,gCAExB,GAAC,CAAAjQ,IAAA,gBAAAa,MAED,SAAsB4M,GAKlB5N,KAAK2oB,mBAAmBpN,YACxBvb,KAAKyH,KAAK,SACd,IA3TJqC,GAAAkC,GAAA1F,EAAA3F,UAAAmJ,GAAAD,GAAAmC,GAAA1F,EAAAuD,GAAAxJ,OAAAC,eAAAgG,EAAA,aAAAoF,UAAA,IAAApF,EAAA,IAAAA,EAAAwD,EAAAD,EA2RK0jB,EA7EkCjC,EAFlCL,EA/CA7G,EA3EiBgF,EAzBQR,EAFzBH,CAoQA,CArR0B,CAASxnB,G,4nCCtCxC,IAAAqF,EAAAuD,EAAAC,EAAA,mBAAAhJ,OAAAA,OAAA,GAAAoF,EAAA4D,EAAAC,UAAA,aAAA3J,EAAA0J,EAAA/I,aAAA,yBAAAiJ,EAAAF,EAAA5D,EAAA9F,EAAA4J,GAAA,IAAAC,EAAA/D,GAAAA,EAAAvF,qBAAAuJ,EAAAhE,EAAAgE,EAAAC,EAAA9J,OAAA+J,OAAAH,EAAAtJ,WAAA,OAAA0J,GAAAF,EAAA,mBAAAL,EAAA5D,EAAA9F,GAAA,IAAA4J,EAAAC,EAAAE,EAAA5D,EAAA,EAAA+D,EAAAlK,GAAA,GAAAmK,GAAA,EAAAC,EAAA,CAAAF,EAAA,EAAApE,EAAA,EAAAuE,EAAAnE,EAAAoE,EAAAC,EAAApE,EAAAoE,EAAAC,KAAAtE,EAAA,GAAAqE,EAAA,SAAAd,EAAAC,GAAA,OAAAE,EAAAH,EAAAI,EAAA,EAAAE,EAAA7D,EAAAkE,EAAAtE,EAAA4D,EAAAY,CAAA,YAAAC,EAAAb,EAAA5D,GAAA,IAAA+D,EAAAH,EAAAK,EAAAjE,EAAA2D,EAAA,GAAAU,GAAAhE,IAAAnG,GAAAyJ,EAAAS,EAAAvH,OAAA8G,IAAA,KAAAzJ,EAAA4J,EAAAM,EAAAT,GAAAc,EAAAH,EAAAF,EAAAO,EAAAb,EAAA,GAAAF,EAAA,GAAA1J,EAAAyK,IAAA3E,KAAAiE,EAAAH,GAAAC,EAAAD,EAAA,OAAAC,EAAA,MAAAD,EAAA,GAAAA,EAAA,GAAA1D,GAAA0D,EAAA,IAAAW,KAAAvK,EAAA0J,EAAA,GAAAa,EAAAX,EAAA,KAAAC,EAAA,EAAAO,EAAAC,EAAAvE,EAAAsE,EAAAtE,EAAA8D,EAAA,IAAAW,EAAAE,IAAAzK,EAAA0J,EAAA,GAAAE,EAAA,GAAA9D,GAAAA,EAAA2E,KAAAb,EAAA,GAAAF,EAAAE,EAAA,GAAA9D,EAAAsE,EAAAtE,EAAA2E,EAAAZ,EAAA,OAAA7J,GAAA0J,EAAA,SAAAY,EAAA,MAAAH,GAAA,EAAArE,CAAA,iBAAA9F,EAAAkK,EAAAO,GAAA,GAAAtE,EAAA,QAAAuE,UAAA,oCAAAP,GAAA,IAAAD,GAAAK,EAAAL,EAAAO,GAAAZ,EAAAK,EAAAH,EAAAU,GAAAhB,EAAAI,EAAA,EAAA3D,EAAA6D,KAAAI,GAAA,CAAAP,IAAAC,EAAAA,EAAA,GAAAA,EAAA,IAAAO,EAAAtE,GAAA,GAAAyE,EAAAV,EAAAE,IAAAK,EAAAtE,EAAAiE,EAAAK,EAAAC,EAAAN,GAAA,OAAA5D,EAAA,EAAAyD,EAAA,IAAAC,IAAA7J,EAAA,QAAAyJ,EAAAG,EAAA5J,GAAA,MAAAyJ,EAAAA,EAAAhJ,KAAAmJ,EAAAG,IAAA,MAAAW,UAAA,wCAAAjB,EAAA1D,KAAA,OAAA0D,EAAAM,EAAAN,EAAA7I,MAAAiJ,EAAA,IAAAA,EAAA,YAAAA,IAAAJ,EAAAG,EAAA,SAAAH,EAAAhJ,KAAAmJ,GAAAC,EAAA,IAAAE,EAAAW,UAAA,oCAAA1K,EAAA,YAAA6J,EAAA,GAAAD,EAAA1D,CAAA,UAAAuD,GAAAU,EAAAC,EAAAtE,EAAA,GAAAiE,EAAAL,EAAAjJ,KAAAqF,EAAAsE,MAAAE,EAAA,YAAAb,GAAAG,EAAA1D,EAAA2D,EAAA,EAAAE,EAAAN,CAAA,SAAAtD,EAAA,UAAAvF,MAAA6I,EAAA1D,KAAAoE,EAAA,GAAAT,EAAA1J,EAAA4J,IAAA,GAAAG,CAAA,KAAAO,EAAA,YAAAR,IAAA,UAAAa,IAAA,UAAAC,IAAA,CAAAnB,EAAAxJ,OAAA4K,eAAA,IAAAhB,EAAA,GAAA/D,GAAA2D,EAAAA,EAAA,GAAA3D,QAAAmE,GAAAR,EAAA,GAAA3D,EAAA,yBAAA2D,GAAAM,EAAAa,EAAArK,UAAAuJ,EAAAvJ,UAAAN,OAAA+J,OAAAH,GAAA,SAAA1D,EAAAD,GAAA,OAAAjG,OAAA6K,eAAA7K,OAAA6K,eAAA5E,EAAA0E,IAAA1E,EAAA6E,UAAAH,EAAAX,GAAA/D,EAAAlG,EAAA,sBAAAkG,EAAA3F,UAAAN,OAAA+J,OAAAD,GAAA7D,CAAA,QAAAyE,EAAApK,UAAAqK,EAAAX,GAAAF,EAAA,cAAAa,GAAAX,GAAAW,EAAA,cAAAD,GAAAA,EAAAK,YAAA,oBAAAf,GAAAW,EAAA5K,EAAA,qBAAAiK,GAAAF,GAAAE,GAAAF,EAAA/J,EAAA,aAAAiK,GAAAF,EAAAjE,EAAA,yBAAAmE,GAAAF,EAAA,oDAAAkB,GAAA,kBAAAC,EAAAtB,EAAAuB,EAAAhF,EAAA,cAAA8D,GAAA/D,EAAAwD,EAAA5D,EAAA2D,GAAA,IAAAG,EAAA3J,OAAAC,eAAA,IAAA0J,EAAA,gBAAA1D,GAAA0D,EAAA,EAAAK,GAAA,SAAA/D,EAAAwD,EAAA5D,EAAA2D,GAAA,SAAAzJ,EAAA0J,EAAA5D,GAAAmE,GAAA/D,EAAAwD,EAAA,SAAAxD,GAAA,YAAAkF,QAAA1B,EAAA5D,EAAAI,EAAA,GAAAwD,EAAAE,EAAAA,EAAA1D,EAAAwD,EAAA,CAAA9I,MAAAkF,EAAA3F,YAAAsJ,EAAA4B,cAAA5B,EAAA6B,UAAA7B,IAAAvD,EAAAwD,GAAA5D,GAAA9F,EAAA,UAAAA,EAAA,WAAAA,EAAA,cAAAiK,GAAA/D,EAAAwD,EAAA5D,EAAA2D,EAAA,UAAA8B,GAAAzF,EAAA2D,EAAAvD,EAAAwD,EAAA1J,EAAAsK,EAAAT,GAAA,QAAAD,EAAA9D,EAAAwE,GAAAT,GAAAE,EAAAH,EAAAhJ,KAAA,OAAAkF,GAAA,YAAAI,EAAAJ,EAAA,CAAA8D,EAAA7D,KAAA0D,EAAAM,GAAAtG,QAAA0F,QAAAY,GAAAyB,KAAA9B,EAAA1J,EAAA,UAAAyL,GAAA3F,GAAA,sBAAA2D,EAAA,KAAAvD,EAAAxD,UAAA,WAAAe,QAAA,SAAAiG,EAAA1J,GAAA,IAAAsK,EAAAxE,EAAAnB,MAAA8E,EAAAvD,GAAA,SAAAwF,EAAA5F,GAAAyF,GAAAjB,EAAAZ,EAAA1J,EAAA0L,EAAAC,EAAA,OAAA7F,EAAA,UAAA6F,EAAA7F,GAAAyF,GAAAjB,EAAAZ,EAAA1J,EAAA0L,EAAAC,EAAA,QAAA7F,EAAA,CAAA4F,OAAA,eAAAE,GAAA1F,EAAAwD,GAAA,QAAAD,EAAA,EAAAA,EAAAC,EAAA/G,OAAA8G,IAAA,KAAAzJ,EAAA0J,EAAAD,GAAAzJ,EAAAG,WAAAH,EAAAG,aAAA,EAAAH,EAAAqL,cAAA,YAAArL,IAAAA,EAAAsL,UAAA,GAAArL,OAAAC,eAAAgG,EAAA2F,GAAA7L,EAAAD,KAAAC,EAAA,WAAAe,GAAAmF,EAAAwD,EAAAD,GAAA,OAAAC,EAAAmC,GAAAnC,MAAAxD,EAAAjG,OAAAC,eAAAgG,EAAAwD,EAAA,CAAA9I,MAAA6I,EAAAtJ,YAAA,EAAAkL,cAAA,EAAAC,UAAA,IAAApF,EAAAwD,GAAAD,EAAAvD,CAAA,UAAA2F,GAAApC,GAAA,IAAAG,EAAA,SAAAH,EAAAC,GAAA,aAAAqC,GAAAtC,KAAAA,EAAA,OAAAA,EAAA,IAAAvD,EAAAuD,EAAA/I,OAAAgM,aAAA,YAAAxG,EAAA,KAAA0D,EAAA1D,EAAAzF,KAAAgJ,EAAAC,GAAA,wBAAAqC,GAAAnC,GAAA,OAAAA,EAAA,UAAAc,UAAA,kEAAAhB,EAAAiD,OAAAC,QAAAnD,EAAA,CAAAoD,CAAApD,EAAA,0BAAAsC,GAAAnC,GAAAA,EAAAA,EAAA,GAOA,IAAM4jB,GAAa,SAENC,GAAgB,WAUxB,OAnBLvnB,EAaI,SAAAunB,EAA2BtgB,GAA2B,IAAA3K,EAAA,MAb1D,SAAA8H,EAAAxE,GAAA,KAAAwE,aAAAxE,GAAA,UAAA4E,UAAA,qCAa0D5J,CAAA,KAAA2sB,GAAA1sB,GAAA,YAHiC,IAAI0D,GAAmB1D,GAAA,yBAClF,IAAIqI,GAAiB,KAEtB+D,QAAAA,EACvBvN,KAAKuN,QAAQI,OAAO5F,GAAG,YAAa,SAAA6F,GAAE,OAAIhL,EAAKkrB,gBAAgBlgB,EAAG,GAClE5N,KAAKuN,QAAQI,OAAO5F,GAAG,cAAe,SAAA6F,GAAE,OAAIhL,EAAKmrB,kBAAkBngB,EAAG,GACtE5N,KAAKuN,QAAQI,OAAO5F,GAAG,kBAAmB,SAAA6F,GAAE,OAAIhL,EAAKorB,sBAAsBpgB,EAAG,GAC9E5N,KAAKuN,QAAQI,OAAO5F,GAAG,eAAgB,SAAA6F,GAAE,OAAIhL,EAAKoc,mBAAmBpR,EAAG,GACxE5N,KAAKuN,QAAQI,OAAO5F,GAAG,UAAW,kBAAMnF,EAAKuV,eAAe,EAChE,EAnBJrO,EAmBK,EAAA3J,IAAA,MAAAa,MAAA,eAAA4e,EAAA/T,GAAAR,KAAAE,EAED,SAAAgJ,EAAiBgF,GAAgB,IAAApZ,EAAAyD,EAAA,YAAAyH,KAAAC,EAAA,SAAAmJ,GAAA,cAAAA,EAAAvO,GAAA,OAW5B,OAVK/F,EAAMoZ,QAAAA,EAAWqU,GAEnB5tB,KAAKiuB,kBAAkBjU,SAAS7Z,IAChCH,KAAKiuB,kBAAkBhU,mBAAkBpO,GAAAR,KAAAE,EAAC,SAAA2I,IAAA,IAAArO,EAAA,OAAAwF,KAAAC,EAAA,SAAA8I,GAAA,cAAAA,EAAAlO,GAAA,cAAAkO,EAAAlO,EAAA,EACjBtC,EAAK2J,QAAQI,OAAOqC,KAAK,eAAgB,CAACuJ,QAAAA,IAAS,OAA5D,KAAN1T,EAAMuO,EAAA3J,GACDtG,MAAO,CAAFiQ,EAAAlO,EAAA,cACNL,EAAO1B,MAAK,OAEtBP,EAAKkqB,gBAAgBjoB,EAAOtC,MAAM,cAAA6Q,EAAA1J,EAAA,KAAAwJ,EAAA,IACnC/T,GACNsU,EAAAvO,EAAA,EAEKlG,KAAKiuB,kBAAkBztB,IAAIL,GAAI,cAAAsU,EAAA/J,EAAA,EAC9B1K,KAAKuf,KAAK/e,IAAIL,IAAI,EAAAoU,EAAA,SAdb,OAef,SAfegB,GAAA,OAAAqK,EAAA7a,MAAC,KAADjC,UAAA,EAFf,IAEe,CAAA3C,IAAA,kBAAAa,MAiBhB,SAAwBgB,GAAwB,IAAAksB,EAAAC,EACtC5U,EAAgC,QAAzB2U,EAAGlsB,EAAMiO,SAASsJ,eAAO,IAAA2U,EAAAA,EAAIN,GAErC5tB,KAAKuf,KAAKtb,IAAIsV,IACfvZ,KAAKuf,KAAKjd,IAAI,CAACiX,EAAS,IAAIrR,EAA4C,SAM5EimB,EAAAnuB,KAAKuf,KAAK/e,IAAI+Y,IAASsE,UAAS9Y,MAAAopB,EAAAnpB,GAAIhD,EAAMosB,WAC9C,GAAC,CAAAjuB,IAAA,oBAAAa,MAED,SAA0B4M,GAAuB,IAAAygB,EACvC9T,EAAava,KAAKuf,KAAK/e,IAAuB,QAApB6tB,EAACzgB,EAAG0gB,SAAS/U,eAAO,IAAA8U,EAAAA,EAAIT,IACxDrT,SAAAA,EAAYjY,IAAIsL,EAAG0gB,SACvB,GAAC,CAAAnuB,IAAA,wBAAAa,MAED,SAA8B4M,GAA2B,IAAA2gB,EAC/ChU,EAAava,KAAKuf,KAAK/e,IAAc,QAAX+tB,EAAC3gB,EAAG2L,eAAO,IAAAgV,EAAAA,EAAIX,IAC/CrT,SAAAA,EAAU,OAAS3M,EAAG4gB,WAC1B,GAAC,CAAAruB,IAAA,qBAAAa,MAED,SAA2BgB,GACvBhC,KAAKuf,KAAI,OAAQvd,EAAMoD,GAC3B,GAAC,CAAAjF,IAAA,gBAAAa,MAED,WAIIhB,KAAKiuB,kBAAkB1S,WAC3B,IAtEJzR,GAAAkC,GAAA1F,EAAA3F,UAAAmJ,GAAAD,GAAAmC,GAAA1F,EAAAuD,GAAAxJ,OAAAC,eAAAgG,EAAA,aAAAoF,UAAA,IAAApF,EAAA,IAAAA,EAAAwD,EAAAD,CAsEK,CA7DwB,G,4nCCT7B,IAAAvD,EAAAuD,EAAAC,EAAA,mBAAAhJ,OAAAA,OAAA,GAAAoF,EAAA4D,EAAAC,UAAA,aAAA3J,EAAA0J,EAAA/I,aAAA,yBAAAiJ,EAAAF,EAAA5D,EAAA9F,EAAA4J,GAAA,IAAAC,EAAA/D,GAAAA,EAAAvF,qBAAAuJ,EAAAhE,EAAAgE,EAAAC,EAAA9J,OAAA+J,OAAAH,EAAAtJ,WAAA,OAAA0J,GAAAF,EAAA,mBAAAL,EAAA5D,EAAA9F,GAAA,IAAA4J,EAAAC,EAAAE,EAAA5D,EAAA,EAAA+D,EAAAlK,GAAA,GAAAmK,GAAA,EAAAC,EAAA,CAAAF,EAAA,EAAApE,EAAA,EAAAuE,EAAAnE,EAAAoE,EAAAC,EAAApE,EAAAoE,EAAAC,KAAAtE,EAAA,GAAAqE,EAAA,SAAAd,EAAAC,GAAA,OAAAE,EAAAH,EAAAI,EAAA,EAAAE,EAAA7D,EAAAkE,EAAAtE,EAAA4D,EAAAY,CAAA,YAAAC,EAAAb,EAAA5D,GAAA,IAAA+D,EAAAH,EAAAK,EAAAjE,EAAA2D,EAAA,GAAAU,GAAAhE,IAAAnG,GAAAyJ,EAAAS,EAAAvH,OAAA8G,IAAA,KAAAzJ,EAAA4J,EAAAM,EAAAT,GAAAc,EAAAH,EAAAF,EAAAO,EAAAb,EAAA,GAAAF,EAAA,GAAA1J,EAAAyK,IAAA3E,KAAAiE,EAAAH,GAAAC,EAAAD,EAAA,OAAAC,EAAA,MAAAD,EAAA,GAAAA,EAAA,GAAA1D,GAAA0D,EAAA,IAAAW,KAAAvK,EAAA0J,EAAA,GAAAa,EAAAX,EAAA,KAAAC,EAAA,EAAAO,EAAAC,EAAAvE,EAAAsE,EAAAtE,EAAA8D,EAAA,IAAAW,EAAAE,IAAAzK,EAAA0J,EAAA,GAAAE,EAAA,GAAA9D,GAAAA,EAAA2E,KAAAb,EAAA,GAAAF,EAAAE,EAAA,GAAA9D,EAAAsE,EAAAtE,EAAA2E,EAAAZ,EAAA,OAAA7J,GAAA0J,EAAA,SAAAY,EAAA,MAAAH,GAAA,EAAArE,CAAA,iBAAA9F,EAAAkK,EAAAO,GAAA,GAAAtE,EAAA,QAAAuE,UAAA,oCAAAP,GAAA,IAAAD,GAAAK,EAAAL,EAAAO,GAAAZ,EAAAK,EAAAH,EAAAU,GAAAhB,EAAAI,EAAA,EAAA3D,EAAA6D,KAAAI,GAAA,CAAAP,IAAAC,EAAAA,EAAA,GAAAA,EAAA,IAAAO,EAAAtE,GAAA,GAAAyE,EAAAV,EAAAE,IAAAK,EAAAtE,EAAAiE,EAAAK,EAAAC,EAAAN,GAAA,OAAA5D,EAAA,EAAAyD,EAAA,IAAAC,IAAA7J,EAAA,QAAAyJ,EAAAG,EAAA5J,GAAA,MAAAyJ,EAAAA,EAAAhJ,KAAAmJ,EAAAG,IAAA,MAAAW,UAAA,wCAAAjB,EAAA1D,KAAA,OAAA0D,EAAAM,EAAAN,EAAA7I,MAAAiJ,EAAA,IAAAA,EAAA,YAAAA,IAAAJ,EAAAG,EAAA,SAAAH,EAAAhJ,KAAAmJ,GAAAC,EAAA,IAAAE,EAAAW,UAAA,oCAAA1K,EAAA,YAAA6J,EAAA,GAAAD,EAAA1D,CAAA,UAAAuD,GAAAU,EAAAC,EAAAtE,EAAA,GAAAiE,EAAAL,EAAAjJ,KAAAqF,EAAAsE,MAAAE,EAAA,YAAAb,GAAAG,EAAA1D,EAAA2D,EAAA,EAAAE,EAAAN,CAAA,SAAAtD,EAAA,UAAAvF,MAAA6I,EAAA1D,KAAAoE,EAAA,GAAAT,EAAA1J,EAAA4J,IAAA,GAAAG,CAAA,KAAAO,EAAA,YAAAR,IAAA,UAAAa,IAAA,UAAAC,IAAA,CAAAnB,EAAAxJ,OAAA4K,eAAA,IAAAhB,EAAA,GAAA/D,GAAA2D,EAAAA,EAAA,GAAA3D,QAAAmE,GAAAR,EAAA,GAAA3D,EAAA,yBAAA2D,GAAAM,EAAAa,EAAArK,UAAAuJ,EAAAvJ,UAAAN,OAAA+J,OAAAH,GAAA,SAAA1D,EAAAD,GAAA,OAAAjG,OAAA6K,eAAA7K,OAAA6K,eAAA5E,EAAA0E,IAAA1E,EAAA6E,UAAAH,EAAAX,GAAA/D,EAAAlG,EAAA,sBAAAkG,EAAA3F,UAAAN,OAAA+J,OAAAD,GAAA7D,CAAA,QAAAyE,EAAApK,UAAAqK,EAAAX,GAAAF,EAAA,cAAAa,GAAAX,GAAAW,EAAA,cAAAD,GAAAA,EAAAK,YAAA,oBAAAf,GAAAW,EAAA5K,EAAA,qBAAAiK,GAAAF,GAAAE,GAAAF,EAAA/J,EAAA,aAAAiK,GAAAF,EAAAjE,EAAA,yBAAAmE,GAAAF,EAAA,oDAAAkB,GAAA,kBAAAC,EAAAtB,EAAAuB,EAAAhF,EAAA,cAAA8D,GAAA/D,EAAAwD,EAAA5D,EAAA2D,GAAA,IAAAG,EAAA3J,OAAAC,eAAA,IAAA0J,EAAA,gBAAA1D,GAAA0D,EAAA,EAAAK,GAAA,SAAA/D,EAAAwD,EAAA5D,EAAA2D,GAAA,SAAAzJ,EAAA0J,EAAA5D,GAAAmE,GAAA/D,EAAAwD,EAAA,SAAAxD,GAAA,YAAAkF,QAAA1B,EAAA5D,EAAAI,EAAA,GAAAwD,EAAAE,EAAAA,EAAA1D,EAAAwD,EAAA,CAAA9I,MAAAkF,EAAA3F,YAAAsJ,EAAA4B,cAAA5B,EAAA6B,UAAA7B,IAAAvD,EAAAwD,GAAA5D,GAAA9F,EAAA,UAAAA,EAAA,WAAAA,EAAA,cAAAiK,GAAA/D,EAAAwD,EAAA5D,EAAA2D,EAAA,UAAA8B,GAAAzF,EAAA2D,EAAAvD,EAAAwD,EAAA1J,EAAAsK,EAAAT,GAAA,QAAAD,EAAA9D,EAAAwE,GAAAT,GAAAE,EAAAH,EAAAhJ,KAAA,OAAAkF,GAAA,YAAAI,EAAAJ,EAAA,CAAA8D,EAAA7D,KAAA0D,EAAAM,GAAAtG,QAAA0F,QAAAY,GAAAyB,KAAA9B,EAAA1J,EAAA,UAAA4L,GAAA1F,EAAAwD,GAAA,QAAAD,EAAA,EAAAA,EAAAC,EAAA/G,OAAA8G,IAAA,KAAAzJ,EAAA0J,EAAAD,GAAAzJ,EAAAG,WAAAH,EAAAG,aAAA,EAAAH,EAAAqL,cAAA,YAAArL,IAAAA,EAAAsL,UAAA,GAAArL,OAAAC,eAAAgG,EAAA2F,GAAA7L,EAAAD,KAAAC,EAAA,WAAAe,GAAAmF,EAAAwD,EAAAD,GAAA,OAAAC,EAAAmC,GAAAnC,MAAAxD,EAAAjG,OAAAC,eAAAgG,EAAAwD,EAAA,CAAA9I,MAAA6I,EAAAtJ,YAAA,EAAAkL,cAAA,EAAAC,UAAA,IAAApF,EAAAwD,GAAAD,EAAAvD,CAAA,UAAA2F,GAAApC,GAAA,IAAAG,EAAA,SAAAH,EAAAC,GAAA,aAAAqC,GAAAtC,KAAAA,EAAA,OAAAA,EAAA,IAAAvD,EAAAuD,EAAA/I,OAAAgM,aAAA,YAAAxG,EAAA,KAAA0D,EAAA1D,EAAAzF,KAAAgJ,EAAAC,GAAA,wBAAAqC,GAAAnC,GAAA,OAAAA,EAAA,UAAAc,UAAA,kEAAAhB,EAAAiD,OAAAC,QAAAnD,EAAA,CAAAoD,CAAApD,EAAA,0BAAAsC,GAAAnC,GAAAA,EAAAA,EAAA,GAKO,IAAMykB,GAAY,WAiBrB,OAtBJnoB,EAUI,SAAAmoB,EAA2BlhB,GAA2B,IAAA3K,EAAA,MAV1D,SAAA8H,EAAAxE,GAAA,KAAAwE,aAAAxE,GAAA,UAAA4E,UAAA,qCAU0D5J,CAAA,KAAAutB,GAAAttB,GAAA,oBAJvB,IAAIF,GAA+BE,GAAA,aAEA,IAAI+G,EAAkC,OAAK,KAElFqF,QAAAA,EAEvBA,EAAQI,OAAO5F,GAAG,cAAe,SAAA/F,GAAK,OAAIY,EAAK8rB,YAAY,CAAC1sB,EAAMsb,MAAM,GACxE/P,EAAQI,OAAO5F,GAAG,mBAAoB,SAAA/F,GAAK,OAAIY,EAAK+rB,cAAc,CAAC3sB,EAAMgb,QAAQ,GACjFzP,EAAQI,OAAO5F,GAAG,oBAAqB,SAAA/F,GAAK,OAAIY,EAAK+rB,cAAc,CAAC3sB,EAAMgb,QAAQ,GAClFzP,EAAQI,OAAO5F,GAAG,eAAgB,SAAA/F,GAAK,OAAIY,EAAK+rB,cAAc3sB,EAAMod,QAAQ,GAC5E7R,EAAQI,OAAO5F,GAAG,cAAe,SAAA/F,GAAK,OAAIY,EAAK+rB,cAAc3sB,EAAMod,QAAQ,GAC3E7R,EAAQI,OAAO5F,GAAG,WAAY,SAAA/F,GAAK,OAAIY,EAAK8rB,YAAY1sB,EAAMsO,SAASpO,IAAI,SAAAmO,GAAO,OAAIA,EAAQgN,OAAOC,IAAI,GAAE,GAC3G/P,EAAQI,OAAO5F,GAAG,aAAc,SAAA/F,GAAK,OAAIY,EAAK8rB,YAAY,CAAC1sB,EAAMqO,QAAQgN,OAAOC,MAAM,GACtF/P,EAAQI,OAAO5F,GAAG,UAAW,SAAA/F,GAAK,OAAIY,EAAKuV,cAAcnW,EAAM,EACnE,EApBJ8H,EAsBI,EAAA3J,IAAA,eAAAa,OAtBJkF,EAsBImF,KAAAE,EAGA,SAAA2I,IAAA,OAAA7I,KAAAC,EAAA,SAAA8I,GAAA,cAAAA,EAAAlO,EAAA,OAAAkO,EAAA1J,EAAA,EACW1K,KAAK4uB,MAAK,EAAA1a,EAAA,QAJrB2a,EAtBJ,eAAAhlB,EAAA,KAAAvD,EAAAxD,UAAA,WAAAe,QAAA,SAAAiG,EAAA1J,GAAA,IAAAsK,EAAAxE,EAAAnB,MAAA8E,EAAAvD,GAAA,SAAAwF,EAAA5F,GAAAyF,GAAAjB,EAAAZ,EAAA1J,EAAA0L,EAAAC,EAAA,OAAA7F,EAAA,UAAA6F,EAAA7F,GAAAyF,GAAAjB,EAAAZ,EAAA1J,EAAA0L,EAAAC,EAAA,QAAA7F,EAAA,CAAA4F,OAAA,MA2BK,WAFwB,OAAA+iB,EAAA9pB,MAAC,KAADjC,UAAA,KAAA3C,IAAA,gBAAAa,MAIzB,SAAsBoe,GAClBpf,KAAK0uB,YAAYtP,EAAQld,IAAI4gB,IACjC,GAAC,CAAA3iB,IAAA,gBAAAa,MAED,SAAsB8tB,GAIlB9uB,KAAK0uB,YAAY,CAACI,EAAQxR,MAC9B,GAAC,CAAAnd,IAAA,cAAAa,MAED,SAAoB4tB,GAAqB,IAAAG,EAAAnrB,EAAA,KACrCgrB,EAAMpsB,QAAQ,SAAAwsB,GACV,IAAMC,EAAUrrB,EAAKgrB,MAAMpuB,IAAIwuB,EAAQ5pB,IACnC6pB,GAAWA,EAAQC,SAAWF,EAAQE,QACtCtrB,EAAKurB,aAAa1nB,KAAK,SAAUunB,EAEzC,IAEAD,EAAA/uB,KAAK4uB,OAAMtsB,IAAGyC,MAAAgqB,EAAA/pB,GAAI4pB,GACtB,IAjDJ9kB,GAAAkC,GAAA1F,EAAA3F,UAAAmJ,GAAAD,GAAAmC,GAAA1F,EAAAuD,GAAAxJ,OAAAC,eAAAgG,EAAA,aAAAoF,UAAA,IAAApF,EAAA,IAAAA,EAAAwD,EAAAD,EAAA3D,EAsBI2oB,CA2BC,CA5CoB,G,4nCCLzB,IAAAvoB,EAAAuD,EAAAC,EAAA,mBAAAhJ,OAAAA,OAAA,GAAAoF,EAAA4D,EAAAC,UAAA,aAAA3J,EAAA0J,EAAA/I,aAAA,yBAAAiJ,EAAAF,EAAA5D,EAAA9F,EAAA4J,GAAA,IAAAC,EAAA/D,GAAAA,EAAAvF,qBAAAuJ,EAAAhE,EAAAgE,EAAAC,EAAA9J,OAAA+J,OAAAH,EAAAtJ,WAAA,OAAA0J,GAAAF,EAAA,mBAAAL,EAAA5D,EAAA9F,GAAA,IAAA4J,EAAAC,EAAAE,EAAA5D,EAAA,EAAA+D,EAAAlK,GAAA,GAAAmK,GAAA,EAAAC,EAAA,CAAAF,EAAA,EAAApE,EAAA,EAAAuE,EAAAnE,EAAAoE,EAAAC,EAAApE,EAAAoE,EAAAC,KAAAtE,EAAA,GAAAqE,EAAA,SAAAd,EAAAC,GAAA,OAAAE,EAAAH,EAAAI,EAAA,EAAAE,EAAA7D,EAAAkE,EAAAtE,EAAA4D,EAAAY,CAAA,YAAAC,EAAAb,EAAA5D,GAAA,IAAA+D,EAAAH,EAAAK,EAAAjE,EAAA2D,EAAA,GAAAU,GAAAhE,IAAAnG,GAAAyJ,EAAAS,EAAAvH,OAAA8G,IAAA,KAAAzJ,EAAA4J,EAAAM,EAAAT,GAAAc,EAAAH,EAAAF,EAAAO,EAAAb,EAAA,GAAAF,EAAA,GAAA1J,EAAAyK,IAAA3E,KAAAiE,EAAAH,GAAAC,EAAAD,EAAA,OAAAC,EAAA,MAAAD,EAAA,GAAAA,EAAA,GAAA1D,GAAA0D,EAAA,IAAAW,KAAAvK,EAAA0J,EAAA,GAAAa,EAAAX,EAAA,KAAAC,EAAA,EAAAO,EAAAC,EAAAvE,EAAAsE,EAAAtE,EAAA8D,EAAA,IAAAW,EAAAE,IAAAzK,EAAA0J,EAAA,GAAAE,EAAA,GAAA9D,GAAAA,EAAA2E,KAAAb,EAAA,GAAAF,EAAAE,EAAA,GAAA9D,EAAAsE,EAAAtE,EAAA2E,EAAAZ,EAAA,OAAA7J,GAAA0J,EAAA,SAAAY,EAAA,MAAAH,GAAA,EAAArE,CAAA,iBAAA9F,EAAAkK,EAAAO,GAAA,GAAAtE,EAAA,QAAAuE,UAAA,oCAAAP,GAAA,IAAAD,GAAAK,EAAAL,EAAAO,GAAAZ,EAAAK,EAAAH,EAAAU,GAAAhB,EAAAI,EAAA,EAAA3D,EAAA6D,KAAAI,GAAA,CAAAP,IAAAC,EAAAA,EAAA,GAAAA,EAAA,IAAAO,EAAAtE,GAAA,GAAAyE,EAAAV,EAAAE,IAAAK,EAAAtE,EAAAiE,EAAAK,EAAAC,EAAAN,GAAA,OAAA5D,EAAA,EAAAyD,EAAA,IAAAC,IAAA7J,EAAA,QAAAyJ,EAAAG,EAAA5J,GAAA,MAAAyJ,EAAAA,EAAAhJ,KAAAmJ,EAAAG,IAAA,MAAAW,UAAA,wCAAAjB,EAAA1D,KAAA,OAAA0D,EAAAM,EAAAN,EAAA7I,MAAAiJ,EAAA,IAAAA,EAAA,YAAAA,IAAAJ,EAAAG,EAAA,SAAAH,EAAAhJ,KAAAmJ,GAAAC,EAAA,IAAAE,EAAAW,UAAA,oCAAA1K,EAAA,YAAA6J,EAAA,GAAAD,EAAA1D,CAAA,UAAAuD,GAAAU,EAAAC,EAAAtE,EAAA,GAAAiE,EAAAL,EAAAjJ,KAAAqF,EAAAsE,MAAAE,EAAA,YAAAb,GAAAG,EAAA1D,EAAA2D,EAAA,EAAAE,EAAAN,CAAA,SAAAtD,EAAA,UAAAvF,MAAA6I,EAAA1D,KAAAoE,EAAA,GAAAT,EAAA1J,EAAA4J,IAAA,GAAAG,CAAA,KAAAO,EAAA,YAAAR,IAAA,UAAAa,IAAA,UAAAC,IAAA,CAAAnB,EAAAxJ,OAAA4K,eAAA,IAAAhB,EAAA,GAAA/D,GAAA2D,EAAAA,EAAA,GAAA3D,QAAAmE,GAAAR,EAAA,GAAA3D,EAAA,yBAAA2D,GAAAM,EAAAa,EAAArK,UAAAuJ,EAAAvJ,UAAAN,OAAA+J,OAAAH,GAAA,SAAA1D,EAAAD,GAAA,OAAAjG,OAAA6K,eAAA7K,OAAA6K,eAAA5E,EAAA0E,IAAA1E,EAAA6E,UAAAH,EAAAX,GAAA/D,EAAAlG,EAAA,sBAAAkG,EAAA3F,UAAAN,OAAA+J,OAAAD,GAAA7D,CAAA,QAAAyE,EAAApK,UAAAqK,EAAAX,GAAAF,EAAA,cAAAa,GAAAX,GAAAW,EAAA,cAAAD,GAAAA,EAAAK,YAAA,oBAAAf,GAAAW,EAAA5K,EAAA,qBAAAiK,GAAAF,GAAAE,GAAAF,EAAA/J,EAAA,aAAAiK,GAAAF,EAAAjE,EAAA,yBAAAmE,GAAAF,EAAA,oDAAAkB,GAAA,kBAAAC,EAAAtB,EAAAuB,EAAAhF,EAAA,cAAA8D,GAAA/D,EAAAwD,EAAA5D,EAAA2D,GAAA,IAAAG,EAAA3J,OAAAC,eAAA,IAAA0J,EAAA,gBAAA1D,GAAA0D,EAAA,EAAAK,GAAA,SAAA/D,EAAAwD,EAAA5D,EAAA2D,GAAA,SAAAzJ,EAAA0J,EAAA5D,GAAAmE,GAAA/D,EAAAwD,EAAA,SAAAxD,GAAA,YAAAkF,QAAA1B,EAAA5D,EAAAI,EAAA,GAAAwD,EAAAE,EAAAA,EAAA1D,EAAAwD,EAAA,CAAA9I,MAAAkF,EAAA3F,YAAAsJ,EAAA4B,cAAA5B,EAAA6B,UAAA7B,IAAAvD,EAAAwD,GAAA5D,GAAA9F,EAAA,UAAAA,EAAA,WAAAA,EAAA,cAAAiK,GAAA/D,EAAAwD,EAAA5D,EAAA2D,EAAA,UAAA8B,GAAAzF,EAAA2D,EAAAvD,EAAAwD,EAAA1J,EAAAsK,EAAAT,GAAA,QAAAD,EAAA9D,EAAAwE,GAAAT,GAAAE,EAAAH,EAAAhJ,KAAA,OAAAkF,GAAA,YAAAI,EAAAJ,EAAA,CAAA8D,EAAA7D,KAAA0D,EAAAM,GAAAtG,QAAA0F,QAAAY,GAAAyB,KAAA9B,EAAA1J,EAAA,UAAAyL,GAAA3F,GAAA,sBAAA2D,EAAA,KAAAvD,EAAAxD,UAAA,WAAAe,QAAA,SAAAiG,EAAA1J,GAAA,IAAAsK,EAAAxE,EAAAnB,MAAA8E,EAAAvD,GAAA,SAAAwF,EAAA5F,GAAAyF,GAAAjB,EAAAZ,EAAA1J,EAAA0L,EAAAC,EAAA,OAAA7F,EAAA,UAAA6F,EAAA7F,GAAAyF,GAAAjB,EAAAZ,EAAA1J,EAAA0L,EAAAC,EAAA,QAAA7F,EAAA,CAAA4F,OAAA,eAAAE,GAAA1F,EAAAwD,GAAA,QAAAD,EAAA,EAAAA,EAAAC,EAAA/G,OAAA8G,IAAA,KAAAzJ,EAAA0J,EAAAD,GAAAzJ,EAAAG,WAAAH,EAAAG,aAAA,EAAAH,EAAAqL,cAAA,YAAArL,IAAAA,EAAAsL,UAAA,GAAArL,OAAAC,eAAAgG,EAAA2F,GAAA7L,EAAAD,KAAAC,EAAA,WAAAe,GAAAmF,EAAAwD,EAAAD,GAAA,OAAAC,EAAAmC,GAAAnC,MAAAxD,EAAAjG,OAAAC,eAAAgG,EAAAwD,EAAA,CAAA9I,MAAA6I,EAAAtJ,YAAA,EAAAkL,cAAA,EAAAC,UAAA,IAAApF,EAAAwD,GAAAD,EAAAvD,CAAA,UAAA2F,GAAApC,GAAA,IAAAG,EAAA,SAAAH,EAAAC,GAAA,aAAAqC,GAAAtC,KAAAA,EAAA,OAAAA,EAAA,IAAAvD,EAAAuD,EAAA/I,OAAAgM,aAAA,YAAAxG,EAAA,KAAA0D,EAAA1D,EAAAzF,KAAAgJ,EAAAC,GAAA,wBAAAqC,GAAAnC,GAAA,OAAAA,EAAA,UAAAc,UAAA,kEAAAhB,EAAAiD,OAAAC,QAAAnD,EAAA,CAAAoD,CAAApD,EAAA,0BAAAsC,GAAAnC,GAAAA,EAAAA,EAAA,GAUA,IAAMnD,GAAQ,SAACuoB,EAAmB9rB,GAA0B,SAAAF,OAAgBgsB,EAAS,KAAAhsB,OAAIE,EAAI,EACvF+rB,GAAwB,SAACC,GAA8B,OAAazoB,GAAMyoB,EAAaC,QAAQnqB,GAAIkqB,EAAahsB,KAAK,EAE9GksB,GAAoB,WAS5B,OAtBLlpB,EAiBI,SAAAkpB,EAA2BjiB,GAA2B,IAAA3K,EAAA,MAjB1D,SAAA8H,EAAAxE,GAAA,KAAAwE,aAAAxE,GAAA,UAAA4E,UAAA,qCAiB0D5J,CAAA,KAAAsuB,GAAAruB,GAAA,qBAHuB,IAAI+G,EAAoDmnB,KAAsBluB,GAAA,gBACxI,IAAIqI,GAAiB,KAEb+D,QAAAA,EACvBvN,KAAKuN,QAAQI,OAAO5F,GAAG,gBAAiB,SAAA6F,GAAE,OAAIhL,EAAK6sB,oBAAoB7hB,EAAG,GAC1E5N,KAAKuN,QAAQI,OAAO5F,GAAG,kBAAmB,SAAA6F,GAAE,OAAIhL,EAAK8sB,sBAAsB9hB,EAAG,GAC9E5N,KAAKuN,QAAQI,OAAO5F,GAAG,sBAAuB,SAAA6F,GAAE,OAAIhL,EAAK+sB,0BAA0B/hB,EAAG,GACtF5N,KAAKuN,QAAQI,OAAO5F,GAAG,UAAW,kBAAMnF,EAAKuV,eAAe,EAChE,EAtBJrO,EAsBK,EAAA3J,IAAA,MAAAa,MAAA,eAAA4e,EAAA/T,GAAAR,KAAAE,EAED,SAAAgJ,IAAA,IAAA3Q,EAAA,YAAAyH,KAAAC,EAAA,SAAAmJ,GAAA,cAAAA,EAAAvO,GAAA,OAQK,OAPGlG,KAAKyJ,SAASuQ,SAAS,QACvBha,KAAKyJ,SAASwQ,mBAAkBpO,GAAAR,KAAAE,EAAC,SAAA2I,IAAA,IAAArO,EAAA,OAAAwF,KAAAC,EAAA,SAAA8I,GAAA,cAAAA,EAAAlO,GAAA,cAAAkO,EAAAlO,EAAA,EACRtC,EAAK2J,QAAQI,OAAOqC,KAAK,mBAAoB,CAAC,GAAE,OAAzD,KAANnK,EAAMuO,EAAA3J,GACDtG,MAAO,CAAFiQ,EAAAlO,EAAA,cACNL,EAAO1B,MAAK,cAAAiQ,EAAA1J,EAAA,KAAAwJ,EAAA,IAEvB,OACNO,EAAAvO,EAAA,EAEKlG,KAAKyJ,SAASjJ,IAAI,OAAM,cAAAiU,EAAA/J,EAAA,EACvB1K,KAAK4vB,eAAa,EAAArb,EAAA,SAXb,OAYf,WAZe,OAAAqL,EAAA7a,MAAC,KAADjC,UAAA,EAFf,IAEe,CAAA3C,IAAA,SAAAa,OAAA6uB,EAAAhkB,GAAAR,KAAAE,EAchB,SAAAwJ,EAAoBqa,EAAmB9rB,GAA0B,OAAA+H,KAAAC,EAAA,SAAA0J,GAAA,cAAAA,EAAA9O,GAAA,cAAA8O,EAAA9O,EAAA,EACvDlG,KAAKQ,MAAK,cAAAwU,EAAAtK,EAAA,EACT1K,KAAK4vB,cAAc3rB,IAAI4C,GAAMuoB,EAAW9rB,KAAM,EAAAyR,EAAA,SACxD,SAHkBQ,EAAAjH,GAAA,OAAAuhB,EAAA9qB,MAAC,KAADjC,UAAA,KAAA3C,IAAA,sBAAAa,MAKnB,SAA4B4M,GAAyB,IAAAkiB,GAGjDA,EAAA9vB,KAAK4vB,eAAc/R,UAAS9Y,MAAA+qB,EAAA9qB,GAAI4I,EAAGgiB,eACvC,GAAC,CAAAzvB,IAAA,wBAAAa,MAED,SAA8B4M,GACtB5N,KAAKyJ,SAASxF,IAAI,QAClBjE,KAAK4vB,cAActtB,IAAIsL,EAAG0hB,aAElC,GAAC,CAAAnvB,IAAA,4BAAAa,MAED,SAAkC4M,GAC1B5N,KAAKyJ,SAASxF,IAAI,QAClBjE,KAAK4vB,cAAa,OAAQP,GAAsBzhB,EAAG0hB,cAE3D,GAAC,CAAAnvB,IAAA,gBAAAa,MAED,WAGIhB,KAAKyJ,SAAS8R,WAClB,IAjEJzR,GAAAkC,GAAA1F,EAAA3F,UAAAmJ,GAAAD,GAAAmC,GAAA1F,EAAAuD,GAAAxJ,OAAAC,eAAAgG,EAAA,aAAAoF,UAAA,IAAApF,EAAA,IAAAA,EAAAwD,EAAAD,EAwBoBgmB,CAyCf,CApD4B,G,yZCbjC,IAAAvpB,EAAAuD,EAAAC,EAAA,mBAAAhJ,OAAAA,OAAA,GAAAoF,EAAA4D,EAAAC,UAAA,aAAA3J,EAAA0J,EAAA/I,aAAA,yBAAAiJ,EAAAF,EAAA5D,EAAA9F,EAAA4J,GAAA,IAAAC,EAAA/D,GAAAA,EAAAvF,qBAAAuJ,EAAAhE,EAAAgE,EAAAC,EAAA9J,OAAA+J,OAAAH,EAAAtJ,WAAA,OAAA0J,GAAAF,EAAA,mBAAAL,EAAA5D,EAAA9F,GAAA,IAAA4J,EAAAC,EAAAE,EAAA5D,EAAA,EAAA+D,EAAAlK,GAAA,GAAAmK,GAAA,EAAAC,EAAA,CAAAF,EAAA,EAAApE,EAAA,EAAAuE,EAAAnE,EAAAoE,EAAAC,EAAApE,EAAAoE,EAAAC,KAAAtE,EAAA,GAAAqE,EAAA,SAAAd,EAAAC,GAAA,OAAAE,EAAAH,EAAAI,EAAA,EAAAE,EAAA7D,EAAAkE,EAAAtE,EAAA4D,EAAAY,CAAA,YAAAC,EAAAb,EAAA5D,GAAA,IAAA+D,EAAAH,EAAAK,EAAAjE,EAAA2D,EAAA,GAAAU,GAAAhE,IAAAnG,GAAAyJ,EAAAS,EAAAvH,OAAA8G,IAAA,KAAAzJ,EAAA4J,EAAAM,EAAAT,GAAAc,EAAAH,EAAAF,EAAAO,EAAAb,EAAA,GAAAF,EAAA,GAAA1J,EAAAyK,IAAA3E,KAAAiE,EAAAH,GAAAC,EAAAD,EAAA,OAAAC,EAAA,MAAAD,EAAA,GAAAA,EAAA,GAAA1D,GAAA0D,EAAA,IAAAW,KAAAvK,EAAA0J,EAAA,GAAAa,EAAAX,EAAA,KAAAC,EAAA,EAAAO,EAAAC,EAAAvE,EAAAsE,EAAAtE,EAAA8D,EAAA,IAAAW,EAAAE,IAAAzK,EAAA0J,EAAA,GAAAE,EAAA,GAAA9D,GAAAA,EAAA2E,KAAAb,EAAA,GAAAF,EAAAE,EAAA,GAAA9D,EAAAsE,EAAAtE,EAAA2E,EAAAZ,EAAA,OAAA7J,GAAA0J,EAAA,SAAAY,EAAA,MAAAH,GAAA,EAAArE,CAAA,iBAAA9F,EAAAkK,EAAAO,GAAA,GAAAtE,EAAA,QAAAuE,UAAA,oCAAAP,GAAA,IAAAD,GAAAK,EAAAL,EAAAO,GAAAZ,EAAAK,EAAAH,EAAAU,GAAAhB,EAAAI,EAAA,EAAA3D,EAAA6D,KAAAI,GAAA,CAAAP,IAAAC,EAAAA,EAAA,GAAAA,EAAA,IAAAO,EAAAtE,GAAA,GAAAyE,EAAAV,EAAAE,IAAAK,EAAAtE,EAAAiE,EAAAK,EAAAC,EAAAN,GAAA,OAAA5D,EAAA,EAAAyD,EAAA,IAAAC,IAAA7J,EAAA,QAAAyJ,EAAAG,EAAA5J,GAAA,MAAAyJ,EAAAA,EAAAhJ,KAAAmJ,EAAAG,IAAA,MAAAW,UAAA,wCAAAjB,EAAA1D,KAAA,OAAA0D,EAAAM,EAAAN,EAAA7I,MAAAiJ,EAAA,IAAAA,EAAA,YAAAA,IAAAJ,EAAAG,EAAA,SAAAH,EAAAhJ,KAAAmJ,GAAAC,EAAA,IAAAE,EAAAW,UAAA,oCAAA1K,EAAA,YAAA6J,EAAA,GAAAD,EAAA1D,CAAA,UAAAuD,GAAAU,EAAAC,EAAAtE,EAAA,GAAAiE,EAAAL,EAAAjJ,KAAAqF,EAAAsE,MAAAE,EAAA,YAAAb,GAAAG,EAAA1D,EAAA2D,EAAA,EAAAE,EAAAN,CAAA,SAAAtD,EAAA,UAAAvF,MAAA6I,EAAA1D,KAAAoE,EAAA,GAAAT,EAAA1J,EAAA4J,IAAA,GAAAG,CAAA,KAAAO,EAAA,YAAAR,IAAA,UAAAa,IAAA,UAAAC,IAAA,CAAAnB,EAAAxJ,OAAA4K,eAAA,IAAAhB,EAAA,GAAA/D,GAAA2D,EAAAA,EAAA,GAAA3D,QAAAmE,GAAAR,EAAA,GAAA3D,EAAA,yBAAA2D,GAAAM,EAAAa,EAAArK,UAAAuJ,EAAAvJ,UAAAN,OAAA+J,OAAAH,GAAA,SAAA1D,EAAAD,GAAA,OAAAjG,OAAA6K,eAAA7K,OAAA6K,eAAA5E,EAAA0E,IAAA1E,EAAA6E,UAAAH,EAAAX,GAAA/D,EAAAlG,EAAA,sBAAAkG,EAAA3F,UAAAN,OAAA+J,OAAAD,GAAA7D,CAAA,QAAAyE,EAAApK,UAAAqK,EAAAX,GAAAF,EAAA,cAAAa,GAAAX,GAAAW,EAAA,cAAAD,GAAAA,EAAAK,YAAA,oBAAAf,GAAAW,EAAA5K,EAAA,qBAAAiK,GAAAF,GAAAE,GAAAF,EAAA/J,EAAA,aAAAiK,GAAAF,EAAAjE,EAAA,yBAAAmE,GAAAF,EAAA,oDAAAkB,GAAA,kBAAAC,EAAAtB,EAAAuB,EAAAhF,EAAA,cAAA8D,GAAA/D,EAAAwD,EAAA5D,EAAA2D,GAAA,IAAAG,EAAA3J,OAAAC,eAAA,IAAA0J,EAAA,gBAAA1D,GAAA0D,EAAA,EAAAK,GAAA,SAAA/D,EAAAwD,EAAA5D,EAAA2D,GAAA,SAAAzJ,EAAA0J,EAAA5D,GAAAmE,GAAA/D,EAAAwD,EAAA,SAAAxD,GAAA,YAAAkF,QAAA1B,EAAA5D,EAAAI,EAAA,GAAAwD,EAAAE,EAAAA,EAAA1D,EAAAwD,EAAA,CAAA9I,MAAAkF,EAAA3F,YAAAsJ,EAAA4B,cAAA5B,EAAA6B,UAAA7B,IAAAvD,EAAAwD,GAAA5D,GAAA9F,EAAA,UAAAA,EAAA,WAAAA,EAAA,cAAAiK,GAAA/D,EAAAwD,EAAA5D,EAAA2D,EAAA,UAAA8B,GAAAzF,EAAA2D,EAAAvD,EAAAwD,EAAA1J,EAAAsK,EAAAT,GAAA,QAAAD,EAAA9D,EAAAwE,GAAAT,GAAAE,EAAAH,EAAAhJ,KAAA,OAAAkF,GAAA,YAAAI,EAAAJ,EAAA,CAAA8D,EAAA7D,KAAA0D,EAAAM,GAAAtG,QAAA0F,QAAAY,GAAAyB,KAAA9B,EAAA1J,EAAA,UAAA4L,GAAA1F,EAAAwD,GAAA,QAAAD,EAAA,EAAAA,EAAAC,EAAA/G,OAAA8G,IAAA,KAAAzJ,EAAA0J,EAAAD,GAAAzJ,EAAAG,WAAAH,EAAAG,aAAA,EAAAH,EAAAqL,cAAA,YAAArL,IAAAA,EAAAsL,UAAA,GAAArL,OAAAC,eAAAgG,EAAA2F,GAAA7L,EAAAD,KAAAC,EAAA,WAAAe,GAAAmF,EAAAwD,EAAAD,GAAA,OAAAC,EAAAmC,GAAAnC,MAAAxD,EAAAjG,OAAAC,eAAAgG,EAAAwD,EAAA,CAAA9I,MAAA6I,EAAAtJ,YAAA,EAAAkL,cAAA,EAAAC,UAAA,IAAApF,EAAAwD,GAAAD,EAAAvD,CAAA,UAAA2F,GAAApC,GAAA,IAAAG,EAAA,SAAAH,EAAAC,GAAA,aAAAqC,GAAAtC,KAAAA,EAAA,OAAAA,EAAA,IAAAvD,EAAAuD,EAAA/I,OAAAgM,aAAA,YAAAxG,EAAA,KAAA0D,EAAA1D,EAAAzF,KAAAgJ,EAAAC,GAAA,wBAAAqC,GAAAnC,GAAA,OAAAA,EAAA,UAAAc,UAAA,kEAAAhB,EAAAiD,OAAAC,QAAAnD,EAAA,CAAAoD,CAAApD,EAAA,0BAAAsC,GAAAnC,GAAAA,EAAAA,EAAA,GASO,IAAM+lB,GAAgB,WA8CxB,OAvDLzpB,EA6CI,SAAAypB,EAAmBpiB,GAA6B,IAAA/K,EAAA,MA7CpD,SAAA8H,EAAAxE,GAAA,KAAAwE,aAAAxE,GAAA,UAAA4E,UAAA,qCA6CoD5J,CAAA,KAAA6uB,GAAA5uB,GAAA,sBAjChDA,GAAA,2BAKAA,GAAA,qBAKAA,GAAA,sBAKAA,GAAA,yBAKAA,GAAA,qBAKAA,GAAA,6BAAAA,GAAA,WAKoB,MAAIA,GAAA,uBACW,IAAIkI,GAGnCrJ,KAAK2N,OAASA,EACd3N,KAAK2N,OAAO5F,GAAG,UAAW,SAAA6F,GAAE,OAAIhL,EAAKuV,cAAcvK,EAAG,GAEtD5N,KAAKgwB,YAAc,IAAIzH,GAAmBvoB,MAC1CA,KAAKwR,MAAQ,IAAI+M,GAAave,MAC9BA,KAAK0Z,OAAS,IAAIsJ,GAAchjB,MAChCA,KAAKouB,UAAY,IAAIP,GAAiB7tB,MACtCA,KAAK4uB,MAAQ,IAAIH,GAAazuB,MAC9BA,KAAK4vB,cAAgB,IAAIJ,GAAqBxvB,KAClD,EAvDJ8J,EAuDK,EAAA3J,IAAA,KAAAK,IAED,WACI,OAAOR,KAAKiwB,GAChB,GAAC,CAAA9vB,IAAA,QAAAa,OA3DLkF,EA2DKmF,KAAAE,EAED,SAAA2I,IAAA,OAAA7I,KAAAC,EAAA,SAAA8I,GAAA,cAAAA,EAAAlO,GAAA,cAAAkO,EAAAlO,EAAA,EACUlG,KAAKwY,gBAAgBlP,QAAO,cAAA8K,EAAA1J,EAAA,EAC3B1K,KAAKiwB,KAAG,EAAA/b,EAAA,QAJlBmL,EA3DL,eAAAxV,EAAA,KAAAvD,EAAAxD,UAAA,WAAAe,QAAA,SAAAiG,EAAA1J,GAAA,IAAAsK,EAAAxE,EAAAnB,MAAA8E,EAAAvD,GAAA,SAAAwF,EAAA5F,GAAAyF,GAAAjB,EAAAZ,EAAA1J,EAAA0L,EAAAC,EAAA,OAAA7F,EAAA,UAAA6F,EAAA7F,GAAAyF,GAAAjB,EAAAZ,EAAA1J,EAAA0L,EAAAC,EAAA,QAAA7F,EAAA,CAAA4F,OAAA,MAgEK,WAHiB,OAAAuT,EAAAta,MAAC,KAADjC,UAAA,KAAA3C,IAAA,gBAAAa,MAKlB,SAAsB4M,GAClB5N,KAAKiwB,IAAMriB,EAAG0P,KACdtd,KAAKwY,gBAAgBjP,SACzB,IArEJO,GAAAkC,GAAA1F,EAAA3F,UAAAmJ,GAAAD,GAAAmC,GAAA1F,EAAAuD,GAAAxJ,OAAAC,eAAAgG,EAAA,aAAAoF,UAAA,IAAApF,EAAA,IAAAA,EAAAwD,EAAAD,EAAA3D,EA2DKmZ,CAUA,CA5DwB,G,k5CCT7B,IAAA/Y,EAAAuD,EAAAC,EAAA,mBAAAhJ,OAAAA,OAAA,GAAAoF,EAAA4D,EAAAC,UAAA,aAAA3J,EAAA0J,EAAA/I,aAAA,yBAAAiJ,EAAAF,EAAA5D,EAAA9F,EAAA4J,GAAA,IAAAC,EAAA/D,GAAAA,EAAAvF,qBAAAuJ,EAAAhE,EAAAgE,EAAAC,EAAA9J,OAAA+J,OAAAH,EAAAtJ,WAAA,OAAA0J,GAAAF,EAAA,mBAAAL,EAAA5D,EAAA9F,GAAA,IAAA4J,EAAAC,EAAAE,EAAA5D,EAAA,EAAA+D,EAAAlK,GAAA,GAAAmK,GAAA,EAAAC,EAAA,CAAAF,EAAA,EAAApE,EAAA,EAAAuE,EAAAnE,EAAAoE,EAAAC,EAAApE,EAAAoE,EAAAC,KAAAtE,EAAA,GAAAqE,EAAA,SAAAd,EAAAC,GAAA,OAAAE,EAAAH,EAAAI,EAAA,EAAAE,EAAA7D,EAAAkE,EAAAtE,EAAA4D,EAAAY,CAAA,YAAAC,EAAAb,EAAA5D,GAAA,IAAA+D,EAAAH,EAAAK,EAAAjE,EAAA2D,EAAA,GAAAU,GAAAhE,IAAAnG,GAAAyJ,EAAAS,EAAAvH,OAAA8G,IAAA,KAAAzJ,EAAA4J,EAAAM,EAAAT,GAAAc,EAAAH,EAAAF,EAAAO,EAAAb,EAAA,GAAAF,EAAA,GAAA1J,EAAAyK,IAAA3E,KAAAiE,EAAAH,GAAAC,EAAAD,EAAA,OAAAC,EAAA,MAAAD,EAAA,GAAAA,EAAA,GAAA1D,GAAA0D,EAAA,IAAAW,KAAAvK,EAAA0J,EAAA,GAAAa,EAAAX,EAAA,KAAAC,EAAA,EAAAO,EAAAC,EAAAvE,EAAAsE,EAAAtE,EAAA8D,EAAA,IAAAW,EAAAE,IAAAzK,EAAA0J,EAAA,GAAAE,EAAA,GAAA9D,GAAAA,EAAA2E,KAAAb,EAAA,GAAAF,EAAAE,EAAA,GAAA9D,EAAAsE,EAAAtE,EAAA2E,EAAAZ,EAAA,OAAA7J,GAAA0J,EAAA,SAAAY,EAAA,MAAAH,GAAA,EAAArE,CAAA,iBAAA9F,EAAAkK,EAAAO,GAAA,GAAAtE,EAAA,QAAAuE,UAAA,oCAAAP,GAAA,IAAAD,GAAAK,EAAAL,EAAAO,GAAAZ,EAAAK,EAAAH,EAAAU,GAAAhB,EAAAI,EAAA,EAAA3D,EAAA6D,KAAAI,GAAA,CAAAP,IAAAC,EAAAA,EAAA,GAAAA,EAAA,IAAAO,EAAAtE,GAAA,GAAAyE,EAAAV,EAAAE,IAAAK,EAAAtE,EAAAiE,EAAAK,EAAAC,EAAAN,GAAA,OAAA5D,EAAA,EAAAyD,EAAA,IAAAC,IAAA7J,EAAA,QAAAyJ,EAAAG,EAAA5J,GAAA,MAAAyJ,EAAAA,EAAAhJ,KAAAmJ,EAAAG,IAAA,MAAAW,UAAA,wCAAAjB,EAAA1D,KAAA,OAAA0D,EAAAM,EAAAN,EAAA7I,MAAAiJ,EAAA,IAAAA,EAAA,YAAAA,IAAAJ,EAAAG,EAAA,SAAAH,EAAAhJ,KAAAmJ,GAAAC,EAAA,IAAAE,EAAAW,UAAA,oCAAA1K,EAAA,YAAA6J,EAAA,GAAAD,EAAA1D,CAAA,UAAAuD,GAAAU,EAAAC,EAAAtE,EAAA,GAAAiE,EAAAL,EAAAjJ,KAAAqF,EAAAsE,MAAAE,EAAA,YAAAb,GAAAG,EAAA1D,EAAA2D,EAAA,EAAAE,EAAAN,CAAA,SAAAtD,EAAA,UAAAvF,MAAA6I,EAAA1D,KAAAoE,EAAA,GAAAT,EAAA1J,EAAA4J,IAAA,GAAAG,CAAA,KAAAO,EAAA,YAAAR,IAAA,UAAAa,IAAA,UAAAC,IAAA,CAAAnB,EAAAxJ,OAAA4K,eAAA,IAAAhB,EAAA,GAAA/D,GAAA2D,EAAAA,EAAA,GAAA3D,QAAAmE,GAAAR,EAAA,GAAA3D,EAAA,yBAAA2D,GAAAM,EAAAa,EAAArK,UAAAuJ,EAAAvJ,UAAAN,OAAA+J,OAAAH,GAAA,SAAA1D,EAAAD,GAAA,OAAAjG,OAAA6K,eAAA7K,OAAA6K,eAAA5E,EAAA0E,IAAA1E,EAAA6E,UAAAH,EAAAX,GAAA/D,EAAAlG,EAAA,sBAAAkG,EAAA3F,UAAAN,OAAA+J,OAAAD,GAAA7D,CAAA,QAAAyE,EAAApK,UAAAqK,EAAAX,GAAAF,EAAA,cAAAa,GAAAX,GAAAW,EAAA,cAAAD,GAAAA,EAAAK,YAAA,oBAAAf,GAAAW,EAAA5K,EAAA,qBAAAiK,GAAAF,GAAAE,GAAAF,EAAA/J,EAAA,aAAAiK,GAAAF,EAAAjE,EAAA,yBAAAmE,GAAAF,EAAA,oDAAAkB,GAAA,kBAAAC,EAAAtB,EAAAuB,EAAAhF,EAAA,cAAA8D,GAAA/D,EAAAwD,EAAA5D,EAAA2D,GAAA,IAAAG,EAAA3J,OAAAC,eAAA,IAAA0J,EAAA,gBAAA1D,GAAA0D,EAAA,EAAAK,GAAA,SAAA/D,EAAAwD,EAAA5D,EAAA2D,GAAA,SAAAzJ,EAAA0J,EAAA5D,GAAAmE,GAAA/D,EAAAwD,EAAA,SAAAxD,GAAA,YAAAkF,QAAA1B,EAAA5D,EAAAI,EAAA,GAAAwD,EAAAE,EAAAA,EAAA1D,EAAAwD,EAAA,CAAA9I,MAAAkF,EAAA3F,YAAAsJ,EAAA4B,cAAA5B,EAAA6B,UAAA7B,IAAAvD,EAAAwD,GAAA5D,GAAA9F,EAAA,UAAAA,EAAA,WAAAA,EAAA,cAAAiK,GAAA/D,EAAAwD,EAAA5D,EAAA2D,EAAA,UAAA8B,GAAAzF,EAAA2D,EAAAvD,EAAAwD,EAAA1J,EAAAsK,EAAAT,GAAA,QAAAD,EAAA9D,EAAAwE,GAAAT,GAAAE,EAAAH,EAAAhJ,KAAA,OAAAkF,GAAA,YAAAI,EAAAJ,EAAA,CAAA8D,EAAA7D,KAAA0D,EAAAM,GAAAtG,QAAA0F,QAAAY,GAAAyB,KAAA9B,EAAA1J,EAAA,UAAAyL,GAAA3F,GAAA,sBAAA2D,EAAA,KAAAvD,EAAAxD,UAAA,WAAAe,QAAA,SAAAiG,EAAA1J,GAAA,IAAAsK,EAAAxE,EAAAnB,MAAA8E,EAAAvD,GAAA,SAAAwF,EAAA5F,GAAAyF,GAAAjB,EAAAZ,EAAA1J,EAAA0L,EAAAC,EAAA,OAAA7F,EAAA,UAAA6F,EAAA7F,GAAAyF,GAAAjB,EAAAZ,EAAA1J,EAAA0L,EAAAC,EAAA,QAAA7F,EAAA,CAAA4F,OAAA,eAAAE,GAAA1F,EAAAwD,GAAA,QAAAD,EAAA,EAAAA,EAAAC,EAAA/G,OAAA8G,IAAA,KAAAzJ,EAAA0J,EAAAD,GAAAzJ,EAAAG,WAAAH,EAAAG,aAAA,EAAAH,EAAAqL,cAAA,YAAArL,IAAAA,EAAAsL,UAAA,GAAArL,OAAAC,eAAAgG,EAAA2F,GAAA7L,EAAAD,KAAAC,EAAA,WAAA+C,GAAA0G,EAAAzJ,EAAAkG,GAAA,OAAAlG,EAAA8L,GAAA9L,GAAA,SAAAyJ,EAAAvD,GAAA,GAAAA,IAAA,UAAA6F,GAAA7F,IAAA,mBAAAA,GAAA,OAAAA,EAAA,YAAAA,EAAA,UAAAwE,UAAA,4EAAAxE,GAAA,YAAAA,EAAA,UAAA8F,eAAA,oEAAA9F,CAAA,CAAA+F,CAAAxC,EAAA,CAAAyC,CAAAzC,EAAA0C,KAAAC,QAAAC,UAAArM,EAAAkG,GAAA,GAAA4F,GAAArC,GAAA6C,aAAAtM,EAAA2E,MAAA8E,EAAAvD,GAAA,UAAAiG,KAAA,QAAA1C,GAAA8C,QAAAhM,UAAAiM,QAAA/L,KAAA2L,QAAAC,UAAAE,QAAA,wBAAA9C,GAAA,QAAA0C,GAAA,mBAAA1C,CAAA,cAAAqC,GAAArC,GAAA,OAAAqC,GAAA7L,OAAA6K,eAAA7K,OAAA4K,eAAAL,OAAA,SAAAf,GAAA,OAAAA,EAAAsB,WAAA9K,OAAA4K,eAAApB,EAAA,EAAAqC,GAAArC,EAAA,UAAAgD,GAAAhD,EAAAvD,GAAA,OAAAuG,GAAAxM,OAAA6K,eAAA7K,OAAA6K,eAAAN,OAAA,SAAAf,EAAAvD,GAAA,OAAAuD,EAAAsB,UAAA7E,EAAAuD,CAAA,EAAAgD,GAAAhD,EAAAvD,EAAA,UAAAnF,GAAAmF,EAAAwD,EAAAD,GAAA,OAAAC,EAAAmC,GAAAnC,MAAAxD,EAAAjG,OAAAC,eAAAgG,EAAAwD,EAAA,CAAA9I,MAAA6I,EAAAtJ,YAAA,EAAAkL,cAAA,EAAAC,UAAA,IAAApF,EAAAwD,GAAAD,EAAAvD,CAAA,UAAA2F,GAAApC,GAAA,IAAAG,EAAA,SAAAH,EAAAC,GAAA,aAAAqC,GAAAtC,KAAAA,EAAA,OAAAA,EAAA,IAAAvD,EAAAuD,EAAA/I,OAAAgM,aAAA,YAAAxG,EAAA,KAAA0D,EAAA1D,EAAAzF,KAAAgJ,EAAAC,GAAA,wBAAAqC,GAAAnC,GAAA,OAAAA,EAAA,UAAAc,UAAA,kEAAAhB,EAAAiD,OAAAC,QAAAnD,EAAA,CAAAoD,CAAApD,EAAA,0BAAAsC,GAAAnC,GAAAA,EAAAA,EAAA,GACkE,IA0B7DkmB,GAAwB,SAAxBA,GAAwB,OAAxBA,EAAwB,kBAAxBA,EAAwB,wBAAxBA,EAAwB,kBAAxBA,EAAwB,cAAxBA,CAAwB,EAAxBA,IAAwB,IAchBC,GAAmB,SAAAC,GAmB5B,SAAAD,EAAoCE,GAAiC,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAjuB,EASzB,OArEhD,SAAA8H,EAAAxE,GAAA,KAAAwE,aAAAxE,GAAA,UAAA4E,UAAA,qCA4DyE5J,CAAA,KAAAivB,GACzDhvB,GAARyB,EAAAO,GAAA,KAAAgtB,GAAQ,QAnBYD,IAAwB/uB,GAAAyB,EAAA,gBAAAzB,GAAAyB,EAAA,KAGjB,MAAIzB,GAAAyB,EAAA,YACD,IAAEzB,GAAAyB,EAAA,8BAAAzB,GAAAyB,EAAA,wBAAAzB,GAAAyB,EAAA,yBAG4C,MAChFzB,GAAAyB,EAAA,iBAKiD,MAAIzB,GAAAyB,EAAA,8BAAAzB,GAAAyB,EAAA,8BAAAzB,GAAAyB,EAAA,gCAAAA,EAKjBytB,QAAAA,GAEF,QAA9BC,EAAI1tB,EAAKytB,QAAQS,qBAAa,IAAAR,GAAAA,KAC1B1tB,EAAKuL,MAAQ,IAAI4hB,GAAgBntB,IAGzB,QAAZ2tB,EAAAF,EAAQU,YAAI,IAAAR,IAAZF,EAAQU,KAAS,CAAC,GACE,QAApBN,GAAAD,EAAAH,EAAQU,MAAKC,eAAO,IAAAP,IAApBD,EAAaQ,SAAY,GACO,QAAhCL,GAAAD,EAAAL,EAAQU,MAAKE,2BAAmB,IAAAN,IAAhCD,EAAaO,oBAAwB,MACP,QAA9BJ,GAAAD,EAAAP,EAAQU,MAAKG,yBAAiB,IAAAL,IAA9BD,EAAaM,kBAAsB,KAAKtuB,CAC5C,CAAC,OAtEL,SAAAiH,EAAAvD,GAAA,sBAAAA,GAAA,OAAAA,EAAA,UAAAwE,UAAA,sDAAAjB,EAAAlJ,UAAAN,OAAA+J,OAAA9D,GAAAA,EAAA3F,UAAA,CAAA+L,YAAA,CAAA1L,MAAA6I,EAAA6B,UAAA,EAAAD,cAAA,KAAApL,OAAAC,eAAAuJ,EAAA,aAAA6B,UAAA,IAAApF,GAAAuG,GAAAhD,EAAAvD,EAAA,CAsEKjD,CAAA8sB,EAAAC,GAtEL9pB,EAsEK6pB,EAtELrmB,EAsEK,EAAA3J,IAAA,UAAAa,OAAAmwB,EAAAtlB,GAAAR,KAAAE,EAED,SAAA2I,IAAA,IAAAkd,EAAAC,EAAAC,EAAAC,EAAAC,EAAA5tB,EAAA,YAAAyH,KAAAC,EAAA,SAAA8I,GAAA,cAAAA,EAAAlO,GAAA,WACQlG,KAAKyxB,kBAAmBzxB,KAAK0xB,sBAAqB,CAAAtd,EAAAlO,EAAA,eAAAkO,EAAA1J,EAAA,EACxB,QADwB6mB,EAC3CvxB,KAAK2xB,sBAAc,IAAAJ,EAAAA,OAAIzvB,GAAS,OAkBhB,OAZR,QAAnBsvB,EAAApxB,KAAK2xB,sBAAc,IAAAP,IAAnBpxB,KAAK2xB,eAAmB,IAAI9tB,QAAc,mBAAAhB,EAAAC,UAAAC,OAAIC,EAAI,IAAAC,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAJF,EAAIE,GAAAJ,UAAAI,GAAA,OAAKU,EAAKguB,uBAAyB5uB,CAAI,KAEnFwuB,EAAS,IAAIK,gBAAwC,QAAzBR,EAACrxB,KAAKqwB,QAAQyB,mBAAW,IAAAT,EAAAA,EAAI,CAAC,IACzD/uB,IAAI,QAAStC,KAAKqwB,QAAQ0B,OAEjC/xB,KAAKgyB,GAAK,IAAIC,UAAU,GAAD7uB,OAAIpD,KAAKqwB,QAAQ6B,IAAG,KAAA9uB,OAAIouB,IAC/CxxB,KAAKgyB,GAAGG,QAAU,SAAAvkB,GAAE,OAAIhK,EAAKwuB,QAAQxkB,EAAG,EACxC5N,KAAKgyB,GAAGK,UAAY,SAAAzkB,GAAE,OAAIhK,EAAK0uB,UAAU1kB,EAAG,EAC5C5N,KAAKuyB,oBAAsBC,WACvB,kBAAM5uB,EAAK6uB,0BAA0B,EACL,QADKnB,EACrCtxB,KAAKqwB,QAAQqC,2BAAmB,IAAApB,EAAAA,EAAI,KAExCtxB,KAAK2yB,eAAgB,EAAMve,EAAA1J,EAAA,EAEpB1K,KAAK2xB,gBAAc,EAAAzd,EAAA,SAC7B,WAvBmB,OAAAid,EAAApsB,MAAC,KAADjC,UAAA,KAAA3C,IAAA,aAAAa,MAyBpB,WAA0B,IAAA4xB,EACtB5yB,KAAK6yB,oBAAoB,IAAIziB,MAAM,wDAC5B,QAAPwiB,EAAA5yB,KAAKgyB,UAAE,IAAAY,GAAPA,EAASE,MAAM,KACf9yB,KAAKgyB,GAAK,IACd,GAAC,CAAA7xB,IAAA,OAAAa,OAAA+xB,EAAAlnB,GAAAR,KAAAE,EAED,SAAAgJ,EAAyDye,EAA0BC,GAAwC,IAAAtvB,EAAA2F,EAAA,OAAA+B,KAAAC,EAAA,SAAAmJ,GAAA,cAAAA,EAAAvO,GAAA,OAG3C,GADtEvC,EAAW3D,KAAKkzB,eAA4CF,EAAaC,GACzE3pB,EAAUtJ,KAAKmzB,iCAA8CxvB,KAE/D3D,KAAK0xB,wBAA0B1xB,KAAK2yB,eAAiB3yB,KAAKyxB,iBAAe,CAAAhd,EAAAvO,EAAA,QAC3C,OAA9BlG,KAAKozB,UAAU/wB,KAAKsB,GAAU8Q,EAAA/J,EAAA,EACvBpB,GAAO,OAGU,OAA5BtJ,KAAKqzB,aAAa1vB,GAAU8Q,EAAA/J,EAAA,EACrBpB,GAAO,EAAAiL,EAAA,SACjB,SAZgBgB,EAAAjH,GAAA,OAAAykB,EAAAhuB,MAAA,KAAAjC,UAAA,KAAA3C,IAAA,UAAAK,IAcjB,WACI,OAAOR,KAAKyxB,iBAAmBzxB,KAAK2yB,aACxC,GAAC,CAAAxyB,IAAA,eAAAa,MAED,SAAqB2C,GAA0B,IAAA2vB,EAAAC,EACvCvzB,KAAKwzB,QACLxzB,KAAKgyB,GAAGhiB,KAAKyjB,KAAKC,UAAU/vB,IAIhC3D,KAAK2zB,wBACDhwB,EACA,IAAIyM,MAAM,4CAADhN,OAAgE,QAAhEkwB,EAAoD,QAApDC,EAA6CvzB,KAAKgyB,UAAE,IAAAuB,OAAA,EAAPA,EAASK,kBAAU,IAAAN,EAAAA,EAAI,kBAAiB,oBAAAlwB,OAAmBpD,KAAK2yB,cAAa,MAE3I,GAAC,CAAAxyB,IAAA,YAAAa,MAED,SAAkBgB,GACdhC,KAAK6zB,sBAAwBC,KAAKC,MAClC,IAAMpwB,EAAqB8vB,KAAKO,MAAMhyB,EAAMuB,MAM5C,GALAvD,KAAKi0B,uBAAuBtwB,GAC5B3D,KAAKyH,KAAK9D,EAASL,KAAMK,EAASJ,MAClCvD,KAAKyH,KAAKzH,KAAKk0B,MAAM7jB,QAAS1M,IAGzB3D,KAAK2yB,cAAe,CACrB,IAAMwB,EAAoC,QAAlBxwB,EAASL,KACjCtD,KAAK2yB,cAAgBwB,EACjBA,GACAn0B,KAAKo0B,yBACLp0B,KAAKq0B,gBACLr0B,KAAKyH,KAAKzH,KAAKk0B,MAAMI,SACrBt0B,KAAKu0B,iBAELv0B,KAAKq0B,cAAc1wB,EAASJ,KAEpC,CACJ,GAAC,CAAApD,IAAA,UAAAa,MAED,SAAgBgB,GACZhC,KAAKw0B,wBACLC,aAAaz0B,KAAKuyB,qBAClB,IAAMmC,EAA2B,MAAf1yB,EAAM2yB,KAIxB30B,KAAK6yB,oBAAoB,IAAIziB,MAAM,sDAE/BskB,EAGK10B,KAAKs0B,UAEVt0B,KAAKq0B,cAAc,IAAIjkB,MAAM,4CAGjCpQ,KAAKyH,KAAKzH,KAAKk0B,MAAMU,WAAYF,EACrC,GAEA,CAAAv0B,IAAA,gBAAAa,MAIA,SAAsBmD,GAClB,IAAM0wB,EAAY70B,KAAK4xB,uBAEvB5xB,KAAK4xB,uBAAyB,KAC9B5xB,KAAK2xB,eAAiB,KAEhBkD,IAIN1wB,EAAQ0wB,EAAU,GAAG1wB,GAAS0wB,EAAU,KAC5C,GAEA,CAAA10B,IAAA,sBAAAa,MAIA,SAA4BmD,GACxB,IAAM2wB,EAAS90B,KAAKozB,UACpBpzB,KAAKozB,UAAY,GAAG,IAES1tB,EAFTI,EAAAC,GAEG+uB,GAAM,IAA7B,IAAAhvB,EAAAG,MAAAP,EAAAI,EAAAI,KAAAC,MAA+B,KAApBxC,EAAQ+B,EAAA1E,MACfhB,KAAK2zB,wBAAwBhwB,EAAUQ,EAC3C,CAAC,OAAAkC,GAAAP,EAAAQ,EAAAD,EAAA,SAAAP,EAAAS,GAAA,CAEDvG,KAAK+0B,sBAAsB5wB,EAC/B,GAAC,CAAAhE,IAAA,gBAAAa,MAED,WAA8B,IAAAoG,EAAA,KAEtB4tB,EAAY,EAAEC,EAAA,WACsB,IAAAC,EAC9BvxB,EAAWyD,EAAKgsB,UAAU+B,GAChC3C,WAAW,kBAAMprB,EAAKisB,aAAa1vB,EAAS,EAAEqxB,GAC9CA,GAA+C,QAAtCE,EAAI9tB,EAAKipB,QAAQ+E,6BAAqB,IAAAF,EAAAA,EAAI,GACvD,EAJA,IAAK,IAAMC,KAAan1B,KAAKozB,UAAS6B,IAKtCj1B,KAAKozB,UAAY,GACjBqB,aAAaz0B,KAAKuyB,oBACtB,GAAC,CAAApyB,IAAA,2BAAAa,MAED,WACIhB,KAAK40B,aACL50B,KAAKyH,KAAKzH,KAAKk0B,MAAM/vB,MAAO,IAAIiM,MAAM,sBAC1C,GAAC,CAAAjQ,IAAA,sBAAAa,MAED,WACI,OAAOhB,KAAKgyB,IAAMhyB,KAAKgyB,GAAG4B,aAAe5zB,KAAKgyB,GAAGqD,UACrD,GAAC,CAAAl1B,IAAA,gBAAAa,MAED,WACI,OAAOhB,KAAKgyB,IAAMhyB,KAAKgyB,GAAG4B,aAAe5zB,KAAKgyB,GAAGsD,IACrD,GAAC,CAAAn1B,IAAA,yBAAAa,MAED,WAAuC,IAAAqH,EAAA,KAC9BrI,KAAKqwB,QAAQU,KAAMC,UAIxBhxB,KAAK6zB,sBAAwBC,KAAKC,MAElC/zB,KAAKu1B,oBAAsBC,YAAW3pB,GAAAR,KAAAE,EAAC,SAAAwJ,IAAA,OAAA1J,KAAAC,EAAA,SAAA0J,GAAA,cAAAA,EAAA9O,GAAA,UAC9BmC,EAAKmrB,UAAWnrB,EAAKotB,oBAAmB,CAAAzgB,EAAA9O,EAAA,eAAA8O,EAAAtK,EAAA,eAIxCopB,KAAKC,MAAQ1rB,EAAKwrB,sBAAyBxrB,EAAKgoB,QAAQU,KAAME,qBAAmB,CAAAjc,EAAA9O,EAAA,eAAA8O,EAAAtK,EAAA,UAItFrC,EAAKotB,oBAAsBjD,WAAW,WAClCnqB,EAAKotB,yBAAsB3zB,EAC3BuG,EAAK2pB,GAAGc,MAAM,IAClB,EAAGzqB,EAAKgoB,QAAQU,KAAKG,mBAIrB7oB,EAAK2H,KAAK,OAAQ,CAAC,GAAE,MAAO,WAAe,GAAEpE,KAAK,WAC9C6oB,aAAapsB,EAAKotB,qBAClBptB,EAAKotB,yBAAsB3zB,CAC/B,GAAG,cAAAkT,EAAAtK,EAAA,KAAAqK,EAAA,IACJ,KACP,GAAC,CAAA5U,IAAA,wBAAAa,MAED,WACQhB,KAAKy1B,sBACLhB,aAAaz0B,KAAKy1B,qBAClBz1B,KAAKy1B,yBAAsB3zB,GAE3B9B,KAAKu1B,sBACLG,cAAc11B,KAAKu1B,qBACnBv1B,KAAKu1B,yBAAsBzzB,EAEnC,IA/QJgI,GAAAkC,GAAA1F,EAAA3F,UAAAmJ,GAAAD,GAAAmC,GAAA1F,EAAAuD,GAAAxJ,OAAAC,eAAAgG,EAAA,aAAAoF,UAAA,IAAApF,EAAA,IAAAA,EAAAwD,EAAAD,EAqGKkpB,EA/BA5B,CAyMA,CAtO2B,CAASzuB,G,yZCzCzC,IAAA4D,EAAAuD,EAAAC,EAAA,mBAAAhJ,OAAAA,OAAA,GAAAoF,EAAA4D,EAAAC,UAAA,aAAA3J,EAAA0J,EAAA/I,aAAA,yBAAAiJ,EAAAF,EAAA5D,EAAA9F,EAAA4J,GAAA,IAAAC,EAAA/D,GAAAA,EAAAvF,qBAAAuJ,EAAAhE,EAAAgE,EAAAC,EAAA9J,OAAA+J,OAAAH,EAAAtJ,WAAA,OAAA0J,GAAAF,EAAA,mBAAAL,EAAA5D,EAAA9F,GAAA,IAAA4J,EAAAC,EAAAE,EAAA5D,EAAA,EAAA+D,EAAAlK,GAAA,GAAAmK,GAAA,EAAAC,EAAA,CAAAF,EAAA,EAAApE,EAAA,EAAAuE,EAAAnE,EAAAoE,EAAAC,EAAApE,EAAAoE,EAAAC,KAAAtE,EAAA,GAAAqE,EAAA,SAAAd,EAAAC,GAAA,OAAAE,EAAAH,EAAAI,EAAA,EAAAE,EAAA7D,EAAAkE,EAAAtE,EAAA4D,EAAAY,CAAA,YAAAC,EAAAb,EAAA5D,GAAA,IAAA+D,EAAAH,EAAAK,EAAAjE,EAAA2D,EAAA,GAAAU,GAAAhE,IAAAnG,GAAAyJ,EAAAS,EAAAvH,OAAA8G,IAAA,KAAAzJ,EAAA4J,EAAAM,EAAAT,GAAAc,EAAAH,EAAAF,EAAAO,EAAAb,EAAA,GAAAF,EAAA,GAAA1J,EAAAyK,IAAA3E,KAAAiE,EAAAH,GAAAC,EAAAD,EAAA,OAAAC,EAAA,MAAAD,EAAA,GAAAA,EAAA,GAAA1D,GAAA0D,EAAA,IAAAW,KAAAvK,EAAA0J,EAAA,GAAAa,EAAAX,EAAA,KAAAC,EAAA,EAAAO,EAAAC,EAAAvE,EAAAsE,EAAAtE,EAAA8D,EAAA,IAAAW,EAAAE,IAAAzK,EAAA0J,EAAA,GAAAE,EAAA,GAAA9D,GAAAA,EAAA2E,KAAAb,EAAA,GAAAF,EAAAE,EAAA,GAAA9D,EAAAsE,EAAAtE,EAAA2E,EAAAZ,EAAA,OAAA7J,GAAA0J,EAAA,SAAAY,EAAA,MAAAH,GAAA,EAAArE,CAAA,iBAAA9F,EAAAkK,EAAAO,GAAA,GAAAtE,EAAA,QAAAuE,UAAA,oCAAAP,GAAA,IAAAD,GAAAK,EAAAL,EAAAO,GAAAZ,EAAAK,EAAAH,EAAAU,GAAAhB,EAAAI,EAAA,EAAA3D,EAAA6D,KAAAI,GAAA,CAAAP,IAAAC,EAAAA,EAAA,GAAAA,EAAA,IAAAO,EAAAtE,GAAA,GAAAyE,EAAAV,EAAAE,IAAAK,EAAAtE,EAAAiE,EAAAK,EAAAC,EAAAN,GAAA,OAAA5D,EAAA,EAAAyD,EAAA,IAAAC,IAAA7J,EAAA,QAAAyJ,EAAAG,EAAA5J,GAAA,MAAAyJ,EAAAA,EAAAhJ,KAAAmJ,EAAAG,IAAA,MAAAW,UAAA,wCAAAjB,EAAA1D,KAAA,OAAA0D,EAAAM,EAAAN,EAAA7I,MAAAiJ,EAAA,IAAAA,EAAA,YAAAA,IAAAJ,EAAAG,EAAA,SAAAH,EAAAhJ,KAAAmJ,GAAAC,EAAA,IAAAE,EAAAW,UAAA,oCAAA1K,EAAA,YAAA6J,EAAA,GAAAD,EAAA1D,CAAA,UAAAuD,GAAAU,EAAAC,EAAAtE,EAAA,GAAAiE,EAAAL,EAAAjJ,KAAAqF,EAAAsE,MAAAE,EAAA,YAAAb,GAAAG,EAAA1D,EAAA2D,EAAA,EAAAE,EAAAN,CAAA,SAAAtD,EAAA,UAAAvF,MAAA6I,EAAA1D,KAAAoE,EAAA,GAAAT,EAAA1J,EAAA4J,IAAA,GAAAG,CAAA,KAAAO,EAAA,YAAAR,IAAA,UAAAa,IAAA,UAAAC,IAAA,CAAAnB,EAAAxJ,OAAA4K,eAAA,IAAAhB,EAAA,GAAA/D,GAAA2D,EAAAA,EAAA,GAAA3D,QAAAmE,GAAAR,EAAA,GAAA3D,EAAA,yBAAA2D,GAAAM,EAAAa,EAAArK,UAAAuJ,EAAAvJ,UAAAN,OAAA+J,OAAAH,GAAA,SAAA1D,EAAAD,GAAA,OAAAjG,OAAA6K,eAAA7K,OAAA6K,eAAA5E,EAAA0E,IAAA1E,EAAA6E,UAAAH,EAAAX,GAAA/D,EAAAlG,EAAA,sBAAAkG,EAAA3F,UAAAN,OAAA+J,OAAAD,GAAA7D,CAAA,QAAAyE,EAAApK,UAAAqK,EAAAX,GAAAF,EAAA,cAAAa,GAAAX,GAAAW,EAAA,cAAAD,GAAAA,EAAAK,YAAA,oBAAAf,GAAAW,EAAA5K,EAAA,qBAAAiK,GAAAF,GAAAE,GAAAF,EAAA/J,EAAA,aAAAiK,GAAAF,EAAAjE,EAAA,yBAAAmE,GAAAF,EAAA,oDAAAkB,GAAA,kBAAAC,EAAAtB,EAAAuB,EAAAhF,EAAA,cAAA8D,GAAA/D,EAAAwD,EAAA5D,EAAA2D,GAAA,IAAAG,EAAA3J,OAAAC,eAAA,IAAA0J,EAAA,gBAAA1D,GAAA0D,EAAA,EAAAK,GAAA,SAAA/D,EAAAwD,EAAA5D,EAAA2D,GAAA,SAAAzJ,EAAA0J,EAAA5D,GAAAmE,GAAA/D,EAAAwD,EAAA,SAAAxD,GAAA,YAAAkF,QAAA1B,EAAA5D,EAAAI,EAAA,GAAAwD,EAAAE,EAAAA,EAAA1D,EAAAwD,EAAA,CAAA9I,MAAAkF,EAAA3F,YAAAsJ,EAAA4B,cAAA5B,EAAA6B,UAAA7B,IAAAvD,EAAAwD,GAAA5D,GAAA9F,EAAA,UAAAA,EAAA,WAAAA,EAAA,cAAAiK,GAAA/D,EAAAwD,EAAA5D,EAAA2D,EAAA,UAAA8B,GAAAzF,EAAA2D,EAAAvD,EAAAwD,EAAA1J,EAAAsK,EAAAT,GAAA,QAAAD,EAAA9D,EAAAwE,GAAAT,GAAAE,EAAAH,EAAAhJ,KAAA,OAAAkF,GAAA,YAAAI,EAAAJ,EAAA,CAAA8D,EAAA7D,KAAA0D,EAAAM,GAAAtG,QAAA0F,QAAAY,GAAAyB,KAAA9B,EAAA1J,EAAA,UAAAyL,GAAA3F,GAAA,sBAAA2D,EAAA,KAAAvD,EAAAxD,UAAA,WAAAe,QAAA,SAAAiG,EAAA1J,GAAA,IAAAsK,EAAAxE,EAAAnB,MAAA8E,EAAAvD,GAAA,SAAAwF,EAAA5F,GAAAyF,GAAAjB,EAAAZ,EAAA1J,EAAA0L,EAAAC,EAAA,OAAA7F,EAAA,UAAA6F,EAAA7F,GAAAyF,GAAAjB,EAAAZ,EAAA1J,EAAA0L,EAAAC,EAAA,QAAA7F,EAAA,CAAA4F,OAAA,eAAAE,GAAA1F,EAAAwD,GAAA,QAAAD,EAAA,EAAAA,EAAAC,EAAA/G,OAAA8G,IAAA,KAAAzJ,EAAA0J,EAAAD,GAAAzJ,EAAAG,WAAAH,EAAAG,aAAA,EAAAH,EAAAqL,cAAA,YAAArL,IAAAA,EAAAsL,UAAA,GAAArL,OAAAC,eAAAgG,EAAA2F,GAAA7L,EAAAD,KAAAC,EAAA,WAAA+C,GAAA0G,EAAAzJ,EAAAkG,GAAA,OAAAlG,EAAA8L,GAAA9L,GAAA,SAAAyJ,EAAAvD,GAAA,GAAAA,IAAA,UAAA6F,GAAA7F,IAAA,mBAAAA,GAAA,OAAAA,EAAA,YAAAA,EAAA,UAAAwE,UAAA,4EAAAxE,GAAA,YAAAA,EAAA,UAAA8F,eAAA,oEAAA9F,CAAA,CAAA+F,CAAAxC,EAAA,CAAAyC,CAAAzC,EAAA0C,KAAAC,QAAAC,UAAArM,EAAAkG,GAAA,GAAA4F,GAAArC,GAAA6C,aAAAtM,EAAA2E,MAAA8E,EAAAvD,GAAA,UAAAiG,KAAA,QAAA1C,GAAA8C,QAAAhM,UAAAiM,QAAA/L,KAAA2L,QAAAC,UAAAE,QAAA,wBAAA9C,GAAA,QAAA0C,GAAA,mBAAA1C,CAAA,cAAAqC,GAAArC,GAAA,OAAAqC,GAAA7L,OAAA6K,eAAA7K,OAAA4K,eAAAL,OAAA,SAAAf,GAAA,OAAAA,EAAAsB,WAAA9K,OAAA4K,eAAApB,EAAA,EAAAqC,GAAArC,EAAA,UAAAgD,GAAAhD,EAAAvD,GAAA,OAAAuG,GAAAxM,OAAA6K,eAAA7K,OAAA6K,eAAAN,OAAA,SAAAf,EAAAvD,GAAA,OAAAuD,EAAAsB,UAAA7E,EAAAuD,CAAA,EAAAgD,GAAAhD,EAAAvD,EAAA,UAAAnF,GAAAmF,EAAAwD,EAAAD,GAAA,OAAAC,EAAAmC,GAAAnC,MAAAxD,EAAAjG,OAAAC,eAAAgG,EAAAwD,EAAA,CAAA9I,MAAA6I,EAAAtJ,YAAA,EAAAkL,cAAA,EAAAC,UAAA,IAAApF,EAAAwD,GAAAD,EAAAvD,CAAA,UAAA2F,GAAApC,GAAA,IAAAG,EAAA,SAAAH,EAAAC,GAAA,aAAAqC,GAAAtC,KAAAA,EAAA,OAAAA,EAAA,IAAAvD,EAAAuD,EAAA/I,OAAAgM,aAAA,YAAAxG,EAAA,KAAA0D,EAAA1D,EAAAzF,KAAAgJ,EAAAC,GAAA,wBAAAqC,GAAAnC,GAAA,OAAAA,EAAA,UAAAc,UAAA,kEAAAhB,EAAAiD,OAAAC,QAAAnD,EAAA,CAAAoD,CAAApD,EAAA,0BAAAsC,GAAAnC,GAAAA,EAAAA,EAAA,GADgI,IAY3H2rB,GAAqB,SAArBA,GAAqB,OAArBA,EAAqB,kBAArBA,EAAqB,cAArBA,EAAqB,kBAArBA,CAAqB,EAArBA,IAAqB,IAkBbC,GAAgB,SAAAxF,GAKzB,SAAAwF,EAAoCvF,GAAkC,IAAAztB,EAAF,OAlCxE,SAAA8H,EAAAxE,GAAA,KAAAwE,aAAAxE,GAAA,UAAA4E,UAAA,qCAkC0E5J,CAAA,KAAA00B,GAC1Dz0B,GAARyB,EAAAO,GAAA,KAAAyyB,GAAQ,QALYD,IAAqBx0B,GAAAyB,EAAA,YAEN,IAAEA,EAELytB,QAAAA,EAAgCztB,CAEpE,CAAC,OApCL,SAAAiH,EAAAvD,GAAA,sBAAAA,GAAA,OAAAA,EAAA,UAAAwE,UAAA,sDAAAjB,EAAAlJ,UAAAN,OAAA+J,OAAA9D,GAAAA,EAAA3F,UAAA,CAAA+L,YAAA,CAAA1L,MAAA6I,EAAA6B,UAAA,EAAAD,cAAA,KAAApL,OAAAC,eAAAuJ,EAAA,aAAA6B,UAAA,IAAApF,GAAAuG,GAAAhD,EAAAvD,EAAA,CAoCKjD,CAAAuyB,EAAAxF,GApCL9pB,EAoCKsvB,EApCL9rB,EAoCK,EAAA3J,IAAA,OAAAa,OAAA+xB,EAAAlnB,GAAAR,KAAAE,EAED,SAAA2I,EAAyD8e,EAA0BC,GAAwC,IAAAtvB,EAAAwB,EAAA,OAAAkG,KAAAC,EAAA,SAAA8I,GAAA,cAAAA,EAAAlO,EAKhG,OAHjBvC,EAAW3D,KAAKkzB,eAAeF,EAAaC,GAC5C9tB,EAAsB,CAAC5B,KAAMI,EAAUkyB,SAAU,EAAGC,cAAe,MACzE91B,KAAK+1B,UAAU1zB,KAAK8C,GACpBnF,KAAKg2B,YAAY7wB,GAAMiP,EAAA1J,EAAA,EAChB1K,KAAKmzB,iCAAiCxvB,GAAS,EAAAuQ,EAAA,SACzD,SAPgBqB,EAAAjH,GAAA,OAAAykB,EAAAhuB,MAAA,KAAAjC,UAAA,KAAA3C,IAAA,UAAAa,MASjB,WAAuB,IAAA4C,EAAA,KAGbS,EAAUrE,KAAK+1B,UACrB/1B,KAAK+1B,UAAY,GACjB1xB,EAAQ7B,QAAQ,SAAA2C,GACRA,EAAK2wB,eACLrB,aAAatvB,EAAK2wB,eAEtBlyB,EAAK+vB,wBAAwBxuB,EAAK5B,KAAM,IAAI6M,MAAM,oBACtD,GACApQ,KAAKyH,KAAKzH,KAAKk0B,MAAM+B,SAAS,EAClC,GAAC,CAAA91B,IAAA,YAAAa,OAAAk1B,EAAArqB,GAAAR,KAAAE,EAED,SAAAgJ,EAA0BpP,EAAqBgxB,GAAkB,IAAAxyB,EAAA,OAAA0H,KAAAC,EAAA,SAAAmJ,GAAA,cAAAA,EAAAnK,EAAAmK,EAAAvO,GAAA,cAAAuO,EAAAnK,EAAA,EAAAmK,EAAAvO,EAAA,EAGxCiwB,EAASC,OAAM,OAAhCzyB,EAAQ8Q,EAAAhK,EAAAgK,EAAAvO,EAAG,EAAH,aAGmF,OAHnFuO,EAAAnK,EAAG,EAAHmK,EAAAhK,EAGRzK,KAAKq2B,QAAQlxB,EAAM,YAAF/B,OAAc+B,EAAK5B,KAAKC,IAAG,WAAAJ,OAAU+yB,EAASG,OAAM,uBAAsB7hB,EAAA/J,EAAA,aAI1F1K,KAAKu2B,gBAAgBpxB,GAAO,CAAFsP,EAAAvO,EAAA,eAAAuO,EAAA/J,EAAA,UAI/B1K,KAAKi0B,uBAAuBtwB,GAC5B3D,KAAKyH,KAAK9D,EAASL,KAAMK,EAASJ,MAClCvD,KAAKyH,KAAKzH,KAAKk0B,MAAM7jB,QAAS1M,GAAU,cAAA8Q,EAAA/J,EAAA,KAAA6J,EAAA,iBAC3C,SAjBwBlF,EAAAsB,GAAA,OAAAulB,EAAAnxB,MAAC,KAADjC,UAAA,KAAA3C,IAAA,UAAAa,MAmBzB,SAAkBmE,EAAqBqxB,GAAoB,IAAAC,EAAAC,EAAAtvB,EAAA,KACvD,GAAKpH,KAAK+1B,UAAUljB,SAAS1N,GAI7B,OAAIA,EAAK0wB,WAAwC,QAAhCY,EAAKz2B,KAAKqwB,QAAQsG,sBAAc,IAAAF,EAAAA,EAAI,KACjDz2B,KAAKu2B,gBAAgBpxB,QACrBnF,KAAK2zB,wBAAwBxuB,EAAK5B,KAAM,IAAI6M,MAAM,eAADhN,OAC9BozB,EAAI,mEAK3BrxB,EAAK2wB,cAAgBtD,WACjB,kBAAMprB,EAAK4uB,YAAY7wB,EAAK,EACD,QADCuxB,EAC5B12B,KAAKqwB,QAAQuG,sBAAc,IAAAF,EAAAA,EAAI,KAEvC,GAAC,CAAAv2B,IAAA,cAAAa,MAED,SAAsBmE,GAA2B,IAAAksB,EAAAhpB,EAAA,KAC7C,GAAKrI,KAAK+1B,UAAUljB,SAAS1N,GAA7B,CAIAA,EAAK0wB,WACL1wB,EAAK2wB,cAAgB,KACrB,IAAMe,EAAWpD,KAAKC,UAAUvuB,EAAK5B,MAC/BuzB,EAAe,CACjB,eAAgB,mBAChBC,OAAQ,oBAGZD,EAAQE,cAAgB,UAAH5zB,OAAapD,KAAKqwB,QAAQ0B,OAE/C,IAAMkF,EAAQ,IAAIpF,gBAAwC,QAAzBR,EAACrxB,KAAKqwB,QAAQyB,mBAAW,IAAAT,EAAAA,EAAI,CAAC,GAAG3tB,WAC5DwuB,EAAM+E,EAAQ,GAAH7zB,OAAMpD,KAAKqwB,QAAQ6B,IAAG,KAAA9uB,OAAI6zB,GAAUj3B,KAAKqwB,QAAQ6B,IAElEgF,MAAMhF,EAAK,CACP4E,QAAAA,EACAN,KAAMK,EACNM,OAAQ,SAEPvrB,KAAK,SAAAuqB,GAAQ,OAAI9tB,EAAKiqB,UAAUntB,EAAMgxB,EAAS,GAAC,MAC1C,kBAAM9tB,EAAKguB,QAAQlxB,EAAM0xB,EAAS,EArB7C,CAsBJ,GAAC,CAAA12B,IAAA,kBAAAa,MAED,SAAwBmE,GACpB,IAAMvD,EAAQ5B,KAAK+1B,UAAUl0B,QAAQsD,GACrC,OAAe,IAAXvD,IAGJ5B,KAAK+1B,UAAUh0B,OAAOH,EAAO,IACtB,EACX,IArIJkI,GAAAkC,GAAA1F,EAAA3F,UAAAmJ,GAAAD,GAAAmC,GAAA1F,EAAAuD,GAAAxJ,OAAAC,eAAAgG,EAAA,aAAAoF,UAAA,IAAApF,EAAA,IAAAA,EAAAwD,EAAAD,EA2DKqsB,EAvBAnD,CAiGA,CAxGwB,CAASrwB,G,yZC7BtC,IAAA4D,EAAAuD,EAAAC,EAAA,mBAAAhJ,OAAAA,OAAA,GAAAoF,EAAA4D,EAAAC,UAAA,aAAA3J,EAAA0J,EAAA/I,aAAA,yBAAAiJ,EAAAF,EAAA5D,EAAA9F,EAAA4J,GAAA,IAAAC,EAAA/D,GAAAA,EAAAvF,qBAAAuJ,EAAAhE,EAAAgE,EAAAC,EAAA9J,OAAA+J,OAAAH,EAAAtJ,WAAA,OAAA0J,GAAAF,EAAA,mBAAAL,EAAA5D,EAAA9F,GAAA,IAAA4J,EAAAC,EAAAE,EAAA5D,EAAA,EAAA+D,EAAAlK,GAAA,GAAAmK,GAAA,EAAAC,EAAA,CAAAF,EAAA,EAAApE,EAAA,EAAAuE,EAAAnE,EAAAoE,EAAAC,EAAApE,EAAAoE,EAAAC,KAAAtE,EAAA,GAAAqE,EAAA,SAAAd,EAAAC,GAAA,OAAAE,EAAAH,EAAAI,EAAA,EAAAE,EAAA7D,EAAAkE,EAAAtE,EAAA4D,EAAAY,CAAA,YAAAC,EAAAb,EAAA5D,GAAA,IAAA+D,EAAAH,EAAAK,EAAAjE,EAAA2D,EAAA,GAAAU,GAAAhE,IAAAnG,GAAAyJ,EAAAS,EAAAvH,OAAA8G,IAAA,KAAAzJ,EAAA4J,EAAAM,EAAAT,GAAAc,EAAAH,EAAAF,EAAAO,EAAAb,EAAA,GAAAF,EAAA,GAAA1J,EAAAyK,IAAA3E,KAAAiE,EAAAH,GAAAC,EAAAD,EAAA,OAAAC,EAAA,MAAAD,EAAA,GAAAA,EAAA,GAAA1D,GAAA0D,EAAA,IAAAW,KAAAvK,EAAA0J,EAAA,GAAAa,EAAAX,EAAA,KAAAC,EAAA,EAAAO,EAAAC,EAAAvE,EAAAsE,EAAAtE,EAAA8D,EAAA,IAAAW,EAAAE,IAAAzK,EAAA0J,EAAA,GAAAE,EAAA,GAAA9D,GAAAA,EAAA2E,KAAAb,EAAA,GAAAF,EAAAE,EAAA,GAAA9D,EAAAsE,EAAAtE,EAAA2E,EAAAZ,EAAA,OAAA7J,GAAA0J,EAAA,SAAAY,EAAA,MAAAH,GAAA,EAAArE,CAAA,iBAAA9F,EAAAkK,EAAAO,GAAA,GAAAtE,EAAA,QAAAuE,UAAA,oCAAAP,GAAA,IAAAD,GAAAK,EAAAL,EAAAO,GAAAZ,EAAAK,EAAAH,EAAAU,GAAAhB,EAAAI,EAAA,EAAA3D,EAAA6D,KAAAI,GAAA,CAAAP,IAAAC,EAAAA,EAAA,GAAAA,EAAA,IAAAO,EAAAtE,GAAA,GAAAyE,EAAAV,EAAAE,IAAAK,EAAAtE,EAAAiE,EAAAK,EAAAC,EAAAN,GAAA,OAAA5D,EAAA,EAAAyD,EAAA,IAAAC,IAAA7J,EAAA,QAAAyJ,EAAAG,EAAA5J,GAAA,MAAAyJ,EAAAA,EAAAhJ,KAAAmJ,EAAAG,IAAA,MAAAW,UAAA,wCAAAjB,EAAA1D,KAAA,OAAA0D,EAAAM,EAAAN,EAAA7I,MAAAiJ,EAAA,IAAAA,EAAA,YAAAA,IAAAJ,EAAAG,EAAA,SAAAH,EAAAhJ,KAAAmJ,GAAAC,EAAA,IAAAE,EAAAW,UAAA,oCAAA1K,EAAA,YAAA6J,EAAA,GAAAD,EAAA1D,CAAA,UAAAuD,GAAAU,EAAAC,EAAAtE,EAAA,GAAAiE,EAAAL,EAAAjJ,KAAAqF,EAAAsE,MAAAE,EAAA,YAAAb,GAAAG,EAAA1D,EAAA2D,EAAA,EAAAE,EAAAN,CAAA,SAAAtD,EAAA,UAAAvF,MAAA6I,EAAA1D,KAAAoE,EAAA,GAAAT,EAAA1J,EAAA4J,IAAA,GAAAG,CAAA,KAAAO,EAAA,YAAAR,IAAA,UAAAa,IAAA,UAAAC,IAAA,CAAAnB,EAAAxJ,OAAA4K,eAAA,IAAAhB,EAAA,GAAA/D,GAAA2D,EAAAA,EAAA,GAAA3D,QAAAmE,GAAAR,EAAA,GAAA3D,EAAA,yBAAA2D,GAAAM,EAAAa,EAAArK,UAAAuJ,EAAAvJ,UAAAN,OAAA+J,OAAAH,GAAA,SAAA1D,EAAAD,GAAA,OAAAjG,OAAA6K,eAAA7K,OAAA6K,eAAA5E,EAAA0E,IAAA1E,EAAA6E,UAAAH,EAAAX,GAAA/D,EAAAlG,EAAA,sBAAAkG,EAAA3F,UAAAN,OAAA+J,OAAAD,GAAA7D,CAAA,QAAAyE,EAAApK,UAAAqK,EAAAX,GAAAF,EAAA,cAAAa,GAAAX,GAAAW,EAAA,cAAAD,GAAAA,EAAAK,YAAA,oBAAAf,GAAAW,EAAA5K,EAAA,qBAAAiK,GAAAF,GAAAE,GAAAF,EAAA/J,EAAA,aAAAiK,GAAAF,EAAAjE,EAAA,yBAAAmE,GAAAF,EAAA,oDAAAkB,GAAA,kBAAAC,EAAAtB,EAAAuB,EAAAhF,EAAA,cAAA8D,GAAA/D,EAAAwD,EAAA5D,EAAA2D,GAAA,IAAAG,EAAA3J,OAAAC,eAAA,IAAA0J,EAAA,gBAAA1D,GAAA0D,EAAA,EAAAK,GAAA,SAAA/D,EAAAwD,EAAA5D,EAAA2D,GAAA,SAAAzJ,EAAA0J,EAAA5D,GAAAmE,GAAA/D,EAAAwD,EAAA,SAAAxD,GAAA,YAAAkF,QAAA1B,EAAA5D,EAAAI,EAAA,GAAAwD,EAAAE,EAAAA,EAAA1D,EAAAwD,EAAA,CAAA9I,MAAAkF,EAAA3F,YAAAsJ,EAAA4B,cAAA5B,EAAA6B,UAAA7B,IAAAvD,EAAAwD,GAAA5D,GAAA9F,EAAA,UAAAA,EAAA,WAAAA,EAAA,cAAAiK,GAAA/D,EAAAwD,EAAA5D,EAAA2D,EAAA,UAAAutB,GAAA9wB,EAAAwD,GAAA,IAAAD,EAAAxJ,OAAAyH,KAAAxB,GAAA,GAAAjG,OAAAg3B,sBAAA,KAAAj3B,EAAAC,OAAAg3B,sBAAA/wB,GAAAwD,IAAA1J,EAAAA,EAAAiT,OAAA,SAAAvJ,GAAA,OAAAzJ,OAAAi3B,yBAAAhxB,EAAAwD,GAAAvJ,UAAA,IAAAsJ,EAAAxH,KAAA0C,MAAA8E,EAAAzJ,EAAA,QAAAyJ,CAAA,UAAA2F,GAAAlJ,GAAA,QAAAwD,EAAA,EAAAA,EAAAhH,UAAAC,OAAA+G,IAAA,KAAAD,EAAA,MAAA/G,UAAAgH,GAAAhH,UAAAgH,GAAA,GAAAA,EAAA,EAAAstB,GAAA/2B,OAAAwJ,IAAA,GAAArH,QAAA,SAAAsH,GAAA3I,GAAAmF,EAAAwD,EAAAD,EAAAC,GAAA,GAAAzJ,OAAAk3B,0BAAAl3B,OAAAm3B,iBAAAlxB,EAAAjG,OAAAk3B,0BAAA1tB,IAAAutB,GAAA/2B,OAAAwJ,IAAArH,QAAA,SAAAsH,GAAAzJ,OAAAC,eAAAgG,EAAAwD,EAAAzJ,OAAAi3B,yBAAAztB,EAAAC,GAAA,UAAAxD,CAAA,UAAAnF,GAAAmF,EAAAwD,EAAAD,GAAA,OAAAC,EAAAmC,GAAAnC,MAAAxD,EAAAjG,OAAAC,eAAAgG,EAAAwD,EAAA,CAAA9I,MAAA6I,EAAAtJ,YAAA,EAAAkL,cAAA,EAAAC,UAAA,IAAApF,EAAAwD,GAAAD,EAAAvD,CAAA,UAAAqF,GAAAzF,EAAA2D,EAAAvD,EAAAwD,EAAA1J,EAAAsK,EAAAT,GAAA,QAAAD,EAAA9D,EAAAwE,GAAAT,GAAAE,EAAAH,EAAAhJ,KAAA,OAAAkF,GAAA,YAAAI,EAAAJ,EAAA,CAAA8D,EAAA7D,KAAA0D,EAAAM,GAAAtG,QAAA0F,QAAAY,GAAAyB,KAAA9B,EAAA1J,EAAA,UAAAyL,GAAA3F,GAAA,sBAAA2D,EAAA,KAAAvD,EAAAxD,UAAA,WAAAe,QAAA,SAAAiG,EAAA1J,GAAA,IAAAsK,EAAAxE,EAAAnB,MAAA8E,EAAAvD,GAAA,SAAAwF,EAAA5F,GAAAyF,GAAAjB,EAAAZ,EAAA1J,EAAA0L,EAAAC,EAAA,OAAA7F,EAAA,UAAA6F,EAAA7F,GAAAyF,GAAAjB,EAAAZ,EAAA1J,EAAA0L,EAAAC,EAAA,QAAA7F,EAAA,CAAA4F,OAAA,eAAAE,GAAA1F,EAAAwD,GAAA,QAAAD,EAAA,EAAAA,EAAAC,EAAA/G,OAAA8G,IAAA,KAAAzJ,EAAA0J,EAAAD,GAAAzJ,EAAAG,WAAAH,EAAAG,aAAA,EAAAH,EAAAqL,cAAA,YAAArL,IAAAA,EAAAsL,UAAA,GAAArL,OAAAC,eAAAgG,EAAA2F,GAAA7L,EAAAD,KAAAC,EAAA,WAAA6L,GAAApC,GAAA,IAAAG,EAAA,SAAAH,EAAAC,GAAA,aAAAqC,GAAAtC,KAAAA,EAAA,OAAAA,EAAA,IAAAvD,EAAAuD,EAAA/I,OAAAgM,aAAA,YAAAxG,EAAA,KAAA0D,EAAA1D,EAAAzF,KAAAgJ,EAAAC,GAAA,wBAAAqC,GAAAnC,GAAA,OAAAA,EAAA,UAAAc,UAAA,kEAAAhB,EAAAiD,OAAAC,QAAAnD,EAAA,CAAAoD,CAAApD,EAAA,0BAAAsC,GAAAnC,GAAAA,EAAAA,EAAA,GAYO,IAAeytB,GAAkB,WAKhC,OAjBRnxB,EAeI,SAAAmxB,EACqBpH,IAhBzB,SAAA3lB,EAAAxE,GAAA,KAAAwE,aAAAxE,GAAA,UAAA4E,UAAA,qCAiBM5J,CAAA,KAAAu2B,GAAA,KADmBpH,QAAAA,CAClB,EAjBPvmB,EAiBQ,EAAA3J,IAAA,OAAAa,OAAA+xB,EAAAlnB,GAAAR,KAAAE,EAEJ,SAAA2I,EACIijB,EACAO,GAAW,IAAAn0B,EAAAo0B,EAAAzF,EAAAsE,EAAAM,EAAAjxB,EAAAsO,EAAArR,UAAA,OAAAuI,KAAAC,EAAA,SAAA8I,GAAA,cAAAA,EAAAlO,GAAA,OAmBiB,OAlB5B3C,EAAS4Q,EAAApR,OAAA,QAAAjB,IAAAqS,EAAA,GAAAA,EAAA,QAAGrS,EACZ61B,EAAyCxjB,EAAApR,OAAA,QAAAjB,IAAAqS,EAAA,GAAAA,EAAA,GAAG,CAAC,EAEzC+d,EAAMlyB,KAAK43B,OAAOF,GAClBlB,OAAO10B,EAEPyB,IACI,CAAC,MAAO,UAAUsP,SAASskB,GAC3BjF,GAAO,IAAM,IAAIL,gBAAgBtuB,GAAMG,WAEvC8yB,EAAO/C,KAAKC,UAAUnwB,IAIxBuzB,EAAOtnB,GAAAA,GAAA,CACT,eAAgB,mBAChBunB,OAAQ,oBACLY,GACA33B,KAAK63B,kBAAgBzjB,EAAAlO,EAAA,EAGPgxB,MAAMhF,EAAK,CAACiF,OAAAA,EAAQX,KAAAA,EAAMM,QAAAA,IAAS,OAA5C,OAANjxB,EAAMuO,EAAA3J,EAAA2J,EAAA1J,EAAA,EAEL1K,KAAK83B,qBAAqBjyB,IAAO,EAAAqO,EAAA,SAC3C,SA3BmBqB,EAAAjH,GAAA,OAAAykB,EAAAhuB,MAAA,KAAAjC,UAAA,KAAA3C,IAAA,iBAAAa,MA6BpB,WACI,IAAM81B,EAAU,CAAC,EAMjB,OAJI92B,KAAKqwB,QAAQ0B,QACb+E,EAAQE,cAAgB,UAAH5zB,OAAapD,KAAKqwB,QAAQ0B,QAG5C+E,CACX,GAAC,CAAA32B,IAAA,SAAAa,MAED,SAAiB02B,GAAqB,IAAAK,EAClC,OAAO/3B,KAAKg4B,kBAAkC,QAAjBD,EAAC/3B,KAAKqwB,QAAQ6B,WAAG,IAAA6F,EAAAA,EAAI/3B,KAAKi4B,YAAc,IAAMj4B,KAAKk4B,oBAAoBR,EACxG,GAAC,CAAAv3B,IAAA,uBAAAa,OAAAm3B,EAAAtsB,GAAAR,KAAAE,EAED,SAAAgJ,EAAwC1O,GAAgB,IAAAuyB,EAAA1iB,EAAA7D,EAAAC,EAAAC,EAAA,OAAA1G,KAAAC,EAAA,SAAAmJ,GAAA,cAAAA,EAAAvO,GAAA,OAG3B,GAH2BwP,EAE5C7P,EAAOojB,GAAEpX,EACLhM,EAAOywB,OACyB,QADnB8B,EACfvyB,EAAOixB,QAAQt2B,IAAI,uBAAe,IAAA43B,IAAlCA,EAAoCvlB,SAAS,QAAO,CAAA4B,EAAAvO,EAAA,eAAAuO,EAAAvO,EAAA,EAASL,EAAOuwB,OAAM,OAAAtkB,EAAA2C,EAAAhK,EAAAgK,EAAAvO,EAAA,sBAAAuO,EAAAvO,EAAA,EAASL,EAAOwyB,OAAM,OAAAvmB,EAAA2C,EAAAhK,EAAA,cAAAsH,EAAAD,EAAA2C,EAAA/J,EAAA,GAFtGue,GAAEvT,EACF4gB,OAAMzkB,EACNtO,KAAIwO,IAAA,EAAAwC,EAAA,IAEX,SANmClF,GAAA,OAAA8oB,EAAApzB,MAAA,KAAAjC,UAAA,KAAA3C,IAAA,sBAAAa,MAQpC,SAA4Bq3B,GACxB,OAAOA,EAAKC,QAAQ,OAAQ,GAChC,GAAC,CAAAn4B,IAAA,oBAAAa,MAED,SAA0Bq3B,GACtB,OAAOA,EAAKC,QAAQ,OAAQ,GAChC,IA5EJxuB,GAAAkC,GAAA1F,EAAA3F,UAAAmJ,GAAAD,GAAAmC,GAAA1F,EAAAuD,GAAAxJ,OAAAC,eAAAgG,EAAA,aAAAoF,UAAA,IAAApF,EAAA,IAAAA,EAAAwD,EAAAD,EA4DKsuB,EA3CGpF,CA2DH,CAhEmC,G,yZCZxC,IAAAzsB,EAAAuD,EAAAC,EAAA,mBAAAhJ,OAAAA,OAAA,GAAAoF,EAAA4D,EAAAC,UAAA,aAAA3J,EAAA0J,EAAA/I,aAAA,yBAAAiJ,EAAAF,EAAA5D,EAAA9F,EAAA4J,GAAA,IAAAC,EAAA/D,GAAAA,EAAAvF,qBAAAuJ,EAAAhE,EAAAgE,EAAAC,EAAA9J,OAAA+J,OAAAH,EAAAtJ,WAAA,OAAA0J,GAAAF,EAAA,mBAAAL,EAAA5D,EAAA9F,GAAA,IAAA4J,EAAAC,EAAAE,EAAA5D,EAAA,EAAA+D,EAAAlK,GAAA,GAAAmK,GAAA,EAAAC,EAAA,CAAAF,EAAA,EAAApE,EAAA,EAAAuE,EAAAnE,EAAAoE,EAAAC,EAAApE,EAAAoE,EAAAC,KAAAtE,EAAA,GAAAqE,EAAA,SAAAd,EAAAC,GAAA,OAAAE,EAAAH,EAAAI,EAAA,EAAAE,EAAA7D,EAAAkE,EAAAtE,EAAA4D,EAAAY,CAAA,YAAAC,EAAAb,EAAA5D,GAAA,IAAA+D,EAAAH,EAAAK,EAAAjE,EAAA2D,EAAA,GAAAU,GAAAhE,IAAAnG,GAAAyJ,EAAAS,EAAAvH,OAAA8G,IAAA,KAAAzJ,EAAA4J,EAAAM,EAAAT,GAAAc,EAAAH,EAAAF,EAAAO,EAAAb,EAAA,GAAAF,EAAA,GAAA1J,EAAAyK,IAAA3E,KAAAiE,EAAAH,GAAAC,EAAAD,EAAA,OAAAC,EAAA,MAAAD,EAAA,GAAAA,EAAA,GAAA1D,GAAA0D,EAAA,IAAAW,KAAAvK,EAAA0J,EAAA,GAAAa,EAAAX,EAAA,KAAAC,EAAA,EAAAO,EAAAC,EAAAvE,EAAAsE,EAAAtE,EAAA8D,EAAA,IAAAW,EAAAE,IAAAzK,EAAA0J,EAAA,GAAAE,EAAA,GAAA9D,GAAAA,EAAA2E,KAAAb,EAAA,GAAAF,EAAAE,EAAA,GAAA9D,EAAAsE,EAAAtE,EAAA2E,EAAAZ,EAAA,OAAA7J,GAAA0J,EAAA,SAAAY,EAAA,MAAAH,GAAA,EAAArE,CAAA,iBAAA9F,EAAAkK,EAAAO,GAAA,GAAAtE,EAAA,QAAAuE,UAAA,oCAAAP,GAAA,IAAAD,GAAAK,EAAAL,EAAAO,GAAAZ,EAAAK,EAAAH,EAAAU,GAAAhB,EAAAI,EAAA,EAAA3D,EAAA6D,KAAAI,GAAA,CAAAP,IAAAC,EAAAA,EAAA,GAAAA,EAAA,IAAAO,EAAAtE,GAAA,GAAAyE,EAAAV,EAAAE,IAAAK,EAAAtE,EAAAiE,EAAAK,EAAAC,EAAAN,GAAA,OAAA5D,EAAA,EAAAyD,EAAA,IAAAC,IAAA7J,EAAA,QAAAyJ,EAAAG,EAAA5J,GAAA,MAAAyJ,EAAAA,EAAAhJ,KAAAmJ,EAAAG,IAAA,MAAAW,UAAA,wCAAAjB,EAAA1D,KAAA,OAAA0D,EAAAM,EAAAN,EAAA7I,MAAAiJ,EAAA,IAAAA,EAAA,YAAAA,IAAAJ,EAAAG,EAAA,SAAAH,EAAAhJ,KAAAmJ,GAAAC,EAAA,IAAAE,EAAAW,UAAA,oCAAA1K,EAAA,YAAA6J,EAAA,GAAAD,EAAA1D,CAAA,UAAAuD,GAAAU,EAAAC,EAAAtE,EAAA,GAAAiE,EAAAL,EAAAjJ,KAAAqF,EAAAsE,MAAAE,EAAA,YAAAb,GAAAG,EAAA1D,EAAA2D,EAAA,EAAAE,EAAAN,CAAA,SAAAtD,EAAA,UAAAvF,MAAA6I,EAAA1D,KAAAoE,EAAA,GAAAT,EAAA1J,EAAA4J,IAAA,GAAAG,CAAA,KAAAO,EAAA,YAAAR,IAAA,UAAAa,IAAA,UAAAC,IAAA,CAAAnB,EAAAxJ,OAAA4K,eAAA,IAAAhB,EAAA,GAAA/D,GAAA2D,EAAAA,EAAA,GAAA3D,QAAAmE,GAAAR,EAAA,GAAA3D,EAAA,yBAAA2D,GAAAM,EAAAa,EAAArK,UAAAuJ,EAAAvJ,UAAAN,OAAA+J,OAAAH,GAAA,SAAA1D,EAAAD,GAAA,OAAAjG,OAAA6K,eAAA7K,OAAA6K,eAAA5E,EAAA0E,IAAA1E,EAAA6E,UAAAH,EAAAX,GAAA/D,EAAAlG,EAAA,sBAAAkG,EAAA3F,UAAAN,OAAA+J,OAAAD,GAAA7D,CAAA,QAAAyE,EAAApK,UAAAqK,EAAAX,GAAAF,EAAA,cAAAa,GAAAX,GAAAW,EAAA,cAAAD,GAAAA,EAAAK,YAAA,oBAAAf,GAAAW,EAAA5K,EAAA,qBAAAiK,GAAAF,GAAAE,GAAAF,EAAA/J,EAAA,aAAAiK,GAAAF,EAAAjE,EAAA,yBAAAmE,GAAAF,EAAA,oDAAAkB,GAAA,kBAAAC,EAAAtB,EAAAuB,EAAAhF,EAAA,cAAA8D,GAAA/D,EAAAwD,EAAA5D,EAAA2D,GAAA,IAAAG,EAAA3J,OAAAC,eAAA,IAAA0J,EAAA,gBAAA1D,GAAA0D,EAAA,EAAAK,GAAA,SAAA/D,EAAAwD,EAAA5D,EAAA2D,GAAA,SAAAzJ,EAAA0J,EAAA5D,GAAAmE,GAAA/D,EAAAwD,EAAA,SAAAxD,GAAA,YAAAkF,QAAA1B,EAAA5D,EAAAI,EAAA,GAAAwD,EAAAE,EAAAA,EAAA1D,EAAAwD,EAAA,CAAA9I,MAAAkF,EAAA3F,YAAAsJ,EAAA4B,cAAA5B,EAAA6B,UAAA7B,IAAAvD,EAAAwD,GAAA5D,GAAA9F,EAAA,UAAAA,EAAA,WAAAA,EAAA,cAAAiK,GAAA/D,EAAAwD,EAAA5D,EAAA2D,EAAA,UAAAutB,GAAA9wB,EAAAwD,GAAA,IAAAD,EAAAxJ,OAAAyH,KAAAxB,GAAA,GAAAjG,OAAAg3B,sBAAA,KAAAj3B,EAAAC,OAAAg3B,sBAAA/wB,GAAAwD,IAAA1J,EAAAA,EAAAiT,OAAA,SAAAvJ,GAAA,OAAAzJ,OAAAi3B,yBAAAhxB,EAAAwD,GAAAvJ,UAAA,IAAAsJ,EAAAxH,KAAA0C,MAAA8E,EAAAzJ,EAAA,QAAAyJ,CAAA,UAAA2F,GAAAlJ,GAAA,QAAAwD,EAAA,EAAAA,EAAAhH,UAAAC,OAAA+G,IAAA,KAAAD,EAAA,MAAA/G,UAAAgH,GAAAhH,UAAAgH,GAAA,GAAAA,EAAA,EAAAstB,GAAA/2B,OAAAwJ,IAAA,GAAArH,QAAA,SAAAsH,GAAA3I,GAAAmF,EAAAwD,EAAAD,EAAAC,GAAA,GAAAzJ,OAAAk3B,0BAAAl3B,OAAAm3B,iBAAAlxB,EAAAjG,OAAAk3B,0BAAA1tB,IAAAutB,GAAA/2B,OAAAwJ,IAAArH,QAAA,SAAAsH,GAAAzJ,OAAAC,eAAAgG,EAAAwD,EAAAzJ,OAAAi3B,yBAAAztB,EAAAC,GAAA,UAAAxD,CAAA,UAAAqF,GAAAzF,EAAA2D,EAAAvD,EAAAwD,EAAA1J,EAAAsK,EAAAT,GAAA,QAAAD,EAAA9D,EAAAwE,GAAAT,GAAAE,EAAAH,EAAAhJ,KAAA,OAAAkF,GAAA,YAAAI,EAAAJ,EAAA,CAAA8D,EAAA7D,KAAA0D,EAAAM,GAAAtG,QAAA0F,QAAAY,GAAAyB,KAAA9B,EAAA1J,EAAA,UAAAyL,GAAA3F,GAAA,sBAAA2D,EAAA,KAAAvD,EAAAxD,UAAA,WAAAe,QAAA,SAAAiG,EAAA1J,GAAA,IAAAsK,EAAAxE,EAAAnB,MAAA8E,EAAAvD,GAAA,SAAAwF,EAAA5F,GAAAyF,GAAAjB,EAAAZ,EAAA1J,EAAA0L,EAAAC,EAAA,OAAA7F,EAAA,UAAA6F,EAAA7F,GAAAyF,GAAAjB,EAAAZ,EAAA1J,EAAA0L,EAAAC,EAAA,QAAA7F,EAAA,CAAA4F,OAAA,eAAAE,GAAA1F,EAAAwD,GAAA,QAAAD,EAAA,EAAAA,EAAAC,EAAA/G,OAAA8G,IAAA,KAAAzJ,EAAA0J,EAAAD,GAAAzJ,EAAAG,WAAAH,EAAAG,aAAA,EAAAH,EAAAqL,cAAA,YAAArL,IAAAA,EAAAsL,UAAA,GAAArL,OAAAC,eAAAgG,EAAA2F,GAAA7L,EAAAD,KAAAC,EAAA,WAAA+C,GAAA0G,EAAAzJ,EAAAkG,GAAA,OAAAlG,EAAA8L,GAAA9L,GAAA,SAAAyJ,EAAAvD,GAAA,GAAAA,IAAA,UAAA6F,GAAA7F,IAAA,mBAAAA,GAAA,OAAAA,EAAA,YAAAA,EAAA,UAAAwE,UAAA,4EAAAxE,GAAA,YAAAA,EAAA,UAAA8F,eAAA,oEAAA9F,CAAA,CAAA+F,CAAAxC,EAAA,CAAAyC,CAAAzC,EAAA0C,KAAAC,QAAAC,UAAArM,EAAAkG,GAAA,GAAA4F,GAAArC,GAAA6C,aAAAtM,EAAA2E,MAAA8E,EAAAvD,GAAA,UAAAiG,KAAA,QAAA1C,GAAA8C,QAAAhM,UAAAiM,QAAA/L,KAAA2L,QAAAC,UAAAE,QAAA,wBAAA9C,GAAA,QAAA0C,GAAA,mBAAA1C,CAAA,cAAAqC,GAAArC,GAAA,OAAAqC,GAAA7L,OAAA6K,eAAA7K,OAAA4K,eAAAL,OAAA,SAAAf,GAAA,OAAAA,EAAAsB,WAAA9K,OAAA4K,eAAApB,EAAA,EAAAqC,GAAArC,EAAA,UAAAgD,GAAAhD,EAAAvD,GAAA,OAAAuG,GAAAxM,OAAA6K,eAAA7K,OAAA6K,eAAAN,OAAA,SAAAf,EAAAvD,GAAA,OAAAuD,EAAAsB,UAAA7E,EAAAuD,CAAA,EAAAgD,GAAAhD,EAAAvD,EAAA,UAAAnF,GAAAmF,EAAAwD,EAAAD,GAAA,OAAAC,EAAAmC,GAAAnC,MAAAxD,EAAAjG,OAAAC,eAAAgG,EAAAwD,EAAA,CAAA9I,MAAA6I,EAAAtJ,YAAA,EAAAkL,cAAA,EAAAC,UAAA,IAAApF,EAAAwD,GAAAD,EAAAvD,CAAA,UAAA2F,GAAApC,GAAA,IAAAG,EAAA,SAAAH,EAAAC,GAAA,aAAAqC,GAAAtC,KAAAA,EAAA,OAAAA,EAAA,IAAAvD,EAAAuD,EAAA/I,OAAAgM,aAAA,YAAAxG,EAAA,KAAA0D,EAAA1D,EAAAzF,KAAAgJ,EAAAC,GAAA,wBAAAqC,GAAAnC,GAAA,OAAAA,EAAA,UAAAc,UAAA,kEAAAhB,EAAAiD,OAAAC,QAAAnD,EAAA,CAAAoD,CAAApD,EAAA,0BAAAsC,GAAAnC,GAAAA,EAAAA,EAAA,GAWO,IAAMuuB,GAAW,SAAAC,GAAA,SAAAD,IAAA,IAAA31B,GAXxB,SAAA8H,EAAAxE,GAAA,KAAAwE,aAAAxE,GAAA,UAAA4E,UAAA,qCAWwB5J,CAAA,KAAAq3B,GAAA,QAAA11B,EAAAC,UAAAC,OAAAC,EAAA,IAAAC,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAAF,EAAAE,GAAAJ,UAAAI,GACoC,OADpC/B,GAAAyB,EAAAO,GAAA,KAAAo1B,EAAA,GAAAn1B,OAAAJ,IAAA,aACW,2BAAyBJ,CAAA,QAZ5D,SAAAiH,EAAAvD,GAAA,sBAAAA,GAAA,OAAAA,EAAA,UAAAwE,UAAA,sDAAAjB,EAAAlJ,UAAAN,OAAA+J,OAAA9D,GAAAA,EAAA3F,UAAA,CAAA+L,YAAA,CAAA1L,MAAA6I,EAAA6B,UAAA,EAAAD,cAAA,KAAApL,OAAAC,eAAAuJ,EAAA,aAAA6B,UAAA,IAAApF,GAAAuG,GAAAhD,EAAAvD,EAAA,CAY4DjD,CAAAk1B,EAAAC,GAZ5DlyB,EAY4DiyB,EAZ5DzuB,EAY4D,EAAA3J,IAAA,aAAAa,OAAAy3B,EAAA5sB,GAAAR,KAAAE,EAExD,SAAA2I,EAAwBwkB,GAA4B,IAAAC,EAAAzU,EAAA4S,EAAAX,EAAA,OAAA9qB,KAAAC,EAAA,SAAA8I,GAAA,cAAAA,EAAAlO,GAAA,OAMjB,OALzBge,EAAO0U,mBAAiD,QAA/BD,EAAED,EAAyBxU,YAAI,IAAAyU,EAAAA,EAAI,IAC9D7B,EAAOtnB,GAAAA,GAAA,GACJxP,KAAK63B,kBAAgB,IACxBd,OAAQ,mBACR,sBAAuB,yBAAF3zB,OAA2B8gB,EAAI,KACpD,iBAAkBwU,EAAKt0B,OAAIgQ,EAAAlO,EAAA,EAGRgxB,MAAMl3B,KAAK43B,OAAO,SAAU,CAC/CT,OAAQ,OACRX,KAAMkC,EACN5B,QAAAA,IACF,OAJY,OAARX,EAAQ/hB,EAAA3J,EAAA2J,EAAA1J,EAAA,EAMP1K,KAAK83B,qBAA2B3B,IAAS,EAAAjiB,EAAA,SACnD,SAhBsBqB,GAAA,OAAAkjB,EAAA1zB,MAAC,KAADjC,UAAA,KAAA3C,IAAA,cAAAa,OAAA63B,EAAAhtB,GAAAR,KAAAE,EAkBvB,SAAAgJ,EAAyBnP,GAAU,OAAAiG,KAAAC,EAAA,SAAAmJ,GAAA,cAAAA,EAAAvO,EAAA,OAAAuO,EAAA/J,EAAA,EACxB1K,KAAKgQ,KAAK,MAAO,SAAW5K,GAAG,EAAAmP,EAAA,SACzC,SAFuBjG,GAAA,OAAAuqB,EAAA9zB,MAAC,KAADjC,UAAA,KAAA3C,IAAA,kBAAAa,OAAA83B,EAAAjtB,GAAAR,KAAAE,EAIxB,SAAAwJ,EAA6B1P,GAAa,IAAA0zB,EAAA,OAAA1tB,KAAAC,EAAA,SAAA0J,GAAA,cAAAA,EAAA9O,EAEa,OAD7C6yB,EAAe,IAAIlH,gBACzBxsB,EAAI7C,QAAQ,SAAA4C,GAAE,OAAI2zB,EAAaC,OAAO,OAAQ5zB,EAAG,GAAE4P,EAAAtK,EAAA,EAC5C1K,KAAKgQ,KAAK,MAAO,SAAW+oB,GAAa,EAAAhkB,EAAA,SACnD,SAJ2B1F,GAAA,OAAAypB,EAAA/zB,MAAC,KAADjC,UAAA,KApChCgH,GAAAkC,GAAA1F,EAAA3F,UAAAmJ,GAAAD,GAAAmC,GAAA1F,EAAAuD,GAAAxJ,OAAAC,eAAAgG,EAAA,aAAAoF,UAAA,IAAApF,EAAA,IAAAA,EAAAwD,EAAAD,EAgC4BivB,EAlBDD,EAFiCJ,CAwB5B,CAzBR,CAAShB,I","sources":["webpack://PservClient/webpack/universalModuleDefinition","webpack://PservClient/webpack/bootstrap","webpack://PservClient/webpack/runtime/define property getters","webpack://PservClient/webpack/runtime/hasOwnProperty shorthand","webpack://PservClient/webpack/runtime/make namespace object","webpack://PservClient/./src/EventTarget.ts","webpack://PservClient/./src/AbstractChatClient.ts","webpack://PservClient/./src/IndexedObjectCollection.ts","webpack://PservClient/./src/state-tracker/AsyncUtils.ts","webpack://PservClient/./src/state-tracker/TopicHistoryWindow.ts","webpack://PservClient/./src/state-tracker/RoomMessagesHistory.ts","webpack://PservClient/./src/state-tracker/MessagesManager.ts","webpack://PservClient/./src/state-tracker/FollowedTopicsManager.ts","webpack://PservClient/./src/state-tracker/RoomsManager.ts","webpack://PservClient/./src/state-tracker/functions.ts","webpack://PservClient/./src/state-tracker/SpacesManager.ts","webpack://PservClient/./src/Permissions.ts","webpack://PservClient/./src/state-tracker/PermissionsManager.ts","webpack://PservClient/./src/state-tracker/EmoticonsManager.ts","webpack://PservClient/./src/state-tracker/UsersManager.ts","webpack://PservClient/./src/state-tracker/RelationshipsManager.ts","webpack://PservClient/./src/state-tracker/ChatStateTracker.ts","webpack://PservClient/./src/WebSocketChatClient.ts","webpack://PservClient/./src/WebApiChatClient.ts","webpack://PservClient/./src/AbstractRestClient.ts","webpack://PservClient/./src/FilesClient.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"PservClient\"] = factory();\n\telse\n\t\troot[\"PservClient\"] = factory();\n})(this, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export type EventHandler<EventT> = (ev?: EventT) => void;\ntype HandlersMap = Map<string, EventHandler<any>[]>;\ntype EventMapLike = Record<string, any>;\ntype KnownEventNames<EventT> = EventT extends EventMapLike ? keyof EventT & string : string;\ntype EventPayload<EventT, EventName extends string = never> = EventT extends EventMapLike\n ? [EventName] extends [never]\n ? EventT[keyof EventT]\n : EventName extends keyof EventT\n ? EventT[EventName]\n : EventT[keyof EventT]\n : EventT;\n\nexport type ChangeEventMap<Payload = void> = { change: Payload };\n\nexport interface ObservableInterface<EventT = any> {\n on<EventName extends KnownEventNames<EventT>>(eventName: EventName, handler: EventHandler<EventPayload<EventT, EventName>>): this;\n on(eventName: string, handler: EventHandler<EventPayload<EventT>>): this;\n once<EventName extends KnownEventNames<EventT>>(eventName: EventName, handler: EventHandler<EventPayload<EventT, EventName>>): this;\n once(eventName: string, handler: EventHandler<EventPayload<EventT>>): this;\n off<EventName extends KnownEventNames<EventT>>(eventName: EventName, handler: EventHandler<EventPayload<EventT, EventName>>): this;\n off(eventName: string, handler: EventHandler<EventPayload<EventT>>): this;\n}\n\nexport class EventTarget<EventMapT extends Record<string, any> = Record<string, any>> implements ObservableInterface<EventMapT> {\n protected events: HandlersMap = new Map<string, EventHandler<any>[]>();\n protected onceEvents: HandlersMap = new Map<string, EventHandler<any>[]>();\n\n public on<K extends keyof EventMapT & string>(eventName: K, handler: EventHandler<EventMapT[K]>): this;\n public on(eventName: string, handler: EventHandler<unknown>): this;\n public on(eventName: string, handler: EventHandler<any>): this {\n this.addHandler(this.events, eventName, handler);\n return this;\n }\n\n public once<K extends keyof EventMapT & string>(eventName: K, handler: EventHandler<EventMapT[K]>): this;\n public once(eventName: string, handler: EventHandler<unknown>): this;\n public once(eventName: string, handler: EventHandler<any>): this {\n this.addHandler(this.onceEvents, eventName, handler);\n return this;\n }\n\n public off<K extends keyof EventMapT & string>(eventName: K, handler: EventHandler<EventMapT[K]>): this;\n public off(eventName: string, handler: EventHandler<unknown>): this;\n public off(eventName: string, handler: EventHandler<any>): this {\n const index = this.events.get(eventName)?.indexOf(handler);\n if (index === undefined || index < 0) {\n return this;\n }\n this.events.get(eventName)?.splice(index, 1);\n return this;\n }\n\n public emit<K extends keyof EventMapT & string>(eventName: K, event: EventMapT[K]): this;\n public emit(eventName: string, event?: unknown): this;\n public emit(eventName: string, event?: any): this {\n this.callHandlers(this.events, eventName, event);\n this.callHandlers(this.onceEvents, eventName, event);\n this.onceEvents.delete(eventName);\n return this;\n }\n\n private addHandler(map: HandlersMap, eventName: string, handler: EventHandler<any>): void {\n const handlers = map.get(eventName) ?? [];\n handlers.push(handler);\n map.set(eventName, handlers);\n }\n\n private callHandlers(map: HandlersMap, eventName: string, event: unknown): void {\n map.get(eventName)?.forEach(callback => callback(event));\n }\n}","import {\n Bye,\n GetSession,\n JoinSpace,\n Session,\n SpaceJoined,\n Error as ErrorType,\n SpaceLeft,\n SpaceMemberJoined,\n SpaceMemberLeft,\n SpaceMemberUpdated,\n SpaceDeleted,\n SpaceMembers,\n SpaceRooms,\n NewRole,\n RoomDeleted,\n RoomJoined,\n RoomLeft,\n RoomMemberLeft,\n RoomMemberJoined,\n RoomMembers,\n NewRoom,\n NewTopic,\n TopicDeleted,\n NewMessage,\n GetPermissionOverwrites,\n GetComputedPermissions,\n LeaveSpace,\n CreateSpace,\n DeleteSpace,\n GetSpaceMembers,\n GetSpaceRooms,\n CreateRole,\n DeleteRole,\n AssignRole,\n DeassignRole,\n SetPermissionOverwrites,\n JoinRoom,\n LeaveRoom,\n CreateRoom,\n DeleteRoom,\n GetRoomMembers,\n CreateTopic,\n DeleteTopic,\n CreateMessage,\n Envelope,\n PermissionOverwrites,\n PermissionOverwritesUpdated,\n RoomMemberUpdated,\n UpdateRole,\n RoleUpdated,\n Ack,\n UserUpdated,\n UpdateRoom,\n RoomUpdated,\n UpdateSpace,\n SpaceUpdated,\n PermissionOverwriteTargets,\n GetPermissionOverwriteTargets,\n Owners,\n Ok,\n GetOwners,\n CreateOwner,\n RoleDeleted,\n FollowedTopicUpdated,\n TopicFollowed,\n FollowedTopics,\n FollowTopic,\n UpdateFollowedTopic,\n GetFollowedTopics,\n Messages,\n GetMessages,\n Topics,\n GetTopics,\n TopicUpdated,\n UpdateTopic,\n GetDiscoverableSpaces,\n DiscoverableSpaces,\n CreateEmoticon,\n DeleteEmoticon,\n GetEmoticons,\n Emoticons,\n EmoticonDeleted,\n NewEmoticon,\n Bans,\n GetBans,\n Ban,\n Unban,\n Kick,\n ClientData,\n GetClientData,\n SetClientData,\n GetRoomSummary,\n GetSpaceSummary,\n RoomSummaryEvent,\n SpaceSummaryEvent,\n UpdateSpaceMember,\n Relationships,\n RelationshipDeleted,\n NewRelationship,\n DeleteRelationship,\n CreateRelationship,\n RoomSummaryUpdated,\n Pong,\n Ping,\n RedactMessages,\n MessagesRedacted,\n ReportAbuse,\n UpdateRoomMember,\n GetRelationships,\n GetUserInfo,\n UserInfo,\n SetSessionData,\n SessionData,\n GetSessionData,\n UnfollowTopic,\n TopicUnfollowed,\n} from \"./types/src\";\nimport {EventTarget} from \"./EventTarget\";\n\ntype ArrayOfPromiseResolvers = [(value: any) => void, (reason?: any) => void];\ntype ExtraEventMap = Record<string, any>;\n\ntype CommandDefinition<RequestT, ResponseT> = {\n request: RequestT;\n response: ResponseT;\n};\n\nexport abstract class AbstractChatClient<AdditionalEvents extends ExtraEventMap = {}> extends EventTarget<EventsMap & AdditionalEvents> {\n protected awaitingResponse: Map<string, ArrayOfPromiseResolvers> = new Map<string, ArrayOfPromiseResolvers>();\n protected sentCounter: number = 0;\n\n public abstract send<CommandType extends keyof CommandsMap>\n (commandType: CommandType, commandData: CommandRequest<CommandType>): Promise<CommandResult<CommandResponse<CommandType>>>;\n\n protected createEnvelope<CommandT>(type: string, data: CommandT): Envelope<CommandT> {\n return {\n type, data, ref: (++this.sentCounter).toString()\n };\n }\n\n protected createPromiseFromCommandEnvelope\n <CommandT extends keyof CommandsMap>(envelope: Envelope<CommandRequest<CommandT>>):\n Promise<CommandResult<CommandResponse<CommandT>>> {\n return new Promise((...args) =>\n this.awaitingResponse.set(envelope.ref as string, args));\n }\n\n protected handleIncomingEnvelope(envelope: Envelope): void {\n if (!this.awaitingResponse.has(envelope.ref)) {\n return;\n }\n const isError = envelope.type === 'Error';\n this.awaitingResponse.get(envelope.ref)[0]({\n data: isError ? null : envelope.data,\n error: isError ? envelope.data : null,\n } as CommandResult<any>);\n this.awaitingResponse.delete(envelope.ref);\n }\n\n protected handleEnvelopeSendError(envelope: Envelope, error: any): void {\n if (!this.awaitingResponse.has(envelope.ref)) {\n return;\n }\n this.awaitingResponse.get(envelope.ref)[1](error);\n this.awaitingResponse.delete(envelope.ref);\n }\n\n /**\n * Reject every command that is still waiting for a response.\n *\n * Call this whenever the transport can no longer deliver an answer (the\n * connection dropped). The server will never reply to those commands, so\n * leaving them pending would hang every caller awaiting them forever -\n * including cached lookups in the state tracker, which would then keep a\n * view stuck on a loader even after a successful reconnect.\n */\n protected failAwaitingResponses(error: any): void {\n if (! this.awaitingResponse.size) {\n return;\n }\n\n const pending = Array.from(this.awaitingResponse.values());\n this.awaitingResponse.clear();\n\n for (const [, reject] of pending) {\n reject(error);\n }\n }\n}\n\nexport type CommandResult<ResultT> = {data?: ResultT, error?: ErrorType};\nexport type CommandRequest<CommandType extends keyof CommandsMap> = CommandsMap[CommandType]['request'];\nexport type CommandResponse<CommandType extends keyof CommandsMap> = CommandsMap[CommandType]['response'];\n\n /**\n * Map of incoming events.\n */\n export type EventsMap = {\n // General Events\n Bye: Bye,\n Ok: Ok,\n Error: ErrorType,\n Session: Session,\n Permissions: Permissions,\n PermissionOverwrites: PermissionOverwrites,\n PermissionOverwritesUpdated: PermissionOverwritesUpdated,\n PermissionOverwriteTargets: PermissionOverwriteTargets,\n Owners: Owners,\n NewEmoticon: NewEmoticon,\n EmoticonDeleted: EmoticonDeleted,\n Emoticons: Emoticons,\n Bans: Bans,\n ClientData: ClientData,\n SessionData: SessionData,\n NewRelationship: NewRelationship,\n RelationshipDeleted: RelationshipDeleted,\n Relationships: Relationships,\n Pong: Pong,\n UserInfo: UserInfo,\n // Space events\n DiscoverableSpaces: DiscoverableSpaces,\n SpaceJoined: SpaceJoined,\n SpaceLeft: SpaceLeft,\n SpaceMemberJoined: SpaceMemberJoined,\n SpaceMemberLeft: SpaceMemberLeft,\n SpaceMemberUpdated: SpaceMemberUpdated,\n SpaceUpdated: SpaceUpdated,\n SpaceDeleted: SpaceDeleted,\n SpaceMembers: SpaceMembers,\n SpaceRooms: SpaceRooms,\n NewRole: NewRole,\n RoleDeleted: RoleDeleted,\n RoleUpdated: RoleUpdated,\n SpaceSummaryEvent: SpaceSummaryEvent,\n // Room events\n RoomJoined: RoomJoined,\n RoomLeft: RoomLeft,\n RoomMemberJoined: RoomMemberJoined,\n RoomMemberLeft: RoomMemberLeft,\n RoomMemberUpdated: RoomMemberUpdated,\n RoomMembers: RoomMembers,\n NewRoom: NewRoom,\n RoomDeleted: RoomDeleted,\n RoomUpdated: RoomUpdated,\n RoomSummaryEvent: RoomSummaryEvent,\n RoomSummaryUpdated: RoomSummaryUpdated,\n // Topic events\n NewTopic: NewTopic,\n TopicDeleted: TopicDeleted,\n NewMessage: NewMessage,\n UserUpdated: UserUpdated,\n TopicFollowed: TopicFollowed,\n TopicUnfollowed: TopicUnfollowed,\n FollowedTopics: FollowedTopics,\n FollowedTopicUpdated: FollowedTopicUpdated,\n Messages: Messages,\n Topics: Topics,\n TopicUpdated: TopicUpdated,\n MessagesRedacted: MessagesRedacted,\n};\n\n/**\n * Map of commands and their corresponding events.\n */\nexport type CommandsMap = {\n // General commands\n GetSession: CommandDefinition<GetSession, EventsMap['Session']>,\n SetPermissionOverwrites: CommandDefinition<SetPermissionOverwrites, EventsMap['PermissionOverwritesUpdated']>,\n GetPermissionOverwrites: CommandDefinition<GetPermissionOverwrites, EventsMap['PermissionOverwrites']>,\n GetComputedPermissions: CommandDefinition<GetComputedPermissions, EventsMap['Permissions']>,\n GetPermissionOverwriteTargets: CommandDefinition<GetPermissionOverwriteTargets, EventsMap['PermissionOverwriteTargets']>,\n GetOwners: CommandDefinition<GetOwners, EventsMap['Owners']>,\n CreateOwner: CommandDefinition<CreateOwner, EventsMap['Owners']>,\n DeleteOwner: CommandDefinition<CreateOwner, EventsMap['Owners']>,\n CreateEmoticon: CommandDefinition<CreateEmoticon, EventsMap['NewEmoticon']>,\n DeleteEmoticon: CommandDefinition<DeleteEmoticon, EventsMap['EmoticonDeleted']>,\n GetEmoticons: CommandDefinition<GetEmoticons, EventsMap['Emoticons']>,\n GetBans: CommandDefinition<GetBans, EventsMap['Bans']>,\n Ban: CommandDefinition<Ban, EventsMap['Ok']>,\n Unban: CommandDefinition<Unban, EventsMap['Ok']>,\n Kick: CommandDefinition<Kick, EventsMap['Ok']>,\n GetClientData: CommandDefinition<GetClientData, EventsMap['ClientData']>,\n SetClientData: CommandDefinition<SetClientData, EventsMap['Ok']>,\n DeleteRelationship: CommandDefinition<DeleteRelationship, EventsMap['RelationshipDeleted']>,\n CreateRelationship: CommandDefinition<CreateRelationship, EventsMap['NewRelationship']>,\n GetRelationships: CommandDefinition<GetRelationships, EventsMap['Relationships']>,\n Ping: CommandDefinition<Ping, EventsMap['Pong']>,\n ReportAbuse: CommandDefinition<ReportAbuse, EventsMap['Ok']>,\n GetUserInfo: CommandDefinition<GetUserInfo, EventsMap['UserInfo']>,\n GetSessionData: CommandDefinition<GetSessionData, EventsMap['SessionData']>,\n SetSessionData: CommandDefinition<SetSessionData, EventsMap['Ok']>,\n // Space commands\n GetDiscoverableSpaces: CommandDefinition<GetDiscoverableSpaces, EventsMap['DiscoverableSpaces']>,\n JoinSpace: CommandDefinition<JoinSpace, EventsMap['SpaceJoined']>,\n LeaveSpace: CommandDefinition<LeaveSpace, EventsMap['SpaceLeft']>,\n CreateSpace: CommandDefinition<CreateSpace, EventsMap['SpaceJoined']>,\n UpdateSpace: CommandDefinition<UpdateSpace, EventsMap['SpaceUpdated']>,\n DeleteSpace: CommandDefinition<DeleteSpace, EventsMap['SpaceDeleted']>,\n GetSpaceMembers: CommandDefinition<GetSpaceMembers, EventsMap['SpaceMembers']>,\n GetSpaceRooms: CommandDefinition<GetSpaceRooms, EventsMap['SpaceRooms']>,\n CreateRole: CommandDefinition<CreateRole, EventsMap['NewRole']>,\n DeleteRole: CommandDefinition<DeleteRole, EventsMap['RoleDeleted']>,\n UpdateRole: CommandDefinition<UpdateRole, EventsMap['RoleUpdated']>,\n AssignRole: CommandDefinition<AssignRole, EventsMap['SpaceMemberUpdated'] | EventsMap['RoomMemberUpdated']>,\n DeassignRole: CommandDefinition<DeassignRole, EventsMap['SpaceMemberUpdated'] | EventsMap['RoomMemberUpdated']>,\n GetSpaceSummary: CommandDefinition<GetSpaceSummary, EventsMap['SpaceSummaryEvent']>,\n UpdateSpaceMember: CommandDefinition<UpdateSpaceMember, EventsMap['SpaceMemberUpdated']>,\n // Room commands\n JoinRoom: CommandDefinition<JoinRoom, EventsMap['RoomJoined']>,\n LeaveRoom: CommandDefinition<LeaveRoom, EventsMap['RoomLeft']>,\n CreateRoom: CommandDefinition<CreateRoom, EventsMap['RoomJoined']>,\n DeleteRoom: CommandDefinition<DeleteRoom, EventsMap['RoomDeleted']>,\n UpdateRoom: CommandDefinition<UpdateRoom, EventsMap['RoomUpdated']>,\n GetRoomMembers: CommandDefinition<GetRoomMembers, EventsMap['RoomMembers']>,\n GetRoomSummary: CommandDefinition<GetRoomSummary, EventsMap['RoomSummaryEvent']>,\n UpdateRoomMember: CommandDefinition<UpdateRoomMember, EventsMap['RoomMemberUpdated']>,\n // Topic commands\n CreateTopic: CommandDefinition<CreateTopic, EventsMap['NewTopic']>,\n DeleteTopic: CommandDefinition<DeleteTopic, EventsMap['TopicDeleted']>,\n CreateMessage: CommandDefinition<CreateMessage, EventsMap['NewMessage']>,\n Ack: CommandDefinition<Ack, EventsMap['FollowedTopicUpdated'] | EventsMap['Ok']>,\n FollowTopic: CommandDefinition<FollowTopic, EventsMap['TopicFollowed']>,\n UnfollowTopic: CommandDefinition<UnfollowTopic, EventsMap['TopicUnfollowed']>,\n UpdateFollowedTopic: CommandDefinition<UpdateFollowedTopic, EventsMap['FollowedTopicUpdated']>,\n GetFollowedTopics: CommandDefinition<GetFollowedTopics, EventsMap['FollowedTopics']>,\n GetMessages: CommandDefinition<GetMessages, EventsMap['Messages']>,\n GetTopics: CommandDefinition<GetTopics, EventsMap['Topics']>,\n UpdateTopic: CommandDefinition<UpdateTopic, EventsMap['TopicUpdated']>,\n RedactMessages: CommandDefinition<RedactMessages, EventsMap['MessagesRedacted']>,\n }\n","import {EventHandler, EventTarget, ObservableInterface} from \"./EventTarget\";\n\nexport class IndexedCollection<KeyT, ValueT> {\n protected _items: Map<KeyT, ValueT> = new Map();\n\n public constructor(items: [key: KeyT, value: ValueT][] = []) {\n this.set(...items);\n }\n\n public get items(): Map<KeyT, ValueT> {\n return this._items;\n }\n\n public get length(): number {\n return this._items.size;\n }\n\n public set(...items: [KeyT, ValueT][]): void {\n for (const item of items) {\n this._items.set(item[0], item[1]);\n }\n }\n\n public get(id: KeyT): ValueT | undefined {\n return this.items.get(id);\n }\n\n public has(id: KeyT): boolean {\n return this.items.has(id);\n }\n\n public delete(...ids: KeyT[]): void {\n for (const id of ids) {\n this.items.delete(id);\n }\n }\n\n public deleteAll(): void {\n this.items.clear();\n }\n\n public findBy(field: keyof ValueT, valueToFind: any, limit: number = Infinity): IndexedCollection<KeyT, ValueT> {\n const result = new IndexedCollection<KeyT, ValueT>();\n for (const [key, value] of this.items.entries()) {\n if (result.length >= limit) {\n break;\n }\n if (value[field] === valueToFind) {\n result.set([key, value]);\n }\n }\n return result;\n }\n\n public createMirror(): IndexedCollection<KeyT, ValueT> {\n const copy = new IndexedCollection<KeyT, ValueT>();\n copy._items = this._items;\n return copy;\n }\n}\n\nexport class IndexedObjectCollection<T> {\n protected _items: IndexedCollection<string, T>;\n\n public constructor(\n public readonly id: keyof T | ((item: T) => any),\n items: T[] = [],\n ) {\n this._items = new IndexedCollection<string, T>();\n this.set(...items);\n }\n\n public get items(): T[] {\n return Array.from(this._items.items.values());\n }\n\n public get length(): number {\n return this._items.length;\n }\n\n public set(...items: T[]): void {\n this._items.set(...(items.map(item => [this.getId(item), item] as [string, T])));\n }\n\n public get(id: any): T | undefined {\n return this._items.get(id);\n }\n\n public getAt(index: number): T | undefined {\n return this.items[index];\n }\n\n public has(id: any): boolean {\n return this._items.has(id);\n }\n\n public delete(...ids: any[]): void {\n this._items.delete(...ids);\n }\n\n public deleteAll(): void {\n this._items.deleteAll();\n }\n\n public findBy(field: keyof T, valueToFind: any, limit: number = null): IndexedObjectCollection<T> {\n const result = new IndexedObjectCollection<T>(this.id);\n for (const value of this.items) {\n if (limit && result.length === limit) {\n break;\n }\n if (value[field] === valueToFind) {\n result.set(value);\n }\n }\n return result;\n }\n\n public createMirror(): IndexedObjectCollection<T> {\n const copy = new IndexedObjectCollection<T>(this.id);\n copy._items = this._items;\n return copy;\n }\n\n protected getId(item: T): any {\n return typeof this.id === 'function' ? this.id(item) : item[this.id];\n }\n}\n\nexport type CollectionEventMap<IdType = string> = {\n change: { setItems?: IdType[]; deletedItems?: IdType[] };\n};\n\nexport class ObservableIndexedCollection<\n KeyT,\n ValueT,\n EventMapT extends CollectionEventMap<KeyT> = CollectionEventMap<KeyT>\n> extends IndexedCollection<KeyT, ValueT> implements ObservableInterface<EventMapT> {\n\n protected eventTarget: EventTarget<EventMapT>;\n\n public constructor(items: [key: KeyT, value: ValueT][] = []) {\n super();\n this.eventTarget = new EventTarget<EventMapT>();\n this.set(...items);\n }\n\n public set(...items: [KeyT, ValueT][]) {\n if (items.length) {\n super.set(...items);\n this.eventTarget.emit('change', { setItems: items.map(item => item[0]) });\n }\n }\n\n public delete(...ids: KeyT[]) {\n if (ids.length) {\n super.delete(...ids);\n this.eventTarget.emit('change', { deletedItems: ids });\n }\n }\n\n public deleteAll() {\n if (this.length) {\n const ids = Array.from(this._items.keys());\n super.deleteAll();\n this.eventTarget.emit('change', { deletedItems: Array.from(ids) });\n }\n }\n\n public createMirror(): ObservableIndexedCollection<KeyT, ValueT, EventMapT> {\n const copy = new ObservableIndexedCollection<KeyT, ValueT, EventMapT>();\n copy.eventTarget = this.eventTarget;\n copy._items = this._items;\n return copy;\n }\n\n public on<K extends keyof EventMapT & string>(eventName: K, handler: EventHandler<EventMapT[K]>): this {\n this.eventTarget.on(eventName, handler);\n return this;\n }\n\n public once<K extends keyof EventMapT & string>(eventName: K, handler: EventHandler<EventMapT[K]>): this {\n this.eventTarget.once(eventName, handler);\n return this;\n }\n\n public off<K extends keyof EventMapT & string>(eventName: K, handler: EventHandler<EventMapT[K]>): this {\n this.eventTarget.off(eventName, handler);\n return this;\n }\n}\n\nexport class ObservableIndexedObjectCollection<\n ItemT,\n EventMapT extends CollectionEventMap = CollectionEventMap\n> extends IndexedObjectCollection<ItemT> implements ObservableInterface<EventMapT> {\n protected eventTarget: EventTarget<EventMapT>;\n\n public constructor(\n id: keyof ItemT | ((item: ItemT) => string),\n items: ItemT[] = [],\n ) {\n super(id);\n this.eventTarget = new EventTarget<EventMapT>();\n this.set(...items);\n }\n\n public set(...items: ItemT[]) {\n if (items.length) {\n super.set(...items);\n this.eventTarget.emit('change', { setItems: items.map(item => this.getId(item)) });\n }\n }\n\n public delete(...ids: string[]) {\n if (ids.length) {\n super.delete(...ids);\n this.eventTarget.emit('change', { deletedItems: ids });\n }\n }\n\n public deleteAll() {\n if (this.length) {\n const ids = this.items.map(item => this.getId(item));\n super.deleteAll();\n this.eventTarget.emit('change', { deletedItems: ids });\n }\n }\n\n /**\n * Bring the collection to exactly match the provided items: upsert every\n * provided item and remove any existing item whose id is not present in the\n * provided set. Emits at most a single `change` event describing both the\n * set and the deleted ids, so bound consumers can update in place without\n * ever observing an intermediate empty state (unlike deleteAll + set).\n */\n public reconcile(...items: ItemT[]) {\n const incomingIds = new Set(items.map(item => this.getId(item)));\n const deletedItems: string[] = [];\n\n for (const existing of this.items) {\n const id = this.getId(existing);\n if (! incomingIds.has(id)) {\n deletedItems.push(id);\n }\n }\n\n if (! items.length && ! deletedItems.length) {\n return;\n }\n\n this._items.delete(...deletedItems);\n super.set(...items);\n\n this.eventTarget.emit('change', {\n setItems: items.map(item => this.getId(item)),\n deletedItems,\n });\n }\n\n public createMirror(): ObservableIndexedObjectCollection<ItemT, EventMapT> {\n const copy = new ObservableIndexedObjectCollection<ItemT, EventMapT>(this.id);\n copy.eventTarget = this.eventTarget;\n copy._items = this._items;\n return copy;\n }\n\n public on<EventName extends keyof EventMapT & string>(\n eventName: EventName,\n handler: EventHandler<EventMapT[EventName]>\n ): this {\n this.eventTarget.on(eventName, handler);\n return this;\n }\n\n public once<EventName extends keyof EventMapT & string>(\n eventName: EventName,\n handler: EventHandler<EventMapT[EventName]>\n ): this {\n this.eventTarget.once(eventName, handler);\n return this;\n }\n\n public off<EventName extends keyof EventMapT & string>(\n eventName: EventName,\n handler: EventHandler<EventMapT[EventName]>\n ): this {\n this.eventTarget.off(eventName, handler);\n return this;\n }\n}","import {IndexedCollection} from \"../IndexedObjectCollection\";\n\nexport class DeferredTask {\n public readonly promise: Promise<void>;\n public resolve: () => void;\n\n public constructor() {\n this.promise = new Promise<void>((resolve) => this.resolve = resolve);\n }\n}\n\nexport class PromiseRegistry {\n private promises = new IndexedCollection<string, Promise<any>>();\n\n public register<T = any>(promise: Promise<T>, key: string): void {\n this.promises.set([key, promise]);\n\n // Never cache a failed lookup: drop it so the next access retries\n // instead of replaying the same rejection forever (a request issued\n // while the client was offline would otherwise poison the key). The\n // handler also keeps the cached promise from surfacing as an unhandled\n // rejection - callers still receive the rejection from their own await.\n promise.catch(() => {\n if (this.promises.get(key) === promise) {\n this.promises.delete(key);\n }\n });\n }\n\n public registerByFunction(fn: () => Promise<any>, key: string): void {\n this.register(fn(), key);\n }\n\n public get<T = any>(key: string): Promise<T> | undefined {\n return this.promises.get(key);\n }\n\n public has(key: string): boolean {\n return this.promises.has(key);\n }\n\n public notExist(key: string): boolean {\n return ! this.has(key);\n }\n\n public forget(...keys: string[]): void {\n this.promises.delete(...keys);\n }\n\n public forgetAll(): void {\n this.promises.deleteAll();\n }\n}","import {Message, MessagesRedacted, NewMessage, Topic} from \"../types/src\";\nimport {ChatStateTracker} from \"./ChatStateTracker\";\nimport {CollectionEventMap, ObservableIndexedObjectCollection} from \"../IndexedObjectCollection\";\n\nexport enum WindowState {\n /**\n * The latest messages (those received live) are available in the history window, history has not been fetched.\n */\n LIVE,\n\n /**\n * The latest messages has been fetched and are available in the history window.\n */\n LATEST,\n\n /**\n * The historical messages have been fetched and are available in the history window.\n * Latest messages are not available and will not be available.\n */\n PAST,\n\n /**\n * The oldest messages have been fetched and are available in the history window.\n * Next attempts to fetch previous messages will result with no-op.\n */\n OLDEST,\n}\n\nexport abstract class TraversableRemoteCollection<\n ItemT,\n EventMapT extends CollectionEventMap = CollectionEventMap\n> extends ObservableIndexedObjectCollection<ItemT, EventMapT> {\n /**\n * Current mode od collection window. To change mode, call one of available fetch methods.\n */\n public get state(): WindowState {\n return this.internalState.current;\n }\n\n protected internalState: {\n current: WindowState,\n ongoing?: WindowState,\n limit: number | null, // Acts as High Watermark\n retainRatio: number, // Percentage of limit to keep when trimming\n fetchLimit: number,\n lastFetchCount: number,\n oldestId: string | null,\n } = {\n current: WindowState.LIVE,\n ongoing: undefined,\n limit: 1000,\n retainRatio: 1,\n fetchLimit: 50,\n lastFetchCount: 0,\n oldestId: null,\n };\n\n /**\n * Number of items to fetch per request.\n */\n public get fetchLimit(): number {\n return this.internalState.fetchLimit;\n }\n\n /**\n * Sets number of items to fetch per request.\n */\n public set fetchLimit(value: number) {\n this.internalState.fetchLimit = value;\n }\n\n /**\n * Maximum number of items stored in window (High Watermark).\n * Null for unlimited.\n */\n public get limit(): number | null {\n return this.internalState.limit;\n }\n\n /**\n * Maximum number of items stored in window (High Watermark).\n * Null for unlimited.\n */\n public set limit(value: number | null) {\n this.internalState.limit = value;\n }\n\n /**\n * Percentage of limit to keep when trimming.\n */\n public get retainRatio(): number {\n return this.internalState.retainRatio;\n }\n\n /**\n * Percentage of limit to keep when trimming.\n */\n public set retainRatio(value: number) {\n this.internalState.retainRatio = value;\n }\n\n public get hasLatest(): boolean {\n return [WindowState.LATEST, WindowState.LIVE].includes(this.state);\n }\n\n public get hasOldest(): boolean {\n return this.state === WindowState.OLDEST\n || this.state === WindowState.LATEST && this.length < this.fetchLimit\n || this.internalState.oldestId !== null && this.has(this.internalState.oldestId);\n }\n\n public abstract createMirror(): TraversableRemoteCollection<ItemT, EventMapT>;\n\n public async resetToLatest(force: boolean = false): Promise<void> {\n if (this.internalState.ongoing || (! force && this.internalState.current === WindowState.LATEST)) {\n return;\n }\n\n let result;\n const originalState = this.state;\n this.internalState.ongoing = WindowState.LATEST;\n\n try {\n result = await this.fetchLatestItems();\n this.internalState.lastFetchCount = result.length;\n } finally {\n this.internalState.ongoing = undefined;\n }\n\n this._items.deleteAll(); // Directly call deleteAll to prevent event emit.\n this.addItems(result, 'tail');\n this.internalState.current = WindowState.LATEST;\n this.emitChangeWithDiff(true, originalState);\n }\n\n public async fetchPrevious(): Promise<void> {\n if (this.internalState.ongoing || this.hasOldest) {\n return;\n }\n\n let result;\n const originalState = this.state;\n this.internalState.ongoing = WindowState.PAST;\n\n try {\n result = await this.fetchItemsBefore();\n this.internalState.lastFetchCount = result ? result.length : 0;\n } finally {\n this.internalState.ongoing = undefined;\n }\n\n if (! result) {\n return this.resetToLatest();\n }\n\n if (! result.length) {\n const firstItem = this.getAt(0);\n this.internalState.oldestId = firstItem ? this.getId(firstItem) : null;\n\n await this.refreshFetchedState();\n\n // LATEST state has priority over OLDEST\n if (this.internalState.current === WindowState.PAST) {\n this.internalState.current = WindowState.OLDEST;\n }\n\n this.emitChangeWithDiff(false, originalState);\n return;\n }\n\n this.addItems(result, 'head');\n await this.refreshFetchedState();\n this.emitChangeWithDiff(true, originalState);\n }\n\n public async fetchNext(): Promise<void> {\n if (this.internalState.ongoing || this.hasLatest) {\n return;\n }\n\n let result;\n const originalState = this.state;\n this.internalState.ongoing = WindowState.PAST;\n\n try {\n result = await this.fetchItemsAfter();\n this.internalState.lastFetchCount = result ? result.length : 0;\n } finally {\n this.internalState.ongoing = undefined;\n }\n\n if (! result) {\n await this.resetToLatest();\n return;\n }\n\n if (result.length) {\n this.addItems(result, 'tail');\n await this.refreshFetchedState();\n this.emitChangeWithDiff(true, originalState);\n return;\n }\n }\n\n public async jumpTo(id: string): Promise<void> {\n if (this.internalState.ongoing || (this.state !== WindowState.LIVE && this._items.has(id))) {\n return;\n }\n\n let result: ItemT[] | null;\n const originalState = this.state;\n this.internalState.ongoing = WindowState.PAST;\n\n try {\n result = await this.fetchItemsAround(id);\n this.internalState.lastFetchCount = result ? result.length : 0;\n\n if (result) {\n this._items.deleteAll(); // Directly call deleteAll to prevent event emit.\n this.addItems(result, 'tail');\n await this.refreshFetchedState();\n }\n } finally {\n this.internalState.ongoing = undefined;\n }\n\n this.emitChangeWithDiff(!!result, originalState);\n }\n\n protected abstract fetchLatestItems(): Promise<ItemT[]>;\n\n protected abstract fetchItemsBefore(): Promise<ItemT[] | null>;\n\n protected abstract fetchItemsAfter(): Promise<ItemT[] | null>;\n\n protected abstract fetchItemsAround(id: string): Promise<ItemT[] | null>;\n\n protected abstract isLatestItemLoaded(): Promise<boolean>;\n\n protected async refreshFetchedState(): Promise<void> {\n this.internalState.current = (await this.isLatestItemLoaded()) ? WindowState.LATEST : WindowState.PAST;\n }\n\n protected addItems(newItems: ItemT[], to: 'head' | 'tail'): void {\n let result;\n\n if (to === 'head') {\n result = this.trimItemsArrayToLimit([...newItems, ...this.items], 'tail');\n }\n\n if (to === 'tail') {\n result = this.trimItemsArrayToLimit([...this.items, ...newItems], 'head');\n }\n\n // Directly calls to prevent event emit.\n this._items.deleteAll();\n this._items.set(...(result.map(item => [this.getId(item), item] as [string, ItemT])));\n }\n\n protected emitChangeWithDiff(itemChanged: boolean, originalState: WindowState): void {\n if (itemChanged || originalState !== this.state) {\n this.eventTarget.emit('change', { setItems: Array.from(this._items.items.keys()) })\n }\n }\n\n /**\n * Return array with messages trimmed using High/Low Watermark strategy.\n */\n private trimItemsArrayToLimit(items: ItemT[], from: 'head' | 'tail'): ItemT[] {\n const highWatermark = this.limit;\n\n if (highWatermark === null || items.length <= highWatermark) {\n return items;\n }\n\n const lowWatermark = Math.floor(highWatermark * this.internalState.retainRatio);\n\n if (from === 'head') {\n return items.slice(-lowWatermark);\n }\n\n if (from === 'tail') {\n return items.slice(0, lowWatermark);\n }\n\n return items;\n }\n}\n\nexport type TopicHistoryWindowEventMap = CollectionEventMap & {\n reftopicsdeleted: string[];\n};\n\nexport class TopicHistoryWindow extends TraversableRemoteCollection<\n Message,\n TopicHistoryWindowEventMap\n> {\n /**\n * Reexported available window modes enum.\n */\n public readonly WindowState: typeof WindowState = WindowState;\n\n declare protected internalState: typeof TraversableRemoteCollection<Message>['prototype']['internalState'] & {\n traverseLock: boolean,\n };\n\n public constructor(\n private roomId: string,\n private topicId: string,\n private tracker: ChatStateTracker,\n bindEvents: boolean = true,\n ) {\n super('id');\n\n this.internalState.traverseLock = false;\n\n if (bindEvents) {\n this.tracker.client.on('NewMessage', ev => this.handleNewMessage(ev));\n this.tracker.client.on('MessagesRedacted', ev => this.handleMessagesRedacted(ev));\n }\n }\n\n public createMirror(): TopicHistoryWindow {\n const copy = new TopicHistoryWindow(this.roomId, this.topicId, this.tracker, false);\n copy.eventTarget = this.eventTarget;\n copy._items = this._items;\n copy.internalState = this.internalState;\n return copy;\n }\n\n public get isTraverseLocked(): boolean {\n return this.internalState.traverseLock;\n }\n\n public async setTraverseLock(lock: boolean): Promise<void> {\n this.internalState.traverseLock = lock;\n\n if (lock && (this.state !== WindowState.LIVE && this.state !== WindowState.LATEST)) {\n await super.resetToLatest();\n }\n }\n\n public async resetToLatest(force: boolean = false): Promise<void> {\n if (this.internalState.traverseLock) {\n return;\n }\n return super.resetToLatest(force);\n }\n\n public async fetchNext(): Promise<void> {\n if (this.internalState.traverseLock) {\n return;\n }\n return super.fetchNext();\n }\n\n public async fetchPrevious(): Promise<void> {\n if (this.internalState.traverseLock) {\n return;\n }\n return super.fetchPrevious();\n }\n\n public async jumpTo(id: string): Promise<void> {\n if (this.internalState.traverseLock) {\n return;\n }\n return super.jumpTo(id);\n }\n\n /**\n * For internal use.\n * @internal\n */\n public _updateMessageReference(refTopic: Topic): void {\n const refMessage = this.get(refTopic.refMessage.id);\n\n if (refMessage) {\n // Update referenced topic ID in message\n this.set({...refMessage, topicRef: refTopic.id});\n }\n }\n\n protected async fetchItemsAfter(): Promise<Message[] | null> {\n const afterId = this.getAt(this.length - 1)?.id;\n\n if (! afterId) {\n // If there is no message to refer, fetch latest\n return null;\n }\n\n const result = await this.tracker.client.send('GetMessages', {\n location: {roomId: this.roomId, topicId: this.topicId},\n after: afterId,\n limit: this.internalState.fetchLimit,\n });\n\n if (result.error) {\n throw new Error(`Cannot fetch messages: ${result.error.message}`);\n }\n\n return result.data.messages;\n }\n\n protected async fetchItemsAround(id: string): Promise<Message[] | null> {\n const result = await this.tracker.client.send('GetMessages', {\n location: {roomId: this.roomId, topicId: this.topicId},\n around: id,\n limit: this.internalState.fetchLimit,\n });\n\n if (result.error) {\n throw new Error(`Cannot fetch messages: ${result.error.message}`);\n }\n\n return result.data.messages;\n }\n\n protected async fetchItemsBefore(): Promise<Message[] | null> {\n const beforeId = this.getAt(0)?.id;\n\n if (! beforeId) {\n // If there is no message to refer, fetch latest\n return null;\n }\n\n const result = await this.tracker.client.send('GetMessages', {\n location: {roomId: this.roomId, topicId: this.topicId},\n before: beforeId,\n limit: this.internalState.fetchLimit,\n });\n\n if (result.error) {\n throw new Error(`Cannot fetch messages: ${result.error.message}`);\n }\n\n return result.data.messages;\n }\n\n protected async fetchLatestItems(): Promise<Message[]> {\n const result = await this.tracker.client.send('GetMessages', {\n location: {roomId: this.roomId, topicId: this.topicId},\n limit: this.internalState.fetchLimit,\n });\n\n if (result.error) {\n throw new Error(`Cannot fetch messages: ${result.error.message}`);\n }\n\n return result.data.messages;\n }\n\n private async getTopic(): Promise<Topic | undefined> {\n return (await this.tracker.rooms.getTopics(this.roomId, [this.topicId])).get(this.topicId);\n }\n\n private async getLatestMessageId(): Promise<string | undefined> {\n return (await this.getTopic())?.lastMessage?.id;\n }\n\n protected async isLatestItemLoaded(): Promise<boolean> {\n const lastMessageId = await this.getLatestMessageId();\n return lastMessageId ? this.has(lastMessageId) : true;\n }\n\n private async handleNewMessage(ev: NewMessage): Promise<void> {\n if (\n [WindowState.LATEST, WindowState.LIVE].includes(this.state)\n && ev.message.location.roomId === this.roomId\n && ev.message.location.topicId === this.topicId\n ) {\n const originalState = this.state;\n this.addItems([ev.message], 'tail');\n this.emitChangeWithDiff(true, originalState);\n }\n }\n\n private async handleMessagesRedacted(ev: MessagesRedacted): Promise<void> {\n if (ev.location.topicId !== this.topicId || ev.location.roomId !== this.roomId) {\n return;\n }\n\n const refTopicIds = this.items\n .filter(msg => msg.topicRef && ev.ids.includes(msg.id))\n .map(msg => msg.topicRef as string);\n\n this.delete(...ev.ids);\n\n if (this.length === 0) {\n await this.resetToLatest();\n }\n\n if (refTopicIds.length > 0) {\n this.eventTarget.emit('reftopicsdeleted', refTopicIds);\n }\n }\n}\n","import {ChatStateTracker} from \"./ChatStateTracker\";\nimport {NewTopic, Room, RoomUpdated, Topic, TopicDeleted} from \"../types/src\";\nimport {IndexedCollection,} from \"../IndexedObjectCollection\";\nimport {TopicHistoryWindow, WindowState} from \"./TopicHistoryWindow\";\n\nexport class RoomMessagesHistory {\n private historyWindows = new IndexedCollection<string, TopicHistoryWindow>();\n private traverseLock: boolean = false;\n\n public constructor(\n private room: Room,\n private tracker: ChatStateTracker,\n ) {\n this.tracker.client.on('RoomUpdated', ev => this.handleRoomUpdated(ev));\n this.tracker.client.on('NewTopic', ev => this.handleNewTopic(ev));\n this.tracker.client.on('TopicDeleted', ev => this.handleTopicDeleted(ev));\n\n this.updateTraverseLock(this.room);\n\n if (this.room.defaultTopic) {\n this.createHistoryWindowForTopic(this.room.defaultTopic);\n }\n }\n\n /**\n * Returns a history window object for the given topic ID, allowing you to view message history.\n * @param topicId\n * @param peek If true, do not create a cache for this topic and do not allow it to collect new messages.\n */\n public async getMessagesWindow(topicId: string, peek: boolean = false): Promise<TopicHistoryWindow | undefined> {\n if (!this.historyWindows.has(topicId) && !peek) {\n const topic = (await this.tracker.rooms.getTopics(this.room.id, [topicId])).get(topicId);\n\n if (topic) {\n this.createHistoryWindowForTopic(topic);\n }\n }\n\n return this.historyWindows.get(topicId);\n }\n\n /**\n * Re-synchronise this room's history after a reconnect without discarding\n * the existing window objects (which would blank the UI and, for ephemeral\n * rooms, permanently drop live-only history).\n *\n * The window bindings are preserved; only windows that the application had\n * actually pulled to the latest page (state === LATEST) are refreshed, with\n * a single resetToLatest instead of a chain of catch-up requests. Windows\n * that were never pulled (LIVE) or belong to an ephemeral room are left\n * untouched so their in-memory context survives the reconnect.\n */\n public async resync(room: Room): Promise<void> {\n this.room = room;\n this.updateTraverseLock(room);\n\n if (this.room.defaultTopic) {\n this.createHistoryWindowForTopic(this.room.defaultTopic);\n }\n\n for (const [, window] of Array.from(this.historyWindows.items)) {\n try {\n await window.setTraverseLock(this.traverseLock);\n\n // Ephemeral history lives only in memory (the server does not\n // persist it), so never refetch/replace it on reconnect.\n if (this.traverseLock) {\n continue;\n }\n\n if (window.state === WindowState.LATEST) {\n await window.resetToLatest(true);\n }\n } catch (_e) {\n // Best effort: the connection can drop again mid-resync. The\n // window keeps its current content and stays usable, so the\n // application can refresh it on demand.\n }\n }\n }\n\n private async handleRoomUpdated(ev: RoomUpdated): Promise<void> {\n if (this.room.id === ev.room.id) {\n this.room = ev.room;\n\n this.updateTraverseLock(ev.room);\n\n if (ev.room.defaultTopic) {\n this.createHistoryWindowForTopic(ev.room.defaultTopic);\n }\n\n for (const [, window] of Array.from(this.historyWindows.items)) {\n await window.setTraverseLock(this.traverseLock);\n }\n }\n }\n\n private handleNewTopic(ev: NewTopic): void {\n if (this.room.id === ev.roomId) {\n this.createHistoryWindowForTopic(ev.topic);\n }\n }\n\n private handleTopicDeleted(ev: TopicDeleted): void {\n if (this.room.id === ev.location.roomId) {\n this.historyWindows.delete(ev.location.topicId);\n }\n }\n\n private createHistoryWindowForTopic(topic: Topic): void {\n if (this.historyWindows.has(topic.id)) {\n return;\n }\n\n const historyWindow = new TopicHistoryWindow(this.room.id, topic.id, this.tracker);\n\n void historyWindow.setTraverseLock(this.traverseLock);\n\n this.historyWindows.set([topic.id, historyWindow]);\n\n // Current behavior of deletion a message with referenced topic is to delete the whole side topic\n // So we need to listen for topic deletions here\n historyWindow.on('reftopicsdeleted', (deletedTopicIds: string[]) => {\n for (const topicId of deletedTopicIds) {\n this.historyWindows.delete(topicId);\n }\n this.tracker.rooms._deleteTopicsFromRoom(this.room.id, ...deletedTopicIds);\n });\n\n // If new topic refers to some message from this room, update other structures\n if (topic.refMessage) {\n const refHistoryWindow = this.historyWindows.get(topic.refMessage.location.topicId);\n refHistoryWindow?._updateMessageReference(topic);\n }\n }\n\n private updateTraverseLock(room: Room): void {\n this.traverseLock = room.history.mode === 'Ephemeral';\n }\n}","import {ChatStateTracker} from \"./ChatStateTracker\";\nimport {\n RoomDeleted,\n RoomLeft,\n RoomJoined,\n Session,\n Room,\n Message, ChatLocation,\n} from \"../types/src\";\nimport {IndexedCollection} from \"../IndexedObjectCollection\";\nimport {DeferredTask} from \"./AsyncUtils\";\nimport {RoomMessagesHistory} from \"./RoomMessagesHistory\";\n\nexport class MessagesManager {\n private readonly roomHistories = new IndexedCollection<string, RoomMessagesHistory>();\n private readonly deferredSession = new DeferredTask();\n\n public constructor(private tracker: ChatStateTracker) {\n this.tracker.client.on('Session', ev => this.handleSession(ev));\n this.tracker.client.on('RoomJoined', ev => this.handleRoomJoin(ev));\n this.tracker.client.on('RoomDeleted', ev => this.handleRoomDeleted(ev));\n this.tracker.client.on('RoomLeft', ev => this.handleRoomLeft(ev));\n }\n\n /**\n * Get history manager for given room ID.\n */\n public async getRoomHistory(roomId: string): Promise<RoomMessagesHistory | undefined> {\n await this.deferredSession.promise;\n return this.roomHistories.get(roomId);\n }\n\n /**\n * For internal use.\n * @internal\n */\n public async _resolveLastMessage(location: ChatLocation): Promise<Message|null> {\n // Try to get last message from history window (if cached)\n let message: Message = await this.getRoomHistory(location.roomId)\n .then(roomHistory => roomHistory?.getMessagesWindow(location.topicId, true))\n .then(\n historyWindow =>\n historyWindow?.hasLatest && historyWindow.getAt(historyWindow.length - 1)\n );\n\n if (!message) {\n const result = await this.tracker.client.send('GetMessages', {\n location,\n limit: 1,\n });\n message = result.data?.messages[0];\n }\n\n return message || null;\n }\n\n private createHistoryForNewRoom(room: Room): void {\n this.roomHistories.set([room.id, new RoomMessagesHistory(room, this.tracker)]);\n }\n\n private handleRoomDeleted(ev: RoomDeleted): void {\n this.roomHistories.delete(ev.id);\n }\n\n private handleRoomJoin(ev: RoomJoined): void {\n this.createHistoryForNewRoom(ev.room);\n }\n\n private handleRoomLeft(ev: RoomLeft): void {\n this.roomHistories.delete(ev.id);\n }\n\n private handleSession(ev: Session): void {\n const stateRoomIds = new Set(ev.state.rooms.map(room => room.id));\n\n // Drop histories only for rooms that no longer exist server-side.\n for (const roomId of Array.from(this.roomHistories.items.keys())) {\n if (! stateRoomIds.has(roomId)) {\n this.roomHistories.delete(roomId);\n }\n }\n\n // Keep existing histories (preserving loaded messages and, crucially,\n // live-only ephemeral history), create histories for newly joined\n // rooms, and resync survivors against the fresh room snapshot.\n for (const room of ev.state.rooms) {\n const history = this.roomHistories.get(room.id);\n if (history) {\n void history.resync(room);\n } else {\n this.createHistoryForNewRoom(room);\n }\n }\n\n this.deferredSession.resolve();\n }\n}","import {EventTarget} from \"../EventTarget\";\nimport {ChatStateTracker} from \"./ChatStateTracker\";\nimport {DeferredTask, PromiseRegistry} from \"./AsyncUtils\";\nimport {IndexedCollection, ObservableIndexedObjectCollection} from \"../IndexedObjectCollection\";\nimport {\n ChatLocation,\n FollowedTopic,\n FollowedTopicUpdated,\n NewMessage, NewTopic,\n RoomDeleted,\n RoomJoined, RoomLeft,\n Session, TopicDeleted,\n TopicFollowed, TopicUnfollowed\n} from \"../types/src\";\n\ninterface EventMap {\n change: {};\n}\n\nexport class FollowedTopicsManager extends EventTarget<EventMap> {\n private readonly followedTopics = new IndexedCollection<string, ObservableIndexedObjectCollection<FollowedTopic>>();\n private readonly followedTopicsPromises = new PromiseRegistry();\n private readonly deferredSession = new DeferredTask();\n private readonly summariesCache = new Map<string, { mentionCount: number, isUnread: boolean }>();\n\n /**\n * Rooms whose cached followed-topics are stale after a reconnect and must\n * be refetched (and reconciled in place) the next time they are accessed.\n */\n private readonly staleRooms = new Set<string>();\n\n public constructor(private tracker: ChatStateTracker) {\n super();\n\n this.tracker.client.on('Session', ev => this.handleSession(ev));\n this.tracker.client.on('RoomJoined', ev => this.handleRoomJoin(ev));\n this.tracker.client.on('NewTopic', ev => this.handleNewTopic(ev));\n this.tracker.client.on('FollowedTopicUpdated', ev => this.handleFollowedTopicUpdated(ev));\n this.tracker.client.on('TopicFollowed', ev => this.handleTopicFollowed(ev));\n this.tracker.client.on('TopicUnfollowed', ev => this.handleTopicUnfollowed(ev));\n this.tracker.client.on('NewMessage', ev => this.handleNewMessage(ev));\n this.tracker.client.on('RoomDeleted', ev => this.handleRoomDeleted(ev));\n this.tracker.client.on('RoomLeft', ev => this.handleRoomLeft(ev));\n this.tracker.client.on('TopicDeleted', ev => this.handleTopicDeleted(ev));\n }\n\n /**\n * Cache followed topics for all joined rooms in a space and fetch them in bulk if necessary.\n * Then you can get them using getRoomFollowedTopics().\n * @see getForRoom\n */\n public async cacheForSpace(spaceId: string | null): Promise<void> {\n if (spaceId && ! (await this.tracker.spaces.get()).has(spaceId)) {\n throw new Error(`You are not in space ${spaceId}`);\n }\n\n const rooms = await this.tracker.rooms.get();\n const roomIds = spaceId\n ? rooms.findBy('spaceId', spaceId).items.map(r => r.id)\n : rooms.items.filter(r => !r.spaceId).map(r => r.id);\n\n if (!roomIds.length) {\n return;\n }\n\n const needsFetch = roomIds.some(roomId => ! this.followedTopics.has(roomId) || this.staleRooms.has(roomId));\n if (! needsFetch) {\n return;\n }\n\n const spaceRegistryKey = `space_fetch_${spaceId || 'spaceless'}`;\n\n if (this.followedTopicsPromises.notExist(spaceRegistryKey)) {\n this.followedTopicsPromises.registerByFunction(async () => {\n const result = await this.tracker.client.send('GetFollowedTopics', {location: {spaceId}});\n if (result.error) throw result.error;\n\n this.reconcileRoomsFollowedTopics(roomIds, result.data.followedTopics);\n }, spaceRegistryKey);\n }\n\n await this.followedTopicsPromises.get(spaceRegistryKey);\n }\n\n /**\n * Get followed topics for the given room.\n * @return Undefined if you are not in the room, collection otherwise.\n */\n public async getForRoom(roomId: string): Promise<ObservableIndexedObjectCollection<FollowedTopic> | undefined> {\n if (! (await this.tracker.rooms.get()).has(roomId)) {\n return undefined;\n }\n\n if (! this.followedTopics.has(roomId) || this.staleRooms.has(roomId)) {\n if (this.followedTopicsPromises.notExist(roomId)) {\n this.followedTopicsPromises.registerByFunction(async () => {\n const result = await this.tracker.client.send('GetFollowedTopics', {location: {roomId}});\n\n if (result.error) {\n throw result.error;\n }\n\n this.applyRoomFollowedTopics(roomId, result.data.followedTopics);\n this.invalidateUnreadSummaries(roomId);\n }, roomId);\n }\n\n await this.followedTopicsPromises.get(roomId);\n }\n\n return this.followedTopics.get(roomId);\n }\n\n /**\n * Batch acknowledge all messages for given room.\n */\n public async ackRoom(roomId: string): Promise<void> {\n const collection = await this.getForRoom(roomId);\n\n if (! collection) {\n return;\n }\n\n for (const followedTopic of collection.items) {\n if (followedTopic.isUnread) {\n await this.tracker.client.send('Ack', {location: followedTopic.location});\n }\n }\n }\n\n /**\n * Summarize all unread messages or mentions from any topic in given location.\n * This method uses an internal cache, so it's ok to call it multiple times.\n * Capture the 'change' event to determine when it's worth calling this method again due to data changes.\n * @return Undefined if you are not in room.\n */\n public async summarize(location: ChatLocation): Promise<{ mentionCount: number, isUnread: boolean }> {\n const cacheKey = location.topicId\n ? `topic:${location.roomId}:${location.topicId}`\n : location.roomId\n ? `room:${location.roomId}`\n : location.spaceId\n ? `space:${location.spaceId}`\n : 'spaceless';\n\n if (this.summariesCache.has(cacheKey)) {\n return this.summariesCache.get(cacheKey)!;\n }\n\n let roomIds: string[] = [];\n let targetTopicId: string | undefined;\n const rooms = await this.tracker.rooms.get();\n\n if (location.topicId) {\n if (!location.roomId) {\n throw new Error(\"roomId is required when querying by topicId\");\n }\n roomIds = [location.roomId];\n targetTopicId = location.topicId;\n } else if (location.roomId) {\n roomIds = [location.roomId];\n } else if (location.spaceId) {\n await this.cacheForSpace(location.spaceId);\n roomIds = rooms.findBy('spaceId', location.spaceId).items.map(r => r.id);\n } else {\n await this.cacheForSpace(null);\n roomIds = rooms.items.filter(r => !r.spaceId).map(r => r.id);\n }\n\n let mentionCount = 0;\n let isUnread = false;\n\n for (const roomId of roomIds) {\n const collection = await this.getForRoom(roomId);\n\n if (!collection) {\n continue;\n }\n\n for (const topic of collection.items) {\n if (targetTopicId && topic.location.topicId !== targetTopicId) {\n continue;\n }\n\n if (topic.isUnread) {\n isUnread = true;\n }\n\n mentionCount += (topic.mentionCount ?? 0);\n }\n }\n\n const result = { mentionCount, isUnread };\n this.summariesCache.set(cacheKey, result);\n\n return result;\n }\n\n /**\n * For internal use. If you want to delete the message, execute a proper command on client object.\n * @internal\n */\n public _deleteByTopicIds(roomId: string, ...topicIds: string[]): void {\n this.followedTopics.get(roomId)?.delete(...topicIds);\n topicIds.forEach(topicId => this.invalidateUnreadSummaries(roomId, topicId));\n }\n\n private handleSession(ev: Session): void {\n // Keep cached followed-topic collections (they drive unread indicators\n // that would otherwise blank on reconnect), but mark them stale and drop\n // the fetch guards so the next access/caching refetches and reconciles\n // them in place.\n for (const roomId of this.followedTopics.items.keys()) {\n this.staleRooms.add(roomId);\n }\n this.followedTopicsPromises.forgetAll();\n this.invalidateUnreadSummaries();\n this.deferredSession.resolve();\n }\n\n private handleNewMessage(ev: NewMessage): void {\n void this.updateLocallyFollowedTopicOnNewMessage(ev);\n }\n\n private handleFollowedTopicUpdated(ev: FollowedTopicUpdated): void {\n this.followedTopics.get(ev.followedTopic.location.roomId)?.set(ev.followedTopic);\n this.invalidateUnreadSummaries(ev.followedTopic.location.roomId, ev.followedTopic.location.topicId);\n }\n\n private handleTopicFollowed(ev: TopicFollowed): void {\n this.setFollowedTopicsArray([ev.followedTopic.location.roomId], [ev.followedTopic]);\n this.invalidateUnreadSummaries(ev.followedTopic.location.roomId, ev.followedTopic.location.topicId);\n }\n\n private handleTopicUnfollowed(ev: TopicUnfollowed): void {\n this.followedTopics.get(ev.location.roomId)?.delete(ev.location.topicId);\n this.invalidateUnreadSummaries(ev.location.roomId, ev.location.topicId);\n }\n\n private handleRoomDeleted(ev: RoomDeleted): void {\n this.clearRoomFollowedTopicsStructures(ev.id);\n }\n\n private handleRoomJoin(ev: RoomJoined): void {\n this.clearRoomFollowedTopicsStructures(ev.room.id);\n }\n\n private handleRoomLeft(ev: RoomLeft): void {\n this.clearRoomFollowedTopicsStructures(ev.id);\n }\n\n private async handleNewTopic(ev: NewTopic): Promise<void> {\n if (this.followedTopics.has(ev.roomId)) {\n // Check if the new topic is followed by user\n // only if client asked for followed topics list before for this room\n const result = await this.tracker.client.send(\n 'GetFollowedTopics',\n {location: {roomId: ev.roomId, topicId: ev.topic.id}},\n );\n const followedTopic = result.data.followedTopics[0];\n if (followedTopic) {\n this.followedTopics.get(ev.roomId).set(followedTopic);\n this.invalidateUnreadSummaries(ev.roomId, ev.topic.id);\n }\n }\n }\n\n private handleTopicDeleted(ev: TopicDeleted): void {\n this.followedTopics.get(ev.location.roomId)?.delete(ev.location.topicId);\n this.invalidateUnreadSummaries(ev.location.roomId, ev.location.topicId);\n }\n\n /**\n * Invalidate the summaries cache intentionally, only for the locations affected by the change.\n */\n private invalidateUnreadSummaries(roomId?: string, topicId?: string): void {\n if (roomId) {\n this.summariesCache.delete(`room:${roomId}`);\n\n if (topicId) {\n this.summariesCache.delete(`topic:${roomId}:${topicId}`);\n } else {\n for (const key of this.summariesCache.keys()) {\n if (key.startsWith(`topic:${roomId}:`)) {\n this.summariesCache.delete(key);\n }\n }\n }\n\n for (const key of this.summariesCache.keys()) {\n if (key.startsWith('space:') || key === 'spaceless') {\n this.summariesCache.delete(key);\n }\n }\n } else {\n this.summariesCache.clear();\n }\n\n this.emit('change');\n }\n\n private invalidateUnreadSummariesForRooms(roomIds: string[]): void {\n const roomIdsSet = new Set(roomIds);\n roomIds.forEach(roomId => {\n this.summariesCache.delete(`room:${roomId}`);\n });\n\n for (const key of this.summariesCache.keys()) {\n if (key.startsWith('space:') || key === 'spaceless') {\n this.summariesCache.delete(key);\n continue;\n }\n if (key.startsWith('topic:')) {\n const parts = key.split(':');\n if (parts.length >= 2 && roomIdsSet.has(parts[1])) {\n this.summariesCache.delete(key);\n }\n }\n }\n\n this.emit('change');\n }\n\n private async updateLocallyFollowedTopicOnNewMessage(ev: NewMessage): Promise<void> {\n const roomFollowedTopics = this.followedTopics.get(ev.message.location.roomId);\n const followedTopic = roomFollowedTopics?.get(ev.message.location.topicId);\n\n if (!roomFollowedTopics || !followedTopic || ev.message.type === 'Ephemeral') {\n // Skip if we don't follow this room or message is ephemeral\n return;\n }\n\n const me = await this.tracker.getMe();\n const isMe = ev.message.author.user.id === me.id;\n let update: Partial<FollowedTopic>;\n\n if (isMe) {\n // Reset missed messages count if new message is authored by me\n update = {missed: 0, lastAckMessageId: ev.message.id};\n } else if (ev.message.type === 'Text') {\n // ...check for mentions if it's text message...\n const member = await this.tracker.rooms.getMe(ev.message.location.roomId);\n const roleIds = [...(member.spaceMember?.roles ?? []), ...(member.roles ?? [])];\n const mentionHandlers = [\n ...roleIds.map(id => `<@&${id}>`),\n `<@${me.id}>`,\n ];\n const mentionExists = mentionHandlers.some(handler => ev.message.content.includes(handler));\n\n update = {\n missed: followedTopic.missed === null ? null : followedTopic.missed + 1,\n isUnread: true,\n mentionCount: followedTopic.mentionCount + (mentionExists ? 1 : 0),\n };\n } else {\n // ...or just mark as unread.\n update = {\n missed: followedTopic.missed === null ? null : followedTopic.missed + 1,\n isUnread: true,\n };\n }\n\n roomFollowedTopics.set({...followedTopic, ...update});\n this.invalidateUnreadSummaries(ev.message.location.roomId, ev.message.location.topicId);\n }\n\n /**\n * Reconcile the followed-topics collection for a single room to exactly\n * match the provided list (upsert present, drop absent) without emitting an\n * intermediate empty state, and clear its stale marker. Does not touch the\n * unread summaries cache - callers decide how to invalidate it.\n */\n private applyRoomFollowedTopics(roomId: string, followedTopics: FollowedTopic[]): void {\n if (! this.followedTopics.has(roomId)) {\n this.followedTopics.set([roomId, new ObservableIndexedObjectCollection<FollowedTopic>(\n followedTopic => followedTopic.location.topicId\n )]);\n }\n\n this.followedTopics.get(roomId).reconcile(...followedTopics);\n this.staleRooms.delete(roomId);\n }\n\n /**\n * Reconcile a batch of rooms from a single bulk GetFollowedTopics response.\n * Rooms with no followed topics in the response are reconciled to empty, so\n * topics unfollowed/removed during the downtime are correctly dropped.\n */\n private reconcileRoomsFollowedTopics(roomIds: string[], followedTopics: FollowedTopic[]): void {\n const roomToTopics: {[roomId: string]: FollowedTopic[]} = {};\n\n followedTopics.forEach(followedTopic => {\n (roomToTopics[followedTopic.location.roomId] ??= []).push(followedTopic);\n });\n\n roomIds.forEach(roomId => this.applyRoomFollowedTopics(roomId, roomToTopics[roomId] ?? []));\n\n this.invalidateUnreadSummariesForRooms(roomIds);\n }\n\n private setFollowedTopicsArray(roomIds: string[], followedTopics: FollowedTopic[]): void {\n const roomToTopics: {[roomId: string]: FollowedTopic[]} = {};\n\n // Reassign followed topics to limit collection change event emit\n followedTopics.forEach(followedTopic => {\n roomToTopics[followedTopic.location.roomId] ??= [];\n roomToTopics[followedTopic.location.roomId].push(followedTopic);\n });\n\n roomIds.forEach(roomId => {\n if (! this.followedTopics.has(roomId)) {\n this.followedTopics.set([roomId, new ObservableIndexedObjectCollection<FollowedTopic>(\n followedTopic => followedTopic.location.topicId\n )]);\n }\n\n if (roomToTopics[roomId]) {\n this.followedTopics.get(roomId).set(...roomToTopics[roomId]);\n }\n });\n\n this.invalidateUnreadSummariesForRooms(roomIds);\n }\n\n private clearRoomFollowedTopicsStructures(roomId: string): void {\n this.followedTopics.delete(roomId);\n this.followedTopicsPromises.forget(roomId);\n this.staleRooms.delete(roomId);\n this.invalidateUnreadSummaries(roomId);\n }\n}","import {IndexedCollection, ObservableIndexedObjectCollection} from \"../IndexedObjectCollection\";\nimport {\n Message,\n MessagesRedacted,\n NewMessage,\n NewTopic,\n Room, RoomDeleted,\n RoomJoined, RoomLeft,\n RoomMember, RoomMemberJoined, RoomMemberLeft, RoomMembers,\n RoomMemberUpdated, RoomUpdated, Session, SpaceDeleted, SpaceLeft, SpaceMemberLeft,\n SpaceMemberUpdated,\n Topic,\n TopicDeleted, TopicUpdated,\n UserUpdated,\n} from \"../types/src\";\nimport {ChatStateTracker} from \"./ChatStateTracker\";\nimport {DeferredTask, PromiseRegistry} from \"./AsyncUtils\";\nimport {MessagesManager} from \"./MessagesManager\";\nimport {FollowedTopicsManager} from \"./FollowedTopicsManager\";\n\nexport class RoomsManager {\n public readonly messages: MessagesManager;\n public readonly followedTopics: FollowedTopicsManager;\n\n private readonly list = new ObservableIndexedObjectCollection<Room>('id');\n private readonly topics = new IndexedCollection<string, ObservableIndexedObjectCollection<Topic>>();\n private readonly members = new IndexedCollection<string, ObservableIndexedObjectCollection<RoomMember>>();\n private readonly deferredSession = new DeferredTask();\n private readonly membersPromises = new PromiseRegistry();\n private readonly topicsPromises = new PromiseRegistry();\n\n public constructor(private tracker: ChatStateTracker) {\n this.messages = new MessagesManager(tracker);\n this.followedTopics = new FollowedTopicsManager(tracker);\n\n this.tracker.client.on('NewMessage', ev => this.handleNewMessage(ev));\n this.tracker.client.on('MessagesRedacted', ev => this.handleMessagesRedacted(ev));\n this.tracker.client.on('NewTopic', ev => this.handleNewTopic(ev));\n this.tracker.client.on('TopicDeleted', ev => this.handleTopicDeleted(ev));\n this.tracker.client.on('RoomJoined', ev => this.handleRoomJoined(ev));\n this.tracker.client.on('RoomLeft', ev => this.handleRoomLeft(ev));\n this.tracker.client.on('RoomUpdated', ev => this.handleRoomUpdated(ev));\n this.tracker.client.on('RoomDeleted', ev => this.handleRoomDeleted(ev));\n this.tracker.client.on('TopicUpdated', ev => this.handleTopicUpdated(ev));\n this.tracker.client.on('RoomMemberJoined', ev => this.handleRoomMemberJoined(ev));\n this.tracker.client.on('RoomMemberLeft', ev => this.handleRoomMemberLeft(ev));\n this.tracker.client.on('RoomMembers', ev => this.handleRoomMembers(ev));\n this.tracker.client.on('RoomMemberUpdated', ev => this.handleRoomMemberUpdated(ev));\n this.tracker.client.on('SpaceMemberLeft', ev => this.handleSpaceMemberLeft(ev));\n this.tracker.client.on('SpaceMemberUpdated', ev => this.handleSpaceMemberUpdated(ev));\n this.tracker.client.on('SpaceDeleted', ev => this.handleSpaceDeleted(ev));\n this.tracker.client.on('SpaceLeft', ev => this.handleSpaceDeleted(ev));\n this.tracker.client.on('UserUpdated', ev => this.handleUserUpdated(ev));\n this.tracker.client.on('Session', ev => this.handleSession(ev));\n }\n\n /**\n * Get collection of room members.\n */\n public async getMembers(roomId: string): Promise<ObservableIndexedObjectCollection<RoomMember> | undefined> {\n if (this.membersPromises.notExist(roomId)) {\n this.membersPromises.registerByFunction(async () => {\n const result = await this.tracker.client.send('GetRoomMembers', {id: roomId});\n if (result.error) {\n throw result.error;\n }\n this.handleRoomMembers(result.data);\n }, roomId);\n }\n\n await this.membersPromises.get(roomId);\n return this.members.get(roomId);\n }\n\n /**\n * Get a room member representing the current user.\n */\n public async getMe(roomId: string): Promise<RoomMember | undefined> {\n const userId = (await this.tracker.getMe()).id;\n\n if (! this.list.has(roomId)) {\n // User is not in passed room.\n return undefined;\n }\n\n const members = await this.getMembers(roomId);\n return members?.items.find(member => (member.user?.id ?? member.spaceMember.user.id) === userId);\n }\n\n /**\n * Get collection of all the rooms you are in.\n */\n public async get(): Promise<ObservableIndexedObjectCollection<Room>> {\n await this.deferredSession.promise;\n return this.list;\n }\n\n /**\n * Get a collection of locally cached Topic objects for given room.\n * You can pass topic ids as second argument, to try to fetch them from the server.\n */\n public async getTopics(roomId: string, tryToFetchTopicIds?: string[]): Promise<ObservableIndexedObjectCollection<Topic> | undefined> {\n await this.deferredSession.promise;\n\n if (tryToFetchTopicIds?.length) {\n // Topic can be fetched if it isn't already cached and fetch is not already in progress\n const canFetch = (topicId: string) => ! this.topics.get(roomId)?.has(topicId) && ! this.topicsPromises.has(roomId + topicId);\n const idsToFetch = tryToFetchTopicIds.filter(canFetch);\n\n if (idsToFetch.length) {\n const promise = this.tracker\n .client\n .send('GetTopics', {roomId, topicIds: idsToFetch})\n .then(result => this.topics.get(result.data.location.roomId)?.set(...result.data.topics));\n\n idsToFetch.forEach(topicId => this.topicsPromises.register(promise, roomId + topicId));\n }\n\n for (const topicId of tryToFetchTopicIds) {\n await this.topicsPromises.get(roomId + topicId);\n }\n }\n\n return this.topics.get(roomId);\n }\n\n /**\n * For internal use. If you want to delete topic, execute a proper command on client object.\n * @internal\n */\n public _deleteTopicsFromRoom(roomId: string, ...topicIds: string[]): void {\n this.topics.get(roomId)?.delete(...topicIds);\n }\n\n private deleteRoom(...roomIds: string[]): void {\n this.list.delete(...roomIds);\n this.members.delete(...roomIds);\n this.membersPromises.forget(...roomIds);\n\n for (const roomId of roomIds) {\n const topicIds: string[] = this.topics.get(roomId)?.items.map(topic => topic.id) ?? [];\n this.followedTopics._deleteByTopicIds(roomId, ...topicIds);\n }\n\n this.topics.delete(...roomIds);\n }\n\n private deleteRoomsBySpaceId(spaceId: string): void {\n this.deleteRoom(\n ...this.list.findBy('spaceId', spaceId).items.map(room => room.id)\n );\n }\n\n private handleSpaceMemberUpdated(ev: SpaceMemberUpdated): void {\n // Update members of rooms related to this space\n for (const room of this.list.findBy('spaceId', ev.spaceId).items) {\n const roomMembers = this.members.get(room.id);\n\n if (!roomMembers || !roomMembers.has(ev.userId)) {\n // Skip update if member list for this room is not loaded\n // or user is not in room\n continue;\n }\n\n // Update space member in roomMember, but first fill the user object (it's null in event)\n const roomMember = roomMembers.get(ev.userId);\n const spaceMember = ev.member;\n spaceMember.user = roomMember.spaceMember.user;\n roomMembers.set({ ...roomMember, spaceMember });\n }\n }\n\n private handleSpaceMemberLeft(ev: SpaceMemberLeft): void {\n this.list\n .findBy('spaceId', ev.spaceId).items\n .forEach(room => this.members.get(room.id)?.delete(ev.userId));\n }\n\n private handleRoomMemberUpdated(ev: RoomMemberUpdated): void {\n if (! this.members.has(ev.roomId)) {\n // We do not track member list for this room.\n return;\n }\n\n const members = this.members.get(ev.roomId);\n const member = members.get(ev.userId);\n const newMember = ev.member;\n const user = member.spaceMember?.user ?? member.user;\n\n // Preserving user object, because it's not included in event\n if (newMember.spaceMember) {\n newMember.spaceMember.user = user;\n } else {\n newMember.user = user;\n }\n\n members.set(newMember);\n }\n\n private handleSpaceDeleted(ev: SpaceDeleted | SpaceLeft): void {\n this.deleteRoomsBySpaceId(ev.id);\n }\n\n private handleTopicDeleted(ev: TopicDeleted): void {\n const collection = this.topics.get(ev.location.roomId);\n collection.delete(ev.location.topicId);\n\n const room = this.list.get(ev.location.roomId);\n if (room.defaultTopic?.id === ev.location.topicId) {\n this.list.set({...room, defaultTopic: null});\n }\n }\n\n private handleNewTopic(ev: NewTopic): void {\n this.addJoinedRoomTopics(ev.roomId, ev.topic);\n }\n\n private addJoinedRoomTopics(roomId: string, ...topics: Topic[]): void {\n if (this.topics.has(roomId)) {\n this.topics.get(roomId).set(...topics);\n } else {\n this.topics.set([roomId, new ObservableIndexedObjectCollection<Topic>('id', topics)]);\n }\n }\n\n private handleRoomJoined(ev: RoomJoined): void {\n this.addJoinedRooms(ev.room);\n }\n\n private handleRoomUpdated(ev: RoomUpdated): void {\n if (this.list.has(ev.room.id)) {\n this.list.set(ev.room);\n }\n }\n\n private handleRoomDeleted(ev: RoomDeleted): void {\n this.deleteRoom(ev.id);\n }\n\n private handleTopicUpdated(ev: TopicUpdated): void {\n const room = this.list.get(ev.location.roomId);\n\n if (this.topics.get(ev.location.roomId)?.has(ev.topic.id)) {\n this.topics.get(ev.location.roomId).set(ev.topic);\n }\n\n if (room.defaultTopic.id === ev.topic.id) {\n const newRoom = { ...room };\n newRoom.defaultTopic = ev.topic;\n this.list.set(newRoom);\n }\n }\n\n private addJoinedRooms(...rooms: Room[]): void {\n for (const room of rooms) {\n if (room.defaultTopic) {\n this.addJoinedRoomTopics(room.id, room.defaultTopic);\n }\n\n if (room.type === 'Pm' && room.recipients) {\n // Treat PM recipients as normal room members.\n // We are registering fake promise in `memberPromises`\n // because GetMembers are not supported for PM rooms.\n this.handleRoomMembers({\n id: room.id,\n members: room.recipients.map(user => ({\n user,\n spaceMember: null,\n roles: null,\n customColor: null,\n customNick: null,\n extras: '',\n })),\n });\n this.membersPromises.register(Promise.resolve(), room.id);\n }\n }\n this.list.set(...rooms);\n }\n\n private handleRoomLeft(ev: RoomLeft): void {\n this.deleteRoom(ev.id);\n }\n\n private handleRoomMemberJoined(ev: RoomMemberJoined): void {\n if (this.members.has(ev.roomId)) {\n this.members.get(ev.roomId).set(ev.member);\n }\n }\n\n private handleRoomMemberLeft(ev: RoomMemberLeft): void {\n if (this.members.has(ev.roomId)) {\n this.members.get(ev.roomId).delete(ev.userId);\n }\n }\n\n private handleRoomMembers(ev: RoomMembers): void {\n if (! this.members.has(ev.id)) {\n this.members.set([\n ev.id,\n new ObservableIndexedObjectCollection(\n member => member.user?.id ?? member.spaceMember.user.id,\n ev.members,\n )\n ]);\n } else {\n // Reconcile into the existing (bound) collection so a reconnect\n // refetch updates it in place instead of leaving stale members.\n this.members.get(ev.id).reconcile(...ev.members);\n }\n }\n\n private handleSession(ev: Session): void {\n const stateRoomIds = new Set(ev.state.rooms.map(room => room.id));\n\n // Remove only rooms that were left/deleted on the server during the\n // downtime, reusing the cascade cleanup (members, topics, followed\n // topics). Surviving rooms keep their identity and bindings.\n const removedRoomIds = this.list.items\n .filter(room => ! stateRoomIds.has(room.id))\n .map(room => room.id);\n if (removedRoomIds.length) {\n this.deleteRoom(...removedRoomIds);\n }\n\n // Invalidate lazy caches so the next access refetches fresh data, but\n // keep the collection objects: handleRoomMembers reconciles into them,\n // so bound views refresh in place without blanking.\n this.membersPromises.forgetAll();\n this.topicsPromises.forgetAll();\n\n // Upsert surviving/new rooms from the authoritative snapshot.\n this.addJoinedRooms(...ev.state.rooms);\n\n this.deferredSession.resolve();\n }\n\n private handleUserUpdated(ev: UserUpdated): void {\n // Update room members users\n this.members.items.forEach((members) => {\n const member = members.get(ev.user.id);\n\n if (! member) {\n // Skip room; updated user is not here\n return;\n }\n\n const newMember: RoomMember = {...member};\n\n if (member.user) {\n newMember.user = ev.user;\n } else {\n newMember.spaceMember.user = ev.user;\n }\n\n members.set(newMember);\n });\n\n // Update recipients users\n const newRooms: Room[] = [];\n this.list.items.forEach(room => {\n if (room.recipients?.some(user => user.id === ev.user.id)) {\n room.recipients = room.recipients.map(user => user.id === ev.user.id ? ev.user : user);\n newRooms.push({...room});\n }\n });\n this.list.set(...newRooms);\n }\n\n private handleNewMessage(ev: NewMessage): void {\n const topics = this.topics.get(ev.message.location.roomId);\n const topic = topics?.get(ev.message.location.topicId);\n\n if (!topic) {\n return; // No topic found, nothing to update\n }\n\n const newTopic = {\n ...topic,\n messageCount: topic.messageCount + 1,\n lastMessage: ev.message,\n };\n\n topics.set(newTopic);\n const room = this.list.get(ev.message.location.roomId);\n\n if (room.defaultTopic?.id === ev.message.location.topicId) {\n this.list.set({ ...room, defaultTopic: newTopic });\n }\n }\n\n private async handleMessagesRedacted(ev: MessagesRedacted): Promise<void> {\n // Remove redacted messages from topic and update metadata\n const topics = this.topics.get(ev.location.roomId);\n const topic = topics?.get(ev.location.topicId);\n if (topic) {\n const messageCount = Math.max(topic.messageCount - ev.ids.length, 0);\n const lastMessage: Message = messageCount > 0 ? await this.messages._resolveLastMessage(ev.location) : null;\n topics.set({ ...topic, messageCount, lastMessage } as Topic);\n }\n }\n}","import {Role, RoomMember, SpaceMember, User} from \"../types/src\";\r\n\r\nexport function reorderRolesOnPriorityUpdate(allRoles: Role[], oldRole: Role, updatedRole: Role): Role[] {\r\n // If the priority has changed, adjust the rest of roles\r\n const increased = (updatedRole.priority - oldRole.priority) > 0;\r\n const decreased = ! increased;\r\n const changedRoles: Role[] = [];\r\n\r\n allRoles.forEach(role => {\r\n if (role.id === updatedRole.id) {\r\n // Skip the updated role\r\n return;\r\n }\r\n if (increased && oldRole.priority <= role.priority) {\r\n role.priority--;\r\n changedRoles.push(role);\r\n }\r\n if (decreased && updatedRole.priority <= role.priority) {\r\n role.priority++;\r\n changedRoles.push(role);\r\n }\r\n });\r\n\r\n return changedRoles;\r\n}\r\n\r\nexport function extractUserFromMember(member: RoomMember | SpaceMember): User | null {\r\n return member.user ?? (member as RoomMember).spaceMember?.user;\r\n}","import {ChatStateTracker} from \"./ChatStateTracker\";\nimport {IndexedCollection, ObservableIndexedObjectCollection} from \"../IndexedObjectCollection\";\nimport {\n NewRole,\n NewRoom,\n Role,\n RoleDeleted,\n RoleUpdated,\n RoomDeleted,\n RoomSummary,\n RoomSummaryUpdated,\n RoomUpdated,\n Session,\n Space,\n SpaceDeleted,\n SpaceJoined,\n SpaceLeft,\n SpaceMember,\n SpaceMemberJoined,\n SpaceMemberLeft,\n SpaceMembers,\n SpaceMemberUpdated,\n SpaceRooms,\n SpaceUpdated,\n UserUpdated\n} from \"../types/src\";\nimport {DeferredTask, PromiseRegistry} from \"./AsyncUtils\";\nimport {reorderRolesOnPriorityUpdate} from \"./functions\";\n\nexport class SpacesManager {\n private readonly list = new ObservableIndexedObjectCollection<Space>('id');\n private readonly roles = new IndexedCollection<string, ObservableIndexedObjectCollection<Role>>();\n private readonly rooms = new IndexedCollection<string, ObservableIndexedObjectCollection<RoomSummary>>();\n private readonly roomIdToSpaceId = new IndexedCollection<string, string>();\n private readonly members = new IndexedCollection<string, ObservableIndexedObjectCollection<SpaceMember>>();\n private readonly deferredSession = new DeferredTask();\n private readonly roomsPromises = new PromiseRegistry();\n private readonly membersPromises = new PromiseRegistry();\n\n public constructor(private tracker: ChatStateTracker) {\n this.tracker.client.on('NewRoom', ev => this.handleNewRoom(ev));\n this.tracker.client.on('RoomDeleted', ev => this.handleRoomDeleted(ev));\n this.tracker.client.on('RoomUpdated', ev => this.handleRoomUpdated(ev));\n this.tracker.client.on('SpaceDeleted', ev => this.handleSpaceDeleted(ev));\n this.tracker.client.on('SpaceUpdated', ev => this.handleSpaceUpdated(ev));\n this.tracker.client.on('SpaceJoined', ev => this.handleSpaceJoined(ev));\n this.tracker.client.on('SpaceLeft', ev => this.handleSpaceDeleted(ev));\n this.tracker.client.on('SpaceMemberJoined', ev => this.handleSpaceMemberJoined(ev));\n this.tracker.client.on('SpaceMemberLeft', ev => this.handleSpaceMemberLeft(ev));\n this.tracker.client.on('SpaceMembers', ev => this.handleSpaceMembers(ev));\n this.tracker.client.on('SpaceRooms', ev => this.handleSpaceRooms(ev));\n this.tracker.client.on('RoomSummaryUpdated', ev => this.handleRoomSummaryUpdated(ev));\n this.tracker.client.on('SpaceMemberUpdated', ev => this.handleSpaceMemberUpdated(ev));\n this.tracker.client.on('UserUpdated', ev => this.handleUserUpdated(ev));\n this.tracker.client.on('NewRole', ev => this.handleNewRole(ev));\n this.tracker.client.on('RoleDeleted', ev => this.handleRoleDeleted(ev));\n this.tracker.client.on('RoleUpdated', ev => this.handleRoleUpdated(ev));\n this.tracker.client.on('Session', ev => this.handleSession(ev));\n }\n\n /**\n * Get collection of all the spaces you are in.\n */\n public async get(): Promise<ObservableIndexedObjectCollection<Space>> {\n await this.deferredSession.promise;\n return this.list;\n }\n\n /**\n * Get collection of space roles.\n */\n public async getRoles(spaceId: string): Promise<ObservableIndexedObjectCollection<Role> | undefined> {\n await this.deferredSession.promise;\n return this.roles.get(spaceId);\n }\n\n /**\n * Get collection of the all available rooms inside given space.\n */\n public async getRooms(spaceId: string): Promise<ObservableIndexedObjectCollection<RoomSummary> | undefined> {\n if (this.roomsPromises.notExist(spaceId)) {\n this.roomsPromises.registerByFunction(async () => {\n const result = await this.tracker.client.send('GetSpaceRooms', {id: spaceId});\n if (result.error) {\n throw result.error;\n }\n this.handleSpaceRooms(result.data);\n }, spaceId);\n }\n\n await this.roomsPromises.get(spaceId);\n return this.rooms.get(spaceId);\n }\n\n /**\n * Get collection of space members.\n */\n public async getMembers(spaceId: string): Promise<ObservableIndexedObjectCollection<SpaceMember> | undefined> {\n if (this.membersPromises.notExist(spaceId)) {\n this.membersPromises.registerByFunction(async () => {\n const result = await this.tracker.client.send('GetSpaceMembers', {id: spaceId});\n if (result.error) {\n throw result.error;\n }\n this.handleSpaceMembers(result.data);\n }, spaceId);\n }\n\n await this.membersPromises.get(spaceId);\n return this.members.get(spaceId);\n }\n\n /**\n * Get a space member representing the current user.\n */\n public async getMe(spaceId: string): Promise<SpaceMember | undefined> {\n const userId = (await this.tracker.getMe()).id;\n\n if (! this.list.has(spaceId)) {\n // User is not in passed space.\n return undefined;\n }\n\n const members = await this.getMembers(spaceId);\n return members?.items.find(member => member.user.id === userId);\n }\n\n private handleNewRole(ev: NewRole): void {\n const collection = this.roles.get(ev.spaceId);\n collection.set(ev.role);\n this.list.get(ev.spaceId).roles = collection.items;\n }\n\n private handleNewRoom(ev: NewRoom): void {\n this.rooms.get(ev.spaceId)?.set(ev.summary);\n this.roomIdToSpaceId.set([ev.summary.id, ev.spaceId]);\n }\n\n private handleRoomUpdated(ev: RoomUpdated): void {\n if (ev.room.spaceId && this.rooms.has(ev.room.spaceId)) {\n const rooms = this.rooms.get(ev.room.spaceId);\n rooms.set({\n ...rooms.get(ev.room.id),\n name: ev.room.name,\n description: ev.room.description,\n } as RoomSummary);\n }\n }\n\n private async handleRoomDeleted(ev: RoomDeleted): Promise<void> {\n const spaceId = this.roomIdToSpaceId.get(ev.id);\n this.roomIdToSpaceId.delete(ev.id);\n\n if (! spaceId) {\n return;\n }\n\n const space = this.list.get(spaceId);\n let spaceChanged = false;\n\n this.rooms.get(spaceId)?.delete(ev.id);\n\n if (space.systemRoom === ev.id) {\n space.systemRoom = null;\n spaceChanged = true;\n }\n\n if (space.defaultRooms.includes(ev.id)) {\n space.defaultRooms = space.defaultRooms.filter(roomId => roomId !== ev.id);\n spaceChanged = true;\n }\n\n if (spaceChanged) {\n this.list.set(space);\n }\n }\n\n private handleRoleDeleted(ev: RoleDeleted): void {\n const collection = this.roles.get(ev.spaceId);\n collection.delete(ev.id);\n this.list.get(ev.spaceId).roles = collection.items;\n }\n\n private handleSpaceUpdated(ev: SpaceUpdated): void {\n this.list.set(ev.space);\n }\n\n private handleSpaceDeleted(ev: SpaceDeleted | SpaceLeft): void {\n const roomIds = this.rooms.get(ev.id)?.items.map(item => item.id) ?? [];\n this.roomIdToSpaceId.delete(...roomIds);\n\n this.roles.delete(ev.id);\n this.members.delete(ev.id);\n this.membersPromises.forget(ev.id);\n this.rooms.delete(ev.id);\n this.roomsPromises.forget(ev.id);\n this.list.delete(ev.id);\n }\n\n private handleSpaceJoined(ev: SpaceJoined): void {\n this.addJoinedSpaces(ev.space);\n }\n\n private addJoinedSpaces(...spaces: Space[]): void {\n this.roles.set(...(spaces.map(space => [\n space.id,\n new ObservableIndexedObjectCollection<Role>('id', space.roles)\n ]) as [string, ObservableIndexedObjectCollection<Role>][]));\n this.list.set(...spaces);\n }\n\n private handleSpaceMemberJoined(ev: SpaceMemberJoined): void {\n if (this.members.has(ev.spaceId)) {\n this.members.get(ev.spaceId).set(ev.member);\n }\n }\n\n private handleSpaceMemberLeft(ev: SpaceMemberLeft): void {\n if (this.members.has(ev.spaceId)) {\n this.members.get(ev.spaceId).delete(ev.userId);\n }\n }\n\n private handleSpaceMembers(ev: SpaceMembers): void {\n if (! this.members.has(ev.id)) {\n this.members.set([\n ev.id,\n new ObservableIndexedObjectCollection(member => member?.user.id, ev.members)\n ]);\n } else {\n // Reconcile into the existing (bound) collection so a reconnect\n // refetch updates it in place instead of leaving stale members.\n this.members.get(ev.id).reconcile(...ev.members);\n }\n }\n\n private handleSpaceRooms(ev: SpaceRooms): void {\n if (! this.rooms.has(ev.id)) {\n this.rooms.set([ev.id, new ObservableIndexedObjectCollection('id', ev.summaries)]);\n } else {\n this.rooms.get(ev.id).reconcile(...ev.summaries);\n }\n ev.summaries.forEach(summary => this.roomIdToSpaceId.set([summary.id, ev.id]));\n }\n\n private async handleRoomSummaryUpdated(ev: RoomSummaryUpdated): Promise<void> {\n const spaceId = this.roomIdToSpaceId.get(ev.summary.id);\n const summariesPromise = this.roomsPromises.get(spaceId);\n\n /**\n * Update summary only if the list was already loaded.\n * RoomSummaryUpdated event has a partial summary, so we need to update the existing summary by merging it.\n */\n if (spaceId && summariesPromise) {\n await summariesPromise;\n\n const summaries = this.rooms.get(spaceId);\n const oldSummary = summaries.get(ev.summary.id);\n let newSummary: RoomSummary;\n\n if (oldSummary) {\n newSummary = {...oldSummary, ...ev.summary};\n } else {\n newSummary = ev.summary;\n }\n\n summaries.set(newSummary);\n }\n }\n\n private handleSpaceMemberUpdated(ev: SpaceMemberUpdated): void {\n if (this.members.has(ev.spaceId)) {\n const members = this.members.get(ev.spaceId);\n const member = members.get(ev.userId);\n members.set({...ev.member, user: member.user});\n }\n }\n\n private handleRoleUpdated(ev: RoleUpdated): void {\n const roles = this.roles.get(ev.spaceId);\n const oldRole = roles.get(ev.role.id);\n const newRole = ev.role;\n const rolesToUpdate = [newRole];\n\n if (oldRole.priority !== newRole.priority) {\n rolesToUpdate.push(\n ...reorderRolesOnPriorityUpdate(roles.items, oldRole, newRole)\n );\n }\n\n this.roles.get(ev.spaceId).set(...rolesToUpdate);\n }\n\n private handleSession(ev: Session): void {\n const stateSpaceIds = new Set(ev.state.spaces.map(space => space.id));\n\n // Remove only spaces that were left/deleted on the server during the\n // downtime, reusing the cascade cleanup (roles, rooms, members, index).\n const removedSpaceIds = this.list.items\n .filter(space => ! stateSpaceIds.has(space.id))\n .map(space => space.id);\n for (const spaceId of removedSpaceIds) {\n this.handleSpaceDeleted({ id: spaceId } as SpaceDeleted);\n }\n\n // Invalidate lazy caches (rooms/members) but keep their objects so the\n // next access refetches and reconciles them in place.\n this.roomsPromises.forgetAll();\n this.membersPromises.forgetAll();\n\n // Reconcile roles in place (kept, possibly bound object) and upsert the\n // spaces from the authoritative snapshot.\n for (const space of ev.state.spaces) {\n if (this.roles.has(space.id)) {\n this.roles.get(space.id).reconcile(...space.roles);\n } else {\n this.roles.set([\n space.id,\n new ObservableIndexedObjectCollection<Role>('id', space.roles),\n ]);\n }\n }\n\n this.list.set(...ev.state.spaces);\n\n this.deferredSession.resolve();\n }\n\n private handleUserUpdated(ev: UserUpdated): void {\n this.members.items.forEach((members) => {\n const member = members.get(ev.user.id);\n\n if (! member) {\n // Skip space; updated user is not here\n return;\n }\n\n members.set({...member, user: ev.user});\n });\n }\n}","export enum Layer {\n Global,\n Space,\n Room,\n Topic,\n}\n\nexport class PermissionDefinition {\n value: number;\n maxLayer: Layer;\n}\n\nexport class Permissions {\n public static readonly list = {\n Root: {value: 1 << 0, maxLayer: Layer.Room},\n CreateSpaces: {value: 1 << 1, maxLayer: Layer.Global},\n ManageSpace: {value: 1 << 2, maxLayer: Layer.Space},\n ManageRoles: {value: 1 << 3, maxLayer: Layer.Space},\n //ManageRoom: {value: 1 << 4, maxLayer: Layer.Room},\n CreateTopics: {value: 1 << 5, maxLayer: Layer.Room},\n ManageTopic: {value: 1 << 6, maxLayer: Layer.Topic},\n ManageMemberProfiles: {value: 1 << 7, maxLayer: Layer.Space},\n ManageMemberRoles: {value: 1 << 8, maxLayer: Layer.Room},\n CreateMessages: {value: 1 << 9, maxLayer: Layer.Topic},\n ManagePermissions: {value: 1 << 10, maxLayer: Layer.Topic},\n CreateRooms: {value: 1 << 11, maxLayer: Layer.Space},\n ManageRoom: {value: 1 << 12, maxLayer: Layer.Room},\n CreateEmoticons: {value: 1 << 13, maxLayer: Layer.Space},\n ManageEmoticons: {value: 1 << 14, maxLayer: Layer.Space},\n ManageBans: {value: 1 << 15, maxLayer: Layer.Room},\n Kick: {value: 1 << 16, maxLayer: Layer.Room},\n ChangeOwnNick: {value: 1 << 17, maxLayer: Layer.Space},\n ChangeOwnColor: {value: 1 << 18, maxLayer: Layer.Room},\n RedactMessages: {value: 1 << 19, maxLayer: Layer.Topic},\n };\n\n public static getNames(): (keyof typeof this.list)[] {\n return Object.keys(this.list) as any;\n }\n\n public static getByName(name: keyof typeof this.list): PermissionDefinition | undefined {\n return this.list[name];\n }\n\n public static canBeDefinedOnLayer(permissionName: keyof typeof this.list, layer: Layer): boolean {\n const def = this.getByName(permissionName);\n\n if (! def) {\n throw new Error(`Invalid permission name: ${permissionName}`);\n }\n\n return layer <= this.getByName(permissionName).maxLayer;\n }\n}","import {ChatStateTracker} from \"./ChatStateTracker\";\nimport {\n ChatLocation,\n PermissionOverwrites, PermissionOverwritesTarget,\n PermissionOverwritesUpdated,\n PermissionOverwritesValue,\n RoleDeleted,\n RoomDeleted,\n RoomLeft, RoomMember, RoomMemberUpdated, Session,\n SpaceDeleted,\n SpaceLeft, SpaceMember,\n SpaceMemberUpdated,\n TopicDeleted,\n} from \"../types/src\";\nimport {ChangeEventMap, EventTarget} from \"../EventTarget\";\nimport {IndexedCollection} from \"../IndexedObjectCollection\";\nimport {Permissions} from \"../Permissions\";\nimport {PromiseRegistry} from \"./AsyncUtils\";\n\nconst getOvId = (\n location: ChatLocation,\n target?: PermissionOverwritesTarget,\n) => [location.spaceId, location.roomId, location.topicId, target?.type, target?.userId, target?.roleId].filter(Boolean).join('/');\n\nconst getOvIdByObject\n = (overwrites: PermissionOverwrites | PermissionOverwritesUpdated): string => getOvId(overwrites.location, overwrites.target);\n\ninterface CheckPermissionsResult {\n /**\n * @deprecated Use `hasAll` instead.\n */\n ok: boolean;\n hasAll: boolean;\n hasAny: boolean;\n missing: string[];\n}\n\ntype PermissionsManagerEventMap = ChangeEventMap<void>;\n\nexport class PermissionsManager extends EventTarget<PermissionsManagerEventMap> {\n private readonly overwrites = new IndexedCollection<string, PermissionOverwrites>();\n private readonly overwritesPromises = new PromiseRegistry();\n\n public constructor(private tracker: ChatStateTracker) {\n super();\n this.tracker.client.on('PermissionOverwrites', ev => this.handlePermissionOverwrites(ev));\n this.tracker.client.on('PermissionOverwritesUpdated', ev => this.handlePermissionOverwrites(ev));\n this.tracker.client.on('SpaceDeleted', ev => this.handleSpaceDeleted(ev));\n this.tracker.client.on('SpaceLeft', ev => this.handleSpaceDeleted(ev));\n this.tracker.client.on('RoomDeleted', ev => this.handleRoomDeleted(ev));\n this.tracker.client.on('RoomLeft', ev => this.handleRoomDeleted(ev));\n this.tracker.client.on('TopicDeleted', ev => this.handleTopicDeleted(ev));\n this.tracker.client.on('RoleDeleted', ev => this.handleRoleDeleted(ev));\n this.tracker.client.on('SpaceMemberUpdated', ev => this.handleSpaceMemberUpdated(ev));\n this.tracker.client.on('RoomMemberUpdated', ev => this.handleRoomMemberUpdated(ev));\n this.tracker.client.on('Session', ev => this.handleSession(ev));\n }\n\n public async getOverwrites(\n location: ChatLocation,\n target: PermissionOverwritesTarget,\n ): Promise<PermissionOverwrites | undefined> {\n this.validateLocation(location);\n\n const id = getOvId(location, target);\n\n if (this.overwritesPromises.notExist(id)) {\n this.overwritesPromises.registerByFunction(async () => {\n const result = await this.tracker.client.send(\n 'GetPermissionOverwrites',\n {location, target},\n );\n if (result.error) {\n throw result.error;\n }\n this.handlePermissionOverwrites(result.data);\n }, id);\n }\n\n await this.overwritesPromises.get(id);\n return this.overwrites.get(id);\n }\n\n public async check(\n permissionNames: (keyof typeof Permissions.list)[],\n location: ChatLocation,\n ): Promise<CheckPermissionsResult> {\n if (! permissionNames.length) {\n throw new Error('Permission names array cannot be empty');\n }\n\n const ownedPermissions = await this.calculatePermissions(location);\n const missing: string[] = [];\n\n permissionNames.forEach(name => {\n if (~ ownedPermissions & Permissions.getByName(name).value) {\n missing.push(name as string);\n }\n });\n\n return {\n ok: missing.length === 0,\n hasAll: missing.length === 0,\n hasAny: missing.length < permissionNames.length,\n missing,\n };\n }\n\n public async calculatePermissions(location: ChatLocation): Promise<number> {\n const room = location.roomId ? (await this.tracker.rooms.get()).get(location.roomId) : null;\n location = {\n spaceId: location.spaceId ?? room?.spaceId,\n roomId: location.roomId,\n topicId: location.topicId,\n };\n\n this.validateLocation(location);\n\n const userId = (await this.tracker.getMe()).id;\n const [spaceMember, roomMember] = await this.fetchMembersOrFail(location);\n const userRoles: string[] = [...(spaceMember?.roles ?? []), ...(roomMember?.roles ?? [])];\n const promises: Promise<PermissionOverwritesValue>[] = [\n // Global user overwrites\n this.getOverwrites({}, { type: 'User', userId }).then(v => v.overwrites),\n ];\n\n if (location.spaceId && (await this.tracker.spaces.get())?.has(location.spaceId)) {\n const filterLocation: ChatLocation = {spaceId: location.spaceId};\n promises.push(this.collectRoleOverwrites(filterLocation, userRoles));\n promises.push(this.getOverwrites(filterLocation, { type: 'User', userId }).then(v => v.overwrites));\n }\n\n if (room) {\n const filterLocation: ChatLocation = {spaceId: location.spaceId, roomId: location.roomId};\n if (userRoles.length) {\n promises.push(this.collectRoleOverwrites(filterLocation, userRoles));\n }\n promises.push(this.getOverwrites(filterLocation, { type: 'User', userId }).then(v => v.overwrites));\n }\n\n if (location.topicId && (await this.tracker.rooms.getTopics(location.roomId))?.has(location.topicId)) {\n if (userRoles.length) {\n promises.push(this.collectRoleOverwrites(location, userRoles));\n }\n promises.push(this.getOverwrites(location, { type: 'User', userId }).then(v => v.overwrites));\n }\n\n return this.resolveOverwritesHierarchy(await Promise.all(promises));\n }\n\n private handlePermissionOverwrites(ev: PermissionOverwritesUpdated | PermissionOverwrites): void {\n this.overwrites.set([getOvIdByObject(ev), ev]);\n this.emit('change');\n }\n\n private handleSpaceDeleted(ev: SpaceDeleted | SpaceLeft): void {\n const ids = this.deleteOverwritesByIdPrefix(getOvId({spaceId: ev.id}));\n this.overwritesPromises.forget(...ids);\n }\n\n private async handleRoomDeleted(ev: RoomDeleted | RoomLeft): Promise<void> {\n const room = (await this.tracker.rooms.get()).get(ev.id);\n if (room) {\n const ids = this.deleteOverwritesByIdPrefix(getOvId({spaceId: room.spaceId, roomId: room.id}));\n this.overwritesPromises.forget(...ids);\n }\n }\n\n private handleTopicDeleted(ev: TopicDeleted): void {\n const ids = this.deleteOverwritesByIdPrefix(getOvId(ev.location));\n this.overwritesPromises.forget(...ids);\n }\n\n private handleRoleDeleted(ev: RoleDeleted): void {\n const ids = this.deleteOverwritesByIdPrefix(getOvId({spaceId: ev.spaceId}, { type: 'Role', roleId: ev.id }));\n this.overwritesPromises.forget(...ids);\n }\n\n private handleSpaceMemberUpdated(ev: SpaceMemberUpdated): void {\n if (ev.userId === this.tracker.me?.id) {\n // User roles in space could potentially have changed\n this.emit('change');\n }\n }\n\n private handleRoomMemberUpdated(ev: RoomMemberUpdated): void {\n if (ev.userId === this.tracker.me?.id) {\n // User roles in room could potentially have changed\n this.emit('change');\n }\n }\n\n /**\n * @return Matched and deleted ids\n */\n private deleteOverwritesByIdPrefix(prefix: string): string[] {\n const ids: string[] = [];\n this.overwrites.items.forEach((overwrites) => {\n const id = getOvIdByObject(overwrites);\n if (id.startsWith(prefix)) {\n ids.push(id);\n this.overwrites.delete(id);\n }\n });\n return ids;\n }\n\n private async collectRoleOverwrites(\n location: ChatLocation,\n userRoles: string[],\n ): Promise<PermissionOverwritesValue> {\n const roleOverwrites = await Promise.all(userRoles.map(\n roleId => this.getOverwrites(location, { type: 'Role', roleId }),\n ));\n\n return this.resolveOverwritesFromRolesByOrder(location.spaceId, roleOverwrites);\n }\n\n private async resolveOverwritesFromRolesByOrder(\n spaceId: string,\n overwrites: PermissionOverwrites[],\n ): Promise<PermissionOverwritesValue> {\n let allows = 0, denies = 0;\n const roles = await this.tracker.spaces.getRoles(spaceId);\n const sortedOverwrites = overwrites.sort(\n (a, b) =>\n roles.get(a.target.roleId).priority - roles.get(b.target.roleId).priority\n );\n\n // Max length of bit word\n const permissionsLength = overwrites.reduce(\n (previousValue: number, currentValue: PermissionOverwrites) =>\n Math.max(\n previousValue,\n currentValue.overwrites.allow?.toString(2).length ?? 0,\n currentValue.overwrites.deny?.toString(2).length ?? 0,\n ),\n 0,\n );\n\n sortedOverwrites.forEach(overwriteEvent => {\n const overwrites = overwriteEvent.overwrites;\n const revDecDenies = overwrites.deny?.toString(2).split('').reverse().join('') ?? '';\n const revDecAllows = overwrites.allow?.toString(2).split('').reverse().join('') ?? '';\n\n for (let i = 0; i < permissionsLength; i++) {\n const deny = parseInt(revDecDenies[i] ?? '0');\n const allow = parseInt(revDecAllows[i] ?? '0');\n\n if (deny) {\n denies |= 1 << i;\n }\n\n if (allow) {\n allows |= 1 << i;\n }\n }\n });\n\n return {allow: allows, deny: denies};\n }\n\n private resolveOverwritesHierarchy(permissionOverwritesValues: PermissionOverwritesValue[]): number {\n let result = 0;\n\n for (const value of permissionOverwritesValues) {\n if (value.allow & Permissions.getByName('Root').value) {\n return this.getRootAccessValue();\n }\n\n result = (result & ~value.deny) | value.allow;\n }\n\n return result;\n }\n\n private getRootAccessValue(): number {\n let result = 0;\n\n for (const name of Permissions.getNames()) {\n result |= Permissions.getByName(name).value;\n }\n\n return result;\n }\n\n private async fetchMembersOrFail(location: ChatLocation): Promise<[SpaceMember | null, RoomMember | null]> {\n const results = await Promise.all([\n location.spaceId ? this.tracker.spaces.getMe(location.spaceId) : null,\n location.roomId ? this.tracker.rooms.getMe(location.roomId) : null,\n ]);\n\n const spaceFail = location.spaceId && ! results[0];\n const roomFail = location.roomId && ! results[1];\n\n if (spaceFail || roomFail) {\n const layer = spaceFail ? `space (${location.spaceId})` : `room (${location.roomId})`;\n throw new Error(`Attempting to calculate permissions for a ${layer} that the user does not belong to`);\n }\n\n return results;\n }\n\n private validateLocation(location: ChatLocation): void {\n if (location.topicId && ! location.roomId) {\n throw new Error('Corrupted arguments hierarchy');\n }\n }\n\n private handleSession(ev: Session): void {\n // Drop the fetch guards so permission checks recompute against fresh\n // overwrites (getOverwrites refetches and upserts on the next access),\n // and notify consumers to recompute so bound permission UI is never\n // left showing stale results after a reconnect.\n this.overwritesPromises.forgetAll();\n this.emit('change');\n }\n}","import {ChatStateTracker} from \"./ChatStateTracker\";\nimport {\n IndexedCollection,\n ObservableIndexedObjectCollection\n} from \"../IndexedObjectCollection\";\nimport {Emoticon, EmoticonDeleted, Emoticons, NewEmoticon, SpaceDeleted} from \"../types/src\";\nimport {PromiseRegistry} from \"./AsyncUtils\";\n\nconst GLOBAL_KEY = 'global';\n\nexport class EmoticonsManager {\n private list: IndexedCollection<string, ObservableIndexedObjectCollection<Emoticon>> = new IndexedCollection();\n private emoticonsPromises = new PromiseRegistry();\n \n public constructor(private tracker: ChatStateTracker) {\n this.tracker.client.on('Emoticons', ev => this.handleEmoticons(ev));\n this.tracker.client.on('NewEmoticon', ev => this.handleNewEmoticon(ev));\n this.tracker.client.on('EmoticonDeleted', ev => this.handleEmoticonDeleted(ev));\n this.tracker.client.on('SpaceDeleted', ev => this.handleSpaceDeleted(ev));\n this.tracker.client.on('Session', () => this.handleSession());\n }\n\n public async get(spaceId?: string): Promise<ObservableIndexedObjectCollection<Emoticon>> {\n const key = spaceId ?? GLOBAL_KEY;\n\n if (this.emoticonsPromises.notExist(key)) {\n this.emoticonsPromises.registerByFunction(async () => {\n const result = await this.tracker.client.send('GetEmoticons', {spaceId});\n if (result.error) {\n throw result.error;\n }\n this.handleEmoticons(result.data);\n }, key);\n }\n\n await this.emoticonsPromises.get(key);\n return this.list.get(key);\n }\n\n private handleEmoticons(event: Emoticons): void {\n const spaceId = event.location.spaceId ?? GLOBAL_KEY;\n\n if (!this.list.has(spaceId)) {\n this.list.set([spaceId, new ObservableIndexedObjectCollection<Emoticon>('id')]);\n }\n\n // handleEmoticons always carries the full list for a location, so\n // reconcile in place: a reconnect refetch drops removed emoticons and\n // adds new ones without blanking a bound (visible) collection.\n this.list.get(spaceId).reconcile(...event.emoticons);\n }\n\n private handleNewEmoticon(ev: NewEmoticon): void {\n const collection = this.list.get(ev.emoticon.spaceId ?? GLOBAL_KEY);\n collection?.set(ev.emoticon);\n }\n\n private handleEmoticonDeleted(ev: EmoticonDeleted): void {\n const collection = this.list.get(ev.spaceId ?? GLOBAL_KEY);\n collection?.delete(ev.emoticonId);\n }\n\n private handleSpaceDeleted(event: SpaceDeleted): void {\n this.list.delete(event.id);\n }\n\n private handleSession(): void {\n // Keep cached emoticon collections (they may be bound to visible\n // pickers); just drop the fetch guards so the next access refetches and\n // reconciles them in place.\n this.emoticonsPromises.forgetAll();\n }\n}","import {ChatStateTracker} from \"./ChatStateTracker\";\nimport {ObservableIndexedObjectCollection} from \"../IndexedObjectCollection\";\nimport {RoomMember, Session, SpaceMember, User} from \"../types/src\";\nimport {extractUserFromMember} from \"./functions\";\nimport {EventTarget} from \"../EventTarget\";\n\nexport class UsersManager {\n public readonly onlineStatus = new EventTarget<{ change: User }>();\n\n private readonly users: ObservableIndexedObjectCollection<User> = new ObservableIndexedObjectCollection('id');\n\n public constructor(private tracker: ChatStateTracker) {\n // RoomMemberUpdated & SpaceMemberUpdated events are not contains user object\n tracker.client.on('UserUpdated', event => this.handleUsers([event.user]));\n tracker.client.on('RoomMemberJoined', event => this.handleMembers([event.member]));\n tracker.client.on('SpaceMemberJoined', event => this.handleMembers([event.member]));\n tracker.client.on('SpaceMembers', event => this.handleMembers(event.members));\n tracker.client.on('RoomMembers', event => this.handleMembers(event.members));\n tracker.client.on('Messages', event => this.handleUsers(event.messages.map(message => message.author.user)));\n tracker.client.on('NewMessage', event => this.handleUsers([event.message.author.user]));\n tracker.client.on('Session', event => this.handleSession(event));\n }\n\n /**\n * Get all available (cached) user objects at once.\n */\n public async getAvailable(): Promise<ObservableIndexedObjectCollection<User>> {\n return this.users;\n }\n\n private handleMembers(members: (RoomMember | SpaceMember)[]): void {\n this.handleUsers(members.map(extractUserFromMember));\n }\n\n private handleSession(session: Session): void {\n // Keep the \"seen users\" cache across reconnects so bound user lists do\n // not blank out; just ensure our own user is present/updated. Stale\n // entries are refreshed as member/message collections refetch.\n this.handleUsers([session.user]);\n }\n\n private handleUsers(users: User[]): void {\n users.forEach(newUser => {\n const oldUser = this.users.get(newUser.id);\n if (oldUser && oldUser.online !== newUser.online) {\n this.onlineStatus.emit('change', newUser);\n }\n });\n\n this.users.set(...users);\n }\n}","import {ObservableIndexedObjectCollection} from \"../IndexedObjectCollection\";\nimport {\n NewRelationship,\n RelationshipDeleted,\n Relationships,\n UserRelationship,\n UserRelationshipType\n} from \"../types/src\";\nimport {PromiseRegistry} from \"./AsyncUtils\";\nimport {ChatStateTracker} from \"./ChatStateTracker\";\n\nconst getId = (refUserId: string, type: UserRelationshipType): string => `${refUserId}-${type}`;\nconst getIdFromRelationship = (relationship: UserRelationship): string => getId(relationship.refUser.id, relationship.type);\n\nexport class RelationshipsManager {\n private relationships: ObservableIndexedObjectCollection<UserRelationship> = new ObservableIndexedObjectCollection<UserRelationship>(getIdFromRelationship);\n private promises = new PromiseRegistry();\n\n public constructor(private tracker: ChatStateTracker) {\n this.tracker.client.on('Relationships', ev => this.handleRelationships(ev));\n this.tracker.client.on('NewRelationship', ev => this.handleNewRelationship(ev));\n this.tracker.client.on('RelationshipDeleted', ev => this.handleRelationshipDeleted(ev));\n this.tracker.client.on('Session', () => this.handleSession());\n }\n\n public async get(): Promise<ObservableIndexedObjectCollection<UserRelationship>> {\n if (this.promises.notExist('all')) {\n this.promises.registerByFunction(async () => {\n const result = await this.tracker.client.send('GetRelationships', {});\n if (result.error) {\n throw result.error;\n }\n }, 'all');\n }\n\n await this.promises.get('all');\n return this.relationships;\n }\n\n public async exists(refUserId: string, type: UserRelationshipType): Promise<boolean> {\n await this.get();\n return this.relationships.has(getId(refUserId, type));\n }\n\n private handleRelationships(ev: Relationships): void {\n // Full list from the server: reconcile in place so a reconnect refetch\n // updates a bound (visible) list without an intermediate empty state.\n this.relationships.reconcile(...ev.relationships);\n }\n\n private handleNewRelationship(ev: NewRelationship): void {\n if (this.promises.has('all')) {\n this.relationships.set(ev.relationship);\n }\n }\n\n private handleRelationshipDeleted(ev: RelationshipDeleted): void {\n if (this.promises.has('all')) {\n this.relationships.delete(getIdFromRelationship(ev.relationship));\n }\n }\n\n private handleSession(): void {\n // Keep the (possibly bound) collection; just drop the fetch guard so the\n // next get() refetches and reconciles it in place.\n this.promises.forgetAll();\n }\n}","import {WebSocketChatClient} from \"../WebSocketChatClient\";\r\nimport {Session, User} from \"../types/src\";\r\nimport {RoomsManager} from \"./RoomsManager\";\r\nimport {SpacesManager} from \"./SpacesManager\";\r\nimport {PermissionsManager} from \"./PermissionsManager\";\r\nimport {DeferredTask} from \"./AsyncUtils\";\r\nimport {EmoticonsManager} from \"./EmoticonsManager\";\r\nimport {UsersManager} from \"./UsersManager\";\r\nimport {RelationshipsManager} from \"./RelationshipsManager\";\r\n\r\nexport class ChatStateTracker {\r\n public readonly client: WebSocketChatClient;\r\n\r\n /**\r\n * State of your permissions.\r\n */\r\n public readonly permissions: PermissionsManager;\r\n\r\n /**\r\n * State of the rooms you are in.\r\n */\r\n public readonly rooms: RoomsManager;\r\n\r\n /**\r\n * State of the spaces you are in.\r\n */\r\n public readonly spaces: SpacesManager;\r\n\r\n /**\r\n * State of the emoticons (global and space-related).\r\n */\r\n public readonly emoticons: EmoticonsManager;\r\n\r\n /**\r\n * Users related state.\r\n */\r\n public readonly users: UsersManager;\r\n\r\n /**\r\n * State of relationships with other users.\r\n */\r\n public readonly relationships: RelationshipsManager;\r\n\r\n private _me: User = null;\r\n private readonly deferredSession = new DeferredTask();\r\n\r\n public constructor(client: WebSocketChatClient) {\r\n this.client = client;\r\n this.client.on('Session', ev => this.handleSession(ev));\r\n\r\n this.permissions = new PermissionsManager(this);\r\n this.rooms = new RoomsManager(this);\r\n this.spaces = new SpacesManager(this);\r\n this.emoticons = new EmoticonsManager(this);\r\n this.users = new UsersManager(this);\r\n this.relationships = new RelationshipsManager(this);\r\n }\r\n\r\n public get me(): User | null {\r\n return this._me;\r\n }\r\n\r\n public async getMe(): Promise<User> {\r\n await this.deferredSession.promise;\r\n return this._me;\r\n }\r\n\r\n private handleSession(ev: Session): void {\r\n this._me = ev.user;\r\n this.deferredSession.resolve();\r\n }\r\n}","import {ObservableInterface} from \"./EventTarget\";\nimport {AbstractChatClient, CommandRequest, CommandResult, CommandResponse, CommandsMap, EventsMap} from \"./AbstractChatClient\";\nimport {ChatStateTracker} from \"./state-tracker/ChatStateTracker\";\nimport {Envelope} from \"./types/src\";\n\nexport interface WebSocketClientOptions {\n url: string;\n token: string;\n connectingTimeoutMs?: number;\n awaitQueueSendDelayMs?: number;\n stateTracking?: boolean;\n queryParams?: Record<string, string>;\n /**\n * Ping/pong configuration, enabled by default.\n */\n ping?: {\n enabled?: boolean;\n /**\n * Time without activity after which a ping will be sent. Default is 10 seconds.\n */\n noActivityTimeoutMs?: number;\n /**\n * Time to wait for a pong response before considering the connection dead. Default is 2 seconds.\n */\n pongBackTimeoutMs?: number;\n },\n}\n\nenum WebSocketChatClientEvent {\n connect = 'connect',\n disconnect = 'disconnect',\n message = 'message',\n error = 'error',\n}\n\ntype WebSocketEventMap = EventsMap & {\n [WebSocketChatClientEvent.connect]: void;\n [WebSocketChatClientEvent.disconnect]: boolean;\n [WebSocketChatClientEvent.message]: Envelope;\n [WebSocketChatClientEvent.error]: Error;\n};\n\nexport class WebSocketChatClient extends AbstractChatClient<Pick<WebSocketEventMap, keyof WebSocketEventMap>> implements ObservableInterface {\n public readonly Event = WebSocketChatClientEvent;\n public readonly state?: ChatStateTracker;\n\n protected ws: WebSocket|null = null;\n protected sendQueue: Envelope[] = [];\n protected connectingTimeoutId: any;\n protected authenticated: boolean;\n protected authenticatedResolvers: [() => void, (error: Error) => void] | null = null;\n /**\n * Pending promise returned by connect(). Kept until the client is either\n * authenticated or gives up, so that an automatic reconnect settles the\n * original caller instead of stranding it on a superseded promise.\n */\n protected connectPromise: Promise<void> | null = null;\n protected pingMonitorInterval?: NodeJS.Timeout;\n protected inFlightPingTimeout: NodeJS.Timeout;\n protected lastReceivedMessageAt?: number;\n\n public constructor(private readonly options: WebSocketClientOptions) {\n super();\n if (this.options.stateTracking ?? true) {\n this.state = new ChatStateTracker(this);\n }\n\n options.ping ??= {};\n options.ping.enabled ??= true;\n options.ping.noActivityTimeoutMs ??= 15000;\n options.ping.pongBackTimeoutMs ??= 5000;\n }\n\n public async connect(): Promise<void> {\n if (this.isOpenWsState() || this.isConnectingWsState()) {\n return this.connectPromise ?? undefined;\n }\n\n // Reuse the promise of an attempt that has not settled yet (an\n // automatic reconnect), so the caller that started connecting is\n // resolved by whichever attempt eventually authenticates.\n this.connectPromise ??= new Promise<void>((...args) => this.authenticatedResolvers = args);\n\n const params = new URLSearchParams(this.options.queryParams ?? {});\n params.set('token', this.options.token);\n\n this.ws = new WebSocket(`${this.options.url}?${params}`);\n this.ws.onclose = ev => this.onClose(ev);\n this.ws.onmessage = ev => this.onMessage(ev);\n this.connectingTimeoutId = setTimeout(\n () => this.triggerConnectionTimeout(),\n this.options.connectingTimeoutMs ?? 10000\n );\n this.authenticated = false;\n\n return this.connectPromise;\n }\n\n public disconnect(): void {\n this.failPendingCommands(new Error('Client disconnected before the command was answered'));\n this.ws?.close(1000); // Normal closure\n this.ws = null;\n }\n\n public async send<CommandType extends keyof CommandsMap>(commandType: CommandType, commandData: CommandRequest<CommandType>):\n Promise<CommandResult<CommandResponse<CommandType>>> {\n const envelope = this.createEnvelope<CommandRequest<CommandType>>(commandType, commandData);\n const promise = this.createPromiseFromCommandEnvelope<CommandType>(envelope);\n\n if (this.isConnectingWsState() || !this.authenticated && this.isOpenWsState()) {\n this.sendQueue.push(envelope);\n return promise;\n }\n\n this.sendEnvelope(envelope);\n return promise;\n }\n\n public get isReady(): boolean {\n return this.isOpenWsState() && this.authenticated;\n }\n\n private sendEnvelope(envelope: Envelope): void {\n if (this.isReady) {\n this.ws.send(JSON.stringify(envelope));\n return;\n }\n\n this.handleEnvelopeSendError(\n envelope,\n new Error(`Cannot send - client is not ready (state=${this.ws?.readyState ?? '[no connection]'}; authenticated=${this.authenticated})`)\n );\n }\n\n private onMessage(event: MessageEvent): void {\n this.lastReceivedMessageAt = Date.now();\n const envelope: Envelope = JSON.parse(event.data);\n this.handleIncomingEnvelope(envelope);\n this.emit(envelope.type, envelope.data);\n this.emit(this.Event.message, envelope);\n\n // Login successfully\n if (!this.authenticated) {\n const isAuthenticated = envelope.type !== 'Bye';\n this.authenticated = isAuthenticated;\n if (isAuthenticated) {\n this.startConnectionMonitor();\n this.settleConnect();\n this.emit(this.Event.connect);\n this.sendFromQueue();\n } else {\n this.settleConnect(envelope.data);\n }\n }\n }\n\n private onClose(event: CloseEvent): void {\n this.stopConnectionMonitor();\n clearTimeout(this.connectingTimeoutId);\n const reconnect = event.code !== 1000; // Connection was closed because of error\n\n // The server can no longer answer anything that was queued or in\n // flight, so settle those promises instead of leaving them pending.\n this.failPendingCommands(new Error('Connection closed before the command was answered'));\n\n if (reconnect) {\n // Keep a pending connect() promise unsettled - the retry below is\n // expected to authenticate and will resolve it.\n void this.connect();\n } else {\n this.settleConnect(new Error('Connection closed before authentication'));\n }\n\n this.emit(this.Event.disconnect, reconnect);\n }\n\n /**\n * Resolve (or reject, when an error is given) a pending connect() promise.\n * No-op when there is nothing pending.\n */\n private settleConnect(error?: any): void {\n const resolvers = this.authenticatedResolvers;\n\n this.authenticatedResolvers = null;\n this.connectPromise = null;\n\n if (! resolvers) {\n return;\n }\n\n error ? resolvers[1](error) : resolvers[0]();\n }\n\n /**\n * Reject every command that has not been answered yet - both the ones still\n * waiting in the send queue and the ones already sent to the server.\n */\n private failPendingCommands(error: Error): void {\n const queued = this.sendQueue;\n this.sendQueue = [];\n\n for (const envelope of queued) {\n this.handleEnvelopeSendError(envelope, error);\n }\n\n this.failAwaitingResponses(error);\n }\n\n private sendFromQueue(): void {\n // Send awaiting data to server\n let lastDelay = 0;\n for (const dataIndex in this.sendQueue) {\n const envelope = this.sendQueue[dataIndex];\n setTimeout(() => this.sendEnvelope(envelope), lastDelay);\n lastDelay += this.options.awaitQueueSendDelayMs ?? 500;\n }\n this.sendQueue = [];\n clearTimeout(this.connectingTimeoutId);\n }\n\n private triggerConnectionTimeout(): void {\n this.disconnect();\n this.emit(this.Event.error, new Error('Connection timeout'));\n }\n\n private isConnectingWsState(): boolean {\n return this.ws && this.ws.readyState === this.ws.CONNECTING;\n }\n\n private isOpenWsState(): boolean {\n return this.ws && this.ws.readyState === this.ws.OPEN;\n }\n\n private startConnectionMonitor(): void {\n if (!this.options.ping!.enabled) {\n return;\n }\n\n this.lastReceivedMessageAt = Date.now();\n\n this.pingMonitorInterval = setInterval(async () => {\n if (!this.isReady || this.inFlightPingTimeout) {\n return;\n }\n\n if ((Date.now() - this.lastReceivedMessageAt) < this.options.ping!.noActivityTimeoutMs) {\n return;\n }\n\n this.inFlightPingTimeout = setTimeout(() => {\n this.inFlightPingTimeout = undefined;\n this.ws.close(3000); // Service Restart (reconnect)\n }, this.options.ping.pongBackTimeoutMs);\n\n // A rejection here means the connection dropped while the ping was\n // in flight; onClose already handles that, so just stop waiting.\n this.send('Ping', {}).catch(() => undefined).then(() => {\n clearTimeout(this.inFlightPingTimeout);\n this.inFlightPingTimeout = undefined;\n });\n }, 1000);\n }\n\n private stopConnectionMonitor(): void {\n if (this.inFlightPingTimeout) {\n clearTimeout(this.inFlightPingTimeout);\n this.inFlightPingTimeout = undefined;\n }\n if (this.pingMonitorInterval) {\n clearInterval(this.pingMonitorInterval);\n this.pingMonitorInterval = undefined;\n }\n }\n}","import {AbstractChatClient, CommandRequest, CommandResult, CommandResponse, CommandsMap, EventsMap} from \"./AbstractChatClient\";\nimport {ObservableInterface} from \"./EventTarget\";\nimport {Envelope} from \"./types/src\";\n\nexport interface WebApiChatClientOptions {\n url: string;\n token: string;\n attemptsToSend?: number;\n attemptDelayMs?: number;\n queryParams?: Record<string, string>;\n}\n\nenum WebApiChatClientEvent {\n message = 'message',\n error = 'error',\n destroy = 'destroy',\n}\n\ntype WebApiEventMap = EventsMap & {\n [WebApiChatClientEvent.message]: Envelope;\n [WebApiChatClientEvent.error]: Error;\n [WebApiChatClientEvent.destroy]: boolean;\n};\n\ninterface SendStackItem {\n data: Envelope;\n attempts: number;\n lastTimeoutId: any;\n}\n\nexport class WebApiChatClient extends AbstractChatClient<Pick<WebApiEventMap, keyof WebApiEventMap>> implements ObservableInterface {\n public readonly Event = WebApiChatClientEvent;\n\n protected sendStack: SendStackItem[] = [];\n\n public constructor(private readonly options: WebApiChatClientOptions) {\n super();\n }\n\n public async send<CommandType extends keyof CommandsMap>(commandType: CommandType, commandData: CommandRequest<CommandType>):\n Promise<CommandResult<CommandResponse<CommandType>>> {\n const envelope = this.createEnvelope(commandType, commandData);\n const item: SendStackItem = {data: envelope, attempts: 0, lastTimeoutId: null};\n this.sendStack.push(item);\n this.makeApiCall(item);\n return this.createPromiseFromCommandEnvelope(envelope);\n }\n\n public destroy(): void {\n // Cancel all awaiting requests, rejecting their promises so no caller\n // is left awaiting forever\n const pending = this.sendStack;\n this.sendStack = [];\n pending.forEach(item => {\n if (item.lastTimeoutId) {\n clearTimeout(item.lastTimeoutId);\n }\n this.handleEnvelopeSendError(item.data, new Error('Client destroyed'));\n });\n this.emit(this.Event.destroy, false);\n }\n\n protected async onMessage(item: SendStackItem, response: Response): Promise<void> {\n let envelope: Envelope;\n try {\n envelope = await response.json();\n } catch (e) {\n // Non-envelope response (e.g. a proxy error page) - failed attempt\n this.onError(item, `envelope ${item.data.ref} (HTTP ${response.status}, unparsable body)`);\n return;\n }\n\n if (!this.removeFromStack(item)) {\n return; // Destroyed in the meantime - the promise is already rejected\n }\n\n this.handleIncomingEnvelope(envelope);\n this.emit(envelope.type, envelope.data);\n this.emit(this.Event.message, envelope);\n }\n\n protected onError(item: SendStackItem, body: string): void {\n if (!this.sendStack.includes(item)) {\n return; // Destroyed in the meantime\n }\n\n if (item.attempts >= (this.options.attemptsToSend ?? 10)) {\n this.removeFromStack(item);\n this.handleEnvelopeSendError(item.data, new Error(\n `Cannot send ${body}; aborting after reaching the maximum connection errors`\n ));\n return;\n }\n\n item.lastTimeoutId = setTimeout(\n () => this.makeApiCall(item),\n this.options.attemptDelayMs ?? 3000\n );\n }\n\n protected makeApiCall(item: SendStackItem): void {\n if (!this.sendStack.includes(item)) {\n return; // Destroyed before this (re)try fired\n }\n\n item.attempts++;\n item.lastTimeoutId = null;\n const bodyJson = JSON.stringify(item.data);\n const headers: any = {\n 'Content-Type': 'application/json',\n Accept: 'application/json'\n };\n\n headers.Authorization = `Bearer ${this.options.token}`;\n\n const query = new URLSearchParams(this.options.queryParams ?? {}).toString();\n const url = query ? `${this.options.url}?${query}` : this.options.url;\n\n fetch(url, {\n headers,\n body: bodyJson,\n method: 'POST',\n })\n .then(response => this.onMessage(item, response))\n .catch(() => this.onError(item, bodyJson));\n }\n\n private removeFromStack(item: SendStackItem): boolean {\n const index = this.sendStack.indexOf(item);\n if (index === -1) {\n return false;\n }\n this.sendStack.splice(index, 1);\n return true;\n }\n}","export interface RestClientOptions {\n url?: string;\n token: string;\n}\n\nexport interface RestClientResponse<T> {\n ok: boolean;\n status: number;\n data: T;\n}\n\nexport type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';\n\nexport abstract class AbstractRestClient {\n protected abstract defaultUrl: string;\n\n public constructor(\n private readonly options: RestClientOptions,\n ) {}\n\n protected async send<ResponseT = any>(\n method: HttpMethod,\n uri: string,\n data: any = undefined,\n additionalHeaders: Record<string, string> = {},\n ): Promise<RestClientResponse<ResponseT>> {\n let url = this.getUrl(uri);\n let body = undefined;\n\n if (data) {\n if (['GET', 'DELETE'].includes(method)) {\n url += '?' + new URLSearchParams(data).toString()\n } else {\n body = JSON.stringify(data);\n }\n }\n\n const headers = {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n ...additionalHeaders,\n ...this.getAuthHeaders(),\n };\n\n const result = await fetch(url, {method, body, headers});\n\n return this.convertFetchResponse(result);\n }\n\n protected getAuthHeaders(): any {\n const headers = {} as any;\n\n if (this.options.token) {\n headers.Authorization = `Bearer ${this.options.token}`;\n }\n\n return headers;\n }\n\n protected getUrl(uri: string): string {\n return this.removeEndingSlash(this.options.url ?? this.defaultUrl) + '/' + this.removeStartingSlash(uri);\n }\n\n protected async convertFetchResponse<T>(result: Response): Promise<RestClientResponse<T>> {\n return {\n ok: result.ok,\n status: result.status,\n data: result.headers.get('content-type')?.includes('json') ? await result.json() : await result.text(),\n };\n }\n\n private removeStartingSlash(text: string): string {\n return text.replace(/^\\/+/, '');\n }\n\n private removeEndingSlash(text: string): string {\n return text.replace(/\\/+$/, '');\n }\n}","import {AbstractRestClient, RestClientResponse} from \"./AbstractRestClient\";\r\n\r\nexport interface File {\r\n id: string;\r\n url: string;\r\n name: string;\r\n mime: string;\r\n size: number;\r\n width?: number;\r\n height?: number;\r\n}\r\n\r\nexport class FilesClient extends AbstractRestClient {\r\n protected defaultUrl: string = 'https://files.devana.pl';\r\n\r\n public async uploadFile(file: globalThis.File | Blob): Promise<RestClientResponse<File>> {\r\n const name = encodeURIComponent((file as globalThis.File).name ?? '');\r\n let headers = {\r\n ...this.getAuthHeaders(),\r\n Accept: 'application/json',\r\n 'Content-Disposition': `attachment; filename=\"${name}\"`,\r\n 'Content-Length': file.size\r\n };\r\n\r\n const response = await fetch(this.getUrl('files'), {\r\n method: 'POST',\r\n body: file,\r\n headers\r\n });\r\n\r\n return this.convertFetchResponse<File>(response);\r\n }\r\n\r\n public async getFileMeta(id: string): Promise<RestClientResponse<File>> {\r\n return this.send('GET', 'files/' + id);\r\n }\r\n\r\n public async getFileMetaBulk(ids: string[]): Promise<RestClientResponse<File[]>> {\r\n const searchParams = new URLSearchParams();\r\n ids.forEach(id => searchParams.append('id[]', id));\r\n return this.send('GET', 'files?' + searchParams);\r\n }\r\n}"],"names":["root","factory","exports","module","define","amd","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","EventTarget","_classCallCheck","_defineProperty","Map","eventName","handler","addHandler","events","onceEvents","_this$events$get","_this$events$get2","index","indexOf","undefined","splice","event","callHandlers","map","_map$get","handlers","push","set","_map$get2","forEach","callback","AbstractChatClient","_EventTarget","_this","_len","arguments","length","args","Array","_key","_callSuper","concat","_inherits","type","data","ref","sentCounter","toString","envelope","_this2","Promise","_len2","_key2","awaitingResponse","has","isError","error","size","pending","from","values","clear","_i","_pending","reject","_slicedToArray","IndexedCollection","items","apply","_toConsumableArray","_createClass","_items","item","id","ids","_i2","_ids","field","valueToFind","_step","limit","Infinity","result","_iterator","_createForOfIteratorHelper","entries","s","n","done","_step$value","err","e","f","copy","IndexedObjectCollection","_this$_items","_len3","_key3","getId","_this$_items2","deleteAll","_step2","_iterator2","ObservableIndexedCollection","_IndexedCollection2","_this3","eventTarget","_len4","_key4","_superPropGet","emit","setItems","_len5","_key5","deletedItems","keys","on","once","off","ObservableIndexedObjectCollection","_IndexedObjectCollect","_this5","_this4","_this6","_len6","_key6","_len7","_key7","_this7","_this$_items3","_this8","_len8","_key8","_step3","incomingIds","Set","_iterator3","existing","DeferredTask","promise","resolve","PromiseRegistry","promises","fn","register","_this$promises","t","r","iterator","i","c","Generator","u","create","_regeneratorDefine2","p","y","G","v","a","d","bind","l","TypeError","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","_regenerator","w","m","_invoke","configurable","writable","asyncGeneratorStep","then","_asyncToGenerator","_next","_throw","_defineProperties","_toPropertyKey","_getPrototypeOf","_typeof","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","constructor","Boolean","valueOf","_setPrototypeOf","toPrimitive","String","Number","_toPrimitive","WindowState","TopicHistoryWindow","_TraversableRemoteCol","roomId","topicId","tracker","bindEvents","internalState","traverseLock","client","ev","handleNewMessage","handleMessagesRedacted","_setTraverseLock","_callee6","lock","_context6","state","LIVE","LATEST","_x2","_resetToLatest2","_callee7","force","_args7","_context7","_fetchNext2","_callee8","_context8","_fetchPrevious2","_callee9","_context9","_jumpTo2","_callee0","_context0","_x3","refTopic","refMessage","_objectSpread","topicRef","_fetchItemsAfter","_callee1","_this$getAt","afterId","_context1","getAt","send","location","after","fetchLimit","Error","message","messages","_fetchItemsAround","_callee10","_context10","around","_x4","_fetchItemsBefore","_callee11","_this$getAt2","beforeId","_context11","before","_fetchLatestItems","_callee12","_context12","_getTopic","_callee13","_context13","rooms","getTopics","_getLatestMessageId","_callee14","_yield$this$getTopic","_t2","_t3","_t4","_t5","_context14","getTopic","lastMessage","_isLatestItemLoaded","_callee15","lastMessageId","_context15","getLatestMessageId","_handleNewMessage","_callee16","originalState","_context16","includes","addItems","emitChangeWithDiff","_x5","_handleMessagesRedacted","_callee17","refTopicIds","_context17","filter","msg","resetToLatest","_x6","_ObservableIndexedObj","TraversableRemoteCollection","current","ongoing","retainRatio","lastFetchCount","oldestId","OLDEST","_resetToLatest","_callee","_args","_context","fetchLatestItems","_fetchPrevious","_callee2","firstItem","_context2","hasOldest","PAST","fetchItemsBefore","refreshFetchedState","_fetchNext","_callee3","_context3","hasLatest","fetchItemsAfter","_jumpTo","_callee4","_context4","fetchItemsAround","_x","_refreshFetchedState","_callee5","_t","_context5","isLatestItemLoaded","newItems","to","trimItemsArrayToLimit","itemChanged","highWatermark","lowWatermark","Math","floor","slice","RoomMessagesHistory","room","handleRoomUpdated","handleNewTopic","handleTopicDeleted","updateTraverseLock","defaultTopic","createHistoryWindowForTopic","_getMessagesWindow","peek","topic","historyWindows","_resync","_Array$from","_Array$from$_i","window","setTraverseLock","_handleRoomUpdated","_Array$from2","_Array$from2$_i","historyWindow","deletedTopicIds","_this2$tracker$rooms","_deleteTopicsFromRoom","refHistoryWindow","_updateMessageReference","history","mode","MessagesManager","handleSession","handleRoomJoin","handleRoomDeleted","handleRoomLeft","_getRoomHistory","deferredSession","roomHistories","_resolveLastMessage2","_result$data","getRoomHistory","roomHistory","getMessagesWindow","createHistoryForNewRoom","stateRoomIds","resync","FollowedTopicsManager","handleFollowedTopicUpdated","handleTopicFollowed","handleTopicUnfollowed","_cacheForSpace","spaceId","roomIds","spaceRegistryKey","spaces","findBy","some","followedTopics","staleRooms","followedTopicsPromises","notExist","registerByFunction","reconcileRoomsFollowedTopics","_getForRoom","applyRoomFollowedTopics","invalidateUnreadSummaries","_ackRoom","collection","followedTopic","getForRoom","isUnread","_summarize","cacheKey","targetTopicId","mentionCount","_topic$mentionCount","summariesCache","cacheForSpace","_this$followedTopics$","topicIds","_step4","_iterator4","add","forgetAll","updateLocallyFollowedTopicOnNewMessage","_this$followedTopics$2","setFollowedTopicsArray","_this$followedTopics$3","clearRoomFollowedTopicsStructures","_handleNewTopic","_this$followedTopics$4","_step5","_iterator5","startsWith","_step6","_iterator6","roomIdsSet","_step7","_iterator7","parts","split","_updateLocallyFollowedTopicOnNewMessage","roomFollowedTopics","me","update","_member$spaceMember$r","_member$spaceMember","_member$roles","member","roleIds","mentionHandlers","mentionExists","getMe","author","user","missed","lastAckMessageId","spaceMember","roles","content","_this$followedTopics$5","reconcile","roomToTopics","_followedTopic$locati","_roomToTopics$_follow","_roomToTopics$roomId","invalidateUnreadSummariesForRooms","_followedTopic$locati2","_roomToTopics$_follow2","_this7$followedTopics","forget","RoomsManager","handleRoomJoined","handleTopicUpdated","handleRoomMemberJoined","handleRoomMemberLeft","handleRoomMembers","handleRoomMemberUpdated","handleSpaceMemberLeft","handleSpaceMemberUpdated","handleSpaceDeleted","handleUserUpdated","_getMembers","membersPromises","members","_getMe","userId","list","getMembers","find","_member$user$id","_member$user","_get","_getTopics","tryToFetchTopicIds","canFetch","idsToFetch","_this3$topics$get","topics","topicsPromises","_this3$topics$get2","_this$topics$get","_this$list","_this$members","_this$membersPromises","_this$topics","_roomIds","_this$topics$get$item","_this$topics$get2","_this$followedTopics","_deleteByTopicIds","deleteRoom","roomMembers","roomMember","_this4$members$get","_member$spaceMember$u","newMember","deleteRoomsBySpaceId","_room$defaultTopic","addJoinedRoomTopics","_this$topics$get3","addJoinedRooms","_this$topics$get4","newRoom","_this$list2","_rooms","recipients","customColor","customNick","extras","_this$members$get","_member$user$id2","_member$user2","removedRoomIds","_this$list3","newRooms","_room$recipients","_room$defaultTopic2","newTopic","messageCount","max","_resolveLastMessage","extractUserFromMember","_spaceMember","SpacesManager","handleNewRoom","handleSpaceUpdated","handleSpaceJoined","handleSpaceMemberJoined","handleSpaceMembers","handleSpaceRooms","handleRoomSummaryUpdated","handleNewRole","handleRoleDeleted","handleRoleUpdated","_getRoles","_getRooms","roomsPromises","role","_this$rooms$get","summary","roomIdToSpaceId","name","description","_handleRoomDeleted","_this$rooms$get2","space","spaceChanged","systemRoom","defaultRooms","_this$rooms$get$items","_this$rooms$get3","_this$roomIdToSpaceId","addJoinedSpaces","_this$roles","_this$rooms$get4","summaries","_handleRoomSummaryUpdated","summariesPromise","oldSummary","newSummary","_this$roles$get","oldRole","newRole","rolesToUpdate","priority","allRoles","updatedRole","increased","decreased","changedRoles","reorderRolesOnPriorityUpdate","stateSpaceIds","removedSpaceIds","_this$roles$get2","Layer","PermissionDefinition","Permissions","permissionName","layer","getByName","maxLayer","Root","Room","CreateSpaces","Global","ManageSpace","Space","ManageRoles","CreateTopics","ManageTopic","Topic","ManageMemberProfiles","ManageMemberRoles","CreateMessages","ManagePermissions","CreateRooms","ManageRoom","CreateEmoticons","ManageEmoticons","ManageBans","Kick","ChangeOwnNick","ChangeOwnColor","RedactMessages","getOvId","target","roleId","join","getOvIdByObject","overwrites","PermissionsManager","handlePermissionOverwrites","_getOverwrites","validateLocation","overwritesPromises","_check","permissionNames","ownedPermissions","missing","calculatePermissions","ok","hasAll","hasAny","_calculatePermissions","_location$spaceId","_spaceMember$roles","_roomMember$roles","_yield$this$tracker$s","_yield$this$tracker$r","_yield$this$fetchMemb","_yield$this$fetchMemb2","userRoles","filterLocation","_filterLocation","_t6","_t7","_t8","_t9","_t0","fetchMembersOrFail","getOverwrites","collectRoleOverwrites","all","resolveOverwritesHierarchy","_this$overwritesPromi","deleteOverwritesByIdPrefix","_this$overwritesPromi2","_this$overwritesPromi3","_this$overwritesPromi4","_this$tracker$me","_this$tracker$me2","prefix","_collectRoleOverwrites","roleOverwrites","resolveOverwritesFromRolesByOrder","_x7","_x8","_resolveOverwritesFromRolesByOrder","allows","denies","sortedOverwrites","permissionsLength","getRoles","sort","b","reduce","previousValue","currentValue","_currentValue$overwri","_currentValue$overwri2","_currentValue$overwri3","_currentValue$overwri4","allow","deny","overwriteEvent","_overwrites$deny$toSt","_overwrites$deny","_overwrites$allow$toS","_overwrites$allow","revDecDenies","reverse","revDecAllows","_revDecDenies$i","_revDecAllows$i","parseInt","_x9","_x0","permissionOverwritesValues","getRootAccessValue","getNames","_fetchMembersOrFail","results","spaceFail","roomFail","_x1","GLOBAL_KEY","EmoticonsManager","handleEmoticons","handleNewEmoticon","handleEmoticonDeleted","emoticonsPromises","_event$location$space","_this$list$get","emoticons","_ev$emoticon$spaceId","emoticon","_ev$spaceId","emoticonId","UsersManager","handleUsers","handleMembers","users","_getAvailable","session","_this$users","newUser","oldUser","online","onlineStatus","refUserId","getIdFromRelationship","relationship","refUser","RelationshipsManager","handleRelationships","handleNewRelationship","handleRelationshipDeleted","relationships","_exists","_this$relationships","ChatStateTracker","permissions","_me","WebSocketChatClientEvent","WebSocketChatClient","_AbstractChatClient","options","_this$options$stateTr","_options$ping","_options$ping2","_options$ping2$enable","_options$ping3","_options$ping3$noActi","_options$ping4","_options$ping4$pongBa","stateTracking","ping","enabled","noActivityTimeoutMs","pongBackTimeoutMs","_connect","_this$connectPromise2","_this$options$queryPa","_this$options$connect","_this$connectPromise","params","isOpenWsState","isConnectingWsState","connectPromise","authenticatedResolvers","URLSearchParams","queryParams","token","ws","WebSocket","url","onclose","onClose","onmessage","onMessage","connectingTimeoutId","setTimeout","triggerConnectionTimeout","connectingTimeoutMs","authenticated","_this$ws","failPendingCommands","close","_send","commandType","commandData","createEnvelope","createPromiseFromCommandEnvelope","sendQueue","sendEnvelope","_this$ws$readyState","_this$ws2","isReady","JSON","stringify","handleEnvelopeSendError","readyState","lastReceivedMessageAt","Date","now","parse","handleIncomingEnvelope","Event","isAuthenticated","startConnectionMonitor","settleConnect","connect","sendFromQueue","stopConnectionMonitor","clearTimeout","reconnect","code","disconnect","resolvers","queued","failAwaitingResponses","lastDelay","_loop","_this3$options$awaitQ","dataIndex","awaitQueueSendDelayMs","CONNECTING","OPEN","pingMonitorInterval","setInterval","inFlightPingTimeout","clearInterval","WebApiChatClientEvent","WebApiChatClient","attempts","lastTimeoutId","sendStack","makeApiCall","destroy","_onMessage","response","json","onError","status","removeFromStack","body","_this$options$attempt","_this$options$attempt2","attemptsToSend","attemptDelayMs","bodyJson","headers","Accept","Authorization","query","fetch","method","ownKeys","getOwnPropertySymbols","getOwnPropertyDescriptor","getOwnPropertyDescriptors","defineProperties","AbstractRestClient","uri","additionalHeaders","getUrl","getAuthHeaders","convertFetchResponse","_this$options$url","removeEndingSlash","defaultUrl","removeStartingSlash","_convertFetchResponse","_result$headers$get","text","replace","FilesClient","_AbstractRestClient","_uploadFile","file","_name","encodeURIComponent","_getFileMeta","_getFileMetaBulk","searchParams","append"],"ignoreList":[],"sourceRoot":""}
1
+ {"version":3,"file":"index.umd.js","mappings":"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","sources":["webpack://PservClient/webpack/universalModuleDefinition","webpack://PservClient/webpack/bootstrap","webpack://PservClient/webpack/runtime/define property getters","webpack://PservClient/webpack/runtime/hasOwnProperty shorthand","webpack://PservClient/webpack/runtime/make namespace object","webpack://PservClient/./src/EventTarget.ts","webpack://PservClient/./src/AbstractChatClient.ts","webpack://PservClient/./src/IndexedObjectCollection.ts","webpack://PservClient/./src/state-tracker/AsyncUtils.ts","webpack://PservClient/./src/state-tracker/TopicHistoryWindow.ts","webpack://PservClient/./src/state-tracker/RoomMessagesHistory.ts","webpack://PservClient/./src/state-tracker/MessagesManager.ts","webpack://PservClient/./src/state-tracker/FollowedTopicsManager.ts","webpack://PservClient/./src/state-tracker/RoomsManager.ts","webpack://PservClient/./src/state-tracker/functions.ts","webpack://PservClient/./src/state-tracker/SpacesManager.ts","webpack://PservClient/./src/Permissions.ts","webpack://PservClient/./src/state-tracker/PermissionsManager.ts","webpack://PservClient/./src/state-tracker/EmoticonsManager.ts","webpack://PservClient/./src/state-tracker/UsersManager.ts","webpack://PservClient/./src/state-tracker/RelationshipsManager.ts","webpack://PservClient/./src/state-tracker/ChatStateTracker.ts","webpack://PservClient/./src/WebSocketChatClient.ts","webpack://PservClient/./src/WebApiChatClient.ts","webpack://PservClient/./src/AbstractRestClient.ts","webpack://PservClient/./src/FilesClient.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"PservClient\"] = factory();\n\telse\n\t\troot[\"PservClient\"] = factory();\n})(this, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export type EventHandler<EventT> = (ev?: EventT) => void;\ntype HandlersMap = Map<string, EventHandler<any>[]>;\ntype EventMapLike = Record<string, any>;\ntype KnownEventNames<EventT> = EventT extends EventMapLike ? keyof EventT & string : string;\ntype EventPayload<EventT, EventName extends string = never> = EventT extends EventMapLike\n ? [EventName] extends [never]\n ? EventT[keyof EventT]\n : EventName extends keyof EventT\n ? EventT[EventName]\n : EventT[keyof EventT]\n : EventT;\n\nexport type ChangeEventMap<Payload = void> = { change: Payload };\n\nexport interface ObservableInterface<EventT = any> {\n on<EventName extends KnownEventNames<EventT>>(eventName: EventName, handler: EventHandler<EventPayload<EventT, EventName>>): this;\n on(eventName: string, handler: EventHandler<EventPayload<EventT>>): this;\n once<EventName extends KnownEventNames<EventT>>(eventName: EventName, handler: EventHandler<EventPayload<EventT, EventName>>): this;\n once(eventName: string, handler: EventHandler<EventPayload<EventT>>): this;\n off<EventName extends KnownEventNames<EventT>>(eventName: EventName, handler: EventHandler<EventPayload<EventT, EventName>>): this;\n off(eventName: string, handler: EventHandler<EventPayload<EventT>>): this;\n}\n\nexport class EventTarget<EventMapT extends Record<string, any> = Record<string, any>> implements ObservableInterface<EventMapT> {\n protected events: HandlersMap = new Map<string, EventHandler<any>[]>();\n protected onceEvents: HandlersMap = new Map<string, EventHandler<any>[]>();\n\n public on<K extends keyof EventMapT & string>(eventName: K, handler: EventHandler<EventMapT[K]>): this;\n public on(eventName: string, handler: EventHandler<unknown>): this;\n public on(eventName: string, handler: EventHandler<any>): this {\n this.addHandler(this.events, eventName, handler);\n return this;\n }\n\n public once<K extends keyof EventMapT & string>(eventName: K, handler: EventHandler<EventMapT[K]>): this;\n public once(eventName: string, handler: EventHandler<unknown>): this;\n public once(eventName: string, handler: EventHandler<any>): this {\n this.addHandler(this.onceEvents, eventName, handler);\n return this;\n }\n\n public off<K extends keyof EventMapT & string>(eventName: K, handler: EventHandler<EventMapT[K]>): this;\n public off(eventName: string, handler: EventHandler<unknown>): this;\n public off(eventName: string, handler: EventHandler<any>): this {\n const index = this.events.get(eventName)?.indexOf(handler);\n if (index === undefined || index < 0) {\n return this;\n }\n this.events.get(eventName)?.splice(index, 1);\n return this;\n }\n\n public emit<K extends keyof EventMapT & string>(eventName: K, event: EventMapT[K]): this;\n public emit(eventName: string, event?: unknown): this;\n public emit(eventName: string, event?: any): this {\n this.callHandlers(this.events, eventName, event);\n this.callHandlers(this.onceEvents, eventName, event);\n this.onceEvents.delete(eventName);\n return this;\n }\n\n private addHandler(map: HandlersMap, eventName: string, handler: EventHandler<any>): void {\n const handlers = map.get(eventName) ?? [];\n handlers.push(handler);\n map.set(eventName, handlers);\n }\n\n private callHandlers(map: HandlersMap, eventName: string, event: unknown): void {\n map.get(eventName)?.forEach(callback => callback(event));\n }\n}","import {\n Bye,\n GetSession,\n JoinSpace,\n Session,\n SpaceJoined,\n Error as ErrorType,\n SpaceLeft,\n SpaceMemberJoined,\n SpaceMemberLeft,\n SpaceMemberUpdated,\n SpaceDeleted,\n SpaceMembers,\n SpaceRooms,\n NewRole,\n RoomDeleted,\n RoomJoined,\n RoomLeft,\n RoomMemberLeft,\n RoomMemberJoined,\n RoomMembers,\n NewRoom,\n NewTopic,\n TopicDeleted,\n NewMessage,\n GetPermissionOverwrites,\n GetComputedPermissions,\n LeaveSpace,\n CreateSpace,\n DeleteSpace,\n GetSpaceMembers,\n GetSpaceRooms,\n CreateRole,\n DeleteRole,\n AssignRole,\n DeassignRole,\n SetPermissionOverwrites,\n JoinRoom,\n LeaveRoom,\n CreateRoom,\n DeleteRoom,\n GetRoomMembers,\n CreateTopic,\n DeleteTopic,\n CreateMessage,\n Envelope,\n PermissionOverwrites,\n PermissionOverwritesUpdated,\n RoomMemberUpdated,\n UpdateRole,\n RoleUpdated,\n Ack,\n UserUpdated,\n UpdateRoom,\n RoomUpdated,\n UpdateSpace,\n SpaceUpdated,\n PermissionOverwriteTargets,\n GetPermissionOverwriteTargets,\n Owners,\n Ok,\n GetOwners,\n CreateOwner,\n RoleDeleted,\n FollowedTopicUpdated,\n TopicFollowed,\n FollowedTopics,\n FollowTopic,\n UpdateFollowedTopic,\n GetFollowedTopics,\n Messages,\n GetMessages,\n Topics,\n GetTopics,\n TopicUpdated,\n UpdateTopic,\n GetDiscoverableSpaces,\n DiscoverableSpaces,\n CreateEmoticon,\n DeleteEmoticon,\n GetEmoticons,\n Emoticons,\n EmoticonDeleted,\n NewEmoticon,\n Bans,\n GetBans,\n Ban,\n Unban,\n Kick,\n ClientData,\n GetClientData,\n SetClientData,\n GetRoomSummary,\n GetSpaceSummary,\n RoomSummaryEvent,\n SpaceSummaryEvent,\n UpdateSpaceMember,\n Relationships,\n RelationshipDeleted,\n NewRelationship,\n DeleteRelationship,\n CreateRelationship,\n RoomSummaryUpdated,\n Pong,\n Ping,\n RedactMessages,\n MessagesRedacted,\n ReportAbuse,\n UpdateRoomMember,\n GetRelationships,\n GetUserInfo,\n UserInfo,\n SetSessionData,\n SessionData,\n GetSessionData,\n UnfollowTopic,\n TopicUnfollowed,\n} from \"./types/src\";\nimport {EventTarget} from \"./EventTarget\";\n\ntype ArrayOfPromiseResolvers = [(value: any) => void, (reason?: any) => void];\ntype ExtraEventMap = Record<string, any>;\n\ntype CommandDefinition<RequestT, ResponseT> = {\n request: RequestT;\n response: ResponseT;\n};\n\nexport abstract class AbstractChatClient<AdditionalEvents extends ExtraEventMap = {}> extends EventTarget<EventsMap & AdditionalEvents> {\n protected awaitingResponse: Map<string, ArrayOfPromiseResolvers> = new Map<string, ArrayOfPromiseResolvers>();\n protected sentCounter: number = 0;\n\n public abstract send<CommandType extends keyof CommandsMap>\n (commandType: CommandType, commandData: CommandRequest<CommandType>): Promise<CommandResult<CommandResponse<CommandType>>>;\n\n protected createEnvelope<CommandT>(type: string, data: CommandT): Envelope<CommandT> {\n return {\n type, data, ref: (++this.sentCounter).toString()\n };\n }\n\n protected createPromiseFromCommandEnvelope\n <CommandT extends keyof CommandsMap>(envelope: Envelope<CommandRequest<CommandT>>):\n Promise<CommandResult<CommandResponse<CommandT>>> {\n return new Promise((...args) =>\n this.awaitingResponse.set(envelope.ref as string, args));\n }\n\n protected handleIncomingEnvelope(envelope: Envelope): void {\n if (!this.awaitingResponse.has(envelope.ref)) {\n return;\n }\n const isError = envelope.type === 'Error';\n this.awaitingResponse.get(envelope.ref)[0]({\n data: isError ? null : envelope.data,\n error: isError ? envelope.data : null,\n } as CommandResult<any>);\n this.awaitingResponse.delete(envelope.ref);\n }\n\n protected handleEnvelopeSendError(envelope: Envelope, error: any): void {\n if (!this.awaitingResponse.has(envelope.ref)) {\n return;\n }\n this.awaitingResponse.get(envelope.ref)[1](error);\n this.awaitingResponse.delete(envelope.ref);\n }\n\n /**\n * Reject every command that is still waiting for a response.\n *\n * Call this whenever the transport can no longer deliver an answer (the\n * connection dropped). The server will never reply to those commands, so\n * leaving them pending would hang every caller awaiting them forever -\n * including cached lookups in the state tracker, which would then keep a\n * view stuck on a loader even after a successful reconnect.\n */\n protected failAwaitingResponses(error: any): void {\n if (! this.awaitingResponse.size) {\n return;\n }\n\n const pending = Array.from(this.awaitingResponse.values());\n this.awaitingResponse.clear();\n\n for (const [, reject] of pending) {\n reject(error);\n }\n }\n}\n\nexport type CommandResult<ResultT> = {data?: ResultT, error?: ErrorType};\nexport type CommandRequest<CommandType extends keyof CommandsMap> = CommandsMap[CommandType]['request'];\nexport type CommandResponse<CommandType extends keyof CommandsMap> = CommandsMap[CommandType]['response'];\n\n /**\n * Map of incoming events.\n */\n export type EventsMap = {\n // General Events\n Bye: Bye,\n Ok: Ok,\n Error: ErrorType,\n Session: Session,\n Permissions: Permissions,\n PermissionOverwrites: PermissionOverwrites,\n PermissionOverwritesUpdated: PermissionOverwritesUpdated,\n PermissionOverwriteTargets: PermissionOverwriteTargets,\n Owners: Owners,\n NewEmoticon: NewEmoticon,\n EmoticonDeleted: EmoticonDeleted,\n Emoticons: Emoticons,\n Bans: Bans,\n ClientData: ClientData,\n SessionData: SessionData,\n NewRelationship: NewRelationship,\n RelationshipDeleted: RelationshipDeleted,\n Relationships: Relationships,\n Pong: Pong,\n UserInfo: UserInfo,\n // Space events\n DiscoverableSpaces: DiscoverableSpaces,\n SpaceJoined: SpaceJoined,\n SpaceLeft: SpaceLeft,\n SpaceMemberJoined: SpaceMemberJoined,\n SpaceMemberLeft: SpaceMemberLeft,\n SpaceMemberUpdated: SpaceMemberUpdated,\n SpaceUpdated: SpaceUpdated,\n SpaceDeleted: SpaceDeleted,\n SpaceMembers: SpaceMembers,\n SpaceRooms: SpaceRooms,\n NewRole: NewRole,\n RoleDeleted: RoleDeleted,\n RoleUpdated: RoleUpdated,\n SpaceSummaryEvent: SpaceSummaryEvent,\n // Room events\n RoomJoined: RoomJoined,\n RoomLeft: RoomLeft,\n RoomMemberJoined: RoomMemberJoined,\n RoomMemberLeft: RoomMemberLeft,\n RoomMemberUpdated: RoomMemberUpdated,\n RoomMembers: RoomMembers,\n NewRoom: NewRoom,\n RoomDeleted: RoomDeleted,\n RoomUpdated: RoomUpdated,\n RoomSummaryEvent: RoomSummaryEvent,\n RoomSummaryUpdated: RoomSummaryUpdated,\n // Topic events\n NewTopic: NewTopic,\n TopicDeleted: TopicDeleted,\n NewMessage: NewMessage,\n UserUpdated: UserUpdated,\n TopicFollowed: TopicFollowed,\n TopicUnfollowed: TopicUnfollowed,\n FollowedTopics: FollowedTopics,\n FollowedTopicUpdated: FollowedTopicUpdated,\n Messages: Messages,\n Topics: Topics,\n TopicUpdated: TopicUpdated,\n MessagesRedacted: MessagesRedacted,\n};\n\n/**\n * Map of commands and their corresponding events.\n */\nexport type CommandsMap = {\n // General commands\n GetSession: CommandDefinition<GetSession, EventsMap['Session']>,\n SetPermissionOverwrites: CommandDefinition<SetPermissionOverwrites, EventsMap['PermissionOverwritesUpdated']>,\n GetPermissionOverwrites: CommandDefinition<GetPermissionOverwrites, EventsMap['PermissionOverwrites']>,\n GetComputedPermissions: CommandDefinition<GetComputedPermissions, EventsMap['Permissions']>,\n GetPermissionOverwriteTargets: CommandDefinition<GetPermissionOverwriteTargets, EventsMap['PermissionOverwriteTargets']>,\n GetOwners: CommandDefinition<GetOwners, EventsMap['Owners']>,\n CreateOwner: CommandDefinition<CreateOwner, EventsMap['Owners']>,\n DeleteOwner: CommandDefinition<CreateOwner, EventsMap['Owners']>,\n CreateEmoticon: CommandDefinition<CreateEmoticon, EventsMap['NewEmoticon']>,\n DeleteEmoticon: CommandDefinition<DeleteEmoticon, EventsMap['EmoticonDeleted']>,\n GetEmoticons: CommandDefinition<GetEmoticons, EventsMap['Emoticons']>,\n GetBans: CommandDefinition<GetBans, EventsMap['Bans']>,\n Ban: CommandDefinition<Ban, EventsMap['Ok']>,\n Unban: CommandDefinition<Unban, EventsMap['Ok']>,\n Kick: CommandDefinition<Kick, EventsMap['Ok']>,\n GetClientData: CommandDefinition<GetClientData, EventsMap['ClientData']>,\n SetClientData: CommandDefinition<SetClientData, EventsMap['Ok']>,\n DeleteRelationship: CommandDefinition<DeleteRelationship, EventsMap['RelationshipDeleted']>,\n CreateRelationship: CommandDefinition<CreateRelationship, EventsMap['NewRelationship']>,\n GetRelationships: CommandDefinition<GetRelationships, EventsMap['Relationships']>,\n Ping: CommandDefinition<Ping, EventsMap['Pong']>,\n ReportAbuse: CommandDefinition<ReportAbuse, EventsMap['Ok']>,\n GetUserInfo: CommandDefinition<GetUserInfo, EventsMap['UserInfo']>,\n GetSessionData: CommandDefinition<GetSessionData, EventsMap['SessionData']>,\n SetSessionData: CommandDefinition<SetSessionData, EventsMap['Ok']>,\n // Space commands\n GetDiscoverableSpaces: CommandDefinition<GetDiscoverableSpaces, EventsMap['DiscoverableSpaces']>,\n JoinSpace: CommandDefinition<JoinSpace, EventsMap['SpaceJoined']>,\n LeaveSpace: CommandDefinition<LeaveSpace, EventsMap['SpaceLeft']>,\n CreateSpace: CommandDefinition<CreateSpace, EventsMap['SpaceJoined']>,\n UpdateSpace: CommandDefinition<UpdateSpace, EventsMap['SpaceUpdated']>,\n DeleteSpace: CommandDefinition<DeleteSpace, EventsMap['SpaceDeleted']>,\n GetSpaceMembers: CommandDefinition<GetSpaceMembers, EventsMap['SpaceMembers']>,\n GetSpaceRooms: CommandDefinition<GetSpaceRooms, EventsMap['SpaceRooms']>,\n CreateRole: CommandDefinition<CreateRole, EventsMap['NewRole']>,\n DeleteRole: CommandDefinition<DeleteRole, EventsMap['RoleDeleted']>,\n UpdateRole: CommandDefinition<UpdateRole, EventsMap['RoleUpdated']>,\n AssignRole: CommandDefinition<AssignRole, EventsMap['SpaceMemberUpdated'] | EventsMap['RoomMemberUpdated']>,\n DeassignRole: CommandDefinition<DeassignRole, EventsMap['SpaceMemberUpdated'] | EventsMap['RoomMemberUpdated']>,\n GetSpaceSummary: CommandDefinition<GetSpaceSummary, EventsMap['SpaceSummaryEvent']>,\n UpdateSpaceMember: CommandDefinition<UpdateSpaceMember, EventsMap['SpaceMemberUpdated']>,\n // Room commands\n JoinRoom: CommandDefinition<JoinRoom, EventsMap['RoomJoined']>,\n LeaveRoom: CommandDefinition<LeaveRoom, EventsMap['RoomLeft']>,\n CreateRoom: CommandDefinition<CreateRoom, EventsMap['RoomJoined']>,\n DeleteRoom: CommandDefinition<DeleteRoom, EventsMap['RoomDeleted']>,\n UpdateRoom: CommandDefinition<UpdateRoom, EventsMap['RoomUpdated']>,\n GetRoomMembers: CommandDefinition<GetRoomMembers, EventsMap['RoomMembers']>,\n GetRoomSummary: CommandDefinition<GetRoomSummary, EventsMap['RoomSummaryEvent']>,\n UpdateRoomMember: CommandDefinition<UpdateRoomMember, EventsMap['RoomMemberUpdated']>,\n // Topic commands\n CreateTopic: CommandDefinition<CreateTopic, EventsMap['NewTopic']>,\n DeleteTopic: CommandDefinition<DeleteTopic, EventsMap['TopicDeleted']>,\n CreateMessage: CommandDefinition<CreateMessage, EventsMap['NewMessage']>,\n Ack: CommandDefinition<Ack, EventsMap['FollowedTopicUpdated'] | EventsMap['Ok']>,\n FollowTopic: CommandDefinition<FollowTopic, EventsMap['TopicFollowed']>,\n UnfollowTopic: CommandDefinition<UnfollowTopic, EventsMap['TopicUnfollowed']>,\n UpdateFollowedTopic: CommandDefinition<UpdateFollowedTopic, EventsMap['FollowedTopicUpdated']>,\n GetFollowedTopics: CommandDefinition<GetFollowedTopics, EventsMap['FollowedTopics']>,\n GetMessages: CommandDefinition<GetMessages, EventsMap['Messages']>,\n GetTopics: CommandDefinition<GetTopics, EventsMap['Topics']>,\n UpdateTopic: CommandDefinition<UpdateTopic, EventsMap['TopicUpdated']>,\n RedactMessages: CommandDefinition<RedactMessages, EventsMap['MessagesRedacted']>,\n }\n","import {EventHandler, EventTarget, ObservableInterface} from \"./EventTarget\";\n\nexport class IndexedCollection<KeyT, ValueT> {\n protected _items: Map<KeyT, ValueT> = new Map();\n\n public constructor(items: [key: KeyT, value: ValueT][] = []) {\n this.set(...items);\n }\n\n public get items(): Map<KeyT, ValueT> {\n return this._items;\n }\n\n public get length(): number {\n return this._items.size;\n }\n\n public set(...items: [KeyT, ValueT][]): void {\n for (const item of items) {\n this._items.set(item[0], item[1]);\n }\n }\n\n public get(id: KeyT): ValueT | undefined {\n return this.items.get(id);\n }\n\n public has(id: KeyT): boolean {\n return this.items.has(id);\n }\n\n public delete(...ids: KeyT[]): void {\n for (const id of ids) {\n this.items.delete(id);\n }\n }\n\n public deleteAll(): void {\n this.items.clear();\n }\n\n public findBy(field: keyof ValueT, valueToFind: any, limit: number = Infinity): IndexedCollection<KeyT, ValueT> {\n const result = new IndexedCollection<KeyT, ValueT>();\n for (const [key, value] of this.items.entries()) {\n if (result.length >= limit) {\n break;\n }\n if (value[field] === valueToFind) {\n result.set([key, value]);\n }\n }\n return result;\n }\n\n public createMirror(): IndexedCollection<KeyT, ValueT> {\n const copy = new IndexedCollection<KeyT, ValueT>();\n copy._items = this._items;\n return copy;\n }\n}\n\nexport class IndexedObjectCollection<T> {\n protected _items: IndexedCollection<string, T>;\n\n public constructor(\n public readonly id: keyof T | ((item: T) => any),\n items: T[] = [],\n ) {\n this._items = new IndexedCollection<string, T>();\n this.set(...items);\n }\n\n public get items(): T[] {\n return Array.from(this._items.items.values());\n }\n\n public get length(): number {\n return this._items.length;\n }\n\n public set(...items: T[]): void {\n this._items.set(...(items.map(item => [this.getId(item), item] as [string, T])));\n }\n\n public get(id: any): T | undefined {\n return this._items.get(id);\n }\n\n public getAt(index: number): T | undefined {\n return this.items[index];\n }\n\n public has(id: any): boolean {\n return this._items.has(id);\n }\n\n public delete(...ids: any[]): void {\n this._items.delete(...ids);\n }\n\n public deleteAll(): void {\n this._items.deleteAll();\n }\n\n public findBy(field: keyof T, valueToFind: any, limit: number = null): IndexedObjectCollection<T> {\n const result = new IndexedObjectCollection<T>(this.id);\n for (const value of this.items) {\n if (limit && result.length === limit) {\n break;\n }\n if (value[field] === valueToFind) {\n result.set(value);\n }\n }\n return result;\n }\n\n public createMirror(): IndexedObjectCollection<T> {\n const copy = new IndexedObjectCollection<T>(this.id);\n copy._items = this._items;\n return copy;\n }\n\n protected getId(item: T): any {\n return typeof this.id === 'function' ? this.id(item) : item[this.id];\n }\n}\n\nexport type CollectionEventMap<IdType = string> = {\n change: { setItems?: IdType[]; deletedItems?: IdType[] };\n};\n\nexport class ObservableIndexedCollection<\n KeyT,\n ValueT,\n EventMapT extends CollectionEventMap<KeyT> = CollectionEventMap<KeyT>\n> extends IndexedCollection<KeyT, ValueT> implements ObservableInterface<EventMapT> {\n\n protected eventTarget: EventTarget<EventMapT>;\n\n public constructor(items: [key: KeyT, value: ValueT][] = []) {\n super();\n this.eventTarget = new EventTarget<EventMapT>();\n this.set(...items);\n }\n\n public set(...items: [KeyT, ValueT][]) {\n if (items.length) {\n super.set(...items);\n this.eventTarget.emit('change', { setItems: items.map(item => item[0]) });\n }\n }\n\n public delete(...ids: KeyT[]) {\n if (ids.length) {\n super.delete(...ids);\n this.eventTarget.emit('change', { deletedItems: ids });\n }\n }\n\n public deleteAll() {\n if (this.length) {\n const ids = Array.from(this._items.keys());\n super.deleteAll();\n this.eventTarget.emit('change', { deletedItems: Array.from(ids) });\n }\n }\n\n public createMirror(): ObservableIndexedCollection<KeyT, ValueT, EventMapT> {\n const copy = new ObservableIndexedCollection<KeyT, ValueT, EventMapT>();\n copy.eventTarget = this.eventTarget;\n copy._items = this._items;\n return copy;\n }\n\n public on<K extends keyof EventMapT & string>(eventName: K, handler: EventHandler<EventMapT[K]>): this {\n this.eventTarget.on(eventName, handler);\n return this;\n }\n\n public once<K extends keyof EventMapT & string>(eventName: K, handler: EventHandler<EventMapT[K]>): this {\n this.eventTarget.once(eventName, handler);\n return this;\n }\n\n public off<K extends keyof EventMapT & string>(eventName: K, handler: EventHandler<EventMapT[K]>): this {\n this.eventTarget.off(eventName, handler);\n return this;\n }\n}\n\nexport class ObservableIndexedObjectCollection<\n ItemT,\n EventMapT extends CollectionEventMap = CollectionEventMap\n> extends IndexedObjectCollection<ItemT> implements ObservableInterface<EventMapT> {\n protected eventTarget: EventTarget<EventMapT>;\n\n public constructor(\n id: keyof ItemT | ((item: ItemT) => string),\n items: ItemT[] = [],\n ) {\n super(id);\n this.eventTarget = new EventTarget<EventMapT>();\n this.set(...items);\n }\n\n public set(...items: ItemT[]) {\n if (items.length) {\n super.set(...items);\n this.eventTarget.emit('change', { setItems: items.map(item => this.getId(item)) });\n }\n }\n\n public delete(...ids: string[]) {\n if (ids.length) {\n super.delete(...ids);\n this.eventTarget.emit('change', { deletedItems: ids });\n }\n }\n\n public deleteAll() {\n if (this.length) {\n const ids = this.items.map(item => this.getId(item));\n super.deleteAll();\n this.eventTarget.emit('change', { deletedItems: ids });\n }\n }\n\n /**\n * Bring the collection to exactly match the provided items: upsert every\n * provided item and remove any existing item whose id is not present in the\n * provided set. Emits at most a single `change` event describing both the\n * set and the deleted ids, so bound consumers can update in place without\n * ever observing an intermediate empty state (unlike deleteAll + set).\n */\n public reconcile(...items: ItemT[]) {\n const incomingIds = new Set(items.map(item => this.getId(item)));\n const deletedItems: string[] = [];\n\n for (const existing of this.items) {\n const id = this.getId(existing);\n if (! incomingIds.has(id)) {\n deletedItems.push(id);\n }\n }\n\n if (! items.length && ! deletedItems.length) {\n return;\n }\n\n this._items.delete(...deletedItems);\n super.set(...items);\n\n this.eventTarget.emit('change', {\n setItems: items.map(item => this.getId(item)),\n deletedItems,\n });\n }\n\n public createMirror(): ObservableIndexedObjectCollection<ItemT, EventMapT> {\n const copy = new ObservableIndexedObjectCollection<ItemT, EventMapT>(this.id);\n copy.eventTarget = this.eventTarget;\n copy._items = this._items;\n return copy;\n }\n\n public on<EventName extends keyof EventMapT & string>(\n eventName: EventName,\n handler: EventHandler<EventMapT[EventName]>\n ): this {\n this.eventTarget.on(eventName, handler);\n return this;\n }\n\n public once<EventName extends keyof EventMapT & string>(\n eventName: EventName,\n handler: EventHandler<EventMapT[EventName]>\n ): this {\n this.eventTarget.once(eventName, handler);\n return this;\n }\n\n public off<EventName extends keyof EventMapT & string>(\n eventName: EventName,\n handler: EventHandler<EventMapT[EventName]>\n ): this {\n this.eventTarget.off(eventName, handler);\n return this;\n }\n}","import {IndexedCollection} from \"../IndexedObjectCollection\";\n\nexport class DeferredTask {\n public readonly promise: Promise<void>;\n public resolve: () => void;\n\n public constructor() {\n this.promise = new Promise<void>((resolve) => this.resolve = resolve);\n }\n}\n\nexport class PromiseRegistry {\n private promises = new IndexedCollection<string, Promise<any>>();\n\n public register<T = any>(promise: Promise<T>, key: string): void {\n this.promises.set([key, promise]);\n\n // Never cache a failed lookup: drop it so the next access retries\n // instead of replaying the same rejection forever (a request issued\n // while the client was offline would otherwise poison the key). The\n // handler also keeps the cached promise from surfacing as an unhandled\n // rejection - callers still receive the rejection from their own await.\n promise.catch(() => {\n if (this.promises.get(key) === promise) {\n this.promises.delete(key);\n }\n });\n }\n\n public registerByFunction(fn: () => Promise<any>, key: string): void {\n this.register(fn(), key);\n }\n\n public get<T = any>(key: string): Promise<T> | undefined {\n return this.promises.get(key);\n }\n\n public has(key: string): boolean {\n return this.promises.has(key);\n }\n\n public notExist(key: string): boolean {\n return ! this.has(key);\n }\n\n public forget(...keys: string[]): void {\n this.promises.delete(...keys);\n }\n\n public forgetAll(): void {\n this.promises.deleteAll();\n }\n}","import {Message, MessagesRedacted, NewMessage, Topic} from \"../types/src\";\nimport {ChatStateTracker} from \"./ChatStateTracker\";\nimport {CollectionEventMap, ObservableIndexedObjectCollection} from \"../IndexedObjectCollection\";\n\nexport enum WindowState {\n /**\n * The latest messages (those received live) are available in the history window, history has not been fetched.\n */\n LIVE,\n\n /**\n * The latest messages has been fetched and are available in the history window.\n */\n LATEST,\n\n /**\n * The historical messages have been fetched and are available in the history window.\n * Latest messages are not available and will not be available.\n */\n PAST,\n\n /**\n * The oldest messages have been fetched and are available in the history window.\n * Next attempts to fetch previous messages will result with no-op.\n */\n OLDEST,\n}\n\nexport abstract class TraversableRemoteCollection<\n ItemT,\n EventMapT extends CollectionEventMap = CollectionEventMap\n> extends ObservableIndexedObjectCollection<ItemT, EventMapT> {\n /**\n * Current mode od collection window. To change mode, call one of available fetch methods.\n */\n public get state(): WindowState {\n return this.internalState.current;\n }\n\n protected internalState: {\n current: WindowState,\n ongoing?: WindowState,\n limit: number | null, // Acts as High Watermark\n retainRatio: number, // Percentage of limit to keep when trimming\n fetchLimit: number,\n lastFetchCount: number,\n oldestId: string | null,\n } = {\n current: WindowState.LIVE,\n ongoing: undefined,\n limit: 1000,\n retainRatio: 1,\n fetchLimit: 50,\n lastFetchCount: 0,\n oldestId: null,\n };\n\n /**\n * Number of items to fetch per request.\n */\n public get fetchLimit(): number {\n return this.internalState.fetchLimit;\n }\n\n /**\n * Sets number of items to fetch per request.\n */\n public set fetchLimit(value: number) {\n this.internalState.fetchLimit = value;\n }\n\n /**\n * Maximum number of items stored in window (High Watermark).\n * Null for unlimited.\n */\n public get limit(): number | null {\n return this.internalState.limit;\n }\n\n /**\n * Maximum number of items stored in window (High Watermark).\n * Null for unlimited.\n */\n public set limit(value: number | null) {\n this.internalState.limit = value;\n }\n\n /**\n * Percentage of limit to keep when trimming.\n */\n public get retainRatio(): number {\n return this.internalState.retainRatio;\n }\n\n /**\n * Percentage of limit to keep when trimming.\n */\n public set retainRatio(value: number) {\n this.internalState.retainRatio = value;\n }\n\n public get hasLatest(): boolean {\n return [WindowState.LATEST, WindowState.LIVE].includes(this.state);\n }\n\n public get hasOldest(): boolean {\n return this.state === WindowState.OLDEST\n || this.state === WindowState.LATEST && this.length < this.fetchLimit\n || this.internalState.oldestId !== null && this.has(this.internalState.oldestId);\n }\n\n public abstract createMirror(): TraversableRemoteCollection<ItemT, EventMapT>;\n\n public async resetToLatest(force: boolean = false): Promise<void> {\n if (this.internalState.ongoing || (! force && this.internalState.current === WindowState.LATEST)) {\n return;\n }\n\n let result;\n const originalState = this.state;\n this.internalState.ongoing = WindowState.LATEST;\n\n try {\n result = await this.fetchLatestItems();\n this.internalState.lastFetchCount = result.length;\n } finally {\n this.internalState.ongoing = undefined;\n }\n\n this._items.deleteAll(); // Directly call deleteAll to prevent event emit.\n this.addItems(result, 'tail');\n this.internalState.current = WindowState.LATEST;\n this.emitChangeWithDiff(true, originalState);\n }\n\n public async fetchPrevious(): Promise<void> {\n if (this.internalState.ongoing || this.hasOldest) {\n return;\n }\n\n let result;\n const originalState = this.state;\n this.internalState.ongoing = WindowState.PAST;\n\n try {\n result = await this.fetchItemsBefore();\n this.internalState.lastFetchCount = result ? result.length : 0;\n } finally {\n this.internalState.ongoing = undefined;\n }\n\n if (! result) {\n return this.resetToLatest();\n }\n\n if (! result.length) {\n const firstItem = this.getAt(0);\n this.internalState.oldestId = firstItem ? this.getId(firstItem) : null;\n\n await this.refreshFetchedState();\n\n // LATEST state has priority over OLDEST\n if (this.internalState.current === WindowState.PAST) {\n this.internalState.current = WindowState.OLDEST;\n }\n\n this.emitChangeWithDiff(false, originalState);\n return;\n }\n\n this.addItems(result, 'head');\n await this.refreshFetchedState();\n this.emitChangeWithDiff(true, originalState);\n }\n\n public async fetchNext(): Promise<void> {\n if (this.internalState.ongoing || this.hasLatest) {\n return;\n }\n\n let result;\n const originalState = this.state;\n this.internalState.ongoing = WindowState.PAST;\n\n try {\n result = await this.fetchItemsAfter();\n this.internalState.lastFetchCount = result ? result.length : 0;\n } finally {\n this.internalState.ongoing = undefined;\n }\n\n if (! result) {\n await this.resetToLatest();\n return;\n }\n\n if (result.length) {\n this.addItems(result, 'tail');\n await this.refreshFetchedState();\n this.emitChangeWithDiff(true, originalState);\n return;\n }\n }\n\n public async jumpTo(id: string): Promise<void> {\n if (this.internalState.ongoing || (this.state !== WindowState.LIVE && this._items.has(id))) {\n return;\n }\n\n let result: ItemT[] | null;\n const originalState = this.state;\n this.internalState.ongoing = WindowState.PAST;\n\n try {\n result = await this.fetchItemsAround(id);\n this.internalState.lastFetchCount = result ? result.length : 0;\n\n if (result) {\n this._items.deleteAll(); // Directly call deleteAll to prevent event emit.\n this.addItems(result, 'tail');\n await this.refreshFetchedState();\n }\n } finally {\n this.internalState.ongoing = undefined;\n }\n\n this.emitChangeWithDiff(!!result, originalState);\n }\n\n protected abstract fetchLatestItems(): Promise<ItemT[]>;\n\n protected abstract fetchItemsBefore(): Promise<ItemT[] | null>;\n\n protected abstract fetchItemsAfter(): Promise<ItemT[] | null>;\n\n protected abstract fetchItemsAround(id: string): Promise<ItemT[] | null>;\n\n protected abstract isLatestItemLoaded(): Promise<boolean>;\n\n protected async refreshFetchedState(): Promise<void> {\n this.internalState.current = (await this.isLatestItemLoaded()) ? WindowState.LATEST : WindowState.PAST;\n }\n\n protected addItems(newItems: ItemT[], to: 'head' | 'tail'): void {\n let result;\n\n if (to === 'head') {\n result = this.trimItemsArrayToLimit([...newItems, ...this.items], 'tail');\n }\n\n if (to === 'tail') {\n result = this.trimItemsArrayToLimit([...this.items, ...newItems], 'head');\n }\n\n // Directly calls to prevent event emit.\n this._items.deleteAll();\n this._items.set(...(result.map(item => [this.getId(item), item] as [string, ItemT])));\n }\n\n protected emitChangeWithDiff(itemChanged: boolean, originalState: WindowState): void {\n if (itemChanged || originalState !== this.state) {\n this.eventTarget.emit('change', { setItems: Array.from(this._items.items.keys()) })\n }\n }\n\n /**\n * Return array with messages trimmed using High/Low Watermark strategy.\n */\n private trimItemsArrayToLimit(items: ItemT[], from: 'head' | 'tail'): ItemT[] {\n const highWatermark = this.limit;\n\n if (highWatermark === null || items.length <= highWatermark) {\n return items;\n }\n\n const lowWatermark = Math.floor(highWatermark * this.internalState.retainRatio);\n\n if (from === 'head') {\n return items.slice(-lowWatermark);\n }\n\n if (from === 'tail') {\n return items.slice(0, lowWatermark);\n }\n\n return items;\n }\n}\n\nexport type TopicHistoryWindowEventMap = CollectionEventMap & {\n reftopicsdeleted: string[];\n};\n\nexport class TopicHistoryWindow extends TraversableRemoteCollection<\n Message,\n TopicHistoryWindowEventMap\n> {\n /**\n * Reexported available window modes enum.\n */\n public readonly WindowState: typeof WindowState = WindowState;\n\n declare protected internalState: typeof TraversableRemoteCollection<Message>['prototype']['internalState'] & {\n traverseLock: boolean,\n };\n\n public constructor(\n private roomId: string,\n private topicId: string,\n private tracker: ChatStateTracker,\n bindEvents: boolean = true,\n ) {\n super('id');\n\n this.internalState.traverseLock = false;\n\n if (bindEvents) {\n this.tracker.client.on('NewMessage', ev => this.handleNewMessage(ev));\n this.tracker.client.on('MessagesRedacted', ev => this.handleMessagesRedacted(ev));\n }\n }\n\n public createMirror(): TopicHistoryWindow {\n const copy = new TopicHistoryWindow(this.roomId, this.topicId, this.tracker, false);\n copy.eventTarget = this.eventTarget;\n copy._items = this._items;\n copy.internalState = this.internalState;\n return copy;\n }\n\n public get isTraverseLocked(): boolean {\n return this.internalState.traverseLock;\n }\n\n public async setTraverseLock(lock: boolean): Promise<void> {\n this.internalState.traverseLock = lock;\n\n if (lock && (this.state !== WindowState.LIVE && this.state !== WindowState.LATEST)) {\n await super.resetToLatest();\n }\n }\n\n public async resetToLatest(force: boolean = false): Promise<void> {\n if (this.internalState.traverseLock) {\n return;\n }\n return super.resetToLatest(force);\n }\n\n public async fetchNext(): Promise<void> {\n if (this.internalState.traverseLock) {\n return;\n }\n return super.fetchNext();\n }\n\n public async fetchPrevious(): Promise<void> {\n if (this.internalState.traverseLock) {\n return;\n }\n return super.fetchPrevious();\n }\n\n public async jumpTo(id: string): Promise<void> {\n if (this.internalState.traverseLock) {\n return;\n }\n return super.jumpTo(id);\n }\n\n /**\n * For internal use.\n * @internal\n */\n public _updateMessageReference(refTopic: Topic): void {\n const refMessage = this.get(refTopic.refMessage.id);\n\n if (refMessage) {\n // Update referenced topic ID in message\n this.set({...refMessage, topicRef: refTopic.id});\n }\n }\n\n protected async fetchItemsAfter(): Promise<Message[] | null> {\n const afterId = this.getAt(this.length - 1)?.id;\n\n if (! afterId) {\n // If there is no message to refer, fetch latest\n return null;\n }\n\n const result = await this.tracker.client.send('GetMessages', {\n location: {roomId: this.roomId, topicId: this.topicId},\n after: afterId,\n limit: this.internalState.fetchLimit,\n });\n\n if (result.error) {\n throw new Error(`Cannot fetch messages: ${result.error.message}`);\n }\n\n return result.data.messages;\n }\n\n protected async fetchItemsAround(id: string): Promise<Message[] | null> {\n const result = await this.tracker.client.send('GetMessages', {\n location: {roomId: this.roomId, topicId: this.topicId},\n around: id,\n limit: this.internalState.fetchLimit,\n });\n\n if (result.error) {\n throw new Error(`Cannot fetch messages: ${result.error.message}`);\n }\n\n return result.data.messages;\n }\n\n protected async fetchItemsBefore(): Promise<Message[] | null> {\n const beforeId = this.getAt(0)?.id;\n\n if (! beforeId) {\n // If there is no message to refer, fetch latest\n return null;\n }\n\n const result = await this.tracker.client.send('GetMessages', {\n location: {roomId: this.roomId, topicId: this.topicId},\n before: beforeId,\n limit: this.internalState.fetchLimit,\n });\n\n if (result.error) {\n throw new Error(`Cannot fetch messages: ${result.error.message}`);\n }\n\n return result.data.messages;\n }\n\n protected async fetchLatestItems(): Promise<Message[]> {\n const result = await this.tracker.client.send('GetMessages', {\n location: {roomId: this.roomId, topicId: this.topicId},\n limit: this.internalState.fetchLimit,\n });\n\n if (result.error) {\n throw new Error(`Cannot fetch messages: ${result.error.message}`);\n }\n\n return result.data.messages;\n }\n\n private async getTopic(): Promise<Topic | undefined> {\n return (await this.tracker.rooms.getTopics(this.roomId, [this.topicId])).get(this.topicId);\n }\n\n private async getLatestMessageId(): Promise<string | undefined> {\n return (await this.getTopic())?.lastMessage?.id;\n }\n\n protected async isLatestItemLoaded(): Promise<boolean> {\n const lastMessageId = await this.getLatestMessageId();\n return lastMessageId ? this.has(lastMessageId) : true;\n }\n\n private async handleNewMessage(ev: NewMessage): Promise<void> {\n if (\n [WindowState.LATEST, WindowState.LIVE].includes(this.state)\n && ev.message.location.roomId === this.roomId\n && ev.message.location.topicId === this.topicId\n ) {\n const originalState = this.state;\n this.addItems([ev.message], 'tail');\n this.emitChangeWithDiff(true, originalState);\n }\n }\n\n private async handleMessagesRedacted(ev: MessagesRedacted): Promise<void> {\n if (ev.location.topicId !== this.topicId || ev.location.roomId !== this.roomId) {\n return;\n }\n\n const refTopicIds = this.items\n .filter(msg => msg.topicRef && ev.ids.includes(msg.id))\n .map(msg => msg.topicRef as string);\n\n this.delete(...ev.ids);\n\n if (this.length === 0) {\n await this.resetToLatest();\n }\n\n if (refTopicIds.length > 0) {\n this.eventTarget.emit('reftopicsdeleted', refTopicIds);\n }\n }\n}\n","import {ChatStateTracker} from \"./ChatStateTracker\";\nimport {NewTopic, Room, RoomUpdated, Topic, TopicDeleted} from \"../types/src\";\nimport {IndexedCollection,} from \"../IndexedObjectCollection\";\nimport {TopicHistoryWindow, WindowState} from \"./TopicHistoryWindow\";\n\nexport class RoomMessagesHistory {\n private historyWindows = new IndexedCollection<string, TopicHistoryWindow>();\n private traverseLock: boolean = false;\n\n public constructor(\n private room: Room,\n private tracker: ChatStateTracker,\n ) {\n this.tracker.client.on('RoomUpdated', ev => this.handleRoomUpdated(ev));\n this.tracker.client.on('NewTopic', ev => this.handleNewTopic(ev));\n this.tracker.client.on('TopicDeleted', ev => this.handleTopicDeleted(ev));\n\n this.updateTraverseLock(this.room);\n\n if (this.room.defaultTopic) {\n this.createHistoryWindowForTopic(this.room.defaultTopic);\n }\n }\n\n /**\n * Returns a history window object for the given topic ID, allowing you to view message history.\n * @param topicId\n * @param peek If true, do not create a cache for this topic and do not allow it to collect new messages.\n */\n public async getMessagesWindow(topicId: string, peek: boolean = false): Promise<TopicHistoryWindow | undefined> {\n if (!this.historyWindows.has(topicId) && !peek) {\n const topic = (await this.tracker.rooms.getTopics(this.room.id, [topicId])).get(topicId);\n\n if (topic) {\n this.createHistoryWindowForTopic(topic);\n }\n }\n\n return this.historyWindows.get(topicId);\n }\n\n /**\n * Re-synchronise this room's history after a reconnect without discarding\n * the existing window objects (which would blank the UI and, for ephemeral\n * rooms, permanently drop live-only history).\n *\n * The window bindings are preserved; only windows that the application had\n * actually pulled to the latest page (state === LATEST) are refreshed, with\n * a single resetToLatest instead of a chain of catch-up requests. Windows\n * that were never pulled (LIVE) or belong to an ephemeral room are left\n * untouched so their in-memory context survives the reconnect.\n */\n public async resync(room: Room): Promise<void> {\n this.room = room;\n this.updateTraverseLock(room);\n\n if (this.room.defaultTopic) {\n this.createHistoryWindowForTopic(this.room.defaultTopic);\n }\n\n for (const [, window] of Array.from(this.historyWindows.items)) {\n try {\n await window.setTraverseLock(this.traverseLock);\n\n // Ephemeral history lives only in memory (the server does not\n // persist it), so never refetch/replace it on reconnect.\n if (this.traverseLock) {\n continue;\n }\n\n if (window.state === WindowState.LATEST) {\n await window.resetToLatest(true);\n }\n } catch (_e) {\n // Best effort: the connection can drop again mid-resync. The\n // window keeps its current content and stays usable, so the\n // application can refresh it on demand.\n }\n }\n }\n\n private async handleRoomUpdated(ev: RoomUpdated): Promise<void> {\n if (this.room.id === ev.room.id) {\n this.room = ev.room;\n\n this.updateTraverseLock(ev.room);\n\n if (ev.room.defaultTopic) {\n this.createHistoryWindowForTopic(ev.room.defaultTopic);\n }\n\n for (const [, window] of Array.from(this.historyWindows.items)) {\n await window.setTraverseLock(this.traverseLock);\n }\n }\n }\n\n private handleNewTopic(ev: NewTopic): void {\n if (this.room.id === ev.roomId) {\n this.createHistoryWindowForTopic(ev.topic);\n }\n }\n\n private handleTopicDeleted(ev: TopicDeleted): void {\n if (this.room.id === ev.location.roomId) {\n this.historyWindows.delete(ev.location.topicId);\n }\n }\n\n private createHistoryWindowForTopic(topic: Topic): void {\n if (this.historyWindows.has(topic.id)) {\n return;\n }\n\n const historyWindow = new TopicHistoryWindow(this.room.id, topic.id, this.tracker);\n\n void historyWindow.setTraverseLock(this.traverseLock);\n\n this.historyWindows.set([topic.id, historyWindow]);\n\n // Current behavior of deletion a message with referenced topic is to delete the whole side topic\n // So we need to listen for topic deletions here\n historyWindow.on('reftopicsdeleted', (deletedTopicIds: string[]) => {\n for (const topicId of deletedTopicIds) {\n this.historyWindows.delete(topicId);\n }\n this.tracker.rooms._deleteTopicsFromRoom(this.room.id, ...deletedTopicIds);\n });\n\n // If new topic refers to some message from this room, update other structures\n if (topic.refMessage) {\n const refHistoryWindow = this.historyWindows.get(topic.refMessage.location.topicId);\n refHistoryWindow?._updateMessageReference(topic);\n }\n }\n\n private updateTraverseLock(room: Room): void {\n this.traverseLock = room.history.mode === 'Ephemeral';\n }\n}","import {ChatStateTracker} from \"./ChatStateTracker\";\nimport {\n RoomDeleted,\n RoomLeft,\n RoomJoined,\n Session,\n Room,\n Message, ChatLocation,\n} from \"../types/src\";\nimport {IndexedCollection} from \"../IndexedObjectCollection\";\nimport {DeferredTask} from \"./AsyncUtils\";\nimport {RoomMessagesHistory} from \"./RoomMessagesHistory\";\n\nexport class MessagesManager {\n private readonly roomHistories = new IndexedCollection<string, RoomMessagesHistory>();\n private readonly deferredSession = new DeferredTask();\n\n public constructor(private tracker: ChatStateTracker) {\n this.tracker.client.on('Session', ev => this.handleSession(ev));\n this.tracker.client.on('RoomJoined', ev => this.handleRoomJoin(ev));\n this.tracker.client.on('RoomDeleted', ev => this.handleRoomDeleted(ev));\n this.tracker.client.on('RoomLeft', ev => this.handleRoomLeft(ev));\n }\n\n /**\n * Get history manager for given room ID.\n */\n public async getRoomHistory(roomId: string): Promise<RoomMessagesHistory | undefined> {\n await this.deferredSession.promise;\n return this.roomHistories.get(roomId);\n }\n\n /**\n * For internal use.\n * @internal\n */\n public async _resolveLastMessage(location: ChatLocation): Promise<Message|null> {\n // Try to get last message from history window (if cached)\n let message: Message = await this.getRoomHistory(location.roomId)\n .then(roomHistory => roomHistory?.getMessagesWindow(location.topicId, true))\n .then(\n historyWindow =>\n historyWindow?.hasLatest && historyWindow.getAt(historyWindow.length - 1)\n );\n\n if (!message) {\n const result = await this.tracker.client.send('GetMessages', {\n location,\n limit: 1,\n });\n message = result.data?.messages[0];\n }\n\n return message || null;\n }\n\n private createHistoryForNewRoom(room: Room): void {\n this.roomHistories.set([room.id, new RoomMessagesHistory(room, this.tracker)]);\n }\n\n private handleRoomDeleted(ev: RoomDeleted): void {\n this.roomHistories.delete(ev.id);\n }\n\n private handleRoomJoin(ev: RoomJoined): void {\n this.createHistoryForNewRoom(ev.room);\n }\n\n private handleRoomLeft(ev: RoomLeft): void {\n this.roomHistories.delete(ev.id);\n }\n\n private handleSession(ev: Session): void {\n const stateRoomIds = new Set(ev.state.rooms.map(room => room.id));\n\n // Drop histories only for rooms that no longer exist server-side.\n for (const roomId of Array.from(this.roomHistories.items.keys())) {\n if (! stateRoomIds.has(roomId)) {\n this.roomHistories.delete(roomId);\n }\n }\n\n // Keep existing histories (preserving loaded messages and, crucially,\n // live-only ephemeral history), create histories for newly joined\n // rooms, and resync survivors against the fresh room snapshot.\n for (const room of ev.state.rooms) {\n const history = this.roomHistories.get(room.id);\n if (history) {\n void history.resync(room);\n } else {\n this.createHistoryForNewRoom(room);\n }\n }\n\n this.deferredSession.resolve();\n }\n}","import {EventTarget} from \"../EventTarget\";\nimport {ChatStateTracker} from \"./ChatStateTracker\";\nimport {DeferredTask, PromiseRegistry} from \"./AsyncUtils\";\nimport {IndexedCollection, ObservableIndexedObjectCollection} from \"../IndexedObjectCollection\";\nimport {\n ChatLocation,\n FollowedTopic,\n FollowedTopicUpdated,\n NewMessage, NewTopic,\n RoomDeleted,\n RoomJoined, RoomLeft,\n Session, TopicDeleted,\n TopicFollowed, TopicUnfollowed\n} from \"../types/src\";\n\ninterface EventMap {\n change: {};\n}\n\nexport interface UnreadSummary {\n mentionCount: number;\n unreadTopicCount: number;\n isUnread: boolean;\n}\n\nexport class FollowedTopicsManager extends EventTarget<EventMap> {\n private readonly followedTopics = new IndexedCollection<string, ObservableIndexedObjectCollection<FollowedTopic>>();\n private readonly followedTopicsPromises = new PromiseRegistry();\n private readonly deferredSession = new DeferredTask();\n private readonly summariesCache = new Map<string, UnreadSummary>();\n\n /**\n * Rooms whose cached followed-topics are stale after a reconnect and must\n * be refetched (and reconciled in place) the next time they are accessed.\n */\n private readonly staleRooms = new Set<string>();\n\n public constructor(private tracker: ChatStateTracker) {\n super();\n\n this.tracker.client.on('Session', ev => this.handleSession(ev));\n this.tracker.client.on('RoomJoined', ev => this.handleRoomJoin(ev));\n this.tracker.client.on('NewTopic', ev => this.handleNewTopic(ev));\n this.tracker.client.on('FollowedTopicUpdated', ev => this.handleFollowedTopicUpdated(ev));\n this.tracker.client.on('TopicFollowed', ev => this.handleTopicFollowed(ev));\n this.tracker.client.on('TopicUnfollowed', ev => this.handleTopicUnfollowed(ev));\n this.tracker.client.on('NewMessage', ev => this.handleNewMessage(ev));\n this.tracker.client.on('RoomDeleted', ev => this.handleRoomDeleted(ev));\n this.tracker.client.on('RoomLeft', ev => this.handleRoomLeft(ev));\n this.tracker.client.on('TopicDeleted', ev => this.handleTopicDeleted(ev));\n }\n\n /**\n * Cache followed topics for all joined rooms in a space and fetch them in bulk if necessary.\n * Then you can get them using getRoomFollowedTopics().\n * @see getForRoom\n */\n public async cacheForSpace(spaceId: string | null): Promise<void> {\n if (spaceId && ! (await this.tracker.spaces.get()).has(spaceId)) {\n throw new Error(`You are not in space ${spaceId}`);\n }\n\n const rooms = await this.tracker.rooms.get();\n const roomIds = spaceId\n ? rooms.findBy('spaceId', spaceId).items.map(r => r.id)\n : rooms.items.filter(r => !r.spaceId).map(r => r.id);\n\n if (!roomIds.length) {\n return;\n }\n\n const needsFetch = roomIds.some(roomId => ! this.followedTopics.has(roomId) || this.staleRooms.has(roomId));\n if (! needsFetch) {\n return;\n }\n\n const spaceRegistryKey = `space_fetch_${spaceId || 'spaceless'}`;\n\n if (this.followedTopicsPromises.notExist(spaceRegistryKey)) {\n this.followedTopicsPromises.registerByFunction(async () => {\n const result = await this.tracker.client.send('GetFollowedTopics', {location: {spaceId}});\n if (result.error) throw result.error;\n\n this.reconcileRoomsFollowedTopics(roomIds, result.data.followedTopics);\n }, spaceRegistryKey);\n }\n\n await this.followedTopicsPromises.get(spaceRegistryKey);\n }\n\n /**\n * Get followed topics for the given room.\n * @return Undefined if you are not in the room, collection otherwise.\n */\n public async getForRoom(roomId: string): Promise<ObservableIndexedObjectCollection<FollowedTopic> | undefined> {\n if (! (await this.tracker.rooms.get()).has(roomId)) {\n return undefined;\n }\n\n if (! this.followedTopics.has(roomId) || this.staleRooms.has(roomId)) {\n if (this.followedTopicsPromises.notExist(roomId)) {\n this.followedTopicsPromises.registerByFunction(async () => {\n const result = await this.tracker.client.send('GetFollowedTopics', {location: {roomId}});\n\n if (result.error) {\n throw result.error;\n }\n\n this.applyRoomFollowedTopics(roomId, result.data.followedTopics);\n this.invalidateUnreadSummaries(roomId);\n }, roomId);\n }\n\n await this.followedTopicsPromises.get(roomId);\n }\n\n return this.followedTopics.get(roomId);\n }\n\n /**\n * Batch acknowledge all messages for given room.\n */\n public async ackRoom(roomId: string): Promise<void> {\n const collection = await this.getForRoom(roomId);\n\n if (! collection) {\n return;\n }\n\n for (const followedTopic of collection.items) {\n if (followedTopic.isUnread) {\n await this.tracker.client.send('Ack', {location: followedTopic.location});\n }\n }\n }\n\n /**\n * Summarize all unread messages or mentions from any topic in given location.\n * This method uses an internal cache, so it's ok to call it multiple times.\n * Capture the 'change' event to determine when it's worth calling this method again due to data changes.\n * @return Undefined if you are not in room.\n */\n public async summarize(location: ChatLocation): Promise<UnreadSummary> {\n const cacheKey = location.topicId\n ? `topic:${location.roomId}:${location.topicId}`\n : location.roomId\n ? `room:${location.roomId}`\n : location.spaceId\n ? `space:${location.spaceId}`\n : 'spaceless';\n\n if (this.summariesCache.has(cacheKey)) {\n return this.summariesCache.get(cacheKey)!;\n }\n\n let roomIds: string[] = [];\n let targetTopicId: string | undefined;\n const rooms = await this.tracker.rooms.get();\n\n if (location.topicId) {\n if (!location.roomId) {\n throw new Error(\"roomId is required when querying by topicId\");\n }\n roomIds = [location.roomId];\n targetTopicId = location.topicId;\n } else if (location.roomId) {\n roomIds = [location.roomId];\n } else if (location.spaceId) {\n await this.cacheForSpace(location.spaceId);\n roomIds = rooms.findBy('spaceId', location.spaceId).items.map(r => r.id);\n } else {\n await this.cacheForSpace(null);\n roomIds = rooms.items.filter(r => !r.spaceId).map(r => r.id);\n }\n\n let mentionCount = 0;\n let unreadTopicCount = 0;\n\n for (const roomId of roomIds) {\n const collection = await this.getForRoom(roomId);\n\n if (!collection) {\n continue;\n }\n\n for (const topic of collection.items) {\n if (targetTopicId && topic.location.topicId !== targetTopicId) {\n continue;\n }\n\n if (topic.isUnread) {\n unreadTopicCount++;\n }\n\n mentionCount += (topic.mentionCount ?? 0);\n }\n }\n\n const result = { mentionCount, unreadTopicCount, isUnread: unreadTopicCount > 0 };\n this.summariesCache.set(cacheKey, result);\n\n return result;\n }\n\n /**\n * For internal use. If you want to delete the message, execute a proper command on client object.\n * @internal\n */\n public _deleteByTopicIds(roomId: string, ...topicIds: string[]): void {\n this.followedTopics.get(roomId)?.delete(...topicIds);\n topicIds.forEach(topicId => this.invalidateUnreadSummaries(roomId, topicId));\n }\n\n private handleSession(ev: Session): void {\n // Keep cached followed-topic collections (they drive unread indicators\n // that would otherwise blank on reconnect), but mark them stale and drop\n // the fetch guards so the next access/caching refetches and reconciles\n // them in place.\n for (const roomId of this.followedTopics.items.keys()) {\n this.staleRooms.add(roomId);\n }\n this.followedTopicsPromises.forgetAll();\n this.invalidateUnreadSummaries();\n this.deferredSession.resolve();\n }\n\n private handleNewMessage(ev: NewMessage): void {\n void this.updateLocallyFollowedTopicOnNewMessage(ev);\n }\n\n private handleFollowedTopicUpdated(ev: FollowedTopicUpdated): void {\n this.followedTopics.get(ev.followedTopic.location.roomId)?.set(ev.followedTopic);\n this.invalidateUnreadSummaries(ev.followedTopic.location.roomId, ev.followedTopic.location.topicId);\n }\n\n private handleTopicFollowed(ev: TopicFollowed): void {\n this.setFollowedTopicsArray([ev.followedTopic.location.roomId], [ev.followedTopic]);\n this.invalidateUnreadSummaries(ev.followedTopic.location.roomId, ev.followedTopic.location.topicId);\n }\n\n private handleTopicUnfollowed(ev: TopicUnfollowed): void {\n this.followedTopics.get(ev.location.roomId)?.delete(ev.location.topicId);\n this.invalidateUnreadSummaries(ev.location.roomId, ev.location.topicId);\n }\n\n private handleRoomDeleted(ev: RoomDeleted): void {\n this.clearRoomFollowedTopicsStructures(ev.id);\n }\n\n private handleRoomJoin(ev: RoomJoined): void {\n this.clearRoomFollowedTopicsStructures(ev.room.id);\n }\n\n private handleRoomLeft(ev: RoomLeft): void {\n this.clearRoomFollowedTopicsStructures(ev.id);\n }\n\n private async handleNewTopic(ev: NewTopic): Promise<void> {\n if (this.followedTopics.has(ev.roomId)) {\n // Check if the new topic is followed by user\n // only if client asked for followed topics list before for this room\n const result = await this.tracker.client.send(\n 'GetFollowedTopics',\n {location: {roomId: ev.roomId, topicId: ev.topic.id}},\n );\n const followedTopic = result.data.followedTopics[0];\n if (followedTopic) {\n this.followedTopics.get(ev.roomId).set(followedTopic);\n this.invalidateUnreadSummaries(ev.roomId, ev.topic.id);\n }\n }\n }\n\n private handleTopicDeleted(ev: TopicDeleted): void {\n this.followedTopics.get(ev.location.roomId)?.delete(ev.location.topicId);\n this.invalidateUnreadSummaries(ev.location.roomId, ev.location.topicId);\n }\n\n /**\n * Invalidate the summaries cache intentionally, only for the locations affected by the change.\n */\n private invalidateUnreadSummaries(roomId?: string, topicId?: string): void {\n if (roomId) {\n this.summariesCache.delete(`room:${roomId}`);\n\n if (topicId) {\n this.summariesCache.delete(`topic:${roomId}:${topicId}`);\n } else {\n for (const key of this.summariesCache.keys()) {\n if (key.startsWith(`topic:${roomId}:`)) {\n this.summariesCache.delete(key);\n }\n }\n }\n\n for (const key of this.summariesCache.keys()) {\n if (key.startsWith('space:') || key === 'spaceless') {\n this.summariesCache.delete(key);\n }\n }\n } else {\n this.summariesCache.clear();\n }\n\n this.emit('change');\n }\n\n private invalidateUnreadSummariesForRooms(roomIds: string[]): void {\n const roomIdsSet = new Set(roomIds);\n roomIds.forEach(roomId => {\n this.summariesCache.delete(`room:${roomId}`);\n });\n\n for (const key of this.summariesCache.keys()) {\n if (key.startsWith('space:') || key === 'spaceless') {\n this.summariesCache.delete(key);\n continue;\n }\n if (key.startsWith('topic:')) {\n const parts = key.split(':');\n if (parts.length >= 2 && roomIdsSet.has(parts[1])) {\n this.summariesCache.delete(key);\n }\n }\n }\n\n this.emit('change');\n }\n\n private async updateLocallyFollowedTopicOnNewMessage(ev: NewMessage): Promise<void> {\n const roomFollowedTopics = this.followedTopics.get(ev.message.location.roomId);\n const followedTopic = roomFollowedTopics?.get(ev.message.location.topicId);\n\n if (!roomFollowedTopics || !followedTopic || ev.message.type === 'Ephemeral') {\n // Skip if we don't follow this room or message is ephemeral\n return;\n }\n\n const me = await this.tracker.getMe();\n const isMe = ev.message.author.user.id === me.id;\n let update: Partial<FollowedTopic>;\n\n if (isMe) {\n // Reset missed messages count if new message is authored by me\n update = {missed: 0, lastAckMessageId: ev.message.id};\n } else if (ev.message.type === 'Text') {\n // ...check for mentions if it's text message...\n const member = await this.tracker.rooms.getMe(ev.message.location.roomId);\n const roleIds = [...(member.spaceMember?.roles ?? []), ...(member.roles ?? [])];\n const mentionHandlers = [\n ...roleIds.map(id => `<@&${id}>`),\n `<@${me.id}>`,\n ];\n const mentionExists = mentionHandlers.some(handler => ev.message.content.includes(handler));\n\n update = {\n missed: followedTopic.missed === null ? null : followedTopic.missed + 1,\n isUnread: true,\n mentionCount: followedTopic.mentionCount + (mentionExists ? 1 : 0),\n };\n } else {\n // ...or just mark as unread.\n update = {\n missed: followedTopic.missed === null ? null : followedTopic.missed + 1,\n isUnread: true,\n };\n }\n\n roomFollowedTopics.set({...followedTopic, ...update});\n this.invalidateUnreadSummaries(ev.message.location.roomId, ev.message.location.topicId);\n }\n\n /**\n * Reconcile the followed-topics collection for a single room to exactly\n * match the provided list (upsert present, drop absent) without emitting an\n * intermediate empty state, and clear its stale marker. Does not touch the\n * unread summaries cache - callers decide how to invalidate it.\n */\n private applyRoomFollowedTopics(roomId: string, followedTopics: FollowedTopic[]): void {\n if (! this.followedTopics.has(roomId)) {\n this.followedTopics.set([roomId, new ObservableIndexedObjectCollection<FollowedTopic>(\n followedTopic => followedTopic.location.topicId\n )]);\n }\n\n this.followedTopics.get(roomId).reconcile(...followedTopics);\n this.staleRooms.delete(roomId);\n }\n\n /**\n * Reconcile a batch of rooms from a single bulk GetFollowedTopics response.\n * Rooms with no followed topics in the response are reconciled to empty, so\n * topics unfollowed/removed during the downtime are correctly dropped.\n */\n private reconcileRoomsFollowedTopics(roomIds: string[], followedTopics: FollowedTopic[]): void {\n const roomToTopics: {[roomId: string]: FollowedTopic[]} = {};\n\n followedTopics.forEach(followedTopic => {\n (roomToTopics[followedTopic.location.roomId] ??= []).push(followedTopic);\n });\n\n roomIds.forEach(roomId => this.applyRoomFollowedTopics(roomId, roomToTopics[roomId] ?? []));\n\n this.invalidateUnreadSummariesForRooms(roomIds);\n }\n\n private setFollowedTopicsArray(roomIds: string[], followedTopics: FollowedTopic[]): void {\n const roomToTopics: {[roomId: string]: FollowedTopic[]} = {};\n\n // Reassign followed topics to limit collection change event emit\n followedTopics.forEach(followedTopic => {\n roomToTopics[followedTopic.location.roomId] ??= [];\n roomToTopics[followedTopic.location.roomId].push(followedTopic);\n });\n\n roomIds.forEach(roomId => {\n if (! this.followedTopics.has(roomId)) {\n this.followedTopics.set([roomId, new ObservableIndexedObjectCollection<FollowedTopic>(\n followedTopic => followedTopic.location.topicId\n )]);\n }\n\n if (roomToTopics[roomId]) {\n this.followedTopics.get(roomId).set(...roomToTopics[roomId]);\n }\n });\n\n this.invalidateUnreadSummariesForRooms(roomIds);\n }\n\n private clearRoomFollowedTopicsStructures(roomId: string): void {\n this.followedTopics.delete(roomId);\n this.followedTopicsPromises.forget(roomId);\n this.staleRooms.delete(roomId);\n this.invalidateUnreadSummaries(roomId);\n }\n}","import {IndexedCollection, ObservableIndexedObjectCollection} from \"../IndexedObjectCollection\";\nimport {\n Message,\n MessagesRedacted,\n NewMessage,\n NewTopic,\n Room, RoomDeleted,\n RoomJoined, RoomLeft,\n RoomMember, RoomMemberJoined, RoomMemberLeft, RoomMembers,\n RoomMemberUpdated, RoomUpdated, Session, SpaceDeleted, SpaceLeft, SpaceMemberLeft,\n SpaceMemberUpdated,\n Topic,\n TopicDeleted, TopicUpdated,\n UserUpdated,\n} from \"../types/src\";\nimport {ChatStateTracker} from \"./ChatStateTracker\";\nimport {DeferredTask, PromiseRegistry} from \"./AsyncUtils\";\nimport {MessagesManager} from \"./MessagesManager\";\nimport {FollowedTopicsManager} from \"./FollowedTopicsManager\";\n\nexport class RoomsManager {\n public readonly messages: MessagesManager;\n public readonly followedTopics: FollowedTopicsManager;\n\n private readonly list = new ObservableIndexedObjectCollection<Room>('id');\n private readonly topics = new IndexedCollection<string, ObservableIndexedObjectCollection<Topic>>();\n private readonly members = new IndexedCollection<string, ObservableIndexedObjectCollection<RoomMember>>();\n private readonly deferredSession = new DeferredTask();\n private readonly membersPromises = new PromiseRegistry();\n private readonly topicsPromises = new PromiseRegistry();\n\n public constructor(private tracker: ChatStateTracker) {\n this.messages = new MessagesManager(tracker);\n this.followedTopics = new FollowedTopicsManager(tracker);\n\n this.tracker.client.on('NewMessage', ev => this.handleNewMessage(ev));\n this.tracker.client.on('MessagesRedacted', ev => this.handleMessagesRedacted(ev));\n this.tracker.client.on('NewTopic', ev => this.handleNewTopic(ev));\n this.tracker.client.on('TopicDeleted', ev => this.handleTopicDeleted(ev));\n this.tracker.client.on('RoomJoined', ev => this.handleRoomJoined(ev));\n this.tracker.client.on('RoomLeft', ev => this.handleRoomLeft(ev));\n this.tracker.client.on('RoomUpdated', ev => this.handleRoomUpdated(ev));\n this.tracker.client.on('RoomDeleted', ev => this.handleRoomDeleted(ev));\n this.tracker.client.on('TopicUpdated', ev => this.handleTopicUpdated(ev));\n this.tracker.client.on('RoomMemberJoined', ev => this.handleRoomMemberJoined(ev));\n this.tracker.client.on('RoomMemberLeft', ev => this.handleRoomMemberLeft(ev));\n this.tracker.client.on('RoomMembers', ev => this.handleRoomMembers(ev));\n this.tracker.client.on('RoomMemberUpdated', ev => this.handleRoomMemberUpdated(ev));\n this.tracker.client.on('SpaceMemberLeft', ev => this.handleSpaceMemberLeft(ev));\n this.tracker.client.on('SpaceMemberUpdated', ev => this.handleSpaceMemberUpdated(ev));\n this.tracker.client.on('SpaceDeleted', ev => this.handleSpaceDeleted(ev));\n this.tracker.client.on('SpaceLeft', ev => this.handleSpaceDeleted(ev));\n this.tracker.client.on('UserUpdated', ev => this.handleUserUpdated(ev));\n this.tracker.client.on('Session', ev => this.handleSession(ev));\n }\n\n /**\n * Get collection of room members.\n */\n public async getMembers(roomId: string): Promise<ObservableIndexedObjectCollection<RoomMember> | undefined> {\n if (this.membersPromises.notExist(roomId)) {\n this.membersPromises.registerByFunction(async () => {\n const result = await this.tracker.client.send('GetRoomMembers', {id: roomId});\n if (result.error) {\n throw result.error;\n }\n this.handleRoomMembers(result.data);\n }, roomId);\n }\n\n await this.membersPromises.get(roomId);\n return this.members.get(roomId);\n }\n\n /**\n * Get a room member representing the current user.\n */\n public async getMe(roomId: string): Promise<RoomMember | undefined> {\n const userId = (await this.tracker.getMe()).id;\n\n if (! this.list.has(roomId)) {\n // User is not in passed room.\n return undefined;\n }\n\n const members = await this.getMembers(roomId);\n return members?.items.find(member => (member.user?.id ?? member.spaceMember.user.id) === userId);\n }\n\n /**\n * Get collection of all the rooms you are in.\n */\n public async get(): Promise<ObservableIndexedObjectCollection<Room>> {\n await this.deferredSession.promise;\n return this.list;\n }\n\n /**\n * Get a collection of locally cached Topic objects for given room.\n * You can pass topic ids as second argument, to try to fetch them from the server.\n */\n public async getTopics(roomId: string, tryToFetchTopicIds?: string[]): Promise<ObservableIndexedObjectCollection<Topic> | undefined> {\n await this.deferredSession.promise;\n\n if (tryToFetchTopicIds?.length) {\n // Topic can be fetched if it isn't already cached and fetch is not already in progress\n const canFetch = (topicId: string) => ! this.topics.get(roomId)?.has(topicId) && ! this.topicsPromises.has(roomId + topicId);\n const idsToFetch = tryToFetchTopicIds.filter(canFetch);\n\n if (idsToFetch.length) {\n const promise = this.tracker\n .client\n .send('GetTopics', {roomId, topicIds: idsToFetch})\n .then(result => this.topics.get(result.data.location.roomId)?.set(...result.data.topics));\n\n idsToFetch.forEach(topicId => this.topicsPromises.register(promise, roomId + topicId));\n }\n\n for (const topicId of tryToFetchTopicIds) {\n await this.topicsPromises.get(roomId + topicId);\n }\n }\n\n return this.topics.get(roomId);\n }\n\n /**\n * For internal use. If you want to delete topic, execute a proper command on client object.\n * @internal\n */\n public _deleteTopicsFromRoom(roomId: string, ...topicIds: string[]): void {\n this.topics.get(roomId)?.delete(...topicIds);\n }\n\n private deleteRoom(...roomIds: string[]): void {\n this.list.delete(...roomIds);\n this.members.delete(...roomIds);\n this.membersPromises.forget(...roomIds);\n\n for (const roomId of roomIds) {\n const topicIds: string[] = this.topics.get(roomId)?.items.map(topic => topic.id) ?? [];\n this.followedTopics._deleteByTopicIds(roomId, ...topicIds);\n }\n\n this.topics.delete(...roomIds);\n }\n\n private deleteRoomsBySpaceId(spaceId: string): void {\n this.deleteRoom(\n ...this.list.findBy('spaceId', spaceId).items.map(room => room.id)\n );\n }\n\n private handleSpaceMemberUpdated(ev: SpaceMemberUpdated): void {\n // Update members of rooms related to this space\n for (const room of this.list.findBy('spaceId', ev.spaceId).items) {\n const roomMembers = this.members.get(room.id);\n\n if (!roomMembers || !roomMembers.has(ev.userId)) {\n // Skip update if member list for this room is not loaded\n // or user is not in room\n continue;\n }\n\n // Update space member in roomMember, but first fill the user object (it's null in event)\n const roomMember = roomMembers.get(ev.userId);\n const spaceMember = ev.member;\n spaceMember.user = roomMember.spaceMember.user;\n roomMembers.set({ ...roomMember, spaceMember });\n }\n }\n\n private handleSpaceMemberLeft(ev: SpaceMemberLeft): void {\n this.list\n .findBy('spaceId', ev.spaceId).items\n .forEach(room => this.members.get(room.id)?.delete(ev.userId));\n }\n\n private handleRoomMemberUpdated(ev: RoomMemberUpdated): void {\n if (! this.members.has(ev.roomId)) {\n // We do not track member list for this room.\n return;\n }\n\n const members = this.members.get(ev.roomId);\n const member = members.get(ev.userId);\n const newMember = ev.member;\n const user = member.spaceMember?.user ?? member.user;\n\n // Preserving user object, because it's not included in event\n if (newMember.spaceMember) {\n newMember.spaceMember.user = user;\n } else {\n newMember.user = user;\n }\n\n members.set(newMember);\n }\n\n private handleSpaceDeleted(ev: SpaceDeleted | SpaceLeft): void {\n this.deleteRoomsBySpaceId(ev.id);\n }\n\n private handleTopicDeleted(ev: TopicDeleted): void {\n const collection = this.topics.get(ev.location.roomId);\n collection.delete(ev.location.topicId);\n\n const room = this.list.get(ev.location.roomId);\n if (room.defaultTopic?.id === ev.location.topicId) {\n this.list.set({...room, defaultTopic: null});\n }\n }\n\n private handleNewTopic(ev: NewTopic): void {\n this.addJoinedRoomTopics(ev.roomId, ev.topic);\n }\n\n private addJoinedRoomTopics(roomId: string, ...topics: Topic[]): void {\n if (this.topics.has(roomId)) {\n this.topics.get(roomId).set(...topics);\n } else {\n this.topics.set([roomId, new ObservableIndexedObjectCollection<Topic>('id', topics)]);\n }\n }\n\n private handleRoomJoined(ev: RoomJoined): void {\n this.addJoinedRooms(ev.room);\n }\n\n private handleRoomUpdated(ev: RoomUpdated): void {\n if (this.list.has(ev.room.id)) {\n this.list.set(ev.room);\n }\n }\n\n private handleRoomDeleted(ev: RoomDeleted): void {\n this.deleteRoom(ev.id);\n }\n\n private handleTopicUpdated(ev: TopicUpdated): void {\n const room = this.list.get(ev.location.roomId);\n\n if (this.topics.get(ev.location.roomId)?.has(ev.topic.id)) {\n this.topics.get(ev.location.roomId).set(ev.topic);\n }\n\n if (room.defaultTopic.id === ev.topic.id) {\n const newRoom = { ...room };\n newRoom.defaultTopic = ev.topic;\n this.list.set(newRoom);\n }\n }\n\n private addJoinedRooms(...rooms: Room[]): void {\n for (const room of rooms) {\n if (room.defaultTopic) {\n this.addJoinedRoomTopics(room.id, room.defaultTopic);\n }\n\n if (room.type === 'Pm' && room.recipients) {\n // Treat PM recipients as normal room members.\n // We are registering fake promise in `memberPromises`\n // because GetMembers are not supported for PM rooms.\n this.handleRoomMembers({\n id: room.id,\n members: room.recipients.map(user => ({\n user,\n spaceMember: null,\n roles: null,\n customColor: null,\n customNick: null,\n extras: '',\n })),\n });\n this.membersPromises.register(Promise.resolve(), room.id);\n }\n }\n this.list.set(...rooms);\n }\n\n private handleRoomLeft(ev: RoomLeft): void {\n this.deleteRoom(ev.id);\n }\n\n private handleRoomMemberJoined(ev: RoomMemberJoined): void {\n if (this.members.has(ev.roomId)) {\n this.members.get(ev.roomId).set(ev.member);\n }\n }\n\n private handleRoomMemberLeft(ev: RoomMemberLeft): void {\n if (this.members.has(ev.roomId)) {\n this.members.get(ev.roomId).delete(ev.userId);\n }\n }\n\n private handleRoomMembers(ev: RoomMembers): void {\n if (! this.members.has(ev.id)) {\n this.members.set([\n ev.id,\n new ObservableIndexedObjectCollection(\n member => member.user?.id ?? member.spaceMember.user.id,\n ev.members,\n )\n ]);\n } else {\n // Reconcile into the existing (bound) collection so a reconnect\n // refetch updates it in place instead of leaving stale members.\n this.members.get(ev.id).reconcile(...ev.members);\n }\n }\n\n private handleSession(ev: Session): void {\n const stateRoomIds = new Set(ev.state.rooms.map(room => room.id));\n\n // Remove only rooms that were left/deleted on the server during the\n // downtime, reusing the cascade cleanup (members, topics, followed\n // topics). Surviving rooms keep their identity and bindings.\n const removedRoomIds = this.list.items\n .filter(room => ! stateRoomIds.has(room.id))\n .map(room => room.id);\n if (removedRoomIds.length) {\n this.deleteRoom(...removedRoomIds);\n }\n\n // Invalidate lazy caches so the next access refetches fresh data, but\n // keep the collection objects: handleRoomMembers reconciles into them,\n // so bound views refresh in place without blanking.\n this.membersPromises.forgetAll();\n this.topicsPromises.forgetAll();\n\n // Upsert surviving/new rooms from the authoritative snapshot.\n this.addJoinedRooms(...ev.state.rooms);\n\n this.deferredSession.resolve();\n }\n\n private handleUserUpdated(ev: UserUpdated): void {\n // Update room members users\n this.members.items.forEach((members) => {\n const member = members.get(ev.user.id);\n\n if (! member) {\n // Skip room; updated user is not here\n return;\n }\n\n const newMember: RoomMember = {...member};\n\n if (member.user) {\n newMember.user = ev.user;\n } else {\n newMember.spaceMember.user = ev.user;\n }\n\n members.set(newMember);\n });\n\n // Update recipients users\n const newRooms: Room[] = [];\n this.list.items.forEach(room => {\n if (room.recipients?.some(user => user.id === ev.user.id)) {\n room.recipients = room.recipients.map(user => user.id === ev.user.id ? ev.user : user);\n newRooms.push({...room});\n }\n });\n this.list.set(...newRooms);\n }\n\n private handleNewMessage(ev: NewMessage): void {\n const topics = this.topics.get(ev.message.location.roomId);\n const topic = topics?.get(ev.message.location.topicId);\n\n if (!topic) {\n return; // No topic found, nothing to update\n }\n\n const newTopic = {\n ...topic,\n messageCount: topic.messageCount + 1,\n lastMessage: ev.message,\n };\n\n topics.set(newTopic);\n const room = this.list.get(ev.message.location.roomId);\n\n if (room.defaultTopic?.id === ev.message.location.topicId) {\n this.list.set({ ...room, defaultTopic: newTopic });\n }\n }\n\n private async handleMessagesRedacted(ev: MessagesRedacted): Promise<void> {\n // Remove redacted messages from topic and update metadata\n const topics = this.topics.get(ev.location.roomId);\n const topic = topics?.get(ev.location.topicId);\n if (topic) {\n const messageCount = Math.max(topic.messageCount - ev.ids.length, 0);\n const lastMessage: Message = messageCount > 0 ? await this.messages._resolveLastMessage(ev.location) : null;\n topics.set({ ...topic, messageCount, lastMessage } as Topic);\n }\n }\n}","import {Role, RoomMember, SpaceMember, User} from \"../types/src\";\r\n\r\nexport function reorderRolesOnPriorityUpdate(allRoles: Role[], oldRole: Role, updatedRole: Role): Role[] {\r\n // If the priority has changed, adjust the rest of roles\r\n const increased = (updatedRole.priority - oldRole.priority) > 0;\r\n const decreased = ! increased;\r\n const changedRoles: Role[] = [];\r\n\r\n allRoles.forEach(role => {\r\n if (role.id === updatedRole.id) {\r\n // Skip the updated role\r\n return;\r\n }\r\n if (increased && oldRole.priority <= role.priority) {\r\n role.priority--;\r\n changedRoles.push(role);\r\n }\r\n if (decreased && updatedRole.priority <= role.priority) {\r\n role.priority++;\r\n changedRoles.push(role);\r\n }\r\n });\r\n\r\n return changedRoles;\r\n}\r\n\r\nexport function extractUserFromMember(member: RoomMember | SpaceMember): User | null {\r\n return member.user ?? (member as RoomMember).spaceMember?.user;\r\n}","import {ChatStateTracker} from \"./ChatStateTracker\";\nimport {IndexedCollection, ObservableIndexedObjectCollection} from \"../IndexedObjectCollection\";\nimport {\n NewRole,\n NewRoom,\n Role,\n RoleDeleted,\n RoleUpdated,\n RoomDeleted,\n RoomSummary,\n RoomSummaryUpdated,\n RoomUpdated,\n Session,\n Space,\n SpaceDeleted,\n SpaceJoined,\n SpaceLeft,\n SpaceMember,\n SpaceMemberJoined,\n SpaceMemberLeft,\n SpaceMembers,\n SpaceMemberUpdated,\n SpaceRooms,\n SpaceUpdated,\n UserUpdated\n} from \"../types/src\";\nimport {DeferredTask, PromiseRegistry} from \"./AsyncUtils\";\nimport {reorderRolesOnPriorityUpdate} from \"./functions\";\n\nexport class SpacesManager {\n private readonly list = new ObservableIndexedObjectCollection<Space>('id');\n private readonly roles = new IndexedCollection<string, ObservableIndexedObjectCollection<Role>>();\n private readonly rooms = new IndexedCollection<string, ObservableIndexedObjectCollection<RoomSummary>>();\n private readonly roomIdToSpaceId = new IndexedCollection<string, string>();\n private readonly members = new IndexedCollection<string, ObservableIndexedObjectCollection<SpaceMember>>();\n private readonly deferredSession = new DeferredTask();\n private readonly roomsPromises = new PromiseRegistry();\n private readonly membersPromises = new PromiseRegistry();\n\n public constructor(private tracker: ChatStateTracker) {\n this.tracker.client.on('NewRoom', ev => this.handleNewRoom(ev));\n this.tracker.client.on('RoomDeleted', ev => this.handleRoomDeleted(ev));\n this.tracker.client.on('RoomUpdated', ev => this.handleRoomUpdated(ev));\n this.tracker.client.on('SpaceDeleted', ev => this.handleSpaceDeleted(ev));\n this.tracker.client.on('SpaceUpdated', ev => this.handleSpaceUpdated(ev));\n this.tracker.client.on('SpaceJoined', ev => this.handleSpaceJoined(ev));\n this.tracker.client.on('SpaceLeft', ev => this.handleSpaceDeleted(ev));\n this.tracker.client.on('SpaceMemberJoined', ev => this.handleSpaceMemberJoined(ev));\n this.tracker.client.on('SpaceMemberLeft', ev => this.handleSpaceMemberLeft(ev));\n this.tracker.client.on('SpaceMembers', ev => this.handleSpaceMembers(ev));\n this.tracker.client.on('SpaceRooms', ev => this.handleSpaceRooms(ev));\n this.tracker.client.on('RoomSummaryUpdated', ev => this.handleRoomSummaryUpdated(ev));\n this.tracker.client.on('SpaceMemberUpdated', ev => this.handleSpaceMemberUpdated(ev));\n this.tracker.client.on('UserUpdated', ev => this.handleUserUpdated(ev));\n this.tracker.client.on('NewRole', ev => this.handleNewRole(ev));\n this.tracker.client.on('RoleDeleted', ev => this.handleRoleDeleted(ev));\n this.tracker.client.on('RoleUpdated', ev => this.handleRoleUpdated(ev));\n this.tracker.client.on('Session', ev => this.handleSession(ev));\n }\n\n /**\n * Get collection of all the spaces you are in.\n */\n public async get(): Promise<ObservableIndexedObjectCollection<Space>> {\n await this.deferredSession.promise;\n return this.list;\n }\n\n /**\n * Get collection of space roles.\n */\n public async getRoles(spaceId: string): Promise<ObservableIndexedObjectCollection<Role> | undefined> {\n await this.deferredSession.promise;\n return this.roles.get(spaceId);\n }\n\n /**\n * Get collection of the all available rooms inside given space.\n */\n public async getRooms(spaceId: string): Promise<ObservableIndexedObjectCollection<RoomSummary> | undefined> {\n if (this.roomsPromises.notExist(spaceId)) {\n this.roomsPromises.registerByFunction(async () => {\n const result = await this.tracker.client.send('GetSpaceRooms', {id: spaceId});\n if (result.error) {\n throw result.error;\n }\n this.handleSpaceRooms(result.data);\n }, spaceId);\n }\n\n await this.roomsPromises.get(spaceId);\n return this.rooms.get(spaceId);\n }\n\n /**\n * Get collection of space members.\n */\n public async getMembers(spaceId: string): Promise<ObservableIndexedObjectCollection<SpaceMember> | undefined> {\n if (this.membersPromises.notExist(spaceId)) {\n this.membersPromises.registerByFunction(async () => {\n const result = await this.tracker.client.send('GetSpaceMembers', {id: spaceId});\n if (result.error) {\n throw result.error;\n }\n this.handleSpaceMembers(result.data);\n }, spaceId);\n }\n\n await this.membersPromises.get(spaceId);\n return this.members.get(spaceId);\n }\n\n /**\n * Get a space member representing the current user.\n */\n public async getMe(spaceId: string): Promise<SpaceMember | undefined> {\n const userId = (await this.tracker.getMe()).id;\n\n if (! this.list.has(spaceId)) {\n // User is not in passed space.\n return undefined;\n }\n\n const members = await this.getMembers(spaceId);\n return members?.items.find(member => member.user.id === userId);\n }\n\n private handleNewRole(ev: NewRole): void {\n const collection = this.roles.get(ev.spaceId);\n collection.set(ev.role);\n this.list.get(ev.spaceId).roles = collection.items;\n }\n\n private handleNewRoom(ev: NewRoom): void {\n this.rooms.get(ev.spaceId)?.set(ev.summary);\n this.roomIdToSpaceId.set([ev.summary.id, ev.spaceId]);\n }\n\n private handleRoomUpdated(ev: RoomUpdated): void {\n if (ev.room.spaceId && this.rooms.has(ev.room.spaceId)) {\n const rooms = this.rooms.get(ev.room.spaceId);\n rooms.set({\n ...rooms.get(ev.room.id),\n name: ev.room.name,\n description: ev.room.description,\n } as RoomSummary);\n }\n }\n\n private async handleRoomDeleted(ev: RoomDeleted): Promise<void> {\n const spaceId = this.roomIdToSpaceId.get(ev.id);\n this.roomIdToSpaceId.delete(ev.id);\n\n if (! spaceId) {\n return;\n }\n\n const space = this.list.get(spaceId);\n let spaceChanged = false;\n\n this.rooms.get(spaceId)?.delete(ev.id);\n\n if (space.systemRoom === ev.id) {\n space.systemRoom = null;\n spaceChanged = true;\n }\n\n if (space.defaultRooms.includes(ev.id)) {\n space.defaultRooms = space.defaultRooms.filter(roomId => roomId !== ev.id);\n spaceChanged = true;\n }\n\n if (spaceChanged) {\n this.list.set(space);\n }\n }\n\n private handleRoleDeleted(ev: RoleDeleted): void {\n const collection = this.roles.get(ev.spaceId);\n collection.delete(ev.id);\n this.list.get(ev.spaceId).roles = collection.items;\n }\n\n private handleSpaceUpdated(ev: SpaceUpdated): void {\n this.list.set(ev.space);\n }\n\n private handleSpaceDeleted(ev: SpaceDeleted | SpaceLeft): void {\n const roomIds = this.rooms.get(ev.id)?.items.map(item => item.id) ?? [];\n this.roomIdToSpaceId.delete(...roomIds);\n\n this.roles.delete(ev.id);\n this.members.delete(ev.id);\n this.membersPromises.forget(ev.id);\n this.rooms.delete(ev.id);\n this.roomsPromises.forget(ev.id);\n this.list.delete(ev.id);\n }\n\n private handleSpaceJoined(ev: SpaceJoined): void {\n this.addJoinedSpaces(ev.space);\n }\n\n private addJoinedSpaces(...spaces: Space[]): void {\n this.roles.set(...(spaces.map(space => [\n space.id,\n new ObservableIndexedObjectCollection<Role>('id', space.roles)\n ]) as [string, ObservableIndexedObjectCollection<Role>][]));\n this.list.set(...spaces);\n }\n\n private handleSpaceMemberJoined(ev: SpaceMemberJoined): void {\n if (this.members.has(ev.spaceId)) {\n this.members.get(ev.spaceId).set(ev.member);\n }\n }\n\n private handleSpaceMemberLeft(ev: SpaceMemberLeft): void {\n if (this.members.has(ev.spaceId)) {\n this.members.get(ev.spaceId).delete(ev.userId);\n }\n }\n\n private handleSpaceMembers(ev: SpaceMembers): void {\n if (! this.members.has(ev.id)) {\n this.members.set([\n ev.id,\n new ObservableIndexedObjectCollection(member => member?.user.id, ev.members)\n ]);\n } else {\n // Reconcile into the existing (bound) collection so a reconnect\n // refetch updates it in place instead of leaving stale members.\n this.members.get(ev.id).reconcile(...ev.members);\n }\n }\n\n private handleSpaceRooms(ev: SpaceRooms): void {\n if (! this.rooms.has(ev.id)) {\n this.rooms.set([ev.id, new ObservableIndexedObjectCollection('id', ev.summaries)]);\n } else {\n this.rooms.get(ev.id).reconcile(...ev.summaries);\n }\n ev.summaries.forEach(summary => this.roomIdToSpaceId.set([summary.id, ev.id]));\n }\n\n private async handleRoomSummaryUpdated(ev: RoomSummaryUpdated): Promise<void> {\n const spaceId = this.roomIdToSpaceId.get(ev.summary.id);\n const summariesPromise = this.roomsPromises.get(spaceId);\n\n /**\n * Update summary only if the list was already loaded.\n * RoomSummaryUpdated event has a partial summary, so we need to update the existing summary by merging it.\n */\n if (spaceId && summariesPromise) {\n await summariesPromise;\n\n const summaries = this.rooms.get(spaceId);\n const oldSummary = summaries.get(ev.summary.id);\n let newSummary: RoomSummary;\n\n if (oldSummary) {\n newSummary = {...oldSummary, ...ev.summary};\n } else {\n newSummary = ev.summary;\n }\n\n summaries.set(newSummary);\n }\n }\n\n private handleSpaceMemberUpdated(ev: SpaceMemberUpdated): void {\n if (this.members.has(ev.spaceId)) {\n const members = this.members.get(ev.spaceId);\n const member = members.get(ev.userId);\n members.set({...ev.member, user: member.user});\n }\n }\n\n private handleRoleUpdated(ev: RoleUpdated): void {\n const roles = this.roles.get(ev.spaceId);\n const oldRole = roles.get(ev.role.id);\n const newRole = ev.role;\n const rolesToUpdate = [newRole];\n\n if (oldRole.priority !== newRole.priority) {\n rolesToUpdate.push(\n ...reorderRolesOnPriorityUpdate(roles.items, oldRole, newRole)\n );\n }\n\n this.roles.get(ev.spaceId).set(...rolesToUpdate);\n }\n\n private handleSession(ev: Session): void {\n const stateSpaceIds = new Set(ev.state.spaces.map(space => space.id));\n\n // Remove only spaces that were left/deleted on the server during the\n // downtime, reusing the cascade cleanup (roles, rooms, members, index).\n const removedSpaceIds = this.list.items\n .filter(space => ! stateSpaceIds.has(space.id))\n .map(space => space.id);\n for (const spaceId of removedSpaceIds) {\n this.handleSpaceDeleted({ id: spaceId } as SpaceDeleted);\n }\n\n // Invalidate lazy caches (rooms/members) but keep their objects so the\n // next access refetches and reconciles them in place.\n this.roomsPromises.forgetAll();\n this.membersPromises.forgetAll();\n\n // Reconcile roles in place (kept, possibly bound object) and upsert the\n // spaces from the authoritative snapshot.\n for (const space of ev.state.spaces) {\n if (this.roles.has(space.id)) {\n this.roles.get(space.id).reconcile(...space.roles);\n } else {\n this.roles.set([\n space.id,\n new ObservableIndexedObjectCollection<Role>('id', space.roles),\n ]);\n }\n }\n\n this.list.set(...ev.state.spaces);\n\n this.deferredSession.resolve();\n }\n\n private handleUserUpdated(ev: UserUpdated): void {\n this.members.items.forEach((members) => {\n const member = members.get(ev.user.id);\n\n if (! member) {\n // Skip space; updated user is not here\n return;\n }\n\n members.set({...member, user: ev.user});\n });\n }\n}","export enum Layer {\n Global,\n Space,\n Room,\n Topic,\n}\n\nexport class PermissionDefinition {\n value: number;\n maxLayer: Layer;\n}\n\nexport class Permissions {\n public static readonly list = {\n Root: {value: 1 << 0, maxLayer: Layer.Room},\n CreateSpaces: {value: 1 << 1, maxLayer: Layer.Global},\n ManageSpace: {value: 1 << 2, maxLayer: Layer.Space},\n ManageRoles: {value: 1 << 3, maxLayer: Layer.Space},\n //ManageRoom: {value: 1 << 4, maxLayer: Layer.Room},\n CreateTopics: {value: 1 << 5, maxLayer: Layer.Room},\n ManageTopic: {value: 1 << 6, maxLayer: Layer.Topic},\n ManageMemberProfiles: {value: 1 << 7, maxLayer: Layer.Space},\n ManageMemberRoles: {value: 1 << 8, maxLayer: Layer.Room},\n CreateMessages: {value: 1 << 9, maxLayer: Layer.Topic},\n ManagePermissions: {value: 1 << 10, maxLayer: Layer.Topic},\n CreateRooms: {value: 1 << 11, maxLayer: Layer.Space},\n ManageRoom: {value: 1 << 12, maxLayer: Layer.Room},\n CreateEmoticons: {value: 1 << 13, maxLayer: Layer.Space},\n ManageEmoticons: {value: 1 << 14, maxLayer: Layer.Space},\n ManageBans: {value: 1 << 15, maxLayer: Layer.Room},\n Kick: {value: 1 << 16, maxLayer: Layer.Room},\n ChangeOwnNick: {value: 1 << 17, maxLayer: Layer.Space},\n ChangeOwnColor: {value: 1 << 18, maxLayer: Layer.Room},\n RedactMessages: {value: 1 << 19, maxLayer: Layer.Topic},\n };\n\n public static getNames(): (keyof typeof this.list)[] {\n return Object.keys(this.list) as any;\n }\n\n public static getByName(name: keyof typeof this.list): PermissionDefinition | undefined {\n return this.list[name];\n }\n\n public static canBeDefinedOnLayer(permissionName: keyof typeof this.list, layer: Layer): boolean {\n const def = this.getByName(permissionName);\n\n if (! def) {\n throw new Error(`Invalid permission name: ${permissionName}`);\n }\n\n return layer <= this.getByName(permissionName).maxLayer;\n }\n}","import {ChatStateTracker} from \"./ChatStateTracker\";\nimport {\n ChatLocation,\n PermissionOverwrites, PermissionOverwritesTarget,\n PermissionOverwritesUpdated,\n PermissionOverwritesValue,\n RoleDeleted,\n RoomDeleted,\n RoomLeft, RoomMember, RoomMemberUpdated, Session,\n SpaceDeleted,\n SpaceLeft, SpaceMember,\n SpaceMemberUpdated,\n TopicDeleted,\n} from \"../types/src\";\nimport {ChangeEventMap, EventTarget} from \"../EventTarget\";\nimport {IndexedCollection} from \"../IndexedObjectCollection\";\nimport {Permissions} from \"../Permissions\";\nimport {PromiseRegistry} from \"./AsyncUtils\";\n\nconst getOvId = (\n location: ChatLocation,\n target?: PermissionOverwritesTarget,\n) => [location.spaceId, location.roomId, location.topicId, target?.type, target?.userId, target?.roleId].filter(Boolean).join('/');\n\nconst getOvIdByObject\n = (overwrites: PermissionOverwrites | PermissionOverwritesUpdated): string => getOvId(overwrites.location, overwrites.target);\n\ninterface CheckPermissionsResult {\n /**\n * @deprecated Use `hasAll` instead.\n */\n ok: boolean;\n hasAll: boolean;\n hasAny: boolean;\n missing: string[];\n}\n\ntype PermissionsManagerEventMap = ChangeEventMap<void>;\n\nexport class PermissionsManager extends EventTarget<PermissionsManagerEventMap> {\n private readonly overwrites = new IndexedCollection<string, PermissionOverwrites>();\n private readonly overwritesPromises = new PromiseRegistry();\n\n public constructor(private tracker: ChatStateTracker) {\n super();\n this.tracker.client.on('PermissionOverwrites', ev => this.handlePermissionOverwrites(ev));\n this.tracker.client.on('PermissionOverwritesUpdated', ev => this.handlePermissionOverwrites(ev));\n this.tracker.client.on('SpaceDeleted', ev => this.handleSpaceDeleted(ev));\n this.tracker.client.on('SpaceLeft', ev => this.handleSpaceDeleted(ev));\n this.tracker.client.on('RoomDeleted', ev => this.handleRoomDeleted(ev));\n this.tracker.client.on('RoomLeft', ev => this.handleRoomDeleted(ev));\n this.tracker.client.on('TopicDeleted', ev => this.handleTopicDeleted(ev));\n this.tracker.client.on('RoleDeleted', ev => this.handleRoleDeleted(ev));\n this.tracker.client.on('SpaceMemberUpdated', ev => this.handleSpaceMemberUpdated(ev));\n this.tracker.client.on('RoomMemberUpdated', ev => this.handleRoomMemberUpdated(ev));\n this.tracker.client.on('Session', ev => this.handleSession(ev));\n }\n\n public async getOverwrites(\n location: ChatLocation,\n target: PermissionOverwritesTarget,\n ): Promise<PermissionOverwrites | undefined> {\n this.validateLocation(location);\n\n const id = getOvId(location, target);\n\n if (this.overwritesPromises.notExist(id)) {\n this.overwritesPromises.registerByFunction(async () => {\n const result = await this.tracker.client.send(\n 'GetPermissionOverwrites',\n {location, target},\n );\n if (result.error) {\n throw result.error;\n }\n this.handlePermissionOverwrites(result.data);\n }, id);\n }\n\n await this.overwritesPromises.get(id);\n return this.overwrites.get(id);\n }\n\n public async check(\n permissionNames: (keyof typeof Permissions.list)[],\n location: ChatLocation,\n ): Promise<CheckPermissionsResult> {\n if (! permissionNames.length) {\n throw new Error('Permission names array cannot be empty');\n }\n\n const ownedPermissions = await this.calculatePermissions(location);\n const missing: string[] = [];\n\n permissionNames.forEach(name => {\n if (~ ownedPermissions & Permissions.getByName(name).value) {\n missing.push(name as string);\n }\n });\n\n return {\n ok: missing.length === 0,\n hasAll: missing.length === 0,\n hasAny: missing.length < permissionNames.length,\n missing,\n };\n }\n\n public async calculatePermissions(location: ChatLocation): Promise<number> {\n const room = location.roomId ? (await this.tracker.rooms.get()).get(location.roomId) : null;\n location = {\n spaceId: location.spaceId ?? room?.spaceId,\n roomId: location.roomId,\n topicId: location.topicId,\n };\n\n this.validateLocation(location);\n\n const userId = (await this.tracker.getMe()).id;\n const [spaceMember, roomMember] = await this.fetchMembersOrFail(location);\n const userRoles: string[] = [...(spaceMember?.roles ?? []), ...(roomMember?.roles ?? [])];\n const promises: Promise<PermissionOverwritesValue>[] = [\n // Global user overwrites\n this.getOverwrites({}, { type: 'User', userId }).then(v => v.overwrites),\n ];\n\n if (location.spaceId && (await this.tracker.spaces.get())?.has(location.spaceId)) {\n const filterLocation: ChatLocation = {spaceId: location.spaceId};\n promises.push(this.collectRoleOverwrites(filterLocation, userRoles));\n promises.push(this.getOverwrites(filterLocation, { type: 'User', userId }).then(v => v.overwrites));\n }\n\n if (room) {\n const filterLocation: ChatLocation = {spaceId: location.spaceId, roomId: location.roomId};\n if (userRoles.length) {\n promises.push(this.collectRoleOverwrites(filterLocation, userRoles));\n }\n promises.push(this.getOverwrites(filterLocation, { type: 'User', userId }).then(v => v.overwrites));\n }\n\n if (location.topicId && (await this.tracker.rooms.getTopics(location.roomId))?.has(location.topicId)) {\n if (userRoles.length) {\n promises.push(this.collectRoleOverwrites(location, userRoles));\n }\n promises.push(this.getOverwrites(location, { type: 'User', userId }).then(v => v.overwrites));\n }\n\n return this.resolveOverwritesHierarchy(await Promise.all(promises));\n }\n\n private handlePermissionOverwrites(ev: PermissionOverwritesUpdated | PermissionOverwrites): void {\n this.overwrites.set([getOvIdByObject(ev), ev]);\n this.emit('change');\n }\n\n private handleSpaceDeleted(ev: SpaceDeleted | SpaceLeft): void {\n const ids = this.deleteOverwritesByIdPrefix(getOvId({spaceId: ev.id}));\n this.overwritesPromises.forget(...ids);\n }\n\n private async handleRoomDeleted(ev: RoomDeleted | RoomLeft): Promise<void> {\n const room = (await this.tracker.rooms.get()).get(ev.id);\n if (room) {\n const ids = this.deleteOverwritesByIdPrefix(getOvId({spaceId: room.spaceId, roomId: room.id}));\n this.overwritesPromises.forget(...ids);\n }\n }\n\n private handleTopicDeleted(ev: TopicDeleted): void {\n const ids = this.deleteOverwritesByIdPrefix(getOvId(ev.location));\n this.overwritesPromises.forget(...ids);\n }\n\n private handleRoleDeleted(ev: RoleDeleted): void {\n const ids = this.deleteOverwritesByIdPrefix(getOvId({spaceId: ev.spaceId}, { type: 'Role', roleId: ev.id }));\n this.overwritesPromises.forget(...ids);\n }\n\n private handleSpaceMemberUpdated(ev: SpaceMemberUpdated): void {\n if (ev.userId === this.tracker.me?.id) {\n // User roles in space could potentially have changed\n this.emit('change');\n }\n }\n\n private handleRoomMemberUpdated(ev: RoomMemberUpdated): void {\n if (ev.userId === this.tracker.me?.id) {\n // User roles in room could potentially have changed\n this.emit('change');\n }\n }\n\n /**\n * @return Matched and deleted ids\n */\n private deleteOverwritesByIdPrefix(prefix: string): string[] {\n const ids: string[] = [];\n this.overwrites.items.forEach((overwrites) => {\n const id = getOvIdByObject(overwrites);\n if (id.startsWith(prefix)) {\n ids.push(id);\n this.overwrites.delete(id);\n }\n });\n return ids;\n }\n\n private async collectRoleOverwrites(\n location: ChatLocation,\n userRoles: string[],\n ): Promise<PermissionOverwritesValue> {\n const roleOverwrites = await Promise.all(userRoles.map(\n roleId => this.getOverwrites(location, { type: 'Role', roleId }),\n ));\n\n return this.resolveOverwritesFromRolesByOrder(location.spaceId, roleOverwrites);\n }\n\n private async resolveOverwritesFromRolesByOrder(\n spaceId: string,\n overwrites: PermissionOverwrites[],\n ): Promise<PermissionOverwritesValue> {\n let allows = 0, denies = 0;\n const roles = await this.tracker.spaces.getRoles(spaceId);\n const sortedOverwrites = overwrites.sort(\n (a, b) =>\n roles.get(a.target.roleId).priority - roles.get(b.target.roleId).priority\n );\n\n // Max length of bit word\n const permissionsLength = overwrites.reduce(\n (previousValue: number, currentValue: PermissionOverwrites) =>\n Math.max(\n previousValue,\n currentValue.overwrites.allow?.toString(2).length ?? 0,\n currentValue.overwrites.deny?.toString(2).length ?? 0,\n ),\n 0,\n );\n\n sortedOverwrites.forEach(overwriteEvent => {\n const overwrites = overwriteEvent.overwrites;\n const revDecDenies = overwrites.deny?.toString(2).split('').reverse().join('') ?? '';\n const revDecAllows = overwrites.allow?.toString(2).split('').reverse().join('') ?? '';\n\n for (let i = 0; i < permissionsLength; i++) {\n const deny = parseInt(revDecDenies[i] ?? '0');\n const allow = parseInt(revDecAllows[i] ?? '0');\n\n if (deny) {\n denies |= 1 << i;\n }\n\n if (allow) {\n allows |= 1 << i;\n }\n }\n });\n\n return {allow: allows, deny: denies};\n }\n\n private resolveOverwritesHierarchy(permissionOverwritesValues: PermissionOverwritesValue[]): number {\n let result = 0;\n\n for (const value of permissionOverwritesValues) {\n if (value.allow & Permissions.getByName('Root').value) {\n return this.getRootAccessValue();\n }\n\n result = (result & ~value.deny) | value.allow;\n }\n\n return result;\n }\n\n private getRootAccessValue(): number {\n let result = 0;\n\n for (const name of Permissions.getNames()) {\n result |= Permissions.getByName(name).value;\n }\n\n return result;\n }\n\n private async fetchMembersOrFail(location: ChatLocation): Promise<[SpaceMember | null, RoomMember | null]> {\n const results = await Promise.all([\n location.spaceId ? this.tracker.spaces.getMe(location.spaceId) : null,\n location.roomId ? this.tracker.rooms.getMe(location.roomId) : null,\n ]);\n\n const spaceFail = location.spaceId && ! results[0];\n const roomFail = location.roomId && ! results[1];\n\n if (spaceFail || roomFail) {\n const layer = spaceFail ? `space (${location.spaceId})` : `room (${location.roomId})`;\n throw new Error(`Attempting to calculate permissions for a ${layer} that the user does not belong to`);\n }\n\n return results;\n }\n\n private validateLocation(location: ChatLocation): void {\n if (location.topicId && ! location.roomId) {\n throw new Error('Corrupted arguments hierarchy');\n }\n }\n\n private handleSession(ev: Session): void {\n // Drop the fetch guards so permission checks recompute against fresh\n // overwrites (getOverwrites refetches and upserts on the next access),\n // and notify consumers to recompute so bound permission UI is never\n // left showing stale results after a reconnect.\n this.overwritesPromises.forgetAll();\n this.emit('change');\n }\n}","import {ChatStateTracker} from \"./ChatStateTracker\";\nimport {\n IndexedCollection,\n ObservableIndexedObjectCollection\n} from \"../IndexedObjectCollection\";\nimport {Emoticon, EmoticonDeleted, Emoticons, NewEmoticon, SpaceDeleted} from \"../types/src\";\nimport {PromiseRegistry} from \"./AsyncUtils\";\n\nconst GLOBAL_KEY = 'global';\n\nexport class EmoticonsManager {\n private list: IndexedCollection<string, ObservableIndexedObjectCollection<Emoticon>> = new IndexedCollection();\n private emoticonsPromises = new PromiseRegistry();\n \n public constructor(private tracker: ChatStateTracker) {\n this.tracker.client.on('Emoticons', ev => this.handleEmoticons(ev));\n this.tracker.client.on('NewEmoticon', ev => this.handleNewEmoticon(ev));\n this.tracker.client.on('EmoticonDeleted', ev => this.handleEmoticonDeleted(ev));\n this.tracker.client.on('SpaceDeleted', ev => this.handleSpaceDeleted(ev));\n this.tracker.client.on('Session', () => this.handleSession());\n }\n\n public async get(spaceId?: string): Promise<ObservableIndexedObjectCollection<Emoticon>> {\n const key = spaceId ?? GLOBAL_KEY;\n\n if (this.emoticonsPromises.notExist(key)) {\n this.emoticonsPromises.registerByFunction(async () => {\n const result = await this.tracker.client.send('GetEmoticons', {spaceId});\n if (result.error) {\n throw result.error;\n }\n this.handleEmoticons(result.data);\n }, key);\n }\n\n await this.emoticonsPromises.get(key);\n return this.list.get(key);\n }\n\n private handleEmoticons(event: Emoticons): void {\n const spaceId = event.location.spaceId ?? GLOBAL_KEY;\n\n if (!this.list.has(spaceId)) {\n this.list.set([spaceId, new ObservableIndexedObjectCollection<Emoticon>('id')]);\n }\n\n // handleEmoticons always carries the full list for a location, so\n // reconcile in place: a reconnect refetch drops removed emoticons and\n // adds new ones without blanking a bound (visible) collection.\n this.list.get(spaceId).reconcile(...event.emoticons);\n }\n\n private handleNewEmoticon(ev: NewEmoticon): void {\n const collection = this.list.get(ev.emoticon.spaceId ?? GLOBAL_KEY);\n collection?.set(ev.emoticon);\n }\n\n private handleEmoticonDeleted(ev: EmoticonDeleted): void {\n const collection = this.list.get(ev.spaceId ?? GLOBAL_KEY);\n collection?.delete(ev.emoticonId);\n }\n\n private handleSpaceDeleted(event: SpaceDeleted): void {\n this.list.delete(event.id);\n }\n\n private handleSession(): void {\n // Keep cached emoticon collections (they may be bound to visible\n // pickers); just drop the fetch guards so the next access refetches and\n // reconciles them in place.\n this.emoticonsPromises.forgetAll();\n }\n}","import {ChatStateTracker} from \"./ChatStateTracker\";\nimport {ObservableIndexedObjectCollection} from \"../IndexedObjectCollection\";\nimport {RoomMember, Session, SpaceMember, User} from \"../types/src\";\nimport {extractUserFromMember} from \"./functions\";\nimport {EventTarget} from \"../EventTarget\";\n\nexport class UsersManager {\n public readonly onlineStatus = new EventTarget<{ change: User }>();\n\n private readonly users: ObservableIndexedObjectCollection<User> = new ObservableIndexedObjectCollection('id');\n\n public constructor(private tracker: ChatStateTracker) {\n // RoomMemberUpdated & SpaceMemberUpdated events are not contains user object\n tracker.client.on('UserUpdated', event => this.handleUsers([event.user]));\n tracker.client.on('RoomMemberJoined', event => this.handleMembers([event.member]));\n tracker.client.on('SpaceMemberJoined', event => this.handleMembers([event.member]));\n tracker.client.on('SpaceMembers', event => this.handleMembers(event.members));\n tracker.client.on('RoomMembers', event => this.handleMembers(event.members));\n tracker.client.on('Messages', event => this.handleUsers(event.messages.map(message => message.author.user)));\n tracker.client.on('NewMessage', event => this.handleUsers([event.message.author.user]));\n tracker.client.on('Session', event => this.handleSession(event));\n }\n\n /**\n * Get all available (cached) user objects at once.\n */\n public async getAvailable(): Promise<ObservableIndexedObjectCollection<User>> {\n return this.users;\n }\n\n private handleMembers(members: (RoomMember | SpaceMember)[]): void {\n this.handleUsers(members.map(extractUserFromMember));\n }\n\n private handleSession(session: Session): void {\n // Keep the \"seen users\" cache across reconnects so bound user lists do\n // not blank out; just ensure our own user is present/updated. Stale\n // entries are refreshed as member/message collections refetch.\n this.handleUsers([session.user]);\n }\n\n private handleUsers(users: User[]): void {\n users.forEach(newUser => {\n const oldUser = this.users.get(newUser.id);\n if (oldUser && oldUser.online !== newUser.online) {\n this.onlineStatus.emit('change', newUser);\n }\n });\n\n this.users.set(...users);\n }\n}","import {ObservableIndexedObjectCollection} from \"../IndexedObjectCollection\";\nimport {\n NewRelationship,\n RelationshipDeleted,\n Relationships,\n UserRelationship,\n UserRelationshipType\n} from \"../types/src\";\nimport {PromiseRegistry} from \"./AsyncUtils\";\nimport {ChatStateTracker} from \"./ChatStateTracker\";\n\nconst getId = (refUserId: string, type: UserRelationshipType): string => `${refUserId}-${type}`;\nconst getIdFromRelationship = (relationship: UserRelationship): string => getId(relationship.refUser.id, relationship.type);\n\nexport class RelationshipsManager {\n private relationships: ObservableIndexedObjectCollection<UserRelationship> = new ObservableIndexedObjectCollection<UserRelationship>(getIdFromRelationship);\n private promises = new PromiseRegistry();\n\n public constructor(private tracker: ChatStateTracker) {\n this.tracker.client.on('Relationships', ev => this.handleRelationships(ev));\n this.tracker.client.on('NewRelationship', ev => this.handleNewRelationship(ev));\n this.tracker.client.on('RelationshipDeleted', ev => this.handleRelationshipDeleted(ev));\n this.tracker.client.on('Session', () => this.handleSession());\n }\n\n public async get(): Promise<ObservableIndexedObjectCollection<UserRelationship>> {\n if (this.promises.notExist('all')) {\n this.promises.registerByFunction(async () => {\n const result = await this.tracker.client.send('GetRelationships', {});\n if (result.error) {\n throw result.error;\n }\n }, 'all');\n }\n\n await this.promises.get('all');\n return this.relationships;\n }\n\n public async exists(refUserId: string, type: UserRelationshipType): Promise<boolean> {\n await this.get();\n return this.relationships.has(getId(refUserId, type));\n }\n\n private handleRelationships(ev: Relationships): void {\n // Full list from the server: reconcile in place so a reconnect refetch\n // updates a bound (visible) list without an intermediate empty state.\n this.relationships.reconcile(...ev.relationships);\n }\n\n private handleNewRelationship(ev: NewRelationship): void {\n if (this.promises.has('all')) {\n this.relationships.set(ev.relationship);\n }\n }\n\n private handleRelationshipDeleted(ev: RelationshipDeleted): void {\n if (this.promises.has('all')) {\n this.relationships.delete(getIdFromRelationship(ev.relationship));\n }\n }\n\n private handleSession(): void {\n // Keep the (possibly bound) collection; just drop the fetch guard so the\n // next get() refetches and reconciles it in place.\n this.promises.forgetAll();\n }\n}","import {WebSocketChatClient} from \"../WebSocketChatClient\";\r\nimport {Session, User} from \"../types/src\";\r\nimport {RoomsManager} from \"./RoomsManager\";\r\nimport {SpacesManager} from \"./SpacesManager\";\r\nimport {PermissionsManager} from \"./PermissionsManager\";\r\nimport {DeferredTask} from \"./AsyncUtils\";\r\nimport {EmoticonsManager} from \"./EmoticonsManager\";\r\nimport {UsersManager} from \"./UsersManager\";\r\nimport {RelationshipsManager} from \"./RelationshipsManager\";\r\n\r\nexport class ChatStateTracker {\r\n public readonly client: WebSocketChatClient;\r\n\r\n /**\r\n * State of your permissions.\r\n */\r\n public readonly permissions: PermissionsManager;\r\n\r\n /**\r\n * State of the rooms you are in.\r\n */\r\n public readonly rooms: RoomsManager;\r\n\r\n /**\r\n * State of the spaces you are in.\r\n */\r\n public readonly spaces: SpacesManager;\r\n\r\n /**\r\n * State of the emoticons (global and space-related).\r\n */\r\n public readonly emoticons: EmoticonsManager;\r\n\r\n /**\r\n * Users related state.\r\n */\r\n public readonly users: UsersManager;\r\n\r\n /**\r\n * State of relationships with other users.\r\n */\r\n public readonly relationships: RelationshipsManager;\r\n\r\n private _me: User = null;\r\n private readonly deferredSession = new DeferredTask();\r\n\r\n public constructor(client: WebSocketChatClient) {\r\n this.client = client;\r\n this.client.on('Session', ev => this.handleSession(ev));\r\n\r\n this.permissions = new PermissionsManager(this);\r\n this.rooms = new RoomsManager(this);\r\n this.spaces = new SpacesManager(this);\r\n this.emoticons = new EmoticonsManager(this);\r\n this.users = new UsersManager(this);\r\n this.relationships = new RelationshipsManager(this);\r\n }\r\n\r\n public get me(): User | null {\r\n return this._me;\r\n }\r\n\r\n public async getMe(): Promise<User> {\r\n await this.deferredSession.promise;\r\n return this._me;\r\n }\r\n\r\n private handleSession(ev: Session): void {\r\n this._me = ev.user;\r\n this.deferredSession.resolve();\r\n }\r\n}","import {ObservableInterface} from \"./EventTarget\";\nimport {AbstractChatClient, CommandRequest, CommandResult, CommandResponse, CommandsMap, EventsMap} from \"./AbstractChatClient\";\nimport {ChatStateTracker} from \"./state-tracker/ChatStateTracker\";\nimport {Envelope} from \"./types/src\";\n\nexport interface WebSocketClientOptions {\n url: string;\n token: string;\n connectingTimeoutMs?: number;\n awaitQueueSendDelayMs?: number;\n stateTracking?: boolean;\n queryParams?: Record<string, string>;\n /**\n * Ping/pong configuration, enabled by default.\n */\n ping?: {\n enabled?: boolean;\n /**\n * Time without activity after which a ping will be sent. Default is 10 seconds.\n */\n noActivityTimeoutMs?: number;\n /**\n * Time to wait for a pong response before considering the connection dead. Default is 2 seconds.\n */\n pongBackTimeoutMs?: number;\n },\n}\n\nenum WebSocketChatClientEvent {\n connect = 'connect',\n disconnect = 'disconnect',\n message = 'message',\n error = 'error',\n}\n\ntype WebSocketEventMap = EventsMap & {\n [WebSocketChatClientEvent.connect]: void;\n [WebSocketChatClientEvent.disconnect]: boolean;\n [WebSocketChatClientEvent.message]: Envelope;\n [WebSocketChatClientEvent.error]: Error;\n};\n\nexport class WebSocketChatClient extends AbstractChatClient<Pick<WebSocketEventMap, keyof WebSocketEventMap>> implements ObservableInterface {\n public readonly Event = WebSocketChatClientEvent;\n public readonly state?: ChatStateTracker;\n\n protected ws: WebSocket|null = null;\n protected sendQueue: Envelope[] = [];\n protected connectingTimeoutId: any;\n protected authenticated: boolean;\n protected authenticatedResolvers: [() => void, (error: Error) => void] | null = null;\n /**\n * Pending promise returned by connect(). Kept until the client is either\n * authenticated or gives up, so that an automatic reconnect settles the\n * original caller instead of stranding it on a superseded promise.\n */\n protected connectPromise: Promise<void> | null = null;\n protected pingMonitorInterval?: NodeJS.Timeout;\n protected inFlightPingTimeout: NodeJS.Timeout;\n protected lastReceivedMessageAt?: number;\n\n public constructor(private readonly options: WebSocketClientOptions) {\n super();\n if (this.options.stateTracking ?? true) {\n this.state = new ChatStateTracker(this);\n }\n\n options.ping ??= {};\n options.ping.enabled ??= true;\n options.ping.noActivityTimeoutMs ??= 15000;\n options.ping.pongBackTimeoutMs ??= 5000;\n }\n\n public async connect(): Promise<void> {\n if (this.isOpenWsState() || this.isConnectingWsState()) {\n return this.connectPromise ?? undefined;\n }\n\n // Reuse the promise of an attempt that has not settled yet (an\n // automatic reconnect), so the caller that started connecting is\n // resolved by whichever attempt eventually authenticates.\n this.connectPromise ??= new Promise<void>((...args) => this.authenticatedResolvers = args);\n\n const params = new URLSearchParams(this.options.queryParams ?? {});\n params.set('token', this.options.token);\n\n this.ws = new WebSocket(`${this.options.url}?${params}`);\n this.ws.onclose = ev => this.onClose(ev);\n this.ws.onmessage = ev => this.onMessage(ev);\n this.connectingTimeoutId = setTimeout(\n () => this.triggerConnectionTimeout(),\n this.options.connectingTimeoutMs ?? 10000\n );\n this.authenticated = false;\n\n return this.connectPromise;\n }\n\n public disconnect(): void {\n this.failPendingCommands(new Error('Client disconnected before the command was answered'));\n this.ws?.close(1000); // Normal closure\n this.ws = null;\n }\n\n public async send<CommandType extends keyof CommandsMap>(commandType: CommandType, commandData: CommandRequest<CommandType>):\n Promise<CommandResult<CommandResponse<CommandType>>> {\n const envelope = this.createEnvelope<CommandRequest<CommandType>>(commandType, commandData);\n const promise = this.createPromiseFromCommandEnvelope<CommandType>(envelope);\n\n if (this.isConnectingWsState() || !this.authenticated && this.isOpenWsState()) {\n this.sendQueue.push(envelope);\n return promise;\n }\n\n this.sendEnvelope(envelope);\n return promise;\n }\n\n public get isReady(): boolean {\n return this.isOpenWsState() && this.authenticated;\n }\n\n private sendEnvelope(envelope: Envelope): void {\n if (this.isReady) {\n this.ws.send(JSON.stringify(envelope));\n return;\n }\n\n this.handleEnvelopeSendError(\n envelope,\n new Error(`Cannot send - client is not ready (state=${this.ws?.readyState ?? '[no connection]'}; authenticated=${this.authenticated})`)\n );\n }\n\n private onMessage(event: MessageEvent): void {\n this.lastReceivedMessageAt = Date.now();\n const envelope: Envelope = JSON.parse(event.data);\n this.handleIncomingEnvelope(envelope);\n this.emit(envelope.type, envelope.data);\n this.emit(this.Event.message, envelope);\n\n // Login successfully\n if (!this.authenticated) {\n const isAuthenticated = envelope.type !== 'Bye';\n this.authenticated = isAuthenticated;\n if (isAuthenticated) {\n this.startConnectionMonitor();\n this.settleConnect();\n this.emit(this.Event.connect);\n this.sendFromQueue();\n } else {\n this.settleConnect(envelope.data);\n }\n }\n }\n\n private onClose(event: CloseEvent): void {\n this.stopConnectionMonitor();\n clearTimeout(this.connectingTimeoutId);\n const reconnect = event.code !== 1000; // Connection was closed because of error\n\n // The server can no longer answer anything that was queued or in\n // flight, so settle those promises instead of leaving them pending.\n this.failPendingCommands(new Error('Connection closed before the command was answered'));\n\n if (reconnect) {\n // Keep a pending connect() promise unsettled - the retry below is\n // expected to authenticate and will resolve it.\n void this.connect();\n } else {\n this.settleConnect(new Error('Connection closed before authentication'));\n }\n\n this.emit(this.Event.disconnect, reconnect);\n }\n\n /**\n * Resolve (or reject, when an error is given) a pending connect() promise.\n * No-op when there is nothing pending.\n */\n private settleConnect(error?: any): void {\n const resolvers = this.authenticatedResolvers;\n\n this.authenticatedResolvers = null;\n this.connectPromise = null;\n\n if (! resolvers) {\n return;\n }\n\n error ? resolvers[1](error) : resolvers[0]();\n }\n\n /**\n * Reject every command that has not been answered yet - both the ones still\n * waiting in the send queue and the ones already sent to the server.\n */\n private failPendingCommands(error: Error): void {\n const queued = this.sendQueue;\n this.sendQueue = [];\n\n for (const envelope of queued) {\n this.handleEnvelopeSendError(envelope, error);\n }\n\n this.failAwaitingResponses(error);\n }\n\n private sendFromQueue(): void {\n // Send awaiting data to server\n let lastDelay = 0;\n for (const dataIndex in this.sendQueue) {\n const envelope = this.sendQueue[dataIndex];\n setTimeout(() => this.sendEnvelope(envelope), lastDelay);\n lastDelay += this.options.awaitQueueSendDelayMs ?? 500;\n }\n this.sendQueue = [];\n clearTimeout(this.connectingTimeoutId);\n }\n\n private triggerConnectionTimeout(): void {\n this.disconnect();\n this.emit(this.Event.error, new Error('Connection timeout'));\n }\n\n private isConnectingWsState(): boolean {\n return this.ws && this.ws.readyState === this.ws.CONNECTING;\n }\n\n private isOpenWsState(): boolean {\n return this.ws && this.ws.readyState === this.ws.OPEN;\n }\n\n private startConnectionMonitor(): void {\n if (!this.options.ping!.enabled) {\n return;\n }\n\n this.lastReceivedMessageAt = Date.now();\n\n this.pingMonitorInterval = setInterval(async () => {\n if (!this.isReady || this.inFlightPingTimeout) {\n return;\n }\n\n if ((Date.now() - this.lastReceivedMessageAt) < this.options.ping!.noActivityTimeoutMs) {\n return;\n }\n\n this.inFlightPingTimeout = setTimeout(() => {\n this.inFlightPingTimeout = undefined;\n this.ws.close(3000); // Service Restart (reconnect)\n }, this.options.ping.pongBackTimeoutMs);\n\n // A rejection here means the connection dropped while the ping was\n // in flight; onClose already handles that, so just stop waiting.\n this.send('Ping', {}).catch(() => undefined).then(() => {\n clearTimeout(this.inFlightPingTimeout);\n this.inFlightPingTimeout = undefined;\n });\n }, 1000);\n }\n\n private stopConnectionMonitor(): void {\n if (this.inFlightPingTimeout) {\n clearTimeout(this.inFlightPingTimeout);\n this.inFlightPingTimeout = undefined;\n }\n if (this.pingMonitorInterval) {\n clearInterval(this.pingMonitorInterval);\n this.pingMonitorInterval = undefined;\n }\n }\n}","import {AbstractChatClient, CommandRequest, CommandResult, CommandResponse, CommandsMap, EventsMap} from \"./AbstractChatClient\";\nimport {ObservableInterface} from \"./EventTarget\";\nimport {Envelope} from \"./types/src\";\n\nexport interface WebApiChatClientOptions {\n url: string;\n token: string;\n attemptsToSend?: number;\n attemptDelayMs?: number;\n queryParams?: Record<string, string>;\n}\n\nenum WebApiChatClientEvent {\n message = 'message',\n error = 'error',\n destroy = 'destroy',\n}\n\ntype WebApiEventMap = EventsMap & {\n [WebApiChatClientEvent.message]: Envelope;\n [WebApiChatClientEvent.error]: Error;\n [WebApiChatClientEvent.destroy]: boolean;\n};\n\ninterface SendStackItem {\n data: Envelope;\n attempts: number;\n lastTimeoutId: any;\n}\n\nexport class WebApiChatClient extends AbstractChatClient<Pick<WebApiEventMap, keyof WebApiEventMap>> implements ObservableInterface {\n public readonly Event = WebApiChatClientEvent;\n\n protected sendStack: SendStackItem[] = [];\n\n public constructor(private readonly options: WebApiChatClientOptions) {\n super();\n }\n\n public async send<CommandType extends keyof CommandsMap>(commandType: CommandType, commandData: CommandRequest<CommandType>):\n Promise<CommandResult<CommandResponse<CommandType>>> {\n const envelope = this.createEnvelope(commandType, commandData);\n const item: SendStackItem = {data: envelope, attempts: 0, lastTimeoutId: null};\n this.sendStack.push(item);\n this.makeApiCall(item);\n return this.createPromiseFromCommandEnvelope(envelope);\n }\n\n public destroy(): void {\n // Cancel all awaiting requests, rejecting their promises so no caller\n // is left awaiting forever\n const pending = this.sendStack;\n this.sendStack = [];\n pending.forEach(item => {\n if (item.lastTimeoutId) {\n clearTimeout(item.lastTimeoutId);\n }\n this.handleEnvelopeSendError(item.data, new Error('Client destroyed'));\n });\n this.emit(this.Event.destroy, false);\n }\n\n protected async onMessage(item: SendStackItem, response: Response): Promise<void> {\n let envelope: Envelope;\n try {\n envelope = await response.json();\n } catch (e) {\n // Non-envelope response (e.g. a proxy error page) - failed attempt\n this.onError(item, `envelope ${item.data.ref} (HTTP ${response.status}, unparsable body)`);\n return;\n }\n\n if (!this.removeFromStack(item)) {\n return; // Destroyed in the meantime - the promise is already rejected\n }\n\n this.handleIncomingEnvelope(envelope);\n this.emit(envelope.type, envelope.data);\n this.emit(this.Event.message, envelope);\n }\n\n protected onError(item: SendStackItem, body: string): void {\n if (!this.sendStack.includes(item)) {\n return; // Destroyed in the meantime\n }\n\n if (item.attempts >= (this.options.attemptsToSend ?? 10)) {\n this.removeFromStack(item);\n this.handleEnvelopeSendError(item.data, new Error(\n `Cannot send ${body}; aborting after reaching the maximum connection errors`\n ));\n return;\n }\n\n item.lastTimeoutId = setTimeout(\n () => this.makeApiCall(item),\n this.options.attemptDelayMs ?? 3000\n );\n }\n\n protected makeApiCall(item: SendStackItem): void {\n if (!this.sendStack.includes(item)) {\n return; // Destroyed before this (re)try fired\n }\n\n item.attempts++;\n item.lastTimeoutId = null;\n const bodyJson = JSON.stringify(item.data);\n const headers: any = {\n 'Content-Type': 'application/json',\n Accept: 'application/json'\n };\n\n headers.Authorization = `Bearer ${this.options.token}`;\n\n const query = new URLSearchParams(this.options.queryParams ?? {}).toString();\n const url = query ? `${this.options.url}?${query}` : this.options.url;\n\n fetch(url, {\n headers,\n body: bodyJson,\n method: 'POST',\n })\n .then(response => this.onMessage(item, response))\n .catch(() => this.onError(item, bodyJson));\n }\n\n private removeFromStack(item: SendStackItem): boolean {\n const index = this.sendStack.indexOf(item);\n if (index === -1) {\n return false;\n }\n this.sendStack.splice(index, 1);\n return true;\n }\n}","export interface RestClientOptions {\n url?: string;\n token: string;\n}\n\nexport interface RestClientResponse<T> {\n ok: boolean;\n status: number;\n data: T;\n}\n\nexport type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';\n\nexport abstract class AbstractRestClient {\n protected abstract defaultUrl: string;\n\n public constructor(\n private readonly options: RestClientOptions,\n ) {}\n\n protected async send<ResponseT = any>(\n method: HttpMethod,\n uri: string,\n data: any = undefined,\n additionalHeaders: Record<string, string> = {},\n ): Promise<RestClientResponse<ResponseT>> {\n let url = this.getUrl(uri);\n let body = undefined;\n\n if (data) {\n if (['GET', 'DELETE'].includes(method)) {\n url += '?' + new URLSearchParams(data).toString()\n } else {\n body = JSON.stringify(data);\n }\n }\n\n const headers = {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n ...additionalHeaders,\n ...this.getAuthHeaders(),\n };\n\n const result = await fetch(url, {method, body, headers});\n\n return this.convertFetchResponse(result);\n }\n\n protected getAuthHeaders(): any {\n const headers = {} as any;\n\n if (this.options.token) {\n headers.Authorization = `Bearer ${this.options.token}`;\n }\n\n return headers;\n }\n\n protected getUrl(uri: string): string {\n return this.removeEndingSlash(this.options.url ?? this.defaultUrl) + '/' + this.removeStartingSlash(uri);\n }\n\n protected async convertFetchResponse<T>(result: Response): Promise<RestClientResponse<T>> {\n return {\n ok: result.ok,\n status: result.status,\n data: result.headers.get('content-type')?.includes('json') ? await result.json() : await result.text(),\n };\n }\n\n private removeStartingSlash(text: string): string {\n return text.replace(/^\\/+/, '');\n }\n\n private removeEndingSlash(text: string): string {\n return text.replace(/\\/+$/, '');\n }\n}","import {AbstractRestClient, RestClientResponse} from \"./AbstractRestClient\";\r\n\r\nexport interface File {\r\n id: string;\r\n url: string;\r\n name: string;\r\n mime: string;\r\n size: number;\r\n width?: number;\r\n height?: number;\r\n}\r\n\r\nexport class FilesClient extends AbstractRestClient {\r\n protected defaultUrl: string = 'https://files.devana.pl';\r\n\r\n public async uploadFile(file: globalThis.File | Blob): Promise<RestClientResponse<File>> {\r\n const name = encodeURIComponent((file as globalThis.File).name ?? '');\r\n let headers = {\r\n ...this.getAuthHeaders(),\r\n Accept: 'application/json',\r\n 'Content-Disposition': `attachment; filename=\"${name}\"`,\r\n 'Content-Length': file.size\r\n };\r\n\r\n const response = await fetch(this.getUrl('files'), {\r\n method: 'POST',\r\n body: file,\r\n headers\r\n });\r\n\r\n return this.convertFetchResponse<File>(response);\r\n }\r\n\r\n public async getFileMeta(id: string): Promise<RestClientResponse<File>> {\r\n return this.send('GET', 'files/' + id);\r\n }\r\n\r\n public async getFileMetaBulk(ids: string[]): Promise<RestClientResponse<File[]>> {\r\n const searchParams = new URLSearchParams();\r\n ids.forEach(id => searchParams.append('id[]', id));\r\n return this.send('GET', 'files?' + searchParams);\r\n }\r\n}"],"names":["root","factory","exports","module","define","amd","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","EventTarget","_classCallCheck","_defineProperty","Map","eventName","handler","addHandler","events","onceEvents","_this$events$get","_this$events$get2","index","indexOf","undefined","splice","event","callHandlers","map","_map$get","handlers","push","set","_map$get2","forEach","callback","AbstractChatClient","_EventTarget","_this","_len","arguments","length","args","Array","_key","_callSuper","concat","_inherits","type","data","ref","sentCounter","toString","envelope","_this2","Promise","_len2","_key2","awaitingResponse","has","isError","error","size","pending","from","values","clear","_i","_pending","reject","_slicedToArray","IndexedCollection","items","apply","_toConsumableArray","_createClass","_items","item","id","ids","_i2","_ids","field","valueToFind","_step","limit","Infinity","result","_iterator","_createForOfIteratorHelper","entries","s","n","done","_step$value","err","e","f","copy","IndexedObjectCollection","_this$_items","_len3","_key3","getId","_this$_items2","deleteAll","_step2","_iterator2","ObservableIndexedCollection","_IndexedCollection2","_this3","eventTarget","_len4","_key4","_superPropGet","emit","setItems","_len5","_key5","deletedItems","keys","on","once","off","ObservableIndexedObjectCollection","_IndexedObjectCollect","_this5","_this4","_this6","_len6","_key6","_len7","_key7","_this7","_this$_items3","_this8","_len8","_key8","_step3","incomingIds","Set","_iterator3","existing","DeferredTask","promise","resolve","PromiseRegistry","promises","fn","register","_this$promises","t","r","iterator","i","c","Generator","u","create","_regeneratorDefine2","p","y","G","v","a","d","bind","l","TypeError","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","_regenerator","w","m","_invoke","configurable","writable","asyncGeneratorStep","then","_asyncToGenerator","_next","_throw","_defineProperties","_toPropertyKey","_getPrototypeOf","_typeof","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","constructor","Boolean","valueOf","_setPrototypeOf","toPrimitive","String","Number","_toPrimitive","WindowState","TopicHistoryWindow","_TraversableRemoteCol","roomId","topicId","tracker","bindEvents","internalState","traverseLock","client","ev","handleNewMessage","handleMessagesRedacted","_setTraverseLock","_callee6","lock","_context6","state","LIVE","LATEST","_x2","_resetToLatest2","_callee7","force","_args7","_context7","_fetchNext2","_callee8","_context8","_fetchPrevious2","_callee9","_context9","_jumpTo2","_callee0","_context0","_x3","refTopic","refMessage","_objectSpread","topicRef","_fetchItemsAfter","_callee1","_this$getAt","afterId","_context1","getAt","send","location","after","fetchLimit","Error","message","messages","_fetchItemsAround","_callee10","_context10","around","_x4","_fetchItemsBefore","_callee11","_this$getAt2","beforeId","_context11","before","_fetchLatestItems","_callee12","_context12","_getTopic","_callee13","_context13","rooms","getTopics","_getLatestMessageId","_callee14","_yield$this$getTopic","_t2","_t3","_t4","_t5","_context14","getTopic","lastMessage","_isLatestItemLoaded","_callee15","lastMessageId","_context15","getLatestMessageId","_handleNewMessage","_callee16","originalState","_context16","includes","addItems","emitChangeWithDiff","_x5","_handleMessagesRedacted","_callee17","refTopicIds","_context17","filter","msg","resetToLatest","_x6","_ObservableIndexedObj","TraversableRemoteCollection","current","ongoing","retainRatio","lastFetchCount","oldestId","OLDEST","_resetToLatest","_callee","_args","_context","fetchLatestItems","_fetchPrevious","_callee2","firstItem","_context2","hasOldest","PAST","fetchItemsBefore","refreshFetchedState","_fetchNext","_callee3","_context3","hasLatest","fetchItemsAfter","_jumpTo","_callee4","_context4","fetchItemsAround","_x","_refreshFetchedState","_callee5","_t","_context5","isLatestItemLoaded","newItems","to","trimItemsArrayToLimit","itemChanged","highWatermark","lowWatermark","Math","floor","slice","RoomMessagesHistory","room","handleRoomUpdated","handleNewTopic","handleTopicDeleted","updateTraverseLock","defaultTopic","createHistoryWindowForTopic","_getMessagesWindow","peek","topic","historyWindows","_resync","_Array$from","_Array$from$_i","window","setTraverseLock","_handleRoomUpdated","_Array$from2","_Array$from2$_i","historyWindow","deletedTopicIds","_this2$tracker$rooms","_deleteTopicsFromRoom","refHistoryWindow","_updateMessageReference","history","mode","MessagesManager","handleSession","handleRoomJoin","handleRoomDeleted","handleRoomLeft","_getRoomHistory","deferredSession","roomHistories","_resolveLastMessage2","_result$data","getRoomHistory","roomHistory","getMessagesWindow","createHistoryForNewRoom","stateRoomIds","resync","FollowedTopicsManager","handleFollowedTopicUpdated","handleTopicFollowed","handleTopicUnfollowed","_cacheForSpace","spaceId","roomIds","spaceRegistryKey","spaces","findBy","some","followedTopics","staleRooms","followedTopicsPromises","notExist","registerByFunction","reconcileRoomsFollowedTopics","_getForRoom","applyRoomFollowedTopics","invalidateUnreadSummaries","_ackRoom","collection","followedTopic","getForRoom","isUnread","_summarize","cacheKey","targetTopicId","mentionCount","unreadTopicCount","_topic$mentionCount","summariesCache","cacheForSpace","_this$followedTopics$","topicIds","_step4","_iterator4","add","forgetAll","updateLocallyFollowedTopicOnNewMessage","_this$followedTopics$2","setFollowedTopicsArray","_this$followedTopics$3","clearRoomFollowedTopicsStructures","_handleNewTopic","_this$followedTopics$4","_step5","_iterator5","startsWith","_step6","_iterator6","roomIdsSet","_step7","_iterator7","parts","split","_updateLocallyFollowedTopicOnNewMessage","roomFollowedTopics","me","update","_member$spaceMember$r","_member$spaceMember","_member$roles","member","roleIds","mentionHandlers","mentionExists","getMe","author","user","missed","lastAckMessageId","spaceMember","roles","content","_this$followedTopics$5","reconcile","roomToTopics","_followedTopic$locati","_roomToTopics$_follow","_roomToTopics$roomId","invalidateUnreadSummariesForRooms","_followedTopic$locati2","_roomToTopics$_follow2","_this7$followedTopics","forget","RoomsManager","handleRoomJoined","handleTopicUpdated","handleRoomMemberJoined","handleRoomMemberLeft","handleRoomMembers","handleRoomMemberUpdated","handleSpaceMemberLeft","handleSpaceMemberUpdated","handleSpaceDeleted","handleUserUpdated","_getMembers","membersPromises","members","_getMe","userId","list","getMembers","find","_member$user$id","_member$user","_get","_getTopics","tryToFetchTopicIds","canFetch","idsToFetch","_this3$topics$get","topics","topicsPromises","_this3$topics$get2","_this$topics$get","_this$list","_this$members","_this$membersPromises","_this$topics","_roomIds","_this$topics$get$item","_this$topics$get2","_this$followedTopics","_deleteByTopicIds","deleteRoom","roomMembers","roomMember","_this4$members$get","_member$spaceMember$u","newMember","deleteRoomsBySpaceId","_room$defaultTopic","addJoinedRoomTopics","_this$topics$get3","addJoinedRooms","_this$topics$get4","newRoom","_this$list2","_rooms","recipients","customColor","customNick","extras","_this$members$get","_member$user$id2","_member$user2","removedRoomIds","_this$list3","newRooms","_room$recipients","_room$defaultTopic2","newTopic","messageCount","max","_resolveLastMessage","extractUserFromMember","_spaceMember","SpacesManager","handleNewRoom","handleSpaceUpdated","handleSpaceJoined","handleSpaceMemberJoined","handleSpaceMembers","handleSpaceRooms","handleRoomSummaryUpdated","handleNewRole","handleRoleDeleted","handleRoleUpdated","_getRoles","_getRooms","roomsPromises","role","_this$rooms$get","summary","roomIdToSpaceId","name","description","_handleRoomDeleted","_this$rooms$get2","space","spaceChanged","systemRoom","defaultRooms","_this$rooms$get$items","_this$rooms$get3","_this$roomIdToSpaceId","addJoinedSpaces","_this$roles","_this$rooms$get4","summaries","_handleRoomSummaryUpdated","summariesPromise","oldSummary","newSummary","_this$roles$get","oldRole","newRole","rolesToUpdate","priority","allRoles","updatedRole","increased","decreased","changedRoles","reorderRolesOnPriorityUpdate","stateSpaceIds","removedSpaceIds","_this$roles$get2","Layer","PermissionDefinition","Permissions","permissionName","layer","getByName","maxLayer","Root","Room","CreateSpaces","Global","ManageSpace","Space","ManageRoles","CreateTopics","ManageTopic","Topic","ManageMemberProfiles","ManageMemberRoles","CreateMessages","ManagePermissions","CreateRooms","ManageRoom","CreateEmoticons","ManageEmoticons","ManageBans","Kick","ChangeOwnNick","ChangeOwnColor","RedactMessages","getOvId","target","roleId","join","getOvIdByObject","overwrites","PermissionsManager","handlePermissionOverwrites","_getOverwrites","validateLocation","overwritesPromises","_check","permissionNames","ownedPermissions","missing","calculatePermissions","ok","hasAll","hasAny","_calculatePermissions","_location$spaceId","_spaceMember$roles","_roomMember$roles","_yield$this$tracker$s","_yield$this$tracker$r","_yield$this$fetchMemb","_yield$this$fetchMemb2","userRoles","filterLocation","_filterLocation","_t6","_t7","_t8","_t9","_t0","fetchMembersOrFail","getOverwrites","collectRoleOverwrites","all","resolveOverwritesHierarchy","_this$overwritesPromi","deleteOverwritesByIdPrefix","_this$overwritesPromi2","_this$overwritesPromi3","_this$overwritesPromi4","_this$tracker$me","_this$tracker$me2","prefix","_collectRoleOverwrites","roleOverwrites","resolveOverwritesFromRolesByOrder","_x7","_x8","_resolveOverwritesFromRolesByOrder","allows","denies","sortedOverwrites","permissionsLength","getRoles","sort","b","reduce","previousValue","currentValue","_currentValue$overwri","_currentValue$overwri2","_currentValue$overwri3","_currentValue$overwri4","allow","deny","overwriteEvent","_overwrites$deny$toSt","_overwrites$deny","_overwrites$allow$toS","_overwrites$allow","revDecDenies","reverse","revDecAllows","_revDecDenies$i","_revDecAllows$i","parseInt","_x9","_x0","permissionOverwritesValues","getRootAccessValue","getNames","_fetchMembersOrFail","results","spaceFail","roomFail","_x1","GLOBAL_KEY","EmoticonsManager","handleEmoticons","handleNewEmoticon","handleEmoticonDeleted","emoticonsPromises","_event$location$space","_this$list$get","emoticons","_ev$emoticon$spaceId","emoticon","_ev$spaceId","emoticonId","UsersManager","handleUsers","handleMembers","users","_getAvailable","session","_this$users","newUser","oldUser","online","onlineStatus","refUserId","getIdFromRelationship","relationship","refUser","RelationshipsManager","handleRelationships","handleNewRelationship","handleRelationshipDeleted","relationships","_exists","_this$relationships","ChatStateTracker","permissions","_me","WebSocketChatClientEvent","WebSocketChatClient","_AbstractChatClient","options","_this$options$stateTr","_options$ping","_options$ping2","_options$ping2$enable","_options$ping3","_options$ping3$noActi","_options$ping4","_options$ping4$pongBa","stateTracking","ping","enabled","noActivityTimeoutMs","pongBackTimeoutMs","_connect","_this$connectPromise2","_this$options$queryPa","_this$options$connect","_this$connectPromise","params","isOpenWsState","isConnectingWsState","connectPromise","authenticatedResolvers","URLSearchParams","queryParams","token","ws","WebSocket","url","onclose","onClose","onmessage","onMessage","connectingTimeoutId","setTimeout","triggerConnectionTimeout","connectingTimeoutMs","authenticated","_this$ws","failPendingCommands","close","_send","commandType","commandData","createEnvelope","createPromiseFromCommandEnvelope","sendQueue","sendEnvelope","_this$ws$readyState","_this$ws2","isReady","JSON","stringify","handleEnvelopeSendError","readyState","lastReceivedMessageAt","Date","now","parse","handleIncomingEnvelope","Event","isAuthenticated","startConnectionMonitor","settleConnect","connect","sendFromQueue","stopConnectionMonitor","clearTimeout","reconnect","code","disconnect","resolvers","queued","failAwaitingResponses","lastDelay","_loop","_this3$options$awaitQ","dataIndex","awaitQueueSendDelayMs","CONNECTING","OPEN","pingMonitorInterval","setInterval","inFlightPingTimeout","clearInterval","WebApiChatClientEvent","WebApiChatClient","attempts","lastTimeoutId","sendStack","makeApiCall","destroy","_onMessage","response","json","onError","status","removeFromStack","body","_this$options$attempt","_this$options$attempt2","attemptsToSend","attemptDelayMs","bodyJson","headers","Accept","Authorization","query","fetch","method","ownKeys","getOwnPropertySymbols","getOwnPropertyDescriptor","getOwnPropertyDescriptors","defineProperties","AbstractRestClient","uri","additionalHeaders","getUrl","getAuthHeaders","convertFetchResponse","_this$options$url","removeEndingSlash","defaultUrl","removeStartingSlash","_convertFetchResponse","_result$headers$get","text","replace","FilesClient","_AbstractRestClient","_uploadFile","file","_name","encodeURIComponent","_getFileMeta","_getFileMetaBulk","searchParams","append"],"ignoreList":[],"sourceRoot":""}