{"version":3,"file":"quote.926d65a8.js","mappings":";wHAAO,SAASA,EAAMC,GAA+B,IAApBC,EAAcC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EAChD,SAAUG,KAAKN,MAAMO,OAAON,EAAI,KAAOC,IAAW,KAAOA,IAASM,QAAQN,EAC5E,kEAEO,MAAMO,EAAS,CACpBC,YAAcA,GAAiCV,EAA4B,IAAtBO,OAAOG,IAAsB,IAClFC,YAAcA,GAAiCX,EAA4B,IAAtBO,OAAOI,IAAsB,IAClFC,YAAcA,GAAwBZ,EAAMY,GAC5CC,YAAcA,GAAwBb,EAAMa,GAC5CC,KAAOA,GAAiBd,EAAa,IAAPc,GAAc,IAC5CC,KAAOD,GAAiBd,EAAa,IAAPc,GAAc,IAC5CE,WAAaA,GAAuBhB,EAAmB,IAAbgB,GAAoB,IAC9DC,eAAiBA,GAAwBA,EACzCC,aAAeA,GAAsBA,EACrCC,aAAeA,GAAsBA,EACrCC,UAAYA,GAAsBpB,EAAkB,IAAZoB,GAAmB,IAC3DC,WAAaA,GAAuBrB,EAAmB,IAAbqB,GAAoB,KAGnDC,EAAc,IAEdC,EAAyBC,OAAOC,OAAO,CAClDC,IAAK,IAAIC,KAAK,KAAM,EAAG,GACvBC,IAAK,IAAID,KAAK,KAAM,EAAG,uMCvBlB,MAAME,EAAyB,CACpCC,SAAUA,IAAM,6EAChBC,SAAU,sCCGZ,SAASC,IAGP,OACEC,EAAAA,EAAAA,KAAA,OAAKC,UAAU,sCAAqCC,SACjDC,MAAMC,KAAKD,MAAM,IAAIE,KAAI,CAACC,EAAGC,KAC5BP,EAAAA,EAAAA,KAAA,OAAiBC,UAJrB,yIAI4CC,UACtCF,EAAAA,EAAAA,KAACQ,EAAAA,EAAO,KADAD,MAMlB,CAYA,SAAeE,EAAAA,EAAAA,KAVf,WACE,MAAOC,IAAqBC,EAAAA,EAAAA,GAAe,IACtCf,EACHgB,kBAAkB,EAClBC,cAAe,SAEXC,EAAuBJ,aAAiB,EAAjBA,EAAmBK,YAChD,OAAOD,GAAuBd,EAAAA,EAAAA,KAACc,EAAoB,KAAMd,EAAAA,EAAAA,KAACD,EAAe,GAC3E,sdCRe,MAAMiB,UAAiBC,EAAAA,UAAyBC,WAAAA,GAAA,SAAAhD,WAAAiD,EAAA,eAC7BC,EAAAA,EAAAA,cAEhCD,EAAA,yBAGAE,iBAAAA,GACEC,KAAKC,aACP,CAEAC,kBAAAA,GACEF,KAAKC,aACP,CAEAA,WAAAA,GAAc,IAAAE,EACZ,MAAM,KAAEC,EAAI,MAAEC,GAAUL,KAAKM,MAC7B,GAAIF,IAASJ,KAAKO,UAChB,OAEFP,KAAKO,UAAYH,EACjBJ,KAAKQ,OAAOC,QAASC,UAAY,GAEjC,MAAMC,GAAyC,IAA3BX,KAAKM,MAAMK,YAE/B,IAAIC,EAAgBP,EAAQ,GAAK,GAA7BO,EAAwCZ,KAAKM,MAAMO,aAAe,GAAlED,EAA8ED,EAAc,GAAK,GAAjGC,EAA2G,GAC/G,MAAME,EAAad,KAAKM,MAAMS,OAAS,IACjCC,EAAchB,KAAKM,MAAMW,QAAU,IACzC,IAAIF,EAAQD,EAAaF,EAAcA,EACnCK,EAASD,EAAcJ,EAAaA,EAExC,MAAMM,EAAIC,EAAAA,MAEPC,OAAOhB,EAAKrB,KAAKsC,GAAMA,EAAEC,QACzBC,WAAW,CAAC,EAAGR,IACfS,QAAQ,IAEX,IAAIrD,EAAMgD,EAAAA,IAAOf,GAAOiB,GAAWA,EAAEI,QAEnCtD,EADEA,EAAM,EACFgD,EAAAA,IAAOf,GAAOiB,GAAWtE,KAAKoB,IAAIkD,EAAEI,OAAQJ,EAAEI,SAE9C,EAGR,MAAMC,EAAIP,EAAAA,MAEPQ,MAAM,CAACV,EAAQ,IACfG,OAAO,CAACjD,EAAKgD,EAAAA,IAAOf,GAAOiB,GAAWtE,KAAK6E,IAAIP,EAAEI,WACjDI,OACGC,EAAU9B,KAAKM,MAAMyB,eAAiB/B,KAAKM,MAAMyB,eAAiBL,EAAEM,aAEpEC,EAAMd,EAAAA,IACFnB,KAAKQ,OAAOC,SACnByB,SAAS,QAAS,IAClBC,OAAO,KACPC,KAAK,YAAa,aAAexB,EAAc,IAAMA,EAAa,KAErE,IAAIyB,EAAQlB,EAAAA,IAAcD,GACtBoB,EAAQnB,EAAAA,IAAaO,GAAGa,MAAMtB,EAAS,IAAM,GAAK,GAItDgB,EAAIE,OAAO,KAAKC,KAAK,QAAS,QAAQI,KAFbrB,EAAAA,IAAYO,GAEmBe,UAAU1B,GAAO2B,cAAc,GAAGV,WAAW,KAErGC,EACGE,OAAO,KACPC,KAAK,QAAS,eACdA,KAAK,YAAa,eAAiBnB,EAAS,KAC5CuB,KAAKH,GAERJ,EACGU,UAAU,gBACVC,MAAM,cAAejC,EAAc,MAAQ,UAC3CyB,KAAK,KAAMzB,EAAc,QAAU,GACnCyB,KAAK,KAAMzB,EAAc,QAAU,SACnCyB,KAAK,YAAa,WAAazB,GAAe,GAAK,GAAK,KAE3DsB,EACGE,OAAO,KACPC,KAAK,QAAS,eACdA,KAAK,YAAa,aAAerB,EAAQ,QACzCyB,KAAKF,GAEJjC,GACF4B,EACGE,OAAO,QACPC,KAAK,QAAS,mBACdA,KAAK,IAAK,GACVA,KAAK,KAAM,GACXA,KAAK,cAAe,SACpBS,KAAKxC,GAGV,MAAMyC,EAAazB,IAAW,IAAA0B,EAC5B,IAAI9B,EAASlE,KAAK6E,IAAIF,EAAS,QAARqB,EAAC1B,EAAEI,aAAK,IAAAsB,EAAAA,EAAI,GAAKrB,EAAE,IAI1C,OAHIL,EAAEI,MAAQ,GAAKJ,EAAEI,MAAQ,KAC3BR,EAASlE,KAAKsB,IAAI4C,EAAQ,KAErBA,CAAM,EAET+B,EAAa/B,GAAmBA,EAAS,GACpCgB,EAAIU,UAAU,QAAQvC,KAAKA,GAEnC6C,QACAd,OAAO,QACPC,KAAK,SAAS,SAAUf,GACvB,MAAO,aAAeA,EAAEI,MAAQ,EAAI,WAAa,WACnD,IACCW,KAAK,KAAMf,GAAWH,EAAEG,EAAEC,QAC1Bc,KAAK,KAAMf,GAAWK,EAAE3E,KAAKsB,IAAI,EAAGgD,EAAEI,UACtCW,KAAK,SAAUU,GACfV,KAAK,QAASlB,EAAEgC,aAChBd,KAAK,KAAoB,QAAdjC,EAAAgD,sBAAc,IAAAhD,GAAdA,EAAgBiD,mBAAqB,EAAI,GAEvDnB,EACGU,UAAU,cACVvC,KAAKA,GACL6C,QACAd,OAAO,QACPC,KAAK,QAAS,cACdA,KAAK,KAAMf,GAAWH,EAAEG,EAAEC,MAASJ,EAAEgC,YAAc,IACnDd,KAAK,KAAMf,IACV,MAAMJ,EAAS6B,EAAUzB,GACnBgC,EAAUL,EAAU/B,GAC1B,OAAII,EAAEI,MAAQ,EACLC,EAAE3E,KAAKsB,IAAI,EAAGgD,EAAEI,QAAUR,GAAUoC,EAAU,IAAM,GAEtD3B,EAAE3E,KAAKsB,IAAI,EAAGgD,EAAEI,SAAW4B,GAAW,EAAI,GAAG,IAErDjB,KAAK,QAASf,IAAa8B,eAAeG,cAAgBN,EAAUF,EAAUzB,IAAM,QAAU,UAC9Fe,KAAK,cAAe,UACpBA,KAAK,YAAa,QAClBS,MAAMxB,GAAwB,OAAZA,EAAEI,MAAiBK,EAAQT,EAAEI,OAAS,KAE3DzB,KAAKQ,OAAOC,QAASmC,MAAM7B,MAAQD,EAAa,KAChDd,KAAKQ,OAAOC,QAASmC,MAAM3B,OAASD,EAAc,IACpD,CAEAuC,MAAAA,GACE,OACE7E,EAAAA,EAAAA,KAAA,OAEE8E,IAAKxD,KAAKQ,OACV7B,UAAW,oBAAsBqB,KAAKM,MAAM3B,WAAa,KAG/D,ECjKF,SAAS8E,EAAYC,EAAiBC,GACpC,OAAOA,EACJ5E,KAAI,CAAC0C,EAAOxC,KAAU,CACrBqC,KAAMoC,EAAUzE,EAChBwC,YAEDmC,SACL,CAaA,SAASC,EAAOC,GASC,IATA,GACfC,EAAE,MACF1D,EAAK,iBACL2D,EAAgB,iBAChBC,EAAgB,WAChBC,EAAU,WACVC,EAAU,gBACVC,EAAe,gBACfC,GACaP,EACb,MAAM1D,EAAiBkE,SAASP,GAE1B5F,EAAMpB,KAAKoB,OAAOiC,GAClB/B,EAAMtB,KAAKsB,OAAO+B,GAClBuB,EAAQtD,GAAOF,EAAME,GAAOF,EAE5BoG,EAAUxH,KAAK6E,IAAID,IAAU,IAE7B6C,EAAQD,EAAUJ,EAAaD,EAC/BP,EAASvD,EAAKrB,KAAK0C,GACd,MAATA,EAAgB,MAAOhF,EAAAA,EAAAA,IAAM+H,EAAQ/C,EAAO8C,EAAUN,EAAmBD,KAG3E,OACEtF,EAAAA,EAAAA,KAACgB,EAAQ,CACPW,MAAOA,EAAQ,KAAOkE,EAAUF,EAAkBD,GAClDhE,KAAMqD,EAAYa,SAASG,KAAMd,GACjC5B,eAAiBN,IAAUhF,EAAAA,EAAAA,IAAMgF,EAAO8C,EAAUN,EAAmBD,GACrEjD,MAAO,IACPE,OAAQ,IACRJ,YAAa,GACblC,UAAU,SAGhB,CAEe,SAAS+F,IACtB,OACEC,EAAAA,EAAAA,MAAAC,EAAAA,SAAA,CAAAhG,SAAA,EACEF,EAAAA,EAAAA,KAAA,MAAImG,MAAM,SAAQjG,UAChBF,EAAAA,EAAAA,KAACmF,EAAO,CACNE,GAAG,IACH1D,MAAM,MACN2D,iBAAkB,EAClBC,iBAAkB,EAClBC,WAAY,EACZC,WAAY,EACZC,gBAAgB,GAChBC,gBAAgB,QAGpB3F,EAAAA,EAAAA,KAAA,MAAImG,MAAM,SAAQjG,UAChBF,EAAAA,EAAAA,KAACmF,EAAO,CACNE,GAAG,IACH1D,MAAM,QACN2D,iBAAkB,EAClBC,iBAAkB,EAClBC,WAAY,EACZC,WAAY,KACZC,gBAAgB,SAChBC,gBAAgB,cAGpB3F,EAAAA,EAAAA,KAAA,MAAImG,MAAM,SAAQjG,UAChBF,EAAAA,EAAAA,KAACmF,EAAO,CACNE,GAAG,IACH1D,MAAM,qBACN2D,iBAAkB,EAClBC,iBAAkB,EAClBC,WAAY,EACZC,WAAY,KACZC,gBAAgB,QAChBC,gBAAgB,cAK1B,ghBC7EA,MAAMS,IAAoB3B,eAAeC,mBAEzC,IAAI2B,EAAkB,SAAUtD,GAC9B,OAAIA,EAAQ,EACH,yBACEA,EAAQ,EACV,yBAEF,EACT,EAEIuD,EAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAoB/F,MAAMC,UAActF,EAAAA,UAClBuF,qBAAAA,CAAsBC,GACpB,OApBc,SAAUC,EAAiBC,GAC3C,GAAID,EAAKvI,SAAWwI,EAAKxI,OACvB,OAAO,EAET,IAAK,IAAIyI,EAAI,EAAGA,EAAIF,EAAKvI,OAAQyI,IAC/B,GAAIF,EAAKE,KAAOD,EAAKC,GACnB,OAAO,EAGX,OAAO,CACT,CAUYC,CAAYvF,KAAKM,MAAMkF,QAASL,EAAUK,QACpD,CAEAjC,MAAAA,GAAS,IAAAkC,EAAAC,EACP,MAAMC,EAAQxC,eAAeG,aAAesC,EAAAA,GAAMC,KAAOD,EAAAA,GAAME,MACzDC,EAAcC,EAAAA,GAAMC,QAAeC,GAAMA,EAAEC,MAAMtJ,OAAS,GAAKmD,KAAKM,MAAMkF,QAAQY,SAASF,EAAEG,UAC7FC,GAAcC,EAAAA,EAAAA,GAAqB,CACvCF,OAA8B,QAAxBZ,EAAgB,QAAhBC,EAAEK,EAAY,UAAE,IAAAL,OAAA,EAAdA,EAAgBW,cAAM,IAAAZ,EAAAA,EAAI,GAClCe,UAAWC,EAAAA,GAAUpF,EACrBqF,aAAc,CACZ,CACEC,KAAMC,EAAAA,GAAiBC,UACvBrB,QAASxF,KAAKM,MAAMkF,QACpBsB,SAAU9G,KAAKM,MAAMyG,QACrBC,OAAQhH,KAAKM,MAAM2G,MACnBC,SAAU,KAGdC,aAAa,EACbC,2BAA4BC,EAAAA,GAA2BC,UACvD3B,UAEF,OACEjH,EAAAA,EAAAA,KAAA,OAAKqF,GAAG,QAAQnB,MAAO,CAAE7B,MAAO,KAAMnC,UACpCF,EAAAA,EAAAA,KAAC6I,EAAAA,GAAa,CAAA3I,UACZF,EAAAA,EAAAA,KAAC8I,EAAAA,GAAW,CAACC,OAAQnB,OAI7B,EAaF,MAAMoB,UAAc/H,EAAAA,UAClB4D,MAAAA,GACE,IAAI,OAAEoE,EAAM,KAAEC,GAAS5H,KAAKM,MAC1BuH,EAAc9K,KAAK+K,KAAKH,EAAO9K,OAAS,IAC1C+K,EAAOA,EAAKG,QACZ,MAAMC,EAAYC,IAAW,cAAe,CAC1C,2BAA4BnD,IAG9B,IAAIoD,EAAM,GACV,IAAK,IAAIC,EAAI,EAAGA,EAAIN,EAAaM,IAC/BD,EAAIE,MACFzD,EAAAA,EAAAA,MAAA,MAEEhG,UAAWsJ,IAAW,CACpB,kBAAmBnD,EACnB,mDAAoDA,IACnDlG,SAAA,EAEHF,EAAAA,EAAAA,KAAA,MAAIC,UAAWqJ,IACdL,EAAOU,OAAO,EAAG,IAAItJ,KAAKuJ,IACzB5J,EAAAA,EAAAA,KAAA,MAAgBC,UAAWqJ,EAAUpJ,SAClC0J,GADMA,KAIVH,IAAMN,EAAc,IAAKnJ,EAAAA,EAAAA,KAAA,MAAIC,UAAWqJ,EAAUpJ,SAAC,YAZ/CuJ,IAeTP,EAAKW,SAAQ,CAACC,EAAKlD,KACjB4C,EAAIE,MACFzD,EAAAA,EAAAA,MAAA,MAEEhG,UAAWsJ,IAAW,CACpB,oCAAqCnD,EACrC,mBAAoBA,GAAmBQ,EAAI,GAAM,EACjD,kBAAmBR,GAAmBQ,EAAI,GAAM,EAChD,iBAAkBR,GAAmBQ,EAAI,GAAM,IAC9C1G,SAAA,EAEHF,EAAAA,EAAAA,KAAA,MAAIC,UAAWsJ,IAAW,YAAa,CAAE,iBAAkBnD,IAAmBlG,SAAE4J,EAAInC,SACnFmC,EAAIb,OAAOU,OAAO,EAAG,IAAItJ,KAAI,CAAC0J,EAAKC,KAClChK,EAAAA,EAAAA,KAAA,MAEEC,UAAWsJ,IAAW,aAAclD,EAAgB4D,WAAWF,IAAO,CACpE,iBAAkB3D,IACjBlG,SAEF6J,GAAG,GAAAG,OALIJ,EAAInC,OAAM,KAAAuC,OAAIH,EAAG,KAAAG,OAAIF,MAQhCP,IAAMN,EAAc,IACnBnJ,EAAAA,EAAAA,KAAA,MACEC,UAAWsJ,IAAW,aAAclD,EAAgB4D,WAAWH,EAAIK,QAAS,CAC1E,iBAAkB/D,IACjBlG,SAEF4J,EAAIK,UAER,GAAAD,OA3BOT,EAAC,KAAAS,OAAItD,IA6BhB,IAIL,OACE5G,EAAAA,EAAAA,KAAA,SACEC,UAAWsJ,IAAW,CACpB,+CAAgDnD,EAChD,cAAeA,IAEjBgE,YAAY,IACZC,YAAY,IAEZC,OAAO,IAAGpK,UAEVF,EAAAA,EAAAA,KAAA,SAAAE,SAAQsJ,KAGd,EAyBK,MAAMe,UAAatJ,EAAAA,UAGxBC,WAAAA,CAAYU,GAAY,IAAA4I,EACtBC,MAAM7I,GAAM4I,EAAAlJ,KAAAH,EAAA,oBAHCuJ,EAAAA,aAAiCvJ,EAAA,sBAgMhC,KACdG,KAAKqJ,OAAOrJ,KAAKsJ,MAAM9D,SAAS,EAAM,IACvC3F,EAAA,wBAiBiB,KAChB,MAAM,QAAEkH,EAAO,MAAEE,GAAUjH,KAAKsJ,MAEhC,IAAKvC,IAAYE,EACf,OAGF,MAAMsC,EAAcvD,EAAAA,GAAMC,QAAQC,GAA2B,MAAhBA,EAAEM,YACzCM,EAAW,IAAI1I,KAAK2I,EAAU,UAC9BC,EAAS,IAAI5I,KAAK6I,EAAQ,UAChCsC,EAAYhB,SAASrC,IACnB,MAAMsD,EAAI,GACRC,EAAI,GACJC,EAAI,GACJC,EAAI,GACJtI,EAAI,GACJuI,EAAI,GACN,IAAK,IAAItE,EAAI,EAAGA,EAAIY,EAAEC,MAAMtJ,OAAQyI,IAAK,CACvC,MAAMuE,EAAOC,EAAAA,GAAMC,sBAAsB7D,EAAE2D,KAAKvE,IAC5CwB,GAAY+C,GAAQA,GAAQ7C,IAC9BwC,EAAEpB,KAAKlC,EAAE8D,KAAK1E,IACdmE,EAAErB,KAAKlC,EAAE+D,KAAK3E,IACdoE,EAAEtB,KAAKlC,EAAEgE,IAAI5E,IACbqE,EAAEvB,KAAKlC,EAAEC,MAAMb,IACfjE,EAAE+G,KAAKlC,EAAE2D,KAAKvE,IACdsE,EAAExB,KAAKlC,EAAEiE,OAAO7E,IAEpB,CACAY,EAAEkE,iBAAiB,CACjBJ,KAAMR,EACNS,KAAMR,EACNS,IAAKR,EACLvD,MAAOwD,EACPE,KAAMxI,EACN8I,OAAQP,GACR,IAIJ5J,KAAKqK,aAAa,IACnBxK,EAAA,eAEQyK,eAAO9E,GAAwC,IAArB+E,IAAS3N,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAC1C,MAAM,EAAE4N,IAAMC,EAAAA,EAAAA,KAmBd,GAlBIF,GACFrB,EAAKwB,SAAS,CAAEC,SAAS,IAG3B3E,EAAAA,GAAM4E,MAAMrC,SAAQ+B,WACdO,EAAMxE,SAAWmE,GAAyB,MAApBK,EAAMrE,WAAsB+D,KAKlD/E,EAAQY,SAASyE,EAAMxE,eACnBwE,EAAMC,UAAU,CAAEC,UAAWR,EAAYS,EAAAA,GAAeC,QAAUD,EAAAA,GAAeE,YACvFhC,EAAKiC,mBAELN,EAAMO,UACR,IAGEb,EAAW,CACb,IAAIlJ,EAAImE,EAAQzG,KAAKsH,IAAM,CAAQA,OAAQA,EAAQG,UAAWC,EAAAA,GAAUpF,EAAGgK,WAAYC,EAAAA,GAAWC,UAC9FC,EAAIhG,EAAQzG,KAAKsH,IAAM,CAAQA,OAAQA,EAAQG,UAAWC,EAAAA,GAAU+E,EAAGH,WAAYC,EAAAA,GAAWC,gBAC5FvF,EAAAA,GAAMyF,OAAOpK,EAAEuH,OAAO4C,IAE5BtC,EAAKwB,SACH,CACEC,SAAS,IAEX,KAAM,IAAAe,EACqB,QAAzBA,EAAAxC,EAAKyC,aAAalL,eAAO,IAAAiL,GAAzBA,EAA2B9I,MAAMgJ,eAAe,aAAa,GAGnE,CAEA1C,EAAKiC,iBACP,IAACtL,EAAA,kBAEYgM,IACXA,EAAEC,iBACF,MAAMC,GAAeC,EAAAA,EAAAA,GAAmBhM,KAAKsJ,MAAMyC,cAAc,GAC3DvG,EAAUuG,EAAaE,MAAM,KACnCjM,KAAK0K,SAAS,CAAElF,UAASuG,iBAAgB,KACvC/L,KAAKqJ,OAAO7D,EAAQ,GACpB,IACH3F,EAAA,uBAEgB,CAAC8G,EAAckF,KAC9B,IAAIvC,EAAa,CAAC,EAClBA,EAAM3C,EAAO,SAAW3G,KAAKsJ,MAAM3B,OAAOuE,QAAQV,GAAMA,EAAE/J,QAAUoK,EAAEM,OAAO1K,QAAO,GACpFzB,KAAK0K,SAASpB,EAAM,IACrBzJ,EAAA,4BAEqB,CAAC8G,EAAckD,KACnC,IAAIuC,GAAgBC,EAAAA,EAAAA,IAAqB,IAAIjO,KAAKyL,IAE9CP,EAAa,CAAC,EAClBA,EAAM3C,EAAO,OAASyF,EACtB9C,EAAM3C,EAAO,mBAAoB,EACjC3G,KAAK0K,SAASpB,GAAO,KACnBtJ,KAAKqJ,OAAOrJ,KAAKsJ,MAAM9D,QAAQ,GAC/B,IACH3F,EAAA,wBAEkB8G,IACjB,IAAI2C,EAAa,CAAC,EAClBA,EAAM3C,EAAO,mBAAoB,EACjC3G,KAAK0K,SAASpB,EAAM,IA5TpB,IAAIgD,EAAM,IAAIlO,KACZuJ,EAAS,GAEX,IAAK,IAAIlD,GADS,IAAIrG,MAAOmO,cAAgB,GAClB9H,GAAQ6H,EAAIC,cAAe9H,IACpD,IAAK,IAAI6D,EAAQ,EAAGA,GAAS,MACvB7D,IAAS6H,EAAIC,eAAiBjE,EAAQgE,EAAIE,WAAa,GAD5BlE,IAI/BX,EAAOS,KAAK,CACV3G,MAAO6G,EAAMmE,WAAWC,SAAS,EAAG,KAAO,OAASjI,EACpDkI,MAAO3H,EAAWsD,EAAQ,GAAK,IAAM7D,EAAKgI,WAAWG,UAAU,KAKrE5M,KAAKsJ,MAAQ,CACXyC,aAAcc,mBAAmBC,KAAK,KACtCtH,QAASqH,mBACTlF,OAAQA,EACRoF,UAAWpF,EAAOA,EAAO9K,OAAS,IAClCmQ,QAASrF,EAAOA,EAAO9K,OAAS,GAMhCoQ,SAASZ,EAAAA,EAAAA,IAAqBa,EAAAA,EAAY,IAAI9O,KAAQ,CAAE+O,MAAO,EAAGxF,OAAQ,MAC1EyF,SAASf,EAAAA,EAAAA,IAAqB,IAAIjO,MAClC2I,SAASsF,EAAAA,EAAAA,IAAqBa,EAAAA,EAAiB,IAAI9O,KAAQ,IAC3D6I,OAAOoF,EAAAA,EAAAA,IAAqB,IAAIjO,MAChCuM,SAAS,EAEb,CAEApH,MAAAA,GACE,GAAIvD,KAAKsJ,MAAMqB,QACb,OACEjM,EAAAA,EAAAA,KAAA,OACEC,UAAU,wCACViE,MAAO,CACLyK,UAAWlK,eAAeC,mBAAqB,IAAM,KACrDxE,SACH,eAML,IAAIE,EAAO,IAAIV,KAAK4B,KAAKsJ,MAAMyD,UAAUtL,OACrC6L,EAAK,IAAIlP,KAAK4B,KAAKsJ,MAAM0D,QAAQvL,OACjC8L,EAAevN,KAAKsJ,MAAM3B,OAC3B5I,KAAKuJ,GAAUA,EAAM7G,QACrByK,QAAQ5D,GAAU,IAAIlK,KAAKkK,IAAUxJ,GAAQ,IAAIV,KAAKkK,IAAUgF,IAG/DE,EADSxH,EAAAA,GAAMC,QAAQC,GAA2B,MAAhBA,EAAEM,YAChBzH,KAAKmH,IAC3B,IAAIuH,EAAwD,CAAEpH,OAAQH,EAAEG,OAAQqH,KAAM,CAAC,GASvF,OARAxH,EAAE2D,KAAKtB,SAAQ,CAAClH,EAAQiE,KACtB,GAAU,IAANA,EAAJ,CAGA,IAAIuE,EAAOC,EAAAA,GAAMC,sBAAsB1I,GACnCqM,EAAqB,IAAbxH,EAAEC,MAAMb,GAAYY,EAAEC,MAAMb,EAAI,GAAK,IACjDmI,EAAIC,MAAM7D,EAAK2C,WAAa,GAAGC,WAAWC,SAAS,EAAG,KAAO,OAAS7C,EAAK0C,eAAiBmB,CAH5F,CAGgG,IAE3FD,CAAG,IAGR9F,EAAS4F,EAAaxO,KACvBuJ,GAAUtD,EAAW,IAAI5G,KAAKkK,GAAOkE,YAAc,IAAM,IAAIpO,KAAKkK,GAAOiE,cAAcE,WAAWG,UAAU,KAE3GhF,EAAO4F,EAAWzO,KAAK8L,IACzB,IAAI8C,EAAiB,GACjB9E,EAAQ,EAWZ,OAVA0E,EAAahF,SAASD,IACpB,IAAIoF,EAAO3Q,KAAKN,MAA0B,IAApBoO,EAAM6C,KAAKpF,IAAgB,IAC5CsF,MAAMF,GAITC,EAAKvF,KAAK,QAHVS,GAASgC,EAAM6C,KAAKpF,GAAS,IAAM,EACnCqF,EAAKvF,MAAMsF,EAAO,EAAI,IAAM,IAAMA,EAAKzQ,QAAQ,GAAK,KAGtD,IAEF4L,EAAsB,KAAbA,EAAQ,GACV,CAAExC,OAAQwE,EAAMxE,OAAQsB,OAAQgG,EAAM9E,OAAQA,EAAQ,EAAI,IAAM,IAAMA,EAAM5L,QAAQ,GAAK,IAAK,IAGvG,OACE0H,EAAAA,EAAAA,MAAA,OAAKnB,IAAKxD,KAAK2L,aAAchN,UAAU,oCAAoCiE,MAAO,CAAEyK,UAAW,KAAMzO,SAAA,EACnGF,EAAAA,EAAAA,KAAA,QAAMmP,SAAU7N,KAAK8N,UAAWlL,MAAO,CAAEmL,aAAc,IAAKnP,UAC1DF,EAAAA,EAAAA,KAAA,SAAOC,UAAU,2BAA0BC,UACzCF,EAAAA,EAAAA,KAAA,SAAAE,UACE+F,EAAAA,EAAAA,MAAA,MAAA/F,SAAA,EACEF,EAAAA,EAAAA,KAAA,MAAAE,SAAI,cACJF,EAAAA,EAAAA,KAAA,MAAIqC,MAAM,OAAO6B,MAAO,CAAEpB,QAAS,SAAU5C,UAC3CF,EAAAA,EAAAA,KAAA,SACEC,UAAU,WACVgI,KAAK,OACLlF,MAAOzB,KAAKsJ,MAAMyC,aAClBiC,SAAWnC,IACT7L,KAAK0K,SAAS,CAAEqB,aAAcF,EAAEM,OAAO1K,OAAQ,EAEjDmB,MAAO,CAAE7B,MAAO,QAChB,cAAY,wCAGhBrC,EAAAA,EAAAA,KAAA,MAAAE,UACEF,EAAAA,EAAAA,KAAA,SACEC,UAAU,qBACVgI,KAAK,SACLlF,MAAM,SACN,cAAY,4DAQxB/C,EAAAA,EAAAA,KAACuG,EAAK,CAACO,QAASxF,KAAKsJ,MAAM9D,QAASuB,QAAS/G,KAAKsJ,MAAMvC,QAASE,MAAOjH,KAAKsJ,MAAMrC,SAEnFtC,EAAAA,EAAAA,MAAA,QACEhG,UAAU,cACViE,MAAO,CAAEqL,SAAU,WAAYC,IAAK,GAAIC,MAAOrJ,EAAkB,GAAK,GAAIsJ,SAAU,IACpF,cAAY,sCAAqCxP,SAAA,EAEjDF,EAAAA,EAAAA,KAAA,OAAKkE,MAAO,CAAEqL,SAAU,WAAYlN,MAAO,GAAIsN,QAAS,gBAAiBzP,UACvEF,EAAAA,EAAAA,KAAC4P,EAAAA,EAAU,CACTrB,QAAS,IAAI7O,KAAK4B,KAAKsJ,MAAM2D,SAC7BG,QAAS,IAAIhP,KAAK4B,KAAKsJ,MAAM8D,SAC7B3L,MAAO,IAAIrD,KAAK4B,KAAKsJ,MAAMvC,SAC3BiH,SAAWO,IACTvO,KAAKwO,oBAAoB,QAAQnC,EAAAA,EAAAA,IAAqBkC,GAAU,EAChE3P,UAEFF,EAAAA,EAAAA,KAAA,SAAOiI,KAAK,QAAQ8H,UAAQ,EAAC9P,UAAU,kBAAkB8C,MAAOzB,KAAKsJ,MAAMvC,cAG9E,OACDrI,EAAAA,EAAAA,KAAA,OAAKkE,MAAO,CAAEqL,SAAU,WAAYlN,MAAO,GAAIsN,QAAS,gBAAiBzP,UACvEF,EAAAA,EAAAA,KAAC4P,EAAAA,EAAU,CACTrB,QAAS,IAAI7O,KAAK4B,KAAKsJ,MAAM2D,SAC7BG,QAAS,IAAIhP,KAAK4B,KAAKsJ,MAAM8D,SAC7B3L,MAAO,IAAIrD,KAAK4B,KAAKsJ,MAAMrC,OAC3B+G,SAAWO,IACTvO,KAAKwO,oBAAoB,MAAMnC,EAAAA,EAAAA,IAAqBkC,GAAU,EAC9D3P,UAEFF,EAAAA,EAAAA,KAAA,SAAOiI,KAAK,QAAQ8H,UAAQ,EAAC9P,UAAU,kBAAkB8C,MAAOzB,KAAKsJ,MAAMrC,gBAKjFtC,EAAAA,EAAAA,MAAA,MAAIhG,UAAU,2BAA2B,cAAY,mDAAkDC,SAAA,CAAC,8BAEtGF,EAAAA,EAAAA,KAAA,UACEC,UAAU,YACV8C,MAAOzB,KAAKsJ,MAAMyD,UAAUtL,MAC5BuM,SAAUhO,KAAK0O,eAAeC,KAAK3O,KAAM,QACzC4C,MAAO,CAAEgM,WAAY,UAAWhQ,SAE/BoB,KAAKsJ,MAAM3B,OAAO5I,KAAK8P,IACtBnQ,EAAAA,EAAAA,KAAA,UAA2B+C,MAAOoN,EAAOpN,MAAM7C,SAC5CiQ,EAAOlC,OADGkC,EAAOpN,WAIf,UAET/C,EAAAA,EAAAA,KAAA,UACEC,UAAU,YACV8C,MAAOzB,KAAKsJ,MAAM0D,QAAQvL,MAC1BuM,SAAUhO,KAAK0O,eAAeC,KAAK3O,KAAM,MACzC4C,MAAO,CAAEgM,WAAY,UAAWhQ,SAE/BoB,KAAKsJ,MAAM3B,OAAO5I,KAAK8P,IACtBnQ,EAAAA,EAAAA,KAAA,UAA2B+C,MAAOoN,EAAOpN,MAAM7C,SAC5CiQ,EAAOlC,OADGkC,EAAOpN,eAM1B/C,EAAAA,EAAAA,KAACgJ,EAAK,CAACC,OAAQA,EAAQC,KAAMA,KAE7BlJ,EAAAA,EAAAA,KAAA,WAGN,CAMAqB,iBAAAA,GACEC,KAAKqJ,OAAOrJ,KAAKsJ,MAAM9D,SAKvBQ,EAAAA,GAAM2I,KAAK,oBAAqB3O,KAAKmL,iBACrC2D,SAASC,iBAAiB,kBAAmB/O,KAAKgP,cACpD,CAEAC,oBAAAA,GACEjJ,EAAAA,GAAMkJ,OAAO,oBAAqBlP,KAAKmL,iBACvC2D,SAASK,oBAAoB,kBAAmBnP,KAAKgP,cACvD,iEC5YK,SAASI,EAAUtL,GAA2E,IAA1E,MAAEzD,EAAK,KAAEwJ,EAAI,UAAEwF,EAAS,MAAEC,EAAK,UAAEC,EAAS,UAAEC,GAA4B1L,EACjG,MAAM2L,GAAa7B,MAAM0B,IAAUA,EAAQ,EAAI,EAAI,EAC7CI,EAAWH,GAAavS,OAAO2S,SAASJ,GAE9C,OACE5K,EAAAA,EAAAA,MAAA,OAAKhG,UAAU,cAAaC,SAAA,CACzByB,IAAS3B,EAAAA,EAAAA,KAAA,OAAKC,UAAU,UAASC,SAAEyB,KAElCwJ,GAAQwF,KACR1K,EAAAA,EAAAA,MAAA,QAAMhG,UAAU,mBAAkBC,SAAA,CAC/ByQ,QAAAA,GAAaO,EAAAA,EAAAA,IAAW/F,EAAM,GAAI,UAClCA,IACClF,EAAAA,EAAAA,MAAAC,EAAAA,SAAA,CAAAhG,SAAA,CACG,KACDF,EAAAA,EAAAA,KAAA,QAAMC,UAAU,eAAcC,SAAC,MAAQ,KAAEgR,EAAAA,EAAAA,IAAW/F,EAAM,GAAI,WAAW,aAMjFlF,EAAAA,EAAAA,MAAA,OAAKhG,UAAU,sBAAqBC,SAAA,EAClCF,EAAAA,EAAAA,KAAA,UAAQC,UAAU,4BAA2BC,UAAEiR,EAAAA,EAAAA,IAAaP,EAAO,CAAEQ,aAAc,IAAKL,iBACxF/Q,EAAAA,EAAAA,KAAA,OAAKC,UAAU,6BAA4BC,UACzC+F,EAAAA,EAAAA,MAACoL,EAAAA,EAAiB,CAAAnR,SAAA,EAChB+F,EAAAA,EAAAA,MAACqL,EAAAA,EAAY,CAACvO,MAAO8N,EAAW5Q,UAAWsJ,IAAW,CAAE,gBAAiByH,IAAY9Q,SAAA,EACnFF,EAAAA,EAAAA,KAAA,OAAKC,UAAU,UAASC,SAAC,mBACxBiR,EAAAA,EAAAA,IAAaN,EAAW,CAAEU,cAAc,EAAMR,kBAEjD9K,EAAAA,EAAAA,MAACqL,EAAAA,EAAY,CACXvO,MAAO+N,EACP7Q,UAAWsJ,IAAW,CAAE,gBAAiByH,IACzCQ,cAAcxR,EAAAA,EAAAA,KAAA,QAAMC,UAAU,cAAaC,SAAC,MAASA,SAAA,EAErDF,EAAAA,EAAAA,KAAA,OAAKC,UAAU,UAASC,SAAC,uBACxBiR,EAAAA,EAAAA,IAAaL,gBAO5B,CCxDO,MAAMW,EAAoB,yBACpBC,EAAwB,sBCc9B,SAASC,EAAuBC,GACrClH,EAAAA,WAAgB,KAXlB,IACqBmH,EAAAC,EAGZC,EAAAC,EAQcJ,GAV0B,QAA7CC,EAAAzB,SAAS6B,cAAcP,UAAsB,IAAAG,GAA7CA,EAA+CK,UAAUC,IAAI,UACnB,QAA1CL,EAAA1B,SAASgC,eAAeX,UAAkB,IAAAK,GAA1CA,EAA4CI,UAAUG,OAAO,YAEhB,QAA7CN,EAAA3B,SAAS6B,cAAcP,UAAsB,IAAAK,GAA7CA,EAA+CG,UAAUG,OAAO,UACtB,QAA1CL,EAAA5B,SAASgC,eAAeX,UAAkB,IAAAO,GAA1CA,EAA4CE,UAAUC,IAAI,UAM9B,GAC3B,CAACP,GACN,CAEA,MAAMU,EAAsB,CAAC,SAAU,UACjCC,EAA4B,IAAID,EAAqB,UAAW,aAW/D,SAASE,GAAsBC,GAAmD,IAAAC,EACvF,MAAMC,GAAaC,EAAAA,EAAAA,IAAcH,aAAgB,EAAhBA,EAAkBI,SAASC,QAAS,CACnEC,gBAAiB,CAAC,SAClBC,eAAgBV,IAEZW,GAAaL,EAAAA,EAAAA,IAAiC,QAApBF,EAACC,aAAU,EAAVA,EAAYxG,eAAO,IAAAuG,EAAAA,EAAI,KAAM,CAC5DK,gBAAiB,CAAC,YAAa,YAAa,aAAc,aAC1DC,eAAgBT,IAGlB,OAAKU,EAEE,CACLC,UAAWD,EAAWC,UACtBC,UAAWF,EAAWE,UACtBC,SAAUH,EAAWG,SACrBC,SAAUJ,EAAWI,SACrBC,WAAYL,EAAWK,WACvBC,UAAWN,EAAWM,WARA,IAU1B,CC7CO,SAASC,KACd,MAAM,iBAAEf,IAAqBgB,EAAAA,EAAAA,MACvB/R,EAAO8Q,GAAsBC,GAEnC,OAAOzS,EAAAA,EAAAA,KAAC0T,GAAkB,CAAChS,KAAMA,GACnC,CA+CO,MAAMiS,IAAwBC,EAAAA,EAAAA,KAA4BC,EAAAA,EAAAA,KAxCjE,SAAuCzO,GAA+D,IAA9D,iBAAEqN,EAAgB,OAAE1J,GAAwC3D,EAClG,MAAM1D,EAAO8Q,GAAsBC,GAoCnC,OA5BA/H,EAAAA,WAAgB,MACdkB,iBACE,IAAK,MAAMhE,KAAemB,EAAO8J,OAAQ,CACvC,MAAMiB,EAAkBvU,OAAOwU,OAAO,CAAC,EAAGnM,GAE1CkM,EAAgBE,aAAevB,SACxBqB,EAAgBG,MACY,MAA/BH,EAAgBrL,cAClBqL,EAAgBrL,aAAc,GAEhCgK,EAAiBI,SAASqB,OAAOJ,EACnC,CAEA,MAAMK,EAAQ1B,EAAiBI,SAASC,QAElC3G,QAAc7E,EAAAA,GAAM8M,IAAI,CAC5BzM,OAAQwM,EAAMxM,OACdgF,WAAYwH,EAAMxH,WAClB7E,UAAWqM,EAAMrM,UACjBuM,QAAS,CAAEC,QAAS,KAGtBH,EAAMzI,iBAAiB,CAAES,SAC3B,CAEAoI,EAAyB,GACxB,CAAC9B,EAAkB1J,EAAO8J,UAEtB7S,EAAAA,EAAAA,KAAC0T,GAAkB,CAAChS,KAAMA,GACnC,KAIO,SAASgS,GAAkBc,GAAiD,IAAhD,KAAE9S,GAA4C8S,EAM/E,GAFA7C,IAAyBjQ,IAEpBA,EAAM,OAAO,KAElB,MAAM+S,EAAWnW,OAAO2S,SAASvP,EAAKwR,WAChCwB,EAAgBpW,OAAO2S,SAASvP,EAAK4R,aAAe5R,EAAK4R,aAAe5R,EAAKyR,UAC7EC,EAAW1R,EAAK0R,UAAWuB,EAAAA,EAAAA,GAAwB,IAAhBjT,EAAK0R,UAAmB,KAC3DC,GAAYD,GAAY1R,EAAK2R,UAAWnC,EAAAA,EAAAA,IAAWxP,EAAK2R,SAAU,WAAY,gBAAkB,KAChGuB,EAAYlT,EAAK6R,WAAYoB,EAAAA,EAAAA,GAAyB,IAAjBjT,EAAK6R,WAAoB,KAEpE,IAAIsB,EAMJ,OALIzB,GAAYwB,IAETC,ECtDM,SAAkBC,EAAWC,IAC1C,EAAAC,EAAA,GAAa,EAAG9W,WAChB,IAAIiN,GAAO,EAAA7C,EAAA,GAAOwM,GACdG,GAAgB,EAAA3M,EAAA,GAAOyM,GAC3B,OAAO5J,EAAK+J,UAAYD,EAAcC,SACxC,CDgDQ1G,CAAiBoG,EAAWxB,GAA6B,YACtC,gBAIvBnN,EAAAA,EAAAA,MAAAC,EAAAA,SAAA,CAAAhG,SAAA,CACGuU,IACCzU,EAAAA,EAAAA,KAAC0Q,EAAU,CACT/O,MAAM,aACNiP,MAAOlP,EAAKyR,UACZhI,KAAMiI,EACNzC,UAAW0C,EACXxC,UAAWnP,EAAKyR,UAAYzR,EAAKwR,UACjCpC,UAAmD,KAAvCpP,EAAKyR,UAAYzR,EAAKwR,UAAY,KAGjDwB,IACC1U,EAAAA,EAAAA,KAAC0Q,EAAU,CACT/O,MAAK,GAAAuI,OAAK2K,EAAe,UACzBjE,MAAOlP,EAAK4R,WACZnI,KAAMyJ,EACNjE,UAAWkE,EACXhE,UAAWnP,EAAK4R,WAAa5R,EAAKyR,UAClCrC,UAAoD,KAAxCpP,EAAK4R,WAAa5R,EAAKyR,UAAY,OAKzD,yGEvGO,IAAKgC,GAAmB,SAAnBA,GAAmB,OAAnBA,EAAmB,sCAAnBA,EAAmB,0BAAnBA,EAAmB,YAAnBA,EAAmB,YAAnBA,EAAmB,wBAAnBA,EAAmB,sCAAnBA,CAAmB,MASnBC,GAAkB,SAAlBA,GAAkB,OAAlBA,EAAkB,QAAlBA,EAAkB,MAAlBA,EAAkB,MAAlBA,EAAkB,MAAlBA,EAAkB,QAAlBA,EAAkB,QAAlBA,CAAkB,MASvB,MAAMC,GAAuB,CAClC,CAACD,GAAmBE,IAAKH,GAAoBI,kBAC7C,CAACH,GAAmBnK,GAAIkK,GAAoBK,YAC5C,CAACJ,GAAmBpK,GAAImK,GAAoBM,KAC5C,CAACL,GAAmBtK,GAAIqK,GAAoBO,KAC5C,CAACN,GAAmBO,IAAKR,GAAoBS,WAC7C,CAACR,GAAmBS,IAAKV,GAAoBW,mBAGlCC,GAAuB,CAClC,CAACZ,GAAoBI,mBAAoBH,GAAmBE,GAC5D,CAACH,GAAoBK,aAAcJ,GAAmBnK,EACtD,CAACkK,GAAoBM,MAAOL,GAAmBpK,EAC/C,CAACmK,GAAoBO,MAAON,GAAmBtK,EAC/C,CAACqK,GAAoBS,YAAaR,GAAmBO,GACrD,CAACR,GAAoBW,mBAAoBV,GAAmBS,IAGjDG,GAAa,CAAC,oBAAqB,cAAe,QAElDC,GAAgB,CAC3B,CAAEC,KAAM,iBAAkBnT,MAAOoS,GAAoBK,YAAavH,MAAO,UACzE,CAAEiI,KAAM,gBAAiBnT,MAAOoS,GAAoBM,KAAMxH,MAAO,QACjE,CAAEiI,KAAM,gBAAiBnT,MAAOoS,GAAoBO,KAAMzH,MAAO,QACjE,CAAEiI,KAAM,kBAAmBnT,MAAOoS,GAAoBW,kBAAmB7H,MAAO,iBAChF,CAAEiI,KAAM,sBAAuBnT,MAAOoS,GAAoBS,WAAY3H,MAAO,gBC1C/E,MAAMkI,GAAc1R,eAAeC,mBAE5B,SAAS0R,GAAgBhR,GAAwC,IAAvC,UAAEiR,GAAmCjR,EACpE,MAAM,WAAEkR,EAAU,YAAEC,EAAW,8BAAEC,GCO5B,SAAsBpR,GAAwC,IAAvC,UAAEiR,GAAmCjR,EACjE,MAAMqR,GAAWC,EAAAA,GAAAA,OACX,EAAEC,EAAC,EAAE7K,EAAC,GAAE8K,EAAE,GAAEC,EAAE,EAAEC,EAAI,IAAG,EAAEC,IAAMhL,EAAAA,EAAAA,GAAkB0K,EAASO,QAC1DC,EAAQL,EAAKtY,OAAO4Y,SAASN,GAAM,GAClCO,EAA4BX,GAAiC9L,EAAAA,WAE9D0M,EAAqB1M,EAAAA,aACxBzC,GACKoO,GAAaL,GAAWtO,SAASO,GAC5B,eAAPiC,QAAsBmN,EAAAA,EAAAA,GAAkB,CACtCV,IACA7K,IACAiL,IACAF,GACE5O,IAASkN,GAAoBI,kBACzBQ,GAAqBP,YACrBO,GAAqB9N,GAC3B2O,GAAI3O,IAASkN,GAAoBK,YAAc,IAAM,IACrDsB,OAGG,eAAP5M,QAAsBmN,EAAAA,EAAAA,GAAkB,CACtCC,WAAY,SACZC,WAAY,SACZC,aAAc,8BAGlB,CAACnB,EAAWM,EAAG7K,EAAGiL,EAAGD,IAGjBR,EAAa5L,EAAAA,SACjB,IAEI,CACG2L,EAA+F,KAAnF,CAAEH,KAAM,iBAAkBnT,MAAO,oBAAqBkL,MAAO,sBACvEgI,GAAc5V,KAAK4H,GACnBoO,GAA4B,gBAAfpO,EAAKlF,MAAoEkF,EAA1C,IAAKA,EAAMgG,MAAO,wBAEjET,OAAOiK,SACTpX,KAAKqX,IAAI,IACNA,EACHC,KAAMP,EAAmBM,EAAK3U,OAC9B6U,gBAAiBvB,OAErB,CAACe,EAAoBf,IAqBvB,MAAO,CAAEE,YAlBW7L,EAAAA,SAClB,IACE4L,EAAWuB,MAAM5P,IAAS,IAAAuM,EACxB,GAAI2C,EACF,OAAOlP,EAAKlF,QAAUoU,EAGxB,MAAMW,EACqF,QAD1EtD,EACbqC,GAAyCxB,GAAqBwB,UAAyB,IAAArC,EAAAA,EACxFuD,uBAEH,OAAQ1B,GAAayB,IAAgB3C,GAAoBK,aAAyB,IAAVyB,EAEpEhP,EAAKlF,QAAU+U,EADf7P,EAAKlF,QAAUoS,GAAoBI,iBACT,KAElC,CAACe,EAAYa,EAA4BN,EAAIR,EAAWY,IAGpCX,aAAYE,gCACpC,CDzEqEwB,CAAc,CAAE3B,cAEnF,OACErW,EAAAA,EAAAA,KAACiY,GAAAA,GAAM,CACLC,KAAK,SACL,cAAY,oBACZ,aAAW,aACXjY,UAAU,cACV8C,MAAOwT,EACP4B,YAAa5B,GAAcvW,EAAAA,EAAAA,KAACoY,GAAAA,GAAI,CAACxV,KAAM2T,EAAYL,KAAMjW,UAAU,uBAAqB7B,EACxFia,SAAUlC,QAAc/X,EAAY,OACpCkR,SAAUkF,IAAA,IAAC,MAAEzR,GAAOyR,EAAA,OAAKgC,EAA8BzT,EAAM,EAC7DuV,MAAOhC,GAGb,CERA,MAAMH,GAAc1R,eAAeC,mBAE5B,SAAS6T,GAASnT,GAA8D,IAA7D,MAAE7E,EAAK,mBAAEiY,EAAkB,sBAAEC,GAA8BrT,EACnF,MAAM,EAAE0G,EAAC,GAAE+K,EAAE,EAAEC,IAAM/K,EAAAA,EAAAA,KACf2M,EAAa5M,EAAEyB,MAAM,KACrB8I,EAAY5R,eAAekU,eAEjC,OACE1S,EAAAA,EAAAA,MAAA,OACEhG,UAAWsJ,IAAW,gDAAiD,CACrE,6BAA8B9E,eAAeC,qBAC5CxE,SAAA,EAEHF,EAAAA,EAAAA,KAAA,OAAKC,UAAU,WACP,MAAP4W,GAAqB,OAAPA,IACb5Q,EAAAA,EAAAA,MAAAC,EAAAA,SAAA,CAAAhG,SAAA,EACEF,EAAAA,EAAAA,KAAA,OAAKC,UAAU,8BAA6BC,UAC1CF,EAAAA,EAAAA,KAACoW,GAAgB,CAACC,UAAWA,OAE/BrW,EAAAA,EAAAA,KAAA,OAAKC,UAAU,+CAA8CC,UAC3DF,EAAAA,EAAAA,KAAC4Y,EAAAA,GAAmB,CAAA1Y,UAClBF,EAAAA,EAAAA,KAAC6Y,EAAAA,GAAuB,CACtBX,KAAK,SACL7B,UAAWA,EACXyC,qBAAsBN,EACtBO,kBAAmBP,OAAqBpa,EAAYqa,EACpDO,yBAAuB,YAMjChZ,EAAAA,EAAAA,KAAA,OAAKC,UAAU,0BAAyBC,SAC9B,MAAP2W,GAAqB,OAAPA,GACb7W,EAAAA,EAAAA,KAACiZ,GAAAA,EAAM,CACLZ,SAAUlC,QAAc/X,EAAY,OACpC+Z,YAAY,QACZD,KAAK,SACLjY,UAAU,mBACV,cAAY,wBACZ,aAAYM,EACZ,cAAamY,EAAWnY,GACxB,iBAAgBuW,EAAE5W,SACnB,UAGC,SAIZ,8DCxDIgZ,GAAgB,gBAChBC,GAAiB,iBACjBC,GAAc,cACdC,GAAkB,kBAClBC,GAAgB,CAClBC,SAAS,EACTC,SAAS,GAEPC,GAA0B,WAC5B,OAAOrJ,SAASsJ,IAClB,EAKA,SAASC,GAAwB5W,EAAOxC,EAAO6Q,GAC7C,GAAIjR,MAAMyZ,QAAQ7W,GAAQ,CACxB,IAAImI,EAAInI,EAAMxC,GACd,OAAY,MAAL2K,EAAY/K,MAAMyZ,QAAQxI,GAAgBA,EAAa7Q,GAAS6Q,EAAelG,CACxF,CAEA,OAAOnI,CACT,CACA,SAAS8W,GAAO9W,EAAOkF,GACrB,IAAI6R,EAAM,CAAC,EAAE/L,SAASjK,KAAKf,GAC3B,OAAkC,IAA3B+W,EAAIC,QAAQ,YAAoBD,EAAIC,QAAQ9R,EAAO,MAAQ,CACpE,CACA,SAAS+R,GAAuBjX,EAAOkX,GACrC,MAAwB,mBAAVlX,EAAuBA,EAAMmX,WAAM,EAAQD,GAAQlX,CACnE,CACA,SAASoX,GAASC,EAAIC,GAEpB,OAAW,IAAPA,EACKD,EAIF,SAAUE,GACfC,aAAaC,GACbA,EAAUC,YAAW,WACnBL,EAAGE,EACL,GAAGD,EACL,EANA,IAAIG,CAON,CAWA,SAASE,GAAiB3X,GACxB,MAAO,GAAGmH,OAAOnH,EACnB,CACA,SAAS4X,GAAaC,EAAK7X,IACG,IAAxB6X,EAAIb,QAAQhX,IACd6X,EAAIlR,KAAK3G,EAEb,CAMA,SAAS8X,GAAiBC,GACxB,OAAOA,EAAUvN,MAAM,KAAK,EAC9B,CACA,SAASwN,GAAUhY,GACjB,MAAO,GAAGsG,MAAMvF,KAAKf,EACvB,CACA,SAASiY,GAAqBjM,GAC5B,OAAOxP,OAAO0b,KAAKlM,GAAKmM,QAAO,SAAUC,EAAKC,GAK5C,YAJiBhd,IAAb2Q,EAAIqM,KACND,EAAIC,GAAOrM,EAAIqM,IAGVD,CACT,GAAG,CAAC,EACN,CAEA,SAASE,KACP,OAAOjL,SAASkL,cAAc,MAChC,CACA,SAASC,GAAUxY,GACjB,MAAO,CAAC,UAAW,YAAYyY,MAAK,SAAUvT,GAC5C,OAAO4R,GAAO9W,EAAOkF,EACvB,GACF,CAIA,SAASwT,GAAa1Y,GACpB,OAAO8W,GAAO9W,EAAO,aACvB,CACA,SAAS2Y,GAAmB3Y,GAC1B,SAAUA,IAASA,EAAM4Y,QAAU5Y,EAAM4Y,OAAOC,YAAc7Y,EAChE,CACA,SAAS8Y,GAAmB9Y,GAC1B,OAAIwY,GAAUxY,GACL,CAACA,GAXZ,SAAoBA,GAClB,OAAO8W,GAAO9W,EAAO,WACvB,CAYM+Y,CAAW/Y,GACNgY,GAAUhY,GAGf5C,MAAMyZ,QAAQ7W,GACTA,EAGFgY,GAAU3K,SAAS2L,iBAAiBhZ,GAC7C,CACA,SAASiZ,GAAsBC,EAAKlZ,GAClCkZ,EAAIpS,SAAQ,SAAUqS,GAChBA,IACFA,EAAGhY,MAAMiY,mBAAqBpZ,EAAQ,KAE1C,GACF,CACA,SAASqZ,GAAmBH,EAAKrR,GAC/BqR,EAAIpS,SAAQ,SAAUqS,GAChBA,GACFA,EAAGG,aAAa,aAAczR,EAElC,GACF,CACA,SAAS0R,GAAiBC,GACxB,IAAIC,EAGAC,EADoB/B,GAAiB6B,GACT,GAGhC,OAAkB,MAAXE,GAAsE,OAAlDD,EAAwBC,EAAQC,gBAA0BF,EAAsB9C,KAAO+C,EAAQC,cAAgBtM,QAC5I,CA2BA,SAASuM,GAA4BC,EAAKC,EAAQC,GAChD,IAAIC,EAASF,EAAS,gBAGtB,CAAC,gBAAiB,uBAAuBhT,SAAQ,SAAUmT,GACzDJ,EAAIG,GAAQC,EAAOF,EACrB,GACF,CAMA,SAASG,GAAeC,EAAQC,GAG9B,IAFA,IAAI1P,EAAS0P,EAEN1P,GAAQ,CACb,IAAI2P,EAEJ,GAAIF,EAAOG,SAAS5P,GAClB,OAAO,EAGTA,EAA+B,MAAtBA,EAAO6P,aAA+E,OAA/CF,EAAsB3P,EAAO6P,oBAAvC,EAAyEF,EAAoBG,IACrI,CAEA,OAAO,CACT,CAEA,IAAIC,GAAe,CACjBC,SAAS,GAEPC,GAAoB,EAQxB,SAASC,KACHH,GAAaC,UAIjBD,GAAaC,SAAU,EAEnBG,OAAOC,aACTzN,SAASC,iBAAiB,YAAayN,IAE3C,CAOA,SAASA,KACP,IAAIlQ,EAAMiQ,YAAYjQ,MAElBA,EAAM8P,GAAoB,KAC5BF,GAAaC,SAAU,EACvBrN,SAASK,oBAAoB,YAAaqN,KAG5CJ,GAAoB9P,CACtB,CAQA,SAASmQ,KACP,IAAIC,EAAgB5N,SAAS4N,cAE7B,GAAItC,GAAmBsC,GAAgB,CACrC,IAAIC,EAAWD,EAAcrC,OAEzBqC,EAAcE,OAASD,EAASrT,MAAMuT,WACxCH,EAAcE,MAElB,CACF,CAMA,IACIE,MAD8B,oBAAXR,QAA8C,oBAAbxN,aAEtDwN,OAAOS,SAyDT,IAAIC,GAAc,CAChBC,aAAa,EACbC,cAAc,EACdC,mBAAmB,EACnBC,QAAQ,GAaNC,GAAepf,OAAOwU,OAAO,CAC/B6K,SAAUnF,GACVoF,KAAM,CACJC,QAAS,OACTC,SAAU,QAEZC,MAAO,EACPC,SAAU,CAAC,IAAK,KAChBC,uBAAwB,KACxBC,aAAa,EACbC,kBAAkB,EAClBC,aAAa,EACbC,kBAAmB,EACnBC,oBAAqB,EACrBC,eAAgB,GAChBC,OAAQ,CAAC,EAAG,IACZC,cAAe,WAA0B,EACzCC,eAAgB,WAA2B,EAC3CC,SAAU,WAAqB,EAC/BC,UAAW,WAAsB,EACjCC,SAAU,WAAqB,EAC/BC,OAAQ,WAAmB,EAC3BC,QAAS,WAAoB,EAC7BC,OAAQ,WAAmB,EAC3BC,QAAS,WAAoB,EAC7BC,UAAW,WAAsB,EACjCC,YAAa,WAAwB,EACrCC,eAAgB,WAA2B,EAC3CvF,UAAW,MACXwF,QAAS,GACTC,cAAe,CAAC,EAChB1b,OAAQ,KACR2b,cAAc,EACdC,OAAO,EACPC,QAAS,mBACTC,cAAe,MACdrC,GA/Ce,CAChBsC,WAAW,EACXC,UAAW,OACXC,OAAO,EACPhC,QAAS,GACTiC,SAAS,EACTC,SAAU,IACVC,KAAM,UACNha,MAAO,GACPia,OAAQ,OAuCNC,GAAc5hB,OAAO0b,KAAK0D,IAY9B,SAASyC,GAAuBC,GAC9B,IACI/C,GADU+C,EAAYf,SAAW,IACXpF,QAAO,SAAUC,EAAKmG,GAC9C,IAIMC,EAJF3e,EAAO0e,EAAO1e,KACdwO,EAAekQ,EAAOlQ,aAEtBxO,IAGFuY,EAAIvY,QAA8BxE,IAAtBijB,EAAYze,GAAsBye,EAAYze,GAAwC,OAA/B2e,EAAQ5C,GAAa/b,IAAiB2e,EAAQnQ,GAGnH,OAAO+J,CACT,GAAG,CAAC,GACJ,OAAO5b,OAAOwU,OAAO,CAAC,EAAGsN,EAAa/C,EACxC,CA0BA,SAASkD,GAAc5F,EAAWha,GAChC,IAAI6f,EAAMliB,OAAOwU,OAAO,CAAC,EAAGnS,EAAO,CACjCkd,QAAS9E,GAAuBpY,EAAMkd,QAAS,CAAClD,KAC/Cha,EAAMwd,iBAAmB,CAAC,EA5B/B,SAA+BxD,EAAW0E,GAuBxC,OAtBeA,EAAU/gB,OAAO0b,KAAKmG,GAAuB7hB,OAAOwU,OAAO,CAAC,EAAG4K,GAAc,CAC1F2B,QAASA,MACJa,IACcjG,QAAO,SAAUC,EAAKC,GACzC,IAAIsG,GAAiB9F,EAAU+F,aAAa,cAAgBvG,IAAQ,IAAIwG,OAExE,IAAKF,EACH,OAAOvG,EAGT,GAAY,YAARC,EACFD,EAAIC,GAAOsG,OAEX,IACEvG,EAAIC,GAAOyG,KAAKC,MAAMJ,EACxB,CAAE,MAAOvU,GACPgO,EAAIC,GAAOsG,CACb,CAGF,OAAOvG,CACT,GAAG,CAAC,EAEN,CAImC4G,CAAsBnG,EAAWha,EAAM0e,UAMxE,OALAmB,EAAI5C,KAAOtf,OAAOwU,OAAO,CAAC,EAAG4K,GAAaE,KAAM4C,EAAI5C,MACpD4C,EAAI5C,KAAO,CACTE,SAAgC,SAAtB0C,EAAI5C,KAAKE,SAAsBnd,EAAMyd,YAAcoC,EAAI5C,KAAKE,SACtED,QAA8B,SAArB2C,EAAI5C,KAAKC,QAAqBld,EAAMyd,YAAc,KAAO,cAAgBoC,EAAI5C,KAAKC,SAEtF2C,CACT,CAyBA,SAASO,GAAYC,GACnB,IAAIrF,EAAMqF,EAAOC,kBACbC,EAAcpH,GAAU6B,EAAI1c,UAChC,MAAO,CACL0c,IAAKA,EACLkC,QAASqD,EAAYtK,MAAK,SAAUuK,GAClC,OAAOA,EAAKlQ,UAAUmL,SAASnE,GACjC,IACA4H,MAAOqB,EAAYtK,MAAK,SAAUuK,GAChC,OAAOA,EAAKlQ,UAAUmL,SAASjE,KAAgBgJ,EAAKlQ,UAAUmL,SAAShE,GACzE,IACAgJ,SAAUF,EAAYtK,MAAK,SAAUuK,GACnC,OAAOA,EAAKlQ,UAAUmL,SAASlE,GACjC,IAEJ,CAEA,IAAImJ,GAAY,EACZC,GAAqB,GAErBC,GAAmB,GACvB,SAASC,GAAY7G,EAAWyF,GAC9B,IAIIqB,EACAC,EACAC,EAKAC,EACAC,EACAC,EAGAC,EA/aUpI,EA+ZVhZ,EAAQ4f,GAAc5F,EAAWrc,OAAOwU,OAAO,CAAC,EAAG4K,GAAcyC,GAAuBpG,GAAqBqG,MAO7G4B,GAAqB,EACrBC,GAAgC,EAChCC,GAAe,EACfC,GAAsB,EAItBC,EAAY,GACZC,EAAuBnJ,GAASoJ,EAAa3hB,EAAM2d,qBAKnDla,EAAKid,KAELhC,GArbU1F,EAqbOhZ,EAAM0e,SApbhB9S,QAAO,SAAUkK,EAAMnX,GAChC,OAAOqa,EAAIb,QAAQrC,KAAUnX,CAC/B,IA+bI0d,EAAW,CAEb5Y,GAAIA,EACJuW,UAAWA,EACXqG,OAAQ5G,KACRmI,eAnBmB,KAoBnB5hB,MAAOA,EACPgJ,MAnBU,CAEV6Y,WAAW,EAEXtF,WAAW,EAEXuF,aAAa,EAEbC,WAAW,EAEXC,SAAS,GAUTtD,QAASA,EAETuD,mBA4oBF,WACEtJ,aAAamI,GACbnI,aAAaoI,GACbmB,qBAAqBlB,EACvB,EA/oBEmB,SAipBF,SAAkBC,GAEZ,EAIJ,GAAI/F,EAASrT,MAAM8Y,YACjB,OAGFO,EAAW,iBAAkB,CAAChG,EAAU+F,IACxCE,IACA,IAAIC,EAAYlG,EAASrc,MACrB6E,EAAY+a,GAAc5F,EAAWrc,OAAOwU,OAAO,CAAC,EAAGoQ,EAAWnJ,GAAqBgJ,GAAe,CACxG5E,kBAAkB,KAEpBnB,EAASrc,MAAQ6E,EACjB2d,IAEID,EAAU5E,sBAAwB9Y,EAAU8Y,sBAC9C8E,IACAf,EAAuBnJ,GAASoJ,EAAa9c,EAAU8Y,sBAIrD4E,EAAUxD,gBAAkBla,EAAUka,cACxCjG,GAAiByJ,EAAUxD,eAAe9W,SAAQ,SAAUuY,GAC1DA,EAAKkC,gBAAgB,gBACvB,IACS7d,EAAUka,eACnB/E,EAAU0I,gBAAgB,iBAG5BC,IACAC,IAEIC,GACFA,EAASN,EAAW1d,GAGlBwX,EAASuF,iBACXkB,IAKAC,IAAsB9a,SAAQ,SAAU+a,GAGtCC,sBAAsBD,EAAajJ,OAAO6H,eAAe7X,YAC3D,KAGFsY,EAAW,gBAAiB,CAAChG,EAAU+F,GACzC,EAtsBEc,WAwsBF,SAAoBhG,GAClBb,EAAS8F,SAAS,CAChBjF,QAASA,GAEb,EA3sBEiG,KA6sBF,WAEM,EAKJ,IAAIC,EAAmB/G,EAASrT,MAAMuT,UAClCuF,EAAczF,EAASrT,MAAM8Y,YAC7BuB,GAAchH,EAASrT,MAAM6Y,UAC7ByB,EAA0B1H,GAAaC,UAAYQ,EAASrc,MAAM6e,MAClExB,EAAWtF,GAAwBsE,EAASrc,MAAMqd,SAAU,EAAGN,GAAaM,UAEhF,GAAI+F,GAAoBtB,GAAeuB,GAAcC,EACnD,OAMF,GAAIC,IAAmBC,aAAa,YAClC,OAKF,GAFAnB,EAAW,SAAU,CAAChG,IAAW,IAEO,IAApCA,EAASrc,MAAMqe,OAAOhC,GACxB,OAGFA,EAASrT,MAAMuT,WAAY,EAEvBkH,MACFpD,EAAO/d,MAAMohB,WAAa,WAG5Bd,IACAe,IAEKtH,EAASrT,MAAM+Y,YAClB1B,EAAO/d,MAAMshB,WAAa,QAK5B,GAAIH,IAAwB,CAC1B,IAAII,EAAyBC,IAI7B1J,GAAsB,CAHZyJ,EAAuB7I,IACnB6I,EAAuB3G,SAEC,EACxC,CAEAiE,EAAgB,WACd,IAAI4C,EAEJ,GAAK1H,EAASrT,MAAMuT,YAAaiF,EAAjC,CASA,GALAA,GAAsB,EAEjBnB,EAAO2D,aACZ3D,EAAO/d,MAAMshB,WAAavH,EAASrc,MAAM4d,eAErC6F,KAA0BpH,EAASrc,MAAMif,UAAW,CACtD,IAAIgF,EAAyBH,IACzBI,EAAOD,EAAuBjJ,IAC9BmJ,EAAWF,EAAuB/G,QAEtC9C,GAAsB,CAAC8J,EAAMC,GAAW9G,GACxC7C,GAAmB,CAAC0J,EAAMC,GAAW,UACvC,CAEAC,IACAzB,IACA5J,GAAa6H,GAAkBvE,GAGuB,OAArD0H,EAAyB1H,EAASuF,iBAAmCmC,EAAuBha,cAC7FsY,EAAW,UAAW,CAAChG,IAEnBA,EAASrc,MAAMif,WAAawE,KA9hBpC,SAA0BpG,EAAUgH,GAClCC,EAAgBjH,EAAUgH,EAC5B,CA6hBME,CAAiBlH,GAAU,WACzBhB,EAASrT,MAAMgZ,SAAU,EACzBK,EAAW,UAAW,CAAChG,GACzB,GA5BF,CA8BF,EA3QF,WACE,IACImI,EADAxH,EAAWX,EAASrc,MAAMgd,SAO1BwD,EAAO+C,IAGTiB,EADEnI,EAASrc,MAAMyd,aAAeT,IAAanF,IAAwC,WAAbmF,EAC3DwD,EAAKgE,WAELpM,GAAuB4E,EAAU,CAACwD,IAK5CgE,EAAW/I,SAAS4E,IACvBmE,EAAWC,YAAYpE,GAGzBhE,EAASrT,MAAM+Y,WAAY,EAC3Be,KAGI,CAIN,CA+OE4B,EACF,EAvyBEC,KAyyBF,WAEM,EAKJ,IAAIC,GAAmBvI,EAASrT,MAAMuT,UAClCuF,EAAczF,EAASrT,MAAM8Y,YAC7BuB,GAAchH,EAASrT,MAAM6Y,UAC7BxE,EAAWtF,GAAwBsE,EAASrc,MAAMqd,SAAU,EAAGN,GAAaM,UAEhF,GAAIuH,GAAmB9C,GAAeuB,EACpC,OAKF,GAFAhB,EAAW,SAAU,CAAChG,IAAW,IAEO,IAApCA,EAASrc,MAAMme,OAAO9B,GACxB,OAGFA,EAASrT,MAAMuT,WAAY,EAC3BF,EAASrT,MAAMgZ,SAAU,EACzBR,GAAsB,EACtBH,GAAqB,EAEjBoC,MACFpD,EAAO/d,MAAMohB,WAAa,UAO5B,GAJAjB,IACAoC,IACAjC,GAAa,GAETa,IAAwB,CAC1B,IAAIqB,EAAyBhB,IACzB9I,EAAM8J,EAAuB9J,IAC7BkC,EAAU4H,EAAuB5H,QAEjCb,EAASrc,MAAMif,YACjB7E,GAAsB,CAACY,EAAKkC,GAAUG,GACtC7C,GAAmB,CAACQ,EAAKkC,GAAU,UAEvC,CAEAkH,IACAzB,IAEItG,EAASrc,MAAMif,UACbwE,KAnmBR,SAA2BpG,EAAUgH,GACnCC,EAAgBjH,GAAU,YACnBhB,EAASrT,MAAMuT,WAAa8D,EAAOmE,YAAcnE,EAAOmE,WAAW/I,SAAS4E,IAC/EgE,GAEJ,GACF,CA8lBMU,CAAkB1H,EAAUhB,EAAS2I,SAGvC3I,EAAS2I,SAEb,EAh2BEC,sBAk2BF,SAA+B7J,GAEzB,EAIJ8J,IAAczW,iBAAiB,YAAaiT,GAC5C3I,GAAa4H,GAAoBe,GACjCA,EAAqBtG,EACvB,EA12BE+J,OA2nBF,WACE9I,EAASrT,MAAM6Y,WAAY,CAC7B,EA5nBEuD,QA8nBF,WAGE/I,EAASsI,OACTtI,EAASrT,MAAM6Y,WAAY,CAC7B,EAloBEmD,QA02BF,WAEM,EAIA3I,EAASrT,MAAMuT,WACjBF,EAASsI,OAGX,IAAKtI,EAASrT,MAAM+Y,UAClB,OAGFsD,IAIAtC,IAAsB9a,SAAQ,SAAU+a,GACtCA,EAAajJ,OAAOiL,SACtB,IAEI3E,EAAOmE,YACTnE,EAAOmE,WAAWc,YAAYjF,GAGhCO,GAAmBA,GAAiBhV,QAAO,SAAU5G,GACnD,OAAOA,IAAMqX,CACf,IACAA,EAASrT,MAAM+Y,WAAY,EAC3BM,EAAW,WAAY,CAAChG,GAC1B,EAx4BEvR,QA04BF,WAEM,EAIJ,GAAIuR,EAASrT,MAAM8Y,YACjB,OAGFzF,EAAS4F,qBACT5F,EAAS2I,UACT1C,WACOtI,EAAUD,OACjBsC,EAASrT,MAAM8Y,aAAc,EAC7BO,EAAW,YAAa,CAAChG,GAC3B,GAp5BA,IAAKrc,EAAMiD,OAKT,OAAOoZ,EAMT,IAAIkJ,EAAgBvlB,EAAMiD,OAAOoZ,GAC7BgE,EAASkF,EAAclF,OACvBwC,EAAW0C,EAAc1C,SAE7BxC,EAAO5F,aAAa,kBAAmB,IACvC4F,EAAO5c,GAAK,SAAW4Y,EAAS5Y,GAChC4Y,EAASgE,OAASA,EAClBrG,EAAUD,OAASsC,EACnBgE,EAAOtG,OAASsC,EAChB,IAAImJ,EAAe9G,EAAQjgB,KAAI,SAAUihB,GACvC,OAAOA,EAAOlH,GAAG6D,EACnB,IACIoJ,EAAkBzL,EAAUwJ,aAAa,iBAsB7C,OArBAhB,IACAG,IACAC,IACAP,EAAW,WAAY,CAAChG,IAEpBrc,EAAM4e,cACR8G,KAKFrF,EAAO5R,iBAAiB,cAAc,WAChC4N,EAASrc,MAAMyd,aAAepB,EAASrT,MAAMuT,WAC/CF,EAAS4F,oBAEb,IACA5B,EAAO5R,iBAAiB,cAAc,WAChC4N,EAASrc,MAAMyd,aAAepB,EAASrc,MAAM8e,QAAQ3G,QAAQ,eAAiB,GAChF+M,IAAczW,iBAAiB,YAAaiT,EAEhD,IACOrF,EAIP,SAASsJ,IACP,IAAI9G,EAAQxC,EAASrc,MAAM6e,MAC3B,OAAOtgB,MAAMyZ,QAAQ6G,GAASA,EAAQ,CAACA,EAAO,EAChD,CAEA,SAAS+G,IACP,MAA2C,SAApCD,IAA6B,EACtC,CAEA,SAASlC,IACP,IAAIoC,EAGJ,QAA6D,OAAlDA,EAAwBxJ,EAASrc,MAAMiD,UAAmB4iB,EAAsBC,QAC7F,CAEA,SAASvC,IACP,OAAOnC,GAAiBpH,CAC1B,CAEA,SAASkL,IACP,IAAI5J,EAASiI,IAAmBiB,WAChC,OAAOlJ,EAASZ,GAAiBY,GAAU9M,QAC7C,CAEA,SAASsV,IACP,OAAO1D,GAAYC,EACrB,CAEA,SAAS0F,EAASC,GAIhB,OAAI3J,EAASrT,MAAM+Y,YAAc1F,EAASrT,MAAMuT,WAAaX,GAAaC,SAAWoF,GAA8C,UAA1BA,EAAiB5a,KACjH,EAGF0R,GAAwBsE,EAASrc,MAAMod,MAAO4I,EAAS,EAAI,EAAGjJ,GAAaK,MACpF,CAEA,SAASwF,EAAaqD,QACH,IAAbA,IACFA,GAAW,GAGb5F,EAAO/d,MAAM4jB,cAAgB7J,EAASrc,MAAMyd,cAAgBwI,EAAW,GAAK,OAC5E5F,EAAO/d,MAAMgd,OAAS,GAAKjD,EAASrc,MAAMsf,MAC5C,CAEA,SAAS+C,EAAW8D,EAAM9N,EAAM+N,GAY5B,IAAIC,QAXwB,IAA1BD,IACFA,GAAwB,GAG1BZ,EAAavd,SAAQ,SAAUqe,GACzBA,EAAYH,IACdG,EAAYH,GAAM7N,MAAMgO,EAAajO,EAEzC,IAEI+N,KAGDC,EAAkBhK,EAASrc,OAAOmmB,GAAM7N,MAAM+N,EAAiBhO,EAEpE,CAEA,SAAS+L,IACP,IAAInH,EAAOZ,EAASrc,MAAMid,KAE1B,GAAKA,EAAKC,QAAV,CAIA,IAAIpb,EAAO,QAAUmb,EAAKC,QACtBzZ,EAAK4c,EAAO5c,GACJqV,GAAiBuD,EAASrc,MAAM+e,eAAiB/E,GACvD/R,SAAQ,SAAUuY,GACtB,IAAI+F,EAAe/F,EAAKT,aAAaje,GAErC,GAAIua,EAASrT,MAAMuT,UACjBiE,EAAK/F,aAAa3Y,EAAMykB,EAAeA,EAAe,IAAM9iB,EAAKA,OAC5D,CACL,IAAI+iB,EAAYD,GAAgBA,EAAaE,QAAQhjB,EAAI,IAAIuc,OAEzDwG,EACFhG,EAAK/F,aAAa3Y,EAAM0kB,GAExBhG,EAAKkC,gBAAgB5gB,EAEzB,CACF,GAnBA,CAoBF,CAEA,SAAS6gB,KACH8C,GAAoBpJ,EAASrc,MAAMid,KAAKE,UAIhCrE,GAAiBuD,EAASrc,MAAM+e,eAAiB/E,GACvD/R,SAAQ,SAAUuY,GAClBnE,EAASrc,MAAMyd,YACjB+C,EAAK/F,aAAa,gBAAiB4B,EAASrT,MAAMuT,WAAaiE,IAAS+C,IAAqB,OAAS,SAEtG/C,EAAKkC,gBAAgB,gBAEzB,GACF,CAEA,SAASD,IACPyC,IAAcrW,oBAAoB,YAAa6S,GAC/Cf,GAAqBA,GAAmB/U,QAAO,SAAUsP,GACvD,OAAOA,IAAawG,CACtB,GACF,CAEA,SAASgF,EAAgBtL,GAEvB,IAAIQ,GAAaC,UACX0F,GAA+B,cAAfnG,EAAM/U,KAD5B,CAMA,IAAIsgB,EAAevL,EAAMwL,cAAgBxL,EAAMwL,eAAe,IAAMxL,EAAMvP,OAE1E,IAAIwQ,EAASrc,MAAMyd,cAAepC,GAAegF,EAAQsG,GAAzD,CAKA,GAAI7N,GAAiBuD,EAASrc,MAAM+e,eAAiB/E,GAAWJ,MAAK,SAAUU,GAC7E,OAAOe,GAAef,EAAIqM,EAC5B,IAAI,CACF,GAAI/K,GAAaC,QACf,OAGF,GAAIQ,EAASrT,MAAMuT,WAAaF,EAASrc,MAAM8e,QAAQ3G,QAAQ,UAAY,EACzE,MAEJ,MACEkK,EAAW,iBAAkB,CAAChG,EAAUjB,KAGP,IAA/BiB,EAASrc,MAAMud,cACjBlB,EAAS4F,qBACT5F,EAASsI,OAITrD,GAAgC,EAChCzI,YAAW,WACTyI,GAAgC,CAClC,IAIKjF,EAASrT,MAAM+Y,WAClB8C,IA/BJ,CANA,CAwCF,CAEA,SAASgC,IACPtF,GAAe,CACjB,CAEA,SAASuF,IACPvF,GAAe,CACjB,CAEA,SAASoC,IACP,IAAIoD,EAAM7B,IACV6B,EAAItY,iBAAiB,YAAaiY,GAAiB,GACnDK,EAAItY,iBAAiB,WAAYiY,EAAiBhP,IAClDqP,EAAItY,iBAAiB,aAAcqY,EAAcpP,IACjDqP,EAAItY,iBAAiB,YAAaoY,EAAanP,GACjD,CAEA,SAASmN,IACP,IAAIkC,EAAM7B,IACV6B,EAAIlY,oBAAoB,YAAa6X,GAAiB,GACtDK,EAAIlY,oBAAoB,WAAY6X,EAAiBhP,IACrDqP,EAAIlY,oBAAoB,aAAciY,EAAcpP,IACpDqP,EAAIlY,oBAAoB,YAAagY,EAAanP,GACpD,CAcA,SAAS4M,EAAgBjH,EAAUgH,GACjC,IAAIrJ,EAAM8I,IAA6B9I,IAEvC,SAASE,EAASE,GACZA,EAAMvP,SAAWmP,IACnBD,GAA4BC,EAAK,SAAUE,GAC3CmJ,IAEJ,CAIA,GAAiB,IAAbhH,EACF,OAAOgH,IAGTtJ,GAA4BC,EAAK,SAAUkG,GAC3CnG,GAA4BC,EAAK,MAAOE,GACxCgG,EAA+BhG,CACjC,CAEA,SAAS8L,EAAGC,EAAWC,EAASzU,QACd,IAAZA,IACFA,GAAU,GAGAqG,GAAiBuD,EAASrc,MAAM+e,eAAiB/E,GACvD/R,SAAQ,SAAUuY,GACtBA,EAAK/R,iBAAiBwY,EAAWC,EAASzU,GAC1CgP,EAAU3Z,KAAK,CACb0Y,KAAMA,EACNyG,UAAWA,EACXC,QAASA,EACTzU,QAASA,GAEb,GACF,CAEA,SAAS+P,IArwBX,IAAuBrhB,EAswBfykB,MACFoB,EAAG,aAAczI,EAAW,CAC1B5G,SAAS,IAEXqP,EAAG,WAAYG,EAAc,CAC3BxP,SAAS,MA3wBMxW,EA+wBLkb,EAASrc,MAAM8e,QA9wBxB3d,EAAMwK,MAAM,OAAOC,OAAOiK,UA8wBO5N,SAAQ,SAAUgf,GACtD,GAAkB,WAAdA,EAMJ,OAFAD,EAAGC,EAAW1I,GAEN0I,GACN,IAAK,aACHD,EAAG,aAAcG,GACjB,MAEF,IAAK,QACHH,EAAGxK,GAAS,WAAa,OAAQ4K,GACjC,MAEF,IAAK,UACHJ,EAAG,WAAYI,GAGrB,GACF,CAEA,SAAS9E,IACPb,EAAUxZ,SAAQ,SAAUzE,GAC1B,IAAIgd,EAAOhd,EAAKgd,KACZyG,EAAYzjB,EAAKyjB,UACjBC,EAAU1jB,EAAK0jB,QACfzU,EAAUjP,EAAKiP,QACnB+N,EAAK3R,oBAAoBoY,EAAWC,EAASzU,EAC/C,IACAgP,EAAY,EACd,CAEA,SAASlD,EAAUnD,GACjB,IAAIiM,EAEAC,GAA0B,EAE9B,GAAKjL,EAASrT,MAAM6Y,YAAa0F,EAAuBnM,KAAUkG,EAAlE,CAIA,IAAIkG,EAAoG,WAA5C,OAAzCH,EAAoBpG,QAA4B,EAASoG,EAAkBhhB,MAC9F4a,EAAmB7F,EACnBgG,EAAgBhG,EAAMgG,cACtBuB,KAEKtG,EAASrT,MAAMuT,WAAa1C,GAAauB,IAK5CuF,GAAmB1Y,SAAQ,SAAUiT,GACnC,OAAOA,EAASE,EAClB,IAIiB,UAAfA,EAAM/U,OAAqBgW,EAASrc,MAAM8e,QAAQ3G,QAAQ,cAAgB,GAAKkJ,KAAsD,IAA/BhF,EAASrc,MAAMud,aAAyBlB,EAASrT,MAAMuT,UAC/J+K,GAA0B,EAE1B5B,GAAatK,GAGI,UAAfA,EAAM/U,OACRgb,GAAsBiG,GAGpBA,IAA4BE,GAC9BC,GAAarM,EA7Bf,CA+BF,CAEA,SAASuG,EAAYvG,GACnB,IAAIvP,EAASuP,EAAMvP,OACf6b,EAAgCnE,IAAmB9H,SAAS5P,IAAWwU,EAAO5E,SAAS5P,GAE3F,GAAmB,cAAfuP,EAAM/U,OAAwBqhB,EAAlC,CAIA,IAAIC,EAAiB5E,IAAsBza,OAAO+X,GAAQ5hB,KAAI,SAAU4hB,GACtE,IAAIuH,EAGA5e,EAA6D,OAApD4e,EADEvH,EAAOtG,OACwB6H,qBAA0B,EAASgG,EAAsB5e,MAEvG,OAAIA,EACK,CACL6e,WAAYxH,EAAOyH,wBACnBC,YAAa/e,EACbhJ,MAAOA,GAIJ,IACT,IAAG4L,OAAOiK,UAzxBd,SAA0C8R,EAAgBvM,GACxD,IAAI4M,EAAU5M,EAAM4M,QAChBC,EAAU7M,EAAM6M,QACpB,OAAON,EAAeO,OAAM,SAAU1kB,GACpC,IAAIqkB,EAAarkB,EAAKqkB,WAClBE,EAAcvkB,EAAKukB,YAEnBrK,EADQla,EAAKxD,MACa0d,kBAC1ByK,EAAgBlP,GAAiB8O,EAAY7O,WAC7CkP,EAAaL,EAAYM,cAAcxK,OAE3C,IAAKuK,EACH,OAAO,EAGT,IAAIE,EAAgC,WAAlBH,EAA6BC,EAAWxa,IAAIxM,EAAI,EAC9DmnB,EAAmC,QAAlBJ,EAA0BC,EAAWI,OAAOpnB,EAAI,EACjEqnB,EAAiC,UAAlBN,EAA4BC,EAAWM,KAAK9nB,EAAI,EAC/D+nB,EAAkC,SAAlBR,EAA2BC,EAAWva,MAAMjN,EAAI,EAChEgoB,EAAaf,EAAWja,IAAMqa,EAAUK,EAAc5K,EACtDmL,EAAgBZ,EAAUJ,EAAWW,OAASD,EAAiB7K,EAC/DoL,EAAcjB,EAAWa,KAAOV,EAAUS,EAAe/K,EACzDqL,EAAef,EAAUH,EAAWha,MAAQ8a,EAAgBjL,EAChE,OAAOkL,GAAcC,GAAiBC,GAAeC,CACvD,GACF,EAkwBQC,CAAiCrB,EAAgBvM,KACnDqH,IACAgF,GAAarM,GArBf,CAuBF,CAEA,SAAS+L,EAAa/L,GACHmM,EAAuBnM,IAAUiB,EAASrc,MAAM8e,QAAQ3G,QAAQ,UAAY,GAAKkJ,IAM9FhF,EAASrc,MAAMyd,YACjBpB,EAAS4I,sBAAsB7J,GAIjCqM,GAAarM,GACf,CAEA,SAASgM,EAAiBhM,GACpBiB,EAASrc,MAAM8e,QAAQ3G,QAAQ,WAAa,GAAKiD,EAAMvP,SAAW0X,KAKlElH,EAASrc,MAAMyd,aAAerC,EAAM6N,eAAiB5I,EAAO5E,SAASL,EAAM6N,gBAI/ExB,GAAarM,EACf,CAEA,SAASmM,EAAuBnM,GAC9B,QAAOQ,GAAaC,SAAU+J,MAA+BxK,EAAM/U,KAAK8R,QAAQ,UAAY,CAC9F,CAEA,SAAS2K,IACPuC,IACA,IAAI6D,EAAmB7M,EAASrc,MAC5B2e,EAAgBuK,EAAiBvK,cACjCzF,EAAYgQ,EAAiBhQ,UAC7B2E,EAASqL,EAAiBrL,OAC1BP,EAAyB4L,EAAiB5L,uBAC1CM,EAAiBsL,EAAiBtL,eAClCsB,EAAQuE,IAAyBrD,GAAYC,GAAQnB,MAAQ,KAC7DiK,EAAoB7L,EAAyB,CAC/CwK,sBAAuBxK,EACvB8L,eAAgB9L,EAAuB8L,gBAAkB7F,KACvDvJ,EACAqP,EAAgB,CAClBroB,KAAM,UACNsoB,SAAS,EACTC,MAAO,cACPC,SAAU,CAAC,iBACXhR,GAAI,SAAY5F,GACd,IAAI5J,EAAQ4J,EAAM5J,MAElB,GAAIya,IAAwB,CAC1B,IACIzI,EADwB8I,IACI9I,IAEhC,CAAC,YAAa,mBAAoB,WAAW/S,SAAQ,SAAUnG,GAChD,cAATA,EACFkZ,EAAIP,aAAa,iBAAkBzR,EAAMkQ,WAErClQ,EAAMygB,WAAWpJ,OAAO,eAAiBve,GAC3CkZ,EAAIP,aAAa,QAAU3Y,EAAM,IAEjCkZ,EAAI0H,gBAAgB,QAAU5gB,EAGpC,IACAkH,EAAMygB,WAAWpJ,OAAS,CAAC,CAC7B,CACF,GAEEqJ,EAAY,CAAC,CACf1oB,KAAM,SACNyR,QAAS,CACPoL,OAAQA,IAET,CACD7c,KAAM,kBACNyR,QAAS,CACPvR,QAAS,CACP0M,IAAK,EACL4a,OAAQ,EACRE,KAAM,EACN7a,MAAO,KAGV,CACD7M,KAAM,OACNyR,QAAS,CACPvR,QAAS,IAEV,CACDF,KAAM,gBACNyR,QAAS,CACPkX,UAAW/L,IAEZyL,GAEC5F,KAA0BvE,GAC5BwK,EAAU5hB,KAAK,CACb9G,KAAM,QACNyR,QAAS,CACPoI,QAASqE,EACThe,QAAS,KAKfwoB,EAAU5hB,KAAKwQ,MAAMoR,GAA6B,MAAjB/K,OAAwB,EAASA,EAAc+K,YAAc,IAC9FrN,EAASuF,gBAAiB,SAAauH,EAAmB9I,EAAQ1iB,OAAOwU,OAAO,CAAC,EAAGwM,EAAe,CACjGzF,UAAWA,EACXiI,cAAeA,EACfuI,UAAWA,IAEf,CAEA,SAASrE,IACHhJ,EAASuF,iBACXvF,EAASuF,eAAe9W,UACxBuR,EAASuF,eAAiB,KAE9B,CAkCA,SAASmB,IACP,OAAO5J,GAAUkH,EAAOlG,iBAAiB,qBAC3C,CAEA,SAASuL,GAAatK,GACpBiB,EAAS4F,qBAEL7G,GACFiH,EAAW,YAAa,CAAChG,EAAUjB,IAGrCuI,IACA,IAAIvG,EAAQ2I,GAAS,GAEjB6D,EAAwBjE,IACxBkE,EAAaD,EAAsB,GACnCE,EAAaF,EAAsB,GAEnChO,GAAaC,SAA0B,SAAfgO,GAAyBC,IACnD1M,EAAQ0M,GAGN1M,EACF0D,EAAcjI,YAAW,WACvBwD,EAAS8G,MACX,GAAG/F,GAEHf,EAAS8G,MAEb,CAEA,SAASsE,GAAarM,GAIpB,GAHAiB,EAAS4F,qBACTI,EAAW,cAAe,CAAChG,EAAUjB,IAEhCiB,EAASrT,MAAMuT,WASpB,KAAIF,EAASrc,MAAM8e,QAAQ3G,QAAQ,eAAiB,GAAKkE,EAASrc,MAAM8e,QAAQ3G,QAAQ,UAAY,GAAK,CAAC,aAAc,aAAaA,QAAQiD,EAAM/U,OAAS,GAAKgb,GAAjK,CAIA,IAAIjE,EAAQ2I,GAAS,GAEjB3I,EACF2D,EAAclI,YAAW,WACnBwD,EAASrT,MAAMuT,WACjBF,EAASsI,MAEb,GAAGvH,GAIH4D,EAA6BiC,uBAAsB,WACjD5G,EAASsI,MACX,GAfF,OAVEE,GA2BJ,CAwSF,CAEA,SAASkF,GAAMC,EAASC,QACA,IAAlBA,IACFA,EAAgB,CAAC,GAGnB,IAAIvL,EAAU3B,GAAa2B,QAAQpW,OAAO2hB,EAAcvL,SAAW,IA3rCnElQ,SAASC,iBAAiB,aAAcsN,GAAsBrE,IAC9DsE,OAAOvN,iBAAiB,OAAQ0N,IAmsChC,IAAIsD,EAAc9hB,OAAOwU,OAAO,CAAC,EAAG8X,EAAe,CACjDvL,QAASA,IAWPwL,EATWjQ,GAAmB+P,GAST1Q,QAAO,SAAUC,EAAKS,GAC7C,IAAIqC,EAAWrC,GAAa6G,GAAY7G,EAAWyF,GAMnD,OAJIpD,GACF9C,EAAIzR,KAAKuU,GAGJ9C,CACT,GAAG,IACH,OAAOI,GAAUqQ,GAAWE,EAAU,GAAKA,CAC7C,CAEAH,GAAMhN,aAAeA,GACrBgN,GAAMI,gBAvmCgB,SAAyB/H,GAMlCzkB,OAAO0b,KAAK+I,GAClBna,SAAQ,SAAUuR,GACrBuD,GAAavD,GAAO4I,EAAa5I,EACnC,GACF,EA8lCAuQ,GAAMnO,aAAeA,GAiCKje,OAAOwU,OAAO,CAAC,EAAGiY,GAAA,EAAa,CACvDC,OAAQ,SAAgB7mB,GACtB,IAAIwF,EAAQxF,EAAKwF,MACbshB,EAAgB,CAClBjK,OAAQ,CACN1S,SAAU3E,EAAMyJ,QAAQ8X,SACxB7B,KAAM,IACN9a,IAAK,IACLtN,OAAQ,KAEV4e,MAAO,CACLvR,SAAU,YAEZqM,UAAW,CAAC,GAEdrc,OAAOwU,OAAOnJ,EAAMwhB,SAASnK,OAAO/d,MAAOgoB,EAAcjK,QACzDrX,EAAMyhB,OAASH,EAEXthB,EAAMwhB,SAAStL,OACjBvhB,OAAOwU,OAAOnJ,EAAMwhB,SAAStL,MAAM5c,MAAOgoB,EAAcpL,MAI5D,IA0yBF6K,GAAMI,gBAAgB,CACpBlL,WAAW,IAGb,YCj0EA,SAASyL,GAA8BC,EAAQC,GAC7C,GAAc,MAAVD,EAAgB,MAAO,CAAC,EAC5B,IAEInR,EAAKxU,EAFL6G,EAAS,CAAC,EACVgf,EAAaltB,OAAO0b,KAAKsR,GAG7B,IAAK3lB,EAAI,EAAGA,EAAI6lB,EAAWtuB,OAAQyI,IACjCwU,EAAMqR,EAAW7lB,GACb4lB,EAASzS,QAAQqB,IAAQ,IAC7B3N,EAAO2N,GAAOmR,EAAOnR,IAGvB,OAAO3N,CACT,CAEA,IAAI,GAA8B,oBAAXmQ,QAA8C,oBAAbxN,SACxD,SAASsc,GAAY5nB,EAAKsd,GACpBtd,IACiB,mBAARA,GACTA,EAAIsd,GAGF,CAAC,EAAEuK,eAAe7oB,KAAKgB,EAAK,aAC9BA,EAAI/C,QAAUqgB,GAGpB,CACA,SAASwK,KACP,OAAO,IAAaxc,SAASkL,cAAc,MAC7C,CAiBA,SAASuR,GAAUrqB,EAAGQ,GACpB,GAAIR,IAAMQ,EACR,OAAO,EACF,GAAiB,iBAANR,GAAuB,MAALA,GAA0B,iBAANQ,GAAuB,MAALA,EAAW,CACnF,GAAIzD,OAAO0b,KAAKzY,GAAGrE,SAAWoB,OAAO0b,KAAKjY,GAAG7E,OAC3C,OAAO,EAGT,IAAK,IAAI2uB,KAAQtqB,EAAG,CAClB,IAAIQ,EAAE2pB,eAAeG,GAKnB,OAAO,EAJP,IAAKD,GAAUrqB,EAAEsqB,GAAO9pB,EAAE8pB,IACxB,OAAO,CAKb,CAEA,OAAO,CACT,CACE,OAAO,CAEX,CAEA,SAASC,GAAcnS,GACrB,IAAIoS,EAAS,GAQb,OAPApS,EAAI/Q,SAAQ,SAAU6N,GACfsV,EAAOnV,MAAK,SAAUoV,GACzB,OAAOJ,GAAUnV,EAAMuV,EACzB,KACED,EAAOtjB,KAAKgO,EAEhB,IACOsV,CACT,CACA,SAASE,GAAkBC,EAAeC,GACxC,IAAIC,EAAuBC,EAE3B,OAAO/tB,OAAOwU,OAAO,CAAC,EAAGqZ,EAAgB,CACvC7M,cAAehhB,OAAOwU,OAAO,CAAC,EAAGoZ,EAAc5M,cAAe6M,EAAe7M,cAAe,CAC1F+K,UAAWyB,GAAc,GAAG7iB,QAAiE,OAAxDmjB,EAAwBF,EAAc5M,oBAAyB,EAAS8M,EAAsB/B,YAAc,IAA+D,OAAzDgC,EAAwBF,EAAe7M,oBAAyB,EAAS+M,EAAsBhC,YAAc,QAG1Q,CAEA,IAAIiC,GAA4B,GAAY,EAAAC,gBAAkB,EAAAC,UAC9D,SAASC,GAAcC,GAGrB,IAAI7oB,GAAM,IAAA8oB,UAMV,OAJK9oB,EAAI/C,UACP+C,EAAI/C,QAAkC,mBAAjB4rB,EAA8BA,IAAiBA,GAG/D7oB,EAAI/C,OACb,CAEA,SAAS8rB,GAAgBjR,EAAKC,EAAQiR,GACpCA,EAAWvgB,MAAM,OAAO1D,SAAQ,SAAUjH,GACpCA,GACFga,EAAI1K,UAAU2K,GAAQja,EAE1B,GACF,CAEA,IAAImrB,GAAkB,CACpBnrB,KAAM,YACNwO,aAAc,GACdgJ,GAAI,SAAY6D,GACd,IAAIrB,EAAMqB,EAASgE,OAAOC,kBAEtB8L,EAAoB,WACtB,IAAIvG,EAEJ,SAA6D,OAAlDA,EAAwBxJ,EAASrc,MAAMiD,aAAkB,EAAS4iB,EAAsBC,QACrG,EAEA,SAASvV,IACH8L,EAASrc,MAAM3B,YAAc+tB,KAQjCH,GAAgBjR,EAAK,MAAOqB,EAASrc,MAAM3B,UAC7C,CAQA,MAAO,CACL2f,SAAUzN,EACVwN,eARF,WACMqO,KACFH,GAAgBjR,EAAK,SAAUqB,EAASrc,MAAM3B,UAElD,EAKEyf,cAAevN,EAEnB,GAGF,SAAS8b,GAAetC,GAiNtB,OAhNA,SAAevmB,GACb,IAAIlF,EAAWkF,EAAKlF,SAChB4e,EAAU1Z,EAAK0Z,QACfoP,EAAU9oB,EAAK8oB,QACfC,EAAY/oB,EAAK+oB,UACjBtpB,EAASO,EAAKP,OACd+W,EAAYxW,EAAKwW,UACjBwS,EAAgBhpB,EAAKipB,SACrBA,OAA6B,IAAlBD,GAAmCA,EAC9CE,EAAwBlpB,EAAKga,iBAC7BA,OAA6C,IAA1BkP,GAA0CA,EAG7DC,GAFWnpB,EAAKopB,SACPppB,EAAKqpB,OACMnC,GAA8BlnB,EAAM,CAAC,WAAY,UAAW,UAAW,YAAa,SAAU,YAAa,WAAY,mBAAoB,WAAY,YAE3KspB,OAA+BtwB,IAAZ8vB,EACnBS,OAAgCvwB,IAAd+vB,EAElBS,GAAY,IAAAC,WAAS,GACrBC,EAAUF,EAAU,GACpBG,EAAaH,EAAU,GAEvBI,GAAa,IAAAH,UAAS,CAAC,GACvBI,EAAQD,EAAW,GACnBE,EAAWF,EAAW,GAEtBG,GAAa,IAAAN,YACbO,EAAmBD,EAAW,GAC9BE,EAAsBF,EAAW,GAEjCG,EAAa5B,IAAc,WAC7B,MAAO,CACL6B,UAAW3C,KACX4C,QAAS,EAEb,IACI5tB,EAAQrC,OAAOwU,OAAO,CACxBqL,iBAAkBA,GACjBmP,EAAmB,CACpBzP,QAASwQ,EAAWC,YAGlBb,IASF9sB,EAAM8e,QAAU,SAChB9e,EAAMud,aAAc,GAGlBwP,IACFN,GAAW,GAGb,IAAIoB,EAAgB7tB,EAChB0e,EAAU1e,EAAM0e,SAAW,GAE3Bzb,IACF4qB,EAAgBlwB,OAAOwU,OAAO,CAAC,EAAGnS,EAAO,CACvC0e,QAASqO,GAAqC,MAAlBR,EAAUzsB,KAAe,GAAGwI,OAAOoW,EAAS,CAAC,CACvElG,GAAI,WACF,MAAO,CACL+F,UAAW,SAAmBlC,EAAUjB,GACtC,IAAIoF,EAAO+L,EAAUzsB,KAAKxB,SAAS2X,MAAK,SAAUrD,GAEhD,OADeA,EAAMyJ,SACLrC,YAAcoB,EAAMgG,aACtC,IACA/E,EAASrT,MAAM8kB,0BAA4BtN,EAAKnE,SAChDoR,EAAoBjN,EAAKtD,QAC3B,EAEJ,KACIwB,EACNzb,OAAQ,WACN,MAAO,CACLod,OAAQqN,EAAWC,UAEvB,KAIJ,IAAII,EAAO,CAAC/T,GAAW1R,OAAOhK,EAAW,CAACA,EAAS+H,MAAQ,IAkH3D,OAhHAslB,IAA0B,WACxB,IAAI9Q,EAAUb,EAEVA,GAAaA,EAAU+Q,eAAe,aACxClQ,EAAUb,EAAU7Z,SAGtB,IAAIkc,EAAW0N,EAAMlP,GAAW6S,EAAWxqB,KAAO8nB,KAAoBrtB,OAAOwU,OAAO,CAAC,EAAG0b,EAAe,CACrGnP,QAAS,CAACyN,IAAiB7jB,OAAOtI,EAAM0e,SAAW,OAsBrD,OApBAgP,EAAWrR,SAAWA,EAElBoQ,GACFpQ,EAAS+I,UAGPkH,GACFjQ,EAAS8G,OAGP4J,GACFR,EAAUpG,KAAK,CACb9J,SAAUA,EACVa,QAASA,EACTld,MAAO6tB,EACPJ,oBAAqBA,IAIzBN,GAAW,GACJ,WACL9Q,EAASvR,UACI,MAAbyhB,GAA6BA,EAAUyB,QAAQ3R,EACjD,CACF,GAAG0R,GAEHpC,IAA0B,WACxB,IAAI/D,EAGJ,GAA2B,IAAvB8F,EAAWE,QAAf,CAKA,IAAIvR,EAAWqR,EAAWrR,SAC1BA,EAAS8F,SAASmJ,GAAkBjP,EAASrc,MAAO6tB,IAEC,OAApDjG,EAAwBvL,EAASuF,iBAAmCgG,EAAsB7d,cAEvF0iB,EACFpQ,EAAS+I,UAET/I,EAAS8I,SAGP2H,IACER,EACFjQ,EAAS8G,OAET9G,EAASsI,QAIToI,GACFR,EAAUpG,KAAK,CACb9J,SAAUA,EACVa,QAASA,EACTld,MAAO6tB,EACPJ,oBAAqBA,GA1BzB,MAFEC,EAAWE,SA+Bf,IACAjC,IAA0B,WACxB,IAAIsC,EAEJ,GAAKhrB,EAAL,CAIA,IAAIoZ,EAAWqR,EAAWrR,SAC1BA,EAAS8F,SAAS,CAChBxD,cAAehhB,OAAOwU,OAAO,CAAC,EAAGkK,EAASrc,MAAM2e,cAAe,CAC7D+K,UAAW,GAAGphB,SAAmE,OAAzD2lB,EAAwB5R,EAASrc,MAAM2e,oBAAyB,EAASsP,EAAsBvE,YAAc,IAAI9d,QAAO,SAAUsiB,GAExJ,MAAgB,iBADLA,EAAMltB,IAEnB,IAAI,CAAC,CACHA,KAAM,eACNsoB,SAAS,EACTC,MAAO,cACPC,SAAU,CAAC,iBACXhR,GAAI,SAAY2V,GACd,IAAIC,EAEAplB,EAAQmlB,EAAMnlB,MACdqlB,EAA2D,OAA/CD,EAAuBplB,EAAMqf,oBAAyB,EAAS+F,EAAqBzJ,KAGhG0I,EAAMnU,YAAclQ,EAAMkQ,WAAamU,EAAMiB,mBAAiC,MAAZD,OAAmB,EAASA,EAASE,oBAAsBlB,EAAMmB,WAAyB,MAAZH,OAAmB,EAASA,EAASI,mBACvLnB,EAAS,CACPpU,UAAWlQ,EAAMkQ,UACjBoV,gBAA6B,MAAZD,OAAmB,EAASA,EAASE,kBACtDC,QAAqB,MAAZH,OAAmB,EAASA,EAASI,mBAIlDzlB,EAAMygB,WAAWpJ,OAAS,CAAC,CAC7B,QA7BN,CAiCF,GAAG,CAACgN,EAAMnU,UAAWmU,EAAMiB,gBAAiBjB,EAAMmB,SAASlmB,OAAOylB,IAC9C,gBAAoB,WAAgB,KAAMzvB,GAAwB,IAAAowB,cAAapwB,EAAU,CAC3G4E,IAAK,SAAasd,GAChBkN,EAAWxqB,IAAMsd,EACjBsK,GAAYxsB,EAAS4E,IAAKsd,EAC5B,IACG,KAAM0M,IAAwB,IAAAyB,cAAa1rB,EAASA,EAtU7D,SAA0BoqB,GACxB,IAAIuB,EAAY,CACd,iBAAkBvB,EAAMnU,WAW1B,OARImU,EAAMiB,kBACRM,EAAU,yBAA2B,IAGnCvB,EAAMmB,UACRI,EAAU,gBAAkB,IAGvBA,CACT,CAwToEC,CAAiBxB,GAAQG,EAAkBE,EAAWrR,UAAYa,EAASwQ,EAAWC,WACxJ,CAGF,CA2IA,IAAImB,GAAa,SAAWC,EAAOhS,GACjC,OAAoB,IAAA+R,aAAa,SAAsBtrB,EAAMoP,GAC3D,IAAItU,EAAWkF,EAAKlF,SAChB0B,EAAQ0qB,GAA8BlnB,EAAM,CAAC,aAEjD,OAIE,gBAAoBurB,EAAOpxB,OAAOwU,OAAO,CAAC,EAAG4K,EAAc/c,GAAQ1B,GAAwB,IAAAowB,cAAapwB,EAAU,CAChH4E,IAAK,SAAasd,GAChBsK,GAAYlY,EAAO4N,GACnBsK,GAAYxsB,EAAS4E,IAAKsd,EAC5B,IACG,KAET,GACD,EASD,SAN4BsO,GAAyBzC,GAAe,IAAQ,CAC1EppB,OAAQ,WACN,MAAO,EACT,IC3gBa,SAAS+rB,GAAUhvB,GAChC,MAAOktB,EAASC,IAAcF,EAAAA,EAAAA,WAAS,GAEjCgC,EAAa,CACjBzW,GAAIA,KAAA,CACF6F,OAAQA,IAAM8O,GAAW,GACzBjP,SAAUA,IAAMiP,GAAW,MAIzBU,EAAgB,IAAK7tB,GAU3B,OARA6tB,EAAcnP,QAAU,CAACuQ,KAAgBjvB,EAAM0e,SAAW,IAEtD1e,EAAMiD,OACR4qB,EAAc5qB,OAAS,mBAAAsiB,EAAA2J,EAAA5yB,UAAAC,OAAI8b,EAAI,IAAA9Z,MAAA2wB,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ9W,EAAI8W,GAAA7yB,UAAA6yB,GAAA,OAAMjC,EAAsB,QAAf3H,EAAGvlB,EAAMiD,cAAM,IAAAsiB,OAAA,EAAZA,EAAArjB,KAAAlC,KAAkBqY,GAAQ,EAAE,EAE3EwV,EAAc3Q,QAAUgQ,EAAUltB,EAAMkd,QAAU,IAG7C9e,EAAAA,EAAAA,KAAC2wB,GAAK,IAAKlB,GACpB,+aCJA,MAAMzuB,WAAiBC,EAAAA,UAGrBC,WAAAA,CAAYU,GACV6I,MAAM7I,GAAMT,GAAA,sBACZG,KAAKQ,QAASV,EAAAA,EAAAA,YAChB,CAEAC,iBAAAA,GACEC,KAAKC,aACP,CAEAC,kBAAAA,GACEF,KAAKC,aACP,CAEAA,WAAAA,GACE,MAAMG,EAAOJ,KAAKM,MAAMF,KAGlBW,EAAsB,EAAdX,EAAKvD,OAGbqE,EAAIC,EAAAA,MAEPC,OAAOhB,EAAKrB,KAAKsC,GAAMA,EAAEC,QACzBK,MAAM,CAAC,EAAGZ,IAEb,IAAI5C,EAAMgD,EAAAA,IAAOf,GAAOiB,GAAWA,EAAEI,QAEnCtD,EADEA,EAAM,EACFgD,EAAAA,IAAOf,GAAOiB,GAAWtE,KAAKoB,IAAIkD,EAAEI,OAAQJ,EAAEI,SAE9C,EAGR,MAAMC,EAAIP,EAAAA,MAEPQ,MAAM,CAhBM,GAgBG,IACfP,OAAO,CAACjD,EAAKgD,EAAAA,IAAOf,GAAOiB,GAAWtE,KAAK6E,IAAIP,EAAEI,WACjDI,OACA6tB,QAAQzuB,GAIX,IAAI0uB,EAFQxuB,EAAAA,IAAUnB,KAAKQ,OAAOC,SAASyB,SAAS,QAAS,IAE9CS,UAAU,QAAQvC,KAAKA,GACtCuvB,EACG1sB,QACAd,OAAO,QACPC,KAAK,SAAS,SAAUf,GACvB,MAAO,aAAeA,EAAEI,MAAQ,EAAI,WAAa,WACnD,IACCW,KAAK,KAAK,SAAUf,GACnB,OAAOH,EAAEG,EAAEC,KACb,IACCc,KAAK,KAAK,SAAUf,GACnB,OAAOK,EAAE3E,KAAKsB,IAAI,EAAGgD,EAAEI,OACzB,IACCW,KAAK,UAAU,SAAUf,GACxB,IAAIJ,EAASlE,KAAK6E,IAAIF,EAAEL,EAAEI,OAASC,EAAE,IAIrC,OAHIL,EAAEI,MAAQ,GAAKJ,EAAEI,MAAQ,KAC3BR,EAASlE,KAAKsB,IAAI4C,EAAQ,KAErBA,CACT,IACCmB,KAAK,QA7CS,GA8CjButB,EACGzL,aACA9hB,KAAK,SAAS,SAAUf,GACvB,MAAO,aAAeA,EAAEI,MAAQ,EAAI,WAAa,WACnD,IACCW,KAAK,KAAK,SAAUf,GACnB,OAAOH,EAAEG,EAAEC,KACb,IACCc,KAAK,KAAK,SAAUf,GACnB,OAAOK,EAAE3E,KAAKsB,IAAI,EAAGgD,EAAEI,OACzB,IACCW,KAAK,UAAU,SAAUf,GACxB,IAAIJ,EAASlE,KAAK6E,IAAIF,EAAEL,EAAEI,OAASC,EAAE,IAIrC,OAHIL,EAAEI,MAAQ,GAAKJ,EAAEI,MAAQ,KAC3BR,EAASlE,KAAKsB,IAAI4C,EAAQ,KAErBA,CACT,IACCmB,KAAK,QAhES,GAiEjButB,EAAKC,OAAO7e,SAEZ/Q,KAAKQ,OAAOC,QAASmC,MAAM7B,MAAQA,EAAQ,KAC3Cf,KAAKQ,OAAOC,QAASmC,MAAM3B,OAASA,MACtC,CAEAsC,MAAAA,GACE,OAAO7E,EAAAA,EAAAA,KAAA,OAAK8E,IAAKxD,KAAKQ,OAAQ7B,UAAU,mBAC1C,EAGF,SAASkxB,KACP,OACEnxB,EAAAA,EAAAA,KAAA,OAAKC,UAAU,iCAAgCC,UAC7C+F,EAAAA,EAAAA,MAAA,OAAKhG,UAAU,yCAAwCC,SAAA,EACrDF,EAAAA,EAAAA,KAACoY,GAAAA,GAAI,CAACxV,KAAK,OAAOP,MAAM,KAAKpC,UAAU,2BACvCD,EAAAA,EAAAA,KAAA,MAAIC,UAAU,yCAAwCC,SAAC,oCACvDF,EAAAA,EAAAA,KAAA,KAAAE,SAAG,4KAIHF,EAAAA,EAAAA,KAAA,KACE2X,KAAK,gFACLlK,OAAO,SACPxN,UAAU,WAAUC,SACrB,mBAMT,CAMA,MAAMkxB,WAAwBnwB,EAAAA,UAAgCC,WAAAA,GAAA,SAAAhD,WAAAiD,GAAA,aACpD,CACNkwB,OAAO,GACR,CAEDxsB,MAAAA,GACE,OACE7E,EAAAA,EAAAA,KAAA,OAAKC,UAAU,UAASC,UACtBF,EAAAA,EAAAA,KAAC4wB,GAAS,CACR9V,UAAU,QACVuE,aAAa,EACbgP,UAAW/sB,KAAKM,MAAMF,KAAK8Z,MAAMhZ,GAAkB,OAAZA,EAAEO,QACzC8B,OAASoqB,IACPjvB,EAAAA,EAAAA,KAAA,OACEC,UAAWsJ,IAAW,wDAAyD,CAC7E,SAAU9E,eAAekU,oBAEvBsW,EAAK/uB,SAERuE,eAAekU,gBACd3Y,EAAAA,EAAAA,KAACsxB,EAAW,CAAC5vB,KAAMJ,KAAKM,MAAMF,KAAMO,aAAa,KAEjDjC,EAAAA,EAAAA,KAACmxB,GAAY,MAGjBjxB,UAEFF,EAAAA,EAAAA,KAAA,OAAAE,UACEF,EAAAA,EAAAA,KAACgB,GAAQ,CAACU,KAAMJ,KAAKM,MAAMF,YAKrC,EAaF,MAAM6vB,WAAmBtwB,EAAAA,UAAgCC,WAAAA,GAAA,SAAAhD,WAAAiD,GAAA,aAG9B,CACvBorB,OAAQjrB,KAAKkwB,oBACbC,MAAO,IACP3pB,UAAW,IACX4pB,SAAU,KACVhwB,KAAM,MACP,CAEDL,iBAAAA,GACEC,KAAKqJ,SACLrJ,KAAKqwB,SAAUC,EAAAA,GAAAA,MACftwB,KAAKqwB,QAAQzd,QACf,CAEA3D,oBAAAA,GAAuB,IAAAshB,EACT,QAAZA,EAAAvwB,KAAKqwB,eAAO,IAAAE,GAAZA,EAAcnlB,SAChB,CAEA7H,MAAAA,GAAS,IAAApD,EACP,MAAM,KAAEC,GAASJ,KAAKsJ,MAEtB,GAAa,OAATlJ,EAEF,OAAO,KAGT,MAAMowB,GAAWpwB,EAAKqwB,MAChBrtB,EAAmC,QAAjBjD,EAAGgD,sBAAc,IAAAhD,OAAA,EAAdA,EAAgBiD,mBAE3C,OACEuB,EAAAA,EAAAA,MAAAC,EAAAA,SAAA,CAAAhG,SAAA,EACEF,EAAAA,EAAAA,KAAA,SACEqC,MAAM,OACN+H,YAAY,IACZC,YAAY,IAEZC,OAAO,IACPrK,UAAU,0BAAyBC,UAEnCF,EAAAA,EAAAA,KAAA,SAAAE,UACE+F,EAAAA,EAAAA,MAAA,MAAA/F,SAAA,EACE+F,EAAAA,EAAAA,MAAA,MAAI/B,MAAOO,eAAekU,eAAiB,CAAEqZ,YAAa,GAAM,CAAC,EAAE9xB,SAAA,CAChEuE,eAAekU,iBAEd1S,EAAAA,EAAAA,MAAA,UACEhG,UAAWsJ,IAAW,CACpB,yBAA0B7E,EAC1B,YAAaA,IAEf3B,MAAOzB,KAAKsJ,MAAM2hB,OAClBjd,SAAWnC,IACTA,EAAEC,iBACF,MAAMmf,EAA4B,MAAnBpf,EAAEM,OAAO1K,MAAgB,IAAM,IAC9CzB,KAAK0K,SACH,CACEugB,OAAQA,IAEV,KACEjrB,KAAKqJ,QAAQ,KAGjBsnB,EAAAA,GAAAA,UAAS,oBAAqB1F,EAlE7B,KAkEqD,EAAM,EAC5DrsB,SAAA,EAEFF,EAAAA,EAAAA,KAAA,UAAQ+C,MAAM,IAAG7C,SAAC,aAClBF,EAAAA,EAAAA,KAAA,UAAQ+C,MAAM,IAAG7C,SAAC,eAGrBuE,eAAekU,iBAAkB3Y,EAAAA,EAAAA,KAAAkG,EAAAA,SAAA,CAAAhG,SAAE,SAEpC+F,EAAAA,EAAAA,MAAA,QAAMhG,UAAU,iBAAgBC,SAAA,CAC7BoB,KAAK4wB,iBAAiB,IAAK,oBAAoB,MAAI5wB,KAAK4wB,iBAAiB,IAAK,iBAAiB,KAAG,IAClG5wB,KAAK4wB,iBAAiB,IAAK,oBAGhClyB,EAAAA,EAAAA,KAAA,MAAImG,MAAM,QAAOjG,UACf+F,EAAAA,EAAAA,MAAA,QAAMhG,UAAU,iBAAgBC,SAAA,CAC7BoB,KAAK6wB,qBAAqB,IAAK,UAAU,MAAI7wB,KAAK6wB,qBAAqB,IAAK,yBAMtFL,IAAW9xB,EAAAA,EAAAA,KAACoyB,GAAe,IAAK9wB,KAAKsJ,SACpCknB,IACA9xB,EAAAA,EAAAA,KAAA,SACEqC,MAAM,OACN+H,YAAY,IACZC,YAAY,IAEZC,OAAO,IACPrK,UAAWsJ,IAAW,CACpB,qEAAsE7E,EACtE,+CAAgDA,EAChD,WAAYD,eAAekU,iBAC1BzY,UAEHF,EAAAA,EAAAA,KAAA,SAAAE,UACEF,EAAAA,EAAAA,KAAA,MAAIC,UAAU,gFAA+EC,UAC3FF,EAAAA,EAAAA,KAAA,MAAIC,UAAWyE,EAAqB,GAAK,eAAexE,SAAC,0FASvE,CAEAgyB,gBAAAA,CAAiB7sB,EAAYlB,GAC3B,MAAM,MAAEstB,GAAUnwB,KAAKsJ,MACvB,OACE5K,EAAAA,EAAAA,KAAA,KACE2X,KAAK,IACL1X,UAAWsJ,IAAW,WAAY,CAAE,YAAakoB,IAAUpsB,IAC3DgtB,QAAUllB,IACRA,EAAEC,iBACF9L,KAAK0K,SACH,CACEylB,MAAOpsB,IAET,KACE/D,KAAKqJ,QAAQ,GAEhB,EACDzK,SAEDiE,GAGP,CAEAguB,oBAAAA,CAAqB9sB,EAAYlB,GAC/B,MAAM,UAAE2D,GAAcxG,KAAKsJ,MAC3B,OACE5K,EAAAA,EAAAA,KAAA,KACE2X,KAAK,IACL1X,UAAWsJ,IAAW,WAAY,CAAE,YAAazB,IAAczC,IAC/DgtB,QAAUllB,IACRA,EAAEC,iBACF9L,KAAK0K,SACH,CACElE,UAAWzC,IAEb,KACE/D,KAAKqJ,QAAQ,GAEhB,EACDzK,SAEDiE,GAGP,CAEA,YAAMwG,GACJ,MAAM,OAAE4hB,EAAM,MAAEkF,EAAK,UAAE3pB,GAAcxG,KAAKsJ,OACpC,EAAEkB,IAAMC,EAAAA,EAAAA,KAEd,IACE,MAAMumB,QAAiBC,MAAM,yBAADroB,OAA0B4B,EAAC,QAAA5B,OAAOqiB,EAAM,OAAAriB,OAAMunB,GAAKvnB,OAAGpC,IAC5E0qB,QAAaF,EAASE,OAE5BlxB,KAAK0K,SAAS,CACZ0lB,SAAUc,EAAKd,SACfhwB,KAAM8wB,EAAKT,MAAQS,EAAOA,EAAK9wB,MAEnC,CAAE,MAAO,CACX,CAEA8vB,iBAAAA,GACE,OAAK/sB,eAAekU,gBAI6C,OAA1D8Z,EAAAA,GAAAA,UAAiB,oBArLL,KAqLoD,IArLpD,GAsLrB,EAGF,SAASL,GAAehtB,GAAsC,IAAAstB,EAAA,IAArC,KAAEhxB,EAAI,SAAEgwB,GAA2BtsB,EAC1D,IAAK1D,EAAM,OAAO,KA2BlB,SAASixB,EAAY1kB,GACnB,OAAQA,GACN,IAAK,kBACL,IAAK,gBACH,OAAO,EAGX,OAAO,CACT,CAEA,SAAS2kB,EAAe3kB,GACtB,OAAQA,GACN,IAAK,kBACL,IAAK,gBACL,IAAK,wBACL,IAAK,kBACL,IAAK,eACL,IAAK,0BACL,IAAK,mBACL,IAAK,0BACL,IAAK,aACL,IAAK,uBACL,IAAK,eACL,IAAK,4BACL,IAAK,oBACL,IAAK,eACL,IAAK,+BACL,IAAK,iCACL,IAAK,iCACL,IAAK,iCACL,IAAK,qBACL,IAAK,0BACL,IAAK,sBACL,IAAK,0BACH,OAAO,EAGX,OAAO,CACT,CAEA,MAAMvJ,EAAmC,QAAjBguB,EAAGjuB,sBAAc,IAAAiuB,OAAA,EAAdA,EAAgBhuB,mBACrCmuB,EAAYnuB,EAAqB,GAAK,eAEtCouB,EAA2C,QAA/BpxB,EAAK,mBAAmB,GACpCqxB,EArEN,SAAmBrxB,EAAgCoxB,GACjD,IAAIE,EAAc,CAAC,EAqBnB,OApBAzzB,OAAO0b,KAAKvZ,GAAMmI,SAASuR,IACzB4X,EAAO5X,GAAO1Z,EAAK0Z,GAChB/a,KAAI,CAAC0C,EAAOxC,KACX,GAAIoyB,EAAYvX,GAAM,CACpB,IAAI6X,EAMJ,OAJEA,EADY,KAAVlwB,EACY,KAEAkH,WAAWlH,EAAMslB,QAAQ,KAAM,KAExC,CACLzlB,KAAMlB,EAAK,mBAAmBnB,GAC9BwC,MAAOkwB,EAEX,CACA,OAAO,IAAI,IAEZ5pB,MAAMypB,EAAY,EAAI,EAAE,IAGtBE,CACT,CA8CmBE,CAAUxxB,EAAMoxB,GAC7BK,GAAmBzuB,GAAsBhD,EAAK,iBAAmB,EAAI,EAE3E,OACEuE,EAAAA,EAAAA,MAAAC,EAAAA,SAAA,CAAAhG,SAAA,EACEF,EAAAA,EAAAA,KAAA,SACEqC,MAAM,OACN+H,YAAY,IACZC,YAAY,IAEZC,OAAO,IACPrK,UAAWsJ,IAAW,CACpB,qEAAsE7E,EACtE,+CAAgDA,EAChD,WAAYD,eAAekU,iBAC1BzY,UAEHF,EAAAA,EAAAA,KAAA,SAAAE,SACGX,OAAO0b,KAAKvZ,GAAMrB,KAAI,CAAC+a,EAAKgY,KAC3BntB,EAAAA,EAAAA,MAAA,MAEEhG,UAAWsJ,IAAW,CACpB,gFAAiF7E,EACjF,iBAAkBA,GAAsBkuB,EAAexX,GACvD,kBAAmB1W,GAAsBkuB,EAAexX,GACxD,mBAAoB1W,IAAuBkuB,EAAexX,GAC1D,YAA0B,IAAbgY,EACb,YAAaA,IAAaD,IACzBjzB,SAAA,EAEHF,EAAAA,EAAAA,KAAA,MAAIC,UAAW4yB,EAAU3yB,SAAEkb,KAC3Bpb,EAAAA,EAAAA,KAAA,MAAIC,UAAW4yB,EAAW1sB,MAAM,SAAQjG,SACrCyyB,EAAYvX,KAAQpb,EAAAA,EAAAA,KAACoxB,GAAe,CAAC1vB,KAAMqxB,EAAW3X,GAAKlW,cAE7DxD,EAAK0Z,GAAK/a,KAAI,CAAC0C,EAAOxC,KACrB,IAAKkE,eAAekU,eAAgB,CAClC,GAAIya,IAAaD,GAA6B,IAAV5yB,EAClC,OACE0F,EAAAA,EAAAA,MAAA,MAEEE,MAAM,QACNlG,UAAU,mCACVozB,QAAS9zB,OAAO0b,KAAKvZ,GAAMvD,OAAS,EACpCm1B,QAAS5xB,EAAK0Z,GAAKjd,OAAS,EAAE+B,SAAA,EAE9BF,EAAAA,EAAAA,KAACuzB,GAAAA,GAAK,CACJ3wB,KAAK,gBACL3C,UAAU,6DAEZD,EAAAA,EAAAA,KAACoY,GAAAA,GAAI,CAACxV,KAAK,OAAOP,MAAM,KAAKpC,UAAU,2BACvCD,EAAAA,EAAAA,KAAA,MAAIC,UAAU,yCAAwCC,SAAC,oCACvDF,EAAAA,EAAAA,KAAA,KAAGC,UAAU,wCAAuCC,SAAC,4KAKrDF,EAAAA,EAAAA,KAAA,KACE2X,KAAK,gFACLlK,OAAO,SACPxN,UAAU,WAAUC,SACrB,iBArBIK,GA2BX,GACEA,EAAQ,IACNmE,GAA8B,oBAAR0W,GACb,oBAARA,GAAqC,kBAARA,GAEhC,OAAO,IAEX,CAEA,OACEpb,EAAAA,EAAAA,KAAA,MAAgBmG,MAAM,QAAQlG,UAAW4yB,EAAU3yB,SAChD6C,GADMxC,EAEJ,MA1DJ6a,UAiEbpb,EAAAA,EAAAA,KAAA,SACEC,UAAU,0BACVoC,MAAM,OACN+H,YAAY,IACZC,YAAY,IAEZC,OAAO,IAAGpK,UAEVF,EAAAA,EAAAA,KAAA,SAAAE,UACEF,EAAAA,EAAAA,KAAA,MAAAE,UACE+F,EAAAA,EAAAA,MAAA,MAAIE,MAAM,QAAOjG,SAAA,CAAC,uBAAqBwxB,aAMnD,CAEA,4BC7hBA,MAAM8B,GAAuC,uCACvCC,GAAqC,yBCmBvChvB,eAAekU,gBAAkBlU,eAAeC,qBAClD,gCAA0EgvB,MAAKtuB,IAA4B,IAA3B,mBAAEuuB,GAAoBvuB,EACpGuuB,GAAoB,IAIxB,MAAMC,GAAkBpf,IAAmE,IAAlE,sBAAEiE,GAA2DjE,EACpF,MAAMqf,EAAoBzjB,SAAS0jB,uBAAuB,cACpDC,EAAwB5zB,MAAMC,KAAKyzB,GAAmBrmB,QAAQ0O,GAAOA,aAAc8X,cAEzF,OAAID,EAAsB51B,OAAS,GAE/B6B,EAAAA,EAAAA,KAAAkG,EAAAA,SAAA,CAAAhG,SACG6zB,EAAsB1zB,KAAI,CAAC4zB,EAA+BC,KACzD,MAAMC,EAAYD,EAAiB,EACnC,OAAOE,EAAAA,cACLp0B,EAAAA,EAAAA,KAACuY,GAAS,CACRhY,MAAO4zB,EACP3b,mBAAkC,IAAd2b,EACpB1b,sBAAuBA,IAEzBwb,EACD,MAKF,IAAI,EAGPI,GAAa,CACjB,CACEC,SAAU,4BACVC,cC9CW,SAA4BnvB,GAAsC,IAArC,MAAE7E,GAAiC6E,EAC7E,MAAM,EAAE0G,IAAMC,EAAAA,EAAAA,KACRyoB,EAAY1oB,EAAEyB,MAAM,KAAKhN,GACzBk0B,GAASC,EAAAA,GAAAA,MACTvW,EAAYsW,EAAO5F,SAAS,SAE3B8F,IAAyBh0B,EAAAA,EAAAA,GAAe,IAC1Ci0B,GAAAA,EACHh0B,iBAAkBud,IAEd0W,EAAkBF,aAAqB,EAArBA,EAAuBE,gBAE/C,OACE5uB,EAAAA,EAAAA,MAAAC,EAAAA,SAAA,CAAAhG,SAAA,EACEF,EAAAA,EAAAA,KAAA,QACEqyB,QAAUllB,IAAM,IAAA2nB,EAAAC,EACd5nB,EAAEC,iBACS,QAAX0nB,GAAAC,EAAAnX,QAAOoX,YAAI,IAAAF,GAAXA,EAAAhxB,KAAAixB,EAAc,QAAS,QAAS,CAAEE,eAAgB,sBAClDR,EAAO1P,MAAM,EACb7kB,SACH,uBAGDF,EAAAA,EAAAA,KAACk1B,GAAAA,GAAM,CAACtqB,MAAO6pB,EAAQ,aAAW,oBAAoBx0B,UAAU,QAAOC,SACpE20B,GACC70B,EAAAA,EAAAA,KAAC60B,EAAe,CAACltB,OAAQ6sB,KAEzBx0B,EAAAA,EAAAA,KAAA,OAAKC,UAAU,wCAAuCC,UACpDF,EAAAA,EAAAA,KAACQ,EAAAA,EAAO,UAMpB,GDcE,CACE8zB,SAAU,uBACVC,cElDW,SAAwBnvB,GAAkC,IAAjC,MAAE7E,GAA6B6E,EACrE,MAAM,EAAE0G,IAAMC,EAAAA,EAAAA,KACRyoB,EAAY1oB,EAAEyB,MAAM,KAAKhN,GACzBk0B,GAASC,EAAAA,GAAAA,MACTvW,EAAYsW,EAAO5F,SAAS,SAE3BsG,IAAqBx0B,EAAAA,EAAAA,GAAe,IACtCy0B,GAAAA,EACHx0B,iBAAkBud,IAEdkX,EAAcF,aAAiB,EAAjBA,EAAmBE,YAEvC,OACEpvB,EAAAA,EAAAA,MAAAC,EAAAA,SAAA,CAAAhG,SAAA,EACEF,EAAAA,EAAAA,KAAA,QACEqyB,QAAUllB,IAAM,IAAA2nB,EAAAC,EACd5nB,EAAEC,iBACS,QAAX0nB,GAAAC,EAAAnX,QAAOoX,YAAI,IAAAF,GAAXA,EAAAhxB,KAAAixB,EAAc,QAAS,QAAS,CAAEE,eAAgB,iBAClDR,EAAO1P,MAAM,EACb7kB,SACH,kBAGDF,EAAAA,EAAAA,KAACk1B,GAAAA,GAAM,CAACtqB,MAAO6pB,EAAQ,aAAW,eAAex0B,UAAU,YAAWC,SACnEm1B,GACCr1B,EAAAA,EAAAA,KAACq1B,EAAW,CAAC1tB,OAAQ6sB,KAErBx0B,EAAAA,EAAAA,KAAA,OAAKC,UAAU,wCAAuCC,UACpDF,EAAAA,EAAAA,KAACQ,EAAAA,EAAO,UAMpB,IF+BM80B,GAAoBA,MACxBC,EAAAA,GAAAA,KACA,MAAMC,EAAUplB,SAASgC,eAAeqjB,EAAAA,IAClC7tB,EAAcgW,OAAO8X,kBACrBzuB,EAAQxC,eAAeG,aAAesC,EAAAA,GAAMC,KAAOD,EAAAA,GAAME,MAE/D,GAAIouB,GAAW5tB,EAAa,CAC1B,MAAM,EAAEkP,EAAIrS,eAAekxB,gBAA+B5pB,EAAAA,EAAAA,KAC1D,OAAOqoB,EAAAA,cACLp0B,EAAAA,EAAAA,KAAC41B,EAAAA,GAA0B,CACzB7sB,OAAQ,IACHnB,MACAiuB,EAAAA,GAAAA,GAAyBjuB,EAAakP,GACzCpO,2BAA4BC,EAAAA,GAA2BmtB,UACvDjjB,OAAQjL,EAAYiL,OAAOxS,KAAK8T,IAAK,IAAA4hB,EAAA,MAAM,IACtC5hB,EACH6hB,UACEvxB,eAAekU,gBAAkBsd,EAAAA,GAAiBvuB,SAAwB,QAAhBquB,EAAC5hB,EAAM6hB,iBAAS,IAAAD,EAAAA,EAAI,IAC1E5hB,EAAM6hB,UACN,KACP,IACD/uB,SAEFivB,cAAeV,IAEjBA,EAEJ,CACA,OAAO,IAAI,EACZ,IAEIW,GAAa,SAAbA,GAAa,OAAbA,EAAa,0BAAbA,EAAa,YAAbA,EAAa,YAAbA,EAAa,kBAAbA,CAAa,EAAbA,IAAa,IAOlB,SAASC,KACP,MAAM,GAAEvf,EAAE,EAAEjQ,IAAMmF,EAAAA,EAAAA,KAElB,MAAW,MAAP8K,EACKsf,GAAc5rB,KAEZ,OAAPsM,EACKsf,GAAcE,QAEnBzvB,EACKuvB,GAAcG,KAGhBH,GAAcI,WACvB,CAqBA,MAAMC,GAA2BA,KAC/B,MAAM,sBAAE/d,GD9IH,WACL,MAAMhC,GAAWC,EAAAA,GAAAA,OACX,EAAEI,EAAC,GAAED,IAAO9K,EAAAA,EAAAA,GAAkB0K,EAASO,QACvCyf,EAAmB/rB,EAAAA,QAAa,IAC/B+N,EAAuBie,GAA4BhsB,EAAAA,UAAe,GAiEzE,OA/DAA,EAAAA,WAAgB,KACd,MAAMisB,EAAsBvmB,SAAS0jB,uBAAuBL,IACtDmD,EAAsBxmB,SAAS0jB,uBAAuBN,IACtDqD,EAAkB,IAAIC,gBAqD5B,OAnDIL,EAAiB10B,UACf40B,EAAoBx4B,OAAS,GAAGu4B,GAAyB,GAE7DnE,MAAM9b,EAASsgB,SAAWtgB,EAASO,OAAQ,CAAEggB,OAAQH,EAAgBG,SAClEtD,MAAMpB,GAAaA,EAASnuB,SAC5BuvB,MAAMvvB,IACL,MAAM8yB,GAAa,IAAIC,WAAYC,gBAAgBhzB,EAAM,aAGzD,GAAIwyB,EAAoBx4B,OAAS,EAAG,CAClC,MAAMi5B,EAA0Bj3B,MAAMC,KAAKu2B,GACrCU,EAA6Bl3B,MAAMC,KACvC62B,EAAWnD,uBAAuBL,MAGhC4D,aAA0B,EAA1BA,EAA4Bl5B,UAAWi5B,EAAwBj5B,OACjEi5B,EAAwBvtB,SAAQ,CAAC4S,EAASlc,KACxCkc,EAAQ6a,OAAS,IAAMZ,GAAyB,GAChDja,EAAQ8a,IAAMF,EAA2B92B,GAAOg3B,GAAG,IAGrDb,GAAyB,EAE7B,CAGA,MAAMc,EAAwCr3B,MAAMC,KAAKw2B,GACnDa,EAA2Ct3B,MAAMC,KACrD62B,EAAWnD,uBAAuBN,MAGhCiE,aAAwC,EAAxCA,EAA0Ct5B,UAAWq5B,EAAsCr5B,QAC7Fq5B,EAAsC3tB,SAAQ,CAAC4S,EAASlc,KACtDkc,EAAQza,UAAYy1B,EAAyCl3B,GAAOyB,SAAS,IAKjF,MAAM01B,EAAkCT,EAAW7kB,eAnD7B,8BAoDlBslB,SAAAA,EAAiCC,QAAQC,uBAC3CnzB,eAAeozB,eAAiBH,EAAgCC,QAAQC,qBAC1E,IAEDE,OAAOC,IACNrB,GAAyB,GACR,eAAbqB,EAAIn1B,MACNo1B,OAAOC,iBAAiBF,EAC1B,KAGNtB,EAAiB10B,SAAU,EACpB,KACL80B,EAAgBqB,OAAO,CACxB,GAGA,CAACphB,EAAGD,IAEA,CAAE4B,wBACX,CCwEoC0f,GAC5BC,EAAgBhC,KAChBiC,EAAkBD,IAAkBjC,GAAc5rB,KAClD+tB,EAAqBF,IAAkBjC,GAAcE,QACrDkC,EAAY3a,OAAO8X,kBAIzB,OAFA8C,EAAAA,EAAAA,MAGEvyB,EAAAA,EAAAA,MAAC2S,EAAAA,GAAmB,CAAA1Y,SAAA,CACjBq4B,GAAaF,GAAmBC,GAC/Bt4B,EAAAA,EAAAA,KAACy4B,EAAAA,SAAQ,CAACC,SAAU,KAAKx4B,UACvBF,EAAAA,EAAAA,KAAC4zB,GAAe,CAACnb,sBAAuBA,MAExC,KACH8f,IAAcD,IAAuBD,IACpCr4B,EAAAA,EAAAA,KAACy4B,EAAAA,SAAQ,CAACC,SAAU,KAAKx4B,UACvBF,EAAAA,EAAAA,KAACs1B,GAAiB,QAGF,GAI1BqD,EAAAA,EAAAA,IAAM,KACJ,MAAMC,EAAexoB,SAASgC,eAAe,cACzCwmB,GAAgBhb,OAAc,OAChCwW,EAAAA,QAAgBp0B,EAAAA,EAAAA,KAACuxB,GAAU,IAAKqH,GAGlC,MAAMC,EAAgBzoB,SAASgC,eAAe,mBAC1CymB,GACFzE,EAAAA,QACEp0B,EAAAA,EAAAA,KAAC6I,EAAAA,GAAa,CAAA3I,UACZF,EAAAA,EAAAA,KAACe,EAAW,MAEd83B,GAIJ,MAAMC,EAAO1oB,SAASgC,eAAe,eACjC0mB,GACF1E,EAAAA,QAAgBp0B,EAAAA,EAAAA,KAACgG,EAAiB,IAAK8yB,GAGzC,MAAMC,EAAmB3oB,SAASgC,eAAe,cAC3C4mB,EAAkB5oB,SAASgC,eAAeX,GAU1B,IAAAwnB,GARlBx0B,eAAey0B,WACjB5xB,EAAAA,GAAM4M,OAAOzP,eAAey0B,WAG1Btb,OAAO8X,oBAAsB9X,OAAO8X,kBAAkByD,OACxDvb,OAAO8X,mBAAoB0D,EAAAA,EAAAA,MAGzBL,KAC0B,QAA5BE,EAAIrb,OAAO8X,yBAAiB,IAAAuD,GAAxBA,EAA0BI,aAC5BC,EAAAA,EAAAA,IAAe1b,OAAO8X,kBAAkB2D,WAAYzb,OAAO8X,mBAG7DtB,EAAAA,QACEp0B,EAAAA,EAAAA,KAAC6I,EAAAA,GAAa,CAAA3I,UACZF,EAAAA,EAAAA,KAACw2B,GAAwB,MAE3BuC,IAIJ,GAAIC,EAAiB,CACnB,MAAMO,EA1FV,WAGE,GAFsBnD,OAEAD,GAAcI,YAClC,OACEv2B,EAAAA,EAAAA,KAACy4B,EAAAA,SAAQ,CAACC,SAAU,KAAKx4B,UACvBF,EAAAA,EAAAA,KAACwT,GAAuB,MAK9B,MAAMzK,EAAS6U,OAAO8X,kBACtB,OAAI3sB,GACK/I,EAAAA,EAAAA,KAAC2T,GAAqB,CAAC5K,OAAQA,IAGjC,IACT,CAyE+BywB,GACvBD,GACFnF,EAAAA,OAAgBmF,EAAoBP,EAExC,CA9JA3E,GAAWxqB,SAAQimB,IAAiC,IAAhC,SAAEwE,EAAQ,cAAEC,GAAezE,EAC7C,MAAM2J,EAAerpB,SAAS0jB,uBAAuBQ,GAC5Bn0B,MAAMC,KAAKq5B,GAAcjsB,QAAQ0O,GAAOA,aAAc8X,cAE9DnqB,SAAQ,CAAC6vB,EAAan5B,KACrC6zB,EAAAA,QAAgBp0B,EAAAA,EAAAA,KAACu0B,EAAa,CAACh0B,MAAOA,IAAWm5B,EAAY,GAC7D,IA4JAtpB,SAASgC,eAAe,QAAUwL,OAA2B,oBAC/DwW,EAAAA,QAAgBp0B,EAAAA,EAAAA,KAACuK,EAAI,IAAK6F,SAASgC,eAAe,OACpD,IAGF,MAAMunB,GAAgCvpB,SAAS0jB,uBAAuB,4BAC1C3zB,MAAMC,KAAKu5B,IACnB9vB,SAAS+vB,IAC3BA,EAAmBC,QAAW1sB,IAC5BA,EAAEC,iBACF,MAAM0sB,EAAsBF,EAAmBG,uBAE/CD,SAAAA,EAAqB/d,iBAAiB,YAAYlS,SAAQ,CAACmwB,EAAQz5B,EAAO2I,KACpE8wB,EAAO9nB,UAAUmL,SAAS,YAC5B2c,EAAO9nB,UAAUG,OAAO,WAG1B2nB,EAAO9nB,UAAUG,OAAO,UAEpB9R,IAAU2I,EAAK/K,OAAS,GAC1B67B,EAAO9nB,UAAUC,IAAI,UACvB,IAGFynB,EAAmB1nB,UAAUC,IAAI,UACjCyL,OAAOoX,MAAQpX,OAAOoX,KAAK,QAAS,QAAS,CAAEC,eAAgB,kBAAmB,CACnF,uGGxPI,SAASY,EACdoE,GAKA,IADAnjB,EAAC5Y,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG6J,EAAAA,GAAUpF,EAEd,MAAM,YAAEu3B,GAAgB9pB,SAASsJ,MAC3B,UAAEygB,EAAS,YAAEC,EAAW,UAAEpE,GAAciE,EAAapnB,OAAO,GAC5DwnB,EAAgBH,EAAc,GACpC,IAAI73B,EAAQ,IACRi4B,EAAW,EACXC,EAAY,EACZC,EAAmB,EAGvB,OADEP,EAAavxB,6BAA+BC,EAAAA,GAA2BmtB,UAAYhf,EAAI/O,EAAAA,GAAUpF,GAEjG,KAAKoF,EAAAA,GAAU0yB,GACbD,EAAmB,EACnBF,EAAW,GACPH,GAAaC,GAAeF,EAAc,QAC5CK,EAAY,GAEd,MACF,KAAKxyB,EAAAA,GAAU2yB,GACbF,EAAmB,EACnB,MACF,KAAKzyB,EAAAA,GAAU4yB,GACbH,EAAmB,EACfL,GAAaC,GAAeF,GAAe,OAC7CI,EAAW,GAEb,MACF,KAAKvyB,EAAAA,GAAU6yB,GACbJ,EAAmB,EACnBF,EAAW,EACXC,EAAYL,GAAe,KAAO,EAAI,EACtC,MACF,KAAKnyB,EAAAA,GAAU8yB,IACbx4B,EAAQ,KACRk4B,EAAY,EACZ,MACF,KAAKxyB,EAAAA,GAAU+yB,IACf,KAAK/yB,EAAAA,GAAUgzB,IACb14B,EAAQ,KACR,MACF,KAAK0F,EAAAA,GAAUgD,EACb1I,EAAQ,KACR,MACF,KAAK0F,EAAAA,GAAUizB,GACf,KAAKjzB,EAAAA,GAAUkzB,GACb54B,EAAQ,KACR,MACF,KAAK0F,EAAAA,GAAUpF,EACbN,EAAQ,KACR,MACF,KAAK0F,EAAAA,GAAUmzB,EACf,KAAKnzB,EAAAA,GAAU+E,EACbzK,EAAQ,IAIZ,OAAQyU,GACN,KAAK/O,EAAAA,GAAU0yB,GACf,KAAK1yB,EAAAA,GAAU2yB,GACf,KAAK3yB,EAAAA,GAAU4yB,GACf,KAAK5yB,EAAAA,GAAU6yB,GACb,MAAMO,EAAc,CAClBX,mBACAY,mBAAoBd,EAAW,EAAIC,EACnCc,eAAgBjB,EAChBkB,aAAcnB,GAEhB93B,GAAQk5B,EAAAA,EAAAA,IAAuB,IAC1BJ,EACHna,SAAUqZ,EACVmB,cAAexF,IACdyF,qBAmBP,OAdIpB,GAAiBh4B,IACnBA,EAAQhE,KAAKsB,IAAI,IAAK06B,GAClBvjB,IAAM/O,EAAAA,GAAUpF,IAClB23B,EAAW,EACXC,EAAY,EACZl4B,EAAQ,MAIR43B,EAAad,OACfmB,EAAWL,EAAaK,SACxBC,EAAYN,EAAaM,WAGpB,CACLl4B,QACAi4B,WACAC,YAEJ,CAEO,SAAShF,IAA2B,IAAA7iB,EAAAgpB,EACzC,MAAM,WAAEC,IAAeC,EAAAA,EAAAA,MACjB,iBAAEnpB,IAAqBgB,EAAAA,EAAAA,MACvBooB,EAAsBnxB,EAAAA,SAAc,SAAAoxB,EAAA,OAAyC,QAAzCA,EAAMrpB,aAAgB,EAAhBA,EAAkBI,SAAS3G,MAAM,UAAE,IAAA4vB,EAAAA,EAAI,IAAI,GAAE,CAACrpB,IACxFE,GAAaC,EAAAA,EAAAA,IAAcipB,EAAqB,CAAE9oB,gBAAiB,CAAC,WACpE5G,GAAQyG,EAAAA,EAAAA,IAAiC,QAApBF,EAACC,aAAU,EAAVA,EAAYxG,eAAO,IAAAuG,EAAAA,EAAI,KAAM,CAAEK,gBAAiB,CAAC,SAAU,YAAa,gBAC9FgpB,EAAStpB,SAAsB,QAANipB,EAAhBjpB,EAAkB0mB,YAAI,IAAAuC,OAAA,EAAtBA,EAAwBr2B,GAEvCqF,EAAAA,WAAgB,KACd,MAAMsxB,EAAYD,EAAsC,KAA7BtpB,aAAgB,EAAhBA,EAAkBupB,SACvCl0B,EAAYqE,aAAK,EAALA,EAAOrE,UACzB,GAAI2K,GAAoB3K,GAAak0B,EAAU,CAC7C,MAAM,MAAE35B,EAAK,SAAEi4B,EAAQ,UAAEC,GAAc1E,EAAyBpjB,EAAiBwpB,WAAYn0B,GACvFo0B,EAAcra,KAAKC,MAAMD,KAAKsa,UAAUH,IAC9CE,EAAYE,cAAcC,OAAO/B,SAAWA,EAC5C4B,EAAYI,kBAAkBD,OAAO/B,SAAWA,EAChD4B,EAAYE,cAAcC,OAAO9B,UAAYA,EAC7C2B,EAAYI,kBAAkBD,OAAO9B,UAAYA,EACjD9nB,EAAiB/G,iBAAiB,CAAErJ,QAAO25B,SAAUE,GACvD,IAGC,CAAC/vB,aAAK,EAALA,EAAOguB,UAAWhuB,aAAK,EAALA,EAAOiuB,YAAajuB,aAAK,EAALA,EAAOrE,UAAWi0B,EAAQJ,GACtE,iFC5GO,SAAS9zB,EAAoBzC,GAWT,IAXU,MACnC/C,EAAQ,IAAG,OACXE,EAAS,IAAG,OACZoF,EAAM,UACNG,EAAS,aACTE,EAAY,2BACZU,EAA6BC,EAAAA,GAA2B4zB,QAAO,eAC/DC,EAAc,MACdv1B,EAAK,OACLw1B,EAASC,IAA4B,YACrCj0B,GAAc,GACSrD,EACvB,MAAO,CACLu3B,OAAQC,EAAAA,GAAW,QACnBv6B,QACAE,SACA+3B,SAAU,EACVC,UAAW,EACXsC,YAAY,EACZC,UAAU,EACVp0B,6BACA8zB,iBACAv1B,QACAw1B,SACA5pB,OAAQ,CACN,CACExQ,MAAO,EACP83B,WAAW,EACXC,aAAa,EACbpE,UAAW,KACXzzB,SACAuF,YACAhC,MAAOi3B,EAAAA,GAAUC,OACjBr1B,OAAQA,EACRs1B,WAAY,EACZtwB,WAAYC,EAAAA,GAAWC,MACvBpE,cACAy0B,SAAS,EACTjpB,MAAO,CACL,CACE1R,SACA6pB,SAAUpkB,MAMtB,CAEO,SAAS00B,IACd,IACE,OAAO7a,KAAKC,OAAMqb,EAAAA,EAAAA,IAAiB,gBACrC,CAAE,MACA,MACF,CACF,qGC5EO,MAAMC,EAAkB,uCAAsC,IAEhEC,EAAS,SAATA,GAAS,OAATA,EAAS,8BAATA,EAAS,+BAATA,EAAS,4BAATA,EAAS,yBAATA,CAAS,EAATA,GAAS,IAOd,MAAMC,EAAgB,CACpB,CAACD,EAAUE,oBAAqB,CAAEC,WAAY,EAAGt5B,MAAO,CAAE7B,MAAO,IAAKsM,UAAW,MACjF,CAAC0uB,EAAUI,iBAAkB,CAAED,WAAY,EAAGt5B,MAAO,CAAE7B,MAAO,IAAKsM,UAAW,MAC9E,CAAC0uB,EAAUK,eAAgB,CAAEF,WAAY,EAAGt5B,MAAO,CAAE7B,MAAO,IAAKsM,UAAW,KAC5E,CAAC0uB,EAAUM,WAAY,CAAEH,WAAY,EAAGt5B,MAAO,CAAE7B,MAAO,IAAKsM,UAAW,OAGpEivB,EAAyBC,EAAAA,OAA8BA,EAAAA,GAAqBC,iBAK3E,SAASlM,IACd,IAAImM,EA0BJ,MAAO,CAAE7pB,OAxBT,WACE,IAC8B,IAAA8pB,EAA5B,GAAIJ,EAC0B,QAA5BI,EAAApgB,OAAOqgB,6BAAqB,IAAAD,GAA5BA,EAA8Bt0B,MAAK,KAAM,IAAAw0B,EACvCH,EAA8B,QAA1BG,EAAGtgB,OAAOkgB,wBAAgB,IAAAI,OAAA,EAAvBA,EAAyBC,IAAIC,IAAIhB,EAAgB,GAG9D,CAAE,MAAOjwB,GACPkxB,QAAQtM,MAAM5kB,EAChB,CACF,EAciBT,QAZjB,WACE,IAC8B,IAAA4xB,EAA5B,GAAIV,EAC0B,QAA5BU,EAAA1gB,OAAOqgB,6BAAqB,IAAAK,GAA5BA,EAA8B50B,MAAK,KAAM,IAAA60B,EACnC,QAAJA,EAAAR,SAAI,IAAAQ,GAAJA,EAAM7xB,SAAS,GAGrB,CAAE,MAAOS,GACPkxB,QAAQtM,MAAM5kB,EAChB,CACF,EAGF,CAKO,SAASqxB,IAA6C,IAAtB7O,EAAezxB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GAWvD,OAVAwM,EAAAA,iBAAsB,KACpB,MAAMqzB,EAAOnM,IAIb,OAFAmM,EAAK7pB,SAEE,IAAM6pB,EAAKrxB,SAAS,GAG1BijB,GAEIiO,CACT,CAqBO,SAASrK,EAAKnuB,GAA+C,IAA9C,KAAExC,EAAI,SAAE2M,EAAW,KAAM3N,GAAmBwD,EAChE,MAAMq5B,EAAUpB,EAAUz6B,GACpB87B,EAAWpB,EAAcmB,GACzBE,EAAgB,GAAHz0B,OAAMu0B,EAAO,KAAAv0B,OAAI7L,KAAKoB,IAAIpB,KAAKsB,IAAI4P,EAAU,GAAImvB,EAASlB,aAE7E,OAAKI,GAEE59B,EAAAA,EAAAA,KAAA,UAAS4B,EAAOyD,GAAIs5B,EAAez6B,MAAO,IAAKtC,EAAMsC,SAAUw6B,EAASx6B,SAF3C,IAGtC,mDCjGO,SAASk1B,IAMd,GALAxb,OAAO8X,kBAAkBmH,YAAa,EAClCp4B,eAAekU,iBACjBiF,OAAO8X,kBAAkBmH,WAAajf,OAAO8X,kBAAkBoH,WAAa1xB,EAAAA,GAAMwzB,YAGhFn6B,eAAeo6B,GAAI,CACrB,MAAMC,EAAOr6B,eAAeq6B,KAC5BC,EAAAA,GAAAA,sBAAgCnhB,OAAO8X,kBAAmBjxB,eAAeo6B,GAAIC,EAAO,CAAEA,aAAS1gC,EACjG,CAEA,OAAOwf,OAAO8X,iBAChB,oGCGO,SAASpkB,EAAYlM,GAA8E,IAA7E,MAAErC,EAAK,SAAE7C,EAAQ,UAAED,EAAS,aAAEuR,EAAY,WAAEwtB,GAA+B55B,EACtG,MAAM4L,EAAWjO,GAASzE,OAAO2S,SAASlO,GACpCk8B,OAA6B7gC,IAAjBoT,GAA8BR,GAAsB,IAAVjO,EAE5D,OACEkD,EAAAA,EAAAA,MAAA,QACEhG,UAAWsJ,IAAWtJ,EAAW,sDAAuD,CACtF,gBAAiB+Q,GAAYjO,EAAQ,EACrC,gBAAiBiO,GAAYjO,EAAQ,IACpC7C,SAAA,CAEFA,GACD+F,EAAAA,EAAAA,MAAA,QAAMhG,UAAWsJ,IAAWy1B,EAAY,kBAAmB,CAAE,QAASxtB,GAAgBytB,IAAa/+B,SAAA,CAChG++B,GACCj/B,EAAAA,EAAAA,KAACoY,EAAAA,GAAI,CAAC/V,MAAO,GAAIO,KAAMoO,GAAYjO,EAAQ,EAAI,eAAiB,iBAAkB9C,UAAU,UAC1F,KACHuR,OAIT,CAMO,SAASH,EAAiBmD,GAAkE,IAAjE,UAAEvU,EAAS,SAAEC,KAAa0B,GAAqC4S,EAC/F,OACExU,EAAAA,EAAAA,KAAA,UAAS4B,EAAO3B,UAAWsJ,IAAWtJ,EAAW,gBAAgBC,SAC9DwK,EAAAA,SAAerK,IAAIH,GAAWid,GACzBzS,EAAAA,eAAqByS,IAAUA,EAAMlV,OAASqJ,EACzC5G,EAAAA,aAAmByS,EAAO,CAC/Bld,UAAWsJ,IAAW4T,EAAMvb,MAAM3B,UAAW,aAC7C++B,WAAY,4BAIT7hB,KAIf,gFCnBO,SAAS+hB,EAAO95B,GAON,IAPO,MACtB4Z,EAAQ,IAAG,QACXxE,EAAU,EAAC,eACX2kB,GAAiB,EAAK,eACtBC,EAAc,iBACdC,EAAgB,SAChBn/B,GACakF,EACb,MAAO8oB,EAASoR,GAAc50B,EAAAA,UAAe,IACtC60B,EAAaC,GAAkB90B,EAAAA,UAAe,GAmBrD,OAjBAA,EAAAA,WAAgB,KACd,MAAM+0B,EAAoB7hB,OAAOnD,YAAW,IAAM6kB,GAAW,IAAOtgB,GAEpE,IAAI0gB,EAQJ,OAPIllB,EAAU,IACZklB,EAAgB9hB,OAAOnD,YAAW,KAEhC,GADA+kB,GAAe,GACXL,EAAgB,MAAM,IAAIQ,KAAO,GACpCnlB,IAGE,KACLD,aAAaklB,GACbllB,aAAamlB,EAAc,CAC5B,GACA,CAAC1gB,EAAOxE,EAAS2kB,IAEfjR,EAEDqR,GACKv/B,EAAAA,EAAAA,KAAAkG,EAAAA,SAAA,CAAAhG,SAAGm/B,KAGLr/B,EAAAA,EAAAA,KAAAkG,EAAAA,SAAA,CAAAhG,SAAGA,KANWF,EAAAA,EAAAA,KAAAkG,EAAAA,SAAA,CAAAhG,SAAGk/B,GAO1B,sECtEO,IAAKQ,EAAoB,SAApBA,GAAoB,OAApBA,EAAAA,EAAoB,qBAApBA,EAAAA,EAAoB,uBAApBA,EAAAA,EAAoB,2BAApBA,EAAAA,EAAoB,6BAApBA,CAAoB,MAYzB,MAAMC,EAAsBn1B,EAAAA,cAGhC,CACDqa,KAAMA,OACNwB,KAAMA,SAGD,SAASuZ,IACd,OAAOp1B,EAAAA,WAAiBm1B,EAC1B,8LCdO,SAASjnB,EAAoBhX,GAClC,MAAOm+B,EAAQC,GAAat1B,EAAAA,UAAe,IACpCu1B,EAAcC,GAAmBx1B,EAAAA,SAAyC,OAC3E,SAAEy1B,EAAQ,YAAEC,IAAgBC,EAAAA,EAAAA,GAAkB,CAAEnV,UAAW+U,IAE3DK,EAAU51B,EAAAA,OAAa,CAC3Bqa,KAAM,SAACtI,GAAqE,IAA/CpI,EAAqCnW,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EACpEkiC,GAAY,KAAMG,EAAAA,EAAAA,GAAkB3iB,OAAO4iB,kBAC3CN,EAAgB,CAAEzjB,UAASpI,YAC3B2rB,GAAU,EACZ,EACAzZ,KAAMA,IAAMyZ,GAAU,KAGlBS,EAAgB/1B,EAAAA,SAAc,KAAM,IAAAg2B,EACxC,MAAM,SAAEnxB,EAAWqwB,EAAAA,GAAqBe,YAAoC,QAAxBD,EAAGT,aAAY,EAAZA,EAAc5rB,eAAO,IAAAqsB,EAAAA,EAAI,CAAC,EACjF,MAAO,CACL,4CAA6C,CAC3Cd,EAAAA,GAAqBgB,QACrBhB,EAAAA,GAAqBiB,UACrBn5B,SAAS6H,GACX,kEAAmE,CACjEqwB,EAAAA,GAAqBiB,SACrBjB,EAAAA,GAAqBkB,aACrBp5B,SAAS6H,GACX,6CAA8C,CAC5CqwB,EAAAA,GAAqBe,WACrBf,EAAAA,GAAqBkB,aACrBp5B,SAAS6H,GACX,iEAAkE,CAChEqwB,EAAAA,GAAqBgB,QACrBhB,EAAAA,GAAqBe,YACrBj5B,SAAS6H,GACZ,GACA,CAAC0wB,aAAY,EAAZA,EAAc5rB,UAEZ0sB,EAAmBr2B,EAAAA,SACvB,IAAOu1B,SAAAA,EAAc5rB,QAAQ2sB,OAASt2B,EAAAA,SAAiBu2B,EAAAA,GACvD,CAAChB,aAAY,EAAZA,EAAc5rB,QAAQ2sB,SAGzB,OACE/6B,EAAAA,EAAAA,MAAC45B,EAAAA,GAAoBqB,SAAQ,CAACn+B,MAAOu9B,EAAQv+B,QAAQ7B,SAAA,CAClD0B,EAAM1B,SACN6/B,IACC//B,EAAAA,EAAAA,KAAC+gC,EAAgB,CAAA7gC,UACfF,EAAAA,EAAAA,KAACihC,EAAAA,GAAc,CACbhgB,KAAK,QACL,aAAW,eACXhhB,UAAWsJ,IACTk3B,EACA,4KAEFU,eAAa,EAEb71B,KAAMy0B,EACNqB,QAASd,EAAQv+B,QAAQwkB,KAEzB8a,OAAO,EACPhf,UAAU,EAEVif,WAAW,EAEXC,cAAc,EACdC,uBAAuB,EACvBC,iBAAiB,EACjBC,iBAAiB,EAEjBx9B,MAAO,CACL7B,MAAO89B,EAAS99B,MAChBE,OAAQ49B,EAAS59B,OACjBo/B,UAAW,aAAFz3B,OAAei2B,EAAS7V,KAAI,QAAApgB,OAAOi2B,EAAS3wB,IAAG,cAAAtF,OAAai2B,EAASr6B,MAAK,KACnF87B,WAAY,QACZ1hC,SAED+/B,aAAY,EAAZA,EAAcxjB,cAM3B,gBCzFO,SAAShc,EACdohC,GACA,IAAAz8B,EAAA08B,EACA,MAAMC,EAAmE,QAAxD38B,EAA+B,QAA/B08B,EAAGD,EAAiBE,mBAAW,IAAAD,EAAAA,EAAID,EAAiBj/B,YAAI,IAAAwC,EAAAA,EAAI,YACvE48B,EAA2BpgC,IAC/B,MAAMq+B,GAAeH,EAAAA,EAAAA,MACrB,OAAO9/B,EAAAA,EAAAA,KAAC6hC,EAAgB,IAAMjgC,EAAaqgC,oBAAqBhC,GAAgB,EAKlF,OAFA+B,EAAwBD,YAAc,2BAAH73B,OAA8B63B,EAAW,KAErEC,CACT,kHCUO,SAASE,EAAY98B,GAMmB,IANlB,UAC3BnF,EAAS,UACTkiC,EAAY,QAAO,QACnBC,EAAO,YACPC,EAAW,SACXniC,GAC2CkF,EAC3C,MAAM66B,GAAeH,EAAAA,EAAAA,MAiBrB,OAfAp1B,EAAAA,WAAgB,KACd,IAAI43B,EAOJ,OANID,IACFC,EAAY1kB,OAAOnD,YAAW,KAC5BwlB,EAAa1Z,MAAM,GAClB8b,IAGE,KACDC,GACF/nB,aAAa+nB,EACf,CACD,GACA,CAACrC,EAAcoC,KAGhBp8B,EAAAA,EAAAA,MAAA,OACEhG,UAAWsJ,IACTtJ,EACA,0JACAC,SAAA,EAEFF,EAAAA,EAAAA,KAAA,OAAKC,UAAU,uBAAsBC,SAAEA,KACvCF,EAAAA,EAAAA,KAAA,OAAAE,SACGkiC,QAAAA,GACCpiC,EAAAA,EAAAA,KAACiZ,EAAAA,EAAM,CAACspB,GAAItB,EAAAA,EAAuBh6B,MAAM,OAAM/G,SAC5CiiC,QAMb,gFC9DO,SAAS3J,IACd,MAAM/hB,GAAWC,EAAAA,EAAAA,MAEjBhM,EAAAA,WAAgB,KAGd,MAAM,EAAE9D,IAAMmF,EAAAA,EAAAA,GAAkB0K,EAASO,SACpCpQ,GAAKgX,OAAO4kB,oBACf5kB,OAAOnH,SAASgsB,QAClB,GACC,CAAChsB,EAASO,QACf,uFCbO,SAASupB,EAAkBC,GAAuC,IAAAkC,EAAAC,EAAAC,EAAAC,EAAAC,EACvE,MAAMzgC,EAA6B,QAAxBqgC,EAAGlC,aAAc,EAAdA,EAAgBn+B,aAAK,IAAAqgC,EAAAA,EAAI9kB,OAAO+d,WACxCp5B,EAA+B,QAAzBogC,EAAGnC,aAAc,EAAdA,EAAgBj+B,cAAM,IAAAogC,EAAAA,EAAI/kB,OAAOmlB,YAC1Cj9B,EAA6B,QAAxB88B,EAAGpC,aAAc,EAAdA,EAAgB16B,aAAK,IAAA88B,EAAAA,EAAI,EAEvC,MAAO,CACLpzB,IAA8B,QAA3BqzB,EAAErC,aAAc,EAAdA,EAAgBwC,iBAAS,IAAAH,EAAAA,EAAI,EAClCvY,KAAgC,QAA5BwY,EAAEtC,aAAc,EAAdA,EAAgByC,kBAAU,IAAAH,EAAAA,EAAI,EACpCh9B,MAAOzH,KAAKN,MAAO,EAAI+H,EAAS,KAAO,IACvCzD,MAAOhE,KAAKN,MAAMsE,EAAQyD,GAC1BvD,OAAQlE,KAAKN,MAAMwE,EAASuD,GAC5Bo9B,cAAe7gC,EACf8gC,eAAgB5gC,EAEpB,CAEO,SAAS89B,IAAuG,IAArF,QAAEnV,GAAU,EAAI,SAAEkY,GAAW,GAAiDllC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EAClH,MAAOiiC,EAAUC,GAAe11B,EAAAA,SAAe61B,EAAkB3iB,OAAO4iB,iBAsBxE,OApBA91B,EAAAA,WAAgB,KAAM,IAAA24B,EAAAC,EACpB,IAAKpY,EAAS,OAEd,MAAMqY,EAAeC,KAAUC,IAC7B,MAAMtD,EAAWsD,EAAGzgB,cAChBmd,GACFC,GAAY,IAAMG,EAAkBJ,IACtC,GACC,IAMH,OAJqB,QAArBkD,EAAAzlB,OAAO4iB,sBAAc,IAAA6C,GAArBA,EAAuBhzB,iBAAiB,SAAUkzB,GAC9CH,IAA+B,QAArBE,EAAA1lB,OAAO4iB,sBAAc,IAAA8C,GAArBA,EAAuBjzB,iBAAiB,SAAUkzB,IAChEA,EAAa,CAAEvgB,cAAepF,OAAO4iB,iBAE9B,KAAM,IAAAkD,EAAAC,EACU,QAArBD,EAAA9lB,OAAO4iB,sBAAc,IAAAkD,GAArBA,EAAuBjzB,oBAAoB,SAAU8yB,GAChC,QAArBI,EAAA/lB,OAAO4iB,sBAAc,IAAAmD,GAArBA,EAAuBlzB,oBAAoB,SAAU8yB,EAAa,CACnE,GACA,CAACrY,EAASkY,IAEN14B,EAAAA,SAAc,KAAM,CAAGy1B,WAAUC,iBAAgB,CAACD,GAC3D,qGCrCA,MAAMyD,EAAU,EAET,SAASC,EAAoBC,GAAwB,IAAAC,EAAAC,EAC1D,MAAMC,EAAmB7zB,SAASgC,eAAe0xB,GAE3ClnB,EAAMqnB,aAAgB,EAAhBA,EAAkBva,wBAE9B,MAAO,CACLrnB,MAAOhE,KAAKsB,KAAe,QAAXokC,EAACnnB,aAAG,EAAHA,EAAKva,aAAK,IAAA0hC,EAAAA,EAAI,GAAKH,EAAS,GAC7CrhC,OAAQlE,KAAKsB,KAAgB,QAAZqkC,EAACpnB,aAAG,EAAHA,EAAKra,cAAM,IAAAyhC,EAAAA,EAAI,GAAKJ,EAAS,GAEnD,CAEO,SAASM,EAAe/K,EAAW2K,GACxC,MAAMK,EAAmBN,EAAoBC,GAE7C,GAAI3K,EAAM,CACR,MAAMvxB,EAAcrI,OAAOwU,OAAO,CAAC,EAAGqwB,qBAAqBC,UAAW,CACpE5H,OAAQ2H,qBAAqB3H,OAC7Bp6B,MAAO8hC,EAAiB9hC,MACxBE,OAAQ4hC,EAAiB5hC,OACzBs6B,YAAY,EACZyH,QAAS,CAAC,SAAU,WAAY,UAAW,WAE7C,IAAK,IAAI19B,EAAI,EAAGA,EAAIgB,EAAYiL,OAAO1U,OAAQyI,IACxCgB,EAAYiL,OAAOjM,GAAG+F,aACzB/E,EAAYiL,OAAOjM,GAAG+F,WAAa,SAIvC,OAAO/E,CACT,CAEA,MAAO,CACL28B,WAAW,EACXliC,MAAO8hC,EAAiB9hC,MACxBE,OAAQ4hC,EAAiB5hC,OACzB+3B,SAAU,EACVC,UAAW,EACXsC,YAAY,EACZ2H,oBAAoB,EACpBv9B,MAAOm9B,qBAAqBn9B,MAC5Bw1B,OAAQ2H,qBAAqB3H,OAC7B6H,QAAS,CAAC,SAAU,WAAY,UAAW,SAC3C3H,OAAQyH,qBAAqBzH,OAC7B9pB,OAAQuxB,qBAAqBt9B,QAAQzG,KAAI,SAAUsH,EAAgBpH,GACjE,MAAO,CACLuH,UAAWs8B,qBAAqBK,QAAQlkC,GACxCy1B,UAAWoO,qBAAqBM,OAAOnkC,GACvCuF,MAAOs+B,qBAAqBO,SAAS7+B,OAAS,SAC9C6B,OAAQA,EACRgF,YAAYi4B,EAAAA,EAAAA,IAAuBj9B,GACnCwyB,UAAWiK,qBAAqBO,SAASxK,UACzCC,YAAagK,qBAAqBO,SAASvK,YAC3CyK,eAAgBT,qBAAqBO,SAASE,eAC9Cp8B,aAAa,EACbwL,MAAO8qB,EAAAA,GAAAA,SAAmBqF,qBAAqBO,UAEnD,IAEJ,CAEO,MAAMrL,EAAiBA,CAACwL,EAA2BT,KACxD,MAAMU,EAAcljB,KAAKsa,UAAUkI,GAAW38B,SAAS,YAEvD,IAAK,IAAId,EAAI,EAAGA,EAAIk+B,EAAO3mC,OAAQyI,IAAK,CACtC,MAAMuF,EAAQ24B,EAAOl+B,GAEG,OAApBuF,EAAMrE,WAA0C,OAApBqE,EAAMrE,WAA0C,OAApBqE,EAAMrE,WAA0C,QAApBqE,EAAMrE,YACvFqE,EAAMwgB,eAAe,uBACxBxgB,EAAM64B,kBAAwC,QAApB74B,EAAMrE,UAAsB,IAAM,KAGzDqE,EAAMwgB,eAAe,wBACxBxgB,EAAM84B,mBAAyC,QAApB94B,EAAMrE,UAAsB,IAAM,KAG1DqE,EAAMwgB,eAAe,4BACxBxgB,EAAM+4B,uBAA6C,QAApB/4B,EAAMrE,UAAsB,EAAI,IAG5DqE,EAAMwgB,eAAe,8BACxBxgB,EAAMg5B,yBAA2B,IAIhCh5B,EAAMwgB,eAAe,iBACxBxgB,EAAM44B,YAAcA,GAGtB54B,EAAMi5B,OAASf,EAAUlL,KAAK9zB,GAE9BiC,EAAAA,EAAM4M,OAAc/H,EACtB,gJCpFF,SAASk5B,IAYP,OAXAA,EAAW9lC,OAAOwU,OAASxU,OAAOwU,OAAO9D,OAAS,SAAUxC,GAC1D,IAAK,IAAI7G,EAAI,EAAGA,EAAI1I,UAAUC,OAAQyI,IAAK,CACzC,IAAI2lB,EAASruB,UAAU0I,GACvB,IAAK,IAAIwU,KAAOmR,EACVhtB,OAAO+lC,UAAU3Y,eAAe7oB,KAAKyoB,EAAQnR,KAC/C3N,EAAO2N,GAAOmR,EAAOnR,GAG3B,CACA,OAAO3N,CACT,EACO43B,EAASnrB,MAAM5Y,KAAMpD,UAC9B,CACA,SAASouB,EAA8BC,EAAQC,GAC7C,GAAc,MAAVD,EAAgB,MAAO,CAAC,EAC5B,IAEInR,EAAKxU,EAFL6G,EAAS,CAAC,EACVgf,EAAaltB,OAAO0b,KAAKsR,GAE7B,IAAK3lB,EAAI,EAAGA,EAAI6lB,EAAWtuB,OAAQyI,IACjCwU,EAAMqR,EAAW7lB,GACb4lB,EAASzS,QAAQqB,IAAQ,IAC7B3N,EAAO2N,GAAOmR,EAAOnR,IAEvB,OAAO3N,CACT,CAEA,MAAM83B,EAAgB,MAChBC,EAAiB,oCACvB,SAASC,EAAcC,GACrB,OAAiB,MAAVA,GAA4C,iBAAnBA,EAAOjH,OACzC,CA0CA,SAASkH,EAAmBC,GAI1B,YAHa,IAATA,IACFA,EAAO,IAEF,IAAIC,gBAAgC,iBAATD,GAAqBzlC,MAAMyZ,QAAQgsB,IAASA,aAAgBC,gBAAkBD,EAAOrmC,OAAO0b,KAAK2qB,GAAM1qB,QAAO,CAAC4qB,EAAM1qB,KACrJ,IAAIrY,EAAQ6iC,EAAKxqB,GACjB,OAAO0qB,EAAK57B,OAAO/J,MAAMyZ,QAAQ7W,GAASA,EAAM1C,KAAI6K,GAAK,CAACkQ,EAAKlQ,KAAM,CAAC,CAACkQ,EAAKrY,IAAQ,GACnF,IACL,CAoBA,IAAIgjC,EAA6B,KAcjC,MAAMC,EAAwB,IAAIC,IAAI,CAAC,oCAAqC,sBAAuB,eACnG,SAASC,EAAeC,GACtB,OAAe,MAAXA,GAAoBH,EAAsBI,IAAID,GAI3CA,EAFE,IAGX,CACA,SAASE,EAAsB54B,EAAQ64B,GACrC,IAAIvpB,EACAF,EACAspB,EACAI,EACA7sB,EACJ,GA7FO+rB,EADcC,EA8FHj4B,IA7F+C,SAAjCi4B,EAAOjH,QAAQ+H,cA6FpB,CAIzB,IAAI9iC,EAAO+J,EAAOkU,aAAa,UAC/B9E,EAASnZ,GAAO,QAAcA,EAAM4iC,GAAY,KAChDvpB,EAAStP,EAAOkU,aAAa,WAAa4jB,EAC1CY,EAAUD,EAAez4B,EAAOkU,aAAa,aAAe6jB,EAC5De,EAAW,IAAIE,SAASh5B,EAC1B,MAAO,GA1GT,SAAyBi4B,GACvB,OAAOD,EAAcC,IAA4C,WAAjCA,EAAOjH,QAAQ+H,aACjD,CAwGaE,CAAgBj5B,IApG7B,SAAwBi4B,GACtB,OAAOD,EAAcC,IAA4C,UAAjCA,EAAOjH,QAAQ+H,aACjD,CAkGwCG,CAAel5B,KAA4B,WAAhBA,EAAOxF,MAAqC,UAAhBwF,EAAOxF,MAAmB,CACrH,IAAI2+B,EAAOn5B,EAAOm5B,KAClB,GAAY,MAARA,EACF,MAAM,IAAIjH,MAAM,sEAMlB,IAAIj8B,EAAO+J,EAAOkU,aAAa,eAAiBilB,EAAKjlB,aAAa,UAUlE,GATA9E,EAASnZ,GAAO,QAAcA,EAAM4iC,GAAY,KAChDvpB,EAAStP,EAAOkU,aAAa,eAAiBilB,EAAKjlB,aAAa,WAAa4jB,EAC7EY,EAAUD,EAAez4B,EAAOkU,aAAa,iBAAmBukB,EAAeU,EAAKjlB,aAAa,aAAe6jB,EAEhHe,EAAW,IAAIE,SAASG,EAAMn5B,IAlDlC,WACE,GAAmC,OAA/Bs4B,EACF,IACE,IAAIU,SAASr2B,SAASkL,cAAc,QAEpC,GACAyqB,GAA6B,CAC/B,CAAE,MAAO54B,GACP44B,GAA6B,CAC/B,CAEF,OAAOA,CACT,CA2CSc,GAAgC,CACnC,IAAI,KACFjkC,EAAI,KACJqF,EAAI,MACJlF,GACE0K,EACJ,GAAa,UAATxF,EAAkB,CACpB,IAAI6+B,EAASlkC,EAAOA,EAAO,IAAM,GACjC2jC,EAAS9iC,OAAOqjC,EAAS,IAAK,KAC9BP,EAAS9iC,OAAOqjC,EAAS,IAAK,IAChC,MAAWlkC,GACT2jC,EAAS9iC,OAAOb,EAAMG,EAE1B,CACF,KAAO,IAAI0iC,EAAch4B,GACvB,MAAM,IAAIkyB,MAAM,sFAEhB5iB,EAASwoB,EACT1oB,EAAS,KACTspB,EAAUX,EACV9rB,EAAOjM,CACT,CA/IF,IAAuBi4B,EAqJrB,OAJIa,GAAwB,eAAZJ,IACdzsB,EAAO6sB,EACPA,OAAWnoC,GAEN,CACLye,SACAE,OAAQA,EAAOypB,cACfL,UACAI,WACA7sB,OAEJ,CAEA,MAAMqtB,EAAY,CAAC,UAAW,WAAY,iBAAkB,UAAW,QAAS,SAAU,KAAM,sBAC9FC,EAAa,CAAC,eAAgB,gBAAiB,YAAa,MAAO,QAAS,KAAM,YAClFC,EAAa,CAAC,iBAAkB,UAAW,QAAS,SAAU,SAAU,WAAY,SAAU,WAAY,sBAC5G,SAASC,EAAoBC,EAAQC,GACnC,OAAO,QAAa,CAClBd,SAAkB,MAARc,OAAe,EAASA,EAAKd,SACvCe,OAAQhC,EAAS,CAAC,EAAW,MAAR+B,OAAe,EAASA,EAAKC,OAAQ,CACxDC,oBAAoB,IAEtBC,SAAS,QAAqB,CAC5B3pB,OAAgB,MAARwpB,OAAe,EAASA,EAAKxpB,SAEvC4pB,eAAwB,MAARJ,OAAe,EAASA,EAAKI,gBAAkBC,IAC/DN,SACAO,mBAAoB,OACnBC,YACL,CAeA,SAASF,IACP,IAAI1S,EACJ,IAAInqB,EAA8B,OAArBmqB,EAAUnX,aAAkB,EAASmX,EAAQ6S,4BAM1D,OALIh9B,GAASA,EAAMi9B,SACjBj9B,EAAQy6B,EAAS,CAAC,EAAGz6B,EAAO,CAC1Bi9B,OAAQC,EAAkBl9B,EAAMi9B,WAG7Bj9B,CACT,CACA,SAASk9B,EAAkBD,GACzB,IAAKA,EAAQ,OAAO,KACpB,IAAIE,EAAUxoC,OAAOwoC,QAAQF,GACzBG,EAAa,CAAC,EAClB,IAAK,IAAK5sB,EAAK6sB,KAAQF,EAGrB,GAAIE,GAAsB,uBAAfA,EAAIC,OACbF,EAAW5sB,GAAO,IAAI,KAAyB6sB,EAAIE,OAAQF,EAAIG,WAAYH,EAAIvmC,MAAuB,IAAjBumC,EAAII,eACpF,GAAIJ,GAAsB,UAAfA,EAAIC,OAAoB,CAExC,GAAID,EAAIK,UAAW,CACjB,IAAIC,EAAmB3qB,OAAOqqB,EAAIK,WAClC,GAAgC,mBAArBC,EACT,IAEE,IAAIxW,EAAQ,IAAIwW,EAAiBN,EAAIO,SAGrCzW,EAAM0W,MAAQ,GACdT,EAAW5sB,GAAO2W,CACpB,CAAE,MAAO5kB,GAET,CAEJ,CACA,GAAuB,MAAnB66B,EAAW5sB,GAAc,CAC3B,IAAI2W,EAAQ,IAAI4N,MAAMsI,EAAIO,SAG1BzW,EAAM0W,MAAQ,GACdT,EAAW5sB,GAAO2W,CACpB,CACF,MACEiW,EAAW5sB,GAAO6sB,EAGtB,OAAOD,CACT,CA0BA,MACMU,GAAsB,iBAAsB,gBAIlD,SAAS7/B,EAAczD,GACrB,IAAI,SACFkhC,EAAQ,SACRpmC,EAAQ,OACRmnC,EAAM,OACNzpB,GACExY,EACAujC,EAAa,WACS,MAAtBA,EAAW5mC,UACb4mC,EAAW5mC,SAAU,QAAqB,CACxC6b,SACAgrB,UAAU,KAGd,IAAIrB,EAAUoB,EAAW5mC,SACpB6I,EAAOi+B,GAAgB,WAAe,CACzChsB,OAAQ0qB,EAAQ1qB,OAChBpG,SAAU8wB,EAAQ9wB,YAEhB,mBACFqyB,GACEzB,GAAU,CAAC,EACXr7B,EAAW,eAAkB+8B,IAC/BD,GAAsBJ,EAAsBA,GAAoB,IAAMG,EAAaE,KAAaF,EAAaE,EAAS,GACrH,CAACF,EAAcC,IAElB,OADA,mBAAsB,IAAMvB,EAAQyB,OAAOh9B,IAAW,CAACu7B,EAASv7B,IAC5C,gBAAoB,KAAQ,CAC9Cs6B,SAAUA,EACVpmC,SAAUA,EACVuW,SAAU7L,EAAM6L,SAChBwyB,eAAgBr+B,EAAMiS,OACtBqsB,UAAW3B,GAEf,CA0EA,MAAM4B,EAA8B,oBAAXvrB,aAAqD,IAApBA,OAAOxN,eAAqE,IAAlCwN,OAAOxN,SAASkL,cAC9G8tB,EAAqB,gCAIrBC,EAAoB,cAAiB,SAAqBtZ,EAAOjrB,GACrE,IAeIwkC,GAfA,QACAjX,EAAO,SACPkX,EAAQ,eACR3xB,EAAc,QACdyQ,EAAO,MACPzd,EAAK,OACL6C,EAAM,GACNmB,EAAE,mBACF46B,GACEzZ,EACJ0Z,EAAOnd,EAA8ByD,EAAOgX,IAC1C,SACFT,GACE,aAAiB,MAGjBoD,GAAa,EACjB,GAAkB,iBAAP96B,GAAmBw6B,EAAmBO,KAAK/6B,KAEpD06B,EAAe16B,EAEXu6B,GACF,IACE,IAAIS,EAAa,IAAIC,IAAIjsB,OAAOnH,SAASkB,MACrCmyB,EAAYl7B,EAAGm7B,WAAW,MAAQ,IAAIF,IAAID,EAAWI,SAAWp7B,GAAM,IAAIi7B,IAAIj7B,GAC9Eq7B,GAAO,QAAcH,EAAU/S,SAAUuP,GACzCwD,EAAUI,SAAWN,EAAWM,QAAkB,MAARD,EAE5Cr7B,EAAKq7B,EAAOH,EAAU9yB,OAAS8yB,EAAUK,KAEzCT,GAAa,CAEjB,CAAE,MAAOv8B,GAGT,CAIJ,IAAIwK,GAAO,QAAQ/I,EAAI,CACrB26B,aAEEa,EAyMN,SAA6Bx7B,EAAIy7B,GAC/B,IAAI,OACF58B,EACA4a,QAASiiB,EAAW,MACpB1/B,EAAK,mBACL4+B,EAAkB,SAClBD,QACY,IAAVc,EAAmB,CAAC,EAAIA,EACxBE,GAAW,UACX9zB,GAAW,UACXwzB,GAAO,QAAgBr7B,EAAI,CAC7B26B,aAEF,OAAO,eAAkBvsB,IACvB,GArnBJ,SAAgCA,EAAOvP,GACrC,QAAwB,IAAjBuP,EAAMwtB,QAEZ/8B,GAAqB,UAAXA,GANb,SAAyBuP,GACvB,SAAUA,EAAMytB,SAAWztB,EAAM0tB,QAAU1tB,EAAM2tB,SAAW3tB,EAAM4tB,SACpE,CAMGC,CAAgB7tB,GAEnB,CA8mBQ8tB,CAAuB9tB,EAAOvP,GAAS,CACzCuP,EAAM5P,iBAGN,IAAIib,OAA0BjqB,IAAhBksC,EAA4BA,GAAc,QAAW7zB,MAAc,QAAWwzB,GAC5FM,EAAS37B,EAAI,CACXyZ,UACAzd,QACA4+B,qBACAD,YAEJ,IACC,CAAC9yB,EAAU8zB,EAAUN,EAAMK,EAAa1/B,EAAO6C,EAAQmB,EAAI46B,EAAoBD,GACpF,CApOwBwB,CAAoBn8B,EAAI,CAC5CyZ,UACAzd,QACA6C,SACA+7B,qBACAD,aAQF,OAGE,gBAAoB,IAAKlE,EAAS,CAAC,EAAGoE,EAAM,CAC1C9xB,KAAM2xB,GAAgB3xB,EACtB0a,QAASqX,GAAc9xB,EAAiBya,EAX5C,SAAqBrV,GACfqV,GAASA,EAAQrV,GAChBA,EAAMguB,kBACTZ,EAAgBptB,EAEpB,EAOIlY,IAAKA,EACL2I,OAAQA,IAGd,IAOA,MAAMw9B,EAAuB,cAAiB,SAAwBC,EAAOpmC,GAC3E,IACI,eAAgBqmC,EAAkB,OAAM,cACxCC,GAAgB,EAChBnrC,UAAWorC,EAAgB,GAAE,IAC7BC,GAAM,EACNpnC,MAAOqnC,EAAS,GAChB38B,EAAE,SACF1O,GACEgrC,EACJzB,EAAOnd,EAA8B4e,EAAOlE,GAC1CiD,GAAO,QAAgBr7B,EAAI,CAC7B26B,SAAUE,EAAKF,WAEb9yB,GAAW,UACX+0B,EAAc,aAAiB,OAC/B,UACFtC,GACE,aAAiB,MACjBuC,EAAavC,EAAUwC,eAAiBxC,EAAUwC,eAAezB,GAAMlT,SAAWkT,EAAKlT,SACvF4U,EAAmBl1B,EAASsgB,SAC5B6U,EAAuBJ,GAAeA,EAAYK,YAAcL,EAAYK,WAAWp1B,SAAW+0B,EAAYK,WAAWp1B,SAASsgB,SAAW,KAC5IqU,IACHO,EAAmBA,EAAiBnF,cACpCoF,EAAuBA,EAAuBA,EAAqBpF,cAAgB,KACnFiF,EAAaA,EAAWjF,eAE1B,IAGIvmC,EAHA6rC,EAAWH,IAAqBF,IAAeH,GAAOK,EAAiB5B,WAAW0B,IAA8D,MAA/CE,EAAiBI,OAAON,EAAWttC,QACpI6tC,EAAoC,MAAxBJ,IAAiCA,IAAyBH,IAAeH,GAAOM,EAAqB7B,WAAW0B,IAAkE,MAAnDG,EAAqBG,OAAON,EAAWttC,SAClL8tC,EAAcH,EAAWX,OAAkB/sC,EAG7C6B,EAD2B,mBAAlBorC,EACGA,EAAc,CACxBS,WACAE,cAQU,CAACX,EAAeS,EAAW,SAAW,KAAME,EAAY,UAAY,MAAMx+B,OAAOiK,SAASrJ,KAAK,KAE7G,IAAIlK,EAA6B,mBAAdqnC,EAA2BA,EAAU,CACtDO,WACAE,cACGT,EACL,OAAoB,gBAAoBlC,EAAMhE,EAAS,CAAC,EAAGoE,EAAM,CAC/D,eAAgBwC,EAChBhsC,UAAWA,EACX6E,IAAKA,EACLZ,MAAOA,EACP0K,GAAIA,IACkB,mBAAb1O,EAA0BA,EAAS,CAC5C4rC,WACAE,cACG9rC,EACP,IAUA,MAAMgsC,EAAoB,cAAiB,CAACtqC,EAAOkD,KACjD,IAAIqnC,EAASC,IACb,OAAoB,gBAAoBC,EAAUhH,EAAS,CAAC,EAAGzjC,EAAO,CACpEuqC,OAAQA,EACRrnC,IAAKA,IACJ,IAKL,MAAMunC,EAAwB,cAAiB,CAACC,EAAOC,KACrD,IAAI,eACA30B,EAAc,QACdyQ,EAAO,MACPzd,EAAK,OACLmS,EAASwoB,EAAa,OACtB1oB,EAAM,SACN1N,EAAQ,OACRg9B,EAAM,SACN5C,EAAQ,mBACRC,GACE8C,EACJ1qC,EAAQ0qB,EAA8BggB,EAAOrF,GAC3CuF,EAAsC,QAAzBzvB,EAAOypB,cAA0B,MAAQ,OACtDiG,EA4MN,SAAuB5vB,EAAQ6vB,GAC7B,IAAI,SACFnD,QACa,IAAXmD,EAAoB,CAAC,EAAIA,GACzB,SACFpG,GACE,aAAiB,MACjBqG,EAAe,aAAiB,MACnCA,IAAqI,SAAiB,GACvJ,IAAKC,GAASD,EAAaE,QAAQxjC,OAAO,GAGtC4gC,EAAO5E,EAAS,CAAC,GAAG,QAAgBxoB,GAAkB,IAAK,CAC7D0sB,cAOE9yB,GAAW,UACf,GAAc,MAAVoG,IAGFotB,EAAKjzB,OAASP,EAASO,OAInB41B,EAAME,MAAMvsC,OAAO,CACrB,IAAIwsC,EAAS,IAAIlH,gBAAgBoE,EAAKjzB,QACtC+1B,EAAOC,OAAO,SACd/C,EAAKjzB,OAAS+1B,EAAOh/B,WAAa,IAAMg/B,EAAOh/B,WAAa,EAC9D,CAEI8O,GAAqB,MAAXA,IAAmB+vB,EAAME,MAAMvsC,QAC7C0pC,EAAKjzB,OAASizB,EAAKjzB,OAASizB,EAAKjzB,OAAOqR,QAAQ,MAAO,WAAa,UAMrD,MAAbie,IACF2D,EAAKlT,SAA6B,MAAlBkT,EAAKlT,SAAmBuP,GAAW,QAAU,CAACA,EAAU2D,EAAKlT,YAE/E,OAAO,QAAWkT,EACpB,CAzPmBgD,CAAcpwB,EAAQ,CACrC0sB,aAgBF,OAAoB,gBAAoB,OAAQlE,EAAS,CACvDvgC,IAAKynC,EACLxvB,OAAQyvB,EACR3vB,OAAQ4vB,EACRt9B,SAAUyI,EAAiBzI,EAlBT6N,IAElB,GADA7N,GAAYA,EAAS6N,GACjBA,EAAMguB,iBAAkB,OAC5BhuB,EAAM5P,iBACN,IAAI8/B,EAAYlwB,EAAMmwB,YAAYD,UAC9BE,GAA6B,MAAbF,OAAoB,EAASA,EAAUvrB,aAAa,gBAAkB5E,EAC1FovB,EAAOe,GAAalwB,EAAMgG,cAAe,CACvCjG,OAAQqwB,EACR/kB,UACAzd,QACA2+B,WACAC,sBACA,GAOD5nC,GAAO,IASZ,SAASyrC,EAAkBC,GACzB,IAAI,OACFC,EAAM,WACNC,GACEF,EAKJ,OA0RF,SAA8BG,GAC5B,IAAI,OACFF,EAAM,WACNC,QACa,IAAXC,EAAoB,CAAC,EAAIA,GACzB,OACFC,GACEC,EAAqBC,EAAeC,uBACpC,sBACFC,EAAqB,mBACrBtE,GACEuE,EAAmBC,EAAoBH,uBACvC,SACFvH,GACE,aAAiB,MACjB7vB,GAAW,UACXo2B,GAAU,UACVhB,GAAa,UAEjB,aAAgB,KACdjuB,OAAO2pB,QAAQ0G,kBAAoB,SAC5B,KACLrwB,OAAO2pB,QAAQ0G,kBAAoB,MAAM,IAE1C,IA4FL,SAAqBhoB,EAAU5R,GAC7B,IAAI,QACFmF,GACEnF,GAAW,CAAC,EAChB,aAAgB,KACd,IAAI+yB,EAAkB,MAAX5tB,EAAkB,CAC3BA,gBACEpb,EAEJ,OADAwf,OAAOvN,iBAAiB,WAAY4V,EAAUmhB,GACvC,KACLxpB,OAAOnN,oBAAoB,WAAYwV,EAAUmhB,EAAK,CACvD,GACA,CAACnhB,EAAUzM,GAChB,CAvGE00B,CAAY,eAAkB,KAC5B,GAAyB,SAArBrC,EAAWjhC,MAAkB,CAC/B,IAAIwQ,GAAOmyB,EAASA,EAAO92B,EAAUo2B,GAAW,OAASp2B,EAAS2E,IAClE+yB,EAAqB/yB,GAAOwC,OAAOwwB,OACrC,CACAC,eAAeC,QAAQd,GAAce,EAAgC1sB,KAAKsa,UAAUgS,IACpFvwB,OAAO2pB,QAAQ0G,kBAAoB,MAAM,GACxC,CAACT,EAAYD,EAAQ1B,EAAWjhC,MAAO6L,EAAUo2B,KAE5B,oBAAbz8B,WAET,mBAAsB,KACpB,IACE,IAAIo+B,EAAmBH,eAAeI,QAAQjB,GAAce,GACxDC,IACFL,EAAuBtsB,KAAKC,MAAM0sB,GAEtC,CAAE,MAAOrhC,GAET,IACC,CAACqgC,IAGJ,mBAAsB,KACpB,IAAIkB,EAAwBnB,GAAuB,MAAbjH,EAAmB,CAAC7vB,EAAUo2B,IAAYU,EAChFlI,EAAS,CAAC,EAAG5uB,EAAU,CACrBsgB,UAAU,QAActgB,EAASsgB,SAAUuP,IAAa7vB,EAASsgB,WAC/D8V,GAAWU,EACXoB,EAAqC,MAAVjB,OAAiB,EAASA,EAAOkB,wBAAwBT,GAAsB,IAAMvwB,OAAOwwB,SAASM,GACpI,MAAO,IAAMC,GAA4BA,GAA0B,GAClE,CAACjB,EAAQpH,EAAUiH,IAGtB,mBAAsB,KAEpB,IAA8B,IAA1BO,EAIJ,GAAqC,iBAA1BA,EAAX,CAKA,GAAIr3B,EAAS0zB,KAAM,CACjB,IAAIjuB,EAAK9L,SAASgC,eAAey8B,mBAAmBp4B,EAAS0zB,KAAK9gC,MAAM,KACxE,GAAI6S,EAEF,YADAA,EAAG4yB,gBAGP,EAE2B,IAAvBtF,GAIJ5rB,OAAOmxB,SAAS,EAAG,EAdnB,MAFEnxB,OAAOmxB,SAAS,EAAGjB,EAgBA,GACpB,CAACr3B,EAAUq3B,EAAuBtE,IAEzC,CAnXEwF,CAAqB,CACnBzB,SACAC,eAEK,IACT,CAQA,IAAII,EAOAI,EAQJ,SAASL,EAAqBsB,GAC5B,IAAIC,EAAM,aAAiB,MAE3B,OADCA,IAA6G,SAAiB,GACxHA,CACT,CACA,SAASnB,EAAmBkB,GAC1B,IAAIrkC,EAAQ,aAAiB,MAE7B,OADCA,IAA+G,SAAiB,GAC1HA,CACT,CAsCA,SAASukC,EAAgBC,GAEvB,IAAIC,EAAyB,SAAa1J,EAAmByJ,IACzDE,EAAwB,UAAa,GACrC74B,GAAW,UACX84B,EAAe,WAAc,IAtmBnC,SAAoCC,EAAgBC,GAClD,IAAIF,EAAe5J,EAAmB6J,GAetC,OAdIC,GAMFA,EAAoB5lC,SAAQ,CAACvJ,EAAG8a,KACzBm0B,EAAanJ,IAAIhrB,IACpBq0B,EAAoB1iC,OAAOqO,GAAKvR,SAAQ9G,IACtCwsC,EAAa9rC,OAAO2X,EAAKrY,EAAM,GAEnC,IAGGwsC,CACT,CAylBEG,CAA2Bj5B,EAASO,OAAQs4B,EAAsBvtC,QAAU,KAAOstC,EAAuBttC,UAAU,CAAC0U,EAASO,SAC1HuzB,GAAW,UACXoF,EAAkB,eAAkB,CAACC,EAAUC,KACjD,MAAMC,EAAkBnK,EAAuC,mBAAbiK,EAA0BA,EAASL,GAAgBK,GACrGN,EAAsBvtC,SAAU,EAChCwoC,EAAS,IAAMuF,EAAiBD,EAAgB,GAC/C,CAACtF,EAAUgF,IACd,MAAO,CAACA,EAAcI,EACxB,CACA,SAASI,IACP,GAAwB,oBAAb3/B,SACT,MAAM,IAAIuvB,MAAM,gHAEpB,CAKA,SAASyM,IACP,IAAI,OACFsB,GACEC,EAAqBC,EAAeoC,YACpC,SACF1J,GACE,aAAiB,MACjB2J,GAAiB,UACrB,OAAO,eAAkB,SAAUxiC,EAAQ4G,QACzB,IAAZA,IACFA,EAAU,CAAC,GAEb07B,IACA,IAAI,OACFlzB,EAAM,OACNE,EAAM,QACNopB,EAAO,SACPI,EAAQ,KACR7sB,GACE2sB,EAAsB54B,EAAQ64B,GAClCoH,EAAOnD,SAASl2B,EAAQwI,QAAUA,EAAQ,CACxC2sB,mBAAoBn1B,EAAQm1B,mBAC5BjD,WACA7sB,OACA8yB,WAAYn4B,EAAQ0I,QAAUA,EAC9BmzB,YAAa77B,EAAQ8xB,SAAWA,EAChC9d,QAAShU,EAAQgU,QACjBzd,MAAOyJ,EAAQzJ,MACfulC,YAAaF,GAEjB,GAAG,CAACvC,EAAQpH,EAAU2J,GACxB,EAvHA,SAAWrC,GACTA,EAAqC,qBAAI,uBACzCA,EAA0B,UAAI,YAC9BA,EAAiC,iBAAI,mBACrCA,EAA2B,WAAI,YAChC,EALD,CAKGA,IAAmBA,EAAiB,CAAC,IAExC,SAAWI,GACTA,EAAiC,YAAI,cACrCA,EAA0C,qBAAI,sBAC/C,CAHD,CAGGA,IAAwBA,EAAsB,CAAC,IAiQlD,MAAMO,EAAiC,gCACvC,IAAIJ,EAAuB,CAAC,oHCx3BxBiC,GAAmB,SACrB,SAA2BC,GACzB,IAAIC,EAAKD,GAAI,MAAEE,GAAUD,EAAI1uC,GAAQ,QAAU0uC,EAAI,CAAC,UACpD,MAAMhQ,GAAU,UAChBiQ,EAAQA,GAASjQ,EACjB,MAAMkQ,EAAc5uC,EAAMywB,QACpBA,GAAU,SAAUrV,IACT,MAAfwzB,GAA+BA,EAAYxzB,GACvCA,EAAMguB,kBAED,MAATuF,GAAyBA,EAAMhqB,MAAM,IAEjCrmB,GAAW,IAAAuwC,UACf,KAAsB,IAAAC,MACpB,MACA,CACE,aAAc,gBACd/gC,QAAS,QACTghC,KAAM,OACNC,OAAQ,eACRC,cAAe,QACfC,eAAgB,QAChBC,YAAa,QACbC,QAAS,YACTzuC,OAAQ,MACRF,MAAO,MACPnC,SAAU,EACQ,IAAA+wC,KAAI,OAAQ,CAAEC,GAAI,IAAKC,GAAI,IAAKC,GAAI,KAAMC,GAAI,QAC9C,IAAAJ,KAAI,OAAQ,CAAEC,GAAI,IAAKC,GAAI,KAAMC,GAAI,KAAMC,GAAI,UAIrE,IASF,OAPAzvC,GAAQ,SAAc,QAAe,CACnC,sBAAuB,GACvB1B,YACC0B,GAAQ,CACTywB,YAEFzwB,GAAQ,OAAUA,EAEpB,IAEE0vC,GAAgB,SAAW,SAAwB1vC,GACrD,MAAM2vC,EAAYnB,EAAiBxuC,GACnC,OAAO,QA/CK,SA+CkB2vC,EAChC,2GCnDIC,EAAU,SACVC,GAAY,SACd,SAAoB7vC,GAClB,MAAMkD,GAAM,IAAA8oB,QAAO,MACb6Q,GAAU,QAAW35B,EAAK0sC,IACzBE,EAAgBC,IAAqB,IAAA9iB,WAC1C,MAAQ4P,IAAW,QAAS,CAAEA,UAASx2B,KAAMrG,EAAMqG,SAarD,OAXA,IAAAwlB,YAAU,KACH3oB,EAAI/C,SAET4vC,GAAkB,QAAS7sC,EAAI/C,SAAS,GACvC,IACHH,GAAQ,SAAc,QAAe,CACnCqf,KAAOywB,GAA8B,MAAZjT,OAA6B,EAAX,UAC1C78B,GAAQ,CACTkD,KAAK,QAAaA,EAAKlD,EAAMkD,OAE/BlD,GAAQ,OAAWA,EAErB,KAEW,SAAW,SAAiBA,GACvC,MAAM2vC,EAAYE,EAAU7vC,GAC5B,OAAO,QAAc4vC,EAASD,EAChC","sources":["webpack://@finviz/website/./js/app/backtest/utils.tsx","webpack://@finviz/website/./js/app/quote/etf-holdings/async-modules.ts","webpack://@finviz/website/./js/app/quote/etf-holdings/index.tsx","webpack://@finviz/website/./js/app/quote/barChart.tsx","webpack://@finviz/website/./js/app/quote/fundamentalCharts.tsx","webpack://@finviz/website/./js/app/quote/quote.tsx","webpack://@finviz/website/./js/main/components/QuotePrice.tsx","webpack://@finviz/website/./js/app/quote/quote-header/constants.ts","webpack://@finviz/website/./js/app/quote/quote-header/hooks.ts","webpack://@finviz/website/./js/app/quote/quote-header/QuoteHeader.tsx","webpack://@finviz/website/../node_modules/date-fns/esm/isBefore/index.js","webpack://@finviz/website/./js/app/quote/chart-type-select/utils.ts","webpack://@finviz/website/./js/app/quote/chart-type-select/chart-type-select.tsx","webpack://@finviz/website/./js/app/quote/chart-type-select/use-chart-type.tsx","webpack://@finviz/website/./js/app/quote/quote-menu/quote-menu.tsx","webpack://@finviz/website/../node_modules/tippy.js/headless/dist/tippy-headless.esm.js","webpack://@finviz/website/../node_modules/@tippyjs/react/headless/dist/tippy-react-headless.esm.js","webpack://@finviz/website/./js/app/shared/lazyTippy.tsx","webpack://@finviz/website/./js/app/quote/statements.tsx","webpack://@finviz/website/./js/app/quote/use-stock-detail-updater.tsx","webpack://@finviz/website/./js/app/quote/index.tsx","webpack://@finviz/website/./js/app/quote/quote-links/SaveToPortfolioLink.tsx","webpack://@finviz/website/./js/app/quote/quote-links/CreateAlertLink.tsx","webpack://@finviz/website/./js/app/quote/use-chart-layout-width-watch.ts","webpack://@finviz/website/./js/app/shared/chartLayoutConfig.ts","webpack://@finviz/website/./js/app/shared/components/Ads.tsx","webpack://@finviz/website/./js/app/shared/getInitChartConfig.ts","webpack://@finviz/website/./js/main/components/RedGreenText.tsx","webpack://@finviz/website/./js/main/components/delayed.tsx","webpack://@finviz/website/./js/main/components/notification/hooks.ts","webpack://@finviz/website/./js/main/components/notification/notification-wrapper.tsx","webpack://@finviz/website/./js/main/components/notification/with-notification-context.tsx","webpack://@finviz/website/./js/main/components/notification/notification.tsx","webpack://@finviz/website/./js/main/hooks/use-check-non-idea-chart-missing-config.ts","webpack://@finviz/website/./js/main/hooks/useVisualViewport.ts","webpack://@finviz/website/./js/main/modules/charts/util.ts","webpack://@finviz/website/../node_modules/react-router-dom/dist/index.js","webpack://@finviz/website/../node_modules/@ariakit/react-core/esm/__chunks/5KB2YIDT.js","webpack://@finviz/website/../node_modules/@ariakit/react-core/esm/__chunks/JJ3MV4KB.js"],"sourcesContent":["export function round(n: number, places: number = 2) {\r\n return (+(Math.round(Number(n + 'e+' + places)) + 'e-' + places)).toFixed(places)\r\n}\r\n\r\nexport const format = {\r\n totalReturn: (totalReturn: number | string) => round(Number(totalReturn) * 100) + '%',\r\n maxDrawdown: (maxDrawdown: number | string) => round(Number(maxDrawdown) * 100) + '%',\r\n sharpeRatio: (sharpeRatio: number) => round(sharpeRatio),\r\n calmarRatio: (calmarRatio: number) => round(calmarRatio),\r\n CAGR: (CAGR: number) => round(CAGR * 100) + '%',\r\n cagr: (CAGR: number) => round(CAGR * 100) + '%',\r\n volatility: (volatility: number) => round(volatility * 100) + '%',\r\n numberOfTrades: (numberOfTrades: any) => numberOfTrades,\r\n positiveDays: (positiveDays: any) => positiveDays,\r\n negativeDays: (negativeDays: any) => negativeDays,\r\n bestMonth: (bestMonth: number) => round(bestMonth * 100) + '%',\r\n worstMonth: (worstMonth: number) => round(worstMonth * 100) + '%',\r\n}\r\n\r\nexport const figureSpace = ' '\r\n\r\nexport const BACKTEST_MIN_MAX_DATES = Object.freeze({\r\n min: new Date(1996, 5, 3),\r\n max: new Date(2023, 0, 31),\r\n})\r\n","export const etfHoldingsAsyncModule = {\r\n importFn: () => import(/* webpackChunkName: \"etf-holdings-widget\" */ './module-entry'),\r\n cacheKey: 'etf-holdings-widget',\r\n}\r\n","import { withNotificationContext } from '../../../main/components/notification'\r\nimport { Spinner } from '../../../main/components/spinner'\r\nimport { useAsyncModule } from '../../../main/services/async-modules-utils'\r\nimport { etfHoldingsAsyncModule } from './async-modules'\r\n\r\nfunction LoadingFallback() {\r\n const widgetClass =\r\n 'ml-3 mt-3 flex max-h-85 min-h-85 min-w-152 max-w-175 shrink grow basis-0 rounded-md border border-primary justify-center items-center'\r\n return (\r\n
\r\n {Array.from(Array(2)).map((_, index) => (\r\n
\r\n \r\n
\r\n ))}\r\n
\r\n )\r\n}\r\n\r\nfunction ETFHoldings() {\r\n const [etfHoldingsModule] = useAsyncModule({\r\n ...etfHoldingsAsyncModule,\r\n shouldLoadModule: true,\r\n errorSeverity: 'high',\r\n })\r\n const ETFHoldingsComponent = etfHoldingsModule?.ETFHoldings\r\n return ETFHoldingsComponent ? : \r\n}\r\n\r\nexport default withNotificationContext(ETFHoldings)\r\n","import * as d3 from 'd3'\r\nimport { Component, RefObject, createRef } from 'react'\r\n\r\nexport interface Bar {\r\n name: string\r\n value: number\r\n}\r\n\r\ninterface BarChartProps {\r\n title?: string\r\n data: Bar[]\r\n width?: number\r\n height?: number\r\n valueFormatter?: (value: number) => string\r\n xAxisRotate?: boolean\r\n marginRight?: number\r\n className?: string\r\n}\r\n\r\nexport default class BarChart extends Component {\r\n svgRef: RefObject = createRef()\r\n\r\n // @ts-ignore\r\n _prevData: Bar[]\r\n\r\n componentDidMount() {\r\n this.renderChart()\r\n }\r\n\r\n componentDidUpdate() {\r\n this.renderChart()\r\n }\r\n\r\n renderChart() {\r\n const { data, title } = this.props\r\n if (data === this._prevData) {\r\n return\r\n }\r\n this._prevData = data\r\n this.svgRef.current!.innerHTML = ''\r\n\r\n const xAxisRotate = this.props.xAxisRotate === true\r\n\r\n var margin = { top: title ? 20 : 10, right: this.props.marginRight || 60, bottom: xAxisRotate ? 70 : 20, left: 15 }\r\n const totalWidth = this.props.width || 440\r\n const totalHeight = this.props.height || 330\r\n var width = totalWidth - margin.left - margin.right\r\n var height = totalHeight - margin.top - margin.bottom\r\n\r\n const x = d3\r\n .scaleBand()\r\n .domain(data.map((d) => d.name))\r\n .rangeRound([0, width])\r\n .padding(0.1)\r\n\r\n let min = d3.min(data, (d: Bar) => d.value)!\r\n if (min < 0) {\r\n min = d3.min(data, (d: Bar) => Math.min(d.value, -d.value))!\r\n } else {\r\n min = 0\r\n }\r\n\r\n const y = d3\r\n .scaleLinear()\r\n .range([height, 0])\r\n .domain([min, d3.max(data, (d: Bar) => Math.abs(d.value))!])\r\n .nice()\r\n const yFormat = this.props.valueFormatter ? this.props.valueFormatter : y.tickFormat()\r\n\r\n const svg = d3\r\n .select(this.svgRef.current)\r\n .property('value', [])\r\n .append('g')\r\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\r\n\r\n var xAxis = d3.axisBottom(x)\r\n var yAxis = d3.axisRight(y).ticks(height > 200 ? 10 : 5)\r\n\r\n const makeYLines = () => d3.axisLeft(y)\r\n // @ts-ignore - tickFormat arg can be any string\r\n svg.append('g').attr('class', 'grid').call(makeYLines().tickSize(-width).tickSizeOuter(0).tickFormat(''))\r\n\r\n svg\r\n .append('g')\r\n .attr('class', 'x-axis axis')\r\n .attr('transform', 'translate(0,' + height + ')')\r\n .call(xAxis)\r\n\r\n svg\r\n .selectAll('.x-axis text')\r\n .style('text-anchor', xAxisRotate ? 'end' : 'middle')\r\n .attr('dx', xAxisRotate ? '-.8em' : 0)\r\n .attr('dy', xAxisRotate ? '.15em' : '0.8em')\r\n .attr('transform', 'rotate(' + (xAxisRotate ? -65 : 0) + ')')\r\n\r\n svg\r\n .append('g')\r\n .attr('class', 'y-axis axis')\r\n .attr('transform', 'translate(' + width + ', 0)')\r\n .call(yAxis)\r\n\r\n if (title) {\r\n svg\r\n .append('text')\r\n .attr('class', 'bar-chart-title')\r\n .attr('x', 4)\r\n .attr('y', -5)\r\n .attr('text-anchor', 'start')\r\n .text(title)\r\n }\r\n\r\n const getHeight = (d: Bar) => {\r\n let height = Math.abs(y(d.value ?? 0) - y(0))\r\n if (d.value > 0 || d.value < 0) {\r\n height = Math.max(height, 0.5)\r\n }\r\n return height\r\n }\r\n const isOutside = (height: number) => height < 14\r\n let bars = svg.selectAll('.bar').data(data)\r\n bars\r\n .enter()\r\n .append('rect')\r\n .attr('class', function (d: Bar) {\r\n return 'bar bar--' + (d.value < 0 ? 'negative' : 'positive')\r\n })\r\n .attr('x', (d: Bar) => x(d.name)!)\r\n .attr('y', (d: Bar) => y(Math.max(0, d.value)))\r\n .attr('height', getHeight)\r\n .attr('width', x.bandwidth())\r\n .attr('ry', FinvizSettings?.hasRedesignEnabled ? 2 : 0)\r\n\r\n svg\r\n .selectAll('.bar-label')\r\n .data(data)\r\n .enter()\r\n .append('text')\r\n .attr('class', 'divergence')\r\n .attr('x', (d: Bar) => x(d.name)! + x.bandwidth() / 2)\r\n .attr('y', (d: Bar) => {\r\n const height = getHeight(d)\r\n const outside = isOutside(height)\r\n if (d.value < 0) {\r\n return y(Math.max(0, d.value)) + height + (outside ? 12 : -4)\r\n }\r\n return y(Math.max(0, d.value)) + (outside ? -4 : 12)\r\n })\r\n .attr('fill', (d: Bar) => (!FinvizSettings.hasDarkTheme && isOutside(getHeight(d)) ? 'black' : 'white'))\r\n .attr('text-anchor', 'middle')\r\n .attr('font-size', '10px')\r\n .text((d: Bar) => (d.value !== null ? yFormat(d.value) : ''))\r\n\r\n this.svgRef.current!.style.width = totalWidth + 'px'\r\n this.svgRef.current!.style.height = totalHeight + 'px'\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n )\r\n }\r\n}\r\n","import { round } from '../backtest/utils'\r\nimport BarChart, { Bar } from './barChart'\r\n\r\nfunction convertData(endYear: number, values: any[]) {\r\n return values\r\n .map((value, index) => ({\r\n name: endYear - index,\r\n value,\r\n }))\r\n .reverse() as unknown as Bar[]\r\n}\r\n\r\ninterface FAChartProps {\r\n id: string\r\n largeRoundPlaces: number\r\n largeScale: number\r\n largeTitleSufix: string\r\n smallRoundPlaces: number\r\n smallScale: number\r\n smallTitleSufix: string\r\n title: string\r\n}\r\n\r\nfunction FAChart({\r\n id,\r\n title,\r\n smallRoundPlaces,\r\n largeRoundPlaces,\r\n smallScale,\r\n largeScale,\r\n smallTitleSufix,\r\n largeTitleSufix,\r\n}: FAChartProps) {\r\n const data: number[] = FinvizFA[id]\r\n\r\n const min = Math.min(...data)\r\n const max = Math.max(...data)\r\n const range = max > -min ? max : -min\r\n\r\n const isLarge = Math.abs(range) >= 1000\r\n\r\n const scale = isLarge ? largeScale : smallScale\r\n const values = data.map((value) =>\r\n value == null ? null : round(scale * value, isLarge ? largeRoundPlaces : smallRoundPlaces)\r\n )\r\n\r\n return (\r\n round(value, isLarge ? largeRoundPlaces : smallRoundPlaces)}\r\n width={280}\r\n height={150}\r\n marginRight={37}\r\n className=\"is-fa\"\r\n />\r\n )\r\n}\r\n\r\nexport default function FundamentalCharts() {\r\n return (\r\n <>\r\n \r\n \r\n | \r\n \r\n \r\n | \r\n \r\n \r\n | \r\n >\r\n )\r\n}\r\n","/* global FinvizQuoteTickers */\r\nimport classnames from 'classnames'\r\nimport * as dateFns from 'date-fns'\r\nimport React, { ChangeEvent, Component, FormEvent } from 'react'\r\nimport { BrowserRouter } from 'react-router-dom'\r\n\r\nimport { DatePicker } from '../../main/components/date-picker'\r\nimport { SpecificChartFunctionality } from '../../main/constants'\r\nimport {\r\n ChartElementType,\r\n ChartLayout,\r\n Instrument,\r\n Quote,\r\n QuoteFetchType,\r\n TIMEFRAME,\r\n Theme,\r\n Utils,\r\n} from '../charts-lib'\r\nimport { decodeQueryString } from '../queryString'\r\nimport { getStaticChartConfig } from '../shared/chartLayoutConfig'\r\nimport { getSanitizedTicker } from '../shared/ticker-sanitizer'\r\nimport { formatDateToStringUS } from '../shared/utils'\r\n\r\nconst redesignEnabled = !!FinvizSettings.hasRedesignEnabled\r\n\r\nvar colorScaleClass = function (value: number) {\r\n if (value < 0) {\r\n return 'color-text is-negative'\r\n } else if (value > 0) {\r\n return 'color-text is-positive'\r\n }\r\n return ''\r\n}\r\n\r\nvar monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']\r\n\r\nvar arraysEqual = function (arr1: unknown[], arr2: unknown[]) {\r\n if (arr1.length !== arr2.length) {\r\n return false\r\n }\r\n for (var i = 0; i < arr1.length; i++) {\r\n if (arr1[i] !== arr2[i]) {\r\n return false\r\n }\r\n }\r\n return true\r\n}\r\n\r\ninterface ChartProps {\r\n tickers: string[]\r\n fromDay: string\r\n toDay: string\r\n}\r\n\r\nclass Chart extends Component {\r\n shouldComponentUpdate(nextProps: ChartProps) {\r\n return !arraysEqual(this.props.tickers, nextProps.tickers)\r\n }\r\n\r\n render() {\r\n const theme = FinvizSettings.hasDarkTheme ? Theme.dark : Theme.light\r\n const tickerQuote = Quote.select((q) => q.close.length > 0 && this.props.tickers.includes(q.ticker))\r\n const chartConfig = getStaticChartConfig({\r\n ticker: tickerQuote[0]?.ticker ?? '',\r\n timeframe: TIMEFRAME.d,\r\n paneElements: [\r\n {\r\n type: ChartElementType.PerfChart,\r\n tickers: this.props.tickers,\r\n fromDate: this.props.fromDay,\r\n toDate: this.props.toDay,\r\n overlays: [],\r\n },\r\n ],\r\n refreshData: false,\r\n specificChartFunctionality: SpecificChartFunctionality.quotePerf,\r\n theme,\r\n })\r\n return (\r\n \r\n \r\n \r\n \r\n
\r\n )\r\n }\r\n}\r\n\r\ninterface TableProps {\r\n months: string[]\r\n rows: Array<{\r\n ticker: string\r\n months: string[]\r\n total: string\r\n }>\r\n}\r\n\r\n// mozno vyfarbovat tabulku?\r\nclass Table extends Component {\r\n render() {\r\n var { months, rows } = this.props,\r\n groupsCount = Math.ceil(months.length / 12)\r\n rows = rows.slice()\r\n const tdClasses = classnames('text-center', {\r\n 'body-table-nw font-bold': !redesignEnabled,\r\n })\r\n\r\n var trs = []\r\n for (let g = 0; g < groupsCount; g++) {\r\n trs.push(\r\n \r\n | \r\n {months.splice(0, 12).map((month) => (\r\n \r\n {month}\r\n | \r\n ))}\r\n {g === groupsCount - 1 && Total | }\r\n
\r\n )\r\n rows.forEach((row, i) => {\r\n trs.push(\r\n \r\n {row.ticker} | \r\n {row.months.splice(0, 12).map((col, monthIndex) => (\r\n \r\n {col}\r\n | \r\n ))}\r\n {g === groupsCount - 1 && (\r\n \r\n {row.total}\r\n | \r\n )}\r\n
\r\n )\r\n })\r\n }\r\n\r\n return (\r\n \r\n )\r\n }\r\n}\r\n\r\ninterface PerfState {\r\n tickersInput: string\r\n tickers: string[]\r\n months: Array<{\r\n value: string\r\n label: string\r\n }>\r\n fromMonth: {\r\n value: string\r\n label: string\r\n }\r\n toMonth: {\r\n value: string\r\n label: string\r\n }\r\n minDate: string\r\n maxDate: string\r\n fromDay: string\r\n toDay: string\r\n loading: boolean\r\n}\r\n\r\nexport class Perf extends Component {\r\n containerRef = React.createRef()\r\n\r\n constructor(props: any) {\r\n super(props)\r\n var now = new Date(),\r\n months = []\r\n const startYear = new Date().getFullYear() - 36 // We have 37.25 years of data in DB, so leaving some offset\r\n for (var year = startYear; year <= now.getFullYear(); year++) {\r\n for (var month = 1; month <= 12; month++) {\r\n if (year === now.getFullYear() && month > now.getMonth() + 1) {\r\n break\r\n }\r\n months.push({\r\n value: month.toString().padStart(2, '0') + '/01/' + year,\r\n label: monthNames[month - 1] + ' ' + year.toString().substring(2),\r\n })\r\n }\r\n }\r\n\r\n this.state = {\r\n tickersInput: FinvizQuoteTickers.join(','),\r\n tickers: FinvizQuoteTickers,\r\n months: months,\r\n fromMonth: months[months.length - 12],\r\n toMonth: months[months.length - 1],\r\n /**\r\n * DB_BARS_LIMIT - code below is dependent on amount of data we store for specific timeframes\r\n * Search DB_BARS_LIMIT in the project to find other places with such code.\r\n */\r\n // 2510 bars = ±10 years\r\n minDate: formatDateToStringUS(dateFns.sub(new Date(), { years: 9, months: 11 })),\r\n maxDate: formatDateToStringUS(new Date()),\r\n fromDay: formatDateToStringUS(dateFns.subYears(new Date(), 1)),\r\n toDay: formatDateToStringUS(new Date()),\r\n loading: true,\r\n }\r\n }\r\n\r\n render() {\r\n if (this.state.loading) {\r\n return (\r\n \r\n Loading...\r\n
\r\n )\r\n }\r\n\r\n var from = new Date(this.state.fromMonth.value)\r\n var to = new Date(this.state.toMonth.value)\r\n var monthsToShow = this.state.months\r\n .map((month) => month.value)\r\n .filter((month) => new Date(month) >= from && new Date(month) <= to)\r\n\r\n var quotes = Quote.select((q: any) => q.timeframe === 'm')\r\n var quotesPerf = quotes.map((q: any) => {\r\n var obj: { ticker: string; perf: Record } = { ticker: q.ticker, perf: {} }\r\n q.date.forEach((d: any, i: number) => {\r\n if (i === 0) {\r\n return\r\n }\r\n var date = Utils.dateFromUnixTimestamp(d)\r\n var perf = (q.close[i] * 100) / q.close[i - 1] - 100\r\n obj.perf[(date.getMonth() + 1).toString().padStart(2, '0') + '/01/' + date.getFullYear()] = perf\r\n })\r\n return obj\r\n })\r\n\r\n var months = monthsToShow.map(\r\n (month) => monthNames[new Date(month).getMonth()] + ' ' + new Date(month).getFullYear().toString().substring(2)\r\n )\r\n var rows = quotesPerf.map((quote: any) => {\r\n var cols: string[] = []\r\n var total = 1\r\n monthsToShow.forEach((month) => {\r\n var perf = Math.round(quote.perf[month] * 100) / 100\r\n if (!isNaN(perf)) {\r\n total *= quote.perf[month] / 100 + 1\r\n cols.push((perf > 0 ? '+' : '') + perf.toFixed(2) + '%')\r\n } else {\r\n cols.push('N/A')\r\n }\r\n })\r\n total = (total - 1) * 100\r\n return { ticker: quote.ticker, months: cols, total: (total > 0 ? '+' : '') + total.toFixed(2) + '%' }\r\n })\r\n\r\n return (\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n Monthly performance from \r\n \r\n to \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n )\r\n }\r\n\r\n refetchQuotes = () => {\r\n this._fetch(this.state.tickers, false)\r\n }\r\n\r\n componentDidMount() {\r\n this._fetch(this.state.tickers)\r\n\r\n // We have to listen to these events to synchrnously update quote data, if we do after awaiting Quote.getAll in _fetch\r\n // there's a visual glitch because it rerenders with new data from the server (there's a complete refetch after 15 requests with no new data)\r\n // and then it rerenders again after updateQuoteData\r\n Quote.bind('refetch newerData', this.updateQuoteData)\r\n document.addEventListener('quoteFetchEvent', this.refetchQuotes)\r\n }\r\n\r\n componentWillUnmount() {\r\n Quote.unbind('refetch newerData', this.updateQuoteData)\r\n document.removeEventListener('quoteFetchEvent', this.refetchQuotes)\r\n }\r\n\r\n updateQuoteData = () => {\r\n const { fromDay, toDay } = this.state\r\n\r\n if (!fromDay || !toDay) {\r\n return\r\n }\r\n\r\n const dailyQuotes = Quote.select((q: any) => q.timeframe === 'd')\r\n const fromDate = new Date(fromDay + ' 00:00')\r\n const toDate = new Date(toDay + ' 23:59')\r\n dailyQuotes.forEach((q: any) => {\r\n const o = [],\r\n h = [],\r\n l = [],\r\n c = [],\r\n d = [],\r\n v = []\r\n for (let i = 0; i < q.close.length; i++) {\r\n const date = Utils.dateFromUnixTimestamp(q.date[i])\r\n if (fromDate <= date && date <= toDate) {\r\n o.push(q.open[i])\r\n h.push(q.high[i])\r\n l.push(q.low[i])\r\n c.push(q.close[i])\r\n d.push(q.date[i])\r\n v.push(q.volume[i])\r\n }\r\n }\r\n q.updateAttributes({\r\n open: o,\r\n high: h,\r\n low: l,\r\n close: c,\r\n date: d,\r\n volume: v,\r\n })\r\n })\r\n\r\n // This is to rerender perf table on quote update\r\n this.forceUpdate()\r\n }\r\n\r\n _fetch = async (tickers: string[], isRefetch = true) => {\r\n const { t } = decodeQueryString<{ t: string; p?: TIMEFRAME }>()\r\n if (isRefetch) {\r\n this.setState({ loading: true })\r\n }\r\n\r\n Quote.all().forEach(async (quote) => {\r\n if (quote.ticker === t && quote.timeframe === 'd' && !isRefetch) {\r\n // We don't want to trigger main ticker quote newer data fetch because it's done in withQuotePolling which also triggers this function\r\n // by emmiting quoteFetchEvent\r\n return\r\n }\r\n if (tickers.includes(quote.ticker)) {\r\n await quote.fetchData({ fetchType: isRefetch ? QuoteFetchType.Refetch : QuoteFetchType.NewerData })\r\n this.updateQuoteData()\r\n } else {\r\n quote.destroy()\r\n }\r\n })\r\n\r\n if (isRefetch) {\r\n var d = tickers.map((ticker) => ({ ticker: ticker, timeframe: TIMEFRAME.d, instrument: Instrument.Stock }))\r\n var m = tickers.map((ticker) => ({ ticker: ticker, timeframe: TIMEFRAME.m, instrument: Instrument.Stock }))\r\n await Quote.getAll(d.concat(m))\r\n\r\n this.setState(\r\n {\r\n loading: false,\r\n },\r\n () => {\r\n this.containerRef.current?.style.removeProperty('min-height')\r\n }\r\n )\r\n }\r\n\r\n this.updateQuoteData()\r\n }\r\n\r\n _onSubmit = (e: FormEvent) => {\r\n e.preventDefault()\r\n const tickersInput = getSanitizedTicker(this.state.tickersInput, true)\r\n const tickers = tickersInput.split(',')\r\n this.setState({ tickers, tickersInput }, () => {\r\n this._fetch(tickers)\r\n })\r\n }\r\n\r\n _onMonthChange = (type: string, e: ChangeEvent) => {\r\n var state: any = {}\r\n state[type + 'Month'] = this.state.months.filter((m) => m.value === e.target.value)[0]\r\n this.setState(state)\r\n }\r\n\r\n _onDatePickerChange = (type: string, date: any) => {\r\n var formattedDate = formatDateToStringUS(new Date(date))\r\n\r\n var state: any = {}\r\n state[type + 'Day'] = formattedDate\r\n state[type + 'DatePickerOpen'] = false\r\n this.setState(state, () => {\r\n this._fetch(this.state.tickers)\r\n })\r\n }\r\n\r\n _hideDatePicker = (type: string) => {\r\n var state: any = {}\r\n state[type + 'DatePickerOpen'] = false\r\n this.setState(state)\r\n }\r\n}\r\n","import classnames from 'classnames'\r\n\r\nimport { formatDate } from '../../app/header/utils'\r\nimport { formatNumber } from '../util'\r\nimport { RedGreenMultiline, RedGreenText } from './RedGreenText'\r\n\r\nexport interface QuotePriceProps {\r\n title?: string\r\n date?: Date | null\r\n dateLabel?: string | null\r\n price: number\r\n changeUsd: number\r\n changePct: number\r\n}\r\n\r\nexport function QuotePrice({ title, date, dateLabel, price, changeUsd, changePct }: QuotePriceProps) {\r\n const fractions = !isNaN(price) && price < 1 ? 4 : 2\r\n const hasValue = changeUsd && Number.isFinite(changeUsd)\r\n\r\n return (\r\n \r\n {title &&
{title}
}\r\n\r\n {(date || dateLabel) && (\r\n
\r\n {dateLabel ?? formatDate(date, '', 'MMM dd')}\r\n {date && (\r\n <>\r\n {' '}\r\n • {formatDate(date, '', 'hh:mmaa')} ET\r\n >\r\n )}\r\n \r\n )}\r\n\r\n
\r\n
{formatNumber(price, { defaultValue: '—', fractions })}\r\n
\r\n
\r\n \r\n Dollar change
\r\n {formatNumber(changeUsd, { showPlusSign: true, fractions })}\r\n \r\n %}\r\n >\r\n Percentage change
\r\n {formatNumber(changePct)}\r\n \r\n \r\n
\r\n
\r\n
\r\n )\r\n}\r\n","export const QUOTE_HEADER_ROOT = 'js-quote-header-prices'\r\nexport const STATIC_PRICE_SELECTOR = '.js-is-static-price'\r\n","import * as React from 'react'\r\n\r\nimport { useModelState } from '../../charts-lib'\r\nimport { QUOTE_HEADER_ROOT, STATIC_PRICE_SELECTOR } from './constants'\r\n\r\nfunction toggleStaticheader(isReactHeader: boolean) {\r\n if (isReactHeader) {\r\n document.querySelector(STATIC_PRICE_SELECTOR)?.classList.add('hidden')\r\n document.getElementById(QUOTE_HEADER_ROOT)?.classList.remove('hidden')\r\n } else {\r\n document.querySelector(STATIC_PRICE_SELECTOR)?.classList.remove('hidden')\r\n document.getElementById(QUOTE_HEADER_ROOT)?.classList.add('hidden')\r\n }\r\n}\r\n\r\nexport function useReplaceStaticHeader(isLoaded: boolean) {\r\n React.useEffect(() => {\r\n toggleStaticheader(isLoaded)\r\n }, [isLoaded])\r\n}\r\n\r\nconst CHANGE_UPATE_EVENTS = ['change', 'update']\r\nconst QUOTE_MODEL_CHANGE_EVENTS = [...CHANGE_UPATE_EVENTS, 'refetch', 'newerData']\r\n\r\nexport interface HeaderPricesContext {\r\n prevClose: number\r\n lastClose: number\r\n lastTime: number\r\n lastDate?: number\r\n afterClose: number\r\n afterTime: number\r\n}\r\n\r\nexport function useChartContextPrices(chartLayoutModel: any): HeaderPricesContext | null {\r\n const chartModel = useModelState(chartLayoutModel?.charts().first(), {\r\n watchProperties: ['quote'],\r\n listenOnEvents: CHANGE_UPATE_EVENTS,\r\n })\r\n const quoteModel = useModelState(chartModel?.quote() ?? null, {\r\n watchProperties: ['lastClose', 'prevClose', 'afterClose', 'afterTime'],\r\n listenOnEvents: QUOTE_MODEL_CHANGE_EVENTS,\r\n })\r\n\r\n if (!quoteModel) return null\r\n\r\n return {\r\n prevClose: quoteModel.prevClose,\r\n lastClose: quoteModel.lastClose,\r\n lastTime: quoteModel.lastTime,\r\n lastDate: quoteModel.lastDate,\r\n afterClose: quoteModel.afterClose,\r\n afterTime: quoteModel.afterTime,\r\n }\r\n}\r\n","import * as dateFns from 'date-fns'\r\nimport React from 'react'\r\n\r\nimport { QuotePrice } from '../../../main/components/QuotePrice'\r\nimport { Quote, useChartLayoutGlobalModelAsync, withCompleteLayoutModelInit, withQuotePolling } from '../../charts-lib'\r\nimport { formatDate, getDate } from '../../header/utils'\r\nimport { HeaderPricesContext, useChartContextPrices, useReplaceStaticHeader } from './hooks'\r\n\r\nexport function ChartContextQuoteHeader() {\r\n const { chartLayoutModel } = useChartLayoutGlobalModelAsync()\r\n const data = useChartContextPrices(chartLayoutModel)\r\n\r\n return \r\n}\r\n\r\ninterface QuoteHeaderWithManualInitProps {\r\n chartLayoutModel: any\r\n config: any\r\n}\r\n\r\nfunction ManualInitQuoteHeaderComponent({ chartLayoutModel, config }: QuoteHeaderWithManualInitProps) {\r\n const data = useChartContextPrices(chartLayoutModel)\r\n\r\n /**\r\n * We need to instantiate layout model in order to use quote refetch on page\r\n * without an actual chart (options.) We also need to manually create a chart model\r\n *\r\n * It is then correctly caught in `useChartContextPrices`\r\n */\r\n React.useEffect(() => {\r\n async function fetchAndMapInitialQuote() {\r\n for (const chartConfig of config.charts) {\r\n const modelProperties = Object.assign({}, chartConfig)\r\n\r\n modelProperties.chart_layout = chartLayoutModel\r\n delete modelProperties.panes\r\n if (modelProperties.refreshData == null) {\r\n modelProperties.refreshData = true\r\n }\r\n chartLayoutModel.charts().create(modelProperties)\r\n }\r\n\r\n const chart = chartLayoutModel.charts().first()\r\n\r\n const quote = await Quote.get({\r\n ticker: chart.ticker,\r\n instrument: chart.instrument,\r\n timeframe: chart.timeframe,\r\n options: { maxBars: 0 },\r\n })\r\n\r\n chart.updateAttributes({ quote })\r\n }\r\n\r\n fetchAndMapInitialQuote()\r\n }, [chartLayoutModel, config.charts])\r\n\r\n return \r\n}\r\n\r\nexport const ManualInitQuoteHeader = withCompleteLayoutModelInit(withQuotePolling(ManualInitQuoteHeaderComponent))\r\n\r\nexport function QuoteHeaderContent({ data }: { data: HeaderPricesContext | null }) {\r\n /**\r\n * Replace static HTML with our react component\r\n */\r\n useReplaceStaticHeader(!!data)\r\n\r\n if (!data) return null\r\n\r\n const isChange = Number.isFinite(data.prevClose)\r\n const isAfterChange = Number.isFinite(data.afterClose) && data.afterClose !== data.lastClose\r\n const lastTime = data.lastTime ? getDate(data.lastTime * 1000) : null\r\n const lastDate = !lastTime && data.lastDate ? formatDate(data.lastDate, 'yyyyMMdd', 'MMM dd, yyyy') : null\r\n const afterDate = data.afterTime ? getDate(data.afterTime * 1000) : null\r\n\r\n let afterhoursTitle\r\n if (lastTime && afterDate) {\r\n if (dateFns.isBefore(afterDate, lastTime)) afterhoursTitle = 'Premarket'\r\n else afterhoursTitle = 'Aftermarket'\r\n }\r\n\r\n return (\r\n <>\r\n {isChange && (\r\n \r\n )}\r\n {isAfterChange && (\r\n \r\n )}\r\n >\r\n )\r\n}\r\n","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date that should be before the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * var result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\n\nexport default function isBefore(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() < dateToCompare.getTime();\n}","import { SelectItem } from '../../../main/components'\r\nimport { IconNameType } from '../../../main/components/icon'\r\n\r\nexport enum QuoteNodeChartTypes {\r\n candlesticksimple = 'candlesticksimple',\r\n candlestick = 'candlestick',\r\n line = 'line',\r\n ohlc = 'ohlc',\r\n heikinashi = 'heikinashi',\r\n hollowcandlestick = 'hollowcandlestick',\r\n}\r\n\r\nexport enum QuoteUrlChartTypes {\r\n cs = 'cs',\r\n c = 'c',\r\n l = 'l',\r\n o = 'o',\r\n ha = 'ha',\r\n hc = 'hc',\r\n}\r\n\r\nexport const QuoteShortToLongType = {\r\n [QuoteUrlChartTypes.cs]: QuoteNodeChartTypes.candlesticksimple,\r\n [QuoteUrlChartTypes.c]: QuoteNodeChartTypes.candlestick,\r\n [QuoteUrlChartTypes.l]: QuoteNodeChartTypes.line,\r\n [QuoteUrlChartTypes.o]: QuoteNodeChartTypes.ohlc,\r\n [QuoteUrlChartTypes.ha]: QuoteNodeChartTypes.heikinashi,\r\n [QuoteUrlChartTypes.hc]: QuoteNodeChartTypes.hollowcandlestick,\r\n} as const\r\n\r\nexport const QuoteLongToShortType = {\r\n [QuoteNodeChartTypes.candlesticksimple]: QuoteUrlChartTypes.cs,\r\n [QuoteNodeChartTypes.candlestick]: QuoteUrlChartTypes.c,\r\n [QuoteNodeChartTypes.line]: QuoteUrlChartTypes.l,\r\n [QuoteNodeChartTypes.ohlc]: QuoteUrlChartTypes.o,\r\n [QuoteNodeChartTypes.heikinashi]: QuoteUrlChartTypes.ha,\r\n [QuoteNodeChartTypes.hollowcandlestick]: QuoteUrlChartTypes.hc,\r\n} as const\r\n\r\nexport const FREE_TYPES = ['candlesticksimple', 'candlestick', 'line']\r\n\r\nexport const DEFAULT_TYPES = [\r\n { icon: 'candleBarBasic', value: QuoteNodeChartTypes.candlestick, label: 'Candle' },\r\n { icon: 'lineChartType', value: QuoteNodeChartTypes.line, label: 'Line' },\r\n { icon: 'ohlcChartType', value: QuoteNodeChartTypes.ohlc, label: 'OHLC' },\r\n { icon: 'candleBarHollow', value: QuoteNodeChartTypes.hollowcandlestick, label: 'Hollow Candle' },\r\n { icon: 'candleBarHeikinAshi', value: QuoteNodeChartTypes.heikinashi, label: 'Heikin Ashi' },\r\n]\r\n\r\nexport type TypeBaseOption = SelectItem & {\r\n icon: IconNameType\r\n href: string\r\n}\r\n","import { Select } from '../../../main/components'\r\nimport { Icon } from '../../../main/components/icon'\r\nimport { useChartTypes } from './use-chart-type'\r\n\r\nconst hasRedesign = FinvizSettings.hasRedesignEnabled\r\n\r\nexport function ChartTypesSelect({ isPremium }: { isPremium: boolean }) {\r\n const { chartTypes, currentType, setSelectedChartTypeOverwrite } = useChartTypes({ isPremium })\r\n\r\n return (\r\n : undefined}\r\n rounding={hasRedesign ? undefined : 'none'}\r\n onChange={({ value }) => setSelectedChartTypeOverwrite(value)}\r\n items={chartTypes}\r\n />\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useLocation } from 'react-router-dom'\r\n\r\nimport { decodeQueryString, encodeQueryString } from '../../queryString'\r\nimport {\r\n DEFAULT_TYPES,\r\n FREE_TYPES,\r\n QuoteLongToShortType,\r\n QuoteNodeChartTypes,\r\n QuoteShortToLongType,\r\n QuoteUrlChartTypes,\r\n TypeBaseOption,\r\n} from './utils'\r\n\r\nexport function useChartTypes({ isPremium }: { isPremium: boolean }) {\r\n const location = useLocation()\r\n const { b, t, ta, ty, p = 'd', r } = decodeQueryString(location.search)\r\n const taInt = ta ? Number.parseInt(ta) : 1\r\n const [selectedChartTypeOverwrite, setSelectedChartTypeOverwrite] = React.useState()\r\n\r\n const generateRouterPath = React.useCallback(\r\n (type: QuoteNodeChartTypes) => {\r\n if (isPremium || FREE_TYPES.includes(type)) {\r\n return `/quote.ashx?${encodeQueryString({\r\n b,\r\n t,\r\n r,\r\n ty:\r\n type === QuoteNodeChartTypes.candlesticksimple\r\n ? QuoteLongToShortType.candlestick\r\n : QuoteLongToShortType[type],\r\n ta: type === QuoteNodeChartTypes.candlestick ? '1' : '0',\r\n p,\r\n })}`\r\n }\r\n return `/elite.ashx?${encodeQueryString({\r\n utm_source: 'finviz',\r\n utm_medium: 'banner',\r\n utm_campaign: 'quote-chart-type-select',\r\n })}`\r\n },\r\n [isPremium, b, t, r, p]\r\n )\r\n\r\n const chartTypes = React.useMemo(\r\n () =>\r\n (\r\n [\r\n !isPremium ? { icon: 'candleBarBasic', value: 'candlesticksimple', label: 'Candle - simple' } : null,\r\n ...DEFAULT_TYPES.map((type) =>\r\n !isPremium && type.value === 'candlestick' ? { ...type, label: 'Candle - advanced' } : type\r\n ),\r\n ].filter(Boolean) as TypeBaseOption[]\r\n ).map((item) => ({\r\n ...item,\r\n href: generateRouterPath(item.value as QuoteNodeChartTypes),\r\n reloadDocument: !isPremium,\r\n })),\r\n [generateRouterPath, isPremium]\r\n )\r\n\r\n const currentType = React.useMemo(\r\n () =>\r\n chartTypes.find((type) => {\r\n if (selectedChartTypeOverwrite) {\r\n return type.value === selectedChartTypeOverwrite\r\n }\r\n\r\n const defaultType =\r\n ((ty as QuoteUrlChartTypes | undefined) && QuoteShortToLongType[ty as QuoteUrlChartTypes]) ??\r\n (FinvizQuoteTypeCurrent as QuoteNodeChartTypes)\r\n\r\n return !isPremium && defaultType === QuoteNodeChartTypes.candlestick && taInt === 0\r\n ? type.value === QuoteNodeChartTypes.candlesticksimple\r\n : type.value === defaultType\r\n }),\r\n [chartTypes, selectedChartTypeOverwrite, ty, isPremium, taInt]\r\n )\r\n\r\n return { currentType, chartTypes, setSelectedChartTypeOverwrite }\r\n}\r\n","import classnames from 'classnames'\r\n\r\nimport { StockDetailTimeframeBar } from '../../../app/charts-lib'\r\nimport { Button } from '../../../main/components/button'\r\nimport { NotificationWrapper } from '../../../main/components/notification'\r\nimport { decodeQueryString } from '../../queryString'\r\nimport { ChartTypesSelect } from '../chart-type-select'\r\n\r\ninterface Props {\r\n index: number\r\n isInteractiveChart: boolean\r\n isStockDetailUpdating: boolean\r\n}\r\n\r\nconst hasRedesign = FinvizSettings.hasRedesignEnabled\r\n\r\nexport function QuoteMenu({ index, isInteractiveChart, isStockDetailUpdating }: Props) {\r\n const { t, ty, p } = decodeQueryString()\r\n const urlTickers = t.split(',')\r\n const isPremium = FinvizSettings.hasUserPremium\r\n\r\n return (\r\n \r\n
\r\n {ty !== 'p' && ty !== 'oc' && (\r\n <>\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n >\r\n )}\r\n
\r\n {ty !== 'p' && ty !== 'oc' ? (\r\n \r\n ) : null}\r\n
\r\n
\r\n )\r\n}\r\n","/**!\n* tippy.js v6.3.7\n* (c) 2017-2021 atomiks\n* MIT License\n*/\nimport { createPopper, applyStyles } from '@popperjs/core';\n\nvar ROUND_ARROW = '';\nvar CONTENT_CLASS = \"tippy-content\";\nvar BACKDROP_CLASS = \"tippy-backdrop\";\nvar ARROW_CLASS = \"tippy-arrow\";\nvar SVG_ARROW_CLASS = \"tippy-svg-arrow\";\nvar TOUCH_OPTIONS = {\n passive: true,\n capture: true\n};\nvar TIPPY_DEFAULT_APPEND_TO = function TIPPY_DEFAULT_APPEND_TO() {\n return document.body;\n};\n\nfunction hasOwnProperty(obj, key) {\n return {}.hasOwnProperty.call(obj, key);\n}\nfunction getValueAtIndexOrReturn(value, index, defaultValue) {\n if (Array.isArray(value)) {\n var v = value[index];\n return v == null ? Array.isArray(defaultValue) ? defaultValue[index] : defaultValue : v;\n }\n\n return value;\n}\nfunction isType(value, type) {\n var str = {}.toString.call(value);\n return str.indexOf('[object') === 0 && str.indexOf(type + \"]\") > -1;\n}\nfunction invokeWithArgsOrReturn(value, args) {\n return typeof value === 'function' ? value.apply(void 0, args) : value;\n}\nfunction debounce(fn, ms) {\n // Avoid wrapping in `setTimeout` if ms is 0 anyway\n if (ms === 0) {\n return fn;\n }\n\n var timeout;\n return function (arg) {\n clearTimeout(timeout);\n timeout = setTimeout(function () {\n fn(arg);\n }, ms);\n };\n}\nfunction removeProperties(obj, keys) {\n var clone = Object.assign({}, obj);\n keys.forEach(function (key) {\n delete clone[key];\n });\n return clone;\n}\nfunction splitBySpaces(value) {\n return value.split(/\\s+/).filter(Boolean);\n}\nfunction normalizeToArray(value) {\n return [].concat(value);\n}\nfunction pushIfUnique(arr, value) {\n if (arr.indexOf(value) === -1) {\n arr.push(value);\n }\n}\nfunction unique(arr) {\n return arr.filter(function (item, index) {\n return arr.indexOf(item) === index;\n });\n}\nfunction getBasePlacement(placement) {\n return placement.split('-')[0];\n}\nfunction arrayFrom(value) {\n return [].slice.call(value);\n}\nfunction removeUndefinedProps(obj) {\n return Object.keys(obj).reduce(function (acc, key) {\n if (obj[key] !== undefined) {\n acc[key] = obj[key];\n }\n\n return acc;\n }, {});\n}\n\nfunction div() {\n return document.createElement('div');\n}\nfunction isElement(value) {\n return ['Element', 'Fragment'].some(function (type) {\n return isType(value, type);\n });\n}\nfunction isNodeList(value) {\n return isType(value, 'NodeList');\n}\nfunction isMouseEvent(value) {\n return isType(value, 'MouseEvent');\n}\nfunction isReferenceElement(value) {\n return !!(value && value._tippy && value._tippy.reference === value);\n}\nfunction getArrayOfElements(value) {\n if (isElement(value)) {\n return [value];\n }\n\n if (isNodeList(value)) {\n return arrayFrom(value);\n }\n\n if (Array.isArray(value)) {\n return value;\n }\n\n return arrayFrom(document.querySelectorAll(value));\n}\nfunction setTransitionDuration(els, value) {\n els.forEach(function (el) {\n if (el) {\n el.style.transitionDuration = value + \"ms\";\n }\n });\n}\nfunction setVisibilityState(els, state) {\n els.forEach(function (el) {\n if (el) {\n el.setAttribute('data-state', state);\n }\n });\n}\nfunction getOwnerDocument(elementOrElements) {\n var _element$ownerDocumen;\n\n var _normalizeToArray = normalizeToArray(elementOrElements),\n element = _normalizeToArray[0]; // Elements created via a have an ownerDocument with no reference to the body\n\n\n return element != null && (_element$ownerDocumen = element.ownerDocument) != null && _element$ownerDocumen.body ? element.ownerDocument : document;\n}\nfunction isCursorOutsideInteractiveBorder(popperTreeData, event) {\n var clientX = event.clientX,\n clientY = event.clientY;\n return popperTreeData.every(function (_ref) {\n var popperRect = _ref.popperRect,\n popperState = _ref.popperState,\n props = _ref.props;\n var interactiveBorder = props.interactiveBorder;\n var basePlacement = getBasePlacement(popperState.placement);\n var offsetData = popperState.modifiersData.offset;\n\n if (!offsetData) {\n return true;\n }\n\n var topDistance = basePlacement === 'bottom' ? offsetData.top.y : 0;\n var bottomDistance = basePlacement === 'top' ? offsetData.bottom.y : 0;\n var leftDistance = basePlacement === 'right' ? offsetData.left.x : 0;\n var rightDistance = basePlacement === 'left' ? offsetData.right.x : 0;\n var exceedsTop = popperRect.top - clientY + topDistance > interactiveBorder;\n var exceedsBottom = clientY - popperRect.bottom - bottomDistance > interactiveBorder;\n var exceedsLeft = popperRect.left - clientX + leftDistance > interactiveBorder;\n var exceedsRight = clientX - popperRect.right - rightDistance > interactiveBorder;\n return exceedsTop || exceedsBottom || exceedsLeft || exceedsRight;\n });\n}\nfunction updateTransitionEndListener(box, action, listener) {\n var method = action + \"EventListener\"; // some browsers apparently support `transition` (unprefixed) but only fire\n // `webkitTransitionEnd`...\n\n ['transitionend', 'webkitTransitionEnd'].forEach(function (event) {\n box[method](event, listener);\n });\n}\n/**\n * Compared to xxx.contains, this function works for dom structures with shadow\n * dom\n */\n\nfunction actualContains(parent, child) {\n var target = child;\n\n while (target) {\n var _target$getRootNode;\n\n if (parent.contains(target)) {\n return true;\n }\n\n target = target.getRootNode == null ? void 0 : (_target$getRootNode = target.getRootNode()) == null ? void 0 : _target$getRootNode.host;\n }\n\n return false;\n}\n\nvar currentInput = {\n isTouch: false\n};\nvar lastMouseMoveTime = 0;\n/**\n * When a `touchstart` event is fired, it's assumed the user is using touch\n * input. We'll bind a `mousemove` event listener to listen for mouse input in\n * the future. This way, the `isTouch` property is fully dynamic and will handle\n * hybrid devices that use a mix of touch + mouse input.\n */\n\nfunction onDocumentTouchStart() {\n if (currentInput.isTouch) {\n return;\n }\n\n currentInput.isTouch = true;\n\n if (window.performance) {\n document.addEventListener('mousemove', onDocumentMouseMove);\n }\n}\n/**\n * When two `mousemove` event are fired consecutively within 20ms, it's assumed\n * the user is using mouse input again. `mousemove` can fire on touch devices as\n * well, but very rarely that quickly.\n */\n\nfunction onDocumentMouseMove() {\n var now = performance.now();\n\n if (now - lastMouseMoveTime < 20) {\n currentInput.isTouch = false;\n document.removeEventListener('mousemove', onDocumentMouseMove);\n }\n\n lastMouseMoveTime = now;\n}\n/**\n * When an element is in focus and has a tippy, leaving the tab/window and\n * returning causes it to show again. For mouse users this is unexpected, but\n * for keyboard use it makes sense.\n * TODO: find a better technique to solve this problem\n */\n\nfunction onWindowBlur() {\n var activeElement = document.activeElement;\n\n if (isReferenceElement(activeElement)) {\n var instance = activeElement._tippy;\n\n if (activeElement.blur && !instance.state.isVisible) {\n activeElement.blur();\n }\n }\n}\nfunction bindGlobalEventListeners() {\n document.addEventListener('touchstart', onDocumentTouchStart, TOUCH_OPTIONS);\n window.addEventListener('blur', onWindowBlur);\n}\n\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\nvar isIE11 = isBrowser ? // @ts-ignore\n!!window.msCrypto : false;\n\nfunction createMemoryLeakWarning(method) {\n var txt = method === 'destroy' ? 'n already-' : ' ';\n return [method + \"() was called on a\" + txt + \"destroyed instance. This is a no-op but\", 'indicates a potential memory leak.'].join(' ');\n}\nfunction clean(value) {\n var spacesAndTabs = /[ \\t]{2,}/g;\n var lineStartWithSpaces = /^[ \\t]*/gm;\n return value.replace(spacesAndTabs, ' ').replace(lineStartWithSpaces, '').trim();\n}\n\nfunction getDevMessage(message) {\n return clean(\"\\n %ctippy.js\\n\\n %c\" + clean(message) + \"\\n\\n %c\\uD83D\\uDC77\\u200D This is a development-only message. It will be removed in production.\\n \");\n}\n\nfunction getFormattedMessage(message) {\n return [getDevMessage(message), // title\n 'color: #00C584; font-size: 1.3em; font-weight: bold;', // message\n 'line-height: 1.5', // footer\n 'color: #a6a095;'];\n} // Assume warnings and errors never have the same message\n\nvar visitedMessages;\n\nif (process.env.NODE_ENV !== \"production\") {\n resetVisitedMessages();\n}\n\nfunction resetVisitedMessages() {\n visitedMessages = new Set();\n}\nfunction warnWhen(condition, message) {\n if (condition && !visitedMessages.has(message)) {\n var _console;\n\n visitedMessages.add(message);\n\n (_console = console).warn.apply(_console, getFormattedMessage(message));\n }\n}\nfunction errorWhen(condition, message) {\n if (condition && !visitedMessages.has(message)) {\n var _console2;\n\n visitedMessages.add(message);\n\n (_console2 = console).error.apply(_console2, getFormattedMessage(message));\n }\n}\nfunction validateTargets(targets) {\n var didPassFalsyValue = !targets;\n var didPassPlainObject = Object.prototype.toString.call(targets) === '[object Object]' && !targets.addEventListener;\n errorWhen(didPassFalsyValue, ['tippy() was passed', '`' + String(targets) + '`', 'as its targets (first) argument. Valid types are: String, Element,', 'Element[], or NodeList.'].join(' '));\n errorWhen(didPassPlainObject, ['tippy() was passed a plain object which is not supported as an argument', 'for virtual positioning. Use props.getReferenceClientRect instead.'].join(' '));\n}\n\nvar pluginProps = {\n animateFill: false,\n followCursor: false,\n inlinePositioning: false,\n sticky: false\n};\nvar renderProps = {\n allowHTML: false,\n animation: 'fade',\n arrow: true,\n content: '',\n inertia: false,\n maxWidth: 350,\n role: 'tooltip',\n theme: '',\n zIndex: 9999\n};\nvar defaultProps = Object.assign({\n appendTo: TIPPY_DEFAULT_APPEND_TO,\n aria: {\n content: 'auto',\n expanded: 'auto'\n },\n delay: 0,\n duration: [300, 250],\n getReferenceClientRect: null,\n hideOnClick: true,\n ignoreAttributes: false,\n interactive: false,\n interactiveBorder: 2,\n interactiveDebounce: 0,\n moveTransition: '',\n offset: [0, 10],\n onAfterUpdate: function onAfterUpdate() {},\n onBeforeUpdate: function onBeforeUpdate() {},\n onCreate: function onCreate() {},\n onDestroy: function onDestroy() {},\n onHidden: function onHidden() {},\n onHide: function onHide() {},\n onMount: function onMount() {},\n onShow: function onShow() {},\n onShown: function onShown() {},\n onTrigger: function onTrigger() {},\n onUntrigger: function onUntrigger() {},\n onClickOutside: function onClickOutside() {},\n placement: 'top',\n plugins: [],\n popperOptions: {},\n render: null,\n showOnCreate: false,\n touch: true,\n trigger: 'mouseenter focus',\n triggerTarget: null\n}, pluginProps, renderProps);\nvar defaultKeys = Object.keys(defaultProps);\nvar setDefaultProps = function setDefaultProps(partialProps) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n validateProps(partialProps, []);\n }\n\n var keys = Object.keys(partialProps);\n keys.forEach(function (key) {\n defaultProps[key] = partialProps[key];\n });\n};\nfunction getExtendedPassedProps(passedProps) {\n var plugins = passedProps.plugins || [];\n var pluginProps = plugins.reduce(function (acc, plugin) {\n var name = plugin.name,\n defaultValue = plugin.defaultValue;\n\n if (name) {\n var _name;\n\n acc[name] = passedProps[name] !== undefined ? passedProps[name] : (_name = defaultProps[name]) != null ? _name : defaultValue;\n }\n\n return acc;\n }, {});\n return Object.assign({}, passedProps, pluginProps);\n}\nfunction getDataAttributeProps(reference, plugins) {\n var propKeys = plugins ? Object.keys(getExtendedPassedProps(Object.assign({}, defaultProps, {\n plugins: plugins\n }))) : defaultKeys;\n var props = propKeys.reduce(function (acc, key) {\n var valueAsString = (reference.getAttribute(\"data-tippy-\" + key) || '').trim();\n\n if (!valueAsString) {\n return acc;\n }\n\n if (key === 'content') {\n acc[key] = valueAsString;\n } else {\n try {\n acc[key] = JSON.parse(valueAsString);\n } catch (e) {\n acc[key] = valueAsString;\n }\n }\n\n return acc;\n }, {});\n return props;\n}\nfunction evaluateProps(reference, props) {\n var out = Object.assign({}, props, {\n content: invokeWithArgsOrReturn(props.content, [reference])\n }, props.ignoreAttributes ? {} : getDataAttributeProps(reference, props.plugins));\n out.aria = Object.assign({}, defaultProps.aria, out.aria);\n out.aria = {\n expanded: out.aria.expanded === 'auto' ? props.interactive : out.aria.expanded,\n content: out.aria.content === 'auto' ? props.interactive ? null : 'describedby' : out.aria.content\n };\n return out;\n}\nfunction validateProps(partialProps, plugins) {\n if (partialProps === void 0) {\n partialProps = {};\n }\n\n if (plugins === void 0) {\n plugins = [];\n }\n\n var keys = Object.keys(partialProps);\n keys.forEach(function (prop) {\n var nonPluginProps = removeProperties(defaultProps, Object.keys(pluginProps));\n var didPassUnknownProp = !hasOwnProperty(nonPluginProps, prop); // Check if the prop exists in `plugins`\n\n if (didPassUnknownProp) {\n didPassUnknownProp = plugins.filter(function (plugin) {\n return plugin.name === prop;\n }).length === 0;\n }\n\n warnWhen(didPassUnknownProp, [\"`\" + prop + \"`\", \"is not a valid prop. You may have spelled it incorrectly, or if it's\", 'a plugin, forgot to pass it in an array as props.plugins.', '\\n\\n', 'All props: https://atomiks.github.io/tippyjs/v6/all-props/\\n', 'Plugins: https://atomiks.github.io/tippyjs/v6/plugins/'].join(' '));\n });\n}\n\nfunction getChildren(popper) {\n var box = popper.firstElementChild;\n var boxChildren = arrayFrom(box.children);\n return {\n box: box,\n content: boxChildren.find(function (node) {\n return node.classList.contains(CONTENT_CLASS);\n }),\n arrow: boxChildren.find(function (node) {\n return node.classList.contains(ARROW_CLASS) || node.classList.contains(SVG_ARROW_CLASS);\n }),\n backdrop: boxChildren.find(function (node) {\n return node.classList.contains(BACKDROP_CLASS);\n })\n };\n}\n\nvar idCounter = 1;\nvar mouseMoveListeners = []; // Used by `hideAll()`\n\nvar mountedInstances = [];\nfunction createTippy(reference, passedProps) {\n var props = evaluateProps(reference, Object.assign({}, defaultProps, getExtendedPassedProps(removeUndefinedProps(passedProps)))); // ===========================================================================\n // 🔒 Private members\n // ===========================================================================\n\n var showTimeout;\n var hideTimeout;\n var scheduleHideAnimationFrame;\n var isVisibleFromClick = false;\n var didHideDueToDocumentMouseDown = false;\n var didTouchMove = false;\n var ignoreOnFirstUpdate = false;\n var lastTriggerEvent;\n var currentTransitionEndListener;\n var onFirstUpdate;\n var listeners = [];\n var debouncedOnMouseMove = debounce(onMouseMove, props.interactiveDebounce);\n var currentTarget; // ===========================================================================\n // 🔑 Public members\n // ===========================================================================\n\n var id = idCounter++;\n var popperInstance = null;\n var plugins = unique(props.plugins);\n var state = {\n // Is the instance currently enabled?\n isEnabled: true,\n // Is the tippy currently showing and not transitioning out?\n isVisible: false,\n // Has the instance been destroyed?\n isDestroyed: false,\n // Is the tippy currently mounted to the DOM?\n isMounted: false,\n // Has the tippy finished transitioning in?\n isShown: false\n };\n var instance = {\n // properties\n id: id,\n reference: reference,\n popper: div(),\n popperInstance: popperInstance,\n props: props,\n state: state,\n plugins: plugins,\n // methods\n clearDelayTimeouts: clearDelayTimeouts,\n setProps: setProps,\n setContent: setContent,\n show: show,\n hide: hide,\n hideWithInteractivity: hideWithInteractivity,\n enable: enable,\n disable: disable,\n unmount: unmount,\n destroy: destroy\n }; // TODO: Investigate why this early return causes a TDZ error in the tests —\n // it doesn't seem to happen in the browser\n\n /* istanbul ignore if */\n\n if (!props.render) {\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(true, 'render() function has not been supplied.');\n }\n\n return instance;\n } // ===========================================================================\n // Initial mutations\n // ===========================================================================\n\n\n var _props$render = props.render(instance),\n popper = _props$render.popper,\n onUpdate = _props$render.onUpdate;\n\n popper.setAttribute('data-tippy-root', '');\n popper.id = \"tippy-\" + instance.id;\n instance.popper = popper;\n reference._tippy = instance;\n popper._tippy = instance;\n var pluginsHooks = plugins.map(function (plugin) {\n return plugin.fn(instance);\n });\n var hasAriaExpanded = reference.hasAttribute('aria-expanded');\n addListeners();\n handleAriaExpandedAttribute();\n handleStyles();\n invokeHook('onCreate', [instance]);\n\n if (props.showOnCreate) {\n scheduleShow();\n } // Prevent a tippy with a delay from hiding if the cursor left then returned\n // before it started hiding\n\n\n popper.addEventListener('mouseenter', function () {\n if (instance.props.interactive && instance.state.isVisible) {\n instance.clearDelayTimeouts();\n }\n });\n popper.addEventListener('mouseleave', function () {\n if (instance.props.interactive && instance.props.trigger.indexOf('mouseenter') >= 0) {\n getDocument().addEventListener('mousemove', debouncedOnMouseMove);\n }\n });\n return instance; // ===========================================================================\n // 🔒 Private methods\n // ===========================================================================\n\n function getNormalizedTouchSettings() {\n var touch = instance.props.touch;\n return Array.isArray(touch) ? touch : [touch, 0];\n }\n\n function getIsCustomTouchBehavior() {\n return getNormalizedTouchSettings()[0] === 'hold';\n }\n\n function getIsDefaultRenderFn() {\n var _instance$props$rende;\n\n // @ts-ignore\n return !!((_instance$props$rende = instance.props.render) != null && _instance$props$rende.$$tippy);\n }\n\n function getCurrentTarget() {\n return currentTarget || reference;\n }\n\n function getDocument() {\n var parent = getCurrentTarget().parentNode;\n return parent ? getOwnerDocument(parent) : document;\n }\n\n function getDefaultTemplateChildren() {\n return getChildren(popper);\n }\n\n function getDelay(isShow) {\n // For touch or keyboard input, force `0` delay for UX reasons\n // Also if the instance is mounted but not visible (transitioning out),\n // ignore delay\n if (instance.state.isMounted && !instance.state.isVisible || currentInput.isTouch || lastTriggerEvent && lastTriggerEvent.type === 'focus') {\n return 0;\n }\n\n return getValueAtIndexOrReturn(instance.props.delay, isShow ? 0 : 1, defaultProps.delay);\n }\n\n function handleStyles(fromHide) {\n if (fromHide === void 0) {\n fromHide = false;\n }\n\n popper.style.pointerEvents = instance.props.interactive && !fromHide ? '' : 'none';\n popper.style.zIndex = \"\" + instance.props.zIndex;\n }\n\n function invokeHook(hook, args, shouldInvokePropsHook) {\n if (shouldInvokePropsHook === void 0) {\n shouldInvokePropsHook = true;\n }\n\n pluginsHooks.forEach(function (pluginHooks) {\n if (pluginHooks[hook]) {\n pluginHooks[hook].apply(pluginHooks, args);\n }\n });\n\n if (shouldInvokePropsHook) {\n var _instance$props;\n\n (_instance$props = instance.props)[hook].apply(_instance$props, args);\n }\n }\n\n function handleAriaContentAttribute() {\n var aria = instance.props.aria;\n\n if (!aria.content) {\n return;\n }\n\n var attr = \"aria-\" + aria.content;\n var id = popper.id;\n var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n nodes.forEach(function (node) {\n var currentValue = node.getAttribute(attr);\n\n if (instance.state.isVisible) {\n node.setAttribute(attr, currentValue ? currentValue + \" \" + id : id);\n } else {\n var nextValue = currentValue && currentValue.replace(id, '').trim();\n\n if (nextValue) {\n node.setAttribute(attr, nextValue);\n } else {\n node.removeAttribute(attr);\n }\n }\n });\n }\n\n function handleAriaExpandedAttribute() {\n if (hasAriaExpanded || !instance.props.aria.expanded) {\n return;\n }\n\n var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n nodes.forEach(function (node) {\n if (instance.props.interactive) {\n node.setAttribute('aria-expanded', instance.state.isVisible && node === getCurrentTarget() ? 'true' : 'false');\n } else {\n node.removeAttribute('aria-expanded');\n }\n });\n }\n\n function cleanupInteractiveMouseListeners() {\n getDocument().removeEventListener('mousemove', debouncedOnMouseMove);\n mouseMoveListeners = mouseMoveListeners.filter(function (listener) {\n return listener !== debouncedOnMouseMove;\n });\n }\n\n function onDocumentPress(event) {\n // Moved finger to scroll instead of an intentional tap outside\n if (currentInput.isTouch) {\n if (didTouchMove || event.type === 'mousedown') {\n return;\n }\n }\n\n var actualTarget = event.composedPath && event.composedPath()[0] || event.target; // Clicked on interactive popper\n\n if (instance.props.interactive && actualContains(popper, actualTarget)) {\n return;\n } // Clicked on the event listeners target\n\n\n if (normalizeToArray(instance.props.triggerTarget || reference).some(function (el) {\n return actualContains(el, actualTarget);\n })) {\n if (currentInput.isTouch) {\n return;\n }\n\n if (instance.state.isVisible && instance.props.trigger.indexOf('click') >= 0) {\n return;\n }\n } else {\n invokeHook('onClickOutside', [instance, event]);\n }\n\n if (instance.props.hideOnClick === true) {\n instance.clearDelayTimeouts();\n instance.hide(); // `mousedown` event is fired right before `focus` if pressing the\n // currentTarget. This lets a tippy with `focus` trigger know that it\n // should not show\n\n didHideDueToDocumentMouseDown = true;\n setTimeout(function () {\n didHideDueToDocumentMouseDown = false;\n }); // The listener gets added in `scheduleShow()`, but this may be hiding it\n // before it shows, and hide()'s early bail-out behavior can prevent it\n // from being cleaned up\n\n if (!instance.state.isMounted) {\n removeDocumentPress();\n }\n }\n }\n\n function onTouchMove() {\n didTouchMove = true;\n }\n\n function onTouchStart() {\n didTouchMove = false;\n }\n\n function addDocumentPress() {\n var doc = getDocument();\n doc.addEventListener('mousedown', onDocumentPress, true);\n doc.addEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);\n doc.addEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);\n doc.addEventListener('touchmove', onTouchMove, TOUCH_OPTIONS);\n }\n\n function removeDocumentPress() {\n var doc = getDocument();\n doc.removeEventListener('mousedown', onDocumentPress, true);\n doc.removeEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);\n doc.removeEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);\n doc.removeEventListener('touchmove', onTouchMove, TOUCH_OPTIONS);\n }\n\n function onTransitionedOut(duration, callback) {\n onTransitionEnd(duration, function () {\n if (!instance.state.isVisible && popper.parentNode && popper.parentNode.contains(popper)) {\n callback();\n }\n });\n }\n\n function onTransitionedIn(duration, callback) {\n onTransitionEnd(duration, callback);\n }\n\n function onTransitionEnd(duration, callback) {\n var box = getDefaultTemplateChildren().box;\n\n function listener(event) {\n if (event.target === box) {\n updateTransitionEndListener(box, 'remove', listener);\n callback();\n }\n } // Make callback synchronous if duration is 0\n // `transitionend` won't fire otherwise\n\n\n if (duration === 0) {\n return callback();\n }\n\n updateTransitionEndListener(box, 'remove', currentTransitionEndListener);\n updateTransitionEndListener(box, 'add', listener);\n currentTransitionEndListener = listener;\n }\n\n function on(eventType, handler, options) {\n if (options === void 0) {\n options = false;\n }\n\n var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n nodes.forEach(function (node) {\n node.addEventListener(eventType, handler, options);\n listeners.push({\n node: node,\n eventType: eventType,\n handler: handler,\n options: options\n });\n });\n }\n\n function addListeners() {\n if (getIsCustomTouchBehavior()) {\n on('touchstart', onTrigger, {\n passive: true\n });\n on('touchend', onMouseLeave, {\n passive: true\n });\n }\n\n splitBySpaces(instance.props.trigger).forEach(function (eventType) {\n if (eventType === 'manual') {\n return;\n }\n\n on(eventType, onTrigger);\n\n switch (eventType) {\n case 'mouseenter':\n on('mouseleave', onMouseLeave);\n break;\n\n case 'focus':\n on(isIE11 ? 'focusout' : 'blur', onBlurOrFocusOut);\n break;\n\n case 'focusin':\n on('focusout', onBlurOrFocusOut);\n break;\n }\n });\n }\n\n function removeListeners() {\n listeners.forEach(function (_ref) {\n var node = _ref.node,\n eventType = _ref.eventType,\n handler = _ref.handler,\n options = _ref.options;\n node.removeEventListener(eventType, handler, options);\n });\n listeners = [];\n }\n\n function onTrigger(event) {\n var _lastTriggerEvent;\n\n var shouldScheduleClickHide = false;\n\n if (!instance.state.isEnabled || isEventListenerStopped(event) || didHideDueToDocumentMouseDown) {\n return;\n }\n\n var wasFocused = ((_lastTriggerEvent = lastTriggerEvent) == null ? void 0 : _lastTriggerEvent.type) === 'focus';\n lastTriggerEvent = event;\n currentTarget = event.currentTarget;\n handleAriaExpandedAttribute();\n\n if (!instance.state.isVisible && isMouseEvent(event)) {\n // If scrolling, `mouseenter` events can be fired if the cursor lands\n // over a new target, but `mousemove` events don't get fired. This\n // causes interactive tooltips to get stuck open until the cursor is\n // moved\n mouseMoveListeners.forEach(function (listener) {\n return listener(event);\n });\n } // Toggle show/hide when clicking click-triggered tooltips\n\n\n if (event.type === 'click' && (instance.props.trigger.indexOf('mouseenter') < 0 || isVisibleFromClick) && instance.props.hideOnClick !== false && instance.state.isVisible) {\n shouldScheduleClickHide = true;\n } else {\n scheduleShow(event);\n }\n\n if (event.type === 'click') {\n isVisibleFromClick = !shouldScheduleClickHide;\n }\n\n if (shouldScheduleClickHide && !wasFocused) {\n scheduleHide(event);\n }\n }\n\n function onMouseMove(event) {\n var target = event.target;\n var isCursorOverReferenceOrPopper = getCurrentTarget().contains(target) || popper.contains(target);\n\n if (event.type === 'mousemove' && isCursorOverReferenceOrPopper) {\n return;\n }\n\n var popperTreeData = getNestedPopperTree().concat(popper).map(function (popper) {\n var _instance$popperInsta;\n\n var instance = popper._tippy;\n var state = (_instance$popperInsta = instance.popperInstance) == null ? void 0 : _instance$popperInsta.state;\n\n if (state) {\n return {\n popperRect: popper.getBoundingClientRect(),\n popperState: state,\n props: props\n };\n }\n\n return null;\n }).filter(Boolean);\n\n if (isCursorOutsideInteractiveBorder(popperTreeData, event)) {\n cleanupInteractiveMouseListeners();\n scheduleHide(event);\n }\n }\n\n function onMouseLeave(event) {\n var shouldBail = isEventListenerStopped(event) || instance.props.trigger.indexOf('click') >= 0 && isVisibleFromClick;\n\n if (shouldBail) {\n return;\n }\n\n if (instance.props.interactive) {\n instance.hideWithInteractivity(event);\n return;\n }\n\n scheduleHide(event);\n }\n\n function onBlurOrFocusOut(event) {\n if (instance.props.trigger.indexOf('focusin') < 0 && event.target !== getCurrentTarget()) {\n return;\n } // If focus was moved to within the popper\n\n\n if (instance.props.interactive && event.relatedTarget && popper.contains(event.relatedTarget)) {\n return;\n }\n\n scheduleHide(event);\n }\n\n function isEventListenerStopped(event) {\n return currentInput.isTouch ? getIsCustomTouchBehavior() !== event.type.indexOf('touch') >= 0 : false;\n }\n\n function createPopperInstance() {\n destroyPopperInstance();\n var _instance$props2 = instance.props,\n popperOptions = _instance$props2.popperOptions,\n placement = _instance$props2.placement,\n offset = _instance$props2.offset,\n getReferenceClientRect = _instance$props2.getReferenceClientRect,\n moveTransition = _instance$props2.moveTransition;\n var arrow = getIsDefaultRenderFn() ? getChildren(popper).arrow : null;\n var computedReference = getReferenceClientRect ? {\n getBoundingClientRect: getReferenceClientRect,\n contextElement: getReferenceClientRect.contextElement || getCurrentTarget()\n } : reference;\n var tippyModifier = {\n name: '$$tippy',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['computeStyles'],\n fn: function fn(_ref2) {\n var state = _ref2.state;\n\n if (getIsDefaultRenderFn()) {\n var _getDefaultTemplateCh = getDefaultTemplateChildren(),\n box = _getDefaultTemplateCh.box;\n\n ['placement', 'reference-hidden', 'escaped'].forEach(function (attr) {\n if (attr === 'placement') {\n box.setAttribute('data-placement', state.placement);\n } else {\n if (state.attributes.popper[\"data-popper-\" + attr]) {\n box.setAttribute(\"data-\" + attr, '');\n } else {\n box.removeAttribute(\"data-\" + attr);\n }\n }\n });\n state.attributes.popper = {};\n }\n }\n };\n var modifiers = [{\n name: 'offset',\n options: {\n offset: offset\n }\n }, {\n name: 'preventOverflow',\n options: {\n padding: {\n top: 2,\n bottom: 2,\n left: 5,\n right: 5\n }\n }\n }, {\n name: 'flip',\n options: {\n padding: 5\n }\n }, {\n name: 'computeStyles',\n options: {\n adaptive: !moveTransition\n }\n }, tippyModifier];\n\n if (getIsDefaultRenderFn() && arrow) {\n modifiers.push({\n name: 'arrow',\n options: {\n element: arrow,\n padding: 3\n }\n });\n }\n\n modifiers.push.apply(modifiers, (popperOptions == null ? void 0 : popperOptions.modifiers) || []);\n instance.popperInstance = createPopper(computedReference, popper, Object.assign({}, popperOptions, {\n placement: placement,\n onFirstUpdate: onFirstUpdate,\n modifiers: modifiers\n }));\n }\n\n function destroyPopperInstance() {\n if (instance.popperInstance) {\n instance.popperInstance.destroy();\n instance.popperInstance = null;\n }\n }\n\n function mount() {\n var appendTo = instance.props.appendTo;\n var parentNode; // By default, we'll append the popper to the triggerTargets's parentNode so\n // it's directly after the reference element so the elements inside the\n // tippy can be tabbed to\n // If there are clipping issues, the user can specify a different appendTo\n // and ensure focus management is handled correctly manually\n\n var node = getCurrentTarget();\n\n if (instance.props.interactive && appendTo === TIPPY_DEFAULT_APPEND_TO || appendTo === 'parent') {\n parentNode = node.parentNode;\n } else {\n parentNode = invokeWithArgsOrReturn(appendTo, [node]);\n } // The popper element needs to exist on the DOM before its position can be\n // updated as Popper needs to read its dimensions\n\n\n if (!parentNode.contains(popper)) {\n parentNode.appendChild(popper);\n }\n\n instance.state.isMounted = true;\n createPopperInstance();\n /* istanbul ignore else */\n\n if (process.env.NODE_ENV !== \"production\") {\n // Accessibility check\n warnWhen(instance.props.interactive && appendTo === defaultProps.appendTo && node.nextElementSibling !== popper, ['Interactive tippy element may not be accessible via keyboard', 'navigation because it is not directly after the reference element', 'in the DOM source order.', '\\n\\n', 'Using a wrapper or
tag around the reference element', 'solves this by creating a new parentNode context.', '\\n\\n', 'Specifying `appendTo: document.body` silences this warning, but it', 'assumes you are using a focus management solution to handle', 'keyboard navigation.', '\\n\\n', 'See: https://atomiks.github.io/tippyjs/v6/accessibility/#interactivity'].join(' '));\n }\n }\n\n function getNestedPopperTree() {\n return arrayFrom(popper.querySelectorAll('[data-tippy-root]'));\n }\n\n function scheduleShow(event) {\n instance.clearDelayTimeouts();\n\n if (event) {\n invokeHook('onTrigger', [instance, event]);\n }\n\n addDocumentPress();\n var delay = getDelay(true);\n\n var _getNormalizedTouchSe = getNormalizedTouchSettings(),\n touchValue = _getNormalizedTouchSe[0],\n touchDelay = _getNormalizedTouchSe[1];\n\n if (currentInput.isTouch && touchValue === 'hold' && touchDelay) {\n delay = touchDelay;\n }\n\n if (delay) {\n showTimeout = setTimeout(function () {\n instance.show();\n }, delay);\n } else {\n instance.show();\n }\n }\n\n function scheduleHide(event) {\n instance.clearDelayTimeouts();\n invokeHook('onUntrigger', [instance, event]);\n\n if (!instance.state.isVisible) {\n removeDocumentPress();\n return;\n } // For interactive tippies, scheduleHide is added to a document.body handler\n // from onMouseLeave so must intercept scheduled hides from mousemove/leave\n // events when trigger contains mouseenter and click, and the tip is\n // currently shown as a result of a click.\n\n\n if (instance.props.trigger.indexOf('mouseenter') >= 0 && instance.props.trigger.indexOf('click') >= 0 && ['mouseleave', 'mousemove'].indexOf(event.type) >= 0 && isVisibleFromClick) {\n return;\n }\n\n var delay = getDelay(false);\n\n if (delay) {\n hideTimeout = setTimeout(function () {\n if (instance.state.isVisible) {\n instance.hide();\n }\n }, delay);\n } else {\n // Fixes a `transitionend` problem when it fires 1 frame too\n // late sometimes, we don't want hide() to be called.\n scheduleHideAnimationFrame = requestAnimationFrame(function () {\n instance.hide();\n });\n }\n } // ===========================================================================\n // 🔑 Public methods\n // ===========================================================================\n\n\n function enable() {\n instance.state.isEnabled = true;\n }\n\n function disable() {\n // Disabling the instance should also hide it\n // https://github.com/atomiks/tippy.js-react/issues/106\n instance.hide();\n instance.state.isEnabled = false;\n }\n\n function clearDelayTimeouts() {\n clearTimeout(showTimeout);\n clearTimeout(hideTimeout);\n cancelAnimationFrame(scheduleHideAnimationFrame);\n }\n\n function setProps(partialProps) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('setProps'));\n }\n\n if (instance.state.isDestroyed) {\n return;\n }\n\n invokeHook('onBeforeUpdate', [instance, partialProps]);\n removeListeners();\n var prevProps = instance.props;\n var nextProps = evaluateProps(reference, Object.assign({}, prevProps, removeUndefinedProps(partialProps), {\n ignoreAttributes: true\n }));\n instance.props = nextProps;\n addListeners();\n\n if (prevProps.interactiveDebounce !== nextProps.interactiveDebounce) {\n cleanupInteractiveMouseListeners();\n debouncedOnMouseMove = debounce(onMouseMove, nextProps.interactiveDebounce);\n } // Ensure stale aria-expanded attributes are removed\n\n\n if (prevProps.triggerTarget && !nextProps.triggerTarget) {\n normalizeToArray(prevProps.triggerTarget).forEach(function (node) {\n node.removeAttribute('aria-expanded');\n });\n } else if (nextProps.triggerTarget) {\n reference.removeAttribute('aria-expanded');\n }\n\n handleAriaExpandedAttribute();\n handleStyles();\n\n if (onUpdate) {\n onUpdate(prevProps, nextProps);\n }\n\n if (instance.popperInstance) {\n createPopperInstance(); // Fixes an issue with nested tippies if they are all getting re-rendered,\n // and the nested ones get re-rendered first.\n // https://github.com/atomiks/tippyjs-react/issues/177\n // TODO: find a cleaner / more efficient solution(!)\n\n getNestedPopperTree().forEach(function (nestedPopper) {\n // React (and other UI libs likely) requires a rAF wrapper as it flushes\n // its work in one\n requestAnimationFrame(nestedPopper._tippy.popperInstance.forceUpdate);\n });\n }\n\n invokeHook('onAfterUpdate', [instance, partialProps]);\n }\n\n function setContent(content) {\n instance.setProps({\n content: content\n });\n }\n\n function show() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('show'));\n } // Early bail-out\n\n\n var isAlreadyVisible = instance.state.isVisible;\n var isDestroyed = instance.state.isDestroyed;\n var isDisabled = !instance.state.isEnabled;\n var isTouchAndTouchDisabled = currentInput.isTouch && !instance.props.touch;\n var duration = getValueAtIndexOrReturn(instance.props.duration, 0, defaultProps.duration);\n\n if (isAlreadyVisible || isDestroyed || isDisabled || isTouchAndTouchDisabled) {\n return;\n } // Normalize `disabled` behavior across browsers.\n // Firefox allows events on disabled elements, but Chrome doesn't.\n // Using a wrapper element (i.e. ) is recommended.\n\n\n if (getCurrentTarget().hasAttribute('disabled')) {\n return;\n }\n\n invokeHook('onShow', [instance], false);\n\n if (instance.props.onShow(instance) === false) {\n return;\n }\n\n instance.state.isVisible = true;\n\n if (getIsDefaultRenderFn()) {\n popper.style.visibility = 'visible';\n }\n\n handleStyles();\n addDocumentPress();\n\n if (!instance.state.isMounted) {\n popper.style.transition = 'none';\n } // If flipping to the opposite side after hiding at least once, the\n // animation will use the wrong placement without resetting the duration\n\n\n if (getIsDefaultRenderFn()) {\n var _getDefaultTemplateCh2 = getDefaultTemplateChildren(),\n box = _getDefaultTemplateCh2.box,\n content = _getDefaultTemplateCh2.content;\n\n setTransitionDuration([box, content], 0);\n }\n\n onFirstUpdate = function onFirstUpdate() {\n var _instance$popperInsta2;\n\n if (!instance.state.isVisible || ignoreOnFirstUpdate) {\n return;\n }\n\n ignoreOnFirstUpdate = true; // reflow\n\n void popper.offsetHeight;\n popper.style.transition = instance.props.moveTransition;\n\n if (getIsDefaultRenderFn() && instance.props.animation) {\n var _getDefaultTemplateCh3 = getDefaultTemplateChildren(),\n _box = _getDefaultTemplateCh3.box,\n _content = _getDefaultTemplateCh3.content;\n\n setTransitionDuration([_box, _content], duration);\n setVisibilityState([_box, _content], 'visible');\n }\n\n handleAriaContentAttribute();\n handleAriaExpandedAttribute();\n pushIfUnique(mountedInstances, instance); // certain modifiers (e.g. `maxSize`) require a second update after the\n // popper has been positioned for the first time\n\n (_instance$popperInsta2 = instance.popperInstance) == null ? void 0 : _instance$popperInsta2.forceUpdate();\n invokeHook('onMount', [instance]);\n\n if (instance.props.animation && getIsDefaultRenderFn()) {\n onTransitionedIn(duration, function () {\n instance.state.isShown = true;\n invokeHook('onShown', [instance]);\n });\n }\n };\n\n mount();\n }\n\n function hide() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hide'));\n } // Early bail-out\n\n\n var isAlreadyHidden = !instance.state.isVisible;\n var isDestroyed = instance.state.isDestroyed;\n var isDisabled = !instance.state.isEnabled;\n var duration = getValueAtIndexOrReturn(instance.props.duration, 1, defaultProps.duration);\n\n if (isAlreadyHidden || isDestroyed || isDisabled) {\n return;\n }\n\n invokeHook('onHide', [instance], false);\n\n if (instance.props.onHide(instance) === false) {\n return;\n }\n\n instance.state.isVisible = false;\n instance.state.isShown = false;\n ignoreOnFirstUpdate = false;\n isVisibleFromClick = false;\n\n if (getIsDefaultRenderFn()) {\n popper.style.visibility = 'hidden';\n }\n\n cleanupInteractiveMouseListeners();\n removeDocumentPress();\n handleStyles(true);\n\n if (getIsDefaultRenderFn()) {\n var _getDefaultTemplateCh4 = getDefaultTemplateChildren(),\n box = _getDefaultTemplateCh4.box,\n content = _getDefaultTemplateCh4.content;\n\n if (instance.props.animation) {\n setTransitionDuration([box, content], duration);\n setVisibilityState([box, content], 'hidden');\n }\n }\n\n handleAriaContentAttribute();\n handleAriaExpandedAttribute();\n\n if (instance.props.animation) {\n if (getIsDefaultRenderFn()) {\n onTransitionedOut(duration, instance.unmount);\n }\n } else {\n instance.unmount();\n }\n }\n\n function hideWithInteractivity(event) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hideWithInteractivity'));\n }\n\n getDocument().addEventListener('mousemove', debouncedOnMouseMove);\n pushIfUnique(mouseMoveListeners, debouncedOnMouseMove);\n debouncedOnMouseMove(event);\n }\n\n function unmount() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('unmount'));\n }\n\n if (instance.state.isVisible) {\n instance.hide();\n }\n\n if (!instance.state.isMounted) {\n return;\n }\n\n destroyPopperInstance(); // If a popper is not interactive, it will be appended outside the popper\n // tree by default. This seems mainly for interactive tippies, but we should\n // find a workaround if possible\n\n getNestedPopperTree().forEach(function (nestedPopper) {\n nestedPopper._tippy.unmount();\n });\n\n if (popper.parentNode) {\n popper.parentNode.removeChild(popper);\n }\n\n mountedInstances = mountedInstances.filter(function (i) {\n return i !== instance;\n });\n instance.state.isMounted = false;\n invokeHook('onHidden', [instance]);\n }\n\n function destroy() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('destroy'));\n }\n\n if (instance.state.isDestroyed) {\n return;\n }\n\n instance.clearDelayTimeouts();\n instance.unmount();\n removeListeners();\n delete reference._tippy;\n instance.state.isDestroyed = true;\n invokeHook('onDestroy', [instance]);\n }\n}\n\nfunction tippy(targets, optionalProps) {\n if (optionalProps === void 0) {\n optionalProps = {};\n }\n\n var plugins = defaultProps.plugins.concat(optionalProps.plugins || []);\n /* istanbul ignore else */\n\n if (process.env.NODE_ENV !== \"production\") {\n validateTargets(targets);\n validateProps(optionalProps, plugins);\n }\n\n bindGlobalEventListeners();\n var passedProps = Object.assign({}, optionalProps, {\n plugins: plugins\n });\n var elements = getArrayOfElements(targets);\n /* istanbul ignore else */\n\n if (process.env.NODE_ENV !== \"production\") {\n var isSingleContentElement = isElement(passedProps.content);\n var isMoreThanOneReferenceElement = elements.length > 1;\n warnWhen(isSingleContentElement && isMoreThanOneReferenceElement, ['tippy() was passed an Element as the `content` prop, but more than', 'one tippy instance was created by this invocation. This means the', 'content element will only be appended to the last tippy instance.', '\\n\\n', 'Instead, pass the .innerHTML of the element, or use a function that', 'returns a cloned version of the element instead.', '\\n\\n', '1) content: element.innerHTML\\n', '2) content: () => element.cloneNode(true)'].join(' '));\n }\n\n var instances = elements.reduce(function (acc, reference) {\n var instance = reference && createTippy(reference, passedProps);\n\n if (instance) {\n acc.push(instance);\n }\n\n return acc;\n }, []);\n return isElement(targets) ? instances[0] : instances;\n}\n\ntippy.defaultProps = defaultProps;\ntippy.setDefaultProps = setDefaultProps;\ntippy.currentInput = currentInput;\nvar hideAll = function hideAll(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n excludedReferenceOrInstance = _ref.exclude,\n duration = _ref.duration;\n\n mountedInstances.forEach(function (instance) {\n var isExcluded = false;\n\n if (excludedReferenceOrInstance) {\n isExcluded = isReferenceElement(excludedReferenceOrInstance) ? instance.reference === excludedReferenceOrInstance : instance.popper === excludedReferenceOrInstance.popper;\n }\n\n if (!isExcluded) {\n var originalDuration = instance.props.duration;\n instance.setProps({\n duration: duration\n });\n instance.hide();\n\n if (!instance.state.isDestroyed) {\n instance.setProps({\n duration: originalDuration\n });\n }\n }\n });\n};\n\n// every time the popper is destroyed (i.e. a new target), removing the styles\n// and causing transitions to break for singletons when the console is open, but\n// most notably for non-transform styles being used, `gpuAcceleration: false`.\n\nvar applyStylesModifier = Object.assign({}, applyStyles, {\n effect: function effect(_ref) {\n var state = _ref.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n } // intentionally return no cleanup function\n // return () => { ... }\n\n }\n});\n\nvar createSingleton = function createSingleton(tippyInstances, optionalProps) {\n var _optionalProps$popper;\n\n if (optionalProps === void 0) {\n optionalProps = {};\n }\n\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(!Array.isArray(tippyInstances), ['The first argument passed to createSingleton() must be an array of', 'tippy instances. The passed value was', String(tippyInstances)].join(' '));\n }\n\n var individualInstances = tippyInstances;\n var references = [];\n var triggerTargets = [];\n var currentTarget;\n var overrides = optionalProps.overrides;\n var interceptSetPropsCleanups = [];\n var shownOnCreate = false;\n\n function setTriggerTargets() {\n triggerTargets = individualInstances.map(function (instance) {\n return normalizeToArray(instance.props.triggerTarget || instance.reference);\n }).reduce(function (acc, item) {\n return acc.concat(item);\n }, []);\n }\n\n function setReferences() {\n references = individualInstances.map(function (instance) {\n return instance.reference;\n });\n }\n\n function enableInstances(isEnabled) {\n individualInstances.forEach(function (instance) {\n if (isEnabled) {\n instance.enable();\n } else {\n instance.disable();\n }\n });\n }\n\n function interceptSetProps(singleton) {\n return individualInstances.map(function (instance) {\n var originalSetProps = instance.setProps;\n\n instance.setProps = function (props) {\n originalSetProps(props);\n\n if (instance.reference === currentTarget) {\n singleton.setProps(props);\n }\n };\n\n return function () {\n instance.setProps = originalSetProps;\n };\n });\n } // have to pass singleton, as it maybe undefined on first call\n\n\n function prepareInstance(singleton, target) {\n var index = triggerTargets.indexOf(target); // bail-out\n\n if (target === currentTarget) {\n return;\n }\n\n currentTarget = target;\n var overrideProps = (overrides || []).concat('content').reduce(function (acc, prop) {\n acc[prop] = individualInstances[index].props[prop];\n return acc;\n }, {});\n singleton.setProps(Object.assign({}, overrideProps, {\n getReferenceClientRect: typeof overrideProps.getReferenceClientRect === 'function' ? overrideProps.getReferenceClientRect : function () {\n var _references$index;\n\n return (_references$index = references[index]) == null ? void 0 : _references$index.getBoundingClientRect();\n }\n }));\n }\n\n enableInstances(false);\n setReferences();\n setTriggerTargets();\n var plugin = {\n fn: function fn() {\n return {\n onDestroy: function onDestroy() {\n enableInstances(true);\n },\n onHidden: function onHidden() {\n currentTarget = null;\n },\n onClickOutside: function onClickOutside(instance) {\n if (instance.props.showOnCreate && !shownOnCreate) {\n shownOnCreate = true;\n currentTarget = null;\n }\n },\n onShow: function onShow(instance) {\n if (instance.props.showOnCreate && !shownOnCreate) {\n shownOnCreate = true;\n prepareInstance(instance, references[0]);\n }\n },\n onTrigger: function onTrigger(instance, event) {\n prepareInstance(instance, event.currentTarget);\n }\n };\n }\n };\n var singleton = tippy(div(), Object.assign({}, removeProperties(optionalProps, ['overrides']), {\n plugins: [plugin].concat(optionalProps.plugins || []),\n triggerTarget: triggerTargets,\n popperOptions: Object.assign({}, optionalProps.popperOptions, {\n modifiers: [].concat(((_optionalProps$popper = optionalProps.popperOptions) == null ? void 0 : _optionalProps$popper.modifiers) || [], [applyStylesModifier])\n })\n }));\n var originalShow = singleton.show;\n\n singleton.show = function (target) {\n originalShow(); // first time, showOnCreate or programmatic call with no params\n // default to showing first instance\n\n if (!currentTarget && target == null) {\n return prepareInstance(singleton, references[0]);\n } // triggered from event (do nothing as prepareInstance already called by onTrigger)\n // programmatic call with no params when already visible (do nothing again)\n\n\n if (currentTarget && target == null) {\n return;\n } // target is index of instance\n\n\n if (typeof target === 'number') {\n return references[target] && prepareInstance(singleton, references[target]);\n } // target is a child tippy instance\n\n\n if (individualInstances.indexOf(target) >= 0) {\n var ref = target.reference;\n return prepareInstance(singleton, ref);\n } // target is a ReferenceElement\n\n\n if (references.indexOf(target) >= 0) {\n return prepareInstance(singleton, target);\n }\n };\n\n singleton.showNext = function () {\n var first = references[0];\n\n if (!currentTarget) {\n return singleton.show(0);\n }\n\n var index = references.indexOf(currentTarget);\n singleton.show(references[index + 1] || first);\n };\n\n singleton.showPrevious = function () {\n var last = references[references.length - 1];\n\n if (!currentTarget) {\n return singleton.show(last);\n }\n\n var index = references.indexOf(currentTarget);\n var target = references[index - 1] || last;\n singleton.show(target);\n };\n\n var originalSetProps = singleton.setProps;\n\n singleton.setProps = function (props) {\n overrides = props.overrides || overrides;\n originalSetProps(props);\n };\n\n singleton.setInstances = function (nextInstances) {\n enableInstances(true);\n interceptSetPropsCleanups.forEach(function (fn) {\n return fn();\n });\n individualInstances = nextInstances;\n enableInstances(false);\n setReferences();\n setTriggerTargets();\n interceptSetPropsCleanups = interceptSetProps(singleton);\n singleton.setProps({\n triggerTarget: triggerTargets\n });\n };\n\n interceptSetPropsCleanups = interceptSetProps(singleton);\n return singleton;\n};\n\nvar BUBBLING_EVENTS_MAP = {\n mouseover: 'mouseenter',\n focusin: 'focus',\n click: 'click'\n};\n/**\n * Creates a delegate instance that controls the creation of tippy instances\n * for child elements (`target` CSS selector).\n */\n\nfunction delegate(targets, props) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(!(props && props.target), ['You must specity a `target` prop indicating a CSS selector string matching', 'the target elements that should receive a tippy.'].join(' '));\n }\n\n var listeners = [];\n var childTippyInstances = [];\n var disabled = false;\n var target = props.target;\n var nativeProps = removeProperties(props, ['target']);\n var parentProps = Object.assign({}, nativeProps, {\n trigger: 'manual',\n touch: false\n });\n var childProps = Object.assign({\n touch: defaultProps.touch\n }, nativeProps, {\n showOnCreate: true\n });\n var returnValue = tippy(targets, parentProps);\n var normalizedReturnValue = normalizeToArray(returnValue);\n\n function onTrigger(event) {\n if (!event.target || disabled) {\n return;\n }\n\n var targetNode = event.target.closest(target);\n\n if (!targetNode) {\n return;\n } // Get relevant trigger with fallbacks:\n // 1. Check `data-tippy-trigger` attribute on target node\n // 2. Fallback to `trigger` passed to `delegate()`\n // 3. Fallback to `defaultProps.trigger`\n\n\n var trigger = targetNode.getAttribute('data-tippy-trigger') || props.trigger || defaultProps.trigger; // @ts-ignore\n\n if (targetNode._tippy) {\n return;\n }\n\n if (event.type === 'touchstart' && typeof childProps.touch === 'boolean') {\n return;\n }\n\n if (event.type !== 'touchstart' && trigger.indexOf(BUBBLING_EVENTS_MAP[event.type]) < 0) {\n return;\n }\n\n var instance = tippy(targetNode, childProps);\n\n if (instance) {\n childTippyInstances = childTippyInstances.concat(instance);\n }\n }\n\n function on(node, eventType, handler, options) {\n if (options === void 0) {\n options = false;\n }\n\n node.addEventListener(eventType, handler, options);\n listeners.push({\n node: node,\n eventType: eventType,\n handler: handler,\n options: options\n });\n }\n\n function addEventListeners(instance) {\n var reference = instance.reference;\n on(reference, 'touchstart', onTrigger, TOUCH_OPTIONS);\n on(reference, 'mouseover', onTrigger);\n on(reference, 'focusin', onTrigger);\n on(reference, 'click', onTrigger);\n }\n\n function removeEventListeners() {\n listeners.forEach(function (_ref) {\n var node = _ref.node,\n eventType = _ref.eventType,\n handler = _ref.handler,\n options = _ref.options;\n node.removeEventListener(eventType, handler, options);\n });\n listeners = [];\n }\n\n function applyMutations(instance) {\n var originalDestroy = instance.destroy;\n var originalEnable = instance.enable;\n var originalDisable = instance.disable;\n\n instance.destroy = function (shouldDestroyChildInstances) {\n if (shouldDestroyChildInstances === void 0) {\n shouldDestroyChildInstances = true;\n }\n\n if (shouldDestroyChildInstances) {\n childTippyInstances.forEach(function (instance) {\n instance.destroy();\n });\n }\n\n childTippyInstances = [];\n removeEventListeners();\n originalDestroy();\n };\n\n instance.enable = function () {\n originalEnable();\n childTippyInstances.forEach(function (instance) {\n return instance.enable();\n });\n disabled = false;\n };\n\n instance.disable = function () {\n originalDisable();\n childTippyInstances.forEach(function (instance) {\n return instance.disable();\n });\n disabled = true;\n };\n\n addEventListeners(instance);\n }\n\n normalizedReturnValue.forEach(applyMutations);\n return returnValue;\n}\n\nvar animateFill = {\n name: 'animateFill',\n defaultValue: false,\n fn: function fn(instance) {\n var _instance$props$rende;\n\n // @ts-ignore\n if (!((_instance$props$rende = instance.props.render) != null && _instance$props$rende.$$tippy)) {\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(instance.props.animateFill, 'The `animateFill` plugin requires the default render function.');\n }\n\n return {};\n }\n\n var _getChildren = getChildren(instance.popper),\n box = _getChildren.box,\n content = _getChildren.content;\n\n var backdrop = instance.props.animateFill ? createBackdropElement() : null;\n return {\n onCreate: function onCreate() {\n if (backdrop) {\n box.insertBefore(backdrop, box.firstElementChild);\n box.setAttribute('data-animatefill', '');\n box.style.overflow = 'hidden';\n instance.setProps({\n arrow: false,\n animation: 'shift-away'\n });\n }\n },\n onMount: function onMount() {\n if (backdrop) {\n var transitionDuration = box.style.transitionDuration;\n var duration = Number(transitionDuration.replace('ms', '')); // The content should fade in after the backdrop has mostly filled the\n // tooltip element. `clip-path` is the other alternative but is not\n // well-supported and is buggy on some devices.\n\n content.style.transitionDelay = Math.round(duration / 10) + \"ms\";\n backdrop.style.transitionDuration = transitionDuration;\n setVisibilityState([backdrop], 'visible');\n }\n },\n onShow: function onShow() {\n if (backdrop) {\n backdrop.style.transitionDuration = '0ms';\n }\n },\n onHide: function onHide() {\n if (backdrop) {\n setVisibilityState([backdrop], 'hidden');\n }\n }\n };\n }\n};\n\nfunction createBackdropElement() {\n var backdrop = div();\n backdrop.className = BACKDROP_CLASS;\n setVisibilityState([backdrop], 'hidden');\n return backdrop;\n}\n\nvar mouseCoords = {\n clientX: 0,\n clientY: 0\n};\nvar activeInstances = [];\n\nfunction storeMouseCoords(_ref) {\n var clientX = _ref.clientX,\n clientY = _ref.clientY;\n mouseCoords = {\n clientX: clientX,\n clientY: clientY\n };\n}\n\nfunction addMouseCoordsListener(doc) {\n doc.addEventListener('mousemove', storeMouseCoords);\n}\n\nfunction removeMouseCoordsListener(doc) {\n doc.removeEventListener('mousemove', storeMouseCoords);\n}\n\nvar followCursor = {\n name: 'followCursor',\n defaultValue: false,\n fn: function fn(instance) {\n var reference = instance.reference;\n var doc = getOwnerDocument(instance.props.triggerTarget || reference);\n var isInternalUpdate = false;\n var wasFocusEvent = false;\n var isUnmounted = true;\n var prevProps = instance.props;\n\n function getIsInitialBehavior() {\n return instance.props.followCursor === 'initial' && instance.state.isVisible;\n }\n\n function addListener() {\n doc.addEventListener('mousemove', onMouseMove);\n }\n\n function removeListener() {\n doc.removeEventListener('mousemove', onMouseMove);\n }\n\n function unsetGetReferenceClientRect() {\n isInternalUpdate = true;\n instance.setProps({\n getReferenceClientRect: null\n });\n isInternalUpdate = false;\n }\n\n function onMouseMove(event) {\n // If the instance is interactive, avoid updating the position unless it's\n // over the reference element\n var isCursorOverReference = event.target ? reference.contains(event.target) : true;\n var followCursor = instance.props.followCursor;\n var clientX = event.clientX,\n clientY = event.clientY;\n var rect = reference.getBoundingClientRect();\n var relativeX = clientX - rect.left;\n var relativeY = clientY - rect.top;\n\n if (isCursorOverReference || !instance.props.interactive) {\n instance.setProps({\n // @ts-ignore - unneeded DOMRect properties\n getReferenceClientRect: function getReferenceClientRect() {\n var rect = reference.getBoundingClientRect();\n var x = clientX;\n var y = clientY;\n\n if (followCursor === 'initial') {\n x = rect.left + relativeX;\n y = rect.top + relativeY;\n }\n\n var top = followCursor === 'horizontal' ? rect.top : y;\n var right = followCursor === 'vertical' ? rect.right : x;\n var bottom = followCursor === 'horizontal' ? rect.bottom : y;\n var left = followCursor === 'vertical' ? rect.left : x;\n return {\n width: right - left,\n height: bottom - top,\n top: top,\n right: right,\n bottom: bottom,\n left: left\n };\n }\n });\n }\n }\n\n function create() {\n if (instance.props.followCursor) {\n activeInstances.push({\n instance: instance,\n doc: doc\n });\n addMouseCoordsListener(doc);\n }\n }\n\n function destroy() {\n activeInstances = activeInstances.filter(function (data) {\n return data.instance !== instance;\n });\n\n if (activeInstances.filter(function (data) {\n return data.doc === doc;\n }).length === 0) {\n removeMouseCoordsListener(doc);\n }\n }\n\n return {\n onCreate: create,\n onDestroy: destroy,\n onBeforeUpdate: function onBeforeUpdate() {\n prevProps = instance.props;\n },\n onAfterUpdate: function onAfterUpdate(_, _ref2) {\n var followCursor = _ref2.followCursor;\n\n if (isInternalUpdate) {\n return;\n }\n\n if (followCursor !== undefined && prevProps.followCursor !== followCursor) {\n destroy();\n\n if (followCursor) {\n create();\n\n if (instance.state.isMounted && !wasFocusEvent && !getIsInitialBehavior()) {\n addListener();\n }\n } else {\n removeListener();\n unsetGetReferenceClientRect();\n }\n }\n },\n onMount: function onMount() {\n if (instance.props.followCursor && !wasFocusEvent) {\n if (isUnmounted) {\n onMouseMove(mouseCoords);\n isUnmounted = false;\n }\n\n if (!getIsInitialBehavior()) {\n addListener();\n }\n }\n },\n onTrigger: function onTrigger(_, event) {\n if (isMouseEvent(event)) {\n mouseCoords = {\n clientX: event.clientX,\n clientY: event.clientY\n };\n }\n\n wasFocusEvent = event.type === 'focus';\n },\n onHidden: function onHidden() {\n if (instance.props.followCursor) {\n unsetGetReferenceClientRect();\n removeListener();\n isUnmounted = true;\n }\n }\n };\n }\n};\n\nfunction getProps(props, modifier) {\n var _props$popperOptions;\n\n return {\n popperOptions: Object.assign({}, props.popperOptions, {\n modifiers: [].concat((((_props$popperOptions = props.popperOptions) == null ? void 0 : _props$popperOptions.modifiers) || []).filter(function (_ref) {\n var name = _ref.name;\n return name !== modifier.name;\n }), [modifier])\n })\n };\n}\n\nvar inlinePositioning = {\n name: 'inlinePositioning',\n defaultValue: false,\n fn: function fn(instance) {\n var reference = instance.reference;\n\n function isEnabled() {\n return !!instance.props.inlinePositioning;\n }\n\n var placement;\n var cursorRectIndex = -1;\n var isInternalUpdate = false;\n var triedPlacements = [];\n var modifier = {\n name: 'tippyInlinePositioning',\n enabled: true,\n phase: 'afterWrite',\n fn: function fn(_ref2) {\n var state = _ref2.state;\n\n if (isEnabled()) {\n if (triedPlacements.indexOf(state.placement) !== -1) {\n triedPlacements = [];\n }\n\n if (placement !== state.placement && triedPlacements.indexOf(state.placement) === -1) {\n triedPlacements.push(state.placement);\n instance.setProps({\n // @ts-ignore - unneeded DOMRect properties\n getReferenceClientRect: function getReferenceClientRect() {\n return _getReferenceClientRect(state.placement);\n }\n });\n }\n\n placement = state.placement;\n }\n }\n };\n\n function _getReferenceClientRect(placement) {\n return getInlineBoundingClientRect(getBasePlacement(placement), reference.getBoundingClientRect(), arrayFrom(reference.getClientRects()), cursorRectIndex);\n }\n\n function setInternalProps(partialProps) {\n isInternalUpdate = true;\n instance.setProps(partialProps);\n isInternalUpdate = false;\n }\n\n function addModifier() {\n if (!isInternalUpdate) {\n setInternalProps(getProps(instance.props, modifier));\n }\n }\n\n return {\n onCreate: addModifier,\n onAfterUpdate: addModifier,\n onTrigger: function onTrigger(_, event) {\n if (isMouseEvent(event)) {\n var rects = arrayFrom(instance.reference.getClientRects());\n var cursorRect = rects.find(function (rect) {\n return rect.left - 2 <= event.clientX && rect.right + 2 >= event.clientX && rect.top - 2 <= event.clientY && rect.bottom + 2 >= event.clientY;\n });\n var index = rects.indexOf(cursorRect);\n cursorRectIndex = index > -1 ? index : cursorRectIndex;\n }\n },\n onHidden: function onHidden() {\n cursorRectIndex = -1;\n }\n };\n }\n};\nfunction getInlineBoundingClientRect(currentBasePlacement, boundingRect, clientRects, cursorRectIndex) {\n // Not an inline element, or placement is not yet known\n if (clientRects.length < 2 || currentBasePlacement === null) {\n return boundingRect;\n } // There are two rects and they are disjoined\n\n\n if (clientRects.length === 2 && cursorRectIndex >= 0 && clientRects[0].left > clientRects[1].right) {\n return clientRects[cursorRectIndex] || boundingRect;\n }\n\n switch (currentBasePlacement) {\n case 'top':\n case 'bottom':\n {\n var firstRect = clientRects[0];\n var lastRect = clientRects[clientRects.length - 1];\n var isTop = currentBasePlacement === 'top';\n var top = firstRect.top;\n var bottom = lastRect.bottom;\n var left = isTop ? firstRect.left : lastRect.left;\n var right = isTop ? firstRect.right : lastRect.right;\n var width = right - left;\n var height = bottom - top;\n return {\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n width: width,\n height: height\n };\n }\n\n case 'left':\n case 'right':\n {\n var minLeft = Math.min.apply(Math, clientRects.map(function (rects) {\n return rects.left;\n }));\n var maxRight = Math.max.apply(Math, clientRects.map(function (rects) {\n return rects.right;\n }));\n var measureRects = clientRects.filter(function (rect) {\n return currentBasePlacement === 'left' ? rect.left === minLeft : rect.right === maxRight;\n });\n var _top = measureRects[0].top;\n var _bottom = measureRects[measureRects.length - 1].bottom;\n var _left = minLeft;\n var _right = maxRight;\n\n var _width = _right - _left;\n\n var _height = _bottom - _top;\n\n return {\n top: _top,\n bottom: _bottom,\n left: _left,\n right: _right,\n width: _width,\n height: _height\n };\n }\n\n default:\n {\n return boundingRect;\n }\n }\n}\n\nvar sticky = {\n name: 'sticky',\n defaultValue: false,\n fn: function fn(instance) {\n var reference = instance.reference,\n popper = instance.popper;\n\n function getReference() {\n return instance.popperInstance ? instance.popperInstance.state.elements.reference : reference;\n }\n\n function shouldCheck(value) {\n return instance.props.sticky === true || instance.props.sticky === value;\n }\n\n var prevRefRect = null;\n var prevPopRect = null;\n\n function updatePosition() {\n var currentRefRect = shouldCheck('reference') ? getReference().getBoundingClientRect() : null;\n var currentPopRect = shouldCheck('popper') ? popper.getBoundingClientRect() : null;\n\n if (currentRefRect && areRectsDifferent(prevRefRect, currentRefRect) || currentPopRect && areRectsDifferent(prevPopRect, currentPopRect)) {\n if (instance.popperInstance) {\n instance.popperInstance.update();\n }\n }\n\n prevRefRect = currentRefRect;\n prevPopRect = currentPopRect;\n\n if (instance.state.isMounted) {\n requestAnimationFrame(updatePosition);\n }\n }\n\n return {\n onMount: function onMount() {\n if (instance.props.sticky) {\n updatePosition();\n }\n }\n };\n }\n};\n\nfunction areRectsDifferent(rectA, rectB) {\n if (rectA && rectB) {\n return rectA.top !== rectB.top || rectA.right !== rectB.right || rectA.bottom !== rectB.bottom || rectA.left !== rectB.left;\n }\n\n return true;\n}\n\ntippy.setDefaultProps({\n animation: false\n});\n\nexport default tippy;\nexport { animateFill, createSingleton, delegate, followCursor, hideAll, inlinePositioning, ROUND_ARROW as roundArrow, sticky };\n//# sourceMappingURL=tippy-headless.esm.js.map\n","import tippy, { createSingleton } from 'tippy.js/headless';\nexport { default as tippy } from 'tippy.js/headless';\nimport React, { useLayoutEffect, useEffect, useRef, useState, cloneElement, useMemo, forwardRef as forwardRef$1 } from 'react';\nimport { createPortal } from 'react-dom';\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\nfunction preserveRef(ref, node) {\n if (ref) {\n if (typeof ref === 'function') {\n ref(node);\n }\n\n if ({}.hasOwnProperty.call(ref, 'current')) {\n ref.current = node;\n }\n }\n}\nfunction ssrSafeCreateDiv() {\n return isBrowser && document.createElement('div');\n}\nfunction toDataAttributes(attrs) {\n var dataAttrs = {\n 'data-placement': attrs.placement\n };\n\n if (attrs.referenceHidden) {\n dataAttrs['data-reference-hidden'] = '';\n }\n\n if (attrs.escaped) {\n dataAttrs['data-escaped'] = '';\n }\n\n return dataAttrs;\n}\n\nfunction deepEqual(x, y) {\n if (x === y) {\n return true;\n } else if (typeof x === 'object' && x != null && typeof y === 'object' && y != null) {\n if (Object.keys(x).length !== Object.keys(y).length) {\n return false;\n }\n\n for (var prop in x) {\n if (y.hasOwnProperty(prop)) {\n if (!deepEqual(x[prop], y[prop])) {\n return false;\n }\n } else {\n return false;\n }\n }\n\n return true;\n } else {\n return false;\n }\n}\n\nfunction uniqueByShape(arr) {\n var output = [];\n arr.forEach(function (item) {\n if (!output.find(function (outputItem) {\n return deepEqual(item, outputItem);\n })) {\n output.push(item);\n }\n });\n return output;\n}\nfunction deepPreserveProps(instanceProps, componentProps) {\n var _instanceProps$popper, _componentProps$poppe;\n\n return Object.assign({}, componentProps, {\n popperOptions: Object.assign({}, instanceProps.popperOptions, componentProps.popperOptions, {\n modifiers: uniqueByShape([].concat(((_instanceProps$popper = instanceProps.popperOptions) == null ? void 0 : _instanceProps$popper.modifiers) || [], ((_componentProps$poppe = componentProps.popperOptions) == null ? void 0 : _componentProps$poppe.modifiers) || []))\n })\n });\n}\n\nvar useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\nfunction useMutableBox(initialValue) {\n // Using refs instead of state as it's recommended to not store imperative\n // values in state due to memory problems in React(?)\n var ref = useRef();\n\n if (!ref.current) {\n ref.current = typeof initialValue === 'function' ? initialValue() : initialValue;\n }\n\n return ref.current;\n}\n\nfunction updateClassName(box, action, classNames) {\n classNames.split(/\\s+/).forEach(function (name) {\n if (name) {\n box.classList[action](name);\n }\n });\n}\n\nvar classNamePlugin = {\n name: 'className',\n defaultValue: '',\n fn: function fn(instance) {\n var box = instance.popper.firstElementChild;\n\n var isDefaultRenderFn = function isDefaultRenderFn() {\n var _instance$props$rende;\n\n return !!((_instance$props$rende = instance.props.render) == null ? void 0 : _instance$props$rende.$$tippy);\n };\n\n function add() {\n if (instance.props.className && !isDefaultRenderFn()) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['@tippyjs/react: Cannot use `className` prop in conjunction with', '`render` prop. Place the className on the element you are', 'rendering.'].join(' '));\n }\n\n return;\n }\n\n updateClassName(box, 'add', instance.props.className);\n }\n\n function remove() {\n if (isDefaultRenderFn()) {\n updateClassName(box, 'remove', instance.props.className);\n }\n }\n\n return {\n onCreate: add,\n onBeforeUpdate: remove,\n onAfterUpdate: add\n };\n }\n};\n\nfunction TippyGenerator(tippy) {\n function Tippy(_ref) {\n var children = _ref.children,\n content = _ref.content,\n visible = _ref.visible,\n singleton = _ref.singleton,\n render = _ref.render,\n reference = _ref.reference,\n _ref$disabled = _ref.disabled,\n disabled = _ref$disabled === void 0 ? false : _ref$disabled,\n _ref$ignoreAttributes = _ref.ignoreAttributes,\n ignoreAttributes = _ref$ignoreAttributes === void 0 ? true : _ref$ignoreAttributes,\n __source = _ref.__source,\n __self = _ref.__self,\n restOfNativeProps = _objectWithoutPropertiesLoose(_ref, [\"children\", \"content\", \"visible\", \"singleton\", \"render\", \"reference\", \"disabled\", \"ignoreAttributes\", \"__source\", \"__self\"]);\n\n var isControlledMode = visible !== undefined;\n var isSingletonMode = singleton !== undefined;\n\n var _useState = useState(false),\n mounted = _useState[0],\n setMounted = _useState[1];\n\n var _useState2 = useState({}),\n attrs = _useState2[0],\n setAttrs = _useState2[1];\n\n var _useState3 = useState(),\n singletonContent = _useState3[0],\n setSingletonContent = _useState3[1];\n\n var mutableBox = useMutableBox(function () {\n return {\n container: ssrSafeCreateDiv(),\n renders: 1\n };\n });\n var props = Object.assign({\n ignoreAttributes: ignoreAttributes\n }, restOfNativeProps, {\n content: mutableBox.container\n });\n\n if (isControlledMode) {\n if (process.env.NODE_ENV !== 'production') {\n ['trigger', 'hideOnClick', 'showOnCreate'].forEach(function (nativeStateProp) {\n if (props[nativeStateProp] !== undefined) {\n console.warn([\"@tippyjs/react: Cannot specify `\" + nativeStateProp + \"` prop in\", \"controlled mode (`visible` prop)\"].join(' '));\n }\n });\n }\n\n props.trigger = 'manual';\n props.hideOnClick = false;\n }\n\n if (isSingletonMode) {\n disabled = true;\n }\n\n var computedProps = props;\n var plugins = props.plugins || [];\n\n if (render) {\n computedProps = Object.assign({}, props, {\n plugins: isSingletonMode && singleton.data != null ? [].concat(plugins, [{\n fn: function fn() {\n return {\n onTrigger: function onTrigger(instance, event) {\n var node = singleton.data.children.find(function (_ref2) {\n var instance = _ref2.instance;\n return instance.reference === event.currentTarget;\n });\n instance.state.$$activeSingletonInstance = node.instance;\n setSingletonContent(node.content);\n }\n };\n }\n }]) : plugins,\n render: function render() {\n return {\n popper: mutableBox.container\n };\n }\n });\n }\n\n var deps = [reference].concat(children ? [children.type] : []); // CREATE\n\n useIsomorphicLayoutEffect(function () {\n var element = reference;\n\n if (reference && reference.hasOwnProperty('current')) {\n element = reference.current;\n }\n\n var instance = tippy(element || mutableBox.ref || ssrSafeCreateDiv(), Object.assign({}, computedProps, {\n plugins: [classNamePlugin].concat(props.plugins || [])\n }));\n mutableBox.instance = instance;\n\n if (disabled) {\n instance.disable();\n }\n\n if (visible) {\n instance.show();\n }\n\n if (isSingletonMode) {\n singleton.hook({\n instance: instance,\n content: content,\n props: computedProps,\n setSingletonContent: setSingletonContent\n });\n }\n\n setMounted(true);\n return function () {\n instance.destroy();\n singleton == null ? void 0 : singleton.cleanup(instance);\n };\n }, deps); // UPDATE\n\n useIsomorphicLayoutEffect(function () {\n var _instance$popperInsta;\n\n // Prevent this effect from running on 1st render\n if (mutableBox.renders === 1) {\n mutableBox.renders++;\n return;\n }\n\n var instance = mutableBox.instance;\n instance.setProps(deepPreserveProps(instance.props, computedProps)); // Fixes #264\n\n (_instance$popperInsta = instance.popperInstance) == null ? void 0 : _instance$popperInsta.forceUpdate();\n\n if (disabled) {\n instance.disable();\n } else {\n instance.enable();\n }\n\n if (isControlledMode) {\n if (visible) {\n instance.show();\n } else {\n instance.hide();\n }\n }\n\n if (isSingletonMode) {\n singleton.hook({\n instance: instance,\n content: content,\n props: computedProps,\n setSingletonContent: setSingletonContent\n });\n }\n });\n useIsomorphicLayoutEffect(function () {\n var _instance$props$poppe;\n\n if (!render) {\n return;\n }\n\n var instance = mutableBox.instance;\n instance.setProps({\n popperOptions: Object.assign({}, instance.props.popperOptions, {\n modifiers: [].concat((((_instance$props$poppe = instance.props.popperOptions) == null ? void 0 : _instance$props$poppe.modifiers) || []).filter(function (_ref3) {\n var name = _ref3.name;\n return name !== '$$tippyReact';\n }), [{\n name: '$$tippyReact',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['computeStyles'],\n fn: function fn(_ref4) {\n var _state$modifiersData;\n\n var state = _ref4.state;\n var hideData = (_state$modifiersData = state.modifiersData) == null ? void 0 : _state$modifiersData.hide; // WARNING: this is a high-risk path that can cause an infinite\n // loop. This expression _must_ evaluate to false when required\n\n if (attrs.placement !== state.placement || attrs.referenceHidden !== (hideData == null ? void 0 : hideData.isReferenceHidden) || attrs.escaped !== (hideData == null ? void 0 : hideData.hasPopperEscaped)) {\n setAttrs({\n placement: state.placement,\n referenceHidden: hideData == null ? void 0 : hideData.isReferenceHidden,\n escaped: hideData == null ? void 0 : hideData.hasPopperEscaped\n });\n }\n\n state.attributes.popper = {};\n }\n }])\n })\n });\n }, [attrs.placement, attrs.referenceHidden, attrs.escaped].concat(deps));\n return /*#__PURE__*/React.createElement(React.Fragment, null, children ? /*#__PURE__*/cloneElement(children, {\n ref: function ref(node) {\n mutableBox.ref = node;\n preserveRef(children.ref, node);\n }\n }) : null, mounted && /*#__PURE__*/createPortal(render ? render(toDataAttributes(attrs), singletonContent, mutableBox.instance) : content, mutableBox.container));\n }\n\n return Tippy;\n}\n\nfunction useSingletonGenerator(createSingleton) {\n return function useSingleton(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$disabled = _ref.disabled,\n disabled = _ref$disabled === void 0 ? false : _ref$disabled,\n _ref$overrides = _ref.overrides,\n overrides = _ref$overrides === void 0 ? [] : _ref$overrides;\n\n var _useState = useState(false),\n mounted = _useState[0],\n setMounted = _useState[1];\n\n var mutableBox = useMutableBox({\n children: [],\n renders: 1\n });\n useIsomorphicLayoutEffect(function () {\n if (!mounted) {\n setMounted(true);\n return;\n }\n\n var children = mutableBox.children,\n sourceData = mutableBox.sourceData;\n\n if (!sourceData) {\n if (process.env.NODE_ENV !== 'production') {\n console.error(['@tippyjs/react: The `source` variable from `useSingleton()` has', 'not been passed to a component.'].join(' '));\n }\n\n return;\n }\n\n var instance = createSingleton(children.map(function (child) {\n return child.instance;\n }), Object.assign({}, sourceData.props, {\n popperOptions: sourceData.instance.props.popperOptions,\n overrides: overrides,\n plugins: [classNamePlugin].concat(sourceData.props.plugins || [])\n }));\n mutableBox.instance = instance;\n\n if (disabled) {\n instance.disable();\n }\n\n return function () {\n instance.destroy();\n mutableBox.children = children.filter(function (_ref2) {\n var instance = _ref2.instance;\n return !instance.state.isDestroyed;\n });\n };\n }, [mounted]);\n useIsomorphicLayoutEffect(function () {\n if (!mounted) {\n return;\n }\n\n if (mutableBox.renders === 1) {\n mutableBox.renders++;\n return;\n }\n\n var children = mutableBox.children,\n instance = mutableBox.instance,\n sourceData = mutableBox.sourceData;\n\n if (!(instance && sourceData)) {\n return;\n }\n\n var _sourceData$props = sourceData.props,\n content = _sourceData$props.content,\n props = _objectWithoutPropertiesLoose(_sourceData$props, [\"content\"]);\n\n instance.setProps(deepPreserveProps(instance.props, Object.assign({}, props, {\n overrides: overrides\n })));\n instance.setInstances(children.map(function (child) {\n return child.instance;\n }));\n\n if (disabled) {\n instance.disable();\n } else {\n instance.enable();\n }\n });\n return useMemo(function () {\n var source = {\n data: mutableBox,\n hook: function hook(data) {\n mutableBox.sourceData = data;\n mutableBox.setSingletonContent = data.setSingletonContent;\n },\n cleanup: function cleanup() {\n mutableBox.sourceData = null;\n }\n };\n var target = {\n hook: function hook(data) {\n var _mutableBox$instance, _mutableBox$instance2;\n\n mutableBox.children = mutableBox.children.filter(function (_ref3) {\n var instance = _ref3.instance;\n return data.instance !== instance;\n });\n mutableBox.children.push(data);\n\n if (((_mutableBox$instance = mutableBox.instance) == null ? void 0 : _mutableBox$instance.state.isMounted) && ((_mutableBox$instance2 = mutableBox.instance) == null ? void 0 : _mutableBox$instance2.state.$$activeSingletonInstance) === data.instance) {\n mutableBox.setSingletonContent == null ? void 0 : mutableBox.setSingletonContent(data.content);\n }\n\n if (mutableBox.instance && !mutableBox.instance.state.isDestroyed) {\n mutableBox.instance.setInstances(mutableBox.children.map(function (child) {\n return child.instance;\n }));\n }\n },\n cleanup: function cleanup(instance) {\n mutableBox.children = mutableBox.children.filter(function (data) {\n return data.instance !== instance;\n });\n\n if (mutableBox.instance && !mutableBox.instance.state.isDestroyed) {\n mutableBox.instance.setInstances(mutableBox.children.map(function (child) {\n return child.instance;\n }));\n }\n }\n };\n return [source, target];\n }, []);\n };\n}\n\nvar forwardRef = (function (Tippy, defaultProps) {\n return /*#__PURE__*/forwardRef$1(function TippyWrapper(_ref, _ref2) {\n var children = _ref.children,\n props = _objectWithoutPropertiesLoose(_ref, [\"children\"]);\n\n return (\n /*#__PURE__*/\n // If I spread them separately here, Babel adds the _extends ponyfill for\n // some reason\n React.createElement(Tippy, Object.assign({}, defaultProps, props), children ? /*#__PURE__*/cloneElement(children, {\n ref: function ref(node) {\n preserveRef(_ref2, node);\n preserveRef(children.ref, node);\n }\n }) : null)\n );\n });\n});\n\nvar useSingleton = /*#__PURE__*/useSingletonGenerator(createSingleton);\nvar headless = /*#__PURE__*/forwardRef( /*#__PURE__*/TippyGenerator(tippy), {\n render: function render() {\n return '';\n }\n});\n\nexport default headless;\nexport { useSingleton };\n//# sourceMappingURL=tippy-react-headless.esm.js.map\n","import Tippy, { TippyProps } from '@tippyjs/react/headless'\r\nimport { useState } from 'react'\r\n\r\n// https://gist.github.com/atomiks/520f4b0c7b537202a23a3059d4eec908\r\nexport default function LazyTippy(props: TippyProps) {\r\n const [mounted, setMounted] = useState(false)\r\n\r\n const lazyPlugin = {\r\n fn: () => ({\r\n onShow: () => setMounted(true),\r\n onHidden: () => setMounted(false),\r\n }),\r\n }\r\n\r\n const computedProps = { ...props }\r\n\r\n computedProps.plugins = [lazyPlugin, ...(props.plugins || [])]\r\n\r\n if (props.render) {\r\n computedProps.render = (...args) => (mounted ? props.render?.(...args) : '')\r\n } else {\r\n computedProps.content = mounted ? props.content : ''\r\n }\r\n\r\n return \r\n}\r\n","import classnames from 'classnames'\r\nimport * as d3 from 'd3'\r\nimport * as React from 'react'\r\nimport { Component, RefObject, createRef } from 'react'\r\n\r\nimport { Icon } from '../../main/components/icon'\r\nimport { getValue, setValue } from '../../main/services/local-storage'\r\nimport { decodeQueryString } from '../queryString'\r\nimport { AdTag, getInvestingChannelPage } from '../shared/components/Ads'\r\nimport LazyTippy from '../shared/lazyTippy'\r\nimport BarChartBig from './barChart'\r\n\r\ninterface Bar {\r\n name: string\r\n value: number\r\n}\r\n\r\ninterface BarChartProps {\r\n data: Bar[]\r\n}\r\n\r\nclass BarChart extends Component {\r\n svgRef: RefObject\r\n\r\n constructor(props: BarChartProps) {\r\n super(props)\r\n this.svgRef = createRef()\r\n }\r\n\r\n componentDidMount() {\r\n this.renderChart()\r\n }\r\n\r\n componentDidUpdate() {\r\n this.renderChart()\r\n }\r\n\r\n renderChart() {\r\n const data = this.props.data\r\n\r\n const barWidth = 3\r\n const width = data.length * (barWidth + 1)\r\n const height = 16\r\n\r\n const x = d3\r\n .scaleBand()\r\n .domain(data.map((d) => d.name))\r\n .range([0, width])\r\n\r\n let min = d3.min(data, (d: Bar) => d.value)!\r\n if (min < 0) {\r\n min = d3.min(data, (d: Bar) => Math.min(d.value, -d.value))!\r\n } else {\r\n min = 0\r\n }\r\n\r\n const y = d3\r\n .scaleLinear()\r\n .range([height, 0])\r\n .domain([min, d3.max(data, (d: Bar) => Math.abs(d.value))] as [number, number])\r\n .nice()\r\n .unknown(height / 2)\r\n\r\n const svg = d3.select(this.svgRef.current).property('value', [])\r\n\r\n let bars = svg.selectAll('.bar').data(data)\r\n bars\r\n .enter()\r\n .append('rect')\r\n .attr('class', function (d: Bar) {\r\n return 'bar bar--' + (d.value < 0 ? 'negative' : 'positive')\r\n })\r\n .attr('x', function (d: Bar) {\r\n return x(d.name)!\r\n })\r\n .attr('y', function (d: Bar) {\r\n return y(Math.max(0, d.value))\r\n })\r\n .attr('height', function (d: Bar) {\r\n let height = Math.abs(y(d.value) - y(0))\r\n if (d.value > 0 || d.value < 0) {\r\n height = Math.max(height, 0.5)\r\n }\r\n return height\r\n })\r\n .attr('width', barWidth)\r\n bars\r\n .transition()\r\n .attr('class', function (d: Bar) {\r\n return 'bar bar--' + (d.value < 0 ? 'negative' : 'positive')\r\n })\r\n .attr('x', function (d: Bar) {\r\n return x(d.name)!\r\n })\r\n .attr('y', function (d: Bar) {\r\n return y(Math.max(0, d.value))\r\n })\r\n .attr('height', function (d: Bar) {\r\n let height = Math.abs(y(d.value) - y(0))\r\n if (d.value > 0 || d.value < 0) {\r\n height = Math.max(height, 0.5)\r\n }\r\n return height\r\n })\r\n .attr('width', barWidth)\r\n bars.exit().remove()\r\n\r\n this.svgRef.current!.style.width = width + 'px'\r\n this.svgRef.current!.style.height = height + 'px'\r\n }\r\n\r\n render() {\r\n return \r\n }\r\n}\r\n\r\nfunction EliteHoverAd() {\r\n return (\r\n \r\n
\r\n
\r\n
Upgrade your FINVIZ experience
\r\n
\r\n Join thousands of traders who make more informed decisions with our premium features. Real-time\r\n quotes, advanced visualizations, historical statements, and much more.\r\n
\r\n
\r\n Learn more\r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\ninterface BarChartWrapperProps {\r\n data: Bar[]\r\n}\r\n\r\nclass BarChartWrapper extends Component {\r\n state = {\r\n hover: false,\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n
x.value !== null)}\r\n render={(attrs) => (\r\n \r\n {FinvizSettings.hasUserPremium ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n )}\r\n >\r\n \r\n \r\n
\r\n \r\n
\r\n )\r\n }\r\n}\r\n\r\ninterface StatementsState {\r\n source: 'F' | 'R'\r\n sheet: string\r\n timeframe: string\r\n currency: string | null\r\n data: Record | null\r\n}\r\n\r\nconst DEFAULT_SOURCE = 'F'\r\n\r\nclass Statements extends Component {\r\n declare pageRef: ReturnType\r\n\r\n state: StatementsState = {\r\n source: this._getDefaultSource(),\r\n sheet: 'I',\r\n timeframe: 'A',\r\n currency: null,\r\n data: null,\r\n }\r\n\r\n componentDidMount() {\r\n this._fetch()\r\n this.pageRef = getInvestingChannelPage()\r\n this.pageRef.create()\r\n }\r\n\r\n componentWillUnmount() {\r\n this.pageRef?.destroy()\r\n }\r\n\r\n render() {\r\n const { data } = this.state\r\n\r\n if (data === null) {\r\n // || (data && data.error)) {\r\n return null\r\n }\r\n\r\n const hasData = !data.error\r\n const hasRedesignEnabled = FinvizSettings?.hasRedesignEnabled\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n {FinvizSettings.hasUserPremium && (\r\n // TODO fix classname when css mixins removal is merged\r\n \r\n )}\r\n {FinvizSettings.hasUserPremium && <> >}\r\n\r\n \r\n {this._renderSheetLink('I', 'income statement')} | {this._renderSheetLink('B', 'balance sheet')} |{' '}\r\n {this._renderSheetLink('C', 'cash flow')}\r\n \r\n | \r\n \r\n \r\n {this._renderTimeframeLink('A', 'annual')} | {this._renderTimeframeLink('Q', 'quarterly')}\r\n \r\n | \r\n
\r\n \r\n
\r\n {hasData && }\r\n {!hasData && (\r\n \r\n \r\n \r\n \r\n The statement is not available. Try switching between FactSet-Reuters source.\r\n | \r\n
\r\n \r\n
\r\n )}\r\n >\r\n )\r\n }\r\n\r\n _renderSheetLink(id: string, text: string) {\r\n const { sheet } = this.state\r\n return (\r\n {\r\n e.preventDefault()\r\n this.setState(\r\n {\r\n sheet: id,\r\n },\r\n () => {\r\n this._fetch()\r\n }\r\n )\r\n }}\r\n >\r\n {text}\r\n \r\n )\r\n }\r\n\r\n _renderTimeframeLink(id: string, text: string) {\r\n const { timeframe } = this.state\r\n return (\r\n {\r\n e.preventDefault()\r\n this.setState(\r\n {\r\n timeframe: id,\r\n },\r\n () => {\r\n this._fetch()\r\n }\r\n )\r\n }}\r\n >\r\n {text}\r\n \r\n )\r\n }\r\n\r\n async _fetch() {\r\n const { source, sheet, timeframe } = this.state\r\n const { t } = decodeQueryString()\r\n\r\n try {\r\n const response = await fetch(`/api/statement.ashx?t=${t}&so=${source}&s=${sheet}${timeframe}`)\r\n const json = await response.json()\r\n\r\n this.setState({\r\n currency: json.currency,\r\n data: json.error ? json : json.data,\r\n })\r\n } catch {}\r\n }\r\n\r\n _getDefaultSource(): 'F' | 'R' {\r\n if (!FinvizSettings.hasUserPremium) {\r\n return DEFAULT_SOURCE\r\n }\r\n\r\n return getValue('statements-source', DEFAULT_SOURCE) === 'R' ? 'R' : 'F'\r\n }\r\n}\r\n\r\nfunction StatementsTable({ data, currency }: StatementsState) {\r\n if (!data) return null\r\n\r\n function parseData(data: Record, skipFirst: boolean) {\r\n let parsed: any = {}\r\n Object.keys(data).forEach((key) => {\r\n parsed[key] = data[key]\r\n .map((value, index) => {\r\n if (isChartable(key)) {\r\n let parsedValue\r\n if (value === '') {\r\n parsedValue = null\r\n } else {\r\n parsedValue = parseFloat(value.replace(/,/g, ''))\r\n }\r\n return {\r\n name: data['Period End Date'][index],\r\n value: parsedValue,\r\n }\r\n }\r\n return null\r\n })\r\n .slice(skipFirst ? 1 : 0)\r\n })\r\n\r\n return parsed as Record>\r\n }\r\n\r\n function isChartable(label: string) {\r\n switch (label) {\r\n case 'Period End Date':\r\n case 'Period Length':\r\n return false\r\n }\r\n\r\n return true\r\n }\r\n\r\n function isHighlightRow(label: string) {\r\n switch (label) {\r\n case 'Period End Date':\r\n case 'Total Revenue':\r\n case 'Total Premiums Earned':\r\n case 'Interest Income':\r\n case 'Gross Profit':\r\n case 'Total Operating Expense':\r\n case 'Operating Income':\r\n case 'Net Income Before Taxes':\r\n case 'Net Income':\r\n case 'Total Current Assets':\r\n case 'Total Assets':\r\n case 'Total Current Liabilities':\r\n case 'Total Liabilities':\r\n case 'Total Equity':\r\n case 'Total Liabilities and Equity':\r\n case 'Cash from Operating Activities':\r\n case 'Cash from Investing Activities':\r\n case 'Cash from Financing Activities':\r\n case 'Net Change in Cash':\r\n case 'Price To Earnings Ratio':\r\n case 'Price to Book Ratio':\r\n case 'Price to Free Cash Flow':\r\n return true\r\n }\r\n\r\n return false\r\n }\r\n\r\n const hasRedesignEnabled = FinvizSettings?.hasRedesignEnabled\r\n const cellClass = hasRedesignEnabled ? '' : 'snapshot-td2'\r\n\r\n const skipFirst = data['Period End Date'][0] === 'TTM'\r\n const parsedData = parseData(data, skipFirst)\r\n const adRowIndexStart = !hasRedesignEnabled && data['Period Length'] ? 2 : 1\r\n\r\n return (\r\n <>\r\n \r\n \r\n {Object.keys(data).map((key, rowIndex) => (\r\n \r\n {key} | \r\n \r\n {isChartable(key) && }\r\n | \r\n {data[key].map((value, index) => {\r\n if (!FinvizSettings.hasUserPremium) {\r\n if (rowIndex === adRowIndexStart && index === 3) {\r\n return (\r\n \r\n \r\n \r\n Upgrade your FINVIZ experience\r\n \r\n Join thousands of traders who make more informed decisions with our premium\r\n features. Real-time quotes, advanced visualizations, historical statements, and much\r\n more.\r\n \r\n \r\n Learn more\r\n \r\n | \r\n )\r\n }\r\n if (\r\n index > 2 &&\r\n ((hasRedesignEnabled && key !== 'Period End Date') ||\r\n (key !== 'Period End Date' && key !== 'Period Length'))\r\n ) {\r\n return null\r\n }\r\n }\r\n\r\n return (\r\n \r\n {value}\r\n | \r\n )\r\n })}\r\n
\r\n ))}\r\n \r\n
\r\n \r\n \r\n \r\n values in Millions, {currency} | \r\n
\r\n \r\n
\r\n >\r\n )\r\n}\r\n\r\nexport default Statements\r\n","import * as React from 'react'\r\nimport { useLocation } from 'react-router-dom'\r\n\r\nimport { decodeQueryString } from '../queryString'\r\n\r\nconst CORRELATION_LINKS_CONTAINER_SELECTOR = 'js-quote-correlation-links-container'\r\nconst MULTITICKER_CHART_ELEMENT_SELECTOR = 'js-multi-ticker-chart'\r\nconst SET_SEARCH_EXT_SELECTOR = 'js-set-search-ext-argument'\r\n\r\nexport function useStockDetailUpdater() {\r\n const location = useLocation()\r\n const { p, ty } = decodeQueryString(location.search)\r\n const isInitializedRef = React.useRef(false)\r\n const [isStockDetailUpdating, setIsStockDetailUpdating] = React.useState(false)\r\n\r\n React.useEffect(() => {\r\n const multiTickerElements = document.getElementsByClassName(MULTITICKER_CHART_ELEMENT_SELECTOR)\r\n const correlationElements = document.getElementsByClassName(CORRELATION_LINKS_CONTAINER_SELECTOR)\r\n const abortController = new AbortController()\r\n\r\n if (isInitializedRef.current) {\r\n if (multiTickerElements.length > 0) setIsStockDetailUpdating(true)\r\n\r\n fetch(location.pathname + location.search, { signal: abortController.signal })\r\n .then((response) => response.text())\r\n .then((text) => {\r\n const virtualDOM = new DOMParser().parseFromString(text, 'text/html')\r\n\r\n // Multiticker update\r\n if (multiTickerElements.length > 0) {\r\n const multiTickerHtmlElements = Array.from(multiTickerElements) as HTMLImageElement[]\r\n const newMultiTickerHtmlElements = Array.from(\r\n virtualDOM.getElementsByClassName(MULTITICKER_CHART_ELEMENT_SELECTOR)\r\n ) as HTMLImageElement[]\r\n\r\n if (newMultiTickerHtmlElements?.length === multiTickerHtmlElements.length) {\r\n multiTickerHtmlElements.forEach((element, index) => {\r\n element.onload = () => setIsStockDetailUpdating(false)\r\n element.src = newMultiTickerHtmlElements[index].src\r\n })\r\n } else {\r\n setIsStockDetailUpdating(false)\r\n }\r\n }\r\n\r\n // Correlation update\r\n const correlationLinksTableCellHtmlElements = Array.from(correlationElements) as HTMLTableCellElement[]\r\n const newCorrelationLinksTableCellHtmlElements = Array.from(\r\n virtualDOM.getElementsByClassName(CORRELATION_LINKS_CONTAINER_SELECTOR)\r\n ) as HTMLTableCellElement[]\r\n\r\n if (newCorrelationLinksTableCellHtmlElements?.length === correlationLinksTableCellHtmlElements.length) {\r\n correlationLinksTableCellHtmlElements.forEach((element, index) => {\r\n element.innerHTML = newCorrelationLinksTableCellHtmlElements[index].innerHTML\r\n })\r\n }\r\n\r\n // Search function update\r\n const newsearchFunctionWrapperElement = virtualDOM.getElementById(SET_SEARCH_EXT_SELECTOR) as HTMLDivElement\r\n if (newsearchFunctionWrapperElement?.dataset.setSearchExtArgument) {\r\n FinvizSettings.quoteSearchExt = newsearchFunctionWrapperElement.dataset.setSearchExtArgument\r\n }\r\n })\r\n .catch((err) => {\r\n setIsStockDetailUpdating(false)\r\n if (err.name !== 'AbortError') {\r\n Sentry.captureException(err)\r\n }\r\n })\r\n }\r\n isInitializedRef.current = true\r\n return () => {\r\n abortController.abort()\r\n }\r\n // We don't want to trigger effect on any location change just if period or type change\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [p, ty])\r\n\r\n return { isStockDetailUpdating }\r\n}\r\n","import { CHART_ELEMENT_ID } from 'finviz-charts/app/constants/common'\r\nimport React, { Suspense } from 'react'\r\nimport ReactDOM from 'react-dom'\r\nimport { BrowserRouter } from 'react-router-dom'\r\n\r\nimport { NotificationWrapper } from '../../main/components/notification'\r\nimport { SpecificChartFunctionality, TIMEFRAME } from '../../main/constants'\r\nimport { useCheckNonIdeaChartMissingConfig } from '../../main/hooks/use-check-non-idea-chart-missing-config'\r\nimport { initIdeaQuotes } from '../../main/modules/charts/util'\r\nimport { ChartLayoutWithGlobalState, FREE_DATE_RANGES, Quote, Theme } from '../charts-lib'\r\nimport { decodeQueryString } from '../queryString'\r\nimport { getInitChartConfig } from '../shared/getInitChartConfig'\r\nimport { ready } from '../shared/ready'\r\nimport ETFHoldings from './etf-holdings'\r\nimport FundamentalCharts from './fundamentalCharts'\r\nimport { Perf } from './quote'\r\nimport { ChartContextQuoteHeader, ManualInitQuoteHeader } from './quote-header'\r\nimport { QUOTE_HEADER_ROOT } from './quote-header/constants'\r\nimport CreateAlertLink from './quote-links/CreateAlertLink'\r\nimport SaveToPortfolioLink from './quote-links/SaveToPortfolioLink'\r\nimport { QuoteMenu } from './quote-menu'\r\nimport Statements from './statements'\r\nimport { getChartLayoutSizeConfig, useChartLayoutWidthWatch } from './use-chart-layout-width-watch'\r\nimport { useStockDetailUpdater } from './use-stock-detail-updater'\r\n\r\nif (FinvizSettings.hasUserPremium || FinvizSettings.hasRedesignEnabled) {\r\n import(/* webpackChunkName: \"recent_quotes\" */ '../shared/recent_quotes').then(({ RenderRecentQuotes }) => {\r\n RenderRecentQuotes()\r\n })\r\n}\r\n\r\nconst QuoteMenuPortal = ({ isStockDetailUpdating }: { isStockDetailUpdating: boolean }) => {\r\n const quoteMenuElements = document.getElementsByClassName('quote-menu')\r\n const quoteMenuHtmlElements = Array.from(quoteMenuElements).filter((el) => el instanceof HTMLElement) as HTMLElement[]\r\n\r\n if (quoteMenuHtmlElements.length > 0) {\r\n return (\r\n <>\r\n {quoteMenuHtmlElements.map((quoteMenuElement: HTMLElement, quoteMenuIndex: number) => {\r\n const menuIndex = quoteMenuIndex + 1\r\n return ReactDOM.createPortal(\r\n ,\r\n quoteMenuElement\r\n )\r\n })}\r\n >\r\n )\r\n }\r\n return null\r\n}\r\n\r\nconst MENU_LINKS = [\r\n {\r\n selector: 'js-save-to-portfolio-link',\r\n LinkComponent: SaveToPortfolioLink,\r\n },\r\n {\r\n selector: 'js-create-alert-link',\r\n LinkComponent: CreateAlertLink,\r\n },\r\n]\r\n\r\nconst RenderMenuLinks = () => {\r\n MENU_LINKS.forEach(({ selector, LinkComponent }) => {\r\n const linkElements = document.getElementsByClassName(selector)\r\n const linkHtmlElements = Array.from(linkElements).filter((el) => el instanceof HTMLElement) as HTMLElement[]\r\n\r\n linkHtmlElements.forEach((linkElement, index) => {\r\n ReactDOM.render(, linkElement)\r\n })\r\n })\r\n}\r\n\r\nconst ChartLayoutPortal = () => {\r\n useChartLayoutWidthWatch()\r\n const chartEl = document.getElementById(CHART_ELEMENT_ID)\r\n const chartConfig = window.globalChartConfig\r\n const theme = FinvizSettings.hasDarkTheme ? Theme.dark : Theme.light\r\n\r\n if (chartEl && chartConfig) {\r\n const { p = FinvizSettings.defaultPeriod as TIMEFRAME } = decodeQueryString<{ p?: TIMEFRAME }>()\r\n return ReactDOM.createPortal(\r\n ({\r\n ...chart,\r\n dateRange:\r\n FinvizSettings.hasUserPremium || FREE_DATE_RANGES.includes(chart.dateRange ?? '')\r\n ? chart.dateRange\r\n : null,\r\n })),\r\n theme,\r\n }}\r\n parentElement={chartEl}\r\n />,\r\n chartEl\r\n )\r\n }\r\n return null\r\n}\r\n\r\nenum QuotePageType {\r\n StockDetail = 'stockDetail',\r\n Idea = 'idea',\r\n Perf = 'perf',\r\n Options = 'options',\r\n}\r\n\r\nfunction getQuotePageType() {\r\n const { ty, i } = decodeQueryString()\r\n\r\n if (ty === 'p') {\r\n return QuotePageType.Perf\r\n }\r\n if (ty === 'oc') {\r\n return QuotePageType.Options\r\n }\r\n if (i) {\r\n return QuotePageType.Idea\r\n }\r\n\r\n return QuotePageType.StockDetail\r\n}\r\n\r\nfunction getQuoteHeaderElement() {\r\n const quotePageType = getQuotePageType()\r\n\r\n if (quotePageType === QuotePageType.StockDetail) {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n const config = window.globalChartConfig\r\n if (config) {\r\n return \r\n }\r\n\r\n return null\r\n}\r\n\r\nconst ReactComponentsContainer = () => {\r\n const { isStockDetailUpdating } = useStockDetailUpdater()\r\n const quotePageType = getQuotePageType()\r\n const isPerfQuotePage = quotePageType === QuotePageType.Perf\r\n const isOptionsQuotePage = quotePageType === QuotePageType.Options\r\n const hasConfig = window.globalChartConfig\r\n\r\n useCheckNonIdeaChartMissingConfig()\r\n\r\n return (\r\n \r\n {hasConfig || isPerfQuotePage || isOptionsQuotePage ? (\r\n \r\n \r\n \r\n ) : null}\r\n {hasConfig && !isOptionsQuotePage && !isPerfQuotePage && (\r\n \r\n \r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nready(() => {\r\n const statementsEl = document.getElementById('statements')\r\n if (statementsEl && window['fetch']) {\r\n ReactDOM.render(, statementsEl)\r\n }\r\n\r\n const etfHoldingsEl = document.getElementById('js-etf-holdings')\r\n if (etfHoldingsEl) {\r\n ReactDOM.render(\r\n \r\n \r\n ,\r\n etfHoldingsEl\r\n )\r\n }\r\n\r\n const faEl = document.getElementById('js-quote-fa')\r\n if (faEl) {\r\n ReactDOM.render(, faEl)\r\n }\r\n\r\n const reactRootElement = document.getElementById('react-root')\r\n const quoteHeaderRoot = document.getElementById(QUOTE_HEADER_ROOT)\r\n\r\n if (FinvizSettings.quoteData) {\r\n Quote.create(FinvizSettings.quoteData)\r\n }\r\n\r\n if (window.globalChartConfig && !window.globalChartConfig.idea) {\r\n window.globalChartConfig = getInitChartConfig()\r\n }\r\n\r\n if (reactRootElement) {\r\n if (window.globalChartConfig?.ideaQuotes) {\r\n initIdeaQuotes(window.globalChartConfig.ideaQuotes, window.globalChartConfig)\r\n }\r\n\r\n ReactDOM.render(\r\n \r\n \r\n ,\r\n reactRootElement\r\n )\r\n }\r\n\r\n if (quoteHeaderRoot) {\r\n const quoteHeaderElement = getQuoteHeaderElement()\r\n if (quoteHeaderElement) {\r\n ReactDOM.render(quoteHeaderElement, quoteHeaderRoot)\r\n }\r\n }\r\n\r\n RenderMenuLinks()\r\n\r\n if (document.getElementById('app') && window['FinvizQuoteTickers']) {\r\n ReactDOM.render(, document.getElementById('app'))\r\n }\r\n})\r\n\r\nconst revealRatingButtonsCollection = document.getElementsByClassName('js-reveal-ratings-button')\r\nconst revealRatingButtons = Array.from(revealRatingButtonsCollection) as HTMLButtonElement[]\r\nrevealRatingButtons.forEach((revealRatingButton) => {\r\n revealRatingButton.onclick = (e) => {\r\n e.preventDefault()\r\n const ratingsRowWithTable = revealRatingButton.previousElementSibling\r\n\r\n ratingsRowWithTable?.querySelectorAll('table tr').forEach((rating, index, rows) => {\r\n if (rating.classList.contains('is-last')) {\r\n rating.classList.remove('is-last')\r\n }\r\n\r\n rating.classList.remove('hidden')\r\n\r\n if (index === rows.length - 1) {\r\n rating.classList.add('is-last')\r\n }\r\n })\r\n\r\n revealRatingButton.classList.add('hidden')\r\n window.gtag && window.gtag('event', 'click', { event_category: 'reveal-ratings' })\r\n }\r\n})\r\n","import React from 'react'\r\n\r\nimport { Dialog, useDialogState } from '../../../main/components/dialog'\r\nimport { Spinner } from '../../../main/components/spinner'\r\nimport { useAsyncModule } from '../../../main/services/async-modules-utils'\r\nimport { decodeQueryString } from '../../queryString'\r\nimport { saveToPortfolioAsyncModule } from '../save-to-portfolio/async-modules'\r\n\r\ntype SaveToPortfolioLinkProps = {\r\n index: number\r\n}\r\n\r\nexport default function SaveToPortfolioLink({ index }: SaveToPortfolioLinkProps) {\r\n const { t } = decodeQueryString()\r\n const urlTicker = t.split(',')[index]\r\n const dialog = useDialogState()\r\n const isVisible = dialog.useState('open')\r\n\r\n const [saveToPortfolioModule] = useAsyncModule({\r\n ...saveToPortfolioAsyncModule,\r\n shouldLoadModule: isVisible,\r\n })\r\n const SaveToPortfolio = saveToPortfolioModule?.SaveToPortfolio\r\n\r\n return (\r\n <>\r\n {\r\n e.preventDefault() // needed to prevent opening parent link\r\n window.gtag?.('event', 'click', { event_category: 'save-to-portfolio' })\r\n dialog.show()\r\n }}\r\n >\r\n Save to Portfolio\r\n \r\n \r\n >\r\n )\r\n}\r\n","import React from 'react'\r\n\r\nimport { Dialog, useDialogState } from '../../../main/components/dialog'\r\nimport { Spinner } from '../../../main/components/spinner'\r\nimport { useAsyncModule } from '../../../main/services/async-modules-utils'\r\nimport { decodeQueryString } from '../../queryString'\r\nimport { createAlertAsyncModule } from '../create-alert/async-modules'\r\n\r\ntype CreateAlertLinkProps = {\r\n index: number\r\n}\r\n\r\nexport default function CreateAlertLink({ index }: CreateAlertLinkProps) {\r\n const { t } = decodeQueryString()\r\n const urlTicker = t.split(',')[index]\r\n const dialog = useDialogState()\r\n const isVisible = dialog.useState('open')\r\n\r\n const [createAlertModule] = useAsyncModule({\r\n ...createAlertAsyncModule,\r\n shouldLoadModule: isVisible,\r\n })\r\n const CreateAlert = createAlertModule?.CreateAlert\r\n\r\n return (\r\n <>\r\n {\r\n e.preventDefault() // needed to prevent opening parent link\r\n window.gtag?.('event', 'click', { event_category: 'create-alert' })\r\n dialog.show()\r\n }}\r\n >\r\n Create Alert\r\n \r\n \r\n >\r\n )\r\n}\r\n","import { SpecificChartFunctionality } from 'finviz-charts/app/constants/common'\r\nimport * as React from 'react'\r\n\r\nimport { TIMEFRAME } from '../../main/constants'\r\nimport { useWindowSize } from '../../main/hooks/use-window-size'\r\nimport { getIntradayChartConfig, useChartLayoutGlobalModelAsync, useModelState } from '../charts-lib'\r\n\r\nexport function getChartLayoutSizeConfig(\r\n layoutConfig: Pick<\r\n typeof window.globalChartConfig,\r\n 'idea' | 'barWidth' | 'barMargin' | 'charts' | 'specificChartFunctionality'\r\n >,\r\n p = TIMEFRAME.d\r\n) {\r\n const { clientWidth } = document.body\r\n const { premarket, aftermarket, dateRange } = layoutConfig.charts[0]\r\n const maxChartWidth = clientWidth - 40\r\n let width = 990\r\n let barWidth = 3\r\n let barMargin = 1\r\n let timeframeMinutes = 0\r\n const appliedPeriod =\r\n layoutConfig.specificChartFunctionality === SpecificChartFunctionality.quotePage ? p : TIMEFRAME.d\r\n switch (appliedPeriod) {\r\n case TIMEFRAME.i1:\r\n timeframeMinutes = 1\r\n barWidth = 1\r\n if (premarket || aftermarket || clientWidth < 1650) {\r\n barMargin = 0\r\n }\r\n break\r\n case TIMEFRAME.i2:\r\n timeframeMinutes = 2\r\n break\r\n case TIMEFRAME.i3:\r\n timeframeMinutes = 3\r\n if (premarket && aftermarket && clientWidth <= 1505) {\r\n barWidth = 2\r\n }\r\n break\r\n case TIMEFRAME.i5:\r\n timeframeMinutes = 5\r\n barWidth = 5\r\n barMargin = clientWidth >= 1100 ? 2 : 1\r\n break\r\n case TIMEFRAME.i10:\r\n width = 1058 // 39bars per day * 5days * 5px per bar + 35px left offset + 48px right offset\r\n barMargin = 0\r\n break\r\n case TIMEFRAME.i15:\r\n case TIMEFRAME.i30:\r\n width = 1019\r\n break\r\n case TIMEFRAME.h:\r\n width = 1008\r\n break\r\n case TIMEFRAME.h2:\r\n case TIMEFRAME.h4:\r\n width = 1020\r\n break\r\n case TIMEFRAME.d:\r\n width = 1282\r\n break\r\n case TIMEFRAME.w:\r\n case TIMEFRAME.m:\r\n width = 994\r\n break\r\n }\r\n\r\n switch (p) {\r\n case TIMEFRAME.i1:\r\n case TIMEFRAME.i2:\r\n case TIMEFRAME.i3:\r\n case TIMEFRAME.i5:\r\n const commonProps = {\r\n timeframeMinutes,\r\n barWidthWithMargin: barWidth + 2 + barMargin,\r\n hasAftermarket: aftermarket,\r\n hasPremarket: premarket,\r\n }\r\n width = getIntradayChartConfig({\r\n ...commonProps,\r\n maxWidth: maxChartWidth,\r\n canCropChart: !dateRange,\r\n }).chartWidthWithOffset\r\n break\r\n }\r\n\r\n // 9px * 2 for margin left/right + 1px * 2 for border\r\n if (maxChartWidth <= width) {\r\n width = Math.max(994, maxChartWidth)\r\n if (p === TIMEFRAME.d) {\r\n barWidth = 2\r\n barMargin = 0\r\n width = 991\r\n }\r\n }\r\n\r\n if (layoutConfig.idea) {\r\n barWidth = layoutConfig.barWidth\r\n barMargin = layoutConfig.barMargin\r\n }\r\n\r\n return {\r\n width,\r\n barWidth,\r\n barMargin,\r\n }\r\n}\r\n\r\nexport function useChartLayoutWidthWatch() {\r\n const { innerWidth } = useWindowSize()\r\n const { chartLayoutModel } = useChartLayoutGlobalModelAsync()\r\n const unwatchedFirstChart = React.useMemo(() => chartLayoutModel?.charts().all()[0] ?? null, [chartLayoutModel])\r\n const chartModel = useModelState(unwatchedFirstChart, { watchProperties: ['quote'] })\r\n const quote = useModelState(chartModel?.quote() ?? null, { watchProperties: ['ticker', 'timeframe', 'isFetching'] })\r\n const ideaId = chartLayoutModel?.idea?.id\r\n\r\n React.useEffect(() => {\r\n const settings = !ideaId ? chartLayoutModel?.settings : null\r\n const timeframe = quote?.timeframe\r\n if (chartLayoutModel && timeframe && settings) {\r\n const { width, barWidth, barMargin } = getChartLayoutSizeConfig(chartLayoutModel.toConfig(), timeframe)\r\n const newSettings = JSON.parse(JSON.stringify(settings))\r\n newSettings.ChartSettings.center.barWidth = barWidth\r\n newSettings.IndicatorSettings.center.barWidth = barWidth\r\n newSettings.ChartSettings.center.barMargin = barMargin\r\n newSettings.IndicatorSettings.center.barMargin = barMargin\r\n chartLayoutModel.updateAttributes({ width, settings: newSettings })\r\n }\r\n // We don't want to trigger this effect on any chartLayoutModel change\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [quote?.premarket, quote?.aftermarket, quote?.timeframe, ideaId, innerWidth])\r\n}\r\n","import { SpecificChartFunctionality } from '../../main/constants'\r\nimport { ChartConfigChartPaneElement, Instrument, LayoutType, ScaleType, TIMEFRAME, Theme } from '../charts-lib'\r\nimport { getParsedCookies } from './cookie'\r\n\r\ninterface PaneElementProps extends ChartConfigChartPaneElement {\r\n label?: string\r\n fromDate?: string\r\n toDate?: string\r\n min?: number\r\n tickers: string[]\r\n}\r\n\r\ninterface StaticChartConfigProps {\r\n width?: number\r\n height?: number\r\n ticker: string\r\n timeframe: TIMEFRAME\r\n paneElements: PaneElementProps[]\r\n specificChartFunctionality?: SpecificChartFunctionality\r\n colorsOverride?: Array\r\n theme?: Theme\r\n colors?: ReturnType\r\n refreshData?: boolean\r\n}\r\n\r\nexport function getStaticChartConfig({\r\n width = 800,\r\n height = 400,\r\n ticker,\r\n timeframe,\r\n paneElements,\r\n specificChartFunctionality = SpecificChartFunctionality.default,\r\n colorsOverride,\r\n theme,\r\n colors = getCustomColorsFromCookies(),\r\n refreshData = false,\r\n}: StaticChartConfigProps) {\r\n return {\r\n layout: LayoutType['1h1v'],\r\n width,\r\n height,\r\n barWidth: 1,\r\n barMargin: 0,\r\n scrollable: false,\r\n editable: false,\r\n specificChartFunctionality,\r\n colorsOverride,\r\n theme,\r\n colors,\r\n charts: [\r\n {\r\n width: 0,\r\n premarket: false,\r\n aftermarket: false,\r\n dateRange: null,\r\n height,\r\n timeframe,\r\n scale: ScaleType.Linear,\r\n ticker: ticker,\r\n leftOffset: 0,\r\n instrument: Instrument.Stock,\r\n refreshData,\r\n stretch: true,\r\n panes: [\r\n {\r\n height,\r\n elements: paneElements,\r\n },\r\n ],\r\n },\r\n ],\r\n }\r\n}\r\n\r\nexport function getCustomColorsFromCookies() {\r\n try {\r\n return JSON.parse(getParsedCookies('customColors') as string)\r\n } catch {\r\n return undefined\r\n }\r\n}\r\n","import * as React from 'react'\r\n\r\nimport * as tracking from '../tracking'\r\n\r\nexport const IC_PUBLISHER_ID = 'df0d0d52-cc7f-11e8-82a5-0abbb61c4a6a'\r\n\r\nenum AdTagName {\r\n IC_TickerInContent = 'IC_D_3x3',\r\n IC_MapsLeftRail = 'IC_D_125x125',\r\n IC_Statements = 'IC_D_300x60',\r\n IC_Groups = 'IC_D_300x250',\r\n}\r\n\r\nconst tagDefinition = {\r\n [AdTagName.IC_TickerInContent]: { placements: 3, style: { width: 970, minHeight: 250 } },\r\n [AdTagName.IC_MapsLeftRail]: { placements: 2, style: { width: 125, minHeight: 125 } },\r\n [AdTagName.IC_Statements]: { placements: 1, style: { width: 300, minHeight: 60 } },\r\n [AdTagName.IC_Groups]: { placements: 1, style: { width: 336, minHeight: 280 } },\r\n}\r\n\r\nconst hasInvestingChannelAds = tracking.getAdsProvider() === tracking.AdsProvider.InvestingChannel\r\n\r\n/**\r\n * Get create/destroy methods to control ads insertion\r\n */\r\nexport function getInvestingChannelPage() {\r\n var page: ICPageReturn\r\n\r\n function create() {\r\n try {\r\n if (hasInvestingChannelAds) {\r\n window.InvestingChannelQueue?.push(() => {\r\n page = window.InvestingChannel?.UAT.Run(IC_PUBLISHER_ID)\r\n })\r\n }\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n }\r\n\r\n function destroy() {\r\n try {\r\n if (hasInvestingChannelAds) {\r\n window.InvestingChannelQueue?.push(() => {\r\n page?.destroy()\r\n })\r\n }\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n }\r\n\r\n return { create, destroy }\r\n}\r\n\r\n/**\r\n * Hook which recreates ads on deps change (SPA navigation,…)\r\n */\r\nexport function useInvestingChannelAds(deps: unknown[] = []) {\r\n React.useLayoutEffect(() => {\r\n const page = getInvestingChannelPage()\r\n\r\n page.create()\r\n\r\n return () => page.destroy()\r\n // eslint cannot statically check the dependencies and complains about it\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, deps)\r\n\r\n return hasInvestingChannelAds\r\n}\r\n\r\ninterface AdTagProps extends Omit, 'name'> {\r\n /**\r\n * Name of the ad tag\r\n */\r\n name: keyof typeof AdTagName\r\n\r\n /**\r\n * Manually set the placement position for this tag\r\n *\r\n * @default 1\r\n */\r\n position?: number\r\n\r\n /**\r\n * Additional class names for the wrapper div\r\n */\r\n className?: string\r\n}\r\n\r\nexport function AdTag({ name, position = 1, ...props }: AdTagProps) {\r\n const tagName = AdTagName[name]\r\n const tagProps = tagDefinition[tagName]\r\n const placementName = `${tagName}_${Math.min(Math.max(position, 1), tagProps.placements)}`\r\n\r\n if (!hasInvestingChannelAds) return null\r\n\r\n return \r\n}\r\n","import { Utils, convertTa } from '../charts-lib'\r\n\r\nexport function getInitChartConfig() {\r\n window.globalChartConfig.scrollable = false\r\n if (FinvizSettings.hasUserPremium) {\r\n window.globalChartConfig.scrollable = window.globalChartConfig.editable || !Utils.isMobile()\r\n }\r\n\r\n if (FinvizSettings.TA) {\r\n const COTs = FinvizSettings.COTs\r\n convertTa.mergeChartAndTAConfig(window.globalChartConfig, FinvizSettings.TA, COTs ? { COTs } : undefined)\r\n }\r\n\r\n return window.globalChartConfig\r\n}\r\n","import classnames from 'classnames'\r\nimport * as React from 'react'\r\n\r\nimport { Icon } from './icon'\r\n\r\ninterface RedGreenTextProps {\r\n value?: number | null\r\n children: any\r\n rightContent?: React.ReactNode\r\n className?: string\r\n rightClass?: string\r\n}\r\n\r\n/**\r\n * Component which renders red/green text based on whether the value is positive or negative if value\r\n * is 0, it will not be colored and it will not display the guide triangle\r\n */\r\nexport function RedGreenText({ value, children, className, rightContent, rightClass }: RedGreenTextProps) {\r\n const hasValue = value && Number.isFinite(value)\r\n const showArrow = rightContent === undefined && hasValue && value !== 0\r\n\r\n return (\r\n 0,\r\n 'text-negative': hasValue && value < 0,\r\n })}\r\n >\r\n {children}\r\n \r\n {showArrow ? (\r\n 0 ? 'arrowUpShort' : 'arrowDownShort'} className=\"block\" />\r\n ) : null}\r\n {rightContent}\r\n \r\n \r\n )\r\n}\r\n\r\n/**\r\n * Used to position multiple lines of RedGreen text, this component will make sure all numbers are\r\n * in line with their `rightContent`\r\n */\r\nexport function RedGreenMultiline({ className, children, ...props }: React.PropsWithChildren) {\r\n return (\r\n \r\n {React.Children.map(children, (child: React.ReactElement) => {\r\n if (React.isValidElement(child) && child.type === RedGreenText) {\r\n return React.cloneElement(child, {\r\n className: classnames(child.props.className, 'table-row'),\r\n rightClass: 'table-cell align-middle',\r\n })\r\n }\r\n\r\n return child\r\n })}\r\n
\r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\nexport interface DelayedProps {\r\n /**\r\n * The delay in milliseconds before the component is rendered.\r\n *\r\n * @default 300\r\n */\r\n delay?: number\r\n\r\n /**\r\n * Delay in milliseconds before rendering timeout state.\r\n */\r\n timeout?: number\r\n\r\n /**\r\n * Throw on timeout (suspense)\r\n */\r\n throwOnTimeout?: boolean\r\n\r\n /**\r\n * Component visible during the delay.\r\n * If rendering text, wrap it in a `span` to prevent error — see PR#608\r\n */\r\n delayComponent?: React.ReactNode\r\n\r\n /**\r\n * Component visible when timeout is over.\r\n * If rendering text, wrap it in a `span` to prevent error — see PR#608\r\n */\r\n timeoutComponent?: React.ReactNode\r\n\r\n /**\r\n * Component visible when delay is over.\r\n * If rendering text, wrap it in a `span` to prevent error — see PR#608\r\n */\r\n children?: React.ReactNode\r\n}\r\n\r\nexport function Delayed({\r\n delay = 300,\r\n timeout = 0,\r\n throwOnTimeout = false,\r\n delayComponent,\r\n timeoutComponent,\r\n children,\r\n}: DelayedProps) {\r\n const [visible, setVisible] = React.useState(false)\r\n const [hasTimedOut, setHasTimedOut] = React.useState(false)\r\n\r\n React.useEffect(() => {\r\n const visibilityTimeout = window.setTimeout(() => setVisible(true), delay)\r\n\r\n let failedTimeout: number\r\n if (timeout > 0) {\r\n failedTimeout = window.setTimeout(() => {\r\n setHasTimedOut(true)\r\n if (throwOnTimeout) throw new Error()\r\n }, timeout)\r\n }\r\n\r\n return () => {\r\n clearTimeout(visibilityTimeout)\r\n clearTimeout(failedTimeout)\r\n }\r\n }, [delay, timeout, throwOnTimeout])\r\n\r\n if (!visible) return <>{delayComponent}>\r\n\r\n if (hasTimedOut) {\r\n return <>{timeoutComponent}>\r\n }\r\n\r\n return <>{children}>\r\n}\r\n","import * as React from 'react'\r\n\r\nexport type NotificationContextType = ReturnType\r\n\r\nexport enum NotificationPosition {\r\n TopLeft,\r\n TopRight,\r\n BottomLeft,\r\n BottomRight,\r\n}\r\n\r\nexport interface NotificationOptions {\r\n position?: NotificationPosition\r\n inline?: boolean\r\n}\r\n\r\nexport const NotificationContext = React.createContext<{\r\n show: (element: JSX.Element, options?: NotificationOptions) => void\r\n hide: () => void\r\n}>({\r\n show: () => {},\r\n hide: () => {},\r\n})\r\n\r\nexport function useNotification() {\r\n return React.useContext(NotificationContext)\r\n}\r\n","import * as Ariakit from '@ariakit/react'\r\nimport classnames from 'classnames'\r\nimport * as React from 'react'\r\n\r\nimport { getVisualViewport, useVisualViewport } from '../../hooks/useVisualViewport'\r\nimport { NotificationContext, NotificationOptions, NotificationPosition } from './hooks'\r\n\r\ninterface NotificationState {\r\n element: JSX.Element\r\n options: Partial\r\n}\r\n\r\nexport function NotificationWrapper(props: React.PropsWithChildren) {\r\n const [isOpen, setIsOpen] = React.useState(false)\r\n const [notification, setNotification] = React.useState(null)\r\n const { viewport, setViewport } = useVisualViewport({ enabled: !!notification })\r\n\r\n const context = React.useRef({\r\n show: (element: JSX.Element, options: Partial = {}) => {\r\n setViewport(() => getVisualViewport(window.visualViewport))\r\n setNotification({ element, options })\r\n setIsOpen(true)\r\n },\r\n hide: () => setIsOpen(false),\r\n })\r\n\r\n const positionClass = React.useMemo(() => {\r\n const { position = NotificationPosition.BottomLeft } = notification?.options ?? {}\r\n return {\r\n '[--inset-t:1rem] items-start pt-inset-top': [\r\n NotificationPosition.TopLeft,\r\n NotificationPosition.TopRight,\r\n ].includes(position),\r\n '[--inset-r:1rem] justify-end landscape-secondary:pr-inset-right': [\r\n NotificationPosition.TopRight,\r\n NotificationPosition.BottomRight,\r\n ].includes(position),\r\n '[--inset-b:1rem] items-end pb-inset-bottom': [\r\n NotificationPosition.BottomLeft,\r\n NotificationPosition.BottomRight,\r\n ].includes(position),\r\n '[--inset-l:1rem] justify-start landscape-primary:pl-inset-left': [\r\n NotificationPosition.TopLeft,\r\n NotificationPosition.BottomLeft,\r\n ].includes(position),\r\n }\r\n }, [notification?.options])\r\n\r\n const WrapperComponent = React.useMemo(\r\n () => (notification?.options.inline ? React.Fragment : Ariakit.Portal),\r\n [notification?.options.inline]\r\n )\r\n\r\n return (\r\n \r\n {props.children}\r\n {isOpen && (\r\n \r\n \r\n {notification?.element}\r\n \r\n \r\n )}\r\n \r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\nimport { NotificationContextType, useNotification } from './hooks'\r\n\r\nexport function withNotificationContext(\r\n WrappedComponent: React.ComponentType\r\n) {\r\n const displayName = WrappedComponent.displayName ?? WrappedComponent.name ?? 'Component'\r\n const WithNotificationContext = (props: Omit) => {\r\n const notification = useNotification()\r\n return \r\n }\r\n\r\n WithNotificationContext.displayName = `withNotificationContext(${displayName})`\r\n\r\n return WithNotificationContext\r\n}\r\n","import * as Ariakit from '@ariakit/react'\r\nimport classnames from 'classnames'\r\nimport * as React from 'react'\r\n\r\nimport { Button } from '../button'\r\nimport { useNotification } from './hooks'\r\n\r\ninterface NotificationProps {\r\n className?: string\r\n /**\r\n * Default button text\r\n * @default Close\r\n */\r\n closeText?: string\r\n\r\n /**\r\n * Custom buttons. Overrides `closeText`\r\n */\r\n actions?: JSX.Element\r\n\r\n /**\r\n * When set, the notification will automatically close\r\n */\r\n timeoutInMs?: number\r\n}\r\n\r\nexport function Notification({\r\n className,\r\n closeText = 'Close',\r\n actions,\r\n timeoutInMs,\r\n children,\r\n}: React.PropsWithChildren) {\r\n const notification = useNotification()\r\n\r\n React.useEffect(() => {\r\n let timeoutId: number\r\n if (timeoutInMs) {\r\n timeoutId = window.setTimeout(() => {\r\n notification.hide()\r\n }, timeoutInMs)\r\n }\r\n\r\n return () => {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId)\r\n }\r\n }\r\n }, [notification, timeoutInMs])\r\n\r\n return (\r\n \r\n
{children}
\r\n
\r\n {actions ?? (\r\n \r\n )}\r\n
\r\n
\r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { useLocation } from 'react-router-dom'\r\n\r\nimport { decodeQueryString } from '../../app/queryString'\r\n\r\nexport function useCheckNonIdeaChartMissingConfig() {\r\n const location = useLocation()\r\n\r\n React.useEffect(() => {\r\n // Navigation (back/forward) from nonexisting idea page doesn't fully reload the page\r\n // So if we're on non idea page and have still isIdeaNotFoundPage flag we want to reload the page\r\n const { i } = decodeQueryString(location.search)\r\n if (!i && window.isIdeaNotFoundPage) {\r\n window.location.reload()\r\n }\r\n }, [location.search])\r\n}\r\n","import throttle from 'lodash.throttle'\r\nimport * as React from 'react'\r\n\r\nexport function getVisualViewport(visualViewport: VisualViewport | null) {\r\n const width = visualViewport?.width ?? window.innerWidth\r\n const height = visualViewport?.height ?? window.innerHeight\r\n const scale = visualViewport?.scale ?? 1\r\n\r\n return {\r\n top: visualViewport?.offsetTop ?? 0,\r\n left: visualViewport?.offsetLeft ?? 0,\r\n scale: Math.round((1 / scale) * 100) / 100,\r\n width: Math.round(width * scale),\r\n height: Math.round(height * scale),\r\n unscaledWidth: width,\r\n unscaledHeight: height,\r\n }\r\n}\r\n\r\nexport function useVisualViewport({ enabled = true, onScroll = true }: { enabled?: boolean; onScroll?: boolean } = {}) {\r\n const [viewport, setViewport] = React.useState(getVisualViewport(window.visualViewport))\r\n\r\n React.useEffect(() => {\r\n if (!enabled) return\r\n\r\n const handleChange = throttle((ev: Event) => {\r\n const viewport = ev.currentTarget as VisualViewport\r\n if (viewport) {\r\n setViewport(() => getVisualViewport(viewport))\r\n }\r\n }, 50)\r\n\r\n window.visualViewport?.addEventListener('resize', handleChange)\r\n if (onScroll) window.visualViewport?.addEventListener('scroll', handleChange)\r\n handleChange({ currentTarget: window.visualViewport } as Event)\r\n\r\n return () => {\r\n window.visualViewport?.removeEventListener('resize', handleChange)\r\n window.visualViewport?.removeEventListener('scroll', handleChange)\r\n }\r\n }, [enabled, onScroll])\r\n\r\n return React.useMemo(() => ({ viewport, setViewport }), [viewport])\r\n}\r\n","import Quote from 'finviz-charts/app/models/quote'\r\n\r\nimport { convertTa } from '../../../app/charts-lib'\r\nimport { ObjectHash } from '../../components/types'\r\nimport { getInstrumentForTicker } from '../../util'\r\n\r\nconst PADDING = 2 // Border widths\r\n\r\nexport function getChartsDimensions(chartElementId: string) {\r\n const containerElement = document.getElementById(chartElementId)\r\n\r\n const box = containerElement?.getBoundingClientRect()\r\n\r\n return {\r\n width: Math.max((box?.width ?? 0) - PADDING, 0),\r\n height: Math.max((box?.height ?? 0) - PADDING, 0),\r\n }\r\n}\r\n\r\nexport function getChartConfig(idea: any, chartElementId: string) {\r\n const chartsDimensions = getChartsDimensions(chartElementId)\r\n\r\n if (idea) {\r\n const chartConfig = Object.assign({}, FinvizChartsSettings.ideaChart, {\r\n colors: FinvizChartsSettings.colors,\r\n width: chartsDimensions.width,\r\n height: chartsDimensions.height,\r\n scrollable: true,\r\n editors: ['layout', 'settings', 'publish', 'tools'],\r\n })\r\n for (let i = 0; i < chartConfig.charts.length; i++) {\r\n if (!chartConfig.charts[i].instrument) {\r\n chartConfig.charts[i].instrument = 'stock'\r\n }\r\n }\r\n\r\n return chartConfig\r\n }\r\n\r\n return {\r\n newCharts: true,\r\n width: chartsDimensions.width,\r\n height: chartsDimensions.height,\r\n barWidth: 3,\r\n barMargin: 1,\r\n scrollable: true,\r\n alignChartsToRight: true,\r\n theme: FinvizChartsSettings.theme,\r\n colors: FinvizChartsSettings.colors,\r\n editors: ['layout', 'settings', 'publish', 'tools'],\r\n layout: FinvizChartsSettings.layout,\r\n charts: FinvizChartsSettings.tickers.map(function (ticker: string, index: number) {\r\n return {\r\n timeframe: FinvizChartsSettings.periods[index],\r\n dateRange: FinvizChartsSettings.ranges[index],\r\n scale: FinvizChartsSettings.taConfig.scale || 'linear',\r\n ticker: ticker,\r\n instrument: getInstrumentForTicker(ticker),\r\n premarket: FinvizChartsSettings.taConfig.premarket,\r\n aftermarket: FinvizChartsSettings.taConfig.aftermarket,\r\n hasChartEvents: FinvizChartsSettings.taConfig.hasChartEvents,\r\n refreshData: true,\r\n panes: convertTa.getPanes(FinvizChartsSettings.taConfig),\r\n }\r\n }),\r\n }\r\n}\r\n\r\nexport const initIdeaQuotes = (quotes: Array, ideaChart: ObjectHash) => {\r\n const hasPatterns = JSON.stringify(ideaChart).includes('patterns')\r\n\r\n for (let i = 0; i < quotes.length; i++) {\r\n const quote = quotes[i]\r\n\r\n if (quote.timeframe === 'i1' || quote.timeframe === 'i3' || quote.timeframe === 'i5' || quote.timeframe === 'i15') {\r\n if (!quote.hasOwnProperty('drawMinutesPerDay')) {\r\n quote.drawMinutesPerDay = quote.timeframe === 'i15' ? 390 : 420\r\n }\r\n\r\n if (!quote.hasOwnProperty('marketStartMinutes')) {\r\n quote.marketStartMinutes = quote.timeframe === 'i15' ? 570 : 540\r\n }\r\n\r\n if (!quote.hasOwnProperty('premarketLengthMinutes')) {\r\n quote.premarketLengthMinutes = quote.timeframe === 'i15' ? 0 : 30\r\n }\r\n\r\n if (!quote.hasOwnProperty('aftermarketLengthMinutes')) {\r\n quote.aftermarketLengthMinutes = 0\r\n }\r\n }\r\n\r\n if (!quote.hasOwnProperty('hasPatterns')) {\r\n quote.hasPatterns = hasPatterns\r\n }\r\n\r\n quote.ideaID = ideaChart.idea.id\r\n\r\n Quote.create(quote)\r\n }\r\n}\r\n","/**\n * React Router DOM v6.16.0\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport { UNSAFE_mapRouteProperties, Router, UNSAFE_NavigationContext, useHref, useResolvedPath, useLocation, UNSAFE_DataRouterStateContext, useNavigate, createPath, UNSAFE_useRouteId, UNSAFE_RouteContext, useMatches, useNavigation, unstable_useBlocker, UNSAFE_DataRouterContext } from 'react-router';\nexport { AbortedDeferredError, Await, MemoryRouter, Navigate, NavigationType, Outlet, Route, Router, RouterProvider, Routes, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext, UNSAFE_LocationContext, UNSAFE_NavigationContext, UNSAFE_RouteContext, UNSAFE_useRouteId, createMemoryRouter, createPath, createRoutesFromChildren, createRoutesFromElements, defer, generatePath, isRouteErrorResponse, json, matchPath, matchRoutes, parsePath, redirect, redirectDocument, renderMatches, resolvePath, unstable_useBlocker, useActionData, useAsyncError, useAsyncValue, useHref, useInRouterContext, useLoaderData, useLocation, useMatch, useMatches, useNavigate, useNavigation, useNavigationType, useOutlet, useOutletContext, useParams, useResolvedPath, useRevalidator, useRouteError, useRouteLoaderData, useRoutes } from 'react-router';\nimport { stripBasename, UNSAFE_warning, createRouter, createBrowserHistory, createHashHistory, UNSAFE_ErrorResponseImpl, UNSAFE_invariant, joinPaths } from '@remix-run/router';\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\nconst defaultMethod = \"get\";\nconst defaultEncType = \"application/x-www-form-urlencoded\";\nfunction isHtmlElement(object) {\n return object != null && typeof object.tagName === \"string\";\n}\nfunction isButtonElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"button\";\n}\nfunction isFormElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"form\";\n}\nfunction isInputElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"input\";\n}\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\nfunction shouldProcessLinkClick(event, target) {\n return event.button === 0 && (\n // Ignore everything but left clicks\n !target || target === \"_self\") &&\n // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // Ignore clicks with modifier keys\n ;\n}\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n * let searchParams = new URLSearchParams([\n * ['sort', 'name'],\n * ['sort', 'price']\n * ]);\n *\n * you can do:\n *\n * let searchParams = createSearchParams({\n * sort: ['name', 'price']\n * });\n */\nfunction createSearchParams(init) {\n if (init === void 0) {\n init = \"\";\n }\n return new URLSearchParams(typeof init === \"string\" || Array.isArray(init) || init instanceof URLSearchParams ? init : Object.keys(init).reduce((memo, key) => {\n let value = init[key];\n return memo.concat(Array.isArray(value) ? value.map(v => [key, v]) : [[key, value]]);\n }, []));\n}\nfunction getSearchParamsForLocation(locationSearch, defaultSearchParams) {\n let searchParams = createSearchParams(locationSearch);\n if (defaultSearchParams) {\n // Use `defaultSearchParams.forEach(...)` here instead of iterating of\n // `defaultSearchParams.keys()` to work-around a bug in Firefox related to\n // web extensions. Relevant Bugzilla tickets:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1414602\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1023984\n defaultSearchParams.forEach((_, key) => {\n if (!searchParams.has(key)) {\n defaultSearchParams.getAll(key).forEach(value => {\n searchParams.append(key, value);\n });\n }\n });\n }\n return searchParams;\n}\n// One-time check for submitter support\nlet _formDataSupportsSubmitter = null;\nfunction isFormDataSubmitterSupported() {\n if (_formDataSupportsSubmitter === null) {\n try {\n new FormData(document.createElement(\"form\"),\n // @ts-expect-error if FormData supports the submitter parameter, this will throw\n 0);\n _formDataSupportsSubmitter = false;\n } catch (e) {\n _formDataSupportsSubmitter = true;\n }\n }\n return _formDataSupportsSubmitter;\n}\nconst supportedFormEncTypes = new Set([\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"]);\nfunction getFormEncType(encType) {\n if (encType != null && !supportedFormEncTypes.has(encType)) {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(false, \"\\\"\" + encType + \"\\\" is not a valid `encType` for `