summaryrefslogtreecommitdiff
path: root/priv/static/static/js/app.8d2126d35dba9482db51.js.map
diff options
context:
space:
mode:
Diffstat (limited to 'priv/static/static/js/app.8d2126d35dba9482db51.js.map')
-rw-r--r--priv/static/static/js/app.8d2126d35dba9482db51.js.map1
1 files changed, 1 insertions, 0 deletions
diff --git a/priv/static/static/js/app.8d2126d35dba9482db51.js.map b/priv/static/static/js/app.8d2126d35dba9482db51.js.map
new file mode 100644
index 000000000..3870add70
--- /dev/null
+++ b/priv/static/static/js/app.8d2126d35dba9482db51.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/js/app.8d2126d35dba9482db51.js","mappings":"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,CACT,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,eAAgB,CACf,MACA,MAED,YAAa,CACZ,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,aAAc,CACb,MACA,MAED,aAAc,CACb,MACA,MAED,aAAc,CACb,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,eAAgB,CACf,MACA,MAED,aAAc,CACb,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,gBAAiB,CAChB,MACA,KAED,eAAgB,CACf,KACA,MAED,eAAgB,CACf,KACA,MAED,eAAgB,CACf,MACA,IAED,eAAgB,CACf,MACA,MAED,YAAa,CACZ,MACA,MAED,gBAAiB,CAChB,MACA,MAED,eAAgB,CACf,MACA,MAED,eAAgB,CACf,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,KAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,eAAgB,CACf,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,KAED,eAAgB,CACf,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,KAED,YAAa,CACZ,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,KAED,YAAa,CACZ,MACA,MAED,eAAgB,CACf,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,KAED,YAAa,CACZ,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,KAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,oBAAqB,CACpB,MACA,MAED,iBAAkB,CACjB,MACA,MAED,oBAAqB,CACpB,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,eAAgB,CACf,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,KAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,IACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,KAED,YAAa,CACZ,MACA,MAED,eAAgB,CACf,MACA,MAED,aAAc,CACb,MACA,MAED,kBAAmB,CAClB,MACA,MAED,YAAa,CACZ,MACA,KAED,iBAAkB,CACjB,MACA,MAED,oBAAqB,CACpB,MACA,MAED,YAAa,CACZ,MACA,OAGF,SAASC,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAEJ,EAAKE,GAC9B,OAAOG,QAAQC,UAAUC,MAAK,KAC7B,IAAIC,EAAI,IAAIC,MAAM,uBAAyBP,EAAM,KAEjD,MADAM,EAAEE,KAAO,mBACHF,CAAC,IAIT,IAAIG,EAAMX,EAAIE,GAAMU,EAAKD,EAAI,GAC7B,OAAOR,EAAoBK,EAAEG,EAAI,IAAIJ,MAAK,IAClCJ,EAAoBU,EAAED,EAAI,KAEnC,CACAX,EAAoBa,KAAO,IAAOC,OAAOD,KAAKd,GAC9CC,EAAoBW,GAAK,KACzBI,EAAOC,QAAUhB,C,8qBC1kBjB,iBAAeiB,GACb,IAAMC,EAAaC,EAAaF,EAAKG,OAC/BC,EAAaJ,EAAKK,OAASC,EAAaN,EAAKK,OACnD,OAAO,SAACE,EAAOC,GACb,IAAMC,EAAYF,EAAM,GACxB,MAAkB,MAAdE,GAAqBT,EAAKG,MACrBF,EAAWM,EAAOC,GAET,MAAdC,GAAqBL,EAChBA,EAAWG,GAEb,EACT,CACD,EAEM,IAAML,EAAe,SAAAQ,GAAM,OAAI,SAACH,EAAOC,GAC5C,IAAMG,EAAWJ,EAAMK,cAAcC,OAAO,GAC5C,OAAOH,EACJ5B,KAAI,SAAAqB,GAAK,cAAUA,GAAUK,EAAqBL,GAAM,IACxDW,QAAO,SAACX,GAAK,OAAMA,EAAMY,MAAMC,OAAOb,EAAMc,UAAWH,QAAO,SAAAI,GAAE,OAAIA,EAAGN,cAAcO,MAAMR,EAAS,IAAES,MAAM,IAC5GtC,KAAI,SAAAuC,GACH,IAAIC,EAAQ,EAeZ,OAZAA,GAASC,KAAKC,IAAG,MAARD,MAAI,OAAQF,EAAEN,MAAMjC,KAAI,SAAA2C,GAAI,OAAIA,EAAKb,gBAAkBD,EAAW,IAAM,CAAC,KAAC,QAAE,KAGrFW,GAASD,EAAEK,SAAW,IAAM,EAG5BJ,GAASC,KAAKC,IAAG,MAARD,MAAI,OAAQF,EAAEN,MAAMjC,KAAI,SAAAoC,GAAE,OAAIA,EAAGN,cAAce,WAAWhB,GAAY,GAAK,CAAC,KAAC,QAAE,KAGxFW,GAASD,EAAEO,YAAYR,OAEvBC,EAAEC,MAAQA,EACHD,CACT,IACCQ,MAAK,SAACC,EAAGC,GAER,IAAMC,EAAiBF,EAAEF,YAAcG,EAAEH,YAAc,IAAO,GAE9D,OAAOG,EAAET,MAAQQ,EAAER,MAAQU,CAC7B,GACJ,CAAC,EAEY1B,EAAe,SAAH,GAA4B,IAAtB2B,EAAQ,EAARA,SAAUC,EAAK,EAALA,MAGnCC,EAAc,GACdC,EAAgB,GAChBC,EAAU,KACVC,EAAmB,KAGjBC,EAAqB,SAACC,GAE1B,OADAF,GAAoBA,IACb,IAAInD,SAAQ,SAACC,EAASqD,GAC3BJ,EAAUK,YAAW,YAJN,SAACF,GAAK,OAAKP,EAAS,cAAe,CAAEO,MAAAA,GAAQ,EAK1DG,CAAWH,GAAOnD,KAAKD,GAAQ,MAAOqD,EACxC,GAAG,KACHH,EAAmB,WACjBM,aAAaP,GACbjD,EAAQ,GACV,CACF,GACF,EAEA,0CAAO,WAAMmB,GAAK,yEAC8B,GAAxCI,EAAWJ,EAAMK,cAAcC,OAAO,GACxCuB,IAAkBzB,EAAQ,yCAASwB,GAAW,OAOlD,GALAA,EAAc,GACdC,EAAgBzB,EAKXA,EAASkC,SAAS,KAAM,CAAF,+BACnBN,EAAmB5B,GAAS,OAoCF,OAjC5BmC,EAAiBZ,EAAMa,MAAMA,MAAMjC,QACvC,SAAAkC,GAAI,OACFA,EAAKC,YAAYrC,cAAce,WAAWhB,IAC1CqC,EAAKvB,KAAKb,cAAce,WAAWhB,EAAS,IAC9CuC,MAAM,EAAG,IAAIrB,MAAK,SAACC,EAAGC,GACtB,IAAIoB,EAAS,EACTC,EAAS,EAgBb,OAbAD,GAAUrB,EAAEmB,YAAYrC,cAAce,WAAWhB,GAAY,EAAI,EACjEyC,GAAUrB,EAAEkB,YAAYrC,cAAce,WAAWhB,GAAY,EAAI,EAGjEwC,GAAUrB,EAAEL,KAAKb,cAAce,WAAWhB,GAAY,EAAI,EAGzB,KAFjCyC,GAAUrB,EAAEN,KAAKb,cAAce,WAAWhB,GAAY,EAAI,GAEnCwC,IAGIrB,EAAEL,KAAOM,EAAEN,KAAO,GAAK,IACjBK,EAAEmB,YAAclB,EAAEkB,YAAc,GAAK,EAIxE,IAAGnE,KAAI,SAACkE,GAAI,MAAM,CAChBA,KAAAA,EACApB,YAAaoB,EAAKK,eAClBC,WAAYN,EAAKvB,KACjBC,SAAUsB,EAAKO,2BACfC,YAAa,IAAMR,EAAKC,YAAc,IACvC,IAGDd,EAAcW,GAAkB,GAAE,kBAC3BX,GAAW,4CACnB,mDAjDD,EAkDF,C,+oCC5HO,IAAMsB,EAAa,SAACC,GACzB,IAAMC,EAAS,mCAAmCC,KAAKF,GACvD,OAAOC,IAAWA,EAAO,IAAMA,EAAO,GACxC,EASaE,EAAW,SAACH,EAAK5C,GAC5B,IAAMgD,EAAWJ,EACdK,UAAU,EAAGL,EAAItC,OAAS,GAC1B4C,QAAQ,IAAIC,OAAO,IAAMR,EAAWC,IAAO,IAC3CM,QAAQ,OAAQ,IAChBE,OACGC,EAAQC,MAAMC,KAAKP,EAASQ,SAAS,4CACxCxF,KAAI,+BAAmB,OAAZ,KAAkB,CAAb,KAAO,KAAkB,IACzCA,KAAI,YAAY,mBAAVuC,EAAC,KAAEkD,EAAC,KACT,OAAKA,EACE,CAAClD,EAAGkD,EAAER,UAAU,EAAGQ,EAAEnD,OAAS,IADtB,CAACC,GAAG,EAErB,IASF,OAAOxB,OAAO2E,YAAYL,EAAMrD,OAAOA,GARjB,SAAH,GAAe,mBAAVO,EAAC,KAAEkD,EAAC,KACpBE,EAAUpD,EAAET,cAClB,MAAgB,UAAZ6D,IACY,UAAZA,GACW,cAANF,GAA2B,aAANA,EAGhC,GAEF,EAaaG,EAAsB,SAACC,EAAMjE,EAAQkE,GAGhD,IAFA,IAAMC,EAAS,GACXC,EAAa,GACRC,EAAI,EAAGA,EAAIJ,EAAKvD,OAAQ2D,IAAK,CACpC,IAAMC,EAAOL,EAAKI,GAClB,GAAa,MAATC,EAAc,CAChB,IAE0B,EAFpBC,EAAON,EAAKzB,MAAM6B,EAAI,GACxBG,GAAQ,EAAK,IACGxE,GAAM,IAA1B,IAAK,EAAL,qBAA4B,KAAjBP,EAAK,QACd,GAAI8E,EAAK/B,MAAM,EAAG/C,EAAMgF,UAAU/D,OAAS,KAAQjB,EAAMgF,UAAY,IAAM,CACzED,EAAQ/E,EACR,KACF,CACF,CAAC,+BACG+E,GACFL,EAAOO,KAAKN,GACZA,EAAa,GACbD,EAAOO,KAAKR,EAAUM,IACtBH,GAAKG,EAAMC,UAAU/D,OAAS,GAE9B0D,GAAcE,CAElB,MACEF,GAAcE,CAElB,CAEA,OADIF,GAAYD,EAAOO,KAAKN,GACrBD,CACT,E,ugCC5DO,I,oCClBHQ,MAAM,e,uBCiCV,QAjCoB,CAClB5D,KAAM,cACN6D,MAAO,CACLC,IAAK,CACHC,UAAU,EACVC,KAAMC,QAERC,QAAS,CACPH,UAAU,EACVC,KAAMC,QAERhC,IAAK,CACH8B,UAAU,EACVC,KAAMC,OACNE,QAAS,KAGbC,QAAS,CACPC,QAAO,WACL,ICN4BP,EAE1B5B,EDIID,EAAMqC,KAAKrC,MCNW6B,EDMcQ,KAAKR,OCJ7C5B,EADQ,mBACOC,KAAK2B,KAInB5B,EAAO,IDCV,GAAID,EAAK,CACP,IAAMsC,EAAOD,KAAKE,gBAAgBvC,GAClCqC,KAAKG,QAAQd,KAAKY,EACpB,MACEG,OAAOC,KAAKL,KAAKR,IAAK,SAE1B,EACAU,gBAAe,SAAEvC,GACf,MAAO,QAAP,OAAeA,EACjB,IEtBJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,wCHNzD2C,EAAAA,EAAAA,IAYO,OAZPC,EAYO,EARLC,EAAAA,EAAAA,GAME,KALCC,KAAMC,EAAAA,IACPpB,MAAM,WACNqB,OAAO,SACNZ,QAAK,wCAAUW,EAAAA,SAAAA,EAAAA,QAAAA,MAAAA,EAAAA,UAAO,iBACvBE,UAAQF,EAAAA,S,gCIkBd,SACEhF,KAAM,cACNmF,WAAY,CACVC,aAAAA,EAAAA,EACAC,YAAAA,GAEFxB,MAAO,CAELyB,KAAM,CACJvB,UAAU,EACVC,KAAMC,QAERsB,WAAY,CACVxB,UAAU,EACVI,QAAS,iBAAM,EAAE,GAGnBzF,MAAO,CACLqF,UAAU,EACVC,KAAMrB,OAGR6C,YAAa,CACXzB,UAAU,EACVC,KAAMyB,QACNtB,SAAS,GAGXuB,UAAW,CACT3B,UAAU,EACVC,KAAMyB,QACNtB,SAAS,IAIbwB,OAAM,WAAI,WAESL,EAASM,EAAkBtB,KAAKgB,KAAMhB,KAAKoB,WAApDG,QACJC,EAAkB,KAElBC,EAAc,GAEZC,EAAW,GACXC,EAAkB,GAClBC,EAAoB,GAEpBC,EAAc,GAEhBC,EAAe,EACfC,EAAY,EA8HZC,GAAyB,EAmDvBC,ECxOuB,WA6C/B,IA7C8C,IAAdjB,EAAO,UAAH,6CAAG,GAGjCkB,EAAgB,IAAIC,IAAI,CAC5B,OAAQ,OAAQ,KAAM,MAAO,QAAS,KAAM,MAAO,QACnD,SAAU,OAAQ,OAAQ,QAAS,SAAU,QAAS,QAIlDrD,EAAS,GACTsD,EAAS,CAAC,CAAC,GAAItD,IACjBC,EAAa,GACbsD,EAAY,KAEVC,EAAmB,WACvB,OAAOF,EAAOA,EAAO/G,OAAS,GAAG,EACnC,EAEMkH,EAAY,WACG,KAAfxD,IACJuD,IAAmBjD,KAAKN,GACxBA,EAAa,GACf,EAEMyD,EAAoB,SAAC7E,GACzB2E,IAAmBjD,KAAK,CAAC1B,GAC3B,EAEM8E,EAAa,SAAC9E,GAClB,IAAM+E,EAASJ,IACTK,EAAW,CAAC,IAAShF,GAAM,IACjCyE,EAAO/C,KAAKsD,GACZD,EAAOrD,KAAKsD,EACd,EAEMC,EAAc,SAACjF,GACnB,IAAMkF,EAAaT,EAAOA,EAAO/G,OAAS,GACtCqC,EAAW0E,EAAOA,EAAO/G,OAAS,GAAG,MAAQqC,EAAWC,IAC1DkF,EAAWxD,KAAK1B,GAChByE,EAAOU,OAEPR,IAAmBjD,KAAK1B,EAE5B,EAESqB,EAAI,EAAGA,EAAIgC,EAAK3F,OAAQ2D,IAAK,CACpC,IAAMC,EAAO+B,EAAKhC,GAClB,GAAa,MAATC,GAA8B,OAAdoD,EAClBE,IACAF,EAAYpD,OACP,GAAa,MAATA,GAA8B,OAAdoD,EACzBA,GAAapD,OACR,GAAa,MAATA,GAA8B,OAAdoD,EAAoB,CAE7C,IAAMU,EADNV,GAAapD,EAEboD,EAAY,KACZ,IAAMW,EAAUtF,EAAWqF,GACR,MAAfA,EAAQ,GACVH,EAAYG,GACHb,EAAce,IAAID,IAA4C,MAAhCD,EAAQA,EAAQ1H,OAAS,GAEhEmH,EAAkBO,GAElBN,EAAWM,EAEf,MACEhE,GAAcE,CAElB,CAMA,OALIoD,IACFtD,GAAcsD,GAGhBE,IACOzD,CACT,CD6JkBoE,CAAkBlC,GAAMjI,KA3IlB,SAAdoK,EAAeC,EAAMC,EAAOC,EAAOC,GAEvC,GAAoB,iBAATH,EAAmB,CAC5B,IAAMI,EAA4B,KAAhBJ,EAAKjF,OAIvB,OAHIiF,EAAKtG,SAAS,QAChB0E,EAAkB,MAEhBgC,GAGF/B,EAAc2B,EAENC,IAAUC,EAAMjI,OAAS,GAA2B,OAApBmG,EAA4B4B,EAAKjF,OAASiF,IAGpF5B,EAAkB,KACd4B,EAAKtG,SAAS,OAChBsG,EAAO,CAAC,GAAIzE,EACVyE,EACA,EAAKhJ,OACL,YAAwB,IAArBgF,EAAS,EAATA,UAAWI,EAAG,EAAHA,IACZ,OAAO,aAAP,MACQ,YAAW,IACZA,EAAG,iBACGJ,EAAS,oBACXA,EAAS,WAEtB,MAGGgE,EACT,CAGA,GAAI/E,MAAMoF,QAAQL,GAAO,CACvB,MAAmCA,EAAI,eAAhCM,EAAM,KAAEC,EAAQ,KAAEC,EAAM,KACzBC,EAAMnG,EAAWgG,GACjBI,EAAYhG,EAAS4F,GAAQ,kBAAM,CAAI,IACvCtF,EAAQN,EAAS4F,GAMjBK,EALyC,OAApBvC,GASnBmC,GAAmC,iBAAhBA,EAAS,IAAmBA,EAAS,GAAGvI,MAAM,OAE/D,GADAqG,EAEV,OAAQoC,GACN,IAAK,KACHrC,EAAkB,KAClB,MACF,IAAK,MACH,MAAO,CAAC,GAAI,CAACuC,GA5FApG,EA4FiC+F,GA3F7C,qBACD5F,EAASH,GAAI,OACX,QAAK,QAyFiD,IAC1D,IAAK,IACH,IAAK,EAAKuD,YAAa,MACvB,GAAI4C,EAAS,OAAUA,EAAS,MAAOhH,SAAS,WAE9C,OAhFY,SAACsB,EAAOuF,GAC5B,IAAMK,EAAWC,EAAY7F,EAAOuF,EAAU7B,KAU9C,OATAkC,EAASE,UAAY,EAAKjD,WAAWkD,MAAK,SAAApI,GAAC,OAAIA,EAAEqI,wBAA0BJ,EAASxE,GAAG,IACvFmC,EAAgBtC,KAAK2E,GACG,OAApBxC,IACFA,EAAkB,IAEpBA,EAAgBnC,KAAK2E,GACjBxC,EAAgBnG,OAASgJ,EAAAA,GAC3BzC,EAAkBvC,KAAK2E,GAEM,IAA3BxC,EAAgBnG,QACX,aAAP,SAAgCmG,GAAe,MAExC,EAEX,CAgEiB8C,CAAclG,EAAOuF,GAE5BnC,EAAkB,KAClB,MAEJ,IAAK,OACH,GAAI,EAAKN,aAAe4C,EAAS,OAAUA,EAAS,MAAOhH,SAAS,UAClE,MAAO,CAAC,GAAI6G,EAAS5K,IAAIoK,GAAc,IAI7C,YAAiBoB,IAAbZ,EACK,CACL,GACA,CACEI,EACA,CAACL,EAAQC,EAAS5K,IAAIoK,GAAcS,IAEtC,IAGK,CAAC,GAAI,CAACG,EAAqBX,GAAO,GAE7C,CAxHkB,IAACzF,CAyHrB,IAuDM6G,GAAQ,OAAIvC,GAAOwC,UAAU1L,KAnDR,SAArB2L,EAAsBtB,EAAMC,EAAOC,EAAOC,GAG5C,IArMR,EAoMM,GAAoB,iBAATH,EAET,MADkC,KAAhBA,EAAKjF,OACDiF,GACjBpB,IAAwBA,GAAyB,GAC/C,IAASoB,IACX,GAAI/E,MAAMoF,QAAQL,GAAO,CAE9B,cAA2BA,EAAI,GAAxBM,EAAM,KAAEC,EAAQ,KACjBE,EAAiB,KAAXH,EAAgB,GAAKhG,EAAWgG,GAC5C,OAAQG,GACN,IAAK,IACH,IAAK,EAAK3C,YAAa,MACvB,IAAM4C,EAAYhG,EAAS4F,GAAQ,kBAAM,CAAI,IACvCtF,EAAQN,EAAS4F,GAAQ,kBAAM,CAAI,IAEzC,GACGI,EAAS,OAAUA,EAAS,MAAOhH,SAAS,YACxB,QAAlBgH,EAAUa,IAEb,OA3IY,SAACvG,EAAOuF,EAAU3B,GACtC,MAA+BiC,EAAY7F,EAAOuF,EAAU5B,KAA1CiC,GAAL,EAALX,OAAkB,aAC1BxB,EAAYxC,KAAK2E,GACZhC,GACHN,EAASrC,KAAK2E,GAEhB,IAAQxE,EAAsBwE,EAAtBxE,IAAK7B,EAAiBqG,EAAjBrG,IAAKiC,EAAYoE,EAAZpE,QAClB,OAAO,WAAP,IAAyBJ,EAAG,IAAO7B,EAAG,QAAWiC,GAAO,KAC1D,CAmIiBgF,CAAcxG,EAAOuF,EAAU3B,GAEtC5D,EAAMuC,OAAS,SACf,IAAMkE,GAAc,OAAIlB,GAAUc,UAAU1L,IAAI2L,GAAoBD,UAEpE,OAAO,YAAOrG,EAAK,CACfyG,IAIR,IAAK,GACH,OAAO,OAAIlB,GAAUc,UAAU1L,IAAI2L,GAAoBD,UAI3D,QAAiBF,IAAbZ,EAAwB,CAC1B,IAAMkB,EAAcxG,MAAMoF,QAAQE,IAC9B,OAAIA,GAAUc,UAAU1L,IAAI2L,GAAoBD,UAChDd,EACJ,OAAO,UAAS7F,EAAS4F,GA1OnC,qBA2OcmB,IA3Od,oEA2OcA,EAAW,2BAAXA,EAAW,GAEjB,CACE,OAAO,oBAEX,CACA,OAAOzB,CACT,IAG2DqB,UAIrD7G,GAAS,gBAAH,MAAe,eAAa,CACpC4G,IAGEM,EAAQ,CACZpD,SAAAA,EACAC,gBAAAA,EACAE,YAAAA,EACAD,kBAAAA,GAMF,OAFA5B,KAAK+E,MAAM,aAAcD,GAElBlH,CACT,GAGF,IAAMqG,EAAc,SAAC7F,EAAOuF,EAAUN,GACpC,IAOM2B,EAAcrB,EAAS5K,KAPX,SAAZkM,EAAa7B,GACjB,MAAoB,iBAATA,EACFA,EAEAA,EAAK,GAAGrK,IAAIkM,GAAWC,KAAK,GAEvC,IAC4CA,KAAK,IACjD,MAAO,CACL7B,MAAAA,EACA7D,IAAKpB,EAAMqC,KACX9C,IAAKS,EAAM,YACXwB,QAAS,IAAY+D,GAAUuB,KAAK,IACpCF,YAAAA,EAEJ,EAUa1D,EAAoB,SAACN,EAAMI,GACtC,IAAM+D,EAAkB,IAAIhD,IAAI,CAAC,IAAK,QAEhCiD,EL9R0B,WAAe,IA4Bf,EA5BCpE,EAAO,UAAH,6CAAG,GAGlCkB,EAAgB,IAAIC,IAAI,CAC5B,OAAQ,OAAQ,KAAM,MAAO,QAAS,KAAM,MAAO,QACnD,SAAU,OAAQ,OAAQ,QAAS,SAAU,QAAS,QAIlDkD,EAAgB,IAAIlD,IAAI,CAC5B,UAAW,UAAW,QAAS,aAAc,UAAW,SAAU,KAClE,MAAO,KAAM,KAAM,WAAY,aAAc,SAAU,SAAU,OACjE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,SAAU,SAAU,KAAM,KAAM,OACpE,MAAO,KAAM,IAAK,MAAO,UAAW,QAAS,OAKzCmD,EAAoB,IAAInD,IAAI,CAAC,OAE7BoD,EAAqB,IAAIpD,IAAI,GAAD,eAC7BkD,EAAcG,WAAQ,OACtBF,EAAkBE,YAIjBC,EAAmB,IAAItD,IAAIoD,GACjC,IACmBrD,GAAa,IAAhC,IAAK,EAAL,qBAAkC,KAAvBwD,EAAI,QACbD,EAAgB,OAAQC,EAC1B,CAEA,+BAyCA,IAxCA,IAAMC,EAAc,IAAIxD,IAAI,GAAD,eACtBsD,EAAiBD,WAAQ,OACzBtD,EAAcsD,YAGb1G,EAAS,GACT8G,EAAQ,GACV7G,EAAa,GACbsD,EAAY,KAEVwD,EAAQ,WACR9G,EAAWZ,OAAO9C,OAAS,EAC7ByD,EAAOO,KAAK,CAAEuG,MAAO,GAAF,OAAMA,GAAQhH,KAAMG,IAEvCD,EAAOO,KAAKN,GAEdA,EAAa,EACf,EAEM+G,EAAW,SAACnI,GAChBkI,IACA/G,EAAOO,KAAK1B,EACd,EAEM8E,EAAa,SAAC9E,GAClBkI,IACA/G,EAAOO,KAAK1B,GACZiI,EAAMG,QAAQrI,EAAWC,GAC3B,EAEMiF,EAAc,SAACjF,GACfiI,EAAM,KAAOlI,EAAWC,IAC1BkI,IACA/G,EAAOO,KAAK1B,GACZiI,EAAMI,SAENjH,GAAcpB,CAElB,EAESqB,EAAI,EAAGA,EAAIgC,EAAK3F,OAAQ2D,IAAK,CACpC,IAAMC,EAAO+B,EAAKhC,GAClB,GAAa,MAATC,GAA8B,OAAdoD,EAClBA,EAAYpD,OACP,GAAa,MAATA,GAA8B,OAAdoD,EACzBA,GAAapD,OACR,GAAa,MAATA,GAA8B,OAAdoD,EAAoB,CAE7C,IAAMU,EADNV,GAAapD,EAEboD,EAAY,KACZ,IAAMW,EAAUtF,EAAWqF,GACvB4C,EAAY1C,IAAID,GACdsC,EAAkBrC,IAAID,GACxB8C,EAAS/C,GACA0C,EAAiBxC,IAAID,GACX,MAAfD,EAAQ,GACVH,EAAYG,GAC6B,MAAhCA,EAAQA,EAAQ1H,OAAS,GAElCyK,EAAS/C,GAETN,EAAWM,GAGbhE,GAAcgE,EAGhBhE,GAAcgE,CAElB,KAAoB,OAAT9D,EACT6G,EAAS7G,GAETF,GAAcE,CAElB,CAOA,OANIoD,IACFtD,GAAcsD,GAGhBwD,IAEO/G,CACT,CK2KgBmH,CAAmBjF,GA2BjC,MAAO,CAAEO,QA1BO6D,EAAMX,UAAU1L,KAAI,SAACqK,EAAMC,EAAOC,GAChD,IAAKF,EAAKxE,KAAM,OAAOwE,EACvB,IAAM8C,EAAS9C,EAAKxE,KAGpB,GAEEwC,GAEEgC,EAAKwC,MAAMO,OAAM,SAAAC,GAAC,OAAIjB,EAAgBlC,IAAImD,EAAE,MAE3CF,EAAOpJ,SAAS,SAAWoJ,EAAOpJ,SAAS,SAC9C,CACA,IAAMuJ,EAAgBH,EAAOjI,QAAQ,aAAc,IAChDA,QAAQ,SAAU,IAClBE,OACH,GAAIkI,EAAczK,WAAW,QAC3B,MAAO,2BAAP,OAAkCsK,EAAM,WACnC,GAAIG,EAAczK,WAAW,QAClC,MAAO,0BAAP,OAAiCsK,EAAM,UAE3C,CAEA,OAAOA,CACT,IAAGzB,UAAUS,KAAK,IAGpB,C,2TEvUA,IAAMoB,EAAkB,SAACC,GAAK,OAAKA,EAAMC,WAAU,SAAAC,GAAC,OAAIA,EAAElH,KAAK,GAAC,EAEhE,SACE7D,KAAM,cACN6D,MAAO,CACLmH,kBAAmB,CACjBjH,UAAU,EACVC,KAAMyB,QACNtB,SAAS,GAEX8G,SAAU,CACRlH,UAAU,EACVC,KAAMkH,SACN/G,aAAS0E,GAEXsC,UAAW,CACTpH,UAAU,EACVC,KAAMC,OACNE,aAAS0E,GAEXuC,eAAgB,CACdrH,UAAU,EACVC,KAAMyB,QACNtB,SAAS,GAEXkH,WAAY,CACVtH,UAAU,EACVC,KAAMyB,QACNtB,SAAS,GAEXmH,eAAgB,CACdvH,UAAU,EACVC,KAAMyB,QACNtB,SAAS,IAGb5F,KAAI,WACF,MAAO,CACLgN,OAAQX,EAAgBtG,KAAKuG,SAEjC,EACAW,S,qWAAU,CAAF,CACNC,YAAW,WAAI,WAEb,OAAInH,KAAK6G,UACA7G,KAAKuG,QAAQC,WAAU,SAAAY,GAAI,OAAIA,GAAQA,EAAK7H,OAAS,EAAKsH,YAAcO,EAAK7H,MAAM8H,GAAG,IAEtFrH,KAAKiH,MAEhB,EACAK,SAAQ,WAAI,WACV,OAAO,SAAAC,GAEL,OAAO,EAAKC,OAAM,UAAWhB,WADZ,SAAAY,GAAI,OAAIA,EAAK7H,OAAS6H,EAAK7H,MAAM,mBAAqBgI,CAAO,MACzB,EAAKJ,WAC5D,CACF,EACAM,qBAAoB,WAClB,MAAmC,YAA5BzH,KAAK0H,kBACd,IACGC,EAAAA,EAAAA,IAAS,CACVD,mBAAoB,SAAAvL,GAAK,OAAIA,EAAK,UAAWuL,kBAAkB,KAGnEE,aAAY,WACU5H,KAAKuG,QAAQvG,KAAKiH,QACrB1H,QACfS,KAAKiH,OAASX,EAAgBtG,KAAKuG,SAEvC,EACAzG,QAAS,CACP+H,SAAQ,SAAExE,GAAO,WACf,OAAO,SAAC9J,GACNA,EAAEuO,iBACF,EAAKC,OAAO1E,EACd,CACF,EAEAkD,MAAK,WACH,OAAIvG,KAAKwH,OAAM,UAAW,GAAG9H,OAASsI,EAAAA,GAC7BhI,KAAKwH,OAAM,UAAW,GAAG7D,SAE3B3D,KAAKwH,OAAM,SACpB,EACAO,OAAM,SAAE1E,GACuB,mBAAlBrD,KAAK2G,UACd3G,KAAK2G,SAASsB,KAAK,KAAMjI,KAAKuG,QAAQlD,GAAOgE,KAE/CrH,KAAKiH,OAAS5D,EACVrD,KAAK8G,iBACP9G,KAAKkI,MAAMC,SAASC,UAAY,EAEpC,GAEF/G,OAAM,WAAI,WACFgH,EAAOrI,KAAKuG,QACfxN,KAAI,SAACqO,EAAM/D,GACV,IAAM9D,EAAQ6H,EAAK7H,MACnB,GAAKA,EAAL,CACA,IAAM+I,EAAa,CAAC,MAAO,kBACrBC,EAAiB,CAAC,eAKxB,OAJI,EAAKpB,cAAgB9D,IACvBiF,EAAWjJ,KAAK,UAChBkJ,EAAelJ,KAAK,WAElBE,EAAMiJ,OACD,eAAP,MACcD,EAAerD,KAAK,MAAI,6BAEtB3F,EAAMkJ,SAAQ,QACf,EAAKZ,SAASxE,GAAM,MACtBiF,EAAWpD,KAAK,KAAI,KACtB,UAAQ,qBAEH3F,EAAMiJ,MAAK,MAASjJ,EAAM,kBAAgB,MACnDA,EAAMmJ,MAAQ,GAAKnJ,EAAMmJ,WAK3B,eAAP,MACcH,EAAerD,KAAK,MAAI,6BAEtB3F,EAAMkJ,SAAQ,QACf,EAAKZ,SAASxE,GAAM,MACtBiF,EAAWpD,KAAK,KAAI,KACtB,UAAQ,CAEX3F,EAAMoJ,MAAY,QAAC,MAAJ,MAAkB,WAAU,KAAM,KAAI,sBAAmBpJ,EAAMoJ,MAAI,MAArE,IAAyE,sBAC5E,QAAM,CACfpJ,EAAMmJ,WAhCG,CAqCpB,IAEIP,EAAWnI,KAAKuG,QAAQxN,KAAI,SAACqO,EAAM/D,GACvC,IAAM9D,EAAQ6H,EAAK7H,MACnB,GAAKA,EAAL,CACA,IAAM0H,EAAS,EAAKE,cAAgB9D,EAC9BuF,EAAU,CAAE3B,EAAS,SAAW,UAClC1H,EAAMsJ,YACRD,EAAQvJ,KAAK,eAEf,IAAMyJ,GAAe,EAAKpC,mBAAqBO,EAC3CG,EACA,GAEJ,OAAO,eAAP,MACcwB,GAAO,CAEf,EAAK7B,YAAU,oBACD,gBAAc,CAAExH,EAAMmJ,QAChC,GAELI,GAjBa,CAoBpB,IAEA,OAAO,eAAP,MACc,iBAAmB9I,KAAK+G,WAAa,YAAc,aAAW,uBAC7D,QAAM,CACdsB,KAAI,4BAGD,WAAU,MACP,YAAcrI,KAAK8G,eAAiB,mBAAqB,KAAG,CAGlEqB,IAAQ,+BAFWnI,KAAKgH,mBAMjC,E,WCpLF,IAiCM+B,EAAkB,CACtBC,GAAI,eAYNjP,EAAOC,QAAU,CACfiP,UA/CgB,CAChB,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,UACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,WAkBAC,mBAXyB,SAACzP,GAAI,OAAKsP,EAAgBtP,IAASA,CAAI,EAYhE0P,mBAVyB,SAAC1P,GAAI,OAAKA,CAAI,EAWvC2P,oBAT0B,SAAAC,GAC1B,IAAMC,EAAWjL,MAAMoF,QAAQ4F,GAASA,EAAQ,CAACA,GACjD,OAAOC,EAASxM,SAAS,MAAQwM,EAAWA,EAASrO,OAAO,CAAC,MAC/D,E,moCCjCA,IAiBa,EAbPsO,EAAmB,SAAC9P,GACxB,OAAO,SAEL,aACKyP,EAAAA,EAAAA,oBAAmBzP,GAAK,SAEjC,EA+BA,QA7BiB,CACfwP,UAAAA,EAAAA,UACApJ,QAAS,CACP2J,GAAIC,EAAAA,OAAAA,SAENC,aAAW,oBAAE,WAAOC,EAAMC,GAAQ,qFAMX,IALfX,GAAa5K,MAAMoF,QAAQmG,GAAYA,EAAW,CAACA,IAAW7O,QAAO,SAAAO,GAAC,OAAIA,CAAC,KAElEwB,SApBc,OAqB3BmM,EAAU5J,KArBiB,MAsB5B,UACwB4J,GAAlBY,EAAK,KAAKC,EAAI,WAEjBD,IAAUF,EAAKI,SAAU,IAAQD,EAAMH,EAAKK,gBAAe,qDAI5Cf,GAAS,yDAAb,GA3BMxP,EA2BVwQ,EAAI,SA3BehB,EAAAA,UAAAA,SAAmBxP,GA4BpB,CAAF,iCACA8P,EAAiBU,GAAK,QAAvCC,EAAW,EAAH,KACdP,EAAKQ,iBAAiBF,EAAMC,EAAQ,SAAS,+IAIjDP,EAAKK,eAAiBF,EACtBH,EAAKI,OAASF,EAAK,kCAnCC,IAACpQ,CAmCF,8BACpB,+C,iGChDH,IAEE,IAAI2Q,WAIN,CAFE,MAAO7Q,GACP6G,OAAOgK,YAAcC,EAAAA,CACvB,CCuJA,QA1IqB,CACnBlO,MAtBmB,CACnBuL,mBAAoB,SACpB4C,qBAAqB,EACrBC,uBAAwB,KACxBC,SAAU,CACRC,uBAAwB,KACxBC,mBAAoB,KACpBC,uBAAwB,MAE1BC,eAAgB,CACdC,UAAWzK,OAAO0K,KAAO1K,OAAO0K,IAAIC,WAClC3K,OAAO0K,IAAIC,SAAS,SAAU,qBAC9B3K,OAAO0K,IAAIC,SAAS,iBAAkB,sBAG1CC,WAAY,SACZC,cAAe,GACfC,aAAc,EACdC,aAAc,MAKdC,UAAW,CACTC,cAAa,SAAElP,EAAO,GAAoB,IAAlBmP,EAAO,EAAPA,QAASC,EAAK,EAALA,MAC3BD,GACEnP,EAAMuO,oBACR7N,aAAaV,EAAMuO,oBAErBvO,EAAMqO,SAASC,uBAAyB,CAAEc,OAAO,EAAOtR,KAAMqR,GAC9DnP,EAAMqO,SAASE,mBAAqB/N,YAAW,yBAAaR,EAAMqO,SAASC,sBAAsB,GAAE,MAEnGtO,EAAMqO,SAASC,uBAAyB,CAAEc,OAAO,EAAMC,UAAWD,EAEtE,EACAE,0BAAyB,SAAEtP,EAAOuP,GAChCvP,EAAMwO,uBAAyBe,CACjC,EACAC,cAAa,SAAExP,EAAOyP,GACpBzP,EAAM6O,WAAaY,CACrB,EACAC,mBAAkB,SAAE1P,GAClBA,EAAMuL,mBAAqB,QAC7B,EACAoE,wBAAuB,SAAE3P,GACvB,OAAQA,EAAMuL,oBACZ,IAAK,YAEH,YADAvL,EAAMuL,mBAAqB,WAE7B,IAAK,UAEH,YADAvL,EAAMuL,mBAAqB,aAE7B,QACE,MAAM,IAAIlO,MAAM,gDAEtB,EACAuS,kBAAiB,SAAE5P,GACjBA,EAAMuL,mBAAqB,UACtBvL,EAAMmO,sBACTnO,EAAMmO,qBAAsB,EAEhC,EACA0B,0BAAyB,SAAE7P,EAAOyP,GAChCzP,EAAMoO,uBAAyBqB,CACjC,EACAK,iBAAgB,SAAE9P,EAAO+P,GACvB/P,EAAM8O,cAAc5L,KAAK6M,EAC3B,EACAC,mBAAkB,SAAEhQ,EAAO+P,GACzB/P,EAAM8O,cAAgB9O,EAAM8O,cAAclQ,QAAO,SAAAqR,GAAC,OAAIA,IAAMF,CAAM,GACpE,EACAG,gBAAe,SAAElQ,EAAOyP,GACtBzP,EAAM+O,aAAeU,CACvB,EACAU,eAAc,SAAEnQ,EAAOyP,GACrBzP,EAAMoQ,YAAcX,CACtB,EACAY,gBAAe,SAAErQ,EAAOyP,GACtBzP,EAAMgP,aAAeS,CACvB,GAEFa,QAAS,CACPC,aAAY,YAA8B,IAA1BC,EAAS,EAATA,UAAaC,EAAS,UAAH,6CAAG,GACpCC,SAASC,MAAQ,GAAH,OAAMF,EAAM,YAAID,EAAUI,SAASrR,KACnD,EACA2P,cAAa,cAA4C,IAAxC2B,EAAM,EAANA,OAAgB,EAAR9Q,SACvB8Q,EAAO,gBAAiB,CAAE1B,QADkB,EAAPA,QACFC,MADgB,EAALA,OAEhD,EACAE,0BAAyB,WAAcC,IACrCsB,EADiC,EAANA,QACpB,4BAA6BtB,EACtC,EACAG,mBAAkB,aAChBmB,EAD0B,EAANA,QACb,qBACT,EACAjB,kBAAiB,aACfiB,EADyB,EAANA,QACZ,oBACT,EACAlB,wBAAuB,aACrBkB,EAD+B,EAANA,QAClB,0BACT,EACAC,4BAA2B,aACzBD,EADmC,EAANA,QACtB,4BAA6B,KACtC,EACAE,qBAAoB,WAActB,GAAO,IAAjBoB,EAAM,EAANA,OACtBA,EAAO,4BAA6BpB,GACpCoB,EAAO,oBACT,EACAf,iBAAgB,cAOX,IANDe,EAAM,EAANA,OAAQ9Q,EAAQ,EAARA,SAAUC,EAAK,EAALA,MAElBgR,EAAU,EAAVA,WAAU,IACVC,YAAAA,OAAW,IAAG,GAAC,EAAC,MAChBxH,MAAAA,OAAK,IAAG,UAAO,MACftJ,QAAAA,OAAO,IAAG,IAAC,EAOb0Q,EAAO,mBALQ,CACbG,WAAAA,EACAC,YAAAA,EACAxH,MAAAA,IAKF,IAAMyH,EAAYlR,EAAM8O,cAAc9O,EAAM8O,cAAc5P,OAAS,GAInE,OAHIiB,GACFK,YAAW,kBAAMT,EAAS,qBAAsBmR,EAAU,GAAE/Q,GAEvD+Q,CACT,EACAlB,mBAAkB,WAAcD,IAC9Bc,EAD0B,EAANA,QACb,qBAAsBd,EAC/B,EACAG,gBAAe,WAAcT,IAC3BoB,EADuB,EAANA,QACV,kBAAmBpB,EAC5B,EAEAU,eAAc,WAA6CV,GAAO,IAAhDoB,EAAM,EAANA,OAAQ7Q,EAAK,EAALA,MAAOmR,EAAW,EAAXA,YAAaX,EAAS,EAATA,UACxCY,EAAQ3B,OACErH,IAAVqH,EACFoB,EAAO,iBAAkBpB,GAEzB2B,EAAQpR,EAAMoQ,YAEhB,IACMiB,EADeD,GAAS,IACQ,SAAW,SAEzB,SADID,EAAYG,aAAhCC,iBAC2Bf,EAAU3P,MAAM2Q,YAIjDX,EAAO,gBADYO,GAAS,KACS,OAASC,GAH9CR,EAAO,gBAAiBQ,EAK5B,EACAhB,gBAAe,WAAcZ,IAC3BoB,EADuB,EAANA,QACV,kBAAmBpB,EAC5B,I,+pBCrJJ,IAAMgC,EAAyB,CAC7B,sBACA,kBACA,qBACA,iBACA,oBACA,aACA,UACA,UACA,SAGIC,EAAuB,WAK3B,IAJA,IAAMC,EAAQ,OAERC,EAAI,IAAIC,YAAY,GACpBC,EAAM,IAAI5P,MAAM6P,IACblP,EAAI8O,EAAO9O,GAHR,SAGoBA,EAAG,CACjC,IAAMmP,EAASxO,OAAOyO,cAAcL,EAAI/O,EAAI8O,GAC5CG,EAAIjP,EAAI8O,GAAS,CACfrQ,YAAakC,OAAOyO,cAAcpP,GAClCrD,UAAU,EACVE,YAAa,sBAAwBsS,EACrCE,gBAAiB,CACfhH,IAAK,2BACLiH,KAAM,CAAEH,OAAAA,IAGd,CACA,OAAOF,CACT,CAlB6B,GAgIvBM,EAAkB,SAACtE,GACvB,OAAO,QACgD,aACJd,EAAAA,EAAAA,oBAAmBc,GAAK,UAExE3Q,MAAK,SAAAgC,GAAC,OAAIA,EAAC,OAAQ,GACxB,EAEMkT,EAAoB,SAACpU,EAAOqU,GAChC,IAAMC,EAAiB5U,OAAOD,KAAK4U,GAEnC,OAAO,EAAP,KACKrU,GAAK,IACRqU,YAAaC,EAAeC,QAAO,SAACC,EAAKC,GAEvC,OADAD,EAAIC,GAAOJ,EAAYI,GAAKzU,EAAMqD,aAC3BmR,CACT,GAAG,CAAC,IAER,EA+OA,QAxOiB,CACfzS,MApImB,CAEnBT,KAAM,aACNoT,kBAAkB,EAClBC,OAAQ,yBACRC,UAAW,IACXC,eAAW1K,EACX2K,oBAAgB3K,EAGhB4K,wBAAwB,EACxBC,cAAe,kBACfC,cAAe,qBACfC,WAAY,8BACZC,4BAA4B,EAC5BnO,WAAW,EACXoO,WAAW,EACXC,mBAAoB,QACpBC,wBAAwB,EACxBC,uBAAuB,EACvBC,uBAAuB,EACvBC,qBAAqB,EACrBC,sBAAsB,EACtBC,sBAAsB,EAEtBC,gBAAgB,EAChBC,kBAAkB,EAClBC,uBAAuB,EACvBC,eAAe,EACfC,mBAAmB,EACnBC,cAAc,EACdC,eAAe,EACfC,iBAAiB,EACjBC,eAAe,EACfC,iBAAiB,EACjBC,cAAc,EACdC,aAAa,EACbC,eAAe,EACfC,eAAe,EACfC,sBAAsB,EACtBC,mBAAmB,EACnBC,gCAAgC,EAChCC,YAAa,WACbC,KAAM,mBACNC,WAAY,OACZC,UAAU,EACVC,UAAU,EACVC,2BAA2B,EAC3BC,mBAAmB,EACnBC,qBAAiBjN,EACjBkN,gBAAiB,aACjBC,kBAAmB,gBACnBC,oBAAqB,YACrBC,WAAW,EACXC,mBAAmB,EACnBC,2BAA2B,EAC3BC,cAAc,EACdC,oBAAqB,QACrBC,MAAO,eACPC,kBAAkB,EAClBC,oBAAoB,EACpBC,oBAAqB,SACrBC,0BAA0B,EAC1BC,+BAAgC,QAChCC,+BAA+B,EAC/BC,iBAAkB,EAGlBC,YAAa,GACbC,oBAAoB,EACpBtY,MAAO,CAAC,EACRuY,cAAc,EACdC,wBAAyB,CAAC,EAC1BC,gBAAgB,EAChBC,YAAa,GACbC,oBAAqB,GACrBC,QAAQ,EACRC,aAAc,GACdC,kBAAkB,EAClBC,eAAgB,EAGhBC,gBAAgB,EAChBC,8BAA8B,EAC9BC,iBAAiB,EACjBC,qBAAqB,EACrBC,oBAAoB,EACpBC,eAAgB,GAGhBC,6BAA8B,GAC9BC,IAAK,GAGLC,eAAgB,GAChBC,gBAAiB,GAEjBC,gBAAgB,EAChBC,WAAY,CACVC,YAAa,EACbC,iBAAkB,IAClBC,eAAgB,GAChBC,eAAgB,QA+BlB/I,UAAW,CACTgJ,kBAAiB,SAAEjY,EAAO,GAAiB,IAAfT,EAAI,EAAJA,KAAMkQ,EAAK,EAALA,WACX,IAAVA,IACTzP,EAAMT,GAAQkQ,EAElB,EACAyI,gBAAe,SAAElY,EAAOmY,GACtBnY,EAAM8W,aAAeqB,CACvB,EACAC,2BAA0B,SAAEpY,EAAO,GAAuB,IAArB8N,EAAI,EAAJA,KAAMwE,EAAW,EAAXA,YACzCtS,EAAMyW,wBAAwB3I,GAAQwE,CACxC,GAEF+F,QAAS,CACPC,sBAAqB,SAAEtY,GACrB,OAAOuY,EAAAA,GAAAA,KACA,SAAArN,GAAG,MAAI,CAACA,EAAKlL,EAAMkL,GAAK,IAC5BsH,QAAO,SAACC,EAAK,GAAF,mBAAGvH,EAAG,KAAEuE,EAAK,mBAAYgD,GAAG,cAAGvH,EAAMuE,GAAK,GAAK,CAAC,EAChE,EACA+I,oBAAmB,SAAExY,GAqBnB,OAAOA,EAAMsW,YACV9D,QAAO,SAACV,EAAK7T,GAYZ,OAjCY,SAAAA,GACd,IAAMwa,EAAQxa,EAAMya,KACjB9Z,QAAO,SAAAO,GAAC,OAAIA,EAAEM,WAAW,QAAQ,IACjC7C,KAAI,SAAAuC,GACH,IAAMwZ,EAAWxZ,EAAE6B,MAAM,GACzB,MAAO,CACLxD,GAAI,UAAF,OAAYmb,GACdlW,KAAMkW,EAEV,IAEF,OAAKF,EAAMvZ,OAKFuZ,EAJA,CAAC,CACNjb,GAAI,YAKV,CAIIob,CAAQ3a,GAAO4a,SAAQ,YAAoC,IAA7BC,EAAM,EAAVtb,GAAkBmb,EAAQ,EAAdlW,KAC/BqP,EAAIgH,KACPhH,EAAIgH,GAAW,CACbtb,GAAIsb,EACJrW,KAAMkW,EACNtM,MAAOpO,EAAMuB,SACbhB,OAAQ,KAGZsT,EAAIgH,GAAQta,OAAO0E,KAAKjF,EAC1B,IACO6T,CACT,GAAG,CAAC,EACR,EACAiH,kBAAiB,SAAE/Y,GACjB,OAAOyR,EACJ7U,KAAI,SAAAoc,GAAO,OAAKhZ,EAAM/B,MAAM+a,IAAY,IAAIpc,KAAI,SAAAuC,GAAC,OAAIkT,EAAkBlT,EAAGa,EAAMyW,wBAAwB,GAAC,IACzGjE,QAAO,SAAC5S,EAAGC,GAAC,OAAKD,EAAEd,OAAOe,EAAE,GAAE,GACnC,EACAoZ,uBAAsB,SAAEjZ,GACtB,OAAOyR,EAAuB7U,KAAI,SAAAoc,GAAO,MAAK,CAC5Cxb,GAAIwb,EACJxa,QAASwB,EAAM/B,MAAM+a,IAAY,IAAIpc,KAAI,SAAAuC,GAAC,OAAIkT,EAAkBlT,EAAGa,EAAMyW,wBAAwB,IAClG,GACH,EACAyC,eAAc,SAAElZ,GACd,OAAO,IAAImZ,IAAInZ,EAAM4S,QAAQwG,QAC/B,EACAC,sBAAqB,SAAErZ,GACrB,IACM8D,GADS9D,EAAM4S,OAAO0G,SAAS,KAAOtZ,EAAM4S,OAAO5R,MAAM,GAAI,GAAKhB,EAAM4S,QA9MrD,gBAiNzB,OAAO,YAA4B,IAAzB2G,EAAQ,EAARA,SAAUC,EAAQ,EAARA,SAClB,OAAID,EACK,GAAP,OAAUzV,EAAI,sBAAcyV,GAErB,GAAP,OAAUzV,EAAI,qBAAa0V,EAE/B,CACF,GAEFlJ,QAAS,CACP2H,kBAAiB,cAAyC,IAArCpH,EAAM,EAANA,OAAQ9Q,EAAQ,EAARA,SAAcR,EAAI,EAAJA,KAAMkQ,EAAK,EAALA,MAE/C,OADAoB,EAAO,oBAAqB,CAAEtR,KAAAA,EAAMkQ,MAAAA,IAC5BlQ,GACN,IAAK,OACHQ,EAAS,gBACT,MACF,IAAK,iBACC0P,GACF1P,EAAS,oBAEX,MACF,IAAK,QACHA,EAAS,WAAY0P,GAG3B,EACMgK,eAAc,YAAc,gHAAJ,OAAN5I,EAAM,EAANA,OAAM,kBAEJ,qCAAiE,OAAjFxH,EAAS,EAAH,aAENpL,EAAQN,OAAOD,KAAK2L,GAAQmJ,QAAO,SAACV,EAAKkH,GAM7C,OALAlH,EAAIkH,GAAW3P,EAAO2P,GAASpc,KAAI,SAAAQ,GAAC,MAAK,CACvCsC,YAAatC,EAAEsc,KACfla,UAAU,EACV8B,YAAalE,EAAEa,MAChB,IACM6T,CACT,GAAG,CAAC,GACJjB,EAAO,oBAAqB,CAAEtR,KAAM,QAASkQ,OAvHpBkK,EAuHoD1b,EAvH1C,UACzC,EAAA0b,EAAOC,SAAQ1W,KAAI,gBAAIwO,IAChBiI,KAqHqF,gDAEtFE,QAAQC,KAAK,2BACbD,QAAQC,KAAK,EAAD,IAAG,kCA1HU,IAAAH,EAAU,CA0HpB,sBAfe,EAiBlC,EAEAI,qBAAoB,WAAqBtM,GAAU,IAA3BoD,EAAM,EAANA,OAAQ7Q,EAAK,EAALA,MACxBga,GAAW/M,EAAAA,EAAAA,qBAAoBQ,GAErC,OAAOxQ,QAAQgd,IACbD,EACGpd,IAAG,mCAAC,WAAMkR,GAAI,0EACR9N,EAAMyW,wBAAwB3I,GAAO,CAAF,yCAEVsE,EAAgBtE,GAAK,OAAzCwE,EAAc,EAAH,KACjBzB,EAAO,6BAA8B,CAAE/C,KAAAA,EAAMwE,YAAAA,IAAc,gDAE3DuH,QAAQC,KAAK,+CAAD,OAAgDhM,EAAI,YAChE,yDAGL,mDAVG,IAWV,EAEMoM,eAAc,YAAqB,4HAAJ,OAAbrJ,EAAM,EAANA,OAAQ7Q,EAAK,EAALA,MAAK,kBAEfiE,OAAOkW,MAAM,2BAA0B,OAAhD,KAAHrI,EAAM,EAAH,MACDsI,GAAI,CAAF,gCACatI,EAAIuI,OAAM,OAAzB5Y,EAAS,EAAH,KACN4H,EAASnH,MAAMoF,QAAQ7F,GAAU9D,OAAO2c,OAAM,MAAb3c,OAAM,CAAQ,CAAC,GAAC,eAAK8D,KAAUA,EAChE8Y,EAAwB,SAAC3a,EAAGC,GAChC,IAAM2a,EAAK5a,EAAElB,cACP+b,EAAK5a,EAAEnB,cACb,OAAO8b,EAAKC,EAAK,EAAKD,EAAKC,GAAM,EAAI,CACvC,EACMC,EAAa,SAAC9a,EAAGC,GACrB,IAAM8a,EAAc,KAAN/a,EACRgb,EAAc,KAAN/a,EACd,OAAI8a,IAAUC,EACL,EACED,IAAUC,EACZ,GAEC,CAEZ,EACMC,EAAmB,SAACjb,EAAGC,GAC3B,IAAMib,EAAS,SAAA7c,GAAK,OAAKA,EAAMya,KAAK9Z,QAAO,SAAAO,GAAC,OAAIA,EAAEM,WAAW,QAAQ,IAAE,IAAM,IAAIuB,MAAM,EAAE,EACnF+Z,EAAUD,EAAOlb,GACjBob,EAAUF,EAAOjb,GACvB,OAAO6a,EAAWK,EAASC,IAAYT,EAAsBQ,EAASC,IAAYT,EAAsB3a,EAAEF,YAAaG,EAAEH,YAC3H,EAEMzB,EAAQN,OAAOsd,QAAQ5R,GAAQzM,KAAI,YAAkB,mBAAhBsO,EAAG,KAAEuE,EAAK,KAC7CjQ,EAAWiQ,EAAMyL,UACvB,MAAO,CACLxb,YAAawL,EACb1L,SAAUA,EAAWQ,EAAM4S,OAASpT,EAAWiQ,EAC/CiJ,KAAMlZ,EAAWiQ,EAAMiJ,KAAK/Y,MAAK,SAACC,EAAGC,GAAC,OAAKD,EAAIC,EAAI,EAAI,CAAC,IAAI,CAAC,OAC7DyB,YAAa,IAAF,OAAM4J,EAAG,MAIxB,IAAGvL,KAAKkb,GACRhK,EAAO,oBAAqB,CAAEtR,KAAM,cAAekQ,MAAOxR,IAAQ,8BAE3D6T,EAAG,0DAGZ+H,QAAQC,KAAK,4BACbD,QAAQC,KAAK,EAAD,IAAG,yDA9CsB,EAgDzC,EAEAqB,SAAQ,WAAyBC,GAAW,IAAhCvK,EAAM,EAANA,OAAQL,EAAS,EAATA,UAClBK,EAAO,oBAAqB,CAAEtR,KAAM,QAASkQ,MAAO2L,KACpDC,EAAAA,EAAAA,IAAUD,GACPje,MAAK,SAAA2V,GAIJ,GAHAjC,EAAO,oBAAqB,CAAEtR,KAAM,YAAakQ,MAAOqD,KAEhCtC,EAAU8K,OAA1BC,YACR,CAGA,IAAMC,EAAc1I,EAAU2I,QACzB3I,EAAUgD,OAAU0F,GAAeA,EAAYE,qBAAuBC,EAAAA,IACzEC,EAAAA,EAAAA,IAAWJ,IAEXI,EAAAA,EAAAA,IAAW9I,EAAUgD,MAPA,CASzB,GACJ,EACA+F,WAAU,YAAuB,IAAnB9b,EAAQ,EAARA,SAAUC,EAAK,EAALA,MACjBA,EAAMuW,qBACTvW,EAAMuW,oBAAqB,EAC3BxW,EAAS,mBAENC,EAAMwW,eACTxW,EAAMwW,cAAe,EACrBzW,EAAS,kBAEb,EAEM+b,gBAAe,YAAyB,gHAAJ,OAAjBjL,EAAM,EAANA,OAAQL,EAAS,EAATA,UAAS,kBAEjBuL,EAAAA,GAAAA,kBAA6B,CAChDC,YAAaxL,EAAU3P,MAAM2Q,YAAYwK,cACzC,OAFIva,EAAS,EAAH,KAGZoP,EAAO,kBAAmBpP,GAAO,gDAEjCoY,QAAQC,KAAK,4BACbD,QAAQC,KAAK,EAAD,IAAG,wDAR2B,EAU9C,I,k0BC1XJ,IAAMmC,EAAU,WAAH,IAAIC,EAAS,UAAH,6CAAG,EAAC,MAAM,CAC/BC,SAAU,GACVC,eAAgB,CAAC,EACjBC,MAAO,GACPC,gBAAiB,GACjBC,sBAAuB,CAAC,EACxBC,eAAgB,EAChBC,MAAO,EACPC,MAAO,EACPC,aAAc,EACdC,SAAS,EACTC,UAAW,GACXC,QAAS,GACTZ,OAAAA,EACAa,YAAa,EACd,EAEKC,EAAqB,WAAH,MAAU,CAChCC,4BAA4B,EAC5BR,MAAO,EACPC,MAAOQ,OAAOC,kBACdrf,KAAM,GACNsf,QAAS,CAAC,EACVR,SAAS,EACV,EAEYS,EAAe,WAAH,MAAU,CACjCC,YAAa,GACbC,kBAAmB,CAAC,EACpBC,oBAAqB,CAAC,EACtBf,MAAO,EACPgB,cAAeT,IACfU,UAAW,IAAI1X,IACf2X,UAAW,CACTC,SAAU3B,IACV4B,OAAQ5B,IACRnb,KAAMmb,IACNyB,UAAWzB,IACX6B,MAAO7B,IACP8B,kBAAmB9B,IACnBa,QAASb,IACTza,IAAKya,IACL+B,IAAK/B,IACLgC,UAAWhC,IACXzf,KAAMyf,KAET,EAYKiC,GAAa,SAACC,EAAKC,EAAKnX,GAC5B,IAAMoX,EAAUD,EAAInX,EAAKzJ,IAEzB,OAAI6gB,GAIF,IAAMA,EAAS,IAAOpX,GAAM,SAAC5E,EAAGlD,GAAC,OAAW,OAANkD,GAAoB,SAANlD,CAAY,KAEhEkf,EAAQC,YAAYC,OAAOF,EAAQC,YAAYpf,QACxC,CAAE+H,KAAMoX,EAASG,KAAK,KApBJ,SAACC,GAE5BA,EAAOC,SAAU,EAGjBD,EAAOH,YAAcG,EAAOH,aAAe,EAG7C,CAeIK,CAAc1X,GACdkX,EAAIjb,KAAK+D,GACTmX,EAAInX,EAAKzJ,IAAMyJ,EACR,CAAEA,KAAAA,EAAMuX,KAAK,GAExB,EAEMI,GAAW,SAAChf,EAAGC,GACnB,IAAMgf,EAAO3B,OAAOtd,EAAEpC,IAChBshB,EAAO5B,OAAOrd,EAAErC,IAChBuhB,GAAU7B,OAAO8B,MAAMH,GACvBI,GAAU/B,OAAO8B,MAAMF,GAC7B,OAAIC,GAAUE,EACLJ,EAAOC,GAAQ,EAAI,EACjBC,IAAWE,EACb,GACGF,GAAUE,GAGbrf,EAAEpC,GAAKqC,EAAErC,IAFR,EAEkB,CAE9B,EAEM0hB,GAAe,SAACC,GAIpB,OAHAA,EAAS7C,gBAAkB6C,EAAS7C,gBAAgB3c,KAAKif,IACzDO,EAAShD,SAAWgD,EAAShD,SAASxc,KAAKif,IAC3CO,EAASxC,cAAgB,IAAKwC,EAAS7C,kBAAoB,CAAC,GAAG9e,GACxD2hB,CACT,EAGMC,GAA2B,SAACpf,EAAOlC,GACvC,IAAM2D,EAASyc,GAAWle,EAAMsd,YAAatd,EAAMud,kBAAmBzf,GACtE,GAAI2D,EAAM,IAAM,CAEd,IAAMgd,EAAShd,EAAOwF,KAChBuW,EAAsBxd,EAAMwd,oBAC5B6B,EAAiBZ,EAAOa,0BAC1B9B,EAAoB6B,GACtB7B,EAAoB6B,GAAgBnc,KAAKub,GAEzCjB,EAAoB6B,GAAkB,CAACZ,EAE3C,CACA,OAAOhd,CACT,EAsLM8d,GAA8B,SAACvf,EAAOwf,GAC1Cxf,EAAMyd,cAAchB,MAAQ+C,EAAahiB,GAAKwC,EAAMyd,cAAchB,MAC9D+C,EAAahiB,GACbwC,EAAMyd,cAAchB,MACxBzc,EAAMyd,cAAcf,MAAQ8C,EAAahiB,GAAKwC,EAAMyd,cAAcf,MAC9D8C,EAAahiB,GACbwC,EAAMyd,cAAcf,KAC1B,EAiDazN,GAAY,CACvBwQ,eA7NqB,SAACzf,EAAO,GAA4G,IAA1Gmc,EAAQ,EAARA,SAAQ,IAAEuD,gBAAAA,OAAe,IAAG,GAAK,EAAEP,EAAQ,EAARA,SAAQ,IAAEre,KAAAA,OAAI,IAAG,GAAC,EAAC,MAAE6e,WAAAA,OAAU,IAAG,GAAK,EAAEzD,EAAM,EAANA,OAAM,IAAE0D,WAAAA,OAAU,IAAG,GAAC,EAAC,EAElI,IAAK,IAAQzD,GACX,OAAO,EAGT,IAAMmB,EAActd,EAAMsd,YACpBuC,EAAiB7f,EAAM2d,UAAUwB,GAMjCW,EAASF,EAAWnD,QAAUN,EAASjd,OAAS,EAAI,IAAMid,EAAU,MAAM3e,GAAK,GAC/EuiB,EAASH,EAAWlD,QAAUP,EAASjd,OAAS,EAAI,IAAMid,EAAU,MAAM3e,GAAK,GAE/EwiB,EAAQb,IAAaY,EAASF,EAAepD,OAAkC,IAAzBoD,EAAepD,QAAgBN,EAASjd,OAAS,EACvG+gB,EAAQd,IAAaW,EAASD,EAAenD,OAAkC,IAAzBmD,EAAenD,QAAgBP,EAASjd,OAAS,EAY7G,IAVKygB,GAAcK,IACjBH,EAAepD,MAAQsD,IAEpBJ,GAAcM,IACjBJ,EAAenD,MAAQoD,GAMP,SAAbX,GAAoC,UAAbA,GAAyBU,EAAe3D,SAAWA,EAA/E,CAIA,IAAMgE,EAAY,SAACpiB,EAAM4hB,GAA0C,IA4B7DS,EA5BoCC,IAAgB,UAAH,+CAC/C3e,EAAS2d,GAAyBpf,EAAOlC,GACzC2gB,EAAShd,EAAOwF,KAEtB,GAAIxF,EAAM,IAAM,CAEd,GAAoB,WAAhBgd,EAAOlb,MAAqB,IAAKkb,EAAO3Z,WAAY,CAAEtH,GAAIsD,EAAKtD,KAAO,CACxE,IAAMogB,EAAW5d,EAAM2d,UAAUC,SAG7BiC,IAAmBjC,IACrBM,GAAWN,EAASzB,SAAUyB,EAASxB,eAAgBqC,GACvDb,EAASpB,gBAAkB,EAE3B0C,GAAatB,GAEjB,CACA,GAA0B,WAAtBa,EAAO4B,WAAyB,CAClC,IAAMrC,EAAMhe,EAAM2d,UAAUK,IAE5BE,GAAWF,EAAI7B,SAAU6B,EAAI5B,eAAgBqC,GAC7CT,EAAIxB,gBAAkB,EAEtB0C,GAAalB,EACf,CACF,CAkBA,OAbImB,GAAYiB,IACdD,EAA2BjC,GAAW2B,EAAe1D,SAAU0D,EAAezD,eAAgBqC,IAG5FU,GAAYO,EAGdxB,GAAW2B,EAAevD,gBAAiBuD,EAAetD,sBAAuBkC,GACxEU,GAAYiB,GAAiBD,EAAwB,MAE9DN,EAAerD,gBAAkB,GAG5BiC,CACT,EAeM6B,EAAa,CACjB7B,OAAQ,SAACA,GACPyB,EAAUzB,EAAQiB,EACpB,EACAa,KAAM,SAAC9B,GACLyB,EAAUzB,EAAQiB,EACpB,EACAc,QAAS,SAAC/B,GAER,IAAMgC,EAAkBP,EAAUzB,EAAOiC,kBAAkB,GAAO,IAK9DvB,GAAY,IAAKU,EAAe1D,UAAU,SAACwE,GAC7C,OAAIA,EAAED,iBACGC,EAAEnjB,KAAOijB,EAAgBjjB,IAAMmjB,EAAED,iBAAiBljB,KAAOijB,EAAgBjjB,GAEzEmjB,EAAEnjB,KAAOijB,EAAgBjjB,EAEpC,IAEY0iB,EAAUzB,GAAQ,GAAO,GAEzByB,EAAUzB,EAAQiB,IAGtBgB,iBAAmBD,CAC7B,EACAG,SAAU,SAACA,GAGJ5gB,EAAM0d,UAAU5W,IAAI8Z,EAASpjB,MAChCwC,EAAM0d,UAAUmD,IAAID,EAASpjB,IA9CZ,SAACojB,EAAUE,GAChC,IAAMrC,EAAS,IAAKnB,EAAa,CAAE9f,GAAIojB,EAASG,wBAC5CtC,IAEEmC,EAAS9f,KAAKtD,KAAOsD,EAAKtD,GAC5BihB,EAAOuC,WAAY,EAEnBvC,EAAOwC,UAAY,EAIzB,CAoCMC,CAAeN,GAEnB,EACAO,SAAU,SAACA,GACT,IAAMC,EAAMD,EAASC,IACf3C,EAAS,IAAKnB,EAAa,CAAE8D,IAAAA,IAC9B3C,IAnJ2B,SAACze,EAAOye,GAC5C,IAAOze,EAAMsd,YAAa,CAAE9f,GAAIihB,EAAOjhB,KAKvC,IAAOwC,EAAMyd,cAAc3f,MAAM,YAAe,SAAZujB,OAAU7jB,KAAkBihB,EAAOjhB,EAAE,IAGzE,IAAM6hB,EAAiBZ,EAAOa,0BAC1Btf,EAAMwd,oBAAoB6B,IAC5B,IAAOrf,EAAMwd,oBAAoB6B,GAAiB,CAAE7hB,GAAIihB,EAAOjhB,IAEnE,CA0IM8jB,CAA8BthB,EAAOye,GAEjCU,IACF,IAAOU,EAAe1D,SAAU,CAAEiF,IAAAA,IAClC,IAAOvB,EAAevD,gBAAiB,CAAE8E,IAAAA,KAE7C,EACAG,OAAQ,SAACA,GACP,EAEF7d,QAAS,SAAC8d,GACR3H,QAAQ4H,IAAI,uBACZ5H,QAAQ4H,IAAID,EACd,GAGF,IAAKrF,GAAU,SAACsC,GACd,IAAMlb,EAAOkb,EAAOlb,MACF+c,EAAW/c,IAAS+c,EAAU,SACtC7B,EACZ,IAGIU,GAA2B,cAAbA,GAChBD,GAAaW,EAjIf,CAmIF,EA4DE6B,oBAjD0B,SAAC1hB,EAAO,GAA0G,IAAxGD,EAAQ,EAARA,SAAU0d,EAAa,EAAbA,cAA6DkE,GAAzC,EAAL1B,MAA+B,EAAxB2B,yBAAqC,EAAXzQ,YAAuC,EAA1BwQ,4BAC3G,IAAKlE,GAAe,SAAC+B,GAEnB,KAAKqC,EAAAA,EAAAA,IAAoBrC,GAGvB,OAFA3F,QAAQzK,MAAM,wBAAyBoQ,QACvCD,GAA4Bvf,EAAOwf,IAIjCsC,EAAAA,EAAAA,IAAqBtC,EAAajc,QACpCic,EAAa6B,OAASjC,GAAyBpf,EAAOwf,EAAa6B,QAAQpa,KAC3EuY,EAAaf,OAASe,EAAaf,QAAUW,GAAyBpf,EAAOwf,EAAaf,QAAQxX,MAG1E,mBAAtBuY,EAAajc,MACfxD,EAAS,YAAayf,EAAauC,QAGX,2BAAtBvC,EAAajc,MACfxD,EAAS,wBAAyByf,EAAaf,OAAOjhB,IAKnDwC,EAAMyd,cAAcL,QAAQ4E,eAAexC,EAAahiB,IAOlDgiB,EAAayC,OACtBjiB,EAAMyd,cAAcL,QAAQoC,EAAahiB,IAAIykB,MAAO,IAPpD1C,GAA4Bvf,EAAOwf,GAEnCxf,EAAMyd,cAAc3f,KAAKoF,KAAKsc,GAC9Bxf,EAAMyd,cAAcL,QAAQoC,EAAahiB,IAAMgiB,EAE/CmC,EAA2BnC,GAI/B,GACF,EAeE0C,aAbmB,SAACliB,EAAO,GAAyB,IAAvBmf,EAAQ,EAARA,SAAUjD,EAAM,EAANA,OACjC2D,EAAiB7f,EAAM2d,UAAUwB,GACnCjD,IACF,IAAO2D,EAAe1D,SAAU,CAAErb,KAAM,CAAEtD,GAAI0e,KAC9C,IAAO2D,EAAevD,gBAAiB,CAAExb,KAAM,CAAEtD,GAAI0e,KACrD2D,EAAelD,aAAekD,EAAevD,gBAAgBpd,OAAS,EAAI,IAAK2gB,EAAevD,iBAAiB9e,GAAK,EACpHqiB,EAAepD,MAAQoD,EAAe1D,SAASjd,OAAS,EAAI,IAAM2gB,EAAe1D,UAAU3e,GAAK,EAEpG,EAME2kB,gBAAe,SAAEniB,EAAO,GAAc,IAAZmf,EAAQ,EAARA,SAClBiD,EAAepiB,EAAM2d,UAAUwB,GAErCiD,EAAY5F,eAAiB,EAC7B4F,EAAY9F,gBAAkB,IAAM8F,EAAYjG,SAAU,EAAG,IAC7DiG,EAAYzF,aAAe,IAAKyF,EAAY9F,iBAAiB9e,GAC7D4kB,EAAY1F,MAAQ0F,EAAYzF,aAChCyF,EAAY7F,sBAAwB,CAAC,EACrC,IAAK6F,EAAY9F,iBAAiB,SAACmC,GAAa2D,EAAY7F,sBAAsBkC,EAAOjhB,IAAMihB,CAAO,GACxG,EACA4D,cAAa,SAAEriB,GACb,IAAMsiB,EAAajF,IACnB1f,OAAOsd,QAAQqH,GAAYzJ,SAAQ,YAAkB,mBAAhB3N,EAAG,KAAEuE,EAAK,KAC7CzP,EAAMkL,GAAOuE,CACf,GACF,EACA8S,cAAa,SAAEviB,EAAO,GAAqC,IAAnCmf,EAAQ,EAARA,SAAQ,IAAEqD,cAC1BtG,OADuC,IAAG,GAAK,EACtBlc,EAAM2d,UAAUwB,GAAUjD,YAAS9T,EAClEpI,EAAM2d,UAAUwB,GAAYlD,EAAQC,EACtC,EACAuG,mBAAkB,SAAEziB,GAClBA,EAAMyd,cAAgBT,GACxB,EACA0F,aAAY,SAAE1iB,EAAO,GAAmB,IAAjBye,EAAM,EAANA,OAAQhP,EAAK,EAALA,MACvBkT,EAAY3iB,EAAMud,kBAAkBkB,EAAOjhB,IAE7CmlB,EAAU3B,YAAcvR,IACtBA,EACFkT,EAAU1B,WAEV0B,EAAU1B,YAId0B,EAAU3B,UAAYvR,CACxB,EACAmT,oBAAmB,SAAE5iB,EAAO,GAAkB,IAAhBye,EAAM,EAANA,OAAQ3d,EAAI,EAAJA,KAC9B6hB,EAAY3iB,EAAMud,kBAAkBkB,EAAOjhB,IACjDmlB,EAAU3B,UAAYvC,EAAOuC,UAC7B2B,EAAU1B,SAAWxC,EAAOwC,SAC5B,IAAM/Z,EAAQ,IAAUyb,EAAUE,YAAa,CAAErlB,GAAIsD,EAAKtD,MAC3C,IAAX0J,GAAiByb,EAAU3B,WAET,IAAX9Z,GAAgByb,EAAU3B,WACnC2B,EAAUE,YAAY3f,KAAKpC,GAF3B6hB,EAAUE,YAAYtE,OAAOrX,EAAO,EAIxC,EACA4b,eAAc,SAAE9iB,EAAOye,GACrB,IAAMkE,EAAY3iB,EAAMud,kBAAkBkB,EAAOjhB,IACjDmlB,EAAUI,aAAetE,EAAOsE,kBAED3a,IAA3Bua,EAAUI,cACZ/iB,EAAMwd,oBAAoBmF,EAAUrD,2BAA2BzG,SAAQ,SAAA4F,GAAYA,EAAOsE,aAAeJ,EAAUI,YAAa,GAEpI,EACAC,aAAY,SAAEhjB,EAAO,GAAmB,IAAjBye,EAAM,EAANA,OAAQhP,EAAK,EAALA,MACvBkT,EAAY3iB,EAAMud,kBAAkBkB,EAAOjhB,IAE7CmlB,EAAUM,WAAaxT,IACrBA,EACFkT,EAAUO,aAEVP,EAAUO,cAIdP,EAAUM,SAAWxT,CACvB,EACA0T,oBAAmB,SAAEnjB,EAAO,GAAkB,IAAhBye,EAAM,EAANA,OAAQ3d,EAAI,EAAJA,KAC9B6hB,EAAY3iB,EAAMud,kBAAkBkB,EAAOjhB,IACjDmlB,EAAUM,SAAWxE,EAAOwE,SAC5BN,EAAUO,WAAazE,EAAOyE,WAC9B,IAAMhc,EAAQ,IAAUyb,EAAUS,YAAa,CAAE5lB,GAAIsD,EAAKtD,MAC3C,IAAX0J,GAAiByb,EAAUM,UAET,IAAX/b,GAAgByb,EAAUM,UACnCN,EAAUS,YAAYlgB,KAAKpC,GAF3B6hB,EAAUS,YAAY7E,OAAOrX,EAAO,EAIxC,EACAmc,cAAa,SAAErjB,EAAO,GAAmB,IAAjBye,EAAM,EAANA,OAAQhP,EAAK,EAALA,MACZzP,EAAMud,kBAAkBkB,EAAOjhB,IACvC8lB,WAAa7T,CACzB,EACA8T,qBAAoB,SAAEvjB,EAAO,GAAY,IAAVye,EAAM,EAANA,OACXze,EAAMud,kBAAkBkB,EAAOjhB,IACvC8lB,WAAa7E,EAAO6E,UAChC,EACAE,WAAU,SAAExjB,EAAO,GAAY,IAAVye,EAAM,EAANA,OACbkE,EAAY3iB,EAAMud,kBAAkBkB,EAAOjhB,IAC7CmlB,IAAWA,EAAUjE,SAAU,EACrC,EACA+E,eAAc,SAAEzjB,EAAO0jB,GACrB/lB,OAAO0L,OAAOrJ,EAAMud,mBAAmB1E,SAAQ,SAAA4F,GACzCiF,EAAUjF,KACZA,EAAOC,SAAU,EAErB,GACF,EACAiF,WAAU,SAAE3jB,EAAO,GAAqB,IAAnBmf,EAAQ,EAARA,SAAU1P,EAAK,EAALA,MAC7BzP,EAAM2d,UAAUwB,GAAUvC,QAAUnN,CACtC,EACAmU,QAAO,SAAE5jB,EAAO,GAAc,IAAZxC,EAAE,EAAFA,GAAIqmB,EAAI,EAAJA,KACF7jB,EAAMud,kBAAkB/f,GAChCqmB,KAAOA,CACnB,EACAC,wBAAuB,SAAE9jB,EAAO,GAAW,IAATyP,EAAK,EAALA,MAChCzP,EAAMyd,cAAcb,QAAUnN,CAChC,EACAsU,wBAAuB,SAAE/jB,EAAO,GAAW,IAATyP,EAAK,EAALA,MAChCzP,EAAMyd,cAAcR,2BAA6BxN,CACnD,EACAuU,wBAAuB,SAAEhkB,GACvB,IAAKA,EAAMyd,cAAc3f,MAAM,SAAC0hB,GAC9BA,EAAayC,MAAO,CACtB,GACF,EACAgC,6BAA4B,SAAEjkB,EAAO,GAAQ,IAANxC,EAAE,EAAFA,GAC/BgiB,EAAe,IAAKxf,EAAMyd,cAAc3f,MAAM,SAAAmS,GAAC,OAAIA,EAAEzS,KAAOA,CAAE,IAChEgiB,IAAcA,EAAayC,MAAO,EACxC,EACAiC,oBAAmB,SAAElkB,EAAO,GAAQ,IAANxC,EAAE,EAAFA,GAC5BwC,EAAMyd,cAAc3f,KAAOkC,EAAMyd,cAAc3f,KAAKc,QAAO,SAAAqR,GAAC,OAAIA,EAAEzS,KAAOA,CAAE,GAC7E,EACA2mB,qBAAoB,SAAEnkB,EAAO,GAAY,IAAVokB,EAAM,EAANA,OAC7BpkB,EAAMyd,cAAc3f,KAAOkC,EAAMyd,cAAc3f,KAAKc,QAAO,SAAAqR,GAAC,OAAImU,CAAM,GACxE,EACAC,mBAAkB,SAAErkB,EAAO,GAAiB,IAAfxC,EAAE,EAAFA,GAAI8mB,EAAO,EAAPA,QACzB9E,EAAe,IAAKxf,EAAMyd,cAAc3f,MAAM,SAAAmS,GAAC,OAAIA,EAAEzS,KAAOA,CAAE,IACpEgiB,GAAgB8E,EAAQ9E,EAC1B,EACA+E,WAAU,SAAEvkB,EAAO,GAAkB,IAAhBmf,EAAQ,EAARA,SAAU3hB,EAAE,EAAFA,GAC7BwC,EAAM2d,UAAUwB,GAAUpC,YAAcvf,CAC1C,EACAgnB,cAAa,SAAExkB,GACbrC,OAAOD,KAAKsC,EAAM2d,WAAW9E,SAAQ,SAACsG,GACpCnf,EAAM2d,UAAUwB,GAAUpC,YAAc/c,EAAM2d,UAAUwB,GAAU1C,KACpE,GACF,EACAgI,WAAU,SAAEzkB,EAAO,GAAuC,IAArCxC,EAAE,EAAFA,GAAIknB,EAAgB,EAAhBA,iBAAkBlT,EAAW,EAAXA,YACnCmR,EAAY3iB,EAAMud,kBAAkB/f,GAC1CmlB,EAAUS,YAAcsB,EAAiB9lB,QAAO,SAAA0L,GAAC,OAAIA,CAAC,IAEtDqY,EAAUO,WAAaP,EAAUS,YAAYlkB,OAC7CyjB,EAAUM,WAAaN,EAAUS,YAAYuB,MAAK,gBAAGnnB,EAAE,EAAFA,GAAE,OAAOgU,EAAYhU,KAAOA,CAAE,GACrF,EACAonB,QAAO,SAAE5kB,EAAO,GAAuC,IAArCxC,EAAE,EAAFA,GAAIqnB,EAAgB,EAAhBA,iBAAkBrT,EAAW,EAAXA,YAChCmR,EAAY3iB,EAAMud,kBAAkB/f,GAC1CmlB,EAAUE,YAAcgC,EAAiBjmB,QAAO,SAAA0L,GAAC,OAAIA,CAAC,IAEtDqY,EAAU1B,SAAW0B,EAAUE,YAAY3jB,OAC3CyjB,EAAU3B,YAAc2B,EAAUE,YAAY8B,MAAK,gBAAGnnB,EAAE,EAAFA,GAAE,OAAOgU,EAAYhU,KAAOA,CAAE,GACtF,EACAsnB,oBAAmB,SAAE9kB,EAAO,GAAqC,IAAnCxC,EAAE,EAAFA,GAAIunB,EAAc,EAAdA,eAA2B,EAAXvT,YACjCxR,EAAMud,kBAAkB/f,GAChCwnB,gBAAkBD,CAC3B,EACAE,eAAc,SAAEjlB,EAAO,GAA4B,IAA1BxC,EAAE,EAAFA,GAAIS,EAAK,EAALA,MAAOuT,EAAW,EAAXA,YAC5BiN,EAASze,EAAMud,kBAAkB/f,GACjC0nB,EAAgB,IAAUzG,EAAOuG,gBAAiB,CAAEzlB,KAAMtB,IAC1DknB,EAAW1G,EAAOuG,gBAAgBE,IAAkB,CAAE3lB,KAAMtB,EAAOmnB,MAAO,EAAGC,SAAU,IAEvFC,EAAc,OACfH,GAAQ,IACXC,MAAOD,EAASC,MAAQ,EACxBG,IAAI,EACJF,SAAU,GAAF,eACHF,EAASE,UAAQ,CACpB7T,MAKA0T,GAAiB,EACnBzG,EAAOuG,gBAAgBE,GAAiBI,EAExC7G,EAAOuG,gBAAkB,GAAH,eAAOvG,EAAOuG,iBAAe,CAAEM,GAEzD,EACAE,kBAAiB,SAAExlB,EAAO,GAA4B,IAA1BxC,EAAE,EAAFA,GAAIS,EAAK,EAALA,MAAOuT,EAAW,EAAXA,YAC/BiN,EAASze,EAAMud,kBAAkB/f,GACjC0nB,EAAgB,IAAUzG,EAAOuG,gBAAiB,CAAEzlB,KAAMtB,IAChE,KAAIinB,EAAgB,GAApB,CAEA,IAAMC,EAAW1G,EAAOuG,gBAAgBE,GAClCG,EAAWF,EAASE,UAAY,GAEhCC,EAAc,OACfH,GAAQ,IACXC,MAAOD,EAASC,MAAQ,EACxBG,IAAI,EACJF,SAAUA,EAASzmB,QAAO,SAAA6T,GAAG,OAAIA,EAAIjV,KAAOgU,EAAYhU,EAAE,MAGxD8nB,EAAYF,MAAQ,EACtB3G,EAAOuG,gBAAgBE,GAAiBI,EAExC7G,EAAOuG,gBAAkBvG,EAAOuG,gBAAgBpmB,QAAO,SAAA6mB,GAAC,OAAIA,EAAElmB,OAAStB,CAAK,GAfjD,CAiB/B,EACAynB,qBAAoB,SAAE1lB,EAAO,GAAc,IAAZxC,EAAE,EAAFA,GAAImoB,EAAI,EAAJA,KAClB3lB,EAAMud,kBAAkB/f,GAChCmoB,KAAOA,CAChB,EACAC,iBAAgB,SAAE5lB,EAAO,GAAsB,IAApBuZ,EAAQ,EAARA,SAAUsM,EAAM,EAANA,OACnC7lB,EAAMud,kBAAkBhE,GAAUuM,cAAgBD,CACpD,GAGI1J,GAAW,CACfnc,MAAOqd,IACP/M,QAAS,CACPmP,eAAc,cAA0H,IAAtHjP,EAAS,EAATA,UAAWK,EAAM,EAANA,OAAYsL,EAAQ,EAARA,SAAQ,IAAEuD,gBAAAA,OAAe,IAAG,GAAK,MAAEP,SAAAA,OAAQ,IAAG,GAAK,MAAEQ,WAAAA,OAAU,IAAG,GAAK,EAAEzD,EAAM,EAANA,OAAQ0D,EAAU,EAAVA,WACxH/O,EAAO,iBAAkB,CAAEsL,SAAAA,EAAUuD,gBAAAA,EAAiBP,SAAAA,EAAUQ,WAAAA,EAAY7e,KAAM0P,EAAU3P,MAAM2Q,YAAa0K,OAAAA,EAAQ0D,WAAAA,GACzH,EACA8B,oBAAmB,SAAEvjB,EAAO,GAA0B,IAAxBsf,EAAa,EAAbA,cAAewC,EAAK,EAALA,OAM3CpP,EAL0C1S,EAAlC0S,QAKD,sBAAuB,CAAE9Q,SALU5B,EAA1B4B,SAK0B0d,cAAAA,EAAewC,MAAAA,EAAO9O,YALtBhT,EAAhBgT,YAKmDwQ,2BAH1C,SAACnC,IAClCuG,EAAAA,EAAAA,IAAsB5nB,EAAOqhB,EAC/B,GAEF,EACAsE,wBAAuB,cAAa,EAATtT,WACzBK,EAD0C,EAANA,QAC7B,0BAA2B,CAAEpB,MADiB,EAALA,OAElD,EACAsU,wBAAuB,cAAa,EAATvT,WACzBK,EAD0C,EAANA,QAC7B,0BAA2B,CAAEpB,MADiB,EAALA,OAElD,EACAuW,YAAW,WAA2BxoB,GAAI,IAA3BgT,EAAS,EAATA,UAAWzQ,EAAQ,EAARA,SACxB,OAAOyQ,EAAUyV,IAAIC,kBAAkBF,YAAY,CAAExoB,GAAAA,IAClDL,MAAK,SAACshB,GAAM,OAAK1e,EAAS,iBAAkB,CAAEoc,SAAU,CAACsC,IAAU,GACxE,EACA0H,kBAAiB,WAA2B1H,GAAQ,IAA/BjO,EAAS,EAATA,UACnB,OADsC,EAARzQ,SACvBgc,EAAAA,GAAAA,kBAA6B,CAAEve,GAAIihB,EAAOjhB,GAAIwe,YAAaxL,EAAU3P,MAAM2Q,YAAYwK,aAChG,EACAoK,mBAAkB,WAA2B3H,GAC3C,OAD6B,EAATjO,UAAmB,EAARzQ,SACxBgc,EAAAA,GAAAA,mBAA8B,CAAE0C,OAAAA,GACzC,EACA4H,aAAY,WAAyB5H,GAAQ,IAA7BjO,EAAS,EAATA,WACdK,EAD+B,EAANA,QAClB,aAAc,CAAE4N,OAAAA,IACvB1C,EAAAA,GAAAA,aAAwB,CAAEve,GAAIihB,EAAOjhB,GAAIwe,YAAaxL,EAAU3P,MAAM2Q,YAAYwK,aACpF,EACAsK,iBAAgB,WAAyB9oB,GAAI,IAAzBgT,EAAS,EAATA,WAElBK,EAFmC,EAANA,QAEtB,aAAc,CAAE4N,OADRjO,EAAU2L,SAASoB,kBAAkB/f,IAEtD,EACA+oB,sBAAqB,WAAc7C,IACjC7S,EAD6B,EAANA,QAChB,iBAAkB6S,EAC3B,EACA9C,SAAQ,WAAyBnC,GAAQ,IAA7BjO,EAAS,EAATA,UAAWK,EAAM,EAANA,OAErBA,EAAO,eAAgB,CAAE4N,OAAAA,EAAQhP,OAAO,IACxCe,EAAUyV,IAAIC,kBAAkBtF,SAAS,CAAEpjB,GAAIihB,EAAOjhB,KACnDL,MAAK,SAAAshB,GAAM,OAAI5N,EAAO,sBAAuB,CAAE4N,OAAAA,EAAQ3d,KAAM0P,EAAU3P,MAAM2Q,aAAc,GAChG,EACAgV,WAAU,WAAyB/H,GAAQ,IAA7BjO,EAAS,EAATA,UAAWK,EAAM,EAANA,OAEvBA,EAAO,eAAgB,CAAE4N,OAAAA,EAAQhP,OAAO,IACxCe,EAAUyV,IAAIC,kBAAkBM,WAAW,CAAEhpB,GAAIihB,EAAOjhB,KACrDL,MAAK,SAAAshB,GAAM,OAAI5N,EAAO,sBAAuB,CAAE4N,OAAAA,EAAQ3d,KAAM0P,EAAU3P,MAAM2Q,aAAc,GAChG,EACAiV,oBAAmB,WAA2BvK,GAAQ,IAA/B1L,EAAS,EAATA,UAAWzQ,EAAQ,EAARA,SAChCyQ,EAAUyV,IAAIC,kBAAkBO,oBAAoB,CAAEjpB,GAAI0e,IACvD/e,MAAK,SAAAgf,GAAQ,OAAIpc,EAAS,iBAAkB,CAAEoc,SAAAA,EAAUgD,SAAU,OAAQjD,OAAAA,EAAQwD,iBAAiB,EAAMC,YAAY,GAAO,GACjI,EACA+G,UAAS,WAA2BnN,GAAU,IAAjC/I,EAAS,EAATA,UAAWzQ,EAAQ,EAARA,SACtB,OAAOyQ,EAAUyV,IAAIC,kBAAkBS,aAAa,CAAEnpB,GAAI+b,IACvDpc,MAAK,SAACshB,GAAM,OAAK1e,EAAS,iBAAkB,CAAEoc,SAAU,CAACsC,IAAU,GACxE,EACAmI,YAAW,WAA2BrN,GAAU,IAAjC/I,EAAS,EAATA,UAAWzQ,EAAQ,EAARA,SACxByQ,EAAUyV,IAAIC,kBAAkBW,eAAe,CAAErpB,GAAI+b,IAClDpc,MAAK,SAACshB,GAAM,OAAK1e,EAAS,iBAAkB,CAAEoc,SAAU,CAACsC,IAAU,GACxE,EACAqI,iBAAgB,WAAyBvN,GAAU,IAA/B/I,EAAS,EAATA,UAAWK,EAAM,EAANA,OAC7B,OAAOL,EAAUyV,IAAIC,kBAAkBY,iBAAiB,CAAEtpB,GAAI+b,IAC3Dpc,MAAK,SAACshB,GAAM,OAAK5N,EAAO,iBAAkB4N,EAAO,GACtD,EACAsI,mBAAkB,WAAyBxN,GAAU,IAA/B/I,EAAS,EAATA,UAAWK,EAAM,EAANA,OAC/B,OAAOL,EAAUyV,IAAIC,kBAAkBa,mBAAmB,CAAEvpB,GAAI+b,IAC7Dpc,MAAK,SAACshB,GAAM,OAAK5N,EAAO,iBAAkB4N,EAAO,GACtD,EACA+B,QAAO,WAAyB/B,GAAQ,IAA7BjO,EAAS,EAATA,UAAWK,EAAM,EAANA,OAEpBA,EAAO,eAAgB,CAAE4N,OAAAA,EAAQhP,OAAO,IACxCe,EAAUyV,IAAIC,kBAAkB1F,QAAQ,CAAEhjB,GAAIihB,EAAOjhB,KAClDL,MAAK,SAAAshB,GAAM,OAAI5N,EAAO,sBAAuB,CAAE4N,OAAQA,EAAOiC,iBAAkB5f,KAAM0P,EAAU3P,MAAM2Q,aAAc,GACzH,EACAwV,UAAS,WAAyBvI,GAAQ,IAA7BjO,EAAS,EAATA,UAAWK,EAAM,EAANA,OAEtBA,EAAO,eAAgB,CAAE4N,OAAAA,EAAQhP,OAAO,IACxCe,EAAUyV,IAAIC,kBAAkBc,UAAU,CAAExpB,GAAIihB,EAAOjhB,KACpDL,MAAK,SAAAshB,GAAM,OAAI5N,EAAO,sBAAuB,CAAE4N,OAAAA,EAAQ3d,KAAM0P,EAAU3P,MAAM2Q,aAAc,GAChG,EACAyV,SAAQ,WAAyBxI,GAAQ,IAA7BjO,EAAS,EAATA,UAAWK,EAAM,EAANA,OACrBA,EAAO,gBAAiB,CAAE4N,OAAAA,EAAQhP,OAAO,IACzCe,EAAUyV,IAAIC,kBAAkBgB,eAAe,CAAE1pB,GAAIihB,EAAOjhB,KACzDL,MAAK,SAAAshB,GACJ5N,EAAO,uBAAwB,CAAE4N,OAAAA,GACnC,GACJ,EACA0I,WAAU,WAAyB1I,GAAQ,IAA7BjO,EAAS,EAATA,UAAWK,EAAM,EAANA,OACvBA,EAAO,gBAAiB,CAAE4N,OAAAA,EAAQhP,OAAO,IACzCe,EAAUyV,IAAIC,kBAAkBkB,iBAAiB,CAAE5pB,GAAIihB,EAAOjhB,KAC3DL,MAAK,SAAAshB,GACJ5N,EAAO,uBAAwB,CAAE4N,OAAAA,GACnC,GACJ,EACA8F,WAAU,cAAa,EAAT/T,WACZK,EAD6B,EAANA,QAChB,aAAc,CAAEsO,SADoB,EAARA,SACF3hB,GADc,EAAFA,IAE/C,EACAgnB,cAAa,YAAa,EAAThU,WACfK,EADgC,EAANA,QACnB,gBACT,EACAmT,wBAAuB,YAAyB,IAArBxT,EAAS,EAATA,WACzBK,EAD0C,EAANA,QAC7B,2BACPkL,EAAAA,GAAAA,wBAAmC,CACjCve,GAAIgT,EAAU2L,SAASsB,cAAchB,MACrCT,YAAaxL,EAAU3P,MAAM2Q,YAAYwK,aAE7C,EACAiI,6BAA4B,cAAiC,IAA7BzT,EAAS,EAATA,UAAWK,EAAM,EAANA,OAAYrT,EAAE,EAAFA,GACrDqT,EAAO,+BAAgC,CAAErT,GAAAA,IACzCue,EAAAA,GAAAA,wBAAmC,CACjCsL,QAAQ,EACR7pB,GAAAA,EACAwe,YAAaxL,EAAU3P,MAAM2Q,YAAYwK,aAE7C,EACAsL,yBAAwB,cAAa,EAAT9W,WAC1BK,EAD2C,EAANA,QAC9B,sBAAuB,CAAErT,GADmB,EAAFA,IAEnD,EACA0mB,oBAAmB,cAAiC,IAA7B1T,EAAS,EAATA,UAAWK,EAAM,EAANA,OAAYrT,EAAE,EAAFA,GAC5CqT,EAAO,sBAAuB,CAAErT,GAAAA,IAChCgT,EAAUyV,IAAIC,kBAAkBhC,oBAAoB,CAAE1mB,GAAAA,GACxD,EACA6mB,mBAAkB,cAAa,EAAT7T,WACpBK,EADqC,EAANA,QACxB,qBAAsB,CAAErT,GADc,EAAFA,GACR8mB,QADmB,EAAPA,SAEjD,EACAiD,oBAAmB,WAAyB/pB,GAAI,IAAzBgT,EAAS,EAATA,UAAWK,EAAM,EAANA,OAChC5T,QAAQgd,IAAI,CACVzJ,EAAUyV,IAAIC,kBAAkBsB,sBAAsB,CAAEhqB,GAAAA,IACxDgT,EAAUyV,IAAIC,kBAAkBuB,sBAAsB,CAAEjqB,GAAAA,MACvDL,MAAK,YAA0C,mBAAxC0nB,EAAgB,KAAEH,EAAgB,KAC1C7T,EAAO,UAAW,CAAErT,GAAAA,EAAIqnB,iBAAAA,EAAkBrT,YAAahB,EAAU3P,MAAM2Q,cACvEX,EAAO,aAAc,CAAErT,GAAAA,EAAIknB,iBAAAA,EAAkBlT,YAAahB,EAAU3P,MAAM2Q,aAC5E,GACF,EACAkW,eAAc,cAAkD,IAA9ClX,EAAS,EAATA,UAAWzQ,EAAQ,EAARA,SAAU8Q,EAAM,EAANA,OAAYrT,EAAE,EAAFA,GAAIS,EAAK,EAALA,MAC/CuT,EAAchB,EAAU3P,MAAM2Q,YAC/BA,IAELX,EAAO,iBAAkB,CAAErT,GAAAA,EAAIS,MAAAA,EAAOuT,YAAAA,IACtChB,EAAUyV,IAAIC,kBAAkBwB,eAAe,CAAElqB,GAAAA,EAAIS,MAAAA,IAASd,MAC5D,SAAAid,GACEra,EAAS,wBAAyBvC,EACpC,IAEJ,EACAmqB,iBAAgB,cAAkD,IAA9CnX,EAAS,EAATA,UAAWzQ,EAAQ,EAARA,SAAU8Q,EAAM,EAANA,OAAYrT,EAAE,EAAFA,GAAIS,EAAK,EAALA,MACjDuT,EAAchB,EAAU3P,MAAM2Q,YAC/BA,IAELX,EAAO,oBAAqB,CAAErT,GAAAA,EAAIS,MAAAA,EAAOuT,YAAAA,IACzChB,EAAUyV,IAAIC,kBAAkByB,iBAAiB,CAAEnqB,GAAAA,EAAIS,MAAAA,IAASd,MAC9D,SAAAid,GACEra,EAAS,wBAAyBvC,EACpC,IAEJ,EACAoqB,sBAAqB,WAAyBpqB,GAAI,IAAzBgT,EAAS,EAATA,UAAWK,EAAM,EAANA,OAClCL,EAAUyV,IAAIC,kBAAkB2B,oBAAoB,CAAErqB,GAAAA,IAAML,MAC1D,SAAA4nB,GACElU,EAAO,sBAAuB,CAAErT,GAAAA,EAAIunB,eAAAA,EAAgBvT,YAAahB,EAAU3P,MAAM2Q,aACnF,GAEJ,EACAsW,UAAS,WAAyBtqB,GAAI,IAAzBgT,EAAS,EAATA,UAAWK,EAAM,EAANA,OACtBL,EAAUyV,IAAIC,kBAAkBsB,sBAAsB,CAAEhqB,GAAAA,IACrDL,MAAK,SAAA0nB,GAAgB,OAAIhU,EAAO,UAAW,CAAErT,GAAAA,EAAIqnB,iBAAAA,EAAkBrT,YAAahB,EAAU3P,MAAM2Q,aAAc,GACnH,EACAuW,aAAY,WAAyBvqB,GAAI,IAAzBgT,EAAS,EAATA,UAAWK,EAAM,EAANA,OACzBL,EAAUyV,IAAIC,kBAAkBuB,sBAAsB,CAAEjqB,GAAAA,IACrDL,MAAK,SAAAunB,GAAgB,OAAI7T,EAAO,aAAc,CAAErT,GAAAA,EAAIknB,iBAAAA,EAAkBlT,YAAahB,EAAU3P,MAAM2Q,aAAc,GACtH,EACAwW,OAAM,SAAE7pB,EAAO,GAAgD,IAA9C8pB,EAAC,EAADA,EAAG/qB,EAAO,EAAPA,QAASgrB,EAAK,EAALA,MAAOC,EAAM,EAANA,OAAQC,EAAS,EAATA,UAAW7kB,EAAI,EAAJA,KACrD,OAAOpF,EAAMqS,UAAUyV,IAAIC,kBAAkBmC,QAAQ,CAAEJ,EAAAA,EAAG/qB,QAAAA,EAASgrB,MAAAA,EAAOC,OAAAA,EAAQC,UAAAA,EAAW7kB,KAAAA,IAC1FpG,MAAK,SAACW,GAIL,OAHAK,EAAM0S,OAAO,cAAe/S,EAAKunB,UACjClnB,EAAM0S,OAAO,cAAe/S,EAAKqe,SAASvf,KAAI,SAAA+jB,GAAC,OAAIA,EAAE7f,IAAI,IAAElC,QAAO,SAAA0pB,GAAC,OAAIA,CAAC,KACxEnqB,EAAM0S,OAAO,iBAAkB,CAAEsL,SAAUre,EAAKqe,WACzCre,CACT,GACJ,EACA8nB,iBAAgB,eACd/U,EADwB,EAANA,QACX,mBAAoB,CAAE0I,SADS,EAARA,SACSsM,OADO,EAANA,QAE1C,GAEF5W,UAAAA,IAGF,YCzwBO,IAKMA,GAAY,CACvBsZ,SAAQ,SAAEvoB,EAAOyP,GACfzP,EAAMwoB,SAAW/Y,CACnB,EACAgZ,QAAO,SAAEzoB,EAAO,GAAmB,IAAjB0oB,EAAM,EAANA,OAAQ/X,EAAK,EAALA,MACnB3Q,EAAM2oB,eAAeD,KACxB1oB,EAAM2oB,eAAeD,GAAU,CAAEE,WAAY,KAE/C5oB,EAAM2oB,eAAeD,GAAQ/X,MAAQA,EAErC,IAAMkY,EAAQ,IAAK7oB,EAAMwoB,SAAU,CAAEhrB,GAAIkrB,IACpCG,EAGHA,EAAMlY,MAAQA,EAFd3Q,EAAMwoB,SAAStlB,KAAK,CAAE1F,GAAIkrB,EAAQ/X,MAAAA,GAItC,EACAmY,gBAAe,SAAE9oB,EAAO,GAAwB,IAAtB0oB,EAAM,EAANA,OAAQE,EAAU,EAAVA,WAC3B5oB,EAAM2oB,eAAeD,KACxB1oB,EAAM2oB,eAAeD,GAAU,CAAEE,WAAY,KAE/C5oB,EAAM2oB,eAAeD,GAAQE,WAAaA,CAC5C,EACAG,eAAc,SAAE/oB,EAAO,GAAuB,IAArB0oB,EAAM,EAANA,OAAQM,EAAS,EAATA,UAC1BhpB,EAAM2oB,eAAeD,KACxB1oB,EAAM2oB,eAAeD,GAAU,CAAEE,WAAY,KAE/C5oB,EAAM2oB,eAAeD,GAAQE,WAAW1lB,KAAK8lB,EAC/C,EACAC,kBAAiB,SAAEjpB,EAAO,GAAuB,IAArB0oB,EAAM,EAANA,OAAQM,EAAS,EAATA,UAC7BhpB,EAAM2oB,eAAeD,KACxB1oB,EAAM2oB,eAAeD,GAAU,CAAEE,WAAY,KAE/C,IAAQA,EAAe5oB,EAAM2oB,eAAeD,GAApCE,WACFM,EAAM,IAAIljB,IAAI4iB,GACpBM,EAAG,OAAQF,GACXhpB,EAAM2oB,eAAeD,GAAQE,YAAa,OAAIM,EAChD,EACAC,WAAU,SAAEnpB,EAAO,GAAY,IAAV0oB,EAAM,EAANA,cACZ1oB,EAAM2oB,eAAeD,GAC5B,IAAO1oB,EAAMwoB,UAAU,SAAAhsB,GAAI,OAAIA,EAAKgB,KAAOkrB,CAAM,GACnD,GA0EIU,GAAQ,CACZppB,MAzH0B,CAC1BwoB,SAAU,GACVG,eAAgB,CAAC,GAwHjB1Z,UAAAA,GACAqB,QA1Ec,CACdiY,SAAQ,WAAc9Y,IACpBoB,EADgB,EAANA,QACH,WAAYpB,EACrB,EACA4Z,WAAU,cAAoC,IAAhC7Y,EAAS,EAATA,UAAWK,EAAM,EAANA,OAAYF,EAAK,EAALA,MACnC,OAAOH,EAAUyV,IAAIC,kBAAkBmD,WAAW,CAAE1Y,MAAAA,IACjDxT,MAAK,SAACX,GAEL,OADAqU,EAAO,UAAW,CAAE6X,OAAQlsB,EAAKgB,GAAImT,MAAAA,IAC9BnU,CACT,GACJ,EACA8sB,UAAS,cAAqC,IAAjC9Y,EAAS,EAATA,UAAWK,EAAM,EAANA,OAAY6X,EAAM,EAANA,OAClC,OAAOlY,EAAUyV,IAAIC,kBAAkBqD,QAAQ,CAAEb,OAAAA,IAC9CvrB,MAAK,SAACX,GAAI,OAAKqU,EAAO,UAAW,CAAE6X,OAAQlsB,EAAKgB,GAAImT,MAAOnU,EAAKmU,OAAQ,GAC7E,EACA6Y,kBAAiB,cAAqC,IAAjChZ,EAAS,EAATA,UAAWK,EAAM,EAANA,OAAY6X,EAAM,EAANA,OAC1C,OAAOlY,EAAUyV,IAAIC,kBAAkBuD,gBAAgB,CAAEf,OAAAA,IACtDvrB,MAAK,SAACyrB,GAAU,OAAK/X,EAAO,kBAAmB,CAAE6X,OAAAA,EAAQE,WAAAA,GAAa,GAC3E,EACAH,QAAO,cAA4C,IAAxCjY,EAAS,EAATA,UAAWK,EAAM,EAANA,OAAY6X,EAAM,EAANA,OAAQ/X,EAAK,EAALA,MACxCH,EAAUyV,IAAIC,kBAAkBwD,WAAW,CAAEhB,OAAAA,EAAQ/X,MAAAA,IACrDE,EAAO,UAAW,CAAE6X,OAAAA,EAAQ/X,MAAAA,GAC9B,EACAmY,gBAAe,cAAiD,IAA7CtY,EAAS,EAATA,UAAWK,EAAM,EAANA,OAAY6X,EAAM,EAANA,OAAQE,EAAU,EAAVA,WAC1Ce,EAAQnZ,EAAU4Y,MAAMT,eAAeD,GAAQE,YAAc,GAC7DgB,EAAQhB,EAAWhqB,QAAO,SAAApB,GAAE,OAAKmsB,EAAMhpB,SAASnD,EAAG,IACnDqsB,EAAUF,EAAM/qB,QAAO,SAAApB,GAAE,OAAKorB,EAAWjoB,SAASnD,EAAG,IAC3DqT,EAAO,kBAAmB,CAAE6X,OAAAA,EAAQE,WAAAA,IAChCgB,EAAM1qB,OAAS,GACjBsR,EAAUyV,IAAIC,kBAAkB4D,kBAAkB,CAAEpB,OAAAA,EAAQE,WAAYgB,IAEtEC,EAAQ3qB,OAAS,GACnBsR,EAAUyV,IAAIC,kBAAkB6D,uBAAuB,CAAErB,OAAAA,EAAQE,WAAYiB,GAEjF,EACAd,eAAc,cAAgD,IAA5CvY,EAAS,EAATA,UAAWK,EAAM,EAANA,OAAY6X,EAAM,EAANA,OAAQM,EAAS,EAATA,UAC/C,OAAOxY,EACJyV,IACAC,kBACA4D,kBAAkB,CAAEpB,OAAAA,EAAQE,WAAY,CAACI,KACzC7rB,MAAK,SAACsE,GAEL,OADAoP,EAAO,iBAAkB,CAAE6X,OAAAA,EAAQM,UAAAA,IAC5BvnB,CACT,GACJ,EACAwnB,kBAAiB,cAAgD,IAA5CzY,EAAS,EAATA,UAAWK,EAAM,EAANA,OAAY6X,EAAM,EAANA,OAAQM,EAAS,EAATA,UAClD,OAAOxY,EACJyV,IACAC,kBACA6D,uBAAuB,CAAErB,OAAAA,EAAQE,WAAY,CAACI,KAC9C7rB,MAAK,SAACsE,GAEL,OADAoP,EAAO,oBAAqB,CAAE6X,OAAAA,EAAQM,UAAAA,IAC/BvnB,CACT,GACJ,EACA0nB,WAAU,cAAqC,IAAjC3Y,EAAS,EAATA,UAAWK,EAAM,EAANA,OAAY6X,EAAM,EAANA,OACnClY,EAAUyV,IAAIC,kBAAkBiD,WAAW,CAAET,OAAAA,IAC7C7X,EAAO,aAAc,CAAE6X,OAAAA,GACzB,GAiBArQ,QAdqB,CACrB2R,cAAe,SAAAhqB,GAAK,OAAI,SAAAxC,GACtB,GAAKwC,EAAM2oB,eAAenrB,GAC1B,OAAOwC,EAAM2oB,eAAenrB,GAAImT,KAClC,CAAC,EACDsZ,iBAAkB,SAAAjqB,GAAK,OAAI,SAAAxC,GACzB,OAAO,OAAIwC,EAAM2oB,eAAenrB,GAAIorB,WACtC,CAAC,IAUH,Y,sKC/GMsB,GAAiB,SAAH,GAWd,IAVJ/rB,EAAK,EAALA,MACA6d,EAAW,EAAXA,YAAW,IACXmD,SAAAA,OAAQ,IAAG,YAAS,MACpBc,MAAAA,OAAK,IAAG,GAAK,MACbP,gBAAAA,OAAe,IAAG,GAAK,MACvBxD,OAAAA,OAAM,IAAG,GAAK,MACdwM,OAAAA,OAAM,IAAG,GAAK,MACdlnB,IAAAA,OAAG,IAAG,GAAK,EACX2oB,EAAK,EAALA,MACAC,EAAK,EAALA,MAEMjY,EAAO,CAAEgN,SAAAA,EAAUnD,YAAAA,GACnBxL,EAAYrS,EAAMqS,WAAarS,EAAM6B,MACnCqY,EAAYla,EAAZka,QACFgS,EAAe7Z,EAAU2L,SAASwB,UAAU,KAAUwB,IAC5D,EAA4C9G,EAAQ/G,aAA5CuC,EAAc,EAAdA,eAAgByW,EAAe,EAAfA,gBAClBC,IAAa/Z,EAAU3P,MAAM2Q,YAE/ByO,EACF9N,EAAKgY,MAAQA,GAASE,EAAa3N,WAErBtU,IAAVgiB,EACFjY,EAAKiY,MAAQC,EAAa5N,MACP,OAAV2N,IACTjY,EAAKiY,MAAQA,GAIjBjY,EAAK+J,OAASA,EACd/J,EAAKuW,OAASA,EACdvW,EAAK3Q,IAAMA,EACX2Q,EAAKqY,WAAa3W,EACd0W,GAAY,CAAC,UAAW,SAAU,qBAAqB5pB,SAASwe,KAClEhN,EAAKmY,gBAAkBA,GAGzB,IAAMG,EAAyBJ,EAAalO,SAASjd,OAErD,OAAO6c,EAAAA,GAAAA,cAAyB5J,GAC7BhV,MAAK,SAAAutB,GACJ,GAAIA,EAASC,OACX,MAAM,IAAIttB,MAAM,GAAD,OAAIqtB,EAASjM,OAAM,YAAIiM,EAASE,aAGjD,IAAczO,EAAyBuO,EAA/B5sB,KAAgB8hB,EAAe8K,EAAf9K,WAKxB,OAJKK,GAAS9D,EAASjd,QAAU,KAAOmrB,EAAazN,SAAW6N,EAAyB,GACvFtsB,EAAM4B,SAAS,aAAc,CAAEof,SAAAA,EAAU3hB,GAAI6sB,EAAa5N,QA5DnD,SAAH,GAAmF,IAA7Ete,EAAK,EAALA,MAAOge,EAAQ,EAARA,SAAUgD,EAAQ,EAARA,SAAUO,EAAe,EAAfA,gBAAiBxD,EAAM,EAANA,OAAQwM,EAAM,EAANA,OAAQ9I,EAAU,EAAVA,WACtEiL,EAAa,KAAU1L,GAE7BhhB,EAAM4B,SAAS,iBAAkB,CAC/Bof,SAAU0L,EACV3O,OAAAA,EACAwM,OAAAA,EACAvM,SAAAA,EACAuD,gBAAAA,EACAE,WAAAA,GAEJ,CAmDMkL,CAAO,CAAE3sB,MAAAA,EAAOge,SAAAA,EAAUgD,SAAAA,EAAUO,gBAAAA,EAAiBxD,OAAAA,EAAQwM,OAAAA,EAAQ9I,WAAAA,IAC9D,CAAEzD,SAAAA,EAAUyD,WAAAA,EACrB,IAAE,OACK,SAACxQ,GACNjR,EAAM4B,SAAS,mBAAoB,CACjC0J,MAAO,QACPuH,WAAY,iBACZC,YAAa,CAAC7B,EAAM2b,SACpB5qB,QAAS,KAEb,GACJ,EAaM6qB,GAAkB,CACtBd,eAAAA,GACAe,cAboB,SAAH,GAAkG,QAA5F9L,SAAAA,OAAQ,IAAG,YAAS,EAAEnD,EAAW,EAAXA,YAAa7d,EAAK,EAALA,MAAK,IAAE+d,OAAAA,OAAM,IAAG,GAAK,MAAEwM,OAAAA,OAAM,IAAG,GAAK,MAAElnB,IAAAA,OAAG,IAAG,GAAK,EAEtG6oB,GADYlsB,EAAMqS,WAAarS,EAAM6B,OACZmc,SAASwB,UAAU,KAAUwB,IACtDO,EAA0D,IAAxC2K,EAAa/N,gBAAgBpd,OAMrD,OALAmrB,EAAanO,OAASA,EACtBmO,EAAa3B,OAASA,EACtBwB,GAAe,CAAE/K,SAAAA,EAAUnD,YAAAA,EAAa7d,MAAAA,EAAOuhB,gBAAAA,EAAiBxD,OAAAA,EAAQwM,OAAAA,EAAQlnB,IAAAA,KAGzE0pB,EAAAA,GAAAA,IAFqB,WAAH,OACvBhB,GAAe,CAAE/K,SAAAA,EAAUnD,YAAAA,EAAa7d,MAAAA,EAAO+d,OAAAA,EAAQwM,OAAAA,EAAQlnB,IAAAA,GAAM,GAC3B,IAC9C,GAMA,Y,gBC1EA,SAVsB,SAAH,GAA+B,IAAzBwa,EAAW,EAAXA,YAAa7d,EAAK,EAALA,MAC9BgtB,EAAsB,WAAH,OAVJ,SAAH,GAA+B,IAAzBhtB,EAAK,EAALA,MAAO6d,EAAW,EAAXA,YAC/B,OAAOD,EAAAA,GAAAA,oBAA+B,CAAEC,YAAAA,IACrC7e,MAAK,SAACiuB,GACLjtB,EAAM0S,OAAO,oBAAqBua,GAClCjtB,EAAM0S,OAAO,cAAeua,EAC9B,IAAG,WAAO,IAAE,OACL,WAAO,GAClB,CAGoClB,CAAe,CAAElO,YAAAA,EAAa7d,MAAAA,GAAQ,EAExE,OADAgtB,KACOD,EAAAA,GAAAA,GAAgBC,EAAqB,IAC9C,ECbA,IAcME,GAAe,CACnBJ,cAPoB,SAAH,GAA+B,IAAzBjP,EAAW,EAAXA,YAAa7d,EAAK,EAALA,MAC9BgtB,EAAsB,WAAH,OATJ,SAAH,GAA+B,IAAzBhtB,EAAK,EAALA,MAAO6d,EAAW,EAAXA,YAC/B,OAAOD,EAAAA,GAAAA,WAAsB,CAAEC,YAAAA,IAC5B7e,MAAK,SAAAisB,GACJjrB,EAAM0S,OAAO,WAAYuY,EAC3B,IAAG,WAAO,IAAE,OACL,WAAO,GAClB,CAGoCc,CAAe,CAAElO,YAAAA,EAAa7d,MAAAA,GAAQ,EAExE,OADAgtB,KACOD,EAAAA,GAAAA,GAAgBC,EAAqB,KAC9C,GAMA,Y,ykBC0BA,SAzCiC,SAAAnP,GAAW,cAC1CsP,sBAAqB,YAA4D,IAAxDnM,EAAQ,EAARA,SAAUhhB,EAAK,EAALA,MAAK,IAAE+d,OAAAA,OAAM,IAAG,GAAK,MAAEwM,OAAAA,OAAM,IAAG,GAAK,EAAElnB,EAAG,EAAHA,IACxE,OAAOwpB,GAAAA,cAA8B,CAAE7L,SAAAA,EAAUhhB,MAAAA,EAAO6d,YAAAA,EAAaE,OAAAA,EAAQwM,OAAAA,EAAQlnB,IAAAA,GACvF,EAEA+pB,cAAa,SAAEpZ,GACb,OAAO6Y,GAAAA,eAA+B,SAAK7Y,GAAI,IAAE6J,YAAAA,IACnD,EAEAwP,2BAA0B,YAAa,IAATrtB,EAAK,EAALA,MAC5B,OAAOstB,GAAAA,EAAAA,cAAmC,CAAEttB,MAAAA,EAAO6d,YAAAA,GACrD,EAEA0P,mBAAkB,SAAEvZ,GAClB,OAAOsZ,GAAAA,EAAAA,eAAoC,SAAKtZ,GAAI,IAAE6J,YAAAA,IACxD,EAEA2P,4BAA2B,YAAa,IAATxtB,EAAK,EAALA,MAC7B,OAAOytB,GAAmC,CAAEztB,MAAAA,EAAO6d,YAAAA,GACrD,EAEA6P,mBAAkB,YAAa,IAAT1tB,EAAK,EAALA,MACpB,OAAOktB,GAAAA,cAA2B,CAAEltB,MAAAA,EAAO6d,YAAAA,GAC7C,EAEA8P,gBAAe,YAAa,IAEpBzoB,EAFgB,EAALlF,MACEqS,UAAUI,SAASgC,OAAO9Q,QAAQ,OAAQ,OAC1CiqB,EAAAA,EAAAA,IAAqB,CAAE/P,YAAAA,EAAagQ,OAAQ,SAC/D,OAAOC,EAAAA,EAAAA,IAAY,CAAE5oB,IAAAA,EAAK7F,GAAI,QAChC,GAEGG,OAAOsd,QAAQc,EAAAA,IAAYvJ,QAAO,SAACC,EAAK,GAAgB,mBAAfvH,EAAG,KAAEghB,EAAI,KACnD,OAAO,SACFzZ,GAAG,cACLvH,GAAM,SAACiH,GAAI,OAAK+Z,EAAK,IAAElQ,YAAAA,GAAgB7J,GAAO,IAEnD,GAAG,CAAC,IAAE,IAENga,kBAAmBpQ,EAAAA,GAAAA,mBAA4B,EC3C1C,IAAMqQ,GAAc,WAAH,OACtBnoB,OAAOooB,YACP3b,SAAS4b,gBAAgBC,aACzB7b,SAAS8b,KAAKD,WAAW,EAEdE,GAAe,WAAH,OACvBxoB,OAAOyoB,aACPhc,SAAS4b,gBAAgBK,cACzBjc,SAAS8b,KAAKG,YAAY,E,uBCPtBC,GAAe,GAAH,OAAM3oB,OAAO4oB,SAASC,OAAM,mBAEjCC,GAAiB,SAAH,GAAqD,IAA/CC,EAAQ,EAARA,SAAUC,EAAY,EAAZA,aAAcrc,EAAQ,EAARA,SAAUC,EAAM,EAANA,OACjE,GAAImc,GAAYC,EACd,OAAOhwB,QAAQC,QAAQ,CAAE8vB,SAAAA,EAAUC,aAAAA,IAGrC,IAAM5pB,EAAM,GAAH,OAAMuN,EAAQ,gBACjBsc,EAAO,IAAIjpB,OAAOkpB,SAMxB,OAJAD,EAAKE,OAAO,cAAe,aAAF,OAAenpB,OAAOopB,yBAAwB,aAAK,IAAIC,MAAQC,gBACxFL,EAAKE,OAAO,gBAAiBR,IAC7BM,EAAKE,OAAO,SAAU,gCAEfnpB,OAAOkW,MAAM9W,EAAK,CACvBmqB,OAAQ,OACRhB,KAAMU,IAEL/vB,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,IAC1Bld,MAAK,SAACswB,GAAG,MAAM,CAAET,SAAUS,EAAIC,UAAWT,aAAcQ,EAAIE,cAAe,IAC3ExwB,MAAK,SAACswB,GAAG,OAAK5c,EAAO,gBAAiB4c,IAAQA,CAAG,GACtD,EA0DaG,GAAiB,SAAH,GAA6C,IAAvCZ,EAAQ,EAARA,SAAUC,EAAY,EAAZA,aAAcrc,EAAQ,EAARA,SACjDvN,EAAM,GAAH,OAAMuN,EAAQ,gBACjBsc,EAAO,IAAIjpB,OAAOkpB,SAOxB,OALAD,EAAKE,OAAO,YAAaJ,GACzBE,EAAKE,OAAO,gBAAiBH,GAC7BC,EAAKE,OAAO,aAAc,sBAC1BF,EAAKE,OAAO,eAAgB,GAAF,OAAKnpB,OAAO4oB,SAASC,OAAM,oBAE9C7oB,OAAOkW,MAAM9W,EAAK,CACvBmqB,OAAQ,OACRhB,KAAMU,IACL/vB,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,GAC/B,EA+CMwT,GAAQ,CACZC,MArHY,SAAH,GAA+B,IAAzBld,EAAQ,EAARA,SACT9S,EAAO,CACXiwB,cAAe,OACfL,UAH+B,EAARV,SAIvBgB,aAAcpB,GACdqB,MAAO,gCAGHC,EAAa,KAAOpwB,GAAM,SAAC2U,EAAKpQ,EAAGlD,GACvC,IAAMgvB,EAAU,GAAH,OAAMhvB,EAAC,YAAIivB,mBAAmB/rB,IAC3C,OAAKoQ,EAGI,GAAP,OAAUA,EAAG,YAAI0b,GAFVA,CAIX,IAAG,GAGG9qB,EAAM,GAAH,OAAMuN,EAAQ,4BAAoBsd,GAE3CjqB,OAAO4oB,SAASvoB,KAAOjB,CACzB,EAiGEgrB,SA/Ee,SAAH,GAAmD,IAA7CrB,EAAQ,EAARA,SAAUC,EAAY,EAAZA,aAAcrc,EAAQ,EAARA,SAAUtT,EAAI,EAAJA,KAC9C+F,EAAM,GAAH,OAAMuN,EAAQ,gBACjBsc,EAAO,IAAIjpB,OAAOkpB,SAQxB,OANAD,EAAKE,OAAO,YAAaJ,GACzBE,EAAKE,OAAO,gBAAiBH,GAC7BC,EAAKE,OAAO,aAAc,sBAC1BF,EAAKE,OAAO,OAAQ9vB,GACpB4vB,EAAKE,OAAO,eAAgB,GAAF,OAAKnpB,OAAO4oB,SAASC,OAAM,oBAE9C7oB,OAAOkW,MAAM9W,EAAK,CACvBmqB,OAAQ,OACRhB,KAAMU,IAEL/vB,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,GAC/B,EAiEEiU,wBAhG8B,SAAH,GAAiE,IAA3DtB,EAAQ,EAARA,SAAUC,EAAY,EAAZA,aAAcrc,EAAQ,EAARA,SAAU2d,EAAQ,EAARA,SAAUC,EAAQ,EAARA,SACvEnrB,EAAM,GAAH,OAAMuN,EAAQ,gBACjBsc,EAAO,IAAIjpB,OAAOkpB,SAQxB,OANAD,EAAKE,OAAO,YAAaJ,GACzBE,EAAKE,OAAO,gBAAiBH,GAC7BC,EAAKE,OAAO,aAAc,YAC1BF,EAAKE,OAAO,WAAYmB,GACxBrB,EAAKE,OAAO,WAAYoB,GAEjBvqB,OAAOkW,MAAM9W,EAAK,CACvBmqB,OAAQ,OACRhB,KAAMU,IACL/vB,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,GAC/B,EAmFE0S,eAAAA,GACA0B,cAnDoB,SAAH,GAA0C,IAApChB,EAAG,EAAHA,IAAK7c,EAAQ,EAARA,SAAU8d,EAAQ,EAARA,SAAUpxB,EAAI,EAAJA,KAC1C+F,EAAM,GAAH,OAAMuN,EAAQ,wBACjBsc,EAAO,IAAIjpB,OAAOkpB,SAQxB,OANAD,EAAKE,OAAO,YAAaK,EAAIC,WAC7BR,EAAKE,OAAO,gBAAiBK,EAAIE,eACjCT,EAAKE,OAAO,YAAasB,GACzBxB,EAAKE,OAAO,OAAQ9vB,GACpB4vB,EAAKE,OAAO,iBAAkB,QAEvBnpB,OAAOkW,MAAM9W,EAAK,CACvBmqB,OAAQ,OACRhB,KAAMU,IACL/vB,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,GAC/B,EAsCEsU,mBApCyB,SAAH,GAA0C,IAApClB,EAAG,EAAHA,IAAK7c,EAAQ,EAARA,SAAU8d,EAAQ,EAARA,SAAUpxB,EAAI,EAAJA,KAC/C+F,EAAM,GAAH,OAAMuN,EAAQ,wBACjBsc,EAAO,IAAIjpB,OAAOkpB,SAQxB,OANAD,EAAKE,OAAO,YAAaK,EAAIC,WAC7BR,EAAKE,OAAO,gBAAiBK,EAAIE,eACjCT,EAAKE,OAAO,YAAasB,GACzBxB,EAAKE,OAAO,OAAQ9vB,GACpB4vB,EAAKE,OAAO,iBAAkB,YAEvBnpB,OAAOkW,MAAM9W,EAAK,CACvBmqB,OAAQ,OACRhB,KAAMU,IACL/vB,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,GAC/B,EAuBEuU,YArBkB,SAAH,GAAiC,IAA3BnB,EAAG,EAAHA,IAAK7c,EAAQ,EAARA,SAAUie,EAAK,EAALA,MAC9BxrB,EAAM,GAAH,OAAMuN,EAAQ,iBACjBsc,EAAO,IAAIjpB,OAAOkpB,SAMxB,OAJAD,EAAKE,OAAO,YAAaK,EAAIT,UAC7BE,EAAKE,OAAO,gBAAiBK,EAAIR,cACjCC,EAAKE,OAAO,QAASyB,GAEd5qB,OAAOkW,MAAM9W,EAAK,CACvBmqB,OAAQ,OACRhB,KAAMU,IACL/vB,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,GAC/B,GAYA,Y,2BC3IA,SAASyU,KACP,MAAO,kBAAmBC,WAAa,gBAAiB9qB,MAC1D,CAEA,SAAS+qB,KACP,OAAOC,KAAAA,WAAkB,OAChB,SAACC,GAAG,OAAKrV,QAAQzK,MAAM,4CAA6C8f,EAAI,GACnF,CAqBA,SAASC,GAA+BN,GACtC,OAAO5qB,OAAOkW,MAAM,6BAA8B,CAChDqT,OAAQ,SACR4B,QAAS,CACP,eAAgB,mBAChBC,cAAe,UAAF,OAAYR,MAE1B1xB,MAAK,SAACutB,GACP,IAAKA,EAAStQ,GAAI,MAAM,IAAI/c,MAAM,gCAClC,OAAOqtB,CACT,GACF,C,ykBC5CO,IAeD4E,GAAmB,SAAnBA,EAAoBC,EAAUC,GAClC,GAAI,IAAQD,IAAa,IAAQC,GAE/B,OADAD,EAASrwB,OAASswB,EAAStwB,OACpB,KAAUqwB,EAAUC,EAAUF,EAEzC,EAUMG,GAAY,SAACtxB,EAAOX,GACxB,OAAOW,EAAMqS,UAAUyV,IAAIC,kBAAkBuJ,UAAU,CAAEjyB,GAAAA,IACtDL,MAAK,SAACuyB,GACLvxB,EAAM0S,OAAO,yBAA0B,CAAC6e,IACxCvxB,EAAM0S,OAAO,aAAcrT,GAC3BW,EAAM0S,OAAO,eAAgB,CAAEsO,SAAU,UAAWjD,OAAQ1e,IAC5DW,EAAM0S,OAAO,eAAgB,CAAEsO,SAAU,SAAUjD,OAAQ1e,IAC3DW,EAAM0S,OAAO,eAAgB,CAAEsO,SAAU,oBAAqBjD,OAAQ1e,GACxE,GACJ,EAEMmyB,GAAc,SAACxxB,EAAOX,GAC1B,OAAOW,EAAMqS,UAAUyV,IAAIC,kBAAkByJ,YAAY,CAAEnyB,GAAAA,IACxDL,MAAK,SAACuyB,GAAY,OAAKvxB,EAAM0S,OAAO,yBAA0B,CAAC6e,GAAc,GAClF,EAYME,GAAW,SAACzxB,EAAOgU,GACvB,IAAM3U,EAAqB,YAAhB,QAAO2U,GAAoBA,EAAK3U,GAAK2U,EAC1C0d,EAA4B,YAAhB,QAAO1d,GAAoBA,EAAK0d,UAAY,EAExDC,EAAwB3xB,EAAM6B,MAAM+vB,cAAcvyB,IAAO,CAAEA,GAAAA,GAKjE,OAJAsyB,EAAsBE,QAAS,EAC/B7xB,EAAM0S,OAAO,yBAA0B,CAACif,IACxC3xB,EAAM0S,OAAO,YAAarT,GAEnBW,EAAMqS,UAAUyV,IAAIC,kBAAkB0J,SAAS,CAAEpyB,GAAAA,EAAIqyB,UAAAA,IACzD1yB,MAAK,SAACuyB,GACLvxB,EAAM0S,OAAO,yBAA0B,CAAC6e,IACxCvxB,EAAM0S,OAAO,YAAarT,EAC5B,GACJ,EAEMyyB,GAAa,SAAC9xB,EAAOX,GACzB,IAAMsyB,EAAwB3xB,EAAM6B,MAAM+vB,cAAcvyB,IAAO,CAAEA,GAAAA,GAIjE,OAHAsyB,EAAsBE,QAAS,EAC/B7xB,EAAM0S,OAAO,yBAA0B,CAACif,IAEjC3xB,EAAMqS,UAAUyV,IAAIC,kBAAkB+J,WAAW,CAAEzyB,GAAAA,IACvDL,MAAK,SAACuyB,GAAY,OAAKvxB,EAAM0S,OAAO,yBAA0B,CAAC6e,GAAc,GAClF,EAcMQ,GAAa,SAAC/xB,EAAOgyB,GACzB,OAAOhyB,EAAMqS,UAAUyV,IAAIC,kBAAkBgK,WAAW,CAAEC,OAAAA,IACvDhzB,MAAK,kBAAMgB,EAAM0S,OAAO,gBAAiBsf,EAAO,GACrD,EAEMC,GAAe,SAACjyB,EAAOgyB,GAC3B,OAAOhyB,EAAMqS,UAAUyV,IAAIC,kBAAkBkK,aAAa,CAAED,OAAAA,IACzDhzB,MAAK,kBAAMgB,EAAM0S,OAAO,mBAAoBsf,EAAO,GACxD,EAEalhB,GAAY,CACvBohB,QAAO,SAAErwB,EAAO,GAAuB,IAAbxC,EAAE,EAAVsD,KAAQtD,GAAMgE,EAAG,EAAHA,IACxBV,EAAOd,EAAMswB,YAAY9yB,GAEzB+yB,GADOzvB,EAAK4X,MAAQ,IACL5Z,OAAO,CAAC0C,IAC7BV,EAAK4X,KAAO6X,CACd,EACAC,UAAS,SAAExwB,EAAO,GAAuB,IAAbxC,EAAE,EAAVsD,KAAQtD,GAAMgE,EAAG,EAAHA,IAC1BV,EAAOd,EAAMswB,YAAY9yB,GAEzB+yB,GADOzvB,EAAK4X,MAAQ,IACL9Z,QAAO,SAAAnB,GAAC,OAAIA,IAAM+D,CAAG,IAC1CV,EAAK4X,KAAO6X,CACd,EACAE,YAAW,SAAEzwB,EAAO,GAAgC,IAAtBxC,EAAE,EAAVsD,KAAQtD,GAAMkzB,EAAK,EAALA,MAAOjhB,EAAK,EAALA,MACnC3O,EAAOd,EAAMswB,YAAY9yB,GACzBmzB,EAAY7vB,EAAK8vB,OACvBD,EAAUD,GAASjhB,EACnB3O,EAAK8vB,OAASD,CAChB,EACAE,uBAAsB,SAAE7wB,EAAO,GAA+B,IAArBxC,EAAE,EAAVsD,KAAQtD,GAAMszB,EAAW,EAAXA,YAChC9wB,EAAMswB,YAAY9yB,GAC1BszB,YAAcA,CACrB,EACAC,eAAc,SAAE/wB,EAAOc,GACrBd,EAAMgxB,cAAgBlwB,EAAKC,YAC3Bf,EAAMwR,YAAc,KAAUxR,EAAMwR,aAAe,CAAC,EAAG1Q,EAAMwuB,GAC/D,EACA2B,iBAAgB,SAAEjxB,GAChBA,EAAMwR,aAAc,EACpBxR,EAAMgxB,eAAgB,CACxB,EACAE,WAAU,SAAElxB,GACVA,EAAMmxB,WAAY,CACpB,EACAC,SAAQ,SAAEpxB,GACRA,EAAMmxB,WAAY,CACpB,EACAE,cAAa,SAAErxB,EAAO,GAAmB,IAAjBxC,EAAE,EAAFA,GAAI8zB,EAAS,EAATA,UACpBxwB,EAAOd,EAAMswB,YAAY9yB,GAC/BsD,EAAKwwB,UAAY,KAAK,KAAOxwB,EAAKwwB,WAAa,GAAIA,GACrD,EACAC,gBAAe,SAAEvxB,EAAO,GAAqB,IAAnBxC,EAAE,EAAFA,GAAIg0B,EAAW,EAAXA,YACtB1wB,EAAOd,EAAMswB,YAAY9yB,GAC/BsD,EAAK0wB,YAAc,KAAK,KAAO1wB,EAAK0wB,aAAe,GAAIA,GACzD,EAGAC,aAAY,SAAEzxB,EAAOkc,GACnB,IAAMpb,EAAOd,EAAMswB,YAAYpU,GAC3Bpb,IACFA,EAAKwwB,UAAY,GAErB,EACAI,eAAc,SAAE1xB,EAAOkc,GACrB,IAAMpb,EAAOd,EAAMswB,YAAYpU,GAC3Bpb,IACFA,EAAK0wB,YAAc,GAEvB,EACAG,YAAW,SAAE3xB,EAAOa,GAClB,IAAKA,GAAO,SAACC,GACPA,EAAK4uB,eACP1vB,EAAM+vB,cAAcjvB,EAAK4uB,aAAalyB,IAAMsD,EAAK4uB,cAEnD,IAAM5d,EAvKc,SAACqM,EAAKC,EAAKnX,GACnC,IAAKA,EAAQ,OAAO,EACpB,IAAMoX,EAAUD,EAAInX,EAAKzJ,IACzB,OAAI6gB,GAEF,KAAUA,EAASpX,EAAMqoB,IAClB,CAAEroB,KAAMoX,EAASG,KAAK,KAG7BL,EAAIjb,KAAK+D,GACTmX,EAAInX,EAAKzJ,IAAMyJ,EACR,CAAEA,KAAAA,EAAMuX,KAAK,GAExB,CA0JkBN,CAAWle,EAAMa,MAAOb,EAAMswB,YAAaxvB,GACjDmG,EAAO6K,EAAI7K,KACb6K,EAAG,KAAQ7K,EAAKlG,cAAgBkG,EAAKlG,YAAYJ,SAAS,OAC5DX,EAAM4xB,kBAAkB3qB,EAAKlG,YAAYrC,eAAiBuI,EAE9D,GACF,EACA4qB,uBAAsB,SAAE7xB,EAAO+vB,GAC7BA,EAAclX,SAAQ,SAAC6W,GACrB1vB,EAAM+vB,cAAcL,EAAalyB,IAAMkyB,CACzC,GACF,EACAoC,kBAAiB,SAAE9xB,EAAO,GAAiB,IAAfxC,EAAE,EAAFA,GAAIu0B,EAAO,EAAPA,QAC9B/xB,EAAMswB,YAAY9yB,GAAIu0B,QAAUA,CAClC,EACAC,aAAY,SAAEhyB,EAAOiyB,GACnBjyB,EAAMwR,YAAYygB,SAAWA,CAC/B,EACAC,WAAU,SAAElyB,EAAOmyB,IACoC,IAAjDnyB,EAAMwR,YAAYygB,SAASG,QAAQD,IACrCnyB,EAAMwR,YAAYygB,SAAS/uB,KAAKivB,EAEpC,EACAE,YAAW,SAAEryB,EAAOsyB,GAClBtyB,EAAMwR,YAAY8gB,QAAUA,CAC9B,EACAC,UAAS,SAAEvyB,EAAOwyB,IACmC,IAA/CxyB,EAAMwR,YAAY8gB,QAAQF,QAAQI,IACpCxyB,EAAMwR,YAAY8gB,QAAQpvB,KAAKsvB,EAEnC,EACAC,gBAAe,SAAEzyB,EAAO0yB,GACtB1yB,EAAMwR,YAAYkhB,YAAcA,CAClC,EACAC,cAAa,SAAE3yB,EAAOmwB,IACmC,IAAnDnwB,EAAMwR,YAAYkhB,YAAYN,QAAQjC,IACxCnwB,EAAMwR,YAAYkhB,YAAYxvB,KAAKitB,EAEvC,EACAyC,iBAAgB,SAAE5yB,EAAOmwB,GACvB,IAAMjpB,EAAQlH,EAAMwR,YAAYkhB,YAAYN,QAAQjC,IACrC,IAAXjpB,GACFlH,EAAMwR,YAAYkhB,YAAYnU,OAAOrX,EAAO,EAEhD,EACA2rB,gBAAe,SAAE7yB,EAAOye,GACtB,IAAM3d,EAAOd,EAAMswB,YAAY7R,EAAO3d,KAAKtD,IAC3CsD,EAAKgyB,gBAAkBhyB,EAAKgyB,iBAAmB,GAC/C,IAAM5rB,EAAQpG,EAAKgyB,gBAAgBV,QAAQ3T,EAAOjhB,IAE9CihB,EAAOsU,SAAqB,IAAX7rB,EACnBpG,EAAKgyB,gBAAgB5vB,KAAKub,EAAOjhB,IACvBihB,EAAOsU,SAAqB,IAAX7rB,GAC3BpG,EAAKgyB,gBAAgBvU,OAAOrX,EAAO,EAEvC,EACA8rB,iBAAgB,SAAEhzB,EAAOye,GACvBA,EAAO3d,KAAOd,EAAMswB,YAAY7R,EAAO3d,KAAKtD,GAC9C,EACAy1B,uBAAsB,SAAEjzB,EAAOwf,GACH,WAAtBA,EAAajc,OACfic,EAAa6B,OAAOvgB,KAAOd,EAAMswB,YAAY9Q,EAAa6B,OAAOvgB,KAAKtD,KAExEgiB,EAAa0T,aAAelzB,EAAMswB,YAAY9Q,EAAa0T,aAAa11B,GAC1E,EACA21B,SAAQ,SAAEnzB,EAAO,GAA+B,IAArBxC,EAAE,EAAVsD,KAAQtD,GAAM41B,EAAW,EAAXA,YAClBpzB,EAAMswB,YAAY9yB,GAC1B61B,UAAYD,CACnB,EACAE,cAAa,SAAEtzB,GACbA,EAAMszB,eAAgB,EACtBtzB,EAAMuzB,aAAe,EACvB,EACAC,cAAa,SAAExzB,GACbA,EAAMszB,eAAgB,CACxB,EACAG,cAAa,SAAEzzB,EAAO2qB,GACpB3qB,EAAMszB,eAAgB,EACtBtzB,EAAMuzB,aAAe5I,CACvB,GAiCI9pB,GAAQ,CACZb,MAb0B,CAC1BmxB,WAAW,EACXH,eAAe,EACfxf,aAAa,EACb3Q,MAAO,GACPyvB,YAAa,CAAC,EACdsB,kBAAmB,CAAC,EACpB0B,eAAe,EACfC,aAAc,GACdxD,cAAe,CAAC,GAKhB9gB,UAAAA,GACAoJ,QAjCqB,CACrBqb,SAAU,SAAA1zB,GAAK,OAAI,SAAAM,GACjB,OAAON,EAAMswB,YAAYhwB,EAC3B,CAAC,EACDqzB,eAAgB,SAAA3zB,GAAK,OAAI,SAAAM,GACvB,OAAON,EAAM4xB,kBAAkBtxB,EAAM5B,cACvC,CAAC,EACDk1B,cAAe,SAAA5zB,GAAK,OAAI,SAAAM,GACtB,OAAON,EAAMa,MACV8jB,MAAK,SAAA2D,GAAC,OAAIA,EAAErgB,uBACPqgB,EAAErgB,sBAAsBvJ,gBAAkB4B,EAAM5B,aAAa,GACvE,CAAC,EACDgxB,aAAc,SAAA1vB,GAAK,OAAI,SAAAxC,GAErB,OADYA,GAAMwC,EAAM+vB,cAAcvyB,IACxB,CAAEA,GAAAA,EAAIof,SAAS,EAC/B,CAAC,GAmBDtM,QAAS,CACPujB,mBAAkB,SAAE11B,EAAOX,GACpBW,EAAMka,QAAQqb,SAASl2B,IAC1BW,EAAM4B,SAAS,YAAavC,EAEhC,EACAs2B,UAAS,SAAE31B,EAAOX,GAChB,OAAOW,EAAMqS,UAAUyV,IAAIC,kBAAkB4N,UAAU,CAAEt2B,GAAAA,IACtDL,MAAK,SAAC2D,GAEL,OADA3C,EAAM0S,OAAO,cAAe,CAAC/P,IACtBA,CACT,GACJ,EACAizB,gBAAe,SAAE51B,EAAOoB,GACtB,OAAOpB,EAAMqS,UAAUyV,IAAIC,kBAAkB6N,gBAAgB,CAAEx0B,KAAAA,IAC5DpC,MAAK,SAAC2D,GAEL,OADA3C,EAAM0S,OAAO,cAAe,CAAC/P,IACtBA,CACT,GACJ,EACAkzB,sBAAqB,SAAE71B,EAAOX,GACxBW,EAAM6B,MAAMwR,aACdrT,EAAMqS,UAAUyV,IAAIC,kBAAkB8N,sBAAsB,CAAEx2B,GAAAA,IAC3DL,MAAK,SAAC4yB,GAAa,OAAK5xB,EAAM0S,OAAO,yBAA0Bkf,EAAc,GAEpF,EACAkE,iBAAgB,SAAE91B,EAAOX,GACnBW,EAAM6B,MAAMwR,aACdrT,EAAMqS,UAAUyV,IAAIC,kBAAkB+N,iBAAiB,CAAEz2B,GAAAA,IACtDL,MAAK,SAAC40B,GAAO,OAAK5zB,EAAM0S,OAAO,oBAAqB,CAAErT,GAAAA,EAAIu0B,QAAAA,GAAU,GAE3E,EACAmC,YAAW,SAAE/1B,GACX,OAAOA,EAAMqS,UAAUyV,IAAIC,kBAAkBgO,cAC1C/2B,MAAK,SAACg3B,GAGL,OAFAh2B,EAAM0S,OAAO,eAAgB,KAAIsjB,EAAQ,OACzCh2B,EAAM0S,OAAO,cAAesjB,GACrBA,CACT,GACJ,EACA1E,UAAS,SAAEtxB,EAAOX,GAChB,OAAOiyB,GAAUtxB,EAAOX,EAC1B,EACAmyB,YAAW,SAAExxB,EAAOX,GAClB,OAAOmyB,GAAYxxB,EAAOX,EAC5B,EACA42B,wBAAuB,SAAEj2B,EAAOX,GAC9B,OA5R0B,SAACW,EAAOX,GACtC,OAAOW,EAAMqS,UAAUyV,IAAIC,kBAAkBkO,wBAAwB,CAAE52B,GAAAA,IACpEL,MAAK,SAACuyB,GAAY,OAAKvxB,EAAM0S,OAAO,yBAA0B,CAAC6e,GAAc,GAClF,CAyRa0E,CAAwBj2B,EAAOX,EACxC,EACA62B,WAAU,SAAEl2B,GAAiB,IAAVZ,EAAM,UAAH,6CAAG,GACvB,OAAON,QAAQgd,IAAI1c,EAAIX,KAAI,SAAAY,GAAE,OAAIiyB,GAAUtxB,EAAOX,EAAG,IACvD,EACA82B,aAAY,SAAEn2B,GAAiB,IAAVZ,EAAM,UAAH,6CAAG,GACzB,OAAON,QAAQgd,IAAI1c,EAAIX,KAAI,SAAAY,GAAE,OAAImyB,GAAYxxB,EAAOX,EAAG,IACzD,EACA+2B,aAAY,SAAEp2B,EAAOgU,GACnB,OAhSe,SAAChU,EAAO,GAAoB,IAAlBX,EAAE,EAAFA,GAAIg3B,EAAO,EAAPA,QACjC,OAAOr2B,EAAMqS,UAAUyV,IAAIC,kBAAkBqO,aAAa,CAAE/2B,GAAAA,EAAIg3B,QAAAA,IAC7Dr3B,MAAK,SAACuyB,GAAY,OAAKvxB,EAAM0S,OAAO,yBAA0B,CAAC6e,GAAc,GAClF,CA6Ra6E,CAAap2B,EAAOgU,EAC7B,EACAsiB,WAAU,SAAEt2B,GACV,OAAOA,EAAMqS,UAAUyV,IAAIC,kBAAkBuO,aAC1Ct3B,MAAK,SAACu3B,GAGL,OAFAv2B,EAAM0S,OAAO,cAAe,KAAI6jB,EAAO,OACvCv2B,EAAM0S,OAAO,cAAe6jB,GACrBA,CACT,GACJ,EACA9E,SAAQ,SAAEzxB,EAAOX,GACf,OAAOoyB,GAASzxB,EAAOX,EACzB,EACAyyB,WAAU,SAAE9xB,EAAOX,GACjB,OAAOyyB,GAAW9xB,EAAOX,EAC3B,EACAm3B,YAAW,SAAEx2B,EAAOX,GAClB,OAnRc,SAACW,EAAO+d,GAC1B,OAAO/d,EAAMqS,UAAUyV,IAAIC,kBAAkB0O,WAAW,CAAEp3B,GAAI0e,EAAQ2Y,SAAS,IAC5E13B,MAAK,SAACuyB,GACLvxB,EAAM0S,OAAO,yBAA0B,CAAC6e,GAC1C,GACJ,CA8QaiF,CAAYx2B,EAAOX,EAC5B,EACAs3B,YAAW,SAAE32B,EAAOX,GAClB,OA/Qc,SAACW,EAAO+d,GAC1B,OAAO/d,EAAMqS,UAAUyV,IAAIC,kBAAkB0O,WAAW,CAAEp3B,GAAI0e,EAAQ2Y,SAAS,IAC5E13B,MAAK,SAACuyB,GAAY,OAAKvxB,EAAM0S,OAAO,yBAA0B,CAAC6e,GAAc,GAClF,CA4QaoF,CAAY32B,EAAOX,EAC5B,EACAu3B,UAAS,SAAE52B,GAAiB,IAAVZ,EAAM,UAAH,6CAAG,GACtB,OAAON,QAAQgd,IAAI1c,EAAIX,KAAI,SAAAY,GAAE,OAAIoyB,GAASzxB,EAAOX,EAAG,IACtD,EACAw3B,YAAW,SAAE72B,GAAiB,IAAVZ,EAAM,UAAH,6CAAG,GACxB,OAAON,QAAQgd,IAAI1c,EAAIX,KAAI,SAAAY,GAAE,OAAIyyB,GAAW9xB,EAAOX,EAAG,IACxD,EACAy3B,iBAAgB,SAAE92B,GAChB,OAAOA,EAAMqS,UAAUyV,IAAIC,kBAAkB+O,mBAC1C93B,MAAK,SAACu1B,GAEL,OADAv0B,EAAM0S,OAAO,kBAAmB6hB,GACzBA,CACT,GACJ,EACAxC,WAAU,SAAE/xB,EAAOgyB,GACjB,OAAOD,GAAW/xB,EAAOgyB,EAC3B,EACAC,aAAY,SAAEjyB,EAAOgyB,GACnB,OAAOC,GAAajyB,EAAOgyB,EAC7B,EACA+E,YAAW,SAAE/2B,GAAqB,IAAdga,EAAU,UAAH,6CAAG,GAC5B,OAAOlb,QAAQgd,IAAI9B,EAAQvb,KAAI,SAAAuzB,GAAM,OAAID,GAAW/xB,EAAOgyB,EAAO,IACpE,EACAgF,cAAa,SAAEh3B,GAAoB,IAAbgyB,EAAS,UAAH,6CAAG,GAC7B,OAAOlzB,QAAQgd,IAAIkW,EAAOvzB,KAAI,SAAAuzB,GAAM,OAAIC,GAAajyB,EAAOgyB,EAAO,IACrE,EACAiF,aAAY,WAAyB53B,GAAI,IAAzBgT,EAAS,EAATA,UAAWK,EAAM,EAANA,OACnB/P,EAAO0P,EAAU3P,MAAMyvB,YAAY9yB,GACnCif,EAAQ,IAAK3b,EAAKwwB,WACxB,OAAO9gB,EAAUyV,IAAIC,kBAAkBkP,aAAa,CAAE53B,GAAAA,EAAIif,MAAAA,IACvDtf,MAAK,SAAC2f,GAGL,OAFAjM,EAAO,cAAeiM,GACtBjM,EAAO,gBAAiB,CAAErT,GAAAA,EAAI8zB,UAAW,KAAIxU,EAAS,QAC/CA,CACT,GACJ,EACAuY,eAAc,WAAyB73B,GAAI,IAAzBgT,EAAS,EAATA,UAAWK,EAAM,EAANA,OACrB/P,EAAO0P,EAAU3P,MAAMyvB,YAAY9yB,GACnCif,EAAQ,IAAK3b,EAAK0wB,aACxB,OAAOhhB,EAAUyV,IAAIC,kBAAkBmP,eAAe,CAAE73B,GAAAA,EAAIif,MAAAA,IACzDtf,MAAK,SAAC0f,GAGL,OAFAhM,EAAO,cAAegM,GACtBhM,EAAO,kBAAmB,CAAErT,GAAAA,EAAIg0B,YAAa,KAAI3U,EAAW,QACrDA,CACT,GACJ,EACA4U,aAAY,WAAcvV,IACxBrL,EADoB,EAANA,QACP,eAAgBqL,EACzB,EACAwV,eAAc,WAAcxV,IAC1BrL,EADsB,EAANA,QACT,iBAAkBqL,EAC3B,EACAoZ,cAAa,WAAyB93B,GAAI,IAAzBgT,EAAS,EAATA,UAAWK,EAAM,EAANA,OAC1B,OAAOL,EAAUyV,IAAIC,kBAAkBoP,cAAc,CAAE93B,GAAAA,IACpDL,MAAK,SAACuyB,GAAY,OAAK7e,EAAO,yBAA0B,CAAC6e,GAAc,GAC5E,EACA6F,gBAAe,WAAyB/3B,GAAI,IAAzBgT,EAAS,EAATA,UAAWK,EAAM,EAANA,OAC5B,OAAOL,EAAUyV,IAAIC,kBAAkBqP,gBAAgB,CAAE/3B,GAAAA,IACtDL,MAAK,SAACuyB,GAAY,OAAK7e,EAAO,yBAA0B,CAAC6e,GAAc,GAC5E,EACA8F,uBAAsB,cAAmC,IAA/BhlB,EAAS,EAATA,UAAWK,EAAM,EAANA,OAAY/P,EAAI,EAAJA,MACnCA,EAAKgwB,YAActgB,EAAUyV,IAAIC,kBAAkBuP,aAAejlB,EAAUyV,IAAIC,kBAAkBwP,gBAC1G,CAAE50B,KAAAA,IACH3D,MAAK,SAAC2D,GAAW,IAAMgwB,GAAehwB,EAAK60B,UAAW9kB,EAAO,yBAA0B,CAAE/P,KAAAA,EAAMgwB,YAAAA,GAAe,GACnH,EACA8E,0BAAyB,SAAEz3B,GACzB,IAAM0wB,EAAQ1wB,EAAM6B,MAAMwR,YAAYwK,YAChCjJ,EAAiB5U,EAAMqS,UAAUI,SAASmC,gBDjW/C,SAAoC8iB,EAAW9iB,EAAgB8b,EAAOiH,GACvEhH,MACFE,KACG7xB,MAAK,SAAC44B,GAAY,OA/DzB,SAAwBA,EAAcF,EAAW9iB,GAC/C,IAAK8iB,EAAW,OAAO54B,QAAQsD,OAAO,IAAIlD,MAAM,mCAChD,IAAK0V,EAAgB,OAAO9V,QAAQsD,OAAO,IAAIlD,MAAM,kCAErD,IAvB8B24B,EAExBC,EAIAC,EAiBAC,EAAmB,CACvBC,iBAAiB,EACjBC,sBAzB4BL,EAyBgBjjB,EAvBxCkjB,GAAUD,EADA,IAAIM,QAAQ,EAAIN,EAAa92B,OAAS,GAAK,IAExD4C,QAAQ,KAAM,KACdA,QAAQ,KAAM,KAEXo0B,EAAUjyB,OAAOsyB,KAAKN,GACrBO,WAAWr0B,MAAK,OAAI+zB,GAASt5B,KAAI,SAACkG,GAAI,OAAKA,EAAK2zB,WAAW,EAAE,OAoBpE,OAAOV,EAAaW,YAAYC,UAAUR,EAC5C,CAsD8BS,CAAcb,EAAcF,EAAW9iB,EAAe,IAC7E5V,MAAK,SAAC05B,GAAY,OAhCzB,SAAoCA,EAAchI,EAAOiH,GACvD,OAAO7xB,OAAOkW,MAAM,6BAA8B,CAChDqT,OAAQ,OACR4B,QAAS,CACP,eAAgB,mBAChBC,cAAe,UAAF,OAAYR,IAE3BrC,KAAMsK,KAAKC,UAAU,CACnBF,aAAAA,EACA/4B,KAAM,CACJk5B,OAAQ,CACNzV,OAAQuU,EAAuBmB,QAC/BC,UAAWpB,EAAuBqB,MAClCC,QAAStB,EAAuBlY,SAChCyZ,OAAQvB,EAAuBwB,QAC/BC,KAAMzB,EAAuB0B,YAIlCr6B,MAAK,SAACutB,GACP,IAAKA,EAAStQ,GAAI,MAAM,IAAI/c,MAAM,gCAClC,OAAOqtB,EAASrQ,MAClB,IAAGld,MAAK,SAACs6B,GACP,IAAKA,EAAaj6B,GAAI,MAAM,IAAIH,MAAM,6BACtC,OAAOo6B,CACT,GACF,CAM8BC,CAA0Bb,EAAchI,EAAOiH,EAAuB,IAAC,OACxF,SAAC14B,GAAC,OAAKyc,QAAQC,KAAK,2CAAD,OAA4C1c,EAAE2tB,SAAU,GAExF,CC8VM6K,CAHkBz3B,EAAMqS,UAAU8K,OAAOqc,qBAGJ5kB,EAAgB8b,EAFtB1wB,EAAMqS,UAAU8K,OAAOwa,uBAGxD,EACA8B,4BAA2B,SAAEz5B,GD9V1B,IAAsC0wB,IC+VzB1wB,EAAM6B,MAAMwR,YAAYwK,YD9VtC8S,MACF7xB,QAAQgd,IAAI,CACVkV,GAA8BN,GAC9BG,KACG7xB,MAAK,SAAC44B,GACL,OAhEV,SAA0BA,GACxB,OAAOA,EAAaW,YAAYmB,kBAC7B16B,MAAK,SAAC26B,GACL,GAAqB,OAAjBA,EACJ,OAAOA,EAAaC,aACtB,GACJ,CA0DiBC,CAAgBjC,GAAc54B,MAAK,SAACsE,GAAM,MAAK,CAACs0B,EAAct0B,EAAO,GAC9E,IACCtE,MAAK,YAAiC,mBAA/B44B,EAAY,KAIlB,OAJ+B,MAE7Blc,QAAQC,KAAK,0EAERic,EAAakC,aAAa96B,MAAK,SAACsE,GAChCA,GACHoY,QAAQC,KAAK,oBAEjB,GACF,MACF,OAAO,SAAC1c,GAAC,OAAKyc,QAAQC,KAAK,6CAAD,OAA8C1c,EAAE2tB,SAAU,GCgVtF,EACA4G,YAAW,WAAc9wB,IACvBgQ,EADmB,EAANA,QACN,cAAehQ,EACxB,EACA4e,eAAc,SAAEthB,EAAO,GAAc,IAAZge,EAAQ,EAARA,SACjBtb,EAAQ,KAAIsb,EAAU,QACtB+b,EAAiB,KAAQ,KAAI/b,EAAU,0BAC7Che,EAAM0S,OAAO,cAAehQ,GAC5B1C,EAAM0S,OAAO,cAAeqnB,GAE5B,IAAK/b,GAAU,SAACsC,GAEdtgB,EAAM0S,OAAO,mBAAoB4N,GAEjCtgB,EAAM0S,OAAO,kBAAmB4N,EAClC,IACA,IAAK,KAAQ,KAAItC,EAAU,sBAAsB,SAACsC,GAEhDtgB,EAAM0S,OAAO,mBAAoB4N,GAEjCtgB,EAAM0S,OAAO,kBAAmB4N,EAClC,GACF,EACAiD,oBAAmB,SAAEvjB,EAAO,GAAmB,IAAjBsf,EAAa,EAAbA,cACtB5c,EAAQ,KAAI4c,EAAe,gBAC3B0a,EAAc,KAAI1a,EAAe,UAAU7e,QAAO,SAAA0L,GAAC,OAAIA,CAAC,IACxD8tB,EAAkB3a,EAAc7gB,KAAI,SAAA0N,GAAC,OAAIA,EAAE9M,EAAE,IACnDW,EAAM0S,OAAO,cAAehQ,GAC5B1C,EAAM0S,OAAO,cAAesnB,GAE5B,IAAME,EAAsBl6B,EAAMqS,UAAU2L,SAASsB,cAAcL,QAC7Dkb,EAAwB36B,OAAOsd,QAAQod,GAC1Cz5B,QAAO,+BAAEO,EAAC,KAAK,YAAMi5B,EAAgBz3B,SAASxB,EAAE,IAChDvC,KAAI,+BAAQ,OAAL,KAAK,IAAS,IAGxB,IAAK07B,GAAuB,SAAC9Y,GAC3BrhB,EAAM0S,OAAO,yBAA0B2O,EACzC,GACF,EACA+Y,YAAW,cAAoC,IAAhC/nB,EAAS,EAATA,UAAWK,EAAM,EAANA,OAAYvQ,EAAK,EAALA,MACpC,OAAOkQ,EAAUyV,IAAIC,kBAAkBqS,YAAY,CAAEj4B,MAAAA,IAClDnD,MAAK,SAAC0D,GAEL,OADAgQ,EAAO,cAAehQ,GACfA,CACT,GACJ,EACM23B,OAAM,SAAEr6B,EAAOs6B,GAAU,gHAGI,OAFjCt6B,EAAM0S,OAAO,iBAEPL,EAAYrS,EAAMqS,UAAS,kBAGZA,EAAUyV,IAAIC,kBAAkBwS,SACjD,CAAEC,OAAQ,MAAKF,KAChB,OAFK36B,EAAO,EAAH,KAGVK,EAAM0S,OAAO,iBACb1S,EAAM0S,OAAO,WAAY/S,EAAK86B,cAC9Bz6B,EAAM4B,SAAS,YAAajC,EAAK86B,cAAa,wBAGT,MAHS,0BAExCjO,EAAS,KAAEI,QACjB5sB,EAAM0S,OAAO,gBAAiB8Z,GAAO,8DAdV,EAiB/B,EACMkO,WAAU,SAAE16B,GAAO,+HAChBA,EAAMqS,UAAUyV,IAAIC,kBAAkB2S,cAAY,0CADlC,EAEzB,EAEAC,OAAM,SAAE36B,GACN,MAA4BA,EAAMqS,UAA1Bqd,EAAK,EAALA,MAAOjd,EAAQ,EAARA,SAET9S,EAAO,SACR+vB,GAAK,IACRhd,OAAQ1S,EAAM0S,OACdD,SAAUA,EAASgC,SAGrB,OAAOmmB,GAAAA,eAAwBj7B,GAC5BX,MAAK,SAACswB,GACL,IAAMkL,EAAS,CACblL,IAAAA,EACA7c,SAAU9S,EAAK8S,SACfie,MAAOhB,EAAMmL,WAGf,OAAOD,GAAAA,YAAqBJ,EAC9B,IACCx7B,MAAK,WACJgB,EAAM0S,OAAO,oBACb1S,EAAM4B,SAAS,wBACf5B,EAAM0S,OAAO,cACb1S,EAAM4B,SAAS,uBAAwB,WACvC5B,EAAM0S,OAAO,uBAAwBooB,GAAyB96B,EAAMka,QAAQgW,aAC5ElwB,EAAM4B,SAAS,6BACf5B,EAAM4B,SAAS,qBACf5B,EAAM4B,SAAS,8BACf5B,EAAM0S,OAAO,sBACb1S,EAAM0S,OAAO,iBACb1S,EAAM4B,SAAS,cACf5B,EAAM4B,SAAS,kBAAmB,mBAClC5B,EAAM4B,SAAS,iBAAkBqsB,MACjCjuB,EAAM4B,SAAS,kBAAmB0sB,MAClCtuB,EAAM0S,OAAO,yBACf,GACJ,EACAqoB,UAAS,SAAE/6B,EAAOg7B,GAChB,OAAO,IAAIl8B,SAAQ,SAACC,EAASqD,GAC3B,IAAMsQ,EAAS1S,EAAM0S,OACrBA,EAAO,cACP1S,EAAMqS,UAAUyV,IAAIC,kBAAkBiG,kBAAkBgN,GACrDh8B,MAAK,SAACW,GACL,GAAKA,EAAKsR,MAkEH,CACL,IAAMsb,EAAW5sB,EAAKsR,MAEtByB,EAAO,YACiB,MAApB6Z,EAASjM,OACXle,EAAO,IAAIlD,MAAM,+BAEjBkD,EAAO,IAAIlD,MAAM,uCAErB,KA3EiB,CACf,IAAMyD,EAAOhD,EAEbgD,EAAKkb,YAAcmd,EACnBr4B,EAAKmxB,SAAW,GAChBnxB,EAAKwxB,QAAU,GACfxxB,EAAK4xB,YAAc,GACnB7hB,EAAO,iBAAkB/P,GACzB+P,EAAO,uBAAwB/P,GAC/B+P,EAAO,cAAe,CAAC/P,IAEvB3C,EAAM4B,SAAS,eAzhBrBq5B,EAAen1B,OAAOm1B,aAEvBA,EAC2B,YAA5BA,EAAa7pB,WAAiC6pB,EAAaC,oBACxDp8B,QAAQC,QAAQk8B,EAAa7pB,YAFVtS,QAAQC,QAAQ,OA0hB3BC,MAAK,SAAAoS,GAAU,OAAIsB,EAAO,4BAA6BtB,EAAW,IAGrEsB,EAAO,uBAAwBooB,GAAyBE,IACxDh7B,EAAM4B,SAAS,yBAEXe,EAAK+tB,QACP1wB,EAAM4B,SAAS,aAAce,EAAK+tB,OAGlC1wB,EAAM4B,SAAS,qBAcjB5B,EAAM4B,SAAS,sBAEXe,EAAKw4B,QACPn7B,EAAM4B,SAAS,+BAGb5B,EAAMka,QAAQ/G,aAAaioB,iBAC7Bp7B,EAAM4B,SAAS,gBAAiB,CAAEof,SAAU,UAAWiL,MAAO,OAC9DjsB,EAAM4B,SAAS,qBAAsB,CAAEqqB,MAAO,OAC9CjsB,EAAM4B,SAAS,sBAAsB,GAAK,OAAO,SAACqP,GAChDyK,QAAQzK,MAAM,gDAAiDA,EACjE,IAAGjS,MAAK,WACNgB,EAAM4B,SAAS,aAAc,CAAEy5B,QAAQ,IACvCh5B,YAAW,kBAAMrC,EAAM4B,SAAS,2BAA2B,EAAM,GAAE,IACrE,MAvBA5B,EAAM4B,SAAS,wBAAyB,CAAEof,SAAU,YAGpDhhB,EAAM4B,SAAS,8BAGf5B,EAAM4B,SAAS,uBAuBjB5B,EAAM4B,SAAS,cAEf5B,EAAM4B,SAAS,iBAAkBqsB,MACjCjuB,EAAM4B,SAAS,kBAAmB0sB,MAGlCtuB,EAAMqS,UAAUyV,IAAIC,kBAAkBkP,aAAa,CAAE53B,GAAIsD,EAAKtD,KAC3DL,MAAK,SAAC2f,GAAO,OAAKjM,EAAO,cAAeiM,EAAQ,GACrD,CAjlBsB,IAC1Bsc,EA0lBIvoB,EAAO,YACP3T,GACF,IAAE,OACK,SAACkS,GACNyK,QAAQ4H,IAAIrS,GACZyB,EAAO,YACPtQ,EAAO,IAAIlD,MAAM,0CACnB,GACJ,GACF,IAIJ,Y,oDCnoBao8B,GAA4B,SAACt7B,EAAOu7B,GAC/C,GAAKA,EAAKC,cACNx7B,EAAMqS,UAAUopB,MAAMC,gBAAkBH,EAAKl8B,IAAOkT,SAASopB,SAC7D37B,EAAMqS,UAAU3P,MAAM2Q,YAAYhU,KAAOk8B,EAAKC,YAAYI,WAA9D,CAEA,IAAMC,EAAO,CACXx4B,IAAKk4B,EAAKC,YAAYn8B,GACtBmT,MAAO+oB,EAAKO,QAAQ16B,KACpBiN,KAAMktB,EAAKO,QAAQC,kBACnB1N,KAAMkN,EAAKC,YAAYl2B,SAGrBi2B,EAAKC,YAAYQ,YAAmD,UAArCT,EAAKC,YAAYQ,WAAW52B,OAC7Dy2B,EAAK3tB,MAAQqtB,EAAKC,YAAYQ,WAAWC,cAG3CC,EAAAA,GAAAA,GAAwBl8B,EAAMqS,UAAWwpB,EAbuC,CAclF,E,qmBCdA,IAEM/T,GAAM,CACVjmB,MAAO,CACLs6B,gBAAiB,EACjBpU,kBAAmB+S,KACnBsB,SAAU,CAAC,EACXC,OAAQ,KACRC,gBAAiB,KACjBC,sBAAuB,KACvBC,eAAgB,IAElBtiB,QAAS,CACPuiB,mBAAoB,SAAA56B,GAAK,OAAIA,EAAM26B,eAAez7B,MAAM,GAE1D+P,UAAW,CACT4rB,qBAAoB,SAAE76B,EAAOkmB,GAC3BlmB,EAAMkmB,kBAAoBA,CAC5B,EACA4U,WAAU,SAAE96B,EAAO,GAA0B,IAAxB+6B,EAAW,EAAXA,YAAaC,EAAO,EAAPA,QAChCh7B,EAAMu6B,SAASQ,GAAeC,CAChC,EACAC,cAAa,SAAEj7B,EAAO,GAA0B,IAAxB+6B,EAAW,EAAXA,YAAoB,EAAPC,QACnCh7B,EAAMu6B,SAASQ,GAAaG,cACrBl7B,EAAMu6B,SAASQ,EACxB,EACAI,WAAU,SAAEn7B,EAAO6uB,GACjB7uB,EAAMo7B,QAAUvM,CAClB,EACAwM,UAAS,SAAEr7B,EAAOw6B,GAChBx6B,EAAMw6B,OAASA,CACjB,EACAc,kBAAiB,SAAEt7B,EAAOyP,GACxBzP,EAAM26B,eAAiBlrB,CACzB,EACA8rB,yBAAwB,SAAEv7B,EAAOyP,GAC/BzP,EAAM06B,sBAAwBjrB,CAChC,EACA+rB,yBAAwB,SAAEx7B,GACxBA,EAAMs6B,gBAAkBj7B,KAAKC,MAAMU,EAAMs6B,gBAAiB,EAC5D,EACAmB,qBAAoB,SAAEz7B,GACpBA,EAAMs6B,gBAAkB,CAC1B,GAEFhqB,QAAS,CAMPorB,mBAAkB,SAAEv9B,EAAOw9B,GACzB,IAAQ37B,EAA4B7B,EAA5B6B,MAAOD,EAAqB5B,EAArB4B,SAAU8Q,EAAW1S,EAAX0S,OAEzB,IACE7Q,EAAMy6B,iBACH,CACCmB,UAAUC,OACVD,UAAUE,SACVn7B,SAASX,EAAMy6B,gBAAgBsB,YASrC,OAJElrB,EAAO,2BADL8qB,EACiCK,EAAAA,GAAAA,iBAEAA,EAAAA,GAAAA,UAE9Bj8B,EAAS,uBAClB,EACAk8B,oBAAmB,SAAE99B,GACnB,IAAQ6B,EAA4B7B,EAA5B6B,MAAOD,EAAqB5B,EAArB4B,SAAU8Q,EAAW1S,EAAX0S,OACzB,GAAK7Q,EAAMy6B,gBAEX,OADA5pB,EAAO,2BAA4BmrB,EAAAA,GAAAA,UAC5Bj8B,EAAS,sBAClB,EAGAm8B,qBAAoB,SAAE/9B,GACpB,OAAO,IAAIlB,SAAQ,SAACC,EAASqD,GAC3B,IACE,IAAQP,EAAuC7B,EAAvC6B,MAAO6Q,EAAgC1S,EAAhC0S,OAAQ9Q,EAAwB5B,EAAxB4B,SACjBsqB,EADyClsB,EAAdqS,UACF2L,SAASwB,UAAUb,QAClD9c,EAAMy6B,gBAAkBz6B,EAAMkmB,kBAAkB4F,gBAAgB,CAAE3tB,MAAAA,IAClE6B,EAAMy6B,gBAAgB0B,iBACpB,WACA,YAAyB,IAAdpR,EAAO,EAAfqR,OACIrR,IACiB,iBAAlBA,EAAQpiB,MACV5I,EAAS,sBAAuB,CAC9B0d,cAAe,CAACsN,EAAQvL,cACxBS,OAAO,IAEkB,WAAlB8K,EAAQpiB,MACjB5I,EAAS,iBAAkB,CACzBoc,SAAU,CAAC4O,EAAQtM,QACnBvC,QAAQ,EACRwD,gBAAyD,IAAxC2K,EAAa/N,gBAAgBpd,OAC9CigB,SAAU,YAEe,kBAAlB4L,EAAQpiB,MACjB5I,EAAS,iBAAkB,CACzBoc,SAAU,CAAC4O,EAAQtM,QACnBvC,QAAQ,EACRwD,gBAAiBqL,EAAQtM,OAAOjhB,MAAM6sB,EAAa9N,sBACnD4C,SAAU,YAEe,WAAlB4L,EAAQpiB,MACjB5I,EAAS,mBAAoBgrB,EAAQvtB,IACV,wBAAlButB,EAAQpiB,OAKjBnI,YAAW,WACTT,EAAS,kBAAmB,CAC1Bs8B,OAAQtR,EAAQuR,WAAW9+B,GAC3BuQ,SAAU,CAACgd,EAAQuR,WAAW3C,eAEhC55B,EAAS,aAAc,CAAE25B,KAAM3O,EAAQuR,aACvC7C,GAA0Bt7B,EAAO4sB,EAAQuR,WAC3C,GAAG,KAEP,IAEFt8B,EAAMy6B,gBAAgB0B,iBAAiB,QAAQ,WAEzCn8B,EAAM06B,wBAA0BsB,EAAAA,GAAAA,kBAClCj8B,EAAS,mBAAoB,CAC3B0J,MAAO,UACPuH,WAAY,8BACZ7Q,QAAS,MAIT,IAAI6F,IAAI,CACVg2B,EAAAA,GAAAA,MACAA,EAAAA,GAAAA,WACCl1B,IAAI9G,EAAM06B,yBACX36B,EAAS,uBAAwB,CAAEof,SAAU,YAC7Cpf,EAAS,6BACTA,EAAS,sBAEX8Q,EAAO,wBACPA,EAAO,2BAA4BmrB,EAAAA,GAAAA,OACrC,IACAh8B,EAAMy6B,gBAAgB0B,iBAAiB,SAAS,YAAuB,IAAZ/sB,EAAK,EAAbgtB,OACjDviB,QAAQzK,MAAM,+BAAgCA,GAE9CrP,EAAS,mBACX,IACAC,EAAMy6B,gBAAgB0B,iBAAiB,SAAS,YAA4B,IAAjBI,EAAU,EAAlBH,OAC3CI,EAAc,IAAIx2B,IAAI,CAC1B,IACA,OAEM1I,EAASi/B,EAATj/B,KACJk/B,EAAY11B,IAAIxJ,IAClBuc,QAAQ4iB,MAAM,iDAAD,OAAkDn/B,EAAI,uBACnEuT,EAAO,2BAA4BmrB,EAAAA,GAAAA,UAEnCniB,QAAQC,KAAK,iEAAD,OAAkExc,IAC9EkD,YAAW,WACTT,EAAS,uBACX,GApKuB,IAoKPC,EAAMs6B,iBACtBzpB,EAAO,4BACH7Q,EAAM06B,wBAA0BsB,EAAAA,GAAAA,QAClCj8B,EAAS,wBAAyB,CAAEof,SAAU,YAC9Cpf,EAAS,8BACTA,EAAS,sBACTA,EAAS,mBAAoB,CAC3B0J,MAAO,QACPuH,WAAY,wBACZC,YAAa,CAAC3T,GACd6C,QAAS,OAGb0Q,EAAO,2BAA4BmrB,EAAAA,GAAAA,QAErCj8B,EAAS,mBACX,IACA7C,GAGF,CAFE,MAAOE,GACPmD,EAAOnD,EACT,CACF,GACF,EACAs/B,oBAAmB,YAAuB,IAAnB18B,EAAK,EAALA,MAAOD,EAAQ,EAARA,SAC5BA,EAAS,wBAAyB,CAAEof,SAAU,YAC9Cpf,EAAS,8BACTA,EAAS,sBACTC,EAAMy6B,gBAAgBkC,OACxB,EAGArR,sBAAqB,SAAEntB,EAAO,GAK3B,QAJDghB,SAAAA,OAAQ,IAAG,YAAS,MACpB3d,IAAAA,OAAG,IAAG,GAAK,MACX0a,OAAAA,OAAM,IAAG,GAAK,MACdwM,OAAAA,OAAM,IAAG,GAAK,EAEd,IAAIvqB,EAAM6B,MAAMu6B,SAASpb,GAAzB,CAEA,IAAM6b,EAAU78B,EAAM6B,MAAMkmB,kBAAkBoF,sBAAsB,CAClEnM,SAAAA,EAAUhhB,MAAAA,EAAO+d,OAAAA,EAAQwM,OAAAA,EAAQlnB,IAAAA,IAEnCrD,EAAM0S,OAAO,aAAc,CAAEkqB,YAAa5b,EAAU6b,QAAAA,GALV,CAM5C,EACA4B,qBAAoB,SAAEz+B,EAAOghB,GAC3B,IAAM6b,EAAU78B,EAAM6B,MAAMu6B,SAASpb,GAChC6b,GACL78B,EAAM0S,OAAO,gBAAiB,CAAEkqB,YAAa5b,EAAU6b,QAAAA,GACzD,EACAzP,cAAa,SAAEptB,EAAO,GAAuB,IAArBghB,EAAQ,EAARA,SAAaxR,GAAI,cACvCxP,EAAM6B,MAAMkmB,kBAAkBqF,cAAc,IAC1CptB,MAAAA,EACAghB,SAAAA,GACGxR,GAEP,EAGA6d,2BAA0B,SAAErtB,GAC1B,IAAIA,EAAM6B,MAAMu6B,SAAS9c,cAAzB,CACA,IAAMud,EAAU78B,EAAM6B,MAAMkmB,kBAAkBsF,2BAA2B,CAAErtB,MAAAA,IAC3EA,EAAM0S,OAAO,aAAc,CAAEkqB,YAAa,gBAAiBC,QAAAA,GAFb,CAGhD,EACA6B,0BAAyB,SAAE1+B,GACzB,IAAM68B,EAAU78B,EAAM6B,MAAMu6B,SAAS9c,cAChCud,GACL78B,EAAM0S,OAAO,gBAAiB,CAAEkqB,YAAa,gBAAiBC,QAAAA,GAChE,EACAtP,mBAAkB,SAAEvtB,EAAO,GAAa,IAARwP,GAAI,4BAClCxP,EAAM6B,MAAMkmB,kBAAkBwF,mBAAmB,IAC/CvtB,MAAAA,GACGwP,GAEP,EAGAge,4BAA2B,SAAExtB,GAC3B,IAAIA,EAAM6B,MAAMu6B,SAASI,eAAzB,CACA,IAAMK,EAAU78B,EAAM6B,MAAMkmB,kBAAkByF,4BAA4B,CAAExtB,MAAAA,IAE5EA,EAAM0S,OAAO,aAAc,CAAEkqB,YAAa,iBAAkBC,QAAAA,GAHb,CAIjD,EACA8B,2BAA0B,SAAE3+B,GAC1B,IAAM68B,EAAU78B,EAAM6B,MAAMu6B,SAASI,eAChCK,GACL78B,EAAM0S,OAAO,gBAAiB,CAAEkqB,YAAa,iBAAkBC,QAAAA,GACjE,EACA+B,oBAAmB,SAAE5+B,EAAO6+B,GAC1B,IAAM5R,EAAWjtB,EAAM6B,MAAM26B,eAAe/7B,QAAO,SAACq+B,GAAE,OAAKA,IAAOD,CAAO,IACzE7+B,EAAM0S,OAAO,oBAAqBua,EACpC,EAGAS,mBAAkB,SAAE1tB,GAClB,IAAIA,EAAM6B,MAAMu6B,SAASnR,MAAzB,CACA,IAAM4R,EAAU78B,EAAM6B,MAAMkmB,kBAAkB2F,mBAAmB,CAAE1tB,MAAAA,IACnEA,EAAM0S,OAAO,aAAc,CAAEkqB,YAAa,QAASC,QAAAA,GAFb,CAGxC,EACAkC,kBAAiB,SAAE/+B,GACjB,IAAM68B,EAAU78B,EAAM6B,MAAMu6B,SAASnR,MAChC4R,GACL78B,EAAM0S,OAAO,gBAAiB,CAAEkqB,YAAa,QAASC,QAAAA,GACxD,EAGAG,WAAU,SAAEh9B,EAAO0wB,GACjB1wB,EAAM0S,OAAO,aAAcge,EAC7B,EACAsO,iBAAgB,YAA0C,IAAtCp9B,EAAQ,EAARA,SAAU8Q,EAAM,EAANA,OAAQ7Q,EAAK,EAALA,MAAOwQ,EAAS,EAATA,UAErCqe,EAAQ7uB,EAAMo7B,QACpB,GAAI5qB,EAAUI,SAASqG,qBAAmC,IAAV4X,GAA0C,OAAjB7uB,EAAMw6B,OAAiB,CAC9F,IAAMA,EAAS,IAAI4C,GAAAA,GAAO,UAAW,CAAEzE,OAAQ,CAAE9J,MAAAA,KACjD2L,EAAO6C,UAEPxsB,EAAO,YAAa2pB,GACpBz6B,EAAS,kBAAmBy6B,EAC9B,CACF,EACA8C,qBAAoB,YAAqB,IAAjBzsB,EAAM,EAANA,OAAQ7Q,EAAK,EAALA,MAC9BA,EAAMw6B,QAAUx6B,EAAMw6B,OAAO+C,aAC7B1sB,EAAO,YAAa,KACtB,IAIJ,Y,wUC7RA2sB,GAAAA,GAAAA,IACEC,GAAAA,KAcEC,GAAAA,E,upBCrBG,IACMC,GAAgB,IAAIrQ,KAAK,cAGzBsQ,GAA+B,KAE/BvgB,GAAe,CAE1BwgB,OAAO,EAEPC,YAAa,CACXC,cAAe,EACfC,MAAO,GAKTC,aAAc,CACZC,SAAU,GACVC,OAAQ,CACNC,sBAAsB,EACtBC,aAAa,GAEfC,YAAa,CACXC,eAAgB,CAAC,OAAQ,MAAO,WAIpCC,IAAK,KAELC,MAAO,MAGIC,GAAe,SACvBrhB,GAAaygB,aAAW,IAC3BC,cDzBoC,IC4BzBY,GAAmB,SAACx3B,EAAOsI,EAAOmvB,GAC7C,IAAMC,EAAW13B,EAAMirB,QAAQ3iB,GACzBqvB,EAAWD,EAAWD,EACtBG,GAAW,OAAI53B,GAKrB,OAHA43B,EAASxgB,OAAOsgB,EAAU,GAE1BE,EAASxgB,OAAO,KAAMugB,EAAU,EAAGC,EAAS7/B,OAAS,GAAI,EAAGuQ,GACrDsvB,CACT,EAEMC,GAAY,SAAClhC,EAAMmhC,GAAQ,gBAC5BnhC,GAAI,IACPohC,MAAOD,EACPE,WAAY7R,KAAK8R,MACjBC,SArDqB,GAqDJ,EAGbC,GAAiB,SAACxhC,GAAI,OAAKA,EAAKqhC,WAAa,GAAKrhC,EAAKuhC,SAAW,CAAC,EAEnEE,GAAe,SAACv/B,GACpBA,EAAMi+B,aAAej+B,EAAMi+B,cAAgB,CACzCE,OAAQ,CAAC,EACTG,YAAa,CAAC,GAEhB3gC,OAAOsd,QAAQoC,GAAa4gB,aAAaE,QAAQtlB,SAAQ,YAAY,mBAAV1Z,EAAC,KAAEkD,EAAC,KAC5C,iBAANA,GAA+B,kBAANA,IACpCwX,QAAQC,KAAK,qBAAD,OAAsB3a,EAAC,qCACnC,KAAIa,EAAMi+B,aAAaE,OAAQh/B,EAAGke,GAAa4gB,aAAaE,OAAOh/B,IACrE,IACAxB,OAAOsd,QAAQoC,GAAa4gB,aAAaK,aAAazlB,SAAQ,YAAY,mBAAV1Z,EAAC,KAAEkD,EAAC,KAC9DH,MAAMoF,QAAQjF,KAClBwX,QAAQC,KAAK,0BAAD,OAA2B3a,EAAC,qCACxC,KAAIa,EAAMi+B,aAAaK,YAAan/B,EAAGke,GAAa4gB,aAAaK,YAAYn/B,IAC/E,GACF,EAwDMqgC,GAAgB,WAAiB,2BAAbC,EAAQ,yBAARA,EAAQ,gBAEhC,IAAMC,EAAc,KAClBD,EAAS7iC,KAAI,SAAA+iC,GAAC,OAAIz9B,MAAMoF,QAAQq4B,GAAKA,EAAI,EAAE,KAC3C/gC,QAAO,SAAAiqB,GAAK,OACZlrB,OAAOiiC,UAAU5d,eAAelW,KAAK+c,EAAO,SAC5ClrB,OAAOiiC,UAAU5d,eAAelW,KAAK+c,EAAO,cAC5ClrB,OAAOiiC,UAAU5d,eAAelW,KAAK+c,EAAO,SAC5ClrB,OAAOiiC,UAAU5d,eAAelW,KAAK+c,EAAO,YAAY,IAEpDgX,EAAU,KAAQH,EAAa,QAC/BI,EAAiBniC,OAAOsd,QAAQ4kB,GAASjjC,KAAI,YAAqB,mBAAnBmjC,EAAI,KAAEC,EAAO,KAIhE,GAFAA,EAAQrgC,MAAK,SAACC,EAAGC,GAAC,OAAKD,EAAEqgC,UAAYpgC,EAAEogC,UAAY,GAAK,CAAC,IAErDF,EAAKtgC,WAAW,eAAgB,CAClC,IAEIygC,EAFEC,EAAkB,KAAcH,GAAS,YAAY,MAAqB,yBAArB,EAATI,SAAoD,IAStG,OALEF,EADEC,EAAkB,EACRH,EAAQh/B,MAAMm/B,GAGdH,EAEP,KAASE,GAAW,SAACtgC,EAAGC,GAC7B,OAAID,EAAEmgC,OAASlgC,EAAEkgC,MACbngC,EAAEwgC,YAAcvgC,EAAEugC,WACF,oBAAhBxgC,EAAEwgC,WACGxgC,EAAEuS,KAAK,KAAOtS,EAAEsS,KAAK,EAGhC,GACF,CAAO,OAAI4tB,EAAKtgC,WAAW,UAElB,KAAUugC,GAEVA,CAEX,IACA,OAAO,KAAQF,GACZngC,MAAK,SAACC,EAAGC,GAAC,OAAKD,EAAEqgC,UAAYpgC,EAAEogC,UAAY,GAAK,CAAC,GACtD,EAwGahxB,GAAY,CACvBoxB,uBAAsB,SAAErgC,EAAOsgC,GACrB,MAAK,KAAUjjB,IACzB,EACAkjB,qBAAoB,SAAEvgC,EAAOsgC,GAC3B,IAAME,EAAOF,EAASG,QACtBzgC,EAAMw+B,IAAMgC,EACZ,IAAI/B,EAAQz+B,EAAMy+B,MACdA,GAASA,EAAMS,QAAUoB,EAASI,MACpC7mB,QAAQC,KAAK,8DACb2kB,EAAQ,MAKV,MAvN0B,SAACA,EAAO+B,GACpC,IAAM/+B,EAAS,CAAEk/B,OAAQ,KAAMC,MAAO,KAAMC,YAAY,GAClDC,EAAaxB,GAAeb,GAAS,CAAC,GACtCsC,EAAYzB,GAAekB,GAAQ,CAAC,GA8B1C,OA7BKO,GAAaD,GAChBr/B,EAAOo/B,YAAa,EACpBhnB,QAAQ4iB,MAAM,wEACdh7B,EAAOk/B,OAASlC,EAChBh9B,EAAOm/B,MAAQJ,IACLM,GAAcC,GACxBlnB,QAAQ4iB,MAAM,sFACdh7B,EAAOk/B,OAASH,EAChB/+B,EAAOm/B,MAAQnC,GACNqC,GAAcC,GACvBlnB,QAAQ4iB,MAAM,wDACV+D,EAAKrB,aAAeV,EAAMU,YAAcqB,EAAKnB,WAAaZ,EAAMY,UAClExlB,QAAQ4iB,MAAM,qEACdh7B,EAAOk/B,OAASlC,EAChBh9B,EAAOm/B,MAAQJ,IAEf3mB,QAAQ4iB,MAAM,8DACV+D,EAAKrB,WAAaV,EAAMU,YAC1B19B,EAAOk/B,OAASlC,EAChBh9B,EAAOm/B,MAAQJ,IAEf/+B,EAAOk/B,OAASH,EAChB/+B,EAAOm/B,MAAQnC,MAInB5kB,QAAQ4iB,MAAM,gDACdh7B,EAAOo/B,YAAa,GAEfp/B,CACT,CAqLyCu/B,CAFrCvC,EAtCyB,SAACA,GAC5B,OAAKA,GAEDA,EAAMY,SA7PW,IA8PnBxlB,QAAQ4iB,MAAM,2FAGd5iB,QAAQ4iB,MAAM,wBAGZgC,EAAMY,SApQW,IAqQnBxlB,QAAQ4iB,MAAM,mGAGVx4B,OAAOg9B,mBACLh9B,OAAOg9B,kBAAkBC,oBAC3BrnB,QAAQ4iB,MAAM,sCACPx4B,OAAOg9B,kBAAkBC,kBAAkBp1B,KAAK,CAAC,EAAG,oBAAqB,CAAE3J,KAAMs8B,EAAMY,SAAU8B,GA3QzF,GA2QwG1C,IAKtHA,GArBYA,CAsBrB,CAeY2C,CAAc3C,GAEqC+B,GAArDG,EAAM,EAANA,OAAQC,EAAK,EAALA,MAAOS,EAAW,EAAXA,YAEfC,EAAUhB,EAASiB,WAAa5D,GAChC6D,EAAgBF,EAAU5C,GAAerhB,GAAaygB,YACxDD,GAAQ,EAUZ,GARe,OAAX8C,IACF9mB,QAAQ4iB,MAAM,mCAAD,OAAoC6E,EAAU,MAAQ,WAAU,UAC7EX,EAAS3B,GAAU,CACjBlB,YAAa,MAAK0D,GAClBvD,aAAc,MAAK5gB,GAAa4gB,kBAI/BoD,GAAeV,GAAUC,EAAO,CACnC/mB,QAAQ4iB,MAAM,qCAEd,MAAwDkE,EAAfc,GAAnB,EAAdtC,WAA4B,EAAZE,UAA2B,eACVqC,GAAcd,EAA/CzB,WAA+CyB,EAA/BvB,UAA0B,QAAKuB,EAAK,KAC5D/C,GAAS,KAAQ4D,EAAYC,GAC7B7nB,QAAQ4iB,MAAM,QAAD,OAASoB,EAAQ,QAAU,eAAe,YACzD,CAEA,IACI8D,EACAC,EAFEC,EA1MkB,SAAClB,EAAQC,GACnC,OAAO1+B,MAAMC,KAAK,IAAI6D,IAAI,GAAD,eACpBrI,OAAOD,MAAKokC,EAAAA,GAAAA,KAAOnB,GAAU,CAAC,GAAG7C,aAAe,CAAC,MAAG,OACpDngC,OAAOD,MAAKokC,EAAAA,GAAAA,KAAOlB,GAAS,CAAC,GAAG9C,aAAe,CAAC,OAEvD,CAqMwBiE,CAAapB,EAAQC,GAGrC/C,GAEFhkB,QAAQ4iB,MAAM,uBACdkF,EAzMqB,SAAChB,EAAQC,EAAOiB,GACzC,OAAKjB,EAAM9C,YACN6C,EAAO7C,YACLngC,OAAO2E,YAAYu/B,EAAYjlC,KAAI,SAAAolC,GACxC,IAAMC,EAAatB,EAAO7C,YAAYkE,GAChCE,EAAYtB,EAAM9C,YAAYkE,GAEpC,MAAO,CAACA,EAAM9kB,QAAQ+kB,EAAaC,EAAYD,EAAaC,IAAc,GAC5E,KANgCtB,EAAM9C,YADP6C,EAAO7C,WAQxC,CAgMmBqE,CAAYxB,EAAQC,EAAOiB,GACxCtC,GAAaoB,GACbpB,GAAaqB,GACbgB,EArJqB,SAACjB,EAAQC,EAAOiB,GACzC,IAAKjB,EAAO,OAAOD,EACnB,IAAKA,EAAQ,OAAOC,EACpB,IAAkBwB,EAAiCzB,EAA3CzC,SAA4BuD,GAAU,QAAKd,EAAM,IACvC0B,EAAiBzB,EAA3B1C,SAWFoE,EAAe,MAAKb,GACpBc,EAAe/C,GAAc6C,EAAcD,GA4BjD,OA3BAG,EAAa1pB,SAAQ,YAAmD,IAAhDknB,EAAI,EAAJA,KAAiBK,GAAF,EAATH,UAAoB,EAATG,WAAoBjuB,GAAF,EAAPqwB,QAAa,EAAJrwB,MAC3D,GAAI4tB,EAAKtgC,WAAW,KAClBoa,QAAQzK,MAAM,kEAAD,OAAmE2wB,EAAI,mDAGtF,OAAQK,GACN,IAAK,MACH,KAAIkC,EAAcvC,EAAM5tB,EAAK,IAC7B,MACF,IAAK,kBACH,KAAImwB,EAAcvC,EAAM79B,MAAMC,KAAK,IAAI6D,IAAI,KAAIs8B,EAAcvC,IAAOlf,IAAI1O,EAAK,MAC7E,MACF,IAAK,uBACH,IAAMswB,EAAS,IAAIz8B,IAAI,KAAIs8B,EAAcvC,IACzC0C,EAAM,OAAQtwB,EAAK,IACnB,KAAImwB,EAAcvC,EAAM79B,MAAMC,KAAKsgC,IACnC,MAEF,IAAK,oBACH,cAA0BtwB,EAAI,GAAvB1C,EAAK,KAAEmvB,EAAQ,KACtB,KAAI0D,EAAcvC,EAAMpB,GAAiB,KAAI2D,EAAcvC,GAAOtwB,EAAOmvB,IACzE,MAEF,QACE/kB,QAAQzK,MAAM,+BAAD,OAAgCgxB,EAAS,2DAE5D,IACO,SAAKkC,GAAY,IAAEpE,SAAUqE,GACtC,CAwGmBG,CAAY/B,EAAO1C,aAAc2C,EAAM3C,gBAEpD0D,EAAahB,EAAO7C,YACpB8D,EAAajB,EAAO1C,cAGtB0D,EA5GuB,SAACA,GAAqD,IAAzCgB,EAAY,UAAH,6CAAGtlB,GAAaygB,YAC3Dr8B,EAAS,MAAKkgC,GACZE,EAAclkC,OAAOD,KAAKikC,GAEhC,GAAIA,EAAW3D,OA7NiB,KA6Nc2D,EAAW3D,OAASJ,GAA8B,CAC9F/jB,QAAQ4iB,MAAM,sCACd,IAAMmG,EAAe,IAAI58B,IAAIrI,OAAOD,KAAKilC,IAGzClhC,EAAS,CAAC,EACVogC,EAAYhpB,SAAQ,SAAAmpB,GACdY,EAAa97B,IAAIk7B,KACnBvgC,EAAOugC,GAAQL,EAAWK,GAE9B,IAGIL,EAAW3D,QAAUJ,KAEvB/jB,QAAQ4iB,MAAM,uCACd9+B,OAAOD,KAAKilC,GAAW9pB,SAAQ,SAAAmpB,GAAUvgC,EAAOugC,GAAQ,CAAE,IAE9D,MAAWL,EAAW3D,MAAQ,GAAK2D,EAAW3D,MAAQ,MACpDnkB,QAAQ4iB,MAAM,uCACdoF,EAAYhpB,SAAQ,SAAAmpB,GAAUvgC,EAAOugC,GAAQ,CAAE,KAGjD,OADAvgC,EAAOu8B,MAAQ,EACRv8B,CACT,CAgFiBohC,CAAYlB,GAEzBhB,EAAO7C,YAAc,SAAK0D,GAAkBG,GAC5ChB,EAAO1C,aAAe,SAAK5gB,GAAa4gB,cAAiB2D,GAEzD5hC,EAAM69B,MAAQA,GAASwD,EACvBrhC,EAAMy+B,MAAQkC,EAEVC,GAASD,IAAW3gC,EAAM69B,QAC5B79B,EAAMy+B,MAAMU,WAAa9/B,KAAKyjC,IAAIlC,EAAMzB,WAAYwB,EAAOxB,aAE7Dn/B,EAAM89B,YAAc99B,EAAMy+B,MAAMX,YAChC99B,EAAMi+B,aAAej+B,EAAMy+B,MAAMR,YACnC,EACA8E,QAAO,SAAE/iC,EAAO,GAAiB,IAAfgiC,EAAI,EAAJA,KAAMvyB,EAAK,EAALA,MACtBzP,EAAM89B,YAAYkE,GAAQvyB,EAC1BzP,EAAM69B,OAAQ,CAChB,EACAmF,cAAa,SAAEhjC,EAAO,GAAiB,IAAf+/B,EAAI,EAAJA,KAAMtwB,EAAK,EAALA,MACxBswB,EAAKtgC,WAAW,KAClBoa,QAAQzK,MAAM,iDAAD,OAAkD2wB,EAAI,kBAGrE,KAAI//B,EAAMi+B,aAAc8B,EAAMtwB,GAC9BzP,EAAMi+B,aAAaC,SAAW,GAAH,eACtBl+B,EAAMi+B,aAAaC,UAAQ,CAC9B,CAAEkC,UAAW,MAAOL,KAAAA,EAAM5tB,KAAM,CAAC1C,GAAQwwB,UAAW3S,KAAK8R,SAE3Dp/B,EAAM69B,OAAQ,EAChB,EACAoF,wBAAuB,SAAEjjC,EAAO,GAAiB,IAAf+/B,EAAI,EAAJA,KAAMtwB,EAAK,EAALA,MACtC,GAAIswB,EAAKtgC,WAAW,KAClBoa,QAAQzK,MAAM,iDAAD,OAAkD2wB,EAAI,qBADrE,CAIA,IAAMmD,EAAa,IAAIl9B,IAAI,KAAIhG,EAAMi+B,aAAc8B,IACnDmD,EAAWriB,IAAIpR,GACf,KAAIzP,EAAMi+B,aAAc8B,GAAM,OAAImD,IAClCljC,EAAMi+B,aAAaC,SAAW,GAAH,eACtBl+B,EAAMi+B,aAAaC,UAAQ,CAC9B,CAAEkC,UAAW,kBAAmBL,KAAAA,EAAM5tB,KAAM,CAAC1C,GAAQwwB,UAAW3S,KAAK8R,SAEvEp/B,EAAM69B,OAAQ,CARd,CASF,EACAsF,2BAA0B,SAAEnjC,EAAO,GAAiB,IAAf+/B,EAAI,EAAJA,KAAMtwB,EAAK,EAALA,MACzC,GAAIswB,EAAKtgC,WAAW,KAClBoa,QAAQzK,MAAM,iDAAD,OAAkD2wB,EAAI,qBADrE,CAIA,IAAMmD,EAAa,IAAIl9B,IAAI,KAAIhG,EAAMi+B,aAAc8B,IACnDmD,EAAU,OAAQzzB,GAClB,KAAIzP,EAAMi+B,aAAc8B,GAAM,OAAImD,IAClCljC,EAAMi+B,aAAaC,SAAW,GAAH,eACtBl+B,EAAMi+B,aAAaC,UAAQ,CAC9B,CAAEkC,UAAW,uBAAwBL,KAAAA,EAAM5tB,KAAM,CAAC1C,GAAQwwB,UAAW3S,KAAK8R,SAE5Ep/B,EAAM69B,OAAQ,CARd,CASF,EACAuF,4BAA2B,SAAEpjC,EAAO,GAA2B,IAAzB+/B,EAAI,EAAJA,KAAMtwB,EAAK,EAALA,MAAOmvB,EAAQ,EAARA,SACjD,GAAImB,EAAKtgC,WAAW,KAClBoa,QAAQzK,MAAM,iDAAD,OAAkD2wB,EAAI,qBADrE,CAIA,IAAMmD,EAAa,KAAIljC,EAAMi+B,aAAc8B,GACrCsD,EAAgB1E,GAAiBuE,EAAYzzB,EAAOmvB,GAC1D,KAAI5+B,EAAMi+B,aAAc8B,EAAMsD,GAC9BrjC,EAAMi+B,aAAaC,SAAW,GAAH,eACtBl+B,EAAMi+B,aAAaC,UAAQ,CAC9B,CAAEkC,UAAW,oBAAqBL,KAAAA,EAAM5tB,KAAM,CAAC1C,GAAQwwB,UAAW3S,KAAK8R,SAEzEp/B,EAAM69B,OAAQ,CARd,CASF,EACAyF,YAAW,SAAEtjC,EAAO,GAAc,IAAZuuB,EAAQ,EAARA,SACpBvuB,EAAMi+B,aAAaC,SAAWsB,GAAcx/B,EAAMi+B,aAAaC,UAC/Dl+B,EAAMy+B,MAAQO,GAAU,CACtBlB,aAAagE,EAAAA,GAAAA,IAAM9hC,EAAM89B,aACzBG,cAAc6D,EAAAA,GAAAA,IAAM9hC,EAAMi+B,eACzB1P,EACL,GAyBF,SAtB0B,CACxBvuB,MAAO,MACF,KAAUqd,KAEfpO,UAAAA,GACAqB,QAAS,CACPizB,sBAAqB,YAAwD,IAApDvjC,EAAK,EAALA,MAAOwQ,EAAS,EAATA,UAAWK,EAAM,EAANA,OAAM,yDAAwB,CAAC,EAAC,IAApB2yB,MAAAA,OAAK,IAAG,GAAK,EAC5DC,EAAWzjC,EAAM69B,OAAS2F,EAEhC,GADA3pB,QAAQ4H,IAAIgiB,GACPA,EAAL,CACA5yB,EAAO,cAAe,CAAE0d,SAAU/d,EAAU3P,MAAM2Q,YAAYkvB,MAC9D,IAAM/H,EAAS,CAAE+K,uBAAwB,CAAE,aAAc1jC,EAAMy+B,QAC/DjuB,EAAUyV,IAAIC,kBACXyd,cAAc,CAAEhL,OAAAA,IAChBx7B,MAAK,SAAC2D,GACL+P,EAAO,uBAAwB/P,GAC/Bd,EAAM69B,OAAQ,CAChB,GARmB,CASvB,IClYJ,GA7Cc,CACZ79B,MAAO,CACL+N,SAAU,GACV61B,QAAS,CAAE5jC,MAAO,IAClB6jC,QAAQ,GAEV50B,UAAW,CACT60B,WAAU,SAAE9jC,EAAO4jC,GACjB5jC,EAAM4jC,QAAUA,CAClB,EACAG,WAAU,SAAE/jC,EAAO+qB,GACjB/qB,EAAM+N,SAAS7K,KAAK6nB,GACpB/qB,EAAM+N,SAAW/N,EAAM+N,SAAS/M,OAAO,GAAI,GAC7C,EACAgjC,YAAW,SAAEhkC,EAAO+N,GAClB/N,EAAM+N,SAAWA,EAAS/M,OAAO,GAAI,GACvC,EACAijC,UAAS,SAAEjkC,EAAO6jC,GAChB7jC,EAAM6jC,OAASA,CACjB,GAEFvzB,QAAS,CACP4zB,gBAAe,SAAE/lC,EAAOq8B,GACtB,IAAMoJ,EAAUpJ,EAAOoJ,QAAQ,eAC/BA,EAAQO,SAASC,QAAQ,MAAM,WAC7BjmC,EAAM0S,OAAO,aAAa,EAC5B,IACA+yB,EAAQS,SAAQ,WACdlmC,EAAM0S,OAAO,aAAa,EAC5B,IACA+yB,EAAQU,SAAQ,WACdnmC,EAAM0S,OAAO,aAAa,EAC5B,IACA+yB,EAAQW,GAAG,WAAW,SAACC,GACrBrmC,EAAM0S,OAAO,aAAc2zB,EAC7B,IACAZ,EAAQW,GAAG,YAAY,YAAkB,IAAfx2B,EAAQ,EAARA,SACxB5P,EAAM0S,OAAO,cAAe9C,EAC9B,IACA61B,EAAQ76B,OACR5K,EAAM0S,OAAO,aAAc+yB,EAC7B,ICKJ,GA9Cc,CACZ5jC,MAAO,CACLgtB,UAAU,EACVC,cAAc,EAKdwX,UAAU,EAIVzL,WAAW,GAEb/pB,UAAW,CACTy1B,cAAa,SAAE1kC,EAAO,GAA4B,IAA1BgtB,EAAQ,EAARA,SAAUC,EAAY,EAAZA,aAChCjtB,EAAMgtB,SAAWA,EACjBhtB,EAAMitB,aAAeA,CACvB,EACA0X,YAAW,SAAE3kC,EAAO6uB,GAClB7uB,EAAMykC,SAAW5V,CACnB,EACA+V,SAAQ,SAAE5kC,EAAO6uB,GACf7uB,EAAMg5B,UAAYnK,CACpB,EACAgW,WAAU,SAAE7kC,GACVA,EAAMg5B,WAAY,SAGXh5B,EAAM6uB,KACf,GAEFxW,QAAS,CACPgW,SAAU,SAAAruB,GAAK,OAAI,WAGjB,OAAOA,EAAMg5B,WAAah5B,EAAM6uB,OAAS7uB,EAAMykC,QACjD,CAAC,EACDK,aAAc,SAAA9kC,GAAK,OAAI,WAGrB,OAAOA,EAAMg5B,WAAah5B,EAAM6uB,KAClC,CAAC,IC1CL,IAAMkW,GAAoB,WACpBC,GAAiB,QAGjBC,GAAgB,OAChBC,GAAoB,WASpBC,GAAa,SAACnlC,GAClBA,EAAMolC,SAAWplC,EAAMqlC,aACvBrlC,EAAMqO,SAAW,CAAC,CACpB,EA4DA,UACEi3B,YAAY,EACZtlC,MAvEY,CACZqO,SAAU,CAAC,EACX+2B,SAAUL,GACVM,aAAcN,IAqEd1sB,QA5Dc,CACdhK,SAAU,SAACrO,EAAOqY,GAChB,OAAOrY,EAAMqO,QACf,EACAk3B,iBAAkB,SAACvlC,EAAOqY,EAAS7H,GACjC,OAAOxQ,EAAMolC,WAAaL,EAC5B,EACAS,cAAe,SAACxlC,EAAOqY,EAAS7H,GAC9B,OAAOxQ,EAAMolC,WAAaJ,EAC5B,EACAS,aAAc,SAACzlC,EAAOqY,EAAS7H,GAC7B,OAAOxQ,EAAMolC,WAAaH,EAC5B,EACAS,iBAAkB,SAAC1lC,EAAOqY,EAAS7H,GACjC,OAAOxQ,EAAMolC,WAAaF,EAC5B,GA8CAj2B,UA1CgB,CAChB02B,mBAAkB,SAAE3lC,EAAOolC,GACrBA,IACFplC,EAAMqlC,aAAeD,EACrBplC,EAAMolC,SAAWA,EAErB,EACAQ,gBAAe,SAAE5lC,GACfA,EAAMolC,SAAWL,EACnB,EACAc,aAAY,SAAE7lC,GACZA,EAAMolC,SAAWJ,EACnB,EACAc,WAAU,SAAE9lC,EAAO,GAAc,IAAZqO,EAAQ,EAARA,SACnBrO,EAAMqO,SAAWA,EACjBrO,EAAMolC,SAAWH,EACnB,EACAc,gBAAe,SAAE/lC,GACfA,EAAMolC,SAAWF,EACnB,EACAc,YAAW,SAAEhmC,GACXA,EAAMolC,SAAWH,EACnB,EACAgB,SAAQ,SAAEjmC,GACRmlC,GAAWnlC,EACb,GAkBAsQ,QAdc,CAERwd,MAAK,cAAiD,kHACV,OADnC9tB,EAAK,EAALA,MAAOD,EAAQ,EAARA,SAAU8Q,EAAM,EAANA,OAAY+nB,EAAY,EAAZA,aAC1C/nB,EAAO,WAAY+nB,EAAc,CAAEsN,MAAM,IAAO,SAC1CnmC,EAAS,YAAa64B,EAAc,CAAEsN,MAAM,IAAO,OACzDf,GAAWnlC,GAAM,0CAHyC,EAI5D,I,gBCzEImmC,GAAiB,IAAIngC,IAAI,CAAC,QAAS,QAAS,QAAS,UAErDogC,GAAc,CAClBpmC,MAAO,CACL8d,MAAO,GACPuoB,aAAc,EACdC,WAAW,GAEbr3B,UAAW,CACTs3B,SAAQ,SAAEvmC,EAAO8d,GACf9d,EAAM8d,MAAQA,CAChB,EACA0oB,gBAAe,SAAExmC,EAAOkH,GACtBlH,EAAMsmC,WAAY,EAClBtmC,EAAMqmC,aAAen/B,CACvB,EACAy1B,MAAK,SAAE38B,GACLA,EAAMsmC,WAAY,CACpB,GAEFh2B,QAAS,CACPi2B,SAAQ,WAAcjoB,GAAa,IAAvBzN,EAAM,EAANA,OACJiN,EAAQQ,EAAY1f,QAAO,SAAAu7B,GAC/B,IAAM52B,EAAOkjC,GAAAA,EAAAA,SAAyBtM,EAAWuM,UACjD,OAAOP,GAAer/B,IAAIvD,EAC5B,IACAsN,EAAO,WAAYiN,EACrB,EACA0oB,gBAAe,WAAqBG,IAElC91B,EAFuB,EAANA,QAEV,kBAFuB,EAAL7Q,MACL8d,MAAMsU,QAAQuU,IACC,EACrC,EACAC,iBAAgB,aACd/1B,EADwB,EAANA,QACX,QACT,IAIJ,YCdA,GAzBoB,CAClB7Q,MAAO,CACL6mC,OAAQ,IAEVv2B,QAAS,CACPw2B,YAAW,YAAyB,IAArBt2B,EAAS,EAATA,UAAWK,EAAM,EAANA,OACxBL,EAAUyV,IAAIC,kBAAkB6gB,mBAAmB5pC,MAAK,SAAC0pC,GACvDh2B,EAAO,aAAcg2B,EACvB,GACF,EACAjY,YAAW,WAAgCpxB,GAAI,IAAhCgT,EAAS,EAATA,UAAWK,EAAM,EAANA,OAAQ7Q,EAAK,EAALA,MAChCwQ,EAAUyV,IAAIC,kBAAkB8gB,iBAAiB,CAAExpC,GAAAA,IAAML,MAAK,SAACutB,GACrC,MAApBA,EAASjM,QACX5N,EAAO,aAAc7Q,EAAM6mC,OAAOjoC,QAAO,SAAAiwB,GAAK,OAAIA,EAAMrxB,KAAOA,CAAE,IAErE,GACF,GAEFyR,UAAW,CACTg4B,WAAU,SAAEjnC,EAAO6mC,GACjB7mC,EAAM6mC,OAASA,CACjB,I,2BCnBEK,GAAU,CACdlnC,MAAO,CACLmnC,YAAa,CACXjrB,OAAQ,KACRC,SAAU,GACVirB,aAAc,GACdd,WAAW,GAEbY,QAAS,CAAC,GAEZj4B,UAAW,CACTo4B,uBAAsB,SAAErnC,EAAO,GAAoC,IAAlCkc,EAAM,EAANA,OAAQC,EAAQ,EAARA,SAAUirB,EAAY,EAAZA,aACjDpnC,EAAMmnC,YAAYjrB,OAASA,EAC3Blc,EAAMmnC,YAAYhrB,SAAWA,EAC7Bnc,EAAMmnC,YAAYC,aAAeA,EACjCpnC,EAAMmnC,YAAYb,WAAY,CAChC,EACAgB,wBAAuB,SAAEtnC,GACvBA,EAAMmnC,YAAYb,WAAY,CAChC,EACAiB,eAAc,SAAEC,EAAc,GAAe,IAAbhqC,EAAE,EAAFA,GAAIwC,EAAK,EAALA,MAClCwnC,EAAaN,QAAQ1pC,GAAIwC,MAAQA,CACnC,EACAynC,UAAS,SAAEznC,EAAO+hB,GAChB/hB,EAAMknC,QAAQnlB,EAAOvkB,IAAMukB,CAC7B,GAEFzR,QAAS,CACP+2B,uBAAsB,cAAqD,IAAjD72B,EAAS,EAATA,UAAWK,EAAM,EAANA,OAAYqL,EAAM,EAANA,OAAM,IAAEwrB,UAAAA,OAAS,IAAG,KAAE,EAC/DC,EAAoBD,EAAU9qC,KAAI,SAAAY,GAAE,OAAIgT,EAAU2L,SAASoB,kBAAkB/f,EAAG,IAChF4pC,EAAeM,EACfvrB,EAAWwrB,EAAkB7oC,OACjCF,KAAO4R,EAAU2L,SAASmB,aACxB,SAAAmB,GAAM,OAAIA,EAAO3d,KAAKtD,KAAO0e,IAAWkrB,EAAazmC,SAAS8d,EAAOjhB,GAAG,KAG5EqT,EAAO,yBAA0B,CAAEqL,OAAAA,EAAQC,SAAAA,EAAUirB,aAAAA,GACvD,EACAE,wBAAuB,aACrBz2B,EAD+B,EAANA,QAClB,0BACT,EACA02B,eAAc,cAAkD,IAA9C12B,EAAM,EAANA,OAAQ9Q,EAAQ,EAARA,SAAUyQ,EAAS,EAATA,UAAehT,EAAE,EAAFA,GAAIwC,EAAK,EAALA,MAC/C4nC,EAAWp3B,EAAU02B,QAAQA,QAAQ1pC,GAAIwC,MAC/C6Q,EAAO,iBAAkB,CAAErT,GAAAA,EAAIwC,MAAAA,IAC/BwQ,EAAUyV,IAAIC,kBAAkBqhB,eAAe,CAAE/pC,GAAAA,EAAIwC,MAAAA,IAAQ,OAAO,SAAA5C,GAClEyc,QAAQzK,MAAM,6BAA8BhS,GAC5C2C,EAAS,mBAAoB,CAC3B0J,MAAO,QACPuH,WAAY,gCACZC,YAAa,CAAC7T,EAAE2tB,SAChB5qB,QAAS,MAEX0Q,EAAO,iBAAkB,CAAErT,GAAAA,EAAIwC,MAAO4nC,GACxC,GACF,EACAH,UAAS,WAAc1lB,IACrBlR,EADiB,EAANA,QACJ,YAAakR,EACtB,IAIJ,YCKA,SAlEc,CACZ/hB,MAAO,CAEL6nC,aAAc,CAAC,EACfC,YAAa,CAAC,GAEhB74B,UAAW,CACT84B,eAAc,SAAE/nC,EAAO2lB,GACrB,IAAMqiB,EAAehoC,EAAM8nC,YAAYniB,EAAKnoB,IAE5CmoB,EAAKsiB,QAAU3a,KAAK8R,MAAQ9R,KAAK4a,MAAMviB,EAAKwiB,YAE1CnoC,EAAM8nC,YAAYniB,EAAKnoB,IADrBwqC,EAC2B,IAAMA,EAAcriB,GAEpBA,CAEjC,EACAyiB,UAAS,SAAEpoC,EAAOqoC,GAChB,IAAMC,EAAetoC,EAAM6nC,aAAaQ,GAEtCroC,EAAM6nC,aAAaQ,GADjBC,EAC2BA,EAAe,EAEf,CAEjC,EACAC,YAAW,SAAEvoC,EAAOqoC,GAClB,IAAMC,EAAetoC,EAAM6nC,aAAaQ,GAEtCroC,EAAM6nC,aAAaQ,GADjBC,EAC2BA,EAAe,EAEf,CAEjC,GAEFh4B,QAAS,CACPy3B,eAAc,WAAcpiB,IAC1B9U,EADsB,EAANA,QACT,iBAAkB8U,EAC3B,EACA6iB,kBAAiB,WAAmCH,GAAQ,IAAvC73B,EAAS,EAATA,UAAWzQ,EAAQ,EAARA,SAAU8Q,EAAM,EAANA,OACxCL,EAAUyV,IAAIC,kBAAkBuiB,UAAU,CAAEJ,OAAAA,IAAUlrC,MAAK,SAAAwoB,GACzDnlB,YAAW,WACLgQ,EAAUk4B,MAAMb,aAAaQ,IAC/BtoC,EAAS,oBAAqBsoC,EAElC,GAAG,KACHx3B,EAAO,iBAAkB8U,EAC3B,GACF,EACAyiB,UAAS,WAAmCC,GAAQ,IAAvC73B,EAAS,EAATA,UAAWK,EAAM,EAANA,OAAQ9Q,EAAQ,EAARA,SACzByQ,EAAUk4B,MAAMb,aAAaQ,IAChC7nC,YAAW,kBAAMT,EAAS,oBAAqBsoC,EAAO,GAAE,KAE1Dx3B,EAAO,YAAaw3B,EACtB,EACAE,YAAW,WAAcF,IACvBx3B,EADmB,EAANA,QACN,cAAew3B,EACxB,EACAM,SAAQ,cAAkD,IAA9Cn4B,EAAS,EAATA,UAAWK,EAAM,EAANA,OAAgBw3B,GAAF,EAAF7qC,GAAU,EAAN6qC,QAAQO,EAAO,EAAPA,QAC7C,OAAOp4B,EAAUyV,IAAIC,kBAAkB2iB,KAAK,CAAER,OAAAA,EAAQO,QAAAA,IAAWzrC,MAAK,SAAAwoB,GAEpE,OADA9U,EAAO,iBAAkB8U,GAClBA,CACT,GACF,ICxCJ,GAxBmB,CACjB3lB,MAAO,CACL24B,OAAQ,KACRmQ,gBAAgB,GAElB75B,UAAW,CACT85B,oBAAmB,SAAE/oC,EAAO24B,GAC1B34B,EAAM24B,OAASA,EACf34B,EAAM8oC,gBAAiB,CACzB,EACAE,qBAAoB,SAAEhpC,GACpBA,EAAM8oC,gBAAiB,CACzB,GAEFx4B,QAAS,CACPy4B,oBAAmB,WAAcpQ,IAC/B9nB,EAD2B,EAANA,QACd,sBAAuB8nB,EAChC,EACAqQ,qBAAoB,aAClBn4B,EAD4B,EAANA,QACf,uBACT,ICIJ,GAxBmB,CACjB7Q,MAAO,CACL24B,OAAQ,KACRmQ,gBAAgB,GAElB75B,UAAW,CACTg6B,oBAAmB,SAAEjpC,EAAO24B,GAC1B34B,EAAM24B,OAASA,EACf34B,EAAM8oC,gBAAiB,CACzB,EACAI,qBAAoB,SAAElpC,GACpBA,EAAM8oC,gBAAiB,CACzB,GAEFx4B,QAAS,CACP24B,oBAAmB,WAActQ,IAC/B9nB,EAD2B,EAANA,QACd,sBAAuB8nB,EAChC,EACAuQ,qBAAoB,aAClBr4B,EAD4B,EAANA,QACf,uBACT,ICIJ,GAxBsB,CACpB7Q,MAAO,CACL24B,OAAQ,CAAC,EACTmQ,gBAAgB,GAElB75B,UAAW,CACTk6B,uBAAsB,SAAEnpC,EAAO24B,GAC7B34B,EAAM24B,OAASA,EACf34B,EAAM8oC,gBAAiB,CACzB,EACAM,wBAAuB,SAAEppC,GACvBA,EAAM8oC,gBAAiB,CACzB,GAEFx4B,QAAS,CACP64B,uBAAsB,WAAcxQ,IAClC9nB,EAD8B,EAANA,QACjB,yBAA0B8nB,EACnC,EACAyQ,wBAAuB,aACrBv4B,EAD+B,EAANA,QAClB,0BACT,I,2mCClBJ,IAoNMw4B,GAAc,CAClBxoB,IAlIU,SAAC4f,EAAS,GAAkD,IAAtC6I,EAAW,EAArBv7B,SAAQ,IAAew7B,YAAAA,OAAW,IAAG,GAAI,EAC/D,GAAK9I,EACL,IADwB,iBAEtB,IAAM1V,EAAUue,EAAYzmC,GAG5B,GAAIkoB,EAAQye,UAAY/I,EAAQpE,OAAQ,iBAExC,GAAItR,EAAQ0e,OAAQ,CAClB,IAAMC,EAAcjJ,EAAQkJ,QAAQ5e,EAAQ0e,QAC5C,GAAIC,EAUoC,OAPlCjJ,EAAQkJ,QAAQ5e,EAAQvtB,aACnBijC,EAAQkJ,QAAQ5e,EAAQvtB,IAC/BijC,EAAQ1yB,SAAW0yB,EAAQ1yB,SAASnP,QAAO,SAAA4lC,GAAG,OAAIA,EAAIhnC,KAAOutB,EAAQvtB,EAAE,KAEzEG,OAAO2c,OAAOovB,EAAa3e,EAAS,CAAE3b,OAAO,WACtCs6B,EAAYD,OACnBhJ,EAAQkJ,QAAQD,EAAYlsC,IAAMksC,SAC3BjJ,EAAQkJ,QAAQ5e,EAAQ0e,QAAO,UAI1C,GAEKhJ,EAAQ/jB,QAAWqO,EAAQ6e,SAAW7e,EAAQvtB,GAAKijC,EAAQ/jB,SAC9D+jB,EAAQ/jB,MAAQqO,EAAQvtB,MAGrBijC,EAAQhkB,OAASsO,EAAQvtB,GAAKijC,EAAQhkB,QACrC8sB,IACF9I,EAAQhkB,MAAQsO,EAAQvtB,IAIvBijC,EAAQkJ,QAAQ5e,EAAQvtB,KAWV,SAACijC,EAAS1V,GAC/B,GAAKA,EAAQ8e,gBACb,OAAOpJ,EAAQqJ,oBAAoB/e,EAAQ8e,gBAC7C,CAdyCE,CAAetJ,EAAS1V,KACvD0V,EAAQuJ,kBAAoBjf,EAAQvtB,IACtCijC,EAAQwJ,kBAEVxJ,EAAQkJ,QAAQ5e,EAAQvtB,IAAMutB,EAC9B0V,EAAQ1yB,SAAS7K,KAAKu9B,EAAQkJ,QAAQ5e,EAAQvtB,KAC9CijC,EAAQqJ,oBAAoB/e,EAAQ8e,kBAAmB,EAE3D,EA1CShnC,EAAI,EAAGA,EAAIymC,EAAYpqC,OAAQ2D,IAAK,CAAF,+CA2C7C,EAsFEqnC,MAtNY,SAAC7N,GACb,MAAO,CACLsN,QAAS,CAAC,EACVG,oBAAqB,CAAC,EACtB/7B,SAAU,GACVk8B,gBAAiB,EACjBD,kBAAmB,IACnB3N,OAAAA,EACA3f,WAAOtU,EACPqU,WAAOrU,EAEX,EA4ME+hC,QAzEc,SAAC1J,GACf,IAAKA,EAAW,MAAO,GAEvB,IAII2J,EAJE3oC,EAAS,GACTsM,EAAW,KAAU0yB,EAAQ1yB,SAAU,CAAC,UAAW,MAAO,CAAC,MAAO,QAClEs8B,EAAet8B,EAAS,GAC1Bu8B,EAAkBv8B,EAASA,EAAS7O,OAAS,GAGjD,GAAImrC,EAAc,CAChB,IAAME,EAAO,IAAIjd,KAAK+c,EAAa9I,YACnCgJ,EAAKC,SAAS,EAAG,EAAG,EAAG,GACvB/oC,EAAOyB,KAAK,CACVK,KAAM,OACNgnC,KAAAA,EACA/sC,GAAI+sC,EAAKE,UAAUC,YAEvB,CAIA,IAFA,IAAIC,GAAY,EAEP9nC,EAAI,EAAGA,EAAIkL,EAAS7O,OAAQ2D,IAAK,CACxC,IAAMkoB,EAAUhd,EAASlL,GACnB+nC,EAAc78B,EAASlL,EAAI,GAE3B0nC,EAAO,IAAIjd,KAAKvC,EAAQwW,YAC9BgJ,EAAKC,SAAS,EAAG,EAAG,EAAG,GAGnBF,GAAmBA,EAAgBC,KAAOA,IAC5C9oC,EAAOyB,KAAK,CACVK,KAAM,OACNgnC,KAAAA,EACA/sC,GAAI+sC,EAAKE,UAAUC,aAGrBJ,EAAgBO,QAAS,EACzBT,OAAwBhiC,EACxBuiC,GAAY,GAGd,IAAMG,EAAS,CACbvnC,KAAM,UACNzF,KAAMitB,EACNwf,KAAAA,EACA/sC,GAAIutB,EAAQvtB,GACZutC,eAAgBX,IAIbQ,GAAeA,EAAY7Q,cAAgBhP,EAAQgP,aACtD+Q,EAAOD,QAAS,EAChBT,OAAwBhiC,KAIrBkiC,GAAmBA,EAAgBxsC,MAAQwsC,EAAgBxsC,KAAKi8B,cAAgBhP,EAAQgP,YAAc4Q,KACzGP,EAAwB,OACxBU,EAAOE,QAAS,EAChBF,EAAOC,eAAiBX,GAG1B3oC,EAAOyB,KAAK4nC,GACZR,EAAkBQ,EAClBH,GAAY,CACd,CAEA,OAAOlpC,CACT,EAMEwpC,cAxLoB,SAACxK,EAASyK,GAC9B,GAAKzK,EAAL,CAIA,GAHAA,EAAQ1yB,SAAW0yB,EAAQ1yB,SAASnP,QAAO,SAAAusC,GAAC,OAAIA,EAAE3tC,KAAO0tC,CAAS,WAC3DzK,EAAQkJ,QAAQuB,GAEnBzK,EAAQhkB,QAAUyuB,EAAW,CAC/B,IAAMvR,EAAc,IAAQ8G,EAAQ1yB,SAAU,MAC9C0yB,EAAQhkB,MAAQkd,EAAYn8B,EAC9B,CAEA,GAAIijC,EAAQ/jB,QAAUwuB,EAAW,CAC/B,IAAMb,EAAe,IAAQ5J,EAAQ1yB,SAAU,MAC/C0yB,EAAQ/jB,MAAQ2tB,EAAa7sC,EAC/B,CAZuB,CAazB,EA2KE4tC,kBAzKwB,SAAC3K,GACzB,IAAM4K,EAAW5K,EAAQ1yB,SAAS7O,OAC5BosC,EAAWD,EAAW,GAC5B,KAAIA,GAAY,IAAhB,CAEA5K,EAAQ1yB,SAAW,KAAS0yB,EAAQ1yB,SAAU,CAAC,OAC/C0yB,EAAQ/jB,MAAQ+jB,EAAQ1yB,SAASu9B,GAAU9tC,GAAE,IACP,EADO,KACvBijC,EAAQ1yB,UAAQ,IAAtC,IAAK,EAAL,qBAAwC,KAA7Bgd,EAAO,QACZA,EAAQvtB,GAAKijC,EAAQ/jB,eAChB+jB,EAAQkJ,QAAQ5e,EAAQvtB,WACxBijC,EAAQqJ,oBAAoB/e,EAAQ8e,iBAE/C,CAAC,+BACDpJ,EAAQ1yB,SAAW0yB,EAAQ1yB,SAAS/M,MAAMsqC,EAAUD,EAV1B,CAW5B,EA4JEE,qBAnF2B,SAAC9K,GACvBA,IACLA,EAAQwJ,gBAAkB,EAC1BxJ,EAAQuJ,kBAAoBvJ,EAAQhkB,MACtC,EAgFE+uB,MA9MY,SAAC/K,GACb,IAEsC,EAFhCgL,EAAmB,GAAE,KAELhL,EAAQ1yB,UAAQ,IAAtC,IAAK,EAAL,qBAAwC,KAA7Bgd,EAAO,QACZA,EAAQ3b,MACVq8B,EAAiBvoC,KAAK6nB,EAAQvtB,YAEvBijC,EAAQkJ,QAAQ5e,EAAQvtB,WACxBijC,EAAQqJ,oBAAoB/e,EAAQ8e,iBAE/C,CAAC,+BAEDpJ,EAAQ1yB,SAAW0yB,EAAQ1yB,SAASnP,QAAO,SAAAusC,GAAC,OAAIM,EAAiB9qC,SAASwqC,EAAE3tC,GAAG,IAC/EijC,EAAQwJ,gBAAkB,EAC1BxJ,EAAQuJ,kBAAoB,IAC5BvJ,EAAQ/jB,WAAQtU,EAChBq4B,EAAQhkB,WAAQrU,CAClB,EA8LEsjC,mBA5JyB,SAACjL,EAASgJ,EAAQkC,GAC3C,GAAKlL,EAAL,CACA,IAAMiJ,EAAcjJ,EAAQkJ,QAAQF,GACpC,GAAIC,IACFA,EAAYt6B,OAAQ,EACpBs6B,EAAYE,SAAU,GACjB+B,GAAS,CAEZ,IAAMC,EAAuB,KAAUnL,EAAQ1yB,SAAU,CAAC,UAAW,MAAO,CAAC,MAAO,SAAS,GAC7F,GAAI69B,EAAsB,CACxB,IAAMC,EAAQnC,EAAYlsC,GAC1BksC,EAAYlsC,GAAK,GAAH,OAAMouC,EAAqBpuC,GAAE,aAAI,IAAI8vB,MAAOmd,WAC1DhK,EAAQkJ,QAAQD,EAAYlsC,IAAMksC,SAC3BjJ,EAAQkJ,QAAQkC,EACzB,CACF,CAdqB,CAgBzB,GA8IA,Y,ylBC1NA,IAKMxuB,GAAe,CACnByuB,SAN2B,CAC3BhuC,KAAM,GACNsf,QAAS,CAAC,GAKV2uB,gBAAiB,KACjBC,aAAaC,EAAAA,GAAAA,IAAS,CAAC,GACvBC,2BAA2BD,EAAAA,GAAAA,IAAS,CAAC,GACrCjR,aAAS5yB,EACTyxB,cAAe,KACfsS,kBAAmB,MAGfC,GAAc,SAACpsC,EAAOxC,GAC1B,OAAO,IAAKwC,EAAM8rC,SAAShuC,KAAM,CAAEN,GAAAA,GACrC,EAUMo8B,GAAQ,CACZ55B,MAAO,MAAKqd,IACZhF,QAAS,CACPg0B,YAAa,SAAArsC,GAAK,OAAIA,EAAMgsC,YAAYhsC,EAAM65B,cAAc,EAC5DyS,0BAA2B,SAAAtsC,GAAK,OAAIA,EAAMksC,0BAA0BlsC,EAAM65B,cAAc,EACxF0S,4BAA6B,SAAAvsC,GAAK,OAAI,SAAAwsC,GAAW,OAAI,IAAKxsC,EAAMgsC,aAAa,SAAAS,GAAC,OAAIA,EAAExS,QAAQz8B,KAAOgvC,CAAW,GAAC,GAC/GE,eAdmB,SAAC1sC,GACtB,OAAO,KAAQA,EAAM8rC,SAAShuC,KAAM,CAAC,cAAe,CAAC,QACvD,EAaI6uC,gBAXoB,SAAC3sC,GACvB,OAAO,KAAMA,EAAM8rC,SAAShuC,KAAM,SACpC,GAWEwS,QAAS,CAEPs8B,mBAAkB,YAAwB,IAApB7sC,EAAQ,EAARA,SAAU8Q,EAAM,EAANA,OACxBmqB,EAAU,WAAH,OAASj7B,EAAS,aAAc,CAAEy5B,QAAQ,GAAO,EAC9DwB,IACAnqB,EAAO,qBAAsB,CAC3BmqB,QAAS,kBAAM9P,EAAAA,GAAAA,GAAgB8P,EAAS,IAAK,GAEjD,EACA6R,kBAAiB,aACfh8B,EADyB,EAANA,QACZ,qBAAsB,CAAEmqB,aAAS5yB,GAC1C,EACA0kC,WAAU,YAAgD,IAA5C/sC,EAAQ,EAARA,SAAUyQ,EAAS,EAATA,UACtB,OADuC,EAANK,OAC1BL,EAAUyV,IAAIC,kBAAkB0T,QACpCz8B,MAAK,YAAe,IAAZy8B,EAAK,EAALA,MAEP,OADA75B,EAAS,cAAe,CAAE65B,MAAAA,IACnBA,CACT,GACJ,EACAmT,YAAW,SAAE5uC,EAAO,GAAW,IAATy7B,EAAK,EAALA,OAKpB/oB,EAJ0C1S,EAAlC0S,QAID,cAAe,CAAE9Q,SAJkB5B,EAA1B4B,SAIkB65B,MAAAA,EAAOzoB,YAJChT,EAAhBgT,YAI4B67B,0BAHpB,SAACtT,GACjCD,GAA0Bt7B,EAAOu7B,EACnC,GAEF,EACAuT,WAAU,eACRp8B,EADkB,EAANA,QACL,aAAc,CAAE6oB,KADK,EAAJA,MAE1B,EAGAwT,yBAAwB,cAAU,EAANr8B,QAC1B9Q,EAD0C,EAARA,UACzB,wBAAyB,CAAEi7B,QADmB,EAAPA,SAElD,EACAmS,sBAAqB,cAAa,EAAT38B,WACvBK,EADwC,EAANA,QAC3B,wBAAyB,CAAEmqB,QADmB,EAAPA,SAEhD,EACAoS,cAAa,cAAa,EAAT58B,UAAyC,IAA9BK,EAAM,EAANA,OAAQ9Q,EAAQ,EAARA,SAAc25B,EAAI,EAAJA,KAChD7oB,EAAO,gBAAiB,CAAE9Q,SAAAA,EAAU25B,MAAM2T,EAAAA,GAAAA,IAAU3T,KACpD35B,EAAS,cAAe,CAAC25B,EAAKO,SAChC,EACAqT,gBAAe,WAAc79B,GAAO,IAAjBoB,EAAM,EAANA,OACjBA,EAAO,kBAAmB,IAAEA,OAAAA,GAAWpB,GACzC,EACA89B,yBAAwB,WAAc99B,IACpCoB,EADgC,EAANA,QACnB,2BAA4BpB,EACrC,EACA+9B,iBAAgB,WAAmC/9B,GAAtB,EAATe,UAAsC,IAA3BK,EAAM,EAANA,OAAgB,EAAR9Q,SACrC8Q,EAAO,mBAAoB,CAAEwrB,YAAQj0B,IACrCyI,EAAO,wBAAyB,CAAEmqB,aAAS5yB,GAC7C,EACAqlC,SAAQ,cAAuD,IAAnDj9B,EAAS,EAATA,UAAWK,EAAM,EAANA,OAAQ9Q,EAAQ,EAARA,SAAcvC,EAAE,EAAFA,GAAIkwC,EAAU,EAAVA,WACzCC,EAAen9B,EAAUopB,MAAMuS,oBAAsBuB,EAE3D3tC,EAAS,4BACT8Q,EAAO,WAAY,CAAErT,GAAAA,EAAIkwC,WAAAA,IAErBC,GACFn9B,EAAUyV,IAAIC,kBAAkBunB,SAAS,CAAEjwC,GAAAA,EAAIkwC,WAAAA,GAEnD,EACAE,kBAAiB,WAAyBn+B,GAAO,IAA5Be,EAAS,EAATA,UAAWK,EAAM,EAANA,OAC9BL,EAAUyV,IAAIC,kBAAkB0nB,kBAAkBn+B,GAClDoB,EAAO,oBAAqB,IAAEA,OAAAA,GAAWpB,GAC3C,EACAo+B,WAAU,YAAwB,IAApBh9B,EAAM,EAANA,QACZ9Q,EAD4B,EAARA,UACX,oBACT8Q,EAAO,aAAc,CAAEA,OAAAA,GACzB,EACAi9B,iBAAgB,YAAa,EAATt9B,UAA4C,IAAjCK,EAAM,EAANA,OAAgB,EAAR9Q,SAAqB,EAAXoR,YAC/CN,EAAO,mBAAoB,CAAEA,OAAAA,GAC/B,EACA66B,mBAAkB,WAAcj8B,GAAO,IAAjBoB,EAAM,EAANA,OACpBA,EAAO,qBAAsB,IAAEA,OAAAA,GAAWpB,GAC5C,EACA27B,kBAAiB,WAAc/O,IAC7BxrB,EADyB,EAANA,QACZ,oBAAqBwrB,EAC9B,GAEFptB,UAAW,CACT8+B,mBAAkB,SAAE/tC,EAAO,GAAQ,EAAN6Q,OAAmB,IAAXmqB,EAAO,EAAPA,QAC7BgT,EAAchuC,EAAM+rC,gBACtBiC,GACFA,EAAY9S,OAEdl7B,EAAM+rC,gBAAkB/Q,GAAWA,GACrC,EACAmS,sBAAqB,SAAEntC,EAAO,GAAa,IAAXg7B,EAAO,EAAPA,QACxBgT,EAAchuC,EAAMg7B,QACtBgT,GACFA,EAAY9S,OAEdl7B,EAAMg7B,QAAUA,GAAWA,GAC7B,EACAoS,cAAa,SAAEptC,EAAO,GAAW,EAATiuC,UAAmB,IAARvU,EAAI,EAAJA,KACjC15B,EAAM65B,cAAgBH,EAAKl8B,GAC3BwC,EAAMgsC,YAAYtS,EAAKl8B,IAAMk8B,EAExB15B,EAAMksC,0BAA0BxS,EAAKl8B,MACxCwC,EAAMksC,0BAA0BxS,EAAKl8B,IAAM0wC,GAAAA,MAAkBxU,EAAKl8B,IAEtE,EACA2wC,iBAAgB,SAAEnuC,EAAO,GAAY,IAAVq8B,EAAM,EAANA,OACzBr8B,EAAM65B,cAAgBwC,CACxB,EACA0Q,YAAW,SAAE/sC,EAAO,GAAsC,IAApC45B,EAAK,EAALA,MAAOoT,EAAyB,EAAzBA,0BAC3BpT,EAAM/gB,SAAQ,SAACu1B,GACb,IAAM1U,EAAO0S,GAAYpsC,EAAOouC,EAAY5wC,IAE5C,GAAIk8B,EAAM,CACR,IAAMiU,GAAgBjU,EAAKC,aAAeD,EAAKC,YAAYn8B,OAAS4wC,EAAYzU,aAAeyU,EAAYzU,YAAYn8B,IACvHk8B,EAAKC,YAAcyU,EAAYzU,YAC/BD,EAAK2U,OAASD,EAAYC,OAC1B3U,EAAK4U,WAAaF,EAAYE,WAC1BX,GAAgBjU,EAAK2U,QACvBrB,EAA0BoB,EAE9B,MACEpuC,EAAM8rC,SAAShuC,KAAKoF,KAAKkrC,GACzBpuC,EAAM8rC,SAAS1uB,QAAQgxB,EAAY5wC,IAAM4wC,CAE7C,GACF,EACAnB,WAAU,SAAEjtC,EAAO,GAAW,EAATiuC,UAA8C,IAA7BG,EAAW,EAAjB1U,KACxBA,GADuD,EAAZ6U,aACpCnC,GAAYpsC,EAAOouC,EAAY5wC,KACxCk8B,IACFA,EAAKC,YAAcyU,EAAYzU,YAC/BD,EAAK2U,OAASD,EAAYC,OAC1B3U,EAAK4U,WAAaF,EAAYE,YAE3B5U,GAAQ15B,EAAM8rC,SAAShuC,KAAK8L,QAAQwkC,GACzCpuC,EAAM8rC,SAAS1uB,QAAQgxB,EAAY5wC,IAAM4wC,CAC3C,EACAI,WAAU,SAAExuC,EAAO,GAAW,EAATiuC,UAA+B,IAApBzwC,EAAE,EAAFA,GAAgB,EAAZ+wC,aAClCvuC,EAAM45B,MAAM97B,KAAOkC,EAAM45B,MAAM97B,KAAKc,QAAO,SAAA6vC,GAAY,OACrDA,EAAaC,YAAYlxC,KAAOA,CAAE,IAEpCwC,EAAM45B,MAAMxc,QAAU,IAAOpd,EAAM45B,MAAMxc,SAAS,SAAAqxB,GAAY,OAAIA,EAAaC,YAAYlxC,KAAOA,CAAE,GACtG,EACAqwC,WAAU,SAAE7tC,EAAO,GAAY,IAAV6Q,EAAM,EAANA,OAInB,IAAK,IAAMwrB,KAHXr8B,EAAM8rC,SAhLiB,CAC3BhuC,KAAM,GACNsf,QAAS,CAAC,GA+KNpd,EAAM65B,cAAgB,KACtBhpB,EAAO,qBAAsB,CAAEmqB,aAAS5yB,IACnBpI,EAAMgsC,YACzBkC,GAAAA,MAAkBluC,EAAMksC,0BAA0B7P,WAC3Cr8B,EAAMgsC,YAAY3P,UAClBr8B,EAAMksC,0BAA0B7P,EAE3C,EACAsS,gBAAe,SAAE3uC,EAAO,GAAW,IAATyP,EAAK,EAALA,MACxBzP,EAAM45B,MAAMhd,QAAUnN,CACxB,EACA69B,gBAAe,SAAEttC,EAAO,GAAmC,IAAjCq8B,EAAM,EAANA,OAAQtuB,EAAQ,EAARA,SAAUw7B,EAAW,EAAXA,YACpCqF,EAAqB5uC,EAAMksC,0BAA0B7P,GACvDuS,GACFV,GAAAA,IAAgBU,EAAoB,CAAE7gC,SAAUA,EAASnR,IAAIiyC,GAAAA,IAAmBtF,YAAAA,GAEpF,EACAqE,kBAAiB,SAAE5tC,EAAO,GAAuB,IAArBq8B,EAAM,EAANA,OAAQ6O,EAAS,EAATA,UAC5B0D,EAAqB5uC,EAAMksC,0BAA0B7P,GACvDuS,GACFV,GAAAA,cAA0BU,EAAoB1D,EAElD,EACAqC,yBAAwB,SAAEvtC,EAAO8uC,GAC/B,IAAMF,EAAqB5uC,EAAMksC,0BAA0BlsC,EAAM65B,eACjEqU,GAAAA,qBAAiCU,EACnC,EAEAd,iBAAgB,SAAE9tC,GAChB,IAAM65B,EAAgB75B,EAAM65B,cAC5B,IAAK,IAAMwC,KAAUr8B,EAAMgsC,YACrBnS,IAAkBwC,IACpB6R,GAAAA,MAAkBluC,EAAMksC,0BAA0B7P,WAC3Cr8B,EAAMgsC,YAAY3P,UAClBr8B,EAAMksC,0BAA0B7P,GAG7C,EACAoR,SAAQ,SAAEztC,EAAO,GAAoB,IAAlBxC,EAAE,EAAFA,GAAIkwC,EAAU,EAAVA,WACrB1tC,EAAMmsC,kBAAoBuB,EAC1B,IAAMhU,EAAO0S,GAAYpsC,EAAOxC,GAC5Bk8B,IACFA,EAAK2U,OAAS,EAElB,EACA3C,mBAAkB,SAAE1rC,EAAO,GAA6B,IAA3Bq8B,EAAM,EAANA,OAAQoN,EAAM,EAANA,OAAQkC,EAAO,EAAPA,QACrCiD,EAAqB5uC,EAAMksC,0BAA0B7P,GAC3D6R,GAAAA,mBAA+BU,EAAoBnF,EAAQkC,EAC7D,EACAP,kBAAiB,SAAEprC,EAAOq8B,GACxB6R,GAAAA,kBAA8BluC,EAAMksC,0BAA0B7P,GAChE,IAIJ,YCzGA,SA9FsB,CACpBr8B,MAvC0B,CAC1B+uC,cAAe,GACfC,uBAAuB,EACvBC,6BAAyB7mC,GAqCzB6G,UAlCuB,CACvBigC,iBAAgB,SAAElvC,EAAO+uC,GACvB/uC,EAAM+uC,cAAgBA,CACxB,EACAI,oBAAmB,SAAEnvC,EAAO,GAAc,IAAZxC,EAAE,EAAFA,GAAI4xC,EAAI,EAAJA,KAC1BloC,EAAQlH,EAAM+uC,cAAc1kC,WAAU,SAAAzK,GAAC,OAAIA,EAAEpC,KAAOA,CAAE,IAExD0J,EAAQ,IAIZlH,EAAM+uC,cAAc7nC,GAAOkoC,KAAOA,EACpC,EACAC,2BAA0B,SAAErvC,EAAOsvC,GACjCtvC,EAAMivC,wBAA0BK,CAClC,EACAC,yBAAwB,SAAEvvC,EAAOgvC,GAC/BhvC,EAAMgvC,sBAAwBA,CAChC,GAiBA32B,QAdqB,CACrBm3B,wBAAuB,SAAExvC,EAAOyvC,EAAUj/B,GACxC,OAAKA,EAAU3P,MAAM2Q,YAINxR,EAAM+uC,cAAcnwC,QAAO,SAAA8wC,GAAY,QAAMA,EAAaC,UAAYD,EAAaN,KAAK,IACzFlwC,OAJL,CAKX,GAOAoR,QAAS,CACPs/B,mBAAkB,SAAEzxC,GAClB,IAAKA,EAAM6B,MAAMgvC,sBACf,OAAO/xC,QAAQC,UAGjB,IAAMsU,EAAcrT,EAAMqS,UAAU3P,MAAM2Q,YACpCq+B,EAAUr+B,GAAeA,EAAYs+B,WAAWnvC,SAAS,sCAEzDovC,EAAgB,mCAAG,6FAClBF,EAAS,CAAF,wCACH1xC,EAAMqS,UAAUyV,IAAIC,kBAAkB0pB,sBAAoB,uBAGjDzxC,EAAMqS,UAAUyV,IAAIC,kBAAkB8pB,0BAAyB,OAAxE,OAAH/1B,EAAM,EAAH,cACa9b,EAAMqS,UAAUyV,IAAIC,kBAAkB0pB,qBAAoB,OAc9E,OAdIK,EAAU,EAAH,KACPC,EAAgBD,EAAQz9B,QAAO,SAAC5S,EAAG6sC,GAEvC,OADA7sC,EAAE6sC,EAAEjvC,IAAMivC,EACH7sC,CACT,GAAG,CAAC,GACEuwC,EAAmB,SAAAT,GAAY,OAAIQ,EAAcR,EAAalyC,GAAG,EAEvEyc,EAAIpB,SAAQ,SAAA62B,GACV,IAAMU,EAAsBD,EAAiBT,GACxCU,EAGHV,EAAaN,KAAOgB,EAAoBhB,KAFxCM,EAAaC,UAAW,CAI5B,IAAE,kBAEK11B,GAAG,4CACX,kBAvBqB,mCAyBtB,OAAO81B,IACJ5yC,MAAK,SAAA4xC,GACJ5wC,EAAM0S,OAAO,mBAAoBk+B,EACnC,IAAE,OACK,SAAA3/B,GAGL,IAAIA,GAA8B,MAArBA,EAAMihC,WAGjB,MAAMjhC,EAFNjR,EAAM0S,OAAO,4BAA4B,EAI7C,GACJ,EACAy/B,uBAAsB,SAAEnyC,EAAOX,GAC7B,OAAOW,EAAMqS,UAAUyV,IAAIC,kBAAkBqqB,oBAAoB,CAAE/yC,GAAAA,IAChEL,MAAK,WACJgB,EAAM0S,OAAO,sBAAuB,CAAErT,GAAAA,EAAI4xC,MAAM,GAClD,GACJ,EACAoB,2BAA0B,SAAEryC,GAC1B,IAAIA,EAAM6B,MAAMivC,wBAAhB,CAIA,IAAMwB,EAAWC,aAAY,kBAAMvyC,EAAM4B,SAAS,qBAAqB,GAvGtC,KA0GjC,OAFA5B,EAAM0S,OAAO,6BAA8B4/B,GAEpCtyC,EAAM4B,SAAS,qBALtB,CAMF,EACA4wC,0BAAyB,SAAExyC,GACzB,IAAMsyC,EAAWtyC,EAAM6B,MAAMivC,wBAC7B9wC,EAAM0S,OAAO,kCAA8BzI,GAC3CwoC,cAAcH,EAChB,EACAI,iBAAgB,SAAE1yC,EAAO,GAAuC,IAArCsF,EAAO,EAAPA,QAASqtC,EAAQ,EAARA,SAAUC,EAAM,EAANA,OAAQC,EAAM,EAANA,OACpD,OAAO7yC,EAAMqS,UAAUyV,IAAIC,kBAAkB2qB,iBAAiB,CAAEptC,QAAAA,EAASqtC,SAAAA,EAAUC,OAAAA,EAAQC,OAAAA,IACxF7zC,MAAK,WACJ,OAAOgB,EAAM4B,SAAS,qBACxB,GACJ,EACAkxC,iBAAgB,SAAE9yC,EAAO,GAA2C,IAAzCX,EAAE,EAAFA,GAAIiG,EAAO,EAAPA,QAASqtC,EAAQ,EAARA,SAAUC,EAAM,EAANA,OAAQC,EAAM,EAANA,OACxD,OAAO7yC,EAAMqS,UAAUyV,IAAIC,kBAAkB+qB,iBAAiB,CAAEzzC,GAAAA,EAAIiG,QAAAA,EAASqtC,SAAAA,EAAUC,OAAAA,EAAQC,OAAAA,IAC5F7zC,MAAK,WACJ,OAAOgB,EAAM4B,SAAS,qBACxB,GACJ,EACAmxC,mBAAkB,SAAE/yC,EAAOX,GACzB,OAAOW,EAAMqS,UAAUyV,IAAIC,kBAAkBgrB,mBAAmB,CAAE1zC,GAAAA,IAC/DL,MAAK,WACJ,OAAOgB,EAAM4B,SAAS,qBACxB,GACJ,I,mDC9HAoxC,IAAS,EAEPC,GAAiB,SAACpxC,EAAOqxC,GAAK,OACjB,IAAjBA,EAAMnyC,OACFc,EACAqxC,EAAM7+B,QAAO,SAAC8+B,EAAUvR,GAExB,OADA,KAAIuR,EAAUvR,EAAM,KAAI//B,EAAO+/B,IACxBuR,CACT,GAAG,CAAC,EAAE,EAGJC,GAAyB,CAC7B,0BACA,mBACA,iBACA,uBACA,eACA,YACA,gBACA,WACA,cAGIC,G,OACGC,GAGM,SAASC,KAkBhB,6DAAJ,CAAC,EAAC,IAjBJxmC,IAAAA,OAAG,IAAG,YAAS,MACfmmC,MAAAA,OAAK,IAAG,KAAE,MACVtV,SAAAA,OAAQ,IAAG,WAAC7wB,EAAKu1B,GAEf,OADcA,EAAQkR,QAAQzmC,EAEhC,EAAC,MACD0mC,SAAAA,OAAQ,IAAG,WAAC1mC,EAAKlL,EAAOygC,GACtB,OAAK0Q,GAII1Q,EAAQoR,QAAQ3mC,EAAKlL,IAH5B6Z,QAAQ4H,IAAI,yCACLxkB,QAAQC,UAInB,EAAC,MACD40C,QAAAA,OAAO,IAAG,EAAAV,GAAc,MACxB3Q,QAAAA,OAAO,IAAG,EAAA+Q,GAAc,MACxBO,WAAAA,OAAU,IAAG,WAAA5zC,GAAK,OAAI,SAAA6zC,GAAO,OAAI7zC,EAAMw4B,UAAUqb,EAAQ,KAEzD,OAAOjW,EAAS7wB,EAAKu1B,GAAStjC,MAAK,SAAC80C,GAClC,OAAO,SAAA9zC,GACL,IACE,GAAmB,OAAf8zC,GAA6C,YAAtB,QAAOA,GAAyB,CAEzD,IAAMC,EAAaD,EAAWpxC,OAAS,CAAC,EACxCqxC,EAAW5hB,YAAc,CAAC,EAC1B,IAAMzvB,EAAQqxC,EAAWrxC,OAAS,GAClC,IAAKA,GAAO,SAACC,GAAWoxC,EAAW5hB,YAAYxvB,EAAKtD,IAAMsD,CAAK,IAC/DmxC,EAAWpxC,MAAQqxC,EAEnB/zC,EAAMg0C,aACJC,KAAM,CAAC,EAAGj0C,EAAM6B,MAAOiyC,GAE3B,CACAd,IAAS,CAKX,CAJE,MAAO/zC,GACPyc,QAAQ4H,IAAI,uBACZ5H,QAAQzK,MAAMhS,GACd+zC,IAAS,CACX,CACAY,EAAW5zC,EAAX4zC,EAAkB,SAACM,EAAUryC,GAC3B,IACMuxC,GAAuB5wC,SAAS0xC,EAAS9uC,OAC3CquC,EAAS1mC,EAAK4mC,EAAQ,KAAU9xC,GAAQqxC,GAAQ5Q,GAC7CtjC,MAAK,SAAAgS,QACmB,IAAZA,IACa,cAAlBkjC,EAAS9uC,MAA0C,mBAAlB8uC,EAAS9uC,MAC5CpF,EAAM4B,SAAS,gBAAiB,CAAEoP,QAAAA,IAGxC,IAAG,SAAAC,GACqB,cAAlBijC,EAAS9uC,MAA0C,mBAAlB8uC,EAAS9uC,MAC5CpF,EAAM4B,SAAS,gBAAiB,CAAEqP,MAAAA,GAEtC,GAKN,CAHE,MAAOhS,GACPyc,QAAQ4H,IAAI,2BACZ5H,QAAQ4H,IAAIrkB,EACd,CACF,GACF,CACF,GACF,CC9FA,kBAAgBe,GACdA,EAAMw4B,WAAU,SAAC0b,EAAUryC,GACzB,IAAM+S,EAAiB/S,EAAM4Q,SAASmC,eAChCu/B,EAAsBtyC,EAAMsb,OAAOqc,qBACnCpoB,EAAwD,YAA3CvP,EAAK,UAAWwO,uBAC7B1N,EAAOd,EAAMa,MAAM2Q,YAEnB+gC,EAAmC,mBAAlBF,EAAS9uC,KAC1BivC,EAAoC,sBAAlBH,EAAS9uC,MAA0D,mBAA1B8uC,EAASI,QAAQlzC,KAC5EmzC,EAAmC,8BAAlBL,EAAS9uC,MAA6D,YAArB8uC,EAASI,QAC3EE,EAAyC,cAAlBN,EAAS9uC,MAAkD,yBAA1B8uC,EAASI,QAAQlzC,KACzEqzC,EAAyC,cAAlBP,EAAS9uC,MAAkD,2BAA1B8uC,EAASI,QAAQlzC,KAE/E,GAAIgzC,GAAkBC,GAAmBE,GAAkBC,GAAwBC,EAAsB,CACvG,GAAI9xC,GAAQiS,GAAkBxD,GAAc+iC,EAC1C,OAAOn0C,EAAM4B,SAAS,6BACjB,GAAI4yC,IAAyBL,EAClC,OAAOn0C,EAAM4B,SAAS,8BAE1B,CACF,GACD,E,kHChBGsE,EAAAA,GAAAA,GAGE,OAFA7G,GAAG,iBACH2F,MAAM,kB,aAaNkB,EAAAA,GAAAA,GAAwB,OAAnBlB,MAAM,YAAU,S,IAYjBkB,EAAAA,GAAAA,GAA2B,OAAtB7G,GAAG,kBAAgB,S,UAUxB2F,MAAM,kC,ICzCPA,MAAM,c,IAGT+H,IAAI,oBACJ/H,MAAM,iC,ICJLA,MAAM,6B,IAGJA,MAAM,iB,IAINA,MAAM,c,IAMAA,MAAM,c,IACF0vC,IAAI,Y,kCASR1vC,MAAM,c,IACF0vC,IAAI,Y,oBAUR1vC,MAAM,c,UASXA,MAAM,c,IAKHA,MAAM,c,IACJA,MAAM,gB,0BAwBfA,MAAM,c,IAEDA,MAAM,e,ykBCrEjBq6B,GAAAA,GAAAA,IACEC,GAAAA,KAoFF,SAjFkB,CAChB3/B,KAAM,iBAAO,CACXgD,KAAM,CAAC,EACPsO,OAAO,EACR,EACDrE,SAAU,OACR+nC,eAAc,WAAM,OAAOjvC,KAAK0hC,gBAAiB,EACjDwN,YAAW,WAAM,OAAOlvC,KAAK2hC,aAAc,IACxCh6B,EAAAA,EAAAA,IAAS,CACVmH,iBAAkB,SAAA3S,GAAK,OAAIA,EAAM4Q,SAAS+B,gBAAgB,EAC1D/B,SAAU,SAAA5Q,GAAK,OAAIA,EAAM4Q,QAAQ,EACjCugB,UAAW,SAAAnxB,GAAK,OAAIA,EAAMa,MAAMswB,SAAS,EACzCtD,MAAO,SAAA7tB,GAAK,OAAIA,EAAM6tB,KAAK,MAE1BmlB,EAAAA,EAAAA,IACD,WAAY,CAAC,mBAAoB,gBAAiB,iBAGtDrvC,QAAS,aACJsvC,EAAAA,EAAAA,IAAa,WAAY,CAAC,iBAC1BC,EAAAA,EAAAA,IAAW,CAAEplB,MAAO,oBAAmB,IAC1CqlB,OAAM,WACJtvC,KAAKkvC,YAAclvC,KAAKuvC,cAAgBvvC,KAAKwvC,gBAC/C,EACAD,YAAW,WACT,MAAmCvvC,KAAKgqB,MAClC/vB,EAAO,CACXkvB,SAFc,EAARA,SAGNC,aAH4B,EAAZA,aAIhBrc,SAAU/M,KAAK+M,SAASgC,OACxB/B,OAAQhN,KAAKyvC,OAAOziC,QAGtBkoB,GAAAA,eAAwBj7B,GACrBX,MAAK,SAACswB,GAAUsL,GAAAA,MAAe,SAAKtL,GAAQ3vB,GAAQ,GACzD,EACAu1C,eAAc,WAAI,WAEVv1C,EAAO,CACXkvB,SAFmBnpB,KAAKgqB,MAAlBb,SAGNa,MAAOhqB,KAAKgqB,MACZjd,SAAU/M,KAAK+M,SAASgC,OACxB/B,OAAQhN,KAAKyvC,OAAOziC,QAEtBhN,KAAKuL,OAAQ,EAEb2pB,GAAAA,eAAwBj7B,GAAMX,MAAK,SAACswB,GAClCsL,GAAAA,wBAAiC,SAE1BtL,GAAG,IACN7c,SAAU9S,EAAK8S,SACf2d,SAAU,EAAKztB,KAAKytB,SACpBC,SAAU,EAAK1tB,KAAK0tB,YAEtBrxB,MAAK,SAACsE,GACFA,EAAO2N,MACY,iBAAjB3N,EAAO2N,MACT,EAAK02B,WAAW,CAAEz3B,SAAU5M,IACG,4BAAtBA,EAAO8xC,WAChB,EAAKvvC,QAAQd,KAAK,CAAE3D,KAAM,iBAAkBo5B,OAAQ,CAAE6a,wBAAwB,MAE9E,EAAKpkC,MAAQ3N,EAAO2N,MACpB,EAAKqkC,wBAIT,EAAK3lB,MAAMrsB,GAAQtE,MAAK,WACtB,EAAK6G,QAAQd,KAAK,CAAE3D,KAAM,WAC5B,GACF,GACF,GACF,EACAm0C,WAAU,WAAM7vC,KAAKuL,OAAQ,CAAM,EACnCqkC,qBAAoB,WAClB,IAAME,EAAgB9vC,KAAKkI,MAAM4nC,cACjCA,EAAcC,QACdD,EAAcE,kBAAkB,EAAGF,EAAclkC,MAAMvQ,OACzD,K,gBCjFJ,MAEA,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,8FFNzDiF,EAAAA,GAAAA,IAwFM,MAxFNC,GAwFM,EArFJC,EAAAA,GAAAA,GAEM,MAFNyvC,IAEM,SADDvvC,EAAAA,GAAG,gBAAD,IAGPF,EAAAA,GAAAA,GA8DM,MA9DN0vC,GA8DM,EA7DJ1vC,EAAAA,GAAAA,GA4DO,QA3DLlB,MAAM,aACL6wC,SAAM,yCAAUzvC,EAAAA,QAAAA,EAAAA,OAAAA,MAAAA,EAAAA,UAAM,kB,CAEPA,EAAAA,iBAAc,YAA9BJ,EAAAA,GAAAA,IA2BW8vC,GAAAA,GAAAA,CAAA/oC,IAAAA,GAAA,EA1BT7G,EAAAA,GAAAA,GASM,MATN6vC,GASM,EARJ7vC,EAAAA,GAAAA,GAAwD,QAAxD8vC,IAAwD,SAA/B5vC,EAAAA,GAAG,mBAAD,cAC3BF,EAAAA,GAAAA,GAMC,SALC7G,GAAG,W,qDACM+G,EAAAA,KAAKgqB,SAAQ,IACrBjiB,SAAU/H,EAAAA,UACXpB,MAAM,eACLixC,YAAa7vC,EAAAA,GAAG,sB,mBAHRA,EAAAA,KAAKgqB,eAMlBlqB,EAAAA,GAAAA,GAUM,MAVNgwC,GAUM,EATJhwC,EAAAA,GAAAA,GAAwD,QAAxDiwC,IAAwD,SAA/B/vC,EAAAA,GAAG,mBAAD,cAC3BF,EAAAA,GAAAA,GAOC,SANC7G,GAAG,WACH+2C,IAAI,gB,qDACKhwC,EAAAA,KAAKiqB,SAAQ,IACrBliB,SAAU/H,EAAAA,UACXpB,MAAM,eACNI,KAAK,Y,mBAHIgB,EAAAA,KAAKiqB,eAMlBnqB,EAAAA,GAAAA,GAIM,MAJNmwC,GAIM,EAHJC,EAAAA,GAAAA,IAEcC,EAAAA,CAFAvT,GAAI,CAAA5hC,KAAAA,mBAAwB,C,mBACxC,iBAA0C,qBAAvCgF,EAAAA,GAAG,mCAAD,G,mCAMHA,EAAAA,cAAW,YADnBJ,EAAAA,GAAAA,IAKM,MALNwwC,GAKM,EADJtwC,EAAAA,GAAAA,GAAoC,mBAA9BE,EAAAA,GAAG,sBAAD,wBAGVF,EAAAA,GAAAA,GAmBM,MAnBNuwC,GAmBM,EAlBJvwC,EAAAA,GAAAA,GAiBM,MAjBNwwC,GAiBM,EAhBJxwC,EAAAA,GAAAA,GAQM,YANIE,EAAAA,mBAAgB,YADxBuwC,EAAAA,GAAAA,IAMcJ,EAAAA,C,MAJXvT,GAAI,CAAA5hC,KAAAA,gBACL4D,MAAM,Y,oBAEN,iBAA0B,qBAAvBoB,EAAAA,GAAG,mBAAD,G,+BAGTF,EAAAA,GAAAA,GAMS,UALNiI,SAAU/H,EAAAA,UACXhB,KAAK,SACLJ,MAAM,uB,SAEHoB,EAAAA,GAAG,gBAAD,iBAQPA,EAAAA,QAAK,YADbJ,EAAAA,GAAAA,IAgBM,MAhBN4wC,GAgBM,EAZJ1wC,EAAAA,GAAAA,GAWM,MAXN2wC,GAWM,qBAVDzwC,EAAAA,OAAQ,IACX,YAQS,UAPPpB,MAAM,kBACLS,QAAK,8BAAEW,EAAAA,YAAAA,EAAAA,WAAAA,MAAAA,EAAAA,UAAU,I,EAElBkwC,EAAAA,GAAAA,IAGEQ,EAAAA,CAFA9xC,MAAM,8BACNqJ,KAAK,kB,8BGnFVrJ,MAAM,6B,IAGJA,MAAM,iB,IAINA,MAAM,c,IAKFA,MAAM,c,IACF0vC,IAAI,Q,IAQR1vC,MAAM,c,IACJA,MAAM,gB,IASPkB,EAAAA,GAAAA,GAAI,mB,IAUJd,KAAK,SACLJ,MAAM,sB,UAWdA,MAAM,c,IAEDA,MAAM,eCxBX+xC,GAAM,CACVzmB,cAjCoB,SAAH,GAA6D,IAAvDzB,EAAQ,EAARA,SAAUC,EAAY,EAAZA,aAAcrc,EAAQ,EAARA,SAAU8d,EAAQ,EAARA,SAAUpxB,EAAI,EAAJA,KAC7D+F,EAAM,GAAH,OAAMuN,EAAQ,wBACjBsc,EAAO,IAAIjpB,OAAOkpB,SAQxB,OANAD,EAAKE,OAAO,YAAaJ,GACzBE,EAAKE,OAAO,gBAAiBH,GAC7BC,EAAKE,OAAO,YAAasB,GACzBxB,EAAKE,OAAO,OAAQ9vB,GACpB4vB,EAAKE,OAAO,iBAAkB,QAEvBnpB,OAAOkW,MAAM9W,EAAK,CACvBmqB,OAAQ,OACRhB,KAAMU,IACL/vB,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,GAC/B,EAoBEsU,mBAlByB,SAAH,GAA6D,IAAvD3B,EAAQ,EAARA,SAAUC,EAAY,EAAZA,aAAcrc,EAAQ,EAARA,SAAU8d,EAAQ,EAARA,SAAUpxB,EAAI,EAAJA,KAClE+F,EAAM,GAAH,OAAMuN,EAAQ,wBACjBsc,EAAO,IAAIjpB,OAAOkpB,SAQxB,OANAD,EAAKE,OAAO,YAAaJ,GACzBE,EAAKE,OAAO,gBAAiBH,GAC7BC,EAAKE,OAAO,YAAasB,GACzBxB,EAAKE,OAAO,OAAQ9vB,GACpB4vB,EAAKE,OAAO,iBAAkB,YAEvBnpB,OAAOkW,MAAM9W,EAAK,CACvBmqB,OAAQ,OACRhB,KAAMU,IACL/vB,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,GAC/B,GAOA,Y,ykBC9BAmjB,GAAAA,GAAAA,IACEC,GAAAA,KAGF,UACE3/B,KAAM,iBAAO,CACXR,KAAM,KACN8R,OAAO,EACR,EACDrE,SAAU,UACLioC,EAAAA,EAAAA,IAAW,CACZmC,aAAc,wBAEb3pC,EAAAA,EAAAA,IAAS,CACVoF,SAAU,WACVid,MAAO,WAGXlqB,QAAS,aACJsvC,EAAAA,EAAAA,IAAa,WAAY,CAAC,cAAe,eACzCC,EAAAA,EAAAA,IAAW,CAAEplB,MAAO,oBAAmB,IAC1C4lB,WAAU,WAAM7vC,KAAKuL,OAAQ,CAAM,EACnC+jC,OAAM,WAAI,WACR,EAAmCtvC,KAAKgqB,MAElC/vB,EAAO,CACXkvB,SAHc,EAARA,SAINC,aAJ4B,EAAZA,aAKhBrc,SAAU/M,KAAK+M,SAASgC,OACxB8b,SAAU7qB,KAAKsxC,aAAaC,UAC5B93C,KAAMuG,KAAKvG,MAGb+3C,GAAAA,mBAA0Bv3C,GAAMX,MAAK,SAACsE,GACpC,GAAIA,EAAO2N,MAGT,OAFA,EAAKA,MAAQ3N,EAAO2N,WACpB,EAAK9R,KAAO,MAId,EAAKwwB,MAAMrsB,GAAQtE,MAAK,WACtB,EAAK6G,QAAQd,KAAK,CAAE3D,KAAM,WAC5B,GACF,GACF,KC5CJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,mEHJzD4E,EAAAA,GAAAA,IAoEM,MApENC,GAoEM,EAjEJC,EAAAA,GAAAA,GAEM,MAFNyvC,IAEM,SADDvvC,EAAAA,GAAG,2BAAD,IAGPF,EAAAA,GAAAA,GA0CM,MA1CN0vC,GA0CM,EAzCJ1vC,EAAAA,GAAAA,GAwCO,QAvCLlB,MAAM,aACL6wC,SAAM,yCAAUzvC,EAAAA,QAAAA,EAAAA,OAAAA,MAAAA,EAAAA,UAAM,kB,EAEvBF,EAAAA,GAAAA,GAOM,MAPN6vC,GAOM,EANJ7vC,EAAAA,GAAAA,GAAyD,QAAzD8vC,IAAyD,SAApC5vC,EAAAA,GAAG,wBAAD,cACvBF,EAAAA,GAAAA,GAIC,SAHC7G,GAAG,O,qDACM+G,EAAAA,KAAI,IACbpB,MAAM,gB,kBADGoB,EAAAA,WAKbF,EAAAA,GAAAA,GA0BM,MA1BNixC,GA0BM,EAzBJjxC,EAAAA,GAAAA,GAwBM,MAxBNgwC,GAwBM,EAvBJhwC,EAAAA,GAAAA,GAgBM,aAfJA,EAAAA,GAAAA,GAMS,UALPlB,MAAM,wBACNI,KAAK,SACJK,QAAK,yCAAUW,EAAAA,aAAAA,EAAAA,YAAAA,MAAAA,EAAAA,UAAW,mB,SAExBA,EAAAA,GAAG,gCAAD,GAEP+vC,IACAjwC,EAAAA,GAAAA,GAMS,UALPlB,MAAM,wBACNI,KAAK,SACJK,QAAK,yCAAUW,EAAAA,UAAAA,EAAAA,SAAAA,MAAAA,EAAAA,UAAQ,mB,SAErBA,EAAAA,GAAG,mBAAD,MAGTF,EAAAA,GAAAA,GAKS,SALTkxC,IAKS,SADJhxC,EAAAA,GAAG,mBAAD,cAQPA,EAAAA,QAAK,YADbJ,EAAAA,GAAAA,IAgBM,MAhBNqwC,GAgBM,EAZJnwC,EAAAA,GAAAA,GAWM,MAXNswC,GAWM,qBAVDpwC,EAAAA,OAAQ,IACX,YAQS,UAPPpB,MAAM,kBACLS,QAAK,8BAAEW,EAAAA,YAAAA,EAAAA,WAAAA,MAAAA,EAAAA,UAAU,I,EAElBkwC,EAAAA,GAAAA,IAGEQ,EAAAA,CAFA9xC,MAAM,8BACNqJ,KAAK,kB,8BI/DVrJ,MAAM,6B,IAGJA,MAAM,iB,IAINA,MAAM,c,IAKFA,MAAM,c,IACF0vC,IAAI,Q,IAUR1vC,MAAM,c,IACJA,MAAM,gB,IASPkB,EAAAA,GAAAA,GAAI,mB,IAUJd,KAAK,SACLJ,MAAM,sB,UAWdA,MAAM,c,IAEDA,MAAM,e,ykBCnDjBq6B,GAAAA,GAAAA,IACEC,GAAAA,KAGF,UACE3/B,KAAM,iBAAO,CACXR,KAAM,KACN8R,OAAO,EACR,EACDrE,SAAU,UACLioC,EAAAA,EAAAA,IAAW,CACZmC,aAAc,wBAEb3pC,EAAAA,EAAAA,IAAS,CACVoF,SAAU,WACVid,MAAO,WAGXlqB,QAAS,aACJsvC,EAAAA,EAAAA,IAAa,WAAY,CAAC,kBAAmB,eAC7CC,EAAAA,EAAAA,IAAW,CAAEplB,MAAO,oBAAmB,IAC1C4lB,WAAU,WAAM7vC,KAAKuL,OAAQ,CAAM,EACnC+jC,OAAM,WAAI,WACR,EAAmCtvC,KAAKgqB,MAElC/vB,EAAO,CACXkvB,SAHc,EAARA,SAINC,aAJ4B,EAAZA,aAKhBrc,SAAU/M,KAAK+M,SAASgC,OACxB8b,SAAU7qB,KAAKsxC,aAAaC,UAC5B93C,KAAMuG,KAAKvG,MAGb+3C,GAAAA,cAAqBv3C,GAAMX,MAAK,SAACsE,GAC/B,GAAIA,EAAO2N,MAGT,OAFA,EAAKA,MAAQ3N,EAAO2N,WACpB,EAAK9R,KAAO,MAId,EAAKwwB,MAAMrsB,GAAQtE,MAAK,WACtB,EAAK6G,QAAQd,KAAK,CAAE3D,KAAM,WAC5B,GACF,GACF,KC5CJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,mEFJzD4E,EAAAA,GAAAA,IAuEM,MAvENC,GAuEM,EApEJC,EAAAA,GAAAA,GAEM,MAFNyvC,IAEM,SADDvvC,EAAAA,GAAG,uBAAD,IAGPF,EAAAA,GAAAA,GA4CM,MA5CN0vC,GA4CM,EA3CJ1vC,EAAAA,GAAAA,GA0CO,QAzCLlB,MAAM,aACL6wC,SAAM,yCAAUzvC,EAAAA,QAAAA,EAAAA,OAAAA,MAAAA,EAAAA,UAAM,kB,EAEvBF,EAAAA,GAAAA,GASM,MATN6vC,GASM,EARJ7vC,EAAAA,GAAAA,GAEQ,QAFR8vC,IAEQ,SADH5vC,EAAAA,GAAG,8BAAD,cAEPF,EAAAA,GAAAA,GAIC,SAHC7G,GAAG,O,qDACM+G,EAAAA,KAAI,IACbpB,MAAM,gB,kBADGoB,EAAAA,WAKbF,EAAAA,GAAAA,GA0BM,MA1BNixC,GA0BM,EAzBJjxC,EAAAA,GAAAA,GAwBM,MAxBNgwC,GAwBM,EAvBJhwC,EAAAA,GAAAA,GAgBM,aAfJA,EAAAA,GAAAA,GAMS,UALPlB,MAAM,wBACNI,KAAK,SACJK,QAAK,yCAAUW,EAAAA,iBAAAA,EAAAA,gBAAAA,MAAAA,EAAAA,UAAe,mB,SAE5BA,EAAAA,GAAG,8BAAD,GAEP+vC,IACAjwC,EAAAA,GAAAA,GAMS,UALPlB,MAAM,wBACNI,KAAK,SACJK,QAAK,yCAAUW,EAAAA,UAAAA,EAAAA,SAAAA,MAAAA,EAAAA,UAAQ,mB,SAErBA,EAAAA,GAAG,mBAAD,MAGTF,EAAAA,GAAAA,GAKS,SALTkxC,IAKS,SADJhxC,EAAAA,GAAG,mBAAD,cAQPA,EAAAA,QAAK,YADbJ,EAAAA,GAAAA,IAiBM,MAjBNqwC,GAiBM,EAbJnwC,EAAAA,GAAAA,GAYM,MAZNswC,GAYM,qBAXDpwC,EAAAA,OAAQ,IACX,YASS,UARPpB,MAAM,kBACLS,QAAK,8BAAEW,EAAAA,YAAAA,EAAAA,WAAAA,MAAAA,EAAAA,UAAU,I,EAElBkwC,EAAAA,GAAAA,IAIEQ,EAAAA,CAHAO,KAAK,KACLryC,MAAM,8BACNqJ,KAAK,kB,qPGzCjB,SApBiB,CACfjN,KAAM,WACN2F,OAAM,WACJ,OAAOuwC,EAAAA,GAAAA,IAAEC,EAAAA,GAAAA,IAAiB7xC,KAAK8xC,UACjC,EACA5qC,S,uWAAU,EACR4qC,SAAQ,WACN,OAAI9xC,KAAK4hC,aAAuB,cAC5B5hC,KAAK6hC,iBAA2B,kBAC7B,WACT,IACGsN,EAAAA,EAAAA,IAAW,WAAY,CAAC,eAAgB,sBAE7CtuC,WAAY,CACVkxC,gBAAAA,GACAC,YAAAA,GACAC,UAAAA,K,2PCLJ,SAZkB,CAChB/qC,S,uWAAU,EACRgrC,SAAQ,WAAM,OAAOlyC,KAAK/C,IAAK,IAC5B0K,EAAAA,EAAAA,IAAS,CAAE1K,KAAM,SAAAd,GAAK,OAAIA,EAAMa,MAAM2Q,WAAW,KAEtD9M,WAAY,CACVsxC,SAAAA,GACAC,eAAAA,GAAAA,EACAC,SAAAA,GAAAA,ICJJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,4HbNzD/xC,EAAAA,GAAAA,IAiBQ,QAjBRC,GAiBQ,CAfEG,EAAAA,WAAQ,YADhBJ,EAAAA,GAAAA,IAWM,MAXN2vC,GAWM,EANJW,EAAAA,GAAAA,IAIE0B,EAAAA,CAHC,UAAS5xC,EAAAA,KAAK/G,GACd,YAAU,EACX44C,QAAQ,O,qBAEV3B,EAAAA,GAAAA,IAAkB4B,QAAAA,EAAAA,GAAAA,OAEpBvB,EAAAA,GAAAA,IAGEwB,EAAAA,CADAprC,IAAI,iB,acfH/H,MAAM,Y,IACJA,MAAM,uB,UAGPA,MAAM,mC,IAGNkB,EAAAA,GAAAA,GAAsB,OAAjBlB,MAAM,UAAQ,S,UAcnBA,MAAM,c,IAiBJA,MAAM,wB,IAEDA,MAAM,a,IAoCXA,MAAM,wB,UClDNA,MAAM,0C,IAGFA,MAAM,S,UAOZA,MAAM,4B,4BCrCDozC,GAAkB,IAAIvwC,IAAI,CACrC,YACA,MACA,eACA,gBACA,OACA,QACA,iBAGWwwC,GAAY,CACvBC,KAAM,CACJC,MAAO,UACPlqC,KAAM,OACND,MAAO,oBACPoqC,SAAU,CAAC,aAEb94B,OAAQ,CACN64B,MAAO,kBACPE,MAAM,EACNpqC,KAAM,QACND,MAAO,gBACPoqC,SAAU,CAAC,aAEbE,KAAM,CACJH,MAAO,2BACPE,MAAM,EACNpqC,KAAM,QACND,MAAO,WACPoqC,SAAU,CAAC,WAAY,eAEzB14B,UAAW,CACTy4B,MAAO,YACPlqC,KAAM,WACND,MAAO,iBAETmR,UAAW,CACTo5B,YAAa,CAAEv3C,KAAM,eAAgBe,MAAO,CAAEy2C,IAAK,cACnDvqC,KAAM,OACND,MAAO,uBAETyR,IAAK,CACH04B,MAAO,MACPlqC,KAAM,WACND,MAAO,YAIEyqC,GAAa,CACxBC,aAAc,CACZP,MAAO,eACPlqC,KAAM,OACND,MAAO,oBAETqtB,MAAO,CACL8c,MAAO,QACPlqC,KAAM,WACND,MAAO,YACP2qC,YAAa,kBACbP,SAAU,CAAC,UAEbQ,eAAgB,CACdT,MAAO,kBACPlqC,KAAM,YACND,MAAO,sBACPoqC,SAAU,CAAC,cACXO,YAAa,sBAEfE,MAAO,CACLV,MAAO,QACPE,MAAM,EACNpqC,KAAM,cACND,MAAO,aAETwiC,cAAe,CACb2H,MAAO,gBACPlqC,KAAM,WACND,MAAO,oBACP2qC,YAAa,0BACbP,SAAU,CAAC,mBC5Df,UACEvzC,MAAO,CAAC,OCbV,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,4DDFjDi0C,EAAAA,KAAE,YADVvC,EAAAA,GAAAA,IAScJ,EAAAA,C,MANXvT,GAAIkW,EAAAA,GACLC,OAAA,I,oBAEA,SAJQl0C,GAAK,QAIbm0C,EAAAA,GAAAA,IAEEhzC,EAAAA,OAAAA,WAAAA,EAAAA,GAAAA,KAAAA,EAAAA,GAAAA,IADQnB,K,qBAGZm0C,EAAAA,GAAAA,IAGEhzC,EAAAA,OAAAA,WAAAA,EAAAA,GAAAA,KAAAA,EAAAA,GAAAA,IAAAA,CAAA2G,IAAAA,GADQ,CAAC,I,oOERbsyB,GAAAA,GAAAA,IAAYga,GAAAA,KA4CZ,SA1CwB,CACtBp0C,MAAO,CAAC,OAAQ,WAChBsB,WAAY,CACV+yC,mBAAAA,IAEF9zC,QAAS,CACP+zC,SAAQ,SAAEjoC,GACR,OAAO5L,KAAK8zC,YAAY7wC,IAAI2I,EAC9B,EACAmoC,UAAS,SAAEnoC,GACL5L,KAAK6zC,SAASjoC,GAChB5L,KAAKyvC,OAAOziC,OAAO,6BAA8B,CAAEkvB,KAAM,6BAA8BtwB,MAAAA,IAEvF5L,KAAKyvC,OAAOziC,OAAO,0BAA2B,CAAEkvB,KAAM,6BAA8BtwB,MAAAA,IAEtF5L,KAAKyvC,OAAOvzC,SAAS,wBACvB,GAEFgL,S,uWAAU,EACR8sC,QAAO,WACL,OAAKh0C,KAAKoD,KAAKyvC,OAAU7yC,KAAKoD,KAAK6vC,aAGjCJ,EADE7yC,KAAKoD,KAAK6vC,YACJjzC,KAAKoD,KAAK6vC,YAEV,CAAEv3C,KAAOsE,KAAKoD,KAAK2vC,MAAQ/yC,KAAK2N,YAAe3N,KAAKoD,KAAKyvC,MAAQ7yC,KAAKoD,KAAK6wC,WAEjFvB,GAAgBzvC,IAAI4vC,EAAMn3C,QAC5Bm3C,EAAM/d,OAAS,CAAEpK,SAAU1qB,KAAK2N,YAAYzQ,YAAaxB,KAAMsE,KAAK2N,YAAYzQ,cAE3E21C,GAVgD,KACvD,IAAIA,CAUN,EACAr+B,QAAO,WACL,OAAOxU,KAAKyvC,OAAOj7B,OACrB,IACG7M,EAAAA,EAAAA,IAAS,CACVgG,YAAa,SAAAxR,GAAK,OAAIA,EAAMa,MAAM2Q,WAAW,EAC7CmmC,YAAa,SAAA33C,GAAK,OAAI,IAAIgG,IAAIhG,EAAM+3C,kBAAkB9Z,aAAaK,YAAYC,eAAe,MCpCpG,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,qGLNzDuW,EAAAA,GAAAA,IA0DqBkD,EAAAA,CAxDnBC,IAAI,MACH9W,GAAI58B,EAAAA,S,oBAEL,wEAJkC,GAAxB4G,EAAQ,EAARA,SAAU7G,EAAI,EAAJA,KAAM4zC,EAAQ,EAARA,SAAQ,QAIlC7zC,EAAAA,GAAAA,GAoDK,MApDL8zC,EAAAA,GAAAA,IAoDK,CAnDHh1C,MAAK,CAAC,4BAA2B,WACZgI,KACb5G,EAAAA,QAAM,eAEduwC,EAAAA,GAAAA,KAsBYsD,EAAAA,GAAAA,IArBL7zC,EAAAA,QAAU,IAAM,UAAT,CACZpB,MAAM,4BACLmB,KAAMA,EACNV,QAAOs0C,G,oBAER,iBAOO,EAPP7zC,EAAAA,GAAAA,GAOO,aALGE,EAAAA,KAAKiI,OAAI,YADjBsoC,EAAAA,GAAAA,IAKEG,EAAAA,C,MAHA,iBACA9xC,MAAM,yBACLqJ,KAAMjI,EAAAA,KAAKiI,M,qCAIRjI,EAAAA,KAAK8zC,aAAU,YADvBl0C,EAAAA,GAAAA,IAIO,OAJPC,IAIO,SADHG,EAAAA,KAAK8zC,YAAU,sBAEnBh0C,EAAAA,GAAAA,GAEO,OAFPyvC,IAEO,SADFvvC,EAAAA,KAAK+zC,UAAY/zC,EAAAA,GAAGA,EAAAA,KAAKgI,QAAK,G,oCAGrCgrC,EAAAA,GAAAA,IAAQhzC,EAAAA,OAAAA,WAEAA,EAAAA,KAAK2yC,aAAe3yC,EAAAA,QAAQA,EAAAA,KAAK2yC,eAAW,YADpD/yC,EAAAA,GAAAA,IAKM,MALN4vC,IAKM,SADDxvC,EAAAA,QAAQA,EAAAA,KAAK2yC,cAAW,qBAGrB3yC,EAAAA,SAAWA,EAAAA,cAAW,YAD9BJ,EAAAA,GAAAA,IAgBS,U,MAdPZ,KAAK,SACLJ,MAAM,+BACLwN,MAAOpM,EAAAA,GAAGA,EAAAA,SAAW,gBAAkB,eACvC,iBAAgBA,EAAAA,SAChBX,QAAK,0CAAeW,EAAAA,UAAUA,EAAAA,KAAKhF,KAAI,yB,CAGhCgF,EAAAA,SAAWA,EAAAA,cAAW,YAD9BuwC,EAAAA,GAAAA,IAOEG,EAAAA,C,MALA,iBACA9xC,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,eAAc,YACIh0C,EAAAA,SAASA,EAAAA,KAAKhF,SACrCi5C,UAAYj0C,EAAAA,SAASA,EAAAA,KAAKhF,MAAsB,GAAd,YACnCiN,KAAK,a,qGMvDR,IAAMisC,GAAmB,WAAqF,IAApFj8C,EAAO,UAAH,6CAAG,GAAE,yCAAIk8C,EAAQ,EAARA,SAAUC,EAAgB,EAAhBA,iBAAkBC,EAAY,EAAZA,aAAcC,EAAS,EAATA,UAAWrnC,EAAW,EAAXA,YACjG,OAAOhV,EAAKoC,QAAO,YAAmC,IAAhC+3C,EAAQ,EAARA,SAAUC,EAAI,EAAJA,KAAMkB,EAAS,EAATA,UAC9B5uB,EAAM,IAAIljB,IAAI2wC,GAAY,IAChC,SAAKiC,GAAgB1vB,EAAIpiB,IAAI,gBACxB0K,GAAeqnC,GAAa3vB,EAAIpiB,IAAI,eACpC0K,GAAiBolC,GAAQkB,MACxBtmC,GAAgBA,EAAY8nB,SAAWpQ,EAAIpiB,IAAI,iBAChD4xC,GAAYxvB,EAAIpiB,IAAI,WACpB6xC,GAAoBzvB,EAAIpiB,IAAI,iBAEnC,GACF,EAEagyC,GAAiB,SAAA94C,GAAK,OAAIA,EAAMopB,MAAMZ,SAAS5rB,KAAI,SAAAJ,GAAI,MAAK,CACvE+C,KAAM,QAAU/C,EAAKgB,GACrBs5C,YAAa,CAAEv3C,KAAM,iBAAkBo5B,OAAQ,CAAEn7B,GAAIhB,EAAKgB,KAC1D86C,SAAU97C,EAAKmU,MACf0nC,WAAY77C,EAAKmU,MAAM,GACxB,GAAE,E,+NCdI,IAAMooC,GAAmB,CAC9B31C,MAAO,CACL,WAEFsB,WAAY,CACVs0C,gBAAAA,IAEFjuC,S,uWAAU,KACLS,EAAAA,EAAAA,IAAS,CACV4d,MAAO0vB,GACPtnC,YAAa,SAAAxR,GAAK,OAAIA,EAAMa,MAAM2Q,WAAW,EAC7CynC,YAAa,SAAAj5C,GAAK,OAAIA,EAAM4Q,SAAQ,OAAQ,EAC5CsoC,WAAY,SAAAl5C,GAAK,OAAIA,EAAM4Q,SAASsoC,UAAU,MAKpD,YCdA,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,4ECJzD/0C,EAAAA,GAAAA,IAOK,2BANHA,EAAAA,GAAAA,IAKE8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IAJe1vC,EAAAA,OAAK,SAAb0C,G,mBADT6tC,EAAAA,GAAAA,IAKEqE,EAAAA,CAHCjuC,IAAKjE,EAAK1H,KACV,WAAUgF,EAAAA,QACV0C,KAAMA,G,mDCLL9D,MAAM,kB,UAeNA,MAAM,0C,UAINA,MAAM,a,ykBCHdq6B,GAAAA,GAAAA,IACE4b,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAC,GAAAA,KAmEF,SAhEiB,CACfx2C,MAAO,CAAC,SACRO,QAAS,CACPk2C,WAAU,SAAE5yC,GACV,GAAIA,EAAK6vC,YACP,OAAO7vC,EAAK6vC,YAEd,IAAMJ,EAAQ,CAAEn3C,KAAO0H,EAAK2vC,MAAQ/yC,KAAK2N,YAAevK,EAAKyvC,MAAQzvC,EAAK6wC,WAI1E,OAHIvB,GAAgBzvC,IAAI4vC,EAAMn3C,QAC5Bm3C,EAAM/d,OAAS,CAAEpK,SAAU1qB,KAAK2N,YAAYzQ,cAEvC21C,CACT,GAEF3rC,SAAU,OACRsN,QAAO,WACL,OAAOxU,KAAKyvC,OAAOj7B,OACrB,IACG7M,EAAAA,EAAAA,IAAS,CACV4d,MAAO0vB,GACPtnC,YAAa,SAAAxR,GAAK,OAAIA,EAAMa,MAAM2Q,WAAW,EAC7CopB,mBAAoB,SAAA56B,GAAK,OAAIA,EAAMimB,IAAI0U,eAAez7B,MAAM,EAC5D+5C,YAAa,SAAAj5C,GAAK,OAAIA,EAAM4Q,SAAQ,OAAQ,EAC5CsoC,WAAY,SAAAl5C,GAAK,OAAIA,EAAM4Q,SAASsoC,UAAU,EAC9ChiC,6BAA8B,SAAAlX,GAAK,OAAIA,EAAM4Q,SAASsG,4BAA4B,EAClFygC,YAAa,SAAA33C,GAAK,OAAI,IAAIgG,IAAIhG,EAAM+3C,kBAAkB9Z,aAAaK,YAAYC,eAAe,KAC9F,IACFub,WAAU,WAAI,WACZ,OAAKj2C,KAAK2N,YAaHinC,GAAiB,GAAD,eAEhB96C,OACAsd,QAAQ,MAAKu7B,KACb53C,QAAO,gBAAEO,GAAF,YAAG,UAAM,EAAKw4C,YAAY7wC,IAAI3H,EAAE,IACvCvC,KAAI,+BAAEuC,EAAC,KAAG,sBAAa,IAAEI,KAAMJ,GAAC,MAAI,OACpC0E,KAAKulB,MAAMxqB,QAAO,SAACO,GAAC,OAAK,EAAKw4C,YAAY7wC,IAAI3H,EAAEI,KAAK,MAAC,OACtD5B,OACAsd,QAAQ,MAAK+7B,KACbp4C,QAAO,gBAAEO,GAAF,YAAG,UAAM,EAAKw4C,YAAY7wC,IAAI3H,EAAE,IACvCvC,KAAI,+BAAEuC,EAAC,KAAG,sBAAa,IAAEI,KAAMJ,GAAC,MAErC,CACEu5C,SAAU70C,KAAKqT,6BACf0hC,aAAc/0C,KAAKq1C,WACnBL,UAAWh1C,KAAKo1C,YAChBznC,YAAa3N,KAAK2N,cAEpBxQ,MAAM,EAAG6C,KAAKqkB,OA9BPuwB,GAAiB,CAAC,SAClBjC,GAAAA,QAAgB,IAAEj3C,KAAM,WAAQ,SAChCi3C,GAAUK,MAAI,IAAEt3C,KAAM,SAAM,SAC5By3C,GAAWI,OAAK,IAAE73C,KAAM,WAE/B,CACEm5C,SAAU70C,KAAKqT,6BACf0hC,aAAc/0C,KAAKq1C,WACnBL,UAAWh1C,KAAKo1C,YAChBznC,YAAa3N,KAAK2N,aAsBxB,KChFJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,8FFNzDrN,EAAAA,GAAAA,IAsBO,OAtBPC,GAsBO,iBArBLD,EAAAA,GAAAA,IAoBc8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IAnBG1vC,EAAAA,YAAU,SAAlB0C,G,mBADT6tC,EAAAA,GAAAA,IAoBcJ,EAAAA,CAlBXxpC,IAAKjE,EAAK1H,KACX4D,MAAM,cACLg+B,GAAI58B,EAAAA,WAAW0C,GACf0J,MAAO1J,EAAKqxC,UAAY/zC,EAAAA,GAAG0C,EAAKsF,Q,oBAEjC,iBAIE,CAHMtF,EAAKuF,OAAI,YADjBsoC,EAAAA,GAAAA,IAIEG,EAAAA,C,MAFA,iBACCzoC,KAAMvF,EAAKuF,M,mCAGNvF,EAAKoxC,aAAU,YADvBl0C,EAAAA,GAAAA,IAG6B,OAH7B2vC,IAG6B,SAAzB7sC,EAAKoxC,YAAU,qBAEXpxC,EAAKiwC,aAAe3yC,EAAAA,QAAQ0C,EAAKiwC,eAAW,YADpD/yC,EAAAA,GAAAA,IAGE,MAHF4vC,MAGE,gB,soBGGRvW,GAAAA,GAAAA,IACE4b,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAQ,GAAAA,IACAC,GAAAA,IACAR,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAK,GAAAA,KA0FF,SAxFiB,CACf72C,MAAO,CAAC,cAAe,iBACvB82C,QAAO,WACP,EACAx1C,WAAY,CACVq0C,iBAAAA,GACAC,gBAAAA,GACAmB,eAAAA,GACAC,SAAAA,GAAAA,GAEFt8C,KAAI,WACF,MAAO,CACLu8C,UAAU,EACVC,eAAe,EACfC,WAAW,EACXC,cAAe78C,OAAOsd,QAAQu7B,IAAW55C,KAAI,+BAAEuC,EAAC,KAAG,sBAAa,IAAEI,KAAMJ,GAAC,IACzEs7C,SAAU98C,OAAOsd,QAAQ+7B,IAAYp6C,KAAI,+BAAEuC,EAAC,KAAG,sBAAa,IAAEI,KAAMJ,GAAC,IAEzE,EACAwE,QAAS,CACP+2C,gBAAe,WACb72C,KAAKy2C,eAAiBz2C,KAAKy2C,aAC7B,EACAK,YAAW,WACT92C,KAAK02C,WAAa12C,KAAK02C,SACzB,EACAK,eAAc,WACZ/2C,KAAKw2C,UAAYx2C,KAAKw2C,QACxB,EACAQ,eAAc,WACZh3C,KAAKyvC,OAAOziC,OAAO,gBAAiB,CAAEkvB,KAAM,qBAAsBtwB,OAAQ5L,KAAKi3C,YAC/Ej3C,KAAKyvC,OAAOvzC,SAAS,wBACvB,EACA23C,SAAQ,SAAEzwC,GACR,OAAOpD,KAAK8zC,YAAY7wC,IAAIG,EAC9B,EACA2wC,UAAS,SAAE3wC,GACLpD,KAAK6zC,SAASzwC,GAChBpD,KAAKyvC,OAAOziC,OAAO,6BAA8B,CAAEkvB,KAAM,6BAA8BtwB,MAAOxI,IAE9FpD,KAAKyvC,OAAOziC,OAAO,0BAA2B,CAAEkvB,KAAM,6BAA8BtwB,MAAOxI,IAE7FpD,KAAKyvC,OAAOvzC,SAAS,wBACvB,GAEFgL,SAAU,UACLS,EAAAA,EAAAA,IAAS,CACVgG,YAAa,SAAAxR,GAAK,OAAIA,EAAMa,MAAM2Q,WAAW,EAC7CopB,mBAAoB,SAAA56B,GAAK,OAAIA,EAAMimB,IAAI0U,eAAez7B,MAAM,EAC5D+5C,YAAa,SAAAj5C,GAAK,OAAIA,EAAM4Q,SAAQ,OAAQ,EAC5CsoC,WAAY,SAAAl5C,GAAK,OAAIA,EAAM4Q,SAASsoC,UAAU,EAC9ChiC,6BAA8B,SAAAlX,GAAK,OAAIA,EAAM4Q,SAASsG,4BAA4B,EAClF83B,sBAAuB,SAAAhvC,GAAK,OAAIA,EAAM+uC,cAAcC,qBAAqB,EACzE2I,YAAa,SAAA33C,GAAK,OAAI,IAAIgG,IAAIhG,EAAM+3C,kBAAkB9Z,aAAaK,YAAYC,eAAe,EAC9Fuc,UAAW,SAAA96C,GAAK,OAAIA,EAAM+3C,kBAAkB9Z,aAAaE,OAAOE,WAAW,KAC3E,IACF0c,eAAc,WACZ,OAAOtC,GACL96C,OACGsd,QAAQ,MAAKu7B,KACb55C,KAAI,+BAAEuC,EAAC,KAAG,sBAAa,IAAEI,KAAMJ,GAAC,IACnC,CACEu5C,SAAU70C,KAAKqT,6BACfyhC,iBAAkB90C,KAAKmrC,sBACvB4J,aAAc/0C,KAAKq1C,WACnBL,UAAWh1C,KAAKo1C,YAChBznC,YAAa3N,KAAK2N,aAGxB,EACAwpC,UAAS,WACP,OAAOvC,GACL96C,OACGsd,QAAQ,MAAK+7B,KACbp6C,KAAI,+BAAEuC,EAAC,KAAG,sBAAa,IAAEI,KAAMJ,GAAC,IACnC,CACEu5C,SAAU70C,KAAKqT,6BACfyhC,iBAAkB90C,KAAKmrC,sBACvB4J,aAAc/0C,KAAKq1C,WACnBL,UAAWh1C,KAAKo1C,YAChBznC,YAAa3N,KAAK2N,aAGxB,IACGwhC,EAAAA,EAAAA,IAAW,CAAC,kBAAmB,8BCjHtC,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,2LfNzD7uC,EAAAA,GAAAA,IAiGM,MAjGNC,GAiGM,EAhGJC,EAAAA,GAAAA,GA+FM,MA/FNyvC,GA+FM,CA7FKvvC,EAAAA,a,kBAAW,YADpBJ,EAAAA,GAAAA,IAgBM,MAhBN4vC,GAgBM,EAZJU,EAAAA,GAAAA,IAA6BwG,EAAAA,CAAZ/yB,MAAO,IACxBgsB,IACA7vC,EAAAA,GAAAA,GASS,UARPlB,MAAM,kBACLS,QAAK,8BAAEW,EAAAA,gBAAAA,EAAAA,eAAAA,MAAAA,EAAAA,UAAc,I,EAEtBkwC,EAAAA,GAAAA,IAIEQ,EAAAA,CAHA9xC,MAAM,qBACN,iBACCqJ,KAAMjI,EAAAA,UAAY,eAAiB,c,uBAKjCA,EAAAA,WAAaA,EAAAA,cAAW,YADjCJ,EAAAA,GAAAA,IA4EK,KA5ELgwC,GA4EK,CAvEK5vC,EAAAA,cAAgBA,EAAAA,cAAW,YADnCuwC,EAAAA,GAAAA,IAYkBqE,EAAAA,C,MAVf,YAAU,EACVlyC,KAAM,CAAAuF,KAAAA,SAAAD,MAAAA,iBACN,gBAAehI,EAAAA,cAAgB,OAAS,QACxCX,QAAOW,EAAAA,iB,oBAER,iBAIE,EAJFkwC,EAAAA,GAAAA,IAIEQ,EAAAA,CAHA9xC,MAAM,oBACN,iBACCqJ,KAAMjI,EAAAA,cAAgB,aAAe,gB,6FAG1CF,EAAAA,GAAAA,GAYM,MAZNixC,GAYM,EARJjxC,EAAAA,GAAAA,GAOM,MAPNgwC,GAOM,iBANJlwC,EAAAA,GAAAA,IAKE8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IAJe1vC,EAAAA,gBAAc,SAAtB0C,G,mBADT6tC,EAAAA,GAAAA,IAKEqE,EAAAA,CAHCjuC,IAAKjE,EAAK1H,KACV,WAAUgF,EAAAA,UAAYA,EAAAA,cACtB0C,KAAMA,G,qDARH1C,EAAAA,iBAaFA,EAAAA,cAAW,YADnBuwC,EAAAA,GAAAA,IAwBkBqE,EAAAA,C,MAtBf,YAAU,EACVlyC,KAAM,CAAAuF,KAAAA,OAAAD,MAAAA,aACN,gBAAehI,EAAAA,UAAY,OAAS,QACpCX,QAAOW,EAAAA,a,oBAER,iBAWc,EAXdkwC,EAAAA,GAAAA,IAWcC,EAAAA,CAVX/jC,MAAOpM,EAAAA,GAAG,sBACXpB,MAAM,eACLg+B,GAAI,CAAA5hC,KAAAA,SACJqE,QAAK,uBAAN,cAAW,Y,oBAEX,iBAIE,EAJF6wC,EAAAA,GAAAA,IAIEQ,EAAAA,CAHA9xC,MAAM,eACN,iBACAqJ,KAAK,W,uBAGTioC,EAAAA,GAAAA,IAIEQ,EAAAA,CAHA9xC,MAAM,oBACN,iBACCqJ,KAAMjI,EAAAA,UAAY,aAAe,gB,6FAGtCF,EAAAA,GAAAA,GAQM,MARNiwC,GAQM,EAJJG,EAAAA,GAAAA,IAGEyG,EAAAA,CAFC,WAAU32C,EAAAA,UAAYA,EAAAA,cACvBpB,MAAM,a,mCALAoB,EAAAA,eAAS,cAQnBJ,EAAAA,GAAAA,IAKE8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IAJe1vC,EAAAA,WAAS,SAAjB0C,G,mBADT6tC,EAAAA,GAAAA,IAKEqE,EAAAA,CAHCjuC,IAAKjE,EAAK1H,KACV,WAAUgF,EAAAA,UAAYA,EAAAA,cACtB0C,KAAMA,G,sCAGA1C,EAAAA,eAAiBA,EAAAA,cAAW,YADrCuwC,EAAAA,GAAAA,IAKEqE,EAAAA,C,MAHC,YAAU,EACVlyC,KAAI,CAAAsF,MAAWhI,EAAAA,SAAWA,EAAAA,GAAG,mBAAqBA,EAAAA,GAAG,mBAADiI,KAA2BjI,EAAAA,SAAW,QAAU,UACpGX,QAAOW,EAAAA,gB,iFgB7FXpB,MAAM,2B,IACJA,MAAM,uB,IACJA,MAAM,c,iBCKjB,SAR8B,CAC5B4H,SAAU,CACRwM,6BAA4B,WAC1B,OAAO1T,KAAKyvC,OAAOtzC,MAAM4Q,SAAS2G,4BACpC,ICGJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,yCFJzDpT,EAAAA,GAAAA,IAQM,MARNC,GAQM,EAPJC,EAAAA,GAAAA,GAMM,MANNyvC,GAMM,EALJzvC,EAAAA,GAAAA,GAIM,MAJN0vC,GAIM,EAFJ1vC,EAAAA,GAAAA,GAA6C,OAAxCI,UAAQF,EAAAA,8BAA4B,gB,aGJ1CpB,MAAM,kB,IACJA,MAAM,yC,IACJA,MAAM,2D,IACJA,MAAM,S,IAIRA,MAAM,6B,mECOjB,SAbsB,CACpB4H,SAAU,CACRowC,MAAO,WAAc,OAAOt3C,KAAKyvC,OAAOtzC,MAAM4Q,SAASqG,cAAe,EACtEmkC,oBAAqB,WAAc,OAAOv3C,KAAKyvC,OAAOtzC,MAAM4Q,SAASsG,4BAA6B,EAClGmkC,OAAQ,WAAc,OAAOx3C,KAAKyvC,OAAOtzC,MAAM4Q,SAASuG,eAAgB,EACxEmkC,YAAa,WAAc,OAAOz3C,KAAKyvC,OAAOtzC,MAAM4Q,SAASyG,kBAAmB,EAChFkkC,WAAY,WAAc,OAAO13C,KAAKyvC,OAAOtzC,MAAM4Q,SAASwG,mBAAoB,EAChFhC,kBAAmB,WAAc,OAAOvR,KAAKyvC,OAAOtzC,MAAM4Q,SAASwE,iBAAkB,EACrFvC,UAAW,WAAc,OAAOhP,KAAKyvC,OAAOtzC,MAAM4Q,SAASiC,SAAU,EACrE2oC,YAAa,WAAc,OAAOC,GAAAA,EAAAA,eAAqC53C,KAAKyvC,OAAOtzC,MAAM4Q,SAAS4qC,YAAa,ICFnH,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,yCFNzDr3C,EAAAA,GAAAA,IA8BM,MA9BNC,GA8BM,EA7BJC,EAAAA,GAAAA,GA4BM,MA5BNyvC,GA4BM,EA3BJzvC,EAAAA,GAAAA,GAIM,MAJN0vC,GAIM,EAHJ1vC,EAAAA,GAAAA,GAEM,MAFN6vC,IAEM,SADD3vC,EAAAA,GAAG,yBAAD,MAGTF,EAAAA,GAAAA,GAqBM,MArBN8vC,GAqBM,EApBJ9vC,EAAAA,GAAAA,GAmBK,WAlBOE,EAAAA,QAAK,YAAfJ,EAAAA,GAAAA,IAEK,kBADAI,EAAAA,GAAG,yBAAD,qBAEGA,EAAAA,sBAAmB,YAA7BJ,EAAAA,GAAAA,IAEK,kBADAI,EAAAA,GAAG,yCAAD,qBAEGA,EAAAA,SAAM,YAAhBJ,EAAAA,GAAAA,IAEK,kBADAI,EAAAA,GAAG,0BAAD,qBAEGA,EAAAA,cAAW,YAArBJ,EAAAA,GAAAA,IAEK,kBADAI,EAAAA,GAAG,iCAAD,qBAEGA,EAAAA,aAAU,YAApBJ,EAAAA,GAAAA,IAEK,kBADAI,EAAAA,GAAG,+BAAD,sBAEPF,EAAAA,GAAAA,GAAiD,oBAA1CE,EAAAA,GAAG,iCAAD,IACTF,EAAAA,GAAAA,GAAgE,oBAAzDE,EAAAA,GAAG,8BAA+B,OAAG,SAAGA,EAAAA,WAAS,IACxDF,EAAAA,GAAAA,GAA+H,oBAAxHE,EAAAA,GAAG,gCAAiC,OAAG,SAAGA,EAAAA,YAAYm3C,KAAM,KAAC,SAAGn3C,EAAAA,GAAG,0BAA4BA,EAAAA,YAAYo3C,OAAI,U,aG1BzHx4C,MAAM,uB,IACJA,MAAM,yC,IACJA,MAAM,2D,IACJA,MAAM,S,IAIRA,MAAM,iB,eASOkB,EAAAA,GAAAA,GAAI,mB,IAEjBlB,MAAM,sB,kCCMjB,SAASy4C,GAAgBC,GACvB,IAAM7/B,EAAc6/B,EAAMvI,OAAOtzC,MAAMa,MAAM2Q,YAAYwK,YACrDA,IACF6/B,EAAMC,cAAcjjC,SAAQ,SAAAkjC,GAC1BA,EAASx8C,KAAO,YAClB,IACAwc,EAAAA,GAAAA,YAAuB,CAAEC,YAAAA,IACtB7e,MAAK,SAAC6+C,IA5Bb,SAA0BH,EAAOG,GAAO,WAChCC,EAAW,KAAQD,GAEzBH,EAAMC,cAAcjjC,SAAQ,SAACkjC,EAAU70C,GACrC,IAAMpG,EAAOm7C,EAAS/0C,GAChBg1C,EAAMp7C,EAAKq7C,QAAU,EAAK7I,OAAOtzC,MAAM4Q,SAASqC,cAChD1T,EAAOuB,EAAKs7C,KAElBL,EAASG,IAAMA,EACfH,EAASx8C,KAAOA,EAEhBs8C,EAAMvI,OAAOtzC,MAAMimB,IAAIC,kBAAkB4N,UAAU,CAAEt2B,GAAI+B,IACtDpC,MAAK,SAACk/C,GACAA,EAAajtC,QAChBysC,EAAMvI,OAAOziC,OAAO,cAAe,CAACwrC,IACpCN,EAASv+C,GAAK6+C,EAAa7+C,GAE/B,GACJ,GACF,CAUQ8+C,CAAgBT,EAAOG,EACzB,IAEN,CAyCA,SAvCyB,CACvBl+C,KAAM,iBAAO,CACXg+C,cAAe,GAChB,EACD/wC,SAAU,CACRjK,KAAM,WACJ,OAAO+C,KAAKyvC,OAAOtzC,MAAMa,MAAM2Q,YAAYzQ,WAC7C,EACAsW,mBAAkB,WAChB,OAAOxT,KAAKyvC,OAAOtzC,MAAM4Q,SAASyG,kBACpC,GAEF1T,QAAS,CACP44C,gBAAe,SAAE/+C,EAAI+B,GACnB,OAAOi9C,EAAAA,GAAAA,GAAoBh/C,EAAI+B,EAAMsE,KAAKyvC,OAAOtzC,MAAM4Q,SAASgG,oBAClE,GAEF6lC,MAAO,CACL37C,KAAM,SAAUA,EAAM47C,GAChB74C,KAAKwT,oBACPukC,GAAe/3C,KAEnB,GAEF84C,QACE,WAAY,WACV94C,KAAKi4C,cAAgB,IAAI55C,MAAM,GAAG06C,OAAOhgD,KAAI,SAAAigD,GAAC,MAC5C,CACEX,IAAK,EAAK5I,OAAOtzC,MAAM4Q,SAASqC,cAChC1T,KAAM,GACN/B,GAAI,EACL,IAECqG,KAAKwT,oBACPukC,GAAe/3C,KAEnB,GCjEJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,wEFNzDM,EAAAA,GAAAA,IAyBM,MAzBNC,GAyBM,EAxBJC,EAAAA,GAAAA,GAuBM,MAvBNyvC,GAuBM,EAtBJzvC,EAAAA,GAAAA,GAIM,MAJN0vC,GAIM,EAHJ1vC,EAAAA,GAAAA,GAEM,MAFN6vC,IAEM,SADD3vC,EAAAA,GAAG,gCAAD,MAGTF,EAAAA,GAAAA,GAgBM,MAhBN8vC,GAgBM,iBAfJhwC,EAAAA,GAAAA,IASI8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IARa1vC,EAAAA,eAAa,SAArBzD,G,mBADTqD,EAAAA,GAAAA,IASI,KAPD+G,IAAKpK,EAAKtD,GACX2F,MAAM,uB,EAENkB,EAAAA,GAAAA,GAAqB,OAAfy4C,IAAKh8C,EAAKo7C,K,YAChBzH,EAAAA,GAAAA,IAEcC,EAAAA,CAFAvT,GAAI58B,EAAAA,gBAAgBzD,EAAKtD,GAAIsD,EAAKvB,O,oBAC9C,iBAAe,qBAAZuB,EAAKvB,MAAI,G,sBACA80C,I,WAEhBhwC,EAAAA,GAAAA,GAII,IAJJiwC,GAII,EAHFG,EAAAA,GAAAA,IAEcC,EAAAA,CAFAvT,GAAI,CAAA5hC,KAAAA,kBAAyB,C,mBACzC,iBAA8B,qBAA3BgF,EAAAA,GAAG,uBAAD,G,oCGlBbpB,MAAM,e,IAEDA,MAAM,uB,IAMFA,MAAM,S,IASRA,MAAM,gB,IAMDA,MAAM,gB,eAGPA,MAAM,iB,IAOTkB,EAAAA,GAAAA,GAAI,mB,IACElB,MAAM,c,IAMbA,MAAM,e,UAYbA,MAAM,e,IAEDA,MAAM,uB,IAKFA,MAAM,SCvDnBq6B,GAAAA,GAAAA,IACEyc,GAAAA,IACAxc,GAAAA,KA2CF,SAxCmB,CACjBr6B,MAAO,CAAC,YACRtF,KAAI,WACF,MAAO,CACLi/C,eAAgB,GAChBnZ,QAAS,KACTkX,WAAW,EAEf,EACA/vC,SAAU,CACRgD,SAAQ,WACN,OAAOlK,KAAKyvC,OAAOtzC,MAAMm7C,MAAMptC,QACjC,GAEFpK,QAAS,CACPwvC,OAAM,SAAEpoB,GACNlnB,KAAKyvC,OAAOtzC,MAAMm7C,MAAMvX,QAAQ1gC,KAAK,UAAW,CAAET,KAAMsoB,GAAW,KACnElnB,KAAKk5C,eAAiB,EACxB,EACAC,YAAW,WACTn5C,KAAKi3C,WAAaj3C,KAAKi3C,SACzB,EACAyB,gBAAe,SAAEz7C,GACf,OAAO07C,EAAAA,GAAAA,GAAoB17C,EAAKtD,GAAIsD,EAAKytB,SAAU1qB,KAAKyvC,OAAOtzC,MAAM4Q,SAASgG,oBAChF,GAEF6lC,MAAO,CACL1uC,SAAQ,SAAEkvC,GACR,IAAMC,EAAWr5C,KAAKs5C,IAAIC,cAAc,gBACnCF,GACDA,EAASjxC,UAAYixC,EAASG,aAAe,GAAKH,EAASI,cAC7Dz5C,KAAK05C,WAAU,WACRL,IACLA,EAASjxC,UAAYixC,EAASI,aAAeJ,EAASG,aACxD,GAEJ,ICvCJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,kFFLhD94C,EAAAA,WAAcA,EAAAA,WA2CQ,YAQ/BJ,EAAAA,GAAAA,IAkBM,MAlBNwwC,GAkBM,EAdJtwC,EAAAA,GAAAA,GAaM,MAbNuwC,GAaM,EAZJvwC,EAAAA,GAAAA,GAWM,OAVJlB,MAAM,qDACLS,QAAK,yCAAeW,EAAAA,aAAAA,EAAAA,YAAAA,MAAAA,EAAAA,UAAW,yB,EAEhCF,EAAAA,GAAAA,GAMM,MANNwwC,GAMM,EALJJ,EAAAA,GAAAA,IAGEQ,EAAAA,CAFA9xC,MAAM,OACNqJ,KAAK,c,SACL,KACF,SAAGjI,EAAAA,GAAG,mBAAD,cAjEkB,YAD/BJ,EAAAA,GAAAA,IAmDM,MAnDNC,GAmDM,EA/CJC,EAAAA,GAAAA,GA8CM,MA9CNyvC,GA8CM,EA7CJzvC,EAAAA,GAAAA,GAaM,OAZJlB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,iCAAgC,iBACXh0C,EAAAA,YAC1BX,QAAK,yCAAeW,EAAAA,aAAAA,EAAAA,YAAAA,MAAAA,EAAAA,UAAW,yB,EAEhCF,EAAAA,GAAAA,GAOM,MAPN0vC,GAOM,qBANDxvC,EAAAA,GAAG,mBAAoB,IAC1B,GACQA,EAAAA,WAAQ,YADhBuwC,EAAAA,GAAAA,IAIEG,EAAAA,C,MAFAzoC,KAAK,QACLrJ,MAAM,iB,uBAIZkB,EAAAA,GAAAA,GAsBM,MAtBN6vC,GAsBM,iBArBJ/vC,EAAAA,GAAAA,IAoBM8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IAnBc1vC,EAAAA,UAAQ,SAAnBwmB,G,mBADT5mB,EAAAA,GAAAA,IAoBM,OAlBH+G,IAAK6f,EAAQvtB,GACd2F,MAAM,iB,EAENkB,EAAAA,GAAAA,GAEO,OAFP8vC,GAEO,EADL9vC,EAAAA,GAAAA,GAAkC,OAA5By4C,IAAK/xB,EAAQyyB,OAAOrB,Q,cAE5B93C,EAAAA,GAAAA,GAWM,MAXNgwC,GAWM,EAVJI,EAAAA,GAAAA,IAKcC,EAAAA,CAJZvxC,MAAM,aACLg+B,GAAI58B,EAAAA,gBAAgBwmB,EAAQyyB,S,oBAE7B,iBAA6B,qBAA1BzyB,EAAQyyB,OAAOjvB,UAAQ,G,sBAE5B+lB,IACAjwC,EAAAA,GAAAA,GAEO,OAFPkxC,IAEO,SADFxqB,EAAQtoB,MAAI,M,aAKvB4B,EAAAA,GAAAA,GAOM,MAPNmwC,GAOM,YANJnwC,EAAAA,GAAAA,GAKE,Y,qDAJSE,EAAAA,eAAc,IACvBpB,MAAM,uBACNs6C,KAAK,IACJC,QAAK,0CAAQn5C,EAAAA,OAAOA,EAAAA,eAAc,gB,kBAH1BA,EAAAA,wB,4GGgDbpB,MAAM,e,IAKNA,MAAM,W,UAMNA,MAAM,mB,kCCtGZ,UACEQ,QAAS,CACPg6C,aAAY,YAAmB,IAAfC,EAAK,EAALA,MAAOf,EAAC,EAADA,EAAGgB,EAAC,EAADA,EACxBh6C,KAAKs5C,IAAIQ,aAAa,CAAEC,MAAAA,EAAOf,EAAAA,EAAGgB,EAAAA,GACpC,GAEF3D,QAAO,WAEE4D,GAAAA,CACT,GCJF,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,yCCJzD35C,EAAAA,GAAAA,IAMa,cANbg0C,EAAAA,GAAAA,IAMa,CALXh1C,MAAM,qBACEoB,EAAAA,QACRw5C,EAAAA,GAAAA,IAAMx5C,EAAW,YAAD,MAEhBgzC,EAAAA,GAAAA,IAAQhzC,EAAAA,OAAAA,YAAAA,G,iCCENy5C,GAAa,SAACC,EAAUC,GAAQ,MAAK,CAACA,EAAS,GAAKD,EAAS,GAAIC,EAAS,GAAKD,EAAS,GAAG,EAI3FE,GAAkB,SAAA/gD,GAAC,MAFG,EAATghD,EAEqBhhD,EAAEihD,QAAQ,IAFfC,QAASF,EAAMG,SAA/B,IAAAH,CAEkC,EAE/CI,GAAoB,SAAAphD,GAAC,MAAI,CAACA,EAAEqhD,QAASrhD,EAAEshD,QAAQ,EAE/CC,GAAe,SAAAt8C,GAAC,OAAIhD,KAAKu/C,KAAKv8C,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAG,EAExDw8C,GAAgB,SAAAx8C,GAAC,MAAI,CAACA,EAAE,IAAKA,EAAE,GAAG,EAElCy8C,GAAa,SAACC,EAAIC,GAAE,OAAKD,EAAG,GAAKC,EAAG,GAAKD,EAAG,GAAKC,EAAG,EAAE,EAEtDC,GAAU,SAACF,EAAIC,GACnB,IAAME,EAAUJ,GAAWC,EAAIC,GAAMF,GAAWE,EAAIA,GACpD,MAAO,CAACE,EAASF,EAAG,GAAIE,EAASF,EAAG,GACtC,EAqLA,SAXuB,CACrBG,eAnMqB,EAAE,EAAG,GAoM1BC,gBAnMsB,CAAC,EAAG,GAoM1BC,aAnMmB,CAAC,GAAI,GAoMxBC,eAnMqB,CAAC,EAAG,GAoMzBC,aAvKmB,SAACC,EAAWC,GAA0D,IAAjDC,EAAY,UAAH,6CAAG,GAAIC,EAAyB,UAAH,6CAAG,EACjF,MAAO,CACLH,UAAAA,EACAC,QAAAA,EACAC,UAAAA,EACAC,uBAAAA,EACAC,UAAW,CAAC,EAAG,GACfC,UAAU,EAEd,EA+JEC,WA7JiB,SAACn3C,EAAOo3C,GACzBA,EAAQH,UAAYzB,GAAgBx1C,GACpCo3C,EAAQF,UAAW,CACrB,EA2JEG,YAzJkB,SAACr3C,EAAOo3C,GAC1B,GAAKA,EAAQF,SAAb,CAEA,IAAMI,EAAQjC,GAAW+B,EAAQH,UAAWzB,GAAgBx1C,IAC5D,KAAIg2C,GAAasB,GAASF,EAAQL,WAE9BZ,GAAWmB,EAAOF,EAAQP,WAAa,GAA3C,CAEA,IAAMU,EAAajB,GAAQgB,EAAOF,EAAQP,WACpCW,EAAmBtB,GAAckB,EAAQP,WACzCY,EAAuBnB,GAAQgB,EAAOE,GAE1CxB,GAAauB,GAAcH,EAAQJ,uBACnChB,GAAayB,KAGfL,EAAQN,UACRM,EAAQF,UAAW,EAXiC,CALvB,CAiB/B,EAwIEQ,qBAtIwB,WAOxB,cAUG,IATDb,EAAS,EAATA,UAEAc,EAAoB,EAApBA,qBACAC,EAAgB,EAAhBA,iBACAC,EAAmB,EAAnBA,oBACAC,EAAsB,EAAtBA,uBAAsB,IACtBf,UAAAA,OAAS,IAAG,KAAE,MACdC,uBAAAA,OAAsB,IAAG,IAAG,MAC5Be,sBAAAA,OAAqB,IAAG,IAAC,mBAEzB,IAAMC,EAAM,WAAO,EACnB98C,KAAK27C,UAAYA,EACjB37C,KAAKy8C,qBAAuBA,GAAwBK,EACpD98C,KAAK08C,iBAAmBA,GAAoBI,EAC5C98C,KAAK28C,oBAAsBA,GAAuBG,EAClD98C,KAAK48C,uBAAyBA,GAA0BE,EACxD98C,KAAK67C,UAAiC,mBAAdA,EAA2BA,EAAY,kBAAMA,CAAS,EAC9E77C,KAAK68C,sBAAyD,mBAA1BA,EAAuCA,EAAwB,kBAAMA,CAAqB,EAC9H78C,KAAK87C,uBAAyBA,EAC9B97C,KAAK+8C,QACP,CA+FC,OA/FA,+BAED,WACE/8C,KAAK+7C,UAAY,CAAC,EAAG,GACrB/7C,KAAKg9C,YAAc,EACnBh9C,KAAKg8C,UAAW,EAChBh8C,KAAKi9C,SAAU,EACfj9C,KAAKk9C,mBAAoB,CAC3B,GAAC,mBAED,SAAOp4C,GArGW,IAuGZA,EAAMq4C,SAIVn9C,KAAK+7C,UAAYpB,GAAkB71C,GACnC9E,KAAKg9C,WAAal4C,EAAMs4C,UACxBp9C,KAAKg8C,UAAW,EAChBh8C,KAAKi9C,SAAU,EACjB,GAAC,kBAED,SAAMn4C,GACJ,GAAI9E,KAAKg8C,UAAYh8C,KAAKg9C,aAAel4C,EAAMs4C,UAAW,CACxDp9C,KAAKi9C,SAAU,EAEf,IAAMI,EAAQ1C,GAAkB71C,GAC1Bs3C,EAAQjC,GAAWn6C,KAAK+7C,UAAWsB,GAEzCr9C,KAAKy8C,qBAAqBL,EAC5B,CACF,GAAC,oBAED,SAAQt3C,GACD9E,KAAKg8C,UAAYh8C,KAAKg9C,aAAel4C,EAAMs4C,WAIhDp9C,KAAK28C,qBACP,GAAC,iBAED,SAAK73C,GAAO,WACV,GAAK9E,KAAKg8C,UAINh8C,KAAKg9C,aAAel4C,EAAMs4C,UAA9B,CAIAp9C,KAAKg8C,UAAW,EAGhB,IAAMqB,EAAQ1C,GAAkB71C,GAC1Bs3C,EAAQjC,GAAWn6C,KAAK+7C,UAAWsB,GAEnCC,EAAQ,WACZ,GAAIxC,GAAasB,GAAS,EAAKP,YAC7B,OAAO,EAGT,IAAM0B,EAAatC,GAAWmB,EAAO,EAAKT,WAAa,EAGjDU,EAAajB,GAAQgB,EAAO,EAAKT,WACjCW,EAAmBtB,GAAc,EAAKW,WACtCY,EAAuBnB,GAAQgB,EAAOE,GAC5C,OACExB,GAAauB,GAAc,EAAKP,uBAC9BhB,GAAayB,GAER,EAGFgB,EAAa,GAAK,CAC3B,CAnBc,GAqBVv9C,KAAKi9C,SACPj9C,KAAK08C,iBAAiBY,GAExBt9C,KAAK+8C,SAKDjC,GAAasB,IAAUp8C,KAAK68C,yBAAiD,UAAtB/3C,EAAM04C,cAC/Dx9C,KAAKk9C,mBAAoB,EAtC3B,CAwCF,GAAC,mBAED,SAAOp4C,GACA9E,KAAKk9C,mBACRl9C,KAAK48C,yBAEP58C,KAAK+8C,QACP,KAAC,EA3HuB,ICqB1B,GA7DmB,CACjBx9C,MAAO,CACLo8C,UAAW,CACTj8C,KAAMrB,OAERw9C,UAAW,CACTn8C,KAAMkH,SACN/G,QAAS,kBAAM,EAAE,GAEnBg9C,sBAAuB,CACrBn9C,KAAMkH,SACN/G,QAAS,kBAAM,CAAC,GAElBi8C,uBAAwB,CACtBp8C,KAAM2Z,OACNxZ,QAAS,IAGbC,QAAS,CACP29C,kBAAiB,SAAE34C,GACjB9E,KAAK09C,SAAS5vC,MAAMhJ,EACtB,EACA64C,kBAAiB,SAAE74C,GACjB9E,KAAK09C,SAAShqB,KAAK5uB,EACrB,EACA84C,gBAAe,SAAE94C,GACf9E,KAAK09C,SAASxvC,IAAIpJ,EACpB,EACA+4C,oBAAmB,SAAE/4C,GACnB9E,KAAK09C,SAASI,OAAOh5C,EACvB,EACAi5C,kBAAiB,SAAEj5C,GACjB9E,KAAK09C,SAASM,MAAMl5C,EACtB,EACAm5C,QAAO,SAAEC,GACPl+C,KAAK+E,MAAM,oBAAqBm5C,EAClC,EACAhwC,IAAG,SAAEovC,GACHt9C,KAAK+E,MAAM,iBAAkBu4C,EAC/B,EACAU,MAAK,WACHh+C,KAAK+E,MAAM,oBACb,EACA+4C,OAAM,WACJ99C,KAAK+E,MAAM,iBACb,GAEFsxC,QAAO,WACLr2C,KAAK09C,SAAW,IAAIS,GAAAA,qBAAoC,CACtDxC,UAAW37C,KAAK27C,UAChBE,UAAW77C,KAAK67C,UAChBgB,sBAAuB78C,KAAK68C,sBAC5Bf,uBAAwB97C,KAAK87C,uBAC7BW,qBAAsBz8C,KAAKi+C,QAC3BvB,iBAAkB18C,KAAKkO,IACvByuC,oBAAqB38C,KAAK89C,OAC1BlB,uBAAwB58C,KAAKg+C,OAEjC,GChFF,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,yCCJzD19C,EAAAA,GAAAA,IASM,OATNg0C,EAAAA,GAAAA,IACU5zC,EAQJ,OARU,CACb09C,cAAW,8BAAE19C,EAAAA,mBAAAA,EAAAA,kBAAAA,MAAAA,EAAAA,UAAiB,GAC9B29C,cAAW,8BAAE39C,EAAAA,mBAAAA,EAAAA,kBAAAA,MAAAA,EAAAA,UAAiB,GAC9B49C,YAAS,8BAAE59C,EAAAA,iBAAAA,EAAAA,gBAAAA,MAAAA,EAAAA,UAAe,GAC1B69C,gBAAa,8BAAE79C,EAAAA,qBAAAA,EAAAA,oBAAAA,MAAAA,EAAAA,UAAmB,GAClCX,QAAK,8BAAEW,EAAAA,mBAAAA,EAAAA,kBAAAA,MAAAA,EAAAA,UAAiB,K,EAEzBgzC,EAAAA,GAAAA,IAAQhzC,EAAAA,OAAAA,YAAAA,G,qBCOZi5B,GAAAA,GAAAA,IACE6kB,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACA9kB,GAAAA,KAwIF,SArImB,CACjB/4B,WAAY,CACV89C,WAAAA,GAAAA,EACAC,gBAAAA,GAAAA,EACA3E,UAAAA,GACA4E,WAAAA,GACAhlB,MAAAA,GAAAA,EACAilB,MAAAA,GAAAA,GAEF7kD,KAAI,WACF,MAAO,CACL8e,SAAS,EACTgmC,eAAgBZ,GAAAA,eAChBa,eAAgB,WAEd,OAAO5+C,OAAOooB,YADgB,EAAI,EAEpC,EACAy2B,kBAAmB,EACnBC,yBAA0B,IAE9B,EACAh4C,SAAU,CACRi4C,QAAO,WACL,OAAOn/C,KAAKyvC,OAAOtzC,MAAMomC,YAAYE,SACvC,EACAxoB,MAAK,WACH,OAAOja,KAAKyvC,OAAOtzC,MAAMomC,YAAYtoB,KACvC,EACAmlC,YAAW,WACT,OAAOp/C,KAAKq/C,aAAaD,WAC3B,EACA5c,aAAY,WACV,OAAOxiC,KAAKyvC,OAAOtzC,MAAMomC,YAAYC,YACvC,EACA6c,aAAY,WACV,OAAOr/C,KAAKia,MAAMja,KAAKwiC,aACzB,EACA8c,YAAW,WACT,OAAOt/C,KAAKia,MAAM5e,OAAS,CAC7B,EACAqE,KAAI,WACF,OAAOM,KAAKq/C,aAAer/C,KAAKu/C,QAAQv/C,KAAKq/C,cAAgB,IAC/D,EACAG,2BAA0B,WAAI,WAG5B,OAAO,kBAAM,EAAKF,YAAc,EAAI,EAAE,CACxC,GAEFx/C,QAAS,CACPy/C,QAAO,SAAEtlC,GACP,OAAO2oB,GAAAA,EAAAA,SAAyB3oB,EAAM4oB,SACxC,EACA4c,KAAI,WAAI,WAIN9iD,YAAW,WACT,EAAK8yC,OAAOvzC,SAAS,mBACvB,GAHuB,IAIzB,EACAwjD,gBAAe,SAAE56C,GAEf,IAAM66C,EAAO3/C,KAAKkI,MAAM03C,WACnBD,EAGHA,EAAKjC,SAASM,MAAMl5C,GAFpB9E,KAAKy/C,MAIT,EACAI,OAAM,WACJ,GAAI7/C,KAAKs/C,YAAa,CACpB,IAAMQ,EAAkC,IAAtB9/C,KAAKwiC,aAAqBxiC,KAAKia,MAAM5e,OAAS,EAAK2E,KAAKwiC,aAAe,EACnFud,EAAW//C,KAAKia,MAAM6lC,GACG,UAA3B9/C,KAAKu/C,QAAQQ,KACf//C,KAAK+Y,SAAU,GAEjB/Y,KAAKyvC,OAAOvzC,SAAS,kBAAmB6jD,EAC1C,CACF,EACAC,OAAM,WACJ,GAAIhgD,KAAKs/C,YAAa,CACpB,IAAMW,EAAYjgD,KAAKwiC,eAAiBxiC,KAAKia,MAAM5e,OAAS,EAAI,EAAK2E,KAAKwiC,aAAe,EACnFud,EAAW//C,KAAKia,MAAMgmC,GACG,UAA3BjgD,KAAKu/C,QAAQQ,KACf//C,KAAK+Y,SAAU,GAEjB/Y,KAAKyvC,OAAOvzC,SAAS,kBAAmB6jD,EAC1C,CACF,EACAG,cAAa,WACXlgD,KAAK+Y,SAAU,CACjB,EACAonC,mBAAkB,SAAEjC,GAClBl+C,KAAKkI,MAAMk4C,UAAUtG,aAAa,CAAEC,MAAO,EAAGf,EAAGkF,EAAQ,GAAIlE,EAAG,GAClE,EACAqG,eAAc,SAAE/C,GACdt9C,KAAKkI,MAAMk4C,UAAUtG,aAAa,CAAEC,MAAO,EAAGf,EAAG,EAAGgB,EAAG,IACnDsD,EAAO,EACTt9C,KAAKggD,SACI1C,EAAO,GAChBt9C,KAAK6/C,QAET,EACAS,iBAAgB,SAAE/mD,GACZyG,KAAKm/C,SAAyB,KAAd5lD,EAAEgnD,SACpBvgD,KAAKy/C,MAET,EACAe,mBAAkB,SAAEjnD,GACbyG,KAAKm/C,UAIQ,KAAd5lD,EAAEgnD,QACJvgD,KAAKggD,SACkB,KAAdzmD,EAAEgnD,SACXvgD,KAAK6/C,SAET,GAEF/G,QAAO,WACL14C,OAAOk4B,iBAAiB,WAAYt4B,KAAKy/C,MACzC5yC,SAASyrB,iBAAiB,QAASt4B,KAAKsgD,kBACxCzzC,SAASyrB,iBAAiB,UAAWt4B,KAAKwgD,mBAC5C,EACAC,UAAS,WACPrgD,OAAOsgD,oBAAoB,WAAY1gD,KAAKy/C,MAC5C5yC,SAAS6zC,oBAAoB,QAAS1gD,KAAKsgD,kBAC3CzzC,SAAS6zC,oBAAoB,UAAW1gD,KAAKwgD,mBAC/C,GChJF,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,mLTLjD9/C,EAAAA,UAAO,YADfuwC,EAAAA,GAAAA,IA+GQ0P,EAAAA,C,MA7GNrhD,MAAM,mBACLshD,kBAAiBlgD,EAAAA,iB,oBAElB,iBA8Ba,CA7BI,UAATA,EAAAA,OAAI,YADZuwC,EAAAA,GAAAA,IA8Ba4P,EAAAA,C,MA5BXnQ,IAAI,aACJpxC,MAAM,wBACLq8C,UAAWj7C,EAAAA,eACXm7C,UAAWn7C,EAAAA,eACX,0BAAyBA,EAAAA,2BACzBogD,mBAAmBpgD,EAAAA,mBACnBqgD,gBAAgBrgD,EAAAA,eAChBsgD,mBAAmBtgD,EAAAA,M,oBAEpB,iBAkBY,EAlBZkwC,EAAAA,GAAAA,IAkBYqQ,EAAAA,CAjBVvQ,IAAI,YACJpxC,MAAM,8BACN4hD,SAAS,eACT,2BAAyB,QACzB,yBAAuB,wBACtB,sBAAqBxgD,EAAAA,kBACrB,YAAWA,EAAAA,kBACX,2BAA0BA,EAAAA,0B,oBAE3B,iBAOC,EAPDF,EAAAA,GAAAA,GAOC,OANElB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAAA,CAAA37B,QAAIrY,EAAAA,SACJ,gBACLu4C,IAAKv4C,EAAAA,aAAalB,IAClB2hD,IAAKzgD,EAAAA,aAAa0+C,YAClBtyC,MAAOpM,EAAAA,aAAa0+C,YACpBgC,OAAI,8BAAE1gD,EAAAA,eAAAA,EAAAA,cAAAA,MAAAA,EAAAA,UAAa,I,qOAKT,UAATA,EAAAA,OAAI,YADZuwC,EAAAA,GAAAA,IAKEoQ,EAAAA,C,MAHA/hD,MAAM,cACLg3B,WAAY51B,EAAAA,aACZ4gD,UAAU,G,yCAGI,UAAT5gD,EAAAA,OAAI,YADZJ,EAAAA,GAAAA,IAOE,S,MALAhB,MAAM,cACL25C,IAAKv4C,EAAAA,aAAalB,IAClB2hD,IAAKzgD,EAAAA,aAAa0+C,YAClBtyC,MAAOpM,EAAAA,aAAa0+C,YACrBkC,SAAA,I,6BAGe,UAAT5gD,EAAAA,OAAI,YADZuwC,EAAAA,GAAAA,IAMEsQ,EAAAA,C,MAJAjiD,MAAM,cACL25C,IAAKv4C,EAAAA,aAAalB,IAClB2hD,IAAKzgD,EAAAA,aAAa0+C,YAClBtyC,MAAOpM,EAAAA,aAAa0+C,a,gDAGf1+C,EAAAA,cAAW,YADnBJ,EAAAA,GAAAA,IAUS,U,MARNwM,MAAOpM,EAAAA,GAAG,wBACXpB,MAAM,0EACLS,QAAK,yCAAeW,EAAAA,QAAAA,EAAAA,OAAAA,MAAAA,EAAAA,UAAM,yB,EAE3BkwC,EAAAA,GAAAA,IAGEQ,EAAAA,CAFA9xC,MAAM,yBACNqJ,KAAK,kB,wBAIDjI,EAAAA,cAAW,YADnBJ,EAAAA,GAAAA,IAUS,U,MARNwM,MAAOpM,EAAAA,GAAG,oBACXpB,MAAM,0EACLS,QAAK,yCAAeW,EAAAA,QAAAA,EAAAA,OAAAA,MAAAA,EAAAA,UAAM,yB,EAE3BkwC,EAAAA,GAAAA,IAGEQ,EAAAA,CAFA9xC,MAAM,yBACNqJ,KAAK,mB,yBAGTnI,EAAAA,GAAAA,GASS,UARPlB,MAAM,2CACLwN,MAAOpM,EAAAA,GAAG,oBACVX,QAAK,yCAAeW,EAAAA,MAAAA,EAAAA,KAAAA,MAAAA,EAAAA,UAAI,yB,EAEzBkwC,EAAAA,GAAAA,IAGEQ,EAAAA,CAFA9xC,MAAM,cACNqJ,KAAK,W,MAKDjI,EAAAA,cAAW,YADnBJ,EAAAA,GAAAA,IAKO,OALPmxC,IAKO,SADF/wC,EAAAA,aAAW,sBAEhBF,EAAAA,GAAAA,GAIO,OAJPgwC,IAIO,SADF9vC,EAAAA,IAAI,sBAAuBA,EAAAA,aAAe,EAAG,CAANoiC,QAAiBpiC,EAAAA,aAAe,EAAH8gD,MAAa9gD,EAAAA,MAAMrF,UAAM,GAG1FqF,EAAAA,UAAO,YADfJ,EAAAA,GAAAA,IASO,OATPmwC,GASO,EALLG,EAAAA,GAAAA,IAIEQ,EAAAA,CAHAqQ,KAAA,GACA94C,KAAK,eACLgpC,KAAK,W,sFUnFHryC,MAAM,4B,gCA0DFA,MAAM,4B,qBA6BNA,MAAM,4B,IAsERmB,KAAK,iCACLE,OAAO,U,UAuBLrB,MAAM,4B,ykBCzLpBq6B,GAAAA,GAAAA,IACE+nB,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAjM,GAAAA,IACAC,GAAAA,IACAiM,GAAAA,IACAzL,GAAAA,IACA0L,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAnM,GAAAA,IACAoM,GAAAA,IACAlM,GAAAA,KAuFF,SApFmB,CACjBx2C,MAAO,CAAC,UACRtF,KAAM,iBAAO,CACXioD,QAAQ,EACRC,kBAAc59C,EACf,EACD8xC,QAAO,WACLr2C,KAAKmiD,aAAehE,GAAAA,aAA4BA,GAAAA,eAA+Bn+C,KAAKoiD,cAEhFpiD,KAAK2N,aAAe3N,KAAK2N,YAAY8nB,QACvCz1B,KAAKyvC,OAAOvzC,SAAS,8BAEzB,EACA2E,WAAY,CAAEwxC,SAAAA,GAAAA,GACdnrC,SAAU,OACRyG,YAAW,WACT,OAAO3N,KAAKyvC,OAAOtzC,MAAMa,MAAM2Q,WACjC,EACA2pC,MAAK,WAAM,OAAOt3C,KAAKyvC,OAAOtzC,MAAMm7C,MAAMtX,MAAO,EACjDqiB,oBAAmB,WACjB,OAAOC,EAAAA,EAAAA,IAA6BtiD,KAAKyvC,OAC3C,EACA8S,yBAAwB,WACtB,OAAOviD,KAAKqiD,oBAAoBhnD,MAClC,EACAmY,mBAAkB,WAChB,OAAOxT,KAAKyvC,OAAOtzC,MAAM4Q,SAASyG,kBACpC,EACAtC,KAAI,WACF,OAAOlR,KAAKyvC,OAAOtzC,MAAM4Q,SAASmE,IACpC,EACAb,aAAY,WACV,OAAOrQ,KAAKyvC,OAAOtzC,MAAM4Q,SAASsD,YACpC,EACAmyC,SAAQ,WACN,OAAOxiD,KAAKyvC,OAAOtzC,MAAM4Q,SAASrR,IACpC,EACAq7B,mBAAkB,WAChB,OAAO/2B,KAAKyvC,OAAOtzC,MAAMimB,IAAI0U,eAAez7B,MAC9C,EACA+5C,YAAW,WACT,OAAOp1C,KAAKyvC,OAAOtzC,MAAM4Q,SAAQ,OACnC,EACAsoC,WAAU,WACR,OAAOr1C,KAAKyvC,OAAOtzC,MAAM4Q,SAASsoC,UACpC,EACAoN,eAAc,WACZ,IAAI/mD,EAKJ,OAJIsE,KAAKyvC,OAAOtzC,MAAK,UAAWgP,eAC9BzP,EAAOsE,KAAKyvC,OAAOtzC,MAAK,UAAWgP,cAErCzP,EAAOsE,KAAK2N,YAAc,UAAY,kBAClC+kC,GAAgBzvC,IAAIvH,GACf,CAAEA,KAAAA,EAAMo5B,OAAQ,CAAEpK,SAAU1qB,KAAK2N,YAAYzQ,cAE7C,CAAExB,KAAAA,EAEb,IACGiM,EAAAA,EAAAA,IAAS,CACV0L,6BAA8B,SAAAlX,GAAK,OAAIA,EAAM4Q,SAASsG,4BAA4B,EAClF83B,sBAAuB,SAAAhvC,GAAK,OAAIA,EAAM+uC,cAAcC,qBAAqB,MAExEgE,EAAAA,EAAAA,IAAW,CAAC,kBAAmB,6BAEpCrvC,QAAS,CACPsiD,aAAY,WACVpiD,KAAKkiD,QAAUliD,KAAKkiD,MACtB,EACAQ,SAAQ,WACN1iD,KAAKi1B,SACLj1B,KAAKoiD,cACP,EACAO,WAAU,SAAEppD,GACV4kD,GAAAA,WAA0B5kD,EAAGyG,KAAKmiD,aACpC,EACAS,UAAS,SAAErpD,GACT4kD,GAAAA,YAA2B5kD,EAAGyG,KAAKmiD,aACrC,EACAp2C,kBAAiB,WACf/L,KAAKyvC,OAAOvzC,SAAS,oBACvB,IC7GJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,sHFNzDoE,EAAAA,GAAAA,IAsPM,OArPJhB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,wBAAuB,gCACah0C,EAAAA,OAAM,8BAAiCA,EAAAA,W,EAEjFF,EAAAA,GAAAA,GAGE,OAFAlB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,qBAAoB,6BACah0C,EAAAA,W,SAEzCF,EAAAA,GAAAA,GAwOM,OAvOJlB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,cAAa,sBACYh0C,EAAAA,UAC9BmiD,aAAU,gCAAEniD,EAAAA,YAAAA,EAAAA,WAAAA,MAAAA,EAAAA,UAAU,GACtBoiD,YAAS,gCAAEpiD,EAAAA,WAAAA,EAAAA,UAAAA,MAAAA,EAAAA,UAAS,I,EAErBF,EAAAA,GAAAA,GAgBM,OAfJlB,MAAM,sBACLS,QAAK,8BAAEW,EAAAA,cAAAA,EAAAA,aAAAA,MAAAA,EAAAA,UAAY,I,CAGZA,EAAAA,cAAW,YADnBuwC,EAAAA,GAAAA,IAIEqB,EAAAA,C,MAFC,UAAS5xC,EAAAA,YAAY/G,GACrB,YAAU,G,mCAEb2G,EAAAA,GAAAA,IAMM,MANNC,GAMM,EAFJC,EAAAA,GAAAA,GAAiB,OAAXy4C,IAAKv4C,EAAAA,MAAI,WACFA,EAAAA,cAAyB,kBAAb,YAAzBJ,EAAAA,GAAAA,IAAgD,oBAAlBI,EAAAA,UAAQ,UAG1CF,EAAAA,GAAAA,GA0DK,WAxDME,EAAAA,a,kBAAW,YADpBJ,EAAAA,GAAAA,IAWK,M,MATFP,QAAK,8BAAEW,EAAAA,cAAAA,EAAAA,aAAAA,MAAAA,EAAAA,UAAY,I,EAEpBkwC,EAAAA,GAAAA,IAMcC,EAAAA,CANAvT,GAAI,CAAA5hC,KAAAA,UAAiB,C,mBACjC,iBAIE,EAJFk1C,EAAAA,GAAAA,IAIEQ,EAAAA,CAHA,iBACA9xC,MAAM,8BACNqJ,KAAK,iB,SACL,KAAC,SAAGjI,EAAAA,GAAG,gBAAD,G,aAIJA,EAAAA,cAAgBA,EAAAA,cAAW,YADnCJ,EAAAA,GAAAA,IAWK,M,MATFP,QAAK,8BAAEW,EAAAA,cAAAA,EAAAA,aAAAA,MAAAA,EAAAA,UAAY,I,EAEpBkwC,EAAAA,GAAAA,IAMcC,EAAAA,CANAvT,GAAI58B,EAAAA,gBAAc,C,mBAC9B,iBAIE,EAJFkwC,EAAAA,GAAAA,IAIEQ,EAAAA,CAHA,iBACA9xC,MAAM,8BACNqJ,KAAK,U,SACL,KAAC,SAAGjI,EAAAA,GAAG,kBAAD,G,uCAIJA,EAAAA,cAAW,YADnBJ,EAAAA,GAAAA,IAWK,M,MATFP,QAAK,8BAAEW,EAAAA,cAAAA,EAAAA,aAAAA,MAAAA,EAAAA,UAAY,I,EAEpBkwC,EAAAA,GAAAA,IAMcC,EAAAA,CANAvT,GAAI,CAAA5hC,KAAAA,UAAiB,C,mBACjC,iBAIE,EAJFk1C,EAAAA,GAAAA,IAIEQ,EAAAA,CAHA,iBACA9xC,MAAM,8BACNqJ,KAAK,U,SACL,KAAC,SAAGjI,EAAAA,GAAG,cAAD,G,8BAIJA,EAAAA,aAAeA,EAAAA,+BAA4B,YADnDJ,EAAAA,GAAAA,IAoBK,M,MAlBFP,QAAK,8BAAEW,EAAAA,cAAAA,EAAAA,aAAAA,MAAAA,EAAAA,UAAY,I,EAEpBkwC,EAAAA,GAAAA,IAecC,EAAAA,CAdXvT,GAAE,CAAA5hC,KAAAA,QAAAo5B,OAAAA,CAAApK,SAAuChqB,EAAAA,YAAYxD,cACtD6lD,MAAA,uB,oBAEA,iBAIE,EAJFnS,EAAAA,GAAAA,IAIEQ,EAAAA,CAHA,iBACA9xC,MAAM,8BACNqJ,KAAK,c,SACL,KAAC,SAAGjI,EAAAA,GAAG,cAAe,IACxB,GACQA,EAAAA,kBAAe,YADvBJ,EAAAA,GAAAA,IAKO,OALP+vC,IAKO,SADF3vC,EAAAA,iBAAe,qB,yCAKhBA,EAAAA,cAAW,YAArBJ,EAAAA,GAAAA,IAwCK,UAvCHE,EAAAA,GAAAA,GAQK,MARAT,QAAK,8BAAEW,EAAAA,cAAAA,EAAAA,aAAAA,MAAAA,EAAAA,UAAY,I,EACtBkwC,EAAAA,GAAAA,IAMcC,EAAAA,CANAvT,GAAE,CAAA5hC,KAAAA,eAAAo5B,OAAAA,CAAApK,SAA8ChqB,EAAAA,YAAYxD,e,oBACxE,iBAIE,EAJF0zC,EAAAA,GAAAA,IAIEQ,EAAAA,CAHA,iBACA9xC,MAAM,8BACNqJ,KAAK,U,SACL,KAAC,SAAGjI,EAAAA,GAAG,qBAAD,G,qBAIJA,EAAAA,YAAY+0B,SAAM,YAD1Bn1B,EAAAA,GAAAA,IAiBK,M,MAfFP,QAAK,8BAAEW,EAAAA,cAAAA,EAAAA,aAAAA,MAAAA,EAAAA,UAAY,I,EAEpBkwC,EAAAA,GAAAA,IAYcC,EAAAA,CAZDvT,GAAG,oBAAkB,C,mBAChC,iBAIE,EAJFsT,EAAAA,GAAAA,IAIEQ,EAAAA,CAHA,iBACA9xC,MAAM,8BACNqJ,KAAK,e,SACL,KAAC,SAAGjI,EAAAA,GAAG,wBAAyB,IAClC,GACQA,EAAAA,mBAAqB,IAAH,YAD1BJ,EAAAA,GAAAA,IAKO,OALPmxC,IAKO,SADF/wC,EAAAA,oBAAkB,qB,8BAKnBA,EAAAA,QAAK,YADbJ,EAAAA,GAAAA,IAWK,M,MATFP,QAAK,8BAAEW,EAAAA,cAAAA,EAAAA,aAAAA,MAAAA,EAAAA,UAAY,I,EAEpBkwC,EAAAA,GAAAA,IAMcC,EAAAA,CANAvT,GAAI,CAAA5hC,KAAAA,gBAAuB,C,mBACvC,iBAIE,EAJFk1C,EAAAA,GAAAA,IAIEQ,EAAAA,CAHA,iBACA9xC,MAAM,8BACNqJ,KAAK,c,SACL,KAAC,SAAGjI,EAAAA,GAAG,mBAAD,G,mDAIdF,EAAAA,GAAAA,GA4GK,WA1GKE,EAAAA,cAAgBA,EAAAA,cAAW,YADnCJ,EAAAA,GAAAA,IAWK,M,MATFP,QAAK,8BAAEW,EAAAA,cAAAA,EAAAA,aAAAA,MAAAA,EAAAA,UAAY,I,EAEpBkwC,EAAAA,GAAAA,IAMcC,EAAAA,CANAvT,GAAI,CAAA5hC,KAAAA,WAAkB,C,mBAClC,iBAIE,EAJFk1C,EAAAA,GAAAA,IAIEQ,EAAAA,CAHA,iBACA9xC,MAAM,8BACNqJ,KAAK,Y,SACL,KAAC,SAAGjI,EAAAA,GAAG,eAAD,G,8BAIJA,EAAAA,aAAeA,EAAAA,qBAAkB,YADzCJ,EAAAA,GAAAA,IAWK,M,MATFP,QAAK,8BAAEW,EAAAA,cAAAA,EAAAA,aAAAA,MAAAA,EAAAA,UAAY,I,EAEpBkwC,EAAAA,GAAAA,IAMcC,EAAAA,CANAvT,GAAI,CAAA5hC,KAAAA,kBAAyB,C,mBACzC,iBAIE,EAJFk1C,EAAAA,GAAAA,IAIEQ,EAAAA,CAHA,iBACA9xC,MAAM,8BACNqJ,KAAK,e,SACL,KAAC,SAAGjI,EAAAA,GAAG,sBAAD,G,+BAGZF,EAAAA,GAAAA,GAWK,MAXAT,QAAK,gCAAEW,EAAAA,cAAAA,EAAAA,aAAAA,MAAAA,EAAAA,UAAY,I,EACtBF,EAAAA,GAAAA,GASS,UARPlB,MAAM,mCACLS,QAAK,gCAAEW,EAAAA,mBAAAA,EAAAA,kBAAAA,MAAAA,EAAAA,UAAiB,I,EAEzBkwC,EAAAA,GAAAA,IAIEQ,EAAAA,CAHA,iBACA9xC,MAAM,8BACNqJ,KAAK,S,SACL,KAAC,SAAGjI,EAAAA,GAAG,sBAAD,QAGZF,EAAAA,GAAAA,GAQK,MARAT,QAAK,gCAAEW,EAAAA,cAAAA,EAAAA,aAAAA,MAAAA,EAAAA,UAAY,I,EACtBkwC,EAAAA,GAAAA,IAMcC,EAAAA,CANAvT,GAAI,CAAA5hC,KAAAA,UAAgB,C,mBAChC,iBAIE,EAJFk1C,EAAAA,GAAAA,IAIEQ,EAAAA,CAHA,iBACA9xC,MAAM,8BACNqJ,KAAK,iB,SACL,KAAC,SAAGjI,EAAAA,GAAG,cAAD,G,YAIJA,EAAAA,aAAoC,UAArBA,EAAAA,YAAYsiD,OAAI,YADvC1iD,EAAAA,GAAAA,IAcK,M,MAZFP,QAAK,gCAAEW,EAAAA,cAAAA,EAAAA,aAAAA,MAAAA,EAAAA,UAAY,I,EAEpBF,EAAAA,GAAAA,GASI,IATJgwC,GASI,EALFI,EAAAA,GAAAA,IAIEQ,EAAAA,CAHA,iBACA9xC,MAAM,8BACNqJ,KAAK,oB,SACL,KAAC,SAAGjI,EAAAA,GAAG,uBAAD,yBAIJA,EAAAA,aAAeA,EAAAA,wBAAqB,YAD5CJ,EAAAA,GAAAA,IAmBK,M,MAjBFP,QAAK,gCAAEW,EAAAA,cAAAA,EAAAA,aAAAA,MAAAA,EAAAA,UAAY,I,EAEpBkwC,EAAAA,GAAAA,IAccC,EAAAA,CAbXvT,GAAI,CAAA5hC,KAAAA,kBAAyB,C,mBAE9B,iBAIE,EAJFk1C,EAAAA,GAAAA,IAIEQ,EAAAA,CAHA,iBACA9xC,MAAM,8BACNqJ,KAAK,c,SACL,KAAC,SAAGjI,EAAAA,GAAG,sBAAuB,IAChC,GACQA,EAAAA,0BAAuB,YAD/BJ,EAAAA,GAAAA,IAKO,OALPmwC,IAKO,SADF/vC,EAAAA,yBAAuB,qB,8BAKxBA,EAAAA,cAAW,YADnBJ,EAAAA,GAAAA,IAWK,M,MATFP,QAAK,gCAAEW,EAAAA,cAAAA,EAAAA,aAAAA,MAAAA,EAAAA,UAAY,I,EAEpBkwC,EAAAA,GAAAA,IAMcC,EAAAA,CANAvT,GAAI,CAAA5hC,KAAAA,oBAA2B,C,mBAC3C,iBAIE,EAJFk1C,EAAAA,GAAAA,IAIEQ,EAAAA,CAHA,iBACA9xC,MAAM,8BACNqJ,KAAK,a,SACL,KAAC,SAAGjI,EAAAA,GAAG,wBAAD,G,8BAIJA,EAAAA,cAAW,YADnBJ,EAAAA,GAAAA,IAcK,M,MAZFP,QAAK,gCAAEW,EAAAA,cAAAA,EAAAA,aAAAA,MAAAA,EAAAA,UAAY,I,EAEpBF,EAAAA,GAAAA,GASS,UARPlB,MAAM,mCACLS,QAAK,gCAAEW,EAAAA,UAAAA,EAAAA,SAAAA,MAAAA,EAAAA,UAAQ,I,EAEhBkwC,EAAAA,GAAAA,IAIEQ,EAAAA,CAHA,iBACA9xC,MAAM,8BACNqJ,KAAK,kB,SACL,KAAC,SAAGjI,EAAAA,GAAG,iBAAD,iCAKhBF,EAAAA,GAAAA,GAIE,OAHAlB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,4BAA2B,oCACYh0C,EAAAA,UAC5CX,QAAK,2CAAeW,EAAAA,cAAAA,EAAAA,aAAAA,MAAAA,EAAAA,UAAY,yB,wDG/OvCi5B,GAAAA,GAAAA,IACEspB,GAAAA,KAGF,IAAMC,GAAmB,IAAI/gD,IAAI,CAC/B,QACA,OACA,eAkGF,SA/F+B,CAC7BlI,KAAI,WACF,MAAO,CACLg8B,QAAQ,EACRktB,eAAe,EACfC,aAAa,EACbC,aAAc,EACdC,eAAgB,EAEpB,EACAjN,QAAO,WACDr2C,KAAKujD,4BACPvjD,KAAKwjD,qCAEPpjD,OAAOk4B,iBAAiB,SAAUt4B,KAAKyjD,UACzC,EACAhD,UAAS,WACHzgD,KAAKujD,4BACPvjD,KAAK0jD,uCAEPtjD,OAAOsgD,oBAAoB,SAAU1gD,KAAKyjD,UAC5C,EACAv8C,SAAU,CACRy8C,WAAU,WACR,QAAS3jD,KAAKyvC,OAAOtzC,MAAMa,MAAM2Q,WACnC,EACAi2C,SAAQ,WACN,QAAIV,GAAiBjgD,IAAIjD,KAAK6jD,OAAOnoD,OAE9BsE,KAAKujD,6BAA+BvjD,KAAKi2B,QAAUj2B,KAAKojD,YACjE,EACAU,aAAY,WACV,QAAS9jD,KAAKyvC,OAAOj7B,QAAQ/G,aAAas2C,uBAC5C,EACAR,2BAA0B,WACxB,QAASvjD,KAAKyvC,OAAOj7B,QAAQ/G,aAAa81C,0BAC5C,GAEF3K,MAAO,CACL2K,2BAA4B,SAAUvxB,GAChCA,EACFhyB,KAAKwjD,qCAELxjD,KAAK0jD,sCAET,GAEF5jD,QAAS,CACP0jD,mCAAkC,WAChCpjD,OAAOk4B,iBAAiB,SAAUt4B,KAAKgkD,mBACvC5jD,OAAOk4B,iBAAiB,SAAUt4B,KAAKikD,gBACzC,EACAP,qCAAoC,WAClCtjD,OAAOsgD,oBAAoB,SAAU1gD,KAAKgkD,mBAC1C5jD,OAAOsgD,oBAAoB,SAAU1gD,KAAKikD,gBAC5C,EACAC,aAAY,WACVlkD,KAAKyvC,OAAOvzC,SAAS,sBACvB,EACAunD,UAAS,WASP,IAAMU,EAAa/jD,OAAOooB,WAAa,IACjC47B,EAAmBD,GAAc/jD,OAAOyoB,YAAc,IAGtDw7B,GADeF,GAAc/jD,OAAOooB,WAAa,KACdpoB,OAAOyoB,YAAc,IAE5D7oB,KAAKojD,eADHgB,IAAoBC,EAK1B,EACAL,kBAAmB,MAAS,WACtB5jD,OAAOkkD,QAAUtkD,KAAKqjD,aACxBrjD,KAAKi2B,QAAS,EAEdj2B,KAAKi2B,QAAS,EAEhBj2B,KAAKqjD,aAAejjD,OAAOkkD,OAC7B,GAAG,IAAK,CAAEC,SAAS,EAAMC,UAAU,IAEnCP,gBAAiB,MAAS,WACxBjkD,KAAKi2B,QAAS,EACdj2B,KAAKqjD,aAAejjD,OAAOkkD,OAC7B,GAAG,IAAK,CAAEC,SAAS,EAAOC,UAAU,MClGxC,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,uDCLjD9jD,EAAAA,aAAU,YADlBJ,EAAAA,GAAAA,IAQS,U,MANPhB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,oDAAmD,QACrCh0C,EAAAA,SAAQ,cAAiBA,EAAAA,gBAC5CoM,MAAOpM,EAAAA,GAAG,0BACVX,QAAK,8BAAEW,EAAAA,cAAAA,EAAAA,aAAAA,MAAAA,EAAAA,UAAY,I,EAEpBkwC,EAAAA,GAAAA,IAAqBQ,EAAAA,CAAbzoC,KAAK,SAAK,wB,aCNlBrJ,MAAM,a,IAOCA,MAAM,Q,wCAaLA,MAAM,a,IAIAA,MAAM,c,uBAaZA,MAAM,a,IAYPA,MAAM,+B,IACHA,MAAM,S,IACZkB,EAAAA,GAAAA,GAAuB,QAAjBlB,MAAM,UAAQ,S,0nBCrC5Bq6B,GAAAA,GAAAA,IACEC,GAAAA,IACAgc,GAAAA,IACA6O,GAAAA,IACAC,GAAAA,IACAC,GAAAA,KAkHF,SA/GkB,CAChB9jD,WAAY,CACV+jD,WAAAA,GACAC,cAAAA,GAAAA,QACAvO,eAAAA,GACAwO,aAAAA,GAAAA,GAEF7qD,KAAM,iBAAO,CACX8qD,+BAA2BxgD,EAC3BygD,mBAAmB,EACnBC,oBAAoB,EACpBC,sBAAsB,EACvB,EACD7O,QAAO,WAAI,WACTr2C,KAAK+kD,0BAA4B5G,GAAAA,aAC/BA,GAAAA,iBACA,kBAAM,EAAKgH,0BAAyB,EAAK,GACzC,GAEJ,EACAj+C,SAAU,OACRyG,YAAW,WACT,OAAO3N,KAAKyvC,OAAOtzC,MAAMa,MAAM2Q,WACjC,EACA00C,oBAAmB,WACjB,OAAOC,EAAAA,EAAAA,IAA6BtiD,KAAKyvC,OAC3C,EACA8S,yBAAwB,WACtB,OAAOviD,KAAKqiD,oBAAoBhnD,MAClC,EACAgV,aAAY,WAAM,OAAOrQ,KAAKyvC,OAAOtzC,MAAM4Q,SAASsD,YAAa,EACjEmyC,SAAQ,WAAM,OAAOxiD,KAAKyvC,OAAOtzC,MAAM4Q,SAASrR,IAAK,EACrD0pD,OAAM,WACJ,MAA4B,SAArBplD,KAAK6jD,OAAOnoD,IACrB,IACGyzC,EAAAA,EAAAA,IAAW,CAAC,kBAAmB,6BAA2B,IAC7DkW,YAAW,WACT,OAAO,IAAIljD,IAAInC,KAAKyvC,OAAOtzC,MAAM+3C,kBAAkB9Z,aAAaK,YAAYC,gBAAgBz3B,IAAI,QAClG,EACAqiD,oBAAmB,WACjB,OAAOtlD,KAAKyvC,OAAOj7B,QAAQ/G,aAAaoD,aAC1C,IACGs+B,EAAAA,EAAAA,IAAW,CAAC,qBAEjBrvC,QAAS,CACPylD,oBAAmB,WACjBvlD,KAAKkI,MAAMs9C,WAAWpD,cACxB,EACAqD,wBAAuB,WACrBzlD,KAAKglD,mBAAoB,CAC3B,EACAG,yBAAwB,SAAEO,GACpB1lD,KAAKglD,oBAGPhlD,KAAKglD,mBAAoB,EACrBU,GACF1lD,KAAKmgB,0BAGX,EACAwlC,wBAAuB,SAAEpsD,GACvB4kD,GAAAA,WAA0B5kD,EAAGyG,KAAK+kD,0BACpC,EACAa,uBAAsB,SAAErsD,GACtB4kD,GAAAA,YAA2B5kD,EAAGyG,KAAK+kD,0BACrC,EACAc,YAAW,WACTzlD,OAAO0lD,SAAS,EAAG,EACrB,EACAC,+BAA8B,WAC5B/lD,KAAKkI,MAAM89C,oBAAoBF,SAAS,EAAG,EAC7C,EACAG,kBAAiB,WACfjmD,KAAKklD,sBAAuB,CAC9B,EACAgB,kBAAiB,WACflmD,KAAKklD,sBAAuB,CAC9B,EACAjwB,OAAM,WACCj1B,KAAKslD,oBAGRtlD,KAAKimD,oBAFLjmD,KAAK0iD,UAIT,EACAA,SAAQ,WACN1iD,KAAKG,QAAQlC,QAAQ,gBACrB+B,KAAKyvC,OAAOvzC,SAAS,UACrB8D,KAAKkmD,mBACP,EACA/lC,wBAAuB,WAErBngB,KAAKyvC,OAAOvzC,SAAS,0BACvB,EACAiqD,SAAQ,YAAyD,QAArDxlD,OAAUyH,EAAS,EAATA,UAAW0gB,EAAY,EAAZA,aAAc2wB,EAAY,EAAZA,aAC7Cz5C,KAAKilD,mBAAqB78C,EAAY,EAClCA,EAAY0gB,GAAgB2wB,GAC9Bz5C,KAAKkI,MAAM0R,cAAcwsC,yBAE7B,GAEFxN,MAAO,CACLiL,OAAM,WAGJ7jD,KAAKmlD,0BACP,IC1HJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,gLFNzD7kD,EAAAA,GAAAA,IAqGM,MArGNC,GAqGM,EAlGJC,EAAAA,GAAAA,GAuCM,OAtCJ7G,GAAG,MACH2F,MAAM,aACLS,QAAK,+BAAEW,EAAAA,aAAW,I,EAEnBF,EAAAA,GAAAA,GAiBM,MAjBNyvC,GAiBM,EAhBJzvC,EAAAA,GAAAA,GAcS,UAbPlB,MAAM,oCACLwN,MAAOpM,EAAAA,GAAG,sBACV,iBAAgBA,EAAAA,MAAM8kD,aAAe9kD,EAAAA,MAAM8kD,WAAWtD,OACtDniD,QAAK,0CAAeW,EAAAA,qBAAmB,yB,EAExCkwC,EAAAA,GAAAA,IAGEQ,EAAAA,CAFA9xC,MAAM,8BACNqJ,KAAK,SAGEjI,EAAAA,kBAAoBA,EAAAA,aAAgBA,EAAAA,0BAAuB,YADpEJ,EAAAA,GAAAA,IAGE,MAHF+vC,MAGE,wBAEJO,EAAAA,GAAAA,IAA+BwG,EAAAA,CAAf93C,MAAM,YAAM,YACvBkB,EAAAA,GAAAA,GAgBD,MAhBC8vC,GAgBD,CAdI5vC,EAAAA,cAAW,YADnBJ,EAAAA,GAAAA,IAcS,U,MAZPhB,MAAM,oCACLwN,MAAOpM,EAAAA,yBAA2BA,EAAAA,GAAG,0CAA4CA,EAAAA,GAAG,4BACpFX,QAAK,0CAAeW,EAAAA,yBAAuB,yB,EAE5CkwC,EAAAA,GAAAA,IAGEQ,EAAAA,CAFA9xC,MAAM,8BACNqJ,KAAK,SAGCjI,EAAAA,2BAAwB,YADhCJ,EAAAA,GAAAA,IAGE,MAHFkwC,MAGE,6CAKA9vC,EAAAA,cAAW,YADnBJ,EAAAA,GAAAA,IAyCQ,S,MAvCNhB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,8BAA6B,YACbh0C,EAAAA,qBACrBmiD,aAAU,yCAAOniD,EAAAA,yBAAAA,EAAAA,wBAAAA,MAAAA,EAAAA,UAAuB,cACxCoiD,YAAS,yCAAOpiD,EAAAA,wBAAAA,EAAAA,uBAAAA,MAAAA,EAAAA,UAAsB,e,EAEvCF,EAAAA,GAAAA,GA2BM,MA3BNiwC,GA2BM,EA1BJjwC,EAAAA,GAAAA,GAAkE,OAAlEkxC,IAAkE,SAA3ChxC,EAAAA,GAAG,gCAAD,GACzBiwC,GAEQjwC,EAAAA,qBAAkB,YAD1BJ,EAAAA,GAAAA,IAaS,U,MAXPhB,MAAM,oCACLwN,MAAOpM,EAAAA,GAAG,yBACVX,QAAK,yCAAeW,EAAAA,gCAAAA,EAAAA,+BAAAA,MAAAA,EAAAA,UAA8B,yB,EAEnDkwC,EAAAA,GAAAA,IAMWyV,EAAAA,CAND/mD,MAAM,qCAAmC,C,mBACjD,iBAA0B,EAA1BsxC,EAAAA,GAAAA,IAA0BQ,EAAAA,CAAlBzoC,KAAK,cACbioC,EAAAA,GAAAA,IAGEQ,EAAAA,CAFAzoC,KAAK,QACLgsC,UAAU,S,oCAIhBn0C,EAAAA,GAAAA,GASS,UARPlB,MAAM,oCACLwN,MAAOpM,EAAAA,GAAG,kCACVX,QAAK,0CAAeW,EAAAA,0BAAyB,EAAD,yB,EAE7CkwC,EAAAA,GAAAA,IAGEQ,EAAAA,CAFA9xC,MAAM,8BACNqJ,KAAK,W,SAIXnI,EAAAA,GAAAA,GAKE,OAJA7G,GAAG,uBACH+2C,IAAI,sBACJpxC,MAAM,uBACL6mD,SAAM,8BAAEzlD,EAAAA,UAAAA,EAAAA,SAAAA,MAAAA,EAAAA,UAAQ,I,kCAGrBkwC,EAAAA,GAAAA,IAGE0V,EAAAA,CAFA5V,IAAI,aACHzb,OAAQv0B,EAAAA,Q,iCAEXuwC,EAAAA,GAAAA,IAWWsV,GAAAA,GAAAA,CAXDjpB,GAAG,UAAQ,CAEX58B,EAAAA,uBAAoB,YAD5BuwC,EAAAA,GAAAA,IASgBuV,EAAAA,C,MAPb15C,MAAOpM,EAAAA,GAAG,8BACV,eAAcA,EAAAA,GAAG,sCACjB,cAAaA,EAAAA,GAAG,sCAChB+lD,WAAU/lD,EAAAA,SACVgmD,YAAWhmD,EAAAA,mB,oBAEZ,iBAAgC,qBAA7BA,EAAAA,GAAG,yBAAD,G,iHG5FJpB,MAAM,a,IACJA,MAAM,iB,eAyBNA,MAAM,sB,8BA+BTkB,EAAAA,GAAAA,GAAuB,QAAjBlB,MAAM,UAAQ,S,2GCXtBkB,EAAAA,GAAAA,GAAuB,QAAjBlB,MAAM,UAAQ,S,IACpBkB,EAAAA,GAAAA,GAAuB,QAAjBlB,MAAM,UAAQ,SChD1Bq6B,GAAAA,GAAAA,IACEC,GAAAA,IACAkoB,GAAAA,KAiCF,SA9BkB,CAChB7nD,KAAM,iBAAO,CACX0sD,gBAAYpiD,EACZ0xB,QAAQ,EACR1qB,OAAO,EACR,EACDqtC,MAAO,CACLiL,OAAQ,SAAUhR,GACG,WAAfA,EAAMn3C,OACRsE,KAAK2mD,WAAa9T,EAAMp2C,MAAMA,MAElC,GAEFqD,QAAS,CACPghB,KAAI,SAAE6lC,GACJ3mD,KAAKG,QAAQd,KAAK,CAAE3D,KAAM,SAAUe,MAAO,CAAEA,MAAOkqD,KACpD3mD,KAAKkI,MAAM0+C,YAAY7W,OACzB,EACA8W,aAAY,WAAI,WACd7mD,KAAKi2B,QAAUj2B,KAAKi2B,OACpBj2B,KAAK+E,MAAM,UAAW/E,KAAKi2B,QAC3Bj2B,KAAK05C,WAAU,WACR,EAAKzjB,QACR,EAAK/tB,MAAM0+C,YAAY7W,OAE3B,GACF,IC5BJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,mEFNzDzvC,EAAAA,GAAAA,IAuDM,OAtDJhB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,YAAW,cACOh0C,EAAAA,W,CAGhBA,EAAAA,SAAM,YADdJ,EAAAA,GAAAA,IAaS,U,MAXPhB,MAAM,2BACLwN,MAAOpM,EAAAA,GAAG,cACXhB,KAAK,SACJ,iBAAgBgB,EAAAA,OAChBX,QAAK,yCAAeW,EAAAA,cAAAA,EAAAA,aAAAA,MAAAA,EAAAA,UAAY,yB,EAEjCkwC,EAAAA,GAAAA,IAIEQ,EAAAA,CAHA,iBACA9xC,MAAM,8BACNqJ,KAAK,Y,qBAGTrI,EAAAA,GAAAA,IAoCW8vC,GAAAA,GAAAA,CAAA/oC,IAAAA,GAAA,YAnCT7G,EAAAA,GAAAA,GAQC,SAPC7G,GAAG,mBACH+2C,IAAI,c,qDACKhwC,EAAAA,WAAU,IACnBpB,MAAM,mBACLixC,YAAa7vC,EAAAA,GAAG,cACjBhB,KAAK,OACJm6C,QAAK,0CAAQn5C,EAAAA,KAAKA,EAAAA,WAAU,gB,oBAJpBA,EAAAA,eAMXF,EAAAA,GAAAA,GAUS,UATPlB,MAAM,+BACNI,KAAK,SACJoN,MAAOpM,EAAAA,GAAG,cACVX,QAAK,+BAAEW,EAAAA,KAAKA,EAAAA,WAAU,I,EAEvBkwC,EAAAA,GAAAA,IAGEQ,EAAAA,CAFA,iBACAzoC,KAAK,Y,OAGTnI,EAAAA,GAAAA,GAYS,UAXPlB,MAAM,gCACNI,KAAK,SACJoN,MAAOpM,EAAAA,GAAG,oBACV,iBAAgBA,EAAAA,OAChBX,QAAK,yCAAeW,EAAAA,cAAAA,EAAAA,aAAAA,MAAAA,EAAAA,UAAY,yB,EAEjCkwC,EAAAA,GAAAA,IAIEQ,EAAAA,CAHA,iBACAzoC,KAAK,QACLrJ,MAAM,6C,MAGVgxC,GACAmB,IAAuB,Q,KGrC7B9X,GAAAA,GAAAA,IACE+nB,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAjM,GAAAA,IACAC,GAAAA,IACAiM,GAAAA,IACAzL,GAAAA,IACA0L,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAnM,GAAAA,KAGF,UACEh1C,WAAY,CACVimD,UAAAA,GACAhC,aAAAA,GAAAA,GAEF7qD,KAAM,iBAAO,CACX8sD,iBAAiB,EACjBC,aAAc5mD,OAAO0K,KAAO1K,OAAO0K,IAAIC,WACrC3K,OAAO0K,IAAIC,SAAS,YAAa,YAC/B3K,OAAO0K,IAAIC,SAAS,oBAAqB,YACzC3K,OAAO0K,IAAIC,SAAS,iBAAkB,YACtC3K,OAAO0K,IAAIC,SAAS,gBAAiB,YACrC3K,OAAO0K,IAAIC,SAAS,eAAgB,YAExCm6C,sBAAsB,EACvB,EACDh+C,SAAU,CACR+/C,WAAU,WAAM,OAAOjnD,KAAKgnD,cAAgBhnD,KAAKyvC,OAAOtzC,MAAM4Q,SAASqE,QAAS,EAChF81C,UAAS,WACP,MAAO,CACL1qC,WAAYxc,KAAKinD,WAAa,SAAW,UAE7C,EACAE,cAAa,WACX,OAAOnnD,KAAKinD,WACR,CACE,aAAc,OAAF,OAASjnD,KAAKyvC,OAAOtzC,MAAM4Q,SAASmE,KAAI,MAEtD,CACE,mBAAoBlR,KAAKinD,WAAa,GAAK,cAEnD,EACAG,YAAW,WACT,OAAOttD,OAAO2c,OAAO,CACnB4wC,OAAQ,GAAF,OAAKrnD,KAAKyvC,OAAOtzC,MAAM4Q,SAASoE,WAAU,MAChDm2C,QAAStnD,KAAK+mD,gBAAkB,EAAI,GACnC/mD,KAAKinD,WACJ,CAAC,EACD,CACE,mBAAoBjnD,KAAKinD,WAAa,GAAK,eAEnD,EACA/1C,KAAI,WAAM,OAAOlR,KAAKyvC,OAAOtzC,MAAM4Q,SAASmE,IAAK,EACjDsxC,SAAQ,WAAM,OAAOxiD,KAAKyvC,OAAOtzC,MAAM4Q,SAASrR,IAAK,EACrD2U,aAAY,WAAM,OAAOrQ,KAAKyvC,OAAOtzC,MAAM4Q,SAASsD,YAAa,EACjEgB,SAAQ,WAAM,OAAOrR,KAAKyvC,OAAOtzC,MAAM4Q,SAASsE,QAAS,EACzD1D,YAAW,WAAM,OAAO3N,KAAKyvC,OAAOtzC,MAAMa,MAAM2Q,WAAY,EAC5DynC,YAAW,WAAM,OAAOp1C,KAAKyvC,OAAOtzC,MAAM4Q,SAAQ,OAAS,EAC3Du4C,oBAAmB,WACjB,OAAOtlD,KAAKyvC,OAAOj7B,QAAQ/G,aAAaoD,aAC1C,GAEF/Q,QAAS,CACP+lD,YAAW,WACTzlD,OAAO0lD,SAAS,EAAG,EACrB,EACAG,kBAAiB,WACfjmD,KAAKklD,sBAAuB,CAC9B,EACAgB,kBAAiB,WACflmD,KAAKklD,sBAAuB,CAC9B,EACAjwB,OAAM,WACCj1B,KAAKslD,oBAGRtlD,KAAKimD,oBAFLjmD,KAAK0iD,UAIT,EACAA,SAAQ,WACN1iD,KAAKG,QAAQlC,QAAQ,gBACrB+B,KAAKyvC,OAAOvzC,SAAS,UACrB8D,KAAKkmD,mBACP,EACAqB,mBAAkB,SAAEtxB,GAClBj2B,KAAK+mD,gBAAkB9wB,CACzB,EACAlqB,kBAAiB,WACf/L,KAAKyvC,OAAOvzC,SAAS,oBACvB,ICrGJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,qJLNzDoE,EAAAA,GAAAA,IA0FM,OAzFJ3G,GAAG,MACH2F,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,aAAY,aACKh0C,EAAAA,YACtBX,QAAK,+BAAEW,EAAAA,aAAW,I,EAEnBF,EAAAA,GAAAA,GAuEM,MAvEND,GAuEM,EAtEJC,EAAAA,GAAAA,GASM,MATNyvC,GASM,CAPKvvC,EAAAA,c,kBAAY,YADrBuwC,EAAAA,GAAAA,IAOcJ,EAAAA,C,MALZvxC,MAAM,YACLg+B,GAAI,CAAA5hC,KAAAA,QACL,eAAa,Q,oBAEb,iBAAc,qBAAXgF,EAAAA,UAAQ,G,cAGfkwC,EAAAA,GAAAA,IAccC,EAAAA,CAbZvxC,MAAM,OACLg+B,GAAI,CAAA5hC,KAAAA,QACJqnD,OAAK,SAAEriD,EAAAA,aACPoM,MAAOpM,EAAAA,U,oBAER,iBAGE,EAHFF,EAAAA,GAAAA,GAGE,OAFAlB,MAAM,OACLyjD,OAAK,SAAEriD,EAAAA,gB,SAEVF,EAAAA,GAAAA,GAGC,OAFEy4C,IAAKv4C,EAAAA,KACLqiD,OAAK,SAAEriD,EAAAA,Y,2CAGZF,EAAAA,GAAAA,GA4CM,MA5CN6vC,GA4CM,CA1CI3vC,EAAAA,cAAgBA,EAAAA,cAAW,YADnCuwC,EAAAA,GAAAA,IAIEuW,EAAAA,C,MAFCC,UAAS/mD,EAAAA,mBACTX,QAAK,uBAAN,cAAW,Y,yCAEbS,EAAAA,GAAAA,GAUS,UATPlB,MAAM,2BACLwN,MAAOpM,EAAAA,GAAG,mBACVX,QAAK,yCAAOW,EAAAA,mBAAAA,EAAAA,kBAAAA,MAAAA,EAAAA,UAAiB,e,EAE9BkwC,EAAAA,GAAAA,IAIEQ,EAAAA,CAHA,iBACA9xC,MAAM,8BACNqJ,KAAK,S,MAIDjI,EAAAA,aAAoC,UAArBA,EAAAA,YAAYsiD,OAAI,YADvC1iD,EAAAA,GAAAA,IAaI,K,MAXFG,KAAK,iCACLnB,MAAM,WACNqB,OAAO,SACNmM,MAAOpM,EAAAA,GAAG,sBACVX,QAAK,uBAAN,cAAW,Y,EAEX6wC,EAAAA,GAAAA,IAIEQ,EAAAA,CAHA,iBACA9xC,MAAM,8BACNqJ,KAAK,oB,wBAGT6nC,GAEQ9vC,EAAAA,cAAW,YADnBJ,EAAAA,GAAAA,IAWS,U,MATPhB,MAAM,2BACLwN,MAAOpM,EAAAA,GAAG,gBACVX,QAAK,yCAAeW,EAAAA,QAAAA,EAAAA,OAAAA,MAAAA,EAAAA,UAAM,yB,EAE3BkwC,EAAAA,GAAAA,IAIEQ,EAAAA,CAHA,iBACA9xC,MAAM,8BACNqJ,KAAK,kB,0CAKbsoC,EAAAA,GAAAA,IAWWsV,GAAAA,GAAAA,CAXDjpB,GAAG,UAAQ,CAEX58B,EAAAA,uBAAoB,YAD5BuwC,EAAAA,GAAAA,IASgBuV,EAAAA,C,MAPb15C,MAAOpM,EAAAA,GAAG,8BACV,eAAcA,EAAAA,GAAG,sCACjB,cAAaA,EAAAA,GAAG,sCAChB+lD,WAAU/lD,EAAAA,SACVgmD,YAAWhmD,EAAAA,mB,oBAEZ,iBAAgC,qBAA7BA,EAAAA,GAAG,yBAAD,G,mHMnFJpB,MAAM,8B,IACJA,MAAM,iB,IASNA,MAAM,c,IACJA,MAAM,6B,wDA2BLA,MAAM,e,IAMPA,MAAM,8B,IAGAA,MAAM,4C,mQCiEzB,SA/G2B,CACzBuB,WAAY,CACV6mD,OAAAA,GAAAA,QACAC,KAAAA,GAAAA,EACApR,SAAAA,GAAAA,EACA1c,MAAAA,GAAAA,EACA+tB,SAAAA,GAAAA,GAEF3tD,KAAI,WACF,MAAO,CACL02B,QAAS,GACTk3B,SAAS,EACTC,kBAAmB,GACnBC,YAAY,EACZx8C,OAAO,EAEX,EACArE,SAAU,CACRo8B,YAAW,WACT,OAAOtjC,KAAKyvC,OAAOtzC,MAAMknC,QAAQC,WACnC,EACAqgB,WAAU,WACR,QAAS3jD,KAAKyvC,OAAOtzC,MAAMa,MAAM2Q,WACnC,EACAq6C,OAAM,WACJ,OAAOhoD,KAAK2jD,YAAc3jD,KAAKsjC,YAAYb,SAC7C,EACApqB,OAAM,WACJ,OAAOrY,KAAKsjC,YAAYjrB,MAC1B,EACApb,KAAI,WACF,OAAO+C,KAAKyvC,OAAOj7B,QAAQqb,SAAS7vB,KAAKqY,OAC3C,EACA4vC,eAAc,WACZ,OAAQjoD,KAAK/C,KAAKirD,UAAYloD,KAAK/C,KAAKC,YAAYpC,OAAOkF,KAAK/C,KAAKC,YAAYqxB,QAAQ,KAAO,EAClG,EACAjW,SAAQ,WACN,OAAOtY,KAAKsjC,YAAYhrB,QAC1B,EACAirB,aAAY,WACV,OAAOvjC,KAAKsjC,YAAYC,YAC1B,GAEFqV,MAAO,CACLvgC,OAAQ,aACRkrB,aAAY,SAAE5X,GACZ3rB,KAAK8nD,kBAAoBn8B,CAC3B,GAEF7rB,QAAS,CACPwhC,WAAU,WAERthC,KAAK2wB,QAAU,GACf3wB,KAAK6nD,SAAU,EACf7nD,KAAK8nD,kBAAoB9nD,KAAKujC,aAC9BvjC,KAAK+nD,YAAa,EAClB/nD,KAAKuL,OAAQ,CACf,EACA48C,WAAU,WACRnoD,KAAKyvC,OAAOvzC,SAAS,0BACvB,EACAksD,WAAU,WAAI,WACZpoD,KAAK+nD,YAAa,EAClB/nD,KAAKuL,OAAQ,EACb,IAAMupB,EAAS,CACbzc,OAAQrY,KAAKqY,OACbsY,QAAS3wB,KAAK2wB,QACdk3B,QAAS7nD,KAAK6nD,QACdhkB,UAAW7jC,KAAK8nD,mBAElB9nD,KAAKyvC,OAAOtzC,MAAMimB,IAAIC,kBAAkB+lC,W,uWAAW,IAAKtzB,IACrDx7B,MAAK,WACJ,EAAKyuD,YAAa,EAClB,EAAKzmB,aACL,EAAK6mB,YACP,IAAE,OACK,WACL,EAAKJ,YAAa,EAClB,EAAKx8C,OAAQ,CACf,GACJ,EACAskC,WAAU,WACR7vC,KAAKuL,OAAQ,CACf,EACA88C,UAAS,SAAE3yC,GACT,OAAqD,IAA9C1V,KAAK8nD,kBAAkBv5B,QAAQ7Y,EACxC,EACA4yC,aAAY,SAAEC,EAAS7yC,GACjB6yC,IAAYvoD,KAAKqoD,UAAU3yC,KAI3B6yC,EACFvoD,KAAK8nD,kBAAkBzoD,KAAKqW,GAE5B1V,KAAK8nD,kBAAkBptC,OAAO1a,KAAK8nD,kBAAkBv5B,QAAQ7Y,GAAW,GAE5E,EACA8yC,OAAM,SAAEjvD,GACN,IAAMoH,EAASpH,EAAEoH,QAAUpH,EACrBoH,aAAkBP,OAAOqoD,UAE/B9nD,EAAOoiD,MAAM/gC,OAAS,OACtBrhB,EAAOoiD,MAAM/gC,OAAS,GAAH,OAAMrhB,EAAO84C,aAAY,MACvB,KAAjB94C,EAAOiL,QACTjL,EAAOoiD,MAAM/gC,OAAS,MAE1B,ICxGJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,sKFLjDthB,EAAAA,SAAM,YADduwC,EAAAA,GAAAA,IAmEQ0P,EAAAA,C,MAjELC,kBAAiBlgD,EAAAA,Y,oBAElB,iBA8DM,EA9DNF,EAAAA,GAAAA,GA8DM,MA9DND,GA8DM,EA7DJC,EAAAA,GAAAA,GAQM,MARNyvC,GAQM,EAPJW,EAAAA,GAAAA,IAMS8X,EAAAA,CALP/qD,IAAI,MACJgrD,QAAQ,uBACRrpD,MAAM,S,oBAEN,iBAAyB,EAAzBsxC,EAAAA,GAAAA,IAAyBgY,EAAAA,CAAd3rD,KAAMyD,EAAAA,MAAI,iB,aAGzBF,EAAAA,GAAAA,GAmDM,MAnDN0vC,GAmDM,EAlDJ1vC,EAAAA,GAAAA,GAgCM,MAhCN6vC,GAgCM,EA/BJ7vC,EAAAA,GAAAA,GASM,aARJA,EAAAA,GAAAA,GAAyD,mBAAnDE,EAAAA,GAAG,2CAAD,cACRF,EAAAA,GAAAA,GAME,Y,qDALSE,EAAAA,QAAO,IAChBpB,MAAM,eACLixC,YAAa7vC,EAAAA,GAAG,sCACjBk5C,KAAK,IACJiP,QAAK,8BAAEnoD,EAAAA,QAAAA,EAAAA,OAAAA,MAAAA,EAAAA,UAAM,I,oBAJLA,EAAAA,aAODA,EAAAA,KAAKwnD,U,kBAAQ,YAAzB5nD,EAAAA,GAAAA,IAKM,WAJJE,EAAAA,GAAAA,GAAqD,mBAA/CE,EAAAA,GAAG,uCAAD,IACRkwC,EAAAA,GAAAA,IAEWkY,EAAAA,C,WAFQpoD,EAAAA,Q,qDAAAA,EAAAA,QAAO,K,oBACxB,iBAAuD,qBAApDA,EAAAA,GAAG,4BAA6B,CAACA,EAAAA,kBAAc,G,+BAGtDF,EAAAA,GAAAA,GAcM,aAbJA,EAAAA,GAAAA,GAMS,UALPlB,MAAM,qBACLmJ,SAAU/H,EAAAA,WACVX,QAAK,8BAAEW,EAAAA,YAAAA,EAAAA,WAAAA,MAAAA,EAAAA,UAAU,K,SAEfA,EAAAA,GAAG,0BAAD,MAGCA,EAAAA,QAAK,YADbJ,EAAAA,GAAAA,IAKM,MALNmwC,IAKM,SADD/vC,EAAAA,GAAG,iCAAD,0BAIXF,EAAAA,GAAAA,GAgBM,MAhBNkxC,GAgBM,EAfJd,EAAAA,GAAAA,IAcOmY,EAAAA,CAdAC,MAAOtoD,EAAAA,UAAQ,CACT0C,MAAI,UACb,gBADgBA,EAAI,EAAJA,KAAI,QACpB5C,EAAAA,GAAAA,GAUM,MAVNmwC,GAUM,EATJC,EAAAA,GAAAA,IAIEqY,EAAAA,CAHC,mBAAiB,EACjBC,SAAS,EACTC,UAAW/lD,G,uBAEdwtC,EAAAA,GAAAA,IAGEkY,EAAAA,CAFC,cAAapoD,EAAAA,UAAU0C,EAAKzJ,IAC5B,sBAAoB,SAAA4uD,GAAO,OAAI7nD,EAAAA,aAAa6nD,EAASnlD,EAAKzJ,GAAE,G,4IGtDtE2F,MAAM,+B,IACJA,MAAM,iB,WCmEjB,SArEwB,CACtBuB,WAAY,CACVuxC,eAAAA,GAAAA,EACAvY,MAAAA,GAAAA,GAEF5/B,KAAI,WACF,MAAO,CACLmvD,eAAe,EAEnB,EACAliD,SAAU,CACRy8C,WAAU,WACR,QAAS3jD,KAAKyvC,OAAOtzC,MAAMa,MAAM2Q,WACnC,EACAs3B,eAAc,WACZ,OAAOjlC,KAAKyvC,OAAOtzC,MAAMktD,WAAWpkB,cACtC,EACAqkB,cAAa,WACX,OAAOtpD,KAAK2jD,aAAe3jD,KAAKopD,eAAiBppD,KAAKilC,cACxD,EACAnQ,OAAM,WACJ,OAAO90B,KAAKyvC,OAAOtzC,MAAMktD,WAAWv0B,QAAU,CAAC,CACjD,GAEF8jB,MAAO,CACL9jB,OAAM,SAAEskB,EAAQmQ,GAAQ,WAClBC,KAAIpQ,EAAQ,cAAgBoQ,KAAID,EAAQ,cAC1CvpD,KAAKopD,eAAgB,EACrBppD,KAAK05C,WAAU,WACb,EAAK0P,eAAgB,CACvB,IAEJ,EACAE,cAAa,SAAEG,GAAK,WACdA,GACFzpD,KAAK05C,WAAU,kBAAM,EAAKJ,KAAO,EAAKA,IAAIC,cAAc,YAAYxJ,OAAO,GAE/E,GAEFjwC,QAAS,CACP4pD,aAAY,YAAgE,IAA5D9uC,EAAM,EAANA,OAAQ+uC,EAAW,EAAXA,YAAaC,EAAS,EAATA,UAAW3vC,EAAK,EAALA,MAAO4vC,EAAW,EAAXA,YAAa/nC,EAAI,EAAJA,KAC5DgT,EAAS,CACbx6B,MAAO0F,KAAKyvC,OACZ/5B,SAAU1V,KAAKyvC,OAAOtzC,MAAMktD,WAAWv0B,OAAOpf,SAC9CkF,OAAAA,EACA+uC,YAAAA,EACAC,UAAAA,EACA9nC,KAAAA,EACA7H,MAAAA,EACA4vC,YAAAA,GAGF,OAAOC,GAAAA,EAAAA,WAA+Bh1B,GACnCx7B,MAAK,SAACW,GACL,OAAOA,CACT,IAAE,OACK,SAACoxB,GAEN,OADArV,QAAQzK,MAAM,uBAAwB8f,GAC/B,CACL9f,MAAO8f,EAAInE,QAEf,GACJ,EACAihC,WAAU,WACRnoD,KAAKyvC,OAAOvzC,SAAS,uBACvB,IC7DJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,oFFLjDwE,EAAAA,gBAAa,YADrBuwC,EAAAA,GAAAA,IAkBQ0P,EAAAA,C,MAhBNrhD,MAAM,uBACLshD,kBAAiBlgD,EAAAA,Y,oBAElB,iBAYM,EAZNF,EAAAA,GAAAA,GAYM,MAZND,GAYM,EAXJC,EAAAA,GAAAA,GAEM,MAFNyvC,IAEM,SADDvvC,EAAAA,GAAG,4BAAD,IAEPkwC,EAAAA,GAAAA,IAOE4B,GAPF8B,EAAAA,GAAAA,IAOE,CANAh1C,MAAM,cACEoB,EAAAA,OAAM,CACb,eAAcA,EAAAA,aACd,iBAAe,EACf,+BAA6B,EAC7BqpD,SAAQrpD,EAAAA,a,uGGTRpB,MAAM,+B,IACJA,MAAM,iBC0CjB,SA9CwB,CACtBuB,WAAY,CACVuxC,eAAAA,GAAAA,EACAvY,MAAAA,GAAAA,GAEF5/B,KAAI,WACF,MAAO,CACLmvD,eAAe,EAEnB,EACAliD,SAAU,CACRy8C,WAAU,WACR,QAAS3jD,KAAKyvC,OAAOtzC,MAAMa,MAAM2Q,WACnC,EACAs3B,eAAc,WACZ,OAAOjlC,KAAKyvC,OAAOtzC,MAAM6tD,WAAW/kB,cACtC,EACAqkB,cAAa,WACX,OAAOtpD,KAAK2jD,aAAe3jD,KAAKopD,eAAiBppD,KAAKilC,cACxD,EACAnQ,OAAM,WACJ,OAAO90B,KAAKyvC,OAAOtzC,MAAM6tD,WAAWl1B,QAAU,CAAC,CACjD,GAEF8jB,MAAO,CACL9jB,OAAM,SAAEskB,EAAQmQ,GAAQ,WAClBC,KAAIpQ,EAAQ,oBAAsBoQ,KAAID,EAAQ,oBAChDvpD,KAAKopD,eAAgB,EACrBppD,KAAK05C,WAAU,WACb,EAAK0P,eAAgB,CACvB,IAEJ,EACAE,cAAa,SAAEG,GAAK,WACdA,GACFzpD,KAAK05C,WAAU,kBAAM,EAAKJ,KAAO,EAAKA,IAAIC,cAAc,YAAYxJ,OAAO,GAE/E,GAEFjwC,QAAS,CACPqoD,WAAU,WACRnoD,KAAKyvC,OAAOvzC,SAAS,uBACvB,ICrCJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,oFFLjDwE,EAAAA,aAAeA,EAAAA,gBAAa,YADpCuwC,EAAAA,GAAAA,IAgBQ0P,EAAAA,C,MAdL,UAASjgD,EAAAA,eACVpB,MAAM,uBACLshD,kBAAiBlgD,EAAAA,Y,oBAElB,iBASM,EATNF,EAAAA,GAAAA,GASM,MATND,GASM,EARJC,EAAAA,GAAAA,GAEM,MAFNyvC,IAEM,SADDvvC,EAAAA,GAAG,2BAAD,IAEPkwC,EAAAA,GAAAA,IAIE4B,GAJF8B,EAAAA,GAAAA,IAIE,CAHAh1C,MAAM,cACEoB,EAAAA,OAAM,CACbqpD,SAAQrpD,EAAAA,aAAU,wB,0EGRlBpB,MAAM,oC,IACJA,MAAM,iB,IAGNA,MAAM,c,UAGPA,MAAM,gBC8ChB,SAvD2B,CACzBuB,WAAY,CACVg5B,MAAAA,GAAAA,EACA6tB,OAAAA,GAAAA,SAEFztD,KAAI,WACF,MAAO,CACLqe,SAAU,GAEd,EACApR,SAAU,CACR+9B,eAAc,WACZ,OAAOjlC,KAAKyvC,OAAOtzC,MAAM8tD,cAAchlB,cACzC,EACAnQ,OAAM,WACJ,OAAO90B,KAAKyvC,OAAOtzC,MAAM8tD,cAAcn1B,MACzC,EACApf,SAAQ,WACN,OAAO1V,KAAK80B,OAAOn7B,EACrB,EACAuwD,aAAY,WACV,OAAOlqD,KAAKsY,SAASjd,MACvB,EACA8uD,QAAO,WACL,OAAOnqD,KAAKsY,QACd,GAEFsgC,MAAO,CACL9jB,OAAM,SAAEskB,EAAQmQ,GACd,IAAMa,EAAc,KAAIhR,EAAQ,QAAU,KAAImQ,EAAQ,MAClDa,GACFpqD,KAAKqqD,gBAGHD,GAAe,KAAIhR,EAAQ,eAAiB,KAAImQ,EAAQ,eAC1DvpD,KAAKuiB,oBAET,GAEFziB,QAAS,CACPuqD,aAAY,WACVrqD,KAAKsY,SAAW,EAClB,EACAiK,mBAAkB,WAAI,WACpBviB,KAAKyvC,OAAOvzC,SAAS,qBAAsB8D,KAAK80B,QAC7Cx7B,MAAK,SAAAW,GACJ,EAAKqe,SAAWre,CAClB,GACJ,EACAkuD,WAAU,WACRnoD,KAAKyvC,OAAOvzC,SAAS,0BACvB,IC9CJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,4EFLjDwE,EAAAA,iBAAc,YADtBuwC,EAAAA,GAAAA,IAwBQ0P,EAAAA,C,MAtBNrhD,MAAM,4BACLshD,kBAAiBlgD,EAAAA,Y,oBAElB,iBAkBM,EAlBNF,EAAAA,GAAAA,GAkBM,MAlBND,GAkBM,EAjBJC,EAAAA,GAAAA,GAEM,MAFNyvC,IAEM,SADDvvC,EAAAA,GAAG,0BAA2B,MAAE,SAAGA,EAAAA,cAAe,KACvD,IACAF,EAAAA,GAAAA,GAaM,MAbN0vC,GAaM,CAXIxvC,EAAAA,aAAe,IAAH,YADpBJ,EAAAA,GAAAA,IAWM,MAXN+vC,GAWM,iBAPJ/vC,EAAAA,GAAAA,IAME8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IALiB1vC,EAAAA,SAAO,SAAjBka,G,mBADTq2B,EAAAA,GAAAA,IAMEqZ,EAAAA,CAJCjjD,IAAKuT,EAAOjhB,GACZwvD,UAAWvuC,EACX,cAAY,EACbtb,MAAM,gD,uHGnBXA,MAAM,sB,IAOFA,MAAM,kB,eCHjBq6B,GAAAA,GAAAA,IACEC,GAAAA,KAgBF,SAbyB,CACvB1yB,SAAU,CACRqjD,QAAO,WACL,OAAOvqD,KAAKyvC,OAAOtzC,MAAK,UAAW8O,aACrC,GAEFnL,QAAS,CACP0qD,YAAW,SAAEt+C,GACXlM,KAAKyvC,OAAOvzC,SAAS,qBAAsBgQ,EAC7C,ICTJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,mEFNzD5L,EAAAA,GAAAA,IAoBM,MApBNC,GAoBM,iBAnBJD,EAAAA,GAAAA,IAkBM8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IAjBsB1vC,EAAAA,SAAO,SAAzBwL,EAAQ7I,G,mBADlB/C,EAAAA,GAAAA,IAkBM,OAhBH+G,IAAKhE,EACN/D,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,uBAAqB,oBACJxoC,EAAOtG,OAAK,M,EAEnCpF,EAAAA,GAAAA,GAEM,MAFNyvC,IAEM,SADDvvC,EAAAA,GAAGwL,EAAOiB,WAAYjB,EAAOkB,cAAW,IAE7C5M,EAAAA,GAAAA,GAQS,UAPPlB,MAAM,+BACLS,QAAK,mBAAEW,EAAAA,YAAYwL,EAAM,G,EAE1B0kC,EAAAA,GAAAA,IAGEQ,EAAAA,CAFA9xC,MAAM,8BACNqJ,KAAK,W,wPGGf,UACEjN,KAAM,MACNmF,WAAY,CACV4pD,UAAAA,GACAC,SAAAA,GACA7F,eAAe8F,EAAAA,GAAAA,KAAqB,kBAAM,uCAAsD,IAChGC,sBAAAA,GACAC,cAAAA,GACAC,iBAAAA,GACAC,WAAAA,GACAC,WAAAA,GACApG,WAAAA,GACAqG,uBAAAA,GACAC,UAAAA,GACAC,WAAAA,GACAC,eAAeT,EAAAA,GAAAA,KAAqB,kBAAM,+BAAwD,IAClGU,oBAAoBV,EAAAA,GAAAA,KAAqB,kBAAM,+BAAkE,IACjHW,mBAAAA,GACAC,gBAAAA,GACAC,gBAAAA,GACAC,mBAAAA,GACAC,iBAAAA,IAEFzxD,KAAM,iBAAO,CACX0xD,kBAAmB,WACpB,EACDtV,QAAO,WAEL,IAAMoT,EAAMzpD,KAAKyvC,OAAOj7B,QAAQ/G,aAAam+C,kBAC7C5rD,KAAKyvC,OAAOvzC,SAAS,YAAa,CAAER,KAAM,oBAAqBkQ,MAAO69C,IACtErpD,OAAOk4B,iBAAiB,SAAUt4B,KAAK6rD,kBACzC,EACApL,UAAS,WACPrgD,OAAOsgD,oBAAoB,SAAU1gD,KAAK6rD,kBAC5C,EACA3kD,S,uWAAU,EACR0B,QAAO,WACL,MAAO,CACL,CACE,WAAY5I,KAAK8rD,cACjB,qBAAsB9rD,KAAK+rD,SAC3B,uBAAwB/rD,KAAKgsD,oBAE/B,IAAMhsD,KAAKgL,WAEf,EACAihD,WAAU,WACR,IAAQC,EAAwBlsD,KAAKyvC,OAAOj7B,QAAQ/G,aAA5Cy+C,oBACR,MAAO,CACL,IAAMlsD,KAAKgL,YAAU,eACjBkhD,EAAsB,CAAC,mBAAqB,IAEpD,EACAv+C,YAAW,WAAM,OAAO3N,KAAKyvC,OAAOtzC,MAAMa,MAAM2Q,WAAY,EAC5Dw+C,eAAc,WAAM,OAAOnsD,KAAK2N,YAAYy+C,gBAAiB,EAC7DC,mBAAkB,WAChB,OAAOrsD,KAAKyN,aAAa6+C,sBACrB,KACAtsD,KAAKyvC,OAAOtzC,MAAM4Q,SAASuC,UACjC,EACAA,WAAU,WAAM,OAAOtP,KAAKmsD,gBAAkBnsD,KAAKqsD,kBAAmB,EACtEE,QAAO,WACL,GAAIvsD,KAAKsP,WACP,MAAO,CACL,0BAA2B,OAAF,OAAStP,KAAKsP,WAAU,KAGvD,EACAgoC,MAAK,WAAM,OAAOt3C,KAAKyvC,OAAOtzC,MAAMm7C,MAAMtX,MAAO,EACjDxsB,mBAAkB,WAAM,OAAOxT,KAAKyvC,OAAOtzC,MAAM4Q,SAASyG,kBAAmB,EAC7E1B,0BAAyB,WACvB,OAAO9R,KAAKyvC,OAAOtzC,MAAM4Q,SAAS+E,4BAC/B9R,KAAKyvC,OAAOj7B,QAAQ/G,aAAa++C,SAClCxsD,KAAKyvC,OAAOtzC,MAAM4Q,SAAS2G,4BAC/B,EACA+4C,QAAO,WACL,MAA4B,SAArBzsD,KAAK6jD,OAAOnoD,MAAwC,UAArBsE,KAAK6jD,OAAOnoD,IACpD,EACAgxD,WAAU,WACR,MAA4B,eAArB1sD,KAAK6jD,OAAOnoD,IACrB,EACAswD,mBAAkB,WAChB,OAAIhsD,KAAKysD,UACLzsD,KAAK0sD,aACF1sD,KAAKyvC,OAAOj7B,QAAQ/G,aAAas2C,yBAA+C,WAApB/jD,KAAKgL,WAC1E,EACA6G,kBAAiB,WAAM,OAAO7R,KAAKyvC,OAAOtzC,MAAM4Q,SAAS8E,iBAAkB,EAC3E86C,iBAAgB,WAAM,OAAO3sD,KAAKyvC,OAAOtzC,MAAM4Q,SAAS4/C,gBAAiB,EACzEC,iBAAgB,WACd,OAAO5sD,KAAKyvC,OAAOj7B,QAAQ/G,aAAas2C,0BAA2B,CACrE,EACA8I,aAAY,WACV,OAAO7sD,KAAKyvC,OAAOj7B,QAAQ/G,aAAao/C,YAC1C,EACA7hD,WAAU,WAAM,OAAOhL,KAAKyvC,OAAOtzC,MAAK,UAAW6O,UAAW,EAC9DoqC,YAAW,WAAM,OAAOp1C,KAAKyvC,OAAOtzC,MAAM4Q,SAAQ,OAAS,EAC3D++C,cAAa,WACX,MAA0D9rD,KAAKyvC,OAAOj7B,QAAQ/G,aAAtEC,EAAe,EAAfA,gBAA+Bo/C,EAAc,EAA5B/6C,aACzB,MAAwB,SAApB/R,KAAKgL,YAGoB,kBAApB0C,EAFAo/C,GAEwDA,CAEnE,EACAf,SAAQ,WAAM,OAAO/rD,KAAKyvC,OAAOj7B,QAAQ/G,aAAas/C,oBAAqB,EAC3EC,eAAc,WAAM,OAAOhtD,KAAKyvC,OAAOj7B,QAAQ/G,aAAau/C,cAAe,IACxE7d,EAAAA,EAAAA,IAAW,CAAC,kBAEjBrvC,QAAS,CACP+rD,kBAAiB,WACf7rD,KAAKyvC,OAAOvzC,SAAS,iBAAkBqsB,MACvCvoB,KAAKyvC,OAAOvzC,SAAS,kBAAmB0sB,KAC1C,IC3HJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,0oBpFNzDtoB,EAAAA,GAAAA,IAyEM,OAxEJ3G,GAAG,aACFopD,OAAK,SAAEriD,EAAAA,U,CAERH,GAIgC,WAAfG,EAAAA,aAAU,YAA3BuwC,EAAAA,GAAAA,IAA4Cgc,EAAAA,CAAA5lD,IAAAA,OAAA,YAC5C4pC,EAAAA,GAAAA,IAGEic,EAAAA,C,MADC5tD,OAAKo1C,EAAAA,GAAAA,IAAEh0C,EAAAA,a,mBAEWA,EAAAA,cAAW,YAAhCuwC,EAAAA,GAAAA,IAAoCkc,EAAAA,CAAA9lD,IAAAA,MAAA,iBACpC7G,EAAAA,GAAAA,GA2CM,OA1CJ7G,GAAG,UACH2F,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,uBACEh0C,EAAAA,W,CAERuvC,IACAzvC,EAAAA,GAAAA,GAaM,OAZJ7G,GAAG,UACH2F,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,qBAAoB,mBACGh0C,EAAAA,mB,EAE7BkwC,EAAAA,GAAAA,IAAcwc,GACiB,WAAf1sD,EAAAA,aAAU,YAA1BJ,EAAAA,GAAAA,IAMW8vC,GAAAA,GAAAA,CAAA/oC,IAAAA,GAAA,EALTupC,EAAAA,GAAAA,IAAayc,GACkB3sD,EAAAA,4BAAyB,YAAxDuwC,EAAAA,GAAAA,IAA4Dqc,EAAAA,CAAAjmD,IAAAA,MAAA,iBACrC3G,EAAAA,aAAeA,EAAAA,oBAAiB,YAAvDuwC,EAAAA,GAAAA,IAA2Dsc,EAAAA,CAAAlmD,IAAAA,MAAA,gBAChC3G,EAAAA,aAAeA,EAAAA,qBAAkB,YAA5DuwC,EAAAA,GAAAA,IAAgEuc,EAAAA,CAAAnmD,IAAAA,MAAA,gBAChE6oC,IAA2B,2BAG/B1vC,EAAAA,GAAAA,GAiBO,QAhBL7G,GAAG,gBACH2F,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,cAAa,gBACOh0C,EAAAA,SAAWA,EAAAA,e,CAG5BA,EAAAA,a,kBAAW,YADpBJ,EAAAA,GAAAA,IAUM,MAVN+vC,GAUM,EANJO,EAAAA,GAAAA,IAKcC,EAAAA,CAJXvT,GAAI,CAAA5hC,KAAAA,SACL4D,MAAM,c,oBAEN,iBAAsB,qBAAnBoB,EAAAA,GAAG,eAAD,G,cAGTkwC,EAAAA,GAAAA,IAAe6c,IAAAA,IAEjBjtD,EAAAA,GAAAA,GAIE,OAHA7G,GAAG,gBACH2F,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,qBAAoB,mBACGh0C,EAAAA,mB,aAGjCkwC,EAAAA,GAAAA,IAAc8c,GAENhtD,EAAAA,aAAeA,EAAAA,QAAUA,EAAAA,eAAY,YAD7CuwC,EAAAA,GAAAA,IAKE0c,EAAAA,C,MAHCC,UAAU,EACXtuD,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,+BAA8B,SACjBh0C,EAAAA,qB,qCAErBkwC,EAAAA,GAAAA,IAA0Bid,IAC1Bjd,EAAAA,GAAAA,IAAsBkd,IACtBld,EAAAA,GAAAA,IAAmBmd,GACIrtD,EAAAA,mBAAgB,YAAvCuwC,EAAAA,GAAAA,IAA2C+c,EAAAA,CAAA3mD,IAAAA,MAAA,gBACjB3G,EAAAA,mBAAgB,YAA1CuwC,EAAAA,GAAAA,IAA8Cgd,EAAAA,CAAA5mD,IAAAA,MAAA,iBAC9CupC,EAAAA,GAAAA,IAAiBsd,IACjBtd,EAAAA,GAAAA,IAAsBud,IACtBvd,EAAAA,GAAAA,IAAoBwd,IAAAA,E,mBqFhEhB9uD,MAAM,oB,uBAoBJA,MAAM,oB,iBAWCA,MAAM,e,iBA6CfoxC,IAAI,WACJpxC,MAAM,WACN0jD,KAAK,Q,UAiCH1jD,MAAM,6C,UAMNA,MAAM,6C,IASDA,MAAM,uC,UAMXA,MAAM,uC,wDCpIVA,MAAM,8C,IAEAA,MAAM,S,IAmBTA,MAAM,gC,UAGPA,MAAM,e,UAIJA,MAAM,sC,UAuBNA,MAAM,oB,UA+CFA,MAAM,4B,IAGJA,MAAM,kC,UA0DdA,MAAM,e,2BCvKHA,MAAM,e,UAqCXA,MAAM,uB,UAoCNA,MAAM,kDClEZq6B,GAAAA,GAAAA,IACE00B,GAAAA,IACAC,GAAAA,KA+EF,SA5EmB,CACjBztD,WAAY,CACV6mD,OAAAA,GAAAA,SAEFhsD,KAAM,aACN6D,MAAO,CACLgvD,MAAOl1C,OACPuB,OAAQ9gB,OACR00D,UAAWrtD,QACXypC,aAAcvsC,MACdowD,YAAattD,QACbutD,WAAYvtD,QACZwtD,sBAAuB70D,OACvB80D,cAAejvD,OAEfupD,QAAStiD,SACT4oB,UAAW7vB,OACXkvD,WAAYjoD,SACZkoD,aAAcloD,SACdmoD,eAAgBnoD,SAEhB0zB,OAAQn5B,QAER6tD,oBAAqBpoD,SACrBqoD,oBAAqBn1D,OACrBo1D,sBAAuBtoD,SACvBuoD,gBAAiBr1D,OACjBs1D,gBAAiBt1D,OACjBu1D,wBAAyBv1D,OACzBw1D,yBAA0B1oD,SAC1B2oD,4BAA6B3oD,SAC7B4oD,KAAM5oD,UAERM,SAAU,CACRuoD,YAAW,WACT,IAAMC,GAAkB1vD,KAAKkI,MAAMynD,iBAAkB3vD,KAAKkI,MAAMynD,gBAAgBF,YAChF,OAAIzvD,KAAKkI,MAAM0nD,eACNF,GAAmB1vD,KAAKkI,MAAM0nD,eAAezpD,OAAM,SAAA2W,GAAC,OAAIA,EAAE2yC,WAAW,IAEvEC,CACT,EACAG,mBAAkB,WAChB,OAAO7vD,KAAK4qC,aAAaj8B,QAAO,SAACmhD,EAAOl1C,EAAQvX,GAE9C,OADAysD,EAAMl1C,EAAOjhB,IAAM0J,EACZysD,CACT,GAAG,CAAC,EACN,EACAC,eAAc,WAAI,WAChB,OAAO/vD,KAAK6uD,WAAW7uD,KAAK4a,OAAOjhB,IAAIZ,KAAI,gBAAGY,EAAE,EAAFA,GAAE,OAAO,EAAKq2D,WAAWr2D,EAAG,GAC5E,EACAs2D,cAAa,WACX,MAAoD,YAA7CjwD,KAAKivD,oBAAoBjvD,KAAK4a,OAAOjhB,GAC9C,EACAu2D,YAAW,WACT,OAAOlwD,KAAKqvD,wBAAwBrvD,KAAK4a,OAAOjhB,GAClD,GAEFmG,QAAS,CACPkwD,WAAU,SAAEr2D,GACV,OAAOqG,KAAK4qC,aAAa5qC,KAAK6vD,mBAAmBl2D,GACnD,EACAw2D,eAAc,WACd,EACAC,WAAU,WACV,EACAC,kBAAiB,WACjB,EACAC,kBAAiB,SAAE50D,GACjBsE,KAAKuvD,4BAA4BvvD,KAAK4a,OAAOjhB,GAAI+B,EACnD,EACA60D,eAAc,SAAE70D,EAAM09C,GACpBp5C,KAAKsvD,yBAAyBtvD,KAAK4a,OAAOjhB,GAAI+B,EAChD,IC5EJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,0IFNzD4E,EAAAA,GAAAA,IAkHU,UAlHVC,GAkHU,eAjHR0wC,EAAAA,GAAAA,IAiCEqZ,EAAAA,CAhCCjjD,IAAK3G,EAAAA,OAAO/G,GACb+2C,IAAI,kBACH,kBAAiBhwC,EAAAA,aAAeA,EAAAA,WAChCyoD,UAAWzoD,EAAAA,OACX8vD,YAAa9vD,EAAAA,WACb,cAAaA,EAAAA,uBAAyBA,EAAAA,sBAAsBA,EAAAA,OAAO/G,IACnEuvD,QAASxoD,EAAAA,QAAQA,EAAAA,OAAO/G,IACxB,kBAAiB+G,EAAAA,WACjB8uB,UAAW9uB,EAAAA,UACX+vD,QAAS/vD,EAAAA,WAAWA,EAAAA,OAAO/G,IAC3B,aAAY+G,EAAAA,UACZ,kBAAiBA,EAAAA,cAClBpB,MAAM,4EAEL,cAAaoB,EAAAA,OACb,mCAAkCA,EAAAA,oBAAoBA,EAAAA,OAAO/G,IAC7D,mCAAgC,kBAAQ+G,EAAAA,oBAAoBA,EAAAA,OAAO/G,GAAE,EAErE,0BAAyB+G,EAAAA,YAAYgwD,YACrC,+BAA8BhwD,EAAAA,YAAYiwD,iBAC1C,kCAAiCjwD,EAAAA,YAAYkwD,mBAC7C,sBAAqBlwD,EAAAA,YAAYmwD,SACjC,2BAA0BnwD,EAAAA,YAAYowD,aACtC,iCAA8B,kBAAQpwD,EAAAA,kBAAkB,cAAD,EACvD,sCAAmC,kBAAQA,EAAAA,kBAAkB,mBAAD,EAC5D,yCAAsC,kBAAQA,EAAAA,kBAAkB,qBAAD,EAC/D,6BAA0B,kBAAQA,EAAAA,kBAAkB,WAAD,EACnD,+BAA4B,SAAG04C,GAAM,OAAK14C,EAAAA,eAAe,eAAgB04C,EAAM,EAC/EoW,KAAM9uD,EAAAA,KAAO,WAAH,OAASA,EAAAA,KAAKA,EAAAA,OAAO/G,GAAE,OAAI4K,EAErCwsD,OAAMrwD,EAAAA,aACNswD,iBAAgBtwD,EAAAA,gB,okBAGXA,EAAAA,eAAerF,QAAUqF,EAAAA,gBAAa,YAD9CJ,EAAAA,GAAAA,IAmCM,MAnCN2vC,GAmCM,iBA/BJ3vC,EAAAA,GAAAA,IA8BE8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IA7BsB1vC,EAAAA,gBAAc,SAA7BuwD,G,mBADThgB,EAAAA,GAAAA,IA8BEigB,EAAAA,CA5BC7pD,IAAK4pD,EAAYt3D,G,WAClB+2C,IAAI,iBACH6d,MAAO7tD,EAAAA,MAAQ,EACfka,OAAQq2C,EAER,aAAYvwD,EAAAA,UACZkqC,aAAclqC,EAAAA,aACd+tD,YAAa/tD,EAAAA,YACb,cAAaA,EAAAA,WACb,2BAA0BA,EAAAA,sBAC1B,kBAAiBA,EAAAA,cAEjBwoD,QAASxoD,EAAAA,QACT,cAAaA,EAAAA,WACb8uB,UAAW9uB,EAAAA,UACX,gBAAeA,EAAAA,aACf,kBAAiBA,EAAAA,eAEjB45B,OAAQ55B,EAAAA,OACR,wBAAuBA,EAAAA,oBACvB,wBAAuBA,EAAAA,oBACvB,0BAAyBA,EAAAA,sBACzB,oBAAmBA,EAAAA,gBACnB,oBAAmBA,EAAAA,gBACnB,4BAA2BA,EAAAA,wBAC3B,8BAA6BA,EAAAA,yBAC7B,iCAAgCA,EAAAA,4BAChC8uD,KAAM9uD,EAAAA,M,gcAIHA,EAAAA,eAAerF,SAAWqF,EAAAA,gBAAa,YAD/CJ,EAAAA,GAAAA,IA0CM,MA1CN4vC,GA0CM,CArCIxvC,EAAAA,SAAM,YADduwC,EAAAA,GAAAA,IAkBSyX,EAAAA,C,MAhBPt+B,MAAM,SACNzsB,IAAI,SACJgrD,QAAQ,iCACRrpD,MAAM,wDACLS,QAAK,0CAAUW,EAAAA,KAAKA,EAAAA,OAAO/G,GAAE,kB,CAEnBgP,MAAI,UACb,iBAEE,EAFFioC,EAAAA,GAAAA,IAEEQ,EAAAA,CADAzoC,KAAK,uB,IAGE/J,MAAI,UACb,iBAEO,EAFP4B,EAAAA,GAAAA,GAEO,sBADFE,EAAAA,IAAI,uBAAwBA,EAAAA,gBAAgBA,EAAAA,OAAO/G,IAAK,CAAHw3D,UAAgBzwD,EAAAA,gBAAgBA,EAAAA,OAAO/G,OAAE,G,yBAIvGs3C,EAAAA,GAAAA,IAkBSyX,EAAAA,C,MAhBPt+B,MAAM,SACNzsB,IAAI,SACJgrD,QAAQ,oCACRrpD,MAAM,wDACLS,QAAK,0CAAUW,EAAAA,sBAAsBA,EAAAA,OAAO/G,GAAE,kB,CAEpCgP,MAAI,UACb,iBAEE,EAFFioC,EAAAA,GAAAA,IAEEQ,EAAAA,CADAzoC,KAAK,sB,IAGE/J,MAAI,UACb,iBAEO,EAFP4B,EAAAA,GAAAA,GAEO,sBADFE,EAAAA,IAAI,0BAA2BA,EAAAA,gBAAgBA,EAAAA,OAAO/G,IAAK,CAAHw3D,UAAgBzwD,EAAAA,gBAAgBA,EAAAA,OAAO/G,IAAE40D,MAAU7tD,EAAAA,gBAAgBA,EAAAA,OAAO/G,OAAE,G,6CGrG3I2F,MAAM,gBACN0jD,KAAK,Q,UAIHA,KAAK,S,sEA2CHA,KAAK,YACL1jD,MAAM,oB,ipBCrDlBq6B,GAAAA,GAAAA,IACEy3B,GAAAA,IACAC,GAAAA,IACAC,GAAAA,KA6DF,SA1D4B,CAC1B/xD,MAAO,CACLqrC,aAAczpC,SAEhBN,WAAY,CACV0wD,QAAAA,GAAAA,SAEFzxD,QAAS,CACP0xD,mBAAkB,SAAEh1C,GAClBxc,KAAKyvC,OAAOvzC,SAAS,YAAa,CAAER,KAAM,kBAAmBkQ,MAAO4Q,IACpExc,KAAKyvC,OAAOvzC,SAAS,gBACvB,EACAu1D,QAAO,SAAEve,GACPlzC,KAAKyvC,OAAOvzC,SAAS,uBAAwBg3C,EAC/C,GAEFhsC,SAAU,UACLioC,EAAAA,EAAAA,IAAW,CAAC,kBAAgB,IAC/BzoB,SAAQ,WACN,QAAS1mB,KAAKyvC,OAAOtzC,MAAMa,MAAM2Q,WACnC,EACA+jD,oBAAqB,CACnBlI,IAAG,WAAM,MAA6C,SAAtCxpD,KAAKyN,aAAagZ,eAA2B,EAC7DpB,IAAG,WAAMrlB,KAAKwxD,mBAAmB,OAAQ,GAE3CG,yBAA0B,CACxBnI,IAAG,WAAM,MAA6C,cAAtCxpD,KAAKyN,aAAagZ,eAAgC,EAClEpB,IAAG,WAAMrlB,KAAKwxD,mBAAmB,YAAa,GAEhDI,mBAAoB,CAClBpI,IAAG,WAAM,MAA6C,QAAtCxpD,KAAKyN,aAAagZ,eAA0B,EAC5DpB,IAAG,WAAMrlB,KAAKwxD,mBAAmB,MAAO,GAE1CK,UAAW,CACTrI,IAAG,WAAM,OAAOxpD,KAAKyN,aAAaqkD,iBAAmB9xD,KAAKyN,aAAaskD,qBAAsB,EAC7F1sC,IAAG,WACD,IAAMzZ,GAAS5L,KAAK6xD,UACpB7xD,KAAKyvC,OAAOvzC,SAAS,YAAa,CAAER,KAAM,kBAAmBkQ,MAAAA,IAC7D5L,KAAKyvC,OAAOvzC,SAAS,YAAa,CAAER,KAAM,wBAAyBkQ,MAAAA,GACrE,GAEFoE,eAAgB,CACdw5C,IAAG,WAAM,OAAOxpD,KAAKyN,aAAasC,oBAAqB,EACvDsV,IAAG,WACD,IAAMzZ,GAAS5L,KAAKgQ,eACpBhQ,KAAKyvC,OAAOvzC,SAAS,YAAa,CAAER,KAAM,uBAAwBkQ,MAAAA,GACpE,GAEF2E,gBAAiB,CACfi5C,IAAG,WAAM,OAAOxpD,KAAKyN,aAAa8C,eAAgB,EAClD8U,IAAG,WACD,IAAMzZ,GAAS5L,KAAKuQ,gBACpBvQ,KAAKyvC,OAAOvzC,SAAS,YAAa,CAAER,KAAM,kBAAmBkQ,MAAAA,GAC/D,MCzDN,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,0FFJzDqlC,EAAAA,GAAAA,IA4GU+gB,EAAAA,CA3GRC,QAAQ,QACR3yD,MAAM,sBACL,WAAU,CAAA05C,EAAAA,aACV,gBAAa,CAAAlsC,MAAWpM,EAAAA,GAAG,oC,CAEjBd,SAAO,UAChB,iBAgGM,EAhGNY,EAAAA,GAAAA,GAgGM,MAhGND,GAgGM,CA3FIG,EAAAA,WAAQ,YADhBJ,EAAAA,GAAAA,IAgDM,MAhDN2vC,GAgDM,CA3CKvvC,EAAAA,cAUA,kBAVY,YADrBJ,EAAAA,GAAAA,IAYS,U,MAVPhB,MAAM,+BACL,eAAcoB,EAAAA,mBACfsiD,KAAK,gBACJjjD,QAAK,+BAAEW,EAAAA,oBAAqB,CAAH,I,EAE1BF,EAAAA,GAAAA,GAIE,QAHAlB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,uBAAsB,yBACOh0C,EAAAA,sBAClC,eAAa,G,4BACXA,EAAAA,GAAG,kCAAD,WAGAA,EAAAA,cAUA,kBAVY,YADrBJ,EAAAA,GAAAA,IAYS,U,MAVPhB,MAAM,+BACL,eAAcoB,EAAAA,yBACfsiD,KAAK,gBACJjjD,QAAK,+BAAEW,EAAAA,0BAA2B,CAAH,I,EAEhCF,EAAAA,GAAAA,GAIE,QAHAlB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,uBAAsB,yBACOh0C,EAAAA,4BAClC,eAAa,G,4BACXA,EAAAA,GAAG,8CAAD,WAGAA,EAAAA,cAUA,kBAVY,YADrBJ,EAAAA,GAAAA,IAYS,U,MAVPhB,MAAM,+BACL,eAAcoB,EAAAA,oBACfsiD,KAAK,gBACJjjD,QAAK,+BAAEW,EAAAA,qBAAsB,CAAH,I,EAE3BF,EAAAA,GAAAA,GAIE,QAHAlB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,uBAAsB,yBACOh0C,EAAAA,uBAClC,eAAa,G,4BACXA,EAAAA,GAAG,yCAAD,WAGAA,EAAAA,cAGP,kBAHmB,YADrBJ,EAAAA,GAAAA,IAIE,MAJFmxC,SAIE,iBAEJjxC,EAAAA,GAAAA,GAWS,UAVPlB,MAAM,+BACN0jD,KAAK,mBACJ,eAActiD,EAAAA,gBACdX,QAAK,+BAAEW,EAAAA,iBAAmBA,EAAAA,eAAe,I,EAE1CF,EAAAA,GAAAA,GAIE,QAHAlB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,gBAAe,yBACch0C,EAAAA,mBAClC,eAAa,G,4BACXA,EAAAA,GAAG,4BAAD,WAETF,EAAAA,GAAAA,GAWS,UAVPlB,MAAM,+BACN0jD,KAAK,mBACJ,eAActiD,EAAAA,UACdX,QAAK,+BAAEW,EAAAA,WAAaA,EAAAA,SAAS,I,EAE9BF,EAAAA,GAAAA,GAIE,QAHAlB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,gBAAe,yBACch0C,EAAAA,aAClC,eAAa,G,4BACXA,EAAAA,GAAG,iCAAD,WAETF,EAAAA,GAAAA,GAWS,UAVPlB,MAAM,+BACN0jD,KAAK,mBACJ,eAActiD,EAAAA,eACdX,QAAK,+BAAEW,EAAAA,gBAAkBA,EAAAA,cAAc,I,EAExCF,EAAAA,GAAAA,GAIE,QAHAlB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,gBAAe,yBACch0C,EAAAA,kBAClC,eAAa,G,4BACXA,EAAAA,GAAG,kCAAD,WAETF,EAAAA,GAAAA,GAMS,UALPlB,MAAM,kDACN0jD,KAAK,WACJjjD,QAAK,+BAAEW,EAAAA,QAAQ,YAAD,I,EAEfkwC,EAAAA,GAAAA,IAAsBQ,EAAAA,CAAdzoC,KAAK,UAAM,mBAAMjI,EAAAA,GAAG,kCAAD,O,IAItBuxD,SAAO,UAChB,iBAAwB,EAAxBrhB,EAAAA,GAAAA,IAAwBQ,EAAAA,CAAhBzoC,KAAK,W,0CGlGXrJ,MAAM,gBACN0jD,KAAK,Q,IAEAA,KAAK,S,4CAgCVxiD,EAAAA,GAAAA,GAGE,OAFAwiD,KAAK,YACL1jD,MAAM,oB,8oBCzChBq6B,GAAAA,GAAAA,IACEoc,GAAAA,IACAmc,GAAAA,IACAzN,GAAAA,IACA6M,GAAAA,KA2DF,SAxD0B,CACxB/xD,MAAO,CACLqrC,aAAczpC,SAEhBN,WAAY,CACV0wD,QAAAA,GAAAA,SAEFzxD,QAAS,CACPqyD,uBAAsB,SAAE31C,GACtBxc,KAAKyvC,OAAOvzC,SAAS,YAAa,CAAER,KAAM,sBAAuBkQ,MAAO4Q,GAC1E,EACAi1C,QAAO,SAAEve,GACPlzC,KAAKyvC,OAAOvzC,SAAS,uBAAwBg3C,EAC/C,GAEFhsC,SAAU,UACLioC,EAAAA,EAAAA,IAAW,CAAC,kBAAgB,IAC/BzoB,SAAQ,WACN,QAAS1mB,KAAKyvC,OAAOtzC,MAAMa,MAAM2Q,WACnC,EACAyE,oBAAqB,CACnBo3C,IAAG,WAAM,OAAOxpD,KAAKyN,aAAa2E,mBAAoB,EACtDiT,IAAG,SAAE+zB,GAAUp5C,KAAKmyD,uBAAuB/Y,EAAQ,GAErDgZ,WAAY,CACV5I,IAAG,WAAM,OAAOxpD,KAAKyN,aAAa4kD,SAAU,EAC5ChtC,IAAG,WACD,IAAMzZ,GAAS5L,KAAKoyD,WACpBpyD,KAAKyvC,OAAOvzC,SAAS,YAAa,CAAER,KAAM,YAAakQ,MAAAA,GACzD,GAEF0mD,qBAAsB,CACpB9I,IAAG,WAAM,OAAOxpD,KAAKyN,aAAa8B,0BAA2B,EAC7D8V,IAAG,WACD,IAAMzZ,GAAS5L,KAAKsyD,qBACpBtyD,KAAKyvC,OAAOvzC,SAAS,YAAa,CAAER,KAAM,6BAA8BkQ,MAAAA,GAC1E,GAEF2mD,gBAAiB,CACf/I,IAAG,WAAM,OAAOxpD,KAAKyN,aAAakC,qBAAsB,EACxD0V,IAAG,WACD,IAAMzZ,GAAS5L,KAAKuyD,gBACpBv8C,QAAQ4H,IAAIhS,GACZ5L,KAAKyvC,OAAOvzC,SAAS,YAAa,CAAER,KAAM,wBAAyBkQ,MAAAA,GACrE,GAEF2E,gBAAiB,CACfi5C,IAAG,WAAM,OAAOxpD,KAAKyN,aAAa8C,eAAgB,EAClD8U,IAAG,WACD,IAAMzZ,GAAS5L,KAAKuQ,gBACpBvQ,KAAKyvC,OAAOvzC,SAAS,YAAa,CAAER,KAAM,kBAAmBkQ,MAAAA,GAC/D,MCxDN,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,0FFJzDqlC,EAAAA,GAAAA,IAiGU+gB,EAAAA,CAhGRC,QAAQ,QACR3yD,MAAM,oBACL,WAAU,CAAA05C,EAAAA,aACV,gBAAa,CAAAlsC,MAAWpM,EAAAA,GAAG,kC,CAEjBd,SAAO,UAChB,iBAqFM,EArFNY,EAAAA,GAAAA,GAqFM,MArFND,GAqFM,EAjFJC,EAAAA,GAAAA,GA+BM,MA/BNyvC,GA+BM,EA9BJzvC,EAAAA,GAAAA,GAcS,UAbPlB,MAAM,+BACL,eAAsC,SAAxBoB,EAAAA,oBACfsiD,KAAK,gBACJjjD,QAAK,+BAAEW,EAAAA,oBAAsB,MAAH,I,EAE3BF,EAAAA,GAAAA,GAIE,QAHAlB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,uBAAsB,yBAE+B,SAAxBh0C,EAAAA,uBADlC,eAAa,G,SAEdkwC,EAAAA,GAAAA,IAGAQ,EAAAA,CAFAzoC,KAAK,cACJ,eAAa,K,SACd,KAAC,SAAGjI,EAAAA,GAAG,6CAAD,WAEVF,EAAAA,GAAAA,GAcS,UAbPlB,MAAM,+BACL,eAAsC,WAAxBoB,EAAAA,oBACfsiD,KAAK,gBACJjjD,QAAK,+BAAEW,EAAAA,oBAAsB,QAAH,I,EAE3BF,EAAAA,GAAAA,GAIE,QAHAlB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,uBAAsB,yBAC+B,WAAxBh0C,EAAAA,uBAClC,eAAa,G,SACdkwC,EAAAA,GAAAA,IAGAQ,EAAAA,CAFAzoC,KAAK,OACJ,eAAa,K,SACd,KAAC,SAAGjI,EAAAA,GAAG,+CAAD,YAGZ4vC,IAIA9vC,EAAAA,GAAAA,GAWS,UAVPlB,MAAM,+BACN0jD,KAAK,mBACJ,eAActiD,EAAAA,gBACdX,QAAK,+BAAEW,EAAAA,iBAAmBA,EAAAA,eAAe,I,EAE1CF,EAAAA,GAAAA,GAIE,QAHAlB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,gBAAe,yBACch0C,EAAAA,mBAClC,eAAa,G,4BACXA,EAAAA,GAAG,4CAAD,UAGAA,EAAAA,cAUA,kBAVY,YADrBJ,EAAAA,GAAAA,IAYS,U,MAVPhB,MAAM,+BACN0jD,KAAK,mBACJ,eAActiD,EAAAA,WACdX,QAAK,+BAAEW,EAAAA,YAAcA,EAAAA,UAAU,I,EAEhCF,EAAAA,GAAAA,GAIE,QAHAlB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,gBAAe,yBACch0C,EAAAA,cAClC,eAAa,G,4BACXA,EAAAA,GAAG,yBAAD,WAGAA,EAAAA,cAUA,kBAVY,YADrBJ,EAAAA,GAAAA,IAYS,U,MAVPhB,MAAM,+BACN0jD,KAAK,mBACJ,eAActiD,EAAAA,qBACdX,QAAK,+BAAEW,EAAAA,sBAAwBA,EAAAA,oBAAoB,I,EAEpDF,EAAAA,GAAAA,GAIE,QAHAlB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,gBAAe,yBACch0C,EAAAA,wBAClC,eAAa,G,4BACXA,EAAAA,GAAG,8BAAD,YAETF,EAAAA,GAAAA,GAMS,UALPlB,MAAM,kDACN0jD,KAAK,WACJjjD,QAAK,+BAAEW,EAAAA,QAAQ,UAAD,I,EAEfkwC,EAAAA,GAAAA,IAAwBQ,EAAAA,CAAhBzoC,KAAK,YAAQ,mBAAMjI,EAAAA,GAAG,2BAAD,O,IAIxBuxD,SAAO,UAChB,iBAAsB,EAAtBrhB,EAAAA,GAAAA,IAAsBQ,EAAAA,CAAdzoC,KAAK,S,2mBGjFnBgxB,GAAAA,GAAAA,IACE00B,GAAAA,IACAmE,GAAAA,IACAhU,GAAAA,KAGF,IAAMzjC,GAAW,SAAChf,EAAGC,GACnB,IAAMy2D,EAAiB,YAAX12D,EAAE2D,KAAqB3D,EAAE8gB,iBAAiBljB,GAAKoC,EAAEpC,GACvD+4D,EAAiB,YAAX12D,EAAE0D,KAAqB1D,EAAE6gB,iBAAiBljB,GAAKqC,EAAErC,GACvDqhB,EAAO3B,OAAOo5C,GACdx3C,EAAO5B,OAAOq5C,GACdx3C,GAAU7B,OAAO8B,MAAMH,GACvBI,GAAU/B,OAAO8B,MAAMF,GAC7B,OAAIC,GAAUE,EACLJ,EAAOC,GAAQ,EAAI,EACjBC,IAAWE,GACZ,GACEF,GAAUE,EACb,EAEAq3C,EAAMC,GAAO,EAAI,CAE5B,EAsgBA,SAxfqB,CACnBz4D,KAAI,WACF,MAAO,CACLu1B,UAAW,KACXmjC,UAAU,EACVC,0BAA2B,CAAC,EAC5BC,8BAA+B,CAAC,EAChCC,mBAAoB,KAExB,EACAvzD,MAAO,CACL,WACA,cACA,SACA,wBACA,YACA,gBACA,iBAEF82C,QAAO,WACDr2C,KAAK+yD,QACP/yD,KAAKgzD,mBAET,EACA9rD,SAAU,OACR+rD,wBAAuB,WAIrB,IAAMC,EAAWlzD,KAAKyvC,OAAOj7B,QAAQ/G,aAAa+E,iBAAmB,EACrE,OAAO0gD,GAAY,EAAIA,EAAW,CACpC,EACAC,iBAAgB,WACd,OAAOnzD,KAAKyN,aAAaioB,iBAAmB11B,KAAK62B,wBAA0BsB,EAAAA,GAAAA,MAC7E,EACAi7B,aAAY,WACV,OAAOpzD,KAAKyvC,OAAOj7B,QAAQ/G,aAAa2E,mBAC1C,EACAihD,WAAU,WACR,OAAQrzD,KAAKszD,YACf,EACAC,iBAAgB,WACd,OAAQvzD,KAAKyvC,OAAOj7B,QAAQ/G,aAAa4E,wBAC3C,EACAihD,aAAY,WACV,MAA6B,WAAtBtzD,KAAKozD,YACd,EACAI,oBAAmB,WACjB,OAAOxzD,KAAKyvC,OAAOj7B,QAAQ/G,aAAa8E,6BAC1C,EACAkhD,2BAA0B,WACxB,OAAOzzD,KAAKyvC,OAAOj7B,QAAQ/G,aAAa6E,8BAC1C,EACAohD,kCAAiC,WAC/B,MAA2C,UAApC1zD,KAAKyzD,0BACd,EACAE,mCAAkC,WAChC,MAA2C,WAApC3zD,KAAKyzD,0BACd,EACAhE,YAAW,WACT,OAAIzvD,KAAKqzD,WACAv5D,OAAOsd,QAAQpX,KAAKqvD,yBACxBlpD,OAAM,+BAAKytD,GAAF,KAAM,aAAOA,EAAK/C,UAAyC,IAA7B+C,EAAK9C,aAAaz1D,MAAY,KAEtE2E,KAAKkI,MAAMynD,kBAAmB3vD,KAAKkI,MAAMynD,gBAAgB,IACpD3vD,KAAKkI,MAAMynD,gBAAgBxpD,OAAM,SAAA2W,GAAC,OAAIA,EAAE2yC,WAAW,GAI9D,EACAoE,WAAU,WACR,OAAO7zD,KAAK8zD,eAAiB9zD,KAAKyvD,WACpC,EACA70C,OAAM,WACJ,OAAO5a,KAAKyvC,OAAOtzC,MAAMmc,SAASoB,kBAAkB1Z,KAAK0V,SAC3D,EACAq+C,iBAAgB,WACd,OAAI/zD,KAAK4a,OAAOiC,iBACP7c,KAAK4a,OAAOiC,iBAAiBljB,GAE7BqG,KAAK0V,QAEhB,EACA8F,eAAc,WACZ,OAAOxb,KAAKg0D,kBAAkBh0D,KAAK0V,SACrC,EACAk1B,aAAY,WACV,IAAK5qC,KAAK4a,OACR,MAAO,GAGT,IAAK5a,KAAK0uD,WACR,MAAO,CAAC1uD,KAAK4a,QAGf,IAAMgwB,EAAe,KAAM5qC,KAAKyvC,OAAOtzC,MAAMmc,SAASqB,oBAAoB3Z,KAAKwb,iBACzEy4C,EAAc,IAAUrpB,EAAc,CAAEjxC,GAAIqG,KAAK+zD,mBAKvD,OAJqB,IAAjBE,IACFrpB,EAAaqpB,GAAej0D,KAAK4a,QA9GP,SAACgwB,EAAcue,GAS/C,OAPEve,EADqB,YAAnBue,EAAUzpD,KACG,KACbkrC,GACA,SAAChwB,GAAM,MAAsB,YAAhBA,EAAOlb,MAAsBkb,EAAOjhB,KAAOwvD,EAAUtsC,iBAAiBljB,EAAE,IAGxE,KAAOixC,GAAc,SAAChwB,GAAM,MAAqB,YAAhBA,EAAOlb,IAAkB,KAEvD3E,QAAO,SAAA0L,GAAC,OAAIA,CAAC,IAAE3K,KAAKif,GAC1C,CAuGam5C,CAA0BtpB,EAAc5qC,KAAK4a,OACtD,EACAu5C,UAAS,WACP,OAAOn0D,KAAK4qC,aAAaj8B,QAAO,SAACV,EAAK6O,GAEpC,OADA7O,EAAI6O,EAAEnjB,IAAMmjB,EACL7O,CACT,GAAG,CAAC,EACN,EACAmmD,WAAU,WAAI,WACNvE,EAAqB7vD,KAAK4qC,aAAaj8B,QAAO,SAACmhD,EAAOl1C,EAAQvX,GAElE,OADAysD,EAAMl1C,EAAOjhB,IAAM0J,EACZysD,CACT,GAAG,CAAC,GAyBEuE,EAbO,SAAPC,EAAQC,EAAQC,GAAQ,IAAEjG,EAAQ,UAAH,6CAAG,EAAGkG,EAAY,UAAH,6CAAG,CAAC,EAAC,OAAKD,EAASz7D,KAAI,SAAAY,GACzE,OAAI86D,EAAU96D,GACL,IAGT86D,EAAU96D,IAAM,EACT,CAAC,CACNihB,OAAQ,EAAKgwB,aAAailB,EAAmBl2D,IAC7CA,GAAAA,EACA40D,MAAAA,GACC+F,EAAKC,EAAQA,EAAO56D,GAAK40D,EAAQ,EAAGkG,IAAY9lD,QAAO,SAAC5S,EAAGC,GAAC,OAAKD,EAAEd,OAAOe,EAAE,GAAE,IACnF,IAAG2S,QAAO,SAAC5S,EAAGC,GAAC,OAAKD,EAAEd,OAAOe,EAAE,GAAE,GAAG,CAEjBs4D,CAvBHt0D,KAAK4qC,aAAaj8B,QAAO,SAAC5S,EAAG8S,GAC3C,IAAMlV,EAAKkV,EAAIlV,GAIf,OAHAoC,EAAEw4D,OAAO56D,GAAM,EAAKk1D,WAAWl1D,GAC5BZ,KAAI,SAAA+jB,GAAC,OAAIA,EAAEnjB,EAAE,IAEToC,CACT,GAAG,CACDw4D,OAAQ,CAAC,IAgBqBA,OAAQv0D,KAAKw0D,SAASz7D,KAAI,SAAAuC,GAAC,OAAIA,EAAE3B,EAAE,KAEnE,OAAO06D,CACT,EACAK,SAAQ,WAAI,WACV,OAAO10D,KAAK4qC,aAAa7xC,KAAI,SAAAuC,GAAC,OAAIA,EAAE3B,EAAE,IACnCgV,QAAO,SAACV,EAAKtU,GAEZ,OADAsU,EAAItU,IAAO,EAAK82D,QAAQ92D,IAAO,IAAIZ,KAAI,SAAAuC,GAAC,OAAIA,EAAE3B,EAAE,IACzCsU,CACT,GAAG,CAAC,EACR,EACAkhD,gBAAe,WAAI,WACXwF,EAAQ,CAAC,EASf,OADA30D,KAAK4qC,aAAa7xC,KAAI,SAAAuC,GAAC,OAAIA,EAAE3B,EAAE,IAAEZ,KAPV,SAAjB67D,EAAkBj7D,GACtB,OAAIg7D,EAAMh7D,KAGVg7D,EAAMh7D,GAAM,EAAI,EAAK+6D,SAAS/6D,GAAIZ,KAAI,SAAA87D,GAAG,OAAID,EAAeC,EAAI,IAAElmD,QAAO,SAAC5S,EAAGC,GAAC,OAAKD,EAAIC,CAAC,GAAE,IAFjF24D,EAAMh7D,EAIjB,IAEOG,OAAOD,KAAK86D,GAAOhmD,QAAO,SAACV,EAAKtU,GAErC,OADAsU,EAAItU,GAAMg7D,EAAMh7D,GAAM,EACfsU,CACT,GAAG,CAAC,EACN,EACAmhD,gBAAe,WAAI,WACX0F,EAAS,CAAC,EAShB,OADA90D,KAAK4qC,aAAa7xC,KAAI,SAAAuC,GAAC,OAAIA,EAAE3B,EAAE,IAAEZ,KAPT,SAAlBg8D,EAAmBp7D,GACvB,OAAIm7D,EAAOn7D,KAGXm7D,EAAOn7D,GAAM,EAAI,EAAK+6D,SAAS/6D,GAAIZ,KAAI,SAAA87D,GAAG,OAAIE,EAAgBF,EAAI,IAAElmD,QAAO,SAAC5S,EAAGC,GAAC,OAAKD,EAAIC,EAAID,EAAIC,CAAC,GAAE,IAF3F84D,EAAOn7D,EAIlB,IAEOG,OAAOD,KAAKi7D,GAAQnmD,QAAO,SAACV,EAAKtU,GAEtC,OADAsU,EAAItU,GAAMm7D,EAAOn7D,GAAM,EAChBsU,CACT,GAAG,CAAC,EACN,EACA6mD,OAAM,WACJ,OAAO90D,KAAKo0D,WAAWzlD,QAAO,SAAC5S,EAAGT,GAEhC,OADAS,EAAET,EAAE3B,IAAM2B,EAAEizD,MACLxyD,CACT,GAAG,CAAC,EACN,EACAy4D,SAAQ,WAAI,WAGV,OAFiBx0D,KAAK4qC,aAAaj8B,QAAO,SAACqmD,EAAInmD,GAAG,OAChDmmD,EAAGj6D,QAAO,SAAAO,GAAC,OAA8D,IAA1D,EAAKuzD,WAAWhgD,EAAIlV,IAAIZ,KAAI,SAAAyF,GAAC,OAAIA,EAAE7E,EAAE,IAAE40B,QAAQjzB,EAAE3B,GAAU,GAAC,GAAEqG,KAAK4qC,aAEtF,EACAqqB,mBAAkB,WAChB,OAAOj1D,KAAKw0D,SAASn5D,OAAS,CAChC,EACA65D,gBAAe,WACb,OAAIl1D,KAAKm1D,SAAWn1D,KAAKo1D,SAChB,CAACp1D,KAAKm0D,UAAUn0D,KAAKo1D,WAEvBp1D,KAAKw0D,QACd,EACAY,SAAQ,WACN,IAAM1/C,EAAW1V,KAAK8yD,oBAAsB9yD,KAAK0V,SAEjD,OADoB1V,KAAKq1D,SAAS3/C,GACPA,EAAP,IACtB,EACA4/C,UAAS,WACP,OAAOt1D,KAAKm1D,SAAWn1D,KAAKo1D,SAAWp1D,KAAK80D,OAAO90D,KAAKo1D,UAAY,CACtE,EACAG,SAAQ,WACN,OAAOv1D,KAAKm1D,WAAan1D,KAAKo1D,QAChC,EACAI,gCAA+B,WAG7B,OAAOx1D,KAAKqzD,YAAcrzD,KAAK0uD,YAAc1uD,KAAKu1D,UAAYv1D,KAAKw0D,SAASn5D,OAAS,CACvF,EACAo6D,oBAAmB,WACjB,OAAOz1D,KAAKqzD,YAAcrzD,KAAK0uD,YAAc1uD,KAAK01D,YAAY11D,KAAKo1D,UAAU/5D,MAC/E,EACAo1D,QAAO,WACL,IAAIzxD,EAAI,EAER,OAAO,KAAOgB,KAAK4qC,cAAc,SAAChtC,EAAQ,GAAkC,IAAhCjE,EAAE,EAAFA,GAEpCg8D,EAF6D,EAArBz4C,sBAY9C,OARIy4C,IACF/3D,EAAO+3D,GAAQ/3D,EAAO+3D,IAAS,GAC/B/3D,EAAO+3D,GAAMt2D,KAAK,CAChB3D,KAAM,IAAF,OAAMsD,GACVrF,GAAAA,KAGJqF,IACOpB,CACT,GAAG,CAAC,EACN,EACA8wD,WAAU,WACR,SAAU1uD,KAAK2yD,WAAY3yD,KAAK+yD,OAClC,EACA6C,YAAW,WACT,IAAM5zC,EAAUhiB,KAAK4a,QAAU5a,KAAK4a,OAAOqH,eAAkB,QAC7D,OAAOjiB,KAAK8zD,cAAgB,CAAE9xC,OAAAA,GAAW,CAAC,CAC5C,EACAitC,oBAAmB,WAAI,WACrB,OAAOjvD,KAAK4qC,aAAaj8B,QAAO,SAAC5S,EAAGT,GAClC,IAAM3B,EAAK2B,EAAE3B,GACP40D,EAAQ,EAAKuG,OAAOn7D,GACpBihB,EACA,EAAKg4C,0BAA0Bj5D,GAC1B,EAAKi5D,0BAA0Bj5D,GAEnC40D,EAAQ,EAAK+G,WAAc,EAAKrC,wBAC5B,UAEA,SAKX,OADAl3D,EAAEpC,GAAMihB,EACD7e,CACT,GAAG,CAAC,EACN,EACAszD,wBAAuB,WAAI,WACzB,OAAOrvD,KAAK4qC,aAAaj8B,QAAO,SAAC5S,EAAGT,GAClC,IAEQu6D,EAFFl8D,EAAK2B,EAAE3B,GACP4F,GACEs2D,EAAM,CACVnF,aAAa,EACbC,kBAAkB,EAClBC,oBAAoB,EACpBkF,YAAY,EACZhF,aAAc,IAGZ,EAAK+B,8BAA8Bl5D,GAC9B,SACFk8D,GACA,EAAKhD,8BAA8Bl5D,IAGnCk8D,GAIT,OADA95D,EAAEpC,GAAM4F,EACDxD,CACT,GAAG,CAAC,EACN,EACAo5D,QAAO,WACL,OAAOn1D,KAAKqzD,YAAcrzD,KAAK0uD,UACjC,EACAxF,QAAO,WAAI,WACT,OAAO,SAACvvD,GACN,OAAQ,EAAK+0D,YAAe/0D,IAAO,EAAK61B,SAC1C,CACF,EACAumC,eAAc,WACZ,OAAO/1D,KAAK0uD,WAAa1uD,KAAKwvB,UAAY,IAC5C,IACG2f,EAAAA,EAAAA,IAAW,CAAC,mBACZxnC,EAAAA,EAAAA,IAAS,CACVkvB,sBAAuB,SAAA16B,GAAK,OAAIA,EAAMimB,IAAIyU,qBAAqB,KAGnEh2B,WAAY,CACV6mD,OAAAA,GAAAA,QACAsO,WAAAA,GACAC,oBAAAA,GACAC,kBAAAA,IAEFtd,MAAO,CACLljC,SAAQ,SAAE0jC,EAAQmQ,GAChB,IAAM4M,EAAoBn2D,KAAKg0D,kBAAkB5a,GAC3Cgd,EAAoBp2D,KAAKg0D,kBAAkBzK,GAC7C4M,GAAqBC,GAAqBD,IAAsBC,EAClEp2D,KAAK8uD,aAAa9uD,KAAK+zD,kBAEvB/zD,KAAKgzD,mBAET,EACAL,SAAQ,SAAE/mD,GACJA,EACF5L,KAAKgzD,oBAELhzD,KAAKq2D,mBAET,EACAvC,cAAa,SAAEloD,GACb5L,KAAKyvC,OAAOvzC,SACV,mBACA,CAAEwZ,SAAU1V,KAAK0V,SAAUsM,OAAQ,GAAF,OAAKhiB,KAAKs5C,IAAIxwB,aAAY,OAE/D,GAEFhpB,QAAS,CACPkzD,kBAAiB,WAAI,WACfhzD,KAAK4a,OACP5a,KAAKyvC,OAAOtzC,MAAMimB,IAAIC,kBAAkB2wC,kBAAkB,CAAEr5D,GAAIqG,KAAK0V,WAClEpc,MAAK,YAAgC,IAA7Bg9D,EAAS,EAATA,UAAWC,EAAW,EAAXA,YAClB,EAAK9mB,OAAOvzC,SAAS,iBAAkB,CAAEoc,SAAUg+C,IACnD,EAAK7mB,OAAOvzC,SAAS,iBAAkB,CAAEoc,SAAUi+C,IACnD,EAAKzH,aAAa,EAAKiF,iBACzB,IAEF/zD,KAAKyvC,OAAOtzC,MAAMimB,IAAIC,kBAAkBF,YAAY,CAAExoB,GAAIqG,KAAK0V,WAC5Dpc,MAAK,SAACshB,GACL,EAAK60B,OAAOvzC,SAAS,iBAAkB,CAAEoc,SAAU,CAACsC,KACpD,EAAKo4C,mBACP,GAEN,EACAnE,WAAU,SAAEl1D,GACV,OAAOqG,KAAKywD,QAAQ92D,IAAO,EAC7B,EACA68D,aAAY,WACV,OAAOx2D,KAAK0uD,WAAa1uD,KAAKwvB,UAAY,IAC5C,EACAs/B,aAAY,SAAEn1D,GACPA,IACLqG,KAAKwvB,UAAY71B,EAEZqG,KAAKmzD,kBACRnzD,KAAKyvC,OAAOvzC,SAAS,cAAevC,GAGtCqG,KAAKyvC,OAAOvzC,SAAS,sBAAuBvC,GAC5CqG,KAAKyvC,OAAOvzC,SAAS,wBAAyBvC,GAChD,EACAo1D,eAAc,WACZ/uD,KAAK2yD,UAAY3yD,KAAK2yD,QACxB,EACAqB,kBAAiB,SAAEt+C,GACjB,IAAMkF,EAAS5a,KAAKyvC,OAAOtzC,MAAMmc,SAASoB,kBAAkBhE,GAC5D,OAAO,KAAIkF,EAAQ,6CAA8C,KAAIA,EAAQ,6BAC/E,EACA67C,iBAAgB,SAAE98D,EAAI+8D,GACpB12D,KAAK4yD,0BAA4B,SAC5B5yD,KAAK4yD,2BAAyB,cAChCj5D,EAAK+8D,GAEV,EACA1H,oBAAmB,SAAEr1D,GACnB,IACM+8D,EAA2B,YADf12D,KAAKivD,oBAAoBt1D,GACE,SAAW,UACxDqG,KAAKy2D,iBAAiB98D,EAAI+8D,EAC5B,EACAC,4BAA2B,SAAEh9D,EAAI+8D,GAAY,WAC3C12D,KAAKy2D,iBAAiB98D,EAAI+8D,GAC1B12D,KAAK6uD,WAAWl1D,GAAIZ,KAAI,SAAAuC,GAAC,OAAIA,EAAE3B,EAAE,IAAEZ,KAAI,SAAAY,GAAE,OAAI,EAAKg9D,4BAA4Bh9D,EAAI+8D,EAAW,GAC/F,EACAxH,sBAAqB,SAAEv1D,GACrBqG,KAAK22D,4BAA4Bh9D,EAAI,UACvC,EACA21D,yBAAwB,SAAE31D,EAAI+B,EAAMkQ,GAClC5L,KAAK6yD,8BAAgC,SAChC7yD,KAAK6yD,+BAA6B,cACpCl5D,EAAE,SACEqG,KAAK6yD,8BAA8Bl5D,IAAG,cACxC+B,EAAOkQ,KAGd,EACA2jD,4BAA2B,SAAE51D,EAAI+B,GAC/BsE,KAAKsvD,yBAAyB31D,EAAI+B,GAAOsE,KAAKqvD,wBAAwB11D,GAAI+B,GAC5E,EACAk7D,qBAAoB,SAAEj9D,GAGpB,IAFA,IAAIkV,EAAMlV,EACNk9D,EAAS72D,KAAKq1D,SAASxmD,GACpBA,GAAK,CAEV,GAAyC,YAArC7O,KAAKivD,oBAAoB4H,GAC3B,OAAOhoD,EAETgoD,EAAS72D,KAAKq1D,SAASwB,GACvBhoD,EAAM7O,KAAKq1D,SAASxmD,EACtB,CAEA,OAAO7O,KAAKw0D,SAAS,GAAKx0D,KAAKw0D,SAAS,GAAG76D,QAAK4K,CAClD,EACAuyD,eAAc,SAAEn9D,EAAIo9D,GAClB/2D,KAAKg3D,YAAYr9D,EACnB,EACAs9D,eAAc,WACZj3D,KAAKg3D,YAAYh3D,KAAKk3D,yBAAyBl3D,KAAKo1D,WAAap1D,KAAKw0D,SAAS,GAAG76D,GACpF,EAEAw9D,OAAM,WACJn3D,KAAK8yD,mBAAqB,KAC1B9yD,KAAK8uD,aAAa9uD,KAAK0V,SACzB,EACAshD,YAAW,SAAEr9D,GAAI,WACVA,IAGDqG,KAAK+yD,OAEP/yD,KAAKG,QAAQd,KAAK,CAAE3D,KAAM,eAAgBo5B,OAAQ,CAAEn7B,GAAAA,KAEpDqG,KAAK8yD,mBAAqBn5D,EAiB5BqG,KAAK05C,WAAU,WACb,EAAKoV,aAAan1D,EACpB,IACF,EACAy9D,YAAW,WACTp3D,KAAKg3D,YAAYh3D,KAAKo1D,UAAYp1D,KAAKw0D,SAAS,GAAG76D,GACrD,EACAq2D,WAAU,SAAEr2D,GACV,OAAOqG,KAAKm0D,UAAUx6D,EACxB,EACA07D,SAAQ,SAAE17D,GACR,IAAMihB,EAAS5a,KAAKgwD,WAAWr2D,GAC/B,GAAKihB,EAAL,CAGA,IAA+By8C,EAAaz8C,EAApCsC,sBACR,GAAKld,KAAKm0D,UAAUkD,GAGpB,OAAOA,CALP,CAMF,EACAC,aAAY,SAAE39D,GACZ,OAAOqG,KAAKq1D,SAAS17D,IAAOA,CAC9B,EAEA+7D,YAAW,SAAE/7D,GAGX,IAFA,IAAM28D,EAAY,GACdznD,EAAM7O,KAAKq1D,SAAS17D,GACjBkV,GACLynD,EAAUvwD,QAAQ/F,KAAKm0D,UAAUtlD,IACjCA,EAAM7O,KAAKq1D,SAASxmD,GAEtB,OAAOynD,CACT,EACAY,yBAAwB,SAAEv9D,GAGxB,IAFA,IAAIkV,EAAMlV,EACNk9D,EAAS72D,KAAKq1D,SAAS17D,GACpBk9D,GACLhoD,EAAM7O,KAAKq1D,SAASxmD,GACpBgoD,EAAS72D,KAAKq1D,SAASwB,GAEzB,OAAOhoD,CACT,EACAwnD,kBAAiB,WACfr2D,KAAKm3D,SACLn3D,KAAK4yD,0BAA4B,CAAC,CACpC,IC9hBJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,kMXLhDlyD,EAAAA,a,YAyMTJ,EAAAA,GAAAA,IAGE,O,MADCyiD,OAAK,SAAEriD,EAAAA,c,WA3MS,YADnBJ,EAAAA,GAAAA,IAyMM,O,MAvMHyiD,OAAK,SAAEriD,EAAAA,aACRpB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,eAAc,aACIh0C,EAAAA,WAAU,MAAYA,EAAAA,e,CAGtCA,EAAAA,aAAU,YADlBJ,EAAAA,GAAAA,IAsBM,MAtBNC,GAsBM,EAlBJC,EAAAA,GAAAA,GAA8D,OAA9DyvC,IAA8D,SAAtCvvC,EAAAA,GAAG,0BAAD,GAElBA,EAAAA,cAAW,YADnBJ,EAAAA,GAAAA,IAMS,U,MAJPhB,MAAM,wBACLS,QAAK,yCAAUW,EAAAA,gBAAAA,EAAAA,eAAAA,MAAAA,EAAAA,UAAc,mB,SAE3BA,EAAAA,GAAG,sBAAD,qBAGEA,EAAAA,a,kBAAW,YADpBuwC,EAAAA,GAAAA,IAIEsmB,EAAAA,C,MAFC3sB,cAAc,EACftrC,MAAM,sBAGCoB,EAAAA,a,kBAAW,YADpBuwC,EAAAA,GAAAA,IAIEumB,EAAAA,C,MAFC5sB,cAAc,EACftrC,MAAM,0B,iBAGVkB,EAAAA,GAAAA,GA2KM,MA3KN0vC,GA2KM,CAzKIxvC,EAAAA,aAAU,YADlBJ,EAAAA,GAAAA,IAsIM,MAtIN+vC,GAsIM,CAjII3vC,EAAAA,kCAA+B,YADvCJ,EAAAA,GAAAA,IAsBM,MAtBNgwC,GAsBM,EAlBJM,EAAAA,GAAAA,IAiBS8X,EAAAA,CAhBPC,QAAQ,yCACRhrD,IAAI,SACJ2B,MAAM,wBACN8qB,MAAM,SACLrqB,SAAK,SAAUW,EAAAA,eAAc,c,CAEnBiI,MAAI,UACb,iBAEE,EAFFioC,EAAAA,GAAAA,IAEEQ,EAAAA,CADAzoC,KAAK,sB,IAGE/J,MAAI,UACb,iBAEO,EAFP4B,EAAAA,GAAAA,GAEO,sBADFE,EAAAA,IAAI,+BAAgCA,EAAAA,mBAAoB,CAAFywD,UAAezwD,EAAAA,sBAAkB,G,4CAM1FA,EAAAA,sBAAmB,YAD3BJ,EAAAA,GAAAA,IA2EM,MA3ENmxC,GA2EM,iBAvEJnxC,EAAAA,GAAAA,IAsEU8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IArES1vC,EAAAA,YAAYA,EAAAA,WAAQ,SAA9Bka,G,mBADTta,EAAAA,GAAAA,IAsEU,WApEP+G,IAAKuT,EAAOjhB,GACb2F,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,kBAAiB,qCACuBh0C,EAAAA,WAAWka,EAAOjhB,IAAI0B,OAAS,EAAH,SAAgBqF,EAAAA,wB,EAE1FkwC,EAAAA,GAAAA,IAoCE0Z,EAAAA,C,WAnCA5Z,IAAI,kBACH,kBAAiBhwC,EAAAA,aAAeA,EAAAA,WAChCyoD,UAAWvuC,EACX41C,YAAa9vD,EAAAA,WACb,cAAaA,EAAAA,uBAAyBA,EAAAA,sBAAsBka,EAAOjhB,IACnEuvD,QAASxoD,EAAAA,QAAQka,EAAOjhB,IACxB,kBAAiB+G,EAAAA,WACjB8uB,UAAW9uB,EAAAA,eACX+vD,QAAS/vD,EAAAA,WAAWka,EAAOjhB,IAC3B,aAAY+G,EAAAA,UACZ,kBAAiBA,EAAAA,cAClBpB,MAAM,+CAEL,cAAaoB,EAAAA,iBACb,wBAAuBA,EAAAA,oBACvB,wBAAuBA,EAAAA,oBACvB,0BAAyBA,EAAAA,sBACzB,oBAAmBA,EAAAA,gBACnB,oBAAmBA,EAAAA,gBACnB,+BAA8BA,EAAAA,mCAC9B8uD,KAAI,kBAAQ9uD,EAAAA,eAAeka,EAAOjhB,GAAE,EAEpC,0BAAyB+G,EAAAA,wBAAwBka,EAAOjhB,IAAI+2D,YAC5D,+BAA8BhwD,EAAAA,wBAAwBka,EAAOjhB,IAAIg3D,iBACjE,kCAAiCjwD,EAAAA,wBAAwBka,EAAOjhB,IAAIi3D,mBACpE,sBAAqBlwD,EAAAA,wBAAwBka,EAAOjhB,IAAIk3D,SACxD,2BAA0BnwD,EAAAA,wBAAwBka,EAAOjhB,IAAIm3D,aAC7D,iCAA8B,kBAAQpwD,EAAAA,4BAA4Bka,EAAOjhB,GAAI,cAAF,EAC3E,sCAAmC,kBAAQ+G,EAAAA,4BAA4Bka,EAAOjhB,GAAI,mBAAF,EAChF,yCAAsC,kBAAQ+G,EAAAA,4BAA4Bka,EAAOjhB,GAAI,qBAAF,EACnF,6BAA0B,kBAAQ+G,EAAAA,4BAA4Bka,EAAOjhB,GAAI,WAAF,EACvE,+BAA4B,SAAGy/C,GAAM,OAAK14C,EAAAA,4BAA4Bka,EAAOjhB,GAAI,eAAgBy/C,EAAM,EAEvG2X,OAAMrwD,EAAAA,aACNswD,iBAAgBtwD,EAAAA,gB,8oBAGXA,EAAAA,mCAAqCA,EAAAA,WAAWka,EAAOjhB,IAAI0B,OAAS,IAAH,YADzEiF,EAAAA,GAAAA,IA0BM,MA1BNkwC,GA0BM,EAtBJhwC,EAAAA,GAAAA,GAqBM,MArBNiwC,GAqBM,EAlBJG,EAAAA,GAAAA,IAiBS8X,EAAAA,CAhBP/qD,IAAI,SACJysB,MAAM,SACNu+B,QAAQ,mCACRrpD,MAAM,wDACLS,SAAK,6BAAUW,EAAAA,eAAeka,EAAOjhB,GAAE,iB,CAE7BgP,MAAI,UACb,iBAEE,EAFFioC,EAAAA,GAAAA,IAEEQ,EAAAA,CADAzoC,KAAK,uB,IAGE/J,MAAI,UACb,iBAEO,EAFP4B,EAAAA,GAAAA,GAEO,sBADFE,EAAAA,IAAI,yBAA0BA,EAAAA,WAAWka,EAAOjhB,IAAI0B,OAAS,EAAG,CAANo8D,WAAoB/2D,EAAAA,WAAWka,EAAOjhB,IAAI0B,OAAS,KAAH,G,kGAQ3HiF,EAAAA,GAAAA,IA8BE8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IA7BiB1vC,EAAAA,iBAAe,SAAzBka,G,mBADTq2B,EAAAA,GAAAA,IA8BEigB,EAAAA,CA5BC7pD,IAAKuT,EAAOjhB,G,WACb+2C,IAAI,kBACH6d,MAAO,EAEP3zC,OAAQA,EACR,aAAYla,EAAAA,UACZkqC,aAAclqC,EAAAA,aACd+tD,YAAa/tD,EAAAA,YACb,cAAaA,EAAAA,WACb,2BAA0BA,EAAAA,sBAC1B,kBAAiBA,EAAAA,cAEjBwoD,QAASxoD,EAAAA,QACT,cAAaA,EAAAA,WACb8uB,UAAW9uB,EAAAA,eACX,gBAAeA,EAAAA,aACf,kBAAiBA,EAAAA,eAEjB45B,OAAQ55B,EAAAA,iBACR,wBAAuBA,EAAAA,oBACvB,wBAAuBA,EAAAA,oBACvB,0BAAyBA,EAAAA,sBACzB,oBAAmBA,EAAAA,gBACnB,oBAAmBA,EAAAA,gBACnB,4BAA2BA,EAAAA,wBAC3B,8BAA6BA,EAAAA,yBAC7B,iCAAgCA,EAAAA,4BAChC8uD,KAAM9uD,EAAAA,QAAUA,EAAAA,oBAAiB6D,G,wbAI9B7D,EAAAA,eAAY,YADpBJ,EAAAA,GAAAA,IAkCM,MAlCNoxC,GAkCM,EA9BJlxC,EAAAA,GAAAA,GA6BU,gCA5BRF,EAAAA,GAAAA,IA2BE8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IA1BiB1vC,EAAAA,cAAY,SAAtBka,G,mBADTq2B,EAAAA,GAAAA,IA2BEqZ,EAAAA,CAzBCjjD,IAAKuT,EAAOjhB,G,WACb+2C,IAAI,kBACH,kBAAiBhwC,EAAAA,aAAeA,EAAAA,WAChCyoD,UAAWvuC,EACX41C,YAAa9vD,EAAAA,WACb,cAAaA,EAAAA,uBAAyBA,EAAAA,sBAAsBka,EAAOjhB,IACnEuvD,QAASxoD,EAAAA,QAAQka,EAAOjhB,IACxB,kBAAiB+G,EAAAA,WACjB8uB,UAAW9uB,EAAAA,eACX+vD,QAAS/vD,EAAAA,WAAWka,EAAOjhB,IAC3B,aAAY+G,EAAAA,UACZ,kBAAiBA,EAAAA,cAClBpB,MAAM,+CAEL,wBAAuBoB,EAAAA,oBACvB,wBAAuBA,EAAAA,oBACvB,0BAAyBA,EAAAA,sBACzB,oBAAmBA,EAAAA,gBACnB,oBAAmBA,EAAAA,gBACnB,4BAA2BA,EAAAA,wBAC3B,8BAA6BA,EAAAA,yBAC7B,iCAAgCA,EAAAA,4BAEhCqwD,OAAMrwD,EAAAA,aACNswD,iBAAgBtwD,EAAAA,gB,0bY1KjBpB,MAAM,6C,IACJA,MAAM,kB,ykBCjBpBq6B,GAAAA,GAAAA,IAAYuc,GAAAA,KAqFZ,SAvEqB,CACnBr1C,WAAY,CACV0wD,QAAAA,GAAAA,QACApc,gBAAAA,GACAD,iBAAAA,IAEFj7C,KAAI,WACF,MAAO,CACL+tD,QAAQ,EAEZ,EACA3R,QAAO,YApBA,CACLp9B,QAAS,oBACTmB,UAAW,gBACXD,IAAK,UACL,kBAAmB,gBACnB,2BAA4B,aAgBRna,KAAK6jD,OAAOnoD,OAC9BsE,KAAKyvC,OAAOvzC,SAAS,kBAAmB8D,KAAK6jD,OAAOnoD,KAExD,EACAwL,SAAU,OACRwwD,aAAY,WAEV,MAAiB,mBADH13D,KAAK6jD,OAAOnoD,IAE5B,IACGiM,EAAAA,EAAAA,IAAS,CACVgG,YAAa,SAAAxR,GAAK,OAAIA,EAAMa,MAAM2Q,WAAW,EAC7CynC,YAAa,SAAAj5C,GAAK,OAAIA,EAAM4Q,SAAQ,OAAQ,EAC5CsoC,WAAY,SAAAl5C,GAAK,OAAIA,EAAM4Q,SAASsoC,UAAU,KAC9C,IACFsB,cAAa,WACX,OAAO/B,GACL96C,OAAOsd,QAAQu7B,IAAW55C,KAAI,+BAAEuC,EAAC,KAAG,sBAAa,IAAEI,KAAMJ,GAAC,IAC1D,CACEu5C,SAAU70C,KAAKqT,6BACf0hC,aAAc/0C,KAAKq1C,WACnBL,UAAWh1C,KAAKo1C,YAChBznC,YAAa3N,KAAK2N,aAGxB,IAEF7N,QAAS,CACP63D,SAAQ,WAAI,WAMVh7D,YAAW,WACT,EAAKqrD,QAAS,CAChB,GAAG,GACL,EACA4P,UAAS,SAAE9yD,GAIJ9E,KAAKgoD,QACRljD,EAAM+yD,iBAEV,EACAC,aAAY,WACV,IAAMjlB,EAAQ7yC,KAAK6jD,OAAOnoD,KAC1B,GAAc,iBAAVm3C,EACF,MAAO,IAAM7yC,KAAK6jD,OAAO/uB,OAAOn3B,IAElC,GAAc,mBAAVk1C,EACF,OAAO7yC,KAAKyvC,OAAOj7B,QAAQ2R,cAAcnmB,KAAK6jD,OAAO/uB,OAAOn7B,IAE9D,IAAMo+D,EA1EH,CACL9+C,QAAS,oBACTmB,UAAW,gBACXD,IAAK,UACL,kBAAmB,gBACnB,2BAA4B,YAqEMna,KAAK6jD,OAAOnoD,MAC5C,OAAOq8D,EAAU/3D,KAAKg4D,GAAGD,GAAWllB,CACtC,ICnFJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,yJFNzD5B,EAAAA,GAAAA,IAwCU+gB,EAAAA,CAvCRC,QAAQ,QACR3yD,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,eAAc,MACFh0C,EAAAA,UACjB,WAAU,CAAAs4C,EAAAA,aACX,oBAAkB,YAClB,gBAAc,wCACbif,OAAMv3D,EAAAA,SACN8/B,QAAK,8BAAQ9/B,EAAAA,QAAS,CAAH,I,CAETd,SAAO,UAChB,iBAIE,CAHMc,EAAAA,eAAY,YADpBuwC,EAAAA,GAAAA,IAIEoG,EAAAA,C,MAFC,YAAU,EACX/3C,MAAM,iB,YAERgB,EAAAA,GAAAA,IAOK,yBANHA,EAAAA,GAAAA,IAKE8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IAJe1vC,EAAAA,eAAa,SAArB0C,G,mBADT6tC,EAAAA,GAAAA,IAKEqE,EAAAA,CAHCjuC,IAAKjE,EAAK1H,KACV,YAAU,EACV0H,KAAMA,G,iCAIF6uD,SAAO,UAChB,iBAYO,EAZPzxD,EAAAA,GAAAA,GAYO,OAZPyvC,GAYO,EAXLzvC,EAAAA,GAAAA,GAAwD,OAAxD0vC,IAAwD,SAAxBxvC,EAAAA,gBAAY,IAC5CF,EAAAA,GAAAA,GAKO,cAJLowC,EAAAA,GAAAA,IAGEQ,EAAAA,CAFAO,KAAK,KACLhpC,KAAK,oBAGTnI,EAAAA,GAAAA,GAGE,QAFAlB,MAAM,gBACLS,QAAK,8BAAEW,EAAAA,WAAAA,EAAAA,UAAAA,MAAAA,EAAAA,UAAS,O,kQG1B3Bi5B,GAAAA,GAAAA,IACE+kB,GAAAA,IACAsD,GAAAA,IACA2C,GAAAA,IACAD,GAAAA,IACAwT,GAAAA,IACAC,GAAAA,KAGF,IAAMC,GAAW,CACf74D,MAAO,CACL,WACA,eACA,QACA,SACA,SACA,MACA,WACA,QACA,kBACA,YACA,kBAEFtF,KAAI,WACF,MAAO,CACLo+D,eAAe,EACfC,QAAQ,EACRC,WAAW,EACXC,aAAa,EACbC,mBAAoB,EACpBC,gBAAgB,EAEpB,EACA73D,WAAY,CACV6mD,OAAAA,GAAAA,QACAiR,aAAAA,GACAC,aAAAA,GACA3C,oBAAAA,GACAC,kBAAAA,IAEFhvD,S,uWAAU,EACR2xD,wBAAuB,WAAI,WACzB,OAAO74D,KAAKsb,SAAS7C,gBAAgB1d,QAAO,SAAA6f,GAAM,MAA0B,SAAtB,EAAKk9C,cAA4Bl9C,EAAOjhB,IAAM,EAAK2hB,SAASzC,OAAS+B,EAAOjhB,IAAM,EAAK2hB,SAAS1C,KAAM,GAC9J,EACAkgD,wBAAuB,WAAI,WACzB,OAAQ94D,KAAKivB,iBAAmB,IAAIl0B,QAAO,SAAA2a,GAAQ,OAAI,EAAK4F,SAAS/C,eAAe7C,EAAS,GAC/F,EACAiD,eAAc,WACZ,OAAO3Y,KAAKsb,SAAS3C,cACvB,EACAogD,eAAc,WACZ,OAAO/4D,KAAKsb,SAAS3C,eAAiB,GAAmC,IAA9B3Y,KAAKsb,SAASpC,WAC3D,EACA8/C,iBAAgB,WACd,OAAkC,IAA9Bh5D,KAAKsb,SAASpC,YACTlZ,KAAKg4D,GAAG,mBAER,GAAP,OAAUh4D,KAAKg4D,GAAG,qBAAoB,aAAKh4D,KAAK2Y,eAAc,IAElE,EACAsgD,uBAAsB,WACpB,OAAkC,IAA9Bj5D,KAAKsb,SAASpC,YACT,IAEAlZ,KAAK2Y,eAAiB,GAAK,IAAM3Y,KAAK2Y,cAEjD,EACA/P,QAAO,WACL,IAAIswD,EAAel5D,KAAKm5D,SAAwC,CAAC,aAA9B,CAAC,QAAS,iBAE7C,OADIn5D,KAAK04D,iBAAgBQ,EAAcA,EAAYj+D,OAAO,CAAC,WAAY,0BAChE,CACLonC,KAAM62B,EACNE,OAAQ,CAAC,oBAAoBn+D,OAAQ+E,KAAKm5D,SAA0C,GAA/B,CAAC,gBAAiB,YACvExwC,KAAM,CAAC,iBAAiB1tB,OAAQ+E,KAAKm5D,SAA4B,GAAjB,CAAC,eACjDE,OAAQ,CAAC,mBAAmBp+D,OAAQ+E,KAAKm5D,SAA8B,GAAnB,CAAC,iBAEzD,EAEAxK,sBAAqB,WACnB,OAAO,KAAM3uD,KAAKivB,gBACpB,EACAqqC,kBAAiB,WACf,IAAMC,EAASv5D,KAAKsb,SAAS7C,gBAAgBpd,OACvCm+D,EAAkBh+D,KAAKi+D,KAAKj+D,KAAKC,IAAI,EAAG2E,OAAOyoB,YAAc,KAC7D6wC,EAAiB15D,KAAKy4D,mBAAqBz4D,KAAK84D,wBAAwBz9D,OACxE4jC,EAAMzjC,KAAKC,IAAI,EAAGi+D,EAAiBF,GACnC/9D,EAAMD,KAAKyjC,IAAIs6B,EAAQG,EAAiBF,GAC9C,OAAOx5D,KAAKsb,SAAS7C,gBAAgBtb,MAAM8hC,EAAKxjC,GAAK1C,KAAI,SAAA0N,GAAC,OAAIA,EAAE9M,EAAE,GACpE,EACAggE,wBAAuB,WACrB,OAAO35D,KAAKyvC,OAAOj7B,QAAQ/G,aAAayE,gBAC1C,IACGvK,EAAAA,EAAAA,IAAS,CACViyD,aAAc,SAAAz9D,GAAK,MAAmC,WAA/BA,EAAK,UAAW6O,UAAuB,KAGlEqrC,QAAO,WACL,IAAM/7C,EAAQ0F,KAAKyvC,OACbt3B,EAAc7d,EAAM6B,MAAMa,MAAM2Q,YAAYwK,YAC5C0D,EAA2D,IAAzC7b,KAAKsb,SAAS7C,gBAAgBpd,OAItD,GAFA+E,OAAOk4B,iBAAiB,SAAUt4B,KAAK65D,cAEnCv/D,EAAM6B,MAAMimB,IAAIsU,SAAS12B,KAAK83D,cAAiB,OAAO,EAE1D3wC,GAAAA,eAA+B,CAC7B7sB,MAAAA,EACA6d,YAAAA,EACAmD,SAAUtb,KAAK83D,aACfj8C,gBAAAA,EACAxD,OAAQrY,KAAKqY,OACbwM,OAAQ7kB,KAAK6kB,OACblnB,IAAKqC,KAAKrC,KAEd,EACAm7C,QAAO,gBAC0B,IAApBjsC,SAASopB,SAClBppB,SAASyrB,iBAAiB,mBAAoBt4B,KAAK85D,wBAAwB,GAC3E95D,KAAKu4D,UAAY1rD,SAASopB,QAE5B71B,OAAOk4B,iBAAiB,UAAWt4B,KAAK+5D,gBACxCp9D,WAAWqD,KAAKg6D,yBAA0B,IAC5C,EACAvZ,UAAS,WACPrgD,OAAOsgD,oBAAoB,SAAU1gD,KAAK65D,cAC1Cz5D,OAAOsgD,oBAAoB,UAAW1gD,KAAK+5D,qBACZ,IAApBltD,SAASopB,QAAwBppB,SAAS6zC,oBAAoB,mBAAoB1gD,KAAK85D,wBAAwB,GAC1H95D,KAAKyvC,OAAOziC,OAAO,aAAc,CAAEsO,SAAUtb,KAAK83D,aAAclsD,OAAO,GACzE,EACA9L,QAAS,CACP+lD,YAAW,WACTzlD,OAAO0lD,SAAS,CAAEmU,IAAKj6D,KAAKs5C,IAAI4gB,WAClC,EACAC,mBAAoB,MAAS,WAC3Bn6D,KAAK04D,gBAAiB,CACxB,GAAG,KACH0B,uBAAsB,WACfp6D,KAAK04D,iBACR14D,KAAK04D,gBAAiB,GAExB14D,KAAKm6D,oBACP,EACAJ,eAAc,SAAExgE,GAEV,CAAC,WAAY,SAASuD,SAASvD,EAAEoH,OAAOqC,QAAQnI,gBACtC,MAAVtB,EAAE8N,KAAarH,KAAKse,iBAC1B,EACAA,gBAAe,WACqB,IAA9Bte,KAAKsb,SAASpC,aAChBlZ,KAAKyvC,OAAOziC,OAAO,gBAAiB,CAAEsO,SAAUtb,KAAK83D,aAAcn5C,eAAe,IAClF3e,KAAKyvC,OAAOziC,OAAO,aAAc,CAAEsO,SAAUtb,KAAK83D,aAAcn+D,GAAI,IACpEqG,KAAKq6D,uBAELr6D,KAAKo6D,yBACLp6D,KAAKyvC,OAAOziC,OAAO,kBAAmB,CAAEsO,SAAUtb,KAAK83D,eACvD93D,KAAKs4D,QAAS,GAEhBl4D,OAAO0lD,SAAS,CAAEmU,IAAK,GACzB,EACAI,mBAAoB,MAAS,WAAY,WACjC//D,EAAQ0F,KAAKyvC,OACbt3B,EAAc7d,EAAM6B,MAAMa,MAAM2Q,YAAYwK,YAClD7d,EAAM0S,OAAO,aAAc,CAAEsO,SAAUtb,KAAK83D,aAAclsD,OAAO,IACjEub,GAAAA,eAA+B,CAC7B7sB,MAAAA,EACA6d,YAAAA,EACAmD,SAAUtb,KAAK83D,aACf17C,OAAO,EACPP,iBAAiB,EACjBxD,OAAQrY,KAAKqY,OACbwM,OAAQ7kB,KAAK6kB,OACblnB,IAAKqC,KAAKrC,MACTrE,MAAK,YAAkB,IAAfgf,EAAQ,EAARA,SACLA,GAAgC,IAApBA,EAASjd,SACvB,EAAKm9D,aAAc,EAEvB,IAAE,SAAS,kBACTl+D,EAAM0S,OAAO,aAAc,CAAEsO,SAAU,EAAKw8C,aAAclsD,OAAO,GAAQ,GAE7E,GAAG,SAAM,GACTouD,yBAAwB,WACtB,GAAKh6D,KAAKkI,MAAMoT,UACXtb,KAAK25D,wBAAV,CAEA,IAAMrhD,EAAWtY,KAAKkI,MAAMoT,SAAS3X,SAC/B22D,EAAoB9+D,KAAKC,IAAI,EAAGD,KAAKyjC,IAAIj/B,KAAKy4D,mBAAoBngD,EAASjd,OAAS,IAE1F,GAAwB,IAApBid,EAASjd,OAAb,CAEA,IAAM2mB,EAASxmB,KAAKC,IAAIoR,SAAS8b,KAAK6wB,aAAcp5C,OAAOm6D,aAErDC,EAAiBp6D,OAAOm6D,YAAoC,GAArBn6D,OAAOyoB,YAIhD4xC,EAAcj/D,KAAKk/D,MAAMpiD,EAASjd,QAAUm/D,EAAiBx4C,IAC7DqJ,EAAM/S,EAASmiD,GAAaE,wBAAwB3gB,EAKlD4gB,EAAsBtiD,EAASgiD,GAAmBK,wBAAwB3gB,EAQhF,IAPIx+C,KAAKq/D,IAAIxvC,GAAOuvC,IAClBH,EAAcH,EACdjvC,EAAMuvC,GAKDvvC,GAAO,IAAMovC,EAAcniD,EAASjd,OAAS,GAClDgwB,GAAO/S,EAASmiD,GAAajhB,aAC7BihB,IAEF,KAAOpvC,EAAMjrB,OAAOyoB,YAAc,KAAO4xC,EAAc,GAErDpvC,GAAO/S,IADPmiD,GAC6BjhB,aAK/Bx5C,KAAKy4D,mBAAqBgC,CAjCO,CALQ,CAuC3C,EACAK,WAAU,SAAEvhE,GACV,IAAMwhE,EAAYluD,SAAS8b,KAAKgyC,wBAC1B34C,EAASxmB,KAAKC,IAAIs/D,EAAU/4C,QAAU+4C,EAAU/gB,IACxB,IAA1Bh6C,KAAKsb,SAASvC,SACd/Y,KAAKs5C,IAAIE,aAAe,GACvBp5C,OAAOyoB,YAAczoB,OAAOm6D,aAAiBv4C,EAAS,KACzDhiB,KAAKq6D,oBAET,EACAR,aAAc,MAAS,SAAUtgE,GAC/ByG,KAAKq4D,cAAgBr4D,KAAKs5C,IAAI4gB,UAAY95D,OAAOkkD,QACjDtkD,KAAKg6D,2BACLh6D,KAAK86D,WAAWvhE,EAClB,GAAG,KACHugE,uBAAsB,WACpB95D,KAAKu4D,UAAY1rD,SAASopB,MAC5B,GAEF2iB,MAAO,CACLjgC,eAAc,SAAE4I,GACd,GAAKvhB,KAAKyvC,OAAOj7B,QAAQ/G,aAAa4kD,WAGlC9wC,EAAQ,EAAG,CAEb,IAAMy5C,EAAMnuD,SAAS4b,mBACRroB,OAAOm6D,aAAeS,EAAI5yD,YAAc4yD,EAAIC,WAAa,GAC5D,KACLj7D,KAAKs4D,QACJt4D,KAAKu4D,WAAav4D,KAAKyvC,OAAOj7B,QAAQ/G,aAAaytD,iBAIvDl7D,KAAKs4D,QAAS,EAFdt4D,KAAKse,iBAIT,CACF,IAIJ,YCxQA,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,uNjBNzDhe,EAAAA,GAAAA,IAsJM,OAtJAhB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAAA,WAAeh0C,EAAAA,QAAQ2hC,Q,EAChC7hC,EAAAA,GAAAA,GAgFM,OAhFAlB,OAAKo1C,EAAAA,GAAAA,IAAEh0C,EAAAA,QAAQ04D,S,CAEV14D,EAAAA,U,kBAAQ,YADjBuwC,EAAAA,GAAAA,IAGEkqB,EAAAA,C,MADC,gBAAez6D,EAAAA,c,2BAGVA,EAAAA,gBAAkBA,EAAAA,WAAQ,YADlCJ,EAAAA,GAAAA,IAkBM,MAlBNC,GAkBM,EAdJC,EAAAA,GAAAA,GAaS,UAZPlB,MAAM,uCACNI,KAAK,SACJoN,MAAOpM,EAAAA,GAAG,yBACVX,QAAK,8BAAEW,EAAAA,aAAAA,EAAAA,YAAAA,MAAAA,EAAAA,UAAW,I,EAEnBkwC,EAAAA,GAAAA,IAMWyV,EAAAA,CAND/mD,MAAM,qCAAmC,C,mBACjD,iBAA0B,EAA1BsxC,EAAAA,GAAAA,IAA0BQ,EAAAA,CAAlBzoC,KAAK,cACbioC,EAAAA,GAAAA,IAGEQ,EAAAA,CAFAzoC,KAAK,QACLgsC,UAAU,S,qCAKFj0C,EAAAA,eAAiBA,EAAAA,WAAQ,YAAzCJ,EAAAA,GAAAA,IA+BW8vC,GAAAA,GAAAA,CAAA/oC,IAAAA,GAAA,CA7BD3G,EAAAA,iBAAc,YADtBJ,EAAAA,GAAAA,IAiBM,MAjBN4vC,GAiBM,EAbJ1vC,EAAAA,GAAAA,GAYS,UAXPlB,MAAM,kCACLwN,MAAOpM,EAAAA,iBACPX,QAAK,yCAAUW,EAAAA,iBAAAA,EAAAA,gBAAAA,MAAAA,EAAAA,UAAe,kB,EAE/BkwC,EAAAA,GAAAA,IAGEQ,EAAAA,CAFA,iBACAzoC,KAAK,iBAEPnI,EAAAA,GAAAA,GAEM,MAFN8vC,IAEM,SADD5vC,EAAAA,wBAAsB,aAKjBA,EAAAA,U,kBAAQ,YADtBJ,EAAAA,GAAAA,IAWM,O,MATJhB,MAAM,+CACLwN,MAAOpM,EAAAA,GAAG,uBACV,iBAAe,EACfX,QAAK,uBAAN,cAAc,e,EAEd6wC,EAAAA,GAAAA,IAGEQ,EAAAA,CAFA,iBACAzoC,KAAK,W,2BAIXrI,EAAAA,GAAAA,IAeW8vC,GAAAA,GAAAA,CAAA/oC,IAAAA,GAAA,CAbD3G,EAAAA,iBAAc,YADtBJ,EAAAA,GAAAA,IAMS,U,MAJPhB,MAAM,iCACLS,QAAK,yCAAUW,EAAAA,iBAAAA,EAAAA,gBAAAA,MAAAA,EAAAA,UAAe,mB,SAE5BA,EAAAA,kBAAgB,IAGPA,EAAAA,UAIP,kBAJe,YADtBJ,EAAAA,GAAAA,IAMM,O,MAJJhB,MAAM,sBACLS,QAAK,uBAAN,cAAc,gB,SAEXW,EAAAA,GAAG,wBAAD,UAIAA,EAAAA,U,kBAAQ,YADjBuwC,EAAAA,GAAAA,IAGEsmB,EAAAA,C,MADAj4D,MAAM,sBAGCoB,EAAAA,U,kBAAQ,YADjBuwC,EAAAA,GAAAA,IAGEumB,EAAAA,C,MADAl4D,MAAM,uB,IAGVkB,EAAAA,GAAAA,GA6BM,OA7BAlB,OAAKo1C,EAAAA,GAAAA,IAAEh0C,EAAAA,QAAQioB,O,EACnBnoB,EAAAA,GAAAA,GA2BM,MA3BNgwC,GA2BM,iBAtBJlwC,EAAAA,GAAAA,IAUE8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IATmB1vC,EAAAA,yBAAuB,SAAnCgV,G,mBADTu7B,EAAAA,GAAAA,IAUEmqB,EAAAA,CARC/zD,IAAKqO,EAAW,UACjBstC,KAAK,WACL1jD,MAAM,gBACL,YAAWoW,EACX+4C,aAAa,EACb,2BAA0B/tD,EAAAA,sBAC1B,aAAYA,EAAAA,UACZ,kBAAiBA,EAAAA,Q,yGAEpBJ,EAAAA,GAAAA,IAUE8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IATiB1vC,EAAAA,yBAAuB,SAAjCka,G,mBADTq2B,EAAAA,GAAAA,IAUEmqB,EAAAA,CARC/zD,IAAKuT,EAAOjhB,GACbqpD,KAAK,WACL1jD,MAAM,gBACL,YAAWsb,EAAOjhB,GAClB80D,aAAa,EACb,aAAY/tD,EAAAA,UACZ,kBAAiBA,EAAAA,OACjB,iBAAgBA,EAAAA,0BAA4BA,EAAAA,kBAAkB5D,SAAS8d,EAAOjhB,K,0FAIrF6G,EAAAA,GAAAA,GAqCM,OArCAlB,OAAKo1C,EAAAA,GAAAA,IAAEh0C,EAAAA,QAAQ24D,S,eACnBpoB,EAAAA,GAAAA,IAmCWsV,GAAAA,GAAAA,CAlCRjpB,GAAI58B,EAAAA,eACJ+H,UAAW/H,EAAAA,WAAaA,EAAAA,gB,CAGZ,IAALA,EAAAA,QAAK,YADbJ,EAAAA,GAAAA,IAKM,MALNmwC,IAKM,SADD/vC,EAAAA,GAAG,yBAAD,IAGMA,EAAAA,cAAW,YADxBJ,EAAAA,GAAAA,IAKM,MALNoxC,IAKM,SADDhxC,EAAAA,GAAG,8BAAD,IAGOA,EAAAA,SAASqY,UAKd,YAGTzY,EAAAA,GAAAA,IASM,MATNwwC,GASM,EALJF,EAAAA,GAAAA,IAIEQ,EAAAA,CAHAzoC,KAAK,eACL84C,KAAA,GACA9P,KAAK,YAfqB,YAD9BrxC,EAAAA,GAAAA,IAQS,U,MANPhB,MAAM,wBACLS,QAAK,0CAAUW,EAAAA,oBAAkB,kB,EAElCF,EAAAA,GAAAA,GAEM,MAFNmwC,IAEM,SADDjwC,EAAAA,GAAG,wBAAD,O,kCkBvHjB,GAhBuB,CACrBG,WAAY,CACVu3D,SAAAA,IAEFlxD,SAAU,CACRoU,SAAQ,WAAM,OAAOtb,KAAKyvC,OAAOtzC,MAAMmc,SAASwB,UAAS,MAAQ,GAEnEu8B,QAAO,WACLr2C,KAAKyvC,OAAOvzC,SAAS,wBAAyB,CAAEof,SAAU,UAC5D,EACAmlC,UAAS,WACPzgD,KAAKyvC,OAAOvzC,SAAS,uBAAwB,SAC/C,GCNF,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,qECJzD+0C,EAAAA,GAAAA,IAIEoqB,EAAAA,CAHCvuD,MAAOpM,EAAAA,GAAG,iBACV4a,SAAU5a,EAAAA,SACV,gBAAe,U,iCCYpB,GAfkC,CAChCG,WAAY,CACVu3D,SAAAA,IAEFlxD,SAAU,CACRoU,SAAQ,WAAM,OAAOtb,KAAKyvC,OAAOtzC,MAAMmc,SAASwB,UAAUI,iBAAkB,GAE9Em8B,QAAO,WACLr2C,KAAKyvC,OAAOvzC,SAAS,wBAAyB,CAAEof,SAAU,qBAC5D,EACAmlC,UAAS,WACPzgD,KAAKyvC,OAAOvzC,SAAS,uBAAwB,oBAC/C,GCNF,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,qECJzD+0C,EAAAA,GAAAA,IAIEoqB,EAAAA,CAHCvuD,MAAOpM,EAAAA,GAAG,YACV4a,SAAU5a,EAAAA,SACV,gBAAe,qB,iCCMpB,GATwB,CACtBG,WAAY,CACVu3D,SAAAA,IAEFlxD,SAAU,CACRoU,SAAQ,WAAM,OAAOtb,KAAKyvC,OAAOtzC,MAAMmc,SAASwB,UAAUb,OAAQ,ICCtE,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,qECJzDg4B,EAAAA,GAAAA,IAIEoqB,EAAAA,CAHCvuD,MAAOpM,EAAAA,GAAG,gBACV4a,SAAU5a,EAAAA,SACV,gBAAe,W,iCCqBpB,GAvBoB,CAClB21C,QAAO,WACLr2C,KAAKyvC,OAAOziC,OAAO,gBAAiB,CAAEsO,SAAU,QAChDtb,KAAKyvC,OAAOvzC,SAAS,wBAAyB,CAAEof,SAAU,MAAO3d,IAAKqC,KAAKrC,KAC7E,EACAkD,WAAY,CACVu3D,SAAAA,IAEFlxD,SAAU,CACRvJ,IAAG,WAAM,OAAOqC,KAAK6jD,OAAO/uB,OAAOn3B,GAAI,EACvC2d,SAAQ,WAAM,OAAOtb,KAAKyvC,OAAOtzC,MAAMmc,SAASwB,UAAUnc,GAAI,GAEhEi7C,MAAO,CACLj7C,IAAG,WACDqC,KAAKyvC,OAAOziC,OAAO,gBAAiB,CAAEsO,SAAU,QAChDtb,KAAKyvC,OAAOvzC,SAAS,wBAAyB,CAAEof,SAAU,MAAO3d,IAAKqC,KAAKrC,KAC7E,GAEF8iD,UAAS,WACPzgD,KAAKyvC,OAAOvzC,SAAS,uBAAwB,MAC/C,GCfF,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,qECJzD+0C,EAAAA,GAAAA,IAKEoqB,EAAAA,CAJCvuD,MAAOpM,EAAAA,IACP4a,SAAU5a,EAAAA,SACV,gBAAe,MACf/C,IAAK+C,EAAAA,K,uCCWV,GAdkB,CAChBwG,SAAU,CACRoU,SAAQ,WACN,OAAOtb,KAAKyvC,OAAOtzC,MAAMmc,SAASwB,UAAUM,SAC9C,GAEFvZ,WAAY,CACVu3D,SAAAA,IAEF3X,UAAS,WACPzgD,KAAKyvC,OAAOziC,OAAO,gBAAiB,CAAEsO,SAAU,aAClD,GCNF,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,qECJzD21B,EAAAA,GAAAA,IAIEoqB,EAAAA,CAHCvuD,MAAOpM,EAAAA,GAAG,iBACV4a,SAAU5a,EAAAA,SACV,gBAAe,a,iCCSpB,GAXyB,CACvBG,WAAY,CACV83D,aAAAA,IAEFzxD,SAAU,CACRwO,SAAQ,WACN,OAAO1V,KAAK6jD,OAAO/uB,OAAOn7B,EAC5B,ICFJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,yECJzDs3C,EAAAA,GAAAA,IAIEmqB,EAAAA,CAHC3M,aAAa,EACd,UAAQ,OACP,YAAW/tD,EAAAA,U,kCCHTpB,MAAM,uB,IACJA,MAAM,iB,IACJA,MAAM,S,0FCAXg8D,GAAc,CAClBvhD,SAAU,CAAC,WACX,gBAAiB,CAAC,SAAU,QAC5BqZ,QAAS,CAAC,UACVmoC,UAAW,CAAC,0BACZl4B,QAAS,CAAC,kBACV1P,MAAO,CAAC,SAsBV,SAnBqB,CACnB15B,KAAI,WACF,MAAO,CACLuhE,mBAAoBx7D,KAAKyvC,OAAOtzC,MAAMa,MAAM2Q,YAAY8tD,qBACxDC,WAAYJ,GAAYvhD,SACxB4hD,cAAe37D,KAAKyvC,OAAOtzC,MAAMa,MAAM2Q,YAAYs+B,WAAWnvC,SAAS,0BAE3E,EACAgD,QAAS,CACP87D,aAAY,SAAEv0D,GACZrH,KAAK07D,WAAaJ,GAAYj0D,EAChC,GAEFxG,WAAY,CACVgkD,cAAAA,GAAAA,QACAgX,YAAAA,GAAAA,ICpBJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,sGFJzDv7D,EAAAA,GAAAA,IA2CM,MA3CNC,GA2CM,EA1CJC,EAAAA,GAAAA,GAIM,MAJNyvC,GAIM,EAHJzvC,EAAAA,GAAAA,GAEM,MAFN0vC,IAEM,SADDxvC,EAAAA,GAAG,qBAAD,MAGTkwC,EAAAA,GAAAA,IA8BekrB,EAAAA,CA7BbprB,IAAI,cACH,YAAWhwC,EAAAA,c,oBAEZ,iBAGE,EAHFF,EAAAA,GAAAA,GAGE,QAFA6G,IAAI,WACHqB,MAAOhI,EAAAA,GAAG,iB,YAEbF,EAAAA,GAAAA,GAGE,QAFA6G,IAAI,gBACHqB,MAAOhI,EAAAA,GAAG,8B,YAEbF,EAAAA,GAAAA,GAGE,QAFA6G,IAAI,UACHqB,MAAOhI,EAAAA,GAAG,yB,YAEbF,EAAAA,GAAAA,GAGE,QAFA6G,IAAI,YACHqB,MAAOhI,EAAAA,GAAG,iC,WAGLA,EAAAA,gBAAa,YADrBJ,EAAAA,GAAAA,IAIE,QAFA+G,IAAI,UACHqB,MAAOhI,EAAAA,GAAG,yB,6BAGJA,EAAAA,oB,kBAAkB,YAD3BJ,EAAAA,GAAAA,IAIE,QAFA+G,IAAI,QACHqB,MAAOhI,EAAAA,GAAG,uB,uCAGfkwC,EAAAA,GAAAA,IAKEuc,EAAAA,CAJAzc,IAAI,gBACH,cAAY,EACZ,gBAAc,EACd,cAAahwC,EAAAA,Y,8BG7BpB,GAXY,CACVwG,SAAU,CACRoU,SAAQ,WACN,OAAOtb,KAAKyvC,OAAOtzC,MAAMmc,SAASwB,UAAUK,GAC9C,GAEFtZ,WAAY,CACVu3D,SAAAA,KCFJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,qECJzDnnB,EAAAA,GAAAA,IAIEoqB,EAAAA,CAHCvuD,MAAOpM,EAAAA,GAAG,WACV4a,SAAU5a,EAAAA,SACV,gBAAe,O,0DCEhBpB,MAAM,iC,IAEDA,MAAM,yB,IACHA,MAAM,S,IAUTA,MAAM,c,UAGPA,MAAM,Y,UAcNA,MAAM,yB,IC/BLA,MAAM,uB,IAONA,MAAM,yB,IACJA,MAAM,W,UAGPA,MAAM,yB,IAMRkB,EAAAA,GAAAA,GAA8B,QAAxBlB,MAAM,iBAAe,S,IACtBA,MAAM,gB,IAORA,MAAM,gB,UAQPA,MAAM,8C,wEClChB,UACE5D,KAAM,YACNmF,WAAY,CACVk7D,WAAAA,GAAAA,QACAC,YAAAA,GAAAA,EACAC,aAAatR,EAAAA,GAAAA,KAAqB,kBAAM,uCAA0C,KAEpFprD,MAAO,CACL,OAAQ,cAEV2H,SAAU,CACR4F,MAAK,WACH,OAAO9M,KAAK/C,KAAO+C,KAAK/C,KAAKK,eAAiB,EAChD,EACA4+D,UAAS,WACP,OAAOl8D,KAAK/C,KAAO+C,KAAK/C,KAAKk/D,UAAY,EAC3C,ICXJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,6HCNzD77D,EAAAA,GAAAA,IAqBM,OApBJhB,MAAM,aACLwN,MAAOpM,EAAAA,O,CAGAA,EAAAA,YAAcA,EAAAA,OAAI,YAD1BuwC,EAAAA,GAAAA,IAScmrB,EAAAA,C,MAPZ98D,MAAM,mBACL,UAASoB,EAAAA,KAAK/G,I,oBAEf,iBAGE,EAHFi3C,EAAAA,GAAAA,IAGEyrB,EAAAA,CAFA/8D,MAAM,kBACLrC,KAAMyD,EAAAA,M,2DAIHA,EAAAA,OAAI,YADZuwC,EAAAA,GAAAA,IAMEqrB,EAAAA,C,MAJAh9D,MAAM,WACLwN,MAAK,KAAOpM,EAAAA,MAAQA,EAAAA,KAAKpD,gBACzB0D,KAAMN,EAAAA,UACNtG,MAAOsG,EAAAA,KAAKtG,OAAS,I,uoBCgD5B,SA5DqB,CACnBsB,KAAM,eACN6D,MAAO,CACL,QAEFsB,WAAY,CACVk7D,WAAAA,GAAAA,QACAQ,WAAAA,GAAAA,EACAC,QAAAA,GAAAA,EACAC,UAAAA,GACAC,WAAAA,GAAAA,GAEFx1D,SAAU,UACLS,EAAAA,EAAAA,IAAS,CACVgG,YAAa,SAAAxR,GAAK,OAAIA,EAAMa,MAAM2Q,WAAW,KAC7C,IACFgvD,eAAc,WACZ,GAAiD,IAA7C38D,KAAK61B,KAAKC,YAAYrb,YAAYpf,OAAtC,CAEA,IAAMuhE,EAAQ58D,KAAK61B,KAAKC,YAAYrb,YAAY1hB,KAAI,SAAA8jE,GAAI,OAAIC,GAAAA,EAAAA,SAAkBD,EAAKh6B,SAAS,IAC5F,OAAI+5B,EAAM9/D,SAAS,SACVkD,KAAKg4D,GAAG,mBACN4E,EAAM9/D,SAAS,SACjBkD,KAAKg4D,GAAG,mBACN4E,EAAM9/D,SAAS,SACjBkD,KAAKg4D,GAAG,mBAERh4D,KAAKg4D,GAAG,iBAV4C,CAY/D,EACA+E,wBAAuB,WACrB,IAAM71C,EAAUlnB,KAAK61B,KAAKC,YACpBknC,EAAgB91C,EAAUA,EAAQvsB,OAAS,GAC3CsiE,EAAQ/1C,GAAWA,EAAQgP,aAAel2B,KAAK2N,YAAYhU,GAC3DiG,EAAUsnB,EAAWlnB,KAAK28D,gBAAkBz1C,EAAQtnB,QAAW,GAC/Ds9D,EAAiBD,EAAQ,MAAH,OAASj9D,KAAKg4D,GAAG,aAAY,gBAAQp4D,GAAYA,EAC7E,MAAO,CACLu9D,QAAS,GACTxiE,OAAQqiE,EACRI,SAAUF,EACVt+D,KAAMs+D,EACNziD,YAAa,GAEjB,IAEF3a,QAAS,CACPu9D,SAAQ,SAAEC,GACJt9D,KAAK61B,KAAKl8B,IACZqG,KAAKG,QAAQd,KAAK,CAChB3D,KAAM,OACNo5B,OAAQ,CACNpK,SAAU1qB,KAAK2N,YAAYzQ,YAC3BqgE,aAAcv9D,KAAK61B,KAAKO,QAAQz8B,KAIxC,ICvDJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,iJLNzD2G,EAAAA,GAAAA,IA2CM,OA1CJhB,MAAM,iB,wDACkBoB,EAAAA,UAAAA,EAAAA,SAAAA,MAAAA,EAAAA,UAAQ,kB,EAEhCF,EAAAA,GAAAA,GAMM,MANND,GAMM,EALJqwC,EAAAA,GAAAA,IAIEyrB,EAAAA,CAHCp/D,KAAMyD,EAAAA,KAAK01B,QACZpU,OAAO,OACPzU,MAAM,Q,oBAGV/M,EAAAA,GAAAA,GA+BM,MA/BNyvC,GA+BM,EA9BJzvC,EAAAA,GAAAA,GAgBM,MAhBN0vC,GAgBM,CAdIxvC,EAAAA,KAAK01B,UAAO,YADpB91B,EAAAA,GAAAA,IAOO,OAPP+vC,GAOO,EAHLO,EAAAA,GAAAA,IAEE4sB,EAAAA,CADCvgE,KAAMyD,EAAAA,KAAK01B,S,qCAGhBka,IACA9vC,EAAAA,GAAAA,GAKM,MALNixC,GAKM,EAJJb,EAAAA,GAAAA,IAGE6sB,EAAAA,CAFCC,KAAMh9D,EAAAA,KAAK+pC,WACX,cAAa,I,sBAIpBjqC,EAAAA,GAAAA,GAYM,MAZNgwC,GAYM,EAXJI,EAAAA,GAAAA,IAIE+sB,EAAAA,CAHAr+D,MAAM,oBACLsb,OAAQla,EAAAA,wBACR,eAAa,G,mBAGRA,EAAAA,KAAK8pC,OAAS,IAAH,YADnBlqC,EAAAA,GAAAA,IAKM,MALNmwC,IAKM,SADD/vC,EAAAA,KAAK8pC,QAAM,6B,aMtCpBlrC,MAAM,gC,IAGJoxC,IAAI,SACJpxC,MAAM,iB,IAYHA,MAAM,c,IACJA,MAAM,gB,IAaRA,MAAM,e,2mBCvBfq6B,GAAAA,GAAAA,IACEmoB,GAAAA,IACAtD,GAAAA,KAGF,IAAMof,GAAU,CACd/8D,WAAY,CACVg9D,cAAAA,GAAAA,EACA9B,WAAAA,GAAAA,SAEF9hE,KAAI,WACF,MAAO,CACLmC,YAAa,GACb0hE,QAAS,GACT/kD,SAAS,EACTtc,MAAO,GAEX,EACM45C,QAAO,WAAI,iIACS,EAAKh0B,kBAAkB0T,QAAO,cAA9CA,MACF/gB,SAAQ,SAAA6gB,GAAI,OAAI,EAAKz5B,YAAYiD,KAAKw2B,EAAKO,QAAQ,IAAC,0CAF3C,EAGjB,EACAlvB,SAAU,OACRlK,MAAK,WAAI,WACP,OAAOgD,KAAK89D,QAAQ/kE,KAAI,SAAAsf,GAAM,OAAI,EAAKwX,SAASxX,EAAO,GACzD,EACA0lD,eAAc,WACZ,OAA0B,IAAtB/9D,KAAKvD,MAAMpB,OACN2E,KAAKhD,MAELgD,KAAK5D,WAEhB,IACGuL,EAAAA,EAAAA,IAAS,CACVgG,YAAa,SAAAxR,GAAK,OAAIA,EAAMa,MAAM2Q,WAAW,EAC7C0U,kBAAmB,SAAAlmB,GAAK,OAAIA,EAAMimB,IAAIC,iBAAiB,MAEtD8sB,EAAAA,EAAAA,IAAW,CAAC,cAEjBrvC,QAAS,CACPk+D,OAAM,WACJh+D,KAAK+E,MAAM,SACb,EACAk5D,SAAQ,SAAEhhE,GACR+C,KAAKG,QAAQd,KAAK,CAAE3D,KAAM,OAAQo5B,OAAQ,CAAEyoC,aAActgE,EAAKtD,KACjE,EACAkvD,QAAO,WACL7oD,KAAKmkB,OAAOnkB,KAAKvD,MACnB,EACAyhE,QAAO,SAAEjhE,GACP+C,KAAKm+D,gBAAgB9+D,KAAKpC,EAAKtD,IAC/BqG,KAAKvD,MAAQ,EACf,EACA2hE,WAAU,SAAE/lD,GACVrY,KAAKm+D,gBAAkBn+D,KAAKm+D,gBAAgBpjE,QAAO,SAAApB,GAAE,OAAIA,IAAO0e,CAAM,GACxE,EACA8L,OAAM,SAAE1nB,GAAO,WACRA,GAKLuD,KAAK+Y,SAAU,EACf/Y,KAAK89D,QAAU,GACf99D,KAAKyvC,OAAOvzC,SAAS,SAAU,CAAEkoB,EAAG3nB,EAAOpD,SAAS,EAAMqG,KAAM,aAC7DpG,MAAK,SAAAW,GACJ,EAAK8e,SAAU,EACf,EAAK+kD,QAAU7jE,EAAKunB,SAASzoB,KAAI,SAAAgD,GAAC,OAAIA,EAAEpC,EAAE,GAC5C,KAVAqG,KAAK+Y,SAAU,CAWnB,IAIJ,YCzEA,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,gGFNzDzY,EAAAA,GAAAA,IA0CM,MA1CNC,GA0CM,EAvCJC,EAAAA,GAAAA,GAaM,MAbNyvC,GAaM,EATJzvC,EAAAA,GAAAA,GAQS,UAPPlB,MAAM,iCACLS,QAAK,8BAAEW,EAAAA,QAAAA,EAAAA,OAAAA,MAAAA,EAAAA,UAAM,I,EAEdkwC,EAAAA,GAAAA,IAGEQ,EAAAA,CAFAO,KAAK,KACLhpC,KAAK,oB,MAIXnI,EAAAA,GAAAA,GAaM,MAbN0vC,GAaM,EAZJ1vC,EAAAA,GAAAA,GAKM,MALN6vC,GAKM,EAJJO,EAAAA,GAAAA,IAGEQ,EAAAA,CAFA9xC,MAAM,0CACNqJ,KAAK,c,UAGTnI,EAAAA,GAAAA,GAKC,SAJCkwC,IAAI,S,qDACKhwC,EAAAA,MAAK,IACd6vC,YAAY,gBACXsY,QAAK,8BAAEnoD,EAAAA,SAAAA,EAAAA,QAAAA,MAAAA,EAAAA,UAAO,I,kBAFNA,EAAAA,YAKbF,EAAAA,GAAAA,GAUM,MAVN8vC,GAUM,iBATJhwC,EAAAA,GAAAA,IAQM8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IAPW1vC,EAAAA,gBAAc,SAAtBzD,G,mBADTqD,EAAAA,GAAAA,IAQM,OANH+G,IAAKpK,EAAKtD,GACX2F,MAAM,U,EAENkB,EAAAA,GAAAA,GAEM,O,6CAFuBE,EAAAA,SAASzD,EAAI,iB,EACxC2zC,EAAAA,GAAAA,IAA8BytB,EAAAA,CAAdphE,KAAMA,GAAI,0B,2lBGHpC,SA/BiB,CACf4D,WAAY,CACVy9D,aAAAA,GACA3W,KAAAA,GAAAA,EACA4W,QAAAA,IAEFr3D,SAAU,UACLS,EAAAA,EAAAA,IAAS,CACVgG,YAAa,SAAAxR,GAAK,OAAIA,EAAMa,MAAM2Q,WAAW,MAE5CwhC,EAAAA,EAAAA,IAAW,CAAC,oBAEjBl1C,KAAI,WACF,MAAO,CACLukE,OAAO,EAEX,EACAnoB,QAAO,WACLr2C,KAAKyvC,OAAOvzC,SAAS,aAAc,CAAEy5B,QAAQ,GAC/C,EACA71B,QAAS,CACP2+D,cAAa,WACXz+D,KAAKw+D,OAAQ,EACbx+D,KAAKyvC,OAAOvzC,SAAS,aAAc,CAAEy5B,QAAQ,GAC/C,EACA+oC,QAAO,WACL1+D,KAAKw+D,OAAQ,CACf,ICvBJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,wGXN9C99D,EAAAA,QAAK,YAAhBJ,EAAAA,GAAAA,IAEM,WADJswC,EAAAA,GAAAA,IAAmC+tB,EAAAA,CAAzBC,SAAQl+D,EAAAA,eAAa,sCAEjCJ,EAAAA,GAAAA,IAqCM,MArCN2vC,GAqCM,EAjCJzvC,EAAAA,GAAAA,GAUM,MAVN0vC,GAUM,EATJ1vC,EAAAA,GAAAA,GAEO,OAFP6vC,IAEO,SADF3vC,EAAAA,GAAG,gBAAD,IAEPF,EAAAA,GAAAA,GAKS,UAJPlB,MAAM,iBACLS,QAAK,8BAAEW,EAAAA,SAAAA,EAAAA,QAAAA,MAAAA,EAAAA,UAAO,K,SAEZA,EAAAA,GAAG,cAAD,MAGTF,EAAAA,GAAAA,GAqBM,MArBN8vC,GAqBM,CAnBI5vC,EAAAA,eAAerF,OAAS,IAAH,YAD7BiF,EAAAA,GAAAA,IAaM,MAbNmxC,GAaM,EATJb,EAAAA,GAAAA,IAQOmY,EAAAA,CARAC,MAAOtoD,EAAAA,gBAAc,CACf0C,MAAI,UACb,gBADgBA,EAAI,EAAJA,KAAI,qBACpB6tC,EAAAA,GAAAA,IAIE4tB,EAAAA,CAHCx3D,IAAKjE,EAAKzJ,GACVmlE,SAAS,EACTjpC,KAAMzyB,G,yDAKf9C,EAAAA,GAAAA,IAKM,MALNkwC,GAKM,EADJhwC,EAAAA,GAAAA,GAA0D,sBAAjDE,EAAAA,GAAG,sCAAD,U,aYrCZpB,MAAM,a,IACJA,MAAM,mB,IAEPoxC,IAAI,QACJpxC,MAAM,sC,IAGJoxC,IAAI,SACJpxC,MAAM,2C,IAWDA,MAAM,qB,UAuBTA,MAAM,sB,IAEDA,MAAM,e,IAMboxC,IAAI,SACJpxC,MAAM,qB,UAWAA,MAAM,mE,UCjDdA,MAAM,kB,IAaHA,MAAM,sB,IA0BMA,MAAM,iB,iBA0BXA,MAAM,c,UAapBA,MAAM,+B,gDCnFV,UACE5D,KAAM,UACN6D,MAAO,CAAC,QACR2H,SAAU,CACR63D,YAAU,WACR,IAAMC,EAAQ,IAAIv1C,KAGlB,OAFAu1C,EAAMr4B,SAAS,EAAG,EAAG,EAAG,GAEpB3mC,KAAK0mC,KAAKE,YAAco4B,EAAMp4B,UACzB5mC,KAAKg4D,GAAG,sBAERh4D,KAAK0mC,KAAKu4B,mBAAmBC,GAAAA,EAAAA,wBAAsCl/D,KAAKm/D,MAAMp1D,QAAS,CAAEq1D,IAAK,UAAWC,MAAO,QAE3H,ICfJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,yCDJzD/+D,EAAAA,GAAAA,IAEO,sBADFg/D,EAAAA,aAAW,E,8kBEalB3lC,GAAAA,GAAAA,IACEC,GAAAA,IACA2lC,GAAAA,KAwFF,SArFoB,CAClB7jE,KAAM,cACN6D,MAAO,CACL,SACA,SACA,YACA,eACA,uBAEFigE,MAAO,CAAC,SACR3+D,WAAY,CACV0wD,QAAAA,GAAAA,QACAkO,WAAAA,GAAAA,EACAC,cAAAA,GAAAA,EACA3D,WAAAA,GAAAA,QACA4D,QAAAA,GAAAA,EACAC,YAAAA,GAAAA,EACAC,gBAAAA,GACA5D,aAAatR,EAAAA,GAAAA,KAAqB,kBAAM,uCAA0C,KAEpFzjD,SAAU,OAER44D,UAAS,WAEP,OADa9/D,KAAK+/D,aAAa9lE,KAAKyjC,WACxBsiC,mBAAmB,KAAM,CAAEC,KAAM,UAAWC,OAAQ,UAAWC,QAAQ,GACrF,EACAC,cAAa,WACX,OAAOpgE,KAAKknB,QAAQgP,aAAel2B,KAAK2N,YAAYhU,EACtD,EACAutB,QAAO,WACL,OAAOlnB,KAAK+/D,aAAa9lE,IAC3B,EACAomE,UAAS,WACP,MAAkC,YAA3BrgE,KAAK+/D,aAAargE,IAC3B,EACAq9D,wBAAuB,WACrB,MAAO,CACLI,QAAS,GACTxiE,OAAQqF,KAAKknB,QAAQvsB,OACrByiE,SAAUp9D,KAAKknB,QAAQtnB,SAAW,GAClChB,KAAMoB,KAAKknB,QAAQtnB,SAAW,GAC9B6a,YAAaza,KAAKknB,QAAQzM,YAE9B,EACA6lD,cAAa,WACX,OAAOtgE,KAAKknB,QAAQzM,YAAYpf,OAAS,CAC3C,IACGsM,EAAAA,EAAAA,IAAS,CACV44D,aAAc,SAAApkE,GAAK,OAAIA,EAAK,UAAWyO,eAAeC,SAAS,EAC/D8C,YAAa,SAAAxR,GAAK,OAAIA,EAAMa,MAAM2Q,WAAW,EAC7CoF,oBAAqB,SAAA5W,GAAK,OAAIA,EAAM4Q,SAASgG,mBAAmB,KAChE,IACFytD,mBAAkB,WAChB,OAAIxgE,KAAKogE,cACA,CAAC,EAED,CAAEK,KAAM,GAEnB,IACGtxB,EAAAA,EAAAA,IAAW,CAAC,eAAgB,cAEjCl1C,KAAI,WACF,MAAO,CACLymE,SAAS,EACTC,YAAY,EAEhB,EACA7gE,QAAS,CACP8gE,QAAO,SAAEC,GACP7gE,KAAK+E,MAAM,QAAS,CAAE+7D,UAAWD,EAAM35B,eAAgBlnC,KAAK+/D,aAAa74B,gBAC3E,EACME,cAAa,WAAI,iHAC4C,IAA/ChnC,OAAO2gE,QAAQ,EAAK/I,GAAG,yBAC1B,CAAF,+BACL,EAAKvoB,OAAOvzC,SAAS,oBAAqB,CAC9CmrC,UAAW,EAAK04B,aAAa9lE,KAAKN,GAClC6+B,OAAQ,EAAKunC,aAAa9lE,KAAK0rC,UAC/B,OAEJ,EAAK+6B,SAAU,EACf,EAAKC,YAAa,EAAK,0CATF,EAUvB,IC5FJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,+LJLjDjgE,EAAAA,YAAS,YADjBJ,EAAAA,GAAAA,IAwFM,O,MAtFJhB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,uBAAsB,yBACOh0C,EAAAA,uBAClCsgE,YAAS,+BAAEtgE,EAAAA,SAAQ,EAAD,GAClBugE,aAAU,+BAAEvgE,EAAAA,SAAQ,EAAD,I,EAEpBF,EAAAA,GAAAA,GAgFM,OA/EJlB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,eAAc,WACGh0C,EAAAA,cAAa,UAAeA,EAAAA,mB,CAG1CA,EAAAA,e,kBAAa,YADtBJ,EAAAA,GAAAA,IAcM,MAdNC,GAcM,CATIG,EAAAA,aAAaymC,SAAM,YAD3B8J,EAAAA,GAAAA,IAScmrB,EAAAA,C,MAPX,UAAS17D,EAAAA,OAAO/G,I,oBAEjB,iBAIE,EAJFi3C,EAAAA,GAAAA,IAIEyrB,EAAAA,CAHCyC,SAAS,EACT,gBAAep+D,EAAAA,aACfzD,KAAMyD,EAAAA,Q,+EAIbF,EAAAA,GAAAA,GA4DM,MA5DNyvC,GA4DM,EA3DJzvC,EAAAA,GAAAA,GA0DM,OAzDJlB,MAAM,cACLyjD,OAAK,sBAAiBriD,EAAAA,QAAQ41B,WAAa,MAAQ,M,EAEpD91B,EAAAA,GAAAA,GAqDM,OApDJlB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,eAAc,uBACah0C,EAAAA,cAAa,QAAaA,EAAAA,aAAazG,KAAK8rC,QAAO,MAAWrlC,EAAAA,aAAazG,KAAKsR,SACjHw3C,MAAA,sBACCme,aAAU,+BAAExgE,EAAAA,SAAU,CAAH,GACnBugE,aAAU,+BAAEvgE,EAAAA,SAAU,CAAH,I,EAEpBF,EAAAA,GAAAA,GAgCM,OA/BJlB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,oBAAmB,SACJh0C,EAAAA,SAAWA,EAAAA,e,EAEhCkwC,EAAAA,GAAAA,IA2BUohB,EAAAA,CA1BRC,QAAQ,QACRkP,UAAU,MACV,oBAAkB,mBACjB,WAAU,CAAAnoB,EAAAA,aACVqO,OAAQ3mD,EAAAA,mBACRu3D,OAAI,+BAAEv3D,EAAAA,YAAa,CAAH,GAChB8/B,QAAK,+BAAE9/B,EAAAA,YAAa,CAAH,I,CAEPd,SAAO,UAChB,iBAOM,EAPNY,EAAAA,GAAAA,GAOM,MAPN0vC,GAOM,EANJ1vC,EAAAA,GAAAA,GAKS,UAJPlB,MAAM,kDACLS,QAAK,8BAAEW,EAAAA,eAAAA,EAAAA,cAAAA,MAAAA,EAAAA,UAAa,I,EAErBkwC,EAAAA,GAAAA,IAAuBQ,EAAAA,CAAfzoC,KAAK,WAAO,SAAG,KAAC,SAAGjI,EAAAA,GAAG,iBAAD,O,IAIxBuxD,SAAO,UAChB,iBAKS,EALTzxD,EAAAA,GAAAA,GAKS,UAJPlB,MAAM,2BACLwN,MAAOpM,EAAAA,GAAG,e,EAEXkwC,EAAAA,GAAAA,IAA4BQ,EAAAA,CAApBzoC,KAAK,gBAAY,M,4BAKjCioC,EAAAA,GAAAA,IAYgBwwB,EAAAA,CAXd9hE,MAAM,kBACLsb,OAAQla,EAAAA,wBACR,gBAAc,G,CAEJ24D,QAAM,UACf,iBAIO,EAJP74D,EAAAA,GAAAA,GAIO,OAJP8vC,IAIO,SADF5vC,EAAAA,WAAS,G,0DAS5BJ,EAAAA,GAAAA,IAKM,MALNmxC,GAKM,EADJb,EAAAA,GAAAA,IAA6CywB,EAAAA,CAA3B36B,KAAMhmC,EAAAA,aAAagmC,M,wBK7FlC,IAAM46B,GAAoB,WAC/B,MAAO,CACLl5D,UAAWhI,OAAOkkD,QAClB7K,aAAc5sC,SAAS4b,gBAAgBgxB,aACvCD,aAAcp5C,OAAOyoB,YAEzB,E,ykBCSA8Q,GAAAA,GAAAA,IACEuc,GAAAA,IACAsI,GAAAA,KAGF,IAMM+iB,GAAO,CACX1gE,WAAY,CACV2gE,YAAAA,GACA/E,UAAAA,GACArqB,eAAAA,GAAAA,GAEFn4C,KAAI,WACF,MAAO,CACLwnE,2BAA2B,EAC3BC,2BAAuBn9D,EACvBo9D,mBAAoB,CAAC,EACrBC,0BAA2B,OAC3BC,kBAAkB,EAClBC,gBAAiB,CAAC,EAEtB,EACAzrB,QAAO,WACLr2C,KAAKonB,gBACLhnB,OAAOk4B,iBAAiB,SAAUt4B,KAAK+hE,aACzC,EACAjpB,QAAO,WAAI,WACT14C,OAAOk4B,iBAAiB,SAAUt4B,KAAK65D,mBACR,IAApBhtD,SAASopB,QAClBppB,SAASyrB,iBAAiB,mBAAoBt4B,KAAK85D,wBAAwB,GAG7E95D,KAAK05C,WAAU,WACb,EAAKqoB,cACP,GACF,EACAthB,UAAS,WACPrgD,OAAOsgD,oBAAoB,SAAU1gD,KAAK65D,cAC1Cz5D,OAAOsgD,oBAAoB,SAAU1gD,KAAK+hE,mBACX,IAApBl1D,SAASopB,QAAwBppB,SAAS6zC,oBAAoB,mBAAoB1gD,KAAK85D,wBAAwB,GAC1H95D,KAAKyvC,OAAOvzC,SAAS,mBACvB,EACAgL,SAAU,OACR86D,UAAS,WACP,OAAOhiE,KAAKwoC,aAAexoC,KAAKwoC,YAAYpS,OAC9C,EACAuS,YAAW,WACT,OAAO3oC,KAAK6jD,OAAO/uB,OAAOyoC,YAC5B,EACA0E,gBAAe,WACb,OAAIjiE,KAAKgiE,UACAhiE,KAAKg4D,GAAG,qBAAsB,CAAEriD,SAAU3V,KAAKgiE,UAAU1kE,iBAEzD,EAEX,EACA4kE,cAAa,WACX,OAAO73B,GAAAA,QAAoBrqC,KAAKyoC,0BAClC,EACArC,gBAAe,WACb,OAAOpmC,KAAKyoC,2BAA6BzoC,KAAKyoC,0BAA0BrC,eAC1E,EACA+sB,iBAAgB,WACd,OAAOnzD,KAAKyN,aAAaioB,iBAAmB11B,KAAK62B,wBAA0BsB,EAAAA,GAAAA,MAC7E,IACGgX,EAAAA,EAAAA,IAAW,CACZ,cACA,4BACA,8BACA,mBAECxnC,EAAAA,EAAAA,IAAS,CACV0a,kBAAmB,SAAAlmB,GAAK,OAAIA,EAAMimB,IAAIC,iBAAiB,EACvDwU,sBAAuB,SAAA16B,GAAK,OAAIA,EAAMimB,IAAIyU,qBAAqB,EAC/D+iC,aAAc,SAAAz9D,GAAK,MAAmC,WAA/BA,EAAK,UAAW6O,UAAuB,EAC9D2C,YAAa,SAAAxR,GAAK,OAAIA,EAAMa,MAAM2Q,WAAW,KAGjDirC,MAAO,CACLspB,cAAa,WAAI,WAGTC,EAA0BniE,KAAKw4D,YAlFf,IAmFtBx4D,KAAK05C,WAAU,WACTyoB,GACF,EAAKC,YAET,GACF,EACAve,OAAQ,WACN7jD,KAAKonB,eACP,EACAyP,sBAAqB,SAAElL,GACjBA,IAAawM,EAAAA,GAAAA,QACfn4B,KAAKqiE,UAAU,CAAEC,cAAc,GAEnC,GAEFxiE,QAAS,CAEPyiE,eAAc,YAAiC,IAA7BzB,EAAS,EAATA,UAAW55B,EAAc,EAAdA,eAC3BlnC,KAAK0hE,sBAAwBZ,EAAY55B,OAAiB3iC,CAC5D,EACAi+D,eAAc,WAAI,WAChBxiE,KAAK05C,WAAU,WACb,EAAKqoB,cACP,GACF,EACAjI,uBAAsB,WAAI,WACxB95D,KAAK05C,WAAU,YACR7sC,SAASopB,QAAU,EAAKuiC,YA9GT,KA+GlB,EAAK4J,WAAW,CAAEK,WAAW,GAEjC,GACF,EAEAV,aAAY,WAAa,WAAX5rC,EAAO,UAAH,6CAAG,CAAC,EACpB,EAA4BA,EAApBusC,QAAAA,OAAO,IAAG,GAAK,EAEnBA,EACF/lE,YAAW,WACT,EAAKolE,aAAa,SAAK5rC,GAAI,IAAEusC,SAAS,IACxC,GAxHwB,KA4H1B1iE,KAAK05C,WAAU,WACb,IAAwD,EAAnB4nB,KAA7B9nB,aACFmpB,QADc,IAAG,OAAAp+D,EAAS,GACJ,EAAKo9D,mBAAmBnoB,aACvC,IAATmpB,GAAe,EAAKnK,eACtB,EAAK9e,WAAU,WACbt5C,OAAOwiE,SAAS,CAAE3I,KAAMz+D,KAAKqnE,MAAMF,IACrC,IAEF,EAAKhB,mBAAqBL,IAC5B,GACF,EACAc,WAAU,WAAgB,IAAdU,EAAU,UAAH,6CAAG,CAAC,EACrB,EAAiDA,EAAzCC,SAAAA,OAAQ,IAAG,SAAM,IAAwBD,EAAtBL,UAAAA,OAAS,IAAG,GAAK,EAC5CziE,KAAK05C,WAAU,WACbt5C,OAAO0lD,SAAS,CAAEmU,IAAKptD,SAAS4b,gBAAgBgxB,aAAcspB,SAAAA,GAChE,IACIN,GACFziE,KAAK4pC,UAET,EACAA,SAAQ,WACN,GAAM5pC,KAAKyoC,2BAA6BzoC,KAAKyoC,0BAA0B7vB,QACnE/L,SAASopB,OAAb,CACA,IAAM4T,EAAa7pC,KAAKyoC,0BAA0B7vB,MAClD5Y,KAAKyvC,OAAOvzC,SAAS,WAAY,CAC/BvC,GAAIqG,KAAKwoC,YAAY7uC,GACrBkwC,WAAAA,GAJ4B,CAMhC,EACA2uB,YAAW,SAAEl0C,GACX,ODlKuB,WAAgB,IAAfA,EAAS,UAAH,6CAAG,EAC/Bm1B,EAAer5C,OAAOkkD,QAAUhgC,EAEtC,OADoBzX,SAAS4b,gBAAgBgxB,aAAer5C,OAAOyoB,aAC7C4wB,CACxB,CC8JaupB,CAAc1+C,EACvB,EACA2+C,WAAU,WACR,OAAO7iE,OAAOkkD,SAAW,CAC3B,EACA4e,eAAc,WAAI,WAChB9iE,OAAOzD,YAAW,WACZ,EAAK67D,YAlK+B,KAmKtC,EAAK/oB,OAAOvzC,SAAS,oBAAqB,EAAKusC,0BAA0BjQ,OAE7E,GAAG,IACL,EACAqhC,aAAc,MAAW,WAAY,WACnC75D,KAAK2hE,mBAAqBL,KACrBthE,KAAKwoC,cAENxoC,KAAKijE,aACPjjE,KAAKqiE,UAAU,CAAEzpD,MAAO5Y,KAAKyoC,0BAA0B5vB,QAC9C7Y,KAAKw4D,YA7K0B,KA8KxCx4D,KAAKyhE,2BAA4B,EACjCzhE,KAAKkjE,iBACDljE,KAAKomC,gBAAkB,GAIzBhmC,OAAOzD,YAAW,WAEZ,EAAK28C,KAAK,EAAK1P,UACrB,GArLiB,OAwLnB5pC,KAAKyhE,2BAA4B,EAErC,GAAG,KACH0B,eAAc,SAAEC,GACd,IDzM4BC,EAAkBC,ECyMxCC,EAAuBjC,KAC7BlhE,OAAO0lD,SAAS,CACdmU,KD3M0BoJ,EC2MHD,ED3MqBE,EC2MEC,ED1M7CF,EAAiBj7D,WAAak7D,EAAY7pB,aAAe4pB,EAAiB5pB,gBC4M/E,EACA4oB,UAAS,YAAwD,eAApDC,aAAAA,OAAY,IAAG,GAAK,MAAEkB,YAAAA,OAAW,IAAG,GAAK,EAAE5qD,EAAK,EAALA,MAChDmyB,EAAqB/qC,KAAKyoC,0BAChC,GAAKsC,KACDy4B,IAAexjE,KAAKmzD,kBAAxB,CAEA,IAAM36B,EAASuS,EAAmBvS,OAC5BirC,IAAuB7qD,EACvB8qD,EAAUF,GAAez4B,EAAmBnyB,MAElD,OAAO5Y,KAAKqiB,kBAAkBshD,aAAa,CAAEhqE,GAAI6+B,EAAQ5f,MAAAA,EAAO8qD,QAAAA,IAC7DpqE,MAAK,SAAC4Q,GAEDo4D,GACFj4B,GAAAA,MAAkBU,GAGpB,IAAM64B,EAAuBtC,KAC7B,EAAK7xB,OAAOvzC,SAAS,kBAAmB,CAAEs8B,OAAAA,EAAQtuB,SAAAA,IAAY5Q,MAAK,WACjE,EAAKogD,WAAU,WACT+pB,GACF,EAAKN,eAAeS,KDvN3B/2D,SAAS4b,gBAAgBgxB,aAAer5C,OAAOyoB,cC8NnB3e,EAAS7O,OAAS,GACvC,EAAKgnE,UAAU,CAAEzpD,MAAO,EAAK6vB,0BAA0B5vB,OAE3D,GACF,GACF,GA7BiD,CA8BrD,EACMuO,cAAa,WAAI,uHACwC,GAAzDyO,EAAO,EAAK6S,4BAA4B,EAAKC,aACtC,CAAF,yCAEQ,EAAKtmB,kBAAkBwhD,gBAAgB,CAAE1+C,UAAW,EAAKwjB,cAAc,OAApF9S,EAAO,EAAH,qDAEJ7f,QAAQzK,MAAM,mCAAoC,EAAF,IAChD,EAAKs2D,kBAAmB,EAAI,QAG5BhsC,IACF,EAAK6jB,WAAU,WACb,EAAK0oB,WAAW,CAAEK,WAAW,GAC/B,IACA,EAAKhzB,OAAOvzC,SAAS,gBAAiB,CAAE25B,KAAAA,IACxC,EAAKiuC,mBACN,wDAhBoB,EAiBvB,EACAA,gBAAe,WAAI,WACjB9jE,KAAKyvC,OAAOvzC,SAAS,2BAA4B,CAC/Ci7B,QAAS,kBAAM9P,EAAAA,GAAAA,IAAgB,kBAAM,EAAKg7C,UAAU,CAAEmB,aAAa,GAAO,GAAE,IAAK,IAEnFxjE,KAAKqiE,UAAU,CAAEC,cAAc,GACjC,EACAyB,wBAAuB,WAAI,WACzB/jE,KAAK05C,WAAU,WACb,EAAKqoB,eAGL,EAAKK,WAAW,CAAEK,WAAW,GAC/B,GACF,EACAuB,YAAW,YAAqC,WAAjCppD,EAAM,EAANA,OAAQX,EAAK,EAALA,MAAOgqD,EAAc,EAAdA,eACtBnvC,EAAS,CACbn7B,GAAIqG,KAAKwoC,YAAY7uC,GACrBiG,QAASgb,EACTqpD,eAAAA,GAGEhqD,EAAM,KACR6a,EAAOovC,QAAUjqD,EAAM,GAAGtgB,IAG5B,IAAMksC,ErKjRoB,SAAH,GAAiE,IAA1CprB,EAAW,EAAXA,YAAapC,EAAM,EAANA,OAAQ4rD,EAAc,EAAdA,eACjEp+B,EAAc,CAClBjmC,QAFsC,EAAPA,QAG/B+lC,QAH8C,EAANnN,OAIxCkF,WAAY,IAAIjU,KAChB9vB,GAAI,GAAF,QAAK,IAAI8vB,MAAOmd,WAClBnsB,YAAAA,EACAyb,WAAY7d,EACZ2tB,gBAAiBi+B,EACjBtpE,OAAQ,GACRorC,SAAS,EACTo+B,cAAc,GAOhB,OAJI1pD,EAAY,KACdorB,EAAYvP,WAAa7b,EAAY,IAGhCorB,CACT,CqK8P0Bu+B,CAAiB,CACnC3pD,YAAaR,EACbue,OAAQx4B,KAAKwoC,YAAY7uC,GACzBiG,QAASgb,EACTvC,OAAQrY,KAAK2N,YAAYhU,GACzBsqE,eAAAA,IAUF,OAPAjkE,KAAKyvC,OAAOvzC,SAAS,kBAAmB,CACtCs8B,OAAQx4B,KAAKwoC,YAAY7uC,GACzBuQ,SAAU,CAAC27B,KACVvsC,MAAK,WACN,EAAKyqE,yBACP,IAEO/jE,KAAKqkE,cAAc,CAAEvvC,OAAAA,EAAQ+Q,YAAAA,EAAay+B,YA5RnC,IA6RhB,EACAD,cAAa,YAAsD,WAAlDvvC,EAAM,EAANA,OAAQ+Q,EAAW,EAAXA,YAAW,IAAEy+B,YAAAA,OAAW,IAAG,EA9RpC,GA8R+C,EAC7D,KAAIA,GAAe,GA2BnB,OAzBAtkE,KAAKqiB,kBAAkBkiD,gBAAgBzvC,GACpCx7B,MAAK,SAAAW,GAOJ,OANA,EAAKw1C,OAAOvzC,SAAS,kBAAmB,CACtCs8B,OAAQ,EAAKgQ,YAAY7uC,GACzB+rC,aAAa,EACbx7B,SAAU,CAAC,SAAKjQ,GAAI,IAAE2rC,OAAQC,EAAYlsC,QAGrCM,CACT,IAAE,OACK,SAAAsR,GAYL,OAXAyK,QAAQzK,MAAM,wBAAyBA,GACvC,EAAKkkC,OAAOvzC,SAAS,qBAAsB,CACzCs8B,OAAQ,EAAKgQ,YAAY7uC,GACzBisC,OAAQC,EAAYlsC,GACpBmuC,QAhTQ,KAgTCw8B,KAEN/4D,EAAMihC,YAAc,KAAOjhC,EAAMihC,WAAa,KAA0B,oBAAlBjhC,EAAM2b,WAC/D,EAAK46C,gBAAgBj8B,EAAYlsC,IAAMgD,YAAW,WAChD,EAAK0nE,cAAc,CAAEvvC,OAAAA,EAAQ+Q,YAAAA,EAAay+B,YAAaA,EAAc,GACvE,GAAG,IAAO,KAAH,IAAI,EArTH,GAqTuBA,KAE1B,CAAC,CACV,IAEKlrE,QAAQC,QAAQwsC,EACzB,EACAm4B,OAAM,WACJh+D,KAAKG,QAAQd,KAAK,CAAE3D,KAAM,QAASo5B,OAAQ,CAAEpK,SAAU1qB,KAAK2N,YAAYzQ,cAC1E,IAIJ,YClVA,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,qJRNzDoD,EAAAA,GAAAA,IA2FM,MA3FNC,GA2FM,EA1FJC,EAAAA,GAAAA,GAyFM,MAzFNyvC,GAyFM,EAxFJzvC,EAAAA,GAAAA,GAuFM,MAvFN0vC,GAuFM,EAnFJ1vC,EAAAA,GAAAA,GAmBM,MAnBN6vC,GAmBM,EAfJ7vC,EAAAA,GAAAA,GAQS,UAPPlB,MAAM,iCACLS,QAAK,8BAAEW,EAAAA,QAAAA,EAAAA,OAAAA,MAAAA,EAAAA,UAAM,I,EAEdkwC,EAAAA,GAAAA,IAGEQ,EAAAA,CAFAO,KAAK,KACLhpC,KAAK,oBAGTnI,EAAAA,GAAAA,GAKM,MALN8vC,GAKM,EAJJM,EAAAA,GAAAA,IAGE4sB,EAAAA,CAFCvgE,KAAMyD,EAAAA,UACN,eAAa,G,0BAIpBF,EAAAA,GAAAA,GAsBM,OArBJlB,MAAM,eACLyjD,OAAK,UAAA/gC,OAAYthB,EAAAA,6B,CAEDA,EAAAA,mB,YAUjBJ,EAAAA,GAAAA,IAOM,MAPNmxC,GAOM,EAHJjxC,EAAAA,GAAAA,GAEM,MAFNgwC,IAEM,SADD9vC,EAAAA,GAAG,6BAAD,QAfwB,cAC/BJ,EAAAA,GAAAA,IAOE8vC,GAAAA,GAAAA,CAAA/oC,IAAAA,IAAA,SANuB3G,EAAAA,eAAa,SAA7Bq/D,G,mBADT9uB,EAAAA,GAAAA,IAOEuzB,EAAAA,CALCn9D,IAAK04D,EAAapmE,GAClBggD,OAAQj5C,EAAAA,UACR,iBAAgBq/D,EAChB,wBAAuBA,EAAa74B,iBAAmBxmC,EAAAA,sBACvDkgE,QAAOlgE,EAAAA,gB,gFAQH,IAIXF,EAAAA,GAAAA,GAuCM,MAvCNiwC,GAuCM,EAnCJjwC,EAAAA,GAAAA,GAcM,OAbJlB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,wBAAuB,SACRh0C,EAAAA,6BACpBX,QAAK,+BAAEW,EAAAA,WAAW,CAADqiE,SAAAA,UAAA,I,EAElBviE,EAAAA,GAAAA,GAQO,cAPLowC,EAAAA,GAAAA,IAA8BQ,EAAAA,CAAtBzoC,KAAK,iBAELjI,EAAAA,kBAAe,YADvBJ,EAAAA,GAAAA,IAKM,MALNoxC,IAKM,SADDhxC,EAAAA,iBAAe,4BAIxBkwC,EAAAA,GAAAA,IAmBE4B,EAAAA,CAlBC,mBAAiB,EACjB,0BAAwB,EACxB,kBAAgB,EAChB,wBAAsB,EACtB,iBAAe,EACf,gCAA8B,EAC9B,iBAAgB9xC,EAAAA,mBAAqBA,EAAAA,YACrC,mBAAiB,EACjB,sBAAoB,EACpB,eAAcA,EAAAA,YACd,mBAAkBA,EAAAA,aAClB,kBAAiBA,EAAAA,aACjB,cAAaA,EAAAA,aACb6vC,YAAa7vC,EAAAA,gBACb,aAAY,EACb,aAAW,MACX,yBAAuB,MACtB+jE,SAAQ/jE,EAAAA,c,qJSnFfpB,MAAM,oC,UAYJA,MAAM,iB,UAUNA,MAAM,uB,oFAwGRA,MAAM,kC,IAEDA,MAAM,iB,IACJA,MAAM,S,IAIRA,MAAM,c,eCvIRA,MAAM,iC,UAGPA,MAAM,S,UAOJA,MAAM,6B,mECVhB,UACEC,MAAO,CAAC,OAAQ,gBAChBtF,KAAI,WACF,MAAO,CACL/B,YAAY,EACZwsE,8BAA8B,EAElC,EACA7jE,WAAY,CACVikD,aAAAA,GAAAA,GAEF59C,SAAU,CACRwB,MAAK,WACH,OAAI1I,KAAK9H,WACA8H,KAAKg4D,GAAG,6BAERh4D,KAAKg4D,GAAG,4BAEnB,EACA2M,qCAAoC,WAClC,OAAO3kE,KAAKyvC,OAAOj7B,QAAQ/G,aAAauD,8BAC1C,GAEFlR,QAAS,CACP8kE,mCAAkC,WAChC5kE,KAAK0kE,8BAA+B,CACtC,EACAG,mCAAkC,WAChC7kE,KAAK0kE,8BAA+B,CACtC,EACA3kE,QAAO,WACAC,KAAK2kE,qCAGR3kE,KAAK4kE,qCAFL5kE,KAAK8kE,2BAIT,EACAA,0BAAyB,WAAI,WAC3B9kE,KAAK9H,YAAa,EAClB8H,KAAKyvC,OAAOvzC,SAAS,0BAA2B8D,KAAK6rB,aAAalyB,IAAIL,MAAK,WACzE,EAAKpB,YAAa,CACpB,IACA8H,KAAK6kE,oCACP,ICtCJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,gGCJzDvkE,EAAAA,GAAAA,IA6BS,UA5BPhB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,mCAAkC,CAAAqwB,QACrBrkE,EAAAA,cAClB+H,SAAU/H,EAAAA,WACVoM,MAAOpM,EAAAA,GAAG,6BACVX,QAAK,8BAAEW,EAAAA,SAAAA,EAAAA,QAAAA,MAAAA,EAAAA,UAAO,I,qBAEZA,EAAAA,OAAQ,IACX,0BAoBW6lD,GAAAA,GAAAA,CApBDjpB,GAAG,UAAQ,CAEX58B,EAAAA,+BAA4B,YADpCuwC,EAAAA,GAAAA,IAkBgBuV,EAAAA,C,MAhBb15C,MAAOpM,EAAAA,GAAG,2CACV,eAAcA,EAAAA,GAAG,mDACjB,cAAaA,EAAAA,GAAG,mDAChB+lD,WAAU/lD,EAAAA,0BACVgmD,YAAWhmD,EAAAA,oC,oBAEZ,iBASS,EATTkwC,EAAAA,GAAAA,IASS8X,EAAAA,CARPC,QAAQ,oCACRhrD,IAAI,Q,CAEOV,MAAI,UACb,iBAEE,EAFFuD,EAAAA,GAAAA,GAEE,Q,aADAwkE,EAAAA,GAAAA,IAA4BtkE,EAAAA,KAAfpD,iB,oICK3B,GAxBmB,CACjBiC,MAAO,CACL,OACA,gBAEFsB,WAAY,CACVg9D,cAAAA,GAAAA,EACAoH,aAAAA,GAAAA,EACAC,aAAAA,GAAAA,EACAC,qBAAAA,IAEFj+D,SAAU,CACRk+D,KAAI,WACF,OAAOplE,KAAKyvC,OAAOtzC,MAAMa,MAAM2Q,YAAYhU,KAAOqG,KAAK/C,KAAKtD,EAC9D,EACA+sB,SAAQ,WACN,OAAO1mB,KAAKyvC,OAAOtzC,MAAMa,MAAM2Q,WACjC,EACAke,aAAY,WACV,OAAO7rB,KAAKyvC,OAAOj7B,QAAQqX,aAAa7rB,KAAK/C,KAAKtD,GACpD,IChBJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,wKLNzDs3C,EAAAA,GAAAA,IA+BkBo0B,EAAAA,CA/BApoE,KAAMyD,EAAAA,MAAI,C,mBAC1B,iBA6BM,EA7BNF,EAAAA,GAAAA,GA6BM,MA7BND,GA6BM,CA3BIG,EAAAA,OAAUA,EAAAA,cAAgBA,EAAAA,aAAa4kE,cAAW,YAD1DhlE,EAAAA,GAAAA,IAKO,OALP2vC,IAKO,SADFvvC,EAAAA,KAAOA,EAAAA,GAAG,qBAAuBA,EAAAA,GAAG,0BAAD,qBAEvBA,EAAAA,SAQKA,EAAAA,M,kBAAI,YAA1BJ,EAAAA,GAAAA,IAaW8vC,GAAAA,GAAAA,CAAA/oC,IAAAA,GAAA,EAZTupC,EAAAA,GAAAA,IAKE20B,EAAAA,CAJC15C,aAAcnrB,EAAAA,aACd,kBAAiBA,EAAAA,GAAG,6BACrBpB,MAAM,4BACLrC,KAAMyD,EAAAA,M,kDAGDA,EAAAA,cAAgBA,EAAAA,aAAa4kE,cAAW,YADhDr0B,EAAAA,GAAAA,IAKEu0B,EAAAA,C,MAHCvoE,KAAMyD,EAAAA,KACNmrB,aAAcnrB,EAAAA,aACfpB,MAAM,sB,0DAnBe,YAAzBgB,EAAAA,GAAAA,IAOW8vC,GAAAA,GAAAA,CAAA/oC,IAAAA,GAAA,CALA3G,EAAAA,aAAa6jB,WAGK,kBAHI,YAD/BjkB,EAAAA,GAAAA,IAKM,MALN4vC,GAKM,EADJU,EAAAA,GAAAA,IAA6B60B,EAAAA,CAAdxoE,KAAMyD,EAAAA,MAAI,4B,yoBMFnCi5B,GAAAA,GAAAA,IACE+kB,GAAAA,KA+FF,SA5FqB,SAAH,OAChBpoC,EAAK,EAALA,MACAovD,EAAM,EAANA,OACAjlB,EAAS,EAATA,UAAS,IACTklB,cAAAA,OAAa,IAAG,YAAS,MACzBC,oBAAAA,OAAmB,IAAG,KAAE,SACpB,SAACC,GAIL,MAAO,CACLtmE,MAJoBzF,OAAOD,MAAKisE,EAAAA,GAAAA,GAAkBD,IACxB9qE,QAAO,SAAAyD,GAAC,OAAIA,IAAMmnE,CAAa,IAAE1qE,OAAO2qE,GAIlE3rE,KAAI,WACF,MAAO,CACL8e,SAAS,EACTy/C,aAAa,EACbjtD,OAAO,EACP6L,QAAS,GAEb,EACAi/B,QAAO,WACLj2C,OAAOk4B,iBAAiB,SAAUt4B,KAAK86D,YACX,IAAxB96D,KAAKoX,QAAQ/b,QACf2E,KAAK+lE,cAET,EACAtlB,UAAS,WACPrgD,OAAOsgD,oBAAoB,SAAU1gD,KAAK86D,YAC1Cra,GAAaA,EAAUzgD,KAAKwzC,OAAQxzC,KAAKyvC,OAC3C,EACA3vC,QAAS,CAGPkmE,cAAa,WACXhmE,KAAKoX,QAAUsuD,EAAO1lE,KAAKwzC,OAAQxzC,KAAKyvC,SAAW,EACrD,EACAs2B,aAAY,WAAI,WACT/lE,KAAK+Y,UACR/Y,KAAK+Y,SAAU,EACf/Y,KAAKuL,OAAQ,EACb+K,EAAMtW,KAAKwzC,OAAQxzC,KAAKyvC,QACrBn2C,MAAK,SAAC2sE,GACL,EAAKltD,SAAU,EACf,EAAKy/C,YAAc0N,KAAQD,EAC7B,IAAE,OACK,WACL,EAAKltD,SAAU,EACf,EAAKxN,OAAQ,CACf,IAAE,SACO,WACP,EAAKy6D,eACP,IAEN,EACAlL,WAAU,SAAEvhE,GACV,IAAMwhE,EAAYluD,SAAS8b,KAAKgyC,wBAC1B34C,EAASxmB,KAAKC,IAAIs/D,EAAU/4C,QAAU+4C,EAAU/gB,IACjC,IAAjBh6C,KAAK+Y,UACc,IAArB/Y,KAAKw4D,aACLx4D,KAAKs5C,IAAIE,aAAe,GACvBp5C,OAAOyoB,YAAczoB,OAAOm6D,aAAiBv4C,EAAS,KAEvDhiB,KAAK+lE,cAET,GAEF1kE,OAAM,WACJ,IAzEoC,EAyE9B9B,EAAQ,SACTS,KAAKwzC,QAAM,cACbmyB,EAAgB3lE,KAAKoX,UAElBzT,EAAW3D,KAAKwH,OACtB,OAAO,gBAAP,MACa,kBAAgB,aACHjI,GAhFU,EAiF7BoE,EAjF6B,2FAiF7BA,EAAQ,2BAARA,EAAQ,4BAEA,yBAAuB,CAC/B3D,KAAKuL,QAAK,2BACQvL,KAAK+lE,aAAY,MAAQ,gDAA8C,CACrF/lE,KAAKg4D,GAAG,4BAGXh4D,KAAKuL,OAASvL,KAAK+Y,UAAW,gBAAJ,aAAsB,gBAAc,OAC9D/Y,KAAKuL,QAAUvL,KAAK+Y,UAAY/Y,KAAKw4D,cAAe,cAAJ,QAAgBx4D,KAAK+lE,cAAY,CAAG/lE,KAAKg4D,GAAG,qBAItG,EAEJ,CAAC,EC1FDr+B,GAAAA,GAAAA,IACE+kB,GAAAA,IACAynB,GAAAA,KAGF,IAAMC,GAAeC,GAAa,CAChC/vD,MAAO,SAAC/W,EAAOkwC,GAAM,OAAKA,EAAOvzC,SAAS,iBAAkBqD,EAAM8Y,OAAO,EACzEqtD,OAAQ,SAACnmE,EAAOkwC,GAAM,OAAK+Z,KAAI/Z,EAAOj7B,QAAQqb,SAAStwB,EAAM8Y,QAAS,cAAe,IAAItf,KAAI,SAAAY,GAAE,OAAI81C,EAAOj7B,QAAQqb,SAASl2B,EAAG,GAAC,EAC/H2sE,QAAS,SAAC/mE,EAAOkwC,GAAM,OAAKA,EAAOvzC,SAAS,iBAAkBqD,EAAM8Y,OAAO,EAC3EstD,cAAe,QACfC,oBAAqB,CAAC,WALHS,CAMlB1e,GAAAA,GAEG4e,GAAaF,GAAa,CAC9B/vD,MAAO,SAAC/W,EAAOkwC,GAAM,OAAKA,EAAOvzC,SAAS,eAAgBqD,EAAM8Y,OAAO,EACvEqtD,OAAQ,SAACnmE,EAAOkwC,GAAM,OAAK+Z,KAAI/Z,EAAOj7B,QAAQqb,SAAStwB,EAAM8Y,QAAS,YAAa,IAAItf,KAAI,SAAAY,GAAE,OAAI81C,EAAOj7B,QAAQqb,SAASl2B,EAAG,GAAC,EAC7H2sE,QAAS,SAAC/mE,EAAOkwC,GAAM,OAAKA,EAAOvzC,SAAS,eAAgBqD,EAAM8Y,OAAO,EACzEstD,cAAe,QACfC,oBAAqB,CAAC,WALLS,CAMhB1e,GAAAA,GAEG6e,GAAgB,WAuJtB,SArJoB,CAClBvsE,KAAI,WACF,MAAO,CACLsR,OAAO,EACP8M,OAAQ,KACR66B,IAAKszB,GACLC,UAAW,KAEf,EACApwB,QAAO,WACL,IAAMqwB,EAAc1mE,KAAK6jD,OAAO/uB,OAChC90B,KAAK2mE,KAAK,CAAEjrE,KAAMgrE,EAAYhrE,KAAM/B,GAAI+sE,EAAY/sE,KACpDqG,KAAKkzC,IAAMsW,KAAIxpD,KAAK6jD,OAAQ,YAAa2iB,GAC3C,EACA/lB,UAAS,WACPzgD,KAAK4mE,cACP,EACA1/D,SAAU,CACRoU,SAAQ,WACN,OAAOtb,KAAKyvC,OAAOtzC,MAAMmc,SAASwB,UAAU7c,IAC9C,EACA4c,UAAS,WACP,OAAO7Z,KAAKyvC,OAAOtzC,MAAMmc,SAASwB,UAAUD,SAC9C,EACAI,MAAK,WACH,OAAOja,KAAKyvC,OAAOtzC,MAAMmc,SAASwB,UAAUG,KAC9C,EACA4sD,KAAI,WACF,OAAO7mE,KAAKqY,QAAUrY,KAAKyvC,OAAOtzC,MAAMa,MAAM2Q,YAAYhU,IACxDqG,KAAKqY,SAAWrY,KAAKyvC,OAAOtzC,MAAMa,MAAM2Q,YAAYhU,EACxD,EACAsD,KAAI,WACF,OAAO+C,KAAKyvC,OAAOj7B,QAAQqb,SAAS7vB,KAAKqY,OAC3C,EACAyuD,WAAU,WACR,MAA4B,0BAArB9mE,KAAK6jD,OAAOnoD,IACrB,EACAqrE,kBAAiB,WACf,OAAO/mE,KAAK6mE,OAAS7mE,KAAK/C,KAAK+pE,YACjC,EACAC,oBAAmB,WACjB,OAAOjnE,KAAK6mE,OAAS7mE,KAAK/C,KAAKiqE,cACjC,EACAC,kBAAiB,WACf,IAAMC,EAAgBlI,GAAAA,EAAAA,wBAAsCl/D,KAAKm/D,MAAMp1D,QACvE,OAAO/J,KAAK/C,KAAKoqE,UAAY,IAAI59C,KAAKA,KAAK4a,MAAMrkC,KAAK/C,KAAKoqE,WAAWpI,mBAAmBmI,EAAe,CAAEE,SAAU,MAAOlI,IAAK,UAAWC,MAAO,OAAQkI,KAAM,WAClK,GAEFznE,QAAS,CACP0nE,aAAY,SAAEC,GACZznE,KAAKymE,UAAYgB,CACnB,EACAd,KAAI,SAAEe,GAAc,WACZjgD,EAAwB,SAACnM,EAAUjD,GAEnCA,IAAW,EAAKo3B,OAAOtzC,MAAMmc,SAASwB,UAAUwB,GAAUjD,QAC5D,EAAKo3B,OAAOziC,OAAO,gBAAiB,CAAEsO,SAAAA,IAExC,EAAKm0B,OAAOvzC,SAAS,wBAAyB,CAAEof,SAAAA,EAAUjD,OAAAA,GAC5D,EAEMsvD,EAAW,SAACtvD,GAChB,EAAKA,OAASA,EACdoP,EAAsB,OAAQpP,GAC9BoP,EAAsB,QAASpP,GAC3B,EAAKwuD,MACPp/C,EAAsB,YAAapP,GAGrC,EAAKo3B,OAAOvzC,SAAS,sBAAuBmc,EAC9C,EAGArY,KAAKqY,OAAS,KACdrY,KAAKuL,OAAQ,EAEb,IAAMq8D,EAAUF,EAAa/tE,GACvBkuE,EAAYH,EAAahsE,KAGzBuB,EAAO2qE,EAAU5nE,KAAKyvC,OAAOj7B,QAAQqb,SAAS+3C,GAAW5nE,KAAKyvC,OAAOj7B,QAAQsb,eAAe+3C,GAC9F5qE,EACF0qE,EAAS1qE,EAAKtD,KAEbiuE,EACG5nE,KAAKyvC,OAAOvzC,SAAS,YAAa0rE,GAClC5nE,KAAKyvC,OAAOvzC,SAAS,kBAAmB2rE,IACzCvuE,MAAK,gBAAGK,EAAE,EAAFA,GAAE,OAAOguE,EAAShuE,EAAG,IAAC,OACxB,SAACmuE,GACN,IAAMC,EAAeve,KAAIse,EAAQ,eAE/B,EAAKv8D,MADc,8BAAjBw8D,EACW,EAAK/P,GAAG,uCACZ+P,GAGI,EAAK/P,GAAG,qCAEzB,GAEN,EACA4O,aAAY,WACV5mE,KAAKyvC,OAAOvzC,SAAS,uBAAwB,QAC7C8D,KAAKyvC,OAAOvzC,SAAS,uBAAwB,aAC7C8D,KAAKyvC,OAAOvzC,SAAS,uBAAwB,QAC/C,EACA8rE,WAAU,SAAEN,GACV1nE,KAAK4mE,eACL5mE,KAAK2mE,KAAKe,EACZ,EACAO,YAAW,SAAE/0B,GACXlzC,KAAKkzC,IAAMA,EACXlzC,KAAKG,QAAQlC,QAAQ,CAAExB,MAAO,CAAEy2C,IAAAA,IAClC,EACAg1B,YAAW,YAAc,IAAVvnE,EAAM,EAANA,OACU,SAAnBA,EAAOqC,UACTrC,EAASA,EAAOwnE,YAEK,MAAnBxnE,EAAOqC,SACT5C,OAAOC,KAAKM,EAAOF,KAAM,SAE7B,GAEFm4C,MAAO,CACL,mBAAoB,SAAUQ,GACxBA,GACFp5C,KAAKgoE,WAAW,CAAEruE,GAAIy/C,GAE1B,EACA,qBAAsB,SAAUA,GAC1BA,GACFp5C,KAAKgoE,WAAW,CAAEtsE,KAAM09C,GAE5B,EACA,eAAgB,SAAUA,GACxBp5C,KAAKkzC,IAAMkG,EAAOlG,KAAOszB,EAC3B,GAEF3lE,WAAY,CACVwxC,SAAAA,GAAAA,EACA+lB,SAAAA,GACAgO,aAAAA,GACAG,WAAAA,GACA6B,WAAAA,GACAvM,YAAAA,GAAAA,EACAlD,aAAAA,GACAqD,YAAAA,GAAAA,IC/KJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,0PTNzD17D,EAAAA,GAAAA,IAiJM,YA/III,EAAAA,OAAI,YADZJ,EAAAA,GAAAA,IA6HM,MA7HNC,GA6HM,EAzHJqwC,EAAAA,GAAAA,IAOE0B,EAAAA,CANC,UAAS5xC,EAAAA,OACT2nE,UAAU,EACVC,SAAU5nE,EAAAA,SAAS6nE,QACpB,gBAAc,OACdh2B,QAAQ,MACP,mBAAiB,G,+BAGV7xC,EAAAA,KAAK2mE,WAAQ,YADvB/mE,EAAAA,GAAAA,IASO,OATP2vC,GASO,EALLW,EAAAA,GAAAA,IAGEQ,EAAAA,CAFA9xC,MAAM,iBACNqJ,KAAK,mB,SACL,KACF,SAAGjI,EAAAA,GAAG,qBAAsB,CAAvB2mE,SAAmC3mE,EAAAA,qBAAiB,uBAGnDA,EAAAA,KAAK8nE,aAAe9nE,EAAAA,KAAK8nE,YAAYntE,OAAS,IAAH,YADnDiF,EAAAA,GAAAA,IA4BM,MA5BN4vC,GA4BM,iBAxBJ5vC,EAAAA,GAAAA,IAuBK8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IAtBsB1vC,EAAAA,KAAK8nE,aAAW,SAAjCC,EAAOplE,G,mBADjB/C,EAAAA,GAAAA,IAuBK,MArBF+G,IAAKhE,EACN/D,MAAM,sB,EAENkB,EAAAA,GAAAA,GAQK,MAPFsM,MAAOpM,EAAAA,KAAKgoE,YAAYrlE,GAAO3H,KAChC4D,MAAM,2B,EAENsxC,EAAAA,GAAAA,IAGE0rB,EAAAA,CAFCt7D,KAAMynE,EAAM/sE,KACZtB,MAAOsG,EAAAA,KAAKtG,O,iCAGjBoG,EAAAA,GAAAA,GAQK,MAPFsM,MAAOpM,EAAAA,KAAKgoE,YAAYrlE,GAAOuI,MAChCtM,MAAM,4B,EAENsxC,EAAAA,GAAAA,IAGE0rB,EAAAA,CAFCt7D,KAAMynE,EAAM78D,MACZxR,MAAOsG,EAAAA,KAAKtG,O,gEAKrBw2C,EAAAA,GAAAA,IAqEekrB,EAAAA,CApEZ,aAAYp7D,EAAAA,IACZ,uBAAqB,EACrB,YAAWA,EAAAA,a,oBAEZ,iBAYE,EAZFkwC,EAAAA,GAAAA,IAYEyqB,EAAAA,CAXAh0D,IAAI,WACHqB,MAAOhI,EAAAA,GAAG,sBACV6gB,MAAO7gB,EAAAA,KAAKioE,eACZxP,UAAU,EACVrsD,MAAOpM,EAAAA,GAAG,+BACV4a,SAAU5a,EAAAA,SACX,gBAAc,OACb,UAASA,EAAAA,OACT,oBAAmBA,EAAAA,KAAKuuB,gBACxB,cAAY,EACZ,kBAAiBvuB,EAAAA,W,6FAGZA,EAAAA,oBAAiB,YADzBJ,EAAAA,GAAAA,IAWM,OATJ+G,IAAI,YACHqB,MAAOhI,EAAAA,GAAG,uBACV+H,UAAW/H,EAAAA,KAAKkoE,e,EAEjBh4B,EAAAA,GAAAA,IAIai4B,EAAAA,CAJA,UAASnoE,EAAAA,QAAM,CACf0C,MAAI,UACb,gBADgBA,EAAI,EAAJA,KAAI,QACpBwtC,EAAAA,GAAAA,IAA2Bk4B,EAAAA,CAAd7rE,KAAMmG,GAAI,iB,iDAKrB1C,EAAAA,sBAAmB,YAD3BJ,EAAAA,GAAAA,IAcM,OAZJ+G,IAAI,YACHqB,MAAOhI,EAAAA,GAAG,uBACV+H,UAAW/H,EAAAA,KAAKqoE,iB,EAEjBn4B,EAAAA,GAAAA,IAOeo4B,EAAAA,CAPA,UAAStoE,EAAAA,QAAM,CACjB0C,MAAI,UACb,gBADgBA,EAAI,EAAJA,KAAI,QACpBwtC,EAAAA,GAAAA,IAGEk4B,EAAAA,CAFC7rE,KAAMmG,EACN,iBAAgB1C,EAAAA,M,oFAKzBkwC,EAAAA,GAAAA,IAWEyqB,EAAAA,CAVAh0D,IAAI,QACHqB,MAAOhI,EAAAA,GAAG,mBACV+H,UAAW/H,EAAAA,MAAM+X,gBAAgBpd,OACjC89D,UAAU,EACVrsD,MAAOpM,EAAAA,GAAG,mBACX,gBAAc,QACb4a,SAAU5a,EAAAA,MACV,UAASA,EAAAA,OACT,cAAY,EACZ,kBAAiBA,EAAAA,W,4EAGZA,EAAAA,OAAI,YADZuwC,EAAAA,GAAAA,IAWEoqB,EAAAA,CATAh0D,IAAI,YACHqB,MAAOhI,EAAAA,GAAG,uBACV+H,UAAW/H,EAAAA,UAAU+X,gBAAgBpd,OACrC89D,UAAU,EACVrsD,MAAOpM,EAAAA,GAAG,uBACX,gBAAc,YACb4a,SAAU5a,EAAAA,UACV,cAAY,EACZ,kBAAiBA,EAAAA,W,4HAGtBF,EAAAA,GAAAA,GAGE,OAFCkwC,IAAKhwC,EAAAA,aACNpB,MAAM,gB,2BAGVgB,EAAAA,GAAAA,IAiBM,MAjBNmwC,GAiBM,EAbJjwC,EAAAA,GAAAA,GAIM,MAJNkxC,GAIM,EAHJlxC,EAAAA,GAAAA,GAEM,MAFNmwC,IAEM,SADDjwC,EAAAA,GAAG,yBAAD,MAGTF,EAAAA,GAAAA,GAOM,MAPNswC,GAOM,CANQpwC,EAAAA,QAAK,YAAjBJ,EAAAA,GAAAA,IAAqC,oBAAfI,EAAAA,OAAK,kBAC3BuwC,EAAAA,GAAAA,IAIEG,EAAAA,C,MAFAqQ,KAAA,GACA94C,KAAK,wB,aU7IRrJ,MAAM,uB,IACJA,MAAM,iB,IACJA,MAAM,S,IAIRA,MAAM,0B,6BAkBTA,MAAM,4B,eASDA,MAAM,sB,2CAqBRA,MAAM,c,eAiBAA,MAAM,uC,UAMXA,MAAM,4B,UAUNA,MAAM,yB,qBAUNA,MAAM,yB,qBAcNA,MAAM,yB,IASDA,MAAM,W,2CAeTA,MAAM,S,IAOdkB,EAAAA,GAAAA,GAAmE,OAA9DlB,MAAM,uDAAqD,S,uBCnIpEq6B,GAAAA,GAAAA,IACE+kB,GAAAA,IACAoD,GAAAA,KAoHF,SAjHe,CACbjhD,WAAY,CACVunE,WAAAA,GACAzP,aAAAA,GACAjR,OAAAA,GAAAA,QACAmU,YAAAA,GAAAA,GAEFt8D,MAAO,CACL,SAEFtF,KAAI,WACF,MAAO,CACLqzC,QAAQ,EACRv0B,SAAS,EACT4tC,WAAY3mD,KAAKvD,OAAS,GAC1BqhE,QAAS,GACTxlD,SAAU,GACV2wD,SAAU,GACVC,gBAAiB,WAEjBC,eAAgB,EAChBC,qBAAsB,EACtBC,UAAW,GAEf,EACAniE,SAAU,CACRlK,MAAK,WAAI,WACP,OAAOgD,KAAK89D,QAAQ/kE,KAAI,SAAAsf,GAAM,OAAI,EAAKo3B,OAAOj7B,QAAQqb,SAASxX,EAAO,GACxE,EACAI,gBAAe,WACb,IAAMiB,EAAoB1Z,KAAKyvC,OAAOtzC,MAAMmc,SAASoB,kBAErD,OAAO1Z,KAAKsY,SAASvd,QAAO,SAAA6f,GAAM,OAChClB,EAAkBkB,EAAOjhB,MAAQ+f,EAAkBkB,EAAOjhB,IAAIkhB,OAAO,GAEzE,GAEFi+B,QAAO,WACL94C,KAAKmkB,OAAOnkB,KAAKvD,MACnB,EACAm8C,MAAO,CACLn8C,MAAK,SAAEkvB,GACL3rB,KAAK2mD,WAAah7B,EAClB3rB,KAAKmkB,OAAOwH,EACd,GAEF7rB,QAAS,CACPwpE,SAAQ,SAAE7sE,GACRuD,KAAKG,QAAQd,KAAK,CAAE3D,KAAM,SAAUe,MAAO,CAAEA,MAAAA,KAC7CuD,KAAKkI,MAAM0+C,YAAY7W,OACzB,EACA5rB,OAAM,SAAE1nB,GAA0B,WAAnB8sE,EAAa,UAAH,6CAAG,KACrB9sE,GAKLuD,KAAK+Y,SAAU,EACf/Y,KAAKkI,MAAM0+C,YAAY4iB,OACnBxpE,KAAKqpE,YAAc5sE,IACrBuD,KAAK89D,QAAU,GACf99D,KAAKipE,SAAW,GAChBjpE,KAAKsY,SAAW,GAEhBtY,KAAKmpE,eAAiB,EACtBnpE,KAAKopE,qBAAuB,GAG9BppE,KAAKyvC,OAAOvzC,SAAS,SAAU,CAAEkoB,EAAG3nB,EAAOpD,SAAS,EAAMirB,OAAQtkB,KAAKmpE,eAAgBzpE,KAAM6pE,IAC1FjwE,MAAK,SAAAW,GACJ,EAAK8e,SAAU,EAEf,IAAM0wD,EAAY,EAAKnxD,SAASjd,OAGhC,EAAKyiE,QAAU,EAAKA,QAAQ7iE,OAAOlC,KAAIkB,EAAKunB,SAAU,OACtD,EAAKlJ,SAAW,KAAO,EAAKA,SAASrd,OAAOhB,EAAKqe,UAAW,MAC5D,EAAK2wD,SAAW,EAAKA,SAAShuE,OAAOhB,EAAKgvE,UAE1C,EAAKC,gBAAkB,EAAKQ,eAC5B,EAAKp8B,QAAS,EAGd,EAAK67B,eAAiB,EAAK7wD,SAASjd,OAEpC,EAAK+tE,qBAAuB,EAAK9wD,SAASjd,OAASouE,EACnD,EAAKJ,UAAY5sE,CACnB,KAlCAuD,KAAK+Y,SAAU,CAmCnB,EACA4wD,YAAW,SAAEpiE,GACX,IAAMlM,EAAS2E,KAAKuH,GAASlM,OAC7B,OAAkB,IAAXA,EAAe,GAAK,KAAH,OAAQA,EAAM,IACxC,EACAuuE,kBAAiB,SAAEviE,GACjBrH,KAAKkpE,gBAAkB7hE,CACzB,EACAqiE,aAAY,WACV,OAAI1pE,KAAKyY,gBAAgBpd,OAAS,EACzB,WACE2E,KAAKhD,MAAM3B,OAAS,EACtB,SACE2E,KAAKipE,SAAS5tE,OAAS,EACzB,WAGF,UACT,EACAwuE,kBAAiB,SAAEC,GACjB,OAAOA,EAAQ3f,SAAW2f,EAAQ3f,QAAQ,EAC5C,ICrHJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,0KFNzD7pD,EAAAA,GAAAA,IA+IM,MA/INC,GA+IM,EA9IJC,EAAAA,GAAAA,GAIM,MAJNyvC,GAIM,EAHJzvC,EAAAA,GAAAA,GAEM,MAFN0vC,IAEM,SADDxvC,EAAAA,GAAG,eAAD,MAGTF,EAAAA,GAAAA,GAeM,MAfN6vC,GAeM,YAdJ7vC,EAAAA,GAAAA,GAMC,SALCkwC,IAAI,c,qDACKhwC,EAAAA,WAAU,IACnBpB,MAAM,eACLixC,YAAa7vC,EAAAA,GAAG,cAChBm5C,QAAK,0CAAQn5C,EAAAA,SAASA,EAAAA,WAAU,gB,oBAHxBA,EAAAA,eAKXF,EAAAA,GAAAA,GAMS,UALPlB,MAAM,mCACNI,KAAK,SACJK,QAAK,+BAAEW,EAAAA,SAASA,EAAAA,WAAU,I,EAE3BkwC,EAAAA,GAAAA,IAAwBQ,EAAAA,CAAhBzoC,KAAK,eAITjI,EAAAA,SAA6B,GAAlBA,EAAAA,iBAAc,YADjCJ,EAAAA,GAAAA,IASM,MATNmxC,GASM,EALJb,EAAAA,GAAAA,IAIEQ,EAAAA,CAHAzoC,KAAK,eACL84C,KAAA,GACA9P,KAAK,UAGOjxC,EAAAA,SAAM,YAAtBJ,EAAAA,GAAAA,IAqBM,WApBJE,EAAAA,GAAAA,GAmBM,MAnBNiwC,GAmBM,EAlBJG,EAAAA,GAAAA,IAiBekrB,EAAAA,CAhBbprB,IAAI,cACH,YAAWhwC,EAAAA,kBACX,aAAYA,EAAAA,iB,oBAEb,iBAGE,EAHFF,EAAAA,GAAAA,GAGE,QAFA6G,IAAI,WACHqB,MAAOhI,EAAAA,GAAG,sBAAwBA,EAAAA,YAAY,oB,YAEjDF,EAAAA,GAAAA,GAGE,QAFA6G,IAAI,SACHqB,MAAOhI,EAAAA,GAAG,iBAAmBA,EAAAA,YAAY,U,YAE5CF,EAAAA,GAAAA,GAGE,QAFA6G,IAAI,WACHqB,MAAOhI,EAAAA,GAAG,mBAAqBA,EAAAA,YAAY,a,yEAKpDF,EAAAA,GAAAA,GAuFM,MAvFNuwC,GAuFM,CAtF2B,aAApBrwC,EAAAA,kBAAe,YAA1BJ,EAAAA,GAAAA,IAsCM,0BArCJA,EAAAA,GAAAA,IASE8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IARiB1vC,EAAAA,iBAAe,SAAzBka,G,mBADTq2B,EAAAA,GAAAA,IASEgY,EAAAA,CAPC5hD,IAAKuT,EAAOjhB,GACZ80D,aAAa,EACb+B,YAAY,EACZsO,SAAS,EACVx/D,MAAM,gBACL6pD,UAAWvuC,EACX,cAAY,G,gCAGNla,EAAAA,SAAWA,EAAAA,QAAUA,EAAAA,qBAAuB,IAAH,YADlDJ,EAAAA,GAAAA,IAQS,U,MANPhB,MAAM,wDACLS,QAAK,0CAAUW,EAAAA,OAAOA,EAAAA,WAAY,WAAF,kB,EAEjCF,EAAAA,GAAAA,GAEM,MAFNupE,IAEM,SADDrpE,EAAAA,GAAG,qBAAD,MAIIA,EAAAA,SAAWA,EAAAA,eAAiB,IAAH,YADtCJ,EAAAA,GAAAA,IASM,MATN4wC,GASM,EALJN,EAAAA,GAAAA,IAIEQ,EAAAA,CAHAzoC,KAAK,eACL84C,KAAA,GACA9P,KAAK,W,gBAI2B,IAA3BjxC,EAAAA,gBAAgBrF,QAAyC,IAAzBqF,EAAAA,sBAAgCA,EAAAA,UAAWA,EAAAA,QAIlB,kBAJwB,YAD1FJ,EAAAA,GAAAA,IAOM,MAPN6wC,GAOM,EAHJ3wC,EAAAA,GAAAA,GAEK,oBAD2B,IAA3BE,EAAAA,gBAAgBrF,OAAeqF,EAAAA,GAAG,qBAAuBA,EAAAA,GAAG,2BAAD,SAIhC,WAApBA,EAAAA,kBAAe,YAA/BJ,EAAAA,GAAAA,IAaM,UAXqB,IAAjBI,EAAAA,MAAMrF,SAAiBqF,EAAAA,SAAWA,EAAAA,SAAM,YADhDJ,EAAAA,GAAAA,IAKM,MALN0pE,GAKM,EADJxpE,EAAAA,GAAAA,GAAsC,oBAA/BE,EAAAA,GAAG,sBAAD,uCAEXJ,EAAAA,GAAAA,IAKE8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IAJe1vC,EAAAA,OAAK,SAAbzD,G,mBADTg0C,EAAAA,GAAAA,IAKE63B,EAAAA,CAHCzhE,IAAKpK,EAAKtD,GACVsD,KAAMA,EACPqC,MAAM,2B,6BAG0B,aAApBoB,EAAAA,kBAAe,YAA/BJ,EAAAA,GAAAA,IAgCM,UA9BwB,IAApBI,EAAAA,SAASrF,SAAiBqF,EAAAA,SAAWA,EAAAA,SAAM,YADnDJ,EAAAA,GAAAA,IAKM,MALN2pE,GAKM,EADJzpE,EAAAA,GAAAA,GAAsC,oBAA/BE,EAAAA,GAAG,sBAAD,uCAEXJ,EAAAA,GAAAA,IAwBM8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IAvBc1vC,EAAAA,UAAQ,SAAnBopE,G,mBADTxpE,EAAAA,GAAAA,IAwBM,OAtBH+G,IAAKyiE,EAAQtqE,IACdF,MAAM,8B,EAENkB,EAAAA,GAAAA,GAYM,MAZN0pE,GAYM,EAXJt5B,EAAAA,GAAAA,IAEcC,EAAAA,CAFAvT,GAAE,CAAA5hC,KAAAA,eAAAo5B,OAAAA,CAAAn3B,IAAyCmsE,EAAQpuE,Q,oBAAU,iBACxE,WADwE,MACxE,SAAGouE,EAAQpuE,MAAI,G,sBAEPgF,EAAAA,kBAAkBopE,KAAO,YAApCxpE,EAAAA,GAAAA,IAOM,UAN+C,GAAvCI,EAAAA,kBAAkBopE,GAAStoD,WAAQ,YAA/ClhB,EAAAA,GAAAA,IAEO,oBADFI,EAAAA,GAAG,wBAAyB,CAA1B6gB,MAAmC7gB,EAAAA,kBAAkBopE,GAAStoD,YAAQ,kBAE7ElhB,EAAAA,GAAAA,IAEO,oBADFI,EAAAA,GAAG,wBAAyB,CAA1B6gB,MAAmC7gB,EAAAA,kBAAkBopE,GAAStoD,YAAQ,0BAKzE9gB,EAAAA,kBAAkBopE,KAAO,YADjCxpE,EAAAA,GAAAA,IAKM,MALN6pE,IAKM,SADDzpE,EAAAA,kBAAkBopE,GAASM,MAAI,sB,gCAK1CC,I,aG9IG/qE,MAAM,gC,IACJA,MAAM,iB,IAGNA,MAAM,c,IAKFA,MAAM,a,IACJA,MAAM,e,IAMLA,MAAM,cACN0vC,IAAI,oB,wCAaN1vC,MAAM,c,eAcJA,MAAM,cACN0vC,IAAI,oB,wCAaN1vC,MAAM,c,eAcJA,MAAM,cACN0vC,IAAI,S,0CAaN1vC,MAAM,c,eASHA,MAAM,c,IAEPA,MAAM,cACN0vC,IAAI,O,kCAgBJ1vC,MAAM,cACN0vC,IAAI,oB,0BAaN1vC,MAAM,c,eAcJA,MAAM,cACN0vC,IAAI,iC,0BAaN1vC,MAAM,c,0BAiBJA,MAAM,cACN0vC,IAAI,oB,gDAgBN1vC,MAAM,c,gCA2BNA,MAAM,c,IAGJA,MAAM,cACN0vC,IAAI,U,wCAaNr1C,GAAG,gBACH2F,MAAM,c,IAGJA,MAAM,cACN0vC,IAAI,iB,qCA2BN1vC,MAAM,c,IAEC0vC,IAAI,S,IASR1vC,MAAM,c,2CAoBbA,MAAM,c,IAEDA,MAAM,e,ynBC9KrB,SAvHqB,CACnBgrE,MAAK,WAAM,MAAO,CAAEC,IAAIC,EAAAA,GAAAA,MAAiB,EACzCvwE,KAAM,iBAAO,CACXgD,KAAM,CACJwtE,MAAO,GACPC,SAAU,GACVhgD,SAAU,GACVC,SAAU,GACVo2C,QAAS,GACTsG,SAAU,GACVS,OAAQ,GACRl+D,SAAU,CAAC,KAEb+gE,QAAS,CAAC,EACX,EACD9pE,WAAY,CACV+pE,0BAAAA,GAAAA,GAEFC,YAAW,WAAI,WACb,MAAO,CACL5tE,KAAM,CACJwtE,MAAO,CAAEhrE,UAAUqrE,EAAAA,GAAAA,KAAW,kBAAM,EAAKC,yBAAyB,KAClErgD,SAAU,CAAEjrB,SAAAA,GAAAA,IACZirE,SAAU,CAAEjrE,SAAAA,GAAAA,IACZkrB,SAAU,CAAElrB,SAAAA,GAAAA,IACZshE,QAAS,CACPthE,SAAAA,GAAAA,GACAurE,QAAQA,EAAAA,GAAAA,IAAOhrE,KAAK/C,KAAK0tB,WAE3B08C,SAAU,CACR5nE,UAAUqrE,EAAAA,GAAAA,KAAW,kBAAM,EAAK53D,gBAAgB,IAChD+3D,SAAU,SAAAr/D,GACR,OAAQ,EAAKsH,kBAAoB,IAAIuW,KAAK7d,GAAOg7B,WAAa,EAAKskC,YAAYtkC,SACjF,GAEFkhC,OAAQ,CAAEroE,UAAUqrE,EAAAA,GAAAA,KAAW,kBAAM,EAAKK,uBAAuB,KACjEvhE,SAAU,CAAC,GAGjB,EACAysC,QAAO,aACCr2C,KAAK8O,mBAAqB9O,KAAKgrB,OAAUhrB,KAAKkyC,WAClDlyC,KAAKG,QAAQd,KAAK,CAAE3D,KAAM,SAG5BsE,KAAKorE,YACP,EACAlkE,SAAU,IACR8jB,MAAK,WAAM,OAAOhrB,KAAK6jD,OAAO/uB,OAAO9J,KAAM,EAC3CqgD,eAAc,WACZ,OAAOrrE,KAAKsrE,gBAAgBtrE,KAAKg4D,GAAG,gCACtC,EACAuT,kBAAiB,WACf,OAAOvrE,KAAKsrE,gBAAgBtrE,KAAKg4D,GAAG,mCACtC,EACAkT,YAAW,WACT,IAAMM,EAASxrE,KAAKmT,eACd6rD,EAAQ,IAAIv1C,KAClBu1C,EAAMyM,mBAAmB,GACzBzM,EAAM0M,cAAc,GACpB1M,EAAM2M,cAAc,GACpB3M,EAAM4M,YAAY,GAClB,IAAMC,EAAU,IAAIpiD,KAEpB,OADAoiD,EAAQC,QAAQ9M,EAAMp4B,UAAY4kC,EAASO,GAAAA,IACpCF,CACT,EACAG,gBAAe,WACb,OAAOhsE,KAAKkrE,YAAYe,SAAShuE,QAAQ,OAAQ,GACnD,EACAiuE,qBAAoB,WAClB,IAAM9E,EAAgBlI,GAAAA,EAAAA,wBAAsCl/D,KAAKm/D,MAAMp1D,QACvE,OAAO/J,KAAK/C,KAAKoqE,UAAY,IAAI59C,KAAKA,KAAK4a,MAAMrkC,KAAKkrE,cAAcjM,mBAAmBmI,EAAe,CAAEE,SAAU,MAAOlI,IAAK,UAAWC,MAAO,OAAQkI,KAAM,WAChK,IACG5/D,EAAAA,EAAAA,IAAS,CACVmH,iBAAkB,SAAC3S,GAAK,OAAKA,EAAM4Q,SAAS+B,gBAAgB,EAC5DojC,SAAU,SAAC/1C,GAAK,QAAOA,EAAMa,MAAM2Q,WAAW,EAC9Cw+D,UAAW,SAAChwE,GAAK,OAAKA,EAAMa,MAAMyyB,aAAa,EAC/C28C,uBAAwB,SAACjwE,GAAK,OAAKA,EAAMa,MAAM0yB,YAAY,EAC3D28C,eAAgB,SAAClwE,GAAK,OAAKA,EAAM4Q,SAAS4G,GAAG,EAC7Co3D,0BAA2B,SAAC5uE,GAAK,OAAKA,EAAM4Q,SAASg+D,yBAAyB,EAC9EI,wBAAyB,SAAChvE,GAAK,OAAKA,EAAM4Q,SAASo+D,uBAAuB,EAC1Ej4D,iBAAkB,SAAC/W,GAAK,OAAKA,EAAM4Q,SAASmG,gBAAgB,EAC5DC,eAAgB,SAAChX,GAAK,OAAKA,EAAM4Q,SAASoG,cAAc,KAG5DrT,QAAS,UACJuvC,EAAAA,EAAAA,IAAW,CAAC,SAAU,gBAAc,IACjCC,OAAM,WAAI,iHAWE,GAVhB,EAAKryC,KAAK0Y,SAAW,EAAK1Y,KAAKytB,SAC/B,EAAKztB,KAAK+tB,MAAQ,EAAKA,MAEvB,EAAK/tB,KAAKqvE,iBAAmB,EAAK3B,QAAQ4B,SAC1C,EAAKtvE,KAAKuvE,cAAgB,EAAK7B,QAAQ3/C,MACvC,EAAK/tB,KAAKwvE,oBAAsB,EAAK9B,QAAQ+B,YACzC,EAAKzvE,KAAK2M,WACZ,EAAK3M,KAAK2M,SAAWs1D,GAAAA,EAAAA,6BAA2C,EAAKjiE,KAAK2M,SAAS7O,QAAO,SAAAO,GAAC,OAAIA,CAAC,MAGlG,EAAKivE,GAAGoC,SAEH,EAAKpC,GAAGqC,SAAU,CAAF,0CAEX,EAAKj4C,OAAO,EAAK13B,MAAK,QAC5B,EAAKkD,QAAQd,KAAK,CAAE3D,KAAM,YAAY,kDAEtCsa,QAAQC,KAAK,wBAAyB,EAAF,IACpC,EAAKm1D,aAAY,yDAnBP,EAsBhB,EACAA,WAAU,WAAI,WACZprE,KAAKg1B,aAAa17B,MAAK,SAAAuzE,GAAS,EAAKlC,QAAUkC,CAAI,GACrD,EACAvB,gBAAe,SAAEwB,GACf,OAAOA,EAAI7uE,QAAQ,YAAa,MAClC,KCjHJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,wFFNzDqC,EAAAA,GAAAA,IAoTM,MApTNC,GAoTM,EAnTJC,EAAAA,GAAAA,GAEM,MAFNyvC,IAEM,SADDvvC,EAAAA,GAAG,8BAAD,IAEPF,EAAAA,GAAAA,GA+SM,MA/SN0vC,GA+SM,EA9SJ1vC,EAAAA,GAAAA,GA6SO,QA5SLlB,MAAM,oBACL6wC,SAAM,4CAAUzvC,EAAAA,OAAOA,EAAAA,KAAI,kB,EAE5BF,EAAAA,GAAAA,GA6RM,MA7RN6vC,GA6RM,EA5RJ7vC,EAAAA,GAAAA,GAoRM,MApRN8vC,GAoRM,EAnRJ9vC,EAAAA,GAAAA,GAgBM,OAfJlB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,aAAY,qBACah0C,EAAAA,GAAGzD,KAAKytB,SAASqiD,W,EAEhDvsE,EAAAA,GAAAA,GAGmC,QAHnCixC,IAGmC,SAA/B/wC,EAAAA,GAAG,mBAAD,cACNF,EAAAA,GAAAA,GAOC,SANC7G,GAAG,mB,qDACW+G,EAAAA,GAAGzD,KAAKytB,SAASsiD,OAAM,IACpCvkE,SAAU/H,EAAAA,UACXpB,MAAM,eACL,iBAAe,EACfixC,YAAa7vC,EAAAA,GAAG,sC,mBAJHA,EAAAA,GAAGzD,KAAKytB,SAASsiD,YAAM,G,MAArC,OAAsC,GAQlCtsE,EAAAA,GAAGzD,KAAKytB,SAASuiD,SAAM,YAD/B3sE,EAAAA,GAAAA,IASM,MATNmwC,GASM,EALJjwC,EAAAA,GAAAA,GAIK,WAHQE,EAAAA,GAAGzD,KAAKytB,SAASjrB,UACf,kBADuB,YAApCa,EAAAA,GAAAA,IAEK,UADHE,EAAAA,GAAAA,GAAmE,sBAA1DE,EAAAA,GAAG,+CAAD,6BAKjBF,EAAAA,GAAAA,GAgBM,OAfJlB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,aAAY,qBACah0C,EAAAA,GAAGzD,KAAKytE,SAASqC,W,EAEhDvsE,EAAAA,GAAAA,GAG0C,QAH1CmwC,IAG0C,SAAtCjwC,EAAAA,GAAG,0BAAD,cACNF,EAAAA,GAAAA,GAOC,SANC7G,GAAG,mB,qDACW+G,EAAAA,GAAGzD,KAAKytE,SAASsC,OAAM,IACpCvkE,SAAU/H,EAAAA,UACXpB,MAAM,eACL,iBAAe,EACfixC,YAAa7vC,EAAAA,GAAG,sC,mBAJHA,EAAAA,GAAGzD,KAAKytE,SAASsC,YAAM,G,MAArC,OAAsC,GAQlCtsE,EAAAA,GAAGzD,KAAKytE,SAASuC,SAAM,YAD/B3sE,EAAAA,GAAAA,IASM,MATNywC,GASM,EALJvwC,EAAAA,GAAAA,GAIK,WAHQE,EAAAA,GAAGzD,KAAKytE,SAASjrE,UACf,kBADuB,YAApCa,EAAAA,GAAAA,IAEK,UADHE,EAAAA,GAAAA,GAAmE,sBAA1DE,EAAAA,GAAG,+CAAD,6BAKjBF,EAAAA,GAAAA,GAgBM,OAfJlB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,aAAY,qBACah0C,EAAAA,GAAGzD,KAAKwtE,MAAMsC,W,EAE7CvsE,EAAAA,GAAAA,GAGuG,QAHvGupE,IAGuG,SAAnGrpE,EAAAA,0BAA4BA,EAAAA,GAAG,sBAAwBA,EAAAA,GAAG,gCAAD,cAC7DF,EAAAA,GAAAA,GAOC,SANC7G,GAAG,Q,qDACM+G,EAAAA,GAAGzD,KAAKwtE,MAAMuC,OAAM,IAC5BvkE,SAAU/H,EAAAA,UACXpB,MAAM,eACNI,KAAK,QACJ,gBAAegB,EAAAA,2B,mBAJPA,EAAAA,GAAGzD,KAAKwtE,MAAMuC,WAAM,GAQzBtsE,EAAAA,GAAGzD,KAAKwtE,MAAMwC,SAAM,YAD5B3sE,EAAAA,GAAAA,IASM,MATN6wC,GASM,EALJ3wC,EAAAA,GAAAA,GAIK,WAHQE,EAAAA,GAAGzD,KAAKwtE,MAAMhrE,UACZ,kBADoB,YAAjCa,EAAAA,GAAAA,IAEK,UADHE,EAAAA,GAAAA,GAAgE,sBAAvDE,EAAAA,GAAG,4CAAD,6BAKjBF,EAAAA,GAAAA,GAYM,MAZNwpE,GAYM,EAXJxpE,EAAAA,GAAAA,GAG8C,QAH9C0sE,IAG8C,SAA1CxsE,EAAAA,GAAG,8BAAD,cACNF,EAAAA,GAAAA,GAME,YALA7G,GAAG,M,qDACM+G,EAAAA,KAAKysE,IAAG,IAChB1kE,SAAU/H,EAAAA,UACXpB,MAAM,eACLixC,YAAa7vC,EAAAA,gB,mBAHLA,EAAAA,KAAKysE,UAOlB3sE,EAAAA,GAAAA,GAgBM,OAfJlB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,aAAY,qBACah0C,EAAAA,GAAGzD,KAAK0tB,SAASoiD,W,EAEhDvsE,EAAAA,GAAAA,GAGmC,QAHnC0pE,IAGmC,SAA/BxpE,EAAAA,GAAG,mBAAD,cACNF,EAAAA,GAAAA,GAOC,SANC7G,GAAG,mB,qDACM+G,EAAAA,KAAKiqB,SAAQ,IACrBliB,SAAU/H,EAAAA,UACXpB,MAAM,eACNI,KAAK,WACJ,iBAAe,G,mBAJPgB,EAAAA,KAAKiqB,aAAQ,GAQlBjqB,EAAAA,GAAGzD,KAAK0tB,SAASsiD,SAAM,YAD/B3sE,EAAAA,GAAAA,IASM,MATN8sE,GASM,EALJ5sE,EAAAA,GAAAA,GAIK,WAHQE,EAAAA,GAAGzD,KAAK0tB,SAASlrB,UACf,kBADuB,YAApCa,EAAAA,GAAAA,IAEK,UADHE,EAAAA,GAAAA,GAAmE,sBAA1DE,EAAAA,GAAG,+CAAD,6BAKjBF,EAAAA,GAAAA,GAgBM,OAfJlB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,aAAY,qBACah0C,EAAAA,GAAGzD,KAAK8jE,QAAQgM,W,EAE/CvsE,EAAAA,GAAAA,GAGkD,QAHlD2pE,IAGkD,SAA9CzpE,EAAAA,GAAG,kCAAD,cACNF,EAAAA,GAAAA,GAOC,SANC7G,GAAG,gC,qDACM+G,EAAAA,KAAKqgE,QAAO,IACpBt4D,SAAU/H,EAAAA,UACXpB,MAAM,eACNI,KAAK,WACJ,iBAAe,G,mBAJPgB,EAAAA,KAAKqgE,YAAO,GAQjBrgE,EAAAA,GAAGzD,KAAK8jE,QAAQkM,SAAM,YAD9B3sE,EAAAA,GAAAA,IAYM,MAZN+sE,GAYM,EARJ7sE,EAAAA,GAAAA,GAOK,WANOE,EAAAA,GAAGzD,KAAK8jE,QAAQthE,SAASmtE,WAAQ,YAA3CtsE,EAAAA,GAAAA,IAEK,UADHE,EAAAA,GAAAA,GAAgF,sBAAvEE,EAAAA,GAAG,4DAAD,uBAEHA,EAAAA,GAAGzD,KAAK8jE,QAAQiK,OAAO4B,WAAQ,YAAzCtsE,EAAAA,GAAAA,IAEK,UADHE,EAAAA,GAAAA,GAA6E,sBAApEE,EAAAA,GAAG,yDAAD,8CAKjBF,EAAAA,GAAAA,GAmBM,OAlBJlB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,aAAY,qBACah0C,EAAAA,GAAGzD,KAAKoqE,SAAS0F,W,EAEhDvsE,EAAAA,GAAAA,GAKQ,QALR8sE,IAKQ,SADH5sE,EAAAA,iBAAmBA,EAAAA,GAAG,yBAA2BA,EAAAA,GAAG,mCAAD,cAExDF,EAAAA,GAAAA,GAQC,SAPC7G,GAAG,mB,qDACM+G,EAAAA,KAAK2mE,SAAQ,IACrB5+D,SAAU/H,EAAAA,UACXpB,MAAM,eACNI,KAAK,OACJjE,IAAKiF,EAAAA,iBAAmBA,EAAAA,qBAAkB6D,EAC1C,gBAAe7D,EAAAA,kB,mBALPA,EAAAA,KAAK2mE,aAAQ,GASlB3mE,EAAAA,GAAGzD,KAAKoqE,SAAS4F,SAAM,YAD/B3sE,EAAAA,GAAAA,IAYM,MAZNitE,GAYM,EARJ/sE,EAAAA,GAAAA,GAOK,WANOE,EAAAA,GAAGzD,KAAKoqE,SAAS5nE,SAASmtE,WAAQ,YAA5CtsE,EAAAA,GAAAA,IAEK,UADHE,EAAAA,GAAAA,GAAmE,sBAA1DE,EAAAA,GAAG,+CAAD,uBAEHA,EAAAA,GAAGzD,KAAKoqE,SAAS4D,SAAS2B,WAAQ,YAA5CtsE,EAAAA,GAAAA,IAEK,UADHE,EAAAA,GAAAA,GAAmG,sBAA1FE,EAAAA,IAAI,4CAA6C,CAA9CgmC,KAAsDhmC,EAAAA,wBAAoB,8CAK5FF,EAAAA,GAAAA,GAWM,OAVJlB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,aAAY,qBACah0C,EAAAA,GAAGzD,KAAK2M,SAASmjE,W,EAEhDn8B,EAAAA,GAAAA,IAME48B,EAAAA,CALAx+B,IAAI,iBACH,cAAatuC,EAAAA,GAAG,+BAChBkJ,SAAUlJ,EAAAA,GAAGzD,KAAK2M,SAASojE,OAC3B,eAAc,SAAAvjB,GAAG,OAAI/oD,EAAAA,GAAGzD,KAAK2M,SAASojE,OAASvjB,CAAG,EAClD1pD,QAAK,uBAAN,cAAmB,sB,sDAKfW,EAAAA,0BAAuB,YAD/BJ,EAAAA,GAAAA,IAeM,MAfNmtE,GAeM,EAXJjtE,EAAAA,GAAAA,GAGwC,QAHxCktE,IAGwC,SAApChtE,EAAAA,GAAG,wBAAD,cACNF,EAAAA,GAAAA,GAME,YALA7G,GAAG,S,qDACM+G,EAAAA,KAAKonE,OAAM,IACnBr/D,SAAU/H,EAAAA,UACXpB,MAAM,eACLixC,YAAa7vC,EAAAA,mB,mBAHLA,EAAAA,KAAKonE,cAAM,gBAQA,QAAhBpnE,EAAAA,QAAQhB,OAAI,YADpBY,EAAAA,GAAAA,IA8BM,MA9BNqtE,GA8BM,EAzBJntE,EAAAA,GAAAA,GAGyC,QAHzCotE,IAGyC,SAArCltE,EAAAA,GAAG,yBAAD,0BAEkC5D,SAAS4D,EAAAA,QAAQhB,QAAI,YAA7DY,EAAAA,GAAAA,IAmBW8vC,GAAAA,GAAAA,CAAA/oC,IAAAA,GAAA,EAlBT7G,EAAAA,GAAAA,GAGC,OAFEy4C,IAAKv4C,EAAAA,QAAQlB,IACbO,QAAK,8BAAEW,EAAAA,YAAAA,EAAAA,WAAAA,MAAAA,EAAAA,UAAU,I,YAGpBF,EAAAA,GAAAA,GAA+C,qBAAvCE,EAAAA,GAAG,6BAAD,cAEVF,EAAAA,GAAAA,GAUC,SATC7G,GAAG,iB,uDACM+G,EAAAA,QAAQ6rE,SAAQ,IACxB9jE,SAAU/H,EAAAA,UACXpB,MAAM,eACNI,KAAK,OACLmuE,aAAa,MACbC,YAAY,MACZC,eAAe,MACfC,WAAW,S,mBAPFttE,EAAAA,QAAQ6rE,aAAQ,0CAavB7rE,EAAAA,QAAK,YADbJ,EAAAA,GAAAA,IAYM,MAZN2tE,GAYM,EARJztE,EAAAA,GAAAA,GAAyD,QAAzD0tE,IAAyD,SAAnCxtE,EAAAA,GAAG,uBAAD,cACxBF,EAAAA,GAAAA,GAMC,SALC7G,GAAG,Q,uDACM+G,EAAAA,MAAK,IACd+H,SAAS,OACTnJ,MAAM,eACNI,KAAK,Q,kBAHIgB,EAAAA,aAAK,iBAMlBF,EAAAA,GAAAA,GAQM,MARN2tE,GAQM,EAPJ3tE,EAAAA,GAAAA,GAMS,UALNiI,SAAU/H,EAAAA,UACXhB,KAAK,SACLJ,MAAM,uB,SAEHoB,EAAAA,GAAG,0BAAD,WAMXF,EAAAA,GAAAA,GAGE,OAFAlB,MAAM,mBACNsB,UAAQF,EAAAA,gB,aAKJA,EAAAA,uBAAuBrF,SAAM,YADrCiF,EAAAA,GAAAA,IAUM,MAVN8tE,GAUM,EANJ5tE,EAAAA,GAAAA,GAKM,MALN6tE,GAKM,iBAJJ/tE,EAAAA,GAAAA,IAGmB8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IAFD1vC,EAAAA,wBAAsB,SAA/B6K,G,mBADTjL,EAAAA,GAAAA,IAGmB,QADhB+G,IAAKkE,IAAK,SACTA,GAAK,E,qDG/SdjM,MAAM,gC,IACJA,MAAM,iB,IAGNA,MAAM,c,IAKFA,MAAM,a,2DAaFA,MAAM,0B,qBASTA,MAAM,iC,IAOHA,MAAM,c,kCAUNA,MAAM,c,0BAYXA,MAAM,kC,ykBCtDlBq6B,GAAAA,GAAAA,IACEC,GAAAA,KAGF,IAAM00C,GAAgB,CACpBr0E,KAAM,iBAAO,CACXgD,KAAM,CACJwtE,MAAO,IAET0B,WAAW,EACX7gE,SAAS,EACTijE,WAAW,EACXhjE,MAAO,KACR,EACDrE,SAAU,UACLS,EAAAA,EAAAA,IAAS,CACVuqC,SAAU,SAAC/1C,GAAK,QAAOA,EAAMa,MAAM2Q,WAAW,EAC9CZ,SAAU,SAAA5Q,GAAK,OAAIA,EAAM4Q,QAAQ,KACjC,IACFyhE,cAAa,WACX,OAAOxuE,KAAK+M,SAASyhE,aACvB,IAEFn4B,QAAO,WACDr2C,KAAKkyC,UACPlyC,KAAKG,QAAQd,KAAK,CAAE3D,KAAM,QAE9B,EACA6D,MAAO,CACLowC,uBAAwB,CACtB9vC,SAAS,EACTH,KAAMyB,UAGVrB,QAAS,CACP2uE,aAAY,WACVzuE,KAAKuL,MAAQ,IACf,EACA+jC,OAAM,WAAI,WACRtvC,KAAKmsE,WAAY,EACjB,IAAM1B,EAAQzqE,KAAK/C,KAAKwtE,OC3CR,SAAH,GAA4B,IAAtB19D,EAAQ,EAARA,SACjB+nB,EAAS,CAAE21C,MADqB,EAALA,OAE3BhuE,EAAQ,KAAOq4B,GAAQ,SAAClmB,EAAKpQ,EAAGlD,GACpC,IAAMgvB,EAAU,GAAH,OAAMhvB,EAAC,YAAIivB,mBAAmB/rB,IAC3C,MAAO,GAAP,OAAUoQ,EAAG,YAAI0b,EACnB,GAAG,IACG9qB,EAAM,GAAH,OAAMuN,GAAQ,OARW,iBAQmB,YAAItQ,GAEzD,OAAO2D,OAAOkW,MAAM9W,EAAK,CACvBmqB,OAAQ,QAEZ,EDmCM+kD,CAAiB,CAAE3hE,SAFF/M,KAAK+M,SAASgC,OAEF07D,MAAAA,IAASnxE,MAAK,YAAgB,IAAbshB,EAAM,EAANA,OAC5C,EAAKuxD,WAAY,EACjB,EAAKlvE,KAAKwtE,MAAQ,GAEH,MAAX7vD,GACF,EAAKtP,SAAU,EACf,EAAKC,MAAQ,MACO,MAAXqP,IACT,EAAK2zD,WAAY,EACjB,EAAKhjE,MAAQ,EAAKysD,GAAG,oCAEzB,IAAE,OAAO,WACP,EAAKmU,WAAY,EACjB,EAAKlvE,KAAKwtE,MAAQ,GAClB,EAAKl/D,MAAQ,EAAKysD,GAAG,wBACvB,GACF,IAIJ,YE7DA,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,8FHNzD13D,EAAAA,GAAAA,IAyEM,MAzENC,GAyEM,EAxEJC,EAAAA,GAAAA,GAEM,MAFNyvC,IAEM,SADDvvC,EAAAA,GAAG,kCAAD,IAEPF,EAAAA,GAAAA,GAoEM,MApEN0vC,GAoEM,EAnEJ1vC,EAAAA,GAAAA,GAkEO,QAjELlB,MAAM,sBACL6wC,SAAM,yCAAUzvC,EAAAA,QAAAA,EAAAA,OAAAA,MAAAA,EAAAA,UAAM,kB,EAEvBF,EAAAA,GAAAA,GA6DM,MA7DN6vC,GA6DM,CA5DQ3vC,EAAAA,cAQIA,EAAAA,SAAWA,EAAAA,YAAS,YAApCJ,EAAAA,GAAAA,IASM,UARKI,EAAAA,UAAO,YAAhBJ,EAAAA,GAAAA,IAEI,iBADCI,EAAAA,GAAG,+BAAD,sBAEPF,EAAAA,GAAAA,GAIM,MAJNmwC,GAIM,EAHJC,EAAAA,GAAAA,IAEcC,EAAAA,CAFAvT,GAAI,CAAA5hC,KAAAA,SAAc,C,mBAC9B,iBAAsC,qBAAnCgF,EAAAA,GAAG,+BAAD,G,6BAIXJ,EAAAA,GAAAA,IA6BM,UA3BII,EAAAA,yBAAsB,YAD9BJ,EAAAA,GAAAA,IAKI,IALJywC,IAKI,SADCrwC,EAAAA,GAAG,2CAAD,sBAEPF,EAAAA,GAAAA,GAEI,mBADCE,EAAAA,GAAG,+BAAD,IAEPF,EAAAA,GAAAA,GASM,MATNwwC,GASM,YARJxwC,EAAAA,GAAAA,GAOC,SANCkwC,IAAI,Q,qDACKhwC,EAAAA,KAAK+pE,MAAK,IAClBhiE,SAAU/H,EAAAA,UACV6vC,YAAa7vC,EAAAA,GAAG,8BACjBpB,MAAM,eACNI,KAAK,S,mBAJIgB,EAAAA,KAAK+pE,YAOlBjqE,EAAAA,GAAAA,GAQM,MARN0wC,GAQM,EAPJ1wC,EAAAA,GAAAA,GAMS,UALNiI,SAAU/H,EAAAA,UACXhB,KAAK,SACLJ,MAAM,iC,SAEHoB,EAAAA,GAAG,kBAAD,aA5Cc,YAAzBJ,EAAAA,GAAAA,IAOM,UANKI,EAAAA,yBAAsB,YAA/BJ,EAAAA,GAAAA,IAEI,iBADCI,EAAAA,GAAG,kEAAD,kBAEPJ,EAAAA,GAAAA,IAEI,iBADCI,EAAAA,GAAG,2CAAD,OA4CDA,EAAAA,QAAK,YADbJ,EAAAA,GAAAA,IAWI,IAXJquE,GAWI,EAPFnuE,EAAAA,GAAAA,GAAwB,sBAAfE,EAAAA,OAAK,IACdF,EAAAA,GAAAA,GAKI,KAJFlB,MAAM,sCACLS,QAAK,0CAAUW,EAAAA,cAAY,kB,EAE5BkwC,EAAAA,GAAAA,IAAuBQ,EAAAA,CAAfzoC,KAAK,gBAAO,0B,aInE3BrJ,MAAM,gC,IACJA,MAAM,iB,IACJA,MAAM,S,IAIRA,MAAM,c,ICLNA,MAAM,yCCoFf,SAlF0B,CACxBC,MAAO,CAAC,QACRsB,WAAY,CACVg9D,cAAAA,GAAAA,EACA/Y,aAAAA,GAAAA,GAEF7qD,KAAI,WACF,MAAO,CACL20E,6BAA6B,EAC7BC,0BAA0B,EAE9B,EACA/uE,QAAS,CACPgvE,gCAA+B,WAAI,WAC3BC,GAAQC,EAAAA,EAAAA,IAAuBhvE,KAAKyvC,QAAQ3uB,MAChD,SAACiuD,GAAK,OAAKA,EAAM1/C,aAAa11B,KAAO,EAAKsD,KAAKtD,IAAqB,mBAAfo1E,EAAMrvE,IAAyB,IAEtF,OAAOqvE,GAASA,EAAMp1E,EACxB,EACAs1E,yBAAwB,WACtBjvE,KAAK4uE,6BAA8B,CACrC,EACAM,yBAAwB,WACtBlvE,KAAK4uE,6BAA8B,CACrC,EACAO,sBAAqB,WACnBnvE,KAAK6uE,0BAA2B,CAClC,EACAO,sBAAqB,WACnBpvE,KAAK6uE,0BAA2B,CAClC,EACAQ,YAAW,WACLrvE,KAAKsvE,qBACPtvE,KAAKivE,2BAELjvE,KAAKuvE,WAET,EACAA,UAAS,WACPvvE,KAAKyvC,OAAOtzC,MAAMimB,IAAIC,kBAAkBgtD,YAAY,CAAE11E,GAAIqG,KAAK/C,KAAKtD,KACpEqG,KAAKyvC,OAAOvzC,SAAS,sBAAuB8D,KAAK/C,MAEjD,IAAMuyE,EAAUxvE,KAAK8uE,kCACrB9uE,KAAKyvC,OAAOvzC,SAAS,+BAAgC,CAAEvC,GAAI61E,IAC3DxvE,KAAKyvC,OAAOvzC,SAAS,qBAAsB,CACzCvC,GAAI61E,EACJ/uD,QAAS,SAAA9E,GACPA,EAAajc,KAAO,QACtB,IAEFM,KAAKkvE,0BACP,EACAO,SAAQ,WACFzvE,KAAK0vE,kBACP1vE,KAAKmvE,wBAELnvE,KAAK2vE,QAET,EACAA,OAAM,WAAI,WACFH,EAAUxvE,KAAK8uE,kCACrB9uE,KAAKyvC,OAAOtzC,MAAMimB,IAAIC,kBAAkBotD,SAAS,CAAE91E,GAAIqG,KAAK/C,KAAKtD,KAC9DL,MAAK,WACJ,EAAKm2C,OAAOvzC,SAAS,2BAA4B,CAAEvC,GAAI61E,IACvD,EAAK//B,OAAOvzC,SAAS,sBAAuB,EAAKe,KACnD,IACF+C,KAAKovE,uBACP,GAEFloE,SAAU,CACRuG,aAAY,WACV,OAAOzN,KAAKyvC,OAAOj7B,QAAQ/G,YAC7B,EACA6hE,qBAAoB,WAClB,OAAOtvE,KAAKyN,aAAaqD,oBAC3B,EACA4+D,kBAAiB,WACf,OAAO1vE,KAAKyN,aAAasD,iBAC3B,ICrEJ,GAXuB,CACrBlQ,WAAY,CACV+uE,mBCG6B,QAAgB,GAAQ,CAAC,CAAC,S,yGHNzD3+B,EAAAA,GAAAA,IAqCkBo0B,EAAAA,CArCApoE,KAAMyD,EAAAA,MAAI,C,mBAC1B,iBAaM,EAbNF,EAAAA,GAAAA,GAaM,MAbND,GAaM,EAZJC,EAAAA,GAAAA,GAKS,UAJPlB,MAAM,qBACLS,QAAK,8BAAEW,EAAAA,aAAAA,EAAAA,YAAAA,MAAAA,EAAAA,UAAW,K,SAEhBA,EAAAA,GAAG,sBAAD,IAEPF,EAAAA,GAAAA,GAKS,UAJPlB,MAAM,qBACLS,QAAK,8BAAEW,EAAAA,UAAAA,EAAAA,SAAAA,MAAAA,EAAAA,UAAQ,K,SAEbA,EAAAA,GAAG,mBAAD,mBAGTuwC,EAAAA,GAAAA,IAqBWsV,GAAAA,GAAAA,CArBDjpB,GAAG,UAAQ,CAEX58B,EAAAA,8BAA2B,YADnCuwC,EAAAA,GAAAA,IASgBuV,EAAAA,C,MAPb15C,MAAOpM,EAAAA,GAAG,mCACV,eAAcA,EAAAA,GAAG,2CACjB,cAAaA,EAAAA,GAAG,2CAChB+lD,WAAU/lD,EAAAA,UACVgmD,YAAWhmD,EAAAA,0B,oBAEZ,iBAAoE,qBAAjEA,EAAAA,GAAG,4BAA6B,CAA9BzD,KAAsCyD,EAAAA,KAAKpD,kBAAc,G,gGAGxDoD,EAAAA,2BAAwB,YADhCuwC,EAAAA,GAAAA,IASgBuV,EAAAA,C,MAPb15C,MAAOpM,EAAAA,GAAG,gCACV,eAAcA,EAAAA,GAAG,wCACjB,cAAaA,EAAAA,GAAG,wCAChB+lD,WAAU/lD,EAAAA,OACVgmD,YAAWhmD,EAAAA,uB,oBAEZ,iBAAiE,qBAA9DA,EAAAA,GAAG,yBAA0B,CAA3BzD,KAAmCyD,EAAAA,KAAKpD,kBAAc,G,6HE7BjE4J,SAAU,CACRqgB,SAAQ,WACN,OAAOvnB,KAAKyvC,OAAOtzC,MAAMimB,IAAI0U,cAC/B,IEFJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,8ELJzDx2B,EAAAA,GAAAA,IAcM,MAdNC,GAcM,EAbJC,EAAAA,GAAAA,GAIM,MAJNyvC,GAIM,EAHJzvC,EAAAA,GAAAA,GAEM,MAFN0vC,IAEM,SADDxvC,EAAAA,GAAG,wBAAD,MAGTF,EAAAA,GAAAA,GAOM,MAPN6vC,GAOM,iBANJ/vC,EAAAA,GAAAA,IAKE8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IAJkB1vC,EAAAA,UAAQ,SAAnBy4B,G,mBADT8X,EAAAA,GAAAA,IAKE4+B,EAAAA,CAHCxoE,IAAK8xB,EAAQx/B,GACbsD,KAAMk8B,EACP75B,MAAM,a,kCMUd,GApBY,CACVC,MAAO,CAAC,QACRu5C,QAAO,WAAI,WACT,GAAI94C,KAAKvG,KAAM,CACb,MAAmCuG,KAAKyvC,OAAOtzC,MAAM6tB,MAA7Cb,EAAQ,EAARA,SAAUC,EAAY,EAAZA,aAElBY,GAAAA,SAAe,CACbb,SAAAA,EACAC,aAAAA,EACArc,SAAU/M,KAAKyvC,OAAOtzC,MAAM4Q,SAASgC,OACrCtV,KAAMuG,KAAKvG,OACVH,MAAK,SAACsE,GACP,EAAK6xC,OAAOziC,OAAO,WAAYpP,EAAOm3B,cACtC,EAAK0a,OAAOvzC,SAAS,YAAa0B,EAAOm3B,cACzC,EAAK50B,QAAQd,KAAK,CAAE3D,KAAM,WAC5B,GACF,CACF,GCZF,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,yCCJzD4E,EAAAA,GAAAA,IAAY,UAAR,M,aCAChB,MAAM,uB,IACJA,MAAM,iB,IAGNA,MAAM,cCkCf,SApCoB,CAClBuB,WAAY,CACVunE,WAAAA,IAEFnuE,KAAI,WACF,MAAO,CACL+C,MAAO,GAEX,EACA87C,QAAO,WACL94C,KAAK+3C,gBACP,EACAj4C,QAAS,CACP24C,gBAAe,SAAEN,GAAO,WACtBA,EAAMnjC,SAAQ,SAAChW,EAAGqE,GAChB,EAAKosC,OAAOtzC,MAAMimB,IAAIC,kBAAkB4N,UAAU,CAAEt2B,GAAIqF,EAAEu5C,OACvDj/C,MAAK,SAACk/C,GACAA,EAAajtC,QAChB,EAAKkkC,OAAOziC,OAAO,cAAe,CAACwrC,IACnC,EAAKx7C,MAAMqC,KAAKm5C,GAEpB,GACJ,GACF,EACAT,eAAc,WAAI,WACV5/B,EAAcnY,KAAKyvC,OAAOtzC,MAAMa,MAAM2Q,YAAYwK,YACpDA,GACFD,EAAAA,GAAAA,YAAuB,CAAEC,YAAAA,IACtB7e,MAAK,SAAC6+C,GACL,EAAKM,gBAAgBN,EACvB,GAEN,IC5BJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,uEFJzD73C,EAAAA,GAAAA,IAYM,MAZNC,GAYM,EAXJC,EAAAA,GAAAA,GAEM,MAFNyvC,IAEM,SADDvvC,EAAAA,GAAG,gCAAD,IAEPF,EAAAA,GAAAA,GAOM,MAPN0vC,GAOM,iBANJ5vC,EAAAA,GAAAA,IAKE8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IAJe1vC,EAAAA,OAAK,SAAbzD,G,mBADTg0C,EAAAA,GAAAA,IAKE63B,EAAAA,CAHCzhE,IAAKpK,EAAKtD,GACVsD,KAAMA,EACPqC,MAAM,a,0CGTPA,MAAM,gB,ICCJA,MAAM,uB,IACJA,MAAM,c,iBCKjB,SAR4B,CAC1B4H,SAAU,CACRtH,QAAO,WACL,OAAOI,KAAKyvC,OAAOtzC,MAAM4Q,SAAS4G,GACpC,ICKJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,yCFNzDrT,EAAAA,GAAAA,IAWM,aAVJE,EAAAA,GAAAA,GASM,MATND,GASM,EARJC,EAAAA,GAAAA,GAOM,MAPNyvC,GAOM,EALJzvC,EAAAA,GAAAA,GAGE,OAFAlB,MAAM,cACNsB,UAAQF,EAAAA,S,6BGNXpB,MAAM,e,IACJA,MAAM,yC,IACJA,MAAM,oD,IACJA,MAAM,S,IAIRA,MAAM,c,ykBCwBjB,SA3BmB,CACjB+2C,QAAO,WAAI,WACSr2C,KAAKyvC,OAAOtzC,MAAM4Q,SAAS+iE,cACnC96D,SAAQ,SAAAW,GAAQ,OAAI,EAAK85B,OAAOvzC,SAAS,qBAAsByZ,EAAS,GACpF,EACA9U,WAAY,CACVg9D,cAAAA,GAAAA,GAEF32D,SAAU,OACR6oE,qBAAoB,WAClB,IAAMD,EAAgB/2E,KAAIiH,KAAK8vE,cAAe9vE,KAAK8vB,gBAAgB/0B,QAAO,SAAA0L,GAAC,OAAIA,CAAC,IAC1EspE,EAAuBC,KAAQF,EAAe,QAEpD,MAAO,CACL,CAAE9sB,KAAM,QAAShmD,MAAO+yE,EAAqBE,OAC7C,CAAEjtB,KAAM,YAAahmD,MAAO+yE,EAAqBG,YACjDn1E,QAAO,SAAAo1E,GAAK,OAAIA,EAAMnzE,KAAK,GAC/B,IACGmyC,EAAAA,EAAAA,IAAW,CACZ,qBAECxnC,EAAAA,EAAAA,IAAS,CACVmoE,cAAe,SAAA3zE,GAAK,OAAIA,EAAM4Q,SAAS+iE,aAAa,MClB1D,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,4EFNzDxvE,EAAAA,GAAAA,IAsBM,MAtBNC,GAsBM,EArBJC,EAAAA,GAAAA,GAoBM,MApBNyvC,GAoBM,EAnBJzvC,EAAAA,GAAAA,GAIM,MAJN0vC,GAIM,EAHJ1vC,EAAAA,GAAAA,GAEM,MAFN6vC,IAEM,SADD3vC,EAAAA,GAAG,gBAAD,MAGTF,EAAAA,GAAAA,GAaM,MAbN8vC,GAaM,iBAZJhwC,EAAAA,GAAAA,IAWM8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IAVY1vC,EAAAA,sBAAoB,SAA7ByvE,G,mBADT7vE,EAAAA,GAAAA,IAWM,OATH+G,IAAK8oE,EAAMntB,KACZ1jD,MAAM,e,EAENkB,EAAAA,GAAAA,GAA+C,oBAAxCE,EAAAA,GAAG,gBAAkByvE,EAAMntB,OAAI,mBACtC1iD,EAAAA,GAAAA,IAIE8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IAHe+/B,EAAMnzE,OAAK,SAAnBC,G,mBADTg0C,EAAAA,GAAAA,IAIEo0B,EAAAA,CAFCh+D,IAAKpK,EAAKC,YACVD,KAAMA,G,6DGffqC,MAAM,0B,IAEDA,MAAM,yC,IACJA,MAAM,oD,IACJA,MAAM,S,IAIRA,MAAM,c,IACJA,MAAM,e,g4BCHnB,IAAM8wE,GAAyB,SAACC,EAAWC,EAAMjpE,GAC/C,OAAOgpE,EAAUt3E,KAAI,SAAAgU,GACnB,OAAIujE,EAAKjpE,IAAQipE,EAAKjpE,GAAK0F,IAAaujE,EAAKjpE,GAAK0F,GAAU+6D,OACnD,CAAE/6D,SAAAA,EAAU+6D,OAAQwI,EAAKjpE,GAAK0F,GAAU+6D,QAE1C,CAAE/6D,SAAAA,EAAU+6D,OAAQ,GAC7B,GACF,EAyDA,SAvD6B,CAC3B5gE,SAAU,UACLS,EAAAA,EAAAA,IAAS,CACV4oE,iBAAkB,SAAAp0E,GAAK,OAAI,KAAIA,EAAO,4BAA4B,EAClEq0E,YAAa,SAAAr0E,GAAK,OAAI,KAAIA,EAAO,yCAA0C,GAAG,EAC9Es0E,oBAAqB,SAAAt0E,GAAK,OAAIi0E,GAC5B,KAAIj0E,EAAO,kDAAmD,IAC9D,KAAIA,EAAO,uDAAwD,IACnE,wBACD,EACDu0E,gBAAiB,SAAAv0E,GAAK,OAAIi0E,GACxB,KAAIj0E,EAAO,8CAA+C,IAC1D,KAAIA,EAAO,4CAA6C,IACxD,SACD,EACDw0E,gBAAiB,SAAAx0E,GAAK,OAAIi0E,GACxB,KAAIj0E,EAAO,8CAA+C,IAC1D,KAAIA,EAAO,4CAA6C,IACxD,SACD,EACDy0E,oBAAqB,SAAAz0E,GAAK,OAAIi0E,GAC5B,KAAIj0E,EAAO,kEAAmE,IAC9E,KAAIA,EAAO,4CAA6C,IACxD,6BACD,EACD00E,mBAAoB,SAAA10E,GAAK,OAAIi0E,GAC3B,KAAIj0E,EAAO,kDAAmD,IAC9D,KAAIA,EAAO,4CAA6C,IACxD,aACD,EACD20E,sBAAuB,SAAA30E,GAAK,OAAIi0E,GAC9B,KAAIj0E,EAAO,qDAAsD,IACjE,KAAIA,EAAO,4CAA6C,IACxD,gBACD,EACD40E,mBAAoB,SAAA50E,GAAK,OAAI,KAAIA,EAAO,mEAAoE,GAAG,EAC/G60E,eAAgB,SAAA70E,GAAK,OAAI,KAAIA,EAAO,+CAAgD,GAAG,EACvF80E,gBAAiB,SAAA90E,GAAK,OAAI,KAAIA,EAAO,gDAAiD,GAAG,KACzF,IACF+0E,4BAA2B,WACzB,OAAOlxE,KAAKywE,oBAAoBp1E,QAC9B2E,KAAK0wE,gBAAgBr1E,QACrB2E,KAAK2wE,gBAAgBt1E,QACrB2E,KAAK4wE,oBAAoBv1E,QACzB2E,KAAK6wE,mBAAmBx1E,QACxB2E,KAAK8wE,sBAAsBz1E,MAC/B,EACA81E,mBAAkB,WAChB,OAAOnxE,KAAK+wE,mBAAmB11E,QAC7B2E,KAAKgxE,eAAe31E,QACpB2E,KAAKixE,gBAAgB51E,MACzB,KC7CJ,GAlBc,CACZwF,WAAY,CACV+pD,sBAAAA,GACAC,cAAAA,GACAumB,oBAAAA,GACAC,WAAAA,GACAC,sBCL6B,QAAgB,GAAQ,CAAC,CAAC,S,6BHLjD5wE,EAAAA,mBAAgB,YADxBJ,EAAAA,GAAAA,IA8NM,MA9NNC,GA8NM,EA1NJC,EAAAA,GAAAA,GAyNM,MAzNNyvC,GAyNM,EAxNJzvC,EAAAA,GAAAA,GAIM,MAJN0vC,GAIM,EAHJ1vC,EAAAA,GAAAA,GAEM,MAFN6vC,IAEM,SADD3vC,EAAAA,GAAG,yBAAD,MAGTF,EAAAA,GAAAA,GAkNM,MAlNN8vC,GAkNM,EAjNJ9vC,EAAAA,GAAAA,GAgNM,MAhNNixC,GAgNM,EA/MJjxC,EAAAA,GAAAA,GAA2C,oBAApCE,EAAAA,GAAG,2BAAD,IACTF,EAAAA,GAAAA,GAA8C,mBAAxCE,EAAAA,GAAG,gCAAD,IAERF,EAAAA,GAAAA,GAMK,2BALHF,EAAAA,GAAAA,IAIE8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IAHiB1vC,EAAAA,aAAW,SAArB6wE,G,mBADTjxE,EAAAA,GAAAA,IAIE,MAFC+G,IAAKkqE,E,aACNvM,EAAAA,GAAAA,IAAQuM,I,sBAIF7wE,EAAAA,8BAA2B,YAArCJ,EAAAA,GAAAA,IAEK,kBADAI,EAAAA,GAAG,qCAAD,qBAGIA,EAAAA,gBAAgBrF,SAAM,YAAjCiF,EAAAA,GAAAA,IAuBM,WAtBJE,EAAAA,GAAAA,GAA4C,oBAArCE,EAAAA,GAAG,4BAAD,IAETF,EAAAA,GAAAA,GAA+C,mBAAzCE,EAAAA,GAAG,iCAAD,IAERF,EAAAA,GAAAA,GAiBQ,eAhBNA,EAAAA,GAAAA,GAGK,YAFHA,EAAAA,GAAAA,GAA8C,oBAAvCE,EAAAA,GAAG,8BAAD,IACTF,EAAAA,GAAAA,GAA4C,oBAArCE,EAAAA,GAAG,4BAAD,qBAEXJ,EAAAA,GAAAA,IAWK8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IAVa1vC,EAAAA,iBAAe,SAAxBskB,G,mBADT1kB,EAAAA,GAAAA,IAWK,MATF+G,IAAK2d,EAAMjY,SAAW,W,EAEvBvM,EAAAA,GAAAA,GAA6B,oBAAtBwkB,EAAMjY,UAAQ,GACM,KAAjBiY,EAAM8iD,SAAM,YAAtBxnE,EAAAA,GAAAA,IAEK,kBADAI,EAAAA,GAAG,oCAAD,kBAEPJ,EAAAA,GAAAA,IAEK,kBADA0kB,EAAM8iD,QAAM,K,gCAMZpnE,EAAAA,gBAAgBrF,SAAM,YAAjCiF,EAAAA,GAAAA,IAuBM,WAtBJE,EAAAA,GAAAA,GAA4C,oBAArCE,EAAAA,GAAG,4BAAD,IAETF,EAAAA,GAAAA,GAA+C,mBAAzCE,EAAAA,GAAG,iCAAD,IAERF,EAAAA,GAAAA,GAiBQ,eAhBNA,EAAAA,GAAAA,GAGK,YAFHA,EAAAA,GAAAA,GAA8C,oBAAvCE,EAAAA,GAAG,8BAAD,IACTF,EAAAA,GAAAA,GAA4C,oBAArCE,EAAAA,GAAG,4BAAD,qBAEXJ,EAAAA,GAAAA,IAWK8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IAVa1vC,EAAAA,iBAAe,SAAxBskB,G,mBADT1kB,EAAAA,GAAAA,IAWK,MATF+G,IAAK2d,EAAMjY,SAAW,W,EAEvBvM,EAAAA,GAAAA,GAA6B,oBAAtBwkB,EAAMjY,UAAQ,GACM,KAAjBiY,EAAM8iD,SAAM,YAAtBxnE,EAAAA,GAAAA,IAEK,kBADAI,EAAAA,GAAG,oCAAD,kBAEPJ,EAAAA,GAAAA,IAEK,kBADA0kB,EAAM8iD,QAAM,K,gCAMZpnE,EAAAA,oBAAoBrF,SAAM,YAArCiF,EAAAA,GAAAA,IAuBM,WAtBJE,EAAAA,GAAAA,GAAgD,oBAAzCE,EAAAA,GAAG,gCAAD,IAETF,EAAAA,GAAAA,GAAmD,mBAA7CE,EAAAA,GAAG,qCAAD,IAERF,EAAAA,GAAAA,GAiBQ,eAhBNA,EAAAA,GAAAA,GAGK,YAFHA,EAAAA,GAAAA,GAA8C,oBAAvCE,EAAAA,GAAG,8BAAD,IACTF,EAAAA,GAAAA,GAA4C,oBAArCE,EAAAA,GAAG,4BAAD,qBAEXJ,EAAAA,GAAAA,IAWK8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IAVa1vC,EAAAA,qBAAmB,SAA5BskB,G,mBADT1kB,EAAAA,GAAAA,IAWK,MATF+G,IAAK2d,EAAMjY,SAAW,e,EAEvBvM,EAAAA,GAAAA,GAA6B,oBAAtBwkB,EAAMjY,UAAQ,GACM,KAAjBiY,EAAM8iD,SAAM,YAAtBxnE,EAAAA,GAAAA,IAEK,kBADAI,EAAAA,GAAG,oCAAD,kBAEPJ,EAAAA,GAAAA,IAEK,kBADA0kB,EAAM8iD,QAAM,K,gCAMZpnE,EAAAA,oBAAoBrF,SAAM,YAArCiF,EAAAA,GAAAA,IAuBM,WAtBJE,EAAAA,GAAAA,GAAiD,oBAA1CE,EAAAA,GAAG,iCAAD,IAETF,EAAAA,GAAAA,GAAoD,mBAA9CE,EAAAA,GAAG,sCAAD,IAERF,EAAAA,GAAAA,GAiBQ,eAhBNA,EAAAA,GAAAA,GAGK,YAFHA,EAAAA,GAAAA,GAA8C,oBAAvCE,EAAAA,GAAG,8BAAD,IACTF,EAAAA,GAAAA,GAA4C,oBAArCE,EAAAA,GAAG,4BAAD,qBAEXJ,EAAAA,GAAAA,IAWK8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IAVa1vC,EAAAA,qBAAmB,SAA5BskB,G,mBADT1kB,EAAAA,GAAAA,IAWK,MATF+G,IAAK2d,EAAMjY,SAAW,gB,EAEvBvM,EAAAA,GAAAA,GAA6B,oBAAtBwkB,EAAMjY,UAAQ,GACM,KAAjBiY,EAAM8iD,SAAM,YAAtBxnE,EAAAA,GAAAA,IAEK,kBADAI,EAAAA,GAAG,oCAAD,kBAEPJ,EAAAA,GAAAA,IAEK,kBADA0kB,EAAM8iD,QAAM,K,gCAMZpnE,EAAAA,mBAAmBrF,SAAM,YAApCiF,EAAAA,GAAAA,IAuBM,WAtBJE,EAAAA,GAAAA,GAAgD,oBAAzCE,EAAAA,GAAG,gCAAD,IAETF,EAAAA,GAAAA,GAAmD,mBAA7CE,EAAAA,GAAG,qCAAD,IAERF,EAAAA,GAAAA,GAiBQ,eAhBNA,EAAAA,GAAAA,GAGK,YAFHA,EAAAA,GAAAA,GAA8C,oBAAvCE,EAAAA,GAAG,8BAAD,IACTF,EAAAA,GAAAA,GAA4C,oBAArCE,EAAAA,GAAG,4BAAD,qBAEXJ,EAAAA,GAAAA,IAWK8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IAVa1vC,EAAAA,oBAAkB,SAA3BskB,G,mBADT1kB,EAAAA,GAAAA,IAWK,MATF+G,IAAK2d,EAAMjY,SAAW,e,EAEvBvM,EAAAA,GAAAA,GAA6B,oBAAtBwkB,EAAMjY,UAAQ,GACM,KAAjBiY,EAAM8iD,SAAM,YAAtBxnE,EAAAA,GAAAA,IAEK,kBADAI,EAAAA,GAAG,oCAAD,kBAEPJ,EAAAA,GAAAA,IAEK,kBADA0kB,EAAM8iD,QAAM,K,gCAMZpnE,EAAAA,sBAAsBrF,SAAM,YAAvCiF,EAAAA,GAAAA,IAuBM,WAtBJE,EAAAA,GAAAA,GAAmD,oBAA5CE,EAAAA,GAAG,mCAAD,IAETF,EAAAA,GAAAA,GAAsD,mBAAhDE,EAAAA,GAAG,wCAAD,IAERF,EAAAA,GAAAA,GAiBQ,eAhBNA,EAAAA,GAAAA,GAGK,YAFHA,EAAAA,GAAAA,GAA8C,oBAAvCE,EAAAA,GAAG,8BAAD,IACTF,EAAAA,GAAAA,GAA4C,oBAArCE,EAAAA,GAAG,4BAAD,qBAEXJ,EAAAA,GAAAA,IAWK8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IAVa1vC,EAAAA,uBAAqB,SAA9BskB,G,mBADT1kB,EAAAA,GAAAA,IAWK,MATF+G,IAAK2d,EAAMjY,SAAW,kB,EAEvBvM,EAAAA,GAAAA,GAA6B,oBAAtBwkB,EAAMjY,UAAQ,GACM,KAAjBiY,EAAM8iD,SAAM,YAAtBxnE,EAAAA,GAAAA,IAEK,kBADAI,EAAAA,GAAG,oCAAD,kBAEPJ,EAAAA,GAAAA,IAEK,kBADA0kB,EAAM8iD,QAAM,K,gCAMbpnE,EAAAA,qBAAkB,YAA5BJ,EAAAA,GAAAA,IAEK,kBADAI,EAAAA,GAAG,uCAAD,qBAGIA,EAAAA,mBAAmBrF,SAAM,YAApCiF,EAAAA,GAAAA,IAUM,WATJE,EAAAA,GAAAA,GAAkD,oBAA3CE,EAAAA,GAAG,kCAAD,IAETF,EAAAA,GAAAA,GAMK,2BALHF,EAAAA,GAAAA,IAIE8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IAHkB1vC,EAAAA,oBAAkB,SAA7B8wE,G,mBADTlxE,EAAAA,GAAAA,IAIE,MAFC+G,IAAKmqE,E,aACNxM,EAAAA,GAAAA,IAAQwM,I,0CAKH9wE,EAAAA,eAAerF,SAAM,YAAhCiF,EAAAA,GAAAA,IAUM,WATJE,EAAAA,GAAAA,GAA6C,oBAAtCE,EAAAA,GAAG,6BAAD,IAETF,EAAAA,GAAAA,GAMK,2BALHF,EAAAA,GAAAA,IAIE8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IAHkB1vC,EAAAA,gBAAc,SAAzB8wE,G,mBADTlxE,EAAAA,GAAAA,IAIE,MAFC+G,IAAKmqE,E,aACNxM,EAAAA,GAAAA,IAAQwM,I,0CAKH9wE,EAAAA,gBAAgBrF,SAAM,YAAjCiF,EAAAA,GAAAA,IAaM,WAZJE,EAAAA,GAAAA,GAA8C,oBAAvCE,EAAAA,GAAG,8BAAD,IAETF,EAAAA,GAAAA,GASK,2BARHF,EAAAA,GAAAA,IAOK8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IANe1vC,EAAAA,iBAAe,SAA1B8wE,G,mBADTlxE,EAAAA,GAAAA,IAOK,MALF+G,IAAKmqE,IAAO,SAEVA,EAAQC,SAAU,KACrB,SAAG/wE,EAAAA,GAAG,qCAAsC,KAC5C,SAAG8wE,EAAQ/zE,aAAW,E,+DE1MpCyJ,SAAU,CACR2K,kBAAiB,WAAM,OAAO7R,KAAKyvC,OAAOtzC,MAAM4Q,SAAS8E,iBAAkB,EAC3EC,0BAAyB,WACvB,OAAO9R,KAAKyvC,OAAOtzC,MAAM4Q,SAAS+E,4BAC/B9R,KAAKyvC,OAAOj7B,QAAQ/G,aAAa++C,SAClCxsD,KAAKyvC,OAAOtzC,MAAM4Q,SAAS2G,4BAC/B,IEbJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,uNXJzDpT,EAAAA,GAAAA,IAMM,MANNC,GAMM,CAL2BG,EAAAA,4BAAyB,YAAxDuwC,EAAAA,GAAAA,IAA4Dqc,EAAAA,CAAAjmD,IAAAA,MAAA,iBAC5DupC,EAAAA,GAAAA,IAAe8gC,IACf9gC,EAAAA,GAAAA,IAA0B+gC,IAC1B/gC,EAAAA,GAAAA,IAAwBghC,GACFlxE,EAAAA,oBAAiB,YAAvCuwC,EAAAA,GAAAA,IAA2Csc,EAAAA,CAAAlmD,IAAAA,MAAA,iB,aYLxC/H,MAAM,uB,IACJA,MAAM,iB,IAGNA,MAAM,c,WCyBf,SA9B2B,CACzBrF,KAAM,iBAAO,CACXsR,OAAO,EACR,EACDutC,QAAO,WACL94C,KAAK6xE,UACP,EACA/xE,QAAS,CACP+xE,SAAQ,WAAI,WACJt5B,EAAOv4C,KAAK6jD,OAAO/uB,OAAOpK,SAAW,IAAM1qB,KAAK6jD,OAAO/uB,OAAOvf,SACpEvV,KAAKyvC,OAAOtzC,MAAMimB,IAAIC,kBAAkB4N,UAAU,CAAEt2B,GAAI4+C,IACrDj/C,MAAK,SAACk/C,GACL,GAAIA,EAAajtC,MACf,EAAKA,OAAQ,MACR,CACL,EAAKkkC,OAAOziC,OAAO,cAAe,CAACwrC,IACnC,IAAM7+C,EAAK6+C,EAAa7+C,GACxB,EAAKwG,QAAQlC,QAAQ,CACnBvC,KAAM,wBACNo5B,OAAQ,CAAEn7B,GAAAA,IAEd,CACF,IAAE,OACK,WACL,EAAK4R,OAAQ,CACf,GACJ,ICnBJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,yCFJzDjL,EAAAA,GAAAA,IAYM,MAZNC,GAYM,EAXJC,EAAAA,GAAAA,GAEM,MAFNyvC,IAEM,SADDvvC,EAAAA,GAAG,8CAAD,IAEPF,EAAAA,GAAAA,GAOM,MAPN0vC,GAOM,EANJ1vC,EAAAA,GAAAA,GAEI,mBADCE,EAAAA,GAAG,uCAAwC,MAAE,SAAGA,EAAAA,OAAOo0B,OAAOpK,UAAW,KAAC,SAAGhqB,EAAAA,OAAOo0B,OAAOvf,UAAQ,GAE/F7U,EAAAA,QAAK,YAAdJ,EAAAA,GAAAA,IAEI,iBADCI,EAAAA,GAAG,+BAAD,wB,aGTNpB,MAAM,6B,IACJA,MAAM,iB,IACJA,MAAM,S,IAURA,MAAM,c,ICZRA,MAAM,aCIbq6B,GAAAA,GAAAA,IACE4lC,GAAAA,KASF,SANkB,CAChBhgE,MAAO,CACL,SCeJ,GAxBc,CACZtF,KAAI,WACF,MAAO,CACLukE,OAAO,EAEX,EACA39D,WAAY,CACVixE,WCF6B,QAAgB,GAAQ,CAAC,CAAC,S,8FHNzDxxE,EAAAA,GAAAA,IAgBM,MAhBNC,GAgBM,EAfJqwC,EAAAA,GAAAA,IAKcC,EAAAA,CAJXvT,GAAE,CAAA5hC,KAAAA,iBAAAo5B,OAAAA,CAAAn7B,GAA0C+G,EAAAA,KAAK/G,KAClD2F,MAAM,a,oBAEN,iBAAgB,qBAAboB,EAAAA,KAAKoM,OAAK,G,oBAEf8jC,EAAAA,GAAAA,IAQcC,EAAAA,CAPXvT,GAAE,CAAA5hC,KAAAA,aAAAo5B,OAAAA,CAAAn7B,GAAsC+G,EAAAA,KAAK/G,KAC9C2F,MAAM,oB,oBAEN,iBAGE,EAHFsxC,EAAAA,GAAAA,IAGEQ,EAAAA,CAFA9xC,MAAM,8BACNqJ,KAAK,e,0BEHXzB,SAAU,CACRqe,MAAK,WACH,OAAOvlB,KAAKyvC,OAAOtzC,MAAMopB,MAAMZ,QACjC,GAEF7kB,QAAS,CACPiyE,cAAa,WACX/xE,KAAKw+D,OAAQ,CACf,EACAwT,QAAO,WACLhyE,KAAKw+D,OAAQ,CACf,IEfE,IAA2B,QAAgB,GAAQ,CAAC,CAAC,S,iGLNzDl+D,EAAAA,GAAAA,IAoBM,MApBNC,GAoBM,EAnBJC,EAAAA,GAAAA,GAUM,MAVNyvC,GAUM,EATJzvC,EAAAA,GAAAA,GAEM,MAFN0vC,IAEM,SADDxvC,EAAAA,GAAG,gBAAD,IAEPkwC,EAAAA,GAAAA,IAKcC,EAAAA,CAJXvT,GAAI,CAAA5hC,KAAAA,aACL4D,MAAM,sC,oBAEN,iBAAqB,qBAAlBoB,EAAAA,GAAG,cAAD,G,aAGTF,EAAAA,GAAAA,GAOM,MAPN6vC,GAOM,iBANJ/vC,EAAAA,GAAAA,IAKE8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IAJe1vC,EAAAA,MAAMvD,QAAQsH,WAAO,SAA7B9L,G,mBADTs4C,EAAAA,GAAAA,IAKEghC,EAAAA,CAHC5qE,IAAK1O,EACLA,KAAMA,EACP2G,MAAM,a,kCKTd,MC0BA,GAlCsB,CACpBrF,KAAI,WACF,MAAO,CACL4qB,OAAQ,KAEZ,EACAhkB,WAAY,CACVu3D,SAAAA,IAEFlxD,SAAU,CACRoU,SAAQ,WAAM,OAAOtb,KAAKyvC,OAAOtzC,MAAMmc,SAASwB,UAAUnhB,IAAK,GAEjEigD,MAAO,CACLiL,OAAQ,SAAUhR,GACG,mBAAfA,EAAMn3C,MAA6Bm3C,EAAM/d,OAAOn7B,KAAOqG,KAAK6kB,SAC9D7kB,KAAK6kB,OAASguB,EAAM/d,OAAOn7B,GAC3BqG,KAAKyvC,OAAOvzC,SAAS,uBAAwB,QAC7C8D,KAAKyvC,OAAOziC,OAAO,gBAAiB,CAAEsO,SAAU,SAChDtb,KAAKyvC,OAAOvzC,SAAS,YAAa,CAAE2oB,OAAQ7kB,KAAK6kB,SACjD7kB,KAAKyvC,OAAOvzC,SAAS,wBAAyB,CAAEof,SAAU,OAAQuJ,OAAQ7kB,KAAK6kB,SAEnF,GAEFwxB,QAAO,WACLr2C,KAAK6kB,OAAS7kB,KAAK6jD,OAAO/uB,OAAOn7B,GACjCqG,KAAKyvC,OAAOvzC,SAAS,YAAa,CAAE2oB,OAAQ7kB,KAAK6kB,SACjD7kB,KAAKyvC,OAAOvzC,SAAS,wBAAyB,CAAEof,SAAU,OAAQuJ,OAAQ7kB,KAAK6kB,QACjF,EACA47B,UAAS,WACPzgD,KAAKyvC,OAAOvzC,SAAS,uBAAwB,QAC7C8D,KAAKyvC,OAAOziC,OAAO,gBAAiB,CAAEsO,SAAU,QAClD,GCzBF,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,qECJzD21B,EAAAA,GAAAA,IAKEoqB,EAAAA,CAJAvuD,MAAM,YACLwO,SAAU5a,EAAAA,SACV,UAASA,EAAAA,OACV,gBAAc,Q,2CCJXpB,MAAM,gC,IAEPoxC,IAAI,SACJpxC,MAAM,mC,IAWDA,MAAM,S,IAeRA,MAAM,c,IACJA,MAAM,c,IACF0vC,IAAI,mB,iBAwBJ1vC,MAAM,c,sCA+BTA,MAAM,W,UAMNA,MAAM,c,6CAmCTA,MAAM,gB,IACTkB,EAAAA,GAAAA,GAAuB,QAAjBlB,MAAM,UAAQ,S,IChInBA,MAAM,mB,IACJA,MAAM,c,IACJA,MAAM,gB,uBAaRA,MAAM,cCRfq6B,GAAAA,GAAAA,IACEmoB,GAAAA,IACAtD,GAAAA,KAwCF,SArCwB,CACtB39C,WAAY,CACV01C,SAAAA,GAAAA,GAEFipB,MAAO,CAAC,UAAW,cAAe,WAClCvlE,KAAI,WACF,MAAO,CACL8e,SAAS,EACTtc,MAAO,GACPy1E,eAAe,EAEnB,EACApyE,QAAS,CACP+oD,QAAS,MAAS,WAChB7oD,KAAKmkB,OAAOnkB,KAAKvD,MACnB,GAAG,KACH0nB,OAAM,SAAE1nB,GAAO,WACRA,GAKLuD,KAAK+Y,SAAU,EACf/Y,KAAK+E,MAAM,WACX/E,KAAK89D,QAAU,GACf99D,KAAKyvC,OAAOvzC,SAAS,SAAU,CAAEkoB,EAAG3nB,EAAOpD,SAAS,EAAMqG,KAAM,WAAY6kB,UAAWvkB,KAAKkyE,gBACzF54E,MAAK,SAAAW,GACJ,EAAK8K,MAAM,UAAW9K,EAAKunB,SAASzoB,KAAI,SAAAgD,GAAC,OAAIA,EAAEpC,EAAE,IACnD,IAAE,SACO,WACP,EAAKof,SAAU,EACf,EAAKhU,MAAM,cACb,KAdA/E,KAAK+Y,SAAU,CAenB,ICrCJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,2FFNzDzY,EAAAA,GAAAA,IAuBM,MAvBNC,GAuBM,EAtBJC,EAAAA,GAAAA,GAaM,MAbNyvC,GAaM,EAZJzvC,EAAAA,GAAAA,GAKM,MALN0vC,GAKM,EAJJU,EAAAA,GAAAA,IAGEQ,EAAAA,CAFA9xC,MAAM,0CACNqJ,KAAK,c,UAGTnI,EAAAA,GAAAA,GAKC,SAJCkwC,IAAI,S,qDACKhwC,EAAAA,MAAK,IACb6vC,YAAa7vC,EAAAA,GAAG,gBAChBmoD,QAAK,8BAAEnoD,EAAAA,SAAAA,EAAAA,QAAAA,MAAAA,EAAAA,UAAO,I,oBAFNA,EAAAA,YAKbF,EAAAA,GAAAA,GAOM,MAPN8vC,GAOM,EANJM,EAAAA,GAAAA,IAKWkY,EAAAA,C,WAJApoD,EAAAA,c,qDAAAA,EAAAA,cAAa,IACrByxE,SAAQzxE,EAAAA,S,oBAET,iBAAgC,qBAA7BA,EAAAA,GAAG,yBAAD,G,uoBGTbi5B,GAAAA,GAAAA,IACEmoB,GAAAA,IACAtD,GAAAA,KAGF,IAAM4zB,GAAW,CACfvxE,WAAY,CACVg9D,cAAAA,GAAAA,EACA9B,WAAAA,GAAAA,QACAsW,gBAAAA,GACAxW,YAAAA,GAAAA,EACAyW,aAAAA,GAAAA,GAEFr4E,KAAI,WACF,MAAO,CACL6S,MAAO,GACPylE,WAAY,GACZC,eAAgB,GAChBC,eAAgB,IAAItwE,IAAI,IACxBuwE,cAAe,GACfC,aAAc,IAAIxwE,IAAI,IACtBywE,eAAe,EACfC,cAAc,EAElB,EACAx8B,QAAO,WAAI,WACJr2C,KAAKrG,KACVqG,KAAKyvC,OAAOvzC,SAAS,YAAa,CAAE2oB,OAAQ7kB,KAAKrG,KAC9CL,MAAK,WACJ,EAAKwT,MAAQ,EAAKqZ,cAAc,EAAKxsB,IACrC,EAAK44E,WAAa,EAAKzlE,KACzB,IACF9M,KAAKyvC,OAAOvzC,SAAS,oBAAqB,CAAE2oB,OAAQ7kB,KAAKrG,KACtDL,MAAK,WACJ,EAAKk5E,eAAiB,EAAKpsD,iBAAiB,EAAKzsB,IACjD,EAAK64E,eAAex9D,SAAQ,SAAAqD,GAC1B,EAAKo3B,OAAOvzC,SAAS,qBAAsBmc,EAC7C,GACF,IACJ,EACAnR,SAAU,OACRvN,GAAE,WACA,OAAOqG,KAAK6jD,OAAO/uB,OAAOn7B,EAC5B,EACAm5E,aAAY,WAAI,WACd,MAAO,kBAAI9yE,KAAKwyE,iBAAc,OAAKxyE,KAAK2yE,eACrC55E,KAAI,SAAAsf,GAAM,OAAI,EAAKwX,SAASxX,EAAO,IAAEtd,QAAO,SAAAkC,GAAI,OAAIA,CAAI,GAC7D,EACAy3B,YAAW,WAAI,WACb,OAAO10B,KAAK0yE,cAAc35E,KAAI,SAAAsf,GAAM,OAAI,EAAKwX,SAASxX,EAAO,IAAEtd,QAAO,SAAAkC,GAAI,OAAIA,CAAI,GACpF,IACG0K,EAAAA,EAAAA,IAAS,CACVgG,YAAa,SAAAxR,GAAK,OAAIA,EAAMa,MAAM2Q,WAAW,MAE5CwhC,EAAAA,EAAAA,IAAW,CAAC,WAAY,gBAAiB,sBAE9CrvC,QAAS,CACP+oD,QAAO,WACL7oD,KAAKmkB,OAAOnkB,KAAKvD,MACnB,EACAs2E,mBAAkB,SAAE91E,GACd+C,KAAKyyE,eAAexvE,IAAIhG,EAAKtD,KAC/BqG,KAAKrG,IAAMqG,KAAKk+D,QAAQjhE,GACxB+C,KAAKyyE,eAAc,OAAQx1E,EAAKtD,MAEhCqG,KAAKrG,IAAMqG,KAAKo+D,WAAWnhE,EAAKtD,IAChCqG,KAAKyyE,eAAez1D,IAAI/f,EAAKtD,IAEjC,EACAq5E,oBAAmB,SAAE/1E,GACf+C,KAAK2yE,aAAa1vE,IAAIhG,EAAKtD,KAC7BqG,KAAKrG,IAAMqG,KAAKo+D,WAAWnhE,EAAKtD,IAChCqG,KAAK2yE,aAAY,OAAQ11E,EAAKtD,MAE9BqG,KAAKrG,IAAMqG,KAAKk+D,QAAQjhE,GACxB+C,KAAK2yE,aAAa31D,IAAI/f,EAAKtD,IAE/B,EACAs5E,UAAS,SAAEh2E,GACT,OAAO+C,KAAKyyE,eAAexvE,IAAIhG,EAAKtD,GACtC,EACAu5E,QAAO,SAAEj2E,GACP,OAAO+C,KAAK2yE,aAAa1vE,IAAIhG,EAAKtD,GACpC,EACAukE,QAAO,SAAEjhE,GACP+C,KAAKyvC,OAAOvzC,SAAS,iBAAkB,CAAEipB,UAAWloB,EAAKtD,GAAIkrB,OAAQ7kB,KAAKrG,IAC5E,EACAykE,WAAU,SAAE/lD,GACVrY,KAAKyvC,OAAOvzC,SAAS,oBAAqB,CAAEipB,UAAW9M,EAAQwM,OAAQ7kB,KAAKrG,IAC9E,EACAw5E,gBAAe,SAAEC,GACfpzE,KAAK4yE,eAAgB,CACvB,EACAS,oBAAmB,SAAED,GACnBpzE,KAAK4yE,eAAgB,CACvB,EACAU,gBAAe,SAAEF,GACfpzE,KAAK4yE,eAAgB,EACrB5yE,KAAK0yE,cAAgBU,CACvB,EACAG,gBAAe,WAAI,WACjBvzE,KAAKyvC,OAAOvzC,SAAS,UAAW,CAAE2oB,OAAQ7kB,KAAKrG,GAAImT,MAAO9M,KAAKuyE,aAC5Dj5E,MAAK,WACJ,EAAKwT,MAAQ,EAAKqZ,cAAc,EAAKxsB,GACvC,GACJ,EACA6rB,WAAU,WAAI,WACZxlB,KAAKyvC,OAAOvzC,SAAS,aAAc,CAAE4Q,MAAO9M,KAAKuyE,aAC9Cj5E,MAAK,SAACX,GACL,OAAO,EACJ82C,OACAvzC,SAAS,kBAAmB,CAAE2oB,OAAQlsB,EAAKgB,GAAIorB,YAAY,OAAI,EAAK4tD,gBACpEr5E,MAAK,kBAAMX,EAAKgB,EAAE,GACvB,IACCL,MAAK,SAACurB,GACL,EAAK1kB,QAAQd,KAAK,CAAE3D,KAAM,iBAAkBo5B,OAAQ,CAAEn7B,GAAIkrB,IAC5D,IAAE,OACK,SAACtrB,GACN,EAAKk2C,OAAOvzC,SAAS,mBAAoB,CACvCiR,WAAY,cACZC,YAAa,CAAC7T,EAAE2tB,SAChBthB,MAAO,SAEX,GACJ,EACA0f,WAAU,WACRtlB,KAAKyvC,OAAOvzC,SAAS,aAAc,CAAE2oB,OAAQ7kB,KAAKrG,KAClDqG,KAAKG,QAAQd,KAAK,CAAE3D,KAAM,SAC5B,IAIJ,YCvIA,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,6MLNzD4E,EAAAA,GAAAA,IA+JM,MA/JNC,GA+JM,EA9JJC,EAAAA,GAAAA,GA2BM,MA3BNyvC,GA2BM,EAvBJzvC,EAAAA,GAAAA,GAQS,UAPPlB,MAAM,iCACLS,QAAK,oCAAEW,EAAAA,QAAQ8yE,OAAR,IAAArzE,SAAQqzE,KAAI,sB,EAEpB5iC,EAAAA,GAAAA,IAGEQ,EAAAA,CAFAO,KAAK,KACLhpC,KAAK,oBAGTnI,EAAAA,GAAAA,GAaM,MAbN0vC,GAaM,CAXIxvC,EAAAA,KAAE,YADVuwC,EAAAA,GAAAA,IAOSyX,EAAAA,C,MALPC,QAAQ,sB,CAEG8qB,WAAS,UAClB,iBAAW,qBAAR/yE,EAAAA,OAAK,G,yBAGZuwC,EAAAA,GAAAA,IAGEyX,EAAAA,C,MADAC,QAAQ,4B,MAIdnoD,EAAAA,GAAAA,GAiGM,MAjGN6vC,GAiGM,EAhGJ7vC,EAAAA,GAAAA,GAeM,MAfN8vC,GAeM,EAdJ9vC,EAAAA,GAAAA,GAA4D,QAA5DixC,IAA4D,SAA5B/wC,EAAAA,GAAG,gBAAD,aAA0B,KAC5D,SAAG,KAAM,MACT,kBAIC,SAHC/G,GAAG,kBACH+2C,IAAI,Q,qDACKhwC,EAAAA,WAAU,K,kBAAVA,EAAAA,cAGHA,EAAAA,KAAE,YADVJ,EAAAA,GAAAA,IAMS,U,MAJPhB,MAAM,mCACLS,QAAK,8BAAEW,EAAAA,iBAAAA,EAAAA,gBAAAA,MAAAA,EAAAA,UAAe,K,SAEpBA,EAAAA,GAAG,uBAAD,wBAGTkwC,EAAAA,GAAAA,IA+EekrB,EAAAA,CA9Ebx8D,MAAM,yBACL,mBAAiB,G,oBAElB,iBAuBM,CAtBEoB,EAAAA,IAAMA,EAAAA,aAAaixC,KAAO,IAAH,YAD/BrxC,EAAAA,GAAAA,IAuBM,O,MArBHoI,MAAOhI,EAAAA,GAAG,wBACXpB,MAAM,gB,EAENkB,EAAAA,GAAAA,GAiBM,MAjBNiwC,GAiBM,iBAhBJnwC,EAAAA,GAAAA,IAeM8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IAdW1vC,EAAAA,cAAY,SAApBzD,G,mBADTqD,EAAAA,GAAAA,IAeM,OAbH+G,IAAKpK,EAAKtD,GACX2F,MAAM,U,EAENsxC,EAAAA,GAAAA,IASgBytB,EAAAA,CARbphE,KAAMA,GAAI,C,mBAEX,iBAKS,EALTuD,EAAAA,GAAAA,GAKS,UAJPlB,MAAM,mCACLS,QAAK,mBAAEW,EAAAA,mBAAmBzD,EAAI,I,SAE5ByD,EAAAA,UAAUzD,GAAQyD,EAAAA,GAAG,gBAAkBA,EAAAA,GAAG,2BAAD,M,+DAOtDF,EAAAA,GAAAA,GAiDM,OAhDJlB,MAAM,cACLoJ,MAAOhI,EAAAA,GAAG,sB,EAEXkwC,EAAAA,GAAAA,IAIE8iC,EAAAA,CAHCC,UAASjzE,EAAAA,gBACTkzE,UAASlzE,EAAAA,gBACTmzE,cAAanzE,EAAAA,qB,kDAGRA,EAAAA,gBAAa,YADrBJ,EAAAA,GAAAA,IAKM,MALNwwC,GAKM,EADJF,EAAAA,GAAAA,IAAgBkjC,QAAAA,EAAAA,GAAAA,OAElBxzE,EAAAA,GAAAA,IAiCM,MAjCNywC,GAiCM,iBA7BJzwC,EAAAA,GAAAA,IA4BM8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IA3BW1vC,EAAAA,aAAW,SAAnBzD,G,mBADTqD,EAAAA,GAAAA,IA4BM,OA1BH+G,IAAKpK,EAAKtD,GACX2F,MAAM,U,EAENsxC,EAAAA,GAAAA,IAsBgBytB,EAAAA,CArBbphE,KAAMA,GAAI,C,mBAEX,iBAIO,CAHCyD,EAAAA,eAAe5D,SAASG,EAAKtD,MAAE,YADvC2G,EAAAA,GAAAA,IAIO,oBADFI,EAAAA,GAAG,qBAAD,qBAGEA,EAAAA,eAAe5D,SAASG,EAAKtD,MAIM,YAE5C2G,EAAAA,GAAAA,IAMS,U,MAJPhB,MAAM,mCACLS,QAAK,mBAAEW,EAAAA,mBAAmBzD,EAAI,I,SAE5ByD,EAAAA,UAAUzD,GAAQyD,EAAAA,GAAG,gBAAkBA,EAAAA,GAAG,2BAAD,SAXN,YADxCJ,EAAAA,GAAAA,IAMS,U,MAJPhB,MAAM,mCACLS,QAAK,mBAAEW,EAAAA,oBAAoBzD,EAAI,I,SAE7ByD,EAAAA,QAAQzD,GAAQyD,EAAAA,GAAG,gBAAkBA,EAAAA,GAAG,sBAAD,O,0DAexDF,EAAAA,GAAAA,GA+BM,MA/BN2wC,GA+BM,CA9BJw9B,GAESjuE,EAAAA,GAOKA,EAAAA,eAIP,YAEPJ,EAAAA,GAAAA,IAcW8vC,GAAAA,GAAAA,CAAA/oC,IAAAA,GAAA,qBAbN3G,EAAAA,GAAG,wBAAyB,IAC/B,YAKS,UAJPpB,MAAM,mCACLS,QAAK,8BAAEW,EAAAA,YAAAA,EAAAA,WAAAA,MAAAA,EAAAA,UAAU,K,SAEfA,EAAAA,GAAG,gBAAD,IAEPF,EAAAA,GAAAA,GAKS,UAJPlB,MAAM,mCACLS,QAAK,+BAAEW,EAAAA,cAAe,CAAH,K,SAEjBA,EAAAA,GAAG,eAAD,WAlBiB,YAD1BJ,EAAAA,GAAAA,IAMS,U,MAJPhB,MAAM,mCACLS,QAAK,+BAAEW,EAAAA,cAAe,CAAH,K,SAEjBA,EAAAA,GAAG,iBAAD,MAXI,YADXJ,EAAAA,GAAAA,IAMS,U,MAJPhB,MAAM,mCACLS,QAAK,8BAAEW,EAAAA,YAAAA,EAAAA,WAAAA,MAAAA,EAAAA,UAAU,K,SAEfA,EAAAA,GAAG,iBAAD,O,aMtINpB,MAAM,0C,IACJA,MAAM,iB,IAKNA,MAAM,c,eAIFA,MAAM,a,IACJA,MAAM,W,IAGNA,MAAM,Q,IAMNA,MAAM,U,0BAUPA,MAAM,e,IC9BbA,MAAM,gB,IACJA,MAAM,W,IAGNA,MAAM,Q,IAYNA,MAAM,U,UAGPA,MAAM,S,2CAcNA,MAAM,W,kCA6BNA,MAAM,W,UAgBJA,MAAM,e,IC9ETA,MAAM,uB,kCAUHA,MAAM,yB,IACH0vC,IAAI,2B,2BAQP1vC,MAAM,yB,IACH0vC,IAAI,yB,2BAQP1vC,MAAM,yB,IAMH0vC,IAAI,wBCvBjB,SAV2B,CACzBnuC,WAAY,CACV01C,SAAAA,GAAAA,GAEFh3C,MAAO,CACLssC,aAAc/xC,OACd2O,SAAUtH,UCCd,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,qEFNzDb,EAAAA,GAAAA,IAoCM,MApCNC,GAoCM,YAnCJC,EAAAA,GAAAA,GAQE,YAPAkwC,IAAI,W,qDACKhwC,EAAAA,aAAad,QAAO,IAC7BN,MAAM,gBACNs6C,KAAK,IACLm6B,KAAK,IACJxjC,YAAa7vC,EAAAA,GAAG,kCAChB+H,SAAU/H,EAAAA,U,mBALFA,EAAAA,aAAad,YAOxBY,EAAAA,GAAAA,GAQO,OARP0vC,GAQO,EAPL1vC,EAAAA,GAAAA,GAAwF,QAAxF6vC,IAAwF,SAAhD3vC,EAAAA,GAAG,oCAAD,cAC1CF,EAAAA,GAAAA,GAKC,SAJC7G,GAAG,0B,qDACM+G,EAAAA,aAAausC,SAAQ,IAC7BvtC,KAAMgB,EAAAA,aAAaysC,OAAS,OAAS,iBACrC1kC,SAAU/H,EAAAA,U,mBAFFA,EAAAA,aAAausC,eAK1BzsC,EAAAA,GAAAA,GAQO,OARPixC,GAQO,EAPLjxC,EAAAA,GAAAA,GAAoF,QAApFgwC,IAAoF,SAA9C9vC,EAAAA,GAAG,kCAAD,cACxCF,EAAAA,GAAAA,GAKC,SAJC7G,GAAG,wB,qDACM+G,EAAAA,aAAawsC,OAAM,IAC3BxtC,KAAMgB,EAAAA,aAAaysC,OAAS,OAAS,iBACrC1kC,SAAU/H,EAAAA,U,mBAFFA,EAAAA,aAAawsC,aAK1B1sC,EAAAA,GAAAA,GAOO,OAPPkxC,GAOO,EANLd,EAAAA,GAAAA,IAIEkY,EAAAA,CAHAnvD,GAAG,uB,WACM+G,EAAAA,aAAaysC,O,qDAAbzsC,EAAAA,aAAaysC,OAAM,IAC3B1kC,SAAU/H,EAAAA,U,mCAEbF,EAAAA,GAAAA,GAAkF,QAAlFmwC,IAAkF,SAA7CjwC,EAAAA,GAAG,iCAAD,M,8kBGwE7C,SAtGqB,CACnBG,WAAY,CACVmzE,mBAAAA,GACAhY,YAAAA,GAAAA,GAEF/hE,KAAI,WACF,MAAO,CACLg6E,SAAS,EACTC,mBAAoB,CAClBt0E,QAAS,GACTqtC,cAAU1oC,EACV2oC,YAAQ3oC,EACR4oC,YAAQ5oC,GAEV4vE,UAAW,GAEf,EACA50E,MAAO,CACLssC,aAAc/xC,QAEhBoN,SAAU,UACLS,EAAAA,EAAAA,IAAS,CACVgG,YAAa,SAAAxR,GAAK,OAAIA,EAAMa,MAAM2Q,WAAW,KAC7C,IACFymE,oBAAmB,WACjB,OAAOp0E,KAAK2N,aAAe3N,KAAK2N,YAAYs+B,WAAWnvC,SAAS,qCAClE,EACA8C,QAAO,WACL,OAAOI,KAAK6rC,aAAajsC,OAC3B,EACAy0E,OAAM,WACJ,OAAOr0E,KAAK6rC,aAAaN,IAC3B,EACA+oC,YAAW,WACT,IAAM5W,EAAO19D,KAAK6rC,aAAa0oC,aAC/B,GAAK7W,EAIL,OAAO19D,KAAKw0E,iBAAiB9W,EAAMwB,GAAAA,EAAAA,wBAAsCl/D,KAAKm/D,MAAMp1D,QACtF,EACAkjC,SAAQ,WACN,IAAMywB,EAAO19D,KAAK6rC,aAAa4oC,UAC/B,GAAK/W,EAIL,OAAO19D,KAAKw0E,iBAAiB9W,EAAMwB,GAAAA,EAAAA,wBAAsCl/D,KAAKm/D,MAAMp1D,QACtF,EACAmjC,OAAM,WACJ,IAAMwwB,EAAO19D,KAAK6rC,aAAa6oC,QAC/B,GAAKhX,EAIL,OAAO19D,KAAKw0E,iBAAiB9W,EAAMwB,GAAAA,EAAAA,wBAAsCl/D,KAAKm/D,MAAMp1D,QACtF,EACA+hC,SAAQ,WACN,OAAO9rC,KAAK6rC,aAAaC,QAC3B,IAEFhsC,QAAS,CACP60E,WAAU,WACR,IAAK30E,KAAKq0E,OACR,OAAOr0E,KAAKyvC,OAAOvzC,SAAS,yBAA0B8D,KAAK6rC,aAAalyC,GAE5E,EACA0zC,mBAAkB,WAChB,OAAOrtC,KAAKyvC,OAAOvzC,SAAS,qBAAsB8D,KAAK6rC,aAAalyC,GACtE,EACA66E,iBAAgB,SAAE9W,EAAM3zD,GACtB,IAAM6qE,EAAI,IAAInrD,KAAKi0C,GACnB,OAAO19D,KAAK6rC,aAAagpC,QAAUD,EAAE3V,mBAAmBl1D,GAAU6qE,EAAEE,eAAe/qE,EACrF,EACAgrE,cAAa,WACX/0E,KAAKk0E,mBAAmBt0E,QAAUI,KAAK6rC,aAAampC,QAAQC,YAC5Dj1E,KAAKk0E,mBAAmBjnC,SAAWjtC,KAAK6rC,aAAa4oC,UACrDz0E,KAAKk0E,mBAAmBhnC,OAASltC,KAAK6rC,aAAa6oC,QACnD10E,KAAKk0E,mBAAmB/mC,OAASntC,KAAK6rC,aAAagpC,QACnD70E,KAAKi0E,SAAU,CACjB,EACAiB,WAAU,WAAI,WACZl1E,KAAKyvC,OAAOvzC,SAAS,mBAAoB,IACvCvC,GAAIqG,KAAK6rC,aAAalyC,IACnBqG,KAAKk0E,qBAEP56E,MAAK,WACJ,EAAK26E,SAAU,CACjB,IAAE,OACK,SAAA1oE,GACL,EAAK4oE,UAAY5oE,EAAMA,KACzB,GACJ,EACA4pE,WAAU,WACRn1E,KAAKi0E,SAAU,CACjB,EACApkC,WAAU,WACR7vC,KAAKm0E,eAAY5vE,CACnB,I,ykBC9CJ,SArD0B,CACxB1D,WAAY,CACVu0E,cCC6B,QAAgB,GAAQ,CAAC,CAAC,S,kINNzD90E,EAAAA,GAAAA,IA8FM,MA9FNC,GA8FM,EA7FJC,EAAAA,GAAAA,GAEM,MAFNyvC,GAEM,EADJzvC,EAAAA,GAAAA,GAAwC,oBAAjCE,EAAAA,GAAG,wBAAD,MAEXF,EAAAA,GAAAA,GAWM,MAXN0vC,GAWM,CATKxvC,EAAAA,U,YAKTuwC,EAAAA,GAAAA,IAGEokC,EAAAA,C,MADCxpC,aAAcnrC,EAAAA,oB,4BAPD,YADhBuwC,EAAAA,GAAAA,IAKEqkC,EAAAA,C,MAHCt0E,KAAMN,EAAAA,QACNtG,MAAOsG,EAAAA,aAAa/F,OACpB,gBAAc,G,6BAOnB6F,EAAAA,GAAAA,GA6EM,MA7EN6vC,GA6EM,CA3EK3vC,EAAAA,SAUiD,kBAV1C,YADhBJ,EAAAA,GAAAA,IAaM,MAbNgwC,GAaM,CATQ5vC,EAAAA,cAAW,YAAvBJ,EAAAA,GAAAA,IAEO,oBADFI,EAAAA,GAAG,uCAAwC,CAAzCg9D,KAAiDh9D,EAAAA,eAAW,qBAEvDA,EAAAA,WAAQ,YAApBJ,EAAAA,GAAAA,IAEO,oBADFI,EAAAA,GAAG,mCAAoC,CAArCg9D,KAA6Ch9D,EAAAA,YAAQ,qBAEhDA,EAAAA,SAAM,YAAlBJ,EAAAA,GAAAA,IAEO,oBADFI,EAAAA,GAAG,iCAAkC,CAAnCg9D,KAA2Ch9D,EAAAA,UAAM,wBAIjDA,EAAAA,UAyBA,YAGTJ,EAAAA,GAAAA,IAgCM,MAhCNwwC,GAgCM,EA5BJtwC,EAAAA,GAAAA,GAKS,UAJPlB,MAAM,qBACLS,QAAK,8BAAEW,EAAAA,YAAAA,EAAAA,WAAAA,MAAAA,EAAAA,UAAU,K,SAEfA,EAAAA,GAAG,qCAAD,IAEPF,EAAAA,GAAAA,GAKS,UAJPlB,MAAM,qBACLS,QAAK,8BAAEW,EAAAA,YAAAA,EAAAA,WAAAA,MAAAA,EAAAA,UAAU,K,SAEfA,EAAAA,GAAG,qCAAD,GAGCA,EAAAA,SAAWA,EAAAA,YAAS,YAD5BJ,EAAAA,GAAAA,IAeM,MAfNywC,GAeM,qBAXDrwC,EAAAA,GAAG,2BAA4B,CAA7B6K,MAA+B7K,EAAAA,SAAW,IAC/C,YASS,UARPpB,MAAM,kBACLS,QAAK,8BAAEW,EAAAA,YAAAA,EAAAA,WAAAA,MAAAA,EAAAA,UAAU,I,EAElBkwC,EAAAA,GAAAA,IAIEQ,EAAAA,CAHA9xC,MAAM,8BACNqJ,KAAK,QACJmE,MAAOpM,EAAAA,GAAG,8B,6CAxDH,YADhBJ,EAAAA,GAAAA,IA4BM,MA5BNoxC,GA4BM,CAvBIhxC,EAAAA,cAAW,YADnBJ,EAAAA,GAAAA,IASS,U,MAPPhB,OAAKo1C,EAAAA,GAAAA,IAAAA,CAAC,qBAAoB,CAAAqwB,QACPrkE,EAAAA,UAClB+H,SAAU/H,EAAAA,SACVoM,MAAOpM,EAAAA,SAAWA,EAAAA,GAAG,kCAAoC,GACzDX,QAAK,8BAAEW,EAAAA,YAAAA,EAAAA,WAAAA,MAAAA,EAAAA,UAAU,K,SAEfA,EAAAA,GAAG,sCAAD,yBAGCA,EAAAA,sBAAmB,YAD3BJ,EAAAA,GAAAA,IAMS,U,MAJPhB,MAAM,qBACLS,QAAK,8BAAEW,EAAAA,eAAAA,EAAAA,cAAAA,MAAAA,EAAAA,UAAa,K,SAElBA,EAAAA,GAAG,8BAAD,qBAGCA,EAAAA,sBAAmB,YAD3BJ,EAAAA,GAAAA,IAMS,U,MAJPhB,MAAM,qBACLS,QAAK,8BAAEW,EAAAA,oBAAAA,EAAAA,mBAAAA,MAAAA,EAAAA,UAAkB,K,SAEvBA,EAAAA,GAAG,gCAAD,2B,KKnDXszE,mBAAAA,IAEF/5E,KAAI,WACF,MAAO,CACLs7E,gBAAiB,CACf31E,QAAS,GACTqtC,cAAU1oC,EACV2oC,YAAQ3oC,EACR4oC,QAAQ,GAEVqoC,SAAS,EACTjqE,WAAOhH,EAEX,EACAu0C,QAAO,WACL94C,KAAKyvC,OAAOvzC,SAAS,qBACvB,EACAgL,SAAU,UACLS,EAAAA,EAAAA,IAAS,CACVgG,YAAa,SAAAxR,GAAK,OAAIA,EAAMa,MAAM2Q,WAAW,KAC7C,IACFu9B,cAAa,WACX,OAAOlrC,KAAKyvC,OAAOtzC,MAAM+uC,cAAcA,aACzC,EACAuqC,oBAAmB,WACjB,OAAOz1E,KAAK2N,aAAe3N,KAAK2N,YAAYs+B,WAAWnvC,SAAS,qCAClE,IAEFgD,QAAS,CACPktC,iBAAgB,WAAI,WAClBhtC,KAAKw1E,SAAU,EACfx1E,KAAKyvC,OAAOvzC,SAAS,mBAAoB8D,KAAKu1E,iBAC3Cj8E,MAAK,WACJ,EAAKi8E,gBAAgB31E,QAAU,GAC/B,EAAKqtC,cAAW1oC,EAChB,EAAK2oC,YAAS3oC,CAChB,IAAE,OACK,SAAAgH,GACL,EAAKA,MAAQA,EAAMA,KACrB,IAAE,SACO,WACP,EAAKiqE,SAAU,CACjB,GACJ,EACA3lC,WAAU,WACR7vC,KAAKuL,WAAQhH,CACf,IE5CJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,kIRNzDjE,EAAAA,GAAAA,IAwDM,MAxDNC,GAwDM,EAvDJC,EAAAA,GAAAA,GAIM,MAJNyvC,GAIM,EAHJzvC,EAAAA,GAAAA,GAEO,sBADFE,EAAAA,GAAG,8BAAD,MAGTF,EAAAA,GAAAA,GAiDM,MAjDN0vC,GAiDM,CA/CIxvC,EAAAA,sBAAmB,YAD3BJ,EAAAA,GAAAA,IAuCU,eApCRE,EAAAA,GAAAA,GAmCM,MAnCN8vC,GAmCM,EAlCJ9vC,EAAAA,GAAAA,GAEM,MAFNixC,GAEM,EADJjxC,EAAAA,GAAAA,GAAmD,oBAA5CE,EAAAA,GAAG,mCAAD,MAEXF,EAAAA,GAAAA,GAKM,MALNgwC,GAKM,EAJJI,EAAAA,GAAAA,IAGEykC,EAAAA,CAFCxpC,aAAcnrC,EAAAA,gBACd+H,SAAU/H,EAAAA,S,uCAGfF,EAAAA,GAAAA,GAwBM,MAxBNiwC,GAwBM,EAvBJjwC,EAAAA,GAAAA,GAMS,UALPlB,MAAM,iCACLmJ,SAAU/H,EAAAA,QACVX,QAAK,yCAAUW,EAAAA,kBAAAA,EAAAA,iBAAAA,MAAAA,EAAAA,UAAgB,mB,SAE7BA,EAAAA,GAAG,8BAAD,MAGCA,EAAAA,QAAK,YADbJ,EAAAA,GAAAA,IAeM,MAfNqwC,GAeM,qBAXDjwC,EAAAA,GAAG,2BAA4B,CAA7B6K,MAA+B7K,EAAAA,SAAW,IAC/C,YASS,UARPpB,MAAM,kBACLS,QAAK,8BAAEW,EAAAA,YAAAA,EAAAA,WAAAA,MAAAA,EAAAA,UAAU,I,EAElBkwC,EAAAA,GAAAA,IAIEQ,EAAAA,CAHA9xC,MAAM,8BACNqJ,KAAK,QACJmE,MAAOpM,EAAAA,GAAG,8B,gFAOvBJ,EAAAA,GAAAA,IAOU8vC,GAAAA,GAAAA,MAAAA,EAAAA,GAAAA,IANe1vC,EAAAA,eAAa,SAA7BmrC,G,mBADTvrC,EAAAA,GAAAA,IAOU,WALP+G,IAAKwkC,EAAalyC,I,EAEnBi3C,EAAAA,GAAAA,IAEE8kC,EAAAA,CADC7pC,aAAcA,GAAY,0B,kBSzBrC,YAAgBvxC,GACd,IAAMq7E,EAA6B,SAACr4C,EAAIh/B,EAAMY,GACxC5E,EAAM6B,MAAMa,MAAM2Q,YACpBzO,IAEAA,EAAK5E,EAAM6B,MAAM4Q,SAAS4E,qBAAuB,YAErD,EAEIikE,EAAS,CACX,CACEl6E,KAAM,OACNwgC,KAAM,IACN21C,SAAU,SAAAgE,GACR,OAAQv7E,EAAM6B,MAAMa,MAAM2Q,YACtBrT,EAAM6B,MAAM4Q,SAAS2E,kBACrBpX,EAAM6B,MAAM4Q,SAAS4E,sBAAwB,WACnD,GAEF,CAAEjW,KAAM,2BAA4BwgC,KAAM,YAAa45C,UAAWC,IAClE,CAAEr6E,KAAM,kBAAmBwgC,KAAM,eAAgB45C,UAAWE,IAC5D,CAAEt6E,KAAM,UAAWwgC,KAAM,gBAAiB45C,UAAWG,GAAiBC,YAAaP,GACnF,CAAEj6E,KAAM,eAAgBwgC,KAAM,YAAa45C,UAAWK,IACtD,CAAEz6E,KAAM,YAAawgC,KAAM,aAAc45C,UAAWM,IACpD,CAAE16E,KAAM,eAAgBwgC,KAAM,cAAe45C,UAAWO,GAAkBC,KAAM,CAAEC,YAAY,IAC9F,CACE76E,KAAM,2BACNwgC,KAAM,0DACN45C,UAAWU,GACXN,YAAaP,GAEf,CACEj6E,KAAM,sBACNwgC,KAAM,oCACN45C,UAAWU,GACXN,YAAaP,GAEf,CAAEj6E,KAAM,wBAAyBwgC,KAAM,cAAe45C,UAAWW,IACjE,CAAE/6E,KAAM,eAAgBwgC,KAAM,gCAAiC45C,UAAWY,GAAcR,YAAaP,GACrG,CAAEj6E,KAAM,MAAOwgC,KAAM,uBAAwB45C,UAAWa,GAAKT,YAAaP,GAC1E,CAAEj6E,KAAM,eAAgBwgC,KAAM,gBAAiB45C,UAAWc,IAC1D,CAAEl7E,KAAM,iBAAkBwgC,KAAM,kBAAmB45C,UAAWe,GAAet3E,OAAO,GACpF,CAAE7D,KAAM,qBAAsBwgC,KAAM,uBAAwB45C,UAAWc,IACvE,CAAEl7E,KAAM,kBAAmBwgC,KAAM,mBAAoB45C,UAAWgB,GAAgBZ,YAAaP,GAC7F,CAAEj6E,KAAM,gBAAiBwgC,KAAM,2BAA4B45C,UAAWjxB,GAAAA,QAAetlD,MAAO,iBAAO,CAAEw3E,iBAAiB,EAAM,EAAGb,YAAaP,GAC5I,CAAEj6E,KAAM,QAASwgC,KAAM,SAAU45C,UAAW3jC,IAC5C,CAAEz2C,KAAM,cAAewgC,KAAM,eAAgB45C,UAAW/qB,GAAYxrD,MAAO,iBAAO,CAAEquD,UAAU,EAAO,GACrG,CAAElyD,KAAM,iBAAkBwgC,KAAM,kBAAmB45C,UAAWkB,GAAez3E,MAAO,SAACszC,GAAK,MAAM,CAAEp5C,KAAMo5C,EAAMp2C,MAAMhD,KAAM,GAC1H,CAAEiC,KAAM,SAAUwgC,KAAM,UAAW45C,UAAWmB,GAAQ13E,MAAO,SAACszC,GAAK,MAAM,CAAEp2C,MAAOo2C,EAAMp2C,MAAMA,MAAO,GACrG,CAAEf,KAAM,gBAAiBwgC,KAAM,iBAAkB45C,UAAWoB,GAAahB,YAAaP,GACtF,CAAEj6E,KAAM,QAASwgC,KAAM,SAAU45C,UAAWqB,IAC5C,CAAEz7E,KAAM,gBAAiBwgC,KAAM,iBAAkB45C,UAAWsB,IAC5D,CAAE17E,KAAM,eAAgBwgC,KAAM,eAAgB45C,UAAWW,IACzD,CAAE/6E,KAAM,sBAAuBwgC,KAAM,SAAU45C,UAAWW,IAC1D,CAAE/6E,KAAM,QAASwgC,KAAM,SAAU45C,UAAWuB,IAC5C,CAAE37E,KAAM,iBAAkBwgC,KAAM,aAAc45C,UAAWwB,IACzD,CAAE57E,KAAM,aAAcwgC,KAAM,kBAAmB45C,UAAWyB,IAC1D,CAAE77E,KAAM,YAAawgC,KAAM,aAAc45C,UAAWyB,IACpD,CAAE77E,KAAM,kBAAmBwgC,KAAM,YAAa45C,UAAWprB,GAAUnrD,MAAO,iBAAO,CAAEi4E,aAAa,EAAMC,eAAe,EAAM,EAAGvB,YAAaP,IAU7I,OAPIr7E,EAAM6B,MAAM4Q,SAASsG,+BACvBuiE,EAASA,EAAO36E,OAAO,CACrB,CAAES,KAAM,OAAQwgC,KAAM,uCAAwC45C,UAAWvU,GAAM+U,KAAM,CAAEC,YAAY,GAASL,YAAaP,GACzH,CAAEj6E,KAAM,QAASwgC,KAAM,yBAA0B45C,UAAW4B,GAAUpB,KAAM,CAAEC,YAAY,GAASL,YAAaP,MAI7GC,CACR,E,IC/FG+B,GACAC,G,YACEC,GAAY,IAAI11E,IAAI,IAEpB21E,GAAoB,SAACrQ,GACzB,IAAMsQ,EAAe33E,OAAOooB,WAAa3b,SAAS4b,gBAAgBC,YAClE1hB,GAAAA,GAAiCygE,EAAI,CACnCuQ,qBAAqB,IAEvBH,GAAU76D,IAAIyqD,GACd9qE,YAAW,WACT,GAAIk7E,GAAUlmC,MAAQ,EAAG,CAEvB,QAAgCptC,IAA5BozE,GAAuC,CACzC,IAAMM,EAAQprE,SAASqrE,eAAe,OACtCP,GAA0Bv3E,OAAO+3E,iBAAiBF,GAAOG,iBAAiB,iBAC1EH,EAAMl1B,MAAMs1B,aAAeV,GAA0B,QAAH,OAAWA,GAAuB,cAAMI,EAAY,iBAAWA,EAAY,KAC/H,CAEA,QAAkCxzE,IAA9BqzE,GAAyC,CAC3C,IAAMU,EAAiBzrE,SAASqrE,eAAe,kBAC/CN,GAA4Bx3E,OAAO+3E,iBAAiBG,GAAgBF,iBAAiB,SACrFE,EAAev1B,MAAMl2B,MAAQ+qD,GAA4B,QAAH,OAAWA,GAAyB,cAAMG,EAAY,iBAAWA,EAAY,KACrI,CACAlrE,SAAS8b,KAAK4vD,UAAUv7D,IAAI,gBAC9B,CACF,GACF,EAEMw7D,GAAmB,SAAC/Q,GACxBoQ,GAAS,OAAQpQ,GACjB9qE,YAAW,WACc,IAAnBk7E,GAAUlmC,YACoBptC,IAA5BozE,KACF9qE,SAASqrE,eAAe,OAAOn1B,MAAMs1B,aAAeV,GAEpDA,QAA0BpzE,QAEMA,IAA9BqzE,KACF/qE,SAASqrE,eAAe,kBAAkBn1B,MAAMl2B,MAAQ+qD,GAExDA,QAA4BrzE,GAE9BsI,SAAS8b,KAAK4vD,UAAUE,OAAO,iBAEnC,IACAzxE,GAAAA,GAAgCygE,EAClC,EAEMiR,GAAY,CAChB5/B,QAAS,SAAC2uB,EAAIkR,GACRA,EAAQ/sE,OACVksE,GAAkBrQ,EAEtB,EACAmR,QAAS,SAACnR,EAAIkR,GACRA,EAAQjtD,WAAaitD,EAAQ/sE,QAI7B+sE,EAAQ/sE,MACVksE,GAAkBrQ,GAElB+Q,GAAiB/Q,GAErB,EACAhnB,UAAW,SAACgnB,GACV+Q,GAAiB/Q,EACnB,GAGF,kBAAgBoR,GACdA,EAAIH,UAAU,mBAAoBA,GACnC,E,ylBCxDD,IAAII,GAAuB,KAYrBC,GAAmB,SAAC9+E,GACxB,IAAMo4B,EAAUK,KAAKz4B,GACfqJ,EAAQqvB,WAAWr0B,MAAK,OAAI+zB,GAASt5B,KAAI,SAACkG,GAAI,OAAKA,EAAK2zB,WAAW,EAAE,KAE3E,OADa,IAAIomD,aAAcC,OAAO31E,EAExC,EAEM41E,GAAY,mCAAG,WAAO//C,GAAO,2EACE,IAA7Bl/B,EAjBD4S,SAASqrE,eAAe,oBAGxBY,KACHA,GAAuB7lD,KAAKoR,MAAMx3B,SAASqrE,eAAe,mBAAmBlzE,cAExE8zE,IALE,OAiBK7+E,EAAKk/B,GAAQ,yCAClB/4B,OAAOkW,MAAM6iB,IAAQ,OAGS,OADjCggD,EAAUJ,GAAiB9+E,EAAKk/B,IAChCigD,EAAcnmD,KAAKoR,MAAM80C,GAAQ,kBAChC,CACL5iE,IAAI,EACJC,KAAM,kBAAM4iE,CAAW,EACvBx6E,KAAM,kBAAMw6E,CAAW,IACxB,2CACF,gBAZiB,sCAcZC,GAAiB,mCAAG,6FAAc,OAAL/+E,EAAK,EAALA,MAAK,kBAElB4+E,GAAa,oBAAmB,OAAzC,KAAHjrE,EAAM,EAAH,MACDsI,GAAI,CAAF,gCACWtI,EAAIuI,OAAM,OAAvBvc,EAAO,EAAH,KACJ+U,EAAY/U,EAAKq/E,eACjBpqE,EAAiBjV,EAAK+6E,QAAQuE,iBAEpCj/E,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,YAAakQ,MAAOoD,IAChE1U,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,0BAA2BkQ,MAAO3R,EAAKu/E,oBACnFl/E,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,mBAAoBkQ,QAAS3R,EAAK+6E,QAAQyE,SAASC,oBAC/Fp/E,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,iBAAkBkQ,MAAO3R,EAAK+6E,QAAQyE,SAASE,kBAAoB,IAE3GzqE,GACF5U,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,iBAAkBkQ,MAAOsD,IACtE,8BAEMjB,EAAG,0DAGZ+H,QAAQzK,MAAM,qDACdyK,QAAQzK,MAAM,EAAD,IAAO,0DAEvB,gBAvBsB,sCAyBjBquE,GAAwB,mCAAG,uFAAc,SAALt/E,MAAK,kBAEzB8F,OAAOkW,MAAM,wCAAuC,OAA7D,KAAHrI,EAAM,EAAH,MACDsI,GAAI,CAAF,gCACWtI,EAAIuI,OAAM,OAAnB,OAAJvc,EAAO,EAAH,uBACHA,EAAK4/E,YAAU,cAEf5rE,EAAG,0DAGZ+H,QAAQzK,MAAM,sEACdyK,QAAQzK,MAAM,EAAD,IAAO,0DAEvB,gBAb6B,sCAexBuuE,GAAe,mCAAG,6GAEF15E,OAAOkW,MAAM,uBAAsB,OAA5C,KAAHrI,EAAM,EAAH,MACDsI,GAAI,CAAF,wCACDtI,EAAIuI,QAAM,aAEVvI,EAAG,+BAIO,OAJP,0BAGZ+H,QAAQC,KAAK,6DACbD,QAAQC,KAAK,EAAD,IAAO,kBACZ,CAAC,GAAC,0DAEZ,kBAboB,mCAef8jE,GAAW,mCAAG,iGAqDgB,OArDPC,EAAS,EAATA,UAAWC,EAAY,EAAZA,aAAc3/E,EAAK,EAALA,MAC9C4/E,EAAY95E,OAAO+5E,4BAA8B,CAAC,EAClDC,EAAMh6E,OAAOi6E,kBAAkBC,SAGjC7iE,EAAS,CAAC,EACVyiE,EAAUK,wBAAkC,gBAARH,GACtCpkE,QAAQC,KAAK,4CACbwB,EAAS3d,OAAO2c,OAAO,CAAC,EAAGujE,EAAWC,IAEtCxiE,EAAS3d,OAAO2c,OAAO,CAAC,EAAGwjE,EAAcD,IAGrCQ,EAAqB,SAAC9+E,GAC1BpB,EAAM4B,SAAS,oBAAqB,CAAER,KAAAA,EAAMkQ,MAAO6L,EAAO/b,IAC5D,GAEmB,mBACnB8+E,EAAmB,cACnBA,EAAmB,iBACnBA,EAAmB,qBACnBA,EAAmB,iBACnBA,EAAmB,wBACnBA,EAAmB,QAEnBlgF,EAAM4B,SAAS,oBAAqB,CAClCR,KAAM,WACNkQ,WAAkC,IAApB6L,EAAOrG,UAEjBqG,EAAOrG,WAGb9W,EAAM4B,SAAS,oBAAqB,CAClCR,KAAM,aACNkQ,WAAoC,IAAtB6L,EAAOtG,WACjB,EACAsG,EAAOtG,aAEbqpE,EAAmB,YACnBlgF,EAAM0S,OAAO,8BAA+ByK,EAAOxG,aAEnDupE,EAAmB,uBACnBA,EAAmB,qBACnBA,EAAmB,6BACnBA,EAAmB,qBACnBA,EAAmB,kBACnBA,EAAmB,8BACnBA,EAAmB,aACnBA,EAAmB,uBACnBA,EAAmB,mBACnBA,EAAmB,0BACnBA,EAAmB,qBACnBA,EAAmB,gBACnBA,EAAmB,gBAAe,kBAE3BlgF,EAAM4B,SAAS,WAAYub,EAAOxF,QAAM,4CAChD,gBAxDgB,sCA0DXwoE,GAAM,mCAAG,yFAAc,OAALngF,EAAK,EAALA,MAAK,kBAEP8F,OAAOkW,MAAM,iCAAgC,OAAtD,KAAHrI,EAAM,EAAH,MACDsI,GAAI,CAAF,gCACWtI,EAAIrP,OAAM,OAAvBoC,EAAO,EAAH,KACV1G,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,MAAOkQ,MAAO5K,IAAO,8BAE1DiN,EAAG,0DAGZ+H,QAAQC,KAAK,kBACbD,QAAQC,KAAK,EAAD,IAAG,0DAElB,gBAbW,sCAeNykE,GAAgB,mCAAG,yFAAc,OAALpgF,EAAK,EAALA,MAAK,kBAEjB4+E,GAAa,wBAAuB,OAA7C,KAAHjrE,EAAM,EAAH,MACDsI,GAAI,CAAF,gCACWtI,EAAIrP,OAAM,OAAvBoC,EAAO,EAAH,KACV1G,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,+BAAgCkQ,MAAO5K,IAAO,8BAEnFiN,EAAG,0DAGZ+H,QAAQC,KAAK,6BACbD,QAAQC,KAAK,EAAD,IAAG,0DAElB,gBAbqB,sCAehB0kE,GAAW,mCAAG,2FAAc,OAALrgF,EAAK,EAALA,MAAK,kBAEZ8F,OAAOkW,MAAM,yBAAwB,OAA9C,KAAHrI,EAAM,EAAH,MACDsI,GAAI,CAAF,gCACatI,EAAIuI,OAAM,OAAnB,OAANhR,EAAS,EAAH,eACYpM,QAAQgd,IAC9Btc,OAAOsd,QAAQ5R,GAAQzM,IAAG,mCAAC,6FAAkB,OAAlB,eAAQ2C,EAAI,KAAEwgC,EAAI,cACrB97B,OAAOkW,MAAM4lB,EAAO,aAAY,OACzC,GADP0+C,EAAU,EAAH,KACTtE,EAAO,CAAC,GACRsE,EAAQrkE,GAAI,CAAF,+BACCqkE,EAAQpkE,OAAM,OAA3B8/D,EAAO,EAAH,qCAEC,CACLuE,KAAMn/E,EACNwgC,KAAAA,EACAo6C,KAAAA,IACD,4CACF,mDAXyB,KAY3B,QAbKwE,EAAW,EAAH,KAaXh/E,MAAK,SAACC,EAAGC,GACV,OAAOD,EAAEu6E,KAAKxpE,MAAMiuE,cAAc/+E,EAAEs6E,KAAKxpE,MAC3C,IACAxS,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,WAAYkQ,MAAOkvE,IAAW,8BAEnE7sE,EAAG,0DAGZ+H,QAAQC,KAAK,uBACbD,QAAQC,KAAK,EAAD,IAAG,0DAElB,gBA7BgB,sCA+BX+kE,GAAY,mCAAG,6FAEI,OAFK1gF,EAAK,EAALA,MACpB6B,EAAkB7B,EAAlB6B,MAAO6Q,EAAW1S,EAAX0S,OACPgd,EAAoB7tB,EAApB6tB,MAAOjd,EAAa5Q,EAAb4Q,SAAQ,kBAChBmc,GAAe,SAAKc,GAAK,IAAEjd,SAAUA,EAASgC,OAAQ/B,OAAAA,KAC1D1T,MAAK,SAACswB,GAAG,OAAKG,GAAe,SAAKH,GAAG,IAAE7c,SAAUA,EAASgC,SAAS,IACnEzV,MAAK,SAAC0xB,GACLhe,EAAO,cAAege,EAAM+J,cAC5B/nB,EAAO,uBAAwBooB,GAAyB96B,EAAMka,QAAQgW,YACxE,KAAE,2CACL,gBATiB,sCAWZywD,GAAuB,SAAH,GAA4B,IAAtB3gF,EAAK,EAALA,MACxB4gF,EADuC,EAAR15D,SACVzoB,KAAI,SAAAwkB,GAAG,OAAIA,EAAI49D,MAAM,KAAKr4E,KAAK,IAC1DxI,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,gBAAiBkQ,MAAOsvE,GACtE,EAEME,GAAW,mCAAG,6GAAc,OAAL9gF,EAAK,EAALA,MAAK,kBAEZ4+E,GAAa,sBAAqB,OAA3C,KAAHjrE,EAAM,EAAH,MACDsI,GAAI,CAAF,gCACWtI,EAAIuI,OAAM,OAAvBvc,EAAO,EAAH,KACJw/E,EAAWx/E,EAAKw/E,SAChB4B,EAAW5B,EAAS4B,SAC1B/gF,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,OAAQkQ,MAAO6tE,EAAS6B,WACpEhhF,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,mBAAoBkQ,MAAO3R,EAAKshF,oBAC5EjhF,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,sBAAuBkQ,MAAOyvE,EAASv+E,SAAS,iBAC5FxC,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,SAAUkQ,MAAOyvE,EAASv+E,SAAS,sBAC/ExC,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,iBAAkBkQ,MAAOyvE,EAASv+E,SAAS,UACvFxC,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,+BAAgCkQ,MAAOyvE,EAASv+E,SAAS,2BACrGxC,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,kBAAmBkQ,MAAOyvE,EAASv+E,SAAS,YACxFxC,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,iBAAkBkQ,MAAOyvE,EAASv+E,SAAS,WACvFxC,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,mBAAoBkQ,MAAOyvE,EAASv+E,SAAS,aACzFxC,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,aAAckQ,MAAO6tE,EAAS1lE,aAC1EzZ,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,gBAAiBkQ,MAAO6tE,EAASjL,gBAEvEgN,EAAe/B,EAAS+B,aAC9BlhF,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,cAAekQ,MAAO6vE,SAASD,EAAaE,WACxFphF,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,cAAekQ,MAAO6vE,SAASD,EAAaljC,UACxFh+C,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,kBAAmBkQ,MAAO6vE,SAASD,EAAalsE,cAC5FhV,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,cAAekQ,MAAO6vE,SAASD,EAAaG,UACxFrhF,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,eAAgBkQ,MAAO6tE,EAASmC,eAE5EthF,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,sBAAuBkQ,MAAO6tE,EAAS1mE,sBACnFzY,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,cAAekQ,MAAO6tE,EAAS3mE,cAErE1W,EAAcq9E,EAASr9E,YAC7B9B,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,qBAAsBkQ,MAAOxP,EAAYy/E,UACrFvhF,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,iBAAkBkQ,MAAOxP,EAAY0/E,MAE3EC,EAAW9hF,EAAK8hF,SACtBzhF,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,iBAAkBkQ,MAAOmwE,EAASC,UAC9E1hF,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,iBAAkBkQ,MAAyB,YAAlBmwE,EAASrgF,OAExEugF,EAAOxC,EAAQ,QACrBn/E,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,UAAWkQ,MAAOqwE,IAExDpoE,EAAkBzT,OAAOopB,yBAC/BlvB,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,kBAAmBkQ,MAAOiI,IAEhEqoE,EAAazC,EAASyC,WAE5B5hF,EAAM4B,SAAS,oBAAqB,CAClCR,KAAM,qBACNkQ,WAA0C,IAA5BswE,EAAWC,cAErB1C,EAASyC,WAAWC,aAAar/E,SAAS,eAGhDxC,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,mBAAoBkQ,MAAOswE,IACvE5hF,EAAM4B,SAAS,oBAAqB,CAClCR,KAAM,aACNkQ,WAAqC,IAAvBswE,EAAWL,SAErBK,EAAWL,UAGX9Q,EAA4B0O,EAAS1O,0BAC3CzwE,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,4BAA6BkQ,MAAOm/D,IAE1EvpD,EAAWi4D,EAAS3J,cAC1BmL,GAAqB,CAAE3gF,MAAAA,EAAOknB,SAAAA,IAAW,8BAElCvT,EAAG,0DAGZ+H,QAAQC,KAAK,2BACbD,QAAQC,KAAK,EAAD,IAAG,0DAElB,gBAxEgB,sCA0EXmmE,GAAS,mCAAG,2FAAc,OAAL9hF,EAAK,EAALA,MAAK,SAEJlB,QAAQgd,IAAI,CAACwjE,GAAyB,CAAEt/E,MAAAA,IAAUw/E,OAAmB,OAE5D,OAF7BuC,EAAc,EAAH,KACXrC,EAAYqC,EAAY,GACxBpC,EAAeoC,EAAY,GAAE,SAE7BtC,GAAY,CAAEz/E,MAAAA,EAAO0/E,UAAAA,EAAWC,aAAAA,IAAgB3gF,KAAK0hF,GAAa,CAAE1gF,MAAAA,KAAS,2CACpF,gBAPc,sCASTgiF,GAAe,mCAAG,qFAAc,OAALhiF,EAAK,EAALA,MAAK,kBAE7B,IAAIlB,QAAO,mCAAC,WAAOC,EAASqD,GAAM,qEACnCpC,EAAMka,QAAQysB,eAAgB,CAAF,wCAEtB3mC,EAAM4B,SAAS,YAAa5B,EAAMka,QAAQysB,gBAAe,sDAE/DjrB,QAAQzK,MAAM,EAAD,IAAG,OAGpBlS,IAAS,yDACV,qDATiB,KAShB,2CACH,gBAZoB,sCA2FrB,SA7EqB,mCAAG,uGAQgD,OARvCiB,EAAK,EAALA,MAAOqP,EAAI,EAAJA,KACtCrP,EAAM4B,SAAS,iBAAkBqsB,MACjCjuB,EAAM4B,SAAS,kBAAmB0sB,MAElC2zD,GAAAA,EAAAA,qBAEMrC,EAAY95E,OAAO+5E,4BAA8B,CAAC,EAClDprE,OAAsC,IAArBmrE,EAAUv5E,OAA0Bu5E,EAAUv5E,OAASP,OAAO4oB,SAASC,OAC9F3uB,EAAM4B,SAAS,oBAAqB,CAAER,KAAM,SAAUkQ,MAAOmD,IAAS,SAEhEqtE,GAAU,CAAE9hF,MAAAA,IAAQ,OAqB1B,OArB0B,EAEiBA,EAAM6B,MAAMsb,OAA/CC,EAAW,EAAXA,YAAa8kE,EAAiB,EAAjBA,kBACbvqE,EAAU3X,EAAM6B,MAAM4Q,SAAtBkF,MACmBuqE,GAAqB9kE,EAG1C8kE,GAAqBA,EAAkB3kE,qBAAuBC,EAAAA,IAChEC,EAAAA,EAAAA,IAAWykE,IAEXzkE,EAAAA,EAAAA,IAAWL,GAEJzF,GAGT+D,QAAQzK,MAAM,8BAGhBkxE,EAAAA,EAAAA,IAAYniF,EAAM6B,MAAMsb,QAGxB,UACMre,QAAQgd,IAAI,CAChBkmE,GAAgB,CAAEhiF,MAAAA,IAClBogF,GAAiB,CAAEpgF,MAAAA,IACnB8gF,GAAY,CAAE9gF,MAAAA,IACd++E,GAAkB,CAAE/+E,MAAAA,MACpB,QAmCe,OAhCjBA,EAAM4B,SAAS,cACf5B,EAAM4B,SAAS,8BACfu+E,GAAO,CAAEngF,MAAAA,IACTqgF,GAAY,CAAErgF,MAAAA,IAERoiF,GAASC,EAAAA,GAAAA,IAAa,CAC1BxyB,SAASyyB,EAAAA,GAAAA,MACThH,OAAQA,GAAOt7E,GACfuiF,eAAgB,SAACv/C,EAAIw/C,EAAOC,GAC1B,OAAIz/C,EAAG0/C,QAAQ74E,MAAK,SAAAmjC,GAAC,OAAIA,EAAEgvC,KAAKC,UAAU,MAGnCwG,GAAiB,CAAEtc,KAAM,EAAGxG,IAAK,GAC1C,KAGIrwC,GAAMqzD,EAAAA,GAAAA,IAAUC,KAElBC,IAAIT,GACR9yD,EAAIuzD,IAAI7iF,GACRsvB,EAAIuzD,IAAIxzE,GAERigB,EAAIuzD,IAAIC,MACRxzD,EAAIuzD,IAAIE,IACRzzD,EAAIuzD,IAAIG,GAAAA,IAER1zD,EAAIksD,UAAU,SAAUyH,GAAAA,IACxB3zD,EAAIksD,UAAU,WAAY0H,GAAAA,IAG1B5zD,EAAInS,OAAOgmE,mBAAoB,EAE/B7zD,EAAI8zD,MAAM,QAAO,kBAEV9zD,GAAG,4CACX,gBA3EoB,sCC9SrB,IAAM+zD,IAAiBv9E,OAAO8qB,UAAUthB,UAAY,MAAMuxE,MAAM,KAAK,GAE/DxxE,IAAOi0E,EAAAA,GAAAA,GAAW,CAEtB7zE,OAAQ,KACRC,eAAgB,KAChBE,SAAUA,GAAAA,EAAAA,UAGZA,GAAAA,EAAAA,YAAqBP,GAAMg0E,IAE3B,IAAME,GAAwB,CAC5BrwC,MAAO,CACL,0BACA,SACA,sBACA,WAIJ,iBAAC,0FAEoC,OAD/BswC,GAAe,EACbC,EAAU,CAACC,IAAkB,kBAEJnwC,GAAqBgwC,IAAsB,OAAlEI,EAAiB,EAAH,KACpBF,EAAQ1+E,KAAK4+E,GAAe,gDAE5BjoE,QAAQzK,MAAM,EAAD,IACbuyE,GAAe,EAAI,QAEfxjF,GAAQ4jF,EAAAA,EAAAA,IAAY,CACxBC,QAAS,CACPx0E,KAAM,CACJ6K,QAAS,CACP7K,KAAM,kBAAMA,GAAKy0E,MAAM,IAG3BC,UAAWC,EACXvxE,SAAUwxE,EAEVvhF,MAAOwhF,GACPlmE,SAAUmmE,GACVl5D,MAAOm5D,GACPt8D,IAAKu8D,GACLlnE,OAAQmnE,EAAAA,GACRC,iBAAkBC,GAAAA,GAClB5qC,kBAAmB6qC,GACnBznC,MAAO0nC,GACPh1D,MAAOi1D,GACPC,SAAUC,GACV58C,YAAa68C,GACbC,YAAaC,GACbj8C,QAASk8C,GACT16C,MAAO26C,GACPx1B,WAAYy1B,GACZp2B,WAAYq2B,GACZz1B,cAAe01B,GACf5pD,MAAO6pD,GACP10C,cAAe20C,IAEjB9B,QAAAA,EACA+B,QAAQ,IAGNhC,GACFxjF,EAAM4B,SAAS,mBAAoB,CAAEiR,WAAY,6BAA8BvH,MAAO,UAExFm6E,GAAgB,CAAEzlF,MAAAA,EAAOqP,KAAAA,KAAO,wDA/ClC,GAoDAvJ,OAAOi6E,kBAAoB2F,CAAAA,SAAAA,cAC3B5/E,OAAOopB,yBAA2By2D,aAClC7/E,OAAO+5E,gCAA6B+F,C,szBC1GpC,IAkBa1mE,EAAe,CAC1B2mE,YAAa,EACbC,OAAQ,CAAC,EACTnuE,WAAO1N,EACPmT,iBAAanT,EACbi4E,uBAAmBj4E,EACnBioD,SAAS,EACTF,uBAAuB,EACvBO,cAAc,EAEd78C,oBAAgBzL,EAChB0L,sBAAkB1L,EAClB2L,2BAAuB3L,EACvBgM,qBAAiBhM,EACjBgL,gCAA4BhL,EAC5B87E,UAAU,EACVvuB,iBAAiB,EACjBC,uBAAuB,EACvBuuB,cAAe,GACfC,UAAU,EACVC,cAAc,EACdC,WAAW,EACXC,qBAAqB,EACrBruB,WAAW,EACXsuB,0BAA0B,EAC1B58B,yBAAyB,EACzBR,4BAA4B,EAC5B2X,kBAAkB,EAClB0lB,UAAU,EACVn6D,gBAAiB,MACjB/Y,gBAAiB,gBACjBukB,uBAAwB,CACtBmB,SAAS,EACTrZ,UAAU,EACVuZ,OAAO,EACPG,SAAS,EACTE,OAAO,EACPzS,gBAAgB,EAChB2/D,eAAe,EACfx9C,SAAS,EACTy9C,aAAa,EACbj8C,OAAO,GAET/Q,sBAAsB,EACtBitD,UAAW,GACXvxD,UAAW,CAAC,EACZo8B,mBA9DqBxrD,OAAO8qB,UAAUthB,UAAY,MAAMuxE,MAAM,KAAK,GA+DnE6F,iBAAiB,EACjBtrD,iBAAiB,EACjB3jB,kBAAcxN,EACdqN,eAAWrN,EACXyN,yBAAqBzN,EACrB4K,4BAAwB5K,EACxBkN,qBAAiBlN,EACjBgN,uBAAmBhN,EAEnBwL,0BAAsBxL,EACtBiM,mBAAejM,EACfkM,qBAAiBlM,EACjBmM,kBAAcnM,EACdoM,iBAAapM,EACbqM,mBAAerM,EACfsM,mBAAetM,EACfuM,0BAAsBvM,EACtBwM,uBAAmBxM,EACnByM,oCAAgCzM,EAChC08E,mBAAmB,EACnBC,iBAAiB,EACjBC,eAAe,EACfp0B,sBAAsB,EACtBC,gBAAgB,EAChBo0B,wBAAyB,OACzBC,oBAAoB,EACpBC,mBAAoB,QACpBC,mBAAoB,QACpBC,kBAAmB,QACnBt1B,qBAAqB,EACrB9qD,eAAWmD,EACXiL,eAAWjL,EACXkL,wBAAoBlL,EACpBmL,4BAAwBnL,EACxBoL,2BAAuBpL,EACvBqL,2BAAuBrL,EACvBsL,yBAAqBtL,EACrBuL,0BAAsBvL,EACtB4L,mBAAe5L,EACf6L,uBAAmB7L,EACnB+L,mBAAe/L,EACf2N,sBAAkB3N,EAClB4N,wBAAoB5N,EACpB6N,yBAAqB7N,EACrB8N,8BAA0B9N,EAC1B+N,oCAAgC/N,EAChCgO,mCAA+BhO,EAC/BiO,sBAAkBjO,GAIPmQ,EAA4B5a,OAAOsd,QAAQoC,GACrDze,QAAO,+BAAY,OAAP,UAAuBwJ,IAAhB,IAAyB,IAC5CxL,KAAI,+BAAEsO,EAAG,KAAO,YAAMA,CAAG,IAqF5B,QAnFe,CACblL,MAAO,EAAF,GAAOqd,GACZhF,QAAS,CACPitE,cAAa,SAAEtlF,EAAOqY,EAAS7H,EAAWW,GACxC,IAAQP,EAAaJ,EAAbI,SACR,OAAO,EAAP,KACKyM,GACA1f,OAAO2E,YACRiW,EAA0B3b,KAAI,SAAAsO,GAAG,MAAI,CAACA,EAAK0F,EAAS1F,GAAK,KAG/D,EACAoG,aAAY,SAAEtR,EAAOqY,EAAS7H,EAAWW,GAEvC,OAAO,EAAP,KAD0BA,EAAlBm0E,eAIH3nF,OAAO2E,YAAY3E,OAAOsd,QAAQjb,GAAOpB,QAAO,+BAAM,OAAH,UAAewJ,IAAZ,IAAqB,KAElF,GAEF6G,UAAW,CACTs2E,UAAS,SAAEvlF,EAAO,GAAiB,IAAfT,EAAI,EAAJA,KAAMkQ,EAAK,EAALA,MACxBzP,EAAMT,GAAQkQ,CAChB,EACAkjD,aAAY,SAAE3yD,EAAO,GAAuB,IAArBc,EAAI,EAAJA,KAAM0kF,EAAK,EAALA,MAAOjiF,EAAI,EAAJA,KAC5BzF,EAAO+F,KAAK7D,MAAMsb,OAAO+X,UAAUvyB,GACrC0kF,GAASjiF,EACXvD,EAAMqzB,UAAUvyB,GAAQ,CAAE0kF,MAAOA,GAAS1nF,EAAK0nF,MAAOjiF,KAAMA,GAAQzF,EAAKyF,aAElEvD,EAAMqzB,UAAUvyB,EAE3B,GAEFwP,QAAS,CACPm1E,aAAY,WAAgB3nF,GAAM,IAIF,EAJhBiC,EAAQ,EAARA,SACR4iC,EAAY,IAAI38B,IAAIrI,OAAOD,KAAK2f,IAChCqoE,EAAc,IAAI1/E,IAAIrI,OAAOD,KAAKI,IAClC6nF,EAAe,IAAI3/E,IAAK,E,25BAAA,CACX0/E,GAAW,IAA9B,IAAK,EAAL,qBAAgC,KAArBn8E,EAAI,QACTo5B,EAAU77B,IAAIyC,IAChBo8E,EAAa9kE,IAAItX,EAErB,CAAC,+BAEDo8E,EAAa9sE,SACX,SAAAtZ,GAAI,OAAIQ,EAAS,YAAa,CAAER,KAAAA,EAAMkQ,MAAO3R,EAAKyB,IAAQ,GAE9D,EACAozD,aAAY,cAA+C,IAA3C9hD,EAAM,EAANA,OAAgB,EAAR9Q,SACtB8Q,EAAO,eAAgB,CAAE/P,KADe,EAAJA,KACL0kF,MADgB,EAALA,MACJjiF,KADe,EAAJA,MAEnD,EACAgiF,UAAS,cAAgD,IAA5C10E,EAAM,EAANA,OAAQ9Q,EAAQ,EAARA,SAAUC,EAAK,EAALA,MAAWT,EAAI,EAAJA,KAAMkQ,EAAK,EAALA,MAE9C,OADAoB,EAAO,YAAa,CAAEtR,KAAAA,EAAMkQ,MAAAA,IACpBlQ,GACN,IAAK,SACHqmF,EAAAA,EAAAA,IAAUn2E,GACV,MACF,IAAK,qBACL,IAAK,qBACL,IAAK,qBACH6wE,EAAAA,EAAAA,IAAYtgF,GACZ,MACF,IAAK,cACL,IAAK,qBACH4b,EAAAA,EAAAA,IAAWnM,GACX,MACF,IAAK,oBACH1B,EAAAA,EAAAA,YAAqBlK,KAAKwU,QAAQ7K,KAAMiC,GACxC1P,EAAS,uBAAwB0P,GACjCo2E,EAAAA,EAAAA,IA9L2B,eAgMzB9iB,EAAAA,EAAAA,6BAA2CtzD,IAE7C,MACF,IAAK,kBACH1P,EAAS,sBAAkBqI,GAGjC,G,yVC1MJ,IAAM09E,EAAa,SAAH,KAA+C,IAAzCt1E,EAAS,EAATA,UAAWK,EAAM,EAANA,OAAYkvB,EAAI,EAAJA,KAAMtwB,EAAK,EAALA,MAC3CkpB,EAAS,CAAC,EAEhB,OADA,IAAIA,EAAQoH,EAAMtwB,GACXe,EACJyV,IACAC,kBACAyd,cAAc,CAAEhL,OAAAA,IAChBx7B,MAAK,SAAAsE,GACJoP,EAAO,cAAe,CAACpP,IACvBoP,EAAO,iBAAkBpP,EAC3B,GACJ,EAEMskF,EAAmB,SAAH,KAAyD,IAAnDv1E,EAAS,EAATA,UAAWK,EAAM,EAANA,OAAYkvB,EAAI,EAAJA,KAAMtwB,EAAK,EAALA,MAAO8f,EAAQ,EAARA,SACxDlhB,EAAW,CAAC,EAElB,OADA,IAAIA,EAAU0xB,EAAMtwB,GACbe,EACJyV,IACAC,kBACA8/D,2BAA2B,CAAE33E,SAAAA,IAC7BlR,MAAK,SAAAsE,GACkB,YAAlBA,EAAOgd,OACT5N,EAAO,0BAA2B,CAAEtR,KAAMkQ,MAAAA,IAE1CoB,EAAO,0BAA2B,CAAEtR,KAAMkQ,MAAO8f,GAErD,GACJ,EAWa02D,EAAc,CACzBC,aAAc,iBACdC,YAAa,mBACbC,iBAAkB,CAChB/4B,IAAK,8BACLnkC,IAAK,gBAGPoQ,OAAQ,SACR+sD,mBAAoB,CAClBh5B,IAAK,gCACLnkC,IAAK,yBAEPm2C,mBAAoB,CAClBhS,IAAK,+BACLnkC,IAAK,wBAEPo9D,aAAc,CACZj5B,IAAK,8BACLnkC,IAAK,gBAEPq9D,cAAe,CACbl5B,IAAK,yBACLnkC,IAAK,kBAEPs9D,cAAe,CACbn5B,IAAK,yBACLnkC,IAAK,kBAEPu9D,YAAa,CACXp5B,IAAK,uBACLnkC,IAAK,gBAEPw9D,mBAAoB,CAClBr5B,IAAK,+BACLnkC,IAAK,wBAEPy9D,iBAAkB,CAChBt5B,IAAK,6BACLnkC,IAAK,sBAGP09D,oBAAqB,CACnBv5B,IAAK,2DACLnkC,IAAK,6BACLjD,IAAK8/D,GAEPc,gCAAiC,CAC/Bx5B,IAAK,qDACLnkC,IAAK,uBACLjD,IAAK8/D,IAII1oE,EAAe1f,OAAO2E,YAAY3E,OAAOD,KAAKuoF,GAAarpF,KAAI,SAAAsO,GAAG,MAAI,CAACA,EAAK,KAAK,KA6C9F,QA3CyB,CACvBlL,M,qWAAO,CAAF,GAAOqd,GACZpO,UAAW,CACT63E,wBAAuB,SAAE9mF,EAAO,GAAiB,IAAfT,EAAI,EAAJA,KAAMkQ,EAAK,EAALA,MACtC,IAAIzP,EAAOT,EAAMkQ,EACnB,EACAs3E,qBAAoB,SAAE/mF,EAAO,GAAU,IAART,EAAI,EAAJA,KAC7B,IAAIS,EAAOT,EAAM,KACnB,EACAynF,yBAAwB,SAAEhnF,GACxBrC,OAAOD,KAAKuoF,GAAaptE,SAAQ,SAAA3N,GAC/B,IAAIlL,EAAOkL,EAAK,KAClB,GACF,EAEA6lB,eAAc,SAAE/wB,EAAOc,GACrBnD,OAAOsd,QAAQgrE,GAAaptE,SAAQ,SAACjc,GACnC,cAAsBA,EAAG,GAAlB2C,EAAI,KAAEkQ,EAAK,KAClB,EAA8BA,EAAtB49C,IAAKttB,OAAI,IAAG,EAAAtwB,EAAK,EACzB,IAAIzP,EAAOT,EAAM,IAAIuB,EAAKmmF,UAAWlnD,GACvC,GACF,GAEFzvB,QAAS,CACP42E,oBAAmB,cAA2D,IAAvD12E,EAAS,EAATA,UAAWxQ,EAAK,EAALA,MAAO6Q,EAAM,EAANA,OAAsBtR,GAAN,EAARQ,SAAkB,EAAJR,MAAMkQ,EAAK,EAALA,MAC7D8f,EAAW,IAAIvvB,EAAOT,GACtB3C,EAAMqpF,EAAY1mF,GACxB,IAAK3C,EAAK,MAAM,IAAIS,MAAM,+BAC1B,MAA8CT,EAAtCssB,IAAK6W,OAAI,IAAG,EAAAnjC,EAAG,IAAuBA,EAArBqpB,IAAAA,OAAG,IAAG,EAAA6/D,EAAU,EACzCj1E,EAAO,uBAAwB,CAAEtR,KAAAA,IAEjC0mB,EAAI,CAAEzV,UAAAA,EAAWK,OAAAA,GAAU,CAAEkvB,KAAAA,EAAMtwB,MAAAA,EAAO8f,SAAAA,IAAW,OAC5C,SAACnyB,GACNyc,QAAQC,KAAK,oCAAqC1c,GAClDyT,EAAO,0BAA2B,CAAEtR,KAAAA,EAAMkQ,MAAO8f,GACnD,GACJ,EACAuJ,OAAM,aACJjoB,EADc,EAANA,QACD,2BACT,G,yXCrIG,SAASs2E,EAAiB92C,EAAY7jB,EAAMm6C,EAASj8C,GAC1D7mB,KAAKtE,KAAO,kBACZsE,KAAKwsC,WAAaA,EAClBxsC,KAAKknB,QAAUslB,EAAa,OAASvZ,MAAQA,KAAKC,UAAYD,KAAKC,UAAUvK,GAAQA,GACrF3oB,KAAKuL,MAAQod,EACb3oB,KAAK8iE,QAAUA,EACf9iE,KAAK6mB,SAAWA,EAEZrtB,MAAM+pF,mBACR/pF,MAAM+pF,kBAAkBvjF,KAE5B,CACAsjF,EAAgBvnD,UAAYjiC,OAAO0pF,OAAOhqF,MAAMuiC,WAChDunD,EAAgBvnD,UAAU0nD,YAAcH,EAEjC,IAAMI,EAAiB,6B,IAAA,G,EAAA,E,gaAC5B,WAAan4E,GAAO,MChBUub,GDgBV,eAClB,eACIttB,MAAM+pF,mBACR/pF,MAAM+pF,mBAAkB,WAG1B,IAUE,GARqB,iBAAVh4E,IACTA,EAAQ0nB,KAAKoR,MAAM94B,IAET4S,eAAe,WACvB5S,EAAQ0nB,KAAKoR,MAAM94B,EAAMA,QAIR,YAAjB,OAAOA,GAAoB,CAC7B,IAAMo4E,EAAgB1wD,KAAKoR,MAAM94B,EAAMA,OAMnCo4E,EAAcC,QAChBD,EAAcj5D,SAAWi5D,EAAcC,aAChCD,EAAcC,OAGvB,EAAK18D,SC5CmBJ,ED4CM68D,EC3C7B7pF,OAAOsd,QAAQ0P,GAAQnY,QAAO,SAACk1E,EAAM,GAAa,mBAAZvoF,EAAC,KACtC4rB,EAD2C,KAC7BvY,QAAO,SAACC,EAAKsY,GAE/B,OAAOtY,EAAM,CADD,IAAWtT,EAAE2C,QAAQ,KAAM,MACpBipB,GAAShiB,KAAK,KAAO,IAC1C,GAAG,IACH,MAAO,GAAP,eAAW2+E,GAAI,CAAE38D,GACnB,GAAG,IDsCC,MACE,EAAKA,QAAU3b,CAKnB,CAHE,MAAOhS,GAEP,EAAK2tB,QAAU3b,CACjB,CAAC,QACH,CAAC,iBArC2B,EAqC3B,OArCoC/R,Q,2mBEZvC,IAOMsqF,EAAc,uBACdC,EAAe,+BACfC,EAAuB,SAACC,EAAYp3D,GAAK,yCAAiCo3D,EAAU,6BAAqBp3D,EAAK,EAmB9Gq3D,EAAoC,SAAAvqF,GAAE,sCAA6BA,EAAE,aACrEwqF,EAAwB,SAAAxqF,GAAE,iCAAwBA,EAAE,eACpDyqF,EAA0B,SAAAzqF,GAAE,iCAAwBA,EAAE,iBACtD0qF,EAAuB,SAAA1qF,GAAE,iCAAwBA,EAAE,YACnD2qF,EAAyB,SAAA3qF,GAAE,iCAAwBA,EAAE,cAUrD4qF,EAA2B,2BAE3BC,EAAsB,SAAA7qF,GAAE,iCAAwBA,EAAE,EAOlD8qF,EAA6B,SAAA9qF,GAAE,iCAAwBA,EAAE,cAEzD+qF,EAAoB,SAAA/qF,GAAE,8BAAqBA,EAAE,EAC7CgrF,EAA6B,SAAAhrF,GAAE,uCAA8BA,EAAE,EAC/DirF,EAA6B,SAAAjrF,GAAE,8BAAqBA,EAAE,cACtDkrF,EAA4B,SAAAlnF,GAAG,sCAA6BA,EAAG,EAM/DmnF,EAAyB,SAAAnrF,GAAE,iCAAwBA,EAAE,UACrDorF,EAA2B,SAAAprF,GAAE,iCAAwBA,EAAE,YAEvDqrF,GAA0B,SAAArrF,GAAE,yCAAgCA,EAAE,eAC9DsrF,GAA4B,SAAAtrF,GAAE,yCAAgCA,EAAE,iBAChEurF,GAAyB,SAAAvrF,GAAE,iCAAwBA,EAAE,UACrDwrF,GAA+B,SAAAxrF,GAAE,iCAAwBA,EAAE,cAC3DyrF,GAAiC,SAAAzrF,GAAE,iCAAwBA,EAAE,gBAE7D0rF,GAA4B,gBAG5BC,GAAkC,SAAA3rF,GAAE,iCAAwBA,EAAE,mBAC9D4rF,GAAkC,SAAA5rF,GAAE,iCAAwBA,EAAE,kBAC9D6rF,GAA8B,sCAE9BC,GAA0B,SAAA9rF,GAAE,iCAAwBA,EAAE,SACtD+rF,GAA4B,SAAA/rF,GAAE,iCAAwBA,EAAE,WACxDgsF,GAA6B,SAAAhsF,GAAE,iCAAwBA,EAAE,UACzDisF,GAA+B,SAAAjsF,GAAE,iCAAwBA,EAAE,YAG3DksF,GAA6B,wBAK7BC,GAAqC,SAAAnsF,GAAE,sCAA6BA,EAAE,aACtEosF,GAA8B,SAAApsF,GAAE,yCAAgCA,EAAE,eAClEqsF,GAA0B,SAACrsF,EAAIS,GAAK,yCAAiCT,EAAE,sBAAcS,EAAK,EAC1F6rF,GAA4B,SAACtsF,EAAIS,GAAK,yCAAiCT,EAAE,sBAAcS,EAAK,EAG5F8rF,GAA4B,SAAAvsF,GAAE,sCAA6BA,EAAE,cAC7DwsF,GAAwB,SAAAxsF,GAAE,sCAA6BA,EAAE,UACzDysF,GAAkC,SAAC5tD,EAAQ6O,GAAS,sCAA8B7O,EAAM,qBAAa6O,EAAS,EAE9Gg/C,GAAqB,0BAGrBC,GAAgC,SAAA3sF,GAAE,oDAA2CA,EAAE,EAC/E4sF,GAAkC,SAAA5sF,GAAE,oDAA2CA,EAAE,EAEjF6sF,GAAWpmF,OAAOkW,MAElBA,GAAQ,SAAC9W,EAAKsjE,GAElB,IACM2jB,EADU,GACUjnF,EAE1B,OAJAsjE,EAAUA,GAAW,CAAC,GAGd3qD,YAAc,cACfquE,GAASC,EAAS3jB,EAC3B,EAEM4jB,GAAkB,SAAH,GAAoE,IAA9D/8D,EAAM,EAANA,OAAQnqB,EAAG,EAAHA,IAAKs1B,EAAM,EAANA,OAAQ8Z,EAAO,EAAPA,QAASz2B,EAAW,EAAXA,YAAW,IAAEoT,QAC9Du3C,EAAU,CACdn5C,OAAAA,EACA4B,QAAS,EAAF,CACLo7D,OAAQ,mBACR,eAAgB,yBALuD,IAAG,GAAC,EAAC,IAuBhF,OAdI7xD,IACFt1B,GAAO,IAAM1F,OAAOsd,QAAQ0d,GACzB/7B,KAAI,+BAAEsO,EAAG,KAAEuE,EAAK,YAAM2e,mBAAmBljB,GAAO,IAAMkjB,mBAAmB3e,EAAM,IAC/E1G,KAAK,MAEN0pC,IACFk0B,EAAQn6C,KAAOsK,KAAKC,UAAU0b,IAE5Bz2B,IACF2qD,EAAQv3C,QAAU,EAAH,KACVu3C,EAAQv3C,SACRq7D,GAAYzuE,KAGZ7B,GAAM9W,EAAKsjE,GACfxpE,MAAK,SAACutB,GACL,OAAO,IAAIztB,SAAQ,SAACC,EAASqD,GAAM,OAAKmqB,EAASrQ,OAC9Cld,MAAK,SAACkd,GACL,OAAKqQ,EAAStQ,GAGPld,EAAQmd,GAFN9Z,EAAO,IAAI4mF,EAAgBz8D,EAASjM,OAAQpE,EAAM,CAAEhX,IAAAA,EAAKsjE,QAAAA,GAAWj8C,GAG/E,IAAE,OACK,SAACtb,GACN,OAAO7O,EAAO,IAAI4mF,EAAgBz8D,EAASjM,OAAQrP,EAAO,CAAE/L,IAAAA,EAAKsjE,QAAAA,GAAWj8C,GAC9E,GAAE,GAEN,GACJ,EAyFM+/D,GAAc,SAACtxD,GACnB,OAAIA,EACK,CAAE9J,cAAe,UAAF,OAAY8J,IAE3B,CAAE,CAEb,EAmGMrF,GAAY,SAAH,GAA4B,IAAtBt2B,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YACjB3Y,EAAM,GAAH,OA3Se,mBA2SQ,YAAI7F,GACpC,OAAO+sF,GAAgB,CAAElnF,IAAAA,EAAK2Y,YAAAA,IAC3B7e,MAAK,SAACW,GAAI,OAAK4sF,EAAAA,EAAAA,IAAU5sF,EAAK,GACnC,EAmCMs3B,GAAe,SAAH,GAAwD,IAAlD53B,EAAE,EAAFA,GAAIif,EAAK,EAALA,MAAO8qD,EAAO,EAAPA,QAAO,IAAEr/C,MAAAA,OAAK,IAAG,KAAE,EAAElM,EAAW,EAAXA,YAClD3Y,EA9VyB,SAAA7F,GAAE,iCAAwBA,EAAE,cA8V/CmtF,CAAuBntF,GAC3B2U,EAAO,CACXsK,GAAS,UAAJ,OAAcA,GACnB8qD,GAAW,YAAJ,OAAgBA,GACvBr/C,GAAS,SAAJ,OAAaA,GAClB,2BACAtpB,QAAO,SAAA0L,GAAC,OAAIA,CAAC,IAAEvB,KAAK,KAGtB,OAAOoR,GADP9W,GAAa8O,EAAO,IAAMA,EAAO,GACf,CAAEid,QAASq7D,GAAYzuE,KACtC7e,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,IAC1Bld,MAAK,SAACW,GAAI,OAAKA,EAAKlB,IAAI8tF,EAAAA,GAAU,GACvC,EAk+BME,GAAwB,SAAH,GAA8C,IAAxCnnF,EAAO,EAAPA,QAASqtC,EAAQ,EAARA,SAAUC,EAAM,EAANA,OAAQC,EAAM,EAANA,OACpDyB,EAAU,CAAEhvC,QAAAA,GAclB,YAZwB,IAAbqtC,IACT2B,EAAQ6lC,UAAYxnC,EAAW,IAAIxjB,KAAKwjB,GAAUvjB,cAAgB,WAG9C,IAAXwjB,IACT0B,EAAQ8lC,QAAUxnC,EAAS,IAAIzjB,KAAKyjB,GAAQxjB,cAAgB,WAGxC,IAAXyjB,IACTyB,EAAQimC,QAAU1nC,GAGbyB,CACT,EA4Ba1mB,GAAuB,SAAH,GAA2C,IAArC/P,EAAW,EAAXA,YAAagQ,EAAM,EAANA,OAAM,IAAE7Z,KAAAA,OAAI,IAAG,GAAC,EAAC,EACnE,OAAOxU,OAAOsd,QAAQ,EAAD,KACfe,EACA,CAAE4c,aAAc5c,GAChB,CAAC,GAAC,IAENgQ,OAAAA,GACG7Z,IACFK,QAAO,SAACC,EAAK,GAAe,mBAAdvH,EAAG,KAAEoiD,EAAG,KACvB,OAAO76C,EAAM,GAAH,OAAMvH,EAAG,YAAIoiD,EAAG,IAC5B,GAAGu9B,qBACL,EAEMC,GAA4B,IAAI9kF,IAAI,CACxC,SACA,eACA,SACA,kBACA,kBAGI+kF,GAA2B,IAAI/kF,IAAI,CACvC,wBAKWimB,GAAc,SAAH,GAIlB,IAHJ5oB,EAAG,EAAHA,IAAG,IACH2nF,aAAAA,OAAY,IAAG,EAAAC,GAAa,MAC5BztF,GAAAA,OAAE,IAAG,YAAS,EAER0tF,EAAc,IAAIj9E,YAClBusB,EAAS,IAAIoB,UAAUv4B,GAC7B,IAAKm3B,EAAQ,MAAM,IAAIn9B,MAAM,2BAAD,OAA4BG,IACxD,IAAM2tF,EAAQ,SAACC,EAAUC,GAAkC,IAAvB3oF,EAAY,UAAH,6CAAG,SAAA9C,GAAC,OAAIA,CAAC,EACpDwrF,EAASjvD,iBAAiBkvD,GAAW,SAACC,GACpCJ,EAAYK,cAAc,IAAIC,YAC5BH,EACA,CAAEjvD,OAAQ15B,EAAU4oF,KAExB,GACF,EAgCA,OA/BA9wD,EAAO2B,iBAAiB,QAAQ,SAACsvD,GAC/B5xE,QAAQ4iB,MAAM,QAAD,OAASj/B,EAAE,sBAAsBiuF,EAChD,IACAjxD,EAAO2B,iBAAiB,SAAS,SAACsvD,GAChC5xE,QAAQ4iB,MAAM,QAAD,OAASj/B,EAAE,oBAAoBiuF,EAC9C,IACAjxD,EAAO2B,iBAAiB,SAAS,SAACsvD,GAChC5xE,QAAQ4iB,MAAM,QAAD,OACHj/B,EAAE,2CAAmCiuF,EAAQnuF,MACrDmuF,EAEJ,IAWAN,EAAM3wD,EAAQ,QACd2wD,EAAM3wD,EAAQ,SACd2wD,EAAM3wD,EAAQ,UAAWwwD,GACzBG,EAAM3wD,EAAQ,SAGd0wD,EAAYvuD,MAAQ,WAAQnC,EAAOmC,MAAM,IAAM,uBAAwB,EACvEuuD,EAAYnvD,SAAW,kBAAMvB,EAAOkxD,UAAU,EAEvCR,CACT,EAEaD,GAAgB,SAACQ,GAC5B,IAAQ3tF,EAAS2tF,EAAT3tF,KACR,GAAKA,EAAL,CACA,IAAM6tF,EAAc70D,KAAKoR,MAAMpqC,GACvB6K,EAAmBgjF,EAAnBhjF,MAAO8pC,EAAYk5C,EAAZl5C,QACf,IAAIq4C,GAA0BhkF,IAAI6B,KAAUoiF,GAAyBjkF,IAAI6B,GAiBvE,OADAkR,QAAQC,KAAK,gBAAiB2xE,GACvB,KAfP,GAAc,WAAV9iF,EACF,MAAO,CAAEA,MAAAA,EAAOnL,GAAIi1C,GAEtB,IAAM30C,EAAO20C,EAAU3b,KAAKoR,MAAMuK,GAAW,KAC7C,MAAc,WAAV9pC,GAEiB,kBAAVA,EADF,CAAEA,MAAAA,EAAO8V,QAAQmtE,EAAAA,EAAAA,IAAY9tF,IAGjB,iBAAV6K,EACF,CAAEA,MAAAA,EAAO6W,cAAcqsE,EAAAA,EAAAA,IAAkB/tF,IAC7B,wBAAV6K,EACF,CAAEA,MAAAA,EAAO2zB,YAAY+Q,EAAAA,EAAAA,IAAUvvC,SADjC,CAfQ,CAsBnB,EAEak+B,GAAqBr+B,OAAOmuF,OAAO,CAC9CC,OAAQ,EACRlwD,OAAQ,EACRmwD,MAAO,EACPC,SAAU,EACVC,SAAU,EACVC,iBAAkB,IAmOpB,SApHmB,CACjBhgE,kBAn4BwB,SAACrrB,GACzB,OAAOqZ,GA/tBkB,sCA+tBQ,CAC/BiV,QAASq7D,GAAY3pF,KAEpB3D,MAAK,SAACutB,GACL,OAAIA,EAAStQ,GACJsQ,EAASrQ,OAET,CACLjL,MAAOsb,EAGb,IACCvtB,MAAK,SAACW,GAAI,OAAKA,EAAKsR,MAAQtR,GAAO4sF,EAAAA,EAAAA,IAAU5sF,EAAK,GACvD,EAs3BEytB,cAx+BoB,SAAH,GAWb,IAVJpM,EAAQ,EAARA,SACAnD,EAAW,EAAXA,YAAW,IACXoO,MAAAA,OAAK,IAAG,GAAK,MACbD,MAAAA,OAAK,IAAG,GAAK,MACbjO,OAAAA,OAAM,IAAG,GAAK,MACdwM,OAAAA,OAAM,IAAG,GAAK,MACdlnB,IAAAA,OAAG,IAAG,GAAK,MACXgpB,UAAAA,OAAS,IAAG,GAAK,MACjBF,gBAAAA,OAAe,IAAG,QAAK,MACvB8hE,aAAAA,OAAY,IAAG,KAAE,EAeXC,EAA+B,kBAAbltE,EAClBwZ,EAAS,GAEXt1B,EAhBiB,CACnBwa,OAAQuqE,EACRtrE,QArnBoC,yBAsnBpCkB,IAxnB0C,2BAynB1CP,cAvoBoC,wBAwoBpCM,kBAAmBqqE,EACnBtnF,KAAMwnF,EACNxqE,MAAOwqE,EACP9rF,KAAMgsF,EACN9qE,UA7oByC,qBA8oBzClc,IAAKknF,EACLzqE,UAhnBmC,qBAqnBdkB,GAEN,SAAbA,GAAoC,UAAbA,IACzB9b,EAAMA,EAAI6Y,IAGK,SAAbiD,IACF9b,EAAMA,EAAIqlB,IAGR0B,GACFuO,EAAOz1B,KAAK,CAAC,WAAYknB,IAEvBD,GACFwO,EAAOz1B,KAAK,CAAC,SAAUinB,IAErB3oB,IACF6B,EAAMA,EAAI7B,IAEK,UAAb2d,GACFwZ,EAAOz1B,KAAK,CAAC,aAAc,IAEZ,WAAbic,GACFwZ,EAAOz1B,KAAK,CAAC,SAAS,IAEP,WAAbic,GAAsC,sBAAbA,GAC3BwZ,EAAOz1B,KAAK,CAAC,cAAc,IAEZ,cAAbic,GAAyC,cAAbA,GAC9BwZ,EAAOz1B,KAAK,CAAC,aAAcsnB,IAEL,QAApBF,GACFqO,EAAOz1B,KAAK,CAAC,mBAAoBonB,IAE/B8hE,EAAaltF,OAAS,GACxBktF,EAAavzE,SAAQ,SAAAtV,GACnBo1B,EAAOz1B,KAAK,CAAC,kBAAmBK,GAClC,IAGFo1B,EAAOz1B,KAAK,CAAC,QAAS,KAEtB,IAAMopF,EAAc,IAAI3zD,GAAQ,SAAC4zD,GAAK,gBAAQA,EAAM,GAAE,YAAIA,EAAM,GAAE,IAAIxjF,KAAK,KAG3E,OAFA1F,GAAO,IAAJ,OAAQipF,GAEJnyE,GAAM9W,EAAK,CAAE+rB,QAASq7D,GAAYzuE,KACtC7e,KAAI,mCAAC,WAAOutB,GAAQ,2EACQ,OAArBvb,EAAUub,EAAStQ,GAAE,SAERsQ,EAASrQ,OAAM,OAAxB,GAAJvc,EAAO,EAAH,MAENqR,GAAYrR,EAAK6sB,OAAM,gBAGvB,OAFI/K,GAAa4sE,EAAAA,EAAAA,IAA0B9hE,EAAS0E,QAAQi+B,IAAI,QAAS,CACzEo/B,QAAsB,cAAbttE,GAAyC,kBAAbA,IACrC,kBAEK,CAAErhB,KAAMA,EAAKlB,IAAIyvF,EAAkBR,EAAAA,GAAoBD,EAAAA,IAAchsE,WAAAA,IAAY,OAInD,OAFrC9hB,EAAK6sB,SAAL7sB,EAAK6sB,OAAW,IAChB7sB,EAAK2gB,OAASiM,EAASjM,OACvB3gB,EAAK8sB,WAAaF,EAASE,WAAU,kBAC9B9sB,GAAI,4CAEd,mDAjBI,GAkBT,EA64BE2oB,oBA34B0B,SAAH,GAA4B,IAAtBjpB,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YAC3B3Y,EAAMilF,EAA2B9qF,GAAM,eAC7C,OAAO+sF,GAAgB,CAAElnF,IAAAA,EAAK2Y,YAAAA,IAC3B7e,MAAK,SAACW,GAAI,OAAKA,EAAKlB,IAAIgvF,EAAAA,GAAY,GACzC,EAw4BE/0B,kBAtnCwB,SAAH,GAA4B,IAAtBr5D,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YACzB0wE,EA1d4B,SAAAlvF,GAAE,iCAAwBA,EAAE,YA0d3CmvF,CAA4BnvF,GAC/C,OAAO2c,GAAMuyE,EAAY,CAAEt9D,QAASq7D,GAAYzuE,KAC7C7e,MAAK,SAACW,GACL,GAAIA,EAAKsc,GACP,OAAOtc,EAET,MAAM,IAAIT,MAAM,0BAA2BS,EAC7C,IACCX,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,IAC1Bld,MAAK,gBAAGg9D,EAAS,EAATA,UAAWC,EAAW,EAAXA,YAAW,MAAQ,CACrCD,UAAWA,EAAUv9D,IAAIgvF,EAAAA,IACzBxxB,YAAaA,EAAYx9D,IAAIgvF,EAAAA,IAC9B,GACL,EAymCE5lE,YAvmCkB,SAAH,GAA4B,IAAtBxoB,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YACnB3Y,EAAMglF,EAAoB7qF,GAChC,OAAO2c,GAAM9W,EAAK,CAAE+rB,QAASq7D,GAAYzuE,KACtC7e,MAAK,SAACW,GACL,GAAIA,EAAKsc,GACP,OAAOtc,EAET,MAAM,IAAIT,MAAM,0BAA2BS,EAC7C,IACCX,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,IAC1Bld,MAAK,SAACW,GAAI,OAAK8tF,EAAAA,EAAAA,IAAY9tF,EAAK,GACrC,EA6lCEqoB,kBA3lCwB,SAAH,GAA4B,IAAtB3oB,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YACzB3Y,EAtf2B,SAAA7F,GAAE,iCAAwBA,EAAE,WAsfjDovF,CAA2BpvF,GACvC,OAAO2c,GAAM9W,EAAK,CAAE+rB,QAASq7D,GAAYzuE,KACtC7e,MAAK,SAACW,GACL,GAAIA,EAAKsc,GACP,OAAOtc,EAET,MAAM,IAAIT,MAAM,wBAAyBS,EAC3C,IACCX,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,IAC1Bld,MAAK,SAACW,GAAI,OAAK+uF,EAAAA,EAAAA,IAAY/uF,EAAK,GACrC,EAilCEsoB,mBA/kCyB,SAAH,GAAgC,IAjgBpB5oB,EAigBNihB,EAAM,EAANA,OAAQzC,EAAW,EAAXA,YAC9B3Y,GAlgB4B7F,EAkgBMihB,EAAOjhB,GAlgBX,2BAAwBA,EAAE,aAmgB9D,OAAO+sF,GAAgB,CAAElnF,IAAAA,EAAK2Y,YAAAA,IAC3B7e,MAAK,SAACW,GAEL,OADAA,EAAKwK,UACExK,EAAKlB,KAAI,SAACqK,GAEf,OADAA,EAAK6lF,eAAiBruE,GACfmtE,EAAAA,EAAAA,IAAY3kF,EACrB,GACF,GACJ,EAskCEmuB,aAAAA,GACA23D,cAjvCoB,SAAH,GAA4B,IAAtBvvF,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YAE3B,OAAO,IAAI/e,QAAO,mCAAC,WAAOC,EAASqD,GAAM,sFAEjCuc,EAAU,GACVkwE,GAAO,EAAI,WACRA,EAAM,CAAF,gBACsD,OAAzDvwE,EAAQK,EAAQ5d,OAAS,EAAI,IAAK4d,GAAStf,QAAK4K,EAAS,SAC3CgtB,GAAa,CAAE53B,GAAAA,EAAIif,MAAAA,EAAOT,YAAAA,IAAc,OAAtDnb,EAAQ,EAAH,KACXic,EAAU,IAAOA,EAASjc,GACL,IAAjBA,EAAM3B,SACR8tF,GAAO,GACR,uBAEH9vF,EAAQ4f,GAAQ,kDAEhBvc,EAAO,EAAD,IAAK,0DAEd,qDAhBiB,GAiBpB,EA+tCE80B,eA7tCqB,SAAH,GAAwD,IAAlD73B,EAAE,EAAFA,GAAIif,EAAK,EAALA,MAAO8qD,EAAO,EAAPA,QAAO,IAAEr/C,MAAAA,OAAK,IAAG,KAAE,EAAElM,EAAW,EAAXA,YACpD3Y,EAjYyB,SAAA7F,GAAE,iCAAwBA,EAAE,cAiY/CyvF,CAAuBzvF,GAC3B2U,EAAO,CACXsK,GAAS,UAAJ,OAAcA,GACnB8qD,GAAW,YAAJ,OAAgBA,GACvBr/C,GAAS,SAAJ,OAAaA,GAClB,2BACAtpB,QAAO,SAAA0L,GAAC,OAAIA,CAAC,IAAEvB,KAAK,KAGtB,OAAOoR,GADP9W,GAAO8O,EAAO,IAAMA,EAAO,GACT,CAAEid,QAASq7D,GAAYzuE,KACtC7e,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,IAC1Bld,MAAK,SAACW,GAAI,OAAKA,EAAKlB,IAAI8tF,EAAAA,GAAU,GACvC,EAitCE91D,WA14CiB,SAAH,GAAwC,IAAlCp3B,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YAAgB2qD,GAAO,YACzCtjE,EAxNoB,SAAA7F,GAAE,iCAAwBA,EAAE,WAwN1C0vF,CAAoB1vF,GAC1B0vB,EAAO,CAAC,EAEd,YADwB9kB,IAApBu+D,EAAQ9xC,UAAyB3H,EAAK2H,QAAU8xC,EAAQ9xC,SACrD1a,GAAM9W,EAAK,CAChBmpB,KAAMsK,KAAKC,UAAU7J,GACrBkC,QAAS,EAAF,KACFq7D,GAAYzuE,IAAY,IAC3B,eAAgB,qBAElBwR,OAAQ,SACPrwB,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,GAC/B,EA+3CE8yE,aA73CmB,SAAH,GAA4B,IAAtB3vF,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YACpB3Y,EArOsB,SAAA7F,GAAE,iCAAwBA,EAAE,aAqO5C4vF,CAAsB5vF,GAClC,OAAO2c,GAAM9W,EAAK,CAChB+rB,QAASq7D,GAAYzuE,GACrBwR,OAAQ,SACPrwB,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,GAC/B,EAw3CEsM,aA/2CmB,SAAH,GAA4B,IAAtBnpB,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YAC1B,OAAOuuE,GAAgB,CAAElnF,IAAKimF,GAAwB9rF,GAAKwe,YAAAA,EAAawR,OAAQ,SAC7ErwB,MAAK,SAACW,GAAI,OAAK8tF,EAAAA,EAAAA,IAAY9tF,EAAK,GACrC,EA62CE+oB,eA32CqB,SAAH,GAA4B,IAAtBrpB,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YAC5B,OAAOuuE,GAAgB,CAAElnF,IAAKkmF,GAA0B/rF,GAAKwe,YAAAA,EAAawR,OAAQ,SAC/ErwB,MAAK,SAACW,GAAI,OAAK8tF,EAAAA,EAAAA,IAAY9tF,EAAK,GACrC,EAy2CEgpB,iBAv2CuB,SAAH,GAA4B,IAAtBtpB,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YAC9B,OAAOuuE,GAAgB,CAAElnF,IAAKmmF,GAA2BhsF,GAAKwe,YAAAA,EAAawR,OAAQ,SAChFrwB,MAAK,SAACW,GAAI,OAAK8tF,EAAAA,EAAAA,IAAY9tF,EAAK,GACrC,EAq2CEipB,mBAn2CyB,SAAH,GAA4B,IAAtBvpB,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YAChC,OAAOuuE,GAAgB,CAAElnF,IAAKomF,GAA6BjsF,GAAKwe,YAAAA,EAAawR,OAAQ,SAClFrwB,MAAK,SAACW,GAAI,OAAK8tF,EAAAA,EAAAA,IAAY9tF,EAAK,GACrC,EAi2CE2xB,UA/1CgB,SAAH,GAA4B,IAAtBjyB,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YACvB,OAAO7B,GA/OuB,SAAA3c,GAAE,iCAAwBA,EAAE,UA+O7C6vF,CAAwB7vF,GAAK,CACxC4xB,QAASq7D,GAAYzuE,GACrBwR,OAAQ,SACPrwB,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,GAC/B,EA21CEsV,YAz1CkB,SAAH,GAA4B,IAAtBnyB,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YACzB,OAAO7B,GArPyB,SAAA3c,GAAE,iCAAwBA,EAAE,YAqP/C8vF,CAA0B9vF,GAAK,CAC1C4xB,QAASq7D,GAAYzuE,GACrBwR,OAAQ,SACPrwB,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,GAC/B,EAq1CE+Z,wBAn1C8B,SAAH,GAA4B,IAAtB52B,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YACrC,OAAO7B,GAzPmC,SAAA3c,GAAE,iCAAwBA,EAAE,0BAyPzD+vF,CAAoC/vF,GAAK,CACpD4xB,QAASq7D,GAAYzuE,GACrBwR,OAAQ,SACPrwB,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,GAC/B,EA+0CEka,aA70CmB,SAAH,GAAqC,IAA/B/2B,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YAAawY,EAAO,EAAPA,QACvC,OAAO+1D,GAAgB,CACrBlnF,IAAK0lF,GAAuBvrF,GAC5Bwe,YAAAA,EACAy2B,QAAS,CACPje,QAAAA,GAEFhH,OAAQ,QAEZ,EAq0CEsG,UAAAA,GACAC,gBA9yCsB,SAAH,GAA8B,IAAxBx0B,EAAI,EAAJA,KAAMyc,EAAW,EAAXA,YAC/B,OAAOuuE,GAAgB,CACrBlnF,IAjT6B,0BAkT7B2Y,YAAAA,EACA2c,OAAQ,CAAEyjB,KAAM78C,KAEfpC,MAAK,SAAAW,GAAI,OAAIA,EAAKN,EAAE,IAAC,OACf,SAAA4R,GACL,GAAIA,GAA8B,MAArBA,EAAMihC,WAGjB,OAAO9wC,EAEP,MAAM6P,CAEV,IACCjS,MAAK,SAAAK,GAAE,OAAIs2B,GAAU,CAAEt2B,GAAAA,EAAIwe,YAAAA,GAAc,GAC9C,EA8xCEgY,sBA5xC4B,SAAH,GAA4B,IAAtBx2B,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YAC7B3Y,EAAM,GAAH,OAlU6B,iCAkUQ,gBAAQ7F,GACtD,OAAO2c,GAAM9W,EAAK,CAAE+rB,QAASq7D,GAAYzuE,KACtC7e,MAAK,SAACutB,GACL,OAAO,IAAIztB,SAAQ,SAACC,EAASqD,GAAM,OAAKmqB,EAASrQ,OAC9Cld,MAAK,SAACkd,GACL,OAAKqQ,EAAStQ,GAGPld,EAAQmd,GAFN9Z,EAAO,IAAI4mF,EAAgBz8D,EAASjM,OAAQpE,EAAM,CAAEhX,IAAAA,GAAOqnB,GAGtE,GAAE,GACN,GACJ,EAixCE9J,SA14Be,SAAH,GAA4B,IAAtBpjB,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YACtB,OAAOuuE,GAAgB,CAAElnF,IAAK2kF,EAAsBxqF,GAAKgwB,OAAQ,OAAQxR,YAAAA,IACtE7e,MAAK,SAACW,GAAI,OAAK8tF,EAAAA,EAAAA,IAAY9tF,EAAK,GACrC,EAw4BE0oB,WAt4BiB,SAAH,GAA4B,IAAtBhpB,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YACxB,OAAOuuE,GAAgB,CAAElnF,IAAK4kF,EAAwBzqF,GAAKgwB,OAAQ,OAAQxR,YAAAA,IACxE7e,MAAK,SAACW,GAAI,OAAK8tF,EAAAA,EAAAA,IAAY9tF,EAAK,GACrC,EAo4BE0iB,QAl4Bc,SAAH,GAA4B,IAAtBhjB,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YACrB,OAAOuuE,GAAgB,CAAElnF,IAAK6kF,EAAqB1qF,GAAKgwB,OAAQ,OAAQxR,YAAAA,IACrE7e,MAAK,SAACW,GAAI,OAAK8tF,EAAAA,EAAAA,IAAY9tF,EAAK,GACrC,EAg4BEkpB,UA93BgB,SAAH,GAA4B,IAAtBxpB,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YACvB,OAAOuuE,GAAgB,CAAElnF,IAAK8kF,EAAuB3qF,GAAKgwB,OAAQ,OAAQxR,YAAAA,IACvE7e,MAAK,SAACW,GAAI,OAAK8tF,EAAAA,EAAAA,IAAY9tF,EAAK,GACrC,EA43BEopB,eA13BqB,SAAH,GAA4B,IAAtB1pB,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YAC5B,OAAOuuE,GAAgB,CACrBlnF,IAAK2lF,GAA6BxrF,GAClC4xB,QAASq7D,GAAYzuE,GACrBwR,OAAQ,QAEZ,EAq3BEpG,iBAn3BuB,SAAH,GAA4B,IAAtB5pB,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YAC9B,OAAOuuE,GAAgB,CACrBlnF,IAAK4lF,GAA+BzrF,GACpC4xB,QAASq7D,GAAYzuE,GACrBwR,OAAQ,QAEZ,EA82BEqgC,WA52BiB,SAAH,GAYV,IAXJ7xC,EAAW,EAAXA,YACAyC,EAAM,EAANA,OACA+uC,EAAW,EAAXA,YACAntC,EAAU,EAAVA,WACAotC,EAAS,EAATA,UACA9nC,EAAI,EAAJA,KAAI,IACJ6nE,SAAAA,OAAQ,IAAG,KAAE,EACbC,EAAiB,EAAjBA,kBACA//B,EAAW,EAAXA,YACA5L,EAAO,EAAPA,QACAgmB,EAAc,EAAdA,eAEM56C,EAAO,IAAIC,SACXugE,EAAc/nE,EAAKghD,SAAW,GAWpC,GATAz5C,EAAKE,OAAO,SAAU3O,GACtByO,EAAKE,OAAO,SAAU,cAClBogC,GAAatgC,EAAKE,OAAO,eAAgBogC,GACzCntC,GAAY6M,EAAKE,OAAO,aAAc/M,GACtCotC,GAAWvgC,EAAKE,OAAO,YAAaqgC,GACpCC,GAAaxgC,EAAKE,OAAO,eAAgBsgC,GAC7C8/B,EAAS30E,SAAQ,SAAAy0C,GACfpgC,EAAKE,OAAO,cAAekgC,EAC7B,IACIogC,EAAY1lF,MAAK,SAAAyI,GAAM,MAAe,KAAXA,CAAa,IAAG,CAC7C,IAAMk9E,EAAiB,CACrBC,WAAYjoE,EAAKkK,UACjBg+D,SAAUloE,EAAKkoE,UAEjBlwF,OAAOD,KAAKiwF,GAAgB90E,SAAQ,SAAA3N,GAClCgiB,EAAKE,OAAO,QAAD,OAASliB,EAAG,KAAKyiF,EAAeziF,GAC7C,IAEAwiF,EAAY70E,SAAQ,SAAApI,GAClByc,EAAKE,OAAO,kBAAmB3c,EACjC,GACF,CACIg9E,GACFvgE,EAAKE,OAAO,iBAAkBqgE,GAE5B3rC,GACF50B,EAAKE,OAAO,UAAW,QAGzB,IAAM0gE,EAAcrD,GAAYzuE,GAKhC,OAJI8rD,IACFgmB,EAAY,mBAAqBhmB,GAG5B3tD,GAtxBwB,mBAsxBQ,CACrCqS,KAAMU,EACNM,OAAQ,OACR4B,QAAS0+D,IAER3wF,MAAK,SAACutB,GACL,OAAOA,EAASrQ,MAClB,IACCld,MAAK,SAACW,GAAI,OAAKA,EAAKsR,MAAQtR,GAAO8tF,EAAAA,EAAAA,IAAY9tF,EAAK,GACzD,EAkzBEovD,WAhzBiB,SAAH,GASV,IARJ1vD,EAAE,EAAFA,GACAwe,EAAW,EAAXA,YACAyC,EAAM,EAANA,OACA+uC,EAAW,EAAXA,YACAC,EAAS,EAATA,UACA9nC,EAAI,EAAJA,KAAI,IACJ6nE,SAAAA,OAAQ,IAAG,KAAE,EACb9/B,EAAW,EAAXA,YAEMxgC,EAAO,IAAIC,SACXugE,EAAc/nE,EAAKghD,SAAW,GAUpC,GARAz5C,EAAKE,OAAO,SAAU3O,GAClB+uC,GAAatgC,EAAKE,OAAO,eAAgBogC,GACzCC,GAAWvgC,EAAKE,OAAO,YAAaqgC,GACpCC,GAAaxgC,EAAKE,OAAO,eAAgBsgC,GAC7C8/B,EAAS30E,SAAQ,SAAAy0C,GACfpgC,EAAKE,OAAO,cAAekgC,EAC7B,IAEIogC,EAAY1lF,MAAK,SAAAyI,GAAM,MAAe,KAAXA,CAAa,IAAG,CAC7C,IAAMk9E,EAAiB,CACrBC,WAAYjoE,EAAKkK,UACjBg+D,SAAUloE,EAAKkoE,UAEjBlwF,OAAOD,KAAKiwF,GAAgB90E,SAAQ,SAAA3N,GAClCgiB,EAAKE,OAAO,QAAD,OAASliB,EAAG,KAAKyiF,EAAeziF,GAC7C,IAEAwiF,EAAY70E,SAAQ,SAAApI,GAClByc,EAAKE,OAAO,kBAAmB3c,EACjC,GACF,CAEA,IAAMs9E,EAAatD,GAAYzuE,GAE/B,OAAO7B,GAAMkuE,EAAoB7qF,GAAK,CACpCgvB,KAAMU,EACNM,OAAQ,MACR4B,QAAS2+D,IAER5wF,MAAK,SAACutB,GACL,OAAOA,EAASrQ,MAClB,IACCld,MAAK,SAACW,GAAI,OAAKA,EAAKsR,MAAQtR,GAAO8tF,EAAAA,EAAAA,IAAY9tF,EAAK,GACzD,EAmwBEuoB,aAjwBmB,SAAH,GAA4B,IAAtB7oB,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YAC1B,OAAO7B,GAv3BmB,SAAA3c,GAAE,iCAAwBA,EAAE,CAu3BzCwwF,CAAoBxwF,GAAK,CACpC4xB,QAASq7D,GAAYzuE,GACrBwR,OAAQ,UAEZ,EA6vBEygE,YA3vBkB,SAAH,GAAkC,IAA5BC,EAAQ,EAARA,SAAUlyE,EAAW,EAAXA,YAC/B,OAAO7B,GAAM+uE,GAA2B,CACtC18D,KAAM0hE,EACN1gE,OAAQ,OACR4B,QAASq7D,GAAYzuE,KAEpB7e,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,IAC1Bld,MAAK,SAACW,GAAI,OAAKqwF,EAAAA,EAAAA,IAAgBrwF,EAAK,GACzC,EAovBEswF,oBAlvB0B,SAAH,GAAyC,IAAnC5wF,EAAE,EAAFA,GAAIylD,EAAW,EAAXA,YAAajnC,EAAW,EAAXA,YAC9C,OAAOuuE,GAAgB,CACrBlnF,IAAK,GAAF,OAAK6lF,GAAyB,YAAI1rF,GACrCgwB,OAAQ,MACR4B,QAASq7D,GAAYzuE,GACrBy2B,QAAS,CACPwQ,YAAAA,KAED9lD,MAAK,SAACW,GAAI,OAAKqwF,EAAAA,EAAAA,IAAgBrwF,EAAK,GACzC,EA0uBE22B,WArkBiB,SAAH,GAAwB,IAAlBzY,EAAW,EAAXA,YACpB,OAAOuuE,GAAgB,CAAElnF,IA5hCK,iBA4hCyB2Y,YAAAA,IACpD7e,MAAK,SAAC0D,GAAK,OAAKA,EAAMjE,IAAI8tF,EAAAA,GAAU,GACzC,EAmkBE96D,SAjkBe,SAAH,GAAuC,IAAjCpyB,EAAE,EAAFA,GAAIqyB,EAAS,EAATA,UAAW7T,EAAW,EAAXA,YAC3By2B,EAAU,CAAC,EAIjB,OAHI5iB,IACF4iB,EAAQm7C,WAAa/9D,GAEhB06D,GAAgB,CAAElnF,IAAKslF,EAAuBnrF,GAAKwe,YAAAA,EAAawR,OAAQ,OAAQilB,QAAAA,GACzF,EA4jBExiB,WA1jBiB,SAAH,GAA4B,IAAtBzyB,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YACxB,OAAOuuE,GAAgB,CAAElnF,IAAKulF,EAAyBprF,GAAKwe,YAAAA,EAAawR,OAAQ,QACnF,EAyjBE8H,cAvjBoB,SAAH,GAA4B,IAAtB93B,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YAC3B,OAAOuuE,GAAgB,CAAElnF,IAAKwlF,GAAwBrrF,GAAKwe,YAAAA,EAAawR,OAAQ,QAClF,EAsjBE+H,gBApjBsB,SAAH,GAA4B,IAAtB/3B,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YAC7B,OAAOuuE,GAAgB,CAAElnF,IAAKylF,GAA0BtrF,GAAKwe,YAAAA,EAAawR,OAAQ,QACpF,EAmjBE0G,YAjjBkB,SAAH,GAAwB,IAAlBlY,EAAW,EAAXA,YACrB,OAAOuuE,GAAgB,CAAElnF,IAtjCM,kBAsjCyB2Y,YAAAA,IACrD7e,MAAK,SAAC0D,GAAK,OAAKA,EAAMjE,IAAI8tF,EAAAA,GAAU,GACzC,EA+iBE3jD,iBA1hBuB,SAAH,GAAwB,IAAlB/qB,EAAW,EAAXA,YAG1B,OAAO7B,GAFK,yBAEM,CAChBiV,QAASq7D,GAAYzuE,KACpB7e,MAAK,SAACW,GACP,GAAIA,EAAKsc,GACP,OAAOtc,EAAKuc,OAEd,MAAM,IAAIhd,MAAM,6BAA8BS,EAChD,GACF,EAghBEkpC,iBA9gBuB,SAAH,GAA4B,IAAtBxpC,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YACxB3Y,EAAM,qBAAH,OAAwB7F,GAEjC,OAAO2c,GAAM9W,EAAK,CAChB+rB,QAASq7D,GAAYzuE,GACrBwR,OAAQ,UAEZ,EAwgBE6C,QAvmCc,SAAH,GAAmC,IAA7B7uB,EAAG,EAAHA,IAAKwa,EAAW,EAAXA,YAEhBkR,EAAO,CACX6xD,UAAW,CAH0B,EAAJj+E,KACXC,aAGtB2X,KAAM,CAAClX,IAGH4tB,EAAUq7D,GAAYzuE,GAG5B,OAFAoT,EAAQ,gBAAkB,mBAEnBjV,GAAMytE,EAAc,CACzBp6D,OAAQ,MACR4B,QAAAA,EACA5C,KAAMsK,KAAKC,UAAU7J,IAEzB,EAylCEsD,UAvlCgB,SAAH,GAAmC,IAA7BhvB,EAAG,EAAHA,IAAKwa,EAAW,EAAXA,YAElBwQ,EAAO,CACXuyD,UAAW,CAH4B,EAAJj+E,KACbC,aAGtB2X,KAAM,CAAClX,IAGH4tB,EAAUq7D,GAAYzuE,GAG5B,OAFAoT,EAAQ,gBAAkB,mBAEnBjV,GAAMytE,EAAc,CACzBp6D,OAAQ,SACR4B,QAAAA,EACA5C,KAAMsK,KAAKC,UAAUvK,IAEzB,EAykCE6hE,WA7hCiB,SAAH,GAA8B,IAAxBryE,EAAW,EAAXA,YACd8rE,EAD+B,EAAJhnF,KACTC,YAClBquB,EAAUq7D,GAAYzuE,GAE5B,OAAO7B,GAAM,GAAD,OAhoBU,2BAgoBS,qBAAa2tE,GAAc,CACxDt6D,OAAQ,SACR4B,QAAAA,GAEJ,EAshCEk/D,SAxkCe,SAAH,GAAqC,IAA/B59D,EAAK,EAALA,MAAO1U,EAAW,EAAXA,YACnB8rE,EADoC,EAAJhnF,KACdC,YAExB,OAAOoZ,GAAM0tE,EAAqBC,EAAYp3D,GAAQ,CACpDlD,OAAQ,OACR4B,QAASq7D,GAAYzuE,GACrBwQ,KAAM,CAAC,GAEX,EAikCE+hE,YA/jCkB,SAAH,GAAqC,IAA/B79D,EAAK,EAALA,MAAO1U,EAAW,EAAXA,YACtB8rE,EADuC,EAAJhnF,KACjBC,YAExB,OAAOoZ,GAAM0tE,EAAqBC,EAAYp3D,GAAQ,CACpDlD,OAAQ,SACR4B,QAASq7D,GAAYzuE,GACrBwQ,KAAM,CAAC,GAEX,EAwjCEiJ,aAtjCmB,SAAH,GAAyD,IAAnDzZ,EAAW,EAAXA,YAAkCxC,EAAQ,EAA7B1Y,KAAQC,YAC3C,OAAOwpF,GAAgB,CACrBlnF,IA1mBsB,oCA2mBtBmqB,OAAQ,QACRxR,YAAAA,EACAy2B,QAAS,CACPssC,UAAW,CAACvlE,MAEbrc,MAAK,SAAAutB,GAAQ,OAAI,IAAIA,EAAU,UAAU,GAC9C,EA8iCEgL,eA5iCqB,SAAH,GAAyD,IAAnD1Z,EAAW,EAAXA,YAAkCxC,EAAQ,EAA7B1Y,KAAQC,YAC7C,OAAOwpF,GAAgB,CACrBlnF,IApnBwB,sCAqnBxBmqB,OAAQ,QACRxR,YAAAA,EACAy2B,QAAS,CACPssC,UAAW,CAACvlE,MAEbrc,MAAK,SAAAutB,GAAQ,OAAI,IAAIA,EAAU,UAAU,GAC9C,EAoiCEgO,SAn9Ce,SAAH,GAAgC,IAA1BC,EAAM,EAANA,OAAQ3c,EAAW,EAAXA,YAClBxC,EAAsBmf,EAAtBnf,SAAa7L,GAAI,OAAKgrB,EAAM,GACpC,OAAOxe,GAhMyB,mBAgMQ,CACtCqT,OAAQ,OACR4B,QAAS,EAAF,KACFq7D,GAAYzuE,IAAY,IAC3B,eAAgB,qBAElBwQ,KAAMsK,KAAKC,UAAU,EAAD,CAClBvd,SAAAA,EACA5L,OAAQ,QACR4gF,WAAW,GACR7gF,MAGJxQ,MAAK,SAACutB,GACL,OAAIA,EAAStQ,GACJsQ,EAASrQ,OAETqQ,EAASrQ,OAAOld,MAAK,SAACiS,GAAY,MAAM,IAAIm4E,EAAkBn4E,EAAO,GAEhF,GACJ,EA87CEypB,WA57CiB,WAAH,OAAS1e,GAAM,wBAAwBhd,MAAK,SAAAsxF,GAAI,OAAIA,EAAKp0E,MAAM,GAAC,EA67C9Eq0E,oBApgD0B,SAAH,GAA4F,IAAtF1yE,EAAW,EAAXA,YAAW,IAAEmgC,OAAAA,OAAM,IAAG,OAAI,MAAEwyC,WAAAA,OAAU,IAAG,OAAI,MAAEnP,OAAAA,OAAM,IAAG,OAAI,MAAErsE,WAAAA,OAAU,IAAG,OAAI,EACtG+Z,EAAO,IAAIC,SAUjB,OATe,OAAXgvB,IACiB,OAAfwyC,EACFzhE,EAAKE,OAAO,SAAU+uB,EAAQwyC,GAE9BzhE,EAAKE,OAAO,SAAU+uB,IAGX,OAAXqjC,GAAiBtyD,EAAKE,OAAO,SAAUoyD,GACxB,OAAfrsE,GAAqB+Z,EAAKE,OAAO,2BAA4Bja,GAC1DgH,GAAMkvE,GAA6B,CACxCj6D,QAASq7D,GAAYzuE,GACrBwR,OAAQ,QACRhB,KAAMU,IAEL/vB,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,IAC1Bld,MAAK,SAACW,GACL,GAAIA,EAAKsR,MACP,MAAM,IAAI/R,MAAMS,EAAKsR,OAEvB,OAAOs7E,EAAAA,EAAAA,IAAU5sF,EACnB,GACJ,EA8+CE6lC,cA5+CoB,SAAH,GAAgC,IAA1B3nB,EAAW,EAAXA,YAAa2c,EAAM,EAANA,OACpC,OAAO4xD,GAAgB,CACrBlnF,IAAKgmF,GACL77D,OAAQ,QACRilB,QAAS9Z,EACT3c,YAAAA,IACC7e,MAAK,SAACW,GAAI,OAAK4sF,EAAAA,EAAAA,IAAU5sF,EAAK,GACnC,EAs+CE8wF,YA3vBkB,SAAH,GAA8B,IAAxBluB,EAAI,EAAJA,KAAM1kD,EAAW,EAAXA,YACrBkyE,EAAW,IAAI/gE,SAErB,OADA+gE,EAAS9gE,OAAO,OAAQszC,GACjBvmD,GAt7BgB,4BAs7BQ,CAC7BqS,KAAM0hE,EACN1gE,OAAQ,OACR4B,QAASq7D,GAAYzuE,KAEpB7e,MAAK,SAACutB,GAAQ,OAAKA,EAAStQ,EAAE,GACnC,EAmvBEy0E,aAjvBmB,SAAH,GAA8B,IAAxBnuB,EAAI,EAAJA,KAAM1kD,EAAW,EAAXA,YACtBkyE,EAAW,IAAI/gE,SAErB,OADA+gE,EAAS9gE,OAAO,OAAQszC,GACjBvmD,GAh8BiB,6BAg8BQ,CAC9BqS,KAAM0hE,EACN1gE,OAAQ,OACR4B,QAASq7D,GAAYzuE,KAEpB7e,MAAK,SAACutB,GAAQ,OAAKA,EAAStQ,EAAE,GACnC,EAyuBE00E,cAvuBoB,SAAH,GAA8B,IAAxBpuB,EAAI,EAAJA,KAAM1kD,EAAW,EAAXA,YACvBkyE,EAAW,IAAI/gE,SAErB,OADA+gE,EAAS9gE,OAAO,OAAQszC,GACjBvmD,GA18BiB,6BA08BQ,CAC9BqS,KAAM0hE,EACN1gE,OAAQ,OACR4B,QAASq7D,GAAYzuE,KAEpB7e,MAAK,SAACutB,GAAQ,OAAKA,EAAStQ,EAAE,GACnC,EA+tBE20E,cA7tBoB,SAAH,GAAkC,IAA5B/yE,EAAW,EAAXA,YAAawS,EAAQ,EAARA,SAC9BtB,EAAO,IAAIC,SAIjB,OAFAD,EAAKE,OAAO,WAAYoB,GAEjBrU,GAt9BkB,8BAs9BQ,CAC/BqS,KAAMU,EACNM,OAAQ,OACR4B,QAASq7D,GAAYzuE,KAEpB7e,MAAK,SAACutB,GAAQ,OAAKA,EAASrQ,MAAM,GACvC,EAmtBE20E,YAjtBkB,SAAH,GAAyC,IAAnChzE,EAAW,EAAXA,YAAasyD,EAAK,EAALA,MAAO9/C,EAAQ,EAARA,SACnCtB,EAAO,IAAIC,SAKjB,OAHAD,EAAKE,OAAO,QAASkhD,GACrBphD,EAAKE,OAAO,WAAYoB,GAEjBrU,GAn+BgB,4BAm+BQ,CAC7BqS,KAAMU,EACNM,OAAQ,OACR4B,QAASq7D,GAAYzuE,KAEpB7e,MAAK,SAACutB,GAAQ,OAAKA,EAASrQ,MAAM,GACvC,EAssBE40E,YApsBkB,SAAH,GAAiD,IAA3CjzE,EAAW,EAAXA,YAAawS,EAAQ,EAARA,SAAU0gE,EAAa,EAAbA,cACtChiE,EAAO,IAAIC,SAKjB,OAHAD,EAAKE,OAAO,WAAYoB,GACxBtB,EAAKE,OAAO,iBAAkB8hE,GAEvB/0E,GA/+BgB,4BA++BQ,CAC7BqS,KAAMU,EACNM,OAAQ,OACR4B,QAASq7D,GAAYzuE,KAEpB7e,MAAK,SAACutB,GAAQ,OAAKA,EAASrQ,MAAM,GACvC,EAyrBE80E,SAvrBe,SAAH,GAA+B,IAAzBnzE,EAAW,EAAXA,YAAaozE,EAAK,EAALA,MAC/B,OAAO7E,GAAgB,CACrBlnF,IAAKskF,EACLn6D,OAAQ,MACRxR,YAAAA,EACAy2B,QAAS,CAAE28C,MAAAA,IAEf,EAirBEC,YA/qBkB,SAAH,GAA+B,IAAzBrzE,EAAW,EAAXA,YAAaozE,EAAK,EAALA,MAClC,OAAO7E,GAAgB,CACrBlnF,IAAKskF,EACLn6D,OAAQ,SACRxR,YAAAA,EACAy2B,QAAS,CAAE28C,MAAAA,IAEf,EAyqBEE,YAvqBkB,SAAH,GAAwB,IAAlBtzE,EAAW,EAAXA,YACrB,OAAOuuE,GAAgB,CACrBlnF,IAAKskF,EACLn6D,OAAQ,MACRxR,YAAAA,EACA2c,OAAQ,CACN42D,eAAgB,IAAIjiE,MAAQmd,YAGlC,EA+pBE+kD,eA7pBqB,SAAH,GAAwE,IAAlExzE,EAAW,EAAXA,YAAawS,EAAQ,EAARA,SAAUihE,EAAW,EAAXA,YAAaC,EAAuB,EAAvBA,wBACtDxiE,EAAO,IAAIC,SAMjB,OAJAD,EAAKE,OAAO,WAAYoB,GACxBtB,EAAKE,OAAO,eAAgBqiE,GAC5BviE,EAAKE,OAAO,4BAA6BsiE,GAElCv1E,GA5hCmB,+BA4hCQ,CAChCqS,KAAMU,EACNM,OAAQ,OACR4B,QAASq7D,GAAYzuE,KAEpB7e,MAAK,SAACutB,GAAQ,OAAKA,EAASrQ,MAAM,GACvC,EAipBEs1E,YA/oBkB,SAAH,GAAwB,IAAlB3zE,EAAW,EAAXA,YACrB,OAAO7B,GAzhCgB,4BAyhCQ,CAC7BiV,QAASq7D,GAAYzuE,GACrBwR,OAAQ,QACPrwB,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,GAC/B,EA2oBEu1E,cAzoBoB,SAAH,GAAkC,IAA5B5zE,EAAW,EAAXA,YAAawS,EAAQ,EAARA,SAC9BtB,EAAO,IAAIC,SAIjB,OAFAD,EAAKE,OAAO,WAAYoB,GAEjBrU,GA/hCmB,iCA+hCQ,CAChCqS,KAAMU,EACNM,OAAQ,SACR4B,QAASq7D,GAAYzuE,KAEpB7e,MAAK,SAACutB,GAAQ,OAAKA,EAASrQ,MAAM,GACvC,EA+nBEw1E,uBA3mB6B,SAAH,GAAwB,IAAlB7zE,EAAW,EAAXA,YAChC,OAAO7B,GA9jCoB,yCA8jCQ,CACjCiV,QAASq7D,GAAYzuE,GACrBwR,OAAQ,QACPrwB,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,GAC/B,EAumBEy1E,YAlnBkB,SAAH,GAAwB,IAAlB9zE,EAAW,EAAXA,YACrB,OAAO7B,GAtjCiB,uCAsjCQ,CAC9BiV,QAASq7D,GAAYzuE,GACrBwR,OAAQ,QACPrwB,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,GAC/B,EA8mBE01E,cA/nBoB,SAAH,GAAyC,IAAnC/zE,EAAW,EAAXA,YAAawS,EAAQ,EAARA,SAAUK,EAAK,EAALA,MACxC3B,EAAO,IAAIC,SAKjB,OAHAD,EAAKE,OAAO,WAAYoB,GACxBtB,EAAKE,OAAO,OAAQyB,GAEb1U,GA9iCmB,yCA8iCQ,CAChCqS,KAAMU,EACNkC,QAASq7D,GAAYzuE,GACrBwR,OAAQ,SACPrwB,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,GAC/B,EAqnBE21E,UAzkBgB,SAAH,GAAwB,IAAlBh0E,EAAW,EAAXA,YACnB,OAAOuuE,GAAgB,CACrBlnF,IAAK6mF,GACL18D,OAAQ,OACRxR,YAAAA,GAEJ,EAokBEi0E,YAlkBkB,SAAH,GAAwB,IAAlBj0E,EAAW,EAAXA,YACrB,OAAOuuE,GAAgB,CACrBlnF,IAAK6mF,GACL18D,OAAQ,MACRxR,YAAAA,EACA2c,OAAQ,CACN42D,eAAgB,IAAIjiE,MAAQmd,YAGlC,EA0jBEylD,oBA3wC0B,SAAH,GAAwB,IAAlBl0E,EAAW,EAAXA,YAE7B,OAAO7B,GAhZ4B,0BAgZjB,CAAEiV,QAASq7D,GAAYzuE,KACtC7e,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,IAC1Bld,MAAK,SAACW,GAAI,OAAKA,EAAKlB,IAAI8tF,EAAAA,GAAU,GACvC,EAuwCEyF,WArwCiB,SAAH,GAAwB,IAAlBn0E,EAAW,EAAXA,YAEpB,OAAO7B,GADKi2E,gBACM,CAAEhhE,QAASq7D,GAAYzuE,KACtC7e,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,GAC/B,EAkwCEgP,WAhwCiB,SAAH,GAA+B,IAAzB1Y,EAAK,EAALA,MAAOqL,EAAW,EAAXA,YAErBoT,EAAUq7D,GAAYzuE,GAG5B,OAFAoT,EAAQ,gBAAkB,mBAEnBjV,GAJKi2E,gBAIM,CAChBhhE,QAAAA,EACA5B,OAAQ,OACRhB,KAAMsK,KAAKC,UAAU,CAAEpmB,MAAAA,MACtBxT,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,GAC/B,EAuvCEkP,QArvCc,SAAH,GAAgC,IAA1Bb,EAAM,EAANA,OAAQ1M,EAAW,EAAXA,YACnB3Y,EAAMklF,EAAkB7/D,GAC9B,OAAOvO,GAAM9W,EAAK,CAAE+rB,QAASq7D,GAAYzuE,KACtC7e,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,GAC/B,EAkvCEqP,WAhvCiB,SAAH,GAAuC,IAAjChB,EAAM,EAANA,OAAQ/X,EAAK,EAALA,MAAOqL,EAAW,EAAXA,YAC7B3Y,EAAMklF,EAAkB7/D,GACxB0G,EAAUq7D,GAAYzuE,GAG5B,OAFAoT,EAAQ,gBAAkB,mBAEnBjV,GAAM9W,EAAK,CAChB+rB,QAAAA,EACA5B,OAAQ,MACRhB,KAAMsK,KAAKC,UAAU,CAAEpmB,MAAAA,KAE3B,EAuuCE8Y,gBAruCsB,SAAH,GAAgC,IAA1Bf,EAAM,EAANA,OAAQ1M,EAAW,EAAXA,YAC3B3Y,EAAMolF,EAA2B//D,GACvC,OAAOvO,GAAM9W,EAAK,CAAE+rB,QAASq7D,GAAYzuE,KACtC7e,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,IAC1Bld,MAAK,SAACW,GAAI,OAAKA,EAAKlB,KAAI,YAAK,SAAFY,EAAW,GAAC,GAC5C,EAiuCEssB,kBA/tCwB,SAAH,GAA4C,IAAtCpB,EAAM,EAANA,OAAQE,EAAU,EAAVA,WAAY5M,EAAW,EAAXA,YACzC3Y,EAAMolF,EAA2B//D,GACjC0G,EAAUq7D,GAAYzuE,GAG5B,OAFAoT,EAAQ,gBAAkB,mBAEnBjV,GAAM9W,EAAK,CAChB+rB,QAAAA,EACA5B,OAAQ,OACRhB,KAAMsK,KAAKC,UAAU,CAAEs5D,YAAaznE,KAExC,EAstCEmB,uBAptC6B,SAAH,GAA4C,IAAtCrB,EAAM,EAANA,OAAQE,EAAU,EAAVA,WAAY5M,EAAW,EAAXA,YAC9C3Y,EAAMolF,EAA2B//D,GACjC0G,EAAUq7D,GAAYzuE,GAG5B,OAFAoT,EAAQ,gBAAkB,mBAEnBjV,GAAM9W,EAAK,CAChB+rB,QAAAA,EACA5B,OAAQ,SACRhB,KAAMsK,KAAKC,UAAU,CAAEs5D,YAAaznE,KAExC,EA2sCEO,WAzsCiB,SAAH,GAAgC,IAA1BT,EAAM,EAANA,OAAQ1M,EAAW,EAAXA,YACtB3Y,EAAMklF,EAAkB7/D,GAC9B,OAAOvO,GAAM9W,EAAK,CAChBmqB,OAAQ,SACR4B,QAASq7D,GAAYzuE,IAEzB,EAosCEk3D,YA93CkB,SAAH,GAA4B,IAAtB11E,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YACnB3Y,EApS0B,SAAA7F,GAAE,wCAA+BA,EAAE,cAoSvD8yF,CAA0B9yF,GACtC,OAAO2c,GAAM9W,EAAK,CAChB+rB,QAASq7D,GAAYzuE,GACrBwR,OAAQ,SACPrwB,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,GAC/B,EAy3CEi5D,SAv3Ce,SAAH,GAA4B,IAAtB91E,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YAChB3Y,EA3SuB,SAAA7F,GAAE,wCAA+BA,EAAE,WA2SpD+yF,CAAuB/yF,GACnC,OAAO2c,GAAM9W,EAAK,CAChB+rB,QAASq7D,GAAYzuE,GACrBwR,OAAQ,SACPrwB,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,GAC/B,EAk3CEpa,YA7iBkB,SAAH,GAAwB,IAAlB+b,EAAW,EAAXA,YACrB,OAAO7B,GAjpCe,sBAipCQ,CAC5BiV,QAASq7D,GAAYzuE,KACpB7e,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,GAC/B,EA0iBE2J,wBAxiB8B,SAAH,GAA4C,IAAtCxmB,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YAAW,IAAEqL,OAAAA,OAAM,IAAG,GAAK,EAC1DmF,EAAO,IAAIW,SAQjB,OANI9F,EACFmF,EAAKY,OAAO,KAAM5vB,GAElBgvB,EAAKY,OAAO,SAAU5vB,GAGjB2c,GA7pCqB,qCA6pCQ,CAClCqS,KAAAA,EACA4C,QAASq7D,GAAYzuE,GACrBwR,OAAQ,SACPrwB,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,GAC/B,EA2hBE6J,oBArX0B,SAAH,GAA4B,IAAtBlI,EAAW,EAAXA,YAAaxe,EAAE,EAAFA,GAC1C,OAAO+sF,GAAgB,CACrBlnF,IAAK0kF,EAAkCvqF,GACvCgwB,OAAQ,OACRilB,QAAS,CAAEj1C,GAAAA,GACXwe,YAAAA,GAEJ,EA+WE6sB,KA1hBW,SAAH,GAAyC,IA3mCzBrrC,EA2mCV6qC,EAAM,EAANA,OAAQO,EAAO,EAAPA,QAAS5sB,EAAW,EAAXA,YAI/B,OAHa,IAAImR,UACZC,OAAO,UAAWwb,GAEhB2hD,GAAgB,CACrBlnF,KAhnCsB7F,EAgnCC4wB,mBAAmBia,GAhnClB,wBAAqB7qC,EAAE,WAinC/CgwB,OAAQ,OACRxR,YAAAA,EACAy2B,QAAS,CACP7J,QAAAA,IAGN,EA+gBEH,UA7gBgB,SAAH,GAAgC,IAxnCrBjrC,EAwnCL6qC,EAAM,EAANA,OAAQrsB,EAAW,EAAXA,YAC3B,OAAOuuE,GACL,CACElnF,KA3nCoB7F,EA2nCG4wB,mBAAmBia,GA3nCpB,wBAAqB7qC,IA4nC3CgwB,OAAQ,MACRxR,YAAAA,GAGN,EAsgBEwL,sBApgB4B,SAAH,GAA4B,IAAtBhqB,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YACnC,OAAOuuE,GAAgB,CACrBlnF,IAAK8lF,GAAgC3rF,GACrCgwB,OAAQ,MACRxR,YAAAA,IACC7e,MAAK,SAAC0D,GAAK,OAAKA,EAAMjE,IAAI8tF,EAAAA,GAAU,GACzC,EA+fEjjE,sBA7f4B,SAAH,GAA4B,IAAtBjqB,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YACnC,OAAOuuE,GAAgB,CACrBlnF,IAAK+lF,GAAgC5rF,GACrCgwB,OAAQ,MACRxR,YAAAA,IACC7e,MAAK,SAAC0D,GAAK,OAAKA,EAAMjE,IAAI8tF,EAAAA,GAAU,GACzC,EAwfE7iE,oBAtf0B,SAAH,GAA4B,IAAtBrqB,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YACjC,OAAOuuE,GAAgB,CAAElnF,IAAKumF,GAA4BpsF,GAAKwe,YAAAA,IAC5D7e,MAAK,SAACiiE,GAAS,OAAKA,EAAUxiE,KAAI,SAAA6oB,GAEjC,OADAA,EAAEJ,SAAWI,EAAEJ,SAASzoB,IAAI8tF,EAAAA,IACrBjlE,CACT,GAAE,GACN,EAifEiC,eA/eqB,SAAH,GAAmC,IAA7BlqB,EAAE,EAAFA,GAAIS,EAAK,EAALA,MAAO+d,EAAW,EAAXA,YACnC,OAAOuuE,GAAgB,CACrBlnF,IAAKwmF,GAAwBrsF,EAAIS,GACjCuvB,OAAQ,MACRxR,YAAAA,IACC7e,KAAKyuF,EAAAA,GACV,EA0eEjkE,iBAxeuB,SAAH,GAAmC,IAA7BnqB,EAAE,EAAFA,GAAIS,EAAK,EAALA,MAAO+d,EAAW,EAAXA,YACrC,OAAOuuE,GAAgB,CACrBlnF,IAAKymF,GAA0BtsF,EAAIS,GACnCuvB,OAAQ,SACRxR,YAAAA,IACC7e,KAAKyuF,EAAAA,GACV,EAmeE3/B,WAjeiB,SAAH,GAA6D,IAAvDjwC,EAAW,EAAXA,YAAaE,EAAM,EAANA,OAAQwrB,EAAS,EAATA,UAAWlT,EAAO,EAAPA,QAASk3B,EAAO,EAAPA,QAC7D,OAAO6+B,GAAgB,CACrBlnF,IAxqC6B,kBAyqC7BmqB,OAAQ,OACRilB,QAAS,CACP1Y,WAAY7d,EACZs0E,WAAY9oD,EACZlT,QAAAA,EACAk3B,QAAAA,GAEF1vC,YAAAA,GAEJ,EAsdEgqE,2BA3jDiC,SAAH,GAAkC,IAA5BhqE,EAAW,EAAXA,YAAa3N,EAAQ,EAARA,SAC3C6e,EAAO,IAAIC,SAMjB,OAJA,IAAK9e,GAAU,SAACoB,EAAOvE,GACrBgiB,EAAKE,OAAOliB,EAAKuE,EACnB,IAEO0K,GAAM,GAAD,OAnJoB,qCAmJS,YAAI,IAAIs2E,gBAAgBpiF,IAAa,CAC5E+gB,QAASq7D,GAAYzuE,GACrBwR,OAAQ,MACRhB,KAAMU,IACL/vB,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,GAC/B,EAgjDEgO,QAzcc,SAAH,GAAoE,IAA9DrM,EAAW,EAAXA,YAAaiM,EAAC,EAADA,EAAG/qB,EAAO,EAAPA,QAASgrB,EAAK,EAALA,MAAOC,EAAM,EAANA,OAAQC,EAAS,EAATA,UAAW7kB,EAAI,EAAJA,KAChEF,EA5rCoB,iBA6rClBs1B,EAAS,GAEX1Q,GACF0Q,EAAOz1B,KAAK,CAAC,IAAKkrB,mBAAmBnG,KAGnC/qB,GACFy7B,EAAOz1B,KAAK,CAAC,UAAWhG,IAGtBgrB,GACFyQ,EAAOz1B,KAAK,CAAC,QAASglB,IAGpBC,GACFwQ,EAAOz1B,KAAK,CAAC,SAAUilB,IAGrBC,GACFuQ,EAAOz1B,KAAK,CAAC,aAAa,IAGxBK,GACFo1B,EAAOz1B,KAAK,CAAC,YAAaK,IAG5Bo1B,EAAOz1B,KAAK,CAAC,sBAAsB,IAEnC,IAAMopF,EAAc,IAAI3zD,GAAQ,SAAC4zD,GAAK,gBAAQA,EAAM,GAAE,YAAIA,EAAM,GAAE,IAAIxjF,KAAK,KAG3E,OAFA1F,GAAO,IAAJ,OAAQipF,GAEJnyE,GAAM9W,EAAK,CAAE+rB,QAASq7D,GAAYzuE,KACtC7e,MAAK,SAACW,GACL,GAAIA,EAAKsc,GACP,OAAOtc,EAET,MAAM,IAAIT,MAAM,+BAAgCS,EAClD,IACCX,MAAK,SAACW,GAAW,OAAOA,EAAKuc,MAAO,IACpCld,MAAK,SAACW,GAGL,OAFAA,EAAKunB,SAAWvnB,EAAKunB,SAASrkB,MAAM,EAAGknB,GAAOtrB,KAAI,SAAA0rB,GAAC,OAAIoiE,EAAAA,EAAAA,IAAUpiE,EAAE,IACnExqB,EAAKqe,SAAWre,EAAKqe,SAASnb,MAAM,EAAGknB,GAAOtrB,KAAI,SAAA+jB,GAAC,OAAIirE,EAAAA,EAAAA,IAAYjrE,EAAE,IAC9D7iB,CACT,GACJ,EA4ZEy6B,YAtdkB,SAAH,GAA+B,IAAzBvc,EAAW,EAAXA,YAAa1b,EAAK,EAALA,MAClC,OAAOiqF,GAAgB,CACrBlnF,IAhrC6B,0BAirC7Bs1B,OAAQ,CACN1Q,EAAG3nB,EACHpD,SAAS,GAEX8e,YAAAA,IAEC7e,MAAK,SAACW,GAAI,OAAKA,EAAKlB,IAAI8tF,EAAAA,GAAU,GACvC,EA6cEgG,kBA3ZwB,SAAH,GAAwB,IAAlB10E,EAAW,EAAXA,YAC3B,OAAOuuE,GAAgB,CAAElnF,IAvuCY,yBAuuCyB2Y,YAAAA,GAChE,EA0ZEiZ,iBAxZuB,SAAH,GAAwB,IAAlBjZ,EAAW,EAAXA,YAC1B,OAAOuuE,GAAgB,CAAElnF,IAAKqmF,GAA4B1tE,YAAAA,GAC5D,EAuZEkU,WArZiB,SAAH,GAAgC,IAA1BC,EAAM,EAANA,OAAQnU,EAAW,EAAXA,YAC5B,OAAOuuE,GAAgB,CACrBlnF,IAAKqmF,GACLl8D,OAAQ,OACRilB,QAAS,CAAEtiB,OAAAA,GACXnU,YAAAA,GAEJ,EA+YEoU,aA7YmB,SAAH,GAAgC,IAA1BD,EAAM,EAANA,OAAQnU,EAAW,EAAXA,YAC9B,OAAOuuE,GAAgB,CACrBlnF,IAAKqmF,GACLl8D,OAAQ,SACRilB,QAAS,CAAEtiB,OAAAA,GACXnU,YAAAA,GAEJ,EAuYE4d,MAhNY,SAAH,GAAwB,IAAlB5d,EAAW,EAAXA,YACf,OAAO7B,GAh7CiB,wBAg7CQ,CAAEiV,QAASq7D,GAAYzuE,KACpD7e,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,IAC1Bld,MAAK,SAACW,GACL,MAAO,CAAE87B,MAAO97B,EAAKlB,IAAIywC,EAAAA,IAAWzuC,QAAO,SAAA6tC,GAAC,OAAIA,CAAC,IACnD,GACJ,EA2MEi7B,gBAzMsB,SAAH,GAAmC,IAt7C/BlqE,EAs7CEwrB,EAAS,EAATA,UAAWhN,EAAW,EAAXA,YACpC,OAAOuuE,GAAgB,CACrBlnF,KAx7CqB7F,EAw7CCwrB,EAx7CC,8CAA2CxrB,IAy7ClEgwB,OAAQ,OACRxR,YAAAA,GAEJ,EAoMEwrD,aAlMmB,SAAH,GAAwD,IAAlDhqE,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YAAaS,EAAK,EAALA,MAAO8qD,EAAO,EAAPA,QAAO,IAAEr/C,MAAAA,OAAK,IAAG,KAAE,EAC7D7kB,EAAM0mF,GAA0BvsF,GAC9B2U,EAAO,CACXsK,GAAS,UAAJ,OAAcA,GACnB8qD,GAAW,YAAJ,OAAgBA,GACvBr/C,GAAS,SAAJ,OAAaA,IAClBtpB,QAAO,SAAA0L,GAAC,OAAIA,CAAC,IAAEvB,KAAK,KAItB,OAAOwhF,GAAgB,CACrBlnF,IAHFA,GAAa8O,EAAO,IAAMA,EAAO,GAI/Bqb,OAAQ,MACRxR,YAAAA,GAEJ,EAoLEosD,gBAlLsB,SAAH,GAAqE,IAA/D5qE,EAAE,EAAFA,GAAIiG,EAAO,EAAPA,QAAO,IAAEskE,QAAAA,OAAO,IAAG,OAAI,EAAED,EAAc,EAAdA,eAAgB9rD,EAAW,EAAXA,YAChEy2B,EAAU,CACdhvC,QAAAA,GAGEskE,IACFt1B,EAAQk+C,SAAW5oB,GAGrB,IAAM34C,EAAU,CAAC,EAMjB,OAJI04C,IACF14C,EAAQ,mBAAqB04C,GAGxByiB,GAAgB,CACrBlnF,IAAK0mF,GAA0BvsF,GAC/BgwB,OAAQ,OACRilB,QAAAA,EACAz2B,YAAAA,EACAoT,QAAAA,GAEJ,EA6JEqe,SA3Je,SAAH,GAAwC,IAAlCjwC,EAAE,EAAFA,GAAIkwC,EAAU,EAAVA,WAAY1xB,EAAW,EAAXA,YAClC,OAAOuuE,GAAgB,CACrBlnF,IAAK2mF,GAAsBxsF,GAC3BgwB,OAAQ,OACRilB,QAAS,CACPm+C,aAAcljD,GAEhB1xB,YAAAA,GAEJ,EAmJE4xB,kBAjJwB,SAAH,GAA2C,IAArCvR,EAAM,EAANA,OAAQ6O,EAAS,EAATA,UAAWlvB,EAAW,EAAXA,YAC9C,OAAOuuE,GAAgB,CACrBlnF,IAAK4mF,GAAgC5tD,EAAQ6O,GAC7C1d,OAAQ,SACRxR,YAAAA,GAEJ,EA4IEurB,eA1IqB,SAAH,GAAmC,IAA7B/pC,EAAE,EAAFA,GAAIwC,EAAK,EAALA,MAAOgc,EAAW,EAAXA,YAGnC,OAAO7B,GAz/CqB,6BAy/CQ,CAClCiV,QAAS,EAAF,KACFq7D,GAAYzuE,IAAY,IAC3BwuE,OAAQ,mBACR,eAAgB,qBAElBh9D,OAAQ,QACRhB,KAAMsK,KAAKC,UAAU,CACnBmQ,QAAS,CAAC,CACR1pC,GAAAA,EACAwC,MAAAA,QAIH7C,MAAK,SAAAW,GACJ,GAAIA,EAAK2gB,QAAU,IACjB,MAAMphB,MAAMS,EAAK8sB,YACZ,OAAI9sB,EAAK2gB,QAAU,IACjB3gB,EAAKuc,OAEPvc,CACT,IACCX,MAAK,SAAAW,GACJ,GAAIA,EAAK6sB,OACP,MAAMttB,MAAMS,EAAK6sB,OAAO,GAAGI,QAE/B,GACJ,EA6GEkJ,iBAp9CuB,SAAH,GAA4B,IAAtBz2B,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YACxB3Y,EA5NuB,SAAA7F,GAAE,iCAAwBA,EAAE,UA4N7CqzF,CAAuBrzF,GACnC,OAAO2c,GAAM9W,EAAK,CAChB+rB,QAASq7D,GAAYzuE,KACpB7e,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,GAC/B,EAg9CEu1B,mBAhYyB,SAAH,GAAwB,IAAlB5zB,EAAW,EAAXA,YAC5B,OAAOuuE,GAAgB,CAAElnF,IA7wCQ,wBA6wCyB2Y,YAAAA,GAC5D,EA+XEu0B,oBA7X0B,SAAH,GAA4B,IAAtB/yC,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YACjC,OAAOuuE,GAAgB,CACrBlnF,IAAKsmF,GAAmCnsF,GACxCwe,YAAAA,EACAwR,OAAQ,QAEZ,EAwXEqjB,iBApWuB,SAAH,GAA2D,IAArD70B,EAAW,EAAXA,YAAavY,EAAO,EAAPA,QAASqtC,EAAQ,EAARA,SAAUC,EAAM,EAANA,OAAQC,EAAM,EAANA,OAClE,OAAOu5C,GAAgB,CACrBlnF,IA/xCkC,sCAgyClC2Y,YAAAA,EACAwR,OAAQ,OACRilB,QAASm4C,GAAsB,CAAEnnF,QAAAA,EAASqtC,SAAAA,EAAUC,OAAAA,EAAQC,OAAAA,KAEhE,EA8VEC,iBA5VuB,SAAH,GAA+D,IAAzDzzC,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YAAavY,EAAO,EAAPA,QAASqtC,EAAQ,EAARA,SAAUC,EAAM,EAANA,OAAQC,EAAM,EAANA,OACtE,OAAOu5C,GAAgB,CACrBlnF,IAAK8mF,GAA8B3sF,GACnCwe,YAAAA,EACAwR,OAAQ,QACRilB,QAASm4C,GAAsB,CAAEnnF,QAAAA,EAASqtC,SAAAA,EAAUC,OAAAA,EAAQC,OAAAA,KAEhE,EAsVEE,mBApVyB,SAAH,GAA4B,IAAtB1zC,EAAE,EAAFA,GAAIwe,EAAW,EAAXA,YAChC,OAAOuuE,GAAgB,CACrBlnF,IAAK+mF,GAAgC5sF,GACrCwe,YAAAA,EACAwR,OAAQ,UAEZ,EA+UEwiB,wBAzY8B,SAAH,GAAwB,IAAlBh0B,EAAW,EAAXA,YACjC,OAAOuuE,GAAgB,CAAElnF,IA7vCO,sCA6vCyB2Y,YAAAA,GAC3D,E,wECr2CM80E,EAAgB,SAAA1tF,GAAK,OAAIzF,OAAOD,KAAK0F,GAAOoP,QAAO,SAACC,EAAKC,GAE7D,OADAD,EAAI,IAAUC,IAAQtP,EAAMsP,GACrBD,CACT,GAAG,CAAC,EAAE,C,svBCFC,IASMs+E,EAAU,SAACtrE,EAAGurE,EAAGnxF,GAC5B,GAAI4lB,QAAJ,CAIA,GAAa,MAATA,EAAE,IAAoB,gBAANA,EAClB,OAAOA,EAET,GAAiB,YAAb,OAAOA,GAAgB,OACVA,EAAZA,EAAC,EAADA,EAAGurE,EAAC,EAADA,EAAGnxF,EAAC,EAADA,CACX,CAAC,MACW,CAAC4lB,EAAGurE,EAAGnxF,GAAGjD,KAAI,SAAA0wD,GAIxB,OAFAA,GADAA,EAAMjuD,KAAKi+D,KAAKhQ,IACJ,EAAI,EAAIA,GACR,IAAM,IAAMA,CAE1B,IAAE,eACF,OANC7nC,EAAC,KAAEurE,EAAC,KAAEnxF,EAAC,KAMD,IAAP,SAAa,GAAK,KAAO4lB,GAAK,KAAOurE,GAAK,GAAKnxF,GAAG6qC,SAAS,IAAI1pC,MAAM,GAdrE,CAeF,EAyCaiwF,EAAoB,SAACC,GAChC,MAbmB,SAACA,GACpB,MAAO,MAAMlS,MAAM,IAAIxsE,QAAO,SAACC,EAAKg6B,GAAoC,OAA5Bh6B,EAAIg6B,GAnBjC,SAAC0kD,GAKhB,IAAM1kD,EAAI0kD,EAAM,IAChB,OAAI1kD,EAAI,OACCA,EAAI,MAEJptC,KAAK+xF,KAAK3kD,EAAI,MAAS,MAAO,IAEzC,CAQuD4kD,CAASH,EAAKzkD,IAAYh6B,CAAI,GAAG,CAAC,EACzF,CAWsB6+E,CAAaJ,GACjC,MAAO,MADE,EAADzrE,EACY,MADR,EAADurE,EACsB,MADlB,EAADnxF,CAEhB,EAUa0xF,EAAmB,SAAC3xF,EAAGC,GAClC,IAAM2a,EAAKy2E,EAAkBrxF,GACvB6a,EAAKw2E,EAAkBpxF,GAC7B,EAAiB2a,EAAKC,EAAK,CAACD,EAAIC,GAAM,CAACA,EAAID,GAAG,eAE9C,OAFS,KAEI,MAFA,KAEc,IAC7B,EASag3E,EAAyB,SAAC/uF,EAAMgvF,EAAQC,GACnD,OAAOH,EAAiBI,EAAiBD,EAASD,GAAShvF,EAC7D,EAUamvF,EAAa,SAACC,EAAIC,EAAKC,GAClC,OAAY,IAARD,QAA4B,IAARA,EAA4BD,EAC7C,MAAM7S,MAAM,IAAIxsE,QAAO,SAACC,EAAKg6B,GAIlC,OADAh6B,EAAIg6B,GAAMolD,EAAGplD,GAAKqlD,EAAMC,EAAGtlD,IAAM,EAAIqlD,GAC9Br/E,CACT,GAAG,CAAC,EACN,EAQak/E,EAAmB,SAACD,EAASD,GAAM,OAAKA,EAAOj/E,QAAO,SAACC,EAAK,GAAqB,mBAApB+yE,EAAK,KAAEr6B,EAAO,KACtF,OAAOymC,EAAWpM,EAAOr6B,EAAS14C,EACpC,GAAGi/E,EAAQ,EAeEM,EAAU,SAACC,GACtB,IAAMxwF,EAAS,4CAA4CC,KAAKuwF,GAChE,OAAOxwF,EACH,CACEgkB,EAAG65D,SAAS79E,EAAO,GAAI,IACvBuvF,EAAG1R,SAAS79E,EAAO,GAAI,IACvB5B,EAAGy/E,SAAS79E,EAAO,GAAI,KAEzB,IACN,EASaywF,EAAS,SAACtyF,EAAGC,GACxB,MAAO,MAAMm/E,MAAM,IAAIxsE,QAAO,SAACC,EAAKtT,GAElC,OADAsT,EAAItT,IAAMS,EAAET,GAAKU,EAAEV,IAAM,EAClBsT,CACT,GAAG,CAAC,EACN,EAOa0/E,EAAW,SAAUC,GAChC,MAAO,QAAP,OAAe/yF,KAAKk/D,MAAM6zB,EAAK3sE,GAAE,aAAKpmB,KAAKk/D,MAAM6zB,EAAKpB,GAAE,aAAK3xF,KAAKk/D,MAAM6zB,EAAKvyF,GAAE,aAAKuyF,EAAKxyF,EAAC,IAC5F,EAYayyF,EAAe,SAAUN,EAAItvF,EAAM6vF,GAG9C,GAFiBf,EAAiBQ,EAAItvF,GAEvB,IAAK,CAClB,IAAM8vF,OAAyB,IAAX9vF,EAAK7C,EAAoB,CAAEA,EAAG6C,EAAK7C,GAAM,CAAC,EACxD6B,EAAS9D,OAAO2c,OAAOi4E,GAAMC,EAAAA,EAAAA,IAAgB/vF,GAAMgwF,KACzD,OAAKH,GAAYf,EAAiBQ,EAAItwF,GAAU,KAEvCixF,EAAAA,EAAAA,IAAcX,EAAItvF,GAAMgwF,IAG1BhxF,CACT,CACA,OAAOgB,CACT,EASakwF,EAAc,SAACt0F,EAAOuB,GACjC,IAAI6yF,EAAM,CAAC,EACX,GAAqB,YAAjB,OAAOp0F,GACTo0F,EAAMp0F,OACD,GAAqB,iBAAVA,EAAoB,CACpC,IAAIA,EAAMoB,WAAW,KAGnB,OAAOpB,EAFPo0F,EAAMT,EAAQ3zF,EAIlB,CACA,OAAO8zF,EAAS,EAAD,KAAMM,GAAG,IAAE7yF,EAAAA,IAC5B,C,wEC3NM+pE,EAAoB,SAACipB,GAAS,OAFR,SAACA,GAAS,OAAMC,IAAWD,GAAcA,EAAUjsB,QAAUisB,CAAS,CAEzDE,CAAoBF,GAAWxvF,KAAK,C,qFCJtE,IAAM2vF,EAAS,IACTC,EAAS,IACTC,EAAO,KACPrjB,EAAM,GAAKqjB,EACXC,EAAO,EAAItjB,EACXujB,EAAQ,GAAKvjB,EACbwjB,EAAO,OAASxjB,EAEhByjB,EAAe,SAAC9oD,GAA2B,IAArB+oD,EAAe,UAAH,6CAAG,EAC5B,iBAAT/oD,IAAmBA,EAAOjd,KAAK4a,MAAMqC,IAChD,IAAMgpD,EAAQjmE,KAAK8R,MAAQmL,EAAOlrC,KAAKk/D,MAAQl/D,KAAKi+D,KAC9Cmb,EAAIp5E,KAAKq/D,IAAIpxC,KAAK8R,MAAQmL,GAC1B9kB,EAAI,CAAEi2B,IAAK63C,EAAM9a,EAAI2a,GAAOloF,IAAK,mBAuBvC,OAtBIutE,EAAI6a,EAAeP,GACrBttE,EAAEi2B,IAAM,EACRj2B,EAAEva,IAAM,YACCutE,EAAIua,GACbvtE,EAAEi2B,IAAM63C,EAAM9a,EAAIsa,GAClBttE,EAAEva,IAAM,qBACCutE,EAAIwa,GACbxtE,EAAEi2B,IAAM63C,EAAM9a,EAAIua,GAClBvtE,EAAEva,IAAM,qBACCutE,EAAI7I,GACbnqD,EAAEi2B,IAAM63C,EAAM9a,EAAIwa,GAClBxtE,EAAEva,IAAM,mBACCutE,EAAIya,GACbztE,EAAEi2B,IAAM63C,EAAM9a,EAAI7I,GAClBnqD,EAAEva,IAAM,kBACCutE,EAAI0a,GACb1tE,EAAEi2B,IAAM63C,EAAM9a,EAAIya,GAClBztE,EAAEva,IAAM,mBACCutE,EAAI2a,IACb3tE,EAAEi2B,IAAM63C,EAAM9a,EAAI0a,GAClB1tE,EAAEva,IAAM,oBAEHua,CACT,EAEa+tE,EAAoB,SAACjpD,GAA2B,IAArB+oD,EAAe,UAAH,6CAAG,EAC/C7tE,EAAI4tE,EAAa9oD,EAAM+oD,GAE7B,OADA7tE,EAAEva,KAAO,SACFua,CACT,EAEaguE,EAAgB,SAAC93C,EAAMyhB,GAClC,OAAQzhB,GACN,IAAK,UAAW,MAAO,KAAQyhB,EAAS41B,EACxC,IAAK,QAAS,MAAO,KAAQ51B,EAAS61B,EACtC,IAAK,OAAQ,MAAO,KAAQ71B,EAASwS,EAEzC,EAEa8jB,EAAgB,SAAC/3C,EAAMyhB,GAClC,OAAQzhB,GACN,IAAK,UAAW,OAAQ,IAAOyhB,EAAU41B,EACzC,IAAK,QAAS,OAAQ,IAAO51B,EAAU61B,EACvC,IAAK,OAAQ,OAAQ,IAAO71B,EAAUwS,EAE1C,C,gDC1DO,IAAMv1C,EAA0B,SAAC7pB,EAAWmjF,GACjD,GAAM,iBAAkB1vF,QAA6C,YAAnCA,OAAOm1B,aAAa7pB,aAClDiB,EAAU2L,SAASsB,cAAcR,2BAArC,CAEA,IAAM22E,EAAsB,IAAI3vF,OAAOm1B,aAAau6D,EAAwBhjF,MAAOgjF,GAGnFnzF,WAAWozF,EAAoBj3D,MAAMk3D,KAAKD,GAAsB,IALU,CAM5E,C,iwBCMA,IAyBalJ,EAAY,SAAC5sF,GACxB,IAAMg2F,EAAS,CAAC,EACVC,EAAQp2F,OAAOiiC,UAAU5d,eAAelW,KAAKhO,EAAM,QAEnDk2F,EAAaD,IAAUp2F,OAAOiiC,UAAU5d,eAAelW,KAAKhO,EAAM,UAMxE,GAJAg2F,EAAO/hE,QAAU,KACjB+hE,EAAOt2F,GAAKgG,OAAO1F,EAAKN,IACxBs2F,EAAO7M,UAAYnpF,EAEfi2F,EAAO,CAMT,GALAD,EAAO/yF,YAAcjD,EAAKs+C,KAC1B03C,EAAOpzD,IAAM5iC,EAAK4iC,IAClBozD,EAAO7rF,sBAAwBnK,EAAKuF,IAGhC2wF,EACF,OAAOF,EAqCT,GAlCAA,EAAO71F,MAAQH,EAAKU,OACpBs1F,EAAOv0F,KAAO00F,IAAOn2F,EAAKo2F,cAC1BJ,EAAO9zB,UAAY8zB,EAAOv0F,KAC1Bu0F,EAAOK,eAAiBr2F,EAAKo2F,aAE7BJ,EAAO7wC,YAAcnlD,EAAKs2F,KAE1BN,EAAOO,iBAAmBv2F,EAAKs2F,KAE/BN,EAAOQ,OAASx2F,EAAKw2F,OACrBR,EAAOznB,YAAcvuE,EAAKw2F,OAAO13F,KAAI,SAAA0vE,GACnC,MAAO,CACL/sE,KAAM00F,IAAO3nB,EAAM/sE,MACnBkQ,MAAO68D,EAAM78D,MAEjB,IACAqkF,EAAOvnB,YAAczuE,EAAKw2F,OAAO13F,KAAI,SAAA0vE,GACnC,MAAO,CACL/sE,KAAMg1F,SAASjoB,EAAM/sE,KAAKuC,QAAQ,WAAY,KAC9C2N,MAAO8kF,SAASjoB,EAAM78D,MAAM3N,QAAQ,WAAY,KAEpD,IAGAgyF,EAAO55D,kBAAoBp8B,EAAKq+C,OAChC23C,EAAOzyF,2BAA6BvD,EAAKq+C,OAGzC23C,EAAOU,YAAc12F,EAAKm/D,OAE1B62B,EAAOrnB,cAAgB3uE,EAAK22F,gBAE5BX,EAAOY,IAAM52F,EAAK42F,IAEd52F,EAAK+6E,QAAS,CACZ/6E,EAAK+6E,QAAQ8b,iBACfb,EAAOrzD,QAAU3iC,EAAK+6E,QAAQ8b,eAAe,eAE/C,IAAMjlE,EAAe5xB,EAAK+6E,QAAQnpD,aAElCokE,EAAO7jC,iBAAmBnyD,EAAK+6E,QAAQ5oB,iBACvC6jC,EAAOc,QAAU92F,EAAK+6E,QAAQ+b,QAC9Bd,EAAOjlE,MAAQ/wB,EAAK+6E,QAAQgc,WAExBnlE,IACFokE,EAAOpkE,aAAeA,GAGxBokE,EAAOx0B,qBAAuBxhE,EAAK+6E,QAAQvZ,qBAE3Cw0B,EAAOjpB,aAAe/sE,EAAK+6E,QAAQhO,aACnCipB,EAAO/oB,eAAiBjtE,EAAK+6E,QAAQ9N,eACrC+oB,EAAOgB,mBAAqBh3F,EAAK+6E,QAAQic,mBACzChB,EAAOiB,qBAAuBj3F,EAAK+6E,QAAQkc,qBAE3CjB,EAAOljE,OAAS,CACdmjD,UAAWj2E,EAAK+6E,QAAQmc,aACxBlhB,MAAOh2E,EAAK+6E,QAAQoc,UAGlBnB,EAAOljE,OAAOkjD,MAChBggB,EAAOjtC,KAAO,QACLitC,EAAOljE,OAAOmjD,UACvB+f,EAAOjtC,KAAO,YAEditC,EAAOjtC,KAAO,SAGhBitC,EAAO5oB,SAAWptE,EAAK+6E,QAAQ3N,SAE3BptE,EAAK+6E,QAAQ/oC,WACfgkD,EAAOhkD,WAAahyC,EAAK+6E,QAAQ/oC,WACxBhyC,EAAK+6E,QAAQoc,SACtBnB,EAAOhkD,WAAa,CAClB,aACA,uBACA,gCACA,oBACA,2BACA,eACA,gBACA,kBACA,mBACA,yBACA,sBACA,qCACA,qBACA,mBAEOhyC,EAAK+6E,QAAQmc,aACtBlB,EAAOhkD,WAAa,CAClB,kBACA,0BAGFgkD,EAAOhkD,WAAa,EAExB,CAEIhyC,EAAK2d,SACPq4E,EAAO7wC,YAAcnlD,EAAK2d,OAAO24E,KACjCN,EAAOoB,cAAgBp3F,EAAK2d,OAAO05E,QACnCrB,EAAOQ,OAASx2F,EAAK2d,OAAO64E,OACxBx2F,EAAK2d,OAAOo9D,UACdib,EAAOsB,aAAet3F,EAAK2d,OAAOo9D,QAAQuc,aAC1CtB,EAAOuB,UAAYv3F,EAAK2d,OAAOo9D,QAAQwc,UACvCvB,EAAOxN,aAAexoF,EAAK2d,OAAOo9D,QAAQyN,aAC1CwN,EAAOwB,cAAgBx3F,EAAK+6E,QAAQyc,gBAKxCxB,EAAO/nC,UAAY+nC,EAAO/yF,YAAYJ,SAAS,IACjD,MACEmzF,EAAO/yF,YAAcjD,EAAKiD,YAE1B+yF,EAAOv0F,KAAOzB,EAAKyB,KACnBu0F,EAAO9zB,UAAYliE,EAAKkiE,UAExB8zB,EAAO7wC,YAAcnlD,EAAKmlD,YAC1B6wC,EAAOO,iBAAmBv2F,EAAKu2F,iBAE/BP,EAAO55D,kBAAoBp8B,EAAKo8B,kBAChC45D,EAAOzyF,2BAA6BvD,EAAKuD,2BAEzCyyF,EAAOU,YAAc12F,EAAK02F,YAE1BV,EAAOrnB,cAAgB3uE,EAAK2uE,cAI5BqnB,EAAO7rF,sBAAwBnK,EAAKmK,sBAEpC6rF,EAAO/nC,SAAWjuD,EAAKiuD,SACvB+nC,EAAOjtC,KAAO/oD,EAAK+oD,KACnBitC,EAAOuB,UAAYv3F,EAAKu3F,UAEpBv3F,EAAK8yB,SACPkjE,EAAOljE,OAAS,CACdmjD,UAAWj2E,EAAK8yB,OAAO2kE,qBACvBzhB,MAAOh2E,EAAK8yB,OAAOkjD,QAGvBggB,EAAOsB,aAAet3F,EAAKs3F,aAC3BtB,EAAOoB,cAAgBp3F,EAAKo3F,cAC5BpB,EAAOjpB,aAAe/sE,EAAK+sE,aAC3BipB,EAAO/oB,eAAiBjtE,EAAKitE,eAC7B+oB,EAAOgB,mBAAqBh3F,EAAKg3F,mBACjChB,EAAOiB,qBAAuBj3F,EAAKi3F,qBACnCjB,EAAO7jC,iBAAmBnyD,EAAKmyD,iBAE/B6jC,EAAOjlE,MAAQ/wB,EAAK+wB,MAGpBilE,EAAOpkE,aAAe,CACpBM,OAAQlyB,EAAK03F,MACbC,SAAU33F,EAAK43F,mBACfvsB,YAAarrE,EAAK63F,YAClBvtE,UAAWtqB,EAAKsqB,WA8BpB,GA1BA0rE,EAAOvyD,WAAa,IAAIjU,KAAKxvB,EAAKyjC,YAClCuyD,EAAOx6D,OAASx7B,EAAKw7B,OACrBw6D,EAAOlnB,gBAAkB9uE,EAAK8uE,gBAC9BknB,EAAOtnB,eAAiB1uE,EAAK0uE,eAEzB1uE,EAAK+6E,UACPib,EAAO8B,qBAAuB93F,EAAK+6E,QAAQ+c,qBAE3C9B,EAAOp7E,KAAO5a,EAAK+6E,QAAQngE,KAI3Bo7E,EAAOhjE,iBAAgD,IAA3BhzB,EAAK+6E,QAAQljD,WACpC73B,EAAK+6E,QAAQljD,UACd73B,EAAK+6E,QAAQ/nD,YAEjBgjE,EAAO+B,sBAAwB/3F,EAAK+6E,QAAQgd,sBAC5C/B,EAAOgC,kBAAoBh4F,EAAK+6E,QAAQid,mBAG1ChC,EAAOp7E,KAAOo7E,EAAOp7E,MAAQ,GAC7Bo7E,EAAOljE,OAASkjE,EAAOljE,QAAU,CAAC,EAClCkjE,EAAO+B,sBAAwB/B,EAAO+B,uBAAyB,CAAC,EAGhE/B,EAAO3yF,eAAiB2yF,EAAO/yF,YAC3B+yF,EAAO/yF,aAAe+yF,EAAO/yF,YAAYJ,SAAS,KAAM,CAC1D,IAAMo1F,EAAQjC,EAAO/yF,YAAYi+E,MAAM,KACjCgX,EAAgBC,EAAAA,GAAAA,UAAmBF,EAAM,IAC3CC,IAAkBD,EAAM,IAG1BjC,EAAOoC,mCAAoC,EAC3CpC,EAAO3yF,eAAiB,CAAC40F,EAAM,GAAIC,GAAejtF,KAAK,MAEvD+qF,EAAOoC,mCAAoC,CAE/C,CAEA,OAAOpC,CACT,EAEa3F,EAAkB,SAACrwF,GAC9B,IAAMg2F,EAAS,CAAC,EAiBhB,OAhBen2F,OAAOiiC,UAAU5d,eAAelW,KAAKhO,EAAM,UAQxDg2F,EAAOptD,SAAW5oC,EAAK4oC,UAJvBotD,EAAOptD,SAAW5oC,EAAK+6E,QAAU/6E,EAAK+6E,QAAQsd,UAAYr4F,EAAKyF,KAC/DuwF,EAAO3Z,KAAOr8E,EAAKq8E,KACnB2Z,EAAOt2F,GAAKM,EAAKN,IAMnBs2F,EAAOzwF,IAAMvF,EAAKuF,IAClBywF,EAAOsC,gBAAkBt4F,EAAKs8B,YAC9B05D,EAAO7wC,YAAcnlD,EAAKmlD,YAEnB6wC,CACT,EAEajH,EAAc,SAAC/uF,GAC1B,IAAMg2F,EAAS,CAAC,EAMhB,OAJAA,EAAOrxF,KAAO3E,EAAK2E,KACnBqxF,EAAOuC,aAAev4F,EAAKu4F,aAC3BvC,EAAOwC,aAAex4F,EAAKw4F,aAEpBxC,CACT,EAEalI,EAAc,SAAdA,EAAe9tF,GAC1B,IAAMg2F,EAAS,CAAC,EACVC,EAAQp2F,OAAOiiC,UAAU5d,eAAelW,KAAKhO,EAAM,WAEzD,GAAIi2F,EAAO,CAmBT,GAlBAD,EAAO9yE,UAAYljB,EAAKy4F,WACxBzC,EAAO7yE,SAAWnjB,EAAK04F,iBAEvB1C,EAAO7wE,SAAWnlB,EAAK24F,UACvB3C,EAAO5wE,WAAaplB,EAAK44F,cAEzB5C,EAAOxwE,WAAaxlB,EAAKwlB,WAEzBwwE,EAAOvwF,KAAOzF,EAAKu5B,OAAS,UAAY,SACxCy8D,EAAOjwE,KAAO/lB,EAAK2vD,UAEnBqmC,EAAO7yB,SAAWnjE,EAAK2F,QACvBqwF,EAAOt1F,OAASV,EAAKU,OAErBs1F,EAAOp7E,KAAO5a,EAAK4a,KAEnBo7E,EAAO6C,UAAY74F,EAAK64F,UAEpB74F,EAAK+6E,QAAS,CAChB,IAAQA,EAAY/6E,EAAZ+6E,QACRib,EAAOrxF,KAAOo2E,EAAQp1E,QAAU3F,EAAK+6E,QAAQp1E,QAAQ,cAAgB3F,EAAK2F,QAC1EqwF,EAAO9yB,QAAU6X,EAAQwd,aAAev4F,EAAK+6E,QAAQwd,aAAa,cAAgBv4F,EAAKu4F,aACvFvC,EAAOx0E,0BAA4BxhB,EAAK+6E,QAAQ+d,gBAChD9C,EAAO/nC,SAAW8sB,EAAQge,MAC1B/C,EAAOgD,wBAA0Bh5F,EAAK+6E,QAAQke,yBAC9CjD,EAAO/wE,aAAe81D,EAAQ91D,aAC9B+wE,EAAO9uE,gBAAkB6zD,EAAQ7zD,gBACjC8uE,EAAOkD,oBAA4C5uF,IAA3BywE,EAAQme,gBAAsCne,EAAQme,cAChF,MACElD,EAAOrxF,KAAO3E,EAAK2F,QACnBqwF,EAAO9yB,QAAUljE,EAAKu4F,aAGxBvC,EAAO/yE,sBAAwBjjB,EAAKm5F,eACpCnD,EAAOoD,oBAAsBp5F,EAAKq5F,uBAClCrD,EAAOsD,cAAgBt5F,EAAKs5F,cAER,YAAhBtD,EAAOvwF,OACTuwF,EAAOpzE,iBAAmBkrE,EAAY9tF,EAAKu5B,SAG7Cy8D,EAAOuD,iBAAmBpD,IAAOn2F,EAAKu4F,cACtCvC,EAAOwD,aAAex5F,EAAKuF,IAC3BywF,EAAOnuE,KAAO7nB,EAAK6nB,KACfmuE,EAAOnuE,OACTmuE,EAAOnuE,KAAKghD,SAAWmtB,EAAOnuE,KAAKghD,SAAW,IAAI/pE,KAAI,SAAA0vE,GAAK,cACtDA,GAAK,IACRirB,WAAYtD,IAAO3nB,EAAM37D,QAAM,KAGnCmjF,EAAO/gE,OAASj1B,EAAKi1B,OACrB+gE,EAAO0B,MAAQ13F,EAAK03F,KACtB,MACE1B,EAAO9yE,UAAYljB,EAAKkjB,UACxB8yE,EAAO7yE,SAAWnjB,EAAKmjB,SAEvB6yE,EAAO7wE,SAAWnlB,EAAKmlB,SACvB6wE,EAAO5wE,WAAaplB,EAAKolB,WAKzB4wE,EAAOvwF,KA3Ve,SAACkb,GACzB,OAAIA,EAAO+4E,aACF,SAGL/4E,EAAOiC,iBACF,UAGkB,iBAAfjC,EAAO2C,KAAoB3C,EAAO2C,IAAIniB,MAAM,gCAC5B,iBAAhBwf,EAAOhc,MAAqBgc,EAAOhc,KAAKxD,MAAM,aACjD,WAGLwf,EAAOhc,KAAKxD,MAAM,yBAA2Bwf,EAAOg5E,sBAC/C,WAGLh5E,EAAOhc,KAAKxD,MAAM,sBAAiD,WAAzBwf,EAAOi5E,cAC5C,SAGF,SACT,CAoUkBC,CAAkB75F,QAEdsK,IAAdtK,EAAK+lB,MACPiwE,EAAOjwE,KAAO+zE,EAAO95F,GACjBA,EAAK4iB,mBACPozE,EAAOjwE,KAAO/lB,EAAK4iB,iBAAiBmD,OAGtCiwE,EAAOjwE,KAAO/lB,EAAK+lB,KAGrBiwE,EAAO7yB,SAAWnjE,EAAK+5F,eACvB/D,EAAOrxF,KAAO3E,EAAK2E,KAEnBqxF,EAAO/yE,sBAAwBjjB,EAAKijB,sBACpC+yE,EAAOoD,oBAAsBp5F,EAAKo5F,oBAClCpD,EAAOgD,wBAA0Bh5F,EAAKg5F,wBACtChD,EAAOx0E,0BAA4BxhB,EAAKwhB,0BAEpB,YAAhBw0E,EAAOvwF,OACTuwF,EAAOpzE,iBAAmBkrE,EAAY9tF,EAAK4iB,mBAG7CozE,EAAO9yB,QAAUljE,EAAKkjE,QACtB8yB,EAAOgE,aAAeh6F,EAAKg6F,aAC3BhE,EAAOwD,aAAex5F,EAAKw5F,aAC3BxD,EAAO/nC,SAAWjuD,EAAKiuD,SAGzB+nC,EAAOt2F,GAAKgG,OAAO1F,EAAKN,IACxBs2F,EAAOzzE,WAAaviB,EAAKuiB,WACzByzE,EAAOiE,KAAOj6F,EAAKi6F,KACnBjE,EAAOvyD,WAAa,IAAIjU,KAAKxvB,EAAKyjC,YAGlCuyD,EAAO/yE,sBAAwB+yE,EAAO/yE,sBAClCvd,OAAOswF,EAAO/yE,uBACd,KACJ+yE,EAAOoD,oBAAsBpD,EAAOoD,oBAChC1zF,OAAOswF,EAAOoD,qBACd,KAEJpD,EAAOhzF,KAAO4pF,EAAUqJ,EAAQj2F,EAAKm8B,QAAUn8B,EAAKgD,MAEpDgzF,EAAOhvF,aAAeivF,EAAQj2F,EAAK8f,SAAW9f,EAAKgH,aAAe,IAAIlI,IAAI8tF,GAE1EoJ,EAAOx1E,cAAgBy1E,EAAQj2F,EAAKk6F,kBAAoBl6F,EAAKwgB,cAAgB,IAC1E1hB,IAAIuxF,GAEP,IAAM1tE,EAAkBszE,EAAQj2F,EAAKu5B,OAASv5B,EAAK4iB,iBAYnD,OAXID,IACFqzE,EAAOpzE,iBAAmBkrE,EAAYnrE,IAGxCqzE,EAAOjxE,YAAc,GACrBixE,EAAO1wE,YAAc,GAEjBzlB,OAAOiiC,UAAU5d,eAAelW,KAAKhO,EAAM,mBAC7CH,OAAO2c,OAAOw5E,EAAQh2F,EAAKgvF,gBAGtBgH,CACT,EAEajI,EAAoB,SAAC/tF,GAChC,IAKMg2F,EAAS,CAAC,EAEhB,GAHen2F,OAAOiiC,UAAU5d,eAAelW,KAAKhO,EAAM,SAoBnD,CACL,IAAMm6F,EAAerM,EAAY9tF,EAAKiS,QACtC+jF,EAAOvwF,KAAOzF,EAAKo6F,MACnBpE,EAAO7xE,KAAOjd,QAAQlH,EAAKq6F,SAC3BrE,EAAOr1E,OAAyB,SAAhBq1E,EAAOvwF,KACnBqoF,EAAY9tF,EAAKiS,OAAOqoF,kBACxBH,EACJnE,EAAOzyE,OAAS42E,EAChBnE,EAAO5gE,aAA+B,yBAAhB4gE,EAAOvwF,KAAkCmnF,EAAU5sF,EAAKm8B,SAAWywD,EAAU5sF,EAAKo1B,aAC1G,MAzBE4gE,EAAOvwF,KARS,CAChB2zB,UAAW,OACXG,OAAQ,UAMgBv5B,EAAKyF,OAASzF,EAAKyF,KAC3CuwF,EAAO7xE,KAAOnkB,EAAK+6E,QAAQsf,QAC3BrE,EAAOr1E,QAASqD,EAAAA,EAAAA,IAAqBgyE,EAAOvwF,MAAQqoF,EAAY9tF,EAAK2gB,QAAU,KAC/Eq1E,EAAOzyE,OAASyyE,EAAOr1E,OACvBq1E,EAAOtvF,OAAyB,SAAhBsvF,EAAOvwF,KACnB,KACAmnF,EAAU5sF,EAAK0G,QACnBsvF,EAAO5gE,aAAew3D,EAAU5sF,EAAKm8B,SACrC65D,EAAO71F,MAAQH,EAAKG,MAChBH,EAAKikB,SACP+xE,EAAO/xE,OAASjkB,EAAKikB,OACrB+xE,EAAO/xE,OAAOte,QAAU3F,EAAKikB,OAAOte,QACpCqwF,EAAO/xE,OAAOq6B,KAAOsuC,EAAU5sF,EAAKikB,OAAOkY,SAC3C65D,EAAO/xE,OAAOs2E,MAAQ3N,EAAU5sF,EAAKikB,OAAOs2E,OAC5CvE,EAAO/xE,OAAO5F,SAAWre,EAAKikB,OAAO5F,SAASvf,IAAIgvF,IAgBtD,OAHAkI,EAAOvyD,WAAa,IAAIjU,KAAKxvB,EAAKyjC,YAClCuyD,EAAOt2F,GAAK8hF,SAASxhF,EAAKN,IAEnBs2F,CACT,EAEM8D,EAAS,SAACn5E,GAEd,OAAQA,EAAO/F,MAAQ,IAAI/X,SAAS,YAAc8d,EAAOhc,MAAQ,IAAIxD,MADnD,SAEpB,EAEautF,EAA4B,SAAC8L,GAA0B,IAAdt+D,EAAO,UAAH,6CAAG,CAAC,EACtDyyD,EAAUzyD,EAAKyyD,QACf8L,EAAmBC,IAAgBF,GACzC,GAAKC,EAAL,CACA,IAAM97E,EAAQ87E,EAAiBx1F,KAAK01F,OAC9B/7E,EAAQ67E,EAAiBG,KAAKC,OAEpC,MAAO,CACLl8E,MAAOgwE,EAAUhwE,EAAQ6iE,SAAS7iE,EAAO,IACzCC,MAAO+vE,EAAU/vE,EAAQ4iE,SAAS5iE,EAAO,IANd,CAQ/B,EAEa2wB,EAAY,SAAC3T,GACxB,IAAMo6D,EAAS,CAAC,EAMhB,OALAA,EAAOt2F,GAAKk8B,EAAKl8B,GACjBs2F,EAAO75D,QAAUywD,EAAUhxD,EAAKO,SAChC65D,EAAOzlD,OAAS3U,EAAK2U,OACrBylD,EAAOn6D,YAAckV,EAAiBnV,EAAKk/D,cAC3C9E,EAAOxlD,WAAa,IAAIhhB,KAAKoM,EAAK4U,YAC3BwlD,CACT,EAEajlD,EAAmB,SAAC9jB,GAC/B,GAAKA,EAAL,CACA,GAAIA,EAAQi9C,aAAgB,OAAOj9C,EACnC,IAAM+oE,EAAS/oE,EAef,OAdA+oE,EAAOt2F,GAAKutB,EAAQvtB,GACpBs2F,EAAOvyD,WAAa,IAAIjU,KAAKvC,EAAQwW,YACrCuyD,EAAOtqD,QAAUze,EAAQye,QACzBsqD,EAAOt1F,OAASusB,EAAQvsB,OACxBs1F,EAAOrwF,QAAUsnB,EAAQtnB,QACrBsnB,EAAQoP,WACV25D,EAAOx1E,YAAc,CAAC6vE,EAAgBpjE,EAAQoP,aAE9C25D,EAAOx1E,YAAc,GAEvBw1E,EAAOlqD,UAAY7e,EAAQ6e,QAC3BkqD,EAAO1kF,OAAQ,EACf0kF,EAAOjqD,gBAAkB9e,EAAQ8e,gBACjCiqD,EAAO9rB,cAAe,EACf8rB,CAjBgB,CAkBzB,C,+BClgBA,IACQ+E,EACAC,EACAC,EAmBAC,EAEAC,E,iBA0CR,SAjEQJ,EAAW,GACXC,EAAe,IACfC,EAAgB,IAmBhBC,EAAgB,SAAC98C,GAAG,OAAKA,EAAIg9C,UAAkC,IAAtBh9C,EAAIi9C,aAAmB,EAmC/D,CACLC,mBApDyB,WACX1oF,SAAS2oF,iBAAiB,oBAClCxgF,SAAQ,SAAA+7E,GACZ,GAAIA,EAAS,CACX,IAAM0E,EAAY5oF,SAAS6oF,cAAc,UACzCD,EAAUloF,MAAQ0nF,EAClBQ,EAAUzzE,OAASkzE,EACnB,IAAMS,EAAS,IAAIC,MACnBD,EAAOE,YAAc,YACrBF,EAAO18C,IAAM83C,EAAQtwF,KACrB,IAAMq1F,EAAaL,EAAUM,WAAW,MACxCf,EAAS31F,KAAK,CAAEo2F,UAAAA,EAAWE,OAAAA,EAAQG,WAAAA,EAAY/E,QAAAA,GACjD,CACF,GACF,EAuCEqE,kBAnCIA,EAAoB,WACA,IAApBJ,EAAS35F,QACb25F,EAAShgF,SAAQ,YAAgD,IAA7C2gF,EAAM,EAANA,OAAQF,EAAS,EAATA,UAAWK,EAAU,EAAVA,WAAY/E,EAAO,EAAPA,QAC5C4E,GAAWG,GAAe/E,IAE/B+E,EAAWE,UAAU,EAAG,EAAGf,EAAcC,GACrCC,EAAcQ,IAChBG,EAAWG,UAAUN,EAAQ,EAAG,EAAGA,EAAOpoF,MAAOooF,EAAO3zE,OAAQ,EAAG,EAAGizE,EAAcC,GAEtFnE,EAAQtwF,KAAOg1F,EAAUS,UAAU,aACrC,GACF,EAyBEC,iBAvBuB,WACC,IAApBnB,EAAS35F,SACb+5F,IACAJ,EAAShgF,SAAQ,YAAgD,IAA7C2gF,EAAM,EAANA,OAAQF,EAAS,EAATA,UAAWK,EAAU,EAAVA,WAAY/E,EAAO,EAAPA,QACjD,GAAK4E,GAAWG,GAAeA,EAA/B,CAEA,IAAM/yC,EAAQo1B,iBAAiBtrE,SAAS8b,MAClCytE,EAAa,GAAH,OAAMrzC,EAAMq1B,iBAAiB,wBAA0B,sBAEnE+c,EAAcQ,IAChBG,EAAWG,UAAUN,EAAQ,EAAG,EAAGA,EAAOpoF,MAAOooF,EAAO3zE,OAAQ,EAAG,EAAGizE,EAAcC,GAEtFY,EAAWO,UAAYD,EACvBN,EAAWQ,YACXR,EAAWS,IAAItB,GA/CC,MA+CqD,EAAG,EAAIz5F,KAAKg7F,IAAI,GACrFV,EAAW/8C,OACXg4C,EAAQtwF,KAAOg1F,EAAUS,UAAU,YAZc,CAanD,IACF,G,gDCxCF,QAH8B,CAC5BO,eAbqB,SAACC,GACtB,IAAMC,EAAQ,CAAC,IAAK,MAAO,MAAO,MAAO,OACrC9+C,EAAM6+C,EACV,GAAI7+C,EAAM,EACR,OAAOA,EAAM,IAAM8+C,EAAM,GAG3B,IAAMC,EAAWp7F,KAAKyjC,IAAIzjC,KAAKk/D,MAAMl/D,KAAKoiB,IAAIi6B,GAAOr8C,KAAKoiB,IAAI,OAAQ+4E,EAAMt7F,OAAS,GAGrF,MAAO,CAAEw8C,IAFTA,EAAoD,GAA7CA,EAAMr8C,KAAK+xF,IAAI,KAAMqJ,IAAWC,QAAQ,GAEjC/+C,KADD6+C,EAAMC,GAErB,E,gDCRA,IAAM95B,EAAW,SAAAj6B,GACf,OAAIA,EAASznC,MAAM,SACV,QAGLynC,EAASznC,MAAM,cACV,OAGLynC,EAASznC,MAAM,SACV,QAGLynC,EAASznC,MAAM,SACV,QAGLynC,EAASznC,MAAM,SACV,QAGF,SACT,EAUA,QALwB,CACtB0hE,SAAAA,EACAg6B,oBAL0B,SAACl6B,EAAOC,GAAI,OACtCD,EAAMz4D,MAAK,SAAAzE,GAAI,OAAIo9D,EAASD,EAAKh6B,YAAcnjC,CAAI,GAAC,E,6FCxBhDq3F,EAAuB,CAC3BC,QAAS,KACTC,QAAS,UACTC,GAAI,WAGAC,EAA0B,SAAA19F,GAAI,OAAIs9F,EAAqBt9F,IAASA,CAAI,EAEpE29F,EAA0B,SAAA39F,GAAI,OAAI09F,EAAwB19F,GAAMwE,QAAQ,IAAK,IAAI,EAMjFo5F,EAAkB,SAAC59F,GACvB,IAKM69F,EALuB,CAC3BN,QAAS,WACTE,GAAI,OACJD,QAAS,QAE+Bx9F,IAAS89F,EAAAA,EAAAA,cAAsB99F,GACnE2tE,EAAgB+vB,EAAwB19F,GAC9C,OAAO69F,EAAaE,OAAO,GAAGC,kBAAkBrwB,GAAiBkwB,EAAan6F,MAAM,EACtF,EAEM8L,EAAY,IAAMyuF,EAAAA,EAAAA,WAA2B,SAACj+F,GAAI,MAAM,CAAEA,KAAAA,EAAMiC,KAAM27F,EAAgB59F,GAAO,IAAGqC,MAAK,SAACC,EAAGC,GAAC,OAAKD,EAAEL,KAAKq/E,cAAc/+E,EAAEN,KAAK,IAUjJ,QARsB,CACpBy7F,wBAAAA,EACAC,wBAAAA,EACAO,6BArBmC,SAAAtuF,GAEnC,OADchL,MAAMoF,QAAQ4F,GAASA,EAAQ,CAACA,IACjCtQ,IAAIq+F,GAAyBlyF,KAAK,IACjD,EAmBE+D,UAAAA,EACAouF,gBAAAA,E,oLChCWroB,EAAyB,SAAA10E,GAAK,OAAIA,EAAM6B,MAAMmc,SAASsB,cAAc3f,IAAI,EAEzE29F,EAAe,SAAAt9F,GAC1B,IAAMqS,EAAYrS,EAAMqS,WAAarS,EAAM6B,MAE3C,MAAQ,CACNwQ,EAAU8K,OAAOwa,uBAAuBqB,OAAS,OACjD3mB,EAAU8K,OAAOwa,uBAAuBlY,UAAY,UACpDpN,EAAU8K,OAAOwa,uBAAuBwB,SAAW,SACnD9mB,EAAU8K,OAAOwa,uBAAuBmB,SAAW,SACnDzmB,EAAU8K,OAAOwa,uBAAuB4uD,eAAiB,iBACzDl0E,EAAU8K,OAAOwa,uBAAuB0B,OAAS,OACjDhnB,EAAU8K,OAAOwa,uBAAuB/Q,gBAAkB,yBAC1DvU,EAAU8K,OAAOwa,uBAAuBoR,SAAW,iBACnD12B,EAAU8K,OAAOwa,uBAAuB4S,OAAS,QACjD9pC,QAAO,SAAA0L,GAAC,OAAIA,CAAC,GACjB,EAEMoxF,EAAsB,CAAC,OAAQ,UAAW,SAAU,yBAA0B,QAEvE55E,EAAuB,SAACve,GAAI,OAAK,IAASm4F,EAAqBn4F,EAAK,EAEpEse,EAAsB,SAACrC,GAClC,QAAIsC,EAAqBtC,EAAajc,QAAUic,EAAaf,OAI/D,EAEMG,EAAW,SAAChf,EAAGC,GACnB,IAAMgf,EAAO3B,OAAOtd,EAAEpC,IAChBshB,EAAO5B,OAAOrd,EAAErC,IAChBuhB,GAAU7B,OAAO8B,MAAMH,GACvBI,GAAU/B,OAAO8B,MAAMF,GAC7B,OAAIC,GAAUE,EACLJ,EAAOC,GAAQ,EAAI,EACjBC,IAAWE,EACb,GACGF,GAAUE,GAGbrf,EAAEpC,GAAKqC,EAAErC,IAFR,EAEkB,CAE9B,EAOauoB,EAAwB,SAAC5nB,EAAOqhB,GAC3C,IAAMhP,EAAYrS,EAAMqS,WAAarS,EAAM6B,MAE3C,IAAIwf,EAAayC,MACZw5E,EAAat9F,GAAOwC,SAAS6e,EAAajc,QACrB,YAAtBic,EAAajc,OAVS,SAACpF,EAAOqhB,GAClC,GAAKA,EAAaf,OAClB,OAAOe,EAAaf,OAAO+2E,QAASmG,EAAAA,EAAAA,GAAan8E,EAAaf,OAAQtgB,EAAMgT,YAAYG,aAAaszE,WAAW1lF,OAAS,CAC3H,CAOyC08F,CAAoBz9F,EAAOqhB,IAAlE,CAEA,IAAMq8E,EAAqBC,EAA0Bt8E,EAAcrhB,EAAMgT,YAAY3D,OACrF6sB,EAAAA,EAAAA,GAAwB7pB,EAAWqrF,EAHoD,CAIzF,EAEaE,EAAiC,SAAC59F,EAAOsiE,GAEpD,IAAIu7B,EAAsBnpB,EAAuB10E,GAAOvB,KAAI,SAAA0N,GAAC,OAAIA,CAAC,IAAE3K,KAAKif,GAEzE,OADAo9E,EAAsB,IAAOA,EAAqB,SACvBp9F,QACzB,SAAC4gB,GAAY,OAAMihD,GAASg7B,EAAat9F,IAAQwC,SAAS6e,EAAajc,KAAK,GAEhF,EAEa4iD,EAA+B,SAAAhoD,GAAK,OAC/C,IAAO49F,EAA+B59F,IAAQ,YAAO,SAAJ8jB,IAAgB,GAAC,EAEvD65E,EAA4B,SAACt8E,EAAchS,GACtD,IAOIyuF,EAPEC,EAAW,CACf16F,IAAKge,EAAahiB,IAEdihB,EAASe,EAAaf,OACtB9N,EAAQ6O,EAAa0T,aAAa3zB,KAIxC,OAHA28F,EAASvrF,MAAQA,EACjBurF,EAAS1vF,KAAOgT,EAAa0T,aAAagH,kBAElC1a,EAAajc,MACnB,IAAK,OACH04F,EAAa,gBACb,MACF,IAAK,SACHA,EAAa,eACb,MACF,IAAK,SACHA,EAAa,eACb,MACF,IAAK,OACHA,EAAa,cACb,MACF,IAAK,iBACHA,EAAa,iBACb,MACF,IAAK,iBACHA,EAAa,mBACb,MACF,IAAK,OACHA,EAAa,aAkBjB,MAd0B,2BAAtBz8E,EAAajc,KACf24F,EAAS1vE,KAAOhf,EAAK/P,EAAE,6BAA8B,CAAC+hB,EAAavhB,QAC1Dg+F,EACTC,EAAS1vE,KAAOhf,EAAK/P,EAAE,iBAAmBw+F,GACjCn6E,EAAqBtC,EAAajc,QAC3C24F,EAAS1vE,KAAOhN,EAAaf,OAAOhc,MAIlCgc,GAAUA,EAAOH,aAAeG,EAAOH,YAAYpf,OAAS,IAAMuf,EAAOoF,MAC3EpF,EAAOH,YAAY,GAAGooB,SAASjnC,WAAW,YAC1Cy8F,EAAS7vF,MAAQoS,EAAOH,YAAY,GAAGjb,KAGlC64F,CACT,C,qFCxHMC,EAA4B,CAChC,UACA,YACA,SACA,SACA,OACA,yBACA,kBAOIjyE,EAAiB,SAAH,GAAqD,IAA/C/rB,EAAK,EAALA,MAAO6d,EAAW,EAAXA,YAAW,IAAEiE,MAAAA,OAAK,IAAG,GAAK,EAAEmK,EAAK,EAALA,MACrDjY,EAAO,CAAE6J,YAAAA,GACP3D,EAAYla,EAAZka,QAEFgS,GADYlsB,EAAMqS,WAAarS,EAAM6B,OACZmc,SAASsB,cAClC5J,EAAiBwE,EAAQ/G,aAAauC,eAM5C,GAJA1B,EAAKi6E,aAAe+P,EACpBhqF,EAAKqY,WAAa3W,EAElB1B,EAAKgN,SAAW,gBACZc,EAIF,OAHIoK,EAAa3N,QAAUQ,OAAOC,oBAChChL,EAAKgY,MAAQE,EAAa3N,OAErBgP,EAAmB,CAAEvtB,MAAAA,EAAOgU,KAAAA,EAAM8N,MAAAA,SAG3B7X,IAAVgiB,GAAuBC,EAAa5N,QAAUS,OAAOC,kBACvDhL,EAAKiY,MAAQC,EAAa5N,MACP,OAAV2N,IACTjY,EAAKiY,MAAQA,GAEf,IAAM3oB,EAASiqB,EAAmB,CAAEvtB,MAAAA,EAAOgU,KAAAA,EAAM8N,MAAAA,IAO3CxC,EAAgB4M,EAAavsB,KAC7Bs+F,EAAgB3+E,EAAc7e,QAAO,SAAAqR,GAAC,OAAIA,EAAEgS,IAAI,IAAErlB,KAAI,SAAAqT,GAAC,OAAIA,EAAEzS,EAAE,IAOrE,OANwBigB,EAAcve,OAASk9F,EAAcl9F,OACvC,GAAKk9F,EAAcl9F,OAAS,IAChDiT,EAAKiY,MAAQ/qB,KAAKC,IAAG,MAARD,MAAI,OAAQ+8F,IACzB1wE,EAAmB,CAAEvtB,MAAAA,EAAOgU,KAAAA,EAAM8N,MAAAA,KAG7Bxe,CAEX,EAEMiqB,EAAqB,SAAH,GAA+B,IAAzBvtB,EAAK,EAALA,MAAOgU,EAAI,EAAJA,KAAM8N,EAAK,EAALA,MACzC,OAAOlE,EAAAA,GAAAA,cAAyB5J,GAC7BhV,MAAK,SAACutB,GACL,GAAIA,EAASC,OACX,MAAM,IAAIttB,MAAM,GAAD,OAAIqtB,EAASjM,OAAM,YAAIiM,EAASE,aAEjD,IAAMnN,EAAgBiN,EAAS5sB,KAE/B,OAtDS,SAAH,GAAwC,IAA3B2f,EAAa,EAAbA,cAAewC,EAAK,EAALA,MAAjB,EAAL9hB,MACV4B,SAAS,sBAAuB,CAAE0d,cAAAA,EAAewC,MAAAA,GACzD,CAmDM6K,CAAO,CAAE3sB,MAAAA,EAAOsf,cAAAA,EAAewC,MAAAA,IACxBxC,CACT,IAAE,OACK,SAACrO,GACNjR,EAAM4B,SAAS,mBAAoB,CACjC0J,MAAO,QACPuH,WAAY,sBACZC,YAAa,CAAC7B,EAAM2b,SACpB5qB,QAAS,MAEX0Z,QAAQzK,MAAMA,EAChB,GACJ,EAiBA,QAL6B,CAC3B8a,eAAAA,EACAe,cAZoB,SAAH,GAA+B,IAAzBjP,EAAW,EAAXA,YAAa7d,EAAK,EAALA,MAIpCqC,YAAW,kBAAMrC,EAAM4B,SAAS,2BAA2B,EAAM,GAAE,KACnE,IAAMorB,EAAsB,WAAH,OAASjB,EAAe,CAAElO,YAAAA,EAAa7d,MAAAA,GAAQ,EAExE,OADAgtB,KACOD,EAAAA,EAAAA,GAAgBC,EAAqB,IAC9C,E,gDC1FO,IAAMkxE,EAAa,SAAbA,EAAcC,EAAO5hC,GAA6D,6DAA7B,CAAC,EAAC,IAAxBoD,IAAAA,OAAG,IAAG,IAAC,MAAEwG,KAAAA,OAAI,IAAG,IAAC,EAASi4B,IAAgB,UAAH,+CAC3E96F,EAAS,CACbq8D,IAAKA,EAAMw+B,EAAMv+B,UACjBuG,KAAMA,EAAOg4B,EAAME,YAErB,IAAKD,GAAiBD,IAAUr4F,OAAQ,CACtC,MAAoCw4F,EAAYH,GAAxCI,EAAU,EAAVA,WAAYC,EAAW,EAAXA,YACpBl7F,EAAOq8D,KAAOy+B,EAAgB,EAAIG,EAClCj7F,EAAO6iE,MAAQi4B,EAAgB,EAAII,CACrC,CAEA,GAAIL,EAAMM,cAAyE,WAAzD34F,OAAO+3E,iBAAiBsgB,EAAMM,cAAcC,WAA0BniC,IAAWz2D,QAAUy2D,EAAOoiC,SAASR,EAAMM,eAAiBliC,IAAW4hC,EAAMM,cAC3K,OAAOP,EAAWC,EAAMM,aAAcliC,EAAQj5D,GAAQ,GAEtD,GAAIi5D,IAAWz2D,OAAQ,CACrB,MAAoCw4F,EAAY/hC,GAAxCgiC,EAAU,EAAVA,WAAYC,EAAW,EAAXA,YACpBl7F,EAAOq8D,KAAO4+B,EACdj7F,EAAO6iE,MAAQq4B,CACjB,CACA,OAAOl7F,CAEX,EAEMg7F,EAAc,SAACnxB,GACnB,IAAMyxB,EAAgB94F,OAAO+3E,iBAAiB1Q,GAAI,eAC5CoxB,EAAax/E,OAAO6/E,EAAcl7F,UAAU,EAAGk7F,EAAc79F,OAAS,IACtE89F,EAAiB/4F,OAAO+3E,iBAAiB1Q,GAAI,gBAGnD,MAAO,CAAEoxB,WAAAA,EAAYC,YAFDz/E,OAAO8/E,EAAen7F,UAAU,EAAGm7F,EAAe99F,OAAS,IAGjF,C,gDCvBO,IAAMgsB,EAAkB,SAAC+xE,EAAaxsD,GAC3C,IAAIysD,GAAU,EACV/8F,EAAU,KAuBd,OAFAA,EAAU8D,OAAOzD,YAnBJ,SAAP0rB,IACJ,IAAMixE,EAAUF,IAGVE,GAAWA,EAAO,QAIxBA,EAAO,SAAS,WACVD,IACJ/8F,EAAU8D,OAAOzD,WAAW0rB,EAAMukB,GACpC,IANE52B,QAAQC,KAAK,6EAOjB,GAOkC22B,GAE3B,CAAEvV,KAPW,WAClBgiE,GAAU,EACVj5F,OAAOvD,aAAaP,EACtB,EAKF,C,wEC/Baw7F,EAAe,SAACl9E,EAAQmmE,GACnC,IAAMh6D,EAAanM,EAAOhc,KAAK/D,cACzB0+F,EAAgB3+E,EAAOuiD,QAAQtiE,cAKrC,OAJa,IAAOkmF,GAAW,SAACyY,GAC9B,OAAOzyE,EAAWjqB,SAAS08F,EAAS3+F,gBAAkB0+F,EAAcz8F,SAAS08F,EAAS3+F,cACxF,GAGF,C,kFCiGA,QAP4B,CAC1BmvD,WAlGiB,SAAH,GAYV,IAXJ1vD,EAAK,EAALA,MACAsgB,EAAM,EAANA,OACA+uC,EAAW,EAAXA,YACAntC,EAAU,EAAVA,WACAotC,EAAS,EAATA,UACA9nC,EAAI,EAAJA,KAAI,IACJ7H,MAAAA,OAAK,IAAG,KAAE,MACV2vE,kBAAAA,OAAiB,IAAG,OAAArlF,EAAS,MAC7BslD,YAAAA,OAAW,IAAG,eAAY,MAC1B5L,QAAAA,OAAO,IAAG,GAAK,MACfgmB,eAAAA,OAAc,IAAG,KAAE,EAEb0lB,EAAW,IAAI1vE,EAAO,MAE5B,OAAO/B,EAAAA,GAAAA,WAAsB,CAC3BC,YAAa7d,EAAM6B,MAAMa,MAAM2Q,YAAYwK,YAC3CyC,OAAAA,EACA+uC,YAAAA,EACAntC,WAAAA,EACAotC,UAAAA,EACA+/B,SAAAA,EACAC,kBAAAA,EACA//B,YAAAA,EACA/nC,KAAAA,EACAm8B,QAAAA,EACAgmB,eAAAA,IAEC3qE,MAAK,SAACW,GASL,OARKA,EAAKsR,OAAU0yC,GAClB3jD,EAAM4B,SAAS,iBAAkB,CAC/Boc,SAAU,CAACre,GACXqhB,SAAU,UACVO,iBAAiB,EACjBC,YAAY,IAGT7hB,CACT,IAAE,OACK,SAACoxB,GACN,MAAO,CACL9f,MAAO8f,EAAInE,QAEf,GACJ,EAuDEmiC,WArDiB,SAAH,GASV,IARJ/uD,EAAK,EAALA,MACAob,EAAQ,EAARA,SACAkF,EAAM,EAANA,OACA+uC,EAAW,EAAXA,YACAC,EAAS,EAATA,UACA9nC,EAAI,EAAJA,KAAI,IACJ7H,MAAAA,OAAK,IAAG,KAAE,MACV4vC,YAAAA,OAAW,IAAG,eAAY,EAEpB8/B,EAAW,IAAI1vE,EAAO,MAE5B,OAAO/B,EAAAA,GAAAA,WAAsB,CAC3Bve,GAAI+b,EACJyC,YAAa7d,EAAM6B,MAAMa,MAAM2Q,YAAYwK,YAC3CyC,OAAAA,EACA+uC,YAAAA,EACAC,UAAAA,EACA9nC,KAAAA,EACA6nE,SAAAA,EACA9/B,YAAAA,IAECvwD,MAAK,SAACW,GASL,OARKA,EAAKsR,OACRjR,EAAM4B,SAAS,iBAAkB,CAC/Boc,SAAU,CAACre,GACXqhB,SAAU,UACVO,iBAAiB,EACjBC,YAAY,IAGT7hB,CACT,IAAE,OACK,SAACoxB,GAEN,OADArV,QAAQzK,MAAM,uBAAwB8f,GAC/B,CACL9f,MAAO8f,EAAInE,QAEf,GACJ,EAeEkjE,YAbkB,SAAH,GAA4B,IAAtB9vF,EAAK,EAALA,MAAO+vF,EAAQ,EAARA,SACtBlyE,EAAc7d,EAAM6B,MAAMa,MAAM2Q,YAAYwK,YAClD,OAAOD,EAAAA,GAAAA,YAAuB,CAAEC,YAAAA,EAAakyE,SAAAA,GAC/C,EAWEE,oBAT0B,SAAH,GAAmC,IAA7BjwF,EAAK,EAALA,MAAOX,EAAE,EAAFA,GAAIylD,EAAW,EAAXA,YAClCjnC,EAAc7d,EAAM6B,MAAMa,MAAM2Q,YAAYwK,YAClD,OAAOD,EAAAA,GAAAA,oBAA+B,CAAEC,YAAAA,EAAaxe,GAAAA,EAAIylD,YAAAA,GAC3D,E,q0BC7FO,IAAMrnC,EAAa,SAACvd,GACzB,IAAQi/F,EAAUC,EAAel/F,GAAzBi/F,MACFE,EAAO9sF,SAAS8sF,KAChBhxE,EAAO9b,SAAS8b,KACtBA,EAAK4vD,UAAUv7D,IAAI,UAEnB,IAAM48E,EAAU/sF,SAAS6oF,cAAc,SACvCiE,EAAKE,YAAYD,GACjB,IAAME,EAAaF,EAAQG,MAE3BD,EAAWjzD,WACXizD,EAAWE,WAAW,WAAD,OAAYP,EAAMQ,MAAK,MAAM,aAClDH,EAAWE,WAAW,WAAD,OAAYP,EAAMrZ,OAAM,MAAM,aACnD0Z,EAAWE,WAAW,WAAD,OAAYP,EAAMS,QAAO,MAAM,aACpDJ,EAAWE,WAAW,WAAD,OAAYP,EAAMU,MAAK,MAAM,aAClDxxE,EAAK4vD,UAAUE,OAAO,SACxB,EAEM2hB,EAAgB,SAAH,GAA+D,MAC/E,CAAE9Y,mBADsC,EAAlBA,mBACAC,mBADsC,EAAlBA,mBACAC,kBADqC,EAAjBA,kBACD,EAE1D6Y,EAAuBD,EAAc5gF,EAAAA,IAE9BijE,EAAc,SAAChlE,GAC1B,IAAM6iF,EAAUF,EAAc3iF,GAE9B,GAAI6iF,IAAYD,EAAhB,CAIA,IAAMV,EAAO9sF,SAAS8sF,KAChBhxE,EAAO9b,SAAS8b,KACtBA,EAAK4vD,UAAUv7D,IAAI,UAEnB,IAAMy8E,EAAQ3/F,OACXsd,QAAQkjF,GACRv/F,QAAO,+BAAM,OAAH,KAAG,IAAO,IACpBhC,KAAI,+BAAEuC,EAAC,KAAEkD,EAAC,uBAAWlD,EAAC,aAAKkD,EAAC,IAAI0G,KAAK,KAElC00F,EAAU/sF,SAAS6oF,cAAc,SACvCiE,EAAKE,YAAYD,GACjB,IAAME,EAAaF,EAAQG,MAE3BD,EAAWjzD,WACXizD,EAAWE,WAAW,WAAD,OAAYP,EAAK,MAAM,aAC5C9wE,EAAK4vD,UAAUE,OAAO,SAjBtB,CAkBF,EAEa8hB,EAAe,SAAC//F,EAAOggG,GAClC,OAAqB,IAAjBhgG,EAAMa,OACD,OAGFb,EACJO,QAAO,SAAA0L,GAAC,OAAI+zF,EAAiB/zF,EAAEg0F,MAAQh0F,CAAC,IACxC1N,KAAI,SAAC2hG,GAAI,MAAK,CACbA,EAAK1hD,EACL0hD,EAAK1gD,EACL0gD,EAAKlxB,KACLkxB,EAAKC,QACL5hG,KAAI,SAAA0N,GAAC,OAAIA,EAAI,IAAI,IAAExL,OAAO,EAC1B6zF,EAAAA,EAAAA,IAAY4L,EAAK/Y,MAAO+Y,EAAKE,OAC7BF,EAAKD,MAAQ,QAAU,KACtBv1F,KAAK,IAAI,IAAEA,KAAK,KACvB,EAEM21F,EAAqB,SAACrgG,GAC1B,OAAqB,IAAjBA,EAAMa,OACD,OAGFb,EAEJO,QAAO,SAAC2/F,GAAI,OAAMA,EAAKD,OAAiC,IAAxBphF,OAAOqhF,EAAKC,OAAa,IACzD5hG,KAAI,SAAC2hG,GAAI,MAAK,CACbA,EAAK1hD,EACL0hD,EAAK1gD,EAEL0gD,EAAKlxB,KAAO,GACZzwE,KAAI,SAAA0N,GAAC,OAAIA,EAAI,IAAI,IAAExL,OAAO,EAC1B6zF,EAAAA,EAAAA,IAAY4L,EAAK/Y,MAAO+Y,EAAKE,SAC5B11F,KAAK,IAAI,IACXnM,KAAI,SAAA0N,GAAC,4BAAmBA,EAAC,QACzBvB,KAAK,IACV,EAEa41F,EAAiB,SAAC7rF,GAC7B,IAAM8rF,EAAgB9rF,EAAU4I,mBAE5B5I,EAAUmxE,QAAUnxE,EADpB+rF,EAAW/rF,EAAUmxE,QAAUnxE,GAGnC,GAA4BgsF,EAAAA,EAAAA,IAAUF,EAAc9rF,EAAUq4C,SAAW,CAAC,GAAlE84B,EAAM,EAANA,OAAQ94B,EAAO,EAAPA,QAEV4zC,EAAaphG,OAAOsd,QAAQgpE,GAC/BzxE,QAAO,SAACC,EAAK,GAAW,mBAAVtT,EAAC,KAAEkD,EAAC,KACjB,OAAKA,GACLoQ,EAAIusF,MAAM7/F,IAAK4xF,EAAAA,EAAAA,IAAQ1uF,GACvBoQ,EAAIymF,SAAS/5F,QAAoB,IAARkD,EAAEzC,GAAoBmxF,EAAAA,EAAAA,IAAQ1uF,IAAK8vF,EAAAA,EAAAA,IAAS9vF,GAC9DoQ,GAHQA,CAIjB,GAAG,CAAEymF,SAAU,CAAC,EAAG8F,MAAO,CAAC,IAC7B,MAAO,CACL1B,MAAO,CACLrZ,OAAQtmF,OAAOsd,QAAQ8jF,EAAW7F,UAC/Bt6F,QAAO,+BAAM,OAAH,KAAG,IAAO,IACpBhC,KAAI,+BAAEuC,EAAC,KAAEkD,EAAC,uBAAWlD,EAAC,aAAKkD,EAAC,IAC5B0G,KAAK,MAEV+M,MAAO,CACLmuE,OAAQ8a,EAAWC,MACnB7zC,QAAAA,GAGN,EAEa8zC,EAAgB,SAAC5gG,GAC5B,IAAI6gG,EAAa7gG,EAAMy/F,OAAS,CAAC,OAEF,IAApBz/F,EAAM8gG,YACfD,EAAavhG,OACVsd,QAAQ5c,GACRO,QAAO,+BAAEO,EAAC,KAAG,YAAMA,EAAEma,SAAS,SAAS,IACvC9G,QAAO,SAACC,EAAKrV,GAA6C,OAArCqV,EAAIrV,EAAE,GAAG4hF,MAAM,UAAU,IAAM5hF,EAAE,GAAWqV,CAAI,GAAG,CAAC,IAE9E,IAAMqrF,EAAQngG,OAAOsd,QAAQikF,GAAYtgG,QAAO,+BAAM,OAAH,KAAG,IAAO,IAAE4T,QAAO,SAACC,EAAK,GAAW,mBAAVtT,EAAC,KAAEkD,EAAC,KAE/E,OADAoQ,EAAItT,GAAKkD,EACFoQ,CACT,GAAG,CACD2sF,IAAK,EACL/gG,MAAO,EACPghG,SAAU,EACVxjD,MAAO,GACPM,OAAQ,EACRmjD,UAAW,GACXC,QAAS,EACTplE,WAAY,EACZqlE,YAAaN,EAAWrjD,QAG1B,MAAO,CACLyhD,MAAO,CACLQ,MAAOngG,OAAOsd,QAAQ6iF,GAAOl/F,QAAO,+BAAM,OAAH,KAAG,IAAO,IAAEhC,KAAI,+BAAEuC,EAAC,KAAEkD,EAAC,uBAAWlD,EAAC,mBAAWkD,EAAC,SAAM0G,KAAK,MAElG+M,MAAO,CACLgoF,MAAAA,GAGN,EAEa2B,EAAgB,SAACphG,GAC5B,IAAM2/F,EAAQrgG,OAAOsd,QAAQ5c,EAAM2/F,OAAS,CAAC,GAAGp/F,QAAO,+BAAM,OAAH,KAAG,IAAO,IAAE4T,QAAO,SAACC,EAAK,GAAW,mBAAVtT,EAAC,KAAEkD,EAAC,KAKtF,OAJAoQ,EAAItT,GAAKxB,OAAOsd,QAAQ5Y,GAAGzD,QAAO,+BAAM,OAAH,KAAG,IAAO,IAAE4T,QAAO,SAACC,EAAK,GAAW,mBAAVtT,EAAC,KAAEkD,EAAC,KAEjE,OADAoQ,EAAItT,GAAKkD,EACFoQ,CACT,GAAGA,EAAItT,IACAsT,CACT,GAAG,CACDyvE,UAAW,CACTwd,OAAQ,cAEVrhG,MAAO,CACLqhG,OAAQ,WAEVC,KAAM,CACJD,OAAQ,WAEVE,SAAU,CACRF,OAAQ,eAIZ,MAAO,CACLpC,MAAO,CACLU,MAAOrgG,OACJsd,QAAQ+iF,GACRp/F,QAAO,+BAAM,OAAH,KAAG,IAAO,IACpBhC,KAAI,+BAAEuC,EAAC,KAAEkD,EAAC,uBAAWlD,EAAC,iBAASkD,EAAEq9F,OAAM,IAAI32F,KAAK,MAErD+M,MAAO,CACLkoF,MAAAA,GAGN,EAEM6B,EAAS,SAAC/hC,EAAKgiC,GAAM,MAAM,CAC/BjjD,EAAG,EACHgB,EAAGigB,EAAM,GAAK,EACduP,KAAM,EACNmxB,OAAQ,EACRhZ,MAAOsa,EAAS,UAAY,UAC5BrB,MAAO,GACPH,OAAO,EACR,EACKyB,EAAyB,CAACF,GAAO,GAAM,GAAQA,GAAO,GAAO,IAC7DG,EAAwB,CAACH,GAAO,GAAM,GAAOA,GAAO,GAAO,IAC3DI,EAAY,CAChBpjD,EAAG,EACHgB,EAAG,EACHwvB,KAAM,EACNmxB,OAAQ,EACRhZ,MAAO,UACPiZ,MAAO,GAGIyB,EAAkB,CAC7BrkD,MAAO,CAAC,CACNgB,EAAG,EACHgB,EAAG,EACHwvB,KAAM,EACNmxB,OAAQ,EACRhZ,MAAO,UACPiZ,MAAO,KAET0B,OAAQ,CAAC,CACPtjD,EAAG,EACHgB,EAAG,EACHwvB,KAAM,EACNmxB,OAAQ,EACRhZ,MAAO,UACPiZ,MAAO,KAET2B,MAAO,CAAC,CACNvjD,EAAG,EACHgB,EAAG,EACHwvB,KAAM,EACNmxB,OAAQ,EACRhZ,MAAO,UACPiZ,MAAO,KAETtiD,OAAQ,CAAC,CACPU,EAAG,EACHgB,EAAG,EACHwvB,KAAM,EACNmxB,OAAQ,EACRhZ,MAAO,UACPiZ,MAAO,KAET4B,aAAc,GACdC,YAAa,GACbt/C,OAAQ,CAAC,CACPnE,EAAG,EACHgB,EAAG,EACHwvB,KAAM,EACNmxB,OAAQ,EACRhZ,MAAO,UACPiZ,MAAO,IACR,OAAKsB,GACNQ,YAAa,CAACN,GAAS,OAAKF,GAC5BS,cAAe,CAACP,GAAS,OAAKD,GAC9B3hG,MAAO,GAAF,OAAM2hG,EAAuB,EAChCnjD,EAAG,EACHgB,EAAG,EACHwvB,KAAM,EACNixB,OAAO,EACPE,OAAQ,EACRhZ,MAAO,UACPiZ,MAAO,MAGEgC,EAAkB,SAACpiG,EAAO4lF,GAGrC,IAAMyc,EAAkB,CACtB1/C,OAAQ,MACRnF,MAAO,KACPiiB,IAAK,SACLsiC,MAAO,UACPjkD,OAAQ,KACRmkD,YAAa,QACbjiG,MAAO,SAGHsiG,EAAoBhjG,OAAO2E,YAC/B3E,OAAOsd,QAAQ5c,EAAM0/F,SAAW,CAAC,GAC9BnhG,KAAI,+BAAkB,MAAM,CAAlB,KAAY,KAGVA,KAAI,SAAAgkG,GAAS,UAAOpb,MAAO,WAAcob,EAAS,IAC9D,KAECC,EAAeF,IAAsBtiG,EAAMqd,mBAC7ColF,EAAYH,EAAmBtiG,EAAM8sD,SACrCw1C,GAAqB,CAAC,EACpB5C,EAAUpgG,OAAOsd,QAAQ,EAAD,KACzBilF,GACAW,IACFruF,QAAO,SAACuuF,EAAY,GAA2B,mBAA1BC,EAAQ,KAAEC,EAAU,KACpCC,EAAgBF,EAASl/F,QAAQ,WAAY,IAC7Cq/F,EAAgBT,EAAgBQ,GAEhCE,GADgBnQ,EAAAA,EAAAA,KAAkBoQ,EAAAA,EAAAA,IAAQpd,EAAOkd,IAAgB1O,KAAO,GAClD,GAAK,EAC3B6O,EAAYL,EAAWzuF,QAAO,SAAC+uF,EAAW7nC,GAAG,wBAC9C6nC,GAAS,QAEP7nC,GAAG,IACN8rB,OAAOuL,EAAAA,EAAAA,KAAQyQ,EAAAA,EAAAA,IACb9nC,EAAI8rB,OACJ,SAACic,GAAY,OAAKJ,EAAAA,EAAAA,IAAQpd,EAAOwd,IAAehP,GAAG,GACnD2O,OACA,GAEH,IACH,OAAO,EAAP,KAAYL,GAAU,cAAGC,EAAWM,GACtC,GAAG,CAAC,GAEJ,MAAO,CACLhE,MAAO,CACLS,QAASpgG,OACNsd,QAAQ8iF,GAGRnhG,KAAI,+BAAEuC,EAAC,KAAEkD,EAAC,WAAM,CAAC,KAAD,OACVlD,EAAC,mBAAWi/F,EAAa/7F,IAAE,YAC3BlD,EAAC,yBAAiBu/F,EAAmBr8F,IAAE,YACvClD,EAAC,wBAAgBi/F,EAAa/7F,GAAG,KACtC0G,KAAK,IAAI,IACVA,KAAK,MAEV+M,MAAO,CACLioF,QAAAA,GAGN,EAEa2D,EAAgB,SAACzd,EAAQ6Z,EAAOC,EAASC,GACpD,MAAO,CACLV,MAAO,EAAF,SACAS,EAAQT,OACRrZ,EAAOqZ,OACPQ,EAAMR,OACNU,EAAMV,OAEXxnF,MAAO,EAAF,SACAioF,EAAQjoF,OACRmuE,EAAOnuE,OACPgoF,EAAMhoF,OACNkoF,EAAMloF,OAGf,EAEaynF,EAAiB,SAACl/F,GAC7B,IAAM4lF,EAAS0a,EAAetgG,GAC9B,OAAOqjG,EACLzd,EACAgb,EAAc5gG,GACdoiG,EAAgBpiG,EAAO4lF,EAAOnuE,MAAMmuE,OAAQA,EAAOmd,KACnD3B,EAAcphG,GAElB,EAEasjG,EAAY,WACvB,IAAMljE,EAAQ,WAEd,OAAOx6B,OAAOkW,MAAM,sBAAuB,CAAEskB,MAAAA,IAC1CthC,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,IAC1Bld,MAAK,SAACykG,GACL,OAAOjkG,OAAOsd,QAAQ2mF,GAAQhlG,KAAI,YAAY,mBAAVuC,EAAC,KAAEkD,EAAC,KAClC86F,EAAU,KAWd,MAViB,YAAb,OAAO96F,GACT86F,EAAUlgG,QAAQC,QAAQmF,GACJ,iBAANA,IAChB86F,EAAUl5F,OAAOkW,MAAM9X,EAAG,CAAEo8B,MAAAA,IACzBthC,MAAK,SAACW,GAAI,OAAKA,EAAKuc,MAAM,IAAC,OACrB,SAACjd,GAEN,OADAyc,QAAQzK,MAAMhS,GACP,IACT,KAEG,CAAC+B,EAAGg+F,EACb,GACF,IACChgG,MAAK,SAAC0kG,GACL,OAAOA,EACJrvF,QAAO,SAACC,EAAK,GAAW,mBAAVtT,EAAC,KAAEkD,EAAC,KAEjB,OADAoQ,EAAItT,GAAKkD,EACFoQ,CACT,GAAG,CAAC,EACR,GACJ,EACaosF,EAAa,SAAC5a,GACzB,OAAOtmF,OAAOsd,QAAQgpE,GAAQzxE,QAAO,SAACC,EAAK,GAAsB,mBAArBuuF,EAAQ,KAAExb,EAAK,KAEzD,OAAQwb,GACN,IAAK,UACH,OAAO,EAAP,KAAYvuF,GAAG,IAAE4gB,UAAWmyD,IAC9B,IAAK,UACH,OAAO,EAAP,KACK/yE,GANY,CAAC,GAAI,QAAS,UAQ1BD,QACC,SAACsvF,EAAkBjF,GAAQ,cACnBiF,GAAgB,cAAG,MAAQjF,EAAW,OAASrX,GAAK,GAC1D,CAAC,IAGX,QACE,OAAO,EAAP,KAAY/yE,GAAG,cAAGuuF,EAAWxb,IAEnC,GAAG,CAAC,EACN,EAOasb,EAAc,SAAC/C,EAAS5yC,GACnC,OAAOxtD,OAAOsd,QAAQ8iF,GAASvrF,QAAO,SAACuuF,EAAY,GAA2B,mBAA1BC,EAAQ,KAGpDM,EAHgE,KAGzC9uF,QAAO,SAAC+uF,EAAW7nC,GAAG,wBAC9C6nC,GAAS,QAEP7nC,GAAG,IACN+kC,OANW,EAMM/kC,EANN,IAAM8rB,YAAK,IAAG,YAAS,GAAa/lF,WAAW,OAC9C,EAKuBi6D,EALjB8rB,EAAK,EAALA,MAAYr6B,GAAQ42C,EAAAA,EAAAA,IAAevc,EAAM3jF,UAAU,GAAGm9E,MAAM,KAAK,MAKxC,GAAItlB,EAAI+kC,WALpC,IAAH,EAAMjZ,EADP,GAM6C,GAEzD,IACH,OAAO,EAAP,KAAYub,GAAU,cAAGC,EAAWM,GACtC,GAAG,CAAC,EACN,EAEajmF,EAAY,SAACiyC,GACxB,OAAOq0C,IACJxkG,MAAK,SAACykG,GAAM,OAAKA,EAAOt0C,GAAOs0C,EAAOt0C,GAAOs0C,EAAO,eAAe,IACnEzkG,MAAK,SAAC2Y,GACL,IAAMksF,EAAO9/F,MAAMoF,QAAQwO,GACrBhY,EAAOkkG,EAAO,CAAC,EAAIlsF,EAAMA,MAE/B,GAAIksF,EAAM,CACR,IAAMjQ,GAAKC,EAAAA,EAAAA,IAAQl8E,EAAM,IACnB+7E,GAAKG,EAAAA,EAAAA,IAAQl8E,EAAM,IACnBrT,GAAOuvF,EAAAA,EAAAA,IAAQl8E,EAAM,IACrBhS,GAAOkuF,EAAAA,EAAAA,IAAQl8E,EAAM,IAErBmsF,GAAOjQ,EAAAA,EAAAA,IAAQl8E,EAAM,IAAM,WAC3BosF,GAASlQ,EAAAA,EAAAA,IAAQl8E,EAAM,IAAM,WAC7BqsF,GAAQnQ,EAAAA,EAAAA,IAAQl8E,EAAM,IAAM,WAC5BssF,GAAUpQ,EAAAA,EAAAA,IAAQl8E,EAAM,IAAM,WAEpChY,EAAKmmF,OAAS,CAAE8N,GAAAA,EAAIF,GAAAA,EAAIpvF,KAAAA,EAAMqB,KAAAA,EAAMm+F,KAAAA,EAAME,MAAAA,EAAOD,OAAAA,EAAQE,QAAAA,EAC3D,CAEA,MAAO,CAAEtsF,MAAOhY,EAAM2d,OAAQ3F,EAAM2F,OACtC,GACJ,EAEamqE,EAAY,SAACt4B,GAAG,OAAKjyC,EAAUiyC,GAAKnwD,MAAK,SAAAW,GAAI,OAAI8d,EAAW9d,EAAKgY,MAAM,GAAC,C,6FC7bxEusF,EAAS,CACpBC,QAAS,KACTnC,OAAQ,KACRoC,MAAO,KACPC,YAAa,KACb3Q,GAAI,KACJE,GAAI,WACJ1+D,UAAW,KACXwoB,MAAO,KACP4mD,QAAS,KACTC,aAAc,UACdtD,IAAK,KACLuD,SAAU,QACVC,UAAW,SACXvkG,MAAO,KACPwkG,WAAY,QACZC,YAAa,SACbC,MAAO,KACPC,WAAY,QACZr9E,KAAM,KACNs9E,OAAQ,WACRzD,YAAa,UAMF0D,EAAkB,CAC7BV,YAAa,GACbO,MAAO,GACP1kG,MAAO,GACP8kG,MAAO,GACPC,SAAU,IACVC,WAAY,KAyCDC,EAAmB,CAC9BvR,GAAI,CACFwR,QAAS,GACTp4C,QAAS,KACTq4C,SAAU,GAEZC,UAAW,CACTF,QAAS,CAAC,MACV/d,MAAO,SAAC4b,EAAKrP,GAAE,OAAK2R,EAAAA,EAAAA,KAAY,EAAItC,EAAKrP,GAAIU,GAAG,GAElDZ,GAAI,CACF0R,QAAS,GACTC,SAAU,GAEZ/gG,KAAM,CACJ8gG,QAAS,GACTI,MAAO,KACPx4C,QAAS,KACTq4C,SAAU,GAEZJ,SAAU,CACR1/F,QAAS,UACTynD,QAAS,YAEXrnD,KAAM,CACJy/F,QAAS,CAAC,UACVC,SAAU,GAEZI,OAAQ,CACNL,QAAS,CAAC,QACVC,SAAU,GAEZL,MAAO,CACLI,QAAS,CAAC,QACVp4C,QAAS,SAEX04C,UAAW,CACTN,QAAS,CAAC,QACVp4C,QAAS,SAEX24C,cAAe,CACbP,QAAS,CAAC,YACVp4C,QAAS,SAGXg3C,MAAO,UACPF,KAAM,UACNC,OAAQ,UACRE,QAAS,UAET2B,UAAW,CACTR,QAAS,CAAC,MACV/d,MAAO,SAAC4b,EAAKrP,GAAE,MAAM,CACnBtsE,EAAGpmB,KAAKk/D,MAAa,IAAPwzB,EAAGtsE,GACjBurE,EAAG3xF,KAAKk/D,MAAa,IAAPwzB,EAAGf,GACjBnxF,EAAGR,KAAKk/D,MAAa,IAAPwzB,EAAGlyF,GAClB,GAEH2iG,YAAa,CACXe,QAAS,CAAC,MACVI,MAAO,cACPx4C,QAAS,eAGX93B,UAAW,CACTkwE,QAAS,CAAC,MACV/d,MAAO,SAAC4b,EAAKrP,GAAE,OAAK2R,EAAAA,EAAAA,IAAW,EAAItC,EAAKrP,GAAIU,GAAG,GAEjDuR,mBAAoB,CAClBT,QAAS,CAAC,aACVI,MAAO,YACPM,WAAW,GAEbC,kBAAmB,CACjBX,QAAS,CAAC,YACVI,MAAO,YACPM,UAAW,YAEbE,mBAAoB,CAClBZ,QAAS,CAAC,SACVI,MAAO,YACPM,WAAW,GAEbG,mBAAoB,CAClBb,QAAS,CAAC,aACVI,MAAO,YACPM,UAAW,YAEbI,uBAAwB,CACtBd,QAAS,CAAC,iBACVI,MAAO,YACPM,UAAW,YAEbK,cAAe,CACbf,QAAS,CAAC,QACVI,MAAO,YACPM,WAAW,GAEbM,cAAe,CACbhB,QAAS,CAAC,QACVI,MAAO,YACPM,UAAW,YAEbO,cAAe,CACbjB,QAAS,CAAC,YAAa,iBACvB/d,MAAO,SAAC4b,EAAKrP,EAAItvF,GAAI,OAAKyvF,EAAAA,EAAAA,IAAOH,EAAItvF,EAAK,GAG5CggG,QAAS,CACPc,QAAS,CAAC,MACVp4C,QAAS,WAEXs5C,iBAAkB,CAChBlB,QAAS,CAAC,aACVI,MAAO,UACPM,WAAW,GAEbS,gBAAiB,CACfnB,QAAS,CAAC,YACVI,MAAO,UACPM,UAAW,YAEbU,iBAAkB,CAChBpB,QAAS,CAAC,SACVI,MAAO,UACPM,WAAW,GAEbW,iBAAkB,CAChBrB,QAAS,CAAC,aACVI,MAAO,UACPM,UAAW,YAEbY,qBAAsB,CACpBtB,QAAS,CAAC,iBACVI,MAAO,UACPM,UAAW,YAEba,YAAa,CACXvB,QAAS,CAAC,QACVI,MAAO,UACPM,WAAW,GAEbc,YAAa,CACXxB,QAAS,CAAC,QACVI,MAAO,UACPM,UAAW,YAEbe,YAAa,CACXzB,QAAS,CAAC,UAAW,eACrB/d,MAAO,SAAC4b,EAAKrP,EAAItvF,GAAI,OAAKyvF,EAAAA,EAAAA,IAAOH,EAAItvF,EAAK,GAG5CwiG,aAAc,cACdC,sBAAuB,CACrB3B,QAAS,CAAC,sBACVI,MAAO,YACPwB,QAAS,eACTlB,WAAW,GAEbmB,sBAAuB,CACrB7B,QAAS,CAAC,sBACVI,MAAO,YACPwB,QAAS,eACTlB,WAAW,GAEboB,qBAAsB,CACpB9B,QAAS,CAAC,qBACVI,MAAO,YACPwB,QAAS,eACTlB,UAAW,YAEbqB,sBAAuB,CACrB/B,QAAS,CAAC,sBACVI,MAAO,YACPwB,QAAS,eACTlB,UAAW,YAEbsB,iBAAkB,CAChBhC,QAAS,CAAC,iBACVI,MAAO,YACPwB,QAAS,eACTlB,WAAW,GAEbuB,iBAAkB,CAChBjC,QAAS,CAAC,iBACVI,MAAO,YACPwB,QAAS,eACTlB,UAAW,YAEbwB,iBAAkB,CAChBlC,QAAS,CAAC,eAAgB,oBAC1B/d,MAAO,SAAC4b,EAAKrP,EAAItvF,GAAI,OAAKyvF,EAAAA,EAAAA,IAAOH,EAAItvF,EAAK,GAG5CigG,aAAc,CACZa,QAAS,CAAC,MACV/d,MAAO,SAAC4b,EAAKrP,GAAE,OAAK2R,EAAAA,EAAAA,IAAW,EAAItC,EAAKrP,GAAIU,GAAG,GAEjDiT,sBAAuB,CACrBnC,QAAS,CAAC,sBACVI,MAAO,eACPwB,QAAS,eACTlB,WAAW,GAEb0B,sBAAuB,CACrBpC,QAAS,CAAC,sBACVI,MAAO,eACPwB,QAAS,eACTlB,WAAW,GAEb2B,sBAAuB,CACrBrC,QAAS,CAAC,sBACVI,MAAO,eACPwB,QAAS,eACTlB,UAAW,YAEb4B,iBAAkB,CAChBtC,QAAS,CAAC,iBACVI,MAAO,eACPwB,QAAS,eACTlB,WAAW,GAEb6B,iBAAkB,CAChBvC,QAAS,CAAC,iBACVI,MAAO,eACPwB,QAAS,eACTlB,UAAW,YAEb8B,iBAAkB,CAChBxC,QAAS,CAAC,eAAgB,oBAC1B/d,MAAO,SAAC4b,EAAKrP,EAAItvF,GAAI,OAAKyvF,EAAAA,EAAAA,IAAOH,EAAItvF,EAAK,GAG5CujG,oBAAqB,CACnBzC,QAAS,CAAC,WACV/d,MAAO,SAAC4b,EAAKrP,GAAE,OAAK2R,EAAAA,EAAAA,IAAW,EAAItC,EAAKrP,GAAIU,GAAG,GAEjDwT,6BAA8B,CAC5B1C,QAAS,CAAC,yBACVI,MAAO,sBACPwB,QAAS,sBACTlB,WAAW,GAEbiC,6BAA8B,CAC5B3C,QAAS,CAAC,yBACVI,MAAO,sBACPwB,QAAS,sBACTlB,WAAW,GAEbkC,6BAA8B,CAC5B5C,QAAS,CAAC,yBACVI,MAAO,sBACPwB,QAAS,sBACTlB,UAAW,YAEbmC,wBAAyB,CACvB7C,QAAS,CAAC,oBACVI,MAAO,sBACPwB,QAAS,sBACTlB,WAAW,GAEboC,wBAAyB,CACvB9C,QAAS,CAAC,oBACVI,MAAO,sBACPwB,QAAS,sBACTlB,UAAW,YAEbqC,wBAAyB,CACvB/C,QAAS,CAAC,sBAAuB,oBACjC/d,MAAO,SAAC4b,EAAKrP,EAAItvF,GAAI,OAAKyvF,EAAAA,EAAAA,IAAOH,EAAItvF,EAAK,GAG5C8jG,UAAW,CACThD,QAAS,CAAC,QACVI,MAAO,KACPM,UAAW,WACXze,MAAO,SAAC4b,EAAK3+F,GAAI,OAAKihG,EAAAA,EAAAA,IAAW,GAAKtC,EAAK3+F,GAAMgwF,GAAG,GAGtD+T,SAAU,CACRjD,QAAS,CAAC,QACVI,MAAO,KACPM,UAAW,YAGbwC,cAAe,CACblD,QAAS,CAAC,UACVI,MAAO,KACPM,UAAW,YAGbyC,aAAc,CACZnD,QAAS,CAAC,SACVI,MAAO,KACPM,UAAW,YAGbpE,OAAQ,CACN0D,QAAS,CAAC,MACVp4C,QAAS,SACTq6B,MAAO,SAAC4b,EAAKvP,GAAE,OAAK6R,EAAAA,EAAAA,IAAW,EAAItC,EAAKvP,GAAIY,GAAG,GAGjD9sE,KAAM,CACJ49E,QAAS,CAAC,SAAU,MACpBoD,SAAU,OACVnhB,MAAO,SAAC4b,EAAKwC,EAAQ7R,GAAE,OAAKH,EAAAA,EAAAA,IAAWgS,EAAQ,GAAK7R,EAAG,GAEzD6U,SAAU,CACRrD,QAAS,CAAC,QACVI,MAAO,OACPM,WAAW,GAGbz3F,KAAM,CACJ+2F,QAAS,CAAC,KAAM,QAChBsD,iBAAiB,EACjBrhB,MAAO,SAAC4b,EAAKrP,EAAItvF,GAAI,OAAKyvF,EAAAA,EAAAA,IAAOH,EAAItvF,EAAK,GAI5CqkG,OAAQ,CACNvD,QAAS,CAAC,QACVI,MAAO,KACPM,WAAW,GAEb8C,OAAQ,CACNxD,QAAS,CAAC,QACVI,MAAO,KACPM,UAAW,YAIbpoD,MAAO,CACL0nD,QAAS,CAAC,MACVp4C,QAAS,SAEX67C,UAAW,CACTzD,QAAS,CAAC,QACVI,MAAO,QACPM,WAAW,GAEbgD,WAAY,CACV1D,QAAS,CAAC,UACVI,MAAO,QACPx4C,QAAS,QACT84C,WAAW,GAEbiD,UAAW,CACT3D,QAAS,CAAC,UACVI,MAAO,QACPM,UAAW,YAIb9D,OAAQ,OACRgH,WAAY,CACV5D,QAAS,CAAC,UACVI,MAAO,SACPM,WAAW,GAEbmD,WAAY,CACV7D,QAAS,CAAC,UACVI,MAAO,SACPM,UAAW,YAIbltD,IAAK,CACHwsD,QAAS,CAAC,QAEZ8D,QAAS,CACP9D,QAAS,CAAC,WACVI,MAAO,MACPM,WAAW,GAEbqD,cAAe,CACb/D,QAAS,CAAC,QACVI,MAAO,KACPM,WAAW,GAIb7E,IAAK,CACHmE,QAAS,CAAC,MACV4B,QAAS,MACTh6C,QAAS,OAEXo8C,QAAS,CACPhE,QAAS,CAAC,UACVI,MAAO,MACPM,WAAW,GAEbuD,aAAc,CACZjE,QAAS,CAAC,WACVI,MAAO,WACPwB,QAAS,MACTlB,WAAW,GAEbwD,cAAe,CACblE,QAAS,CAAC,WACVI,MAAO,YACPwB,QAAS,MACTlB,WAAW,GAIbyD,WAAY,CACVnE,QAAS,CAAC,OACVI,MAAO,OAETgE,eAAgB,CACdpE,QAAS,CAAC,WACVI,MAAO,MACPwB,QAAS,aACTlB,WAAW,GAEb2D,gBAAiB,CACfrE,QAAS,CAAC,cACVI,MAAO,OAETkE,oBAAqB,CACnBtE,QAAS,CAAC,gBACVI,MAAO,WACPwB,QAAS,aACTlB,WAAW,GAEb6D,iBAAkB,CAChBvE,QAAS,CAAC,cACVI,MAAO,OAEToE,qBAAsB,CACpBxE,QAAS,CAAC,iBACVI,MAAO,YACPwB,QAAS,aACTlB,WAAW,GAIb+D,WAAY,CACVzE,QAAS,CAAC,OACVI,MAAO,MACPne,MAAO,SAAC4b,EAAKhC,GAAG,OAAKsE,EAAAA,EAAAA,IAAiB,GAANtC,EAAUhC,GAAK3M,GAAG,GAEpDwV,eAAgB,CACd1E,QAAS,CAAC,WACVI,MAAO,MACPwB,QAAS,aACTlB,WAAW,GAEbiE,oBAAqB,CACnB3E,QAAS,CAAC,gBACVI,MAAO,WACPwB,QAAS,aACTlB,WAAW,GAEbkE,qBAAsB,CACpB5E,QAAS,CAAC,iBACVI,MAAO,YACPwB,QAAS,aACTlB,WAAW,GAIbmE,YAAa,CACX7E,QAAS,CAAC,MAAO,MACjB/d,MAAO,SAAC4b,EAAKhC,EAAKrN,GAAE,OAAKH,EAAAA,EAAAA,IAAWwN,EAAK,IAAMrN,EAAG,GAEpDsW,gBAAiB,CACf9E,QAAS,CAAC,UAAW,eACrBI,MAAO,MACPwB,QAAS,cACT3f,MAAO,SAAC4b,EAAK3+F,EAAM28F,GAAG,OAAKxN,EAAAA,EAAAA,IAAWnvF,EAAM,IAAM28F,EAAI,GAExDkJ,qBAAsB,CACpB/E,QAAS,CAAC,eAAgB,eAC1BI,MAAO,WACPwB,QAAS,cACT3f,MAAO,SAAC4b,EAAK3+F,EAAM28F,GAAG,OAAKxN,EAAAA,EAAAA,IAAWnvF,EAAM,IAAM28F,EAAI,GAExDmJ,sBAAuB,CACrBhF,QAAS,CAAC,gBAAiB,eAC3BI,MAAO,YACPwB,QAAS,cACT3f,MAAO,SAAC4b,EAAK3+F,EAAM28F,GAAG,OAAKxN,EAAAA,EAAAA,IAAWnvF,EAAM,IAAM28F,EAAI,GAIxD/gG,MAAO,CACLklG,QAAS,CAAC,MACVp4C,QAAS,SAEXq9C,UAAW,CACTjF,QAAS,CAAC,QACVI,MAAO,QACPM,WAAW,GAEbwE,eAAgB,CACdlF,QAAS,CAAC,aACVI,MAAO,aACPwB,QAAS,QACTlB,WAAW,GAEbyE,gBAAiB,CACfnF,QAAS,CAAC,cACVI,MAAO,cACPwB,QAAS,QACTlB,WAAW,GAGb0E,WAAY,CACVpF,QAAS,CAAC,QACVp4C,QAAS,SAEXy9C,eAAgB,CACdrF,QAAS,CAAC,QACVI,MAAO,QACPwB,QAAS,aACTlB,WAAW,GAEb4E,oBAAqB,CACnBtF,QAAS,CAAC,aACVI,MAAO,aACPwB,QAAS,aACTlB,WAAW,GAGb6E,aAAc,CACZvF,QAAS,CAAC,WACVp4C,QAAS,SAEX49C,iBAAkB,CAChBxF,QAAS,CAAC,QACVI,MAAO,QACPwB,QAAS,eACTlB,WAAW,GAEb+E,sBAAuB,CACrBzF,QAAS,CAAC,aACVI,MAAO,aACPwB,QAAS,eACTlB,WAAW,GAGbgF,aAAc,CACZ1F,QAAS,CAAC,UACVp4C,QAAS,SAEX+9C,iBAAkB,CAChB3F,QAAS,CAAC,QACVI,MAAO,QACPwB,QAAS,eACTlB,WAAW,GAEbkF,sBAAuB,CACrB5F,QAAS,CAAC,aACVI,MAAO,aACPwB,QAAS,eACTlB,WAAW,GAGbmF,aAAc,CACZ7F,QAAS,CAAC,QACVp4C,QAAS,SAEXk+C,iBAAkB,CAChB9F,QAAS,CAAC,QACVI,MAAO,QACPwB,QAAS,eACT3f,MAAO,SAAC4b,EAAK3+F,GAAI,OAAK+vF,EAAAA,EAAAA,IAAgB/vF,GAAMgwF,GAAG,EAC/CwR,WAAW,GAEbqF,sBAAuB,CACrB/F,QAAS,CAAC,aACVI,MAAO,aACPwB,QAAS,eACTlB,WAAW,GAGbsF,gBAAiB,CACfhG,QAAS,CAAC,cACVp4C,QAAS,cAEXq+C,oBAAqB,CACnBjG,QAAS,CAAC,kBACVI,MAAO,UACPwB,QAAS,kBACTlB,WAAW,GAGbwF,kBAAmB,CACjBlG,QAAS,CAAC,gBACVp4C,QAAS,cAEXu+C,sBAAuB,CACrBnG,QAAS,CAAC,oBACVI,MAAO,UACPwB,QAAS,oBACTlB,WAAW,GAGb0F,kBAAmB,CACjBpG,QAAS,CAAC,gBACVp4C,QAAS,cAEXy+C,sBAAuB,CACrBrG,QAAS,CAAC,oBACVI,MAAO,UACPwB,QAAS,oBACTlB,WAAW,GAGb4F,kBAAmB,CACjBtG,QAAS,CAAC,gBACVp4C,QAAS,cAEX2+C,sBAAuB,CACrBvG,QAAS,CAAC,oBACVI,MAAO,UACPwB,QAAS,oBACTlB,WAAW,GAGb8F,kBAAmB,SACnBC,sBAAuB,CACrBzG,QAAS,CAAC,OAAQ,qBAClBI,MAAO,QACPwB,QAAS,oBACTlB,UAAW,MAGbgG,aAAc,WACdC,iBAAkB,CAChB3G,QAAS,CAAC,OAAQ,gBAClBI,MAAO,QACPwB,QAAS,eACTlB,UAAW,MAGbhB,OAAQ,CACNM,QAAS,CAAC,OAGZ4G,sBAAuB,CACrB5G,QAAS,CAAC,WAGZ6G,wBAAyB,CACvB7G,QAAS,CAAC,QACVI,MAAO,cACPwB,QAAS,wBACTlB,WAAW,GAGboG,wBAAyB,CACvB9G,QAAS,CAAC,QACVI,MAAO,cACPwB,QAAS,wBACTlB,UAAW,YAGbqG,0BAA2B,CACzB/G,QAAS,CAAC,UACVp4C,QAAS,SACTq6B,MAAO,SAAC4b,EAAKvB,GAAM,OAAK6D,EAAAA,EAAAA,IAAW,EAAItC,EAAKvB,GAAQpN,GAAG,GAGzD8X,sBAAuB,CACrBhH,QAAS,CAAC,yBACV/d,MAAO,SAAC4b,EAAK5B,GAAW,OAAKkE,EAAAA,EAAAA,IAAW,EAAItC,EAAK5B,GAAa/M,GAAG,GAGnE+X,wBAAyB,CACvBjH,QAAS,CAAC,QACVI,MAAO,cACPwB,QAAS,wBACTlB,WAAW,GAGbwG,wBAAyB,CACvBlH,QAAS,CAAC,QACVI,MAAO,cACPwB,QAAS,wBACTlB,UAAW,YAGbyG,0BAA2B,CACzBnH,QAAS,CAAC,yBACVp4C,QAAS,SACTq6B,MAAO,SAAC4b,EAAKvB,GAAM,OAAK6D,EAAAA,EAAAA,IAAW,EAAItC,EAAKvB,GAAQpN,GAAG,G,mvBC3tBpD,IAAM92E,EAAkB,EAElBgvF,EAAiB,SAAChH,GAG7B,IAHsD,IAAlB7lG,EAAO,UAAH,6CAAGukG,EAAAA,GACrCl7F,EAAQ,CAACw8F,GACXjpC,EAAS58D,EAAK6lG,GACXjpC,GACLvzD,EAAMyC,QAAQ8wD,GACdA,EAAS58D,EAAK48D,GAEhB,OAAOvzD,CACT,EAEayjG,EAAY,SAACjH,GAAyD,IAAlDwB,EAAU,UAAH,6CAAGxB,EAAOkH,EAAW,uCAAE5mB,EAAM,uCAAE94B,EAAO,uCAC5E,OAAOw/C,EAAehH,GAAO/mG,KAAI,SAACkuG,GAAY,MAAM,CAClDA,IAAiBnH,EACb1f,EAAOkhB,GACPlhB,EAAO6mB,GACXA,IAAiBnH,EACbx4C,EAAQ0/C,IAAgB,EACxB1/C,EAAQ2/C,GACb,GACH,EAEMC,EAAkB,SAAC7/F,EAAK8/F,GAC5B,IAAMltG,EAAOktG,EAAY9/F,GACzB,GAAoB,iBAATpN,GAAqBA,EAAK2B,WAAW,MAC9C,MAAO,CAAC3B,EAAK+D,UAAU,IAEvB,GAAa,OAAT/D,EAAe,MAAO,GAC1B,IAAQylG,EAA4BzlG,EAA5BylG,QAASI,EAAmB7lG,EAAnB6lG,MAAOwB,EAAYrnG,EAAZqnG,QAClB8F,EAAYtH,EACdgH,EAAehH,GAAO/mG,KAAI,SAAAkuG,GAC1B,OAAOA,IAAiBnH,EACpBwB,GAAWxB,EACXmH,CACN,IACE,GACJ,OAAI5oG,MAAMoF,QAAQi8F,GACT,GAAP,eAAWA,IAAO,OAAK0H,KAEhB,OAAIA,EAGjB,EA+DMC,EAAkB,SAACz7F,GACvB,MAAqB,YAAjB,OAAOA,GAA2BA,EAC/B,CACL8zF,QAAS9zF,EAAMhQ,WAAW,MAAQ,CAACgQ,EAAM5N,UAAU,IAAM,GACzD6B,QAAS+L,EAAMhQ,WAAW,KAAOgQ,OAAQrH,EAE7C,EAMa25F,EAAiB,SAC5B5iG,GAGG,IAFH6rG,EAAc,UAAH,6CAAG1H,EAAAA,GACd6H,EAAU,UAAH,6CAAGJ,EAEJt7F,EAAQy7F,EAAgBF,EAAY7rG,IAC1C,GAAsB,OAAlBsQ,EAAM07C,QAAV,CACA,GAAI17C,EAAM07C,QAAS,OAAO17C,EAAM07C,QAChC,IAAMigD,EAAuB,SAAvBA,EAAwBlgG,GAAuB,IAAlBmgG,EAAU,UAAH,6CAAG,CAAClsG,GACtCmsG,EAAUH,EAAQjgG,EAAK8/F,GAAa,GAC1C,QAAgB5iG,IAAZkjG,EAAJ,CACA,IAAMC,EAAaP,EAAYM,GAC/B,QAAmBljG,IAAfmjG,EACJ,OAAIA,EAAWpgD,SAA0B,OAAfogD,EACjBA,EAAWpgD,QACTogD,EAAWhI,SAAW8H,EAAQ1qG,SAAS2qG,GACzCF,EAAqBE,EAAS,GAAF,eAAMD,GAAO,CAAEC,KAE3C,IARwB,CAUnC,EACA,OAAI77F,EAAM8zF,QACD6H,EAAqBjsG,QAD9B,CAfkC,CAkBpC,EASaqsG,EAAe,SAC1BrsG,GAGG,IAFH6rG,EAAc,UAAH,6CAAG1H,EAAAA,GACd6H,EAAU,UAAH,6CAAGJ,EAEJt7F,EAAQy7F,EAAgBF,EAAY7rG,IAC1C,GAAIkjG,EAAAA,GAAOljG,GAAI,OAAOA,EACtB,GAAoB,OAAhBsQ,EAAMk0F,MAAV,CACA,GAAIl0F,EAAMk0F,MAAO,OAAOl0F,EAAMk0F,MAC9B,IAAM8H,EAAqB,SAArBA,EAAsBvgG,GAAuB,IAAlBmgG,EAAU,UAAH,6CAAG,CAAClsG,GACpCmsG,EAAUH,EAAQjgG,EAAK8/F,GAAa,GAC1C,QAAgB5iG,IAAZkjG,EAAJ,CACA,IAAMC,EAAaP,EAAYM,GAC/B,QAAmBljG,IAAfmjG,EACJ,OAAIA,EAAW5H,OAAwB,OAAf4H,EACfA,EAAW5H,MACT4H,EAAWhI,QACbkI,EAAmBF,EAAY,GAAF,eAAMF,GAAO,CAAEC,KAE5C,IARwB,CAUnC,EACA,OAAI77F,EAAM8zF,QACDkI,EAAmBtsG,QAD5B,CAfgC,CAkBlC,EAKausG,EA9HW,WAkCtB,IA/BG,IAFHV,EAAc,UAAH,6CAAG1H,EAAAA,GACd6H,EAAU,UAAH,6CAAGJ,EAIJY,EAAUhuG,OAAOD,KAAKstG,GACtBY,EAAS,IAAI5lG,IAAI2lG,GACjBE,EAAQ,IAAI7lG,IACZ8lG,EAAS,IAAI9lG,IACb+lG,EAAc,GAAH,OAAOJ,GAClB7X,EAAS,GAETkY,EAAO,SAAPA,EAAQC,GACZ,GAAIL,EAAO9kG,IAAImlG,GAEbL,EAAM,OAAQK,GACdJ,EAAMhrF,IAAIorF,GAEVd,EAAQc,EAAMjB,GAAanyF,QAAQmzF,GAEnCH,EAAK,OAAQI,GACbH,EAAOjrF,IAAIorF,GAEXnY,EAAO5wF,KAAK+oG,QACP,GAAIJ,EAAM/kG,IAAImlG,GACnBpyF,QAAQ4iB,MAAM,0CACdq3D,EAAO5wF,KAAK+oG,QACP,IAAIH,EAAOhlG,IAAImlG,GAGpB,MAAM,IAAI5uG,MAAM,oCAEpB,EACO0uG,EAAY7sG,OAAS,GAC1B8sG,EAAKD,EAAYplG,OAKnB,OAAOmtF,EAAOl3F,KAAI,SAACkB,EAAMoJ,GAAK,MAAM,CAAEpJ,KAAAA,EAAMoJ,MAAAA,EAAO,IAAGvH,MAAK,cAAoD,IAA3CC,EAAC,EAAP9B,KAAgBouG,EAAE,EAAThlG,MAAqBrH,EAAC,EAAP/B,KAAgBquG,EAAE,EAATjlG,MACvFklG,EAAQjB,EAAQvrG,EAAGorG,GAAa9rG,OAChCmtG,EAAQlB,EAAQtrG,EAAGmrG,GAAa9rG,OAEtC,OAAIktG,IAAUC,GAAoB,IAAVA,GAAyB,IAAVD,EAAqBF,EAAKC,EACnD,IAAVC,GAAyB,IAAVC,GAAqB,EAC1B,IAAVA,GAAyB,IAAVD,EAAoB,EAChC,CACT,IAAGxvG,KAAI,YAAO,SAAJkB,IAAe,GAC3B,CA6E4BwuG,CAC1B3uG,OAAOsd,QAAQqoF,EAAAA,IACZ3jG,MAAK,iCAAM4sG,GAAF,KAAI,qBAAQC,GAAF,KAAI,aAAQD,GAAMA,EAAG/I,UAAa,IAAOgJ,GAAMA,EAAGhJ,UAAa,EAAE,IACpFhxF,QAAO,SAACC,EAAK,GAAF,mBAAGtT,EAAC,KAAEkD,EAAC,mBAAYoQ,GAAG,cAAGtT,EAAIkD,GAAC,GAAK,CAAC,IAOvCoqG,EAAY9uG,OAAOsd,QAAQqoF,EAAAA,IAAkB9wF,QAAO,SAACC,EAAK,GAAW,mBAAVtT,EAAC,KACjEgsD,GADoE,KAC1D42C,EAAe5iG,EAAGmkG,EAAAA,GAAkByH,IACpD,OAAI5/C,EACK,EAAP,KACK14C,GAAG,cACL04C,EAAU,CACTuhD,aAAcxJ,EAAAA,GAAgB/3C,IAAY,EAC1CwhD,cAAe,GAAF,eAAQl6F,EAAI04C,IAAY14C,EAAI04C,GAASwhD,eAAkB,IAAK,CAAAxtG,OAItEsT,CAEX,GAAG,CAAC,GAKS+uF,EAAsB,SAACoL,EAAaC,EAAUzL,GACzD,GAA2B,iBAAhBwL,IAA6BA,EAAYntG,WAAW,MAAO,OAAOmtG,EAC7E,IAAIE,EAAc,KAElB,EAA6BF,EAAY5tB,MAAM,MAAMpiF,KAAI,SAAA+zE,GAAG,OAAIA,EAAI3uE,MAAM,IAAC,eAApE+qG,EAAQ,KAAEC,EAAQ,KAMzB,OAJAF,EAAcD,EADOE,EAASlrG,UAAU,IAEpCmrG,IACFF,GAAcpJ,EAAAA,EAAAA,IAAWxmF,OAAO+vF,WAAWD,GAAY5L,EAAK0L,GAAara,KAEpEqa,CACT,EAMahO,EAAY,SAACF,EAAcsO,GAAa,OAAKxB,EAAal5F,QAAO,WAAsBtH,GAAQ,IAOtGiiG,EAP2ElpB,EAAM,EAANA,OAAQ94B,EAAO,EAAPA,QACjFyhD,EAAchO,EAAa1zF,GAC3BuE,EAAQy7F,EAAgB5H,EAAAA,GAAiBp4F,IACzCkiG,EAAOrC,EAAgB7/F,EAAKo4F,EAAAA,IAC5B+J,IAAgB59F,EAAMw0F,UACtBkB,EAAU11F,EAAM01F,SAAW11F,EAAMk0F,MAKrCwJ,EADEE,GACgB1b,EAAAA,EAAAA,IAAiB,EAAD,GAC1B1N,EAAOmpB,EAAK,MAAO/L,EAAAA,EAAAA,IAAQzC,EAAa1zF,IAAQ,WAAWunF,KACjEmY,EACEY,EAAatgG,IAAQ,KACrBi6F,GAAW,KACXpD,EAAeoD,GACflhB,EACA94B,IAGKg6C,GAAWA,IAAYj6F,EACd+4E,EAAOkhB,KAAY9D,EAAAA,EAAAA,IAAQzC,EAAauG,IAAU1S,IAElDxO,EAAO8N,KAAMsP,EAAAA,EAAAA,IAAQzC,EAAa7M,IAGtD,IACMqP,GADgBnQ,EAAAA,EAAAA,IAAkBkc,GAAmB,GAC/B,GAAK,EAE7BG,EAAc,KAClB,GAAIV,EAAa,CAEf,IAAIE,EAAcF,EAClB,GAAoB,gBAAhBE,EAA+B,CAEjC,IAAMrb,EAASmZ,EACbY,EAAatgG,GACbA,EACA62F,EAAe72F,IAAQA,EACvB+4E,EACA94B,GACAnqD,MAAM,GAAI,GACZ8rG,EAAc,EAAH,MACNnb,EAAAA,EAAAA,KACD0P,EAAAA,EAAAA,IAAQ,WAAW5O,IACnBhB,IACD,IACD7xF,EAAG,GAEP,KAAkC,iBAAhBgtG,GAA4BA,EAAYntG,WAAW,MACnEqtG,EAActL,EACZoL,GACA,SAAAnL,GAAY,OAAIxd,EAAOwd,IAAiB7C,EAAa6C,EAAa,GAClEL,GAE8B,iBAAhBwL,GAA4BA,EAAYntG,WAAW,OACnEqtG,GAAczL,EAAAA,EAAAA,IAAQyL,GAAara,KAErC6a,EAAc,EAAH,GAAQR,EACrB,MAAO,GAAIr9F,EAAK,QAEd69F,GAAcjM,EAAAA,EAAAA,IAAQ5xF,EAAK,SAAUgjF,QAChC,CAEL,IACM8a,EAAY99F,EAAM+1E,OADC,SAAC4b,EAAKoM,GAAG,YAAWA,EAAG,EAGhD,GAAI/9F,EAAMw0F,UACR,GAAwB,OAApBx0F,EAAMw0F,UACRqJ,GAAc5a,EAAAA,EAAAA,IAAcya,GAAiB1a,QACxC,CACL,IAAIjN,EAAQ,EAAH,GAAQvB,EAAOmpB,EAAK,KACzB39F,EAAM+1E,QACRA,EAAQ+nB,EAAS,cAACnM,GAAG,eAAKgM,EAAKxwG,KAAI,SAAC4wG,GAAG,YAAWvpB,EAAOupB,GAAI,QAE/DF,GAAcjb,EAAAA,EAAAA,IACZ8a,EAAe,KACV3nB,GACe,aAApB/1E,EAAMw0F,UAEV,MAGAqJ,EAAcC,EAAS,cACrBnM,GAAG,eACAgM,EAAKxwG,KAAI,SAAC4wG,GAAG,YAAWvpB,EAAOupB,GAAI,MAG5C,CACA,IAAKF,EACH,MAAM,IAAIjwG,MAAM,+BAAkC6N,GAGpD,IAAM2/F,EAAcp7F,EAAM07C,SAAW42C,EAAe72F,GAC9CuiG,EAAiBh+F,EAAM07C,QAE7B,GAAuB,OAAnBsiD,EACFH,EAAY1tG,EAAI,OACX,GAAoB,gBAAhBgtG,EACTU,EAAY1tG,EAAI,MACX,CACL,IAAM8tG,EAAmBD,QAAiDrlG,IAA/B8kG,EAAcrC,GAEnD8C,EAAiBP,EAAK,GACtBQ,EAAkBD,GAAkB1pB,EAAO0pB,GAE5CF,IAAkBG,GAAoBn+F,EAAMw0F,WAAgC,OAAnBwJ,EAIlDG,GAAoB/C,EAK1B+C,GAAyC,IAAtBA,EAAgBhuG,EAErC0tG,EAAY1tG,EAAI,EAGhB0tG,EAAY1tG,EAAIsd,OACdwwF,EACIR,EAAcrC,IACb4B,EAAU5B,IAAgB,CAAC,GAAG6B,qBAXhCY,EAAY1tG,EAHnB0tG,EAAY1tG,EAAIguG,EAAgBhuG,CAkBpC,CAMA,OAJIsd,OAAO8B,MAAMsuF,EAAY1tG,SAAwBwI,IAAlBklG,EAAY1tG,KAC7C0tG,EAAY1tG,EAAI,GAGdirG,EACK,CACL5mB,OAAQ,EAAF,KAAOA,GAAM,cAAG/4E,EAAMoiG,IAC5BniD,QAAS,EAAF,KAAOA,GAAO,cAAG0/C,EAAcyC,EAAY1tG,KAG7C,CACLqkF,OAAQ,EAAF,KAAOA,GAAM,cAAG/4E,EAAMoiG,IAC5BniD,QAAAA,EAGN,GAAG,CAAE84B,OAAQ,CAAC,EAAG94B,QAAS,CAAC,GAAI,C,spBCvZ/B,IAAM0iD,EAAiB,SAACC,GACtB,QAAc1lG,IAAV0lG,EAAJ,CACA,IAAQtoB,EAAgBsoB,EAAhBtoB,MAAOjiF,EAASuqG,EAATvqG,KACf,GAAqB,iBAAViiF,EAAX,CACA,IAAMiN,GAAMT,EAAAA,EAAAA,IAAQxM,GACpB,GAAW,MAAPiN,EAAJ,CACA,IAAMsb,EAAa,OAAH,OAAU1uG,KAAKk/D,MAAMk0B,EAAIhtE,GAAE,aAAKpmB,KAAKk/D,MAAMk0B,EAAIzB,GAAE,aAAK3xF,KAAKk/D,MAAMk0B,EAAI5yF,GAAE,KACjFmuG,EAAY,QAAH,OAAW3uG,KAAKk/D,MAAMk0B,EAAIhtE,GAAE,aAAKpmB,KAAKk/D,MAAMk0B,EAAIzB,GAAE,aAAK3xF,KAAKk/D,MAAMk0B,EAAI5yF,GAAE,SACjFouG,EAAa,QAAH,OAAW5uG,KAAKk/D,MAAMk0B,EAAIhtE,GAAE,aAAKpmB,KAAKk/D,MAAMk0B,EAAIzB,GAAE,aAAK3xF,KAAKk/D,MAAMk0B,EAAI5yF,GAAE,SAClFquG,EAAc,CAClB,6BAA8BH,EAC9B,4BAA6BC,EAC7B,6BAA8BC,GAEhC,MAAa,YAAT1qG,EACK,EAAP,CACE4qG,gBAAiB,CACf,oCAAmC,UAChCH,EAAS,gBACTA,EAAS,oBACTC,EAAU,oBACVA,EAAU,UACbllG,KAAK,KACPqlG,mBAAoB,OACjBF,GAEa,UAAT3qG,EACF,EAAP,CACE4pG,gBAAiBc,GACdC,GAEa,SAAT3qG,EACF,EAAP,CACE4qG,gBAAiB,CACf,4BAA2B,UACxBJ,EAAU,gBACVA,EAAU,SACb,mBACAhlG,KAAK,KACPqlG,mBAAoB,OACjBF,QATA,CA1BgB,CAFc,CAFN,CA0CjC,EAEMG,EAAiB,SAACvtG,GACtB,MAAO,WAAaA,EAAKC,YACtBe,QAAQ,MAAO,KACfA,QAAQ,KAAM,OACnB,C,uECtCA,QAV4B,SAACtE,EAAIsqF,EAAYlxE,GAC3C,IAAM03F,GAAexmB,GAOJ,SAAAA,GAAU,OAAIA,GAAcA,EAAWnnF,SAAS,IAAI,CAPjCgqE,CAAWmd,IAAe,IAASlxE,EAAqBkxE,GAC5F,MAAO,CACLvoF,KAAO+uG,EAAc,wBAA0B,eAC/C31E,OAAS21E,EAAc,CAAE9wG,GAAAA,GAAO,CAAE+B,KAAMuoF,GAE5C,C,sHCaM3kF,MAAM,sB,+BAmCNA,MAAM,sB,4CAuBJA,MAAM,sB,gKA4IJA,MAAM,S,aAIHA,MAAM,Q,kaC1MnBq6B,EAAAA,GAAAA,IACE+wE,EAAAA,IACAC,EAAAA,IACAC,EAAAA,IACAC,EAAAA,IACAC,EAAAA,IACAlxE,EAAAA,IACAmxE,EAAAA,IACAC,EAAAA,IACAC,EAAAA,IACAC,EAAAA,IACAC,EAAAA,KAkLF,QA/KmB,CACjB5rG,MAAO,CACL,aACA,UACA,cACA,kBACA,OACA,OACA,WACA,SACA,UACA,UACA,QAEFtF,KAAI,WACF,MAAO,CACLmxG,iBAAkBprG,KAAKo/C,aAAep/C,KAAKs2B,WAAW8oB,YACtDisD,UAAWrrG,KAAKyvC,OAAOtzC,MAAM4Q,SAASyE,iBAAmB65F,EACzDC,cAAetrG,KAAKyvC,OAAOj7B,QAAQ/G,aAAa8yE,SAChDC,aAAcxgF,KAAKyvC,OAAOj7B,QAAQ/G,aAAa+yE,aAC/CznE,SAAS,EACTs/B,IAA4D,UAAvDzV,EAAAA,EAAAA,SAAyB5iC,KAAKs2B,WAAWuM,WAAyBh2B,SAAS6oF,cAAc,OAC9F6V,WAAW,EACXC,YAAY,EACZC,aAAa,EACbC,iBAAiB,EAErB,EACA7qG,WAAY,CACVi+C,MAAAA,EAAAA,EACAH,WAAAA,EAAAA,EACAC,gBAAAA,EAAAA,GAEF13C,S,qWAAU,CAAF,CACNykG,WAAU,WACR,MAAO,CACL,CACE,WAAY3rG,KAAK+Y,QACjB,oBAAqB/Y,KAAKi2B,OAC1B,iBAA2B1xB,IAAdvE,KAAK0c,KAClB,WAAY1c,KAAK8+D,SAEnB,SAAW9+D,KAAKN,KAChBM,KAAK2xC,MAAQ,SAAW3xC,KAAK2xC,KAAI,WAC7B3xC,KAAKmhF,cAAgB,UAAY,QAAO,QAEhD,EACAyqB,eAAc,WACZ,MAAqB,SAAd5rG,KAAK2xC,IACd,EACAwvC,cAAa,WACX,OAAOnhF,KAAKyvC,OAAOj7B,QAAQ/G,aAAa0zE,aAC1C,EACA0qB,gBAAe,WACb,MAAoC,KAAhC7rG,KAAKs2B,WAAW8oB,aAAuBp/C,KAAKs2B,WAAW8oB,YAGpDp/C,KAAKs2B,WAAW8oB,YAFdp/C,KAAKN,KAAKosG,aAGrB,EACAC,qBAAoB,WAClB,MAAkB,UAAd/rG,KAAKN,KAAyB,QAChB,UAAdM,KAAKN,KAAyB,QAChB,UAAdM,KAAKN,KAAyB,QAC3B,MACT,EACAssG,eAAc,WACZ,OAAOhsG,KAAKyvC,OAAOtzC,MAAM4Q,SAASwG,oBAAsB,GAAK,aAC/D,EACA7T,KAAI,WACF,OAAOkjC,EAAAA,EAAAA,SAAyB5iC,KAAKs2B,WAAWuM,SAClD,EACA5M,OAAM,WACJ,OAAOj2B,KAAKggB,MAAQhgB,KAAKsrG,gBAAkBtrG,KAAKwrG,UAClD,EACAtlC,QAAO,WACL,MAAsB,SAAdlmE,KAAKN,OAAoBM,KAAKs2B,WAAW21E,MACnD,EACAC,SAAQ,WACN,IAAIC,EAAa,GACjB,OAAQnsG,KAAK2xC,MACX,IAAK,OACL,IAAK,QACHw6D,EAAa,CAAC,QAAS,QAAS,QAAS,SACzC,MACF,QACEA,EAAansG,KAAKyN,aAAawzE,kBAC3B,CAAC,QAAS,QAAS,SACnB,CAAC,SAGT,OAAOkrB,EAAWrvG,SAASkD,KAAKN,KAClC,EACA0sG,SAAQ,WACN,OAAOpsG,KAAKksG,SAAW,SAAW,MACpC,IACG/8D,EAAAA,EAAAA,IAAW,CAAC,kBAEjByJ,MAAO,CACL,yBAAwB,SAAEQ,GACxBp5C,KAAKorG,iBAAmBhyD,CAC1B,EACAgyD,iBAAgB,SAAEhyD,GAChBp5C,KAAKqsG,OAAOjzD,EACd,GAEFt5C,QAAS,CACPooE,YAAW,YAAc,IAAVvnE,EAAM,EAANA,OACU,MAAnBA,EAAOqC,SACT5C,OAAOC,KAAKM,EAAOF,KAAM,SAE7B,EACA6rG,UAAS,SAAExnG,GACL9E,KAAKksG,UACPlsG,KAAK+E,MAAM,YACX/E,KAAKyvC,OAAOvzC,SAAS,kBAAmB8D,KAAKs2B,aACtB,YAAdt2B,KAAKN,MACdU,OAAOC,KAAKL,KAAKs2B,WAAW92B,IAEhC,EACA+sG,eAAc,SAAEznG,GACd9E,KAAK+E,MAAM,YACX/E,KAAKyvC,OAAOvzC,SAAS,kBAAmB8D,KAAKs2B,WAC/C,EACA+1E,OAAM,SAAEvnG,GACN9E,KAAK0c,MAAQ1c,KAAK0c,KAAK1c,KAAKs2B,WAAYxxB,EAC1C,EACA0nG,SAAQ,WACNxsG,KAAKy4E,QAAUz4E,KAAKy4E,OAAOz4E,KAAKs2B,WAClC,EACAm2E,UAAS,WACPzsG,KAAK0sG,SAAW1sG,KAAK0sG,QAAQ1sG,KAAKs2B,WACpC,EACAq2E,UAAS,WACP3sG,KAAK4sG,SAAW5sG,KAAK4sG,QAAQ5sG,KAAKs2B,WACpC,EACAu2E,UAAS,WACP7sG,KAAKkI,MAAM4kG,MAAMC,aACnB,EACAC,eAAc,SAAEloG,GACd9E,KAAKyrG,YAAc3mG,CACrB,EACAmoG,kBAAiB,WACfjtG,KAAK0rG,iBAAmB1rG,KAAK0rG,eAC/B,EACA7kD,aAAY,SAAE/hD,GAAO,YAEhB9E,KAAKyN,aAAayzE,iBAAoBlhF,KAAKwrG,YAC7B,UAAdxrG,KAAKN,OAAoBM,KAAKyN,aAAawzE,kBAK1CjhF,KAAKq4C,MAAQr4C,KAAKwgF,aAChBxgF,KAAKq4C,IAAI60D,OACXltG,KAAKq4C,IAAI60D,UAETltG,KAAK+Y,SAAU,EACf/Y,KAAKq4C,IAAIY,IAAMj5C,KAAKs2B,WAAW92B,IAC/BQ,KAAKq4C,IAAI60D,OAAS,WAChB,EAAKn0F,SAAU,EACf,EAAKyyF,YAAc,EAAKA,UAC1B,GAGFxrG,KAAKwrG,YAAcxrG,KAAKwrG,WAfxBxrG,KAAKssG,UAAUxnG,EAiBnB,EACAqoG,YAAW,SAAE3kG,GACX,IAAM+E,EAAQ/E,EAAM4kG,aACdprF,EAASxZ,EAAM8sF,cACrBt1F,KAAK+E,MAAM,kBAAmB,CAAEpL,GAAIqG,KAAKs2B,WAAW38B,GAAI4T,MAAAA,EAAOyU,OAAAA,GACjE,ICrMJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,iIFLjDthB,EAAAA,iBAAc,WADtBJ,EAAAA,EAAAA,IA+CS,U,MA7CPhB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,0CACEh0C,EAAAA,aACPX,QAAK,8BAAEW,EAAAA,WAAAA,EAAAA,UAAAA,MAAAA,EAAAA,UAAS,I,CAGA,SAATA,EAAAA,OAAI,WADZJ,EAAAA,EAAAA,IAWI,K,MATFhB,MAAM,cACNqB,OAAO,SACNF,KAAMC,EAAAA,WAAWlB,IACjB2hD,IAAKzgD,EAAAA,WAAW0+C,YAChBtyC,MAAOpM,EAAAA,WAAW0+C,YAClBr/C,QAAK,sBAAN,cAAc,e,EAEd6wC,EAAAA,EAAAA,IAAuCQ,EAAAA,CAA9BzoC,KAAMjI,EAAAA,sBAAoB,kBACnCF,EAAAA,EAAAA,GAAkC,kBAA5BE,EAAAA,KAAO,UAAY,IAAf,qBAA2BA,EAAAA,KAAO,GAAKA,EAAAA,iBAAe,0BAG1DA,EAAAA,MAAQA,EAAAA,SAAM,WADtBJ,EAAAA,EAAAA,IAWM,MAXN2vC,EAWM,CANIvvC,EAAAA,SAAM,WADdJ,EAAAA,EAAAA,IAMS,U,MAJPhB,MAAM,oCACLS,QAAK,wCAAUW,EAAAA,UAAAA,EAAAA,SAAAA,MAAAA,EAAAA,UAAQ,kB,EAExBkwC,EAAAA,EAAAA,IAA2BQ,EAAAA,CAAnBzoC,KAAK,kBAAW,kCAIX,SAATjI,EAAAA,OAAoBA,EAAAA,kBAAoBA,EAAAA,MAAQA,EAAAA,kBAAoBA,EAAAA,mBAAe,WAD3FJ,EAAAA,EAAAA,IAgBM,O,MAdJhB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,wBAAuB,YACPh0C,EAAAA,S,CAGdA,EAAAA,MAAI,qBADZJ,EAAAA,EAAAA,IAOC,S,2DALUI,EAAAA,iBAAgB,IACzBhB,KAAK,OACLJ,MAAM,oBACLixC,YAAa7vC,EAAAA,GAAG,iCAChB2sG,UAAO,+BAAR,cAAyB,0B,mBAJhB3sG,EAAAA,sBAAgB,WAM3BJ,EAAAA,EAAAA,IAEI,eADCI,EAAAA,kBAAgB,2CAIzBJ,EAAAA,EAAAA,IAsNM,O,MApNJhB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,aACEh0C,EAAAA,c,WAERF,EAAAA,EAAAA,GA+LM,MA/LN8vC,EA+LM,CA1LI5vC,EAAAA,SAAM,WADdJ,EAAAA,EAAAA,IAkBI,K,MAhBFhB,MAAM,kBACLmB,KAAMC,EAAAA,WAAWlB,IACjB2hD,IAAKzgD,EAAAA,WAAW0+C,YAChBtyC,MAAOpM,EAAAA,WAAW0+C,YAClBr/C,QAAK,wCAAeW,EAAAA,cAAAA,EAAAA,aAAAA,MAAAA,EAAAA,UAAY,yB,cAEjCJ,EAAAA,EAAAA,IAIC,OAHE+G,IAAK3G,EAAAA,UACNpB,MAAM,OACL25C,IAAKv4C,EAAAA,W,WAGS,UAATA,EAAAA,OAAI,WADZuwC,EAAAA,EAAAA,IAIEG,EAAAA,C,MAFA9xC,MAAM,YACNqJ,KAAK,kB,sCAIAjI,EAAAA,QAyDmB,iBAzDb,WADfJ,EAAAA,EAAAA,IA4DM,MA5DNmwC,EA4DM,CAvDa,UAAT/vC,EAAAA,MAAoBA,EAAAA,cAAW,WADvCJ,EAAAA,EAAAA,IAOS,U,MALPhB,MAAM,oCACLwN,MAAOpM,EAAAA,GAAG,gCACVX,QAAK,wCAAUW,EAAAA,WAAAA,EAAAA,UAAAA,MAAAA,EAAAA,UAAS,kB,EAEzBkwC,EAAAA,EAAAA,IAAsBQ,EAAAA,CAAdzoC,KAAK,UAAM,sBAGbjI,EAAAA,WAAW0+C,aAAwB,UAAT1+C,EAAAA,OAAqBA,EAAAA,MAAiB,YAATA,EAAAA,OAAI,WADnEJ,EAAAA,EAAAA,IAOS,U,MALPhB,MAAM,oCACLwN,MAAOpM,EAAAA,GAAG,sCACVX,QAAK,wCAAUW,EAAAA,mBAAAA,EAAAA,kBAAAA,MAAAA,EAAAA,UAAiB,kB,EAEjCkwC,EAAAA,EAAAA,IAA6BQ,EAAAA,CAArBzoC,KAAK,iBAAa,sBAGnBjI,EAAAA,UAAqB,YAATA,EAAAA,MAKO,iBALH,WADzBJ,EAAAA,EAAAA,IAOS,U,MALPhB,MAAM,oCACLwN,MAAOpM,EAAAA,GAAG,mCACVX,QAAK,wCAAUW,EAAAA,gBAAAA,EAAAA,eAAAA,MAAAA,EAAAA,UAAc,kB,EAE9BkwC,EAAAA,EAAAA,IAA6BQ,EAAAA,CAArBzoC,KAAK,iBAAa,MAGpBjI,EAAAA,MAAQA,EAAAA,gBAAa,WAD7BJ,EAAAA,EAAAA,IAOS,U,MALPhB,MAAM,oCACLwN,MAAOpM,EAAAA,GAAG,0BACVX,QAAK,wCAAUW,EAAAA,cAAAA,EAAAA,aAAAA,MAAAA,EAAAA,UAAY,kB,EAE5BkwC,EAAAA,EAAAA,IAAuBQ,EAAAA,CAAfzoC,KAAK,WAAO,sBAGdjI,EAAAA,UAAO,WADfJ,EAAAA,EAAAA,IAOS,U,MALPhB,MAAM,oCACLwN,MAAOpM,EAAAA,GAAG,kBACVX,QAAK,0CAAUW,EAAAA,WAAAA,EAAAA,UAAAA,MAAAA,EAAAA,UAAS,kB,EAEzBkwC,EAAAA,EAAAA,IAA8BQ,EAAAA,CAAtBzoC,KAAK,kBAAc,sBAGrBjI,EAAAA,UAAO,WADfJ,EAAAA,EAAAA,IAOS,U,MALPhB,MAAM,oCACLwN,MAAOpM,EAAAA,GAAG,oBACVX,QAAK,0CAAUW,EAAAA,WAAAA,EAAAA,UAAAA,MAAAA,EAAAA,UAAS,kB,EAEzBkwC,EAAAA,EAAAA,IAA+BQ,EAAAA,CAAvBzoC,KAAK,mBAAe,sBAGtBjI,EAAAA,SAAM,WADdJ,EAAAA,EAAAA,IAOS,U,MALPhB,MAAM,oCACLwN,MAAOpM,EAAAA,GAAG,4BACVX,QAAK,0CAAUW,EAAAA,UAAAA,EAAAA,SAAAA,MAAAA,EAAAA,UAAQ,kB,EAExBkwC,EAAAA,EAAAA,IAA2BQ,EAAAA,CAAnBzoC,KAAK,eAAW,yBAKX,UAATjI,EAAAA,MAAsBA,EAAAA,SAAUA,EAAAA,c,iBAAY,WADpDJ,EAAAA,EAAAA,IAgBI,K,MAdFhB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,kBAAiB,WACHh0C,EAAAA,QAAUA,EAAAA,gBAC7BD,KAAMC,EAAAA,WAAWlB,IAClBmB,OAAO,SACNZ,QAAK,0CAAeW,EAAAA,WAAAA,EAAAA,UAAAA,MAAAA,EAAAA,UAAS,yB,EAE9BkwC,EAAAA,EAAAA,IAOE08D,EAAAA,CANAhuG,MAAM,QACL0sG,eAAgBtrG,EAAAA,eAChBmiC,SAAUniC,EAAAA,WAAWmiC,SACrBoW,IAAKv4C,EAAAA,WAAW6xF,iBAAmB7xF,EAAAA,WAAWlB,IAC9C,qBAAoBkB,EAAAA,YACpBygD,IAAKzgD,EAAAA,WAAW0+C,a,+EAKJ,YAAT1+C,EAAAA,MAAuBA,EAAAA,QAWR,iBAXc,WADrCJ,EAAAA,EAAAA,IAcI,K,MAZFhB,MAAM,wBACLmB,KAAMC,EAAAA,WAAWlB,IAClBmB,OAAO,U,EAEPiwC,EAAAA,EAAAA,IAIEQ,EAAAA,CAHCO,KAAMjxC,EAAAA,QAAU,KAAO,KACvBiI,KAAMjI,EAAAA,qBACNoM,MAAOpM,EAAAA,kB,gCAEAA,EAAAA,SACW,iBADJ,WAAjBJ,EAAAA,EAAAA,IAEI,eADCI,EAAAA,kBAAgB,WAMN,UAATA,EAAAA,MAAqBA,EAAAA,Q,iBAAM,WAFnCuwC,EAAAA,EAAAA,KAoBYsD,EAAAA,EAAAA,IAnBL7zC,EAAAA,UAAQ,C,MAEbpB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,kBACE,gCACPj0C,KAAMC,EAAAA,WAAWlB,IACjBO,SAAK,QAAeW,EAAAA,UAAS,qB,mBAE9B,iBAME,EANFkwC,EAAAA,EAAAA,IAMEyQ,EAAAA,CALA/hD,MAAM,QACLg3B,WAAY51B,EAAAA,WACZ4gD,UAAW5gD,EAAAA,SACX6sG,OAAI,iCAAE7sG,EAAAA,MAAM,OAAD,GACX8sG,QAAK,iCAAE9sG,EAAAA,MAAM,QAAD,I,kCAGPA,EAAAA,WAAQ,WADhBuwC,EAAAA,EAAAA,IAIEG,EAAAA,C,MAFA9xC,MAAM,YACNqJ,KAAK,kB,+CAKQ,UAATjI,EAAAA,MAAqBA,EAAAA,Q,iBAAM,WADnCJ,EAAAA,EAAAA,IAeO,Q,MAbLhB,MAAM,kBACLmB,KAAMC,EAAAA,WAAWlB,IACjBO,QAAK,0CAAeW,EAAAA,WAAAA,EAAAA,UAAAA,MAAAA,EAAAA,UAAS,yB,CAGb,UAATA,EAAAA,OAAI,WADZJ,EAAAA,EAAAA,IAQE,S,MANC24C,IAAKv4C,EAAAA,WAAWlB,IAChB2hD,IAAKzgD,EAAAA,WAAW0+C,YAChBtyC,MAAOpM,EAAAA,WAAW0+C,YACnBkC,SAAA,GACCisD,OAAI,iCAAE7sG,EAAAA,MAAM,OAAD,GACX8sG,QAAK,iCAAE9sG,EAAAA,MAAM,QAAD,I,mCAKA,SAATA,EAAAA,MAAmBA,EAAAA,WAAWurG,SAAM,WAD5C3rG,EAAAA,EAAAA,IAiBM,O,MAfJhB,MAAM,mBACLS,QAAK,0CAAUW,EAAAA,aAAAA,EAAAA,YAAAA,MAAAA,EAAAA,UAAW,kB,CAGnBA,EAAAA,WAAW+sG,YAAS,WAD5BntG,EAAAA,EAAAA,IAKM,MALN4pE,EAKM,EADJ1pE,EAAAA,EAAAA,GAAiC,OAA3By4C,IAAKv4C,EAAAA,WAAW+sG,W,8BAExBjtG,EAAAA,EAAAA,GAKM,MALN4sE,EAKM,EAHJ5sE,EAAAA,EAAAA,GAAoE,YAAhEA,EAAAA,EAAAA,GAA2D,KAAvDC,KAAMC,EAAAA,WAAWlB,M,QAAQkB,EAAAA,WAAWurG,OAAOn/F,OAAK,QACxDtM,EAAAA,EAAAA,GAA6C,OAAxCI,UAAQF,EAAAA,WAAWurG,OAAOyB,Y,+BAMlB,UAAThtG,EAAAA,MAAqBA,EAAAA,Q,iBAAM,WADnCJ,EAAAA,EAAAA,IAaO,Q,MAXLhB,MAAM,kBACLmB,KAAMC,EAAAA,WAAWlB,IACjBO,QAAK,0CAAeW,EAAAA,WAAAA,EAAAA,UAAAA,MAAAA,EAAAA,UAAS,yB,EAE9BkwC,EAAAA,EAAAA,IAME2Q,EAAAA,CALA7Q,IAAI,QACJpxC,MAAM,QACL25C,IAAKv4C,EAAAA,WAAW6xF,iBAAmB7xF,EAAAA,WAAWlB,IAC9CmuG,eAAY,iCAAEjtG,EAAAA,gBAAe,EAAD,GAC5BktG,eAAY,iCAAEltG,EAAAA,gBAAe,EAAD,I,qCA3LxBA,EAAAA,WAgMM,SAATA,EAAAA,OAAoBA,EAAAA,kBAAoBA,EAAAA,MAASA,EAAAA,kBAAoBA,EAAAA,mBAAe,WAD5FJ,EAAAA,EAAAA,IAgBM,O,MAdJhB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,wBAAuB,YACPh0C,EAAAA,S,CAGdA,EAAAA,MAAI,qBADZJ,EAAAA,EAAAA,IAOC,S,6DALUI,EAAAA,iBAAgB,IACzBhB,KAAK,OACLJ,MAAM,oBACLixC,YAAa7vC,EAAAA,GAAG,iCAChB2sG,UAAO,iCAAR,cAAyB,0B,mBAJhB3sG,EAAAA,sBAAgB,WAM3BJ,EAAAA,EAAAA,IAEI,eADCI,EAAAA,kBAAgB,6B,sEGnQpBpB,MAAM,W,qBCmBb,QAjBmB,CACjBC,MAAO,CAAC,SACR2H,SAAU,CACR2mG,YAAW,WACT,OAAO7tG,KAAKhD,MAAQgD,KAAKhD,MAAMG,MAAM,EAAG,IAAM,EAChD,GAEF0D,WAAY,CACVk7D,WAAAA,EAAAA,SAEFj8D,QAAS,CACP44C,gBAAe,SAAEz7C,GACf,OAAO07C,EAAAA,EAAAA,GAAoB17C,EAAKtD,GAAIsD,EAAKC,YAAa8C,KAAKyvC,OAAOtzC,MAAM4Q,SAASgG,oBACnF,ICPJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,+FFNzDzS,EAAAA,EAAAA,IAYM,MAZNC,EAYM,gBAXJD,EAAAA,EAAAA,IAUc8vC,EAAAA,GAAAA,MAAAA,EAAAA,EAAAA,IATG1vC,EAAAA,aAAW,SAAnBzD,G,kBADTg0C,EAAAA,EAAAA,IAUcJ,EAAAA,CARXxpC,IAAKpK,EAAKtD,GACV2jC,GAAI58B,EAAAA,gBAAgBzD,GACrBqC,MAAM,gB,mBAEN,iBAGE,EAHFsxC,EAAAA,EAAAA,IAGEyrB,EAAAA,CAFCp/D,KAAMA,EACPqC,MAAM,gB,kIGTPA,MAAM,mB,GAkBPA,MAAM,qC,kECIZ,QAjBsB,CACpBC,MAAO,CACL,QAEFsB,WAAY,CACVo7D,YAAAA,EAAAA,QACAF,WAAAA,EAAAA,QACAC,YAAAA,EAAAA,EACApU,SAAAA,EAAAA,GAEF9nD,QAAS,CACP44C,gBAAe,SAAEz7C,GACf,OAAO07C,EAAAA,EAAAA,GAAoB17C,EAAKtD,GAAIsD,EAAKC,YAAa8C,KAAKyvC,OAAOtzC,MAAM4Q,SAASgG,oBACnF,ICVJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,2KFNzDzS,EAAAA,EAAAA,IAsCM,MAtCNC,EAsCM,EArCJqwC,EAAAA,EAAAA,IAecC,EAAAA,CAdXvT,GAAI58B,EAAAA,gBAAgBA,EAAAA,MACpBX,QAAK,sBAAN,cAAc,e,mBAEd,iBAUc,EAVd6wC,EAAAA,EAAAA,IAUcwrB,EAAAA,CATX,UAAS17D,EAAAA,KAAK/G,GACd,mBAAiB,EAClB,2BAAyB,W,mBAEzB,iBAIE,EAJFi3C,EAAAA,EAAAA,IAIEyrB,EAAAA,CAHA/8D,MAAM,qBACLrC,KAAMyD,EAAAA,KACNX,QAAK,sBAAN,cAAc,e,6DAIpBS,EAAAA,EAAAA,GAoBM,MApBNyvC,EAoBM,EAjBJzvC,EAAAA,EAAAA,GASM,OARHsM,MAAOpM,EAAAA,KAAKhF,KACb4D,MAAM,6B,EAENsxC,EAAAA,EAAAA,IAIE0rB,EAAAA,CAHAh9D,MAAM,kCACL0B,KAAMN,EAAAA,KAAKhF,KACXtB,MAAOsG,EAAAA,KAAKtG,O,gCAGjBoG,EAAAA,EAAAA,GAKM,aAJJowC,EAAAA,EAAAA,IAGEk9D,EAAAA,CAFAxuG,MAAM,8BACLrC,KAAMyD,EAAAA,M,oBAGXgzC,EAAAA,EAAAA,IAAQhzC,EAAAA,OAAAA,c,yHGxBVF,EAAAA,EAAAA,GAGE,KAFAlB,MAAM,qBACL,eAAa,G,kBAIdA,MAAM,SAQZ,SACEC,MAAO,CACL,aACA,gBACA,YAEFigE,MAAO,CAAC,sBCxBV,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,wCDNzDl/D,EAAAA,EAAAA,IAsBQ,SArBNhB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,WAAU,CAAAjsC,SACN+qC,EAAAA,SAAQu6D,cAAEv6D,EAAAA,kB,EAEpBhzC,EAAAA,EAAAA,GAOC,SANCd,KAAK,WACLJ,MAAM,gCACLmJ,SAAU+qC,EAAAA,SACV+U,QAAS/U,EAAAA,WACTu6D,cAAev6D,EAAAA,cACf2+B,SAAM,+BAAEzxE,EAAAA,MAAM,oBAAqBstG,EAAOrtG,OAAO4nD,QAAO,I,WAE3DtY,EAKUvvC,EAAAA,OAAM,UAAQ,WADxBJ,EAAAA,EAAAA,IAKO,OALP4vC,EAKO,EADLwD,EAAAA,EAAAA,IAAQhzC,EAAAA,OAAAA,eAAAA,EAAAA,EAAAA,IAAAA,IAAAA,IAAAA,E,6IEed,QA3BqB,CACnBG,WAAY,CACVotG,Y,SAAAA,GAEF1uG,MAAO,CACLuN,MAAO,CACLpN,KAAMC,QAERuuG,WAAY,CACVxuG,KAAMC,QAERwuG,YAAa,CACXzuG,KAAMC,SAGVuH,SAAU,CACV,EACApH,QAAS,CACP8+D,SAAQ,WACN5+D,KAAK+E,MAAM,YACb,EACAqpG,SAAQ,WACNpuG,KAAK+E,MAAM,WACb,ICzBJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,gHCJzDksC,EAAAA,EAAAA,IAwBeo9D,EAAAA,CAtBb/uG,MAAM,gBACL,YAAWoB,EAAAA,U,CAED04D,QAAM,SACf,iBAAuB,EAAvB54D,EAAAA,EAAAA,GAAuB,Q,aAAjBwkE,EAAAA,EAAAA,IAAQtkE,EAAM,Q,cAKX24D,QAAM,SACf,iBAIE,EAJF74D,EAAAA,EAAAA,GAIE,UAHAlB,MAAM,qBACLS,QAAK,wCAAUW,EAAAA,UAAAA,EAAAA,SAAAA,MAAAA,EAAAA,UAAQ,iB,aACxBskE,EAAAA,EAAAA,IAAQtkE,EAAY,c,WAGtBF,EAAAA,EAAAA,GAIE,UAHAlB,MAAM,qBACLS,QAAK,wCAAUW,EAAAA,UAAAA,EAAAA,SAAAA,MAAAA,EAAAA,UAAQ,iB,aACxBskE,EAAAA,EAAAA,IAAQtkE,EAAW,a,gCAZvB,iBAAQ,EAARgzC,EAAAA,EAAAA,IAAQhzC,EAAAA,OAAAA,W,gCARY,I,2FCObpB,MAAM,sC,GACJA,MAAM,S,GAIRA,MAAM,wB,GAGNA,MAAM,sDCJjB,QAboB,CAClBC,MAAO,CACL+uG,YAAa,CACXzuG,SAAS,EACTH,KAAMyB,SAERy9D,SAAU,CACR/+D,QAAS,WAAO,EAChBH,KAAMkH,YCCZ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,wCFNzDtG,EAAAA,EAAAA,IAoBO,QAnBJhB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAA,eAAoBh0C,EAAAA,cACzBX,QAAK,yCAAYW,EAAAA,UAAQ,sB,EAE1BF,EAAAA,EAAAA,GAeM,OAdJlB,MAAM,mCACLS,QAAK,sBAAN,cAAc,Y,EAEdS,EAAAA,EAAAA,GAIM,MAJND,EAIM,EAHJC,EAAAA,EAAAA,GAEM,MAFNyvC,EAEM,EADJyD,EAAAA,EAAAA,IAAsBhzC,EAAAA,OAAAA,eAG1BF,EAAAA,EAAAA,GAEM,MAFN0vC,EAEM,EADJwD,EAAAA,EAAAA,IAAuBhzC,EAAAA,OAAAA,cAEzBF,EAAAA,EAAAA,GAEM,MAFN6vC,EAEM,EADJqD,EAAAA,EAAAA,IAAsBhzC,EAAAA,OAAAA,eAAAA,E,4FGItBgwC,IAAI,qBACJpxC,MAAM,S,wEAsDIA,MAAM,S,uBAOPA,MAAM,S,SAGPA,MAAM,e,SASNA,MAAM,e,GAIFA,MAAM,c,2HCvFbivG,EAAqB,SAACC,GACjC,OAAO,IAAOA,GAAO,SAAC5wG,EAAQ6wG,GAC5B,IAAMx0G,EAAO,CACXw0G,KAAAA,EACA3gG,MAAO,EACPI,IAAKugG,EAAKpzG,QAGZ,GAAIuC,EAAOvC,OAAS,EAAG,CACrB,IAAMqzG,EAAW9wG,EAAOkF,MAExB7I,EAAK6T,OAAS4gG,EAASxgG,IACvBjU,EAAKiU,KAAOwgG,EAASxgG,IAErBtQ,EAAOyB,KAAKqvG,EACd,CAIA,OAFA9wG,EAAOyB,KAAKpF,GAEL2D,CACT,GAAG,GACL,EAEa+wG,EAA4B,SAAC7hC,GAGxC,IAFA,IAAMlvE,EAAS,GACXgxG,EAAc,GACT5vG,EAAI,EAAGA,EAAI8tE,EAAIzxE,OAAQ2D,IAAK,CACnC,IAAM6vG,EAAc/hC,EAAI9tE,GAEnB4vG,IAMCC,EAAY1wG,UAAaywG,EAAYzwG,OAK3CywG,GAAeC,GAJbjxG,EAAOyB,KAAKuvG,GACZA,EAAcC,GAPdD,EAAcC,CAWlB,CAKA,OAHID,GACFhxG,EAAOyB,KAAKuvG,GAEPhxG,CACT,EASA,QA/D8B,SAACkvE,EAAKgiC,GAClC,IAAMN,EAAQG,EAA0B7hC,GAClCiiC,EAAoBR,EAAmBC,GAE7C,OAAO,IAAKO,GAAmB,gBAAGjhG,EAAK,EAALA,MAAOI,EAAG,EAAHA,IAAG,OAAOJ,GAASghG,GAAO5gG,EAAM4gG,CAAG,GAC9E,EA0DA,EAnE2B,SAAChiC,EAAKkiC,EAAWvxG,GAC1C,OAAOqvE,EAAI3vE,MAAM,EAAG6xG,EAAUlhG,OAASrQ,EAAcqvE,EAAI3vE,MAAM6xG,EAAU9gG,IAC3E,E,OCMW5O,MAAM,W,GAEPoxC,IAAI,SACJpxC,MAAM,c,+BAeFA,MAAM,6B,SAgBVA,MAAM,mB,qBAiBRA,MAAM,W,GAMCA,MAAM,gB,qBA8BHA,MAAM,e,SAIJA,MAAM,qB,+BAaJA,MAAM,+B,GAcbA,MAAM,a,SAQXA,MAAM,oB,iuDClHhBq6B,GAAAA,GAAAA,IACEs1E,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAC,GAAAA,KAGF,IAAMC,GAA2B,CAC/B,sBAAuB,QACvB,kBAAmB,OACnB,qBAAsB,MACtB,iBAAkB,YAClB,oBAAqB,MACrBC,WAAY,kBACZC,QAAS,YACTh6F,QAAS,OACTi6F,MAAO,QAGHC,GAAyB,SAAC71G,EAAO6O,EAAWinG,GAChD,IAAMjiG,EAAM,CAAC7T,EAAMyB,YAAaq0G,EAAc91G,IAQ9C,OAPIA,EAAMqU,aACRxF,EAAU+L,SAAQ,SAAA/K,GAAQ,QAClB/O,GAAkC,QAAvB,EAAAd,EAAMqU,YAAYxE,UAAK,aAAvB,EAAyB/O,WAAY,GAChDQ,EAA8B,QAA1B,EAAGtB,EAAMqU,YAAYxE,UAAK,aAAvB,EAAyBvO,KACtCuS,EAAI5O,KAAI,MAAR4O,GAAG,OAAU/S,EAASD,OAAO,CAACS,IAAOX,QAAO,SAAAO,GAAC,OAAIA,CAAC,KACpD,IAEK2S,CACT,EAiSA,SA9PoB,CAClB1O,MAAO,CACL4wG,oBAAqB,CACnB1wG,UAAU,EACVC,KAAMyB,QACNtB,SAAS,IAGb5F,KAAI,WACF,MAAO,CACLu3E,QAAS,GACT4+B,YAAa,SACbC,iBAAiB,EACjBC,oBAAqB,eACrBC,UAAU,EACVC,mBAAoB,KAEpBC,eAAe,EACfC,UAAW,CAAC,EACZC,UAAW,CAAC,EACZC,oBAAqB,GACrBrjG,MAAO,EAEX,EACA1M,WAAY,CACVgwG,eAAelmD,EAAAA,EAAAA,KAAqB,kBAAM,8BAA8C,IACxFpU,SAAAA,GAAAA,EACAoI,WAAAA,GAAAA,EACA4S,QAAAA,GAAAA,SAEFzxD,QAAS,CACPgxG,WAAU,WACR9wG,KAAKkI,MAAM02F,QAAQmS,cACnB/wG,KAAKgxG,WACP,EACAC,WAAU,WACRjxG,KAAKkI,MAAM02F,QAAQsS,aACrB,EACAC,YAAW,SAAE1pC,GACXznE,KAAKkI,MAAM02F,QAAQuS,YAAY1pC,EACjC,EACA2pC,YAAW,SAAE11G,GAAM,WACjB,OAAO,SAAA+rE,GAAQ,EAAKipC,UAAUh1G,GAAQ+rE,CAAG,CAC3C,EACA4pC,eAAc,WACZrxG,KAAK+E,MAAM,OACb,EACAusG,gBAAe,WACbtxG,KAAK+E,MAAM,QACb,EACAwsG,kBAAiB,SAAEh4G,GACjByG,KAAK+E,MAAM,mBAAoBxL,EACjC,EACAi4G,sBAAqB,SAAEj4G,GACrByG,KAAK+E,MAAM,wBAAyBxL,EACtC,EACAk4G,QAAO,SAAEr3G,GACP,IAAMwR,EAAQxR,EAAMuB,SAAW,IAAH,OAAOvB,EAAMyB,YAAW,KAAMzB,EAAMqD,YAC3DuC,KAAKuwG,UACRvwG,KAAKkI,MAAM02F,QAAQsS,cAErBlxG,KAAK+E,MAAM,QAAS,CAAE2sG,UAAW9lG,EAAO2kG,SAAUvwG,KAAKuwG,UACzD,EACApqD,SAAQ,SAAEwrD,EAAYC,EAAUC,EAAmBC,GACjD,IAAMnxG,EAASX,KAAKkI,MAAM,gBAAgBoxC,IAC1Ct5C,KAAK+xG,cAAcpxG,EAAQkxG,EAAmBC,EAChD,EACAC,cAAa,SAAEpxG,EAAQmN,EAAOI,GAAK,WAC3B+rD,EAAMt5D,EAAOyH,UAAY,EAC/BpI,KAAK05C,WAAU,WACb,EAAKs4D,WAAW70G,MAAM2Q,EAAOI,EAAM,GAAG8G,SAAQ,SAAAm7D,GAC5C,IAAM8hC,EAAsB9hC,EAAMx2E,GA1EhCsE,QAAQ,YAAa,IA2EjByyC,EAAM,EAAKggE,UAAU,SAAWvgC,EAAMx2E,IAC5C,GAAK+2C,EAAL,CACA,IAAMhrC,EAAOgrC,EAAI4I,IAAI44D,cAChBxsG,GACDA,GAvFI,SAACA,GACjB,IAAMq9C,EAAQr9C,EAAKq9C,MAAMpO,UACnB1mC,EAAM,wBAAwBpQ,KAAKklD,GACzC,OAAK90C,EACEA,EAAI,GADQ,CAErB,CAkFsBkkG,CAAUzsG,IAASu0D,IAC7B,EAAKm2C,YAAc6B,EAJF,CAMrB,IACA,EAAKG,cACP,GACF,EACAA,aAAY,WAEV,IAAMC,EAAYryG,KAAK0wG,UAAU,gBAAkB1wG,KAAKowG,aAClD3vC,EAAO4xC,EAAU1Z,WACjB9rE,EAAQ4zC,EAAO4xC,EAAUC,YACzBC,EAAavyG,KAAKkI,MAAMkxD,OACxBo5C,EAAgBD,EAAWE,WAC3BC,EAAqBF,EAAgBD,EAAW7pF,YAChDiqF,EAAY,SAAA71F,GAAOy1F,EAAWE,WAAa31F,CAAE,EAG/C2jD,EADW,EACK+xC,EAClBG,EAAUlyC,EAFG,GAGJ5zC,EAHI,EAGa6lF,GAC1BC,EAAU9lF,EAJG,EAIc0lF,EAAW7pF,YAE1C,EACA8G,UAAS,SAAEra,GACTnV,KAAK4yG,iBAAgB,GACrB,IAAMC,EAAc7yG,KAAKgyG,WAAWxrG,WAAU,SAAAlL,GAAC,OAAIA,EAAE3B,KAAOwb,CAAO,IACnEnV,KAAKkI,MAAM,gBAAgB4qG,aAAaD,EAC1C,EACAE,oBAAmB,SAAEpyG,GACfA,EAAOyH,WAAa,EACtBpI,KAAKswG,oBAAsB,eAClB3vG,EAAOyH,WAAazH,EAAOqyG,aAAe,EACnDhzG,KAAKswG,oBAAsB,kBAE3BtwG,KAAKswG,oBAAsB,iBAE/B,EACA2C,eAAc,WACZjzG,KAAKqwG,iBAAmBrwG,KAAKqwG,eAC/B,EACAuC,gBAAe,SAAEhnG,GACf5L,KAAKqwG,gBAAkBzkG,CACzB,EACAsnG,gBAAe,SAAEv6G,EAAM64E,GACrB,OA1JkB,SAAC74E,GAAiD,IAA3C64E,EAAU,UAAH,6CAAG,GAAIvoE,EAAS,uCAAEinG,EAAa,uCACnE,GAAgB,KAAZ1+B,EAAgB,OAAO74E,EAE3B,IAEwB,EAFlBw6G,EAAmB3hC,EAAQ32E,cAC3Bu4G,EAAmB,GAAE,KACPz6G,GAAI,IAAxB,IAAK,EAAL,qBAA0B,KAAfyB,EAAK,QACRi5G,EAAUpD,GAAuB71G,EAAO6O,EAAWinG,GACtDn3G,KAAI,SAAAuC,GAAC,OAAIA,EAAET,cAAc0zB,QAAQ4kF,EAAiB,IAClDp4G,QAAO,SAAAO,GAAC,OAAIA,GAAK,CAAC,IAEfg4G,EAAiBD,EAAQh4G,OAASG,KAAKyjC,IAAG,MAARzjC,MAAI,OAAQ63G,KAAY,EAE5DC,GAAkB,IACfj1G,MAAMoF,QAAQ2vG,EAAiBE,MAClCF,EAAiBE,GAAkB,IAErCF,EAAiBE,GAAgBj0G,KAAKjF,GAE1C,CAAC,+BACD,OAAOg5G,EAAiBG,MAC1B,CAsIaL,CAAgBv6G,EAAM64E,EAASxxE,KAAKiJ,UAAWjJ,KAAKwzG,wBAC7D,EACAxC,UAAS,WAAI,WACLyC,EAAmBzzG,KAAKywG,cAC9BzwG,KAAK0zG,wBACL1zG,KAAK05C,WAAU,WACb,EAAKxxC,MAAMic,OAAO4rB,OACpB,IACA/vC,KAAKywG,eAAgB,EACrBzwG,KAAK4wG,oBAAsB5wG,KAAK2zG,yBAC3BF,GACHzzG,KAAK05C,WAAU,WACT,EAAKk6D,cACP,EAAKpkF,UAAU,EAAKokF,aAExB,GAEJ,EACAD,uBAAsB,WAAI,WACxB,OAAO3zG,KAAK6zG,eACT96G,KAAI,SAAAo3E,GAAK,gBACLA,GAAK,IACRx1E,OAAQ,EAAKu4G,gBAAgB/iC,EAAMx1E,OAAQ,IAAK,EAAK62E,WAAS,IAE/Dz2E,QAAO,SAAAo1E,GAAK,OAAIA,EAAMx1E,OAAOU,OAAS,CAAC,GAC5C,EACAq4G,sBAAqB,WAAI,WACvB1zG,KAAK05C,WAAU,WACR,EAAKxxC,MAAM,kBAGhB,EAAKqF,MAAQ,EAAKrF,MAAM,gBAAgBoxC,IAAI5wB,YAC9C,GACF,GAEFkwB,MAAO,CACL44B,QAAO,WACLxxE,KAAKmmD,WACLnmD,KAAK8zG,8BACP,EACAC,gBAAe,WACb/zG,KAAK4wG,oBAAsB5wG,KAAK2zG,wBAClC,GAEFzsG,SAAU,CACR8sG,YAAW,WACT,OAAOh0G,KAAKi0G,WACd,EACAA,YAAW,WACT,OAAO,EACT,EACAC,WAAU,WACR,OAAO,EACT,EACAC,WAAU,WACR,OAAOn0G,KAAKuN,MAAQ/R,KAAKk/D,MAAM16D,KAAKuN,MAAQvN,KAAKk0G,WAAa,GAAK,CACrE,EACAE,gBAAe,WACb,OAAOp0G,KAAKqwG,gBAAkB,GAAKrwG,KAAKowG,WAC1C,EACAiE,kBAAiB,WACf,OAAIr0G,KAAKyvC,OAAOtzC,MAAM4Q,SAAS+tE,SACtB96E,KAAKyvC,OAAOtzC,MAAM4Q,SAAS+tE,SAASz/E,OAAS,EAE/C,CACT,EACA04G,gBAAe,WACb,IAAMp5G,EAASqF,KAAKyvC,OAAOj7B,QAAQG,oBAInC,OAHIha,EAAO25G,WACT35G,EAAO25G,SAAS11G,KAAOoB,KAAKg4D,GAAG,mBAE1Br9D,CACT,EACAi5G,aAAY,WACV,OAAO95G,OAAOD,KAAKmG,KAAK+zG,iBAAiB,EAC3C,EACAQ,mBAAkB,WAAI,WACpB,OAAOv0G,KAAKyvC,OAAOj7B,QAAQY,uBAAuBrc,KAAI,SAAAo3E,GAAK,MAAK,CAC9Dx2E,GAAI,YAAF,OAAcw2E,EAAMx2E,IACtBiF,KAAM,EAAKo5D,GAAG,wBAAD,OAAyBmY,EAAMx2E,KAC5CgP,KAAMknG,GAAyB1/B,EAAMx2E,IACrCgB,OAAQw1E,EAAMx1E,OACf,GACH,EACAk5G,eAAc,WACZ,OAAO/5G,OAAOsd,QAAQpX,KAAK+zG,iBACxBh7G,KAAI,+BAAM,OAAH,KAAG,IAAO,IACjBkC,OAAO+E,KAAKu0G,mBACjB,EACAC,qBAAoB,WAClB,OAA8D,KAAtDx0G,KAAKyvC,OAAOtzC,MAAM4Q,SAAS+tE,UAAY,IAAIz/E,MACrD,EACAy4G,6BAA4B,WAAI,WAC9B,OAAO,MAAS,WACd,EAAKlD,oBAAsB,EAAK+C,wBAClC,GAAG,IACL,EACA3B,WAAU,WAAI,WACZ,OAAOhyG,KAAK4wG,oBAAoB73G,KAAI,SAAAo3E,GAAK,OACvC,IAAMA,EAAMx1E,OAAQ,EAAKw5G,YACtBp7G,KAAI,SAACiwD,EAAO3lD,GAAK,gBACb8sE,GAAK,IACRx2E,GAAc,IAAV0J,EAAc8sE,EAAMx2E,GAAK,OAAH,OAAU0J,EAAK,YAAI8sE,EAAMx2E,IACnDgB,OAAQquD,EACRyrD,WAAsB,IAAVpxG,GAAW,GACtB,IACJsL,QAAO,SAAC5S,EAAG6sC,GAAC,OAAK7sC,EAAEd,OAAO2tC,EAAE,GAAE,GACnC,EACA3/B,UAAS,WACP,OAAOG,EAAAA,GAAAA,qBAAoBpJ,KAAKyvC,OAAOj7B,QAAQ/G,aAAam+C,kBAC9D,EACA4nD,wBAAuB,WAAI,WACzB,OAAO,SAAAp5G,GACL,IAAKA,EAAMqU,YACT,OAAOrU,EAAMyB,YAGf,GAAIzB,EAAMiU,gBACR,OAAO,EAAK2pD,GAAG59D,EAAMiU,gBAAgBhH,IAAKjN,EAAMiU,gBAAgBC,MACjE,IAEgC,EAFhC,KAEkB,EAAKrF,WAAS,IAAjC,IAAK,EAAL,qBAAmC,OAAxBgB,EAAI,QACb,GAA2B,QAA3B,EAAI7P,EAAMqU,YAAYxE,UAAK,OAAvB,EAAyBvO,KAC3B,OAAOtB,EAAMqU,YAAYxE,GAAMvO,IAEnC,CAAC,+BAED,OAAOtB,EAAMyB,WACf,CACF,I,gBCjVJ,MAEA,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,qOFNzDo1C,EAAAA,EAAAA,IAgJU+gB,EAAAA,CA/IRthB,IAAI,UACJuhB,QAAQ,QACR,gBAAc,+BACb,gBAAe,mBACfgG,OAAMv3D,EAAAA,eACN8/B,QAAO9/B,EAAAA,iB,CAEGd,SAAO,SAChB,iBAgDM,EAhDNY,EAAAA,EAAAA,GAgDM,MAhDND,EAgDM,EA/CJC,EAAAA,EAAAA,GA8BO,OA9BPyvC,EA8BO,gBA1BL3vC,EAAAA,EAAAA,IAyBO8vC,EAAAA,GAAAA,MAAAA,EAAAA,EAAAA,IAxBW1vC,EAAAA,qBAAmB,SAA5ByvE,G,kBADT7vE,EAAAA,EAAAA,IAyBO,Q,WAvBJowC,IAAKhwC,EAAAA,YAAY,gBAAkByvE,EAAMx2E,IACzC0N,IAAK8oE,EAAMx2E,GACZ2F,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,kBAAiB,C,OACSh0C,EAAAA,kBAAoByvE,EAAMx2E,MAGzDmT,MAAOqjE,EAAMvxE,KACbmB,SAAK,4BAAUW,EAAAA,UAAUyvE,EAAMx2E,GAAE,iB,CAG1Bw2E,EAAM3nE,QAAK,WADnBlI,EAAAA,EAAAA,IAQO,OARP+vC,EAQO,EAJLO,EAAAA,EAAAA,IAGE8jE,EAAAA,CAFCvzD,IAAKgvB,EAAMvxE,KACXq6C,IAAKk3B,EAAM3nE,O,sCAGhByoC,EAAAA,EAAAA,IAIEG,EAAAA,C,MAFCzoC,KAAMwnE,EAAMxnE,KACb,kB,wCAKEjI,EAAAA,uBAAoB,WAD5BJ,EAAAA,EAAAA,IAeO,OAfPgwC,EAeO,EAXL9vC,EAAAA,EAAAA,GAUO,QATLlB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,yCAAwC,CAAAztC,OAC7BvG,EAAAA,mBAChBoM,MAAOpM,EAAAA,GAAG,kBACVX,QAAK,wCAAUW,EAAAA,gBAAAA,EAAAA,eAAAA,MAAAA,EAAAA,UAAc,kB,EAE9BkwC,EAAAA,EAAAA,IAGEQ,EAAAA,CAFAzoC,KAAK,cACL,oB,2BAMAjI,EAAAA,gBAAa,WADrBJ,EAAAA,EAAAA,IAoFM,MApFNkwC,EAoFM,EAhFJhwC,EAAAA,EAAAA,GAsEM,OArEJlB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,gBAAe,CAAAze,OACJv1B,EAAAA,oB,EAEjBF,EAAAA,EAAAA,GASM,MATNiwC,EASM,WARJjwC,EAAAA,EAAAA,GAOC,SANCkwC,IAAI,S,qDACKhwC,EAAAA,QAAO,IAChBhB,KAAK,OACLJ,MAAM,eACLixC,YAAa7vC,EAAAA,GAAG,sBAChBmoD,QAAK,+BAAEmlD,EAAOrtG,OAAOg0G,WAAY,CAAH,I,kBAJtBj0G,EAAAA,cAObkwC,EAAAA,EAAAA,IAkDkBgkE,EAAAA,CAjDhBlkE,IAAI,eACJpxC,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,eACEh0C,EAAAA,sBACP,gBAAeA,EAAAA,YACfsoD,MAAOtoD,EAAAA,WACP,eAAa,EACbm0G,SAAQn0G,EAAAA,SACRo0G,UAASp0G,EAAAA,sBACT+jE,SAAQ/jE,EAAAA,uB,CAEEb,SAAOk1G,EAAAA,EAAAA,KAChB,gBAD0B5kC,EAAK,EAqCT/sE,KArCWC,EAAK,EAALA,MAAO4D,EAAM,EAANA,OAAM,QAC9C2pC,EAAAA,EAAAA,IAoCsBokE,EAAAA,CAnCnBtkE,IAAKhwC,EAAAA,YAAY,SAAWyvE,EAAMx2E,IAClCyJ,KAAM+sE,EACNlpE,OAAQA,EACR,aAAY5D,EACZ,oBAAiB,CAAG8sE,EAAMx1E,OAAOU,S,mBAElC,iBA4BM,EA5BNmF,EAAAA,EAAAA,GA4BM,MA5BNmwC,EA4BM,CAxBIw/B,EAAMskC,aAAU,WADxBn0G,EAAAA,EAAAA,IAKK,KALLwwC,GAKK,QADAq/B,EAAMvxE,MAAI,mCAEf0B,EAAAA,EAAAA,IAkBO8vC,EAAAA,GAAAA,MAAAA,EAAAA,EAAAA,IAjBW+/B,EAAMx1E,QAAM,SAArBP,G,kBADTkG,EAAAA,EAAAA,IAkBO,QAhBJ+G,IAAK8oE,EAAMx2E,GAAKS,EAAMyB,YACtBiR,MAAOpM,EAAAA,wBAAwBtG,GAChCkF,MAAM,aACLS,SAAK,4BAAeW,EAAAA,QAAQtG,EAAK,wB,CAGzBA,EAAMuB,WAEM,WACrBs1C,EAAAA,EAAAA,IAMEyjE,EAAAA,C,MAJAp1G,MAAM,6BACNyZ,QAAQ,OACPkgC,IAAK7+C,EAAMuB,SACX,kBAAiBw0E,EAAMx2E,GAAKS,EAAMyB,a,qCARd,WADvByE,EAAAA,EAAAA,IAG+B,OAH/B0wC,GAG+B,QAA3B52C,EAAMqD,aAAW,K,mKAa/B+C,EAAAA,EAAAA,GAIM,MAJNupE,EAIM,EAHJn5B,EAAAA,EAAAA,IAEWkY,EAAAA,C,WAFQpoD,EAAAA,S,qDAAAA,EAAAA,SAAQ,K,mBACzB,iBAA2B,mBAAxBA,EAAAA,GAAG,oBAAD,G,iCAKHA,EAAAA,kBAAe,WADvBJ,EAAAA,EAAAA,IAQM,MARN4wC,EAQM,EAJJN,EAAAA,EAAAA,IAGEqkE,EAAAA,CAFCC,WAAUx0G,EAAAA,kBACVy0G,eAAez0G,EAAAA,uB,wIGxH5B,SApB2B,CACzBnB,MAAO,CACL61G,SAAU,CACR11G,KAAMC,OACN01G,QAAS,cAGbp7G,KAAI,WACF,MAAO,CACLq7G,YAAa,GAEjB,EACAx1G,QAAS,CACPy1G,SAAQ,SAAE32G,GAAM,WACdoB,KAAKs1G,YAAc12G,EACnBjC,YAAW,WAAQ,EAAK24G,YAAc,EAAG,GAAG,IAC9C,ICTJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,wCCJzDh1G,EAAAA,EAAAA,IAKM,OAJJhB,MAAM,gCACL,YAAWoB,EAAAA,W,QAETA,EAAAA,aAAW,K,SC0QH,G,uuBAlQfi5B,GAAAA,GAAAA,IACEw1E,GAAAA,KA0iBF,SArhBmB,CACjB3vC,MAAO,CAAC,oBAAqB,SAC7BjgE,MAAO,CACLi2G,QAAS,CAsBP/1G,UAAU,EACVC,KAAMkH,UAER6uG,WAAY,CAIVh2G,UAAU,EACVC,KAAMC,QAER+1G,kBAAmB,CAIjBj2G,UAAU,EACVC,KAAMyB,QACNtB,SAAS,GAEX81G,gBAAiB,CAKfl2G,UAAU,EACVC,KAAMyB,QACNtB,SAAS,GAEXswG,oBAAqB,CAInB1wG,UAAU,EACVC,KAAMyB,QACNtB,SAAS,GAEXshE,UAAW,CAKT1hE,UAAU,EACVC,KAAMC,OACNE,QAAS,QAEX+1G,mBAAoB,CAClBn2G,UAAU,EACVC,KAAMyB,QACNtB,SAAS,IAGb5F,KAAI,WACF,MAAO,CACL47G,WAAY,UAAGr6G,KAAKs6G,UAAW73G,QAAQ,IAAK,KAC5CzD,WAAO+J,EACPwxG,aAASxxG,EACTgrB,aAAc,EACdymF,MAAO,EACP9sD,SAAS,EACT+sD,YAAa,KACbC,4BAA4B,EAC5BC,qBAAqB,EACrB/5G,YAAa,GACbg6G,aAAc,CAAC,EACfC,aAAa,EAEjB,EACAx1G,WAAY,CACV0wD,QAAAA,GAAAA,QACA+kD,YAAAA,GACAC,uBAAAA,GAAAA,EACAC,mBAAAA,IAEFtvG,SAAU,CACRm5E,SAAQ,WACN,OAAOrgF,KAAKyvC,OAAOj7B,QAAQ/G,aAAa4yE,QAC1C,EACAo2B,QAAO,WACL,OAAOz2G,KAAKy1G,WAAWt4G,MAAM,EAAG6C,KAAKg2G,MACvC,EACAU,SAAQ,WACN,OAAO12G,KAAKy1G,WAAWt4G,MAAM6C,KAAKg2G,MACpC,EACAW,gBAAe,WACb,OAAO32G,KAAKkpD,SACVlpD,KAAK5D,aACL4D,KAAK5D,YAAYf,OAAS,IACzB2E,KAAKq2G,cACLr2G,KAAKk2G,0BACV,EACAU,YAAW,WAAI,MACb,OAAuB,QAAvB,EAAO52G,KAAK62G,mBAAW,aAAhB,EAAkBpI,IAC3B,EACAoI,YAAW,WACT,GAAI72G,KAAKy1G,YAAcz1G,KAAKg2G,MAE1B,OADac,EAA0B92G,KAAKy1G,WAAYz1G,KAAKg2G,MAAQ,IAAM,CAAC,CAGhF,EACA/sG,UAAS,WACP,OAAOG,EAAAA,GAAAA,qBAAoBpJ,KAAKyvC,OAAOj7B,QAAQ/G,aAAam+C,kBAC9D,EACAmrD,oCAAmC,WAAI,WACrC,OAAO,SAAA38G,GACL,IAAMY,EAAQ,CAACZ,EAAMyB,aACfX,EAAW,GAcjB,OAZId,EAAMiU,iBACRrT,EAAMqE,KAAK,EAAK24D,GAAG59D,EAAMiU,gBAAgBhH,IAAKjN,EAAMiU,gBAAgBC,OAGlElU,EAAMqU,aACR,EAAKxF,UAAU+L,SAAQ,SAAA/K,GAAQ,QAC7BjP,EAAMqE,KAA4B,QAAxB,EAACjF,EAAMqU,YAAYxE,UAAK,aAAvB,EAAyBvO,MAEpCR,EAASmE,KAAI,MAAbnE,GAAQ,QAAiC,QAAvB,EAAAd,EAAMqU,YAAYxE,UAAK,aAAvB,EAAyB/O,WAAY,IACzD,IAGK,CACLF,MAAOA,EAAMD,QAAO,SAAAO,GAAC,OAAIA,CAAC,IAC1BJ,SAAUA,EAASH,QAAO,SAAAO,GAAC,OAAIA,CAAC,IAEpC,CACF,EACAk4G,wBAAuB,WAAI,WACzB,OAAO,SAAAp5G,GACL,IAAKA,EAAMqU,YACT,OAAOrU,EAAMyB,YAGf,GAAIzB,EAAMiU,gBACR,OAAO,EAAK2pD,GAAG59D,EAAMiU,gBAAgBhH,IAAKjN,EAAMiU,gBAAgBC,MACjE,IAEgC,EAFhC,E,65BAAA,CAEkB,EAAKrF,WAAS,IAAjC,IAAK,EAAL,qBAAmC,OAAxBgB,EAAI,QACb,GAA2B,QAA3B,EAAI7P,EAAMqU,YAAYxE,UAAK,OAAvB,EAAyBvO,KAC3B,OAAOtB,EAAMqU,YAAYxE,GAAMvO,IAEnC,CAAC,+BAED,OAAOtB,EAAMyB,WACf,CACF,EACAm7G,cAAa,WACXh3G,KAAKkI,MAAM+uG,cAAcnxD,SAAS,CAChCmU,IAAKj6D,KAAKxF,MAAM4N,UAChBq4D,KAAMzgE,KAAKxF,MAAMi4G,YAErB,EACAyE,iBAAgB,WACd,MAAO,eAAP,OAAsBl3G,KAAK61G,WAC7B,EACAsB,iBAAgB,WAAI,WAClB,OAAO,SAAC9zG,GAAK,gCAAwBA,EAAK,YAAI,EAAKwyG,WAAU,CAC/D,GAEF/8D,QAAO,WACL,MAAuD94C,KAAKkI,MAApDm6B,EAAI,EAAJA,KAAM+0E,EAAkB,EAAlBA,mBAAoBC,EAAgB,EAAhBA,iBAC5B78G,EAAQ6nC,EAAKkX,cAAc,yBAA2BlX,EAAKkX,cAAc,2BAC/E,GAAK/+C,EAAL,CACAwF,KAAKxF,MAAQA,EACbwF,KAAK+1G,QAAUqB,EACXC,EAAiBlG,aACnBkG,EAAiBlG,YAAYnxG,KAAK+1G,SAClC/1G,KAAKkI,MAAMovG,OAAOnG,YAAYnxG,KAAK+1G,UAEnC//F,QAAQC,KAAK,iDAEf,IAAM8sC,EAAQo1B,iBAAiBn4E,KAAKxF,OACpCwF,KAAKo2G,aAAamB,QAAUx0D,EAAMw0D,QAClCv3G,KAAKo2G,aAAapa,OAASj5C,EAAMi5C,OACjCh8F,KAAKo2G,aAAa/uD,OAAStE,EAAMsE,OACjCrnD,KAAKo2G,aAAaoB,WAAaz0D,EAAMy0D,WACrCx3G,KAAKo2G,aAAaqB,WAAa10D,EAAM00D,WACrCz3G,KAAKo2G,aAAasB,SAAW30D,EAAM20D,SACnC13G,KAAKo2G,aAAauB,SAAW50D,EAAM40D,SACnC33G,KAAKo2G,aAAawB,WAAa70D,EAAM60D,WACrC53G,KAAKwoD,SACLhuD,EAAM89B,iBAAiB,OAAQt4B,KAAK63G,QACpCr9G,EAAM89B,iBAAiB,QAASt4B,KAAK83G,SACrCt9G,EAAM89B,iBAAiB,QAASt4B,KAAK+3G,SACrCv9G,EAAM89B,iBAAiB,QAASt4B,KAAKg4G,SACrCx9G,EAAM89B,iBAAiB,UAAWt4B,KAAKi4G,WACvCz9G,EAAM89B,iBAAiB,QAASt4B,KAAKk4G,cACrC19G,EAAM89B,iBAAiB,gBAAiBt4B,KAAKm4G,cAC7C39G,EAAM89B,iBAAiB,QAASt4B,KAAK6oD,SACrCruD,EAAM89B,iBAAiB,SAAUt4B,KAAKg3G,cA3BpB,CA4BpB,EACAv2D,UAAS,WACP,IAAQjmD,EAAUwF,KAAVxF,MACJA,IACFA,EAAMkmD,oBAAoB,OAAQ1gD,KAAK63G,QACvCr9G,EAAMkmD,oBAAoB,QAAS1gD,KAAK83G,SACxCt9G,EAAMkmD,oBAAoB,QAAS1gD,KAAK+3G,SACxCv9G,EAAMkmD,oBAAoB,QAAS1gD,KAAKg4G,SACxCx9G,EAAMkmD,oBAAoB,UAAW1gD,KAAKi4G,WAC1Cz9G,EAAMkmD,oBAAoB,QAAS1gD,KAAKk4G,cACxC19G,EAAMkmD,oBAAoB,gBAAiB1gD,KAAKm4G,cAChD39G,EAAMkmD,oBAAoB,QAAS1gD,KAAK6oD,SACxCruD,EAAMkmD,oBAAoB,SAAU1gD,KAAKg3G,eAE7C,EACAp+D,MAAO,CACL+9D,gBAAiB,SAAUhrF,EAAUD,GACnC1rB,KAAK+E,MAAM,QAAS4mB,GAChBA,EACF3rB,KAAKkI,MAAMmvG,iBAAiBtG,cAE5B/wG,KAAKkI,MAAMmvG,iBAAiBnG,aAEhC,EACA0F,aAAW,qBAAE,WAAgBwB,GAAO,iFAClB7zG,IAAZ6zG,EAAqB,iDACU,GAA7BC,EAAYD,EAAQ5gB,OAAO,GAC7B4gB,IAAYC,EAAS,gBACF,OAArBr4G,KAAK5D,YAAc,GAAE,0CAGU4D,KAAKw1G,QAAQ4C,EAASp4G,KAAK+2G,qCAAoC,OAAxE,GAAlBuB,EAAqB,EAAH,OAEpBt4G,KAAK42G,cAAgBwB,GAAWE,EAAmBj9G,QAAU,GAAC,iBAC3C,OAArB2E,KAAK5D,YAAc,GAAE,2BAGvB4D,KAAK5D,YAAc,IAAKk8G,EAAoB,GACzCv/G,KAAI,gBAAG4C,EAAQ,EAARA,SAAiB,+BAChB,IACP08C,IAAK18C,GAAY,IAAE,IAEvBqE,KAAKuvB,aAAe,EACpBvvB,KAAKkI,MAAMqwG,mBAAmBhD,SAC5Bv1G,KAAKw4G,IAAI,kCACPx4G,KAAK5D,YAAYf,OACjB,CAAEo9G,OAAQz4G,KAAK5D,YAAYf,UAAU,iDAC1C,+CAEHyE,QAAS,CACP44G,kBAAiB,WAAI,WACnB14G,KAAK05C,WAAU,WACb,EAAKxxC,MAAMovG,OAAOxG,aAClB,EAAK6H,gBACP,IAIA34G,KAAKm2G,qBAAsB,EAC3Bx5G,YAAW,WACT,EAAKw5G,qBAAsB,CAC7B,GAAG,EACL,EACAyC,aAAY,WACV54G,KAAKxF,MAAMu1C,QACN/vC,KAAKq2G,YAKRr2G,KAAKkI,MAAMovG,OAAOrG,cAJlBjxG,KAAK24G,iBACL34G,KAAKkI,MAAMovG,OAAOxG,aAClB9wG,KAAKkI,MAAMovG,OAAOuB,iBAItB,EACA56G,QAAO,SAAER,GACP,IAAMkuB,EAAWmrF,EAAuB92G,KAAKy1G,WAAYz1G,KAAK62G,YAAap5G,GAC3EuC,KAAK+E,MAAM,oBAAqB4mB,GAChC3rB,KAAKg2G,MAAQ,CACf,EACA8C,OAAM,YAAoD,IAAhDpH,EAAS,EAATA,UAAWnB,EAAQ,EAARA,SAAQ,IAAEwI,iBAAAA,OAAgB,IAAG,GAAI,EAC9CC,EAASh5G,KAAKy1G,WAAWz3G,UAAU,EAAGgC,KAAKg2G,QAAU,GACrDiD,EAAQj5G,KAAKy1G,WAAWz3G,UAAUgC,KAAKg2G,QAAU,GAgBjDkD,EAAe,KACfC,EAAeJ,IAAqBG,EAAar7G,KAAKm7G,EAAO77G,OAAO,KAAO67G,EAAO39G,QAAU2E,KAAKqgF,SAAW,EAAK,IAAM,GACvH+4B,EAAcL,IAAqBG,EAAar7G,KAAKo7G,EAAM,KAAOj5G,KAAKqgF,SAAY,IAAM,GAEzF10D,EAAW,CACfqtF,EACAG,EACAzH,EACA0H,EACAH,GACA/zG,KAAK,IACPlF,KAAK+E,MAAM,oBAAqB4mB,GAChC,IAAMqtE,EAAWh5F,KAAKg2G,OAAStE,EAAY0H,EAAaD,GAAa99G,OAChEk1G,GACHvwG,KAAKxF,MAAMu1C,QAGb/vC,KAAK05C,WAAU,WAGb15C,KAAKxF,MAAMw1C,kBAAkBgpD,EAAUA,GACvCh5F,KAAKg2G,MAAQhd,CACf,GACF,EACAqgB,YAAW,SAAE9/G,EAAG+/G,GACd,IAAMC,EAAMv5G,KAAK5D,YAAYf,QAAU,EACvC,GAAgC,IAA5B2E,KAAK42G,YAAYv7G,SACjBk+G,EAAM,GAAKD,GAAY,CACzB,IACM77G,GADmB67G,GAAct5G,KAAK5D,YAAY4D,KAAKuvB,cACxB9xB,YAC/BkuB,EAAWmrF,EAAuB92G,KAAKy1G,WAAYz1G,KAAK62G,YAAap5G,GAC3EuC,KAAK+E,MAAM,oBAAqB4mB,GAChC3rB,KAAKuvB,YAAc,EACnB,IAAMypE,EAAWh5F,KAAK62G,YAAY/oG,MAAQrQ,EAAYpC,OAEtD2E,KAAK05C,WAAU,WAEb15C,KAAKxF,MAAMu1C,QAEX/vC,KAAKxF,MAAMw1C,kBAAkBgpD,EAAUA,GACvCh5F,KAAKg2G,MAAQhd,CACf,IACAz/F,EAAEuO,gBACJ,CACF,EACA0xG,cAAa,SAAEjgH,GACb,IAAMggH,EAAMv5G,KAAK5D,YAAYf,QAAU,EAEvC2E,KAAKuvB,aAAe,GACM,IAAtBvvB,KAAKuvB,YACPvvB,KAAKxF,MAAMu1C,QACF/vC,KAAKuvB,aAAe,IAC7BvvB,KAAKuvB,YAAcgqF,EAAM,GAEvBA,EAAM,GACRhgH,EAAEuO,gBAEN,EACA2xG,aAAY,SAAElgH,GACZ,IAAMggH,EAAMv5G,KAAK5D,YAAYf,QAAU,EAEvC2E,KAAKuvB,aAAe,EAChBvvB,KAAKuvB,aAAegqF,IACtBv5G,KAAKuvB,aAAe,EACpBvvB,KAAKxF,MAAMu1C,SAETwpE,EAAM,GACRhgH,EAAEuO,gBAEN,EACA6wG,eAAc,WAAI,WACVe,EAAU15G,KAAKkI,MAAMovG,OAAOh+D,IAK5BqgE,EAAc35G,KAAKs5C,IAAIsgE,QAAQ,sBAC/B55G,KAAKs5C,IAAIsgE,QAAQ,0BACjBx5G,OACAoyG,EAAgBmH,IAAgBv5G,OAClCu5G,EAAYr1D,QACZq1D,EAAYvxG,UAKVyxG,EAAuBrH,GAJNmH,IAAgBv5G,OACnCu5G,EAAY9wF,YACZ8wF,EAAYngE,cAKVsgE,EAAmBJ,EAAQlgE,cAAeg/C,EAAAA,GAAAA,GAAWkhB,EAASC,GAAa1/C,IAI3E8/C,EAAevH,EAFDh3G,KAAKC,IAAI,EAAGq+G,EAAmBD,GAI/CF,IAAgBv5G,OAClBu5G,EAAYK,OAAO,EAAGD,GAEtBJ,EAAYvxG,UAAY2xG,EAG1B/5G,KAAK05C,WAAU,WACb,IAAQF,EAAiB,EAAKh/C,MAAtBg/C,aACA89D,EAAW,EAAKpvG,MAAhBovG,OACaA,EAAOh+D,IAAIqhB,wBAAwBs/C,OACrC75G,OAAOyoB,cACxByuF,EAAOh+D,IAAIyJ,MAAMkX,IAAM,OACvBq9C,EAAOh+D,IAAIyJ,MAAMk3D,OAASzgE,EAAe,KAE7C,GACF,EACA0gE,cAAa,WACXl6G,KAAKq2G,aAAc,CACrB,EACA8D,eAAc,WACZn6G,KAAKq2G,aAAc,CACrB,EACAwB,OAAM,SAAEt+G,GAAG,WAGTyG,KAAKi2G,YAAct5G,YAAW,WAC5B,EAAKusD,SAAU,EACf,EAAKkxD,SAAS7gH,EAChB,GAAG,IACL,EACAwG,QAAO,SAAExG,EAAG+/G,GACVt5G,KAAKq5G,YAAY9/G,EAAG+/G,EACtB,EACAxB,QAAO,SAAEv+G,GACHyG,KAAKi2G,cACPp5G,aAAamD,KAAKi2G,aAClBj2G,KAAKi2G,YAAc,MAGrBj2G,KAAKkpD,SAAU,EACflpD,KAAKo6G,SAAS7gH,GACdyG,KAAKk2G,4BAA6B,CACpC,EACA8B,QAAO,SAAEz+G,GACP,IAAQ8N,EAAQ9N,EAAR8N,IACRrH,KAAKo6G,SAAS7gH,GAKZyG,KAAKk2G,2BADK,WAAR7uG,CAKN,EACA0wG,QAAO,SAAEx+G,GACPyG,KAAKo6G,SAAS7gH,EAChB,EACA0+G,UAAS,SAAE1+G,GAAG,WACJ8gH,EAA2B9gH,EAA3B8gH,QAASC,EAAkB/gH,EAAlB+gH,SAAUjzG,EAAQ9N,EAAR8N,IACvBrH,KAAK41G,oBAAsByE,GAAmB,UAARhzG,IACxCrH,KAAK84G,OAAO,CAAEpH,UAAW,KAAMqH,kBAAkB,IAEjDx/G,EAAEs+D,kBACFt+D,EAAEuO,iBAGF9H,KAAK05C,WAAU,WACb,EAAKl/C,MAAMgvE,OACX,EAAKhvE,MAAMu1C,OACb,KAGG/vC,KAAKk2G,6BACI,QAAR7uG,IACEizG,EACFt6G,KAAKw5G,cAAcjgH,GAEnByG,KAAKy5G,aAAalgH,IAGV,YAAR8N,EACFrH,KAAKw5G,cAAcjgH,GACF,cAAR8N,GACTrH,KAAKy5G,aAAalgH,GAER,UAAR8N,IACGgzG,GACHr6G,KAAKq5G,YAAY9/G,KAQX,WAAR8N,IACGrH,KAAKk2G,4BACRl2G,KAAKxF,MAAMu1C,QAGjB,EACA8Y,QAAO,SAAEtvD,GACPyG,KAAKo6G,SAAS7gH,GACdyG,KAAK+E,MAAM,oBAAqBxL,EAAEoH,OAAOiL,MAC3C,EACA2lG,kBAAiB,SAAEh4G,GACjByG,KAAK+E,MAAM,mBAAoBxL,EACjC,EACAi4G,sBAAqB,SAAEj4G,GACrByG,KAAK+E,MAAM,wBAAyBxL,EACtC,EACA6gH,SAAQ,YAAkC,WAApBG,EAAc,EAAxB55G,OAAU45G,eACpBv6G,KAAKg2G,MAAQuE,EACbv6G,KAAK05C,WAAU,WACb,EAAKxxC,MAAMmvG,iBAAiBmD,cAC9B,GACF,EACAhyD,OAAM,WACN,EACAiyD,sBAAqB,SAAEnB,GACrB,OAAIA,EAAWr8G,KACNq8G,EAAWz9G,YAAc,IAAMy9G,EAAW/7G,WAE1CyC,KAAKwzG,wBAAwB8F,EAExC,IC3iBJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,yLTNzDh5G,EAAAA,EAAAA,IAyGM,OAxGJowC,IAAI,OACJpxC,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,cAAa,gBACOh0C,EAAAA,oB,EAE1BgzC,EAAAA,EAAAA,IAMEhzC,EAAAA,OAAAA,UAAAA,CALC/G,GAAE,WAAe+G,EAAAA,WACjBg6G,SAAWh6G,EAAAA,iBACZi6G,iBAAkB,OACjBC,aAAel6G,EAAAA,gBACfm6G,qBAAyBn6G,EAAAA,kBAAoC,IAAjBA,EAAAA,YAA2BA,EAAAA,iBAAiBA,EAAAA,aAAjC,MAG1DF,EAAAA,EAAAA,GAYM,OAXJkwC,IAAI,gBACJpxC,MAAM,iBACLyjD,OAAK,QAAEriD,EAAAA,cACP,eAAa,G,EAEdF,EAAAA,EAAAA,GAA0B,qBAAjBE,EAAAA,SAAO,IAChBF,EAAAA,EAAAA,GAGS,OAHTD,EAGC,IAAC,MACFC,EAAAA,EAAAA,GAA2B,qBAAlBE,EAAAA,UAAQ,QAEnBkwC,EAAAA,EAAAA,IAGEkqE,EAAAA,CAFApqE,IAAI,qBACJ,YAAU,a,UAEIhwC,EAAAA,oBAAiB,WAAjCJ,EAAAA,EAAAA,IAqBW8vC,EAAAA,GAAAA,CAAA/oC,IAAAA,GAAA,CAnBA3G,EAAAA,iBAM6B,iBANd,WADxBJ,EAAAA,EAAAA,IAQS,U,MANPhB,MAAM,oCACNI,KAAK,SACJoN,MAAOpM,EAAAA,GAAG,mBACVX,QAAK,wCAAUW,EAAAA,cAAAA,EAAAA,aAAAA,MAAAA,EAAAA,UAAY,kB,EAE5BkwC,EAAAA,EAAAA,IAAwCQ,EAAAA,CAA/BzoC,KAAM,CAAC,MAAO,iBAAa,MAG9BjI,EAAAA,oBAAiB,WADzBuwC,EAAAA,EAAAA,IAUE8pE,EAAAA,C,MARArqE,IAAI,SACH,wBAAuBhwC,EAAAA,oBACxBpB,MAAM,qBACLmyG,QAAO/wG,EAAAA,OACP6wG,kBAAkB7wG,EAAAA,kBAClB8wG,sBAAuB9wG,EAAAA,sBACvBu3D,OAAMv3D,EAAAA,cACN8/B,QAAO9/B,EAAAA,gB,mJAGZkwC,EAAAA,EAAAA,IAoDUohB,EAAAA,CAnDRthB,IAAI,mBACJpxC,MAAM,qBACN6hE,UAAU,SACT,gBAAe,oB,CAELvhE,SAAO,SAChB,iBA2CM,EA3CNY,EAAAA,EAAAA,GA2CM,OA1CH7G,GAAI+G,EAAAA,iBACLgwC,IAAI,aACJpxC,MAAM,0BACN0jD,KAAK,W,gBAEL1iD,EAAAA,EAAAA,IAoCM8vC,EAAAA,GAAAA,MAAAA,EAAAA,EAAAA,IAnC0B1vC,EAAAA,aAAW,SAAjC44G,EAAYj2G,G,kBADtB/C,EAAAA,EAAAA,IAoCM,OAlCH3G,GAAI+G,EAAAA,iBAAiB2C,GACrBgE,IAAKhE,EACN/D,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,oBAAmB,CAAAnlB,YAEFlsB,IAAU3C,EAAAA,eADjCsiD,KAAK,SAEJ,aAAYtiD,EAAAA,sBAAsB44G,GAClC,gBAAej2G,IAAU3C,EAAAA,YACzBX,SAAK,4BAAeW,EAAAA,QAAQstG,EAAQsL,EAAU,wB,EAE/C94G,EAAAA,EAAAA,GAMO,OANP8vC,EAMO,CAJGgpE,EAAWjhE,MAAG,WADtB/3C,EAAAA,EAAAA,IAGC,O,MADE24C,IAAKqgE,EAAWjhE,K,wBAEnB/3C,EAAAA,EAAAA,IAAgD,kBAAhCg5G,EAAW77G,aAAW,OAExC+C,EAAAA,EAAAA,GAiBM,MAjBNiwC,EAiBM,CAfI6oE,EAAWr8G,OAAI,WADvBqD,EAAAA,EAAAA,IAQO,OARPoxC,EAQO,mBAJF4nE,EAAWz9G,aAAW,IAAG+0C,EAAAA,EAAAA,IAG1BoqE,EAAAA,CAFC/9G,KAAMq8G,EAAWr8G,KACjBg+G,IAAI,G,oCAIA3B,EAAWr8G,MAGmB,iBAHf,WADxBqD,EAAAA,EAAAA,IAKO,OALPqwC,GAKO,QADFjwC,EAAAA,wBAAwB44G,IAAU,KAEvC94G,EAAAA,EAAAA,GAA2D,OAA3DswC,GAA2D,QAA/BwoE,EAAW/7G,YAAU,W,yFUnGzD29G,E,wBCAC57G,MAAM,S,SAcLA,MAAM,S,SAMNA,MAAM,S,SAMNA,MAAM,SDYd,SAtCM47G,EAAiB,KAiCd,CAAEC,UA/BS,WAAH,OAAS,IAAI/hH,SAAQ,SAACC,EAASqD,GAC5C,GAAIw+G,EACF7hH,EAAQ6hH,OADV,CAMA96G,OAAOg7G,aAAe,CAAC,EACvBh7G,OAAOg7G,aAAa3jG,OAAS,CAC3B4jG,WAAW,EACXC,WAAY,kBAMd,IAAMC,EAAS1uG,SAAS6oF,cAAc,UAGtC6lB,EAAOtiE,IAAM,2BACbsiE,EAAO77G,KAAO,kBACd67G,EAAOC,QAAU,SAACjiH,GAAQmD,EAAOnD,EAAG,EACpCgiH,EAAOE,QAAU,SAACliH,GAAQmD,EAAOnD,EAAG,EACpCgiH,EAAOG,SAAW,SAACniH,GAAQmD,EAAOnD,EAAG,EACrCgiH,EAAOrO,OAAS,WACdgO,EAAiB96G,OAAOg7G,aACxB/hH,EAAQ6hH,EACV,EACAruG,SAAS8b,KAAKkxE,YAAY0hB,EAxB1B,CAyBF,GAAE,I,yBEzBJ5hF,EAAAA,GAAAA,IACEoxE,EAAAA,IACA4Q,EAAAA,KA2CF,QAxCc,CACZp8G,MAAO,CAAC,OACRtF,KAAI,WACF,MAAO,CACL2hH,QAAQ,EACRtuE,QAAQ,EACR4tE,eAAgB,KAEpB,EACAp7G,QAAS,CACP+7G,WAAU,WAAI,WACR77G,KAAK47G,SACT57G,KAAK47G,OAAS,SACdE,EAAAA,YAA0BxiH,MAAK,SAACyiH,GAC9B,IAAMH,EAASG,EAAOC,SAASC,eAC/BL,EAAOnkG,OAAS,CACdykG,UAAW,MAEK,EAAKh0G,MAAMi0G,UACnBtiB,YAAY+hB,GACtBA,EAAO74D,MAAMx1C,MAAQ,OACrBquG,EAAO74D,MAAM/gC,OAAS,OACtB45F,EAAOj1C,KAAK,EAAK1tB,KAAK3/C,MAAK,WACzB,EAAKsiH,QAAS,CAChB,IAAE,OAAO,SAACriH,GACRyc,QAAQzK,MAAM,uBAAwBhS,GACtC,EAAKqiH,OAAS,OAChB,IACA,EAAKV,eAAiBU,EACtB,EAAK72G,MAAM,eACb,IACF,EACAgoG,YAAW,WACT/sG,KAAKk7G,gBAAkBl7G,KAAKk7G,eAAeziC,SAC3Cz4E,KAAK47G,QAAS,EACd57G,KAAK+E,MAAM,eACb,ICvCJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,iEFNzDzE,EAAAA,EAAAA,IAqCM,MArCNC,EAqCM,EAnCe,IAAXG,EAAAA,QAA8B,WAAXA,EAAAA,SAAM,WADjCJ,EAAAA,EAAAA,IAKE,O,MAHAowC,IAAI,YACJpxC,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,SAAQ,CAAAze,OACe,WAAXv1B,EAAAA,W,0BAGD,IAAXA,EAAAA,SAAM,WADdJ,EAAAA,EAAAA,IA6BS,U,MA3BPhB,MAAM,8BACLS,QAAK,8BAAEW,EAAAA,YAAAA,EAAAA,WAAAA,MAAAA,EAAAA,UAAU,I,CAGC,WAAXA,EAAAA,SAAM,WADdJ,EAAAA,EAAAA,IAKO,OALP2vC,GAKO,QADFvvC,EAAAA,GAAG,oBAAD,oBAGY,UAAXA,EAAAA,SAAM,WADdJ,EAAAA,EAAAA,IAKO,OALP4vC,GAKO,QADFxvC,EAAAA,GAAG,uBAAD,iBAEPJ,EAAAA,EAAAA,IAWO,OAXP+vC,EAWO,EAPL7vC,EAAAA,EAAAA,GAEI,kBADCE,EAAAA,GAAG,0BAAD,IAEPF,EAAAA,EAAAA,GAGI,WAFFowC,EAAAA,EAAAA,IAAsCQ,EAAAA,CAA9BzoC,KAAK,0BAAsB,QAAG,KACtC,QAAGjI,EAAAA,GAAG,2BAAD,4B,2IGlCT07G,EAAoB,SAApBA,EAAqBC,EAAShkG,EAAQ/d,GAAK,OAAK,IAAIlB,SAAQ,SAACC,EAASqD,GAC1EC,YAAW,WACTrC,EAAM6B,MAAMimB,IAAIC,kBAAkB8N,sBAAsB,CAAEx2B,GAAI0e,IAC3D/e,MAAK,SAACuyB,GAEL,OADAvxB,EAAM0S,OAAO,yBAA0B,CAAC6e,IACjCA,CACT,IACCvyB,MAAK,SAACuyB,GAAY,OAAKxyB,EAAQ,CAACwyB,EAAatH,UAAWsH,EAAaywF,UAAWzwF,EAAa4J,OAAQ4mF,GAAS,IAAC,OACzG,SAAC9iH,GAAC,OAAKmD,EAAOnD,EAAE,GAC3B,GAAG,IACL,IAAGD,MAAK,YAAwC,mBAAtCirB,EAAS,KAAEg4F,EAAI,KAAE9mF,EAAM,KAAE4mF,EAAO,KACnC93F,GAAekR,GAAU8mF,KAASF,GAAW,IAGhDD,IAAoBC,EAAShkG,EAAQ/d,EAEzC,GAAE,EAEWkiH,EAAgB,SAACnkG,EAAQ/d,GAAK,OAAK,IAAIlB,SAAQ,SAACC,EAASqD,GACpEpC,EAAM6B,MAAMimB,IAAIC,kBAAkB0O,WAAW,CAAEp3B,GAAI0e,IAChD/e,MAAK,SAACs/E,GAGL,GAFAt+E,EAAM0S,OAAO,yBAA0B,CAAC4rE,MAEpCA,EAAQr0D,WAAcq0D,EAAQnjD,QAAUmjD,EAAQ0jC,WAapD,OAAOF,EAAkB,EAAGxjC,EAASt+E,GAClChB,MAAK,WACJD,GACF,IAdAA,GAeJ,GACJ,GAAE,ECvCF,SACEkG,MAAO,CAAC,eAAgB,OAAQ,iBAAkB,eAClDsB,WAAY,CACVikD,aAAAA,EAAAA,GAEF7qD,KAAI,WACF,MAAO,CACL/B,YAAY,EACZukH,wBAAwB,EAE5B,EACAv1G,SAAU,CACRw1G,sBAAqB,WACnB,OAAO18G,KAAKyvC,OAAOj7B,QAAQ/G,aAAagD,eAC1C,EACAksG,UAAS,WACP,OAAO38G,KAAK9H,YAAc8H,KAAK6rB,aAAatH,SAC9C,EACAzX,MAAK,WACH,OAAI9M,KAAK9H,YAAc8H,KAAK6rB,aAAatH,UAChCvkB,KAAKg4D,GAAG,6BACNh4D,KAAK6rB,aAAaywF,UACpBt8G,KAAKg4D,GAAG,2BAERh4D,KAAKg4D,GAAG,mBAEnB,EACAtvD,MAAK,WACH,OAAI1I,KAAK9H,WACA8H,KAAKg4D,GAAG,6BACNh4D,KAAK6rB,aAAatH,UACpBvkB,KAAK48G,gBAAkB58G,KAAKg4D,GAAG,uBAC7Bh4D,KAAK6rB,aAAaywF,UACpBt8G,KAAKg4D,GAAG,yBAERh4D,KAAKg4D,GAAG,mBAEnB,EACAvvD,SAAQ,WACN,OAAOzI,KAAK9H,YAAc8H,KAAK/C,KAAKgwB,WACtC,GAEFntB,QAAS,CACP+8G,oBAAmB,WACjB78G,KAAKy8G,wBAAyB,CAChC,EACAK,oBAAmB,WACjB98G,KAAKy8G,wBAAyB,CAChC,EACA18G,QAAO,WACLC,KAAK6rB,aAAatH,WAAavkB,KAAK6rB,aAAaywF,UAAYt8G,KAAK+8G,WAAa/8G,KAAK0d,QACtF,EACAA,OAAM,WAAI,WACR1d,KAAK9H,YAAa,EAClBskH,EAAcx8G,KAAK6rB,aAAalyB,GAAIqG,KAAKyvC,QAAQn2C,MAAK,WACpD,EAAKpB,YAAa,CACpB,GACF,EACA6kH,SAAQ,WACF/8G,KAAK08G,sBACP18G,KAAK68G,sBAEL78G,KAAKg9G,YAET,EACAA,WAAU,WAAI,WACN1iH,EAAQ0F,KAAKyvC,OACnBzvC,KAAK9H,YAAa,ED1BO,SAACmgB,EAAQ/d,GAAK,OAAK,IAAIlB,SAAQ,SAACC,EAASqD,GACtEpC,EAAM6B,MAAMimB,IAAIC,kBAAkBinE,aAAa,CAAE3vF,GAAI0e,IAClD/e,MAAK,SAACs/E,GACLt+E,EAAM0S,OAAO,yBAA0B,CAAC4rE,IACxCv/E,EAAQ,CACNu/E,QAAAA,GAEJ,GACJ,GAAE,CCmBIqkC,CAAgBj9G,KAAK6rB,aAAalyB,GAAIW,GAAOhB,MAAK,WAChD,EAAKpB,YAAa,EAClBoC,EAAM0S,OAAO,eAAgB,CAAEsO,SAAU,UAAWjD,OAAQ,EAAKwT,aAAalyB,IAChF,IAEAqG,KAAK88G,qBACP,ICrEJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,6FCJzDx8G,EAAAA,EAAAA,IA6BS,UA5BPhB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,mCAAkC,CAAAqwB,QACrBrkE,EAAAA,aAClB+H,SAAU/H,EAAAA,SACVoM,MAAOpM,EAAAA,MACPX,QAAK,8BAAEW,EAAAA,SAAAA,EAAAA,QAAAA,MAAAA,EAAAA,UAAO,I,mBAEZA,EAAAA,OAAQ,IACX,wBAoBW6lD,EAAAA,GAAAA,CApBDjpB,GAAG,UAAQ,CAEX58B,EAAAA,yBAAsB,WAD9BuwC,EAAAA,EAAAA,IAkBgBuV,EAAAA,C,MAhBb15C,MAAOpM,EAAAA,GAAG,oCACV,eAAcA,EAAAA,GAAG,4CACjB,cAAaA,EAAAA,GAAG,4CAChB+lD,WAAU/lD,EAAAA,WACVgmD,YAAWhmD,EAAAA,qB,mBAEZ,iBASS,EATTkwC,EAAAA,EAAAA,IASS8X,EAAAA,CARPC,QAAQ,6BACRhrD,IAAI,Q,CAEOV,MAAI,SACb,iBAEE,EAFFuD,EAAAA,EAAAA,GAEE,Q,aADAwkE,EAAAA,EAAAA,IAA4BtkE,EAAAA,KAAfpD,iB,4MClBlBgC,MAAM,gB,SAoCTA,MAAM,oB,GAEDA,MAAM,yB,GAGNA,MAAM,4B,SAGPA,MAAM,2B,SAWNA,MAAM,2B,SAWNA,MAAM,2B,mDC8ChB,QAnHgB,CACdC,MAAO,CACL,cACA,UACA,YACA,eACA,QACA,OACA,WACA,OACA,WACA,mBACA,oBACA,oBACA,iBACA,QAEFtF,KAAI,WACF,MAAO,CACL06D,MAAO,CAAC,EACRuoD,YAAY,EAEhB,EACAr8G,WAAY,CAAE4+D,W,SAAAA,GACdv4D,SAAU,CACR0yC,KAAI,WAAI,WACN,IAAK55C,KAAKya,YACR,MAAO,GAET,IAAMA,EAAcza,KAAKqkB,MAAQ,EAC7BrkB,KAAKya,YAAYtd,MAAM,EAAG6C,KAAKqkB,OAC/BrkB,KAAKya,YACT,MAAkB,SAAdza,KAAK2xC,KACAl3B,EAAY1hB,KAAI,SAAAqK,GAAI,MAAK,CAAE+5G,SAAS,EAAMn0D,MAAO,CAAC5lD,GAAO,IAErDpD,KAAKo9G,KACd,CAAC,CAAEA,MAAM,EAAMp0D,MAAOvuC,IACtBA,EAAY9L,QAAO,SAACC,EAAK0nB,EAAYt3B,GACrC,GAAIs3B,EAAWuM,SAAS/lC,SAAS,SAC/B,MAAO,GAAP,eAAW8R,GAAG,CAAE,CAAEyuG,OAAO,EAAMr0D,MAAO,CAAC1yB,IAAe,CAAE0yB,MAAO,MAEjE,KACE1yB,EAAWuM,SAAS/lC,SAAS,UAC3Bw5B,EAAWuM,SAAS/lC,SAAS,UAC7Bw5B,EAAWuM,SAAS/lC,SAAS,UAE/B,MAAO,GAAP,eAAW8R,GAAG,CAAE,CAAEuuG,SAAS,EAAMn0D,MAAO,CAAC1yB,IAAe,CAAE0yB,MAAO,MAEnE,IACMs0D,EAAuB,EAAK7iG,YAAYpf,OAAS2D,EAAI,EACrDu+G,EAAa3uG,EAAIA,EAAIvT,OAAS,GAAG2tD,MAEvC,OADAu0D,EAAWl+G,KAAKi3B,GACZinF,EAAWliH,QAJG,GAIoBiiH,EAJpB,EAKT,GAAP,eAAW1uG,GAAG,CAAE,CAAEo6C,MAAO,MAElBp6C,CAEX,GAAG,CAAC,CAAEo6C,MAAO,MAAOjuD,QAAO,SAAA0L,GAAC,OAAIA,EAAEuiD,MAAM3tD,OAAS,CAAC,GAEtD,EACAmiH,4BAA2B,WACzB,OAAOx9G,KAAK45C,KAAKjrC,QAAO,SAACC,EAAK6uG,GAC5B,IAAI9rE,EAAO,EAQX,OAPI8rE,EAAIN,QACNxrE,GAAQ,EAAI,EACH8rE,EAAIJ,MACb1rE,GAAQ,EAAI,EAEZA,GAAQ,GAAK8rE,EAAIz0D,MAAM3tD,OAAS,IAE3BuT,EAAM+iC,CACf,GAAG,EACL,EACA+rE,mBAAkB,WAChB,OAAI19G,KAAK29G,UAA0B,UAAd39G,KAAK2xC,OAED,SAAd3xC,KAAK2xC,KACP3xC,KAAKya,YAAYpf,OAAS,EAE1B2E,KAAKw9G,4BAA8B,EAE9C,GAEF19G,QAAS,CACP89G,kBAAiB,YAAyB,IAArBjkH,EAAE,EAAFA,GAAI4T,EAAK,EAALA,MAAOyU,EAAM,EAANA,OAC9B,IAAIhiB,KAAK20D,MAAOh7D,EAAI,CAAE4T,MAAAA,EAAOyU,OAAAA,GAC/B,EACA67F,SAAQ,SAAEJ,GACR,OAAIA,EAAIJ,MACC,CAAE,iBAAkB,OACjBI,EAAIN,SAAYM,EAAIL,UAAzB,EACE,CAAE,iBAAkB,GAAF,OAAM,KAAOK,EAAIz0D,MAAM3tD,OAAS,IAAI,KAEjE,EACAyiH,UAAS,SAAEnkH,EAAI8jH,GAAK,WACZj8D,EAAQ,IAAMi8D,GAAK,SAAAr6G,GAAI,OAAI,EAAK26G,eAAe36G,EAAKzJ,GAAG,IAC7D,MAAO,CAAEqkH,KAAM,GAAF,OAAKh+G,KAAK+9G,eAAepkH,GAAM6nD,EAAK,SACnD,EACAu8D,eAAc,SAAEpkH,GACd,IAAMg4C,EAAO3xC,KAAK20D,MAAMh7D,GACxB,OAAOg4C,EAAOA,EAAKpkC,MAAQokC,EAAK3vB,OAAS,CAC3C,EACAi8F,iBAAgB,SAAEn5G,GAChB9E,KAAKk9G,WAAap4G,CACpB,EACAo5G,YAAW,WACTl+G,KAAKyvC,OAAOvzC,SAAS,WAAY8D,KAAKya,aACtCza,KAAKyvC,OAAOvzC,SAAS,kBAAmB8D,KAAKya,YAAY,GAC3D,EACA0jG,QAAO,WACLn+G,KAAKyvC,OAAOvzC,SAAS,WAAY8D,KAAKya,YACxC,ICzGJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,qEFNzDna,EAAAA,EAAAA,IAkFM,OAjFJowC,IAAI,mBACJpxC,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,UAAS,SACIh0C,EAAAA,oBAAsBA,EAAAA,e,EAEzCF,EAAAA,EAAAA,GAiCM,MAjCND,EAiCM,gBAhCJD,EAAAA,EAAAA,IA+BM8vC,EAAAA,GAAAA,MAAAA,EAAAA,EAAAA,IA9BsB1vC,EAAAA,MAAI,SAAtB+8G,EAAKW,G,kBADf99G,EAAAA,EAAAA,IA+BM,OA7BH+G,IAAK+2G,EACN9+G,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,cAAa,UAEC+oE,EAAIJ,MAAK,WAAcI,EAAIN,QAAO,QAAWz8G,EAAAA,QADhEqiD,OAAK,QAAEriD,EAAAA,SAAS+8G,K,EAGjBj9G,EAAAA,EAAAA,GAuBM,OAtBJlB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,oBAAmB,SACNh0C,EAAAA,S,gBAEnBJ,EAAAA,EAAAA,IAkBE8vC,EAAAA,GAAAA,MAAAA,EAAAA,EAAAA,IAjBwCqtE,EAAIz0D,OAAK,SAAzC1yB,EAAY+nF,G,kBADtBptE,EAAAA,EAAAA,IAkBEqtE,EAAAA,CAhBCj3G,IAAKivB,EAAW38B,GACjB2F,MAAM,eACLw/D,QAASp+D,EAAAA,QACTsf,KAAMtf,EAAAA,KACN41B,WAAYA,EACZqb,KAAMjxC,EAAAA,KACNi9G,SAAUj9G,EAAAA,SACV+3E,OAAQ/3E,EAAAA,iBACR,aAAgC,IAApB29G,GAAsC,IAAbD,IAAmB19G,EAAAA,kBACxD,aAAY29G,IAAoBZ,EAAIz0D,MAAM3tD,OAAS,GAAK+iH,IAAa19G,EAAAA,KAAKrF,OAAS,IAAMqF,EAAAA,kBACzFgc,KAAMhc,EAAAA,eACN0+C,YAAa1+C,EAAAA,cAAgBA,EAAAA,aAAa41B,EAAW38B,IACrD,mBAA2B,UAAT+G,EAAAA,MAAoBA,EAAAA,oBAAsBA,EAAAA,WAC5DqiD,OAAK,QAAEriD,EAAAA,UAAU41B,EAAW38B,GAAI8jH,EAAIz0D,QACpCu1D,WAAU79G,EAAAA,QACVk9G,kBAAiBl9G,EAAAA,mB,sMAMlBA,EAAAA,qBAAkB,WAD1BJ,EAAAA,EAAAA,IA0CM,MA1CN2vC,EA0CM,EAtCJzvC,EAAAA,EAAAA,GAEM,MAFN0vC,GAEM,QADDxvC,EAAAA,GAAG,0BAA2B,CAA5B+3G,OAAsC/3G,EAAAA,YAAYrF,UAAM,IAE/DmF,EAAAA,EAAAA,GAkCM,MAlCN6vC,EAkCM,CAhCK3vC,EAAAA,YAOA,iBAPU,WADnBJ,EAAAA,EAAAA,IAUO,OAVPgwC,EAUO,EANL9vC,EAAAA,EAAAA,GAKS,UAJPlB,MAAM,wBACLS,QAAK,+BAAEW,EAAAA,kBAAiB,EAAD,K,QAErBA,EAAAA,GAAG,gCAAD,MAIDA,EAAAA,aAAU,WADlBJ,EAAAA,EAAAA,IAUO,OAVPmxC,EAUO,EANLjxC,EAAAA,EAAAA,GAKS,UAJPlB,MAAM,wBACLS,QAAK,+BAAEW,EAAAA,kBAAiB,EAAD,K,QAErBA,EAAAA,GAAG,gCAAD,sBAIDA,EAAAA,aAAU,WADlBJ,EAAAA,EAAAA,IAUO,OAVPkwC,EAUO,EANLhwC,EAAAA,EAAAA,GAKS,UAJPlB,MAAM,wBACLS,QAAK,8BAAEW,EAAAA,aAAAA,EAAAA,YAAAA,MAAAA,EAAAA,UAAW,K,QAEhBA,EAAAA,GAAG,wBAAD,8C,gFG7EVpB,MAAM,+B,GAILA,MAAM,gB,gDA2Cd,SACEuB,WAAY,CAEV29G,O,SAAAA,GAEFj/G,MAAO,CACLk/G,WAAY,CACV/+G,KAAMC,OACNF,UAAU,GAEZmK,SAAU,CACRlK,KAAM,CAACrB,MAAOsB,QACdF,UAAU,GAEZiK,YAAa,CACXhK,KAAMkH,SACNnH,UAAU,IAGdyH,SAAU,CACR+B,UAAQ,WACN,OAAOi2D,EAAAA,EAAAA,SACT,EAEAw/C,mBAAoB,CAClBl1D,IAAK,WACH,OAAOnrD,MAAMoF,QAAQzD,KAAK4J,UAAY5J,KAAK4J,SAAW,CAAC5J,KAAK4J,SAC9D,EACAyb,IAAK,SAAUokC,GACbzpD,KAAK0J,YAAY+/C,EACnB,IAIJ3pD,QAAS,CACPu3F,gBAAc,SAAG59F,GACf,OAAOylE,EAAAA,EAAAA,gBAA8BzlE,EACvC,EACAklH,YAAU,WACR3+G,KAAK0+G,mBAAiB,kBAAQ1+G,KAAK0+G,oBAAkB,CAAE,IACzD,EACAE,cAAY,SAAGv7G,EAAOomD,GACpB,IAAMx/C,GAAG,OAAQjK,KAAK0+G,oBACtBz0G,EAAK5G,GAASomD,EACdzpD,KAAK0+G,mBAAqBz0G,CAC5B,EACA40G,iBAAe,SAAGx7G,GAChB,IAAM4G,GAAG,OAAQjK,KAAK0+G,oBACtBz0G,EAAKyQ,OAAOrX,EAAO,GACnBrD,KAAK0+G,mBAAqBz0G,CAC5B,ICzFJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,iEDNzD3J,EAAAA,EAAAA,IAwCM,MAxCNC,EAwCM,EAvCJC,EAAAA,EAAAA,GAEQ,sBADHgzC,EAAAA,YAAU,IAEfhzC,EAAAA,EAAAA,GAmCK,KAnCLyvC,EAmCK,gBAlCH3vC,EAAAA,EAAAA,IA2BK8vC,EAAAA,GAAAA,MAAAA,EAAAA,EAAAA,IA1BakvB,EAAAA,mBAAmBzlE,QAAI,SAAhCwJ,G,kBADT/C,EAAAA,EAAAA,IA2BK,MAzBF+G,IAAKhE,GAAK,EAEX7C,EAAAA,EAAAA,GAeQ,gCAdO,IAAV6C,EAAc3C,EAAAA,GAAG,6BAA+BA,EAAAA,IAAI,6BAA8B2C,EAAO,CAAEA,MAAAA,KAAW,IACzG,YAYSy7G,EAAAA,CAXPx/G,MAAM,kBACL,cAAaggE,EAAAA,mBAAmBj8D,GAChC,sBAAmB,SAAAomD,GAAG,OAAI6V,EAAAA,cAAcj8D,EAAOomD,EAAG,G,mBAGjD,iBAAyB,gBAD3BnpD,EAAAA,EAAAA,IAMS8vC,EAAAA,GAAAA,MAAAA,EAAAA,EAAAA,IALQkvB,EAAAA,WAAS,SAAjBr1D,G,kBADT3J,EAAAA,EAAAA,IAMS,UAJN+G,IAAK4C,EAAKxQ,KACVmS,MAAO3B,EAAKxQ,O,QAEVwQ,EAAKvO,MAAI,I,iEAKV4jE,EAAAA,mBAAmBjkE,OAAS,GAAe,IAAVgI,IAAK,WAD9C/C,EAAAA,EAAAA,IAMS,U,MAJPhB,MAAM,qBACLS,QAAK,kBAAQu/D,EAAAA,iBAAiBj8D,EAAK,I,QAEjC3C,EAAAA,GAAG,6BAAD,uB,WAGTF,EAAAA,EAAAA,GAKK,YAJHA,EAAAA,EAAAA,GAG2C,UAFzClB,MAAM,qBACLS,QAAK,8BAAEu/D,EAAAA,aAAAA,EAAAA,YAAAA,MAAAA,EAAAA,UAAW,K,QACjB5+D,EAAAA,GAAG,0BAAD,Q,iGE5BNpB,MAAM,c,aAIHA,MAAM,gB,GACHA,MAAM,mB,SAGRA,MAAM,4B,GAINA,MAAM,c,SAGRA,MAAM,oB,wOCoBhB,QA3CoB,CAClB5D,KAAM,cACN6D,MAAO,CACL,OACA,OACA,QAEFtF,KAAI,WACF,MAAO,CACL8kH,aAAa,EAEjB,EACA73G,S,qWAAU,CAAF,CACN83G,SAAQ,WAIN,OAAOh/G,KAAKk0F,KAAK1rF,QAAUxI,KAAKi/G,UAA0B,SAAdj/G,KAAK2xC,IACnD,EACAstE,SAAQ,WACN,OAAOj/G,KAAKggB,MAAQhgB,KAAKk/G,cAC3B,EACAC,eAAc,WACZ,OAAOn/G,KAAKk0F,KAAK90C,aAAe,KAAKggE,KAAKp/G,KAAKk0F,KAAK90C,YACtD,EACA8/D,eAAc,WACZ,OAAOl/G,KAAKyN,aAAa8yE,QAC3B,IACGpxC,E,OAAAA,IAAW,CACZ,kBAGJkH,QAAO,WAAI,WACT,GAAIr2C,KAAKg/G,SAAU,CACjB,IAAMK,EAAS,IAAIzpB,MACnBypB,EAAOnS,OAAS,WACd,EAAK6R,aAAc,CACrB,EACAM,EAAOpmE,IAAMj5C,KAAKk0F,KAAK1rF,KACzB,CACF,GCjCF,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,wCFNzDlI,EAAAA,EAAAA,IA4BM,aA3BJE,EAAAA,EAAAA,GA0BI,KAzBFlB,MAAM,oBACLmB,KAAMC,EAAAA,KAAKlB,IACZmB,OAAO,SACPgE,IAAI,Y,CAGIjE,EAAAA,UAAYA,EAAAA,cAAW,WAD/BJ,EAAAA,EAAAA,IAKM,MALN2vC,EAKM,EADJzvC,EAAAA,EAAAA,GAAuB,OAAjBy4C,IAAKv4C,EAAAA,KAAK8H,O,8BAElBhI,EAAAA,EAAAA,GAaM,MAbN6vC,EAaM,EAZJ7vC,EAAAA,EAAAA,GAMO,OANP8vC,EAMO,CAJG5vC,EAAAA,WAAQ,WADhBJ,EAAAA,EAAAA,IAG+B,OAH/BmxC,GAG+B,QAA3B/wC,EAAAA,GAAG,gBAAD,6BAAyB,KAC/B,QAAGA,EAAAA,KAAK4+G,eAAa,MAEvB9+G,EAAAA,EAAAA,GAA4C,KAA5CgwC,GAA4C,QAAlB9vC,EAAAA,KAAKoM,OAAK,GAE5BpM,EAAAA,iBAAc,WADtBJ,EAAAA,EAAAA,IAG2B,IAH3BmwC,GAG2B,QAAvB/vC,EAAAA,KAAK0+C,aAAW,6B,sEGzBrB9/C,MAAM,Q,SAaPA,MAAM,4BAQZ,SACEC,MAAO,CACLypD,MAAO,CACLtpD,KAAMrB,MACNwB,QAAS,iBAAM,EAAC,GAElB0/G,OAAQ,CACN7/G,KAAMkH,SACN/G,QAAS,SAAAuD,GAAG,OAAKA,EAAKzJ,EAAC,KCrB7B,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,wCDNzD2G,EAAAA,EAAAA,IAiBM,MAjBNC,EAiBM,gBAhBJD,EAAAA,EAAAA,IASM8vC,EAAAA,GAAAA,MAAAA,EAAAA,EAAAA,IARWoD,EAAAA,OAAK,SAAbpwC,G,kBADT9C,EAAAA,EAAAA,IASM,OAPH+G,IAAKmsC,EAAAA,OAAOpwC,GACb9D,MAAM,a,EAENo0C,EAAAA,EAAAA,IAGEhzC,EAAAA,OAAAA,OAAAA,CADC0C,KAAMA,K,UAIc,IAAjBowC,EAAAA,MAAMn4C,QAAkBqF,EAAAA,OAAO2lC,QAAK,WAD5C/lC,EAAAA,EAAAA,IAKM,MALN2vC,EAKM,EADJyD,EAAAA,EAAAA,IAAqBhzC,EAAAA,OAAAA,aAAAA,EAAAA,EAAAA,IAAAA,IAAAA,I,2FEdvBpB,MAAM,e,qCAiCEA,MAAM,a,mCAyBRoxC,IAAI,OACJpxC,MAAM,Q,gwBClDhBq6B,EAAAA,GAAAA,IACE6lF,EAAAA,KA6IF,QA1IoB,CAClB9jH,KAAM,cACNmF,WAAY,CACVk7D,WAAAA,EAAAA,QACAw6C,uBAAAA,EAAAA,EACAt6C,aAAatR,EAAAA,EAAAA,KAAqB,kBAAM,uCAA0C,KAEpFprD,MAAO,CACLC,IAAK,CACHC,UAAU,EACVC,KAAMC,QAERC,QAAS,CACPH,UAAU,EACVC,KAAMC,QAER0Y,OAAQ,CACN5Y,UAAU,EACVC,KAAMC,QAER8/G,eAAgB,CACdhgH,UAAU,EACVC,KAAMC,SAGV1F,KAAI,WACF,MAAO,CACLylH,cAAc,EAElB,EACA5/G,QAAS,CACPC,QAAO,WACL,IAAIC,KAAK2/G,kBAAT,CACA,IAAM1/G,GAAO04C,EAAAA,EAAAA,GACX34C,KAAKqY,QAAUrY,KAAK/C,KAAKtD,GACzBqG,KAAKy/G,gBAAkBz/G,KAAK/C,KAAKC,aAEnC8C,KAAKG,QAAQd,KAAKY,EALgB,CAMpC,EACA2/G,gBAAe,WACb5/G,KAAK0/G,aAAe7yG,SAASgzG,eAAeC,aAAa9/G,KAAKkI,MAAM63G,MAAM,EAC5E,GAEFjnE,QAAO,WACLjsC,SAASyrB,iBAAiB,kBAAmBt4B,KAAK4/G,gBACpD,EACAn/D,UAAS,WACP5zC,SAAS6zC,oBAAoB,kBAAmB1gD,KAAK4/G,gBACvD,EACA14G,SAAU,EAAF,GACNjK,KAAI,WACF,OAAO+C,KAAKR,KAAOQ,KAAKyvC,QAAUzvC,KAAKyvC,OAAOj7B,QAAQub,cAAc/vB,KAAKR,IAC3E,EACAy9D,MAAK,WAEH,OAAOj9D,KAAK/C,MAAQ+C,KAAK/C,KAAKtD,KAAOqG,KAAK2N,YAAYhU,EACxD,EACAyhC,SAAQ,WACN,OAAOp7B,KAAK/C,MAAQ+C,KAAKggH,eAAe7kC,MAAM,KAAK,EACrD,EACA8kC,WAAU,WAER,OAAOjgH,KAAK/C,OAAS+C,KAAKggH,eAAe7kC,MAAM,KAAK,IAAMn7E,KAAKyvC,OAAOj7B,QAAQa,eAChF,EACA6qG,aAAY,WACV,OAAOlgH,KAAK/C,MAAQ+C,KAAK/C,KAAKC,WAChC,EACA8iH,eAAc,WACZ,OAAOhgH,KAAK/C,MAAQ+C,KAAK/C,KAAKK,cAChC,EACAkyB,UAAS,WACP,OAAOxvB,KAAK/C,MAAQ+C,KAAKyN,aAAa+hB,UAAUxvB,KAAK/C,KAAKC,YAC5D,EACAijH,cAAa,WACX,OAAOngH,KAAKwvB,WAAc,IAAMxvB,KAAKwvB,UAAU9vB,IACjD,EACA8qG,eAAc,WACZ,GAAIxqG,KAAKwvB,UAAW,OAAOg7E,EAAAA,EAAAA,GAAexqG,KAAK/C,KACjD,EACA8lD,MAAK,WACH,GAAI/iD,KAAKwvB,UAAW,CAClB,OAKIw6E,EAAAA,EAAAA,GAAehqG,KAAKwvB,WACxB,OALiB,EAAf85E,gBACkB,EAAlBiB,mBACe,EAAfD,iBACO,WAGX,CACF,EACA8V,WAAU,WACR,MAAO,CACL,CACE,OAAQpgH,KAAKi9D,OAASj9D,KAAKqgH,gBAC3B,eAAgBrgH,KAAKwvB,UACrB,iBAAkBxvB,KAAK0/G,cAEzB1/G,KAAKmgH,cAET,EACA3wG,UAAS,WACP,OAAOxP,KAAKyN,aAAa+B,SAC3B,EACA8wG,SAAQ,WACN,OAAOtgH,KAAKo7B,WAAap7B,KAAKkgH,YAChC,EACAK,uBAAsB,WACpB,IAAMC,EAAOxgH,KAAKyN,aAAagC,mBAC/B,MAAa,UAAT+wG,IAEgB,SAATA,GAGFxgH,KAAKsgH,SAEhB,EACAX,kBAAiB,WACf,OAAO3/G,KAAKyN,aAAaiC,sBAC3B,EACA+wG,iBAAgB,WACd,OAAOzgH,KAAKyN,aAAakC,qBAC3B,EACA+wG,eAAc,WACZ,OAAO1gH,KAAKyN,aAAaoC,mBAC3B,EACAwwG,gBAAe,WACb,OAAOrgH,KAAKyN,aAAaqC,oBAC3B,EACA6wG,iBAAgB,WACd,OAAO3gH,KAAKyN,aAAamC,qBAC3B,IACGu/B,EAAAA,EAAAA,IAAW,CAAC,mBACZxnC,EAAAA,EAAAA,IAAS,CACVgG,YAAa,SAAAxR,GAAK,OAAIA,EAAMa,MAAM2Q,WAAW,MC3InD,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,yJFNzDrN,EAAAA,EAAAA,IAoEO,OApEPC,EAoEO,CA/DIG,EAAAA,O,WAMTuwC,EAAAA,EAAAA,IAwDcmrB,EAAAA,C,MAtDX,UAAS17D,EAAAA,KAAK/G,GACd8O,UAAW/H,EAAAA,mB,mBAEZ,iBAkDO,CAjDCA,EAAAA,OAAI,WADZJ,EAAAA,EAAAA,IAkDO,Q,MAhDLhB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,MAEEh0C,EAAAA,aADPqiD,OAAK,QAAEriD,EAAAA,Q,EAGRF,EAAAA,EAAAA,GAoCI,KAnCFlB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,wBAAuB,iBACFh0C,EAAAA,qBAC1BD,KAAMC,EAAAA,IACNX,QAAK,wCAAUW,EAAAA,SAAAA,EAAAA,QAAAA,MAAAA,EAAAA,UAAO,kB,CAIfA,EAAAA,mBAAgB,WADxBuwC,EAAAA,EAAAA,IAIEorB,EAAAA,C,MAFA/8D,MAAM,iBACLrC,KAAMyD,EAAAA,M,mCACPF,EAAAA,EAAAA,GAmBK,OAnBL6vC,EAmBK,CAhBC3vC,EAAAA,YAAS,WADhBuwC,EAAAA,EAAAA,IAKCG,EAAAA,C,MAHAO,KAAK,KACLhpC,KAAK,KACLrJ,MAAM,S,iCACFoB,EAAAA,UAAkB,GAAN,KAAH,IAAcF,EAAAA,EAAAA,GAG3B,QAFAlB,MAAM,WACNsB,UAAQF,EAAAA,U,UAEFA,EAAAA,yBAAsB,WAD5BJ,EAAAA,EAAAA,IAKA,Q,MAHAhB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,aAAY,UACEh0C,EAAAA,oBACpBE,UAAyB,IAAXF,EAAAA,Y,4BAERA,EAAAA,yBAAsB,WAD5BuwC,EAAAA,EAAAA,IAGA+pE,EAAAA,C,MADC/9G,KAAMyD,EAAAA,M,oCAIDA,EAAAA,OAASA,EAAAA,iBAAc,WAD/BJ,EAAAA,EAAAA,IAGqC,Q,MADlChB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAA,OAAYh0C,EAAAA,oB,YACTA,EAAAA,GAAG,eAAD,4BAEXF,EAAAA,EAAAA,GAOG,OAPHgwC,EAOG,UAHgC,OACpC,OAA0B,QAApB5vC,UAAQF,EAAAA,UAAQ,WAAIF,EAAAA,EAAAA,GAAkC,QAA5BI,UAAyB,IAAXF,EAAAA,Y,2EA1DxC,WADbJ,EAAAA,EAAAA,IAME,K,MAJCG,KAAMC,EAAAA,IACPpB,MAAM,WACNqB,OAAO,SACPC,UAAQF,EAAAA,S,oGGTNpB,MAAM,gB,SASRA,MAAM,iB,SAIJA,MAAM,qB,4PCXP,IAAM+E,EAAiB,EAiC9B,QA/BqB,CACnB3I,KAAM,eACN6D,MAAO,CACLwa,SAAU,CACRta,UAAU,EACVC,KAAMrB,QAGVpE,KAAM,iBAAO,CAAE04D,UAAU,EAAO,EAChC9xD,WAAY,CACV+/G,YAAAA,EAAAA,GAEF15G,S,qWAAU,CAAF,CACN25G,iBAAgB,WACd,OAAO7gH,KAAK+Z,SAAS5c,MAAM,EAAGkH,EAChC,EACAy8G,cAAa,WACX,OAAO9gH,KAAK+Z,SAAS5c,MAAMkH,EAC7B,EACA08G,aAAY,WACV,OAAO/gH,KAAK8gH,cAAczlH,OAAS,CACrC,IACG8zC,EAAAA,EAAAA,IAAW,CAAC,kBAEjBrvC,QAAS,CACPkhH,eAAc,WACZhhH,KAAK2yD,UAAY3yD,KAAK2yD,QACxB,ICvBJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,sEFNzDryD,EAAAA,EAAAA,IAmCO,OAnCPC,EAmCO,gBAlCLD,EAAAA,EAAAA,IAME8vC,EAAAA,GAAAA,MAAAA,EAAAA,EAAAA,IALkB1vC,EAAAA,kBAAgB,SAA3B6yB,G,kBADT0d,EAAAA,EAAAA,IAMEgwE,EAAAA,CAJC55G,IAAKksB,EAAQlwB,MACd/D,MAAM,eACLM,QAAS2zB,EAAQ3zB,QACjBJ,IAAK+zB,EAAQ/zB,K,mCAERkB,EAAAA,eAAY,WADlBJ,EAAAA,EAAAA,IA2BK,OA3BL2vC,EA2BK,CAtBGvvC,EAAAA,WAAQ,WADhBJ,EAAAA,EAAAA,IAUO,OAVP4vC,EAUO,mBAPH,QAAG,aAAG5vC,EAAAA,EAAAA,IAMR8vC,EAAAA,GAAAA,MAAAA,EAAAA,EAAAA,IALkB1vC,EAAAA,eAAa,SAAxB6yB,G,kBADC0d,EAAAA,EAAAA,IAMRgwE,EAAAA,CAJC55G,IAAKksB,EAAQlwB,MACd/D,MAAM,eACLM,QAAS2zB,EAAQ3zB,QACjBJ,IAAK+zB,EAAQ/zB,K,sDAGPkB,EAAAA,UAIiD,iBAJzC,WADVJ,EAAAA,EAAAA,IAME,U,MAJPhB,MAAM,+BACLS,QAAK,8BAAEW,EAAAA,gBAAAA,EAAAA,eAAAA,MAAAA,EAAAA,UAAc,K,QAEnBA,EAAAA,GAAG,mBAAoB,CAArB+3G,OAA+B/3G,EAAAA,cAAcrF,UAAM,IAElDqF,EAAAA,WAAQ,WADPJ,EAAAA,EAAAA,IAMA,U,MAJPhB,MAAM,+BACLS,QAAK,8BAAEW,EAAAA,gBAAAA,EAAAA,eAAAA,MAAAA,EAAAA,UAAc,K,QAEnBA,EAAAA,GAAG,sBAAD,wC,wFGpBb,SACEwgH,QAAS,CACPC,eAAgB,UAElB5hH,MAAO,CACLyoD,OAAQ,CACNtoD,KAAMyB,QACNtB,SAAS,GAEXuhH,aAAc,CACZ1hH,KAAMyB,QACNtB,SAAS,IAGbqH,SAAU,CACR0B,QAAM,WACJ,MAAO,CACL,oBAAqB5I,KAAKohH,aAC1B/gH,KAAML,KAAKgoD,OAEf,ICxBJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,qFDNzD1nD,EAAAA,EAAAA,IAQM,OALJhB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,aACE4qB,EAAAA,UACPv/D,QAAK,yCAAOW,EAAAA,MAAM,kBAAD,e,EAElBgzC,EAAAA,EAAAA,IAAQhzC,EAAAA,OAAAA,YAAAA,IAAAA,CAAAA,CAAAA,EAAAA,GANA8yC,EAAAA,QAAM,GACMA,EAAAA,SAAWA,EAAAA,e,+GEWzBl0C,MAAM,+C,GAEDA,MAAM,S,SAIPA,MAAM,yC,SAKRA,MAAM,oB,eA4BRA,MAAM,aACN0jD,KAAK,Q,GASHxiD,EAAAA,EAAAA,GAAoC,OAA/BlB,MAAM,wBAAsB,S,GAIhCA,MAAM,gB,SAGPA,MAAM,6C,GASDA,MAAM,uC,SAMXA,MAAM,uC,gDCxEZA,MAAM,iC,cA0CDA,MAAM,sB,GACHA,MAAM,wB,GACLA,MAAM,mB,qFAkEGA,MAAM,wB,6BAkBlBA,MAAM,W,qCA2BNA,MAAM,W,GAEAA,MAAM,S,qCAsBdA,MAAM,e,SAQJyjD,MAAA,0B,iCA0BFzjD,MAAM,a,yDCjOTA,MAAM,U,GACJA,MAAM,iB,IAMNA,MAAM,Y,IAMNA,MAAM,gB,4BA6BFA,MAAM,2B,IACHA,MAAM,wB,kCCXtB,SA5Be,CACbC,MAAO,CACL,YAEFsB,WAAY,CACV29G,OAAAA,GAAAA,EACA9+C,cAAAA,EAAAA,EACAlD,QAAAA,EAAAA,GAEFt1D,SAAU,CACRgX,OAAM,WACJ,OAAOle,KAAKyvC,OAAOtzC,MAAMknC,QAAQA,QAAQrjC,KAAKqhH,WAAa,CAAC,CAC9D,EACAllH,MAAO,CACLqtD,IAAK,WAAc,OAAOxpD,KAAKke,OAAO/hB,KAAM,EAC5CkpB,IAAK,SAAUokC,GAAOzpD,KAAK0jC,eAAe+lB,EAAK,IAGnD3pD,QAAS,CACPwhH,wBAAuB,SAAErkH,GACvB,OAAO07C,EAAAA,GAAAA,GAAoB17C,EAAKtD,GAAIsD,EAAKC,YAAa8C,KAAKyvC,OAAOtzC,MAAM4Q,SAASgG,oBACnF,EACA2wB,eAAc,SAAEvnC,GACd,OAAO6D,KAAKyvC,OAAOvzC,SAAS,iBAAkB,CAAEvC,GAAIqG,KAAKke,OAAOvkB,GAAIwC,MAAAA,GACtE,I,gBCtBJ,MAEA,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,wKFNzDmE,EAAAA,EAAAA,IAoEM,MApENC,EAoEM,EAnEJC,EAAAA,EAAAA,GAKM,MALNyvC,EAKM,EAJJzvC,EAAAA,EAAAA,GAA6C,qBAApCE,EAAAA,GAAG,yBAAD,IACXkwC,EAAAA,EAAAA,IAEcC,EAAAA,CAFAvT,GAAI58B,EAAAA,wBAAwBA,EAAAA,OAAO63C,O,mBAAO,iBACrD,UADqD,MACrD,QAAG73C,EAAAA,OAAO63C,KAAKr7C,aAAW,G,sBAG/BsD,EAAAA,EAAAA,GAKM,MALN0vC,GAKM,EAJJ1vC,EAAAA,EAAAA,GAAwC,qBAA/BE,EAAAA,GAAG,oBAAD,IACXkwC,EAAAA,EAAAA,IAEcC,EAAAA,CAFAvT,GAAI58B,EAAAA,wBAAwBA,EAAAA,OAAO8zF,Q,mBAAQ,iBACtD,UADsD,MACtD,QAAG9zF,EAAAA,OAAO8zF,MAAMt3F,aAAW,G,sBAGhCsD,EAAAA,EAAAA,GAeM,MAfN6vC,GAeM,EAdJ7vC,EAAAA,EAAAA,GAAqC,qBAA5BE,EAAAA,GAAG,iBAAD,IACXkwC,EAAAA,EAAAA,IAYSkuE,EAAAA,CAXNnlH,GAAI+G,EAAAA,OAAOA,EAAAA,M,WACHA,EAAAA,M,qDAAAA,EAAAA,MAAK,IACdpB,MAAM,gB,mBAGJ,iBAA+C,cADjDgB,EAAAA,EAAAA,IAMS8vC,EAAAA,GAAAA,MAAAA,EAAAA,EAAAA,IALS,CAAC,OAAQ,SAAU,aAAW,SAAvCj0C,G,OADTqE,EAAAA,EAAAA,GAMS,UAJN6G,IAAKlL,EACLyP,MAAOzP,I,QAELuE,EAAAA,GAAG,gBAAkBvE,IAAK,K,4CAInCy0C,EAAAA,EAAAA,IAIE0rB,EAAAA,CAHAh9D,MAAM,iBACL0B,KAAMN,EAAAA,OAAOd,QACbxF,MAAO,I,iBAECsG,EAAAA,OAAO4X,SAASjd,SAAM,WAAjCiF,EAAAA,EAAAA,IAkBM,WAjBJE,EAAAA,EAAAA,GAAmD,sBAAzCE,EAAAA,GAAG,6BAAD,kBACZJ,EAAAA,EAAAA,IAec8vC,EAAAA,GAAAA,MAAAA,EAAAA,EAAAA,IAdK1vC,EAAAA,OAAO4X,UAAQ,SAAzBsC,G,kBADTq2B,EAAAA,EAAAA,IAecJ,EAAAA,CAbXxpC,IAAKuT,EAAOjhB,GACZ2jC,GAAE,CAAA5hC,KAAAA,eAAAo5B,OAAAA,CAAAn7B,GAAwCihB,EAAOjhB,KAClD2F,MAAM,mB,mBAEN,iBAOM,EAPNkB,EAAAA,EAAAA,GAOM,MAPNgwC,GAOM,EANJhwC,EAAAA,EAAAA,GAAgE,OAAhEiwC,IAAgE,QAA1B71B,EAAO3d,KAAKvB,MAAI,IACtDk1C,EAAAA,EAAAA,IAIE6sB,EAAAA,CAHCC,KAAM9iD,EAAO8iB,WACb,cAAa,IACdp+B,MAAM,S,oBAGVsxC,EAAAA,EAAAA,IAAmC2wE,EAAAA,CAAlB3mG,OAAQA,GAAM,mB,kDAGxBla,EAAAA,OAAO8gH,MAAMnmH,SAAM,WAA9BiF,EAAAA,EAAAA,IAcM,WAbJE,EAAAA,EAAAA,GAAuC,sBAA7BE,EAAAA,GAAG,iBAAD,kBACZJ,EAAAA,EAAAA,IAWM8vC,EAAAA,GAAAA,MAAAA,EAAAA,EAAAA,IAVW1vC,EAAAA,OAAO8gH,OAAK,SAApBjxB,G,kBADTjwF,EAAAA,EAAAA,IAWM,OATH+G,IAAKkpF,EAAK52F,GACX2F,MAAM,Q,EAENkB,EAAAA,EAAAA,GAA+B,qBAAtB+vF,EAAK3wF,SAAO,IACrBgxC,EAAAA,EAAAA,IAIE6sB,EAAAA,CAHCC,KAAM6yB,EAAK7yD,WACX,cAAa,IACdp+B,MAAM,S,sXGrChBq6B,GAAAA,GAAAA,IACEw+B,GAAAA,IACAv+B,GAAAA,IACA6nF,GAAAA,IACAC,GAAAA,IACA7/D,GAAAA,IACAwtD,GAAAA,IACAsS,GAAAA,GACAC,GAAAA,IACAC,GAAAA,IACAC,GAAAA,KAGF,IAAMvsF,GAAe,CACnBt7B,KAAI,WACF,MAAO,CACL8nH,gBAAgB,EAChBxhD,aAAcvgE,KAAKyvC,OAAOtzC,MAAK,UAAWyO,eAAeC,UACzDm3G,SAAS,EACTpzC,6BAA6B,EAC7BC,0BAA0B,EAE9B,EACAtvE,MAAO,CAAC,gBACRsB,WAAY,CACV6+D,cAAAA,EAAAA,EACA3D,WAAAA,EAAAA,QACA1pB,SAAAA,EAAAA,EACAmqB,QAAAA,EAAAA,EACA9U,OAAAA,EAAAA,QACAu6D,OAAAA,GACAjmD,YAAAA,GAAAA,EACAC,YAAAA,GAAAA,QACArU,SAAAA,GAAAA,EACA9C,aAAAA,GAAAA,GAEFhlD,QAAS,CACPoiH,qBAAoB,WAClBliH,KAAK+hH,gBAAkB/hH,KAAK+hH,cAC9B,EACAT,wBAAuB,SAAErkH,GACvB,OAAO07C,EAAAA,GAAAA,GAAoB17C,EAAKtD,GAAIsD,EAAKC,YAAa8C,KAAKyvC,OAAOtzC,MAAM4Q,SAASgG,oBACnF,EACAovG,QAAO,SAAExmG,GACP,OAAO3b,KAAKyvC,OAAOtzC,MAAMa,MAAMyvB,YAAY9Q,EAAa0T,aAAa11B,GACvE,EACAyoH,WAAU,WACRpiH,KAAKgiH,SAAWhiH,KAAKgiH,OACvB,EACA/yC,yBAAwB,WACtBjvE,KAAK4uE,6BAA8B,CACrC,EACAM,yBAAwB,WACtBlvE,KAAK4uE,6BAA8B,CACrC,EACAO,sBAAqB,WACnBnvE,KAAK6uE,0BAA2B,CAClC,EACAO,sBAAqB,WACnBpvE,KAAK6uE,0BAA2B,CAClC,EACAQ,YAAW,WACLrvE,KAAKsvE,qBACPtvE,KAAKivE,2BAELjvE,KAAKuvE,WAET,EACAA,UAAS,WACPvvE,KAAKyvC,OAAOtzC,MAAMimB,IAAIC,kBAAkBgtD,YAAY,CAAE11E,GAAIqG,KAAK/C,KAAKtD,KACpEqG,KAAKyvC,OAAOvzC,SAAS,sBAAuB8D,KAAK/C,MACjD+C,KAAKyvC,OAAOvzC,SAAS,+BAAgC,CAAEvC,GAAIqG,KAAK2b,aAAahiB,KAC7EqG,KAAKyvC,OAAOvzC,SAAS,qBAAsB,CACzCvC,GAAIqG,KAAK2b,aAAahiB,GACtB8mB,QAAS,SAAA9E,GACPA,EAAajc,KAAO,QACtB,IAEFM,KAAKkvE,0BACP,EACAO,SAAQ,WACFzvE,KAAK0vE,kBACP1vE,KAAKmvE,wBAELnvE,KAAK2vE,QAET,EACAA,OAAM,WAAI,WACR3vE,KAAKyvC,OAAOtzC,MAAMimB,IAAIC,kBAAkBotD,SAAS,CAAE91E,GAAIqG,KAAK/C,KAAKtD,KAC9DL,MAAK,WACJ,EAAKm2C,OAAOvzC,SAAS,2BAA4B,CAAEvC,GAAI,EAAKgiB,aAAahiB,KACzE,EAAK81C,OAAOvzC,SAAS,sBAAuB,EAAKe,KACnD,IACF+C,KAAKovE,uBACP,GAEFloE,S,uWAAU,CAAF,CACNm7G,UAAS,WACP,OAAO7X,EAAAA,GAAAA,GAAexqG,KAAK2b,aAAa0T,aAC1C,EACAizF,UAAS,WACP,IAAM9yF,EAAYxvB,KAAKyvC,OAAOj7B,QAAQ/G,aAAa+hB,UAC7CvyB,EAAO+C,KAAK2b,aAAa0T,aAC/B,OAAO26E,EAAAA,GAAAA,GAAex6E,EAAUvyB,EAAKC,aACvC,EACAD,KAAI,WACF,OAAO+C,KAAKyvC,OAAOj7B,QAAQqb,SAAS7vB,KAAK2b,aAAa0T,aAAa11B,GACrE,EACA++C,gBAAe,WACb,OAAO14C,KAAKshH,wBAAwBthH,KAAK/C,KAC3C,EACAslH,WAAU,WACR,OAAOviH,KAAKyvC,OAAOj7B,QAAQqb,SAAS7vB,KAAK2b,aAAahb,OAAOhH,GAC/D,EACA6oH,sBAAqB,WACnB,OAAOxiH,KAAKshH,wBAAwBthH,KAAKuiH,WAC3C,EACAE,SAAQ,WACN,OAAOziH,KAAKyvC,OAAOj7B,QAAQqX,aAAa7rB,KAAK/C,KAAKtD,IAAIwyB,MACxD,EACAlO,qBAAoB,WAClB,OAAOA,EAAAA,GAAAA,IAAqBje,KAAK2b,aAAajc,KAChD,EACA+N,aAAY,WACV,OAAOzN,KAAKyvC,OAAOj7B,QAAQ/G,YAC7B,EACA6hE,qBAAoB,WAClB,OAAOtvE,KAAKyN,aAAaqD,oBAC3B,EACA4+D,kBAAiB,WACf,OAAO1vE,KAAKyN,aAAasD,iBAC3B,IACGpJ,EAAAA,EAAAA,IAAS,CACVgG,YAAa,SAAAxR,GAAK,OAAIA,EAAMa,MAAM2Q,WAAW,MAKnD,YC7JA,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,iULL3B,YAAtBjN,EAAAA,aAAahB,OAAI,WADzBY,EAAAA,EAAAA,IAQU,cALRswC,EAAAA,EAAAA,IAIEqY,EAAAA,CAHA3pD,MAAM,eACLw/D,SAAS,EACT3V,UAAWzoD,EAAAA,aAAaka,Q,sCAG7Bta,EAAAA,EAAAA,IAiQU,aA/PAI,EAAAA,WAAaA,EAAAA,UAAO,WAD5BJ,EAAAA,EAAAA,IAmBM,MAnBN4vC,EAmBM,EAfJ1vC,EAAAA,EAAAA,GAKQ,eAJNowC,EAAAA,EAAAA,IAGEk9D,EAAAA,CAFC7wG,KAAMyD,EAAAA,aAAa2uB,aACnB4rF,IAAI,G,oBAGTz6G,EAAAA,EAAAA,GAQS,UAPPlB,MAAM,yBACLS,QAAK,wCAAUW,EAAAA,YAAAA,EAAAA,WAAAA,MAAAA,EAAAA,UAAU,kB,EAE1BkwC,EAAAA,EAAAA,IAGEQ,EAAAA,CAFA9xC,MAAM,8BACNqJ,KAAK,qB,WAIXrI,EAAAA,EAAAA,IAqNM,O,MAnNJhB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,2BAA0B,CACvBh0C,EAAAA,UAAW,CAAF6uB,YAAiB7uB,EAAAA,WAAS,UAAgBA,EAAAA,aAAahB,QACxEqjD,OAAK,SAAIriD,EAAAA,a,EAEVF,EAAAA,EAAAA,GAiBI,KAhBFlB,MAAM,mBACLmB,KAAMC,EAAAA,QAAQrH,QAAQqH,EAAAA,iBAAiBD,KACvCV,QAAK,sBAAN,cAAc,e,EAEd6wC,EAAAA,EAAAA,IAWcwrB,EAAAA,CAVX,UAAS17D,EAAAA,aAAa2uB,aAAa11B,GACnC,mBAAiB,G,mBAElB,iBAME,EANFi3C,EAAAA,EAAAA,IAMEyrB,EAAAA,CALA/8D,MAAM,cACLuxF,IAAKnwF,EAAAA,aACLo+D,SAAS,EACT,gBAAep+D,EAAAA,aACfzD,KAAMyD,EAAAA,aAAa2uB,c,sEAI1B7uB,EAAAA,EAAAA,GA4LM,MA5LN8vC,EA4LM,EA3LJ9vC,EAAAA,EAAAA,GAqIO,OArIPixC,EAqIO,EApILjxC,EAAAA,EAAAA,GAiFM,MAjFNgwC,EAiFM,CA/ES9vC,EAAAA,aAAa2uB,aAAa8sC,YAAS,WAAhD77D,EAAAA,EAAAA,IAOM,UANJswC,EAAAA,EAAAA,IAKE0rB,EAAAA,CAJAh9D,MAAM,WACLwN,MAAK,IAAMpM,EAAAA,aAAa2uB,aAAa/xB,eACrC0D,KAAMN,EAAAA,aAAa2uB,aAAa8sC,UAChC/hE,MAAOsG,EAAAA,aAAa2uB,aAAaj1B,O,iDAItCkG,EAAAA,EAAAA,IAMO,Q,MAJLhB,MAAM,WACLwN,MAAK,IAAMpM,EAAAA,aAAa2uB,aAAa/xB,iB,QAEnCoD,EAAAA,aAAa2uB,aAAa3zB,MAAI,eAC5B,KACP,QAAG,KAAM,KACyB,SAAtBgF,EAAAA,aAAahB,OAAI,WAA7BY,EAAAA,EAAAA,IAOO,WANLswC,EAAAA,EAAAA,IAGEQ,EAAAA,CAFA9xC,MAAM,YACNqJ,KAAK,U,QACL,KACF,QAAG,KAAM,MACT,OAAsD,sBAA5CjI,EAAAA,GAAG,gCAAD,sBAEoB,WAAtBA,EAAAA,aAAahB,OAAI,WAA7BY,EAAAA,EAAAA,IAQO,WAPLswC,EAAAA,EAAAA,IAIEQ,EAAAA,CAHA9xC,MAAM,YACNqJ,KAAK,UACJmE,MAAOpM,EAAAA,GAAG,oB,2BACX,KACF,QAAG,KAAM,MACT,OAAqD,sBAA3CA,EAAAA,GAAG,+BAAD,sBAEoB,WAAtBA,EAAAA,aAAahB,OAAI,WAA7BY,EAAAA,EAAAA,IAOO,WANLswC,EAAAA,EAAAA,IAGEQ,EAAAA,CAFA9xC,MAAM,YACNqJ,KAAK,e,QACL,KACF,QAAG,KAAM,MACT,OAAqD,sBAA3CjI,EAAAA,GAAG,+BAAD,sBAEoB,mBAAtBA,EAAAA,aAAahB,OAAI,WAA7BY,EAAAA,EAAAA,IAOO,WANLswC,EAAAA,EAAAA,IAGEQ,EAAAA,CAFA9xC,MAAM,YACNqJ,KAAK,U,QACL,KACF,QAAG,KAAM,MACT,OAAuD,sBAA7CjI,EAAAA,GAAG,iCAAD,sBAEoB,SAAtBA,EAAAA,aAAahB,OAAI,WAA7BY,EAAAA,EAAAA,IAOO,WANLswC,EAAAA,EAAAA,IAGEQ,EAAAA,CAFA9xC,MAAM,YACNqJ,KAAK,sB,QACL,KACF,QAAG,KAAM,MACT,OAAoD,sBAA1CjI,EAAAA,GAAG,8BAAD,sBAEoB,2BAAtBA,EAAAA,aAAahB,OAAI,WAA7BY,EAAAA,EAAAA,IASO,WARLE,EAAAA,EAAAA,GAOQ,eANNowC,EAAAA,EAAAA,IAKS8X,EAAAA,CAJPt+B,MAAM,SACNu+B,QAAQ,8B,mBAER,iBAAkE,EAAlEnoD,EAAAA,EAAAA,GAAkE,OAAlE2wC,GAAkE,QAA5BzwC,EAAAA,aAAatG,OAAK,G,+BAI5B,mBAAtBsG,EAAAA,aAAahB,OAAI,WAA7BY,EAAAA,EAAAA,IAEO,WADLE,EAAAA,EAAAA,GAAyD,sBAA/CE,EAAAA,GAAG,mCAAD,sBAEoB,SAAtBA,EAAAA,aAAahB,OAAI,WAA7BY,EAAAA,EAAAA,IAOO,WANLswC,EAAAA,EAAAA,IAGEQ,EAAAA,CAFA9xC,MAAM,YACNqJ,KAAK,Y,QACL,KACF,QAAG,KAAM,MACT,OAAmD,sBAAzCjI,EAAAA,GAAG,6BAAD,wBAIRA,EAAAA,uBAAoB,WAD5BJ,EAAAA,EAAAA,IA0BM,MA1BN4sE,EA0BM,CArBIxsE,EAAAA,aAAaka,SAAM,WAD3Bq2B,EAAAA,EAAAA,IAScJ,EAAAA,C,MAPXvT,GAAE,CAAA5hC,KAAAA,eAAAo5B,OAAAA,CAAAn7B,GAAwC+G,EAAAA,aAAaka,OAAOjhB,KAC/D2F,MAAM,2B,mBAEN,iBAGE,EAHFsxC,EAAAA,EAAAA,IAGE6sB,EAAAA,CAFCC,KAAMh9D,EAAAA,aAAag9B,WACnB,cAAa,K,sDAGlBl9B,EAAAA,EAAAA,GAWS,UAVPlB,MAAM,8BACLS,QAAK,wCAAUW,EAAAA,sBAAAA,EAAAA,qBAAAA,MAAAA,EAAAA,UAAoB,iBACnCoM,MAAOpM,EAAAA,GAAG,0BACV,gBAAeA,EAAAA,gB,EAEhBkwC,EAAAA,EAAAA,IAIEQ,EAAAA,CAHA9xC,MAAM,eACN,iBACCqJ,KAAMjI,EAAAA,eAAiB,eAAiB,c,uCAI/CJ,EAAAA,EAAAA,IAUM,MAVN4pE,EAUM,EANJ1pE,EAAAA,EAAAA,GAKO,OALPkiH,EAKO,EAJL9xE,EAAAA,EAAAA,IAGE6sB,EAAAA,CAFCC,KAAMh9D,EAAAA,aAAag9B,WACnB,cAAa,K,sBAKZh9B,EAAAA,WAAQ,WADhBJ,EAAAA,EAAAA,IAWS,U,MATPhB,MAAM,kBACLwN,MAAOpM,EAAAA,GAAG,wBACV,iBAAgBA,EAAAA,QAChBX,QAAK,wCAAUW,EAAAA,YAAAA,EAAAA,WAAAA,MAAAA,EAAAA,UAAU,kB,EAE1BkwC,EAAAA,EAAAA,IAGEQ,EAAAA,CAFA9xC,MAAM,8BACNqJ,KAAK,e,wBAKmB,WAAtBjI,EAAAA,aAAahB,MAA2C,mBAAtBgB,EAAAA,aAAahB,OAAI,WAD3DY,EAAAA,EAAAA,IAiCM,MAjCNqiH,EAiCM,EA7BJ/xE,EAAAA,EAAAA,IAGEk9D,EAAAA,CAFAxuG,MAAM,cACLrC,KAAMyD,EAAAA,aAAa2uB,c,iBAGQ,mBAAtB3uB,EAAAA,aAAahB,OAAI,WADzBY,EAAAA,EAAAA,IAwBM,MAxBN6pE,EAwBM,EApBJ3pE,EAAAA,EAAAA,GASS,UARPlB,MAAM,kBACLwN,MAAOpM,EAAAA,GAAG,kCACVX,QAAK,+BAAEW,EAAAA,aAAW,I,EAEnBkwC,EAAAA,EAAAA,IAGEQ,EAAAA,CAFAzoC,KAAK,QACLrJ,MAAM,uD,MAGVkB,EAAAA,EAAAA,GASS,UARPlB,MAAM,kBACLwN,MAAOpM,EAAAA,GAAG,kCACVX,QAAK,+BAAEW,EAAAA,UAAQ,I,EAEhBkwC,EAAAA,EAAAA,IAGEQ,EAAAA,CAFAzoC,KAAK,QACLrJ,MAAM,uD,2BAMqB,SAAtBoB,EAAAA,aAAahB,OAAI,WAD9BY,EAAAA,EAAAA,IAOM,MAPNsiH,EAOM,EAHJhyE,EAAAA,EAAAA,IAEEk9D,EAAAA,CADC7wG,KAAMyD,EAAAA,aAAaC,Q,oBAIW,mBAAtBD,EAAAA,aAAahB,OAAI,WAD9BuxC,EAAAA,EAAAA,IAGE4xE,EAAAA,C,MADC,YAAWniH,EAAAA,aAAawd,OAAOvkB,I,oCAGhCs3C,EAAAA,EAAAA,IAIEmwB,EAAAA,C,MAHC9hE,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAA4qD,OAAY5+F,EAAAA,iBACjBo+D,SAAUp+D,EAAAA,eACVka,OAAQla,EAAAA,aAAa8c,Q,0DAK9ByzB,EAAAA,EAAAA,IAqBWsV,EAAAA,GAAAA,CArBDjpB,GAAG,UAAQ,CAEX58B,EAAAA,8BAA2B,WADnCuwC,EAAAA,EAAAA,IASgBuV,EAAAA,C,MAPb15C,MAAOpM,EAAAA,GAAG,mCACV,eAAcA,EAAAA,GAAG,2CACjB,cAAaA,EAAAA,GAAG,2CAChB+lD,WAAU/lD,EAAAA,UACVgmD,YAAWhmD,EAAAA,0B,mBAEZ,iBAAoE,mBAAjEA,EAAAA,GAAG,4BAA6B,CAA9BzD,KAAsCyD,EAAAA,KAAKpD,kBAAc,G,+FAGxDoD,EAAAA,2BAAwB,WADhCuwC,EAAAA,EAAAA,IASgBuV,EAAAA,C,MAPb15C,MAAOpM,EAAAA,GAAG,gCACV,eAAcA,EAAAA,GAAG,wCACjB,cAAaA,EAAAA,GAAG,wCAChB+lD,WAAU/lD,EAAAA,OACVgmD,YAAWhmD,EAAAA,uB,mBAEZ,iBAAiE,mBAA9DA,EAAAA,GAAG,yBAA0B,CAA3BzD,KAAmCyD,EAAAA,KAAKpD,kBAAc,G,iHMhQxDgC,MAAM,iB,IAmEHA,MAAM,yC,qlBAYpBq6B,GAAAA,GAAAA,IACEy3B,GAAAA,KAGF,UACEvwD,WAAY,CAAE0wD,QAAAA,GAAAA,SACdrqD,SAAU,CACR47G,QAAM,WACJ,OAAO9iH,KAAKyvC,OAAOj7B,QAAQ/G,aAAawkB,sBAC1C,GAEFnyB,QAAS,CACPijH,yBAAuB,SAAGrjH,GACxBM,KAAKyvC,OAAOvzC,SAAS,YAAa,CAChCR,KAAM,yBACNkQ,MAAO,SACF5L,KAAK8iH,SAAO,cACdpjH,GAAQM,KAAK8iH,QAAQpjH,MAG5B,ICpGJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,uFDJzDuxC,EAAAA,EAAAA,IA8EU+gB,EAAAA,CA7ERC,QAAQ,QACR3yD,MAAM,sBACN6hE,UAAU,SACT,WAAU,CAAAnoB,EAAAA,c,CAEAp5C,SAAO,SAChB,iBAgEM,EAhENY,EAAAA,EAAAA,GAgEM,MAhEND,GAgEM,EA/DJC,EAAAA,EAAAA,GAQS,UAPPlB,MAAM,+BACLS,QAAK,+BAAEu/D,EAAAA,yBAAyB,QAAD,I,EAEhC9+D,EAAAA,EAAAA,GAGE,QAFAlB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,gBAAe,yBACc4qB,EAAAA,QAAQhsC,U,0BACxC5yB,EAAAA,GAAG,2CAAD,MAETF,EAAAA,EAAAA,GAQS,UAPPlB,MAAM,+BACLS,QAAK,+BAAEu/D,EAAAA,yBAAyB,UAAD,I,EAEhC9+D,EAAAA,EAAAA,GAGE,QAFAlB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,gBAAe,yBACc4qB,EAAAA,QAAQ7rC,Y,0BACxC/yB,EAAAA,GAAG,6CAAD,MAETF,EAAAA,EAAAA,GAQS,UAPPlB,MAAM,+BACLS,QAAK,+BAAEu/D,EAAAA,yBAAyB,UAAD,I,EAEhC9+D,EAAAA,EAAAA,GAGE,QAFAlB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,gBAAe,yBACc4qB,EAAAA,QAAQlsC,Y,0BACxC1yB,EAAAA,GAAG,6CAAD,MAETF,EAAAA,EAAAA,GAQS,UAPPlB,MAAM,+BACLS,QAAK,+BAAEu/D,EAAAA,yBAAyB,WAAD,I,EAEhC9+D,EAAAA,EAAAA,GAGE,QAFAlB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,gBAAe,yBACc4qB,EAAAA,QAAQvlD,a,0BACxCrZ,EAAAA,GAAG,8CAAD,MAETF,EAAAA,EAAAA,GAQS,UAPPlB,MAAM,+BACLS,QAAK,+BAAEu/D,EAAAA,yBAAyB,iBAAD,I,EAEhC9+D,EAAAA,EAAAA,GAGE,QAFAlB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,gBAAe,yBACc4qB,EAAAA,QAAQp+C,mB,0BACxCxgB,EAAAA,GAAG,qDAAD,MAETF,EAAAA,EAAAA,GAQS,UAPPlB,MAAM,+BACLS,QAAK,+BAAEu/D,EAAAA,yBAAyB,QAAD,I,EAEhC9+D,EAAAA,EAAAA,GAGE,QAFAlB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,gBAAe,yBACc4qB,EAAAA,QAAQ3rC,U,0BACxCjzB,EAAAA,GAAG,2CAAD,MAETF,EAAAA,EAAAA,GAQS,UAPPlB,MAAM,+BACLS,QAAK,+BAAEu/D,EAAAA,yBAAyB,QAAD,I,EAEhC9+D,EAAAA,EAAAA,GAGE,QAFAlB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,gBAAe,yBACc4qB,EAAAA,QAAQz6B,U,0BACxCnkC,EAAAA,GAAG,2CAAD,O,IAIFuxD,SAAO,SAChB,iBAES,EAFTzxD,EAAAA,EAAAA,GAES,SAFTyvC,GAES,EADPW,EAAAA,EAAAA,IAAwBQ,EAAAA,CAAhBzoC,KAAK,a,yQE9DrBgxB,GAAAA,GAAAA,IACE+kB,GAAAA,IACAgG,GAAAA,IACAC,GAAAA,KAkKF,SA7JsB,CACpB9jD,WAAY,CACV00B,aAAAA,GACAytF,oBAAAA,IAEFzjH,MAAO,CAGL0jH,YAAa9hH,QAEbu6D,WAAYr9D,MAEZ04E,gBAAiB51E,SAEnBlH,KAAI,WACF,MAAO,CACLo+D,eAAe,EACfG,aAAa,EAIb0qD,mBAvBgC,GAyBpC,EACAhC,QAAO,WAAI,WACT,MAAO,CACLC,gBAAgBj6G,EAAAA,EAAAA,KAAS,kBAAM,EAAKi6G,cAAc,IAEtD,EACAj6G,S,uWAAU,EACRi8G,UAAS,WACP,OAAOnjH,KAAKijH,YAAc,GAAK,qBACjC,EACArpG,cAAa,WACX,OAAOo1D,EAAAA,GAAAA,IAAuBhvE,KAAKyvC,OACrC,EACAlkC,MAAK,WACH,OAAOvL,KAAKyvC,OAAOtzC,MAAMmc,SAASsB,cAAcrO,KAClD,EACA82C,oBAAmB,WACjB,OAAOC,EAAAA,GAAAA,IAA6BtiD,KAAKyvC,OAC3C,EACA2zE,sBAAqB,WACnB,OAAOlrB,EAAAA,GAAAA,IAA+Bl4F,KAAKyvC,OAAQzvC,KAAK07D,WAC1D,EACA2nD,YAAW,WACT,OAAOrjH,KAAKqiD,oBAAoBhnD,MAClC,EACAioH,iBAAgB,WACd,OAAOtjH,KAAKqjH,YAAerjH,KAAK8oC,gBAAmB9oC,KAAK2rC,uBAC1D,EACA5yB,QAAO,WACL,OAAO/Y,KAAKyvC,OAAOtzC,MAAMmc,SAASsB,cAAcb,OAClD,EACAwqG,UAAS,WACP,IAAQv4G,EAAehL,KAAKyvC,OAAOtzC,MAAK,UAAhC6O,WACR,OAAOhL,KAAKijH,aAA8B,WAAfj4G,CAC7B,EACAw4G,eAAc,WAMZ,MAJY,CACVC,KAAM,iBACNC,OAAQ,yBAHa1jH,KAAKyvC,OAAOtzC,MAAK,UAAhC6O,aAKkB,iBAC5B,EACAm2G,eAAc,WAEZ,MAAsB,WADCnhH,KAAKyvC,OAAOtzC,MAAK,UAAhC6O,WACyB,SAAW,IAC9C,EACA24G,uBAAsB,WACpB,OAAO3jH,KAAKojH,sBAAsBjmH,MAAM,EAAG6C,KAAKqjH,YAAcrjH,KAAKkjH,mBACrE,EACAn3D,SAAQ,WAAM,OAAO/rD,KAAKyvC,OAAOj7B,QAAQ/G,aAAas/C,oBAAqB,IACxE5d,EAAAA,EAAAA,IAAW,CAAC,kBAAmB,6BAEpC2J,QAAO,WACL94C,KAAK25G,YAAc35G,KAAKkI,MAAMm6B,KAAKu3E,QAAQ,uBACtC55G,KAAK25G,cACR35G,KAAK25G,YAAc35G,KAAKkI,MAAMm6B,KAAKu3E,QAAQ,0BAExC55G,KAAK25G,cACR35G,KAAK25G,YAAc35G,KAAKkI,MAAMm6B,KAAKu3E,QAAQ,iBAE7C55G,KAAK25G,YAAYrhF,iBAAiB,SAAUt4B,KAAK4jH,qBACnD,EACAnjE,UAAS,WACFzgD,KAAK25G,aACV35G,KAAK25G,YAAYj5D,oBAAoB,SAAU1gD,KAAK4jH,qBACtD,EACAhrE,MAAO,CACL0qE,iBAAgB,SAAE/hG,GACZA,EAAQ,GACVg7D,GAAAA,EAAAA,mBACAv8E,KAAKyvC,OAAOvzC,SAAS,eAAgB,IAAF,OAAMqlB,EAAK,QAE9Cg7D,GAAAA,EAAAA,oBACAv8E,KAAKyvC,OAAOvzC,SAAS,eAAgB,IAEzC,EACAsnH,eAAc,WAAI,WAEhBxjH,KAAK05C,WAAU,WACb,EAAKigE,YAAYj5D,oBAAoB,SAAU,EAAKkjE,sBACpD,EAAKjK,YAAc,EAAKzxG,MAAMm6B,KAAKu3E,QAAQ,uBACtC,EAAKD,cACR,EAAKA,YAAc,EAAKzxG,MAAMm6B,KAAKu3E,QAAQ,0BAE7C,EAAKD,YAAYrhF,iBAAiB,SAAU,EAAKsrF,sBACjD,EAAKA,sBACP,GACF,GAEF9jH,QAAS,CACP+lD,YAAW,WACU7lD,KAAK25G,YACb7zD,SAAS,CAAEmU,IAAKj6D,KAAKkI,MAAMm6B,KAAK63B,WAE7C,EACA0pD,qBAAoB,WAClB5jH,KAAKq4D,cAAgBr4D,KAAKkI,MAAMm6B,KAAK63B,UAAYl6D,KAAK25G,YAAYvxG,SACpE,EACAy7G,WAAU,WACR7jH,KAAKyvC,OAAOvzC,SAAS,2BACrB8D,KAAKkjH,mBA9H2B,EA+HlC,EACA98D,wBAAuB,WAAI,WACzB,IAAIpmD,KAAK+Y,QAAT,CAIA,IAAM+qG,EAAY9jH,KAAKojH,sBAAsB/nH,OAAS2E,KAAKqjH,YAC3D,GAAIrjH,KAAKkjH,mBAAqBY,EAC5B9jH,KAAKkjH,mBAAqB1nH,KAAKyjC,IAAIj/B,KAAKkjH,mBAAqB,GAAIY,OADnE,CAGW9jH,KAAKkjH,mBAAqBY,IACnC9jH,KAAKkjH,mBAAqBY,GAG5B,IAAMxpH,EAAQ0F,KAAKyvC,OACbt3B,EAAc7d,EAAM6B,MAAMa,MAAM2Q,YAAYwK,YAClD7d,EAAM0S,OAAO,0BAA2B,CAAEpB,OAAO,IACjDgc,GAAAA,EAAAA,eAAoC,CAClCttB,MAAAA,EACA6d,YAAAA,EACAiE,OAAO,IACN9iB,MAAK,SAAAyqH,GACNzpH,EAAM0S,OAAO,0BAA2B,CAAEpB,OAAO,IAC3B,IAAlBm4G,EAAO1oH,SACT,EAAKm9D,aAAc,GAErB,EAAK0qD,oBAAsBa,EAAO1oH,MACpC,GAfA,CARA,CAwBF,ICxKE,IAA2B,QAAgB,GAAQ,CAAC,CAAC,S,qJVNzD41C,EAAAA,EAAAA,IA+FWsV,EAAAA,GAAAA,CA9FR99C,SAAU/H,EAAAA,aAAeA,EAAAA,gBACzB48B,GAAI58B,EAAAA,gB,cAELuwC,EAAAA,EAAAA,KA0FYsD,EAAAA,EAAAA,IAzFL7zC,EAAAA,UAAY,MAAQ,SAAX,CACdgwC,IAAI,OACHpxC,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAAA,CAAAyoE,QAAaz8G,EAAAA,aACb,mB,mBAEN,iBAmFM,EAnFNF,EAAAA,EAAAA,GAmFM,OAnFAlB,OAAKo1C,EAAAA,EAAAA,IAAEh0C,EAAAA,Y,CAEFA,EAAAA,WAqCsC,iBArC7B,WADlBJ,EAAAA,EAAAA,IAuCM,MAvCNC,EAuCM,EAnCJC,EAAAA,EAAAA,GAMM,MANNyvC,EAMM,mBALDvvC,EAAAA,GAAG,gCAAiC,IACvC,GACQA,EAAAA,cAAW,WADnBJ,EAAAA,EAAAA,IAGyB,OAHzB4vC,GAGyB,QAArBxvC,EAAAA,aAAW,sBAGTA,EAAAA,gBAAa,WADrBJ,EAAAA,EAAAA,IAkBM,MAlBN+vC,EAkBM,EAdJ7vC,EAAAA,EAAAA,GAaS,UAZPlB,MAAM,uCACNI,KAAK,SACJoN,MAAOpM,EAAAA,GAAG,yBACVX,QAAK,8BAAEW,EAAAA,aAAAA,EAAAA,YAAAA,MAAAA,EAAAA,UAAW,I,EAEnBkwC,EAAAA,EAAAA,IAMWyV,EAAAA,CAND/mD,MAAM,qCAAmC,C,kBACjD,iBAA0B,EAA1BsxC,EAAAA,EAAAA,IAA0BQ,EAAAA,CAAlBzoC,KAAK,cACbioC,EAAAA,EAAAA,IAGEQ,EAAAA,CAFAzoC,KAAK,QACLgsC,UAAU,S,mCAMVj0C,EAAAA,cAAW,WADnBJ,EAAAA,EAAAA,IAOS,U,MALPhB,MAAM,6BACNI,KAAK,SACJK,QAAK,wCAAUW,EAAAA,YAAAA,EAAAA,WAAAA,MAAAA,EAAAA,UAAU,mB,QAEvBA,EAAAA,GAAG,uBAAD,qBAEPkwC,EAAAA,EAAAA,IAAgDozE,EAAAA,CAA3B1kH,MAAM,yBAE7BkB,EAAAA,EAAAA,GAcM,MAdNixC,EAcM,gBAVJnxC,EAAAA,EAAAA,IASM8vC,EAAAA,GAAAA,MAAAA,EAAAA,EAAAA,IARmB1vC,EAAAA,wBAAsB,SAAtCib,G,kBADTrb,EAAAA,EAAAA,IASM,OAPH+G,IAAKsU,EAAahiB,GACnBqpD,KAAK,WACL1jD,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,eAAc,CAAAuvE,QACFvjH,EAAAA,cAAgBib,EAAayC,S,CAE/CoyB,GACAI,EAAAA,EAAAA,IAA6CszE,EAAAA,CAA9BvoG,aAAcA,GAAY,4B,aAG7Cnb,EAAAA,EAAAA,GA0BM,MA1BNiwC,EA0BM,CAxBI/vC,EAAAA,cAAW,WADnBJ,EAAAA,EAAAA,IAKM,MALNoxC,GAKM,QADDhxC,EAAAA,GAAG,wCAAD,IAGOA,EAAAA,UAKyC,WAGvDJ,EAAAA,EAAAA,IASM,MATNwwC,EASM,EALJF,EAAAA,EAAAA,IAIEQ,EAAAA,CAHAzoC,KAAK,eACL84C,KAAA,GACA9P,KAAK,YAfY,WADrBrxC,EAAAA,EAAAA,IAQS,U,MANPhB,MAAM,mCACLS,QAAK,yCAAUW,EAAAA,yBAAuB,kB,EAEvCF,EAAAA,EAAAA,GAEM,MAFNmwC,GAEM,QADDjwC,EAAAA,YAAcA,EAAAA,GAAG,2BAA6BA,EAAAA,GAAG,6BAAD,S,oDUvEjE,K,4ECROpB,MAAM,iB,GACHA,MAAM,gB,qBAehBq6B,EAAAA,GAAAA,IACE+kB,EAAAA,KAGF,SAAiB,ECZjB,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,iEDNzDp+C,EAAAA,EAAAA,IASM,MATNC,EASM,EARJC,EAAAA,EAAAA,GAOO,OAPPyvC,EAOO,EANLW,EAAAA,EAAAA,IAIEQ,EAAAA,CAHAzoC,KAAK,eACL84C,KAAA,GACA9P,KAAK,Q,QACL,KACF,QAAGjxC,EAAAA,GAAG,oBAAD,M,qGE4VX,QApWgB,CACdhF,KAAM,UACN6D,MAAO,CAEL0yD,QAAStyD,OAGTwhE,UAAWxhE,OAKXwkH,QAASrqH,OAITsqH,gBAAiBzkH,OAIjB0nD,OAAQvtD,OAIRwqB,OAAQxqB,OAKRuqH,aAAc1kH,OAId2kH,cAAenjH,QAGfsH,SAAUtH,QAGVojH,eAAgBpjH,QAGhBqjH,uBAAwB7kH,OAGxB8kH,YAAatjH,QAEbujH,aAAc,CACZhlH,KAAM5F,OACN+F,QAAS,CAAC,IAGd8kH,OAAQ,CAAC,kBACT1qH,KAAI,WACF,MAAO,CAIL2qH,SAAU,KAGVC,UAAU,EACVC,aAAa,EACb7uF,QAAQ,EACR8uF,OAAQ,CAAC,EACTC,QAAS,CAAEz3G,MAAO,EAAGyU,OAAQ,GAC7BijG,WAAY,KAEZC,aAAc,KACdC,cAAe,KACfhP,qBAAqB,EACrBiP,cAAe,IAAIjjH,IAEvB,EACArC,QAAS,CACPqxG,YAAW,SAAE1pC,GACXznE,KAAK4kH,SAAWn9C,EAChBznE,KAAKw6G,cACP,EACA6K,4BAA2B,WAEzB,OADkBrlH,KAAKokH,gBAAkBpkH,KAAKs5C,IAAIsgE,QAAQ55G,KAAKokH,iBAAmBpkH,KAAKs5C,IAAIy/C,cAC1Ep+B,uBACnB,EACA6/C,aAAY,WACV,GAAIx6G,KAAKi2B,OACPj2B,KAAK+kH,OAAS,CAAC,MADjB,CAOA,IAAMH,EAAW5kH,KAAK4kH,UAAa5kH,KAAKkI,MAAM+pD,SAAWjyD,KAAKkI,MAAM+pD,QAAQtuD,SAAS,IAAO3D,KAAKs5C,IAE3FgsE,EAAeV,EAASprE,cAAgBorE,EAAS97F,aACjDy8F,EAAcX,EAAStS,aAAesS,EAASl8F,YAC/C88F,EAAkBZ,EAASjqD,wBAE3B8qD,EAActtC,iBAAiBysC,GAC/B/rB,EAAauQ,WAAWqc,EAAYC,YACpCC,EAAgBvc,WAAWqc,EAAYG,eACvCC,EAAezc,WAAWqc,EAAYptC,cACtCygB,EAAcsQ,WAAWqc,EAAYK,aAGrC78F,EACDu8F,EAAgB/kD,KAAqB,GAAd8kD,EADtBt8F,EAEDu8F,EAAgBvrD,IAAqB,GAAfqrD,EAErB1lH,EAAUI,KAAKkI,MAAMtI,QACrBmmH,EAAgB/lH,KAAKukH,eACvBvkH,KAAKkI,MAAMtI,QAAQ25C,cAAcv5C,KAAKwkH,wBACtC,KAGEwB,EAAkBhmH,KAAKmkH,UACP,cAAnBnkH,KAAKmkH,QAAQnrE,GAAwC,cAAnBh5C,KAAKmkH,QAAQnqE,IAChDh6C,KAAKqlH,8BAEDh+D,EAASrnD,KAAKqnD,QAAU,CAAC,EAIzB4+D,EAAUjmH,KAAKmkH,SAA8B,cAAnBnkH,KAAKmkH,QAAQnrE,EACzC,CACE/Z,IAAK+mF,EAAgBvlD,MAAQpZ,EAAOoZ,MAAQ,GAC5ChlE,IAAKuqH,EAAgBn5F,OAASw6B,EAAOx6B,OAAS,IAEhD,CACEoS,IAAK,GAAKooB,EAAOoZ,MAAQ,IACzBhlE,IAAK2E,OAAOooB,YAAc6+B,EAAOx6B,OAAS,KAG1Cq5F,EAAUlmH,KAAKmkH,SAA8B,cAAnBnkH,KAAKmkH,QAAQnqE,EACzC,CACE/a,IAAK+mF,EAAgB/rD,KAAO5S,EAAO4S,KAAO,GAC1Cx+D,IAAKuqH,EAAgB/L,QAAU5yD,EAAO4yD,QAAU,IAElD,CACEh7E,IAAK,GAAKooB,EAAO4S,KAAO,IACxBx+D,IAAK2E,OAAOyoB,aAAew+B,EAAO4yD,QAAU,IAG9CkM,EAAc,EACdC,EAAa,EAEjB,GAAIL,EAAe,CACjB,IAAMM,EAAMzmH,EAAQ+6D,wBACd2rD,EAAyBP,EAAcprD,wBACvC4rD,EAAkBD,EAAuB7lD,KAAO4lD,EAAI5lD,KACpD+lD,EAAiBF,EAAuBrsD,IAAMosD,EAAIpsD,IACxDksD,GAAeI,EAA8C,GAA5BR,EAAczT,YAC/C8T,GAAcI,EAA8C,GAA7BT,EAAcvsE,YAC/C,MACE2sE,GAAqC,GAAvBvmH,EAAQ0yG,YACtB8T,GAAqC,GAAxBxmH,EAAQ45C,aAGvB,IAAMitE,EAAax9F,EAAWk9F,EACxBO,EAAcD,EAAa7mH,EAAQ0yG,YACnCqU,EAAY19F,EAAWm9F,EACvBQ,EAAeD,EAAY/mH,EAAQ45C,aAGrCitE,EAAaR,EAAQhnF,MACvBknF,GAAeF,EAAQhnF,IAAMwnF,GAI3BC,EAAcT,EAAQxqH,MACxB0qH,GAAeO,EAAcT,EAAQxqH,KAInCkrH,EAAYT,EAAQjnF,MACtBmnF,GAAcF,EAAQjnF,IAAM0nF,GAI1BC,EAAeV,EAAQzqH,MACzB2qH,GAAcQ,EAAeV,EAAQzqH,KAGvC,IAAIorH,EAAa,EACbC,EAAa,EAEjB,GAAIf,EACFc,EAAa59F,EAAWk9F,EACxBW,EAAa79F,EAAWm9F,OACnB,GAAuB,UAAnBpmH,KAAKmhE,WAA4C,SAAnBnhE,KAAKmhE,UAAsB,CAElE,IAAI4lD,EAA8B,WAAnB/mH,KAAKmhE,UAKd6lD,EAAc/9F,EAA0B,GAAfq8F,GAAsBtlH,KAAKskH,cAAgBzrB,EAAa,GACjFouB,EAAiBh+F,EAA0B,GAAfq8F,GAAsBtlH,KAAKskH,cAAgBqB,EAAgB,GACzFsB,EAAiBrnH,EAAQ45C,aAAe0sE,EAAQzqH,MAAKsrH,GAAW,GAChEC,EAAcpnH,EAAQ45C,aAAe0sE,EAAQjnF,MAAK8nF,GAAW,GAEjE,IAAMG,EAAWlnH,KAAKskB,QAAUtkB,KAAKskB,OAAO01B,GAAM,EAClD8sE,EAAaC,EACTC,EAAcE,EAAUtnH,EAAQ45C,aAChCytE,EAAiBC,EAGrBL,EAAa59F,EAAWk9F,GADPnmH,KAAKskB,QAAUtkB,KAAKskB,OAAO00B,GAAM,EAEpD,KAAO,CAEL,IAAImuE,EAAgC,SAAnBnnH,KAAKmhE,UAKhBimD,EAAgBn+F,EAAyB,GAAds8F,GAAqBvlH,KAAKskH,cAAgBuB,EAAe,GACpFwB,EAAep+F,EAAyB,GAAds8F,GAAqBvlH,KAAKskH,cAAgBxrB,EAAc,GACpFuuB,EAAeznH,EAAQ0yG,YAAc2T,EAAQxqH,MAAK0rH,GAAa,GAC/DC,EAAgBxnH,EAAQ0yG,YAAc2T,EAAQhnF,MAAKkoF,GAAa,GAEpE,IAAMG,EAAWtnH,KAAKskB,QAAUtkB,KAAKskB,OAAO00B,GAAM,EAClD6tE,EAAaM,EACTC,EAAgBE,EAAU1nH,EAAQ0yG,YAClC+U,EAAeC,EAGnBR,EAAa79F,EAAWm9F,GADPpmH,KAAKskB,QAAUtkB,KAAKskB,OAAO01B,GAAM,EAEpD,CAEAh6C,KAAK+kH,OAAS,CACZtkD,KAAM,GAAF,OAAKjlE,KAAKk0F,MAAMm3B,GAAW,MAC/B5sD,IAAK,GAAF,OAAKz+D,KAAKk0F,MAAMo3B,GAAW,OAG5B9mH,KAAKmhH,iBACPnhH,KAAK+kH,OAAO,yBAA2B,YAAH,OAAe/kH,KAAKmhH,eAAc,eAEpE6E,IACFhmH,KAAK+kH,OAAOwC,SAAW,GAAH,OAAM/rH,KAAKk0F,MAAMs2B,EAAgBz4G,OAAM,MAtJ7D,CAwJF,EACAwjG,YAAW,WAAI,WACb,IAAI/wG,KAAKyI,SAAT,CACAzI,KAAKm2G,qBAAsB,EAC3Bx5G,YAAW,WACT,EAAKw5G,qBAAsB,CAC7B,GAAG,GACH,IAAMqR,EAAYxnH,KAAKi2B,OACvBj2B,KAAKi2B,QAAS,EACdj2B,KAAKmlH,eAAiBnlH,KAAKmlH,cAAcsC,oBAAoBznH,MAAM,IAC9C,UAAjBA,KAAKiyD,SAAuBjyD,KAAKykH,cACnC53G,SAASyrB,iBAAiB,QAASt4B,KAAK0nH,gBAE1C1nH,KAAKilH,WAAW3sF,iBAAiB,SAAUt4B,KAAKmmD,UAChDnmD,KAAKilH,WAAW3sF,iBAAiB,SAAUt4B,KAAKykE,UAChDzkE,KAAK05C,WAAU,WACT8tE,GAAW,EAAKziH,MAAM,QAC1B,EAAKy1G,cACP,GAhByB,CAiB3B,EACAtJ,YAAW,WACLlxG,KAAKyI,WACJzI,KAAKi2B,QAAQj2B,KAAK+E,MAAM,SAC7B/E,KAAKi2B,QAAS,EACdj2B,KAAKmlH,eAAiBnlH,KAAKmlH,cAAcsC,oBAAoBznH,MAAM,GAC9C,UAAjBA,KAAKiyD,SACPplD,SAAS6zC,oBAAoB,QAAS1gD,KAAK0nH,gBAE7C1nH,KAAKilH,WAAWvkE,oBAAoB,SAAU1gD,KAAKmmD,UACnDnmD,KAAKilH,WAAWvkE,oBAAoB,SAAU1gD,KAAKykE,UACrD,EACAvD,aAAY,SAAE3nE,GACS,UAAjByG,KAAKiyD,UACPjyD,KAAK8kH,aAAc,EACnBjoH,aAAamD,KAAKklH,cAClBllH,KAAKklH,aAAe,KACpBllH,KAAK+wG,cAET,EACA9vC,aAAY,SAAE1nE,GAAG,WACM,UAAjByG,KAAKiyD,SAAmD,IAA5BjyD,KAAKolH,cAAczzE,OACjD3xC,KAAKklH,aAAevoH,YAAW,kBAAM,EAAKu0G,aAAa,GAAE,GAE7D,EACAyW,oBAAmB,SAAEpuH,GACE,UAAjByG,KAAKiyD,SAAwBjyD,KAAK8kH,cACpC9kH,KAAK8kH,aAAc,EACnBjoH,aAAamD,KAAKklH,cAClBllH,KAAKklH,aAAe,KACpBllH,KAAK+wG,cAET,EACA6W,oBAAmB,SAAEruH,GAAG,WACD,UAAjByG,KAAKiyD,SAAmD,IAA5BjyD,KAAKolH,cAAczzE,OACjD3xC,KAAKklH,aAAevoH,YAAW,kBAAM,EAAKu0G,aAAa,GAAE,GAE7D,EACAnxG,QAAO,SAAExG,GACc,UAAjByG,KAAKiyD,UACHjyD,KAAKi2B,OACPj2B,KAAK+wG,cAEL/wG,KAAKkxG,cAGX,EACAwW,eAAc,SAAEnuH,GACVyG,KAAKm2G,qBACLn2G,KAAKi2B,QACLj2B,KAAKkI,MAAMtI,SAAWI,KAAKkI,MAAMtI,QAAQq5F,SAAS1/F,EAAEoH,SACpDX,KAAKs5C,IAAI2/C,SAAS1/F,EAAEoH,SACpBX,KAAKolH,cAAczzE,KAAO,IAC9B3xC,KAAKkxG,cACDlxG,KAAKmlH,eAAenlH,KAAKmlH,cAAcuC,eAAenuH,GAC5D,EACA4sD,SAAQ,SAAE5sD,GACRyG,KAAKw6G,cACP,EACA/1C,SAAQ,SAAElrE,GACRyG,KAAKw6G,cACP,EACAiN,oBAAmB,SAAEI,EAAU1rH,GACzBA,EACF6D,KAAKolH,cAAcpoG,IAAI6qG,GAEvB7nH,KAAKolH,cAAa,OAAQyC,EAE9B,GAEFjvC,QAAO,WAIL,IAAMh5E,EAAUI,KAAKkI,MAAMtI,QACtBA,IACDI,KAAKglH,QAAQz3G,QAAU3N,EAAQ0yG,aAAetyG,KAAKglH,QAAQhjG,SAAWpiB,EAAQ45C,eAChFx5C,KAAKw6G,eACLx6G,KAAKglH,QAAU,CAAEz3G,MAAO3N,EAAQ0yG,YAAatwF,OAAQpiB,EAAQ45C,eAEjE,EACAV,QAAO,WACL94C,KAAK6kH,UAAW,EAChB,IAAII,EAAajlH,KAAKkI,MAAM+pD,QAAQ2nD,QAAQ,wBACxC55G,KAAKkI,MAAM+pD,QAAQ2nD,QAAQ,yBAC1BqL,IAAYA,EAAa7kH,QAC9BJ,KAAKilH,WAAaA,EAElB,IADA,IAAIpuD,EAAS72D,KAAK8nH,QACXjxD,GAAiC,YAAvBA,EAAOkxD,EAAEroH,KAAKhE,MAC7Bm7D,EAASA,EAAOixD,QAElB9nH,KAAKmlH,cAAgBtuD,CACvB,EACAmxD,cAAa,WACXhoH,KAAKkxG,aACP,GCxVF,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,wCCNzD5wG,EAAAA,EAAAA,IAoCO,QAnCJ4gE,aAAU,8BAAExgE,EAAAA,cAAAA,EAAAA,aAAAA,MAAAA,EAAAA,UAAY,GACxBugE,aAAU,8BAAEvgE,EAAAA,cAAAA,EAAAA,aAAAA,MAAAA,EAAAA,UAAY,I,EAEzBF,EAAAA,EAAAA,GAQS,UART8zC,EAAAA,EAAAA,IAQS,CAPP5D,IAAI,UACJpxC,MAAM,yCACNI,KAAK,UACGgB,EAAAA,aAAY,CACnBX,QAAK,8BAAEW,EAAAA,SAAAA,EAAAA,QAAAA,MAAAA,EAAAA,UAAO,K,EAEfgzC,EAAAA,EAAAA,IAAuBhzC,EAAAA,OAAAA,YAAAA,MAAAA,EAAAA,EAAAA,OAEzBuwC,EAAAA,EAAAA,IAsBWsV,EAAAA,GAAAA,CArBR99C,UAAW/H,EAAAA,SACZ48B,GAAG,a,EAEHsT,EAAAA,EAAAA,IAiBaq3E,EAAAA,GAAAA,CAjBDvsH,KAAK,QAAM,C,kBACrB,iBAeM,CAdGgF,EAAAA,Q,iBAAM,WADfJ,EAAAA,EAAAA,IAeM,O,MAbJowC,IAAI,UACHqS,OAAK,QAAEriD,EAAAA,QACRpB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,UACEh0C,EAAAA,cAAgB,oBACvBwgE,aAAU,8BAAExgE,EAAAA,qBAAAA,EAAAA,oBAAAA,MAAAA,EAAAA,UAAmB,GAC/BugE,aAAU,8BAAEvgE,EAAAA,qBAAAA,EAAAA,oBAAAA,MAAAA,EAAAA,UAAmB,GAC/BX,QAAK,8BAAEW,EAAAA,gBAAAA,EAAAA,eAAAA,MAAAA,EAAAA,UAAc,I,EAEtBgzC,EAAAA,EAAAA,IAIEhzC,EAAAA,OAAAA,UAAAA,CAFApB,MAAM,gBACLw5B,MAAOp4B,EAAAA,e,iIC9BhBgwC,IAAI,OACJpxC,MAAM,oB,GAOCA,MAAM,c,SAiBPA,MAAM,wC,qBAeNA,MAAM,wC,qBAeNA,MAAM,wC,qBAeNA,MAAM,qB,6BAONA,MAAM,kC,SAONA,MAAM,yB,GAWJA,MAAM,mB,SAWRA,MAAM,qB,SAIJA,MAAM,kB,SAMNA,MAAM,gC,mEAyERA,MAAM,mB,SAaJA,MAAM,e,qBAmBNA,MAAM,e,GAEAA,MAAM,e,GAahBoxC,IAAI,SACJpxC,MAAM,e,GAEDA,MAAM,oB,iCA8BTmJ,SAAA,GACAnJ,MAAM,sB,SAMNmJ,SAAA,GACAnJ,MAAM,sB,wBA0BRA,MAAM,e,SA+BNA,MAAM,mB,wTCzUdq6B,GAAAA,GAAAA,IACEuuF,GAAAA,IACAxpE,GAAAA,KA2EF,SAxEoB,CAClBzkD,KAAI,WACF,MAAO,CACLkuH,YAAa,EACbC,aAAa,EAEjB,EACAlhH,SAAU,CACRmhH,UAAS,WACP,OAAOroH,KAAKmoH,YAAc,CAC5B,GAEFroH,QAAS,CACPwoH,WAAU,SAAEzrD,GACV,IAAM0rD,EAAOvoH,KACP1F,EAAQ0F,KAAKyvC,OACnB,GAAIotB,EAAKlrB,KAAOr3C,EAAM6B,MAAM4Q,SAAS4qC,YAArC,CACE,IAAM6wE,EAAW5wE,GAAAA,EAAAA,eAAqCilB,EAAKlrB,MACrD82E,EAAc7wE,GAAAA,EAAAA,eAAqCt9C,EAAM6B,MAAM4Q,SAAS4qC,aAC9E4wE,EAAKxjH,MAAM,gBAAiB,eAAgB,CAAEyjH,SAAUA,EAAS3wE,IAAK6wE,aAAcF,EAAS1wE,KAAM2wE,YAAaA,EAAY5wE,IAAK8wE,gBAAiBF,EAAY3wE,MAEhK,KALA,CAMA,IAAMuyC,EAAW,IAAI/gE,SACrB+gE,EAAS9gE,OAAO,OAAQszC,GAExB0rD,EAAKxjH,MAAM,aACXwjH,EAAKJ,cAELr+D,EAAAA,EAAAA,YAAgC,CAAExvD,MAAAA,EAAO+vF,SAAAA,IACtC/wF,MAAK,SAACsvH,GACLL,EAAKxjH,MAAM,WAAY6jH,GACvBL,EAAKM,qBACP,IAAG,SAACt9G,GACFyK,QAAQzK,MAAM,uBAAwBA,GACtCg9G,EAAKxjH,MAAM,gBAAiB,WAC5BwjH,EAAKM,qBACP,GAfF,CAgBF,EACAA,oBAAmB,WACjB7oH,KAAKmoH,cACoB,IAArBnoH,KAAKmoH,aACPnoH,KAAK+E,MAAM,eAEf,EACA+jH,UAAS,WAAI,WACX9oH,KAAKooH,aAAc,EACnBpoH,KAAK05C,WAAU,WACb,EAAK0uE,aAAc,CACrB,GACF,EACAW,YAAW,SAAEC,GAAO,IACM,EADN,E,65BAAA,CACCA,GAAK,IAAxB,IAAK,EAAL,qBAA0B,KAAfnsD,EAAI,QACb78D,KAAKsoH,WAAWzrD,EAClB,CAAC,+BACH,EACAosD,OAAM,YAAc,IAAVtoH,EAAM,EAANA,OACRX,KAAK+oH,YAAYpoH,EAAOqoH,MAC1B,GAEFzpH,MAAO,CACL,YACA,YAEFq5C,MAAO,CACLswE,UAAW,SAAUC,GACdnpH,KAAKqoH,WACRroH,KAAK+oH,YAAYI,EAErB,I,gBCzEJ,MAEA,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,iECNzD7oH,EAAAA,EAAAA,IAwBQ,SAvBNhB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,eAAc,CAAAjsC,SACA/H,EAAAA,YACnBoM,MAAOpM,EAAAA,GAAG,0B,CAGHA,EAAAA,YAAS,WADjBuwC,EAAAA,EAAAA,IAKEG,EAAAA,C,MAHA9xC,MAAM,gBACNqJ,KAAK,eACL84C,KAAA,O,eAGO/gD,EAAAA,W,iBAAS,WADlBuwC,EAAAA,EAAAA,IAIEG,EAAAA,C,MAFA9xC,MAAM,WACNqJ,KAAK,YAGCjI,EAAAA,cAAW,WADnBJ,EAAAA,EAAAA,IAOC,S,MALChB,MAAM,oBACLmJ,SAAU/H,EAAAA,SACXhB,KAAK,OACLsqF,SAAS,OACR7X,SAAM,8BAAEzxE,EAAAA,QAAAA,EAAAA,OAAAA,MAAAA,EAAAA,UAAM,I,8ECpBjBpB,MAAM,a,IAOCA,MAAM,mB,yFAiCRA,MAAM,oB,iBAWGsM,MAAM,U,IAGNA,MAAM,Y,0FChDxB+tB,GAAAA,GAAAA,IACEC,GAAAA,IACAwvF,GAAAA,KAGF,UACEvoH,WAAY,CACV29G,OAAAA,GAAAA,GAEF9iH,KAAM,WACN6D,MAAO,CAAC,WACRtF,KAAM,iBAAO,CACXovH,SAAU,SACVvmD,QAAS,CAAC,GAAI,IACdwmD,aAAc,GACdC,WAAY,UACb,EACDriH,SAAU,CACR6M,WAAU,WACR,OAAO/T,KAAKyvC,OAAOtzC,MAAM4Q,SAASgH,UACpC,EACAy1G,WAAU,WACR,OAAOxpH,KAAK+T,WAAWC,WACzB,EACAy1G,UAAS,WACP,OAAOzpH,KAAK+T,WAAWE,gBACzB,EACAy1G,YAAW,WAAI,WAEPC,EAAS3pH,KAAK4pH,sBACpB,MAFiB,CAAC,UAAW,QAAS,QAEtB7uH,QACd,SAAA+8C,GAAI,OAAI,EAAK/jC,WAAWI,gBAAkBw1G,EAAO7xE,EAAM,EAAE,GAE7D,EACA+xE,2BAA0B,WACxB,OAAOruH,KAAKi+D,KACVz5D,KAAK8pH,oBACH9pH,KAAKupH,WACLvpH,KAAK+T,WAAWG,gBAGtB,EACA61G,2BAA0B,WACxB,OAAOvuH,KAAKk/D,MACV16D,KAAK8pH,oBACH9pH,KAAKupH,WACLvpH,KAAK+T,WAAWI,gBAGtB,GAEFrU,QAAS,CACP6nC,MAAK,WACH3nC,KAAKqpH,SAAW,SAChBrpH,KAAK8iE,QAAU,CAAC,GAAI,IACpB9iE,KAAKspH,aAAe,GACpBtpH,KAAKupH,WAAa,SACpB,EACAS,WAAU,SAAE3mH,GACV,IAAM4mH,EAAUjqH,KAAKs5C,IAAIC,cAAc,SAAD,OAAUl2C,EAAQ,IACpD4mH,EACFA,EAAQl6E,QAGY/vC,KAAKkqH,aAEvBlqH,KAAK05C,WAAU,WACb15C,KAAKgqH,WAAW3mH,EAClB,GAGN,EACA6mH,UAAS,WACP,OAAIlqH,KAAK8iE,QAAQznE,OAAS2E,KAAKwpH,aAC7BxpH,KAAK8iE,QAAQzjE,KAAK,KACX,EAGX,EACA8qH,aAAY,SAAE9mH,EAAOyB,GACf9E,KAAK8iE,QAAQznE,OAAS,IACxB2E,KAAK8iE,QAAQpoD,OAAOrX,EAAO,GAC3BrD,KAAKoqH,qBAET,EACAN,oBAAmB,SAAEhyE,EAAMyhB,GAEzB,OAAO8wD,GAAAA,GAAwBvyE,EAAMyhB,EACvC,EACAqwD,sBAAqB,SAAE9xE,EAAMyhB,GAC3B,OAAO8wD,GAAAA,GAAwBvyE,EAAMyhB,EACvC,EACA+wD,mBAAkB,WAChBtqH,KAAKspH,aACH9tH,KAAKC,IAAIuE,KAAK6pH,2BAA4B7pH,KAAKspH,cACjDtpH,KAAKspH,aACH9tH,KAAKyjC,IAAIj/B,KAAK+pH,2BAA4B/pH,KAAKspH,cACjDtpH,KAAKoqH,oBACP,EACAA,mBAAkB,WAChB,IAAMp+F,EAAYhsB,KAAK4pH,sBACrB5pH,KAAKupH,WACLvpH,KAAKspH,cAGDxmD,EAAU,KAAK9iE,KAAK8iE,QAAQ/nE,QAAO,SAAA6R,GAAM,MAAe,KAAXA,CAAa,KAC5Dk2D,EAAQznE,OAAS,EACnB2E,KAAK+E,MAAM,cAAe,CAAEwG,MAAOvL,KAAKg4D,GAAG,8BAG7Ch4D,KAAK+E,MAAM,cAAe,CACxB+9D,QAAAA,EACAknB,SAA4B,aAAlBhqF,KAAKqpH,SACfr9F,UAAAA,GAEJ,ICnHJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,2EFLjDtrB,EAAAA,UAAO,WADfJ,EAAAA,EAAAA,IA0FM,MA1FNC,GA0FM,gBAtFJD,EAAAA,EAAAA,IAyBM8vC,EAAAA,GAAAA,MAAAA,EAAAA,EAAAA,IAxBsB1vC,EAAAA,SAAO,SAAzBkM,EAAQvJ,G,kBADlB/C,EAAAA,EAAAA,IAyBM,OAvBH+G,IAAKhE,EACN/D,MAAM,e,EAENkB,EAAAA,EAAAA,GAYM,MAZNyvC,GAYM,WAXJzvC,EAAAA,EAAAA,GAUC,SATE7G,GAAE,eAAU0J,G,yCACJ3C,EAAAA,QAAQ2C,GAAK,GACtBsuC,KAAK,IACLryC,MAAM,oBACNI,KAAK,OACJ6wC,YAAa7vC,EAAAA,GAAG,gBAChB6pH,UAAW7pH,EAAAA,UACXyxE,SAAM,8BAAEzxE,EAAAA,oBAAAA,EAAAA,mBAAAA,MAAAA,EAAAA,UAAkB,GAC1B2sG,WAAO,qCAAqB3sG,EAAAA,WAAW2C,EAAK,mC,mBAPpC3C,EAAAA,QAAQ2C,QAWb3C,EAAAA,QAAQrF,OAAS,IAAH,WADtBiF,EAAAA,EAAAA,IAMS,U,MAJPhB,MAAM,iDACLS,QAAK,mBAAEW,EAAAA,aAAa2C,EAAK,G,EAE1ButC,EAAAA,EAAAA,IAAuBQ,EAAAA,CAAfzoC,KAAK,WAAO,wB,UAIhBjI,EAAAA,QAAQrF,OAASqF,EAAAA,aAAU,WADnCJ,EAAAA,EAAAA,IAWS,U,MATPhB,MAAM,oDACLS,QAAK,8BAAEW,EAAAA,WAAAA,EAAAA,UAAAA,MAAAA,EAAAA,UAAS,I,EAEjBkwC,EAAAA,EAAAA,IAGEQ,EAAAA,CAFAzoC,KAAK,OACLgpC,KAAK,Q,QACL,KAEF,QAAGjxC,EAAAA,GAAG,qBAAD,uBAEPF,EAAAA,EAAAA,GA+CM,MA/CN8vC,GA+CM,EA9CJ9vC,EAAAA,EAAAA,GAiBM,OAhBJlB,MAAM,YACLwN,MAAOpM,EAAAA,GAAG,e,EAEXkwC,EAAAA,EAAAA,IAYSkuE,EAAAA,C,WAXEp+G,EAAAA,S,qDAAAA,EAAAA,SAAQ,IACjBpB,MAAM,mBACNkrH,SAAS,OACRr4C,SAAQzxE,EAAAA,oB,mBAET,iBAES,EAFTF,EAAAA,EAAAA,GAES,SAFTgwC,IAES,QADJ9vC,EAAAA,GAAG,wBAAD,IAEPF,EAAAA,EAAAA,GAES,SAFTiwC,IAES,QADJ/vC,EAAAA,GAAG,2BAAD,G,8CAIXF,EAAAA,EAAAA,GA2BM,OA1BJlB,MAAM,cACLwN,MAAOpM,EAAAA,GAAG,iB,WAEXF,EAAAA,EAAAA,GAOC,S,qDANUE,EAAAA,aAAY,IACrBhB,KAAK,SACLJ,MAAM,oCACL2/B,IAAKv+B,EAAAA,2BACLjF,IAAKiF,EAAAA,2BACLyxE,SAAM,8BAAEzxE,EAAAA,oBAAAA,EAAAA,mBAAAA,MAAAA,EAAAA,UAAkB,I,mBALlBA,EAAAA,iBAAY,QAMtB,KACD,QAAG,KAAM,MACT,QAaSo+G,EAAAA,C,WAZEp+G,EAAAA,W,qDAAAA,EAAAA,WAAU,IACnB8pH,SAAS,OACTlrH,MAAM,cACL6yE,SAAQzxE,EAAAA,oB,mBAGP,iBAA2B,gBAD7BJ,EAAAA,EAAAA,IAMS8vC,EAAAA,GAAAA,MAAAA,EAAAA,EAAAA,IALQ1vC,EAAAA,aAAW,SAAnBo3C,G,kBADTx3C,EAAAA,EAAAA,IAMS,UAJN+G,IAAKywC,EACLlsC,MAAOksC,I,QAELp3C,EAAAA,IAAI,aAAD,OAAco3C,EAAI,UAAUp3C,EAAAA,aAAc,CAAC,MAAH,K,uwBG3D1Di5B,GAAAA,GAAAA,IACEw1E,GAAAA,IACAsb,GAAAA,IACAvC,GAAAA,IACAwC,GAAAA,IACA9wF,GAAAA,IACA8kB,GAAAA,KAGF,IAgBMisE,GAAmB,SAAC79C,GACxB,OAAOzzD,OAAOyzD,EAAI9uE,UAAU,EAAG8uE,EAAIzxE,OAAS,GAC9C,EAykBA,SAvkBuB,CACrBkE,MAAO,CACL,WACA,aACA,oBACA,aACA,cACA,0BACA,cACA,oBACA,UACA,cACA,aACA,mBACA,UACA,iBACA,uBACA,4BACA,gBACA,qBACA,eACA,6BACA,gBACA,iBACA,cACA,YACA,cACA,gBACA,YACA,YACA,gBACA,uBACA,qBAEFigE,MAAO,CACL,SACA,SACA,YACA,cAEF3+D,WAAY,CACV+pH,YAAAA,GACAC,WAAAA,GAAAA,EACAC,SAAAA,GACAC,cAAAA,GAAAA,EACAx0E,SAAAA,GAAAA,EACAioE,OAAAA,GAAAA,EACA/+C,WAAAA,GAAAA,EACAC,cAAAA,GAAAA,EACAC,QAAAA,GAAAA,GAEF7mB,QAAO,WAIL,GAHA94C,KAAKgrH,uBACLhrH,KAAKwoD,OAAOxoD,KAAKkI,MAAM+iH,UAEnBjrH,KAAKkrH,QAAS,CAChB,IAAMC,EAAanrH,KAAKkI,MAAM+iH,SAASr/G,MAAMvQ,OAC7C2E,KAAKkI,MAAM+iH,SAASj7E,kBAAkBm7E,EAAYA,EACpD,EAEInrH,KAAKkrH,SAAWlrH,KAAKorH,YACvBprH,KAAKkI,MAAM+iH,SAASl7E,OAExB,EACA91C,KAAI,WACF,IACI8sB,EADW/mB,KAAK6jD,OAAOpnD,MAAMyqB,SACN,GAEnBtV,EAAc5R,KAAKyvC,OAAOj7B,QAAQ/G,aAAlCmE,UAER,GAAI5R,KAAKkrH,QAAS,CAChB,IAAMv9G,EAAc3N,KAAKyvC,OAAOtzC,MAAMa,MAAM2Q,YAC5CoZ,EA5FsB,SAAH,EAA+BpZ,GAAgB,IAAzC1Q,EAAI,EAAJA,KAAI,IAAEgE,WAAAA,OAAU,IAAG,KAAE,EAC9CoqH,GAAgB,OAAIpqH,GAExBoqH,EAActlH,QAAQ9I,GAEtBouH,EAAgB,IAAOA,EAAe,MACtCA,EAAgB,IAAOA,EAAe,CAAE1xH,GAAIgU,EAAYhU,KAExD,IAAMogB,EAAW,IAAIsxG,GAAe,SAACC,GACnC,MAAO,IAAP,OAAWA,EAAUpuH,YACvB,IAEA,OAAO6c,EAAS1e,OAAS,EAAI0e,EAAS7U,KAAK,KAAO,IAAM,EAC1D,CA+EmBqmH,CAAoB,CAAEtuH,KAAM+C,KAAKwrH,YAAavqH,WAAYjB,KAAKiB,YAAc0M,EAC5F,CAEA,IAAMyc,EAAUpqB,KAAKyrH,kBAAoB75G,GAAwC,WAA1B5R,KAAKyrH,iBACxDzrH,KAAKyrH,iBACLzrH,KAAKyvC,OAAOtzC,MAAMa,MAAM2Q,YAAY0jF,cAExC,EAA6DrxF,KAAKyvC,OAAOj7B,QAAQ/G,aAAxDo8C,EAAW,EAA5Bp4C,gBAA8BU,EAAkB,EAAlBA,mBAElCu5G,EAAe,CACjB/hE,YAAa3pD,KAAK2rH,SAAW,GAC7B/wG,OAAQmM,EACR/G,OAAQ7N,EACR62G,MAAO,GACPlnG,KAAM,CAAC,EACP8pG,kBAAmB,CAAC,EACpBpvG,WAAY4N,EACZy/B,YAAAA,GAGF,GAAI7pD,KAAK0V,SAAU,CACjB,IAAMm2G,EAAoB7rH,KAAK6rH,mBAAqBhiE,EACpD6hE,EAAe,CACb/hE,YAAa3pD,KAAK2rH,SAAW,GAC7B/wG,OAAQ5a,KAAK+mB,YAAc,GAC3B/G,KAAMhgB,KAAK8rH,qBAAuB35G,EAClC62G,MAAOhpH,KAAK+rH,aAAe,GAC3BjqG,KAAM9hB,KAAKgsH,YAAc,CAAC,EAC1BJ,kBAAmB5rH,KAAKisH,yBAA2B,CAAC,EACpDzvG,WAAYxc,KAAKksH,aAAe9hG,EAChCy/B,YAAagiE,EAEjB,CAEA,MAAO,CACL3C,UAAW,GACXiD,gBAAgB,EAChB5gH,MAAO,KACPiqE,SAAS,EACTjmD,YAAa,EACbzQ,UAAW4sG,EACX1V,MAAO,EACPoW,iBAAiB,EACjBC,aAAc,OACdC,gBAAiB,KACjBruE,QAAS,KACTsuE,gBAAgB,EAChBC,iBAAiB,EACjBvoD,eAAgB,GAEpB,EACA/8D,SAAU,GAAF,IACNlK,MAAK,WACH,OAAOgD,KAAKyvC,OAAOtzC,MAAMa,MAAMA,KACjC,EACAyvH,iBAAgB,WACd,OAAOzsH,KAAKyvC,OAAOtzC,MAAMa,MAAM2Q,YAAY0jF,aAC7C,EACAq7B,cAAa,WACX,OAAQ1sH,KAAKyN,aAAa8D,iBAC5B,EACAo7G,mBAAkB,WAChB,OAAOC,EAAAA,GAAAA,IAAU,CACfxyH,MAAO,GAAF,eACA4F,KAAKyvC,OAAOj7B,QAAQU,oBAAiB,OACrClV,KAAKyvC,OAAOtzC,MAAM4Q,SAAS0F,cAEhCnY,MAAO0F,KAAKyvC,QAEhB,EACAo9E,eAAc,WACZ,OAAOD,EAAAA,GAAAA,IAAU,CACfxyH,MAAO,GAAF,eACA4F,KAAKyvC,OAAOj7B,QAAQU,oBAAiB,OACrClV,KAAKyvC,OAAOtzC,MAAM4Q,SAAS0F,eAGpC,EACArY,MAAK,WACH,OAAO4F,KAAKyvC,OAAOj7B,QAAQU,mBAAqB,EAClD,EACAzC,YAAW,WACT,OAAOzS,KAAKyvC,OAAOtzC,MAAM4Q,SAAS0F,aAAe,EACnD,EACAq6G,aAAY,WACV,OAAO9sH,KAAK8e,UAAUlE,OAAOvf,MAC/B,EACA0xH,kBAAiB,WACf,OAAO/sH,KAAK8e,UAAU6qC,YAAYtuD,MACpC,EACA2xH,kBAAiB,WACf,OAAOhtH,KAAKyvC,OAAOtzC,MAAM4Q,SAASiC,SACpC,EACAi+G,qBAAoB,WAClB,OAAOjtH,KAAKgtH,kBAAoB,CAClC,EACAE,eAAc,WACZ,OAAOltH,KAAKgtH,mBAAqBhtH,KAAK8sH,aAAe9sH,KAAK+sH,kBAC5D,EACAI,kBAAiB,WACf,OAAOntH,KAAKitH,sBAAyBjtH,KAAKktH,eAAiB,CAC7D,EACA37G,kBAAiB,WACf,OAAOvR,KAAKyvC,OAAOtzC,MAAM4Q,SAASwE,iBACpC,EACA67G,kBAAiB,WACf,OAAOptH,KAAKyN,aAAa0B,sBAC3B,EACA2D,YAAW,WACT,OAAO9S,KAAKyvC,OAAOtzC,MAAM4Q,SAAS+F,aAAe,EACnD,EACAu6G,cAAa,WACX,OAAOrtH,KAAKyvC,OAAOtzC,MAAM4Q,SAASiG,MACpC,EACAc,eAAc,WACZ,OAAO9T,KAAKyvC,OAAOtzC,MAAM4Q,SAAS+G,gBAChC9T,KAAKyvC,OAAOtzC,MAAM4Q,SAASgH,WAAWC,aAAe,IAC/B,IAAtBhU,KAAKstH,YACT,EACAtsC,gBAAe,WACb,OAAOhhF,KAAKutH,eAAiBvtH,KAAKyvC,OAAOj7B,QAAQ/G,aAAauzE,eAChE,EACAwsC,iBAAgB,WACd,OAAOxtH,KAAKosH,iBACVpsH,KAAK8e,UAAUgD,MACf9hB,KAAK8e,UAAUgD,KAAKvW,KACxB,EACAkiH,YAAW,WACT,OAAQztH,KAAK0tH,mBAAqB1tH,KAAKi+C,SAAWj+C,KAAKusH,eACzD,EACAoB,YAAW,WACT,MAAwC,KAAjC3tH,KAAK8e,UAAUlE,OAAOzc,QAAiD,IAAhC6B,KAAK8e,UAAUkqG,MAAM3tH,MACrE,EACAuyH,uBAAsB,WACpB,OAAO5tH,KAAK8e,UAAUkqG,MAAM3tH,QAAU2E,KAAK6tH,SAC7C,EACAC,OAAM,WACJ,YAAgC,IAAlB9tH,KAAK0V,UAAqD,KAAzB1V,KAAK0V,SAASvX,MAC/D,IACGgxC,EAAAA,GAAAA,IAAW,CAAC,mBACZxnC,EAAAA,GAAAA,IAAS,CACViyD,aAAc,SAAAz9D,GAAK,OAAIA,EAAK,UAAWy9D,YAAY,KAGvDhhB,MAAO,CACL95B,UAAW,CACTivG,MAAM,EACN5/E,QAAO,WACLnuC,KAAKguH,eACP,IAGJluH,QAAS,CACPkuH,cAAa,WACXhuH,KAAKiuH,cACLjuH,KAAKgrH,sBACP,EACAkD,YAAW,WAAI,WACPpvG,EAAY9e,KAAK8e,UACvB9e,KAAK8e,UAAY,CACflE,OAAQ,GACR+uC,YAAa,GACbq/D,MAAO,GACPxsG,WAAYsC,EAAUtC,WACtBqtC,YAAa/qC,EAAU+qC,YACvB/nC,KAAM,CAAC,EACP8pG,kBAAmB,CAAC,GAEtB5rH,KAAKosH,iBAAkB,EACvBpsH,KAAKkI,MAAMimH,aAAenuH,KAAKkI,MAAMimH,YAAYrF,YACjD9oH,KAAKouH,gBACDpuH,KAAKquH,eACPruH,KAAK05C,WAAU,WACb,EAAKxxC,MAAM+iH,SAASl7E,OACtB,IAEF,IAAM03B,EAAKznE,KAAKs5C,IAAIC,cAAc,YAClCkuB,EAAG1kB,MAAM/gC,OAAS,OAClBylD,EAAG1kB,MAAM/gC,YAASzd,EAClBvE,KAAKuL,MAAQ,KACTvL,KAAKi+C,SAASj+C,KAAKsuH,eACzB,EACMtkE,WAAU,SAAEllD,EAAOga,GAAsB,qIAAF,GAAF,EAAH,+BAClC,EAAK02D,SAAY,EAAK+4C,kBAAiB,qDACvC,EAAKC,cAAe,CAAF,oDAClB,EAAKhC,gBAAiB,CAAF,gDAIvB,GAHG,EAAKiC,gBACP3pH,EAAM+yD,kBACN/yD,EAAMgD,mBAGJ,EAAKymH,oBAAsB,EAAKZ,cAAe,EAAKR,kBAAkB,uDAEtE,EAAKQ,YAAa,CAAF,gBACoC,OAAtD,EAAKpiH,MAAQ,EAAKysD,GAAG,kCAAiC,2BAII,GAAtDl2C,EAAO,EAAKsqG,gBAAkB,EAAKttG,UAAUgD,KAAO,CAAC,GACvD,EAAK0rG,iBAAkB,CAAF,gBACW,OAAlC,EAAKjiH,MAAQ,EAAKiiH,iBAAgB,2BAIjB,OAAnB,EAAKh4C,SAAU,EAAI,oBAGX,EAAKk5C,0BAAyB,gCAGhB,OAHgB,2BAEpC,EAAKnjH,MAAQ,EAAKysD,GAAG,uCACrB,EAAKwd,SAAU,EAAK,2BAIhBm5C,EAAiB,CACrB/zG,OAAQkE,EAAUlE,OAClB+uC,YAAa7qC,EAAU6qC,aAAe,KACtCntC,WAAYsC,EAAUtC,WACtBotC,UAAW9qC,EAAUkB,KACrB/F,MAAO6E,EAAUkqG,MACjB1uH,MAAO,EAAKm1C,OACZm6C,kBAAmB,EAAKshC,QACxBrhE,YAAa/qC,EAAU+qC,YACvB/nC,KAAAA,EACAmiD,eAAgB,EAAKA,iBAGH,EAAK2qD,YAAc,EAAKA,YAAcC,EAAAA,EAAAA,YAE9CF,GAAgBr1H,MAAK,SAACW,GAC3BA,EAAKsR,MAIR,EAAKA,MAAQtR,EAAKsR,OAHlB,EAAK2iH,cACL,EAAKnpH,MAAM,SAAU9K,IAIvB,EAAKu7E,SAAU,CACjB,IAAE,0DAvD2C,EAwD/C,EACA84C,cAAa,WAAI,WACf,GAAItuH,KAAK2tH,aAAqD,KAAtC3tH,KAAK8e,UAAU6qC,YAAYxrD,OAGjD,OAFA6B,KAAKi+C,QAAU,CAAE1yC,MAAOvL,KAAKg4D,GAAG,mCAChCh4D,KAAKusH,gBAAiB,GAGxB,IAAMztG,EAAY9e,KAAK8e,UACvB9e,KAAKusH,gBAAiB,EACtBsC,EAAAA,EAAAA,WAAwB,CACtBj0G,OAAQkE,EAAUlE,OAClB+uC,YAAa7qC,EAAU6qC,aAAe,KACtCntC,WAAYsC,EAAUtC,WACtBotC,UAAW9qC,EAAUkB,KACrB/F,MAAO,GACP3f,MAAO0F,KAAKyvC,OACZm6C,kBAAmB5pF,KAAKkrH,QACxBrhE,YAAa/qC,EAAU+qC,YACvB/nC,KAAM,CAAC,EACPm8B,SAAS,IACR3kD,MAAK,SAACW,GAGF,EAAKsyH,iBACLtyH,EAAKsR,MAGR,EAAK0yC,QAAU,CAAE1yC,MAAOtR,EAAKsR,OAF7B,EAAK0yC,QAAUhkD,EAInB,IAAE,OAAO,SAACsR,GACR,EAAK0yC,QAAU,CAAE1yC,MAAAA,EACnB,IAAE,SAAS,WACT,EAAKghH,gBAAiB,CACxB,GACF,EACAuC,sBAAuB,KAAS,WAAc9uH,KAAKsuH,eAAgB,GAAG,KACtEL,YAAW,WACJjuH,KAAKi+C,UACVj+C,KAAKusH,gBAAiB,EACtBvsH,KAAK8uH,wBACP,EACAC,aAAY,WACV/uH,KAAKi+C,QAAU,KACfj+C,KAAKusH,gBAAiB,CACxB,EACAyC,cAAa,WACPhvH,KAAKytH,YACPztH,KAAK+uH,eAEL/uH,KAAKsuH,eAET,EACAW,aAAY,SAAEC,GACZlvH,KAAK8e,UAAUkqG,MAAM3pH,KAAK6vH,GAC1BlvH,KAAK+E,MAAM,SAAU,CAAE29D,SAAS,GAClC,EACAysD,gBAAe,SAAED,GACf,IAAM7rH,EAAQrD,KAAK8e,UAAUkqG,MAAMz6F,QAAQ2gG,GAC3ClvH,KAAK8e,UAAUkqG,MAAMtuG,OAAOrX,EAAO,GACnCrD,KAAK+E,MAAM,SACb,EACAqqH,eAAc,SAAEF,EAAUG,GACxBrvH,KAAK8e,UAAU8sG,kBAAkBsD,EAASv1H,IAAM01H,CAClD,EACAC,iBAAgB,SAAEJ,GAChB,IAAQlG,EAAUhpH,KAAK8e,UAAfkqG,MACF3lH,EAAQrD,KAAK8e,UAAUkqG,MAAMz6F,QAAQ2gG,GAC3ClG,EAAMtuG,OAAOrX,EAAO,GACpB2lH,EAAMtuG,OAAOrX,EAAQ,EAAG,EAAG6rH,EAC7B,EACAK,iBAAgB,SAAEL,GAChB,IAAQlG,EAAUhpH,KAAK8e,UAAfkqG,MACF3lH,EAAQrD,KAAK8e,UAAUkqG,MAAMz6F,QAAQ2gG,GAC3ClG,EAAMtuG,OAAOrX,EAAO,GACpB2lH,EAAMtuG,OAAOrX,EAAQ,EAAG,EAAG6rH,EAC7B,EACAM,aAAY,SAAEC,EAAWC,GACvBA,EAAeA,GAAgB,CAAC,EAChC1vH,KAAKuL,MAAQvL,KAAKg4D,GAAG,qBAAuB,IAAMh4D,KAAKg4D,GAAG,gBAAkBy3D,EAAWC,EACzF,EACAC,sBAAqB,WACnB3vH,KAAKmsH,gBAAiB,CACxB,EACAyD,uBAAsB,WACpB5vH,KAAK+E,MAAM,UACX/E,KAAKmsH,gBAAiB,CACxB,EACAzsH,KAAI,SAAEwvH,GACJ,OAAOtsF,GAAAA,EAAAA,SAAyBssF,EAASrsF,SAC3C,EACAgtF,MAAK,SAAEt2H,GACLyG,KAAKiuH,cACLjuH,KAAKwoD,OAAOjvD,GACRA,EAAEu2H,cAAc9G,MAAM3tH,OAAS,IAEjC9B,EAAEuO,iBAIF9H,KAAKkpH,UAAY,CAAC3vH,EAAEu2H,cAAc9G,MAAM,IAE5C,EACA+G,SAAQ,SAAEx2H,GACJA,EAAEy2H,cAAgBz2H,EAAEy2H,aAAapzD,MAAM9/D,SAAS,WAClDvD,EAAEuO,iBACF9H,KAAKkpH,UAAY3vH,EAAEy2H,aAAahH,MAChCnsH,aAAamD,KAAKssH,iBAClBtsH,KAAKqsH,aAAe,OAExB,EACA4D,aAAY,SAAE12H,GAAG,WAIfsD,aAAamD,KAAKssH,iBAClBtsH,KAAKqsH,aAAe,OACpBrsH,KAAKssH,gBAAkB3vH,YAAW,kBAAO,EAAK0vH,aAAe,MAAM,GAAG,IACxE,EACA6D,SAAQ,SAAE32H,GACRA,EAAEy2H,aAAaG,WAAanwH,KAAK4tH,uBAAyB,OAAS,OAC/Dr0H,EAAEy2H,cAAgBz2H,EAAEy2H,aAAapzD,MAAM9/D,SAAS,WAClDD,aAAamD,KAAKssH,iBAClBtsH,KAAKqsH,aAAe,OAExB,EACA+D,kBAAiB,SAAE72H,GAAG,WACpByG,KAAK05C,WAAU,WACb,EAAK8O,OAAO,EAAKtgD,MAAM+iH,SACzB,GACF,EACAziE,OAAM,SAAEjvD,GACN,IAAMoH,EAASpH,EAAEoH,QAAUpH,EAC3B,GAAMoH,aAAkBP,OAAOqoD,QAA/B,CAGA,GAAqB,KAAjB9nD,EAAOiL,MAGT,OAFAjL,EAAOoiD,MAAM/gC,OAAS,UACtBhiB,KAAK+E,MAAM,UAIb,IAAMsrH,EAAUrwH,KAAKkI,MAAMmhB,KACrBinG,EAAYtwH,KAAKkI,MAAM+xG,OAKvBsW,EAAyBnwH,OAAO+3E,iBAAiBm4C,GAAW,kBAC5DE,EAAsB7F,GAAiB4F,GAEvC5W,EAAc35G,KAAKs5C,IAAIsgE,QAAQ,wBAC/B55G,KAAKs5C,IAAIsgE,QAAQ,0BACjBx5G,OAGA84F,EAAgB94F,OAAO+3E,iBAAiBx3E,GAAQ,eAChD8vH,EAAmBrwH,OAAO+3E,iBAAiBx3E,GAAQ,kBAGnD+vH,EAFa/F,GAAiBzxB,GACdyxB,GAAiB8F,GAGjCE,EAAYhG,GAAiBhqH,EAAOoiD,MAAM/gC,QAoB1CwwF,EAAgBmH,IAAgBv5G,OAClCu5G,EAAYr1D,QACZq1D,EAAYvxG,UACVwoH,EAAiBjX,IAAgBv5G,OACnCu5G,EAAY9wF,YACZ8wF,EAAYngE,aACVqgE,EAAuBrH,EAAgBoe,EAG7CjwH,EAAOoiD,MAAM/gC,OAAS,OACtB,IAAM6uG,EAAuBr1H,KAAKk/D,MAAM/5D,EAAO84C,aAAei3E,GAC1DI,EAAY9wH,KAAK+wH,UAAYv1H,KAAKyjC,IAAI4xF,EAAsB7wH,KAAK+wH,WAAaF,EAG9Er1H,KAAKq/D,IAAIi2D,EAAYH,IAAc,IACrCG,EAAYH,GAEdhwH,EAAOoiD,MAAM/gC,OAAS,GAAH,OAAM8uG,EAAS,MAClC9wH,KAAK+E,MAAM,SAAU+rH,GAKrB,IAAME,EAAqBV,EAAU92E,cAAeg/C,EAAAA,GAAAA,GAAW83B,EAAW3W,GAAa1/C,IAAMu2D,EAEvFS,EAAqBpX,EAAuBmX,EAC5CE,EAA2BN,EAAiBP,EAAQ72E,aACpD23E,EAAoBH,EAAqBnX,EAQzCuX,GAHuBH,GACrBC,GACAlxH,KAAKkI,MAAM+iH,SAAS1Q,iBAAmBv6G,KAAKkI,MAAM+iH,SAASr/G,MAAMvQ,OACX,EAApB81H,EACpCpX,EAAev+G,KAAKk0F,MAAM8iB,EAAgB4e,GAE5CzX,IAAgBv5G,OAClBu5G,EAAYK,OAAO,EAAGD,GAEtBJ,EAAYvxG,UAAY2xG,CA1FwB,CA4FpD,EACAsX,gBAAe,WACbrxH,KAAKkI,MAAM+iH,SAASl7E,QACpB/vC,KAAKkI,MAAM,eAAewwG,mBAC5B,EACA7oE,WAAU,WACR7vC,KAAKuL,MAAQ,IACf,EACA+lH,UAAS,SAAE90G,GACTxc,KAAK8e,UAAUtC,WAAaA,CAC9B,EACA+0G,eAAc,WACZvxH,KAAKosH,iBAAmBpsH,KAAKosH,eAC/B,EACAoF,QAAO,SAAE1vG,GACP9hB,KAAK8e,UAAUgD,KAAOA,CACxB,EACAssG,cAAa,WACPpuH,KAAKkI,MAAMupH,UACbzxH,KAAKkI,MAAMupH,SAAS9pF,OAExB,EACA+pF,mBAAkB,WAChB1xH,KAAKyvC,OAAOvzC,SAAS,YAAa,CAAER,KAAM,kBAAmBkQ,OAAO,GACtE,EACA2+E,oBAAmB,SAAE5wF,GACnB,IAAMylD,EAAcp/C,KAAK8e,UAAU8sG,kBAAkBjyH,GACrD,GAAKylD,GAAsC,KAAvBA,EAAYjhD,OAChC,OAAO0wH,EAAAA,EAAAA,oBAAiC,CAAEv0H,MAAO0F,KAAKyvC,OAAQ91C,GAAAA,EAAIylD,YAAAA,GACpE,EACAsvE,wBAAuB,WAAI,WACnBh1H,EAAMsG,KAAK8e,UAAUkqG,MAAMjwH,KAAI,SAAA8jE,GAAI,OAAIA,EAAKljE,EAAE,IACpD,OAAOP,QAAQgd,IAAI1c,EAAIX,KAAI,SAAAY,GAAE,OAAI,EAAK4wF,oBAAoB5wF,EAAG,IAC/D,EACAg4H,qBAAoB,SAAE/lH,GACpB5L,KAAKwsH,gBAAkB5gH,CACzB,EACAo/G,qBAAoB,WAClBhrH,KAAKikE,eAAiBx6C,KAAK8R,MAAMsL,UACnC,EACA+qF,eAAc,WACZ5xH,KAAKyvC,OAAOvzC,SAAS,uBAAwB,UAC/C,EACA+wF,cAAa,SAAE1tF,GACb,OAAO0tF,EAAAA,GAAAA,GAAc1tF,EACvB,IClnBJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,6RRNzDe,EAAAA,EAAAA,IAsVM,MAtVNC,EAsVM,EAlVJC,EAAAA,EAAAA,GAiVO,QAhVLqtE,aAAa,MACZ19B,SAAM,wBAAP,cAAe,cACd0hF,WAAQ,0CAAUnxH,EAAAA,UAAAA,EAAAA,SAAAA,MAAAA,EAAAA,UAAQ,kB,EAE3BF,EAAAA,EAAAA,GA4NM,MA5NNyvC,EA4NM,CA1NKvvC,EAAAA,OAAOvE,MAAMa,MAAM2Q,YAAY8nB,QAAkC,WAAxB/0B,EAAAA,UAAU8b,YAA4B9b,EAAAA,oB,iBAAkB,WAD1GuwC,EAAAA,EAAAA,IAaSyX,EAAAA,C,MAXPC,QAAQ,yCACRhrD,IAAI,IACJ2B,MAAM,oBACN8qB,MAAM,U,mBAEN,iBAKS,EALT5pB,EAAAA,EAAAA,GAKS,UAJPlB,MAAM,wBACLS,QAAK,8BAAEW,EAAAA,gBAAAA,EAAAA,eAAAA,MAAAA,EAAAA,UAAc,K,QAEnBA,EAAAA,GAAG,gDAAD,G,WAIAA,EAAAA,iBAA4C,WAAzBA,EAAAA,UAAU8b,WAexB9b,EAAAA,iBAA4C,aAAzBA,EAAAA,UAAU8b,YAe7B9b,EAAAA,iBAA4C,YAAzBA,EAAAA,UAAU8b,YAA4B9b,EAAAA,OAAOvE,MAAMa,MAAM2Q,YAAY8nB,SAAM,WAD5Gn1B,EAAAA,EAAAA,IAcI,IAdJkwC,EAcI,EAVFhwC,EAAAA,EAAAA,GAAyD,qBAAhDE,EAAAA,GAAG,qCAAD,IACXF,EAAAA,EAAAA,GAQI,KAPFlB,MAAM,sCACLwN,MAAOpM,EAAAA,GAAG,oCACXsiD,KAAK,SACL8uE,SAAS,IACR/xH,QAAK,yCAAUW,EAAAA,oBAAkB,kB,EAElCkwC,EAAAA,EAAAA,IAAuBQ,EAAAA,CAAfzoC,KAAK,WAAO,QAIc,WAAzBjI,EAAAA,UAAU8b,aAAU,WADjClc,EAAAA,EAAAA,IAMI,IANJoxC,EAMI,CAFUhxC,EAAAA,gBAAa,WAAzBJ,EAAAA,EAAAA,IAAsF,kBAAxDI,EAAAA,GAAG,6CAAD,iBAChCJ,EAAAA,EAAAA,IAAiE,kBAAjDI,EAAAA,GAAG,sCAAD,yBAlCiC,WADrDJ,EAAAA,EAAAA,IAcI,IAdJgwC,EAcI,EAVF9vC,EAAAA,EAAAA,GAA0D,qBAAjDE,EAAAA,GAAG,sCAAD,IACXF,EAAAA,EAAAA,GAQI,KAPFlB,MAAM,sCACLwN,MAAOpM,EAAAA,GAAG,oCACXsiD,KAAK,SACL8uE,SAAS,IACR/xH,QAAK,yCAAUW,EAAAA,oBAAkB,kB,EAElCkwC,EAAAA,EAAAA,IAAuBQ,EAAAA,CAAfzoC,KAAK,WAAO,UA1BwB,WADhDrI,EAAAA,EAAAA,IAcI,IAdJ4vC,EAcI,EAVF1vC,EAAAA,EAAAA,GAAwD,qBAA/CE,EAAAA,GAAG,oCAAD,IACXF,EAAAA,EAAAA,GAQI,KAPFlB,MAAM,sCACLwN,MAAOpM,EAAAA,GAAG,oCACXsiD,KAAK,SACL8uE,SAAS,IACR/xH,QAAK,yCAAUW,EAAAA,oBAAkB,kB,EAElCkwC,EAAAA,EAAAA,IAAuBQ,EAAAA,CAAfzoC,KAAK,WAAO,QAyChBjI,EAAAA,SAAM,WADdJ,EAAAA,EAAAA,IAMM,MANNywC,EAMM,EAFJvwC,EAAAA,EAAAA,GAAkD,kBAA5CE,EAAAA,GAAG,oCAAD,IACRF,EAAAA,EAAAA,GAAuD,kBAAjDE,EAAAA,GAAG,yCAAD,sBAGDA,EAAAA,gBAWiB,iBAXH,WADvBJ,EAAAA,EAAAA,IAqBM,MArBN0wC,EAqBM,EAjBJxwC,EAAAA,EAAAA,GAMI,KALFlB,MAAM,uBACLS,QAAK,wCAAeW,EAAAA,eAAAA,EAAAA,cAAAA,MAAAA,EAAAA,UAAa,yB,mBAE/BA,EAAAA,GAAG,wBAAyB,IAC/B,YAAiE0wC,EAAAA,CAAxDzoC,KAAMjI,EAAAA,YAAc,eAAiB,iB,6BAEhDF,EAAAA,EAAAA,GASM,MATNupE,EASM,EALJn5B,EAAAA,EAAAA,IAIEQ,EAAAA,CAHA9xC,MAAM,iBACNmiD,KAAA,GACA94C,KAAK,kB,YANCjI,EAAAA,qBAWJA,EAAAA,cAAW,WADnBJ,EAAAA,EAAAA,IAqBM,MArBN4wC,EAqBM,CAhBKxwC,EAAAA,QAMIA,EAAAA,QAAQ6K,QAAK,WAD1BjL,EAAAA,EAAAA,IAKM,MALNquE,GAKM,QADDjuE,EAAAA,QAAQ6K,OAAK,iBAElB0lC,EAAAA,EAAAA,IAIEmwB,EAAAA,C,MAFCxmD,OAAQla,EAAAA,QACTpB,MAAM,kB,sBAdQ,WADhBgB,EAAAA,EAAAA,IAKM,MALN6wC,GAKM,QADDzwC,EAAAA,GAAG,oBAAD,Q,eAeAA,EAAAA,iBAAmBA,EAAAA,UAAUipD,cAAejpD,EAAAA,mB,iBAAiB,WADtEuwC,EAAAA,EAAAA,IAkBa8gF,EAAAA,C,iBAhBFrxH,EAAAA,UAAUipD,Y,qDAAVjpD,EAAAA,UAAUipD,YAAW,IAC9B,yBACC6rD,QAAS90G,EAAAA,eACVpB,MAAM,gB,CAEKO,SAAOk1G,EAAAA,EAAAA,KAChB,SADkBid,GAAU,iBAC5BxxH,EAAAA,EAAAA,GAQC,SARD8zC,EAAAA,EAAAA,IAQC,C,qDAPU5zC,EAAAA,UAAUipD,YAAW,IAC9BjqD,KAAK,OACJ6wC,YAAa7vC,EAAAA,GAAG,+BAChB+H,SAAU/H,EAAAA,UAAYA,EAAAA,mBACfA,EAAAA,cAAcsxH,GAAU,CAChCrgF,KAAK,IACLryC,MAAM,sB,kBANGoB,EAAAA,UAAUipD,e,uCAUzB/Y,EAAAA,EAAAA,IAyCamhF,EAAAA,CAxCXrhF,IAAI,c,WACKhwC,EAAAA,UAAUka,O,uDAAVla,EAAAA,UAAUka,OAAM,IACxB46F,QAAS90G,EAAAA,mBACTygE,UAAWzgE,EAAAA,qBACZpB,MAAM,0BACN,yBACA,uBACC,wBAAuBoB,EAAAA,cACxB,2BACCmoD,QAAOnoD,EAAAA,kBACP6wG,kBAAkB7wG,EAAAA,aAClB8wG,sBAAuB9wG,EAAAA,aACvBuxH,QAAOvxH,EAAAA,sB,CAEGb,SAAOk1G,EAAAA,EAAAA,KAChB,SADkBid,GAAU,iBAC5BxxH,EAAAA,EAAAA,GAgBE,YAhBF8zC,EAAAA,EAAAA,IAgBE,CAfA5D,IAAI,W,qDACKhwC,EAAAA,UAAUka,OAAM,IACxB21B,YAAa7vC,EAAAA,aAAeA,EAAAA,GAAG,uBAChCk5C,KAAK,IACLm6B,KAAK,IACJtrE,SAAU/H,EAAAA,UAAYA,EAAAA,kBACvBpB,MAAK,CAAC,iBAAgB,qBACSoB,EAAAA,aACvBA,EAAAA,cAAcsxH,GAAU,CAC/B3kB,UAAO,4C,OAAc3sG,EAAAA,eAAiBA,EAAAA,WAAWstG,EAAQttG,EAAAA,UAAS,qE,OAC9CA,EAAAA,WAAWstG,EAAQttG,EAAAA,UAAS,sE,OAC3BA,EAAAA,eAAiBA,EAAAA,WAAWstG,EAAQttG,EAAAA,UAAS,0BAClEmoD,QAAK,gCAAEnoD,EAAAA,QAAAA,EAAAA,OAAAA,MAAAA,EAAAA,UAAM,GACbwxH,oBAAiB,gCAAExxH,EAAAA,QAAAA,EAAAA,OAAAA,MAAAA,EAAAA,UAAM,GACzBq3G,QAAK,gCAAEr3G,EAAAA,OAAAA,EAAAA,MAAAA,MAAAA,EAAAA,UAAK,K,kBAbJA,EAAAA,UAAUka,UAgBbla,EAAAA,uBAAoB,WAD5BJ,EAAAA,EAAAA,IAMI,K,MAJFhB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,0BAAyB,CAAAnpC,MACd7K,EAAAA,uB,QAEdA,EAAAA,gBAAc,oB,yIAKdA,EAAAA,sBAoC2C,iBApCvB,WAD7BJ,EAAAA,EAAAA,IAwCM,MAxCN2pE,EAwCM,CAnCKvpE,EAAAA,2B,iBAAyB,WADlCuwC,EAAAA,EAAAA,IAOEkhF,EAAAA,C,MALC,WAAUzxH,EAAAA,cACV,eAAcA,EAAAA,iBACd,iBAAgBA,EAAAA,iBAChB,gBAAeA,EAAAA,UAAU8b,WACzB,kBAAiB9b,EAAAA,W,wFAIZA,EAAAA,YAAYrF,OAAS,IAAH,WAD1BiF,EAAAA,EAAAA,IAkBM,MAlBN4pE,EAkBM,EAdJt5B,EAAAA,EAAAA,IAaSkuE,EAAAA,CAZPnlH,GAAG,oB,WACM+G,EAAAA,UAAUmpD,Y,uDAAVnpD,EAAAA,UAAUmpD,YAAW,IAC9BvqD,MAAM,eACLlB,MAAK,cAAkBsC,EAAAA,GAAG,wC,mBAGzB,iBAAiC,gBADnCJ,EAAAA,EAAAA,IAMS8vC,EAAAA,GAAAA,MAAAA,EAAAA,EAAAA,IALc1vC,EAAAA,aAAW,SAAzB0xH,G,kBADT9xH,EAAAA,EAAAA,IAMS,UAJN+G,IAAK+qH,EACLxmH,MAAOwmH,I,QAEL1xH,EAAAA,GAAG,6BAAD,OAA8B0xH,EAAU,Y,gEAKpB,IAAvB1xH,EAAAA,YAAYrF,QAAmC,eAAnBqF,EAAAA,YAAY,KAAD,WAD/CJ,EAAAA,EAAAA,IAOM,MAPN8sE,EAOM,EAHJ5sE,EAAAA,EAAAA,GAEO,OAFPmiH,GAEO,QADFjiH,EAAAA,GAAG,6BAAD,OAA8BA,EAAAA,YAAY,GAAD,mCAM9CA,EAAAA,iBAAc,WADtBuwC,EAAAA,EAAAA,IAKEohF,EAAAA,C,MAHA3hF,IAAI,WACHtE,QAAS1rC,EAAAA,gBACT4xH,aAAa5xH,EAAAA,S,qDAEhBF,EAAAA,EAAAA,GAwDM,MAxDN2pE,EAwDM,EApDJ3pE,EAAAA,EAAAA,GA2BM,MA3BN6pE,EA2BM,EA1BJz5B,EAAAA,EAAAA,IASE2hF,EAAAA,CARA7hF,IAAI,cACJpxC,MAAM,oBACL,aAAYoB,EAAAA,UACZ+H,SAAU/H,EAAAA,uBACV8xH,YAAW9xH,EAAAA,sBACXw0G,WAAUx0G,EAAAA,aACVy0G,eAAez0G,EAAAA,aACf+xH,cAAc/xH,EAAAA,wB,+FAEjBF,EAAAA,EAAAA,GAMS,UALPlB,MAAM,6BACLwN,MAAOpM,EAAAA,GAAG,mBACVX,QAAK,gCAAEW,EAAAA,iBAAAA,EAAAA,gBAAAA,MAAAA,EAAAA,UAAe,I,EAEvBkwC,EAAAA,EAAAA,IAA4BQ,EAAAA,CAApBzoC,KAAK,gBAAY,KAGnBjI,EAAAA,iBAAc,WADtBJ,EAAAA,EAAAA,IAQS,U,MANPhB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,4BAA2B,CAAA4zB,SACb5nE,EAAAA,mBACnBoM,MAAOpM,EAAAA,GAAG,kBACVX,QAAK,gCAAEW,EAAAA,gBAAAA,EAAAA,eAAAA,MAAAA,EAAAA,UAAc,I,EAEtBkwC,EAAAA,EAAAA,IAAwBQ,EAAAA,CAAhBzoC,KAAK,YAAQ,yBAIjBjI,EAAAA,UAAO,WADfJ,EAAAA,EAAAA,IAMS,SANToyH,GAMS,QADJhyH,EAAAA,GAAG,wBAAD,IAGMA,EAAAA,oBAAiB,WAD9BJ,EAAAA,EAAAA,IAMS,SANTgtE,GAMS,QADJ5sE,EAAAA,GAAG,qBAAD,iBAGPJ,EAAAA,EAAAA,IAQS,U,MANNmI,SAAU/H,EAAAA,gBAAkBA,EAAAA,cAC7BpB,MAAM,qBACLujD,aAAU,2CAAeniD,EAAAA,WAAWstG,EAAQttG,EAAAA,UAAS,wBACrDX,QAAK,2CAAeW,EAAAA,WAAWstG,EAAQttG,EAAAA,UAAS,0B,QAE9CA,EAAAA,GAAG,qBAAD,uBAGTF,EAAAA,EAAAA,GAQM,OANHuiD,OAAK,SAAA4vE,UAAgC,SAAjBjyH,EAAAA,aAA0B,gBAAkB,kBACjEpB,MAAM,iBACLszH,YAAS,gCAAElyH,EAAAA,cAAAA,EAAAA,aAAAA,MAAAA,EAAAA,UAAY,GACvBmyH,OAAI,0CAAOnyH,EAAAA,UAAAA,EAAAA,SAAAA,MAAAA,EAAAA,UAAQ,e,EAEpBkwC,EAAAA,EAAAA,IAA4DQ,EAAAA,CAAnDzoC,KAAMjI,EAAAA,uBAAyB,MAAQ,U,6BANvB,SAAjBA,EAAAA,gBASFA,EAAAA,QAAK,WADbJ,EAAAA,EAAAA,IAcM,MAdNitE,EAcM,UAXL,YACQ,QAAG7sE,EAAAA,OAAQ,IAClB,WAQS,UAPPpB,MAAM,kBACLS,QAAK,gCAAEW,EAAAA,YAAAA,EAAAA,WAAAA,MAAAA,EAAAA,UAAU,I,EAElBkwC,EAAAA,EAAAA,IAGEQ,EAAAA,CAFA9xC,MAAM,8BACNqJ,KAAK,gB,eAKHjI,EAAAA,UAAUsoH,OAAStoH,EAAAA,UAAUsoH,MAAM3tH,OAAS,IAAH,WADjD41C,EAAAA,EAAAA,IAeE6hF,EAAAA,C,MAbAxzH,MAAM,cACL89G,MAAM,EACNp9F,MAAM,EACNvF,YAAa/Z,EAAAA,UAAUsoH,MACvB+J,aAAcryH,EAAAA,UAAUkrH,kBACxB,YAAS,kBAAQlrH,EAAAA,OAAOxE,SAAS,WAAYwE,EAAAA,UAAUsoH,MAAK,EAC5DrL,UAAU,EACV,kBAAiBj9G,EAAAA,eACjB,oBAAmBA,EAAAA,gBACnB,sBAAqBA,EAAAA,UAAUsoH,MAAM3tH,OAAS,GAAKqF,EAAAA,iBACnD,sBAAqBA,EAAAA,UAAUsoH,MAAM3tH,OAAS,GAAKqF,EAAAA,iBACnD6sG,OAAI,iCAAE7sG,EAAAA,MAAM,YAAaA,EAAAA,WAAW/G,GAAE,GACtC6zG,QAAK,iCAAE9sG,EAAAA,MAAM,aAAcA,EAAAA,WAAW/G,GAAE,I,sJAGnC+G,EAAAA,UAAUsoH,MAAM3tH,OAAS,IAAMqF,EAAAA,6BAA0B,WADjEJ,EAAAA,EAAAA,IAOM,MAPN0yH,EAOM,EAHJpiF,EAAAA,EAAAA,IAEWkY,EAAAA,C,WAFQpoD,EAAAA,UAAUsf,K,uDAAVtf,EAAAA,UAAUsf,KAAI,K,mBAC/B,iBAA6C,mBAA1Ctf,EAAAA,GAAG,sCAAD,G,0ISpUf,SACEnB,MAAO,CACLkJ,SAAU,CACR/I,KAAMyB,SAER68C,MAAO,CACLt+C,KAAMkH,SACN/G,QAAS,kBAAMzG,QAAQC,SAAQ,IAGnCY,KAAG,WACD,MAAO,CACLg5H,UAAU,EAEd,EACAnzH,QAAS,CACPC,QAAM,WAAK,WACTC,KAAKizH,UAAW,EAChBjzH,KAAKg+C,QAAQ1kD,MAAK,WAAQ,EAAK25H,UAAW,CAAM,GAClD,IC3BJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,wCDJzD3yH,EAAAA,EAAAA,IAUS,UATNmI,SAAUyqH,EAAAA,UAAY1/E,EAAAA,SACtBzzC,QAAK,8BAAEu/D,EAAAA,SAAAA,EAAAA,QAAAA,MAAAA,EAAAA,UAAO,I,CAEC4zD,EAAAA,UAAYxyH,EAAAA,OAAOuyH,UACjCv/E,EAAAA,EAAAA,IAAwBhzC,EAAAA,OAAAA,WAAAA,CAAA2G,IAAAA,KAGxBqsC,EAAAA,EAAAA,IAAQhzC,EAAAA,OAAAA,UAAAA,CAAA2G,IAAAA,KAAA,I,gFERP/H,MAAM,iB,4BAUPkB,EAAAA,EAAAA,GAIC,SAHCd,KAAK,SACLhE,KAAK,UACLkQ,MAAM,I,YAGNoyC,MAAM,SACN1+C,MAAM,gCClBd,SACEC,MAAO,CAAC,QACR2H,SAAU,CACRisH,aAAY,WAEV,IAAMC,EAAY,IAAI99G,IAAItV,KAAK/C,KAAKmH,uBACpC,MAAO,GAAP,OAAUgvH,EAAUC,SAAQ,aAAKD,EAAUE,KAAI,gBACjD,ICEJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,wCFNzDhzH,EAAAA,EAAAA,IAsBM,MAtBNC,EAsBM,EArBJC,EAAAA,EAAAA,GAoBO,QAnBLmpB,OAAO,OACNnM,OAAQ9c,EAAAA,c,EAETF,EAAAA,EAAAA,GAIC,SAHCd,KAAK,SACLhE,KAAK,WACJkQ,MAAOlL,EAAAA,KAAKxD,a,UAEfmzC,GAKA7vC,EAAAA,EAAAA,GAKS,SALT8vC,GAKS,QADJ5vC,EAAAA,GAAG,4BAAD,U,sFGjBTpB,MAAM,iB,qECKVq6B,EAAAA,GAAAA,IACE+b,EAAAA,IACAF,EAAAA,IACA+9E,EAAAA,IACAC,EAAAA,KAwDF,QArDsB,CACpBj0H,MAAO,CACL,UACA,cACA,gBACA,eACA,iBAEFtF,KAAI,WACF,MAAO,CACLw5H,aAAczzH,KAAK0zH,aAEvB,EACAxsH,SAAU,CACRysH,YAAW,WACT,QAAQ3zH,KAAK4zH,YAAe5zH,KAAK6zH,cAAiB7zH,KAAK8zH,aAAgB9zH,KAAK+zH,WAC9E,EACAH,WAAU,WACR,MAA8B,WAAvB5zH,KAAKg0H,eAA8Bh0H,KAAKi0H,WAAW,SAC5D,EACAJ,aAAY,WACV,MAA8B,WAAvB7zH,KAAKg0H,eAA8Bh0H,KAAKi0H,WAAW,WAC5D,EACAH,YAAW,WACT,MAA8B,WAAvB9zH,KAAKg0H,eAA8Bh0H,KAAKi0H,WAAW,UAC5D,EACAF,WAAU,WACR,OAAO/zH,KAAKi0H,WAAW,SACzB,EACAC,IAAG,WACD,MAAO,CACLl6G,OAAQ,CAAEsuD,SAAgC,WAAtBtoE,KAAKyzH,cACzBU,SAAU,CAAE7rD,SAAgC,aAAtBtoE,KAAKyzH,cAC3BW,QAAS,CAAE9rD,SAAgC,YAAtBtoE,KAAKyzH,cAC1BY,OAAQ,CAAE/rD,SAAgC,WAAtBtoE,KAAKyzH,cAE7B,GAEF3zH,QAAS,CACPm0H,WAAU,SAAE7pG,GACV,OAAOpqB,KAAKs0H,SACVt0H,KAAKyzH,eAAiBrpG,GACtBpqB,KAAKg0H,gBAAkB5pG,GACvBpqB,KAAKu0H,cAAgBnqG,GACX,WAAVA,CACJ,EACAknG,UAAS,SAAElnG,GACTpqB,KAAKyzH,aAAerpG,EACpBpqB,KAAKw0H,eAAiBx0H,KAAKw0H,cAAcpqG,EAC3C,ICvDJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,sDFLhD1pB,EAAAA,a,iBAAW,WADpBJ,EAAAA,EAAAA,IA2DM,MA3DNC,EA2DM,CAtDIG,EAAAA,aAAU,WADlBJ,EAAAA,EAAAA,IAYS,U,MAVPhB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,wBACEh0C,EAAAA,IAAI2zH,SACXvnH,MAAOpM,EAAAA,GAAG,4BACXhB,KAAK,SACJK,QAAK,+BAAEW,EAAAA,UAAU,SAAD,I,EAEjBkwC,EAAAA,EAAAA,IAGEQ,EAAAA,CAFAzoC,KAAK,WACLrJ,MAAM,iC,gCAED,KACT,QAAG,KAAM,KAEDoB,EAAAA,cAAW,WADnBJ,EAAAA,EAAAA,IAYS,U,MAVPhB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,wBACEh0C,EAAAA,IAAG,UACVoM,MAAOpM,EAAAA,GAAG,6BACXhB,KAAK,SACJK,QAAK,+BAAEW,EAAAA,UAAU,UAAD,I,EAEjBkwC,EAAAA,EAAAA,IAGEQ,EAAAA,CAFAzoC,KAAK,OACLrJ,MAAM,iC,gCAED,KACT,QAAG,KAAM,KAEDoB,EAAAA,eAAY,WADpBJ,EAAAA,EAAAA,IAYS,U,MAVPhB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,wBACEh0C,EAAAA,IAAIyzH,WACXrnH,MAAOpM,EAAAA,GAAG,8BACXhB,KAAK,SACJK,QAAK,+BAAEW,EAAAA,UAAU,WAAD,I,EAEjBkwC,EAAAA,EAAAA,IAGEQ,EAAAA,CAFAzoC,KAAK,YACLrJ,MAAM,iC,gCAED,KACT,QAAG,KAAM,KAEDoB,EAAAA,aAAU,WADlBJ,EAAAA,EAAAA,IAYS,U,MAVPhB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,wBACEh0C,EAAAA,IAAG,SACVoM,MAAOpM,EAAAA,GAAG,4BACXhB,KAAK,SACJK,QAAK,+BAAEW,EAAAA,UAAU,SAAD,I,EAEjBkwC,EAAAA,EAAAA,IAGEQ,EAAAA,CAFAzoC,KAAK,QACLrJ,MAAM,iC,kJGpDdq6B,EAAAA,GAAAA,IACEuc,EAAAA,KAGF,SACEspB,MAAO,CAAC,qBACRjgE,MAAO,CACL,aACA,WACA,WACA,OACA,UCPJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,iECNzDe,EAAAA,EAAAA,IAiBQ,SAhBNhB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,eAAc,CAAAjsC,SACV/H,EAAAA,SAAQ8pH,SAAE9pH,EAAAA,a,EAEpBF,EAAAA,EAAAA,GAOS,UAPT8zC,EAAAA,EAAAA,IAOS,CANN7rC,SAAU/H,EAAAA,SACVkL,MAAOlL,EAAAA,YACAA,EAAAA,MAAK,CACZyxE,SAAM,+BAAEzxE,EAAAA,MAAM,oBAAqBstG,EAAOrtG,OAAOiL,MAAK,K,EAEvD8nC,EAAAA,EAAAA,IAAQhzC,EAAAA,OAAAA,YAAAA,GAAAA,IAAAA,EAAAA,EAAAA,IACD,KACT,QAAG,KAAM,MACT,QAGE0wC,EAAAA,CAFA9xC,MAAM,mBACNqJ,KAAK,kB,iHCPLrJ,MAAM,e,SAWDA,MAAM,0B,GACFA,MAAM,mB,SAaXA,MAAM,e,SAMNA,MAAM,e,qBAwBRA,MAAM,O,GAMAA,MAAM,S,GAePA,MAAM,oB,qCAsCTA,MAAM,a,cAoBHA,MAAM,c,SAGPA,MAAM,kB,GAEDA,MAAM,oB,GACJA,MAAM,gB,qCA+BLA,MAAM,iB,yEAyEZA,MAAM,qB,SAIJA,MAAM,iC,oBAqBAA,MAAM,iB,SASVA,MAAM,uB,GAEAA,MAAM,iB,SAcdA,MAAM,e,oBAQFA,MAAM,iB,SAoBZA,MAAM,sB,SAqCRA,MAAM,W,qBAYJA,MAAM,S,uBAqBNA,MAAM,uB,GAEDA,MAAM,S,GAKFA,MAAM,c,GACNA,MAAM,c,GACJA,MAAM,e,GAUXA,MAAM,c,GAEHA,MAAM,c,GACJA,MAAM,e,GAKVA,MAAM,c,UAcfA,MAAM,kB,UA8BVA,MAAM,c,IAEDA,MAAM,a,IAONA,MAAM,c,IACJA,MAAM,gB,UAabA,MAAM,+B,6DC9ePA,MAAM,e,2CAkDPA,MAAM,kB,uBC5CZq6B,GAAAA,GAAAA,IACE86F,GAAAA,IACArL,GAAAA,IACAxvF,GAAAA,KAgBF,SAboB,CAClBl+B,KAAM,cACN6D,MAAO,CAAC,SAAU,YAClB2H,SAAU,CACRwf,SAAQ,WACN,QAAS1mB,KAAKyvC,OAAOtzC,MAAMa,MAAM2Q,WACnC,EACA6H,sBAAqB,WACnB,OAAOxV,KAAKyvC,OAAOj7B,QAAQgB,sBAAsB,CAAEE,SAAU1V,KAAK4a,OAAOjhB,IAC3E,I,gBCfJ,MAEA,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,wFFNzD2G,EAAAA,EAAAA,IAsDM,MAtDNC,GAsDM,CApDIG,EAAAA,WAAQ,WADhBJ,EAAAA,EAAAA,IAyBS,U,MAvBPhB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,8BAA6B,WACfh0C,EAAAA,YACnBoM,MAAOpM,EAAAA,GAAG,kBACVX,QAAK,yCAAUW,EAAAA,MAAM,SAAD,kB,EAErBkwC,EAAAA,EAAAA,IAiBWyV,EAAAA,CAjBD/mD,MAAM,wBAAsB,C,kBACpC,iBAGE,EAHFsxC,EAAAA,EAAAA,IAGEQ,EAAAA,CAFA9xC,MAAM,eACNqJ,KAAK,UAGEjI,EAAAA,W,WAKTuwC,EAAAA,EAAAA,IAKEG,EAAAA,C,MAHA9xC,MAAM,eACNq1C,UAAU,yBACVhsC,KAAK,aATU,WADjBsoC,EAAAA,EAAAA,IAKEG,EAAAA,C,MAHA9xC,MAAM,eACNq1C,UAAU,yBACVhsC,KAAK,U,gCAUXrI,EAAAA,EAAAA,IAoBI,K,MAlBFhB,MAAM,8BACNqB,OAAO,SACPqiD,KAAK,SACJviD,KAAMC,EAAAA,sBACNoM,MAAOpM,EAAAA,GAAG,mB,EAEXkwC,EAAAA,EAAAA,IAWWyV,EAAAA,CAXD/mD,MAAM,wBAAsB,C,kBACpC,iBAGE,EAHFsxC,EAAAA,EAAAA,IAGEQ,EAAAA,CAFA9xC,MAAM,eACNqJ,KAAK,UAGEjI,EAAAA,U,iBAAQ,WADjBuwC,EAAAA,EAAAA,IAKEG,EAAAA,C,MAHA9xC,MAAM,eACNq1C,UAAU,yBACVhsC,KAAK,U,kBAKHjI,EAAAA,OAAO6yF,cAAgB,IAAH,WAD5BjzF,EAAAA,EAAAA,IAKO,OALP+vC,IAKO,QADF3vC,EAAAA,OAAO6yF,eAAa,qB,aGpDtBj0F,MAAM,kB,2CAwDPA,MAAM,kB,+lBC7CZq6B,GAAAA,GAAAA,IACE8nF,GAAAA,IACAiT,GAAAA,IACAtL,GAAAA,IACAzkE,GAAAA,IACAwT,GAAAA,KA+BF,SA5BuB,CACrB54D,MAAO,CAAC,SAAU,YAClBtF,KAAI,WACF,MAAO,CACL06H,UAAU,EAEd,EACA70H,QAAS,CACPid,SAAQ,WAAI,WACL/c,KAAK4a,OAAOuC,UAGfnd,KAAKyvC,OAAOvzC,SAAS,aAAc,CAAEvC,GAAIqG,KAAK4a,OAAOjhB,KAFrDqG,KAAKyvC,OAAOvzC,SAAS,WAAY,CAAEvC,GAAIqG,KAAK4a,OAAOjhB,KAIrDqG,KAAK20H,UAAW,EAChBh4H,YAAW,WACT,EAAKg4H,UAAW,CAClB,GAAG,IACL,GAEFztH,SAAU,GAAF,OACHioC,EAAAA,GAAAA,IAAW,CAAC,kBAAgB,IAC/B35B,sBAAqB,WACnB,OAAOxV,KAAKyvC,OAAOj7B,QAAQgB,sBAAsB,CAAEE,SAAU1V,KAAK4a,OAAOjhB,IAC3E,KCnCJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,wFFNzD2G,EAAAA,EAAAA,IA4DM,MA5DNC,GA4DM,CA1DIG,EAAAA,WAAQ,WADhBJ,EAAAA,EAAAA,IAgCS,U,MA9BPhB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,8BACEh0C,EAAAA,OAAOyc,WAAa,eAC3BrQ,MAAOpM,EAAAA,GAAG,qBACVX,QAAK,yCAAUW,EAAAA,UAAQ,kB,EAExBkwC,EAAAA,EAAAA,IAwBWyV,EAAAA,CAxBD/mD,MAAM,qCAAmC,C,kBACjD,iBAIE,EAJFsxC,EAAAA,EAAAA,IAIEQ,EAAAA,CAHA9xC,MAAM,eACLqJ,KAAI,CAAGjI,EAAAA,OAAOyc,UAAY,MAAQ,MAAO,QACzCskC,KAAM/gD,EAAAA,U,wBAGDA,EAAAA,OAAOyc,YAAS,WADxB8zB,EAAAA,EAAAA,IAKEG,EAAAA,C,MAHA9xC,MAAM,gBACNq1C,UAAU,yBACVhsC,KAAK,Y,eAGEjI,EAAAA,OAAOyc,Y,WAKhB8zB,EAAAA,EAAAA,IAKEG,EAAAA,C,MAHA9xC,MAAM,eACNq1C,UAAU,yBACVhsC,KAAK,aATkB,WADzBsoC,EAAAA,EAAAA,IAKEG,EAAAA,C,MAHA9xC,MAAM,eACNq1C,UAAU,yBACVhsC,KAAK,U,gCAUXrI,EAAAA,EAAAA,IAmBI,K,MAjBFhB,MAAM,8BACNqB,OAAO,SACPqiD,KAAK,SACJl2C,MAAOpM,EAAAA,GAAG,qBACVD,KAAMC,EAAAA,uB,EAEPkwC,EAAAA,EAAAA,IAUWyV,EAAAA,CAVD/mD,MAAM,qCAAmC,C,kBACjD,iBAGE,EAHFsxC,EAAAA,EAAAA,IAGEQ,EAAAA,CAFA9xC,MAAM,eACLqJ,KAAM,CAAC,MAAO,WAEjBioC,EAAAA,EAAAA,IAIEQ,EAAAA,CAHA9xC,MAAM,eACNq1C,UAAU,yBACVhsC,KAAK,S,mBAKFjI,EAAAA,aAAayP,eAAiBzP,EAAAA,OAAO0c,SAAW,IAAH,WADtD9c,EAAAA,EAAAA,IAKO,OALP+vC,IAKO,QADF3vC,EAAAA,OAAO0c,UAAQ,qB,aG9Cb9d,MAAM,0B,uBAQNA,MAAM,mB,2BAUTkB,EAAAA,EAAAA,GAAuC,OAAlClB,MAAM,2BAAyB,S,2BAUpCkB,EAAAA,EAAAA,GAAqC,OAAhClB,MAAM,yBAAuB,S,klCClC1Cq6B,GAAAA,GAAAA,IACEyvF,GAAAA,IACAxvF,GAAAA,IACAu1E,GAAAA,KAmHF,SAhHoB,CAClB5vG,MAAO,CAAC,UACRtF,KAAI,WACF,MAAO,CACL26H,WAAY,GACZjiE,UAAU,EAEd,EACA9xD,WAAY,CACV0wD,QAAAA,GAAAA,SAEFzxD,QAAS,CACP+0H,YAAW,SAAE/vH,EAAO1K,EAAO0+B,GACzB,IAAMg8F,EAAmB90H,KAAK4a,OAAOuG,gBAAgBL,MAAK,SAAAc,GAAC,OAAIA,EAAElmB,OAAStB,CAAK,IAC3E06H,GAAoBA,EAAiBpzG,GACvC1hB,KAAKyvC,OAAOvzC,SAAS,mBAAoB,CAAEvC,GAAIqG,KAAK4a,OAAOjhB,GAAIS,MAAAA,IAE/D4F,KAAKyvC,OAAOvzC,SAAS,iBAAkB,CAAEvC,GAAIqG,KAAK4a,OAAOjhB,GAAIS,MAAAA,IAE/D0+B,GACF,EACAm/B,OAAM,WACJj4D,KAAK2yD,UAAW,EAChB3yD,KAAK+0H,YACP,EACAv0F,QAAO,WACLxgC,KAAK2yD,UAAW,CAClB,EACAoiE,WAAU,WACR/0H,KAAK05C,WAAU,WACb,IAAMl/C,EAAQqS,SAAS0sC,cAAc,mCACjC/+C,GAAOA,EAAMu1C,OACnB,GACF,EAEAgnE,oCAAmC,SAAE38G,GACnC,IAAMY,EAAQ,CAACZ,EAAMyB,aACfX,EAAW,GAcjB,OAZId,EAAMiU,iBACRrT,EAAMqE,KAAKW,KAAKg4D,GAAG59D,EAAMiU,gBAAgBhH,IAAKjN,EAAMiU,gBAAgBC,OAGlElU,EAAMqU,aACRzO,KAAKiJ,UAAU+L,SAAQ,SAAA/K,GAAQ,QAC7BjP,EAAMqE,KAA4B,QAAxB,EAACjF,EAAMqU,YAAYxE,UAAK,aAAvB,EAAyBvO,MAEpCR,EAASmE,KAAI,MAAbnE,GAAQ,SAAiC,QAAvB,EAAAd,EAAMqU,YAAYxE,UAAK,aAAvB,EAAyB/O,WAAY,IACzD,IAGK,CACLF,MAAOA,EAAMD,QAAO,SAAAO,GAAC,OAAIA,CAAC,IAC1BJ,SAAUA,EAASH,QAAO,SAAAO,GAAC,OAAIA,CAAC,IAEpC,EACAk4G,wBAAuB,SAAEp5G,GACvB,IAAKA,EAAMqU,YACT,OAAOrU,EAAMyB,YAGf,GAAIzB,EAAMiU,gBACR,OAAOrO,KAAKg4D,GAAG59D,EAAMiU,gBAAgBhH,IAAKjN,EAAMiU,gBAAgBC,MACjE,IAEgC,EAFhC,KAEkBtO,KAAKiJ,WAAS,IAAjC,IAAK,EAAL,qBAAmC,OAAxBgB,EAAI,QACb,GAA2B,QAA3B,EAAI7P,EAAMqU,YAAYxE,UAAK,OAAvB,EAAyBvO,KAC3B,OAAOtB,EAAMqU,YAAYxE,GAAMvO,IAEnC,CAAC,+BAED,OAAOtB,EAAMyB,WACf,GAEFqL,SAAU,CACR8tH,aAAY,WACV,IAAMC,EAAe,IAAI9yH,IAAI,CAAC,KAAM,KAAM,KAAM,KAAM,OACtD,OAAOnC,KAAKyvC,OAAOj7B,QAAQU,kBAAkBna,QAAO,SAAAX,GAAK,OAAI66H,EAAahyH,IAAI7I,EAAMqD,YAAY,GAClG,EACAwL,UAAS,WACP,OAAOG,EAAAA,GAAAA,qBAAoBpJ,KAAKyvC,OAAOj7B,QAAQ/G,aAAam+C,kBAC9D,EACAjxD,OAAM,WACJ,GAAwB,KAApBqF,KAAK40H,WAAmB,CAC1B,IAGyD,EAHnDzhB,EAAmB,KAAKnzG,KAAK40H,WAAW/5H,eAExCu4G,EAAmB,GAAE,KACPpzG,KAAKyvC,OAAOj7B,QAAQU,mBAAiB,IAAzD,IAAK,EAAL,qBAA2D,KAAhD9a,EAAK,QACRi5G,EAAUrzG,KAAK+2G,oCAAoC38G,GACtDc,SACAnC,KAAI,SAAAuC,GAAC,OAAIA,EAAET,cAAc0zB,QAAQ4kF,EAAiB,IAClDp4G,QAAO,SAAAO,GAAC,OAAIA,GAAK,CAAC,IAEfg4G,EAAiBD,EAAQh4G,OAASG,KAAKyjC,IAAG,MAARzjC,MAAI,QAAQ63G,KAAY,EAE5DC,GAAkB,IACfj1G,MAAMoF,QAAQ2vG,EAAiBE,MAClCF,EAAiBE,GAAkB,IAErCF,EAAiBE,GAAgBj0G,KAAKjF,GAE1C,CAAC,+BACD,OAAOg5G,EAAiBG,MAC1B,CACA,OAAOvzG,KAAKyvC,OAAOj7B,QAAQU,mBAAqB,EAClD,EACAzH,aAAY,WACV,OAAOzN,KAAKyvC,OAAOj7B,QAAQ/G,YAC7B,IChHJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,8GFNzDwjC,EAAAA,EAAAA,IAoEU+gB,EAAAA,CAnERC,QAAQ,QACR3yD,MAAM,cACN6hE,UAAU,MACT78C,OAAQ,CAAA01B,EAAAA,GACR,WAAU,CAAAhB,EAAAA,aACX,oBACA,gBAAc,8BACbif,OAAMv3D,EAAAA,OACN8/B,QAAO9/B,EAAAA,S,CAEGd,SAAO,SAChB,gBADmBk5B,EAAK,EAALA,MAAK,QACxBt4B,EAAAA,EAAAA,GAOM,MAPND,GAOM,WANJC,EAAAA,EAAAA,GAKC,S,qDAJUE,EAAAA,WAAU,IACnBixC,KAAK,IACJpB,YAAa7vC,EAAAA,GAAG,sBAChBmoD,QAAK,+BAAEmlD,EAAOrtG,OAAOg0G,WAAY,CAAH,I,mBAHtBj0G,EAAAA,iBAMbF,EAAAA,EAAAA,GAqBM,MArBN0vC,GAqBM,gBApBJ5vC,EAAAA,EAAAA,IAQO8vC,EAAAA,GAAAA,MAAAA,EAAAA,EAAAA,IAPW1vC,EAAAA,cAAY,SAArBtG,G,kBADTkG,EAAAA,EAAAA,IAQO,QANJ+G,IAAKjN,EAAMqD,YACZ6B,MAAM,eACLwN,MAAOpM,EAAAA,wBAAwBtG,GAC/B2F,QAAK,mBAAEW,EAAAA,YAAYstG,EAAQ5zG,EAAMqD,YAAaq7B,EAAK,I,QAEjD1+B,EAAMqD,aAAW,K,UAEtB6yC,KAAuC,aACvChwC,EAAAA,EAAAA,IAQO8vC,EAAAA,GAAAA,MAAAA,EAAAA,EAAAA,IAPkB1vC,EAAAA,QAAM,SAArBtG,EAAOiN,G,kBADjB/G,EAAAA,EAAAA,IAQO,QANJ+G,IAAKA,EACN/H,MAAM,eACLwN,MAAOpM,EAAAA,wBAAwBtG,GAC/B2F,QAAK,mBAAEW,EAAAA,YAAYstG,EAAQ5zG,EAAMqD,YAAaq7B,EAAK,I,QAEjD1+B,EAAMqD,aAAW,K,UAEtB+yC,K,IAGOyhB,SAAO,SAChB,iBAsBO,EAtBPzxD,EAAAA,EAAAA,GAsBO,QArBLlB,MAAM,kCACLwN,MAAOpM,EAAAA,GAAG,0B,EAEXkwC,EAAAA,EAAAA,IAiBWyV,EAAAA,KAAAA,C,kBAhBT,iBAGE,EAHFzV,EAAAA,EAAAA,IAGEQ,EAAAA,CAFA9xC,MAAM,8BACLqJ,KAAM,CAAC,MAAO,iB,SAEjBioC,EAAAA,EAAAA,IAKEQ,EAAAA,CAHA9xC,MAAM,eACNq1C,UAAU,yBACVhsC,KAAK,Q,kBAHIjI,EAAAA,aAAQ,SAKnBkwC,EAAAA,EAAAA,IAKEQ,EAAAA,CAHA9xC,MAAM,eACNq1C,UAAU,yBACVhsC,KAAK,S,iBAHGjI,EAAAA,Y,8DG5DbpB,MAAM,iB,sDA+DPA,MAAM,Y,WCvDZq6B,GAAAA,GAAAA,IACE+nF,GAAAA,IACA0H,GAAAA,IACAzkE,GAAAA,IACAwT,GAAAA,KAsDF,SAnDsB,CACpB54D,MAAO,CAAC,SAAU,WAAY,cAC9BsB,WAAY,CACVikD,aAAAA,GAAAA,GAEF7qD,KAAI,WACF,MAAO,CACL06H,UAAU,EACVO,sBAAsB,EAE1B,EACAp1H,QAAS,CACP6c,QAAO,YACA3c,KAAK4a,OAAOwE,UAAYpf,KAAKm1H,oBAChCn1H,KAAKo1H,oBAELp1H,KAAKq1H,WAET,EACAA,UAAS,WAAI,WACNr1H,KAAK4a,OAAOwE,SAGfpf,KAAKyvC,OAAOvzC,SAAS,YAAa,CAAEvC,GAAIqG,KAAK4a,OAAOjhB,KAFpDqG,KAAKyvC,OAAOvzC,SAAS,UAAW,CAAEvC,GAAIqG,KAAK4a,OAAOjhB,KAIpDqG,KAAK20H,UAAW,EAChBh4H,YAAW,WACT,EAAKg4H,UAAW,CAClB,GAAG,KACH30H,KAAKs1H,mBACP,EACAF,kBAAiB,WACfp1H,KAAKk1H,sBAAuB,CAC9B,EACAI,kBAAiB,WACft1H,KAAKk1H,sBAAuB,CAC9B,GAEFhuH,SAAU,CACRuG,aAAY,WACV,OAAOzN,KAAKyvC,OAAOj7B,QAAQ/G,YAC7B,EACA+H,sBAAqB,WACnB,OAAOxV,KAAKyvC,OAAOj7B,QAAQgB,sBAAsB,CAAEE,SAAU1V,KAAK4a,OAAOjhB,IAC3E,EACAw7H,oBAAmB,WACjB,OAAOn1H,KAAKyN,aAAa+C,aAC3B,ICtDJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,oHFNzDlQ,EAAAA,EAAAA,IA+EM,MA/ENC,GA+EM,CA7EmB,YAAfG,EAAAA,YAA2C,WAAfA,EAAAA,YAA2BA,EAAAA,WAAQ,WADvEJ,EAAAA,EAAAA,IAgCS,U,MA9BPhB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,8BACEh0C,EAAAA,OAAO0e,UAAY,cAC1BtS,MAAOpM,EAAAA,GAAG,mBACVX,QAAK,yCAAUW,EAAAA,SAAO,kB,EAEvBkwC,EAAAA,EAAAA,IAwBWyV,EAAAA,CAxBD/mD,MAAM,wBAAsB,C,kBACpC,iBAIE,EAJFsxC,EAAAA,EAAAA,IAIEQ,EAAAA,CAHA9xC,MAAM,eACNqJ,KAAK,UACJ84C,KAAM/gD,EAAAA,U,iBAGDA,EAAAA,OAAO0e,WAAQ,WADvB6xB,EAAAA,EAAAA,IAKEG,EAAAA,C,MAHA9xC,MAAM,gBACNq1C,UAAU,yBACVhsC,KAAK,Y,eAGEjI,EAAAA,OAAO0e,W,WAKhB6xB,EAAAA,EAAAA,IAKEG,EAAAA,C,MAHA9xC,MAAM,eACNq1C,UAAU,yBACVhsC,KAAK,aATiB,WADxBsoC,EAAAA,EAAAA,IAKEG,EAAAA,C,MAHA9xC,MAAM,eACNq1C,UAAU,yBACVhsC,KAAK,U,mBAUMjI,EAAAA,WAAQ,WAAzBJ,EAAAA,EAAAA,IAMO,YALLswC,EAAAA,EAAAA,IAIEQ,EAAAA,CAHA9xC,MAAM,8BACNqJ,KAAK,OACJmE,MAAOpM,EAAAA,GAAG,6B,kCAGfJ,EAAAA,EAAAA,IAmBI,K,MAjBFhB,MAAM,8BACNqB,OAAO,SACPqiD,KAAK,SACJl2C,MAAOpM,EAAAA,GAAG,mBACVD,KAAMC,EAAAA,uB,EAEPkwC,EAAAA,EAAAA,IAUWyV,EAAAA,CAVD/mD,MAAM,wBAAsB,C,kBACpC,iBAGE,EAHFsxC,EAAAA,EAAAA,IAGEQ,EAAAA,CAFA9xC,MAAM,eACNqJ,KAAK,aAEPioC,EAAAA,EAAAA,IAIEQ,EAAAA,CAHA9xC,MAAM,eACNq1C,UAAU,yBACVhsC,KAAK,S,mBAKFjI,EAAAA,aAAayP,eAAiBzP,EAAAA,OAAO2e,WAAa,IAAH,WADxD/e,EAAAA,EAAAA,IAKO,OALPgwC,IAKO,QADF5vC,EAAAA,OAAO2e,YAAU,iCAEtB4xB,EAAAA,EAAAA,IAWWsV,EAAAA,GAAAA,CAXDjpB,GAAG,UAAQ,CAEX58B,EAAAA,uBAAoB,WAD5BuwC,EAAAA,EAAAA,IASgBuV,EAAAA,C,MAPb15C,MAAOpM,EAAAA,GAAG,+BACV,eAAcA,EAAAA,GAAG,uCACjB,cAAaA,EAAAA,GAAG,uCAChB+lD,WAAU/lD,EAAAA,UACVgmD,YAAWhmD,EAAAA,mB,mBAEZ,iBAAiC,mBAA9BA,EAAAA,GAAG,0BAAD,G,gHGjEFpB,MAAM,iB,uJAuILA,MAAM,mC,+NChIlBq6B,GAAAA,GAAAA,IACE4lC,GAAAA,IACA9pB,GAAAA,IACA8/E,GAAAA,IACA5T,GAAAA,GACAhuE,GAAAA,IACA6hF,GAAAA,IACAC,GAAAA,IACA7lB,GAAAA,IACA8lB,GAAAA,IACAtM,GAAAA,IACAxvF,GAAAA,KAgIF,SA7HqB,CACnBr6B,MAAO,CAAC,UACRsB,WAAY,CACV0wD,QAAAA,GAAAA,QACAzM,aAAAA,GAAAA,GAEF7qD,KAAI,WACF,MAAO,CACL04D,UAAU,EACVgjE,qBAAqB,EAEzB,EACA71H,QAAS,CACPm4D,OAAM,WACJj4D,KAAK2yD,UAAW,CAClB,EACAnyB,QAAO,WACLxgC,KAAK2yD,UAAW,CAClB,EACAnwC,aAAY,WACNxiB,KAAK41H,oBACP51H,KAAK61H,gCAEL71H,KAAK81H,gBAET,EACAA,eAAc,WACZ91H,KAAKyvC,OAAOvzC,SAAS,eAAgB,CAAEvC,GAAIqG,KAAK4a,OAAOjhB,KACvDqG,KAAK+1H,+BACP,EACAF,8BAA6B,WAC3B71H,KAAK21H,qBAAsB,CAC7B,EACAI,8BAA6B,WAC3B/1H,KAAK21H,qBAAsB,CAC7B,EACA9yG,UAAS,WAAI,WACX7iB,KAAKyvC,OAAOvzC,SAAS,YAAa8D,KAAK4a,OAAOjhB,IAC3CL,MAAK,kBAAM,EAAKyL,MAAM,YAAY,IAAC,OAC7B,SAAAsmB,GAAG,OAAI,EAAKtmB,MAAM,UAAWsmB,EAAI9f,MAAMA,MAAM,GACxD,EACAwX,YAAW,WAAI,WACb/iB,KAAKyvC,OAAOvzC,SAAS,cAAe8D,KAAK4a,OAAOjhB,IAC7CL,MAAK,kBAAM,EAAKyL,MAAM,YAAY,IAAC,OAC7B,SAAAsmB,GAAG,OAAI,EAAKtmB,MAAM,UAAWsmB,EAAI9f,MAAMA,MAAM,GACxD,EACA0X,iBAAgB,WAAI,WAClBjjB,KAAKyvC,OAAOvzC,SAAS,mBAAoB8D,KAAK4a,OAAOjhB,IAClDL,MAAK,kBAAM,EAAKyL,MAAM,YAAY,IAAC,OAC7B,SAAAsmB,GAAG,OAAI,EAAKtmB,MAAM,UAAWsmB,EAAI9f,MAAMA,MAAM,GACxD,EACA2X,mBAAkB,WAAI,WACpBljB,KAAKyvC,OAAOvzC,SAAS,qBAAsB8D,KAAK4a,OAAOjhB,IACpDL,MAAK,kBAAM,EAAKyL,MAAM,YAAY,IAAC,OAC7B,SAAAsmB,GAAG,OAAI,EAAKtmB,MAAM,UAAWsmB,EAAI9f,MAAMA,MAAM,GACxD,EACAyqH,SAAQ,WAAI,WACV9qG,UAAU+qG,UAAUC,UAAUl2H,KAAKm2H,YAChC78H,MAAK,kBAAM,EAAKyL,MAAM,YAAY,IAAC,OAC7B,SAAAsmB,GAAG,OAAI,EAAKtmB,MAAM,UAAWsmB,EAAI9f,MAAMA,MAAM,GACxD,EACA8X,eAAc,WAAI,WAChBrjB,KAAKyvC,OAAOvzC,SAAS,WAAY,CAAEvC,GAAIqG,KAAK4a,OAAOjhB,KAChDL,MAAK,kBAAM,EAAKyL,MAAM,YAAY,IAAC,OAC7B,SAAAsmB,GAAG,OAAI,EAAKtmB,MAAM,UAAWsmB,EAAI9f,MAAMA,MAAM,GACxD,EACAgY,iBAAgB,WAAI,WAClBvjB,KAAKyvC,OAAOvzC,SAAS,aAAc,CAAEvC,GAAIqG,KAAK4a,OAAOjhB,KAClDL,MAAK,kBAAM,EAAKyL,MAAM,YAAY,IAAC,OAC7B,SAAAsmB,GAAG,OAAI,EAAKtmB,MAAM,UAAWsmB,EAAI9f,MAAMA,MAAM,GACxD,EACA6qH,aAAY,WACVp2H,KAAKyvC,OAAOvzC,SAAS,yBAA0B,CAAEmc,OAAQrY,KAAK4a,OAAO3d,KAAKtD,GAAIkqC,UAAW,CAAC7jC,KAAK4a,OAAOjhB,KACxG,EACA0vD,WAAU,WAAI,WACZrpD,KAAKyvC,OAAOvzC,SAAS,oBAAqB,CAAEvC,GAAIqG,KAAK4a,OAAOjhB,KACzDL,MAAK,SAAAW,GAAI,OAAI,EAAKw1C,OAAOvzC,SAAS,sBAAuB,CACxDwZ,SAAU,EAAKkF,OAAOjhB,GACtBgyH,QAAS1xH,EAAKu4F,aACdzrE,WAAY9sB,EAAK2E,KACjBktH,kBAAmB,EAAKlxG,OAAOoF,KAC/BgsG,WAAY,EAAKpxG,OAAOkH,KACxBiqG,aAAa,QAAI,EAAKnxG,OAAOH,aAC7B+B,WAAY,EAAK5B,OAAO4B,WACxBqvG,kBAAmB5xH,EAAKw4F,cACxB,GACN,EACA4jC,kBAAiB,WACf,IAAMptC,E,wWAAiB,IAAKjpF,KAAK4a,QACT,CAAC,cAAe,aAAc,SAAU,OAAQ,WAAY,OAAQ,OAAQ,UAAW,oBAC/F5F,SAAQ,SAAAshH,GAAC,cAAWrtC,EAAeqtC,EAAE,IACrDt2H,KAAKyvC,OAAOvzC,SAAS,yBAA0B+sF,EACjD,GAEF/hF,SAAU,CACRyG,YAAW,WAAM,OAAO3N,KAAKyvC,OAAOtzC,MAAMa,MAAM2Q,WAAY,EAC5D4oH,UAAS,WACP,GAAKv2H,KAAK2N,YACV,OAAO3N,KAAK2N,YAAYs+B,WAAWnvC,SAAS,oBAAsBkD,KAAK4a,OAAO3d,KAAKtD,KAAOqG,KAAK2N,YAAYhU,EAC7G,EACA68H,UAAS,WACP,OAAOx2H,KAAK4a,OAAO3d,KAAKtD,KAAOqG,KAAK2N,YAAYhU,EAClD,EACA88H,OAAM,WACJ,OAAOz2H,KAAKw2H,YAAyC,WAA3Bx2H,KAAK4a,OAAO4B,YAAsD,aAA3Bxc,KAAK4a,OAAO4B,WAC/E,EACAk6G,QAAO,WACL,QAAS12H,KAAK2N,WAChB,EACAgpH,YAAW,WACT,QAAS32H,KAAK2N,WAChB,EACAwoH,WAAU,WACR,MAAO,GAAP,OAAUn2H,KAAKyvC,OAAOtzC,MAAM4Q,SAASgC,QAAM,OAAG/O,KAAKG,QAAQ9G,QAAQ,CAAEqC,KAAM,eAAgBo5B,OAAQ,CAAEn7B,GAAIqG,KAAK4a,OAAOjhB,MAAQ8G,KAC/H,EACAm2H,SAAQ,WACN,OAAiC,OAA1B52H,KAAK4a,OAAOk4E,SACrB,EACAnmC,iBAAgB,WAAM,OAAO3sD,KAAKyvC,OAAOtzC,MAAM4Q,SAAS4/C,gBAAiB,EACzEipE,oBAAmB,WACjB,OAAO51H,KAAKyvC,OAAOj7B,QAAQ/G,aAAamD,aAC1C,ICjJJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,yIFNzDqgC,EAAAA,EAAAA,IAmLU+gB,EAAAA,CAlLR1yD,MAAM,eACN2yD,QAAQ,QACRkP,UAAU,MACT78C,OAAQ,CAAA01B,EAAAA,GACR,WAAU,CAAAhB,EAAAA,aACX,oBACCif,OAAMv3D,EAAAA,OACN8/B,QAAO9/B,EAAAA,S,CAEGd,SAAO,SAChB,gBADmBk5B,EAAK,EAALA,MAAK,QACxBt4B,EAAAA,EAAAA,GAoIM,MApIND,GAoIM,CAlIIG,EAAAA,UAAYA,EAAAA,OAAOwe,eAAY,WADvC5e,EAAAA,EAAAA,IASS,U,MAPPhB,MAAM,kDACLS,QAAK,wCAAUW,EAAAA,kBAAAA,EAAAA,iBAAAA,MAAAA,EAAAA,UAAgB,kB,EAEhCkwC,EAAAA,EAAAA,IAGEQ,EAAAA,CAFA,iBACAzoC,KAAK,eACLnI,EAAAA,EAAAA,GAAiD,qBAAxCE,EAAAA,GAAG,6BAAD,sBAGPA,EAAAA,SAAWA,EAAAA,OAAOwe,eAAY,WADtC5e,EAAAA,EAAAA,IASS,U,MAPPhB,MAAM,kDACLS,QAAK,wCAAUW,EAAAA,oBAAAA,EAAAA,mBAAAA,MAAAA,EAAAA,UAAkB,kB,EAElCkwC,EAAAA,EAAAA,IAGEQ,EAAAA,CAFA,iBACAzoC,KAAK,eACLnI,EAAAA,EAAAA,GAAmD,qBAA1CE,EAAAA,GAAG,+BAAD,uBAGNA,EAAAA,OAAOwuB,QAAUxuB,EAAAA,SAAM,WADhCJ,EAAAA,EAAAA,IAUS,U,MARPhB,MAAM,kDACLS,QAAK,kC,OAAUW,EAAAA,WAAAA,EAAAA,UAAAA,MAAAA,EAAAA,UAAS,iBACjBo4B,I,EAER8X,EAAAA,EAAAA,IAGEQ,EAAAA,CAFA,iBACAzoC,KAAK,eACLnI,EAAAA,EAAAA,GAAmC,qBAA1BE,EAAAA,GAAG,eAAD,2BAGPA,EAAAA,OAAOwuB,QAAUxuB,EAAAA,SAAM,WAD/BJ,EAAAA,EAAAA,IAUS,U,MARPhB,MAAM,kDACLS,QAAK,kC,OAAUW,EAAAA,aAAAA,EAAAA,YAAAA,MAAAA,EAAAA,UAAW,iBACnBo4B,I,EAER8X,EAAAA,EAAAA,IAGEQ,EAAAA,CAFA,iBACAzoC,KAAK,eACLnI,EAAAA,EAAAA,GAAqC,qBAA5BE,EAAAA,GAAG,iBAAD,2BAECA,EAAAA,cAAW,WAA3BJ,EAAAA,EAAAA,IAuBW8vC,EAAAA,GAAAA,CAAA/oC,IAAAA,GAAA,CArBA3G,EAAAA,OAAO+e,YAQD,iBARW,WAD1Bnf,EAAAA,EAAAA,IAUS,U,MARPhB,MAAM,kDACLS,QAAK,kC,OAAUW,EAAAA,gBAAAA,EAAAA,eAAAA,MAAAA,EAAAA,UAAc,iBACtBo4B,I,EAER8X,EAAAA,EAAAA,IAGEQ,EAAAA,CAFA,iBACCzoC,KAAM,CAAC,MAAO,eACfnI,EAAAA,EAAAA,GAAwC,qBAA/BE,EAAAA,GAAG,oBAAD,WAGPA,EAAAA,OAAO+e,aAAU,WADzBnf,EAAAA,EAAAA,IAUS,U,MARPhB,MAAM,kDACLS,QAAK,kC,OAAUW,EAAAA,kBAAAA,EAAAA,iBAAAA,MAAAA,EAAAA,UAAgB,iBACxBo4B,I,EAER8X,EAAAA,EAAAA,IAGEQ,EAAAA,CAFA,iBACAzoC,KAAK,cACLnI,EAAAA,EAAAA,GAA0C,qBAAjCE,EAAAA,GAAG,sBAAD,iDAITA,EAAAA,WAAaA,EAAAA,mBAAgB,WADrCJ,EAAAA,EAAAA,IAUS,U,MARPhB,MAAM,kDACLS,QAAK,kC,OAAUW,EAAAA,YAAAA,EAAAA,WAAAA,MAAAA,EAAAA,UAAU,iBAClBo4B,I,EAER8X,EAAAA,EAAAA,IAGEQ,EAAAA,CAFA,iBACAzoC,KAAK,SACLnI,EAAAA,EAAAA,GAAoC,qBAA3BE,EAAAA,GAAG,gBAAD,2BAGPA,EAAAA,UAAYA,EAAAA,mBAAgB,WADpCJ,EAAAA,EAAAA,IAUS,U,MARPhB,MAAM,kDACLS,QAAK,kC,OAAUW,EAAAA,mBAAAA,EAAAA,kBAAAA,MAAAA,EAAAA,UAAiB,iBACzBo4B,I,EAER8X,EAAAA,EAAAA,IAGEQ,EAAAA,CAFA,iBACAzoC,KAAK,aACLnI,EAAAA,EAAAA,GAA8C,qBAArCE,EAAAA,GAAG,0BAAD,2BAGPA,EAAAA,YAAS,WADjBJ,EAAAA,EAAAA,IAUS,U,MARPhB,MAAM,kDACLS,QAAK,kC,OAAUW,EAAAA,cAAAA,EAAAA,aAAAA,MAAAA,EAAAA,UAAY,iBACpBo4B,I,EAER8X,EAAAA,EAAAA,IAGEQ,EAAAA,CAFA,iBACAzoC,KAAK,WACLnI,EAAAA,EAAAA,GAAsC,qBAA7BE,EAAAA,GAAG,kBAAD,4BAEfF,EAAAA,EAAAA,GASS,UARPlB,MAAM,kDACLS,QAAK,kC,OAAUW,EAAAA,UAAAA,EAAAA,SAAAA,MAAAA,EAAAA,UAAQ,iBAChBo4B,I,EAER8X,EAAAA,EAAAA,IAGEQ,EAAAA,CAFA,iBACAzoC,KAAK,eACLnI,EAAAA,EAAAA,GAAyC,qBAAhCE,EAAAA,GAAG,qBAAD,UAGNA,EAAAA,OAAOwnD,UASD,iBATS,WADxB5nD,EAAAA,EAAAA,IAWI,K,MATFhB,MAAM,kDACNwN,MAAM,SACLrM,KAAMC,EAAAA,OAAO+yF,aACd9yF,OAAO,U,EAEPiwC,EAAAA,EAAAA,IAGEQ,EAAAA,CAFA,iBACAzoC,KAAK,uBACLnI,EAAAA,EAAAA,GAA+C,qBAAtCE,EAAAA,GAAG,2BAAD,YAEfF,EAAAA,EAAAA,GASS,UARPlB,MAAM,kDACLS,QAAK,oC,OAAUW,EAAAA,cAAAA,EAAAA,aAAAA,MAAAA,EAAAA,UAAY,iBACpBo4B,I,EAER8X,EAAAA,EAAAA,IAGEQ,EAAAA,CAFA,iBACCzoC,KAAM,CAAC,MAAO,WACfnI,EAAAA,EAAAA,GAAyC,qBAAhCE,EAAAA,GAAG,qBAAD,Y,IAIRuxD,SAAO,SAChB,iBAmBO,EAnBPzxD,EAAAA,EAAAA,GAmBO,OAnBPuwC,GAmBO,EAlBLH,EAAAA,EAAAA,IAiBWyV,EAAAA,CAjBD/mD,MAAM,wBAAsB,C,kBACpC,iBAGE,EAHFsxC,EAAAA,EAAAA,IAGEQ,EAAAA,CAFA9xC,MAAM,eACNqJ,KAAK,gB,SAEPioC,EAAAA,EAAAA,IAKEQ,EAAAA,CAHA9xC,MAAM,eACNq1C,UAAU,yBACVhsC,KAAK,Q,kBAHIjI,EAAAA,aAAQ,SAKnBkwC,EAAAA,EAAAA,IAKEQ,EAAAA,CAHA9xC,MAAM,eACNq1C,UAAU,yBACVhsC,KAAK,S,iBAHGjI,EAAAA,Y,yBAOduwC,EAAAA,EAAAA,IAWWsV,EAAAA,GAAAA,CAXDjpB,GAAG,UAAQ,CAEX58B,EAAAA,sBAAmB,WAD3BuwC,EAAAA,EAAAA,IASe4lF,EAAAA,C,MAPZ/pH,MAAOpM,EAAAA,GAAG,+BACV,cAAaA,EAAAA,GAAG,uCAChB,eAAcA,EAAAA,GAAG,uCACjBgmD,YAAWhmD,EAAAA,8BACX+lD,WAAU/lD,EAAAA,gB,mBAEX,iBAAiC,mBAA9BA,EAAAA,GAAG,0BAAD,G,4NG3JPpB,MAAM,mC,UAMNA,MAAM,6B,uBCtBdq6B,GAAAA,GAAAA,IACE+kB,GAAAA,KA4CF,SAzCsB,CACpBhjD,KAAM,gBACN6D,MAAO,CACL,YAEFtF,KAAI,WACF,MAAO,CACLsR,OAAO,EAEX,EACArE,SAAU,CACR0T,OAAM,WACJ,OAAO,KAAK5a,KAAKyvC,OAAOtzC,MAAMmc,SAASmB,YAAa,CAAE9f,GAAIqG,KAAK0V,UACjE,GAEF7U,WAAY,CACV6mD,QAAQiD,EAAAA,EAAAA,KAAqB,kBAAM,uCAA8B,IACjE4G,SAAS5G,EAAAA,EAAAA,KAAqB,kBAAM,uCAAgC,KAEtE7qD,QAAS,CACPg3H,MAAK,WAAI,WACP,IAAK92H,KAAK4a,OAAQ,CAChB,IAAK5a,KAAK0V,SAER,YADA1V,KAAKuL,OAAQ,GAGfvL,KAAKyvC,OAAOvzC,SAAS,cAAe8D,KAAK0V,UACtCpc,MAAK,SAAAW,GAAI,OAAK,EAAKsR,OAAQ,CAAK,IAAE,OAC5B,SAAAhS,GAAC,OAAK,EAAKgS,OAAQ,CAAI,GAClC,CACF,GAEFqtC,MAAO,CACLh+B,OAAM,SAAEkE,EAAWi4G,GAAW,WACxBj4G,IAAci4G,GAChB/2H,KAAK05C,WAAU,kBAAM,EAAKxxC,MAAM02F,QAAQ4b,cAAc,GAE1D,ICrCJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,4GFNzDvpE,EAAAA,EAAAA,IAmCU+gB,EAAAA,CAlCRthB,IAAI,UACJuhB,QAAQ,QACP,iBAAe,EAChB,gBAAc,iCACb,WAAU,CAAAjZ,EAAAA,aACVif,OAAMv3D,EAAAA,O,CAEIuxD,SAAO,SAChB,iBAAQ,EAARve,EAAAA,EAAAA,IAAQhzC,EAAAA,OAAAA,W,IAECd,SAAO,SAChB,iBAKE,CAJMc,EAAAA,SAAM,WADduwC,EAAAA,EAAAA,IAKEgY,EAAAA,C,MAHC,cAAY,EACZE,UAAWzoD,EAAAA,OACXo+D,SAAS,G,uBAGCp+D,EAAAA,QAAK,WADlBJ,EAAAA,EAAAA,IAKM,MALNC,IAKM,QADDG,EAAAA,GAAG,8BAAD,iBAEPJ,EAAAA,EAAAA,IASM,MATN2vC,GASM,EALJW,EAAAA,EAAAA,IAIEQ,EAAAA,CAHAzoC,KAAK,eACL84C,KAAA,GACA9P,KAAK,U,+CGtBJryC,MAAM,qB,IAYAA,MAAM,mB,IASHA,MAAM,yB,YCxB1Bq6B,GAAAA,GAAAA,IACE+kB,GAAAA,KAqBF,SAlBwB,CACtBhjD,KAAM,kBACN6D,MAAO,CACL,SAEFsB,WAAY,CACVm7D,YAAAA,GAAAA,EACAu6C,uBAAAA,GAAAA,EACAhlD,SAAS5G,EAAAA,EAAAA,KAAqB,kBAAM,uCAAgC,IACpEoR,YAAYpR,EAAAA,EAAAA,KAAqB,kBAAM,uCAAwC,KAEjFzjD,SAAU,CACR8vH,YAAW,WACT,OAAOh3H,KAAKhD,MAAMG,MAAM,EAAG,GAC7B,IChBJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,+KFNzD8zC,EAAAA,EAAAA,IA2CU+gB,EAAAA,CA1CRC,QAAQ,QACRkP,UAAU,MACT78C,OAAQ,CAAA01B,EAAAA,I,CAEEiY,SAAO,SAChB,iBAAQ,EAARve,EAAAA,EAAAA,IAAQhzC,EAAAA,OAAAA,W,IAECd,SAAO,SAChB,iBAgCM,EAhCNY,EAAAA,EAAAA,GAgCM,MAhCND,GAgCM,CA/BYG,EAAAA,MAAMrF,SAAM,aAC1BiF,EAAAA,EAAAA,IAqBM8vC,EAAAA,GAAAA,CAAA/oC,IAAAA,IAAA,QApBa3G,EAAAA,aAAW,SAApBzD,G,kBADVqD,EAAAA,EAAAA,IAqBM,OAnBH+G,IAAKpK,EAAKtD,GACX2F,MAAM,iB,EAENsxC,EAAAA,EAAAA,IAIEyrB,EAAAA,CAHCp/D,KAAMA,EACPqC,MAAM,eACLw/D,SAAS,G,kBAEZt+D,EAAAA,EAAAA,GAUM,MAVNyvC,GAUM,EARJW,EAAAA,EAAAA,IAKE0rB,EAAAA,CAJAh9D,MAAM,WACLwN,MAAK,IAAM7P,EAAKK,eAChB0D,KAAM/D,EAAKk/D,UACX/hE,MAAO6C,EAAK7C,O,kCAGfoG,EAAAA,EAAAA,GAAoE,OAApE0vC,IAAoE,QAA7BjzC,EAAKK,gBAAc,IAAUszC,EAAAA,EAAAA,IAAuCoqE,EAAAA,CAAd/9G,KAAMA,GAAI,oB,uBAK3Gg0C,EAAAA,EAAAA,IAIEG,EAAAA,C,MAHAzoC,KAAK,eACL84C,KAAA,GACA9P,KAAK,U,sBGtCVryC,MAAM,kB,mBAYCA,MAAM,kBCuDpB,SA/DuB,CACrB5D,KAAM,iBACNmF,WAAY,CACVk7D,WAAAA,GAAAA,QACAk7D,gBAAAA,IAEF13H,MAAO,CAAC,UACRtF,KAAM,iBAAO,CACXq6H,SAAS,EACV,EACDptH,SAAU,CACRgwH,iBAAgB,WACd,OAAOl3H,KAAK4a,OAAOuG,gBAAgB9lB,OAdL,EAehC,EACA6lB,eAAc,WACZ,OAAOlhB,KAAKs0H,QACRt0H,KAAK4a,OAAOuG,gBACZnhB,KAAK4a,OAAOuG,gBAAgBhkB,MAAM,EAnBR,GAoBhC,EACAg6H,eAAc,WACZ,MAAO,IAAP,OAAWn3H,KAAK4a,OAAOuG,gBAAgB9lB,OAtBT,GAuBhC,EACA+7H,iBAAgB,WACd,OAAOp3H,KAAK4a,OAAOuG,gBAAgBxS,QAAO,SAACC,EAAK0S,GAE9C,OADA1S,EAAI0S,EAAS5lB,MAAQ4lB,EAASE,UAAY,GACnC5S,CACT,GAAG,CAAC,EACN,EACA8X,SAAQ,WACN,QAAS1mB,KAAKyvC,OAAOtzC,MAAMa,MAAM2Q,WACnC,GAEF7N,QAAS,CACPu3H,cAAa,WACXr3H,KAAKs0H,SAAWt0H,KAAKs0H,OACvB,EACAgD,YAAW,SAAEl9H,GACX,OAAO4F,KAAK4a,OAAOuG,gBAAgBL,MAAK,SAAAc,GAAC,OAAIA,EAAElmB,OAAStB,CAAK,IAAEsnB,EACjE,EACA61G,+BAA8B,WACNv3H,KAAK4a,OAAOuG,gBAAgBL,MAAK,SAAAc,GAAC,OAAKA,EAAEJ,QAAQ,KAErExhB,KAAKyvC,OAAOvzC,SAAS,wBAAyB8D,KAAK4a,OAAOjhB,GAE9D,EACA69H,UAAS,SAAEp9H,GACT4F,KAAKyvC,OAAOvzC,SAAS,iBAAkB,CAAEvC,GAAIqG,KAAK4a,OAAOjhB,GAAIS,MAAAA,GAC/D,EACAq9H,QAAO,SAAEr9H,GACP4F,KAAKyvC,OAAOvzC,SAAS,mBAAoB,CAAEvC,GAAIqG,KAAK4a,OAAOjhB,GAAIS,MAAAA,GACjE,EACAs9H,aAAY,SAAEt9H,EAAO0K,GACd9E,KAAK0mB,WAEN1mB,KAAKs3H,YAAYl9H,GACnB4F,KAAKy3H,QAAQr9H,GAEb4F,KAAKw3H,UAAUp9H,GAEnB,ICvDJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,0EFNzDkG,EAAAA,EAAAA,IAwBM,MAxBNC,GAwBM,gBAvBJD,EAAAA,EAAAA,IAckB8vC,EAAAA,GAAAA,MAAAA,EAAAA,EAAAA,IAbK1vC,EAAAA,gBAAc,SAA3B4gB,G,kBADV2vB,EAAAA,EAAAA,IAckB0mF,EAAAA,CAZftwH,IAAKia,EAAS5lB,KACdsB,MAAO0D,EAAAA,iBAAiB4gB,EAAS5lB,O,mBAElC,iBAQS,EART8E,EAAAA,EAAAA,GAQS,UAPPlB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,oCAAmC,oBACXh0C,EAAAA,YAAY4gB,EAAS5lB,MAAI,iBAAqBgF,EAAAA,YAC3EX,QAAK,mBAAEW,EAAAA,aAAa4gB,EAAS5lB,KAAMsyG,EAAM,EACzC9sC,aAAU,+BAAExgE,EAAAA,gCAA8B,I,EAE3CF,EAAAA,EAAAA,GAAuD,OAAvD0vC,IAAuD,QAAvB5uB,EAAS5lB,MAAI,IAC7C8E,EAAAA,EAAAA,GAAiC,qBAAxB8gB,EAASC,OAAK,W,kCAInB7gB,EAAAA,mBAAgB,WADxBJ,EAAAA,EAAAA,IAOI,K,MALFhB,MAAM,8BACNmB,KAAK,qBACJV,QAAK,8BAAEW,EAAAA,eAAAA,EAAAA,cAAAA,MAAAA,EAAAA,UAAa,K,QAElBA,EAAAA,QAAUA,EAAAA,GAAG,qBAAuBA,EAAAA,gBAAc,qB,0pBGqB3Di5B,GAAAA,GAAAA,IACE+b,GAAAA,IACAF,GAAAA,IACA+9E,GAAAA,IACAC,GAAAA,IACA55F,GAAAA,IACA8nF,GAAAA,IACA+S,GAAAA,IACAmD,GAAAA,IACAnW,GAAAA,IACAtS,GAAAA,IACA5vC,GAAAA,IACAoiD,GAAAA,GACAkW,GAAAA,IACAlkF,GAAAA,IACAwC,GAAAA,IACAD,GAAAA,IACAoY,GAAAA,KAGF,IAEwC31D,GAFlCm/H,GAAY,SAAAp8H,GAAI,OAAIA,EAAK87F,OAAO,GAAGsU,cAAgBpwG,EAAKyB,MAAM,EAAE,EAwBhE46H,GAA8B,SAACx9G,EAAK7e,EAAM+tD,GAC9C,IAAMuuE,EAAYF,GAAUp8H,GACtB2pB,EAAM,gBAAH,OAAmB2yG,GACtBC,EAAmB,eAAH,OAAkBD,GACpCz9G,EAAI8K,GACN9K,EAAI8K,GAAKokC,GAETlvC,EAAI09G,GAAoBxuE,CAE5B,EA8YA,SA5Ye,CACb/tD,KAAM,SACNmF,WAAY,CACVq3H,YAAAA,GACAC,eAAAA,GACAC,YAAAA,GACAC,cAAAA,GACAC,aAAAA,GACAlmF,eAAAA,GAAAA,EACA2pB,WAAAA,GAAAA,QACAQ,WAAAA,GAAAA,EACAC,QAAAA,GAAAA,EACA+7D,cAAAA,GACAtB,gBAAAA,GACAuB,eAAAA,GACA94D,cAAAA,GAAAA,EACA1D,YAAAA,GAAAA,EACA4kD,YAAAA,GAAAA,EACA9/G,aAAAA,GAAAA,EACAm7D,YAAAA,GAAAA,QACArU,SAAAA,GAAAA,GAEFroD,MAAO,CACL,YACA,aACA,iBACA,UACA,YACA,UACA,UACA,YACA,YACA,iBACA,aACA,YACA,gBAEA,aACA,gCACA,gCACA,2BAEA,wBACA,8BACA,6BACA,mCACA,+BACA,qCACA,qBACA,2BACA,yBACA,4BACA,QAEFtF,KAAI,WACF,MAAO,CACLw+H,sBAAsB,EACtBzW,SAAS,EACT0W,cAAc,EACdC,yBAA0B,GAC1BlpE,aAAa,EACblkD,MAAO,KACPqtH,cAAe,KAEnB,EACA1xH,SAAU,UAlG4BvO,GAmGD,CAAC,WAAY,gBAnGJA,GAAKgW,QAAO,SAACV,EAAKvS,GAChE,IAAMs8H,EAAYF,GAAUp8H,GACtBm9H,EAAS,mBAAH,OAAsBb,GAC5Bc,EAAiB,aAAH,OAAgBd,GAC9BC,EAAmB,eAAH,OAAkBD,GAIxC,OAHA/pH,EAAIvS,GAAQ,WACV,YAAgC6I,IAAvBvE,KAAKkzH,MAAM2F,SAAiDt0H,IAAxBvE,KAAKwzC,OAAOqlF,KAA0B74H,KAAK64H,GAAkC74H,KAAKi4H,GAA5Bj4H,KAAK84H,EAC1G,EACO7qH,CACT,GAAG,CAAC,KA0FgE,IAChE8yE,UAAS,WACP,OAAO/gF,KAAKyN,aAAaszE,SAC3B,EACAg4C,sBAAqB,WACnB,OACE/4H,KAAK4a,OAAOsE,cACTlf,KAAK4a,OAAO4Y,QAAUxzB,KAAK4a,OAAO4Y,OAAOtU,gBACxClf,KAAKg5H,cACb,EACAC,cAAa,WACX,IAAMh8H,EAAO+C,KAAKmpD,UAAUlsD,KAC5B,OAAOutG,EAAAA,GAAAA,GAAevtG,EACxB,EACAolH,UAAS,WACP,IAAMplH,EAAO+C,KAAK2c,QAAW3c,KAAKmpD,UAAUtsC,iBAAiB5f,KAAQ+C,KAAKmpD,UAAUlsD,KACpF,OAAOutG,EAAAA,GAAAA,GAAevtG,EACxB,EACA4d,QAAO,WACL,OAAO7a,KAAKmpD,UAAUtuC,OACxB,EACAq+G,cAAa,WACX,IAAMj8H,EAAO+C,KAAKmpD,UAAUlsD,KACtBuyB,EAAYxvB,KAAKyN,aAAa+hB,UACpC,OAAOw6E,EAAAA,GAAAA,GAAex6E,EAAUvyB,EAAKC,aACvC,EACAolH,UAAS,WACP,IAAItiH,KAAKujH,UAAT,CACA,IAAMtmH,EAAO+C,KAAK2c,QAAW3c,KAAKmpD,UAAUtsC,iBAAiB5f,KAAQ+C,KAAKmpD,UAAUlsD,KAC9EuyB,EAAYxvB,KAAKyN,aAAa+hB,UACpC,OAAOw6E,EAAAA,GAAAA,GAAex6E,EAAUvyB,EAAKC,aAHX,CAI5B,EACAw7C,gBAAe,WACb,OAAO14C,KAAKshH,wBAAwBthH,KAAK4a,OAAO3d,KAAKtD,GAAIqG,KAAK4a,OAAO3d,KAAKC,YAC5E,EACAi8H,iBAAgB,WACd,GAAIn5H,KAAKo5H,QAAS,CAChB,IAAMn8H,EAAO+C,KAAKyvC,OAAOj7B,QAAQqb,SAAS7vB,KAAK4a,OAAOy4E,qBAEtD,OAAOp2F,EAAOA,EAAKmH,sBAAwB,WAC7C,CACF,EACAuY,QAAO,WAAM,QAAS3c,KAAKmpD,UAAUtsC,gBAAiB,EACtDw8G,cAAa,WAAM,OAAOr5H,KAAKmpD,UAAUlsD,IAAK,EAC9Cq8H,UAAS,WAAM,OAAOt5H,KAAKmpD,UAAUlsD,KAAKvB,MAAQsE,KAAKmpD,UAAUlsD,KAAKK,cAAe,EACrFi8H,cAAa,WAAM,OAAOv5H,KAAKmpD,UAAUlsD,KAAKvB,IAAK,EACnD89H,qBAAoB,WAAM,OAAOx5H,KAAKshH,wBAAwBthH,KAAKmpD,UAAUlsD,KAAKtD,GAAIqG,KAAKmpD,UAAUlsD,KAAKC,YAAa,EACvH0d,OAAM,WACJ,OAAI5a,KAAK2c,QACA3c,KAAKmpD,UAAUtsC,iBAEf7c,KAAKmpD,SAEhB,EACAswE,2BAA0B,WAExB,OAAOz5H,KAAKyvC,OAAOtzC,MAAMmc,SAASoB,kBAAkB1Z,KAAK4a,OAAOjhB,GAClE,EACA+sB,SAAQ,WACN,QAAS1mB,KAAK2N,WAChB,EACAmqF,aAAY,WACV,OAAOA,EAAAA,GAAAA,GAAa93F,KAAK4a,OAAQ5a,KAAK+gF,UACxC,EACA24C,YAAW,WACT,OAAO15H,KAAKmpD,UAAUlsD,KAAK4zF,GAC7B,EACA8oC,UAAS,WACP,OAAO35H,KAAK4a,OAAO3d,KAAK4zF,GAC1B,EACA+oC,aAAY,WACV,OAAO55H,KAAK25H,YAAc35H,KAAKoQ,iBACjC,EACAypH,eAAc,WACZ,OAAO75H,KAAK05H,cAAgB15H,KAAKoQ,iBACnC,EACA0pH,aAAY,WAAI,WACd,IAAK95H,KAAK44H,cAAe,MAAO,GAChC,IAAMmB,EAAa,IAAI53H,IAAInC,KAAK44H,cAAcj3H,gBAAgB5I,KAAI,SAAA0N,GAAC,OAAIA,EAAEjH,GAAG,KAC5E,OAAOQ,KAAK4a,OAAO3Z,WAAWlG,QAAO,SAAAi/H,GAEnC,OAAOA,EAAKrgI,KAAO,EAAKihB,OAAOy4E,qBAE7B2mC,EAAK51H,wBAA0B,EAAKwW,OAAO3d,KAAKmH,wBAE/C21H,EAAW92H,IAAI+2H,EAAK51H,sBACzB,IAAGrL,KAAI,SAAAihI,GAAI,MAAK,CACdx6H,IAAKw6H,EAAK51H,sBACVxE,QAASo6H,EAAK98H,YACdmb,OAAQ2hH,EAAKrgI,GACd,GACH,EACAsgI,gBAAe,WACb,OAAOj6H,KAAK85H,aAAaz+H,OAAS,CACpC,EACAs2F,MAAK,WACH,GAAI3xF,KAAKmpD,UAAUlsD,KAAKtD,KAAOqG,KAAK2N,YAAYhU,GAAI,OAAO,EAC3D,IAAMugI,EAAgBl6H,KAAKm6H,aAEzBv/G,OAAOsE,cAEPlf,KAAK83F,aAAaz8F,OAAS,GAE1B2E,KAAKuQ,iBAAmBvQ,KAAK25H,YAAc35H,KAAK8+D,QACnD,OAAQ9+D,KAAKgiH,UAAYhiH,KAAKo6H,eAAiBF,CACjD,EACAC,YAAW,WACT,GAAIn6H,KAAKmpD,UAAUlsD,KAAKtD,KAAOqG,KAAK2N,YAAYhU,GAAI,OAAO,EAC3D,IAAQihB,EAAW5a,KAAX4a,OACA4Y,EAAW5Y,EAAX4Y,OACF3H,EAAe7rB,KAAKyvC,OAAOj7B,QAAQqX,aAAajR,EAAO3d,KAAKtD,IAC5D0gI,EAAqB7mG,GAAUxzB,KAAKyvC,OAAOj7B,QAAQqX,aAAa2H,EAAOv2B,KAAKtD,IAClF,OAAOihB,EAAO+2E,OAEXn+D,GAAUA,EAAOm+D,OAElB9lE,EAAaM,QAEZkuG,GAAsBA,EAAmBluG,MAC9C,EACAiuG,cAAa,WACX,IAAQx/G,EAAW5a,KAAX4a,OACA4Y,EAAW5Y,EAAX4Y,OACR,OAEIxzB,KAAKwuD,aAEDh7B,GAAU5Y,EAAO3d,KAAKtD,KAAOqG,KAAK4uD,eAEnCp7B,GAAUA,EAAOv2B,KAAKtD,KAAOqG,KAAK4uD,gBAItC5uD,KAAKg5H,gBAAkBp+G,EAAOsE,gBAE3Blf,KAAK83F,aAAaz8F,OAAS,CACnC,EACAi/H,eAAc,WACZ,OAAOt6H,KAAKyN,aAAauC,cAC3B,EACAC,iBAAgB,WACd,OAAOjQ,KAAKyN,aAAawC,gBAC3B,EACAF,qBAAoB,WAClB,OAAO/P,KAAKyN,aAAasC,oBAC3B,EACAG,sBAAqB,WACnB,OAAOlQ,KAAKyN,aAAayC,qBAC3B,EACA2jD,WAAU,WACR,OAAS7zD,KAAKo6H,gBACXp6H,KAAK2xF,OAAS3xF,KAAK+P,sBACnB/P,KAAKm6H,aAAen6H,KAAKs6H,gBACzBt6H,KAAK4a,OAAOsE,cAAgBlf,KAAKiQ,kBACjCjQ,KAAK83F,aAAaz8F,OAAS,GAAK2E,KAAKkQ,sBAE1C,EACAqqH,UAAS,WAEP,QAAIv6H,KAAKkpD,WAEGlpD,KAAKg5H,gBAIVh5H,KAAK4a,OAAOjhB,KAAOqG,KAAKwvB,SACjC,EACA4pG,QAAO,WACL,SAAUp5H,KAAK4a,OAAOsC,wBAAyBld,KAAK4a,OAAOy4E,oBAC7D,EACAmnC,YAAW,WACT,GAAIx6H,KAAK4a,OAAOq4E,wBACd,OAAOjzF,KAAK4a,OAAOq4E,wBAEnB,IAAMh2F,EAAO+C,KAAKyvC,OAAOj7B,QAAQqb,SAAS7vB,KAAK4a,OAAOy4E,qBACtD,OAAOp2F,GAAQA,EAAKK,cAExB,EACAm9H,aAAY,WACV,IAAKz6H,KAAK4a,OAAOuiD,QAAS,MAAO,GACjC,IAAMu9D,EAAiB,KAAS16H,KAAK4a,OAAOuiD,SACtC4F,EAAW/iE,KAAKyN,aAAauE,oBAC7B2oH,EAAeD,EAAet/H,MAAM,YAC1C,MAAkB,SAAb2nE,GAAuB43D,GAA8B,UAAb53D,EACpC23D,EACe,UAAb33D,EACF,OAAO9nE,OAAOy/H,GACC,SAAb33D,EACF,QADF,CAGT,EACA63D,4BAA2B,WAEzB,IAAMC,EAAgB,GAAG5/H,OACvB+E,KAAKy5H,2BAA2Bz6G,YAChChf,KAAKy5H,2BAA2Bl6G,aAElC,OAAO,KAAOs7G,EAAe,KAC/B,EACAhmH,KAAI,WAEF,OAAO7U,KAAK4a,OAAO/F,KAAK9Z,QAAO,SAAA+/H,GAAM,OAAIA,EAAO38G,eAAe,OAAO,IAAEplB,KAAI,SAAA+hI,GAAM,OAAIA,EAAOp/H,IAAI,IAAEwJ,KAAK,IAC1G,EACAiL,cAAa,WACX,OAAOnQ,KAAKyN,aAAa0C,aAC3B,EACAI,gBAAe,WACb,OAAOvQ,KAAKyN,aAAa8C,eAC3B,EACAH,kBAAiB,WACf,OAAOpQ,KAAKyN,aAAa2C,iBAC3B,EACAzC,YAAW,WACT,OAAO3N,KAAKyvC,OAAOtzC,MAAMa,MAAM2Q,WACjC,EACA4yD,aAAY,WACV,OAAOvgE,KAAKyvC,OAAOtzC,MAAK,UAAWyO,eAAeC,SACpD,EACA4C,aAAY,WACV,OAAOzN,KAAKyvC,OAAOj7B,QAAQ/G,YAC7B,EACAstH,cAAa,WACX,OAAQ/6H,KAAK6wD,UAAyC,IAA7B7wD,KAAK8wD,aAAaz1D,MAC7C,EACA2/H,eAAc,WACZ,QAASh7H,KAAKi7H,6BAChB,EACAhrE,cAAa,WACX,MAA8C,YAAvCjwD,KAAKi7H,6BACd,EACAC,oBAAmB,WACjB,OAAOl7H,KAAKm/D,MAAMvlE,EAAE,6BAA+BoG,KAAK4a,OAAO4B,WACjE,EACAo6G,SAAQ,WACN,OAAiC,OAA1B52H,KAAK4a,OAAOk4E,SACrB,EACAnmC,iBAAgB,WACd,OAAO3sD,KAAKyvC,OAAOtzC,MAAM4Q,SAAS4/C,gBACpC,IAEF7sD,QAAS,CACPq7H,eAAc,SAAE3+G,GACd,OAAQA,GACN,IAAK,UACH,MAAO,OACT,IAAK,WACH,MAAO,YACT,IAAK,SACH,MAAO,WACT,QACE,MAAO,QAEb,EACA4+G,UAAS,SAAE7vH,GACTvL,KAAKuL,MAAQA,CACf,EACAskC,WAAU,WACR7vC,KAAKuL,WAAQhH,CACf,EACA82H,eAAc,WA3VqB,IAAC9gH,EAChCy9G,EACAa,EACAZ,EAHgC19G,EA4VHva,KA3V7Bg4H,EAAYF,GA2VuB,YA1VnCe,EAAS,mBAAH,OAAsBb,GAC5BC,EAAmB,eAAH,OAAkBD,GACpCz9G,EAAIs+G,GACNt+G,EAAIs+G,KAEJt+G,EAAI09G,IAAqB19G,EAAI09G,EAsV7B,EACAqD,aAAY,SAAE3hI,GACRqG,KAAKg5H,gBACPh5H,KAAK+E,MAAM,OAAQpL,EAEvB,EACAo1D,eAAc,WACZ/uD,KAAK+E,MAAM,iBACb,EACAq9G,WAAU,WACRpiH,KAAKgiH,SAAWhiH,KAAKgiH,OACvB,EACAuZ,mBAAkB,WAChBv7H,KAAK04H,cAAgB14H,KAAK04H,YAC5B,EACApX,wBAAuB,SAAE3nH,EAAI+B,GAC3B,OAAOi9C,EAAAA,GAAAA,GAAoBh/C,EAAI+B,EAAMsE,KAAKyvC,OAAOtzC,MAAM4Q,SAASgG,oBAClE,EACAyoH,gBAAe,SAAE7hI,GACfo+H,GAA4B/3H,KAAM,eAAgBA,KAAK8wD,aAAa71D,OAAOtB,GAC7E,EACA8hI,mBAAkB,SAAE9hI,GAClBo+H,GAA4B/3H,KAAM,eAAgBA,KAAK8wD,aAAa/1D,QAAO,SAAAmpE,GAAO,OAAIA,IAAYvqE,CAAE,IACtG,EACA+hI,iBAAgB,SAAE9C,GAChB54H,KAAK44H,cAAgBA,CACvB,EACA5pE,oBAAmB,WACjBhvD,KAAK27H,+BACP,EACAC,oBAAmB,SAAEC,GACnB,IAAMliI,EAAKkiI,EACX,GAAI77H,KAAK4a,OAAOjhB,KAAOA,EAAI,CACzB,IAAMmiI,EAAO97H,KAAKs5C,IAAIqhB,wBAClBmhE,EAAK7hE,IAAM,KAGJ6hE,EAAK95G,QAAW5hB,OAAOyoB,YAAc,GAD9CzoB,OAAOwiE,SAAS,EAAGk5D,EAAK7hE,IAAM,KAIrB6hE,EAAK7hB,OAAS75G,OAAOyoB,YAAc,IAE5CzoB,OAAOwiE,SAAS,EAAGk5D,EAAK7hB,OAAS75G,OAAOyoB,YAAc,GAE1D,CACF,GAEF+vB,MAAO,CACLppB,UAAW,SAAU71B,GACnBqG,KAAK47H,oBAAoBjiI,EAC3B,EACA,oBAAqB,SAAUk+C,GAEzB73C,KAAKu6H,WAAav6H,KAAKy5H,2BAA2Bl6G,aAAevf,KAAKy5H,2BAA2Bl6G,YAAYlkB,SAAWw8C,GAC1H73C,KAAKyvC,OAAOvzC,SAAS,eAAgB8D,KAAK4a,OAAOjhB,GAErD,EACA,kBAAmB,SAAUk+C,GAEvB73C,KAAKu6H,WAAav6H,KAAKy5H,2BAA2Bz6G,aAAehf,KAAKy5H,2BAA2Bz6G,YAAY3jB,SAAWw8C,GAC1H73C,KAAKyvC,OAAOvzC,SAAS,YAAa8D,KAAK4a,OAAOjhB,GAElD,EACAohI,cAAe,SAAUtxE,GACvBzpD,KAAKyvD,YAAchG,CACrB,ICleJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,kmB1BLhD/oD,EAAAA,Y,iBAAU,WADnBJ,EAAAA,EAAAA,IA2fM,O,MAzfJowC,IAAI,OACJpxC,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,SAAQ,aACSh0C,EAAAA,WAAS,iBAAuBA,EAAAA,oB,CAG/CA,EAAAA,QAAK,WADbJ,EAAAA,EAAAA,IAWM,MAXNC,EAWM,mBAPDG,EAAAA,OAAQ,IACX,WAKO,QAJLpB,MAAM,8BACLS,QAAK,8BAAEW,EAAAA,YAAAA,EAAAA,WAAAA,MAAAA,EAAAA,UAAU,I,EAElBkwC,EAAAA,EAAAA,IAAuBQ,GAAAA,CAAfzoC,KAAK,gBAAO,eAGRjI,EAAAA,QAAUA,EAAAA,YAAS,WACjCJ,EAAAA,EAAAA,IAuCM,MAvCN2vC,EAuCM,EAtCJzvC,EAAAA,EAAAA,GAUQ,QAVR0vC,EAUQ,CARExvC,EAAAA,OAASA,EAAAA,UAAO,WADxBuwC,EAAAA,EAAAA,IAIEG,GAAAA,C,MAFA9xC,MAAM,0CACNqJ,KAAK,c,gBAEPioC,EAAAA,EAAAA,IAGEk9D,GAAAA,CAFC7wG,KAAMyD,EAAAA,OAAOzD,KACbg+G,IAAI,G,mBAIDv6G,EAAAA,wBAAqB,WAD7BJ,EAAAA,EAAAA,IAKQ,QALR+vC,GAKQ,QADH3vC,EAAAA,GAAG,wBAAD,oBAGCA,EAAAA,uBAAyBA,EAAAA,aAAarF,OAAS,IAAH,WADpDiF,EAAAA,EAAAA,IAKQ,QALRgwC,GAKQ,QADH5vC,EAAAA,GAAG,kCAAD,qBAEPF,EAAAA,EAAAA,GAKQ,SAJNlB,MAAM,aACLwN,MAAOpM,EAAAA,aAAawE,KAAK,Q,QAEvBxE,EAAAA,aAAawE,KAAK,OAAD,MAEtB1E,EAAAA,EAAAA,GAQS,UAPPlB,MAAM,yBACLS,QAAK,wCAAUW,EAAAA,YAAAA,EAAAA,WAAAA,MAAAA,EAAAA,UAAU,kB,EAE1BkwC,EAAAA,EAAAA,IAGEQ,GAAAA,CAFAzoC,KAAK,YACLrJ,MAAM,uC,WAKdgB,EAAAA,EAAAA,IA8bW8vC,EAAAA,GAAAA,CAAA/oC,IAAAA,GAAA,CA5bD3G,EAAAA,aAAU,WADlBJ,EAAAA,EAAAA,IASM,MATNkwC,EASM,EALJI,EAAAA,EAAAA,IAGEQ,GAAAA,CAFAzoC,KAAK,YACLrJ,MAAM,WAERkB,EAAAA,EAAAA,GAAoD,OAApDiwC,GAAoD,QAA7B/vC,EAAAA,GAAG,kBAAD,uBAGnBA,EAAAA,SAAYA,EAAAA,WAAcA,EAAAA,gBAqCzB,iBArCuC,WADhDJ,EAAAA,EAAAA,IAwCM,O,MAtCHhB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAAA,CAAGh0C,EAAAA,cAAe,CAAF6uB,YAAiB7uB,EAAAA,gBAEjC,iCADLqiD,OAAK,SAAGriD,EAAAA,iB,CAIDA,EAAAA,UAAO,WADfuwC,EAAAA,EAAAA,IAMEorB,GAAAA,C,MAJA/8D,MAAM,4BACLuxF,IAAKnwF,EAAAA,eACL,gBAAeA,EAAAA,aACfzD,KAAMyD,EAAAA,UAAUzD,M,yDAEnBuD,EAAAA,EAAAA,GA0BM,MA1BNkxC,EA0BM,EAzBJlxC,EAAAA,EAAAA,GAiBM,OAhBJlB,MAAM,gCACLwN,MAAOpM,EAAAA,W,CAGAA,EAAAA,gBAAa,WADrBuwC,EAAAA,EAAAA,IAQcJ,GAAAA,C,MANXvT,GAAI58B,EAAAA,sB,mBAEL,iBAGE,EAHFkwC,EAAAA,EAAAA,IAGE0rB,GAAAA,CAFCt7D,KAAMN,EAAAA,cACNtG,MAAOsG,EAAAA,cAActG,O,0DAG1B62C,EAAAA,EAAAA,IAG8BJ,GAAAA,C,MAD3BvT,GAAI58B,EAAAA,sB,mBACN,iBAAe,mBAAZA,EAAAA,WAAS,G,mCACT,KACN,QAAG,KAAM,MACT,QAIE0wC,GAAAA,CAHAzoC,KAAK,UACLrJ,MAAM,cACLwN,MAAOpM,EAAAA,GAAG,oB,2BACX,KACF,QAAGA,EAAAA,GAAG,sBAAD,UAKAA,EAAAA,U,WAmWTJ,EAAAA,EAAAA,IAsBM,MAtBNy7H,GAsBM,EAlBJv7H,EAAAA,EAAAA,GAMM,MANNw7H,GAMM,EALJprF,EAAAA,EAAAA,IAIEyrB,GAAAA,CAHA/8D,MAAM,cACLw/D,QAASp+D,EAAAA,QACTmwF,IAAKnwF,EAAAA,c,6BAGVF,EAAAA,EAAAA,GAUM,MAVNy7H,GAUM,EATJz7H,EAAAA,EAAAA,GAEM,MAFN07H,IAEM,QADDx7H,EAAAA,GAAG,0BAAD,GAGCA,EAAAA,WAAQ,WADhBuwC,EAAAA,EAAAA,IAKEkrF,GAAAA,C,MAHCtrE,SAAUnwD,EAAAA,SACVka,OAAQla,EAAAA,OACR07H,SAAQ17H,EAAAA,gB,iEAtXC,WADhBJ,EAAAA,EAAAA,IAmWM,O,MAjWHhB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAAA,CAAGh0C,EAAAA,UAAW,CAAF6uB,YAAiB7uB,EAAAA,UAAS,UAAaA,EAAAA,UAAYA,EAAAA,iBAE/D,qBADLqiD,OAAK,SAAIriD,EAAAA,YAET,YAAWA,EAAAA,M,CAGHA,EAAAA,W,iBAAS,WADlBJ,EAAAA,EAAAA,IAqBM,MArBNywC,EAqBM,EAjBJvwC,EAAAA,EAAAA,GAgBI,KAfDC,KAAMC,EAAAA,QAAQrH,QAAQqH,EAAAA,iBAAiBD,KACvCV,QAAK,sBAAN,cAAc,e,EAEd6wC,EAAAA,EAAAA,IAWcwrB,GAAAA,CAVX,UAAS17D,EAAAA,OAAOzD,KAAKtD,GACrB,mBAAiB,G,mBAElB,iBAME,EANFi3C,EAAAA,EAAAA,IAMEyrB,GAAAA,CALA/8D,MAAM,cACLuxF,IAAKnwF,EAAAA,aACLo+D,QAASp+D,EAAAA,QACT,gBAAeA,EAAAA,aACfzD,KAAMyD,EAAAA,OAAOzD,M,mFAKtBuD,EAAAA,EAAAA,GAqUM,MArUNupE,EAqUM,CAnUKrpE,EAAAA,W,iBAAS,WADlBJ,EAAAA,EAAAA,IA2MM,MA3MN4wC,EA2MM,EAvMJ1wC,EAAAA,EAAAA,GAsGM,MAtGN2wC,EAsGM,EArGJ3wC,EAAAA,EAAAA,GA6BM,MA7BNmuE,EA6BM,CA3BIjuE,EAAAA,OAAOzD,KAAKk/D,YAAS,WAD7B77D,EAAAA,EAAAA,IASK,M,MAPHhB,MAAM,kBACLwN,MAAOpM,EAAAA,OAAOzD,KAAKvB,M,EAEpBk1C,EAAAA,EAAAA,IAGE0rB,GAAAA,CAFCt7D,KAAMN,EAAAA,OAAOzD,KAAKvB,KAClBtB,MAAOsG,EAAAA,OAAOzD,KAAK7C,O,6CAGxBkG,EAAAA,EAAAA,IAMK,M,MAJHhB,MAAM,kBACLwN,MAAOpM,EAAAA,OAAOzD,KAAKvB,O,QAEjBgF,EAAAA,OAAOzD,KAAKvB,MAAI,OAErBk1C,EAAAA,EAAAA,IAKEk9D,GAAAA,CAJAxuG,MAAM,eACLwN,MAAOpM,EAAAA,OAAOzD,KAAKK,eACnBL,KAAMyD,EAAAA,OAAOzD,KACbg+G,IAAI,G,yBAGIv6G,EAAAA,OAAOzD,MAAQyD,EAAAA,OAAOzD,KAAK8zF,UAAO,WAD7CzwF,EAAAA,EAAAA,IAIC,O,MAFChB,MAAM,iBACL25C,IAAKv4C,EAAAA,OAAOzD,KAAK8zF,S,8BAItBvwF,EAAAA,EAAAA,GAqEO,OArEP0pE,EAqEO,EApELt5B,EAAAA,EAAAA,IAQcC,GAAAA,CAPZvxC,MAAM,qBACLg+B,GAAE,CAAA5hC,KAAAA,eAAAo5B,OAAAA,CAAAn7B,GAAwC+G,EAAAA,OAAO/G,M,mBAElD,iBAGE,EAHFi3C,EAAAA,EAAAA,IAGE6sB,GAAAA,CAFCC,KAAMh9D,EAAAA,OAAOg9B,WACb,cAAa,I,oCAIVh9B,EAAAA,OAAO8b,aAAU,WADzBlc,EAAAA,EAAAA,IAUO,Q,MARLhB,MAAM,kBACLwN,MAAOpM,EAAAA,qB,EAERkwC,EAAAA,EAAAA,IAIEQ,GAAAA,CAHA,iBACA9xC,MAAM,eACLqJ,KAAMjI,EAAAA,eAAeA,EAAAA,OAAO8b,a,wCAIzB9b,EAAAA,aAAeA,EAAAA,YAAS,WADhCJ,EAAAA,EAAAA,IAWS,U,MATPhB,MAAM,kBACLwN,MAAOpM,EAAAA,GAAG,iBACVX,QAAK,wCAAUW,EAAAA,gBAAAA,EAAAA,eAAAA,MAAAA,EAAAA,UAAc,kB,EAE9BkwC,EAAAA,EAAAA,IAIEQ,GAAAA,CAHA,iBACA9xC,MAAM,eACNqJ,KAAK,iB,sBAIDjI,EAAAA,UAAO,WADfJ,EAAAA,EAAAA,IAUS,U,MARPhB,MAAM,kBACLS,QAAK,wCAAUW,EAAAA,YAAAA,EAAAA,WAAAA,MAAAA,EAAAA,UAAU,kB,EAE1BkwC,EAAAA,EAAAA,IAIEQ,GAAAA,CAHA,iBACAzoC,KAAK,YACLrJ,MAAM,qB,eAIFoB,EAAAA,gBAAkBA,EAAAA,SAAWA,EAAAA,QAAQrF,SAAWqF,EAAAA,aAAU,WADlEJ,EAAAA,EAAAA,IAYS,U,MAVPhB,MAAM,kBACLwN,MAAOpM,EAAAA,cAAgBA,EAAAA,GAAG,sBAAwBA,EAAAA,GAAG,sBACrD,gBAAeA,EAAAA,cAAgB,OAAS,QACxCX,QAAK,wCAAUW,EAAAA,qBAAAA,EAAAA,oBAAAA,MAAAA,EAAAA,UAAmB,kB,EAEnCkwC,EAAAA,EAAAA,IAIEQ,GAAAA,CAHA,iBACA9xC,MAAM,eACLqJ,KAAMjI,EAAAA,cAAgB,aAAe,gB,wCAIlCA,EAAAA,OAASA,EAAAA,aAAU,WAD3BJ,EAAAA,EAAAA,IAWS,U,MATPhB,MAAM,kBACLwN,MAAOpM,EAAAA,GAAG,4CACVX,QAAK,wCAAUW,EAAAA,MAAAA,EAAAA,KAAAA,MAAAA,EAAAA,UAAI,kB,EAEpBkwC,EAAAA,EAAAA,IAIEQ,GAAAA,CAHA,iBACA9xC,MAAM,eACLqJ,KAAM,wB,0BAMPjI,EAAAA,SAAWA,EAAAA,kBAAe,WADlCJ,EAAAA,EAAAA,IA6EM,MA7EN+pE,EA6EM,CAxEI3pE,EAAAA,UAAO,WADfJ,EAAAA,EAAAA,IA0CO,OA1CP+sE,EA0CO,CArCI3sE,EAAAA,Y,WAyBTJ,EAAAA,EAAAA,IAKO,OALPgtE,EAKO,EADL9sE,EAAAA,EAAAA,GAA8D,OAA9D67H,GAA8D,QAA/B37H,EAAAA,GAAG,oBAAD,QA7BjB,WADlBuwC,EAAAA,EAAAA,IAwBgBqrF,GAAAA,C,MAtBb,YAAW57H,EAAAA,OAAOyyF,gBAAkBzyF,EAAAA,OAAOwc,sBAC5C5d,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,mBAAkB,mBAEKh0C,EAAAA,OAAOyyF,kBADpCpwC,MAAA,mB,mBAGA,iBAgBS,EAhBTviD,EAAAA,EAAAA,GAgBS,UAfPlB,MAAM,2BACL,aAAYoB,EAAAA,GAAG,kBACfX,QAAK,yCAAUW,EAAAA,aAAaA,EAAAA,OAAOwc,sBAAqB,kB,EAEzD0zB,EAAAA,EAAAA,IAIEQ,GAAAA,CAHA9xC,MAAM,8BACNqJ,KAAK,QACL4zH,KAAK,gB,QACL,KACF,QAAG,KAAM,MACT,OAIO,OAJP7J,GAIO,QADFhyH,EAAAA,GAAG,oBAAD,S,oCAWXkwC,EAAAA,EAAAA,IAKEqwE,GAAAA,CAJCrhH,QAASc,EAAAA,YACTlB,IAAKkB,EAAAA,iBACL,UAASA,EAAAA,OAAO2yF,oBAChB,mBAAkB3yF,EAAAA,OAAOuyF,yB,0EAOtBvyF,EAAAA,kBAAe,WADvBJ,EAAAA,EAAAA,IAoBO,OApBPitE,EAoBO,EAhBL/sE,EAAAA,EAAAA,GAUO,QATLlB,MAAM,WACL,aAAYoB,EAAAA,GAAG,qBACfX,QAAK,yCAAUW,EAAAA,aAAaA,EAAAA,OAAOwc,sBAAqB,kB,EAEzD1c,EAAAA,EAAAA,GAIO,OAJPg8H,GAIO,QADF97H,EAAAA,GAAG,oBAAD,SAIDA,EAAAA,kBAAe,WADvBuwC,EAAAA,EAAAA,IAIEwrF,GAAAA,C,MAFC1iH,SAAUrZ,EAAAA,aAAavD,MAAM,EAAG,GACjCmC,MAAM,uB,kEAEH,KACP,QAAG,KAAM,KAEDoB,EAAAA,kBAAe,WADvBuwC,EAAAA,EAAAA,IAIEwrF,GAAAA,C,MAFC1iH,SAAUrZ,EAAAA,aAAavD,MAAM,GAC9BmC,MAAM,iB,yDAIFoB,EAAAA,UAAYA,EAAAA,mBAAqBA,EAAAA,YAAS,WADlDJ,EAAAA,EAAAA,IAiBM,MAjBNmtE,EAiBM,EAbJ78B,EAAAA,EAAAA,IAYS8X,GAAAA,CAXPC,QAAQ,mBACRhrD,IAAI,Q,CAEO+/D,MAAI,SACb,iBAKE,EALF9sB,EAAAA,EAAAA,IAKE6sB,GAAAA,CAJA,eAAa,eACZC,KAAMh9D,EAAAA,OAAOoyF,UACb,cAAa,GACb,eAAa,G,kDAOxBliD,EAAAA,EAAAA,IAeEwwB,GAAAA,CAdA1wB,IAAI,UACH91B,OAAQla,EAAAA,OACR,aAAYA,EAAAA,UACZ8uB,UAAW9uB,EAAAA,UACXwoD,QAASxoD,EAAAA,UACT,0BAAyBA,EAAAA,sBACzB,+BAA8BA,EAAAA,2BAC9B,kCAAiCA,EAAAA,6BACjC,iCAAgCA,EAAAA,4BAChC,sCAAqCA,EAAAA,iCACrC,yCAAwCA,EAAAA,mCACxCg8H,YAAS,+BAAEh8H,EAAAA,gBAAgBstG,EAAM,GACjC2uB,aAAU,iCAAEj8H,EAAAA,mBAAmBstG,EAAM,GACrC4uB,aAAYl8H,EAAAA,kB,gRAIPA,EAAAA,iBAAmBA,EAAAA,WAAaA,EAAAA,SAAWA,EAAAA,QAAQrF,SAAM,WADjEiF,EAAAA,EAAAA,IA8BM,MA9BNotE,EA8BM,CAzBIhtE,EAAAA,0BAA4BA,EAAAA,QAAQrF,OAAS,IAAH,WADlDiF,EAAAA,EAAAA,IAOS,U,MALPhB,MAAM,8BACLwN,MAAOpM,EAAAA,IAAI,yBAA0BA,EAAAA,QAAQrF,OAAS,EAAG,CAANo8D,WAAoB/2D,EAAAA,QAAQrF,OAAS,IACxF0E,QAAK,0CAAUW,EAAAA,MAAAA,EAAAA,KAAAA,MAAAA,EAAAA,UAAI,mB,QAEjBA,EAAAA,IAAI,kCAAmCA,EAAAA,QAAQrF,OAAS,EAAG,CAANo8D,WAAoB/2D,EAAAA,QAAQrF,OAAS,KAAH,mBAE5FiF,EAAAA,EAAAA,IAKO,OALPqtE,GAKO,QADFjtE,EAAAA,GAAG,wBAAD,mBAEPJ,EAAAA,EAAAA,IAWgB8vC,EAAAA,GAAAA,MAAAA,EAAAA,EAAAA,IAVE1vC,EAAAA,SAAO,SAAhBy3C,G,kBADTlH,EAAAA,EAAAA,IAWgBqrF,GAAAA,CATbj1H,IAAK8wC,EAAMx+C,GACX,YAAWw+C,EAAMx+C,I,mBAElB,iBAKS,EALT6G,EAAAA,EAAAA,GAKS,UAJPlB,MAAM,mCACLS,SAAK,4BAAUW,EAAAA,aAAay3C,EAAMx+C,GAAE,kB,QAElCw+C,EAAMz8C,MAAI,K,0DAKnBk1C,EAAAA,EAAAA,IAmCaq3E,EAAAA,GAAAA,CAnCDvsH,KAAK,QAAM,C,kBACrB,iBAiCM,EAhCGgF,EAAAA,eAAiBA,EAAAA,WAAaA,EAAAA,4BAA4BrF,OAAS,IAAH,WADzEiF,EAAAA,EAAAA,IAiCM,MAjCNu8H,EAiCM,EA7BJr8H,EAAAA,EAAAA,GA4BM,MA5BNs8H,EA4BM,CA1BIp8H,EAAAA,2BAA2B6e,aAAe7e,EAAAA,2BAA2B6e,YAAYlkB,OAAS,IAAH,WAD/F41C,EAAAA,EAAAA,IAUkB0mF,GAAAA,C,MARf36H,MAAO0D,EAAAA,2BAA2B6e,a,mBAEnC,iBAKM,EALN/e,EAAAA,EAAAA,GAKM,MALNytE,EAKM,EAJJztE,EAAAA,EAAAA,GAAoD,IAApD0tE,GAAoD,QAA3BxtE,EAAAA,GAAG,mBAAD,IAC3BF,EAAAA,EAAAA,GAEM,MAFN2tE,GAEM,QADDztE,EAAAA,2BAA2B6e,YAAYlkB,QAAM,K,uCAK9CqF,EAAAA,2BAA2Bse,aAAete,EAAAA,2BAA2Bse,YAAY3jB,OAAS,IAAH,WAD/F41C,EAAAA,EAAAA,IAYkB0mF,GAAAA,C,MAVf36H,MAAO0D,EAAAA,2BAA2Bse,a,mBAEnC,iBAOM,EAPNxe,EAAAA,EAAAA,GAOM,MAPNu8H,EAOM,EAJJv8H,EAAAA,EAAAA,GAAsD,IAAtDw8H,GAAsD,QAA7Bt8H,EAAAA,GAAG,qBAAD,IAC3BF,EAAAA,EAAAA,GAEM,MAFN4tE,GAEM,QADD1tE,EAAAA,2BAA2Bse,YAAY3jB,QAAM,K,wCAItDmF,EAAAA,EAAAA,GAEM,MAFN6tE,EAEM,EADJz9B,EAAAA,EAAAA,IAAmDqsF,GAAAA,CAAtCjgI,MAAO0D,EAAAA,6BAA2B,yC,WAO9CA,EAAAA,aAAaigF,2BAA4BjgF,EAAAA,WAAgBA,EAAAA,WAAcA,EAAAA,W,iBAAS,WADzFuwC,EAAAA,EAAAA,IAGEisF,GAAAA,C,MADCtiH,OAAQla,EAAAA,Q,oBAIFA,EAAAA,WAAcA,EAAAA,W,iBAAS,WADhCJ,EAAAA,EAAAA,IA2BM,MA3BN68H,GA2BM,EAvBJvsF,EAAAA,EAAAA,IAIEurF,GAAAA,CAHCtrE,SAAUnwD,EAAAA,SACVka,OAAQla,EAAAA,OACR07H,SAAQ17H,EAAAA,gB,0CAEXkwC,EAAAA,EAAAA,IAIEwsF,GAAAA,CAHC5gH,WAAY9b,EAAAA,OAAO8b,WACnB,YAAW9b,EAAAA,SACXka,OAAQla,EAAAA,Q,6CAEXkwC,EAAAA,EAAAA,IAGEysF,GAAAA,CAFC,YAAW38H,EAAAA,SACXka,OAAQla,EAAAA,Q,+BAGHA,EAAAA,WAAQ,WADhBuwC,EAAAA,EAAAA,IAGEqsF,GAAAA,C,MADC1iH,OAAQla,EAAAA,Q,qCAEXkwC,EAAAA,EAAAA,IAIE2sF,GAAAA,CAHC3iH,OAAQla,EAAAA,OACR88H,UAAS98H,EAAAA,UACT+8H,YAAW/8H,EAAAA,Y,0DA6BZA,EAAAA,WAAQ,WADhBJ,EAAAA,EAAAA,IAaM,MAbNo9H,GAaM,EATJ9sF,EAAAA,EAAAA,IAQE4B,GAAAA,CAPAlzC,MAAM,aACL,WAAUoB,EAAAA,OAAO/G,GACjBsH,WAAYP,EAAAA,OAAOO,WACnB,eAAcP,EAAAA,OAAOzD,KACrB,qBAAoByD,EAAAA,OAAO8b,WAC3BmvG,QAASjrH,EAAAA,aACTqpD,SAAQrpD,EAAAA,gB,kO2B1cXpB,MAAM,2B,+CC5BCA,MAAM,uB,GACHA,MAAM,qB,uGAmCPA,MAAM,e,GAWdA,MAAM,gB,kBAUJA,MAAM,S,6DCvEjB,SACE5D,KAAM,OACN6D,MAAO,CAAC,WAAY,SACpBsB,WAAY,CACV27D,QAAAA,EAAAA,EACAR,YAAAA,EAAAA,GAEF/hE,KAAI,WACF,MAAO,CACL8e,SAAS,EACTgsB,QAAS,GACT8wE,WAAY,UAAGr6G,KAAKs6G,UAAW73G,QAAQ,IAAK,KAEhD,EACAo4C,QAAO,WACAr2C,KAAKyvC,OAAOtzC,MAAM0oC,MAAMZ,YAAYjkC,KAAKwkC,SAC5CxkC,KAAKyvC,OAAOvzC,SAAS,iBAAkB8D,KAAK29H,UAE9C39H,KAAKyvC,OAAOvzC,SAAS,YAAa8D,KAAKwkC,OACzC,EACAic,UAAS,WACPzgD,KAAKyvC,OAAOvzC,SAAS,cAAe8D,KAAKwkC,OAC3C,EACAt9B,SAAU,CACRs9B,OAAM,WACJ,OAAOxkC,KAAK29H,SAAShkI,EACvB,EACAmoB,KAAI,WAEF,OADkB9hB,KAAKyvC,OAAOtzC,MAAM0oC,MAAMZ,YAAYjkC,KAAKwkC,SACvC,CAAC,CACvB,EACAs+B,QAAO,WACL,OAAQ9iE,KAAK8hB,MAAQ9hB,KAAK8hB,KAAKghD,SAAY,EAC7C,EACA86D,UAAS,WACP,OAAQ59H,KAAK8hB,MAAQ9hB,KAAK8hB,KAAKwiB,YAAe,CAChD,EACAF,QAAO,WACL,OAAQpkC,KAAK8hB,MAAQ9hB,KAAK8hB,KAAKsiB,UAAY,CAC7C,EACA1d,SAAQ,WACN,OAAO1mB,KAAKyvC,OAAOtzC,MAAMa,MAAM2Q,WACjC,EACAkwH,YAAW,WACT,OAAO79H,KAAK8hB,KAAKg8G,OAAS99H,KAAKokC,UAAYpkC,KAAK0mB,QAClD,EACAq3G,gBAAe,WACb,OAAO/9H,KAAK8hB,KAAKk8G,WACnB,EACAC,eAAc,WACZ,MAAO,CACLllH,QAAS/Y,KAAK+Y,QAElB,EACAmlH,cAAa,WAIX,OAAOl+H,KAAK+kC,QACThsC,KAAI,SAACisB,EAAO3hB,GAAK,OAAK2hB,GAAS3hB,CAAK,IACpCtI,QAAO,SAAA6Q,GAAK,MAAqB,iBAAVA,CAAkB,GAC9C,EACAuyH,WAAU,WACR,IAAMC,EAAyC,IAA9Bp+H,KAAKk+H,cAAc7iI,OACpC,OAAO2E,KAAK+Y,SAAWqlH,CACzB,GAEFt+H,QAAS,CACPu+H,oBAAmB,SAAE98G,GACnB,OAAgC,IAAzBvhB,KAAK+9H,gBAAwB,EAAIviI,KAAKk0F,MAAMnuE,EAAQvhB,KAAK+9H,gBAAkB,IACpF,EACAO,YAAW,SAAE1xH,GACX,MAAO,GAAP,OAAUA,EAAOoxH,YAAW,YAAIh+H,KAAK+9H,gBAAe,YAAI/9H,KAAKg4D,GAAG,eAClE,EACApzB,UAAS,WACP5kC,KAAKyvC,OAAOvzC,SAAS,cAAe,CAAEvC,GAAIqG,KAAK0V,SAAU8uB,OAAQxkC,KAAK8hB,KAAKnoB,IAC7E,EACA4kI,eAAc,SAAEl7H,GASd,IAAMsC,EAAc3F,KAAKs5C,IAAIk8C,iBAAiB,SACxCgpC,EAAiBx+H,KAAKs5C,IAAIC,cAAc,gBAAD,OAAiBl2C,EAAK,OAC/DrD,KAAK8hB,KAAKkoE,SAEZw0C,EAAej2E,SAAWi2E,EAAej2E,SAGzC,IAAQ5iD,GAAa,SAAAskH,GAAaA,EAAQ1hE,SAAU,CAAM,IAC1Di2E,EAAej2E,SAAU,GAE3BvoD,KAAK+kC,QAAU,IAAIp/B,GAAa,SAAApM,GAAC,OAAIA,EAAEgvD,OAAO,GAChD,EACAk2E,SAAQ,SAAEp7H,GACR,MAAO,OAAP,OAAcrD,KAAK8hB,KAAKnoB,GAAE,YAAI0J,EAChC,EACA2hC,KAAI,WAAI,WAC4B,IAA9BhlC,KAAKk+H,cAAc7iI,SACvB2E,KAAK+Y,SAAU,EACf/Y,KAAKyvC,OAAOvzC,SACV,WACA,CAAEvC,GAAIqG,KAAK0V,SAAU8uB,OAAQxkC,KAAK8hB,KAAKnoB,GAAIorC,QAAS/kC,KAAKk+H,gBACzD5kI,MAAK,SAAAwoB,GACL,EAAK/I,SAAU,CACjB,IACF,I,eC3GJ,MAEA,GAFiC,OAAgB,EAAQ,CAAC,CAAC,S,iHFNzDzY,EAAAA,EAAAA,IA+FM,OA9FJhB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,OACEh0C,EAAAA,kB,EAERF,EAAAA,EAAAA,GA2DM,OA1DHwiD,KAAMtiD,EAAAA,YAAc,UAAaA,EAAAA,KAAKspF,SAAW,QAAU,c,gBAE5D1pF,EAAAA,EAAAA,IAuDM8vC,EAAAA,GAAAA,MAAAA,EAAAA,EAAAA,IAtDsB1vC,EAAAA,SAAO,SAAzBkM,EAAQvJ,G,kBADlB/C,EAAAA,EAAAA,IAuDM,OArDH+G,IAAKhE,EACN/D,MAAM,e,CAGEoB,EAAAA,cAAW,WADnBJ,EAAAA,EAAAA,IAmBM,O,MAjBHwM,MAAOpM,EAAAA,YAAYkM,GACpBtN,MAAM,iB,EAENkB,EAAAA,EAAAA,GASM,MATN0vC,EASM,EARJ1vC,EAAAA,EAAAA,GAEO,OAFP6vC,GAEO,QADF3vC,EAAAA,oBAAoBkM,EAAOoxH,cAAe,KAC/C,IACAptF,EAAAA,EAAAA,IAIE0rB,EAAAA,CAHCt7D,KAAM4L,EAAO8mF,WACb,gBAAc,EACdt5F,MAAOsG,EAAAA,O,4BAGZF,EAAAA,EAAAA,GAGE,OAFAlB,MAAM,cACLyjD,OAAK,yBAAgBriD,EAAAA,oBAAoBkM,EAAOoxH,aAAW,Q,4BAGhE19H,EAAAA,EAAAA,IA6BM,O,MA3BJwxH,SAAS,IACR9uE,KAAMtiD,EAAAA,KAAKspF,SAAW,WAAa,QACnC,kBAAe,sBAAiBtpF,EAAAA,WAAU,YAAI2C,GAC9C,eAAc3C,EAAAA,QAAQ2C,GACtBtD,QAAK,mBAAEW,EAAAA,eAAe2C,EAAK,G,CAGpB3C,EAAAA,KAAKspF,WAAQ,WADrB1pF,EAAAA,EAAAA,IAMC,S,MAJCZ,KAAK,WACLJ,MAAM,gBACLmJ,SAAU/H,EAAAA,QACVkL,MAAOvI,G,wBAEV/C,EAAAA,EAAAA,IAKC,S,MAHCZ,KAAK,QACJ+I,SAAU/H,EAAAA,QACVkL,MAAOvI,G,YAEV7C,EAAAA,EAAAA,GAOQ,QAPRiwC,EAOQ,EANNG,EAAAA,EAAAA,IAKE0rB,EAAAA,CAJC3iE,GAAE,sBAAiB+G,EAAAA,WAAU,YAAI2C,GACjCrC,KAAM4L,EAAO8mF,WACb,gBAAc,EACdt5F,MAAOsG,EAAAA,O,yDAMlBF,EAAAA,EAAAA,GA8BM,MA9BNkxC,EA8BM,CA5BKhxC,EAAAA,aAMF,iBANa,WADpBJ,EAAAA,EAAAA,IAQS,U,MANPhB,MAAM,sCACNI,KAAK,SACJ+I,SAAU/H,EAAAA,WACVX,QAAK,8BAAEW,EAAAA,MAAAA,EAAAA,KAAAA,MAAAA,EAAAA,UAAI,K,QAETA,EAAAA,GAAG,eAAD,OAEPF,EAAAA,EAAAA,GAOM,MAPNswC,EAOM,CANyC,iBAAtBpwC,EAAAA,KAAKg+H,eAAY,WAAxCp+H,EAAAA,EAAAA,IAEW8vC,EAAAA,GAAAA,CAAA/oC,IAAAA,GAAA,mBADN3G,EAAAA,IAAI,2BAA4BA,EAAAA,KAAKg+H,aAAc,CAAFn9G,MAAW7gB,EAAAA,KAAKg+H,gBAAkB,OACxF,sBACAp+H,EAAAA,EAAAA,IAEW8vC,EAAAA,GAAAA,CAAA/oC,IAAAA,GAAA,mBADN3G,EAAAA,IAAI,oBAAqBA,EAAAA,KAAKs9H,YAAa,CAAFz8G,MAAW7gB,EAAAA,KAAKs9H,eAAiB,OAC/E,YAEFx9H,EAAAA,EAAAA,GAWO,cAVLowC,EAAAA,EAAAA,IASS8X,EAAAA,CARPt+B,MAAM,SACLu+B,QAASjoD,EAAAA,QAAU,gBAAkB,oB,mBAEtC,iBAIE,EAJFkwC,EAAAA,EAAAA,IAIE6sB,EAAAA,CAHCC,KAAMh9D,EAAAA,UACN,cAAa,GACb,gBAAe,G,kFGtFnBpB,MAAM,Q,uQCOfq6B,EAAAA,GAAAA,IACE+wE,EAAAA,IACAC,EAAAA,IACAC,EAAAA,IACA+zB,EAAAA,IACAlU,EAAAA,KAiHF,QA9GsB,CACpB/uH,KAAM,gBACN6D,MAAO,CACL,UACA,SACA,UACA,YACA,cACA,aACA,cACA,mBACA,qBACA,oBACA,yBACA,4BAEFtF,KAAI,WACF,MAAO,CACL2kI,WAAY5+H,KAAK4a,OAAOhc,KAAKvD,OAC7BwjI,gBAAgB,EAEpB,EACA33H,S,qWAAU,CAAF,CACN43H,4BAA2B,WACzB,OAAO9+H,KAAKyN,aAAa8B,0BAC3B,EAQAwvH,WAAU,WACR,OAAI/+H,KAAKg/H,aAAch/H,KAAK8+D,SACR9+D,KAAK4a,OAAOwiD,SAAS+d,MAAM,UAAU9/E,OAAS2E,KAAK4+H,WAAa,GAC/D,EACvB,EACAK,YAAW,WACT,OAAOj/H,KAAK4a,OAAOuiD,QAAQ9hE,OAAS,GACtC,EAEA6jI,wBAAuB,WACrB,QAASl/H,KAAK4a,OAAOuiD,SAAWn9D,KAAK8+H,2BACvC,EACAK,qBAAoB,WAClB,OAAOn/H,KAAK++H,cAAgB/+H,KAAK4a,OAAOuiD,SAAWn9D,KAAK8+H,4BAC1D,EACAM,kBAAiB,WACf,OAAOp/H,KAAKk/H,0BAA4Bl/H,KAAK2wD,gBAC/C,EACA0uE,eAAc,WACZ,OAAOr/H,KAAKm/H,uBAAyBn/H,KAAK0wD,WAC5C,EACA4uE,YAAW,WACT,OAAQt/H,KAAKm/H,sBAAwBn/H,KAAK0wD,aAAiB1wD,KAAKk/H,yBAA2Bl/H,KAAK2wD,gBAClG,EACA4uE,gBAAe,WACb,OAAOv/H,KAAK4a,OAAOH,YAAY1hB,KAAI,SAAA8jE,GAAI,OAAIC,EAAAA,EAAAA,SAAkBD,EAAKh6B,SAAS,GAC7E,IACGsM,EAAAA,EAAAA,IAAW,CAAC,kBAEjBtuC,WAAY,CACVm7D,YAAAA,EAAAA,GAEFljB,QAAO,WAAI,WACT94C,KAAK4a,OAAO3Z,YAAcjB,KAAK4a,OAAO3Z,WAAW+T,SAAQ,SAAAglH,GACvD,IAAQrgI,EAAOqgI,EAAPrgI,GACR,EAAK81C,OAAOvzC,SAAS,qBAAsBvC,EAC7C,GACF,EACAmG,QAAS,CACP88H,aAAY,SAAE93H,GAAO,WACnB,IAAI9E,KAAK6+H,eAAT,CACA7+H,KAAK6+H,gBAAiB,EACtB7+H,KAAK+E,MAAM,aAAcD,GACzB,IAAQnD,EAAuCmD,EAAvCnD,gBAAiBC,EAAsBkD,EAAtBlD,kBACzBD,EACG5G,QAAO,SAAAw4B,GAAO,OAAKA,EAAQrvB,SAAS,IACpC8Q,SAAQ,SAAAue,GACP,IAAQ3zB,EAAiB2zB,EAAjB3zB,QAASJ,EAAQ+zB,EAAR/zB,IACX6G,EAAgBzG,EAAQ3B,QAAQ,aAAc,IACpD,GAAKoI,EAAczK,WAAW,KAA9B,CACA,IAAM4jI,EAASn5H,EAAclJ,MAAM,GAC7Bm2H,EAAO9zH,EAAIvB,QAAQ,eAAgB,IAAIA,QAAQ,SAAU,IAC/D,EAAKwxC,OAAOvzC,SAAS,qBAAsB,GAAF,OAAKsjI,EAAM,YAAIlM,GAHd,CAI5C,IAOFtzH,KAAK4+H,WAAah9H,EAAkB+M,QAAO,SAACC,EAAK2kB,GAC/C,OAAO3kB,EAAM2kB,EAAQvuB,YAAY3J,OAAS,CAC5C,GAAG2E,KAAK4+H,WAtBuB,CAuBjC,EACA5d,eAAc,WACRhhH,KAAKm/H,qBACPn/H,KAAKy/H,oBACIz/H,KAAKk/H,yBACdl/H,KAAK0/H,wBAET,EACAx/H,gBAAe,SAAEvC,GACf,MAAO,QAAP,OAAeA,EACjB,ICrHJ,GAFiC,OAAgB,EAAQ,CAAC,CAAC,S,2FFNzD2C,EAAAA,EAAAA,IA+FM,OA9FJhB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,aAAY,YACIh0C,EAAAA,Y,EAEtBF,EAAAA,EAAAA,GAyFM,MAzFND,EAyFM,CAvFIG,EAAAA,OAAO8yF,mBAAgB,WAD/BlzF,EAAAA,EAAAA,IAwBM,O,MAtBJhB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,kBAAiB,SACHh0C,EAAAA,cAAgBA,EAAAA,uB,EAEpCkwC,EAAAA,EAAAA,IAIE0rB,EAAAA,CAHAh9D,MAAM,qBACL0B,KAAMN,EAAAA,OAAO8yF,iBACbp5F,MAAOsG,EAAAA,OAAO/F,Q,mCAEjB6F,EAAAA,EAAAA,GAMS,UAJPlB,MAAM,2CACLS,QAAK,wCAAUW,EAAAA,0BAAAA,EAAAA,yBAAAA,MAAAA,EAAAA,UAAwB,mB,QAErCA,EAAAA,GAAG,6BAAD,YAJGA,EAAAA,aAAeA,EAAAA,uBAAkB,SAM3CF,EAAAA,EAAAA,GAMS,UAJPlB,MAAM,2CACLS,QAAK,wCAAUW,EAAAA,0BAAAA,EAAAA,yBAAAA,MAAAA,EAAAA,UAAwB,mB,QAErCA,EAAAA,GAAG,6BAAD,YAJGA,EAAAA,cAAgBA,EAAAA,uBAAkB,qBAO9CF,EAAAA,EAAAA,GA8DM,OA7DHlB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAAA,CAAA,eAAmBh0C,EAAAA,gBACnB,kB,WAENF,EAAAA,EAAAA,GAOS,UALPlB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,0CAAyC,YACzBh0C,EAAAA,WACrBX,QAAK,wCAAUW,EAAAA,gBAAAA,EAAAA,eAAAA,MAAAA,EAAAA,UAAc,mB,QAE3BA,EAAAA,GAAG,sBAAD,UALGA,EAAAA,kBAQDA,EAAAA,mBAAuBA,EAAAA,YAAcA,EAAAA,OAAO8yF,kB,iBAAgB,WADrEviD,EAAAA,EAAAA,IAUEqrB,EAAAA,C,MARCh9D,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAAA,CAAA,eAAoBh0C,EAAAA,YACpB,oBACLM,KAAMN,EAAAA,OAAO08D,SACbhjE,MAAOsG,EAAAA,OAAO/F,OACd,gBAAc,EACdyG,UAAWV,EAAAA,aAAaU,UACxBH,WAAYP,EAAAA,OAAOO,WACnB27H,aAAYl8H,EAAAA,c,oFAGfF,EAAAA,EAAAA,GA8BS,UA5BPlB,MAAM,wCACLS,QAAK,wCAAUW,EAAAA,gBAAAA,EAAAA,eAAAA,MAAAA,EAAAA,UAAc,kB,mBAE3BA,EAAAA,GAAG,wBAAyB,IAC/B,GACQA,EAAAA,gBAAgB5D,SAAS,WAAD,WADhCm0C,EAAAA,EAAAA,IAGEG,EAAAA,C,MADAzoC,KAAK,Y,eAGCjI,EAAAA,gBAAgB5D,SAAS,WAAD,WADhCm0C,EAAAA,EAAAA,IAGEG,EAAAA,C,MADAzoC,KAAK,Y,eAGCjI,EAAAA,gBAAgB5D,SAAS,WAAD,WADhCm0C,EAAAA,EAAAA,IAGEG,EAAAA,C,MADAzoC,KAAK,Y,eAGCjI,EAAAA,gBAAgB5D,SAAS,aAAD,WADhCm0C,EAAAA,EAAAA,IAGEG,EAAAA,C,MADAzoC,KAAK,W,eAGCjI,EAAAA,OAAOohB,MAAQphB,EAAAA,OAAOohB,KAAKghD,UAAO,WAD1C7xB,EAAAA,EAAAA,IAGEG,EAAAA,C,MADAzoC,KAAK,a,eAGCjI,EAAAA,OAAOwzF,OAAI,WADnBjjD,EAAAA,EAAAA,IAGEG,EAAAA,C,MADAzoC,KAAK,W,4BA3BCjI,EAAAA,sBAAiB,SA8B3BF,EAAAA,EAAAA,GAMS,UAJPlB,MAAM,uCACLS,QAAK,wCAAUW,EAAAA,gBAAAA,EAAAA,eAAAA,MAAAA,EAAAA,UAAc,mB,QAE3BA,EAAAA,WAAaA,EAAAA,GAAG,qBAAuBA,EAAAA,GAAG,wBAAD,YAJpCA,EAAAA,cAAgBA,EAAAA,gBAAW,KAQ5BA,EAAAA,mBAAqB,gBAAlCgzC,EAAAA,EAAAA,IAAkChzC,EAAAA,OAAAA,UAAAA,CAAA2G,IAAAA,KAAA,E,ylBG/EtCsyB,EAAAA,GAAAA,IACE+kB,EAAAA,IACAgsD,EAAAA,IACAC,EAAAA,IACAC,EAAAA,IACA+zB,EAAAA,IACAlU,EAAAA,KAGF,IAEwC9xH,EAFlCm/H,EAAY,SAAAp8H,GAAI,OAAIA,EAAK87F,OAAO,GAAGsU,cAAgBpwG,EAAKyB,MAAM,EAAE,EAahEwiI,EAAiC,SAACplH,EAAK7e,GAC3C,IAAMs8H,EAAYF,EAAUp8H,GACtBm9H,EAAS,mBAAH,OAAsBb,GAC5BC,EAAmB,eAAH,OAAkBD,GACpCz9G,EAAIs+G,GACNt+G,EAAIs+G,KAEJt+G,EAAI09G,IAAqB19G,EAAI09G,EAEjC,EAmFA,QAjFsB,CACpBv8H,KAAM,gBACN6D,MAAO,CACL,SACA,UACA,UACA,YACA,cACA,aACA,wBACA,6BACA,8BACA,mCACA,+BACA,sCAEFtF,KAAI,WACF,MAAO,CACL2lI,wBAAyB5/H,KAAK6/H,aAAgB7/H,KAAKg5H,gBAAkBh5H,KAAKkpD,QAC1E42E,gCAAgC,EAEhCC,8BAA+B//H,KAAKyvC,OAAOj7B,QAAQ/G,aAAa8B,2BAEpE,EACArI,SAAU,UA9C4BvO,EA+CD,CAAC,cAAe,mBAAoB,sBA/C3BA,EAAKgW,QAAO,SAACV,EAAKvS,GAChE,IAAMs8H,EAAYF,EAAUp8H,GACtBm9H,EAAS,mBAAH,OAAsBb,GAC5Bc,EAAiB,aAAH,OAAgBd,GAC9BC,EAAmB,eAAH,OAAkBD,GAIxC,OAHA/pH,EAAIvS,GAAQ,WACV,YAAgC6I,IAAvBvE,KAAKkzH,MAAM2F,SAAiDt0H,IAAxBvE,KAAKwzC,OAAOqlF,KAA0B74H,KAAK64H,GAAkC74H,KAAKi4H,GAA5Bj4H,KAAK84H,EAC1G,EACO7qH,CACT,GAAG,CAAC,KAsC6F,IAC7F6jD,gBAAe,WACb,OAAQ9xD,KAAKyN,aAAaqkD,kBAAoB9xD,KAAKg5H,gBAChDh5H,KAAKyN,aAAaskD,uBAAyB/xD,KAAKg5H,cACrD,EACAgH,iBAAgB,WACd,SAAKhgI,KAAK4a,OAAOoF,MAGbhgB,KAAK4a,OAAOuiD,SAAWn9D,KAAK8+H,4BAIlC,EACAmB,eAAc,WACZ,OAAIjgI,KAAK8+D,QACA,QACG9+D,KAAKyN,aAAaqkD,kBAAoB9xD,KAAKg5H,gBACpDh5H,KAAKyN,aAAaskD,uBAAyB/xD,KAAKg5H,gBAChDh5H,KAAK4a,OAAOH,YAAYpf,OAAS2E,KAAKsgF,cAChC,OAEF,QACT,EACAA,cAAa,WACX,OAAOtgF,KAAKyN,aAAa6yE,aAC3B,IACGnxC,EAAAA,EAAAA,IAAW,CAAC,mBACZxnC,EAAAA,EAAAA,IAAS,CACVgG,YAAa,SAAAxR,GAAK,OAAIA,EAAMa,MAAM2Q,WAAW,KAGjD9M,WAAY,CACV4+D,WAAAA,EAAAA,EACAygE,KAAAA,EACAvgE,QAAAA,EAAAA,EACAC,YAAAA,EAAAA,EACAlD,WAAAA,GAEF58D,QAAS,CACP2/H,kBAAiB,WACfE,EAA+B3/H,KAAM,cACvC,EACA0/H,uBAAsB,WACpBC,EAA+B3/H,KAAM,mBACvC,EACAmgI,yBAAwB,WACtBR,EAA+B3/H,KAAM,qBACvC,EACA0iC,SAAQ,WAAI,WACJjoB,EAAsC,SAAxBza,KAAKigI,eAA4BjgI,KAAK4a,OAAOH,YAAcza,KAAKogI,mBACpF,OAAO,kBAAM,EAAK3wF,OAAOvzC,SAAS,WAAYue,EAAY,CAC5D,ICrHJ,GAFiC,OAAgB,EAAQ,CAAC,CAAC,S,8JRNzDna,EAAAA,EAAAA,IAuDM,OAtDJhB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,gBAAe,YACCh0C,EAAAA,Y,EAEtBgzC,EAAAA,EAAAA,IAAsBhzC,EAAAA,OAAAA,WACtBkwC,EAAAA,EAAAA,IAgDa+sB,EAAAA,CA/CV/iD,OAAQla,EAAAA,OACRo+D,QAASp+D,EAAAA,QACT,cAAaA,EAAAA,WACb,eAAcA,EAAAA,YACd,oBAAmBA,EAAAA,iBACnB,uBAAsBA,EAAAA,mBACtB,sBAAqBA,EAAAA,kBACrB,2BAA0BA,EAAAA,uBAC1B,8BAA6BA,EAAAA,yBAC7Bk8H,aAAU,+BAAEl8H,EAAAA,MAAM,aAAcstG,EAAM,I,mBAEvC,iBAKM,CALKttG,EAAAA,OAAOohB,MAAQphB,EAAAA,OAAOohB,KAAKghD,UAAYpiE,EAAAA,UAAO,WAAzDJ,EAAAA,EAAAA,IAKM,UAJJswC,EAAAA,EAAAA,IAGEyvF,EAAAA,CAFC,YAAW3/H,EAAAA,OAAOohB,KAClB1nB,MAAOsG,EAAAA,OAAO/F,Q,iCAIH+F,EAAAA,OAAOohB,MAAQphB,EAAAA,OAAOohB,KAAKghD,SAAWpiE,EAAAA,UAAO,WAA7DJ,EAAAA,EAAAA,IAKM,UAJJswC,EAAAA,EAAAA,IAGEQ,EAAAA,CAFAzoC,KAAK,SACLgpC,KAAK,W,eAK6B,IAA9BjxC,EAAAA,OAAO+Z,YAAYpf,SAAM,WADjC41C,EAAAA,EAAAA,IAUE6hF,EAAAA,C,MARAxzH,MAAM,yBACLw/D,QAASp+D,EAAAA,QACTsf,KAAMtf,EAAAA,iBACN+Z,YAAa/Z,EAAAA,OAAO+Z,YACpB4J,MAAO3jB,EAAAA,QAAU,EAAI,EACrBixC,KAAMjxC,EAAAA,eACN6sG,OAAI,+BAAE7sG,EAAAA,MAAM,YAAaA,EAAAA,WAAW/G,GAAE,GACtC6zG,QAAK,+BAAE9sG,EAAAA,MAAM,aAAcA,EAAAA,WAAW/G,GAAE,I,0EAInC+G,EAAAA,OAAOwzF,MAASxzF,EAAAA,WAAcA,EAAAA,S,iBAAO,WAD7CJ,EAAAA,EAAAA,IASM,MATN4vC,EASM,EALJU,EAAAA,EAAAA,IAIE0vF,EAAAA,CAHCpsC,KAAMxzF,EAAAA,OAAOwzF,KACbviD,KAAMjxC,EAAAA,eACNsf,KAAMtf,EAAAA,kB,2NAIbgzC,EAAAA,EAAAA,IAAsBhzC,EAAAA,OAAAA,WAAAA,E,sFS/CpBgwC,IAAI,U,8DC+DV,QAvEmB,CACjBnxC,MAAO,CACL,MACA,iBACA,WACA,iBACA,mBACA,MACA,SACA,QACA,UACA,WAEFtF,KAAI,WACF,MAAO,CAELsmI,QAASvgI,KAAKi5C,IACd2nC,SAAU5gF,KAAKyvC,OAAOj7B,QAAQ/G,aAAamzE,SAE/C,EACA15E,SAAU,CACRytH,SAAQ,WACN,QAAK30H,KAAKugI,SAIHvgI,KAAK4gF,WAA+B,cAAlB5gF,KAAK6iC,UAA4B7iC,KAAKugI,QAAQ9qH,SAAS,QAClF,EACAstC,MAAK,WACH,IAAMy9E,EAAW,SAAC1zD,GAAG,MAAK,MAAMsyC,KAAKtyC,GAAOA,EAAM,KAAOA,CAAG,EAC5D,MAAO,CACL9qD,OAAQhiB,KAAKgiB,OAASw+G,EAASxgI,KAAKgiB,QAAU,KAC9CzU,MAAOvN,KAAKuN,MAAQizH,EAASxgI,KAAKuN,OAAS,KAE/C,GAEFzN,QAAS,CACP2gI,SAAQ,WACFzgI,KAAK0gI,UACP1gI,KAAKugI,QAAUvgI,KAAK0gI,QAExB,EACAt/E,OAAM,WACJ,GAAKphD,KAAKugI,QAAV,CAGA,IAAM/3H,EAAQxI,KAAKkI,MAAM+wC,IACzB,GAAKzwC,EAAL,CACAxI,KAAK2gI,kBAAoB3gI,KAAK2gI,iBAAiBn4H,GAC/C,IAAMo4H,EAAS5gI,KAAKkI,MAAM04H,OAC1B,GAAKA,EAAL,CACA,IAAMrzH,EAAQ/E,EAAM4kG,aACdprF,EAASxZ,EAAM8sF,cACrBsrC,EAAOrzH,MAAQA,EACfqzH,EAAO5+G,OAASA,EAChB4+G,EAAO7qC,WAAW,MAAME,UAAUztF,EAAO,EAAG,EAAG+E,EAAOyU,EALnC,CAHD,CAFlB,CAWF,EACAye,QAAO,WACLzgC,KAAK6gI,gBAAkB7gI,KAAK6gI,gBAC9B,GAEFjoF,MAAO,CACLK,IAAG,WACDj5C,KAAKugI,QAAUvgI,KAAKi5C,GACtB,EACAynF,QAAO,WACL1gI,KAAKs5C,IAAIwnF,gBAAgB,cAC3B,IC1DJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,wCFNzDxgI,EAAAA,EAAAA,IAuBM,OAtBJhB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,cAAa,CAAAigF,SACCj0H,EAAAA,YACnBqiD,OAAK,QAAEriD,EAAAA,Q,CAGAA,EAAAA,WAAQ,WADhBJ,EAAAA,EAAAA,IAGE,SAHFC,EAGE,wCAEFD,EAAAA,EAAAA,IAWC,OAVCowC,IAAI,MACHrpC,IAAK3G,EAAAA,QACLygD,IAAKzgD,EAAAA,IACLoM,MAAOpM,EAAAA,IACP,WAAUA,EAAAA,QACVu4C,IAAKv4C,EAAAA,QACLsrG,eAAgBtrG,EAAAA,eAChBqY,QAASrY,EAAAA,QACT0gD,OAAI,8BAAE1gD,EAAAA,QAAAA,EAAAA,OAAAA,MAAAA,EAAAA,UAAM,GACZ+/B,QAAK,8BAAE//B,EAAAA,SAAAA,EAAAA,QAAAA,MAAAA,EAAAA,UAAO,I,aAEjBgzC,EAAAA,EAAAA,IAAQhzC,EAAAA,OAAAA,YAAAA,E,yHGVZ,SACEhF,KAAM,UACN6D,MAAO,CAAC,OAAQ,aAAc,aAAc,eAAgB,eAC5DtF,KAAG,WACD,MAAO,CACLu1F,aAAc,CAAEnoF,IAAK,WAAYwwC,IAAK,GACtCjL,SAAU,KAEd,EACA1lC,SAAU,CACR65H,iBAAe,WACb,IAAM35D,EAAgBlI,EAAAA,EAAAA,wBAAsCl/D,KAAKm/D,MAAMp1D,QACvE,MAA4B,iBAAd/J,KAAK09D,KACf,IAAIj0C,KAAKA,KAAK4a,MAAMrkC,KAAK09D,OAAOoX,eAAe1N,GAC/CpnE,KAAK09D,KAAKoX,eAAe1N,EAC/B,EACA45D,mBAAiB,WACf,IAAMC,EAAajhI,KAAKm/D,MAAM+hE,GAAGlhI,KAAKwvF,aAAanoF,IAAKrH,KAAKwvF,aAAa33C,IAAK,CAAC73C,KAAKwvF,aAAa33C,MAElG,MAAgC,iBAArB73C,KAAKmhI,aAAsD,aAA1BnhI,KAAKwvF,aAAanoF,IACrDrH,KAAKm/D,MAAMvlE,EAAEoG,KAAKmhI,YAAa,CAACF,IAGlCA,CACT,GAEFroF,MAAO,CACL8kB,KAAG,SAAGtkB,EAAQmQ,GACRA,IAAWnQ,IACbv8C,aAAamD,KAAK4sC,UAClB5sC,KAAKohI,4BAET,GAEF/qF,QAAM,WACJr2C,KAAKohI,2BACP,EACA3gF,UAAQ,WACN5jD,aAAamD,KAAK4sC,SACpB,EACA9sC,QAAS,CACPshI,0BAAwB,WACtB,IAAM3xC,EAA4C,iBAAtBzvF,KAAKyvF,aAA4BzvF,KAAKyvF,aAAe,EACjFzvF,KAAKwvF,aAAexvF,KAAKqhI,WACrBhX,EAAAA,GAAuBrqH,KAAK09D,KAAM+xB,GAClC46B,EAAAA,GAA4BrqH,KAAK09D,KAAM+xB,GAEvCzvF,KAAKoyD,aACPpyD,KAAK4sC,SAAWjwC,WACdqD,KAAKohI,0BACL,IAAOphI,KAAKoyD,YAGlB,IC3DJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,wCDJzD9xD,EAAAA,EAAAA,IAKO,QAJJghI,SAAU9tF,EAAAA,KACV1mC,MAAOwyD,EAAAA,mB,QAELA,EAAAA,oBAAkB,I,wFESzB3lC,EAAAA,GAAAA,IACEg2E,EAAAA,KASF,QAN+B,CAC7BpwG,MAAO,CACLtC,KAAMnD,SCbV,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,sDDHjD4G,EAAAA,MAAQA,EAAAA,KAAK2xF,oCAAiC,WADtDphD,EAAAA,EAAAA,IAIEG,EAAAA,C,MAFAzoC,KAAK,OACJmE,MAAOpM,EAAAA,GAAG,qC,4JEIfi5B,EAAAA,GAAAA,IACE4nG,EAAAA,KA6BF,QA1BmB,CACjBhiI,MAAO,CACL,OACA,eACA,UACA,OAEFtF,KAAI,WACF,MAAO,CACLunI,iBAAiB,EACjBpyH,cAAe,GAAF,OAAKpP,KAAKyvC,OAAOtzC,MAAM4Q,SAASgC,OAAS/O,KAAKyvC,OAAOtzC,MAAM4Q,SAASqC,eAErF,EACAvO,WAAY,CACV89C,WAAAA,EAAAA,GAEF7+C,QAAS,CACP2hI,OAAM,SAAExoF,GACN,OAASA,GAAOj5C,KAAKwhI,gBAAmBxhI,KAAKoP,cAAgB6pC,CAC/D,EACA4nF,eAAc,WACZ7gI,KAAKwhI,iBAAkB,CACzB,ICzBJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,0FCNzDlhI,EAAAA,EAAAA,IAuBO,QAtBLhB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,SAAQ,YACQh0C,EAAAA,Y,CAGdA,EAAAA,OAAI,WADZuwC,EAAAA,EAAAA,IAQEq8D,EAAAA,C,MANAhuG,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,SAAQ,YAKQh0C,EAAAA,QAAO,iBAAoBA,EAAAA,gBAJhDygD,IAAKzgD,EAAAA,KAAKpD,eACVwP,MAAOpM,EAAAA,KAAKpD,eACZ27C,IAAKv4C,EAAAA,OAAOA,EAAAA,KAAKlD,4BACjB,mBAAkBkD,EAAAA,gB,uEAGrBJ,EAAAA,EAAAA,IAIE,O,MAFAhB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,sBAAqB,YACLh0C,EAAAA,Y,SAGhBA,EAAAA,MAAG,WADXuwC,EAAAA,EAAAA,IAIEG,EAAAA,C,MAFAzoC,KAAK,QACLrJ,MAAM,oB,8GCXDA,MAAM,a,GACJA,MAAM,a,GAUFA,MAAM,mC,GAuBRA,MAAM,gB,GACJA,MAAM,Y,cA6DNA,MAAM,e,SAQLA,MAAM,mB,SAMNA,MAAM,mB,SAMNA,MAAM,mB,mBAcRA,MAAM,Y,GAKTA,MAAM,a,SAGPA,MAAM,a,SAMNA,MAAM,e,qBAuBIsM,MAAM,Y,GAGNA,MAAM,S,GAGNA,MAAM,W,GAGNA,MAAM,Q,SAQlBtM,MAAM,qB,GAEDA,MAAM,a,sDAqEXA,MAAM,qB,SAcVA,MAAM,c,SAIJA,MAAM,e,GAO4BkB,EAAAA,EAAAA,GAAI,mB,qBA6CpClB,MAAM,e,gFCrUHA,MAAM,iB,mBAgBL0jD,KAAK,YACL1jD,MAAM,oB,SAmBR0jD,KAAK,YACL1jD,MAAM,oB,qDC1ClBq6B,EAAAA,GAAAA,IAAYuc,EAAAA,KA+GZ,SArGwB,CACtB32C,MAAO,CACL,QAEFtF,KAAI,WACF,MAAO,CACL4a,KAAM,CACJ6sH,WAfW,2BAgBXC,YAfY,sBAgBZC,eAfe,yBAgBfC,4BAf4B,sCAgB5BC,yBAfyB,mCAgBzBC,QAfQ,kBAgBRC,WAfW,sBAiBbC,sBAAsB,EACtBl9D,SAAS,EAEb,EACAlkE,WAAY,CACVotG,YAAAA,EAAAA,EACA18C,QAAAA,EAAAA,SAEFrqD,SAAU,CACRg7H,QAAO,WACL,OAAO,IAAI//H,IAAInC,KAAK/C,KAAK4X,KAC3B,EACAstH,aAAY,WACV,OAAOniI,KAAK/C,KAAKirD,WAAaloD,KAAK/C,KAAKgwB,aAA4D,UAA7CjtB,KAAKyvC,OAAOtzC,MAAMa,MAAM2Q,YAAYq1C,IAC7F,EACAo/E,yBAAwB,WACtB,OAAOpiI,KAAKqiI,WAAW,gCACzB,EACAC,iBAAgB,WACd,OAAOtiI,KAAKqiI,WAAW,eACzB,EACAE,gBAAe,WACb,OAAOviI,KAAKyvC,OAAOtzC,MAAM4Q,SAASy1H,oBAAsBxiI,KAAKqiI,WAAW,oBAC1E,GAEFviI,QAAS,CACP2iI,OAAM,SAAEz/H,GACN,OAAOhD,KAAKkiI,QAAQj/H,IAAID,EAC1B,EACAq/H,WAAU,SAAEK,GACV,OAAO1iI,KAAKyvC,OAAOtzC,MAAMa,MAAM2Q,YAAYs+B,WAAWnvC,SAAS4lI,EACjE,EACAC,UAAS,SAAEhlI,GAAK,WACRrD,EAAQ0F,KAAKyvC,OACfzvC,KAAKkiI,QAAQj/H,IAAItF,GACnBrD,EAAM6B,MAAMimB,IAAIC,kBAAkBsK,UAAU,CAAE1vB,KAAM+C,KAAK/C,KAAMU,IAAAA,IAAOrE,MAAK,SAAAutB,GACpEA,EAAStQ,IACdjc,EAAM0S,OAAO,YAAa,CAAE/P,KAAM,EAAKA,KAAMU,IAAAA,GAC/C,IAEArD,EAAM6B,MAAMimB,IAAIC,kBAAkBmK,QAAQ,CAAEvvB,KAAM+C,KAAK/C,KAAMU,IAAAA,IAAOrE,MAAK,SAAAutB,GAClEA,EAAStQ,IACdjc,EAAM0S,OAAO,UAAW,CAAE/P,KAAM,EAAKA,KAAMU,IAAAA,GAC7C,GAEJ,EACAilI,YAAW,SAAE/1G,GAAO,WACZvyB,EAAQ0F,KAAKyvC,OACfzvC,KAAK/C,KAAK8vB,OAAOF,GACnBvyB,EAAM6B,MAAMimB,IAAIC,kBAAkBqoE,YAAY,CAAEztF,KAAM+C,KAAK/C,KAAM4vB,MAAAA,IAASvzB,MAAK,SAAAutB,GACxEA,EAAStQ,IACdjc,EAAM0S,OAAO,cAAe,CAAE/P,KAAM,EAAKA,KAAM4vB,MAAAA,EAAOjhB,OAAO,GAC/D,IAEAtR,EAAM6B,MAAMimB,IAAIC,kBAAkBooE,SAAS,CAAExtF,KAAM+C,KAAK/C,KAAM4vB,MAAAA,IAASvzB,MAAK,SAAAutB,GACrEA,EAAStQ,IACdjc,EAAM0S,OAAO,cAAe,CAAE/P,KAAM,EAAKA,KAAM4vB,MAAAA,EAAOjhB,OAAO,GAC/D,GAEJ,EACA+lB,uBAAsB,WACpB3xB,KAAKyvC,OAAOvzC,SAAS,yBAA0B,CAAEe,KAAM+C,KAAK/C,MAC9D,EACA4lI,iBAAgB,SAAEC,GAChB9iI,KAAKiiI,qBAAuBa,CAC9B,EACAt4C,WAAU,WAAI,WACNlwF,EAAQ0F,KAAKyvC,OACbxyC,EAAO+C,KAAK/C,KACVtD,EAAasD,EAAbtD,GAAI+B,EAASuB,EAATvB,KACZpB,EAAM6B,MAAMimB,IAAIC,kBAAkBmoE,WAAW,CAAEvtF,KAAAA,IAC5C3D,MAAK,SAAAC,GACJ,EAAKk2C,OAAOvzC,SAAS,yBAAyB,SAAA0e,GAAM,OAAI3d,EAAKtD,KAAOihB,EAAO3d,KAAKtD,EAAE,IAClF,IAAMopI,EAAiC,0BAArB,EAAKl/E,OAAOnoD,MAAyD,iBAArB,EAAKmoD,OAAOnoD,KACxEsnI,EAAe,EAAKn/E,OAAO/uB,OAAOp5B,OAASA,GAAQ,EAAKmoD,OAAO/uB,OAAOn7B,KAAOA,EAC/EopI,GAAaC,GACf5iI,OAAO+pD,QAAQqpB,MAEnB,GACJ,EACAyvD,WAAU,SAAEr3H,GACV5L,KAAK+kE,QAAUn5D,CACjB,I,gBC1GJ,MAEA,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,iHFNzDtL,EAAAA,EAAAA,IAiKM,aAhKJswC,EAAAA,EAAAA,IAsIUohB,EAAAA,CArIRC,QAAQ,QACR3yD,MAAM,2BACN6hE,UAAU,SACT78C,OAAQ,CAAA01B,EAAAA,GACRie,OAAI,iCAAEv3D,EAAAA,YAAW,EAAD,GAChB8/B,QAAK,iCAAE9/B,EAAAA,YAAW,EAAD,I,CAEPd,SAAO,SAChB,iBAkHM,EAlHNY,EAAAA,EAAAA,GAkHM,MAlHND,EAkHM,CAjHQG,EAAAA,eAAY,WAAxBJ,EAAAA,EAAAA,IAkBO,WAjBLE,EAAAA,EAAAA,GAKS,UAJPlB,MAAM,+BACLS,QAAK,+BAAEW,EAAAA,YAAY,QAAD,K,QAEhBA,EAAAA,GAAKA,EAAAA,KAAKqsB,OAAOkjD,MAAQ,oCAAsC,qCAAzC,IAE3BzvE,EAAAA,EAAAA,GAKS,UAJPlB,MAAM,+BACLS,QAAK,+BAAEW,EAAAA,YAAY,YAAD,K,QAEhBA,EAAAA,GAAKA,EAAAA,KAAKqsB,OAAOmjD,UAAY,wCAA0C,yCAA7C,GAGvBxvE,EAAAA,0BAA4BA,EAAAA,mBAAgB,WADpDJ,EAAAA,EAAAA,IAIE,MAJF4vC,KAIE,kCAGIxvC,EAAAA,2BAAwB,WADhCJ,EAAAA,EAAAA,IAMS,U,MAJPhB,MAAM,+BACLS,QAAK,+BAAEW,EAAAA,wBAAsB,K,QAE3BA,EAAAA,GAAKA,EAAAA,KAAKusB,YAAc,wCAA0C,4CAA7C,oBAGlBvsB,EAAAA,mBAAgB,WADxBJ,EAAAA,EAAAA,IAMS,U,MAJPhB,MAAM,+BACLS,QAAK,+BAAEW,EAAAA,kBAAiB,EAAD,K,QAErBA,EAAAA,GAAG,wCAAD,oBAGCA,EAAAA,kBAAe,WADvBJ,EAAAA,EAAAA,IAIE,MAJF+vC,KAIE,eACU3vC,EAAAA,kBAAe,WAA3BJ,EAAAA,EAAAA,IA0EO,WAzELE,EAAAA,EAAAA,GASS,UARPlB,MAAM,+BACLS,QAAK,+BAAEW,EAAAA,UAAUA,EAAAA,KAAKghI,WAAU,I,EAEjClhI,EAAAA,EAAAA,GAGE,QAFAlB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,gBAAe,yBACch0C,EAAAA,OAAOA,EAAAA,KAAKghI,gB,iBAC/C,KACF,QAAGhhI,EAAAA,GAAG,oCAAD,MAEPF,EAAAA,EAAAA,GASS,UARPlB,MAAM,+BACLS,QAAK,+BAAEW,EAAAA,UAAUA,EAAAA,KAAKihI,YAAW,I,EAElCnhI,EAAAA,EAAAA,GAGE,QAFAlB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,gBAAe,yBACch0C,EAAAA,OAAOA,EAAAA,KAAKihI,iB,iBAC/C,KACF,QAAGjhI,EAAAA,GAAG,qCAAD,MAEPF,EAAAA,EAAAA,GASS,UARPlB,MAAM,+BACLS,QAAK,+BAAEW,EAAAA,UAAUA,EAAAA,KAAKkhI,eAAc,I,EAErCphI,EAAAA,EAAAA,GAGE,QAFAlB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,gBAAe,yBACch0C,EAAAA,OAAOA,EAAAA,KAAKkhI,oB,iBAC/C,KACF,QAAGlhI,EAAAA,GAAG,wCAAD,MAEPF,EAAAA,EAAAA,GASS,UARPlB,MAAM,+BACLS,QAAK,+BAAEW,EAAAA,UAAUA,EAAAA,KAAKqhI,QAAO,I,EAE9BvhI,EAAAA,EAAAA,GAGE,QAFAlB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,gBAAe,yBACch0C,EAAAA,OAAOA,EAAAA,KAAKqhI,a,iBAC/C,KACF,QAAGrhI,EAAAA,GAAG,iCAAD,KAGCA,EAAAA,KAAKwnD,WAAQ,WADrB5nD,EAAAA,EAAAA,IAUS,U,MARPhB,MAAM,+BACLS,QAAK,+BAAEW,EAAAA,UAAUA,EAAAA,KAAKmhI,4BAA2B,I,EAElDrhI,EAAAA,EAAAA,GAGE,QAFAlB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,gBAAe,yBACch0C,EAAAA,OAAOA,EAAAA,KAAKmhI,iC,iBAC/C,KACF,QAAGnhI,EAAAA,GAAG,qDAAD,sBAGCA,EAAAA,KAAKwnD,WAAQ,WADrB5nD,EAAAA,EAAAA,IAUS,U,MARPhB,MAAM,+BACLS,QAAK,+BAAEW,EAAAA,UAAUA,EAAAA,KAAKohI,yBAAwB,I,EAE/CthI,EAAAA,EAAAA,GAGE,QAFAlB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,gBAAe,yBACch0C,EAAAA,OAAOA,EAAAA,KAAKohI,8B,iBAC/C,KACF,QAAGphI,EAAAA,GAAG,kDAAD,sBAGCA,EAAAA,KAAKwnD,WAAQ,WADrB5nD,EAAAA,EAAAA,IAUS,U,MARPhB,MAAM,+BACLS,QAAK,iCAAEW,EAAAA,UAAUA,EAAAA,KAAKshI,WAAU,I,EAEjCxhI,EAAAA,EAAAA,GAGE,QAFAlB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,gBAAe,yBACch0C,EAAAA,OAAOA,EAAAA,KAAKshI,gB,iBAC/C,KACF,QAAGthI,EAAAA,GAAG,oCAAD,2C,IAKFuxD,SAAO,SAChB,iBAMS,EANTzxD,EAAAA,EAAAA,GAMS,UALPlB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,uDAAsD,CAAAqwB,QAClDrkE,EAAAA,Y,mBAEPA,EAAAA,GAAG,oCAAqC,IAC3C,YAA8B0wC,EAAAA,CAAtBzoC,KAAK,kBAAc,G,uBAIjCsoC,EAAAA,EAAAA,IAwBWsV,EAAAA,GAAAA,CAxBDjpB,GAAG,UAAQ,CAEX58B,EAAAA,uBAAoB,WAD5BuwC,EAAAA,EAAAA,IAsBciyF,EAAAA,C,MApBX,YAAWxiI,EAAAA,iBAAiBsvF,KAAKhwF,MAAM,I,CAE7Bo5D,QAAM,SACf,iBAA4C,mBAAzC14D,EAAAA,GAAG,qCAAD,G,IAGI24D,QAAM,SACf,iBAKS,EALT74D,EAAAA,EAAAA,GAKS,UAJPlB,MAAM,qBACLS,QAAK,iCAAEW,EAAAA,kBAAiB,EAAD,K,QAErBA,EAAAA,GAAG,mBAAD,IAEPF,EAAAA,EAAAA,GAKS,UAJPlB,MAAM,4BACLS,QAAK,iCAAEW,EAAAA,YAAU,K,QAEfA,EAAAA,GAAG,qCAAD,G,sBAZT,iBAAgE,EAAhEF,EAAAA,EAAAA,GAAgE,kBAA1DE,EAAAA,GAAG,kDAAD,G,4DGhJTpB,MAAM,kB,IAQAA,MAAM,iB,IAgBPkB,EAAAA,EAAAA,GAGE,OAFAwiD,KAAK,YACL1jD,MAAM,oB,aAyCJA,MAAM,mC,oDCnEfA,MAAM,gB,IAOAA,MAAM,iB,mBAgBHA,MAAM,iD,ykBCjBtBq6B,EAAAA,GAAAA,IAAY8kB,EAAAA,KAqFZ,SAnFqB,CACnBl/C,MAAO,CACL,QAEFtF,KAAI,WACF,MAAO,CAAC,CACV,EACA4G,WAAY,CACVotG,YAAAA,EAAAA,EACA18C,QAAAA,EAAAA,SAEFlb,QAAO,WACLr2C,KAAKyvC,OAAOvzC,SAAS,mBAAoB8D,KAAK/C,KAAKtD,GACrD,EACAuN,SAAU,GAAF,OACHS,EAAAA,GAAAA,IAAS,CACVgd,SAAU,SAAAxoB,GAAK,OAAIA,EAAMopB,MAAMZ,QAAQ,KACvC,IACFw+G,WAAU,WACR,OAAO,IAAIhhI,IAAInC,KAAK/C,KAAKixB,QAAQn1B,KAAI,SAAAigD,GAAC,OAAIA,EAAEr/C,EAAE,IAChD,EACA4rB,MAAK,WAAI,WACP,OAAKvlB,KAAK/C,KAAKixB,QACRluB,KAAK2kB,SAAS5rB,KAAI,SAAAJ,GAAI,gBACxBA,GAAI,IACPyqI,OAAQ,EAAKD,WAAWlgI,IAAItK,EAAKgB,KAAG,IAHP,EAKjC,IAEFmG,QAAS,CACPujI,WAAU,SAAEx+G,GAAQ,WACd7kB,KAAKmjI,WAAWlgI,IAAI4hB,GACtB7kB,KAAKyvC,OAAOvzC,SAAS,oBAAqB,CAAEipB,UAAWnlB,KAAK/C,KAAKtD,GAAIkrB,OAAAA,IAAUvrB,MAAK,SAACutB,GAC9EA,EAAStQ,IACd,EAAKk5B,OAAOvzC,SAAS,mBAAoB,EAAKe,KAAKtD,GACrD,IAEAqG,KAAKyvC,OAAOvzC,SAAS,iBAAkB,CAAEipB,UAAWnlB,KAAK/C,KAAKtD,GAAIkrB,OAAAA,IAAUvrB,MAAK,SAACutB,GAC3EA,EAAStQ,IACd,EAAKk5B,OAAOvzC,SAAS,mBAAoB,EAAKe,KAAKtD,GACrD,GAEJ,EACAipI,YAAW,SAAE/1G,GAAO,WACZvyB,EAAQ0F,KAAKyvC,OACfzvC,KAAK/C,KAAK8vB,OAAOF,GACnBvyB,EAAM6B,MAAMimB,IAAIC,kBAAkBqoE,YAAY,CAAEztF,KAAM+C,KAAK/C,KAAM4vB,MAAAA,IAASvzB,MAAK,SAAAutB,GACxEA,EAAStQ,IACdjc,EAAM0S,OAAO,cAAe,CAAE/P,KAAM,EAAKA,KAAM4vB,MAAAA,EAAOjhB,OAAO,GAC/D,IAEAtR,EAAM6B,MAAMimB,IAAIC,kBAAkBooE,SAAS,CAAExtF,KAAM+C,KAAK/C,KAAM4vB,MAAAA,IAASvzB,MAAK,SAAAutB,GACrEA,EAAStQ,IACdjc,EAAM0S,OAAO,cAAe,CAAE/P,KAAM,EAAKA,KAAM4vB,MAAAA,EAAOjhB,OAAO,GAC/D,GAEJ,EACA+lB,uBAAsB,WACpB3xB,KAAKyvC,OAAOvzC,SAAS,yBAA0B,CAAEe,KAAM+C,KAAK/C,MAC9D,EACA4lI,iBAAgB,SAAEC,GAChB9iI,KAAKiiI,qBAAuBa,CAC9B,EACAt4C,WAAU,WAAI,WACNlwF,EAAQ0F,KAAKyvC,OACbxyC,EAAO+C,KAAK/C,KACVtD,EAAasD,EAAbtD,GAAI+B,EAASuB,EAATvB,KACZpB,EAAM6B,MAAMimB,IAAIC,kBAAkBmoE,WAAW,CAAEvtF,KAAAA,IAC5C3D,MAAK,SAAAC,GACJ,EAAKk2C,OAAOvzC,SAAS,yBAAyB,SAAA0e,GAAM,OAAI3d,EAAKtD,KAAOihB,EAAO3d,KAAKtD,EAAE,IAClF,IAAMopI,EAAiC,0BAArB,EAAKl/E,OAAOnoD,MAAyD,iBAArB,EAAKmoD,OAAOnoD,KACxEsnI,EAAe,EAAKn/E,OAAO/uB,OAAOp5B,OAASA,GAAQ,EAAKmoD,OAAO/uB,OAAOn7B,KAAOA,EAC/EopI,GAAaC,GACf5iI,OAAO+pD,QAAQqpB,MAEnB,GACJ,EACAyvD,WAAU,SAAEr3H,GACV5L,KAAK+kE,QAAUn5D,CACjB,ICjFJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,uFFJzDtL,EAAAA,EAAAA,IAiCM,MAjCNC,GAiCM,EAhCJqwC,EAAAA,EAAAA,IA+BUohB,EAAAA,CA9BRC,QAAQ,QACRkP,UAAU,OACV,qB,CAEWvhE,SAAO,SAChB,iBAaM,EAbNY,EAAAA,EAAAA,GAaM,MAbNyvC,GAaM,gBAZJ3vC,EAAAA,EAAAA,IAWS8vC,EAAAA,GAAAA,MAAAA,EAAAA,EAAAA,IAVQ1vC,EAAAA,OAAK,SAAb/H,G,kBADT2H,EAAAA,EAAAA,IAWS,UATN+G,IAAK1O,EAAKgB,GACX2F,MAAM,+BACLS,QAAK,mBAAEW,EAAAA,WAAW/H,EAAKgB,GAAE,G,EAE1B6G,EAAAA,EAAAA,GAGE,QAFAlB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,gBAAe,yBACc/7C,EAAKyqI,W,iBACxC,KACF,QAAGzqI,EAAKmU,OAAK,S,gBAIRmlD,SAAO,SAChB,iBAOS,EAPTzxD,EAAAA,EAAAA,GAOS,SAPT6vC,GAOS,mBANJ3vC,EAAAA,GAAG,uBAAwB,IAC9B,YAIE0wC,EAAAA,CAHA9xC,MAAM,eACNqyC,KAAK,KACLhpC,KAAK,oB,8PGnBjBgxB,EAAAA,GAAAA,IACE2pG,EAAAA,KAsFF,SAnFuB,CACrB/jI,MAAO,CACL,OAAQ,gBAEVtF,KAAI,WACF,MAAO,CACLspI,qBAAqB,EACrB7+D,8BAA8B,EAElC,EACA7jE,WAAY,CACV2iI,eAAAA,EAAAA,EACAjyE,QAAAA,EAAAA,QACAkyE,aAAAA,GACA3+E,aAAAA,GAAAA,GAEFhlD,QAAS,CACP4jI,iBAAgB,WACd1jI,KAAKujI,qBAAsB,CAC7B,EACAI,iBAAgB,WACd3jI,KAAKujI,qBAAsB,CAC7B,EACA3+D,mCAAkC,WAChC5kE,KAAK0kE,8BAA+B,CACtC,EACAG,mCAAkC,WAChC7kE,KAAK0kE,8BAA+B,CACtC,EACAk/D,YAAW,WACT5jI,KAAKyvC,OAAOvzC,SAAS,cAAe8D,KAAK/C,KAAKtD,GAChD,EACAkqI,YAAW,WACT7jI,KAAKyvC,OAAOvzC,SAAS,cAAe8D,KAAK/C,KAAKtD,GAChD,EACAiyB,UAAS,WACF5rB,KAAK8jI,mBAGR9jI,KAAK0jI,mBAFL1jI,KAAK+jI,aAIT,EACAA,YAAW,WACT/jI,KAAKyvC,OAAOvzC,SAAS,YAAa8D,KAAK/C,KAAKtD,IAC5CqG,KAAK2jI,kBACP,EACA73G,YAAW,WACT9rB,KAAKyvC,OAAOvzC,SAAS,cAAe8D,KAAK/C,KAAKtD,GAChD,EACA42B,wBAAuB,WAChBvwB,KAAK2kE,qCAGR3kE,KAAK4kE,qCAFL5kE,KAAK8kE,2BAIT,EACAA,0BAAyB,WACvB9kE,KAAKyvC,OAAOvzC,SAAS,0BAA2B8D,KAAK/C,KAAKtD,IAC1DqG,KAAK6kE,oCACP,EACAzc,WAAU,WACRpoD,KAAKyvC,OAAOvzC,SAAS,yBAA0B,CAAEmc,OAAQrY,KAAK/C,KAAKtD,IACrE,EACA0jE,SAAQ,WACNr9D,KAAKG,QAAQd,KAAK,CAChB3D,KAAM,OACNo5B,OAAQ,CAAEpK,SAAU1qB,KAAKyvC,OAAOtzC,MAAMa,MAAM2Q,YAAYzQ,YAAaqgE,aAAcv9D,KAAK/C,KAAKtD,KAEjG,GAEFuN,S,uWAAU,EACR48H,mBAAkB,WAChB,OAAO9jI,KAAKyvC,OAAOj7B,QAAQ/G,aAAaiD,YAC1C,EACAi0D,qCAAoC,WAClC,OAAO3kE,KAAKyvC,OAAOj7B,QAAQ/G,aAAauD,8BAC1C,IACGrJ,EAAAA,GAAAA,IAAS,CACV0L,6BAA8B,SAAAlX,GAAK,OAAIA,EAAM4Q,SAASsG,4BAA4B,MCnFxF,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,mKLNzD/S,EAAAA,EAAAA,IAqHM,MArHNC,GAqHM,EApHJqwC,EAAAA,EAAAA,IAyEUohB,EAAAA,CAxERC,QAAQ,QACRkP,UAAU,SACT,WAAU,CAAAnoB,EAAAA,aACX,qB,CAEWp5C,SAAO,SAChB,iBAwDM,EAxDNY,EAAAA,EAAAA,GAwDM,MAxDNyvC,GAwDM,CAvDYvvC,EAAAA,aAAa6jB,YAAS,WAAtCjkB,EAAAA,EAAAA,IAmBW8vC,EAAAA,GAAAA,CAAA/oC,IAAAA,GAAA,CAjBD3G,EAAAA,aAAasjI,kBAAe,WADpC1jI,EAAAA,EAAAA,IAMS,U,MAJPhB,MAAM,mCACLS,QAAK,8BAAEW,EAAAA,aAAAA,EAAAA,YAAAA,MAAAA,EAAAA,UAAW,K,QAEhBA,EAAAA,GAAG,2BAAD,oBAGEA,EAAAA,aAAasjI,iBAIf,iBAJ8B,WADrC1jI,EAAAA,EAAAA,IAMS,U,MAJPhB,MAAM,mCACLS,QAAK,8BAAEW,EAAAA,aAAAA,EAAAA,YAAAA,MAAAA,EAAAA,UAAW,K,QAEhBA,EAAAA,GAAG,2BAAD,IAEPwvC,IAGE,sBAEJU,EAAAA,EAAAA,IAA6BqzF,EAAAA,CAAdhnI,KAAMyD,EAAAA,MAAI,iBAEjBA,EAAAA,aAAa4kE,cAAW,WADhChlE,EAAAA,EAAAA,IAMS,U,MAJPhB,MAAM,6CACLS,QAAK,8BAAEW,EAAAA,yBAAAA,EAAAA,wBAAAA,MAAAA,EAAAA,UAAuB,K,QAE5BA,EAAAA,GAAG,8BAAD,oBAGCA,EAAAA,aAAakxF,WAAQ,WAD7BtxF,EAAAA,EAAAA,IAMS,U,MAJPhB,MAAM,6CACLS,QAAK,8BAAEW,EAAAA,aAAAA,EAAAA,YAAAA,MAAAA,EAAAA,UAAW,K,QAEhBA,EAAAA,GAAG,sBAAD,iBAEPJ,EAAAA,EAAAA,IAMS,U,MAJPhB,MAAM,6CACLS,QAAK,8BAAEW,EAAAA,WAAAA,EAAAA,UAAAA,MAAAA,EAAAA,UAAS,K,QAEdA,EAAAA,GAAG,oBAAD,KAEPF,EAAAA,EAAAA,GAKS,UAJPlB,MAAM,6CACLS,QAAK,8BAAEW,EAAAA,YAAAA,EAAAA,WAAAA,MAAAA,EAAAA,UAAU,K,QAEfA,EAAAA,GAAG,qBAAD,GAGCA,EAAAA,+BAA4B,WADpCJ,EAAAA,EAAAA,IAMS,U,MAJPhB,MAAM,6CACLS,QAAK,8BAAEW,EAAAA,UAAAA,EAAAA,SAAAA,MAAAA,EAAAA,UAAQ,K,QAEbA,EAAAA,GAAG,sBAAD,sB,IAIAuxD,SAAO,SAChB,iBAKS,EALTzxD,EAAAA,EAAAA,GAKS,SALT6vC,GAKS,EAJPO,EAAAA,EAAAA,IAGEQ,EAAAA,CAFA9xC,MAAM,OACNqJ,KAAK,iB,uBAKbsoC,EAAAA,EAAAA,IAoBWsV,EAAAA,GAAAA,CApBDjpB,GAAG,UAAQ,CAEX58B,EAAAA,sBAAmB,WAD3BuwC,EAAAA,EAAAA,IAkBgBuV,EAAAA,C,MAhBb15C,MAAOpM,EAAAA,GAAG,iCACV,eAAcA,EAAAA,GAAG,yCACjB,cAAaA,EAAAA,GAAG,yCAChB+lD,WAAU/lD,EAAAA,YACVgmD,YAAWhmD,EAAAA,kB,mBAEZ,iBASS,EATTkwC,EAAAA,EAAAA,IASS8X,EAAAA,CARPC,QAAQ,0BACRhrD,IAAI,Q,CAEOV,MAAI,SACb,iBAEE,EAFFuD,EAAAA,EAAAA,GAEE,Q,aADAwkE,EAAAA,EAAAA,IAA4BtkE,EAAAA,KAAfpD,iB,oIAMvB2zC,EAAAA,EAAAA,IAoBWsV,EAAAA,GAAAA,CApBDjpB,GAAG,UAAQ,CAEX58B,EAAAA,+BAA4B,WADpCuwC,EAAAA,EAAAA,IAkBgBuV,EAAAA,C,MAhBb15C,MAAOpM,EAAAA,GAAG,2CACV,eAAcA,EAAAA,GAAG,mDACjB,cAAaA,EAAAA,GAAG,mDAChB+lD,WAAU/lD,EAAAA,0BACVgmD,YAAWhmD,EAAAA,oC,mBAEZ,iBASS,EATTkwC,EAAAA,EAAAA,IASS8X,EAAAA,CARPC,QAAQ,oCACRhrD,IAAI,Q,CAEOV,MAAI,SACb,iBAEE,EAFFuD,EAAAA,EAAAA,GAEE,Q,aADAwkE,EAAAA,EAAAA,IAA4BtkE,EAAAA,KAAfpD,iB,qIM9GvBgC,MAAM,a,IAEDA,MAAM,W,IAEJA,MAAM,W,gCCsCjB,SA5CiB,CACfC,MAAO,CACLtC,KAAMnD,OACN+xB,aAAc/xB,OACd6jH,SAAUx8G,SAEZlH,KAAI,WACF,MAAO,CACLiqI,UAAW,GACXjwD,SAAS,EACTkwD,QAAQ,EAEZ,EACAj9H,SAAU,CACR+sH,WAAU,WACR,OAAOj0H,KAAK6rB,aAAa0kE,MAAQvwF,KAAKi0E,OACxC,GAEFn0E,QAAS,CACPskI,aAAY,WACVpkI,KAAKkkI,UAAYlkI,KAAK6rB,aAAa0kE,KACnCvwF,KAAKi0E,SAAU,CACjB,EACAowD,cAAa,WACXrkI,KAAKi0E,SAAU,CACjB,EACAqwD,gBAAe,WAAI,WACjBtkI,KAAKmkI,QAAS,EAEdnkI,KAAKyvC,OAAOvzC,SAAS,eAAgB,CACnCvC,GAAIqG,KAAK/C,KAAKtD,GACdg3B,QAAS3wB,KAAKkkI,YAEb5qI,MAAK,WACJ,EAAK6qI,QAAS,EACd,EAAKlwD,SAAU,CACjB,IAAE,OACK,WACL,EAAKkwD,QAAS,CAChB,GACJ,IC/BJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,wCFNzD7jI,EAAAA,EAAAA,IA2CM,MA3CNC,GA2CM,EAxCJC,EAAAA,EAAAA,GA2BM,MA3BNyvC,GA2BM,EA1BJzvC,EAAAA,EAAAA,GAAuC,qBAA9BE,EAAAA,GAAG,mBAAD,IACXF,EAAAA,EAAAA,GAwBM,MAxBN0vC,GAwBM,WAvBJ1vC,EAAAA,EAAAA,GAMS,UAJPlB,MAAM,qBACLS,QAAK,8BAAEW,EAAAA,cAAAA,EAAAA,aAAAA,MAAAA,EAAAA,UAAY,K,QAEjBA,EAAAA,GAAG,wBAAD,aAJIA,EAAAA,SAAWA,EAAAA,aAAQ,SAM9BF,EAAAA,EAAAA,GAOS,UALPlB,MAAM,qBACLmJ,SAAU/H,EAAAA,OACVX,QAAK,8BAAEW,EAAAA,iBAAAA,EAAAA,gBAAAA,MAAAA,EAAAA,UAAe,K,QAEpBA,EAAAA,GAAG,8BAAD,aALGA,EAAAA,YAAO,SAOjBF,EAAAA,EAAAA,GAOS,UALPlB,MAAM,qBACLmJ,SAAU/H,EAAAA,OACVX,QAAK,8BAAEW,EAAAA,eAAAA,EAAAA,cAAAA,MAAAA,EAAAA,UAAa,K,QAElBA,EAAAA,GAAG,+BAAD,aALGA,EAAAA,gBAAO,SASrBF,EAAAA,EAAAA,GAIE,Y,qDAFSE,EAAAA,UAAS,IAClBpB,MAAM,a,iBAFEoB,EAAAA,SAAO,MACNA,EAAAA,cAAS,SAGpBF,EAAAA,EAAAA,GAMO,QAJLlB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,YAAW,WACIh0C,EAAAA,aAAa6vF,U,QAE/B7vF,EAAAA,aAAa6vF,MAAQ7vF,EAAAA,GAAG,yBAAD,WAJjBA,EAAAA,Y,ioBGbfi5B,EAAAA,GAAAA,IACE4qG,EAAAA,IACA3uF,EAAAA,IACAo1D,EAAAA,IACAyqB,EAAAA,IACA+O,EAAAA,IACA5qG,EAAAA,IACAioF,EAAAA,KAGF,UACEtiH,MAAO,CACL,SACA,WACA,WACA,UACA,UACA,WACA,eACA,UACA,iBAEFtF,KAAI,WACF,MAAO,CACLwqI,yBAAyB,EACzBlkE,aAAcvgE,KAAKyvC,OAAOtzC,MAAK,UAAWyO,eAAeC,UACzD65H,oBAAoB,EACpBC,iBAAkB,EAClBC,eAAgB,UAEpB,EACAvuF,QAAO,WACLr2C,KAAKyvC,OAAOvzC,SAAS,wBAAyB8D,KAAK/C,KAAKtD,GAC1D,EACAuN,SAAU,IACRjK,KAAI,WACF,OAAO+C,KAAKyvC,OAAOj7B,QAAQqb,SAAS7vB,KAAKqY,OAC3C,EACAwT,aAAY,WACV,OAAO7rB,KAAKyvC,OAAOj7B,QAAQqX,aAAa7rB,KAAKqY,OAC/C,EACAzP,QAAO,WACL,MAAO,CAAC,CACN,aAA+B,QAAjB5I,KAAKuyC,QACnB,YAA6B,IAAjBvyC,KAAKuyC,QACjB,aAA+B,IAAlBvyC,KAAK6kI,SAClB,aAAc7kI,KAAKwgC,SAEvB,EACAuiB,MAAK,WACH,MAAO,CACLunD,gBAAiB,CACf,qEAAoE,cAC7DtqG,KAAK/C,KAAK0zF,YAAW,MAC5BzrF,KAAK,MAEX,EACA4/H,YAAW,WACT,OAAO9kI,KAAK/C,KAAKtD,KAAOqG,KAAKyvC,OAAOtzC,MAAMa,MAAM2Q,YAAYhU,EAC9D,EACAw5H,aAAY,WAEV,IAAMC,EAAY,IAAI99G,IAAItV,KAAK/C,KAAKmH,uBACpC,MAAO,GAAP,OAAUgvH,EAAUC,SAAQ,aAAKD,EAAUE,KAAI,gBACjD,EACA5sG,SAAQ,WACN,OAAO1mB,KAAKyvC,OAAOtzC,MAAMa,MAAM2Q,WACjC,EACAo3H,SAAQ,WACN,IAAMC,EAAOxpI,KAAKi+D,MAAM,IAAIhwC,KAAS,IAAIA,KAAKzpB,KAAK/C,KAAKygC,aAAe,OACvE,OAAOliC,KAAKk0F,MAAM1vF,KAAK/C,KAAK0rE,eAAiBq8D,EAC/C,EACAC,kBAAmB,IACjBz7E,IAAG,WACD,IAAMvvD,EAAO+F,KAAKyvC,OAAOj7B,QAAQ/G,aAAa+hB,UAAUxvB,KAAK/C,KAAKC,aAClE,OAAQjD,GAAQA,EAAKyF,MAAS,UAChC,EACA2lB,IAAG,SAAE3lB,GACH,IAAMzF,EAAO+F,KAAKyvC,OAAOj7B,QAAQ/G,aAAa+hB,UAAUxvB,KAAK/C,KAAKC,aACrD,aAATwC,EACFM,KAAKyvC,OAAOvzC,SAAS,eAAgB,CAAEe,KAAM+C,KAAK/C,KAAKC,YAAaykF,MAAQ1nF,GAAQA,EAAK0nF,OAAU,UAAWjiF,KAAAA,IAE9GM,KAAKyvC,OAAOvzC,SAAS,eAAgB,CAAEe,KAAM+C,KAAK/C,KAAKC,YAAaykF,WAAOp9E,GAE/E,IACG4qC,EAAAA,GAAAA,IAAW,CAAC,kBAEjB+1F,mBAAoB,CAClB17E,IAAG,WACD,IAAMvvD,EAAO+F,KAAKyvC,OAAOj7B,QAAQ/G,aAAa+hB,UAAUxvB,KAAK/C,KAAKC,aAClE,OAAOjD,GAAQA,EAAK0nF,KACtB,EACAt8D,IAAG,SAAEs8D,GACH3hF,KAAKyvC,OAAOvzC,SAAS,eAAgB,CAAEe,KAAM+C,KAAK/C,KAAKC,YAAaykF,MAAAA,GACtE,GAEFwjD,YAAW,WACT,IAAMp4G,EAAS/sB,KAAK/C,KAAK8vB,OACzB,GAAKA,EAAL,CACA,IAAMq4G,EAAYr4G,EAAOkjD,OAASljD,EAAOmjD,UACnCm1D,EAAYt4G,EAAOkjD,MAAQ,QAAU,YAC3C,OAAOm1D,GAAaC,CAHE,CAIxB,EACAviD,iBAAgB,WACd,OAAO9iF,KAAK8kI,aAAe9kI,KAAK/C,KAAKg0F,kBACvC,EACApO,mBAAkB,WAChB,OAAO7iF,KAAK8kI,aAAe9kI,KAAK/C,KAAKi0F,oBACvC,EACAo0C,mBAAkB,WAChB,IAAMr5F,EAAajsC,KAAK0mB,SAASulB,WACjC,MAA8B,UAAvBjsC,KAAK0mB,SAASs8B,MAAoB/W,EAAWnvC,SAAS,kCAAoCmvC,EAAWnvC,SAAS,iBAAmBmvC,EAAWnvC,SAAS,oBAC9J,EACAyoI,QAAO,WACL,OAAOvlI,KAAK6rB,aAAa0kE,IAC3B,EACAi1C,aAAY,WACV,MAAO,SAAUxlI,KAAK6rB,YACxB,EACA45G,kBAAiB,WACf,OAAOzlI,KAAKyN,aAAakD,WAC3B,EACA+0H,gBAAe,WACb,MAAO,CAAC,UAAW,QAAS,OAC9B,IACGv2F,EAAAA,GAAAA,IAAW,CAAC,kBAEjBtuC,WAAY,CACVk7D,WAAAA,EAAAA,QACAkJ,aAAAA,EAAAA,EACA0gE,gBAAAA,GACAC,eAAAA,GACApC,eAAAA,EAAAA,EACAt+D,aAAAA,EAAAA,EACAs5C,OAAAA,GAAAA,EACAxiD,YAAAA,GAAAA,EACApU,SAAAA,GAAAA,EACAi+E,SAAAA,GACA/gF,aAAAA,GAAAA,GAEFhlD,QAAS,CACPgmI,gBAAe,WACb9lI,KAAK0kI,oBAAqB,CAC5B,EACAqB,gBAAe,WACb/lI,KAAK0kI,oBAAqB,CAC5B,EACA34G,SAAQ,WACD/rB,KAAKylI,kBAGRzlI,KAAK8lI,kBAFL9lI,KAAKgmI,YAIT,EACAA,WAAU,WACRhmI,KAAKyvC,OAAOvzC,SAAS,WAAY,CAC/BvC,GAAIqG,KAAK/C,KAAKtD,GACdqyB,UAAWhsB,KAAKylI,mBAAoB71C,EAAAA,EAAAA,IAAc5vF,KAAK4kI,eAAgB5kI,KAAK2kI,kBAAoB,IAElG3kI,KAAK+lI,iBACP,EACA35G,WAAU,WACRpsB,KAAKyvC,OAAOvzC,SAAS,aAAc8D,KAAK/C,KAAKtD,GAC/C,EACA83B,cAAa,WACX,OAAOzxB,KAAKyvC,OAAOvzC,SAAS,gBAAiB8D,KAAK/C,KAAKtD,GACzD,EACA+3B,gBAAe,WACb,OAAO1xB,KAAKyvC,OAAOvzC,SAAS,kBAAmB8D,KAAK/C,KAAKtD,GAC3D,EACAssI,eAAc,SAAEznI,GACVwB,KAAKqoE,UACOroE,KAAKyvC,OACbziC,OAAO,iBAAkB,CAAExO,EAAAA,GAErC,EACA0pE,YAAW,YAAc,IAAVvnE,EAAM,EAANA,OACU,SAAnBA,EAAOqC,UACTrC,EAASA,EAAOwnE,YAEK,MAAnBxnE,EAAOqC,SACT5C,OAAOC,KAAKM,EAAOF,KAAM,SAE7B,EACAi4C,gBAAe,SAAEz7C,GACf,OAAO07C,EAAAA,GAAAA,GACL17C,EAAKtD,GAAIsD,EAAKC,YACd8C,KAAKyvC,OAAOtzC,MAAM4Q,SAASgG,oBAE/B,EACA6+G,eAAc,WACZ5xH,KAAKyvC,OAAOvzC,SAAS,uBAAwB,UAC/C,EACAgqI,WAAU,WACR,IAAM5vG,EAAa,CACjB92B,IAAKQ,KAAK/C,KAAKO,2BACfqlC,SAAU,SAEZ7iC,KAAKyvC,OAAOvzC,SAAS,WAAY,CAACo6B,IAClCt2B,KAAKyvC,OAAOvzC,SAAS,kBAAmBo6B,EAC1C,EACA6vG,YAAW,WACTnmI,KAAKyvC,OAAOvzC,SAAS,sBAAuB,CAAEgvH,SAAS,EAAMM,YAAaxrH,KAAK/C,MACjF,EACAmpI,qBAAoB,SAAE7sI,GAChByG,KAAKqmI,gBACP9sI,EAAEuO,iBACF9H,KAAKqmI,gBAET,ICjOJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,2adNzD/lI,EAAAA,EAAAA,IA0WM,OAzWJhB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAC,YACEh0C,EAAAA,W,EAERF,EAAAA,EAAAA,GAIE,OAHClB,OAAKo1C,EAAAA,EAAAA,IAAAA,CAAAA,CAAA,WAAgBh0C,EAAAA,SAEhB,qBADLqiD,OAAK,QAAEriD,EAAAA,Q,SAGVF,EAAAA,EAAAA,GA2QM,OA3QAlB,OAAKo1C,EAAAA,EAAAA,IAAEh0C,EAAAA,QAAU,GAAKA,EAAAA,MAAMA,EAAAA,QAASA,EAAAA,SAASA,EAAAA,S,EAClDF,EAAAA,EAAAA,GAyQM,MAzQND,EAyQM,EAxQJC,EAAAA,EAAAA,GAqIM,MArINyvC,EAqIM,CAnIqB,SAAjBvvC,EAAAA,eAAY,WADpBJ,EAAAA,EAAAA,IAeI,K,MAbFhB,MAAM,yBACLS,QAAK,8BAAEW,EAAAA,YAAAA,EAAAA,WAAAA,MAAAA,EAAAA,UAAU,I,EAElBkwC,EAAAA,EAAAA,IAGEyrB,EAAAA,CAFC,gBAAe37D,EAAAA,aACfzD,KAAMyD,EAAAA,M,kCAETF,EAAAA,EAAAA,GAKM,MALN0vC,EAKM,EAJJU,EAAAA,EAAAA,IAGEQ,EAAAA,CAFA9xC,MAAM,8BACNqJ,KAAK,qBAK0B,mBAAjBjI,EAAAA,eAAY,WADhCuwC,EAAAA,EAAAA,IAMEorB,EAAAA,C,MAJA/8D,MAAM,mBACL,gBAAeoB,EAAAA,aACfzD,KAAMyD,EAAAA,KACNX,QAAOW,EAAAA,c,yDAEVuwC,EAAAA,EAAAA,IAQcJ,EAAAA,C,MANXvT,GAAI58B,EAAAA,gBAAgBA,EAAAA,O,mBAErB,iBAGE,EAHFkwC,EAAAA,EAAAA,IAGEyrB,EAAAA,CAFC,gBAAe37D,EAAAA,aACfzD,KAAMyD,EAAAA,M,sDAGXF,EAAAA,EAAAA,GAmGM,MAnGN6vC,EAmGM,EAlGJ7vC,EAAAA,EAAAA,GA4DM,MA5DN8vC,EA4DM,EA3DJM,EAAAA,EAAAA,IAScC,EAAAA,CARXvT,GAAI58B,EAAAA,gBAAgBA,EAAAA,MACrBpB,MAAM,a,mBAEN,iBAIE,EAJFsxC,EAAAA,EAAAA,IAIE0rB,EAAAA,CAHCxvD,MAAOpM,EAAAA,KAAKhF,KACZsF,KAAMN,EAAAA,KAAKhF,KACXtB,MAAOsG,EAAAA,KAAKtG,O,qDAIRsG,EAAAA,aAAeA,EAAAA,KAAKwnD,WAAQ,WADrC5nD,EAAAA,EAAAA,IAWS,U,MATPhB,MAAM,sCACLS,QAAK,wCAAOW,EAAAA,gBAAAA,EAAAA,eAAAA,MAAAA,EAAAA,UAAc,e,EAE3BkwC,EAAAA,EAAAA,IAKEQ,EAAAA,CAJA,iBACA9xC,MAAM,OACNqJ,KAAK,OACJmE,MAAOpM,EAAAA,GAAG,2B,qCAIPA,EAAAA,cAAgBA,EAAAA,KAAKwnD,WAAQ,WADrC5nD,EAAAA,EAAAA,IAUI,K,MARDG,KAAMC,EAAAA,KAAK0D,sBACZzD,OAAO,SACPrB,MAAM,wC,EAENsxC,EAAAA,EAAAA,IAGEQ,EAAAA,CAFA9xC,MAAM,OACNqJ,KAAK,uB,sBAIDjI,EAAAA,aAAeA,EAAAA,WAAQ,WAD/BuwC,EAAAA,EAAAA,IAIEq1F,EAAAA,C,MAFCrpI,KAAMyD,EAAAA,KACNmrB,aAAcnrB,EAAAA,c,iDAGTA,EAAAA,UAAO,WADfuwC,EAAAA,EAAAA,IAUcJ,EAAAA,C,MARXvT,GAAI58B,EAAAA,gBAAgBA,EAAAA,MACrBpB,MAAM,uCACLS,QAAOW,EAAAA,S,mBAER,iBAGE,EAHFkwC,EAAAA,EAAAA,IAGEQ,EAAAA,CAFA9xC,MAAM,OACNqJ,KAAK,e,8CAIDjI,EAAAA,UAAO,WADfJ,EAAAA,EAAAA,IASS,U,MAPPhB,MAAM,uCACLS,QAAK,8BAAEW,EAAAA,SAAAA,EAAAA,QAAAA,MAAAA,EAAAA,UAAO,I,EAEfkwC,EAAAA,EAAAA,IAGEQ,EAAAA,CAFA9xC,MAAM,OACNqJ,KAAK,c,kBAIXnI,EAAAA,EAAAA,GAoCM,MApCNgwC,EAoCM,EAnCJI,EAAAA,EAAAA,IAGEk9D,EAAAA,CAFAxuG,MAAM,mBACLrC,KAAMyD,EAAAA,M,iBAEQA,EAAAA,SAiBR,iBAjBe,WAAxBJ,EAAAA,EAAAA,IAmBW8vC,EAAAA,GAAAA,CAAA/oC,IAAAA,GAAA,CAjBD3G,EAAAA,KAAKusB,cAAW,WADxB3sB,EAAAA,EAAAA,IAKO,OALPmwC,GAKO,QADF/vC,EAAAA,GAAG,0BAAD,oBAGGA,EAAAA,cAAW,WADrBJ,EAAAA,EAAAA,IAKO,OALPoxC,GAKO,QADFhxC,EAAAA,GAAG,gBAAD,OAAiBA,EAAAA,eAAW,oBAG3BA,EAAAA,KAAKmwF,MAAG,WADhBvwF,EAAAA,EAAAA,IAKO,OALPqwC,GAKO,QADFjwC,EAAAA,GAAG,kBAAD,0BAGGA,EAAAA,KAAK+0B,SAAM,WAAvBn1B,EAAAA,EAAAA,IAMO,WALLswC,EAAAA,EAAAA,IAIEQ,EAAAA,CAHA9xC,MAAM,YACNqJ,KAAK,OACLgpC,KAAK,W,eAIAjxC,EAAAA,aAAa4P,eAAkB5P,EAAAA,SAEnB,iBAF0B,WAD/CJ,EAAAA,EAAAA,IAGoD,OAHpDywC,GAGoD,QAAhDrwC,EAAAA,UAAW,KAAC,QAAGA,EAAAA,GAAG,sBAAD,WAI3BF,EAAAA,EAAAA,GA8CM,MA9CNwwC,EA8CM,CA5CItwC,EAAAA,aAAa4kE,aAAe5kE,EAAAA,UAAYA,EAAAA,cAAW,WAD3DJ,EAAAA,EAAAA,IAKM,MALNypE,GAKM,QADDrpE,EAAAA,GAAG,0BAAD,qBAGCA,EAAAA,cAAgBA,EAAAA,UAAaA,EAAAA,U,iBAAQ,WAD7CJ,EAAAA,EAAAA,IAsCM,MAtCN4wC,EAsCM,CAhC0B,aAAtBxwC,EAAAA,mBAAiB,qBADzBJ,EAAAA,EAAAA,IAMC,S,MAJE3G,GAAE,uBAAyB+G,EAAAA,KAAK/G,G,qDACxB+G,EAAAA,mBAAkB,IAC3BpB,MAAM,oBACNI,KAAK,Q,kBAFIgB,EAAAA,uBAAkB,eAKC,aAAtBA,EAAAA,mBAAiB,qBADzBJ,EAAAA,EAAAA,IAMC,S,MAJE3G,GAAE,qBAAuB+G,EAAAA,KAAK/G,G,qDACtB+G,EAAAA,mBAAkB,IAC3BpB,MAAM,kBACNI,KAAK,S,kBAFIgB,EAAAA,uBAAkB,wBAG5B,KACD,QAAG,KAAM,MACT,QAiBSo+G,EAAAA,CAhBNnlH,GAAE,mBAAqB+G,EAAAA,KAAK/G,G,WACpB+G,EAAAA,kB,qDAAAA,EAAAA,kBAAiB,IAC1BpB,MAAM,oB,mBAEN,iBAES,EAFTkB,EAAAA,EAAAA,GAES,SAFTwpE,GAES,QADJtpE,EAAAA,GAAG,iCAAD,IAEPF,EAAAA,EAAAA,GAES,SAFT0sE,GAES,QADJxsE,EAAAA,GAAG,8BAAD,IAEPF,EAAAA,EAAAA,GAES,SAFTypE,GAES,QADJvpE,EAAAA,GAAG,gCAAD,IAEPF,EAAAA,EAAAA,GAES,SAFT0pE,GAES,QADJxpE,EAAAA,GAAG,6BAAD,G,qCAMLA,EAAAA,UAAYA,EAAAA,cAAW,WAD/BJ,EAAAA,EAAAA,IAsEM,MAtENoiH,EAsEM,EAlEJliH,EAAAA,EAAAA,GAkCM,MAlCN4sE,EAkCM,EAjCJx8B,EAAAA,EAAAA,IAGE20B,EAAAA,CAFC15C,aAAcnrB,EAAAA,aACdzD,KAAMyD,EAAAA,M,gCAEOA,EAAAA,aAAa6jB,YAAS,WAAtCjkB,EAAAA,EAAAA,IA4BW8vC,EAAAA,GAAAA,CAAA/oC,IAAAA,GAAA,CA1BA3G,EAAAA,aAAa6lI,c,WAOtBt1F,EAAAA,EAAAA,IAkBiBu1F,EAAAA,C,MAhBflnI,MAAM,6BACL0+C,MAAOt9C,EAAAA,gBACPoM,MAAOpM,EAAAA,GAAG,0B,mBAEX,iBAWW,EAXXkwC,EAAAA,EAAAA,IAWWyV,EAAAA,KAAAA,C,kBAVT,iBAIE,EAJFzV,EAAAA,EAAAA,IAIEQ,EAAAA,CAHAzoC,KAAK,MACLgsC,UAAU,iCACV4nF,KAAK,gBAEP3rF,EAAAA,EAAAA,IAGEQ,EAAAA,CAFAzoC,KAAK,MACLgsC,UAAU,qCAEZ/D,EAAAA,EAAAA,IAAsBQ,EAAAA,CAAdzoC,KAAK,S,2CAvBgB,WADjCsoC,EAAAA,EAAAA,IAOiBu1F,EAAAA,C,MALflnI,MAAM,qBACL0+C,MAAOt9C,EAAAA,cACPoM,MAAOpM,EAAAA,GAAG,wB,mBAEX,iBAAsB,EAAtBkwC,EAAAA,EAAAA,IAAsBQ,EAAAA,CAAdzoC,KAAK,S,wDAuBnBnI,EAAAA,EAAAA,GAiBM,YAfIE,EAAAA,aAAayrB,SAAM,WAD3B7rB,EAAAA,EAAAA,IAOS,U,MALPhB,MAAM,uCACLmJ,SAAU/H,EAAAA,KAAKusB,YACfltB,QAAK,8BAAEW,EAAAA,YAAAA,EAAAA,WAAAA,MAAAA,EAAAA,UAAU,K,QAEfA,EAAAA,GAAG,oBAAD,mBAEPJ,EAAAA,EAAAA,IAOS,U,MALPhB,MAAM,+BACLmJ,SAAU/H,EAAAA,KAAKusB,YACfltB,QAAK,8BAAEW,EAAAA,UAAAA,EAAAA,SAAAA,MAAAA,EAAAA,UAAQ,K,QAEbA,EAAAA,GAAG,mBAAD,SAGTF,EAAAA,EAAAA,GAQM,aAPJA,EAAAA,EAAAA,GAMS,UALPlB,MAAM,+BACLmJ,SAAU/H,EAAAA,KAAKusB,YACfltB,QAAK,8BAAEW,EAAAA,aAAAA,EAAAA,YAAAA,MAAAA,EAAAA,UAAW,K,QAEhBA,EAAAA,GAAG,sBAAD,OAIDA,EAAAA,qBAAkB,WAD1BuwC,EAAAA,EAAAA,IAGEw1F,EAAAA,C,MADCxpI,KAAMyD,EAAAA,M,sDAIFA,EAAAA,UAAYA,EAAAA,KAAKwnD,WAAQ,WADlC5nD,EAAAA,EAAAA,IAKM,MALN+sE,EAKM,EADJz8B,EAAAA,EAAAA,IAA6B60B,EAAAA,CAAdxoE,KAAMyD,EAAAA,MAAI,oCAGnBA,EAAAA,UAAYA,EAAAA,cAAgBA,EAAAA,SAAYA,EAAAA,eAAiBA,EAAAA,gBAAY,WAD7EuwC,EAAAA,EAAAA,IAKEy1F,GAAAA,C,MAHCzpI,KAAMyD,EAAAA,KACNmrB,aAAcnrB,EAAAA,aACdi9G,SAAUj9G,EAAAA,e,kEAKRA,EAAAA,S,iBAAO,WADhBJ,EAAAA,EAAAA,IAqCM,MArCNsiH,EAqCM,EAhCKliH,EAAAA,aAAa4P,eAAiB5P,EAAAA,WAAQ,WAD/CJ,EAAAA,EAAAA,IAyBM,MAzBNoyH,EAyBM,EArBJlyH,EAAAA,EAAAA,GAMM,OALJlB,MAAM,aACLS,QAAK,yCAAUW,EAAAA,eAAe,WAAD,kB,EAE9BF,EAAAA,EAAAA,GAAuC,mBAAhCE,EAAAA,GAAG,uBAAD,IACTF,EAAAA,EAAAA,GAA2C,+BAAlCE,EAAAA,KAAKioE,gBAAiB,IAAC,UAElCnoE,EAAAA,EAAAA,GAMM,OALJlB,MAAM,aACLS,QAAK,2CAAUW,EAAAA,eAAe,UAAD,kB,EAE9BF,EAAAA,EAAAA,GAAwC,mBAAjCE,EAAAA,GAAG,wBAAD,IACTF,EAAAA,EAAAA,GAAiF,qBAAxEE,EAAAA,iBAAmBA,EAAAA,GAAG,oBAAsBA,EAAAA,KAAKkoE,eAAa,MAEzEpoE,EAAAA,EAAAA,GAMM,OALJlB,MAAM,aACLS,QAAK,2CAAUW,EAAAA,eAAe,YAAD,kB,EAE9BF,EAAAA,EAAAA,GAAwC,mBAAjCE,EAAAA,GAAG,wBAAD,IACTF,EAAAA,EAAAA,GAAqF,qBAA5EE,EAAAA,mBAAqBA,EAAAA,GAAG,oBAAsBA,EAAAA,KAAKqoE,iBAAe,wBAItEroE,EAAAA,S,iBAAO,WADhBuwC,EAAAA,EAAAA,IAMEqrB,EAAAA,C,MAJAh9D,MAAM,gBACL0B,KAAMN,EAAAA,KAAK8vF,iBACXp2F,MAAOsG,EAAAA,KAAKtG,MACZ,gBAAc,G,0CAGnB62C,EAAAA,EAAAA,IA8CWsV,EAAAA,GAAAA,CA9CDjpB,GAAG,UAAQ,CAEX58B,EAAAA,qBAAkB,WAD1BuwC,EAAAA,EAAAA,IA4CgBuV,GAAAA,C,MA1Cb15C,MAAOpM,EAAAA,GAAG,gCACV,eAAcA,EAAAA,GAAG,wCACjB,cAAaA,EAAAA,GAAG,wCAChB+lD,WAAU/lD,EAAAA,WACVgmD,YAAWhmD,EAAAA,iB,mBAEZ,iBASS,EATTkwC,EAAAA,EAAAA,IASS8X,GAAAA,CARPC,QAAQ,yBACRhrD,IAAI,O,CAEOV,MAAI,SACb,iBAEE,EAFFuD,EAAAA,EAAAA,GAEE,Q,aADAwkE,EAAAA,EAAAA,IAA4BtkE,EAAAA,KAAfpD,iB,qBAInBkD,EAAAA,EAAAA,GAyBM,MAzBN+sE,EAyBM,EAtBJ/sE,EAAAA,EAAAA,GAEQ,sBADHE,EAAAA,GAAG,mCAAD,aAEPF,EAAAA,EAAAA,GAKC,S,uDAJUE,EAAAA,iBAAgB,IACzBhB,KAAK,SACLJ,MAAM,oCACL2/B,IAAK,G,iBAHGv+B,EAAAA,qBAKXkwC,EAAAA,EAAAA,IAYSkuE,EAAAA,C,WAXEp+G,EAAAA,e,uDAAAA,EAAAA,eAAc,IACvB8pH,SAAS,OACTlrH,MAAM,e,mBAGJ,iBAA+B,gBADjCgB,EAAAA,EAAAA,IAMS8vC,EAAAA,GAAAA,MAAAA,EAAAA,EAAAA,IALQ1vC,EAAAA,iBAAe,SAAvBo3C,G,kBADTx3C,EAAAA,EAAAA,IAMS,UAJN+G,IAAKywC,EACLlsC,MAAOksC,I,QAELp3C,EAAAA,GAAG,QAAD,OAASo3C,EAAI,qB,8OejUhC,QArBiB,CACfv4C,MAAO,CACLtC,KAAMnD,OACNmhH,GAAI,CACFv7G,KAAMyB,QACNtB,SAAS,IAGbgB,WAAY,CACV01G,uBAAAA,EAAAA,GAEFz2G,QAAS,CACP44C,gBAAc,SAAGz7C,GACf,OAAO07C,EAAAA,EAAAA,GACL17C,EAAKtD,GAAIsD,EAAKC,YACd8C,KAAKyvC,OAAOtzC,MAAM4Q,SAASgG,oBAE/B,ICzBJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,2GDJzDk+B,EAAAA,EAAAA,IAOcJ,EAAAA,CANX/jC,MAAOpM,EAAAA,KAAKpD,eACZggC,GAAI58B,EAAAA,gBAAgBA,EAAAA,O,mBAErB,iBAAmB,mBAAhBA,EAAAA,GAAK,IAAM,KAAT,QAAiBA,EAAAA,KAAKpD,gBAAc,IAAGszC,EAAAA,EAAAA,IAE1CoqE,EAAAA,CADC/9G,KAAMyD,EAAAA,MAAI,iB,0GEgBjB,QAnBoB,CAClBhF,KAAM,cACN6D,MAAO,CACL,SAAU,iBAAkB,WAAY,0BAE1CsB,WAAY,CACVwxC,S,SAAAA,EACAkf,SAAS5G,EAAAA,EAAAA,KAAqB,kBAAM,uCAAgC,KAEtEzjD,SAAU,CACRk6E,wBAAuB,WACrB,OAAOphF,KAAKyvC,OAAOj7B,QAAQ/G,aAAa2zE,uBAC1C,EACAC,mBAAkB,WAChB,OAAOrhF,KAAKyvC,OAAOj7B,QAAQ/G,aAAa4zE,kBAC1C,ICTJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,yFCNzDpwC,EAAAA,EAAAA,IAmBU+gB,EAAAA,CAlBRC,QAAQ,QACR,gBAAc,+BACb,2BAA0BvxD,EAAAA,wBAA0B,qBACpD,kBAAiBA,EAAAA,gBAAkBA,EAAAA,mBACnC+H,SAAU/H,EAAAA,U,CAEAuxD,SAAO,SAChB,iBAAQ,EAARve,EAAAA,EAAAA,IAAQhzC,EAAAA,OAAAA,W,IAECd,SAAO,SAChB,gBADmBk5B,EAAK,EAALA,MAAK,QACxB8X,EAAAA,EAAAA,IAME0B,EAAAA,CALAhzC,MAAM,eACL,UAASoB,EAAAA,OACT,YAAU,EACV,gBAA0C,SAA3BA,EAAAA,wBAAqCo4B,EAAQp4B,EAAAA,wBAC5D,WAAUo4B,G,iOCkCnB,QAlDwB,CACtBv5B,MAAO,CAAC,aAAc,YACtBtF,KAAI,WACF,MAAO,CACL0sI,eAAe,EAEfC,UAAU,EAEd,EACA1/H,SAAU,CACRu5E,UAAS,WACP,OAAIzgF,KAAKyvC,OAAOj7B,QAAQ/G,aAAaizE,qBAC3B1gF,KAAK4mI,SAER5mI,KAAKyvC,OAAOj7B,QAAQ/G,aAAagzE,SAC1C,GAEF3gF,QAAS,CACP+mI,UAAS,SAAEttI,GACTyG,KAAK8mI,YAAYvtI,GACbyG,KAAKygF,UACPzgF,KAAK+E,MAAM,OAAQ,CAAEgiI,SAAS,IAGhC/mI,KAAK+E,MAAM,OACb,EACAiiI,SAAQ,SAAEztI,GACRyG,KAAK+E,MAAM,QACb,EACA+hI,YAAW,SAAEvtI,GACX,IAAMoH,EAASpH,EAAE0tI,YAAc1tI,EAAEoH,OAG5BX,KAAK4mI,gBACwC,IAAvCjmI,EAAOumI,6BAEZvmI,EAAOumI,4BAA8B,QAET,IAAvBvmI,EAAOwmI,aAEZxmI,EAAOwmI,kBAEqB,IAAvBxmI,EAAOymI,aACZzmI,EAAOymI,YAAY/rI,OAAS,IAElC2E,KAAK4mI,UAAW,GAClB,ICxCJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,wCCJzDtmI,EAAAA,EAAAA,IAWE,SAVAhB,MAAM,QACN+nI,QAAQ,WACPpuF,IAAKv4C,EAAAA,WAAWlB,IAChB8nI,KAAM5mI,EAAAA,UACN4gD,SAAU5gD,EAAAA,SACVygD,IAAKzgD,EAAAA,WAAW0+C,YAChBtyC,MAAOpM,EAAAA,WAAW0+C,YACnBmoF,YAAA,GACCV,UAAO,8BAAEnmI,EAAAA,WAAAA,EAAAA,UAAAA,MAAAA,EAAAA,UAAS,GAClB8sG,QAAK,8BAAE9sG,EAAAA,UAAAA,EAAAA,SAAAA,MAAAA,EAAAA,UAAQ,I,gCCXpB,IAAI3H,EAAM,CACT,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,OAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,KAED,YAAa,CACZ,MACA,KAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,iBAAkB,CACjB,KACA,MAED,qBAAsB,CACrB,MACA,KAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,KAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,KACA,MAED,iBAAkB,CACjB,MACA,OAGF,SAASC,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAEJ,EAAKE,GAC9B,OAAOG,QAAQC,UAAUC,MAAK,KAC7B,IAAIC,EAAI,IAAIC,MAAM,uBAAyBP,EAAM,KAEjD,MADAM,EAAEE,KAAO,mBACHF,CAAC,IAIT,IAAIG,EAAMX,EAAIE,GAAMU,EAAKD,EAAI,GAC7B,OAAON,QAAQgd,IAAI1c,EAAIyD,MAAM,GAAGpE,IAAIG,EAAoBK,IAAID,MAAK,IACzDJ,EAAoBS,IAE7B,CACAX,EAAoBa,KAAO,IAAOC,OAAOD,KAAKd,GAC9CC,EAAoBW,GAAK,MACzBI,EAAOC,QAAUhB,C,6jOCpJbwuI,EAA2B,CAAC,EAGhC,SAAStuI,EAAoBuuI,GAE5B,IAAIC,EAAeF,EAAyBC,GAC5C,QAAqBljI,IAAjBmjI,EACH,OAAOA,EAAa1tI,QAGrB,IAAID,EAASytI,EAAyBC,GAAY,CACjD9tI,GAAI8tI,EACJn6F,QAAQ,EACRtzC,QAAS,CAAC,GAUX,OANA2tI,EAAoBF,GAAUx/H,KAAKlO,EAAOC,QAASD,EAAQA,EAAOC,QAASd,GAG3Ea,EAAOuzC,QAAS,EAGTvzC,EAAOC,OACf,CAGAd,EAAoBouC,EAAIqgG,Ezc5BpB5vI,EAAW,GACfmB,EAAoB0uI,EAAI,CAAChqI,EAAQiqI,EAAUC,EAAInoC,KAC9C,IAAGkoC,EAAH,CAMA,IAAIE,EAAeC,IACnB,IAAShpI,EAAI,EAAGA,EAAIjH,EAASsD,OAAQ2D,IAAK,CAGzC,IAFA,IAAK6oI,EAAUC,EAAInoC,GAAY5nG,EAASiH,GACpCipI,GAAY,EACPnsG,EAAI,EAAGA,EAAI+rG,EAASxsI,OAAQygC,MACpB,EAAX6jE,GAAsBooC,GAAgBpoC,IAAa7lG,OAAOD,KAAKX,EAAoB0uI,GAAGzhI,OAAOkB,GAASnO,EAAoB0uI,EAAEvgI,GAAKwgI,EAAS/rG,MAC9I+rG,EAASntH,OAAOohB,IAAK,IAErBmsG,GAAY,EACTtoC,EAAWooC,IAAcA,EAAepoC,IAG7C,GAAGsoC,EAAW,CACblwI,EAAS2iB,OAAO1b,IAAK,GACrB,IAAI4iB,EAAIkmH,SACEvjI,IAANqd,IAAiBhkB,EAASgkB,EAC/B,CACD,CACA,OAAOhkB,CAnBP,CAJC+hG,EAAWA,GAAY,EACvB,IAAI,IAAI3gG,EAAIjH,EAASsD,OAAQ2D,EAAI,GAAKjH,EAASiH,EAAI,GAAG,GAAK2gG,EAAU3gG,IAAKjH,EAASiH,GAAKjH,EAASiH,EAAI,GACrGjH,EAASiH,GAAK,CAAC6oI,EAAUC,EAAInoC,EAqBjB,E0czBdzmG,EAAoBkT,EAAKrS,IACxB,IAAImuI,EAASnuI,GAAUA,EAAOouI,WAC7B,IAAOpuI,EAAiB,QACxB,IAAM,EAEP,OADAb,EAAoB07E,EAAEszD,EAAQ,CAAEnsI,EAAGmsI,IAC5BA,CAAM,EzcNVjwI,EAAW6B,OAAOsuI,eAAkB7tH,GAASzgB,OAAOsuI,eAAe7tH,GAASA,GAASA,EAAa,UAQtGrhB,EAAoBU,EAAI,SAASgS,EAAOy8H,GAEvC,GADU,EAAPA,IAAUz8H,EAAQ5L,KAAK4L,IAChB,EAAPy8H,EAAU,OAAOz8H,EACpB,GAAoB,iBAAVA,GAAsBA,EAAO,CACtC,GAAW,EAAPy8H,GAAaz8H,EAAMu8H,WAAY,OAAOv8H,EAC1C,GAAW,GAAPy8H,GAAoC,mBAAfz8H,EAAMtS,KAAqB,OAAOsS,CAC5D,CACA,IAAI08H,EAAKxuI,OAAO0pF,OAAO,MACvBtqF,EAAoB0oB,EAAE0mH,GACtB,IAAIzyE,EAAM,CAAC,EACX79D,EAAiBA,GAAkB,CAAC,KAAMC,EAAS,CAAC,GAAIA,EAAS,IAAKA,EAASA,IAC/E,IAAI,IAAI6qC,EAAiB,EAAPulG,GAAYz8H,EAAyB,iBAAXk3B,KAAyB9qC,EAAeu2B,QAAQuU,GAAUA,EAAU7qC,EAAS6qC,GACxHhpC,OAAOyuI,oBAAoBzlG,GAAS9tB,SAAS3N,GAASwuD,EAAIxuD,GAAO,IAAOuE,EAAMvE,KAI/E,OAFAwuD,EAAa,QAAI,IAAM,EACvB38D,EAAoB07E,EAAE0zD,EAAIzyE,GACnByyE,CACR,E0cxBApvI,EAAoB07E,EAAI,CAAC56E,EAASwuI,KACjC,IAAI,IAAInhI,KAAOmhI,EACXtvI,EAAoBC,EAAEqvI,EAAYnhI,KAASnO,EAAoBC,EAAEa,EAASqN,IAC5EvN,OAAO2uI,eAAezuI,EAASqN,EAAK,CAAEqhI,YAAY,EAAMl/E,IAAKg/E,EAAWnhI,IAE1E,ECNDnO,EAAoByvI,EAAI,CAAC,EAGzBzvI,EAAoBK,EAAKqvI,GACjBxvI,QAAQgd,IAAItc,OAAOD,KAAKX,EAAoByvI,GAAGh6H,QAAO,CAACqvF,EAAU32F,KACvEnO,EAAoByvI,EAAEthI,GAAKuhI,EAAS5qC,GAC7BA,IACL,KCNJ9kG,EAAoBurB,EAAKmkH,GAEjB,cAAgB,CAAC,GAAK,+BAA+B,IAAM,4BAA4B,IAAM,4BAA4B,IAAM,4BAA4B,IAAM,wBAAwB,IAAM,4BAA4B,IAAM,eAAe,IAAM,4BAA4B,IAAM,4BAA4B,IAAM,gCAAgC,IAAM,eAAe,IAAM,4BAA4B,IAAM,4BAA4B,IAAM,4BAA4B,IAAM,eAAe,KAAO,4BAA4B,KAAO,oCAAoC,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,eAAe,KAAO,6BAA6B,KAAO,6BAA6B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,6BAA6B,KAAO,+BAA+B,KAAO,eAAe,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,6BAA6B,KAAO,4BAA4B,KAAO,6BAA6B,KAAO,+BAA+B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,eAAe,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,eAAe,KAAO,4BAA4B,KAAO,6BAA6B,KAAO,6BAA6B,KAAO,4BAA4B,KAAO,+BAA+B,KAAO,iCAAiC,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,eAAe,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,iCAAiC,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,+BAA+B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,QAAQ,KAAO,eAAe,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,eAAe,KAAO,4BAA4B,KAAO,+BAA+B,KAAO,eAAe,KAAO,6BAA6B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,kCAAkC,KAAO,eAAe,KAAO,eAAe,KAAO,4BAA4B,KAAO,eAAe,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,+BAA+B,KAAO,4BAA4B,KAAO,eAAe,KAAO,4BAA4B,KAAO,6BAA6B,KAAO,oCAAoC,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,eAAe,KAAO,+BAA+B,KAAO,6BAA6B,KAAO,eAAe,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,eAAe,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,eAAe,KAAO,eAAe,KAAO,4BAA4B,KAAO,oCAAoC,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,eAAe,KAAO,eAAe,KAAO,4BAA4B,KAAO,eAAe,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,oBAAoB,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,6BAA6B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,+BAA+B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,+BAA+B,KAAO,eAAe,KAAO,4BAA4B,KAAO,6BAA6B,KAAO,4BAA4B,KAAO,eAAe,KAAO,eAAe,KAAO,6BAA6B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,6BAA6B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,iCAAiC,KAAO,oBAAoB,KAAO,4BAA4B,KAAO,gCAAgC,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,+BAA+B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,+BAA+B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,eAAe,KAAO,4BAA4B,KAAO,eAAe,KAAO,eAAe,KAAO,4BAA4B,KAAO,6BAA6B,KAAO,6BAA6B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,+BAA+B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,kCAAkCA,IAAYA,GAAW,IAAM,CAAC,GAAK,uBAAuB,GAAK,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO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","sources":["webpack://pleroma_fe/webpack/runtime/chunk loaded","webpack://pleroma_fe/webpack/runtime/create fake namespace object","webpack://pleroma_fe/webpack/runtime/load script","webpack://pleroma_fe/./src/i18n/en.json","webpack://pleroma_fe/./node_modules/@kazvmoe-infra/unicode-emoji-json/annotations/ lazy ^\\.\\/.*\\.json$ chunkName: emoji-annotations/[request] namespace object","webpack://pleroma_fe/./src/components/emoji_input/suggestor.js","webpack://pleroma_fe/./src/services/html_converter/utility.service.js","webpack://pleroma_fe/./src/services/html_converter/html_line_converter.service.js","webpack://pleroma_fe/./src/components/hashtag_link/hashtag_link.vue","webpack://pleroma_fe/./src/components/hashtag_link/hashtag_link.js","webpack://pleroma_fe/./src/services/matcher/matcher.service.js","webpack://pleroma_fe/./src/components/hashtag_link/hashtag_link.vue?7c0f","webpack://pleroma_fe/./src/components/rich_content/rich_content.jsx","webpack://pleroma_fe/./src/services/html_converter/html_tree_converter.service.js","webpack://pleroma_fe/./src/components/tab_switcher/tab_switcher.jsx","webpack://pleroma_fe/./src/i18n/languages.js","webpack://pleroma_fe/./src/i18n/messages.js","webpack://pleroma_fe/./src/lib/event_target_polyfill.js","webpack://pleroma_fe/./src/modules/interface.js","webpack://pleroma_fe/./src/modules/instance.js","webpack://pleroma_fe/./src/modules/statuses.js","webpack://pleroma_fe/./src/modules/lists.js","webpack://pleroma_fe/./src/services/timeline_fetcher/timeline_fetcher.service.js","webpack://pleroma_fe/./src/services/follow_request_fetcher/follow_request_fetcher.service.js","webpack://pleroma_fe/./src/services/lists_fetcher/lists_fetcher.service.js","webpack://pleroma_fe/./src/services/backend_interactor_service/backend_interactor_service.js","webpack://pleroma_fe/./src/services/window_utils/window_utils.js","webpack://pleroma_fe/./src/services/new_api/oauth.js","webpack://pleroma_fe/./src/services/push/push.js","webpack://pleroma_fe/./src/modules/users.js","webpack://pleroma_fe/./src/services/chat_utils/chat_utils.js","webpack://pleroma_fe/./src/modules/api.js","webpack://pleroma_fe/./src/components/update_notification/update_notification.js","webpack://pleroma_fe/./src/modules/serverSideStorage.js","webpack://pleroma_fe/./src/modules/shout.js","webpack://pleroma_fe/./src/modules/oauth.js","webpack://pleroma_fe/./src/modules/auth_flow.js","webpack://pleroma_fe/./src/modules/media_viewer.js","webpack://pleroma_fe/./src/modules/oauth_tokens.js","webpack://pleroma_fe/./src/modules/reports.js","webpack://pleroma_fe/./src/modules/polls.js","webpack://pleroma_fe/./src/modules/postStatus.js","webpack://pleroma_fe/./src/modules/editStatus.js","webpack://pleroma_fe/./src/modules/statusHistory.js","webpack://pleroma_fe/./src/services/chat_service/chat_service.js","webpack://pleroma_fe/./src/modules/chats.js","webpack://pleroma_fe/./src/modules/announcements.js","webpack://pleroma_fe/./src/lib/persisted_state.js","webpack://pleroma_fe/./src/lib/push_notifications_plugin.js","webpack://pleroma_fe/./src/App.vue","webpack://pleroma_fe/./src/components/user_panel/user_panel.vue","webpack://pleroma_fe/./src/components/login_form/login_form.vue","webpack://pleroma_fe/./src/components/login_form/login_form.js","webpack://pleroma_fe/./src/components/login_form/login_form.vue?7e2c","webpack://pleroma_fe/./src/components/mfa_form/recovery_form.vue","webpack://pleroma_fe/./src/services/new_api/mfa.js","webpack://pleroma_fe/./src/components/mfa_form/recovery_form.js","webpack://pleroma_fe/./src/components/mfa_form/recovery_form.vue?75db","webpack://pleroma_fe/./src/components/mfa_form/totp_form.vue","webpack://pleroma_fe/./src/components/mfa_form/totp_form.js","webpack://pleroma_fe/./src/components/mfa_form/totp_form.vue?e31f","webpack://pleroma_fe/./src/components/auth_form/auth_form.js","webpack://pleroma_fe/./src/components/user_panel/user_panel.js","webpack://pleroma_fe/./src/components/user_panel/user_panel.vue?62d1","webpack://pleroma_fe/./src/components/nav_panel/nav_panel.vue","webpack://pleroma_fe/./src/components/navigation/navigation_entry.vue","webpack://pleroma_fe/./src/components/navigation/navigation.js","webpack://pleroma_fe/./src/components/optional_router_link/optional_router_link.vue","webpack://pleroma_fe/./src/components/optional_router_link/optional_router_link.vue?aa8e","webpack://pleroma_fe/./src/components/navigation/navigation_entry.js","webpack://pleroma_fe/./src/components/navigation/navigation_entry.vue?57fe","webpack://pleroma_fe/./src/components/navigation/filter.js","webpack://pleroma_fe/./src/components/lists_menu/lists_menu_content.js","webpack://pleroma_fe/./src/components/lists_menu/lists_menu_content.vue?5439","webpack://pleroma_fe/./src/components/lists_menu/lists_menu_content.vue","webpack://pleroma_fe/./src/components/navigation/navigation_pins.vue","webpack://pleroma_fe/./src/components/navigation/navigation_pins.js","webpack://pleroma_fe/./src/components/navigation/navigation_pins.vue?9359","webpack://pleroma_fe/./src/components/nav_panel/nav_panel.js","webpack://pleroma_fe/./src/components/nav_panel/nav_panel.vue?ec9c","webpack://pleroma_fe/./src/components/instance_specific_panel/instance_specific_panel.vue","webpack://pleroma_fe/./src/components/instance_specific_panel/instance_specific_panel.js","webpack://pleroma_fe/./src/components/instance_specific_panel/instance_specific_panel.vue?b4d3","webpack://pleroma_fe/./src/components/features_panel/features_panel.vue","webpack://pleroma_fe/./src/components/features_panel/features_panel.js","webpack://pleroma_fe/./src/components/features_panel/features_panel.vue?e52c","webpack://pleroma_fe/./src/components/who_to_follow_panel/who_to_follow_panel.vue","webpack://pleroma_fe/./src/components/who_to_follow_panel/who_to_follow_panel.js","webpack://pleroma_fe/./src/components/who_to_follow_panel/who_to_follow_panel.vue?c79e","webpack://pleroma_fe/./src/components/shout_panel/shout_panel.vue","webpack://pleroma_fe/./src/components/shout_panel/shout_panel.js","webpack://pleroma_fe/./src/components/shout_panel/shout_panel.vue?452f","webpack://pleroma_fe/./src/components/media_modal/media_modal.vue","webpack://pleroma_fe/./src/components/pinch_zoom/pinch_zoom.js","webpack://pleroma_fe/./src/components/pinch_zoom/pinch_zoom.vue?6a4b","webpack://pleroma_fe/./src/components/pinch_zoom/pinch_zoom.vue","webpack://pleroma_fe/./src/services/gesture_service/gesture_service.js","webpack://pleroma_fe/./src/components/swipe_click/swipe_click.js","webpack://pleroma_fe/./src/components/swipe_click/swipe_click.vue?cb15","webpack://pleroma_fe/./src/components/swipe_click/swipe_click.vue","webpack://pleroma_fe/./src/components/media_modal/media_modal.js","webpack://pleroma_fe/./src/components/media_modal/media_modal.vue?9f8e","webpack://pleroma_fe/./src/components/side_drawer/side_drawer.vue","webpack://pleroma_fe/./src/components/side_drawer/side_drawer.js","webpack://pleroma_fe/./src/components/side_drawer/side_drawer.vue?c115","webpack://pleroma_fe/./src/components/mobile_post_status_button/mobile_post_status_button.js","webpack://pleroma_fe/./src/components/mobile_post_status_button/mobile_post_status_button.vue?cc2d","webpack://pleroma_fe/./src/components/mobile_post_status_button/mobile_post_status_button.vue","webpack://pleroma_fe/./src/components/mobile_nav/mobile_nav.vue","webpack://pleroma_fe/./src/components/mobile_nav/mobile_nav.js","webpack://pleroma_fe/./src/components/mobile_nav/mobile_nav.vue?67f1","webpack://pleroma_fe/./src/components/desktop_nav/desktop_nav.vue","webpack://pleroma_fe/./src/components/search_bar/search_bar.vue","webpack://pleroma_fe/./src/components/search_bar/search_bar.js","webpack://pleroma_fe/./src/components/search_bar/search_bar.vue?d1ca","webpack://pleroma_fe/./src/components/desktop_nav/desktop_nav.js","webpack://pleroma_fe/./src/components/desktop_nav/desktop_nav.vue?6641","webpack://pleroma_fe/./src/components/user_reporting_modal/user_reporting_modal.vue","webpack://pleroma_fe/./src/components/user_reporting_modal/user_reporting_modal.js","webpack://pleroma_fe/./src/components/user_reporting_modal/user_reporting_modal.vue?df82","webpack://pleroma_fe/./src/components/edit_status_modal/edit_status_modal.vue","webpack://pleroma_fe/./src/components/edit_status_modal/edit_status_modal.js","webpack://pleroma_fe/./src/components/edit_status_modal/edit_status_modal.vue?03f9","webpack://pleroma_fe/./src/components/post_status_modal/post_status_modal.vue","webpack://pleroma_fe/./src/components/post_status_modal/post_status_modal.js","webpack://pleroma_fe/./src/components/post_status_modal/post_status_modal.vue?9c44","webpack://pleroma_fe/./src/components/status_history_modal/status_history_modal.vue","webpack://pleroma_fe/./src/components/status_history_modal/status_history_modal.js","webpack://pleroma_fe/./src/components/status_history_modal/status_history_modal.vue?4ee0","webpack://pleroma_fe/./src/components/global_notice_list/global_notice_list.vue","webpack://pleroma_fe/./src/components/global_notice_list/global_notice_list.js","webpack://pleroma_fe/./src/components/global_notice_list/global_notice_list.vue?1667","webpack://pleroma_fe/./src/App.js","webpack://pleroma_fe/./src/App.vue?3b2b","webpack://pleroma_fe/./src/components/timeline/timeline.vue","webpack://pleroma_fe/./src/components/conversation/conversation.vue","webpack://pleroma_fe/./src/components/thread_tree/thread_tree.vue","webpack://pleroma_fe/./src/components/thread_tree/thread_tree.js","webpack://pleroma_fe/./src/components/thread_tree/thread_tree.vue?7311","webpack://pleroma_fe/./src/components/quick_filter_settings/quick_filter_settings.vue","webpack://pleroma_fe/./src/components/quick_filter_settings/quick_filter_settings.js","webpack://pleroma_fe/./src/components/quick_filter_settings/quick_filter_settings.vue?f71f","webpack://pleroma_fe/./src/components/quick_view_settings/quick_view_settings.vue","webpack://pleroma_fe/./src/components/quick_view_settings/quick_view_settings.js","webpack://pleroma_fe/./src/components/quick_view_settings/quick_view_settings.vue?4eaf","webpack://pleroma_fe/./src/components/conversation/conversation.js","webpack://pleroma_fe/./src/components/conversation/conversation.vue?6723","webpack://pleroma_fe/./src/components/timeline_menu/timeline_menu.vue","webpack://pleroma_fe/./src/components/timeline_menu/timeline_menu.js","webpack://pleroma_fe/./src/components/timeline_menu/timeline_menu.vue?96c1","webpack://pleroma_fe/./src/components/timeline/timeline.js","webpack://pleroma_fe/./src/components/timeline/timeline.vue?7060","webpack://pleroma_fe/./src/components/public_timeline/public_timeline.js","webpack://pleroma_fe/./src/components/public_timeline/public_timeline.vue?daf2","webpack://pleroma_fe/./src/components/public_timeline/public_timeline.vue","webpack://pleroma_fe/./src/components/public_and_external_timeline/public_and_external_timeline.js","webpack://pleroma_fe/./src/components/public_and_external_timeline/public_and_external_timeline.vue?9b62","webpack://pleroma_fe/./src/components/public_and_external_timeline/public_and_external_timeline.vue","webpack://pleroma_fe/./src/components/friends_timeline/friends_timeline.js","webpack://pleroma_fe/./src/components/friends_timeline/friends_timeline.vue?a3f1","webpack://pleroma_fe/./src/components/friends_timeline/friends_timeline.vue","webpack://pleroma_fe/./src/components/tag_timeline/tag_timeline.js","webpack://pleroma_fe/./src/components/tag_timeline/tag_timeline.vue?be7b","webpack://pleroma_fe/./src/components/tag_timeline/tag_timeline.vue","webpack://pleroma_fe/./src/components/bookmark_timeline/bookmark_timeline.js","webpack://pleroma_fe/./src/components/bookmark_timeline/bookmark_timeline.vue?863c","webpack://pleroma_fe/./src/components/bookmark_timeline/bookmark_timeline.vue","webpack://pleroma_fe/./src/components/conversation-page/conversation-page.js","webpack://pleroma_fe/./src/components/conversation-page/conversation-page.vue?2386","webpack://pleroma_fe/./src/components/conversation-page/conversation-page.vue","webpack://pleroma_fe/./src/components/interactions/interactions.vue","webpack://pleroma_fe/./src/components/interactions/interactions.js","webpack://pleroma_fe/./src/components/interactions/interactions.vue?3dc7","webpack://pleroma_fe/./src/components/dm_timeline/dm_timeline.js","webpack://pleroma_fe/./src/components/dm_timeline/dm_timeline.vue?fced","webpack://pleroma_fe/./src/components/dm_timeline/dm_timeline.vue","webpack://pleroma_fe/./src/components/chat_list/chat_list.vue","webpack://pleroma_fe/./src/components/chat_list_item/chat_list_item.vue","webpack://pleroma_fe/./src/components/chat_title/chat_title.js","webpack://pleroma_fe/./src/components/chat_title/chat_title.vue?723f","webpack://pleroma_fe/./src/components/chat_title/chat_title.vue","webpack://pleroma_fe/./src/components/chat_list_item/chat_list_item.js","webpack://pleroma_fe/./src/components/chat_list_item/chat_list_item.vue?9103","webpack://pleroma_fe/./src/components/chat_new/chat_new.vue","webpack://pleroma_fe/./src/components/chat_new/chat_new.js","webpack://pleroma_fe/./src/components/chat_new/chat_new.vue?e65f","webpack://pleroma_fe/./src/components/chat_list/chat_list.js","webpack://pleroma_fe/./src/components/chat_list/chat_list.vue?39cf","webpack://pleroma_fe/./src/components/chat/chat.vue","webpack://pleroma_fe/./src/components/chat_message/chat_message.vue","webpack://pleroma_fe/./src/components/chat_message_date/chat_message_date.vue","webpack://pleroma_fe/./src/components/chat_message_date/chat_message_date.vue?a1e2","webpack://pleroma_fe/./src/components/chat_message/chat_message.js","webpack://pleroma_fe/./src/components/chat_message/chat_message.vue?38f9","webpack://pleroma_fe/./src/components/chat/chat_layout_utils.js","webpack://pleroma_fe/./src/components/chat/chat.js","webpack://pleroma_fe/./src/components/chat/chat.vue?0265","webpack://pleroma_fe/./src/components/user_profile/user_profile.vue","webpack://pleroma_fe/./src/components/follow_card/follow_card.vue","webpack://pleroma_fe/./src/components/remove_follower_button/remove_follower_button.js","webpack://pleroma_fe/./src/components/remove_follower_button/remove_follower_button.vue?a06d","webpack://pleroma_fe/./src/components/remove_follower_button/remove_follower_button.vue","webpack://pleroma_fe/./src/components/follow_card/follow_card.js","webpack://pleroma_fe/./src/components/follow_card/follow_card.vue?a7d5","webpack://pleroma_fe/./src/hocs/with_load_more/with_load_more.jsx","webpack://pleroma_fe/./src/components/user_profile/user_profile.js","webpack://pleroma_fe/./src/components/user_profile/user_profile.vue?c6a1","webpack://pleroma_fe/./src/components/search/search.vue","webpack://pleroma_fe/./src/components/search/search.js","webpack://pleroma_fe/./src/components/search/search.vue?853e","webpack://pleroma_fe/./src/components/registration/registration.vue","webpack://pleroma_fe/./src/components/registration/registration.js","webpack://pleroma_fe/./src/components/registration/registration.vue?5788","webpack://pleroma_fe/./src/components/password_reset/password_reset.vue","webpack://pleroma_fe/./src/components/password_reset/password_reset.js","webpack://pleroma_fe/./src/services/new_api/password_reset.js","webpack://pleroma_fe/./src/components/password_reset/password_reset.vue?e9fd","webpack://pleroma_fe/./src/components/follow_requests/follow_requests.vue","webpack://pleroma_fe/./src/components/follow_request_card/follow_request_card.vue","webpack://pleroma_fe/./src/components/follow_request_card/follow_request_card.js","webpack://pleroma_fe/./src/components/follow_requests/follow_requests.js","webpack://pleroma_fe/./src/components/follow_request_card/follow_request_card.vue?64bb","webpack://pleroma_fe/./src/components/follow_requests/follow_requests.vue?427b","webpack://pleroma_fe/./src/components/oauth_callback/oauth_callback.js","webpack://pleroma_fe/./src/components/oauth_callback/oauth_callback.vue?a7e1","webpack://pleroma_fe/./src/components/oauth_callback/oauth_callback.vue","webpack://pleroma_fe/./src/components/who_to_follow/who_to_follow.vue","webpack://pleroma_fe/./src/components/who_to_follow/who_to_follow.js","webpack://pleroma_fe/./src/components/who_to_follow/who_to_follow.vue?d712","webpack://pleroma_fe/./src/components/about/about.vue","webpack://pleroma_fe/./src/components/terms_of_service_panel/terms_of_service_panel.vue","webpack://pleroma_fe/./src/components/terms_of_service_panel/terms_of_service_panel.js","webpack://pleroma_fe/./src/components/terms_of_service_panel/terms_of_service_panel.vue?39d2","webpack://pleroma_fe/./src/components/staff_panel/staff_panel.vue","webpack://pleroma_fe/./src/components/staff_panel/staff_panel.js","webpack://pleroma_fe/./src/components/staff_panel/staff_panel.vue?16a1","webpack://pleroma_fe/./src/components/mrf_transparency_panel/mrf_transparency_panel.vue","webpack://pleroma_fe/./src/components/mrf_transparency_panel/mrf_transparency_panel.js","webpack://pleroma_fe/./src/components/about/about.js","webpack://pleroma_fe/./src/components/mrf_transparency_panel/mrf_transparency_panel.vue?cbb1","webpack://pleroma_fe/./src/components/about/about.vue?07c3","webpack://pleroma_fe/./src/components/remote_user_resolver/remote_user_resolver.vue","webpack://pleroma_fe/./src/components/remote_user_resolver/remote_user_resolver.js","webpack://pleroma_fe/./src/components/remote_user_resolver/remote_user_resolver.vue?ac33","webpack://pleroma_fe/./src/components/lists/lists.vue","webpack://pleroma_fe/./src/components/lists_card/lists_card.vue","webpack://pleroma_fe/./src/components/lists_card/lists_card.js","webpack://pleroma_fe/./src/components/lists/lists.js","webpack://pleroma_fe/./src/components/lists_card/lists_card.vue?16e6","webpack://pleroma_fe/./src/components/lists/lists.vue?7e21","webpack://pleroma_fe/./src/components/lists_timeline/lists_timeline.js","webpack://pleroma_fe/./src/components/lists_timeline/lists_timeline.vue?804f","webpack://pleroma_fe/./src/components/lists_timeline/lists_timeline.vue","webpack://pleroma_fe/./src/components/lists_edit/lists_edit.vue","webpack://pleroma_fe/./src/components/lists_user_search/lists_user_search.vue","webpack://pleroma_fe/./src/components/lists_user_search/lists_user_search.js","webpack://pleroma_fe/./src/components/lists_user_search/lists_user_search.vue?4447","webpack://pleroma_fe/./src/components/lists_edit/lists_edit.js","webpack://pleroma_fe/./src/components/lists_edit/lists_edit.vue?056b","webpack://pleroma_fe/./src/components/announcements_page/announcements_page.vue","webpack://pleroma_fe/./src/components/announcement/announcement.vue","webpack://pleroma_fe/./src/components/announcement_editor/announcement_editor.vue","webpack://pleroma_fe/./src/components/announcement_editor/announcement_editor.js","webpack://pleroma_fe/./src/components/announcement_editor/announcement_editor.vue?cdb9","webpack://pleroma_fe/./src/components/announcement/announcement.js","webpack://pleroma_fe/./src/components/announcements_page/announcements_page.js","webpack://pleroma_fe/./src/components/announcement/announcement.vue?a400","webpack://pleroma_fe/./src/components/announcements_page/announcements_page.vue?89ce","webpack://pleroma_fe/./src/boot/routes.js","webpack://pleroma_fe/./src/directives/body_scroll_lock.js","webpack://pleroma_fe/./src/boot/after_store.js","webpack://pleroma_fe/./src/main.js","webpack://pleroma_fe/./src/modules/config.js","webpack://pleroma_fe/./src/modules/serverSideConfig.js","webpack://pleroma_fe/./src/services/errors/errors.js","webpack://pleroma_fe/./src/modules/errors.js","webpack://pleroma_fe/./src/services/api/api.service.js","webpack://pleroma_fe/./src/services/attributes_helper/attributes_helper.service.js","webpack://pleroma_fe/./src/services/color_convert/color_convert.js","webpack://pleroma_fe/./src/services/component_utils/component_utils.js","webpack://pleroma_fe/./src/services/date_utils/date_utils.js","webpack://pleroma_fe/./src/services/desktop_notification_utils/desktop_notification_utils.js","webpack://pleroma_fe/./src/services/entity_normalizer/entity_normalizer.service.js","webpack://pleroma_fe/./src/services/favicon_service/favicon_service.js","webpack://pleroma_fe/./src/services/file_size_format/file_size_format.js","webpack://pleroma_fe/./src/services/file_type/file_type.service.js","webpack://pleroma_fe/./src/services/locale/locale.service.js","webpack://pleroma_fe/./src/services/notification_utils/notification_utils.js","webpack://pleroma_fe/./src/services/notifications_fetcher/notifications_fetcher.service.js","webpack://pleroma_fe/./src/services/offset_finder/offset_finder.service.js","webpack://pleroma_fe/./src/services/promise_interval/promise_interval.js","webpack://pleroma_fe/./src/services/status_parser/status_parser.js","webpack://pleroma_fe/./src/services/status_poster/status_poster.service.js","webpack://pleroma_fe/./src/services/style_setter/style_setter.js","webpack://pleroma_fe/./src/services/theme_data/pleromafe.js","webpack://pleroma_fe/./src/services/theme_data/theme_data.service.js","webpack://pleroma_fe/./src/services/user_highlighter/user_highlighter.js","webpack://pleroma_fe/./src/services/user_profile_link_generator/user_profile_link_generator.js","webpack://pleroma_fe/./src/components/attachment/attachment.vue","webpack://pleroma_fe/./src/components/attachment/attachment.js","webpack://pleroma_fe/./src/components/attachment/attachment.vue?6808","webpack://pleroma_fe/./src/components/avatar_list/avatar_list.vue","webpack://pleroma_fe/./src/components/avatar_list/avatar_list.js","webpack://pleroma_fe/./src/components/avatar_list/avatar_list.vue?171c","webpack://pleroma_fe/./src/components/basic_user_card/basic_user_card.vue","webpack://pleroma_fe/./src/components/basic_user_card/basic_user_card.js","webpack://pleroma_fe/./src/components/basic_user_card/basic_user_card.vue?95ff","webpack://pleroma_fe/./src/components/checkbox/checkbox.vue","webpack://pleroma_fe/./src/components/checkbox/checkbox.vue?4d95","webpack://pleroma_fe/./src/components/confirm_modal/confirm_modal.js","webpack://pleroma_fe/./src/components/confirm_modal/confirm_modal.vue?dff7","webpack://pleroma_fe/./src/components/confirm_modal/confirm_modal.vue","webpack://pleroma_fe/./src/components/dialog_modal/dialog_modal.vue","webpack://pleroma_fe/./src/components/dialog_modal/dialog_modal.js","webpack://pleroma_fe/./src/components/dialog_modal/dialog_modal.vue?60df","webpack://pleroma_fe/./src/components/emoji_input/emoji_input.vue","webpack://pleroma_fe/./src/services/completion/completion.js","webpack://pleroma_fe/./src/components/emoji_picker/emoji_picker.vue","webpack://pleroma_fe/./src/components/emoji_picker/emoji_picker.js","webpack://pleroma_fe/./src/components/emoji_picker/emoji_picker.vue?6411","webpack://pleroma_fe/./src/components/screen_reader_notice/screen_reader_notice.js","webpack://pleroma_fe/./src/components/screen_reader_notice/screen_reader_notice.vue?a18c","webpack://pleroma_fe/./src/components/screen_reader_notice/screen_reader_notice.vue","webpack://pleroma_fe/./src/components/emoji_input/emoji_input.js","webpack://pleroma_fe/./src/components/emoji_input/emoji_input.vue?cc95","webpack://pleroma_fe/./src/services/ruffle_service/ruffle_service.js","webpack://pleroma_fe/./src/components/flash/flash.vue","webpack://pleroma_fe/./src/components/flash/flash.js","webpack://pleroma_fe/./src/components/flash/flash.vue?8f01","webpack://pleroma_fe/./src/services/follow_manipulate/follow_manipulate.js","webpack://pleroma_fe/./src/components/follow_button/follow_button.js","webpack://pleroma_fe/./src/components/follow_button/follow_button.vue?fbc0","webpack://pleroma_fe/./src/components/follow_button/follow_button.vue","webpack://pleroma_fe/./src/components/gallery/gallery.vue","webpack://pleroma_fe/./src/components/gallery/gallery.js","webpack://pleroma_fe/./src/components/gallery/gallery.vue?c41d","webpack://pleroma_fe/./src/components/interface_language_switcher/interface_language_switcher.vue","webpack://pleroma_fe/./src/components/interface_language_switcher/interface_language_switcher.vue?f2c7","webpack://pleroma_fe/./src/components/link-preview/link-preview.vue","webpack://pleroma_fe/./src/components/link-preview/link-preview.js","webpack://pleroma_fe/./src/components/link-preview/link-preview.vue?5c9b","webpack://pleroma_fe/./src/components/list/list.vue","webpack://pleroma_fe/./src/components/list/list.vue?b52f","webpack://pleroma_fe/./src/components/mention_link/mention_link.vue","webpack://pleroma_fe/./src/components/mention_link/mention_link.js","webpack://pleroma_fe/./src/components/mention_link/mention_link.vue?f0cb","webpack://pleroma_fe/./src/components/mentions_line/mentions_line.vue","webpack://pleroma_fe/./src/components/mentions_line/mentions_line.js","webpack://pleroma_fe/./src/components/mentions_line/mentions_line.vue?e8e7","webpack://pleroma_fe/./src/components/modal/modal.vue","webpack://pleroma_fe/./src/components/modal/modal.vue?8c58","webpack://pleroma_fe/./src/components/notifications/notifications.vue","webpack://pleroma_fe/./src/components/notification/notification.vue","webpack://pleroma_fe/./src/components/report/report.vue","webpack://pleroma_fe/./src/components/report/report.js","webpack://pleroma_fe/./src/components/report/report.vue?5c84","webpack://pleroma_fe/./src/components/notification/notification.js","webpack://pleroma_fe/./src/components/notification/notification.vue?17c8","webpack://pleroma_fe/./src/components/notifications/notification_filters.vue","webpack://pleroma_fe/./src/components/notifications/notification_filters.vue?4a98","webpack://pleroma_fe/./src/components/notifications/notifications.js","webpack://pleroma_fe/./src/components/notifications/notifications.vue?770b","webpack://pleroma_fe/./src/components/panel_loading/panel_loading.vue","webpack://pleroma_fe/./src/components/panel_loading/panel_loading.vue?50c2","webpack://pleroma_fe/./src/components/popover/popover.js","webpack://pleroma_fe/./src/components/popover/popover.vue?237b","webpack://pleroma_fe/./src/components/popover/popover.vue","webpack://pleroma_fe/./src/components/post_status_form/post_status_form.vue","webpack://pleroma_fe/./src/components/media_upload/media_upload.js","webpack://pleroma_fe/./src/components/media_upload/media_upload.vue?73d1","webpack://pleroma_fe/./src/components/media_upload/media_upload.vue","webpack://pleroma_fe/./src/components/poll/poll_form.vue","webpack://pleroma_fe/./src/components/poll/poll_form.js","webpack://pleroma_fe/./src/components/poll/poll_form.vue?5434","webpack://pleroma_fe/./src/components/post_status_form/post_status_form.js","webpack://pleroma_fe/./src/components/post_status_form/post_status_form.vue?b98e","webpack://pleroma_fe/./src/components/progress_button/progress_button.vue","webpack://pleroma_fe/./src/components/progress_button/progress_button.vue?2d10","webpack://pleroma_fe/./src/components/remote_follow/remote_follow.vue","webpack://pleroma_fe/./src/components/remote_follow/remote_follow.js","webpack://pleroma_fe/./src/components/remote_follow/remote_follow.vue?188a","webpack://pleroma_fe/./src/components/scope_selector/scope_selector.vue","webpack://pleroma_fe/./src/components/scope_selector/scope_selector.js","webpack://pleroma_fe/./src/components/scope_selector/scope_selector.vue?cbff","webpack://pleroma_fe/./src/components/select/select.js","webpack://pleroma_fe/./src/components/select/select.vue?fa00","webpack://pleroma_fe/./src/components/select/select.vue","webpack://pleroma_fe/./src/components/status/status.vue","webpack://pleroma_fe/./src/components/reply_button/reply_button.vue","webpack://pleroma_fe/./src/components/reply_button/reply_button.js","webpack://pleroma_fe/./src/components/reply_button/reply_button.vue?f8cc","webpack://pleroma_fe/./src/components/favorite_button/favorite_button.vue","webpack://pleroma_fe/./src/components/favorite_button/favorite_button.js","webpack://pleroma_fe/./src/components/favorite_button/favorite_button.vue?4c13","webpack://pleroma_fe/./src/components/react_button/react_button.vue","webpack://pleroma_fe/./src/components/react_button/react_button.js","webpack://pleroma_fe/./src/components/react_button/react_button.vue?64d4","webpack://pleroma_fe/./src/components/retweet_button/retweet_button.vue","webpack://pleroma_fe/./src/components/retweet_button/retweet_button.js","webpack://pleroma_fe/./src/components/retweet_button/retweet_button.vue?774a","webpack://pleroma_fe/./src/components/extra_buttons/extra_buttons.vue","webpack://pleroma_fe/./src/components/extra_buttons/extra_buttons.js","webpack://pleroma_fe/./src/components/extra_buttons/extra_buttons.vue?2a14","webpack://pleroma_fe/./src/components/status_popover/status_popover.vue","webpack://pleroma_fe/./src/components/status_popover/status_popover.js","webpack://pleroma_fe/./src/components/status_popover/status_popover.vue?2f31","webpack://pleroma_fe/./src/components/user_list_popover/user_list_popover.vue","webpack://pleroma_fe/./src/components/user_list_popover/user_list_popover.js","webpack://pleroma_fe/./src/components/user_list_popover/user_list_popover.vue?32eb","webpack://pleroma_fe/./src/components/emoji_reactions/emoji_reactions.vue","webpack://pleroma_fe/./src/components/emoji_reactions/emoji_reactions.js","webpack://pleroma_fe/./src/components/emoji_reactions/emoji_reactions.vue?be26","webpack://pleroma_fe/./src/components/status/status.js","webpack://pleroma_fe/./src/components/status/status.vue?f274","webpack://pleroma_fe/./src/components/status_content/status_content.vue","webpack://pleroma_fe/./src/components/poll/poll.vue","webpack://pleroma_fe/./src/components/poll/poll.js","webpack://pleroma_fe/./src/components/poll/poll.vue?09ad","webpack://pleroma_fe/./src/components/status_body/status_body.vue","webpack://pleroma_fe/./src/components/status_body/status_body.js","webpack://pleroma_fe/./src/components/status_body/status_body.vue?a029","webpack://pleroma_fe/./src/components/status_content/status_content.js","webpack://pleroma_fe/./src/components/status_content/status_content.vue?5b7b","webpack://pleroma_fe/./src/components/still-image/still-image.vue","webpack://pleroma_fe/./src/components/still-image/still-image.js","webpack://pleroma_fe/./src/components/still-image/still-image.vue?7a8d","webpack://pleroma_fe/./src/components/timeago/timeago.vue","webpack://pleroma_fe/./src/components/timeago/timeago.vue?3167","webpack://pleroma_fe/./src/components/unicode_domain_indicator/unicode_domain_indicator.vue","webpack://pleroma_fe/./src/components/unicode_domain_indicator/unicode_domain_indicator.vue?760a","webpack://pleroma_fe/./src/components/user_avatar/user_avatar.js","webpack://pleroma_fe/./src/components/user_avatar/user_avatar.vue?84fc","webpack://pleroma_fe/./src/components/user_avatar/user_avatar.vue","webpack://pleroma_fe/./src/components/user_card/user_card.vue","webpack://pleroma_fe/./src/components/moderation_tools/moderation_tools.vue","webpack://pleroma_fe/./src/components/moderation_tools/moderation_tools.js","webpack://pleroma_fe/./src/components/moderation_tools/moderation_tools.vue?98d7","webpack://pleroma_fe/./src/components/account_actions/account_actions.vue","webpack://pleroma_fe/./src/components/user_list_menu/user_list_menu.vue","webpack://pleroma_fe/./src/components/user_list_menu/user_list_menu.js","webpack://pleroma_fe/./src/components/user_list_menu/user_list_menu.vue?e3cb","webpack://pleroma_fe/./src/components/account_actions/account_actions.js","webpack://pleroma_fe/./src/components/account_actions/account_actions.vue?26a0","webpack://pleroma_fe/./src/components/user_note/user_note.vue","webpack://pleroma_fe/./src/components/user_note/user_note.js","webpack://pleroma_fe/./src/components/user_note/user_note.vue?302a","webpack://pleroma_fe/./src/components/user_card/user_card.js","webpack://pleroma_fe/./src/components/user_card/user_card.vue?bb36","webpack://pleroma_fe/./src/components/user_link/user_link.vue","webpack://pleroma_fe/./src/components/user_link/user_link.vue?e5f2","webpack://pleroma_fe/./src/components/user_popover/user_popover.js","webpack://pleroma_fe/./src/components/user_popover/user_popover.vue?dfdb","webpack://pleroma_fe/./src/components/user_popover/user_popover.vue","webpack://pleroma_fe/./src/components/video_attachment/video_attachment.js","webpack://pleroma_fe/./src/components/video_attachment/video_attachment.vue?da03","webpack://pleroma_fe/./src/components/video_attachment/video_attachment.vue","webpack://pleroma_fe/./src/i18n/ lazy ^\\.\\/.*\\.json$ include: \\.json$ chunkName: i18n/[request] namespace object","webpack://pleroma_fe/webpack/bootstrap","webpack://pleroma_fe/webpack/runtime/compat get default export","webpack://pleroma_fe/webpack/runtime/define property getters","webpack://pleroma_fe/webpack/runtime/ensure chunk","webpack://pleroma_fe/webpack/runtime/get javascript chunk filename","webpack://pleroma_fe/webpack/runtime/get mini-css chunk filename","webpack://pleroma_fe/webpack/runtime/global","webpack://pleroma_fe/webpack/runtime/hasOwnProperty shorthand","webpack://pleroma_fe/webpack/runtime/make namespace object","webpack://pleroma_fe/webpack/runtime/node module decorator","webpack://pleroma_fe/webpack/runtime/publicPath","webpack://pleroma_fe/webpack/runtime/css loading","webpack://pleroma_fe/webpack/runtime/jsonp chunk loading","webpack://pleroma_fe/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"pleroma_fe:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t};\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","export default {\n \"about\": {\n \"mrf\": {\n \"federation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Federation\"])},\n \"keyword\": {\n \"keyword_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keyword policies\"])},\n \"ftl_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Removal from \\\"The Whole Known Network\\\" Timeline\"])},\n \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reject\"])},\n \"replace\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Replace\"])},\n \"is_replaced_by\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"→\"])}\n },\n \"mrf_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enabled MRF policies\"])},\n \"mrf_policies_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"MRF policies manipulate the federation behaviour of the instance. The following policies are enabled:\"])},\n \"simple\": {\n \"simple_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instance-specific policies\"])},\n \"instance\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instance\"])},\n \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reason\"])},\n \"not_applicable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N/A\"])},\n \"accept\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Accept\"])},\n \"accept_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance only accepts messages from the following instances:\"])},\n \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reject\"])},\n \"reject_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance will not accept messages from the following instances:\"])},\n \"quarantine\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Quarantine\"])},\n \"quarantine_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance will send only public posts to the following instances:\"])},\n \"ftl_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Removal from \\\"Known Network\\\" Timeline\"])},\n \"ftl_removal_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance removes these instances from \\\"Known Network\\\" timeline:\"])},\n \"media_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media Removal\"])},\n \"media_removal_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance removes media from posts on the following instances:\"])},\n \"media_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media force-set as sensitive\"])},\n \"media_nsfw_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance forces media to be set sensitive in posts on the following instances:\"])}\n }\n },\n \"staff\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Staff\"])}\n },\n \"announcements\": {\n \"page_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Announcements\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Announcement\"])},\n \"mark_as_read_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mark as read\"])},\n \"post_form_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post announcement\"])},\n \"post_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Type your announcement content here...\"])},\n \"post_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post\"])},\n \"post_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Error: \", _interpolate(_named(\"error\"))])},\n \"close_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close\"])},\n \"delete_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete\"])},\n \"start_time_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Start time: \"])},\n \"end_time_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"End time: \"])},\n \"all_day_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This is an all-day event\"])},\n \"published_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Published at \", _interpolate(_named(\"time\"))])},\n \"start_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Starts at \", _interpolate(_named(\"time\"))])},\n \"end_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Ends at \", _interpolate(_named(\"time\"))])},\n \"edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit\"])},\n \"submit_edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Submit\"])},\n \"cancel_edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel\"])},\n \"inactive_message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This announcement is inactive\"])}\n },\n \"shoutbox\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shoutbox\"])}\n },\n \"domain_mute_card\": {\n \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute\"])},\n \"mute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Muting…\"])},\n \"unmute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unmute\"])},\n \"unmute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unmuting…\"])}\n },\n \"exporter\": {\n \"export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Export\"])},\n \"processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Processing, you'll soon be asked to download your file\"])}\n },\n \"features_panel\": {\n \"shout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shoutbox\"])},\n \"pleroma_chat_messages\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma Chat\"])},\n \"gopher\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gopher\"])},\n \"media_proxy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media proxy\"])},\n \"scope_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Scope options\"])},\n \"text_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Text limit\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Features\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Who to follow\"])},\n \"upload_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload limit\"])}\n },\n \"finder\": {\n \"error_fetching_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error fetching user\"])},\n \"find_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Find user\"])}\n },\n \"general\": {\n \"apply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Apply\"])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Submit\"])},\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"More\"])},\n \"loading\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Loading…\"])},\n \"generic_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"An error occured\"])},\n \"generic_error_message\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"An error occured: \", _interpolate(_list(0))])},\n \"error_retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Please try again\"])},\n \"retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Try again\"])},\n \"optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"optional\"])},\n \"show_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show more\"])},\n \"show_less\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show less\"])},\n \"never_show_again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Never show again\"])},\n \"dismiss\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dismiss\"])},\n \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel\"])},\n \"disable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disable\"])},\n \"enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enable\"])},\n \"confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirm\"])},\n \"verify\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verify\"])},\n \"close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close\"])},\n \"undo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Undo\"])},\n \"yes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Yes\"])},\n \"no\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No\"])},\n \"peek\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Peek\"])},\n \"scroll_to_top\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Scroll to top\"])},\n \"role\": {\n \"admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Moderator\"])}\n },\n \"unpin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unpin item\"])},\n \"pin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pin item\"])},\n \"flash_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Click to show Flash content using Ruffle (Experimental, may not work).\"])},\n \"flash_security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Note that this can be potentially dangerous since Flash content is still arbitrary code.\"])},\n \"flash_fail\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Failed to load flash content, see console for details.\"])},\n \"scope_in_timeline\": {\n \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Direct\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Followers-only\"])},\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Public\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unlisted\"])}\n }\n },\n \"image_cropper\": {\n \"crop_picture\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Crop picture\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save\"])},\n \"save_without_cropping\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save without cropping\"])},\n \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel\"])}\n },\n \"importer\": {\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Submit\"])},\n \"success\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Imported successfully.\"])},\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"An error occured while importing this file.\"])}\n },\n \"login\": {\n \"login\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log in\"])},\n \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log in with OAuth\"])},\n \"logout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log out\"])},\n \"logout_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Logout confirmation\"])},\n \"logout_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to logout?\"])},\n \"logout_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Logout\"])},\n \"logout_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not logout\"])},\n \"password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password\"])},\n \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"e.g. lain\"])},\n \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Register\"])},\n \"username\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Username\"])},\n \"hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log in to join the discussion\"])},\n \"authentication_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Authentication code\"])},\n \"enter_recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter a recovery code\"])},\n \"enter_two_factor_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter a two-factor code\"])},\n \"recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Recovery code\"])},\n \"heading\": {\n \"totp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Two-factor authentication\"])},\n \"recovery\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Two-factor recovery\"])}\n }\n },\n \"media_modal\": {\n \"previous\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Previous\"])},\n \"next\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Next\"])},\n \"counter\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"current\")), \" / \", _interpolate(_named(\"total\"))])},\n \"hide\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close media viewer\"])}\n },\n \"nav\": {\n \"about\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"About\"])},\n \"administration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n \"back\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Back\"])},\n \"friend_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follow requests\"])},\n \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mentions\"])},\n \"interactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interactions\"])},\n \"dms\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Direct messages\"])},\n \"public_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Public timeline\"])},\n \"timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Timeline\"])},\n \"home_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Home timeline\"])},\n \"twkn\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Known Network\"])},\n \"bookmarks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bookmarks\"])},\n \"user_search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Search\"])},\n \"search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search\"])},\n \"search_close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close search bar\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Who to follow\"])},\n \"preferences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preferences\"])},\n \"timelines\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Timelines\"])},\n \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Chats\"])},\n \"lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lists\"])},\n \"edit_nav_mobile\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Customize navigation bar\"])},\n \"edit_pinned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit pinned items\"])},\n \"edit_finish\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Done editing\"])},\n \"mobile_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Toggle mobile sidebar\"])},\n \"mobile_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Open notifications\"])},\n \"mobile_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Open notifications (there are unread ones)\"])},\n \"mobile_notifications_close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close notifications\"])},\n \"announcements\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Announcements\"])}\n },\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unknown status, searching for it…\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Error fetching notifications: \", _interpolate(_list(0))])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"favorited your status\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"followed you\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wants to follow you\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load older notifications\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifications\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Read!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"repeated your status\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No more notifications\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"migrated to\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"reacted with \", _interpolate(_list(0))])},\n \"submitted_report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"submitted a report\"])},\n \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"poll has ended\"])}\n },\n \"polls\": {\n \"add_poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add poll\"])},\n \"add_option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add option\"])},\n \"option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Option\"])},\n \"votes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"votes\"])},\n \"people_voted_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" person voted\"]), _normalize([_interpolate(_named(\"count\")), \" people voted\"])])},\n \"votes_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" vote\"]), _normalize([_interpolate(_named(\"count\")), \" votes\"])])},\n \"vote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vote\"])},\n \"type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Poll type\"])},\n \"single_choice\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Single choice\"])},\n \"multiple_choices\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Multiple choices\"])},\n \"expiry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Poll age\"])},\n \"expires_in\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Poll ends in \", _interpolate(_list(0))])},\n \"expired\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Poll ended \", _interpolate(_list(0)), \" ago\"])},\n \"not_enough_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Too few unique options in poll\"])}\n },\n \"emoji\": {\n \"stickers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Stickers\"])},\n \"emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Emoji\"])},\n \"keep_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep picker open\"])},\n \"search_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search for an emoji\"])},\n \"add_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Insert emoji\"])},\n \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Custom emoji\"])},\n \"unpacked\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unpacked emoji\"])},\n \"unicode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unicode emoji\"])},\n \"unicode_groups\": {\n \"activities\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activities\"])},\n \"animals-and-nature\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Animals & Nature\"])},\n \"flags\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Flags\"])},\n \"food-and-drink\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Food & Drink\"])},\n \"objects\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Objects\"])},\n \"people-and-body\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"People & Body\"])},\n \"smileys-and-emotion\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Smileys & Emotion\"])},\n \"symbols\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Symbols\"])},\n \"travel-and-places\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Travel & Places\"])}\n },\n \"load_all_hint\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Loaded first \", _interpolate(_named(\"saneAmount\")), \" emoji, loading all emoji may cause performance issues.\"])},\n \"load_all\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Loading all \", _interpolate(_named(\"emojiAmount\")), \" emoji\"])},\n \"regional_indicator\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Regional indicator \", _interpolate(_named(\"letter\"))])}\n },\n \"errors\": {\n \"storage_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma could not access browser storage. Your login or your local settings won't be saved and you might encounter unexpected issues. Try enabling cookies.\"])}\n },\n \"interactions\": {\n \"favs_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeats and favorites\"])},\n \"follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New follows\"])},\n \"emoji_reactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Emoji Reactions\"])},\n \"reports\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reports\"])},\n \"moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User migrates\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load older interactions\"])}\n },\n \"post_status\": {\n \"edit_status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit status\"])},\n \"new_status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post new status\"])},\n \"account_not_locked_warning\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Your account is not \", _interpolate(_list(0)), \". Anyone can follow you to view your follower-only posts.\"])},\n \"account_not_locked_warning_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"locked\"])},\n \"attachments_sensitive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mark attachments as sensitive\"])},\n \"media_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media description\"])},\n \"content_type\": {\n \"text/plain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Plain text\"])},\n \"text/html\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"HTML\"])},\n \"text/markdown\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Markdown\"])},\n \"text/bbcode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"BBCode\"])}\n },\n \"content_type_selection\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post format\"])},\n \"content_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Subject (optional)\"])},\n \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Just landed in L.A.\"])},\n \"direct_warning_to_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will be visible to all the mentioned users.\"])},\n \"direct_warning_to_first_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will only be visible to the mentioned users at the beginning of the message.\"])},\n \"edit_remote_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Other remote instances may not support editing and unable to receive the latest version of your post.\"])},\n \"edit_unsupported_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma does not support editing mentions or polls.\"])},\n \"posting\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posting\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post\"])},\n \"preview\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preview\"])},\n \"preview_empty\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Empty\"])},\n \"empty_status_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Can't post an empty status with no files\"])},\n \"media_description_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Failed to update media, try again\"])},\n \"scope_notice\": {\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will be visible to everyone\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will be visible to your followers only\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will not be visible in Public Timeline and The Whole Known Network\"])}\n },\n \"scope_notice_dismiss\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close this notice\"])},\n \"scope\": {\n \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Direct - post to mentioned users only\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Followers-only - post to followers only\"])},\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Public - post to public timelines\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unlisted - do not post to public timelines\"])}\n }\n },\n \"registration\": {\n \"bio_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio (optional)\"])},\n \"email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email\"])},\n \"email_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email (optional)\"])},\n \"fullname\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Display name\"])},\n \"password_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password confirmation\"])},\n \"registration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registration\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invite token\"])},\n \"captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"CAPTCHA\"])},\n \"new_captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Click the image to get a new captcha\"])},\n \"username_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"e.g. lain\"])},\n \"fullname_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"e.g. Lain Iwakura\"])},\n \"bio_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"e.g.\\nHi, I'm Lain.\\nI’m an anime girl living in suburban Japan. You may know me from the Wired.\"])},\n \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reason to register\"])},\n \"reason_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance approves registrations manually.\\nLet the administration know why you want to register.\"])},\n \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Register\"])},\n \"validations\": {\n \"username_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n \"fullname_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n \"email_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n \"password_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n \"password_confirmation_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n \"password_confirmation_match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"should be the same as password\"])},\n \"birthday_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n \"birthday_min_age\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"must be on or before \", _interpolate(_named(\"date\"))])}\n },\n \"email_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"In which language do you want to receive emails from the server?\"])},\n \"birthday\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Birthday:\"])},\n \"birthday_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Birthday (optional):\"])}\n },\n \"remote_user_resolver\": {\n \"remote_user_resolver\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remote user resolver\"])},\n \"searching_for\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Searching for\"])},\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Not found.\"])}\n },\n \"report\": {\n \"reporter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reporter:\"])},\n \"reported_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reported user:\"])},\n \"reported_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reported statuses:\"])},\n \"notes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notes:\"])},\n \"state\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"State:\"])},\n \"state_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Open\"])},\n \"state_closed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Closed\"])},\n \"state_resolved\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Resolved\"])}\n },\n \"selectable_list\": {\n \"select_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Select all\"])}\n },\n \"settings\": {\n \"add_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add fallback language\"])},\n \"remove_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove\"])},\n \"primary_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Primary language:\"])},\n \"fallback_language\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Fallback language \", _interpolate(_named(\"index\")), \":\"])},\n \"app_name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"App name\"])},\n \"expert_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show advanced\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save changes\"])},\n \"security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Security\"])},\n \"setting_changed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Setting is different from default\"])},\n \"setting_server_side\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This setting is tied to your profile and affects all sessions and clients\"])},\n \"enter_current_password_to_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter your current password to confirm your identity\"])},\n \"post_look_feel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posts Look & Feel\"])},\n \"mention_links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mention links\"])},\n \"mfa\": {\n \"otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OTP\"])},\n \"setup_otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Setup OTP\"])},\n \"wait_pre_setup_otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"presetting OTP\"])},\n \"confirm_and_enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirm & enable OTP\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Two-factor Authentication\"])},\n \"generate_new_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Generate new recovery codes\"])},\n \"warning_of_generate_new_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"When you generate new recovery codes, your old codes won’t work anymore.\"])},\n \"recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Recovery codes.\"])},\n \"waiting_a_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Receiving backup codes…\"])},\n \"recovery_codes_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Write the codes down or save them somewhere secure - otherwise you won't see them again. If you lose access to your 2FA app and recovery codes you'll be locked out of your account.\"])},\n \"authentication_methods\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Authentication methods\"])},\n \"scan\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Scan\"])},\n \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Using your two-factor app, scan this QR code or enter text key:\"])},\n \"secret_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Key\"])}\n },\n \"verify\": {\n \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"To enable two-factor authentication, enter the code from your two-factor app:\"])}\n }\n },\n \"lists_navigation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show lists in navigation\"])},\n \"allow_following_move\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Allow auto-follow when following account moves\"])},\n \"attachmentRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Attachments\"])},\n \"attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Attachments\"])},\n \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avatar\"])},\n \"avatarAltRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avatars (notifications)\"])},\n \"avatarRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avatars\"])},\n \"background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Background\"])},\n \"bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n \"email_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Language for receiving emails from the server\"])},\n \"block_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block export\"])},\n \"block_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Export your blocks to a csv file\"])},\n \"block_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block import\"])},\n \"block_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error importing blocks\"])},\n \"blocks_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocks imported! Processing them will take a while.\"])},\n \"mute_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute export\"])},\n \"mute_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Export your mutes to a csv file\"])},\n \"mute_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute import\"])},\n \"mute_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error importing mutes\"])},\n \"mutes_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mutes imported! Processing them will take a while.\"])},\n \"import_mutes_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Import mutes from a csv file\"])},\n \"account_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account backup\"])},\n \"account_backup_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This allows you to download an archive of your account information and your posts, but they cannot yet be imported into a Pleroma account.\"])},\n \"account_backup_table_head\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Backup\"])},\n \"download_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Download\"])},\n \"backup_not_ready\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This backup is not ready yet.\"])},\n \"backup_running\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"This backup is in progress, processed \", _interpolate(_named(\"number\")), \" record.\"]), _normalize([\"This backup is in progress, processed \", _interpolate(_named(\"number\")), \" records.\"])])},\n \"backup_failed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This backup has failed.\"])},\n \"remove_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove\"])},\n \"list_backups_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Error fetching backup list: \", _interpolate(_named(\"error\"))])},\n \"add_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Create a new backup\"])},\n \"added_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Added a new backup.\"])},\n \"add_backup_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Error adding a new backup: \", _interpolate(_named(\"error\"))])},\n \"blocks_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocks\"])},\n \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This is a bot account\"])},\n \"btnRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Buttons\"])},\n \"cBlue\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blue (Reply, follow)\"])},\n \"cGreen\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Green (Retweet)\"])},\n \"cOrange\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Orange (Favorite)\"])},\n \"cRed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Red (Cancel)\"])},\n \"change_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Change email\"])},\n \"change_email_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"There was an issue changing your email.\"])},\n \"changed_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email changed successfully!\"])},\n \"change_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Change password\"])},\n \"change_password_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"There was an issue changing your password.\"])},\n \"changed_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password changed successfully!\"])},\n \"chatMessageRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Chat message\"])},\n \"collapse_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Collapse posts with subjects\"])},\n \"composing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Composing\"])},\n \"confirm_new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirm new password\"])},\n \"current_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Current password\"])},\n \"confirm_dialogs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ask for confirmation when\"])},\n \"confirm_dialogs_repeat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"repeating a status\"])},\n \"confirm_dialogs_unfollow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"unfollowing a user\"])},\n \"confirm_dialogs_block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"blocking a user\"])},\n \"confirm_dialogs_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"muting a user\"])},\n \"confirm_dialogs_delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"deleting a status\"])},\n \"confirm_dialogs_logout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"logging out\"])},\n \"confirm_dialogs_approve_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"approving a follower\"])},\n \"confirm_dialogs_deny_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"denying a follower\"])},\n \"confirm_dialogs_remove_follower\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"removing a follower\"])},\n \"mutes_and_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mutes and Blocks\"])},\n \"data_import_export_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Data import / export\"])},\n \"default_vis\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Default visibility scope\"])},\n \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete account\"])},\n \"delete_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Permanently delete your data and deactivate your account.\"])},\n \"delete_account_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"There was an issue deleting your account. If this persists please contact your instance administrator.\"])},\n \"delete_account_instructions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Type your password in the input below to confirm account deletion.\"])},\n \"account_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account aliases\"])},\n \"account_alias_table_head\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alias\"])},\n \"list_aliases_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Error fetching aliases: \", _interpolate(_named(\"error\"))])},\n \"hide_list_aliases_error_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close\"])},\n \"remove_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove this alias\"])},\n \"new_alias_target\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Add a new alias (e.g. \", _interpolate(_named(\"example\")), \")\"])},\n \"added_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alias is added.\"])},\n \"add_alias_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Error adding alias: \", _interpolate(_named(\"error\"))])},\n \"move_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Move account\"])},\n \"move_account_notes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"If you want to move the account somewhere else, you must go to your target account and add an alias pointing here.\"])},\n \"move_account_target\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Target account (e.g. \", _interpolate(_named(\"example\")), \")\"])},\n \"moved_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account is moved.\"])},\n \"move_account_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Error moving account: \", _interpolate(_named(\"error\"))])},\n \"discoverable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Allow discovery of this account in search results and other services\"])},\n \"domain_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Domains\"])},\n \"avatar_size_instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The recommended minimum size for avatar images is 150x150 pixels.\"])},\n \"pad_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pad emoji with spaces when adding from picker\"])},\n \"emoji_reactions_on_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show emoji reactions on timeline\"])},\n \"export_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save preset\"])},\n \"filtering\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filtering\"])},\n \"wordfilter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wordfilter\"])},\n \"filtering_explanation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"All statuses containing these words will be muted, one per line\"])},\n \"word_filter_and_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Word filter and more...\"])},\n \"follow_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follow export\"])},\n \"follow_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Export your follows to a csv file\"])},\n \"follow_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follow import\"])},\n \"follow_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error importing followers\"])},\n \"follows_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follows imported! Processing them will take a while.\"])},\n \"accent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Accent\"])},\n \"foreground\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Foreground\"])},\n \"general\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"General\"])},\n \"hide_attachments_in_convo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide attachments in conversations\"])},\n \"hide_attachments_in_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide attachments in timeline\"])},\n \"hide_media_previews\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide media previews\"])},\n \"hide_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide posts of muted users\"])},\n \"mute_bot_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute bot posts\"])},\n \"hide_bot_indication\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide bot indication in posts\"])},\n \"hide_all_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide muted posts\"])},\n \"max_thumbnails\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maximum amount of thumbnails per post (empty = no limit)\"])},\n \"hide_isp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide instance-specific panel\"])},\n \"hide_shoutbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide instance shoutbox\"])},\n \"right_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reverse order of columns\"])},\n \"navbar_column_stretch\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Stretch navbar to columns width\"])},\n \"always_show_post_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Always show floating New Post button\"])},\n \"hide_wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide instance wallpaper\"])},\n \"preload_images\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preload images\"])},\n \"use_one_click_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Open NSFW attachments with just one click\"])},\n \"hide_post_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide post statistics (e.g. the number of favorites)\"])},\n \"hide_user_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide user statistics (e.g. the number of followers)\"])},\n \"hide_filtered_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide all filtered posts\"])},\n \"hide_wordfiltered_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide word-filtered statuses\"])},\n \"hide_muted_threads\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide muted threads\"])},\n \"import_blocks_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Import blocks from a csv file\"])},\n \"import_followers_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Import follows from a csv file\"])},\n \"import_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load preset\"])},\n \"inputRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Input fields\"])},\n \"checkboxRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Checkboxes\"])},\n \"instance_default\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"(default: \", _interpolate(_named(\"value\")), \")\"])},\n \"instance_default_simple\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(default)\"])},\n \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interface\"])},\n \"interfaceLanguage\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interface language\"])},\n \"invalid_theme_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The selected file is not a supported Pleroma theme. No changes to your theme were made.\"])},\n \"limited_availability\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unavailable in your browser\"])},\n \"links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Links\"])},\n \"lock_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Restrict your account to approved followers only\"])},\n \"loop_video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Loop videos\"])},\n \"loop_video_silent_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Loop only videos without sound (i.e. Mastodon's \\\"gifs\\\")\"])},\n \"mutes_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mutes\"])},\n \"play_videos_in_modal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Play videos in a popup frame\"])},\n \"file_export_import\": {\n \"backup_restore\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Settings backup\"])},\n \"backup_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Backup settings to file\"])},\n \"backup_settings_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Backup settings and theme to file\"])},\n \"restore_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Restore settings from file\"])},\n \"errors\": {\n \"invalid_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The selected file is not a supported Pleroma settings backup. No changes were made.\"])},\n \"file_too_new\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Incompatile major version: \", _interpolate(_named(\"fileMajor\")), \", this PleromaFE (settings ver \", _interpolate(_named(\"feMajor\")), \") is too old to handle it\"])},\n \"file_too_old\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Incompatile major version: \", _interpolate(_named(\"fileMajor\")), \", file version is too old and not supported (min. set. ver. \", _interpolate(_named(\"feMajor\")), \")\"])},\n \"file_slightly_new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File minor version is different, some settings might not load\"])}\n }\n },\n \"profile_fields\": {\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile metadata\"])},\n \"add_field\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add field\"])},\n \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Label\"])},\n \"value\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Content\"])}\n },\n \"birthday\": {\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Birthday\"])},\n \"show_birthday\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show my birthday\"])}\n },\n \"account_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Privacy\"])},\n \"use_contain_fit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't crop the attachment in thumbnails\"])},\n \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Name\"])},\n \"name_bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Name & bio\"])},\n \"new_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New email\"])},\n \"new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New password\"])},\n \"posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posts\"])},\n \"user_profiles\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Profiles\"])},\n \"notification_visibility\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Types of notifications to show\"])},\n \"notification_visibility_follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follows\"])},\n \"notification_visibility_likes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorites\"])},\n \"notification_visibility_mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mentions\"])},\n \"notification_visibility_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeats\"])},\n \"notification_visibility_moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Migrates\"])},\n \"notification_visibility_emoji_reactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reactions\"])},\n \"notification_visibility_polls\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ends of polls you voted in\"])},\n \"no_rich_text_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Strip rich text formatting from all posts\"])},\n \"no_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No blocks\"])},\n \"no_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No mutes\"])},\n \"hide_favorites_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show list of my favorites (people still get notified)\"])},\n \"hide_follows_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show who I'm following\"])},\n \"hide_followers_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show who's following me\"])},\n \"hide_follows_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show follow count\"])},\n \"hide_followers_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show follower count\"])},\n \"show_admin_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show \\\"Admin\\\" badge in my profile\"])},\n \"show_moderator_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show \\\"Moderator\\\" badge in my profile\"])},\n \"nsfw_clickthrough\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide sensitive/NSFW media\"])},\n \"oauth_tokens\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth tokens\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Token\"])},\n \"refresh_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Refresh token\"])},\n \"valid_until\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Valid until\"])},\n \"revoke_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revoke\"])},\n \"panelRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Panels\"])},\n \"pause_on_unfocused\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pause when tab is not focused\"])},\n \"presets\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Presets\"])},\n \"profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile background\"])},\n \"profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile banner\"])},\n \"profile_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile\"])},\n \"radii_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set up interface edge rounding (in pixels)\"])},\n \"replies_in_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Replies in timeline\"])},\n \"reply_visibility_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show all replies\"])},\n \"reply_visibility_following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Only show replies directed at me or users I'm following\"])},\n \"reply_visibility_self\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Only show replies directed at me\"])},\n \"reply_visibility_following_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show replies to my follows\"])},\n \"reply_visibility_self_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show replies to self only\"])},\n \"autohide_floating_post_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Automatically hide New Post button (mobile)\"])},\n \"saving_err\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error saving settings\"])},\n \"saving_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Settings saved\"])},\n \"search_user_to_block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search whom you want to block\"])},\n \"search_user_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search whom you want to mute\"])},\n \"security_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Security\"])},\n \"scope_copy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Copy scope when replying (DMs are always copied)\"])},\n \"minimal_scopes_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Minimize post scope selection options\"])},\n \"set_new_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set new avatar\"])},\n \"set_new_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set new profile background\"])},\n \"set_new_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set new profile banner\"])},\n \"reset_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset avatar\"])},\n \"reset_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset profile background\"])},\n \"reset_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset profile banner\"])},\n \"reset_avatar_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to reset the avatar?\"])},\n \"reset_banner_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to reset the banner?\"])},\n \"reset_background_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to reset the background?\"])},\n \"settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Settings\"])},\n \"subject_input_always_show\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Always show subject field\"])},\n \"subject_line_behavior\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Copy subject when replying\"])},\n \"subject_line_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Like email: \\\"re: subject\\\"\"])},\n \"subject_line_mastodon\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Like mastodon: copy as is\"])},\n \"subject_line_noop\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not copy\"])},\n \"conversation_display\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Conversation display style\"])},\n \"conversation_display_tree\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tree-style\"])},\n \"conversation_display_tree_quick\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tree view\"])},\n \"disable_sticky_headers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't stick column headers to top of the screen\"])},\n \"show_scrollbars\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show side column's scrollbars\"])},\n \"third_column_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"When there's enough space, show third column containing\"])},\n \"third_column_mode_none\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show third column at all\"])},\n \"third_column_mode_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifications column\"])},\n \"third_column_mode_postform\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Main post form and navigation\"])},\n \"columns\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Columns\"])},\n \"column_sizes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Column sizes\"])},\n \"column_sizes_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sidebar\"])},\n \"column_sizes_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Content\"])},\n \"column_sizes_notifs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifications\"])},\n \"tree_advanced\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Allow more flexible navigation in tree view\"])},\n \"tree_fade_ancestors\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Display ancestors of the current status in faint text\"])},\n \"conversation_display_linear\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Linear-style\"])},\n \"conversation_display_linear_quick\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Linear view\"])},\n \"conversation_other_replies_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show the \\\"other replies\\\" button\"])},\n \"conversation_other_replies_button_below\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Below statuses\"])},\n \"conversation_other_replies_button_inside\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inside statuses\"])},\n \"max_depth_in_thread\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maximum number of levels in thread to display by default\"])},\n \"post_status_content_type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post status content type\"])},\n \"sensitive_by_default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mark posts as sensitive by default\"])},\n \"stop_gifs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pause animated images until you hover on them\"])},\n \"streaming\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Automatically show new posts when scrolled to the top\"])},\n \"auto_update\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show new posts automatically\"])},\n \"user_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Users\"])},\n \"useStreamingApi\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Receive posts and notifications real-time\"])},\n \"use_websockets\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Use websockets (Realtime updates)\"])},\n \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Text\"])},\n \"theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Theme\"])},\n \"theme_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Use hex color codes (#rrggbb) to customize your color theme.\"])},\n \"theme_help_v2_1\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You can also override certain component's colors and opacity by toggling the checkbox, use \\\"Clear all\\\" button to clear all overrides.\"])},\n \"theme_help_v2_2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Icons underneath some entries are background/text contrast indicators, hover over for detailed info. Please keep in mind that when using transparency contrast indicators show the worst possible case.\"])},\n \"tooltipRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tooltips/alerts\"])},\n \"type_domains_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search domains to mute\"])},\n \"upload_a_photo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload a photo\"])},\n \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Settings\"])},\n \"values\": {\n \"false\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"no\"])},\n \"true\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"yes\"])}\n },\n \"virtual_scrolling\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Optimize timeline rendering\"])},\n \"use_at_icon\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Display \", \"@\", \" symbol as an icon instead of text\"])},\n \"mention_link_display\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Display mention links\"])},\n \"mention_link_display_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"always as short names (e.g. \", \"@\", \"foo)\"])},\n \"mention_link_display_full_for_remote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"as full names only for remote users (e.g. \", \"@\", \"foo\", \"@\", \"example.org)\"])},\n \"mention_link_display_full\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"always as full names (e.g. \", \"@\", \"foo\", \"@\", \"example.org)\"])},\n \"mention_link_use_tooltip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show user card when clicking mention links\"])},\n \"mention_link_show_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show user avatar beside the link\"])},\n \"mention_link_show_avatar_quick\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show user avatar next to mentions\"])},\n \"mention_link_fade_domain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fade domains (e.g. \", \"@\", \"example.org in \", \"@\", \"foo\", \"@\", \"example.org)\"])},\n \"mention_link_bolden_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Highlight mention of you when you are mentioned\"])},\n \"user_popover_avatar_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Popover avatar click action\"])},\n \"user_popover_avatar_action_zoom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zoom the avatar\"])},\n \"user_popover_avatar_action_close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close the popover\"])},\n \"user_popover_avatar_action_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Open profile\"])},\n \"user_popover_avatar_overlay\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show user popover over user avatar\"])},\n \"fun\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fun\"])},\n \"greentext\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Meme arrows\"])},\n \"show_yous\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show (You)s\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifications\"])},\n \"notification_setting_filters\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filters\"])},\n \"notification_setting_block_from_strangers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block notifications from users who you do not follow\"])},\n \"notification_setting_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Privacy\"])},\n \"notification_setting_hide_notification_contents\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide the sender and contents of push notifications\"])},\n \"notification_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"To stop receiving notifications from a specific user, use a mute.\"])},\n \"notification_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocking a user stops all notifications as well as unsubscribes them.\"])},\n \"enable_web_push_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enable web push notifications\"])},\n \"more_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"More settings\"])},\n \"style\": {\n \"switcher\": {\n \"keep_color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep colors\"])},\n \"keep_shadows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep shadows\"])},\n \"keep_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep opacity\"])},\n \"keep_roundness\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep roundness\"])},\n \"keep_fonts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep fonts\"])},\n \"save_load_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"\\\"Keep\\\" options preserve currently set options when selecting or loading themes, it also stores said options when exporting a theme. When all checkboxes unset, exporting theme will save everything.\"])},\n \"reset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset\"])},\n \"clear_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Clear all\"])},\n \"clear_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Clear opacity\"])},\n \"load_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load theme\"])},\n \"keep_as_is\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep as is\"])},\n \"use_snapshot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Old version\"])},\n \"use_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New version\"])},\n \"help\": {\n \"upgraded_from_v2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE has been upgraded, theme could look a little bit different than you remember.\"])},\n \"v2_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File you imported was made for older FE. We try to maximize compatibility but there still could be inconsistencies.\"])},\n \"future_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File you imported was made in newer version of FE.\"])},\n \"older_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File you imported was made in older version of FE.\"])},\n \"snapshot_present\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Theme snapshot is loaded, so all values are overriden. You can load theme's actual data instead.\"])},\n \"snapshot_missing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No theme snapshot was in the file so it could look different than originally envisioned.\"])},\n \"fe_upgraded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE's theme engine upgraded after version update.\"])},\n \"fe_downgraded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE's version rolled back.\"])},\n \"migration_snapshot_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Just to be safe, theme snapshot loaded. You can try loading theme data.\"])},\n \"migration_napshot_gone\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"For whatever reason snapshot was missing, some stuff could look different than you remember.\"])},\n \"snapshot_source_mismatch\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Versions conflict: most likely FE was rolled back and updated again, if you changed theme using older version of FE you most likely want to use old version, otherwise use new version.\"])}\n }\n },\n \"common\": {\n \"color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Color\"])},\n \"opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Opacity\"])},\n \"contrast\": {\n \"hint\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Contrast ratio is \", _interpolate(_named(\"ratio\")), \", it \", _interpolate(_named(\"level\")), \" \", _interpolate(_named(\"context\"))])},\n \"level\": {\n \"aa\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"meets Level AA guideline (minimal)\"])},\n \"aaa\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"meets Level AAA guideline (recommended)\"])},\n \"bad\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"doesn't meet any accessibility guidelines\"])}\n },\n \"context\": {\n \"18pt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"for large (18pt+) text\"])},\n \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"for text\"])}\n }\n }\n },\n \"common_colors\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Common\"])},\n \"main\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Common colors\"])},\n \"foreground_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"See \\\"Advanced\\\" tab for more detailed control\"])},\n \"rgbo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Icons, accents, badges\"])}\n },\n \"advanced_colors\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Advanced\"])},\n \"alert\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alert background\"])},\n \"alert_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error\"])},\n \"alert_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Warning\"])},\n \"alert_neutral\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neutral\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posts/User bios\"])},\n \"badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Badge background\"])},\n \"popover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tooltips, menus, popovers\"])},\n \"badge_notification\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notification\"])},\n \"panel_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Panel header\"])},\n \"top_bar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Top bar\"])},\n \"borders\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Borders\"])},\n \"buttons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Buttons\"])},\n \"inputs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Input fields\"])},\n \"faint_text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Faded text\"])},\n \"underlay\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Underlay\"])},\n \"wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wallpaper\"])},\n \"poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Poll graph\"])},\n \"icons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Icons\"])},\n \"highlight\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Highlighted elements\"])},\n \"pressed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pressed\"])},\n \"selectedPost\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Selected post\"])},\n \"selectedMenu\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Selected menu item\"])},\n \"disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disabled\"])},\n \"toggled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Toggled\"])},\n \"tabs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tabs\"])},\n \"chat\": {\n \"incoming\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Incoming\"])},\n \"outgoing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Outgoing\"])},\n \"border\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Border\"])}\n }\n },\n \"radii\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Roundness\"])}\n },\n \"shadows\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shadow and lighting\"])},\n \"component\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Component\"])},\n \"override\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Override\"])},\n \"shadow_id\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Shadow #\", _interpolate(_named(\"value\"))])},\n \"blur\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blur\"])},\n \"spread\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Spread\"])},\n \"inset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inset\"])},\n \"hintV3\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"For shadows you can also use the \", _interpolate(_list(0)), \" notation to use other color slot.\"])},\n \"filter_hint\": {\n \"always_drop_shadow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Warning, this shadow always uses \", _interpolate(_list(0)), \" when browser supports it.\"])},\n \"drop_shadow_syntax\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" does not support \", _interpolate(_list(1)), \" parameter and \", _interpolate(_list(2)), \" keyword.\"])},\n \"avatar_inset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Please note that combining both inset and non-inset shadows on avatars might give unexpected results with transparent avatars.\"])},\n \"spread_zero\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shadows with spread > 0 will appear as if it was set to zero\"])},\n \"inset_classic\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Inset shadows will be using \", _interpolate(_list(0))])}\n },\n \"components\": {\n \"panel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Panel\"])},\n \"panelHeader\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Panel header\"])},\n \"topBar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Top bar\"])},\n \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User avatar (in profile view)\"])},\n \"avatarStatus\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User avatar (in post display)\"])},\n \"popup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Popups and tooltips\"])},\n \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button\"])},\n \"buttonHover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button (hover)\"])},\n \"buttonPressed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button (pressed)\"])},\n \"buttonPressedHover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button (pressed+hover)\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Input field\"])}\n }\n },\n \"fonts\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fonts\"])},\n \"help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Select font to use for elements of UI. For \\\"custom\\\" you have to enter exact font name as it appears in system.\"])},\n \"components\": {\n \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interface\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Input fields\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post text\"])},\n \"postCode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Monospaced text in a post (rich text)\"])}\n },\n \"family\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Font name\"])},\n \"size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Size (in px)\"])},\n \"weight\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weight (boldness)\"])},\n \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Custom\"])}\n },\n \"preview\": {\n \"header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preview\"])},\n \"content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Content\"])},\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Example error\"])},\n \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button\"])},\n \"text\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"A bunch of more \", _interpolate(_list(0)), \" and \", _interpolate(_list(1))])},\n \"mono\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"content\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Just landed in L.A.\"])},\n \"faint_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"helpful manual\"])},\n \"fine_print\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Read our \", _interpolate(_list(0)), \" to learn nothing useful!\"])},\n \"header_faint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This is fine\"])},\n \"checkbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"I have skimmed over terms and conditions\"])},\n \"link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"a nice lil' link\"])}\n }\n },\n \"version\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Version\"])},\n \"backend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Backend version\"])},\n \"frontend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Frontend version\"])}\n }\n },\n \"time\": {\n \"unit\": {\n \"days\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" day\"]), _normalize([_interpolate(_list(0)), \" days\"])])},\n \"days_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"d\"])},\n \"hours\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" hour\"]), _normalize([_interpolate(_list(0)), \" hours\"])])},\n \"hours_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"h\"])},\n \"minutes\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" minute\"]), _normalize([_interpolate(_list(0)), \" minutes\"])])},\n \"minutes_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"min\"])},\n \"months\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" month\"]), _normalize([_interpolate(_list(0)), \" months\"])])},\n \"months_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"mo\"])},\n \"seconds\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" second\"]), _normalize([_interpolate(_list(0)), \" seconds\"])])},\n \"seconds_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"s\"])},\n \"weeks\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" week\"]), _normalize([_interpolate(_list(0)), \" weeks\"])])},\n \"weeks_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"w\"])},\n \"years\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" year\"]), _normalize([_interpolate(_list(0)), \" years\"])])},\n \"years_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"y\"])}\n },\n \"in_future\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"in \", _interpolate(_list(0))])},\n \"in_past\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" ago\"])},\n \"now\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"just now\"])},\n \"now_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"now\"])}\n },\n \"timeline\": {\n \"collapse\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Collapse\"])},\n \"conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Conversation\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Error fetching timeline: \", _interpolate(_list(0))])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load older statuses\"])},\n \"no_retweet_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post is marked as followers-only or direct and cannot be repeated\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"repeated\"])},\n \"show_new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show new\"])},\n \"reload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reload\"])},\n \"up_to_date\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Up-to-date\"])},\n \"no_more_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No more statuses\"])},\n \"no_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No statuses\"])},\n \"socket_reconnected\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Realtime connection established\"])},\n \"socket_broke\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Realtime connection lost: CloseEvent code \", _interpolate(_list(0))])},\n \"quick_view_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Quick view settings\"])},\n \"quick_filter_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Quick filter settings\"])}\n },\n \"status\": {\n \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorites\"])},\n \"repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeats\"])},\n \"repeat_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to repeat this status?\"])},\n \"repeat_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeat confirmation\"])},\n \"repeat_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeat\"])},\n \"repeat_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not repeat\"])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete status\"])},\n \"edit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit status\"])},\n \"edited_at\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"(last edited \", _interpolate(_named(\"time\")), \")\"])},\n \"pin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pin on profile\"])},\n \"unpin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unpin from profile\"])},\n \"pinned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pinned\"])},\n \"bookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bookmark\"])},\n \"unbookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unbookmark\"])},\n \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to delete this status?\"])},\n \"delete_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete confirmation\"])},\n \"delete_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete\"])},\n \"delete_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep\"])},\n \"reply_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reply to\"])},\n \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mentions\"])},\n \"replies_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Replies:\"])},\n \"replies_list_with_others\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"Replies (+\", _interpolate(_named(\"numReplies\")), \" other):\"]), _normalize([\"Replies (+\", _interpolate(_named(\"numReplies\")), \" others):\"])])},\n \"mute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute conversation\"])},\n \"unmute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unmute conversation\"])},\n \"status_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Status unavailable\"])},\n \"copy_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Copy link to status\"])},\n \"external_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"External source\"])},\n \"thread_muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Thread muted\"])},\n \"thread_muted_and_words\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\", has words:\"])},\n \"show_full_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show full subject\"])},\n \"hide_full_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide full subject\"])},\n \"show_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show content\"])},\n \"hide_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide content\"])},\n \"status_deleted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post was deleted\"])},\n \"nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NSFW\"])},\n \"expand\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Expand\"])},\n \"you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(You)\"])},\n \"plus_more\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"+\", _interpolate(_named(\"number\")), \" more\"])},\n \"many_attachments\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Post has \", _interpolate(_named(\"number\")), \" attachment(s)\"])},\n \"collapse_attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Collapse attachments\"])},\n \"show_all_attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show all attachments\"])},\n \"show_attachment_in_modal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show in media modal\"])},\n \"show_attachment_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preview description (open attachment for full description)\"])},\n \"hide_attachment\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide attachment\"])},\n \"remove_attachment\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove attachment\"])},\n \"attachment_stop_flash\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Stop Flash player\"])},\n \"move_up\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shift attachment left\"])},\n \"move_down\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shift attachment right\"])},\n \"open_gallery\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Open gallery\"])},\n \"thread_hide\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide this thread\"])},\n \"thread_show\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show this thread\"])},\n \"thread_show_full\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"Show everything under this thread (\", _interpolate(_named(\"numStatus\")), \" status in total, max depth \", _interpolate(_named(\"depth\")), \")\"]), _normalize([\"Show everything under this thread (\", _interpolate(_named(\"numStatus\")), \" statuses in total, max depth \", _interpolate(_named(\"depth\")), \")\"])])},\n \"thread_show_full_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"thread_follow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"See the remaining part of this thread (\", _interpolate(_named(\"numStatus\")), \" status in total)\"]), _normalize([\"See the remaining part of this thread (\", _interpolate(_named(\"numStatus\")), \" statuses in total)\"])])},\n \"thread_follow_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"ancestor_follow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"See \", _interpolate(_named(\"numReplies\")), \" other reply under this status\"]), _normalize([\"See \", _interpolate(_named(\"numReplies\")), \" other replies under this status\"])])},\n \"ancestor_follow_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"show_all_conversation_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"show_all_conversation\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"Show full conversation (\", _interpolate(_named(\"numStatus\")), \" other status)\"]), _normalize([\"Show full conversation (\", _interpolate(_named(\"numStatus\")), \" other statuses)\"])])},\n \"show_only_conversation_under_this\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Only show replies to this status\"])},\n \"status_history\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Status history\"])}\n },\n \"user_card\": {\n \"approve\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Approve\"])},\n \"approve_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Approve confirmation\"])},\n \"approve_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Approve\"])},\n \"approve_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not approve\"])},\n \"approve_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Do you want to approve \", _interpolate(_named(\"user\")), \"'s follow request?\"])},\n \"block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block\"])},\n \"blocked\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocked!\"])},\n \"block_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block confirmation\"])},\n \"block_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Do you really want to block \", _interpolate(_named(\"user\")), \"?\"])},\n \"block_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block\"])},\n \"block_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not block\"])},\n \"deactivated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deactivated\"])},\n \"deny\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deny\"])},\n \"deny_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deny confirmation\"])},\n \"deny_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deny\"])},\n \"deny_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not deny\"])},\n \"deny_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Do you want to deny \", _interpolate(_named(\"user\")), \"'s follow request?\"])},\n \"edit_profile\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit profile\"])},\n \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorites\"])},\n \"follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follow\"])},\n \"follow_cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel request\"])},\n \"follow_sent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Request sent!\"])},\n \"follow_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Requesting…\"])},\n \"follow_unfollow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unfollow\"])},\n \"unfollow_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unfollow confirmation\"])},\n \"unfollow_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Do you really want to unfollow \", _interpolate(_named(\"user\")), \"?\"])},\n \"unfollow_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unfollow\"])},\n \"unfollow_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not unfollow\"])},\n \"followees\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Following\"])},\n \"followers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Followers\"])},\n \"following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Following!\"])},\n \"follows_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follows you!\"])},\n \"hidden\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hidden\"])},\n \"its_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"It's you!\"])},\n \"media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media\"])},\n \"mention\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mention\"])},\n \"message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Message\"])},\n \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute\"])},\n \"muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Muted\"])},\n \"mute_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute confirmation\"])},\n \"mute_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Do you really want to mute \", _interpolate(_named(\"user\")), \"?\"])},\n \"mute_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute\"])},\n \"mute_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not mute\"])},\n \"mute_duration_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute this user for (0 for indefinite time):\"])},\n \"per_day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"per day\"])},\n \"remote_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remote follow\"])},\n \"remove_follower\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove follower\"])},\n \"remove_follower_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove follower confirmation\"])},\n \"remove_follower_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove\"])},\n \"remove_follower_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep\"])},\n \"remove_follower_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Do you really want to remove \", _interpolate(_named(\"user\")), \" from your followers?\"])},\n \"report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Report\"])},\n \"statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statuses\"])},\n \"subscribe\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Subscribe\"])},\n \"unsubscribe\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unsubscribe\"])},\n \"unblock\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unblock\"])},\n \"unblock_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unblocking…\"])},\n \"block_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocking…\"])},\n \"unmute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unmute\"])},\n \"unmute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unmuting…\"])},\n \"mute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Muting…\"])},\n \"hide_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide repeats\"])},\n \"show_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show repeats\"])},\n \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bot\"])},\n \"birthday\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Born \", _interpolate(_named(\"birthday\"))])},\n \"admin_menu\": {\n \"moderation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Moderation\"])},\n \"grant_admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Grant Admin\"])},\n \"revoke_admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revoke Admin\"])},\n \"grant_moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Grant Moderator\"])},\n \"revoke_moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revoke Moderator\"])},\n \"activate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activate account\"])},\n \"deactivate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deactivate account\"])},\n \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete account\"])},\n \"force_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mark all posts as NSFW\"])},\n \"strip_media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove media from posts\"])},\n \"force_unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Force posts to be unlisted\"])},\n \"sandbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Force posts to be followers-only\"])},\n \"disable_remote_subscription\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disallow following user from remote instances\"])},\n \"disable_any_subscription\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disallow following user at all\"])},\n \"quarantine\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disallow user posts from federating\"])},\n \"delete_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete user\"])},\n \"delete_user_data_and_deactivate_confirmation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This will permanently delete the data from this account and deactivate it. Are you absolutely sure?\"])}\n },\n \"highlight\": {\n \"disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No highlight\"])},\n \"solid\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Solid bg\"])},\n \"striped\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Striped bg\"])},\n \"side\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Side stripe\"])}\n },\n \"note\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Note\"])},\n \"note_blank\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(None)\"])},\n \"edit_note\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit note\"])},\n \"edit_note_apply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Apply\"])},\n \"edit_note_cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel\"])}\n },\n \"user_profile\": {\n \"timeline_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User timeline\"])},\n \"profile_does_not_exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, this profile does not exist.\"])},\n \"profile_loading_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, there was an error loading this profile.\"])}\n },\n \"user_reporting\": {\n \"title\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Reporting \", _interpolate(_list(0))])},\n \"add_comment_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:\"])},\n \"additional_comments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Additional comments\"])},\n \"forward_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The account is from another server. Send a copy of the report there as well?\"])},\n \"forward_to\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Forward to \", _interpolate(_list(0))])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Submit\"])},\n \"generic_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"An error occurred while processing your request.\"])}\n },\n \"who_to_follow\": {\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"More\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Who to follow\"])}\n },\n \"tool_tip\": {\n \"media_upload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload media\"])},\n \"repeat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeat\"])},\n \"reply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reply\"])},\n \"favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorite\"])},\n \"add_reaction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add Reaction\"])},\n \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Settings\"])},\n \"accept_follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Accept follow request\"])},\n \"reject_follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reject follow request\"])},\n \"bookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bookmark\"])},\n \"toggle_expand\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Expand or collapse notification to show post in full\"])},\n \"toggle_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Expand or collapse notification to reveal muted content\"])},\n \"autocomplete_available\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"number\")), \" result is available. Use up and down keys to navigate through them.\"]), _normalize([_interpolate(_named(\"number\")), \" results are available. Use up and down keys to navigate through them.\"])])}\n },\n \"upload\": {\n \"error\": {\n \"base\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload failed.\"])},\n \"message\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Upload failed: \", _interpolate(_list(0))])},\n \"file_too_big\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"File too big [\", _interpolate(_named(\"filesize\")), _interpolate(_named(\"filesizeunit\")), \" / \", _interpolate(_named(\"allowedsize\")), _interpolate(_named(\"allowedsizeunit\")), \"]\"])},\n \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Try again later\"])}\n },\n \"file_size_units\": {\n \"B\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"B\"])},\n \"KiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"KiB\"])},\n \"MiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"MiB\"])},\n \"GiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"GiB\"])},\n \"TiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"TiB\"])}\n }\n },\n \"search\": {\n \"people\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"People\"])},\n \"hashtags\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hashtags\"])},\n \"person_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \" person talking\"])},\n \"people_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \" people talking\"])},\n \"no_results\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No results\"])},\n \"no_more_results\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No more results\"])},\n \"load_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load more results\"])}\n },\n \"password_reset\": {\n \"forgot_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forgot password?\"])},\n \"password_reset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password reset\"])},\n \"instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter your email address or username. We will send you a link to reset your password.\"])},\n \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your email or username\"])},\n \"check_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Check your email for a link to reset your password.\"])},\n \"return_home\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Return to the home page\"])},\n \"too_many_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You have reached the limit of attempts, try again later.\"])},\n \"password_reset_disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password reset is disabled. Please contact your instance administrator.\"])},\n \"password_reset_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You must reset your password to log in.\"])},\n \"password_reset_required_but_mailer_is_disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You must reset your password, but password reset is disabled. Please contact your instance administrator.\"])}\n },\n \"chats\": {\n \"you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You:\"])},\n \"message_user\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Message \", _interpolate(_named(\"nickname\"))])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete\"])},\n \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Chats\"])},\n \"new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New Chat\"])},\n \"empty_message_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cannot post empty message\"])},\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"More\"])},\n \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to delete this message?\"])},\n \"error_loading_chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Something went wrong when loading the chat.\"])},\n \"error_sending_message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Something went wrong when sending the message.\"])},\n \"empty_chat_list_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You don't have any chats yet. Start a new chat!\"])}\n },\n \"lists\": {\n \"lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lists\"])},\n \"new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New List\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"List title\"])},\n \"search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search users\"])},\n \"create\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Create\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save changes\"])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete list\"])},\n \"following_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Limit to Following\"])},\n \"manage_lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Manage lists\"])},\n \"manage_members\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Manage list members\"])},\n \"add_members\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search for more users\"])},\n \"remove_from_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove from list\"])},\n \"add_to_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add to list\"])},\n \"is_in_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Already in list\"])},\n \"editing_list\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Editing list \", _interpolate(_named(\"listTitle\"))])},\n \"creating_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Creating new list\"])},\n \"update_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save Title\"])},\n \"really_delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Really delete list?\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Error manipulating lists: \", _interpolate(_list(0))])}\n },\n \"file_type\": {\n \"audio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Audio\"])},\n \"video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Video\"])},\n \"image\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Image\"])},\n \"file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File\"])}\n },\n \"display_date\": {\n \"today\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Today\"])}\n },\n \"update\": {\n \"big_update_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Please bear with us\"])},\n \"big_update_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"We haven't had a release in a while, so things might look and feel different than what you're used to.\"])},\n \"update_bugs\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Please report any issues and bugs on \", _interpolate(_named(\"pleromaGitlab\")), \", as we have changed a lot, and although we test thoroughly and use development versions ourselves, we may have missed some things. We welcome your feedback and suggestions on issues you might encounter, or how to improve Pleroma and Pleroma-FE.\"])},\n \"update_bugs_gitlab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma GitLab\"])},\n \"update_changelog\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"For more details on what's changed, see \", _interpolate(_named(\"theFullChangelog\")), \".\"])},\n \"update_changelog_here\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"the full changelog\"])},\n \"art_by\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Art by \", _interpolate(_named(\"linkToArtist\"))])}\n },\n \"unicode_domain_indicator\": {\n \"tooltip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This domain contains non-ascii characters.\"])}\n }\n}","var map = {\n\t\"./af.json\": [\n\t\t44919,\n\t\t6355\n\t],\n\t\"./am.json\": [\n\t\t53139,\n\t\t5119\n\t],\n\t\"./ar.json\": [\n\t\t44557,\n\t\t9873\n\t],\n\t\"./ar_SA.json\": [\n\t\t23450,\n\t\t7360\n\t],\n\t\"./as.json\": [\n\t\t44359,\n\t\t3377\n\t],\n\t\"./ast.json\": [\n\t\t13764,\n\t\t7569\n\t],\n\t\"./az.json\": [\n\t\t86459,\n\t\t2342\n\t],\n\t\"./be.json\": [\n\t\t50866,\n\t\t7304\n\t],\n\t\"./bg.json\": [\n\t\t26219,\n\t\t3974\n\t],\n\t\"./bn.json\": [\n\t\t69178,\n\t\t9064\n\t],\n\t\"./br.json\": [\n\t\t67871,\n\t\t6148\n\t],\n\t\"./bs.json\": [\n\t\t75340,\n\t\t8134\n\t],\n\t\"./ca.json\": [\n\t\t86914,\n\t\t4691\n\t],\n\t\"./ccp.json\": [\n\t\t73872,\n\t\t1162\n\t],\n\t\"./ceb.json\": [\n\t\t64478,\n\t\t9790\n\t],\n\t\"./chr.json\": [\n\t\t61017,\n\t\t6869\n\t],\n\t\"./ckb.json\": [\n\t\t56412,\n\t\t2656\n\t],\n\t\"./cs.json\": [\n\t\t8888,\n\t\t4710\n\t],\n\t\"./cy.json\": [\n\t\t25392,\n\t\t6272\n\t],\n\t\"./da.json\": [\n\t\t35042,\n\t\t1596\n\t],\n\t\"./de.json\": [\n\t\t35169,\n\t\t6226\n\t],\n\t\"./de_CH.json\": [\n\t\t28246,\n\t\t7164\n\t],\n\t\"./doi.json\": [\n\t\t59784,\n\t\t4209\n\t],\n\t\"./dsb.json\": [\n\t\t60634,\n\t\t1790\n\t],\n\t\"./el.json\": [\n\t\t98338,\n\t\t7879\n\t],\n\t\"./en.json\": [\n\t\t74990,\n\t\t5728\n\t],\n\t\"./en_001.json\": [\n\t\t62736,\n\t\t577\n\t],\n\t\"./en_AU.json\": [\n\t\t2597,\n\t\t9360\n\t],\n\t\"./en_CA.json\": [\n\t\t1516,\n\t\t4879\n\t],\n\t\"./en_GB.json\": [\n\t\t84830,\n\t\t50\n\t],\n\t\"./en_IN.json\": [\n\t\t71809,\n\t\t8988\n\t],\n\t\"./es.json\": [\n\t\t61148,\n\t\t6831\n\t],\n\t\"./es_419.json\": [\n\t\t25696,\n\t\t8873\n\t],\n\t\"./es_MX.json\": [\n\t\t11915,\n\t\t2699\n\t],\n\t\"./es_US.json\": [\n\t\t87826,\n\t\t3313\n\t],\n\t\"./et.json\": [\n\t\t66641,\n\t\t3276\n\t],\n\t\"./eu.json\": [\n\t\t6541,\n\t\t2992\n\t],\n\t\"./fa.json\": [\n\t\t43305,\n\t\t5521\n\t],\n\t\"./fi.json\": [\n\t\t40752,\n\t\t420\n\t],\n\t\"./fil.json\": [\n\t\t26843,\n\t\t1236\n\t],\n\t\"./fo.json\": [\n\t\t43032,\n\t\t8995\n\t],\n\t\"./fr.json\": [\n\t\t80898,\n\t\t2223\n\t],\n\t\"./fr_CA.json\": [\n\t\t54515,\n\t\t1821\n\t],\n\t\"./ga.json\": [\n\t\t66572,\n\t\t4571\n\t],\n\t\"./gd.json\": [\n\t\t9185,\n\t\t6116\n\t],\n\t\"./gl.json\": [\n\t\t23840,\n\t\t6126\n\t],\n\t\"./gu.json\": [\n\t\t85811,\n\t\t7261\n\t],\n\t\"./ha.json\": [\n\t\t91566,\n\t\t227\n\t],\n\t\"./ha_NE.json\": [\n\t\t3400,\n\t\t5304\n\t],\n\t\"./he.json\": [\n\t\t26260,\n\t\t5548\n\t],\n\t\"./hi.json\": [\n\t\t18136,\n\t\t5968\n\t],\n\t\"./hi_Latn.json\": [\n\t\t95638,\n\t\t3056\n\t],\n\t\"./hr.json\": [\n\t\t77435,\n\t\t2861\n\t],\n\t\"./hsb.json\": [\n\t\t15758,\n\t\t8015\n\t],\n\t\"./hu.json\": [\n\t\t2727,\n\t\t4902\n\t],\n\t\"./hy.json\": [\n\t\t8397,\n\t\t6344\n\t],\n\t\"./ia.json\": [\n\t\t49796,\n\t\t6936\n\t],\n\t\"./id.json\": [\n\t\t56635,\n\t\t9465\n\t],\n\t\"./ig.json\": [\n\t\t26406,\n\t\t9895\n\t],\n\t\"./is.json\": [\n\t\t51391,\n\t\t7300\n\t],\n\t\"./it.json\": [\n\t\t54879,\n\t\t8970\n\t],\n\t\"./ja.json\": [\n\t\t2971,\n\t\t1290\n\t],\n\t\"./jv.json\": [\n\t\t18644,\n\t\t2479\n\t],\n\t\"./ka.json\": [\n\t\t71255,\n\t\t6068\n\t],\n\t\"./kab.json\": [\n\t\t92892,\n\t\t9780\n\t],\n\t\"./kk.json\": [\n\t\t46419,\n\t\t2873\n\t],\n\t\"./kl.json\": [\n\t\t2227,\n\t\t2397\n\t],\n\t\"./km.json\": [\n\t\t65729,\n\t\t1404\n\t],\n\t\"./kn.json\": [\n\t\t65611,\n\t\t278\n\t],\n\t\"./ko.json\": [\n\t\t67080,\n\t\t2966\n\t],\n\t\"./kok.json\": [\n\t\t47209,\n\t\t2599\n\t],\n\t\"./ku.json\": [\n\t\t18738,\n\t\t2883\n\t],\n\t\"./ky.json\": [\n\t\t89690,\n\t\t4785\n\t],\n\t\"./lb.json\": [\n\t\t3929,\n\t\t4770\n\t],\n\t\"./lo.json\": [\n\t\t19778,\n\t\t7464\n\t],\n\t\"./lt.json\": [\n\t\t41683,\n\t\t7169\n\t],\n\t\"./lv.json\": [\n\t\t54873,\n\t\t8898\n\t],\n\t\"./mai.json\": [\n\t\t11781,\n\t\t1613\n\t],\n\t\"./mi.json\": [\n\t\t11569,\n\t\t6701\n\t],\n\t\"./mk.json\": [\n\t\t67589,\n\t\t9921\n\t],\n\t\"./ml.json\": [\n\t\t24415,\n\t\t2685\n\t],\n\t\"./mn.json\": [\n\t\t50512,\n\t\t4718\n\t],\n\t\"./mni.json\": [\n\t\t81597,\n\t\t5401\n\t],\n\t\"./mr.json\": [\n\t\t97747,\n\t\t1911\n\t],\n\t\"./ms.json\": [\n\t\t81588,\n\t\t9924\n\t],\n\t\"./mt.json\": [\n\t\t25081,\n\t\t9399\n\t],\n\t\"./my.json\": [\n\t\t8608,\n\t\t6790\n\t],\n\t\"./ne.json\": [\n\t\t8572,\n\t\t9377\n\t],\n\t\"./nl.json\": [\n\t\t52355,\n\t\t6773\n\t],\n\t\"./nn.json\": [\n\t\t52874,\n\t\t9414\n\t],\n\t\"./no.json\": [\n\t\t48005,\n\t\t9979\n\t],\n\t\"./or.json\": [\n\t\t26728,\n\t\t1012\n\t],\n\t\"./pa.json\": [\n\t\t15042,\n\t\t6946\n\t],\n\t\"./pa_Arab.json\": [\n\t\t43578,\n\t\t9994\n\t],\n\t\"./pcm.json\": [\n\t\t91163,\n\t\t5104\n\t],\n\t\"./pl.json\": [\n\t\t61335,\n\t\t1095\n\t],\n\t\"./ps.json\": [\n\t\t51828,\n\t\t678\n\t],\n\t\"./pt.json\": [\n\t\t38543,\n\t\t5041\n\t],\n\t\"./pt_PT.json\": [\n\t\t8063,\n\t\t1546\n\t],\n\t\"./qu.json\": [\n\t\t15821,\n\t\t8031\n\t],\n\t\"./rm.json\": [\n\t\t5014,\n\t\t5887\n\t],\n\t\"./ro.json\": [\n\t\t34064,\n\t\t9864\n\t],\n\t\"./ru.json\": [\n\t\t95222,\n\t\t8395\n\t],\n\t\"./rw.json\": [\n\t\t12710,\n\t\t346\n\t],\n\t\"./sa.json\": [\n\t\t69343,\n\t\t2243\n\t],\n\t\"./sat.json\": [\n\t\t51243,\n\t\t7855\n\t],\n\t\"./sc.json\": [\n\t\t1319,\n\t\t2874\n\t],\n\t\"./sd.json\": [\n\t\t67728,\n\t\t6826\n\t],\n\t\"./si.json\": [\n\t\t5044,\n\t\t4354\n\t],\n\t\"./sk.json\": [\n\t\t45626,\n\t\t2350\n\t],\n\t\"./sl.json\": [\n\t\t76091,\n\t\t1553\n\t],\n\t\"./so.json\": [\n\t\t93761,\n\t\t625\n\t],\n\t\"./sq.json\": [\n\t\t1230,\n\t\t4368\n\t],\n\t\"./sr.json\": [\n\t\t60445,\n\t\t3887\n\t],\n\t\"./sr_Cyrl_BA.json\": [\n\t\t38940,\n\t\t6060\n\t],\n\t\"./sr_Latn.json\": [\n\t\t21650,\n\t\t8681\n\t],\n\t\"./sr_Latn_BA.json\": [\n\t\t78328,\n\t\t5115\n\t],\n\t\"./su.json\": [\n\t\t54395,\n\t\t1959\n\t],\n\t\"./sv.json\": [\n\t\t3418,\n\t\t3241\n\t],\n\t\"./sw.json\": [\n\t\t11958,\n\t\t7585\n\t],\n\t\"./sw_KE.json\": [\n\t\t35001,\n\t\t3994\n\t],\n\t\"./ta.json\": [\n\t\t92930,\n\t\t7897\n\t],\n\t\"./te.json\": [\n\t\t8748,\n\t\t4786\n\t],\n\t\"./tg.json\": [\n\t\t20999,\n\t\t313\n\t],\n\t\"./th.json\": [\n\t\t23900,\n\t\t3951\n\t],\n\t\"./ti.json\": [\n\t\t368,\n\t\t3568\n\t],\n\t\"./tk.json\": [\n\t\t88770,\n\t\t1780\n\t],\n\t\"./to.json\": [\n\t\t95781,\n\t\t1584\n\t],\n\t\"./tr.json\": [\n\t\t92619,\n\t\t9978\n\t],\n\t\"./tt.json\": [\n\t\t87782,\n\t\t2569\n\t],\n\t\"./ug.json\": [\n\t\t19005,\n\t\t9757\n\t],\n\t\"./uk.json\": [\n\t\t82057,\n\t\t9871\n\t],\n\t\"./ur.json\": [\n\t\t13889,\n\t\t6797\n\t],\n\t\"./uz.json\": [\n\t\t45108,\n\t\t1056\n\t],\n\t\"./vi.json\": [\n\t\t97099,\n\t\t5224\n\t],\n\t\"./wo.json\": [\n\t\t9923,\n\t\t7303\n\t],\n\t\"./xh.json\": [\n\t\t29064,\n\t\t786\n\t],\n\t\"./yo.json\": [\n\t\t11971,\n\t\t8732\n\t],\n\t\"./yo_BJ.json\": [\n\t\t64533,\n\t\t9926\n\t],\n\t\"./yue.json\": [\n\t\t40648,\n\t\t1452\n\t],\n\t\"./yue_Hans.json\": [\n\t\t24800,\n\t\t4424\n\t],\n\t\"./zh.json\": [\n\t\t34626,\n\t\t457\n\t],\n\t\"./zh_Hant.json\": [\n\t\t82560,\n\t\t2767\n\t],\n\t\"./zh_Hant_HK.json\": [\n\t\t47677,\n\t\t1044\n\t],\n\t\"./zu.json\": [\n\t\t73784,\n\t\t9319\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(() => {\n\t\treturn __webpack_require__.t(id, 3 | 16);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 1395;\nmodule.exports = webpackAsyncContext;","/**\n * suggest - generates a suggestor function to be used by emoji-input\n * data: object providing source information for specific types of suggestions:\n * data.emoji - optional, an array of all emoji available i.e.\n * (getters.standardEmojiList + state.instance.customEmoji)\n * data.users - optional, an array of all known users\n * updateUsersList - optional, a function to search and append to users\n *\n * Depending on data present one or both (or none) can be present, so if field\n * doesn't support user linking you can just provide only emoji.\n */\n\nexport default data => {\n const emojiCurry = suggestEmoji(data.emoji)\n const usersCurry = data.store && suggestUsers(data.store)\n return (input, nameKeywordLocalizer) => {\n const firstChar = input[0]\n if (firstChar === ':' && data.emoji) {\n return emojiCurry(input, nameKeywordLocalizer)\n }\n if (firstChar === '@' && usersCurry) {\n return usersCurry(input)\n }\n return []\n }\n}\n\nexport const suggestEmoji = emojis => (input, nameKeywordLocalizer) => {\n const noPrefix = input.toLowerCase().substr(1)\n return emojis\n .map(emoji => ({ ...emoji, ...nameKeywordLocalizer(emoji) }))\n .filter((emoji) => (emoji.names.concat(emoji.keywords)).filter(kw => kw.toLowerCase().match(noPrefix)).length)\n .map(k => {\n let score = 0\n\n // An exact match always wins\n score += Math.max(...k.names.map(name => name.toLowerCase() === noPrefix ? 200 : 0), 0)\n\n // Prioritize custom emoji a lot\n score += k.imageUrl ? 100 : 0\n\n // Prioritize prefix matches somewhat\n score += Math.max(...k.names.map(kw => kw.toLowerCase().startsWith(noPrefix) ? 10 : 0), 0)\n\n // Sort by length\n score -= k.displayText.length\n\n k.score = score\n return k\n })\n .sort((a, b) => {\n // Break ties alphabetically\n const alphabetically = a.displayText > b.displayText ? 0.5 : -0.5\n\n return b.score - a.score + alphabetically\n })\n}\n\nexport const suggestUsers = ({ dispatch, state }) => {\n // Keep some persistent values in closure, most importantly for the\n // custom debounce to work. Lodash debounce does not return a promise.\n let suggestions = []\n let previousQuery = ''\n let timeout = null\n let cancelUserSearch = null\n\n const userSearch = (query) => dispatch('searchUsers', { query })\n const debounceUserSearch = (query) => {\n cancelUserSearch && cancelUserSearch()\n return new Promise((resolve, reject) => {\n timeout = setTimeout(() => {\n userSearch(query).then(resolve).catch(reject)\n }, 300)\n cancelUserSearch = () => {\n clearTimeout(timeout)\n resolve([])\n }\n })\n }\n\n return async input => {\n const noPrefix = input.toLowerCase().substr(1)\n if (previousQuery === noPrefix) return suggestions\n\n suggestions = []\n previousQuery = noPrefix\n // Fetch more and wait, don't fetch if there's the 2nd @ because\n // the backend user search can't deal with it.\n // Reference semantics make it so that we get the updated data after\n // the await.\n if (!noPrefix.includes('@')) {\n await debounceUserSearch(noPrefix)\n }\n\n const newSuggestions = state.users.users.filter(\n user =>\n user.screen_name.toLowerCase().startsWith(noPrefix) ||\n user.name.toLowerCase().startsWith(noPrefix)\n ).slice(0, 20).sort((a, b) => {\n let aScore = 0\n let bScore = 0\n\n // Matches on screen name (i.e. user@instance) makes a priority\n aScore += a.screen_name.toLowerCase().startsWith(noPrefix) ? 2 : 0\n bScore += b.screen_name.toLowerCase().startsWith(noPrefix) ? 2 : 0\n\n // Matches on name takes second priority\n aScore += a.name.toLowerCase().startsWith(noPrefix) ? 1 : 0\n bScore += b.name.toLowerCase().startsWith(noPrefix) ? 1 : 0\n\n const diff = (bScore - aScore) * 10\n\n // Then sort alphabetically\n const nameAlphabetically = a.name > b.name ? 1 : -1\n const screenNameAlphabetically = a.screen_name > b.screen_name ? 1 : -1\n\n return diff + nameAlphabetically + screenNameAlphabetically\n /* eslint-disable camelcase */\n }).map((user) => ({\n user,\n displayText: user.screen_name_ui,\n detailText: user.name,\n imageUrl: user.profile_image_url_original,\n replacement: '@' + user.screen_name + ' '\n }))\n /* eslint-enable camelcase */\n\n suggestions = newSuggestions || []\n return suggestions\n }\n}\n","/**\n * Extract tag name from tag opener/closer.\n *\n * @param {String} tag - tag string, i.e. '<a href=\"...\">'\n * @return {String} - tagname, i.e. \"div\"\n */\nexport const getTagName = (tag) => {\n const result = /(?:<\\/(\\w+)>|<(\\w+)\\s?.*?\\/?>)/gi.exec(tag)\n return result && (result[1] || result[2])\n}\n\n/**\n * Extract attributes from tag opener.\n *\n * @param {String} tag - tag string, i.e. '<a href=\"...\">'\n * @return {Object} - map of attributes key = attribute name, value = attribute value\n * attributes without values represented as boolean true\n */\nexport const getAttrs = (tag, filter) => {\n const innertag = tag\n .substring(1, tag.length - 1)\n .replace(new RegExp('^' + getTagName(tag)), '')\n .replace(/\\/?$/, '')\n .trim()\n const attrs = Array.from(innertag.matchAll(/([a-z0-9-]+)(?:=(\"[^\"]+?\"|'[^']+?'))?/gi))\n .map(([trash, key, value]) => [key, value])\n .map(([k, v]) => {\n if (!v) return [k, true]\n return [k, v.substring(1, v.length - 1)]\n })\n const defaultFilter = ([k, v]) => {\n const attrKey = k.toLowerCase()\n if (attrKey === 'style') return false\n if (attrKey === 'class') {\n return v === 'greentext' || v === 'cyantext'\n }\n return true\n }\n return Object.fromEntries(attrs.filter(filter || defaultFilter))\n}\n\n/**\n * Finds shortcodes in text\n *\n * @param {String} text - original text to find emojis in\n * @param {{ url: String, shortcode: Sring }[]} emoji - list of shortcodes to find\n * @param {Function} processor - function to call on each encountered emoji,\n * function is passed single object containing matching emoji ({ url, shortcode })\n * return value will be inserted into resulting array instead of :shortcode:\n * @return {Array} resulting array with non-emoji parts of text and whatever {processor}\n * returned for emoji\n */\nexport const processTextForEmoji = (text, emojis, processor) => {\n const buffer = []\n let textBuffer = ''\n for (let i = 0; i < text.length; i++) {\n const char = text[i]\n if (char === ':') {\n const next = text.slice(i + 1)\n let found = false\n for (const emoji of emojis) {\n if (next.slice(0, emoji.shortcode.length + 1) === (emoji.shortcode + ':')) {\n found = emoji\n break\n }\n }\n if (found) {\n buffer.push(textBuffer)\n textBuffer = ''\n buffer.push(processor(found))\n i += found.shortcode.length + 1\n } else {\n textBuffer += char\n }\n } else {\n textBuffer += char\n }\n }\n if (textBuffer) buffer.push(textBuffer)\n return buffer\n}\n","import { getTagName } from './utility.service.js'\n\n/**\n * This is a tiny purpose-built HTML parser/processor. This basically detects\n * any type of visual newline and converts entire HTML into a array structure.\n *\n * Text nodes are represented as object with single property - text - containing\n * the visual line. Intended usage is to process the array with .map() in which\n * map function returns a string and resulting array can be converted back to html\n * with a .join('').\n *\n * Generally this isn't very useful except for when you really need to either\n * modify visual lines (greentext i.e. simple quoting) or do something with\n * first/last line.\n *\n * known issue: doesn't handle CDATA so nested CDATA might not work well\n *\n * @param {Object} input - input data\n * @return {(string|{ text: string })[]} processed html in form of a list.\n */\nexport const convertHtmlToLines = (html = '') => {\n // Elements that are implicitly self-closing\n // https://developer.mozilla.org/en-US/docs/Glossary/empty_element\n const emptyElements = new Set([\n 'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input',\n 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr'\n ])\n // Block-level element (they make a visual line)\n // https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements\n const blockElements = new Set([\n 'address', 'article', 'aside', 'blockquote', 'details', 'dialog', 'dd',\n 'div', 'dl', 'dt', 'fieldset', 'figcaption', 'figure', 'footer', 'form',\n 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hgroup', 'hr', 'li', 'main',\n 'nav', 'ol', 'p', 'pre', 'section', 'table', 'ul'\n ])\n // br is very weird in a way that it's technically not block-level, it's\n // essentially converted to a \\n (or \\r\\n). There's also wbr but it doesn't\n // guarantee linebreak, only suggest it.\n const linebreakElements = new Set(['br'])\n\n const visualLineElements = new Set([\n ...blockElements.values(),\n ...linebreakElements.values()\n ])\n\n // All block-level elements that aren't empty elements, i.e. not <hr>\n const nonEmptyElements = new Set(visualLineElements)\n // Difference\n for (const elem of emptyElements) {\n nonEmptyElements.delete(elem)\n }\n\n // All elements that we are recognizing\n const allElements = new Set([\n ...nonEmptyElements.values(),\n ...emptyElements.values()\n ])\n\n const buffer = [] // Current output buffer\n const level = [] // How deep we are in tags and which tags were there\n let textBuffer = '' // Current line content\n let tagBuffer = null // Current tag buffer, if null = we are not currently reading a tag\n\n const flush = () => { // Processes current line buffer, adds it to output buffer and clears line buffer\n if (textBuffer.trim().length > 0) {\n buffer.push({ level: [...level], text: textBuffer })\n } else {\n buffer.push(textBuffer)\n }\n textBuffer = ''\n }\n\n const handleBr = (tag) => { // handles single newlines/linebreaks/selfclosing\n flush()\n buffer.push(tag)\n }\n\n const handleOpen = (tag) => { // handles opening tags\n flush()\n buffer.push(tag)\n level.unshift(getTagName(tag))\n }\n\n const handleClose = (tag) => { // handles closing tags\n if (level[0] === getTagName(tag)) {\n flush()\n buffer.push(tag)\n level.shift()\n } else { // Broken case\n textBuffer += tag\n }\n }\n\n for (let i = 0; i < html.length; i++) {\n const char = html[i]\n if (char === '<' && tagBuffer === null) {\n tagBuffer = char\n } else if (char !== '>' && tagBuffer !== null) {\n tagBuffer += char\n } else if (char === '>' && tagBuffer !== null) {\n tagBuffer += char\n const tagFull = tagBuffer\n tagBuffer = null\n const tagName = getTagName(tagFull)\n if (allElements.has(tagName)) {\n if (linebreakElements.has(tagName)) {\n handleBr(tagFull)\n } else if (nonEmptyElements.has(tagName)) {\n if (tagFull[1] === '/') {\n handleClose(tagFull)\n } else if (tagFull[tagFull.length - 2] === '/') {\n // self-closing\n handleBr(tagFull)\n } else {\n handleOpen(tagFull)\n }\n } else {\n textBuffer += tagFull\n }\n } else {\n textBuffer += tagFull\n }\n } else if (char === '\\n') {\n handleBr(char)\n } else {\n textBuffer += char\n }\n }\n if (tagBuffer) {\n textBuffer += tagBuffer\n }\n\n flush()\n\n return buffer\n}\n","<template>\n <span\n class=\"HashtagLink\"\n >\n <!-- eslint-disable vue/no-v-html -->\n <a\n :href=\"url\"\n class=\"original\"\n target=\"_blank\"\n @click.prevent=\"onClick\"\n v-html=\"content\"\n />\n <!-- eslint-enable vue/no-v-html -->\n </span>\n</template>\n\n<script src=\"./hashtag_link.js\" />\n\n<style lang=\"scss\" src=\"./hashtag_link.scss\" />\n","import { extractTagFromUrl } from 'src/services/matcher/matcher.service.js'\n\nconst HashtagLink = {\n name: 'HashtagLink',\n props: {\n url: {\n required: true,\n type: String\n },\n content: {\n required: true,\n type: String\n },\n tag: {\n required: false,\n type: String,\n default: ''\n }\n },\n methods: {\n onClick () {\n const tag = this.tag || extractTagFromUrl(this.url)\n if (tag) {\n const link = this.generateTagLink(tag)\n this.$router.push(link)\n } else {\n window.open(this.url, '_blank')\n }\n },\n generateTagLink (tag) {\n return `/tag/${tag}`\n }\n }\n}\n\nexport default HashtagLink\n","export const mentionMatchesUrl = (attention, url) => {\n if (url === attention.statusnet_profile_url) {\n return true\n }\n const [namepart, instancepart] = attention.screen_name.split('@')\n const matchstring = new RegExp('://' + instancepart + '/.*' + namepart + '$', 'g')\n\n return !!url.match(matchstring)\n}\n\n/**\n * Extract tag name from pleroma or mastodon url.\n * i.e https://bikeshed.party/tag/photo or https://quey.org/tags/sky\n * @param {string} url\n */\nexport const extractTagFromUrl = (url) => {\n const regex = /tag[s]*\\/(\\w+)$/g\n const result = regex.exec(url)\n if (!result) {\n return false\n }\n return result[1]\n}\n","import { render } from \"./hashtag_link.vue?vue&type=template&id=76a14451\"\nimport script from \"./hashtag_link.js?vue&type=script&lang=js\"\nexport * from \"./hashtag_link.js?vue&type=script&lang=js\"\n\nimport \"./hashtag_link.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { unescape, flattenDeep } from 'lodash'\nimport { getTagName, processTextForEmoji, getAttrs } from 'src/services/html_converter/utility.service.js'\nimport { convertHtmlToTree } from 'src/services/html_converter/html_tree_converter.service.js'\nimport { convertHtmlToLines } from 'src/services/html_converter/html_line_converter.service.js'\nimport StillImage from 'src/components/still-image/still-image.vue'\nimport MentionsLine, { MENTIONS_LIMIT } from 'src/components/mentions_line/mentions_line.vue'\nimport HashtagLink from 'src/components/hashtag_link/hashtag_link.vue'\n\nimport './rich_content.scss'\n\n/**\n * RichContent, The Über-powered component for rendering Post HTML.\n *\n * This takes post HTML and does multiple things to it:\n * - Groups all mentions into <MentionsLine>, this affects all mentions regardles\n * of where they are (beginning/middle/end), even single mentions are converted\n * to a <MentionsLine> containing single <MentionLink>.\n * - Replaces emoji shortcodes with <StillImage>'d images.\n *\n * There are two problems with this component's architecture:\n * 1. Parsing HTML and rendering are inseparable. Attempts to separate the two\n * proven to be a massive overcomplication due to amount of things done here.\n * 2. We need to output both render and some extra data, which seems to be imp-\n * possible in vue. Current solution is to emit 'parseReady' event when parsing\n * is done within render() function.\n *\n * Apart from that one small hiccup with emit in render this _should_ be vue3-ready\n */\nexport default {\n name: 'RichContent',\n components: {\n MentionsLine,\n HashtagLink\n },\n props: {\n // Original html content\n html: {\n required: true,\n type: String\n },\n attentions: {\n required: false,\n default: () => []\n },\n // Emoji object, as in status.emojis, note the \"s\" at the end...\n emoji: {\n required: true,\n type: Array\n },\n // Whether to handle links or not (posts: yes, everything else: no)\n handleLinks: {\n required: false,\n type: Boolean,\n default: false\n },\n // Meme arrows\n greentext: {\n required: false,\n type: Boolean,\n default: false\n }\n },\n // NEVER EVER TOUCH DATA INSIDE RENDER\n render () {\n // Pre-process HTML\n const { newHtml: html } = preProcessPerLine(this.html, this.greentext)\n let currentMentions = null // Current chain of mentions, we group all mentions together\n // This is used to recover spacing removed when parsing mentions\n let lastSpacing = ''\n\n const lastTags = [] // Tags that appear at the end of post body\n const writtenMentions = [] // All mentions that appear in post body\n const invisibleMentions = [] // All mentions that go beyond the limiter (see MentionsLine)\n // to collapse too many mentions in a row\n const writtenTags = [] // All tags that appear in post body\n // unique index for vue \"tag\" property\n let mentionIndex = 0\n let tagsIndex = 0\n\n const renderImage = (tag) => {\n return <StillImage\n {...getAttrs(tag)}\n class=\"img\"\n />\n }\n\n const renderHashtag = (attrs, children, encounteredTextReverse) => {\n const { index, ...linkData } = getLinkData(attrs, children, tagsIndex++)\n writtenTags.push(linkData)\n if (!encounteredTextReverse) {\n lastTags.push(linkData)\n }\n const { url, tag, content } = linkData\n return <HashtagLink url={url} tag={tag} content={content}/>\n }\n\n const renderMention = (attrs, children) => {\n const linkData = getLinkData(attrs, children, mentionIndex++)\n linkData.notifying = this.attentions.some(a => a.statusnet_profile_url === linkData.url)\n writtenMentions.push(linkData)\n if (currentMentions === null) {\n currentMentions = []\n }\n currentMentions.push(linkData)\n if (currentMentions.length > MENTIONS_LIMIT) {\n invisibleMentions.push(linkData)\n }\n if (currentMentions.length === 1) {\n return <MentionsLine mentions={ currentMentions } />\n } else {\n return ''\n }\n }\n\n // Processor to use with html_tree_converter\n const processItem = (item, index, array, what) => {\n // Handle text nodes - just add emoji\n if (typeof item === 'string') {\n const emptyText = item.trim() === ''\n if (item.includes('\\n')) {\n currentMentions = null\n }\n if (emptyText) {\n // don't include spaces when processing mentions - we'll include them\n // in MentionsLine\n lastSpacing = item\n // Don't remove last space in a container (fixes poast mentions)\n return (index !== array.length - 1) && (currentMentions !== null) ? item.trim() : item\n }\n\n currentMentions = null\n if (item.includes(':')) {\n item = ['', processTextForEmoji(\n item,\n this.emoji,\n ({ shortcode, url }) => {\n return <StillImage\n class=\"emoji img\"\n src={url}\n title={`:${shortcode}:`}\n alt={`:${shortcode}:`}\n />\n }\n )]\n }\n return item\n }\n\n // Handle tag nodes\n if (Array.isArray(item)) {\n const [opener, children, closer] = item\n const Tag = getTagName(opener)\n const fullAttrs = getAttrs(opener, () => true)\n const attrs = getAttrs(opener)\n const previouslyMentions = currentMentions !== null\n /* During grouping of mentions we trim all the empty text elements\n * This padding is added to recover last space removed in case\n * we have a tag right next to mentions\n */\n const mentionsLinePadding =\n // Padding is only needed if we just finished parsing mentions\n previouslyMentions &&\n // Don't add padding if content is string and has padding already\n !(children && typeof children[0] === 'string' && children[0].match(/^\\s/))\n ? lastSpacing\n : ''\n switch (Tag) {\n case 'br':\n currentMentions = null\n break\n case 'img': // replace images with StillImage\n return ['', [mentionsLinePadding, renderImage(opener)], '']\n case 'a': // replace mentions with MentionLink\n if (!this.handleLinks) break\n if (fullAttrs.class && fullAttrs.class.includes('mention')) {\n // Handling mentions here\n return renderMention(attrs, children)\n } else {\n currentMentions = null\n break\n }\n case 'span':\n if (this.handleLinks && fullAttrs.class && fullAttrs.class.includes('h-card')) {\n return ['', children.map(processItem), '']\n }\n }\n\n if (children !== undefined) {\n return [\n '',\n [\n mentionsLinePadding,\n [opener, children.map(processItem), closer]\n ],\n ''\n ]\n } else {\n return ['', [mentionsLinePadding, item], '']\n }\n }\n }\n\n // Processor for back direction (for finding \"last\" stuff, just easier this way)\n let encounteredTextReverse = false\n const processItemReverse = (item, index, array, what) => {\n // Handle text nodes - just add emoji\n if (typeof item === 'string') {\n const emptyText = item.trim() === ''\n if (emptyText) return item\n if (!encounteredTextReverse) encounteredTextReverse = true\n return unescape(item)\n } else if (Array.isArray(item)) {\n // Handle tag nodes\n const [opener, children] = item\n const Tag = opener === '' ? '' : getTagName(opener)\n switch (Tag) {\n case 'a': { // replace mentions with MentionLink\n if (!this.handleLinks) break\n const fullAttrs = getAttrs(opener, () => true)\n const attrs = getAttrs(opener, () => true)\n // should only be this\n if (\n (fullAttrs.class && fullAttrs.class.includes('hashtag')) || // Pleroma style\n (fullAttrs.rel === 'tag') // Mastodon style\n ) {\n return renderHashtag(attrs, children, encounteredTextReverse)\n } else {\n attrs.target = '_blank'\n const newChildren = [...children].reverse().map(processItemReverse).reverse()\n\n return <a {...attrs}>\n { newChildren }\n </a>\n }\n }\n case '':\n return [...children].reverse().map(processItemReverse).reverse()\n }\n\n // Render tag as is\n if (children !== undefined) {\n const newChildren = Array.isArray(children)\n ? [...children].reverse().map(processItemReverse).reverse()\n : children\n return <Tag {...getAttrs(opener)}>\n { newChildren }\n </Tag>\n } else {\n return <Tag/>\n }\n }\n return item\n }\n\n const pass1 = convertHtmlToTree(html).map(processItem)\n const pass2 = [...pass1].reverse().map(processItemReverse).reverse()\n // DO NOT USE SLOTS they cause a re-render feedback loop here.\n // slots updated -> rerender -> emit -> update up the tree -> rerender -> ...\n // at least until vue3?\n const result = <span class=\"RichContent\">\n { pass2 }\n </span>\n\n const event = {\n lastTags,\n writtenMentions,\n writtenTags,\n invisibleMentions\n }\n\n // DO NOT MOVE TO UPDATE. BAD IDEA.\n this.$emit('parseReady', event)\n\n return result\n }\n}\n\nconst getLinkData = (attrs, children, index) => {\n const stripTags = (item) => {\n if (typeof item === 'string') {\n return item\n } else {\n return item[1].map(stripTags).join('')\n }\n }\n const textContent = children.map(stripTags).join('')\n return {\n index,\n url: attrs.href,\n tag: attrs['data-tag'],\n content: flattenDeep(children).join(''),\n textContent\n }\n}\n\n/** Pre-processing HTML\n *\n * Currently this does one thing:\n * - add green/cyantexting\n *\n * @param {String} html - raw HTML to process\n * @param {Boolean} greentext - whether to enable greentexting or not\n */\nexport const preProcessPerLine = (html, greentext) => {\n const greentextHandle = new Set(['p', 'div'])\n\n const lines = convertHtmlToLines(html)\n const newHtml = lines.reverse().map((item, index, array) => {\n if (!item.text) return item\n const string = item.text\n\n // Greentext stuff\n if (\n // Only if greentext is engaged\n greentext &&\n // Only handle p's and divs. Don't want to affect blockquotes, code etc\n item.level.every(l => greentextHandle.has(l)) &&\n // Only if line begins with '>' or '<'\n (string.includes('&gt;') || string.includes('&lt;'))\n ) {\n const cleanedString = string.replace(/<[^>]+?>/gi, '') // remove all tags\n .replace(/@\\w+/gi, '') // remove mentions (even failed ones)\n .trim()\n if (cleanedString.startsWith('&gt;')) {\n return `<span class='greentext'>${string}</span>`\n } else if (cleanedString.startsWith('&lt;')) {\n return `<span class='cyantext'>${string}</span>`\n }\n }\n\n return string\n }).reverse().join('')\n\n return { newHtml }\n}\n","import { getTagName } from './utility.service.js'\nimport { unescape } from 'lodash'\n\n/**\n * This is a not-so-tiny purpose-built HTML parser/processor. This parses html\n * and converts it into a tree structure representing tag openers/closers and\n * children.\n *\n * Structure follows this pattern: [opener, [...children], closer] except root\n * node which is just [...children]. Text nodes can only be within children and\n * are represented as strings.\n *\n * Intended use is to convert HTML structure and then recursively iterate over it\n * most likely using a map. Very useful for dynamically rendering html replacing\n * tags with JSX elements in a render function.\n *\n * known issue: doesn't handle CDATA so CDATA might not work well\n * known issue: doesn't handle HTML comments\n *\n * @param {Object} input - input data\n * @return {string} processed html\n */\nexport const convertHtmlToTree = (html = '') => {\n // Elements that are implicitly self-closing\n // https://developer.mozilla.org/en-US/docs/Glossary/empty_element\n const emptyElements = new Set([\n 'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input',\n 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr'\n ])\n // TODO For future - also parse HTML5 multi-source components?\n\n const buffer = [] // Current output buffer\n const levels = [['', buffer]] // How deep we are in tags and which tags were there\n let textBuffer = '' // Current line content\n let tagBuffer = null // Current tag buffer, if null = we are not currently reading a tag\n\n const getCurrentBuffer = () => {\n return levels[levels.length - 1][1]\n }\n\n const flushText = () => { // Processes current line buffer, adds it to output buffer and clears line buffer\n if (textBuffer === '') return\n getCurrentBuffer().push(textBuffer)\n textBuffer = ''\n }\n\n const handleSelfClosing = (tag) => {\n getCurrentBuffer().push([tag])\n }\n\n const handleOpen = (tag) => {\n const curBuf = getCurrentBuffer()\n const newLevel = [unescape(tag), []]\n levels.push(newLevel)\n curBuf.push(newLevel)\n }\n\n const handleClose = (tag) => {\n const currentTag = levels[levels.length - 1]\n if (getTagName(levels[levels.length - 1][0]) === getTagName(tag)) {\n currentTag.push(tag)\n levels.pop()\n } else {\n getCurrentBuffer().push(tag)\n }\n }\n\n for (let i = 0; i < html.length; i++) {\n const char = html[i]\n if (char === '<' && tagBuffer === null) {\n flushText()\n tagBuffer = char\n } else if (char !== '>' && tagBuffer !== null) {\n tagBuffer += char\n } else if (char === '>' && tagBuffer !== null) {\n tagBuffer += char\n const tagFull = tagBuffer\n tagBuffer = null\n const tagName = getTagName(tagFull)\n if (tagFull[1] === '/') {\n handleClose(tagFull)\n } else if (emptyElements.has(tagName) || tagFull[tagFull.length - 2] === '/') {\n // self-closing\n handleSelfClosing(tagFull)\n } else {\n handleOpen(tagFull)\n }\n } else {\n textBuffer += char\n }\n }\n if (tagBuffer) {\n textBuffer += tagBuffer\n }\n\n flushText()\n return buffer\n}\n","// eslint-disable-next-line no-unused\nimport { h, Fragment } from 'vue'\nimport { mapState } from 'vuex'\nimport { FontAwesomeIcon as FAIcon } from '@fortawesome/vue-fontawesome'\n\nimport './tab_switcher.scss'\n\nconst findFirstUsable = (slots) => slots.findIndex(_ => _.props)\n\nexport default {\n name: 'TabSwitcher',\n props: {\n renderOnlyFocused: {\n required: false,\n type: Boolean,\n default: false\n },\n onSwitch: {\n required: false,\n type: Function,\n default: undefined\n },\n activeTab: {\n required: false,\n type: String,\n default: undefined\n },\n scrollableTabs: {\n required: false,\n type: Boolean,\n default: false\n },\n sideTabBar: {\n required: false,\n type: Boolean,\n default: false\n },\n bodyScrollLock: {\n required: false,\n type: Boolean,\n default: false\n }\n },\n data () {\n return {\n active: findFirstUsable(this.slots())\n }\n },\n computed: {\n activeIndex () {\n // In case of controlled component\n if (this.activeTab) {\n return this.slots().findIndex(slot => slot && slot.props && this.activeTab === slot.props.key)\n } else {\n return this.active\n }\n },\n isActive () {\n return tabName => {\n const isWanted = slot => slot.props && slot.props['data-tab-name'] === tabName\n return this.$slots.default().findIndex(isWanted) === this.activeIndex\n }\n },\n settingsModalVisible () {\n return this.settingsModalState === 'visible'\n },\n ...mapState({\n settingsModalState: state => state.interface.settingsModalState\n })\n },\n beforeUpdate () {\n const currentSlot = this.slots()[this.active]\n if (!currentSlot.props) {\n this.active = findFirstUsable(this.slots())\n }\n },\n methods: {\n clickTab (index) {\n return (e) => {\n e.preventDefault()\n this.setTab(index)\n }\n },\n // DO NOT put it to computed, it doesn't work (caching?)\n slots () {\n if (this.$slots.default()[0].type === Fragment) {\n return this.$slots.default()[0].children\n }\n return this.$slots.default()\n },\n setTab (index) {\n if (typeof this.onSwitch === 'function') {\n this.onSwitch.call(null, this.slots()[index].key)\n }\n this.active = index\n if (this.scrollableTabs) {\n this.$refs.contents.scrollTop = 0\n }\n }\n },\n render () {\n const tabs = this.slots()\n .map((slot, index) => {\n const props = slot.props\n if (!props) return\n const classesTab = ['tab', 'button-default']\n const classesWrapper = ['tab-wrapper']\n if (this.activeIndex === index) {\n classesTab.push('active')\n classesWrapper.push('active')\n }\n if (props.image) {\n return (\n <div class={classesWrapper.join(' ')}>\n <button\n disabled={props.disabled}\n onClick={this.clickTab(index)}\n class={classesTab.join(' ')}\n type=\"button\"\n >\n <img src={props.image} title={props['image-tooltip']}/>\n {props.label ? '' : props.label}\n </button>\n </div>\n )\n }\n return (\n <div class={classesWrapper.join(' ')}>\n <button\n disabled={props.disabled}\n onClick={this.clickTab(index)}\n class={classesTab.join(' ')}\n type=\"button\"\n >\n {!props.icon ? '' : (<FAIcon class=\"tab-icon\" size=\"2x\" fixed-width icon={props.icon}/>)}\n <span class=\"text\">\n {props.label}\n </span>\n </button>\n </div>\n )\n })\n\n const contents = this.slots().map((slot, index) => {\n const props = slot.props\n if (!props) return\n const active = this.activeIndex === index\n const classes = [ active ? 'active' : 'hidden' ]\n if (props.fullHeight) {\n classes.push('full-height')\n }\n const renderSlot = (!this.renderOnlyFocused || active)\n ? slot\n : ''\n\n return (\n <div class={classes}>\n {\n this.sideTabBar\n ? <h1 class=\"mobile-label\">{props.label}</h1>\n : ''\n }\n {renderSlot}\n </div>\n )\n })\n\n return (\n <div class={'tab-switcher ' + (this.sideTabBar ? 'side-tabs' : 'top-tabs')}>\n <div class=\"tabs\">\n {tabs}\n </div>\n <div\n ref=\"contents\"\n class={'contents' + (this.scrollableTabs ? ' scrollable-tabs' : '')}\n v-body-scroll-lock={this.bodyScrollLock}\n >\n {contents}\n </div>\n </div>\n )\n }\n}\n","\nconst languages = [\n 'ar',\n 'ca',\n 'cs',\n 'de',\n 'eo',\n 'en',\n 'es',\n 'et',\n 'eu',\n 'fi',\n 'fr',\n 'ga',\n 'he',\n 'hu',\n 'it',\n 'ja',\n 'ja_easy',\n 'ko',\n 'nb',\n 'nl',\n 'oc',\n 'pl',\n 'pt',\n 'ro',\n 'ru',\n 'sk',\n 'te',\n 'uk',\n 'zh',\n 'zh_Hant'\n]\n\nconst specialJsonName = {\n ja: 'ja_pedantic'\n}\n\nconst langCodeToJsonName = (code) => specialJsonName[code] || code\n\nconst langCodeToCldrName = (code) => code\n\nconst ensureFinalFallback = codes => {\n const codeList = Array.isArray(codes) ? codes : [codes]\n return codeList.includes('en') ? codeList : codeList.concat(['en'])\n}\n\nmodule.exports = {\n languages,\n langCodeToJsonName,\n langCodeToCldrName,\n ensureFinalFallback\n}\n","// When contributing, please sort JSON before committing so it would be easier to see what's missing and what's being added compared to English and other languages. It's not obligatory, but just an advice.\n// To sort json use jq https://stedolan.github.io/jq and invoke it like `jq -S . xx.json > xx.sorted.json`, AFAIK, there's no inplace edit option like in sed\n// Also, when adding a new language to \"messages\" variable, please do it alphabetically by language code so that users can search or check their custom language easily.\n\n// For anyone contributing to old huge messages.js and in need to quickly convert it to JSON\n// sed command for converting currently formatted JS to JSON:\n// sed -i -e \"s/'//gm\" -e 's/\"/\\\\\"/gm' -re 's/^( +)(.+?): ((.+?))?(,?)(\\{?)$/\\1\"\\2\": \"\\4\"/gm' -e 's/\\\"\\{\\\"/{/g' -e 's/,\"$/\",/g' file.json\n// There's only problem that apostrophe character ' gets replaced by \\\\ so you have to fix it manually, sorry.\n\nimport { isEqual } from 'lodash'\nimport { languages, langCodeToJsonName } from './languages.js'\n\nconst ULTIMATE_FALLBACK_LOCALE = 'en'\n\nconst hasLanguageFile = (code) => languages.includes(code)\n\nconst loadLanguageFile = (code) => {\n return import(\n /* webpackInclude: /\\.json$/ */\n /* webpackChunkName: \"i18n/[request]\" */\n `./${langCodeToJsonName(code)}.json`\n )\n}\n\nconst messages = {\n languages,\n default: {\n en: require('./en.json').default\n },\n setLanguage: async (i18n, language) => {\n const languages = (Array.isArray(language) ? language : [language]).filter(k => k)\n\n if (!languages.includes(ULTIMATE_FALLBACK_LOCALE)) {\n languages.push(ULTIMATE_FALLBACK_LOCALE)\n }\n const [first, ...rest] = languages\n\n if (first === i18n.locale && isEqual(rest, i18n.fallbackLocale)) {\n return\n }\n\n for (const lang of languages) {\n if (hasLanguageFile(lang)) {\n const messages = await loadLanguageFile(lang)\n i18n.setLocaleMessage(lang, messages.default)\n }\n }\n\n i18n.fallbackLocale = rest\n i18n.locale = first\n }\n}\n\nexport default messages\n","import EventTargetPolyfill from '@ungap/event-target'\n\ntry {\n /* eslint-disable no-new */\n new EventTarget()\n /* eslint-enable no-new */\n} catch (e) {\n window.EventTarget = EventTargetPolyfill\n}\n","const defaultState = {\n settingsModalState: 'hidden',\n settingsModalLoaded: false,\n settingsModalTargetTab: null,\n settings: {\n currentSaveStateNotice: null,\n noticeClearTimeout: null,\n notificationPermission: null\n },\n browserSupport: {\n cssFilter: window.CSS && window.CSS.supports && (\n window.CSS.supports('filter', 'drop-shadow(0 0)') ||\n window.CSS.supports('-webkit-filter', 'drop-shadow(0 0)')\n )\n },\n layoutType: 'normal',\n globalNotices: [],\n layoutHeight: 0,\n lastTimeline: null\n}\n\nconst interfaceMod = {\n state: defaultState,\n mutations: {\n settingsSaved (state, { success, error }) {\n if (success) {\n if (state.noticeClearTimeout) {\n clearTimeout(state.noticeClearTimeout)\n }\n state.settings.currentSaveStateNotice = { error: false, data: success }\n state.settings.noticeClearTimeout = setTimeout(() => delete state.settings.currentSaveStateNotice, 2000)\n } else {\n state.settings.currentSaveStateNotice = { error: true, errorData: error }\n }\n },\n setNotificationPermission (state, permission) {\n state.notificationPermission = permission\n },\n setLayoutType (state, value) {\n state.layoutType = value\n },\n closeSettingsModal (state) {\n state.settingsModalState = 'hidden'\n },\n togglePeekSettingsModal (state) {\n switch (state.settingsModalState) {\n case 'minimized':\n state.settingsModalState = 'visible'\n return\n case 'visible':\n state.settingsModalState = 'minimized'\n return\n default:\n throw new Error('Illegal minimization state of settings modal')\n }\n },\n openSettingsModal (state) {\n state.settingsModalState = 'visible'\n if (!state.settingsModalLoaded) {\n state.settingsModalLoaded = true\n }\n },\n setSettingsModalTargetTab (state, value) {\n state.settingsModalTargetTab = value\n },\n pushGlobalNotice (state, notice) {\n state.globalNotices.push(notice)\n },\n removeGlobalNotice (state, notice) {\n state.globalNotices = state.globalNotices.filter(n => n !== notice)\n },\n setLayoutHeight (state, value) {\n state.layoutHeight = value\n },\n setLayoutWidth (state, value) {\n state.layoutWidth = value\n },\n setLastTimeline (state, value) {\n state.lastTimeline = value\n }\n },\n actions: {\n setPageTitle ({ rootState }, option = '') {\n document.title = `${option} ${rootState.instance.name}`\n },\n settingsSaved ({ commit, dispatch }, { success, error }) {\n commit('settingsSaved', { success, error })\n },\n setNotificationPermission ({ commit }, permission) {\n commit('setNotificationPermission', permission)\n },\n closeSettingsModal ({ commit }) {\n commit('closeSettingsModal')\n },\n openSettingsModal ({ commit }) {\n commit('openSettingsModal')\n },\n togglePeekSettingsModal ({ commit }) {\n commit('togglePeekSettingsModal')\n },\n clearSettingsModalTargetTab ({ commit }) {\n commit('setSettingsModalTargetTab', null)\n },\n openSettingsModalTab ({ commit }, value) {\n commit('setSettingsModalTargetTab', value)\n commit('openSettingsModal')\n },\n pushGlobalNotice (\n { commit, dispatch, state },\n {\n messageKey,\n messageArgs = {},\n level = 'error',\n timeout = 0\n }) {\n const notice = {\n messageKey,\n messageArgs,\n level\n }\n commit('pushGlobalNotice', notice)\n // Adding a new element to array wraps it in a Proxy, which breaks the comparison\n // TODO: Generate UUID or something instead or relying on !== operator?\n const newNotice = state.globalNotices[state.globalNotices.length - 1]\n if (timeout) {\n setTimeout(() => dispatch('removeGlobalNotice', newNotice), timeout)\n }\n return newNotice\n },\n removeGlobalNotice ({ commit }, notice) {\n commit('removeGlobalNotice', notice)\n },\n setLayoutHeight ({ commit }, value) {\n commit('setLayoutHeight', value)\n },\n // value is optional, assuming it was cached prior\n setLayoutWidth ({ commit, state, rootGetters, rootState }, value) {\n let width = value\n if (value !== undefined) {\n commit('setLayoutWidth', value)\n } else {\n width = state.layoutWidth\n }\n const mobileLayout = width <= 800\n const normalOrMobile = mobileLayout ? 'mobile' : 'normal'\n const { thirdColumnMode } = rootGetters.mergedConfig\n if (thirdColumnMode === 'none' || !rootState.users.currentUser) {\n commit('setLayoutType', normalOrMobile)\n } else {\n const wideLayout = width >= 1300\n commit('setLayoutType', wideLayout ? 'wide' : normalOrMobile)\n }\n },\n setLastTimeline ({ commit }, value) {\n commit('setLastTimeline', value)\n }\n }\n}\n\nexport default interfaceMod\n","import { getPreset, applyTheme } from '../services/style_setter/style_setter.js'\nimport { CURRENT_VERSION } from '../services/theme_data/theme_data.service.js'\nimport apiService from '../services/api/api.service.js'\nimport { instanceDefaultProperties } from './config.js'\nimport { langCodeToCldrName, ensureFinalFallback } from '../i18n/languages.js'\n\nconst SORTED_EMOJI_GROUP_IDS = [\n 'smileys-and-emotion',\n 'people-and-body',\n 'animals-and-nature',\n 'food-and-drink',\n 'travel-and-places',\n 'activities',\n 'objects',\n 'symbols',\n 'flags'\n]\n\nconst REGIONAL_INDICATORS = (() => {\n const start = 0x1F1E6\n const end = 0x1F1FF\n const A = 'A'.codePointAt(0)\n const res = new Array(end - start + 1)\n for (let i = start; i <= end; ++i) {\n const letter = String.fromCodePoint(A + i - start)\n res[i - start] = {\n replacement: String.fromCodePoint(i),\n imageUrl: false,\n displayText: 'regional_indicator_' + letter,\n displayTextI18n: {\n key: 'emoji.regional_indicator',\n args: { letter }\n }\n }\n }\n return res\n})()\n\nconst REMOTE_INTERACTION_URL = '/main/ostatus'\n\nconst defaultState = {\n // Stuff from apiConfig\n name: 'Pleroma FE',\n registrationOpen: true,\n server: 'http://localhost:4040/',\n textlimit: 5000,\n themeData: undefined,\n vapidPublicKey: undefined,\n\n // Stuff from static/config.json\n alwaysShowSubjectInput: true,\n defaultAvatar: '/images/avi.png',\n defaultBanner: '/images/banner.png',\n background: '/static/aurora_borealis.jpg',\n collapseMessageWithSubject: false,\n greentext: false,\n useAtIcon: false,\n mentionLinkDisplay: 'short',\n mentionLinkShowTooltip: true,\n mentionLinkShowAvatar: false,\n mentionLinkFadeDomain: true,\n mentionLinkShowYous: false,\n mentionLinkBoldenYou: true,\n hideFilteredStatuses: false,\n // bad name: actually hides posts of muted USERS\n hideMutedPosts: false,\n hideMutedThreads: true,\n hideWordFilteredPosts: false,\n hidePostStats: false,\n hideBotIndication: false,\n hideSitename: false,\n hideUserStats: false,\n muteBotStatuses: false,\n modalOnRepeat: false,\n modalOnUnfollow: false,\n modalOnBlock: true,\n modalOnMute: false,\n modalOnDelete: true,\n modalOnLogout: true,\n modalOnApproveFollow: false,\n modalOnDenyFollow: false,\n modalOnRemoveUserFromFollowers: false,\n loginMethod: 'password',\n logo: '/static/logo.svg',\n logoMargin: '.2em',\n logoMask: true,\n logoLeft: false,\n disableUpdateNotification: false,\n minimalScopesMode: false,\n nsfwCensorImage: undefined,\n postContentType: 'text/plain',\n redirectRootLogin: '/main/friends',\n redirectRootNoLogin: '/main/all',\n scopeCopy: true,\n showFeaturesPanel: true,\n showInstanceSpecificPanel: false,\n sidebarRight: false,\n subjectLineBehavior: 'email',\n theme: 'pleroma-dark',\n virtualScrolling: true,\n sensitiveByDefault: false,\n conversationDisplay: 'linear',\n conversationTreeAdvanced: false,\n conversationOtherRepliesButton: 'below',\n conversationTreeFadeAncestors: false,\n maxDepthInThread: 6,\n\n // Nasty stuff\n customEmoji: [],\n customEmojiFetched: false,\n emoji: {},\n emojiFetched: false,\n unicodeEmojiAnnotations: {},\n pleromaBackend: true,\n postFormats: [],\n restrictedNicknames: [],\n safeDM: true,\n knownDomains: [],\n birthdayRequired: false,\n birthdayMinAge: 0,\n\n // Feature-set, apparently, not everything here is reported...\n shoutAvailable: false,\n pleromaChatMessagesAvailable: false,\n gopherAvailable: false,\n mediaProxyAvailable: false,\n suggestionsEnabled: false,\n suggestionsWeb: '',\n\n // Html stuff\n instanceSpecificPanelContent: '',\n tos: '',\n\n // Version Information\n backendVersion: '',\n frontendVersion: '',\n\n pollsAvailable: false,\n pollLimits: {\n max_options: 4,\n max_option_chars: 255,\n min_expiration: 60,\n max_expiration: 60 * 60 * 24\n }\n}\n\nconst loadAnnotations = (lang) => {\n return import(\n /* webpackChunkName: \"emoji-annotations/[request]\" */\n `@kazvmoe-infra/unicode-emoji-json/annotations/${langCodeToCldrName(lang)}.json`\n )\n .then(k => k.default)\n}\n\nconst injectAnnotations = (emoji, annotations) => {\n const availableLangs = Object.keys(annotations)\n\n return {\n ...emoji,\n annotations: availableLangs.reduce((acc, cur) => {\n acc[cur] = annotations[cur][emoji.replacement]\n return acc\n }, {})\n }\n}\n\nconst injectRegionalIndicators = groups => {\n groups.symbols.push(...REGIONAL_INDICATORS)\n return groups\n}\n\nconst instance = {\n state: defaultState,\n mutations: {\n setInstanceOption (state, { name, value }) {\n if (typeof value !== 'undefined') {\n state[name] = value\n }\n },\n setKnownDomains (state, domains) {\n state.knownDomains = domains\n },\n setUnicodeEmojiAnnotations (state, { lang, annotations }) {\n state.unicodeEmojiAnnotations[lang] = annotations\n }\n },\n getters: {\n instanceDefaultConfig (state) {\n return instanceDefaultProperties\n .map(key => [key, state[key]])\n .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {})\n },\n groupedCustomEmojis (state) {\n const packsOf = emoji => {\n const packs = emoji.tags\n .filter(k => k.startsWith('pack:'))\n .map(k => {\n const packName = k.slice(5) // remove 'pack:' prefix\n return {\n id: `custom-${packName}`,\n text: packName\n }\n })\n\n if (!packs.length) {\n return [{\n id: 'unpacked'\n }]\n } else {\n return packs\n }\n }\n\n return state.customEmoji\n .reduce((res, emoji) => {\n packsOf(emoji).forEach(({ id: packId, text: packName }) => {\n if (!res[packId]) {\n res[packId] = ({\n id: packId,\n text: packName,\n image: emoji.imageUrl,\n emojis: []\n })\n }\n res[packId].emojis.push(emoji)\n })\n return res\n }, {})\n },\n standardEmojiList (state) {\n return SORTED_EMOJI_GROUP_IDS\n .map(groupId => (state.emoji[groupId] || []).map(k => injectAnnotations(k, state.unicodeEmojiAnnotations)))\n .reduce((a, b) => a.concat(b), [])\n },\n standardEmojiGroupList (state) {\n return SORTED_EMOJI_GROUP_IDS.map(groupId => ({\n id: groupId,\n emojis: (state.emoji[groupId] || []).map(k => injectAnnotations(k, state.unicodeEmojiAnnotations))\n }))\n },\n instanceDomain (state) {\n return new URL(state.server).hostname\n },\n remoteInteractionLink (state) {\n const server = state.server.endsWith('/') ? state.server.slice(0, -1) : state.server\n const link = server + REMOTE_INTERACTION_URL\n\n return ({ statusId, nickname }) => {\n if (statusId) {\n return `${link}?status_id=${statusId}`\n } else {\n return `${link}?nickname=${nickname}`\n }\n }\n }\n },\n actions: {\n setInstanceOption ({ commit, dispatch }, { name, value }) {\n commit('setInstanceOption', { name, value })\n switch (name) {\n case 'name':\n dispatch('setPageTitle')\n break\n case 'shoutAvailable':\n if (value) {\n dispatch('initializeSocket')\n }\n break\n case 'theme':\n dispatch('setTheme', value)\n break\n }\n },\n async getStaticEmoji ({ commit }) {\n try {\n const values = (await import(/* webpackChunkName: 'emoji' */ '../../static/emoji.json')).default\n\n const emoji = Object.keys(values).reduce((res, groupId) => {\n res[groupId] = values[groupId].map(e => ({\n displayText: e.slug,\n imageUrl: false,\n replacement: e.emoji\n }))\n return res\n }, {})\n commit('setInstanceOption', { name: 'emoji', value: injectRegionalIndicators(emoji) })\n } catch (e) {\n console.warn(\"Can't load static emoji\")\n console.warn(e)\n }\n },\n\n loadUnicodeEmojiData ({ commit, state }, language) {\n const langList = ensureFinalFallback(language)\n\n return Promise.all(\n langList\n .map(async lang => {\n if (!state.unicodeEmojiAnnotations[lang]) {\n try {\n const annotations = await loadAnnotations(lang)\n commit('setUnicodeEmojiAnnotations', { lang, annotations })\n } catch (e) {\n console.warn(`Error loading unicode emoji annotations for ${lang}: `, e)\n // ignore\n }\n }\n }))\n },\n\n async getCustomEmoji ({ commit, state }) {\n try {\n const res = await window.fetch('/api/pleroma/emoji.json')\n if (res.ok) {\n const result = await res.json()\n const values = Array.isArray(result) ? Object.assign({}, ...result) : result\n const caseInsensitiveStrCmp = (a, b) => {\n const la = a.toLowerCase()\n const lb = b.toLowerCase()\n return la > lb ? 1 : (la < lb ? -1 : 0)\n }\n const noPackLast = (a, b) => {\n const aNull = a === ''\n const bNull = b === ''\n if (aNull === bNull) {\n return 0\n } else if (aNull && !bNull) {\n return 1\n } else {\n return -1\n }\n }\n const byPackThenByName = (a, b) => {\n const packOf = emoji => (emoji.tags.filter(k => k.startsWith('pack:'))[0] || '').slice(5)\n const packOfA = packOf(a)\n const packOfB = packOf(b)\n return noPackLast(packOfA, packOfB) || caseInsensitiveStrCmp(packOfA, packOfB) || caseInsensitiveStrCmp(a.displayText, b.displayText)\n }\n\n const emoji = Object.entries(values).map(([key, value]) => {\n const imageUrl = value.image_url\n return {\n displayText: key,\n imageUrl: imageUrl ? state.server + imageUrl : value,\n tags: imageUrl ? value.tags.sort((a, b) => a > b ? 1 : 0) : ['utf'],\n replacement: `:${key}: `\n }\n // Technically could use tags but those are kinda useless right now,\n // should have been \"pack\" field, that would be more useful\n }).sort(byPackThenByName)\n commit('setInstanceOption', { name: 'customEmoji', value: emoji })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load custom emojis\")\n console.warn(e)\n }\n },\n\n setTheme ({ commit, rootState }, themeName) {\n commit('setInstanceOption', { name: 'theme', value: themeName })\n getPreset(themeName)\n .then(themeData => {\n commit('setInstanceOption', { name: 'themeData', value: themeData })\n // No need to apply theme if there's user theme already\n const { customTheme } = rootState.config\n if (customTheme) return\n\n // New theme presets don't have 'theme' property, they use 'source'\n const themeSource = themeData.source\n if (!themeData.theme || (themeSource && themeSource.themeEngineVersion === CURRENT_VERSION)) {\n applyTheme(themeSource)\n } else {\n applyTheme(themeData.theme)\n }\n })\n },\n fetchEmoji ({ dispatch, state }) {\n if (!state.customEmojiFetched) {\n state.customEmojiFetched = true\n dispatch('getCustomEmoji')\n }\n if (!state.emojiFetched) {\n state.emojiFetched = true\n dispatch('getStaticEmoji')\n }\n },\n\n async getKnownDomains ({ commit, rootState }) {\n try {\n const result = await apiService.fetchKnownDomains({\n credentials: rootState.users.currentUser.credentials\n })\n commit('setKnownDomains', result)\n } catch (e) {\n console.warn(\"Can't load known domains\")\n console.warn(e)\n }\n }\n }\n}\n\nexport default instance\n","import {\n remove,\n slice,\n each,\n findIndex,\n find,\n maxBy,\n minBy,\n merge,\n first,\n last,\n isArray,\n omitBy\n} from 'lodash'\nimport {\n isStatusNotification,\n isValidNotification,\n maybeShowNotification\n} from '../services/notification_utils/notification_utils.js'\nimport apiService from '../services/api/api.service.js'\n\nconst emptyTl = (userId = 0) => ({\n statuses: [],\n statusesObject: {},\n faves: [],\n visibleStatuses: [],\n visibleStatusesObject: {},\n newStatusCount: 0,\n maxId: 0,\n minId: 0,\n minVisibleId: 0,\n loading: false,\n followers: [],\n friends: [],\n userId,\n flushMarker: 0\n})\n\nconst emptyNotifications = () => ({\n desktopNotificationSilence: true,\n maxId: 0,\n minId: Number.POSITIVE_INFINITY,\n data: [],\n idStore: {},\n loading: false\n})\n\nexport const defaultState = () => ({\n allStatuses: [],\n allStatusesObject: {},\n conversationsObject: {},\n maxId: 0,\n notifications: emptyNotifications(),\n favorites: new Set(),\n timelines: {\n mentions: emptyTl(),\n public: emptyTl(),\n user: emptyTl(),\n favorites: emptyTl(),\n media: emptyTl(),\n publicAndExternal: emptyTl(),\n friends: emptyTl(),\n tag: emptyTl(),\n dms: emptyTl(),\n bookmarks: emptyTl(),\n list: emptyTl()\n }\n})\n\nexport const prepareStatus = (status) => {\n // Set deleted flag\n status.deleted = false\n\n // To make the array reactive\n status.attachments = status.attachments || []\n\n return status\n}\n\nconst mergeOrAdd = (arr, obj, item) => {\n const oldItem = obj[item.id]\n\n if (oldItem) {\n // We already have this, so only merge the new info.\n // We ignore null values to avoid overwriting existing properties with missing data\n // we also skip 'user' because that is handled by users module\n merge(oldItem, omitBy(item, (v, k) => v === null || k === 'user'))\n // Reactivity fix.\n oldItem.attachments.splice(oldItem.attachments.length)\n return { item: oldItem, new: false }\n } else {\n // This is a new item, prepare it\n prepareStatus(item)\n arr.push(item)\n obj[item.id] = item\n return { item, new: true }\n }\n}\n\nconst sortById = (a, b) => {\n const seqA = Number(a.id)\n const seqB = Number(b.id)\n const isSeqA = !Number.isNaN(seqA)\n const isSeqB = !Number.isNaN(seqB)\n if (isSeqA && isSeqB) {\n return seqA > seqB ? -1 : 1\n } else if (isSeqA && !isSeqB) {\n return 1\n } else if (!isSeqA && isSeqB) {\n return -1\n } else {\n return a.id > b.id ? -1 : 1\n }\n}\n\nconst sortTimeline = (timeline) => {\n timeline.visibleStatuses = timeline.visibleStatuses.sort(sortById)\n timeline.statuses = timeline.statuses.sort(sortById)\n timeline.minVisibleId = (last(timeline.visibleStatuses) || {}).id\n return timeline\n}\n\n// Add status to the global storages (arrays and objects maintaining statuses) except timelines\nconst addStatusToGlobalStorage = (state, data) => {\n const result = mergeOrAdd(state.allStatuses, state.allStatusesObject, data)\n if (result.new) {\n // Add to conversation\n const status = result.item\n const conversationsObject = state.conversationsObject\n const conversationId = status.statusnet_conversation_id\n if (conversationsObject[conversationId]) {\n conversationsObject[conversationId].push(status)\n } else {\n conversationsObject[conversationId] = [status]\n }\n }\n return result\n}\n\n// Remove status from the global storages (arrays and objects maintaining statuses) except timelines\nconst removeStatusFromGlobalStorage = (state, status) => {\n remove(state.allStatuses, { id: status.id })\n\n // TODO: Need to remove from allStatusesObject?\n\n // Remove possible notification\n remove(state.notifications.data, ({ action: { id } }) => id === status.id)\n\n // Remove from conversation\n const conversationId = status.statusnet_conversation_id\n if (state.conversationsObject[conversationId]) {\n remove(state.conversationsObject[conversationId], { id: status.id })\n }\n}\n\nconst addNewStatuses = (state, { statuses, showImmediately = false, timeline, user = {}, noIdUpdate = false, userId, pagination = {} }) => {\n // Sanity check\n if (!isArray(statuses)) {\n return false\n }\n\n const allStatuses = state.allStatuses\n const timelineObject = state.timelines[timeline]\n\n // Mismatch between API pagination and our internal minId/maxId tracking systems:\n // pagination.maxId is the oldest of the returned statuses when fetching older,\n // and pagination.minId is the newest when fetching newer. The names come directly\n // from the arguments they're supposed to be passed as for the next fetch.\n const minNew = pagination.maxId || (statuses.length > 0 ? minBy(statuses, 'id').id : 0)\n const maxNew = pagination.minId || (statuses.length > 0 ? maxBy(statuses, 'id').id : 0)\n\n const newer = timeline && (maxNew > timelineObject.maxId || timelineObject.maxId === 0) && statuses.length > 0\n const older = timeline && (minNew < timelineObject.minId || timelineObject.minId === 0) && statuses.length > 0\n\n if (!noIdUpdate && newer) {\n timelineObject.maxId = maxNew\n }\n if (!noIdUpdate && older) {\n timelineObject.minId = minNew\n }\n\n // This makes sure that user timeline won't get data meant for other\n // user. I.e. opening different user profiles makes request which could\n // return data late after user already viewing different user profile\n if ((timeline === 'user' || timeline === 'media') && timelineObject.userId !== userId) {\n return\n }\n\n const addStatus = (data, showImmediately, addToTimeline = true) => {\n const result = addStatusToGlobalStorage(state, data)\n const status = result.item\n\n if (result.new) {\n // We are mentioned in a post\n if (status.type === 'status' && find(status.attentions, { id: user.id })) {\n const mentions = state.timelines.mentions\n\n // Add the mention to the mentions timeline\n if (timelineObject !== mentions) {\n mergeOrAdd(mentions.statuses, mentions.statusesObject, status)\n mentions.newStatusCount += 1\n\n sortTimeline(mentions)\n }\n }\n if (status.visibility === 'direct') {\n const dms = state.timelines.dms\n\n mergeOrAdd(dms.statuses, dms.statusesObject, status)\n dms.newStatusCount += 1\n\n sortTimeline(dms)\n }\n }\n\n // Decide if we should treat the status as new for this timeline.\n let resultForCurrentTimeline\n // Some statuses should only be added to the global status repository.\n if (timeline && addToTimeline) {\n resultForCurrentTimeline = mergeOrAdd(timelineObject.statuses, timelineObject.statusesObject, status)\n }\n\n if (timeline && showImmediately) {\n // Add it directly to the visibleStatuses, don't change\n // newStatusCount\n mergeOrAdd(timelineObject.visibleStatuses, timelineObject.visibleStatusesObject, status)\n } else if (timeline && addToTimeline && resultForCurrentTimeline.new) {\n // Just change newStatuscount\n timelineObject.newStatusCount += 1\n }\n\n return status\n }\n\n const favoriteStatus = (favorite, counter) => {\n const status = find(allStatuses, { id: favorite.in_reply_to_status_id })\n if (status) {\n // This is our favorite, so the relevant bit.\n if (favorite.user.id === user.id) {\n status.favorited = true\n } else {\n status.fave_num += 1\n }\n }\n return status\n }\n\n const processors = {\n status: (status) => {\n addStatus(status, showImmediately)\n },\n edit: (status) => {\n addStatus(status, showImmediately)\n },\n retweet: (status) => {\n // RetweetedStatuses are never shown immediately\n const retweetedStatus = addStatus(status.retweeted_status, false, false)\n\n let retweet\n // If the retweeted status is already there, don't add the retweet\n // to the timeline.\n if (timeline && find(timelineObject.statuses, (s) => {\n if (s.retweeted_status) {\n return s.id === retweetedStatus.id || s.retweeted_status.id === retweetedStatus.id\n } else {\n return s.id === retweetedStatus.id\n }\n })) {\n // Already have it visible (either as the original or another RT), don't add to timeline, don't show.\n retweet = addStatus(status, false, false)\n } else {\n retweet = addStatus(status, showImmediately)\n }\n\n retweet.retweeted_status = retweetedStatus\n },\n favorite: (favorite) => {\n // Only update if this is a new favorite.\n // Ignore our own favorites because we get info about likes as response to like request\n if (!state.favorites.has(favorite.id)) {\n state.favorites.add(favorite.id)\n favoriteStatus(favorite)\n }\n },\n deletion: (deletion) => {\n const uri = deletion.uri\n const status = find(allStatuses, { uri })\n if (!status) {\n return\n }\n\n removeStatusFromGlobalStorage(state, status)\n\n if (timeline) {\n remove(timelineObject.statuses, { uri })\n remove(timelineObject.visibleStatuses, { uri })\n }\n },\n follow: (follow) => {\n // NOOP, it is known status but we don't do anything about it for now\n },\n default: (unknown) => {\n console.log('unknown status type')\n console.log(unknown)\n }\n }\n\n each(statuses, (status) => {\n const type = status.type\n const processor = processors[type] || processors.default\n processor(status)\n })\n\n // Keep the visible statuses sorted\n if (timeline && !(timeline === 'bookmarks')) {\n sortTimeline(timelineObject)\n }\n}\n\nconst updateNotificationsMinMaxId = (state, notification) => {\n state.notifications.maxId = notification.id > state.notifications.maxId\n ? notification.id\n : state.notifications.maxId\n state.notifications.minId = notification.id < state.notifications.minId\n ? notification.id\n : state.notifications.minId\n}\n\nconst addNewNotifications = (state, { dispatch, notifications, older, visibleNotificationTypes, rootGetters, newNotificationSideEffects }) => {\n each(notifications, (notification) => {\n // If invalid notification, update ids but don't add it to store\n if (!isValidNotification(notification)) {\n console.error('Invalid notification:', notification)\n updateNotificationsMinMaxId(state, notification)\n return\n }\n\n if (isStatusNotification(notification.type)) {\n notification.action = addStatusToGlobalStorage(state, notification.action).item\n notification.status = notification.status && addStatusToGlobalStorage(state, notification.status).item\n }\n\n if (notification.type === 'pleroma:report') {\n dispatch('addReport', notification.report)\n }\n\n if (notification.type === 'pleroma:emoji_reaction') {\n dispatch('fetchEmojiReactionsBy', notification.status.id)\n }\n\n // Only add a new notification if we don't have one for the same action\n // eslint-disable-next-line no-prototype-builtins\n if (!state.notifications.idStore.hasOwnProperty(notification.id)) {\n updateNotificationsMinMaxId(state, notification)\n\n state.notifications.data.push(notification)\n state.notifications.idStore[notification.id] = notification\n\n newNotificationSideEffects(notification)\n } else if (notification.seen) {\n state.notifications.idStore[notification.id].seen = true\n }\n })\n}\n\nconst removeStatus = (state, { timeline, userId }) => {\n const timelineObject = state.timelines[timeline]\n if (userId) {\n remove(timelineObject.statuses, { user: { id: userId } })\n remove(timelineObject.visibleStatuses, { user: { id: userId } })\n timelineObject.minVisibleId = timelineObject.visibleStatuses.length > 0 ? last(timelineObject.visibleStatuses).id : 0\n timelineObject.maxId = timelineObject.statuses.length > 0 ? first(timelineObject.statuses).id : 0\n }\n}\n\nexport const mutations = {\n addNewStatuses,\n addNewNotifications,\n removeStatus,\n showNewStatuses (state, { timeline }) {\n const oldTimeline = (state.timelines[timeline])\n\n oldTimeline.newStatusCount = 0\n oldTimeline.visibleStatuses = slice(oldTimeline.statuses, 0, 50)\n oldTimeline.minVisibleId = last(oldTimeline.visibleStatuses).id\n oldTimeline.minId = oldTimeline.minVisibleId\n oldTimeline.visibleStatusesObject = {}\n each(oldTimeline.visibleStatuses, (status) => { oldTimeline.visibleStatusesObject[status.id] = status })\n },\n resetStatuses (state) {\n const emptyState = defaultState()\n Object.entries(emptyState).forEach(([key, value]) => {\n state[key] = value\n })\n },\n clearTimeline (state, { timeline, excludeUserId = false }) {\n const userId = excludeUserId ? state.timelines[timeline].userId : undefined\n state.timelines[timeline] = emptyTl(userId)\n },\n clearNotifications (state) {\n state.notifications = emptyNotifications()\n },\n setFavorited (state, { status, value }) {\n const newStatus = state.allStatusesObject[status.id]\n\n if (newStatus.favorited !== value) {\n if (value) {\n newStatus.fave_num++\n } else {\n newStatus.fave_num--\n }\n }\n\n newStatus.favorited = value\n },\n setFavoritedConfirm (state, { status, user }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.favorited = status.favorited\n newStatus.fave_num = status.fave_num\n const index = findIndex(newStatus.favoritedBy, { id: user.id })\n if (index !== -1 && !newStatus.favorited) {\n newStatus.favoritedBy.splice(index, 1)\n } else if (index === -1 && newStatus.favorited) {\n newStatus.favoritedBy.push(user)\n }\n },\n setMutedStatus (state, status) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.thread_muted = status.thread_muted\n\n if (newStatus.thread_muted !== undefined) {\n state.conversationsObject[newStatus.statusnet_conversation_id].forEach(status => { status.thread_muted = newStatus.thread_muted })\n }\n },\n setRetweeted (state, { status, value }) {\n const newStatus = state.allStatusesObject[status.id]\n\n if (newStatus.repeated !== value) {\n if (value) {\n newStatus.repeat_num++\n } else {\n newStatus.repeat_num--\n }\n }\n\n newStatus.repeated = value\n },\n setRetweetedConfirm (state, { status, user }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.repeated = status.repeated\n newStatus.repeat_num = status.repeat_num\n const index = findIndex(newStatus.rebloggedBy, { id: user.id })\n if (index !== -1 && !newStatus.repeated) {\n newStatus.rebloggedBy.splice(index, 1)\n } else if (index === -1 && newStatus.repeated) {\n newStatus.rebloggedBy.push(user)\n }\n },\n setBookmarked (state, { status, value }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.bookmarked = value\n },\n setBookmarkedConfirm (state, { status }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.bookmarked = status.bookmarked\n },\n setDeleted (state, { status }) {\n const newStatus = state.allStatusesObject[status.id]\n if (newStatus) newStatus.deleted = true\n },\n setManyDeleted (state, condition) {\n Object.values(state.allStatusesObject).forEach(status => {\n if (condition(status)) {\n status.deleted = true\n }\n })\n },\n setLoading (state, { timeline, value }) {\n state.timelines[timeline].loading = value\n },\n setNsfw (state, { id, nsfw }) {\n const newStatus = state.allStatusesObject[id]\n newStatus.nsfw = nsfw\n },\n setNotificationsLoading (state, { value }) {\n state.notifications.loading = value\n },\n setNotificationsSilence (state, { value }) {\n state.notifications.desktopNotificationSilence = value\n },\n markNotificationsAsSeen (state) {\n each(state.notifications.data, (notification) => {\n notification.seen = true\n })\n },\n markSingleNotificationAsSeen (state, { id }) {\n const notification = find(state.notifications.data, n => n.id === id)\n if (notification) notification.seen = true\n },\n dismissNotification (state, { id }) {\n state.notifications.data = state.notifications.data.filter(n => n.id !== id)\n },\n dismissNotifications (state, { finder }) {\n state.notifications.data = state.notifications.data.filter(n => finder)\n },\n updateNotification (state, { id, updater }) {\n const notification = find(state.notifications.data, n => n.id === id)\n notification && updater(notification)\n },\n queueFlush (state, { timeline, id }) {\n state.timelines[timeline].flushMarker = id\n },\n queueFlushAll (state) {\n Object.keys(state.timelines).forEach((timeline) => {\n state.timelines[timeline].flushMarker = state.timelines[timeline].maxId\n })\n },\n addRepeats (state, { id, rebloggedByUsers, currentUser }) {\n const newStatus = state.allStatusesObject[id]\n newStatus.rebloggedBy = rebloggedByUsers.filter(_ => _)\n // repeats stats can be incorrect based on polling condition, let's update them using the most recent data\n newStatus.repeat_num = newStatus.rebloggedBy.length\n newStatus.repeated = !!newStatus.rebloggedBy.find(({ id }) => currentUser.id === id)\n },\n addFavs (state, { id, favoritedByUsers, currentUser }) {\n const newStatus = state.allStatusesObject[id]\n newStatus.favoritedBy = favoritedByUsers.filter(_ => _)\n // favorites stats can be incorrect based on polling condition, let's update them using the most recent data\n newStatus.fave_num = newStatus.favoritedBy.length\n newStatus.favorited = !!newStatus.favoritedBy.find(({ id }) => currentUser.id === id)\n },\n addEmojiReactionsBy (state, { id, emojiReactions, currentUser }) {\n const status = state.allStatusesObject[id]\n status.emoji_reactions = emojiReactions\n },\n addOwnReaction (state, { id, emoji, currentUser }) {\n const status = state.allStatusesObject[id]\n const reactionIndex = findIndex(status.emoji_reactions, { name: emoji })\n const reaction = status.emoji_reactions[reactionIndex] || { name: emoji, count: 0, accounts: [] }\n\n const newReaction = {\n ...reaction,\n count: reaction.count + 1,\n me: true,\n accounts: [\n ...reaction.accounts,\n currentUser\n ]\n }\n\n // Update count of existing reaction if it exists, otherwise append at the end\n if (reactionIndex >= 0) {\n status.emoji_reactions[reactionIndex] = newReaction\n } else {\n status.emoji_reactions = [...status.emoji_reactions, newReaction]\n }\n },\n removeOwnReaction (state, { id, emoji, currentUser }) {\n const status = state.allStatusesObject[id]\n const reactionIndex = findIndex(status.emoji_reactions, { name: emoji })\n if (reactionIndex < 0) return\n\n const reaction = status.emoji_reactions[reactionIndex]\n const accounts = reaction.accounts || []\n\n const newReaction = {\n ...reaction,\n count: reaction.count - 1,\n me: false,\n accounts: accounts.filter(acc => acc.id !== currentUser.id)\n }\n\n if (newReaction.count > 0) {\n status.emoji_reactions[reactionIndex] = newReaction\n } else {\n status.emoji_reactions = status.emoji_reactions.filter(r => r.name !== emoji)\n }\n },\n updateStatusWithPoll (state, { id, poll }) {\n const status = state.allStatusesObject[id]\n status.poll = poll\n },\n setVirtualHeight (state, { statusId, height }) {\n state.allStatusesObject[statusId].virtualHeight = height\n }\n}\n\nconst statuses = {\n state: defaultState(),\n actions: {\n addNewStatuses ({ rootState, commit }, { statuses, showImmediately = false, timeline = false, noIdUpdate = false, userId, pagination }) {\n commit('addNewStatuses', { statuses, showImmediately, timeline, noIdUpdate, user: rootState.users.currentUser, userId, pagination })\n },\n addNewNotifications (store, { notifications, older }) {\n const { commit, dispatch, rootGetters } = store\n\n const newNotificationSideEffects = (notification) => {\n maybeShowNotification(store, notification)\n }\n commit('addNewNotifications', { dispatch, notifications, older, rootGetters, newNotificationSideEffects })\n },\n setNotificationsLoading ({ rootState, commit }, { value }) {\n commit('setNotificationsLoading', { value })\n },\n setNotificationsSilence ({ rootState, commit }, { value }) {\n commit('setNotificationsSilence', { value })\n },\n fetchStatus ({ rootState, dispatch }, id) {\n return rootState.api.backendInteractor.fetchStatus({ id })\n .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n },\n fetchStatusSource ({ rootState, dispatch }, status) {\n return apiService.fetchStatusSource({ id: status.id, credentials: rootState.users.currentUser.credentials })\n },\n fetchStatusHistory ({ rootState, dispatch }, status) {\n return apiService.fetchStatusHistory({ status })\n },\n deleteStatus ({ rootState, commit }, status) {\n commit('setDeleted', { status })\n apiService.deleteStatus({ id: status.id, credentials: rootState.users.currentUser.credentials })\n },\n deleteStatusById ({ rootState, commit }, id) {\n const status = rootState.statuses.allStatusesObject[id]\n commit('setDeleted', { status })\n },\n markStatusesAsDeleted ({ commit }, condition) {\n commit('setManyDeleted', condition)\n },\n favorite ({ rootState, commit }, status) {\n // Optimistic favoriting...\n commit('setFavorited', { status, value: true })\n rootState.api.backendInteractor.favorite({ id: status.id })\n .then(status => commit('setFavoritedConfirm', { status, user: rootState.users.currentUser }))\n },\n unfavorite ({ rootState, commit }, status) {\n // Optimistic unfavoriting...\n commit('setFavorited', { status, value: false })\n rootState.api.backendInteractor.unfavorite({ id: status.id })\n .then(status => commit('setFavoritedConfirm', { status, user: rootState.users.currentUser }))\n },\n fetchPinnedStatuses ({ rootState, dispatch }, userId) {\n rootState.api.backendInteractor.fetchPinnedStatuses({ id: userId })\n .then(statuses => dispatch('addNewStatuses', { statuses, timeline: 'user', userId, showImmediately: true, noIdUpdate: true }))\n },\n pinStatus ({ rootState, dispatch }, statusId) {\n return rootState.api.backendInteractor.pinOwnStatus({ id: statusId })\n .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n },\n unpinStatus ({ rootState, dispatch }, statusId) {\n rootState.api.backendInteractor.unpinOwnStatus({ id: statusId })\n .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n },\n muteConversation ({ rootState, commit }, statusId) {\n return rootState.api.backendInteractor.muteConversation({ id: statusId })\n .then((status) => commit('setMutedStatus', status))\n },\n unmuteConversation ({ rootState, commit }, statusId) {\n return rootState.api.backendInteractor.unmuteConversation({ id: statusId })\n .then((status) => commit('setMutedStatus', status))\n },\n retweet ({ rootState, commit }, status) {\n // Optimistic retweeting...\n commit('setRetweeted', { status, value: true })\n rootState.api.backendInteractor.retweet({ id: status.id })\n .then(status => commit('setRetweetedConfirm', { status: status.retweeted_status, user: rootState.users.currentUser }))\n },\n unretweet ({ rootState, commit }, status) {\n // Optimistic unretweeting...\n commit('setRetweeted', { status, value: false })\n rootState.api.backendInteractor.unretweet({ id: status.id })\n .then(status => commit('setRetweetedConfirm', { status, user: rootState.users.currentUser }))\n },\n bookmark ({ rootState, commit }, status) {\n commit('setBookmarked', { status, value: true })\n rootState.api.backendInteractor.bookmarkStatus({ id: status.id })\n .then(status => {\n commit('setBookmarkedConfirm', { status })\n })\n },\n unbookmark ({ rootState, commit }, status) {\n commit('setBookmarked', { status, value: false })\n rootState.api.backendInteractor.unbookmarkStatus({ id: status.id })\n .then(status => {\n commit('setBookmarkedConfirm', { status })\n })\n },\n queueFlush ({ rootState, commit }, { timeline, id }) {\n commit('queueFlush', { timeline, id })\n },\n queueFlushAll ({ rootState, commit }) {\n commit('queueFlushAll')\n },\n markNotificationsAsSeen ({ rootState, commit }) {\n commit('markNotificationsAsSeen')\n apiService.markNotificationsAsSeen({\n id: rootState.statuses.notifications.maxId,\n credentials: rootState.users.currentUser.credentials\n })\n },\n markSingleNotificationAsSeen ({ rootState, commit }, { id }) {\n commit('markSingleNotificationAsSeen', { id })\n apiService.markNotificationsAsSeen({\n single: true,\n id,\n credentials: rootState.users.currentUser.credentials\n })\n },\n dismissNotificationLocal ({ rootState, commit }, { id }) {\n commit('dismissNotification', { id })\n },\n dismissNotification ({ rootState, commit }, { id }) {\n commit('dismissNotification', { id })\n rootState.api.backendInteractor.dismissNotification({ id })\n },\n updateNotification ({ rootState, commit }, { id, updater }) {\n commit('updateNotification', { id, updater })\n },\n fetchFavsAndRepeats ({ rootState, commit }, id) {\n Promise.all([\n rootState.api.backendInteractor.fetchFavoritedByUsers({ id }),\n rootState.api.backendInteractor.fetchRebloggedByUsers({ id })\n ]).then(([favoritedByUsers, rebloggedByUsers]) => {\n commit('addFavs', { id, favoritedByUsers, currentUser: rootState.users.currentUser })\n commit('addRepeats', { id, rebloggedByUsers, currentUser: rootState.users.currentUser })\n })\n },\n reactWithEmoji ({ rootState, dispatch, commit }, { id, emoji }) {\n const currentUser = rootState.users.currentUser\n if (!currentUser) return\n\n commit('addOwnReaction', { id, emoji, currentUser })\n rootState.api.backendInteractor.reactWithEmoji({ id, emoji }).then(\n ok => {\n dispatch('fetchEmojiReactionsBy', id)\n }\n )\n },\n unreactWithEmoji ({ rootState, dispatch, commit }, { id, emoji }) {\n const currentUser = rootState.users.currentUser\n if (!currentUser) return\n\n commit('removeOwnReaction', { id, emoji, currentUser })\n rootState.api.backendInteractor.unreactWithEmoji({ id, emoji }).then(\n ok => {\n dispatch('fetchEmojiReactionsBy', id)\n }\n )\n },\n fetchEmojiReactionsBy ({ rootState, commit }, id) {\n rootState.api.backendInteractor.fetchEmojiReactions({ id }).then(\n emojiReactions => {\n commit('addEmojiReactionsBy', { id, emojiReactions, currentUser: rootState.users.currentUser })\n }\n )\n },\n fetchFavs ({ rootState, commit }, id) {\n rootState.api.backendInteractor.fetchFavoritedByUsers({ id })\n .then(favoritedByUsers => commit('addFavs', { id, favoritedByUsers, currentUser: rootState.users.currentUser }))\n },\n fetchRepeats ({ rootState, commit }, id) {\n rootState.api.backendInteractor.fetchRebloggedByUsers({ id })\n .then(rebloggedByUsers => commit('addRepeats', { id, rebloggedByUsers, currentUser: rootState.users.currentUser }))\n },\n search (store, { q, resolve, limit, offset, following, type }) {\n return store.rootState.api.backendInteractor.search2({ q, resolve, limit, offset, following, type })\n .then((data) => {\n store.commit('addNewUsers', data.accounts)\n store.commit('addNewUsers', data.statuses.map(s => s.user).filter(u => u))\n store.commit('addNewStatuses', { statuses: data.statuses })\n return data\n })\n },\n setVirtualHeight ({ commit }, { statusId, height }) {\n commit('setVirtualHeight', { statusId, height })\n }\n },\n mutations\n}\n\nexport default statuses\n","import { remove, find } from 'lodash'\n\nexport const defaultState = {\n allLists: [],\n allListsObject: {}\n}\n\nexport const mutations = {\n setLists (state, value) {\n state.allLists = value\n },\n setList (state, { listId, title }) {\n if (!state.allListsObject[listId]) {\n state.allListsObject[listId] = { accountIds: [] }\n }\n state.allListsObject[listId].title = title\n\n const entry = find(state.allLists, { id: listId })\n if (!entry) {\n state.allLists.push({ id: listId, title })\n } else {\n entry.title = title\n }\n },\n setListAccounts (state, { listId, accountIds }) {\n if (!state.allListsObject[listId]) {\n state.allListsObject[listId] = { accountIds: [] }\n }\n state.allListsObject[listId].accountIds = accountIds\n },\n addListAccount (state, { listId, accountId }) {\n if (!state.allListsObject[listId]) {\n state.allListsObject[listId] = { accountIds: [] }\n }\n state.allListsObject[listId].accountIds.push(accountId)\n },\n removeListAccount (state, { listId, accountId }) {\n if (!state.allListsObject[listId]) {\n state.allListsObject[listId] = { accountIds: [] }\n }\n const { accountIds } = state.allListsObject[listId]\n const set = new Set(accountIds)\n set.delete(accountId)\n state.allListsObject[listId].accountIds = [...set]\n },\n deleteList (state, { listId }) {\n delete state.allListsObject[listId]\n remove(state.allLists, list => list.id === listId)\n }\n}\n\nconst actions = {\n setLists ({ commit }, value) {\n commit('setLists', value)\n },\n createList ({ rootState, commit }, { title }) {\n return rootState.api.backendInteractor.createList({ title })\n .then((list) => {\n commit('setList', { listId: list.id, title })\n return list\n })\n },\n fetchList ({ rootState, commit }, { listId }) {\n return rootState.api.backendInteractor.getList({ listId })\n .then((list) => commit('setList', { listId: list.id, title: list.title }))\n },\n fetchListAccounts ({ rootState, commit }, { listId }) {\n return rootState.api.backendInteractor.getListAccounts({ listId })\n .then((accountIds) => commit('setListAccounts', { listId, accountIds }))\n },\n setList ({ rootState, commit }, { listId, title }) {\n rootState.api.backendInteractor.updateList({ listId, title })\n commit('setList', { listId, title })\n },\n setListAccounts ({ rootState, commit }, { listId, accountIds }) {\n const saved = rootState.lists.allListsObject[listId].accountIds || []\n const added = accountIds.filter(id => !saved.includes(id))\n const removed = saved.filter(id => !accountIds.includes(id))\n commit('setListAccounts', { listId, accountIds })\n if (added.length > 0) {\n rootState.api.backendInteractor.addAccountsToList({ listId, accountIds: added })\n }\n if (removed.length > 0) {\n rootState.api.backendInteractor.removeAccountsFromList({ listId, accountIds: removed })\n }\n },\n addListAccount ({ rootState, commit }, { listId, accountId }) {\n return rootState\n .api\n .backendInteractor\n .addAccountsToList({ listId, accountIds: [accountId] })\n .then((result) => {\n commit('addListAccount', { listId, accountId })\n return result\n })\n },\n removeListAccount ({ rootState, commit }, { listId, accountId }) {\n return rootState\n .api\n .backendInteractor\n .removeAccountsFromList({ listId, accountIds: [accountId] })\n .then((result) => {\n commit('removeListAccount', { listId, accountId })\n return result\n })\n },\n deleteList ({ rootState, commit }, { listId }) {\n rootState.api.backendInteractor.deleteList({ listId })\n commit('deleteList', { listId })\n }\n}\n\nexport const getters = {\n findListTitle: state => id => {\n if (!state.allListsObject[id]) return\n return state.allListsObject[id].title\n },\n findListAccounts: state => id => {\n return [...state.allListsObject[id].accountIds]\n }\n}\n\nconst lists = {\n state: defaultState,\n mutations,\n actions,\n getters\n}\n\nexport default lists\n","import { camelCase } from 'lodash'\n\nimport apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\nconst update = ({ store, statuses, timeline, showImmediately, userId, listId, pagination }) => {\n const ccTimeline = camelCase(timeline)\n\n store.dispatch('addNewStatuses', {\n timeline: ccTimeline,\n userId,\n listId,\n statuses,\n showImmediately,\n pagination\n })\n}\n\nconst fetchAndUpdate = ({\n store,\n credentials,\n timeline = 'friends',\n older = false,\n showImmediately = false,\n userId = false,\n listId = false,\n tag = false,\n until,\n since\n}) => {\n const args = { timeline, credentials }\n const rootState = store.rootState || store.state\n const { getters } = store\n const timelineData = rootState.statuses.timelines[camelCase(timeline)]\n const { hideMutedPosts, replyVisibility } = getters.mergedConfig\n const loggedIn = !!rootState.users.currentUser\n\n if (older) {\n args.until = until || timelineData.minId\n } else {\n if (since === undefined) {\n args.since = timelineData.maxId\n } else if (since !== null) {\n args.since = since\n }\n }\n\n args.userId = userId\n args.listId = listId\n args.tag = tag\n args.withMuted = !hideMutedPosts\n if (loggedIn && ['friends', 'public', 'publicAndExternal'].includes(timeline)) {\n args.replyVisibility = replyVisibility\n }\n\n const numStatusesBeforeFetch = timelineData.statuses.length\n\n return apiService.fetchTimeline(args)\n .then(response => {\n if (response.errors) {\n throw new Error(`${response.status} ${response.statusText}`)\n }\n\n const { data: statuses, pagination } = response\n if (!older && statuses.length >= 20 && !timelineData.loading && numStatusesBeforeFetch > 0) {\n store.dispatch('queueFlush', { timeline, id: timelineData.maxId })\n }\n update({ store, statuses, timeline, showImmediately, userId, listId, pagination })\n return { statuses, pagination }\n })\n .catch((error) => {\n store.dispatch('pushGlobalNotice', {\n level: 'error',\n messageKey: 'timeline.error',\n messageArgs: [error.message],\n timeout: 5000\n })\n })\n}\n\nconst startFetching = ({ timeline = 'friends', credentials, store, userId = false, listId = false, tag = false }) => {\n const rootState = store.rootState || store.state\n const timelineData = rootState.statuses.timelines[camelCase(timeline)]\n const showImmediately = timelineData.visibleStatuses.length === 0\n timelineData.userId = userId\n timelineData.listId = listId\n fetchAndUpdate({ timeline, credentials, store, showImmediately, userId, listId, tag })\n const boundFetchAndUpdate = () =>\n fetchAndUpdate({ timeline, credentials, store, userId, listId, tag })\n return promiseInterval(boundFetchAndUpdate, 10000)\n}\nconst timelineFetcher = {\n fetchAndUpdate,\n startFetching\n}\n\nexport default timelineFetcher\n","import apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\nconst fetchAndUpdate = ({ store, credentials }) => {\n return apiService.fetchFollowRequests({ credentials })\n .then((requests) => {\n store.commit('setFollowRequests', requests)\n store.commit('addNewUsers', requests)\n }, () => {})\n .catch(() => {})\n}\n\nconst startFetching = ({ credentials, store }) => {\n const boundFetchAndUpdate = () => fetchAndUpdate({ credentials, store })\n boundFetchAndUpdate()\n return promiseInterval(boundFetchAndUpdate, 10000)\n}\n\nconst followRequestFetcher = {\n startFetching\n}\n\nexport default followRequestFetcher\n","import apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\nconst fetchAndUpdate = ({ store, credentials }) => {\n return apiService.fetchLists({ credentials })\n .then(lists => {\n store.commit('setLists', lists)\n }, () => {})\n .catch(() => {})\n}\n\nconst startFetching = ({ credentials, store }) => {\n const boundFetchAndUpdate = () => fetchAndUpdate({ credentials, store })\n boundFetchAndUpdate()\n return promiseInterval(boundFetchAndUpdate, 240000)\n}\n\nconst listsFetcher = {\n startFetching\n}\n\nexport default listsFetcher\n","import apiService, { getMastodonSocketURI, ProcessedWS } from '../api/api.service.js'\nimport timelineFetcher from '../timeline_fetcher/timeline_fetcher.service.js'\nimport notificationsFetcher from '../notifications_fetcher/notifications_fetcher.service.js'\nimport followRequestFetcher from '../../services/follow_request_fetcher/follow_request_fetcher.service'\nimport listsFetcher from '../../services/lists_fetcher/lists_fetcher.service.js'\n\nconst backendInteractorService = credentials => ({\n startFetchingTimeline ({ timeline, store, userId = false, listId = false, tag }) {\n return timelineFetcher.startFetching({ timeline, store, credentials, userId, listId, tag })\n },\n\n fetchTimeline (args) {\n return timelineFetcher.fetchAndUpdate({ ...args, credentials })\n },\n\n startFetchingNotifications ({ store }) {\n return notificationsFetcher.startFetching({ store, credentials })\n },\n\n fetchNotifications (args) {\n return notificationsFetcher.fetchAndUpdate({ ...args, credentials })\n },\n\n startFetchingFollowRequests ({ store }) {\n return followRequestFetcher.startFetching({ store, credentials })\n },\n\n startFetchingLists ({ store }) {\n return listsFetcher.startFetching({ store, credentials })\n },\n\n startUserSocket ({ store }) {\n const serv = store.rootState.instance.server.replace('http', 'ws')\n const url = serv + getMastodonSocketURI({ credentials, stream: 'user' })\n return ProcessedWS({ url, id: 'User' })\n },\n\n ...Object.entries(apiService).reduce((acc, [key, func]) => {\n return {\n ...acc,\n [key]: (args) => func({ credentials, ...args })\n }\n }, {}),\n\n verifyCredentials: apiService.verifyCredentials\n})\n\nexport default backendInteractorService\n","\nexport const windowWidth = () =>\n window.innerWidth ||\n document.documentElement.clientWidth ||\n document.body.clientWidth\n\nexport const windowHeight = () =>\n window.innerHeight ||\n document.documentElement.clientHeight ||\n document.body.clientHeight\n","import { reduce } from 'lodash'\n\nconst REDIRECT_URI = `${window.location.origin}/oauth-callback`\n\nexport const getOrCreateApp = ({ clientId, clientSecret, instance, commit }) => {\n if (clientId && clientSecret) {\n return Promise.resolve({ clientId, clientSecret })\n }\n\n const url = `${instance}/api/v1/apps`\n const form = new window.FormData()\n\n form.append('client_name', `PleromaFE_${window.___pleromafe_commit_hash}_${(new Date()).toISOString()}`)\n form.append('redirect_uris', REDIRECT_URI)\n form.append('scopes', 'read write follow push admin')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n })\n .then((data) => data.json())\n .then((app) => ({ clientId: app.client_id, clientSecret: app.client_secret }))\n .then((app) => commit('setClientData', app) || app)\n}\n\nconst login = ({ instance, clientId }) => {\n const data = {\n response_type: 'code',\n client_id: clientId,\n redirect_uri: REDIRECT_URI,\n scope: 'read write follow push admin'\n }\n\n const dataString = reduce(data, (acc, v, k) => {\n const encoded = `${k}=${encodeURIComponent(v)}`\n if (!acc) {\n return encoded\n } else {\n return `${acc}&${encoded}`\n }\n }, false)\n\n // Do the redirect...\n const url = `${instance}/oauth/authorize?${dataString}`\n\n window.location.href = url\n}\n\nconst getTokenWithCredentials = ({ clientId, clientSecret, instance, username, password }) => {\n const url = `${instance}/oauth/token`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('grant_type', 'password')\n form.append('username', username)\n form.append('password', password)\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst getToken = ({ clientId, clientSecret, instance, code }) => {\n const url = `${instance}/oauth/token`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('grant_type', 'authorization_code')\n form.append('code', code)\n form.append('redirect_uri', `${window.location.origin}/oauth-callback`)\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n })\n .then((data) => data.json())\n}\n\nexport const getClientToken = ({ clientId, clientSecret, instance }) => {\n const url = `${instance}/oauth/token`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('grant_type', 'client_credentials')\n form.append('redirect_uri', `${window.location.origin}/oauth-callback`)\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\nconst verifyOTPCode = ({ app, instance, mfaToken, code }) => {\n const url = `${instance}/oauth/mfa/challenge`\n const form = new window.FormData()\n\n form.append('client_id', app.client_id)\n form.append('client_secret', app.client_secret)\n form.append('mfa_token', mfaToken)\n form.append('code', code)\n form.append('challenge_type', 'totp')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst verifyRecoveryCode = ({ app, instance, mfaToken, code }) => {\n const url = `${instance}/oauth/mfa/challenge`\n const form = new window.FormData()\n\n form.append('client_id', app.client_id)\n form.append('client_secret', app.client_secret)\n form.append('mfa_token', mfaToken)\n form.append('code', code)\n form.append('challenge_type', 'recovery')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst revokeToken = ({ app, instance, token }) => {\n const url = `${instance}/oauth/revoke`\n const form = new window.FormData()\n\n form.append('client_id', app.clientId)\n form.append('client_secret', app.clientSecret)\n form.append('token', token)\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst oauth = {\n login,\n getToken,\n getTokenWithCredentials,\n getOrCreateApp,\n verifyOTPCode,\n verifyRecoveryCode,\n revokeToken\n}\n\nexport default oauth\n","import runtime from 'serviceworker-webpack5-plugin/lib/runtime'\n\nfunction urlBase64ToUint8Array (base64String) {\n const padding = '='.repeat((4 - base64String.length % 4) % 4)\n const base64 = (base64String + padding)\n .replace(/-/g, '+')\n .replace(/_/g, '/')\n\n const rawData = window.atob(base64)\n return Uint8Array.from([...rawData].map((char) => char.charCodeAt(0)))\n}\n\nfunction isPushSupported () {\n return 'serviceWorker' in navigator && 'PushManager' in window\n}\n\nfunction getOrCreateServiceWorker () {\n return runtime.register()\n .catch((err) => console.error('Unable to get or create a service worker.', err))\n}\n\nfunction subscribePush (registration, isEnabled, vapidPublicKey) {\n if (!isEnabled) return Promise.reject(new Error('Web Push is disabled in config'))\n if (!vapidPublicKey) return Promise.reject(new Error('VAPID public key is not found'))\n\n const subscribeOptions = {\n userVisibleOnly: true,\n applicationServerKey: urlBase64ToUint8Array(vapidPublicKey)\n }\n return registration.pushManager.subscribe(subscribeOptions)\n}\n\nfunction unsubscribePush (registration) {\n return registration.pushManager.getSubscription()\n .then((subscribtion) => {\n if (subscribtion === null) { return }\n return subscribtion.unsubscribe()\n })\n}\n\nfunction deleteSubscriptionFromBackEnd (token) {\n return window.fetch('/api/v1/push/subscription/', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${token}`\n }\n }).then((response) => {\n if (!response.ok) throw new Error('Bad status code from server.')\n return response\n })\n}\n\nfunction sendSubscriptionToBackEnd (subscription, token, notificationVisibility) {\n return window.fetch('/api/v1/push/subscription/', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${token}`\n },\n body: JSON.stringify({\n subscription,\n data: {\n alerts: {\n follow: notificationVisibility.follows,\n favourite: notificationVisibility.likes,\n mention: notificationVisibility.mentions,\n reblog: notificationVisibility.repeats,\n move: notificationVisibility.moves\n }\n }\n })\n }).then((response) => {\n if (!response.ok) throw new Error('Bad status code from server.')\n return response.json()\n }).then((responseData) => {\n if (!responseData.id) throw new Error('Bad response from server.')\n return responseData\n })\n}\n\nexport function registerPushNotifications (isEnabled, vapidPublicKey, token, notificationVisibility) {\n if (isPushSupported()) {\n getOrCreateServiceWorker()\n .then((registration) => subscribePush(registration, isEnabled, vapidPublicKey))\n .then((subscription) => sendSubscriptionToBackEnd(subscription, token, notificationVisibility))\n .catch((e) => console.warn(`Failed to setup Web Push Notifications: ${e.message}`))\n }\n}\n\nexport function unregisterPushNotifications (token) {\n if (isPushSupported()) {\n Promise.all([\n deleteSubscriptionFromBackEnd(token),\n getOrCreateServiceWorker()\n .then((registration) => {\n return unsubscribePush(registration).then((result) => [registration, result])\n })\n .then(([registration, unsubResult]) => {\n if (!unsubResult) {\n console.warn('Push subscription cancellation wasn\\'t successful, killing SW anyway...')\n }\n return registration.unregister().then((result) => {\n if (!result) {\n console.warn('Failed to kill SW')\n }\n })\n })\n ]).catch((e) => console.warn(`Failed to disable Web Push Notifications: ${e.message}`))\n }\n}\n","import backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport { windowWidth, windowHeight } from '../services/window_utils/window_utils'\nimport oauthApi from '../services/new_api/oauth.js'\nimport { compact, map, each, mergeWith, last, concat, uniq, isArray } from 'lodash'\nimport { registerPushNotifications, unregisterPushNotifications } from '../services/push/push.js'\n\n// TODO: Unify with mergeOrAdd in statuses.js\nexport const mergeOrAdd = (arr, obj, item) => {\n if (!item) { return false }\n const oldItem = obj[item.id]\n if (oldItem) {\n // We already have this, so only merge the new info.\n mergeWith(oldItem, item, mergeArrayLength)\n return { item: oldItem, new: false }\n } else {\n // This is a new item, prepare it\n arr.push(item)\n obj[item.id] = item\n return { item, new: true }\n }\n}\n\nconst mergeArrayLength = (oldValue, newValue) => {\n if (isArray(oldValue) && isArray(newValue)) {\n oldValue.length = newValue.length\n return mergeWith(oldValue, newValue, mergeArrayLength)\n }\n}\n\nconst getNotificationPermission = () => {\n const Notification = window.Notification\n\n if (!Notification) return Promise.resolve(null)\n if (Notification.permission === 'default') return Notification.requestPermission()\n return Promise.resolve(Notification.permission)\n}\n\nconst blockUser = (store, id) => {\n return store.rootState.api.backendInteractor.blockUser({ id })\n .then((relationship) => {\n store.commit('updateUserRelationship', [relationship])\n store.commit('addBlockId', id)\n store.commit('removeStatus', { timeline: 'friends', userId: id })\n store.commit('removeStatus', { timeline: 'public', userId: id })\n store.commit('removeStatus', { timeline: 'publicAndExternal', userId: id })\n })\n}\n\nconst unblockUser = (store, id) => {\n return store.rootState.api.backendInteractor.unblockUser({ id })\n .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst removeUserFromFollowers = (store, id) => {\n return store.rootState.api.backendInteractor.removeUserFromFollowers({ id })\n .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst editUserNote = (store, { id, comment }) => {\n return store.rootState.api.backendInteractor.editUserNote({ id, comment })\n .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst muteUser = (store, args) => {\n const id = typeof args === 'object' ? args.id : args\n const expiresIn = typeof args === 'object' ? args.expiresIn : 0\n\n const predictedRelationship = store.state.relationships[id] || { id }\n predictedRelationship.muting = true\n store.commit('updateUserRelationship', [predictedRelationship])\n store.commit('addMuteId', id)\n\n return store.rootState.api.backendInteractor.muteUser({ id, expiresIn })\n .then((relationship) => {\n store.commit('updateUserRelationship', [relationship])\n store.commit('addMuteId', id)\n })\n}\n\nconst unmuteUser = (store, id) => {\n const predictedRelationship = store.state.relationships[id] || { id }\n predictedRelationship.muting = false\n store.commit('updateUserRelationship', [predictedRelationship])\n\n return store.rootState.api.backendInteractor.unmuteUser({ id })\n .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst hideReblogs = (store, userId) => {\n return store.rootState.api.backendInteractor.followUser({ id: userId, reblogs: false })\n .then((relationship) => {\n store.commit('updateUserRelationship', [relationship])\n })\n}\n\nconst showReblogs = (store, userId) => {\n return store.rootState.api.backendInteractor.followUser({ id: userId, reblogs: true })\n .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst muteDomain = (store, domain) => {\n return store.rootState.api.backendInteractor.muteDomain({ domain })\n .then(() => store.commit('addDomainMute', domain))\n}\n\nconst unmuteDomain = (store, domain) => {\n return store.rootState.api.backendInteractor.unmuteDomain({ domain })\n .then(() => store.commit('removeDomainMute', domain))\n}\n\nexport const mutations = {\n tagUser (state, { user: { id }, tag }) {\n const user = state.usersObject[id]\n const tags = user.tags || []\n const newTags = tags.concat([tag])\n user.tags = newTags\n },\n untagUser (state, { user: { id }, tag }) {\n const user = state.usersObject[id]\n const tags = user.tags || []\n const newTags = tags.filter(t => t !== tag)\n user.tags = newTags\n },\n updateRight (state, { user: { id }, right, value }) {\n const user = state.usersObject[id]\n const newRights = user.rights\n newRights[right] = value\n user.rights = newRights\n },\n updateActivationStatus (state, { user: { id }, deactivated }) {\n const user = state.usersObject[id]\n user.deactivated = deactivated\n },\n setCurrentUser (state, user) {\n state.lastLoginName = user.screen_name\n state.currentUser = mergeWith(state.currentUser || {}, user, mergeArrayLength)\n },\n clearCurrentUser (state) {\n state.currentUser = false\n state.lastLoginName = false\n },\n beginLogin (state) {\n state.loggingIn = true\n },\n endLogin (state) {\n state.loggingIn = false\n },\n saveFriendIds (state, { id, friendIds }) {\n const user = state.usersObject[id]\n user.friendIds = uniq(concat(user.friendIds || [], friendIds))\n },\n saveFollowerIds (state, { id, followerIds }) {\n const user = state.usersObject[id]\n user.followerIds = uniq(concat(user.followerIds || [], followerIds))\n },\n // Because frontend doesn't have a reason to keep these stuff in memory\n // outside of viewing someones user profile.\n clearFriends (state, userId) {\n const user = state.usersObject[userId]\n if (user) {\n user.friendIds = []\n }\n },\n clearFollowers (state, userId) {\n const user = state.usersObject[userId]\n if (user) {\n user.followerIds = []\n }\n },\n addNewUsers (state, users) {\n each(users, (user) => {\n if (user.relationship) {\n state.relationships[user.relationship.id] = user.relationship\n }\n const res = mergeOrAdd(state.users, state.usersObject, user)\n const item = res.item\n if (res.new && item.screen_name && !item.screen_name.includes('@')) {\n state.usersByNameObject[item.screen_name.toLowerCase()] = item\n }\n })\n },\n updateUserRelationship (state, relationships) {\n relationships.forEach((relationship) => {\n state.relationships[relationship.id] = relationship\n })\n },\n updateUserInLists (state, { id, inLists }) {\n state.usersObject[id].inLists = inLists\n },\n saveBlockIds (state, blockIds) {\n state.currentUser.blockIds = blockIds\n },\n addBlockId (state, blockId) {\n if (state.currentUser.blockIds.indexOf(blockId) === -1) {\n state.currentUser.blockIds.push(blockId)\n }\n },\n saveMuteIds (state, muteIds) {\n state.currentUser.muteIds = muteIds\n },\n addMuteId (state, muteId) {\n if (state.currentUser.muteIds.indexOf(muteId) === -1) {\n state.currentUser.muteIds.push(muteId)\n }\n },\n saveDomainMutes (state, domainMutes) {\n state.currentUser.domainMutes = domainMutes\n },\n addDomainMute (state, domain) {\n if (state.currentUser.domainMutes.indexOf(domain) === -1) {\n state.currentUser.domainMutes.push(domain)\n }\n },\n removeDomainMute (state, domain) {\n const index = state.currentUser.domainMutes.indexOf(domain)\n if (index !== -1) {\n state.currentUser.domainMutes.splice(index, 1)\n }\n },\n setPinnedToUser (state, status) {\n const user = state.usersObject[status.user.id]\n user.pinnedStatusIds = user.pinnedStatusIds || []\n const index = user.pinnedStatusIds.indexOf(status.id)\n\n if (status.pinned && index === -1) {\n user.pinnedStatusIds.push(status.id)\n } else if (!status.pinned && index !== -1) {\n user.pinnedStatusIds.splice(index, 1)\n }\n },\n setUserForStatus (state, status) {\n status.user = state.usersObject[status.user.id]\n },\n setUserForNotification (state, notification) {\n if (notification.type !== 'follow') {\n notification.action.user = state.usersObject[notification.action.user.id]\n }\n notification.from_profile = state.usersObject[notification.from_profile.id]\n },\n setColor (state, { user: { id }, highlighted }) {\n const user = state.usersObject[id]\n user.highlight = highlighted\n },\n signUpPending (state) {\n state.signUpPending = true\n state.signUpErrors = []\n },\n signUpSuccess (state) {\n state.signUpPending = false\n },\n signUpFailure (state, errors) {\n state.signUpPending = false\n state.signUpErrors = errors\n }\n}\n\nexport const getters = {\n findUser: state => query => {\n return state.usersObject[query]\n },\n findUserByName: state => query => {\n return state.usersByNameObject[query.toLowerCase()]\n },\n findUserByUrl: state => query => {\n return state.users\n .find(u => u.statusnet_profile_url &&\n u.statusnet_profile_url.toLowerCase() === query.toLowerCase())\n },\n relationship: state => id => {\n const rel = id && state.relationships[id]\n return rel || { id, loading: true }\n }\n}\n\nexport const defaultState = {\n loggingIn: false,\n lastLoginName: false,\n currentUser: false,\n users: [],\n usersObject: {},\n usersByNameObject: {},\n signUpPending: false,\n signUpErrors: [],\n relationships: {}\n}\n\nconst users = {\n state: defaultState,\n mutations,\n getters,\n actions: {\n fetchUserIfMissing (store, id) {\n if (!store.getters.findUser(id)) {\n store.dispatch('fetchUser', id)\n }\n },\n fetchUser (store, id) {\n return store.rootState.api.backendInteractor.fetchUser({ id })\n .then((user) => {\n store.commit('addNewUsers', [user])\n return user\n })\n },\n fetchUserByName (store, name) {\n return store.rootState.api.backendInteractor.fetchUserByName({ name })\n .then((user) => {\n store.commit('addNewUsers', [user])\n return user\n })\n },\n fetchUserRelationship (store, id) {\n if (store.state.currentUser) {\n store.rootState.api.backendInteractor.fetchUserRelationship({ id })\n .then((relationships) => store.commit('updateUserRelationship', relationships))\n }\n },\n fetchUserInLists (store, id) {\n if (store.state.currentUser) {\n store.rootState.api.backendInteractor.fetchUserInLists({ id })\n .then((inLists) => store.commit('updateUserInLists', { id, inLists }))\n }\n },\n fetchBlocks (store) {\n return store.rootState.api.backendInteractor.fetchBlocks()\n .then((blocks) => {\n store.commit('saveBlockIds', map(blocks, 'id'))\n store.commit('addNewUsers', blocks)\n return blocks\n })\n },\n blockUser (store, id) {\n return blockUser(store, id)\n },\n unblockUser (store, id) {\n return unblockUser(store, id)\n },\n removeUserFromFollowers (store, id) {\n return removeUserFromFollowers(store, id)\n },\n blockUsers (store, ids = []) {\n return Promise.all(ids.map(id => blockUser(store, id)))\n },\n unblockUsers (store, ids = []) {\n return Promise.all(ids.map(id => unblockUser(store, id)))\n },\n editUserNote (store, args) {\n return editUserNote(store, args)\n },\n fetchMutes (store) {\n return store.rootState.api.backendInteractor.fetchMutes()\n .then((mutes) => {\n store.commit('saveMuteIds', map(mutes, 'id'))\n store.commit('addNewUsers', mutes)\n return mutes\n })\n },\n muteUser (store, id) {\n return muteUser(store, id)\n },\n unmuteUser (store, id) {\n return unmuteUser(store, id)\n },\n hideReblogs (store, id) {\n return hideReblogs(store, id)\n },\n showReblogs (store, id) {\n return showReblogs(store, id)\n },\n muteUsers (store, ids = []) {\n return Promise.all(ids.map(id => muteUser(store, id)))\n },\n unmuteUsers (store, ids = []) {\n return Promise.all(ids.map(id => unmuteUser(store, id)))\n },\n fetchDomainMutes (store) {\n return store.rootState.api.backendInteractor.fetchDomainMutes()\n .then((domainMutes) => {\n store.commit('saveDomainMutes', domainMutes)\n return domainMutes\n })\n },\n muteDomain (store, domain) {\n return muteDomain(store, domain)\n },\n unmuteDomain (store, domain) {\n return unmuteDomain(store, domain)\n },\n muteDomains (store, domains = []) {\n return Promise.all(domains.map(domain => muteDomain(store, domain)))\n },\n unmuteDomains (store, domain = []) {\n return Promise.all(domain.map(domain => unmuteDomain(store, domain)))\n },\n fetchFriends ({ rootState, commit }, id) {\n const user = rootState.users.usersObject[id]\n const maxId = last(user.friendIds)\n return rootState.api.backendInteractor.fetchFriends({ id, maxId })\n .then((friends) => {\n commit('addNewUsers', friends)\n commit('saveFriendIds', { id, friendIds: map(friends, 'id') })\n return friends\n })\n },\n fetchFollowers ({ rootState, commit }, id) {\n const user = rootState.users.usersObject[id]\n const maxId = last(user.followerIds)\n return rootState.api.backendInteractor.fetchFollowers({ id, maxId })\n .then((followers) => {\n commit('addNewUsers', followers)\n commit('saveFollowerIds', { id, followerIds: map(followers, 'id') })\n return followers\n })\n },\n clearFriends ({ commit }, userId) {\n commit('clearFriends', userId)\n },\n clearFollowers ({ commit }, userId) {\n commit('clearFollowers', userId)\n },\n subscribeUser ({ rootState, commit }, id) {\n return rootState.api.backendInteractor.subscribeUser({ id })\n .then((relationship) => commit('updateUserRelationship', [relationship]))\n },\n unsubscribeUser ({ rootState, commit }, id) {\n return rootState.api.backendInteractor.unsubscribeUser({ id })\n .then((relationship) => commit('updateUserRelationship', [relationship]))\n },\n toggleActivationStatus ({ rootState, commit }, { user }) {\n const api = user.deactivated ? rootState.api.backendInteractor.activateUser : rootState.api.backendInteractor.deactivateUser\n api({ user })\n .then((user) => { const deactivated = !user.is_active; commit('updateActivationStatus', { user, deactivated }) })\n },\n registerPushNotifications (store) {\n const token = store.state.currentUser.credentials\n const vapidPublicKey = store.rootState.instance.vapidPublicKey\n const isEnabled = store.rootState.config.webPushNotifications\n const notificationVisibility = store.rootState.config.notificationVisibility\n\n registerPushNotifications(isEnabled, vapidPublicKey, token, notificationVisibility)\n },\n unregisterPushNotifications (store) {\n const token = store.state.currentUser.credentials\n\n unregisterPushNotifications(token)\n },\n addNewUsers ({ commit }, users) {\n commit('addNewUsers', users)\n },\n addNewStatuses (store, { statuses }) {\n const users = map(statuses, 'user')\n const retweetedUsers = compact(map(statuses, 'retweeted_status.user'))\n store.commit('addNewUsers', users)\n store.commit('addNewUsers', retweetedUsers)\n\n each(statuses, (status) => {\n // Reconnect users to statuses\n store.commit('setUserForStatus', status)\n // Set pinned statuses to user\n store.commit('setPinnedToUser', status)\n })\n each(compact(map(statuses, 'retweeted_status')), (status) => {\n // Reconnect users to retweets\n store.commit('setUserForStatus', status)\n // Set pinned retweets to user\n store.commit('setPinnedToUser', status)\n })\n },\n addNewNotifications (store, { notifications }) {\n const users = map(notifications, 'from_profile')\n const targetUsers = map(notifications, 'target').filter(_ => _)\n const notificationIds = notifications.map(_ => _.id)\n store.commit('addNewUsers', users)\n store.commit('addNewUsers', targetUsers)\n\n const notificationsObject = store.rootState.statuses.notifications.idStore\n const relevantNotifications = Object.entries(notificationsObject)\n .filter(([k, val]) => notificationIds.includes(k))\n .map(([k, val]) => val)\n\n // Reconnect users to notifications\n each(relevantNotifications, (notification) => {\n store.commit('setUserForNotification', notification)\n })\n },\n searchUsers ({ rootState, commit }, { query }) {\n return rootState.api.backendInteractor.searchUsers({ query })\n .then((users) => {\n commit('addNewUsers', users)\n return users\n })\n },\n async signUp (store, userInfo) {\n store.commit('signUpPending')\n\n const rootState = store.rootState\n\n try {\n const data = await rootState.api.backendInteractor.register(\n { params: { ...userInfo } }\n )\n store.commit('signUpSuccess')\n store.commit('setToken', data.access_token)\n store.dispatch('loginUser', data.access_token)\n } catch (e) {\n const errors = e.message\n store.commit('signUpFailure', errors)\n throw e\n }\n },\n async getCaptcha (store) {\n return store.rootState.api.backendInteractor.getCaptcha()\n },\n\n logout (store) {\n const { oauth, instance } = store.rootState\n\n const data = {\n ...oauth,\n commit: store.commit,\n instance: instance.server\n }\n\n return oauthApi.getOrCreateApp(data)\n .then((app) => {\n const params = {\n app,\n instance: data.instance,\n token: oauth.userToken\n }\n\n return oauthApi.revokeToken(params)\n })\n .then(() => {\n store.commit('clearCurrentUser')\n store.dispatch('disconnectFromSocket')\n store.commit('clearToken')\n store.dispatch('stopFetchingTimeline', 'friends')\n store.commit('setBackendInteractor', backendInteractorService(store.getters.getToken()))\n store.dispatch('stopFetchingNotifications')\n store.dispatch('stopFetchingLists')\n store.dispatch('stopFetchingFollowRequests')\n store.commit('clearNotifications')\n store.commit('resetStatuses')\n store.dispatch('resetChats')\n store.dispatch('setLastTimeline', 'public-timeline')\n store.dispatch('setLayoutWidth', windowWidth())\n store.dispatch('setLayoutHeight', windowHeight())\n store.commit('clearServerSideStorage')\n })\n },\n loginUser (store, accessToken) {\n return new Promise((resolve, reject) => {\n const commit = store.commit\n commit('beginLogin')\n store.rootState.api.backendInteractor.verifyCredentials(accessToken)\n .then((data) => {\n if (!data.error) {\n const user = data\n // user.credentials = userCredentials\n user.credentials = accessToken\n user.blockIds = []\n user.muteIds = []\n user.domainMutes = []\n commit('setCurrentUser', user)\n commit('setServerSideStorage', user)\n commit('addNewUsers', [user])\n\n store.dispatch('fetchEmoji')\n\n getNotificationPermission()\n .then(permission => commit('setNotificationPermission', permission))\n\n // Set our new backend interactor\n commit('setBackendInteractor', backendInteractorService(accessToken))\n store.dispatch('pushServerSideStorage')\n\n if (user.token) {\n store.dispatch('setWsToken', user.token)\n\n // Initialize the shout socket.\n store.dispatch('initializeSocket')\n }\n\n const startPolling = () => {\n // Start getting fresh posts.\n store.dispatch('startFetchingTimeline', { timeline: 'friends' })\n\n // Start fetching notifications\n store.dispatch('startFetchingNotifications')\n\n // Start fetching chats\n store.dispatch('startFetchingChats')\n }\n\n store.dispatch('startFetchingLists')\n\n if (user.locked) {\n store.dispatch('startFetchingFollowRequests')\n }\n\n if (store.getters.mergedConfig.useStreamingApi) {\n store.dispatch('fetchTimeline', { timeline: 'friends', since: null })\n store.dispatch('fetchNotifications', { since: null })\n store.dispatch('enableMastoSockets', true).catch((error) => {\n console.error('Failed initializing MastoAPI Streaming socket', error)\n }).then(() => {\n store.dispatch('fetchChats', { latest: true })\n setTimeout(() => store.dispatch('setNotificationsSilence', false), 10000)\n })\n } else {\n startPolling()\n }\n\n // Get user mutes\n store.dispatch('fetchMutes')\n\n store.dispatch('setLayoutWidth', windowWidth())\n store.dispatch('setLayoutHeight', windowHeight())\n\n // Fetch our friends\n store.rootState.api.backendInteractor.fetchFriends({ id: user.id })\n .then((friends) => commit('addNewUsers', friends))\n } else {\n const response = data.error\n // Authentication failed\n commit('endLogin')\n if (response.status === 401) {\n reject(new Error('Wrong username or password'))\n } else {\n reject(new Error('An error occurred, please try again'))\n }\n }\n commit('endLogin')\n resolve()\n })\n .catch((error) => {\n console.log(error)\n commit('endLogin')\n reject(new Error('Failed to connect to server, try again'))\n })\n })\n }\n }\n}\n\nexport default users\n","import { showDesktopNotification } from '../desktop_notification_utils/desktop_notification_utils.js'\n\nexport const maybeShowChatNotification = (store, chat) => {\n if (!chat.lastMessage) return\n if (store.rootState.chats.currentChatId === chat.id && !document.hidden) return\n if (store.rootState.users.currentUser.id === chat.lastMessage.account_id) return\n\n const opts = {\n tag: chat.lastMessage.id,\n title: chat.account.name,\n icon: chat.account.profile_image_url,\n body: chat.lastMessage.content\n }\n\n if (chat.lastMessage.attachment && chat.lastMessage.attachment.type === 'image') {\n opts.image = chat.lastMessage.attachment.preview_url\n }\n\n showDesktopNotification(store.rootState, opts)\n}\n\nexport const buildFakeMessage = ({ content, chatId, attachments, userId, idempotencyKey }) => {\n const fakeMessage = {\n content,\n chat_id: chatId,\n created_at: new Date(),\n id: `${new Date().getTime()}`,\n attachments,\n account_id: userId,\n idempotency_key: idempotencyKey,\n emojis: [],\n pending: true,\n isNormalized: true\n }\n\n if (attachments[0]) {\n fakeMessage.attachment = attachments[0]\n }\n\n return fakeMessage\n}\n","import backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport { WSConnectionStatus } from '../services/api/api.service.js'\nimport { maybeShowChatNotification } from '../services/chat_utils/chat_utils.js'\nimport { Socket } from 'phoenix'\n\nconst retryTimeout = (multiplier) => 1000 * multiplier\n\nconst api = {\n state: {\n retryMultiplier: 1,\n backendInteractor: backendInteractorService(),\n fetchers: {},\n socket: null,\n mastoUserSocket: null,\n mastoUserSocketStatus: null,\n followRequests: []\n },\n getters: {\n followRequestCount: state => state.followRequests.length\n },\n mutations: {\n setBackendInteractor (state, backendInteractor) {\n state.backendInteractor = backendInteractor\n },\n addFetcher (state, { fetcherName, fetcher }) {\n state.fetchers[fetcherName] = fetcher\n },\n removeFetcher (state, { fetcherName, fetcher }) {\n state.fetchers[fetcherName].stop()\n delete state.fetchers[fetcherName]\n },\n setWsToken (state, token) {\n state.wsToken = token\n },\n setSocket (state, socket) {\n state.socket = socket\n },\n setFollowRequests (state, value) {\n state.followRequests = value\n },\n setMastoUserSocketStatus (state, value) {\n state.mastoUserSocketStatus = value\n },\n incrementRetryMultiplier (state) {\n state.retryMultiplier = Math.max(++state.retryMultiplier, 3)\n },\n resetRetryMultiplier (state) {\n state.retryMultiplier = 1\n }\n },\n actions: {\n /**\n * Global MastoAPI socket control, in future should disable ALL sockets/(re)start relevant sockets\n *\n * @param {Boolean} [initial] - whether this enabling happened at boot time or not\n */\n enableMastoSockets (store, initial) {\n const { state, dispatch, commit } = store\n // Do not initialize unless nonexistent or closed\n if (\n state.mastoUserSocket &&\n ![\n WebSocket.CLOSED,\n WebSocket.CLOSING\n ].includes(state.mastoUserSocket.getState())\n ) {\n return\n }\n if (initial) {\n commit('setMastoUserSocketStatus', WSConnectionStatus.STARTING_INITIAL)\n } else {\n commit('setMastoUserSocketStatus', WSConnectionStatus.STARTING)\n }\n return dispatch('startMastoUserSocket')\n },\n disableMastoSockets (store) {\n const { state, dispatch, commit } = store\n if (!state.mastoUserSocket) return\n commit('setMastoUserSocketStatus', WSConnectionStatus.DISABLED)\n return dispatch('stopMastoUserSocket')\n },\n\n // MastoAPI 'User' sockets\n startMastoUserSocket (store) {\n return new Promise((resolve, reject) => {\n try {\n const { state, commit, dispatch, rootState } = store\n const timelineData = rootState.statuses.timelines.friends\n state.mastoUserSocket = state.backendInteractor.startUserSocket({ store })\n state.mastoUserSocket.addEventListener(\n 'message',\n ({ detail: message }) => {\n if (!message) return // pings\n if (message.event === 'notification') {\n dispatch('addNewNotifications', {\n notifications: [message.notification],\n older: false\n })\n } else if (message.event === 'update') {\n dispatch('addNewStatuses', {\n statuses: [message.status],\n userId: false,\n showImmediately: timelineData.visibleStatuses.length === 0,\n timeline: 'friends'\n })\n } else if (message.event === 'status.update') {\n dispatch('addNewStatuses', {\n statuses: [message.status],\n userId: false,\n showImmediately: message.status.id in timelineData.visibleStatusesObject,\n timeline: 'friends'\n })\n } else if (message.event === 'delete') {\n dispatch('deleteStatusById', message.id)\n } else if (message.event === 'pleroma:chat_update') {\n // The setTimeout wrapper is a temporary band-aid to avoid duplicates for the user's own messages when doing optimistic sending.\n // The cause of the duplicates is the WS event arriving earlier than the HTTP response.\n // This setTimeout wrapper can be removed once the commit `8e41baff` is in the stable Pleroma release.\n // (`8e41baff` adds the idempotency key to the chat message entity, which PleromaFE uses when it's available, and it makes this artificial delay unnecessary).\n setTimeout(() => {\n dispatch('addChatMessages', {\n chatId: message.chatUpdate.id,\n messages: [message.chatUpdate.lastMessage]\n })\n dispatch('updateChat', { chat: message.chatUpdate })\n maybeShowChatNotification(store, message.chatUpdate)\n }, 100)\n }\n }\n )\n state.mastoUserSocket.addEventListener('open', () => {\n // Do not show notification when we just opened up the page\n if (state.mastoUserSocketStatus !== WSConnectionStatus.STARTING_INITIAL) {\n dispatch('pushGlobalNotice', {\n level: 'success',\n messageKey: 'timeline.socket_reconnected',\n timeout: 5000\n })\n }\n // Stop polling if we were errored or disabled\n if (new Set([\n WSConnectionStatus.ERROR,\n WSConnectionStatus.DISABLED\n ]).has(state.mastoUserSocketStatus)) {\n dispatch('stopFetchingTimeline', { timeline: 'friends' })\n dispatch('stopFetchingNotifications')\n dispatch('stopFetchingChats')\n }\n commit('resetRetryMultiplier')\n commit('setMastoUserSocketStatus', WSConnectionStatus.JOINED)\n })\n state.mastoUserSocket.addEventListener('error', ({ detail: error }) => {\n console.error('Error in MastoAPI websocket:', error)\n // TODO is this needed?\n dispatch('clearOpenedChats')\n })\n state.mastoUserSocket.addEventListener('close', ({ detail: closeEvent }) => {\n const ignoreCodes = new Set([\n 1000, // Normal (intended) closure\n 1001 // Going away\n ])\n const { code } = closeEvent\n if (ignoreCodes.has(code)) {\n console.debug(`Not restarting socket becasue of closure code ${code} is in ignore list`)\n commit('setMastoUserSocketStatus', WSConnectionStatus.CLOSED)\n } else {\n console.warn(`MastoAPI websocket disconnected, restarting. CloseEvent code: ${code}`)\n setTimeout(() => {\n dispatch('startMastoUserSocket')\n }, retryTimeout(state.retryMultiplier))\n commit('incrementRetryMultiplier')\n if (state.mastoUserSocketStatus !== WSConnectionStatus.ERROR) {\n dispatch('startFetchingTimeline', { timeline: 'friends' })\n dispatch('startFetchingNotifications')\n dispatch('startFetchingChats')\n dispatch('pushGlobalNotice', {\n level: 'error',\n messageKey: 'timeline.socket_broke',\n messageArgs: [code],\n timeout: 5000\n })\n }\n commit('setMastoUserSocketStatus', WSConnectionStatus.ERROR)\n }\n dispatch('clearOpenedChats')\n })\n resolve()\n } catch (e) {\n reject(e)\n }\n })\n },\n stopMastoUserSocket ({ state, dispatch }) {\n dispatch('startFetchingTimeline', { timeline: 'friends' })\n dispatch('startFetchingNotifications')\n dispatch('startFetchingChats')\n state.mastoUserSocket.close()\n },\n\n // Timelines\n startFetchingTimeline (store, {\n timeline = 'friends',\n tag = false,\n userId = false,\n listId = false\n }) {\n if (store.state.fetchers[timeline]) return\n\n const fetcher = store.state.backendInteractor.startFetchingTimeline({\n timeline, store, userId, listId, tag\n })\n store.commit('addFetcher', { fetcherName: timeline, fetcher })\n },\n stopFetchingTimeline (store, timeline) {\n const fetcher = store.state.fetchers[timeline]\n if (!fetcher) return\n store.commit('removeFetcher', { fetcherName: timeline, fetcher })\n },\n fetchTimeline (store, { timeline, ...rest }) {\n store.state.backendInteractor.fetchTimeline({\n store,\n timeline,\n ...rest\n })\n },\n\n // Notifications\n startFetchingNotifications (store) {\n if (store.state.fetchers.notifications) return\n const fetcher = store.state.backendInteractor.startFetchingNotifications({ store })\n store.commit('addFetcher', { fetcherName: 'notifications', fetcher })\n },\n stopFetchingNotifications (store) {\n const fetcher = store.state.fetchers.notifications\n if (!fetcher) return\n store.commit('removeFetcher', { fetcherName: 'notifications', fetcher })\n },\n fetchNotifications (store, { ...rest }) {\n store.state.backendInteractor.fetchNotifications({\n store,\n ...rest\n })\n },\n\n // Follow requests\n startFetchingFollowRequests (store) {\n if (store.state.fetchers.followRequests) return\n const fetcher = store.state.backendInteractor.startFetchingFollowRequests({ store })\n\n store.commit('addFetcher', { fetcherName: 'followRequests', fetcher })\n },\n stopFetchingFollowRequests (store) {\n const fetcher = store.state.fetchers.followRequests\n if (!fetcher) return\n store.commit('removeFetcher', { fetcherName: 'followRequests', fetcher })\n },\n removeFollowRequest (store, request) {\n const requests = store.state.followRequests.filter((it) => it !== request)\n store.commit('setFollowRequests', requests)\n },\n\n // Lists\n startFetchingLists (store) {\n if (store.state.fetchers.lists) return\n const fetcher = store.state.backendInteractor.startFetchingLists({ store })\n store.commit('addFetcher', { fetcherName: 'lists', fetcher })\n },\n stopFetchingLists (store) {\n const fetcher = store.state.fetchers.lists\n if (!fetcher) return\n store.commit('removeFetcher', { fetcherName: 'lists', fetcher })\n },\n\n // Pleroma websocket\n setWsToken (store, token) {\n store.commit('setWsToken', token)\n },\n initializeSocket ({ dispatch, commit, state, rootState }) {\n // Set up websocket connection\n const token = state.wsToken\n if (rootState.instance.shoutAvailable && typeof token !== 'undefined' && state.socket === null) {\n const socket = new Socket('/socket', { params: { token } })\n socket.connect()\n\n commit('setSocket', socket)\n dispatch('initializeShout', socket)\n }\n },\n disconnectFromSocket ({ commit, state }) {\n state.socket && state.socket.disconnect()\n commit('setSocket', null)\n }\n }\n}\n\nexport default api\n","import Modal from 'src/components/modal/modal.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport pleromaTan from 'src/assets/pleromatan_apology.png'\nimport pleromaTanFox from 'src/assets/pleromatan_apology_fox.png'\nimport pleromaTanMask from 'src/assets/pleromatan_apology_mask.png'\nimport pleromaTanFoxMask from 'src/assets/pleromatan_apology_fox_mask.png'\n\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\nlibrary.add(\n faTimes\n)\n\nexport const CURRENT_UPDATE_COUNTER = 1\n\nconst UpdateNotification = {\n data () {\n return {\n showingImage: false,\n pleromaTanVariant: Math.random() > 0.5 ? pleromaTan : pleromaTanFox,\n showingMore: false\n }\n },\n components: {\n Modal\n },\n computed: {\n pleromaTanStyles () {\n const mask = this.pleromaTanVariant === pleromaTan ? pleromaTanMask : pleromaTanFoxMask\n return {\n 'shape-outside': 'url(' + mask + ')'\n }\n },\n shouldShow () {\n return !this.$store.state.instance.disableUpdateNotification &&\n this.$store.state.users.currentUser &&\n this.$store.state.serverSideStorage.flagStorage.updateCounter < CURRENT_UPDATE_COUNTER &&\n !this.$store.state.serverSideStorage.prefsStorage.simple.dontShowUpdateNotifs\n }\n },\n methods: {\n toggleShow () {\n this.showingMore = !this.showingMore\n },\n neverShowAgain () {\n this.toggleShow()\n this.$store.commit('setFlag', { flag: 'updateCounter', value: CURRENT_UPDATE_COUNTER })\n this.$store.commit('setPreference', { path: 'simple.dontShowUpdateNotifs', value: true })\n this.$store.dispatch('pushServerSideStorage')\n },\n dismiss () {\n this.$store.commit('setFlag', { flag: 'updateCounter', value: CURRENT_UPDATE_COUNTER })\n this.$store.dispatch('pushServerSideStorage')\n }\n },\n mounted () {\n this.contentHeightNoImage = this.$refs.animatedText.scrollHeight\n\n // Workaround to get the text height only after mask loaded. A bit hacky.\n const newImg = new Image()\n newImg.onload = () => {\n setTimeout(() => { this.showingImage = true }, 100)\n }\n newImg.src = this.pleromaTanVariant === pleromaTan ? pleromaTanMask : pleromaTanFoxMask\n }\n}\n\nexport default UpdateNotification\n","import { toRaw } from 'vue'\nimport { isEqual, cloneDeep, set, get, clamp, flatten, groupBy, findLastIndex, takeRight, uniqWith } from 'lodash'\nimport { CURRENT_UPDATE_COUNTER } from 'src/components/update_notification/update_notification.js'\n\nexport const VERSION = 1\nexport const NEW_USER_DATE = new Date('2022-08-04') // date of writing this, basically\n\nexport const COMMAND_TRIM_FLAGS = 1000\nexport const COMMAND_TRIM_FLAGS_AND_RESET = 1001\n\nexport const defaultState = {\n // do we need to update data on server?\n dirty: false,\n // storage of flags - stuff that can only be set and incremented\n flagStorage: {\n updateCounter: 0, // Counter for most recent update notification seen\n reset: 0 // special flag that can be used to force-reset all flags, debug purposes only\n // special reset codes:\n // 1000: trim keys to those known by currently running FE\n // 1001: same as above + reset everything to 0\n },\n prefsStorage: {\n _journal: [],\n simple: {\n dontShowUpdateNotifs: false,\n collapseNav: false\n },\n collections: {\n pinnedNavItems: ['home', 'dms', 'chats']\n }\n },\n // raw data\n raw: null,\n // local cache\n cache: null\n}\n\nexport const newUserFlags = {\n ...defaultState.flagStorage,\n updateCounter: CURRENT_UPDATE_COUNTER // new users don't need to see update notification\n}\n\nexport const _moveItemInArray = (array, value, movement) => {\n const oldIndex = array.indexOf(value)\n const newIndex = oldIndex + movement\n const newArray = [...array]\n // remove old\n newArray.splice(oldIndex, 1)\n // add new\n newArray.splice(clamp(newIndex, 0, newArray.length + 1), 0, value)\n return newArray\n}\n\nconst _wrapData = (data, userName) => ({\n ...data,\n _user: userName,\n _timestamp: Date.now(),\n _version: VERSION\n})\n\nconst _checkValidity = (data) => data._timestamp > 0 && data._version > 0\n\nconst _verifyPrefs = (state) => {\n state.prefsStorage = state.prefsStorage || {\n simple: {},\n collections: {}\n }\n Object.entries(defaultState.prefsStorage.simple).forEach(([k, v]) => {\n if (typeof v === 'number' || typeof v === 'boolean') return\n console.warn(`Preference simple.${k} as invalid type, reinitializing`)\n set(state.prefsStorage.simple, k, defaultState.prefsStorage.simple[k])\n })\n Object.entries(defaultState.prefsStorage.collections).forEach(([k, v]) => {\n if (Array.isArray(v)) return\n console.warn(`Preference collections.${k} as invalid type, reinitializing`)\n set(state.prefsStorage.collections, k, defaultState.prefsStorage.collections[k])\n })\n}\n\nexport const _getRecentData = (cache, live) => {\n const result = { recent: null, stale: null, needUpload: false }\n const cacheValid = _checkValidity(cache || {})\n const liveValid = _checkValidity(live || {})\n if (!liveValid && cacheValid) {\n result.needUpload = true\n console.debug('Nothing valid stored on server, assuming cache to be source of truth')\n result.recent = cache\n result.stale = live\n } else if (!cacheValid && liveValid) {\n console.debug('Valid storage on server found, no local cache found, using live as source of truth')\n result.recent = live\n result.stale = cache\n } else if (cacheValid && liveValid) {\n console.debug('Both sources have valid data, figuring things out...')\n if (live._timestamp === cache._timestamp && live._version === cache._version) {\n console.debug('Same version/timestamp on both source, source of truth irrelevant')\n result.recent = cache\n result.stale = live\n } else {\n console.debug('Different timestamp, figuring out which one is more recent')\n if (live._timestamp < cache._timestamp) {\n result.recent = cache\n result.stale = live\n } else {\n result.recent = live\n result.stale = cache\n }\n }\n } else {\n console.debug('Both sources are invalid, start from scratch')\n result.needUpload = true\n }\n return result\n}\n\nexport const _getAllFlags = (recent, stale) => {\n return Array.from(new Set([\n ...Object.keys(toRaw((recent || {}).flagStorage || {})),\n ...Object.keys(toRaw((stale || {}).flagStorage || {}))\n ]))\n}\n\nexport const _mergeFlags = (recent, stale, allFlagKeys) => {\n if (!stale.flagStorage) return recent.flagStorage\n if (!recent.flagStorage) return stale.flagStorage\n return Object.fromEntries(allFlagKeys.map(flag => {\n const recentFlag = recent.flagStorage[flag]\n const staleFlag = stale.flagStorage[flag]\n // use flag that is of higher value\n return [flag, Number((recentFlag > staleFlag ? recentFlag : staleFlag) || 0)]\n }))\n}\n\nconst _mergeJournal = (...journals) => {\n // Ignore invalid journal entries\n const allJournals = flatten(\n journals.map(j => Array.isArray(j) ? j : [])\n ).filter(entry =>\n Object.prototype.hasOwnProperty.call(entry, 'path') &&\n Object.prototype.hasOwnProperty.call(entry, 'operation') &&\n Object.prototype.hasOwnProperty.call(entry, 'args') &&\n Object.prototype.hasOwnProperty.call(entry, 'timestamp')\n )\n const grouped = groupBy(allJournals, 'path')\n const trimmedGrouped = Object.entries(grouped).map(([path, journal]) => {\n // side effect\n journal.sort((a, b) => a.timestamp > b.timestamp ? 1 : -1)\n\n if (path.startsWith('collections')) {\n const lastRemoveIndex = findLastIndex(journal, ({ operation }) => operation === 'removeFromCollection')\n // everything before last remove is unimportant\n let remainder\n if (lastRemoveIndex > 0) {\n remainder = journal.slice(lastRemoveIndex)\n } else {\n // everything else doesn't need trimming\n remainder = journal\n }\n return uniqWith(remainder, (a, b) => {\n if (a.path !== b.path) { return false }\n if (a.operation !== b.operation) { return false }\n if (a.operation === 'addToCollection') {\n return a.args[0] === b.args[0]\n }\n return false\n })\n } else if (path.startsWith('simple')) {\n // Only the last record is important\n return takeRight(journal)\n } else {\n return journal\n }\n })\n return flatten(trimmedGrouped)\n .sort((a, b) => a.timestamp > b.timestamp ? 1 : -1)\n}\n\nexport const _mergePrefs = (recent, stale, allFlagKeys) => {\n if (!stale) return recent\n if (!recent) return stale\n const { _journal: recentJournal, ...recentData } = recent\n const { _journal: staleJournal } = stale\n /** Journal entry format:\n * path: path to entry in prefsStorage\n * timestamp: timestamp of the change\n * operation: operation type\n * arguments: array of arguments, depends on operation type\n *\n * currently only supported operation type is \"set\" which just sets the value\n * to requested one. Intended only to be used with simple preferences (boolean, number)\n * shouldn't be used with collections!\n */\n const resultOutput = { ...recentData }\n const totalJournal = _mergeJournal(staleJournal, recentJournal)\n totalJournal.forEach(({ path, timestamp, operation, command, args }) => {\n if (path.startsWith('_')) {\n console.error(`journal contains entry to edit internal (starts with _) field '${path}', something is incorrect here, ignoring.`)\n return\n }\n switch (operation) {\n case 'set':\n set(resultOutput, path, args[0])\n break\n case 'addToCollection':\n set(resultOutput, path, Array.from(new Set(get(resultOutput, path)).add(args[0])))\n break\n case 'removeFromCollection': {\n const newSet = new Set(get(resultOutput, path))\n newSet.delete(args[0])\n set(resultOutput, path, Array.from(newSet))\n break\n }\n case 'reorderCollection': {\n const [value, movement] = args\n set(resultOutput, path, _moveItemInArray(get(resultOutput, path), value, movement))\n break\n }\n default:\n console.error(`Unknown journal operation: '${operation}', did we forget to run reverse migrations beforehand?`)\n }\n })\n return { ...resultOutput, _journal: totalJournal }\n}\n\nexport const _resetFlags = (totalFlags, knownKeys = defaultState.flagStorage) => {\n let result = { ...totalFlags }\n const allFlagKeys = Object.keys(totalFlags)\n // flag reset functionality\n if (totalFlags.reset >= COMMAND_TRIM_FLAGS && totalFlags.reset <= COMMAND_TRIM_FLAGS_AND_RESET) {\n console.debug('Received command to trim the flags')\n const knownKeysSet = new Set(Object.keys(knownKeys))\n\n // Trim\n result = {}\n allFlagKeys.forEach(flag => {\n if (knownKeysSet.has(flag)) {\n result[flag] = totalFlags[flag]\n }\n })\n\n // Reset\n if (totalFlags.reset === COMMAND_TRIM_FLAGS_AND_RESET) {\n // 1001 - and reset everything to 0\n console.debug('Received command to reset the flags')\n Object.keys(knownKeys).forEach(flag => { result[flag] = 0 })\n }\n } else if (totalFlags.reset > 0 && totalFlags.reset < 9000) {\n console.debug('Received command to reset the flags')\n allFlagKeys.forEach(flag => { result[flag] = 0 })\n }\n result.reset = 0\n return result\n}\n\nexport const _doMigrations = (cache) => {\n if (!cache) return cache\n\n if (cache._version < VERSION) {\n console.debug('Local cached data has older version, seeing if there any migrations that can be applied')\n\n // no migrations right now since we only have one version\n console.debug('No migrations found')\n }\n\n if (cache._version > VERSION) {\n console.debug('Local cached data has newer version, seeing if there any reverse migrations that can be applied')\n\n // no reverse migrations right now but we leave a possibility of loading a hotpatch if need be\n if (window._PLEROMA_HOTPATCH) {\n if (window._PLEROMA_HOTPATCH.reverseMigrations) {\n console.debug('Found hotpatch migration, applying')\n return window._PLEROMA_HOTPATCH.reverseMigrations.call({}, 'serverSideStorage', { from: cache._version, to: VERSION }, cache)\n }\n }\n }\n\n return cache\n}\n\nexport const mutations = {\n clearServerSideStorage (state, userData) {\n state = { ...cloneDeep(defaultState) }\n },\n setServerSideStorage (state, userData) {\n const live = userData.storage\n state.raw = live\n let cache = state.cache\n if (cache && cache._user !== userData.fqn) {\n console.warn('cache belongs to another user! reinitializing local cache!')\n cache = null\n }\n\n cache = _doMigrations(cache)\n\n let { recent, stale, needsUpload } = _getRecentData(cache, live)\n\n const userNew = userData.created_at > NEW_USER_DATE\n const flagsTemplate = userNew ? newUserFlags : defaultState.flagStorage\n let dirty = false\n\n if (recent === null) {\n console.debug(`Data is empty, initializing for ${userNew ? 'new' : 'existing'} user`)\n recent = _wrapData({\n flagStorage: { ...flagsTemplate },\n prefsStorage: { ...defaultState.prefsStorage }\n })\n }\n\n if (!needsUpload && recent && stale) {\n console.debug('Checking if data needs merging...')\n // discarding timestamps and versions\n const { _timestamp: _0, _version: _1, ...recentData } = recent\n const { _timestamp: _2, _version: _3, ...staleData } = stale\n dirty = !isEqual(recentData, staleData)\n console.debug(`Data ${dirty ? 'needs' : 'doesn\\'t need'} merging`)\n }\n\n const allFlagKeys = _getAllFlags(recent, stale)\n let totalFlags\n let totalPrefs\n if (dirty) {\n // Merge the flags\n console.debug('Merging the data...')\n totalFlags = _mergeFlags(recent, stale, allFlagKeys)\n _verifyPrefs(recent)\n _verifyPrefs(stale)\n totalPrefs = _mergePrefs(recent.prefsStorage, stale.prefsStorage)\n } else {\n totalFlags = recent.flagStorage\n totalPrefs = recent.prefsStorage\n }\n\n totalFlags = _resetFlags(totalFlags)\n\n recent.flagStorage = { ...flagsTemplate, ...totalFlags }\n recent.prefsStorage = { ...defaultState.prefsStorage, ...totalPrefs }\n\n state.dirty = dirty || needsUpload\n state.cache = recent\n // set local timestamp to smaller one if we don't have any changes\n if (stale && recent && !state.dirty) {\n state.cache._timestamp = Math.min(stale._timestamp, recent._timestamp)\n }\n state.flagStorage = state.cache.flagStorage\n state.prefsStorage = state.cache.prefsStorage\n },\n setFlag (state, { flag, value }) {\n state.flagStorage[flag] = value\n state.dirty = true\n },\n setPreference (state, { path, value }) {\n if (path.startsWith('_')) {\n console.error(`tried to edit internal (starts with _) field '${path}', ignoring.`)\n return\n }\n set(state.prefsStorage, path, value)\n state.prefsStorage._journal = [\n ...state.prefsStorage._journal,\n { operation: 'set', path, args: [value], timestamp: Date.now() }\n ]\n state.dirty = true\n },\n addCollectionPreference (state, { path, value }) {\n if (path.startsWith('_')) {\n console.error(`tried to edit internal (starts with _) field '${path}', ignoring.`)\n return\n }\n const collection = new Set(get(state.prefsStorage, path))\n collection.add(value)\n set(state.prefsStorage, path, [...collection])\n state.prefsStorage._journal = [\n ...state.prefsStorage._journal,\n { operation: 'addToCollection', path, args: [value], timestamp: Date.now() }\n ]\n state.dirty = true\n },\n removeCollectionPreference (state, { path, value }) {\n if (path.startsWith('_')) {\n console.error(`tried to edit internal (starts with _) field '${path}', ignoring.`)\n return\n }\n const collection = new Set(get(state.prefsStorage, path))\n collection.delete(value)\n set(state.prefsStorage, path, [...collection])\n state.prefsStorage._journal = [\n ...state.prefsStorage._journal,\n { operation: 'removeFromCollection', path, args: [value], timestamp: Date.now() }\n ]\n state.dirty = true\n },\n reorderCollectionPreference (state, { path, value, movement }) {\n if (path.startsWith('_')) {\n console.error(`tried to edit internal (starts with _) field '${path}', ignoring.`)\n return\n }\n const collection = get(state.prefsStorage, path)\n const newCollection = _moveItemInArray(collection, value, movement)\n set(state.prefsStorage, path, newCollection)\n state.prefsStorage._journal = [\n ...state.prefsStorage._journal,\n { operation: 'arrangeCollection', path, args: [value], timestamp: Date.now() }\n ]\n state.dirty = true\n },\n updateCache (state, { username }) {\n state.prefsStorage._journal = _mergeJournal(state.prefsStorage._journal)\n state.cache = _wrapData({\n flagStorage: toRaw(state.flagStorage),\n prefsStorage: toRaw(state.prefsStorage)\n }, username)\n }\n}\n\nconst serverSideStorage = {\n state: {\n ...cloneDeep(defaultState)\n },\n mutations,\n actions: {\n pushServerSideStorage ({ state, rootState, commit }, { force = false } = {}) {\n const needPush = state.dirty || force\n console.log(needPush)\n if (!needPush) return\n commit('updateCache', { username: rootState.users.currentUser.fqn })\n const params = { pleroma_settings_store: { 'pleroma-fe': state.cache } }\n rootState.api.backendInteractor\n .updateProfile({ params })\n .then((user) => {\n commit('setServerSideStorage', user)\n state.dirty = false\n })\n }\n }\n}\n\nexport default serverSideStorage\n","const shout = {\n state: {\n messages: [],\n channel: { state: '' },\n joined: false\n },\n mutations: {\n setChannel (state, channel) {\n state.channel = channel\n },\n addMessage (state, message) {\n state.messages.push(message)\n state.messages = state.messages.slice(-19, 20)\n },\n setMessages (state, messages) {\n state.messages = messages.slice(-19, 20)\n },\n setJoined (state, joined) {\n state.joined = joined\n }\n },\n actions: {\n initializeShout (store, socket) {\n const channel = socket.channel('chat:public')\n channel.joinPush.receive('ok', () => {\n store.commit('setJoined', true)\n })\n channel.onClose(() => {\n store.commit('setJoined', false)\n })\n channel.onError(() => {\n store.commit('setJoined', false)\n })\n channel.on('new_msg', (msg) => {\n store.commit('addMessage', msg)\n })\n channel.on('messages', ({ messages }) => {\n store.commit('setMessages', messages)\n })\n channel.join()\n store.commit('setChannel', channel)\n }\n }\n}\n\nexport default shout\n","const oauth = {\n state: {\n clientId: false,\n clientSecret: false,\n /* App token is authentication for app without any user, used mostly for\n * MastoAPI's registration of new users, stored so that we can fall back to\n * it on logout\n */\n appToken: false,\n /* User token is authentication for app with user, this is for every calls\n * that need authorized user to be successful (i.e. posting, liking etc)\n */\n userToken: false\n },\n mutations: {\n setClientData (state, { clientId, clientSecret }) {\n state.clientId = clientId\n state.clientSecret = clientSecret\n },\n setAppToken (state, token) {\n state.appToken = token\n },\n setToken (state, token) {\n state.userToken = token\n },\n clearToken (state) {\n state.userToken = false\n // state.token is userToken with older name, coming from persistent state\n // let's clear it as well, since it is being used as a fallback of state.userToken\n delete state.token\n }\n },\n getters: {\n getToken: state => () => {\n // state.token is userToken with older name, coming from persistent state\n // added here for smoother transition, otherwise user will be logged out\n return state.userToken || state.token || state.appToken\n },\n getUserToken: state => () => {\n // state.token is userToken with older name, coming from persistent state\n // added here for smoother transition, otherwise user will be logged out\n return state.userToken || state.token\n }\n }\n}\n\nexport default oauth\n","const PASSWORD_STRATEGY = 'password'\nconst TOKEN_STRATEGY = 'token'\n\n// MFA strategies\nconst TOTP_STRATEGY = 'totp'\nconst RECOVERY_STRATEGY = 'recovery'\n\n// initial state\nconst state = {\n settings: {},\n strategy: PASSWORD_STRATEGY,\n initStrategy: PASSWORD_STRATEGY // default strategy from config\n}\n\nconst resetState = (state) => {\n state.strategy = state.initStrategy\n state.settings = {}\n}\n\n// getters\nconst getters = {\n settings: (state, getters) => {\n return state.settings\n },\n requiredPassword: (state, getters, rootState) => {\n return state.strategy === PASSWORD_STRATEGY\n },\n requiredToken: (state, getters, rootState) => {\n return state.strategy === TOKEN_STRATEGY\n },\n requiredTOTP: (state, getters, rootState) => {\n return state.strategy === TOTP_STRATEGY\n },\n requiredRecovery: (state, getters, rootState) => {\n return state.strategy === RECOVERY_STRATEGY\n }\n}\n\n// mutations\nconst mutations = {\n setInitialStrategy (state, strategy) {\n if (strategy) {\n state.initStrategy = strategy\n state.strategy = strategy\n }\n },\n requirePassword (state) {\n state.strategy = PASSWORD_STRATEGY\n },\n requireToken (state) {\n state.strategy = TOKEN_STRATEGY\n },\n requireMFA (state, { settings }) {\n state.settings = settings\n state.strategy = TOTP_STRATEGY // default strategy of MFA\n },\n requireRecovery (state) {\n state.strategy = RECOVERY_STRATEGY\n },\n requireTOTP (state) {\n state.strategy = TOTP_STRATEGY\n },\n abortMFA (state) {\n resetState(state)\n }\n}\n\n// actions\nconst actions = {\n // eslint-disable-next-line camelcase\n async login ({ state, dispatch, commit }, { access_token }) {\n commit('setToken', access_token, { root: true })\n await dispatch('loginUser', access_token, { root: true })\n resetState(state)\n }\n}\n\nexport default {\n namespaced: true,\n state,\n getters,\n mutations,\n actions\n}\n","import fileTypeService from '../services/file_type/file_type.service.js'\nconst supportedTypes = new Set(['image', 'video', 'audio', 'flash'])\n\nconst mediaViewer = {\n state: {\n media: [],\n currentIndex: 0,\n activated: false\n },\n mutations: {\n setMedia (state, media) {\n state.media = media\n },\n setCurrentMedia (state, index) {\n state.activated = true\n state.currentIndex = index\n },\n close (state) {\n state.activated = false\n }\n },\n actions: {\n setMedia ({ commit }, attachments) {\n const media = attachments.filter(attachment => {\n const type = fileTypeService.fileType(attachment.mimetype)\n return supportedTypes.has(type)\n })\n commit('setMedia', media)\n },\n setCurrentMedia ({ commit, state }, current) {\n const index = state.media.indexOf(current)\n commit('setCurrentMedia', index || 0)\n },\n closeMediaViewer ({ commit }) {\n commit('close')\n }\n }\n}\n\nexport default mediaViewer\n","const oauthTokens = {\n state: {\n tokens: []\n },\n actions: {\n fetchTokens ({ rootState, commit }) {\n rootState.api.backendInteractor.fetchOAuthTokens().then((tokens) => {\n commit('swapTokens', tokens)\n })\n },\n revokeToken ({ rootState, commit, state }, id) {\n rootState.api.backendInteractor.revokeOAuthToken({ id }).then((response) => {\n if (response.status === 201) {\n commit('swapTokens', state.tokens.filter(token => token.id !== id))\n }\n })\n }\n },\n mutations: {\n swapTokens (state, tokens) {\n state.tokens = tokens\n }\n }\n}\n\nexport default oauthTokens\n","import filter from 'lodash/filter'\n\nconst reports = {\n state: {\n reportModal: {\n userId: null,\n statuses: [],\n preTickedIds: [],\n activated: false\n },\n reports: {}\n },\n mutations: {\n openUserReportingModal (state, { userId, statuses, preTickedIds }) {\n state.reportModal.userId = userId\n state.reportModal.statuses = statuses\n state.reportModal.preTickedIds = preTickedIds\n state.reportModal.activated = true\n },\n closeUserReportingModal (state) {\n state.reportModal.activated = false\n },\n setReportState (reportsState, { id, state }) {\n reportsState.reports[id].state = state\n },\n addReport (state, report) {\n state.reports[report.id] = report\n }\n },\n actions: {\n openUserReportingModal ({ rootState, commit }, { userId, statusIds = [] }) {\n const preTickedStatuses = statusIds.map(id => rootState.statuses.allStatusesObject[id])\n const preTickedIds = statusIds\n const statuses = preTickedStatuses.concat(\n filter(rootState.statuses.allStatuses,\n status => status.user.id === userId && !preTickedIds.includes(status.id)\n )\n )\n commit('openUserReportingModal', { userId, statuses, preTickedIds })\n },\n closeUserReportingModal ({ commit }) {\n commit('closeUserReportingModal')\n },\n setReportState ({ commit, dispatch, rootState }, { id, state }) {\n const oldState = rootState.reports.reports[id].state\n commit('setReportState', { id, state })\n rootState.api.backendInteractor.setReportState({ id, state }).catch(e => {\n console.error('Failed to set report state', e)\n dispatch('pushGlobalNotice', {\n level: 'error',\n messageKey: 'general.generic_error_message',\n messageArgs: [e.message],\n timeout: 5000\n })\n commit('setReportState', { id, state: oldState })\n })\n },\n addReport ({ commit }, report) {\n commit('addReport', report)\n }\n }\n}\n\nexport default reports\n","import { merge } from 'lodash'\n\nconst polls = {\n state: {\n // Contains key = id, value = number of trackers for this poll\n trackedPolls: {},\n pollsObject: {}\n },\n mutations: {\n mergeOrAddPoll (state, poll) {\n const existingPoll = state.pollsObject[poll.id]\n // Make expired-state change trigger re-renders properly\n poll.expired = Date.now() > Date.parse(poll.expires_at)\n if (existingPoll) {\n state.pollsObject[poll.id] = merge(existingPoll, poll)\n } else {\n state.pollsObject[poll.id] = poll\n }\n },\n trackPoll (state, pollId) {\n const currentValue = state.trackedPolls[pollId]\n if (currentValue) {\n state.trackedPolls[pollId] = currentValue + 1\n } else {\n state.trackedPolls[pollId] = 1\n }\n },\n untrackPoll (state, pollId) {\n const currentValue = state.trackedPolls[pollId]\n if (currentValue) {\n state.trackedPolls[pollId] = currentValue - 1\n } else {\n state.trackedPolls[pollId] = 0\n }\n }\n },\n actions: {\n mergeOrAddPoll ({ commit }, poll) {\n commit('mergeOrAddPoll', poll)\n },\n updateTrackedPoll ({ rootState, dispatch, commit }, pollId) {\n rootState.api.backendInteractor.fetchPoll({ pollId }).then(poll => {\n setTimeout(() => {\n if (rootState.polls.trackedPolls[pollId]) {\n dispatch('updateTrackedPoll', pollId)\n }\n }, 30 * 1000)\n commit('mergeOrAddPoll', poll)\n })\n },\n trackPoll ({ rootState, commit, dispatch }, pollId) {\n if (!rootState.polls.trackedPolls[pollId]) {\n setTimeout(() => dispatch('updateTrackedPoll', pollId), 30 * 1000)\n }\n commit('trackPoll', pollId)\n },\n untrackPoll ({ commit }, pollId) {\n commit('untrackPoll', pollId)\n },\n votePoll ({ rootState, commit }, { id, pollId, choices }) {\n return rootState.api.backendInteractor.vote({ pollId, choices }).then(poll => {\n commit('mergeOrAddPoll', poll)\n return poll\n })\n }\n }\n}\n\nexport default polls\n","const postStatus = {\n state: {\n params: null,\n modalActivated: false\n },\n mutations: {\n openPostStatusModal (state, params) {\n state.params = params\n state.modalActivated = true\n },\n closePostStatusModal (state) {\n state.modalActivated = false\n }\n },\n actions: {\n openPostStatusModal ({ commit }, params) {\n commit('openPostStatusModal', params)\n },\n closePostStatusModal ({ commit }) {\n commit('closePostStatusModal')\n }\n }\n}\n\nexport default postStatus\n","const editStatus = {\n state: {\n params: null,\n modalActivated: false\n },\n mutations: {\n openEditStatusModal (state, params) {\n state.params = params\n state.modalActivated = true\n },\n closeEditStatusModal (state) {\n state.modalActivated = false\n }\n },\n actions: {\n openEditStatusModal ({ commit }, params) {\n commit('openEditStatusModal', params)\n },\n closeEditStatusModal ({ commit }) {\n commit('closeEditStatusModal')\n }\n }\n}\n\nexport default editStatus\n","const statusHistory = {\n state: {\n params: {},\n modalActivated: false\n },\n mutations: {\n openStatusHistoryModal (state, params) {\n state.params = params\n state.modalActivated = true\n },\n closeStatusHistoryModal (state) {\n state.modalActivated = false\n }\n },\n actions: {\n openStatusHistoryModal ({ commit }, params) {\n commit('openStatusHistoryModal', params)\n },\n closeStatusHistoryModal ({ commit }) {\n commit('closeStatusHistoryModal')\n }\n }\n}\n\nexport default statusHistory\n","import _ from 'lodash'\n\nconst empty = (chatId) => {\n return {\n idIndex: {},\n idempotencyKeyIndex: {},\n messages: [],\n newMessageCount: 0,\n lastSeenMessageId: '0',\n chatId,\n minId: undefined,\n maxId: undefined\n }\n}\n\nconst clear = (storage) => {\n const failedMessageIds = []\n\n for (const message of storage.messages) {\n if (message.error) {\n failedMessageIds.push(message.id)\n } else {\n delete storage.idIndex[message.id]\n delete storage.idempotencyKeyIndex[message.idempotency_key]\n }\n }\n\n storage.messages = storage.messages.filter(m => failedMessageIds.includes(m.id))\n storage.newMessageCount = 0\n storage.lastSeenMessageId = '0'\n storage.minId = undefined\n storage.maxId = undefined\n}\n\nconst deleteMessage = (storage, messageId) => {\n if (!storage) { return }\n storage.messages = storage.messages.filter(m => m.id !== messageId)\n delete storage.idIndex[messageId]\n\n if (storage.maxId === messageId) {\n const lastMessage = _.maxBy(storage.messages, 'id')\n storage.maxId = lastMessage.id\n }\n\n if (storage.minId === messageId) {\n const firstMessage = _.minBy(storage.messages, 'id')\n storage.minId = firstMessage.id\n }\n}\n\nconst cullOlderMessages = (storage) => {\n const maxIndex = storage.messages.length\n const minIndex = maxIndex - 50\n if (maxIndex <= 50) return\n\n storage.messages = _.sortBy(storage.messages, ['id'])\n storage.minId = storage.messages[minIndex].id\n for (const message of storage.messages) {\n if (message.id < storage.minId) {\n delete storage.idIndex[message.id]\n delete storage.idempotencyKeyIndex[message.idempotency_key]\n }\n }\n storage.messages = storage.messages.slice(minIndex, maxIndex)\n}\n\nconst handleMessageError = (storage, fakeId, isRetry) => {\n if (!storage) { return }\n const fakeMessage = storage.idIndex[fakeId]\n if (fakeMessage) {\n fakeMessage.error = true\n fakeMessage.pending = false\n if (!isRetry) {\n // Ensure the failed message doesn't stay at the bottom of the list.\n const lastPersistedMessage = _.orderBy(storage.messages, ['pending', 'id'], ['asc', 'desc'])[0]\n if (lastPersistedMessage) {\n const oldId = fakeMessage.id\n fakeMessage.id = `${lastPersistedMessage.id}-${new Date().getTime()}`\n storage.idIndex[fakeMessage.id] = fakeMessage\n delete storage.idIndex[oldId]\n }\n }\n }\n}\n\nconst add = (storage, { messages: newMessages, updateMaxId = true }) => {\n if (!storage) { return }\n for (let i = 0; i < newMessages.length; i++) {\n const message = newMessages[i]\n\n // sanity check\n if (message.chat_id !== storage.chatId) { return }\n\n if (message.fakeId) {\n const fakeMessage = storage.idIndex[message.fakeId]\n if (fakeMessage) {\n // In case the same id exists (chat update before POST response)\n // make sure to remove the older duplicate message.\n if (storage.idIndex[message.id]) {\n delete storage.idIndex[message.id]\n storage.messages = storage.messages.filter(msg => msg.id !== message.id)\n }\n Object.assign(fakeMessage, message, { error: false })\n delete fakeMessage.fakeId\n storage.idIndex[fakeMessage.id] = fakeMessage\n delete storage.idIndex[message.fakeId]\n\n return\n }\n }\n\n if (!storage.minId || (!message.pending && message.id < storage.minId)) {\n storage.minId = message.id\n }\n\n if (!storage.maxId || message.id > storage.maxId) {\n if (updateMaxId) {\n storage.maxId = message.id\n }\n }\n\n if (!storage.idIndex[message.id] && !isConfirmation(storage, message)) {\n if (storage.lastSeenMessageId < message.id) {\n storage.newMessageCount++\n }\n storage.idIndex[message.id] = message\n storage.messages.push(storage.idIndex[message.id])\n storage.idempotencyKeyIndex[message.idempotency_key] = true\n }\n }\n}\n\nconst isConfirmation = (storage, message) => {\n if (!message.idempotency_key) return\n return storage.idempotencyKeyIndex[message.idempotency_key]\n}\n\nconst resetNewMessageCount = (storage) => {\n if (!storage) { return }\n storage.newMessageCount = 0\n storage.lastSeenMessageId = storage.maxId\n}\n\n// Inserts date separators and marks the head and tail if it's the chain of messages made by the same user\nconst getView = (storage) => {\n if (!storage) { return [] }\n\n const result = []\n const messages = _.orderBy(storage.messages, ['pending', 'id'], ['asc', 'asc'])\n const firstMessage = messages[0]\n let previousMessage = messages[messages.length - 1]\n let currentMessageChainId\n\n if (firstMessage) {\n const date = new Date(firstMessage.created_at)\n date.setHours(0, 0, 0, 0)\n result.push({\n type: 'date',\n date,\n id: date.getTime().toString()\n })\n }\n\n let afterDate = false\n\n for (let i = 0; i < messages.length; i++) {\n const message = messages[i]\n const nextMessage = messages[i + 1]\n\n const date = new Date(message.created_at)\n date.setHours(0, 0, 0, 0)\n\n // insert date separator and start a new message chain\n if (previousMessage && previousMessage.date < date) {\n result.push({\n type: 'date',\n date,\n id: date.getTime().toString()\n })\n\n previousMessage.isTail = true\n currentMessageChainId = undefined\n afterDate = true\n }\n\n const object = {\n type: 'message',\n data: message,\n date,\n id: message.id,\n messageChainId: currentMessageChainId\n }\n\n // end a message chian\n if ((nextMessage && nextMessage.account_id) !== message.account_id) {\n object.isTail = true\n currentMessageChainId = undefined\n }\n\n // start a new message chain\n if ((previousMessage && previousMessage.data && previousMessage.data.account_id) !== message.account_id || afterDate) {\n currentMessageChainId = _.uniqueId()\n object.isHead = true\n object.messageChainId = currentMessageChainId\n }\n\n result.push(object)\n previousMessage = object\n afterDate = false\n }\n\n return result\n}\n\nconst ChatService = {\n add,\n empty,\n getView,\n deleteMessage,\n cullOlderMessages,\n resetNewMessageCount,\n clear,\n handleMessageError\n}\n\nexport default ChatService\n","import { reactive } from 'vue'\nimport { find, omitBy, orderBy, sumBy } from 'lodash'\nimport chatService from '../services/chat_service/chat_service.js'\nimport { parseChat, parseChatMessage } from '../services/entity_normalizer/entity_normalizer.service.js'\nimport { maybeShowChatNotification } from '../services/chat_utils/chat_utils.js'\nimport { promiseInterval } from '../services/promise_interval/promise_interval.js'\n\nconst emptyChatList = () => ({\n data: [],\n idStore: {}\n})\n\nconst defaultState = {\n chatList: emptyChatList(),\n chatListFetcher: null,\n openedChats: reactive({}),\n openedChatMessageServices: reactive({}),\n fetcher: undefined,\n currentChatId: null,\n lastReadMessageId: null\n}\n\nconst getChatById = (state, id) => {\n return find(state.chatList.data, { id })\n}\n\nconst sortedChatList = (state) => {\n return orderBy(state.chatList.data, ['updated_at'], ['desc'])\n}\n\nconst unreadChatCount = (state) => {\n return sumBy(state.chatList.data, 'unread')\n}\n\nconst chats = {\n state: { ...defaultState },\n getters: {\n currentChat: state => state.openedChats[state.currentChatId],\n currentChatMessageService: state => state.openedChatMessageServices[state.currentChatId],\n findOpenedChatByRecipientId: state => recipientId => find(state.openedChats, c => c.account.id === recipientId),\n sortedChatList,\n unreadChatCount\n },\n actions: {\n // Chat list\n startFetchingChats ({ dispatch, commit }) {\n const fetcher = () => dispatch('fetchChats', { latest: true })\n fetcher()\n commit('setChatListFetcher', {\n fetcher: () => promiseInterval(fetcher, 5000)\n })\n },\n stopFetchingChats ({ commit }) {\n commit('setChatListFetcher', { fetcher: undefined })\n },\n fetchChats ({ dispatch, rootState, commit }, params = {}) {\n return rootState.api.backendInteractor.chats()\n .then(({ chats }) => {\n dispatch('addNewChats', { chats })\n return chats\n })\n },\n addNewChats (store, { chats }) {\n const { commit, dispatch, rootGetters } = store\n const newChatMessageSideEffects = (chat) => {\n maybeShowChatNotification(store, chat)\n }\n commit('addNewChats', { dispatch, chats, rootGetters, newChatMessageSideEffects })\n },\n updateChat ({ commit }, { chat }) {\n commit('updateChat', { chat })\n },\n\n // Opened Chats\n startFetchingCurrentChat ({ commit, dispatch }, { fetcher }) {\n dispatch('setCurrentChatFetcher', { fetcher })\n },\n setCurrentChatFetcher ({ rootState, commit }, { fetcher }) {\n commit('setCurrentChatFetcher', { fetcher })\n },\n addOpenedChat ({ rootState, commit, dispatch }, { chat }) {\n commit('addOpenedChat', { dispatch, chat: parseChat(chat) })\n dispatch('addNewUsers', [chat.account])\n },\n addChatMessages ({ commit }, value) {\n commit('addChatMessages', { commit, ...value })\n },\n resetChatNewMessageCount ({ commit }, value) {\n commit('resetChatNewMessageCount', value)\n },\n clearCurrentChat ({ rootState, commit, dispatch }, value) {\n commit('setCurrentChatId', { chatId: undefined })\n commit('setCurrentChatFetcher', { fetcher: undefined })\n },\n readChat ({ rootState, commit, dispatch }, { id, lastReadId }) {\n const isNewMessage = rootState.chats.lastReadMessageId !== lastReadId\n\n dispatch('resetChatNewMessageCount')\n commit('readChat', { id, lastReadId })\n\n if (isNewMessage) {\n rootState.api.backendInteractor.readChat({ id, lastReadId })\n }\n },\n deleteChatMessage ({ rootState, commit }, value) {\n rootState.api.backendInteractor.deleteChatMessage(value)\n commit('deleteChatMessage', { commit, ...value })\n },\n resetChats ({ commit, dispatch }) {\n dispatch('clearCurrentChat')\n commit('resetChats', { commit })\n },\n clearOpenedChats ({ rootState, commit, dispatch, rootGetters }) {\n commit('clearOpenedChats', { commit })\n },\n handleMessageError ({ commit }, value) {\n commit('handleMessageError', { commit, ...value })\n },\n cullOlderMessages ({ commit }, chatId) {\n commit('cullOlderMessages', chatId)\n }\n },\n mutations: {\n setChatListFetcher (state, { commit, fetcher }) {\n const prevFetcher = state.chatListFetcher\n if (prevFetcher) {\n prevFetcher.stop()\n }\n state.chatListFetcher = fetcher && fetcher()\n },\n setCurrentChatFetcher (state, { fetcher }) {\n const prevFetcher = state.fetcher\n if (prevFetcher) {\n prevFetcher.stop()\n }\n state.fetcher = fetcher && fetcher()\n },\n addOpenedChat (state, { _dispatch, chat }) {\n state.currentChatId = chat.id\n state.openedChats[chat.id] = chat\n\n if (!state.openedChatMessageServices[chat.id]) {\n state.openedChatMessageServices[chat.id] = chatService.empty(chat.id)\n }\n },\n setCurrentChatId (state, { chatId }) {\n state.currentChatId = chatId\n },\n addNewChats (state, { chats, newChatMessageSideEffects }) {\n chats.forEach((updatedChat) => {\n const chat = getChatById(state, updatedChat.id)\n\n if (chat) {\n const isNewMessage = (chat.lastMessage && chat.lastMessage.id) !== (updatedChat.lastMessage && updatedChat.lastMessage.id)\n chat.lastMessage = updatedChat.lastMessage\n chat.unread = updatedChat.unread\n chat.updated_at = updatedChat.updated_at\n if (isNewMessage && chat.unread) {\n newChatMessageSideEffects(updatedChat)\n }\n } else {\n state.chatList.data.push(updatedChat)\n state.chatList.idStore[updatedChat.id] = updatedChat\n }\n })\n },\n updateChat (state, { _dispatch, chat: updatedChat, _rootGetters }) {\n const chat = getChatById(state, updatedChat.id)\n if (chat) {\n chat.lastMessage = updatedChat.lastMessage\n chat.unread = updatedChat.unread\n chat.updated_at = updatedChat.updated_at\n }\n if (!chat) { state.chatList.data.unshift(updatedChat) }\n state.chatList.idStore[updatedChat.id] = updatedChat\n },\n deleteChat (state, { _dispatch, id, _rootGetters }) {\n state.chats.data = state.chats.data.filter(conversation =>\n conversation.last_status.id !== id\n )\n state.chats.idStore = omitBy(state.chats.idStore, conversation => conversation.last_status.id === id)\n },\n resetChats (state, { commit }) {\n state.chatList = emptyChatList()\n state.currentChatId = null\n commit('setChatListFetcher', { fetcher: undefined })\n for (const chatId in state.openedChats) {\n chatService.clear(state.openedChatMessageServices[chatId])\n delete state.openedChats[chatId]\n delete state.openedChatMessageServices[chatId]\n }\n },\n setChatsLoading (state, { value }) {\n state.chats.loading = value\n },\n addChatMessages (state, { chatId, messages, updateMaxId }) {\n const chatMessageService = state.openedChatMessageServices[chatId]\n if (chatMessageService) {\n chatService.add(chatMessageService, { messages: messages.map(parseChatMessage), updateMaxId })\n }\n },\n deleteChatMessage (state, { chatId, messageId }) {\n const chatMessageService = state.openedChatMessageServices[chatId]\n if (chatMessageService) {\n chatService.deleteMessage(chatMessageService, messageId)\n }\n },\n resetChatNewMessageCount (state, _value) {\n const chatMessageService = state.openedChatMessageServices[state.currentChatId]\n chatService.resetNewMessageCount(chatMessageService)\n },\n // Used when a connection loss occurs\n clearOpenedChats (state) {\n const currentChatId = state.currentChatId\n for (const chatId in state.openedChats) {\n if (currentChatId !== chatId) {\n chatService.clear(state.openedChatMessageServices[chatId])\n delete state.openedChats[chatId]\n delete state.openedChatMessageServices[chatId]\n }\n }\n },\n readChat (state, { id, lastReadId }) {\n state.lastReadMessageId = lastReadId\n const chat = getChatById(state, id)\n if (chat) {\n chat.unread = 0\n }\n },\n handleMessageError (state, { chatId, fakeId, isRetry }) {\n const chatMessageService = state.openedChatMessageServices[chatId]\n chatService.handleMessageError(chatMessageService, fakeId, isRetry)\n },\n cullOlderMessages (state, chatId) {\n chatService.cullOlderMessages(state.openedChatMessageServices[chatId])\n }\n }\n}\n\nexport default chats\n","const FETCH_ANNOUNCEMENT_INTERVAL_MS = 1000 * 60 * 5\n\nexport const defaultState = {\n announcements: [],\n supportsAnnouncements: true,\n fetchAnnouncementsTimer: undefined\n}\n\nexport const mutations = {\n setAnnouncements (state, announcements) {\n state.announcements = announcements\n },\n setAnnouncementRead (state, { id, read }) {\n const index = state.announcements.findIndex(a => a.id === id)\n\n if (index < 0) {\n return\n }\n\n state.announcements[index].read = read\n },\n setFetchAnnouncementsTimer (state, timer) {\n state.fetchAnnouncementsTimer = timer\n },\n setSupportsAnnouncements (state, supportsAnnouncements) {\n state.supportsAnnouncements = supportsAnnouncements\n }\n}\n\nexport const getters = {\n unreadAnnouncementCount (state, _getters, rootState) {\n if (!rootState.users.currentUser) {\n return 0\n }\n\n const unread = state.announcements.filter(announcement => !(announcement.inactive || announcement.read))\n return unread.length\n }\n}\n\nconst announcements = {\n state: defaultState,\n mutations,\n getters,\n actions: {\n fetchAnnouncements (store) {\n if (!store.state.supportsAnnouncements) {\n return Promise.resolve()\n }\n\n const currentUser = store.rootState.users.currentUser\n const isAdmin = currentUser && currentUser.privileges.includes('announcements_manage_announcements')\n\n const getAnnouncements = async () => {\n if (!isAdmin) {\n return store.rootState.api.backendInteractor.fetchAnnouncements()\n }\n\n const all = await store.rootState.api.backendInteractor.adminFetchAnnouncements()\n const visible = await store.rootState.api.backendInteractor.fetchAnnouncements()\n const visibleObject = visible.reduce((a, c) => {\n a[c.id] = c\n return a\n }, {})\n const getWithinVisible = announcement => visibleObject[announcement.id]\n\n all.forEach(announcement => {\n const visibleAnnouncement = getWithinVisible(announcement)\n if (!visibleAnnouncement) {\n announcement.inactive = true\n } else {\n announcement.read = visibleAnnouncement.read\n }\n })\n\n return all\n }\n\n return getAnnouncements()\n .then(announcements => {\n store.commit('setAnnouncements', announcements)\n })\n .catch(error => {\n // If and only if backend does not support announcements, it would return 404.\n // In this case, silently ignores it.\n if (error && error.statusCode === 404) {\n store.commit('setSupportsAnnouncements', false)\n } else {\n throw error\n }\n })\n },\n markAnnouncementAsRead (store, id) {\n return store.rootState.api.backendInteractor.dismissAnnouncement({ id })\n .then(() => {\n store.commit('setAnnouncementRead', { id, read: true })\n })\n },\n startFetchingAnnouncements (store) {\n if (store.state.fetchAnnouncementsTimer) {\n return\n }\n\n const interval = setInterval(() => store.dispatch('fetchAnnouncements'), FETCH_ANNOUNCEMENT_INTERVAL_MS)\n store.commit('setFetchAnnouncementsTimer', interval)\n\n return store.dispatch('fetchAnnouncements')\n },\n stopFetchingAnnouncements (store) {\n const interval = store.state.fetchAnnouncementsTimer\n store.commit('setFetchAnnouncementsTimer', undefined)\n clearInterval(interval)\n },\n postAnnouncement (store, { content, startsAt, endsAt, allDay }) {\n return store.rootState.api.backendInteractor.postAnnouncement({ content, startsAt, endsAt, allDay })\n .then(() => {\n return store.dispatch('fetchAnnouncements')\n })\n },\n editAnnouncement (store, { id, content, startsAt, endsAt, allDay }) {\n return store.rootState.api.backendInteractor.editAnnouncement({ id, content, startsAt, endsAt, allDay })\n .then(() => {\n return store.dispatch('fetchAnnouncements')\n })\n },\n deleteAnnouncement (store, id) {\n return store.rootState.api.backendInteractor.deleteAnnouncement({ id })\n .then(() => {\n return store.dispatch('fetchAnnouncements')\n })\n }\n }\n}\n\nexport default announcements\n","import merge from 'lodash.merge'\nimport localforage from 'localforage'\nimport { each, get, set, cloneDeep } from 'lodash'\n\nlet loaded = false\n\nconst defaultReducer = (state, paths) => (\n paths.length === 0\n ? state\n : paths.reduce((substate, path) => {\n set(substate, path, get(state, path))\n return substate\n }, {})\n)\n\nconst saveImmedeatelyActions = [\n 'markNotificationsAsSeen',\n 'clearCurrentUser',\n 'setCurrentUser',\n 'setServerSideStorage',\n 'setHighlight',\n 'setOption',\n 'setClientData',\n 'setToken',\n 'clearToken'\n]\n\nconst defaultStorage = (() => {\n return localforage\n})()\n\nexport default function createPersistedState ({\n key = 'vuex-lz',\n paths = [],\n getState = (key, storage) => {\n const value = storage.getItem(key)\n return value\n },\n setState = (key, state, storage) => {\n if (!loaded) {\n console.log('waiting for old state to be loaded...')\n return Promise.resolve()\n } else {\n return storage.setItem(key, state)\n }\n },\n reducer = defaultReducer,\n storage = defaultStorage,\n subscriber = store => handler => store.subscribe(handler)\n} = {}) {\n return getState(key, storage).then((savedState) => {\n return store => {\n try {\n if (savedState !== null && typeof savedState === 'object') {\n // build user cache\n const usersState = savedState.users || {}\n usersState.usersObject = {}\n const users = usersState.users || []\n each(users, (user) => { usersState.usersObject[user.id] = user })\n savedState.users = usersState\n\n store.replaceState(\n merge({}, store.state, savedState)\n )\n }\n loaded = true\n } catch (e) {\n console.log(\"Couldn't load state\")\n console.error(e)\n loaded = true\n }\n subscriber(store)((mutation, state) => {\n try {\n if (saveImmedeatelyActions.includes(mutation.type)) {\n setState(key, reducer(cloneDeep(state), paths), storage)\n .then(success => {\n if (typeof success !== 'undefined') {\n if (mutation.type === 'setOption' || mutation.type === 'setCurrentUser') {\n store.dispatch('settingsSaved', { success })\n }\n }\n }, error => {\n if (mutation.type === 'setOption' || mutation.type === 'setCurrentUser') {\n store.dispatch('settingsSaved', { error })\n }\n })\n }\n } catch (e) {\n console.log(\"Couldn't persist state:\")\n console.log(e)\n }\n })\n }\n })\n}\n","export default (store) => {\n store.subscribe((mutation, state) => {\n const vapidPublicKey = state.instance.vapidPublicKey\n const webPushNotification = state.config.webPushNotifications\n const permission = state.interface.notificationPermission === 'granted'\n const user = state.users.currentUser\n\n const isUserMutation = mutation.type === 'setCurrentUser'\n const isVapidMutation = mutation.type === 'setInstanceOption' && mutation.payload.name === 'vapidPublicKey'\n const isPermMutation = mutation.type === 'setNotificationPermission' && mutation.payload === 'granted'\n const isUserConfigMutation = mutation.type === 'setOption' && mutation.payload.name === 'webPushNotifications'\n const isVisibilityMutation = mutation.type === 'setOption' && mutation.payload.name === 'notificationVisibility'\n\n if (isUserMutation || isVapidMutation || isPermMutation || isUserConfigMutation || isVisibilityMutation) {\n if (user && vapidPublicKey && permission && webPushNotification) {\n return store.dispatch('registerPushNotifications')\n } else if (isUserConfigMutation && !webPushNotification) {\n return store.dispatch('unregisterPushNotifications')\n }\n }\n })\n}\n","<template>\n <div\n id=\"app-loaded\"\n :style=\"bgStyle\"\n >\n <div\n id=\"app_bg_wrapper\"\n class=\"app-bg-wrapper\"\n />\n <MobileNav v-if=\"layoutType === 'mobile'\" />\n <DesktopNav\n v-else\n :class=\"navClasses\"\n />\n <Notifications v-if=\"currentUser\" />\n <div\n id=\"content\"\n class=\"app-layout container\"\n :class=\"classes\"\n >\n <div class=\"underlay\" />\n <div\n id=\"sidebar\"\n class=\"column -scrollable\"\n :class=\"{ '-show-scrollbar': showScrollbars }\"\n >\n <user-panel />\n <template v-if=\"layoutType !== 'mobile'\">\n <nav-panel />\n <instance-specific-panel v-if=\"showInstanceSpecificPanel\" />\n <features-panel v-if=\"!currentUser && showFeaturesPanel\" />\n <who-to-follow-panel v-if=\"currentUser && suggestionsEnabled\" />\n <div id=\"notifs-sidebar\" />\n </template>\n </div>\n <main\n id=\"main-scroller\"\n class=\"column main\"\n :class=\"{ '-full-height': isChats || isListEdit }\"\n >\n <div\n v-if=\"!currentUser\"\n class=\"login-hint panel panel-default\"\n >\n <router-link\n :to=\"{ name: 'login' }\"\n class=\"panel-body\"\n >\n {{ $t(\"login.hint\") }}\n </router-link>\n </div>\n <router-view />\n </main>\n <div\n id=\"notifs-column\"\n class=\"column -scrollable\"\n :class=\"{ '-show-scrollbar': showScrollbars }\"\n />\n </div>\n <MediaModal />\n <shout-panel\n v-if=\"currentUser && shout && !hideShoutbox\"\n :floating=\"true\"\n class=\"floating-shout mobile-hidden\"\n :class=\"{ '-left': shoutboxPosition }\"\n />\n <MobilePostStatusButton />\n <UserReportingModal />\n <PostStatusModal />\n <EditStatusModal v-if=\"editingAvailable\" />\n <StatusHistoryModal v-if=\"editingAvailable\" />\n <SettingsModal />\n <UpdateNotification />\n <GlobalNoticeList />\n </div>\n</template>\n\n<script src=\"./App.js\"></script>\n<style lang=\"scss\" src=\"./App.scss\"></style>\n","<template>\n <aside class=\"user-panel\">\n <div\n v-if=\"signedIn\"\n key=\"user-panel-signed\"\n class=\"panel panel-default signed-in\"\n >\n <UserCard\n :user-id=\"user.id\"\n :hide-bio=\"true\"\n rounded=\"top\"\n />\n <PostStatusForm />\n </div>\n <auth-form\n v-else\n key=\"user-panel\"\n />\n </aside>\n</template>\n\n<script src=\"./user_panel.js\"></script>\n\n<style lang=\"scss\">\n.user-panel .signed-in {\n overflow: visible;\n z-index: 10;\n}\n</style>\n","<template>\n <div class=\"login panel panel-default\">\n <!-- Default panel contents -->\n\n <div class=\"panel-heading\">\n {{ $t('login.login') }}\n </div>\n\n <div class=\"panel-body\">\n <form\n class=\"login-form\"\n @submit.prevent=\"submit\"\n >\n <template v-if=\"isPasswordAuth\">\n <div class=\"form-group\">\n <label for=\"username\">{{ $t('login.username') }}</label>\n <input\n id=\"username\"\n v-model=\"user.username\"\n :disabled=\"loggingIn\"\n class=\"form-control\"\n :placeholder=\"$t('login.placeholder')\"\n >\n </div>\n <div class=\"form-group\">\n <label for=\"password\">{{ $t('login.password') }}</label>\n <input\n id=\"password\"\n ref=\"passwordInput\"\n v-model=\"user.password\"\n :disabled=\"loggingIn\"\n class=\"form-control\"\n type=\"password\"\n >\n </div>\n <div class=\"form-group\">\n <router-link :to=\"{name: 'password-reset'}\">\n {{ $t('password_reset.forgot_password') }}\n </router-link>\n </div>\n </template>\n\n <div\n v-if=\"isTokenAuth\"\n class=\"form-group\"\n >\n <p>{{ $t('login.description') }}</p>\n </div>\n\n <div class=\"form-group\">\n <div class=\"login-bottom\">\n <div>\n <router-link\n v-if=\"registrationOpen\"\n :to=\"{name: 'registration'}\"\n class=\"register\"\n >\n {{ $t('login.register') }}\n </router-link>\n </div>\n <button\n :disabled=\"loggingIn\"\n type=\"submit\"\n class=\"btn button-default\"\n >\n {{ $t('login.login') }}\n </button>\n </div>\n </div>\n </form>\n </div>\n\n <div\n v-if=\"error\"\n class=\"form-group\"\n >\n <div class=\"alert error\">\n {{ error }}\n <button\n class=\"button-unstyled\"\n @click=\"clearError\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n />\n </button>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./login_form.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.login-form {\n display: flex;\n flex-direction: column;\n padding: 0.6em;\n\n .btn {\n min-height: 2em;\n width: 10em;\n }\n\n .register {\n flex: 1 1;\n }\n\n .login-bottom {\n margin-top: 1em;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n padding: 0.3em 0.5em 0.6em;\n line-height: 24px;\n }\n\n .form-bottom {\n display: flex;\n padding: 0.5em;\n height: 32px;\n\n button {\n width: 10em;\n }\n\n p {\n margin: 0.35em;\n padding: 0.35em;\n display: flex;\n }\n }\n\n .error {\n text-align: center;\n animation-name: shakeError;\n animation-duration: 0.4s;\n animation-timing-function: ease-in-out;\n }\n}\n</style>\n","import { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport oauthApi from '../../services/new_api/oauth.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nconst LoginForm = {\n data: () => ({\n user: {},\n error: false\n }),\n computed: {\n isPasswordAuth () { return this.requiredPassword },\n isTokenAuth () { return this.requiredToken },\n ...mapState({\n registrationOpen: state => state.instance.registrationOpen,\n instance: state => state.instance,\n loggingIn: state => state.users.loggingIn,\n oauth: state => state.oauth\n }),\n ...mapGetters(\n 'authFlow', ['requiredPassword', 'requiredToken', 'requiredMFA']\n )\n },\n methods: {\n ...mapMutations('authFlow', ['requireMFA']),\n ...mapActions({ login: 'authFlow/login' }),\n submit () {\n this.isTokenAuth ? this.submitToken() : this.submitPassword()\n },\n submitToken () {\n const { clientId, clientSecret } = this.oauth\n const data = {\n clientId,\n clientSecret,\n instance: this.instance.server,\n commit: this.$store.commit\n }\n\n oauthApi.getOrCreateApp(data)\n .then((app) => { oauthApi.login({ ...app, ...data }) })\n },\n submitPassword () {\n const { clientId } = this.oauth\n const data = {\n clientId,\n oauth: this.oauth,\n instance: this.instance.server,\n commit: this.$store.commit\n }\n this.error = false\n\n oauthApi.getOrCreateApp(data).then((app) => {\n oauthApi.getTokenWithCredentials(\n {\n ...app,\n instance: data.instance,\n username: this.user.username,\n password: this.user.password\n }\n ).then((result) => {\n if (result.error) {\n if (result.error === 'mfa_required') {\n this.requireMFA({ settings: result })\n } else if (result.identifier === 'password_reset_required') {\n this.$router.push({ name: 'password-reset', params: { passwordResetRequested: true } })\n } else {\n this.error = result.error\n this.focusOnPasswordInput()\n }\n return\n }\n this.login(result).then(() => {\n this.$router.push({ name: 'friends' })\n })\n })\n })\n },\n clearError () { this.error = false },\n focusOnPasswordInput () {\n const passwordInput = this.$refs.passwordInput\n passwordInput.focus()\n passwordInput.setSelectionRange(0, passwordInput.value.length)\n }\n }\n}\n\nexport default LoginForm\n","import { render } from \"./login_form.vue?vue&type=template&id=508f3ec3\"\nimport script from \"./login_form.js?vue&type=script&lang=js\"\nexport * from \"./login_form.js?vue&type=script&lang=js\"\n\nimport \"./login_form.vue?vue&type=style&index=0&id=508f3ec3&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"login panel panel-default\">\n <!-- Default panel contents -->\n\n <div class=\"panel-heading\">\n {{ $t('login.heading.recovery') }}\n </div>\n\n <div class=\"panel-body\">\n <form\n class=\"login-form\"\n @submit.prevent=\"submit\"\n >\n <div class=\"form-group\">\n <label for=\"code\">{{ $t('login.recovery_code') }}</label>\n <input\n id=\"code\"\n v-model=\"code\"\n class=\"form-control\"\n >\n </div>\n\n <div class=\"form-group\">\n <div class=\"login-bottom\">\n <div>\n <button\n class=\"button-unstyled -link\"\n type=\"button\"\n @click.prevent=\"requireTOTP\"\n >\n {{ $t('login.enter_two_factor_code') }}\n </button>\n <br>\n <button\n class=\"button-unstyled -link\"\n type=\"button\"\n @click.prevent=\"abortMFA\"\n >\n {{ $t('general.cancel') }}\n </button>\n </div>\n <button\n type=\"submit\"\n class=\"btn button-default\"\n >\n {{ $t('general.verify') }}\n </button>\n </div>\n </div>\n </form>\n </div>\n\n <div\n v-if=\"error\"\n class=\"form-group\"\n >\n <div class=\"alert error\">\n {{ error }}\n <button\n class=\"button-unstyled\"\n @click=\"clearError\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n />\n </button>\n </div>\n </div>\n </div>\n</template>\n<script src=\"./recovery_form.js\"></script>\n","const verifyOTPCode = ({ clientId, clientSecret, instance, mfaToken, code }) => {\n const url = `${instance}/oauth/mfa/challenge`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('mfa_token', mfaToken)\n form.append('code', code)\n form.append('challenge_type', 'totp')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst verifyRecoveryCode = ({ clientId, clientSecret, instance, mfaToken, code }) => {\n const url = `${instance}/oauth/mfa/challenge`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('mfa_token', mfaToken)\n form.append('code', code)\n form.append('challenge_type', 'recovery')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst mfa = {\n verifyOTPCode,\n verifyRecoveryCode\n}\n\nexport default mfa\n","import mfaApi from '../../services/new_api/mfa.js'\nimport { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nexport default {\n data: () => ({\n code: null,\n error: false\n }),\n computed: {\n ...mapGetters({\n authSettings: 'authFlow/settings'\n }),\n ...mapState({\n instance: 'instance',\n oauth: 'oauth'\n })\n },\n methods: {\n ...mapMutations('authFlow', ['requireTOTP', 'abortMFA']),\n ...mapActions({ login: 'authFlow/login' }),\n clearError () { this.error = false },\n submit () {\n const { clientId, clientSecret } = this.oauth\n\n const data = {\n clientId,\n clientSecret,\n instance: this.instance.server,\n mfaToken: this.authSettings.mfa_token,\n code: this.code\n }\n\n mfaApi.verifyRecoveryCode(data).then((result) => {\n if (result.error) {\n this.error = result.error\n this.code = null\n return\n }\n\n this.login(result).then(() => {\n this.$router.push({ name: 'friends' })\n })\n })\n }\n }\n}\n","import { render } from \"./recovery_form.vue?vue&type=template&id=e18da610\"\nimport script from \"./recovery_form.js?vue&type=script&lang=js\"\nexport * from \"./recovery_form.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"login panel panel-default\">\n <!-- Default panel contents -->\n\n <div class=\"panel-heading\">\n {{ $t('login.heading.totp') }}\n </div>\n\n <div class=\"panel-body\">\n <form\n class=\"login-form\"\n @submit.prevent=\"submit\"\n >\n <div class=\"form-group\">\n <label for=\"code\">\n {{ $t('login.authentication_code') }}\n </label>\n <input\n id=\"code\"\n v-model=\"code\"\n class=\"form-control\"\n >\n </div>\n\n <div class=\"form-group\">\n <div class=\"login-bottom\">\n <div>\n <button\n class=\"button-unstyled -link\"\n type=\"button\"\n @click.prevent=\"requireRecovery\"\n >\n {{ $t('login.enter_recovery_code') }}\n </button>\n <br>\n <button\n class=\"button-unstyled -link\"\n type=\"button\"\n @click.prevent=\"abortMFA\"\n >\n {{ $t('general.cancel') }}\n </button>\n </div>\n <button\n type=\"submit\"\n class=\"btn button-default\"\n >\n {{ $t('general.verify') }}\n </button>\n </div>\n </div>\n </form>\n </div>\n\n <div\n v-if=\"error\"\n class=\"form-group\"\n >\n <div class=\"alert error\">\n {{ error }}\n <button\n class=\"button-unstyled\"\n @click=\"clearError\"\n >\n <FAIcon\n size=\"lg\"\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n />\n </button>\n </div>\n </div>\n </div>\n</template>\n<script src=\"./totp_form.js\"></script>\n","import mfaApi from '../../services/new_api/mfa.js'\nimport { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nexport default {\n data: () => ({\n code: null,\n error: false\n }),\n computed: {\n ...mapGetters({\n authSettings: 'authFlow/settings'\n }),\n ...mapState({\n instance: 'instance',\n oauth: 'oauth'\n })\n },\n methods: {\n ...mapMutations('authFlow', ['requireRecovery', 'abortMFA']),\n ...mapActions({ login: 'authFlow/login' }),\n clearError () { this.error = false },\n submit () {\n const { clientId, clientSecret } = this.oauth\n\n const data = {\n clientId,\n clientSecret,\n instance: this.instance.server,\n mfaToken: this.authSettings.mfa_token,\n code: this.code\n }\n\n mfaApi.verifyOTPCode(data).then((result) => {\n if (result.error) {\n this.error = result.error\n this.code = null\n return\n }\n\n this.login(result).then(() => {\n this.$router.push({ name: 'friends' })\n })\n })\n }\n }\n}\n","import { render } from \"./totp_form.vue?vue&type=template&id=6fb04413\"\nimport script from \"./totp_form.js?vue&type=script&lang=js\"\nexport * from \"./totp_form.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { h, resolveComponent } from 'vue'\nimport LoginForm from '../login_form/login_form.vue'\nimport MFARecoveryForm from '../mfa_form/recovery_form.vue'\nimport MFATOTPForm from '../mfa_form/totp_form.vue'\nimport { mapGetters } from 'vuex'\n\nconst AuthForm = {\n name: 'AuthForm',\n render () {\n return h(resolveComponent(this.authForm))\n },\n computed: {\n authForm () {\n if (this.requiredTOTP) { return 'MFATOTPForm' }\n if (this.requiredRecovery) { return 'MFARecoveryForm' }\n return 'LoginForm'\n },\n ...mapGetters('authFlow', ['requiredTOTP', 'requiredRecovery'])\n },\n components: {\n MFARecoveryForm,\n MFATOTPForm,\n LoginForm\n }\n}\n\nexport default AuthForm\n","import AuthForm from '../auth_form/auth_form.js'\nimport PostStatusForm from '../post_status_form/post_status_form.vue'\nimport UserCard from '../user_card/user_card.vue'\nimport { mapState } from 'vuex'\n\nconst UserPanel = {\n computed: {\n signedIn () { return this.user },\n ...mapState({ user: state => state.users.currentUser })\n },\n components: {\n AuthForm,\n PostStatusForm,\n UserCard\n }\n}\n\nexport default UserPanel\n","import { render } from \"./user_panel.vue?vue&type=template&id=1a2cb8e9\"\nimport script from \"./user_panel.js?vue&type=script&lang=js\"\nexport * from \"./user_panel.js?vue&type=script&lang=js\"\n\nimport \"./user_panel.vue?vue&type=style&index=0&id=1a2cb8e9&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"NavPanel\">\n <div class=\"panel panel-default\">\n <div\n v-if=\"!forceExpand\"\n class=\"panel-heading nav-panel-heading\"\n >\n <NavigationPins :limit=\"6\" />\n <div class=\"spacer\" />\n <button\n class=\"button-unstyled\"\n @click=\"toggleCollapse\"\n >\n <FAIcon\n class=\"navigation-chevron\"\n fixed-width\n :icon=\"collapsed ? 'chevron-down' : 'chevron-up'\"\n />\n </button>\n </div>\n <ul\n v-if=\"!collapsed || forceExpand\"\n class=\"panel-body\"\n >\n <NavigationEntry\n v-if=\"currentUser || !privateMode\"\n :show-pin=\"false\"\n :item=\"{ icon: 'stream', label: 'nav.timelines' }\"\n :aria-expanded=\"showTimelines ? 'true' : 'false'\"\n @click=\"toggleTimelines\"\n >\n <FAIcon\n class=\"timelines-chevron\"\n fixed-width\n :icon=\"showTimelines ? 'chevron-up' : 'chevron-down'\"\n />\n </NavigationEntry>\n <div\n v-show=\"showTimelines\"\n class=\"timelines-background\"\n >\n <div class=\"timelines\">\n <NavigationEntry\n v-for=\"item in timelinesItems\"\n :key=\"item.name\"\n :show-pin=\"editMode || forceEditMode\"\n :item=\"item\"\n />\n </div>\n </div>\n <NavigationEntry\n v-if=\"currentUser\"\n :show-pin=\"false\"\n :item=\"{ icon: 'list', label: 'nav.lists' }\"\n :aria-expanded=\"showLists ? 'true' : 'false'\"\n @click=\"toggleLists\"\n >\n <router-link\n :title=\"$t('lists.manage_lists')\"\n class=\"extra-button\"\n :to=\"{ name: 'lists' }\"\n @click.stop\n >\n <FAIcon\n class=\"extra-button\"\n fixed-width\n icon=\"wrench\"\n />\n </router-link>\n <FAIcon\n class=\"timelines-chevron\"\n fixed-width\n :icon=\"showLists ? 'chevron-up' : 'chevron-down'\"\n />\n </NavigationEntry>\n <div\n v-show=\"showLists\"\n class=\"timelines-background\"\n >\n <ListsMenuContent\n :show-pin=\"editMode || forceEditMode\"\n class=\"timelines\"\n />\n </div>\n <NavigationEntry\n v-for=\"item in rootItems\"\n :key=\"item.name\"\n :show-pin=\"editMode || forceEditMode\"\n :item=\"item\"\n />\n <NavigationEntry\n v-if=\"!forceEditMode && currentUser\"\n :show-pin=\"false\"\n :item=\"{ label: editMode ? $t('nav.edit_finish') : $t('nav.edit_pinned'), icon: editMode ? 'check' : 'wrench' }\"\n @click=\"toggleEditMode\"\n />\n </ul>\n </div>\n </div>\n</template>\n\n<script src=\"./nav_panel.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.NavPanel {\n .panel {\n overflow: hidden;\n box-shadow: var(--panelShadow);\n }\n\n ul {\n list-style: none;\n margin: 0;\n padding: 0;\n }\n\n li {\n position: relative;\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n }\n\n > li {\n &:first-child .menu-item {\n border-top-right-radius: $fallback--panelRadius;\n border-top-right-radius: var(--panelRadius, $fallback--panelRadius);\n border-top-left-radius: $fallback--panelRadius;\n border-top-left-radius: var(--panelRadius, $fallback--panelRadius);\n }\n\n &:last-child .menu-item {\n border-bottom-right-radius: $fallback--panelRadius;\n border-bottom-right-radius: var(--panelRadius, $fallback--panelRadius);\n border-bottom-left-radius: $fallback--panelRadius;\n border-bottom-left-radius: var(--panelRadius, $fallback--panelRadius);\n }\n }\n\n li:last-child {\n border: none;\n }\n\n .navigation-chevron {\n margin-left: 0.8em;\n margin-right: 0.8em;\n font-size: 1.1em;\n }\n\n .timelines-chevron {\n margin-left: 0.8em;\n font-size: 1.1em;\n }\n\n .timelines-background {\n padding: 0 0 0 0.6em;\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n }\n\n .timelines {\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n }\n\n .nav-panel-heading {\n // breaks without a unit\n // stylelint-disable-next-line length-zero-no-unit\n --panel-heading-height-padding: 0px;\n }\n}\n</style>\n","<template>\n <OptionalRouterLink\n v-slot=\"{ isActive, href, navigate } = {}\"\n ass=\"ass\"\n :to=\"routeTo\"\n >\n <li\n class=\"NavigationEntry menu-item\"\n :class=\"{ '-active': isActive }\"\n v-bind=\"$attrs\"\n >\n <component\n :is=\"routeTo ? 'a' : 'button'\"\n class=\"main-link button-unstyled\"\n :href=\"href\"\n @click=\"navigate\"\n >\n <span>\n <FAIcon\n v-if=\"item.icon\"\n fixed-width\n class=\"fa-scale-110 menu-icon\"\n :icon=\"item.icon\"\n />\n </span>\n <span\n v-if=\"item.iconLetter\"\n class=\"icon iconLetter fa-scale-110 menu-icon\"\n >{{ item.iconLetter }}\n </span>\n <span class=\"label\">\n {{ item.labelRaw || $t(item.label) }}\n </span>\n </component>\n <slot />\n <div\n v-if=\"item.badgeGetter && getters[item.badgeGetter]\"\n class=\"badge badge-notification\"\n >\n {{ getters[item.badgeGetter] }}\n </div>\n <button\n v-if=\"showPin && currentUser\"\n type=\"button\"\n class=\"button-unstyled extra-button\"\n :title=\"$t(isPinned ? 'general.unpin' : 'general.pin' )\"\n :aria-pressed=\"!!isPinned\"\n @click.stop.prevent=\"togglePin(item.name)\"\n >\n <FAIcon\n v-if=\"showPin && currentUser\"\n fixed-width\n class=\"fa-scale-110\"\n :class=\"{ 'veryfaint': !isPinned(item.name) }\"\n :transform=\"!isPinned(item.name) ? 'rotate-45' : ''\"\n icon=\"thumbtack\"\n />\n </button>\n </li>\n </OptionalRouterLink>\n</template>\n\n<script src=\"./navigation_entry.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.NavigationEntry {\n display: flex;\n box-sizing: border-box;\n align-items: baseline;\n height: 3.5em;\n line-height: 3.5em;\n padding: 0 1em;\n width: 100%;\n color: $fallback--link;\n color: var(--link, $fallback--link);\n\n .timelines-chevron {\n margin-right: 0;\n }\n\n .main-link {\n flex: 1;\n }\n\n .menu-icon {\n margin-right: 0.8em;\n }\n\n .extra-button {\n width: 3em;\n text-align: center;\n\n &:last-child {\n margin-right: -0.8em;\n }\n }\n\n &:hover {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: $fallback--link;\n color: var(--selectedMenuText, $fallback--link);\n\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n\n .menu-icon {\n --icon: var(--text, $fallback--icon);\n }\n }\n\n &.-active {\n font-weight: bolder;\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: $fallback--text;\n color: var(--selectedMenuText, $fallback--text);\n\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n\n .menu-icon {\n --icon: var(--text, $fallback--icon);\n }\n\n &:hover {\n text-decoration: underline;\n }\n }\n}\n</style>\n","export const USERNAME_ROUTES = new Set([\n 'bookmarks',\n 'dms',\n 'interactions',\n 'notifications',\n 'chat',\n 'chats',\n 'user-profile'\n])\n\nexport const TIMELINES = {\n home: {\n route: 'friends',\n icon: 'home',\n label: 'nav.home_timeline',\n criteria: ['!private']\n },\n public: {\n route: 'public-timeline',\n anon: true,\n icon: 'users',\n label: 'nav.public_tl',\n criteria: ['!private']\n },\n twkn: {\n route: 'public-external-timeline',\n anon: true,\n icon: 'globe',\n label: 'nav.twkn',\n criteria: ['!private', 'federating']\n },\n bookmarks: {\n route: 'bookmarks',\n icon: 'bookmark',\n label: 'nav.bookmarks'\n },\n favorites: {\n routeObject: { name: 'user-profile', query: { tab: 'favorites' } },\n icon: 'star',\n label: 'user_card.favorites'\n },\n dms: {\n route: 'dms',\n icon: 'envelope',\n label: 'nav.dms'\n }\n}\n\nexport const ROOT_ITEMS = {\n interactions: {\n route: 'interactions',\n icon: 'bell',\n label: 'nav.interactions'\n },\n chats: {\n route: 'chats',\n icon: 'comments',\n label: 'nav.chats',\n badgeGetter: 'unreadChatCount',\n criteria: ['chats']\n },\n friendRequests: {\n route: 'friend-requests',\n icon: 'user-plus',\n label: 'nav.friend_requests',\n criteria: ['lockedUser'],\n badgeGetter: 'followRequestCount'\n },\n about: {\n route: 'about',\n anon: true,\n icon: 'info-circle',\n label: 'nav.about'\n },\n announcements: {\n route: 'announcements',\n icon: 'bullhorn',\n label: 'nav.announcements',\n badgeGetter: 'unreadAnnouncementCount',\n criteria: ['announcements']\n }\n}\n","<template>\n <!-- eslint-disable vue/no-multiple-template-root -->\n <router-link\n v-if=\"to\"\n v-slot=\"props\"\n :to=\"to\"\n custom\n >\n <slot\n v-bind=\"props\"\n />\n </router-link>\n <slot\n v-else\n v-bind=\"{}\"\n />\n</template>\n\n<script>\nexport default {\n props: ['to']\n}\n</script>\n","import { render } from \"./optional_router_link.vue?vue&type=template&id=0ec30c00\"\nimport script from \"./optional_router_link.vue?vue&type=script&lang=js\"\nexport * from \"./optional_router_link.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { mapState } from 'vuex'\nimport { USERNAME_ROUTES } from 'src/components/navigation/navigation.js'\nimport OptionalRouterLink from 'src/components/optional_router_link/optional_router_link.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faThumbtack } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(faThumbtack)\n\nconst NavigationEntry = {\n props: ['item', 'showPin'],\n components: {\n OptionalRouterLink\n },\n methods: {\n isPinned (value) {\n return this.pinnedItems.has(value)\n },\n togglePin (value) {\n if (this.isPinned(value)) {\n this.$store.commit('removeCollectionPreference', { path: 'collections.pinnedNavItems', value })\n } else {\n this.$store.commit('addCollectionPreference', { path: 'collections.pinnedNavItems', value })\n }\n this.$store.dispatch('pushServerSideStorage')\n }\n },\n computed: {\n routeTo () {\n if (!this.item.route && !this.item.routeObject) return null\n let route\n if (this.item.routeObject) {\n route = this.item.routeObject\n } else {\n route = { name: (this.item.anon || this.currentUser) ? this.item.route : this.item.anonRoute }\n }\n if (USERNAME_ROUTES.has(route.name)) {\n route.params = { username: this.currentUser.screen_name, name: this.currentUser.screen_name }\n }\n return route\n },\n getters () {\n return this.$store.getters\n },\n ...mapState({\n currentUser: state => state.users.currentUser,\n pinnedItems: state => new Set(state.serverSideStorage.prefsStorage.collections.pinnedNavItems)\n })\n }\n}\n\nexport default NavigationEntry\n","import { render } from \"./navigation_entry.vue?vue&type=template&id=de2c2c50\"\nimport script from \"./navigation_entry.js?vue&type=script&lang=js\"\nexport * from \"./navigation_entry.js?vue&type=script&lang=js\"\n\nimport \"./navigation_entry.vue?vue&type=style&index=0&id=de2c2c50&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export const filterNavigation = (list = [], { hasChats, hasAnnouncements, isFederating, isPrivate, currentUser }) => {\n return list.filter(({ criteria, anon, anonRoute }) => {\n const set = new Set(criteria || [])\n if (!isFederating && set.has('federating')) return false\n if (!currentUser && isPrivate && set.has('!private')) return false\n if (!currentUser && !(anon || anonRoute)) return false\n if ((!currentUser || !currentUser.locked) && set.has('lockedUser')) return false\n if (!hasChats && set.has('chats')) return false\n if (!hasAnnouncements && set.has('announcements')) return false\n return true\n })\n}\n\nexport const getListEntries = state => state.lists.allLists.map(list => ({\n name: 'list-' + list.id,\n routeObject: { name: 'lists-timeline', params: { id: list.id } },\n labelRaw: list.title,\n iconLetter: list.title[0]\n}))\n","import { mapState } from 'vuex'\nimport NavigationEntry from 'src/components/navigation/navigation_entry.vue'\nimport { getListEntries } from 'src/components/navigation/filter.js'\n\nexport const ListsMenuContent = {\n props: [\n 'showPin'\n ],\n components: {\n NavigationEntry\n },\n computed: {\n ...mapState({\n lists: getListEntries,\n currentUser: state => state.users.currentUser,\n privateMode: state => state.instance.private,\n federating: state => state.instance.federating\n })\n }\n}\n\nexport default ListsMenuContent\n","import { render } from \"./lists_menu_content.vue?vue&type=template&id=24f15238\"\nimport script from \"./lists_menu_content.js?vue&type=script&lang=js\"\nexport * from \"./lists_menu_content.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <ul>\n <NavigationEntry\n v-for=\"item in lists\"\n :key=\"item.name\"\n :show-pin=\"showPin\"\n :item=\"item\"\n />\n </ul>\n</template>\n\n<script src=\"./lists_menu_content.js\"></script>\n","<template>\n <span class=\"NavigationPins\">\n <router-link\n v-for=\"item in pinnedList\"\n :key=\"item.name\"\n class=\"pinned-item\"\n :to=\"getRouteTo(item)\"\n :title=\"item.labelRaw || $t(item.label)\"\n >\n <FAIcon\n v-if=\"item.icon\"\n fixed-width\n :icon=\"item.icon\"\n />\n <span\n v-if=\"item.iconLetter\"\n class=\"iconLetter fa-scale-110 fa-old-padding\"\n >{{ item.iconLetter }}</span>\n <div\n v-if=\"item.badgeGetter && getters[item.badgeGetter]\"\n class=\"alert-dot\"\n />\n </router-link>\n </span>\n</template>\n\n<script src=\"./navigation_pins.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.NavigationPins {\n display: flex;\n flex-wrap: wrap;\n overflow: hidden;\n height: 100%;\n\n .alert-dot {\n border-radius: 100%;\n height: 0.5em;\n width: 0.5em;\n position: absolute;\n right: calc(50% - 0.75em);\n top: calc(50% - 0.5em);\n background-color: $fallback--cRed;\n background-color: var(--badgeNotification, $fallback--cRed);\n }\n\n .pinned-item {\n position: relative;\n flex: 1 0 3em;\n min-width: 2em;\n text-align: center;\n overflow: visible;\n box-sizing: border-box;\n height: 100%;\n\n & .svg-inline--fa,\n & .iconLetter {\n margin: 0;\n }\n\n &.router-link-active {\n color: $fallback--text;\n color: var(--panelText, $fallback--text);\n border-bottom: 4px solid;\n\n & .svg-inline--fa,\n & .iconLetter {\n color: inherit;\n }\n }\n }\n}\n</style>\n","import { mapState } from 'vuex'\nimport { TIMELINES, ROOT_ITEMS, USERNAME_ROUTES } from 'src/components/navigation/navigation.js'\nimport { getListEntries, filterNavigation } from 'src/components/navigation/filter.js'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faUsers,\n faGlobe,\n faBookmark,\n faEnvelope,\n faComments,\n faBell,\n faInfoCircle,\n faStream,\n faList\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faUsers,\n faGlobe,\n faBookmark,\n faEnvelope,\n faComments,\n faBell,\n faInfoCircle,\n faStream,\n faList\n)\n\nconst NavPanel = {\n props: ['limit'],\n methods: {\n getRouteTo (item) {\n if (item.routeObject) {\n return item.routeObject\n }\n const route = { name: (item.anon || this.currentUser) ? item.route : item.anonRoute }\n if (USERNAME_ROUTES.has(route.name)) {\n route.params = { username: this.currentUser.screen_name }\n }\n return route\n }\n },\n computed: {\n getters () {\n return this.$store.getters\n },\n ...mapState({\n lists: getListEntries,\n currentUser: state => state.users.currentUser,\n followRequestCount: state => state.api.followRequests.length,\n privateMode: state => state.instance.private,\n federating: state => state.instance.federating,\n pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable,\n pinnedItems: state => new Set(state.serverSideStorage.prefsStorage.collections.pinnedNavItems)\n }),\n pinnedList () {\n if (!this.currentUser) {\n return filterNavigation([\n { ...TIMELINES.public, name: 'public' },\n { ...TIMELINES.twkn, name: 'twkn' },\n { ...ROOT_ITEMS.about, name: 'about' }\n ],\n {\n hasChats: this.pleromaChatMessagesAvailable,\n isFederating: this.federating,\n isPrivate: this.privateMode,\n currentUser: this.currentUser\n })\n }\n return filterNavigation(\n [\n ...Object\n .entries({ ...TIMELINES })\n .filter(([k]) => this.pinnedItems.has(k))\n .map(([k, v]) => ({ ...v, name: k })),\n ...this.lists.filter((k) => this.pinnedItems.has(k.name)),\n ...Object\n .entries({ ...ROOT_ITEMS })\n .filter(([k]) => this.pinnedItems.has(k))\n .map(([k, v]) => ({ ...v, name: k }))\n ],\n {\n hasChats: this.pleromaChatMessagesAvailable,\n isFederating: this.federating,\n isPrivate: this.privateMode,\n currentUser: this.currentUser\n }\n ).slice(0, this.limit)\n }\n }\n}\n\nexport default NavPanel\n","import { render } from \"./navigation_pins.vue?vue&type=template&id=61dbea24\"\nimport script from \"./navigation_pins.js?vue&type=script&lang=js\"\nexport * from \"./navigation_pins.js?vue&type=script&lang=js\"\n\nimport \"./navigation_pins.vue?vue&type=style&index=0&id=61dbea24&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import ListsMenuContent from 'src/components/lists_menu/lists_menu_content.vue'\nimport { mapState, mapGetters } from 'vuex'\nimport { TIMELINES, ROOT_ITEMS } from 'src/components/navigation/navigation.js'\nimport { filterNavigation } from 'src/components/navigation/filter.js'\nimport NavigationEntry from 'src/components/navigation/navigation_entry.vue'\nimport NavigationPins from 'src/components/navigation/navigation_pins.vue'\nimport Checkbox from 'src/components/checkbox/checkbox.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faUsers,\n faGlobe,\n faBookmark,\n faEnvelope,\n faChevronDown,\n faChevronUp,\n faComments,\n faBell,\n faInfoCircle,\n faStream,\n faList,\n faBullhorn\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faUsers,\n faGlobe,\n faBookmark,\n faEnvelope,\n faChevronDown,\n faChevronUp,\n faComments,\n faBell,\n faInfoCircle,\n faStream,\n faList,\n faBullhorn\n)\nconst NavPanel = {\n props: ['forceExpand', 'forceEditMode'],\n created () {\n },\n components: {\n ListsMenuContent,\n NavigationEntry,\n NavigationPins,\n Checkbox\n },\n data () {\n return {\n editMode: false,\n showTimelines: false,\n showLists: false,\n timelinesList: Object.entries(TIMELINES).map(([k, v]) => ({ ...v, name: k })),\n rootList: Object.entries(ROOT_ITEMS).map(([k, v]) => ({ ...v, name: k }))\n }\n },\n methods: {\n toggleTimelines () {\n this.showTimelines = !this.showTimelines\n },\n toggleLists () {\n this.showLists = !this.showLists\n },\n toggleEditMode () {\n this.editMode = !this.editMode\n },\n toggleCollapse () {\n this.$store.commit('setPreference', { path: 'simple.collapseNav', value: !this.collapsed })\n this.$store.dispatch('pushServerSideStorage')\n },\n isPinned (item) {\n return this.pinnedItems.has(item)\n },\n togglePin (item) {\n if (this.isPinned(item)) {\n this.$store.commit('removeCollectionPreference', { path: 'collections.pinnedNavItems', value: item })\n } else {\n this.$store.commit('addCollectionPreference', { path: 'collections.pinnedNavItems', value: item })\n }\n this.$store.dispatch('pushServerSideStorage')\n }\n },\n computed: {\n ...mapState({\n currentUser: state => state.users.currentUser,\n followRequestCount: state => state.api.followRequests.length,\n privateMode: state => state.instance.private,\n federating: state => state.instance.federating,\n pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable,\n supportsAnnouncements: state => state.announcements.supportsAnnouncements,\n pinnedItems: state => new Set(state.serverSideStorage.prefsStorage.collections.pinnedNavItems),\n collapsed: state => state.serverSideStorage.prefsStorage.simple.collapseNav\n }),\n timelinesItems () {\n return filterNavigation(\n Object\n .entries({ ...TIMELINES })\n .map(([k, v]) => ({ ...v, name: k })),\n {\n hasChats: this.pleromaChatMessagesAvailable,\n hasAnnouncements: this.supportsAnnouncements,\n isFederating: this.federating,\n isPrivate: this.privateMode,\n currentUser: this.currentUser\n }\n )\n },\n rootItems () {\n return filterNavigation(\n Object\n .entries({ ...ROOT_ITEMS })\n .map(([k, v]) => ({ ...v, name: k })),\n {\n hasChats: this.pleromaChatMessagesAvailable,\n hasAnnouncements: this.supportsAnnouncements,\n isFederating: this.federating,\n isPrivate: this.privateMode,\n currentUser: this.currentUser\n }\n )\n },\n ...mapGetters(['unreadChatCount', 'unreadAnnouncementCount'])\n }\n}\n\nexport default NavPanel\n","import { render } from \"./nav_panel.vue?vue&type=template&id=7c761001\"\nimport script from \"./nav_panel.js?vue&type=script&lang=js\"\nexport * from \"./nav_panel.js?vue&type=script&lang=js\"\n\nimport \"./nav_panel.vue?vue&type=style&index=0&id=7c761001&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"instance-specific-panel\">\n <div class=\"panel panel-default\">\n <div class=\"panel-body\">\n <!-- eslint-disable vue/no-v-html -->\n <div v-html=\"instanceSpecificPanelContent\" />\n <!-- eslint-enable vue/no-v-html -->\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./instance_specific_panel.js\"></script>\n","const InstanceSpecificPanel = {\n computed: {\n instanceSpecificPanelContent () {\n return this.$store.state.instance.instanceSpecificPanelContent\n }\n }\n}\n\nexport default InstanceSpecificPanel\n","import { render } from \"./instance_specific_panel.vue?vue&type=template&id=707b4e95\"\nimport script from \"./instance_specific_panel.js?vue&type=script&lang=js\"\nexport * from \"./instance_specific_panel.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"features-panel\">\n <div class=\"panel panel-default base01-background\">\n <div class=\"panel-heading timeline-heading base02-background base04\">\n <div class=\"title\">\n {{ $t('features_panel.title') }}\n </div>\n </div>\n <div class=\"panel-body features-panel\">\n <ul>\n <li v-if=\"shout\">\n {{ $t('features_panel.shout') }}\n </li>\n <li v-if=\"pleromaChatMessages\">\n {{ $t('features_panel.pleroma_chat_messages') }}\n </li>\n <li v-if=\"gopher\">\n {{ $t('features_panel.gopher') }}\n </li>\n <li v-if=\"whoToFollow\">\n {{ $t('features_panel.who_to_follow') }}\n </li>\n <li v-if=\"mediaProxy\">\n {{ $t('features_panel.media_proxy') }}\n </li>\n <li>{{ $t('features_panel.scope_options') }}</li>\n <li>{{ $t('features_panel.text_limit') }} = {{ textlimit }}</li>\n <li>{{ $t('features_panel.upload_limit') }} = {{ uploadlimit.num }} {{ $t('upload.file_size_units.' + uploadlimit.unit) }}</li>\n </ul>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./features_panel.js\"></script>\n\n<style lang=\"scss\">\n .features-panel li {\n line-height: 24px;\n }\n</style>\n","import fileSizeFormatService from '../../services/file_size_format/file_size_format.js'\n\nconst FeaturesPanel = {\n computed: {\n shout: function () { return this.$store.state.instance.shoutAvailable },\n pleromaChatMessages: function () { return this.$store.state.instance.pleromaChatMessagesAvailable },\n gopher: function () { return this.$store.state.instance.gopherAvailable },\n whoToFollow: function () { return this.$store.state.instance.suggestionsEnabled },\n mediaProxy: function () { return this.$store.state.instance.mediaProxyAvailable },\n minimalScopesMode: function () { return this.$store.state.instance.minimalScopesMode },\n textlimit: function () { return this.$store.state.instance.textlimit },\n uploadlimit: function () { return fileSizeFormatService.fileSizeFormat(this.$store.state.instance.uploadlimit) }\n }\n}\n\nexport default FeaturesPanel\n","import { render } from \"./features_panel.vue?vue&type=template&id=76defdfa\"\nimport script from \"./features_panel.js?vue&type=script&lang=js\"\nexport * from \"./features_panel.js?vue&type=script&lang=js\"\n\nimport \"./features_panel.vue?vue&type=style&index=0&id=76defdfa&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"who-to-follow-panel\">\n <div class=\"panel panel-default base01-background\">\n <div class=\"panel-heading timeline-heading base02-background base04\">\n <div class=\"title\">\n {{ $t('who_to_follow.who_to_follow') }}\n </div>\n </div>\n <div class=\"who-to-follow\">\n <p\n v-for=\"user in usersToFollow\"\n :key=\"user.id\"\n class=\"who-to-follow-items\"\n >\n <img :src=\"user.img\">\n <router-link :to=\"userProfileLink(user.id, user.name)\">\n {{ user.name }}\n </router-link><br>\n </p>\n <p class=\"who-to-follow-more\">\n <router-link :to=\"{ name: 'who-to-follow' }\">\n {{ $t('who_to_follow.more') }}\n </router-link>\n </p>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./who_to_follow_panel.js\"></script>\n\n<style lang=\"scss\">\n .who-to-follow * {\n vertical-align: middle;\n }\n\n .who-to-follow img {\n width: 32px;\n height: 32px;\n }\n\n .who-to-follow {\n padding: 0 1em;\n margin: 0;\n }\n\n .who-to-follow-items {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 0;\n margin: 1em 0;\n }\n\n .who-to-follow-more {\n padding: 0;\n margin: 1em 0;\n text-align: center;\n }\n</style>\n","import apiService from '../../services/api/api.service.js'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { shuffle } from 'lodash'\n\nfunction showWhoToFollow (panel, reply) {\n const shuffled = shuffle(reply)\n\n panel.usersToFollow.forEach((toFollow, index) => {\n const user = shuffled[index]\n const img = user.avatar || this.$store.state.instance.defaultAvatar\n const name = user.acct\n\n toFollow.img = img\n toFollow.name = name\n\n panel.$store.state.api.backendInteractor.fetchUser({ id: name })\n .then((externalUser) => {\n if (!externalUser.error) {\n panel.$store.commit('addNewUsers', [externalUser])\n toFollow.id = externalUser.id\n }\n })\n })\n}\n\nfunction getWhoToFollow (panel) {\n const credentials = panel.$store.state.users.currentUser.credentials\n if (credentials) {\n panel.usersToFollow.forEach(toFollow => {\n toFollow.name = 'Loading...'\n })\n apiService.suggestions({ credentials })\n .then((reply) => {\n showWhoToFollow(panel, reply)\n })\n }\n}\n\nconst WhoToFollowPanel = {\n data: () => ({\n usersToFollow: []\n }),\n computed: {\n user: function () {\n return this.$store.state.users.currentUser.screen_name\n },\n suggestionsEnabled () {\n return this.$store.state.instance.suggestionsEnabled\n }\n },\n methods: {\n userProfileLink (id, name) {\n return generateProfileLink(id, name, this.$store.state.instance.restrictedNicknames)\n }\n },\n watch: {\n user: function (user, oldUser) {\n if (this.suggestionsEnabled) {\n getWhoToFollow(this)\n }\n }\n },\n mounted:\n function () {\n this.usersToFollow = new Array(3).fill().map(x => (\n {\n img: this.$store.state.instance.defaultAvatar,\n name: '',\n id: 0\n }\n ))\n if (this.suggestionsEnabled) {\n getWhoToFollow(this)\n }\n }\n}\n\nexport default WhoToFollowPanel\n","import { render } from \"./who_to_follow_panel.vue?vue&type=template&id=f150b2ba\"\nimport script from \"./who_to_follow_panel.js?vue&type=script&lang=js\"\nexport * from \"./who_to_follow_panel.js?vue&type=script&lang=js\"\n\nimport \"./who_to_follow_panel.vue?vue&type=style&index=0&id=f150b2ba&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n v-if=\"!collapsed || !floating\"\n class=\"shout-panel\"\n >\n <div class=\"panel panel-default\">\n <div\n class=\"panel-heading timeline-heading\"\n :class=\"{ 'shout-heading': floating }\"\n @click.stop.prevent=\"togglePanel\"\n >\n <div class=\"title\">\n {{ $t('shoutbox.title') }}\n <FAIcon\n v-if=\"floating\"\n icon=\"times\"\n class=\"close-icon\"\n />\n </div>\n </div>\n <div class=\"shout-window\">\n <div\n v-for=\"message in messages\"\n :key=\"message.id\"\n class=\"shout-message\"\n >\n <span class=\"shout-avatar\">\n <img :src=\"message.author.avatar\">\n </span>\n <div class=\"shout-content\">\n <router-link\n class=\"shout-name\"\n :to=\"userProfileLink(message.author)\"\n >\n {{ message.author.username }}\n </router-link>\n <br>\n <span class=\"shout-text\">\n {{ message.text }}\n </span>\n </div>\n </div>\n </div>\n <div class=\"shout-input\">\n <textarea\n v-model=\"currentMessage\"\n class=\"shout-input-textarea\"\n rows=\"1\"\n @keyup.enter=\"submit(currentMessage)\"\n />\n </div>\n </div>\n </div>\n <div\n v-else\n class=\"shout-panel\"\n >\n <div class=\"panel panel-default\">\n <div\n class=\"panel-heading -stub timeline-heading shout-heading\"\n @click.stop.prevent=\"togglePanel\"\n >\n <div class=\"title\">\n <FAIcon\n class=\"icon\"\n icon=\"bullhorn\"\n />\n {{ $t('shoutbox.title') }}\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./shout_panel.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.floating-shout {\n position: fixed;\n bottom: 0.5em;\n z-index: var(--ZI_popovers);\n max-width: 25em;\n\n &.-left {\n left: 0.5em;\n }\n\n &:not(.-left) {\n right: 0.5em;\n }\n}\n\n.shout-panel {\n .shout-heading {\n cursor: pointer;\n\n .icon {\n color: $fallback--text;\n color: var(--panelText, $fallback--text);\n margin-right: 0.5em;\n }\n\n .title {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n }\n\n .shout-window {\n overflow-y: auto;\n overflow-x: hidden;\n max-height: 20em;\n }\n\n .shout-window-container {\n height: 100%;\n }\n\n .shout-message {\n display: flex;\n padding: 0.2em 0.5em;\n }\n\n .shout-avatar {\n img {\n height: 24px;\n width: 24px;\n border-radius: $fallback--avatarRadius;\n border-radius: var(--avatarRadius, $fallback--avatarRadius);\n margin-right: 0.5em;\n margin-top: 0.25em;\n }\n }\n\n .shout-input {\n display: flex;\n\n textarea {\n flex: 1;\n margin: 0.6em;\n min-height: 3.5em;\n resize: none;\n }\n }\n\n .shout-panel {\n .title {\n display: flex;\n justify-content: space-between;\n }\n }\n}\n</style>\n","import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faBullhorn,\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faBullhorn,\n faTimes\n)\n\nconst shoutPanel = {\n props: ['floating'],\n data () {\n return {\n currentMessage: '',\n channel: null,\n collapsed: true\n }\n },\n computed: {\n messages () {\n return this.$store.state.shout.messages\n }\n },\n methods: {\n submit (message) {\n this.$store.state.shout.channel.push('new_msg', { text: message }, 10000)\n this.currentMessage = ''\n },\n togglePanel () {\n this.collapsed = !this.collapsed\n },\n userProfileLink (user) {\n return generateProfileLink(user.id, user.username, this.$store.state.instance.restrictedNicknames)\n }\n },\n watch: {\n messages (newVal) {\n const scrollEl = this.$el.querySelector('.chat-window')\n if (!scrollEl) return\n if (scrollEl.scrollTop + scrollEl.offsetHeight + 20 > scrollEl.scrollHeight) {\n this.$nextTick(() => {\n if (!scrollEl) return\n scrollEl.scrollTop = scrollEl.scrollHeight - scrollEl.offsetHeight\n })\n }\n }\n }\n}\n\nexport default shoutPanel\n","import { render } from \"./shout_panel.vue?vue&type=template&id=48f55c04\"\nimport script from \"./shout_panel.js?vue&type=script&lang=js\"\nexport * from \"./shout_panel.js?vue&type=script&lang=js\"\n\nimport \"./shout_panel.vue?vue&type=style&index=0&id=48f55c04&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Modal\n v-if=\"showing\"\n class=\"media-modal-view\"\n @backdropClicked=\"hideIfNotSwiped\"\n >\n <SwipeClick\n v-if=\"type === 'image'\"\n ref=\"swipeClick\"\n class=\"modal-image-container\"\n :direction=\"swipeDirection\"\n :threshold=\"swipeThreshold\"\n :disable-click-threshold=\"swipeDisableClickThreshold\"\n @preview-requested=\"handleSwipePreview\"\n @swipe-finished=\"handleSwipeEnd\"\n @swipeless-clicked=\"hide\"\n >\n <PinchZoom\n ref=\"pinchZoom\"\n class=\"modal-image-container-inner\"\n selector=\".modal-image\"\n reach-min-scale-strategy=\"reset\"\n stop-propagate-handled=\"stop-propgate-handled\"\n :allow-pan-min-scale=\"pinchZoomMinScale\"\n :min-scale=\"pinchZoomMinScale\"\n :reset-to-min-scale-limit=\"pinchZoomScaleResetLimit\"\n >\n <img\n :class=\"{ loading }\"\n class=\"modal-image\"\n :src=\"currentMedia.url\"\n :alt=\"currentMedia.description\"\n :title=\"currentMedia.description\"\n @load=\"onImageLoaded\"\n >\n </PinchZoom>\n </SwipeClick>\n <VideoAttachment\n v-if=\"type === 'video'\"\n class=\"modal-image\"\n :attachment=\"currentMedia\"\n :controls=\"true\"\n />\n <audio\n v-if=\"type === 'audio'\"\n class=\"modal-image\"\n :src=\"currentMedia.url\"\n :alt=\"currentMedia.description\"\n :title=\"currentMedia.description\"\n controls\n />\n <Flash\n v-if=\"type === 'flash'\"\n class=\"modal-image\"\n :src=\"currentMedia.url\"\n :alt=\"currentMedia.description\"\n :title=\"currentMedia.description\"\n />\n <button\n v-if=\"canNavigate\"\n :title=\"$t('media_modal.previous')\"\n class=\"modal-view-button modal-view-button-arrow modal-view-button-arrow--prev\"\n @click.stop.prevent=\"goPrev\"\n >\n <FAIcon\n class=\"button-icon arrow-icon\"\n icon=\"chevron-left\"\n />\n </button>\n <button\n v-if=\"canNavigate\"\n :title=\"$t('media_modal.next')\"\n class=\"modal-view-button modal-view-button-arrow modal-view-button-arrow--next\"\n @click.stop.prevent=\"goNext\"\n >\n <FAIcon\n class=\"button-icon arrow-icon\"\n icon=\"chevron-right\"\n />\n </button>\n <button\n class=\"modal-view-button modal-view-button-hide\"\n :title=\"$t('media_modal.hide')\"\n @click.stop.prevent=\"hide\"\n >\n <FAIcon\n class=\"button-icon\"\n icon=\"times\"\n />\n </button>\n\n <span\n v-if=\"description\"\n class=\"description\"\n >\n {{ description }}\n </span>\n <span\n class=\"counter\"\n >\n {{ $tc('media_modal.counter', currentIndex + 1, { current: currentIndex + 1, total: media.length }) }}\n </span>\n <span\n v-if=\"loading\"\n class=\"loading-spinner\"\n >\n <FAIcon\n spin\n icon=\"circle-notch\"\n size=\"5x\"\n />\n </span>\n </Modal>\n</template>\n\n<script src=\"./media_modal.js\"></script>\n\n<style lang=\"scss\">\n$modal-view-button-icon-height: 3em;\n$modal-view-button-icon-half-height: calc(#{$modal-view-button-icon-height} / 2);\n$modal-view-button-icon-width: 3em;\n$modal-view-button-icon-margin: 0.5em;\n\n.media-modal-view {\n @keyframes media-fadein {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n\n .modal-image-container {\n display: flex;\n overflow: hidden;\n align-items: center;\n flex-direction: column;\n max-width: 100%;\n max-height: 100%;\n width: 100%;\n height: 100%;\n flex-grow: 1;\n justify-content: center;\n\n &-inner {\n width: 100%;\n height: 100%;\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n }\n }\n\n .description,\n .counter {\n /* Hardcoded since background is also hardcoded */\n color: white;\n margin-top: 1em;\n text-shadow: 0 0 10px black, 0 0 10px black;\n padding: 0.2em 2em;\n }\n\n .description {\n flex: 0 0 auto;\n overflow-y: auto;\n min-height: 1em;\n max-width: 500px;\n max-height: 9.5em;\n word-break: break-all;\n }\n\n .modal-image {\n max-width: 100%;\n max-height: 100%;\n image-orientation: from-image; // NOTE: only FF supports this\n animation: 0.1s cubic-bezier(0.7, 0, 1, 0.6) media-fadein;\n\n &.loading {\n opacity: 0.5;\n }\n }\n\n .loading-spinner {\n width: 100%;\n height: 100%;\n position: absolute;\n pointer-events: none;\n display: flex;\n justify-content: center;\n align-items: center;\n\n svg {\n color: white;\n }\n }\n\n .modal-view-button {\n border: 0;\n padding: 0;\n opacity: 0;\n box-shadow: none;\n background: none;\n appearance: none;\n overflow: visible;\n cursor: pointer;\n transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1);\n height: $modal-view-button-icon-height;\n width: $modal-view-button-icon-width;\n\n .button-icon {\n position: absolute;\n height: $modal-view-button-icon-height;\n width: $modal-view-button-icon-width;\n font-size: 1rem;\n line-height: $modal-view-button-icon-height;\n color: #fff;\n text-align: center;\n background-color: rgb(0 0 0 / 30%);\n }\n }\n\n .modal-view-button-arrow {\n position: absolute;\n display: block;\n top: 50%;\n margin-top: $modal-view-button-icon-half-height;\n width: $modal-view-button-icon-width;\n height: $modal-view-button-icon-height;\n\n .arrow-icon {\n position: absolute;\n top: 0;\n line-height: $modal-view-button-icon-height;\n color: #fff;\n text-align: center;\n background-color: rgb(0 0 0 / 30%);\n }\n\n &--prev {\n left: 0;\n\n .arrow-icon {\n left: $modal-view-button-icon-margin;\n }\n }\n\n &--next {\n right: 0;\n\n .arrow-icon {\n right: $modal-view-button-icon-margin;\n }\n }\n }\n\n .modal-view-button-hide {\n position: absolute;\n top: 0;\n right: 0;\n\n .button-icon {\n top: $modal-view-button-icon-margin;\n right: $modal-view-button-icon-margin;\n }\n }\n}\n\n.modal-view.media-modal-view {\n z-index: var(--ZI_media_modal);\n flex-direction: column;\n\n .modal-view-button-arrow,\n .modal-view-button-hide {\n opacity: 0.75;\n\n &:focus,\n &:hover {\n outline: none;\n box-shadow: none;\n }\n\n &:hover {\n opacity: 1;\n }\n }\n\n overflow: hidden;\n}\n</style>\n","import PinchZoom from '@kazvmoe-infra/pinch-zoom-element'\n\nexport default {\n methods: {\n setTransform ({ scale, x, y }) {\n this.$el.setTransform({ scale, x, y })\n }\n },\n created () {\n // Make lint happy\n (() => PinchZoom)()\n }\n}\n","import { render } from \"./pinch_zoom.vue?vue&type=template&id=4608b5bf\"\nimport script from \"./pinch_zoom.js?vue&type=script&lang=js\"\nexport * from \"./pinch_zoom.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <pinch-zoom\n class=\"pinch-zoom-parent\"\n v-bind=\"$attrs\"\n v-on=\"$listeners\"\n >\n <slot />\n </pinch-zoom>\n</template>\n\n<script src=\"./pinch_zoom.js\"></script>\n","\nconst DIRECTION_LEFT = [-1, 0]\nconst DIRECTION_RIGHT = [1, 0]\nconst DIRECTION_UP = [0, -1]\nconst DIRECTION_DOWN = [0, 1]\n\nconst BUTTON_LEFT = 0\n\nconst deltaCoord = (oldCoord, newCoord) => [newCoord[0] - oldCoord[0], newCoord[1] - oldCoord[1]]\n\nconst touchCoord = touch => [touch.screenX, touch.screenY]\n\nconst touchEventCoord = e => touchCoord(e.touches[0])\n\nconst pointerEventCoord = e => [e.clientX, e.clientY]\n\nconst vectorLength = v => Math.sqrt(v[0] * v[0] + v[1] * v[1])\n\nconst perpendicular = v => [v[1], -v[0]]\n\nconst dotProduct = (v1, v2) => v1[0] * v2[0] + v1[1] * v2[1]\n\nconst project = (v1, v2) => {\n const scalar = (dotProduct(v1, v2) / dotProduct(v2, v2))\n return [scalar * v2[0], scalar * v2[1]]\n}\n\n// direction: either use the constants above or an arbitrary 2d vector.\n// threshold: how many Px to move from touch origin before checking if the\n// callback should be called.\n// divergentTolerance: a scalar for much of divergent direction we tolerate when\n// above threshold. for example, with 1.0 we only call the callback if\n// divergent component of delta is < 1.0 * direction component of delta.\nconst swipeGesture = (direction, onSwipe, threshold = 30, perpendicularTolerance = 1.0) => {\n return {\n direction,\n onSwipe,\n threshold,\n perpendicularTolerance,\n _startPos: [0, 0],\n _swiping: false\n }\n}\n\nconst beginSwipe = (event, gesture) => {\n gesture._startPos = touchEventCoord(event)\n gesture._swiping = true\n}\n\nconst updateSwipe = (event, gesture) => {\n if (!gesture._swiping) return\n // movement too small\n const delta = deltaCoord(gesture._startPos, touchEventCoord(event))\n if (vectorLength(delta) < gesture.threshold) return\n // movement is opposite from direction\n if (dotProduct(delta, gesture.direction) < 0) return\n // movement perpendicular to direction is too much\n const towardsDir = project(delta, gesture.direction)\n const perpendicularDir = perpendicular(gesture.direction)\n const towardsPerpendicular = project(delta, perpendicularDir)\n if (\n vectorLength(towardsDir) * gesture.perpendicularTolerance <\n vectorLength(towardsPerpendicular)\n ) return\n\n gesture.onSwipe()\n gesture._swiping = false\n}\n\nclass SwipeAndClickGesture {\n // swipePreviewCallback(offsets: Array[Number])\n // offsets: the offset vector which the underlying component should move, from the starting position\n // swipeEndCallback(sign: 0|-1|1)\n // sign: if the swipe does not meet the threshold, 0\n // if the swipe meets the threshold in the positive direction, 1\n // if the swipe meets the threshold in the negative direction, -1\n constructor ({\n direction,\n // swipeStartCallback\n swipePreviewCallback,\n swipeEndCallback,\n swipeCancelCallback,\n swipelessClickCallback,\n threshold = 30,\n perpendicularTolerance = 1.0,\n disableClickThreshold = 1\n }) {\n const nop = () => {}\n this.direction = direction\n this.swipePreviewCallback = swipePreviewCallback || nop\n this.swipeEndCallback = swipeEndCallback || nop\n this.swipeCancelCallback = swipeCancelCallback || nop\n this.swipelessClickCallback = swipelessClickCallback || nop\n this.threshold = typeof threshold === 'function' ? threshold : () => threshold\n this.disableClickThreshold = typeof disableClickThreshold === 'function' ? disableClickThreshold : () => disableClickThreshold\n this.perpendicularTolerance = perpendicularTolerance\n this._reset()\n }\n\n _reset () {\n this._startPos = [0, 0]\n this._pointerId = -1\n this._swiping = false\n this._swiped = false\n this._preventNextClick = false\n }\n\n start (event) {\n // Only handle left click\n if (event.button !== BUTTON_LEFT) {\n return\n }\n\n this._startPos = pointerEventCoord(event)\n this._pointerId = event.pointerId\n this._swiping = true\n this._swiped = false\n }\n\n move (event) {\n if (this._swiping && this._pointerId === event.pointerId) {\n this._swiped = true\n\n const coord = pointerEventCoord(event)\n const delta = deltaCoord(this._startPos, coord)\n\n this.swipePreviewCallback(delta)\n }\n }\n\n cancel (event) {\n if (!this._swiping || this._pointerId !== event.pointerId) {\n return\n }\n\n this.swipeCancelCallback()\n }\n\n end (event) {\n if (!this._swiping) {\n return\n }\n\n if (this._pointerId !== event.pointerId) {\n return\n }\n\n this._swiping = false\n\n // movement too small\n const coord = pointerEventCoord(event)\n const delta = deltaCoord(this._startPos, coord)\n\n const sign = (() => {\n if (vectorLength(delta) < this.threshold()) {\n return 0\n }\n // movement is opposite from direction\n const isPositive = dotProduct(delta, this.direction) > 0\n\n // movement perpendicular to direction is too much\n const towardsDir = project(delta, this.direction)\n const perpendicularDir = perpendicular(this.direction)\n const towardsPerpendicular = project(delta, perpendicularDir)\n if (\n vectorLength(towardsDir) * this.perpendicularTolerance <\n vectorLength(towardsPerpendicular)\n ) {\n return 0\n }\n\n return isPositive ? 1 : -1\n })()\n\n if (this._swiped) {\n this.swipeEndCallback(sign)\n }\n this._reset()\n // Only a mouse will fire click event when\n // the end point is far from the starting point\n // so for other kinds of pointers do not check\n // whether we have swiped\n if (vectorLength(delta) >= this.disableClickThreshold() && event.pointerType === 'mouse') {\n this._preventNextClick = true\n }\n }\n\n click (event) {\n if (!this._preventNextClick) {\n this.swipelessClickCallback()\n }\n this._reset()\n }\n}\n\nconst GestureService = {\n DIRECTION_LEFT,\n DIRECTION_RIGHT,\n DIRECTION_UP,\n DIRECTION_DOWN,\n swipeGesture,\n beginSwipe,\n updateSwipe,\n SwipeAndClickGesture\n}\n\nexport default GestureService\n","import GestureService from '../../services/gesture_service/gesture_service'\n\n/**\n * props:\n * direction: a vector that indicates the direction of the intended swipe\n * threshold: the minimum distance in pixels the swipe has moved on `direction'\n * for swipe-finished() to have a non-zero sign\n * disableClickThreshold: the minimum distance in pixels for the swipe to\n * not trigger a click\n * perpendicularTolerance: see gesture_service\n *\n * Events:\n * preview-requested(offsets)\n * Emitted when the pointer has moved.\n * offsets: the offsets from the start of the swipe to the current cursor position\n *\n * swipe-canceled()\n * Emitted when the swipe has been canceled due to a pointercancel event.\n *\n * swipe-finished(sign: 0|-1|1)\n * Emitted when the swipe has finished.\n * sign: if the swipe does not meet the threshold, 0\n * if the swipe meets the threshold in the positive direction, 1\n * if the swipe meets the threshold in the negative direction, -1\n *\n * swipeless-clicked()\n * Emitted when there is a click without swipe.\n * This and swipe-finished() cannot be emitted for the same pointerup event.\n */\nconst SwipeClick = {\n props: {\n direction: {\n type: Array\n },\n threshold: {\n type: Function,\n default: () => 30\n },\n disableClickThreshold: {\n type: Function,\n default: () => 1\n },\n perpendicularTolerance: {\n type: Number,\n default: 1.0\n }\n },\n methods: {\n handlePointerDown (event) {\n this.$gesture.start(event)\n },\n handlePointerMove (event) {\n this.$gesture.move(event)\n },\n handlePointerUp (event) {\n this.$gesture.end(event)\n },\n handlePointerCancel (event) {\n this.$gesture.cancel(event)\n },\n handleNativeClick (event) {\n this.$gesture.click(event)\n },\n preview (offsets) {\n this.$emit('preview-requested', offsets)\n },\n end (sign) {\n this.$emit('swipe-finished', sign)\n },\n click () {\n this.$emit('swipeless-clicked')\n },\n cancel () {\n this.$emit('swipe-canceled')\n }\n },\n created () {\n this.$gesture = new GestureService.SwipeAndClickGesture({\n direction: this.direction,\n threshold: this.threshold,\n disableClickThreshold: this.disableClickThreshold,\n perpendicularTolerance: this.perpendicularTolerance,\n swipePreviewCallback: this.preview,\n swipeEndCallback: this.end,\n swipeCancelCallback: this.cancel,\n swipelessClickCallback: this.click\n })\n }\n}\n\nexport default SwipeClick\n","import { render } from \"./swipe_click.vue?vue&type=template&id=4c0f684c\"\nimport script from \"./swipe_click.js?vue&type=script&lang=js\"\nexport * from \"./swipe_click.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n v-bind=\"$attrs\"\n @pointerdown=\"handlePointerDown\"\n @pointermove=\"handlePointerMove\"\n @pointerup=\"handlePointerUp\"\n @pointercancel=\"handlePointerCancel\"\n @click=\"handleNativeClick\"\n >\n <slot />\n </div>\n</template>\n\n<script src=\"./swipe_click.js\"></script>\n","import StillImage from '../still-image/still-image.vue'\nimport VideoAttachment from '../video_attachment/video_attachment.vue'\nimport Modal from '../modal/modal.vue'\nimport PinchZoom from '../pinch_zoom/pinch_zoom.vue'\nimport SwipeClick from '../swipe_click/swipe_click.vue'\nimport GestureService from '../../services/gesture_service/gesture_service'\nimport Flash from 'src/components/flash/flash.vue'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faChevronLeft,\n faChevronRight,\n faCircleNotch,\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faChevronLeft,\n faChevronRight,\n faCircleNotch,\n faTimes\n)\n\nconst MediaModal = {\n components: {\n StillImage,\n VideoAttachment,\n PinchZoom,\n SwipeClick,\n Modal,\n Flash\n },\n data () {\n return {\n loading: false,\n swipeDirection: GestureService.DIRECTION_LEFT,\n swipeThreshold: () => {\n const considerableMoveRatio = 1 / 4\n return window.innerWidth * considerableMoveRatio\n },\n pinchZoomMinScale: 1,\n pinchZoomScaleResetLimit: 1.2\n }\n },\n computed: {\n showing () {\n return this.$store.state.mediaViewer.activated\n },\n media () {\n return this.$store.state.mediaViewer.media\n },\n description () {\n return this.currentMedia.description\n },\n currentIndex () {\n return this.$store.state.mediaViewer.currentIndex\n },\n currentMedia () {\n return this.media[this.currentIndex]\n },\n canNavigate () {\n return this.media.length > 1\n },\n type () {\n return this.currentMedia ? this.getType(this.currentMedia) : null\n },\n swipeDisableClickThreshold () {\n // If there is only one media, allow more mouse movements to close the modal\n // because there is less chance that the user wants to switch to another image\n return () => this.canNavigate ? 1 : 30\n }\n },\n methods: {\n getType (media) {\n return fileTypeService.fileType(media.mimetype)\n },\n hide () {\n // HACK: Closing immediately via a touch will cause the click\n // to be processed on the content below the overlay\n const transitionTime = 100 // ms\n setTimeout(() => {\n this.$store.dispatch('closeMediaViewer')\n }, transitionTime)\n },\n hideIfNotSwiped (event) {\n // If we have swiped over SwipeClick, do not trigger hide\n const comp = this.$refs.swipeClick\n if (!comp) {\n this.hide()\n } else {\n comp.$gesture.click(event)\n }\n },\n goPrev () {\n if (this.canNavigate) {\n const prevIndex = this.currentIndex === 0 ? this.media.length - 1 : (this.currentIndex - 1)\n const newMedia = this.media[prevIndex]\n if (this.getType(newMedia) === 'image') {\n this.loading = true\n }\n this.$store.dispatch('setCurrentMedia', newMedia)\n }\n },\n goNext () {\n if (this.canNavigate) {\n const nextIndex = this.currentIndex === this.media.length - 1 ? 0 : (this.currentIndex + 1)\n const newMedia = this.media[nextIndex]\n if (this.getType(newMedia) === 'image') {\n this.loading = true\n }\n this.$store.dispatch('setCurrentMedia', newMedia)\n }\n },\n onImageLoaded () {\n this.loading = false\n },\n handleSwipePreview (offsets) {\n this.$refs.pinchZoom.setTransform({ scale: 1, x: offsets[0], y: 0 })\n },\n handleSwipeEnd (sign) {\n this.$refs.pinchZoom.setTransform({ scale: 1, x: 0, y: 0 })\n if (sign > 0) {\n this.goNext()\n } else if (sign < 0) {\n this.goPrev()\n }\n },\n handleKeyupEvent (e) {\n if (this.showing && e.keyCode === 27) { // escape\n this.hide()\n }\n },\n handleKeydownEvent (e) {\n if (!this.showing) {\n return\n }\n\n if (e.keyCode === 39) { // arrow right\n this.goNext()\n } else if (e.keyCode === 37) { // arrow left\n this.goPrev()\n }\n }\n },\n mounted () {\n window.addEventListener('popstate', this.hide)\n document.addEventListener('keyup', this.handleKeyupEvent)\n document.addEventListener('keydown', this.handleKeydownEvent)\n },\n unmounted () {\n window.removeEventListener('popstate', this.hide)\n document.removeEventListener('keyup', this.handleKeyupEvent)\n document.removeEventListener('keydown', this.handleKeydownEvent)\n }\n}\n\nexport default MediaModal\n","import { render } from \"./media_modal.vue?vue&type=template&id=a080a8e6\"\nimport script from \"./media_modal.js?vue&type=script&lang=js\"\nexport * from \"./media_modal.js?vue&type=script&lang=js\"\n\nimport \"./media_modal.vue?vue&type=style&index=0&id=a080a8e6&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"side-drawer-container\"\n :class=\"{ 'side-drawer-container-closed': closed, 'side-drawer-container-open': !closed }\"\n >\n <div\n class=\"side-drawer-darken\"\n :class=\"{ 'side-drawer-darken-closed': closed}\"\n />\n <div\n class=\"side-drawer\"\n :class=\"{'side-drawer-closed': closed}\"\n @touchstart=\"touchStart\"\n @touchmove=\"touchMove\"\n >\n <div\n class=\"side-drawer-heading\"\n @click=\"toggleDrawer\"\n >\n <UserCard\n v-if=\"currentUser\"\n :user-id=\"currentUser.id\"\n :hide-bio=\"true\"\n />\n <div\n v-else\n class=\"side-drawer-logo-wrapper\"\n >\n <img :src=\"logo\">\n <span v-if=\"!hideSitename\">{{ sitename }}</span>\n </div>\n </div>\n <ul>\n <li\n v-if=\"!currentUser\"\n @click=\"toggleDrawer\"\n >\n <router-link :to=\"{ name: 'login' }\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"sign-in-alt\"\n /> {{ $t(\"login.login\") }}\n </router-link>\n </li>\n <li\n v-if=\"currentUser || !privateMode\"\n @click=\"toggleDrawer\"\n >\n <router-link :to=\"timelinesRoute\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"home\"\n /> {{ $t(\"nav.timelines\") }}\n </router-link>\n </li>\n <li\n v-if=\"currentUser\"\n @click=\"toggleDrawer\"\n >\n <router-link :to=\"{ name: 'lists' }\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"list\"\n /> {{ $t(\"nav.lists\") }}\n </router-link>\n </li>\n <li\n v-if=\"currentUser && pleromaChatMessagesAvailable\"\n @click=\"toggleDrawer\"\n >\n <router-link\n :to=\"{ name: 'chats', params: { username: currentUser.screen_name } }\"\n style=\"position: relative;\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"comments\"\n /> {{ $t(\"nav.chats\") }}\n <span\n v-if=\"unreadChatCount\"\n class=\"badge badge-notification\"\n >\n {{ unreadChatCount }}\n </span>\n </router-link>\n </li>\n </ul>\n <ul v-if=\"currentUser\">\n <li @click=\"toggleDrawer\">\n <router-link :to=\"{ name: 'interactions', params: { username: currentUser.screen_name } }\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"bell\"\n /> {{ $t(\"nav.interactions\") }}\n </router-link>\n </li>\n <li\n v-if=\"currentUser.locked\"\n @click=\"toggleDrawer\"\n >\n <router-link to=\"/friend-requests\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"user-plus\"\n /> {{ $t(\"nav.friend_requests\") }}\n <span\n v-if=\"followRequestCount > 0\"\n class=\"badge badge-notification\"\n >\n {{ followRequestCount }}\n </span>\n </router-link>\n </li>\n <li\n v-if=\"shout\"\n @click=\"toggleDrawer\"\n >\n <router-link :to=\"{ name: 'shout-panel' }\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"bullhorn\"\n /> {{ $t(\"shoutbox.title\") }}\n </router-link>\n </li>\n </ul>\n <ul>\n <li\n v-if=\"currentUser || !privateMode\"\n @click=\"toggleDrawer\"\n >\n <router-link :to=\"{ name: 'search' }\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"search\"\n /> {{ $t(\"nav.search\") }}\n </router-link>\n </li>\n <li\n v-if=\"currentUser && suggestionsEnabled\"\n @click=\"toggleDrawer\"\n >\n <router-link :to=\"{ name: 'who-to-follow' }\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"user-plus\"\n /> {{ $t(\"nav.who_to_follow\") }}\n </router-link>\n </li>\n <li @click=\"toggleDrawer\">\n <button\n class=\"button-unstyled -link -fullwidth\"\n @click=\"openSettingsModal\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"cog\"\n /> {{ $t(\"settings.settings\") }}\n </button>\n </li>\n <li @click=\"toggleDrawer\">\n <router-link :to=\"{ name: 'about'}\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"info-circle\"\n /> {{ $t(\"nav.about\") }}\n </router-link>\n </li>\n <li\n v-if=\"currentUser && currentUser.role === 'admin'\"\n @click=\"toggleDrawer\"\n >\n <a\n href=\"/pleroma/admin/#/login-pleroma\"\n target=\"_blank\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"tachometer-alt\"\n /> {{ $t(\"nav.administration\") }}\n </a>\n </li>\n <li\n v-if=\"currentUser && supportsAnnouncements\"\n @click=\"toggleDrawer\"\n >\n <router-link\n :to=\"{ name: 'announcements' }\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"bullhorn\"\n /> {{ $t(\"nav.announcements\") }}\n <span\n v-if=\"unreadAnnouncementCount\"\n class=\"badge badge-notification\"\n >\n {{ unreadAnnouncementCount }}\n </span>\n </router-link>\n </li>\n <li\n v-if=\"currentUser\"\n @click=\"toggleDrawer\"\n >\n <router-link :to=\"{ name: 'edit-navigation' }\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"compass\"\n /> {{ $t(\"nav.edit_nav_mobile\") }}\n </router-link>\n </li>\n <li\n v-if=\"currentUser\"\n @click=\"toggleDrawer\"\n >\n <button\n class=\"button-unstyled -link -fullwidth\"\n @click=\"doLogout\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"sign-out-alt\"\n /> {{ $t(\"login.logout\") }}\n </button>\n </li>\n </ul>\n </div>\n <div\n class=\"side-drawer-click-outside\"\n :class=\"{'side-drawer-click-outside-closed': closed}\"\n @click.stop.prevent=\"toggleDrawer\"\n />\n </div>\n</template>\n\n<script src=\"./side_drawer.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.side-drawer-container {\n position: fixed;\n z-index: var(--ZI_navbar);\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: stretch;\n transition-duration: 0s;\n transition-property: transform;\n}\n\n.side-drawer-container-open {\n transform: translate(0%);\n}\n\n.side-drawer-container-closed {\n transition-delay: 0.35s;\n transform: translate(-100%);\n}\n\n.side-drawer-darken {\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n position: fixed;\n z-index: -1;\n transition: 0.35s;\n transition-property: background-color;\n background-color: rgb(0 0 0 / 50%);\n}\n\n.side-drawer-darken-closed {\n background-color: rgb(0 0 0 / 0%);\n}\n\n.side-drawer-click-outside {\n flex: 1 1 100%;\n}\n\n.side-drawer {\n overflow-x: hidden;\n transition: 0.35s;\n transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n transition-property: transform;\n margin: 0 0 0 -100px;\n padding: 0 0 1em 100px;\n width: 80%;\n max-width: 20em;\n flex: 0 0 80%;\n box-shadow: 1px 1px 4px rgb(0 0 0 / 60%);\n box-shadow: var(--panelShadow);\n background-color: $fallback--bg;\n background-color: var(--popover, $fallback--bg);\n color: $fallback--link;\n color: var(--popoverText, $fallback--link);\n\n --faint: var(--popoverFaintText, $fallback--faint);\n --faintLink: var(--popoverFaintLink, $fallback--faint);\n --lightText: var(--popoverLightText, $fallback--lightText);\n --icon: var(--popoverIcon, $fallback--icon);\n\n .badge {\n margin-left: 10px;\n }\n}\n\n.side-drawer-logo-wrapper {\n display: flex;\n align-items: center;\n padding: 0.85em;\n\n img {\n flex: none;\n height: 50px;\n margin-right: 0.85em;\n }\n\n span {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n}\n\n.side-drawer-click-outside-closed {\n flex: 0 0 0;\n}\n\n.side-drawer-closed {\n transform: translate(-100%);\n}\n\n.side-drawer-heading {\n background: transparent;\n flex-direction: column;\n align-items: stretch;\n display: flex;\n padding: 0;\n margin: 0;\n}\n\n.side-drawer ul {\n list-style: none;\n margin: 0;\n padding: 0;\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n}\n\n.side-drawer ul:last-child {\n border: 0;\n}\n\n.side-drawer li {\n padding: 0;\n\n a,\n button {\n box-sizing: border-box;\n display: block;\n height: 3em;\n line-height: 3em;\n padding: 0 0.7em;\n\n &:hover {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenuPopover, $fallback--lightBg);\n color: $fallback--text;\n color: var(--selectedMenuPopoverText, $fallback--text);\n\n --faint: var(--selectedMenuPopoverFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuPopoverFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuPopoverLightText, $fallback--lightText);\n --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n }\n }\n}\n</style>\n","import { mapState, mapGetters } from 'vuex'\nimport UserCard from '../user_card/user_card.vue'\nimport { unseenNotificationsFromStore } from '../../services/notification_utils/notification_utils'\nimport GestureService from '../../services/gesture_service/gesture_service'\nimport { USERNAME_ROUTES } from 'src/components/navigation/navigation.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSignInAlt,\n faSignOutAlt,\n faHome,\n faComments,\n faBell,\n faUserPlus,\n faBullhorn,\n faSearch,\n faTachometerAlt,\n faCog,\n faInfoCircle,\n faCompass,\n faList\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faSignInAlt,\n faSignOutAlt,\n faHome,\n faComments,\n faBell,\n faUserPlus,\n faBullhorn,\n faSearch,\n faTachometerAlt,\n faCog,\n faInfoCircle,\n faCompass,\n faList\n)\n\nconst SideDrawer = {\n props: ['logout'],\n data: () => ({\n closed: true,\n closeGesture: undefined\n }),\n created () {\n this.closeGesture = GestureService.swipeGesture(GestureService.DIRECTION_LEFT, this.toggleDrawer)\n\n if (this.currentUser && this.currentUser.locked) {\n this.$store.dispatch('startFetchingFollowRequests')\n }\n },\n components: { UserCard },\n computed: {\n currentUser () {\n return this.$store.state.users.currentUser\n },\n shout () { return this.$store.state.shout.joined },\n unseenNotifications () {\n return unseenNotificationsFromStore(this.$store)\n },\n unseenNotificationsCount () {\n return this.unseenNotifications.length\n },\n suggestionsEnabled () {\n return this.$store.state.instance.suggestionsEnabled\n },\n logo () {\n return this.$store.state.instance.logo\n },\n hideSitename () {\n return this.$store.state.instance.hideSitename\n },\n sitename () {\n return this.$store.state.instance.name\n },\n followRequestCount () {\n return this.$store.state.api.followRequests.length\n },\n privateMode () {\n return this.$store.state.instance.private\n },\n federating () {\n return this.$store.state.instance.federating\n },\n timelinesRoute () {\n let name\n if (this.$store.state.interface.lastTimeline) {\n name = this.$store.state.interface.lastTimeline\n }\n name = this.currentUser ? 'friends' : 'public-timeline'\n if (USERNAME_ROUTES.has(name)) {\n return { name, params: { username: this.currentUser.screen_name } }\n } else {\n return { name }\n }\n },\n ...mapState({\n pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable,\n supportsAnnouncements: state => state.announcements.supportsAnnouncements\n }),\n ...mapGetters(['unreadChatCount', 'unreadAnnouncementCount'])\n },\n methods: {\n toggleDrawer () {\n this.closed = !this.closed\n },\n doLogout () {\n this.logout()\n this.toggleDrawer()\n },\n touchStart (e) {\n GestureService.beginSwipe(e, this.closeGesture)\n },\n touchMove (e) {\n GestureService.updateSwipe(e, this.closeGesture)\n },\n openSettingsModal () {\n this.$store.dispatch('openSettingsModal')\n }\n }\n}\n\nexport default SideDrawer\n","import { render } from \"./side_drawer.vue?vue&type=template&id=650ad1ba\"\nimport script from \"./side_drawer.js?vue&type=script&lang=js\"\nexport * from \"./side_drawer.js?vue&type=script&lang=js\"\n\nimport \"./side_drawer.vue?vue&type=style&index=0&id=650ad1ba&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { debounce } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faPen\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faPen\n)\n\nconst HIDDEN_FOR_PAGES = new Set([\n 'chats',\n 'chat',\n 'lists-edit'\n])\n\nconst MobilePostStatusButton = {\n data () {\n return {\n hidden: false,\n scrollingDown: false,\n inputActive: false,\n oldScrollPos: 0,\n amountScrolled: 0\n }\n },\n created () {\n if (this.autohideFloatingPostButton) {\n this.activateFloatingPostButtonAutohide()\n }\n window.addEventListener('resize', this.handleOSK)\n },\n unmounted () {\n if (this.autohideFloatingPostButton) {\n this.deactivateFloatingPostButtonAutohide()\n }\n window.removeEventListener('resize', this.handleOSK)\n },\n computed: {\n isLoggedIn () {\n return !!this.$store.state.users.currentUser\n },\n isHidden () {\n if (HIDDEN_FOR_PAGES.has(this.$route.name)) { return true }\n\n return this.autohideFloatingPostButton && (this.hidden || this.inputActive)\n },\n isPersistent () {\n return !!this.$store.getters.mergedConfig.alwaysShowNewPostButton\n },\n autohideFloatingPostButton () {\n return !!this.$store.getters.mergedConfig.autohideFloatingPostButton\n }\n },\n watch: {\n autohideFloatingPostButton: function (isEnabled) {\n if (isEnabled) {\n this.activateFloatingPostButtonAutohide()\n } else {\n this.deactivateFloatingPostButtonAutohide()\n }\n }\n },\n methods: {\n activateFloatingPostButtonAutohide () {\n window.addEventListener('scroll', this.handleScrollStart)\n window.addEventListener('scroll', this.handleScrollEnd)\n },\n deactivateFloatingPostButtonAutohide () {\n window.removeEventListener('scroll', this.handleScrollStart)\n window.removeEventListener('scroll', this.handleScrollEnd)\n },\n openPostForm () {\n this.$store.dispatch('openPostStatusModal')\n },\n handleOSK () {\n // This is a big hack: we're guessing from changed window sizes if the\n // on-screen keyboard is active or not. This is only really important\n // for phones in portrait mode and it's more important to show the button\n // in normal scenarios on all phones, than it is to hide it when the\n // keyboard is active.\n // Guesswork based on https://www.mydevice.io/#compare-devices\n\n // for example, iphone 4 and android phones from the same time period\n const smallPhone = window.innerWidth < 350\n const smallPhoneKbOpen = smallPhone && window.innerHeight < 345\n\n const biggerPhone = !smallPhone && window.innerWidth < 450\n const biggerPhoneKbOpen = biggerPhone && window.innerHeight < 560\n if (smallPhoneKbOpen || biggerPhoneKbOpen) {\n this.inputActive = true\n } else {\n this.inputActive = false\n }\n },\n handleScrollStart: debounce(function () {\n if (window.scrollY > this.oldScrollPos) {\n this.hidden = true\n } else {\n this.hidden = false\n }\n this.oldScrollPos = window.scrollY\n }, 100, { leading: true, trailing: false }),\n\n handleScrollEnd: debounce(function () {\n this.hidden = false\n this.oldScrollPos = window.scrollY\n }, 100, { leading: false, trailing: true })\n }\n}\n\nexport default MobilePostStatusButton\n","import { render } from \"./mobile_post_status_button.vue?vue&type=template&id=6c0a4c69\"\nimport script from \"./mobile_post_status_button.js?vue&type=script&lang=js\"\nexport * from \"./mobile_post_status_button.js?vue&type=script&lang=js\"\n\nimport \"./mobile_post_status_button.vue?vue&type=style&index=0&id=6c0a4c69&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <button\n v-if=\"isLoggedIn\"\n class=\"MobilePostButton button-default new-status-button\"\n :class=\"{ 'hidden': isHidden, 'always-show': isPersistent }\"\n :title=\"$t('post_status.new_status')\"\n @click=\"openPostForm\"\n >\n <FAIcon icon=\"pen\" />\n </button>\n</template>\n\n<script src=\"./mobile_post_status_button.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.MobilePostButton {\n &.button-default {\n width: 5em;\n height: 5em;\n border-radius: 100%;\n position: fixed;\n bottom: 1.5em;\n right: 1.5em;\n // TODO: this needs its own color, it has to stand out enough and link color\n // is not very optimal for this particular use.\n background-color: $fallback--fg;\n background-color: var(--btn, $fallback--fg);\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: 0 2px 2px rgb(0 0 0 / 30%), 0 4px 6px rgb(0 0 0 / 30%);\n z-index: 10;\n transition: 0.35s transform;\n transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n }\n\n &.hidden {\n transform: translateY(150%);\n }\n\n svg {\n font-size: 1.5em;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n}\n\n@media all and (min-width: 801px) {\n .new-status-button:not(.always-show) {\n display: none;\n }\n}\n\n</style>\n","<template>\n <div\n class=\"MobileNav\"\n >\n <nav\n id=\"nav\"\n class=\"mobile-nav\"\n @click=\"scrollToTop()\"\n >\n <div class=\"item\">\n <button\n class=\"button-unstyled mobile-nav-button\"\n :title=\"$t('nav.mobile_sidebar')\"\n :aria-expanaded=\"$refs.sideDrawer && !$refs.sideDrawer.closed\"\n @click.stop.prevent=\"toggleMobileSidebar()\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"bars\"\n />\n <div\n v-if=\"(unreadChatCount && !chatsPinned) || unreadAnnouncementCount\"\n class=\"alert-dot\"\n />\n </button>\n <NavigationPins class=\"pins\" />\n </div> <div class=\"item right\">\n <button\n v-if=\"currentUser\"\n class=\"button-unstyled mobile-nav-button\"\n :title=\"unseenNotificationsCount ? $t('nav.mobile_notifications_unread_active') : $t('nav.mobile_notifications')\"\n @click.stop.prevent=\"openMobileNotifications()\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"bell\"\n />\n <div\n v-if=\"unseenNotificationsCount\"\n class=\"alert-dot\"\n />\n </button>\n </div>\n </nav>\n <aside\n v-if=\"currentUser\"\n class=\"mobile-notifications-drawer\"\n :class=\"{ '-closed': !notificationsOpen }\"\n @touchstart.stop=\"notificationsTouchStart\"\n @touchmove.stop=\"notificationsTouchMove\"\n >\n <div class=\"mobile-notifications-header\">\n <span class=\"title\">{{ $t('notifications.notifications') }}</span>\n <span class=\"spacer\" />\n <button\n v-if=\"notificationsAtTop\"\n class=\"button-unstyled mobile-nav-button\"\n :title=\"$t('general.scroll_to_top')\"\n @click.stop.prevent=\"scrollMobileNotificationsToTop\"\n >\n <FALayers class=\"fa-scale-110 fa-old-padding-layer\">\n <FAIcon icon=\"arrow-up\" />\n <FAIcon\n icon=\"minus\"\n transform=\"up-7\"\n />\n </FALayers>\n </button>\n <button\n class=\"button-unstyled mobile-nav-button\"\n :title=\"$t('nav.mobile_notifications_close')\"\n @click.stop.prevent=\"closeMobileNotifications(true)\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n />\n </button>\n </div>\n <div\n id=\"mobile-notifications\"\n ref=\"mobileNotifications\"\n class=\"mobile-notifications\"\n @scroll=\"onScroll\"\n />\n </aside>\n <SideDrawer\n ref=\"sideDrawer\"\n :logout=\"logout\"\n />\n <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingConfirmLogout\"\n :title=\"$t('login.logout_confirm_title')\"\n :confirm-text=\"$t('login.logout_confirm_accept_button')\"\n :cancel-text=\"$t('login.logout_confirm_cancel_button')\"\n @accepted=\"doLogout\"\n @cancelled=\"hideConfirmLogout\"\n >\n {{ $t('login.logout_confirm') }}\n </confirm-modal>\n </teleport>\n </div>\n</template>\n\n<script src=\"./mobile_nav.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.MobileNav {\n z-index: var(--ZI_navbar);\n\n .mobile-nav {\n display: grid;\n line-height: var(--navbar-height);\n grid-template-rows: 50px;\n grid-template-columns: 2fr auto;\n width: 100%;\n box-sizing: border-box;\n\n a {\n color: var(--topBarLink, $fallback--link);\n }\n }\n\n .mobile-inner-nav {\n width: 100%;\n display: flex;\n align-items: center;\n }\n\n .mobile-nav-button {\n display: inline-block;\n text-align: center;\n padding: 0 1em;\n position: relative;\n cursor: pointer;\n }\n\n .site-name {\n padding: 0 0.3em;\n display: inline-block;\n }\n\n .item {\n /* moslty just to get rid of extra whitespaces */\n display: flex;\n }\n\n .alert-dot {\n border-radius: 100%;\n height: 8px;\n width: 8px;\n position: absolute;\n left: calc(50% - 4px);\n top: calc(50% - 4px);\n margin-left: 6px;\n margin-top: -6px;\n background-color: $fallback--cRed;\n background-color: var(--badgeNotification, $fallback--cRed);\n }\n\n .mobile-notifications-drawer {\n width: 100%;\n height: 100vh;\n overflow-x: hidden;\n position: fixed;\n top: 0;\n left: 0;\n box-shadow: 1px 1px 4px rgb(0 0 0 / 60%);\n box-shadow: var(--panelShadow);\n transition-property: transform;\n transition-duration: 0.25s;\n transform: translateX(0);\n z-index: var(--ZI_navbar);\n -webkit-overflow-scrolling: touch;\n\n &.-closed {\n transform: translateX(100%);\n box-shadow: none;\n }\n }\n\n .mobile-notifications-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n z-index: calc(var(--ZI_navbar) + 100);\n width: 100%;\n height: 50px;\n line-height: 50px;\n position: absolute;\n color: var(--topBarText);\n background-color: $fallback--fg;\n background-color: var(--topBar, $fallback--fg);\n box-shadow: 0 0 4px rgb(0 0 0 / 60%);\n box-shadow: var(--topBarShadow);\n\n .spacer {\n flex: 1;\n }\n\n .title {\n font-size: 1.3em;\n margin-left: 0.6em;\n }\n }\n\n .pins {\n flex: 1;\n\n .pinned-item {\n flex-grow: 1;\n }\n }\n\n .mobile-notifications {\n margin-top: 50px;\n width: 100vw;\n height: calc(100vh - var(--navbar-height));\n overflow-x: hidden;\n overflow-y: scroll;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n\n .notifications {\n padding: 0;\n border-radius: 0;\n box-shadow: none;\n\n .panel {\n border-radius: 0;\n margin: 0;\n box-shadow: none;\n }\n\n .panel::after {\n border-radius: 0;\n }\n\n .panel .panel-heading {\n border-radius: 0;\n box-shadow: none;\n }\n }\n }\n\n .confirm-modal.dark-overlay {\n &::before {\n z-index: 3000;\n }\n\n .dialog-modal.panel {\n z-index: 3001;\n }\n }\n}\n\n</style>\n","import SideDrawer from '../side_drawer/side_drawer.vue'\nimport Notifications from '../notifications/notifications.vue'\nimport ConfirmModal from '../confirm_modal/confirm_modal.vue'\nimport { unseenNotificationsFromStore } from '../../services/notification_utils/notification_utils'\nimport GestureService from '../../services/gesture_service/gesture_service'\nimport NavigationPins from 'src/components/navigation/navigation_pins.vue'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes,\n faBell,\n faBars,\n faArrowUp,\n faMinus\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes,\n faBell,\n faBars,\n faArrowUp,\n faMinus\n)\n\nconst MobileNav = {\n components: {\n SideDrawer,\n Notifications,\n NavigationPins,\n ConfirmModal\n },\n data: () => ({\n notificationsCloseGesture: undefined,\n notificationsOpen: false,\n notificationsAtTop: true,\n showingConfirmLogout: false\n }),\n created () {\n this.notificationsCloseGesture = GestureService.swipeGesture(\n GestureService.DIRECTION_RIGHT,\n () => this.closeMobileNotifications(true),\n 50\n )\n },\n computed: {\n currentUser () {\n return this.$store.state.users.currentUser\n },\n unseenNotifications () {\n return unseenNotificationsFromStore(this.$store)\n },\n unseenNotificationsCount () {\n return this.unseenNotifications.length\n },\n hideSitename () { return this.$store.state.instance.hideSitename },\n sitename () { return this.$store.state.instance.name },\n isChat () {\n return this.$route.name === 'chat'\n },\n ...mapGetters(['unreadChatCount', 'unreadAnnouncementCount']),\n chatsPinned () {\n return new Set(this.$store.state.serverSideStorage.prefsStorage.collections.pinnedNavItems).has('chats')\n },\n shouldConfirmLogout () {\n return this.$store.getters.mergedConfig.modalOnLogout\n },\n ...mapGetters(['unreadChatCount'])\n },\n methods: {\n toggleMobileSidebar () {\n this.$refs.sideDrawer.toggleDrawer()\n },\n openMobileNotifications () {\n this.notificationsOpen = true\n },\n closeMobileNotifications (markRead) {\n if (this.notificationsOpen) {\n // make sure to mark notifs seen only when the notifs were open and not\n // from close-calls.\n this.notificationsOpen = false\n if (markRead) {\n this.markNotificationsAsSeen()\n }\n }\n },\n notificationsTouchStart (e) {\n GestureService.beginSwipe(e, this.notificationsCloseGesture)\n },\n notificationsTouchMove (e) {\n GestureService.updateSwipe(e, this.notificationsCloseGesture)\n },\n scrollToTop () {\n window.scrollTo(0, 0)\n },\n scrollMobileNotificationsToTop () {\n this.$refs.mobileNotifications.scrollTo(0, 0)\n },\n showConfirmLogout () {\n this.showingConfirmLogout = true\n },\n hideConfirmLogout () {\n this.showingConfirmLogout = false\n },\n logout () {\n if (!this.shouldConfirmLogout) {\n this.doLogout()\n } else {\n this.showConfirmLogout()\n }\n },\n doLogout () {\n this.$router.replace('/main/public')\n this.$store.dispatch('logout')\n this.hideConfirmLogout()\n },\n markNotificationsAsSeen () {\n // this.$refs.notifications.markAsSeen()\n this.$store.dispatch('markNotificationsAsSeen')\n },\n onScroll ({ target: { scrollTop, clientHeight, scrollHeight } }) {\n this.notificationsAtTop = scrollTop > 0\n if (scrollTop + clientHeight >= scrollHeight) {\n this.$refs.notifications.fetchOlderNotifications()\n }\n }\n },\n watch: {\n $route () {\n // handles closing notificaitons when you press any router-link on the\n // notifications.\n this.closeMobileNotifications()\n }\n }\n}\n\nexport default MobileNav\n","import { render } from \"./mobile_nav.vue?vue&type=template&id=06094f09\"\nimport script from \"./mobile_nav.js?vue&type=script&lang=js\"\nexport * from \"./mobile_nav.js?vue&type=script&lang=js\"\n\nimport \"./mobile_nav.vue?vue&type=style&index=0&id=06094f09&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <nav\n id=\"nav\"\n class=\"DesktopNav\"\n :class=\"{ '-logoLeft': logoLeft }\"\n @click=\"scrollToTop()\"\n >\n <div class=\"inner-nav\">\n <div class=\"item sitename\">\n <router-link\n v-if=\"!hideSitename\"\n class=\"site-name\"\n :to=\"{ name: 'root' }\"\n active-class=\"home\"\n >\n {{ sitename }}\n </router-link>\n </div>\n <router-link\n class=\"logo\"\n :to=\"{ name: 'root' }\"\n :style=\"logoBgStyle\"\n :title=\"sitename\"\n >\n <div\n class=\"mask\"\n :style=\"logoMaskStyle\"\n />\n <img\n :src=\"logo\"\n :style=\"logoStyle\"\n >\n </router-link>\n <div class=\"item right actions\">\n <search-bar\n v-if=\"currentUser || !privateMode\"\n @toggled=\"onSearchBarToggled\"\n @click.stop\n />\n <button\n class=\"button-unstyled nav-icon\"\n :title=\"$t('nav.preferences')\"\n @click.stop=\"openSettingsModal\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"cog\"\n />\n </button>\n <a\n v-if=\"currentUser && currentUser.role === 'admin'\"\n href=\"/pleroma/admin/#/login-pleroma\"\n class=\"nav-icon\"\n target=\"_blank\"\n :title=\"$t('nav.administration')\"\n @click.stop\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"tachometer-alt\"\n />\n </a>\n <span class=\"spacer\" />\n <button\n v-if=\"currentUser\"\n class=\"button-unstyled nav-icon\"\n :title=\"$t('login.logout')\"\n @click.stop.prevent=\"logout\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"sign-out-alt\"\n />\n </button>\n </div>\n </div>\n <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingConfirmLogout\"\n :title=\"$t('login.logout_confirm_title')\"\n :confirm-text=\"$t('login.logout_confirm_accept_button')\"\n :cancel-text=\"$t('login.logout_confirm_cancel_button')\"\n @accepted=\"doLogout\"\n @cancelled=\"hideConfirmLogout\"\n >\n {{ $t('login.logout_confirm') }}\n </confirm-modal>\n </teleport>\n </nav>\n</template>\n<script src=\"./desktop_nav.js\"></script>\n\n<style src=\"./desktop_nav.scss\" lang=\"scss\"></style>\n","<template>\n <div\n class=\"SearchBar\"\n :class=\"{ '-expanded': !hidden }\"\n >\n <button\n v-if=\"hidden\"\n class=\"button-unstyled nav-icon\"\n :title=\"$t('nav.search')\"\n type=\"button\"\n :aria-expanded=\"!hidden\"\n @click.prevent.stop=\"toggleHidden\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"search\"\n />\n </button>\n <template v-else>\n <input\n id=\"search-bar-input\"\n ref=\"searchInput\"\n v-model=\"searchTerm\"\n class=\"search-bar-input\"\n :placeholder=\"$t('nav.search')\"\n type=\"text\"\n @keyup.enter=\"find(searchTerm)\"\n >\n <button\n class=\"button-default search-button\"\n type=\"submit\"\n :title=\"$t('nav.search')\"\n @click=\"find(searchTerm)\"\n >\n <FAIcon\n fixed-width\n icon=\"search\"\n />\n </button>\n <button\n class=\"button-unstyled cancel-search\"\n type=\"button\"\n :title=\"$t('nav.search_close')\"\n :aria-expanded=\"!hidden\"\n @click.prevent.stop=\"toggleHidden\"\n >\n <FAIcon\n fixed-width\n icon=\"times\"\n class=\"cancel-icon fa-scale-110 fa-old-padding\"\n />\n </button>\n <span class=\"spacer\" />\n <span class=\"spacer\" />\n </template>\n </div>\n</template>\n\n<script src=\"./search_bar.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.SearchBar {\n display: inline-flex;\n align-items: baseline;\n vertical-align: baseline;\n justify-content: flex-end;\n\n &.-expanded {\n width: 100%;\n }\n\n .search-bar-input,\n .search-button {\n height: 29px;\n }\n\n .search-bar-input {\n flex: 1 0 auto;\n }\n\n .cancel-search {\n height: 50px;\n }\n\n .cancel-icon {\n color: $fallback--text;\n color: var(--btnTopBarText, $fallback--text);\n }\n}\n\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes,\n faSearch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes,\n faSearch\n)\n\nconst SearchBar = {\n data: () => ({\n searchTerm: undefined,\n hidden: true,\n error: false\n }),\n watch: {\n $route: function (route) {\n if (route.name === 'search') {\n this.searchTerm = route.query.query\n }\n }\n },\n methods: {\n find (searchTerm) {\n this.$router.push({ name: 'search', query: { query: searchTerm } })\n this.$refs.searchInput.focus()\n },\n toggleHidden () {\n this.hidden = !this.hidden\n this.$emit('toggled', this.hidden)\n this.$nextTick(() => {\n if (!this.hidden) {\n this.$refs.searchInput.focus()\n }\n })\n }\n }\n}\n\nexport default SearchBar\n","import { render } from \"./search_bar.vue?vue&type=template&id=3ff3b2d5\"\nimport script from \"./search_bar.js?vue&type=script&lang=js\"\nexport * from \"./search_bar.js?vue&type=script&lang=js\"\n\nimport \"./search_bar.vue?vue&type=style&index=0&id=3ff3b2d5&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import SearchBar from 'components/search_bar/search_bar.vue'\nimport ConfirmModal from '../confirm_modal/confirm_modal.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSignInAlt,\n faSignOutAlt,\n faHome,\n faComments,\n faBell,\n faUserPlus,\n faBullhorn,\n faSearch,\n faTachometerAlt,\n faCog,\n faInfoCircle\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faSignInAlt,\n faSignOutAlt,\n faHome,\n faComments,\n faBell,\n faUserPlus,\n faBullhorn,\n faSearch,\n faTachometerAlt,\n faCog,\n faInfoCircle\n)\n\nexport default {\n components: {\n SearchBar,\n ConfirmModal\n },\n data: () => ({\n searchBarHidden: true,\n supportsMask: window.CSS && window.CSS.supports && (\n window.CSS.supports('mask-size', 'contain') ||\n window.CSS.supports('-webkit-mask-size', 'contain') ||\n window.CSS.supports('-moz-mask-size', 'contain') ||\n window.CSS.supports('-ms-mask-size', 'contain') ||\n window.CSS.supports('-o-mask-size', 'contain')\n ),\n showingConfirmLogout: false\n }),\n computed: {\n enableMask () { return this.supportsMask && this.$store.state.instance.logoMask },\n logoStyle () {\n return {\n visibility: this.enableMask ? 'hidden' : 'visible'\n }\n },\n logoMaskStyle () {\n return this.enableMask\n ? {\n 'mask-image': `url(${this.$store.state.instance.logo})`\n }\n : {\n 'background-color': this.enableMask ? '' : 'transparent'\n }\n },\n logoBgStyle () {\n return Object.assign({\n margin: `${this.$store.state.instance.logoMargin} 0`,\n opacity: this.searchBarHidden ? 1 : 0\n }, this.enableMask\n ? {}\n : {\n 'background-color': this.enableMask ? '' : 'transparent'\n })\n },\n logo () { return this.$store.state.instance.logo },\n sitename () { return this.$store.state.instance.name },\n hideSitename () { return this.$store.state.instance.hideSitename },\n logoLeft () { return this.$store.state.instance.logoLeft },\n currentUser () { return this.$store.state.users.currentUser },\n privateMode () { return this.$store.state.instance.private },\n shouldConfirmLogout () {\n return this.$store.getters.mergedConfig.modalOnLogout\n }\n },\n methods: {\n scrollToTop () {\n window.scrollTo(0, 0)\n },\n showConfirmLogout () {\n this.showingConfirmLogout = true\n },\n hideConfirmLogout () {\n this.showingConfirmLogout = false\n },\n logout () {\n if (!this.shouldConfirmLogout) {\n this.doLogout()\n } else {\n this.showConfirmLogout()\n }\n },\n doLogout () {\n this.$router.replace('/main/public')\n this.$store.dispatch('logout')\n this.hideConfirmLogout()\n },\n onSearchBarToggled (hidden) {\n this.searchBarHidden = hidden\n },\n openSettingsModal () {\n this.$store.dispatch('openSettingsModal')\n }\n }\n}\n","import { render } from \"./desktop_nav.vue?vue&type=template&id=1390197e\"\nimport script from \"./desktop_nav.js?vue&type=script&lang=js\"\nexport * from \"./desktop_nav.js?vue&type=script&lang=js\"\n\nimport \"./desktop_nav.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Modal\n v-if=\"isOpen\"\n @backdropClicked=\"closeModal\"\n >\n <div class=\"user-reporting-panel panel\">\n <div class=\"panel-heading\">\n <i18n-t\n tag=\"div\"\n keypath=\"user_reporting.title\"\n class=\"title\"\n >\n <UserLink :user=\"user\" />\n </i18n-t>\n </div>\n <div class=\"panel-body\">\n <div class=\"user-reporting-panel-left\">\n <div>\n <p>{{ $t('user_reporting.add_comment_description') }}</p>\n <textarea\n v-model=\"comment\"\n class=\"form-control\"\n :placeholder=\"$t('user_reporting.additional_comments')\"\n rows=\"1\"\n @input=\"resize\"\n />\n </div>\n <div v-if=\"!user.is_local\">\n <p>{{ $t('user_reporting.forward_description') }}</p>\n <Checkbox v-model=\"forward\">\n {{ $t('user_reporting.forward_to', [remoteInstance]) }}\n </Checkbox>\n </div>\n <div>\n <button\n class=\"btn button-default\"\n :disabled=\"processing\"\n @click=\"reportUser\"\n >\n {{ $t('user_reporting.submit') }}\n </button>\n <div\n v-if=\"error\"\n class=\"alert error\"\n >\n {{ $t('user_reporting.generic_error') }}\n </div>\n </div>\n </div>\n <div class=\"user-reporting-panel-right\">\n <List :items=\"statuses\">\n <template #item=\"{item}\">\n <div class=\"status-fadein user-reporting-panel-sitem\">\n <Status\n :in-conversation=\"false\"\n :focused=\"false\"\n :statusoid=\"item\"\n />\n <Checkbox\n :model-value=\"isChecked(item.id)\"\n @update:model-value=\"checked => toggleStatus(checked, item.id)\"\n />\n </div>\n </template>\n </List>\n </div>\n </div>\n </div>\n </Modal>\n</template>\n\n<script src=\"./user_reporting_modal.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.user-reporting-panel {\n width: 90vw;\n max-width: 700px;\n min-height: 20vh;\n max-height: 80vh;\n\n .panel-body {\n display: flex;\n flex-direction: column-reverse;\n border-top: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n overflow: hidden;\n }\n\n &-left {\n padding: 1.1em 0.7em 0.7em;\n line-height: var(--post-line-height);\n box-sizing: border-box;\n\n > div {\n margin-bottom: 1em;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n p {\n margin-top: 0;\n }\n\n textarea.form-control {\n line-height: 16px;\n resize: none;\n overflow: hidden;\n transition: min-height 200ms 100ms;\n min-height: 44px;\n width: 100%;\n }\n\n .btn {\n min-width: 10em;\n padding: 0 2em;\n }\n\n .alert {\n margin: 1em 0 0;\n line-height: 1.3em;\n }\n }\n\n &-right {\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n }\n\n &-sitem {\n display: flex;\n justify-content: space-between;\n\n /* TODO cleanup this */\n > .Status {\n flex: 1;\n }\n\n > .checkbox {\n margin: 0.75em;\n }\n }\n\n @media all and (min-width: 801px) {\n .panel-body {\n flex-direction: row;\n }\n\n &-left {\n width: 50%;\n max-width: 320px;\n border-right: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n padding: 1.1em;\n\n > div {\n margin-bottom: 2em;\n }\n }\n\n &-right {\n width: 50%;\n flex: 1 1 auto;\n margin-bottom: 12px;\n }\n }\n}\n</style>\n","import Status from '../status/status.vue'\nimport List from '../list/list.vue'\nimport Checkbox from '../checkbox/checkbox.vue'\nimport Modal from '../modal/modal.vue'\nimport UserLink from '../user_link/user_link.vue'\n\nconst UserReportingModal = {\n components: {\n Status,\n List,\n Checkbox,\n Modal,\n UserLink\n },\n data () {\n return {\n comment: '',\n forward: false,\n statusIdsToReport: [],\n processing: false,\n error: false\n }\n },\n computed: {\n reportModal () {\n return this.$store.state.reports.reportModal\n },\n isLoggedIn () {\n return !!this.$store.state.users.currentUser\n },\n isOpen () {\n return this.isLoggedIn && this.reportModal.activated\n },\n userId () {\n return this.reportModal.userId\n },\n user () {\n return this.$store.getters.findUser(this.userId)\n },\n remoteInstance () {\n return !this.user.is_local && this.user.screen_name.substr(this.user.screen_name.indexOf('@') + 1)\n },\n statuses () {\n return this.reportModal.statuses\n },\n preTickedIds () {\n return this.reportModal.preTickedIds\n }\n },\n watch: {\n userId: 'resetState',\n preTickedIds (newValue) {\n this.statusIdsToReport = newValue\n }\n },\n methods: {\n resetState () {\n // Reset state\n this.comment = ''\n this.forward = false\n this.statusIdsToReport = this.preTickedIds\n this.processing = false\n this.error = false\n },\n closeModal () {\n this.$store.dispatch('closeUserReportingModal')\n },\n reportUser () {\n this.processing = true\n this.error = false\n const params = {\n userId: this.userId,\n comment: this.comment,\n forward: this.forward,\n statusIds: this.statusIdsToReport\n }\n this.$store.state.api.backendInteractor.reportUser({ ...params })\n .then(() => {\n this.processing = false\n this.resetState()\n this.closeModal()\n })\n .catch(() => {\n this.processing = false\n this.error = true\n })\n },\n clearError () {\n this.error = false\n },\n isChecked (statusId) {\n return this.statusIdsToReport.indexOf(statusId) !== -1\n },\n toggleStatus (checked, statusId) {\n if (checked === this.isChecked(statusId)) {\n return\n }\n\n if (checked) {\n this.statusIdsToReport.push(statusId)\n } else {\n this.statusIdsToReport.splice(this.statusIdsToReport.indexOf(statusId), 1)\n }\n },\n resize (e) {\n const target = e.target || e\n if (!(target instanceof window.Element)) { return }\n // Auto is needed to make textbox shrink when removing lines\n target.style.height = 'auto'\n target.style.height = `${target.scrollHeight}px`\n if (target.value === '') {\n target.style.height = null\n }\n }\n }\n}\n\nexport default UserReportingModal\n","import { render } from \"./user_reporting_modal.vue?vue&type=template&id=b4c54784\"\nimport script from \"./user_reporting_modal.js?vue&type=script&lang=js\"\nexport * from \"./user_reporting_modal.js?vue&type=script&lang=js\"\n\nimport \"./user_reporting_modal.vue?vue&type=style&index=0&id=b4c54784&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Modal\n v-if=\"isFormVisible\"\n class=\"edit-form-modal-view\"\n @backdropClicked=\"closeModal\"\n >\n <div class=\"edit-form-modal-panel panel\">\n <div class=\"panel-heading\">\n {{ $t('post_status.edit_status') }}\n </div>\n <PostStatusForm\n class=\"panel-body\"\n v-bind=\"params\"\n :post-handler=\"doEditStatus\"\n :disable-polls=\"true\"\n :disable-visibility-selector=\"true\"\n @posted=\"closeModal\"\n />\n </div>\n </Modal>\n</template>\n\n<script src=\"./edit_status_modal.js\"></script>\n\n<style lang=\"scss\">\n.modal-view.edit-form-modal-view {\n align-items: flex-start;\n}\n\n.edit-form-modal-panel {\n flex-shrink: 0;\n margin-top: 25%;\n margin-bottom: 2em;\n width: 100%;\n max-width: 700px;\n\n @media (orientation: landscape) {\n margin-top: 8%;\n }\n\n .form-bottom-left {\n max-width: 6.5em;\n\n .emoji-icon {\n justify-content: right;\n }\n }\n}\n</style>\n","import PostStatusForm from '../post_status_form/post_status_form.vue'\nimport Modal from '../modal/modal.vue'\nimport statusPosterService from '../../services/status_poster/status_poster.service.js'\nimport get from 'lodash/get'\n\nconst EditStatusModal = {\n components: {\n PostStatusForm,\n Modal\n },\n data () {\n return {\n resettingForm: false\n }\n },\n computed: {\n isLoggedIn () {\n return !!this.$store.state.users.currentUser\n },\n modalActivated () {\n return this.$store.state.editStatus.modalActivated\n },\n isFormVisible () {\n return this.isLoggedIn && !this.resettingForm && this.modalActivated\n },\n params () {\n return this.$store.state.editStatus.params || {}\n }\n },\n watch: {\n params (newVal, oldVal) {\n if (get(newVal, 'statusId') !== get(oldVal, 'statusId')) {\n this.resettingForm = true\n this.$nextTick(() => {\n this.resettingForm = false\n })\n }\n },\n isFormVisible (val) {\n if (val) {\n this.$nextTick(() => this.$el && this.$el.querySelector('textarea').focus())\n }\n }\n },\n methods: {\n doEditStatus ({ status, spoilerText, sensitive, media, contentType, poll }) {\n const params = {\n store: this.$store,\n statusId: this.$store.state.editStatus.params.statusId,\n status,\n spoilerText,\n sensitive,\n poll,\n media,\n contentType\n }\n\n return statusPosterService.editStatus(params)\n .then((data) => {\n return data\n })\n .catch((err) => {\n console.error('Error editing status', err)\n return {\n error: err.message\n }\n })\n },\n closeModal () {\n this.$store.dispatch('closeEditStatusModal')\n }\n }\n}\n\nexport default EditStatusModal\n","import { render } from \"./edit_status_modal.vue?vue&type=template&id=7e74cdc2\"\nimport script from \"./edit_status_modal.js?vue&type=script&lang=js\"\nexport * from \"./edit_status_modal.js?vue&type=script&lang=js\"\n\nimport \"./edit_status_modal.vue?vue&type=style&index=0&id=7e74cdc2&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Modal\n v-if=\"isLoggedIn && !resettingForm\"\n :is-open=\"modalActivated\"\n class=\"post-form-modal-view\"\n @backdropClicked=\"closeModal\"\n >\n <div class=\"post-form-modal-panel panel\">\n <div class=\"panel-heading\">\n {{ $t('post_status.new_status') }}\n </div>\n <PostStatusForm\n class=\"panel-body\"\n v-bind=\"params\"\n @posted=\"closeModal\"\n />\n </div>\n </Modal>\n</template>\n\n<script src=\"./post_status_modal.js\"></script>\n\n<style lang=\"scss\">\n.modal-view.post-form-modal-view {\n align-items: flex-start;\n}\n\n.post-form-modal-panel {\n flex-shrink: 0;\n margin-top: 25%;\n margin-bottom: 2em;\n width: 100%;\n max-width: 700px;\n\n @media (orientation: landscape) {\n margin-top: 8%;\n }\n}\n</style>\n","import PostStatusForm from '../post_status_form/post_status_form.vue'\nimport Modal from '../modal/modal.vue'\nimport get from 'lodash/get'\n\nconst PostStatusModal = {\n components: {\n PostStatusForm,\n Modal\n },\n data () {\n return {\n resettingForm: false\n }\n },\n computed: {\n isLoggedIn () {\n return !!this.$store.state.users.currentUser\n },\n modalActivated () {\n return this.$store.state.postStatus.modalActivated\n },\n isFormVisible () {\n return this.isLoggedIn && !this.resettingForm && this.modalActivated\n },\n params () {\n return this.$store.state.postStatus.params || {}\n }\n },\n watch: {\n params (newVal, oldVal) {\n if (get(newVal, 'repliedUser.id') !== get(oldVal, 'repliedUser.id')) {\n this.resettingForm = true\n this.$nextTick(() => {\n this.resettingForm = false\n })\n }\n },\n isFormVisible (val) {\n if (val) {\n this.$nextTick(() => this.$el && this.$el.querySelector('textarea').focus())\n }\n }\n },\n methods: {\n closeModal () {\n this.$store.dispatch('closePostStatusModal')\n }\n }\n}\n\nexport default PostStatusModal\n","import { render } from \"./post_status_modal.vue?vue&type=template&id=b6b8d3a2\"\nimport script from \"./post_status_modal.js?vue&type=script&lang=js\"\nexport * from \"./post_status_modal.js?vue&type=script&lang=js\"\n\nimport \"./post_status_modal.vue?vue&type=style&index=0&id=b6b8d3a2&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Modal\n v-if=\"modalActivated\"\n class=\"status-history-modal-view\"\n @backdropClicked=\"closeModal\"\n >\n <div class=\"status-history-modal-panel panel\">\n <div class=\"panel-heading\">\n {{ $t('status.status_history') }} ({{ historyCount }})\n </div>\n <div class=\"panel-body\">\n <div\n v-if=\"historyCount > 0\"\n class=\"history-body\"\n >\n <status\n v-for=\"status in history\"\n :key=\"status.id\"\n :statusoid=\"status\"\n :is-preview=\"true\"\n class=\"conversation-status status-fadein panel-body\"\n />\n </div>\n </div>\n </div>\n </Modal>\n</template>\n\n<script src=\"./status_history_modal.js\"></script>\n\n<style lang=\"scss\">\n.modal-view.status-history-modal-view {\n align-items: flex-start;\n}\n\n.status-history-modal-panel {\n flex-shrink: 0;\n margin-top: 25%;\n margin-bottom: 2em;\n width: 100%;\n max-width: 700px;\n\n @media (orientation: landscape) {\n margin-top: 8%;\n }\n}\n</style>\n","import { get } from 'lodash'\nimport Modal from '../modal/modal.vue'\nimport Status from '../status/status.vue'\n\nconst StatusHistoryModal = {\n components: {\n Modal,\n Status\n },\n data () {\n return {\n statuses: []\n }\n },\n computed: {\n modalActivated () {\n return this.$store.state.statusHistory.modalActivated\n },\n params () {\n return this.$store.state.statusHistory.params\n },\n statusId () {\n return this.params.id\n },\n historyCount () {\n return this.statuses.length\n },\n history () {\n return this.statuses\n }\n },\n watch: {\n params (newVal, oldVal) {\n const newStatusId = get(newVal, 'id') !== get(oldVal, 'id')\n if (newStatusId) {\n this.resetHistory()\n }\n\n if (newStatusId || get(newVal, 'edited_at') !== get(oldVal, 'edited_at')) {\n this.fetchStatusHistory()\n }\n }\n },\n methods: {\n resetHistory () {\n this.statuses = []\n },\n fetchStatusHistory () {\n this.$store.dispatch('fetchStatusHistory', this.params)\n .then(data => {\n this.statuses = data\n })\n },\n closeModal () {\n this.$store.dispatch('closeStatusHistoryModal')\n }\n }\n}\n\nexport default StatusHistoryModal\n","import { render } from \"./status_history_modal.vue?vue&type=template&id=16d58712\"\nimport script from \"./status_history_modal.js?vue&type=script&lang=js\"\nexport * from \"./status_history_modal.js?vue&type=script&lang=js\"\n\nimport \"./status_history_modal.vue?vue&type=style&index=0&id=16d58712&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"global-notice-list\">\n <div\n v-for=\"(notice, index) in notices\"\n :key=\"index\"\n class=\"alert global-notice\"\n :class=\"{ ['global-' + notice.level]: true }\"\n >\n <div class=\"notice-message\">\n {{ $t(notice.messageKey, notice.messageArgs) }}\n </div>\n <button\n class=\"button-unstyled close-notice\"\n @click=\"closeNotice(notice)\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n />\n </button>\n </div>\n </div>\n</template>\n\n<script src=\"./global_notice_list.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.global-notice-list {\n position: fixed;\n top: calc(var(--navbar-height) + 0.5em);\n width: 100%;\n pointer-events: none;\n z-index: var(--ZI_navbar_popovers);\n display: flex;\n flex-direction: column;\n align-items: center;\n\n .global-notice {\n pointer-events: auto;\n text-align: center;\n width: 40em;\n max-width: calc(100% - 3em);\n display: flex;\n padding-left: 1.5em;\n line-height: 2;\n margin-bottom: 0.5em;\n\n .notice-message {\n flex: 1 1 100%;\n }\n }\n\n .global-error {\n background-color: var(--alertPopupError, $fallback--cRed);\n color: var(--alertPopupErrorText, $fallback--text);\n\n .svg-inline--fa {\n color: var(--alertPopupErrorText, $fallback--text);\n }\n }\n\n .global-warning {\n background-color: var(--alertPopupWarning, $fallback--cOrange);\n color: var(--alertPopupWarningText, $fallback--text);\n\n .svg-inline--fa {\n color: var(--alertPopupWarningText, $fallback--text);\n }\n }\n\n .global-success {\n background-color: var(--alertPopupSuccess, $fallback--cGreen);\n color: var(--alertPopupSuccessText, $fallback--text);\n\n .svg-inline--fa {\n color: var(--alertPopupSuccessText, $fallback--text);\n }\n }\n\n .global-info {\n background-color: var(--alertPopupNeutral, $fallback--fg);\n color: var(--alertPopupNeutralText, $fallback--text);\n\n .svg-inline--fa {\n color: var(--alertPopupNeutralText, $fallback--text);\n }\n }\n\n .close-notice {\n padding-right: 0.2em;\n\n .svg-inline--fa:hover {\n opacity: 0.6;\n }\n }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nconst GlobalNoticeList = {\n computed: {\n notices () {\n return this.$store.state.interface.globalNotices\n }\n },\n methods: {\n closeNotice (notice) {\n this.$store.dispatch('removeGlobalNotice', notice)\n }\n }\n}\n\nexport default GlobalNoticeList\n","import { render } from \"./global_notice_list.vue?vue&type=template&id=f3a7303a\"\nimport script from \"./global_notice_list.js?vue&type=script&lang=js\"\nexport * from \"./global_notice_list.js?vue&type=script&lang=js\"\n\nimport \"./global_notice_list.vue?vue&type=style&index=0&id=f3a7303a&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import UserPanel from './components/user_panel/user_panel.vue'\nimport NavPanel from './components/nav_panel/nav_panel.vue'\nimport InstanceSpecificPanel from './components/instance_specific_panel/instance_specific_panel.vue'\nimport FeaturesPanel from './components/features_panel/features_panel.vue'\nimport WhoToFollowPanel from './components/who_to_follow_panel/who_to_follow_panel.vue'\nimport ShoutPanel from './components/shout_panel/shout_panel.vue'\nimport MediaModal from './components/media_modal/media_modal.vue'\nimport SideDrawer from './components/side_drawer/side_drawer.vue'\nimport MobilePostStatusButton from './components/mobile_post_status_button/mobile_post_status_button.vue'\nimport MobileNav from './components/mobile_nav/mobile_nav.vue'\nimport DesktopNav from './components/desktop_nav/desktop_nav.vue'\nimport UserReportingModal from './components/user_reporting_modal/user_reporting_modal.vue'\nimport EditStatusModal from './components/edit_status_modal/edit_status_modal.vue'\nimport PostStatusModal from './components/post_status_modal/post_status_modal.vue'\nimport StatusHistoryModal from './components/status_history_modal/status_history_modal.vue'\nimport GlobalNoticeList from './components/global_notice_list/global_notice_list.vue'\nimport { windowWidth, windowHeight } from './services/window_utils/window_utils'\nimport { mapGetters } from 'vuex'\nimport { defineAsyncComponent } from 'vue'\n\nexport default {\n name: 'app',\n components: {\n UserPanel,\n NavPanel,\n Notifications: defineAsyncComponent(() => import('./components/notifications/notifications.vue')),\n InstanceSpecificPanel,\n FeaturesPanel,\n WhoToFollowPanel,\n ShoutPanel,\n MediaModal,\n SideDrawer,\n MobilePostStatusButton,\n MobileNav,\n DesktopNav,\n SettingsModal: defineAsyncComponent(() => import('./components/settings_modal/settings_modal.vue')),\n UpdateNotification: defineAsyncComponent(() => import('./components/update_notification/update_notification.vue')),\n UserReportingModal,\n PostStatusModal,\n EditStatusModal,\n StatusHistoryModal,\n GlobalNoticeList\n },\n data: () => ({\n mobileActivePanel: 'timeline'\n }),\n created () {\n // Load the locale from the storage\n const val = this.$store.getters.mergedConfig.interfaceLanguage\n this.$store.dispatch('setOption', { name: 'interfaceLanguage', value: val })\n window.addEventListener('resize', this.updateMobileState)\n },\n unmounted () {\n window.removeEventListener('resize', this.updateMobileState)\n },\n computed: {\n classes () {\n return [\n {\n '-reverse': this.reverseLayout,\n '-no-sticky-headers': this.noSticky,\n '-has-new-post-button': this.newPostButtonShown\n },\n '-' + this.layoutType\n ]\n },\n navClasses () {\n const { navbarColumnStretch } = this.$store.getters.mergedConfig\n return [\n '-' + this.layoutType,\n ...(navbarColumnStretch ? ['-column-stretch'] : [])\n ]\n },\n currentUser () { return this.$store.state.users.currentUser },\n userBackground () { return this.currentUser.background_image },\n instanceBackground () {\n return this.mergedConfig.hideInstanceWallpaper\n ? null\n : this.$store.state.instance.background\n },\n background () { return this.userBackground || this.instanceBackground },\n bgStyle () {\n if (this.background) {\n return {\n '--body-background-image': `url(${this.background})`\n }\n }\n },\n shout () { return this.$store.state.shout.joined },\n suggestionsEnabled () { return this.$store.state.instance.suggestionsEnabled },\n showInstanceSpecificPanel () {\n return this.$store.state.instance.showInstanceSpecificPanel &&\n !this.$store.getters.mergedConfig.hideISP &&\n this.$store.state.instance.instanceSpecificPanelContent\n },\n isChats () {\n return this.$route.name === 'chat' || this.$route.name === 'chats'\n },\n isListEdit () {\n return this.$route.name === 'lists-edit'\n },\n newPostButtonShown () {\n if (this.isChats) return false\n if (this.isListEdit) return false\n return this.$store.getters.mergedConfig.alwaysShowNewPostButton || this.layoutType === 'mobile'\n },\n showFeaturesPanel () { return this.$store.state.instance.showFeaturesPanel },\n editingAvailable () { return this.$store.state.instance.editingAvailable },\n shoutboxPosition () {\n return this.$store.getters.mergedConfig.alwaysShowNewPostButton || false\n },\n hideShoutbox () {\n return this.$store.getters.mergedConfig.hideShoutbox\n },\n layoutType () { return this.$store.state.interface.layoutType },\n privateMode () { return this.$store.state.instance.private },\n reverseLayout () {\n const { thirdColumnMode, sidebarRight: reverseSetting } = this.$store.getters.mergedConfig\n if (this.layoutType !== 'wide') {\n return reverseSetting\n } else {\n return thirdColumnMode === 'notifications' ? reverseSetting : !reverseSetting\n }\n },\n noSticky () { return this.$store.getters.mergedConfig.disableStickyHeaders },\n showScrollbars () { return this.$store.getters.mergedConfig.showScrollbars },\n ...mapGetters(['mergedConfig'])\n },\n methods: {\n updateMobileState () {\n this.$store.dispatch('setLayoutWidth', windowWidth())\n this.$store.dispatch('setLayoutHeight', windowHeight())\n }\n }\n}\n","import { render } from \"./App.vue?vue&type=template&id=8323d9fc\"\nimport script from \"./App.js?vue&type=script&lang=js\"\nexport * from \"./App.js?vue&type=script&lang=js\"\n\nimport \"./App.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div :class=\"['Timeline', classes.root]\">\n <div :class=\"classes.header\">\n <TimelineMenu\n v-if=\"!embedded\"\n :timeline-name=\"timelineName\"\n />\n <div\n v-if=\"showScrollTop && !embedded\"\n class=\"rightside-button\"\n >\n <button\n class=\"button-unstyled scroll-to-top-button\"\n type=\"button\"\n :title=\"$t('general.scroll_to_top')\"\n @click=\"scrollToTop\"\n >\n <FALayers class=\"fa-scale-110 fa-old-padding-layer\">\n <FAIcon icon=\"arrow-up\" />\n <FAIcon\n icon=\"minus\"\n transform=\"up-7\"\n />\n </FALayers>\n </button>\n </div>\n <template v-if=\"mobileLayout && !embedded\">\n <div\n v-if=\"showLoadButton\"\n class=\"rightside-button\"\n >\n <button\n class=\"button-unstyled loadmore-button\"\n :title=\"loadButtonString\"\n @click.prevent=\"showNewStatuses\"\n >\n <FAIcon\n fixed-width\n icon=\"circle-plus\"\n />\n <div class=\"alert-badge\">\n {{ mobileLoadButtonString }}\n </div>\n </button>\n </div>\n <div\n v-else-if=\"!embedded\"\n class=\"loadmore-text faint veryfaint rightside-icon\"\n :title=\"$t('timeline.up_to_date')\"\n :aria-disabled=\"true\"\n @click.prevent\n >\n <FAIcon\n fixed-width\n icon=\"check\"\n />\n </div>\n </template>\n <template v-else>\n <button\n v-if=\"showLoadButton\"\n class=\"button-default loadmore-button\"\n @click.prevent=\"showNewStatuses\"\n >\n {{ loadButtonString }}\n </button>\n <div\n v-else-if=\"!embedded\"\n class=\"loadmore-text faint\"\n @click.prevent\n >\n {{ $t('timeline.up_to_date') }}\n </div>\n </template>\n <QuickFilterSettings\n v-if=\"!embedded\"\n class=\"rightside-button\"\n />\n <QuickViewSettings\n v-if=\"!embedded\"\n class=\"rightside-button\"\n />\n </div>\n <div :class=\"classes.body\">\n <div\n ref=\"timeline\"\n class=\"timeline\"\n role=\"feed\"\n >\n <conversation\n v-for=\"statusId in filteredPinnedStatusIds\"\n :key=\"statusId + '-pinned'\"\n role=\"listitem\"\n class=\"status-fadein\"\n :status-id=\"statusId\"\n :collapsable=\"true\"\n :pinned-status-ids-object=\"pinnedStatusIdsObject\"\n :in-profile=\"inProfile\"\n :profile-user-id=\"userId\"\n />\n <conversation\n v-for=\"status in filteredVisibleStatuses\"\n :key=\"status.id\"\n role=\"listitem\"\n class=\"status-fadein\"\n :status-id=\"status.id\"\n :collapsable=\"true\"\n :in-profile=\"inProfile\"\n :profile-user-id=\"userId\"\n :virtual-hidden=\"virtualScrollingEnabled && !statusesToDisplay.includes(status.id)\"\n />\n </div>\n </div>\n <div :class=\"classes.footer\">\n <teleport\n :to=\"footerSlipgate\"\n :disabled=\"!embedded || !footerSlipgate\"\n >\n <div\n v-if=\"count===0\"\n class=\"new-status-notification text-center faint\"\n >\n {{ $t('timeline.no_statuses') }}\n </div>\n <div\n v-else-if=\"bottomedOut\"\n class=\"new-status-notification text-center faint\"\n >\n {{ $t('timeline.no_more_statuses') }}\n </div>\n <button\n v-else-if=\"!timeline.loading\"\n class=\"button-unstyled -link\"\n @click.prevent=\"fetchOlderStatuses()\"\n >\n <div class=\"new-status-notification text-center\">\n {{ $t('timeline.load_older') }}\n </div>\n </button>\n <div\n v-else\n class=\"new-status-notification text-center\"\n >\n <FAIcon\n icon=\"circle-notch\"\n spin\n size=\"lg\"\n />\n </div>\n </teleport>\n </div>\n </div>\n</template>\n\n<script src=\"./timeline.js\"></script>\n\n<style src=\"./timeline.scss\" lang=\"scss\"> </style>\n","<template>\n <div\n v-if=\"!hideStatus\"\n :style=\"hiddenStyle\"\n class=\"Conversation\"\n :class=\"{ '-expanded' : isExpanded, 'panel' : isExpanded }\"\n >\n <div\n v-if=\"isExpanded\"\n class=\"panel-heading conversation-heading -sticky\"\n >\n <span class=\"title\"> {{ $t('timeline.conversation') }} </span>\n <button\n v-if=\"collapsable\"\n class=\"button-unstyled -link\"\n @click.prevent=\"toggleExpanded\"\n >\n {{ $t('timeline.collapse') }}\n </button>\n <QuickFilterSettings\n v-if=\"!collapsable\"\n :conversation=\"true\"\n class=\"rightside-button\"\n />\n <QuickViewSettings\n v-if=\"!collapsable\"\n :conversation=\"true\"\n class=\"rightside-button\"\n />\n </div>\n <div class=\"conversation-body panel-body\">\n <div\n v-if=\"isTreeView\"\n class=\"thread-body\"\n >\n <div\n v-if=\"shouldShowAllConversationButton\"\n class=\"conversation-dive-to-top-level-box\"\n >\n <i18n-t\n keypath=\"status.show_all_conversation_with_icon\"\n tag=\"button\"\n class=\"button-unstyled -link\"\n scope=\"global\"\n @click.prevent=\"diveToTopLevel\"\n >\n <template #icon>\n <FAIcon\n icon=\"angle-double-left\"\n />\n </template>\n <template #text>\n <span>\n {{ $tc('status.show_all_conversation', otherTopLevelCount, { numStatus: otherTopLevelCount }) }}\n </span>\n </template>\n </i18n-t>\n </div>\n <div\n v-if=\"shouldShowAncestors\"\n class=\"thread-ancestors\"\n >\n <article\n v-for=\"status in ancestorsOf(diveRoot)\"\n :key=\"status.id\"\n class=\"thread-ancestor\"\n :class=\"{'thread-ancestor-has-other-replies': getReplies(status.id).length > 1, '-faded': shouldFadeAncestors}\"\n >\n <status\n ref=\"statusComponent\"\n :inline-expanded=\"collapsable && isExpanded\"\n :statusoid=\"status\"\n :expandable=\"!isExpanded\"\n :show-pinned=\"pinnedStatusIdsObject && pinnedStatusIdsObject[status.id]\"\n :focused=\"focused(status.id)\"\n :in-conversation=\"isExpanded\"\n :highlight=\"getHighlight()\"\n :replies=\"getReplies(status.id)\"\n :in-profile=\"inProfile\"\n :profile-user-id=\"profileUserId\"\n class=\"conversation-status status-fadein panel-body\"\n\n :simple-tree=\"treeViewIsSimple\"\n :toggle-thread-display=\"toggleThreadDisplay\"\n :thread-display-status=\"threadDisplayStatus\"\n :show-thread-recursively=\"showThreadRecursively\"\n :total-reply-count=\"totalReplyCount\"\n :total-reply-depth=\"totalReplyDepth\"\n :show-other-replies-as-button=\"showOtherRepliesButtonInsideStatus\"\n :dive=\"() => diveIntoStatus(status.id)\"\n\n :controlled-showing-tall=\"statusContentProperties[status.id].showingTall\"\n :controlled-expanding-subject=\"statusContentProperties[status.id].expandingSubject\"\n :controlled-showing-long-subject=\"statusContentProperties[status.id].showingLongSubject\"\n :controlled-replying=\"statusContentProperties[status.id].replying\"\n :controlled-media-playing=\"statusContentProperties[status.id].mediaPlaying\"\n :controlled-toggle-showing-tall=\"() => toggleStatusContentProperty(status.id, 'showingTall')\"\n :controlled-toggle-expanding-subject=\"() => toggleStatusContentProperty(status.id, 'expandingSubject')\"\n :controlled-toggle-showing-long-subject=\"() => toggleStatusContentProperty(status.id, 'showingLongSubject')\"\n :controlled-toggle-replying=\"() => toggleStatusContentProperty(status.id, 'replying')\"\n :controlled-set-media-playing=\"(newVal) => toggleStatusContentProperty(status.id, 'mediaPlaying', newVal)\"\n\n @goto=\"setHighlight\"\n @toggleExpanded=\"toggleExpanded\"\n />\n <div\n v-if=\"showOtherRepliesButtonBelowStatus && getReplies(status.id).length > 1\"\n class=\"thread-ancestor-dive-box\"\n >\n <div\n class=\"thread-ancestor-dive-box-inner\"\n >\n <i18n-t\n tag=\"button\"\n scope=\"global\"\n keypath=\"status.ancestor_follow_with_icon\"\n class=\"button-unstyled -link thread-tree-show-replies-button\"\n @click.prevent=\"diveIntoStatus(status.id)\"\n >\n <template #icon>\n <FAIcon\n icon=\"angle-double-right\"\n />\n </template>\n <template #text>\n <span>\n {{ $tc('status.ancestor_follow', getReplies(status.id).length - 1, { numReplies: getReplies(status.id).length - 1 }) }}\n </span>\n </template>\n </i18n-t>\n </div>\n </div>\n </article>\n </div>\n <thread-tree\n v-for=\"status in showingTopLevel\"\n :key=\"status.id\"\n ref=\"statusComponent\"\n :depth=\"0\"\n\n :status=\"status\"\n :in-profile=\"inProfile\"\n :conversation=\"conversation\"\n :collapsable=\"collapsable\"\n :is-expanded=\"isExpanded\"\n :pinned-status-ids-object=\"pinnedStatusIdsObject\"\n :profile-user-id=\"profileUserId\"\n\n :focused=\"focused\"\n :get-replies=\"getReplies\"\n :highlight=\"maybeHighlight\"\n :set-highlight=\"setHighlight\"\n :toggle-expanded=\"toggleExpanded\"\n\n :simple=\"treeViewIsSimple\"\n :toggle-thread-display=\"toggleThreadDisplay\"\n :thread-display-status=\"threadDisplayStatus\"\n :show-thread-recursively=\"showThreadRecursively\"\n :total-reply-count=\"totalReplyCount\"\n :total-reply-depth=\"totalReplyDepth\"\n :status-content-properties=\"statusContentProperties\"\n :set-status-content-property=\"setStatusContentProperty\"\n :toggle-status-content-property=\"toggleStatusContentProperty\"\n :dive=\"canDive ? diveIntoStatus : undefined\"\n />\n </div>\n <div\n v-if=\"isLinearView\"\n class=\"thread-body\"\n >\n <article>\n <status\n v-for=\"status in conversation\"\n :key=\"status.id\"\n ref=\"statusComponent\"\n :inline-expanded=\"collapsable && isExpanded\"\n :statusoid=\"status\"\n :expandable=\"!isExpanded\"\n :show-pinned=\"pinnedStatusIdsObject && pinnedStatusIdsObject[status.id]\"\n :focused=\"focused(status.id)\"\n :in-conversation=\"isExpanded\"\n :highlight=\"getHighlight()\"\n :replies=\"getReplies(status.id)\"\n :in-profile=\"inProfile\"\n :profile-user-id=\"profileUserId\"\n class=\"conversation-status status-fadein panel-body\"\n\n :toggle-thread-display=\"toggleThreadDisplay\"\n :thread-display-status=\"threadDisplayStatus\"\n :show-thread-recursively=\"showThreadRecursively\"\n :total-reply-count=\"totalReplyCount\"\n :total-reply-depth=\"totalReplyDepth\"\n :status-content-properties=\"statusContentProperties\"\n :set-status-content-property=\"setStatusContentProperty\"\n :toggle-status-content-property=\"toggleStatusContentProperty\"\n\n @goto=\"setHighlight\"\n @toggleExpanded=\"toggleExpanded\"\n />\n </article>\n </div>\n </div>\n </div>\n <div\n v-else\n :style=\"hiddenStyle\"\n />\n</template>\n\n<script src=\"./conversation.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.Conversation {\n z-index: 1;\n\n .conversation-dive-to-top-level-box {\n padding: var(--status-margin, $status-margin);\n border-bottom: 1px solid var(--border, $fallback--border);\n border-radius: 0;\n\n /* Make the button stretch along the whole row */\n display: flex;\n align-items: stretch;\n flex-direction: column;\n }\n\n .thread-ancestors {\n margin-left: var(--status-margin, $status-margin);\n border-left: 2px solid var(--border, $fallback--border);\n }\n\n .thread-ancestor.-faded .StatusContent {\n --link: var(--faintLink);\n --text: var(--faint);\n\n color: var(--text);\n }\n\n .thread-ancestor-dive-box {\n padding-left: var(--status-margin, $status-margin);\n border-bottom: 1px solid var(--border, $fallback--border);\n border-radius: 0;\n\n /* Make the button stretch along the whole row */\n &,\n &-inner {\n display: flex;\n align-items: stretch;\n flex-direction: column;\n }\n }\n\n .thread-ancestor-dive-box-inner {\n padding: var(--status-margin, $status-margin);\n }\n\n .conversation-status {\n border-bottom: 1px solid var(--border, $fallback--border);\n border-radius: 0;\n }\n\n .thread-ancestor-has-other-replies .conversation-status,\n &:last-child .conversation-status,\n .thread-ancestor:last-child .conversation-status,\n .thread-ancestor:last-child .thread-ancestor-dive-box,\n &.-expanded .thread-tree .conversation-status {\n border-bottom: none;\n }\n\n .thread-ancestors + .thread-tree > .conversation-status {\n border-top: 1px solid var(--border, $fallback--border);\n }\n\n /* expanded conversation in timeline */\n &.status-fadein.-expanded .thread-body {\n border-left: 4px solid $fallback--cRed;\n border-left-color: var(--cRed, $fallback--cRed);\n border-radius: 0 0 $fallback--panelRadius $fallback--panelRadius;\n border-radius: 0 0 var(--panelRadius, $fallback--panelRadius) var(--panelRadius, $fallback--panelRadius);\n border-bottom: 1px solid var(--border, $fallback--border);\n }\n\n &.-expanded.status-fadein {\n margin: calc(var(--status-margin, $status-margin) / 2);\n }\n}\n</style>\n","<template>\n <article class=\"thread-tree\">\n <status\n :key=\"status.id\"\n ref=\"statusComponent\"\n :inline-expanded=\"collapsable && isExpanded\"\n :statusoid=\"status\"\n :expandable=\"!isExpanded\"\n :show-pinned=\"pinnedStatusIdsObject && pinnedStatusIdsObject[status.id]\"\n :focused=\"focused(status.id)\"\n :in-conversation=\"isExpanded\"\n :highlight=\"highlight\"\n :replies=\"getReplies(status.id)\"\n :in-profile=\"inProfile\"\n :profile-user-id=\"profileUserId\"\n class=\"conversation-status conversation-status-treeview status-fadein panel-body\"\n\n :simple-tree=\"simple\"\n :controlled-thread-display-status=\"threadDisplayStatus[status.id]\"\n :controlled-toggle-thread-display=\"() => toggleThreadDisplay(status.id)\"\n\n :controlled-showing-tall=\"currentProp.showingTall\"\n :controlled-expanding-subject=\"currentProp.expandingSubject\"\n :controlled-showing-long-subject=\"currentProp.showingLongSubject\"\n :controlled-replying=\"currentProp.replying\"\n :controlled-media-playing=\"currentProp.mediaPlaying\"\n :controlled-toggle-showing-tall=\"() => toggleCurrentProp('showingTall')\"\n :controlled-toggle-expanding-subject=\"() => toggleCurrentProp('expandingSubject')\"\n :controlled-toggle-showing-long-subject=\"() => toggleCurrentProp('showingLongSubject')\"\n :controlled-toggle-replying=\"() => toggleCurrentProp('replying')\"\n :controlled-set-media-playing=\"(newVal) => setCurrentProp('mediaPlaying', newVal)\"\n :dive=\"dive ? () => dive(status.id) : undefined\"\n\n @goto=\"setHighlight\"\n @toggleExpanded=\"toggleExpanded\"\n />\n <div\n v-if=\"currentReplies.length && threadShowing\"\n class=\"thread-tree-replies\"\n >\n <thread-tree\n v-for=\"replyStatus in currentReplies\"\n :key=\"replyStatus.id\"\n ref=\"childComponent\"\n :depth=\"depth + 1\"\n :status=\"replyStatus\"\n\n :in-profile=\"inProfile\"\n :conversation=\"conversation\"\n :collapsable=\"collapsable\"\n :is-expanded=\"isExpanded\"\n :pinned-status-ids-object=\"pinnedStatusIdsObject\"\n :profile-user-id=\"profileUserId\"\n\n :focused=\"focused\"\n :get-replies=\"getReplies\"\n :highlight=\"highlight\"\n :set-highlight=\"setHighlight\"\n :toggle-expanded=\"toggleExpanded\"\n\n :simple=\"simple\"\n :toggle-thread-display=\"toggleThreadDisplay\"\n :thread-display-status=\"threadDisplayStatus\"\n :show-thread-recursively=\"showThreadRecursively\"\n :total-reply-count=\"totalReplyCount\"\n :total-reply-depth=\"totalReplyDepth\"\n :status-content-properties=\"statusContentProperties\"\n :set-status-content-property=\"setStatusContentProperty\"\n :toggle-status-content-property=\"toggleStatusContentProperty\"\n :dive=\"dive\"\n />\n </div>\n <div\n v-if=\"currentReplies.length && !threadShowing\"\n class=\"thread-tree-replies thread-tree-replies-hidden\"\n >\n <i18n-t\n v-if=\"simple\"\n scope=\"global\"\n tag=\"button\"\n keypath=\"status.thread_follow_with_icon\"\n class=\"button-unstyled -link thread-tree-show-replies-button\"\n @click.prevent=\"dive(status.id)\"\n >\n <template #icon>\n <FAIcon\n icon=\"angle-double-right\"\n />\n </template>\n <template #text>\n <span>\n {{ $tc('status.thread_follow', totalReplyCount[status.id], { numStatus: totalReplyCount[status.id] }) }}\n </span>\n </template>\n </i18n-t>\n <i18n-t\n v-else\n scope=\"global\"\n tag=\"button\"\n keypath=\"status.thread_show_full_with_icon\"\n class=\"button-unstyled -link thread-tree-show-replies-button\"\n @click.prevent=\"showThreadRecursively(status.id)\"\n >\n <template #icon>\n <FAIcon\n icon=\"angle-double-down\"\n />\n </template>\n <template #text>\n <span>\n {{ $tc('status.thread_show_full', totalReplyCount[status.id], { numStatus: totalReplyCount[status.id], depth: totalReplyDepth[status.id] }) }}\n </span>\n </template>\n </i18n-t>\n </div>\n </article>\n</template>\n\n<script src=\"./thread_tree.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.thread-tree-replies {\n margin-left: var(--status-margin, $status-margin);\n border-left: 2px solid var(--border, $fallback--border);\n}\n\n.thread-tree-replies-hidden {\n padding: var(--status-margin, $status-margin);\n\n /* Make the button stretch along the whole row */\n display: flex;\n align-items: stretch;\n flex-direction: column;\n}\n</style>\n","import Status from '../status/status.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faAngleDoubleDown,\n faAngleDoubleRight\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faAngleDoubleDown,\n faAngleDoubleRight\n)\n\nconst ThreadTree = {\n components: {\n Status\n },\n name: 'ThreadTree',\n props: {\n depth: Number,\n status: Object,\n inProfile: Boolean,\n conversation: Array,\n collapsable: Boolean,\n isExpanded: Boolean,\n pinnedStatusIdsObject: Object,\n profileUserId: String,\n\n focused: Function,\n highlight: String,\n getReplies: Function,\n setHighlight: Function,\n toggleExpanded: Function,\n\n simple: Boolean,\n // to control display of the whole thread forest\n toggleThreadDisplay: Function,\n threadDisplayStatus: Object,\n showThreadRecursively: Function,\n totalReplyCount: Object,\n totalReplyDepth: Object,\n statusContentProperties: Object,\n setStatusContentProperty: Function,\n toggleStatusContentProperty: Function,\n dive: Function\n },\n computed: {\n suspendable () {\n const selfSuspendable = this.$refs.statusComponent ? this.$refs.statusComponent.suspendable : true\n if (this.$refs.childComponent) {\n return selfSuspendable && this.$refs.childComponent.every(s => s.suspendable)\n }\n return selfSuspendable\n },\n reverseLookupTable () {\n return this.conversation.reduce((table, status, index) => {\n table[status.id] = index\n return table\n }, {})\n },\n currentReplies () {\n return this.getReplies(this.status.id).map(({ id }) => this.statusById(id))\n },\n threadShowing () {\n return this.threadDisplayStatus[this.status.id] === 'showing'\n },\n currentProp () {\n return this.statusContentProperties[this.status.id]\n }\n },\n methods: {\n statusById (id) {\n return this.conversation[this.reverseLookupTable[id]]\n },\n collapseThread () {\n },\n showThread () {\n },\n showAllSubthreads () {\n },\n toggleCurrentProp (name) {\n this.toggleStatusContentProperty(this.status.id, name)\n },\n setCurrentProp (name, newVal) {\n this.setStatusContentProperty(this.status.id, name)\n }\n }\n}\n\nexport default ThreadTree\n","import { render } from \"./thread_tree.vue?vue&type=template&id=061df1d9\"\nimport script from \"./thread_tree.js?vue&type=script&lang=js\"\nexport * from \"./thread_tree.js?vue&type=script&lang=js\"\n\nimport \"./thread_tree.vue?vue&type=style&index=0&id=061df1d9&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Popover\n trigger=\"click\"\n class=\"QuickFilterSettings\"\n :bound-to=\"{ x: 'container' }\"\n :trigger-attrs=\"{ title: $t('timeline.quick_filter_settings') }\"\n >\n <template #content>\n <div\n class=\"dropdown-menu\"\n role=\"menu\"\n >\n <div\n v-if=\"loggedIn\"\n role=\"group\"\n >\n <button\n v-if=\"!conversation\"\n class=\"button-default dropdown-item\"\n :aria-checked=\"replyVisibilityAll\"\n role=\"menuitemradio\"\n @click=\"replyVisibilityAll = true\"\n >\n <span\n class=\"menu-checkbox -radio\"\n :class=\"{ 'menu-checkbox-checked': replyVisibilityAll }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.reply_visibility_all') }}\n </button>\n <button\n v-if=\"!conversation\"\n class=\"button-default dropdown-item\"\n :aria-checked=\"replyVisibilityFollowing\"\n role=\"menuitemradio\"\n @click=\"replyVisibilityFollowing = true\"\n >\n <span\n class=\"menu-checkbox -radio\"\n :class=\"{ 'menu-checkbox-checked': replyVisibilityFollowing }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.reply_visibility_following_short') }}\n </button>\n <button\n v-if=\"!conversation\"\n class=\"button-default dropdown-item\"\n :aria-checked=\"replyVisibilitySelf\"\n role=\"menuitemradio\"\n @click=\"replyVisibilitySelf = true\"\n >\n <span\n class=\"menu-checkbox -radio\"\n :class=\"{ 'menu-checkbox-checked': replyVisibilitySelf }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.reply_visibility_self_short') }}\n </button>\n <div\n v-if=\"!conversation\"\n role=\"separator\"\n class=\"dropdown-divider\"\n />\n </div>\n <button\n class=\"button-default dropdown-item\"\n role=\"menuitemcheckbox\"\n :aria-checked=\"muteBotStatuses\"\n @click=\"muteBotStatuses = !muteBotStatuses\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': muteBotStatuses }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.mute_bot_posts') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n role=\"menuitemcheckbox\"\n :aria-checked=\"hideMedia\"\n @click=\"hideMedia = !hideMedia\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hideMedia }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.hide_media_previews') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n role=\"menuitemcheckbox\"\n :aria-checked=\"hideMutedPosts\"\n @click=\"hideMutedPosts = !hideMutedPosts\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hideMutedPosts }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.hide_all_muted_posts') }}\n </button>\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n role=\"menuitem\"\n @click=\"openTab('filtering')\"\n >\n <FAIcon icon=\"font\" />{{ $t('settings.word_filter_and_more') }}\n </button>\n </div>\n </template>\n <template #trigger>\n <FAIcon icon=\"filter\" />\n </template>\n </Popover>\n</template>\n\n<script src=\"./quick_filter_settings.js\"></script>\n","import Popover from '../popover/popover.vue'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faFilter, faFont, faWrench } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faFilter,\n faFont,\n faWrench\n)\n\nconst QuickFilterSettings = {\n props: {\n conversation: Boolean\n },\n components: {\n Popover\n },\n methods: {\n setReplyVisibility (visibility) {\n this.$store.dispatch('setOption', { name: 'replyVisibility', value: visibility })\n this.$store.dispatch('queueFlushAll')\n },\n openTab (tab) {\n this.$store.dispatch('openSettingsModalTab', tab)\n }\n },\n computed: {\n ...mapGetters(['mergedConfig']),\n loggedIn () {\n return !!this.$store.state.users.currentUser\n },\n replyVisibilitySelf: {\n get () { return this.mergedConfig.replyVisibility === 'self' },\n set () { this.setReplyVisibility('self') }\n },\n replyVisibilityFollowing: {\n get () { return this.mergedConfig.replyVisibility === 'following' },\n set () { this.setReplyVisibility('following') }\n },\n replyVisibilityAll: {\n get () { return this.mergedConfig.replyVisibility === 'all' },\n set () { this.setReplyVisibility('all') }\n },\n hideMedia: {\n get () { return this.mergedConfig.hideAttachments || this.mergedConfig.hideAttachmentsInConv },\n set () {\n const value = !this.hideMedia\n this.$store.dispatch('setOption', { name: 'hideAttachments', value })\n this.$store.dispatch('setOption', { name: 'hideAttachmentsInConv', value })\n }\n },\n hideMutedPosts: {\n get () { return this.mergedConfig.hideFilteredStatuses },\n set () {\n const value = !this.hideMutedPosts\n this.$store.dispatch('setOption', { name: 'hideFilteredStatuses', value })\n }\n },\n muteBotStatuses: {\n get () { return this.mergedConfig.muteBotStatuses },\n set () {\n const value = !this.muteBotStatuses\n this.$store.dispatch('setOption', { name: 'muteBotStatuses', value })\n }\n }\n }\n}\n\nexport default QuickFilterSettings\n","import { render } from \"./quick_filter_settings.vue?vue&type=template&id=43207d13\"\nimport script from \"./quick_filter_settings.js?vue&type=script&lang=js\"\nexport * from \"./quick_filter_settings.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Popover\n trigger=\"click\"\n class=\"QuickViewSettings\"\n :bound-to=\"{ x: 'container' }\"\n :trigger-attrs=\"{ title: $t('timeline.quick_view_settings') }\"\n >\n <template #content>\n <div\n class=\"dropdown-menu\"\n role=\"menu\"\n >\n <div role=\"group\">\n <button\n class=\"button-default dropdown-item\"\n :aria-checked=\"conversationDisplay === 'tree'\"\n role=\"menuitemradio\"\n @click=\"conversationDisplay = 'tree'\"\n >\n <span\n class=\"menu-checkbox -radio\"\n :aria-hidden=\"true\"\n :class=\"{ 'menu-checkbox-checked': conversationDisplay === 'tree' }\"\n /><FAIcon\n icon=\"folder-tree\"\n :aria-hidden=\"true\"\n /> {{ $t('settings.conversation_display_tree_quick') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n :aria-checked=\"conversationDisplay === 'linear'\"\n role=\"menuitemradio\"\n @click=\"conversationDisplay = 'linear'\"\n >\n <span\n class=\"menu-checkbox -radio\"\n :class=\"{ 'menu-checkbox-checked': conversationDisplay === 'linear' }\"\n :aria-hidden=\"true\"\n /><FAIcon\n icon=\"list\"\n :aria-hidden=\"true\"\n /> {{ $t('settings.conversation_display_linear_quick') }}\n </button>\n </div>\n <div\n role=\"separator\"\n class=\"dropdown-divider\"\n />\n <button\n class=\"button-default dropdown-item\"\n role=\"menuitemcheckbox\"\n :aria-checked=\"showUserAvatars\"\n @click=\"showUserAvatars = !showUserAvatars\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': showUserAvatars }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.mention_link_show_avatar_quick') }}\n </button>\n <button\n v-if=\"!conversation\"\n class=\"button-default dropdown-item\"\n role=\"menuitemcheckbox\"\n :aria-checked=\"autoUpdate\"\n @click=\"autoUpdate = !autoUpdate\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': autoUpdate }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.auto_update') }}\n </button>\n <button\n v-if=\"!conversation\"\n class=\"button-default dropdown-item\"\n role=\"menuitemcheckbox\"\n :aria-checked=\"collapseWithSubjects\"\n @click=\"collapseWithSubjects = !collapseWithSubjects\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': collapseWithSubjects }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.collapse_subject') }}\n </button>\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n role=\"menuitem\"\n @click=\"openTab('general')\"\n >\n <FAIcon icon=\"wrench\" />{{ $t('settings.more_settings') }}\n </button>\n </div>\n </template>\n <template #trigger>\n <FAIcon icon=\"bars\" />\n </template>\n </Popover>\n</template>\n\n<script src=\"./quick_view_settings.js\"></script>\n","import Popover from '../popover/popover.vue'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faList, faFolderTree, faBars, faWrench } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faList,\n faFolderTree,\n faBars,\n faWrench\n)\n\nconst QuickViewSettings = {\n props: {\n conversation: Boolean\n },\n components: {\n Popover\n },\n methods: {\n setConversationDisplay (visibility) {\n this.$store.dispatch('setOption', { name: 'conversationDisplay', value: visibility })\n },\n openTab (tab) {\n this.$store.dispatch('openSettingsModalTab', tab)\n }\n },\n computed: {\n ...mapGetters(['mergedConfig']),\n loggedIn () {\n return !!this.$store.state.users.currentUser\n },\n conversationDisplay: {\n get () { return this.mergedConfig.conversationDisplay },\n set (newVal) { this.setConversationDisplay(newVal) }\n },\n autoUpdate: {\n get () { return this.mergedConfig.streaming },\n set () {\n const value = !this.autoUpdate\n this.$store.dispatch('setOption', { name: 'streaming', value })\n }\n },\n collapseWithSubjects: {\n get () { return this.mergedConfig.collapseMessageWithSubject },\n set () {\n const value = !this.collapseWithSubjects\n this.$store.dispatch('setOption', { name: 'collapseMessageWithSubject', value })\n }\n },\n showUserAvatars: {\n get () { return this.mergedConfig.mentionLinkShowAvatar },\n set () {\n const value = !this.showUserAvatars\n console.log(value)\n this.$store.dispatch('setOption', { name: 'mentionLinkShowAvatar', value })\n }\n },\n muteBotStatuses: {\n get () { return this.mergedConfig.muteBotStatuses },\n set () {\n const value = !this.muteBotStatuses\n this.$store.dispatch('setOption', { name: 'muteBotStatuses', value })\n }\n }\n }\n}\n\nexport default QuickViewSettings\n","import { render } from \"./quick_view_settings.vue?vue&type=template&id=2a929bb0\"\nimport script from \"./quick_view_settings.js?vue&type=script&lang=js\"\nexport * from \"./quick_view_settings.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { reduce, filter, findIndex, clone, get } from 'lodash'\nimport Status from '../status/status.vue'\nimport ThreadTree from '../thread_tree/thread_tree.vue'\nimport { WSConnectionStatus } from '../../services/api/api.service.js'\nimport { mapGetters, mapState } from 'vuex'\nimport QuickFilterSettings from '../quick_filter_settings/quick_filter_settings.vue'\nimport QuickViewSettings from '../quick_view_settings/quick_view_settings.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faAngleDoubleDown,\n faAngleDoubleLeft,\n faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faAngleDoubleDown,\n faAngleDoubleLeft,\n faChevronLeft\n)\n\nconst sortById = (a, b) => {\n const idA = a.type === 'retweet' ? a.retweeted_status.id : a.id\n const idB = b.type === 'retweet' ? b.retweeted_status.id : b.id\n const seqA = Number(idA)\n const seqB = Number(idB)\n const isSeqA = !Number.isNaN(seqA)\n const isSeqB = !Number.isNaN(seqB)\n if (isSeqA && isSeqB) {\n return seqA < seqB ? -1 : 1\n } else if (isSeqA && !isSeqB) {\n return -1\n } else if (!isSeqA && isSeqB) {\n return 1\n } else {\n return idA < idB ? -1 : 1\n }\n}\n\nconst sortAndFilterConversation = (conversation, statusoid) => {\n if (statusoid.type === 'retweet') {\n conversation = filter(\n conversation,\n (status) => (status.type === 'retweet' || status.id !== statusoid.retweeted_status.id)\n )\n } else {\n conversation = filter(conversation, (status) => status.type !== 'retweet')\n }\n return conversation.filter(_ => _).sort(sortById)\n}\n\nconst conversation = {\n data () {\n return {\n highlight: null,\n expanded: false,\n threadDisplayStatusObject: {}, // id => 'showing' | 'hidden'\n statusContentPropertiesObject: {},\n inlineDivePosition: null\n }\n },\n props: [\n 'statusId',\n 'collapsable',\n 'isPage',\n 'pinnedStatusIdsObject',\n 'inProfile',\n 'profileUserId',\n 'virtualHidden'\n ],\n created () {\n if (this.isPage) {\n this.fetchConversation()\n }\n },\n computed: {\n maxDepthToShowByDefault () {\n // maxDepthInThread = max number of depths that is *visible*\n // since our depth starts with 0 and \"showing\" means \"showing children\"\n // there is a -2 here\n const maxDepth = this.$store.getters.mergedConfig.maxDepthInThread - 2\n return maxDepth >= 1 ? maxDepth : 1\n },\n streamingEnabled () {\n return this.mergedConfig.useStreamingApi && this.mastoUserSocketStatus === WSConnectionStatus.JOINED\n },\n displayStyle () {\n return this.$store.getters.mergedConfig.conversationDisplay\n },\n isTreeView () {\n return !this.isLinearView\n },\n treeViewIsSimple () {\n return !this.$store.getters.mergedConfig.conversationTreeAdvanced\n },\n isLinearView () {\n return this.displayStyle === 'linear'\n },\n shouldFadeAncestors () {\n return this.$store.getters.mergedConfig.conversationTreeFadeAncestors\n },\n otherRepliesButtonPosition () {\n return this.$store.getters.mergedConfig.conversationOtherRepliesButton\n },\n showOtherRepliesButtonBelowStatus () {\n return this.otherRepliesButtonPosition === 'below'\n },\n showOtherRepliesButtonInsideStatus () {\n return this.otherRepliesButtonPosition === 'inside'\n },\n suspendable () {\n if (this.isTreeView) {\n return Object.entries(this.statusContentProperties)\n .every(([k, prop]) => !prop.replying && prop.mediaPlaying.length === 0)\n }\n if (this.$refs.statusComponent && this.$refs.statusComponent[0]) {\n return this.$refs.statusComponent.every(s => s.suspendable)\n } else {\n return true\n }\n },\n hideStatus () {\n return this.virtualHidden && this.suspendable\n },\n status () {\n return this.$store.state.statuses.allStatusesObject[this.statusId]\n },\n originalStatusId () {\n if (this.status.retweeted_status) {\n return this.status.retweeted_status.id\n } else {\n return this.statusId\n }\n },\n conversationId () {\n return this.getConversationId(this.statusId)\n },\n conversation () {\n if (!this.status) {\n return []\n }\n\n if (!this.isExpanded) {\n return [this.status]\n }\n\n const conversation = clone(this.$store.state.statuses.conversationsObject[this.conversationId])\n const statusIndex = findIndex(conversation, { id: this.originalStatusId })\n if (statusIndex !== -1) {\n conversation[statusIndex] = this.status\n }\n\n return sortAndFilterConversation(conversation, this.status)\n },\n statusMap () {\n return this.conversation.reduce((res, s) => {\n res[s.id] = s\n return res\n }, {})\n },\n threadTree () {\n const reverseLookupTable = this.conversation.reduce((table, status, index) => {\n table[status.id] = index\n return table\n }, {})\n\n const threads = this.conversation.reduce((a, cur) => {\n const id = cur.id\n a.forest[id] = this.getReplies(id)\n .map(s => s.id)\n\n return a\n }, {\n forest: {}\n })\n\n const walk = (forest, topLevel, depth = 0, processed = {}) => topLevel.map(id => {\n if (processed[id]) {\n return []\n }\n\n processed[id] = true\n return [{\n status: this.conversation[reverseLookupTable[id]],\n id,\n depth\n }, walk(forest, forest[id], depth + 1, processed)].reduce((a, b) => a.concat(b), [])\n }).reduce((a, b) => a.concat(b), [])\n\n const linearized = walk(threads.forest, this.topLevel.map(k => k.id))\n\n return linearized\n },\n replyIds () {\n return this.conversation.map(k => k.id)\n .reduce((res, id) => {\n res[id] = (this.replies[id] || []).map(k => k.id)\n return res\n }, {})\n },\n totalReplyCount () {\n const sizes = {}\n const subTreeSizeFor = (id) => {\n if (sizes[id]) {\n return sizes[id]\n }\n sizes[id] = 1 + this.replyIds[id].map(cid => subTreeSizeFor(cid)).reduce((a, b) => a + b, 0)\n return sizes[id]\n }\n this.conversation.map(k => k.id).map(subTreeSizeFor)\n return Object.keys(sizes).reduce((res, id) => {\n res[id] = sizes[id] - 1 // exclude itself\n return res\n }, {})\n },\n totalReplyDepth () {\n const depths = {}\n const subTreeDepthFor = (id) => {\n if (depths[id]) {\n return depths[id]\n }\n depths[id] = 1 + this.replyIds[id].map(cid => subTreeDepthFor(cid)).reduce((a, b) => a > b ? a : b, 0)\n return depths[id]\n }\n this.conversation.map(k => k.id).map(subTreeDepthFor)\n return Object.keys(depths).reduce((res, id) => {\n res[id] = depths[id] - 1 // exclude itself\n return res\n }, {})\n },\n depths () {\n return this.threadTree.reduce((a, k) => {\n a[k.id] = k.depth\n return a\n }, {})\n },\n topLevel () {\n const topLevel = this.conversation.reduce((tl, cur) =>\n tl.filter(k => this.getReplies(cur.id).map(v => v.id).indexOf(k.id) === -1), this.conversation)\n return topLevel\n },\n otherTopLevelCount () {\n return this.topLevel.length - 1\n },\n showingTopLevel () {\n if (this.canDive && this.diveRoot) {\n return [this.statusMap[this.diveRoot]]\n }\n return this.topLevel\n },\n diveRoot () {\n const statusId = this.inlineDivePosition || this.statusId\n const isTopLevel = !this.parentOf(statusId)\n return isTopLevel ? null : statusId\n },\n diveDepth () {\n return this.canDive && this.diveRoot ? this.depths[this.diveRoot] : 0\n },\n diveMode () {\n return this.canDive && !!this.diveRoot\n },\n shouldShowAllConversationButton () {\n // The \"show all conversation\" button tells the user that there exist\n // other toplevel statuses, so do not show it if there is only a single root\n return this.isTreeView && this.isExpanded && this.diveMode && this.topLevel.length > 1\n },\n shouldShowAncestors () {\n return this.isTreeView && this.isExpanded && this.ancestorsOf(this.diveRoot).length\n },\n replies () {\n let i = 1\n // eslint-disable-next-line camelcase\n return reduce(this.conversation, (result, { id, in_reply_to_status_id }) => {\n /* eslint-disable camelcase */\n const irid = in_reply_to_status_id\n /* eslint-enable camelcase */\n if (irid) {\n result[irid] = result[irid] || []\n result[irid].push({\n name: `#${i}`,\n id\n })\n }\n i++\n return result\n }, {})\n },\n isExpanded () {\n return !!(this.expanded || this.isPage)\n },\n hiddenStyle () {\n const height = (this.status && this.status.virtualHeight) || '120px'\n return this.virtualHidden ? { height } : {}\n },\n threadDisplayStatus () {\n return this.conversation.reduce((a, k) => {\n const id = k.id\n const depth = this.depths[id]\n const status = (() => {\n if (this.threadDisplayStatusObject[id]) {\n return this.threadDisplayStatusObject[id]\n }\n if ((depth - this.diveDepth) <= this.maxDepthToShowByDefault) {\n return 'showing'\n } else {\n return 'hidden'\n }\n })()\n\n a[id] = status\n return a\n }, {})\n },\n statusContentProperties () {\n return this.conversation.reduce((a, k) => {\n const id = k.id\n const props = (() => {\n const def = {\n showingTall: false,\n expandingSubject: false,\n showingLongSubject: false,\n isReplying: false,\n mediaPlaying: []\n }\n\n if (this.statusContentPropertiesObject[id]) {\n return {\n ...def,\n ...this.statusContentPropertiesObject[id]\n }\n }\n return def\n })()\n\n a[id] = props\n return a\n }, {})\n },\n canDive () {\n return this.isTreeView && this.isExpanded\n },\n focused () {\n return (id) => {\n return (this.isExpanded) && id === this.highlight\n }\n },\n maybeHighlight () {\n return this.isExpanded ? this.highlight : null\n },\n ...mapGetters(['mergedConfig']),\n ...mapState({\n mastoUserSocketStatus: state => state.api.mastoUserSocketStatus\n })\n },\n components: {\n Status,\n ThreadTree,\n QuickFilterSettings,\n QuickViewSettings\n },\n watch: {\n statusId (newVal, oldVal) {\n const newConversationId = this.getConversationId(newVal)\n const oldConversationId = this.getConversationId(oldVal)\n if (newConversationId && oldConversationId && newConversationId === oldConversationId) {\n this.setHighlight(this.originalStatusId)\n } else {\n this.fetchConversation()\n }\n },\n expanded (value) {\n if (value) {\n this.fetchConversation()\n } else {\n this.resetDisplayState()\n }\n },\n virtualHidden (value) {\n this.$store.dispatch(\n 'setVirtualHeight',\n { statusId: this.statusId, height: `${this.$el.clientHeight}px` }\n )\n }\n },\n methods: {\n fetchConversation () {\n if (this.status) {\n this.$store.state.api.backendInteractor.fetchConversation({ id: this.statusId })\n .then(({ ancestors, descendants }) => {\n this.$store.dispatch('addNewStatuses', { statuses: ancestors })\n this.$store.dispatch('addNewStatuses', { statuses: descendants })\n this.setHighlight(this.originalStatusId)\n })\n } else {\n this.$store.state.api.backendInteractor.fetchStatus({ id: this.statusId })\n .then((status) => {\n this.$store.dispatch('addNewStatuses', { statuses: [status] })\n this.fetchConversation()\n })\n }\n },\n getReplies (id) {\n return this.replies[id] || []\n },\n getHighlight () {\n return this.isExpanded ? this.highlight : null\n },\n setHighlight (id) {\n if (!id) return\n this.highlight = id\n\n if (!this.streamingEnabled) {\n this.$store.dispatch('fetchStatus', id)\n }\n\n this.$store.dispatch('fetchFavsAndRepeats', id)\n this.$store.dispatch('fetchEmojiReactionsBy', id)\n },\n toggleExpanded () {\n this.expanded = !this.expanded\n },\n getConversationId (statusId) {\n const status = this.$store.state.statuses.allStatusesObject[statusId]\n return get(status, 'retweeted_status.statusnet_conversation_id', get(status, 'statusnet_conversation_id'))\n },\n setThreadDisplay (id, nextStatus) {\n this.threadDisplayStatusObject = {\n ...this.threadDisplayStatusObject,\n [id]: nextStatus\n }\n },\n toggleThreadDisplay (id) {\n const curStatus = this.threadDisplayStatus[id]\n const nextStatus = curStatus === 'showing' ? 'hidden' : 'showing'\n this.setThreadDisplay(id, nextStatus)\n },\n setThreadDisplayRecursively (id, nextStatus) {\n this.setThreadDisplay(id, nextStatus)\n this.getReplies(id).map(k => k.id).map(id => this.setThreadDisplayRecursively(id, nextStatus))\n },\n showThreadRecursively (id) {\n this.setThreadDisplayRecursively(id, 'showing')\n },\n setStatusContentProperty (id, name, value) {\n this.statusContentPropertiesObject = {\n ...this.statusContentPropertiesObject,\n [id]: {\n ...this.statusContentPropertiesObject[id],\n [name]: value\n }\n }\n },\n toggleStatusContentProperty (id, name) {\n this.setStatusContentProperty(id, name, !this.statusContentProperties[id][name])\n },\n leastVisibleAncestor (id) {\n let cur = id\n let parent = this.parentOf(cur)\n while (cur) {\n // if the parent is showing it means cur is visible\n if (this.threadDisplayStatus[parent] === 'showing') {\n return cur\n }\n parent = this.parentOf(parent)\n cur = this.parentOf(cur)\n }\n // nothing found, fall back to toplevel\n return this.topLevel[0] ? this.topLevel[0].id : undefined\n },\n diveIntoStatus (id, preventScroll) {\n this.tryScrollTo(id)\n },\n diveToTopLevel () {\n this.tryScrollTo(this.topLevelAncestorOrSelfId(this.diveRoot) || this.topLevel[0].id)\n },\n // only used when we are not on a page\n undive () {\n this.inlineDivePosition = null\n this.setHighlight(this.statusId)\n },\n tryScrollTo (id) {\n if (!id) {\n return\n }\n if (this.isPage) {\n // set statusId\n this.$router.push({ name: 'conversation', params: { id } })\n } else {\n this.inlineDivePosition = id\n }\n // Because the conversation can be unmounted when out of sight\n // and mounted again when it comes into sight,\n // the `mounted` or `created` function in `status` should not\n // contain scrolling calls, as we do not want the page to jump\n // when we scroll with an expanded conversation.\n //\n // Now the method is to rely solely on the `highlight` watcher\n // in `status` components.\n // In linear views, all statuses are rendered at all times, but\n // in tree views, it is possible that a change in active status\n // removes and adds status components (e.g. an originally child\n // status becomes an ancestor status, and thus they will be\n // different).\n // Here, let the components be rendered first, in order to trigger\n // the `highlight` watcher.\n this.$nextTick(() => {\n this.setHighlight(id)\n })\n },\n goToCurrent () {\n this.tryScrollTo(this.diveRoot || this.topLevel[0].id)\n },\n statusById (id) {\n return this.statusMap[id]\n },\n parentOf (id) {\n const status = this.statusById(id)\n if (!status) {\n return undefined\n }\n const { in_reply_to_status_id: parentId } = status\n if (!this.statusMap[parentId]) {\n return undefined\n }\n return parentId\n },\n parentOrSelf (id) {\n return this.parentOf(id) || id\n },\n // Ancestors of some status, from top to bottom\n ancestorsOf (id) {\n const ancestors = []\n let cur = this.parentOf(id)\n while (cur) {\n ancestors.unshift(this.statusMap[cur])\n cur = this.parentOf(cur)\n }\n return ancestors\n },\n topLevelAncestorOrSelfId (id) {\n let cur = id\n let parent = this.parentOf(id)\n while (parent) {\n cur = this.parentOf(cur)\n parent = this.parentOf(parent)\n }\n return cur\n },\n resetDisplayState () {\n this.undive()\n this.threadDisplayStatusObject = {}\n }\n }\n}\n\nexport default conversation\n","import { render } from \"./conversation.vue?vue&type=template&id=68e3b9cb\"\nimport script from \"./conversation.js?vue&type=script&lang=js\"\nexport * from \"./conversation.js?vue&type=script&lang=js\"\n\nimport \"./conversation.vue?vue&type=style&index=0&id=68e3b9cb&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Popover\n trigger=\"click\"\n class=\"TimelineMenu\"\n :class=\"{ 'open': isOpen }\"\n :bound-to=\"{ x: 'container' }\"\n bound-to-selector=\".Timeline\"\n popover-class=\"timeline-menu-popover popover-default\"\n @show=\"openMenu\"\n @close=\"() => isOpen = false\"\n >\n <template #content>\n <ListsMenuContent\n v-if=\"useListsMenu\"\n :show-pin=\"false\"\n class=\"timelines\"\n />\n <ul v-else>\n <NavigationEntry\n v-for=\"item in timelinesList\"\n :key=\"item.name\"\n :show-pin=\"false\"\n :item=\"item\"\n />\n </ul>\n </template>\n <template #trigger>\n <span class=\"button-unstyled title timeline-menu-title\">\n <span class=\"timeline-title\">{{ timelineName() }}</span>\n <span>\n <FAIcon\n size=\"sm\"\n icon=\"chevron-down\"\n />\n </span>\n <span\n class=\"click-blocker\"\n @click=\"blockOpen\"\n />\n </span>\n </template>\n </Popover>\n</template>\n\n<script src=\"./timeline_menu.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.timeline-menu-popover {\n min-width: 24rem;\n max-width: 100vw;\n margin-top: 0.6rem;\n font-size: 1rem;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n\n ul {\n list-style: none;\n margin: 0;\n padding: 0;\n }\n\n a {\n display: block;\n padding: 0 0.65em;\n height: 3.5em;\n line-height: 3.5em;\n\n &:hover {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: $fallback--link;\n color: var(--selectedMenuText, $fallback--link);\n\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n --icon: var(--selectedMenuIcon, $fallback--icon);\n }\n\n &.router-link-active {\n font-weight: bolder;\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: $fallback--text;\n color: var(--selectedMenuText, $fallback--text);\n\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n --icon: var(--selectedMenuIcon, $fallback--icon);\n\n &:hover {\n text-decoration: underline;\n }\n }\n\n svg {\n margin-right: 0.4em;\n margin-left: -0.2em;\n }\n }\n\n li {\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n padding: 0;\n\n &:last-child a {\n border-bottom-right-radius: $fallback--panelRadius;\n border-bottom-right-radius: var(--panelRadius, $fallback--panelRadius);\n border-bottom-left-radius: $fallback--panelRadius;\n border-bottom-left-radius: var(--panelRadius, $fallback--panelRadius);\n }\n\n &:last-child {\n border: none;\n }\n }\n}\n\n.TimelineMenu {\n margin-right: auto;\n min-width: 0;\n\n .popover-trigger-button {\n vertical-align: bottom;\n }\n\n .panel::after {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n }\n\n .timeline-menu-title {\n margin: 0;\n cursor: pointer;\n user-select: none;\n width: 100%;\n display: flex;\n\n .timeline-menu-name {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n svg {\n margin-left: 0.6em;\n transition: transform 100ms;\n }\n\n .click-blocker {\n cursor: default;\n flex-grow: 1;\n }\n }\n\n &.open .timeline-menu-title svg {\n color: $fallback--text;\n color: var(--panelText, $fallback--text);\n transform: rotate(180deg);\n }\n\n .panel {\n box-shadow: var(--popoverShadow);\n }\n}\n</style>\n","import Popover from '../popover/popover.vue'\nimport NavigationEntry from 'src/components/navigation/navigation_entry.vue'\nimport { mapState } from 'vuex'\nimport { ListsMenuContent } from '../lists_menu/lists_menu_content.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { TIMELINES } from 'src/components/navigation/navigation.js'\nimport { filterNavigation } from 'src/components/navigation/filter.js'\nimport {\n faChevronDown\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(faChevronDown)\n\n// Route -> i18n key mapping, exported and not in the computed\n// because nav panel benefits from the same information.\nexport const timelineNames = () => {\n return {\n friends: 'nav.home_timeline',\n bookmarks: 'nav.bookmarks',\n dms: 'nav.dms',\n 'public-timeline': 'nav.public_tl',\n 'public-external-timeline': 'nav.twkn'\n }\n}\n\nconst TimelineMenu = {\n components: {\n Popover,\n NavigationEntry,\n ListsMenuContent\n },\n data () {\n return {\n isOpen: false\n }\n },\n created () {\n if (timelineNames()[this.$route.name]) {\n this.$store.dispatch('setLastTimeline', this.$route.name)\n }\n },\n computed: {\n useListsMenu () {\n const route = this.$route.name\n return route === 'lists-timeline'\n },\n ...mapState({\n currentUser: state => state.users.currentUser,\n privateMode: state => state.instance.private,\n federating: state => state.instance.federating\n }),\n timelinesList () {\n return filterNavigation(\n Object.entries(TIMELINES).map(([k, v]) => ({ ...v, name: k })),\n {\n hasChats: this.pleromaChatMessagesAvailable,\n isFederating: this.federating,\n isPrivate: this.privateMode,\n currentUser: this.currentUser\n }\n )\n }\n },\n methods: {\n openMenu () {\n // $nextTick is too fast, animation won't play back but\n // instead starts in fully open position. Low values\n // like 1-5 work on fast machines but not on mobile, 25\n // seems like a good compromise that plays without significant\n // added lag.\n setTimeout(() => {\n this.isOpen = true\n }, 25)\n },\n blockOpen (event) {\n // For the blank area inside the button element.\n // Just setting @click.stop=\"\" makes unintuitive behavior when\n // menu is open and clicking on the blank area doesn't close it.\n if (!this.isOpen) {\n event.stopPropagation()\n }\n },\n timelineName () {\n const route = this.$route.name\n if (route === 'tag-timeline') {\n return '#' + this.$route.params.tag\n }\n if (route === 'lists-timeline') {\n return this.$store.getters.findListTitle(this.$route.params.id)\n }\n const i18nkey = timelineNames()[this.$route.name]\n return i18nkey ? this.$t(i18nkey) : route\n }\n }\n}\n\nexport default TimelineMenu\n","import { render } from \"./timeline_menu.vue?vue&type=template&id=b7d0cae0\"\nimport script from \"./timeline_menu.js?vue&type=script&lang=js\"\nexport * from \"./timeline_menu.js?vue&type=script&lang=js\"\n\nimport \"./timeline_menu.vue?vue&type=style&index=0&id=b7d0cae0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Status from '../status/status.vue'\nimport { mapState } from 'vuex'\nimport timelineFetcher from '../../services/timeline_fetcher/timeline_fetcher.service.js'\nimport Conversation from '../conversation/conversation.vue'\nimport TimelineMenu from '../timeline_menu/timeline_menu.vue'\nimport QuickFilterSettings from '../quick_filter_settings/quick_filter_settings.vue'\nimport QuickViewSettings from '../quick_view_settings/quick_view_settings.vue'\nimport { debounce, throttle, keyBy } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch, faCirclePlus, faCog, faMinus, faArrowUp, faCheck } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch,\n faCog,\n faMinus,\n faArrowUp,\n faCirclePlus,\n faCheck\n)\n\nconst Timeline = {\n props: [\n 'timeline',\n 'timelineName',\n 'title',\n 'userId',\n 'listId',\n 'tag',\n 'embedded',\n 'count',\n 'pinnedStatusIds',\n 'inProfile',\n 'footerSlipgate' // reference to an element where we should put our footer\n ],\n data () {\n return {\n showScrollTop: false,\n paused: false,\n unfocused: false,\n bottomedOut: false,\n virtualScrollIndex: 0,\n blockingClicks: false\n }\n },\n components: {\n Status,\n Conversation,\n TimelineMenu,\n QuickFilterSettings,\n QuickViewSettings\n },\n computed: {\n filteredVisibleStatuses () {\n return this.timeline.visibleStatuses.filter(status => this.timelineName !== 'user' || (status.id >= this.timeline.minId && status.id <= this.timeline.maxId))\n },\n filteredPinnedStatusIds () {\n return (this.pinnedStatusIds || []).filter(statusId => this.timeline.statusesObject[statusId])\n },\n newStatusCount () {\n return this.timeline.newStatusCount\n },\n showLoadButton () {\n return this.timeline.newStatusCount > 0 || this.timeline.flushMarker !== 0\n },\n loadButtonString () {\n if (this.timeline.flushMarker !== 0) {\n return this.$t('timeline.reload')\n } else {\n return `${this.$t('timeline.show_new')} (${this.newStatusCount})`\n }\n },\n mobileLoadButtonString () {\n if (this.timeline.flushMarker !== 0) {\n return '+'\n } else {\n return this.newStatusCount > 99 ? '∞' : this.newStatusCount\n }\n },\n classes () {\n let rootClasses = !this.embedded ? ['panel', 'panel-default'] : ['-nonpanel']\n if (this.blockingClicks) rootClasses = rootClasses.concat(['-blocked', '_misclick-prevention'])\n return {\n root: rootClasses,\n header: ['timeline-heading'].concat(!this.embedded ? ['panel-heading', '-sticky'] : []),\n body: ['timeline-body'].concat(!this.embedded ? ['panel-body'] : []),\n footer: ['timeline-footer'].concat(!this.embedded ? ['panel-footer'] : [])\n }\n },\n // id map of statuses which need to be hidden in the main list due to pinning logic\n pinnedStatusIdsObject () {\n return keyBy(this.pinnedStatusIds)\n },\n statusesToDisplay () {\n const amount = this.timeline.visibleStatuses.length\n const statusesPerSide = Math.ceil(Math.max(3, window.innerHeight / 80))\n const nonPinnedIndex = this.virtualScrollIndex - this.filteredPinnedStatusIds.length\n const min = Math.max(0, nonPinnedIndex - statusesPerSide)\n const max = Math.min(amount, nonPinnedIndex + statusesPerSide)\n return this.timeline.visibleStatuses.slice(min, max).map(_ => _.id)\n },\n virtualScrollingEnabled () {\n return this.$store.getters.mergedConfig.virtualScrolling\n },\n ...mapState({\n mobileLayout: state => state.interface.layoutType === 'mobile'\n })\n },\n created () {\n const store = this.$store\n const credentials = store.state.users.currentUser.credentials\n const showImmediately = this.timeline.visibleStatuses.length === 0\n\n window.addEventListener('scroll', this.handleScroll)\n\n if (store.state.api.fetchers[this.timelineName]) { return false }\n\n timelineFetcher.fetchAndUpdate({\n store,\n credentials,\n timeline: this.timelineName,\n showImmediately,\n userId: this.userId,\n listId: this.listId,\n tag: this.tag\n })\n },\n mounted () {\n if (typeof document.hidden !== 'undefined') {\n document.addEventListener('visibilitychange', this.handleVisibilityChange, false)\n this.unfocused = document.hidden\n }\n window.addEventListener('keydown', this.handleShortKey)\n setTimeout(this.determineVisibleStatuses, 250)\n },\n unmounted () {\n window.removeEventListener('scroll', this.handleScroll)\n window.removeEventListener('keydown', this.handleShortKey)\n if (typeof document.hidden !== 'undefined') document.removeEventListener('visibilitychange', this.handleVisibilityChange, false)\n this.$store.commit('setLoading', { timeline: this.timelineName, value: false })\n },\n methods: {\n scrollToTop () {\n window.scrollTo({ top: this.$el.offsetTop })\n },\n stopBlockingClicks: debounce(function () {\n this.blockingClicks = false\n }, 1000),\n blockClicksTemporarily () {\n if (!this.blockingClicks) {\n this.blockingClicks = true\n }\n this.stopBlockingClicks()\n },\n handleShortKey (e) {\n // Ignore when input fields are focused\n if (['textarea', 'input'].includes(e.target.tagName.toLowerCase())) return\n if (e.key === '.') this.showNewStatuses()\n },\n showNewStatuses () {\n if (this.timeline.flushMarker !== 0) {\n this.$store.commit('clearTimeline', { timeline: this.timelineName, excludeUserId: true })\n this.$store.commit('queueFlush', { timeline: this.timelineName, id: 0 })\n this.fetchOlderStatuses()\n } else {\n this.blockClicksTemporarily()\n this.$store.commit('showNewStatuses', { timeline: this.timelineName })\n this.paused = false\n }\n window.scrollTo({ top: 0 })\n },\n fetchOlderStatuses: throttle(function () {\n const store = this.$store\n const credentials = store.state.users.currentUser.credentials\n store.commit('setLoading', { timeline: this.timelineName, value: true })\n timelineFetcher.fetchAndUpdate({\n store,\n credentials,\n timeline: this.timelineName,\n older: true,\n showImmediately: true,\n userId: this.userId,\n listId: this.listId,\n tag: this.tag\n }).then(({ statuses }) => {\n if (statuses && statuses.length === 0) {\n this.bottomedOut = true\n }\n }).finally(() =>\n store.commit('setLoading', { timeline: this.timelineName, value: false })\n )\n }, 1000, this),\n determineVisibleStatuses () {\n if (!this.$refs.timeline) return\n if (!this.virtualScrollingEnabled) return\n\n const statuses = this.$refs.timeline.children\n const cappedScrollIndex = Math.max(0, Math.min(this.virtualScrollIndex, statuses.length - 1))\n\n if (statuses.length === 0) return\n\n const height = Math.max(document.body.offsetHeight, window.pageYOffset)\n\n const centerOfScreen = window.pageYOffset + (window.innerHeight * 0.5)\n\n // Start from approximating the index of some visible status by using the\n // the center of the screen on the timeline.\n let approxIndex = Math.floor(statuses.length * (centerOfScreen / height))\n let err = statuses[approxIndex].getBoundingClientRect().y\n\n // if we have a previous scroll index that can be used, test if it's\n // closer than the previous approximation, use it if so\n\n const virtualScrollIndexY = statuses[cappedScrollIndex].getBoundingClientRect().y\n if (Math.abs(err) > virtualScrollIndexY) {\n approxIndex = cappedScrollIndex\n err = virtualScrollIndexY\n }\n\n // if the status is too far from viewport, check the next/previous ones if\n // they happen to be better\n while (err < -20 && approxIndex < statuses.length - 1) {\n err += statuses[approxIndex].offsetHeight\n approxIndex++\n }\n while (err > window.innerHeight + 100 && approxIndex > 0) {\n approxIndex--\n err -= statuses[approxIndex].offsetHeight\n }\n\n // this status is now the center point for virtual scrolling and visible\n // statuses will be nearby statuses before and after it\n this.virtualScrollIndex = approxIndex\n },\n scrollLoad (e) {\n const bodyBRect = document.body.getBoundingClientRect()\n const height = Math.max(bodyBRect.height, -(bodyBRect.y))\n if (this.timeline.loading === false &&\n this.$el.offsetHeight > 0 &&\n (window.innerHeight + window.pageYOffset) >= (height - 750)) {\n this.fetchOlderStatuses()\n }\n },\n handleScroll: throttle(function (e) {\n this.showScrollTop = this.$el.offsetTop < window.scrollY\n this.determineVisibleStatuses()\n this.scrollLoad(e)\n }, 200),\n handleVisibilityChange () {\n this.unfocused = document.hidden\n }\n },\n watch: {\n newStatusCount (count) {\n if (!this.$store.getters.mergedConfig.streaming) {\n return\n }\n if (count > 0) {\n // only 'stream' them when you're scrolled to the top\n const doc = document.documentElement\n const top = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0)\n if (top < 15 &&\n !this.paused &&\n !(this.unfocused && this.$store.getters.mergedConfig.pauseOnUnfocused)\n ) {\n this.showNewStatuses()\n } else {\n this.paused = true\n }\n }\n }\n }\n}\n\nexport default Timeline\n","import { render } from \"./timeline.vue?vue&type=template&id=79de750e\"\nimport script from \"./timeline.js?vue&type=script&lang=js\"\nexport * from \"./timeline.js?vue&type=script&lang=js\"\n\nimport \"./timeline.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Timeline from '../timeline/timeline.vue'\nconst PublicTimeline = {\n components: {\n Timeline\n },\n computed: {\n timeline () { return this.$store.state.statuses.timelines.public }\n },\n created () {\n this.$store.dispatch('startFetchingTimeline', { timeline: 'public' })\n },\n unmounted () {\n this.$store.dispatch('stopFetchingTimeline', 'public')\n }\n\n}\n\nexport default PublicTimeline\n","import { render } from \"./public_timeline.vue?vue&type=template&id=5f2a502e\"\nimport script from \"./public_timeline.js?vue&type=script&lang=js\"\nexport * from \"./public_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Timeline\n :title=\"$t('nav.public_tl')\"\n :timeline=\"timeline\"\n :timeline-name=\"'public'\"\n />\n</template>\n\n<script src=\"./public_timeline.js\"></script>\n","import Timeline from '../timeline/timeline.vue'\nconst PublicAndExternalTimeline = {\n components: {\n Timeline\n },\n computed: {\n timeline () { return this.$store.state.statuses.timelines.publicAndExternal }\n },\n created () {\n this.$store.dispatch('startFetchingTimeline', { timeline: 'publicAndExternal' })\n },\n unmounted () {\n this.$store.dispatch('stopFetchingTimeline', 'publicAndExternal')\n }\n}\n\nexport default PublicAndExternalTimeline\n","import { render } from \"./public_and_external_timeline.vue?vue&type=template&id=f6923484\"\nimport script from \"./public_and_external_timeline.js?vue&type=script&lang=js\"\nexport * from \"./public_and_external_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Timeline\n :title=\"$t('nav.twkn')\"\n :timeline=\"timeline\"\n :timeline-name=\"'publicAndExternal'\"\n />\n</template>\n\n<script src=\"./public_and_external_timeline.js\"></script>\n","import Timeline from '../timeline/timeline.vue'\nconst FriendsTimeline = {\n components: {\n Timeline\n },\n computed: {\n timeline () { return this.$store.state.statuses.timelines.friends }\n }\n}\n\nexport default FriendsTimeline\n","import { render } from \"./friends_timeline.vue?vue&type=template&id=22490669\"\nimport script from \"./friends_timeline.js?vue&type=script&lang=js\"\nexport * from \"./friends_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Timeline\n :title=\"$t('nav.timeline')\"\n :timeline=\"timeline\"\n :timeline-name=\"'friends'\"\n />\n</template>\n\n<script src=\"./friends_timeline.js\"></script>\n","import Timeline from '../timeline/timeline.vue'\n\nconst TagTimeline = {\n created () {\n this.$store.commit('clearTimeline', { timeline: 'tag' })\n this.$store.dispatch('startFetchingTimeline', { timeline: 'tag', tag: this.tag })\n },\n components: {\n Timeline\n },\n computed: {\n tag () { return this.$route.params.tag },\n timeline () { return this.$store.state.statuses.timelines.tag }\n },\n watch: {\n tag () {\n this.$store.commit('clearTimeline', { timeline: 'tag' })\n this.$store.dispatch('startFetchingTimeline', { timeline: 'tag', tag: this.tag })\n }\n },\n unmounted () {\n this.$store.dispatch('stopFetchingTimeline', 'tag')\n }\n}\n\nexport default TagTimeline\n","import { render } from \"./tag_timeline.vue?vue&type=template&id=047310d3\"\nimport script from \"./tag_timeline.js?vue&type=script&lang=js\"\nexport * from \"./tag_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Timeline\n :title=\"tag\"\n :timeline=\"timeline\"\n :timeline-name=\"'tag'\"\n :tag=\"tag\"\n />\n</template>\n\n<script src='./tag_timeline.js'></script>\n","import Timeline from '../timeline/timeline.vue'\n\nconst Bookmarks = {\n computed: {\n timeline () {\n return this.$store.state.statuses.timelines.bookmarks\n }\n },\n components: {\n Timeline\n },\n unmounted () {\n this.$store.commit('clearTimeline', { timeline: 'bookmarks' })\n }\n}\n\nexport default Bookmarks\n","import { render } from \"./bookmark_timeline.vue?vue&type=template&id=2b9c8ba0\"\nimport script from \"./bookmark_timeline.js?vue&type=script&lang=js\"\nexport * from \"./bookmark_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Timeline\n :title=\"$t('nav.bookmarks')\"\n :timeline=\"timeline\"\n :timeline-name=\"'bookmarks'\"\n />\n</template>\n\n<script src=\"./bookmark_timeline.js\"></script>\n","import Conversation from '../conversation/conversation.vue'\n\nconst conversationPage = {\n components: {\n Conversation\n },\n computed: {\n statusId () {\n return this.$route.params.id\n }\n }\n}\n\nexport default conversationPage\n","import { render } from \"./conversation-page.vue?vue&type=template&id=46654d24\"\nimport script from \"./conversation-page.js?vue&type=script&lang=js\"\nexport * from \"./conversation-page.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <conversation\n :collapsable=\"false\"\n is-page=\"true\"\n :status-id=\"statusId\"\n />\n</template>\n\n<script src=\"./conversation-page.js\"></script>\n","<template>\n <div class=\"panel panel-default\">\n <div class=\"panel-heading\">\n <div class=\"title\">\n {{ $t(\"nav.interactions\") }}\n </div>\n </div>\n <tab-switcher\n ref=\"tabSwitcher\"\n :on-switch=\"onModeSwitch\"\n >\n <span\n key=\"mentions\"\n :label=\"$t('nav.mentions')\"\n />\n <span\n key=\"likes+repeats\"\n :label=\"$t('interactions.favs_repeats')\"\n />\n <span\n key=\"follows\"\n :label=\"$t('interactions.follows')\"\n />\n <span\n key=\"reactions\"\n :label=\"$t('interactions.emoji_reactions')\"\n />\n <span\n v-if=\"canSeeReports\"\n key=\"reports\"\n :label=\"$t('interactions.reports')\"\n />\n <span\n v-if=\"!allowFollowingMove\"\n key=\"moves\"\n :label=\"$t('interactions.moves')\"\n />\n </tab-switcher>\n <Notifications\n ref=\"notifications\"\n :no-heading=\"true\"\n :minimal-mode=\"true\"\n :filter-mode=\"filterMode\"\n />\n </div>\n</template>\n\n<script src=\"./interactions.js\"></script>\n","import Notifications from '../notifications/notifications.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\n\nconst tabModeDict = {\n mentions: ['mention'],\n 'likes+repeats': ['repeat', 'like'],\n follows: ['follow'],\n reactions: ['pleroma:emoji_reaction'],\n reports: ['pleroma:report'],\n moves: ['move']\n}\n\nconst Interactions = {\n data () {\n return {\n allowFollowingMove: this.$store.state.users.currentUser.allow_following_move,\n filterMode: tabModeDict.mentions,\n canSeeReports: this.$store.state.users.currentUser.privileges.includes('reports_manage_reports')\n }\n },\n methods: {\n onModeSwitch (key) {\n this.filterMode = tabModeDict[key]\n }\n },\n components: {\n Notifications,\n TabSwitcher\n }\n}\n\nexport default Interactions\n","import { render } from \"./interactions.vue?vue&type=template&id=3b173532\"\nimport script from \"./interactions.js?vue&type=script&lang=js\"\nexport * from \"./interactions.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Timeline from '../timeline/timeline.vue'\n\nconst DMs = {\n computed: {\n timeline () {\n return this.$store.state.statuses.timelines.dms\n }\n },\n components: {\n Timeline\n }\n}\n\nexport default DMs\n","import { render } from \"./dm_timeline.vue?vue&type=template&id=294f8b6d\"\nimport script from \"./dm_timeline.js?vue&type=script&lang=js\"\nexport * from \"./dm_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Timeline\n :title=\"$t('nav.dms')\"\n :timeline=\"timeline\"\n :timeline-name=\"'dms'\"\n />\n</template>\n\n<script src=\"./dm_timeline.js\"></script>\n","<template>\n <div v-if=\"isNew\">\n <ChatNew @cancel=\"cancelNewChat\" />\n </div>\n <div\n v-else\n class=\"chat-list panel panel-default\"\n >\n <div class=\"panel-heading -sticky\">\n <span class=\"title\">\n {{ $t(\"chats.chats\") }}\n </span>\n <button\n class=\"button-default\"\n @click=\"newChat\"\n >\n {{ $t(\"chats.new\") }}\n </button>\n </div>\n <div class=\"panel-body\">\n <div\n v-if=\"sortedChatList.length > 0\"\n class=\"timeline\"\n >\n <List :items=\"sortedChatList\">\n <template #item=\"{item}\">\n <ChatListItem\n :key=\"item.id\"\n :compact=\"false\"\n :chat=\"item\"\n />\n </template>\n </List>\n </div>\n <div\n v-else\n class=\"emtpy-chat-list-alert\"\n >\n <span>{{ $t('chats.empty_chat_list_placeholder') }}</span>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./chat_list.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.chat-list {\n min-height: 25em;\n margin-bottom: 0;\n}\n\n.emtpy-chat-list-alert {\n padding: 3em;\n font-size: 1.2em;\n display: flex;\n justify-content: center;\n color: $fallback--text;\n color: var(--faint, $fallback--text);\n}\n\n</style>\n","<template>\n <div\n class=\"chat-list-item\"\n @click.capture.prevent=\"openChat\"\n >\n <div class=\"chat-list-item-left\">\n <UserAvatar\n :user=\"chat.account\"\n height=\"48px\"\n width=\"48px\"\n />\n </div>\n <div class=\"chat-list-item-center\">\n <div class=\"heading\">\n <span\n v-if=\"chat.account\"\n class=\"name-and-account-name\"\n >\n <ChatTitle\n :user=\"chat.account\"\n />\n </span>\n <span class=\"heading-right\" />\n <div class=\"time-wrapper\">\n <Timeago\n :time=\"chat.updated_at\"\n :auto-update=\"60\"\n />\n </div>\n </div>\n <div class=\"chat-preview\">\n <StatusBody\n class=\"chat-preview-body\"\n :status=\"messageForStatusContent\"\n :single-line=\"true\"\n />\n <div\n v-if=\"chat.unread > 0\"\n class=\"badge badge-notification unread-chat-count\"\n >\n {{ chat.unread }}\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./chat_list_item.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n@import \"./chat_list_item\";\n</style>\n","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport { defineAsyncComponent } from 'vue'\n\nexport default {\n name: 'ChatTitle',\n components: {\n UserAvatar,\n RichContent,\n UserPopover: defineAsyncComponent(() => import('../user_popover/user_popover.vue'))\n },\n props: [\n 'user', 'withAvatar'\n ],\n computed: {\n title () {\n return this.user ? this.user.screen_name_ui : ''\n },\n htmlTitle () {\n return this.user ? this.user.name_html : ''\n }\n }\n}\n","import { render } from \"./chat_title.vue?vue&type=template&id=e9d70b10\"\nimport script from \"./chat_title.js?vue&type=script&lang=js\"\nexport * from \"./chat_title.js?vue&type=script&lang=js\"\n\nimport \"./chat_title.vue?vue&type=style&index=0&id=e9d70b10&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"chat-title\"\n :title=\"title\"\n >\n <UserPopover\n v-if=\"withAvatar && user\"\n class=\"avatar-container\"\n :user-id=\"user.id\"\n >\n <UserAvatar\n class=\"titlebar-avatar\"\n :user=\"user\"\n />\n </UserPopover>\n <RichContent\n v-if=\"user\"\n class=\"username\"\n :title=\"'@'+(user && user.screen_name_ui)\"\n :html=\"htmlTitle\"\n :emoji=\"user.emoji || []\"\n />\n </div>\n</template>\n\n<script src=\"./chat_title.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.chat-title {\n display: flex;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n --emoji-size: 14px;\n\n .username {\n max-width: 100%;\n text-overflow: ellipsis;\n white-space: nowrap;\n display: inline;\n word-wrap: break-word;\n overflow: hidden;\n }\n\n .avatar-container {\n align-self: center;\n line-height: 1;\n }\n\n .titlebar-avatar {\n margin-right: 0.5em;\n height: 1.5em;\n width: 1.5em;\n border-radius: $fallback--avatarAltRadius;\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n\n &.animated::before {\n display: none;\n }\n }\n}\n</style>\n","import { mapState } from 'vuex'\nimport StatusBody from '../status_content/status_content.vue'\nimport fileType from 'src/services/file_type/file_type.service'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport AvatarList from '../avatar_list/avatar_list.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport ChatTitle from '../chat_title/chat_title.vue'\n\nconst ChatListItem = {\n name: 'ChatListItem',\n props: [\n 'chat'\n ],\n components: {\n UserAvatar,\n AvatarList,\n Timeago,\n ChatTitle,\n StatusBody\n },\n computed: {\n ...mapState({\n currentUser: state => state.users.currentUser\n }),\n attachmentInfo () {\n if (this.chat.lastMessage.attachments.length === 0) { return }\n\n const types = this.chat.lastMessage.attachments.map(file => fileType.fileType(file.mimetype))\n if (types.includes('video')) {\n return this.$t('file_type.video')\n } else if (types.includes('audio')) {\n return this.$t('file_type.audio')\n } else if (types.includes('image')) {\n return this.$t('file_type.image')\n } else {\n return this.$t('file_type.file')\n }\n },\n messageForStatusContent () {\n const message = this.chat.lastMessage\n const messageEmojis = message ? message.emojis : []\n const isYou = message && message.account_id === this.currentUser.id\n const content = message ? (this.attachmentInfo || message.content) : ''\n const messagePreview = isYou ? `<i>${this.$t('chats.you')}</i> ${content}` : content\n return {\n summary: '',\n emojis: messageEmojis,\n raw_html: messagePreview,\n text: messagePreview,\n attachments: []\n }\n }\n },\n methods: {\n openChat (_e) {\n if (this.chat.id) {\n this.$router.push({\n name: 'chat',\n params: {\n username: this.currentUser.screen_name,\n recipient_id: this.chat.account.id\n }\n })\n }\n }\n }\n}\n\nexport default ChatListItem\n","import { render } from \"./chat_list_item.vue?vue&type=template&id=a202646c\"\nimport script from \"./chat_list_item.js?vue&type=script&lang=js\"\nexport * from \"./chat_list_item.js?vue&type=script&lang=js\"\n\nimport \"./chat_list_item.vue?vue&type=style&index=0&id=a202646c&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"panel-default panel chat-new\"\n >\n <div\n ref=\"header\"\n class=\"panel-heading\"\n >\n <button\n class=\"button-unstyled go-back-button\"\n @click=\"goBack\"\n >\n <FAIcon\n size=\"lg\"\n icon=\"chevron-left\"\n />\n </button>\n </div>\n <div class=\"input-wrap\">\n <div class=\"input-search\">\n <FAIcon\n class=\"search-icon fa-scale-110 fa-old-padding\"\n icon=\"search\"\n />\n </div>\n <input\n ref=\"search\"\n v-model=\"query\"\n placeholder=\"Search people\"\n @input=\"onInput\"\n >\n </div>\n <div class=\"member-list\">\n <div\n v-for=\"user in availableUsers\"\n :key=\"user.id\"\n class=\"member\"\n >\n <div @click.capture.prevent=\"goToChat(user)\">\n <BasicUserCard :user=\"user\" />\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./chat_new.js\"></script>\n<style lang=\"scss\">\n@import \"../../variables\";\n@import \"./chat_new\";\n</style>\n","import { mapState, mapGetters } from 'vuex'\nimport BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSearch,\n faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faSearch,\n faChevronLeft\n)\n\nconst chatNew = {\n components: {\n BasicUserCard,\n UserAvatar\n },\n data () {\n return {\n suggestions: [],\n userIds: [],\n loading: false,\n query: ''\n }\n },\n async created () {\n const { chats } = await this.backendInteractor.chats()\n chats.forEach(chat => this.suggestions.push(chat.account))\n },\n computed: {\n users () {\n return this.userIds.map(userId => this.findUser(userId))\n },\n availableUsers () {\n if (this.query.length !== 0) {\n return this.users\n } else {\n return this.suggestions\n }\n },\n ...mapState({\n currentUser: state => state.users.currentUser,\n backendInteractor: state => state.api.backendInteractor\n }),\n ...mapGetters(['findUser'])\n },\n methods: {\n goBack () {\n this.$emit('cancel')\n },\n goToChat (user) {\n this.$router.push({ name: 'chat', params: { recipient_id: user.id } })\n },\n onInput () {\n this.search(this.query)\n },\n addUser (user) {\n this.selectedUserIds.push(user.id)\n this.query = ''\n },\n removeUser (userId) {\n this.selectedUserIds = this.selectedUserIds.filter(id => id !== userId)\n },\n search (query) {\n if (!query) {\n this.loading = false\n return\n }\n\n this.loading = true\n this.userIds = []\n this.$store.dispatch('search', { q: query, resolve: true, type: 'accounts' })\n .then(data => {\n this.loading = false\n this.userIds = data.accounts.map(a => a.id)\n })\n }\n }\n}\n\nexport default chatNew\n","import { render } from \"./chat_new.vue?vue&type=template&id=527ae593\"\nimport script from \"./chat_new.js?vue&type=script&lang=js\"\nexport * from \"./chat_new.js?vue&type=script&lang=js\"\n\nimport \"./chat_new.vue?vue&type=style&index=0&id=527ae593&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { mapState, mapGetters } from 'vuex'\nimport ChatListItem from '../chat_list_item/chat_list_item.vue'\nimport ChatNew from '../chat_new/chat_new.vue'\nimport List from '../list/list.vue'\n\nconst ChatList = {\n components: {\n ChatListItem,\n List,\n ChatNew\n },\n computed: {\n ...mapState({\n currentUser: state => state.users.currentUser\n }),\n ...mapGetters(['sortedChatList'])\n },\n data () {\n return {\n isNew: false\n }\n },\n created () {\n this.$store.dispatch('fetchChats', { latest: true })\n },\n methods: {\n cancelNewChat () {\n this.isNew = false\n this.$store.dispatch('fetchChats', { latest: true })\n },\n newChat () {\n this.isNew = true\n }\n }\n}\n\nexport default ChatList\n","import { render } from \"./chat_list.vue?vue&type=template&id=66fabc09\"\nimport script from \"./chat_list.js?vue&type=script&lang=js\"\nexport * from \"./chat_list.js?vue&type=script&lang=js\"\n\nimport \"./chat_list.vue?vue&type=style&index=0&id=66fabc09&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"chat-view\">\n <div class=\"chat-view-inner\">\n <div\n ref=\"inner\"\n class=\"panel-default panel chat-view-body\"\n >\n <div\n ref=\"header\"\n class=\"panel-heading -sticky chat-view-heading\"\n >\n <button\n class=\"button-unstyled go-back-button\"\n @click=\"goBack\"\n >\n <FAIcon\n size=\"lg\"\n icon=\"chevron-left\"\n />\n </button>\n <div class=\"title text-center\">\n <ChatTitle\n :user=\"recipient\"\n :with-avatar=\"true\"\n />\n </div>\n </div>\n <div\n class=\"message-list\"\n :style=\"{ height: scrollableContainerHeight }\"\n >\n <template v-if=\"!errorLoadingChat\">\n <ChatMessage\n v-for=\"chatViewItem in chatViewItems\"\n :key=\"chatViewItem.id\"\n :author=\"recipient\"\n :chat-view-item=\"chatViewItem\"\n :hovered-message-chain=\"chatViewItem.messageChainId === hoveredMessageChainId\"\n @hover=\"onMessageHover\"\n />\n </template>\n <div\n v-else\n class=\"chat-loading-error\"\n >\n <div class=\"alert error\">\n {{ $t('chats.error_loading_chat') }}\n </div>\n </div>\n </div>\n <div\n ref=\"footer\"\n class=\"panel-body footer\"\n >\n <div\n class=\"jump-to-bottom-button\"\n :class=\"{ 'visible': jumpToBottomButtonVisible }\"\n @click=\"scrollDown({ behavior: 'smooth' })\"\n >\n <span>\n <FAIcon icon=\"chevron-down\" />\n <div\n v-if=\"newMessageCount\"\n class=\"badge badge-notification unread-chat-count unread-message-count\"\n >\n {{ newMessageCount }}\n </div>\n </span>\n </div>\n <PostStatusForm\n :disable-subject=\"true\"\n :disable-scope-selector=\"true\"\n :disable-notice=\"true\"\n :disable-lock-warning=\"true\"\n :disable-polls=\"true\"\n :disable-sensitivity-checkbox=\"true\"\n :disable-submit=\"errorLoadingChat || !currentChat\"\n :disable-preview=\"true\"\n :optimistic-posting=\"true\"\n :post-handler=\"sendMessage\"\n :submit-on-enter=\"!mobileLayout\"\n :preserve-focus=\"!mobileLayout\"\n :auto-focus=\"!mobileLayout\"\n :placeholder=\"formPlaceholder\"\n :file-limit=\"1\"\n max-height=\"160\"\n emoji-picker-placement=\"top\"\n @resize=\"handleResize\"\n />\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./chat.js\"></script>\n<style lang=\"scss\">\n@import \"../../variables\";\n@import \"./chat\";\n</style>\n","<template>\n <div\n v-if=\"isMessage\"\n class=\"chat-message-wrapper\"\n :class=\"{ 'hovered-message-chain': hoveredMessageChain }\"\n @mouseover=\"onHover(true)\"\n @mouseleave=\"onHover(false)\"\n >\n <div\n class=\"chat-message\"\n :class=\"[{ 'outgoing': isCurrentUser, 'incoming': !isCurrentUser }]\"\n >\n <div\n v-if=\"!isCurrentUser\"\n class=\"avatar-wrapper\"\n >\n <UserPopover\n v-if=\"chatViewItem.isHead\"\n :user-id=\"author.id\"\n >\n <UserAvatar\n :compact=\"true\"\n :better-shadow=\"betterShadow\"\n :user=\"author\"\n />\n </UserPopover>\n </div>\n <div class=\"chat-message-inner\">\n <div\n class=\"status-body\"\n :style=\"{ 'min-width': message.attachment ? '80%' : '' }\"\n >\n <div\n class=\"media status\"\n :class=\"{ 'without-attachment': !hasAttachment, 'pending': chatViewItem.data.pending, 'error': chatViewItem.data.error }\"\n style=\"position: relative;\"\n @mouseenter=\"hovered = true\"\n @mouseleave=\"hovered = false\"\n >\n <div\n class=\"chat-message-menu\"\n :class=\"{ 'visible': hovered || menuOpened }\"\n >\n <Popover\n trigger=\"click\"\n placement=\"top\"\n bound-to-selector=\".chat-view-inner\"\n :bound-to=\"{ x: 'container' }\"\n :margin=\"popoverMarginStyle\"\n @show=\"menuOpened = true\"\n @close=\"menuOpened = false\"\n >\n <template #content>\n <div class=\"dropdown-menu\">\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click=\"deleteMessage\"\n >\n <FAIcon icon=\"times\" /> {{ $t(\"chats.delete\") }}\n </button>\n </div>\n </template>\n <template #trigger>\n <button\n class=\"button-default menu-icon\"\n :title=\"$t('chats.more')\"\n >\n <FAIcon icon=\"ellipsis-h\" />\n </button>\n </template>\n </Popover>\n </div>\n <StatusContent\n class=\"message-content\"\n :status=\"messageForStatusContent\"\n :full-content=\"true\"\n >\n <template #footer>\n <span\n class=\"created-at\"\n >\n {{ createdAt }}\n </span>\n </template>\n </StatusContent>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div\n v-else\n class=\"chat-message-date-separator\"\n >\n <ChatMessageDate :date=\"chatViewItem.date\" />\n </div>\n</template>\n\n<script src=\"./chat_message.js\"></script>\n<style lang=\"scss\">\n@import \"./chat_message\";\n\n</style>\n","<template>\n <time>\n {{ displayDate }}\n </time>\n</template>\n\n<script>\nimport localeService from 'src/services/locale/locale.service.js'\n\nexport default {\n name: 'Timeago',\n props: ['date'],\n computed: {\n displayDate () {\n const today = new Date()\n today.setHours(0, 0, 0, 0)\n\n if (this.date.getTime() === today.getTime()) {\n return this.$t('display_date.today')\n } else {\n return this.date.toLocaleDateString(localeService.internalToBrowserLocale(this.$i18n.locale), { day: 'numeric', month: 'long' })\n }\n }\n }\n}\n</script>\n","import { render } from \"./chat_message_date.vue?vue&type=template&id=23377998\"\nimport script from \"./chat_message_date.vue?vue&type=script&lang=js\"\nexport * from \"./chat_message_date.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { mapState, mapGetters } from 'vuex'\nimport Popover from '../popover/popover.vue'\nimport Attachment from '../attachment/attachment.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport Gallery from '../gallery/gallery.vue'\nimport LinkPreview from '../link-preview/link-preview.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport ChatMessageDate from '../chat_message_date/chat_message_date.vue'\nimport { defineAsyncComponent } from 'vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes,\n faEllipsisH\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes,\n faEllipsisH\n)\n\nconst ChatMessage = {\n name: 'ChatMessage',\n props: [\n 'author',\n 'edited',\n 'noHeading',\n 'chatViewItem',\n 'hoveredMessageChain'\n ],\n emits: ['hover'],\n components: {\n Popover,\n Attachment,\n StatusContent,\n UserAvatar,\n Gallery,\n LinkPreview,\n ChatMessageDate,\n UserPopover: defineAsyncComponent(() => import('../user_popover/user_popover.vue'))\n },\n computed: {\n // Returns HH:MM (hours and minutes) in local time.\n createdAt () {\n const time = this.chatViewItem.data.created_at\n return time.toLocaleTimeString('en', { hour: '2-digit', minute: '2-digit', hour12: false })\n },\n isCurrentUser () {\n return this.message.account_id === this.currentUser.id\n },\n message () {\n return this.chatViewItem.data\n },\n isMessage () {\n return this.chatViewItem.type === 'message'\n },\n messageForStatusContent () {\n return {\n summary: '',\n emojis: this.message.emojis,\n raw_html: this.message.content || '',\n text: this.message.content || '',\n attachments: this.message.attachments\n }\n },\n hasAttachment () {\n return this.message.attachments.length > 0\n },\n ...mapState({\n betterShadow: state => state.interface.browserSupport.cssFilter,\n currentUser: state => state.users.currentUser,\n restrictedNicknames: state => state.instance.restrictedNicknames\n }),\n popoverMarginStyle () {\n if (this.isCurrentUser) {\n return {}\n } else {\n return { left: 50 }\n }\n },\n ...mapGetters(['mergedConfig', 'findUser'])\n },\n data () {\n return {\n hovered: false,\n menuOpened: false\n }\n },\n methods: {\n onHover (bool) {\n this.$emit('hover', { isHovered: bool, messageChainId: this.chatViewItem.messageChainId })\n },\n async deleteMessage () {\n const confirmed = window.confirm(this.$t('chats.delete_confirm'))\n if (confirmed) {\n await this.$store.dispatch('deleteChatMessage', {\n messageId: this.chatViewItem.data.id,\n chatId: this.chatViewItem.data.chat_id\n })\n }\n this.hovered = false\n this.menuOpened = false\n }\n }\n}\n\nexport default ChatMessage\n","import { render } from \"./chat_message.vue?vue&type=template&id=e61e03a2\"\nimport script from \"./chat_message.js?vue&type=script&lang=js\"\nexport * from \"./chat_message.js?vue&type=script&lang=js\"\n\nimport \"./chat_message.vue?vue&type=style&index=0&id=e61e03a2&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// Captures a scroll position\nexport const getScrollPosition = () => {\n return {\n scrollTop: window.scrollY,\n scrollHeight: document.documentElement.scrollHeight,\n offsetHeight: window.innerHeight\n }\n}\n\n// A helper function that is used to keep the scroll position fixed as the new elements are added to the top\n// Takes two scroll positions, before and after the update.\nexport const getNewTopPosition = (previousPosition, newPosition) => {\n return previousPosition.scrollTop + (newPosition.scrollHeight - previousPosition.scrollHeight)\n}\n\nexport const isBottomedOut = (offset = 0) => {\n const scrollHeight = window.scrollY + offset\n const totalHeight = document.documentElement.scrollHeight - window.innerHeight\n return totalHeight <= scrollHeight\n}\n// Returns whether or not the scrollbar is visible.\nexport const isScrollable = () => {\n return document.documentElement.scrollHeight > window.innerHeight\n}\n","import _ from 'lodash'\nimport { WSConnectionStatus } from '../../services/api/api.service.js'\nimport { mapGetters, mapState } from 'vuex'\nimport ChatMessage from '../chat_message/chat_message.vue'\nimport PostStatusForm from '../post_status_form/post_status_form.vue'\nimport ChatTitle from '../chat_title/chat_title.vue'\nimport chatService from '../../services/chat_service/chat_service.js'\nimport { promiseInterval } from '../../services/promise_interval/promise_interval.js'\nimport { getScrollPosition, getNewTopPosition, isBottomedOut, isScrollable } from './chat_layout_utils.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faChevronDown,\n faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\nimport { buildFakeMessage } from '../../services/chat_utils/chat_utils.js'\n\nlibrary.add(\n faChevronDown,\n faChevronLeft\n)\n\nconst BOTTOMED_OUT_OFFSET = 10\nconst JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET = 10\nconst SAFE_RESIZE_TIME_OFFSET = 100\nconst MARK_AS_READ_DELAY = 1500\nconst MAX_RETRIES = 10\n\nconst Chat = {\n components: {\n ChatMessage,\n ChatTitle,\n PostStatusForm\n },\n data () {\n return {\n jumpToBottomButtonVisible: false,\n hoveredMessageChainId: undefined,\n lastScrollPosition: {},\n scrollableContainerHeight: '100%',\n errorLoadingChat: false,\n messageRetriers: {}\n }\n },\n created () {\n this.startFetching()\n window.addEventListener('resize', this.handleResize)\n },\n mounted () {\n window.addEventListener('scroll', this.handleScroll)\n if (typeof document.hidden !== 'undefined') {\n document.addEventListener('visibilitychange', this.handleVisibilityChange, false)\n }\n\n this.$nextTick(() => {\n this.handleResize()\n })\n },\n unmounted () {\n window.removeEventListener('scroll', this.handleScroll)\n window.removeEventListener('resize', this.handleResize)\n if (typeof document.hidden !== 'undefined') document.removeEventListener('visibilitychange', this.handleVisibilityChange, false)\n this.$store.dispatch('clearCurrentChat')\n },\n computed: {\n recipient () {\n return this.currentChat && this.currentChat.account\n },\n recipientId () {\n return this.$route.params.recipient_id\n },\n formPlaceholder () {\n if (this.recipient) {\n return this.$t('chats.message_user', { nickname: this.recipient.screen_name_ui })\n } else {\n return ''\n }\n },\n chatViewItems () {\n return chatService.getView(this.currentChatMessageService)\n },\n newMessageCount () {\n return this.currentChatMessageService && this.currentChatMessageService.newMessageCount\n },\n streamingEnabled () {\n return this.mergedConfig.useStreamingApi && this.mastoUserSocketStatus === WSConnectionStatus.JOINED\n },\n ...mapGetters([\n 'currentChat',\n 'currentChatMessageService',\n 'findOpenedChatByRecipientId',\n 'mergedConfig'\n ]),\n ...mapState({\n backendInteractor: state => state.api.backendInteractor,\n mastoUserSocketStatus: state => state.api.mastoUserSocketStatus,\n mobileLayout: state => state.interface.layoutType === 'mobile',\n currentUser: state => state.users.currentUser\n })\n },\n watch: {\n chatViewItems () {\n // We don't want to scroll to the bottom on a new message when the user is viewing older messages.\n // Therefore we need to know whether the scroll position was at the bottom before the DOM update.\n const bottomedOutBeforeUpdate = this.bottomedOut(BOTTOMED_OUT_OFFSET)\n this.$nextTick(() => {\n if (bottomedOutBeforeUpdate) {\n this.scrollDown()\n }\n })\n },\n $route: function () {\n this.startFetching()\n },\n mastoUserSocketStatus (newValue) {\n if (newValue === WSConnectionStatus.JOINED) {\n this.fetchChat({ isFirstFetch: true })\n }\n }\n },\n methods: {\n // Used to animate the avatar near the first message of the message chain when any message belonging to the chain is hovered\n onMessageHover ({ isHovered, messageChainId }) {\n this.hoveredMessageChainId = isHovered ? messageChainId : undefined\n },\n onFilesDropped () {\n this.$nextTick(() => {\n this.handleResize()\n })\n },\n handleVisibilityChange () {\n this.$nextTick(() => {\n if (!document.hidden && this.bottomedOut(BOTTOMED_OUT_OFFSET)) {\n this.scrollDown({ forceRead: true })\n }\n })\n },\n // \"Sticks\" scroll to bottom instead of top, helps with OSK resizing the viewport\n handleResize (opts = {}) {\n const { delayed = false } = opts\n\n if (delayed) {\n setTimeout(() => {\n this.handleResize({ ...opts, delayed: false })\n }, SAFE_RESIZE_TIME_OFFSET)\n return\n }\n\n this.$nextTick(() => {\n const { offsetHeight = undefined } = getScrollPosition()\n const diff = offsetHeight - this.lastScrollPosition.offsetHeight\n if (diff !== 0 && !this.bottomedOut()) {\n this.$nextTick(() => {\n window.scrollBy({ top: -Math.trunc(diff) })\n })\n }\n this.lastScrollPosition = getScrollPosition()\n })\n },\n scrollDown (options = {}) {\n const { behavior = 'auto', forceRead = false } = options\n this.$nextTick(() => {\n window.scrollTo({ top: document.documentElement.scrollHeight, behavior })\n })\n if (forceRead) {\n this.readChat()\n }\n },\n readChat () {\n if (!(this.currentChatMessageService && this.currentChatMessageService.maxId)) { return }\n if (document.hidden) { return }\n const lastReadId = this.currentChatMessageService.maxId\n this.$store.dispatch('readChat', {\n id: this.currentChat.id,\n lastReadId\n })\n },\n bottomedOut (offset) {\n return isBottomedOut(offset)\n },\n reachedTop () {\n return window.scrollY <= 0\n },\n cullOlderCheck () {\n window.setTimeout(() => {\n if (this.bottomedOut(JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET)) {\n this.$store.dispatch('cullOlderMessages', this.currentChatMessageService.chatId)\n }\n }, 5000)\n },\n handleScroll: _.throttle(function () {\n this.lastScrollPosition = getScrollPosition()\n if (!this.currentChat) { return }\n\n if (this.reachedTop()) {\n this.fetchChat({ maxId: this.currentChatMessageService.minId })\n } else if (this.bottomedOut(JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET)) {\n this.jumpToBottomButtonVisible = false\n this.cullOlderCheck()\n if (this.newMessageCount > 0) {\n // Use a delay before marking as read to prevent situation where new messages\n // arrive just as you're leaving the view and messages that you didn't actually\n // get to see get marked as read.\n window.setTimeout(() => {\n // Don't mark as read if the element doesn't exist, user has left chat view\n if (this.$el) this.readChat()\n }, MARK_AS_READ_DELAY)\n }\n } else {\n this.jumpToBottomButtonVisible = true\n }\n }, 200),\n handleScrollUp (positionBeforeLoading) {\n const positionAfterLoading = getScrollPosition()\n window.scrollTo({\n top: getNewTopPosition(positionBeforeLoading, positionAfterLoading)\n })\n },\n fetchChat ({ isFirstFetch = false, fetchLatest = false, maxId }) {\n const chatMessageService = this.currentChatMessageService\n if (!chatMessageService) { return }\n if (fetchLatest && this.streamingEnabled) { return }\n\n const chatId = chatMessageService.chatId\n const fetchOlderMessages = !!maxId\n const sinceId = fetchLatest && chatMessageService.maxId\n\n return this.backendInteractor.chatMessages({ id: chatId, maxId, sinceId })\n .then((messages) => {\n // Clear the current chat in case we're recovering from a ws connection loss.\n if (isFirstFetch) {\n chatService.clear(chatMessageService)\n }\n\n const positionBeforeUpdate = getScrollPosition()\n this.$store.dispatch('addChatMessages', { chatId, messages }).then(() => {\n this.$nextTick(() => {\n if (fetchOlderMessages) {\n this.handleScrollUp(positionBeforeUpdate)\n }\n\n // In vertical screens, the first batch of fetched messages may not always take the\n // full height of the scrollable container.\n // If this is the case, we want to fetch the messages until the scrollable container\n // is fully populated so that the user has the ability to scroll up and load the history.\n if (!isScrollable() && messages.length > 0) {\n this.fetchChat({ maxId: this.currentChatMessageService.minId })\n }\n })\n })\n })\n },\n async startFetching () {\n let chat = this.findOpenedChatByRecipientId(this.recipientId)\n if (!chat) {\n try {\n chat = await this.backendInteractor.getOrCreateChat({ accountId: this.recipientId })\n } catch (e) {\n console.error('Error creating or getting a chat', e)\n this.errorLoadingChat = true\n }\n }\n if (chat) {\n this.$nextTick(() => {\n this.scrollDown({ forceRead: true })\n })\n this.$store.dispatch('addOpenedChat', { chat })\n this.doStartFetching()\n }\n },\n doStartFetching () {\n this.$store.dispatch('startFetchingCurrentChat', {\n fetcher: () => promiseInterval(() => this.fetchChat({ fetchLatest: true }), 5000)\n })\n this.fetchChat({ isFirstFetch: true })\n },\n handleAttachmentPosting () {\n this.$nextTick(() => {\n this.handleResize()\n // When the posting form size changes because of a media attachment, we need an extra resize\n // to account for the potential delay in the DOM update.\n this.scrollDown({ forceRead: true })\n })\n },\n sendMessage ({ status, media, idempotencyKey }) {\n const params = {\n id: this.currentChat.id,\n content: status,\n idempotencyKey\n }\n\n if (media[0]) {\n params.mediaId = media[0].id\n }\n\n const fakeMessage = buildFakeMessage({\n attachments: media,\n chatId: this.currentChat.id,\n content: status,\n userId: this.currentUser.id,\n idempotencyKey\n })\n\n this.$store.dispatch('addChatMessages', {\n chatId: this.currentChat.id,\n messages: [fakeMessage]\n }).then(() => {\n this.handleAttachmentPosting()\n })\n\n return this.doSendMessage({ params, fakeMessage, retriesLeft: MAX_RETRIES })\n },\n doSendMessage ({ params, fakeMessage, retriesLeft = MAX_RETRIES }) {\n if (retriesLeft <= 0) return\n\n this.backendInteractor.sendChatMessage(params)\n .then(data => {\n this.$store.dispatch('addChatMessages', {\n chatId: this.currentChat.id,\n updateMaxId: false,\n messages: [{ ...data, fakeId: fakeMessage.id }]\n })\n\n return data\n })\n .catch(error => {\n console.error('Error sending message', error)\n this.$store.dispatch('handleMessageError', {\n chatId: this.currentChat.id,\n fakeId: fakeMessage.id,\n isRetry: retriesLeft !== MAX_RETRIES\n })\n if ((error.statusCode >= 500 && error.statusCode < 600) || error.message === 'Failed to fetch') {\n this.messageRetriers[fakeMessage.id] = setTimeout(() => {\n this.doSendMessage({ params, fakeMessage, retriesLeft: retriesLeft - 1 })\n }, 1000 * (2 ** (MAX_RETRIES - retriesLeft)))\n }\n return {}\n })\n\n return Promise.resolve(fakeMessage)\n },\n goBack () {\n this.$router.push({ name: 'chats', params: { username: this.currentUser.screen_name } })\n }\n }\n}\n\nexport default Chat\n","import { render } from \"./chat.vue?vue&type=template&id=796d1749\"\nimport script from \"./chat.js?vue&type=script&lang=js\"\nexport * from \"./chat.js?vue&type=script&lang=js\"\n\nimport \"./chat.vue?vue&type=style&index=0&id=796d1749&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div>\n <div\n v-if=\"user\"\n class=\"user-profile panel panel-default\"\n >\n <UserCard\n :user-id=\"userId\"\n :switcher=\"true\"\n :selected=\"timeline.viewing\"\n avatar-action=\"zoom\"\n rounded=\"top\"\n :has-note-editor=\"true\"\n />\n <span\n v-if=\"!!user.birthday\"\n class=\"user-birthday\"\n >\n <FAIcon\n class=\"fa-old-padding\"\n icon=\"birthday-cake\"\n />\n {{ $t('user_card.birthday', { birthday: formattedBirthday }) }}\n </span>\n <div\n v-if=\"user.fields_html && user.fields_html.length > 0\"\n class=\"user-profile-fields\"\n >\n <dl\n v-for=\"(field, index) in user.fields_html\"\n :key=\"index\"\n class=\"user-profile-field\"\n >\n <dt\n :title=\"user.fields_text[index].name\"\n class=\"user-profile-field-name\"\n >\n <RichContent\n :html=\"field.name\"\n :emoji=\"user.emoji\"\n />\n </dt>\n <dd\n :title=\"user.fields_text[index].value\"\n class=\"user-profile-field-value\"\n >\n <RichContent\n :html=\"field.value\"\n :emoji=\"user.emoji\"\n />\n </dd>\n </dl>\n </div>\n <tab-switcher\n :active-tab=\"tab\"\n :render-only-focused=\"true\"\n :on-switch=\"onTabSwitch\"\n >\n <Timeline\n key=\"statuses\"\n :label=\"$t('user_card.statuses')\"\n :count=\"user.statuses_count\"\n :embedded=\"true\"\n :title=\"$t('user_profile.timeline_title')\"\n :timeline=\"timeline\"\n timeline-name=\"user\"\n :user-id=\"userId\"\n :pinned-status-ids=\"user.pinnedStatusIds\"\n :in-profile=\"true\"\n :footer-slipgate=\"footerRef\"\n />\n <div\n v-if=\"followsTabVisible\"\n key=\"followees\"\n :label=\"$t('user_card.followees')\"\n :disabled=\"!user.friends_count\"\n >\n <FriendList :user-id=\"userId\">\n <template #item=\"{item}\">\n <FollowCard :user=\"item\" />\n </template>\n </FriendList>\n </div>\n <div\n v-if=\"followersTabVisible\"\n key=\"followers\"\n :label=\"$t('user_card.followers')\"\n :disabled=\"!user.followers_count\"\n >\n <FollowerList :user-id=\"userId\">\n <template #item=\"{item}\">\n <FollowCard\n :user=\"item\"\n :no-follows-you=\"isUs\"\n />\n </template>\n </FollowerList>\n </div>\n <Timeline\n key=\"media\"\n :label=\"$t('user_card.media')\"\n :disabled=\"!media.visibleStatuses.length\"\n :embedded=\"true\"\n :title=\"$t('user_card.media')\"\n timeline-name=\"media\"\n :timeline=\"media\"\n :user-id=\"userId\"\n :in-profile=\"true\"\n :footer-slipgate=\"footerRef\"\n />\n <Timeline\n v-if=\"isUs\"\n key=\"favorites\"\n :label=\"$t('user_card.favorites')\"\n :disabled=\"!favorites.visibleStatuses.length\"\n :embedded=\"true\"\n :title=\"$t('user_card.favorites')\"\n timeline-name=\"favorites\"\n :timeline=\"favorites\"\n :in-profile=\"true\"\n :footer-slipgate=\"footerRef\"\n />\n </tab-switcher>\n <div\n :ref=\"setFooterRef\"\n class=\"panel-footer\"\n />\n </div>\n <div\n v-else\n class=\"panel user-profile-placeholder\"\n >\n <div class=\"panel-heading\">\n <div class=\"title\">\n {{ $t('settings.profile_tab') }}\n </div>\n </div>\n <div class=\"panel-body\">\n <span v-if=\"error\">{{ error }}</span>\n <FAIcon\n v-else\n spin\n icon=\"circle-notch\"\n />\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./user_profile.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.user-profile {\n flex: 2;\n flex-basis: 500px;\n\n // No sticky header on user profile\n --currentPanelStack: 1;\n\n .user-birthday {\n margin: 0 0.75em 0.5em;\n }\n\n .user-profile-fields {\n margin: 0 0.5em;\n\n img {\n object-fit: contain;\n vertical-align: middle;\n max-width: 100%;\n max-height: 400px;\n\n &.emoji {\n width: 18px;\n height: 18px;\n }\n }\n\n .user-profile-field {\n display: flex;\n margin: 0.25em;\n border: 1px solid var(--border, $fallback--border);\n border-radius: $fallback--inputRadius;\n border-radius: var(--inputRadius, $fallback--inputRadius);\n\n .user-profile-field-name {\n flex: 0 1 30%;\n font-weight: 500;\n text-align: right;\n color: var(--lightText);\n min-width: 120px;\n border-right: 1px solid var(--border, $fallback--border);\n }\n\n .user-profile-field-value {\n flex: 1 1 70%;\n color: var(--text);\n margin: 0 0 0 0.25em;\n }\n\n .user-profile-field-name,\n .user-profile-field-value {\n line-height: 1.3;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n padding: 0.5em 1.5em;\n box-sizing: border-box;\n }\n }\n }\n\n .userlist-placeholder {\n display: flex;\n justify-content: center;\n align-items: middle;\n padding: 2em;\n }\n}\n\n.user-profile-placeholder {\n .panel-body {\n display: flex;\n justify-content: center;\n align-items: middle;\n padding: 7em;\n }\n}\n</style>\n","<template>\n <basic-user-card :user=\"user\">\n <div class=\"follow-card-content-container\">\n <span\n v-if=\"isMe || (!noFollowsYou && relationship.followed_by)\"\n class=\"faint\"\n >\n {{ isMe ? $t('user_card.its_you') : $t('user_card.follows_you') }}\n </span>\n <template v-if=\"!loggedIn\">\n <div\n v-if=\"!relationship.following\"\n class=\"follow-card-follow-button\"\n >\n <RemoteFollow :user=\"user\" />\n </div>\n </template>\n <template v-else-if=\"!isMe\">\n <FollowButton\n :relationship=\"relationship\"\n :label-following=\"$t('user_card.follow_unfollow')\"\n class=\"follow-card-follow-button\"\n :user=\"user\"\n />\n <RemoveFollowerButton\n v-if=\"noFollowsYou && relationship.followed_by\"\n :user=\"user\"\n :relationship=\"relationship\"\n class=\"follow-card-button\"\n />\n </template>\n </div>\n </basic-user-card>\n</template>\n\n<script src=\"./follow_card.js\"></script>\n\n<style lang=\"scss\">\n.follow-card {\n &-content-container {\n flex-shrink: 0;\n display: flex;\n flex-flow: row wrap;\n justify-content: space-between;\n line-height: 1.5em;\n }\n\n &-button {\n margin-top: 0.5em;\n padding: 0 1.5em;\n margin-left: 1em;\n }\n\n &-follow-button {\n margin-top: 0.5em;\n margin-left: auto;\n width: 10em;\n }\n}\n</style>\n","import ConfirmModal from '../confirm_modal/confirm_modal.vue'\n\nexport default {\n props: ['user', 'relationship'],\n data () {\n return {\n inProgress: false,\n showingConfirmRemoveFollower: false\n }\n },\n components: {\n ConfirmModal\n },\n computed: {\n label () {\n if (this.inProgress) {\n return this.$t('user_card.follow_progress')\n } else {\n return this.$t('user_card.remove_follower')\n }\n },\n shouldConfirmRemoveUserFromFollowers () {\n return this.$store.getters.mergedConfig.modalOnRemoveUserFromFollowers\n }\n },\n methods: {\n showConfirmRemoveUserFromFollowers () {\n this.showingConfirmRemoveFollower = true\n },\n hideConfirmRemoveUserFromFollowers () {\n this.showingConfirmRemoveFollower = false\n },\n onClick () {\n if (!this.shouldConfirmRemoveUserFromFollowers) {\n this.doRemoveUserFromFollowers()\n } else {\n this.showConfirmRemoveUserFromFollowers()\n }\n },\n doRemoveUserFromFollowers () {\n this.inProgress = true\n this.$store.dispatch('removeUserFromFollowers', this.relationship.id).then(() => {\n this.inProgress = false\n })\n this.hideConfirmRemoveUserFromFollowers()\n }\n }\n}\n","import { render } from \"./remove_follower_button.vue?vue&type=template&id=bc80064a\"\nimport script from \"./remove_follower_button.js?vue&type=script&lang=js\"\nexport * from \"./remove_follower_button.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <button\n class=\"btn button-default follow-button\"\n :class=\"{ toggled: inProgress }\"\n :disabled=\"inProgress\"\n :title=\"$t('user_card.remove_follower')\"\n @click=\"onClick\"\n >\n {{ label }}\n <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingConfirmRemoveFollower\"\n :title=\"$t('user_card.remove_follower_confirm_title')\"\n :confirm-text=\"$t('user_card.remove_follower_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.remove_follower_confirm_cancel_button')\"\n @accepted=\"doRemoveUserFromFollowers\"\n @cancelled=\"hideConfirmRemoveUserFromFollowers\"\n >\n <i18n-t\n keypath=\"user_card.remove_follower_confirm\"\n tag=\"span\"\n >\n <template #user>\n <span\n v-text=\"user.screen_name_ui\"\n />\n </template>\n </i18n-t>\n </confirm-modal>\n </teleport>\n </button>\n</template>\n\n<script src=\"./remove_follower_button.js\"></script>\n","import BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport RemoteFollow from '../remote_follow/remote_follow.vue'\nimport FollowButton from '../follow_button/follow_button.vue'\nimport RemoveFollowerButton from '../remove_follower_button/remove_follower_button.vue'\n\nconst FollowCard = {\n props: [\n 'user',\n 'noFollowsYou'\n ],\n components: {\n BasicUserCard,\n RemoteFollow,\n FollowButton,\n RemoveFollowerButton\n },\n computed: {\n isMe () {\n return this.$store.state.users.currentUser.id === this.user.id\n },\n loggedIn () {\n return this.$store.state.users.currentUser\n },\n relationship () {\n return this.$store.getters.relationship(this.user.id)\n }\n }\n}\n\nexport default FollowCard\n","import { render } from \"./follow_card.vue?vue&type=template&id=e6b6839c\"\nimport script from \"./follow_card.js?vue&type=script&lang=js\"\nexport * from \"./follow_card.js?vue&type=script&lang=js\"\n\nimport \"./follow_card.vue?vue&type=style&index=0&id=e6b6839c&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// eslint-disable-next-line no-unused\nimport { h } from 'vue'\nimport isEmpty from 'lodash/isEmpty'\nimport { getComponentProps } from '../../services/component_utils/component_utils'\nimport './with_load_more.scss'\n\nimport { FontAwesomeIcon as FAIcon } from '@fortawesome/vue-fontawesome'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nconst withLoadMore = ({\n fetch, // function to fetch entries and return a promise\n select, // function to select data from store\n unmounted, // function called at \"destroyed\" lifecycle\n childPropName = 'entries', // name of the prop to be passed into the wrapped component\n additionalPropNames = [] // additional prop name list of the wrapper component\n}) => (WrappedComponent) => {\n const originalProps = Object.keys(getComponentProps(WrappedComponent))\n const props = originalProps.filter(v => v !== childPropName).concat(additionalPropNames)\n\n return {\n props,\n data () {\n return {\n loading: false,\n bottomedOut: false,\n error: false,\n entries: []\n }\n },\n created () {\n window.addEventListener('scroll', this.scrollLoad)\n if (this.entries.length === 0) {\n this.fetchEntries()\n }\n },\n unmounted () {\n window.removeEventListener('scroll', this.scrollLoad)\n unmounted && unmounted(this.$props, this.$store)\n },\n methods: {\n // Entries is not a computed because computed can't track the dynamic\n // selector for changes and won't trigger after fetch.\n updateEntries () {\n this.entries = select(this.$props, this.$store) || []\n },\n fetchEntries () {\n if (!this.loading) {\n this.loading = true\n this.error = false\n fetch(this.$props, this.$store)\n .then((newEntries) => {\n this.loading = false\n this.bottomedOut = isEmpty(newEntries)\n })\n .catch(() => {\n this.loading = false\n this.error = true\n })\n .finally(() => {\n this.updateEntries()\n })\n }\n },\n scrollLoad (e) {\n const bodyBRect = document.body.getBoundingClientRect()\n const height = Math.max(bodyBRect.height, -(bodyBRect.y))\n if (this.loading === false &&\n this.bottomedOut === false &&\n this.$el.offsetHeight > 0 &&\n (window.innerHeight + window.pageYOffset) >= (height - 750)\n ) {\n this.fetchEntries()\n }\n }\n },\n render () {\n const props = {\n ...this.$props,\n [childPropName]: this.entries\n }\n const children = this.$slots\n return (\n <div class=\"with-load-more\">\n <WrappedComponent {...props}>\n {children}\n </WrappedComponent>\n <div class=\"with-load-more-footer\">\n {this.error &&\n <button onClick={this.fetchEntries} class=\"button-unstyled -link -fullwidth alert error\">\n {this.$t('general.generic_error')}\n </button>\n }\n {!this.error && this.loading && <FAIcon spin icon=\"circle-notch\"/>}\n {!this.error && !this.loading && !this.bottomedOut && <a onClick={this.fetchEntries}>{this.$t('general.more')}</a>}\n </div>\n </div>\n )\n }\n }\n}\n\nexport default withLoadMore\n","import get from 'lodash/get'\nimport UserCard from '../user_card/user_card.vue'\nimport FollowCard from '../follow_card/follow_card.vue'\nimport Timeline from '../timeline/timeline.vue'\nimport Conversation from '../conversation/conversation.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport List from '../list/list.vue'\nimport withLoadMore from '../../hocs/with_load_more/with_load_more'\nimport localeService from 'src/services/locale/locale.service.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCircleNotch,\n faBirthdayCake\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch,\n faBirthdayCake\n)\n\nconst FollowerList = withLoadMore({\n fetch: (props, $store) => $store.dispatch('fetchFollowers', props.userId),\n select: (props, $store) => get($store.getters.findUser(props.userId), 'followerIds', []).map(id => $store.getters.findUser(id)),\n destroy: (props, $store) => $store.dispatch('clearFollowers', props.userId),\n childPropName: 'items',\n additionalPropNames: ['userId']\n})(List)\n\nconst FriendList = withLoadMore({\n fetch: (props, $store) => $store.dispatch('fetchFriends', props.userId),\n select: (props, $store) => get($store.getters.findUser(props.userId), 'friendIds', []).map(id => $store.getters.findUser(id)),\n destroy: (props, $store) => $store.dispatch('clearFriends', props.userId),\n childPropName: 'items',\n additionalPropNames: ['userId']\n})(List)\n\nconst defaultTabKey = 'statuses'\n\nconst UserProfile = {\n data () {\n return {\n error: false,\n userId: null,\n tab: defaultTabKey,\n footerRef: null\n }\n },\n created () {\n const routeParams = this.$route.params\n this.load({ name: routeParams.name, id: routeParams.id })\n this.tab = get(this.$route, 'query.tab', defaultTabKey)\n },\n unmounted () {\n this.stopFetching()\n },\n computed: {\n timeline () {\n return this.$store.state.statuses.timelines.user\n },\n favorites () {\n return this.$store.state.statuses.timelines.favorites\n },\n media () {\n return this.$store.state.statuses.timelines.media\n },\n isUs () {\n return this.userId && this.$store.state.users.currentUser.id &&\n this.userId === this.$store.state.users.currentUser.id\n },\n user () {\n return this.$store.getters.findUser(this.userId)\n },\n isExternal () {\n return this.$route.name === 'external-user-profile'\n },\n followsTabVisible () {\n return this.isUs || !this.user.hide_follows\n },\n followersTabVisible () {\n return this.isUs || !this.user.hide_followers\n },\n formattedBirthday () {\n const browserLocale = localeService.internalToBrowserLocale(this.$i18n.locale)\n return this.user.birthday && new Date(Date.parse(this.user.birthday)).toLocaleDateString(browserLocale, { timeZone: 'UTC', day: 'numeric', month: 'long', year: 'numeric' })\n }\n },\n methods: {\n setFooterRef (el) {\n this.footerRef = el\n },\n load (userNameOrId) {\n const startFetchingTimeline = (timeline, userId) => {\n // Clear timeline only if load another user's profile\n if (userId !== this.$store.state.statuses.timelines[timeline].userId) {\n this.$store.commit('clearTimeline', { timeline })\n }\n this.$store.dispatch('startFetchingTimeline', { timeline, userId })\n }\n\n const loadById = (userId) => {\n this.userId = userId\n startFetchingTimeline('user', userId)\n startFetchingTimeline('media', userId)\n if (this.isUs) {\n startFetchingTimeline('favorites', userId)\n }\n // Fetch all pinned statuses immediately\n this.$store.dispatch('fetchPinnedStatuses', userId)\n }\n\n // Reset view\n this.userId = null\n this.error = false\n\n const maybeId = userNameOrId.id\n const maybeName = userNameOrId.name\n\n // Check if user data is already loaded in store\n const user = maybeId ? this.$store.getters.findUser(maybeId) : this.$store.getters.findUserByName(maybeName)\n if (user) {\n loadById(user.id)\n } else {\n (maybeId\n ? this.$store.dispatch('fetchUser', maybeId)\n : this.$store.dispatch('fetchUserByName', maybeName))\n .then(({ id }) => loadById(id))\n .catch((reason) => {\n const errorMessage = get(reason, 'error.error')\n if (errorMessage === 'No user with such user_id') { // Known error\n this.error = this.$t('user_profile.profile_does_not_exist')\n } else if (errorMessage) {\n this.error = errorMessage\n } else {\n this.error = this.$t('user_profile.profile_loading_error')\n }\n })\n }\n },\n stopFetching () {\n this.$store.dispatch('stopFetchingTimeline', 'user')\n this.$store.dispatch('stopFetchingTimeline', 'favorites')\n this.$store.dispatch('stopFetchingTimeline', 'media')\n },\n switchUser (userNameOrId) {\n this.stopFetching()\n this.load(userNameOrId)\n },\n onTabSwitch (tab) {\n this.tab = tab\n this.$router.replace({ query: { tab } })\n },\n linkClicked ({ target }) {\n if (target.tagName === 'SPAN') {\n target = target.parentNode\n }\n if (target.tagName === 'A') {\n window.open(target.href, '_blank')\n }\n }\n },\n watch: {\n '$route.params.id': function (newVal) {\n if (newVal) {\n this.switchUser({ id: newVal })\n }\n },\n '$route.params.name': function (newVal) {\n if (newVal) {\n this.switchUser({ name: newVal })\n }\n },\n '$route.query': function (newVal) {\n this.tab = newVal.tab || defaultTabKey\n }\n },\n components: {\n UserCard,\n Timeline,\n FollowerList,\n FriendList,\n FollowCard,\n TabSwitcher,\n Conversation,\n RichContent\n }\n}\n\nexport default UserProfile\n","import { render } from \"./user_profile.vue?vue&type=template&id=3af4c11e\"\nimport script from \"./user_profile.js?vue&type=script&lang=js\"\nexport * from \"./user_profile.js?vue&type=script&lang=js\"\n\nimport \"./user_profile.vue?vue&type=style&index=0&id=3af4c11e&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"panel panel-default\">\n <div class=\"panel-heading\">\n <div class=\"title\">\n {{ $t('nav.search') }}\n </div>\n </div>\n <div class=\"search-input-container\">\n <input\n ref=\"searchInput\"\n v-model=\"searchTerm\"\n class=\"search-input\"\n :placeholder=\"$t('nav.search')\"\n @keyup.enter=\"newQuery(searchTerm)\"\n >\n <button\n class=\"btn button-default search-button\"\n type=\"submit\"\n @click=\"newQuery(searchTerm)\"\n >\n <FAIcon icon=\"search\" />\n </button>\n </div>\n <div\n v-if=\"loading && statusesOffset == 0\"\n class=\"text-center loading-icon\"\n >\n <FAIcon\n icon=\"circle-notch\"\n spin\n size=\"lg\"\n />\n </div>\n <div v-else-if=\"loaded\">\n <div class=\"search-nav-heading\">\n <tab-switcher\n ref=\"tabSwitcher\"\n :on-switch=\"onResultTabSwitch\"\n :active-tab=\"currenResultTab\"\n >\n <span\n key=\"statuses\"\n :label=\"$t('user_card.statuses') + resultCount('visibleStatuses')\"\n />\n <span\n key=\"people\"\n :label=\"$t('search.people') + resultCount('users')\"\n />\n <span\n key=\"hashtags\"\n :label=\"$t('search.hashtags') + resultCount('hashtags')\"\n />\n </tab-switcher>\n </div>\n </div>\n <div class=\"panel-body\">\n <div v-if=\"currenResultTab === 'statuses'\">\n <Status\n v-for=\"status in visibleStatuses\"\n :key=\"status.id\"\n :collapsable=\"false\"\n :expandable=\"false\"\n :compact=\"false\"\n class=\"search-result\"\n :statusoid=\"status\"\n :no-heading=\"false\"\n />\n <button\n v-if=\"!loading && loaded && lastStatusFetchCount > 0\"\n class=\"more-statuses-button button-unstyled -link -fullwidth\"\n @click.prevent=\"search(searchTerm, 'statuses')\"\n >\n <div class=\"new-status-notification text-center\">\n {{ $t('search.load_more') }}\n </div>\n </button>\n <div\n v-else-if=\"loading && statusesOffset > 0\"\n class=\"text-center loading-icon\"\n >\n <FAIcon\n icon=\"circle-notch\"\n spin\n size=\"lg\"\n />\n </div>\n <div\n v-if=\"(visibleStatuses.length === 0 || lastStatusFetchCount === 0) && !loading && loaded\"\n class=\"search-result-heading\"\n >\n <h4>\n {{ visibleStatuses.length === 0 ? $t('search.no_results') : $t('search.no_more_results') }}\n </h4>\n </div>\n </div>\n <div v-else-if=\"currenResultTab === 'people'\">\n <div\n v-if=\"users.length === 0 && !loading && loaded\"\n class=\"search-result-heading\"\n >\n <h4>{{ $t('search.no_results') }}</h4>\n </div>\n <FollowCard\n v-for=\"user in users\"\n :key=\"user.id\"\n :user=\"user\"\n class=\"list-item search-result\"\n />\n </div>\n <div v-else-if=\"currenResultTab === 'hashtags'\">\n <div\n v-if=\"hashtags.length === 0 && !loading && loaded\"\n class=\"search-result-heading\"\n >\n <h4>{{ $t('search.no_results') }}</h4>\n </div>\n <div\n v-for=\"hashtag in hashtags\"\n :key=\"hashtag.url\"\n class=\"status trend search-result\"\n >\n <div class=\"hashtag\">\n <router-link :to=\"{ name: 'tag-timeline', params: { tag: hashtag.name } }\">\n #{{ hashtag.name }}\n </router-link>\n <div v-if=\"lastHistoryRecord(hashtag)\">\n <span v-if=\"lastHistoryRecord(hashtag).accounts == 1\">\n {{ $t('search.person_talking', { count: lastHistoryRecord(hashtag).accounts }) }}\n </span>\n <span v-else>\n {{ $t('search.people_talking', { count: lastHistoryRecord(hashtag).accounts }) }}\n </span>\n </div>\n </div>\n <div\n v-if=\"lastHistoryRecord(hashtag)\"\n class=\"count\"\n >\n {{ lastHistoryRecord(hashtag).uses }}\n </div>\n </div>\n </div>\n </div>\n <div class=\"search-result-footer text-center panel-footer faint\" />\n </div>\n</template>\n\n<script src=\"./search.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.search-result-heading {\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n padding: 0.75rem;\n text-align: center;\n}\n\n@media all and (max-width: 800px) {\n .search-nav-heading {\n .tab-switcher .tabs .tab-wrapper {\n display: block;\n justify-content: center;\n flex: 1 1 auto;\n text-align: center;\n }\n }\n}\n\n.search-result {\n box-sizing: border-box;\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n}\n\n.search-result-footer {\n border-width: 1px 0 0;\n border-style: solid;\n border-color: var(--border, $fallback--border);\n padding: 10px;\n background-color: $fallback--fg;\n background-color: var(--panel, $fallback--fg);\n}\n\n.search-input-container {\n padding: 0.8rem;\n display: flex;\n justify-content: center;\n\n .search-input {\n width: 100%;\n line-height: 1.125rem;\n font-size: 1rem;\n padding: 0.5rem;\n box-sizing: border-box;\n }\n\n .search-button {\n margin-left: 0.5em;\n }\n}\n\n.loading-icon {\n padding: 1em;\n}\n\n.trend {\n display: flex;\n align-items: center;\n\n .hashtag {\n flex: 1 1 auto;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .count {\n flex: 0 0 auto;\n width: 2rem;\n font-size: 1.5rem;\n line-height: 2.25rem;\n font-weight: 500;\n text-align: center;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n}\n\n.more-statuses-button {\n height: 3.5em;\n line-height: 3.5em;\n}\n\n</style>\n","import FollowCard from '../follow_card/follow_card.vue'\nimport Conversation from '../conversation/conversation.vue'\nimport Status from '../status/status.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\nimport map from 'lodash/map'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCircleNotch,\n faSearch\n} from '@fortawesome/free-solid-svg-icons'\nimport { uniqBy } from 'lodash'\n\nlibrary.add(\n faCircleNotch,\n faSearch\n)\n\nconst Search = {\n components: {\n FollowCard,\n Conversation,\n Status,\n TabSwitcher\n },\n props: [\n 'query'\n ],\n data () {\n return {\n loaded: false,\n loading: false,\n searchTerm: this.query || '',\n userIds: [],\n statuses: [],\n hashtags: [],\n currenResultTab: 'statuses',\n\n statusesOffset: 0,\n lastStatusFetchCount: 0,\n lastQuery: ''\n }\n },\n computed: {\n users () {\n return this.userIds.map(userId => this.$store.getters.findUser(userId))\n },\n visibleStatuses () {\n const allStatusesObject = this.$store.state.statuses.allStatusesObject\n\n return this.statuses.filter(status =>\n allStatusesObject[status.id] && !allStatusesObject[status.id].deleted\n )\n }\n },\n mounted () {\n this.search(this.query)\n },\n watch: {\n query (newValue) {\n this.searchTerm = newValue\n this.search(newValue)\n }\n },\n methods: {\n newQuery (query) {\n this.$router.push({ name: 'search', query: { query } })\n this.$refs.searchInput.focus()\n },\n search (query, searchType = null) {\n if (!query) {\n this.loading = false\n return\n }\n\n this.loading = true\n this.$refs.searchInput.blur()\n if (this.lastQuery !== query) {\n this.userIds = []\n this.hashtags = []\n this.statuses = []\n\n this.statusesOffset = 0\n this.lastStatusFetchCount = 0\n }\n\n this.$store.dispatch('search', { q: query, resolve: true, offset: this.statusesOffset, type: searchType })\n .then(data => {\n this.loading = false\n\n const oldLength = this.statuses.length\n\n // Always append to old results. If new results are empty, this doesn't change anything\n this.userIds = this.userIds.concat(map(data.accounts, 'id'))\n this.statuses = uniqBy(this.statuses.concat(data.statuses), 'id')\n this.hashtags = this.hashtags.concat(data.hashtags)\n\n this.currenResultTab = this.getActiveTab()\n this.loaded = true\n\n // Offset from whatever we already have\n this.statusesOffset = this.statuses.length\n // Because the amount of new statuses can actually be zero, compare to old lenght instead\n this.lastStatusFetchCount = this.statuses.length - oldLength\n this.lastQuery = query\n })\n },\n resultCount (tabName) {\n const length = this[tabName].length\n return length === 0 ? '' : ` (${length})`\n },\n onResultTabSwitch (key) {\n this.currenResultTab = key\n },\n getActiveTab () {\n if (this.visibleStatuses.length > 0) {\n return 'statuses'\n } else if (this.users.length > 0) {\n return 'people'\n } else if (this.hashtags.length > 0) {\n return 'hashtags'\n }\n\n return 'statuses'\n },\n lastHistoryRecord (hashtag) {\n return hashtag.history && hashtag.history[0]\n }\n }\n}\n\nexport default Search\n","import { render } from \"./search.vue?vue&type=template&id=29ec17bc\"\nimport script from \"./search.js?vue&type=script&lang=js\"\nexport * from \"./search.js?vue&type=script&lang=js\"\n\nimport \"./search.vue?vue&type=style&index=0&id=29ec17bc&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"settings panel panel-default\">\n <div class=\"panel-heading\">\n {{ $t('registration.registration') }}\n </div>\n <div class=\"panel-body\">\n <form\n class=\"registration-form\"\n @submit.prevent=\"submit(user)\"\n >\n <div class=\"container\">\n <div class=\"text-fields\">\n <div\n class=\"form-group\"\n :class=\"{ 'form-group--error': v$.user.username.$error }\"\n >\n <label\n class=\"form--label\"\n for=\"sign-up-username\"\n >{{ $t('login.username') }}</label>\n <input\n id=\"sign-up-username\"\n v-model.trim=\"v$.user.username.$model\"\n :disabled=\"isPending\"\n class=\"form-control\"\n :aria-required=\"true\"\n :placeholder=\"$t('registration.username_placeholder')\"\n >\n </div>\n <div\n v-if=\"v$.user.username.$dirty\"\n class=\"form-error\"\n >\n <ul>\n <li v-if=\"!v$.user.username.required\">\n <span>{{ $t('registration.validations.username_required') }}</span>\n </li>\n </ul>\n </div>\n\n <div\n class=\"form-group\"\n :class=\"{ 'form-group--error': v$.user.fullname.$error }\"\n >\n <label\n class=\"form--label\"\n for=\"sign-up-fullname\"\n >{{ $t('registration.fullname') }}</label>\n <input\n id=\"sign-up-fullname\"\n v-model.trim=\"v$.user.fullname.$model\"\n :disabled=\"isPending\"\n class=\"form-control\"\n :aria-required=\"true\"\n :placeholder=\"$t('registration.fullname_placeholder')\"\n >\n </div>\n <div\n v-if=\"v$.user.fullname.$dirty\"\n class=\"form-error\"\n >\n <ul>\n <li v-if=\"!v$.user.fullname.required\">\n <span>{{ $t('registration.validations.fullname_required') }}</span>\n </li>\n </ul>\n </div>\n\n <div\n class=\"form-group\"\n :class=\"{ 'form-group--error': v$.user.email.$error }\"\n >\n <label\n class=\"form--label\"\n for=\"email\"\n >{{ accountActivationRequired ? $t('registration.email') : $t('registration.email_optional') }}</label>\n <input\n id=\"email\"\n v-model=\"v$.user.email.$model\"\n :disabled=\"isPending\"\n class=\"form-control\"\n type=\"email\"\n :aria-required=\"accountActivationRequired\"\n >\n </div>\n <div\n v-if=\"v$.user.email.$dirty\"\n class=\"form-error\"\n >\n <ul>\n <li v-if=\"!v$.user.email.required\">\n <span>{{ $t('registration.validations.email_required') }}</span>\n </li>\n </ul>\n </div>\n\n <div class=\"form-group\">\n <label\n class=\"form--label\"\n for=\"bio\"\n >{{ $t('registration.bio_optional') }}</label>\n <textarea\n id=\"bio\"\n v-model=\"user.bio\"\n :disabled=\"isPending\"\n class=\"form-control\"\n :placeholder=\"bioPlaceholder\"\n />\n </div>\n\n <div\n class=\"form-group\"\n :class=\"{ 'form-group--error': v$.user.password.$error }\"\n >\n <label\n class=\"form--label\"\n for=\"sign-up-password\"\n >{{ $t('login.password') }}</label>\n <input\n id=\"sign-up-password\"\n v-model=\"user.password\"\n :disabled=\"isPending\"\n class=\"form-control\"\n type=\"password\"\n :aria-required=\"true\"\n >\n </div>\n <div\n v-if=\"v$.user.password.$dirty\"\n class=\"form-error\"\n >\n <ul>\n <li v-if=\"!v$.user.password.required\">\n <span>{{ $t('registration.validations.password_required') }}</span>\n </li>\n </ul>\n </div>\n\n <div\n class=\"form-group\"\n :class=\"{ 'form-group--error': v$.user.confirm.$error }\"\n >\n <label\n class=\"form--label\"\n for=\"sign-up-password-confirmation\"\n >{{ $t('registration.password_confirm') }}</label>\n <input\n id=\"sign-up-password-confirmation\"\n v-model=\"user.confirm\"\n :disabled=\"isPending\"\n class=\"form-control\"\n type=\"password\"\n :aria-required=\"true\"\n >\n </div>\n <div\n v-if=\"v$.user.confirm.$dirty\"\n class=\"form-error\"\n >\n <ul>\n <li v-if=\"v$.user.confirm.required.$invalid\">\n <span>{{ $t('registration.validations.password_confirmation_required') }}</span>\n </li>\n <li v-if=\"v$.user.confirm.sameAs.$invalid\">\n <span>{{ $t('registration.validations.password_confirmation_match') }}</span>\n </li>\n </ul>\n </div>\n\n <div\n class=\"form-group\"\n :class=\"{ 'form-group--error': v$.user.birthday.$error }\"\n >\n <label\n class=\"form--label\"\n for=\"sign-up-birthday\"\n >\n {{ birthdayRequired ? $t('registration.birthday') : $t('registration.birthday_optional') }}\n </label>\n <input\n id=\"sign-up-birthday\"\n v-model=\"user.birthday\"\n :disabled=\"isPending\"\n class=\"form-control\"\n type=\"date\"\n :max=\"birthdayRequired ? birthdayMinAttr : undefined\"\n :aria-required=\"birthdayRequired\"\n >\n </div>\n <div\n v-if=\"v$.user.birthday.$dirty\"\n class=\"form-error\"\n >\n <ul>\n <li v-if=\"v$.user.birthday.required.$invalid\">\n <span>{{ $t('registration.validations.birthday_required') }}</span>\n </li>\n <li v-if=\"v$.user.birthday.maxValue.$invalid\">\n <span>{{ $tc('registration.validations.birthday_min_age', { date: birthdayMinFormatted }) }}</span>\n </li>\n </ul>\n </div>\n\n <div\n class=\"form-group\"\n :class=\"{ 'form-group--error': v$.user.language.$error }\"\n >\n <interface-language-switcher\n for=\"email-language\"\n :prompt-text=\"$t('registration.email_language')\"\n :language=\"v$.user.language.$model\"\n :set-language=\"val => v$.user.language.$model = val\"\n @click.stop.prevent\n />\n </div>\n\n <div\n v-if=\"accountApprovalRequired\"\n class=\"form-group\"\n >\n <label\n class=\"form--label\"\n for=\"reason\"\n >{{ $t('registration.reason') }}</label>\n <textarea\n id=\"reason\"\n v-model=\"user.reason\"\n :disabled=\"isPending\"\n class=\"form-control\"\n :placeholder=\"reasonPlaceholder\"\n />\n </div>\n\n <div\n v-if=\"captcha.type != 'none'\"\n id=\"captcha-group\"\n class=\"form-group\"\n >\n <label\n class=\"form--label\"\n for=\"captcha-label\"\n >{{ $t('registration.captcha') }}</label>\n\n <template v-if=\"['kocaptcha', 'native'].includes(captcha.type)\">\n <img\n :src=\"captcha.url\"\n @click=\"setCaptcha\"\n >\n\n <sub>{{ $t('registration.new_captcha') }}</sub>\n\n <input\n id=\"captcha-answer\"\n v-model=\"captcha.solution\"\n :disabled=\"isPending\"\n class=\"form-control\"\n type=\"text\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n >\n </template>\n </div>\n\n <div\n v-if=\"token\"\n class=\"form-group\"\n >\n <label for=\"token\">{{ $t('registration.token') }}</label>\n <input\n id=\"token\"\n v-model=\"token\"\n disabled=\"true\"\n class=\"form-control\"\n type=\"text\"\n >\n </div>\n <div class=\"form-group\">\n <button\n :disabled=\"isPending\"\n type=\"submit\"\n class=\"btn button-default\"\n >\n {{ $t('registration.register') }}\n </button>\n </div>\n </div>\n\n <!-- eslint-disable vue/no-v-html -->\n <div\n class=\"terms-of-service\"\n v-html=\"termsOfService\"\n />\n <!-- eslint-enable vue/no-v-html -->\n </div>\n <div\n v-if=\"serverValidationErrors.length\"\n class=\"form-group\"\n >\n <div class=\"alert error\">\n <span\n v-for=\"error in serverValidationErrors\"\n :key=\"error\"\n >{{ error }}</span>\n </div>\n </div>\n </form>\n </div>\n </div>\n</template>\n\n<script src=\"./registration.js\"></script>\n<style lang=\"scss\">\n@import \"../../variables\";\n$validations-cRed: #f04124;\n\n.registration-form {\n display: flex;\n flex-direction: column;\n margin: 0.6em;\n\n .container {\n display: flex;\n flex-direction: row;\n\n > * {\n min-width: 0;\n }\n }\n\n .terms-of-service {\n flex: 0 1 50%;\n margin: 0.8em;\n }\n\n .text-fields {\n margin-top: 0.6em;\n flex: 1 0;\n display: flex;\n flex-direction: column;\n }\n\n textarea {\n min-height: 100px;\n resize: vertical;\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n padding: 0.3em 0;\n line-height: 2;\n margin-bottom: 1em;\n }\n\n .form-group--error {\n animation-name: shakeError;\n animation-duration: 0.6s;\n animation-timing-function: ease-in-out;\n }\n\n .form-group--error .form--label {\n color: $validations-cRed;\n color: var(--cRed, $validations-cRed);\n }\n\n .form-error {\n margin-top: -0.7em;\n text-align: left;\n\n span {\n font-size: 0.85em;\n }\n }\n\n .form-error ul {\n list-style: none;\n padding: 0 0 0 5px;\n margin-top: 0;\n\n li::before {\n content: \"• \";\n }\n }\n\n form textarea {\n line-height: 16px;\n resize: vertical;\n }\n\n .captcha {\n max-width: 350px;\n margin-bottom: 0.4em;\n }\n\n .btn {\n margin-top: 0.6em;\n height: 2em;\n }\n\n .error {\n text-align: center;\n }\n}\n\n@media all and (max-width: 800px) {\n .registration-form .container {\n flex-direction: column-reverse;\n }\n}\n</style>\n","import useVuelidate from '@vuelidate/core'\nimport { required, requiredIf, sameAs } from '@vuelidate/validators'\nimport { mapActions, mapState } from 'vuex'\nimport InterfaceLanguageSwitcher from '../interface_language_switcher/interface_language_switcher.vue'\nimport localeService from '../../services/locale/locale.service.js'\nimport { DAY } from 'src/services/date_utils/date_utils.js'\n\nconst registration = {\n setup () { return { v$: useVuelidate() } },\n data: () => ({\n user: {\n email: '',\n fullname: '',\n username: '',\n password: '',\n confirm: '',\n birthday: '',\n reason: '',\n language: ['']\n },\n captcha: {}\n }),\n components: {\n InterfaceLanguageSwitcher\n },\n validations () {\n return {\n user: {\n email: { required: requiredIf(() => this.accountActivationRequired) },\n username: { required },\n fullname: { required },\n password: { required },\n confirm: {\n required,\n sameAs: sameAs(this.user.password)\n },\n birthday: {\n required: requiredIf(() => this.birthdayRequired),\n maxValue: value => {\n return !this.birthdayRequired || new Date(value).getTime() <= this.birthdayMin.getTime()\n }\n },\n reason: { required: requiredIf(() => this.accountApprovalRequired) },\n language: {}\n }\n }\n },\n created () {\n if ((!this.registrationOpen && !this.token) || this.signedIn) {\n this.$router.push({ name: 'root' })\n }\n\n this.setCaptcha()\n },\n computed: {\n token () { return this.$route.params.token },\n bioPlaceholder () {\n return this.replaceNewlines(this.$t('registration.bio_placeholder'))\n },\n reasonPlaceholder () {\n return this.replaceNewlines(this.$t('registration.reason_placeholder'))\n },\n birthdayMin () {\n const minAge = this.birthdayMinAge\n const today = new Date()\n today.setUTCMilliseconds(0)\n today.setUTCSeconds(0)\n today.setUTCMinutes(0)\n today.setUTCHours(0)\n const minDate = new Date()\n minDate.setTime(today.getTime() - minAge * DAY)\n return minDate\n },\n birthdayMinAttr () {\n return this.birthdayMin.toJSON().replace(/T.+$/, '')\n },\n birthdayMinFormatted () {\n const browserLocale = localeService.internalToBrowserLocale(this.$i18n.locale)\n return this.user.birthday && new Date(Date.parse(this.birthdayMin)).toLocaleDateString(browserLocale, { timeZone: 'UTC', day: 'numeric', month: 'long', year: 'numeric' })\n },\n ...mapState({\n registrationOpen: (state) => state.instance.registrationOpen,\n signedIn: (state) => !!state.users.currentUser,\n isPending: (state) => state.users.signUpPending,\n serverValidationErrors: (state) => state.users.signUpErrors,\n termsOfService: (state) => state.instance.tos,\n accountActivationRequired: (state) => state.instance.accountActivationRequired,\n accountApprovalRequired: (state) => state.instance.accountApprovalRequired,\n birthdayRequired: (state) => state.instance.birthdayRequired,\n birthdayMinAge: (state) => state.instance.birthdayMinAge\n })\n },\n methods: {\n ...mapActions(['signUp', 'getCaptcha']),\n async submit () {\n this.user.nickname = this.user.username\n this.user.token = this.token\n\n this.user.captcha_solution = this.captcha.solution\n this.user.captcha_token = this.captcha.token\n this.user.captcha_answer_data = this.captcha.answer_data\n if (this.user.language) {\n this.user.language = localeService.internalToBackendLocaleMulti(this.user.language.filter(k => k))\n }\n\n this.v$.$touch()\n\n if (!this.v$.$invalid) {\n try {\n await this.signUp(this.user)\n this.$router.push({ name: 'friends' })\n } catch (error) {\n console.warn('Registration failed: ', error)\n this.setCaptcha()\n }\n }\n },\n setCaptcha () {\n this.getCaptcha().then(cpt => { this.captcha = cpt })\n },\n replaceNewlines (str) {\n return str.replace(/\\s*\\n\\s*/g, ' \\n')\n }\n }\n}\n\nexport default registration\n","import { render } from \"./registration.vue?vue&type=template&id=f9488ca2\"\nimport script from \"./registration.js?vue&type=script&lang=js\"\nexport * from \"./registration.js?vue&type=script&lang=js\"\n\nimport \"./registration.vue?vue&type=style&index=0&id=f9488ca2&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"settings panel panel-default\">\n <div class=\"panel-heading\">\n {{ $t('password_reset.password_reset') }}\n </div>\n <div class=\"panel-body\">\n <form\n class=\"password-reset-form\"\n @submit.prevent=\"submit\"\n >\n <div class=\"container\">\n <div v-if=\"!mailerEnabled\">\n <p v-if=\"passwordResetRequested\">\n {{ $t('password_reset.password_reset_required_but_mailer_is_disabled') }}\n </p>\n <p v-else>\n {{ $t('password_reset.password_reset_disabled') }}\n </p>\n </div>\n <div v-else-if=\"success || throttled\">\n <p v-if=\"success\">\n {{ $t('password_reset.check_email') }}\n </p>\n <div class=\"form-group text-center\">\n <router-link :to=\"{name: 'root'}\">\n {{ $t('password_reset.return_home') }}\n </router-link>\n </div>\n </div>\n <div v-else>\n <p\n v-if=\"passwordResetRequested\"\n class=\"password-reset-required error\"\n >\n {{ $t('password_reset.password_reset_required') }}\n </p>\n <p>\n {{ $t('password_reset.instruction') }}\n </p>\n <div class=\"form-group\">\n <input\n ref=\"email\"\n v-model=\"user.email\"\n :disabled=\"isPending\"\n :placeholder=\"$t('password_reset.placeholder')\"\n class=\"form-control\"\n type=\"input\"\n >\n </div>\n <div class=\"form-group\">\n <button\n :disabled=\"isPending\"\n type=\"submit\"\n class=\"btn button-default btn-block\"\n >\n {{ $t('settings.save') }}\n </button>\n </div>\n </div>\n <p\n v-if=\"error\"\n class=\"alert error notice-dismissible\"\n >\n <span>{{ error }}</span>\n <a\n class=\"fa-scale-110 fa-old-padding dismiss\"\n @click.prevent=\"dismissError()\"\n >\n <FAIcon icon=\"times\" />\n </a>\n </p>\n </div>\n </form>\n </div>\n </div>\n</template>\n\n<script src=\"./password_reset.js\"></script>\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.password-reset-form {\n display: flex;\n flex-direction: column;\n align-items: center;\n margin: 0.6em;\n\n .container {\n display: flex;\n flex: 1 0;\n flex-direction: column;\n margin-top: 0.6em;\n max-width: 18rem;\n\n > * {\n min-width: 0;\n }\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n margin-bottom: 1em;\n padding: 0.3em 0;\n line-height: 1.85em;\n }\n\n .error {\n text-align: center;\n animation-name: shakeError;\n animation-duration: 0.4s;\n animation-timing-function: ease-in-out;\n }\n\n .alert {\n padding: 0.5em;\n margin: 0.3em 0 1em;\n }\n\n .password-reset-required {\n background-color: var(--alertError, $fallback--alertError);\n padding: 10px 0;\n }\n\n .notice-dismissible {\n padding-right: 2rem;\n }\n\n .dismiss {\n cursor: pointer;\n }\n}\n\n</style>\n","import { mapState } from 'vuex'\nimport passwordResetApi from '../../services/new_api/password_reset.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nconst passwordReset = {\n data: () => ({\n user: {\n email: ''\n },\n isPending: false,\n success: false,\n throttled: false,\n error: null\n }),\n computed: {\n ...mapState({\n signedIn: (state) => !!state.users.currentUser,\n instance: state => state.instance\n }),\n mailerEnabled () {\n return this.instance.mailerEnabled\n }\n },\n created () {\n if (this.signedIn) {\n this.$router.push({ name: 'root' })\n }\n },\n props: {\n passwordResetRequested: {\n default: false,\n type: Boolean\n }\n },\n methods: {\n dismissError () {\n this.error = null\n },\n submit () {\n this.isPending = true\n const email = this.user.email\n const instance = this.instance.server\n\n passwordResetApi({ instance, email }).then(({ status }) => {\n this.isPending = false\n this.user.email = ''\n\n if (status === 204) {\n this.success = true\n this.error = null\n } else if (status === 429) {\n this.throttled = true\n this.error = this.$t('password_reset.too_many_requests')\n }\n }).catch(() => {\n this.isPending = false\n this.user.email = ''\n this.error = this.$t('general.generic_error')\n })\n }\n }\n}\n\nexport default passwordReset\n","import { reduce } from 'lodash'\n\nconst MASTODON_PASSWORD_RESET_URL = '/auth/password'\n\nconst resetPassword = ({ instance, email }) => {\n const params = { email }\n const query = reduce(params, (acc, v, k) => {\n const encoded = `${k}=${encodeURIComponent(v)}`\n return `${acc}&${encoded}`\n }, '')\n const url = `${instance}${MASTODON_PASSWORD_RESET_URL}?${query}`\n\n return window.fetch(url, {\n method: 'POST'\n })\n}\n\nexport default resetPassword\n","import { render } from \"./password_reset.vue?vue&type=template&id=0a88ea38\"\nimport script from \"./password_reset.js?vue&type=script&lang=js\"\nexport * from \"./password_reset.js?vue&type=script&lang=js\"\n\nimport \"./password_reset.vue?vue&type=style&index=0&id=0a88ea38&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"settings panel panel-default\">\n <div class=\"panel-heading\">\n <div class=\"title\">\n {{ $t('nav.friend_requests') }}\n </div>\n </div>\n <div class=\"panel-body\">\n <FollowRequestCard\n v-for=\"request in requests\"\n :key=\"request.id\"\n :user=\"request\"\n class=\"list-item\"\n />\n </div>\n </div>\n</template>\n\n<script src=\"./follow_requests.js\"></script>\n","<template>\n <basic-user-card :user=\"user\">\n <div class=\"follow-request-card-content-container\">\n <button\n class=\"btn button-default\"\n @click=\"approveUser\"\n >\n {{ $t('user_card.approve') }}\n </button>\n <button\n class=\"btn button-default\"\n @click=\"denyUser\"\n >\n {{ $t('user_card.deny') }}\n </button>\n </div>\n <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingApproveConfirmDialog\"\n :title=\"$t('user_card.approve_confirm_title')\"\n :confirm-text=\"$t('user_card.approve_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.approve_confirm_cancel_button')\"\n @accepted=\"doApprove\"\n @cancelled=\"hideApproveConfirmDialog\"\n >\n {{ $t('user_card.approve_confirm', { user: user.screen_name_ui }) }}\n </confirm-modal>\n <confirm-modal\n v-if=\"showingDenyConfirmDialog\"\n :title=\"$t('user_card.deny_confirm_title')\"\n :confirm-text=\"$t('user_card.deny_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.deny_confirm_cancel_button')\"\n @accepted=\"doDeny\"\n @cancelled=\"hideDenyConfirmDialog\"\n >\n {{ $t('user_card.deny_confirm', { user: user.screen_name_ui }) }}\n </confirm-modal>\n </teleport>\n </basic-user-card>\n</template>\n\n<script src=\"./follow_request_card.js\"></script>\n\n<style lang=\"scss\">\n.follow-request-card-content-container {\n display: flex;\n flex-flow: row wrap;\n\n button {\n margin-top: 0.5em;\n margin-right: 0.5em;\n flex: 1 1;\n max-width: 12em;\n min-width: 8em;\n\n &:last-child {\n margin-right: 0;\n }\n }\n}\n</style>\n","import BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport ConfirmModal from '../confirm_modal/confirm_modal.vue'\nimport { notificationsFromStore } from '../../services/notification_utils/notification_utils.js'\n\nconst FollowRequestCard = {\n props: ['user'],\n components: {\n BasicUserCard,\n ConfirmModal\n },\n data () {\n return {\n showingApproveConfirmDialog: false,\n showingDenyConfirmDialog: false\n }\n },\n methods: {\n findFollowRequestNotificationId () {\n const notif = notificationsFromStore(this.$store).find(\n (notif) => notif.from_profile.id === this.user.id && notif.type === 'follow_request'\n )\n return notif && notif.id\n },\n showApproveConfirmDialog () {\n this.showingApproveConfirmDialog = true\n },\n hideApproveConfirmDialog () {\n this.showingApproveConfirmDialog = false\n },\n showDenyConfirmDialog () {\n this.showingDenyConfirmDialog = true\n },\n hideDenyConfirmDialog () {\n this.showingDenyConfirmDialog = false\n },\n approveUser () {\n if (this.shouldConfirmApprove) {\n this.showApproveConfirmDialog()\n } else {\n this.doApprove()\n }\n },\n doApprove () {\n this.$store.state.api.backendInteractor.approveUser({ id: this.user.id })\n this.$store.dispatch('removeFollowRequest', this.user)\n\n const notifId = this.findFollowRequestNotificationId()\n this.$store.dispatch('markSingleNotificationAsSeen', { id: notifId })\n this.$store.dispatch('updateNotification', {\n id: notifId,\n updater: notification => {\n notification.type = 'follow'\n }\n })\n this.hideApproveConfirmDialog()\n },\n denyUser () {\n if (this.shouldConfirmDeny) {\n this.showDenyConfirmDialog()\n } else {\n this.doDeny()\n }\n },\n doDeny () {\n const notifId = this.findFollowRequestNotificationId()\n this.$store.state.api.backendInteractor.denyUser({ id: this.user.id })\n .then(() => {\n this.$store.dispatch('dismissNotificationLocal', { id: notifId })\n this.$store.dispatch('removeFollowRequest', this.user)\n })\n this.hideDenyConfirmDialog()\n }\n },\n computed: {\n mergedConfig () {\n return this.$store.getters.mergedConfig\n },\n shouldConfirmApprove () {\n return this.mergedConfig.modalOnApproveFollow\n },\n shouldConfirmDeny () {\n return this.mergedConfig.modalOnDenyFollow\n }\n }\n}\n\nexport default FollowRequestCard\n","import FollowRequestCard from '../follow_request_card/follow_request_card.vue'\n\nconst FollowRequests = {\n components: {\n FollowRequestCard\n },\n computed: {\n requests () {\n return this.$store.state.api.followRequests\n }\n }\n}\n\nexport default FollowRequests\n","import { render } from \"./follow_request_card.vue?vue&type=template&id=3bb26ea8\"\nimport script from \"./follow_request_card.js?vue&type=script&lang=js\"\nexport * from \"./follow_request_card.js?vue&type=script&lang=js\"\n\nimport \"./follow_request_card.vue?vue&type=style&index=0&id=3bb26ea8&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./follow_requests.vue?vue&type=template&id=62e19784\"\nimport script from \"./follow_requests.js?vue&type=script&lang=js\"\nexport * from \"./follow_requests.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import oauth from '../../services/new_api/oauth.js'\n\nconst oac = {\n props: ['code'],\n mounted () {\n if (this.code) {\n const { clientId, clientSecret } = this.$store.state.oauth\n\n oauth.getToken({\n clientId,\n clientSecret,\n instance: this.$store.state.instance.server,\n code: this.code\n }).then((result) => {\n this.$store.commit('setToken', result.access_token)\n this.$store.dispatch('loginUser', result.access_token)\n this.$router.push({ name: 'friends' })\n })\n }\n }\n}\n\nexport default oac\n","import { render } from \"./oauth_callback.vue?vue&type=template&id=f514124c\"\nimport script from \"./oauth_callback.js?vue&type=script&lang=js\"\nexport * from \"./oauth_callback.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <h1>...</h1>\n</template>\n\n<script src=\"./oauth_callback.js\"></script>\n","<template>\n <div class=\"panel panel-default\">\n <div class=\"panel-heading\">\n {{ $t('who_to_follow.who_to_follow') }}\n </div>\n <div class=\"panel-body\">\n <FollowCard\n v-for=\"user in users\"\n :key=\"user.id\"\n :user=\"user\"\n class=\"list-item\"\n />\n </div>\n </div>\n</template>\n\n<script src=\"./who_to_follow.js\"></script>\n","import apiService from '../../services/api/api.service.js'\nimport FollowCard from '../follow_card/follow_card.vue'\n\nconst WhoToFollow = {\n components: {\n FollowCard\n },\n data () {\n return {\n users: []\n }\n },\n mounted () {\n this.getWhoToFollow()\n },\n methods: {\n showWhoToFollow (reply) {\n reply.forEach((i, index) => {\n this.$store.state.api.backendInteractor.fetchUser({ id: i.acct })\n .then((externalUser) => {\n if (!externalUser.error) {\n this.$store.commit('addNewUsers', [externalUser])\n this.users.push(externalUser)\n }\n })\n })\n },\n getWhoToFollow () {\n const credentials = this.$store.state.users.currentUser.credentials\n if (credentials) {\n apiService.suggestions({ credentials })\n .then((reply) => {\n this.showWhoToFollow(reply)\n })\n }\n }\n }\n}\n\nexport default WhoToFollow\n","import { render } from \"./who_to_follow.vue?vue&type=template&id=1d38a2c8\"\nimport script from \"./who_to_follow.js?vue&type=script&lang=js\"\nexport * from \"./who_to_follow.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"column-inner\">\n <instance-specific-panel v-if=\"showInstanceSpecificPanel\" />\n <staff-panel />\n <terms-of-service-panel />\n <MRFTransparencyPanel />\n <features-panel v-if=\"showFeaturesPanel\" />\n </div>\n</template>\n\n<script src=\"./about.js\"></script>\n","<template>\n <div>\n <div class=\"panel panel-default\">\n <div class=\"panel-body\">\n <!-- eslint-disable vue/no-v-html -->\n <div\n class=\"tos-content\"\n v-html=\"content\"\n />\n <!-- eslint-enable vue/no-v-html -->\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./terms_of_service_panel.js\"></script>\n\n<style lang=\"scss\">\n.tos-content {\n margin: 1em;\n}\n</style>\n","const TermsOfServicePanel = {\n computed: {\n content () {\n return this.$store.state.instance.tos\n }\n }\n}\n\nexport default TermsOfServicePanel\n","import { render } from \"./terms_of_service_panel.vue?vue&type=template&id=22763f84\"\nimport script from \"./terms_of_service_panel.js?vue&type=script&lang=js\"\nexport * from \"./terms_of_service_panel.js?vue&type=script&lang=js\"\n\nimport \"./terms_of_service_panel.vue?vue&type=style&index=0&id=22763f84&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"staff-panel\">\n <div class=\"panel panel-default base01-background\">\n <div class=\"panel-heading timeline-heading base02-background\">\n <div class=\"title\">\n {{ $t(\"about.staff\") }}\n </div>\n </div>\n <div class=\"panel-body\">\n <div\n v-for=\"group in groupedStaffAccounts\"\n :key=\"group.role\"\n class=\"staff-group\"\n >\n <h4>{{ $t('general.role.' + group.role) }}</h4>\n <basic-user-card\n v-for=\"user in group.users\"\n :key=\"user.screen_name\"\n :user=\"user\"\n />\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./staff_panel.js\"></script>\n\n<style lang=\"scss\">\n.staff-group {\n padding-left: 1em;\n padding-top: 1em;\n\n .basic-user-card {\n padding-left: 0;\n }\n}\n\n</style>\n","import map from 'lodash/map'\nimport groupBy from 'lodash/groupBy'\nimport { mapGetters, mapState } from 'vuex'\nimport BasicUserCard from '../basic_user_card/basic_user_card.vue'\n\nconst StaffPanel = {\n created () {\n const nicknames = this.$store.state.instance.staffAccounts\n nicknames.forEach(nickname => this.$store.dispatch('fetchUserIfMissing', nickname))\n },\n components: {\n BasicUserCard\n },\n computed: {\n groupedStaffAccounts () {\n const staffAccounts = map(this.staffAccounts, this.findUserByName).filter(_ => _)\n const groupedStaffAccounts = groupBy(staffAccounts, 'role')\n\n return [\n { role: 'admin', users: groupedStaffAccounts.admin },\n { role: 'moderator', users: groupedStaffAccounts.moderator }\n ].filter(group => group.users)\n },\n ...mapGetters([\n 'findUserByName'\n ]),\n ...mapState({\n staffAccounts: state => state.instance.staffAccounts\n })\n }\n}\n\nexport default StaffPanel\n","import { render } from \"./staff_panel.vue?vue&type=template&id=56c37220\"\nimport script from \"./staff_panel.js?vue&type=script&lang=js\"\nexport * from \"./staff_panel.js?vue&type=script&lang=js\"\n\nimport \"./staff_panel.vue?vue&type=style&index=0&id=56c37220&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n v-if=\"federationPolicy\"\n class=\"mrf-transparency-panel\"\n >\n <div class=\"panel panel-default base01-background\">\n <div class=\"panel-heading timeline-heading base02-background\">\n <div class=\"title\">\n {{ $t(\"about.mrf.federation\") }}\n </div>\n </div>\n <div class=\"panel-body\">\n <div class=\"mrf-section\">\n <h2>{{ $t(\"about.mrf.mrf_policies\") }}</h2>\n <p>{{ $t(\"about.mrf.mrf_policies_desc\") }}</p>\n\n <ul>\n <li\n v-for=\"policy in mrfPolicies\"\n :key=\"policy\"\n v-text=\"policy\"\n />\n </ul>\n\n <h2 v-if=\"hasInstanceSpecificPolicies\">\n {{ $t(\"about.mrf.simple.simple_policies\") }}\n </h2>\n\n <div v-if=\"acceptInstances.length\">\n <h4>{{ $t(\"about.mrf.simple.accept\") }}</h4>\n\n <p>{{ $t(\"about.mrf.simple.accept_desc\") }}</p>\n\n <table>\n <tr>\n <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n </tr>\n <tr\n v-for=\"entry in acceptInstances\"\n :key=\"entry.instance + '_accept'\"\n >\n <td>{{ entry.instance }}</td>\n <td v-if=\"entry.reason === ''\">\n {{ $t(\"about.mrf.simple.not_applicable\") }}\n </td>\n <td v-else>\n {{ entry.reason }}\n </td>\n </tr>\n </table>\n </div>\n\n <div v-if=\"rejectInstances.length\">\n <h4>{{ $t(\"about.mrf.simple.reject\") }}</h4>\n\n <p>{{ $t(\"about.mrf.simple.reject_desc\") }}</p>\n\n <table>\n <tr>\n <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n </tr>\n <tr\n v-for=\"entry in rejectInstances\"\n :key=\"entry.instance + '_reject'\"\n >\n <td>{{ entry.instance }}</td>\n <td v-if=\"entry.reason === ''\">\n {{ $t(\"about.mrf.simple.not_applicable\") }}\n </td>\n <td v-else>\n {{ entry.reason }}\n </td>\n </tr>\n </table>\n </div>\n\n <div v-if=\"quarantineInstances.length\">\n <h4>{{ $t(\"about.mrf.simple.quarantine\") }}</h4>\n\n <p>{{ $t(\"about.mrf.simple.quarantine_desc\") }}</p>\n\n <table>\n <tr>\n <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n </tr>\n <tr\n v-for=\"entry in quarantineInstances\"\n :key=\"entry.instance + '_quarantine'\"\n >\n <td>{{ entry.instance }}</td>\n <td v-if=\"entry.reason === ''\">\n {{ $t(\"about.mrf.simple.not_applicable\") }}\n </td>\n <td v-else>\n {{ entry.reason }}\n </td>\n </tr>\n </table>\n </div>\n\n <div v-if=\"ftlRemovalInstances.length\">\n <h4>{{ $t(\"about.mrf.simple.ftl_removal\") }}</h4>\n\n <p>{{ $t(\"about.mrf.simple.ftl_removal_desc\") }}</p>\n\n <table>\n <tr>\n <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n </tr>\n <tr\n v-for=\"entry in ftlRemovalInstances\"\n :key=\"entry.instance + '_ftl_removal'\"\n >\n <td>{{ entry.instance }}</td>\n <td v-if=\"entry.reason === ''\">\n {{ $t(\"about.mrf.simple.not_applicable\") }}\n </td>\n <td v-else>\n {{ entry.reason }}\n </td>\n </tr>\n </table>\n </div>\n\n <div v-if=\"mediaNsfwInstances.length\">\n <h4>{{ $t(\"about.mrf.simple.media_nsfw\") }}</h4>\n\n <p>{{ $t(\"about.mrf.simple.media_nsfw_desc\") }}</p>\n\n <table>\n <tr>\n <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n </tr>\n <tr\n v-for=\"entry in mediaNsfwInstances\"\n :key=\"entry.instance + '_media_nsfw'\"\n >\n <td>{{ entry.instance }}</td>\n <td v-if=\"entry.reason === ''\">\n {{ $t(\"about.mrf.simple.not_applicable\") }}\n </td>\n <td v-else>\n {{ entry.reason }}\n </td>\n </tr>\n </table>\n </div>\n\n <div v-if=\"mediaRemovalInstances.length\">\n <h4>{{ $t(\"about.mrf.simple.media_removal\") }}</h4>\n\n <p>{{ $t(\"about.mrf.simple.media_removal_desc\") }}</p>\n\n <table>\n <tr>\n <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n </tr>\n <tr\n v-for=\"entry in mediaRemovalInstances\"\n :key=\"entry.instance + '_media_removal'\"\n >\n <td>{{ entry.instance }}</td>\n <td v-if=\"entry.reason === ''\">\n {{ $t(\"about.mrf.simple.not_applicable\") }}\n </td>\n <td v-else>\n {{ entry.reason }}\n </td>\n </tr>\n </table>\n </div>\n\n <h2 v-if=\"hasKeywordPolicies\">\n {{ $t(\"about.mrf.keyword.keyword_policies\") }}\n </h2>\n\n <div v-if=\"keywordsFtlRemoval.length\">\n <h4>{{ $t(\"about.mrf.keyword.ftl_removal\") }}</h4>\n\n <ul>\n <li\n v-for=\"keyword in keywordsFtlRemoval\"\n :key=\"keyword\"\n v-text=\"keyword\"\n />\n </ul>\n </div>\n\n <div v-if=\"keywordsReject.length\">\n <h4>{{ $t(\"about.mrf.keyword.reject\") }}</h4>\n\n <ul>\n <li\n v-for=\"keyword in keywordsReject\"\n :key=\"keyword\"\n v-text=\"keyword\"\n />\n </ul>\n </div>\n\n <div v-if=\"keywordsReplace.length\">\n <h4>{{ $t(\"about.mrf.keyword.replace\") }}</h4>\n\n <ul>\n <li\n v-for=\"keyword in keywordsReplace\"\n :key=\"keyword\"\n >\n {{ keyword.pattern }}\n {{ $t(\"about.mrf.keyword.is_replaced_by\") }}\n {{ keyword.replacement }}\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./mrf_transparency_panel.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n@import \"./mrf_transparency_panel\";\n</style>\n","import { mapState } from 'vuex'\nimport { get } from 'lodash'\n\n/**\n * This is for backwards compatibility. We originally didn't recieve\n * extra info like a reason why an instance was rejected/quarantined/etc.\n * Because we didn't want to break backwards compatibility it was decided\n * to add an extra \"info\" key.\n */\nconst toInstanceReasonObject = (instances, info, key) => {\n return instances.map(instance => {\n if (info[key] && info[key][instance] && info[key][instance].reason) {\n return { instance, reason: info[key][instance].reason }\n }\n return { instance, reason: '' }\n })\n}\n\nconst MRFTransparencyPanel = {\n computed: {\n ...mapState({\n federationPolicy: state => get(state, 'instance.federationPolicy'),\n mrfPolicies: state => get(state, 'instance.federationPolicy.mrf_policies', []),\n quarantineInstances: state => toInstanceReasonObject(\n get(state, 'instance.federationPolicy.quarantined_instances', []),\n get(state, 'instance.federationPolicy.quarantined_instances_info', []),\n 'quarantined_instances'\n ),\n acceptInstances: state => toInstanceReasonObject(\n get(state, 'instance.federationPolicy.mrf_simple.accept', []),\n get(state, 'instance.federationPolicy.mrf_simple_info', []),\n 'accept'\n ),\n rejectInstances: state => toInstanceReasonObject(\n get(state, 'instance.federationPolicy.mrf_simple.reject', []),\n get(state, 'instance.federationPolicy.mrf_simple_info', []),\n 'reject'\n ),\n ftlRemovalInstances: state => toInstanceReasonObject(\n get(state, 'instance.federationPolicy.mrf_simple.federated_timeline_removal', []),\n get(state, 'instance.federationPolicy.mrf_simple_info', []),\n 'federated_timeline_removal'\n ),\n mediaNsfwInstances: state => toInstanceReasonObject(\n get(state, 'instance.federationPolicy.mrf_simple.media_nsfw', []),\n get(state, 'instance.federationPolicy.mrf_simple_info', []),\n 'media_nsfw'\n ),\n mediaRemovalInstances: state => toInstanceReasonObject(\n get(state, 'instance.federationPolicy.mrf_simple.media_removal', []),\n get(state, 'instance.federationPolicy.mrf_simple_info', []),\n 'media_removal'\n ),\n keywordsFtlRemoval: state => get(state, 'instance.federationPolicy.mrf_keyword.federated_timeline_removal', []),\n keywordsReject: state => get(state, 'instance.federationPolicy.mrf_keyword.reject', []),\n keywordsReplace: state => get(state, 'instance.federationPolicy.mrf_keyword.replace', [])\n }),\n hasInstanceSpecificPolicies () {\n return this.quarantineInstances.length ||\n this.acceptInstances.length ||\n this.rejectInstances.length ||\n this.ftlRemovalInstances.length ||\n this.mediaNsfwInstances.length ||\n this.mediaRemovalInstances.length\n },\n hasKeywordPolicies () {\n return this.keywordsFtlRemoval.length ||\n this.keywordsReject.length ||\n this.keywordsReplace.length\n }\n }\n}\n\nexport default MRFTransparencyPanel\n","import InstanceSpecificPanel from '../instance_specific_panel/instance_specific_panel.vue'\nimport FeaturesPanel from '../features_panel/features_panel.vue'\nimport TermsOfServicePanel from '../terms_of_service_panel/terms_of_service_panel.vue'\nimport StaffPanel from '../staff_panel/staff_panel.vue'\nimport MRFTransparencyPanel from '../mrf_transparency_panel/mrf_transparency_panel.vue'\n\nconst About = {\n components: {\n InstanceSpecificPanel,\n FeaturesPanel,\n TermsOfServicePanel,\n StaffPanel,\n MRFTransparencyPanel\n },\n computed: {\n showFeaturesPanel () { return this.$store.state.instance.showFeaturesPanel },\n showInstanceSpecificPanel () {\n return this.$store.state.instance.showInstanceSpecificPanel &&\n !this.$store.getters.mergedConfig.hideISP &&\n this.$store.state.instance.instanceSpecificPanelContent\n }\n }\n}\n\nexport default About\n","import { render } from \"./mrf_transparency_panel.vue?vue&type=template&id=67a05c5c\"\nimport script from \"./mrf_transparency_panel.js?vue&type=script&lang=js\"\nexport * from \"./mrf_transparency_panel.js?vue&type=script&lang=js\"\n\nimport \"./mrf_transparency_panel.vue?vue&type=style&index=0&id=67a05c5c&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./about.vue?vue&type=template&id=4d996902\"\nimport script from \"./about.js?vue&type=script&lang=js\"\nexport * from \"./about.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"panel panel-default\">\n <div class=\"panel-heading\">\n {{ $t('remote_user_resolver.remote_user_resolver') }}\n </div>\n <div class=\"panel-body\">\n <p>\n {{ $t('remote_user_resolver.searching_for') }} @{{ $route.params.username }}@{{ $route.params.hostname }}\n </p>\n <p v-if=\"error\">\n {{ $t('remote_user_resolver.error') }}\n </p>\n </div>\n </div>\n</template>\n\n<script src=\"./remote_user_resolver.js\"></script>\n","const RemoteUserResolver = {\n data: () => ({\n error: false\n }),\n mounted () {\n this.redirect()\n },\n methods: {\n redirect () {\n const acct = this.$route.params.username + '@' + this.$route.params.hostname\n this.$store.state.api.backendInteractor.fetchUser({ id: acct })\n .then((externalUser) => {\n if (externalUser.error) {\n this.error = true\n } else {\n this.$store.commit('addNewUsers', [externalUser])\n const id = externalUser.id\n this.$router.replace({\n name: 'external-user-profile',\n params: { id }\n })\n }\n })\n .catch(() => {\n this.error = true\n })\n }\n }\n}\n\nexport default RemoteUserResolver\n","import { render } from \"./remote_user_resolver.vue?vue&type=template&id=147deeb8\"\nimport script from \"./remote_user_resolver.js?vue&type=script&lang=js\"\nexport * from \"./remote_user_resolver.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"Lists panel panel-default\">\n <div class=\"panel-heading\">\n <div class=\"title\">\n {{ $t('lists.lists') }}\n </div>\n <router-link\n :to=\"{ name: 'lists-new' }\"\n class=\"button-default btn new-list-button\"\n >\n {{ $t(\"lists.new\") }}\n </router-link>\n </div>\n <div class=\"panel-body\">\n <ListsCard\n v-for=\"list in lists.slice().reverse()\"\n :key=\"list\"\n :list=\"list\"\n class=\"list-item\"\n />\n </div>\n </div>\n</template>\n\n<script src=\"./lists.js\"></script>\n\n<style lang=\"scss\">\n.Lists {\n .new-list-button {\n padding: 0 0.5em;\n }\n}\n</style>\n","<template>\n <div class=\"list-card\">\n <router-link\n :to=\"{ name: 'lists-timeline', params: { id: list.id } }\"\n class=\"list-name\"\n >\n {{ list.title }}\n </router-link>\n <router-link\n :to=\"{ name: 'lists-edit', params: { id: list.id } }\"\n class=\"button-list-edit\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"ellipsis-h\"\n />\n </router-link>\n </div>\n</template>\n\n<script src=\"./lists_card.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.list-card {\n display: flex;\n}\n\n.list-name {\n flex-grow: 1;\n}\n\n.list-name,\n.button-list-edit {\n margin: 0;\n padding: 1em;\n color: $fallback--link;\n color: var(--link, $fallback--link);\n\n &:hover {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: $fallback--link;\n color: var(--selectedMenuText, $fallback--link);\n\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faEllipsisH\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faEllipsisH\n)\n\nconst ListsCard = {\n props: [\n 'list'\n ]\n}\n\nexport default ListsCard\n","import ListsCard from '../lists_card/lists_card.vue'\n\nconst Lists = {\n data () {\n return {\n isNew: false\n }\n },\n components: {\n ListsCard\n },\n computed: {\n lists () {\n return this.$store.state.lists.allLists\n }\n },\n methods: {\n cancelNewList () {\n this.isNew = false\n },\n newList () {\n this.isNew = true\n }\n }\n}\n\nexport default Lists\n","import { render } from \"./lists_card.vue?vue&type=template&id=cb7330aa\"\nimport script from \"./lists_card.js?vue&type=script&lang=js\"\nexport * from \"./lists_card.js?vue&type=script&lang=js\"\n\nimport \"./lists_card.vue?vue&type=style&index=0&id=cb7330aa&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./lists.vue?vue&type=template&id=273aca3d\"\nimport script from \"./lists.js?vue&type=script&lang=js\"\nexport * from \"./lists.js?vue&type=script&lang=js\"\n\nimport \"./lists.vue?vue&type=style&index=0&id=273aca3d&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Timeline from '../timeline/timeline.vue'\nconst ListsTimeline = {\n data () {\n return {\n listId: null\n }\n },\n components: {\n Timeline\n },\n computed: {\n timeline () { return this.$store.state.statuses.timelines.list }\n },\n watch: {\n $route: function (route) {\n if (route.name === 'lists-timeline' && route.params.id !== this.listId) {\n this.listId = route.params.id\n this.$store.dispatch('stopFetchingTimeline', 'list')\n this.$store.commit('clearTimeline', { timeline: 'list' })\n this.$store.dispatch('fetchList', { listId: this.listId })\n this.$store.dispatch('startFetchingTimeline', { timeline: 'list', listId: this.listId })\n }\n }\n },\n created () {\n this.listId = this.$route.params.id\n this.$store.dispatch('fetchList', { listId: this.listId })\n this.$store.dispatch('startFetchingTimeline', { timeline: 'list', listId: this.listId })\n },\n unmounted () {\n this.$store.dispatch('stopFetchingTimeline', 'list')\n this.$store.commit('clearTimeline', { timeline: 'list' })\n }\n}\n\nexport default ListsTimeline\n","import { render } from \"./lists_timeline.vue?vue&type=template&id=464584d8\"\nimport script from \"./lists_timeline.js?vue&type=script&lang=js\"\nexport * from \"./lists_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Timeline\n title=\"list.name\"\n :timeline=\"timeline\"\n :list-id=\"listId\"\n timeline-name=\"list\"\n />\n</template>\n\n<script src=\"./lists_timeline.js\"></script>\n","<template>\n <div class=\"panel-default panel ListEdit\">\n <div\n ref=\"header\"\n class=\"panel-heading list-edit-heading\"\n >\n <button\n class=\"button-unstyled go-back-button\"\n @click=\"$router.back\"\n >\n <FAIcon\n size=\"lg\"\n icon=\"chevron-left\"\n />\n </button>\n <div class=\"title\">\n <i18n-t\n v-if=\"id\"\n keypath=\"lists.editing_list\"\n >\n <template #listTitle>\n {{ title }}\n </template>\n </i18n-t>\n <i18n-t\n v-else\n keypath=\"lists.creating_list\"\n />\n </div>\n </div>\n <div class=\"panel-body\">\n <div class=\"input-wrap\">\n <label for=\"list-edit-title\">{{ $t('lists.title') }}</label>\n {{ ' ' }}\n <input\n id=\"list-edit-title\"\n ref=\"title\"\n v-model=\"titleDraft\"\n >\n <button\n v-if=\"id\"\n class=\"btn button-default follow-button\"\n @click=\"updateListTitle\"\n >\n {{ $t('lists.update_title') }}\n </button>\n </div>\n <tab-switcher\n class=\"list-member-management\"\n :scrollable-tabs=\"true\"\n >\n <div\n v-if=\"id || addedUserIds.size > 0\"\n :label=\"$t('lists.manage_members')\"\n class=\"members-list\"\n >\n <div class=\"users-list\">\n <div\n v-for=\"user in membersUsers\"\n :key=\"user.id\"\n class=\"member\"\n >\n <BasicUserCard\n :user=\"user\"\n >\n <button\n class=\"btn button-default follow-button\"\n @click=\"toggleRemoveMember(user)\"\n >\n {{ isRemoved(user) ? $t('general.undo') : $t('lists.remove_from_list') }}\n </button>\n </BasicUserCard>\n </div>\n </div>\n </div>\n\n <div\n class=\"search-list\"\n :label=\"$t('lists.add_members')\"\n >\n <ListsUserSearch\n @results=\"onSearchResults\"\n @loading=\"onSearchLoading\"\n @loadingDone=\"onSearchLoadingDone\"\n />\n <div\n v-if=\"searchLoading\"\n class=\"loading\"\n >\n <PanelLoading />\n </div>\n <div\n v-else\n class=\"users-list\"\n >\n <div\n v-for=\"user in searchUsers\"\n :key=\"user.id\"\n class=\"member\"\n >\n <BasicUserCard\n :user=\"user\"\n >\n <span\n v-if=\"membersUserIds.includes(user.id)\"\n >\n {{ $t('lists.is_in_list') }}\n </span>\n <button\n v-if=\"!membersUserIds.includes(user.id)\"\n class=\"btn button-default follow-button\"\n @click=\"toggleAddFromSearch(user)\"\n >\n {{ isAdded(user) ? $t('general.undo') : $t('lists.add_to_list') }}\n </button>\n <button\n v-else\n class=\"btn button-default follow-button\"\n @click=\"toggleRemoveMember(user)\"\n >\n {{ isRemoved(user) ? $t('general.undo') : $t('lists.remove_from_list') }}\n </button>\n </BasicUserCard>\n </div>\n </div>\n </div>\n </tab-switcher>\n </div>\n <div class=\"panel-footer\">\n <span class=\"spacer\" />\n <button\n v-if=\"!id\"\n class=\"btn button-default footer-button\"\n @click=\"createList\"\n >\n {{ $t('lists.create') }}\n </button>\n <button\n v-else-if=\"!reallyDelete\"\n class=\"btn button-default footer-button\"\n @click=\"reallyDelete = true\"\n >\n {{ $t('lists.delete') }}\n </button>\n <template v-else>\n {{ $t('lists.really_delete') }}\n <button\n class=\"btn button-default footer-button\"\n @click=\"deleteList\"\n >\n {{ $t('general.yes') }}\n </button>\n <button\n class=\"btn button-default footer-button\"\n @click=\"reallyDelete = false\"\n >\n {{ $t('general.no') }}\n </button>\n </template>\n </div>\n </div>\n</template>\n\n<script src=\"./lists_edit.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.ListEdit {\n --panel-body-padding: 0.5em;\n\n height: calc(100vh - var(--navbar-height));\n overflow: hidden;\n display: flex;\n flex-direction: column;\n\n .list-edit-heading {\n grid-template-columns: auto minmax(50%, 1fr);\n }\n\n .panel-body {\n display: flex;\n flex: 1;\n flex-direction: column;\n overflow: hidden;\n }\n\n .list-member-management {\n flex: 1 0 auto;\n }\n\n .search-icon {\n margin-right: 0.3em;\n }\n\n .users-list {\n padding-bottom: 0.7rem;\n overflow-y: auto;\n }\n\n & .search-list,\n & .members-list {\n overflow: hidden;\n flex-direction: column;\n min-height: 0;\n }\n\n .go-back-button {\n text-align: center;\n line-height: 1;\n height: 100%;\n align-self: start;\n width: var(--__panel-heading-height-inner);\n }\n\n .btn {\n margin: 0 0.5em;\n }\n\n .panel-footer {\n grid-template-columns: minmax(10%, 1fr);\n\n .footer-button {\n min-width: 9em;\n }\n }\n}\n</style>\n","<template>\n <div class=\"ListsUserSearch\">\n <div class=\"input-wrap\">\n <div class=\"input-search\">\n <FAIcon\n class=\"search-icon fa-scale-110 fa-old-padding\"\n icon=\"search\"\n />\n </div>\n <input\n ref=\"search\"\n v-model=\"query\"\n :placeholder=\"$t('lists.search')\"\n @input=\"onInput\"\n >\n </div>\n <div class=\"input-wrap\">\n <Checkbox\n v-model=\"followingOnly\"\n @change=\"onInput\"\n >\n {{ $t('lists.following_only') }}\n </Checkbox>\n </div>\n </div>\n</template>\n\n<script src=\"./lists_user_search.js\"></script>\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.ListsUserSearch {\n .input-wrap {\n display: flex;\n margin: 0.7em 0.5em;\n\n input {\n width: 100%;\n }\n }\n\n .search-icon {\n margin-right: 0.3em;\n }\n}\n\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSearch,\n faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\nimport { debounce } from 'lodash'\nimport Checkbox from '../checkbox/checkbox.vue'\n\nlibrary.add(\n faSearch,\n faChevronLeft\n)\n\nconst ListsUserSearch = {\n components: {\n Checkbox\n },\n emits: ['loading', 'loadingDone', 'results'],\n data () {\n return {\n loading: false,\n query: '',\n followingOnly: true\n }\n },\n methods: {\n onInput: debounce(function () {\n this.search(this.query)\n }, 2000),\n search (query) {\n if (!query) {\n this.loading = false\n return\n }\n\n this.loading = true\n this.$emit('loading')\n this.userIds = []\n this.$store.dispatch('search', { q: query, resolve: true, type: 'accounts', following: this.followingOnly })\n .then(data => {\n this.$emit('results', data.accounts.map(a => a.id))\n })\n .finally(() => {\n this.loading = false\n this.$emit('loadingDone')\n })\n }\n }\n}\n\nexport default ListsUserSearch\n","import { render } from \"./lists_user_search.vue?vue&type=template&id=f65a8ae4\"\nimport script from \"./lists_user_search.js?vue&type=script&lang=js\"\nexport * from \"./lists_user_search.js?vue&type=script&lang=js\"\n\nimport \"./lists_user_search.vue?vue&type=style&index=0&id=f65a8ae4&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { mapState, mapGetters } from 'vuex'\nimport BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport ListsUserSearch from '../lists_user_search/lists_user_search.vue'\nimport PanelLoading from 'src/components/panel_loading/panel_loading.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSearch,\n faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faSearch,\n faChevronLeft\n)\n\nconst ListsNew = {\n components: {\n BasicUserCard,\n UserAvatar,\n ListsUserSearch,\n TabSwitcher,\n PanelLoading\n },\n data () {\n return {\n title: '',\n titleDraft: '',\n membersUserIds: [],\n removedUserIds: new Set([]), // users we added for members, to undo\n searchUserIds: [],\n addedUserIds: new Set([]), // users we added from search, to undo\n searchLoading: false,\n reallyDelete: false\n }\n },\n created () {\n if (!this.id) return\n this.$store.dispatch('fetchList', { listId: this.id })\n .then(() => {\n this.title = this.findListTitle(this.id)\n this.titleDraft = this.title\n })\n this.$store.dispatch('fetchListAccounts', { listId: this.id })\n .then(() => {\n this.membersUserIds = this.findListAccounts(this.id)\n this.membersUserIds.forEach(userId => {\n this.$store.dispatch('fetchUserIfMissing', userId)\n })\n })\n },\n computed: {\n id () {\n return this.$route.params.id\n },\n membersUsers () {\n return [...this.membersUserIds, ...this.addedUserIds]\n .map(userId => this.findUser(userId)).filter(user => user)\n },\n searchUsers () {\n return this.searchUserIds.map(userId => this.findUser(userId)).filter(user => user)\n },\n ...mapState({\n currentUser: state => state.users.currentUser\n }),\n ...mapGetters(['findUser', 'findListTitle', 'findListAccounts'])\n },\n methods: {\n onInput () {\n this.search(this.query)\n },\n toggleRemoveMember (user) {\n if (this.removedUserIds.has(user.id)) {\n this.id && this.addUser(user)\n this.removedUserIds.delete(user.id)\n } else {\n this.id && this.removeUser(user.id)\n this.removedUserIds.add(user.id)\n }\n },\n toggleAddFromSearch (user) {\n if (this.addedUserIds.has(user.id)) {\n this.id && this.removeUser(user.id)\n this.addedUserIds.delete(user.id)\n } else {\n this.id && this.addUser(user)\n this.addedUserIds.add(user.id)\n }\n },\n isRemoved (user) {\n return this.removedUserIds.has(user.id)\n },\n isAdded (user) {\n return this.addedUserIds.has(user.id)\n },\n addUser (user) {\n this.$store.dispatch('addListAccount', { accountId: user.id, listId: this.id })\n },\n removeUser (userId) {\n this.$store.dispatch('removeListAccount', { accountId: userId, listId: this.id })\n },\n onSearchLoading (results) {\n this.searchLoading = true\n },\n onSearchLoadingDone (results) {\n this.searchLoading = false\n },\n onSearchResults (results) {\n this.searchLoading = false\n this.searchUserIds = results\n },\n updateListTitle () {\n this.$store.dispatch('setList', { listId: this.id, title: this.titleDraft })\n .then(() => {\n this.title = this.findListTitle(this.id)\n })\n },\n createList () {\n this.$store.dispatch('createList', { title: this.titleDraft })\n .then((list) => {\n return this\n .$store\n .dispatch('setListAccounts', { listId: list.id, accountIds: [...this.addedUserIds] })\n .then(() => list.id)\n })\n .then((listId) => {\n this.$router.push({ name: 'lists-timeline', params: { id: listId } })\n })\n .catch((e) => {\n this.$store.dispatch('pushGlobalNotice', {\n messageKey: 'lists.error',\n messageArgs: [e.message],\n level: 'error'\n })\n })\n },\n deleteList () {\n this.$store.dispatch('deleteList', { listId: this.id })\n this.$router.push({ name: 'lists' })\n }\n }\n}\n\nexport default ListsNew\n","import { render } from \"./lists_edit.vue?vue&type=template&id=722535f4\"\nimport script from \"./lists_edit.js?vue&type=script&lang=js\"\nexport * from \"./lists_edit.js?vue&type=script&lang=js\"\n\nimport \"./lists_edit.vue?vue&type=style&index=0&id=722535f4&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"panel panel-default announcements-page\">\n <div class=\"panel-heading\">\n <span>\n {{ $t('announcements.page_header') }}\n </span>\n </div>\n <div class=\"panel-body\">\n <section\n v-if=\"canPostAnnouncement\"\n >\n <div class=\"post-form\">\n <div class=\"heading\">\n <h4>{{ $t('announcements.post_form_header') }}</h4>\n </div>\n <div class=\"body\">\n <announcement-editor\n :announcement=\"newAnnouncement\"\n :disabled=\"posting\"\n />\n </div>\n <div class=\"footer\">\n <button\n class=\"btn button-default post-button\"\n :disabled=\"posting\"\n @click.prevent=\"postAnnouncement\"\n >\n {{ $t('announcements.post_action') }}\n </button>\n <div\n v-if=\"error\"\n class=\"alert error\"\n >\n {{ $t('announcements.post_error', { error }) }}\n <button\n class=\"button-unstyled\"\n @click=\"clearError\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n :title=\"$t('announcements.close_error')\"\n />\n </button>\n </div>\n </div>\n </div>\n </section>\n <section\n v-for=\"announcement in announcements\"\n :key=\"announcement.id\"\n >\n <announcement\n :announcement=\"announcement\"\n />\n </section>\n </div>\n </div>\n</template>\n\n<script src=\"./announcements_page.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.announcements-page {\n .post-form {\n padding: var(--status-margin, $status-margin);\n\n .heading,\n .body {\n margin-bottom: var(--status-margin, $status-margin);\n }\n\n .post-button {\n min-width: 10em;\n }\n }\n}\n</style>\n","<template>\n <div class=\"announcement\">\n <div class=\"heading\">\n <h4>{{ $t('announcements.title') }}</h4>\n </div>\n <div class=\"body\">\n <rich-content\n v-if=\"!editing\"\n :html=\"content\"\n :emoji=\"announcement.emojis\"\n :handle-links=\"true\"\n />\n <announcement-editor\n v-else\n :announcement=\"editedAnnouncement\"\n />\n </div>\n <div class=\"footer\">\n <div\n v-if=\"!editing\"\n class=\"times\"\n >\n <span v-if=\"publishedAt\">\n {{ $t('announcements.published_time_display', { time: publishedAt }) }}\n </span>\n <span v-if=\"startsAt\">\n {{ $t('announcements.start_time_display', { time: startsAt }) }}\n </span>\n <span v-if=\"endsAt\">\n {{ $t('announcements.end_time_display', { time: endsAt }) }}\n </span>\n </div>\n <div\n v-if=\"!editing\"\n class=\"actions\"\n >\n <button\n v-if=\"currentUser\"\n class=\"btn button-default\"\n :class=\"{ toggled: isRead }\"\n :disabled=\"inactive\"\n :title=\"inactive ? $t('announcements.inactive_message') : ''\"\n @click=\"markAsRead\"\n >\n {{ $t('announcements.mark_as_read_action') }}\n </button>\n <button\n v-if=\"canEditAnnouncement\"\n class=\"btn button-default\"\n @click=\"enterEditMode\"\n >\n {{ $t('announcements.edit_action') }}\n </button>\n <button\n v-if=\"canEditAnnouncement\"\n class=\"btn button-default\"\n @click=\"deleteAnnouncement\"\n >\n {{ $t('announcements.delete_action') }}\n </button>\n </div>\n <div\n v-else\n class=\"actions\"\n >\n <button\n class=\"btn button-default\"\n @click=\"submitEdit\"\n >\n {{ $t('announcements.submit_edit_action') }}\n </button>\n <button\n class=\"btn button-default\"\n @click=\"cancelEdit\"\n >\n {{ $t('announcements.cancel_edit_action') }}\n </button>\n <div\n v-if=\"editing && editError\"\n class=\"alert error\"\n >\n {{ $t('announcements.edit_error', { error }) }}\n <button\n class=\"button-unstyled\"\n @click=\"clearError\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n :title=\"$t('announcements.close_error')\"\n />\n </button>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./announcement.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.announcement {\n border-bottom: 1px solid var(--border, $fallback--border);\n border-radius: 0;\n padding: var(--status-margin, $status-margin);\n\n .heading,\n .body {\n margin-bottom: var(--status-margin, $status-margin);\n }\n\n .footer {\n display: flex;\n flex-direction: column;\n\n .times {\n display: flex;\n flex-direction: column;\n }\n }\n\n .footer .actions {\n display: flex;\n flex-direction: row;\n justify-content: space-evenly;\n\n .btn {\n flex: 1;\n margin: 1em;\n max-width: 10em;\n }\n }\n}\n</style>\n","<template>\n <div class=\"announcement-editor\">\n <textarea\n ref=\"textarea\"\n v-model=\"announcement.content\"\n class=\"post-textarea\"\n rows=\"1\"\n cols=\"1\"\n :placeholder=\"$t('announcements.post_placeholder')\"\n :disabled=\"disabled\"\n />\n <span class=\"announcement-metadata\">\n <label for=\"announcement-start-time\">{{ $t('announcements.start_time_prompt') }}</label>\n <input\n id=\"announcement-start-time\"\n v-model=\"announcement.startsAt\"\n :type=\"announcement.allDay ? 'date' : 'datetime-local'\"\n :disabled=\"disabled\"\n >\n </span>\n <span class=\"announcement-metadata\">\n <label for=\"announcement-end-time\">{{ $t('announcements.end_time_prompt') }}</label>\n <input\n id=\"announcement-end-time\"\n v-model=\"announcement.endsAt\"\n :type=\"announcement.allDay ? 'date' : 'datetime-local'\"\n :disabled=\"disabled\"\n >\n </span>\n <span class=\"announcement-metadata\">\n <Checkbox\n id=\"announcement-all-day\"\n v-model=\"announcement.allDay\"\n :disabled=\"disabled\"\n />\n <label for=\"announcement-all-day\">{{ $t('announcements.all_day_prompt') }}</label>\n </span>\n </div>\n</template>\n\n<script src=\"./announcement_editor.js\"></script>\n\n<style lang=\"scss\">\n.announcement-editor {\n display: flex;\n align-items: stretch;\n flex-direction: column;\n\n .announcement-metadata {\n margin-top: 0.5em;\n }\n\n .post-textarea {\n resize: vertical;\n height: 10em;\n overflow: none;\n box-sizing: content-box;\n }\n}\n</style>\n","import Checkbox from '../checkbox/checkbox.vue'\n\nconst AnnouncementEditor = {\n components: {\n Checkbox\n },\n props: {\n announcement: Object,\n disabled: Boolean\n }\n}\n\nexport default AnnouncementEditor\n","import { render } from \"./announcement_editor.vue?vue&type=template&id=357f0d7c\"\nimport script from \"./announcement_editor.js?vue&type=script&lang=js\"\nexport * from \"./announcement_editor.js?vue&type=script&lang=js\"\n\nimport \"./announcement_editor.vue?vue&type=style&index=0&id=357f0d7c&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { mapState } from 'vuex'\nimport AnnouncementEditor from '../announcement_editor/announcement_editor.vue'\nimport RichContent from '../rich_content/rich_content.jsx'\nimport localeService from '../../services/locale/locale.service.js'\n\nconst Announcement = {\n components: {\n AnnouncementEditor,\n RichContent\n },\n data () {\n return {\n editing: false,\n editedAnnouncement: {\n content: '',\n startsAt: undefined,\n endsAt: undefined,\n allDay: undefined\n },\n editError: ''\n }\n },\n props: {\n announcement: Object\n },\n computed: {\n ...mapState({\n currentUser: state => state.users.currentUser\n }),\n canEditAnnouncement () {\n return this.currentUser && this.currentUser.privileges.includes('announcements_manage_announcements')\n },\n content () {\n return this.announcement.content\n },\n isRead () {\n return this.announcement.read\n },\n publishedAt () {\n const time = this.announcement.published_at\n if (!time) {\n return\n }\n\n return this.formatTimeOrDate(time, localeService.internalToBrowserLocale(this.$i18n.locale))\n },\n startsAt () {\n const time = this.announcement.starts_at\n if (!time) {\n return\n }\n\n return this.formatTimeOrDate(time, localeService.internalToBrowserLocale(this.$i18n.locale))\n },\n endsAt () {\n const time = this.announcement.ends_at\n if (!time) {\n return\n }\n\n return this.formatTimeOrDate(time, localeService.internalToBrowserLocale(this.$i18n.locale))\n },\n inactive () {\n return this.announcement.inactive\n }\n },\n methods: {\n markAsRead () {\n if (!this.isRead) {\n return this.$store.dispatch('markAnnouncementAsRead', this.announcement.id)\n }\n },\n deleteAnnouncement () {\n return this.$store.dispatch('deleteAnnouncement', this.announcement.id)\n },\n formatTimeOrDate (time, locale) {\n const d = new Date(time)\n return this.announcement.all_day ? d.toLocaleDateString(locale) : d.toLocaleString(locale)\n },\n enterEditMode () {\n this.editedAnnouncement.content = this.announcement.pleroma.raw_content\n this.editedAnnouncement.startsAt = this.announcement.starts_at\n this.editedAnnouncement.endsAt = this.announcement.ends_at\n this.editedAnnouncement.allDay = this.announcement.all_day\n this.editing = true\n },\n submitEdit () {\n this.$store.dispatch('editAnnouncement', {\n id: this.announcement.id,\n ...this.editedAnnouncement\n })\n .then(() => {\n this.editing = false\n })\n .catch(error => {\n this.editError = error.error\n })\n },\n cancelEdit () {\n this.editing = false\n },\n clearError () {\n this.editError = undefined\n }\n }\n}\n\nexport default Announcement\n","import { mapState } from 'vuex'\nimport Announcement from '../announcement/announcement.vue'\nimport AnnouncementEditor from '../announcement_editor/announcement_editor.vue'\n\nconst AnnouncementsPage = {\n components: {\n Announcement,\n AnnouncementEditor\n },\n data () {\n return {\n newAnnouncement: {\n content: '',\n startsAt: undefined,\n endsAt: undefined,\n allDay: false\n },\n posting: false,\n error: undefined\n }\n },\n mounted () {\n this.$store.dispatch('fetchAnnouncements')\n },\n computed: {\n ...mapState({\n currentUser: state => state.users.currentUser\n }),\n announcements () {\n return this.$store.state.announcements.announcements\n },\n canPostAnnouncement () {\n return this.currentUser && this.currentUser.privileges.includes('announcements_manage_announcements')\n }\n },\n methods: {\n postAnnouncement () {\n this.posting = true\n this.$store.dispatch('postAnnouncement', this.newAnnouncement)\n .then(() => {\n this.newAnnouncement.content = ''\n this.startsAt = undefined\n this.endsAt = undefined\n })\n .catch(error => {\n this.error = error.error\n })\n .finally(() => {\n this.posting = false\n })\n },\n clearError () {\n this.error = undefined\n }\n }\n}\n\nexport default AnnouncementsPage\n","import { render } from \"./announcement.vue?vue&type=template&id=c07fccd0\"\nimport script from \"./announcement.js?vue&type=script&lang=js\"\nexport * from \"./announcement.js?vue&type=script&lang=js\"\n\nimport \"./announcement.vue?vue&type=style&index=0&id=c07fccd0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./announcements_page.vue?vue&type=template&id=33196ec2\"\nimport script from \"./announcements_page.js?vue&type=script&lang=js\"\nexport * from \"./announcements_page.js?vue&type=script&lang=js\"\n\nimport \"./announcements_page.vue?vue&type=style&index=0&id=33196ec2&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import PublicTimeline from 'components/public_timeline/public_timeline.vue'\nimport PublicAndExternalTimeline from 'components/public_and_external_timeline/public_and_external_timeline.vue'\nimport FriendsTimeline from 'components/friends_timeline/friends_timeline.vue'\nimport TagTimeline from 'components/tag_timeline/tag_timeline.vue'\nimport BookmarkTimeline from 'components/bookmark_timeline/bookmark_timeline.vue'\nimport ConversationPage from 'components/conversation-page/conversation-page.vue'\nimport Interactions from 'components/interactions/interactions.vue'\nimport DMs from 'components/dm_timeline/dm_timeline.vue'\nimport ChatList from 'components/chat_list/chat_list.vue'\nimport Chat from 'components/chat/chat.vue'\nimport UserProfile from 'components/user_profile/user_profile.vue'\nimport Search from 'components/search/search.vue'\nimport Registration from 'components/registration/registration.vue'\nimport PasswordReset from 'components/password_reset/password_reset.vue'\nimport FollowRequests from 'components/follow_requests/follow_requests.vue'\nimport OAuthCallback from 'components/oauth_callback/oauth_callback.vue'\nimport Notifications from 'components/notifications/notifications.vue'\nimport AuthForm from 'components/auth_form/auth_form.js'\nimport ShoutPanel from 'components/shout_panel/shout_panel.vue'\nimport WhoToFollow from 'components/who_to_follow/who_to_follow.vue'\nimport About from 'components/about/about.vue'\nimport RemoteUserResolver from 'components/remote_user_resolver/remote_user_resolver.vue'\nimport Lists from 'components/lists/lists.vue'\nimport ListsTimeline from 'components/lists_timeline/lists_timeline.vue'\nimport ListsEdit from 'components/lists_edit/lists_edit.vue'\nimport NavPanel from 'src/components/nav_panel/nav_panel.vue'\nimport AnnouncementsPage from 'components/announcements_page/announcements_page.vue'\n\nexport default (store) => {\n const validateAuthenticatedRoute = (to, from, next) => {\n if (store.state.users.currentUser) {\n next()\n } else {\n next(store.state.instance.redirectRootNoLogin || '/main/all')\n }\n }\n\n let routes = [\n {\n name: 'root',\n path: '/',\n redirect: _to => {\n return (store.state.users.currentUser\n ? store.state.instance.redirectRootLogin\n : store.state.instance.redirectRootNoLogin) || '/main/all'\n }\n },\n { name: 'public-external-timeline', path: '/main/all', component: PublicAndExternalTimeline },\n { name: 'public-timeline', path: '/main/public', component: PublicTimeline },\n { name: 'friends', path: '/main/friends', component: FriendsTimeline, beforeEnter: validateAuthenticatedRoute },\n { name: 'tag-timeline', path: '/tag/:tag', component: TagTimeline },\n { name: 'bookmarks', path: '/bookmarks', component: BookmarkTimeline },\n { name: 'conversation', path: '/notice/:id', component: ConversationPage, meta: { dontScroll: true } },\n {\n name: 'remote-user-profile-acct',\n path: '/remote-users/:_(@)?:username([^/@]+)@:hostname([^/@]+)',\n component: RemoteUserResolver,\n beforeEnter: validateAuthenticatedRoute\n },\n {\n name: 'remote-user-profile',\n path: '/remote-users/:hostname/:username',\n component: RemoteUserResolver,\n beforeEnter: validateAuthenticatedRoute\n },\n { name: 'external-user-profile', path: '/users/$:id', component: UserProfile },\n { name: 'interactions', path: '/users/:username/interactions', component: Interactions, beforeEnter: validateAuthenticatedRoute },\n { name: 'dms', path: '/users/:username/dms', component: DMs, beforeEnter: validateAuthenticatedRoute },\n { name: 'registration', path: '/registration', component: Registration },\n { name: 'password-reset', path: '/password-reset', component: PasswordReset, props: true },\n { name: 'registration-token', path: '/registration/:token', component: Registration },\n { name: 'friend-requests', path: '/friend-requests', component: FollowRequests, beforeEnter: validateAuthenticatedRoute },\n { name: 'notifications', path: '/:username/notifications', component: Notifications, props: () => ({ disableTeleport: true }), beforeEnter: validateAuthenticatedRoute },\n { name: 'login', path: '/login', component: AuthForm },\n { name: 'shout-panel', path: '/shout-panel', component: ShoutPanel, props: () => ({ floating: false }) },\n { name: 'oauth-callback', path: '/oauth-callback', component: OAuthCallback, props: (route) => ({ code: route.query.code }) },\n { name: 'search', path: '/search', component: Search, props: (route) => ({ query: route.query.query }) },\n { name: 'who-to-follow', path: '/who-to-follow', component: WhoToFollow, beforeEnter: validateAuthenticatedRoute },\n { name: 'about', path: '/about', component: About },\n { name: 'announcements', path: '/announcements', component: AnnouncementsPage },\n { name: 'user-profile', path: '/users/:name', component: UserProfile },\n { name: 'legacy-user-profile', path: '/:name', component: UserProfile },\n { name: 'lists', path: '/lists', component: Lists },\n { name: 'lists-timeline', path: '/lists/:id', component: ListsTimeline },\n { name: 'lists-edit', path: '/lists/:id/edit', component: ListsEdit },\n { name: 'lists-new', path: '/lists/new', component: ListsEdit },\n { name: 'edit-navigation', path: '/nav-edit', component: NavPanel, props: () => ({ forceExpand: true, forceEditMode: true }), beforeEnter: validateAuthenticatedRoute }\n ]\n\n if (store.state.instance.pleromaChatMessagesAvailable) {\n routes = routes.concat([\n { name: 'chat', path: '/users/:username/chats/:recipient_id', component: Chat, meta: { dontScroll: false }, beforeEnter: validateAuthenticatedRoute },\n { name: 'chats', path: '/users/:username/chats', component: ChatList, meta: { dontScroll: false }, beforeEnter: validateAuthenticatedRoute }\n ])\n }\n\n return routes\n}\n","import * as bodyScrollLock from 'body-scroll-lock'\n\nlet previousNavPaddingRight\nlet previousAppBgWrapperRight\nconst lockerEls = new Set([])\n\nconst disableBodyScroll = (el) => {\n const scrollBarGap = window.innerWidth - document.documentElement.clientWidth\n bodyScrollLock.disableBodyScroll(el, {\n reserveScrollBarGap: true\n })\n lockerEls.add(el)\n setTimeout(() => {\n if (lockerEls.size <= 1) {\n // If previousNavPaddingRight is already set, don't set it again.\n if (previousNavPaddingRight === undefined) {\n const navEl = document.getElementById('nav')\n previousNavPaddingRight = window.getComputedStyle(navEl).getPropertyValue('padding-right')\n navEl.style.paddingRight = previousNavPaddingRight ? `calc(${previousNavPaddingRight} + ${scrollBarGap}px)` : `${scrollBarGap}px`\n }\n // If previousAppBgWrapeprRight is already set, don't set it again.\n if (previousAppBgWrapperRight === undefined) {\n const appBgWrapperEl = document.getElementById('app_bg_wrapper')\n previousAppBgWrapperRight = window.getComputedStyle(appBgWrapperEl).getPropertyValue('right')\n appBgWrapperEl.style.right = previousAppBgWrapperRight ? `calc(${previousAppBgWrapperRight} + ${scrollBarGap}px)` : `${scrollBarGap}px`\n }\n document.body.classList.add('scroll-locked')\n }\n })\n}\n\nconst enableBodyScroll = (el) => {\n lockerEls.delete(el)\n setTimeout(() => {\n if (lockerEls.size === 0) {\n if (previousNavPaddingRight !== undefined) {\n document.getElementById('nav').style.paddingRight = previousNavPaddingRight\n // Restore previousNavPaddingRight to undefined so disableBodyScroll knows it can be set again.\n previousNavPaddingRight = undefined\n }\n if (previousAppBgWrapperRight !== undefined) {\n document.getElementById('app_bg_wrapper').style.right = previousAppBgWrapperRight\n // Restore previousAppBgWrapperRight to undefined so disableBodyScroll knows it can be set again.\n previousAppBgWrapperRight = undefined\n }\n document.body.classList.remove('scroll-locked')\n }\n })\n bodyScrollLock.enableBodyScroll(el)\n}\n\nconst directive = {\n mounted: (el, binding) => {\n if (binding.value) {\n disableBodyScroll(el)\n }\n },\n updated: (el, binding) => {\n if (binding.oldValue === binding.value) {\n return\n }\n\n if (binding.value) {\n disableBodyScroll(el)\n } else {\n enableBodyScroll(el)\n }\n },\n unmounted: (el) => {\n enableBodyScroll(el)\n }\n}\n\nexport default (Vue) => {\n Vue.directive('body-scroll-lock', directive)\n}\n","import { createApp } from 'vue'\nimport { createRouter, createWebHistory } from 'vue-router'\nimport vClickOutside from 'click-outside-vue3'\nimport VueVirtualScroller from 'vue-virtual-scroller'\nimport 'vue-virtual-scroller/dist/vue-virtual-scroller.css'\n\nimport { FontAwesomeIcon, FontAwesomeLayers } from '@fortawesome/vue-fontawesome'\n\nimport App from '../App.vue'\nimport routes from './routes'\nimport VBodyScrollLock from 'src/directives/body_scroll_lock'\n\nimport { windowWidth, windowHeight } from '../services/window_utils/window_utils'\nimport { getOrCreateApp, getClientToken } from '../services/new_api/oauth.js'\nimport backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport { CURRENT_VERSION } from '../services/theme_data/theme_data.service.js'\nimport { applyTheme, applyConfig } from '../services/style_setter/style_setter.js'\nimport FaviconService from '../services/favicon_service/favicon_service.js'\n\nlet staticInitialResults = null\n\nconst parsedInitialResults = () => {\n if (!document.getElementById('initial-results')) {\n return null\n }\n if (!staticInitialResults) {\n staticInitialResults = JSON.parse(document.getElementById('initial-results').textContent)\n }\n return staticInitialResults\n}\n\nconst decodeUTF8Base64 = (data) => {\n const rawData = atob(data)\n const array = Uint8Array.from([...rawData].map((char) => char.charCodeAt(0)))\n const text = new TextDecoder().decode(array)\n return text\n}\n\nconst preloadFetch = async (request) => {\n const data = parsedInitialResults()\n if (!data || !data[request]) {\n return window.fetch(request)\n }\n const decoded = decodeUTF8Base64(data[request])\n const requestData = JSON.parse(decoded)\n return {\n ok: true,\n json: () => requestData,\n text: () => requestData\n }\n}\n\nconst getInstanceConfig = async ({ store }) => {\n try {\n const res = await preloadFetch('/api/v1/instance')\n if (res.ok) {\n const data = await res.json()\n const textlimit = data.max_toot_chars\n const vapidPublicKey = data.pleroma.vapid_public_key\n\n store.dispatch('setInstanceOption', { name: 'textlimit', value: textlimit })\n store.dispatch('setInstanceOption', { name: 'accountApprovalRequired', value: data.approval_required })\n store.dispatch('setInstanceOption', { name: 'birthdayRequired', value: !!data.pleroma.metadata.birthday_required })\n store.dispatch('setInstanceOption', { name: 'birthdayMinAge', value: data.pleroma.metadata.birthday_min_age || 0 })\n\n if (vapidPublicKey) {\n store.dispatch('setInstanceOption', { name: 'vapidPublicKey', value: vapidPublicKey })\n }\n } else {\n throw (res)\n }\n } catch (error) {\n console.error('Could not load instance config, potentially fatal')\n console.error(error)\n }\n}\n\nconst getBackendProvidedConfig = async ({ store }) => {\n try {\n const res = await window.fetch('/api/pleroma/frontend_configurations')\n if (res.ok) {\n const data = await res.json()\n return data.pleroma_fe\n } else {\n throw (res)\n }\n } catch (error) {\n console.error('Could not load backend-provided frontend config, potentially fatal')\n console.error(error)\n }\n}\n\nconst getStaticConfig = async () => {\n try {\n const res = await window.fetch('/static/config.json')\n if (res.ok) {\n return res.json()\n } else {\n throw (res)\n }\n } catch (error) {\n console.warn('Failed to load static/config.json, continuing without it.')\n console.warn(error)\n return {}\n }\n}\n\nconst setSettings = async ({ apiConfig, staticConfig, store }) => {\n const overrides = window.___pleromafe_dev_overrides || {}\n const env = window.___pleromafe_mode.NODE_ENV\n\n // This takes static config and overrides properties that are present in apiConfig\n let config = {}\n if (overrides.staticConfigPreference && env === 'development') {\n console.warn('OVERRIDING API CONFIG WITH STATIC CONFIG')\n config = Object.assign({}, apiConfig, staticConfig)\n } else {\n config = Object.assign({}, staticConfig, apiConfig)\n }\n\n const copyInstanceOption = (name) => {\n store.dispatch('setInstanceOption', { name, value: config[name] })\n }\n\n copyInstanceOption('nsfwCensorImage')\n copyInstanceOption('background')\n copyInstanceOption('hidePostStats')\n copyInstanceOption('hideBotIndication')\n copyInstanceOption('hideUserStats')\n copyInstanceOption('hideFilteredStatuses')\n copyInstanceOption('logo')\n\n store.dispatch('setInstanceOption', {\n name: 'logoMask',\n value: typeof config.logoMask === 'undefined'\n ? true\n : config.logoMask\n })\n\n store.dispatch('setInstanceOption', {\n name: 'logoMargin',\n value: typeof config.logoMargin === 'undefined'\n ? 0\n : config.logoMargin\n })\n copyInstanceOption('logoLeft')\n store.commit('authFlow/setInitialStrategy', config.loginMethod)\n\n copyInstanceOption('redirectRootNoLogin')\n copyInstanceOption('redirectRootLogin')\n copyInstanceOption('showInstanceSpecificPanel')\n copyInstanceOption('minimalScopesMode')\n copyInstanceOption('hideMutedPosts')\n copyInstanceOption('collapseMessageWithSubject')\n copyInstanceOption('scopeCopy')\n copyInstanceOption('subjectLineBehavior')\n copyInstanceOption('postContentType')\n copyInstanceOption('alwaysShowSubjectInput')\n copyInstanceOption('showFeaturesPanel')\n copyInstanceOption('hideSitename')\n copyInstanceOption('sidebarRight')\n\n return store.dispatch('setTheme', config.theme)\n}\n\nconst getTOS = async ({ store }) => {\n try {\n const res = await window.fetch('/static/terms-of-service.html')\n if (res.ok) {\n const html = await res.text()\n store.dispatch('setInstanceOption', { name: 'tos', value: html })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load TOS\")\n console.warn(e)\n }\n}\n\nconst getInstancePanel = async ({ store }) => {\n try {\n const res = await preloadFetch('/instance/panel.html')\n if (res.ok) {\n const html = await res.text()\n store.dispatch('setInstanceOption', { name: 'instanceSpecificPanelContent', value: html })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load instance panel\")\n console.warn(e)\n }\n}\n\nconst getStickers = async ({ store }) => {\n try {\n const res = await window.fetch('/static/stickers.json')\n if (res.ok) {\n const values = await res.json()\n const stickers = (await Promise.all(\n Object.entries(values).map(async ([name, path]) => {\n const resPack = await window.fetch(path + 'pack.json')\n let meta = {}\n if (resPack.ok) {\n meta = await resPack.json()\n }\n return {\n pack: name,\n path,\n meta\n }\n })\n )).sort((a, b) => {\n return a.meta.title.localeCompare(b.meta.title)\n })\n store.dispatch('setInstanceOption', { name: 'stickers', value: stickers })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load stickers\")\n console.warn(e)\n }\n}\n\nconst getAppSecret = async ({ store }) => {\n const { state, commit } = store\n const { oauth, instance } = state\n return getOrCreateApp({ ...oauth, instance: instance.server, commit })\n .then((app) => getClientToken({ ...app, instance: instance.server }))\n .then((token) => {\n commit('setAppToken', token.access_token)\n commit('setBackendInteractor', backendInteractorService(store.getters.getToken()))\n })\n}\n\nconst resolveStaffAccounts = ({ store, accounts }) => {\n const nicknames = accounts.map(uri => uri.split('/').pop())\n store.dispatch('setInstanceOption', { name: 'staffAccounts', value: nicknames })\n}\n\nconst getNodeInfo = async ({ store }) => {\n try {\n const res = await preloadFetch('/nodeinfo/2.0.json')\n if (res.ok) {\n const data = await res.json()\n const metadata = data.metadata\n const features = metadata.features\n store.dispatch('setInstanceOption', { name: 'name', value: metadata.nodeName })\n store.dispatch('setInstanceOption', { name: 'registrationOpen', value: data.openRegistrations })\n store.dispatch('setInstanceOption', { name: 'mediaProxyAvailable', value: features.includes('media_proxy') })\n store.dispatch('setInstanceOption', { name: 'safeDM', value: features.includes('safe_dm_mentions') })\n store.dispatch('setInstanceOption', { name: 'shoutAvailable', value: features.includes('chat') })\n store.dispatch('setInstanceOption', { name: 'pleromaChatMessagesAvailable', value: features.includes('pleroma_chat_messages') })\n store.dispatch('setInstanceOption', { name: 'gopherAvailable', value: features.includes('gopher') })\n store.dispatch('setInstanceOption', { name: 'pollsAvailable', value: features.includes('polls') })\n store.dispatch('setInstanceOption', { name: 'editingAvailable', value: features.includes('editing') })\n store.dispatch('setInstanceOption', { name: 'pollLimits', value: metadata.pollLimits })\n store.dispatch('setInstanceOption', { name: 'mailerEnabled', value: metadata.mailerEnabled })\n\n const uploadLimits = metadata.uploadLimits\n store.dispatch('setInstanceOption', { name: 'uploadlimit', value: parseInt(uploadLimits.general) })\n store.dispatch('setInstanceOption', { name: 'avatarlimit', value: parseInt(uploadLimits.avatar) })\n store.dispatch('setInstanceOption', { name: 'backgroundlimit', value: parseInt(uploadLimits.background) })\n store.dispatch('setInstanceOption', { name: 'bannerlimit', value: parseInt(uploadLimits.banner) })\n store.dispatch('setInstanceOption', { name: 'fieldsLimits', value: metadata.fieldsLimits })\n\n store.dispatch('setInstanceOption', { name: 'restrictedNicknames', value: metadata.restrictedNicknames })\n store.dispatch('setInstanceOption', { name: 'postFormats', value: metadata.postFormats })\n\n const suggestions = metadata.suggestions\n store.dispatch('setInstanceOption', { name: 'suggestionsEnabled', value: suggestions.enabled })\n store.dispatch('setInstanceOption', { name: 'suggestionsWeb', value: suggestions.web })\n\n const software = data.software\n store.dispatch('setInstanceOption', { name: 'backendVersion', value: software.version })\n store.dispatch('setInstanceOption', { name: 'pleromaBackend', value: software.name === 'pleroma' })\n\n const priv = metadata.private\n store.dispatch('setInstanceOption', { name: 'private', value: priv })\n\n const frontendVersion = window.___pleromafe_commit_hash\n store.dispatch('setInstanceOption', { name: 'frontendVersion', value: frontendVersion })\n\n const federation = metadata.federation\n\n store.dispatch('setInstanceOption', {\n name: 'tagPolicyAvailable',\n value: typeof federation.mrf_policies === 'undefined'\n ? false\n : metadata.federation.mrf_policies.includes('TagPolicy')\n })\n\n store.dispatch('setInstanceOption', { name: 'federationPolicy', value: federation })\n store.dispatch('setInstanceOption', {\n name: 'federating',\n value: typeof federation.enabled === 'undefined'\n ? true\n : federation.enabled\n })\n\n const accountActivationRequired = metadata.accountActivationRequired\n store.dispatch('setInstanceOption', { name: 'accountActivationRequired', value: accountActivationRequired })\n\n const accounts = metadata.staffAccounts\n resolveStaffAccounts({ store, accounts })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn('Could not load nodeinfo')\n console.warn(e)\n }\n}\n\nconst setConfig = async ({ store }) => {\n // apiConfig, staticConfig\n const configInfos = await Promise.all([getBackendProvidedConfig({ store }), getStaticConfig()])\n const apiConfig = configInfos[0]\n const staticConfig = configInfos[1]\n\n await setSettings({ store, apiConfig, staticConfig }).then(getAppSecret({ store }))\n}\n\nconst checkOAuthToken = async ({ store }) => {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async (resolve, reject) => {\n if (store.getters.getUserToken()) {\n try {\n await store.dispatch('loginUser', store.getters.getUserToken())\n } catch (e) {\n console.error(e)\n }\n }\n resolve()\n })\n}\n\nconst afterStoreSetup = async ({ store, i18n }) => {\n store.dispatch('setLayoutWidth', windowWidth())\n store.dispatch('setLayoutHeight', windowHeight())\n\n FaviconService.initFaviconService()\n\n const overrides = window.___pleromafe_dev_overrides || {}\n const server = (typeof overrides.target !== 'undefined') ? overrides.target : window.location.origin\n store.dispatch('setInstanceOption', { name: 'server', value: server })\n\n await setConfig({ store })\n\n const { customTheme, customThemeSource } = store.state.config\n const { theme } = store.state.instance\n const customThemePresent = customThemeSource || customTheme\n\n if (customThemePresent) {\n if (customThemeSource && customThemeSource.themeEngineVersion === CURRENT_VERSION) {\n applyTheme(customThemeSource)\n } else {\n applyTheme(customTheme)\n }\n } else if (theme) {\n // do nothing, it will load asynchronously\n } else {\n console.error('Failed to load any theme!')\n }\n\n applyConfig(store.state.config)\n\n // Now we can try getting the server settings and logging in\n // Most of these are preloaded into the index.html so blocking is minimized\n await Promise.all([\n checkOAuthToken({ store }),\n getInstancePanel({ store }),\n getNodeInfo({ store }),\n getInstanceConfig({ store })\n ])\n\n // Start fetching things that don't need to block the UI\n store.dispatch('fetchMutes')\n store.dispatch('startFetchingAnnouncements')\n getTOS({ store })\n getStickers({ store })\n\n const router = createRouter({\n history: createWebHistory(),\n routes: routes(store),\n scrollBehavior: (to, _from, savedPosition) => {\n if (to.matched.some(m => m.meta.dontScroll)) {\n return false\n }\n return savedPosition || { left: 0, top: 0 }\n }\n })\n\n const app = createApp(App)\n\n app.use(router)\n app.use(store)\n app.use(i18n)\n\n app.use(vClickOutside)\n app.use(VBodyScrollLock)\n app.use(VueVirtualScroller)\n\n app.component('FAIcon', FontAwesomeIcon)\n app.component('FALayers', FontAwesomeLayers)\n\n // remove after vue 3.3\n app.config.unwrapInjectedRef = true\n\n app.mount('#app')\n\n return app\n}\n\nexport default afterStoreSetup\n","import { createStore } from 'vuex'\n\nimport 'custom-event-polyfill'\nimport './lib/event_target_polyfill.js'\n\nimport interfaceModule from './modules/interface.js'\nimport instanceModule from './modules/instance.js'\nimport statusesModule from './modules/statuses.js'\nimport listsModule from './modules/lists.js'\nimport usersModule from './modules/users.js'\nimport apiModule from './modules/api.js'\nimport configModule from './modules/config.js'\nimport serverSideConfigModule from './modules/serverSideConfig.js'\nimport serverSideStorageModule from './modules/serverSideStorage.js'\nimport shoutModule from './modules/shout.js'\nimport oauthModule from './modules/oauth.js'\nimport authFlowModule from './modules/auth_flow.js'\nimport mediaViewerModule from './modules/media_viewer.js'\nimport oauthTokensModule from './modules/oauth_tokens.js'\nimport reportsModule from './modules/reports.js'\nimport pollsModule from './modules/polls.js'\nimport postStatusModule from './modules/postStatus.js'\nimport editStatusModule from './modules/editStatus.js'\nimport statusHistoryModule from './modules/statusHistory.js'\n\nimport chatsModule from './modules/chats.js'\nimport announcementsModule from './modules/announcements.js'\n\nimport { createI18n } from 'vue-i18n'\n\nimport createPersistedState from './lib/persisted_state.js'\nimport pushNotifications from './lib/push_notifications_plugin.js'\n\nimport messages from './i18n/messages.js'\n\nimport afterStoreSetup from './boot/after_store.js'\n\nconst currentLocale = (window.navigator.language || 'en').split('-')[0]\n\nconst i18n = createI18n({\n // By default, use the browser locale, we will update it if neccessary\n locale: 'en',\n fallbackLocale: 'en',\n messages: messages.default\n})\n\nmessages.setLanguage(i18n, currentLocale)\n\nconst persistedStateOptions = {\n paths: [\n 'serverSideStorage.cache',\n 'config',\n 'users.lastLoginName',\n 'oauth'\n ]\n};\n\n(async () => {\n let storageError = false\n const plugins = [pushNotifications]\n try {\n const persistedState = await createPersistedState(persistedStateOptions)\n plugins.push(persistedState)\n } catch (e) {\n console.error(e)\n storageError = true\n }\n const store = createStore({\n modules: {\n i18n: {\n getters: {\n i18n: () => i18n.global\n }\n },\n interface: interfaceModule,\n instance: instanceModule,\n // TODO refactor users/statuses modules, they depend on each other\n users: usersModule,\n statuses: statusesModule,\n lists: listsModule,\n api: apiModule,\n config: configModule,\n serverSideConfig: serverSideConfigModule,\n serverSideStorage: serverSideStorageModule,\n shout: shoutModule,\n oauth: oauthModule,\n authFlow: authFlowModule,\n mediaViewer: mediaViewerModule,\n oauthTokens: oauthTokensModule,\n reports: reportsModule,\n polls: pollsModule,\n postStatus: postStatusModule,\n editStatus: editStatusModule,\n statusHistory: statusHistoryModule,\n chats: chatsModule,\n announcements: announcementsModule\n },\n plugins,\n strict: false // Socket modifies itself, let's ignore this for now.\n // strict: process.env.NODE_ENV !== 'production'\n })\n if (storageError) {\n store.dispatch('pushGlobalNotice', { messageKey: 'errors.storage_unavailable', level: 'error' })\n }\n afterStoreSetup({ store, i18n })\n})()\n\n// These are inlined by webpack's DefinePlugin\n/* eslint-disable */\nwindow.___pleromafe_mode = process.env\nwindow.___pleromafe_commit_hash = COMMIT_HASH\nwindow.___pleromafe_dev_overrides = DEV_OVERRIDES\n","import Cookies from 'js-cookie'\nimport { setPreset, applyTheme, applyConfig } from '../services/style_setter/style_setter.js'\nimport messages from '../i18n/messages'\nimport localeService from '../services/locale/locale.service.js'\n\nconst BACKEND_LANGUAGE_COOKIE_NAME = 'userLanguage'\n\nconst browserLocale = (window.navigator.language || 'en').split('-')[0]\n\n/* TODO this is a bit messy.\n * We need to declare settings with their types and also deal with\n * instance-default settings in some way, hopefully try to avoid copy-pasta\n * in general.\n */\nexport const multiChoiceProperties = [\n 'postContentType',\n 'subjectLineBehavior',\n 'conversationDisplay', // tree | linear\n 'conversationOtherRepliesButton', // below | inside\n 'mentionLinkDisplay', // short | full_for_remote | full\n 'userPopoverAvatarAction' // close | zoom | open\n]\n\nexport const defaultState = {\n expertLevel: 0, // used to track which settings to show and hide\n colors: {},\n theme: undefined,\n customTheme: undefined,\n customThemeSource: undefined,\n hideISP: false,\n hideInstanceWallpaper: false,\n hideShoutbox: false,\n // bad name: actually hides posts of muted USERS\n hideMutedPosts: undefined, // instance default\n hideMutedThreads: undefined, // instance default\n hideWordFilteredPosts: undefined, // instance default\n muteBotStatuses: undefined, // instance default\n collapseMessageWithSubject: undefined, // instance default\n padEmoji: true,\n hideAttachments: false,\n hideAttachmentsInConv: false,\n maxThumbnails: 16,\n hideNsfw: true,\n preloadImage: true,\n loopVideo: true,\n loopVideoSilentOnly: true,\n streaming: false,\n emojiReactionsOnTimeline: true,\n alwaysShowNewPostButton: false,\n autohideFloatingPostButton: false,\n pauseOnUnfocused: true,\n stopGifs: true,\n replyVisibility: 'all',\n thirdColumnMode: 'notifications',\n notificationVisibility: {\n follows: true,\n mentions: true,\n likes: true,\n repeats: true,\n moves: true,\n emojiReactions: true,\n followRequest: true,\n reports: true,\n chatMention: true,\n polls: true\n },\n webPushNotifications: false,\n muteWords: [],\n highlight: {},\n interfaceLanguage: browserLocale,\n hideScopeNotice: false,\n useStreamingApi: false,\n sidebarRight: undefined, // instance default\n scopeCopy: undefined, // instance default\n subjectLineBehavior: undefined, // instance default\n alwaysShowSubjectInput: undefined, // instance default\n postContentType: undefined, // instance default\n minimalScopesMode: undefined, // instance default\n // This hides statuses filtered via a word filter\n hideFilteredStatuses: undefined, // instance default\n modalOnRepeat: undefined, // instance default\n modalOnUnfollow: undefined, // instance default\n modalOnBlock: undefined, // instance default\n modalOnMute: undefined, // instance default\n modalOnDelete: undefined, // instance default\n modalOnLogout: undefined, // instance default\n modalOnApproveFollow: undefined, // instance default\n modalOnDenyFollow: undefined, // instance default\n modalOnRemoveUserFromFollowers: undefined, // instance default\n playVideosInModal: false,\n useOneClickNsfw: false,\n useContainFit: true,\n disableStickyHeaders: false,\n showScrollbars: false,\n userPopoverAvatarAction: 'open',\n userPopoverOverlay: false,\n sidebarColumnWidth: '25rem',\n contentColumnWidth: '45rem',\n notifsColumnWidth: '25rem',\n navbarColumnStretch: false,\n greentext: undefined, // instance default\n useAtIcon: undefined, // instance default\n mentionLinkDisplay: undefined, // instance default\n mentionLinkShowTooltip: undefined, // instance default\n mentionLinkShowAvatar: undefined, // instance default\n mentionLinkFadeDomain: undefined, // instance default\n mentionLinkShowYous: undefined, // instance default\n mentionLinkBoldenYou: undefined, // instance default\n hidePostStats: undefined, // instance default\n hideBotIndication: undefined, // instance default\n hideUserStats: undefined, // instance default\n virtualScrolling: undefined, // instance default\n sensitiveByDefault: undefined, // instance default\n conversationDisplay: undefined, // instance default\n conversationTreeAdvanced: undefined, // instance default\n conversationOtherRepliesButton: undefined, // instance default\n conversationTreeFadeAncestors: undefined, // instance default\n maxDepthInThread: undefined // instance default\n}\n\n// caching the instance default properties\nexport const instanceDefaultProperties = Object.entries(defaultState)\n .filter(([key, value]) => value === undefined)\n .map(([key, value]) => key)\n\nconst config = {\n state: { ...defaultState },\n getters: {\n defaultConfig (state, getters, rootState, rootGetters) {\n const { instance } = rootState\n return {\n ...defaultState,\n ...Object.fromEntries(\n instanceDefaultProperties.map(key => [key, instance[key]])\n )\n }\n },\n mergedConfig (state, getters, rootState, rootGetters) {\n const { defaultConfig } = rootGetters\n return {\n ...defaultConfig,\n // Do not override with undefined\n ...Object.fromEntries(Object.entries(state).filter(([k, v]) => v !== undefined))\n }\n }\n },\n mutations: {\n setOption (state, { name, value }) {\n state[name] = value\n },\n setHighlight (state, { user, color, type }) {\n const data = this.state.config.highlight[user]\n if (color || type) {\n state.highlight[user] = { color: color || data.color, type: type || data.type }\n } else {\n delete state.highlight[user]\n }\n }\n },\n actions: {\n loadSettings ({ dispatch }, data) {\n const knownKeys = new Set(Object.keys(defaultState))\n const presentKeys = new Set(Object.keys(data))\n const intersection = new Set()\n for (const elem of presentKeys) {\n if (knownKeys.has(elem)) {\n intersection.add(elem)\n }\n }\n\n intersection.forEach(\n name => dispatch('setOption', { name, value: data[name] })\n )\n },\n setHighlight ({ commit, dispatch }, { user, color, type }) {\n commit('setHighlight', { user, color, type })\n },\n setOption ({ commit, dispatch, state }, { name, value }) {\n commit('setOption', { name, value })\n switch (name) {\n case 'theme':\n setPreset(value)\n break\n case 'sidebarColumnWidth':\n case 'contentColumnWidth':\n case 'notifsColumnWidth':\n applyConfig(state)\n break\n case 'customTheme':\n case 'customThemeSource':\n applyTheme(value)\n break\n case 'interfaceLanguage':\n messages.setLanguage(this.getters.i18n, value)\n dispatch('loadUnicodeEmojiData', value)\n Cookies.set(\n BACKEND_LANGUAGE_COOKIE_NAME,\n localeService.internalToBackendLocaleMulti(value)\n )\n break\n case 'thirdColumnMode':\n dispatch('setLayoutWidth', undefined)\n break\n }\n }\n }\n}\n\nexport default config\n","import { get, set } from 'lodash'\n\nconst defaultApi = ({ rootState, commit }, { path, value }) => {\n const params = {}\n set(params, path, value)\n return rootState\n .api\n .backendInteractor\n .updateProfile({ params })\n .then(result => {\n commit('addNewUsers', [result])\n commit('setCurrentUser', result)\n })\n}\n\nconst notificationsApi = ({ rootState, commit }, { path, value, oldValue }) => {\n const settings = {}\n set(settings, path, value)\n return rootState\n .api\n .backendInteractor\n .updateNotificationSettings({ settings })\n .then(result => {\n if (result.status === 'success') {\n commit('confirmServerSideOption', { name, value })\n } else {\n commit('confirmServerSideOption', { name, value: oldValue })\n }\n })\n}\n\n/**\n * Map that stores relation between path for reading (from user profile),\n * for writing (into API) an what API to use.\n *\n * Shorthand - instead of { get, set, api? } object it's possible to use string\n * in case default api is used and get = set\n *\n * If no api is specified, defaultApi is used (see above)\n */\nexport const settingsMap = {\n defaultScope: 'source.privacy',\n defaultNSFW: 'source.sensitive', // BROKEN: pleroma/pleroma#2837\n stripRichContent: {\n get: 'source.pleroma.no_rich_text',\n set: 'no_rich_text'\n },\n // Privacy\n locked: 'locked',\n acceptChatMessages: {\n get: 'pleroma.accepts_chat_messages',\n set: 'accepts_chat_messages'\n },\n allowFollowingMove: {\n get: 'pleroma.allow_following_move',\n set: 'allow_following_move'\n },\n discoverable: {\n get: 'source.pleroma.discoverable',\n set: 'discoverable'\n },\n hideFavorites: {\n get: 'pleroma.hide_favorites',\n set: 'hide_favorites'\n },\n hideFollowers: {\n get: 'pleroma.hide_followers',\n set: 'hide_followers'\n },\n hideFollows: {\n get: 'pleroma.hide_follows',\n set: 'hide_follows'\n },\n hideFollowersCount: {\n get: 'pleroma.hide_followers_count',\n set: 'hide_followers_count'\n },\n hideFollowsCount: {\n get: 'pleroma.hide_follows_count',\n set: 'hide_follows_count'\n },\n // NotificationSettingsAPIs\n webPushHideContents: {\n get: 'pleroma.notification_settings.hide_notification_contents',\n set: 'hide_notification_contents',\n api: notificationsApi\n },\n blockNotificationsFromStrangers: {\n get: 'pleroma.notification_settings.block_from_strangers',\n set: 'block_from_strangers',\n api: notificationsApi\n }\n}\n\nexport const defaultState = Object.fromEntries(Object.keys(settingsMap).map(key => [key, null]))\n\nconst serverSideConfig = {\n state: { ...defaultState },\n mutations: {\n confirmServerSideOption (state, { name, value }) {\n set(state, name, value)\n },\n wipeServerSideOption (state, { name }) {\n set(state, name, null)\n },\n wipeAllServerSideOptions (state) {\n Object.keys(settingsMap).forEach(key => {\n set(state, key, null)\n })\n },\n // Set the settings based on their path location\n setCurrentUser (state, user) {\n Object.entries(settingsMap).forEach((map) => {\n const [name, value] = map\n const { get: path = value } = value\n set(state, name, get(user._original, path))\n })\n }\n },\n actions: {\n setServerSideOption ({ rootState, state, commit, dispatch }, { name, value }) {\n const oldValue = get(state, name)\n const map = settingsMap[name]\n if (!map) throw new Error('Invalid server-side setting')\n const { set: path = map, api = defaultApi } = map\n commit('wipeServerSideOption', { name })\n\n api({ rootState, commit }, { path, value, oldValue })\n .catch((e) => {\n console.warn('Error setting server-side option:', e)\n commit('confirmServerSideOption', { name, value: oldValue })\n })\n },\n logout ({ commit }) {\n commit('wipeAllServerSideOptions')\n }\n }\n}\n\nexport default serverSideConfig\n","import { humanizeErrors } from '../../modules/errors'\n\nexport function StatusCodeError (statusCode, body, options, response) {\n this.name = 'StatusCodeError'\n this.statusCode = statusCode\n this.message = statusCode + ' - ' + (JSON && JSON.stringify ? JSON.stringify(body) : body)\n this.error = body // legacy attribute\n this.options = options\n this.response = response\n\n if (Error.captureStackTrace) { // required for non-V8 environments\n Error.captureStackTrace(this)\n }\n}\nStatusCodeError.prototype = Object.create(Error.prototype)\nStatusCodeError.prototype.constructor = StatusCodeError\n\nexport class RegistrationError extends Error {\n constructor (error) {\n super()\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this)\n }\n\n try {\n // the error is probably a JSON object with a single key, \"errors\", whose value is another JSON object containing the real errors\n if (typeof error === 'string') {\n error = JSON.parse(error)\n // eslint-disable-next-line\n if (error.hasOwnProperty('error')) {\n error = JSON.parse(error.error)\n }\n }\n\n if (typeof error === 'object') {\n const errorContents = JSON.parse(error.error)\n // keys will have the property that has the error, for example 'ap_id',\n // 'email' or 'captcha', the value will be an array of its error\n // like \"ap_id\": [\"has been taken\"] or \"captcha\": [\"Invalid CAPTCHA\"]\n\n // replace ap_id with username\n if (errorContents.ap_id) {\n errorContents.username = errorContents.ap_id\n delete errorContents.ap_id\n }\n\n this.message = humanizeErrors(errorContents)\n } else {\n this.message = error\n }\n } catch (e) {\n // can't parse it, so just treat it like a string\n this.message = error\n }\n }\n}\n","import { capitalize } from 'lodash'\n\nexport function humanizeErrors (errors) {\n return Object.entries(errors).reduce((errs, [k, val]) => {\n const message = val.reduce((acc, message) => {\n const key = capitalize(k.replace(/_/g, ' '))\n return acc + [key, message].join(' ') + '. '\n }, '')\n return [...errs, message]\n }, [])\n}\n","import { each, map, concat, last, get } from 'lodash'\nimport { parseStatus, parseSource, parseUser, parseNotification, parseAttachment, parseChat, parseLinkHeaderPagination } from '../entity_normalizer/entity_normalizer.service.js'\nimport { RegistrationError, StatusCodeError } from '../errors/errors'\n\n/* eslint-env browser */\nconst MUTES_IMPORT_URL = '/api/pleroma/mutes_import'\nconst BLOCKS_IMPORT_URL = '/api/pleroma/blocks_import'\nconst FOLLOW_IMPORT_URL = '/api/pleroma/follow_import'\nconst DELETE_ACCOUNT_URL = '/api/pleroma/delete_account'\nconst CHANGE_EMAIL_URL = '/api/pleroma/change_email'\nconst CHANGE_PASSWORD_URL = '/api/pleroma/change_password'\nconst MOVE_ACCOUNT_URL = '/api/pleroma/move_account'\nconst ALIASES_URL = '/api/pleroma/aliases'\nconst TAG_USER_URL = '/api/pleroma/admin/users/tag'\nconst PERMISSION_GROUP_URL = (screenName, right) => `/api/pleroma/admin/users/${screenName}/permission_group/${right}`\nconst ACTIVATE_USER_URL = '/api/pleroma/admin/users/activate'\nconst DEACTIVATE_USER_URL = '/api/pleroma/admin/users/deactivate'\nconst ADMIN_USERS_URL = '/api/pleroma/admin/users'\nconst SUGGESTIONS_URL = '/api/v1/suggestions'\nconst NOTIFICATION_SETTINGS_URL = '/api/pleroma/notification_settings'\nconst NOTIFICATION_READ_URL = '/api/v1/pleroma/notifications/read'\n\nconst MFA_SETTINGS_URL = '/api/pleroma/accounts/mfa'\nconst MFA_BACKUP_CODES_URL = '/api/pleroma/accounts/mfa/backup_codes'\n\nconst MFA_SETUP_OTP_URL = '/api/pleroma/accounts/mfa/setup/totp'\nconst MFA_CONFIRM_OTP_URL = '/api/pleroma/accounts/mfa/confirm/totp'\nconst MFA_DISABLE_OTP_URL = '/api/pleroma/accounts/mfa/totp'\n\nconst MASTODON_LOGIN_URL = '/api/v1/accounts/verify_credentials'\nconst MASTODON_REGISTRATION_URL = '/api/v1/accounts'\nconst MASTODON_USER_FAVORITES_TIMELINE_URL = '/api/v1/favourites'\nconst MASTODON_USER_NOTIFICATIONS_URL = '/api/v1/notifications'\nconst MASTODON_DISMISS_NOTIFICATION_URL = id => `/api/v1/notifications/${id}/dismiss`\nconst MASTODON_FAVORITE_URL = id => `/api/v1/statuses/${id}/favourite`\nconst MASTODON_UNFAVORITE_URL = id => `/api/v1/statuses/${id}/unfavourite`\nconst MASTODON_RETWEET_URL = id => `/api/v1/statuses/${id}/reblog`\nconst MASTODON_UNRETWEET_URL = id => `/api/v1/statuses/${id}/unreblog`\nconst MASTODON_DELETE_URL = id => `/api/v1/statuses/${id}`\nconst MASTODON_FOLLOW_URL = id => `/api/v1/accounts/${id}/follow`\nconst MASTODON_UNFOLLOW_URL = id => `/api/v1/accounts/${id}/unfollow`\nconst MASTODON_FOLLOWING_URL = id => `/api/v1/accounts/${id}/following`\nconst MASTODON_FOLLOWERS_URL = id => `/api/v1/accounts/${id}/followers`\nconst MASTODON_FOLLOW_REQUESTS_URL = '/api/v1/follow_requests'\nconst MASTODON_APPROVE_USER_URL = id => `/api/v1/follow_requests/${id}/authorize`\nconst MASTODON_DENY_USER_URL = id => `/api/v1/follow_requests/${id}/reject`\nconst MASTODON_DIRECT_MESSAGES_TIMELINE_URL = '/api/v1/timelines/direct'\nconst MASTODON_PUBLIC_TIMELINE = '/api/v1/timelines/public'\nconst MASTODON_USER_HOME_TIMELINE_URL = '/api/v1/timelines/home'\nconst MASTODON_STATUS_URL = id => `/api/v1/statuses/${id}`\nconst MASTODON_STATUS_CONTEXT_URL = id => `/api/v1/statuses/${id}/context`\nconst MASTODON_STATUS_SOURCE_URL = id => `/api/v1/statuses/${id}/source`\nconst MASTODON_STATUS_HISTORY_URL = id => `/api/v1/statuses/${id}/history`\nconst MASTODON_USER_URL = '/api/v1/accounts'\nconst MASTODON_USER_LOOKUP_URL = '/api/v1/accounts/lookup'\nconst MASTODON_USER_RELATIONSHIPS_URL = '/api/v1/accounts/relationships'\nconst MASTODON_USER_TIMELINE_URL = id => `/api/v1/accounts/${id}/statuses`\nconst MASTODON_USER_IN_LISTS = id => `/api/v1/accounts/${id}/lists`\nconst MASTODON_LIST_URL = id => `/api/v1/lists/${id}`\nconst MASTODON_LIST_TIMELINE_URL = id => `/api/v1/timelines/list/${id}`\nconst MASTODON_LIST_ACCOUNTS_URL = id => `/api/v1/lists/${id}/accounts`\nconst MASTODON_TAG_TIMELINE_URL = tag => `/api/v1/timelines/tag/${tag}`\nconst MASTODON_BOOKMARK_TIMELINE_URL = '/api/v1/bookmarks'\nconst MASTODON_USER_BLOCKS_URL = '/api/v1/blocks/'\nconst MASTODON_USER_MUTES_URL = '/api/v1/mutes/'\nconst MASTODON_BLOCK_USER_URL = id => `/api/v1/accounts/${id}/block`\nconst MASTODON_UNBLOCK_USER_URL = id => `/api/v1/accounts/${id}/unblock`\nconst MASTODON_MUTE_USER_URL = id => `/api/v1/accounts/${id}/mute`\nconst MASTODON_UNMUTE_USER_URL = id => `/api/v1/accounts/${id}/unmute`\nconst MASTODON_REMOVE_USER_FROM_FOLLOWERS = id => `/api/v1/accounts/${id}/remove_from_followers`\nconst MASTODON_SUBSCRIBE_USER = id => `/api/v1/pleroma/accounts/${id}/subscribe`\nconst MASTODON_UNSUBSCRIBE_USER = id => `/api/v1/pleroma/accounts/${id}/unsubscribe`\nconst MASTODON_USER_NOTE_URL = id => `/api/v1/accounts/${id}/note`\nconst MASTODON_BOOKMARK_STATUS_URL = id => `/api/v1/statuses/${id}/bookmark`\nconst MASTODON_UNBOOKMARK_STATUS_URL = id => `/api/v1/statuses/${id}/unbookmark`\nconst MASTODON_POST_STATUS_URL = '/api/v1/statuses'\nconst MASTODON_MEDIA_UPLOAD_URL = '/api/v1/media'\nconst MASTODON_VOTE_URL = id => `/api/v1/polls/${id}/votes`\nconst MASTODON_POLL_URL = id => `/api/v1/polls/${id}`\nconst MASTODON_STATUS_FAVORITEDBY_URL = id => `/api/v1/statuses/${id}/favourited_by`\nconst MASTODON_STATUS_REBLOGGEDBY_URL = id => `/api/v1/statuses/${id}/reblogged_by`\nconst MASTODON_PROFILE_UPDATE_URL = '/api/v1/accounts/update_credentials'\nconst MASTODON_REPORT_USER_URL = '/api/v1/reports'\nconst MASTODON_PIN_OWN_STATUS = id => `/api/v1/statuses/${id}/pin`\nconst MASTODON_UNPIN_OWN_STATUS = id => `/api/v1/statuses/${id}/unpin`\nconst MASTODON_MUTE_CONVERSATION = id => `/api/v1/statuses/${id}/mute`\nconst MASTODON_UNMUTE_CONVERSATION = id => `/api/v1/statuses/${id}/unmute`\nconst MASTODON_SEARCH_2 = '/api/v2/search'\nconst MASTODON_USER_SEARCH_URL = '/api/v1/accounts/search'\nconst MASTODON_DOMAIN_BLOCKS_URL = '/api/v1/domain_blocks'\nconst MASTODON_LISTS_URL = '/api/v1/lists'\nconst MASTODON_STREAMING = '/api/v1/streaming'\nconst MASTODON_KNOWN_DOMAIN_LIST_URL = '/api/v1/instance/peers'\nconst MASTODON_ANNOUNCEMENTS_URL = '/api/v1/announcements'\nconst MASTODON_ANNOUNCEMENTS_DISMISS_URL = id => `/api/v1/announcements/${id}/dismiss`\nconst PLEROMA_EMOJI_REACTIONS_URL = id => `/api/v1/pleroma/statuses/${id}/reactions`\nconst PLEROMA_EMOJI_REACT_URL = (id, emoji) => `/api/v1/pleroma/statuses/${id}/reactions/${emoji}`\nconst PLEROMA_EMOJI_UNREACT_URL = (id, emoji) => `/api/v1/pleroma/statuses/${id}/reactions/${emoji}`\nconst PLEROMA_CHATS_URL = '/api/v1/pleroma/chats'\nconst PLEROMA_CHAT_URL = id => `/api/v1/pleroma/chats/by-account-id/${id}`\nconst PLEROMA_CHAT_MESSAGES_URL = id => `/api/v1/pleroma/chats/${id}/messages`\nconst PLEROMA_CHAT_READ_URL = id => `/api/v1/pleroma/chats/${id}/read`\nconst PLEROMA_DELETE_CHAT_MESSAGE_URL = (chatId, messageId) => `/api/v1/pleroma/chats/${chatId}/messages/${messageId}`\nconst PLEROMA_ADMIN_REPORTS = '/api/pleroma/admin/reports'\nconst PLEROMA_BACKUP_URL = '/api/v1/pleroma/backups'\nconst PLEROMA_ANNOUNCEMENTS_URL = '/api/v1/pleroma/admin/announcements'\nconst PLEROMA_POST_ANNOUNCEMENT_URL = '/api/v1/pleroma/admin/announcements'\nconst PLEROMA_EDIT_ANNOUNCEMENT_URL = id => `/api/v1/pleroma/admin/announcements/${id}`\nconst PLEROMA_DELETE_ANNOUNCEMENT_URL = id => `/api/v1/pleroma/admin/announcements/${id}`\n\nconst oldfetch = window.fetch\n\nconst fetch = (url, options) => {\n options = options || {}\n const baseUrl = ''\n const fullUrl = baseUrl + url\n options.credentials = 'same-origin'\n return oldfetch(fullUrl, options)\n}\n\nconst promisedRequest = ({ method, url, params, payload, credentials, headers = {} }) => {\n const options = {\n method,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n ...headers\n }\n }\n if (params) {\n url += '?' + Object.entries(params)\n .map(([key, value]) => encodeURIComponent(key) + '=' + encodeURIComponent(value))\n .join('&')\n }\n if (payload) {\n options.body = JSON.stringify(payload)\n }\n if (credentials) {\n options.headers = {\n ...options.headers,\n ...authHeaders(credentials)\n }\n }\n return fetch(url, options)\n .then((response) => {\n return new Promise((resolve, reject) => response.json()\n .then((json) => {\n if (!response.ok) {\n return reject(new StatusCodeError(response.status, json, { url, options }, response))\n }\n return resolve(json)\n })\n .catch((error) => {\n return reject(new StatusCodeError(response.status, error, { url, options }, response))\n })\n )\n })\n}\n\nconst updateNotificationSettings = ({ credentials, settings }) => {\n const form = new FormData()\n\n each(settings, (value, key) => {\n form.append(key, value)\n })\n\n return fetch(`${NOTIFICATION_SETTINGS_URL}?${new URLSearchParams(settings)}`, {\n headers: authHeaders(credentials),\n method: 'PUT',\n body: form\n }).then((data) => data.json())\n}\n\nconst updateProfileImages = ({ credentials, avatar = null, avatarName = null, banner = null, background = null }) => {\n const form = new FormData()\n if (avatar !== null) {\n if (avatarName !== null) {\n form.append('avatar', avatar, avatarName)\n } else {\n form.append('avatar', avatar)\n }\n }\n if (banner !== null) form.append('header', banner)\n if (background !== null) form.append('pleroma_background_image', background)\n return fetch(MASTODON_PROFILE_UPDATE_URL, {\n headers: authHeaders(credentials),\n method: 'PATCH',\n body: form\n })\n .then((data) => data.json())\n .then((data) => {\n if (data.error) {\n throw new Error(data.error)\n }\n return parseUser(data)\n })\n}\n\nconst updateProfile = ({ credentials, params }) => {\n return promisedRequest({\n url: MASTODON_PROFILE_UPDATE_URL,\n method: 'PATCH',\n payload: params,\n credentials\n }).then((data) => parseUser(data))\n}\n\n// Params needed:\n// nickname\n// email\n// fullname\n// password\n// password_confirm\n//\n// Optional\n// bio\n// homepage\n// location\n// token\n// language\nconst register = ({ params, credentials }) => {\n const { nickname, ...rest } = params\n return fetch(MASTODON_REGISTRATION_URL, {\n method: 'POST',\n headers: {\n ...authHeaders(credentials),\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n nickname,\n locale: 'en_US',\n agreement: true,\n ...rest\n })\n })\n .then((response) => {\n if (response.ok) {\n return response.json()\n } else {\n return response.json().then((error) => { throw new RegistrationError(error) })\n }\n })\n}\n\nconst getCaptcha = () => fetch('/api/pleroma/captcha').then(resp => resp.json())\n\nconst authHeaders = (accessToken) => {\n if (accessToken) {\n return { Authorization: `Bearer ${accessToken}` }\n } else {\n return { }\n }\n}\n\nconst followUser = ({ id, credentials, ...options }) => {\n const url = MASTODON_FOLLOW_URL(id)\n const form = {}\n if (options.reblogs !== undefined) { form.reblogs = options.reblogs }\n return fetch(url, {\n body: JSON.stringify(form),\n headers: {\n ...authHeaders(credentials),\n 'Content-Type': 'application/json'\n },\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst unfollowUser = ({ id, credentials }) => {\n const url = MASTODON_UNFOLLOW_URL(id)\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst fetchUserInLists = ({ id, credentials }) => {\n const url = MASTODON_USER_IN_LISTS(id)\n return fetch(url, {\n headers: authHeaders(credentials)\n }).then((data) => data.json())\n}\n\nconst pinOwnStatus = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_PIN_OWN_STATUS(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst unpinOwnStatus = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNPIN_OWN_STATUS(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst muteConversation = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_MUTE_CONVERSATION(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst unmuteConversation = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNMUTE_CONVERSATION(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst blockUser = ({ id, credentials }) => {\n return fetch(MASTODON_BLOCK_USER_URL(id), {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst unblockUser = ({ id, credentials }) => {\n return fetch(MASTODON_UNBLOCK_USER_URL(id), {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst removeUserFromFollowers = ({ id, credentials }) => {\n return fetch(MASTODON_REMOVE_USER_FROM_FOLLOWERS(id), {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst editUserNote = ({ id, credentials, comment }) => {\n return promisedRequest({\n url: MASTODON_USER_NOTE_URL(id),\n credentials,\n payload: {\n comment\n },\n method: 'POST'\n })\n}\n\nconst approveUser = ({ id, credentials }) => {\n const url = MASTODON_APPROVE_USER_URL(id)\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst denyUser = ({ id, credentials }) => {\n const url = MASTODON_DENY_USER_URL(id)\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst fetchUser = ({ id, credentials }) => {\n const url = `${MASTODON_USER_URL}/${id}`\n return promisedRequest({ url, credentials })\n .then((data) => parseUser(data))\n}\n\nconst fetchUserByName = ({ name, credentials }) => {\n return promisedRequest({\n url: MASTODON_USER_LOOKUP_URL,\n credentials,\n params: { acct: name }\n })\n .then(data => data.id)\n .catch(error => {\n if (error && error.statusCode === 404) {\n // Either the backend does not support lookup endpoint,\n // or there is no user with such name. Fallback and treat name as id.\n return name\n } else {\n throw error\n }\n })\n .then(id => fetchUser({ id, credentials }))\n}\n\nconst fetchUserRelationship = ({ id, credentials }) => {\n const url = `${MASTODON_USER_RELATIONSHIPS_URL}/?id=${id}`\n return fetch(url, { headers: authHeaders(credentials) })\n .then((response) => {\n return new Promise((resolve, reject) => response.json()\n .then((json) => {\n if (!response.ok) {\n return reject(new StatusCodeError(response.status, json, { url }, response))\n }\n return resolve(json)\n }))\n })\n}\n\nconst fetchFriends = ({ id, maxId, sinceId, limit = 20, credentials }) => {\n let url = MASTODON_FOLLOWING_URL(id)\n const args = [\n maxId && `max_id=${maxId}`,\n sinceId && `since_id=${sinceId}`,\n limit && `limit=${limit}`,\n 'with_relationships=true'\n ].filter(_ => _).join('&')\n\n url = url + (args ? '?' + args : '')\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => data.map(parseUser))\n}\n\nconst exportFriends = ({ id, credentials }) => {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async (resolve, reject) => {\n try {\n let friends = []\n let more = true\n while (more) {\n const maxId = friends.length > 0 ? last(friends).id : undefined\n const users = await fetchFriends({ id, maxId, credentials })\n friends = concat(friends, users)\n if (users.length === 0) {\n more = false\n }\n }\n resolve(friends)\n } catch (err) {\n reject(err)\n }\n })\n}\n\nconst fetchFollowers = ({ id, maxId, sinceId, limit = 20, credentials }) => {\n let url = MASTODON_FOLLOWERS_URL(id)\n const args = [\n maxId && `max_id=${maxId}`,\n sinceId && `since_id=${sinceId}`,\n limit && `limit=${limit}`,\n 'with_relationships=true'\n ].filter(_ => _).join('&')\n\n url += args ? '?' + args : ''\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => data.map(parseUser))\n}\n\nconst fetchFollowRequests = ({ credentials }) => {\n const url = MASTODON_FOLLOW_REQUESTS_URL\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => data.map(parseUser))\n}\n\nconst fetchLists = ({ credentials }) => {\n const url = MASTODON_LISTS_URL\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n}\n\nconst createList = ({ title, credentials }) => {\n const url = MASTODON_LISTS_URL\n const headers = authHeaders(credentials)\n headers['Content-Type'] = 'application/json'\n\n return fetch(url, {\n headers,\n method: 'POST',\n body: JSON.stringify({ title })\n }).then((data) => data.json())\n}\n\nconst getList = ({ listId, credentials }) => {\n const url = MASTODON_LIST_URL(listId)\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n}\n\nconst updateList = ({ listId, title, credentials }) => {\n const url = MASTODON_LIST_URL(listId)\n const headers = authHeaders(credentials)\n headers['Content-Type'] = 'application/json'\n\n return fetch(url, {\n headers,\n method: 'PUT',\n body: JSON.stringify({ title })\n })\n}\n\nconst getListAccounts = ({ listId, credentials }) => {\n const url = MASTODON_LIST_ACCOUNTS_URL(listId)\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => data.map(({ id }) => id))\n}\n\nconst addAccountsToList = ({ listId, accountIds, credentials }) => {\n const url = MASTODON_LIST_ACCOUNTS_URL(listId)\n const headers = authHeaders(credentials)\n headers['Content-Type'] = 'application/json'\n\n return fetch(url, {\n headers,\n method: 'POST',\n body: JSON.stringify({ account_ids: accountIds })\n })\n}\n\nconst removeAccountsFromList = ({ listId, accountIds, credentials }) => {\n const url = MASTODON_LIST_ACCOUNTS_URL(listId)\n const headers = authHeaders(credentials)\n headers['Content-Type'] = 'application/json'\n\n return fetch(url, {\n headers,\n method: 'DELETE',\n body: JSON.stringify({ account_ids: accountIds })\n })\n}\n\nconst deleteList = ({ listId, credentials }) => {\n const url = MASTODON_LIST_URL(listId)\n return fetch(url, {\n method: 'DELETE',\n headers: authHeaders(credentials)\n })\n}\n\nconst fetchConversation = ({ id, credentials }) => {\n const urlContext = MASTODON_STATUS_CONTEXT_URL(id)\n return fetch(urlContext, { headers: authHeaders(credentials) })\n .then((data) => {\n if (data.ok) {\n return data\n }\n throw new Error('Error fetching timeline', data)\n })\n .then((data) => data.json())\n .then(({ ancestors, descendants }) => ({\n ancestors: ancestors.map(parseStatus),\n descendants: descendants.map(parseStatus)\n }))\n}\n\nconst fetchStatus = ({ id, credentials }) => {\n const url = MASTODON_STATUS_URL(id)\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => {\n if (data.ok) {\n return data\n }\n throw new Error('Error fetching timeline', data)\n })\n .then((data) => data.json())\n .then((data) => parseStatus(data))\n}\n\nconst fetchStatusSource = ({ id, credentials }) => {\n const url = MASTODON_STATUS_SOURCE_URL(id)\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => {\n if (data.ok) {\n return data\n }\n throw new Error('Error fetching source', data)\n })\n .then((data) => data.json())\n .then((data) => parseSource(data))\n}\n\nconst fetchStatusHistory = ({ status, credentials }) => {\n const url = MASTODON_STATUS_HISTORY_URL(status.id)\n return promisedRequest({ url, credentials })\n .then((data) => {\n data.reverse()\n return data.map((item) => {\n item.originalStatus = status\n return parseStatus(item)\n })\n })\n}\n\nconst tagUser = ({ tag, credentials, user }) => {\n const screenName = user.screen_name\n const form = {\n nicknames: [screenName],\n tags: [tag]\n }\n\n const headers = authHeaders(credentials)\n headers['Content-Type'] = 'application/json'\n\n return fetch(TAG_USER_URL, {\n method: 'PUT',\n headers,\n body: JSON.stringify(form)\n })\n}\n\nconst untagUser = ({ tag, credentials, user }) => {\n const screenName = user.screen_name\n const body = {\n nicknames: [screenName],\n tags: [tag]\n }\n\n const headers = authHeaders(credentials)\n headers['Content-Type'] = 'application/json'\n\n return fetch(TAG_USER_URL, {\n method: 'DELETE',\n headers,\n body: JSON.stringify(body)\n })\n}\n\nconst addRight = ({ right, credentials, user }) => {\n const screenName = user.screen_name\n\n return fetch(PERMISSION_GROUP_URL(screenName, right), {\n method: 'POST',\n headers: authHeaders(credentials),\n body: {}\n })\n}\n\nconst deleteRight = ({ right, credentials, user }) => {\n const screenName = user.screen_name\n\n return fetch(PERMISSION_GROUP_URL(screenName, right), {\n method: 'DELETE',\n headers: authHeaders(credentials),\n body: {}\n })\n}\n\nconst activateUser = ({ credentials, user: { screen_name: nickname } }) => {\n return promisedRequest({\n url: ACTIVATE_USER_URL,\n method: 'PATCH',\n credentials,\n payload: {\n nicknames: [nickname]\n }\n }).then(response => get(response, 'users.0'))\n}\n\nconst deactivateUser = ({ credentials, user: { screen_name: nickname } }) => {\n return promisedRequest({\n url: DEACTIVATE_USER_URL,\n method: 'PATCH',\n credentials,\n payload: {\n nicknames: [nickname]\n }\n }).then(response => get(response, 'users.0'))\n}\n\nconst deleteUser = ({ credentials, user }) => {\n const screenName = user.screen_name\n const headers = authHeaders(credentials)\n\n return fetch(`${ADMIN_USERS_URL}?nickname=${screenName}`, {\n method: 'DELETE',\n headers\n })\n}\n\nconst fetchTimeline = ({\n timeline,\n credentials,\n since = false,\n until = false,\n userId = false,\n listId = false,\n tag = false,\n withMuted = false,\n replyVisibility = 'all',\n includeTypes = []\n}) => {\n const timelineUrls = {\n public: MASTODON_PUBLIC_TIMELINE,\n friends: MASTODON_USER_HOME_TIMELINE_URL,\n dms: MASTODON_DIRECT_MESSAGES_TIMELINE_URL,\n notifications: MASTODON_USER_NOTIFICATIONS_URL,\n publicAndExternal: MASTODON_PUBLIC_TIMELINE,\n user: MASTODON_USER_TIMELINE_URL,\n media: MASTODON_USER_TIMELINE_URL,\n list: MASTODON_LIST_TIMELINE_URL,\n favorites: MASTODON_USER_FAVORITES_TIMELINE_URL,\n tag: MASTODON_TAG_TIMELINE_URL,\n bookmarks: MASTODON_BOOKMARK_TIMELINE_URL\n }\n const isNotifications = timeline === 'notifications'\n const params = []\n\n let url = timelineUrls[timeline]\n\n if (timeline === 'user' || timeline === 'media') {\n url = url(userId)\n }\n\n if (timeline === 'list') {\n url = url(listId)\n }\n\n if (since) {\n params.push(['since_id', since])\n }\n if (until) {\n params.push(['max_id', until])\n }\n if (tag) {\n url = url(tag)\n }\n if (timeline === 'media') {\n params.push(['only_media', 1])\n }\n if (timeline === 'public') {\n params.push(['local', true])\n }\n if (timeline === 'public' || timeline === 'publicAndExternal') {\n params.push(['only_media', false])\n }\n if (timeline !== 'favorites' && timeline !== 'bookmarks') {\n params.push(['with_muted', withMuted])\n }\n if (replyVisibility !== 'all') {\n params.push(['reply_visibility', replyVisibility])\n }\n if (includeTypes.length > 0) {\n includeTypes.forEach(type => {\n params.push(['include_types[]', type])\n })\n }\n\n params.push(['limit', 20])\n\n const queryString = map(params, (param) => `${param[0]}=${param[1]}`).join('&')\n url += `?${queryString}`\n\n return fetch(url, { headers: authHeaders(credentials) })\n .then(async (response) => {\n const success = response.ok\n\n const data = await response.json()\n\n if (success && !data.errors) {\n const pagination = parseLinkHeaderPagination(response.headers.get('Link'), {\n flakeId: timeline !== 'bookmarks' && timeline !== 'notifications'\n })\n\n return { data: data.map(isNotifications ? parseNotification : parseStatus), pagination }\n } else {\n data.errors ||= []\n data.status = response.status\n data.statusText = response.statusText\n return data\n }\n })\n}\n\nconst fetchPinnedStatuses = ({ id, credentials }) => {\n const url = MASTODON_USER_TIMELINE_URL(id) + '?pinned=true'\n return promisedRequest({ url, credentials })\n .then((data) => data.map(parseStatus))\n}\n\nconst verifyCredentials = (user) => {\n return fetch(MASTODON_LOGIN_URL, {\n headers: authHeaders(user)\n })\n .then((response) => {\n if (response.ok) {\n return response.json()\n } else {\n return {\n error: response\n }\n }\n })\n .then((data) => data.error ? data : parseUser(data))\n}\n\nconst favorite = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_FAVORITE_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst unfavorite = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNFAVORITE_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst retweet = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_RETWEET_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst unretweet = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNRETWEET_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst bookmarkStatus = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_BOOKMARK_STATUS_URL(id),\n headers: authHeaders(credentials),\n method: 'POST'\n })\n}\n\nconst unbookmarkStatus = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_UNBOOKMARK_STATUS_URL(id),\n headers: authHeaders(credentials),\n method: 'POST'\n })\n}\n\nconst postStatus = ({\n credentials,\n status,\n spoilerText,\n visibility,\n sensitive,\n poll,\n mediaIds = [],\n inReplyToStatusId,\n contentType,\n preview,\n idempotencyKey\n}) => {\n const form = new FormData()\n const pollOptions = poll.options || []\n\n form.append('status', status)\n form.append('source', 'Pleroma FE')\n if (spoilerText) form.append('spoiler_text', spoilerText)\n if (visibility) form.append('visibility', visibility)\n if (sensitive) form.append('sensitive', sensitive)\n if (contentType) form.append('content_type', contentType)\n mediaIds.forEach(val => {\n form.append('media_ids[]', val)\n })\n if (pollOptions.some(option => option !== '')) {\n const normalizedPoll = {\n expires_in: poll.expiresIn,\n multiple: poll.multiple\n }\n Object.keys(normalizedPoll).forEach(key => {\n form.append(`poll[${key}]`, normalizedPoll[key])\n })\n\n pollOptions.forEach(option => {\n form.append('poll[options][]', option)\n })\n }\n if (inReplyToStatusId) {\n form.append('in_reply_to_id', inReplyToStatusId)\n }\n if (preview) {\n form.append('preview', 'true')\n }\n\n const postHeaders = authHeaders(credentials)\n if (idempotencyKey) {\n postHeaders['idempotency-key'] = idempotencyKey\n }\n\n return fetch(MASTODON_POST_STATUS_URL, {\n body: form,\n method: 'POST',\n headers: postHeaders\n })\n .then((response) => {\n return response.json()\n })\n .then((data) => data.error ? data : parseStatus(data))\n}\n\nconst editStatus = ({\n id,\n credentials,\n status,\n spoilerText,\n sensitive,\n poll,\n mediaIds = [],\n contentType\n}) => {\n const form = new FormData()\n const pollOptions = poll.options || []\n\n form.append('status', status)\n if (spoilerText) form.append('spoiler_text', spoilerText)\n if (sensitive) form.append('sensitive', sensitive)\n if (contentType) form.append('content_type', contentType)\n mediaIds.forEach(val => {\n form.append('media_ids[]', val)\n })\n\n if (pollOptions.some(option => option !== '')) {\n const normalizedPoll = {\n expires_in: poll.expiresIn,\n multiple: poll.multiple\n }\n Object.keys(normalizedPoll).forEach(key => {\n form.append(`poll[${key}]`, normalizedPoll[key])\n })\n\n pollOptions.forEach(option => {\n form.append('poll[options][]', option)\n })\n }\n\n const putHeaders = authHeaders(credentials)\n\n return fetch(MASTODON_STATUS_URL(id), {\n body: form,\n method: 'PUT',\n headers: putHeaders\n })\n .then((response) => {\n return response.json()\n })\n .then((data) => data.error ? data : parseStatus(data))\n}\n\nconst deleteStatus = ({ id, credentials }) => {\n return fetch(MASTODON_DELETE_URL(id), {\n headers: authHeaders(credentials),\n method: 'DELETE'\n })\n}\n\nconst uploadMedia = ({ formData, credentials }) => {\n return fetch(MASTODON_MEDIA_UPLOAD_URL, {\n body: formData,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((data) => data.json())\n .then((data) => parseAttachment(data))\n}\n\nconst setMediaDescription = ({ id, description, credentials }) => {\n return promisedRequest({\n url: `${MASTODON_MEDIA_UPLOAD_URL}/${id}`,\n method: 'PUT',\n headers: authHeaders(credentials),\n payload: {\n description\n }\n }).then((data) => parseAttachment(data))\n}\n\nconst importMutes = ({ file, credentials }) => {\n const formData = new FormData()\n formData.append('list', file)\n return fetch(MUTES_IMPORT_URL, {\n body: formData,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.ok)\n}\n\nconst importBlocks = ({ file, credentials }) => {\n const formData = new FormData()\n formData.append('list', file)\n return fetch(BLOCKS_IMPORT_URL, {\n body: formData,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.ok)\n}\n\nconst importFollows = ({ file, credentials }) => {\n const formData = new FormData()\n formData.append('list', file)\n return fetch(FOLLOW_IMPORT_URL, {\n body: formData,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.ok)\n}\n\nconst deleteAccount = ({ credentials, password }) => {\n const form = new FormData()\n\n form.append('password', password)\n\n return fetch(DELETE_ACCOUNT_URL, {\n body: form,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst changeEmail = ({ credentials, email, password }) => {\n const form = new FormData()\n\n form.append('email', email)\n form.append('password', password)\n\n return fetch(CHANGE_EMAIL_URL, {\n body: form,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst moveAccount = ({ credentials, password, targetAccount }) => {\n const form = new FormData()\n\n form.append('password', password)\n form.append('target_account', targetAccount)\n\n return fetch(MOVE_ACCOUNT_URL, {\n body: form,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst addAlias = ({ credentials, alias }) => {\n return promisedRequest({\n url: ALIASES_URL,\n method: 'PUT',\n credentials,\n payload: { alias }\n })\n}\n\nconst deleteAlias = ({ credentials, alias }) => {\n return promisedRequest({\n url: ALIASES_URL,\n method: 'DELETE',\n credentials,\n payload: { alias }\n })\n}\n\nconst listAliases = ({ credentials }) => {\n return promisedRequest({\n url: ALIASES_URL,\n method: 'GET',\n credentials,\n params: {\n _cacheBooster: (new Date()).getTime()\n }\n })\n}\n\nconst changePassword = ({ credentials, password, newPassword, newPasswordConfirmation }) => {\n const form = new FormData()\n\n form.append('password', password)\n form.append('new_password', newPassword)\n form.append('new_password_confirmation', newPasswordConfirmation)\n\n return fetch(CHANGE_PASSWORD_URL, {\n body: form,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst settingsMFA = ({ credentials }) => {\n return fetch(MFA_SETTINGS_URL, {\n headers: authHeaders(credentials),\n method: 'GET'\n }).then((data) => data.json())\n}\n\nconst mfaDisableOTP = ({ credentials, password }) => {\n const form = new FormData()\n\n form.append('password', password)\n\n return fetch(MFA_DISABLE_OTP_URL, {\n body: form,\n method: 'DELETE',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst mfaConfirmOTP = ({ credentials, password, token }) => {\n const form = new FormData()\n\n form.append('password', password)\n form.append('code', token)\n\n return fetch(MFA_CONFIRM_OTP_URL, {\n body: form,\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\nconst mfaSetupOTP = ({ credentials }) => {\n return fetch(MFA_SETUP_OTP_URL, {\n headers: authHeaders(credentials),\n method: 'GET'\n }).then((data) => data.json())\n}\nconst generateMfaBackupCodes = ({ credentials }) => {\n return fetch(MFA_BACKUP_CODES_URL, {\n headers: authHeaders(credentials),\n method: 'GET'\n }).then((data) => data.json())\n}\n\nconst fetchMutes = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_USER_MUTES_URL, credentials })\n .then((users) => users.map(parseUser))\n}\n\nconst muteUser = ({ id, expiresIn, credentials }) => {\n const payload = {}\n if (expiresIn) {\n payload.expires_in = expiresIn\n }\n return promisedRequest({ url: MASTODON_MUTE_USER_URL(id), credentials, method: 'POST', payload })\n}\n\nconst unmuteUser = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNMUTE_USER_URL(id), credentials, method: 'POST' })\n}\n\nconst subscribeUser = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_SUBSCRIBE_USER(id), credentials, method: 'POST' })\n}\n\nconst unsubscribeUser = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNSUBSCRIBE_USER(id), credentials, method: 'POST' })\n}\n\nconst fetchBlocks = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_USER_BLOCKS_URL, credentials })\n .then((users) => users.map(parseUser))\n}\n\nconst addBackup = ({ credentials }) => {\n return promisedRequest({\n url: PLEROMA_BACKUP_URL,\n method: 'POST',\n credentials\n })\n}\n\nconst listBackups = ({ credentials }) => {\n return promisedRequest({\n url: PLEROMA_BACKUP_URL,\n method: 'GET',\n credentials,\n params: {\n _cacheBooster: (new Date()).getTime()\n }\n })\n}\n\nconst fetchOAuthTokens = ({ credentials }) => {\n const url = '/api/oauth_tokens.json'\n\n return fetch(url, {\n headers: authHeaders(credentials)\n }).then((data) => {\n if (data.ok) {\n return data.json()\n }\n throw new Error('Error fetching auth tokens', data)\n })\n}\n\nconst revokeOAuthToken = ({ id, credentials }) => {\n const url = `/api/oauth_tokens/${id}`\n\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'DELETE'\n })\n}\n\nconst suggestions = ({ credentials }) => {\n return fetch(SUGGESTIONS_URL, {\n headers: authHeaders(credentials)\n }).then((data) => data.json())\n}\n\nconst markNotificationsAsSeen = ({ id, credentials, single = false }) => {\n const body = new FormData()\n\n if (single) {\n body.append('id', id)\n } else {\n body.append('max_id', id)\n }\n\n return fetch(NOTIFICATION_READ_URL, {\n body,\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst vote = ({ pollId, choices, credentials }) => {\n const form = new FormData()\n form.append('choices', choices)\n\n return promisedRequest({\n url: MASTODON_VOTE_URL(encodeURIComponent(pollId)),\n method: 'POST',\n credentials,\n payload: {\n choices\n }\n })\n}\n\nconst fetchPoll = ({ pollId, credentials }) => {\n return promisedRequest(\n {\n url: MASTODON_POLL_URL(encodeURIComponent(pollId)),\n method: 'GET',\n credentials\n }\n )\n}\n\nconst fetchFavoritedByUsers = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_STATUS_FAVORITEDBY_URL(id),\n method: 'GET',\n credentials\n }).then((users) => users.map(parseUser))\n}\n\nconst fetchRebloggedByUsers = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_STATUS_REBLOGGEDBY_URL(id),\n method: 'GET',\n credentials\n }).then((users) => users.map(parseUser))\n}\n\nconst fetchEmojiReactions = ({ id, credentials }) => {\n return promisedRequest({ url: PLEROMA_EMOJI_REACTIONS_URL(id), credentials })\n .then((reactions) => reactions.map(r => {\n r.accounts = r.accounts.map(parseUser)\n return r\n }))\n}\n\nconst reactWithEmoji = ({ id, emoji, credentials }) => {\n return promisedRequest({\n url: PLEROMA_EMOJI_REACT_URL(id, emoji),\n method: 'PUT',\n credentials\n }).then(parseStatus)\n}\n\nconst unreactWithEmoji = ({ id, emoji, credentials }) => {\n return promisedRequest({\n url: PLEROMA_EMOJI_UNREACT_URL(id, emoji),\n method: 'DELETE',\n credentials\n }).then(parseStatus)\n}\n\nconst reportUser = ({ credentials, userId, statusIds, comment, forward }) => {\n return promisedRequest({\n url: MASTODON_REPORT_USER_URL,\n method: 'POST',\n payload: {\n account_id: userId,\n status_ids: statusIds,\n comment,\n forward\n },\n credentials\n })\n}\n\nconst searchUsers = ({ credentials, query }) => {\n return promisedRequest({\n url: MASTODON_USER_SEARCH_URL,\n params: {\n q: query,\n resolve: true\n },\n credentials\n })\n .then((data) => data.map(parseUser))\n}\n\nconst search2 = ({ credentials, q, resolve, limit, offset, following, type }) => {\n let url = MASTODON_SEARCH_2\n const params = []\n\n if (q) {\n params.push(['q', encodeURIComponent(q)])\n }\n\n if (resolve) {\n params.push(['resolve', resolve])\n }\n\n if (limit) {\n params.push(['limit', limit])\n }\n\n if (offset) {\n params.push(['offset', offset])\n }\n\n if (following) {\n params.push(['following', true])\n }\n\n if (type) {\n params.push(['following', type])\n }\n\n params.push(['with_relationships', true])\n\n const queryString = map(params, (param) => `${param[0]}=${param[1]}`).join('&')\n url += `?${queryString}`\n\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => {\n if (data.ok) {\n return data\n }\n throw new Error('Error fetching search result', data)\n })\n .then((data) => { return data.json() })\n .then((data) => {\n data.accounts = data.accounts.slice(0, limit).map(u => parseUser(u))\n data.statuses = data.statuses.slice(0, limit).map(s => parseStatus(s))\n return data\n })\n}\n\nconst fetchKnownDomains = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_KNOWN_DOMAIN_LIST_URL, credentials })\n}\n\nconst fetchDomainMutes = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_DOMAIN_BLOCKS_URL, credentials })\n}\n\nconst muteDomain = ({ domain, credentials }) => {\n return promisedRequest({\n url: MASTODON_DOMAIN_BLOCKS_URL,\n method: 'POST',\n payload: { domain },\n credentials\n })\n}\n\nconst unmuteDomain = ({ domain, credentials }) => {\n return promisedRequest({\n url: MASTODON_DOMAIN_BLOCKS_URL,\n method: 'DELETE',\n payload: { domain },\n credentials\n })\n}\n\nconst dismissNotification = ({ credentials, id }) => {\n return promisedRequest({\n url: MASTODON_DISMISS_NOTIFICATION_URL(id),\n method: 'POST',\n payload: { id },\n credentials\n })\n}\n\nconst adminFetchAnnouncements = ({ credentials }) => {\n return promisedRequest({ url: PLEROMA_ANNOUNCEMENTS_URL, credentials })\n}\n\nconst fetchAnnouncements = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_ANNOUNCEMENTS_URL, credentials })\n}\n\nconst dismissAnnouncement = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_ANNOUNCEMENTS_DISMISS_URL(id),\n credentials,\n method: 'POST'\n })\n}\n\nconst announcementToPayload = ({ content, startsAt, endsAt, allDay }) => {\n const payload = { content }\n\n if (typeof startsAt !== 'undefined') {\n payload.starts_at = startsAt ? new Date(startsAt).toISOString() : null\n }\n\n if (typeof endsAt !== 'undefined') {\n payload.ends_at = endsAt ? new Date(endsAt).toISOString() : null\n }\n\n if (typeof allDay !== 'undefined') {\n payload.all_day = allDay\n }\n\n return payload\n}\n\nconst postAnnouncement = ({ credentials, content, startsAt, endsAt, allDay }) => {\n return promisedRequest({\n url: PLEROMA_POST_ANNOUNCEMENT_URL,\n credentials,\n method: 'POST',\n payload: announcementToPayload({ content, startsAt, endsAt, allDay })\n })\n}\n\nconst editAnnouncement = ({ id, credentials, content, startsAt, endsAt, allDay }) => {\n return promisedRequest({\n url: PLEROMA_EDIT_ANNOUNCEMENT_URL(id),\n credentials,\n method: 'PATCH',\n payload: announcementToPayload({ content, startsAt, endsAt, allDay })\n })\n}\n\nconst deleteAnnouncement = ({ id, credentials }) => {\n return promisedRequest({\n url: PLEROMA_DELETE_ANNOUNCEMENT_URL(id),\n credentials,\n method: 'DELETE'\n })\n}\n\nexport const getMastodonSocketURI = ({ credentials, stream, args = {} }) => {\n return Object.entries({\n ...(credentials\n ? { access_token: credentials }\n : {}\n ),\n stream,\n ...args\n }).reduce((acc, [key, val]) => {\n return acc + `${key}=${val}&`\n }, MASTODON_STREAMING + '?')\n}\n\nconst MASTODON_STREAMING_EVENTS = new Set([\n 'update',\n 'notification',\n 'delete',\n 'filters_changed',\n 'status.update'\n])\n\nconst PLEROMA_STREAMING_EVENTS = new Set([\n 'pleroma:chat_update'\n])\n\n// A thin wrapper around WebSocket API that allows adding a pre-processor to it\n// Uses EventTarget and a CustomEvent to proxy events\nexport const ProcessedWS = ({\n url,\n preprocessor = handleMastoWS,\n id = 'Unknown'\n}) => {\n const eventTarget = new EventTarget()\n const socket = new WebSocket(url)\n if (!socket) throw new Error(`Failed to create socket ${id}`)\n const proxy = (original, eventName, processor = a => a) => {\n original.addEventListener(eventName, (eventData) => {\n eventTarget.dispatchEvent(new CustomEvent(\n eventName,\n { detail: processor(eventData) }\n ))\n })\n }\n socket.addEventListener('open', (wsEvent) => {\n console.debug(`[WS][${id}] Socket connected`, wsEvent)\n })\n socket.addEventListener('error', (wsEvent) => {\n console.debug(`[WS][${id}] Socket errored`, wsEvent)\n })\n socket.addEventListener('close', (wsEvent) => {\n console.debug(\n `[WS][${id}] Socket disconnected with code ${wsEvent.code}`,\n wsEvent\n )\n })\n // Commented code reason: very spammy, uncomment to enable message debug logging\n /*\n socket.addEventListener('message', (wsEvent) => {\n console.debug(\n `[WS][${id}] Message received`,\n wsEvent\n )\n })\n /**/\n\n proxy(socket, 'open')\n proxy(socket, 'close')\n proxy(socket, 'message', preprocessor)\n proxy(socket, 'error')\n\n // 1000 = Normal Closure\n eventTarget.close = () => { socket.close(1000, 'Shutting down socket') }\n eventTarget.getState = () => socket.readyState\n\n return eventTarget\n}\n\nexport const handleMastoWS = (wsEvent) => {\n const { data } = wsEvent\n if (!data) return\n const parsedEvent = JSON.parse(data)\n const { event, payload } = parsedEvent\n if (MASTODON_STREAMING_EVENTS.has(event) || PLEROMA_STREAMING_EVENTS.has(event)) {\n // MastoBE and PleromaBE both send payload for delete as a PLAIN string\n if (event === 'delete') {\n return { event, id: payload }\n }\n const data = payload ? JSON.parse(payload) : null\n if (event === 'update') {\n return { event, status: parseStatus(data) }\n } else if (event === 'status.update') {\n return { event, status: parseStatus(data) }\n } else if (event === 'notification') {\n return { event, notification: parseNotification(data) }\n } else if (event === 'pleroma:chat_update') {\n return { event, chatUpdate: parseChat(data) }\n }\n } else {\n console.warn('Unknown event', wsEvent)\n return null\n }\n}\n\nexport const WSConnectionStatus = Object.freeze({\n JOINED: 1,\n CLOSED: 2,\n ERROR: 3,\n DISABLED: 4,\n STARTING: 5,\n STARTING_INITIAL: 6\n})\n\nconst chats = ({ credentials }) => {\n return fetch(PLEROMA_CHATS_URL, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => {\n return { chats: data.map(parseChat).filter(c => c) }\n })\n}\n\nconst getOrCreateChat = ({ accountId, credentials }) => {\n return promisedRequest({\n url: PLEROMA_CHAT_URL(accountId),\n method: 'POST',\n credentials\n })\n}\n\nconst chatMessages = ({ id, credentials, maxId, sinceId, limit = 20 }) => {\n let url = PLEROMA_CHAT_MESSAGES_URL(id)\n const args = [\n maxId && `max_id=${maxId}`,\n sinceId && `since_id=${sinceId}`,\n limit && `limit=${limit}`\n ].filter(_ => _).join('&')\n\n url = url + (args ? '?' + args : '')\n\n return promisedRequest({\n url,\n method: 'GET',\n credentials\n })\n}\n\nconst sendChatMessage = ({ id, content, mediaId = null, idempotencyKey, credentials }) => {\n const payload = {\n content\n }\n\n if (mediaId) {\n payload.media_id = mediaId\n }\n\n const headers = {}\n\n if (idempotencyKey) {\n headers['idempotency-key'] = idempotencyKey\n }\n\n return promisedRequest({\n url: PLEROMA_CHAT_MESSAGES_URL(id),\n method: 'POST',\n payload,\n credentials,\n headers\n })\n}\n\nconst readChat = ({ id, lastReadId, credentials }) => {\n return promisedRequest({\n url: PLEROMA_CHAT_READ_URL(id),\n method: 'POST',\n payload: {\n last_read_id: lastReadId\n },\n credentials\n })\n}\n\nconst deleteChatMessage = ({ chatId, messageId, credentials }) => {\n return promisedRequest({\n url: PLEROMA_DELETE_CHAT_MESSAGE_URL(chatId, messageId),\n method: 'DELETE',\n credentials\n })\n}\n\nconst setReportState = ({ id, state, credentials }) => {\n // TODO: Can't use promisedRequest because on OK this does not return json\n // See https://git.pleroma.social/pleroma/pleroma-fe/-/merge_requests/1322\n return fetch(PLEROMA_ADMIN_REPORTS, {\n headers: {\n ...authHeaders(credentials),\n Accept: 'application/json',\n 'Content-Type': 'application/json'\n },\n method: 'PATCH',\n body: JSON.stringify({\n reports: [{\n id,\n state\n }]\n })\n })\n .then(data => {\n if (data.status >= 500) {\n throw Error(data.statusText)\n } else if (data.status >= 400) {\n return data.json()\n }\n return data\n })\n .then(data => {\n if (data.errors) {\n throw Error(data.errors[0].message)\n }\n })\n}\n\nconst apiService = {\n verifyCredentials,\n fetchTimeline,\n fetchPinnedStatuses,\n fetchConversation,\n fetchStatus,\n fetchStatusSource,\n fetchStatusHistory,\n fetchFriends,\n exportFriends,\n fetchFollowers,\n followUser,\n unfollowUser,\n pinOwnStatus,\n unpinOwnStatus,\n muteConversation,\n unmuteConversation,\n blockUser,\n unblockUser,\n removeUserFromFollowers,\n editUserNote,\n fetchUser,\n fetchUserByName,\n fetchUserRelationship,\n favorite,\n unfavorite,\n retweet,\n unretweet,\n bookmarkStatus,\n unbookmarkStatus,\n postStatus,\n editStatus,\n deleteStatus,\n uploadMedia,\n setMediaDescription,\n fetchMutes,\n muteUser,\n unmuteUser,\n subscribeUser,\n unsubscribeUser,\n fetchBlocks,\n fetchOAuthTokens,\n revokeOAuthToken,\n tagUser,\n untagUser,\n deleteUser,\n addRight,\n deleteRight,\n activateUser,\n deactivateUser,\n register,\n getCaptcha,\n updateProfileImages,\n updateProfile,\n importMutes,\n importBlocks,\n importFollows,\n deleteAccount,\n changeEmail,\n moveAccount,\n addAlias,\n deleteAlias,\n listAliases,\n changePassword,\n settingsMFA,\n mfaDisableOTP,\n generateMfaBackupCodes,\n mfaSetupOTP,\n mfaConfirmOTP,\n addBackup,\n listBackups,\n fetchFollowRequests,\n fetchLists,\n createList,\n getList,\n updateList,\n getListAccounts,\n addAccountsToList,\n removeAccountsFromList,\n deleteList,\n approveUser,\n denyUser,\n suggestions,\n markNotificationsAsSeen,\n dismissNotification,\n vote,\n fetchPoll,\n fetchFavoritedByUsers,\n fetchRebloggedByUsers,\n fetchEmojiReactions,\n reactWithEmoji,\n unreactWithEmoji,\n reportUser,\n updateNotificationSettings,\n search2,\n searchUsers,\n fetchKnownDomains,\n fetchDomainMutes,\n muteDomain,\n unmuteDomain,\n chats,\n getOrCreateChat,\n chatMessages,\n sendChatMessage,\n readChat,\n deleteChatMessage,\n setReportState,\n fetchUserInLists,\n fetchAnnouncements,\n dismissAnnouncement,\n postAnnouncement,\n editAnnouncement,\n deleteAnnouncement,\n adminFetchAnnouncements\n}\n\nexport default apiService\n","import { kebabCase } from 'lodash'\n\nconst propsToNative = props => Object.keys(props).reduce((acc, cur) => {\n acc[kebabCase(cur)] = props[cur]\n return acc\n}, {})\n\nexport { propsToNative }\n","import { invertLightness, contrastRatio } from 'chromatism'\n\n// useful for visualizing color when debugging\nexport const consoleColor = (color) => console.log('%c##########', 'background: ' + color + '; color: ' + color)\n\n/**\n * Convert r, g, b values into hex notation. All components are [0-255]\n *\n * @param {Number|String|Object} r - Either red component, {r,g,b} object, or hex string\n * @param {Number} [g] - Green component\n * @param {Number} [b] - Blue component\n */\nexport const rgb2hex = (r, g, b) => {\n if (r === null || typeof r === 'undefined') {\n return undefined\n }\n // TODO: clean up this mess\n if (r[0] === '#' || r === 'transparent') {\n return r\n }\n if (typeof r === 'object') {\n ({ r, g, b } = r)\n }\n [r, g, b] = [r, g, b].map(val => {\n val = Math.ceil(val)\n val = val < 0 ? 0 : val\n val = val > 255 ? 255 : val\n return val\n })\n return `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`\n}\n\n/**\n * Converts 8-bit RGB component into linear component\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/relative-luminance.xml\n * https://en.wikipedia.org/wiki/SRGB#The_reverse_transformation\n *\n * @param {Number} bit - color component [0..255]\n * @returns {Number} linear component [0..1]\n */\nconst c2linear = (bit) => {\n // W3C gives 0.03928 while wikipedia states 0.04045\n // what those magical numbers mean - I don't know.\n // something about gamma-correction, i suppose.\n // Sticking with W3C example.\n const c = bit / 255\n if (c < 0.03928) {\n return c / 12.92\n } else {\n return Math.pow((c + 0.055) / 1.055, 2.4)\n }\n}\n\n/**\n * Converts sRGB into linear RGB\n * @param {Object} srgb - sRGB color\n * @returns {Object} linear rgb color\n */\nconst srgbToLinear = (srgb) => {\n return 'rgb'.split('').reduce((acc, c) => { acc[c] = c2linear(srgb[c]); return acc }, {})\n}\n\n/**\n * Calculates relative luminance for given color\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/relative-luminance.xml\n *\n * @param {Object} srgb - sRGB color\n * @returns {Number} relative luminance\n */\nexport const relativeLuminance = (srgb) => {\n const { r, g, b } = srgbToLinear(srgb)\n return 0.2126 * r + 0.7152 * g + 0.0722 * b\n}\n\n/**\n * Generates color ratio between two colors. Order is unimporant\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef\n *\n * @param {Object} a - sRGB color\n * @param {Object} b - sRGB color\n * @returns {Number} color ratio\n */\nexport const getContrastRatio = (a, b) => {\n const la = relativeLuminance(a)\n const lb = relativeLuminance(b)\n const [l1, l2] = la > lb ? [la, lb] : [lb, la]\n\n return (l1 + 0.05) / (l2 + 0.05)\n}\n\n/**\n * Same as `getContrastRatio` but for multiple layers in-between\n *\n * @param {Object} text - text color (topmost layer)\n * @param {[Object, Number]} layers[] - layers between text and bedrock\n * @param {Object} bedrock - layer at the very bottom\n */\nexport const getContrastRatioLayers = (text, layers, bedrock) => {\n return getContrastRatio(alphaBlendLayers(bedrock, layers), text)\n}\n\n/**\n * This performs alpha blending between solid background and semi-transparent foreground\n *\n * @param {Object} fg - top layer color\n * @param {Number} fga - top layer's alpha\n * @param {Object} bg - bottom layer color\n * @returns {Object} sRGB of resulting color\n */\nexport const alphaBlend = (fg, fga, bg) => {\n if (fga === 1 || typeof fga === 'undefined') return fg\n return 'rgb'.split('').reduce((acc, c) => {\n // Simplified https://en.wikipedia.org/wiki/Alpha_compositing#Alpha_blending\n // for opaque bg and transparent fg\n acc[c] = (fg[c] * fga + bg[c] * (1 - fga))\n return acc\n }, {})\n}\n\n/**\n * Same as `alphaBlend` but for multiple layers in-between\n *\n * @param {Object} bedrock - layer at the very bottom\n * @param {[Object, Number]} layers[] - layers between text and bedrock\n */\nexport const alphaBlendLayers = (bedrock, layers) => layers.reduce((acc, [color, opacity]) => {\n return alphaBlend(color, opacity, acc)\n}, bedrock)\n\nexport const invert = (rgb) => {\n return 'rgb'.split('').reduce((acc, c) => {\n acc[c] = 255 - rgb[c]\n return acc\n }, {})\n}\n\n/**\n * Converts #rrggbb hex notation into an {r, g, b} object\n *\n * @param {String} hex - #rrggbb string\n * @returns {Object} rgb representation of the color, values are 0-255\n */\nexport const hex2rgb = (hex) => {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\n return result\n ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n }\n : null\n}\n\n/**\n * Old somewhat weird function for mixing two colors together\n *\n * @param {Object} a - one color (rgb)\n * @param {Object} b - other color (rgb)\n * @returns {Object} result\n */\nexport const mixrgb = (a, b) => {\n return 'rgb'.split('').reduce((acc, k) => {\n acc[k] = (a[k] + b[k]) / 2\n return acc\n }, {})\n}\n/**\n * Converts rgb object into a CSS rgba() color\n *\n * @param {Object} color - rgb\n * @returns {String} CSS rgba() color\n */\nexport const rgba2css = function (rgba) {\n return `rgba(${Math.floor(rgba.r)}, ${Math.floor(rgba.g)}, ${Math.floor(rgba.b)}, ${rgba.a})`\n}\n\n/**\n * Get text color for given background color and intended text color\n * This checks if text and background don't have enough color and inverts\n * text color's lightness if needed. If text color is still not enough it\n * will fall back to black or white\n *\n * @param {Object} bg - background color\n * @param {Object} text - intended text color\n * @param {Boolean} preserve - try to preserve intended text color's hue/saturation (i.e. no BW)\n */\nexport const getTextColor = function (bg, text, preserve) {\n const contrast = getContrastRatio(bg, text)\n\n if (contrast < 4.5) {\n const base = typeof text.a !== 'undefined' ? { a: text.a } : {}\n const result = Object.assign(base, invertLightness(text).rgb)\n if (!preserve && getContrastRatio(bg, result) < 4.5) {\n // B&W\n return contrastRatio(bg, text).rgb\n }\n // Inverted color\n return result\n }\n return text\n}\n\n/**\n * Converts color to CSS Color value\n *\n * @param {Object|String} input - color\n * @param {Number} [a] - alpha value\n * @returns {String} a CSS Color value\n */\nexport const getCssColor = (input, a) => {\n let rgb = {}\n if (typeof input === 'object') {\n rgb = input\n } else if (typeof input === 'string') {\n if (input.startsWith('#')) {\n rgb = hex2rgb(input)\n } else {\n return input\n }\n }\n return rgba2css({ ...rgb, a })\n}\n","import isFunction from 'lodash/isFunction'\n\nconst getComponentOptions = (Component) => (isFunction(Component)) ? Component.options : Component\n\nconst getComponentProps = (Component) => getComponentOptions(Component).props\n\nexport {\n getComponentOptions,\n getComponentProps\n}\n","export const SECOND = 1000\nexport const MINUTE = 60 * SECOND\nexport const HOUR = 60 * MINUTE\nexport const DAY = 24 * HOUR\nexport const WEEK = 7 * DAY\nexport const MONTH = 30 * DAY\nexport const YEAR = 365.25 * DAY\n\nexport const relativeTime = (date, nowThreshold = 1) => {\n if (typeof date === 'string') date = Date.parse(date)\n const round = Date.now() > date ? Math.floor : Math.ceil\n const d = Math.abs(Date.now() - date)\n const r = { num: round(d / YEAR), key: 'time.unit.years' }\n if (d < nowThreshold * SECOND) {\n r.num = 0\n r.key = 'time.now'\n } else if (d < MINUTE) {\n r.num = round(d / SECOND)\n r.key = 'time.unit.seconds'\n } else if (d < HOUR) {\n r.num = round(d / MINUTE)\n r.key = 'time.unit.minutes'\n } else if (d < DAY) {\n r.num = round(d / HOUR)\n r.key = 'time.unit.hours'\n } else if (d < WEEK) {\n r.num = round(d / DAY)\n r.key = 'time.unit.days'\n } else if (d < MONTH) {\n r.num = round(d / WEEK)\n r.key = 'time.unit.weeks'\n } else if (d < YEAR) {\n r.num = round(d / MONTH)\n r.key = 'time.unit.months'\n }\n return r\n}\n\nexport const relativeTimeShort = (date, nowThreshold = 1) => {\n const r = relativeTime(date, nowThreshold)\n r.key += '_short'\n return r\n}\n\nexport const unitToSeconds = (unit, amount) => {\n switch (unit) {\n case 'minutes': return 0.001 * amount * MINUTE\n case 'hours': return 0.001 * amount * HOUR\n case 'days': return 0.001 * amount * DAY\n }\n}\n\nexport const secondsToUnit = (unit, amount) => {\n switch (unit) {\n case 'minutes': return (1000 * amount) / MINUTE\n case 'hours': return (1000 * amount) / HOUR\n case 'days': return (1000 * amount) / DAY\n }\n}\n","export const showDesktopNotification = (rootState, desktopNotificationOpts) => {\n if (!('Notification' in window && window.Notification.permission === 'granted')) return\n if (rootState.statuses.notifications.desktopNotificationSilence) { return }\n\n const desktopNotification = new window.Notification(desktopNotificationOpts.title, desktopNotificationOpts)\n // Chrome is known for not closing notifications automatically\n // according to MDN, anyway.\n setTimeout(desktopNotification.close.bind(desktopNotification), 5000)\n}\n","import escape from 'escape-html'\nimport parseLinkHeader from 'parse-link-header'\nimport { isStatusNotification } from '../notification_utils/notification_utils.js'\nimport punycode from 'punycode.js'\n\n/** NOTICE! **\n * Do not initialize UI-generated data here.\n * It will override existing data.\n *\n * i.e. user.pinnedStatusIds was set to [] here\n * UI code would update it with data but upon next user fetch\n * it would be reverted back to []\n */\n\nconst qvitterStatusType = (status) => {\n if (status.is_post_verb) {\n return 'status'\n }\n\n if (status.retweeted_status) {\n return 'retweet'\n }\n\n if ((typeof status.uri === 'string' && status.uri.match(/(fave|objectType=Favourite)/)) ||\n (typeof status.text === 'string' && status.text.match(/favorited/))) {\n return 'favorite'\n }\n\n if (status.text.match(/deleted notice {{tag/) || status.qvitter_delete_notice) {\n return 'deletion'\n }\n\n if (status.text.match(/started following/) || status.activity_type === 'follow') {\n return 'follow'\n }\n\n return 'unknown'\n}\n\nexport const parseUser = (data) => {\n const output = {}\n const masto = Object.prototype.hasOwnProperty.call(data, 'acct')\n // case for users in \"mentions\" property for statuses in MastoAPI\n const mastoShort = masto && !Object.prototype.hasOwnProperty.call(data, 'avatar')\n\n output.inLists = null\n output.id = String(data.id)\n output._original = data // used for server-side settings\n\n if (masto) {\n output.screen_name = data.acct\n output.fqn = data.fqn\n output.statusnet_profile_url = data.url\n\n // There's nothing else to get\n if (mastoShort) {\n return output\n }\n\n output.emoji = data.emojis\n output.name = escape(data.display_name)\n output.name_html = output.name\n output.name_unescaped = data.display_name\n\n output.description = data.note\n // TODO cleanup this shit, output.description is overriden with source data\n output.description_html = data.note\n\n output.fields = data.fields\n output.fields_html = data.fields.map(field => {\n return {\n name: escape(field.name),\n value: field.value\n }\n })\n output.fields_text = data.fields.map(field => {\n return {\n name: unescape(field.name.replace(/<[^>]*>/g, '')),\n value: unescape(field.value.replace(/<[^>]*>/g, ''))\n }\n })\n\n // Utilize avatar_static for gif avatars?\n output.profile_image_url = data.avatar\n output.profile_image_url_original = data.avatar\n\n // Same, utilize header_static?\n output.cover_photo = data.header\n\n output.friends_count = data.following_count\n\n output.bot = data.bot\n\n if (data.pleroma) {\n if (data.pleroma.settings_store) {\n output.storage = data.pleroma.settings_store['pleroma-fe']\n }\n const relationship = data.pleroma.relationship\n\n output.background_image = data.pleroma.background_image\n output.favicon = data.pleroma.favicon\n output.token = data.pleroma.chat_token\n\n if (relationship) {\n output.relationship = relationship\n }\n\n output.allow_following_move = data.pleroma.allow_following_move\n\n output.hide_follows = data.pleroma.hide_follows\n output.hide_followers = data.pleroma.hide_followers\n output.hide_follows_count = data.pleroma.hide_follows_count\n output.hide_followers_count = data.pleroma.hide_followers_count\n\n output.rights = {\n moderator: data.pleroma.is_moderator,\n admin: data.pleroma.is_admin\n }\n // TODO: Clean up in UI? This is duplication from what BE does for qvitterapi\n if (output.rights.admin) {\n output.role = 'admin'\n } else if (output.rights.moderator) {\n output.role = 'moderator'\n } else {\n output.role = 'member'\n }\n\n output.birthday = data.pleroma.birthday\n\n if (data.pleroma.privileges) {\n output.privileges = data.pleroma.privileges\n } else if (data.pleroma.is_admin) {\n output.privileges = [\n 'users_read',\n 'users_manage_invites',\n 'users_manage_activation_state',\n 'users_manage_tags',\n 'users_manage_credentials',\n 'users_delete',\n 'messages_read',\n 'messages_delete',\n 'instances_delete',\n 'reports_manage_reports',\n 'moderation_log_read',\n 'announcements_manage_announcements',\n 'emoji_manage_emoji',\n 'statistics_read'\n ]\n } else if (data.pleroma.is_moderator) {\n output.privileges = [\n 'messages_delete',\n 'reports_manage_reports'\n ]\n } else {\n output.privileges = []\n }\n }\n\n if (data.source) {\n output.description = data.source.note\n output.default_scope = data.source.privacy\n output.fields = data.source.fields\n if (data.source.pleroma) {\n output.no_rich_text = data.source.pleroma.no_rich_text\n output.show_role = data.source.pleroma.show_role\n output.discoverable = data.source.pleroma.discoverable\n output.show_birthday = data.pleroma.show_birthday\n }\n }\n\n // TODO: handle is_local\n output.is_local = !output.screen_name.includes('@')\n } else {\n output.screen_name = data.screen_name\n\n output.name = data.name\n output.name_html = data.name_html\n\n output.description = data.description\n output.description_html = data.description_html\n\n output.profile_image_url = data.profile_image_url\n output.profile_image_url_original = data.profile_image_url_original\n\n output.cover_photo = data.cover_photo\n\n output.friends_count = data.friends_count\n\n // output.bot = ??? missing\n\n output.statusnet_profile_url = data.statusnet_profile_url\n\n output.is_local = data.is_local\n output.role = data.role\n output.show_role = data.show_role\n\n if (data.rights) {\n output.rights = {\n moderator: data.rights.delete_others_notice,\n admin: data.rights.admin\n }\n }\n output.no_rich_text = data.no_rich_text\n output.default_scope = data.default_scope\n output.hide_follows = data.hide_follows\n output.hide_followers = data.hide_followers\n output.hide_follows_count = data.hide_follows_count\n output.hide_followers_count = data.hide_followers_count\n output.background_image = data.background_image\n // Websocket token\n output.token = data.token\n\n // Convert relationsip data to expected format\n output.relationship = {\n muting: data.muted,\n blocking: data.statusnet_blocking,\n followed_by: data.follows_you,\n following: data.following\n }\n }\n\n output.created_at = new Date(data.created_at)\n output.locked = data.locked\n output.followers_count = data.followers_count\n output.statuses_count = data.statuses_count\n\n if (data.pleroma) {\n output.follow_request_count = data.pleroma.follow_request_count\n\n output.tags = data.pleroma.tags\n\n // deactivated was changed to is_active in Pleroma 2.3.0\n // so check if is_active is present\n output.deactivated = typeof data.pleroma.is_active !== 'undefined'\n ? !data.pleroma.is_active // new backend\n : data.pleroma.deactivated // old backend\n\n output.notification_settings = data.pleroma.notification_settings\n output.unread_chat_count = data.pleroma.unread_chat_count\n }\n\n output.tags = output.tags || []\n output.rights = output.rights || {}\n output.notification_settings = output.notification_settings || {}\n\n // Convert punycode to unicode for UI\n output.screen_name_ui = output.screen_name\n if (output.screen_name && output.screen_name.includes('@')) {\n const parts = output.screen_name.split('@')\n const unicodeDomain = punycode.toUnicode(parts[1])\n if (unicodeDomain !== parts[1]) {\n // Add some identifier so users can potentially spot spoofing attempts:\n // lain.com and xn--lin-6cd.com would appear identical otherwise.\n output.screen_name_ui_contains_non_ascii = true\n output.screen_name_ui = [parts[0], unicodeDomain].join('@')\n } else {\n output.screen_name_ui_contains_non_ascii = false\n }\n }\n\n return output\n}\n\nexport const parseAttachment = (data) => {\n const output = {}\n const masto = !Object.prototype.hasOwnProperty.call(data, 'oembed')\n\n if (masto) {\n // Not exactly same...\n output.mimetype = data.pleroma ? data.pleroma.mime_type : data.type\n output.meta = data.meta // not present in BE yet\n output.id = data.id\n } else {\n output.mimetype = data.mimetype\n // output.meta = ??? missing\n }\n\n output.url = data.url\n output.large_thumb_url = data.preview_url\n output.description = data.description\n\n return output\n}\n\nexport const parseSource = (data) => {\n const output = {}\n\n output.text = data.text\n output.spoiler_text = data.spoiler_text\n output.content_type = data.content_type\n\n return output\n}\n\nexport const parseStatus = (data) => {\n const output = {}\n const masto = Object.prototype.hasOwnProperty.call(data, 'account')\n\n if (masto) {\n output.favorited = data.favourited\n output.fave_num = data.favourites_count\n\n output.repeated = data.reblogged\n output.repeat_num = data.reblogs_count\n\n output.bookmarked = data.bookmarked\n\n output.type = data.reblog ? 'retweet' : 'status'\n output.nsfw = data.sensitive\n\n output.raw_html = data.content\n output.emojis = data.emojis\n\n output.tags = data.tags\n\n output.edited_at = data.edited_at\n\n if (data.pleroma) {\n const { pleroma } = data\n output.text = pleroma.content ? data.pleroma.content['text/plain'] : data.content\n output.summary = pleroma.spoiler_text ? data.pleroma.spoiler_text['text/plain'] : data.spoiler_text\n output.statusnet_conversation_id = data.pleroma.conversation_id\n output.is_local = pleroma.local\n output.in_reply_to_screen_name = data.pleroma.in_reply_to_account_acct\n output.thread_muted = pleroma.thread_muted\n output.emoji_reactions = pleroma.emoji_reactions\n output.parent_visible = pleroma.parent_visible === undefined ? true : pleroma.parent_visible\n } else {\n output.text = data.content\n output.summary = data.spoiler_text\n }\n\n output.in_reply_to_status_id = data.in_reply_to_id\n output.in_reply_to_user_id = data.in_reply_to_account_id\n output.replies_count = data.replies_count\n\n if (output.type === 'retweet') {\n output.retweeted_status = parseStatus(data.reblog)\n }\n\n output.summary_raw_html = escape(data.spoiler_text)\n output.external_url = data.url\n output.poll = data.poll\n if (output.poll) {\n output.poll.options = (output.poll.options || []).map(field => ({\n ...field,\n title_html: escape(field.title)\n }))\n }\n output.pinned = data.pinned\n output.muted = data.muted\n } else {\n output.favorited = data.favorited\n output.fave_num = data.fave_num\n\n output.repeated = data.repeated\n output.repeat_num = data.repeat_num\n\n // catchall, temporary\n // Object.assign(output, data)\n\n output.type = qvitterStatusType(data)\n\n if (data.nsfw === undefined) {\n output.nsfw = isNsfw(data)\n if (data.retweeted_status) {\n output.nsfw = data.retweeted_status.nsfw\n }\n } else {\n output.nsfw = data.nsfw\n }\n\n output.raw_html = data.statusnet_html\n output.text = data.text\n\n output.in_reply_to_status_id = data.in_reply_to_status_id\n output.in_reply_to_user_id = data.in_reply_to_user_id\n output.in_reply_to_screen_name = data.in_reply_to_screen_name\n output.statusnet_conversation_id = data.statusnet_conversation_id\n\n if (output.type === 'retweet') {\n output.retweeted_status = parseStatus(data.retweeted_status)\n }\n\n output.summary = data.summary\n output.summary_html = data.summary_html\n output.external_url = data.external_url\n output.is_local = data.is_local\n }\n\n output.id = String(data.id)\n output.visibility = data.visibility\n output.card = data.card\n output.created_at = new Date(data.created_at)\n\n // Converting to string, the right way.\n output.in_reply_to_status_id = output.in_reply_to_status_id\n ? String(output.in_reply_to_status_id)\n : null\n output.in_reply_to_user_id = output.in_reply_to_user_id\n ? String(output.in_reply_to_user_id)\n : null\n\n output.user = parseUser(masto ? data.account : data.user)\n\n output.attentions = ((masto ? data.mentions : data.attentions) || []).map(parseUser)\n\n output.attachments = ((masto ? data.media_attachments : data.attachments) || [])\n .map(parseAttachment)\n\n const retweetedStatus = masto ? data.reblog : data.retweeted_status\n if (retweetedStatus) {\n output.retweeted_status = parseStatus(retweetedStatus)\n }\n\n output.favoritedBy = []\n output.rebloggedBy = []\n\n if (Object.prototype.hasOwnProperty.call(data, 'originalStatus')) {\n Object.assign(output, data.originalStatus)\n }\n\n return output\n}\n\nexport const parseNotification = (data) => {\n const mastoDict = {\n favourite: 'like',\n reblog: 'repeat'\n }\n const masto = !Object.prototype.hasOwnProperty.call(data, 'ntype')\n const output = {}\n\n if (masto) {\n output.type = mastoDict[data.type] || data.type\n output.seen = data.pleroma.is_seen\n output.status = isStatusNotification(output.type) ? parseStatus(data.status) : null\n output.action = output.status // TODO: Refactor, this is unneeded\n output.target = output.type !== 'move'\n ? null\n : parseUser(data.target)\n output.from_profile = parseUser(data.account)\n output.emoji = data.emoji\n if (data.report) {\n output.report = data.report\n output.report.content = data.report.content\n output.report.acct = parseUser(data.report.account)\n output.report.actor = parseUser(data.report.actor)\n output.report.statuses = data.report.statuses.map(parseStatus)\n }\n } else {\n const parsedNotice = parseStatus(data.notice)\n output.type = data.ntype\n output.seen = Boolean(data.is_seen)\n output.status = output.type === 'like'\n ? parseStatus(data.notice.favorited_status)\n : parsedNotice\n output.action = parsedNotice\n output.from_profile = output.type === 'pleroma:chat_mention' ? parseUser(data.account) : parseUser(data.from_profile)\n }\n\n output.created_at = new Date(data.created_at)\n output.id = parseInt(data.id)\n\n return output\n}\n\nconst isNsfw = (status) => {\n const nsfwRegex = /#nsfw/i\n return (status.tags || []).includes('nsfw') || !!(status.text || '').match(nsfwRegex)\n}\n\nexport const parseLinkHeaderPagination = (linkHeader, opts = {}) => {\n const flakeId = opts.flakeId\n const parsedLinkHeader = parseLinkHeader(linkHeader)\n if (!parsedLinkHeader) return\n const maxId = parsedLinkHeader.next.max_id\n const minId = parsedLinkHeader.prev.min_id\n\n return {\n maxId: flakeId ? maxId : parseInt(maxId, 10),\n minId: flakeId ? minId : parseInt(minId, 10)\n }\n}\n\nexport const parseChat = (chat) => {\n const output = {}\n output.id = chat.id\n output.account = parseUser(chat.account)\n output.unread = chat.unread\n output.lastMessage = parseChatMessage(chat.last_message)\n output.updated_at = new Date(chat.updated_at)\n return output\n}\n\nexport const parseChatMessage = (message) => {\n if (!message) { return }\n if (message.isNormalized) { return message }\n const output = message\n output.id = message.id\n output.created_at = new Date(message.created_at)\n output.chat_id = message.chat_id\n output.emojis = message.emojis\n output.content = message.content\n if (message.attachment) {\n output.attachments = [parseAttachment(message.attachment)]\n } else {\n output.attachments = []\n }\n output.pending = !!message.pending\n output.error = false\n output.idempotency_key = message.idempotency_key\n output.isNormalized = true\n return output\n}\n","const createFaviconService = () => {\n const favicons = []\n const faviconWidth = 128\n const faviconHeight = 128\n const badgeRadius = 32\n\n const initFaviconService = () => {\n const nodes = document.querySelectorAll('link[rel=\"icon\"]')\n nodes.forEach(favicon => {\n if (favicon) {\n const favcanvas = document.createElement('canvas')\n favcanvas.width = faviconWidth\n favcanvas.height = faviconHeight\n const favimg = new Image()\n favimg.crossOrigin = 'anonymous'\n favimg.src = favicon.href\n const favcontext = favcanvas.getContext('2d')\n favicons.push({ favcanvas, favimg, favcontext, favicon })\n }\n })\n }\n\n const isImageLoaded = (img) => img.complete && img.naturalHeight !== 0\n\n const clearFaviconBadge = () => {\n if (favicons.length === 0) return\n favicons.forEach(({ favimg, favcanvas, favcontext, favicon }) => {\n if (!favimg || !favcontext || !favicon) return\n\n favcontext.clearRect(0, 0, faviconWidth, faviconHeight)\n if (isImageLoaded(favimg)) {\n favcontext.drawImage(favimg, 0, 0, favimg.width, favimg.height, 0, 0, faviconWidth, faviconHeight)\n }\n favicon.href = favcanvas.toDataURL('image/png')\n })\n }\n\n const drawFaviconBadge = () => {\n if (favicons.length === 0) return\n clearFaviconBadge()\n favicons.forEach(({ favimg, favcanvas, favcontext, favicon }) => {\n if (!favimg || !favcontext || !favcontext) return\n\n const style = getComputedStyle(document.body)\n const badgeColor = `${style.getPropertyValue('--badgeNotification') || 'rgb(240, 100, 100)'}`\n\n if (isImageLoaded(favimg)) {\n favcontext.drawImage(favimg, 0, 0, favimg.width, favimg.height, 0, 0, faviconWidth, faviconHeight)\n }\n favcontext.fillStyle = badgeColor\n favcontext.beginPath()\n favcontext.arc(faviconWidth - badgeRadius, badgeRadius, badgeRadius, 0, 2 * Math.PI, false)\n favcontext.fill()\n favicon.href = favcanvas.toDataURL('image/png')\n })\n }\n\n return {\n initFaviconService,\n clearFaviconBadge,\n drawFaviconBadge\n }\n}\n\nconst FaviconService = createFaviconService()\n\nexport default FaviconService\n","const fileSizeFormat = (numArg) => {\n const units = ['B', 'KiB', 'MiB', 'GiB', 'TiB']\n let num = numArg\n if (num < 1) {\n return num + ' ' + units[0]\n }\n\n const exponent = Math.min(Math.floor(Math.log(num) / Math.log(1024)), units.length - 1)\n num = (num / Math.pow(1024, exponent)).toFixed(2) * 1\n const unit = units[exponent]\n return { num, unit }\n}\nconst fileSizeFormatService = {\n fileSizeFormat\n}\nexport default fileSizeFormatService\n","// TODO this func might as well take the entire file and use its mimetype\n// or the entire service could be just mimetype service that only operates\n// on mimetypes and not files. Currently the naming is confusing.\nconst fileType = mimetype => {\n if (mimetype.match(/flash/)) {\n return 'flash'\n }\n\n if (mimetype.match(/text\\/html/)) {\n return 'html'\n }\n\n if (mimetype.match(/image/)) {\n return 'image'\n }\n\n if (mimetype.match(/video/)) {\n return 'video'\n }\n\n if (mimetype.match(/audio/)) {\n return 'audio'\n }\n\n return 'unknown'\n}\n\nconst fileMatchesSomeType = (types, file) =>\n types.some(type => fileType(file.mimetype) === type)\n\nconst fileTypeService = {\n fileType,\n fileMatchesSomeType\n}\n\nexport default fileTypeService\n","import languagesObject from '../../i18n/messages'\nimport ISO6391 from 'iso-639-1'\nimport _ from 'lodash'\n\nconst specialLanguageCodes = {\n ja_easy: 'ja',\n zh_Hant: 'zh-HANT',\n zh: 'zh-Hans'\n}\n\nconst internalToBrowserLocale = code => specialLanguageCodes[code] || code\n\nconst internalToBackendLocale = code => internalToBrowserLocale(code).replace('_', '-')\nconst internalToBackendLocaleMulti = codes => {\n const langs = Array.isArray(codes) ? codes : [codes]\n return langs.map(internalToBackendLocale).join(',')\n}\n\nconst getLanguageName = (code) => {\n const specialLanguageNames = {\n ja_easy: 'やさしいにほんご',\n zh: '简体中文',\n zh_Hant: '繁體中文'\n }\n const languageName = specialLanguageNames[code] || ISO6391.getNativeName(code)\n const browserLocale = internalToBrowserLocale(code)\n return languageName.charAt(0).toLocaleUpperCase(browserLocale) + languageName.slice(1)\n}\n\nconst languages = _.map(languagesObject.languages, (code) => ({ code, name: getLanguageName(code) })).sort((a, b) => a.name.localeCompare(b.name))\n\nconst localeService = {\n internalToBrowserLocale,\n internalToBackendLocale,\n internalToBackendLocaleMulti,\n languages,\n getLanguageName\n}\n\nexport default localeService\n","import { filter, sortBy, includes } from 'lodash'\nimport { muteWordHits } from '../status_parser/status_parser.js'\nimport { showDesktopNotification } from '../desktop_notification_utils/desktop_notification_utils.js'\n\nexport const notificationsFromStore = store => store.state.statuses.notifications.data\n\nexport const visibleTypes = store => {\n const rootState = store.rootState || store.state\n\n return ([\n rootState.config.notificationVisibility.likes && 'like',\n rootState.config.notificationVisibility.mentions && 'mention',\n rootState.config.notificationVisibility.repeats && 'repeat',\n rootState.config.notificationVisibility.follows && 'follow',\n rootState.config.notificationVisibility.followRequest && 'follow_request',\n rootState.config.notificationVisibility.moves && 'move',\n rootState.config.notificationVisibility.emojiReactions && 'pleroma:emoji_reaction',\n rootState.config.notificationVisibility.reports && 'pleroma:report',\n rootState.config.notificationVisibility.polls && 'poll'\n ].filter(_ => _))\n}\n\nconst statusNotifications = ['like', 'mention', 'repeat', 'pleroma:emoji_reaction', 'poll']\n\nexport const isStatusNotification = (type) => includes(statusNotifications, type)\n\nexport const isValidNotification = (notification) => {\n if (isStatusNotification(notification.type) && !notification.status) {\n return false\n }\n return true\n}\n\nconst sortById = (a, b) => {\n const seqA = Number(a.id)\n const seqB = Number(b.id)\n const isSeqA = !Number.isNaN(seqA)\n const isSeqB = !Number.isNaN(seqB)\n if (isSeqA && isSeqB) {\n return seqA > seqB ? -1 : 1\n } else if (isSeqA && !isSeqB) {\n return 1\n } else if (!isSeqA && isSeqB) {\n return -1\n } else {\n return a.id > b.id ? -1 : 1\n }\n}\n\nconst isMutedNotification = (store, notification) => {\n if (!notification.status) return\n return notification.status.muted || muteWordHits(notification.status, store.rootGetters.mergedConfig.muteWords).length > 0\n}\n\nexport const maybeShowNotification = (store, notification) => {\n const rootState = store.rootState || store.state\n\n if (notification.seen) return\n if (!visibleTypes(store).includes(notification.type)) return\n if (notification.type === 'mention' && isMutedNotification(store, notification)) return\n\n const notificationObject = prepareNotificationObject(notification, store.rootGetters.i18n)\n showDesktopNotification(rootState, notificationObject)\n}\n\nexport const filteredNotificationsFromStore = (store, types) => {\n // map is just to clone the array since sort mutates it and it causes some issues\n let sortedNotifications = notificationsFromStore(store).map(_ => _).sort(sortById)\n sortedNotifications = sortBy(sortedNotifications, 'seen')\n return sortedNotifications.filter(\n (notification) => (types || visibleTypes(store)).includes(notification.type)\n )\n}\n\nexport const unseenNotificationsFromStore = store =>\n filter(filteredNotificationsFromStore(store), ({ seen }) => !seen)\n\nexport const prepareNotificationObject = (notification, i18n) => {\n const notifObj = {\n tag: notification.id\n }\n const status = notification.status\n const title = notification.from_profile.name\n notifObj.title = title\n notifObj.icon = notification.from_profile.profile_image_url\n let i18nString\n switch (notification.type) {\n case 'like':\n i18nString = 'favorited_you'\n break\n case 'repeat':\n i18nString = 'repeated_you'\n break\n case 'follow':\n i18nString = 'followed_you'\n break\n case 'move':\n i18nString = 'migrated_to'\n break\n case 'follow_request':\n i18nString = 'follow_request'\n break\n case 'pleroma:report':\n i18nString = 'submitted_report'\n break\n case 'poll':\n i18nString = 'poll_ended'\n break\n }\n\n if (notification.type === 'pleroma:emoji_reaction') {\n notifObj.body = i18n.t('notifications.reacted_with', [notification.emoji])\n } else if (i18nString) {\n notifObj.body = i18n.t('notifications.' + i18nString)\n } else if (isStatusNotification(notification.type)) {\n notifObj.body = notification.status.text\n }\n\n // Shows first attached non-nsfw image, if any. Should add configuration for this somehow...\n if (status && status.attachments && status.attachments.length > 0 && !status.nsfw &&\n status.attachments[0].mimetype.startsWith('image/')) {\n notifObj.image = status.attachments[0].url\n }\n\n return notifObj\n}\n","import apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\n// For using include_types when fetching notifications.\n// Note: chat_mention excluded as pleroma-fe polls them separately\nconst mastoApiNotificationTypes = [\n 'mention',\n 'favourite',\n 'reblog',\n 'follow',\n 'move',\n 'pleroma:emoji_reaction',\n 'pleroma:report'\n]\n\nconst update = ({ store, notifications, older }) => {\n store.dispatch('addNewNotifications', { notifications, older })\n}\n\nconst fetchAndUpdate = ({ store, credentials, older = false, since }) => {\n const args = { credentials }\n const { getters } = store\n const rootState = store.rootState || store.state\n const timelineData = rootState.statuses.notifications\n const hideMutedPosts = getters.mergedConfig.hideMutedPosts\n\n args.includeTypes = mastoApiNotificationTypes\n args.withMuted = !hideMutedPosts\n\n args.timeline = 'notifications'\n if (older) {\n if (timelineData.minId !== Number.POSITIVE_INFINITY) {\n args.until = timelineData.minId\n }\n return fetchNotifications({ store, args, older })\n } else {\n // fetch new notifications\n if (since === undefined && timelineData.maxId !== Number.POSITIVE_INFINITY) {\n args.since = timelineData.maxId\n } else if (since !== null) {\n args.since = since\n }\n const result = fetchNotifications({ store, args, older })\n\n // If there's any unread notifications, try fetch notifications since\n // the newest read notification to check if any of the unread notifs\n // have changed their 'seen' state (marked as read in another session), so\n // we can update the state in this session to mark them as read as well.\n // The normal maxId-check does not tell if older notifications have changed\n const notifications = timelineData.data\n const readNotifsIds = notifications.filter(n => n.seen).map(n => n.id)\n const numUnseenNotifs = notifications.length - readNotifsIds.length\n if (numUnseenNotifs > 0 && readNotifsIds.length > 0) {\n args.since = Math.max(...readNotifsIds)\n fetchNotifications({ store, args, older })\n }\n\n return result\n }\n}\n\nconst fetchNotifications = ({ store, args, older }) => {\n return apiService.fetchTimeline(args)\n .then((response) => {\n if (response.errors) {\n throw new Error(`${response.status} ${response.statusText}`)\n }\n const notifications = response.data\n update({ store, notifications, older })\n return notifications\n })\n .catch((error) => {\n store.dispatch('pushGlobalNotice', {\n level: 'error',\n messageKey: 'notifications.error',\n messageArgs: [error.message],\n timeout: 5000\n })\n console.error(error)\n })\n}\n\nconst startFetching = ({ credentials, store }) => {\n // Initially there's set flag to silence all desktop notifications so\n // that there won't spam of them when user just opened up the FE we\n // reset that flag after a while to show new notifications once again.\n setTimeout(() => store.dispatch('setNotificationsSilence', false), 10000)\n const boundFetchAndUpdate = () => fetchAndUpdate({ credentials, store })\n boundFetchAndUpdate()\n return promiseInterval(boundFetchAndUpdate, 10000)\n}\n\nconst notificationsFetcher = {\n fetchAndUpdate,\n startFetching\n}\n\nexport default notificationsFetcher\n","export const findOffset = (child, parent, { top = 0, left = 0 } = {}, ignorePadding = true) => {\n const result = {\n top: top + child.offsetTop,\n left: left + child.offsetLeft\n }\n if (!ignorePadding && child !== window) {\n const { topPadding, leftPadding } = findPadding(child)\n result.top += ignorePadding ? 0 : topPadding\n result.left += ignorePadding ? 0 : leftPadding\n }\n\n if (child.offsetParent && window.getComputedStyle(child.offsetParent).position !== 'sticky' && (parent === window || parent.contains(child.offsetParent) || parent === child.offsetParent)) {\n return findOffset(child.offsetParent, parent, result, false)\n } else {\n if (parent !== window) {\n const { topPadding, leftPadding } = findPadding(parent)\n result.top += topPadding\n result.left += leftPadding\n }\n return result\n }\n}\n\nconst findPadding = (el) => {\n const topPaddingStr = window.getComputedStyle(el)['padding-top']\n const topPadding = Number(topPaddingStr.substring(0, topPaddingStr.length - 2))\n const leftPaddingStr = window.getComputedStyle(el)['padding-left']\n const leftPadding = Number(leftPaddingStr.substring(0, leftPaddingStr.length - 2))\n\n return { topPadding, leftPadding }\n}\n","\n// promiseInterval - replacement for setInterval for promises, starts counting\n// the interval only after a promise is done instead of immediately.\n// - promiseCall is a function that returns a promise, it's called the first\n// time after the first interval.\n// - interval is the interval delay in ms.\n\nexport const promiseInterval = (promiseCall, interval) => {\n let stopped = false\n let timeout = null\n\n const func = () => {\n const promise = promiseCall()\n // something unexpected happened and promiseCall did not\n // return a promise, abort the loop.\n if (!(promise && promise.finally)) {\n console.warn('promiseInterval: promise call did not return a promise, stopping interval.')\n return\n }\n promise.finally(() => {\n if (stopped) return\n timeout = window.setTimeout(func, interval)\n })\n }\n\n const stopFetcher = () => {\n stopped = true\n window.clearTimeout(timeout)\n }\n\n timeout = window.setTimeout(func, interval)\n\n return { stop: stopFetcher }\n}\n","import { filter } from 'lodash'\n\nexport const muteWordHits = (status, muteWords) => {\n const statusText = status.text.toLowerCase()\n const statusSummary = status.summary.toLowerCase()\n const hits = filter(muteWords, (muteWord) => {\n return statusText.includes(muteWord.toLowerCase()) || statusSummary.includes(muteWord.toLowerCase())\n })\n\n return hits\n}\n","import { map } from 'lodash'\nimport apiService from '../api/api.service.js'\n\nconst postStatus = ({\n store,\n status,\n spoilerText,\n visibility,\n sensitive,\n poll,\n media = [],\n inReplyToStatusId = undefined,\n contentType = 'text/plain',\n preview = false,\n idempotencyKey = ''\n}) => {\n const mediaIds = map(media, 'id')\n\n return apiService.postStatus({\n credentials: store.state.users.currentUser.credentials,\n status,\n spoilerText,\n visibility,\n sensitive,\n mediaIds,\n inReplyToStatusId,\n contentType,\n poll,\n preview,\n idempotencyKey\n })\n .then((data) => {\n if (!data.error && !preview) {\n store.dispatch('addNewStatuses', {\n statuses: [data],\n timeline: 'friends',\n showImmediately: true,\n noIdUpdate: true // To prevent missing notices on next pull.\n })\n }\n return data\n })\n .catch((err) => {\n return {\n error: err.message\n }\n })\n}\n\nconst editStatus = ({\n store,\n statusId,\n status,\n spoilerText,\n sensitive,\n poll,\n media = [],\n contentType = 'text/plain'\n}) => {\n const mediaIds = map(media, 'id')\n\n return apiService.editStatus({\n id: statusId,\n credentials: store.state.users.currentUser.credentials,\n status,\n spoilerText,\n sensitive,\n poll,\n mediaIds,\n contentType\n })\n .then((data) => {\n if (!data.error) {\n store.dispatch('addNewStatuses', {\n statuses: [data],\n timeline: 'friends',\n showImmediately: true,\n noIdUpdate: true // To prevent missing notices on next pull.\n })\n }\n return data\n })\n .catch((err) => {\n console.error('Error editing status', err)\n return {\n error: err.message\n }\n })\n}\n\nconst uploadMedia = ({ store, formData }) => {\n const credentials = store.state.users.currentUser.credentials\n return apiService.uploadMedia({ credentials, formData })\n}\n\nconst setMediaDescription = ({ store, id, description }) => {\n const credentials = store.state.users.currentUser.credentials\n return apiService.setMediaDescription({ credentials, id, description })\n}\n\nconst statusPosterService = {\n postStatus,\n editStatus,\n uploadMedia,\n setMediaDescription\n}\n\nexport default statusPosterService\n","import { convert } from 'chromatism'\nimport { rgb2hex, hex2rgb, rgba2css, getCssColor, relativeLuminance } from '../color_convert/color_convert.js'\nimport { getColors, computeDynamicColor, getOpacitySlot } from '../theme_data/theme_data.service.js'\nimport { defaultState } from '../../modules/config.js'\n\nexport const applyTheme = (input) => {\n const { rules } = generatePreset(input)\n const head = document.head\n const body = document.body\n body.classList.add('hidden')\n\n const styleEl = document.createElement('style')\n head.appendChild(styleEl)\n const styleSheet = styleEl.sheet\n\n styleSheet.toString()\n styleSheet.insertRule(`:root { ${rules.radii} }`, 'index-max')\n styleSheet.insertRule(`:root { ${rules.colors} }`, 'index-max')\n styleSheet.insertRule(`:root { ${rules.shadows} }`, 'index-max')\n styleSheet.insertRule(`:root { ${rules.fonts} }`, 'index-max')\n body.classList.remove('hidden')\n}\n\nconst configColumns = ({ sidebarColumnWidth, contentColumnWidth, notifsColumnWidth }) =>\n ({ sidebarColumnWidth, contentColumnWidth, notifsColumnWidth })\n\nconst defaultConfigColumns = configColumns(defaultState)\n\nexport const applyConfig = (config) => {\n const columns = configColumns(config)\n\n if (columns === defaultConfigColumns) {\n return\n }\n\n const head = document.head\n const body = document.body\n body.classList.add('hidden')\n\n const rules = Object\n .entries(columns)\n .filter(([k, v]) => v)\n .map(([k, v]) => `--${k}: ${v}`).join(';')\n\n const styleEl = document.createElement('style')\n head.appendChild(styleEl)\n const styleSheet = styleEl.sheet\n\n styleSheet.toString()\n styleSheet.insertRule(`:root { ${rules} }`, 'index-max')\n body.classList.remove('hidden')\n}\n\nexport const getCssShadow = (input, usesDropShadow) => {\n if (input.length === 0) {\n return 'none'\n }\n\n return input\n .filter(_ => usesDropShadow ? _.inset : _)\n .map((shad) => [\n shad.x,\n shad.y,\n shad.blur,\n shad.spread\n ].map(_ => _ + 'px').concat([\n getCssColor(shad.color, shad.alpha),\n shad.inset ? 'inset' : ''\n ]).join(' ')).join(', ')\n}\n\nconst getCssShadowFilter = (input) => {\n if (input.length === 0) {\n return 'none'\n }\n\n return input\n // drop-shadow doesn't support inset or spread\n .filter((shad) => !shad.inset && Number(shad.spread) === 0)\n .map((shad) => [\n shad.x,\n shad.y,\n // drop-shadow's blur is twice as strong compared to box-shadow\n shad.blur / 2\n ].map(_ => _ + 'px').concat([\n getCssColor(shad.color, shad.alpha)\n ]).join(' '))\n .map(_ => `drop-shadow(${_})`)\n .join(' ')\n}\n\nexport const generateColors = (themeData) => {\n const sourceColors = !themeData.themeEngineVersion\n ? colors2to3(themeData.colors || themeData)\n : themeData.colors || themeData\n\n const { colors, opacity } = getColors(sourceColors, themeData.opacity || {})\n\n const htmlColors = Object.entries(colors)\n .reduce((acc, [k, v]) => {\n if (!v) return acc\n acc.solid[k] = rgb2hex(v)\n acc.complete[k] = typeof v.a === 'undefined' ? rgb2hex(v) : rgba2css(v)\n return acc\n }, { complete: {}, solid: {} })\n return {\n rules: {\n colors: Object.entries(htmlColors.complete)\n .filter(([k, v]) => v)\n .map(([k, v]) => `--${k}: ${v}`)\n .join(';')\n },\n theme: {\n colors: htmlColors.solid,\n opacity\n }\n }\n}\n\nexport const generateRadii = (input) => {\n let inputRadii = input.radii || {}\n // v1 -> v2\n if (typeof input.btnRadius !== 'undefined') {\n inputRadii = Object\n .entries(input)\n .filter(([k, v]) => k.endsWith('Radius'))\n .reduce((acc, e) => { acc[e[0].split('Radius')[0]] = e[1]; return acc }, {})\n }\n const radii = Object.entries(inputRadii).filter(([k, v]) => v).reduce((acc, [k, v]) => {\n acc[k] = v\n return acc\n }, {\n btn: 4,\n input: 4,\n checkbox: 2,\n panel: 10,\n avatar: 5,\n avatarAlt: 50,\n tooltip: 2,\n attachment: 5,\n chatMessage: inputRadii.panel\n })\n\n return {\n rules: {\n radii: Object.entries(radii).filter(([k, v]) => v).map(([k, v]) => `--${k}Radius: ${v}px`).join(';')\n },\n theme: {\n radii\n }\n }\n}\n\nexport const generateFonts = (input) => {\n const fonts = Object.entries(input.fonts || {}).filter(([k, v]) => v).reduce((acc, [k, v]) => {\n acc[k] = Object.entries(v).filter(([k, v]) => v).reduce((acc, [k, v]) => {\n acc[k] = v\n return acc\n }, acc[k])\n return acc\n }, {\n interface: {\n family: 'sans-serif'\n },\n input: {\n family: 'inherit'\n },\n post: {\n family: 'inherit'\n },\n postCode: {\n family: 'monospace'\n }\n })\n\n return {\n rules: {\n fonts: Object\n .entries(fonts)\n .filter(([k, v]) => v)\n .map(([k, v]) => `--${k}Font: ${v.family}`).join(';')\n },\n theme: {\n fonts\n }\n }\n}\n\nconst border = (top, shadow) => ({\n x: 0,\n y: top ? 1 : -1,\n blur: 0,\n spread: 0,\n color: shadow ? '#000000' : '#FFFFFF',\n alpha: 0.2,\n inset: true\n})\nconst buttonInsetFakeBorders = [border(true, false), border(false, true)]\nconst inputInsetFakeBorders = [border(true, true), border(false, false)]\nconst hoverGlow = {\n x: 0,\n y: 0,\n blur: 4,\n spread: 0,\n color: '--faint',\n alpha: 1\n}\n\nexport const DEFAULT_SHADOWS = {\n panel: [{\n x: 1,\n y: 1,\n blur: 4,\n spread: 0,\n color: '#000000',\n alpha: 0.6\n }],\n topBar: [{\n x: 0,\n y: 0,\n blur: 4,\n spread: 0,\n color: '#000000',\n alpha: 0.6\n }],\n popup: [{\n x: 2,\n y: 2,\n blur: 3,\n spread: 0,\n color: '#000000',\n alpha: 0.5\n }],\n avatar: [{\n x: 0,\n y: 1,\n blur: 8,\n spread: 0,\n color: '#000000',\n alpha: 0.7\n }],\n avatarStatus: [],\n panelHeader: [],\n button: [{\n x: 0,\n y: 0,\n blur: 2,\n spread: 0,\n color: '#000000',\n alpha: 1\n }, ...buttonInsetFakeBorders],\n buttonHover: [hoverGlow, ...buttonInsetFakeBorders],\n buttonPressed: [hoverGlow, ...inputInsetFakeBorders],\n input: [...inputInsetFakeBorders, {\n x: 0,\n y: 0,\n blur: 2,\n inset: true,\n spread: 0,\n color: '#000000',\n alpha: 1\n }]\n}\nexport const generateShadows = (input, colors) => {\n // TODO this is a small hack for `mod` to work with shadows\n // this is used to get the \"context\" of shadow, i.e. for `mod` properly depend on background color of element\n const hackContextDict = {\n button: 'btn',\n panel: 'bg',\n top: 'topBar',\n popup: 'popover',\n avatar: 'bg',\n panelHeader: 'panel',\n input: 'input'\n }\n\n const cleanInputShadows = Object.fromEntries(\n Object.entries(input.shadows || {})\n .map(([name, shadowSlot]) => [\n name,\n // defaulting color to black to avoid potential problems\n shadowSlot.map(shadowDef => ({ color: '#000000', ...shadowDef }))\n ])\n )\n const inputShadows = cleanInputShadows && !input.themeEngineVersion\n ? shadows2to3(cleanInputShadows, input.opacity)\n : cleanInputShadows || {}\n const shadows = Object.entries({\n ...DEFAULT_SHADOWS,\n ...inputShadows\n }).reduce((shadowsAcc, [slotName, shadowDefs]) => {\n const slotFirstWord = slotName.replace(/[A-Z].*$/, '')\n const colorSlotName = hackContextDict[slotFirstWord]\n const isLightOnDark = relativeLuminance(convert(colors[colorSlotName]).rgb) < 0.5\n const mod = isLightOnDark ? 1 : -1\n const newShadow = shadowDefs.reduce((shadowAcc, def) => [\n ...shadowAcc,\n {\n ...def,\n color: rgb2hex(computeDynamicColor(\n def.color,\n (variableSlot) => convert(colors[variableSlot]).rgb,\n mod\n ))\n }\n ], [])\n return { ...shadowsAcc, [slotName]: newShadow }\n }, {})\n\n return {\n rules: {\n shadows: Object\n .entries(shadows)\n // TODO for v2.2: if shadow doesn't have non-inset shadows with spread > 0 - optionally\n // convert all non-inset shadows into filter: drop-shadow() to boost performance\n .map(([k, v]) => [\n `--${k}Shadow: ${getCssShadow(v)}`,\n `--${k}ShadowFilter: ${getCssShadowFilter(v)}`,\n `--${k}ShadowInset: ${getCssShadow(v, true)}`\n ].join(';'))\n .join(';')\n },\n theme: {\n shadows\n }\n }\n}\n\nexport const composePreset = (colors, radii, shadows, fonts) => {\n return {\n rules: {\n ...shadows.rules,\n ...colors.rules,\n ...radii.rules,\n ...fonts.rules\n },\n theme: {\n ...shadows.theme,\n ...colors.theme,\n ...radii.theme,\n ...fonts.theme\n }\n }\n}\n\nexport const generatePreset = (input) => {\n const colors = generateColors(input)\n return composePreset(\n colors,\n generateRadii(input),\n generateShadows(input, colors.theme.colors, colors.mod),\n generateFonts(input)\n )\n}\n\nexport const getThemes = () => {\n const cache = 'no-store'\n\n return window.fetch('/static/styles.json', { cache })\n .then((data) => data.json())\n .then((themes) => {\n return Object.entries(themes).map(([k, v]) => {\n let promise = null\n if (typeof v === 'object') {\n promise = Promise.resolve(v)\n } else if (typeof v === 'string') {\n promise = window.fetch(v, { cache })\n .then((data) => data.json())\n .catch((e) => {\n console.error(e)\n return null\n })\n }\n return [k, promise]\n })\n })\n .then((promises) => {\n return promises\n .reduce((acc, [k, v]) => {\n acc[k] = v\n return acc\n }, {})\n })\n}\nexport const colors2to3 = (colors) => {\n return Object.entries(colors).reduce((acc, [slotName, color]) => {\n const btnPositions = ['', 'Panel', 'TopBar']\n switch (slotName) {\n case 'lightBg':\n return { ...acc, highlight: color }\n case 'btnText':\n return {\n ...acc,\n ...btnPositions\n .reduce(\n (statePositionAcc, position) =>\n ({ ...statePositionAcc, ['btn' + position + 'Text']: color })\n , {}\n )\n }\n default:\n return { ...acc, [slotName]: color }\n }\n }, {})\n}\n\n/**\n * This handles compatibility issues when importing v2 theme's shadows to current format\n *\n * Back in v2 shadows allowed you to use dynamic colors however those used pure CSS3 variables\n */\nexport const shadows2to3 = (shadows, opacity) => {\n return Object.entries(shadows).reduce((shadowsAcc, [slotName, shadowDefs]) => {\n const isDynamic = ({ color = '#000000' }) => color.startsWith('--')\n const getOpacity = ({ color }) => opacity[getOpacitySlot(color.substring(2).split(',')[0])]\n const newShadow = shadowDefs.reduce((shadowAcc, def) => [\n ...shadowAcc,\n {\n ...def,\n alpha: isDynamic(def) ? getOpacity(def) || 1 : def.alpha\n }\n ], [])\n return { ...shadowsAcc, [slotName]: newShadow }\n }, {})\n}\n\nexport const getPreset = (val) => {\n return getThemes()\n .then((themes) => themes[val] ? themes[val] : themes['pleroma-dark'])\n .then((theme) => {\n const isV1 = Array.isArray(theme)\n const data = isV1 ? {} : theme.theme\n\n if (isV1) {\n const bg = hex2rgb(theme[1])\n const fg = hex2rgb(theme[2])\n const text = hex2rgb(theme[3])\n const link = hex2rgb(theme[4])\n\n const cRed = hex2rgb(theme[5] || '#FF0000')\n const cGreen = hex2rgb(theme[6] || '#00FF00')\n const cBlue = hex2rgb(theme[7] || '#0000FF')\n const cOrange = hex2rgb(theme[8] || '#E3FF00')\n\n data.colors = { bg, fg, text, link, cRed, cBlue, cGreen, cOrange }\n }\n\n return { theme: data, source: theme.source }\n })\n}\n\nexport const setPreset = (val) => getPreset(val).then(data => applyTheme(data.theme))\n","import { invertLightness, brightness } from 'chromatism'\nimport { alphaBlend, mixrgb } from '../color_convert/color_convert.js'\n/* This is a definition of all layer combinations\n * each key is a topmost layer, each value represents layer underneath\n * this is essentially a simplified tree\n */\nexport const LAYERS = {\n undelay: null, // root\n topBar: null, // no transparency support\n badge: null, // no transparency support\n profileTint: null, // doesn't matter\n fg: null,\n bg: 'underlay',\n highlight: 'bg',\n panel: 'bg',\n popover: 'bg',\n selectedMenu: 'popover',\n btn: 'bg',\n btnPanel: 'panel',\n btnTopBar: 'topBar',\n input: 'bg',\n inputPanel: 'panel',\n inputTopBar: 'topBar',\n alert: 'bg',\n alertPanel: 'panel',\n poll: 'bg',\n chatBg: 'underlay',\n chatMessage: 'chatBg'\n}\n\n/* By default opacity slots have 1 as default opacity\n * this allows redefining it to something else\n */\nexport const DEFAULT_OPACITY = {\n profileTint: 0.5,\n alert: 0.5,\n input: 0.5,\n faint: 0.5,\n underlay: 0.15,\n alertPopup: 0.95\n}\n\n/** SUBJECT TO CHANGE IN THE FUTURE, this is all beta\n * Color and opacity slots definitions. Each key represents a slot.\n *\n * Short-hands:\n * String beginning with `--` - value after dashes treated as sole\n * dependency - i.e. `--value` equivalent to { depends: ['value']}\n * String beginning with `#` - value would be treated as solid color\n * defined in hexadecimal representation (i.e. #FFFFFF) and will be\n * used as default. `#FFFFFF` is equivalent to { default: '#FFFFFF'}\n *\n * Full definition:\n * @property {String[]} depends - color slot names this color depends ones.\n * cyclic dependencies are supported to some extent but not recommended.\n * @property {String} [opacity] - opacity slot used by this color slot.\n * opacity is inherited from parents. To break inheritance graph use null\n * @property {Number} [priority] - EXPERIMENTAL. used to pre-sort slots so\n * that slots with higher priority come earlier\n * @property {Function(mod, ...colors)} [color] - function that will be\n * used to determine the color. By default it just copies first color in\n * dependency list.\n * @argument {Number} mod - `1` (light-on-dark) or `-1` (dark-on-light)\n * depending on background color (for textColor)/given color.\n * @argument {...Object} deps - each argument after mod represents each\n * color from `depends` array. All colors take user customizations into\n * account and represented by { r, g, b } objects.\n * @returns {Object} resulting color, should be in { r, g, b } form\n *\n * @property {Boolean|String} [textColor] - true to mark color slot as text\n * color. This enables automatic text color generation for the slot. Use\n * 'preserve' string if you don't want text color to fall back to\n * black/white. Use 'bw' to only ever use black or white. This also makes\n * following properties required:\n * @property {String} [layer] - which layer the text sit on top on - used\n * to account for transparency in text color calculation\n * layer is inherited from parents. To break inheritance graph use null\n * @property {String} [variant] - which color slot is background (same as\n * above, used to account for transparency)\n */\nexport const SLOT_INHERITANCE = {\n bg: {\n depends: [],\n opacity: 'bg',\n priority: 1\n },\n wallpaper: {\n depends: ['bg'],\n color: (mod, bg) => brightness(-2 * mod, bg).rgb\n },\n fg: {\n depends: [],\n priority: 1\n },\n text: {\n depends: [],\n layer: 'bg',\n opacity: null,\n priority: 1\n },\n underlay: {\n default: '#000000',\n opacity: 'underlay'\n },\n link: {\n depends: ['accent'],\n priority: 1\n },\n accent: {\n depends: ['link'],\n priority: 1\n },\n faint: {\n depends: ['text'],\n opacity: 'faint'\n },\n faintLink: {\n depends: ['link'],\n opacity: 'faint'\n },\n postFaintLink: {\n depends: ['postLink'],\n opacity: 'faint'\n },\n\n cBlue: '#0000ff',\n cRed: '#FF0000',\n cGreen: '#00FF00',\n cOrange: '#E3FF00',\n\n profileBg: {\n depends: ['bg'],\n color: (mod, bg) => ({\n r: Math.floor(bg.r * 0.53),\n g: Math.floor(bg.g * 0.56),\n b: Math.floor(bg.b * 0.59)\n })\n },\n profileTint: {\n depends: ['bg'],\n layer: 'profileTint',\n opacity: 'profileTint'\n },\n\n highlight: {\n depends: ['bg'],\n color: (mod, bg) => brightness(5 * mod, bg).rgb\n },\n highlightLightText: {\n depends: ['lightText'],\n layer: 'highlight',\n textColor: true\n },\n highlightPostLink: {\n depends: ['postLink'],\n layer: 'highlight',\n textColor: 'preserve'\n },\n highlightFaintText: {\n depends: ['faint'],\n layer: 'highlight',\n textColor: true\n },\n highlightFaintLink: {\n depends: ['faintLink'],\n layer: 'highlight',\n textColor: 'preserve'\n },\n highlightPostFaintLink: {\n depends: ['postFaintLink'],\n layer: 'highlight',\n textColor: 'preserve'\n },\n highlightText: {\n depends: ['text'],\n layer: 'highlight',\n textColor: true\n },\n highlightLink: {\n depends: ['link'],\n layer: 'highlight',\n textColor: 'preserve'\n },\n highlightIcon: {\n depends: ['highlight', 'highlightText'],\n color: (mod, bg, text) => mixrgb(bg, text)\n },\n\n popover: {\n depends: ['bg'],\n opacity: 'popover'\n },\n popoverLightText: {\n depends: ['lightText'],\n layer: 'popover',\n textColor: true\n },\n popoverPostLink: {\n depends: ['postLink'],\n layer: 'popover',\n textColor: 'preserve'\n },\n popoverFaintText: {\n depends: ['faint'],\n layer: 'popover',\n textColor: true\n },\n popoverFaintLink: {\n depends: ['faintLink'],\n layer: 'popover',\n textColor: 'preserve'\n },\n popoverPostFaintLink: {\n depends: ['postFaintLink'],\n layer: 'popover',\n textColor: 'preserve'\n },\n popoverText: {\n depends: ['text'],\n layer: 'popover',\n textColor: true\n },\n popoverLink: {\n depends: ['link'],\n layer: 'popover',\n textColor: 'preserve'\n },\n popoverIcon: {\n depends: ['popover', 'popoverText'],\n color: (mod, bg, text) => mixrgb(bg, text)\n },\n\n selectedPost: '--highlight',\n selectedPostFaintText: {\n depends: ['highlightFaintText'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: true\n },\n selectedPostLightText: {\n depends: ['highlightLightText'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: true\n },\n selectedPostPostLink: {\n depends: ['highlightPostLink'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: 'preserve'\n },\n selectedPostFaintLink: {\n depends: ['highlightFaintLink'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: 'preserve'\n },\n selectedPostText: {\n depends: ['highlightText'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: true\n },\n selectedPostLink: {\n depends: ['highlightLink'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: 'preserve'\n },\n selectedPostIcon: {\n depends: ['selectedPost', 'selectedPostText'],\n color: (mod, bg, text) => mixrgb(bg, text)\n },\n\n selectedMenu: {\n depends: ['bg'],\n color: (mod, bg) => brightness(5 * mod, bg).rgb\n },\n selectedMenuLightText: {\n depends: ['highlightLightText'],\n layer: 'selectedMenu',\n variant: 'selectedMenu',\n textColor: true\n },\n selectedMenuFaintText: {\n depends: ['highlightFaintText'],\n layer: 'selectedMenu',\n variant: 'selectedMenu',\n textColor: true\n },\n selectedMenuFaintLink: {\n depends: ['highlightFaintLink'],\n layer: 'selectedMenu',\n variant: 'selectedMenu',\n textColor: 'preserve'\n },\n selectedMenuText: {\n depends: ['highlightText'],\n layer: 'selectedMenu',\n variant: 'selectedMenu',\n textColor: true\n },\n selectedMenuLink: {\n depends: ['highlightLink'],\n layer: 'selectedMenu',\n variant: 'selectedMenu',\n textColor: 'preserve'\n },\n selectedMenuIcon: {\n depends: ['selectedMenu', 'selectedMenuText'],\n color: (mod, bg, text) => mixrgb(bg, text)\n },\n\n selectedMenuPopover: {\n depends: ['popover'],\n color: (mod, bg) => brightness(5 * mod, bg).rgb\n },\n selectedMenuPopoverLightText: {\n depends: ['selectedMenuLightText'],\n layer: 'selectedMenuPopover',\n variant: 'selectedMenuPopover',\n textColor: true\n },\n selectedMenuPopoverFaintText: {\n depends: ['selectedMenuFaintText'],\n layer: 'selectedMenuPopover',\n variant: 'selectedMenuPopover',\n textColor: true\n },\n selectedMenuPopoverFaintLink: {\n depends: ['selectedMenuFaintLink'],\n layer: 'selectedMenuPopover',\n variant: 'selectedMenuPopover',\n textColor: 'preserve'\n },\n selectedMenuPopoverText: {\n depends: ['selectedMenuText'],\n layer: 'selectedMenuPopover',\n variant: 'selectedMenuPopover',\n textColor: true\n },\n selectedMenuPopoverLink: {\n depends: ['selectedMenuLink'],\n layer: 'selectedMenuPopover',\n variant: 'selectedMenuPopover',\n textColor: 'preserve'\n },\n selectedMenuPopoverIcon: {\n depends: ['selectedMenuPopover', 'selectedMenuText'],\n color: (mod, bg, text) => mixrgb(bg, text)\n },\n\n lightText: {\n depends: ['text'],\n layer: 'bg',\n textColor: 'preserve',\n color: (mod, text) => brightness(20 * mod, text).rgb\n },\n\n postLink: {\n depends: ['link'],\n layer: 'bg',\n textColor: 'preserve'\n },\n\n postGreentext: {\n depends: ['cGreen'],\n layer: 'bg',\n textColor: 'preserve'\n },\n\n postCyantext: {\n depends: ['cBlue'],\n layer: 'bg',\n textColor: 'preserve'\n },\n\n border: {\n depends: ['fg'],\n opacity: 'border',\n color: (mod, fg) => brightness(2 * mod, fg).rgb\n },\n\n poll: {\n depends: ['accent', 'bg'],\n copacity: 'poll',\n color: (mod, accent, bg) => alphaBlend(accent, 0.4, bg)\n },\n pollText: {\n depends: ['text'],\n layer: 'poll',\n textColor: true\n },\n\n icon: {\n depends: ['bg', 'text'],\n inheritsOpacity: false,\n color: (mod, bg, text) => mixrgb(bg, text)\n },\n\n // Foreground\n fgText: {\n depends: ['text'],\n layer: 'fg',\n textColor: true\n },\n fgLink: {\n depends: ['link'],\n layer: 'fg',\n textColor: 'preserve'\n },\n\n // Panel header\n panel: {\n depends: ['fg'],\n opacity: 'panel'\n },\n panelText: {\n depends: ['text'],\n layer: 'panel',\n textColor: true\n },\n panelFaint: {\n depends: ['fgText'],\n layer: 'panel',\n opacity: 'faint',\n textColor: true\n },\n panelLink: {\n depends: ['fgLink'],\n layer: 'panel',\n textColor: 'preserve'\n },\n\n // Top bar\n topBar: '--fg',\n topBarText: {\n depends: ['fgText'],\n layer: 'topBar',\n textColor: true\n },\n topBarLink: {\n depends: ['fgLink'],\n layer: 'topBar',\n textColor: 'preserve'\n },\n\n // Tabs\n tab: {\n depends: ['btn']\n },\n tabText: {\n depends: ['btnText'],\n layer: 'btn',\n textColor: true\n },\n tabActiveText: {\n depends: ['text'],\n layer: 'bg',\n textColor: true\n },\n\n // Buttons\n btn: {\n depends: ['fg'],\n variant: 'btn',\n opacity: 'btn'\n },\n btnText: {\n depends: ['fgText'],\n layer: 'btn',\n textColor: true\n },\n btnPanelText: {\n depends: ['btnText'],\n layer: 'btnPanel',\n variant: 'btn',\n textColor: true\n },\n btnTopBarText: {\n depends: ['btnText'],\n layer: 'btnTopBar',\n variant: 'btn',\n textColor: true\n },\n\n // Buttons: pressed\n btnPressed: {\n depends: ['btn'],\n layer: 'btn'\n },\n btnPressedText: {\n depends: ['btnText'],\n layer: 'btn',\n variant: 'btnPressed',\n textColor: true\n },\n btnPressedPanel: {\n depends: ['btnPressed'],\n layer: 'btn'\n },\n btnPressedPanelText: {\n depends: ['btnPanelText'],\n layer: 'btnPanel',\n variant: 'btnPressed',\n textColor: true\n },\n btnPressedTopBar: {\n depends: ['btnPressed'],\n layer: 'btn'\n },\n btnPressedTopBarText: {\n depends: ['btnTopBarText'],\n layer: 'btnTopBar',\n variant: 'btnPressed',\n textColor: true\n },\n\n // Buttons: toggled\n btnToggled: {\n depends: ['btn'],\n layer: 'btn',\n color: (mod, btn) => brightness(mod * 20, btn).rgb\n },\n btnToggledText: {\n depends: ['btnText'],\n layer: 'btn',\n variant: 'btnToggled',\n textColor: true\n },\n btnToggledPanelText: {\n depends: ['btnPanelText'],\n layer: 'btnPanel',\n variant: 'btnToggled',\n textColor: true\n },\n btnToggledTopBarText: {\n depends: ['btnTopBarText'],\n layer: 'btnTopBar',\n variant: 'btnToggled',\n textColor: true\n },\n\n // Buttons: disabled\n btnDisabled: {\n depends: ['btn', 'bg'],\n color: (mod, btn, bg) => alphaBlend(btn, 0.25, bg)\n },\n btnDisabledText: {\n depends: ['btnText', 'btnDisabled'],\n layer: 'btn',\n variant: 'btnDisabled',\n color: (mod, text, btn) => alphaBlend(text, 0.25, btn)\n },\n btnDisabledPanelText: {\n depends: ['btnPanelText', 'btnDisabled'],\n layer: 'btnPanel',\n variant: 'btnDisabled',\n color: (mod, text, btn) => alphaBlend(text, 0.25, btn)\n },\n btnDisabledTopBarText: {\n depends: ['btnTopBarText', 'btnDisabled'],\n layer: 'btnTopBar',\n variant: 'btnDisabled',\n color: (mod, text, btn) => alphaBlend(text, 0.25, btn)\n },\n\n // Input fields\n input: {\n depends: ['fg'],\n opacity: 'input'\n },\n inputText: {\n depends: ['text'],\n layer: 'input',\n textColor: true\n },\n inputPanelText: {\n depends: ['panelText'],\n layer: 'inputPanel',\n variant: 'input',\n textColor: true\n },\n inputTopbarText: {\n depends: ['topBarText'],\n layer: 'inputTopBar',\n variant: 'input',\n textColor: true\n },\n\n alertError: {\n depends: ['cRed'],\n opacity: 'alert'\n },\n alertErrorText: {\n depends: ['text'],\n layer: 'alert',\n variant: 'alertError',\n textColor: true\n },\n alertErrorPanelText: {\n depends: ['panelText'],\n layer: 'alertPanel',\n variant: 'alertError',\n textColor: true\n },\n\n alertWarning: {\n depends: ['cOrange'],\n opacity: 'alert'\n },\n alertWarningText: {\n depends: ['text'],\n layer: 'alert',\n variant: 'alertWarning',\n textColor: true\n },\n alertWarningPanelText: {\n depends: ['panelText'],\n layer: 'alertPanel',\n variant: 'alertWarning',\n textColor: true\n },\n\n alertSuccess: {\n depends: ['cGreen'],\n opacity: 'alert'\n },\n alertSuccessText: {\n depends: ['text'],\n layer: 'alert',\n variant: 'alertSuccess',\n textColor: true\n },\n alertSuccessPanelText: {\n depends: ['panelText'],\n layer: 'alertPanel',\n variant: 'alertSuccess',\n textColor: true\n },\n\n alertNeutral: {\n depends: ['text'],\n opacity: 'alert'\n },\n alertNeutralText: {\n depends: ['text'],\n layer: 'alert',\n variant: 'alertNeutral',\n color: (mod, text) => invertLightness(text).rgb,\n textColor: true\n },\n alertNeutralPanelText: {\n depends: ['panelText'],\n layer: 'alertPanel',\n variant: 'alertNeutral',\n textColor: true\n },\n\n alertPopupError: {\n depends: ['alertError'],\n opacity: 'alertPopup'\n },\n alertPopupErrorText: {\n depends: ['alertErrorText'],\n layer: 'popover',\n variant: 'alertPopupError',\n textColor: true\n },\n\n alertPopupWarning: {\n depends: ['alertWarning'],\n opacity: 'alertPopup'\n },\n alertPopupWarningText: {\n depends: ['alertWarningText'],\n layer: 'popover',\n variant: 'alertPopupWarning',\n textColor: true\n },\n\n alertPopupSuccess: {\n depends: ['alertSuccess'],\n opacity: 'alertPopup'\n },\n alertPopupSuccessText: {\n depends: ['alertSuccessText'],\n layer: 'popover',\n variant: 'alertPopupSuccess',\n textColor: true\n },\n\n alertPopupNeutral: {\n depends: ['alertNeutral'],\n opacity: 'alertPopup'\n },\n alertPopupNeutralText: {\n depends: ['alertNeutralText'],\n layer: 'popover',\n variant: 'alertPopupNeutral',\n textColor: true\n },\n\n badgeNotification: '--cRed',\n badgeNotificationText: {\n depends: ['text', 'badgeNotification'],\n layer: 'badge',\n variant: 'badgeNotification',\n textColor: 'bw'\n },\n\n badgeNeutral: '--cGreen',\n badgeNeutralText: {\n depends: ['text', 'badgeNeutral'],\n layer: 'badge',\n variant: 'badgeNeutral',\n textColor: 'bw'\n },\n\n chatBg: {\n depends: ['bg']\n },\n\n chatMessageIncomingBg: {\n depends: ['chatBg']\n },\n\n chatMessageIncomingText: {\n depends: ['text'],\n layer: 'chatMessage',\n variant: 'chatMessageIncomingBg',\n textColor: true\n },\n\n chatMessageIncomingLink: {\n depends: ['link'],\n layer: 'chatMessage',\n variant: 'chatMessageIncomingBg',\n textColor: 'preserve'\n },\n\n chatMessageIncomingBorder: {\n depends: ['border'],\n opacity: 'border',\n color: (mod, border) => brightness(2 * mod, border).rgb\n },\n\n chatMessageOutgoingBg: {\n depends: ['chatMessageIncomingBg'],\n color: (mod, chatMessage) => brightness(5 * mod, chatMessage).rgb\n },\n\n chatMessageOutgoingText: {\n depends: ['text'],\n layer: 'chatMessage',\n variant: 'chatMessageOutgoingBg',\n textColor: true\n },\n\n chatMessageOutgoingLink: {\n depends: ['link'],\n layer: 'chatMessage',\n variant: 'chatMessageOutgoingBg',\n textColor: 'preserve'\n },\n\n chatMessageOutgoingBorder: {\n depends: ['chatMessageOutgoingBg'],\n opacity: 'border',\n color: (mod, border) => brightness(2 * mod, border).rgb\n }\n}\n","import { convert, brightness, contrastRatio } from 'chromatism'\nimport { alphaBlendLayers, getTextColor, relativeLuminance } from '../color_convert/color_convert.js'\nimport { LAYERS, DEFAULT_OPACITY, SLOT_INHERITANCE } from './pleromafe.js'\n\n/*\n * # What's all this?\n * Here be theme engine for pleromafe. All of this supposed to ease look\n * and feel customization, making widget styles and make developer's life\n * easier when it comes to supporting themes. Like many other theme systems\n * it operates on color definitions, or \"slots\" - for example you define\n * \"button\" color slot and then in UI component Button's CSS you refer to\n * it as a CSS3 Variable.\n *\n * Some applications allow you to customize colors for certain things.\n * Some UI toolkits allow you to define colors for each type of widget.\n * Most of them are pretty barebones and have no assistance for common\n * problems and cases, and in general themes themselves are very hard to\n * maintain in all aspects. This theme engine tries to solve all of the\n * common problems with themes.\n *\n * You don't have redefine several similar colors if you just want to\n * change one color - all color slots are derived from other ones, so you\n * can have at least one or two \"basic\" colors defined and have all other\n * components inherit and modify basic ones.\n *\n * You don't have to test contrast ratio for colors or pick text color for\n * each element even if you have light-on-dark elements in dark-on-light\n * theme.\n *\n * You don't have to maintain order of code for inheriting slots from othet\n * slots - dependency graph resolving does it for you.\n */\n\n/* This indicates that this version of code outputs similar theme data and\n * should be incremented if output changes - for instance if getTextColor\n * function changes and older themes no longer render text colors as\n * author intended previously.\n */\nexport const CURRENT_VERSION = 3\n\nexport const getLayersArray = (layer, data = LAYERS) => {\n const array = [layer]\n let parent = data[layer]\n while (parent) {\n array.unshift(parent)\n parent = data[parent]\n }\n return array\n}\n\nexport const getLayers = (layer, variant = layer, opacitySlot, colors, opacity) => {\n return getLayersArray(layer).map((currentLayer) => ([\n currentLayer === layer\n ? colors[variant]\n : colors[currentLayer],\n currentLayer === layer\n ? opacity[opacitySlot] || 1\n : opacity[currentLayer]\n ]))\n}\n\nconst getDependencies = (key, inheritance) => {\n const data = inheritance[key]\n if (typeof data === 'string' && data.startsWith('--')) {\n return [data.substring(2)]\n } else {\n if (data === null) return []\n const { depends, layer, variant } = data\n const layerDeps = layer\n ? getLayersArray(layer).map(currentLayer => {\n return currentLayer === layer\n ? variant || layer\n : currentLayer\n })\n : []\n if (Array.isArray(depends)) {\n return [...depends, ...layerDeps]\n } else {\n return [...layerDeps]\n }\n }\n}\n\n/**\n * Sorts inheritance object topologically - dependant slots come after\n * dependencies\n *\n * @property {Object} inheritance - object defining the nodes\n * @property {Function} getDeps - function that returns dependencies for\n * given value and inheritance object.\n * @returns {String[]} keys of inheritance object, sorted in topological\n * order. Additionally, dependency-less nodes will always be first in line\n */\nexport const topoSort = (\n inheritance = SLOT_INHERITANCE,\n getDeps = getDependencies\n) => {\n // This is an implementation of https://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm\n\n const allKeys = Object.keys(inheritance)\n const whites = new Set(allKeys)\n const grays = new Set()\n const blacks = new Set()\n const unprocessed = [...allKeys]\n const output = []\n\n const step = (node) => {\n if (whites.has(node)) {\n // Make node \"gray\"\n whites.delete(node)\n grays.add(node)\n // Do step for each node connected to it (one way)\n getDeps(node, inheritance).forEach(step)\n // Make node \"black\"\n grays.delete(node)\n blacks.add(node)\n // Put it into the output list\n output.push(node)\n } else if (grays.has(node)) {\n console.debug('Cyclic depenency in topoSort, ignoring')\n output.push(node)\n } else if (blacks.has(node)) {\n // do nothing\n } else {\n throw new Error('Unintended condition in topoSort!')\n }\n }\n while (unprocessed.length > 0) {\n step(unprocessed.pop())\n }\n\n // The index thing is to make sorting stable on browsers\n // where Array.sort() isn't stable\n return output.map((data, index) => ({ data, index })).sort(({ data: a, index: ai }, { data: b, index: bi }) => {\n const depsA = getDeps(a, inheritance).length\n const depsB = getDeps(b, inheritance).length\n\n if (depsA === depsB || (depsB !== 0 && depsA !== 0)) return ai - bi\n if (depsA === 0 && depsB !== 0) return -1\n if (depsB === 0 && depsA !== 0) return 1\n return 0 // failsafe, shouldn't happen?\n }).map(({ data }) => data)\n}\n\nconst expandSlotValue = (value) => {\n if (typeof value === 'object') return value\n return {\n depends: value.startsWith('--') ? [value.substring(2)] : [],\n default: value.startsWith('#') ? value : undefined\n }\n}\n/**\n * retrieves opacity slot for given slot. This goes up the depenency graph\n * to find which parent has opacity slot defined for it.\n * TODO refactor this\n */\nexport const getOpacitySlot = (\n k,\n inheritance = SLOT_INHERITANCE,\n getDeps = getDependencies\n) => {\n const value = expandSlotValue(inheritance[k])\n if (value.opacity === null) return\n if (value.opacity) return value.opacity\n const findInheritedOpacity = (key, visited = [k]) => {\n const depSlot = getDeps(key, inheritance)[0]\n if (depSlot === undefined) return\n const dependency = inheritance[depSlot]\n if (dependency === undefined) return\n if (dependency.opacity || dependency === null) {\n return dependency.opacity\n } else if (dependency.depends && visited.includes(depSlot)) {\n return findInheritedOpacity(depSlot, [...visited, depSlot])\n } else {\n return null\n }\n }\n if (value.depends) {\n return findInheritedOpacity(k)\n }\n}\n\n/**\n * retrieves layer slot for given slot. This goes up the depenency graph\n * to find which parent has opacity slot defined for it.\n * this is basically copypaste of getOpacitySlot except it checks if key is\n * in LAYERS\n * TODO refactor this\n */\nexport const getLayerSlot = (\n k,\n inheritance = SLOT_INHERITANCE,\n getDeps = getDependencies\n) => {\n const value = expandSlotValue(inheritance[k])\n if (LAYERS[k]) return k\n if (value.layer === null) return\n if (value.layer) return value.layer\n const findInheritedLayer = (key, visited = [k]) => {\n const depSlot = getDeps(key, inheritance)[0]\n if (depSlot === undefined) return\n const dependency = inheritance[depSlot]\n if (dependency === undefined) return\n if (dependency.layer || dependency === null) {\n return dependency.layer\n } else if (dependency.depends) {\n return findInheritedLayer(dependency, [...visited, depSlot])\n } else {\n return null\n }\n }\n if (value.depends) {\n return findInheritedLayer(k)\n }\n}\n\n/**\n * topologically sorted SLOT_INHERITANCE\n */\nexport const SLOT_ORDERED = topoSort(\n Object.entries(SLOT_INHERITANCE)\n .sort(([aK, aV], [bK, bV]) => ((aV && aV.priority) || 0) - ((bV && bV.priority) || 0))\n .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {})\n)\n\n/**\n * All opacity slots used in color slots, their default values and affected\n * color slots.\n */\nexport const OPACITIES = Object.entries(SLOT_INHERITANCE).reduce((acc, [k, v]) => {\n const opacity = getOpacitySlot(k, SLOT_INHERITANCE, getDependencies)\n if (opacity) {\n return {\n ...acc,\n [opacity]: {\n defaultValue: DEFAULT_OPACITY[opacity] || 1,\n affectedSlots: [...((acc[opacity] && acc[opacity].affectedSlots) || []), k]\n }\n }\n } else {\n return acc\n }\n}, {})\n\n/**\n * Handle dynamic color\n */\nexport const computeDynamicColor = (sourceColor, getColor, mod) => {\n if (typeof sourceColor !== 'string' || !sourceColor.startsWith('--')) return sourceColor\n let targetColor = null\n // Color references other color\n const [variable, modifier] = sourceColor.split(/,/g).map(str => str.trim())\n const variableSlot = variable.substring(2)\n targetColor = getColor(variableSlot)\n if (modifier) {\n targetColor = brightness(Number.parseFloat(modifier) * mod, targetColor).rgb\n }\n return targetColor\n}\n\n/**\n * THE function you want to use. Takes provided colors and opacities\n * value and uses inheritance data to figure out color needed for the slot.\n */\nexport const getColors = (sourceColors, sourceOpacity) => SLOT_ORDERED.reduce(({ colors, opacity }, key) => {\n const sourceColor = sourceColors[key]\n const value = expandSlotValue(SLOT_INHERITANCE[key])\n const deps = getDependencies(key, SLOT_INHERITANCE)\n const isTextColor = !!value.textColor\n const variant = value.variant || value.layer\n\n let backgroundColor = null\n\n if (isTextColor) {\n backgroundColor = alphaBlendLayers(\n { ...(colors[deps[0]] || convert(sourceColors[key] || '#FF00FF').rgb) },\n getLayers(\n getLayerSlot(key) || 'bg',\n variant || 'bg',\n getOpacitySlot(variant),\n colors,\n opacity\n )\n )\n } else if (variant && variant !== key) {\n backgroundColor = colors[variant] || convert(sourceColors[variant]).rgb\n } else {\n backgroundColor = colors.bg || convert(sourceColors.bg)\n }\n\n const isLightOnDark = relativeLuminance(backgroundColor) < 0.5\n const mod = isLightOnDark ? 1 : -1\n\n let outputColor = null\n if (sourceColor) {\n // Color is defined in source color\n let targetColor = sourceColor\n if (targetColor === 'transparent') {\n // We take only layers below current one\n const layers = getLayers(\n getLayerSlot(key),\n key,\n getOpacitySlot(key) || key,\n colors,\n opacity\n ).slice(0, -1)\n targetColor = {\n ...alphaBlendLayers(\n convert('#FF00FF').rgb,\n layers\n ),\n a: 0\n }\n } else if (typeof sourceColor === 'string' && sourceColor.startsWith('--')) {\n targetColor = computeDynamicColor(\n sourceColor,\n variableSlot => colors[variableSlot] || sourceColors[variableSlot],\n mod\n )\n } else if (typeof sourceColor === 'string' && sourceColor.startsWith('#')) {\n targetColor = convert(targetColor).rgb\n }\n outputColor = { ...targetColor }\n } else if (value.default) {\n // same as above except in object form\n outputColor = convert(value.default).rgb\n } else {\n // calculate color\n const defaultColorFunc = (mod, dep) => ({ ...dep })\n const colorFunc = value.color || defaultColorFunc\n\n if (value.textColor) {\n if (value.textColor === 'bw') {\n outputColor = contrastRatio(backgroundColor).rgb\n } else {\n let color = { ...colors[deps[0]] }\n if (value.color) {\n color = colorFunc(mod, ...deps.map((dep) => ({ ...colors[dep] })))\n }\n outputColor = getTextColor(\n backgroundColor,\n { ...color },\n value.textColor === 'preserve'\n )\n }\n } else {\n // background color case\n outputColor = colorFunc(\n mod,\n ...deps.map((dep) => ({ ...colors[dep] }))\n )\n }\n }\n if (!outputColor) {\n throw new Error('Couldn\\'t generate color for ' + key)\n }\n\n const opacitySlot = value.opacity || getOpacitySlot(key)\n const ownOpacitySlot = value.opacity\n\n if (ownOpacitySlot === null) {\n outputColor.a = 1\n } else if (sourceColor === 'transparent') {\n outputColor.a = 0\n } else {\n const opacityOverriden = ownOpacitySlot && sourceOpacity[opacitySlot] !== undefined\n\n const dependencySlot = deps[0]\n const dependencyColor = dependencySlot && colors[dependencySlot]\n\n if (!ownOpacitySlot && dependencyColor && !value.textColor && ownOpacitySlot !== null) {\n // Inheriting color from dependency (weird, i know)\n // except if it's a text color or opacity slot is set to 'null'\n outputColor.a = dependencyColor.a\n } else if (!dependencyColor && !opacitySlot) {\n // Remove any alpha channel if no dependency and no opacitySlot found\n delete outputColor.a\n } else {\n // Otherwise try to assign opacity\n if (dependencyColor && dependencyColor.a === 0) {\n // transparent dependency shall make dependents transparent too\n outputColor.a = 0\n } else {\n // Otherwise check if opacity is overriden and use that or default value instead\n outputColor.a = Number(\n opacityOverriden\n ? sourceOpacity[opacitySlot]\n : (OPACITIES[opacitySlot] || {}).defaultValue\n )\n }\n }\n }\n\n if (Number.isNaN(outputColor.a) || outputColor.a === undefined) {\n outputColor.a = 1\n }\n\n if (opacitySlot) {\n return {\n colors: { ...colors, [key]: outputColor },\n opacity: { ...opacity, [opacitySlot]: outputColor.a }\n }\n } else {\n return {\n colors: { ...colors, [key]: outputColor },\n opacity\n }\n }\n}, { colors: {}, opacity: {} })\n","import { hex2rgb } from '../color_convert/color_convert.js'\nconst highlightStyle = (prefs) => {\n if (prefs === undefined) return\n const { color, type } = prefs\n if (typeof color !== 'string') return\n const rgb = hex2rgb(color)\n if (rgb == null) return\n const solidColor = `rgb(${Math.floor(rgb.r)}, ${Math.floor(rgb.g)}, ${Math.floor(rgb.b)})`\n const tintColor = `rgba(${Math.floor(rgb.r)}, ${Math.floor(rgb.g)}, ${Math.floor(rgb.b)}, .1)`\n const tintColor2 = `rgba(${Math.floor(rgb.r)}, ${Math.floor(rgb.g)}, ${Math.floor(rgb.b)}, .2)`\n const customProps = {\n '--____highlight-solidColor': solidColor,\n '--____highlight-tintColor': tintColor,\n '--____highlight-tintColor2': tintColor2\n }\n if (type === 'striped') {\n return {\n backgroundImage: [\n 'repeating-linear-gradient(135deg,',\n `${tintColor} ,`,\n `${tintColor} 20px,`,\n `${tintColor2} 20px,`,\n `${tintColor2} 40px`\n ].join(' '),\n backgroundPosition: '0 0',\n ...customProps\n }\n } else if (type === 'solid') {\n return {\n backgroundColor: tintColor2,\n ...customProps\n }\n } else if (type === 'side') {\n return {\n backgroundImage: [\n 'linear-gradient(to right,',\n `${solidColor} ,`,\n `${solidColor} 2px,`,\n 'transparent 6px'\n ].join(' '),\n backgroundPosition: '0 0',\n ...customProps\n }\n }\n}\n\nconst highlightClass = (user) => {\n return 'USER____' + user.screen_name\n .replace(/\\./g, '_')\n .replace(/@/g, '_AT_')\n}\n\nexport {\n highlightClass,\n highlightStyle\n}\n","import { includes } from 'lodash'\n\nconst generateProfileLink = (id, screenName, restrictedNicknames) => {\n const complicated = !screenName || (isExternal(screenName) || includes(restrictedNicknames, screenName))\n return {\n name: (complicated ? 'external-user-profile' : 'user-profile'),\n params: (complicated ? { id } : { name: screenName })\n }\n}\n\nconst isExternal = screenName => screenName && screenName.includes('@')\n\nexport default generateProfileLink\n","<template>\n <button\n v-if=\"usePlaceholder\"\n class=\"Attachment -placeholder button-unstyled\"\n :class=\"classNames\"\n @click=\"openModal\"\n >\n <a\n v-if=\"type !== 'html'\"\n class=\"placeholder\"\n target=\"_blank\"\n :href=\"attachment.url\"\n :alt=\"attachment.description\"\n :title=\"attachment.description\"\n @click.prevent\n >\n <FAIcon :icon=\"placeholderIconClass\" />\n <b>{{ nsfw ? \"NSFW / \" : \"\" }}</b>{{ edit ? '' : placeholderName }}\n </a>\n <div\n v-if=\"edit || remove\"\n class=\"attachment-buttons\"\n >\n <button\n v-if=\"remove\"\n class=\"button-unstyled attachment-button\"\n @click.prevent=\"onRemove\"\n >\n <FAIcon icon=\"trash-alt\" />\n </button>\n </div>\n <div\n v-if=\"size !== 'hide' && !hideDescription && (edit || localDescription || showDescription)\"\n class=\"description-container\"\n :class=\"{ '-static': !edit }\"\n >\n <input\n v-if=\"edit\"\n v-model=\"localDescription\"\n type=\"text\"\n class=\"description-field\"\n :placeholder=\"$t('post_status.media_description')\"\n @keydown.enter.prevent=\"\"\n >\n <p v-else>\n {{ localDescription }}\n </p>\n </div>\n </button>\n <div\n v-else\n class=\"Attachment\"\n :class=\"classNames\"\n >\n <div\n v-show=\"!isEmpty\"\n class=\"attachment-wrapper\"\n >\n <a\n v-if=\"hidden\"\n class=\"image-container\"\n :href=\"attachment.url\"\n :alt=\"attachment.description\"\n :title=\"attachment.description\"\n @click.prevent.stop=\"toggleHidden\"\n >\n <img\n :key=\"nsfwImage\"\n class=\"nsfw\"\n :src=\"nsfwImage\"\n >\n <FAIcon\n v-if=\"type === 'video'\"\n class=\"play-icon\"\n icon=\"play-circle\"\n />\n </a>\n <div\n v-if=\"!hidden\"\n class=\"attachment-buttons\"\n >\n <button\n v-if=\"type === 'flash' && flashLoaded\"\n class=\"button-unstyled attachment-button\"\n :title=\"$t('status.attachment_stop_flash')\"\n @click.prevent=\"stopFlash\"\n >\n <FAIcon icon=\"stop\" />\n </button>\n <button\n v-if=\"attachment.description && size !== 'small' && !edit && type !== 'unknown'\"\n class=\"button-unstyled attachment-button\"\n :title=\"$t('status.show_attachment_description')\"\n @click.prevent=\"toggleDescription\"\n >\n <FAIcon icon=\"align-right\" />\n </button>\n <button\n v-if=\"!useModal && type !== 'unknown'\"\n class=\"button-unstyled attachment-button\"\n :title=\"$t('status.show_attachment_in_modal')\"\n @click.prevent=\"openModalForce\"\n >\n <FAIcon icon=\"search-plus\" />\n </button>\n <button\n v-if=\"nsfw && hideNsfwLocal\"\n class=\"button-unstyled attachment-button\"\n :title=\"$t('status.hide_attachment')\"\n @click.prevent=\"toggleHidden\"\n >\n <FAIcon icon=\"times\" />\n </button>\n <button\n v-if=\"shiftUp\"\n class=\"button-unstyled attachment-button\"\n :title=\"$t('status.move_up')\"\n @click.prevent=\"onShiftUp\"\n >\n <FAIcon icon=\"chevron-left\" />\n </button>\n <button\n v-if=\"shiftDn\"\n class=\"button-unstyled attachment-button\"\n :title=\"$t('status.move_down')\"\n @click.prevent=\"onShiftDn\"\n >\n <FAIcon icon=\"chevron-right\" />\n </button>\n <button\n v-if=\"remove\"\n class=\"button-unstyled attachment-button\"\n :title=\"$t('status.remove_attachment')\"\n @click.prevent=\"onRemove\"\n >\n <FAIcon icon=\"trash-alt\" />\n </button>\n </div>\n\n <a\n v-if=\"type === 'image' && (!hidden || preloadImage)\"\n class=\"image-container\"\n :class=\"{'-hidden': hidden && preloadImage }\"\n :href=\"attachment.url\"\n target=\"_blank\"\n @click.stop.prevent=\"openModal\"\n >\n <StillImage\n class=\"image\"\n :referrerpolicy=\"referrerpolicy\"\n :mimetype=\"attachment.mimetype\"\n :src=\"attachment.large_thumb_url || attachment.url\"\n :image-load-handler=\"onImageLoad\"\n :alt=\"attachment.description\"\n />\n </a>\n\n <a\n v-if=\"type === 'unknown' && !hidden\"\n class=\"placeholder-container\"\n :href=\"attachment.url\"\n target=\"_blank\"\n >\n <FAIcon\n :size=\"compact ? '2x' : '5x'\"\n :icon=\"placeholderIconClass\"\n :title=\"localDescription\"\n />\n <p v-if=\"!compact\">\n {{ localDescription }}\n </p>\n </a>\n\n <component\n :is=\"videoTag\"\n v-if=\"type === 'video' && !hidden\"\n class=\"video-container\"\n :class=\"{ 'button-unstyled': 'isModal' }\"\n :href=\"attachment.url\"\n @click.stop.prevent=\"openModal\"\n >\n <VideoAttachment\n class=\"video\"\n :attachment=\"attachment\"\n :controls=\"!useModal\"\n @play=\"$emit('play')\"\n @pause=\"$emit('pause')\"\n />\n <FAIcon\n v-if=\"useModal\"\n class=\"play-icon\"\n icon=\"play-circle\"\n />\n </component>\n\n <span\n v-if=\"type === 'audio' && !hidden\"\n class=\"audio-container\"\n :href=\"attachment.url\"\n @click.stop.prevent=\"openModal\"\n >\n <audio\n v-if=\"type === 'audio'\"\n :src=\"attachment.url\"\n :alt=\"attachment.description\"\n :title=\"attachment.description\"\n controls\n @play=\"$emit('play')\"\n @pause=\"$emit('pause')\"\n />\n </span>\n\n <div\n v-if=\"type === 'html' && attachment.oembed\"\n class=\"oembed-container\"\n @click.prevent=\"linkClicked\"\n >\n <div\n v-if=\"attachment.thumb_url\"\n class=\"image\"\n >\n <img :src=\"attachment.thumb_url\">\n </div>\n <div class=\"text\">\n <!-- eslint-disable vue/no-v-html -->\n <h1><a :href=\"attachment.url\">{{ attachment.oembed.title }}</a></h1>\n <div v-html=\"attachment.oembed.oembedHTML\" />\n <!-- eslint-enable vue/no-v-html -->\n </div>\n </div>\n\n <span\n v-if=\"type === 'flash' && !hidden\"\n class=\"flash-container\"\n :href=\"attachment.url\"\n @click.stop.prevent=\"openModal\"\n >\n <Flash\n ref=\"flash\"\n class=\"flash\"\n :src=\"attachment.large_thumb_url || attachment.url\"\n @playerOpened=\"setFlashLoaded(true)\"\n @playerClosed=\"setFlashLoaded(false)\"\n />\n </span>\n </div>\n <div\n v-if=\"size !== 'hide' && !hideDescription && (edit || (localDescription && showDescription))\"\n class=\"description-container\"\n :class=\"{ '-static': !edit }\"\n >\n <input\n v-if=\"edit\"\n v-model=\"localDescription\"\n type=\"text\"\n class=\"description-field\"\n :placeholder=\"$t('post_status.media_description')\"\n @keydown.enter.prevent=\"\"\n >\n <p v-else>\n {{ localDescription }}\n </p>\n </div>\n </div>\n</template>\n\n<script src=\"./attachment.js\"></script>\n\n<style src=\"./attachment.scss\" lang=\"scss\"></style>\n","import StillImage from '../still-image/still-image.vue'\nimport Flash from '../flash/flash.vue'\nimport VideoAttachment from '../video_attachment/video_attachment.vue'\nimport nsfwImage from '../../assets/nsfw.png'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faFile,\n faMusic,\n faImage,\n faVideo,\n faPlayCircle,\n faTimes,\n faStop,\n faSearchPlus,\n faTrashAlt,\n faPencilAlt,\n faAlignRight\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faFile,\n faMusic,\n faImage,\n faVideo,\n faPlayCircle,\n faTimes,\n faStop,\n faSearchPlus,\n faTrashAlt,\n faPencilAlt,\n faAlignRight\n)\n\nconst Attachment = {\n props: [\n 'attachment',\n 'compact',\n 'description',\n 'hideDescription',\n 'nsfw',\n 'size',\n 'setMedia',\n 'remove',\n 'shiftUp',\n 'shiftDn',\n 'edit'\n ],\n data () {\n return {\n localDescription: this.description || this.attachment.description,\n nsfwImage: this.$store.state.instance.nsfwCensorImage || nsfwImage,\n hideNsfwLocal: this.$store.getters.mergedConfig.hideNsfw,\n preloadImage: this.$store.getters.mergedConfig.preloadImage,\n loading: false,\n img: fileTypeService.fileType(this.attachment.mimetype) === 'image' && document.createElement('img'),\n modalOpen: false,\n showHidden: false,\n flashLoaded: false,\n showDescription: false\n }\n },\n components: {\n Flash,\n StillImage,\n VideoAttachment\n },\n computed: {\n classNames () {\n return [\n {\n '-loading': this.loading,\n '-nsfw-placeholder': this.hidden,\n '-editable': this.edit !== undefined,\n '-compact': this.compact\n },\n '-type-' + this.type,\n this.size && '-size-' + this.size,\n `-${this.useContainFit ? 'contain' : 'cover'}-fit`\n ]\n },\n usePlaceholder () {\n return this.size === 'hide'\n },\n useContainFit () {\n return this.$store.getters.mergedConfig.useContainFit\n },\n placeholderName () {\n if (this.attachment.description === '' || !this.attachment.description) {\n return this.type.toUpperCase()\n }\n return this.attachment.description\n },\n placeholderIconClass () {\n if (this.type === 'image') return 'image'\n if (this.type === 'video') return 'video'\n if (this.type === 'audio') return 'music'\n return 'file'\n },\n referrerpolicy () {\n return this.$store.state.instance.mediaProxyAvailable ? '' : 'no-referrer'\n },\n type () {\n return fileTypeService.fileType(this.attachment.mimetype)\n },\n hidden () {\n return this.nsfw && this.hideNsfwLocal && !this.showHidden\n },\n isEmpty () {\n return (this.type === 'html' && !this.attachment.oembed)\n },\n useModal () {\n let modalTypes = []\n switch (this.size) {\n case 'hide':\n case 'small':\n modalTypes = ['image', 'video', 'audio', 'flash']\n break\n default:\n modalTypes = this.mergedConfig.playVideosInModal\n ? ['image', 'video', 'flash']\n : ['image']\n break\n }\n return modalTypes.includes(this.type)\n },\n videoTag () {\n return this.useModal ? 'button' : 'span'\n },\n ...mapGetters(['mergedConfig'])\n },\n watch: {\n 'attachment.description' (newVal) {\n this.localDescription = newVal\n },\n localDescription (newVal) {\n this.onEdit(newVal)\n }\n },\n methods: {\n linkClicked ({ target }) {\n if (target.tagName === 'A') {\n window.open(target.href, '_blank')\n }\n },\n openModal (event) {\n if (this.useModal) {\n this.$emit('setMedia')\n this.$store.dispatch('setCurrentMedia', this.attachment)\n } else if (this.type === 'unknown') {\n window.open(this.attachment.url)\n }\n },\n openModalForce (event) {\n this.$emit('setMedia')\n this.$store.dispatch('setCurrentMedia', this.attachment)\n },\n onEdit (event) {\n this.edit && this.edit(this.attachment, event)\n },\n onRemove () {\n this.remove && this.remove(this.attachment)\n },\n onShiftUp () {\n this.shiftUp && this.shiftUp(this.attachment)\n },\n onShiftDn () {\n this.shiftDn && this.shiftDn(this.attachment)\n },\n stopFlash () {\n this.$refs.flash.closePlayer()\n },\n setFlashLoaded (event) {\n this.flashLoaded = event\n },\n toggleDescription () {\n this.showDescription = !this.showDescription\n },\n toggleHidden (event) {\n if (\n (this.mergedConfig.useOneClickNsfw && !this.showHidden) &&\n (this.type !== 'video' || this.mergedConfig.playVideosInModal)\n ) {\n this.openModal(event)\n return\n }\n if (this.img && !this.preloadImage) {\n if (this.img.onload) {\n this.img.onload()\n } else {\n this.loading = true\n this.img.src = this.attachment.url\n this.img.onload = () => {\n this.loading = false\n this.showHidden = !this.showHidden\n }\n }\n } else {\n this.showHidden = !this.showHidden\n }\n },\n onImageLoad (image) {\n const width = image.naturalWidth\n const height = image.naturalHeight\n this.$emit('naturalSizeLoad', { id: this.attachment.id, width, height })\n }\n }\n}\n\nexport default Attachment\n","import { render } from \"./attachment.vue?vue&type=template&id=581d66b2\"\nimport script from \"./attachment.js?vue&type=script&lang=js\"\nexport * from \"./attachment.js?vue&type=script&lang=js\"\n\nimport \"./attachment.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"avatars\">\n <router-link\n v-for=\"user in slicedUsers\"\n :key=\"user.id\"\n :to=\"userProfileLink(user)\"\n class=\"avatars-item\"\n >\n <UserAvatar\n :user=\"user\"\n class=\"avatar-small\"\n />\n </router-link>\n </div>\n</template>\n\n<script src=\"./avatar_list.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.avatars {\n display: flex;\n margin: 0;\n padding: 0;\n\n // For hiding overflowing elements\n flex-wrap: wrap;\n height: 24px;\n\n .avatars-item {\n margin: 0 0 5px 5px;\n\n &:first-child {\n padding-left: 5px;\n }\n\n .avatar-small {\n border-radius: $fallback--avatarAltRadius;\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n height: 24px;\n width: 24px;\n }\n }\n}\n</style>\n","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\n\nconst AvatarList = {\n props: ['users'],\n computed: {\n slicedUsers () {\n return this.users ? this.users.slice(0, 15) : []\n }\n },\n components: {\n UserAvatar\n },\n methods: {\n userProfileLink (user) {\n return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n }\n }\n}\n\nexport default AvatarList\n","import { render } from \"./avatar_list.vue?vue&type=template&id=432beb66\"\nimport script from \"./avatar_list.js?vue&type=script&lang=js\"\nexport * from \"./avatar_list.js?vue&type=script&lang=js\"\n\nimport \"./avatar_list.vue?vue&type=style&index=0&id=432beb66&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"basic-user-card\">\n <router-link\n :to=\"userProfileLink(user)\"\n @click.prevent\n >\n <UserPopover\n :user-id=\"user.id\"\n :overlay-centers=\"true\"\n overlay-centers-selector=\".avatar\"\n >\n <UserAvatar\n class=\"user-avatar avatar\"\n :user=\"user\"\n @click.prevent\n />\n </UserPopover>\n </router-link>\n <div\n class=\"basic-user-card-collapsed-content\"\n >\n <div\n :title=\"user.name\"\n class=\"basic-user-card-user-name\"\n >\n <RichContent\n class=\"basic-user-card-user-name-value\"\n :html=\"user.name\"\n :emoji=\"user.emoji\"\n />\n </div>\n <div>\n <user-link\n class=\"basic-user-card-screen-name\"\n :user=\"user\"\n />\n </div>\n <slot />\n </div>\n </div>\n</template>\n\n<script src=\"./basic_user_card.js\"></script>\n\n<style lang=\"scss\">\n.basic-user-card {\n display: flex;\n flex: 1 0;\n margin: 0;\n padding: 0.6em 1em;\n\n --emoji-size: 14px;\n\n &-collapsed-content {\n margin-left: 0.7em;\n text-align: left;\n flex: 1;\n min-width: 0;\n }\n\n &-user-name {\n img {\n object-fit: contain;\n height: 16px;\n width: 16px;\n vertical-align: middle;\n }\n }\n\n &-user-name-value,\n &-screen-name {\n display: inline-block;\n max-width: 100%;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n\n &-expanded-content {\n flex: 1;\n margin-left: 0.7em;\n min-width: 0;\n }\n}\n</style>\n","import UserPopover from '../user_popover/user_popover.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport UserLink from '../user_link/user_link.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\n\nconst BasicUserCard = {\n props: [\n 'user'\n ],\n components: {\n UserPopover,\n UserAvatar,\n RichContent,\n UserLink\n },\n methods: {\n userProfileLink (user) {\n return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n }\n }\n}\n\nexport default BasicUserCard\n","import { render } from \"./basic_user_card.vue?vue&type=template&id=d8a50982\"\nimport script from \"./basic_user_card.js?vue&type=script&lang=js\"\nexport * from \"./basic_user_card.js?vue&type=script&lang=js\"\n\nimport \"./basic_user_card.vue?vue&type=style&index=0&id=d8a50982&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <label\n class=\"checkbox\"\n :class=\"{ disabled, indeterminate }\"\n >\n <input\n type=\"checkbox\"\n class=\"visible-for-screenreader-only\"\n :disabled=\"disabled\"\n :checked=\"modelValue\"\n :indeterminate=\"indeterminate\"\n @change=\"$emit('update:modelValue', $event.target.checked)\"\n >\n <i\n class=\"checkbox-indicator\"\n :aria-hidden=\"true\"\n />\n <span\n v-if=\"!!$slots.default\"\n class=\"label\"\n >\n <slot />\n </span>\n </label>\n</template>\n\n<script>\nexport default {\n props: [\n 'modelValue',\n 'indeterminate',\n 'disabled'\n ],\n emits: ['update:modelValue']\n}\n</script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n@import \"../../mixins\";\n\n.checkbox {\n position: relative;\n display: inline-block;\n min-height: 1.2em;\n\n &-indicator {\n position: relative;\n padding-left: 1.2em;\n }\n\n &-indicator::before {\n position: absolute;\n right: 0;\n top: 0;\n display: block;\n content: \"✓\";\n transition: color 200ms;\n width: 1.1em;\n height: 1.1em;\n border-radius: $fallback--checkboxRadius;\n border-radius: var(--checkboxRadius, $fallback--checkboxRadius);\n box-shadow: 0 0 2px black inset;\n box-shadow: var(--inputShadow);\n background-color: $fallback--fg;\n background-color: var(--input, $fallback--fg);\n vertical-align: top;\n text-align: center;\n line-height: 1.1em;\n font-size: 1.1em;\n color: transparent;\n overflow: hidden;\n box-sizing: border-box;\n }\n\n &.disabled {\n .checkbox-indicator::before,\n .label {\n opacity: 0.5;\n }\n\n .label {\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n }\n }\n\n input[type=\"checkbox\"] {\n &:checked + .checkbox-indicator::before {\n color: $fallback--text;\n color: var(--inputText, $fallback--text);\n }\n\n &:indeterminate + .checkbox-indicator::before {\n content: \"–\";\n color: $fallback--text;\n color: var(--inputText, $fallback--text);\n }\n }\n\n & > span {\n margin-left: 0.5em;\n }\n}\n</style>\n","import { render } from \"./checkbox.vue?vue&type=template&id=66e895aa\"\nimport script from \"./checkbox.vue?vue&type=script&lang=js\"\nexport * from \"./checkbox.vue?vue&type=script&lang=js\"\n\nimport \"./checkbox.vue?vue&type=style&index=0&id=66e895aa&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import DialogModal from '../dialog_modal/dialog_modal.vue'\n\n/**\n * This component emits the following events:\n * cancelled, emitted when the action should not be performed;\n * accepted, emitted when the action should be performed;\n *\n * The caller should close this dialog after receiving any of the two events.\n */\nconst ConfirmModal = {\n components: {\n DialogModal\n },\n props: {\n title: {\n type: String\n },\n cancelText: {\n type: String\n },\n confirmText: {\n type: String\n }\n },\n computed: {\n },\n methods: {\n onCancel () {\n this.$emit('cancelled')\n },\n onAccept () {\n this.$emit('accepted')\n }\n }\n}\n\nexport default ConfirmModal\n","import { render } from \"./confirm_modal.vue?vue&type=template&id=c74bcd96\"\nimport script from \"./confirm_modal.js?vue&type=script&lang=js\"\nexport * from \"./confirm_modal.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <dialog-modal\n v-body-scroll-lock=\"true\"\n class=\"confirm-modal\"\n :on-cancel=\"onCancel\"\n >\n <template #header>\n <span v-text=\"title\" />\n </template>\n\n <slot />\n\n <template #footer>\n <button\n class=\"btn button-default\"\n @click.prevent=\"onAccept\"\n v-text=\"confirmText\"\n />\n\n <button\n class=\"btn button-default\"\n @click.prevent=\"onCancel\"\n v-text=\"cancelText\"\n />\n </template>\n </dialog-modal>\n</template>\n\n<script src=\"./confirm_modal.js\"></script>\n","<template>\n <span\n :class=\"{ 'dark-overlay': darkOverlay }\"\n @click.self.stop=\"onCancel()\"\n >\n <div\n class=\"dialog-modal panel panel-default\"\n @click.stop=\"\"\n >\n <div class=\"panel-heading dialog-modal-heading\">\n <div class=\"title\">\n <slot name=\"header\" />\n </div>\n </div>\n <div class=\"dialog-modal-content\">\n <slot name=\"default\" />\n </div>\n <div class=\"dialog-modal-footer user-interactions panel-footer\">\n <slot name=\"footer\" />\n </div>\n </div>\n </span>\n</template>\n\n<script src=\"./dialog_modal.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n// TODO: unify with other modals.\n.dark-overlay {\n &::before {\n bottom: 0;\n content: \" \";\n display: block;\n cursor: default;\n left: 0;\n position: fixed;\n right: 0;\n top: 0;\n background: rgb(27 31 35 / 50%);\n z-index: 2000;\n }\n}\n\n.dialog-modal.panel {\n top: 0;\n left: 50%;\n max-height: 80vh;\n max-width: 90vw;\n margin: 15vh auto;\n position: fixed;\n transform: translateX(-50%);\n z-index: 2001;\n cursor: default;\n display: block;\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n\n .dialog-modal-heading {\n .title {\n text-align: center;\n }\n }\n\n .dialog-modal-content {\n margin: 0;\n padding: 1rem;\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n white-space: normal;\n }\n\n .dialog-modal-footer {\n margin: 0;\n padding: 0.5em;\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n border-top: 1px solid $fallback--border;\n border-top: 1px solid var(--border, $fallback--border);\n display: flex;\n justify-content: flex-end;\n\n button {\n width: auto;\n margin-left: 0.5rem;\n }\n }\n}\n\n</style>\n","const DialogModal = {\n props: {\n darkOverlay: {\n default: true,\n type: Boolean\n },\n onCancel: {\n default: () => {},\n type: Function\n }\n }\n}\n\nexport default DialogModal\n","import { render } from \"./dialog_modal.vue?vue&type=template&id=5b856fbc\"\nimport script from \"./dialog_modal.js?vue&type=script&lang=js\"\nexport * from \"./dialog_modal.js?vue&type=script&lang=js\"\n\nimport \"./dialog_modal.vue?vue&type=style&index=0&id=5b856fbc&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n ref=\"root\"\n class=\"emoji-input\"\n :class=\"{ 'with-picker': !hideEmojiButton }\"\n >\n <slot\n :id=\"'textbox-' + randomSeed\"\n :aria-owns=\"suggestionListId\"\n aria-autocomplete=\"both\"\n :aria-expanded=\"showSuggestions\"\n :aria-activedescendant=\"(!showSuggestions || highlighted === -1) ? '' : suggestionItemId(highlighted)\"\n />\n <!-- TODO: make the 'x' disappear if at the end maybe? -->\n <div\n ref=\"hiddenOverlay\"\n class=\"hidden-overlay\"\n :style=\"overlayStyle\"\n :aria-hidden=\"true\"\n >\n <span>{{ preText }}</span>\n <span\n ref=\"hiddenOverlayCaret\"\n class=\"caret\"\n >x</span>\n <span>{{ postText }}</span>\n </div>\n <screen-reader-notice\n ref=\"screenReaderNotice\"\n aria-live=\"assertive\"\n />\n <template v-if=\"enableEmojiPicker\">\n <button\n v-if=\"!hideEmojiButton\"\n class=\"button-unstyled emoji-picker-icon\"\n type=\"button\"\n :title=\"$t('emoji.add_emoji')\"\n @click.prevent=\"togglePicker\"\n >\n <FAIcon :icon=\"['far', 'smile-beam']\" />\n </button>\n <EmojiPicker\n v-if=\"enableEmojiPicker\"\n ref=\"picker\"\n :enable-sticker-picker=\"enableStickerPicker\"\n class=\"emoji-picker-panel\"\n @emoji=\"insert\"\n @sticker-uploaded=\"onStickerUploaded\"\n @sticker-upload-failed=\"onStickerUploadFailed\"\n @show=\"onPickerShown\"\n @close=\"onPickerClosed\"\n />\n </template>\n <Popover\n ref=\"suggestorPopover\"\n class=\"autocomplete-panel\"\n placement=\"bottom\"\n :trigger-attrs=\"{ 'aria-hidden': true }\"\n >\n <template #content>\n <div\n :id=\"suggestionListId\"\n ref=\"panel-body\"\n class=\"autocomplete-panel-body\"\n role=\"listbox\"\n >\n <div\n v-for=\"(suggestion, index) in suggestions\"\n :id=\"suggestionItemId(index)\"\n :key=\"index\"\n class=\"autocomplete-item\"\n role=\"option\"\n :class=\"{ highlighted: index === highlighted }\"\n :aria-label=\"autoCompleteItemLabel(suggestion)\"\n :aria-selected=\"index === highlighted\"\n @click.stop.prevent=\"onClick($event, suggestion)\"\n >\n <span class=\"image\">\n <img\n v-if=\"suggestion.img\"\n :src=\"suggestion.img\"\n >\n <span v-else>{{ suggestion.replacement }}</span>\n </span>\n <div class=\"label\">\n <span\n v-if=\"suggestion.user\"\n class=\"displayText\"\n >\n {{ suggestion.displayText }}<UnicodeDomainIndicator\n :user=\"suggestion.user\"\n :at=\"false\"\n />\n </span>\n <span\n v-if=\"!suggestion.user\"\n class=\"displayText\"\n >\n {{ maybeLocalizedEmojiName(suggestion) }}\n </span>\n <span class=\"detailText\">{{ suggestion.detailText }}</span>\n </div>\n </div>\n </div>\n </template>\n </Popover>\n </div>\n</template>\n\n<script src=\"./emoji_input.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.emoji-input {\n display: flex;\n flex-direction: column;\n position: relative;\n\n .emoji-picker-icon {\n position: absolute;\n top: 0;\n right: 0;\n margin: 0.2em 0.25em;\n font-size: 1.3em;\n cursor: pointer;\n line-height: 24px;\n\n &:hover i {\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n }\n\n .emoji-picker-panel {\n position: absolute;\n z-index: 20;\n margin-top: 2px;\n\n &.hide {\n display: none;\n }\n }\n\n input,\n textarea {\n flex: 1 0 auto;\n }\n\n &.with-picker input {\n padding-right: 30px;\n }\n\n .hidden-overlay {\n opacity: 0;\n pointer-events: none;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n left: 0;\n overflow: hidden;\n\n /* DEBUG STUFF */\n color: red;\n\n /* set opacity to non-zero to see the overlay */\n\n .caret {\n width: 0;\n margin-right: calc(-1ch - 1px);\n border: 1px solid red;\n }\n }\n}\n\n.autocomplete {\n &-panel {\n position: absolute;\n }\n\n &-item {\n display: flex;\n cursor: pointer;\n padding: 0.2em 0.4em;\n border-bottom: 1px solid rgb(0 0 0 / 40%);\n height: 32px;\n\n .image {\n width: 32px;\n height: 32px;\n line-height: 32px;\n text-align: center;\n font-size: 32px;\n margin-right: 4px;\n\n img {\n width: 32px;\n height: 32px;\n object-fit: contain;\n }\n }\n\n .label {\n display: flex;\n flex-direction: column;\n justify-content: center;\n margin: 0 0.1em 0 0.2em;\n\n .displayText {\n line-height: 1.5;\n }\n\n .detailText {\n font-size: 9px;\n line-height: 9px;\n }\n }\n\n &.highlighted {\n background-color: $fallback--fg;\n background-color: var(--selectedMenuPopover, $fallback--fg);\n color: var(--selectedMenuPopoverText, $fallback--text);\n\n --faint: var(--selectedMenuPopoverFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuPopoverFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuPopoverLightText, $fallback--lightText);\n --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n }\n }\n}\n</style>\n","import { reduce, find } from 'lodash'\n\nexport const replaceWord = (str, toReplace, replacement) => {\n return str.slice(0, toReplace.start) + replacement + str.slice(toReplace.end)\n}\n\nexport const wordAtPosition = (str, pos) => {\n const words = splitByWhitespaceBoundary(str)\n const wordsWithPosition = addPositionToWords(words)\n\n return find(wordsWithPosition, ({ start, end }) => start <= pos && end > pos)\n}\n\nexport const addPositionToWords = (words) => {\n return reduce(words, (result, word) => {\n const data = {\n word,\n start: 0,\n end: word.length\n }\n\n if (result.length > 0) {\n const previous = result.pop()\n\n data.start += previous.end\n data.end += previous.end\n\n result.push(previous)\n }\n\n result.push(data)\n\n return result\n }, [])\n}\n\nexport const splitByWhitespaceBoundary = (str) => {\n const result = []\n let currentWord = ''\n for (let i = 0; i < str.length; i++) {\n const currentChar = str[i]\n // Starting a new word\n if (!currentWord) {\n currentWord = currentChar\n continue\n }\n // current character is whitespace while word isn't, or vice versa:\n // add our current word to results, start over the current word.\n if (!!currentChar.trim() !== !!currentWord.trim()) {\n result.push(currentWord)\n currentWord = currentChar\n continue\n }\n currentWord += currentChar\n }\n // Add the last word we were working on\n if (currentWord) {\n result.push(currentWord)\n }\n return result\n}\n\nconst completion = {\n wordAtPosition,\n addPositionToWords,\n splitByWhitespaceBoundary,\n replaceWord\n}\n\nexport default completion\n","<template>\n <Popover\n ref=\"popover\"\n trigger=\"click\"\n popover-class=\"emoji-picker popover-default\"\n :trigger-attrs=\"{ 'aria-hidden': true }\"\n @show=\"onPopoverShown\"\n @close=\"onPopoverClosed\"\n >\n <template #content>\n <div class=\"heading\">\n <span\n ref=\"header\"\n class=\"emoji-tabs\"\n >\n <span\n v-for=\"group in filteredEmojiGroups\"\n :ref=\"setGroupRef('group-header-' + group.id)\"\n :key=\"group.id\"\n class=\"emoji-tabs-item\"\n :class=\"{\n active: activeGroupView === group.id\n }\"\n :title=\"group.text\"\n @click.prevent=\"highlight(group.id)\"\n >\n <span\n v-if=\"group.image\"\n class=\"emoji-picker-header-image\"\n >\n <still-image\n :alt=\"group.text\"\n :src=\"group.image\"\n />\n </span>\n <FAIcon\n v-else\n :icon=\"group.icon\"\n fixed-width\n />\n </span>\n </span>\n <span\n v-if=\"stickerPickerEnabled\"\n class=\"additional-tabs\"\n >\n <span\n class=\"stickers-tab-icon additional-tabs-item\"\n :class=\"{active: showingStickers}\"\n :title=\"$t('emoji.stickers')\"\n @click.prevent=\"toggleStickers\"\n >\n <FAIcon\n icon=\"sticky-note\"\n fixed-width\n />\n </span>\n </span>\n </div>\n <div\n v-if=\"contentLoaded\"\n class=\"content\"\n >\n <div\n class=\"emoji-content\"\n :class=\"{hidden: showingStickers}\"\n >\n <div class=\"emoji-search\">\n <input\n ref=\"search\"\n v-model=\"keyword\"\n type=\"text\"\n class=\"form-control\"\n :placeholder=\"$t('emoji.search_emoji')\"\n @input=\"$event.target.composing = false\"\n >\n </div>\n <DynamicScroller\n ref=\"emoji-groups\"\n class=\"emoji-groups\"\n :class=\"groupsScrolledClass\"\n :min-item-size=\"minItemSize\"\n :items=\"emojiItems\"\n :emit-update=\"true\"\n @update=\"onScroll\"\n @visible=\"recalculateItemPerRow\"\n @resize=\"recalculateItemPerRow\"\n >\n <template #default=\"{ item: group, index, active }\">\n <DynamicScrollerItem\n :ref=\"setGroupRef('group-' + group.id)\"\n :item=\"group\"\n :active=\"active\"\n :data-index=\"index\"\n :size-dependencies=\"[group.emojis.length]\"\n >\n <div\n class=\"emoji-group\"\n >\n <h6\n v-if=\"group.isFirstRow\"\n class=\"emoji-group-title\"\n >\n {{ group.text }}\n </h6>\n <span\n v-for=\"emoji in group.emojis\"\n :key=\"group.id + emoji.displayText\"\n :title=\"maybeLocalizedEmojiName(emoji)\"\n class=\"emoji-item\"\n @click.stop.prevent=\"onEmoji(emoji)\"\n >\n <span\n v-if=\"!emoji.imageUrl\"\n class=\"emoji-picker-emoji -unicode\"\n >{{ emoji.replacement }}</span>\n <still-image\n v-else\n class=\"emoji-picker-emoji -custom\"\n loading=\"lazy\"\n :src=\"emoji.imageUrl\"\n :data-emoji-name=\"group.id + emoji.displayText\"\n />\n </span>\n </div>\n </DynamicScrollerItem>\n </template>\n </DynamicScroller>\n <div class=\"keep-open\">\n <Checkbox v-model=\"keepOpen\">\n {{ $t('emoji.keep_open') }}\n </Checkbox>\n </div>\n </div>\n <div\n v-if=\"showingStickers\"\n class=\"stickers-content\"\n >\n <sticker-picker\n @uploaded=\"onStickerUploaded\"\n @upload-failed=\"onStickerUploadFailed\"\n />\n </div>\n </div>\n </template>\n </Popover>\n</template>\n\n<script src=\"./emoji_picker.js\"></script>\n<style lang=\"scss\" src=\"./emoji_picker.scss\"></style>\n","import { defineAsyncComponent } from 'vue'\nimport Checkbox from '../checkbox/checkbox.vue'\nimport Popover from 'src/components/popover/popover.vue'\nimport StillImage from '../still-image/still-image.vue'\nimport { ensureFinalFallback } from '../../i18n/languages.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faBoxOpen,\n faStickyNote,\n faSmileBeam,\n faSmile,\n faUser,\n faPaw,\n faIceCream,\n faBus,\n faBasketballBall,\n faLightbulb,\n faCode,\n faFlag\n} from '@fortawesome/free-solid-svg-icons'\nimport { debounce, trim, chunk } from 'lodash'\n\nlibrary.add(\n faBoxOpen,\n faStickyNote,\n faSmileBeam,\n faSmile,\n faUser,\n faPaw,\n faIceCream,\n faBus,\n faBasketballBall,\n faLightbulb,\n faCode,\n faFlag\n)\n\nconst UNICODE_EMOJI_GROUP_ICON = {\n 'smileys-and-emotion': 'smile',\n 'people-and-body': 'user',\n 'animals-and-nature': 'paw',\n 'food-and-drink': 'ice-cream',\n 'travel-and-places': 'bus',\n activities: 'basketball-ball',\n objects: 'lightbulb',\n symbols: 'code',\n flags: 'flag'\n}\n\nconst maybeLocalizedKeywords = (emoji, languages, nameLocalizer) => {\n const res = [emoji.displayText, nameLocalizer(emoji)]\n if (emoji.annotations) {\n languages.forEach(lang => {\n const keywords = emoji.annotations[lang]?.keywords || []\n const name = emoji.annotations[lang]?.name\n res.push(...(keywords.concat([name]).filter(k => k)))\n })\n }\n return res\n}\n\nconst filterByKeyword = (list, keyword = '', languages, nameLocalizer) => {\n if (keyword === '') return list\n\n const keywordLowercase = keyword.toLowerCase()\n const orderedEmojiList = []\n for (const emoji of list) {\n const indices = maybeLocalizedKeywords(emoji, languages, nameLocalizer)\n .map(k => k.toLowerCase().indexOf(keywordLowercase))\n .filter(k => k > -1)\n\n const indexOfKeyword = indices.length ? Math.min(...indices) : -1\n\n if (indexOfKeyword > -1) {\n if (!Array.isArray(orderedEmojiList[indexOfKeyword])) {\n orderedEmojiList[indexOfKeyword] = []\n }\n orderedEmojiList[indexOfKeyword].push(emoji)\n }\n }\n return orderedEmojiList.flat()\n}\n\nconst getOffset = (elem) => {\n const style = elem.style.transform\n const res = /translateY\\((\\d+)px\\)/.exec(style)\n if (!res) { return 0 }\n return res[1]\n}\n\nconst toHeaderId = id => {\n return id.replace(/^row-\\d+-/, '')\n}\n\nconst EmojiPicker = {\n props: {\n enableStickerPicker: {\n required: false,\n type: Boolean,\n default: false\n }\n },\n data () {\n return {\n keyword: '',\n activeGroup: 'custom',\n showingStickers: false,\n groupsScrolledClass: 'scrolled-top',\n keepOpen: false,\n customEmojiTimeout: null,\n // Lazy-load only after the first time `showing` becomes true.\n contentLoaded: false,\n groupRefs: {},\n emojiRefs: {},\n filteredEmojiGroups: [],\n width: 0\n }\n },\n components: {\n StickerPicker: defineAsyncComponent(() => import('../sticker_picker/sticker_picker.vue')),\n Checkbox,\n StillImage,\n Popover\n },\n methods: {\n showPicker () {\n this.$refs.popover.showPopover()\n this.onShowing()\n },\n hidePicker () {\n this.$refs.popover.hidePopover()\n },\n setAnchorEl (el) {\n this.$refs.popover.setAnchorEl(el)\n },\n setGroupRef (name) {\n return el => { this.groupRefs[name] = el }\n },\n onPopoverShown () {\n this.$emit('show')\n },\n onPopoverClosed () {\n this.$emit('close')\n },\n onStickerUploaded (e) {\n this.$emit('sticker-uploaded', e)\n },\n onStickerUploadFailed (e) {\n this.$emit('sticker-upload-failed', e)\n },\n onEmoji (emoji) {\n const value = emoji.imageUrl ? `:${emoji.displayText}:` : emoji.replacement\n if (!this.keepOpen) {\n this.$refs.popover.hidePopover()\n }\n this.$emit('emoji', { insertion: value, keepOpen: this.keepOpen })\n },\n onScroll (startIndex, endIndex, visibleStartIndex, visibleEndIndex) {\n const target = this.$refs['emoji-groups'].$el\n this.scrolledGroup(target, visibleStartIndex, visibleEndIndex)\n },\n scrolledGroup (target, start, end) {\n const top = target.scrollTop + 5\n this.$nextTick(() => {\n this.emojiItems.slice(start, end + 1).forEach(group => {\n const headerId = toHeaderId(group.id)\n const ref = this.groupRefs['group-' + group.id]\n if (!ref) { return }\n const elem = ref.$el.parentElement\n if (!elem) { return }\n if (elem && getOffset(elem) <= top) {\n this.activeGroup = headerId\n }\n })\n this.scrollHeader()\n })\n },\n scrollHeader () {\n // Scroll the active tab's header into view\n const headerRef = this.groupRefs['group-header-' + this.activeGroup]\n const left = headerRef.offsetLeft\n const right = left + headerRef.offsetWidth\n const headerCont = this.$refs.header\n const currentScroll = headerCont.scrollLeft\n const currentScrollRight = currentScroll + headerCont.clientWidth\n const setScroll = s => { headerCont.scrollLeft = s }\n\n const margin = 7 // .emoji-tabs-item: padding\n if (left - margin < currentScroll) {\n setScroll(left - margin)\n } else if (right + margin > currentScrollRight) {\n setScroll(right + margin - headerCont.clientWidth)\n }\n },\n highlight (groupId) {\n this.setShowStickers(false)\n const indexInList = this.emojiItems.findIndex(k => k.id === groupId)\n this.$refs['emoji-groups'].scrollToItem(indexInList)\n },\n updateScrolledClass (target) {\n if (target.scrollTop <= 5) {\n this.groupsScrolledClass = 'scrolled-top'\n } else if (target.scrollTop >= target.scrollTopMax - 5) {\n this.groupsScrolledClass = 'scrolled-bottom'\n } else {\n this.groupsScrolledClass = 'scrolled-middle'\n }\n },\n toggleStickers () {\n this.showingStickers = !this.showingStickers\n },\n setShowStickers (value) {\n this.showingStickers = value\n },\n filterByKeyword (list, keyword) {\n return filterByKeyword(list, keyword, this.languages, this.maybeLocalizedEmojiName)\n },\n onShowing () {\n const oldContentLoaded = this.contentLoaded\n this.recalculateItemPerRow()\n this.$nextTick(() => {\n this.$refs.search.focus()\n })\n this.contentLoaded = true\n this.filteredEmojiGroups = this.getFilteredEmojiGroups()\n if (!oldContentLoaded) {\n this.$nextTick(() => {\n if (this.defaultGroup) {\n this.highlight(this.defaultGroup)\n }\n })\n }\n },\n getFilteredEmojiGroups () {\n return this.allEmojiGroups\n .map(group => ({\n ...group,\n emojis: this.filterByKeyword(group.emojis, trim(this.keyword))\n }))\n .filter(group => group.emojis.length > 0)\n },\n recalculateItemPerRow () {\n this.$nextTick(() => {\n if (!this.$refs['emoji-groups']) {\n return\n }\n this.width = this.$refs['emoji-groups'].$el.clientWidth\n })\n }\n },\n watch: {\n keyword () {\n this.onScroll()\n this.debouncedHandleKeywordChange()\n },\n allCustomGroups () {\n this.filteredEmojiGroups = this.getFilteredEmojiGroups()\n }\n },\n computed: {\n minItemSize () {\n return this.emojiHeight\n },\n emojiHeight () {\n return 32 + 4\n },\n emojiWidth () {\n return 32 + 4\n },\n itemPerRow () {\n return this.width ? Math.floor(this.width / this.emojiWidth - 1) : 6\n },\n activeGroupView () {\n return this.showingStickers ? '' : this.activeGroup\n },\n stickersAvailable () {\n if (this.$store.state.instance.stickers) {\n return this.$store.state.instance.stickers.length > 0\n }\n return 0\n },\n allCustomGroups () {\n const emojis = this.$store.getters.groupedCustomEmojis\n if (emojis.unpacked) {\n emojis.unpacked.text = this.$t('emoji.unpacked')\n }\n return emojis\n },\n defaultGroup () {\n return Object.keys(this.allCustomGroups)[0]\n },\n unicodeEmojiGroups () {\n return this.$store.getters.standardEmojiGroupList.map(group => ({\n id: `standard-${group.id}`,\n text: this.$t(`emoji.unicode_groups.${group.id}`),\n icon: UNICODE_EMOJI_GROUP_ICON[group.id],\n emojis: group.emojis\n }))\n },\n allEmojiGroups () {\n return Object.entries(this.allCustomGroups)\n .map(([_, v]) => v)\n .concat(this.unicodeEmojiGroups)\n },\n stickerPickerEnabled () {\n return (this.$store.state.instance.stickers || []).length !== 0\n },\n debouncedHandleKeywordChange () {\n return debounce(() => {\n this.filteredEmojiGroups = this.getFilteredEmojiGroups()\n }, 500)\n },\n emojiItems () {\n return this.filteredEmojiGroups.map(group =>\n chunk(group.emojis, this.itemPerRow)\n .map((items, index) => ({\n ...group,\n id: index === 0 ? group.id : `row-${index}-${group.id}`,\n emojis: items,\n isFirstRow: index === 0\n })))\n .reduce((a, c) => a.concat(c), [])\n },\n languages () {\n return ensureFinalFallback(this.$store.getters.mergedConfig.interfaceLanguage)\n },\n maybeLocalizedEmojiName () {\n return emoji => {\n if (!emoji.annotations) {\n return emoji.displayText\n }\n\n if (emoji.displayTextI18n) {\n return this.$t(emoji.displayTextI18n.key, emoji.displayTextI18n.args)\n }\n\n for (const lang of this.languages) {\n if (emoji.annotations[lang]?.name) {\n return emoji.annotations[lang].name\n }\n }\n\n return emoji.displayText\n }\n }\n }\n}\n\nexport default EmojiPicker\n","import { render } from \"./emoji_picker.vue?vue&type=template&id=22e1493a\"\nimport script from \"./emoji_picker.js?vue&type=script&lang=js\"\nexport * from \"./emoji_picker.js?vue&type=script&lang=js\"\n\nimport \"./emoji_picker.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","const ScreenReaderNotice = {\n props: {\n ariaLive: {\n type: String,\n defualt: 'assertive'\n }\n },\n data () {\n return {\n currentText: ''\n }\n },\n methods: {\n announce (text) {\n this.currentText = text\n setTimeout(() => { this.currentText = '' }, 1000)\n }\n }\n}\n\nexport default ScreenReaderNotice\n","import { render } from \"./screen_reader_notice.vue?vue&type=template&id=4978e64a\"\nimport script from \"./screen_reader_notice.js?vue&type=script&lang=js\"\nexport * from \"./screen_reader_notice.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"visible-for-screenreader-only\"\n :aria-live=\"ariaLive\"\n >\n {{ currentText }}\n </div>\n</template>\n\n<script src=\"./screen_reader_notice.js\"></script>\n","import Completion from '../../services/completion/completion.js'\nimport EmojiPicker from '../emoji_picker/emoji_picker.vue'\nimport Popover from 'src/components/popover/popover.vue'\nimport ScreenReaderNotice from 'src/components/screen_reader_notice/screen_reader_notice.vue'\nimport UnicodeDomainIndicator from '../unicode_domain_indicator/unicode_domain_indicator.vue'\nimport { take } from 'lodash'\nimport { findOffset } from '../../services/offset_finder/offset_finder.service.js'\nimport { ensureFinalFallback } from '../../i18n/languages.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSmileBeam\n} from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n faSmileBeam\n)\n\n/**\n * EmojiInput - augmented inputs for emoji and autocomplete support in inputs\n * without having to give up the comfort of <input/> and <textarea/> elements\n *\n * Intended usage is:\n * <EmojiInput v-model=\"something\">\n * <input v-model=\"something\"/>\n * </EmojiInput>\n *\n * Works only with <input> and <textarea>. Intended to use with only one nested\n * input. It will find first input or textarea and work with that, multiple\n * nested children not tested. You HAVE TO duplicate v-model for both\n * <emoji-input> and <input>/<textarea> otherwise it will not work.\n *\n * Be prepared for CSS troubles though because it still wraps component in a div\n * while TRYING to make it look like nothing happened, but it could break stuff.\n */\n\nconst EmojiInput = {\n emits: ['update:modelValue', 'shown'],\n props: {\n suggest: {\n /**\n * suggest: function (input: String) => Suggestion[]\n *\n * Function that takes input string which takes string (textAtCaret)\n * and returns an array of Suggestions\n *\n * Suggestion is an object containing following properties:\n * displayText: string. Main display text, what actual suggestion\n * represents (user's screen name/emoji shortcode)\n * replacement: string. Text that should replace the textAtCaret\n * detailText: string, optional. Subtitle text, providing additional info\n * if present (user's nickname)\n * imageUrl: string, optional. Image to display alongside with suggestion,\n * currently if no image is provided, replacement will be used (for\n * unicode emojis)\n *\n * TODO: make it asynchronous when adding proper server-provided user\n * suggestions\n *\n * For commonly used suggestors (emoji, users, both) use suggestor.js\n */\n required: true,\n type: Function\n },\n modelValue: {\n /**\n * Used for v-model\n */\n required: true,\n type: String\n },\n enableEmojiPicker: {\n /**\n * Enables emoji picker support, this implies that custom emoji are supported\n */\n required: false,\n type: Boolean,\n default: false\n },\n hideEmojiButton: {\n /**\n * intended to use with external picker trigger, i.e. you have a button outside\n * input that will open up the picker, see triggerShowPicker()\n */\n required: false,\n type: Boolean,\n default: false\n },\n enableStickerPicker: {\n /**\n * Enables sticker picker support, only makes sense when enableEmojiPicker=true\n */\n required: false,\n type: Boolean,\n default: false\n },\n placement: {\n /**\n * Forces the panel to take a specific position relative to the input element.\n * The 'auto' placement chooses either bottom or top depending on which has the available space (when both have available space, bottom is preferred).\n */\n required: false,\n type: String, // 'auto', 'top', 'bottom'\n default: 'auto'\n },\n newlineOnCtrlEnter: {\n required: false,\n type: Boolean,\n default: false\n }\n },\n data () {\n return {\n randomSeed: `${Math.random()}`.replace('.', '-'),\n input: undefined,\n caretEl: undefined,\n highlighted: -1,\n caret: 0,\n focused: false,\n blurTimeout: null,\n temporarilyHideSuggestions: false,\n disableClickOutside: false,\n suggestions: [],\n overlayStyle: {},\n pickerShown: false\n }\n },\n components: {\n Popover,\n EmojiPicker,\n UnicodeDomainIndicator,\n ScreenReaderNotice\n },\n computed: {\n padEmoji () {\n return this.$store.getters.mergedConfig.padEmoji\n },\n preText () {\n return this.modelValue.slice(0, this.caret)\n },\n postText () {\n return this.modelValue.slice(this.caret)\n },\n showSuggestions () {\n return this.focused &&\n this.suggestions &&\n this.suggestions.length > 0 &&\n !this.pickerShown &&\n !this.temporarilyHideSuggestions\n },\n textAtCaret () {\n return this.wordAtCaret?.word\n },\n wordAtCaret () {\n if (this.modelValue && this.caret) {\n const word = Completion.wordAtPosition(this.modelValue, this.caret - 1) || {}\n return word\n }\n },\n languages () {\n return ensureFinalFallback(this.$store.getters.mergedConfig.interfaceLanguage)\n },\n maybeLocalizedEmojiNamesAndKeywords () {\n return emoji => {\n const names = [emoji.displayText]\n const keywords = []\n\n if (emoji.displayTextI18n) {\n names.push(this.$t(emoji.displayTextI18n.key, emoji.displayTextI18n.args))\n }\n\n if (emoji.annotations) {\n this.languages.forEach(lang => {\n names.push(emoji.annotations[lang]?.name)\n\n keywords.push(...(emoji.annotations[lang]?.keywords || []))\n })\n }\n\n return {\n names: names.filter(k => k),\n keywords: keywords.filter(k => k)\n }\n }\n },\n maybeLocalizedEmojiName () {\n return emoji => {\n if (!emoji.annotations) {\n return emoji.displayText\n }\n\n if (emoji.displayTextI18n) {\n return this.$t(emoji.displayTextI18n.key, emoji.displayTextI18n.args)\n }\n\n for (const lang of this.languages) {\n if (emoji.annotations[lang]?.name) {\n return emoji.annotations[lang].name\n }\n }\n\n return emoji.displayText\n }\n },\n onInputScroll () {\n this.$refs.hiddenOverlay.scrollTo({\n top: this.input.scrollTop,\n left: this.input.scrollLeft\n })\n },\n suggestionListId () {\n return `suggestions-${this.randomSeed}`\n },\n suggestionItemId () {\n return (index) => `suggestion-item-${index}-${this.randomSeed}`\n }\n },\n mounted () {\n const { root, hiddenOverlayCaret, suggestorPopover } = this.$refs\n const input = root.querySelector('.emoji-input > input') || root.querySelector('.emoji-input > textarea')\n if (!input) return\n this.input = input\n this.caretEl = hiddenOverlayCaret\n if (suggestorPopover.setAnchorEl) {\n suggestorPopover.setAnchorEl(this.caretEl) // unit test compat\n this.$refs.picker.setAnchorEl(this.caretEl)\n } else {\n console.warn('setAnchorEl not found, are we in a unit test?')\n }\n const style = getComputedStyle(this.input)\n this.overlayStyle.padding = style.padding\n this.overlayStyle.border = style.border\n this.overlayStyle.margin = style.margin\n this.overlayStyle.lineHeight = style.lineHeight\n this.overlayStyle.fontFamily = style.fontFamily\n this.overlayStyle.fontSize = style.fontSize\n this.overlayStyle.wordWrap = style.wordWrap\n this.overlayStyle.whiteSpace = style.whiteSpace\n this.resize()\n input.addEventListener('blur', this.onBlur)\n input.addEventListener('focus', this.onFocus)\n input.addEventListener('paste', this.onPaste)\n input.addEventListener('keyup', this.onKeyUp)\n input.addEventListener('keydown', this.onKeyDown)\n input.addEventListener('click', this.onClickInput)\n input.addEventListener('transitionend', this.onTransition)\n input.addEventListener('input', this.onInput)\n input.addEventListener('scroll', this.onInputScroll)\n },\n unmounted () {\n const { input } = this\n if (input) {\n input.removeEventListener('blur', this.onBlur)\n input.removeEventListener('focus', this.onFocus)\n input.removeEventListener('paste', this.onPaste)\n input.removeEventListener('keyup', this.onKeyUp)\n input.removeEventListener('keydown', this.onKeyDown)\n input.removeEventListener('click', this.onClickInput)\n input.removeEventListener('transitionend', this.onTransition)\n input.removeEventListener('input', this.onInput)\n input.removeEventListener('scroll', this.onInputScroll)\n }\n },\n watch: {\n showSuggestions: function (newValue, oldValue) {\n this.$emit('shown', newValue)\n if (newValue) {\n this.$refs.suggestorPopover.showPopover()\n } else {\n this.$refs.suggestorPopover.hidePopover()\n }\n },\n textAtCaret: async function (newWord) {\n if (newWord === undefined) return\n const firstchar = newWord.charAt(0)\n if (newWord === firstchar) {\n this.suggestions = []\n return\n }\n const matchedSuggestions = await this.suggest(newWord, this.maybeLocalizedEmojiNamesAndKeywords)\n // Async: cancel if textAtCaret has changed during wait\n if (this.textAtCaret !== newWord || matchedSuggestions.length <= 0) {\n this.suggestions = []\n return\n }\n this.suggestions = take(matchedSuggestions, 5)\n .map(({ imageUrl, ...rest }) => ({\n ...rest,\n img: imageUrl || ''\n }))\n this.highlighted = -1\n this.$refs.screenReaderNotice.announce(\n this.$tc('tool_tip.autocomplete_available',\n this.suggestions.length,\n { number: this.suggestions.length }))\n }\n },\n methods: {\n triggerShowPicker () {\n this.$nextTick(() => {\n this.$refs.picker.showPicker()\n this.scrollIntoView()\n })\n // This temporarily disables \"click outside\" handler\n // since external trigger also means click originates\n // from outside, thus preventing picker from opening\n this.disableClickOutside = true\n setTimeout(() => {\n this.disableClickOutside = false\n }, 0)\n },\n togglePicker () {\n this.input.focus()\n if (!this.pickerShown) {\n this.scrollIntoView()\n this.$refs.picker.showPicker()\n this.$refs.picker.startEmojiLoad()\n } else {\n this.$refs.picker.hidePicker()\n }\n },\n replace (replacement) {\n const newValue = Completion.replaceWord(this.modelValue, this.wordAtCaret, replacement)\n this.$emit('update:modelValue', newValue)\n this.caret = 0\n },\n insert ({ insertion, keepOpen, surroundingSpace = true }) {\n const before = this.modelValue.substring(0, this.caret) || ''\n const after = this.modelValue.substring(this.caret) || ''\n\n /* Using a bit more smart approach to padding emojis with spaces:\n * - put a space before cursor if there isn't one already, unless we\n * are at the beginning of post or in spam mode\n * - put a space after emoji if there isn't one already unless we are\n * in spam mode\n *\n * The idea is that when you put a cursor somewhere in between sentence\n * inserting just ' :emoji: ' will add more spaces to post which might\n * break the flow/spacing, as well as the case where user ends sentence\n * with a space before adding emoji.\n *\n * Spam mode is intended for creating multi-part emojis and overall spamming\n * them, masto seem to be rendering :emoji::emoji: correctly now so why not\n */\n const isSpaceRegex = /\\s/\n const spaceBefore = (surroundingSpace && !isSpaceRegex.exec(before.slice(-1)) && before.length && this.padEmoji > 0) ? ' ' : ''\n const spaceAfter = (surroundingSpace && !isSpaceRegex.exec(after[0]) && this.padEmoji) ? ' ' : ''\n\n const newValue = [\n before,\n spaceBefore,\n insertion,\n spaceAfter,\n after\n ].join('')\n this.$emit('update:modelValue', newValue)\n const position = this.caret + (insertion + spaceAfter + spaceBefore).length\n if (!keepOpen) {\n this.input.focus()\n }\n\n this.$nextTick(function () {\n // Re-focus inputbox after clicking suggestion\n // Set selection right after the replacement instead of the very end\n this.input.setSelectionRange(position, position)\n this.caret = position\n })\n },\n replaceText (e, suggestion) {\n const len = this.suggestions.length || 0\n if (this.textAtCaret.length === 1) { return }\n if (len > 0 || suggestion) {\n const chosenSuggestion = suggestion || this.suggestions[this.highlighted]\n const replacement = chosenSuggestion.replacement\n const newValue = Completion.replaceWord(this.modelValue, this.wordAtCaret, replacement)\n this.$emit('update:modelValue', newValue)\n this.highlighted = 0\n const position = this.wordAtCaret.start + replacement.length\n\n this.$nextTick(function () {\n // Re-focus inputbox after clicking suggestion\n this.input.focus()\n // Set selection right after the replacement instead of the very end\n this.input.setSelectionRange(position, position)\n this.caret = position\n })\n e.preventDefault()\n }\n },\n cycleBackward (e) {\n const len = this.suggestions.length || 0\n\n this.highlighted -= 1\n if (this.highlighted === -1) {\n this.input.focus()\n } else if (this.highlighted < -1) {\n this.highlighted = len - 1\n }\n if (len > 0) {\n e.preventDefault()\n }\n },\n cycleForward (e) {\n const len = this.suggestions.length || 0\n\n this.highlighted += 1\n if (this.highlighted >= len) {\n this.highlighted = -1\n this.input.focus()\n }\n if (len > 0) {\n e.preventDefault()\n }\n },\n scrollIntoView () {\n const rootRef = this.$refs.picker.$el\n /* Scroller is either `window` (replies in TL), sidebar (main post form,\n * replies in notifs) or mobile post form. Note that getting and setting\n * scroll is different for `Window` and `Element`s\n */\n const scrollerRef = this.$el.closest('.sidebar-scroller') ||\n this.$el.closest('.post-form-modal-view') ||\n window\n const currentScroll = scrollerRef === window\n ? scrollerRef.scrollY\n : scrollerRef.scrollTop\n const scrollerHeight = scrollerRef === window\n ? scrollerRef.innerHeight\n : scrollerRef.offsetHeight\n\n const scrollerBottomBorder = currentScroll + scrollerHeight\n // We check where the bottom border of root element is, this uses findOffset\n // to find offset relative to scrollable container (scroller)\n const rootBottomBorder = rootRef.offsetHeight + findOffset(rootRef, scrollerRef).top\n\n const bottomDelta = Math.max(0, rootBottomBorder - scrollerBottomBorder)\n // could also check top delta but there's no case for it\n const targetScroll = currentScroll + bottomDelta\n\n if (scrollerRef === window) {\n scrollerRef.scroll(0, targetScroll)\n } else {\n scrollerRef.scrollTop = targetScroll\n }\n\n this.$nextTick(() => {\n const { offsetHeight } = this.input\n const { picker } = this.$refs\n const pickerBottom = picker.$el.getBoundingClientRect().bottom\n if (pickerBottom > window.innerHeight) {\n picker.$el.style.top = 'auto'\n picker.$el.style.bottom = offsetHeight + 'px'\n }\n })\n },\n onPickerShown () {\n this.pickerShown = true\n },\n onPickerClosed () {\n this.pickerShown = false\n },\n onBlur (e) {\n // Clicking on any suggestion removes focus from autocomplete,\n // preventing click handler ever executing.\n this.blurTimeout = setTimeout(() => {\n this.focused = false\n this.setCaret(e)\n }, 200)\n },\n onClick (e, suggestion) {\n this.replaceText(e, suggestion)\n },\n onFocus (e) {\n if (this.blurTimeout) {\n clearTimeout(this.blurTimeout)\n this.blurTimeout = null\n }\n\n this.focused = true\n this.setCaret(e)\n this.temporarilyHideSuggestions = false\n },\n onKeyUp (e) {\n const { key } = e\n this.setCaret(e)\n\n // Setting hider in keyUp to prevent suggestions from blinking\n // when moving away from suggested spot\n if (key === 'Escape') {\n this.temporarilyHideSuggestions = true\n } else {\n this.temporarilyHideSuggestions = false\n }\n },\n onPaste (e) {\n this.setCaret(e)\n },\n onKeyDown (e) {\n const { ctrlKey, shiftKey, key } = e\n if (this.newlineOnCtrlEnter && ctrlKey && key === 'Enter') {\n this.insert({ insertion: '\\n', surroundingSpace: false })\n // Ensure only one new line is added on macos\n e.stopPropagation()\n e.preventDefault()\n\n // Scroll the input element to the position of the cursor\n this.$nextTick(() => {\n this.input.blur()\n this.input.focus()\n })\n }\n // Disable suggestions hotkeys if suggestions are hidden\n if (!this.temporarilyHideSuggestions) {\n if (key === 'Tab') {\n if (shiftKey) {\n this.cycleBackward(e)\n } else {\n this.cycleForward(e)\n }\n }\n if (key === 'ArrowUp') {\n this.cycleBackward(e)\n } else if (key === 'ArrowDown') {\n this.cycleForward(e)\n }\n if (key === 'Enter') {\n if (!ctrlKey) {\n this.replaceText(e)\n }\n }\n }\n // Probably add optional keyboard controls for emoji picker?\n\n // Escape hides suggestions, if suggestions are hidden it\n // de-focuses the element (i.e. default browser behavior)\n if (key === 'Escape') {\n if (!this.temporarilyHideSuggestions) {\n this.input.focus()\n }\n }\n },\n onInput (e) {\n this.setCaret(e)\n this.$emit('update:modelValue', e.target.value)\n },\n onStickerUploaded (e) {\n this.$emit('sticker-uploaded', e)\n },\n onStickerUploadFailed (e) {\n this.$emit('sticker-upload-Failed', e)\n },\n setCaret ({ target: { selectionStart } }) {\n this.caret = selectionStart\n this.$nextTick(() => {\n this.$refs.suggestorPopover.updateStyles()\n })\n },\n resize () {\n },\n autoCompleteItemLabel (suggestion) {\n if (suggestion.user) {\n return suggestion.displayText + ' ' + suggestion.detailText\n } else {\n return this.maybeLocalizedEmojiName(suggestion)\n }\n }\n }\n}\n\nexport default EmojiInput\n","import { render } from \"./emoji_input.vue?vue&type=template&id=401ef83a\"\nimport script from \"./emoji_input.js?vue&type=script&lang=js\"\nexport * from \"./emoji_input.js?vue&type=script&lang=js\"\n\nimport \"./emoji_input.vue?vue&type=style&index=0&id=401ef83a&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","const createRuffleService = () => {\n let ruffleInstance = null\n\n const getRuffle = () => new Promise((resolve, reject) => {\n if (ruffleInstance) {\n resolve(ruffleInstance)\n return\n }\n // Ruffle needs these to be set before it's loaded\n // https://github.com/ruffle-rs/ruffle/issues/3952\n window.RufflePlayer = {}\n window.RufflePlayer.config = {\n polyfills: false,\n publicPath: '/static/ruffle'\n }\n\n // Currently it's seems like a better way of loading ruffle\n // because it needs the wasm publically accessible, but it needs path to it\n // and filename of wasm seems to be pseudo-randomly generated (is it a hash?)\n const script = document.createElement('script')\n // see webpack config, using CopyPlugin to copy it from node_modules\n // provided via ruffle-mirror\n script.src = '/static/ruffle/ruffle.js'\n script.type = 'text/javascript'\n script.onerror = (e) => { reject(e) }\n script.onabort = (e) => { reject(e) }\n script.oncancel = (e) => { reject(e) }\n script.onload = () => {\n ruffleInstance = window.RufflePlayer\n resolve(ruffleInstance)\n }\n document.body.appendChild(script)\n })\n\n return { getRuffle }\n}\n\nconst RuffleService = createRuffleService()\n\nexport default RuffleService\n","<template>\n <div class=\"Flash\">\n <div\n v-if=\"player === true || player === 'hidden'\"\n ref=\"container\"\n class=\"player\"\n :class=\"{ hidden: player === 'hidden' }\"\n />\n <button\n v-if=\"player !== true\"\n class=\"button-unstyled placeholder\"\n @click=\"openPlayer\"\n >\n <span\n v-if=\"player === 'hidden'\"\n class=\"label\"\n >\n {{ $t('general.loading') }}\n </span>\n <span\n v-if=\"player === 'error'\"\n class=\"label\"\n >\n {{ $t('general.flash_fail') }}\n </span>\n <span\n v-else\n class=\"label\"\n >\n <p>\n {{ $t('general.flash_content') }}\n </p>\n <p>\n <FAIcon icon=\"exclamation-triangle\" />\n {{ $t('general.flash_security') }}\n </p>\n </span>\n </button>\n </div>\n</template>\n\n<script src=\"./flash.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.Flash {\n display: inline-block;\n width: 100%;\n height: 100%;\n position: relative;\n\n .player {\n height: 100%;\n width: 100%;\n }\n\n .placeholder {\n height: 100%;\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--bg);\n color: var(--link);\n }\n\n .hider {\n top: 0;\n }\n\n .label {\n text-align: center;\n flex: 1 1 0;\n line-height: 1.2;\n white-space: normal;\n word-wrap: normal;\n }\n\n .hidden {\n display: none;\n visibility: \"hidden\";\n }\n}\n</style>\n","import RuffleService from '../../services/ruffle_service/ruffle_service.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faStop,\n faExclamationTriangle\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faStop,\n faExclamationTriangle\n)\n\nconst Flash = {\n props: ['src'],\n data () {\n return {\n player: false, // can be true, \"hidden\", false. hidden = element exists\n loaded: false,\n ruffleInstance: null\n }\n },\n methods: {\n openPlayer () {\n if (this.player) return // prevent double-loading, or re-loading on failure\n this.player = 'hidden'\n RuffleService.getRuffle().then((ruffle) => {\n const player = ruffle.newest().createPlayer()\n player.config = {\n letterbox: 'on'\n }\n const container = this.$refs.container\n container.appendChild(player)\n player.style.width = '100%'\n player.style.height = '100%'\n player.load(this.src).then(() => {\n this.player = true\n }).catch((e) => {\n console.error('Error loading ruffle', e)\n this.player = 'error'\n })\n this.ruffleInstance = player\n this.$emit('playerOpened')\n })\n },\n closePlayer () {\n this.ruffleInstance && this.ruffleInstance.remove()\n this.player = false\n this.$emit('playerClosed')\n }\n }\n}\n\nexport default Flash\n","import { render } from \"./flash.vue?vue&type=template&id=651ce37d\"\nimport script from \"./flash.js?vue&type=script&lang=js\"\nexport * from \"./flash.js?vue&type=script&lang=js\"\n\nimport \"./flash.vue?vue&type=style&index=0&id=651ce37d&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","const fetchRelationship = (attempt, userId, store) => new Promise((resolve, reject) => {\n setTimeout(() => {\n store.state.api.backendInteractor.fetchUserRelationship({ id: userId })\n .then((relationship) => {\n store.commit('updateUserRelationship', [relationship])\n return relationship\n })\n .then((relationship) => resolve([relationship.following, relationship.requested, relationship.locked, attempt]))\n .catch((e) => reject(e))\n }, 500)\n}).then(([following, sent, locked, attempt]) => {\n if (!following && !(locked && sent) && attempt <= 3) {\n // If we BE reports that we still not following that user - retry,\n // increment attempts by one\n fetchRelationship(++attempt, userId, store)\n }\n})\n\nexport const requestFollow = (userId, store) => new Promise((resolve, reject) => {\n store.state.api.backendInteractor.followUser({ id: userId })\n .then((updated) => {\n store.commit('updateUserRelationship', [updated])\n\n if (updated.following || (updated.locked && updated.requested)) {\n // If we get result immediately or the account is locked, just stop.\n resolve()\n return\n }\n\n // But usually we don't get result immediately, so we ask server\n // for updated user profile to confirm if we are following them\n // Sometimes it takes several tries. Sometimes we end up not following\n // user anyway, probably because they locked themselves and we\n // don't know that yet.\n // Recursive Promise, it will call itself up to 3 times.\n\n return fetchRelationship(1, updated, store)\n .then(() => {\n resolve()\n })\n })\n})\n\nexport const requestUnfollow = (userId, store) => new Promise((resolve, reject) => {\n store.state.api.backendInteractor.unfollowUser({ id: userId })\n .then((updated) => {\n store.commit('updateUserRelationship', [updated])\n resolve({\n updated\n })\n })\n})\n","import ConfirmModal from '../confirm_modal/confirm_modal.vue'\nimport { requestFollow, requestUnfollow } from '../../services/follow_manipulate/follow_manipulate'\nexport default {\n props: ['relationship', 'user', 'labelFollowing', 'buttonClass'],\n components: {\n ConfirmModal\n },\n data () {\n return {\n inProgress: false,\n showingConfirmUnfollow: false\n }\n },\n computed: {\n shouldConfirmUnfollow () {\n return this.$store.getters.mergedConfig.modalOnUnfollow\n },\n isPressed () {\n return this.inProgress || this.relationship.following\n },\n title () {\n if (this.inProgress || this.relationship.following) {\n return this.$t('user_card.follow_unfollow')\n } else if (this.relationship.requested) {\n return this.$t('user_card.follow_cancel')\n } else {\n return this.$t('user_card.follow')\n }\n },\n label () {\n if (this.inProgress) {\n return this.$t('user_card.follow_progress')\n } else if (this.relationship.following) {\n return this.labelFollowing || this.$t('user_card.following')\n } else if (this.relationship.requested) {\n return this.$t('user_card.follow_sent')\n } else {\n return this.$t('user_card.follow')\n }\n },\n disabled () {\n return this.inProgress || this.user.deactivated\n }\n },\n methods: {\n showConfirmUnfollow () {\n this.showingConfirmUnfollow = true\n },\n hideConfirmUnfollow () {\n this.showingConfirmUnfollow = false\n },\n onClick () {\n this.relationship.following || this.relationship.requested ? this.unfollow() : this.follow()\n },\n follow () {\n this.inProgress = true\n requestFollow(this.relationship.id, this.$store).then(() => {\n this.inProgress = false\n })\n },\n unfollow () {\n if (this.shouldConfirmUnfollow) {\n this.showConfirmUnfollow()\n } else {\n this.doUnfollow()\n }\n },\n doUnfollow () {\n const store = this.$store\n this.inProgress = true\n requestUnfollow(this.relationship.id, store).then(() => {\n this.inProgress = false\n store.commit('removeStatus', { timeline: 'friends', userId: this.relationship.id })\n })\n\n this.hideConfirmUnfollow()\n }\n }\n}\n","import { render } from \"./follow_button.vue?vue&type=template&id=6a0717e7\"\nimport script from \"./follow_button.js?vue&type=script&lang=js\"\nexport * from \"./follow_button.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <button\n class=\"btn button-default follow-button\"\n :class=\"{ toggled: isPressed }\"\n :disabled=\"disabled\"\n :title=\"title\"\n @click=\"onClick\"\n >\n {{ label }}\n <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingConfirmUnfollow\"\n :title=\"$t('user_card.unfollow_confirm_title')\"\n :confirm-text=\"$t('user_card.unfollow_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.unfollow_confirm_cancel_button')\"\n @accepted=\"doUnfollow\"\n @cancelled=\"hideConfirmUnfollow\"\n >\n <i18n-t\n keypath=\"user_card.unfollow_confirm\"\n tag=\"span\"\n >\n <template #user>\n <span\n v-text=\"user.screen_name_ui\"\n />\n </template>\n </i18n-t>\n </confirm-modal>\n </teleport>\n </button>\n</template>\n\n<script src=\"./follow_button.js\"></script>\n","<template>\n <div\n ref=\"galleryContainer\"\n class=\"Gallery\"\n :class=\"{ '-long': tooManyAttachments && hidingLong }\"\n >\n <div class=\"gallery-rows\">\n <div\n v-for=\"(row, rowIndex) in rows\"\n :key=\"rowIndex\"\n class=\"gallery-row\"\n :style=\"rowStyle(row)\"\n :class=\"{ '-audio': row.audio, '-minimal': row.minimal, '-grid': grid }\"\n >\n <div\n class=\"gallery-row-inner\"\n :class=\"{ '-grid': grid }\"\n >\n <Attachment\n v-for=\"(attachment, attachmentIndex) in row.items\"\n :key=\"attachment.id\"\n class=\"gallery-item\"\n :compact=\"compact\"\n :nsfw=\"nsfw\"\n :attachment=\"attachment\"\n :size=\"size\"\n :editable=\"editable\"\n :remove=\"removeAttachment\"\n :shift-up=\"!(attachmentIndex === 0 && rowIndex === 0) && shiftUpAttachment\"\n :shift-dn=\"!(attachmentIndex === row.items.length - 1 && rowIndex === rows.length - 1) && shiftDnAttachment\"\n :edit=\"editAttachment\"\n :description=\"descriptions && descriptions[attachment.id]\"\n :hide-description=\"size === 'small' || tooManyAttachments && hidingLong\"\n :style=\"itemStyle(attachment.id, row.items)\"\n @setMedia=\"onMedia\"\n @naturalSizeLoad=\"onNaturalSizeLoad\"\n />\n </div>\n </div>\n </div>\n <div\n v-if=\"tooManyAttachments\"\n class=\"many-attachments\"\n >\n <div class=\"many-attachments-text\">\n {{ $t(\"status.many_attachments\", { number: attachments.length }) }}\n </div>\n <div class=\"many-attachments-buttons\">\n <span\n v-if=\"!hidingLong\"\n class=\"many-attachments-button\"\n >\n <button\n class=\"button-unstyled -link\"\n @click=\"toggleHidingLong(true)\"\n >\n {{ $t(\"status.collapse_attachments\") }}\n </button>\n </span>\n <span\n v-if=\"hidingLong\"\n class=\"many-attachments-button\"\n >\n <button\n class=\"button-unstyled -link\"\n @click=\"toggleHidingLong(false)\"\n >\n {{ $t(\"status.show_all_attachments\") }}\n </button>\n </span>\n <span\n v-if=\"hidingLong\"\n class=\"many-attachments-button\"\n >\n <button\n class=\"button-unstyled -link\"\n @click=\"openGallery\"\n >\n {{ $t(\"status.open_gallery\") }}\n </button>\n </span>\n </div>\n </div>\n </div>\n</template>\n\n<script src='./gallery.js'></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.Gallery {\n .gallery-rows {\n display: flex;\n flex-direction: column;\n }\n\n .gallery-row {\n position: relative;\n height: 0;\n width: 100%;\n flex-grow: 1;\n\n .gallery-row-inner {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n flex-flow: row wrap;\n align-content: stretch;\n\n .gallery-item {\n margin: 0 0.5em 0 0;\n flex-grow: 1;\n height: 100%;\n box-sizing: border-box;\n // to make failed images a bit more noticeable on chromium\n min-width: 2em;\n\n &:last-child {\n margin: 0;\n }\n }\n\n &.-grid {\n width: 100%;\n height: auto;\n position: relative;\n display: grid;\n grid-gap: 0.5em;\n grid-template-columns: repeat(auto-fill, minmax(15em, 1fr));\n\n .gallery-item {\n margin: 0;\n height: 200px;\n }\n }\n }\n\n &.-grid,\n &.-minimal {\n height: auto;\n\n .gallery-row-inner {\n position: relative;\n }\n }\n\n &:not(:first-child) {\n margin-top: 0.5em;\n }\n }\n\n &.-long {\n .gallery-rows {\n max-height: 25em;\n overflow: hidden;\n mask:\n linear-gradient(to top, white, transparent) bottom/100% 70px no-repeat,\n linear-gradient(to top, white, white);\n\n /* Autoprefixed seem to ignore this one, and also syntax is different */\n mask-composite: xor;\n mask-composite: exclude;\n }\n }\n\n .many-attachments-text {\n text-align: center;\n line-height: 2;\n }\n\n .many-attachments-buttons {\n display: flex;\n }\n\n .many-attachments-button {\n display: flex;\n flex: 1;\n justify-content: center;\n line-height: 2;\n\n button {\n padding: 0 2em;\n }\n }\n}\n</style>\n","import Attachment from '../attachment/attachment.vue'\nimport { sumBy, set } from 'lodash'\n\nconst Gallery = {\n props: [\n 'attachments',\n 'compact',\n 'limitRows',\n 'descriptions',\n 'limit',\n 'nsfw',\n 'setMedia',\n 'size',\n 'editable',\n 'removeAttachment',\n 'shiftUpAttachment',\n 'shiftDnAttachment',\n 'editAttachment',\n 'grid'\n ],\n data () {\n return {\n sizes: {},\n hidingLong: true\n }\n },\n components: { Attachment },\n computed: {\n rows () {\n if (!this.attachments) {\n return []\n }\n const attachments = this.limit > 0\n ? this.attachments.slice(0, this.limit)\n : this.attachments\n if (this.size === 'hide') {\n return attachments.map(item => ({ minimal: true, items: [item] }))\n }\n const rows = this.grid\n ? [{ grid: true, items: attachments }]\n : attachments.reduce((acc, attachment, i) => {\n if (attachment.mimetype.includes('audio')) {\n return [...acc, { audio: true, items: [attachment] }, { items: [] }]\n }\n if (!(\n attachment.mimetype.includes('image') ||\n attachment.mimetype.includes('video') ||\n attachment.mimetype.includes('flash')\n )) {\n return [...acc, { minimal: true, items: [attachment] }, { items: [] }]\n }\n const maxPerRow = 3\n const attachmentsRemaining = this.attachments.length - i + 1\n const currentRow = acc[acc.length - 1].items\n currentRow.push(attachment)\n if (currentRow.length >= maxPerRow && attachmentsRemaining > maxPerRow) {\n return [...acc, { items: [] }]\n } else {\n return acc\n }\n }, [{ items: [] }]).filter(_ => _.items.length > 0)\n return rows\n },\n attachmentsDimensionalScore () {\n return this.rows.reduce((acc, row) => {\n let size = 0\n if (row.minimal) {\n size += 1 / 8\n } else if (row.audio) {\n size += 1 / 4\n } else {\n size += 1 / (row.items.length + 0.6)\n }\n return acc + size\n }, 0)\n },\n tooManyAttachments () {\n if (this.editable || this.size === 'small') {\n return false\n } else if (this.size === 'hide') {\n return this.attachments.length > 8\n } else {\n return this.attachmentsDimensionalScore > 1\n }\n }\n },\n methods: {\n onNaturalSizeLoad ({ id, width, height }) {\n set(this.sizes, id, { width, height })\n },\n rowStyle (row) {\n if (row.audio) {\n return { 'padding-bottom': '25%' } // fixed reduced height for audio\n } else if (!row.minimal && !row.grid) {\n return { 'padding-bottom': `${(100 / (row.items.length + 0.6))}%` }\n }\n },\n itemStyle (id, row) {\n const total = sumBy(row, item => this.getAspectRatio(item.id))\n return { flex: `${this.getAspectRatio(id) / total} 1 0%` }\n },\n getAspectRatio (id) {\n const size = this.sizes[id]\n return size ? size.width / size.height : 1\n },\n toggleHidingLong (event) {\n this.hidingLong = event\n },\n openGallery () {\n this.$store.dispatch('setMedia', this.attachments)\n this.$store.dispatch('setCurrentMedia', this.attachments[0])\n },\n onMedia () {\n this.$store.dispatch('setMedia', this.attachments)\n }\n }\n}\n\nexport default Gallery\n","import { render } from \"./gallery.vue?vue&type=template&id=3f62ea7c\"\nimport script from \"./gallery.js?vue&type=script&lang=js\"\nexport * from \"./gallery.js?vue&type=script&lang=js\"\n\nimport \"./gallery.vue?vue&type=style&index=0&id=3f62ea7c&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"interface-language-switcher\">\n <label>\n {{ promptText }}\n </label>\n <ul class=\"setting-list\">\n <li\n v-for=\"index of controlledLanguage.keys()\"\n :key=\"index\"\n >\n <label>\n {{ index === 0 ? $t('settings.primary_language') : $tc('settings.fallback_language', index, { index }) }}\n <Select\n class=\"language-select\"\n :model-value=\"controlledLanguage[index]\"\n @update:modelValue=\"val => setLanguageAt(index, val)\"\n >\n <option\n v-for=\"lang in languages\"\n :key=\"lang.code\"\n :value=\"lang.code\"\n >\n {{ lang.name }}\n </option>\n </Select>\n </label>\n <button\n v-if=\"controlledLanguage.length > 1 && index !== 0\"\n class=\"button-default btn\"\n @click=\"() => removeLanguageAt(index)\"\n >\n {{ $t('settings.remove_language') }}\n </button>\n </li>\n <li>\n <button\n class=\"button-default btn\"\n @click=\"addLanguage\"\n >{{ $t('settings.add_language') }}</button>\n </li>\n </ul>\n </div>\n</template>\n\n<script>\nimport localeService from '../../services/locale/locale.service.js'\nimport Select from '../select/select.vue'\n\nexport default {\n components: {\n // eslint-disable-next-line vue/no-reserved-component-names\n Select\n },\n props: {\n promptText: {\n type: String,\n required: true\n },\n language: {\n type: [Array, String],\n required: true\n },\n setLanguage: {\n type: Function,\n required: true\n }\n },\n computed: {\n languages () {\n return localeService.languages\n },\n\n controlledLanguage: {\n get: function () {\n return Array.isArray(this.language) ? this.language : [this.language]\n },\n set: function (val) {\n this.setLanguage(val)\n }\n }\n },\n\n methods: {\n getLanguageName (code) {\n return localeService.getLanguageName(code)\n },\n addLanguage () {\n this.controlledLanguage = [...this.controlledLanguage, '']\n },\n setLanguageAt (index, val) {\n const lang = [...this.controlledLanguage]\n lang[index] = val\n this.controlledLanguage = lang\n },\n removeLanguageAt (index) {\n const lang = [...this.controlledLanguage]\n lang.splice(index, 1)\n this.controlledLanguage = lang\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.interface-language-switcher {\n .language-select {\n margin-right: 1em;\n }\n}\n</style>\n","import { render } from \"./interface_language_switcher.vue?vue&type=template&id=8768357e\"\nimport script from \"./interface_language_switcher.vue?vue&type=script&lang=js\"\nexport * from \"./interface_language_switcher.vue?vue&type=script&lang=js\"\n\nimport \"./interface_language_switcher.vue?vue&type=style&index=0&id=8768357e&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div>\n <a\n class=\"link-preview-card\"\n :href=\"card.url\"\n target=\"_blank\"\n rel=\"noopener\"\n >\n <div\n v-if=\"useImage && imageLoaded\"\n class=\"card-image\"\n >\n <img :src=\"card.image\">\n </div>\n <div class=\"card-content\">\n <span class=\"card-host faint\">\n <span\n v-if=\"censored\"\n class=\"nsfw-alert alert warning\"\n >{{ $t('status.nsfw') }}</span>\n {{ card.provider_name }}\n </span>\n <h4 class=\"card-title\">{{ card.title }}</h4>\n <p\n v-if=\"useDescription\"\n class=\"card-description\"\n >{{ card.description }}</p>\n </div>\n </a>\n </div>\n</template>\n\n<script src=\"./link-preview.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.link-preview-card {\n display: flex;\n flex-direction: row;\n cursor: pointer;\n overflow: hidden;\n margin-top: 0.5em;\n\n .card-image {\n flex-shrink: 0;\n width: 120px;\n max-width: 25%;\n\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: $fallback--attachmentRadius;\n border-radius: var(--attachmentRadius, $fallback--attachmentRadius);\n }\n }\n\n .card-content {\n max-height: 100%;\n margin: 0.5em;\n display: flex;\n flex-direction: column;\n }\n\n .card-host {\n font-size: 0.85em;\n }\n\n .card-description {\n margin: 0.5em 0 0;\n overflow: hidden;\n text-overflow: ellipsis;\n word-break: break-word;\n line-height: 1.2em;\n // cap description at 3 lines, the 1px is to clean up some stray pixels\n // TODO: fancier fade-out at the bottom to show off that it's too long?\n max-height: calc(1.2em * 3 - 1px);\n }\n\n .nsfw-alert {\n margin: 2em 0;\n }\n\n color: $fallback--text;\n color: var(--text, $fallback--text);\n border-style: solid;\n border-width: 1px;\n border-radius: $fallback--attachmentRadius;\n border-radius: var(--attachmentRadius, $fallback--attachmentRadius);\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n}\n</style>\n","import { mapGetters } from 'vuex'\n\nconst LinkPreview = {\n name: 'LinkPreview',\n props: [\n 'card',\n 'size',\n 'nsfw'\n ],\n data () {\n return {\n imageLoaded: false\n }\n },\n computed: {\n useImage () {\n // Currently BE shoudn't give cards if tagged NSFW, this is a bit paranoid\n // as it makes sure to hide the image if somehow NSFW tagged preview can\n // exist.\n return this.card.image && !this.censored && this.size !== 'hide'\n },\n censored () {\n return this.nsfw && this.hideNsfwConfig\n },\n useDescription () {\n return this.card.description && /\\S/.test(this.card.description)\n },\n hideNsfwConfig () {\n return this.mergedConfig.hideNsfw\n },\n ...mapGetters([\n 'mergedConfig'\n ])\n },\n created () {\n if (this.useImage) {\n const newImg = new Image()\n newImg.onload = () => {\n this.imageLoaded = true\n }\n newImg.src = this.card.image\n }\n }\n}\n\nexport default LinkPreview\n","import { render } from \"./link-preview.vue?vue&type=template&id=5bb8ccfc\"\nimport script from \"./link-preview.js?vue&type=script&lang=js\"\nexport * from \"./link-preview.js?vue&type=script&lang=js\"\n\nimport \"./link-preview.vue?vue&type=style&index=0&id=5bb8ccfc&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"list\">\n <div\n v-for=\"item in items\"\n :key=\"getKey(item)\"\n class=\"list-item\"\n >\n <slot\n name=\"item\"\n :item=\"item\"\n />\n </div>\n <div\n v-if=\"items.length === 0 && !!$slots.empty\"\n class=\"list-empty-content faint\"\n >\n <slot name=\"empty\" />\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n props: {\n items: {\n type: Array,\n default: () => []\n },\n getKey: {\n type: Function,\n default: item => item.id\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.list {\n &-item:not(:last-child) {\n border-bottom: 1px solid;\n border-bottom-color: $fallback--border;\n border-bottom-color: var(--border, $fallback--border);\n }\n\n &-empty-content {\n text-align: center;\n padding: 10px;\n }\n}\n</style>\n","import { render } from \"./list.vue?vue&type=template&id=2a928b1c\"\nimport script from \"./list.vue?vue&type=script&lang=js\"\nexport * from \"./list.vue?vue&type=script&lang=js\"\n\nimport \"./list.vue?vue&type=style&index=0&id=2a928b1c&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <span\n class=\"MentionLink\"\n >\n <!-- eslint-disable vue/no-v-html -->\n <a\n v-if=\"!user\"\n :href=\"url\"\n class=\"original\"\n target=\"_blank\"\n v-html=\"content\"\n /><!-- eslint-enable vue/no-v-html -->\n <UserPopover\n v-else\n :user-id=\"user.id\"\n :disabled=\"!shouldShowTooltip\"\n >\n <span\n v-if=\"user\"\n class=\"new\"\n :style=\"style\"\n :class=\"classnames\"\n >\n <a\n class=\"short button-unstyled\"\n :class=\"{ '-with-tooltip': shouldShowTooltip }\"\n :href=\"url\"\n @click.prevent=\"onClick\"\n >\n <!-- eslint-disable vue/no-v-html -->\n <UserAvatar\n v-if=\"shouldShowAvatar\"\n class=\"mention-avatar\"\n :user=\"user\"\n /><span\n class=\"shortName\"\n ><FAIcon\n v-if=\"useAtIcon\"\n size=\"sm\"\n icon=\"at\"\n class=\"at\"\n />{{ !useAtIcon ? '@' : '' }}<span\n class=\"userName\"\n v-html=\"userName\"\n /><span\n v-if=\"shouldShowFullUserName\"\n class=\"serverName\"\n :class=\"{ '-faded': shouldFadeDomain }\"\n v-html=\"'@' + serverName\"\n /><UnicodeDomainIndicator\n v-if=\"shouldShowFullUserName\"\n :user=\"user\"\n />\n </span>\n <span\n v-if=\"isYou && shouldShowYous\"\n :class=\"{ '-you': shouldBoldenYou }\"\n > {{ ' ' + $t('status.you') }}</span>\n <!-- eslint-enable vue/no-v-html -->\n </a><span\n ref=\"full\"\n class=\"full\"\n >\n <!-- eslint-disable vue/no-v-html -->\n @<span v-html=\"userName\" /><span v-html=\"'@' + serverName\" />\n <!-- eslint-enable vue/no-v-html -->\n </span>\n </span>\n </UserPopover>\n </span>\n</template>\n\n<script src=\"./mention_link.js\" />\n\n<style lang=\"scss\" src=\"./mention_link.scss\" />\n","import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { mapGetters, mapState } from 'vuex'\nimport { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport UnicodeDomainIndicator from '../unicode_domain_indicator/unicode_domain_indicator.vue'\nimport { defineAsyncComponent } from 'vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faAt\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faAt\n)\n\nconst MentionLink = {\n name: 'MentionLink',\n components: {\n UserAvatar,\n UnicodeDomainIndicator,\n UserPopover: defineAsyncComponent(() => import('../user_popover/user_popover.vue'))\n },\n props: {\n url: {\n required: true,\n type: String\n },\n content: {\n required: true,\n type: String\n },\n userId: {\n required: false,\n type: String\n },\n userScreenName: {\n required: false,\n type: String\n }\n },\n data () {\n return {\n hasSelection: false\n }\n },\n methods: {\n onClick () {\n if (this.shouldShowTooltip) return\n const link = generateProfileLink(\n this.userId || this.user.id,\n this.userScreenName || this.user.screen_name\n )\n this.$router.push(link)\n },\n handleSelection () {\n this.hasSelection = document.getSelection().containsNode(this.$refs.full, true)\n }\n },\n mounted () {\n document.addEventListener('selectionchange', this.handleSelection)\n },\n unmounted () {\n document.removeEventListener('selectionchange', this.handleSelection)\n },\n computed: {\n user () {\n return this.url && this.$store && this.$store.getters.findUserByUrl(this.url)\n },\n isYou () {\n // FIXME why user !== currentUser???\n return this.user && this.user.id === this.currentUser.id\n },\n userName () {\n return this.user && this.userNameFullUi.split('@')[0]\n },\n serverName () {\n // XXX assumed that domain does not contain @\n return this.user && (this.userNameFullUi.split('@')[1] || this.$store.getters.instanceDomain)\n },\n userNameFull () {\n return this.user && this.user.screen_name\n },\n userNameFullUi () {\n return this.user && this.user.screen_name_ui\n },\n highlight () {\n return this.user && this.mergedConfig.highlight[this.user.screen_name]\n },\n highlightType () {\n return this.highlight && ('-' + this.highlight.type)\n },\n highlightClass () {\n if (this.highlight) return highlightClass(this.user)\n },\n style () {\n if (this.highlight) {\n const {\n backgroundColor,\n backgroundPosition,\n backgroundImage,\n ...rest\n } = highlightStyle(this.highlight)\n return rest\n }\n },\n classnames () {\n return [\n {\n '-you': this.isYou && this.shouldBoldenYou,\n '-highlighted': this.highlight,\n '-has-selection': this.hasSelection\n },\n this.highlightType\n ]\n },\n useAtIcon () {\n return this.mergedConfig.useAtIcon\n },\n isRemote () {\n return this.userName !== this.userNameFull\n },\n shouldShowFullUserName () {\n const conf = this.mergedConfig.mentionLinkDisplay\n if (conf === 'short') {\n return false\n } else if (conf === 'full') {\n return true\n } else { // full_for_remote\n return this.isRemote\n }\n },\n shouldShowTooltip () {\n return this.mergedConfig.mentionLinkShowTooltip\n },\n shouldShowAvatar () {\n return this.mergedConfig.mentionLinkShowAvatar\n },\n shouldShowYous () {\n return this.mergedConfig.mentionLinkShowYous\n },\n shouldBoldenYou () {\n return this.mergedConfig.mentionLinkBoldenYou\n },\n shouldFadeDomain () {\n return this.mergedConfig.mentionLinkFadeDomain\n },\n ...mapGetters(['mergedConfig']),\n ...mapState({\n currentUser: state => state.users.currentUser\n })\n }\n}\n\nexport default MentionLink\n","import { render } from \"./mention_link.vue?vue&type=template&id=11ab9a6c\"\nimport script from \"./mention_link.js?vue&type=script&lang=js\"\nexport * from \"./mention_link.js?vue&type=script&lang=js\"\n\nimport \"./mention_link.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <span class=\"MentionsLine\">\n <MentionLink\n v-for=\"mention in mentionsComputed\"\n :key=\"mention.index\"\n class=\"mention-link\"\n :content=\"mention.content\"\n :url=\"mention.url\"\n /><span\n v-if=\"manyMentions\"\n class=\"extraMentions\"\n >\n <span\n v-if=\"expanded\"\n class=\"fullExtraMentions\"\n >{{ ' ' }}<MentionLink\n v-for=\"mention in extraMentions\"\n :key=\"mention.index\"\n class=\"mention-link\"\n :content=\"mention.content\"\n :url=\"mention.url\"\n />\n </span><button\n v-if=\"!expanded\"\n class=\"button-unstyled showMoreLess\"\n @click=\"toggleShowMore\"\n >\n {{ $t('status.plus_more', { number: extraMentions.length }) }}\n </button><button\n v-if=\"expanded\"\n class=\"button-unstyled showMoreLess\"\n @click=\"toggleShowMore\"\n >\n {{ $t('general.show_less') }}\n </button>\n </span>\n </span>\n</template>\n<script src=\"./mentions_line.js\"></script>\n<style lang=\"scss\" src=\"./mentions_line.scss\" />\n","import MentionLink from 'src/components/mention_link/mention_link.vue'\nimport { mapGetters } from 'vuex'\n\nexport const MENTIONS_LIMIT = 5\n\nconst MentionsLine = {\n name: 'MentionsLine',\n props: {\n mentions: {\n required: true,\n type: Array\n }\n },\n data: () => ({ expanded: false }),\n components: {\n MentionLink\n },\n computed: {\n mentionsComputed () {\n return this.mentions.slice(0, MENTIONS_LIMIT)\n },\n extraMentions () {\n return this.mentions.slice(MENTIONS_LIMIT)\n },\n manyMentions () {\n return this.extraMentions.length > 0\n },\n ...mapGetters(['mergedConfig'])\n },\n methods: {\n toggleShowMore () {\n this.expanded = !this.expanded\n }\n }\n}\n\nexport default MentionsLine\n","import { render } from \"./mentions_line.vue?vue&type=template&id=0e41a1da\"\nimport script from \"./mentions_line.js?vue&type=script&lang=js\"\nexport * from \"./mentions_line.js?vue&type=script&lang=js\"\n\nimport \"./mentions_line.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n v-show=\"isOpen\"\n v-body-scroll-lock=\"isOpen && !noBackground\"\n class=\"modal-view\"\n :class=\"classes\"\n @click.self=\"$emit('backdropClicked')\"\n >\n <slot />\n </div>\n</template>\n\n<script>\nexport default {\n provide: {\n popoversZLayer: 'modals'\n },\n props: {\n isOpen: {\n type: Boolean,\n default: true\n },\n noBackground: {\n type: Boolean,\n default: false\n }\n },\n computed: {\n classes () {\n return {\n 'modal-background': !this.noBackground,\n open: this.isOpen\n }\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n.modal-view {\n z-index: var(--ZI_modals);\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: auto;\n pointer-events: none;\n animation-duration: 0.2s;\n animation-name: modal-background-fadein;\n opacity: 0;\n\n > * {\n pointer-events: initial;\n }\n\n &.modal-background {\n pointer-events: initial;\n background-color: rgb(0 0 0 / 50%);\n }\n\n &.open {\n opacity: 1;\n }\n}\n\n@keyframes modal-background-fadein {\n from {\n background-color: rgb(0 0 0 / 0%);\n }\n\n to {\n background-color: rgb(0 0 0 / 50%);\n }\n}\n</style>\n","import { render } from \"./modal.vue?vue&type=template&id=e92832fc\"\nimport script from \"./modal.vue?vue&type=script&lang=js\"\nexport * from \"./modal.vue?vue&type=script&lang=js\"\n\nimport \"./modal.vue?vue&type=style&index=0&id=e92832fc&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <teleport\n :disabled=\"minimalMode || disableTeleport\"\n :to=\"teleportTarget\"\n >\n <component\n :is=\"noHeading ? 'div' : 'aside'\"\n ref=\"root\"\n :class=\"{ minimal: minimalMode }\"\n class=\"Notifications\"\n >\n <div :class=\"mainClass\">\n <div\n v-if=\"!noHeading\"\n class=\"notifications-heading panel-heading -sticky\"\n >\n <div class=\"title\">\n {{ $t('notifications.notifications') }}\n <span\n v-if=\"unseenCount\"\n class=\"badge badge-notification unseen-count\"\n >{{ unseenCount }}</span>\n </div>\n <div\n v-if=\"showScrollTop\"\n class=\"rightside-button\"\n >\n <button\n class=\"button-unstyled scroll-to-top-button\"\n type=\"button\"\n :title=\"$t('general.scroll_to_top')\"\n @click=\"scrollToTop\"\n >\n <FALayers class=\"fa-scale-110 fa-old-padding-layer\">\n <FAIcon icon=\"arrow-up\" />\n <FAIcon\n icon=\"minus\"\n transform=\"up-7\"\n />\n </FALayers>\n </button>\n </div>\n <button\n v-if=\"unseenCount\"\n class=\"button-default read-button\"\n type=\"button\"\n @click.prevent=\"markAsSeen\"\n >\n {{ $t('notifications.read') }}\n </button>\n <NotificationFilters class=\"rightside-button\" />\n </div>\n <div\n class=\"panel-body\"\n role=\"feed\"\n >\n <div\n v-for=\"notification in notificationsToDisplay\"\n :key=\"notification.id\"\n role=\"listitem\"\n class=\"notification\"\n :class=\"{unseen: !minimalMode && !notification.seen}\"\n >\n <div class=\"notification-overlay\" />\n <notification :notification=\"notification\" />\n </div>\n </div>\n <div class=\"panel-footer\">\n <div\n v-if=\"bottomedOut\"\n class=\"new-status-notification text-center faint\"\n >\n {{ $t('notifications.no_more_notifications') }}\n </div>\n <button\n v-else-if=\"!loading\"\n class=\"button-unstyled -link -fullwidth\"\n @click.prevent=\"fetchOlderNotifications()\"\n >\n <div class=\"new-status-notification text-center\">\n {{ minimalMode ? $t('interactions.load_older') : $t('notifications.load_older') }}\n </div>\n </button>\n <div\n v-else\n class=\"new-status-notification text-center\"\n >\n <FAIcon\n icon=\"circle-notch\"\n spin\n size=\"lg\"\n />\n </div>\n </div>\n </div>\n </component>\n </teleport>\n</template>\n\n<script src=\"./notifications.js\"></script>\n<style lang=\"scss\" src=\"./notifications.scss\"></style>\n","<template>\n <article\n v-if=\"notification.type === 'mention'\"\n >\n <Status\n class=\"Notification\"\n :compact=\"true\"\n :statusoid=\"notification.status\"\n />\n </article>\n <article v-else>\n <div\n v-if=\"needMute && !unmuted\"\n class=\"Notification container -muted\"\n >\n <small>\n <user-link\n :user=\"notification.from_profile\"\n :at=\"false\"\n />\n </small>\n <button\n class=\"button-unstyled unmute\"\n @click.prevent=\"toggleMute\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"eye-slash\"\n />\n </button>\n </div>\n <div\n v-else\n class=\"Notification non-mention\"\n :class=\"[userClass, { highlighted: userStyle }, '-type--' + notification.type]\"\n :style=\"[ userStyle ]\"\n >\n <a\n class=\"avatar-container\"\n :href=\"$router.resolve(userProfileLink).href\"\n @click.prevent\n >\n <UserPopover\n :user-id=\"notification.from_profile.id\"\n :overlay-centers=\"true\"\n >\n <UserAvatar\n class=\"post-avatar\"\n :bot=\"botIndicator\"\n :compact=\"true\"\n :better-shadow=\"betterShadow\"\n :user=\"notification.from_profile\"\n />\n </UserPopover>\n </a>\n <div class=\"notification-right\">\n <span class=\"notification-details\">\n <div class=\"name-and-action\">\n <!-- eslint-disable vue/no-v-html -->\n <bdi v-if=\"!!notification.from_profile.name_html\">\n <RichContent\n class=\"username\"\n :title=\"'@'+notification.from_profile.screen_name_ui\"\n :html=\"notification.from_profile.name_html\"\n :emoji=\"notification.from_profile.emoji\"\n />\n </bdi>\n <!-- eslint-enable vue/no-v-html -->\n <span\n v-else\n class=\"username\"\n :title=\"'@'+notification.from_profile.screen_name_ui\"\n >\n {{ notification.from_profile.name }}\n </span>\n {{ ' ' }}\n <span v-if=\"notification.type === 'like'\">\n <FAIcon\n class=\"type-icon\"\n icon=\"star\"\n />\n {{ ' ' }}\n <small>{{ $t('notifications.favorited_you') }}</small>\n </span>\n <span v-if=\"notification.type === 'repeat'\">\n <FAIcon\n class=\"type-icon\"\n icon=\"retweet\"\n :title=\"$t('tool_tip.repeat')\"\n />\n {{ ' ' }}\n <small>{{ $t('notifications.repeated_you') }}</small>\n </span>\n <span v-if=\"notification.type === 'follow'\">\n <FAIcon\n class=\"type-icon\"\n icon=\"user-plus\"\n />\n {{ ' ' }}\n <small>{{ $t('notifications.followed_you') }}</small>\n </span>\n <span v-if=\"notification.type === 'follow_request'\">\n <FAIcon\n class=\"type-icon\"\n icon=\"user\"\n />\n {{ ' ' }}\n <small>{{ $t('notifications.follow_request') }}</small>\n </span>\n <span v-if=\"notification.type === 'move'\">\n <FAIcon\n class=\"type-icon\"\n icon=\"suitcase-rolling\"\n />\n {{ ' ' }}\n <small>{{ $t('notifications.migrated_to') }}</small>\n </span>\n <span v-if=\"notification.type === 'pleroma:emoji_reaction'\">\n <small>\n <i18n-t\n scope=\"global\"\n keypath=\"notifications.reacted_with\"\n >\n <span class=\"emoji-reaction-emoji\">{{ notification.emoji }}</span>\n </i18n-t>\n </small>\n </span>\n <span v-if=\"notification.type === 'pleroma:report'\">\n <small>{{ $t('notifications.submitted_report') }}</small>\n </span>\n <span v-if=\"notification.type === 'poll'\">\n <FAIcon\n class=\"type-icon\"\n icon=\"poll-h\"\n />\n {{ ' ' }}\n <small>{{ $t('notifications.poll_ended') }}</small>\n </span>\n </div>\n <div\n v-if=\"isStatusNotification\"\n class=\"timeago\"\n >\n <router-link\n v-if=\"notification.status\"\n :to=\"{ name: 'conversation', params: { id: notification.status.id } }\"\n class=\"timeago-link faint-link\"\n >\n <Timeago\n :time=\"notification.created_at\"\n :auto-update=\"240\"\n />\n </router-link>\n <button\n class=\"button-unstyled expand-icon\"\n @click.prevent=\"toggleStatusExpanded\"\n :title=\"$t('tool_tip.toggle_expand')\"\n :aria-expanded=\"statusExpanded\"\n >\n <FAIcon\n class=\"fa-scale-110\"\n fixed-width\n :icon=\"statusExpanded ? 'compress-alt' : 'expand-alt'\"\n />\n </button>\n </div>\n <div\n v-else\n class=\"timeago\"\n >\n <span class=\"faint\">\n <Timeago\n :time=\"notification.created_at\"\n :auto-update=\"240\"\n />\n </span>\n </div>\n <button\n v-if=\"needMute\"\n class=\"button-unstyled\"\n :title=\"$t('tool_tip.toggle_mute')\"\n :aria-expanded=\"!unmuted\"\n @click.prevent=\"toggleMute\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"eye-slash\"\n />\n </button>\n </span>\n <div\n v-if=\"notification.type === 'follow' || notification.type === 'follow_request'\"\n class=\"follow-text\"\n >\n <user-link\n class=\"follow-name\"\n :user=\"notification.from_profile\"\n />\n <div\n v-if=\"notification.type === 'follow_request'\"\n style=\"white-space: nowrap;\"\n >\n <button\n class=\"button-unstyled\"\n :title=\"$t('tool_tip.accept_follow_request')\"\n @click=\"approveUser()\"\n >\n <FAIcon\n icon=\"check\"\n class=\"fa-scale-110 fa-old-padding follow-request-accept\"\n />\n </button>\n <button\n class=\"button-unstyled\"\n :title=\"$t('tool_tip.reject_follow_request')\"\n @click=\"denyUser()\"\n >\n <FAIcon\n icon=\"times\"\n class=\"fa-scale-110 fa-old-padding follow-request-reject\"\n />\n </button>\n </div>\n </div>\n <div\n v-else-if=\"notification.type === 'move'\"\n class=\"move-text\"\n >\n <user-link\n :user=\"notification.target\"\n />\n </div>\n <Report\n v-else-if=\"notification.type === 'pleroma:report'\"\n :report-id=\"notification.report.id\"\n />\n <template v-else>\n <StatusContent\n :class=\"{ faint: !statusExpanded }\"\n :compact=\"!statusExpanded\"\n :status=\"notification.action\"\n />\n </template>\n </div>\n </div>\n <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingApproveConfirmDialog\"\n :title=\"$t('user_card.approve_confirm_title')\"\n :confirm-text=\"$t('user_card.approve_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.approve_confirm_cancel_button')\"\n @accepted=\"doApprove\"\n @cancelled=\"hideApproveConfirmDialog\"\n >\n {{ $t('user_card.approve_confirm', { user: user.screen_name_ui }) }}\n </confirm-modal>\n <confirm-modal\n v-if=\"showingDenyConfirmDialog\"\n :title=\"$t('user_card.deny_confirm_title')\"\n :confirm-text=\"$t('user_card.deny_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.deny_confirm_cancel_button')\"\n @accepted=\"doDeny\"\n @cancelled=\"hideDenyConfirmDialog\"\n >\n {{ $t('user_card.deny_confirm', { user: user.screen_name_ui }) }}\n </confirm-modal>\n </teleport>\n </article>\n</template>\n\n<script src=\"./notification.js\"></script>\n<style src=\"./notification.scss\" lang=\"scss\"></style>\n","<template>\n <div class=\"Report\">\n <div class=\"reported-user\">\n <span>{{ $t('report.reported_user') }}</span>\n <router-link :to=\"generateUserProfileLink(report.acct)\">\n @{{ report.acct.screen_name }}\n </router-link>\n </div>\n <div class=\"reporter\">\n <span>{{ $t('report.reporter') }}</span>\n <router-link :to=\"generateUserProfileLink(report.actor)\">\n @{{ report.actor.screen_name }}\n </router-link>\n </div>\n <div class=\"report-state\">\n <span>{{ $t('report.state') }}</span>\n <Select\n :id=\"report-state\"\n v-model=\"state\"\n class=\"form-control\"\n >\n <option\n v-for=\"state in ['open', 'closed', 'resolved']\"\n :key=\"state\"\n :value=\"state\"\n >\n {{ $t('report.state_' + state) }}\n </option>\n </Select>\n </div>\n <RichContent\n class=\"report-content\"\n :html=\"report.content\"\n :emoji=\"[]\"\n />\n <div v-if=\"report.statuses.length\">\n <small>{{ $t('report.reported_statuses') }}</small>\n <router-link\n v-for=\"status in report.statuses\"\n :key=\"status.id\"\n :to=\"{ name: 'conversation', params: { id: status.id } }\"\n class=\"reported-status\"\n >\n <div class=\"reported-status-heading\">\n <span class=\"reported-status-name\">{{ status.user.name }}</span>\n <Timeago\n :time=\"status.created_at\"\n :auto-update=\"240\"\n class=\"faint\"\n />\n </div>\n <status-content :status=\"status\" />\n </router-link>\n </div>\n <div v-if=\"report.notes.length\">\n <small>{{ $t('report.notes') }}</small>\n <div\n v-for=\"note in report.notes\"\n :key=\"note.id\"\n class=\"note\"\n >\n <span>{{ note.content }}</span>\n <Timeago\n :time=\"note.created_at\"\n :auto-update=\"240\"\n class=\"faint\"\n />\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./report.js\"></script>\n<style src=\"./report.scss\" lang=\"scss\"></style>\n","import Select from '../select/select.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\n\nconst Report = {\n props: [\n 'reportId'\n ],\n components: {\n Select,\n StatusContent,\n Timeago\n },\n computed: {\n report () {\n return this.$store.state.reports.reports[this.reportId] || {}\n },\n state: {\n get: function () { return this.report.state },\n set: function (val) { this.setReportState(val) }\n }\n },\n methods: {\n generateUserProfileLink (user) {\n return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n },\n setReportState (state) {\n return this.$store.dispatch('setReportState', { id: this.report.id, state })\n }\n }\n}\n\nexport default Report\n","import { render } from \"./report.vue?vue&type=template&id=86a2fdce\"\nimport script from \"./report.js?vue&type=script&lang=js\"\nexport * from \"./report.js?vue&type=script&lang=js\"\n\nimport \"./report.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import StatusContent from '../status_content/status_content.vue'\nimport { mapState } from 'vuex'\nimport Status from '../status/status.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport UserCard from '../user_card/user_card.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport Report from '../report/report.vue'\nimport UserLink from '../user_link/user_link.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport UserPopover from '../user_popover/user_popover.vue'\nimport ConfirmModal from '../confirm_modal/confirm_modal.vue'\nimport { isStatusNotification } from '../../services/notification_utils/notification_utils.js'\nimport { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCheck,\n faTimes,\n faStar,\n faRetweet,\n faUserPlus,\n faEyeSlash,\n faUser,\n faSuitcaseRolling,\n faExpandAlt,\n faCompressAlt\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCheck,\n faTimes,\n faStar,\n faRetweet,\n faUserPlus,\n faUser,\n faEyeSlash,\n faSuitcaseRolling,\n faExpandAlt,\n faCompressAlt\n)\n\nconst Notification = {\n data () {\n return {\n statusExpanded: false,\n betterShadow: this.$store.state.interface.browserSupport.cssFilter,\n unmuted: false,\n showingApproveConfirmDialog: false,\n showingDenyConfirmDialog: false\n }\n },\n props: ['notification'],\n components: {\n StatusContent,\n UserAvatar,\n UserCard,\n Timeago,\n Status,\n Report,\n RichContent,\n UserPopover,\n UserLink,\n ConfirmModal\n },\n methods: {\n toggleStatusExpanded () {\n this.statusExpanded = !this.statusExpanded\n },\n generateUserProfileLink (user) {\n return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n },\n getUser (notification) {\n return this.$store.state.users.usersObject[notification.from_profile.id]\n },\n toggleMute () {\n this.unmuted = !this.unmuted\n },\n showApproveConfirmDialog () {\n this.showingApproveConfirmDialog = true\n },\n hideApproveConfirmDialog () {\n this.showingApproveConfirmDialog = false\n },\n showDenyConfirmDialog () {\n this.showingDenyConfirmDialog = true\n },\n hideDenyConfirmDialog () {\n this.showingDenyConfirmDialog = false\n },\n approveUser () {\n if (this.shouldConfirmApprove) {\n this.showApproveConfirmDialog()\n } else {\n this.doApprove()\n }\n },\n doApprove () {\n this.$store.state.api.backendInteractor.approveUser({ id: this.user.id })\n this.$store.dispatch('removeFollowRequest', this.user)\n this.$store.dispatch('markSingleNotificationAsSeen', { id: this.notification.id })\n this.$store.dispatch('updateNotification', {\n id: this.notification.id,\n updater: notification => {\n notification.type = 'follow'\n }\n })\n this.hideApproveConfirmDialog()\n },\n denyUser () {\n if (this.shouldConfirmDeny) {\n this.showDenyConfirmDialog()\n } else {\n this.doDeny()\n }\n },\n doDeny () {\n this.$store.state.api.backendInteractor.denyUser({ id: this.user.id })\n .then(() => {\n this.$store.dispatch('dismissNotificationLocal', { id: this.notification.id })\n this.$store.dispatch('removeFollowRequest', this.user)\n })\n this.hideDenyConfirmDialog()\n }\n },\n computed: {\n userClass () {\n return highlightClass(this.notification.from_profile)\n },\n userStyle () {\n const highlight = this.$store.getters.mergedConfig.highlight\n const user = this.notification.from_profile\n return highlightStyle(highlight[user.screen_name])\n },\n user () {\n return this.$store.getters.findUser(this.notification.from_profile.id)\n },\n userProfileLink () {\n return this.generateUserProfileLink(this.user)\n },\n targetUser () {\n return this.$store.getters.findUser(this.notification.target.id)\n },\n targetUserProfileLink () {\n return this.generateUserProfileLink(this.targetUser)\n },\n needMute () {\n return this.$store.getters.relationship(this.user.id).muting\n },\n isStatusNotification () {\n return isStatusNotification(this.notification.type)\n },\n mergedConfig () {\n return this.$store.getters.mergedConfig\n },\n shouldConfirmApprove () {\n return this.mergedConfig.modalOnApproveFollow\n },\n shouldConfirmDeny () {\n return this.mergedConfig.modalOnDenyFollow\n },\n ...mapState({\n currentUser: state => state.users.currentUser\n })\n }\n}\n\nexport default Notification\n","import { render } from \"./notification.vue?vue&type=template&id=69ada7ad\"\nimport script from \"./notification.js?vue&type=script&lang=js\"\nexport * from \"./notification.js?vue&type=script&lang=js\"\n\nimport \"./notification.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Popover\n trigger=\"click\"\n class=\"NotificationFilters\"\n placement=\"bottom\"\n :bound-to=\"{ x: 'container' }\"\n >\n <template #content>\n <div class=\"dropdown-menu\">\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('likes')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.likes }\"\n />{{ $t('settings.notification_visibility_likes') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('repeats')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.repeats }\"\n />{{ $t('settings.notification_visibility_repeats') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('follows')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.follows }\"\n />{{ $t('settings.notification_visibility_follows') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('mentions')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.mentions }\"\n />{{ $t('settings.notification_visibility_mentions') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('emojiReactions')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.emojiReactions }\"\n />{{ $t('settings.notification_visibility_emoji_reactions') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('moves')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.moves }\"\n />{{ $t('settings.notification_visibility_moves') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('polls')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.polls }\"\n />{{ $t('settings.notification_visibility_polls') }}\n </button>\n </div>\n </template>\n <template #trigger>\n <button class=\"filter-trigger-button button-unstyled\">\n <FAIcon icon=\"filter\" />\n </button>\n </template>\n </Popover>\n</template>\n\n<script>\nimport Popover from '../popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faFilter } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faFilter\n)\n\nexport default {\n components: { Popover },\n computed: {\n filters () {\n return this.$store.getters.mergedConfig.notificationVisibility\n }\n },\n methods: {\n toggleNotificationFilter (type) {\n this.$store.dispatch('setOption', {\n name: 'notificationVisibility',\n value: {\n ...this.filters,\n [type]: !this.filters[type]\n }\n })\n }\n }\n}\n</script>\n","import { render } from \"./notification_filters.vue?vue&type=template&id=0ad39446\"\nimport script from \"./notification_filters.vue?vue&type=script&lang=js\"\nexport * from \"./notification_filters.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { computed } from 'vue'\nimport { mapGetters } from 'vuex'\nimport Notification from '../notification/notification.vue'\nimport NotificationFilters from './notification_filters.vue'\nimport notificationsFetcher from '../../services/notifications_fetcher/notifications_fetcher.service.js'\nimport {\n notificationsFromStore,\n filteredNotificationsFromStore,\n unseenNotificationsFromStore\n} from '../../services/notification_utils/notification_utils.js'\nimport FaviconService from '../../services/favicon_service/favicon_service.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch, faArrowUp, faMinus } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch,\n faArrowUp,\n faMinus\n)\n\nconst DEFAULT_SEEN_TO_DISPLAY_COUNT = 30\n\nconst Notifications = {\n components: {\n Notification,\n NotificationFilters\n },\n props: {\n // Disables panel styles, unread mark, potentially other notification-related actions\n // meant for \"Interactions\" timeline\n minimalMode: Boolean,\n // Custom filter mode, an array of strings, possible values 'mention', 'repeat', 'like', 'follow', used to override global filter for use in \"Interactions\" timeline\n filterMode: Array,\n // Disable teleporting (i.e. for /users/user/notifications)\n disableTeleport: Boolean\n },\n data () {\n return {\n showScrollTop: false,\n bottomedOut: false,\n // How many seen notifications to display in the list. The more there are,\n // the heavier the page becomes. This count is increased when loading\n // older notifications, and cut back to default whenever hitting \"Read!\".\n seenToDisplayCount: DEFAULT_SEEN_TO_DISPLAY_COUNT\n }\n },\n provide () {\n return {\n popoversZLayer: computed(() => this.popoversZLayer)\n }\n },\n computed: {\n mainClass () {\n return this.minimalMode ? '' : 'panel panel-default'\n },\n notifications () {\n return notificationsFromStore(this.$store)\n },\n error () {\n return this.$store.state.statuses.notifications.error\n },\n unseenNotifications () {\n return unseenNotificationsFromStore(this.$store)\n },\n filteredNotifications () {\n return filteredNotificationsFromStore(this.$store, this.filterMode)\n },\n unseenCount () {\n return this.unseenNotifications.length\n },\n unseenCountTitle () {\n return this.unseenCount + (this.unreadChatCount) + this.unreadAnnouncementCount\n },\n loading () {\n return this.$store.state.statuses.notifications.loading\n },\n noHeading () {\n const { layoutType } = this.$store.state.interface\n return this.minimalMode || layoutType === 'mobile'\n },\n teleportTarget () {\n const { layoutType } = this.$store.state.interface\n const map = {\n wide: '#notifs-column',\n mobile: '#mobile-notifications'\n }\n return map[layoutType] || '#notifs-sidebar'\n },\n popoversZLayer () {\n const { layoutType } = this.$store.state.interface\n return layoutType === 'mobile' ? 'navbar' : null\n },\n notificationsToDisplay () {\n return this.filteredNotifications.slice(0, this.unseenCount + this.seenToDisplayCount)\n },\n noSticky () { return this.$store.getters.mergedConfig.disableStickyHeaders },\n ...mapGetters(['unreadChatCount', 'unreadAnnouncementCount'])\n },\n mounted () {\n this.scrollerRef = this.$refs.root.closest('.column.-scrollable')\n if (!this.scrollerRef) {\n this.scrollerRef = this.$refs.root.closest('.mobile-notifications')\n }\n if (!this.scrollerRef) {\n this.scrollerRef = this.$refs.root.closest('.column.main')\n }\n this.scrollerRef.addEventListener('scroll', this.updateScrollPosition)\n },\n unmounted () {\n if (!this.scrollerRef) return\n this.scrollerRef.removeEventListener('scroll', this.updateScrollPosition)\n },\n watch: {\n unseenCountTitle (count) {\n if (count > 0) {\n FaviconService.drawFaviconBadge()\n this.$store.dispatch('setPageTitle', `(${count})`)\n } else {\n FaviconService.clearFaviconBadge()\n this.$store.dispatch('setPageTitle', '')\n }\n },\n teleportTarget () {\n // handle scroller change\n this.$nextTick(() => {\n this.scrollerRef.removeEventListener('scroll', this.updateScrollPosition)\n this.scrollerRef = this.$refs.root.closest('.column.-scrollable')\n if (!this.scrollerRef) {\n this.scrollerRef = this.$refs.root.closest('.mobile-notifications')\n }\n this.scrollerRef.addEventListener('scroll', this.updateScrollPosition)\n this.updateScrollPosition()\n })\n }\n },\n methods: {\n scrollToTop () {\n const scrollable = this.scrollerRef\n scrollable.scrollTo({ top: this.$refs.root.offsetTop })\n // this.$refs.root.scrollIntoView({ behavior: 'smooth', block: 'start' })\n },\n updateScrollPosition () {\n this.showScrollTop = this.$refs.root.offsetTop < this.scrollerRef.scrollTop\n },\n markAsSeen () {\n this.$store.dispatch('markNotificationsAsSeen')\n this.seenToDisplayCount = DEFAULT_SEEN_TO_DISPLAY_COUNT\n },\n fetchOlderNotifications () {\n if (this.loading) {\n return\n }\n\n const seenCount = this.filteredNotifications.length - this.unseenCount\n if (this.seenToDisplayCount < seenCount) {\n this.seenToDisplayCount = Math.min(this.seenToDisplayCount + 20, seenCount)\n return\n } else if (this.seenToDisplayCount > seenCount) {\n this.seenToDisplayCount = seenCount\n }\n\n const store = this.$store\n const credentials = store.state.users.currentUser.credentials\n store.commit('setNotificationsLoading', { value: true })\n notificationsFetcher.fetchAndUpdate({\n store,\n credentials,\n older: true\n }).then(notifs => {\n store.commit('setNotificationsLoading', { value: false })\n if (notifs.length === 0) {\n this.bottomedOut = true\n }\n this.seenToDisplayCount += notifs.length\n })\n }\n }\n}\n\nexport default Notifications\n","import { render } from \"./notifications.vue?vue&type=template&id=fdd5b5f4\"\nimport script from \"./notifications.js?vue&type=script&lang=js\"\nexport * from \"./notifications.js?vue&type=script&lang=js\"\n\nimport \"./notifications.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"panel-loading\">\n <span class=\"loading-text\">\n <FAIcon\n icon=\"circle-notch\"\n spin\n size=\"3x\"\n />\n {{ $t('general.loading') }}\n </span>\n </div>\n</template>\n\n<script>\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nexport default {}\n</script>\n\n<style lang=\"scss\">\n@import \"src/variables\";\n\n.panel-loading {\n display: flex;\n height: 100%;\n align-items: center;\n justify-content: center;\n font-size: 2em;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n\n .loading-text svg {\n line-height: 0;\n vertical-align: middle;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n}\n</style>\n","import { render } from \"./panel_loading.vue?vue&type=template&id=0255a870\"\nimport script from \"./panel_loading.vue?vue&type=script&lang=js\"\nexport * from \"./panel_loading.vue?vue&type=script&lang=js\"\n\nimport \"./panel_loading.vue?vue&type=style&index=0&id=0255a870&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","const Popover = {\n name: 'Popover',\n props: {\n // Action to trigger popover: either 'hover' or 'click'\n trigger: String,\n\n // 'top', 'bottom', 'left', 'right'\n placement: String,\n\n // Takes object with properties 'x' and 'y', values of these can be\n // 'container' for using offsetParent as boundaries for either axis\n // or 'viewport'\n boundTo: Object,\n\n // Takes a selector to use as a replacement for the parent container\n // for getting boundaries for x an y axis\n boundToSelector: String,\n\n // Takes a top/bottom/left/right object, how much space to leave\n // between boundary and popover element\n margin: Object,\n\n // Takes a x/y object and tells how many pixels to offset from\n // anchor point on either axis\n offset: Object,\n\n // Replaces the classes you may want for the popover container.\n // Use 'popover-default' in addition to get the default popover\n // styles with your custom class.\n popoverClass: String,\n\n // If true, subtract padding when calculating position for the popover,\n // use it when popover offset looks to be different on top vs bottom.\n removePadding: Boolean,\n\n // self-explanatory (i hope)\n disabled: Boolean,\n\n // Instead of putting popover next to anchor, overlay popover's center on top of anchor's center\n overlayCenters: Boolean,\n\n // What selector (witin popover!) to use for determining center of popover\n overlayCentersSelector: String,\n\n // Lets hover popover stay when clicking inside of it\n stayOnClick: Boolean,\n\n triggerAttrs: {\n type: Object,\n default: {}\n }\n },\n inject: ['popoversZLayer'], // override popover z layer\n data () {\n return {\n // lockReEntry is a flag that is set when mouse cursor is leaving the popover's content\n // so that if mouse goes back into popover it won't be re-shown again to prevent annoyance\n // with popovers refusing to be hidden when user wants to interact with something in below popover\n anchorEl: null,\n // There's an issue where having teleport enabled by default causes things just...\n // not render at all, i.e. main post status form and its emoji inputs\n teleport: false,\n lockReEntry: false,\n hidden: true,\n styles: {},\n oldSize: { width: 0, height: 0 },\n scrollable: null,\n // used to avoid blinking if hovered onto popover\n graceTimeout: null,\n parentPopover: null,\n disableClickOutside: false,\n childrenShown: new Set()\n }\n },\n methods: {\n setAnchorEl (el) {\n this.anchorEl = el\n this.updateStyles()\n },\n containerBoundingClientRect () {\n const container = this.boundToSelector ? this.$el.closest(this.boundToSelector) : this.$el.offsetParent\n return container.getBoundingClientRect()\n },\n updateStyles () {\n if (this.hidden) {\n this.styles = {}\n return\n }\n\n // Popover will be anchored around this element, trigger ref is the container, so\n // its children are what are inside the slot. Expect only one v-slot:trigger.\n const anchorEl = this.anchorEl || (this.$refs.trigger && this.$refs.trigger.children[0]) || this.$el\n // SVGs don't have offsetWidth/Height, use fallback\n const anchorHeight = anchorEl.offsetHeight || anchorEl.clientHeight\n const anchorWidth = anchorEl.offsetWidth || anchorEl.clientWidth\n const anchorScreenBox = anchorEl.getBoundingClientRect()\n\n const anchorStyle = getComputedStyle(anchorEl)\n const topPadding = parseFloat(anchorStyle.paddingTop)\n const bottomPadding = parseFloat(anchorStyle.paddingBottom)\n const rightPadding = parseFloat(anchorStyle.paddingRight)\n const leftPadding = parseFloat(anchorStyle.paddingLeft)\n\n // Screen position of the origin point for popover = center of the anchor\n const origin = {\n x: anchorScreenBox.left + anchorWidth * 0.5,\n y: anchorScreenBox.top + anchorHeight * 0.5\n }\n const content = this.$refs.content\n const overlayCenter = this.overlayCenters\n ? this.$refs.content.querySelector(this.overlayCentersSelector)\n : null\n\n // Minor optimization, don't call a slow reflow call if we don't have to\n const parentScreenBox = this.boundTo &&\n (this.boundTo.x === 'container' || this.boundTo.y === 'container') &&\n this.containerBoundingClientRect()\n\n const margin = this.margin || {}\n\n // What are the screen bounds for the popover? Viewport vs container\n // when using viewport, using default margin values to dodge the navbar\n const xBounds = this.boundTo && this.boundTo.x === 'container'\n ? {\n min: parentScreenBox.left + (margin.left || 0),\n max: parentScreenBox.right - (margin.right || 0)\n }\n : {\n min: 0 + (margin.left || 10),\n max: window.innerWidth - (margin.right || 10)\n }\n\n const yBounds = this.boundTo && this.boundTo.y === 'container'\n ? {\n min: parentScreenBox.top + (margin.top || 0),\n max: parentScreenBox.bottom - (margin.bottom || 0)\n }\n : {\n min: 0 + (margin.top || 50),\n max: window.innerHeight - (margin.bottom || 5)\n }\n\n let horizOffset = 0\n let vertOffset = 0\n\n if (overlayCenter) {\n const box = content.getBoundingClientRect()\n const overlayCenterScreenBox = overlayCenter.getBoundingClientRect()\n const leftInnerOffset = overlayCenterScreenBox.left - box.left\n const topInnerOffset = overlayCenterScreenBox.top - box.top\n horizOffset = -leftInnerOffset - overlayCenter.offsetWidth * 0.5\n vertOffset = -topInnerOffset - overlayCenter.offsetHeight * 0.5\n } else {\n horizOffset = content.offsetWidth * -0.5\n vertOffset = content.offsetHeight * -0.5\n }\n\n const leftBorder = origin.x + horizOffset\n const rightBorder = leftBorder + content.offsetWidth\n const topBorder = origin.y + vertOffset\n const bottomBorder = topBorder + content.offsetHeight\n\n // If overflowing from left, move it so that it doesn't\n if (leftBorder < xBounds.min) {\n horizOffset += xBounds.min - leftBorder\n }\n\n // If overflowing from right, move it so that it doesn't\n if (rightBorder > xBounds.max) {\n horizOffset -= rightBorder - xBounds.max\n }\n\n // If overflowing from top, move it so that it doesn't\n if (topBorder < yBounds.min) {\n vertOffset += yBounds.min - topBorder\n }\n\n // If overflowing from bottom, move it so that it doesn't\n if (bottomBorder > yBounds.max) {\n vertOffset -= bottomBorder - yBounds.max\n }\n\n let translateX = 0\n let translateY = 0\n\n if (overlayCenter) {\n translateX = origin.x + horizOffset\n translateY = origin.y + vertOffset\n } else if (this.placement !== 'right' && this.placement !== 'left') {\n // Default to whatever user wished with placement prop\n let usingTop = this.placement !== 'bottom'\n\n // Handle special cases, first force to displaying on top if there's not space on bottom,\n // regardless of what placement value was. Then check if there's not space on top, and\n // force to bottom, again regardless of what placement value was.\n const topBoundary = origin.y - anchorHeight * 0.5 + (this.removePadding ? topPadding : 0)\n const bottomBoundary = origin.y + anchorHeight * 0.5 - (this.removePadding ? bottomPadding : 0)\n if (bottomBoundary + content.offsetHeight > yBounds.max) usingTop = true\n if (topBoundary - content.offsetHeight < yBounds.min) usingTop = false\n\n const yOffset = (this.offset && this.offset.y) || 0\n translateY = usingTop\n ? topBoundary - yOffset - content.offsetHeight\n : bottomBoundary + yOffset\n\n const xOffset = (this.offset && this.offset.x) || 0\n translateX = origin.x + horizOffset + xOffset\n } else {\n // Default to whatever user wished with placement prop\n let usingRight = this.placement !== 'left'\n\n // Handle special cases, first force to displaying on top if there's not space on bottom,\n // regardless of what placement value was. Then check if there's not space on top, and\n // force to bottom, again regardless of what placement value was.\n const rightBoundary = origin.x - anchorWidth * 0.5 + (this.removePadding ? rightPadding : 0)\n const leftBoundary = origin.x + anchorWidth * 0.5 - (this.removePadding ? leftPadding : 0)\n if (leftBoundary + content.offsetWidth > xBounds.max) usingRight = true\n if (rightBoundary - content.offsetWidth < xBounds.min) usingRight = false\n\n const xOffset = (this.offset && this.offset.x) || 0\n translateX = usingRight\n ? rightBoundary - xOffset - content.offsetWidth\n : leftBoundary + xOffset\n\n const yOffset = (this.offset && this.offset.y) || 0\n translateY = origin.y + vertOffset + yOffset\n }\n\n this.styles = {\n left: `${Math.round(translateX)}px`,\n top: `${Math.round(translateY)}px`\n }\n\n if (this.popoversZLayer) {\n this.styles['--ZI_popover_override'] = `var(--ZI_${this.popoversZLayer}_popovers)`\n }\n if (parentScreenBox) {\n this.styles.maxWidth = `${Math.round(parentScreenBox.width)}px`\n }\n },\n showPopover () {\n if (this.disabled) return\n this.disableClickOutside = true\n setTimeout(() => {\n this.disableClickOutside = false\n }, 0)\n const wasHidden = this.hidden\n this.hidden = false\n this.parentPopover && this.parentPopover.onChildPopoverState(this, true)\n if (this.trigger === 'click' || this.stayOnClick) {\n document.addEventListener('click', this.onClickOutside)\n }\n this.scrollable.addEventListener('scroll', this.onScroll)\n this.scrollable.addEventListener('resize', this.onResize)\n this.$nextTick(() => {\n if (wasHidden) this.$emit('show')\n this.updateStyles()\n })\n },\n hidePopover () {\n if (this.disabled) return\n if (!this.hidden) this.$emit('close')\n this.hidden = true\n this.parentPopover && this.parentPopover.onChildPopoverState(this, false)\n if (this.trigger === 'click') {\n document.removeEventListener('click', this.onClickOutside)\n }\n this.scrollable.removeEventListener('scroll', this.onScroll)\n this.scrollable.removeEventListener('resize', this.onResize)\n },\n onMouseenter (e) {\n if (this.trigger === 'hover') {\n this.lockReEntry = false\n clearTimeout(this.graceTimeout)\n this.graceTimeout = null\n this.showPopover()\n }\n },\n onMouseleave (e) {\n if (this.trigger === 'hover' && this.childrenShown.size === 0) {\n this.graceTimeout = setTimeout(() => this.hidePopover(), 1)\n }\n },\n onMouseenterContent (e) {\n if (this.trigger === 'hover' && !this.lockReEntry) {\n this.lockReEntry = true\n clearTimeout(this.graceTimeout)\n this.graceTimeout = null\n this.showPopover()\n }\n },\n onMouseleaveContent (e) {\n if (this.trigger === 'hover' && this.childrenShown.size === 0) {\n this.graceTimeout = setTimeout(() => this.hidePopover(), 1)\n }\n },\n onClick (e) {\n if (this.trigger === 'click') {\n if (this.hidden) {\n this.showPopover()\n } else {\n this.hidePopover()\n }\n }\n },\n onClickOutside (e) {\n if (this.disableClickOutside) return\n if (this.hidden) return\n if (this.$refs.content && this.$refs.content.contains(e.target)) return\n if (this.$el.contains(e.target)) return\n if (this.childrenShown.size > 0) return\n this.hidePopover()\n if (this.parentPopover) this.parentPopover.onClickOutside(e)\n },\n onScroll (e) {\n this.updateStyles()\n },\n onResize (e) {\n this.updateStyles()\n },\n onChildPopoverState (childRef, state) {\n if (state) {\n this.childrenShown.add(childRef)\n } else {\n this.childrenShown.delete(childRef)\n }\n }\n },\n updated () {\n // Monitor changes to content size, update styles only when content sizes have changed,\n // that should be the only time we need to move the popover box if we don't care about scroll\n // or resize\n const content = this.$refs.content\n if (!content) return\n if (this.oldSize.width !== content.offsetWidth || this.oldSize.height !== content.offsetHeight) {\n this.updateStyles()\n this.oldSize = { width: content.offsetWidth, height: content.offsetHeight }\n }\n },\n mounted () {\n this.teleport = true\n let scrollable = this.$refs.trigger.closest('.column.-scrollable') ||\n this.$refs.trigger.closest('.mobile-notifications')\n if (!scrollable) scrollable = window\n this.scrollable = scrollable\n let parent = this.$parent\n while (parent && parent.$.type.name !== 'Popover') {\n parent = parent.$parent\n }\n this.parentPopover = parent\n },\n beforeUnmount () {\n this.hidePopover()\n }\n}\n\nexport default Popover\n","import { render } from \"./popover.vue?vue&type=template&id=1de5634b\"\nimport script from \"./popover.js?vue&type=script&lang=js\"\nexport * from \"./popover.js?vue&type=script&lang=js\"\n\nimport \"./popover.vue?vue&type=style&index=0&id=1de5634b&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <span\n @mouseenter=\"onMouseenter\"\n @mouseleave=\"onMouseleave\"\n >\n <button\n ref=\"trigger\"\n class=\"button-unstyled popover-trigger-button\"\n type=\"button\"\n v-bind=\"triggerAttrs\"\n @click=\"onClick\"\n >\n <slot name=\"trigger\" />\n </button>\n <teleport\n :disabled=\"!teleport\"\n to=\"#popovers\"\n >\n <transition name=\"fade\">\n <div\n v-if=\"!hidden\"\n ref=\"content\"\n :style=\"styles\"\n class=\"popover\"\n :class=\"popoverClass || 'popover-default'\"\n @mouseenter=\"onMouseenterContent\"\n @mouseleave=\"onMouseleaveContent\"\n @click=\"onClickContent\"\n >\n <slot\n name=\"content\"\n class=\"popover-inner\"\n :close=\"hidePopover\"\n />\n </div>\n </transition>\n </teleport>\n </span>\n</template>\n\n<script src=\"./popover.js\" />\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.popover-trigger-button {\n display: inline-block;\n}\n\n.popover {\n z-index: var(--ZI_popover_override, var(--ZI_popovers));\n position: fixed;\n min-width: 0;\n max-width: calc(100vw - 20px);\n box-shadow: 2px 2px 3px rgb(0 0 0 / 50%);\n box-shadow: var(--popupShadow);\n}\n\n.popover-default {\n &::after {\n content: \"\";\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 3;\n box-shadow: 1px 1px 4px rgb(0 0 0 / 60%);\n box-shadow: var(--panelShadow);\n pointer-events: none;\n }\n\n border-radius: $fallback--btnRadius;\n border-radius: var(--btnRadius, $fallback--btnRadius);\n background-color: $fallback--bg;\n background-color: var(--popover, $fallback--bg);\n color: $fallback--text;\n color: var(--popoverText, $fallback--text);\n\n --faint: var(--popoverFaintText, $fallback--faint);\n --faintLink: var(--popoverFaintLink, $fallback--faint);\n --lightText: var(--popoverLightText, $fallback--lightText);\n --postLink: var(--popoverPostLink, $fallback--link);\n --postFaintLink: var(--popoverPostFaintLink, $fallback--link);\n --icon: var(--popoverIcon, $fallback--icon);\n}\n\n.dropdown-menu {\n display: block;\n padding: 0.5rem 0;\n font-size: 1em;\n text-align: left;\n list-style: none;\n max-width: 100vw;\n z-index: var(--ZI_popover_override, var(--ZI_popovers));\n white-space: nowrap;\n\n .dropdown-divider {\n height: 0;\n margin: 0.5rem 0;\n overflow: hidden;\n border-top: 1px solid $fallback--border;\n border-top: 1px solid var(--border, $fallback--border);\n }\n\n .dropdown-item {\n line-height: 21px;\n overflow: hidden;\n display: block;\n padding: 0.5em 0.75em;\n clear: both;\n font-weight: 400;\n text-align: inherit;\n white-space: nowrap;\n border: none;\n border-radius: 0;\n background-color: transparent;\n box-shadow: none;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n\n --btnText: var(--popoverText, $fallback--text);\n\n &-icon {\n svg {\n width: 22px;\n margin-right: 0.75rem;\n color: var(--menuPopoverIcon, $fallback--icon);\n }\n }\n\n &.-has-submenu {\n .chevron-icon {\n margin-right: 0.25rem;\n margin-left: 2rem;\n }\n }\n\n &:active,\n &:hover {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenuPopover, $fallback--lightBg);\n box-shadow: none;\n\n --btnText: var(--selectedMenuPopoverText, $fallback--link);\n --faint: var(--selectedMenuPopoverFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuPopoverFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuPopoverLightText, $fallback--lightText);\n --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n\n svg {\n color: var(--selectedMenuPopoverIcon, $fallback--icon);\n\n --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n }\n }\n\n .menu-checkbox {\n display: inline-block;\n vertical-align: middle;\n min-width: 22px;\n max-width: 22px;\n min-height: 22px;\n max-height: 22px;\n line-height: 22px;\n text-align: center;\n border-radius: 0;\n background-color: $fallback--fg;\n background-color: var(--input, $fallback--fg);\n box-shadow: 0 0 2px black inset;\n box-shadow: var(--inputShadow);\n margin-right: 0.75em;\n\n &.menu-checkbox-checked::after {\n font-size: 1.25em;\n content: \"✓\";\n }\n\n &.-radio {\n border-radius: 9999px;\n\n &.menu-checkbox-checked::after {\n font-size: 2em;\n content: \"•\";\n }\n }\n }\n }\n\n .button-default.dropdown-item {\n &,\n i[class*=\"icon-\"] {\n color: $fallback--text;\n color: var(--btnText, $fallback--text);\n }\n\n &:active {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenuPopover, $fallback--lightBg);\n color: $fallback--link;\n color: var(--selectedMenuPopoverText, $fallback--link);\n }\n\n &:disabled {\n color: $fallback--text;\n color: var(--btnDisabledText, $fallback--text);\n }\n\n &.toggled {\n color: $fallback--text;\n color: var(--btnToggledText, $fallback--text);\n }\n }\n}\n</style>\n","<template>\n <div\n ref=\"form\"\n class=\"post-status-form\"\n >\n <form\n autocomplete=\"off\"\n @submit.prevent\n @dragover.prevent=\"fileDrag\"\n >\n <div class=\"form-group\">\n <i18n-t\n v-if=\"!$store.state.users.currentUser.locked && newStatus.visibility == 'private' && !disableLockWarning\"\n keypath=\"post_status.account_not_locked_warning\"\n tag=\"p\"\n class=\"visibility-notice\"\n scope=\"global\"\n >\n <button\n class=\"button-unstyled -link\"\n @click=\"openProfileTab\"\n >\n {{ $t('post_status.account_not_locked_warning_link') }}\n </button>\n </i18n-t>\n <p\n v-if=\"!hideScopeNotice && newStatus.visibility === 'public'\"\n class=\"visibility-notice notice-dismissible\"\n >\n <span>{{ $t('post_status.scope_notice.public') }}</span>\n <a\n class=\"fa-scale-110 fa-old-padding dismiss\"\n :title=\"$t('post_status.scope_notice_dismiss')\"\n role=\"button\"\n tabindex=\"0\"\n @click.prevent=\"dismissScopeNotice()\"\n >\n <FAIcon icon=\"times\" />\n </a>\n </p>\n <p\n v-else-if=\"!hideScopeNotice && newStatus.visibility === 'unlisted'\"\n class=\"visibility-notice notice-dismissible\"\n >\n <span>{{ $t('post_status.scope_notice.unlisted') }}</span>\n <a\n class=\"fa-scale-110 fa-old-padding dismiss\"\n :title=\"$t('post_status.scope_notice_dismiss')\"\n role=\"button\"\n tabindex=\"0\"\n @click.prevent=\"dismissScopeNotice()\"\n >\n <FAIcon icon=\"times\" />\n </a>\n </p>\n <p\n v-else-if=\"!hideScopeNotice && newStatus.visibility === 'private' && $store.state.users.currentUser.locked\"\n class=\"visibility-notice notice-dismissible\"\n >\n <span>{{ $t('post_status.scope_notice.private') }}</span>\n <a\n class=\"fa-scale-110 fa-old-padding dismiss\"\n :title=\"$t('post_status.scope_notice_dismiss')\"\n role=\"button\"\n tabindex=\"0\"\n @click.prevent=\"dismissScopeNotice()\"\n >\n <FAIcon icon=\"times\" />\n </a>\n </p>\n <p\n v-else-if=\"newStatus.visibility === 'direct'\"\n class=\"visibility-notice\"\n >\n <span v-if=\"safeDMEnabled\">{{ $t('post_status.direct_warning_to_first_only') }}</span>\n <span v-else>{{ $t('post_status.direct_warning_to_all') }}</span>\n </p>\n <div\n v-if=\"isEdit\"\n class=\"visibility-notice edit-warning\"\n >\n <p>{{ $t('post_status.edit_remote_warning') }}</p>\n <p>{{ $t('post_status.edit_unsupported_warning') }}</p>\n </div>\n <div\n v-if=\"!disablePreview\"\n class=\"preview-heading faint\"\n >\n <a\n class=\"preview-toggle faint\"\n @click.stop.prevent=\"togglePreview\"\n >\n {{ $t('post_status.preview') }}\n <FAIcon :icon=\"showPreview ? 'chevron-left' : 'chevron-right'\" />\n </a>\n <div\n v-show=\"previewLoading\"\n class=\"preview-spinner\"\n >\n <FAIcon\n class=\"fa-old-padding\"\n spin\n icon=\"circle-notch\"\n />\n </div>\n </div>\n <div\n v-if=\"showPreview\"\n class=\"preview-container\"\n >\n <div\n v-if=\"!preview\"\n class=\"preview-status\"\n >\n {{ $t('general.loading') }}\n </div>\n <div\n v-else-if=\"preview.error\"\n class=\"preview-status preview-error\"\n >\n {{ preview.error }}\n </div>\n <StatusContent\n v-else\n :status=\"preview\"\n class=\"preview-status\"\n />\n </div>\n <EmojiInput\n v-if=\"!disableSubject && (newStatus.spoilerText || alwaysShowSubject)\"\n v-model=\"newStatus.spoilerText\"\n enable-emoji-picker\n :suggest=\"emojiSuggestor\"\n class=\"form-control\"\n >\n <template #default=\"inputProps\">\n <input\n v-model=\"newStatus.spoilerText\"\n type=\"text\"\n :placeholder=\"$t('post_status.content_warning')\"\n :disabled=\"posting && !optimisticPosting\"\n v-bind=\"propsToNative(inputProps)\"\n size=\"1\"\n class=\"form-post-subject\"\n >\n </template>\n </EmojiInput>\n <EmojiInput\n ref=\"emoji-input\"\n v-model=\"newStatus.status\"\n :suggest=\"emojiUserSuggestor\"\n :placement=\"emojiPickerPlacement\"\n class=\"form-control main-input\"\n enable-emoji-picker\n hide-emoji-button\n :newline-on-ctrl-enter=\"submitOnEnter\"\n enable-sticker-picker\n @input=\"onEmojiInputInput\"\n @sticker-uploaded=\"addMediaFile\"\n @sticker-upload-failed=\"uploadFailed\"\n @shown=\"handleEmojiInputShow\"\n >\n <template #default=\"inputProps\">\n <textarea\n ref=\"textarea\"\n v-model=\"newStatus.status\"\n :placeholder=\"placeholder || $t('post_status.default')\"\n rows=\"1\"\n cols=\"1\"\n :disabled=\"posting && !optimisticPosting\"\n class=\"form-post-body\"\n :class=\"{ 'scrollable-form': !!maxHeight }\"\n v-bind=\"propsToNative(inputProps)\"\n @keydown.exact.enter=\"submitOnEnter && postStatus($event, newStatus)\"\n @keydown.meta.enter=\"postStatus($event, newStatus)\"\n @keydown.ctrl.enter=\"!submitOnEnter && postStatus($event, newStatus)\"\n @input=\"resize\"\n @compositionupdate=\"resize\"\n @paste=\"paste\"\n />\n <p\n v-if=\"hasStatusLengthLimit\"\n class=\"character-counter faint\"\n :class=\"{ error: isOverLengthLimit }\"\n >\n {{ charactersLeft }}\n </p>\n </template>\n </EmojiInput>\n <div\n v-if=\"!disableScopeSelector\"\n class=\"visibility-tray\"\n >\n <scope-selector\n v-if=\"!disableVisibilitySelector\"\n :show-all=\"showAllScopes\"\n :user-default=\"userDefaultScope\"\n :original-scope=\"copyMessageScope\"\n :initial-scope=\"newStatus.visibility\"\n :on-scope-change=\"changeVis\"\n />\n\n <div\n v-if=\"postFormats.length > 1\"\n class=\"text-format\"\n >\n <Select\n id=\"post-content-type\"\n v-model=\"newStatus.contentType\"\n class=\"form-control\"\n :attrs=\"{ 'aria-label': $t('post_status.content_type_selection') }\"\n >\n <option\n v-for=\"postFormat in postFormats\"\n :key=\"postFormat\"\n :value=\"postFormat\"\n >\n {{ $t(`post_status.content_type[\"${postFormat}\"]`) }}\n </option>\n </Select>\n </div>\n <div\n v-if=\"postFormats.length === 1 && postFormats[0] !== 'text/plain'\"\n class=\"text-format\"\n >\n <span class=\"only-format\">\n {{ $t(`post_status.content_type[\"${postFormats[0]}\"]`) }}\n </span>\n </div>\n </div>\n </div>\n <poll-form\n v-if=\"pollsAvailable\"\n ref=\"pollForm\"\n :visible=\"pollFormVisible\"\n @update-poll=\"setPoll\"\n />\n <div\n ref=\"bottom\"\n class=\"form-bottom\"\n >\n <div class=\"form-bottom-left\">\n <media-upload\n ref=\"mediaUpload\"\n class=\"media-upload-icon\"\n :drop-files=\"dropFiles\"\n :disabled=\"uploadFileLimitReached\"\n @uploading=\"startedUploadingFiles\"\n @uploaded=\"addMediaFile\"\n @upload-failed=\"uploadFailed\"\n @all-uploaded=\"finishedUploadingFiles\"\n />\n <button\n class=\"emoji-icon button-unstyled\"\n :title=\"$t('emoji.add_emoji')\"\n @click=\"showEmojiPicker\"\n >\n <FAIcon icon=\"smile-beam\" />\n </button>\n <button\n v-if=\"pollsAvailable\"\n class=\"poll-icon button-unstyled\"\n :class=\"{ selected: pollFormVisible }\"\n :title=\"$t('polls.add_poll')\"\n @click=\"togglePollForm\"\n >\n <FAIcon icon=\"poll-h\" />\n </button>\n </div>\n <button\n v-if=\"posting\"\n disabled\n class=\"btn button-default\"\n >\n {{ $t('post_status.posting') }}\n </button>\n <button\n v-else-if=\"isOverLengthLimit\"\n disabled\n class=\"btn button-default\"\n >\n {{ $t('post_status.post') }}\n </button>\n <!-- touchstart is used to keep the OSK at the same position after a message send -->\n <button\n v-else\n :disabled=\"uploadingFiles || disableSubmit\"\n class=\"btn button-default\"\n @touchstart.stop.prevent=\"postStatus($event, newStatus)\"\n @click.stop.prevent=\"postStatus($event, newStatus)\"\n >\n {{ $t('post_status.post') }}\n </button>\n </div>\n <div\n v-show=\"showDropIcon !== 'hide'\"\n :style=\"{ animation: showDropIcon === 'show' ? 'fade-in 0.25s' : 'fade-out 0.5s' }\"\n class=\"drop-indicator\"\n @dragleave=\"fileDragStop\"\n @drop.stop=\"fileDrop\"\n >\n <FAIcon :icon=\"uploadFileLimitReached ? 'ban' : 'upload'\" />\n </div>\n <div\n v-if=\"error\"\n class=\"alert error\"\n >\n Error: {{ error }}\n <button\n class=\"button-unstyled\"\n @click=\"clearError\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n />\n </button>\n </div>\n <gallery\n v-if=\"newStatus.files && newStatus.files.length > 0\"\n class=\"attachments\"\n :grid=\"true\"\n :nsfw=\"false\"\n :attachments=\"newStatus.files\"\n :descriptions=\"newStatus.mediaDescriptions\"\n :set-media=\"() => $store.dispatch('setMedia', newStatus.files)\"\n :editable=\"true\"\n :edit-attachment=\"editAttachment\"\n :remove-attachment=\"removeMediaFile\"\n :shift-up-attachment=\"newStatus.files.length > 1 && shiftUpMediaFile\"\n :shift-dn-attachment=\"newStatus.files.length > 1 && shiftDnMediaFile\"\n @play=\"$emit('mediaplay', attachment.id)\"\n @pause=\"$emit('mediapause', attachment.id)\"\n />\n <div\n v-if=\"newStatus.files.length > 0 && !disableSensitivityCheckbox\"\n class=\"upload_settings\"\n >\n <Checkbox v-model=\"newStatus.nsfw\">\n {{ $t('post_status.attachments_sensitive') }}\n </Checkbox>\n </div>\n </form>\n </div>\n</template>\n\n<script src=\"./post_status_form.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.post-status-form {\n position: relative;\n\n .attachments {\n margin-bottom: 0.5em;\n }\n\n .form-bottom {\n display: flex;\n justify-content: space-between;\n padding: 0.5em;\n height: 2.5em;\n\n button {\n width: 10em;\n }\n\n p {\n margin: 0.35em;\n padding: 0.35em;\n display: flex;\n }\n }\n\n .form-bottom-left {\n display: flex;\n flex: 1;\n padding-right: 7px;\n margin-right: 7px;\n max-width: 10em;\n }\n\n .preview-heading {\n display: flex;\n padding-left: 0.5em;\n }\n\n .preview-toggle {\n flex: 1;\n cursor: pointer;\n user-select: none;\n\n &:hover {\n text-decoration: underline;\n }\n\n svg,\n i {\n margin-left: 0.2em;\n font-size: 0.8em;\n transform: rotate(90deg);\n }\n }\n\n .preview-container {\n margin-bottom: 1em;\n }\n\n .preview-error {\n font-style: italic;\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n }\n\n .preview-status {\n border: 1px solid $fallback--border;\n border: 1px solid var(--border, $fallback--border);\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n padding: 0.5em;\n margin: 0;\n }\n\n .text-format {\n .only-format {\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n }\n }\n\n .visibility-tray {\n display: flex;\n justify-content: space-between;\n padding-top: 5px;\n align-items: baseline;\n }\n\n .visibility-notice.edit-warning {\n > :first-child {\n margin-top: 0;\n }\n\n > :last-child {\n margin-bottom: 0;\n }\n }\n\n // Order is not necessary but a good indicator\n .media-upload-icon {\n order: 1;\n justify-content: left;\n }\n\n .emoji-icon {\n order: 2;\n justify-content: center;\n }\n\n .poll-icon {\n order: 3;\n justify-content: right;\n }\n\n .media-upload-icon,\n .poll-icon,\n .emoji-icon {\n font-size: 1.85em;\n line-height: 1.1;\n flex: 1;\n padding: 0 0.1em;\n display: flex;\n align-items: center;\n\n &.selected,\n &:hover {\n // needs to be specific to override icon default color\n svg,\n i,\n label {\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n }\n\n &.disabled {\n svg,\n i {\n cursor: not-allowed;\n color: $fallback--icon;\n color: var(--btnDisabledText, $fallback--icon);\n\n &:hover {\n color: $fallback--icon;\n color: var(--btnDisabledText, $fallback--icon);\n }\n }\n }\n }\n\n .error {\n text-align: center;\n }\n\n .media-upload-wrapper {\n margin-right: 0.2em;\n margin-bottom: 0.5em;\n width: 18em;\n\n img,\n video {\n object-fit: contain;\n max-height: 10em;\n }\n\n .video {\n max-height: 10em;\n }\n\n input {\n flex: 1;\n width: 100%;\n }\n }\n\n .status-input-wrapper {\n display: flex;\n position: relative;\n width: 100%;\n flex-direction: column;\n }\n\n .btn[disabled] {\n cursor: not-allowed;\n }\n\n form {\n display: flex;\n flex-direction: column;\n margin: 0.6em;\n position: relative;\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n padding: 0.25em 0.5em 0.5em;\n line-height: 1.85;\n }\n\n .form-post-body {\n // TODO: make a resizable textarea component?\n box-sizing: content-box; // needed for easier computation of dynamic size\n overflow: hidden;\n transition: min-height 200ms 100ms;\n // stock padding + 1 line of text (for counter)\n padding-bottom: calc(var(--_padding) + var(--post-line-height) * 1em);\n // two lines of text\n height: calc(var(--post-line-height) * 1em);\n min-height: calc(var(--post-line-height) * 1em);\n resize: none;\n\n &.scrollable-form {\n overflow-y: auto;\n }\n }\n\n .main-input {\n position: relative;\n }\n\n .character-counter {\n position: absolute;\n bottom: 0;\n right: 0;\n padding: 0;\n margin: 0 0.5em;\n\n &.error {\n color: $fallback--cRed;\n color: var(--cRed, $fallback--cRed);\n }\n }\n\n @keyframes fade-in {\n from { opacity: 0; }\n to { opacity: 0.6; }\n }\n\n @keyframes fade-out {\n from { opacity: 0.6; }\n to { opacity: 0; }\n }\n\n .drop-indicator {\n position: absolute;\n width: 100%;\n height: 100%;\n font-size: 5em;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0.6;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n border: 2px dashed $fallback--text;\n border: 2px dashed var(--text, $fallback--text);\n }\n}\n</style>\n","/* eslint-env browser */\nimport statusPosterService from '../../services/status_poster/status_poster.service.js'\nimport fileSizeFormatService from '../../services/file_size_format/file_size_format.js'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faUpload, faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faUpload,\n faCircleNotch\n)\n\nconst mediaUpload = {\n data () {\n return {\n uploadCount: 0,\n uploadReady: true\n }\n },\n computed: {\n uploading () {\n return this.uploadCount > 0\n }\n },\n methods: {\n uploadFile (file) {\n const self = this\n const store = this.$store\n if (file.size > store.state.instance.uploadlimit) {\n const filesize = fileSizeFormatService.fileSizeFormat(file.size)\n const allowedsize = fileSizeFormatService.fileSizeFormat(store.state.instance.uploadlimit)\n self.$emit('upload-failed', 'file_too_big', { filesize: filesize.num, filesizeunit: filesize.unit, allowedsize: allowedsize.num, allowedsizeunit: allowedsize.unit })\n return\n }\n const formData = new FormData()\n formData.append('file', file)\n\n self.$emit('uploading')\n self.uploadCount++\n\n statusPosterService.uploadMedia({ store, formData })\n .then((fileData) => {\n self.$emit('uploaded', fileData)\n self.decreaseUploadCount()\n }, (error) => {\n console.error('Error uploading file', error)\n self.$emit('upload-failed', 'default')\n self.decreaseUploadCount()\n })\n },\n decreaseUploadCount () {\n this.uploadCount--\n if (this.uploadCount === 0) {\n this.$emit('all-uploaded')\n }\n },\n clearFile () {\n this.uploadReady = false\n this.$nextTick(() => {\n this.uploadReady = true\n })\n },\n multiUpload (files) {\n for (const file of files) {\n this.uploadFile(file)\n }\n },\n change ({ target }) {\n this.multiUpload(target.files)\n }\n },\n props: [\n 'dropFiles',\n 'disabled'\n ],\n watch: {\n dropFiles: function (fileInfos) {\n if (!this.uploading) {\n this.multiUpload(fileInfos)\n }\n }\n }\n}\n\nexport default mediaUpload\n","import { render } from \"./media_upload.vue?vue&type=template&id=6bb23d2c\"\nimport script from \"./media_upload.js?vue&type=script&lang=js\"\nexport * from \"./media_upload.js?vue&type=script&lang=js\"\n\nimport \"./media_upload.vue?vue&type=style&index=0&id=6bb23d2c&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <label\n class=\"media-upload\"\n :class=\"{ disabled: disabled }\"\n :title=\"$t('tool_tip.media_upload')\"\n >\n <FAIcon\n v-if=\"uploading\"\n class=\"progress-icon\"\n icon=\"circle-notch\"\n spin\n />\n <FAIcon\n v-if=\"!uploading\"\n class=\"new-icon\"\n icon=\"upload\"\n />\n <input\n v-if=\"uploadReady\"\n class=\"hidden-input-file\"\n :disabled=\"disabled\"\n type=\"file\"\n multiple=\"true\"\n @change=\"change\"\n >\n </label>\n</template>\n\n<script src=\"./media_upload.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.media-upload {\n cursor: pointer; // We use <label> for interactivity... i wonder if it's fine\n\n .hidden-input-file {\n display: none;\n }\n}\n </style>\n","<template>\n <div\n v-if=\"visible\"\n class=\"poll-form\"\n >\n <div\n v-for=\"(option, index) in options\"\n :key=\"index\"\n class=\"poll-option\"\n >\n <div class=\"input-container\">\n <input\n :id=\"`poll-${index}`\"\n v-model=\"options[index]\"\n size=\"1\"\n class=\"poll-option-input\"\n type=\"text\"\n :placeholder=\"$t('polls.option')\"\n :maxlength=\"maxLength\"\n @change=\"updatePollToParent\"\n @keydown.enter.stop.prevent=\"nextOption(index)\"\n >\n </div>\n <button\n v-if=\"options.length > 2\"\n class=\"delete-option button-unstyled -hover-highlight\"\n @click=\"deleteOption(index)\"\n >\n <FAIcon icon=\"times\" />\n </button>\n </div>\n <button\n v-if=\"options.length < maxOptions\"\n class=\"add-option faint button-unstyled -hover-highlight\"\n @click=\"addOption\"\n >\n <FAIcon\n icon=\"plus\"\n size=\"sm\"\n />\n\n {{ $t(\"polls.add_option\") }}\n </button>\n <div class=\"poll-type-expiry\">\n <div\n class=\"poll-type\"\n :title=\"$t('polls.type')\"\n >\n <Select\n v-model=\"pollType\"\n class=\"poll-type-select\"\n unstyled=\"true\"\n @change=\"updatePollToParent\"\n >\n <option value=\"single\">\n {{ $t('polls.single_choice') }}\n </option>\n <option value=\"multiple\">\n {{ $t('polls.multiple_choices') }}\n </option>\n </Select>\n </div>\n <div\n class=\"poll-expiry\"\n :title=\"$t('polls.expiry')\"\n >\n <input\n v-model=\"expiryAmount\"\n type=\"number\"\n class=\"expiry-amount hide-number-spinner\"\n :min=\"minExpirationInCurrentUnit\"\n :max=\"maxExpirationInCurrentUnit\"\n @change=\"expiryAmountChange\"\n >\n {{ ' ' }}\n <Select\n v-model=\"expiryUnit\"\n unstyled=\"true\"\n class=\"expiry-unit\"\n @change=\"expiryAmountChange\"\n >\n <option\n v-for=\"unit in expiryUnits\"\n :key=\"unit\"\n :value=\"unit\"\n >\n {{ $tc(`time.unit.${unit}_short`, expiryAmount, ['']) }}\n </option>\n </Select>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./poll_form.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.poll-form {\n display: flex;\n flex-direction: column;\n padding: 0 0.5em 0.5em;\n\n .add-option {\n align-self: flex-start;\n padding-top: 0.25em;\n padding-left: 0.1em;\n }\n\n .poll-option {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n margin-bottom: 0.25em;\n }\n\n .input-container {\n width: 100%;\n\n input {\n // Hack: dodge the floating X icon\n padding-right: 2.5em;\n width: 100%;\n }\n }\n\n .delete-option {\n // Hack: Move the icon over the input box\n width: 1.5em;\n margin-left: -1.5em;\n z-index: 1;\n }\n\n .poll-type-expiry {\n margin-top: 0.5em;\n display: flex;\n width: 100%;\n }\n\n .poll-type {\n margin-right: 0.75em;\n flex: 1 1 60%;\n\n .poll-type-select {\n padding-right: 0.75em;\n }\n }\n\n .poll-expiry {\n display: flex;\n\n .expiry-amount {\n width: 3em;\n text-align: right;\n }\n }\n}\n</style>\n","import * as DateUtils from 'src/services/date_utils/date_utils.js'\nimport { uniq } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport Select from '../select/select.vue'\nimport {\n faTimes,\n faPlus\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes,\n faPlus\n)\n\nexport default {\n components: {\n Select\n },\n name: 'PollForm',\n props: ['visible'],\n data: () => ({\n pollType: 'single',\n options: ['', ''],\n expiryAmount: 10,\n expiryUnit: 'minutes'\n }),\n computed: {\n pollLimits () {\n return this.$store.state.instance.pollLimits\n },\n maxOptions () {\n return this.pollLimits.max_options\n },\n maxLength () {\n return this.pollLimits.max_option_chars\n },\n expiryUnits () {\n const allUnits = ['minutes', 'hours', 'days']\n const expiry = this.convertExpiryFromUnit\n return allUnits.filter(\n unit => this.pollLimits.max_expiration >= expiry(unit, 1)\n )\n },\n minExpirationInCurrentUnit () {\n return Math.ceil(\n this.convertExpiryToUnit(\n this.expiryUnit,\n this.pollLimits.min_expiration\n )\n )\n },\n maxExpirationInCurrentUnit () {\n return Math.floor(\n this.convertExpiryToUnit(\n this.expiryUnit,\n this.pollLimits.max_expiration\n )\n )\n }\n },\n methods: {\n clear () {\n this.pollType = 'single'\n this.options = ['', '']\n this.expiryAmount = 10\n this.expiryUnit = 'minutes'\n },\n nextOption (index) {\n const element = this.$el.querySelector(`#poll-${index + 1}`)\n if (element) {\n element.focus()\n } else {\n // Try adding an option and try focusing on it\n const addedOption = this.addOption()\n if (addedOption) {\n this.$nextTick(function () {\n this.nextOption(index)\n })\n }\n }\n },\n addOption () {\n if (this.options.length < this.maxOptions) {\n this.options.push('')\n return true\n }\n return false\n },\n deleteOption (index, event) {\n if (this.options.length > 2) {\n this.options.splice(index, 1)\n this.updatePollToParent()\n }\n },\n convertExpiryToUnit (unit, amount) {\n // Note: we want seconds and not milliseconds\n return DateUtils.secondsToUnit(unit, amount)\n },\n convertExpiryFromUnit (unit, amount) {\n return DateUtils.unitToSeconds(unit, amount)\n },\n expiryAmountChange () {\n this.expiryAmount =\n Math.max(this.minExpirationInCurrentUnit, this.expiryAmount)\n this.expiryAmount =\n Math.min(this.maxExpirationInCurrentUnit, this.expiryAmount)\n this.updatePollToParent()\n },\n updatePollToParent () {\n const expiresIn = this.convertExpiryFromUnit(\n this.expiryUnit,\n this.expiryAmount\n )\n\n const options = uniq(this.options.filter(option => option !== ''))\n if (options.length < 2) {\n this.$emit('update-poll', { error: this.$t('polls.not_enough_options') })\n return\n }\n this.$emit('update-poll', {\n options,\n multiple: this.pollType === 'multiple',\n expiresIn\n })\n }\n }\n}\n","import { render } from \"./poll_form.vue?vue&type=template&id=24ea52c8\"\nimport script from \"./poll_form.js?vue&type=script&lang=js\"\nexport * from \"./poll_form.js?vue&type=script&lang=js\"\n\nimport \"./poll_form.vue?vue&type=style&index=0&id=24ea52c8&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import statusPoster from '../../services/status_poster/status_poster.service.js'\nimport MediaUpload from '../media_upload/media_upload.vue'\nimport ScopeSelector from '../scope_selector/scope_selector.vue'\nimport EmojiInput from '../emoji_input/emoji_input.vue'\nimport PollForm from '../poll/poll_form.vue'\nimport Attachment from '../attachment/attachment.vue'\nimport Gallery from 'src/components/gallery/gallery.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport { findOffset } from '../../services/offset_finder/offset_finder.service.js'\nimport { propsToNative } from '../../services/attributes_helper/attributes_helper.service.js'\nimport { reject, map, uniqBy, debounce } from 'lodash'\nimport suggestor from '../emoji_input/suggestor.js'\nimport { mapGetters, mapState } from 'vuex'\nimport Checkbox from '../checkbox/checkbox.vue'\nimport Select from '../select/select.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSmileBeam,\n faPollH,\n faUpload,\n faBan,\n faTimes,\n faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faSmileBeam,\n faPollH,\n faUpload,\n faBan,\n faTimes,\n faCircleNotch\n)\n\nconst buildMentionsString = ({ user, attentions = [] }, currentUser) => {\n let allAttentions = [...attentions]\n\n allAttentions.unshift(user)\n\n allAttentions = uniqBy(allAttentions, 'id')\n allAttentions = reject(allAttentions, { id: currentUser.id })\n\n const mentions = map(allAttentions, (attention) => {\n return `@${attention.screen_name}`\n })\n\n return mentions.length > 0 ? mentions.join(' ') + ' ' : ''\n}\n\n// Converts a string with px to a number like '2px' -> 2\nconst pxStringToNumber = (str) => {\n return Number(str.substring(0, str.length - 2))\n}\n\nconst PostStatusForm = {\n props: [\n 'statusId',\n 'statusText',\n 'statusIsSensitive',\n 'statusPoll',\n 'statusFiles',\n 'statusMediaDescriptions',\n 'statusScope',\n 'statusContentType',\n 'replyTo',\n 'repliedUser',\n 'attentions',\n 'copyMessageScope',\n 'subject',\n 'disableSubject',\n 'disableScopeSelector',\n 'disableVisibilitySelector',\n 'disableNotice',\n 'disableLockWarning',\n 'disablePolls',\n 'disableSensitivityCheckbox',\n 'disableSubmit',\n 'disablePreview',\n 'placeholder',\n 'maxHeight',\n 'postHandler',\n 'preserveFocus',\n 'autoFocus',\n 'fileLimit',\n 'submitOnEnter',\n 'emojiPickerPlacement',\n 'optimisticPosting'\n ],\n emits: [\n 'posted',\n 'resize',\n 'mediaplay',\n 'mediapause'\n ],\n components: {\n MediaUpload,\n EmojiInput,\n PollForm,\n ScopeSelector,\n Checkbox,\n Select,\n Attachment,\n StatusContent,\n Gallery\n },\n mounted () {\n this.updateIdempotencyKey()\n this.resize(this.$refs.textarea)\n\n if (this.replyTo) {\n const textLength = this.$refs.textarea.value.length\n this.$refs.textarea.setSelectionRange(textLength, textLength)\n }\n\n if (this.replyTo || this.autoFocus) {\n this.$refs.textarea.focus()\n }\n },\n data () {\n const preset = this.$route.query.message\n let statusText = preset || ''\n\n const { scopeCopy } = this.$store.getters.mergedConfig\n\n if (this.replyTo) {\n const currentUser = this.$store.state.users.currentUser\n statusText = buildMentionsString({ user: this.repliedUser, attentions: this.attentions }, currentUser)\n }\n\n const scope = ((this.copyMessageScope && scopeCopy) || this.copyMessageScope === 'direct')\n ? this.copyMessageScope\n : this.$store.state.users.currentUser.default_scope\n\n const { postContentType: contentType, sensitiveByDefault } = this.$store.getters.mergedConfig\n\n let statusParams = {\n spoilerText: this.subject || '',\n status: statusText,\n nsfw: !!sensitiveByDefault,\n files: [],\n poll: {},\n mediaDescriptions: {},\n visibility: scope,\n contentType\n }\n\n if (this.statusId) {\n const statusContentType = this.statusContentType || contentType\n statusParams = {\n spoilerText: this.subject || '',\n status: this.statusText || '',\n nsfw: this.statusIsSensitive || !!sensitiveByDefault,\n files: this.statusFiles || [],\n poll: this.statusPoll || {},\n mediaDescriptions: this.statusMediaDescriptions || {},\n visibility: this.statusScope || scope,\n contentType: statusContentType\n }\n }\n\n return {\n dropFiles: [],\n uploadingFiles: false,\n error: null,\n posting: false,\n highlighted: 0,\n newStatus: statusParams,\n caret: 0,\n pollFormVisible: false,\n showDropIcon: 'hide',\n dropStopTimeout: null,\n preview: null,\n previewLoading: false,\n emojiInputShown: false,\n idempotencyKey: ''\n }\n },\n computed: {\n users () {\n return this.$store.state.users.users\n },\n userDefaultScope () {\n return this.$store.state.users.currentUser.default_scope\n },\n showAllScopes () {\n return !this.mergedConfig.minimalScopesMode\n },\n emojiUserSuggestor () {\n return suggestor({\n emoji: [\n ...this.$store.getters.standardEmojiList,\n ...this.$store.state.instance.customEmoji\n ],\n store: this.$store\n })\n },\n emojiSuggestor () {\n return suggestor({\n emoji: [\n ...this.$store.getters.standardEmojiList,\n ...this.$store.state.instance.customEmoji\n ]\n })\n },\n emoji () {\n return this.$store.getters.standardEmojiList || []\n },\n customEmoji () {\n return this.$store.state.instance.customEmoji || []\n },\n statusLength () {\n return this.newStatus.status.length\n },\n spoilerTextLength () {\n return this.newStatus.spoilerText.length\n },\n statusLengthLimit () {\n return this.$store.state.instance.textlimit\n },\n hasStatusLengthLimit () {\n return this.statusLengthLimit > 0\n },\n charactersLeft () {\n return this.statusLengthLimit - (this.statusLength + this.spoilerTextLength)\n },\n isOverLengthLimit () {\n return this.hasStatusLengthLimit && (this.charactersLeft < 0)\n },\n minimalScopesMode () {\n return this.$store.state.instance.minimalScopesMode\n },\n alwaysShowSubject () {\n return this.mergedConfig.alwaysShowSubjectInput\n },\n postFormats () {\n return this.$store.state.instance.postFormats || []\n },\n safeDMEnabled () {\n return this.$store.state.instance.safeDM\n },\n pollsAvailable () {\n return this.$store.state.instance.pollsAvailable &&\n this.$store.state.instance.pollLimits.max_options >= 2 &&\n this.disablePolls !== true\n },\n hideScopeNotice () {\n return this.disableNotice || this.$store.getters.mergedConfig.hideScopeNotice\n },\n pollContentError () {\n return this.pollFormVisible &&\n this.newStatus.poll &&\n this.newStatus.poll.error\n },\n showPreview () {\n return !this.disablePreview && (!!this.preview || this.previewLoading)\n },\n emptyStatus () {\n return this.newStatus.status.trim() === '' && this.newStatus.files.length === 0\n },\n uploadFileLimitReached () {\n return this.newStatus.files.length >= this.fileLimit\n },\n isEdit () {\n return typeof this.statusId !== 'undefined' && this.statusId.trim() !== ''\n },\n ...mapGetters(['mergedConfig']),\n ...mapState({\n mobileLayout: state => state.interface.mobileLayout\n })\n },\n watch: {\n newStatus: {\n deep: true,\n handler () {\n this.statusChanged()\n }\n }\n },\n methods: {\n statusChanged () {\n this.autoPreview()\n this.updateIdempotencyKey()\n },\n clearStatus () {\n const newStatus = this.newStatus\n this.newStatus = {\n status: '',\n spoilerText: '',\n files: [],\n visibility: newStatus.visibility,\n contentType: newStatus.contentType,\n poll: {},\n mediaDescriptions: {}\n }\n this.pollFormVisible = false\n this.$refs.mediaUpload && this.$refs.mediaUpload.clearFile()\n this.clearPollForm()\n if (this.preserveFocus) {\n this.$nextTick(() => {\n this.$refs.textarea.focus()\n })\n }\n const el = this.$el.querySelector('textarea')\n el.style.height = 'auto'\n el.style.height = undefined\n this.error = null\n if (this.preview) this.previewStatus()\n },\n async postStatus (event, newStatus, opts = {}) {\n if (this.posting && !this.optimisticPosting) { return }\n if (this.disableSubmit) { return }\n if (this.emojiInputShown) { return }\n if (this.submitOnEnter) {\n event.stopPropagation()\n event.preventDefault()\n }\n\n if (this.optimisticPosting && (this.emptyStatus || this.isOverLengthLimit)) { return }\n\n if (this.emptyStatus) {\n this.error = this.$t('post_status.empty_status_error')\n return\n }\n\n const poll = this.pollFormVisible ? this.newStatus.poll : {}\n if (this.pollContentError) {\n this.error = this.pollContentError\n return\n }\n\n this.posting = true\n\n try {\n await this.setAllMediaDescriptions()\n } catch (e) {\n this.error = this.$t('post_status.media_description_error')\n this.posting = false\n return\n }\n\n const postingOptions = {\n status: newStatus.status,\n spoilerText: newStatus.spoilerText || null,\n visibility: newStatus.visibility,\n sensitive: newStatus.nsfw,\n media: newStatus.files,\n store: this.$store,\n inReplyToStatusId: this.replyTo,\n contentType: newStatus.contentType,\n poll,\n idempotencyKey: this.idempotencyKey\n }\n\n const postHandler = this.postHandler ? this.postHandler : statusPoster.postStatus\n\n postHandler(postingOptions).then((data) => {\n if (!data.error) {\n this.clearStatus()\n this.$emit('posted', data)\n } else {\n this.error = data.error\n }\n this.posting = false\n })\n },\n previewStatus () {\n if (this.emptyStatus && this.newStatus.spoilerText.trim() === '') {\n this.preview = { error: this.$t('post_status.preview_empty') }\n this.previewLoading = false\n return\n }\n const newStatus = this.newStatus\n this.previewLoading = true\n statusPoster.postStatus({\n status: newStatus.status,\n spoilerText: newStatus.spoilerText || null,\n visibility: newStatus.visibility,\n sensitive: newStatus.nsfw,\n media: [],\n store: this.$store,\n inReplyToStatusId: this.replyTo,\n contentType: newStatus.contentType,\n poll: {},\n preview: true\n }).then((data) => {\n // Don't apply preview if not loading, because it means\n // user has closed the preview manually.\n if (!this.previewLoading) return\n if (!data.error) {\n this.preview = data\n } else {\n this.preview = { error: data.error }\n }\n }).catch((error) => {\n this.preview = { error }\n }).finally(() => {\n this.previewLoading = false\n })\n },\n debouncePreviewStatus: debounce(function () { this.previewStatus() }, 500),\n autoPreview () {\n if (!this.preview) return\n this.previewLoading = true\n this.debouncePreviewStatus()\n },\n closePreview () {\n this.preview = null\n this.previewLoading = false\n },\n togglePreview () {\n if (this.showPreview) {\n this.closePreview()\n } else {\n this.previewStatus()\n }\n },\n addMediaFile (fileInfo) {\n this.newStatus.files.push(fileInfo)\n this.$emit('resize', { delayed: true })\n },\n removeMediaFile (fileInfo) {\n const index = this.newStatus.files.indexOf(fileInfo)\n this.newStatus.files.splice(index, 1)\n this.$emit('resize')\n },\n editAttachment (fileInfo, newText) {\n this.newStatus.mediaDescriptions[fileInfo.id] = newText\n },\n shiftUpMediaFile (fileInfo) {\n const { files } = this.newStatus\n const index = this.newStatus.files.indexOf(fileInfo)\n files.splice(index, 1)\n files.splice(index - 1, 0, fileInfo)\n },\n shiftDnMediaFile (fileInfo) {\n const { files } = this.newStatus\n const index = this.newStatus.files.indexOf(fileInfo)\n files.splice(index, 1)\n files.splice(index + 1, 0, fileInfo)\n },\n uploadFailed (errString, templateArgs) {\n templateArgs = templateArgs || {}\n this.error = this.$t('upload.error.base') + ' ' + this.$t('upload.error.' + errString, templateArgs)\n },\n startedUploadingFiles () {\n this.uploadingFiles = true\n },\n finishedUploadingFiles () {\n this.$emit('resize')\n this.uploadingFiles = false\n },\n type (fileInfo) {\n return fileTypeService.fileType(fileInfo.mimetype)\n },\n paste (e) {\n this.autoPreview()\n this.resize(e)\n if (e.clipboardData.files.length > 0) {\n // prevent pasting of file as text\n e.preventDefault()\n // Strangely, files property gets emptied after event propagation\n // Trying to wrap it in array doesn't work. Plus I doubt it's possible\n // to hold more than one file in clipboard.\n this.dropFiles = [e.clipboardData.files[0]]\n }\n },\n fileDrop (e) {\n if (e.dataTransfer && e.dataTransfer.types.includes('Files')) {\n e.preventDefault() // allow dropping text like before\n this.dropFiles = e.dataTransfer.files\n clearTimeout(this.dropStopTimeout)\n this.showDropIcon = 'hide'\n }\n },\n fileDragStop (e) {\n // The false-setting is done with delay because just using leave-events\n // directly caused unwanted flickering, this is not perfect either but\n // much less noticable.\n clearTimeout(this.dropStopTimeout)\n this.showDropIcon = 'fade'\n this.dropStopTimeout = setTimeout(() => (this.showDropIcon = 'hide'), 500)\n },\n fileDrag (e) {\n e.dataTransfer.dropEffect = this.uploadFileLimitReached ? 'none' : 'copy'\n if (e.dataTransfer && e.dataTransfer.types.includes('Files')) {\n clearTimeout(this.dropStopTimeout)\n this.showDropIcon = 'show'\n }\n },\n onEmojiInputInput (e) {\n this.$nextTick(() => {\n this.resize(this.$refs.textarea)\n })\n },\n resize (e) {\n const target = e.target || e\n if (!(target instanceof window.Element)) { return }\n\n // Reset to default height for empty form, nothing else to do here.\n if (target.value === '') {\n target.style.height = null\n this.$emit('resize')\n return\n }\n\n const formRef = this.$refs.form\n const bottomRef = this.$refs.bottom\n /* Scroller is either `window` (replies in TL), sidebar (main post form,\n * replies in notifs) or mobile post form. Note that getting and setting\n * scroll is different for `Window` and `Element`s\n */\n const bottomBottomPaddingStr = window.getComputedStyle(bottomRef)['padding-bottom']\n const bottomBottomPadding = pxStringToNumber(bottomBottomPaddingStr)\n\n const scrollerRef = this.$el.closest('.column.-scrollable') ||\n this.$el.closest('.post-form-modal-view') ||\n window\n\n // Getting info about padding we have to account for, removing 'px' part\n const topPaddingStr = window.getComputedStyle(target)['padding-top']\n const bottomPaddingStr = window.getComputedStyle(target)['padding-bottom']\n const topPadding = pxStringToNumber(topPaddingStr)\n const bottomPadding = pxStringToNumber(bottomPaddingStr)\n const vertPadding = topPadding + bottomPadding\n\n const oldHeight = pxStringToNumber(target.style.height)\n\n /* Explanation:\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight\n * scrollHeight returns element's scrollable content height, i.e. visible\n * element + overscrolled parts of it. We use it to determine when text\n * inside the textarea exceeded its height, so we can set height to prevent\n * overscroll, i.e. make textarea grow with the text. HOWEVER, since we\n * explicitly set new height, scrollHeight won't go below that, so we can't\n * SHRINK the textarea when there's extra space. To workaround that we set\n * height to 'auto' which makes textarea tiny again, so that scrollHeight\n * will match text height again. HOWEVER, shrinking textarea can screw with\n * the scroll since there might be not enough padding around form-bottom to even\n * warrant a scroll, so it will jump to 0 and refuse to move anywhere,\n * so we check current scroll position before shrinking and then restore it\n * with needed delta.\n */\n\n // this part has to be BEFORE the content size update\n const currentScroll = scrollerRef === window\n ? scrollerRef.scrollY\n : scrollerRef.scrollTop\n const scrollerHeight = scrollerRef === window\n ? scrollerRef.innerHeight\n : scrollerRef.offsetHeight\n const scrollerBottomBorder = currentScroll + scrollerHeight\n\n // BEGIN content size update\n target.style.height = 'auto'\n const heightWithoutPadding = Math.floor(target.scrollHeight - vertPadding)\n let newHeight = this.maxHeight ? Math.min(heightWithoutPadding, this.maxHeight) : heightWithoutPadding\n // This is a bit of a hack to combat target.scrollHeight being different on every other input\n // on some browsers for whatever reason. Don't change the height if difference is 1px or less.\n if (Math.abs(newHeight - oldHeight) <= 1) {\n newHeight = oldHeight\n }\n target.style.height = `${newHeight}px`\n this.$emit('resize', newHeight)\n // END content size update\n\n // We check where the bottom border of form-bottom element is, this uses findOffset\n // to find offset relative to scrollable container (scroller)\n const bottomBottomBorder = bottomRef.offsetHeight + findOffset(bottomRef, scrollerRef).top + bottomBottomPadding\n\n const isBottomObstructed = scrollerBottomBorder < bottomBottomBorder\n const isFormBiggerThanScroller = scrollerHeight < formRef.offsetHeight\n const bottomChangeDelta = bottomBottomBorder - scrollerBottomBorder\n // The intention is basically this;\n // Keep form-bottom always visible so that submit button is in view EXCEPT\n // if form element bigger than scroller and caret isn't at the end, so that\n // if you scroll up and edit middle of text you won't get scrolled back to bottom\n const shouldScrollToBottom = isBottomObstructed &&\n !(isFormBiggerThanScroller &&\n this.$refs.textarea.selectionStart !== this.$refs.textarea.value.length)\n const totalDelta = shouldScrollToBottom ? bottomChangeDelta : 0\n const targetScroll = Math.round(currentScroll + totalDelta)\n\n if (scrollerRef === window) {\n scrollerRef.scroll(0, targetScroll)\n } else {\n scrollerRef.scrollTop = targetScroll\n }\n },\n showEmojiPicker () {\n this.$refs.textarea.focus()\n this.$refs['emoji-input'].triggerShowPicker()\n },\n clearError () {\n this.error = null\n },\n changeVis (visibility) {\n this.newStatus.visibility = visibility\n },\n togglePollForm () {\n this.pollFormVisible = !this.pollFormVisible\n },\n setPoll (poll) {\n this.newStatus.poll = poll\n },\n clearPollForm () {\n if (this.$refs.pollForm) {\n this.$refs.pollForm.clear()\n }\n },\n dismissScopeNotice () {\n this.$store.dispatch('setOption', { name: 'hideScopeNotice', value: true })\n },\n setMediaDescription (id) {\n const description = this.newStatus.mediaDescriptions[id]\n if (!description || description.trim() === '') return\n return statusPoster.setMediaDescription({ store: this.$store, id, description })\n },\n setAllMediaDescriptions () {\n const ids = this.newStatus.files.map(file => file.id)\n return Promise.all(ids.map(id => this.setMediaDescription(id)))\n },\n handleEmojiInputShow (value) {\n this.emojiInputShown = value\n },\n updateIdempotencyKey () {\n this.idempotencyKey = Date.now().toString()\n },\n openProfileTab () {\n this.$store.dispatch('openSettingsModalTab', 'profile')\n },\n propsToNative (props) {\n return propsToNative(props)\n }\n }\n}\n\nexport default PostStatusForm\n","import { render } from \"./post_status_form.vue?vue&type=template&id=4cafd28a\"\nimport script from \"./post_status_form.js?vue&type=script&lang=js\"\nexport * from \"./post_status_form.js?vue&type=script&lang=js\"\n\nimport \"./post_status_form.vue?vue&type=style&index=0&id=4cafd28a&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <button\n :disabled=\"progress || disabled\"\n @click=\"onClick\"\n >\n <template v-if=\"progress && $slots.progress\">\n <slot name=\"progress\" />\n </template>\n <template v-else>\n <slot />\n </template>\n </button>\n</template>\n\n<script>\nexport default {\n props: {\n disabled: {\n type: Boolean\n },\n click: { // click event handler. Must return a promise\n type: Function,\n default: () => Promise.resolve()\n }\n },\n data () {\n return {\n progress: false\n }\n },\n methods: {\n onClick () {\n this.progress = true\n this.click().then(() => { this.progress = false })\n }\n }\n}\n</script>\n","import { render } from \"./progress_button.vue?vue&type=template&id=9f751ae6\"\nimport script from \"./progress_button.vue?vue&type=script&lang=js\"\nexport * from \"./progress_button.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"remote-follow\">\n <form\n method=\"POST\"\n :action=\"subscribeUrl\"\n >\n <input\n type=\"hidden\"\n name=\"nickname\"\n :value=\"user.screen_name\"\n >\n <input\n type=\"hidden\"\n name=\"profile\"\n value=\"\"\n >\n <button\n click=\"submit\"\n class=\"button-default remote-button\"\n >\n {{ $t('user_card.remote_follow') }}\n </button>\n </form>\n </div>\n</template>\n\n<script src=\"./remote_follow.js\"></script>\n\n<style lang=\"scss\">\n.remote-follow {\n max-width: 220px;\n\n .remote-button {\n width: 100%;\n min-height: 2em;\n }\n}\n</style>\n","export default {\n props: ['user'],\n computed: {\n subscribeUrl () {\n // eslint-disable-next-line no-undef\n const serverUrl = new URL(this.user.statusnet_profile_url)\n return `${serverUrl.protocol}//${serverUrl.host}/main/ostatus`\n }\n }\n}\n","import { render } from \"./remote_follow.vue?vue&type=template&id=2aed8421\"\nimport script from \"./remote_follow.js?vue&type=script&lang=js\"\nexport * from \"./remote_follow.js?vue&type=script&lang=js\"\n\nimport \"./remote_follow.vue?vue&type=style&index=0&id=2aed8421&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n v-if=\"!showNothing\"\n class=\"ScopeSelector\"\n >\n <button\n v-if=\"showDirect\"\n class=\"button-unstyled scope\"\n :class=\"css.direct\"\n :title=\"$t('post_status.scope.direct')\"\n type=\"button\"\n @click=\"changeVis('direct')\"\n >\n <FAIcon\n icon=\"envelope\"\n class=\"fa-scale-110 fa-old-padding\"\n />\n </button>\n {{ ' ' }}\n <button\n v-if=\"showPrivate\"\n class=\"button-unstyled scope\"\n :class=\"css.private\"\n :title=\"$t('post_status.scope.private')\"\n type=\"button\"\n @click=\"changeVis('private')\"\n >\n <FAIcon\n icon=\"lock\"\n class=\"fa-scale-110 fa-old-padding\"\n />\n </button>\n {{ ' ' }}\n <button\n v-if=\"showUnlisted\"\n class=\"button-unstyled scope\"\n :class=\"css.unlisted\"\n :title=\"$t('post_status.scope.unlisted')\"\n type=\"button\"\n @click=\"changeVis('unlisted')\"\n >\n <FAIcon\n icon=\"lock-open\"\n class=\"fa-scale-110 fa-old-padding\"\n />\n </button>\n {{ ' ' }}\n <button\n v-if=\"showPublic\"\n class=\"button-unstyled scope\"\n :class=\"css.public\"\n :title=\"$t('post_status.scope.public')\"\n type=\"button\"\n @click=\"changeVis('public')\"\n >\n <FAIcon\n icon=\"globe\"\n class=\"fa-scale-110 fa-old-padding\"\n />\n </button>\n </div>\n</template>\n\n<script src=\"./scope_selector.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.ScopeSelector {\n .scope {\n display: inline-block;\n cursor: pointer;\n min-width: 1.3em;\n min-height: 1.3em;\n text-align: center;\n\n &.selected svg {\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faEnvelope,\n faLock,\n faLockOpen,\n faGlobe\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faEnvelope,\n faGlobe,\n faLock,\n faLockOpen\n)\n\nconst ScopeSelector = {\n props: [\n 'showAll',\n 'userDefault',\n 'originalScope',\n 'initialScope',\n 'onScopeChange'\n ],\n data () {\n return {\n currentScope: this.initialScope\n }\n },\n computed: {\n showNothing () {\n return !this.showPublic && !this.showUnlisted && !this.showPrivate && !this.showDirect\n },\n showPublic () {\n return this.originalScope !== 'direct' && this.shouldShow('public')\n },\n showUnlisted () {\n return this.originalScope !== 'direct' && this.shouldShow('unlisted')\n },\n showPrivate () {\n return this.originalScope !== 'direct' && this.shouldShow('private')\n },\n showDirect () {\n return this.shouldShow('direct')\n },\n css () {\n return {\n public: { selected: this.currentScope === 'public' },\n unlisted: { selected: this.currentScope === 'unlisted' },\n private: { selected: this.currentScope === 'private' },\n direct: { selected: this.currentScope === 'direct' }\n }\n }\n },\n methods: {\n shouldShow (scope) {\n return this.showAll ||\n this.currentScope === scope ||\n this.originalScope === scope ||\n this.userDefault === scope ||\n scope === 'direct'\n },\n changeVis (scope) {\n this.currentScope = scope\n this.onScopeChange && this.onScopeChange(scope)\n }\n }\n}\n\nexport default ScopeSelector\n","import { render } from \"./scope_selector.vue?vue&type=template&id=3b2dbc9a\"\nimport script from \"./scope_selector.js?vue&type=script&lang=js\"\nexport * from \"./scope_selector.js?vue&type=script&lang=js\"\n\nimport \"./scope_selector.vue?vue&type=style&index=0&id=3b2dbc9a&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faChevronDown\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faChevronDown\n)\n\nexport default {\n emits: ['update:modelValue'],\n props: [\n 'modelValue',\n 'disabled',\n 'unstyled',\n 'kind',\n 'attrs'\n ]\n}\n","import { render } from \"./select.vue?vue&type=template&id=1f77c9b6\"\nimport script from \"./select.js?vue&type=script&lang=js\"\nexport * from \"./select.js?vue&type=script&lang=js\"\n\nimport \"./select.vue?vue&type=style&index=0&id=1f77c9b6&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <label\n class=\"Select input\"\n :class=\"{ disabled, unstyled }\"\n >\n <select\n :disabled=\"disabled\"\n :value=\"modelValue\"\n v-bind=\"attrs\"\n @change=\"$emit('update:modelValue', $event.target.value)\"\n >\n <slot />\n </select>\n {{ ' ' }}\n <FAIcon\n class=\"select-down-icon\"\n icon=\"chevron-down\"\n />\n </label>\n</template>\n\n<script src=\"./select.js\"> </script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n/* TODO fix order of styles */\nlabel.Select {\n padding: 0;\n\n select {\n appearance: none;\n background: transparent;\n border: none;\n color: $fallback--text;\n color: var(--inputText, --text, $fallback--text);\n margin: 0;\n padding: 0 2em 0 0.2em;\n font-family: sans-serif;\n font-family: var(--inputFont, sans-serif);\n font-size: 1em;\n width: 100%;\n z-index: 1;\n height: 2em;\n line-height: 16px;\n }\n\n .select-down-icon {\n position: absolute;\n top: 0;\n bottom: 0;\n right: 5px;\n height: 100%;\n width: 0.875em;\n color: $fallback--text;\n color: var(--inputText, $fallback--text);\n line-height: 2;\n z-index: 0;\n pointer-events: none;\n }\n}\n</style>\n","<template>\n <div\n v-if=\"!hideStatus\"\n ref=\"root\"\n class=\"Status\"\n :class=\"[{ '-focused': isFocused }, { '-conversation': inlineExpanded }]\"\n >\n <div\n v-if=\"error\"\n class=\"alert error\"\n >\n {{ error }}\n <span\n class=\"fa-scale-110 fa-old-padding\"\n @click=\"clearError\"\n >\n <FAIcon icon=\"times\" />\n </span>\n </div>\n <template v-if=\"muted && !isPreview\">\n <div class=\"status-container muted\">\n <small class=\"status-username\">\n <FAIcon\n v-if=\"muted && retweet\"\n class=\"fa-scale-110 fa-old-padding repeat-icon\"\n icon=\"retweet\"\n />\n <user-link\n :user=\"status.user\"\n :at=\"false\"\n />\n </small>\n <small\n v-if=\"showReasonMutedThread\"\n class=\"mute-thread\"\n >\n {{ $t('status.thread_muted') }}\n </small>\n <small\n v-if=\"showReasonMutedThread && muteWordHits.length > 0\"\n class=\"mute-thread\"\n >\n {{ $t('status.thread_muted_and_words') }}\n </small>\n <small\n class=\"mute-words\"\n :title=\"muteWordHits.join(', ')\"\n >\n {{ muteWordHits.join(', ') }}\n </small>\n <button\n class=\"unmute button-unstyled\"\n @click.prevent=\"toggleMute\"\n >\n <FAIcon\n icon=\"eye-slash\"\n class=\"fa-scale-110 fa-old-padding\"\n />\n </button>\n </div>\n </template>\n <template v-else>\n <div\n v-if=\"showPinned\"\n class=\"pin\"\n >\n <FAIcon\n icon=\"thumbtack\"\n class=\"faint\"\n />\n <span class=\"faint\">{{ $t('status.pinned') }}</span>\n </div>\n <div\n v-if=\"retweet && !noHeading && !inConversation\"\n :class=\"[repeaterClass, { highlighted: repeaterStyle }]\"\n :style=\"[repeaterStyle]\"\n class=\"status-container repeat-info\"\n >\n <UserAvatar\n v-if=\"retweet\"\n class=\"left-side repeater-avatar\"\n :bot=\"rtBotIndicator\"\n :better-shadow=\"betterShadow\"\n :user=\"statusoid.user\"\n />\n <div class=\"right-side faint\">\n <bdi\n class=\"status-username repeater-name\"\n :title=\"retweeter\"\n >\n <router-link\n v-if=\"retweeterHtml\"\n :to=\"retweeterProfileLink\"\n >\n <RichContent\n :html=\"retweeterHtml\"\n :emoji=\"retweeterUser.emoji\"\n />\n </router-link>\n <router-link\n v-else\n :to=\"retweeterProfileLink\"\n >{{ retweeter }}</router-link>\n </bdi>\n {{ ' ' }}\n <FAIcon\n icon=\"retweet\"\n class=\"repeat-icon\"\n :title=\"$t('tool_tip.repeat')\"\n />\n {{ $t('timeline.repeated') }}\n </div>\n </div>\n\n <div\n v-if=\"!deleted\"\n :class=\"[userClass, { highlighted: userStyle, '-repeat': retweet && !inConversation }]\"\n :style=\"[ userStyle ]\"\n class=\"status-container\"\n :data-tags=\"tags\"\n >\n <div\n v-if=\"!noHeading\"\n class=\"left-side\"\n >\n <a\n :href=\"$router.resolve(userProfileLink).href\"\n @click.prevent\n >\n <UserPopover\n :user-id=\"status.user.id\"\n :overlay-centers=\"true\"\n >\n <UserAvatar\n class=\"post-avatar\"\n :bot=\"botIndicator\"\n :compact=\"compact\"\n :better-shadow=\"betterShadow\"\n :user=\"status.user\"\n />\n </UserPopover>\n </a>\n </div>\n <div class=\"right-side\">\n <div\n v-if=\"!noHeading\"\n class=\"status-heading\"\n >\n <div class=\"heading-name-row\">\n <div class=\"heading-left\">\n <h4\n v-if=\"status.user.name_html\"\n class=\"status-username\"\n :title=\"status.user.name\"\n >\n <RichContent\n :html=\"status.user.name\"\n :emoji=\"status.user.emoji\"\n />\n </h4>\n <h4\n v-else\n class=\"status-username\"\n :title=\"status.user.name\"\n >\n {{ status.user.name }}\n </h4>\n <user-link\n class=\"account-name\"\n :title=\"status.user.screen_name_ui\"\n :user=\"status.user\"\n :at=\"false\"\n />\n <img\n v-if=\"!!(status.user && status.user.favicon)\"\n class=\"status-favicon\"\n :src=\"status.user.favicon\"\n >\n </div>\n\n <span class=\"heading-right\">\n <router-link\n class=\"timeago faint-link\"\n :to=\"{ name: 'conversation', params: { id: status.id } }\"\n >\n <Timeago\n :time=\"status.created_at\"\n :auto-update=\"60\"\n />\n </router-link>\n <span\n v-if=\"status.visibility\"\n class=\"visibility-icon\"\n :title=\"visibilityLocalized\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110\"\n :icon=\"visibilityIcon(status.visibility)\"\n />\n </span>\n <button\n v-if=\"expandable && !isPreview\"\n class=\"button-unstyled\"\n :title=\"$t('status.expand')\"\n @click.prevent=\"toggleExpanded\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110\"\n icon=\"plus-square\"\n />\n </button>\n <button\n v-if=\"unmuted\"\n class=\"button-unstyled\"\n @click.prevent=\"toggleMute\"\n >\n <FAIcon\n fixed-width\n icon=\"eye-slash\"\n class=\"fa-scale-110\"\n />\n </button>\n <button\n v-if=\"inThreadForest && replies && replies.length && !simpleTree\"\n class=\"button-unstyled\"\n :title=\"threadShowing ? $t('status.thread_hide') : $t('status.thread_show')\"\n :aria-expanded=\"threadShowing ? 'true' : 'false'\"\n @click.prevent=\"toggleThreadDisplay\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110\"\n :icon=\"threadShowing ? 'chevron-up' : 'chevron-down'\"\n />\n </button>\n <button\n v-if=\"dive && !simpleTree\"\n class=\"button-unstyled\"\n :title=\"$t('status.show_only_conversation_under_this')\"\n @click.prevent=\"dive\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110\"\n :icon=\"'angle-double-right'\"\n />\n </button>\n </span>\n </div>\n <div\n v-if=\"isReply || hasMentionsLine\"\n class=\"heading-reply-row\"\n >\n <span\n v-if=\"isReply\"\n class=\"glued-label reply-glued-label\"\n >\n <StatusPopover\n v-if=\"!isPreview\"\n :status-id=\"status.parent_visible && status.in_reply_to_status_id\"\n class=\"reply-to-popover\"\n style=\"min-width: 0;\"\n :class=\"{ '-strikethrough': !status.parent_visible }\"\n >\n <button\n class=\"button-unstyled reply-to\"\n :aria-label=\"$t('tool_tip.reply')\"\n @click.prevent=\"gotoOriginal(status.in_reply_to_status_id)\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"reply\"\n flip=\"horizontal\"\n />\n {{ ' ' }}\n <span\n class=\"reply-to-text\"\n >\n {{ $t('status.reply_to') }}\n </span>\n </button>\n </StatusPopover>\n\n <span\n v-else\n class=\"reply-to-no-popover\"\n >\n <span class=\"reply-to-text\">{{ $t('status.reply_to') }}</span>\n </span>\n <MentionLink\n :content=\"replyToName\"\n :url=\"replyProfileLink\"\n :user-id=\"status.in_reply_to_user_id\"\n :user-screen-name=\"status.in_reply_to_screen_name\"\n />\n </span>\n\n <!-- This little wrapper is made for sole purpose of \"gluing\" -->\n <!-- \"Mentions\" label to the first mention -->\n <span\n v-if=\"hasMentionsLine\"\n class=\"glued-label\"\n >\n <span\n class=\"mentions\"\n :aria-label=\"$t('tool_tip.mentions')\"\n @click.prevent=\"gotoOriginal(status.in_reply_to_status_id)\"\n >\n <span\n class=\"mentions-text\"\n >\n {{ $t('status.mentions') }}\n </span>\n </span>\n <MentionsLine\n v-if=\"hasMentionsLine\"\n :mentions=\"mentionsLine.slice(0, 1)\"\n class=\"mentions-line-first\"\n />\n </span>\n {{ ' ' }}\n <MentionsLine\n v-if=\"hasMentionsLine\"\n :mentions=\"mentionsLine.slice(1)\"\n class=\"mentions-line\"\n />\n </div>\n <div\n v-if=\"isEdited && editingAvailable && !isPreview\"\n class=\"heading-edited-row\"\n >\n <i18n-t\n keypath=\"status.edited_at\"\n tag=\"span\"\n >\n <template #time>\n <Timeago\n template-key=\"time.in_past\"\n :time=\"status.edited_at\"\n :auto-update=\"60\"\n :long-format=\"true\"\n />\n </template>\n </i18n-t>\n </div>\n </div>\n\n <StatusContent\n ref=\"content\"\n :status=\"status\"\n :no-heading=\"noHeading\"\n :highlight=\"highlight\"\n :focused=\"isFocused\"\n :controlled-showing-tall=\"controlledShowingTall\"\n :controlled-expanding-subject=\"controlledExpandingSubject\"\n :controlled-showing-long-subject=\"controlledShowingLongSubject\"\n :controlled-toggle-showing-tall=\"controlledToggleShowingTall\"\n :controlled-toggle-expanding-subject=\"controlledToggleExpandingSubject\"\n :controlled-toggle-showing-long-subject=\"controlledToggleShowingLongSubject\"\n @mediaplay=\"addMediaPlaying($event)\"\n @mediapause=\"removeMediaPlaying($event)\"\n @parseReady=\"setHeadTailLinks\"\n />\n\n <div\n v-if=\"inConversation && !isPreview && replies && replies.length\"\n class=\"replies\"\n >\n <button\n v-if=\"showOtherRepliesAsButton && replies.length > 1\"\n class=\"button-unstyled -link faint\"\n :title=\"$tc('status.ancestor_follow', replies.length - 1, { numReplies: replies.length - 1 })\"\n @click.prevent=\"dive\"\n >\n {{ $tc('status.replies_list_with_others', replies.length - 1, { numReplies: replies.length - 1 }) }}\n </button>\n <span\n v-else\n class=\"faint\"\n >\n {{ $t('status.replies_list') }}\n </span>\n <StatusPopover\n v-for=\"reply in replies\"\n :key=\"reply.id\"\n :status-id=\"reply.id\"\n >\n <button\n class=\"button-unstyled -link reply-link\"\n @click.prevent=\"gotoOriginal(reply.id)\"\n >\n {{ reply.name }}\n </button>\n </StatusPopover>\n </div>\n\n <transition name=\"fade\">\n <div\n v-if=\"!hidePostStats && isFocused && combinedFavsAndRepeatsUsers.length > 0\"\n class=\"favs-repeated-users\"\n >\n <div class=\"stats\">\n <UserListPopover\n v-if=\"statusFromGlobalRepository.rebloggedBy && statusFromGlobalRepository.rebloggedBy.length > 0\"\n :users=\"statusFromGlobalRepository.rebloggedBy\"\n >\n <div class=\"stat-count\">\n <a class=\"stat-title\">{{ $t('status.repeats') }}</a>\n <div class=\"stat-number\">\n {{ statusFromGlobalRepository.rebloggedBy.length }}\n </div>\n </div>\n </UserListPopover>\n <UserListPopover\n v-if=\"statusFromGlobalRepository.favoritedBy && statusFromGlobalRepository.favoritedBy.length > 0\"\n :users=\"statusFromGlobalRepository.favoritedBy\"\n >\n <div\n class=\"stat-count\"\n >\n <a class=\"stat-title\">{{ $t('status.favorites') }}</a>\n <div class=\"stat-number\">\n {{ statusFromGlobalRepository.favoritedBy.length }}\n </div>\n </div>\n </UserListPopover>\n <div class=\"avatar-row\">\n <AvatarList :users=\"combinedFavsAndRepeatsUsers\" />\n </div>\n </div>\n </div>\n </transition>\n\n <EmojiReactions\n v-if=\"(mergedConfig.emojiReactionsOnTimeline || isFocused) && (!noHeading && !isPreview)\"\n :status=\"status\"\n />\n\n <div\n v-if=\"!noHeading && !isPreview\"\n class=\"status-actions\"\n >\n <reply-button\n :replying=\"replying\"\n :status=\"status\"\n @toggle=\"toggleReplying\"\n />\n <retweet-button\n :visibility=\"status.visibility\"\n :logged-in=\"loggedIn\"\n :status=\"status\"\n />\n <favorite-button\n :logged-in=\"loggedIn\"\n :status=\"status\"\n />\n <ReactButton\n v-if=\"loggedIn\"\n :status=\"status\"\n />\n <extra-buttons\n :status=\"status\"\n @onError=\"showError\"\n @onSuccess=\"clearError\"\n />\n </div>\n </div>\n </div>\n <div\n v-else\n class=\"gravestone\"\n >\n <div class=\"left-side\">\n <UserAvatar\n class=\"post-avatar\"\n :compact=\"compact\"\n :bot=\"botIndicator\"\n />\n </div>\n <div class=\"right-side\">\n <div class=\"deleted-text\">\n {{ $t('status.status_deleted') }}\n </div>\n <reply-button\n v-if=\"replying\"\n :replying=\"replying\"\n :status=\"status\"\n @toggle=\"toggleReplying\"\n />\n </div>\n </div>\n <div\n v-if=\"replying\"\n class=\"status-container reply-form\"\n >\n <PostStatusForm\n class=\"reply-body\"\n :reply-to=\"status.id\"\n :attentions=\"status.attentions\"\n :replied-user=\"status.user\"\n :copy-message-scope=\"status.visibility\"\n :subject=\"replySubject\"\n @posted=\"toggleReplying\"\n />\n </div>\n </template>\n </div>\n</template>\n\n<script src=\"./status.js\"></script>\n\n<style src=\"./status.scss\" lang=\"scss\"></style>\n","<template>\n <div class=\"ReplyButton\">\n <button\n v-if=\"loggedIn\"\n class=\"button-unstyled interactive\"\n :class=\"{'-active': replying}\"\n :title=\"$t('tool_tip.reply')\"\n @click.prevent=\"$emit('toggle')\"\n >\n <FALayers class=\"fa-old-padding-layer\">\n <FAIcon\n class=\"fa-scale-110\"\n icon=\"reply\"\n />\n <FAIcon\n v-if=\"!replying\"\n class=\"focus-marker\"\n transform=\"shrink-6 up-8 right-11\"\n icon=\"plus\"\n />\n <FAIcon\n v-else\n class=\"focus-marker\"\n transform=\"shrink-6 up-8 right-11\"\n icon=\"times\"\n />\n </FALayers>\n </button>\n <a\n v-else\n class=\"button-unstyled interactive\"\n target=\"_blank\"\n role=\"button\"\n :href=\"remoteInteractionLink\"\n :title=\"$t('tool_tip.reply')\"\n >\n <FALayers class=\"fa-old-padding-layer\">\n <FAIcon\n class=\"fa-scale-110\"\n icon=\"reply\"\n />\n <FAIcon\n v-if=\"!replying\"\n class=\"focus-marker\"\n transform=\"shrink-6 up-8 right-16\"\n icon=\"plus\"\n />\n </FALayers>\n </a>\n <span\n v-if=\"status.replies_count > 0\"\n class=\"action-counter\"\n >\n {{ status.replies_count }}\n </span>\n </div>\n</template>\n\n<script src=\"./reply_button.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n@import \"../../mixins\";\n\n.ReplyButton {\n display: flex;\n\n > :first-child {\n padding: 10px;\n margin: -10px -8px -10px -10px;\n }\n\n .action-counter {\n pointer-events: none;\n user-select: none;\n }\n\n .interactive {\n &:hover .svg-inline--fa,\n &.-active .svg-inline--fa {\n color: $fallback--cBlue;\n color: var(--cBlue, $fallback--cBlue);\n }\n\n @include unfocused-style {\n .focus-marker {\n visibility: hidden;\n }\n }\n\n @include focused-style {\n .focus-marker {\n visibility: visible;\n }\n }\n }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faReply,\n faPlus,\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faReply,\n faPlus,\n faTimes\n)\n\nconst ReplyButton = {\n name: 'ReplyButton',\n props: ['status', 'replying'],\n computed: {\n loggedIn () {\n return !!this.$store.state.users.currentUser\n },\n remoteInteractionLink () {\n return this.$store.getters.remoteInteractionLink({ statusId: this.status.id })\n }\n }\n}\n\nexport default ReplyButton\n","import { render } from \"./reply_button.vue?vue&type=template&id=a7dc5ddc\"\nimport script from \"./reply_button.js?vue&type=script&lang=js\"\nexport * from \"./reply_button.js?vue&type=script&lang=js\"\n\nimport \"./reply_button.vue?vue&type=style&index=0&id=a7dc5ddc&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"FavoriteButton\">\n <button\n v-if=\"loggedIn\"\n class=\"button-unstyled interactive\"\n :class=\"status.favorited && '-favorited'\"\n :title=\"$t('tool_tip.favorite')\"\n @click.prevent=\"favorite()\"\n >\n <FALayers class=\"fa-scale-110 fa-old-padding-layer\">\n <FAIcon\n class=\"fa-scale-110\"\n :icon=\"[status.favorited ? 'fas' : 'far', 'star']\"\n :spin=\"animated\"\n />\n <FAIcon\n v-if=\"status.favorited\"\n class=\"active-marker\"\n transform=\"shrink-6 up-9 right-12\"\n icon=\"check\"\n />\n <FAIcon\n v-if=\"!status.favorited\"\n class=\"focus-marker\"\n transform=\"shrink-6 up-9 right-12\"\n icon=\"plus\"\n />\n <FAIcon\n v-else\n class=\"focus-marker\"\n transform=\"shrink-6 up-9 right-12\"\n icon=\"minus\"\n />\n </FALayers>\n </button>\n <a\n v-else\n class=\"button-unstyled interactive\"\n target=\"_blank\"\n role=\"button\"\n :title=\"$t('tool_tip.favorite')\"\n :href=\"remoteInteractionLink\"\n >\n <FALayers class=\"fa-scale-110 fa-old-padding-layer\">\n <FAIcon\n class=\"fa-scale-110\"\n :icon=\"['far', 'star']\"\n />\n <FAIcon\n class=\"focus-marker\"\n transform=\"shrink-6 up-9 right-12\"\n icon=\"plus\"\n />\n </FALayers>\n </a>\n <span\n v-if=\"!mergedConfig.hidePostStats && status.fave_num > 0\"\n class=\"action-counter\"\n >\n {{ status.fave_num }}\n </span>\n </div>\n</template>\n\n<script src=\"./favorite_button.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n@import \"../../mixins\";\n\n.FavoriteButton {\n display: flex;\n\n > :first-child {\n padding: 10px;\n margin: -10px -8px -10px -10px;\n }\n\n .action-counter {\n pointer-events: none;\n user-select: none;\n }\n\n .interactive {\n .svg-inline--fa {\n animation-duration: 0.6s;\n }\n\n &:hover .svg-inline--fa,\n &.-favorited .svg-inline--fa {\n color: $fallback--cOrange;\n color: var(--cOrange, $fallback--cOrange);\n }\n\n @include unfocused-style {\n .focus-marker {\n visibility: hidden;\n }\n\n .active-marker {\n visibility: visible;\n }\n }\n\n @include focused-style {\n .focus-marker {\n visibility: visible;\n }\n\n .active-marker {\n visibility: hidden;\n }\n }\n }\n}\n</style>\n","import { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faStar,\n faPlus,\n faMinus,\n faCheck\n} from '@fortawesome/free-solid-svg-icons'\nimport {\n faStar as faStarRegular\n} from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n faStar,\n faStarRegular,\n faPlus,\n faMinus,\n faCheck\n)\n\nconst FavoriteButton = {\n props: ['status', 'loggedIn'],\n data () {\n return {\n animated: false\n }\n },\n methods: {\n favorite () {\n if (!this.status.favorited) {\n this.$store.dispatch('favorite', { id: this.status.id })\n } else {\n this.$store.dispatch('unfavorite', { id: this.status.id })\n }\n this.animated = true\n setTimeout(() => {\n this.animated = false\n }, 500)\n }\n },\n computed: {\n ...mapGetters(['mergedConfig']),\n remoteInteractionLink () {\n return this.$store.getters.remoteInteractionLink({ statusId: this.status.id })\n }\n }\n}\n\nexport default FavoriteButton\n","import { render } from \"./favorite_button.vue?vue&type=template&id=195db34e\"\nimport script from \"./favorite_button.js?vue&type=script&lang=js\"\nexport * from \"./favorite_button.js?vue&type=script&lang=js\"\n\nimport \"./favorite_button.vue?vue&type=style&index=0&id=195db34e&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Popover\n trigger=\"click\"\n class=\"ReactButton\"\n placement=\"top\"\n :offset=\"{ y: 5 }\"\n :bound-to=\"{ x: 'container' }\"\n remove-padding\n popover-class=\"ReactButton popover-default\"\n @show=\"onShow\"\n @close=\"onClose\"\n >\n <template #content=\"{close}\">\n <div class=\"reaction-picker-filter\">\n <input\n v-model=\"filterWord\"\n size=\"1\"\n :placeholder=\"$t('emoji.search_emoji')\"\n @input=\"$event.target.composing = false\"\n >\n </div>\n <div class=\"reaction-picker\">\n <span\n v-for=\"emoji in commonEmojis\"\n :key=\"emoji.replacement\"\n class=\"emoji-button\"\n :title=\"maybeLocalizedEmojiName(emoji)\"\n @click=\"addReaction($event, emoji.replacement, close)\"\n >\n {{ emoji.replacement }}\n </span>\n <div class=\"reaction-picker-divider\" />\n <span\n v-for=\"(emoji, key) in emojis\"\n :key=\"key\"\n class=\"emoji-button\"\n :title=\"maybeLocalizedEmojiName(emoji)\"\n @click=\"addReaction($event, emoji.replacement, close)\"\n >\n {{ emoji.replacement }}\n </span>\n <div class=\"reaction-bottom-fader\" />\n </div>\n </template>\n <template #trigger>\n <span\n class=\"button-unstyled popover-trigger\"\n :title=\"$t('tool_tip.add_reaction')\"\n >\n <FALayers>\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n :icon=\"['far', 'smile-beam']\"\n />\n <FAIcon\n v-show=\"!expanded\"\n class=\"focus-marker\"\n transform=\"shrink-6 up-9 right-17\"\n icon=\"plus\"\n />\n <FAIcon\n v-show=\"expanded\"\n class=\"focus-marker\"\n transform=\"shrink-6 up-9 right-17\"\n icon=\"times\"\n />\n </FALayers>\n </span>\n </template>\n </Popover>\n</template>\n\n<script src=\"./react_button.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n@import \"../../mixins\";\n\n.ReactButton {\n .reaction-picker-filter {\n padding: 0.5em;\n display: flex;\n\n input {\n flex: 1;\n }\n }\n\n .reaction-picker-divider {\n height: 1px;\n width: 100%;\n margin: 0.5em;\n background-color: var(--border, $fallback--border);\n }\n\n .reaction-picker {\n width: 10em;\n height: 9em;\n font-size: 1.5em;\n overflow-y: scroll;\n display: flex;\n flex-wrap: wrap;\n padding: 0.5em;\n text-align: center;\n align-content: flex-start;\n user-select: none;\n mask:\n linear-gradient(to top, white 0, transparent 100%) bottom no-repeat,\n linear-gradient(to bottom, white 0, transparent 100%) top no-repeat,\n linear-gradient(to top, white, white);\n transition: mask-size 150ms;\n mask-size: 100% 20px, 100% 20px, auto;\n\n /* Autoprefixed seem to ignore this one, and also syntax is different */\n mask-composite: xor;\n mask-composite: exclude;\n\n .emoji-button {\n cursor: pointer;\n flex-basis: 20%;\n line-height: 1.5;\n align-content: center;\n\n &:hover {\n transform: scale(1.25);\n }\n }\n }\n\n .popover-trigger {\n padding: 10px;\n margin: -10px;\n\n &:hover .svg-inline--fa {\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n }\n\n .popover-trigger-button {\n /* override of popover internal stuff */\n width: auto;\n\n @include unfocused-style {\n .focus-marker {\n visibility: hidden;\n }\n }\n\n @include focused-style {\n .focus-marker {\n visibility: visible;\n }\n }\n }\n}\n\n</style>\n","import Popover from '../popover/popover.vue'\nimport { ensureFinalFallback } from '../../i18n/languages.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faPlus, faTimes } from '@fortawesome/free-solid-svg-icons'\nimport { faSmileBeam } from '@fortawesome/free-regular-svg-icons'\nimport { trim } from 'lodash'\n\nlibrary.add(\n faPlus,\n faTimes,\n faSmileBeam\n)\n\nconst ReactButton = {\n props: ['status'],\n data () {\n return {\n filterWord: '',\n expanded: false\n }\n },\n components: {\n Popover\n },\n methods: {\n addReaction (event, emoji, close) {\n const existingReaction = this.status.emoji_reactions.find(r => r.name === emoji)\n if (existingReaction && existingReaction.me) {\n this.$store.dispatch('unreactWithEmoji', { id: this.status.id, emoji })\n } else {\n this.$store.dispatch('reactWithEmoji', { id: this.status.id, emoji })\n }\n close()\n },\n onShow () {\n this.expanded = true\n this.focusInput()\n },\n onClose () {\n this.expanded = false\n },\n focusInput () {\n this.$nextTick(() => {\n const input = document.querySelector('.reaction-picker-filter > input')\n if (input) input.focus()\n })\n },\n // Vaguely adjusted copypaste from emoji_input and emoji_picker!\n maybeLocalizedEmojiNamesAndKeywords (emoji) {\n const names = [emoji.displayText]\n const keywords = []\n\n if (emoji.displayTextI18n) {\n names.push(this.$t(emoji.displayTextI18n.key, emoji.displayTextI18n.args))\n }\n\n if (emoji.annotations) {\n this.languages.forEach(lang => {\n names.push(emoji.annotations[lang]?.name)\n\n keywords.push(...(emoji.annotations[lang]?.keywords || []))\n })\n }\n\n return {\n names: names.filter(k => k),\n keywords: keywords.filter(k => k)\n }\n },\n maybeLocalizedEmojiName (emoji) {\n if (!emoji.annotations) {\n return emoji.displayText\n }\n\n if (emoji.displayTextI18n) {\n return this.$t(emoji.displayTextI18n.key, emoji.displayTextI18n.args)\n }\n\n for (const lang of this.languages) {\n if (emoji.annotations[lang]?.name) {\n return emoji.annotations[lang].name\n }\n }\n\n return emoji.displayText\n }\n },\n computed: {\n commonEmojis () {\n const hardcodedSet = new Set(['👍', '😠', '👀', '😂', '🔥'])\n return this.$store.getters.standardEmojiList.filter(emoji => hardcodedSet.has(emoji.replacement))\n },\n languages () {\n return ensureFinalFallback(this.$store.getters.mergedConfig.interfaceLanguage)\n },\n emojis () {\n if (this.filterWord !== '') {\n const keywordLowercase = trim(this.filterWord.toLowerCase())\n\n const orderedEmojiList = []\n for (const emoji of this.$store.getters.standardEmojiList) {\n const indices = this.maybeLocalizedEmojiNamesAndKeywords(emoji)\n .keywords\n .map(k => k.toLowerCase().indexOf(keywordLowercase))\n .filter(k => k > -1)\n\n const indexOfKeyword = indices.length ? Math.min(...indices) : -1\n\n if (indexOfKeyword > -1) {\n if (!Array.isArray(orderedEmojiList[indexOfKeyword])) {\n orderedEmojiList[indexOfKeyword] = []\n }\n orderedEmojiList[indexOfKeyword].push(emoji)\n }\n }\n return orderedEmojiList.flat()\n }\n return this.$store.getters.standardEmojiList || []\n },\n mergedConfig () {\n return this.$store.getters.mergedConfig\n }\n }\n}\n\nexport default ReactButton\n","import { render } from \"./react_button.vue?vue&type=template&id=2ab2dac0\"\nimport script from \"./react_button.js?vue&type=script&lang=js\"\nexport * from \"./react_button.js?vue&type=script&lang=js\"\n\nimport \"./react_button.vue?vue&type=style&index=0&id=2ab2dac0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"RetweetButton\">\n <button\n v-if=\"visibility !== 'private' && visibility !== 'direct' && loggedIn\"\n class=\"button-unstyled interactive\"\n :class=\"status.repeated && '-repeated'\"\n :title=\"$t('tool_tip.repeat')\"\n @click.prevent=\"retweet()\"\n >\n <FALayers class=\"fa-old-padding-layer\">\n <FAIcon\n class=\"fa-scale-110\"\n icon=\"retweet\"\n :spin=\"animated\"\n />\n <FAIcon\n v-if=\"status.repeated\"\n class=\"active-marker\"\n transform=\"shrink-6 up-9 right-12\"\n icon=\"check\"\n />\n <FAIcon\n v-if=\"!status.repeated\"\n class=\"focus-marker\"\n transform=\"shrink-6 up-9 right-12\"\n icon=\"plus\"\n />\n <FAIcon\n v-else\n class=\"focus-marker\"\n transform=\"shrink-6 up-9 right-12\"\n icon=\"minus\"\n />\n </FALayers>\n </button>\n <span v-else-if=\"loggedIn\">\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"lock\"\n :title=\"$t('timeline.no_retweet_hint')\"\n />\n </span>\n <a\n v-else\n class=\"button-unstyled interactive\"\n target=\"_blank\"\n role=\"button\"\n :title=\"$t('tool_tip.repeat')\"\n :href=\"remoteInteractionLink\"\n >\n <FALayers class=\"fa-old-padding-layer\">\n <FAIcon\n class=\"fa-scale-110\"\n icon=\"retweet\"\n />\n <FAIcon\n class=\"focus-marker\"\n transform=\"shrink-6 up-9 right-12\"\n icon=\"plus\"\n />\n </FALayers>\n </a>\n <span\n v-if=\"!mergedConfig.hidePostStats && status.repeat_num > 0\"\n class=\"no-event\"\n >\n {{ status.repeat_num }}\n </span>\n <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingConfirmDialog\"\n :title=\"$t('status.repeat_confirm_title')\"\n :confirm-text=\"$t('status.repeat_confirm_accept_button')\"\n :cancel-text=\"$t('status.repeat_confirm_cancel_button')\"\n @accepted=\"doRetweet\"\n @cancelled=\"hideConfirmDialog\"\n >\n {{ $t('status.repeat_confirm') }}\n </confirm-modal>\n </teleport>\n </div>\n</template>\n\n<script src=\"./retweet_button.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n@import \"../../mixins\";\n\n.RetweetButton {\n display: flex;\n\n > :first-child {\n padding: 10px;\n margin: -10px -8px -10px -10px;\n }\n\n .action-counter {\n pointer-events: none;\n user-select: none;\n }\n\n .interactive {\n .svg-inline--fa {\n animation-duration: 0.6s;\n }\n\n &:hover .svg-inline--fa,\n &.-repeated .svg-inline--fa {\n color: $fallback--cGreen;\n color: var(--cGreen, $fallback--cGreen);\n }\n\n @include unfocused-style {\n .focus-marker {\n visibility: hidden;\n }\n\n .active-marker {\n visibility: visible;\n }\n }\n\n @include focused-style {\n .focus-marker {\n visibility: visible;\n }\n\n .active-marker {\n visibility: hidden;\n }\n }\n }\n}\n</style>\n","import ConfirmModal from '../confirm_modal/confirm_modal.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faRetweet,\n faPlus,\n faMinus,\n faCheck\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faRetweet,\n faPlus,\n faMinus,\n faCheck\n)\n\nconst RetweetButton = {\n props: ['status', 'loggedIn', 'visibility'],\n components: {\n ConfirmModal\n },\n data () {\n return {\n animated: false,\n showingConfirmDialog: false\n }\n },\n methods: {\n retweet () {\n if (!this.status.repeated && this.shouldConfirmRepeat) {\n this.showConfirmDialog()\n } else {\n this.doRetweet()\n }\n },\n doRetweet () {\n if (!this.status.repeated) {\n this.$store.dispatch('retweet', { id: this.status.id })\n } else {\n this.$store.dispatch('unretweet', { id: this.status.id })\n }\n this.animated = true\n setTimeout(() => {\n this.animated = false\n }, 500)\n this.hideConfirmDialog()\n },\n showConfirmDialog () {\n this.showingConfirmDialog = true\n },\n hideConfirmDialog () {\n this.showingConfirmDialog = false\n }\n },\n computed: {\n mergedConfig () {\n return this.$store.getters.mergedConfig\n },\n remoteInteractionLink () {\n return this.$store.getters.remoteInteractionLink({ statusId: this.status.id })\n },\n shouldConfirmRepeat () {\n return this.mergedConfig.modalOnRepeat\n }\n }\n}\n\nexport default RetweetButton\n","import { render } from \"./retweet_button.vue?vue&type=template&id=3a6122b4\"\nimport script from \"./retweet_button.js?vue&type=script&lang=js\"\nexport * from \"./retweet_button.js?vue&type=script&lang=js\"\n\nimport \"./retweet_button.vue?vue&type=style&index=0&id=3a6122b4&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Popover\n class=\"ExtraButtons\"\n trigger=\"click\"\n placement=\"top\"\n :offset=\"{ y: 5 }\"\n :bound-to=\"{ x: 'container' }\"\n remove-padding\n @show=\"onShow\"\n @close=\"onClose\"\n >\n <template #content=\"{close}\">\n <div class=\"dropdown-menu\">\n <button\n v-if=\"canMute && !status.thread_muted\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"muteConversation\"\n >\n <FAIcon\n fixed-width\n icon=\"eye-slash\"\n /><span>{{ $t(\"status.mute_conversation\") }}</span>\n </button>\n <button\n v-if=\"canMute && status.thread_muted\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"unmuteConversation\"\n >\n <FAIcon\n fixed-width\n icon=\"eye-slash\"\n /><span>{{ $t(\"status.unmute_conversation\") }}</span>\n </button>\n <button\n v-if=\"!status.pinned && canPin\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"pinStatus\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n icon=\"thumbtack\"\n /><span>{{ $t(\"status.pin\") }}</span>\n </button>\n <button\n v-if=\"status.pinned && canPin\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"unpinStatus\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n icon=\"thumbtack\"\n /><span>{{ $t(\"status.unpin\") }}</span>\n </button>\n <template v-if=\"canBookmark\">\n <button\n v-if=\"!status.bookmarked\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"bookmarkStatus\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n :icon=\"['far', 'bookmark']\"\n /><span>{{ $t(\"status.bookmark\") }}</span>\n </button>\n <button\n v-if=\"status.bookmarked\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"unbookmarkStatus\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n icon=\"bookmark\"\n /><span>{{ $t(\"status.unbookmark\") }}</span>\n </button>\n </template>\n <button\n v-if=\"ownStatus && editingAvailable\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"editStatus\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n icon=\"pen\"\n /><span>{{ $t(\"status.edit\") }}</span>\n </button>\n <button\n v-if=\"isEdited && editingAvailable\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"showStatusHistory\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n icon=\"history\"\n /><span>{{ $t(\"status.status_history\") }}</span>\n </button>\n <button\n v-if=\"canDelete\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"deleteStatus\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n icon=\"times\"\n /><span>{{ $t(\"status.delete\") }}</span>\n </button>\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"copyLink\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n icon=\"share-alt\"\n /><span>{{ $t(\"status.copy_link\") }}</span>\n </button>\n <a\n v-if=\"!status.is_local\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n title=\"Source\"\n :href=\"status.external_url\"\n target=\"_blank\"\n >\n <FAIcon\n fixed-width\n icon=\"external-link-alt\"\n /><span>{{ $t(\"status.external_source\") }}</span>\n </a>\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"reportStatus\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n :icon=\"['far', 'flag']\"\n /><span>{{ $t(\"user_card.report\") }}</span>\n </button>\n </div>\n </template>\n <template #trigger>\n <span class=\"button-unstyled popover-trigger\">\n <FALayers class=\"fa-old-padding-layer\">\n <FAIcon\n class=\"fa-scale-110 \"\n icon=\"ellipsis-h\"\n />\n <FAIcon\n v-show=\"!expanded\"\n class=\"focus-marker\"\n transform=\"shrink-6 up-8 right-16\"\n icon=\"plus\"\n />\n <FAIcon\n v-show=\"expanded\"\n class=\"focus-marker\"\n transform=\"shrink-6 up-8 right-16\"\n icon=\"times\"\n />\n </FALayers>\n </span>\n <teleport to=\"#modal\">\n <ConfirmModal\n v-if=\"showingDeleteDialog\"\n :title=\"$t('status.delete_confirm_title')\"\n :cancel-text=\"$t('status.delete_confirm_cancel_button')\"\n :confirm-text=\"$t('status.delete_confirm_accept_button')\"\n @cancelled=\"hideDeleteStatusConfirmDialog\"\n @accepted=\"doDeleteStatus\"\n >\n {{ $t('status.delete_confirm') }}\n </ConfirmModal>\n </teleport>\n </template>\n </Popover>\n</template>\n\n<script src=\"./extra_buttons.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n@import \"../../mixins\";\n\n.ExtraButtons {\n .popover-trigger {\n position: static;\n padding: 10px;\n margin: -10px;\n\n &:hover .svg-inline--fa {\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n }\n\n .popover-trigger-button {\n /* override of popover internal stuff */\n width: auto;\n\n @include unfocused-style {\n .focus-marker {\n visibility: hidden;\n }\n }\n\n @include focused-style {\n .focus-marker {\n visibility: visible;\n }\n }\n }\n}\n</style>\n","import Popover from '../popover/popover.vue'\nimport ConfirmModal from '../confirm_modal/confirm_modal.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faEllipsisH,\n faBookmark,\n faEyeSlash,\n faThumbtack,\n faShareAlt,\n faExternalLinkAlt,\n faHistory,\n faPlus,\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\nimport {\n faBookmark as faBookmarkReg,\n faFlag\n} from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n faEllipsisH,\n faBookmark,\n faBookmarkReg,\n faEyeSlash,\n faThumbtack,\n faShareAlt,\n faExternalLinkAlt,\n faFlag,\n faHistory,\n faPlus,\n faTimes\n)\n\nconst ExtraButtons = {\n props: ['status'],\n components: {\n Popover,\n ConfirmModal\n },\n data () {\n return {\n expanded: false,\n showingDeleteDialog: false\n }\n },\n methods: {\n onShow () {\n this.expanded = true\n },\n onClose () {\n this.expanded = false\n },\n deleteStatus () {\n if (this.shouldConfirmDelete) {\n this.showDeleteStatusConfirmDialog()\n } else {\n this.doDeleteStatus()\n }\n },\n doDeleteStatus () {\n this.$store.dispatch('deleteStatus', { id: this.status.id })\n this.hideDeleteStatusConfirmDialog()\n },\n showDeleteStatusConfirmDialog () {\n this.showingDeleteDialog = true\n },\n hideDeleteStatusConfirmDialog () {\n this.showingDeleteDialog = false\n },\n pinStatus () {\n this.$store.dispatch('pinStatus', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n unpinStatus () {\n this.$store.dispatch('unpinStatus', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n muteConversation () {\n this.$store.dispatch('muteConversation', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n unmuteConversation () {\n this.$store.dispatch('unmuteConversation', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n copyLink () {\n navigator.clipboard.writeText(this.statusLink)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n bookmarkStatus () {\n this.$store.dispatch('bookmark', { id: this.status.id })\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n unbookmarkStatus () {\n this.$store.dispatch('unbookmark', { id: this.status.id })\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n reportStatus () {\n this.$store.dispatch('openUserReportingModal', { userId: this.status.user.id, statusIds: [this.status.id] })\n },\n editStatus () {\n this.$store.dispatch('fetchStatusSource', { id: this.status.id })\n .then(data => this.$store.dispatch('openEditStatusModal', {\n statusId: this.status.id,\n subject: data.spoiler_text,\n statusText: data.text,\n statusIsSensitive: this.status.nsfw,\n statusPoll: this.status.poll,\n statusFiles: [...this.status.attachments],\n visibility: this.status.visibility,\n statusContentType: data.content_type\n }))\n },\n showStatusHistory () {\n const originalStatus = { ...this.status }\n const stripFieldsList = ['attachments', 'created_at', 'emojis', 'text', 'raw_html', 'nsfw', 'poll', 'summary', 'summary_raw_html']\n stripFieldsList.forEach(p => delete originalStatus[p])\n this.$store.dispatch('openStatusHistoryModal', originalStatus)\n }\n },\n computed: {\n currentUser () { return this.$store.state.users.currentUser },\n canDelete () {\n if (!this.currentUser) { return }\n return this.currentUser.privileges.includes('messages_delete') || this.status.user.id === this.currentUser.id\n },\n ownStatus () {\n return this.status.user.id === this.currentUser.id\n },\n canPin () {\n return this.ownStatus && (this.status.visibility === 'public' || this.status.visibility === 'unlisted')\n },\n canMute () {\n return !!this.currentUser\n },\n canBookmark () {\n return !!this.currentUser\n },\n statusLink () {\n return `${this.$store.state.instance.server}${this.$router.resolve({ name: 'conversation', params: { id: this.status.id } }).href}`\n },\n isEdited () {\n return this.status.edited_at !== null\n },\n editingAvailable () { return this.$store.state.instance.editingAvailable },\n shouldConfirmDelete () {\n return this.$store.getters.mergedConfig.modalOnDelete\n }\n }\n}\n\nexport default ExtraButtons\n","import { render } from \"./extra_buttons.vue?vue&type=template&id=6fcf5bb3\"\nimport script from \"./extra_buttons.js?vue&type=script&lang=js\"\nexport * from \"./extra_buttons.js?vue&type=script&lang=js\"\n\nimport \"./extra_buttons.vue?vue&type=style&index=0&id=6fcf5bb3&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Popover\n ref=\"popover\"\n trigger=\"hover\"\n :stay-on-click=\"true\"\n popover-class=\"popover-default status-popover\"\n :bound-to=\"{ x: 'container' }\"\n @show=\"enter\"\n >\n <template #trigger>\n <slot />\n </template>\n <template #content>\n <Status\n v-if=\"status\"\n :is-preview=\"true\"\n :statusoid=\"status\"\n :compact=\"true\"\n />\n <div\n v-else-if=\"error\"\n class=\"status-preview-no-content faint\"\n >\n {{ $t('status.status_unavailable') }}\n </div>\n <div\n v-else\n class=\"status-preview-no-content\"\n >\n <FAIcon\n icon=\"circle-notch\"\n spin\n size=\"2x\"\n />\n </div>\n </template>\n </Popover>\n</template>\n\n<script src=\"./status_popover.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n/* popover styles load on-demand, so we need to override */\n.status-popover.popover {\n font-size: 1rem;\n min-width: 15em;\n max-width: 95%;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n border-style: solid;\n border-width: 1px;\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n\n /* TODO cleanup this */\n .Status.Status {\n border: none;\n }\n\n .status-preview-no-content {\n padding: 1em;\n text-align: center;\n\n i {\n font-size: 2em;\n }\n }\n}\n\n</style>\n","import { find } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\nimport { defineAsyncComponent } from 'vue'\n\nlibrary.add(\n faCircleNotch\n)\n\nconst StatusPopover = {\n name: 'StatusPopover',\n props: [\n 'statusId'\n ],\n data () {\n return {\n error: false\n }\n },\n computed: {\n status () {\n return find(this.$store.state.statuses.allStatuses, { id: this.statusId })\n }\n },\n components: {\n Status: defineAsyncComponent(() => import('../status/status.vue')),\n Popover: defineAsyncComponent(() => import('../popover/popover.vue'))\n },\n methods: {\n enter () {\n if (!this.status) {\n if (!this.statusId) {\n this.error = true\n return\n }\n this.$store.dispatch('fetchStatus', this.statusId)\n .then(data => (this.error = false))\n .catch(e => (this.error = true))\n }\n }\n },\n watch: {\n status (newStatus, oldStatus) {\n if (newStatus !== oldStatus) {\n this.$nextTick(() => this.$refs.popover.updateStyles())\n }\n }\n }\n}\n\nexport default StatusPopover\n","import { render } from \"./status_popover.vue?vue&type=template&id=0c237860\"\nimport script from \"./status_popover.js?vue&type=script&lang=js\"\nexport * from \"./status_popover.js?vue&type=script&lang=js\"\n\nimport \"./status_popover.vue?vue&type=style&index=0&id=0c237860&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Popover\n trigger=\"hover\"\n placement=\"top\"\n :offset=\"{ y: 5 }\"\n >\n <template #trigger>\n <slot />\n </template>\n <template #content>\n <div class=\"user-list-popover\">\n <template v-if=\"users.length\">\n <div\n v-for=\"(user) in usersCapped\"\n :key=\"user.id\"\n class=\"user-list-row\"\n >\n <UserAvatar\n :user=\"user\"\n class=\"avatar-small\"\n :compact=\"true\"\n />\n <div class=\"user-list-names\">\n <!-- eslint-disable vue/no-v-html -->\n <RichContent\n class=\"username\"\n :title=\"'@'+user.screen_name_ui\"\n :html=\"user.name_html\"\n :emoji=\"user.emoji\"\n />\n <!-- eslint-enable vue/no-v-html -->\n <span class=\"user-list-screen-name\">{{ user.screen_name_ui }}</span><UnicodeDomainIndicator :user=\"user\" />\n </div>\n </div>\n </template>\n <template v-else>\n <FAIcon\n icon=\"circle-notch\"\n spin\n size=\"3x\"\n />\n </template>\n </div>\n </template>\n </Popover>\n</template>\n\n<script src=\"./user_list_popover.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.user-list-popover {\n padding: 0.5em;\n\n --emoji-size: 16px;\n\n .user-list-row {\n padding: 0.25em;\n display: flex;\n flex-direction: row;\n\n .user-list-names {\n display: flex;\n flex-direction: column;\n margin-left: 0.5em;\n min-width: 5em;\n\n img {\n width: 1em;\n height: 1em;\n }\n }\n\n .user-list-screen-name {\n font-size: 0.65em;\n }\n }\n}\n\n</style>\n","import { defineAsyncComponent } from 'vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport UnicodeDomainIndicator from '../unicode_domain_indicator/unicode_domain_indicator.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nconst UserListPopover = {\n name: 'UserListPopover',\n props: [\n 'users'\n ],\n components: {\n RichContent,\n UnicodeDomainIndicator,\n Popover: defineAsyncComponent(() => import('../popover/popover.vue')),\n UserAvatar: defineAsyncComponent(() => import('../user_avatar/user_avatar.vue'))\n },\n computed: {\n usersCapped () {\n return this.users.slice(0, 16)\n }\n }\n}\n\nexport default UserListPopover\n","import { render } from \"./user_list_popover.vue?vue&type=template&id=6fc1c392\"\nimport script from \"./user_list_popover.js?vue&type=script&lang=js\"\nexport * from \"./user_list_popover.js?vue&type=script&lang=js\"\n\nimport \"./user_list_popover.vue?vue&type=style&index=0&id=6fc1c392&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"EmojiReactions\">\n <UserListPopover\n v-for=\"(reaction) in emojiReactions\"\n :key=\"reaction.name\"\n :users=\"accountsForEmoji[reaction.name]\"\n >\n <button\n class=\"emoji-reaction btn button-default\"\n :class=\"{ '-picked-reaction': reactedWith(reaction.name), 'not-clickable': !loggedIn }\"\n @click=\"emojiOnClick(reaction.name, $event)\"\n @mouseenter=\"fetchEmojiReactionsByIfMissing()\"\n >\n <span class=\"reaction-emoji\">{{ reaction.name }}</span>\n <span>{{ reaction.count }}</span>\n </button>\n </UserListPopover>\n <a\n v-if=\"tooManyReactions\"\n class=\"emoji-reaction-expand faint\"\n href=\"javascript:void(0)\"\n @click=\"toggleShowAll\"\n >\n {{ showAll ? $t('general.show_less') : showMoreString }}\n </a>\n </div>\n</template>\n\n<script src=\"./emoji_reactions.js\"></script>\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.EmojiReactions {\n display: flex;\n margin-top: 0.25em;\n flex-wrap: wrap;\n\n .emoji-reaction {\n padding: 0 0.5em;\n margin-right: 0.5em;\n margin-top: 0.5em;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n\n .reaction-emoji {\n width: 1.25em;\n margin-right: 0.25em;\n }\n\n &:focus {\n outline: none;\n }\n\n &.not-clickable {\n cursor: default;\n\n &:hover {\n box-shadow: $fallback--buttonShadow;\n box-shadow: var(--buttonShadow);\n }\n }\n\n &.-picked-reaction {\n border: 1px solid var(--accent, $fallback--link);\n margin-left: -1px; // offset the border, can't use inset shadows either\n margin-right: calc(0.5em - 1px);\n }\n }\n\n .emoji-reaction-expand {\n padding: 0 0.5em;\n margin-right: 0.5em;\n margin-top: 0.5em;\n display: flex;\n align-items: center;\n justify-content: center;\n\n &:hover {\n text-decoration: underline;\n }\n }\n}\n</style>\n","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport UserListPopover from '../user_list_popover/user_list_popover.vue'\n\nconst EMOJI_REACTION_COUNT_CUTOFF = 12\n\nconst EmojiReactions = {\n name: 'EmojiReactions',\n components: {\n UserAvatar,\n UserListPopover\n },\n props: ['status'],\n data: () => ({\n showAll: false\n }),\n computed: {\n tooManyReactions () {\n return this.status.emoji_reactions.length > EMOJI_REACTION_COUNT_CUTOFF\n },\n emojiReactions () {\n return this.showAll\n ? this.status.emoji_reactions\n : this.status.emoji_reactions.slice(0, EMOJI_REACTION_COUNT_CUTOFF)\n },\n showMoreString () {\n return `+${this.status.emoji_reactions.length - EMOJI_REACTION_COUNT_CUTOFF}`\n },\n accountsForEmoji () {\n return this.status.emoji_reactions.reduce((acc, reaction) => {\n acc[reaction.name] = reaction.accounts || []\n return acc\n }, {})\n },\n loggedIn () {\n return !!this.$store.state.users.currentUser\n }\n },\n methods: {\n toggleShowAll () {\n this.showAll = !this.showAll\n },\n reactedWith (emoji) {\n return this.status.emoji_reactions.find(r => r.name === emoji).me\n },\n fetchEmojiReactionsByIfMissing () {\n const hasNoAccounts = this.status.emoji_reactions.find(r => !r.accounts)\n if (hasNoAccounts) {\n this.$store.dispatch('fetchEmojiReactionsBy', this.status.id)\n }\n },\n reactWith (emoji) {\n this.$store.dispatch('reactWithEmoji', { id: this.status.id, emoji })\n },\n unreact (emoji) {\n this.$store.dispatch('unreactWithEmoji', { id: this.status.id, emoji })\n },\n emojiOnClick (emoji, event) {\n if (!this.loggedIn) return\n\n if (this.reactedWith(emoji)) {\n this.unreact(emoji)\n } else {\n this.reactWith(emoji)\n }\n }\n }\n}\n\nexport default EmojiReactions\n","import { render } from \"./emoji_reactions.vue?vue&type=template&id=07b3d2b1\"\nimport script from \"./emoji_reactions.js?vue&type=script&lang=js\"\nexport * from \"./emoji_reactions.js?vue&type=script&lang=js\"\n\nimport \"./emoji_reactions.vue?vue&type=style&index=0&id=07b3d2b1&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import ReplyButton from '../reply_button/reply_button.vue'\nimport FavoriteButton from '../favorite_button/favorite_button.vue'\nimport ReactButton from '../react_button/react_button.vue'\nimport RetweetButton from '../retweet_button/retweet_button.vue'\nimport ExtraButtons from '../extra_buttons/extra_buttons.vue'\nimport PostStatusForm from '../post_status_form/post_status_form.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport AvatarList from '../avatar_list/avatar_list.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport StatusPopover from '../status_popover/status_popover.vue'\nimport UserPopover from '../user_popover/user_popover.vue'\nimport UserListPopover from '../user_list_popover/user_list_popover.vue'\nimport EmojiReactions from '../emoji_reactions/emoji_reactions.vue'\nimport UserLink from '../user_link/user_link.vue'\nimport MentionsLine from 'src/components/mentions_line/mentions_line.vue'\nimport MentionLink from 'src/components/mention_link/mention_link.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'\nimport { muteWordHits } from '../../services/status_parser/status_parser.js'\nimport { unescape, uniqBy } from 'lodash'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faEnvelope,\n faLock,\n faLockOpen,\n faGlobe,\n faTimes,\n faRetweet,\n faReply,\n faPlusSquare,\n faSmileBeam,\n faEllipsisH,\n faStar,\n faEyeSlash,\n faEye,\n faThumbtack,\n faChevronUp,\n faChevronDown,\n faAngleDoubleRight\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faEnvelope,\n faGlobe,\n faLock,\n faLockOpen,\n faTimes,\n faRetweet,\n faReply,\n faPlusSquare,\n faStar,\n faSmileBeam,\n faEllipsisH,\n faEyeSlash,\n faEye,\n faThumbtack,\n faChevronUp,\n faChevronDown,\n faAngleDoubleRight\n)\n\nconst camelCase = name => name.charAt(0).toUpperCase() + name.slice(1)\n\nconst controlledOrUncontrolledGetters = list => list.reduce((res, name) => {\n const camelized = camelCase(name)\n const toggle = `controlledToggle${camelized}`\n const controlledName = `controlled${camelized}`\n const uncontrolledName = `uncontrolled${camelized}`\n res[name] = function () {\n return ((this.$data[toggle] !== undefined || this.$props[toggle] !== undefined) && this[toggle]) ? this[controlledName] : this[uncontrolledName]\n }\n return res\n}, {})\n\nconst controlledOrUncontrolledToggle = (obj, name) => {\n const camelized = camelCase(name)\n const toggle = `controlledToggle${camelized}`\n const uncontrolledName = `uncontrolled${camelized}`\n if (obj[toggle]) {\n obj[toggle]()\n } else {\n obj[uncontrolledName] = !obj[uncontrolledName]\n }\n}\n\nconst controlledOrUncontrolledSet = (obj, name, val) => {\n const camelized = camelCase(name)\n const set = `controlledSet${camelized}`\n const uncontrolledName = `uncontrolled${camelized}`\n if (obj[set]) {\n obj[set](val)\n } else {\n obj[uncontrolledName] = val\n }\n}\n\nconst Status = {\n name: 'Status',\n components: {\n ReplyButton,\n FavoriteButton,\n ReactButton,\n RetweetButton,\n ExtraButtons,\n PostStatusForm,\n UserAvatar,\n AvatarList,\n Timeago,\n StatusPopover,\n UserListPopover,\n EmojiReactions,\n StatusContent,\n RichContent,\n MentionLink,\n MentionsLine,\n UserPopover,\n UserLink\n },\n props: [\n 'statusoid',\n 'expandable',\n 'inConversation',\n 'focused',\n 'highlight',\n 'compact',\n 'replies',\n 'isPreview',\n 'noHeading',\n 'inlineExpanded',\n 'showPinned',\n 'inProfile',\n 'profileUserId',\n\n 'simpleTree',\n 'controlledThreadDisplayStatus',\n 'controlledToggleThreadDisplay',\n 'showOtherRepliesAsButton',\n\n 'controlledShowingTall',\n 'controlledToggleShowingTall',\n 'controlledExpandingSubject',\n 'controlledToggleExpandingSubject',\n 'controlledShowingLongSubject',\n 'controlledToggleShowingLongSubject',\n 'controlledReplying',\n 'controlledToggleReplying',\n 'controlledMediaPlaying',\n 'controlledSetMediaPlaying',\n 'dive'\n ],\n data () {\n return {\n uncontrolledReplying: false,\n unmuted: false,\n userExpanded: false,\n uncontrolledMediaPlaying: [],\n suspendable: true,\n error: null,\n headTailLinks: null\n }\n },\n computed: {\n ...controlledOrUncontrolledGetters(['replying', 'mediaPlaying']),\n muteWords () {\n return this.mergedConfig.muteWords\n },\n showReasonMutedThread () {\n return (\n this.status.thread_muted ||\n (this.status.reblog && this.status.reblog.thread_muted)\n ) && !this.inConversation\n },\n repeaterClass () {\n const user = this.statusoid.user\n return highlightClass(user)\n },\n userClass () {\n const user = this.retweet ? (this.statusoid.retweeted_status.user) : this.statusoid.user\n return highlightClass(user)\n },\n deleted () {\n return this.statusoid.deleted\n },\n repeaterStyle () {\n const user = this.statusoid.user\n const highlight = this.mergedConfig.highlight\n return highlightStyle(highlight[user.screen_name])\n },\n userStyle () {\n if (this.noHeading) return\n const user = this.retweet ? (this.statusoid.retweeted_status.user) : this.statusoid.user\n const highlight = this.mergedConfig.highlight\n return highlightStyle(highlight[user.screen_name])\n },\n userProfileLink () {\n return this.generateUserProfileLink(this.status.user.id, this.status.user.screen_name)\n },\n replyProfileLink () {\n if (this.isReply) {\n const user = this.$store.getters.findUser(this.status.in_reply_to_user_id)\n // FIXME Why user not found sometimes???\n return user ? user.statusnet_profile_url : 'NOT_FOUND'\n }\n },\n retweet () { return !!this.statusoid.retweeted_status },\n retweeterUser () { return this.statusoid.user },\n retweeter () { return this.statusoid.user.name || this.statusoid.user.screen_name_ui },\n retweeterHtml () { return this.statusoid.user.name },\n retweeterProfileLink () { return this.generateUserProfileLink(this.statusoid.user.id, this.statusoid.user.screen_name) },\n status () {\n if (this.retweet) {\n return this.statusoid.retweeted_status\n } else {\n return this.statusoid\n }\n },\n statusFromGlobalRepository () {\n // NOTE: Consider to replace status with statusFromGlobalRepository\n return this.$store.state.statuses.allStatusesObject[this.status.id]\n },\n loggedIn () {\n return !!this.currentUser\n },\n muteWordHits () {\n return muteWordHits(this.status, this.muteWords)\n },\n rtBotStatus () {\n return this.statusoid.user.bot\n },\n botStatus () {\n return this.status.user.bot\n },\n botIndicator () {\n return this.botStatus && !this.hideBotIndication\n },\n rtBotIndicator () {\n return this.rtBotStatus && !this.hideBotIndication\n },\n mentionsLine () {\n if (!this.headTailLinks) return []\n const writtenSet = new Set(this.headTailLinks.writtenMentions.map(_ => _.url))\n return this.status.attentions.filter(attn => {\n // no reply user\n return attn.id !== this.status.in_reply_to_user_id &&\n // no self-replies\n attn.statusnet_profile_url !== this.status.user.statusnet_profile_url &&\n // don't include if mentions is written\n !writtenSet.has(attn.statusnet_profile_url)\n }).map(attn => ({\n url: attn.statusnet_profile_url,\n content: attn.screen_name,\n userId: attn.id\n }))\n },\n hasMentionsLine () {\n return this.mentionsLine.length > 0\n },\n muted () {\n if (this.statusoid.user.id === this.currentUser.id) return false\n const reasonsToMute = this.userIsMuted ||\n // Thread is muted\n status.thread_muted ||\n // Wordfiltered\n this.muteWordHits.length > 0 ||\n // bot status\n (this.muteBotStatuses && this.botStatus && !this.compact)\n return !this.unmuted && !this.shouldNotMute && reasonsToMute\n },\n userIsMuted () {\n if (this.statusoid.user.id === this.currentUser.id) return false\n const { status } = this\n const { reblog } = status\n const relationship = this.$store.getters.relationship(status.user.id)\n const relationshipReblog = reblog && this.$store.getters.relationship(reblog.user.id)\n return status.muted ||\n // Reprööt of a muted post according to BE\n (reblog && reblog.muted) ||\n // Muted user\n relationship.muting ||\n // Muted user of a reprööt\n (relationshipReblog && relationshipReblog.muting)\n },\n shouldNotMute () {\n const { status } = this\n const { reblog } = status\n return (\n (\n this.inProfile && (\n // Don't mute user's posts on user timeline (except reblogs)\n (!reblog && status.user.id === this.profileUserId) ||\n // Same as above but also allow self-reblogs\n (reblog && reblog.user.id === this.profileUserId)\n )\n ) ||\n // Don't mute statuses in muted conversation when said conversation is opened\n (this.inConversation && status.thread_muted)\n // No excuses if post has muted words\n ) && !this.muteWordHits.length > 0\n },\n hideMutedUsers () {\n return this.mergedConfig.hideMutedPosts\n },\n hideMutedThreads () {\n return this.mergedConfig.hideMutedThreads\n },\n hideFilteredStatuses () {\n return this.mergedConfig.hideFilteredStatuses\n },\n hideWordFilteredPosts () {\n return this.mergedConfig.hideWordFilteredPosts\n },\n hideStatus () {\n return (!this.shouldNotMute) && (\n (this.muted && this.hideFilteredStatuses) ||\n (this.userIsMuted && this.hideMutedUsers) ||\n (this.status.thread_muted && this.hideMutedThreads) ||\n (this.muteWordHits.length > 0 && this.hideWordFilteredPosts)\n )\n },\n isFocused () {\n // retweet or root of an expanded conversation\n if (this.focused) {\n return true\n } else if (!this.inConversation) {\n return false\n }\n // use conversation highlight only when in conversation\n return this.status.id === this.highlight\n },\n isReply () {\n return !!(this.status.in_reply_to_status_id && this.status.in_reply_to_user_id)\n },\n replyToName () {\n if (this.status.in_reply_to_screen_name) {\n return this.status.in_reply_to_screen_name\n } else {\n const user = this.$store.getters.findUser(this.status.in_reply_to_user_id)\n return user && user.screen_name_ui\n }\n },\n replySubject () {\n if (!this.status.summary) return ''\n const decodedSummary = unescape(this.status.summary)\n const behavior = this.mergedConfig.subjectLineBehavior\n const startsWithRe = decodedSummary.match(/^re[: ]/i)\n if ((behavior !== 'noop' && startsWithRe) || behavior === 'masto') {\n return decodedSummary\n } else if (behavior === 'email') {\n return 're: '.concat(decodedSummary)\n } else if (behavior === 'noop') {\n return ''\n }\n },\n combinedFavsAndRepeatsUsers () {\n // Use the status from the global status repository since favs and repeats are saved in it\n const combinedUsers = [].concat(\n this.statusFromGlobalRepository.favoritedBy,\n this.statusFromGlobalRepository.rebloggedBy\n )\n return uniqBy(combinedUsers, 'id')\n },\n tags () {\n // eslint-disable-next-line no-prototype-builtins\n return this.status.tags.filter(tagObj => tagObj.hasOwnProperty('name')).map(tagObj => tagObj.name).join(' ')\n },\n hidePostStats () {\n return this.mergedConfig.hidePostStats\n },\n muteBotStatuses () {\n return this.mergedConfig.muteBotStatuses\n },\n hideBotIndication () {\n return this.mergedConfig.hideBotIndication\n },\n currentUser () {\n return this.$store.state.users.currentUser\n },\n betterShadow () {\n return this.$store.state.interface.browserSupport.cssFilter\n },\n mergedConfig () {\n return this.$store.getters.mergedConfig\n },\n isSuspendable () {\n return !this.replying && this.mediaPlaying.length === 0\n },\n inThreadForest () {\n return !!this.controlledThreadDisplayStatus\n },\n threadShowing () {\n return this.controlledThreadDisplayStatus === 'showing'\n },\n visibilityLocalized () {\n return this.$i18n.t('general.scope_in_timeline.' + this.status.visibility)\n },\n isEdited () {\n return this.status.edited_at !== null\n },\n editingAvailable () {\n return this.$store.state.instance.editingAvailable\n }\n },\n methods: {\n visibilityIcon (visibility) {\n switch (visibility) {\n case 'private':\n return 'lock'\n case 'unlisted':\n return 'lock-open'\n case 'direct':\n return 'envelope'\n default:\n return 'globe'\n }\n },\n showError (error) {\n this.error = error\n },\n clearError () {\n this.error = undefined\n },\n toggleReplying () {\n controlledOrUncontrolledToggle(this, 'replying')\n },\n gotoOriginal (id) {\n if (this.inConversation) {\n this.$emit('goto', id)\n }\n },\n toggleExpanded () {\n this.$emit('toggleExpanded')\n },\n toggleMute () {\n this.unmuted = !this.unmuted\n },\n toggleUserExpanded () {\n this.userExpanded = !this.userExpanded\n },\n generateUserProfileLink (id, name) {\n return generateProfileLink(id, name, this.$store.state.instance.restrictedNicknames)\n },\n addMediaPlaying (id) {\n controlledOrUncontrolledSet(this, 'mediaPlaying', this.mediaPlaying.concat(id))\n },\n removeMediaPlaying (id) {\n controlledOrUncontrolledSet(this, 'mediaPlaying', this.mediaPlaying.filter(mediaId => mediaId !== id))\n },\n setHeadTailLinks (headTailLinks) {\n this.headTailLinks = headTailLinks\n },\n toggleThreadDisplay () {\n this.controlledToggleThreadDisplay()\n },\n scrollIfHighlighted (highlightId) {\n const id = highlightId\n if (this.status.id === id) {\n const rect = this.$el.getBoundingClientRect()\n if (rect.top < 100) {\n // Post is above screen, match its top to screen top\n window.scrollBy(0, rect.top - 100)\n } else if (rect.height >= (window.innerHeight - 50)) {\n // Post we want to see is taller than screen so match its top to screen top\n window.scrollBy(0, rect.top - 100)\n } else if (rect.bottom > window.innerHeight - 50) {\n // Post is below screen, match its bottom to screen bottom\n window.scrollBy(0, rect.bottom - window.innerHeight + 50)\n }\n }\n }\n },\n watch: {\n highlight: function (id) {\n this.scrollIfHighlighted(id)\n },\n 'status.repeat_num': function (num) {\n // refetch repeats when repeat_num is changed in any way\n if (this.isFocused && this.statusFromGlobalRepository.rebloggedBy && this.statusFromGlobalRepository.rebloggedBy.length !== num) {\n this.$store.dispatch('fetchRepeats', this.status.id)\n }\n },\n 'status.fave_num': function (num) {\n // refetch favs when fave_num is changed in any way\n if (this.isFocused && this.statusFromGlobalRepository.favoritedBy && this.statusFromGlobalRepository.favoritedBy.length !== num) {\n this.$store.dispatch('fetchFavs', this.status.id)\n }\n },\n isSuspendable: function (val) {\n this.suspendable = val\n }\n }\n}\n\nexport default Status\n","import { render } from \"./status.vue?vue&type=template&id=c1ace060\"\nimport script from \"./status.js?vue&type=script&lang=js\"\nexport * from \"./status.js?vue&type=script&lang=js\"\n\nimport \"./status.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"StatusContent\"\n :class=\"{ '-compact': compact }\"\n >\n <slot name=\"header\" />\n <StatusBody\n :status=\"status\"\n :compact=\"compact\"\n :single-line=\"singleLine\"\n :showing-tall=\"showingTall\"\n :expanding-subject=\"expandingSubject\"\n :showing-long-subject=\"showingLongSubject\"\n :toggle-showing-tall=\"toggleShowingTall\"\n :toggle-expanding-subject=\"toggleExpandingSubject\"\n :toggle-showing-long-subject=\"toggleShowingLongSubject\"\n @parseReady=\"$emit('parseReady', $event)\"\n >\n <div v-if=\"status.poll && status.poll.options && !compact\">\n <Poll\n :base-poll=\"status.poll\"\n :emoji=\"status.emojis\"\n />\n </div>\n\n <div v-else-if=\"status.poll && status.poll.options && compact\">\n <FAIcon\n icon=\"poll-h\"\n size=\"2x\"\n />\n </div>\n\n <gallery\n v-if=\"status.attachments.length !== 0\"\n class=\"attachments media-body\"\n :compact=\"compact\"\n :nsfw=\"nsfwClickthrough\"\n :attachments=\"status.attachments\"\n :limit=\"compact ? 1 : 0\"\n :size=\"attachmentSize\"\n @play=\"$emit('mediaplay', attachment.id)\"\n @pause=\"$emit('mediapause', attachment.id)\"\n />\n\n <div\n v-if=\"status.card && !noHeading && !compact\"\n class=\"link-preview media-body\"\n >\n <link-preview\n :card=\"status.card\"\n :size=\"attachmentSize\"\n :nsfw=\"nsfwClickthrough\"\n />\n </div>\n </StatusBody>\n <slot name=\"footer\" />\n </div>\n</template>\n\n<script src=\"./status_content.js\"></script>\n<style lang=\"scss\">\n.StatusContent {\n flex: 1;\n min-width: 0;\n}\n</style>\n","<template>\n <div\n class=\"poll\"\n :class=\"containerClass\"\n >\n <div\n :role=\"showResults ? 'section' : (poll.multiple ? 'group' : 'radiogroup')\"\n >\n <div\n v-for=\"(option, index) in options\"\n :key=\"index\"\n class=\"poll-option\"\n >\n <div\n v-if=\"showResults\"\n :title=\"resultTitle(option)\"\n class=\"option-result\"\n >\n <div class=\"option-result-label\">\n <span class=\"result-percentage\">\n {{ percentageForOption(option.votes_count) }}%\n </span>\n <RichContent\n :html=\"option.title_html\"\n :handle-links=\"false\"\n :emoji=\"emoji\"\n />\n </div>\n <div\n class=\"result-fill\"\n :style=\"{ 'width': `${percentageForOption(option.votes_count)}%` }\"\n />\n </div>\n <div\n v-else\n tabindex=\"0\"\n :role=\"poll.multiple ? 'checkbox' : 'radio'\"\n :aria-labelledby=\"`option-vote-${randomSeed}-${index}`\"\n :aria-checked=\"choices[index]\"\n @click=\"activateOption(index)\"\n >\n <input\n v-if=\"poll.multiple\"\n type=\"checkbox\"\n class=\"poll-checkbox\"\n :disabled=\"loading\"\n :value=\"index\"\n >\n <input\n v-else\n type=\"radio\"\n :disabled=\"loading\"\n :value=\"index\"\n >\n <label class=\"option-vote\">\n <RichContent\n :id=\"`option-vote-${randomSeed}-${index}`\"\n :html=\"option.title_html\"\n :handle-links=\"false\"\n :emoji=\"emoji\"\n />\n </label>\n </div>\n </div>\n </div>\n <div class=\"footer faint\">\n <button\n v-if=\"!showResults\"\n class=\"btn button-default poll-vote-button\"\n type=\"button\"\n :disabled=\"isDisabled\"\n @click=\"vote\"\n >\n {{ $t('polls.vote') }}\n </button>\n <div class=\"total\">\n <template v-if=\"typeof poll.voters_count === 'number'\">\n {{ $tc(\"polls.people_voted_count\", poll.voters_count, { count: poll.voters_count }) }}&nbsp;·&nbsp;\n </template>\n <template v-else>\n {{ $tc(\"polls.votes_count\", poll.votes_count, { count: poll.votes_count }) }}&nbsp;·&nbsp;\n </template>\n </div>\n <span>\n <i18n-t\n scope=\"global\"\n :keypath=\"expired ? 'polls.expired' : 'polls.expires_in'\"\n >\n <Timeago\n :time=\"expiresAt\"\n :auto-update=\"60\"\n :now-threshold=\"0\"\n />\n </i18n-t>\n </span>\n </div>\n </div>\n</template>\n\n<script src=\"./poll.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.poll {\n .votes {\n display: flex;\n flex-direction: column;\n margin: 0 0 0.5em;\n }\n\n .poll-option {\n margin: 0.75em 0.5em;\n }\n\n .option-result {\n height: 100%;\n display: flex;\n flex-direction: row;\n position: relative;\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n\n .option-result-label {\n display: flex;\n align-items: center;\n padding: 0.1em 0.25em;\n z-index: 1;\n word-break: break-word;\n }\n\n .result-percentage {\n width: 3.5em;\n flex-shrink: 0;\n }\n\n .result-fill {\n height: 100%;\n position: absolute;\n color: $fallback--text;\n color: var(--pollText, $fallback--text);\n background-color: $fallback--lightBg;\n background-color: var(--poll, $fallback--lightBg);\n border-radius: $fallback--panelRadius;\n border-radius: var(--panelRadius, $fallback--panelRadius);\n top: 0;\n left: 0;\n transition: width 0.5s;\n }\n\n .option-vote {\n display: flex;\n align-items: center;\n }\n\n input {\n width: 3.5em;\n }\n\n .footer {\n display: flex;\n align-items: center;\n }\n\n &.loading * {\n cursor: progress;\n }\n\n .poll-vote-button {\n padding: 0 0.5em;\n margin-right: 0.5em;\n }\n\n .poll-checkbox {\n display: none;\n }\n}\n</style>\n","import Timeago from 'components/timeago/timeago.vue'\nimport RichContent from 'components/rich_content/rich_content.jsx'\nimport { forEach, map } from 'lodash'\n\nexport default {\n name: 'Poll',\n props: ['basePoll', 'emoji'],\n components: {\n Timeago,\n RichContent\n },\n data () {\n return {\n loading: false,\n choices: [],\n randomSeed: `${Math.random()}`.replace('.', '-')\n }\n },\n created () {\n if (!this.$store.state.polls.pollsObject[this.pollId]) {\n this.$store.dispatch('mergeOrAddPoll', this.basePoll)\n }\n this.$store.dispatch('trackPoll', this.pollId)\n },\n unmounted () {\n this.$store.dispatch('untrackPoll', this.pollId)\n },\n computed: {\n pollId () {\n return this.basePoll.id\n },\n poll () {\n const storePoll = this.$store.state.polls.pollsObject[this.pollId]\n return storePoll || {}\n },\n options () {\n return (this.poll && this.poll.options) || []\n },\n expiresAt () {\n return (this.poll && this.poll.expires_at) || 0\n },\n expired () {\n return (this.poll && this.poll.expired) || false\n },\n loggedIn () {\n return this.$store.state.users.currentUser\n },\n showResults () {\n return this.poll.voted || this.expired || !this.loggedIn\n },\n totalVotesCount () {\n return this.poll.votes_count\n },\n containerClass () {\n return {\n loading: this.loading\n }\n },\n choiceIndices () {\n // Convert array of booleans into an array of indices of the\n // items that were 'true', so [true, false, false, true] becomes\n // [0, 3].\n return this.choices\n .map((entry, index) => entry && index)\n .filter(value => typeof value === 'number')\n },\n isDisabled () {\n const noChoice = this.choiceIndices.length === 0\n return this.loading || noChoice\n }\n },\n methods: {\n percentageForOption (count) {\n return this.totalVotesCount === 0 ? 0 : Math.round(count / this.totalVotesCount * 100)\n },\n resultTitle (option) {\n return `${option.votes_count}/${this.totalVotesCount} ${this.$t('polls.votes')}`\n },\n fetchPoll () {\n this.$store.dispatch('refreshPoll', { id: this.statusId, pollId: this.poll.id })\n },\n activateOption (index) {\n // forgive me father: doing checking the radio/checkboxes\n // in code because of customized input elements need either\n // a) an extra element for the actual graphic, or b) use a\n // pseudo element for the label. We use b) which mandates\n // using \"for\" and \"id\" matching which isn't nice when the\n // same poll appears multiple times on the site (notifs and\n // timeline for example). With code we can make sure it just\n // works without altering the pseudo element implementation.\n const allElements = this.$el.querySelectorAll('input')\n const clickedElement = this.$el.querySelector(`input[value=\"${index}\"]`)\n if (this.poll.multiple) {\n // Checkboxes, toggle only the clicked one\n clickedElement.checked = !clickedElement.checked\n } else {\n // Radio button, uncheck everything and check the clicked one\n forEach(allElements, element => { element.checked = false })\n clickedElement.checked = true\n }\n this.choices = map(allElements, e => e.checked)\n },\n optionId (index) {\n return `poll${this.poll.id}-${index}`\n },\n vote () {\n if (this.choiceIndices.length === 0) return\n this.loading = true\n this.$store.dispatch(\n 'votePoll',\n { id: this.statusId, pollId: this.poll.id, choices: this.choiceIndices }\n ).then(poll => {\n this.loading = false\n })\n }\n }\n}\n","import { render } from \"./poll.vue?vue&type=template&id=02c7de4c\"\nimport script from \"./poll.js?vue&type=script&lang=js\"\nexport * from \"./poll.js?vue&type=script&lang=js\"\n\nimport \"./poll.vue?vue&type=style&index=0&id=02c7de4c&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"StatusBody\"\n :class=\"{ '-compact': compact }\"\n >\n <div class=\"body\">\n <div\n v-if=\"status.summary_raw_html\"\n class=\"summary-wrapper\"\n :class=\"{ '-tall': (longSubject && !showingLongSubject) }\"\n >\n <RichContent\n class=\"media-body summary\"\n :html=\"status.summary_raw_html\"\n :emoji=\"status.emojis\"\n />\n <button\n v-show=\"longSubject && showingLongSubject\"\n class=\"button-unstyled -link tall-subject-hider\"\n @click.prevent=\"toggleShowingLongSubject\"\n >\n {{ $t(\"status.hide_full_subject\") }}\n </button>\n <button\n v-show=\"longSubject && !showingLongSubject\"\n class=\"button-unstyled -link tall-subject-hider\"\n @click.prevent=\"toggleShowingLongSubject\"\n >\n {{ $t(\"status.show_full_subject\") }}\n </button>\n </div>\n <div\n :class=\"{'-tall-status': hideTallStatus}\"\n class=\"text-wrapper\"\n >\n <button\n v-show=\"hideTallStatus\"\n class=\"button-unstyled -link tall-status-hider\"\n :class=\"{ '-focused': focused }\"\n @click.prevent=\"toggleShowMore\"\n >\n {{ $t(\"general.show_more\") }}\n </button>\n <RichContent\n v-if=\"!hideSubjectStatus && !(singleLine && status.summary_raw_html)\"\n :class=\"{ '-single-line': singleLine }\"\n class=\"text media-body\"\n :html=\"status.raw_html\"\n :emoji=\"status.emojis\"\n :handle-links=\"true\"\n :greentext=\"mergedConfig.greentext\"\n :attentions=\"status.attentions\"\n @parseReady=\"onParseReady\"\n />\n\n <button\n v-show=\"hideSubjectStatus\"\n class=\"button-unstyled -link cw-status-hider\"\n @click.prevent=\"toggleShowMore\"\n >\n {{ $t(\"status.show_content\") }}\n <FAIcon\n v-if=\"attachmentTypes.includes('image')\"\n icon=\"image\"\n />\n <FAIcon\n v-if=\"attachmentTypes.includes('video')\"\n icon=\"video\"\n />\n <FAIcon\n v-if=\"attachmentTypes.includes('audio')\"\n icon=\"music\"\n />\n <FAIcon\n v-if=\"attachmentTypes.includes('unknown')\"\n icon=\"file\"\n />\n <FAIcon\n v-if=\"status.poll && status.poll.options\"\n icon=\"poll-h\"\n />\n <FAIcon\n v-if=\"status.card\"\n icon=\"link\"\n />\n </button>\n <button\n v-show=\"showingMore && !fullContent\"\n class=\"button-unstyled -link status-unhider\"\n @click.prevent=\"toggleShowMore\"\n >\n {{ tallStatus ? $t(\"general.show_less\") : $t(\"status.hide_content\") }}\n </button>\n </div>\n </div>\n <slot v-if=\"!hideSubjectStatus\" />\n </div>\n</template>\n<script src=\"./status_body.js\"></script>\n<style lang=\"scss\" src=\"./status_body.scss\" />\n","import fileType from 'src/services/file_type/file_type.service'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faFile,\n faMusic,\n faImage,\n faLink,\n faPollH\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faFile,\n faMusic,\n faImage,\n faLink,\n faPollH\n)\n\nconst StatusContent = {\n name: 'StatusContent',\n props: [\n 'compact',\n 'status',\n 'focused',\n 'noHeading',\n 'fullContent',\n 'singleLine',\n 'showingTall',\n 'expandingSubject',\n 'showingLongSubject',\n 'toggleShowingTall',\n 'toggleExpandingSubject',\n 'toggleShowingLongSubject'\n ],\n data () {\n return {\n postLength: this.status.text.length,\n parseReadyDone: false\n }\n },\n computed: {\n localCollapseSubjectDefault () {\n return this.mergedConfig.collapseMessageWithSubject\n },\n // This is a bit hacky, but we want to approximate post height before rendering\n // so we count newlines (masto uses <p> for paragraphs, GS uses <br> between them)\n // as well as approximate line count by counting characters and approximating ~80\n // per line.\n //\n // Using max-height + overflow: auto for status components resulted in false positives\n // very often with japanese characters, and it was very annoying.\n tallStatus () {\n if (this.singleLine || this.compact) return false\n const lengthScore = this.status.raw_html.split(/<p|<br/).length + this.postLength / 80\n return lengthScore > 20\n },\n longSubject () {\n return this.status.summary.length > 240\n },\n // When a status has a subject and is also tall, we should only have one show more/less button. If the default is to collapse statuses with subjects, we just treat it like a status with a subject; otherwise, we just treat it like a tall status.\n mightHideBecauseSubject () {\n return !!this.status.summary && this.localCollapseSubjectDefault\n },\n mightHideBecauseTall () {\n return this.tallStatus && !(this.status.summary && this.localCollapseSubjectDefault)\n },\n hideSubjectStatus () {\n return this.mightHideBecauseSubject && !this.expandingSubject\n },\n hideTallStatus () {\n return this.mightHideBecauseTall && !this.showingTall\n },\n showingMore () {\n return (this.mightHideBecauseTall && this.showingTall) || (this.mightHideBecauseSubject && this.expandingSubject)\n },\n attachmentTypes () {\n return this.status.attachments.map(file => fileType.fileType(file.mimetype))\n },\n ...mapGetters(['mergedConfig'])\n },\n components: {\n RichContent\n },\n mounted () {\n this.status.attentions && this.status.attentions.forEach(attn => {\n const { id } = attn\n this.$store.dispatch('fetchUserIfMissing', id)\n })\n },\n methods: {\n onParseReady (event) {\n if (this.parseReadyDone) return\n this.parseReadyDone = true\n this.$emit('parseReady', event)\n const { writtenMentions, invisibleMentions } = event\n writtenMentions\n .filter(mention => !mention.notifying)\n .forEach(mention => {\n const { content, url } = mention\n const cleanedString = content.replace(/<[^>]+?>/gi, '') // remove all tags\n if (!cleanedString.startsWith('@')) return\n const handle = cleanedString.slice(1)\n const host = url.replace(/^https?:\\/\\//, '').replace(/\\/.+?$/, '')\n this.$store.dispatch('fetchUserIfMissing', `${handle}@${host}`)\n })\n /* This is a bit of a hack to make current tall status detector work\n * with rich mentions. Invisible mentions are detected at RichContent level\n * and also we generate plaintext version of mentions by stripping tags\n * so here we subtract from post length by each mention that became invisible\n * via MentionsLine\n */\n this.postLength = invisibleMentions.reduce((acc, mention) => {\n return acc - mention.textContent.length - 1\n }, this.postLength)\n },\n toggleShowMore () {\n if (this.mightHideBecauseTall) {\n this.toggleShowingTall()\n } else if (this.mightHideBecauseSubject) {\n this.toggleExpandingSubject()\n }\n },\n generateTagLink (tag) {\n return `/tag/${tag}`\n }\n }\n}\n\nexport default StatusContent\n","import { render } from \"./status_body.vue?vue&type=template&id=7a590a2c\"\nimport script from \"./status_body.js?vue&type=script&lang=js\"\nexport * from \"./status_body.js?vue&type=script&lang=js\"\n\nimport \"./status_body.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Attachment from '../attachment/attachment.vue'\nimport Poll from '../poll/poll.vue'\nimport Gallery from '../gallery/gallery.vue'\nimport StatusBody from 'src/components/status_body/status_body.vue'\nimport LinkPreview from '../link-preview/link-preview.vue'\nimport { mapGetters, mapState } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCircleNotch,\n faFile,\n faMusic,\n faImage,\n faLink,\n faPollH\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch,\n faFile,\n faMusic,\n faImage,\n faLink,\n faPollH\n)\n\nconst camelCase = name => name.charAt(0).toUpperCase() + name.slice(1)\n\nconst controlledOrUncontrolledGetters = list => list.reduce((res, name) => {\n const camelized = camelCase(name)\n const toggle = `controlledToggle${camelized}`\n const controlledName = `controlled${camelized}`\n const uncontrolledName = `uncontrolled${camelized}`\n res[name] = function () {\n return ((this.$data[toggle] !== undefined || this.$props[toggle] !== undefined) && this[toggle]) ? this[controlledName] : this[uncontrolledName]\n }\n return res\n}, {})\n\nconst controlledOrUncontrolledToggle = (obj, name) => {\n const camelized = camelCase(name)\n const toggle = `controlledToggle${camelized}`\n const uncontrolledName = `uncontrolled${camelized}`\n if (obj[toggle]) {\n obj[toggle]()\n } else {\n obj[uncontrolledName] = !obj[uncontrolledName]\n }\n}\n\nconst StatusContent = {\n name: 'StatusContent',\n props: [\n 'status',\n 'compact',\n 'focused',\n 'noHeading',\n 'fullContent',\n 'singleLine',\n 'controlledShowingTall',\n 'controlledExpandingSubject',\n 'controlledToggleShowingTall',\n 'controlledToggleExpandingSubject',\n 'controlledShowingLongSubject',\n 'controlledToggleShowingLongSubject'\n ],\n data () {\n return {\n uncontrolledShowingTall: this.fullContent || (this.inConversation && this.focused),\n uncontrolledShowingLongSubject: false,\n // not as computed because it sets the initial state which will be changed later\n uncontrolledExpandingSubject: !this.$store.getters.mergedConfig.collapseMessageWithSubject\n }\n },\n computed: {\n ...controlledOrUncontrolledGetters(['showingTall', 'expandingSubject', 'showingLongSubject']),\n hideAttachments () {\n return (this.mergedConfig.hideAttachments && !this.inConversation) ||\n (this.mergedConfig.hideAttachmentsInConv && this.inConversation)\n },\n nsfwClickthrough () {\n if (!this.status.nsfw) {\n return false\n }\n if (this.status.summary && this.localCollapseSubjectDefault) {\n return false\n }\n return true\n },\n attachmentSize () {\n if (this.compact) {\n return 'small'\n } else if ((this.mergedConfig.hideAttachments && !this.inConversation) ||\n (this.mergedConfig.hideAttachmentsInConv && this.inConversation) ||\n (this.status.attachments.length > this.maxThumbnails)) {\n return 'hide'\n }\n return 'normal'\n },\n maxThumbnails () {\n return this.mergedConfig.maxThumbnails\n },\n ...mapGetters(['mergedConfig']),\n ...mapState({\n currentUser: state => state.users.currentUser\n })\n },\n components: {\n Attachment,\n Poll,\n Gallery,\n LinkPreview,\n StatusBody\n },\n methods: {\n toggleShowingTall () {\n controlledOrUncontrolledToggle(this, 'showingTall')\n },\n toggleExpandingSubject () {\n controlledOrUncontrolledToggle(this, 'expandingSubject')\n },\n toggleShowingLongSubject () {\n controlledOrUncontrolledToggle(this, 'showingLongSubject')\n },\n setMedia () {\n const attachments = this.attachmentSize === 'hide' ? this.status.attachments : this.galleryAttachments\n return () => this.$store.dispatch('setMedia', attachments)\n }\n }\n}\n\nexport default StatusContent\n","import { render } from \"./status_content.vue?vue&type=template&id=33f92051\"\nimport script from \"./status_content.js?vue&type=script&lang=js\"\nexport * from \"./status_content.js?vue&type=script&lang=js\"\n\nimport \"./status_content.vue?vue&type=style&index=0&id=33f92051&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"still-image\"\n :class=\"{ animated: animated }\"\n :style=\"style\"\n >\n <canvas\n v-if=\"animated\"\n ref=\"canvas\"\n />\n <!-- NOTE: key is required to force to re-render img tag when src is changed -->\n <img\n ref=\"src\"\n :key=\"realSrc\"\n :alt=\"alt\"\n :title=\"alt\"\n :data-src=\"dataSrc\"\n :src=\"realSrc\"\n :referrerpolicy=\"referrerpolicy\"\n :loading=\"loading\"\n @load=\"onLoad\"\n @error=\"onError\"\n >\n <slot />\n </div>\n</template>\n\n<script src=\"./still-image.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.still-image {\n position: relative;\n line-height: 0;\n overflow: hidden;\n display: inline-flex;\n align-items: center;\n\n canvas {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n width: 100%;\n height: 100%;\n object-fit: contain;\n visibility: var(--_still-image-canvas-visibility, visible);\n }\n\n img {\n width: 100%;\n height: 100%;\n object-fit: contain;\n }\n\n &.animated {\n &::before {\n zoom: var(--_still_image-label-scale, 1);\n content: \"gif\";\n position: absolute;\n line-height: 1;\n font-size: 0.7em;\n top: 0.5em;\n left: 0.5em;\n background: rgb(127 127 127 / 50%);\n color: #fff;\n display: block;\n padding: 2px 4px;\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n z-index: 2;\n visibility: var(--_still-image-label-visibility, visible);\n }\n\n &:hover canvas {\n display: none;\n }\n\n &:hover::before {\n visibility: var(--_still-image-label-visibility, hidden);\n }\n\n img {\n visibility: var(--_still-image-img-visibility, hidden);\n }\n\n &:hover img {\n visibility: visible;\n }\n }\n}\n</style>\n","const StillImage = {\n props: [\n 'src',\n 'referrerpolicy',\n 'mimetype',\n 'imageLoadError',\n 'imageLoadHandler',\n 'alt',\n 'height',\n 'width',\n 'dataSrc',\n 'loading'\n ],\n data () {\n return {\n // for lazy loading, see loadLazy()\n realSrc: this.src,\n stopGifs: this.$store.getters.mergedConfig.stopGifs\n }\n },\n computed: {\n animated () {\n if (!this.realSrc) {\n return false\n }\n\n return this.stopGifs && (this.mimetype === 'image/gif' || this.realSrc.endsWith('.gif'))\n },\n style () {\n const appendPx = (str) => /\\d$/.test(str) ? str + 'px' : str\n return {\n height: this.height ? appendPx(this.height) : null,\n width: this.width ? appendPx(this.width) : null\n }\n }\n },\n methods: {\n loadLazy () {\n if (this.dataSrc) {\n this.realSrc = this.dataSrc\n }\n },\n onLoad () {\n if (!this.realSrc) {\n return\n }\n const image = this.$refs.src\n if (!image) return\n this.imageLoadHandler && this.imageLoadHandler(image)\n const canvas = this.$refs.canvas\n if (!canvas) return\n const width = image.naturalWidth\n const height = image.naturalHeight\n canvas.width = width\n canvas.height = height\n canvas.getContext('2d').drawImage(image, 0, 0, width, height)\n },\n onError () {\n this.imageLoadError && this.imageLoadError()\n }\n },\n watch: {\n src () {\n this.realSrc = this.src\n },\n dataSrc () {\n this.$el.removeAttribute('data-loaded')\n }\n }\n}\n\nexport default StillImage\n","import { render } from \"./still-image.vue?vue&type=template&id=75385b10\"\nimport script from \"./still-image.js?vue&type=script&lang=js\"\nexport * from \"./still-image.js?vue&type=script&lang=js\"\n\nimport \"./still-image.vue?vue&type=style&index=0&id=75385b10&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <time\n :datetime=\"time\"\n :title=\"localeDateString\"\n >\n {{ relativeTimeString }}\n </time>\n</template>\n\n<script>\nimport * as DateUtils from 'src/services/date_utils/date_utils.js'\nimport localeService from 'src/services/locale/locale.service.js'\n\nexport default {\n name: 'Timeago',\n props: ['time', 'autoUpdate', 'longFormat', 'nowThreshold', 'templateKey'],\n data () {\n return {\n relativeTime: { key: 'time.now', num: 0 },\n interval: null\n }\n },\n computed: {\n localeDateString () {\n const browserLocale = localeService.internalToBrowserLocale(this.$i18n.locale)\n return typeof this.time === 'string'\n ? new Date(Date.parse(this.time)).toLocaleString(browserLocale)\n : this.time.toLocaleString(browserLocale)\n },\n relativeTimeString () {\n const timeString = this.$i18n.tc(this.relativeTime.key, this.relativeTime.num, [this.relativeTime.num])\n\n if (typeof this.templateKey === 'string' && this.relativeTime.key !== 'time.now') {\n return this.$i18n.t(this.templateKey, [timeString])\n }\n\n return timeString\n }\n },\n watch: {\n time (newVal, oldVal) {\n if (oldVal !== newVal) {\n clearTimeout(this.interval)\n this.refreshRelativeTimeObject()\n }\n }\n },\n created () {\n this.refreshRelativeTimeObject()\n },\n unmounted () {\n clearTimeout(this.interval)\n },\n methods: {\n refreshRelativeTimeObject () {\n const nowThreshold = typeof this.nowThreshold === 'number' ? this.nowThreshold : 1\n this.relativeTime = this.longFormat\n ? DateUtils.relativeTime(this.time, nowThreshold)\n : DateUtils.relativeTimeShort(this.time, nowThreshold)\n\n if (this.autoUpdate) {\n this.interval = setTimeout(\n this.refreshRelativeTimeObject,\n 1000 * this.autoUpdate\n )\n }\n }\n }\n}\n</script>\n","import { render } from \"./timeago.vue?vue&type=template&id=3269671b\"\nimport script from \"./timeago.vue?vue&type=script&lang=js\"\nexport * from \"./timeago.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <FAIcon\n v-if=\"user && user.screen_name_ui_contains_non_ascii\"\n icon=\"code\"\n :title=\"$t('unicode_domain_indicator.tooltip')\"\n />\n</template>\n\n<script>\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCode\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCode\n)\n\nconst UnicodeDomainIndicator = {\n props: {\n user: Object\n }\n}\n\nexport default UnicodeDomainIndicator\n</script>\n","import { render } from \"./unicode_domain_indicator.vue?vue&type=template&id=3e044e46\"\nimport script from \"./unicode_domain_indicator.vue?vue&type=script&lang=js\"\nexport * from \"./unicode_domain_indicator.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import StillImage from '../still-image/still-image.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\n\nimport {\n faRobot\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faRobot\n)\n\nconst UserAvatar = {\n props: [\n 'user',\n 'betterShadow',\n 'compact',\n 'bot'\n ],\n data () {\n return {\n showPlaceholder: false,\n defaultAvatar: `${this.$store.state.instance.server + this.$store.state.instance.defaultAvatar}`\n }\n },\n components: {\n StillImage\n },\n methods: {\n imgSrc (src) {\n return (!src || this.showPlaceholder) ? this.defaultAvatar : src\n },\n imageLoadError () {\n this.showPlaceholder = true\n }\n }\n}\n\nexport default UserAvatar\n","import { render } from \"./user_avatar.vue?vue&type=template&id=9c4bf79e\"\nimport script from \"./user_avatar.js?vue&type=script&lang=js\"\nexport * from \"./user_avatar.js?vue&type=script&lang=js\"\n\nimport \"./user_avatar.vue?vue&type=style&index=0&id=9c4bf79e&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <span\n class=\"Avatar\"\n :class=\"{ '-compact': compact }\"\n >\n <StillImage\n v-if=\"user\"\n class=\"avatar\"\n :alt=\"user.screen_name_ui\"\n :title=\"user.screen_name_ui\"\n :src=\"imgSrc(user.profile_image_url_original)\"\n :image-load-error=\"imageLoadError\"\n :class=\"{ '-compact': compact, '-better-shadow': betterShadow }\"\n />\n <div\n v-else\n class=\"avatar -placeholder\"\n :class=\"{ '-compact': compact }\"\n />\n <FAIcon\n v-if=\"bot\"\n icon=\"robot\"\n class=\"bot-indicator\"\n />\n </span>\n</template>\n\n<script src=\"./user_avatar.js\"></script>\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.Avatar {\n --_avatarShadowBox: var(--avatarStatusShadow);\n --_avatarShadowFilter: var(--avatarStatusShadowFilter);\n --_avatarShadowInset: var(--avatarStatusShadowInset);\n --_still-image-label-visibility: hidden;\n\n display: inline-block;\n position: relative;\n width: 48px;\n height: 48px;\n\n &.-compact {\n width: 32px;\n height: 32px;\n border-radius: $fallback--avatarAltRadius;\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n }\n\n .avatar {\n width: 100%;\n height: 100%;\n box-shadow: var(--_avatarShadowBox);\n border-radius: $fallback--avatarRadius;\n border-radius: var(--avatarRadius, $fallback--avatarRadius);\n\n &.-better-shadow {\n box-shadow: var(--_avatarShadowInset);\n filter: var(--_avatarShadowFilter);\n }\n\n &.-animated::before {\n display: none;\n }\n\n &.-compact {\n border-radius: $fallback--avatarAltRadius;\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n }\n\n &.-placeholder {\n background-color: $fallback--fg;\n background-color: var(--fg, $fallback--fg);\n }\n }\n\n img {\n width: 100%;\n height: 100%;\n }\n\n .bot-indicator {\n position: absolute;\n bottom: 0;\n right: 0;\n margin: -0.2em;\n padding: 0.2em;\n background: rgb(127 127 127 / 50%);\n color: #fff;\n border-radius: var(--tooltipRadius);\n }\n}\n</style>\n","<template>\n <div\n class=\"user-card\"\n :class=\"classes\"\n >\n <div\n :class=\"{ 'hide-bio': hideBio }\"\n :style=\"style\"\n class=\"background-image\"\n />\n <div :class=\"onClose ? '' : panel-heading -flexible-height\">\n <div class=\"user-info\">\n <div class=\"container\">\n <a\n v-if=\"avatarAction === 'zoom'\"\n class=\"user-info-avatar -link\"\n @click=\"zoomAvatar\"\n >\n <UserAvatar\n :better-shadow=\"betterShadow\"\n :user=\"user\"\n />\n <div class=\"user-info-avatar -link -overlay\">\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"search-plus\"\n />\n </div>\n </a>\n <UserAvatar\n v-else-if=\"typeof avatarAction === 'function'\"\n class=\"user-info-avatar\"\n :better-shadow=\"betterShadow\"\n :user=\"user\"\n @click=\"avatarAction\"\n />\n <router-link\n v-else\n :to=\"userProfileLink(user)\"\n >\n <UserAvatar\n :better-shadow=\"betterShadow\"\n :user=\"user\"\n />\n </router-link>\n <div class=\"user-summary\">\n <div class=\"top-line\">\n <router-link\n :to=\"userProfileLink(user)\"\n class=\"user-name\"\n >\n <RichContent\n :title=\"user.name\"\n :html=\"user.name\"\n :emoji=\"user.emoji\"\n />\n </router-link>\n <button\n v-if=\"!isOtherUser && user.is_local\"\n class=\"button-unstyled edit-profile-button\"\n @click.stop=\"openProfileTab\"\n >\n <FAIcon\n fixed-width\n class=\"icon\"\n icon=\"edit\"\n :title=\"$t('user_card.edit_profile')\"\n />\n </button>\n <a\n v-if=\"isOtherUser && !user.is_local\"\n :href=\"user.statusnet_profile_url\"\n target=\"_blank\"\n class=\"button-unstyled external-link-button\"\n >\n <FAIcon\n class=\"icon\"\n icon=\"external-link-alt\"\n />\n </a>\n <AccountActions\n v-if=\"isOtherUser && loggedIn\"\n :user=\"user\"\n :relationship=\"relationship\"\n />\n <router-link\n v-if=\"onClose\"\n :to=\"userProfileLink(user)\"\n class=\"button-unstyled external-link-button\"\n @click=\"onClose\"\n >\n <FAIcon\n class=\"icon\"\n icon=\"expand-alt\"\n />\n </router-link>\n <button\n v-if=\"onClose\"\n class=\"button-unstyled external-link-button\"\n @click=\"onClose\"\n >\n <FAIcon\n class=\"icon\"\n icon=\"times\"\n />\n </button>\n </div>\n <div class=\"bottom-line\">\n <user-link\n class=\"user-screen-name\"\n :user=\"user\"\n />\n <template v-if=\"!hideBio\">\n <span\n v-if=\"user.deactivated\"\n class=\"alert user-role\"\n >\n {{ $t('user_card.deactivated') }}\n </span>\n <span\n v-if=\"!!visibleRole\"\n class=\"alert user-role\"\n >\n {{ $t(`general.role.${visibleRole}`) }}\n </span>\n <span\n v-if=\"user.bot\"\n class=\"alert user-role\"\n >\n {{ $t('user_card.bot') }}\n </span>\n </template>\n <span v-if=\"user.locked\">\n <FAIcon\n class=\"lock-icon\"\n icon=\"lock\"\n size=\"sm\"\n />\n </span>\n <span\n v-if=\"!mergedConfig.hideUserStats && !hideBio\"\n class=\"dailyAvg\"\n >{{ dailyAvg }} {{ $t('user_card.per_day') }}</span>\n </div>\n </div>\n </div>\n <div class=\"user-meta\">\n <div\n v-if=\"relationship.followed_by && loggedIn && isOtherUser\"\n class=\"following\"\n >\n {{ $t('user_card.follows_you') }}\n </div>\n <div\n v-if=\"isOtherUser && (loggedIn || !switcher)\"\n class=\"highlighter\"\n >\n <!-- id's need to be unique, otherwise vue confuses which user-card checkbox belongs to -->\n <input\n v-if=\"userHighlightType !== 'disabled'\"\n :id=\"'userHighlightColorTx'+user.id\"\n v-model=\"userHighlightColor\"\n class=\"userHighlightText\"\n type=\"text\"\n >\n <input\n v-if=\"userHighlightType !== 'disabled'\"\n :id=\"'userHighlightColor'+user.id\"\n v-model=\"userHighlightColor\"\n class=\"userHighlightCl\"\n type=\"color\"\n >\n {{ ' ' }}\n <Select\n :id=\"'userHighlightSel'+user.id\"\n v-model=\"userHighlightType\"\n class=\"userHighlightSel\"\n >\n <option value=\"disabled\">\n {{ $t('user_card.highlight.disabled') }}\n </option>\n <option value=\"solid\">\n {{ $t('user_card.highlight.solid') }}\n </option>\n <option value=\"striped\">\n {{ $t('user_card.highlight.striped') }}\n </option>\n <option value=\"side\">\n {{ $t('user_card.highlight.side') }}\n </option>\n </Select>\n </div>\n </div>\n <div\n v-if=\"loggedIn && isOtherUser\"\n class=\"user-interactions\"\n >\n <div class=\"btn-group\">\n <FollowButton\n :relationship=\"relationship\"\n :user=\"user\"\n />\n <template v-if=\"relationship.following\">\n <ProgressButton\n v-if=\"!relationship.subscribing\"\n class=\"btn button-default\"\n :click=\"subscribeUser\"\n :title=\"$t('user_card.subscribe')\"\n >\n <FAIcon icon=\"bell\" />\n </ProgressButton>\n <ProgressButton\n v-else\n class=\"btn button-default toggled\"\n :click=\"unsubscribeUser\"\n :title=\"$t('user_card.unsubscribe')\"\n >\n <FALayers>\n <FAIcon\n icon=\"rss\"\n transform=\"left-5 shrink-6 up-3 rotate-20\"\n flip=\"horizontal\"\n />\n <FAIcon\n icon=\"rss\"\n transform=\"right-5 shrink-6 up-3 rotate-20\"\n />\n <FAIcon icon=\"bell\" />\n </FALayers>\n </ProgressButton>\n </template>\n </div>\n <div>\n <button\n v-if=\"relationship.muting\"\n class=\"btn button-default btn-block toggled\"\n :disabled=\"user.deactivated\"\n @click=\"unmuteUser\"\n >\n {{ $t('user_card.muted') }}\n </button>\n <button\n v-else\n class=\"btn button-default btn-block\"\n :disabled=\"user.deactivated\"\n @click=\"muteUser\"\n >\n {{ $t('user_card.mute') }}\n </button>\n </div>\n <div>\n <button\n class=\"btn button-default btn-block\"\n :disabled=\"user.deactivated\"\n @click=\"mentionUser\"\n >\n {{ $t('user_card.mention') }}\n </button>\n </div>\n <ModerationTools\n v-if=\"showModerationMenu\"\n :user=\"user\"\n />\n </div>\n <div\n v-if=\"!loggedIn && user.is_local\"\n class=\"user-interactions\"\n >\n <RemoteFollow :user=\"user\" />\n </div>\n <UserNote\n v-if=\"loggedIn && isOtherUser && (hasNote || (hasNoteEditor && supportsNote))\"\n :user=\"user\"\n :relationship=\"relationship\"\n :editable=\"hasNoteEditor\"\n />\n </div>\n </div>\n <div\n v-if=\"!hideBio\"\n class=\"panel-body\"\n >\n <div\n v-if=\"!mergedConfig.hideUserStats && switcher\"\n class=\"user-counts\"\n >\n <div\n class=\"user-count\"\n @click.prevent=\"setProfileView('statuses')\"\n >\n <h5>{{ $t('user_card.statuses') }}</h5>\n <span>{{ user.statuses_count }} <br></span>\n </div>\n <div\n class=\"user-count\"\n @click.prevent=\"setProfileView('friends')\"\n >\n <h5>{{ $t('user_card.followees') }}</h5>\n <span>{{ hideFollowsCount ? $t('user_card.hidden') : user.friends_count }}</span>\n </div>\n <div\n class=\"user-count\"\n @click.prevent=\"setProfileView('followers')\"\n >\n <h5>{{ $t('user_card.followers') }}</h5>\n <span>{{ hideFollowersCount ? $t('user_card.hidden') : user.followers_count }}</span>\n </div>\n </div>\n <RichContent\n v-if=\"!hideBio\"\n class=\"user-card-bio\"\n :html=\"user.description_html\"\n :emoji=\"user.emoji\"\n :handle-links=\"true\"\n />\n </div>\n <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingConfirmMute\"\n :title=\"$t('user_card.mute_confirm_title')\"\n :confirm-text=\"$t('user_card.mute_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.mute_confirm_cancel_button')\"\n @accepted=\"doMuteUser\"\n @cancelled=\"hideConfirmMute\"\n >\n <i18n-t\n keypath=\"user_card.mute_confirm\"\n tag=\"div\"\n >\n <template #user>\n <span\n v-text=\"user.screen_name_ui\"\n />\n </template>\n </i18n-t>\n <div\n class=\"mute-expiry\"\n >\n <label>\n {{ $t('user_card.mute_duration_prompt') }}\n </label>\n <input\n v-model=\"muteExpiryAmount\"\n type=\"number\"\n class=\"expiry-amount hide-number-spinner\"\n :min=\"0\"\n >\n <Select\n v-model=\"muteExpiryUnit\"\n unstyled=\"true\"\n class=\"expiry-unit\"\n >\n <option\n v-for=\"unit in muteExpiryUnits\"\n :key=\"unit\"\n :value=\"unit\"\n >\n {{ $t(`time.${unit}_short`, ['']) }}\n </option>\n </Select>\n </div>\n </confirm-modal>\n </teleport>\n </div>\n</template>\n\n<script src=\"./user_card.js\"></script>\n\n<style lang=\"scss\" src=\"./user_card.scss\" />\n","<template>\n <div>\n <Popover\n trigger=\"click\"\n class=\"moderation-tools-popover\"\n placement=\"bottom\"\n :offset=\"{ y: 5 }\"\n @show=\"setToggled(true)\"\n @close=\"setToggled(false)\"\n >\n <template #content>\n <div class=\"dropdown-menu\">\n <span v-if=\"canGrantRole\">\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleRight(&quot;admin&quot;)\"\n >\n {{ $t(!!user.rights.admin ? 'user_card.admin_menu.revoke_admin' : 'user_card.admin_menu.grant_admin') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleRight(&quot;moderator&quot;)\"\n >\n {{ $t(!!user.rights.moderator ? 'user_card.admin_menu.revoke_moderator' : 'user_card.admin_menu.grant_moderator') }}\n </button>\n <div\n v-if=\"canChangeActivationState || canDeleteAccount\"\n role=\"separator\"\n class=\"dropdown-divider\"\n />\n </span>\n <button\n v-if=\"canChangeActivationState\"\n class=\"button-default dropdown-item\"\n @click=\"toggleActivationStatus()\"\n >\n {{ $t(!!user.deactivated ? 'user_card.admin_menu.activate_account' : 'user_card.admin_menu.deactivate_account') }}\n </button>\n <button\n v-if=\"canDeleteAccount\"\n class=\"button-default dropdown-item\"\n @click=\"deleteUserDialog(true)\"\n >\n {{ $t('user_card.admin_menu.delete_account') }}\n </button>\n <div\n v-if=\"canUseTagPolicy\"\n role=\"separator\"\n class=\"dropdown-divider\"\n />\n <span v-if=\"canUseTagPolicy\">\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleTag(tags.FORCE_NSFW)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hasTag(tags.FORCE_NSFW) }\"\n />\n {{ $t('user_card.admin_menu.force_nsfw') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleTag(tags.STRIP_MEDIA)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hasTag(tags.STRIP_MEDIA) }\"\n />\n {{ $t('user_card.admin_menu.strip_media') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleTag(tags.FORCE_UNLISTED)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hasTag(tags.FORCE_UNLISTED) }\"\n />\n {{ $t('user_card.admin_menu.force_unlisted') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleTag(tags.SANDBOX)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hasTag(tags.SANDBOX) }\"\n />\n {{ $t('user_card.admin_menu.sandbox') }}\n </button>\n <button\n v-if=\"user.is_local\"\n class=\"button-default dropdown-item\"\n @click=\"toggleTag(tags.DISABLE_REMOTE_SUBSCRIPTION)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hasTag(tags.DISABLE_REMOTE_SUBSCRIPTION) }\"\n />\n {{ $t('user_card.admin_menu.disable_remote_subscription') }}\n </button>\n <button\n v-if=\"user.is_local\"\n class=\"button-default dropdown-item\"\n @click=\"toggleTag(tags.DISABLE_ANY_SUBSCRIPTION)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hasTag(tags.DISABLE_ANY_SUBSCRIPTION) }\"\n />\n {{ $t('user_card.admin_menu.disable_any_subscription') }}\n </button>\n <button\n v-if=\"user.is_local\"\n class=\"button-default dropdown-item\"\n @click=\"toggleTag(tags.QUARANTINE)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hasTag(tags.QUARANTINE) }\"\n />\n {{ $t('user_card.admin_menu.quarantine') }}\n </button>\n </span>\n </div>\n </template>\n <template #trigger>\n <button\n class=\"btn button-default btn-block moderation-tools-button\"\n :class=\"{ toggled }\"\n >\n {{ $t('user_card.admin_menu.moderation') }}\n <FAIcon icon=\"chevron-down\" />\n </button>\n </template>\n </Popover>\n <teleport to=\"#modal\">\n <DialogModal\n v-if=\"showDeleteUserDialog\"\n :on-cancel=\"deleteUserDialog.bind(this, false)\"\n >\n <template #header>\n {{ $t('user_card.admin_menu.delete_user') }}\n </template>\n <p>{{ $t('user_card.admin_menu.delete_user_confirmation') }}</p>\n <template #footer>\n <button\n class=\"btn button-default\"\n @click=\"deleteUserDialog(false)\"\n >\n {{ $t('general.cancel') }}\n </button>\n <button\n class=\"btn button-default danger\"\n @click=\"deleteUser()\"\n >\n {{ $t('user_card.admin_menu.delete_user') }}\n </button>\n </template>\n </DialogModal>\n </teleport>\n </div>\n</template>\n\n<script src=\"./moderation_tools.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.moderation-tools-popover {\n height: 100%;\n\n .trigger {\n /* stylelint-disable-next-line declaration-no-important */\n display: flex !important;\n height: 100%;\n }\n}\n\n.moderation-tools-button {\n svg,\n i {\n font-size: 0.8em;\n }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faChevronDown } from '@fortawesome/free-solid-svg-icons'\n\nimport DialogModal from '../dialog_modal/dialog_modal.vue'\nimport Popover from '../popover/popover.vue'\n\nlibrary.add(faChevronDown)\n\nconst FORCE_NSFW = 'mrf_tag:media-force-nsfw'\nconst STRIP_MEDIA = 'mrf_tag:media-strip'\nconst FORCE_UNLISTED = 'mrf_tag:force-unlisted'\nconst DISABLE_REMOTE_SUBSCRIPTION = 'mrf_tag:disable-remote-subscription'\nconst DISABLE_ANY_SUBSCRIPTION = 'mrf_tag:disable-any-subscription'\nconst SANDBOX = 'mrf_tag:sandbox'\nconst QUARANTINE = 'mrf_tag:quarantine'\n\nconst ModerationTools = {\n props: [\n 'user'\n ],\n data () {\n return {\n tags: {\n FORCE_NSFW,\n STRIP_MEDIA,\n FORCE_UNLISTED,\n DISABLE_REMOTE_SUBSCRIPTION,\n DISABLE_ANY_SUBSCRIPTION,\n SANDBOX,\n QUARANTINE\n },\n showDeleteUserDialog: false,\n toggled: false\n }\n },\n components: {\n DialogModal,\n Popover\n },\n computed: {\n tagsSet () {\n return new Set(this.user.tags)\n },\n canGrantRole () {\n return this.user.is_local && !this.user.deactivated && this.$store.state.users.currentUser.role === 'admin'\n },\n canChangeActivationState () {\n return this.privileged('users_manage_activation_state')\n },\n canDeleteAccount () {\n return this.privileged('users_delete')\n },\n canUseTagPolicy () {\n return this.$store.state.instance.tagPolicyAvailable && this.privileged('users_manage_tags')\n }\n },\n methods: {\n hasTag (tagName) {\n return this.tagsSet.has(tagName)\n },\n privileged (privilege) {\n return this.$store.state.users.currentUser.privileges.includes(privilege)\n },\n toggleTag (tag) {\n const store = this.$store\n if (this.tagsSet.has(tag)) {\n store.state.api.backendInteractor.untagUser({ user: this.user, tag }).then(response => {\n if (!response.ok) { return }\n store.commit('untagUser', { user: this.user, tag })\n })\n } else {\n store.state.api.backendInteractor.tagUser({ user: this.user, tag }).then(response => {\n if (!response.ok) { return }\n store.commit('tagUser', { user: this.user, tag })\n })\n }\n },\n toggleRight (right) {\n const store = this.$store\n if (this.user.rights[right]) {\n store.state.api.backendInteractor.deleteRight({ user: this.user, right }).then(response => {\n if (!response.ok) { return }\n store.commit('updateRight', { user: this.user, right, value: false })\n })\n } else {\n store.state.api.backendInteractor.addRight({ user: this.user, right }).then(response => {\n if (!response.ok) { return }\n store.commit('updateRight', { user: this.user, right, value: true })\n })\n }\n },\n toggleActivationStatus () {\n this.$store.dispatch('toggleActivationStatus', { user: this.user })\n },\n deleteUserDialog (show) {\n this.showDeleteUserDialog = show\n },\n deleteUser () {\n const store = this.$store\n const user = this.user\n const { id, name } = user\n store.state.api.backendInteractor.deleteUser({ user })\n .then(e => {\n this.$store.dispatch('markStatusesAsDeleted', status => user.id === status.user.id)\n const isProfile = this.$route.name === 'external-user-profile' || this.$route.name === 'user-profile'\n const isTargetUser = this.$route.params.name === name || this.$route.params.id === id\n if (isProfile && isTargetUser) {\n window.history.back()\n }\n })\n },\n setToggled (value) {\n this.toggled = value\n }\n }\n}\n\nexport default ModerationTools\n","import { render } from \"./moderation_tools.vue?vue&type=template&id=352f537c\"\nimport script from \"./moderation_tools.js?vue&type=script&lang=js\"\nexport * from \"./moderation_tools.js?vue&type=script&lang=js\"\n\nimport \"./moderation_tools.vue?vue&type=style&index=0&id=352f537c&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"AccountActions\">\n <Popover\n trigger=\"click\"\n placement=\"bottom\"\n :bound-to=\"{ x: 'container' }\"\n remove-padding\n >\n <template #content>\n <div class=\"dropdown-menu\">\n <template v-if=\"relationship.following\">\n <button\n v-if=\"relationship.showing_reblogs\"\n class=\"btn button-default dropdown-item\"\n @click=\"hideRepeats\"\n >\n {{ $t('user_card.hide_repeats') }}\n </button>\n <button\n v-if=\"!relationship.showing_reblogs\"\n class=\"btn button-default dropdown-item\"\n @click=\"showRepeats\"\n >\n {{ $t('user_card.show_repeats') }}\n </button>\n <div\n role=\"separator\"\n class=\"dropdown-divider\"\n />\n </template>\n <UserListMenu :user=\"user\" />\n <button\n v-if=\"relationship.followed_by\"\n class=\"btn button-default btn-block dropdown-item\"\n @click=\"removeUserFromFollowers\"\n >\n {{ $t('user_card.remove_follower') }}\n </button>\n <button\n v-if=\"relationship.blocking\"\n class=\"btn button-default btn-block dropdown-item\"\n @click=\"unblockUser\"\n >\n {{ $t('user_card.unblock') }}\n </button>\n <button\n v-else\n class=\"btn button-default btn-block dropdown-item\"\n @click=\"blockUser\"\n >\n {{ $t('user_card.block') }}\n </button>\n <button\n class=\"btn button-default btn-block dropdown-item\"\n @click=\"reportUser\"\n >\n {{ $t('user_card.report') }}\n </button>\n <button\n v-if=\"pleromaChatMessagesAvailable\"\n class=\"btn button-default btn-block dropdown-item\"\n @click=\"openChat\"\n >\n {{ $t('user_card.message') }}\n </button>\n </div>\n </template>\n <template #trigger>\n <button class=\"button-unstyled ellipsis-button\">\n <FAIcon\n class=\"icon\"\n icon=\"ellipsis-v\"\n />\n </button>\n </template>\n </Popover>\n <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingConfirmBlock\"\n :title=\"$t('user_card.block_confirm_title')\"\n :confirm-text=\"$t('user_card.block_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.block_confirm_cancel_button')\"\n @accepted=\"doBlockUser\"\n @cancelled=\"hideConfirmBlock\"\n >\n <i18n-t\n keypath=\"user_card.block_confirm\"\n tag=\"span\"\n >\n <template #user>\n <span\n v-text=\"user.screen_name_ui\"\n />\n </template>\n </i18n-t>\n </confirm-modal>\n </teleport>\n <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingConfirmRemoveFollower\"\n :title=\"$t('user_card.remove_follower_confirm_title')\"\n :confirm-text=\"$t('user_card.remove_follower_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.remove_follower_confirm_cancel_button')\"\n @accepted=\"doRemoveUserFromFollowers\"\n @cancelled=\"hideConfirmRemoveUserFromFollowers\"\n >\n <i18n-t\n keypath=\"user_card.remove_follower_confirm\"\n tag=\"span\"\n >\n <template #user>\n <span\n v-text=\"user.screen_name_ui\"\n />\n </template>\n </i18n-t>\n </confirm-modal>\n </teleport>\n </div>\n</template>\n\n<script src=\"./account_actions.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.AccountActions {\n .ellipsis-button {\n width: 2.5em;\n margin: -0.5em 0;\n padding: 0.5em 0;\n text-align: center;\n\n &:not(:hover) .icon {\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n }\n}\n</style>\n","<template>\n <div class=\"UserListMenu\">\n <Popover\n trigger=\"hover\"\n placement=\"left\"\n remove-padding\n >\n <template #content>\n <div class=\"dropdown-menu\">\n <button\n v-for=\"list in lists\"\n :key=\"list.id\"\n class=\"button-default dropdown-item\"\n @click=\"toggleList(list.id)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': list.inList }\"\n />\n {{ list.title }}\n </button>\n </div>\n </template>\n <template #trigger>\n <button class=\"btn button-default dropdown-item -has-submenu\">\n {{ $t('lists.manage_lists') }}\n <FAIcon\n class=\"chevron-icon\"\n size=\"lg\"\n icon=\"chevron-right\"\n />\n </button>\n </template>\n </Popover>\n </div>\n</template>\n\n<script src=\"./user_list_menu.js\"></script>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faChevronRight } from '@fortawesome/free-solid-svg-icons'\nimport { mapState } from 'vuex'\n\nimport DialogModal from '../dialog_modal/dialog_modal.vue'\nimport Popover from '../popover/popover.vue'\n\nlibrary.add(faChevronRight)\n\nconst UserListMenu = {\n props: [\n 'user'\n ],\n data () {\n return {}\n },\n components: {\n DialogModal,\n Popover\n },\n created () {\n this.$store.dispatch('fetchUserInLists', this.user.id)\n },\n computed: {\n ...mapState({\n allLists: state => state.lists.allLists\n }),\n inListsSet () {\n return new Set(this.user.inLists.map(x => x.id))\n },\n lists () {\n if (!this.user.inLists) return []\n return this.allLists.map(list => ({\n ...list,\n inList: this.inListsSet.has(list.id)\n }))\n }\n },\n methods: {\n toggleList (listId) {\n if (this.inListsSet.has(listId)) {\n this.$store.dispatch('removeListAccount', { accountId: this.user.id, listId }).then((response) => {\n if (!response.ok) { return }\n this.$store.dispatch('fetchUserInLists', this.user.id)\n })\n } else {\n this.$store.dispatch('addListAccount', { accountId: this.user.id, listId }).then((response) => {\n if (!response.ok) { return }\n this.$store.dispatch('fetchUserInLists', this.user.id)\n })\n }\n },\n toggleRight (right) {\n const store = this.$store\n if (this.user.rights[right]) {\n store.state.api.backendInteractor.deleteRight({ user: this.user, right }).then(response => {\n if (!response.ok) { return }\n store.commit('updateRight', { user: this.user, right, value: false })\n })\n } else {\n store.state.api.backendInteractor.addRight({ user: this.user, right }).then(response => {\n if (!response.ok) { return }\n store.commit('updateRight', { user: this.user, right, value: true })\n })\n }\n },\n toggleActivationStatus () {\n this.$store.dispatch('toggleActivationStatus', { user: this.user })\n },\n deleteUserDialog (show) {\n this.showDeleteUserDialog = show\n },\n deleteUser () {\n const store = this.$store\n const user = this.user\n const { id, name } = user\n store.state.api.backendInteractor.deleteUser({ user })\n .then(e => {\n this.$store.dispatch('markStatusesAsDeleted', status => user.id === status.user.id)\n const isProfile = this.$route.name === 'external-user-profile' || this.$route.name === 'user-profile'\n const isTargetUser = this.$route.params.name === name || this.$route.params.id === id\n if (isProfile && isTargetUser) {\n window.history.back()\n }\n })\n },\n setToggled (value) {\n this.toggled = value\n }\n }\n}\n\nexport default UserListMenu\n","import { render } from \"./user_list_menu.vue?vue&type=template&id=aeea2640\"\nimport script from \"./user_list_menu.js?vue&type=script&lang=js\"\nexport * from \"./user_list_menu.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { mapState } from 'vuex'\nimport ProgressButton from '../progress_button/progress_button.vue'\nimport Popover from '../popover/popover.vue'\nimport UserListMenu from 'src/components/user_list_menu/user_list_menu.vue'\nimport ConfirmModal from '../confirm_modal/confirm_modal.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faEllipsisV\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faEllipsisV\n)\n\nconst AccountActions = {\n props: [\n 'user', 'relationship'\n ],\n data () {\n return {\n showingConfirmBlock: false,\n showingConfirmRemoveFollower: false\n }\n },\n components: {\n ProgressButton,\n Popover,\n UserListMenu,\n ConfirmModal\n },\n methods: {\n showConfirmBlock () {\n this.showingConfirmBlock = true\n },\n hideConfirmBlock () {\n this.showingConfirmBlock = false\n },\n showConfirmRemoveUserFromFollowers () {\n this.showingConfirmRemoveFollower = true\n },\n hideConfirmRemoveUserFromFollowers () {\n this.showingConfirmRemoveFollower = false\n },\n showRepeats () {\n this.$store.dispatch('showReblogs', this.user.id)\n },\n hideRepeats () {\n this.$store.dispatch('hideReblogs', this.user.id)\n },\n blockUser () {\n if (!this.shouldConfirmBlock) {\n this.doBlockUser()\n } else {\n this.showConfirmBlock()\n }\n },\n doBlockUser () {\n this.$store.dispatch('blockUser', this.user.id)\n this.hideConfirmBlock()\n },\n unblockUser () {\n this.$store.dispatch('unblockUser', this.user.id)\n },\n removeUserFromFollowers () {\n if (!this.shouldConfirmRemoveUserFromFollowers) {\n this.doRemoveUserFromFollowers()\n } else {\n this.showConfirmRemoveUserFromFollowers()\n }\n },\n doRemoveUserFromFollowers () {\n this.$store.dispatch('removeUserFromFollowers', this.user.id)\n this.hideConfirmRemoveUserFromFollowers()\n },\n reportUser () {\n this.$store.dispatch('openUserReportingModal', { userId: this.user.id })\n },\n openChat () {\n this.$router.push({\n name: 'chat',\n params: { username: this.$store.state.users.currentUser.screen_name, recipient_id: this.user.id }\n })\n }\n },\n computed: {\n shouldConfirmBlock () {\n return this.$store.getters.mergedConfig.modalOnBlock\n },\n shouldConfirmRemoveUserFromFollowers () {\n return this.$store.getters.mergedConfig.modalOnRemoveUserFromFollowers\n },\n ...mapState({\n pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable\n })\n }\n}\n\nexport default AccountActions\n","import { render } from \"./account_actions.vue?vue&type=template&id=2d1f537d\"\nimport script from \"./account_actions.js?vue&type=script&lang=js\"\nexport * from \"./account_actions.js?vue&type=script&lang=js\"\n\nimport \"./account_actions.vue?vue&type=style&index=0&id=2d1f537d&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"user-note\"\n >\n <div class=\"heading\">\n <span>{{ $t('user_card.note') }}</span>\n <div class=\"buttons\">\n <button\n v-show=\"!editing && editable\"\n class=\"button-default btn\"\n @click=\"startEditing\"\n >\n {{ $t('user_card.edit_note') }}\n </button>\n <button\n v-show=\"editing\"\n class=\"button-default btn\"\n :disabled=\"frozen\"\n @click=\"finalizeEditing\"\n >\n {{ $t('user_card.edit_note_apply') }}\n </button>\n <button\n v-show=\"editing\"\n class=\"button-default btn\"\n :disabled=\"frozen\"\n @click=\"cancelEditing\"\n >\n {{ $t('user_card.edit_note_cancel') }}\n </button>\n </div>\n </div>\n <textarea\n v-show=\"editing\"\n v-model=\"localNote\"\n class=\"note-text\"\n />\n <span\n v-show=\"!editing\"\n class=\"note-text\"\n :class=\"{ '-blank': !relationship.note }\"\n >\n {{ relationship.note || $t('user_card.note_blank') }}\n </span>\n </div>\n</template>\n\n<script src=\"./user_note.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.user-note {\n display: flex;\n flex-direction: column;\n\n .heading {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 0.75em;\n\n .btn {\n min-width: 95px;\n }\n\n .buttons {\n display: flex;\n flex-direction: row;\n justify-content: right;\n\n .btn {\n margin-left: 0.5em;\n }\n }\n }\n\n .note-text {\n align-self: stretch;\n }\n\n .note-text.-blank {\n font-style: italic;\n color: var(--faint, $fallback--faint);\n }\n}\n</style>\n","const UserNote = {\n props: {\n user: Object,\n relationship: Object,\n editable: Boolean\n },\n data () {\n return {\n localNote: '',\n editing: false,\n frozen: false\n }\n },\n computed: {\n shouldShow () {\n return this.relationship.note || this.editing\n }\n },\n methods: {\n startEditing () {\n this.localNote = this.relationship.note\n this.editing = true\n },\n cancelEditing () {\n this.editing = false\n },\n finalizeEditing () {\n this.frozen = true\n\n this.$store.dispatch('editUserNote', {\n id: this.user.id,\n comment: this.localNote\n })\n .then(() => {\n this.frozen = false\n this.editing = false\n })\n .catch(() => {\n this.frozen = false\n })\n }\n }\n}\n\nexport default UserNote\n","import { render } from \"./user_note.vue?vue&type=template&id=3c543a1e\"\nimport script from \"./user_note.js?vue&type=script&lang=js\"\nexport * from \"./user_note.js?vue&type=script&lang=js\"\n\nimport \"./user_note.vue?vue&type=style&index=0&id=3c543a1e&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { unitToSeconds } from 'src/services/date_utils/date_utils.js'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport RemoteFollow from '../remote_follow/remote_follow.vue'\nimport ProgressButton from '../progress_button/progress_button.vue'\nimport FollowButton from '../follow_button/follow_button.vue'\nimport ModerationTools from '../moderation_tools/moderation_tools.vue'\nimport AccountActions from '../account_actions/account_actions.vue'\nimport UserNote from '../user_note/user_note.vue'\nimport Select from '../select/select.vue'\nimport UserLink from '../user_link/user_link.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport ConfirmModal from '../confirm_modal/confirm_modal.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faBell,\n faRss,\n faSearchPlus,\n faExternalLinkAlt,\n faEdit,\n faTimes,\n faExpandAlt\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faRss,\n faBell,\n faSearchPlus,\n faExternalLinkAlt,\n faEdit,\n faTimes,\n faExpandAlt\n)\n\nexport default {\n props: [\n 'userId',\n 'switcher',\n 'selected',\n 'hideBio',\n 'rounded',\n 'bordered',\n 'avatarAction', // default - open profile, 'zoom' - zoom, function - call function\n 'onClose',\n 'hasNoteEditor'\n ],\n data () {\n return {\n followRequestInProgress: false,\n betterShadow: this.$store.state.interface.browserSupport.cssFilter,\n showingConfirmMute: false,\n muteExpiryAmount: 0,\n muteExpiryUnit: 'minutes'\n }\n },\n created () {\n this.$store.dispatch('fetchUserRelationship', this.user.id)\n },\n computed: {\n user () {\n return this.$store.getters.findUser(this.userId)\n },\n relationship () {\n return this.$store.getters.relationship(this.userId)\n },\n classes () {\n return [{\n '-rounded-t': this.rounded === 'top', // set border-top-left-radius and border-top-right-radius\n '-rounded': this.rounded === true, // set border-radius for all sides\n '-bordered': this.bordered === true, // set border for all sides\n '-popover': !!this.onClose // set popover rounding\n }]\n },\n style () {\n return {\n backgroundImage: [\n 'linear-gradient(to bottom, var(--profileTint), var(--profileTint))',\n `url(${this.user.cover_photo})`\n ].join(', ')\n }\n },\n isOtherUser () {\n return this.user.id !== this.$store.state.users.currentUser.id\n },\n subscribeUrl () {\n // eslint-disable-next-line no-undef\n const serverUrl = new URL(this.user.statusnet_profile_url)\n return `${serverUrl.protocol}//${serverUrl.host}/main/ostatus`\n },\n loggedIn () {\n return this.$store.state.users.currentUser\n },\n dailyAvg () {\n const days = Math.ceil((new Date() - new Date(this.user.created_at)) / (60 * 60 * 24 * 1000))\n return Math.round(this.user.statuses_count / days)\n },\n userHighlightType: {\n get () {\n const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n return (data && data.type) || 'disabled'\n },\n set (type) {\n const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n if (type !== 'disabled') {\n this.$store.dispatch('setHighlight', { user: this.user.screen_name, color: (data && data.color) || '#FFFFFF', type })\n } else {\n this.$store.dispatch('setHighlight', { user: this.user.screen_name, color: undefined })\n }\n },\n ...mapGetters(['mergedConfig'])\n },\n userHighlightColor: {\n get () {\n const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n return data && data.color\n },\n set (color) {\n this.$store.dispatch('setHighlight', { user: this.user.screen_name, color })\n }\n },\n visibleRole () {\n const rights = this.user.rights\n if (!rights) { return }\n const validRole = rights.admin || rights.moderator\n const roleTitle = rights.admin ? 'admin' : 'moderator'\n return validRole && roleTitle\n },\n hideFollowsCount () {\n return this.isOtherUser && this.user.hide_follows_count\n },\n hideFollowersCount () {\n return this.isOtherUser && this.user.hide_followers_count\n },\n showModerationMenu () {\n const privileges = this.loggedIn.privileges\n return this.loggedIn.role === 'admin' || privileges.includes('users_manage_activation_state') || privileges.includes('users_delete') || privileges.includes('users_manage_tags')\n },\n hasNote () {\n return this.relationship.note\n },\n supportsNote () {\n return 'note' in this.relationship\n },\n shouldConfirmMute () {\n return this.mergedConfig.modalOnMute\n },\n muteExpiryUnits () {\n return ['minutes', 'hours', 'days']\n },\n ...mapGetters(['mergedConfig'])\n },\n components: {\n UserAvatar,\n RemoteFollow,\n ModerationTools,\n AccountActions,\n ProgressButton,\n FollowButton,\n Select,\n RichContent,\n UserLink,\n UserNote,\n ConfirmModal\n },\n methods: {\n showConfirmMute () {\n this.showingConfirmMute = true\n },\n hideConfirmMute () {\n this.showingConfirmMute = false\n },\n muteUser () {\n if (!this.shouldConfirmMute) {\n this.doMuteUser()\n } else {\n this.showConfirmMute()\n }\n },\n doMuteUser () {\n this.$store.dispatch('muteUser', {\n id: this.user.id,\n expiresIn: this.shouldConfirmMute ? unitToSeconds(this.muteExpiryUnit, this.muteExpiryAmount) : 0\n })\n this.hideConfirmMute()\n },\n unmuteUser () {\n this.$store.dispatch('unmuteUser', this.user.id)\n },\n subscribeUser () {\n return this.$store.dispatch('subscribeUser', this.user.id)\n },\n unsubscribeUser () {\n return this.$store.dispatch('unsubscribeUser', this.user.id)\n },\n setProfileView (v) {\n if (this.switcher) {\n const store = this.$store\n store.commit('setProfileView', { v })\n }\n },\n linkClicked ({ target }) {\n if (target.tagName === 'SPAN') {\n target = target.parentNode\n }\n if (target.tagName === 'A') {\n window.open(target.href, '_blank')\n }\n },\n userProfileLink (user) {\n return generateProfileLink(\n user.id, user.screen_name,\n this.$store.state.instance.restrictedNicknames\n )\n },\n openProfileTab () {\n this.$store.dispatch('openSettingsModalTab', 'profile')\n },\n zoomAvatar () {\n const attachment = {\n url: this.user.profile_image_url_original,\n mimetype: 'image'\n }\n this.$store.dispatch('setMedia', [attachment])\n this.$store.dispatch('setCurrentMedia', attachment)\n },\n mentionUser () {\n this.$store.dispatch('openPostStatusModal', { replyTo: true, repliedUser: this.user })\n },\n onAvatarClickHandler (e) {\n if (this.onAvatarClick) {\n e.preventDefault()\n this.onAvatarClick()\n }\n }\n }\n}\n","import { render } from \"./user_card.vue?vue&type=template&id=bc098958\"\nimport script from \"./user_card.js?vue&type=script&lang=js\"\nexport * from \"./user_card.js?vue&type=script&lang=js\"\n\nimport \"./user_card.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <router-link\n :title=\"user.screen_name_ui\"\n :to=\"userProfileLink(user)\"\n >\n {{ at ? '@' : '' }}{{ user.screen_name_ui }}<UnicodeDomainIndicator\n :user=\"user\"\n />\n </router-link>\n</template>\n\n<script>\nimport UnicodeDomainIndicator from '../unicode_domain_indicator/unicode_domain_indicator.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\n\nconst UserLink = {\n props: {\n user: Object,\n at: {\n type: Boolean,\n default: true\n }\n },\n components: {\n UnicodeDomainIndicator\n },\n methods: {\n userProfileLink (user) {\n return generateProfileLink(\n user.id, user.screen_name,\n this.$store.state.instance.restrictedNicknames\n )\n }\n }\n}\n\nexport default UserLink\n</script>\n","import { render } from \"./user_link.vue?vue&type=template&id=2cae9070\"\nimport script from \"./user_link.vue?vue&type=script&lang=js\"\nexport * from \"./user_link.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import UserCard from '../user_card/user_card.vue'\nimport { defineAsyncComponent } from 'vue'\n\nconst UserPopover = {\n name: 'UserPopover',\n props: [\n 'userId', 'overlayCenters', 'disabled', 'overlayCentersSelector'\n ],\n components: {\n UserCard,\n Popover: defineAsyncComponent(() => import('../popover/popover.vue'))\n },\n computed: {\n userPopoverAvatarAction () {\n return this.$store.getters.mergedConfig.userPopoverAvatarAction\n },\n userPopoverOverlay () {\n return this.$store.getters.mergedConfig.userPopoverOverlay\n }\n }\n}\n\nexport default UserPopover\n","import { render } from \"./user_popover.vue?vue&type=template&id=6d5beeb8\"\nimport script from \"./user_popover.js?vue&type=script&lang=js\"\nexport * from \"./user_popover.js?vue&type=script&lang=js\"\n\nimport \"./user_popover.vue?vue&type=style&index=0&id=6d5beeb8&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Popover\n trigger=\"click\"\n popover-class=\"popover-default user-popover\"\n :overlay-centers-selector=\"overlayCentersSelector || '.user-info .Avatar'\"\n :overlay-centers=\"overlayCenters && userPopoverOverlay\"\n :disabled=\"disabled\"\n >\n <template #trigger>\n <slot />\n </template>\n <template #content=\"{close}\">\n <UserCard\n class=\"user-popover\"\n :user-id=\"userId\"\n :hide-bio=\"true\"\n :avatar-action=\"userPopoverAvatarAction == 'close' ? close : userPopoverAvatarAction\"\n :on-close=\"close\"\n />\n </template>\n </Popover>\n</template>\n\n<script src=\"./user_popover.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n/* popover styles load on-demand, so we need to override */\n/* stylelint-disable block-no-empty */\n.user-popover.popover {\n}\n/* stylelint-enable block-no-empty */\n\n</style>\n","\nconst VideoAttachment = {\n props: ['attachment', 'controls'],\n data () {\n return {\n blocksSuspend: false,\n // Start from true because removing \"loop\" property seems buggy in Vue\n hasAudio: true\n }\n },\n computed: {\n loopVideo () {\n if (this.$store.getters.mergedConfig.loopVideoSilentOnly) {\n return !this.hasAudio\n }\n return this.$store.getters.mergedConfig.loopVideo\n }\n },\n methods: {\n onPlaying (e) {\n this.setHasAudio(e)\n if (this.loopVideo) {\n this.$emit('play', { looping: true })\n return\n }\n this.$emit('play')\n },\n onPaused (e) {\n this.$emit('pause')\n },\n setHasAudio (e) {\n const target = e.srcElement || e.target\n // If hasAudio is false, we've already marked this video to not have audio,\n // a video can't gain audio out of nowhere so don't bother checking again.\n if (!this.hasAudio) return\n if (typeof target.webkitAudioDecodedByteCount !== 'undefined') {\n // non-zero if video has audio track\n if (target.webkitAudioDecodedByteCount > 0) return\n }\n if (typeof target.mozHasAudio !== 'undefined') {\n // true if video has audio track\n if (target.mozHasAudio) return\n }\n if (typeof target.audioTracks !== 'undefined') {\n if (target.audioTracks.length > 0) return\n }\n this.hasAudio = false\n }\n }\n}\n\nexport default VideoAttachment\n","import { render } from \"./video_attachment.vue?vue&type=template&id=dda2841a\"\nimport script from \"./video_attachment.js?vue&type=script&lang=js\"\nexport * from \"./video_attachment.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <video\n class=\"video\"\n preload=\"metadata\"\n :src=\"attachment.url\"\n :loop=\"loopVideo\"\n :controls=\"controls\"\n :alt=\"attachment.description\"\n :title=\"attachment.description\"\n playsinline\n @playing=\"onPlaying\"\n @pause=\"onPaused\"\n />\n</template>\n\n<script src=\"./video_attachment.js\"></script>\n","var map = {\n\t\"./ar.json\": [\n\t\t36224,\n\t\t7808\n\t],\n\t\"./ca.json\": [\n\t\t49394,\n\t\t6234\n\t],\n\t\"./cs.json\": [\n\t\t87436,\n\t\t7433\n\t],\n\t\"./de.json\": [\n\t\t25195,\n\t\t9459\n\t],\n\t\"./en.json\": [\n\t\t88797\n\t],\n\t\"./eo.json\": [\n\t\t97898,\n\t\t4646\n\t],\n\t\"./es.json\": [\n\t\t98559,\n\t\t3968\n\t],\n\t\"./et.json\": [\n\t\t13230,\n\t\t4451\n\t],\n\t\"./eu.json\": [\n\t\t84826,\n\t\t4542\n\t],\n\t\"./fa.json\": [\n\t\t52006,\n\t\t2953\n\t],\n\t\"./fi.json\": [\n\t\t70823,\n\t\t9738\n\t],\n\t\"./fr.json\": [\n\t\t61341,\n\t\t3746\n\t],\n\t\"./ga.json\": [\n\t\t41647,\n\t\t830\n\t],\n\t\"./he.json\": [\n\t\t92215,\n\t\t379\n\t],\n\t\"./hu.json\": [\n\t\t95028,\n\t\t5494\n\t],\n\t\"./id.json\": [\n\t\t62263,\n\t\t2513\n\t],\n\t\"./it.json\": [\n\t\t2533,\n\t\t1159\n\t],\n\t\"./ja_easy.json\": [\n\t\t8439,\n\t\t8714\n\t],\n\t\"./ja_pedantic.json\": [\n\t\t22838,\n\t\t325\n\t],\n\t\"./ko.json\": [\n\t\t10707,\n\t\t9670\n\t],\n\t\"./nb.json\": [\n\t\t72358,\n\t\t7845\n\t],\n\t\"./nl.json\": [\n\t\t49922,\n\t\t6256\n\t],\n\t\"./oc.json\": [\n\t\t47297,\n\t\t617\n\t],\n\t\"./pl.json\": [\n\t\t82098,\n\t\t5571\n\t],\n\t\"./pt.json\": [\n\t\t94465,\n\t\t4047\n\t],\n\t\"./ro.json\": [\n\t\t64367,\n\t\t6342\n\t],\n\t\"./ru.json\": [\n\t\t73289,\n\t\t5964\n\t],\n\t\"./sk.json\": [\n\t\t31478,\n\t\t1547\n\t],\n\t\"./te.json\": [\n\t\t32781,\n\t\t2044\n\t],\n\t\"./uk.json\": [\n\t\t8411,\n\t\t5253\n\t],\n\t\"./vi.json\": [\n\t\t6294,\n\t\t4975\n\t],\n\t\"./zh.json\": [\n\t\t4425,\n\t\t5929\n\t],\n\t\"./zh_Hant.json\": [\n\t\t37644,\n\t\t6544\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(() => {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 27650;\nmodule.exports = webpackAsyncContext;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\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__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + ({\"50\":\"emoji-annotations/en_GB-json\",\"227\":\"emoji-annotations/ha-json\",\"278\":\"emoji-annotations/kn-json\",\"313\":\"emoji-annotations/tg-json\",\"325\":\"i18n/ja_pedantic-json\",\"346\":\"emoji-annotations/rw-json\",\"379\":\"i18n/he-json\",\"420\":\"emoji-annotations/fi-json\",\"457\":\"emoji-annotations/zh-json\",\"577\":\"emoji-annotations/en_001-json\",\"617\":\"i18n/oc-json\",\"625\":\"emoji-annotations/so-json\",\"678\":\"emoji-annotations/ps-json\",\"786\":\"emoji-annotations/xh-json\",\"830\":\"i18n/ga-json\",\"1012\":\"emoji-annotations/or-json\",\"1044\":\"emoji-annotations/zh_Hant_HK-json\",\"1056\":\"emoji-annotations/uz-json\",\"1095\":\"emoji-annotations/pl-json\",\"1159\":\"i18n/it-json\",\"1162\":\"emoji-annotations/ccp-json\",\"1236\":\"emoji-annotations/fil-json\",\"1290\":\"emoji-annotations/ja-json\",\"1404\":\"emoji-annotations/km-json\",\"1452\":\"emoji-annotations/yue-json\",\"1546\":\"emoji-annotations/pt_PT-json\",\"1547\":\"i18n/sk-json\",\"1553\":\"emoji-annotations/sl-json\",\"1584\":\"emoji-annotations/to-json\",\"1596\":\"emoji-annotations/da-json\",\"1613\":\"emoji-annotations/mai-json\",\"1780\":\"emoji-annotations/tk-json\",\"1790\":\"emoji-annotations/dsb-json\",\"1821\":\"emoji-annotations/fr_CA-json\",\"1911\":\"emoji-annotations/mr-json\",\"1959\":\"emoji-annotations/su-json\",\"2044\":\"i18n/te-json\",\"2223\":\"emoji-annotations/fr-json\",\"2243\":\"emoji-annotations/sa-json\",\"2342\":\"emoji-annotations/az-json\",\"2350\":\"emoji-annotations/sk-json\",\"2397\":\"emoji-annotations/kl-json\",\"2479\":\"emoji-annotations/jv-json\",\"2513\":\"i18n/id-json\",\"2569\":\"emoji-annotations/tt-json\",\"2599\":\"emoji-annotations/kok-json\",\"2656\":\"emoji-annotations/ckb-json\",\"2685\":\"emoji-annotations/ml-json\",\"2699\":\"emoji-annotations/es_MX-json\",\"2767\":\"emoji-annotations/zh_Hant-json\",\"2861\":\"emoji-annotations/hr-json\",\"2873\":\"emoji-annotations/kk-json\",\"2874\":\"emoji-annotations/sc-json\",\"2883\":\"emoji-annotations/ku-json\",\"2953\":\"i18n/fa-json\",\"2966\":\"emoji-annotations/ko-json\",\"2992\":\"emoji-annotations/eu-json\",\"3056\":\"emoji-annotations/hi_Latn-json\",\"3241\":\"emoji-annotations/sv-json\",\"3276\":\"emoji-annotations/et-json\",\"3313\":\"emoji-annotations/es_US-json\",\"3377\":\"emoji-annotations/as-json\",\"3568\":\"emoji-annotations/ti-json\",\"3687\":\"emoji\",\"3746\":\"i18n/fr-json\",\"3887\":\"emoji-annotations/sr-json\",\"3951\":\"emoji-annotations/th-json\",\"3968\":\"i18n/es-json\",\"3974\":\"emoji-annotations/bg-json\",\"3994\":\"emoji-annotations/sw_KE-json\",\"4047\":\"i18n/pt-json\",\"4209\":\"emoji-annotations/doi-json\",\"4354\":\"emoji-annotations/si-json\",\"4368\":\"emoji-annotations/sq-json\",\"4424\":\"emoji-annotations/yue_Hans-json\",\"4451\":\"i18n/et-json\",\"4542\":\"i18n/eu-json\",\"4571\":\"emoji-annotations/ga-json\",\"4646\":\"i18n/eo-json\",\"4691\":\"emoji-annotations/ca-json\",\"4710\":\"emoji-annotations/cs-json\",\"4718\":\"emoji-annotations/mn-json\",\"4770\":\"emoji-annotations/lb-json\",\"4785\":\"emoji-annotations/ky-json\",\"4786\":\"emoji-annotations/te-json\",\"4879\":\"emoji-annotations/en_CA-json\",\"4902\":\"emoji-annotations/hu-json\",\"4975\":\"i18n/vi-json\",\"5041\":\"emoji-annotations/pt-json\",\"5104\":\"emoji-annotations/pcm-json\",\"5115\":\"emoji-annotations/sr_Latn_BA-json\",\"5119\":\"emoji-annotations/am-json\",\"5224\":\"emoji-annotations/vi-json\",\"5253\":\"i18n/uk-json\",\"5304\":\"emoji-annotations/ha_NE-json\",\"5401\":\"emoji-annotations/mni-json\",\"5494\":\"i18n/hu-json\",\"5521\":\"emoji-annotations/fa-json\",\"5548\":\"emoji-annotations/he-json\",\"5571\":\"i18n/pl-json\",\"5728\":\"emoji-annotations/en-json\",\"5887\":\"emoji-annotations/rm-json\",\"5929\":\"i18n/zh-json\",\"5964\":\"i18n/ru-json\",\"5968\":\"emoji-annotations/hi-json\",\"6060\":\"emoji-annotations/sr_Cyrl_BA-json\",\"6068\":\"emoji-annotations/ka-json\",\"6116\":\"emoji-annotations/gd-json\",\"6126\":\"emoji-annotations/gl-json\",\"6148\":\"emoji-annotations/br-json\",\"6226\":\"emoji-annotations/de-json\",\"6234\":\"i18n/ca-json\",\"6256\":\"i18n/nl-json\",\"6272\":\"emoji-annotations/cy-json\",\"6342\":\"i18n/ro-json\",\"6344\":\"emoji-annotations/hy-json\",\"6355\":\"emoji-annotations/af-json\",\"6544\":\"i18n/zh_Hant-json\",\"6701\":\"emoji-annotations/mi-json\",\"6773\":\"emoji-annotations/nl-json\",\"6790\":\"emoji-annotations/my-json\",\"6797\":\"emoji-annotations/ur-json\",\"6826\":\"emoji-annotations/sd-json\",\"6831\":\"emoji-annotations/es-json\",\"6869\":\"emoji-annotations/chr-json\",\"6936\":\"emoji-annotations/ia-json\",\"6946\":\"emoji-annotations/pa-json\",\"7164\":\"emoji-annotations/de_CH-json\",\"7169\":\"emoji-annotations/lt-json\",\"7261\":\"emoji-annotations/gu-json\",\"7300\":\"emoji-annotations/is-json\",\"7303\":\"emoji-annotations/wo-json\",\"7304\":\"emoji-annotations/be-json\",\"7360\":\"emoji-annotations/ar_SA-json\",\"7433\":\"i18n/cs-json\",\"7464\":\"emoji-annotations/lo-json\",\"7569\":\"emoji-annotations/ast-json\",\"7585\":\"emoji-annotations/sw-json\",\"7808\":\"i18n/ar-json\",\"7845\":\"i18n/nb-json\",\"7855\":\"emoji-annotations/sat-json\",\"7879\":\"emoji-annotations/el-json\",\"7897\":\"emoji-annotations/ta-json\",\"8015\":\"emoji-annotations/hsb-json\",\"8031\":\"emoji-annotations/qu-json\",\"8134\":\"emoji-annotations/bs-json\",\"8395\":\"emoji-annotations/ru-json\",\"8681\":\"emoji-annotations/sr_Latn-json\",\"8714\":\"i18n/ja_easy-json\",\"8732\":\"emoji-annotations/yo-json\",\"8873\":\"emoji-annotations/es_419-json\",\"8898\":\"emoji-annotations/lv-json\",\"8970\":\"emoji-annotations/it-json\",\"8988\":\"emoji-annotations/en_IN-json\",\"8995\":\"emoji-annotations/fo-json\",\"9064\":\"emoji-annotations/bn-json\",\"9319\":\"emoji-annotations/zu-json\",\"9360\":\"emoji-annotations/en_AU-json\",\"9377\":\"emoji-annotations/ne-json\",\"9399\":\"emoji-annotations/mt-json\",\"9414\":\"emoji-annotations/nn-json\",\"9459\":\"i18n/de-json\",\"9465\":\"emoji-annotations/id-json\",\"9670\":\"i18n/ko-json\",\"9738\":\"i18n/fi-json\",\"9757\":\"emoji-annotations/ug-json\",\"9780\":\"emoji-annotations/kab-json\",\"9790\":\"emoji-annotations/ceb-json\",\"9864\":\"emoji-annotations/ro-json\",\"9871\":\"emoji-annotations/uk-json\",\"9873\":\"emoji-annotations/ar-json\",\"9895\":\"emoji-annotations/ig-json\",\"9921\":\"emoji-annotations/mk-json\",\"9924\":\"emoji-annotations/ms-json\",\"9926\":\"emoji-annotations/yo_BJ-json\",\"9978\":\"emoji-annotations/tr-json\",\"9979\":\"emoji-annotations/no-json\",\"9994\":\"emoji-annotations/pa_Arab-json\"}[chunkId] || chunkId) + \".\" + {\"48\":\"d7e479b200a6c89c4958\",\"50\":\"bd687f904492facc81d1\",\"159\":\"3a9274574f1e33801c4a\",\"227\":\"2a08912b38925c10f970\",\"278\":\"efdac8ac0cb00991ba1e\",\"313\":\"9647f559a4477d7d8e96\",\"325\":\"b52fa70f0bf89ae01cfb\",\"346\":\"031838c5374676191131\",\"379\":\"03c5d271a4034de06e6f\",\"420\":\"0f254bb4b0faaba4abcc\",\"457\":\"e42a28127d5c1aff6c85\",\"577\":\"72d8c47269350f59aa9f\",\"617\":\"4f52bf1b6e3213acc33c\",\"625\":\"f75abd16637c8924c075\",\"678\":\"a0d9eea5b81bcad11e64\",\"786\":\"21e88c05ad3113dfc7f2\",\"830\":\"3f1981817977a16f1d7e\",\"1012\":\"b007c2f6f92dcc95efac\",\"1044\":\"7eee03c705347a21c612\",\"1056\":\"ac43f4c54d4587324a20\",\"1095\":\"e9e8f1ed84dc6c169516\",\"1159\":\"99a21d5c98376af17141\",\"1162\":\"02836537ffe2b02291cb\",\"1236\":\"4fca833f178d1b889b69\",\"1290\":\"0bd51f8c40c106355b0e\",\"1404\":\"9bc922b2e0faa64b4c53\",\"1452\":\"15102c0ddfdf19bdfb4c\",\"1546\":\"c381b13e323f91b0e6b3\",\"1547\":\"d8d0eba80f94e6f55145\",\"1553\":\"a40c5548da34fce6f1d0\",\"1584\":\"50ac37d101caaf592c94\",\"1596\":\"8d074e27df71edafc543\",\"1613\":\"302386b3358f4d34f9c8\",\"1780\":\"23a9a6229829921704ad\",\"1790\":\"7635686ffd8d62264466\",\"1821\":\"59ed6b59e2ca68707292\",\"1911\":\"cb0a87d9aabf8a52161d\",\"1959\":\"daff15251020cbecea7d\",\"2044\":\"ce6db28261b2f824064f\",\"2223\":\"da49ed0d1a6622fe1c67\",\"2243\":\"21b06234a08c7469ccb4\",\"2342\":\"9a32f2941d9c4d1f834c\",\"2350\":\"5d96bdb4da82655d0314\",\"2397\":\"87ab8661b4bdecd09faf\",\"2479\":\"1c8d5ffcff22b46b6214\",\"2513\":\"3e42564ce7a3a847ecb0\",\"2569\":\"4c089389ba9983ec8ef7\",\"2599\":\"116e4f72db3bfb846233\",\"2656\":\"13dc83db1e15aa76051a\",\"2685\":\"3f2902a84240faff1b48\",\"2699\":\"ee359d4b611fdb1aeb33\",\"2767\":\"9cbb765c181d443828a9\",\"2861\":\"fe847ade1f18a60e513c\",\"2873\":\"a20b59d47bdfe99786ad\",\"2874\":\"c84c9c47d2e104c43e4c\",\"2883\":\"2173ed87f8d7372ee209\",\"2953\":\"a19100f6a5a9431e2adb\",\"2966\":\"d175900fe48f48ce87c8\",\"2992\":\"931b429f5fcc141549a5\",\"3056\":\"3cb73c456f31261f1908\",\"3241\":\"8b0374cbca3a77519876\",\"3276\":\"c42e3f186a55ecb061cd\",\"3313\":\"280bdb036dfd651d079a\",\"3377\":\"34cf67edc1cecd195738\",\"3568\":\"5b173bd33bb960be805b\",\"3687\":\"33eab91b64f59431137d\",\"3746\":\"36ef21ccb1203d3e65ae\",\"3887\":\"e29a20e59a708df0c6a8\",\"3951\":\"34709bae223bb9d2587c\",\"3968\":\"4a302899a65e1f67d8a2\",\"3974\":\"7c69c52572a7bf87e1db\",\"3994\":\"f3563cbeac1c158563d5\",\"4047\":\"3fc5593e030268bcd291\",\"4209\":\"7841c3f3ceb4e3da0bd1\",\"4354\":\"841b356da03623c10dbf\",\"4368\":\"bcf154ed8a6138aa089c\",\"4424\":\"cc60bb10d32fab3d8207\",\"4451\":\"580b101d6bb83a8aee75\",\"4542\":\"d2eab39b0427995fc314\",\"4571\":\"cb3f9e613a8c445aea23\",\"4646\":\"d81690d5be30b23e516b\",\"4691\":\"ce029e860b10b242c6a5\",\"4710\":\"48d8bba230dc9fe6b3dc\",\"4718\":\"764169f1168d0432640f\",\"4770\":\"499c526f3a653618ea9b\",\"4785\":\"310bda579c819eda9472\",\"4786\":\"8a69a10f62cdf626244e\",\"4879\":\"5de965778a6b8a5a4bb4\",\"4902\":\"1faf52040deda872b416\",\"4975\":\"703c1e731be6e857bbf3\",\"5041\":\"2b2512ee44291bdb2ae7\",\"5104\":\"eac3a5ad0b4b5b33289d\",\"5115\":\"72933405032b81344754\",\"5119\":\"94388548f7c18233fec3\",\"5224\":\"f6a364b2add7f8c8bc67\",\"5253\":\"003908af9b15becdd382\",\"5304\":\"e4855d92aaccfdd6ba57\",\"5401\":\"7db7f76ab1ce34e3683d\",\"5494\":\"0487899ca7a7a8505ed8\",\"5521\":\"819c7f263c8594ccf4fa\",\"5548\":\"a3d7631f32182b0955a2\",\"5571\":\"c963247822381b05579b\",\"5728\":\"6c3947f7c49c3952084d\",\"5887\":\"985d4934f386fd05a75c\",\"5929\":\"63e4c9fe0197374a5dac\",\"5948\":\"2b7b4e97487f2539eb44\",\"5964\":\"b913eb7f7e9f0c642438\",\"5968\":\"04bc5f73dc2169def97e\",\"6060\":\"83c7c64b9696ae2339f2\",\"6068\":\"567e7b051d90a37003f3\",\"6116\":\"e3d0aea3725be774ad81\",\"6126\":\"ce89036f0ae72224c994\",\"6148\":\"c7175423d8965ed10bae\",\"6226\":\"e1443c01a191af1665e1\",\"6234\":\"1eb24bc001efa3c0627f\",\"6256\":\"3fb9758b10c29434b613\",\"6272\":\"e09dd13da5ad56530ead\",\"6342\":\"3fd9977ed1c1413059ae\",\"6344\":\"2d819f7faabfeba8457f\",\"6355\":\"96c988285a6a2cce6246\",\"6464\":\"fea96fa80a7373e4e5f8\",\"6544\":\"bfa569654a5cd74767ce\",\"6701\":\"9efe6f146ecd8987f80a\",\"6773\":\"52f4b93b8fa5e22cb585\",\"6790\":\"8e7dd1485813d15bba7e\",\"6797\":\"983c02109444c883a18f\",\"6826\":\"8f2a6a06dc3cf185f79d\",\"6831\":\"f593b0dc2367a9d7fb30\",\"6869\":\"e7e542ab5a74167dec10\",\"6936\":\"8e8365e2bf41779e2beb\",\"6946\":\"7d60d69762a108270669\",\"7164\":\"b4a5891ea2f38d616ec0\",\"7169\":\"ced4d5e70edc60127df6\",\"7261\":\"8a899f364cf260376905\",\"7300\":\"62e220c65215b034533d\",\"7303\":\"e0d689e22cda0dd77e9a\",\"7304\":\"f92f80669873a4100c69\",\"7360\":\"4a6f4402931a867070f0\",\"7433\":\"5eedbe9f7084c349fbe8\",\"7464\":\"ecb06d61465a355b8157\",\"7569\":\"7e4da8cb7e539c19a9b9\",\"7585\":\"d5f350641b9cbcc0e126\",\"7808\":\"d09609af3224232857d6\",\"7845\":\"a54af3b1f47d576ad4aa\",\"7855\":\"71e92700b2aaca8e021c\",\"7879\":\"b36610f2ea16d56c2314\",\"7897\":\"675cc6c7607449d4a91b\",\"8015\":\"438721731b4171bc6fc3\",\"8031\":\"55f4df57e71076dbad9f\",\"8134\":\"48ef42da1c7976cf083c\",\"8395\":\"a81d0df34460837ccacc\",\"8681\":\"ff27d1f455bf2afb8d70\",\"8714\":\"1d5ea7e755b066ac2cdd\",\"8732\":\"ea1150d6bc360dd86f2e\",\"8873\":\"d81991295392b6ed83bb\",\"8898\":\"5600c2eb6d59fa0aa2e2\",\"8970\":\"9c1758f4fd3391f7f61a\",\"8988\":\"002faa48c09121928fca\",\"8995\":\"9b060e8009b3a8be4597\",\"9064\":\"657aac057f36ad06c58d\",\"9114\":\"e761a1c6846fea99aaf1\",\"9319\":\"e0cb7cd3890583fd0f6d\",\"9360\":\"33aac9bbd887273a34b1\",\"9377\":\"a0118dca2096a101b8e8\",\"9399\":\"3ddf7dbc114adf90c500\",\"9414\":\"7293cd5d7205681cf48c\",\"9459\":\"bfa48615ac92f87ff37a\",\"9465\":\"55f83c46d753b0b69330\",\"9670\":\"4bd28b26a7390a09afc2\",\"9738\":\"d1934c18f12d80493ab1\",\"9757\":\"bf768bd32e9ff02b0a8a\",\"9780\":\"1a2de4774f4ddc2b51dd\",\"9790\":\"9db0336f168aa77ee395\",\"9864\":\"cb62f86ce78c94d1e813\",\"9871\":\"af110c8eef232638fc4d\",\"9873\":\"5527466d349f2954d49b\",\"9895\":\"f19fa5fe3582463ba73c\",\"9921\":\"a254cabb8570419cc426\",\"9924\":\"272ee4735aabc37015dd\",\"9926\":\"650318c25fe4da92bad8\",\"9978\":\"6462e8cfd5006cf5b6cf\",\"9979\":\"22bdbbc77cc3c14ada58\",\"9994\":\"5ae021308b1c5f6dd8a7\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/css/\" + chunkId + \".\" + {\"159\":\"1d523a00378ebd68c5b3\",\"5948\":\"06d2a0d84620cba6a4fb\",\"6464\":\"169260b661120cc50815\",\"9114\":\"8def3b2b7fe70b3b3712\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\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};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = (event) => {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = (href, fullhref) => {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = (chunkId) => {\n\treturn new Promise((resolve, reject) => {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t2143: 0\n};\n\n__webpack_require__.f.miniCss = (chunkId, promises) => {\n\tvar cssChunks = {\"159\":1,\"5948\":1,\"6464\":1,\"9114\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(() => {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, (e) => {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2143: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkpleroma_fe\"] = self[\"webpackChunkpleroma_fe\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [2724], () => (__webpack_require__(43002)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","ctx","normalize","_normalize","interpolate","_interpolate","named","_named","list","_list","plural","_plural","map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","id","t","keys","Object","module","exports","data","emojiCurry","suggestEmoji","emoji","usersCurry","store","suggestUsers","input","nameKeywordLocalizer","firstChar","emojis","noPrefix","toLowerCase","substr","filter","names","concat","keywords","kw","match","length","k","score","Math","max","name","imageUrl","startsWith","displayText","sort","a","b","alphabetically","dispatch","state","suggestions","previousQuery","timeout","cancelUserSearch","debounceUserSearch","query","reject","setTimeout","userSearch","clearTimeout","includes","newSuggestions","users","user","screen_name","slice","aScore","bScore","screen_name_ui","detailText","profile_image_url_original","replacement","getTagName","tag","result","exec","getAttrs","innertag","substring","replace","RegExp","trim","attrs","Array","from","matchAll","v","fromEntries","attrKey","processTextForEmoji","text","processor","buffer","textBuffer","i","char","next","found","shortcode","push","class","props","url","required","type","String","content","default","methods","onClick","this","link","generateTagLink","$router","window","open","_createElementBlock","_hoisted_1","_createElementVNode","href","_ctx","target","innerHTML","components","MentionsLine","HashtagLink","html","attentions","handleLinks","Boolean","greentext","render","preProcessPerLine","newHtml","currentMentions","lastSpacing","lastTags","writtenMentions","invisibleMentions","writtenTags","mentionIndex","tagsIndex","encounteredTextReverse","pass1","emptyElements","Set","levels","tagBuffer","getCurrentBuffer","flushText","handleSelfClosing","handleOpen","curBuf","newLevel","handleClose","currentTag","pop","tagFull","tagName","has","convertHtmlToTree","processItem","item","index","array","what","emptyText","isArray","opener","children","closer","Tag","fullAttrs","mentionsLinePadding","linkData","getLinkData","notifying","some","statusnet_profile_url","MENTIONS_LIMIT","renderMention","undefined","pass2","reverse","processItemReverse","rel","renderHashtag","newChildren","event","$emit","textContent","stripTags","join","greentextHandle","lines","blockElements","linebreakElements","visualLineElements","values","nonEmptyElements","elem","allElements","level","flush","handleBr","unshift","shift","convertHtmlToLines","string","every","l","cleanedString","findFirstUsable","slots","findIndex","_","renderOnlyFocused","onSwitch","Function","activeTab","scrollableTabs","sideTabBar","bodyScrollLock","active","computed","activeIndex","slot","key","isActive","tabName","$slots","settingsModalVisible","settingsModalState","mapState","beforeUpdate","clickTab","preventDefault","setTab","Fragment","call","$refs","contents","scrollTop","tabs","classesTab","classesWrapper","image","disabled","label","icon","classes","fullHeight","renderSlot","specialJsonName","ja","languages","langCodeToJsonName","langCodeToCldrName","ensureFinalFallback","codes","codeList","loadLanguageFile","en","require","setLanguage","i18n","language","first","rest","locale","fallbackLocale","lang","messages","setLocaleMessage","EventTarget","EventTargetPolyfill","settingsModalLoaded","settingsModalTargetTab","settings","currentSaveStateNotice","noticeClearTimeout","notificationPermission","browserSupport","cssFilter","CSS","supports","layoutType","globalNotices","layoutHeight","lastTimeline","mutations","settingsSaved","success","error","errorData","setNotificationPermission","permission","setLayoutType","value","closeSettingsModal","togglePeekSettingsModal","openSettingsModal","setSettingsModalTargetTab","pushGlobalNotice","notice","removeGlobalNotice","n","setLayoutHeight","setLayoutWidth","layoutWidth","setLastTimeline","actions","setPageTitle","rootState","option","document","title","instance","commit","clearSettingsModalTargetTab","openSettingsModalTab","messageKey","messageArgs","newNotice","rootGetters","width","normalOrMobile","mergedConfig","thirdColumnMode","currentUser","SORTED_EMOJI_GROUP_IDS","REGIONAL_INDICATORS","start","A","codePointAt","res","end","letter","fromCodePoint","displayTextI18n","args","loadAnnotations","injectAnnotations","annotations","availableLangs","reduce","acc","cur","registrationOpen","server","textlimit","themeData","vapidPublicKey","alwaysShowSubjectInput","defaultAvatar","defaultBanner","background","collapseMessageWithSubject","useAtIcon","mentionLinkDisplay","mentionLinkShowTooltip","mentionLinkShowAvatar","mentionLinkFadeDomain","mentionLinkShowYous","mentionLinkBoldenYou","hideFilteredStatuses","hideMutedPosts","hideMutedThreads","hideWordFilteredPosts","hidePostStats","hideBotIndication","hideSitename","hideUserStats","muteBotStatuses","modalOnRepeat","modalOnUnfollow","modalOnBlock","modalOnMute","modalOnDelete","modalOnLogout","modalOnApproveFollow","modalOnDenyFollow","modalOnRemoveUserFromFollowers","loginMethod","logo","logoMargin","logoMask","logoLeft","disableUpdateNotification","minimalScopesMode","nsfwCensorImage","postContentType","redirectRootLogin","redirectRootNoLogin","scopeCopy","showFeaturesPanel","showInstanceSpecificPanel","sidebarRight","subjectLineBehavior","theme","virtualScrolling","sensitiveByDefault","conversationDisplay","conversationTreeAdvanced","conversationOtherRepliesButton","conversationTreeFadeAncestors","maxDepthInThread","customEmoji","customEmojiFetched","emojiFetched","unicodeEmojiAnnotations","pleromaBackend","postFormats","restrictedNicknames","safeDM","knownDomains","birthdayRequired","birthdayMinAge","shoutAvailable","pleromaChatMessagesAvailable","gopherAvailable","mediaProxyAvailable","suggestionsEnabled","suggestionsWeb","instanceSpecificPanelContent","tos","backendVersion","frontendVersion","pollsAvailable","pollLimits","max_options","max_option_chars","min_expiration","max_expiration","setInstanceOption","setKnownDomains","domains","setUnicodeEmojiAnnotations","getters","instanceDefaultConfig","instanceDefaultProperties","groupedCustomEmojis","packs","tags","packName","packsOf","forEach","packId","standardEmojiList","groupId","standardEmojiGroupList","instanceDomain","URL","hostname","remoteInteractionLink","endsWith","statusId","nickname","getStaticEmoji","slug","groups","symbols","console","warn","loadUnicodeEmojiData","langList","all","getCustomEmoji","fetch","ok","json","assign","caseInsensitiveStrCmp","la","lb","noPackLast","aNull","bNull","byPackThenByName","packOf","packOfA","packOfB","entries","image_url","setTheme","themeName","getPreset","config","customTheme","themeSource","source","themeEngineVersion","CURRENT_VERSION","applyTheme","fetchEmoji","getKnownDomains","apiService","credentials","emptyTl","userId","statuses","statusesObject","faves","visibleStatuses","visibleStatusesObject","newStatusCount","maxId","minId","minVisibleId","loading","followers","friends","flushMarker","emptyNotifications","desktopNotificationSilence","Number","POSITIVE_INFINITY","idStore","defaultState","allStatuses","allStatusesObject","conversationsObject","notifications","favorites","timelines","mentions","public","media","publicAndExternal","dms","bookmarks","mergeOrAdd","arr","obj","oldItem","attachments","splice","new","status","deleted","prepareStatus","sortById","seqA","seqB","isSeqA","isNaN","isSeqB","sortTimeline","timeline","addStatusToGlobalStorage","conversationId","statusnet_conversation_id","updateNotificationsMinMaxId","notification","addNewStatuses","showImmediately","noIdUpdate","pagination","timelineObject","minNew","maxNew","newer","older","addStatus","resultForCurrentTimeline","addToTimeline","visibility","processors","edit","retweet","retweetedStatus","retweeted_status","s","favorite","add","counter","in_reply_to_status_id","favorited","fave_num","favoriteStatus","deletion","uri","action","removeStatusFromGlobalStorage","follow","unknown","log","addNewNotifications","newNotificationSideEffects","visibleNotificationTypes","isValidNotification","isStatusNotification","report","hasOwnProperty","seen","removeStatus","showNewStatuses","oldTimeline","resetStatuses","emptyState","clearTimeline","excludeUserId","clearNotifications","setFavorited","newStatus","setFavoritedConfirm","favoritedBy","setMutedStatus","thread_muted","setRetweeted","repeated","repeat_num","setRetweetedConfirm","rebloggedBy","setBookmarked","bookmarked","setBookmarkedConfirm","setDeleted","setManyDeleted","condition","setLoading","setNsfw","nsfw","setNotificationsLoading","setNotificationsSilence","markNotificationsAsSeen","markSingleNotificationAsSeen","dismissNotification","dismissNotifications","finder","updateNotification","updater","queueFlush","queueFlushAll","addRepeats","rebloggedByUsers","find","addFavs","favoritedByUsers","addEmojiReactionsBy","emojiReactions","emoji_reactions","addOwnReaction","reactionIndex","reaction","count","accounts","newReaction","me","removeOwnReaction","r","updateStatusWithPoll","poll","setVirtualHeight","height","virtualHeight","maybeShowNotification","fetchStatus","api","backendInteractor","fetchStatusSource","fetchStatusHistory","deleteStatus","deleteStatusById","markStatusesAsDeleted","unfavorite","fetchPinnedStatuses","pinStatus","pinOwnStatus","unpinStatus","unpinOwnStatus","muteConversation","unmuteConversation","unretweet","bookmark","bookmarkStatus","unbookmark","unbookmarkStatus","single","dismissNotificationLocal","fetchFavsAndRepeats","fetchFavoritedByUsers","fetchRebloggedByUsers","reactWithEmoji","unreactWithEmoji","fetchEmojiReactionsBy","fetchEmojiReactions","fetchFavs","fetchRepeats","search","q","limit","offset","following","search2","u","setLists","allLists","setList","listId","allListsObject","accountIds","entry","setListAccounts","addListAccount","accountId","removeListAccount","set","deleteList","lists","createList","fetchList","getList","fetchListAccounts","getListAccounts","updateList","saved","added","removed","addAccountsToList","removeAccountsFromList","findListTitle","findListAccounts","fetchAndUpdate","until","since","timelineData","replyVisibility","loggedIn","withMuted","numStatusesBeforeFetch","response","errors","statusText","ccTimeline","update","message","timelineFetcher","startFetching","promiseInterval","boundFetchAndUpdate","requests","listsFetcher","startFetchingTimeline","fetchTimeline","startFetchingNotifications","notificationsFetcher","fetchNotifications","startFetchingFollowRequests","followRequestFetcher","startFetchingLists","startUserSocket","getMastodonSocketURI","stream","ProcessedWS","func","verifyCredentials","windowWidth","innerWidth","documentElement","clientWidth","body","windowHeight","innerHeight","clientHeight","REDIRECT_URI","location","origin","getOrCreateApp","clientId","clientSecret","form","FormData","append","___pleromafe_commit_hash","Date","toISOString","method","app","client_id","client_secret","getClientToken","oauth","login","response_type","redirect_uri","scope","dataString","encoded","encodeURIComponent","getToken","getTokenWithCredentials","username","password","verifyOTPCode","mfaToken","verifyRecoveryCode","revokeToken","token","isPushSupported","navigator","getOrCreateServiceWorker","runtime","err","deleteSubscriptionFromBackEnd","headers","Authorization","mergeArrayLength","oldValue","newValue","blockUser","relationship","unblockUser","muteUser","expiresIn","predictedRelationship","relationships","muting","unmuteUser","muteDomain","domain","unmuteDomain","tagUser","usersObject","newTags","untagUser","updateRight","right","newRights","rights","updateActivationStatus","deactivated","setCurrentUser","lastLoginName","clearCurrentUser","beginLogin","loggingIn","endLogin","saveFriendIds","friendIds","saveFollowerIds","followerIds","clearFriends","clearFollowers","addNewUsers","usersByNameObject","updateUserRelationship","updateUserInLists","inLists","saveBlockIds","blockIds","addBlockId","blockId","indexOf","saveMuteIds","muteIds","addMuteId","muteId","saveDomainMutes","domainMutes","addDomainMute","removeDomainMute","setPinnedToUser","pinnedStatusIds","pinned","setUserForStatus","setUserForNotification","from_profile","setColor","highlighted","highlight","signUpPending","signUpErrors","signUpSuccess","signUpFailure","findUser","findUserByName","findUserByUrl","fetchUserIfMissing","fetchUser","fetchUserByName","fetchUserRelationship","fetchUserInLists","fetchBlocks","blocks","removeUserFromFollowers","blockUsers","unblockUsers","editUserNote","comment","fetchMutes","mutes","hideReblogs","followUser","reblogs","showReblogs","muteUsers","unmuteUsers","fetchDomainMutes","muteDomains","unmuteDomains","fetchFriends","fetchFollowers","subscribeUser","unsubscribeUser","toggleActivationStatus","activateUser","deactivateUser","is_active","registerPushNotifications","isEnabled","notificationVisibility","registration","base64String","base64","rawData","subscribeOptions","userVisibleOnly","applicationServerKey","repeat","atob","Uint8Array","charCodeAt","pushManager","subscribe","subscribePush","subscription","JSON","stringify","alerts","follows","favourite","likes","mention","reblog","repeats","move","moves","responseData","sendSubscriptionToBackEnd","webPushNotifications","unregisterPushNotifications","getSubscription","subscribtion","unsubscribe","unsubscribePush","unregister","retweetedUsers","targetUsers","notificationIds","notificationsObject","relevantNotifications","searchUsers","signUp","userInfo","register","params","access_token","getCaptcha","logout","oauthApi","userToken","backendInteractorService","loginUser","accessToken","Notification","requestPermission","locked","useStreamingApi","latest","maybeShowChatNotification","chat","lastMessage","chats","currentChatId","hidden","account_id","opts","account","profile_image_url","attachment","preview_url","showDesktopNotification","retryMultiplier","fetchers","socket","mastoUserSocket","mastoUserSocketStatus","followRequests","followRequestCount","setBackendInteractor","addFetcher","fetcherName","fetcher","removeFetcher","stop","setWsToken","wsToken","setSocket","setFollowRequests","setMastoUserSocketStatus","incrementRetryMultiplier","resetRetryMultiplier","enableMastoSockets","initial","WebSocket","CLOSED","CLOSING","getState","WSConnectionStatus","disableMastoSockets","startMastoUserSocket","addEventListener","detail","chatId","chatUpdate","closeEvent","ignoreCodes","debug","stopMastoUserSocket","close","stopFetchingTimeline","stopFetchingNotifications","stopFetchingFollowRequests","removeFollowRequest","request","it","stopFetchingLists","initializeSocket","Socket","connect","disconnectFromSocket","disconnect","library","faTimes","Modal","NEW_USER_DATE","COMMAND_TRIM_FLAGS_AND_RESET","dirty","flagStorage","updateCounter","reset","prefsStorage","_journal","simple","dontShowUpdateNotifs","collapseNav","collections","pinnedNavItems","raw","cache","newUserFlags","_moveItemInArray","movement","oldIndex","newIndex","newArray","_wrapData","userName","_user","_timestamp","now","_version","_checkValidity","_verifyPrefs","_mergeJournal","journals","allJournals","j","prototype","grouped","trimmedGrouped","path","journal","timestamp","remainder","lastRemoveIndex","operation","clearServerSideStorage","userData","setServerSideStorage","live","storage","fqn","recent","stale","needUpload","cacheValid","liveValid","_getRecentData","_PLEROMA_HOTPATCH","reverseMigrations","to","_doMigrations","needsUpload","userNew","created_at","flagsTemplate","recentData","staleData","totalFlags","totalPrefs","allFlagKeys","toRaw","_getAllFlags","flag","recentFlag","staleFlag","_mergeFlags","recentJournal","staleJournal","resultOutput","totalJournal","command","newSet","_mergePrefs","knownKeys","knownKeysSet","_resetFlags","min","setFlag","setPreference","addCollectionPreference","collection","removeCollectionPreference","reorderCollectionPreference","newCollection","updateCache","pushServerSideStorage","force","needPush","pleroma_settings_store","updateProfile","channel","joined","setChannel","addMessage","setMessages","setJoined","initializeShout","joinPush","receive","onClose","onError","on","msg","appToken","setClientData","setAppToken","setToken","clearToken","getUserToken","PASSWORD_STRATEGY","TOKEN_STRATEGY","TOTP_STRATEGY","RECOVERY_STRATEGY","resetState","strategy","initStrategy","namespaced","requiredPassword","requiredToken","requiredTOTP","requiredRecovery","setInitialStrategy","requirePassword","requireToken","requireMFA","requireRecovery","requireTOTP","abortMFA","root","supportedTypes","mediaViewer","currentIndex","activated","setMedia","setCurrentMedia","fileTypeService","mimetype","current","closeMediaViewer","tokens","fetchTokens","fetchOAuthTokens","revokeOAuthToken","swapTokens","reports","reportModal","preTickedIds","openUserReportingModal","closeUserReportingModal","setReportState","reportsState","addReport","statusIds","preTickedStatuses","oldState","trackedPolls","pollsObject","mergeOrAddPoll","existingPoll","expired","parse","expires_at","trackPoll","pollId","currentValue","untrackPoll","updateTrackedPoll","fetchPoll","polls","votePoll","choices","vote","modalActivated","openPostStatusModal","closePostStatusModal","openEditStatusModal","closeEditStatusModal","openStatusHistoryModal","closeStatusHistoryModal","ChatService","newMessages","updateMaxId","chat_id","fakeId","fakeMessage","idIndex","pending","idempotency_key","idempotencyKeyIndex","isConfirmation","lastSeenMessageId","newMessageCount","empty","getView","currentMessageChainId","firstMessage","previousMessage","date","setHours","getTime","toString","afterDate","nextMessage","isTail","object","messageChainId","isHead","deleteMessage","messageId","m","cullOlderMessages","maxIndex","minIndex","resetNewMessageCount","clear","failedMessageIds","handleMessageError","isRetry","lastPersistedMessage","oldId","chatList","chatListFetcher","openedChats","reactive","openedChatMessageServices","lastReadMessageId","getChatById","currentChat","currentChatMessageService","findOpenedChatByRecipientId","recipientId","c","sortedChatList","unreadChatCount","startFetchingChats","stopFetchingChats","fetchChats","addNewChats","newChatMessageSideEffects","updateChat","startFetchingCurrentChat","setCurrentChatFetcher","addOpenedChat","parseChat","addChatMessages","resetChatNewMessageCount","clearCurrentChat","readChat","lastReadId","isNewMessage","deleteChatMessage","resetChats","clearOpenedChats","setChatListFetcher","prevFetcher","_dispatch","chatService","setCurrentChatId","updatedChat","unread","updated_at","_rootGetters","deleteChat","conversation","last_status","setChatsLoading","chatMessageService","parseChatMessage","_value","announcements","supportsAnnouncements","fetchAnnouncementsTimer","setAnnouncements","setAnnouncementRead","read","setFetchAnnouncementsTimer","timer","setSupportsAnnouncements","unreadAnnouncementCount","_getters","announcement","inactive","fetchAnnouncements","isAdmin","privileges","getAnnouncements","adminFetchAnnouncements","visible","visibleObject","getWithinVisible","visibleAnnouncement","statusCode","markAnnouncementAsRead","dismissAnnouncement","startFetchingAnnouncements","interval","setInterval","stopFetchingAnnouncements","clearInterval","postAnnouncement","startsAt","endsAt","allDay","editAnnouncement","deleteAnnouncement","loaded","defaultReducer","paths","substate","saveImmedeatelyActions","defaultStorage","localforage","createPersistedState","getItem","setState","setItem","reducer","subscriber","handler","savedState","usersState","replaceState","merge","mutation","webPushNotification","isUserMutation","isVapidMutation","payload","isPermMutation","isUserConfigMutation","isVisibilityMutation","for","isPasswordAuth","isTokenAuth","mapGetters","mapMutations","mapActions","submit","submitToken","submitPassword","$store","identifier","passwordResetRequested","focusOnPasswordInput","clearError","passwordInput","focus","setSelectionRange","_hoisted_2","_hoisted_3","onSubmit","_Fragment","_hoisted_4","_hoisted_5","placeholder","_hoisted_7","_hoisted_8","ref","_hoisted_10","_createVNode","_component_router_link","_hoisted_11","_hoisted_12","_hoisted_13","_createBlock","_hoisted_15","_hoisted_16","_component_FAIcon","mfa","authSettings","mfa_token","mfaApi","_hoisted_6","_hoisted_9","size","h","resolveComponent","authForm","MFARecoveryForm","MFATOTPForm","LoginForm","signedIn","AuthForm","PostStatusForm","UserCard","_component_UserCard","rounded","_component_PostStatusForm","_component_auth_form","USERNAME_ROUTES","TIMELINES","home","route","criteria","anon","twkn","routeObject","tab","ROOT_ITEMS","interactions","badgeGetter","friendRequests","about","$props","custom","_renderSlot","faThumbtack","OptionalRouterLink","isPinned","pinnedItems","togglePin","routeTo","anonRoute","serverSideStorage","_component_OptionalRouterLink","ass","navigate","_mergeProps","_resolveDynamicComponent","iconLetter","labelRaw","_normalizeClass","transform","filterNavigation","hasChats","hasAnnouncements","isFederating","isPrivate","getListEntries","ListsMenuContent","NavigationEntry","privateMode","federating","_component_NavigationEntry","faUsers","faGlobe","faBookmark","faEnvelope","faComments","faBell","faInfoCircle","faStream","faList","getRouteTo","pinnedList","faChevronDown","faChevronUp","faBullhorn","created","NavigationPins","Checkbox","editMode","showTimelines","showLists","timelinesList","rootList","toggleTimelines","toggleLists","toggleEditMode","toggleCollapse","collapsed","timelinesItems","rootItems","_component_NavigationPins","_component_ListsMenuContent","shout","pleromaChatMessages","gopher","whoToFollow","mediaProxy","uploadlimit","fileSizeFormatService","num","unit","getWhoToFollow","panel","usersToFollow","toFollow","reply","shuffled","img","avatar","acct","externalUser","showWhoToFollow","userProfileLink","generateProfileLink","watch","oldUser","mounted","fill","x","src","currentMessage","togglePanel","newVal","scrollEl","$el","querySelector","offsetHeight","scrollHeight","$nextTick","author","rows","onKeyup","setTransform","scale","y","PinchZoom","_toHandlers","deltaCoord","oldCoord","newCoord","touchEventCoord","touch","touches","screenX","screenY","pointerEventCoord","clientX","clientY","vectorLength","sqrt","perpendicular","dotProduct","v1","v2","project","scalar","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","swipeGesture","direction","onSwipe","threshold","perpendicularTolerance","_startPos","_swiping","beginSwipe","gesture","updateSwipe","delta","towardsDir","perpendicularDir","towardsPerpendicular","SwipeAndClickGesture","swipePreviewCallback","swipeEndCallback","swipeCancelCallback","swipelessClickCallback","disableClickThreshold","nop","_reset","_pointerId","_swiped","_preventNextClick","button","pointerId","coord","sign","isPositive","pointerType","handlePointerDown","$gesture","handlePointerMove","handlePointerUp","handlePointerCancel","cancel","handleNativeClick","click","preview","offsets","GestureService","onPointerdown","onPointermove","onPointerup","onPointercancel","faChevronLeft","faChevronRight","faCircleNotch","StillImage","VideoAttachment","SwipeClick","Flash","swipeDirection","swipeThreshold","pinchZoomMinScale","pinchZoomScaleResetLimit","showing","description","currentMedia","canNavigate","getType","swipeDisableClickThreshold","hide","hideIfNotSwiped","comp","swipeClick","goPrev","prevIndex","newMedia","goNext","nextIndex","onImageLoaded","handleSwipePreview","pinchZoom","handleSwipeEnd","handleKeyupEvent","keyCode","handleKeydownEvent","unmounted","removeEventListener","_component_Modal","onBackdropClicked","_component_SwipeClick","onPreviewRequested","onSwipeFinished","onSwipelessClicked","_component_PinchZoom","selector","alt","onLoad","_component_VideoAttachment","controls","_component_Flash","total","spin","faSignInAlt","faSignOutAlt","faHome","faUserPlus","faSearch","faTachometerAlt","faCog","faCompass","closed","closeGesture","toggleDrawer","unseenNotifications","unseenNotificationsFromStore","unseenNotificationsCount","sitename","timelinesRoute","doLogout","touchStart","touchMove","onTouchstart","onTouchmove","style","role","faPen","HIDDEN_FOR_PAGES","scrollingDown","inputActive","oldScrollPos","amountScrolled","autohideFloatingPostButton","activateFloatingPostButtonAutohide","handleOSK","deactivateFloatingPostButtonAutohide","isLoggedIn","isHidden","$route","isPersistent","alwaysShowNewPostButton","handleScrollStart","handleScrollEnd","openPostForm","smallPhone","smallPhoneKbOpen","biggerPhoneKbOpen","scrollY","leading","trailing","faBars","faArrowUp","faMinus","SideDrawer","Notifications","ConfirmModal","notificationsCloseGesture","notificationsOpen","notificationsAtTop","showingConfirmLogout","closeMobileNotifications","isChat","chatsPinned","shouldConfirmLogout","toggleMobileSidebar","sideDrawer","openMobileNotifications","markRead","notificationsTouchStart","notificationsTouchMove","scrollToTop","scrollTo","scrollMobileNotificationsToTop","mobileNotifications","showConfirmLogout","hideConfirmLogout","onScroll","fetchOlderNotifications","_component_FALayers","_component_SideDrawer","_Teleport","_component_confirm_modal","onAccepted","onCancelled","searchTerm","searchInput","toggleHidden","SearchBar","searchBarHidden","supportsMask","enableMask","logoStyle","logoMaskStyle","logoBgStyle","margin","opacity","onSearchBarToggled","_component_search_bar","onToggled","Status","List","UserLink","forward","statusIdsToReport","processing","isOpen","remoteInstance","is_local","closeModal","reportUser","isChecked","toggleStatus","checked","resize","Element","_component_i18n_t","keypath","_component_UserLink","onInput","_component_Checkbox","_component_List","items","_component_Status","focused","statusoid","resettingForm","editStatus","isFormVisible","oldVal","get","val","doEditStatus","spoilerText","sensitive","contentType","statusPosterService","onPosted","postStatus","statusHistory","historyCount","history","newStatusId","resetHistory","_component_status","notices","closeNotice","UserPanel","NavPanel","defineAsyncComponent","InstanceSpecificPanel","FeaturesPanel","WhoToFollowPanel","ShoutPanel","MediaModal","MobilePostStatusButton","MobileNav","DesktopNav","SettingsModal","UpdateNotification","UserReportingModal","PostStatusModal","EditStatusModal","StatusHistoryModal","GlobalNoticeList","mobileActivePanel","interfaceLanguage","updateMobileState","reverseLayout","noSticky","newPostButtonShown","navClasses","navbarColumnStretch","userBackground","background_image","instanceBackground","hideInstanceWallpaper","bgStyle","hideISP","isChats","isListEdit","editingAvailable","shoutboxPosition","hideShoutbox","reverseSetting","disableStickyHeaders","showScrollbars","_component_MobileNav","_component_DesktopNav","_component_Notifications","_component_user_panel","_component_nav_panel","_component_instance_specific_panel","_component_features_panel","_component_who_to_follow_panel","_component_router_view","_component_MediaModal","_component_shout_panel","floating","_component_MobilePostStatusButton","_component_UserReportingModal","_component_PostStatusModal","_component_EditStatusModal","_component_StatusHistoryModal","_component_SettingsModal","_component_UpdateNotification","_component_GlobalNoticeList","faAngleDoubleDown","faAngleDoubleRight","depth","inProfile","collapsable","isExpanded","pinnedStatusIdsObject","profileUserId","getReplies","setHighlight","toggleExpanded","toggleThreadDisplay","threadDisplayStatus","showThreadRecursively","totalReplyCount","totalReplyDepth","statusContentProperties","setStatusContentProperty","toggleStatusContentProperty","dive","suspendable","selfSuspendable","statusComponent","childComponent","reverseLookupTable","table","currentReplies","statusById","threadShowing","currentProp","collapseThread","showThread","showAllSubthreads","toggleCurrentProp","setCurrentProp","expandable","replies","showingTall","expandingSubject","showingLongSubject","replying","mediaPlaying","onGoto","onToggleExpanded","replyStatus","_component_thread_tree","numStatus","faFilter","faFont","faWrench","Popover","setReplyVisibility","openTab","replyVisibilitySelf","replyVisibilityFollowing","replyVisibilityAll","hideMedia","hideAttachments","hideAttachmentsInConv","_component_Popover","trigger","faFolderTree","setConversationDisplay","autoUpdate","streaming","collapseWithSubjects","showUserAvatars","faAngleDoubleLeft","idA","idB","expanded","threadDisplayStatusObject","statusContentPropertiesObject","inlineDivePosition","isPage","fetchConversation","maxDepthToShowByDefault","maxDepth","streamingEnabled","displayStyle","isTreeView","isLinearView","treeViewIsSimple","shouldFadeAncestors","otherRepliesButtonPosition","showOtherRepliesButtonBelowStatus","showOtherRepliesButtonInsideStatus","prop","hideStatus","virtualHidden","originalStatusId","getConversationId","statusIndex","sortAndFilterConversation","statusMap","threadTree","linearized","walk","forest","topLevel","processed","replyIds","sizes","subTreeSizeFor","cid","depths","subTreeDepthFor","tl","otherTopLevelCount","showingTopLevel","canDive","diveRoot","parentOf","diveDepth","diveMode","shouldShowAllConversationButton","shouldShowAncestors","ancestorsOf","irid","hiddenStyle","def","isReplying","maybeHighlight","ThreadTree","QuickFilterSettings","QuickViewSettings","newConversationId","oldConversationId","resetDisplayState","ancestors","descendants","getHighlight","setThreadDisplay","nextStatus","setThreadDisplayRecursively","leastVisibleAncestor","parent","diveIntoStatus","preventScroll","tryScrollTo","diveToTopLevel","topLevelAncestorOrSelfId","undive","goToCurrent","parentId","parentOrSelf","_component_QuickFilterSettings","_component_QuickViewSettings","numReplies","useListsMenu","openMenu","blockOpen","stopPropagation","timelineName","i18nkey","$t","onShow","faCirclePlus","faCheck","Timeline","showScrollTop","paused","unfocused","bottomedOut","virtualScrollIndex","blockingClicks","Conversation","TimelineMenu","filteredVisibleStatuses","filteredPinnedStatusIds","showLoadButton","loadButtonString","mobileLoadButtonString","rootClasses","embedded","header","footer","statusesToDisplay","amount","statusesPerSide","ceil","nonPinnedIndex","virtualScrollingEnabled","mobileLayout","handleScroll","handleVisibilityChange","handleShortKey","determineVisibleStatuses","top","offsetTop","stopBlockingClicks","blockClicksTemporarily","fetchOlderStatuses","cappedScrollIndex","pageYOffset","centerOfScreen","approxIndex","floor","getBoundingClientRect","virtualScrollIndexY","abs","scrollLoad","bodyBRect","doc","clientTop","pauseOnUnfocused","_component_TimelineMenu","_component_conversation","_component_Timeline","tabModeDict","reactions","allowFollowingMove","allow_following_move","filterMode","canSeeReports","onModeSwitch","TabSwitcher","_component_tab_switcher","UserAvatar","RichContent","UserPopover","htmlTitle","name_html","_component_UserPopover","_component_UserAvatar","_component_RichContent","AvatarList","Timeago","ChatTitle","StatusBody","attachmentInfo","types","file","fileType","messageForStatusContent","messageEmojis","isYou","messagePreview","summary","raw_html","openChat","_e","recipient_id","_component_ChatTitle","_component_Timeago","time","_component_StatusBody","chatNew","BasicUserCard","userIds","availableUsers","goBack","goToChat","addUser","selectedUserIds","removeUser","_component_BasicUserCard","ChatListItem","ChatNew","isNew","cancelNewChat","newChat","_component_ChatNew","onCancel","_component_ChatListItem","compact","displayDate","today","toLocaleDateString","localeService","$i18n","day","month","$options","faEllipsisH","emits","Attachment","StatusContent","Gallery","LinkPreview","ChatMessageDate","createdAt","chatViewItem","toLocaleTimeString","hour","minute","hour12","isCurrentUser","isMessage","hasAttachment","betterShadow","popoverMarginStyle","left","hovered","menuOpened","onHover","bool","isHovered","confirm","onMouseover","onMouseleave","onMouseenter","placement","_component_StatusContent","_component_ChatMessageDate","getScrollPosition","Chat","ChatMessage","jumpToBottomButtonVisible","hoveredMessageChainId","lastScrollPosition","scrollableContainerHeight","errorLoadingChat","messageRetriers","handleResize","recipient","formPlaceholder","chatViewItems","bottomedOutBeforeUpdate","scrollDown","fetchChat","isFirstFetch","onMessageHover","onFilesDropped","forceRead","delayed","diff","scrollBy","trunc","options","behavior","isBottomedOut","reachedTop","cullOlderCheck","handleScrollUp","positionBeforeLoading","previousPosition","newPosition","positionAfterLoading","fetchLatest","fetchOlderMessages","sinceId","chatMessages","positionBeforeUpdate","getOrCreateChat","doStartFetching","handleAttachmentPosting","sendMessage","idempotencyKey","mediaId","isNormalized","buildFakeMessage","doSendMessage","retriesLeft","sendChatMessage","_component_ChatMessage","onResize","showingConfirmRemoveFollower","shouldConfirmRemoveUserFromFollowers","showConfirmRemoveUserFromFollowers","hideConfirmRemoveUserFromFollowers","doRemoveUserFromFollowers","toggled","_toDisplayString","RemoteFollow","FollowButton","RemoveFollowerButton","isMe","_component_basic_user_card","followed_by","_component_FollowButton","_component_RemoveFollowerButton","_component_RemoteFollow","select","childPropName","additionalPropNames","WrappedComponent","getComponentProps","fetchEntries","updateEntries","newEntries","isEmpty","faBirthdayCake","FollowerList","withLoadMore","destroy","FriendList","defaultTabKey","footerRef","routeParams","load","stopFetching","isUs","isExternal","followsTabVisible","hide_follows","followersTabVisible","hide_followers","formattedBirthday","browserLocale","birthday","timeZone","year","setFooterRef","el","userNameOrId","loadById","maybeId","maybeName","reason","errorMessage","switchUser","onTabSwitch","linkClicked","parentNode","FollowCard","switcher","selected","viewing","fields_html","field","fields_text","statuses_count","friends_count","_component_FriendList","_component_FollowCard","followers_count","_component_FollowerList","hashtags","currenResultTab","statusesOffset","lastStatusFetchCount","lastQuery","newQuery","searchType","blur","oldLength","getActiveTab","resultCount","onResultTabSwitch","lastHistoryRecord","hashtag","_hoisted_14","_hoisted_18","_hoisted_20","_hoisted_21","_hoisted_25","uses","_hoisted_26","setup","v$","useVuelidate","email","fullname","captcha","InterfaceLanguageSwitcher","validations","requiredIf","accountActivationRequired","sameAs","maxValue","birthdayMin","accountApprovalRequired","setCaptcha","bioPlaceholder","replaceNewlines","reasonPlaceholder","minAge","setUTCMilliseconds","setUTCSeconds","setUTCMinutes","setUTCHours","minDate","setTime","DAY","birthdayMinAttr","toJSON","birthdayMinFormatted","isPending","serverValidationErrors","termsOfService","captcha_solution","solution","captcha_token","captcha_answer_data","answer_data","$touch","$invalid","cpt","str","$error","$model","$dirty","_hoisted_19","bio","_hoisted_23","_hoisted_27","_hoisted_30","_hoisted_32","_component_interface_language_switcher","_hoisted_35","_hoisted_36","_hoisted_38","_hoisted_39","autocomplete","autocorrect","autocapitalize","spellcheck","_hoisted_42","_hoisted_43","_hoisted_44","_hoisted_47","_hoisted_48","passwordReset","throttled","mailerEnabled","dismissError","passwordResetApi","_hoisted_17","showingApproveConfirmDialog","showingDenyConfirmDialog","findFollowRequestNotificationId","notif","notificationsFromStore","showApproveConfirmDialog","hideApproveConfirmDialog","showDenyConfirmDialog","hideDenyConfirmDialog","approveUser","shouldConfirmApprove","doApprove","notifId","denyUser","shouldConfirmDeny","doDeny","FollowRequestCard","_component_FollowRequestCard","staffAccounts","groupedStaffAccounts","groupBy","admin","moderator","group","toInstanceReasonObject","instances","info","federationPolicy","mrfPolicies","quarantineInstances","acceptInstances","rejectInstances","ftlRemovalInstances","mediaNsfwInstances","mediaRemovalInstances","keywordsFtlRemoval","keywordsReject","keywordsReplace","hasInstanceSpecificPolicies","hasKeywordPolicies","TermsOfServicePanel","StaffPanel","MRFTransparencyPanel","policy","keyword","pattern","_component_staff_panel","_component_terms_of_service_panel","_component_MRFTransparencyPanel","redirect","ListsCard","cancelNewList","newList","_component_ListsCard","followingOnly","onChange","ListsNew","ListsUserSearch","PanelLoading","titleDraft","membersUserIds","removedUserIds","searchUserIds","addedUserIds","searchLoading","reallyDelete","membersUsers","toggleRemoveMember","toggleAddFromSearch","isRemoved","isAdded","onSearchLoading","results","onSearchLoadingDone","onSearchResults","updateListTitle","back","listTitle","_component_ListsUserSearch","onResults","onLoading","onLoadingDone","_component_PanelLoading","cols","AnnouncementEditor","editing","editedAnnouncement","editError","canEditAnnouncement","isRead","publishedAt","published_at","formatTimeOrDate","starts_at","ends_at","markAsRead","d","all_day","toLocaleString","enterEditMode","pleroma","raw_content","submitEdit","cancelEdit","Announcement","_component_announcement_editor","_component_rich_content","newAnnouncement","posting","canPostAnnouncement","_component_announcement","validateAuthenticatedRoute","routes","_to","component","PublicAndExternalTimeline","PublicTimeline","FriendsTimeline","beforeEnter","TagTimeline","BookmarkTimeline","ConversationPage","meta","dontScroll","RemoteUserResolver","UserProfile","Interactions","DMs","Registration","PasswordReset","FollowRequests","disableTeleport","OAuthCallback","Search","WhoToFollow","About","AnnouncementsPage","Lists","ListsTimeline","ListsEdit","forceExpand","forceEditMode","ChatList","previousNavPaddingRight","previousAppBgWrapperRight","lockerEls","disableBodyScroll","scrollBarGap","reserveScrollBarGap","navEl","getElementById","getComputedStyle","getPropertyValue","paddingRight","appBgWrapperEl","classList","enableBodyScroll","remove","directive","binding","updated","Vue","staticInitialResults","decodeUTF8Base64","TextDecoder","decode","preloadFetch","decoded","requestData","getInstanceConfig","max_toot_chars","vapid_public_key","approval_required","metadata","birthday_required","birthday_min_age","getBackendProvidedConfig","pleroma_fe","getStaticConfig","setSettings","apiConfig","staticConfig","overrides","___pleromafe_dev_overrides","env","___pleromafe_mode","NODE_ENV","staticConfigPreference","copyInstanceOption","getTOS","getInstancePanel","getStickers","resPack","pack","stickers","localeCompare","getAppSecret","resolveStaffAccounts","nicknames","split","getNodeInfo","features","nodeName","openRegistrations","uploadLimits","parseInt","general","banner","fieldsLimits","enabled","web","software","version","priv","federation","mrf_policies","setConfig","configInfos","checkOAuthToken","FaviconService","customThemeSource","applyConfig","router","createRouter","createWebHistory","scrollBehavior","_from","savedPosition","matched","createApp","App","use","vClickOutside","VBodyScrollLock","VueVirtualScroller","FontAwesomeIcon","FontAwesomeLayers","unwrapInjectedRef","mount","currentLocale","createI18n","persistedStateOptions","storageError","plugins","pushNotifications","persistedState","createStore","modules","global","interface","interfaceModule","instanceModule","usersModule","statusesModule","listsModule","apiModule","configModule","serverSideConfig","serverSideConfigModule","serverSideStorageModule","shoutModule","oauthModule","authFlow","authFlowModule","mediaViewerModule","oauthTokens","oauthTokensModule","reportsModule","pollsModule","postStatusModule","editStatusModule","statusHistoryModule","chatsModule","announcementsModule","strict","afterStoreSetup","process","COMMIT_HASH","DEV_OVERRIDES","expertLevel","colors","padEmoji","maxThumbnails","hideNsfw","preloadImage","loopVideo","loopVideoSilentOnly","emojiReactionsOnTimeline","stopGifs","followRequest","chatMention","muteWords","hideScopeNotice","playVideosInModal","useOneClickNsfw","useContainFit","userPopoverAvatarAction","userPopoverOverlay","sidebarColumnWidth","contentColumnWidth","notifsColumnWidth","defaultConfig","setOption","color","loadSettings","presentKeys","intersection","setPreset","Cookies","defaultApi","notificationsApi","updateNotificationSettings","settingsMap","defaultScope","defaultNSFW","stripRichContent","acceptChatMessages","discoverable","hideFavorites","hideFollowers","hideFollows","hideFollowersCount","hideFollowsCount","webPushHideContents","blockNotificationsFromStrangers","confirmServerSideOption","wipeServerSideOption","wipeAllServerSideOptions","_original","setServerSideOption","StatusCodeError","captureStackTrace","create","constructor","RegistrationError","errorContents","ap_id","errs","ALIASES_URL","TAG_USER_URL","PERMISSION_GROUP_URL","screenName","MASTODON_DISMISS_NOTIFICATION_URL","MASTODON_FAVORITE_URL","MASTODON_UNFAVORITE_URL","MASTODON_RETWEET_URL","MASTODON_UNRETWEET_URL","MASTODON_PUBLIC_TIMELINE","MASTODON_STATUS_URL","MASTODON_USER_TIMELINE_URL","MASTODON_LIST_URL","MASTODON_LIST_TIMELINE_URL","MASTODON_LIST_ACCOUNTS_URL","MASTODON_TAG_TIMELINE_URL","MASTODON_MUTE_USER_URL","MASTODON_UNMUTE_USER_URL","MASTODON_SUBSCRIBE_USER","MASTODON_UNSUBSCRIBE_USER","MASTODON_USER_NOTE_URL","MASTODON_BOOKMARK_STATUS_URL","MASTODON_UNBOOKMARK_STATUS_URL","MASTODON_MEDIA_UPLOAD_URL","MASTODON_STATUS_FAVORITEDBY_URL","MASTODON_STATUS_REBLOGGEDBY_URL","MASTODON_PROFILE_UPDATE_URL","MASTODON_PIN_OWN_STATUS","MASTODON_UNPIN_OWN_STATUS","MASTODON_MUTE_CONVERSATION","MASTODON_UNMUTE_CONVERSATION","MASTODON_DOMAIN_BLOCKS_URL","MASTODON_ANNOUNCEMENTS_DISMISS_URL","PLEROMA_EMOJI_REACTIONS_URL","PLEROMA_EMOJI_REACT_URL","PLEROMA_EMOJI_UNREACT_URL","PLEROMA_CHAT_MESSAGES_URL","PLEROMA_CHAT_READ_URL","PLEROMA_DELETE_CHAT_MESSAGE_URL","PLEROMA_BACKUP_URL","PLEROMA_EDIT_ANNOUNCEMENT_URL","PLEROMA_DELETE_ANNOUNCEMENT_URL","oldfetch","fullUrl","promisedRequest","Accept","authHeaders","parseUser","MASTODON_FOLLOWING_URL","announcementToPayload","MASTODON_STREAMING","MASTODON_STREAMING_EVENTS","PLEROMA_STREAMING_EVENTS","preprocessor","handleMastoWS","eventTarget","proxy","original","eventName","eventData","dispatchEvent","CustomEvent","wsEvent","readyState","parsedEvent","parseStatus","parseNotification","freeze","JOINED","ERROR","DISABLED","STARTING","STARTING_INITIAL","includeTypes","isNotifications","queryString","param","parseLinkHeaderPagination","flakeId","urlContext","MASTODON_STATUS_CONTEXT_URL","MASTODON_STATUS_SOURCE_URL","parseSource","originalStatus","exportFriends","more","MASTODON_FOLLOWERS_URL","MASTODON_FOLLOW_URL","unfollowUser","MASTODON_UNFOLLOW_URL","MASTODON_BLOCK_USER_URL","MASTODON_UNBLOCK_USER_URL","MASTODON_REMOVE_USER_FROM_FOLLOWERS","mediaIds","inReplyToStatusId","pollOptions","normalizedPoll","expires_in","multiple","postHeaders","putHeaders","MASTODON_DELETE_URL","uploadMedia","formData","parseAttachment","setMediaDescription","deleteUser","addRight","deleteRight","agreement","resp","updateProfileImages","avatarName","importMutes","importBlocks","importFollows","deleteAccount","changeEmail","moveAccount","targetAccount","addAlias","alias","deleteAlias","listAliases","_cacheBooster","changePassword","newPassword","newPasswordConfirmation","settingsMFA","mfaDisableOTP","generateMfaBackupCodes","mfaSetupOTP","mfaConfirmOTP","addBackup","listBackups","fetchFollowRequests","fetchLists","MASTODON_LISTS_URL","account_ids","MASTODON_APPROVE_USER_URL","MASTODON_DENY_USER_URL","status_ids","URLSearchParams","fetchKnownDomains","media_id","last_read_id","MASTODON_USER_IN_LISTS","propsToNative","rgb2hex","g","relativeLuminance","srgb","bit","pow","c2linear","srgbToLinear","getContrastRatio","getContrastRatioLayers","layers","bedrock","alphaBlendLayers","alphaBlend","fg","fga","bg","hex2rgb","hex","mixrgb","rgba2css","rgba","getTextColor","preserve","base","invertLightness","rgb","contrastRatio","getCssColor","Component","isFunction","getComponentOptions","SECOND","MINUTE","HOUR","WEEK","MONTH","YEAR","relativeTime","nowThreshold","round","relativeTimeShort","unitToSeconds","secondsToUnit","desktopNotificationOpts","desktopNotification","bind","output","masto","mastoShort","escape","display_name","name_unescaped","note","description_html","fields","unescape","cover_photo","following_count","bot","settings_store","favicon","chat_token","hide_follows_count","hide_followers_count","is_moderator","is_admin","default_scope","privacy","no_rich_text","show_role","show_birthday","delete_others_notice","muted","blocking","statusnet_blocking","follows_you","follow_request_count","notification_settings","unread_chat_count","parts","unicodeDomain","punycode","screen_name_ui_contains_non_ascii","mime_type","large_thumb_url","spoiler_text","content_type","favourited","favourites_count","reblogged","reblogs_count","edited_at","conversation_id","local","in_reply_to_screen_name","in_reply_to_account_acct","parent_visible","in_reply_to_id","in_reply_to_user_id","in_reply_to_account_id","replies_count","summary_raw_html","external_url","title_html","is_post_verb","qvitter_delete_notice","activity_type","qvitterStatusType","isNsfw","statusnet_html","summary_html","card","media_attachments","parsedNotice","ntype","is_seen","favorited_status","actor","linkHeader","parsedLinkHeader","parseLinkHeader","max_id","prev","min_id","last_message","favicons","faviconWidth","faviconHeight","isImageLoaded","clearFaviconBadge","complete","naturalHeight","initFaviconService","querySelectorAll","favcanvas","createElement","favimg","Image","crossOrigin","favcontext","getContext","clearRect","drawImage","toDataURL","drawFaviconBadge","badgeColor","fillStyle","beginPath","arc","PI","fileSizeFormat","numArg","units","exponent","toFixed","fileMatchesSomeType","specialLanguageCodes","ja_easy","zh_Hant","zh","internalToBrowserLocale","internalToBackendLocale","getLanguageName","languageName","ISO6391","charAt","toLocaleUpperCase","languagesObject","internalToBackendLocaleMulti","visibleTypes","statusNotifications","muteWordHits","isMutedNotification","notificationObject","prepareNotificationObject","filteredNotificationsFromStore","sortedNotifications","i18nString","notifObj","mastoApiNotificationTypes","readNotifsIds","findOffset","child","ignorePadding","offsetLeft","findPadding","topPadding","leftPadding","offsetParent","position","contains","topPaddingStr","leftPaddingStr","promiseCall","stopped","promise","statusSummary","muteWord","rules","generatePreset","head","styleEl","appendChild","styleSheet","sheet","insertRule","radii","shadows","fonts","configColumns","defaultConfigColumns","columns","getCssShadow","usesDropShadow","inset","shad","spread","alpha","getCssShadowFilter","generateColors","sourceColors","colors2to3","getColors","htmlColors","solid","generateRadii","inputRadii","btnRadius","btn","checkbox","avatarAlt","tooltip","chatMessage","generateFonts","family","post","postCode","border","shadow","buttonInsetFakeBorders","inputInsetFakeBorders","hoverGlow","DEFAULT_SHADOWS","topBar","popup","avatarStatus","panelHeader","buttonHover","buttonPressed","generateShadows","hackContextDict","cleanInputShadows","shadowDef","inputShadows","shadows2to3","shadowsAcc","slotName","shadowDefs","slotFirstWord","colorSlotName","mod","convert","newShadow","shadowAcc","computeDynamicColor","variableSlot","composePreset","getThemes","themes","promises","statePositionAcc","getOpacitySlot","isV1","cRed","cGreen","cBlue","cOrange","LAYERS","undelay","badge","profileTint","popover","selectedMenu","btnPanel","btnTopBar","inputPanel","inputTopBar","alert","alertPanel","chatBg","DEFAULT_OPACITY","faint","underlay","alertPopup","SLOT_INHERITANCE","depends","priority","wallpaper","brightness","layer","accent","faintLink","postFaintLink","profileBg","highlightLightText","textColor","highlightPostLink","highlightFaintText","highlightFaintLink","highlightPostFaintLink","highlightText","highlightLink","highlightIcon","popoverLightText","popoverPostLink","popoverFaintText","popoverFaintLink","popoverPostFaintLink","popoverText","popoverLink","popoverIcon","selectedPost","selectedPostFaintText","variant","selectedPostLightText","selectedPostPostLink","selectedPostFaintLink","selectedPostText","selectedPostLink","selectedPostIcon","selectedMenuLightText","selectedMenuFaintText","selectedMenuFaintLink","selectedMenuText","selectedMenuLink","selectedMenuIcon","selectedMenuPopover","selectedMenuPopoverLightText","selectedMenuPopoverFaintText","selectedMenuPopoverFaintLink","selectedMenuPopoverText","selectedMenuPopoverLink","selectedMenuPopoverIcon","lightText","postLink","postGreentext","postCyantext","copacity","pollText","inheritsOpacity","fgText","fgLink","panelText","panelFaint","panelLink","topBarText","topBarLink","tabText","tabActiveText","btnText","btnPanelText","btnTopBarText","btnPressed","btnPressedText","btnPressedPanel","btnPressedPanelText","btnPressedTopBar","btnPressedTopBarText","btnToggled","btnToggledText","btnToggledPanelText","btnToggledTopBarText","btnDisabled","btnDisabledText","btnDisabledPanelText","btnDisabledTopBarText","inputText","inputPanelText","inputTopbarText","alertError","alertErrorText","alertErrorPanelText","alertWarning","alertWarningText","alertWarningPanelText","alertSuccess","alertSuccessText","alertSuccessPanelText","alertNeutral","alertNeutralText","alertNeutralPanelText","alertPopupError","alertPopupErrorText","alertPopupWarning","alertPopupWarningText","alertPopupSuccess","alertPopupSuccessText","alertPopupNeutral","alertPopupNeutralText","badgeNotification","badgeNotificationText","badgeNeutral","badgeNeutralText","chatMessageIncomingBg","chatMessageIncomingText","chatMessageIncomingLink","chatMessageIncomingBorder","chatMessageOutgoingBg","chatMessageOutgoingText","chatMessageOutgoingLink","chatMessageOutgoingBorder","getLayersArray","getLayers","opacitySlot","currentLayer","getDependencies","inheritance","layerDeps","expandSlotValue","getDeps","findInheritedOpacity","visited","depSlot","dependency","getLayerSlot","findInheritedLayer","SLOT_ORDERED","allKeys","whites","grays","blacks","unprocessed","step","node","ai","bi","depsA","depsB","topoSort","aV","bV","OPACITIES","defaultValue","affectedSlots","sourceColor","getColor","targetColor","variable","modifier","parseFloat","sourceOpacity","backgroundColor","deps","isTextColor","outputColor","colorFunc","dep","ownOpacitySlot","opacityOverriden","dependencySlot","dependencyColor","highlightStyle","prefs","solidColor","tintColor","tintColor2","customProps","backgroundImage","backgroundPosition","highlightClass","complicated","faFile","faMusic","faImage","faVideo","faPlayCircle","faStop","faSearchPlus","faTrashAlt","faPencilAlt","faAlignRight","localDescription","nsfwImage","hideNsfwLocal","modalOpen","showHidden","flashLoaded","showDescription","classNames","usePlaceholder","placeholderName","toUpperCase","placeholderIconClass","referrerpolicy","oembed","useModal","modalTypes","videoTag","onEdit","openModal","openModalForce","onRemove","onShiftUp","shiftUp","onShiftDn","shiftDn","stopFlash","flash","closePlayer","setFlashLoaded","toggleDescription","onload","onImageLoad","naturalWidth","onKeydown","_component_StillImage","onPlay","onPause","thumb_url","oembedHTML","onPlayerOpened","onPlayerClosed","slicedUsers","_component_user_link","indeterminate","$event","DialogModal","cancelText","confirmText","onAccept","_component_dialog_modal","darkOverlay","addPositionToWords","words","word","previous","splitByWhitespaceBoundary","currentWord","currentChar","pos","wordsWithPosition","toReplace","faBoxOpen","faStickyNote","faSmileBeam","faSmile","faUser","faPaw","faIceCream","faBus","faBasketballBall","faLightbulb","faCode","faFlag","UNICODE_EMOJI_GROUP_ICON","activities","objects","flags","maybeLocalizedKeywords","nameLocalizer","enableStickerPicker","activeGroup","showingStickers","groupsScrolledClass","keepOpen","customEmojiTimeout","contentLoaded","groupRefs","emojiRefs","filteredEmojiGroups","StickerPicker","showPicker","showPopover","onShowing","hidePicker","hidePopover","setAnchorEl","setGroupRef","onPopoverShown","onPopoverClosed","onStickerUploaded","onStickerUploadFailed","onEmoji","insertion","startIndex","endIndex","visibleStartIndex","visibleEndIndex","scrolledGroup","emojiItems","headerId","parentElement","getOffset","scrollHeader","headerRef","offsetWidth","headerCont","currentScroll","scrollLeft","currentScrollRight","setScroll","setShowStickers","indexInList","scrollToItem","updateScrolledClass","scrollTopMax","toggleStickers","filterByKeyword","keywordLowercase","orderedEmojiList","indices","indexOfKeyword","flat","maybeLocalizedEmojiName","oldContentLoaded","recalculateItemPerRow","getFilteredEmojiGroups","defaultGroup","allEmojiGroups","debouncedHandleKeywordChange","allCustomGroups","minItemSize","emojiHeight","emojiWidth","itemPerRow","activeGroupView","stickersAvailable","unpacked","unicodeEmojiGroups","stickerPickerEnabled","isFirstRow","_component_still_image","composing","_component_DynamicScroller","onUpdate","onVisible","_withCtx","_component_DynamicScrollerItem","_component_sticker_picker","onUploaded","onUploadFailed","ariaLive","defualt","currentText","announce","suggest","modelValue","enableEmojiPicker","hideEmojiButton","newlineOnCtrlEnter","randomSeed","random","caretEl","caret","blurTimeout","temporarilyHideSuggestions","disableClickOutside","overlayStyle","pickerShown","EmojiPicker","UnicodeDomainIndicator","ScreenReaderNotice","preText","postText","showSuggestions","textAtCaret","wordAtCaret","Completion","maybeLocalizedEmojiNamesAndKeywords","onInputScroll","hiddenOverlay","suggestionListId","suggestionItemId","hiddenOverlayCaret","suggestorPopover","picker","padding","lineHeight","fontFamily","fontSize","wordWrap","whiteSpace","onBlur","onFocus","onPaste","onKeyUp","onKeyDown","onClickInput","onTransition","newWord","firstchar","matchedSuggestions","screenReaderNotice","$tc","number","triggerShowPicker","scrollIntoView","togglePicker","startEmojiLoad","insert","surroundingSpace","before","after","isSpaceRegex","spaceBefore","spaceAfter","replaceText","suggestion","len","cycleBackward","cycleForward","rootRef","scrollerRef","closest","scrollerBottomBorder","rootBottomBorder","targetScroll","scroll","bottom","onPickerShown","onPickerClosed","setCaret","ctrlKey","shiftKey","selectionStart","updateStyles","autoCompleteItemLabel","ariaOwns","ariaAutocomplete","ariaExpanded","ariaActivedescendant","_component_screen_reader_notice","_component_EmojiPicker","_component_UnicodeDomainIndicator","at","ruffleInstance","getRuffle","RufflePlayer","polyfills","publicPath","script","onerror","onabort","oncancel","faExclamationTriangle","player","openPlayer","RuffleService","ruffle","newest","createPlayer","letterbox","container","fetchRelationship","attempt","requested","sent","requestFollow","showingConfirmUnfollow","shouldConfirmUnfollow","isPressed","labelFollowing","showConfirmUnfollow","hideConfirmUnfollow","unfollow","doUnfollow","requestUnfollow","hidingLong","minimal","grid","audio","attachmentsRemaining","currentRow","attachmentsDimensionalScore","row","tooManyAttachments","editable","onNaturalSizeLoad","rowStyle","itemStyle","getAspectRatio","flex","toggleHidingLong","openGallery","onMedia","rowIndex","attachmentIndex","_component_Attachment","onSetMedia","Select","promptText","controlledLanguage","addLanguage","setLanguageAt","removeLanguageAt","_component_Select","imageLoaded","useImage","censored","hideNsfwConfig","useDescription","test","newImg","provider_name","getKey","faAt","userScreenName","hasSelection","shouldShowTooltip","handleSelection","getSelection","containsNode","full","userNameFullUi","serverName","userNameFull","highlightType","classnames","shouldBoldenYou","isRemote","shouldShowFullUserName","conf","shouldShowAvatar","shouldShowYous","shouldFadeDomain","MentionLink","mentionsComputed","extraMentions","manyMentions","toggleShowMore","_component_MentionLink","provide","popoversZLayer","noBackground","reportId","generateUserProfileLink","_component_status_content","notes","faStar","faRetweet","faEyeSlash","faSuitcaseRolling","faExpandAlt","faCompressAlt","statusExpanded","unmuted","Report","toggleStatusExpanded","getUser","toggleMute","userClass","userStyle","targetUser","targetUserProfileLink","needMute","_hoisted_22","_hoisted_24","_hoisted_28","_component_Report","filters","toggleNotificationFilter","NotificationFilters","minimalMode","seenToDisplayCount","mainClass","filteredNotifications","unseenCount","unseenCountTitle","noHeading","teleportTarget","wide","mobile","notificationsToDisplay","updateScrollPosition","markAsSeen","seenCount","notifs","_component_NotificationFilters","unseen","_component_notification","boundTo","boundToSelector","popoverClass","removePadding","overlayCenters","overlayCentersSelector","stayOnClick","triggerAttrs","inject","anchorEl","teleport","lockReEntry","styles","oldSize","scrollable","graceTimeout","parentPopover","childrenShown","containerBoundingClientRect","anchorHeight","anchorWidth","anchorScreenBox","anchorStyle","paddingTop","bottomPadding","paddingBottom","rightPadding","paddingLeft","overlayCenter","parentScreenBox","xBounds","yBounds","horizOffset","vertOffset","box","overlayCenterScreenBox","leftInnerOffset","topInnerOffset","leftBorder","rightBorder","topBorder","bottomBorder","translateX","translateY","usingTop","topBoundary","bottomBoundary","yOffset","usingRight","rightBoundary","leftBoundary","xOffset","maxWidth","wasHidden","onChildPopoverState","onClickOutside","onMouseenterContent","onMouseleaveContent","childRef","$parent","$","beforeUnmount","_Transition","faUpload","uploadCount","uploadReady","uploading","uploadFile","self","filesize","allowedsize","filesizeunit","allowedsizeunit","fileData","decreaseUploadCount","clearFile","multiUpload","files","change","dropFiles","fileInfos","faPlus","pollType","expiryAmount","expiryUnit","maxOptions","maxLength","expiryUnits","expiry","convertExpiryFromUnit","minExpirationInCurrentUnit","convertExpiryToUnit","maxExpirationInCurrentUnit","nextOption","element","addOption","deleteOption","updatePollToParent","DateUtils","expiryAmountChange","maxlength","unstyled","faPollH","faBan","pxStringToNumber","MediaUpload","EmojiInput","PollForm","ScopeSelector","updateIdempotencyKey","textarea","replyTo","textLength","autoFocus","allAttentions","attention","buildMentionsString","repliedUser","copyMessageScope","statusParams","subject","mediaDescriptions","statusContentType","statusIsSensitive","statusFiles","statusPoll","statusMediaDescriptions","statusScope","uploadingFiles","pollFormVisible","showDropIcon","dropStopTimeout","previewLoading","emojiInputShown","userDefaultScope","showAllScopes","emojiUserSuggestor","suggestor","emojiSuggestor","statusLength","spoilerTextLength","statusLengthLimit","hasStatusLengthLimit","charactersLeft","isOverLengthLimit","alwaysShowSubject","safeDMEnabled","disablePolls","disableNotice","pollContentError","showPreview","disablePreview","emptyStatus","uploadFileLimitReached","fileLimit","isEdit","deep","statusChanged","autoPreview","clearStatus","mediaUpload","clearPollForm","preserveFocus","previewStatus","optimisticPosting","disableSubmit","submitOnEnter","setAllMediaDescriptions","postingOptions","postHandler","statusPoster","debouncePreviewStatus","closePreview","togglePreview","addMediaFile","fileInfo","removeMediaFile","editAttachment","newText","shiftUpMediaFile","shiftDnMediaFile","uploadFailed","errString","templateArgs","startedUploadingFiles","finishedUploadingFiles","paste","clipboardData","fileDrop","dataTransfer","fileDragStop","fileDrag","dropEffect","onEmojiInputInput","formRef","bottomRef","bottomBottomPaddingStr","bottomBottomPadding","bottomPaddingStr","vertPadding","oldHeight","scrollerHeight","heightWithoutPadding","newHeight","maxHeight","bottomBottomBorder","isBottomObstructed","isFormBiggerThanScroller","bottomChangeDelta","totalDelta","showEmojiPicker","changeVis","togglePollForm","setPoll","pollForm","dismissScopeNotice","handleEmojiInputShow","openProfileTab","onDragover","tabindex","_component_EmojiInput","inputProps","onShown","onCompositionupdate","_component_scope_selector","postFormat","_component_poll_form","onUpdatePoll","_component_media_upload","onUploading","onAllUploaded","_hoisted_29","animation","onDragleave","onDrop","_component_gallery","descriptions","_hoisted_33","progress","$data","subscribeUrl","serverUrl","protocol","host","faLock","faLockOpen","currentScope","initialScope","showNothing","showPublic","showUnlisted","showPrivate","showDirect","originalScope","shouldShow","css","unlisted","private","direct","showAll","userDefault","onScopeChange","faReply","faStarRegular","animated","filterWord","addReaction","existingReaction","focusInput","commonEmojis","hardcodedSet","showingConfirmDialog","shouldConfirmRepeat","showConfirmDialog","doRetweet","hideConfirmDialog","faBookmarkReg","faShareAlt","faExternalLinkAlt","faHistory","showingDeleteDialog","shouldConfirmDelete","showDeleteStatusConfirmDialog","doDeleteStatus","hideDeleteStatusConfirmDialog","copyLink","clipboard","writeText","statusLink","reportStatus","showStatusHistory","p","canDelete","ownStatus","canPin","canMute","canBookmark","isEdited","_component_ConfirmModal","enter","oldStatus","usersCapped","UserListPopover","tooManyReactions","showMoreString","accountsForEmoji","toggleShowAll","reactedWith","fetchEmojiReactionsByIfMissing","reactWith","unreact","emojiOnClick","_component_UserListPopover","faPlusSquare","faEye","camelCase","controlledOrUncontrolledSet","camelized","uncontrolledName","ReplyButton","FavoriteButton","ReactButton","RetweetButton","ExtraButtons","StatusPopover","EmojiReactions","uncontrolledReplying","userExpanded","uncontrolledMediaPlaying","headTailLinks","toggle","controlledName","showReasonMutedThread","inConversation","repeaterClass","repeaterStyle","replyProfileLink","isReply","retweeterUser","retweeter","retweeterHtml","retweeterProfileLink","statusFromGlobalRepository","rtBotStatus","botStatus","botIndicator","rtBotIndicator","mentionsLine","writtenSet","attn","hasMentionsLine","reasonsToMute","userIsMuted","shouldNotMute","relationshipReblog","hideMutedUsers","isFocused","replyToName","replySubject","decodedSummary","startsWithRe","combinedFavsAndRepeatsUsers","combinedUsers","tagObj","isSuspendable","inThreadForest","controlledThreadDisplayStatus","visibilityLocalized","visibilityIcon","showError","toggleReplying","gotoOriginal","toggleUserExpanded","addMediaPlaying","removeMediaPlaying","setHeadTailLinks","controlledToggleThreadDisplay","scrollIfHighlighted","highlightId","rect","_hoisted_50","_hoisted_51","_hoisted_52","_hoisted_53","_component_reply_button","onToggle","_hoisted_31","_component_StatusPopover","flip","_hoisted_34","_component_MentionsLine","onMediaplay","onMediapause","onParseReady","_hoisted_40","_hoisted_41","_hoisted_45","_hoisted_46","_component_AvatarList","_component_EmojiReactions","_hoisted_49","_component_retweet_button","_component_favorite_button","_component_ReactButton","_component_extra_buttons","onOnError","onOnSuccess","_hoisted_54","basePoll","expiresAt","showResults","voted","totalVotesCount","votes_count","containerClass","choiceIndices","isDisabled","noChoice","percentageForOption","resultTitle","activateOption","clickedElement","optionId","voters_count","faLink","postLength","parseReadyDone","localCollapseSubjectDefault","tallStatus","singleLine","longSubject","mightHideBecauseSubject","mightHideBecauseTall","hideSubjectStatus","hideTallStatus","showingMore","attachmentTypes","handle","toggleShowingTall","toggleExpandingSubject","controlledOrUncontrolledToggle","uncontrolledShowingTall","fullContent","uncontrolledShowingLongSubject","uncontrolledExpandingSubject","nsfwClickthrough","attachmentSize","Poll","toggleShowingLongSubject","galleryAttachments","_component_Poll","_component_link_preview","realSrc","appendPx","loadLazy","dataSrc","imageLoadHandler","canvas","imageLoadError","removeAttribute","localeDateString","relativeTimeString","timeString","tc","templateKey","refreshRelativeTimeObject","longFormat","datetime","faRobot","showPlaceholder","imgSrc","FORCE_NSFW","STRIP_MEDIA","FORCE_UNLISTED","DISABLE_REMOTE_SUBSCRIPTION","DISABLE_ANY_SUBSCRIPTION","SANDBOX","QUARANTINE","showDeleteUserDialog","tagsSet","canGrantRole","canChangeActivationState","privileged","canDeleteAccount","canUseTagPolicy","tagPolicyAvailable","hasTag","privilege","toggleTag","toggleRight","deleteUserDialog","show","isProfile","isTargetUser","setToggled","_component_DialogModal","inListsSet","inList","toggleList","faEllipsisV","showingConfirmBlock","ProgressButton","UserListMenu","showConfirmBlock","hideConfirmBlock","showRepeats","hideRepeats","shouldConfirmBlock","doBlockUser","showing_reblogs","_component_UserListMenu","localNote","frozen","startEditing","cancelEditing","finalizeEditing","faRss","faEdit","followRequestInProgress","showingConfirmMute","muteExpiryAmount","muteExpiryUnit","bordered","isOtherUser","dailyAvg","days","userHighlightType","userHighlightColor","visibleRole","validRole","roleTitle","showModerationMenu","hasNote","supportsNote","shouldConfirmMute","muteExpiryUnits","ModerationTools","AccountActions","UserNote","showConfirmMute","hideConfirmMute","doMuteUser","setProfileView","zoomAvatar","mentionUser","onAvatarClickHandler","onAvatarClick","_component_AccountActions","subscribing","_component_ProgressButton","_component_ModerationTools","_component_UserNote","blocksSuspend","hasAudio","onPlaying","setHasAudio","looping","onPaused","srcElement","webkitAudioDecodedByteCount","mozHasAudio","audioTracks","preload","loop","playsinline","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","O","chunkIds","fn","notFulfilled","Infinity","fulfilled","getter","__esModule","getPrototypeOf","mode","ns","getOwnPropertyNames","definition","defineProperty","enumerable","f","chunkId","miniCssF","globalThis","done","needAttach","scripts","getElementsByTagName","getAttribute","charset","nc","setAttribute","onScriptComplete","doneFns","removeChild","Symbol","toStringTag","nmd","installedCssChunks","miniCss","fullhref","existingLinkTags","dataHref","existingStyleTags","findStylesheet","oldTag","linkTag","errorType","realHref","createStylesheet","loadStylesheet","installedChunks","installedChunkData","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file