{"version":3,"file":"static/js/5677_fbfa86503b453d64bc82.js","mappings":"sMAEIA,EAAwC,SAAUC,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUC,GAAS,IAAMC,EAAKN,EAAUO,KAAKF,GAAS,CAAE,MAAOG,GAAKL,EAAOK,EAAI,CAAE,CAC1F,SAASC,EAASJ,GAAS,IAAMC,EAAKN,EAAiB,MAAEK,GAAS,CAAE,MAAOG,GAAKL,EAAOK,EAAI,CAAE,CAC7F,SAASF,EAAKI,GAJlB,IAAeL,EAIaK,EAAOC,KAAOT,EAAQQ,EAAOL,QAJ1CA,EAIyDK,EAAOL,MAJhDA,aAAiBN,EAAIM,EAAQ,IAAIN,GAAE,SAAUG,GAAWA,EAAQG,EAAQ,KAIjBO,KAAKR,EAAWK,EAAW,CAC7GH,GAAMN,EAAYA,EAAUa,MAAMhB,EAASC,GAAc,KAAKS,OAClE,GACJ,EAaO,MAAMO,EAAwBC,IACjC,MAAM,gBAAEC,EAAe,eAAEC,EAAc,oBAAEC,EAAmB,sBAAEC,EAAqB,QAAEC,GAAYL,EAW3FM,GAAU,IAAAC,UAAQ,KACb,CACHC,eAA0C,KAA1BJ,EAA+B,KAAwBA,KAE5E,CAACA,KACGK,EAAsBC,IAA2B,IAAAC,WAAS,GAC3DC,GAAwB,IAAAC,cAAY,IAAMhC,OAAU,OAAQ,OAAQ,GAAQ,YAC1EmB,EAAMc,QACNZ,UAGMD,EAAgBK,EAE9B,KAAI,CAACN,EAAMc,QAASb,EAAiBC,EAAgBI,IAUrD,OATA,IAAAS,YAAU,KACFf,EAAMc,UAAYL,IAGlBN,EAAoBG,EAAQE,gBAE5BE,GAAwB,GAC5B,GACD,CAACV,EAAMc,QAASX,EAAqBG,EAAQE,eAAgBC,IACzD,gBAAoB,IAAkBO,OAAOC,OAAO,CAAC,EAAGjB,EAAO,CAAEK,QAASA,EAASa,QAASN,QAAqEA,EAAwBZ,EAAMkB,QAASC,eAjCrL,IAEf,gBAAoB,IAAwB,CAAEC,SAAUpB,EAAMoB,SAAUC,SAAU,iBA+BqJC,gBA5B1N,IAEb,gBAAoB,IAAwB,CAAEF,SAAUpB,EAAMoB,SAAUC,SAAU,sBA0ByL,C,8FC7CnR,MAAME,EAAevB,IACxB,MAAMwB,GAAc,IAAAC,QAAO,MACrBC,GAAQ,UACR,WAAEC,EAAU,mBAAEC,EAAkB,OAAEC,EAAM,aAAEC,EAAe,QAAW9B,GACnE+B,EAAYC,IAAiB,IAAArB,WAAS,GAyB7C,OAxBA,IAAAI,YAAU,KACN,MAAMkB,EAAYT,EAAYU,QAC9B,GAAKD,EAiBL,OAXAA,EAAUE,UAAY,GACtBH,GAAc,GACVJ,IACAA,EAAmBQ,iBAAiB,yBAAyB,KACzDJ,GAAc,EAAK,IAEvBJ,EAAmBQ,iBAAiB,yBAAyB,KACzDJ,GAAc,EAAM,IAExBC,EAAUI,YAAYT,IAEnB,KACHK,EAAUE,UAAY,GACtBH,GAAc,EAAM,CACvB,GACF,CAACJ,IACG,gBAAoB,MAAO,CAAEU,WAAW,WAC3C,gBAAoB,MAAO,CAAE,aAAc,yBAA0BA,WAAW,QAAYX,GAAcI,GAAa,QAAwBL,IAAS,QAAeA,GAAQG,aAAuC,EAASA,EAAOU,MAAOC,IAAKhB,IACjO,YAAjBM,GAA8B,gBAAoB,MAAO,CAAEQ,WAAW,WAClE,gBAAoB,IAAS,CAAE,aAAc,+BAAgCT,OAAQ,QAAsB,C,wGCrChH,MAAMY,EAAiBzC,IAC1B,MAAM,SAAEqB,EAAQ,QAAEqB,GAAY1C,EACxB2C,EAAO,gBAAoB,KAAU,CAAEtB,SAAUA,EAAUiB,WAAW,QAAY,OACxF,OAAO,gBAAoB,IAAO,CAAEM,YAAY,EAAMN,WAAW,QAAYtC,aAAqC,EAASA,EAAM6C,gBAAiBC,SAAU,GACxJH,EACA,gBAAoB,IAAM,CAAEI,MAAO,CAC3BC,UAAW,cACZC,KAAM,SAAUC,MAAOR,EAASS,QAAS,SAAWT,GAAS,C,kHCR5E,MAmGMU,EAAqB,CAACC,EAAahD,EAASiD,EAAczB,KAC5D,MAAM0B,EAAuB,GAC7B,IAAIC,EAAsB,EAC1B,MAAMC,GAAM,UACZ,IAAK,MAAMC,KAAcL,EAAa,CAClC,IAAKK,EAAWC,YACZ,SAEJ,IAAIC,EAAsBF,EAAWC,YAAYE,OAKjD,GAHIN,EAAqBM,OAAS,IAC9BD,GAAuBvD,EAAQyD,UAAUD,UAEzCL,EAAsBI,GAhHK,IAgHoF,IAAhCL,EAAqBM,QAKpG,MAJAN,EAAqBQ,KAAKL,GAC1BF,GAAuBI,CAK/B,CACA,MAAMI,EA/Gc,EAACX,EAAaS,EAAWR,EAAcW,KAC3D,MAAMC,EAAe,GAWrB,OAVAb,EAAYc,SAAQ,CAACC,EAAMC,KACvB,IAAIC,EAAuBF,EAAKT,YAC5BW,GAAwBA,EAAqBT,OAAS,KACtDS,EAAuBA,EAAqBC,UAAU,EAAG,IAAM,OAEnEL,EAAaH,KAAKT,EAAeA,EAAac,GAAQ,gBAAoB,IAAM,CAAE9B,WAAW,QAAY2B,GAAwBO,IAAK,QAAQH,KAAWC,IACzJJ,EAAaH,KAAK,gBAAoB,IAAM,CAAES,IAAK,SAASH,KAAW,GAAGP,KAAa,IAG3FI,EAAaO,MACN,gBAAoB,WAAgB,KAAMP,EAAa,EAmGzCQ,CAAgBnB,EAAsBlD,EAAQyD,UAAWR,EAAczB,aAAuC,EAASA,EAAO8C,uBAC7IC,EAAsBvB,EAAYQ,OAASN,EAAqBM,OAChEgB,EA5Ec,EAACxE,EAAS2D,EAAcc,EAAgBC,KAC5D,IAAIC,EAAY,CAAC,EACbC,EAAe,GA0BnB,OAzBuB,IAAnBH,GACAG,EAAe5E,EAAQ6E,WACvBF,EAAY,CACRZ,KAAMJ,IAGLc,EAAiB,GAAmC,IAA9BC,GAC3BE,EAAe5E,EAAQ8E,cACvBH,EAAY,CACRI,MAAOpB,IAGNc,EAAiB,GAAmC,IAA9BC,GAC3BE,EAAe5E,EAAQgF,2BACvBL,EAAY,CACRI,MAAOpB,IAGNc,EAAiB,GAAKC,EAA4B,IACvDE,EAAe5E,EAAQiF,4BACvBN,EAAY,CACRI,MAAOpB,EACPuB,UAAW,gBAAoB,WAAgB,KAAMR,KAGtDS,EAAqBP,EAAcD,EAAU,EAgD/BS,CAAgBpF,EAAS2D,EAAcX,EAAYQ,OAAQe,GAC1Ec,EAvCiB,EAACrF,EAASsF,EAAab,EAAgBC,IACvC,IAAnBD,EACOzE,EAAQ6E,WAAWU,QAAQ,SAAUD,GAE5Cb,EAAiB,GAAmC,IAA9BC,EACf1E,EAAQ8E,cAAcS,QAAQ,UAAWD,GAEhDb,EAAiB,GAAmC,IAA9BC,EACf1E,EAAQgF,2BAA2BO,QAAQ,UAAWD,GAE7Db,EAAiB,GAAKC,EAA4B,EAC3C1E,EAAQiF,4BAA4BM,QAAQ,UAAWD,GAAaC,QAAQ,cAAe,GAAGb,UADzG,EA6BoBc,CAAmBxF,EA9FpB,EAACgD,EAAaS,KACjC,MAAMgC,EAAY,GAMlB,OALAzC,EAAYc,SAAQC,IACZA,EAAKT,aACLmC,EAAU/B,KAAKK,EAAKT,YACxB,IAEGmC,EAAUC,KAAKjC,EAAU,EAuFgBkC,CAAezC,EAAsBlD,EAAQyD,WAAYT,EAAYQ,OAAQe,GAC7H,OAAO,gBAAoB,MAAO,CAAE,aAAcnB,EAAIwC,gBAAiB3D,WAAW,QAAY,IAA4BT,aAAuC,EAASA,EAAOoD,cAAeT,IAAK,kBAAmBvB,KAAM,SAAU,aAAcyC,GAAeb,EAAa,EAOzQqB,EAAmBlG,IAC5B,MAAM,YAAEqD,EAAW,aAAEC,EAAY,OAAEzB,GAAW7B,GACxC,QAAEK,IAAY,UACd8F,EAAsB9C,EAAY+C,QAAO1C,QAAyC2C,IAA3B3C,EAAWC,cAClE2C,EAAqBlD,EAAmB+C,EAAqBnF,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGZ,EAAQ4F,iBAAkBjG,EAAMK,SAAUiD,EAAczB,GAC3J,OAAO,gBAAoB,IAAO,CAAES,WAAW,QAAY,IAA+BT,aAAuC,EAASA,EAAOU,OAAS+D,EAAmB,EAU3Kd,EAAuB,CAACe,EAAKC,KAC/B,IAAKD,EACD,MAAO,GAEX,IAAKC,EACD,MAAO,GAEX,MAAMC,EAAW,GAGXC,EAAQC,OADY,YAE1B,IAAIC,EAAQF,EAAMG,KAAKN,GACnBO,EAAO,EACX,KAAiB,OAAVF,GACCE,IAASF,EAAMvC,OACfoC,EAAS1C,KAAK,gBAAoB,IAAM,CAAES,IAAKiC,EAAS5C,QAAU0C,EAAIhC,UAAUuC,EAAMF,EAAMvC,SAEhGoC,EAAS1C,KAAK,gBAAoB,IAAM,CAAES,IAAKiC,EAAS5C,QAAU2C,EAAKI,EAAM,GAAGrC,UAAU,EAAGqC,EAAM,GAAG/C,OAAS,MAC/GiD,EAAOJ,EAAMK,UACbH,EAAQF,EAAMG,KAAKN,GAGvB,OADAE,EAAS1C,KAAK,gBAAoB,IAAM,CAAES,IAAKiC,EAAS5C,QAAU0C,EAAIhC,UAAUuC,KACzEL,CAAQ,C,6JC9JZ,MAAMO,EAAmBhH,IAC5B,MAAM,SAAEiH,EAAQ,OAAEpF,EAAM,gBAAEqF,EAAe,qBAAEC,GAAyBnH,GAC7DoH,EAAMC,IAAW,IAAA1G,UAAS,IAC1B2G,EAAaC,IAAkB,IAAA5G,UAAS,CAC3C6G,UAAU,EACVhI,MAAM,IAGJiE,GAAM,UACNgE,EAAmB,iBAAqBR,GACxCS,EAAWC,KAAKC,KAAKH,EAAmBP,GACxCW,GAAe,IAAAtH,UAAQ,KAClB,OAAU,IAAIuH,MAAML,GAAkBM,QAASb,IACvD,CAACO,EAAkBP,KACtB,IAAAnG,YAAU,KACFoG,GAAwBU,GACxBV,EAAqBU,EAAaT,EAAO,GAC7C,GACD,CAACS,EAAcV,EAAsBC,IACxC,MACMY,GAD2BZ,EAAO,GAAKF,EACCO,EAAmB,EAAIL,EAAOM,EACtEO,GAAwB,IAAA1H,UAAQ,KAClC,QAAwB8F,IAApBwB,EAAa,GACb,OAAOA,EAAaG,EAAc,GAAGE,KAAI7D,GAC9B,mBAAuB4C,GAAU5C,IAG1C,GACP,CAACwD,EAAcG,EAAaf,IACzBkB,EAAcV,EAAmBP,EAOnCE,EAAOM,GAAYA,EAAW,GAC9BL,EAAQK,IAEZ,IAAA3G,YAAU,KACFqG,EAAO,GAAKA,EAAOM,GAAYS,EAE/BZ,EAAe,CACXC,UAAU,EACVhI,MAAM,IAGI,IAAT4H,GAAce,EAEnBZ,EAAe,CACXC,UAAU,EACVhI,MAAM,IAGL4H,IAASM,GAAYS,GAE1BZ,EAAe,CACXC,UAAU,EACVhI,MAAM,GAEd,GACD,CAAC4H,EAAMK,EAAkBC,EAAUS,IACtC,MAAMC,GAAsB,IAAA7H,UAAQ,KACzB,CACHgC,MAAM,QAAuB,MAElC,IACG8F,GAAiB,IAAA9H,UAAQ,KACpB,CACHgC,KAAMV,aAAuC,EAASA,EAAOoF,YAElE,CAACpF,aAAuC,EAASA,EAAOoF,WAC3D,OAAIC,GAAmB,EACZ,gBAAoB,WAAgB,MAExC,gBAAoB,IAAO,CAAE5E,WAAW,QAAY,KAAWT,aAAuC,EAASA,EAAOU,OACzH,gBAAoB,IAAO,CAAEV,OAAQuG,GAAuBH,aAAqE,EAASA,EAAsBC,KAAI,CAACI,EAAOC,IACjK,gBAAoB,SAAY,CAAE/D,IAAK+D,EAAG1G,OAAQwG,EAAgB,aAAc5E,EAAI+E,0BAA4BF,MAE3HH,GAAe,gBAAoBM,EAA2B,CAAEC,gBAAiBpB,EAAaqB,sBAjDpE,KAC1BtB,EAAQD,EAAO,EAAE,EAgD2HwB,kBA9CtH,KACtBvB,EAAQD,EAAO,EAAE,EA6CiKyB,WAAYnB,EAAUoB,YAAa1B,IAAQ,EAE/NqB,EAA6BzI,IAC/B,MAAM,kBAAE4I,EAAiB,sBAAED,EAAqB,gBAAED,EAAe,YAAEI,EAAW,WAAED,EAAU,OAAEhH,GAAW7B,EACjG0B,GAAQ,SAER+B,GAAM,UAENpD,GAAU,UAAYA,QAAQ0I,gBAC9BC,GAA6B,IAAAzI,UAAQ,KAChC,QAAY,KAAwCsB,aAAuC,EAASA,EAAOU,OACnH,CAACV,aAAuC,EAASA,EAAOU,OACrD0G,GAAsB,IAAA1I,UAAQ,KACzB,SAAY,QAAsBmB,GAAQG,aAAuC,EAASA,EAAOqH,iBACzG,CAACrH,aAAuC,EAASA,EAAOqH,eAAgBxH,IACrEyH,GAAoB,IAAA5I,UAAQ,KACvB,QAAY,KAAwBsB,aAAuC,EAASA,EAAOuH,UACnG,CAACvH,aAAuC,EAASA,EAAOuH,UACrDC,GAAoB,IAAA9I,UAAQ,KACvB,SAAY,QAAsBmB,GAAQG,aAAuC,EAASA,EAAOyH,aACzG,CAACzH,aAAuC,EAASA,EAAOyH,WAAY5H,IAIvE,OAAO,gBAAoB,IAAO,CAAE6H,gBAAiB,SAAUC,OAHrC,CACtBC,YAAa,UAEyE7G,YAAY,EAAMN,UAAW0G,GACnH,gBAAoB,IAAe,CAAE1G,UAAW2G,EAAqB/H,QAASyH,EAAuBvH,SAAUsH,aAAyD,EAASA,EAAgBlB,SACzIkC,UAAWrJ,EAAQsJ,uBAAwB,aAAclG,EAAImG,8BACjH,gBAAoB,IAAM,CAAEvI,SAAU,4BAA6BQ,OAAQ,QAC/E,gBAAoB,IACkC,CAAE,aAAc4B,EAAIoG,2BAA4BvH,UAAW6G,GAAqB,GAAGL,OAAiBD,KAC1J,gBAAoB,IAAe,CAAEvG,UAAW+G,EAAmBnI,QAAS0H,EAAmBxH,SAAUsH,aAAyD,EAASA,EAAgBlJ,KACnIkK,UAAWrJ,EAAQyJ,wBAAyB,aAAcrG,EAAIsG,+BAClH,gBAAoB,IAAM,CAAE1I,SAAU,6BAA8BQ,OAAQ,QAAkB,C,+JC9H1G,MAAMmI,EAAkC,WAClCC,EAAiC,UAG1BC,EAAwC,CACjD3H,KAAM,CACF4H,WAAY,SACZC,OAAQJ,EACRK,MAAOJ,EACPK,OAPoC,QCM/BC,EAAqBvK,IAC9B,IAAIwK,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAC5B,MAAMpJ,GAAQ,EAAAqJ,EAAA,KACRC,EAAyC,QAA3BR,EAAKxK,EAAMgL,kBAA+B,IAAPR,GAAgBA,EACjEpJ,EAAqC,QAAzBqJ,EAAKzK,EAAMoB,gBAA6B,IAAPqJ,GAAgBA,EAC7DQ,EAAmD,QAAhCP,EAAK1K,EAAMkL,uBAAoC,IAAPR,OAAgB,EAASA,EAAGS,IACvFC,GAAkB,IAAAvK,cAAY,KAAMwK,MDEnC,CACH9I,KAAM,CACF+I,YALoCC,ECC8B,CACtE7J,QACAsJ,aACA5J,WACA6J,oBDAqB7J,SAAWmK,EAAK7J,MAAM8J,QAAQC,0BAAuBpF,EACtE4E,gBAAiBM,EAAKN,gBAAkB,OAAOM,EAAKN,wBAAqB5E,EACzEqF,mBAAoB,SACpBC,eAAgB,QAChBC,aAAc,UACdC,MAAON,EAAK7J,MAAM8J,QAAQM,eAC1BC,OAAQR,EAAKnK,SAAW,UAAY,UACpCgJ,OAAQJ,EACRK,MAAOJ,EACPK,OAAQiB,EAAKP,WAAa,aAAkCO,EAAK7J,MAAM8J,QAAQQ,eAAiB,aAAmCT,EAAK7J,MAAM8J,QAAQC,uBAKtJ,SAAU,CACN/I,QAAS,KACTuJ,UAAW,aACX7B,OAAQ,OACRC,MAAO,OACPuB,aAAc,WAElB,SAAU,CACN,SAAU,CACNtB,OAAQiB,EAAKnK,WAAamK,EAAKP,WAAa,aAAmCO,EAAK7J,MAAM8J,QAAQC,uBAAyB,aAAkCF,EAAK7J,MAAM8J,QAAQQ,kBAI5LE,YAAa,CACT,SAAU,CACNC,QAAS,aAAaZ,EAAK7J,MAAM8J,QAAQC,0BAlCV,IAACF,CCM1C,GAAE,CAACN,EAAiB7J,EAAU4J,EAAYtJ,IACtC0K,EAAe,cAMrB,OALA,IAAArL,YAAU,KACFf,EAAMqM,cAAgBD,EAAalK,SACnCkK,EAAalK,QAAQoK,OACzB,GACD,CAACF,EAAcpM,EAAMqM,eACjB,gBAAoBE,EAAA,EAAavL,OAAOC,OAAO,CAAC,EAAGjB,EAAMwM,cAC5D,gBAAoBC,EAAA,EAAO,CAAEjI,IAAKxE,EAAM0M,QAASpK,WAAW,QAAoC,QAAvBqI,EAAK3K,EAAM6B,cAA2B,IAAP8I,OAAgB,EAASA,EAAGpI,MAAOoK,cAAe,SAAUpD,gBAAiB,SAAU,aAAc,qBAAsB,aAAyC,QAA1BqB,EAAK5K,EAAM0J,iBAA8B,IAAPkB,EAAgBA,EAAK5K,EAAM0M,QAAS,gBAAiB1M,EAAMoB,UAC3U,gBAAoBwL,EAAA,EAAe,CAAE/K,OAAQuJ,IAAmBlK,QAASE,OAAWiF,EAAY,KAAQ,IAAImE,EAAI,OAAiC,QAAzBA,EAAKxK,EAAM6M,gBAA6B,IAAPrC,OAAgB,EAASA,EAAGsC,KAAK9M,EAAOA,EAAM0M,QAAQ,EAAKN,aAAcA,EAAcW,UAAW/M,EAAMqM,aAAcW,UAAW5L,OAAWiF,EAAY5G,IACzS,IAAI+K,EACU,UAAV/K,EAAE+E,KAA6B,MAAV/E,EAAE+E,KACG,QAAzBgG,EAAKxK,EAAM6M,gBAA6B,IAAPrC,GAAyBA,EAAGsC,KAAK9M,EAAOA,EAAM0M,QACpF,GAEJ,gBAAoBD,EAAA,EAAO,CAAElD,gBAAiB,SAAUC,OAAQ,CACxDC,YAAa,YAEjBzJ,EAAMiN,WAAa,gBAAoBR,EAAA,OAAY,CAAE5K,OAAQ,CACrDU,KAA8B,QAAvBsI,EAAK7K,EAAM6B,cAA2B,IAAPgJ,OAAgB,EAASA,EAAGqC,gBAEtE,gBAAoBvK,EAAA,EAAM3B,OAAOC,OAAO,CAAC,EAAGjB,EAAMiN,aACtDjN,EAAMkD,OAAS,gBAAoBuJ,EAAA,OAAY,CAAE5K,OAAQ,CACjDU,KAA8B,QAAvBuI,EAAK9K,EAAM6B,cAA2B,IAAPiJ,OAAgB,EAASA,EAAGqC,gBAEtE,gBAAoBC,EAAA,EAAM,CAAEjK,QAAS,SAAWnD,EAAMkD,WAAW,EC9B5EmK,EAAiCrN,IAC1C,IAAIwK,EAAIC,EAAIC,EACZ,MAAO4C,EAAsCC,GAA2C,WAAevN,EAAMwN,2BAE7G,EAAAC,EAAA,GAAY,CACRC,KAAM,+BACN1N,QACA2N,gBAAiB,CACbC,aAAc,WACdC,UAAW,oBACXC,iBAAkB,8BAG1B,MAAMC,EAAoD,QAAlCvD,EAAKxK,EAAMgO,yBAAsC,IAAPxD,EAAgBA,EAAK8C,EAMjFW,EAAmBjO,EAAMM,QAAQ4H,KAAIgG,GAAWlN,OAAOC,OAAO,CAAE+J,WAAYkD,EAAOxB,UAAYqB,EAAgBlB,SAAU,IALrG,CAACmB,IACvB,IAAIxD,EACJ+C,EAAwCS,GACd,QAAzBxD,EAAKxK,EAAMmO,gBAA6B,IAAP3D,GAAyBA,EAAGsC,KAAK9M,EAAOgO,EAAkB,EAEqCI,CAAkBF,EAAOxB,UAAYwB,KACpKG,EAA2C,QAA5B5D,EAAKzK,EAAMqO,mBAAgC,IAAP5D,EAAgBA,EAAK,EACxE6D,EAA+B,SAAhBD,EAAyB,CAACJ,IAAoB,QAAMA,EAAkBI,GAErFE,EAA4B,SAAhBF,EAAyB,EAAIA,EAAcC,EAAaA,EAAazK,OAAS,GAAGA,OACnG,OAAO,gBAAoB4I,EAAA,EAAO,CAAEjD,OAAQ,CACpCC,YAAa,WAEjB,gBAAoB+E,EAAA,EAAO,CAAElM,WAAW,QAAoC,QAAvBoI,EAAK1K,EAAM6B,cAA2B,IAAP6I,OAAgB,EAASA,EAAG+D,QAAUzO,EAAMyO,OAChIH,EAAapG,KAAI,CAAC5H,EAASoO,KACvB,IAAIlE,EACJ,OAAO,gBAAoBiC,EAAA,EAAO,CAAEnK,WAAW,QAAoC,QAAvBkI,EAAKxK,EAAM6B,cAA2B,IAAP2I,OAAgB,EAASA,EAAGmE,SAAUC,KAA4B,SAAtB5O,EAAMqO,YAAwBzL,YAAY,EAAM4B,IAAKkK,EAAUlF,OAAQ,CACtMC,YAAa,UACd,aAAc,4BACjBnJ,EAAQ4H,KAAI,CAACgG,EAAQ3F,IACP,IAANA,GAAwB,IAAbmG,EACJ,gBAAoBnE,EAAmBvJ,OAAOC,OAAO,CAAC,EAAGiN,EAAQ,CAAExB,QAASwB,EAAOxB,QAASlI,IAAK0J,EAAOxB,QAASL,cAAc,KAEnI,gBAAoB9B,EAAmBvJ,OAAOC,OAAO,CAAC,EAAGiN,EAAQ,CAAExB,QAASwB,EAAOxB,QAASlI,IAAK0J,EAAOxB,aAEnH6B,EAAY,GAAKG,IAAaJ,EAAazK,OAAS,GAAKiE,MAAM+G,KAAK,CAChEhL,OAAQ0K,IACTrG,KAAI,CAAC4G,EAAGzK,IAAU,gBAAoBoI,EAAA,EAAO,CAAEjI,IAAKH,EAAOxC,OAAQqI,EAAuC,aAAc,gCAAgC,IAChK,C,iKCpDJ,MAAM6E,GAA8B,QAAY,CACnD1E,MAAO,OACPD,OAAQ,SAKC4E,EAA2CtN,IAAU,QAAY,CAC1EuN,gBAAiB,UACjBC,QAAS,OACTC,SAAU,MACVvD,aAAclK,EAAM0N,QAAQC,eAC5BxD,MAAOnK,EAAM8J,QAAQ8D,mBAKZC,GAA8C,QAAY,CACnEnF,OAAQ,OACRoF,WAAY,IAKHC,EAAsC/N,IAAU,QAAY,CAErEgO,UAAW,aACX7D,MAAOnK,EAAM8J,QAAQmE,kBAKZC,GAAqC,QAAY,CAC1DC,SAAU,OAEVhE,MAAO,YC5BEiE,EAAmB,QAAY9P,IACxC,MAAM,iBAAE+P,GAAqB/P,EACvB0B,GAAQ,SACRsO,GAAS,UACf,IAAKD,IAAqBA,EAAiBE,kBACvC,OAAO,KAEX,MAAMC,EAAiC,gBAAoBzD,EAAA,EAAO,CAAElD,gBAAiB,SAAUoD,cAAe,SAAUrK,UAAWyM,GAC/H,gBAAoBtC,EAAA,EAAO,CAAElD,gBAAiB,SAAUoD,cAAe,SAAUrK,UAAW0M,EAAwCtN,GAAQ8H,OAAQ,CAC5IC,YAAa,SAEjB,gBAAoBgD,EAAA,EAAO,CAAE7J,YAAY,EAAM+J,cAAe,SAAUrK,UAAWiN,GAC/E,gBAAoB5M,EAAA,EAAM,CAAEtB,SAAU,gCAAiCiB,UAAWmN,EAAmC/N,MACzH,gBAAoB0L,EAAA,EAAM,CAAE9K,UAAWsN,EAAoC,YAAa,UAAYI,EAAO3P,QAAQ8P,aAAaC,8BAClIzM,GAAgBoM,aAA2D,EAASA,EAAiBpM,aAAoEoM,aAA2D,EAASA,EAAiBpM,YAA1IqM,EAAO3P,QAAQ8P,aAAaE,uBACtJ,OAAO,gBAAoBC,EAAA,EAAW,CAAE3M,YAAaA,EAAa4M,QAASR,aAA2D,EAASA,EAAiBQ,QAASC,oBAAqB,IAAM,gBAAoB,WAAgB,OAASN,EAA+B,I,qCCtB7Q,MAAMO,GAAe,QAAY,CACpCrG,OAAQ,OACRC,MAAO,S,eCMJ,MAAMqG,EAAoB,QAAY1Q,IACzC,MAAM,OAAE2Q,EAAM,YAAEhN,EAAW,QAAE4M,EAAO,cAAEK,EAAa,yBAAEC,EAAwB,0BAAEC,EAAyB,YAAEC,GAAgB/Q,EACpHgQ,GAAS,UACVY,GACDC,GAA4BA,EAAyBF,IAEzD,IAAA5P,YAAU,IACC,KAEH+P,GAA6BA,EAA0BH,EAAO,GAEnE,CAACG,EAA2BH,IAC/B,MAAMK,EAAiBrN,GAAc,OAAcqM,EAAO3P,QAAQ8P,aAAac,0BAA2B,CACtGC,YAAavN,IACZ,GACL,OAAO,gBAAoB2M,EAAA,EAAW,CAAE3M,YAAaA,EAAa4M,QAASA,EAASK,cAAeA,EAAgB,gBAAoBrP,EAAA,EAAa,CAAEK,mBAAoBgP,EAAe9O,cAA8B,IAAhBiP,EAAwB,UAAY,cAAY1K,EAAWmK,oBAAqB,IAAM,gBAAoBW,EAAgB,CAAEH,eAAgBA,KAAoB,IAErWG,EAAkBnR,GACb,gBAAoByM,EAAA,EAAO,CAAEE,cAAe,SAAUrK,UAAWmO,GACpE,gBAAoBW,EAAA,EAAS,CAAE3C,MAAOzO,EAAMgR,eAAgBK,KAAM,WAAoB,YAAa,e,0BC5BpG,MAAMC,EAAkB,CAC3B/O,KAAM,CACFgP,SAAU,WACVnH,OAAQ,OACRC,MAAO,OACP6E,QAAS,WCLJsC,EAAwB,CACjC/H,YAAa,U,eCFjB,MAAMgI,EAAiD,EACjDC,EAA2B,EAG3BC,EAA6B3R,IAC/B,MAAM4R,GAA0B,IAAAnQ,QAAO,IACjCoQ,GAAqC,IAAApQ,QAAO,KAC5C,mBAAEqQ,EAAqB,GAAE,iBAAE/B,EAAgB,iBAAEgC,EAAmB,GAAE,sBAAEC,EAAwBN,EAAwB,mCAAEO,EAAqCR,EAA8C,oBAAES,GAAsB,EAAK,yBAAEC,EAA2B,GAAE,OAE3QC,GAAWpS,EAWLqS,EAREL,EAToC,IAa7BA,EAKTM,EAAoBR,EAAmB1L,QAAOmM,IAAO,IAAI/H,EAAI,OAAgC,QAAxBA,EAAK+H,EAAEC,mBAAgC,IAAPhI,OAAgB,EAASA,EAAGiI,WAAW,IAMlJb,EAAwB1P,QAAUiQ,EAAyBtO,OAAS,GAAKqO,EAAsB,IAAK,OAAiC,CACjIQ,aAJkB,uBAAXN,EAAkCO,EAA0Bb,GAAsBQ,EAKzFP,mBACAa,wBAAyBhB,EAAwB1P,QACjD2Q,oBAAqBR,IACtBS,MAAM,EAAGT,GAEZ,MAAMU,EAAmC,YAAXX,EAAuBL,GAAoBA,EAAiB,GAAKH,EAAwB1P,QAAQkE,QAAOmM,GAAKA,EAAE5B,SAAWoB,EAAiB,KAAM,CAACH,EAAwB1P,QAAQ,IAAM,GAElN6Q,EAAsB,KACtBnB,EAAwB1P,QAAU6Q,GAEtC,MAAMC,EAA6B,IAAIC,IAAIrB,EAAwB1P,QAAQgG,KAAIqK,GAAKA,EAAE5B,UAChFuC,EAA4BP,EAA0Bb,GAC5DD,EAAmC3P,SAAU,OAAiC,CAC1EwQ,aAAcQ,EAA0B9M,QAAOmM,IAAMS,EAA2BG,IAAIZ,EAAE5B,UACtFoB,iBAAkBA,EAClBa,wBAAyBf,EAAmC3P,QAC5D2Q,oBAAqBZ,IA+BzB,MAAO,CACHmB,kBA9BwB,IAAAvS,cAAY,IAChCqR,EACO,GAKJN,EAAwB1P,QAAQ2B,OAAS,EAAI+N,EAAwB1P,QAAU2P,EAAmC3P,QAAQ4Q,MAAM,EAAGT,IAC3I,CAACH,EAAqBG,GACAgB,GAsBrBC,6BArByC,IAAAzS,cAAY,KACrD,GAAIqR,GAAuBnC,EAAkB,CAGzC,MAFqC,CAACA,GAAkBwD,OAAO3B,EAAwB1P,QAAQqR,OAAO1B,EAAmC3P,SAG7I,CACK,OAAIgQ,EAEEN,EAAwB1P,QAAQqR,OAAO1B,EAAmC3P,SAO1E0P,EAAwB1P,QAAQ2B,OAAS,EAAIgO,EAAmC3P,QAAU2P,EAAmC3P,QAAQ4Q,MAAMT,EACtJ,GACD,CAACH,EAAqBnC,EAAkBsC,GACPmB,GAInC,EAiCCb,EAA6Bb,IAC/B,MAAMQ,EAAoB,GACpBmB,EAAoB,GAC1B3B,EAAmB3N,SAAQoO,IACvB,IAAI/H,GACyB,QAAxBA,EAAK+H,EAAEC,mBAAgC,IAAPhI,OAAgB,EAASA,EAAGiI,aAC7DH,EAAkBvO,KAAKwO,GAGvBkB,EAAkB1P,KAAKwO,EAC3B,IAGJ,OADuCD,EAAkBiB,OAAOE,EAC3B,EAM5BC,EAA4BnI,GAjDe,CAACvL,IACrD,IAAIwK,EAEJ,MAAMmJ,EAAuB3T,EAAM8R,mBAAmB8B,QAAO,CAAC1L,EAAK2L,KAC/D3L,EAAI2L,EAAkBlD,QAAUkD,EACzB3L,IACR,CAAC,GAEE4L,EAAqB,GACe,QAAzCtJ,EAAKxK,EAAMmS,gCAA6C,IAAP3H,GAAyBA,EAAGrG,SAAQ4P,IAClF,MAAMC,EAAoBL,EAAqBI,GAC3CC,GACAF,EAAmB/P,KAAKiQ,EAC5B,IAGJ,MAAMC,EAA6B,IAAIhB,IAAIjT,EAAMmS,0BAC3C+B,EAAuBlU,EAAM8R,mBAAmB1L,QAAOmM,IAAM0B,EAA2Bd,IAAIZ,EAAE5B,UAC9FwD,EAAgCnT,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGjB,GAAQ,CAE1E8R,mBAAoBoC,IAClBE,EAAiCzC,EAA0BwC,GACjE,OAAkC,IAA9BL,EAAmBjQ,OACZuQ,EAEJ,CACHhB,iBAAkBpT,EAAMkS,oBAAsB,GAAK4B,EACnDR,4BAA6BtT,EAAMkS,oBAAsB4B,EAAmBP,OAAOa,EAA+Bd,6BAA+Bc,EAA+BhB,iBAAiBG,OAAOa,EAA+Bd,6BAC1O,EAuBMe,CAAgD9I,G,2DCnIpD,MAAM+I,EAAoC,CAC7C/R,KAAM,CACF8H,MAAO,OACPkK,UAAW,GAAG,iBACdC,aAAc,SACd,MAAO,OAMFC,EAA6C,CACtDC,QAAS,OACTH,UAAW,GAAG,iBACdI,SAAU,SACV,qBAAsB,OACtB,kBAAmB,OACnB,sBAAuB,CACnBD,QAAS,SCdJE,EAA+B5U,IACxC,MAAM,0BAAE6U,EAAyB,qBAAE1N,EAAoB,gBAAEiE,GAAoBpL,GAC7E,IAAAe,YAAU,KACN,MAAM8G,EAAe,IAAIC,MAAM+M,aAA6E,EAASA,EAA0BhR,QAAQkE,QACnJZ,GAAwBU,GACxBV,EAAqBU,EACzB,GACD,CAACV,EAAsB0N,aAA6E,EAASA,EAA0BhR,SAC1I,MAAMrB,GAAM,IAAAf,WACJqT,OAAQC,IAAoB,OAAavS,GACjD,OAAO,gBAAoB,MAAOxB,OAAOC,OAAO,CAAEuB,IAAKA,GAAOuS,EAAiB,CAAEzS,WAAW,QAAYmS,EAA4CrJ,KAChJ,gBAAoBqB,EAAA,EAAO,CAAE,aAAc,gCAAiC7J,YAAY,EAAMf,OAAQyS,EAAmC9K,OAAQ,CACzIC,YAAa,WACZoL,GAA2B,E,qCCJrC,MAAMG,EAAmBhV,IAC5B,MAAM,sBAAEiV,GAAwB,EAAK,qBAAE9N,EAAoB,SAAE+N,GAAW,EAAK,QAE7EC,GAAU,EAAK,wBAAEC,EAAuB,wBAAEC,EAAuB,wBACbC,EAA0B,mBAAkB,sBAC5CC,EAAqB,wBAAEC,EAAuB,YAAEC,GAAgBzV,EAC9GoL,GAAkB,IAAA7K,UAAQ,IAEI,kBAA5B+U,GACO,QAA8BL,EAAuBC,EAAUC,IAEnE,QAAgCF,EAAuBC,IAC/D,CAACD,EAA2EE,EAASD,EAA8DI,IAChJI,GAAgB,IAAAnV,UAAQ,IAEM,kBAA5B+U,GACO,SAAgB,QAAqBH,GAAUI,IAEnD,SAAgB,QAAuBL,GAAWG,IAC1D,CAACH,EAA8DC,EAASE,EAA6EC,EAA6EC,IAC/Nd,GAA6C,IAAAlU,UAAQ,KACvD,GAAI2U,GAAYO,EACZ,MAAO,CACHpL,MAAwB,YAAjBrK,EAAMoS,QAA0B,QAAgBqD,GAAe,EAAlC,OAA8C,QAAgBA,GAAe,WAAsC,EAAxE,MAGvE,GACjB,CAACP,EAAUO,EAAazV,EAAMoS,SAEjC,MAAgC,kBAA5BkD,EACO,gBAAoBK,EAAA,EAA2B,CAAEnR,IAAK,8BAA+B4G,gBAAiBA,EAAiBmK,sBAAuBG,EAAeE,oBAAqB,KAAiCC,aAAc,IAAwBV,QAASA,EAAShO,qBAAsBA,EAAsBqO,wBAAyBA,GAA2BJ,GAAoD,CAAC,gBAAoB,WAAgB,SAE/c,KAEIF,GAGAM,SAAkFA,EAAwB,GACnG,gBAAoBZ,EAA6B,CAAEC,0BAA2BO,GAAoD,CAAC,gBAAoB,WAAgB,OAAQjO,qBAAsBA,EAAsB3C,IAAK,gCAAiC4G,gBAAiBqJ,KAEtR,gBAAoBqB,EAAA,EAA6B,CAAEtR,IAAK,gCAAiC4G,gBAAiBA,EAAiBjE,qBAAsBA,EAAsBkO,wBAAyBK,EAAeK,eAAgB,KAAiCC,YAAa,IAAwBR,wBAAyBA,GAA2BJ,GAAoD,CAAC,gBAAoB,WAAgB,QAAO,ECzCvba,EAAiBjW,IAC1B,MAAM,mBAAE8R,EAAqB,GAAE,iBAAE/B,EAAgB,iBAAEgC,EAAgB,oBAAEmE,EAAmB,qBAAEC,EAAoB,0BAAEC,EAAyB,OAAEvU,EAAM,sBAAEmQ,EAAqB,YAAEyD,EAAW,aAErLY,EAAY,yBAAElE,EAA2B,GAAE,wBACSmD,EAA0B,oBAAuBtV,EAC/FkV,IAAWO,IAAc,QAAcA,GAEvCN,IAAUkB,IAAe,QAAcA,GAIvCnP,GAAkB,IAAAzF,QAAO,IACzB,iBAAE2R,EAAgB,4BAAEE,GAAgCI,EAAyB,CAC/E5B,qBACA/B,mBACAgC,mBACAC,wBACAE,sBAAuBiE,EACvBlE,mCAAoCkE,EAAuBjP,EAAgBhF,SAAWiQ,EAAyBtO,OAAS,GAAKqD,EAAgBhF,QAAUgF,EAAgBhF,QAChHiQ,2BACJC,OAAQ,YAE/D,IAAIkE,EAAqB,EACzB,MAAMC,EAAYnD,EAAiBlL,KAAIqK,IACnC,IAAI/H,EAAIC,EACR,OAAO2L,EAA0B7D,EAAGP,GAAyBA,GAAyB,GAA8B,QAAxBxH,EAAK+H,EAAEC,mBAAgC,IAAPhI,OAAgB,EAASA,EAAGiI,cAAgB6D,IAAuBtE,EAAiD,QAAxBvH,EAAK8H,EAAEC,mBAAgC,IAAP/H,OAAgB,EAASA,EAAGgI,YAAY,KAS7R+D,EAAiBC,IAAsB,IAAA9V,UAAS,IACjD+V,EAAuBpD,EAA4BpL,KAAI,CAACqK,EAAGhK,KAC7D,IAAIiC,EAAIC,EACR,OAAO2L,EAA0B7D,EAAGP,GAAyBA,GAAyB,GAA8B,QAAxBxH,EAAK+H,EAAEC,mBAAgC,IAAPhI,OAAgB,EAASA,EAAGiI,cAAgB+D,EAAgBG,SAASpO,IAAM+N,IAAuBtE,EAAiD,QAAxBvH,EAAK8H,EAAEC,mBAAgC,IAAP/H,OAAgB,EAASA,EAAGgI,YAAY,IAE/TyD,GACAK,EAAUxS,KAAKmS,GAEnB,MAAMU,GAAkB,IAAArW,UAAQ,IACQ,IAAhCmW,EAAqB7S,OACd,KAEJ,gBAAoBmR,EAAiB,CAAEE,SAAUA,EACAC,QAASA,EAASF,uBAAuB,EAAOG,wBAAyBsB,EAAsBrB,wBAAyBxT,aAAuC,EAASA,EAAOgV,kBAC/KtB,sBAAuB1T,aAAuC,EAASA,EAAOkH,gBAC9EuM,wBAAyBA,EAAyBnO,qBAAsBsP,EAAoBjB,wBAA0BsB,IACtK5P,EAAgBhF,QAAU4U,CAAC,EAEoB1E,OAAQ,UAAWqD,YAAaA,KACxF,CAACP,EAA8DC,EAASuB,EAAsB7U,aAAuC,EAASA,EAAOgV,kBAAuEvB,EAAyBmB,EAAwE5U,aAAuC,EAASA,EAAOkH,gBAAiB0M,IACxY,OAAO,gBAAoBhJ,EAAA,EAC2B,CACE7J,WAAwC,kBAA5B0S,EAA6CzT,OAAQyP,EAAiB9H,OAAQgI,GAC5G,kBAAlCxR,EAAMsV,wBAA8CsB,EAAkB,gBAAoB,WAAgB,MAC1GT,GAA8C,gBAAoBY,EAAA,GAAY,CAAEvS,IAAK,cAAe3C,OAAQA,aAAuC,EAASA,EAAOmV,YAAcT,GACjLU,EAA0BL,EAAoE5W,EAAMsV,yBAAyB,EAE/H2B,EAA4B,CAACC,EAASC,IAEb,kBAApBA,EAAsCD,EAAU,gBAAoB,WAAgB,M,iDCzE/F,MAAME,GAAe,CACjBC,iBAAkB,OAClBC,kBAAmB,QACnBC,KAAMC,EAAA,EACNC,cAAc,GAMZC,GAAuB,CACzBC,GAAG,QAAgB,MACnBC,GAAG,QAAgB,OAKVC,GAAsB7X,IAC/B,MAAM,oBAAEkW,EAAmB,YAAE4B,EAAW,kBAAEC,EAAiB,YAAEtC,EAAW,aAAEY,GAAiBrW,EACrF0B,GAAQ,SAGRsW,GAAuB,IAAAzX,UAAQ,IAAMkV,GAAeY,EAAe,CAGrEsB,GAAIlC,GAAc,QAAgBsC,EAAkB1N,QAAS,QAAgB,MAC7EuN,GAAIvB,GAAe,QAAgB0B,EAAkB3N,SAAU,QAAgB,YAC/E/D,GAAW,CAACgQ,EAAcZ,EAAasC,EAAkB1N,MAAO0N,EAAkB3N,SAChF6N,GAAc,IAAA1X,UAAQ,KAAM,QAA6BmB,EAAOqW,IAAoB,CAACrW,EAAOqW,IAC5FG,GAAa,IAAA3X,UAAQ,KAAM,CAC7B4X,OAAQL,KACR,CAACA,IACL,OAAO,gBAAoB,KAAa,CAAEM,QAAQ,EAAMC,YAAY,EAAMC,YAAalB,GAAcvV,OAAQoW,EAAaC,WAAYA,EAAYK,gBAAiBb,GAAsBc,gBAAiBR,EAAsB,aAAc,6BAA+B9B,EAAoB,ECnCxR,GAAkB,CAC3B3T,KAAM,CACFgP,SAAU,WACVnH,OAAQ,OACRC,MAAO,SAMFoO,GAAmB,CAC5BlW,KAAM,CACFgP,SAAU,WACVnH,OAAQ,OACRC,MAAO,OACP6E,QAAS,WAMJwJ,GAAiB,CAC1BnH,SAAU,WACVoH,KAAM,EACNC,IAAK,EACLvO,MAAO,OACPD,OAAQ,OACRuK,SAAU,SAEVkE,cAAe,QCVNC,GAA4B9Y,IACrC,MAAM,mBAAE8R,EAAqB,GAAE,iBAAEC,EAAgB,oBAAEmE,EAAmB,qBAAEC,EAAoB,0BAAEC,EAAyB,OAAEvU,EAAM,sBAAEmQ,EAAqB,iCAAE+G,EAAgC,YAAEtD,EAAW,aAAEY,EAAY,wBAC/Jf,EAA0B,mBAAkB,yBAAEnD,EAA2B,IAAOnS,EAC9H0B,GAAQ,SACRwT,IAAWO,IAAc,QAAcA,GAEvCN,IAAUkB,IAAe,QAAcA,GAGvCnP,GAAkB,IAAAzF,QAAO,IACzB,iBAAE2R,EAAgB,4BAAEE,GAAgCI,EAAyB,CAC/E5B,qBACAC,mBACAC,wBACAE,sBAAuBiE,EACvBlE,mCAAoCkE,EAAuBjP,EAAgBhF,QAAUiQ,EAAyBtO,OAASqD,EAAgBhF,QAAUgF,EAAgBhF,QAC1GiQ,2BACJC,OAAQ,uBAE/D,IAAIkE,EAAqB,EACzB,MAAMC,EAAYnD,EAAiBlL,KAAIqK,IACnC,IAAI/H,EAAIC,EACR,OAAO2L,EAA0B7D,EAAGP,GAAyBA,GAAyB,GAA8B,QAAxBxH,EAAK+H,EAAEC,mBAAgC,IAAPhI,OAAgB,EAASA,EAAGiI,cAAgB6D,IAAuBtE,EAAiD,QAAxBvH,EAAK8H,EAAEC,mBAAgC,IAAP/H,OAAgB,EAASA,EAAGgI,YAAY,IAE9RwC,EAAwBnD,EAAmBjO,OAAS,GACrDoR,GAAyBiB,GAC1BK,EAAUxS,KAAKmS,GASnB,MAAOM,EAAiBC,IAAsB,IAAA9V,UAAS,IACjD+V,EAAuBpD,EAA4BpL,KAAI,CAACqK,EAAGhK,KAC7D,IAAIiC,EAAIC,EACR,OAAO2L,EAA0B7D,EAAGP,GAAyBA,GAAyB,GAA8B,QAAxBxH,EAAK+H,EAAEC,mBAAgC,IAAPhI,OAAgB,EAASA,EAAGiI,cAAgB+D,GAAmBA,EAAgBG,SAASpO,IAAM+N,IAAuBtE,EAAiD,QAAxBvH,EAAK8H,EAAEC,mBAAgC,IAAP/H,OAAgB,EAASA,EAAGgI,YAAY,IAEhVqF,GAAc,EAAAkB,EAAA,GAAM,aACpBjB,GAAoB,IAAAxX,UAAQ,IAC1B2U,EACO,MAGNwB,EAAqB7S,OAAS,GAAKsS,IAAqD,kBAA5Bb,EACtDJ,EAAW,KAAgCC,EAAU,KAAiD,KAE1G,MACR,CAACuB,EAAqB7S,OAAQqR,EAAUiB,EAA0EhB,EAA6DG,IAC5K2D,EAA6B/C,GAAuBjB,GAAyBkB,GAAwBD,EAEvG6C,EAAmC,gBAAoBtM,EAAA,EAAO,CAAEnK,WAAW,SAAY,QAAyCZ,EAAOqW,GAAoB,CACnJmB,UAAWxX,EAAM0N,QAAQ+J,WACzBC,OAAQ,QACNlD,GAAuBQ,EAAqB7S,OAAS,GAAKsS,EAAuB,gBAAoB1J,EAAA,EAAO,CAAEnK,WAAW,SAAY,QAA6BZ,EAAOqW,IAAqB5B,EAAyEb,KAA6BY,GAAuB,gBAAoB2B,GAAoB,CAAE3B,oBAAqBA,EAAqB4B,YAAaA,EAAaC,kBAAmBA,EAAmBtC,YAAaA,EAAaY,aAAcA,SAAkBhQ,EACjhBuQ,GAAkB,IAAArW,UAAQ,IACQ,IAAhCmW,EAAqB7S,QAAiBsS,EAGnC,gBAAoBnB,EAC2B,CACEG,QAASA,EAAShO,qBAAsBsP,EAAoBvB,SAAUA,EAAUD,uBAAuB,EAAMG,wBAAyBsB,EAAsBrB,wBAAyBxT,aAAuC,EAASA,EAAOgV,kBAC5OtB,sBAAuB1T,aAAuC,EAASA,EAAOkH,gBAC9EuM,wBAAyBA,EAAyBE,wBAA0BsB,IAC5H5P,EAAgBhF,QAAU4U,CAAC,EAC5BrB,YAAaA,IART,MASZ,CAACP,EAA8DC,EAASgB,EAAsBO,EAAsB7U,aAAuC,EAASA,EAAOgV,kBAAuEvB,EAAyBmB,EAAwE5U,aAAuC,EAASA,EAAOkH,gBAAiB0M,IAC9Z,OAAO,gBAAoBhJ,EAAA,EAAO,CAAE5K,OAAQ,IACxCoX,EACA,gBAAoBI,EAAA,EAAW,CAAEtF,GAAI+D,EAAaxV,WAAW,QAAYoW,MACzE,gBAAoBjM,EAAA,EACkC,CACE7J,WAAwC,kBAA5B0S,EAA6CzT,OAAQ4W,GAAkBjP,OAAQgI,GAC7G,kBAAlCxR,EAAMsV,wBAA8CsB,EAAkB,gBAAoB,WAAgB,MAC1GT,GAA8C,gBAAoBY,EAAA,GAAY,CAAEvS,IAAK,cAAe3C,OAAQA,aAAuC,EAASA,EAAOmV,YAAcT,GACjL,GAA0BK,EAAoE5W,EAAMsV,0BAA0B,EAEpI,GAA4B,CAAC4B,EAASC,IAEb,kBAApBA,EAAsCD,EAAU,gBAAoB,WAAgB,M,uCCnFxF,MAAMoC,GAAsBtZ,IAC/B,MAAM,mBAAE8R,EAAqB,GAAE,iBAAEC,EAAgB,oBAAEmE,EAAmB,qBAAEC,EAAoB,0BAAEC,EAAyB,OAAEvU,EAAM,sBAAEmQ,EAAqB,YAAEyD,EAAW,aAC/GY,EAAY,wBACZf,EAA0B,mBAAkB,yBAAEnD,EAA2B,IAAOnS,EAC9H0B,GAAQ,EAAAqJ,GAAA,KACRmK,IAAWO,IAAc,QAAcA,GAEvCN,IAAUkB,IAAe,QAAcA,GAGvCnP,GAAkB,IAAAzF,QAAO,IACzB,iBAAE2R,EAAgB,4BAAEE,GAAgCI,EAAyB,CAC/E5B,qBACAC,mBACAC,wBACAE,sBAAuBiE,EACvBlE,mCAAoCkE,EAAuBjP,EAAgBhF,QAAUiQ,EAAyBtO,OAASqD,EAAgBhF,QAAUgF,EAAgBhF,QAC1GiQ,2BACJC,OAAQ,YAE/D,IAAIkE,EAAqB,EACzB,MAAMC,EAAYnD,EAAiBlL,KAAIqK,IACnC,IAAI/H,EAAIC,EACR,OAAO2L,EAA0B7D,EAAGP,GAAyBA,GAAyB,GAA8B,QAAxBxH,EAAK+H,EAAEC,mBAAgC,IAAPhI,OAAgB,EAASA,EAAGiI,cAAgB6D,IAAuBtE,EAAiD,QAAxBvH,EAAK8H,EAAEC,mBAAgC,IAAP/H,OAAgB,EAASA,EAAGgI,YAAY,MAEtQX,EAAmBjO,OAAS,IAC5BqS,GAC1BK,EAAUxS,KAAKmS,GASnB,MAAOM,EAAiBC,IAAsB,IAAA9V,UAAS,IACjD+V,EAAuBpD,EAA4BpL,KAAI,CAACqK,EAAGhK,KAC7D,IAAIiC,EAAIC,EACR,OAAO2L,EAA0B7D,EAAGP,GAAyBA,GAAyB,GAA8B,QAAxBxH,EAAK+H,EAAEC,mBAAgC,IAAPhI,OAAgB,EAASA,EAAGiI,cAAgB+D,GAAmBA,EAAgBG,SAASpO,IAAM+N,IAAuBtE,EAAiD,QAAxBvH,EAAK8H,EAAEC,mBAAgC,IAAP/H,OAAgB,EAASA,EAAGgI,YAAY,IAEhVqF,GAAc,EAAAkB,EAAA,GAAM,aACpBjB,GAAoB,IAAAxX,UAAQ,IAC1B2U,EACO,MAGNwB,EAAqB7S,OAAS,GAAKsS,IAAqD,kBAA5Bb,EACtDJ,EAAW,KAAgCC,EAAU,KAAiD,KAE1G,MACR,CAACuB,EAAqB7S,OAAQqR,EAAUiB,EAA0EhB,EAA6DG,IAC5K2D,EAA6B/C,GAAuBC,GAAwBD,EAAsB,gBAAoBzJ,EAAA,EAAO,CAAEnK,WAAW,SAAY,QAA6BZ,EAAOqW,IAAqB5B,EAAyEb,KAA6BY,QAAuB7P,EAC5UuQ,GAAkB,IAAArW,UAAQ,IACQ,IAAhCmW,EAAqB7S,QAAiBsS,EAGnC,gBAAoBnB,EAC2B,CACEG,QAASA,EAAShO,qBAAsBsP,EAAoBvB,SAAUA,EAAUD,uBAAuB,EAAMG,wBAAyBsB,EAAsBrB,wBAAyBxT,aAAuC,EAASA,EAAOgV,kBAC5OtB,sBAAuB1T,aAAuC,EAASA,EAAOkH,gBAC9EuM,wBAAyBA,EAAyBE,wBAA0BsB,IAC5H5P,EAAgBhF,QAAU4U,CAAC,EAC5BrB,YAAaA,IART,MASZ,CAACP,EAA8DC,EAASgB,EAAsBO,EAAsB7U,aAAuC,EAASA,EAAOgV,kBAAuEvB,EAAyBmB,EAAwE5U,aAAuC,EAASA,EAAOkH,gBAAiB0M,IAC9Z,OAAO,gBAAoBhJ,EAAA,EAAO,CAAE5K,OAAQ,IACxCoX,EACA,gBAAoBI,EAAA,EAAW,CAAEtF,GAAI+D,EAAaxV,WAAW,QAAYoW,MACzE,gBAAoBjM,EAAA,EACkC,CACE7J,WAAwC,kBAA5B0S,EAA6CzT,OAAQ4W,GAAkBjP,OAAQgI,GAC7G,kBAAlCxR,EAAMsV,wBAA8CsB,EAAkB,gBAAoB,WAAgB,MAC1GT,GAA8C,gBAAoBY,EAAA,GAAY,CAAEvS,IAAK,cAAe3C,OAAQA,aAAuC,EAASA,EAAOmV,YAAcT,GACjL,GAA0BK,EAAoE5W,EAAMsV,0BAA0B,EAEpI,GAA4B,CAAC4B,EAASC,IAEb,kBAApBA,EAAsCD,EAAU,gBAAoB,WAAgB,MCzFlFqC,GAAwBvZ,IACjC,MAAM,qBAAEmW,GAAyBnW,EAC3B8X,GAAc,EAAAkB,EAAA,GAAM,aAC1B,OAAO,gBAAoBvM,EAAA,EAAO,CAAE5K,OAAQ,IACxC,gBAAoBwX,EAAA,EAAW,CAAEtF,GAAI+D,EAAaxV,WAAW,QAAYoW,MACzE,gBAAoBjM,EAAA,EAAO,CAAE5K,OAAQ4W,GAAkBjP,OAAQgI,GAAyB2E,GAA8C,gBAAoB,WAAgB,OAAO,ECe5KqD,GAAmC,EAKnCC,GAAe,CACxB,sBAAuB,OACvB,wBAAyB,OACzB,mBAAoB,OACpB,kBAAmB,OACnB,cAAe,QAWNC,GAAyC,CAClDC,KAAM,cAcGC,GAAgB5Z,IACzB,IAAIwK,EAAIC,EAAIC,EACZ,MAAM,iBAAEqF,EAAgB,mBAAE+B,EAAqB,GAAE,sBAAE+H,EAAqB,uBAAEC,EAAsB,iBAAE/H,EAAgB,uBAAEgI,EAAsB,wBAAEC,EAAuB,wBAAEC,EAAuB,yBAAEC,EAAwB,yBAAErJ,EAAwB,qCAAEsJ,EAAoC,+BAAEC,EAA8B,OAAEvY,EAAM,OAAEuQ,EAAM,eAAEiI,EAAc,kBAAEC,EAAiB,sBAAEtI,EAAwBwH,GAAgC,iCAAET,EAAgC,iCAAEwB,EAEvcC,iBAAkBC,EAElBC,mBAAoBC,EAAyB,oBAE7CC,EAAsBlB,GAAsC,wBAE5DpE,EAA0B,oBAAuBtV,EAC3CyD,GAAM,WACN/B,GAAQ,SACRmZ,GAAgB,UAAYxa,QAAQ8P,aACpC9P,GAAU,IAAAE,UAAQ,IAAOS,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG4Z,GAAgB7a,EAAMK,UAAW,CAACwa,EAAe7a,EAAMK,UAEhHya,EAA2BF,GAAoD,WAA7BA,EAAoBjB,KAAoBiB,EAAoBzC,YAAS9R,EAEvH0U,GAAmB,EAAA/B,EAAA,GAAM,iBAAkB8B,GAC3CE,IAAoC,uBAAX5I,GAAiG,YAAXA,KAAyBN,EAAmBjO,OAAS,IACpKoX,GAAe,IAAAxZ,QAAO,MACtByZ,GAAiB,QAAmBD,GACpCE,GAAkB,QAAoBF,GACtC/F,IAAWgG,IAAiB,QAAcA,IAEzCE,EAAyBC,GAA8B,WAAe,KAEtEC,GAA0BC,IAA+B,WAAe,CAAC,GAE1EC,IAAsB,IAAA3a,cAAY,CAAC4a,EAAcC,KACnDH,IAA4BrZ,GAAYlB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGiB,GAAU,CAAE,CAACuZ,GAAe,CAC5FC,cACA/Z,WAAYmY,aAAuE,EAASA,EAAuBnY,eACjH,GACX,CAACmY,aAAuE,EAASA,EAAuBnY,cAE3G,IAAAZ,YAAU,KACN,IAAIyJ,EACgC,QAAnCA,EAAKxK,EAAM8T,0BAAuC,IAAPtJ,GAAyBA,EAAGrG,SAAQwX,IAC5E,IAAInR,GACsC,QAAnCA,EAAKxK,EAAM8R,0BAAuC,IAAPtH,OAAgB,EAASA,EAAGoR,MAAKC,GAAKA,EAAElL,SAAWgL,MAEjGG,QAAQC,KAAK,sCAAwCJ,EACzD,GACF,GACH,CAAC3b,EAAM8T,mBAAoB9T,EAAM8R,qBAGpC,MAAMgC,GAAyD,QAAnCtJ,EAAKxK,EAAM8T,0BAAuC,IAAPtJ,EAAgBA,EAAK4Q,EAItFY,IAAiB,IAAAzb,UAAQ,KAC3B,IAAIiK,EAAIC,EACR,GAAIsP,EACA,OAAOA,EAAuBhK,GAElC,MAAMkM,GAAuB,QAAgBjB,EAAqB,KAA8B,CAAC,EAAG,CAChGzY,KAAM,CACFqJ,aAAclK,EAAM0N,QAAQC,iBAEjCxN,aAAuC,EAASA,EAAOqa,YACpDC,EAAgBpM,EAAiBpM,YAAmBoM,EAAiBpM,YAAtB,GAMrD,OAAO,gBAAoB8I,EAAA,EAAO,CAAE5K,OAAQ,MAA+B2C,IAAK,uBAAwB1B,SAAU,EAAG,aAAczC,EAAQ+b,wBAAyBnZ,KAAM,UACtK,gBAAoB,IAAiB,CAAE0N,OAAQZ,EAAiBY,OAAQsJ,wBAAyBA,EAAyBC,yBAA0BA,EAA0BzH,YAAyH,QAA3GjI,EAAKuF,aAA2D,EAASA,EAAiByC,mBAAgC,IAAPhI,OAAgB,EAASA,EAAGiI,YAAalC,QAASR,EAAiBQ,QAASK,cAA2H,QAA3GnG,EAAKsF,aAA2D,EAASA,EAAiByC,mBAAgC,IAAP/H,OAAgB,EAASA,EAAGmG,cAAejN,YAJvhB,YAAXyO,EAAuB/R,EAAQgc,gBAAkBnH,EAAW,GAAK7U,EAAQgc,gBAImgBF,aAAcA,EAActC,sBAAuBA,EAAuBQ,eAAgBA,EAAgBiC,YAAatB,GAAsB9F,IAA2E,YAAX9C,EAAsBkI,kBAAmBA,EAAmBvB,iCAAkCA,EAAkCwB,iCAAkCA,EAAkCgC,8BAA+Blc,EAAQkc,8BAA+BC,8BAA+Bnc,EAAQmc,8BAA+B3a,OAAQoa,EACtkCQ,WAAY1M,EAAiB0M,aAAc,GAClG,CAACvH,EAAUnF,EAAkBwK,EAAkCV,EAAuBI,EAAyBC,EAA0BG,EAAgBN,EAAwBiB,EAAoBjC,EAAkCuB,EAAmBja,EAAQkc,8BAA+Blc,EAAQgc,gBAAiBhc,EAAQ+b,wBAAyB/b,EAAQmc,8BAA+B3a,aAAuC,EAASA,EAAOqa,WAAYxa,EAAM0N,QAAQC,eACld+C,IAEEoI,IAAmB,IAAA3Z,cAAa8P,IAC9BmD,GAAmBjQ,QAlFc,IAqFhCuX,EAAwBzE,SAAShG,IAClC0K,EAA2BD,EAAwB7H,OAAO5C,IAE9D8J,SAAkFA,EAAwB9J,GAAO,GAClH,CAACmD,GAAmBjQ,OAAQuX,EAAyBC,EAA4BZ,IAE9EC,IAAqB,IAAA7Z,cAAa8P,IACpC0K,EAA2BD,EAAwBhV,QAAOmM,GAAKA,IAAM5B,KACrEgK,SAAsFA,EAA0BhK,EAAO,GACxH,CAACyK,EAAyBC,EAA4BV,KAElD+B,GAAoBC,IAAyB,WAAe,IAK7DC,IAAwB,IAAA/b,cAAYgc,IACtCF,GAAsBE,GAItBC,YAAW,KACPH,GAAsB,GAAG,GAC1B,IAAK,GACT,CAACA,KACEI,IAA2B,IAAAlc,cAAY,CAACqQ,EAAa8L,KACvD,MAAMC,EAAoB/L,EAAYsB,YAEhC0K,EAAsBD,EAAoB3B,GAAyBpK,EAAYP,aAAUtK,EAEzF8W,EAAWrJ,cAA+D,EAASA,GAAmB6C,SAASzF,EAAYP,QAC3HyM,EAAoB,KACtB,IAAI5S,EAAIC,EAER,OAAIyS,KAIID,aAA6D,EAASA,EAAkBI,cAAwD,QAAvC7S,EAAKyS,EAAkBI,kBAA+B,IAAP7S,OAAgB,EAASA,EAAGJ,SAAmD,QAAvCK,EAAKwS,EAAkBI,kBAA+B,IAAP5S,OAAgB,EAASA,EAAGJ,OAAS,CACxRqR,YAAa,MACb/Z,WAAYmY,aAAuE,EAASA,EAAuBnY,YACnHmY,EACyB,EAEjC,OAAO,gBAAoB,IAAkB,CAAEtV,IAAK0M,EAAYP,OAAQA,OAAQO,EAAYP,OAAQkD,kBAAmB3C,EAAaL,yBAA0BmM,EAAqBnM,OAA2BxK,EAAWyK,0BAA2BkM,EAAqB5C,OAAiC/T,EAAWoM,cAAauK,IAAqBC,aAA6D,EAASA,EAAkBxK,aAAqB1B,cAAaiM,IAAqBC,aAA6D,EAASA,EAAkBlM,aAAqBH,cAAeoM,EAAqBC,aAA6D,EAASA,EAAkBrM,mBAAgBvK,EAAWyT,uBAAwBkD,GAAsBI,IAAsBA,SAAsB/W,EAAWgU,eAAgBA,EAAgBC,kBAAmBA,EAAmBja,QAASA,EAASid,SAAUpM,EAAYP,SAAWZ,EAAiBY,YAAStK,EAAYuU,EAAmD,WAA7BA,EAAoBjB,KAAoB,SAAW,kBAAetT,EAC3gC0U,iBAAkBA,EAClBP,iBAAkBA,GAClBE,mBAAoBA,GACpBc,oBAAqBA,GACrB2B,SAAUA,EACVI,mBAAoBzJ,GAAmBjQ,QAvI7D,EAwIsB+Y,sBAAuBA,IAAwB,GAC3G,CAAC/L,EAA0BuJ,EAAgCN,EAAwB/J,EAAkBsK,EAAgBC,EAAmBja,EAAgE0a,EAAyEH,EAA4EU,GAAiFxH,GAA2E0G,GAAyEE,GAA2EkC,GAA8EpB,KACxtBgC,GAAyB1L,EAAmB8J,MAAK1K,IAAiB,IAAI1G,EAAI,OAAgD,QAAxCA,EAAK0G,EAAYuM,yBAAsC,IAAPjT,OAAgB,EAASA,EAAGiI,WAAW,IACzKiL,GAAkC,gBAAoB5N,EAAkB,CAAEC,iBAAkBA,IAC5F4N,GAA6BH,IAA0B,gBAAoB9M,EAAmB1P,OAAOC,OAAO,CAAC,EAAGuc,GAAwB,CAAE5M,cAAmE,QAAnDnG,EAAK+S,GAAuBC,yBAAsC,IAAPhT,OAAgB,EAASA,EAAGmG,cAAeC,yBAA0BA,EAA0BC,0BAA2BqJ,EAAsCpJ,YAAiE,QAAnDrG,EAAK8S,GAAuBC,yBAAsC,IAAP/S,OAAgB,EAASA,EAAGqG,eAC1doF,GAAuBwH,KAA0D5N,EAAiBE,kBAAoByN,QAAkCrX,GACxJuX,IAAc,IAAArd,UAAQ,KAAM,CAC9BuR,qBACA/B,mBACAoG,wBACA4C,mCACA/G,wBACAD,mBACAlQ,SACAuU,0BAA2B4D,QAAyEA,EAA0B+C,GAC9H7G,oBAAqB8F,GACrBvG,YAAayF,EACb7E,aAAc8E,EACyChJ,yBAA0B2B,GAC7BwB,6BACpD,CAACxD,EAAoB/B,EAAkBoG,GAAsB4C,EAAkC/G,EAAuBD,EAAkBlQ,EAAQma,GAAgBd,EAAgBC,EAAiBnB,EAAyB+C,GAAiFjJ,GAAwEwB,IACjXuI,IAAqB,IAAAtd,UAAQ,IAE3Bid,IAAqC,mBAAXpL,EACnB,gBAAoBmH,GAAsBvY,OAAOC,OAAO,CAAC,EAAG2c,KAExD,uBAAXxL,EACO,gBAAoB0G,GAA0B9X,OAAOC,OAAO,CAAC,EAAG2c,KAG5D,YAAXxL,EACO,gBAAoBkH,GAAoBtY,OAAOC,OAAO,CAAC,EAAG2c,KAE9D,gBAAoB3H,EAAejV,OAAOC,OAAO,CAAC,EAAG2c,MAC7D,CAACxL,EAAQwL,GAAgEJ,KAC5E,OAAO,gBAAoB,MAAO,CAG9BzJ,GAAI+G,OAA2BzU,EAAY0U,EAAkB,aAActX,EAAI0M,aAAc3N,IAAKyY,EAAc3Y,WAAW,QAAY,MAA2BT,aAAuC,EAASA,EAAOU,KAAMkX,KAC/NoE,GACA,gBAAoBC,EAAA,EAAW,CAAEpB,mBAAoBA,GAAoBqB,SAAU,WAAY,C,gJCpO9D,QAAY,CACjDxM,SAAU,WACVlH,MAAO,OACPD,OAAQ,SAHL,MAmBM4T,EAAgC,CACzC3T,MAAO,MACPD,OAAQ,KAMC6T,EAAgC,CACzC5T,MAAO,OACPD,OAAQ,KAMC8T,EAAiD,CAC1D7T,MAAO,EACPD,OAAQ,OAMC+T,EAA2C,CACpD9T,MAAO,GACPD,OAAQ,MAMCgU,EAA0B,EAI1BC,EAA+B,CAAC3c,EAAO4c,EAAuBC,EAAoBjJ,KACpF,CACHjL,MAAOkU,EAAqB,GAAGD,EAAsBjU,WAAa,GAClED,OAAQmU,EAAqB,GAAGD,EAAsBlU,YAAc,GACpEoU,SAAUD,EAAqB,GAAK,GAAGD,EAAsBjU,WAC7DkK,UAAWgK,EAAqB,GAAK,GAAGD,EAAsBlU,YAC9DmH,SAAU,WACVkN,OAAoC,kBAA5BnJ,EAA8C,GAAGoJ,OAA+C,QACxG9F,IAAiC,kBAA5BtD,EAA8C,GAAGoJ,OAA+C,QACrG9S,aAAclK,EAAM0N,QAAQC,eAC5BsF,SAAU,SACVgK,MAAO,GAAGD,SAMLE,EAA2C,CAACld,EAAO4c,KACrD,QAAgBD,EAA6B3c,EAAO4c,GAAwB,CAC/E/b,KAAM,CACF2W,UAAWxX,EAAM0N,QAAQ+J,cAOxB0F,EAA+B,CAACnd,EAAOod,KACzC,QAAgB,CACnBC,MAAM,QAAYV,EAA6B3c,EAAOod,GAAe,CACjEL,OAAQ,GAAGO,OACXL,MAAO,GAAGK,UAEf,CACCD,KAAM,CACF7F,UAAWxX,EAAM0N,QAAQ+J,WACzB,gBAAiB,CACbD,UAAWxX,EAAM0N,QAAQ6P,YACzB3U,OAAQ,IAAG,OAAS,YAAY5I,EAAM8J,QAAQM,oBAGvDoT,GAQMF,EAA+C,EAK/CN,EAA0C,GAI1CS,EAA8B,CACvC5c,KAAM,CACFgP,SAAU,WACV6H,OAAQgF,EACRhU,OAAQ,OACRC,MAAO,SAwCF6U,EAAwB,CACjCE,0BAA2B,CACvBhG,OAAQgF,EAA0B,G,2CCpKnC,MAAMiB,EAA8B,CACvCjV,OAAQ,OACRC,MAAO,OACPkH,SAAU,YAGD+N,EAA0B,CACnC/c,KAAM,CACFgP,SAAU,WACVqH,IAAK,EACLD,KAAM,EACNtO,MAAO,OACPD,OAAQ,OAGRgP,OAAQ,G,uFCZT,MAAMmG,EAAkC,CAACtK,EAAuBC,KAC5D,CACHX,UAAWW,EAAW,GAAGsK,EAAuCpV,YAAc,GAAGqV,EAAuCrV,YACxHC,MAAO4K,EAAwBC,EAAW,eAAe,iBAA4C,eAAe,iBAA4C,OAChKV,aAAc,WAMTkL,EAA0BxK,IAC5B,CACHjO,SAAUiO,EAAWyK,EAAsCC,IAOtDJ,EAAyC,CAClDpV,OAAQ,IACRC,MAAO,KAMEoV,EAAyC,CAClDrV,OAAQ,IACRoU,SAAU,IACVrP,SAAU,OAKDwQ,EAAsC,CAC/CpL,UAAW,GAAGiL,EAAuCpV,YACrDoU,SAAU,GAAGgB,EAAuCnV,WACpDwV,UAAW,GAAGL,EAAuCpV,YACrD+E,SAAU,GAAGqQ,EAAuCnV,YAK3CuV,EAAsC,CAC/CrL,UAAW,GAAGkL,EAAuCrV,YACrDoU,SAAU,GAAGiB,EAAuCjB,cACpDqB,UAAW,GAAGJ,EAAuCrV,YACrD+E,SAAU,GAAGsQ,EAAuCtQ,cACpD9E,MAAO,OACPD,OAAQ,O,8EC7CL,MAAM0V,EAAuC,CAChDvL,UAAW,MACXsL,UAAW,EACXxV,MAAO,GAUE0V,EAAiC,CAC1CxL,UAAW,KACXsL,UAAW,GACXxV,MAAO,IAUE2V,EAAgC,CAAC/K,EAAuBC,EAAUC,IACpED,GAAYC,EAAU,CACzB9K,MAAO,GAAGyV,EAAqCzV,WAC/CD,OAAQ6K,EAAwB,eAAe,kBAA6C,OAC5FgL,cAAe,WACd/K,GAAYC,EAAU,CACvB9K,MAAO,GAAGyV,EAAqCzV,WAC/CD,OAAQ6K,EAAwB,eAAe,kBAA8D,OAC7GgL,cAAe,UACf,CACA5V,MAAO,GAAG0V,EAA+B1V,WACzCD,OAAQ6K,EAAwB,eAAe,kBAAwD,OACvGgL,cAAe,UAMVC,EAAoC,CAC7C3L,UAAW,GAAGuL,EAAqCvL,eACnDiK,SAAU,GAAGsB,EAAqCzV,WAClDwV,UAAW,GAAGC,EAAqCD,eACnD1Q,SAAU,GAAG2Q,EAAqCzV,WAClDA,MAAO,OACPD,OAAQ,QAKC+V,EAA8B,CACvC5L,UAAW,GAAGwL,EAA+BxL,eAC7CiK,SAAU,GAAGuB,EAA+B1V,WAC5CwV,UAAW,GAAGE,EAA+BF,eAC7C1Q,SAAU,GAAG4Q,EAA+B1V,WAC5CA,MAAO,OACPD,OAAQ,QAKCgW,EAAwBjL,GAC1BA,EAAU,CACblO,SAAUiZ,GACV,CACAjZ,SAAUkZ,E,0DC5DlB,MAAME,EAAqCrgB,IACvC,MAAM,WAAE2B,EAAU,kBAAEsO,EAAiB,kBAAEqQ,EAAiB,mBAAEC,EAAkB,oBAAEC,EAAmB,oBAAEC,EAAmB,YAAE/E,GAAgB1b,GACjI0gB,EAAuBC,IAA4B,IAAAhgB,YAgC1D,OA/BA,IAAAI,YAAU,KACN,IAAIyJ,EAUJ,OATI8V,IAAsBG,IAId,QAHPjW,EAAK+V,aAA+D,EAASA,EAAmB,CAC7F5e,aACA+Z,uBACmB,IAAPlR,GAAyBA,EAAG3K,MAAKF,IAC7CA,GAAUghB,EAAyBhhB,EAAO,KAI3C,KACC8gB,IAEKxQ,GACDuQ,SAA0EA,IAElF,CACH,GACF,CAAC7e,EAAYsO,EAAmBqQ,EAAmBC,EAAoBC,EAAqBC,EAAqB/E,KAIpH,IAAA3a,YAAU,IACC,KAEEkP,GACDuQ,SAA0EA,GAC9E,GAEL,CAACvQ,EAAmBuQ,IAChBE,CAAqB,EAOnBE,EAA0C5gB,IACnD,MAAM,wBAAEia,EAAuB,yBAAEC,GAA6Bla,EACxDugB,GAAqB,IAAAhgB,UAAQ,IAAOD,GAC/B2Z,aAAyE,EAASA,EAAwB3Z,IAClH,CAAC2Z,IACEuG,GAAsB,IAAAjgB,UAAQ,IAAM,KACtC2Z,SAAoFA,GAA0B,GAC/G,CAACA,IACJ,OAAOmG,EAAkCrf,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGjB,GAAQ,CAAEugB,qBAC/EC,wBAAuB,EAOlBK,EAA2C7gB,IACpD,MAAM,oBAAE8gB,EAAmB,yBAAEjQ,EAAwB,0BAAEC,GAA8B9Q,EAC/EugB,GAAqB,IAAAhgB,UAAQ,IAAOD,GAC/BuQ,aAA2E,EAASA,EAAyBiQ,EAAqBxgB,IAC1I,CAACuQ,EAA0BiQ,IACxBN,GAAsB,IAAAjgB,UAAQ,IAAM,KACtCuQ,SAAsFA,EAA0BgQ,EAAoB,GACrI,CAAChQ,EAA2BgQ,IAC/B,OAAOT,EAAkCrf,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGjB,GAAQ,CAAEugB,qBAC/EC,wBAAuB,C,wEC/ExB,MAAMO,EAAmC/gB,IAC5C,IAAIwK,EACJ,MAAM,kBAAEqJ,EAAiB,KAAEmN,EAAI,QAAE3gB,EAAO,SAAE8c,EAAQ,iBAAE3C,EAAgB,mBAAEE,EAAkB,oBAAEc,EAAmB,mBAAE+B,EAAkB,sBAAEX,GAA0B5c,EACvJ0b,GAAc,IAAAnb,UAAQ,KACxB,IAAIiK,EAEJ,OAAsD,QAA9CA,EAAKxK,EAAM6T,kBAAkBrB,mBAAgC,IAAPhI,OAAgB,EAASA,EAAGkR,WAC1E,GACjB,CACgD,QAA9ClR,EAAKxK,EAAM6T,kBAAkBrB,mBAAgC,IAAPhI,OAAgB,EAASA,EAAGkR,cAsHvF,OApH4B,IAAAnb,UAAQ,KAChC,MAAM0gB,EAAQ,GACd,QAAiB5a,IAAb8W,EAAwB,CACxB,GAAIA,GAAYzC,IAAuBra,aAAyC,EAASA,EAAQ6gB,uBAAwB,CACrH,IAAIC,EACAvE,GAAyBvc,EAAQ+gB,mCAAqCvN,EAAkBlQ,cACxFwd,GAAoB,OAAc9gB,aAAyC,EAASA,EAAQ+gB,kCAAmC,CAC3HC,gBAAiBxN,EAAkBlQ,eAG3Csd,EAAMld,KAAK,CACPS,IAAK,QACL8c,KAAMjhB,EAAQ6gB,sBACdjU,UAAW,CACP5L,SAAU,mBACVQ,OAAQ,CACJU,KAAM,CACFiN,WAAY,OACZ+R,UAAW,YAIvBrgB,QAAS,KACLwZ,EAAmB7G,EAAkBlD,QACrCwQ,IAAsBvE,SAA8EA,EAAsBuE,GAAmB,EAEjJ,aAAc,sCACdzX,UAAWyX,GAEnB,CACA,IAAKhE,GAAY3C,IAAqBna,aAAyC,EAASA,EAAQmhB,qBAAsB,CAClH,IAAIC,EACA7E,GAAyBvc,EAAQqhB,wCAA0C7N,EAAkBlQ,cAC7F8d,GAAkB,OAAcphB,aAAyC,EAASA,EAAQqhB,uCAAwC,CAC9HL,gBAAiBxN,EAAkBlQ,eAG3Csd,EAAMld,KAAK,CACPS,IAAK,MACL8c,KAAM/D,EAAqBld,EAAQshB,gCAAkCthB,EAAQmhB,oBAC7EvU,UAAW,CACP5L,SAAU,iBACVQ,OAAQ,CACJU,KAAM,CACFiN,WAAY,OACZ+R,UAAW,YAIvBrgB,QAAS,KACLsZ,EAAiB3G,EAAkBlD,QACnC8Q,IAAoB7E,SAA8EA,EAAsB6E,GAAiB,EAE7I,aAAc,oCACdrgB,SAAUmc,EACV7T,UAAW+X,GAEnB,CACJ,CA+CA,GA9CI/F,IACoB,SAAhBA,IAA2Brb,aAAyC,EAASA,EAAQuhB,6BACrFX,EAAMld,KAAK,CACPS,IAAK,8BACL8c,KAAMjhB,EAAQuhB,4BACd3U,UAAW,CACP5L,SAAU,oBACVQ,OAAQ,CACJU,KAAM,CACFiN,WAAY,OACZ+R,UAAW,YAIvBrgB,QAAS,KACLsa,SAA0EA,EAAoB3H,EAAkBlD,OAAQ,OACxHqQ,SAA4CA,EAAKa,kBAAkB,MAAM,EAE7E,aAAc,0BACdnY,UAAWrJ,EAAQuhB,8BAGF,QAAhBlG,IAA0Brb,aAAyC,EAASA,EAAQyhB,6BAErFb,EAAMld,KAAK,CACPS,IAAK,6BACL8c,KAAMjhB,EAAQyhB,2BACd7U,UAAW,CACP5L,SAAU,qBACVQ,OAAQ,CACJU,KAAM,CACFiN,WAAY,OACZ+R,UAAW,YAIvBrgB,QAAS,KACLsa,SAA0EA,EAAoB3H,EAAkBlD,OAAQ,QACxHqQ,SAA4CA,EAAKa,kBAAkB,OAAO,EAE9E,aAAc,wBACdnY,UAAWrJ,EAAQyhB,8BAKd,IAAjBb,EAAMpd,OAGV,MAAO,CACHod,QACApf,OAAQ,CAAC,EACTkgB,aAAc,CACVC,sBAAqB,MAE5B,GACF,CAACtG,EAAarb,EAAS2gB,EAAM7D,EAAU3C,EAAkBE,EAAoBc,EAAqB3H,EAAkBlD,OAAQkD,EAAkBlQ,YAAa4Z,EAAoBX,GACxJ,C,gFC5HvB,MAAMqF,EAAsC1W,IAC/C,MAAM,iBAAE9D,EAAgB,eAAEyT,EAAc,eAAEnF,EAAc,YAAEC,GAAgBzK,EACpE2W,GAAgB,QAAe,eAC/BC,GAAW,QAAenM,GAS1BoM,EAA8Bza,KAAK0a,OAAOnH,EAAiBiH,IAAaD,EAAgBC,IAE9F,GAAI1a,GAAoB2a,EACpB,OAAOA,EAEX,MAUME,EAAgBpH,EAAiB,GAVnB,QAAenF,GAUsB,EAAIoM,EAG7D,OAAOxa,KAAK4a,IAAI5a,KAAK0a,OAAOC,EAAgBH,IAAaD,EAAgBC,IAAY,EAAE,EAO9EK,EAAoCjX,IAC7C,MAAM,iBAAE9D,EAAgB,gBAAE0T,EAAe,aAAEtF,EAAY,iBAAE4M,EAAgB,QAAEtN,GAAY5J,EACjFmX,GAAmB,QAAevN,EAAU,eAAiD,gBAC7FwN,GAAc,QAAe9M,GAC7B+M,GAAqB,QAAeH,GAqBpCI,EAAiClb,KAAK0a,OAAOlH,EAAkBwH,IAAgBD,EAAmBC,IAExG,GAAIlb,GAAoBob,EACpB,OAAOA,EAQX,MAAMC,EAAa3H,EAAkByH,EAAqB,EAAID,EAO9D,OAAOhb,KAAK4a,IAAI5a,KAAK0a,OAAOS,EAAaH,IAAgBD,EAAmBC,IAAe,EAAE,C,0MCrEjG,MAAMI,EAA8B,IAE9BC,EAA8B,GAC9BC,EAAsBjjB,IACxB,MAAM,KAAEshB,EAAI,0BAAE4B,EAAyB,SAAEC,EAAQ,mBAAEC,GAAuBpjB,EAC1E,OAAO,gBAAoB,IAAO,CAAEsC,WAAW,QAAY,CACnDiP,SAAU,WACVnH,OAAQ,OACRC,MAAO,UAEX,gBAAoB,IAAO,CAAExI,OAAQwhB,GAAwBF,GAAY,gBAAoB,IAAS,CAAEA,SAAUA,EAAUC,mBAAoBA,EAAoB9B,KAAMA,QAAmCA,EAAO,GAAIgC,kBAAmB,QAAS,aAAcJ,QAA6EA,EAA4B,GAAIK,qBAAqB,KAAU,EAEhZF,EAAuB,CACzB9gB,KAAM,CACFihB,OAAQ,OACR3D,UAAW,SAIb4D,EAA6B,CAC/BpiB,cAAUgF,EACVtD,MAAO,CACH2R,QAAS,SAIXgP,EAAyB,CAC3BC,gBAAiB,gBACjBC,eAAe,EACf/hB,OAAQ,CACJI,UAAW,CACPkN,SAAU,UAKhB0U,EAA8B7jB,IAChC,MAAM,eAAE8jB,EAAc,yBAAEC,GAA6B/jB,EACrD,IAAK8jB,EACD,OAAO,gBAAoB,WAAgB,MAE/C,MAAME,EAAcD,EAA2B,4BAAyB1d,EACxE,OAAO,gBAAoB,IAAY,CAAE,aAAc,iCAAkCxE,OAAQ,KAAkBoiB,cAAeR,EAA4BS,UAAWljB,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGyiB,GAAyBI,GAAiB7W,UAAW,CACtP5L,SAAU2iB,IACV,EASC1T,EAAatQ,IACtB,MAAM,SAAEiH,EAAQ,YAAEtD,EAAW,aAAEwY,EAAY,WAAExa,EAAU,QAAE4O,EAAO,SAEhE4M,EAAQ,oBAAE3M,EAAmB,cAAEI,EAAa,UAAE0L,GAAY,EAAI,kBAAEhC,GAAoB,EAAI,OAAEzY,EAAM,OAAE8O,EAAM,0BAAEuS,EAAyB,WAAEiB,EAAU,WAE/I1H,EAAU,eAAE2H,EAAiBpB,EAA2B,eAAEqB,EAAiBtB,EAA2B,eAEtGe,GAAmB9jB,GAEZskB,EAAWC,IAAgB,IAAA5jB,WAAS,IAEpC6jB,EAAWC,IAAgB,IAAA9jB,WAAS,IAEpC+jB,EAAaC,IAAkB,IAAAhkB,UAAS,GACzCikB,GAAe,IAAAnjB,QAAO,MACtBuO,GAAS,UACTtO,GAAQ,SACRmjB,IAAoBjU,EACpBkU,GAAW,IAAArjB,QAAO,IAAIsjB,gBAAgBC,IACxC,MAAM,MAAE3a,EAAK,OAAED,GAAW4a,EAAQ,GAAGC,YAC/BC,EAAkBvd,KAAKwd,IAAI9a,EAAOD,GAAU,EAE9C8a,IAAoBR,GACpBC,EAAehd,KAAK4a,IAAI5a,KAAKwd,IAAID,EAAiBb,GAAiBD,GACvE,MAEJ,IAAAgB,kBAAgB,KACRR,EAAa1iB,SACb4iB,EAAS5iB,QAAQmjB,QAAQT,EAAa1iB,SAE1C,MAAMojB,EAAkBR,EAAS5iB,QACjC,MAAO,IAAMojB,EAAgBC,YAAY,GAC1C,CAACX,IAEJ,MAAMY,GAAoB,IAAAjlB,UAAQ,KACvB,CACHklB,YAAa,KACT,IAAIjb,EACyB,QAA5BA,EAAKxK,EAAM0lB,mBAAgC,IAAPlb,GAAyBA,EAAGsC,KAAK9M,EAAM,EAEhF2lB,iBAAiB,KAGtB,CAAC3lB,EAAM0lB,cAEJE,GAAoB,OAAaJ,GACjCK,GAA8B,IAAAtlB,UAAQ,IAEjCqlB,GAER,CACCA,IAEEE,GAAgB,IAAAvlB,UAAQ,KAEnB,CACHwlB,aAAc,IAAMxB,GAAa,GACjCyB,aAAc,IAAMzB,GAAa,GACjC0B,QAAS,IAAMxB,GAAa,GAC5ByB,OAAQ,IAAMzB,GAAa,MAGhC,IACG0B,GAAqB,CACvBxV,SACA2Q,KAAMnF,QAAmDA,EAAexY,EACxEuf,4BACAC,SAAUuB,EACV7iB,OAAQwhB,EACRD,oBAAoB,GAElBgD,IAA4B,QAAY,KAAW,CACrDxa,aAAclK,EAAM0N,QAAQC,iBAE1BgX,IAAgB,IAAA9lB,UAAQ,KAAM,QAAYskB,EAAkBuB,GAA4B,MAAmB,OAA0BvB,EAAiBnjB,EAAO,kBAAmBG,aAAuC,EAASA,EAAOykB,uBAAuB,CAACzB,EAAiBuB,GAA2B1kB,EAAOG,aAAuC,EAASA,EAAOykB,uBACzW7iB,IAAM,UACN8iB,GAAejK,IAAc3Y,GAAe2W,GAAqB/J,GACjEiW,GAAyBC,EAAiCzmB,EAAOgQ,GAEjE+T,GAA2BO,GAAaE,EAC9C,IAAIkC,GAA4B,GAKhC,OADAA,GAFuBhlB,EAAMilB,eAEcC,cACpC,gBAAoB,IAAO5lB,OAAOC,OAAO,CAAE,aAAcwC,GAAIojB,UAAWvkB,WAAW,QAAY,KAAY,CAC1GgJ,WAAY5J,EAAM8J,QAAQsb,eAC1Blb,aAAclK,EAAM0N,QAAQC,iBAC5B8U,GAA4D1H,IAAe,CAC3E,WAAY,CACR/Z,QAAS,KACT6O,SAAU,WACVjH,OAAQ,iBAAiB6Z,EAAaziB,EAAM8J,QAAQQ,aAAe0a,KACnE9a,aAAclK,EAAM0N,QAAQC,eAC5BhF,MAAO,OACPD,OAAQ,OACRyO,cAAe,SAEpBhX,aAAuC,EAASA,EAAOU,OAASsjB,GACnE,gBAAoB,MAAO7kB,OAAOC,OAAO,CAAEuB,IAAKoiB,EAAc7hB,MAAO,CAC7DsH,MAAO,OACPD,OAAQ,SACP0b,EAAe,CAAE,qBAAqB,IAC3CjB,EAAkB,gBAAoB,IAAO,CAAEviB,WAAW,QAAY,KAAsBX,GAAc,CAClG+N,UAAW,cACZ7N,aAAuC,EAASA,EAAOklB,iBAAmBnW,GAAiB,gBAAoB,IAAO,CAAEtO,WAAW,QAAY,KAAsB,CACpK0kB,QAASR,GAAyB,GAAM,KACtChW,EAAsBA,EAAoBG,QAAuCA,EAAS,GAAIwV,GAAoBlD,GAAsB,gBAAoBA,EAAoBjiB,OAAOC,OAAO,CAAC,EAAGklB,OAC3MI,IAAgBC,KAA2B,gBAAoB,IAAO,CAAE5jB,YAAY,EAAMN,UAAW,KAAwBkH,OAAQyd,GAClI,gBAAoB,IAAO,CAAErkB,YAAY,EAAMN,UAAW+jB,IACtDE,IAAgB,gBAAoB,IAAM,CAAEjkB,WAAW,QAAY,MAAmBY,MAAOS,EAAaZ,MAAO,CACzG8I,MAAO2a,GAAyB9kB,EAAM8J,QAAQ8D,iBAAmB,WAClE,aAAc,2BAA6B3L,GAClD6iB,IAA0B,gBAAoB,IAAM,CAAElkB,WAAW,SAAY,QAA6BZ,KAAWwlB,EAA2BV,KAA0BD,KAC1KjM,GAAqB/J,GAAW,gBAAoB,IAAO,CAAEjO,WAAW,QAAY,OAChF,gBAAoB,IAAM,CAAEjB,SAAU,qBAC1C,gBAAoBwiB,EAA4B,CAAEC,eAAgBA,EAAgBC,yBAA0BA,KAC5G5G,GAAY,gBAAoB,IAAO,CAAE7a,WAAW,QAAY,OAC5D,gBAAoB,IAAM,CAAEjB,SAAU,kBAAmBiB,WAAW,QAAY,WAC5F2E,GAAY,gBAAoB,IAAO,CAAE3E,WAAW,QAAY,KAAwBT,aAAuC,EAASA,EAAOslB,mBAAqBlgB,GACpKwV,GAAc8J,IAAgB,gBAAoB,IAAO,CAAE3jB,YAAY,EAAM4G,OAAQ,CAC7EC,YAAa,UACd1G,MAAO,CACNqkB,WAAY,SACZlY,QAAS,gBACTD,gBAAiBvN,EAAM8J,QAAQ6b,MAC/BL,QAAS,GACTpb,aAAc,OACd4X,OAAQ,SACRnZ,MAAO,cACPkH,SAAU,aAEd,gBAAoB,SAAY,KAC5B,gBAAoB,IAAM,KAAMkL,EAAW6K,0BAC/C,gBAAoB,SAAY,KAC5B,gBAAoB,IAAgB,SAAS,EAE3Db,EAAmC,CAACzmB,EAAOgQ,KAC7B,EAEdiX,EAA0B,CAG5Bxd,YAAa,QAEXyd,EAA6B,CAACK,EAAmBC,IAC5CA,EAAe,IAAID,KAAuBA,C","sources":["file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/StartCaptionsButton.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/StreamMedia.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/SystemMessage.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/TypingIndicator.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/VerticalGallery.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/VideoEffects/VideoEffectsItem.styles.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/VideoEffects/VideoEffectsItem.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/VideoEffects/VideoBackgroundEffectsPicker.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/VideoGallery/styles/LocalScreenShare.styles.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/VideoGallery/LocalScreenShare.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/VideoGallery/styles/RemoteScreenShare.styles.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/VideoGallery/RemoteScreenShare.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/VideoGallery/styles/DefaultLayout.styles.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/VideoGallery/styles/Layout.styles.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/VideoGallery/utils/videoGalleryLayoutUtils.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/VideoGallery/styles/ScrollableHorizontalGallery.style.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/VideoGallery/ScrollableHorizontalGallery.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/VideoGallery/OverflowGallery.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideo.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/VideoGallery/styles/FloatingLocalVideoLayout.styles.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideoLayout.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/VideoGallery/SpeakerVideoLayout.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/VideoGallery/FocusContentLayout.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/VideoGallery.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/VideoGallery/styles/FloatingLocalVideo.styles.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/VideoGallery/styles/RemoteVideoTile.styles.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/VideoGallery/styles/VideoGalleryResponsiveHorizontalGallery.styles.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/VideoGallery/styles/VideoGalleryResponsiveVerticalGallery.styles.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/VideoGallery/useVideoStreamLifecycleMaintainer.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/VideoGallery/useVideoTileContextualMenuProps.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/VideoGallery/utils/OverflowGalleryUtils.js","file:////home/runner/work/platform/platform/common/temp/node_modules/.pnpm/@azure+communication-react@1.10.0_6x3ev4d3227te4dl7uene6lmqi/node_modules/@azure/communication-react/dist/dist-esm/react-components/src/components/VideoTile.js"],"sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { ControlBarButton } from './ControlBarButton';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { _HighContrastAwareIcon } from './HighContrastAwareIcon';\nimport { defaultSpokenLanguage } from './utils';\n/**\n * a button to start or stop captions\n *\n * Can be used with {@link ControlBar}\n *\n * @param props - properties for the start captions button.\n * @internal\n */\nexport const _StartCaptionsButton = (props) => {\n const { onStartCaptions, onStopCaptions, onSetSpokenLanguage, currentSpokenLanguage, strings } = props;\n const onRenderStartIcon = () => {\n /* @conditional-compile-remove(close-captions) */\n return React.createElement(_HighContrastAwareIcon, { disabled: props.disabled, iconName: \"CaptionsIcon\" });\n return React.createElement(React.Fragment, null);\n };\n const onRenderOffIcon = () => {\n /* @conditional-compile-remove(close-captions) */\n return React.createElement(_HighContrastAwareIcon, { disabled: props.disabled, iconName: \"CaptionsOffIcon\" });\n return React.createElement(React.Fragment, null);\n };\n const options = useMemo(() => {\n return {\n spokenLanguage: currentSpokenLanguage === '' ? defaultSpokenLanguage : currentSpokenLanguage\n };\n }, [currentSpokenLanguage]);\n const [hasSetSpokenLanguage, setHasSetSpokenLanguage] = useState(false);\n const onToggleStartCaptions = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {\n if (props.checked) {\n onStopCaptions();\n }\n else {\n yield onStartCaptions(options);\n }\n }), [props.checked, onStartCaptions, onStopCaptions, options]);\n useEffect(() => {\n if (props.checked && !hasSetSpokenLanguage) {\n // set spoken language when start captions with a spoken language specified.\n // this is to fix the bug when a second user starts captions with a new spoken language, captions bot ignore that spoken language\n onSetSpokenLanguage(options.spokenLanguage);\n // we only need to call set spoken language once when first starting captions\n setHasSetSpokenLanguage(true);\n }\n }, [props.checked, onSetSpokenLanguage, options.spokenLanguage, hasSetSpokenLanguage]);\n return React.createElement(ControlBarButton, Object.assign({}, props, { strings: strings, onClick: onToggleStartCaptions !== null && onToggleStartCaptions !== void 0 ? onToggleStartCaptions : props.onClick, onRenderOnIcon: onRenderStartIcon, onRenderOffIcon: onRenderOffIcon }));\n};\n//# sourceMappingURL=StartCaptionsButton.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { mergeStyles, Spinner } from '@fluentui/react';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { invertedVideoInPipStyle, mediaContainer, container, loadingSpinnerContainer, loadSpinnerStyles } from './styles/StreamMedia.styles';\nimport { useTheme } from '../theming';\n/**\n * Utility component to convert an HTMLElement with a video stream into a JSX element.\n *\n * Use to convert an HTMLElement returned by headless calling API into a component that can be rendered as a {@link VideoTile}.\n *\n * @public\n */\nexport const StreamMedia = (props) => {\n const containerEl = useRef(null);\n const theme = useTheme();\n const { isMirrored, videoStreamElement, styles, loadingState = 'none' } = props;\n const [pipEnabled, setPipEnabled] = useState(false);\n useEffect(() => {\n const container = containerEl.current;\n if (!container) {\n return;\n }\n // If videoStreamElement changes, we clear the container to make sure we don't have duplicate, and replace it with\n // the new videoStreamElement. If videoStreamElement is undefined nothing is appended and container should be empty\n // and we don't render anyting.\n container.innerHTML = '';\n setPipEnabled(false);\n if (videoStreamElement) {\n videoStreamElement.addEventListener('enterpictureinpicture', () => {\n setPipEnabled(true);\n });\n videoStreamElement.addEventListener('leavepictureinpicture', () => {\n setPipEnabled(false);\n });\n container.appendChild(videoStreamElement);\n }\n return () => {\n container.innerHTML = '';\n setPipEnabled(false);\n };\n }, [videoStreamElement]);\n return React.createElement(\"div\", { className: container() },\n React.createElement(\"div\", { \"data-ui-id\": \"stream-media-container\", className: mergeStyles(isMirrored && pipEnabled ? invertedVideoInPipStyle(theme) : mediaContainer(theme), styles === null || styles === void 0 ? void 0 : styles.root), ref: containerEl }),\n loadingState === 'loading' && React.createElement(\"div\", { className: loadingSpinnerContainer() },\n React.createElement(Spinner, { \"data-ui-id\": \"stream-media-loading-spinner\", styles: loadSpinnerStyles })));\n};\n//# sourceMappingURL=StreamMedia.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { FontIcon, mergeStyles, Stack, Text } from '@fluentui/react';\nimport React from 'react';\nimport { systemMessageIconStyle } from './styles/SystemMessage.styles';\n/**\n * @private\n */\nexport const SystemMessage = (props) => {\n const { iconName, content } = props;\n const Icon = React.createElement(FontIcon, { iconName: iconName, className: mergeStyles(systemMessageIconStyle) });\n return React.createElement(Stack, { horizontal: true, className: mergeStyles(props === null || props === void 0 ? void 0 : props.containerStyle), tabIndex: 0 },\n Icon,\n React.createElement(Text, { style: {\n wordBreak: 'break-word'\n }, role: \"status\", title: content, variant: 'small' }, content));\n};\n//# sourceMappingURL=SystemMessage.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { typingIndicatorContainerStyle, typingIndicatorStringStyle } from './styles/TypingIndicator.styles';\nimport React from 'react';\nimport { mergeStyles, Stack, Text } from '@fluentui/react';\nimport { useLocale } from '../localization/LocalizationProvider';\nimport { useIdentifiers } from '../identifiers';\nconst MAXIMUM_LENGTH_OF_TYPING_USERS = 35;\n/**\n * Helper function to create element wrapping all typing users\n * @param typingUsers typing users\n * @param delimiter string to separate typing users\n * @param onRenderUser optional callback to render each typing user\n * @param userDisplayNameStyles optional additional IStyle to apply to each element containing users name\n * @returns element wrapping all typing users\n */\nconst getUsersElement = (typingUsers, delimiter, onRenderUser, userDisplayNameStyles) => {\n const userElements = [];\n typingUsers.forEach((user, index) => {\n let truncatedDisplayName = user.displayName;\n if (truncatedDisplayName && truncatedDisplayName.length > 50) {\n truncatedDisplayName = truncatedDisplayName.substring(0, 50) + '...';\n }\n userElements.push(onRenderUser ? onRenderUser(user) : React.createElement(Text, { className: mergeStyles(userDisplayNameStyles), key: `user-${index}` }, truncatedDisplayName));\n userElements.push(React.createElement(Text, { key: `comma-${index}` }, `${delimiter}`));\n });\n // pop last comma\n userElements.pop();\n return React.createElement(React.Fragment, null, userElements);\n};\n/**\n * Helper function to get a string of all typing users\n * @param typingUsers typing users\n * @param delimiter string to separate typing users\n * @returns string of all typing users\n */\nconst getNamesString = (typingUsers, delimiter) => {\n const userNames = [];\n typingUsers.forEach(user => {\n if (user.displayName) {\n userNames.push(user.displayName);\n }\n });\n return userNames.join(delimiter);\n};\n/**\n * Helper function to create span elements making up the typing indicator string\n * @param strings TypingIndicatorStrings containing strings to create span elements\n * @param usersElement JSX.Element containing all typing users\n * @param numTypingUsers number of total typing users\n * @param numUserNotMentioned number of typing users abbreviated\n * @returns array of span elements making up the typing indicator string\n */\nconst getSpanElements = (strings, usersElement, numTypingUsers, numTypingUsersAbbreviated) => {\n let variables = {};\n let typingString = '';\n if (numTypingUsers === 1) {\n typingString = strings.singleUser;\n variables = {\n user: usersElement\n };\n }\n else if (numTypingUsers > 1 && numTypingUsersAbbreviated === 0) {\n typingString = strings.multipleUsers;\n variables = {\n users: usersElement\n };\n }\n else if (numTypingUsers > 1 && numTypingUsersAbbreviated === 1) {\n typingString = strings.multipleUsersAbbreviateOne;\n variables = {\n users: usersElement\n };\n }\n else if (numTypingUsers > 1 && numTypingUsersAbbreviated > 1) {\n typingString = strings.multipleUsersAbbreviateMany;\n variables = {\n users: usersElement,\n numOthers: React.createElement(React.Fragment, null, numTypingUsersAbbreviated)\n };\n }\n return formatInlineElements(typingString, variables);\n};\n/**\n * Helper function to get the string making up the typing indicator string\n * @param strings TypingIndicatorStrings containing strings to create span elements\n * @param namesString string of all typing users\n * @param numTypingUsers number of total typing users\n * @param numUserNotMentioned number of typing users abbreviated\n * @returns typing indicator string\n */\nconst getIndicatorString = (strings, namesString, numTypingUsers, numTypingUsersAbbreviated) => {\n if (numTypingUsers === 1) {\n return strings.singleUser.replace('{user}', namesString);\n }\n if (numTypingUsers > 1 && numTypingUsersAbbreviated === 0) {\n return strings.multipleUsers.replace('{users}', namesString);\n }\n if (numTypingUsers > 1 && numTypingUsersAbbreviated === 1) {\n return strings.multipleUsersAbbreviateOne.replace('{users}', namesString);\n }\n if (numTypingUsers > 1 && numTypingUsersAbbreviated > 1) {\n return strings.multipleUsersAbbreviateMany.replace('{users}', namesString).replace('{numOthers}', `${numTypingUsersAbbreviated}`);\n }\n return undefined;\n};\nconst IndicatorComponent = (typingUsers, strings, onRenderUser, styles) => {\n const typingUsersMentioned = [];\n let totalCharacterCount = 0;\n const ids = useIdentifiers();\n for (const typingUser of typingUsers) {\n if (!typingUser.displayName) {\n continue;\n }\n let additionalCharCount = typingUser.displayName.length;\n // The typing users will be separated by the delimiter. We account for that additional length when we generate the final string.\n if (typingUsersMentioned.length > 0) {\n additionalCharCount += strings.delimiter.length;\n }\n if (totalCharacterCount + additionalCharCount <= MAXIMUM_LENGTH_OF_TYPING_USERS || typingUsersMentioned.length === 0) {\n typingUsersMentioned.push(typingUser);\n totalCharacterCount += additionalCharCount;\n }\n else {\n break;\n }\n }\n const usersElement = getUsersElement(typingUsersMentioned, strings.delimiter, onRenderUser, styles === null || styles === void 0 ? void 0 : styles.typingUserDisplayName);\n const numUserNotMentioned = typingUsers.length - typingUsersMentioned.length;\n const spanElements = getSpanElements(strings, usersElement, typingUsers.length, numUserNotMentioned);\n const labelString = getIndicatorString(strings, getNamesString(typingUsersMentioned, strings.delimiter), typingUsers.length, numUserNotMentioned);\n return React.createElement(\"div\", { \"data-ui-id\": ids.typingIndicator, className: mergeStyles(typingIndicatorStringStyle, styles === null || styles === void 0 ? void 0 : styles.typingString), key: \"typingStringKey\", role: \"status\", \"aria-label\": labelString }, spanElements);\n};\n/**\n * Component to notify local user when one or more participants in the chat thread are typing.\n *\n * @public\n */\nexport const TypingIndicator = (props) => {\n const { typingUsers, onRenderUser, styles } = props;\n const { strings } = useLocale();\n const typingUsersToRender = typingUsers.filter(typingUser => typingUser.displayName !== undefined);\n const indicatorComponent = IndicatorComponent(typingUsersToRender, Object.assign(Object.assign({}, strings.typingIndicator), props.strings), onRenderUser, styles);\n return React.createElement(Stack, { className: mergeStyles(typingIndicatorContainerStyle, styles === null || styles === void 0 ? void 0 : styles.root) }, indicatorComponent);\n};\n/**\n * Create an array of span elements by replacing the pattern \"\\{\\}\" in str with the elements\n * passed in as vars and creating inline elements from the rest\n *\n * @param str - The string to be formatted\n * @param vars - Variables to use to format the string\n * @returns formatted JSX elements\n */\nconst formatInlineElements = (str, vars) => {\n if (!str) {\n return [];\n }\n if (!vars) {\n return [];\n }\n const elements = [];\n // regex to search for the pattern \"{}\"\n const placeholdersRegex = /{(\\w+)}/g;\n const regex = RegExp(placeholdersRegex);\n let array = regex.exec(str);\n let prev = 0;\n while (array !== null) {\n if (prev !== array.index) {\n elements.push(React.createElement(Text, { key: elements.length }, str.substring(prev, array.index)));\n }\n elements.push(React.createElement(Text, { key: elements.length }, vars[array[0].substring(1, array[0].length - 1)]));\n prev = regex.lastIndex;\n array = regex.exec(str);\n }\n elements.push(React.createElement(Text, { key: elements.length }, str.substring(prev)));\n return elements;\n};\n//# sourceMappingURL=TypingIndicator.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { DefaultButton, Icon, mergeStyles, Stack, Text } from '@fluentui/react';\nimport React, { useEffect, useMemo, useState } from 'react';\n/* @conditional-compile-remove(vertical-gallery) */\nimport { useLocale } from '../localization';\n/* @conditional-compile-remove(vertical-gallery) */\nimport { useIdentifiers } from '../identifiers';\nimport { useTheme } from '../theming';\nimport { childrenContainerStyle, pageNavigationControlBarContainerStyle, participantPageCounter, leftRightButtonStyles, navIconStyles, rootStyle } from './styles/VerticalGallery.styles';\nimport { bucketize } from './utils/overFlowGalleriesUtils';\n/**\n * VerticalGallery is a overflow gallery for participants in the {@link VideoGallery} component. Stacks\n * participants on the Y-axis of the VideoGallery for better use of horizontal space.\n *\n * @public\n */\nexport const VerticalGallery = (props) => {\n const { children, styles, childrenPerPage, onFetchTilesToRender } = props;\n const [page, setPage] = useState(1);\n const [buttonState, setButtonState] = useState({\n previous: true,\n next: true\n });\n /* @conditional-compile-remove(vertical-gallery) */\n const ids = useIdentifiers();\n const numberOfChildren = React.Children.count(children);\n const lastPage = Math.ceil(numberOfChildren / childrenPerPage);\n const indexesArray = useMemo(() => {\n return bucketize([...Array(numberOfChildren).keys()], childrenPerPage);\n }, [numberOfChildren, childrenPerPage]);\n useEffect(() => {\n if (onFetchTilesToRender && indexesArray) {\n onFetchTilesToRender(indexesArray[page - 1]);\n }\n }, [indexesArray, onFetchTilesToRender, page]);\n const firstIndexOfCurrentPage = (page - 1) * childrenPerPage;\n const clippedPage = firstIndexOfCurrentPage < numberOfChildren - 1 ? page : lastPage;\n const childrenOnCurrentPage = useMemo(() => {\n if (indexesArray[0] !== undefined) {\n return indexesArray[clippedPage - 1].map(index => {\n return React.Children.toArray(children)[index];\n });\n }\n return;\n }, [indexesArray, clippedPage, children]);\n const showButtons = numberOfChildren > childrenPerPage;\n const onPreviousButtonClick = () => {\n setPage(page - 1);\n };\n const onNextButtonClick = () => {\n setPage(page + 1);\n };\n if (page > lastPage && lastPage > 0) {\n setPage(lastPage);\n }\n useEffect(() => {\n if (page > 1 && page < lastPage && showButtons) {\n // we are somewhere in between first and last pages.\n setButtonState({\n previous: false,\n next: false\n });\n }\n else if (page === 1 && showButtons) {\n // we are on the first page.\n setButtonState({\n previous: true,\n next: false\n });\n }\n else if (page === lastPage && showButtons) {\n // we are on the last page.\n setButtonState({\n previous: false,\n next: true\n });\n }\n }, [page, numberOfChildren, lastPage, showButtons]);\n const childContainerStyle = useMemo(() => {\n return {\n root: childrenContainerStyle(2)\n };\n }, []);\n const childrenStyles = useMemo(() => {\n return {\n root: styles === null || styles === void 0 ? void 0 : styles.children\n };\n }, [styles === null || styles === void 0 ? void 0 : styles.children]);\n if (childrenPerPage <= 0) {\n return React.createElement(React.Fragment, null);\n }\n return React.createElement(Stack, { className: mergeStyles(rootStyle, styles === null || styles === void 0 ? void 0 : styles.root) },\n React.createElement(Stack, { styles: childContainerStyle }, childrenOnCurrentPage === null || childrenOnCurrentPage === void 0 ? void 0 : childrenOnCurrentPage.map((child, i) => {\n return React.createElement(Stack.Item, { key: i, styles: childrenStyles, \"data-ui-id\": ids.verticalGalleryVideoTile }, child);\n })),\n showButtons && React.createElement(VerticalGalleryControlBar, { buttonsDisabled: buttonState, onPreviousButtonClick: onPreviousButtonClick, onNextButtonClick: onNextButtonClick, totalPages: lastPage, currentPage: page }));\n};\nconst VerticalGalleryControlBar = (props) => {\n const { onNextButtonClick, onPreviousButtonClick, buttonsDisabled, currentPage, totalPages, styles } = props;\n const theme = useTheme();\n /* @conditional-compile-remove(vertical-gallery) */\n const ids = useIdentifiers();\n /* @conditional-compile-remove(vertical-gallery) */\n const strings = useLocale().strings.verticalGallery;\n const pageCounterContainerStyles = useMemo(() => {\n return mergeStyles(pageNavigationControlBarContainerStyle, styles === null || styles === void 0 ? void 0 : styles.root);\n }, [styles === null || styles === void 0 ? void 0 : styles.root]);\n const previousButtonSyles = useMemo(() => {\n return mergeStyles(leftRightButtonStyles(theme), styles === null || styles === void 0 ? void 0 : styles.previousButton);\n }, [styles === null || styles === void 0 ? void 0 : styles.previousButton, theme]);\n const pageCounterStyles = useMemo(() => {\n return mergeStyles(participantPageCounter, styles === null || styles === void 0 ? void 0 : styles.counter);\n }, [styles === null || styles === void 0 ? void 0 : styles.counter]);\n const nextButtonsStyles = useMemo(() => {\n return mergeStyles(leftRightButtonStyles(theme), styles === null || styles === void 0 ? void 0 : styles.nextButton);\n }, [styles === null || styles === void 0 ? void 0 : styles.nextButton, theme]);\n const controlBarSpacing = {\n childrenGap: '0.5rem'\n };\n return React.createElement(Stack, { horizontalAlign: \"center\", tokens: controlBarSpacing, horizontal: true, className: pageCounterContainerStyles },\n React.createElement(DefaultButton, { className: previousButtonSyles, onClick: onPreviousButtonClick, disabled: buttonsDisabled === null || buttonsDisabled === void 0 ? void 0 : buttonsDisabled.previous, \n /* @conditional-compile-remove(vertical-gallery) */ ariaLabel: strings.leftNavButtonAriaLabel, \"data-ui-id\": ids.overflowGalleryLeftNavButton },\n React.createElement(Icon, { iconName: \"VerticalGalleryLeftButton\", styles: navIconStyles })),\n React.createElement(Text\n /* @conditional-compile-remove(vertical-gallery) */ , { \"data-ui-id\": ids.verticalGalleryPageCounter, className: pageCounterStyles }, `${currentPage} / ${totalPages}`),\n React.createElement(DefaultButton, { className: nextButtonsStyles, onClick: onNextButtonClick, disabled: buttonsDisabled === null || buttonsDisabled === void 0 ? void 0 : buttonsDisabled.next, \n /* @conditional-compile-remove(vertical-gallery) */ ariaLabel: strings.rightNavButtonAriaLabel, \"data-ui-id\": ids.overflowGalleryRightNavButton },\n React.createElement(Icon, { iconName: \"VerticalGalleryRightButton\", styles: navIconStyles })));\n};\n//# sourceMappingURL=VerticalGallery.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nconst VideoEffectsItemContainerHeight = '3.375rem';\nconst VideoEffectsItemContainerWidth = '4.83rem';\nconst VideoEffectsItemContainerBorderSize = '2px';\n/** @private */\nexport const hiddenVideoEffectsItemContainerStyles = {\n root: {\n visibility: 'hidden',\n height: VideoEffectsItemContainerHeight,\n width: VideoEffectsItemContainerWidth,\n border: VideoEffectsItemContainerBorderSize\n }\n};\n/** @private */\nexport const videoEffectsItemContainerStyles = (args) => {\n const borderDefaultThickness = '1px';\n const borderActiveThickness = '2px';\n return {\n root: {\n background: args.disabled ? args.theme.palette.neutralQuaternaryAlt : undefined,\n backgroundImage: args.backgroundImage ? `url(${args.backgroundImage})` : undefined,\n backgroundPosition: 'center',\n backgroundSize: 'cover',\n borderRadius: '0.25rem',\n color: args.theme.palette.neutralPrimary,\n cursor: args.disabled ? 'default' : 'pointer',\n height: VideoEffectsItemContainerHeight,\n width: VideoEffectsItemContainerWidth,\n border: args.isSelected ? `${borderActiveThickness} solid ${args.theme.palette.themePrimary}` : `${borderDefaultThickness} solid ${args.theme.palette.neutralQuaternaryAlt}`,\n // Use :after to display a border element. This is used to prevent the background image\n // resizing when the border thichkness is changed. We also want the border to be inside\n // the frame of the container, i.e. we want it to expand inwards and not outwards when\n // border thickness changes from hover/selection.\n ':after': {\n content: '\"\"',\n boxSizing: 'border-box',\n height: '100%',\n width: '100%',\n borderRadius: '0.25rem'\n },\n ':hover': {\n ':after': {\n border: args.disabled && !args.isSelected ? `${borderDefaultThickness} solid ${args.theme.palette.neutralQuaternaryAlt}` : `${borderActiveThickness} solid ${args.theme.palette.themePrimary}`\n }\n }\n },\n rootFocused: {\n ':after': {\n outline: `2px solid ${args.theme.palette.neutralQuaternaryAlt}`\n }\n }\n };\n};\n//# sourceMappingURL=VideoEffectsItem.styles.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { DefaultButton, Icon, mergeStyles, Stack, Text, TooltipHost, useTheme } from '@fluentui/react';\nimport React, { useCallback, useEffect } from 'react';\nimport { videoEffectsItemContainerStyles } from './VideoEffectsItem.styles';\n/**\n * A component for displaying a Video Background Effect Option.\n *\n * @internal\n */\nexport const _VideoEffectsItem = (props) => {\n var _a, _b, _c, _d, _e, _f, _g;\n const theme = useTheme();\n const isSelected = (_a = props.isSelected) !== null && _a !== void 0 ? _a : false;\n const disabled = (_b = props.disabled) !== null && _b !== void 0 ? _b : false;\n const backgroundImage = (_c = props.backgroundProps) === null || _c === void 0 ? void 0 : _c.url;\n const containerStyles = useCallback(() => videoEffectsItemContainerStyles({\n theme,\n isSelected,\n disabled,\n backgroundImage\n }), [backgroundImage, disabled, isSelected, theme]);\n const componentRef = React.createRef();\n useEffect(() => {\n if (props.focusOnMount && componentRef.current) {\n componentRef.current.focus();\n }\n }, [componentRef, props.focusOnMount]);\n return React.createElement(TooltipHost, Object.assign({}, props.tooltipProps),\n React.createElement(Stack, { key: props.itemKey, className: mergeStyles((_d = props.styles) === null || _d === void 0 ? void 0 : _d.root), verticalAlign: \"center\", horizontalAlign: \"center\", \"data-ui-id\": `video-effects-item`, \"aria-label\": (_e = props.ariaLabel) !== null && _e !== void 0 ? _e : props.itemKey, \"aria-disabled\": props.disabled },\n React.createElement(DefaultButton, { styles: containerStyles(), onClick: disabled ? undefined : () => { var _a; return (_a = props.onSelect) === null || _a === void 0 ? void 0 : _a.call(props, props.itemKey); }, componentRef: componentRef, autoFocus: props.focusOnMount, onKeyDown: disabled ? undefined : e => {\n var _a;\n if (e.key === 'Enter' || e.key === ' ') {\n (_a = props.onSelect) === null || _a === void 0 ? void 0 : _a.call(props, props.itemKey);\n }\n } },\n React.createElement(Stack, { horizontalAlign: 'center', tokens: {\n childrenGap: '0.15rem'\n } },\n props.iconProps && React.createElement(Stack.Item, { styles: {\n root: (_f = props.styles) === null || _f === void 0 ? void 0 : _f.iconContainer\n } },\n React.createElement(Icon, Object.assign({}, props.iconProps))),\n props.title && React.createElement(Stack.Item, { styles: {\n root: (_g = props.styles) === null || _g === void 0 ? void 0 : _g.textContainer\n } },\n React.createElement(Text, { variant: \"small\" }, props.title))))));\n};\n//# sourceMappingURL=VideoEffectsItem.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { Label, mergeStyles, Stack } from '@fluentui/react';\nimport { useWarnings } from '@fluentui/react-hooks';\nimport React from 'react';\nimport { chunk } from '../utils';\nimport { _VideoEffectsItem } from './VideoEffectsItem';\nimport { hiddenVideoEffectsItemContainerStyles } from './VideoEffectsItem.styles';\n/**\n * Picker for choosing a Video Background Effect.\n *\n * @remarks\n * This functions similar to a radio group of buttons, where the user can select one of the options.\n *\n * @internal\n */\nexport const _VideoBackgroundEffectsPicker = (props) => {\n var _a, _b, _c;\n const [componentControlledSelectedEffectKey, setComponentControlledSelectedEffectKey] = React.useState(props.defaultSelectedEffectKey);\n // Warn the developer if they use the component in an incorrect controlled way.\n useWarnings({\n name: 'VideoBackgroundEffectsPicker',\n props,\n controlledUsage: {\n onChangeProp: 'onChange',\n valueProp: 'selectedEffectKey',\n defaultValueProp: 'defaultSelectedEffectKey'\n }\n });\n const selectedEffect = (_a = props.selectedEffectKey) !== null && _a !== void 0 ? _a : componentControlledSelectedEffectKey;\n const setSelectedEffect = (selectedEffectKey) => {\n var _a;\n setComponentControlledSelectedEffectKey(selectedEffectKey);\n (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, selectedEffectKey);\n };\n const convertedOptions = props.options.map(option => (Object.assign({ isSelected: option.itemKey === selectedEffect, onSelect: () => setSelectedEffect(option.itemKey) }, option)));\n const itemsPerRow = (_b = props.itemsPerRow) !== null && _b !== void 0 ? _b : 3;\n const optionsByRow = itemsPerRow === 'wrap' ? [convertedOptions] : chunk(convertedOptions, itemsPerRow);\n // If the final row is not full, fill it with hidden items to ensure layout.\n const fillCount = itemsPerRow === 'wrap' ? 0 : itemsPerRow - optionsByRow[optionsByRow.length - 1].length;\n return React.createElement(Stack, { tokens: {\n childrenGap: '0.5rem'\n } },\n React.createElement(Label, { className: mergeStyles((_c = props.styles) === null || _c === void 0 ? void 0 : _c.label) }, props.label),\n optionsByRow.map((options, rowIndex) => {\n var _a;\n return React.createElement(Stack, { className: mergeStyles((_a = props.styles) === null || _a === void 0 ? void 0 : _a.rowRoot), wrap: props.itemsPerRow === 'wrap', horizontal: true, key: rowIndex, tokens: {\n childrenGap: '0.5rem'\n }, \"data-ui-id\": \"video-effects-picker-row\" },\n options.map((option, i) => {\n if (i === 0 && rowIndex === 0) {\n return React.createElement(_VideoEffectsItem, Object.assign({}, option, { itemKey: option.itemKey, key: option.itemKey, focusOnMount: true }));\n }\n return React.createElement(_VideoEffectsItem, Object.assign({}, option, { itemKey: option.itemKey, key: option.itemKey }));\n }),\n fillCount > 0 && rowIndex === optionsByRow.length - 1 && Array.from({\n length: fillCount\n }).map((_, index) => React.createElement(Stack, { key: index, styles: hiddenVideoEffectsItemContainerStyles, \"data-ui-id\": \"video-effects-hidden-item\" })));\n }));\n};\n//# sourceMappingURL=VideoBackgroundEffectsPicker.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { mergeStyles } from '@fluentui/react';\n/**\n * @private\n */\nexport const screenSharingContainerStyle = mergeStyles({\n width: '100%',\n height: '100%'\n});\n/**\n * @private\n */\nexport const screenSharingNotificationContainerStyle = (theme) => mergeStyles({\n backgroundColor: 'inherit',\n padding: '1rem',\n maxWidth: '95%',\n borderRadius: theme.effects.roundedCorner4,\n color: theme.palette.neutralSecondary\n});\n/**\n * @private\n */\nexport const screenSharingNotificationIconContainerStyle = mergeStyles({\n height: '2rem',\n lineHeight: 0\n});\n/**\n * @private\n */\nexport const screenSharingNotificationIconStyle = (theme) => mergeStyles({\n // svg is (20px x 20px) but path is only (16px x 12px), so need to scale at 2.5 to get 40px\n transform: 'scale(2.5)',\n color: theme.palette.neutralTertiary\n});\n/**\n * @private\n */\nexport const screenSharingNotificationTextStyle = mergeStyles({\n fontSize: '1rem',\n // Text component will take body color by default (white in Dark Mode), so forcing it to be parent container color\n color: 'inherit'\n});\n//# sourceMappingURL=LocalScreenShare.styles.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { Icon, Stack, Text } from '@fluentui/react';\nimport React from 'react';\nimport { useLocale } from '../../localization';\nimport { useTheme } from '../../theming';\nimport { VideoTile } from '../VideoTile';\nimport { screenSharingContainerStyle, screenSharingNotificationContainerStyle, screenSharingNotificationIconContainerStyle, screenSharingNotificationIconStyle, screenSharingNotificationTextStyle } from './styles/LocalScreenShare.styles';\n/**\n * A memoized version of local screen share component. React.memo is used for a performance\n * boost by memoizing the same rendered component to avoid rerendering this when the parent component rerenders.\n * https://reactjs.org/docs/react-api.html#reactmemo\n */\nexport const LocalScreenShare = React.memo((props) => {\n const { localParticipant } = props;\n const theme = useTheme();\n const locale = useLocale();\n if (!localParticipant || !localParticipant.isScreenSharingOn) {\n return null;\n }\n const localScreenSharingNotification = React.createElement(Stack, { horizontalAlign: \"center\", verticalAlign: \"center\", className: screenSharingContainerStyle },\n React.createElement(Stack, { horizontalAlign: \"center\", verticalAlign: \"center\", className: screenSharingNotificationContainerStyle(theme), tokens: {\n childrenGap: '1rem'\n } },\n React.createElement(Stack, { horizontal: true, verticalAlign: \"center\", className: screenSharingNotificationIconContainerStyle },\n React.createElement(Icon, { iconName: \"ControlButtonScreenShareStart\", className: screenSharingNotificationIconStyle(theme) })),\n React.createElement(Text, { className: screenSharingNotificationTextStyle, \"aria-live\": \"polite\" }, locale.strings.videoGallery.screenIsBeingSharedMessage)));\n const displayName = !(localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.displayName) ? locale.strings.videoGallery.displayNamePlaceholder : localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.displayName;\n return React.createElement(VideoTile, { displayName: displayName, isMuted: localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.isMuted, onRenderPlaceholder: () => React.createElement(React.Fragment, null) }, localScreenSharingNotification);\n});\n//# sourceMappingURL=LocalScreenShare.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { mergeStyles } from '@fluentui/react';\n/**\n * @private\n */\nexport const loadingStyle = mergeStyles({\n height: '100%',\n width: '100%'\n});\n//# sourceMappingURL=RemoteScreenShare.styles.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { Spinner, SpinnerSize, Stack } from '@fluentui/react';\nimport React, { useEffect } from 'react';\nimport { useLocale } from '../../localization';\nimport { StreamMedia } from '../StreamMedia';\nimport { VideoTile } from '../VideoTile';\nimport { loadingStyle } from './styles/RemoteScreenShare.styles';\nimport { _formatString } from \"../../../../acs-ui-common/src\";\n/**\n * A memoized version of VideoTile for rendering the remote screen share stream. React.memo is used for a performance\n * boost by memoizing the same rendered component to avoid rerendering this when the parent component rerenders.\n * https://reactjs.org/docs/react-api.html#reactmemo\n */\nexport const RemoteScreenShare = React.memo((props) => {\n const { userId, displayName, isMuted, renderElement, onCreateRemoteStreamView, onDisposeRemoteStreamView, isReceiving } = props;\n const locale = useLocale();\n if (!renderElement) {\n onCreateRemoteStreamView && onCreateRemoteStreamView(userId);\n }\n useEffect(() => {\n return () => {\n // TODO: Isolate disposing behaviors for screenShare and videoStream\n onDisposeRemoteStreamView && onDisposeRemoteStreamView(userId);\n };\n }, [onDisposeRemoteStreamView, userId]);\n const loadingMessage = displayName ? _formatString(locale.strings.videoGallery.screenShareLoadingMessage, {\n participant: displayName\n }) : '';\n return React.createElement(VideoTile, { displayName: displayName, isMuted: isMuted, renderElement: renderElement ? React.createElement(StreamMedia, { videoStreamElement: renderElement, loadingState: isReceiving === false ? 'loading' : 'none' }) : undefined, onRenderPlaceholder: () => React.createElement(LoadingSpinner, { loadingMessage: loadingMessage }) });\n});\nconst LoadingSpinner = (props) => {\n return React.createElement(Stack, { verticalAlign: \"center\", className: loadingStyle },\n React.createElement(Spinner, { label: props.loadingMessage, size: SpinnerSize.xSmall, \"aria-live\": 'assertive' }));\n};\n//# sourceMappingURL=RemoteScreenShare.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * @private\n */\nexport const rootLayoutStyle = {\n root: {\n position: 'relative',\n height: '100%',\n width: '100%',\n padding: '0.5rem'\n }\n};\n//# sourceMappingURL=DefaultLayout.styles.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * @private\n */\nexport const videoGalleryLayoutGap = {\n childrenGap: '0.5rem'\n};\n//# sourceMappingURL=Layout.styles.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { useCallback, useRef } from 'react';\nimport { smartDominantSpeakerParticipants } from '../../../gallery';\nconst DEFAULT_MAX_OVERFLOW_GALLERY_DOMINANT_SPEAKERS = 6;\nconst DEFAULT_MAX_VIDEO_SREAMS = 4;\n/* @conditional-compile-remove(gallery-layouts) */\nconst MAX_GRID_PARTICIPANTS_NOT_LARGE_GALLERY = 9;\nconst _useOrganizedParticipants = (props) => {\n const visibleGridParticipants = useRef([]);\n const visibleOverflowGalleryParticipants = useRef([]);\n const { remoteParticipants = [], localParticipant, dominantSpeakers = [], maxRemoteVideoStreams = DEFAULT_MAX_VIDEO_SREAMS, maxOverflowGalleryDominantSpeakers = DEFAULT_MAX_OVERFLOW_GALLERY_DOMINANT_SPEAKERS, isScreenShareActive = false, pinnedParticipantUserIds = [], \n /* @conditional-compile-remove(gallery-layouts) */\n layout } = props;\n const calculateMaxRemoteVideoStreams = () => {\n /* @conditional-compile-remove(gallery-layouts) */\n if (maxRemoteVideoStreams > MAX_GRID_PARTICIPANTS_NOT_LARGE_GALLERY) {\n return MAX_GRID_PARTICIPANTS_NOT_LARGE_GALLERY;\n }\n else {\n return maxRemoteVideoStreams;\n }\n return maxRemoteVideoStreams;\n };\n const maxRemoteVideoStreamsToUse = calculateMaxRemoteVideoStreams();\n const videoParticipants = remoteParticipants.filter(p => { var _a; return (_a = p.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable; });\n const participantsToSortTrampoline = () => {\n /* @conditional-compile-remove(gallery-layouts) */\n return layout !== 'floatingLocalVideo' ? putVideoParticipantsFirst(remoteParticipants) : videoParticipants;\n return videoParticipants;\n };\n visibleGridParticipants.current = pinnedParticipantUserIds.length > 0 || isScreenShareActive ? [] : smartDominantSpeakerParticipants({\n participants: participantsToSortTrampoline(),\n dominantSpeakers,\n lastVisibleParticipants: visibleGridParticipants.current,\n maxDominantSpeakers: maxRemoteVideoStreamsToUse\n }).slice(0, maxRemoteVideoStreamsToUse);\n /* @conditional-compile-remove(gallery-layouts) */\n const dominantSpeakerToGrid = layout === 'speaker' ? dominantSpeakers && dominantSpeakers[0] ? visibleGridParticipants.current.filter(p => p.userId === dominantSpeakers[0]) : [visibleGridParticipants.current[0]] : [];\n /* @conditional-compile-remove(gallery-layouts) */\n if (dominantSpeakerToGrid[0]) {\n visibleGridParticipants.current = dominantSpeakerToGrid;\n }\n const visibleGridParticipantsSet = new Set(visibleGridParticipants.current.map(p => p.userId));\n const remoteParticipantsOrdered = putVideoParticipantsFirst(remoteParticipants);\n visibleOverflowGalleryParticipants.current = smartDominantSpeakerParticipants({\n participants: remoteParticipantsOrdered.filter(p => !visibleGridParticipantsSet.has(p.userId)),\n dominantSpeakers: dominantSpeakers,\n lastVisibleParticipants: visibleOverflowGalleryParticipants.current,\n maxDominantSpeakers: maxOverflowGalleryDominantSpeakers\n });\n const getGridParticipants = useCallback(() => {\n if (isScreenShareActive) {\n return [];\n }\n // if we have no grid participants we need to cap the max number of overflowGallery participants in the grid\n // we will use the max streams provided to the function to find the max participants that can go in the grid\n // if there are less participants than max streams then we will use all participants including joining in the grid\n return visibleGridParticipants.current.length > 0 ? visibleGridParticipants.current : visibleOverflowGalleryParticipants.current.slice(0, maxRemoteVideoStreamsToUse);\n }, [isScreenShareActive, maxRemoteVideoStreamsToUse]);\n const gridParticipants = getGridParticipants();\n const getOverflowGalleryRemoteParticipants = useCallback(() => {\n if (isScreenShareActive && localParticipant) {\n const localParticipantPlusOverflow = [localParticipant].concat(visibleGridParticipants.current.concat(visibleOverflowGalleryParticipants.current));\n // If screen sharing is active, assign video and audio participants as overflow gallery participants\n return localParticipantPlusOverflow;\n }\n else if (isScreenShareActive) {\n // If screen sharing is active, assign video and audio participants as overflow gallery participants\n return visibleGridParticipants.current.concat(visibleOverflowGalleryParticipants.current);\n }\n else {\n // If screen sharing is not active, then assign all video tiles as grid tiles.\n // If there are no video tiles, then assign audio tiles as grid tiles.\n // if there are more overflow tiles than max streams then find the tiles that don't fit in the grid and put them in overflow\n // overflow should be empty if total participants including calling participants is less than max streams\n return visibleGridParticipants.current.length > 0 ? visibleOverflowGalleryParticipants.current : visibleOverflowGalleryParticipants.current.slice(maxRemoteVideoStreamsToUse);\n }\n }, [isScreenShareActive, localParticipant, maxRemoteVideoStreamsToUse]);\n const overflowGalleryParticipants = getOverflowGalleryRemoteParticipants();\n return {\n gridParticipants,\n overflowGalleryParticipants: overflowGalleryParticipants\n };\n};\n/* @conditional-compile-remove(pinned-participants) */\nconst _useOrganizedParticipantsWithPinnedParticipants = (props) => {\n var _a;\n // map remote participants by userId\n const remoteParticipantMap = props.remoteParticipants.reduce((map, remoteParticipant) => {\n map[remoteParticipant.userId] = remoteParticipant;\n return map;\n }, {});\n // get pinned participants in the same order of pinned participant user ids using remoteParticipantMap\n const pinnedParticipants = [];\n (_a = props.pinnedParticipantUserIds) === null || _a === void 0 ? void 0 : _a.forEach(id => {\n const pinnedParticipant = remoteParticipantMap[id];\n if (pinnedParticipant) {\n pinnedParticipants.push(pinnedParticipant);\n }\n });\n // get unpinned participants by filtering all remote participants using a set of pinned participant user ids\n const pinnedParticipantUserIdSet = new Set(props.pinnedParticipantUserIds);\n const unpinnedParticipants = props.remoteParticipants.filter(p => !pinnedParticipantUserIdSet.has(p.userId));\n const useOrganizedParticipantsProps = Object.assign(Object.assign({}, props), { \n // if there are pinned participants then we should only consider unpinned participants\n remoteParticipants: unpinnedParticipants });\n const useOrganizedParticipantsResult = _useOrganizedParticipants(useOrganizedParticipantsProps);\n if (pinnedParticipants.length === 0) {\n return useOrganizedParticipantsResult;\n }\n return {\n gridParticipants: props.isScreenShareActive ? [] : pinnedParticipants,\n overflowGalleryParticipants: props.isScreenShareActive ? pinnedParticipants.concat(useOrganizedParticipantsResult.overflowGalleryParticipants) : useOrganizedParticipantsResult.gridParticipants.concat(useOrganizedParticipantsResult.overflowGalleryParticipants)\n };\n};\nconst putVideoParticipantsFirst = (remoteParticipants) => {\n const videoParticipants = [];\n const audioParticipants = [];\n remoteParticipants.forEach(p => {\n var _a;\n if ((_a = p.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable) {\n videoParticipants.push(p);\n }\n else {\n audioParticipants.push(p);\n }\n });\n const remoteParticipantSortedByVideo = videoParticipants.concat(audioParticipants);\n return remoteParticipantSortedByVideo;\n};\n/**\n * Hook to determine which participants should be in grid and overflow gallery and their order respectively\n * @private\n */\nexport const useOrganizedParticipants = (args) => {\n /* @conditional-compile-remove(pinned-participants) */\n return _useOrganizedParticipantsWithPinnedParticipants(args);\n return _useOrganizedParticipants(args);\n};\n//# sourceMappingURL=videoGalleryLayoutUtils.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM, SMALL_HORIZONTAL_GALLERY_TILE_STYLE } from './VideoGalleryResponsiveHorizontalGallery.styles';\n/**\n * @private\n */\nexport const scrollableHorizontalGalleryStyles = {\n root: {\n width: '100%',\n minHeight: `${SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`,\n paddingRight: '0.5rem',\n '> *': SMALL_HORIZONTAL_GALLERY_TILE_STYLE\n }\n};\n/**\n * @private\n */\nexport const scrollableHorizontalGalleryContainerStyles = {\n display: 'flex',\n minHeight: `${SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`,\n overflow: 'scroll',\n '-ms-overflow-style': 'none',\n 'scrollbar-width': 'none',\n '::-webkit-scrollbar': {\n display: 'none'\n }\n};\n//# sourceMappingURL=ScrollableHorizontalGallery.style.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { Stack, mergeStyles } from '@fluentui/react';\nimport React, { useEffect, useRef } from 'react';\nimport { useDraggable } from 'react-use-draggable-scroll';\nimport { scrollableHorizontalGalleryContainerStyles, scrollableHorizontalGalleryStyles } from './styles/ScrollableHorizontalGallery.style';\n/**\n * Component to display elements horizontally in a scrollable container\n * @private\n */\nexport const ScrollableHorizontalGallery = (props) => {\n const { horizontalGalleryElements, onFetchTilesToRender, containerStyles } = props;\n useEffect(() => {\n const indexesArray = [...Array(horizontalGalleryElements === null || horizontalGalleryElements === void 0 ? void 0 : horizontalGalleryElements.length).keys()];\n if (onFetchTilesToRender && indexesArray) {\n onFetchTilesToRender(indexesArray);\n }\n }, [onFetchTilesToRender, horizontalGalleryElements === null || horizontalGalleryElements === void 0 ? void 0 : horizontalGalleryElements.length]);\n const ref = useRef();\n const { events: dragabbleEvents } = useDraggable(ref);\n return React.createElement(\"div\", Object.assign({ ref: ref }, dragabbleEvents, { className: mergeStyles(scrollableHorizontalGalleryContainerStyles, containerStyles) }),\n React.createElement(Stack, { \"data-ui-id\": \"scrollable-horizontal-gallery\", horizontal: true, styles: scrollableHorizontalGalleryStyles, tokens: {\n childrenGap: '0.5rem'\n } }, horizontalGalleryElements));\n};\n//# sourceMappingURL=ScrollableHorizontalGallery.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { concatStyleSets } from '@fluentui/react';\nimport React, { useMemo } from 'react';\nimport { ResponsiveHorizontalGallery } from '../ResponsiveHorizontalGallery';\n/* @conditional-compile-remove(vertical-gallery) */\nimport { ResponsiveVerticalGallery } from '../ResponsiveVerticalGallery';\nimport { HORIZONTAL_GALLERY_BUTTON_WIDTH, HORIZONTAL_GALLERY_GAP } from '../styles/HorizontalGallery.styles';\nimport { ScrollableHorizontalGallery } from './ScrollableHorizontalGallery';\nimport { SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM, horizontalGalleryContainerStyle, horizontalGalleryStyle } from './styles/VideoGalleryResponsiveHorizontalGallery.styles';\n/* @conditional-compile-remove(vertical-gallery) */\nimport { _convertPxToRem } from \"../../../../acs-ui-common/src\";\nimport { SMALL_FLOATING_MODAL_SIZE_REM } from './styles/FloatingLocalVideo.styles';\nimport { verticalGalleryContainerStyle, verticalGalleryStyle } from './styles/VideoGalleryResponsiveVerticalGallery.styles';\n/**\n * A ResponsiveHorizontalGallery styled for the {@link VideoGallery}\n *\n * @private\n */\nexport const OverflowGallery = (props) => {\n const { shouldFloatLocalVideo = false, onFetchTilesToRender, isNarrow = false, \n /* @conditional-compile-remove(vertical-gallery) */\n isShort = false, overflowGalleryElements, horizontalGalleryStyles, \n /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition = 'horizontalBottom', \n /* @conditional-compile-remove(vertical-gallery) */ verticalGalleryStyles, onChildrenPerPageChange, parentWidth } = props;\n const containerStyles = useMemo(() => {\n /* @conditional-compile-remove(vertical-gallery) */\n if (overflowGalleryPosition === 'verticalRight') {\n return verticalGalleryContainerStyle(shouldFloatLocalVideo, isNarrow, isShort);\n }\n return horizontalGalleryContainerStyle(shouldFloatLocalVideo, isNarrow);\n }, [shouldFloatLocalVideo, /* @conditional-compile-remove(vertical-gallery) */ isShort, isNarrow, /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition]);\n const galleryStyles = useMemo(() => {\n /* @conditional-compile-remove(vertical-gallery) */\n if (overflowGalleryPosition === 'verticalRight') {\n return concatStyleSets(verticalGalleryStyle(isShort), verticalGalleryStyles);\n }\n return concatStyleSets(horizontalGalleryStyle(isNarrow), horizontalGalleryStyles);\n }, [isNarrow, /* @conditional-compile-remove(vertical-gallery) */ isShort, horizontalGalleryStyles, /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition, /* @conditional-compile-remove(vertical-gallery) */ verticalGalleryStyles]);\n const scrollableHorizontalGalleryContainerStyles = useMemo(() => {\n if (isNarrow && parentWidth) {\n return {\n width: props.layout === 'default' ? `${_convertPxToRem(parentWidth) - 1}rem` : `${_convertPxToRem(parentWidth) - SMALL_FLOATING_MODAL_SIZE_REM.width - 1}rem`\n };\n }\n return undefined;\n }, [isNarrow, parentWidth, props.layout]);\n /* @conditional-compile-remove(vertical-gallery) */\n if (overflowGalleryPosition === 'verticalRight') {\n return React.createElement(ResponsiveVerticalGallery, { key: \"responsive-vertical-gallery\", containerStyles: containerStyles, verticalGalleryStyles: galleryStyles, controlBarHeightRem: HORIZONTAL_GALLERY_BUTTON_WIDTH, gapHeightRem: HORIZONTAL_GALLERY_GAP, isShort: isShort, onFetchTilesToRender: onFetchTilesToRender, onChildrenPerPageChange: onChildrenPerPageChange }, overflowGalleryElements ? overflowGalleryElements : [React.createElement(React.Fragment, null)]);\n }\n SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM;\n /* @conditional-compile-remove(pinned-participants) */\n if (isNarrow) {\n // There are no pages for ScrollableHorizontalGallery so we will approximate the first 3 remote\n // participant tiles are visible\n onChildrenPerPageChange === null || onChildrenPerPageChange === void 0 ? void 0 : onChildrenPerPageChange(3);\n return React.createElement(ScrollableHorizontalGallery, { horizontalGalleryElements: overflowGalleryElements ? overflowGalleryElements : [React.createElement(React.Fragment, null)], onFetchTilesToRender: onFetchTilesToRender, key: \"scrollable-horizontal-gallery\", containerStyles: scrollableHorizontalGalleryContainerStyles });\n }\n return React.createElement(ResponsiveHorizontalGallery, { key: \"responsive-horizontal-gallery\", containerStyles: containerStyles, onFetchTilesToRender: onFetchTilesToRender, horizontalGalleryStyles: galleryStyles, buttonWidthRem: HORIZONTAL_GALLERY_BUTTON_WIDTH, gapWidthRem: HORIZONTAL_GALLERY_GAP, onChildrenPerPageChange: onChildrenPerPageChange }, overflowGalleryElements ? overflowGalleryElements : [React.createElement(React.Fragment, null)]);\n};\n//# sourceMappingURL=OverflowGallery.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { Stack } from '@fluentui/react';\nimport React, { useMemo, useState, useRef } from 'react';\nimport { GridLayout } from '../GridLayout';\nimport { isNarrowWidth } from '../utils/responsive';\n/* @conditional-compile-remove(vertical-gallery) */\nimport { isShortHeight } from '../utils/responsive';\nimport { rootLayoutStyle } from './styles/DefaultLayout.styles';\nimport { videoGalleryLayoutGap } from './styles/Layout.styles';\nimport { useOrganizedParticipants } from './utils/videoGalleryLayoutUtils';\nimport { OverflowGallery } from './OverflowGallery';\n/**\n * DefaultLayout displays remote participants, local video component, and screen sharing component in\n * a grid an overflow gallery.\n *\n * @private\n */\nexport const DefaultLayout = (props) => {\n const { remoteParticipants = [], localParticipant, dominantSpeakers, localVideoComponent, screenShareComponent, onRenderRemoteParticipant, styles, maxRemoteVideoStreams, parentWidth, \n /* @conditional-compile-remove(vertical-gallery) */\n parentHeight, pinnedParticipantUserIds = [], \n /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition = 'horizontalBottom' } = props;\n const isNarrow = parentWidth ? isNarrowWidth(parentWidth) : false;\n /* @conditional-compile-remove(vertical-gallery) */\n const isShort = parentHeight ? isShortHeight(parentHeight) : false;\n // This is for tracking the number of children in the first page of overflow gallery.\n // This number will be used for the maxOverflowGalleryDominantSpeakers when organizing the remote participants.\n // We need to add the local participant to the pinned participant count so we are placing the speakers correctly.\n const childrenPerPage = useRef(4);\n const { gridParticipants, overflowGalleryParticipants } = useOrganizedParticipants({\n remoteParticipants,\n localParticipant,\n dominantSpeakers,\n maxRemoteVideoStreams,\n isScreenShareActive: !!screenShareComponent,\n maxOverflowGalleryDominantSpeakers: screenShareComponent ? childrenPerPage.current - (pinnedParticipantUserIds.length + 1) % childrenPerPage.current : childrenPerPage.current,\n /* @conditional-compile-remove(pinned-participants) */ pinnedParticipantUserIds,\n /* @conditional-compile-remove(gallery-layouts) */ layout: 'default'\n });\n let activeVideoStreams = 0;\n const gridTiles = gridParticipants.map(p => {\n var _a, _b;\n return onRenderRemoteParticipant(p, maxRemoteVideoStreams && maxRemoteVideoStreams >= 0 ? ((_a = p.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable) && activeVideoStreams++ < maxRemoteVideoStreams : (_b = p.videoStream) === null || _b === void 0 ? void 0 : _b.isAvailable);\n });\n /**\n * instantiate indexes available to render with indexes available that would be on first page\n *\n * For some components which do not strictly follow the order of the array, we might\n * re-render the initial tiles -> dispose them -> create new tiles, we need to take care of\n * this case when those components are here\n */\n const [indexesToRender, setIndexesToRender] = useState([]);\n const overflowGalleryTiles = overflowGalleryParticipants.map((p, i) => {\n var _a, _b;\n return onRenderRemoteParticipant(p, maxRemoteVideoStreams && maxRemoteVideoStreams >= 0 ? ((_a = p.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable) && indexesToRender.includes(i) && activeVideoStreams++ < maxRemoteVideoStreams : (_b = p.videoStream) === null || _b === void 0 ? void 0 : _b.isAvailable);\n });\n if (localVideoComponent) {\n gridTiles.push(localVideoComponent);\n }\n const overflowGallery = useMemo(() => {\n if (overflowGalleryTiles.length === 0) {\n return null;\n }\n return React.createElement(OverflowGallery, { isNarrow: isNarrow, \n /* @conditional-compile-remove(vertical-gallery) */ isShort: isShort, shouldFloatLocalVideo: false, overflowGalleryElements: overflowGalleryTiles, horizontalGalleryStyles: styles === null || styles === void 0 ? void 0 : styles.horizontalGallery, \n /* @conditional-compile-remove(vertical-gallery) */ verticalGalleryStyles: styles === null || styles === void 0 ? void 0 : styles.verticalGallery, \n /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition: overflowGalleryPosition, onFetchTilesToRender: setIndexesToRender, onChildrenPerPageChange: (n) => {\n childrenPerPage.current = n;\n }, \n /* @conditional-compile-remove(gallery-layouts) */ layout: 'default', parentWidth: parentWidth });\n }, [isNarrow, /* @conditional-compile-remove(vertical-gallery) */ isShort, overflowGalleryTiles, styles === null || styles === void 0 ? void 0 : styles.horizontalGallery, /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition, setIndexesToRender, /* @conditional-compile-remove(vertical-gallery) */ styles === null || styles === void 0 ? void 0 : styles.verticalGallery, parentWidth]);\n return React.createElement(Stack\n /* @conditional-compile-remove(vertical-gallery) */ , { \n /* @conditional-compile-remove(vertical-gallery) */ horizontal: overflowGalleryPosition === 'verticalRight', styles: rootLayoutStyle, tokens: videoGalleryLayoutGap },\n props.overflowGalleryPosition === 'horizontalTop' ? overflowGallery : React.createElement(React.Fragment, null),\n screenShareComponent ? screenShareComponent : React.createElement(GridLayout, { key: \"grid-layout\", styles: styles === null || styles === void 0 ? void 0 : styles.gridLayout }, gridTiles),\n overflowGalleryTrampoline(overflowGallery, /* @conditional-compile-remove(gallery-layouts) */ props.overflowGalleryPosition));\n};\nconst overflowGalleryTrampoline = (gallery, galleryPosition) => {\n /* @conditional-compile-remove(gallery-layouts) */\n return galleryPosition !== 'horizontalTop' ? gallery : React.createElement(React.Fragment, null);\n return gallery;\n};\n//# sourceMappingURL=DefaultLayout.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { ContextualMenu } from '@fluentui/react';\nimport { _convertRemToPx } from \"../../../../acs-ui-common/src\";\nimport React, { useMemo } from 'react';\nimport { useTheme } from '../../theming';\nimport { _ModalClone } from '../ModalClone/ModalClone';\nimport { floatingLocalVideoModalStyle, floatinglocalVideoModalInitialPositionGapRem } from './styles/FloatingLocalVideo.styles';\nconst DRAG_OPTIONS = {\n moveMenuItemText: 'Move',\n closeMenuItemText: 'Close',\n menu: ContextualMenu,\n keepInBounds: true\n};\n// Manually override the max position used to keep the modal in the bounds of its container.\n// This is a workaround for: https://github.com/microsoft/fluentui/issues/20122\n// Because our modal starts in the bottom right corner, we can say that this is the max (i.e. rightmost and bottomost)\n// position the modal can be dragged to.\nconst modalMaxDragPosition = {\n x: _convertRemToPx(floatinglocalVideoModalInitialPositionGapRem),\n y: _convertRemToPx(floatinglocalVideoModalInitialPositionGapRem)\n};\n/**\n * @private\n */\nexport const FloatingLocalVideo = (props) => {\n const { localVideoComponent, layerHostId, localVideoSizeRem, parentWidth, parentHeight } = props;\n const theme = useTheme();\n // The minimum drag position is the top left of the video gallery. i.e. the modal (PiP) should not be able\n // to be dragged offscreen and these are the top and left bounds of that calculation.\n const modalMinDragPosition = useMemo(() => parentWidth && parentHeight ? {\n // We use -parentWidth/Height because our modal is positioned to start in the bottom right,\n // hence (0,0) is the bottom right of the video gallery.\n x: -parentWidth + _convertRemToPx(localVideoSizeRem.width) + _convertRemToPx(floatinglocalVideoModalInitialPositionGapRem),\n y: -parentHeight + _convertRemToPx(localVideoSizeRem.height) + _convertRemToPx(floatinglocalVideoModalInitialPositionGapRem)\n } : undefined, [parentHeight, parentWidth, localVideoSizeRem.width, localVideoSizeRem.height]);\n const modalStyles = useMemo(() => floatingLocalVideoModalStyle(theme, localVideoSizeRem), [theme, localVideoSizeRem]);\n const layerProps = useMemo(() => ({\n hostId: layerHostId\n }), [layerHostId]);\n return React.createElement(_ModalClone, { isOpen: true, isModeless: true, dragOptions: DRAG_OPTIONS, styles: modalStyles, layerProps: layerProps, maxDragPosition: modalMaxDragPosition, minDragPosition: modalMinDragPosition, \"data-ui-id\": \"floating-local-video-host\" }, localVideoComponent);\n};\n//# sourceMappingURL=FloatingLocalVideo.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * @private\n */\nexport const rootLayoutStyle = {\n root: {\n position: 'relative',\n height: '100%',\n width: '100%'\n }\n};\n/**\n * @private\n */\nexport const innerLayoutStyle = {\n root: {\n position: 'relative',\n height: '100%',\n width: '100%',\n padding: '0.5rem'\n }\n};\n/**\n * @private\n */\nexport const layerHostStyle = {\n position: 'absolute',\n left: 0,\n top: 0,\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n // pointer events for layerHost set to none to make descendants interactive\n pointerEvents: 'none'\n};\n//# sourceMappingURL=FloatingLocalVideoLayout.styles.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { LayerHost, mergeStyles, Stack } from '@fluentui/react';\nimport { useId } from '@fluentui/react-hooks';\nimport React, { useMemo, useRef, useState } from 'react';\nimport { useTheme } from '../../theming';\nimport { GridLayout } from '../GridLayout';\nimport { isNarrowWidth } from '../utils/responsive';\n/* @conditional-compile-remove(vertical-gallery) */\nimport { isShortHeight } from '../utils/responsive';\nimport { FloatingLocalVideo } from './FloatingLocalVideo';\nimport { LARGE_FLOATING_MODAL_SIZE_REM, localVideoTileContainerStyle, localVideoTileWithControlsContainerStyle, LOCAL_VIDEO_TILE_ZINDEX, SMALL_FLOATING_MODAL_SIZE_REM } from './styles/FloatingLocalVideo.styles';\n/* @conditional-compile-remove(vertical-gallery) */\nimport { SHORT_VERTICAL_GALLERY_FLOATING_MODAL_SIZE_REM, VERTICAL_GALLERY_FLOATING_MODAL_SIZE_REM } from './styles/FloatingLocalVideo.styles';\nimport { innerLayoutStyle, layerHostStyle, rootLayoutStyle } from './styles/FloatingLocalVideoLayout.styles';\nimport { videoGalleryLayoutGap } from './styles/Layout.styles';\nimport { useOrganizedParticipants } from './utils/videoGalleryLayoutUtils';\nimport { OverflowGallery } from './OverflowGallery';\n/**\n * FloatingLocalVideoLayout displays remote participants and a screen sharing component in\n * a grid and overflow gallery while floating the local video\n *\n * @private\n */\nexport const FloatingLocalVideoLayout = (props) => {\n const { remoteParticipants = [], dominantSpeakers, localVideoComponent, screenShareComponent, onRenderRemoteParticipant, styles, maxRemoteVideoStreams, showCameraSwitcherInLocalPreview, parentWidth, parentHeight, \n /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition = 'horizontalBottom', pinnedParticipantUserIds = [] } = props;\n const theme = useTheme();\n const isNarrow = parentWidth ? isNarrowWidth(parentWidth) : false;\n /* @conditional-compile-remove(vertical-gallery) */\n const isShort = parentHeight ? isShortHeight(parentHeight) : false;\n // This is for tracking the number of children in the first page of overflow gallery.\n // This number will be used for the maxOverflowGalleryDominantSpeakers when organizing the remote participants.\n const childrenPerPage = useRef(4);\n const { gridParticipants, overflowGalleryParticipants } = useOrganizedParticipants({\n remoteParticipants,\n dominantSpeakers,\n maxRemoteVideoStreams,\n isScreenShareActive: !!screenShareComponent,\n maxOverflowGalleryDominantSpeakers: screenShareComponent ? childrenPerPage.current - pinnedParticipantUserIds.length % childrenPerPage.current : childrenPerPage.current,\n /* @conditional-compile-remove(pinned-participants) */ pinnedParticipantUserIds,\n /* @conditional-compile-remove(gallery-layouts) */ layout: 'floatingLocalVideo'\n });\n let activeVideoStreams = 0;\n const gridTiles = gridParticipants.map(p => {\n var _a, _b;\n return onRenderRemoteParticipant(p, maxRemoteVideoStreams && maxRemoteVideoStreams >= 0 ? ((_a = p.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable) && activeVideoStreams++ < maxRemoteVideoStreams : (_b = p.videoStream) === null || _b === void 0 ? void 0 : _b.isAvailable);\n });\n const shouldFloatLocalVideo = remoteParticipants.length > 0;\n if (!shouldFloatLocalVideo && localVideoComponent) {\n gridTiles.push(localVideoComponent);\n }\n /**\n * instantiate indexes available to render with indexes available that would be on first page\n *\n * For some components which do not strictly follow the order of the array, we might\n * re-render the initial tiles -> dispose them -> create new tiles, we need to take care of\n * this case when those components are here\n */\n const [indexesToRender, setIndexesToRender] = useState([]);\n const overflowGalleryTiles = overflowGalleryParticipants.map((p, i) => {\n var _a, _b;\n return onRenderRemoteParticipant(p, maxRemoteVideoStreams && maxRemoteVideoStreams >= 0 ? ((_a = p.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable) && indexesToRender && indexesToRender.includes(i) && activeVideoStreams++ < maxRemoteVideoStreams : (_b = p.videoStream) === null || _b === void 0 ? void 0 : _b.isAvailable);\n });\n const layerHostId = useId('layerhost');\n const localVideoSizeRem = useMemo(() => {\n if (isNarrow) {\n return SMALL_FLOATING_MODAL_SIZE_REM;\n }\n /* @conditional-compile-remove(vertical-gallery) */\n if ((overflowGalleryTiles.length > 0 || screenShareComponent) && overflowGalleryPosition === 'verticalRight') {\n return isNarrow ? SMALL_FLOATING_MODAL_SIZE_REM : isShort ? SHORT_VERTICAL_GALLERY_FLOATING_MODAL_SIZE_REM : VERTICAL_GALLERY_FLOATING_MODAL_SIZE_REM;\n }\n return LARGE_FLOATING_MODAL_SIZE_REM;\n }, [overflowGalleryTiles.length, isNarrow, screenShareComponent, /* @conditional-compile-remove(vertical-gallery) */ isShort, /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition]);\n const wrappedLocalVideoComponent = localVideoComponent && shouldFloatLocalVideo || screenShareComponent && localVideoComponent ?\n // When we use showCameraSwitcherInLocalPreview it disables dragging to allow keyboard navigation.\n showCameraSwitcherInLocalPreview ? React.createElement(Stack, { className: mergeStyles(localVideoTileWithControlsContainerStyle(theme, localVideoSizeRem), {\n boxShadow: theme.effects.elevation8,\n zIndex: LOCAL_VIDEO_TILE_ZINDEX\n }) }, localVideoComponent) : overflowGalleryTiles.length > 0 || screenShareComponent ? React.createElement(Stack, { className: mergeStyles(localVideoTileContainerStyle(theme, localVideoSizeRem, !!screenShareComponent, /* @conditional-compile-remove(gallery-layouts) */ overflowGalleryPosition)) }, localVideoComponent) : React.createElement(FloatingLocalVideo, { localVideoComponent: localVideoComponent, layerHostId: layerHostId, localVideoSizeRem: localVideoSizeRem, parentWidth: parentWidth, parentHeight: parentHeight }) : undefined;\n const overflowGallery = useMemo(() => {\n if (overflowGalleryTiles.length === 0 && !screenShareComponent) {\n return null;\n }\n return React.createElement(OverflowGallery\n /* @conditional-compile-remove(vertical-gallery) */ , { \n /* @conditional-compile-remove(vertical-gallery) */ isShort: isShort, onFetchTilesToRender: setIndexesToRender, isNarrow: isNarrow, shouldFloatLocalVideo: true, overflowGalleryElements: overflowGalleryTiles, horizontalGalleryStyles: styles === null || styles === void 0 ? void 0 : styles.horizontalGallery, \n /* @conditional-compile-remove(vertical-gallery) */ verticalGalleryStyles: styles === null || styles === void 0 ? void 0 : styles.verticalGallery, \n /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition: overflowGalleryPosition, onChildrenPerPageChange: (n) => {\n childrenPerPage.current = n;\n }, parentWidth: parentWidth });\n }, [isNarrow, /* @conditional-compile-remove(vertical-gallery) */ isShort, screenShareComponent, overflowGalleryTiles, styles === null || styles === void 0 ? void 0 : styles.horizontalGallery, /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition, setIndexesToRender, /* @conditional-compile-remove(vertical-gallery) */ styles === null || styles === void 0 ? void 0 : styles.verticalGallery, parentWidth]);\n return React.createElement(Stack, { styles: rootLayoutStyle },\n wrappedLocalVideoComponent,\n React.createElement(LayerHost, { id: layerHostId, className: mergeStyles(layerHostStyle) }),\n React.createElement(Stack\n /* @conditional-compile-remove(vertical-gallery) */ , { \n /* @conditional-compile-remove(vertical-gallery) */ horizontal: overflowGalleryPosition === 'verticalRight', styles: innerLayoutStyle, tokens: videoGalleryLayoutGap },\n props.overflowGalleryPosition === 'horizontalTop' ? overflowGallery : React.createElement(React.Fragment, null),\n screenShareComponent ? screenShareComponent : React.createElement(GridLayout, { key: \"grid-layout\", styles: styles === null || styles === void 0 ? void 0 : styles.gridLayout }, gridTiles),\n overflowGalleryTrampoline(overflowGallery, /* @conditional-compile-remove(gallery-layouts) */ props.overflowGalleryPosition)));\n};\nconst overflowGalleryTrampoline = (gallery, galleryPosition) => {\n /* @conditional-compile-remove(gallery-layouts) */\n return galleryPosition !== 'horizontalTop' ? gallery : React.createElement(React.Fragment, null);\n return gallery;\n};\n//# sourceMappingURL=FloatingLocalVideoLayout.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { LayerHost, Stack, mergeStyles, useTheme } from '@fluentui/react';\nimport { isNarrowWidth } from '../utils/responsive';\n/* @conditional-compile-remove(vertical-gallery) */\nimport { isShortHeight } from '../utils/responsive';\nimport React, { useMemo, useRef, useState } from 'react';\nimport { OverflowGallery } from './OverflowGallery';\nimport { SMALL_FLOATING_MODAL_SIZE_REM, LARGE_FLOATING_MODAL_SIZE_REM, localVideoTileContainerStyle } from './styles/FloatingLocalVideo.styles';\n/* @conditional-compile-remove(vertical-gallery) */\nimport { VERTICAL_GALLERY_FLOATING_MODAL_SIZE_REM, SHORT_VERTICAL_GALLERY_FLOATING_MODAL_SIZE_REM } from './styles/FloatingLocalVideo.styles';\nimport { useOrganizedParticipants } from './utils/videoGalleryLayoutUtils';\nimport { GridLayout } from '../GridLayout';\nimport { rootLayoutStyle } from './styles/FloatingLocalVideoLayout.styles';\nimport { layerHostStyle, innerLayoutStyle } from './styles/FloatingLocalVideoLayout.styles';\nimport { videoGalleryLayoutGap } from './styles/Layout.styles';\nimport { useId } from '@fluentui/react-hooks';\n/**\n * Layout for the gallery mode to highlight the current dominant speaker\n *\n * @private\n */\nexport const SpeakerVideoLayout = (props) => {\n const { remoteParticipants = [], dominantSpeakers, localVideoComponent, screenShareComponent, onRenderRemoteParticipant, styles, maxRemoteVideoStreams, parentWidth, \n /* @conditional-compile-remove(vertical-gallery) */ parentHeight, \n /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition = 'horizontalBottom', pinnedParticipantUserIds = [] } = props;\n const theme = useTheme();\n const isNarrow = parentWidth ? isNarrowWidth(parentWidth) : false;\n /* @conditional-compile-remove(vertical-gallery) */\n const isShort = parentHeight ? isShortHeight(parentHeight) : false;\n // This is for tracking the number of children in the first page of overflow gallery.\n // This number will be used for the maxOverflowGalleryDominantSpeakers when organizing the remote participants.\n const childrenPerPage = useRef(4);\n const { gridParticipants, overflowGalleryParticipants } = useOrganizedParticipants({\n remoteParticipants,\n dominantSpeakers,\n maxRemoteVideoStreams,\n isScreenShareActive: !!screenShareComponent,\n maxOverflowGalleryDominantSpeakers: screenShareComponent ? childrenPerPage.current - pinnedParticipantUserIds.length % childrenPerPage.current : childrenPerPage.current,\n /* @conditional-compile-remove(pinned-participants) */ pinnedParticipantUserIds,\n /* @conditional-compile-remove(gallery-layouts) */ layout: 'speaker'\n });\n let activeVideoStreams = 0;\n const gridTiles = gridParticipants.map(p => {\n var _a, _b;\n return onRenderRemoteParticipant(p, maxRemoteVideoStreams && maxRemoteVideoStreams >= 0 ? ((_a = p.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable) && activeVideoStreams++ < maxRemoteVideoStreams : (_b = p.videoStream) === null || _b === void 0 ? void 0 : _b.isAvailable);\n });\n const shouldFloatLocalVideo = remoteParticipants.length > 0;\n if (!shouldFloatLocalVideo && localVideoComponent) {\n gridTiles.push(localVideoComponent);\n }\n /**\n * instantiate indexes available to render with indexes available that would be on first page\n *\n * For some components which do not strictly follow the order of the array, we might\n * re-render the initial tiles -> dispose them -> create new tiles, we need to take care of\n * this case when those components are here\n */\n const [indexesToRender, setIndexesToRender] = useState([]);\n const overflowGalleryTiles = overflowGalleryParticipants.map((p, i) => {\n var _a, _b;\n return onRenderRemoteParticipant(p, maxRemoteVideoStreams && maxRemoteVideoStreams >= 0 ? ((_a = p.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable) && indexesToRender && indexesToRender.includes(i) && activeVideoStreams++ < maxRemoteVideoStreams : (_b = p.videoStream) === null || _b === void 0 ? void 0 : _b.isAvailable);\n });\n const layerHostId = useId('layerhost');\n const localVideoSizeRem = useMemo(() => {\n if (isNarrow) {\n return SMALL_FLOATING_MODAL_SIZE_REM;\n }\n /* @conditional-compile-remove(vertical-gallery) */\n if ((overflowGalleryTiles.length > 0 || screenShareComponent) && overflowGalleryPosition === 'verticalRight') {\n return isNarrow ? SMALL_FLOATING_MODAL_SIZE_REM : isShort ? SHORT_VERTICAL_GALLERY_FLOATING_MODAL_SIZE_REM : VERTICAL_GALLERY_FLOATING_MODAL_SIZE_REM;\n }\n return LARGE_FLOATING_MODAL_SIZE_REM;\n }, [overflowGalleryTiles.length, isNarrow, screenShareComponent, /* @conditional-compile-remove(vertical-gallery) */ isShort, /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition]);\n const wrappedLocalVideoComponent = localVideoComponent || screenShareComponent && localVideoComponent ? React.createElement(Stack, { className: mergeStyles(localVideoTileContainerStyle(theme, localVideoSizeRem, !!screenShareComponent, /* @conditional-compile-remove(gallery-layouts) */ overflowGalleryPosition)) }, localVideoComponent) : undefined;\n const overflowGallery = useMemo(() => {\n if (overflowGalleryTiles.length === 0 && !screenShareComponent) {\n return null;\n }\n return React.createElement(OverflowGallery\n /* @conditional-compile-remove(vertical-gallery) */ , { \n /* @conditional-compile-remove(vertical-gallery) */ isShort: isShort, onFetchTilesToRender: setIndexesToRender, isNarrow: isNarrow, shouldFloatLocalVideo: true, overflowGalleryElements: overflowGalleryTiles, horizontalGalleryStyles: styles === null || styles === void 0 ? void 0 : styles.horizontalGallery, \n /* @conditional-compile-remove(vertical-gallery) */ verticalGalleryStyles: styles === null || styles === void 0 ? void 0 : styles.verticalGallery, \n /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition: overflowGalleryPosition, onChildrenPerPageChange: (n) => {\n childrenPerPage.current = n;\n }, parentWidth: parentWidth });\n }, [isNarrow, /* @conditional-compile-remove(vertical-gallery) */ isShort, screenShareComponent, overflowGalleryTiles, styles === null || styles === void 0 ? void 0 : styles.horizontalGallery, /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition, setIndexesToRender, /* @conditional-compile-remove(vertical-gallery) */ styles === null || styles === void 0 ? void 0 : styles.verticalGallery, parentWidth]);\n return React.createElement(Stack, { styles: rootLayoutStyle },\n wrappedLocalVideoComponent,\n React.createElement(LayerHost, { id: layerHostId, className: mergeStyles(layerHostStyle) }),\n React.createElement(Stack\n /* @conditional-compile-remove(vertical-gallery) */ , { \n /* @conditional-compile-remove(vertical-gallery) */ horizontal: overflowGalleryPosition === 'verticalRight', styles: innerLayoutStyle, tokens: videoGalleryLayoutGap },\n props.overflowGalleryPosition === 'horizontalTop' ? overflowGallery : React.createElement(React.Fragment, null),\n screenShareComponent ? screenShareComponent : React.createElement(GridLayout, { key: \"grid-layout\", styles: styles === null || styles === void 0 ? void 0 : styles.gridLayout }, gridTiles),\n overflowGalleryTrampoline(overflowGallery, /* @conditional-compile-remove(gallery-layouts) */ props.overflowGalleryPosition)));\n};\nconst overflowGalleryTrampoline = (gallery, galleryPosition) => {\n /* @conditional-compile-remove(gallery-layouts) */\n return galleryPosition !== 'horizontalTop' ? gallery : React.createElement(React.Fragment, null);\n return gallery;\n};\n//# sourceMappingURL=SpeakerVideoLayout.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { LayerHost, Stack, mergeStyles } from '@fluentui/react';\nimport React from 'react';\nimport { innerLayoutStyle, layerHostStyle, rootLayoutStyle } from './styles/FloatingLocalVideoLayout.styles';\nimport { videoGalleryLayoutGap } from './styles/Layout.styles';\nimport { useId } from '@fluentui/react-hooks';\n/**\n * Video gallery layout to focus on the screenshare stream that is present in the call.\n */\nexport const FocusedContentLayout = (props) => {\n const { screenShareComponent } = props;\n const layerHostId = useId('layerhost');\n return React.createElement(Stack, { styles: rootLayoutStyle },\n React.createElement(LayerHost, { id: layerHostId, className: mergeStyles(layerHostStyle) }),\n React.createElement(Stack, { styles: innerLayoutStyle, tokens: videoGalleryLayoutGap }, screenShareComponent ? screenShareComponent : React.createElement(React.Fragment, null)));\n};\n//# sourceMappingURL=FocusContentLayout.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { concatStyleSets, mergeStyles, Stack } from '@fluentui/react';\nimport React, { useCallback, useMemo, useRef } from 'react';\n/* @conditional-compile-remove(pinned-participants) */\nimport { Announcer } from './Announcer';\n/* @conditional-compile-remove(pinned-participants) */\nimport { useEffect } from 'react';\nimport { useLocale } from '../localization';\nimport { useTheme } from '../theming';\nimport { _RemoteVideoTile } from './RemoteVideoTile';\nimport { isNarrowWidth, _useContainerHeight, _useContainerWidth } from './utils/responsive';\nimport { LocalScreenShare } from './VideoGallery/LocalScreenShare';\nimport { RemoteScreenShare } from './VideoGallery/RemoteScreenShare';\nimport { _LocalVideoTile } from './LocalVideoTile';\nimport { DefaultLayout } from './VideoGallery/DefaultLayout';\nimport { FloatingLocalVideoLayout } from './VideoGallery/FloatingLocalVideoLayout';\nimport { useIdentifiers } from '../identifiers';\nimport { localVideoTileContainerStyles, videoGalleryOuterDivStyle } from './styles/VideoGallery.styles';\nimport { floatingLocalVideoTileStyle } from './VideoGallery/styles/FloatingLocalVideo.styles';\n/* @conditional-compile-remove(pinned-participants) */\nimport { useId } from '@fluentui/react-hooks';\n/* @conditional-compile-remove(gallery-layouts) */\nimport { SpeakerVideoLayout } from './VideoGallery/SpeakerVideoLayout';\n/* @conditional-compile-remove(gallery-layouts) */\nimport { FocusedContentLayout } from './VideoGallery/FocusContentLayout';\n/**\n * @private\n * Currently the Calling JS SDK supports up to 4 remote video streams\n */\nexport const DEFAULT_MAX_REMOTE_VIDEO_STREAMS = 4;\n/**\n * @private\n * Styles to disable the selectivity of a text in video gallery\n */\nexport const unselectable = {\n '-webkit-user-select': 'none',\n '-webkit-touch-callout': 'none',\n '-moz-user-select': 'none',\n '-ms-user-select': 'none',\n 'user-select': 'none'\n};\n/**\n * @private\n * Set aside only 6 dominant speakers for remaining audio participants\n */\nexport const MAX_AUDIO_DOMINANT_SPEAKERS = 6;\n/**\n * @private\n * Default remote video tile menu options\n */\nexport const DEFAULT_REMOTE_VIDEO_TILE_MENU_OPTIONS = {\n kind: 'contextual'\n};\n/* @conditional-compile-remove(pinned-participants) */\n/**\n * @private\n * Maximum number of remote video tiles that can be pinned\n */\nexport const MAX_PINNED_REMOTE_VIDEO_TILES = 4;\n/**\n * VideoGallery represents a layout of video tiles for a specific call.\n * It displays a {@link VideoTile} for the local user as well as for each remote participant who has joined the call.\n *\n * @public\n */\nexport const VideoGallery = (props) => {\n var _a, _b, _c;\n const { localParticipant, remoteParticipants = [], localVideoViewOptions, remoteVideoViewOptions, dominantSpeakers, onRenderLocalVideoTile, onRenderRemoteVideoTile, onCreateLocalStreamView, onDisposeLocalStreamView, onCreateRemoteStreamView, onDisposeRemoteScreenShareStreamView, onDisposeRemoteVideoStreamView, styles, layout, onRenderAvatar, showMuteIndicator, maxRemoteVideoStreams = DEFAULT_MAX_REMOTE_VIDEO_STREAMS, showCameraSwitcherInLocalPreview, localVideoCameraCycleButtonProps, \n /* @conditional-compile-remove(pinned-participants) */\n onPinParticipant: onPinParticipantHandler, \n /* @conditional-compile-remove(pinned-participants) */\n onUnpinParticipant: onUnpinParticipantHandler, \n /* @conditional-compile-remove(pinned-participants) */\n remoteVideoTileMenu = DEFAULT_REMOTE_VIDEO_TILE_MENU_OPTIONS, \n /* @conditional-compile-remove(vertical-gallery) */\n overflowGalleryPosition = 'horizontalBottom' } = props;\n const ids = useIdentifiers();\n const theme = useTheme();\n const localeStrings = useLocale().strings.videoGallery;\n const strings = useMemo(() => (Object.assign(Object.assign({}, localeStrings), props.strings)), [localeStrings, props.strings]);\n /* @conditional-compile-remove(pinned-participants) */\n const drawerMenuHostIdFromProp = remoteVideoTileMenu && remoteVideoTileMenu.kind === 'drawer' ? remoteVideoTileMenu.hostId : undefined;\n /* @conditional-compile-remove(pinned-participants) */\n const drawerMenuHostId = useId('drawerMenuHost', drawerMenuHostIdFromProp);\n const localTileNotInGrid = !!((layout === 'floatingLocalVideo' || /* @conditional-compile-remove(gallery-layouts) */ layout === 'speaker') && remoteParticipants.length > 0);\n const containerRef = useRef(null);\n const containerWidth = _useContainerWidth(containerRef);\n const containerHeight = _useContainerHeight(containerRef);\n const isNarrow = containerWidth ? isNarrowWidth(containerWidth) : false;\n /* @conditional-compile-remove(pinned-participants) */\n const [pinnedParticipantsState, setPinnedParticipantsState] = React.useState([]);\n /* @conditional-compile-remove(pinned-participants) */\n const [selectedScalingModeState, setselectedScalingModeState] = React.useState({});\n /* @conditional-compile-remove(pinned-participants) */\n const onUpdateScalingMode = useCallback((remoteUserId, scalingMode) => {\n setselectedScalingModeState(current => (Object.assign(Object.assign({}, current), { [remoteUserId]: {\n scalingMode,\n isMirrored: remoteVideoViewOptions === null || remoteVideoViewOptions === void 0 ? void 0 : remoteVideoViewOptions.isMirrored\n } })));\n }, [remoteVideoViewOptions === null || remoteVideoViewOptions === void 0 ? void 0 : remoteVideoViewOptions.isMirrored]);\n /* @conditional-compile-remove(pinned-participants) */\n useEffect(() => {\n var _a;\n (_a = props.pinnedParticipants) === null || _a === void 0 ? void 0 : _a.forEach(pinParticipant => {\n var _a;\n if (!((_a = props.remoteParticipants) === null || _a === void 0 ? void 0 : _a.find(t => t.userId === pinParticipant))) {\n // warning will be logged in the console when invalid participant id is passed in pinned participants\n console.warn('Invalid pinned participant UserId :' + pinParticipant);\n }\n });\n }, [props.pinnedParticipants, props.remoteParticipants]);\n /* @conditional-compile-remove(pinned-participants) */\n // Use pinnedParticipants from props but if it is not defined use the maintained state of pinned participants\n const pinnedParticipants = (_a = props.pinnedParticipants) !== null && _a !== void 0 ? _a : pinnedParticipantsState;\n /**\n * Utility function for memoized rendering of LocalParticipant.\n */\n const localVideoTile = useMemo(() => {\n var _a, _b;\n if (onRenderLocalVideoTile) {\n return onRenderLocalVideoTile(localParticipant);\n }\n const localVideoTileStyles = concatStyleSets(localTileNotInGrid ? floatingLocalVideoTileStyle : {}, {\n root: {\n borderRadius: theme.effects.roundedCorner4\n }\n }, styles === null || styles === void 0 ? void 0 : styles.localVideo);\n const initialsName = !localParticipant.displayName ? '' : localParticipant.displayName;\n const showDisplayNameTrampoline = () => {\n /* @conditional-compile-remove(gallery-layouts) */\n return layout === 'default' ? strings.localVideoLabel : isNarrow ? '' : strings.localVideoLabel;\n return isNarrow ? '' : strings.localVideoLabel;\n };\n return React.createElement(Stack, { styles: localVideoTileContainerStyles, key: \"local-video-tile-key\", tabIndex: 0, \"aria-label\": strings.localVideoMovementLabel, role: 'dialog' },\n React.createElement(_LocalVideoTile, { userId: localParticipant.userId, onCreateLocalStreamView: onCreateLocalStreamView, onDisposeLocalStreamView: onDisposeLocalStreamView, isAvailable: (_a = localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable, isMuted: localParticipant.isMuted, renderElement: (_b = localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.videoStream) === null || _b === void 0 ? void 0 : _b.renderElement, displayName: showDisplayNameTrampoline(), initialsName: initialsName, localVideoViewOptions: localVideoViewOptions, onRenderAvatar: onRenderAvatar, showLabel: !(localTileNotInGrid && isNarrow) || /* @conditional-compile-remove(gallery-layouts) */ layout === 'default', showMuteIndicator: showMuteIndicator, showCameraSwitcherInLocalPreview: showCameraSwitcherInLocalPreview, localVideoCameraCycleButtonProps: localVideoCameraCycleButtonProps, localVideoCameraSwitcherLabel: strings.localVideoCameraSwitcherLabel, localVideoSelectedDescription: strings.localVideoSelectedDescription, styles: localVideoTileStyles, \n /* @conditional-compile-remove(raise-hand) */ raisedHand: localParticipant.raisedHand }));\n }, [isNarrow, localParticipant, localVideoCameraCycleButtonProps, localVideoViewOptions, onCreateLocalStreamView, onDisposeLocalStreamView, onRenderAvatar, onRenderLocalVideoTile, localTileNotInGrid, showCameraSwitcherInLocalPreview, showMuteIndicator, strings.localVideoCameraSwitcherLabel, strings.localVideoLabel, strings.localVideoMovementLabel, strings.localVideoSelectedDescription, styles === null || styles === void 0 ? void 0 : styles.localVideo, theme.effects.roundedCorner4,\n layout]);\n /* @conditional-compile-remove(pinned-participants) */\n const onPinParticipant = useCallback((userId) => {\n if (pinnedParticipants.length >= MAX_PINNED_REMOTE_VIDEO_TILES) {\n return;\n }\n if (!pinnedParticipantsState.includes(userId)) {\n setPinnedParticipantsState(pinnedParticipantsState.concat(userId));\n }\n onPinParticipantHandler === null || onPinParticipantHandler === void 0 ? void 0 : onPinParticipantHandler(userId);\n }, [pinnedParticipants.length, pinnedParticipantsState, setPinnedParticipantsState, onPinParticipantHandler]);\n /* @conditional-compile-remove(pinned-participants) */\n const onUnpinParticipant = useCallback((userId) => {\n setPinnedParticipantsState(pinnedParticipantsState.filter(p => p !== userId));\n onUnpinParticipantHandler === null || onUnpinParticipantHandler === void 0 ? void 0 : onUnpinParticipantHandler(userId);\n }, [pinnedParticipantsState, setPinnedParticipantsState, onUnpinParticipantHandler]);\n /* @conditional-compile-remove(pinned-participants) */\n const [announcementString, setAnnouncementString] = React.useState('');\n /* @conditional-compile-remove(pinned-participants) */\n /**\n * sets the announcement string for VideoGallery actions so that the screenreader will trigger\n */\n const toggleAnnouncerString = useCallback(announcement => {\n setAnnouncementString(announcement);\n /**\n * Clears the announcer string after VideoGallery action allowing it to be re-announced.\n */\n setTimeout(() => {\n setAnnouncementString('');\n }, 3000);\n }, [setAnnouncementString]);\n const defaultOnRenderVideoTile = useCallback((participant, isVideoParticipant) => {\n const remoteVideoStream = participant.videoStream;\n /* @conditional-compile-remove(pinned-participants) */\n const selectedScalingMode = remoteVideoStream ? selectedScalingModeState[participant.userId] : undefined;\n /* @conditional-compile-remove(pinned-participants) */\n const isPinned = pinnedParticipants === null || pinnedParticipants === void 0 ? void 0 : pinnedParticipants.includes(participant.userId);\n const createViewOptions = () => {\n var _a, _b;\n /* @conditional-compile-remove(pinned-participants) */\n if (selectedScalingMode) {\n return selectedScalingMode;\n }\n /* @conditional-compile-remove(pinned-participants) */\n return (remoteVideoStream === null || remoteVideoStream === void 0 ? void 0 : remoteVideoStream.streamSize) && ((_a = remoteVideoStream.streamSize) === null || _a === void 0 ? void 0 : _a.height) > ((_b = remoteVideoStream.streamSize) === null || _b === void 0 ? void 0 : _b.width) ? {\n scalingMode: 'Fit',\n isMirrored: remoteVideoViewOptions === null || remoteVideoViewOptions === void 0 ? void 0 : remoteVideoViewOptions.isMirrored\n } : remoteVideoViewOptions;\n return remoteVideoViewOptions;\n };\n return React.createElement(_RemoteVideoTile, { key: participant.userId, userId: participant.userId, remoteParticipant: participant, onCreateRemoteStreamView: isVideoParticipant ? onCreateRemoteStreamView : undefined, onDisposeRemoteStreamView: isVideoParticipant ? onDisposeRemoteVideoStreamView : undefined, isAvailable: isVideoParticipant ? remoteVideoStream === null || remoteVideoStream === void 0 ? void 0 : remoteVideoStream.isAvailable : false, isReceiving: isVideoParticipant ? remoteVideoStream === null || remoteVideoStream === void 0 ? void 0 : remoteVideoStream.isReceiving : false, renderElement: isVideoParticipant ? remoteVideoStream === null || remoteVideoStream === void 0 ? void 0 : remoteVideoStream.renderElement : undefined, remoteVideoViewOptions: isVideoParticipant && createViewOptions() ? createViewOptions() : undefined, onRenderAvatar: onRenderAvatar, showMuteIndicator: showMuteIndicator, strings: strings, menuKind: participant.userId === localParticipant.userId ? undefined : remoteVideoTileMenu ? remoteVideoTileMenu.kind === 'drawer' ? 'drawer' : 'contextual' : undefined, \n /* @conditional-compile-remove(pinned-participants) */ drawerMenuHostId: drawerMenuHostId, \n /* @conditional-compile-remove(pinned-participants) */ onPinParticipant: onPinParticipant, \n /* @conditional-compile-remove(pinned-participants) */ onUnpinParticipant: onUnpinParticipant, \n /* @conditional-compile-remove(pinned-participants) */ onUpdateScalingMode: onUpdateScalingMode, \n /* @conditional-compile-remove(pinned-participants) */ isPinned: isPinned, \n /* @conditional-compile-remove(pinned-participants) */ disablePinMenuItem: pinnedParticipants.length >= MAX_PINNED_REMOTE_VIDEO_TILES, \n /* @conditional-compile-remove(pinned-participants) */ toggleAnnouncerString: toggleAnnouncerString });\n }, [onCreateRemoteStreamView, onDisposeRemoteVideoStreamView, remoteVideoViewOptions, localParticipant, onRenderAvatar, showMuteIndicator, strings, /* @conditional-compile-remove(pinned-participants) */ drawerMenuHostId, /* @conditional-compile-remove(pinned-participants) */ remoteVideoTileMenu, /* @conditional-compile-remove(pinned-participants) */ selectedScalingModeState, /* @conditional-compile-remove(pinned-participants) */ pinnedParticipants, /* @conditional-compile-remove(pinned-participants) */ onPinParticipant, /* @conditional-compile-remove(pinned-participants) */ onUnpinParticipant, /* @conditional-compile-remove(pinned-participants) */ toggleAnnouncerString, /* @conditional-compile-remove(pinned-participants) */ onUpdateScalingMode]);\n const screenShareParticipant = remoteParticipants.find(participant => { var _a; return (_a = participant.screenShareStream) === null || _a === void 0 ? void 0 : _a.isAvailable; });\n const localScreenShareStreamComponent = React.createElement(LocalScreenShare, { localParticipant: localParticipant });\n const remoteScreenShareComponent = screenShareParticipant && React.createElement(RemoteScreenShare, Object.assign({}, screenShareParticipant, { renderElement: (_b = screenShareParticipant.screenShareStream) === null || _b === void 0 ? void 0 : _b.renderElement, onCreateRemoteStreamView: onCreateRemoteStreamView, onDisposeRemoteStreamView: onDisposeRemoteScreenShareStreamView, isReceiving: (_c = screenShareParticipant.screenShareStream) === null || _c === void 0 ? void 0 : _c.isReceiving }));\n const screenShareComponent = remoteScreenShareComponent ? remoteScreenShareComponent : localParticipant.isScreenSharingOn ? localScreenShareStreamComponent : undefined;\n const layoutProps = useMemo(() => ({\n remoteParticipants,\n localParticipant,\n screenShareComponent,\n showCameraSwitcherInLocalPreview,\n maxRemoteVideoStreams,\n dominantSpeakers,\n styles,\n onRenderRemoteParticipant: onRenderRemoteVideoTile !== null && onRenderRemoteVideoTile !== void 0 ? onRenderRemoteVideoTile : defaultOnRenderVideoTile,\n localVideoComponent: localVideoTile,\n parentWidth: containerWidth,\n parentHeight: containerHeight,\n /* @conditional-compile-remove(pinned-participants) */ pinnedParticipantUserIds: pinnedParticipants,\n /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition\n }), [remoteParticipants, localParticipant, screenShareComponent, showCameraSwitcherInLocalPreview, maxRemoteVideoStreams, dominantSpeakers, styles, localVideoTile, containerWidth, containerHeight, onRenderRemoteVideoTile, defaultOnRenderVideoTile, /* @conditional-compile-remove(pinned-participants) */ pinnedParticipants, /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition]);\n const videoGalleryLayout = useMemo(() => {\n /* @conditional-compile-remove(gallery-layouts) */\n if (screenShareParticipant && layout === 'focusedContent') {\n return React.createElement(FocusedContentLayout, Object.assign({}, layoutProps));\n }\n if (layout === 'floatingLocalVideo') {\n return React.createElement(FloatingLocalVideoLayout, Object.assign({}, layoutProps));\n }\n /* @conditional-compile-remove(gallery-layouts) */\n if (layout === 'speaker') {\n return React.createElement(SpeakerVideoLayout, Object.assign({}, layoutProps));\n }\n return React.createElement(DefaultLayout, Object.assign({}, layoutProps));\n }, [layout, layoutProps, /* @conditional-compile-remove(gallery-layouts) */ screenShareParticipant]);\n return React.createElement(\"div\", { \n /* @conditional-compile-remove(pinned-participants) */\n // We don't assign an drawer menu host id to the VideoGallery when a drawerMenuHostId is assigned from props\n id: drawerMenuHostIdFromProp ? undefined : drawerMenuHostId, \"data-ui-id\": ids.videoGallery, ref: containerRef, className: mergeStyles(videoGalleryOuterDivStyle, styles === null || styles === void 0 ? void 0 : styles.root, unselectable) },\n videoGalleryLayout,\n React.createElement(Announcer, { announcementString: announcementString, ariaLive: \"polite\" }));\n};\n//# sourceMappingURL=VideoGallery.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { concatStyleSets, mergeStyles } from '@fluentui/react';\nimport { _pxToRem } from \"../../../../../acs-ui-common/src\";\n/**\n * @private\n */\nexport const videoGalleryOuterDivStyle = mergeStyles({\n position: 'relative',\n width: '100%',\n height: '100%'\n});\n/**\n * @private\n */\nexport const videoGalleryContainerStyle = {\n root: {\n position: 'relative',\n height: '100%',\n width: '100%',\n padding: '0.5rem'\n }\n};\n/**\n * Small floating modal width and height in rem for small screen\n */\nexport const SMALL_FLOATING_MODAL_SIZE_REM = {\n width: 3.625,\n height: 6.5\n};\n/**\n * Large floating modal width and height in rem for large screen\n * Aspect ratio: 16:9\n */\nexport const LARGE_FLOATING_MODAL_SIZE_REM = {\n width: 13.438,\n height: 7.5\n};\n/**\n * Vertical gallery floating modal width and height in rem\n * Aspect ratio: 16:9\n */\nexport const SHORT_VERTICAL_GALLERY_FLOATING_MODAL_SIZE_REM = {\n width: 9,\n height: 5.063\n};\n/**\n * Vertical gallery floating modal width and height in rem\n * Aspect ratio: 16:9\n */\nexport const VERTICAL_GALLERY_FLOATING_MODAL_SIZE_REM = {\n width: 11,\n height: 6.25\n};\n/**\n * @private\n * z-index to ensure that the local video tile is above the video gallery.\n */\nexport const LOCAL_VIDEO_TILE_ZINDEX = 2;\n/**\n * @private\n */\nexport const localVideoTileContainerStyle = (theme, localVideoTileSizeRem, screenSharePresent, overflowGalleryPosition) => {\n return {\n width: screenSharePresent ? `${localVideoTileSizeRem.width}rem` : '',\n height: screenSharePresent ? `${localVideoTileSizeRem.height}rem` : '',\n minWidth: screenSharePresent ? '' : `${localVideoTileSizeRem.width}rem`,\n minHeight: screenSharePresent ? '' : `${localVideoTileSizeRem.height}rem`,\n position: 'absolute',\n bottom: overflowGalleryPosition !== 'horizontalTop' ? `${dockedlocalVideoTileContainerPaddingRem}rem` : 'unset',\n top: overflowGalleryPosition === 'horizontalTop' ? `${dockedlocalVideoTileContainerPaddingRem}rem` : 'unset',\n borderRadius: theme.effects.roundedCorner4,\n overflow: 'hidden',\n right: `${dockedlocalVideoTileContainerPaddingRem}rem`\n };\n};\n/**\n * @private\n */\nexport const localVideoTileWithControlsContainerStyle = (theme, localVideoTileSizeRem) => {\n return concatStyleSets(localVideoTileContainerStyle(theme, localVideoTileSizeRem), {\n root: {\n boxShadow: theme.effects.elevation8\n }\n });\n};\n/**\n * @private\n */\nexport const floatingLocalVideoModalStyle = (theme, modalSizeRem) => {\n return concatStyleSets({\n main: mergeStyles(localVideoTileContainerStyle(theme, modalSizeRem), {\n bottom: `${floatinglocalVideoModalInitialPositionGapRem}rem`,\n right: `${floatinglocalVideoModalInitialPositionGapRem}rem`\n })\n }, {\n main: {\n boxShadow: theme.effects.elevation8,\n ':focus-within': {\n boxShadow: theme.effects.elevation16,\n border: `${_pxToRem(2)} solid ${theme.palette.neutralPrimary}`\n }\n }\n }, localVideoModalStyles);\n};\n/**\n * Initial position gap of the floating local video modal.\n * ie. if this is 1rem, then floating local video modal would initially be positioned 1rem from\n * the bottom and 1rem from the right.\n * @private\n */\nexport const floatinglocalVideoModalInitialPositionGapRem = 1;\n/**\n * Padding of the docked local video tile container.\n * @private\n */\nexport const dockedlocalVideoTileContainerPaddingRem = 0.5;\n/**\n * @private\n */\nexport const floatingLocalVideoTileStyle = {\n root: {\n position: 'absolute',\n zIndex: LOCAL_VIDEO_TILE_ZINDEX,\n height: '100%',\n width: '100%'\n }\n};\n/**\n * @private\n */\nexport const localVideoCameraCycleButtonStyles = (theme) => {\n return {\n root: {\n position: 'absolute',\n width: _pxToRem(32),\n height: _pxToRem(32),\n right: '0rem',\n top: '0rem',\n color: '#FFFFFF',\n // only shows up on running video feed to we want to force specific colours.\n zIndex: 2,\n // shows the button directly over the local video feed.\n background: 'rgba(0,0,0,0.4)',\n borderRadius: theme.effects.roundedCorner2\n },\n rootFocused: {\n // styles to remove the unwanted white highlight and blue colour after tapping on button.\n color: '#FFFFFF',\n background: 'rgba(0,0,0,0.4)' // sets opacity of background to be visible on all backdrops in video stream.\n },\n icon: {\n paddingLeft: _pxToRem(3),\n paddingRight: _pxToRem(3),\n margin: 0\n },\n flexContainer: {\n paddingBottom: _pxToRem(8)\n }\n };\n};\n/**\n * Styles for the local video tile modal when it is focused, will cause keyboard move icon to appear over video\n * @private\n */\nexport const localVideoModalStyles = {\n keyboardMoveIconContainer: {\n zIndex: LOCAL_VIDEO_TILE_ZINDEX + 1 // zIndex to set the keyboard movement Icon above the other layers in the video tile.\n }\n};\n//# sourceMappingURL=FloatingLocalVideo.styles.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/** @private */\nexport const remoteVideoTileWrapperStyle = {\n height: '100%',\n width: '100%',\n position: 'relative'\n};\n/** @private */\nexport const drawerMenuWrapperStyles = {\n root: {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n // Any zIndex > 0 will work because this is the only absolutely\n // positioned element in the container.\n zIndex: 2\n }\n};\n//# sourceMappingURL=RemoteVideoTile.styles.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { LARGE_FLOATING_MODAL_SIZE_REM, SMALL_FLOATING_MODAL_SIZE_REM } from './FloatingLocalVideo.styles';\n/**\n * @private\n */\nexport const horizontalGalleryContainerStyle = (shouldFloatLocalVideo, isNarrow) => {\n return {\n minHeight: isNarrow ? `${SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem` : `${LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`,\n width: shouldFloatLocalVideo ? isNarrow ? `calc(100% - ${SMALL_FLOATING_MODAL_SIZE_REM.width}rem)` : `calc(100% - ${LARGE_FLOATING_MODAL_SIZE_REM.width}rem)` : '100%',\n paddingRight: '0.5rem'\n };\n};\n/**\n * @private\n */\nexport const horizontalGalleryStyle = (isNarrow) => {\n return {\n children: isNarrow ? SMALL_HORIZONTAL_GALLERY_TILE_STYLE : LARGE_HORIZONTAL_GALLERY_TILE_STYLE\n };\n};\n/**\n * Small horizontal gallery tile size in rem\n * @private\n */\nexport const SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM = {\n height: 6.5,\n width: 6.5\n};\n/**\n * Large horizontal gallery tile size in rem\n * @private\n */\nexport const LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM = {\n height: 7.5,\n minWidth: 7.5,\n maxWidth: 13.43\n};\n/**\n * @private\n */\nexport const SMALL_HORIZONTAL_GALLERY_TILE_STYLE = {\n minHeight: `${SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`,\n minWidth: `${SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM.width}rem`,\n maxHeight: `${SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`,\n maxWidth: `${SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM.width}rem`\n};\n/**\n * @private\n */\nexport const LARGE_HORIZONTAL_GALLERY_TILE_STYLE = {\n minHeight: `${LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`,\n minWidth: `${LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM.minWidth}rem`,\n maxHeight: `${LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM.height}rem`,\n maxWidth: `${LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM.maxWidth}rem`,\n width: '100%',\n height: '100%'\n};\n//# sourceMappingURL=VideoGalleryResponsiveHorizontalGallery.styles.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { SHORT_VERTICAL_GALLERY_FLOATING_MODAL_SIZE_REM, SMALL_FLOATING_MODAL_SIZE_REM, VERTICAL_GALLERY_FLOATING_MODAL_SIZE_REM } from './FloatingLocalVideo.styles';\n/**\n * VerticalGallery tile size in rem:\n *\n * min - smallest possible size of the tile (90px)\n * max - Largest size we want the vertical tiles (144px)\n *\n * @private\n */\nexport const SHORT_VERTICAL_GALLERY_TILE_SIZE_REM = {\n minHeight: 5.625,\n maxHeight: 9,\n width: 9\n};\n/**\n * VerticalGallery tile size in rem:\n *\n * min - smallest possible size of the tile (90px)\n * max - Largest size we want the vertical tiles (144px)\n *\n * @private\n */\nexport const VERTICAL_GALLERY_TILE_SIZE_REM = {\n minHeight: 6.75,\n maxHeight: 11,\n width: 11\n};\n/**\n * Styles for the VerticalGallery's container set in parent.\n *\n * width is being increased by 1rem to account for the gap width desired for the VerticalGallery.\n *\n * @param shouldFloatLocalVideo whether rendered in floating layout or not\n * @returns Style set for VerticalGallery container.\n */\nexport const verticalGalleryContainerStyle = (shouldFloatLocalVideo, isNarrow, isShort) => {\n return isNarrow && isShort ? {\n width: `${SHORT_VERTICAL_GALLERY_TILE_SIZE_REM.width}rem`,\n height: shouldFloatLocalVideo ? `calc(100% - ${SMALL_FLOATING_MODAL_SIZE_REM.height}rem)` : '100%',\n paddingBottom: '0.5rem'\n } : !isNarrow && isShort ? {\n width: `${SHORT_VERTICAL_GALLERY_TILE_SIZE_REM.width}rem`,\n height: shouldFloatLocalVideo ? `calc(100% - ${SHORT_VERTICAL_GALLERY_FLOATING_MODAL_SIZE_REM.height}rem)` : '100%',\n paddingBottom: '0.5rem'\n } : {\n width: `${VERTICAL_GALLERY_TILE_SIZE_REM.width}rem`,\n height: shouldFloatLocalVideo ? `calc(100% - ${VERTICAL_GALLERY_FLOATING_MODAL_SIZE_REM.height}rem)` : '100%',\n paddingBottom: '0.5rem'\n };\n};\n/**\n * @private\n */\nexport const SHORT_VERTICAL_GALLERY_TILE_STYLE = {\n minHeight: `${SHORT_VERTICAL_GALLERY_TILE_SIZE_REM.minHeight}rem`,\n minWidth: `${SHORT_VERTICAL_GALLERY_TILE_SIZE_REM.width}rem`,\n maxHeight: `${SHORT_VERTICAL_GALLERY_TILE_SIZE_REM.maxHeight}rem`,\n maxWidth: `${SHORT_VERTICAL_GALLERY_TILE_SIZE_REM.width}rem`,\n width: '100%',\n height: '100%'\n};\n/**\n * @private\n */\nexport const VERTICAL_GALLERY_TILE_STYLE = {\n minHeight: `${VERTICAL_GALLERY_TILE_SIZE_REM.minHeight}rem`,\n minWidth: `${VERTICAL_GALLERY_TILE_SIZE_REM.width}rem`,\n maxHeight: `${VERTICAL_GALLERY_TILE_SIZE_REM.maxHeight}rem`,\n maxWidth: `${VERTICAL_GALLERY_TILE_SIZE_REM.width}rem`,\n width: '100%',\n height: '100%'\n};\n/**\n * @private\n */\nexport const verticalGalleryStyle = (isShort) => {\n return isShort ? {\n children: SHORT_VERTICAL_GALLERY_TILE_STYLE\n } : {\n children: VERTICAL_GALLERY_TILE_STYLE\n };\n};\n//# sourceMappingURL=VideoGalleryResponsiveVerticalGallery.styles.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { useEffect, useMemo, useState } from 'react';\n/**\n * Helper hook to maintain the video stream lifecycle. This calls onCreateStreamView and onDisposeStreamView\n * appropriately based on react lifecycle events and prop changes.\n *\n * @remarks\n *\n * Notes on handling changes to scaling mode:\n *\n * Ideally we have access to the original StreamRenderView and can call view.updateScalingMode() and do not need to recreate the stream view.\n * However, to support backwards compat we cannot guarantee this. If we don't have access to the original StreamRenderView we need to dispose\n * the old view and create a new one.\n *\n * Supporting both of these scenarios became too complex and fragile. When we introduce a breaking change this should be update to ensure that\n * onCreateStreamView _must_ return a view object with updateScalingMode and update logic in this hook to call view.updateScalingMode instead\n * of recreating the stream.\n *\n * @private\n */\nconst useVideoStreamLifecycleMaintainer = (props) => {\n const { isMirrored, isScreenSharingOn, isStreamAvailable, onCreateStreamView, onDisposeStreamView, renderElementExists, scalingMode } = props;\n const [videoStreamViewResult, setVideoStreamViewResult] = useState();\n useEffect(() => {\n var _a;\n if (isStreamAvailable && !renderElementExists) {\n (_a = onCreateStreamView === null || onCreateStreamView === void 0 ? void 0 : onCreateStreamView({\n isMirrored,\n scalingMode\n })) === null || _a === void 0 ? void 0 : _a.then(result => {\n result && setVideoStreamViewResult(result);\n });\n }\n // Always clean up element to make tile up to date and be able to dispose correctly\n return () => {\n if (renderElementExists) {\n // TODO: Remove `if isScreenSharingOn` when we isolate dispose behavior for screen share\n if (!isScreenSharingOn) {\n onDisposeStreamView === null || onDisposeStreamView === void 0 ? void 0 : onDisposeStreamView();\n }\n }\n };\n }, [isMirrored, isScreenSharingOn, isStreamAvailable, onCreateStreamView, onDisposeStreamView, renderElementExists, scalingMode]);\n // The execution order for above useEffect is onCreateRemoteStreamView =>(async time gap) RenderElement generated => element disposed => onDisposeRemoteStreamView\n // Element disposed could happen during async time gap, which still cause leaks for unused renderElement.\n // Need to do an entire cleanup when remoteTile gets disposed and make sure element gets correctly disposed\n useEffect(() => {\n return () => {\n // TODO: Remove `if isScreenSharingOn` when we isolate dispose behavior for screen share\n if (!isScreenSharingOn) {\n onDisposeStreamView === null || onDisposeStreamView === void 0 ? void 0 : onDisposeStreamView();\n }\n };\n }, [isScreenSharingOn, onDisposeStreamView]);\n return videoStreamViewResult;\n};\n/**\n * Extension of {@link useVideoStreamLifecycleMaintainer} specifically for local video streams\n *\n * @private\n */\nexport const useLocalVideoStreamLifecycleMaintainer = (props) => {\n const { onCreateLocalStreamView, onDisposeLocalStreamView } = props;\n const onCreateStreamView = useMemo(() => (options) => {\n return onCreateLocalStreamView === null || onCreateLocalStreamView === void 0 ? void 0 : onCreateLocalStreamView(options);\n }, [onCreateLocalStreamView]);\n const onDisposeStreamView = useMemo(() => () => {\n onDisposeLocalStreamView === null || onDisposeLocalStreamView === void 0 ? void 0 : onDisposeLocalStreamView();\n }, [onDisposeLocalStreamView]);\n return useVideoStreamLifecycleMaintainer(Object.assign(Object.assign({}, props), { onCreateStreamView,\n onDisposeStreamView }));\n};\n/**\n * Extension of {@link useVideoStreamLifecycleMaintainer} specifically for remote video streams\n *\n * @private\n */\nexport const useRemoteVideoStreamLifecycleMaintainer = (props) => {\n const { remoteParticipantId, onCreateRemoteStreamView, onDisposeRemoteStreamView } = props;\n const onCreateStreamView = useMemo(() => (options) => {\n return onCreateRemoteStreamView === null || onCreateRemoteStreamView === void 0 ? void 0 : onCreateRemoteStreamView(remoteParticipantId, options);\n }, [onCreateRemoteStreamView, remoteParticipantId]);\n const onDisposeStreamView = useMemo(() => () => {\n onDisposeRemoteStreamView === null || onDisposeRemoteStreamView === void 0 ? void 0 : onDisposeRemoteStreamView(remoteParticipantId);\n }, [onDisposeRemoteStreamView, remoteParticipantId]);\n return useVideoStreamLifecycleMaintainer(Object.assign(Object.assign({}, props), { onCreateStreamView,\n onDisposeStreamView }));\n};\n//# sourceMappingURL=useVideoStreamLifecycleMaintainer.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { _formatString } from \"../../../../acs-ui-common/src\";\nimport { useMemo } from 'react';\nimport { _preventDismissOnEvent as preventDismissOnEvent } from \"../../../../acs-ui-common/src\";\n/**\n * @private\n */\nexport const useVideoTileContextualMenuProps = (props) => {\n var _a;\n const { remoteParticipant, view, strings, isPinned, onPinParticipant, onUnpinParticipant, onUpdateScalingMode, disablePinMenuItem, toggleAnnouncerString } = props;\n const scalingMode = useMemo(() => {\n var _a;\n /* @conditional-compile-remove(pinned-participants) */\n return (_a = props.remoteParticipant.videoStream) === null || _a === void 0 ? void 0 : _a.scalingMode;\n return undefined;\n }, [\n (_a = props.remoteParticipant.videoStream) === null || _a === void 0 ? void 0 : _a.scalingMode\n ]);\n const contextualMenuProps = useMemo(() => {\n const items = [];\n if (isPinned !== undefined) {\n if (isPinned && onUnpinParticipant && (strings === null || strings === void 0 ? void 0 : strings.unpinParticipantForMe)) {\n let unpinActionString = undefined;\n if (toggleAnnouncerString && strings.unpinParticipantMenuItemAriaLabel && remoteParticipant.displayName) {\n unpinActionString = _formatString(strings === null || strings === void 0 ? void 0 : strings.unpinParticipantMenuItemAriaLabel, {\n participantName: remoteParticipant.displayName\n });\n }\n items.push({\n key: 'unpin',\n text: strings.unpinParticipantForMe,\n iconProps: {\n iconName: 'UnpinParticipant',\n styles: {\n root: {\n lineHeight: '1rem',\n textAlign: 'center'\n }\n }\n },\n onClick: () => {\n onUnpinParticipant(remoteParticipant.userId);\n unpinActionString && (toggleAnnouncerString === null || toggleAnnouncerString === void 0 ? void 0 : toggleAnnouncerString(unpinActionString));\n },\n 'data-ui-id': 'video-tile-unpin-participant-button',\n ariaLabel: unpinActionString\n });\n }\n if (!isPinned && onPinParticipant && (strings === null || strings === void 0 ? void 0 : strings.pinParticipantForMe)) {\n let pinActionString = undefined;\n if (toggleAnnouncerString && strings.pinnedParticipantAnnouncementAriaLabel && remoteParticipant.displayName) {\n pinActionString = _formatString(strings === null || strings === void 0 ? void 0 : strings.pinnedParticipantAnnouncementAriaLabel, {\n participantName: remoteParticipant.displayName\n });\n }\n items.push({\n key: 'pin',\n text: disablePinMenuItem ? strings.pinParticipantForMeLimitReached : strings.pinParticipantForMe,\n iconProps: {\n iconName: 'PinParticipant',\n styles: {\n root: {\n lineHeight: '1rem',\n textAlign: 'center'\n }\n }\n },\n onClick: () => {\n onPinParticipant(remoteParticipant.userId);\n pinActionString && (toggleAnnouncerString === null || toggleAnnouncerString === void 0 ? void 0 : toggleAnnouncerString(pinActionString));\n },\n 'data-ui-id': 'video-tile-pin-participant-button',\n disabled: disablePinMenuItem,\n ariaLabel: pinActionString\n });\n }\n }\n if (scalingMode) {\n if (scalingMode === 'Crop' && (strings === null || strings === void 0 ? void 0 : strings.fitRemoteParticipantToFrame)) {\n items.push({\n key: 'fitRemoteParticipantToFrame',\n text: strings.fitRemoteParticipantToFrame,\n iconProps: {\n iconName: 'VideoTileScaleFit',\n styles: {\n root: {\n lineHeight: '1rem',\n textAlign: 'center'\n }\n }\n },\n onClick: () => {\n onUpdateScalingMode === null || onUpdateScalingMode === void 0 ? void 0 : onUpdateScalingMode(remoteParticipant.userId, 'Fit');\n view === null || view === void 0 ? void 0 : view.updateScalingMode('Fit');\n },\n 'data-ui-id': 'video-tile-fit-to-frame',\n ariaLabel: strings.fitRemoteParticipantToFrame\n });\n }\n else if (scalingMode === 'Fit' && (strings === null || strings === void 0 ? void 0 : strings.fillRemoteParticipantFrame)) {\n {\n items.push({\n key: 'fillRemoteParticipantFrame',\n text: strings.fillRemoteParticipantFrame,\n iconProps: {\n iconName: 'VideoTileScaleFill',\n styles: {\n root: {\n lineHeight: '1rem',\n textAlign: 'center'\n }\n }\n },\n onClick: () => {\n onUpdateScalingMode === null || onUpdateScalingMode === void 0 ? void 0 : onUpdateScalingMode(remoteParticipant.userId, 'Crop');\n view === null || view === void 0 ? void 0 : view.updateScalingMode('Crop');\n },\n 'data-ui-id': 'video-tile-fill-frame',\n ariaLabel: strings.fillRemoteParticipantFrame\n });\n }\n }\n }\n if (items.length === 0) {\n return undefined;\n }\n return {\n items,\n styles: {},\n calloutProps: {\n preventDismissOnEvent\n }\n };\n }, [scalingMode, strings, view, isPinned, onPinParticipant, onUnpinParticipant, onUpdateScalingMode, remoteParticipant.userId, remoteParticipant.displayName, disablePinMenuItem, toggleAnnouncerString]);\n return contextualMenuProps;\n};\n//# sourceMappingURL=useVideoTileContextualMenuProps.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { _convertRemToPx as convertRemToPx } from \"../../../../../acs-ui-common/src\";\nimport { LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM } from '../styles/VideoGalleryResponsiveHorizontalGallery.styles';\nimport { SHORT_VERTICAL_GALLERY_TILE_SIZE_REM, VERTICAL_GALLERY_TILE_SIZE_REM } from '../styles/VideoGalleryResponsiveVerticalGallery.styles';\n/**\n * Helper function to calculate children per page for HorizontalGallery based on width of container, child, buttons, and\n * gaps in between\n *\n * @private\n */\nexport const calculateHorizontalChildrenPerPage = (args) => {\n const { numberOfChildren, containerWidth, buttonWidthRem, gapWidthRem } = args;\n const childMinWidth = convertRemToPx(LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM.minWidth);\n const gapWidth = convertRemToPx(gapWidthRem);\n /** First check how many children can fit in containerWidth.\n * __________________________________\n * | || |\n * | || |\n * |________________||________________|\n * <-----------containerWidth--------->\n * containerWidth = n * childWidth + (n - 1) * gapWidth. Isolate n and take the floor.\n */\n const numberOfChildrenInContainer = Math.floor((containerWidth + gapWidth) / (childMinWidth + gapWidth));\n // If all children fit then return numberOfChildrenInContainer\n if (numberOfChildren <= numberOfChildrenInContainer) {\n return numberOfChildrenInContainer;\n }\n const buttonWidth = convertRemToPx(buttonWidthRem);\n /** We know we need to paginate. So we need to subtract the buttonWidth twice and gapWidth twice from\n * containerWidth to compute childrenSpace\n * <-----------containerWidth--------->\n * __________________________________\n * | || || || |\n * |<|| || ||>|\n * |_||_____________||_____________||_|\n * <-------childrenSpace------>\n */\n const childrenSpace = containerWidth - 2 * buttonWidth - 2 * gapWidth;\n // Now that we have childrenSpace width we can figure out how many children can fit in childrenSpace.\n // childrenSpace = n * childWidth + (n - 1) * gapWidth. Isolate n and take the floor.\n return Math.max(Math.floor((childrenSpace + gapWidth) / (childMinWidth + gapWidth)), 1);\n};\n/**\n * Helper function to find the number of children for the VerticalGallery on each page.\n *\n * @private\n */\nexport const calculateVerticalChildrenPerPage = (args) => {\n const { numberOfChildren, containerHeight, gapHeightRem, controlBarHeight, isShort } = args;\n const childMinHeightPx = convertRemToPx(isShort ? SHORT_VERTICAL_GALLERY_TILE_SIZE_REM.minHeight : VERTICAL_GALLERY_TILE_SIZE_REM.minHeight);\n const gapHeightPx = convertRemToPx(gapHeightRem);\n const controlBarHeightPx = convertRemToPx(controlBarHeight);\n /** First check how many children can fit in containerHeight.\n *\n * _________________\n * | |\n * | |\n * |________________|\n * _________________\n * | |\n * | |\n * |________________|\n *\n * < n/m >\n *\n * number of children = container height - (2* gap height + button height) / childMinHeight\n *\n * we want to find the maximum number of children at the smallest size we can fit in the gallery and then resize them\n * to fill in the space as much as possible\n *\n * First we will find the max number of children without any controls we can fit.\n */\n const maxNumberOfChildrenInContainer = Math.floor((containerHeight + gapHeightPx) / (childMinHeightPx + gapHeightPx));\n // if all of the children fit in the container just return the number of children\n if (numberOfChildren <= maxNumberOfChildrenInContainer) {\n return maxNumberOfChildrenInContainer;\n }\n /**\n * For the pagination we know the container height, the height of the button bar and the 2 times the gap\n * height, top tile and bottom tile above control bar. So the child space is calculated as:\n *\n * space = height - controlbar - (2 * gap)\n */\n const childSpace = containerHeight - controlBarHeightPx - 2 * gapHeightPx;\n /**\n * Now that we have the childrenSpace height we can figure out how many Children can fir in the childrenSpace.\n * childrenSpace = n * childHeightMin + (n - 1) * gapHeight. isolate n and take the floor.\n *\n * We want to always return at least one video tile if there are children present.So we take the max.\n */\n return Math.max(Math.floor((childSpace + gapHeightPx) / (childMinHeightPx + gapHeightPx)), 1);\n};\n//# sourceMappingURL=OverflowGalleryUtils.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { Icon, mergeStyles, Persona, Stack, Text } from '@fluentui/react';\n/* @conditional-compile-remove(pinned-participants) */\nimport { IconButton } from '@fluentui/react';\nimport React, { useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { useIdentifiers } from '../identifiers';\nimport { useLocale } from '../localization';\nimport { useTheme } from '../theming';\n/* @conditional-compile-remove(raise-hand) */\nimport { RaisedHandIcon } from './assets/RaisedHandIcon';\nimport { disabledVideoHint, displayNameStyle, iconContainerStyle, overlayContainerStyles, rootStyles, videoContainerStyles, videoHint, tileInfoContainerStyle, participantStateStringStyles } from './styles/VideoTile.styles';\nimport { getVideoTileOverrideColor } from './utils/videoTileStylesUtils';\n/* @conditional-compile-remove(pinned-participants) */\nimport { pinIconStyle } from './styles/VideoTile.styles';\n/* @conditional-compile-remove(pinned-participants) */\nimport { DirectionalHint } from '@fluentui/react';\n/* @conditional-compile-remove(pinned-participants) */\nimport useLongPress from './utils/useLongPress';\n/* @conditional-compile-remove(pinned-participants) */\nimport { moreButtonStyles } from './styles/VideoTile.styles';\n// Coin max size is set to PersonaSize.size100\nconst DEFAULT_PERSONA_MAX_SIZE_PX = 100;\n// Coin min size is set PersonaSize.size32\nconst DEFAULT_PERSONA_MIN_SIZE_PX = 32;\nconst DefaultPlaceholder = (props) => {\n const { text, noVideoAvailableAriaLabel, coinSize, hidePersonaDetails } = props;\n return React.createElement(Stack, { className: mergeStyles({\n position: 'absolute',\n height: '100%',\n width: '100%'\n }) },\n React.createElement(Stack, { styles: defaultPersonaStyles }, coinSize && React.createElement(Persona, { coinSize: coinSize, hidePersonaDetails: hidePersonaDetails, text: text !== null && text !== void 0 ? text : '', initialsTextColor: \"white\", \"aria-label\": noVideoAvailableAriaLabel !== null && noVideoAvailableAriaLabel !== void 0 ? noVideoAvailableAriaLabel : '', showOverflowTooltip: false })));\n};\nconst defaultPersonaStyles = {\n root: {\n margin: 'auto',\n maxHeight: '100%'\n }\n};\n/* @conditional-compile-remove(pinned-participants) */\nconst videoTileMoreMenuIconProps = {\n iconName: undefined,\n style: {\n display: 'none'\n }\n};\n/* @conditional-compile-remove(pinned-participants) */\nconst videoTileMoreMenuProps = {\n directionalHint: DirectionalHint.topLeftEdge,\n isBeakVisible: false,\n styles: {\n container: {\n maxWidth: '8rem'\n }\n }\n};\n/* @conditional-compile-remove(pinned-participants) */\nconst VideoTileMoreOptionsButton = (props) => {\n const { contextualMenu, canShowContextMenuButton } = props;\n if (!contextualMenu) {\n return React.createElement(React.Fragment, null);\n }\n const optionsIcon = canShowContextMenuButton ? 'VideoTileMoreOptions' : undefined;\n return React.createElement(IconButton, { \"data-ui-id\": \"video-tile-more-options-button\", styles: moreButtonStyles, menuIconProps: videoTileMoreMenuIconProps, menuProps: Object.assign(Object.assign({}, videoTileMoreMenuProps), contextualMenu), iconProps: {\n iconName: optionsIcon\n } });\n};\n/**\n * A component to render the video stream for a single call participant.\n *\n * Use with {@link GridLayout} in a {@link VideoGallery}.\n *\n * @public\n */\nexport const VideoTile = (props) => {\n const { children, displayName, initialsName, isMirrored, isMuted, \n /* @conditional-compile-remove(pinned-participants) */\n isPinned, onRenderPlaceholder, renderElement, showLabel = true, showMuteIndicator = true, styles, userId, noVideoAvailableAriaLabel, isSpeaking, \n /* @conditional-compile-remove(raise-hand) */\n raisedHand, personaMinSize = DEFAULT_PERSONA_MIN_SIZE_PX, personaMaxSize = DEFAULT_PERSONA_MAX_SIZE_PX, \n /* @conditional-compile-remove(pinned-participants) */\n contextualMenu } = props;\n /* @conditional-compile-remove(pinned-participants) */\n const [isHovered, setIsHovered] = useState(false);\n /* @conditional-compile-remove(pinned-participants) */\n const [isFocused, setIsFocused] = useState(false);\n // need to set a default otherwise the resizeObserver will get stuck in an infinite loop.\n const [personaSize, setPersonaSize] = useState(1);\n const videoTileRef = useRef(null);\n const locale = useLocale();\n const theme = useTheme();\n const isVideoRendered = !!renderElement;\n const observer = useRef(new ResizeObserver((entries) => {\n const { width, height } = entries[0].contentRect;\n const personaCalcSize = Math.min(width, height) / 3;\n // we only want to set the persona size if it has changed\n if (personaCalcSize !== personaSize) {\n setPersonaSize(Math.max(Math.min(personaCalcSize, personaMaxSize), personaMinSize));\n }\n }));\n useLayoutEffect(() => {\n if (videoTileRef.current) {\n observer.current.observe(videoTileRef.current);\n }\n const currentObserver = observer.current;\n return () => currentObserver.disconnect();\n }, [videoTileRef]);\n /* @conditional-compile-remove(pinned-participants) */\n const useLongPressProps = useMemo(() => {\n return {\n onLongPress: () => {\n var _a;\n (_a = props.onLongTouch) === null || _a === void 0 ? void 0 : _a.call(props);\n },\n touchEventsOnly: true\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props.onLongTouch]);\n /* @conditional-compile-remove(pinned-participants) */\n const longPressHandlers = useLongPress(useLongPressProps);\n const longPressHandlersTrampoline = useMemo(() => {\n /* @conditional-compile-remove(pinned-participants) */\n return longPressHandlers;\n return {};\n }, [\n longPressHandlers\n ]);\n const hoverHandlers = useMemo(() => {\n /* @conditional-compile-remove(pinned-participants) */\n return {\n onMouseEnter: () => setIsHovered(true),\n onMouseLeave: () => setIsHovered(false),\n onFocus: () => setIsFocused(true),\n onBlur: () => setIsFocused(false)\n };\n return {};\n }, []);\n const placeholderOptions = {\n userId,\n text: initialsName !== null && initialsName !== void 0 ? initialsName : displayName,\n noVideoAvailableAriaLabel,\n coinSize: personaSize,\n styles: defaultPersonaStyles,\n hidePersonaDetails: true\n };\n const videoHintWithBorderRadius = mergeStyles(videoHint, {\n borderRadius: theme.effects.roundedCorner4\n });\n const tileInfoStyle = useMemo(() => mergeStyles(isVideoRendered ? videoHintWithBorderRadius : disabledVideoHint, getVideoTileOverrideColor(isVideoRendered, theme, 'neutralPrimary'), styles === null || styles === void 0 ? void 0 : styles.displayNameContainer), [isVideoRendered, videoHintWithBorderRadius, theme, styles === null || styles === void 0 ? void 0 : styles.displayNameContainer]);\n const ids = useIdentifiers();\n const canShowLabel = showLabel && (displayName || showMuteIndicator && isMuted);\n const participantStateString = participantStateStringTrampoline(props, locale);\n /* @conditional-compile-remove(pinned-participants) */\n const canShowContextMenuButton = isHovered || isFocused;\n let raisedHandBackgroundColor = '';\n /* @conditional-compile-remove(raise-hand) */\n const callingPalette = theme.callingPalette;\n /* @conditional-compile-remove(raise-hand) */\n raisedHandBackgroundColor = callingPalette.raiseHandGold;\n return React.createElement(Stack, Object.assign({ \"data-ui-id\": ids.videoTile, className: mergeStyles(rootStyles, {\n background: theme.palette.neutralLighter,\n borderRadius: theme.effects.roundedCorner4\n }, (isSpeaking || /* @conditional-compile-remove(raise-hand) */ raisedHand) && {\n '&::after': {\n content: `''`,\n position: 'absolute',\n border: `0.25rem solid ${isSpeaking ? theme.palette.themePrimary : raisedHandBackgroundColor}`,\n borderRadius: theme.effects.roundedCorner4,\n width: '100%',\n height: '100%',\n pointerEvents: 'none'\n }\n }, styles === null || styles === void 0 ? void 0 : styles.root) }, longPressHandlersTrampoline),\n React.createElement(\"div\", Object.assign({ ref: videoTileRef, style: {\n width: '100%',\n height: '100%'\n } }, hoverHandlers, { \"data-is-focusable\": true }),\n isVideoRendered ? React.createElement(Stack, { className: mergeStyles(videoContainerStyles, isMirrored && {\n transform: 'scaleX(-1)'\n }, styles === null || styles === void 0 ? void 0 : styles.videoContainer) }, renderElement) : React.createElement(Stack, { className: mergeStyles(videoContainerStyles, {\n opacity: participantStateString ? 0.4 : 1\n }) }, onRenderPlaceholder ? onRenderPlaceholder(userId !== null && userId !== void 0 ? userId : '', placeholderOptions, DefaultPlaceholder) : React.createElement(DefaultPlaceholder, Object.assign({}, placeholderOptions))),\n (canShowLabel || participantStateString) && React.createElement(Stack, { horizontal: true, className: tileInfoContainerStyle, tokens: tileInfoContainerTokens },\n React.createElement(Stack, { horizontal: true, className: tileInfoStyle },\n canShowLabel && React.createElement(Text, { className: mergeStyles(displayNameStyle), title: displayName, style: {\n color: participantStateString ? theme.palette.neutralSecondary : 'inherit'\n }, \"data-ui-id\": \"video-tile-display-name\" }, displayName),\n participantStateString && React.createElement(Text, { className: mergeStyles(participantStateStringStyles(theme)) }, bracketedParticipantString(participantStateString, !!canShowLabel)),\n showMuteIndicator && isMuted && React.createElement(Stack, { className: mergeStyles(iconContainerStyle) },\n React.createElement(Icon, { iconName: \"VideoTileMicOff\" })),\n React.createElement(VideoTileMoreOptionsButton, { contextualMenu: contextualMenu, canShowContextMenuButton: canShowContextMenuButton }),\n isPinned && React.createElement(Stack, { className: mergeStyles(iconContainerStyle) },\n React.createElement(Icon, { iconName: \"VideoTilePinned\", className: mergeStyles(pinIconStyle) })))),\n children && React.createElement(Stack, { className: mergeStyles(overlayContainerStyles, styles === null || styles === void 0 ? void 0 : styles.overlayContainer) }, children),\n raisedHand && canShowLabel && React.createElement(Stack, { horizontal: true, tokens: {\n childrenGap: '0.2rem'\n }, style: {\n alignItems: 'center',\n padding: '0.2rem 0.3rem',\n backgroundColor: theme.palette.white,\n opacity: 0.9,\n borderRadius: '1rem',\n margin: '0.5rem',\n width: 'fit-content',\n position: 'absolute'\n } },\n React.createElement(Stack.Item, null,\n React.createElement(Text, null, raisedHand.raisedHandOrderPosition)),\n React.createElement(Stack.Item, null,\n React.createElement(RaisedHandIcon, null)))));\n};\nconst participantStateStringTrampoline = (props, locale) => {\n return undefined;\n};\nconst tileInfoContainerTokens = {\n // A horizontal Stack sets the left margin to 0 for all it's children.\n // We need to allow the children to set their own margins\n childrenGap: 'none'\n};\nconst bracketedParticipantString = (participantString, withBrackets) => {\n return withBrackets ? `(${participantString})` : participantString;\n};\n//# sourceMappingURL=VideoTile.js.map"],"names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","_StartCaptionsButton","props","onStartCaptions","onStopCaptions","onSetSpokenLanguage","currentSpokenLanguage","strings","options","useMemo","spokenLanguage","hasSetSpokenLanguage","setHasSetSpokenLanguage","useState","onToggleStartCaptions","useCallback","checked","useEffect","Object","assign","onClick","onRenderOnIcon","disabled","iconName","onRenderOffIcon","StreamMedia","containerEl","useRef","theme","isMirrored","videoStreamElement","styles","loadingState","pipEnabled","setPipEnabled","container","current","innerHTML","addEventListener","appendChild","className","root","ref","SystemMessage","content","Icon","horizontal","containerStyle","tabIndex","style","wordBreak","role","title","variant","IndicatorComponent","typingUsers","onRenderUser","typingUsersMentioned","totalCharacterCount","ids","typingUser","displayName","additionalCharCount","length","delimiter","push","usersElement","userDisplayNameStyles","userElements","forEach","user","index","truncatedDisplayName","substring","key","pop","getUsersElement","typingUserDisplayName","numUserNotMentioned","spanElements","numTypingUsers","numTypingUsersAbbreviated","variables","typingString","singleUser","multipleUsers","users","multipleUsersAbbreviateOne","multipleUsersAbbreviateMany","numOthers","formatInlineElements","getSpanElements","labelString","namesString","replace","getIndicatorString","userNames","join","getNamesString","typingIndicator","TypingIndicator","typingUsersToRender","filter","undefined","indicatorComponent","str","vars","elements","regex","RegExp","array","exec","prev","lastIndex","VerticalGallery","children","childrenPerPage","onFetchTilesToRender","page","setPage","buttonState","setButtonState","previous","numberOfChildren","lastPage","Math","ceil","indexesArray","Array","keys","clippedPage","childrenOnCurrentPage","map","showButtons","childContainerStyle","childrenStyles","child","i","verticalGalleryVideoTile","VerticalGalleryControlBar","buttonsDisabled","onPreviousButtonClick","onNextButtonClick","totalPages","currentPage","verticalGallery","pageCounterContainerStyles","previousButtonSyles","previousButton","pageCounterStyles","counter","nextButtonsStyles","nextButton","horizontalAlign","tokens","childrenGap","ariaLabel","leftNavButtonAriaLabel","overflowGalleryLeftNavButton","verticalGalleryPageCounter","rightNavButtonAriaLabel","overflowGalleryRightNavButton","VideoEffectsItemContainerHeight","VideoEffectsItemContainerWidth","hiddenVideoEffectsItemContainerStyles","visibility","height","width","border","_VideoEffectsItem","_a","_b","_c","_d","_e","_f","_g","useTheme","isSelected","backgroundImage","backgroundProps","url","containerStyles","videoEffectsItemContainerStyles","background","args","palette","neutralQuaternaryAlt","backgroundPosition","backgroundSize","borderRadius","color","neutralPrimary","cursor","themePrimary","boxSizing","rootFocused","outline","componentRef","focusOnMount","focus","TooltipHost","tooltipProps","Stack","itemKey","verticalAlign","DefaultButton","onSelect","call","autoFocus","onKeyDown","iconProps","iconContainer","textContainer","Text","_VideoBackgroundEffectsPicker","componentControlledSelectedEffectKey","setComponentControlledSelectedEffectKey","defaultSelectedEffectKey","useWarnings","name","controlledUsage","onChangeProp","valueProp","defaultValueProp","selectedEffect","selectedEffectKey","convertedOptions","option","onChange","setSelectedEffect","itemsPerRow","optionsByRow","fillCount","Label","label","rowIndex","rowRoot","wrap","from","_","screenSharingContainerStyle","screenSharingNotificationContainerStyle","backgroundColor","padding","maxWidth","effects","roundedCorner4","neutralSecondary","screenSharingNotificationIconContainerStyle","lineHeight","screenSharingNotificationIconStyle","transform","neutralTertiary","screenSharingNotificationTextStyle","fontSize","LocalScreenShare","localParticipant","locale","isScreenSharingOn","localScreenSharingNotification","videoGallery","screenIsBeingSharedMessage","displayNamePlaceholder","VideoTile","isMuted","onRenderPlaceholder","loadingStyle","RemoteScreenShare","userId","renderElement","onCreateRemoteStreamView","onDisposeRemoteStreamView","isReceiving","loadingMessage","screenShareLoadingMessage","participant","LoadingSpinner","Spinner","size","rootLayoutStyle","position","videoGalleryLayoutGap","DEFAULT_MAX_OVERFLOW_GALLERY_DOMINANT_SPEAKERS","DEFAULT_MAX_VIDEO_SREAMS","_useOrganizedParticipants","visibleGridParticipants","visibleOverflowGalleryParticipants","remoteParticipants","dominantSpeakers","maxRemoteVideoStreams","maxOverflowGalleryDominantSpeakers","isScreenShareActive","pinnedParticipantUserIds","layout","maxRemoteVideoStreamsToUse","videoParticipants","p","videoStream","isAvailable","participants","putVideoParticipantsFirst","lastVisibleParticipants","maxDominantSpeakers","slice","dominantSpeakerToGrid","visibleGridParticipantsSet","Set","remoteParticipantsOrdered","has","gridParticipants","getGridParticipants","overflowGalleryParticipants","concat","getOverflowGalleryRemoteParticipants","audioParticipants","useOrganizedParticipants","remoteParticipantMap","reduce","remoteParticipant","pinnedParticipants","id","pinnedParticipant","pinnedParticipantUserIdSet","unpinnedParticipants","useOrganizedParticipantsProps","useOrganizedParticipantsResult","_useOrganizedParticipantsWithPinnedParticipants","scrollableHorizontalGalleryStyles","minHeight","paddingRight","scrollableHorizontalGalleryContainerStyles","display","overflow","ScrollableHorizontalGallery","horizontalGalleryElements","events","dragabbleEvents","OverflowGallery","shouldFloatLocalVideo","isNarrow","isShort","overflowGalleryElements","horizontalGalleryStyles","overflowGalleryPosition","verticalGalleryStyles","onChildrenPerPageChange","parentWidth","galleryStyles","ResponsiveVerticalGallery","controlBarHeightRem","gapHeightRem","ResponsiveHorizontalGallery","buttonWidthRem","gapWidthRem","DefaultLayout","localVideoComponent","screenShareComponent","onRenderRemoteParticipant","parentHeight","activeVideoStreams","gridTiles","indexesToRender","setIndexesToRender","overflowGalleryTiles","includes","overflowGallery","horizontalGallery","n","GridLayout","gridLayout","overflowGalleryTrampoline","gallery","galleryPosition","DRAG_OPTIONS","moveMenuItemText","closeMenuItemText","menu","ContextualMenu","keepInBounds","modalMaxDragPosition","x","y","FloatingLocalVideo","layerHostId","localVideoSizeRem","modalMinDragPosition","modalStyles","layerProps","hostId","isOpen","isModeless","dragOptions","maxDragPosition","minDragPosition","innerLayoutStyle","layerHostStyle","left","top","pointerEvents","FloatingLocalVideoLayout","showCameraSwitcherInLocalPreview","useId","wrappedLocalVideoComponent","boxShadow","elevation8","zIndex","LayerHost","SpeakerVideoLayout","FocusedContentLayout","DEFAULT_MAX_REMOTE_VIDEO_STREAMS","unselectable","DEFAULT_REMOTE_VIDEO_TILE_MENU_OPTIONS","kind","VideoGallery","localVideoViewOptions","remoteVideoViewOptions","onRenderLocalVideoTile","onRenderRemoteVideoTile","onCreateLocalStreamView","onDisposeLocalStreamView","onDisposeRemoteScreenShareStreamView","onDisposeRemoteVideoStreamView","onRenderAvatar","showMuteIndicator","localVideoCameraCycleButtonProps","onPinParticipant","onPinParticipantHandler","onUnpinParticipant","onUnpinParticipantHandler","remoteVideoTileMenu","localeStrings","drawerMenuHostIdFromProp","drawerMenuHostId","localTileNotInGrid","containerRef","containerWidth","containerHeight","pinnedParticipantsState","setPinnedParticipantsState","selectedScalingModeState","setselectedScalingModeState","onUpdateScalingMode","remoteUserId","scalingMode","pinParticipant","find","t","console","warn","localVideoTile","localVideoTileStyles","localVideo","initialsName","localVideoMovementLabel","localVideoLabel","showLabel","localVideoCameraSwitcherLabel","localVideoSelectedDescription","raisedHand","announcementString","setAnnouncementString","toggleAnnouncerString","announcement","setTimeout","defaultOnRenderVideoTile","isVideoParticipant","remoteVideoStream","selectedScalingMode","isPinned","createViewOptions","streamSize","menuKind","disablePinMenuItem","screenShareParticipant","screenShareStream","localScreenShareStreamComponent","remoteScreenShareComponent","layoutProps","videoGalleryLayout","Announcer","ariaLive","SMALL_FLOATING_MODAL_SIZE_REM","LARGE_FLOATING_MODAL_SIZE_REM","SHORT_VERTICAL_GALLERY_FLOATING_MODAL_SIZE_REM","VERTICAL_GALLERY_FLOATING_MODAL_SIZE_REM","LOCAL_VIDEO_TILE_ZINDEX","localVideoTileContainerStyle","localVideoTileSizeRem","screenSharePresent","minWidth","bottom","dockedlocalVideoTileContainerPaddingRem","right","localVideoTileWithControlsContainerStyle","floatingLocalVideoModalStyle","modalSizeRem","main","floatinglocalVideoModalInitialPositionGapRem","elevation16","localVideoModalStyles","floatingLocalVideoTileStyle","keyboardMoveIconContainer","remoteVideoTileWrapperStyle","drawerMenuWrapperStyles","horizontalGalleryContainerStyle","SMALL_HORIZONTAL_GALLERY_TILE_SIZE_REM","LARGE_HORIZONTAL_GALLERY_TILE_SIZE_REM","horizontalGalleryStyle","SMALL_HORIZONTAL_GALLERY_TILE_STYLE","LARGE_HORIZONTAL_GALLERY_TILE_STYLE","maxHeight","SHORT_VERTICAL_GALLERY_TILE_SIZE_REM","VERTICAL_GALLERY_TILE_SIZE_REM","verticalGalleryContainerStyle","paddingBottom","SHORT_VERTICAL_GALLERY_TILE_STYLE","VERTICAL_GALLERY_TILE_STYLE","verticalGalleryStyle","useVideoStreamLifecycleMaintainer","isStreamAvailable","onCreateStreamView","onDisposeStreamView","renderElementExists","videoStreamViewResult","setVideoStreamViewResult","useLocalVideoStreamLifecycleMaintainer","useRemoteVideoStreamLifecycleMaintainer","remoteParticipantId","useVideoTileContextualMenuProps","view","items","unpinParticipantForMe","unpinActionString","unpinParticipantMenuItemAriaLabel","participantName","text","textAlign","pinParticipantForMe","pinActionString","pinnedParticipantAnnouncementAriaLabel","pinParticipantForMeLimitReached","fitRemoteParticipantToFrame","updateScalingMode","fillRemoteParticipantFrame","calloutProps","preventDismissOnEvent","calculateHorizontalChildrenPerPage","childMinWidth","gapWidth","numberOfChildrenInContainer","floor","childrenSpace","max","calculateVerticalChildrenPerPage","controlBarHeight","childMinHeightPx","gapHeightPx","controlBarHeightPx","maxNumberOfChildrenInContainer","childSpace","DEFAULT_PERSONA_MAX_SIZE_PX","DEFAULT_PERSONA_MIN_SIZE_PX","DefaultPlaceholder","noVideoAvailableAriaLabel","coinSize","hidePersonaDetails","defaultPersonaStyles","initialsTextColor","showOverflowTooltip","margin","videoTileMoreMenuIconProps","videoTileMoreMenuProps","directionalHint","isBeakVisible","VideoTileMoreOptionsButton","contextualMenu","canShowContextMenuButton","optionsIcon","menuIconProps","menuProps","isSpeaking","personaMinSize","personaMaxSize","isHovered","setIsHovered","isFocused","setIsFocused","personaSize","setPersonaSize","videoTileRef","isVideoRendered","observer","ResizeObserver","entries","contentRect","personaCalcSize","min","useLayoutEffect","observe","currentObserver","disconnect","useLongPressProps","onLongPress","onLongTouch","touchEventsOnly","longPressHandlers","longPressHandlersTrampoline","hoverHandlers","onMouseEnter","onMouseLeave","onFocus","onBlur","placeholderOptions","videoHintWithBorderRadius","tileInfoStyle","displayNameContainer","canShowLabel","participantStateString","participantStateStringTrampoline","raisedHandBackgroundColor","callingPalette","raiseHandGold","videoTile","neutralLighter","videoContainer","opacity","tileInfoContainerTokens","bracketedParticipantString","overlayContainer","alignItems","white","raisedHandOrderPosition","participantString","withBrackets"],"sourceRoot":""}