{"version":3,"file":"594.chunk.js","mappings":";w9NAEMA,EAAAA,SAAAA,qBAGJ,WAAYC,EAAcC,EAAiBC,2BACzCC,EAAAA,EAAAA,KAAAA,KAAMF,IACDD,KAAOA,EACZG,EAAKC,KAAOJ,EACZG,EAAKF,QAAUA,EACfE,EAAKE,MAAL,OAAaH,QAAb,IAAaA,OAAb,EAAaA,EAAOG,MAEpBC,OAAOC,eAAPD,EAAAA,GAA4BP,EAAUS,sBAVpCT,CAAAA,EAAkBU,QAclBC,EAAAA,SAAAA,qBAGJ,WAAYC,0BACVC,EAAAA,EAAAA,KAAAA,KAAMF,EAAwBV,KAA9B,0CAAuEW,IACvEL,OAAOC,eAAPD,EAAAA,GAA4BI,EAAwBF,sBALlDE,CAAgCX,GACtBW,EAAAA,KAAO,8BAiBjBG,EAAAA,SAAAA,qBAGJ,WAAYZ,EAAiBC,0BAC3BY,EAAAA,EAAAA,KAAAA,KAAMD,EAAiBb,KAAMC,EAASC,GACtCI,OAAOC,eAAPD,EAAAA,GAA4BO,EAAiBL,sBAL3CK,CAAyBd,GACfc,EAAAA,KAAO,uBAQjBE,EAAAA,SAAAA,qBAIJ,WAAYd,EAAiBe,EAA4Bd,2BACvDe,EAAAA,EAAAA,KAAAA,KAAMF,EAAoBf,KAAMC,EAASC,IACpCc,YAAcA,EACnBV,OAAOC,eAAPD,EAAAA,GAA4BS,EAAoBP,sBAP9CO,CAA4BhB,GAClBgB,EAAAA,KAAO,sBC1ChB,ICCHG,ECHCC,EFEQC,EAAkD,CAC7DC,wBAAyB,yBACzBC,wBAAyB,sPACzBC,2BAA4B,2BAC5BC,sCAAuC,uBACvCC,2CAA4C,QAC5CC,gCAAiC,iBACjCC,sBAAuB,SACvBC,sBAAuB,SACvBC,gBAAiB,yBACjBC,yBAA0B,oCAC1BC,mBAAoB,2GACpBC,eAAgB,OAChBC,kBAAmB,UACnBC,gBAAiB,SACjBC,wBAAyB,2BACzBC,mCAAoC,uBACpCC,wCAAyC,QACzCC,6BAA8B,iBAC9BC,6BAA8B,mFAC9BC,wBAAyB,SACzBC,wBAAyB,SACzBC,kBAAmB,gGCnBfC,EACK,SAACC,GACR1B,EAA0B,EAAH,OAClBA,GACAE,GACAwB,IALHD,EASK,SAACE,GACR,OAAU3B,EAAwB2B,GAAQ3B,EAAwB2B,GAAO,IEZvEC,EAAY,WACZC,EAAO,OAGPC,EAAc,yJAEdC,EAAmB,SAACC,EAAejD,GAAkC,MAAO,CAAEkD,WAAY,oBAAqBD,MAAAA,EAAOjD,QAAAA,IAEtHmD,EACc,SAACC,GACjB,IAAMrC,EAA4B,GAsBlC,OApBI,OAACqC,QAAD,IAACA,GAAAA,EAAUC,UAEH,OAACD,QAAD,IAACA,GAAAA,EAAUC,WAAaD,EAASC,UAAUC,OAAOC,OAAS,GACrExC,EAAYyC,KAAKR,EAAiB,YAAaF,IAF/C/B,EAAYyC,KAAKR,EAAiB,YAAaH,IAK7C,OAACO,QAAD,IAACA,GAAAA,EAAUK,SAEH,OAACL,QAAD,IAACA,GAAAA,EAAUK,UAAYL,EAASK,SAASH,OAAOC,OAAS,GACnExC,EAAYyC,KAAKR,EAAiB,WAAYF,IAF9C/B,EAAYyC,KAAKR,EAAiB,WAAYH,IAK5C,OAACO,QAAD,IAACA,GAAAA,EAAUM,MAEH,OAACN,QAAD,IAACA,GAAAA,EAAUM,OAASN,EAASM,MAAMJ,OAAOC,OAAS,EAC7DxC,EAAYyC,KAAKR,EAAiB,QAASF,IACjC,OAACM,QAAD,IAACA,GAAAA,EAAUM,QAAUN,EAASM,MAAMJ,OAAOK,MAAMZ,IAC3DhC,EAAYyC,KAAKR,EAAiB,QA3BxB,YAuBVjC,EAAYyC,KAAKR,EAAiB,QAASH,IAOtC9B,IDnCX,SAAKG,GACHA,EAAAA,wBAAAA,0BACAA,EAAAA,uBAAAA,yBACAA,EAAAA,wBAAAA,0BACAA,EAAAA,2BAAAA,6BACAA,EAAAA,+BAAAA,iCACAA,EAAAA,sCAAAA,wCACAA,EAAAA,2CAAAA,6CACAA,EAAAA,gCAAAA,kCACAA,EAAAA,sBAAAA,wBACAA,EAAAA,sBAAAA,wBACAA,EAAAA,yBAAAA,2BACAA,EAAAA,sBAAAA,wBACAA,EAAAA,gBAAAA,kBACAA,EAAAA,mBAAAA,qBACAA,EAAAA,eAAAA,iBACAA,EAAAA,kBAAAA,oBACAA,EAAAA,gBAAAA,kBACAA,EAAAA,gBAAAA,kBACAA,EAAAA,qBAAAA,uBACAA,EAAAA,0BAAAA,4BACAA,EAAAA,wBAAAA,0BACAA,EAAAA,mCAAAA,qCACAA,EAAAA,wCAAAA,0CACAA,EAAAA,6BAAAA,+BACAA,EAAAA,6BAAAA,+BACAA,EAAAA,yBAAAA,2BACAA,EAAAA,wBAAAA,0BACAA,EAAAA,wBAAAA,0BACAA,EAAAA,QAAAA,UACAA,EAAAA,kBAAAA,oBACAA,EAAAA,SAAAA,WACAA,EAAAA,6BAAAA,+BACAA,EAAAA,mBAAAA,qBAjCF,CAAKA,IAAAA,EAAsB,o9KEW3B,IAAM0C,EAAgB,SAACC,GAErB,OACEC,EAAAA,cAAAA,MAAAA,CAAKC,UAAU,mBACbD,EAAAA,cAAAA,OAAAA,CAAMC,UAAS,YAAOF,EAAMG,QAAU,GAAK,cAAgBtB,EAA2BxB,EAAuB+C,UAC7GH,EAAAA,cAAAA,QAAAA,CAAOC,UAAU,UACfD,EAAAA,cAAAA,QAAAA,CAAO/D,KAAK,WAAWmE,SAAUL,EAAMK,SAAUF,QAASH,EAAMG,QAC9DG,SAAU,SAACC,GAAYP,EAAMM,SAASC,EAAMC,OAAOL,YACrDF,EAAAA,cAAAA,OAAAA,CAAMC,UAAU,kBAElBD,EAAAA,cAAAA,OAAAA,CAAMC,UAAS,aAAQF,EAAMG,QAAU,YAAc,KAAOtB,EAA2BxB,EAAuBoD,aCrB9GC,EAAkB,0BCMlBC,EAAe,CACnBC,mBAAoB,SAACC,GACdF,EAAaG,sBAAsBD,KACtCE,SAASC,OAATD,GAAAA,OAAqBJ,EAAaM,uBAAuBJ,GAAzD,YALc,YASlBC,sBAAuB,SAACD,GACtB,MAAsB,UAAlBA,EACKE,SAASC,OAAOE,SAASP,EAAaM,uBAAbN,WAC5BI,SAASC,OAAOE,SAASP,EAAaM,uBAAbN,cAEF,cAAlBE,GACFE,SAASC,OAAOE,SAASP,EAAaM,uBAAbN,eAOpCM,uBAAwB,SAACJ,GACvB,MAAyB,cAAlBA,EAxBmB,6BADJ,2BCGpBM,EAAsB,uCAEtBC,EAAqB,SAACC,EAAsCxE,GAChE,IAAMyE,EAAsB,GAAH,OAAMH,EAAN,6BAA8CI,EACrEF,GADuB,gCAEAxE,EAFA,SAGzB,OAAO2E,MAAMF,GAAqBG,MAAK,SAACC,GACtC,GAAIA,EAASC,GACX,OAAOD,EAASE,OAEhB,MAAM,IAAIhF,EAAwBC,OAKlCgF,EAAgB,SACpBhB,EACAQ,EACAxE,OACAiF,EAAU,UAAVA,OAAAA,QAAAA,IAAAA,UAAAA,IAAAA,UAAAA,GAEA,GAAsB,UAAlBjB,EAAuC,CACzC,IAAMS,EAAsB,GAAH,OAAMH,EAAN,oBAAqCI,EAC5DF,GADuB,gCAEAxE,EAFA,SAGzB,OAAO2E,MAAMF,GAAqBG,MAAK,SAACC,GACtC,GAAIA,EAASC,GACX,OAAOD,EAASE,OAEhB,MAAM,IAAIhF,EAAwBC,MAItC,IAAMyE,EAAsB,GAAH,OAAMH,EAAN,0BACtBW,EAAiB,KAAP,KADY,YAErBP,EAAYF,GAFS,4BAEuBxE,EAFvB,SAGzB,OAAO2E,MAAMF,GAAqBG,MAAK,SAACC,GACtC,GAAIA,EAASC,GACX,OAAOD,EAASE,OAEhB,MAAM,IAAIhF,EAAwBC,OAMpC0E,EAAc,SAACF,GACnB,OAAQA,GACN,IAAK,UACH,MAAO,MAET,IAAK,aACH,MAAO,OAGT,QACE,MAAO,6uKC3Db,IAAMU,EAAoD,SAAC/B,GACzD,OACEC,EAAAA,cAAAA,MAAAA,OAAAA,OAAAA,CACE+B,MAAM,KACNC,OAAO,KACPC,QAAQ,YACRC,KAAK,OACLC,MAAM,8BACFpC,GAEJC,EAAAA,cAAAA,IAAAA,CAAGoC,SAAS,2BACVpC,EAAAA,cAAAA,OAAAA,CAAMqC,EAAE,oDAAoDH,KAAK,iBACjElC,EAAAA,cAAAA,OAAAA,CAAMqC,EAAE,0CAA0CH,KAAK,iBACvDlC,EAAAA,cAAAA,OAAAA,CACEqC,EAAE,skBACFH,KAAK,kBAGTlC,EAAAA,cAAAA,OAAAA,KACEA,EAAAA,cAAAA,WAAAA,CAAUsC,GAAG,qBACXtC,EAAAA,cAAAA,OAAAA,CAAM+B,MAAM,KAAKC,OAAO,KAAKE,KAAK,cCpBtCK,EAA2D,SAACxC,GAChE,OACEC,EAAAA,cAAAA,MAAAA,OAAAA,OAAAA,CACE+B,MAAM,KACNC,OAAO,KACPC,QAAQ,YACRC,KAAK,OACLC,MAAM,8BACFpC,GAEJC,EAAAA,cAAAA,IAAAA,CAAGoC,SAAS,2BACVpC,EAAAA,cAAAA,OAAAA,CACEqC,EAAE,0RACFH,KAAK,kBAGTlC,EAAAA,cAAAA,OAAAA,KACEA,EAAAA,cAAAA,WAAAA,CAAUsC,GAAG,qBACXtC,EAAAA,cAAAA,OAAAA,CAAM+B,MAAM,KAAKC,OAAO,KAAKE,KAAK,cClBtCM,EAA2D,SAACzC,GAChE,OACEC,EAAAA,cAAAA,MAAAA,OAAAA,OAAAA,CACE+B,MAAM,KACNC,OAAO,KACPC,QAAQ,YACRC,KAAK,OACLC,MAAM,8BACFpC,GAEJC,EAAAA,cAAAA,OAAAA,CACEqC,EAAE,4GACFH,KAAK,iBAEPlC,EAAAA,cAAAA,OAAAA,CACEqC,EAAE,qRACFH,KAAK,mBCHb,SAASO,EAAT,OAAyBC,EAAAA,EAAAA,aAAcC,EAAAA,EAAAA,QAASC,EAAAA,EAAAA,QAASC,EAAAA,EAAAA,MAAU9C,EAAAA,EAAAA,EAAAA,CAAAA,eAAAA,UAAAA,UAAAA,UAC3D+C,GAAWC,EAAAA,EAAAA,QAAyB,WAEZC,EAAAA,EAAAA,WAAS,MAAhCC,EAAAA,EAAAA,GAASC,EAAAA,EAAAA,GAUhB,IAAMC,GAAmBT,GAAgBO,KAAaJ,EAEtD,OACE7C,EAAAA,cAAAA,EAAAA,SAAAA,KACEA,EAAAA,cAAAA,QAAAA,OAAAA,OAAAA,GACMD,EAAAA,CACJqD,IAAKN,EACLD,MAAOA,EACPQ,QAAS,kBAAMH,GAAW,IAC1BI,OAAQ,kBAAMJ,GAAW,OAG1BR,GACC1C,EAAAA,cAAAA,MAAAA,CAAKC,UAAU,yBACZ0C,EACC3C,EAAAA,cAAC8B,EAAD9B,CAAWC,UAAU,gCAErBD,EAAAA,cAACwC,EAADxC,CAAkBC,UAAU,iCAKjCkD,GACCnD,EAAAA,cAAAA,OAAAA,CACEC,UAAU,sDACVsD,YAjCR,WACEX,IAEAY,YAAW,WACTV,EAASW,SAAWX,EAASW,QAAQC,UACpC,OA8BG1D,EAAAA,cAACuC,EAADvC,CAAkBC,UAAU,4cC5B/B,IAAM0D,EAAW3D,EAAAA,YACtB,WAA4CoD,OAAzCV,EAAAA,EAAAA,aAAiB3C,EAAAA,EAAAA,EAAAA,CAAAA,mBAKdA,EAAM6D,aAAe,GAHZC,EAAAA,EAAXtE,UACUuE,EAAAA,EAAVnE,SACOoE,EAAAA,EAAPnE,WAG8BoD,EAAAA,EAAAA,UAAuB,CACrDzD,UAAWsE,GAAoB,GAC/BlE,SAAUmE,GAAmB,GAC7BlE,MAAOmE,GAAgB,QAHlBC,EAAAA,EAAAA,GAAUC,EAAAA,EAAAA,GAMXC,GAAanB,EAAAA,EAAAA,SAAO,QAEAC,EAAAA,EAAAA,UAAS,CAAEzD,WAAW,EAAOI,UAAU,EAAOC,OAAO,OAAxEzD,EAAAA,EAAAA,GAAOgI,EAAAA,EAAAA,QACwBnB,EAAAA,EAAAA,WAAkB,MAAjDoB,EAAAA,EAAAA,GAAaC,EAAAA,EAAAA,GAEdC,GAAmBC,EAAAA,EAAAA,cAAY,SAACC,GACpC,IAAIC,GAAU,EAEVC,GAAmB,EACrBC,GAAkB,EAClBC,GAAe,EAcjB,OAZIJ,EAAYvD,SAAS,eAAcyD,GAAmB,GACtDF,EAAYvD,SAAS,cAAa0D,GAAkB,GACpDH,EAAYvD,SAAS,WAAU2D,GAAe,IAE9CF,GAAoBC,GAAmBC,KAAcH,GAAU,GAEnEN,EAAS,CACP5E,UAAWmF,EACX/E,SAAUgF,EACV/E,MAAOgF,IAGFH,IACN,IAEGI,GAAiBN,EAAAA,EAAAA,aAAW,6BAChC,WAAOO,GAAP,gFACMC,GAAY,EAChBV,GAAe,IAEXH,EAAWT,QAJjB,CAAAuB,EAAAA,KAAAA,GAAA,aAAAA,EAAAA,KAAAA,EAAAA,EAAAA,KAAAA,GAM4BC,EAAAA,EAAAA,IAAsB,CAC1CC,OAAQnF,EAAMmF,OACd9D,YAAarB,EAAMqB,YACnB+D,YAAapF,EAAMoF,YACnBC,aAAcrF,EAAMqF,aACpB7F,UAAWyE,EAASzE,UACpBI,SAAUqE,EAASrE,SACnBC,MAAOoE,EAASpE,MAChBkF,YAAaA,EACbO,cAAetF,EAAMuF,UAAUD,gBAfvC,YAMYE,EANZ,QAkBkB7D,GAlBlB,CAAAsD,EAAAA,KAAAA,GAAA,MAkBsBD,GAAY,EAlBlCC,EAAAA,KAAAA,GAAA,mBAmBeO,EAAQC,OAAS,KAnBhC,CAAAR,EAAAA,KAAAA,GAAA,aAAAA,EAAAA,KAAAA,GAoB2BO,EAAQ5D,OApBnC,QAoBcA,EApBd,OAsBc6C,EAAyB,OAAC7C,QAAD,IAACA,GAAAA,EAAM1E,YAClC0E,EAAK1E,YAAYwI,KAAI,SAACtJ,GAAD,OAAWA,EAAMgD,SACtC,GACJuG,QAAQC,KAAKnB,GACbF,EAAiBE,GA1BzBQ,EAAAA,KAAAA,GAAA,cA4BQX,GAAe,GACftE,EAAMuF,UAAUM,QACd,IAAI9I,EAAJ,qDACgDyI,EAAQC,OADxD,YACkED,EAAQM,cA/BpF,QAAAb,EAAAA,KAAAA,GAAA,cAAAA,EAAAA,KAAAA,GAAAA,EAAAA,GAAAA,EAAAA,MAAAA,GAoCMX,GAAe,GACftE,EAAMuF,UAAUM,QAAhB7F,EAAAA,IArCN,iCAyCSgF,GAzCT,0DADgC,sDA6ChC,CAACf,IAGG8B,EAAa,SAACnD,EAAkBoD,GACpC,OAAIrD,EACEC,EAAgB,0BACR,8BAGO,KAAjBoD,EAA4B,2BACzB,IAsBT,OAnBAC,EAAAA,EAAAA,YAAU,WACR,IAAMC,EAAWzC,YAAW,WAC1B,IAAMvG,EAAcoC,EAAiC2E,GAAUyB,KAAI,SAACtJ,GAAD,OAAWA,EAAMgD,SAC9EsF,EAAUH,EAAiBrH,GAEjCiH,EAAWT,QAAUgB,IACpB,KAEH,OAAO,kBAAMyB,aAAaD,MACzB,CAAC3B,EAAkBN,KAEtBmC,EAAAA,EAAAA,qBACE/C,GACA,iBAAO,CACLyB,eAAgB,SAACuB,GAAD,OAAavB,EAAeuB,OAE9C,CAACvB,IAID7E,EAAAA,cAAAA,MAAAA,CAAKC,UAAU,cACX9D,EAAMoD,WAAapD,EAAMwD,UAAYxD,EAAMyD,QAAU8C,GACrD1C,EAAAA,cAAAA,IAAAA,CAAGsC,GAAG,qBAAqBrC,UAAU,gBAClCrB,EAA2BxB,EAAuBiJ,kBAGtDjC,GACCpE,EAAAA,cAAAA,IAAAA,CAAGsC,GAAG,sBAAsBrC,UAAU,gBACnCrB,EAA2BxB,EAAuBuB,oBAGvDqB,EAAAA,cAAAA,MAAAA,CAAKC,UAAU,4BACbD,EAAAA,cAACyC,EAADzC,CACE2C,QAASxG,EAAMoD,UACfmD,aAAcA,EACdE,QAAS,kBACPqB,GAAY,SAAC5B,GAAD,cACPA,GADO,IAEV9C,UAAW,SAGflD,KAAK,iBACLiG,GAAG,4BACHrC,UAAS,2BAAsB6F,EAAW3J,EAAMoD,UAAWyE,EAASzE,YACpE+G,aAAa,aACbC,YAAa3H,EAA2BxB,EAAuBa,gBAC/D4E,MAAOmB,EAASzE,UAChBc,SAAU,SAACmG,GAAD,OACRvC,GAAY,SAAC5B,GAAD,cACPA,GADO,IAEV9C,UAAWiH,EAAEjG,OAAOsC,eAK5B7C,EAAAA,cAAAA,MAAAA,CAAKC,UAAU,4BACbD,EAAAA,cAACyC,EAADzC,CACE2C,QAASxG,EAAMwD,SACf+C,aAAcA,EACdE,QAAS,kBAAMqB,GAAY,SAACwC,GAAD,cAAgBA,GAAhB,IAAsB9G,SAAU,SAC3DtD,KAAK,oBACLiG,GAAG,+BACHrC,UAAS,2BAAsB6F,EAAW3J,EAAMwD,SAAUqE,EAASrE,WACnE2G,aAAa,cACbC,YAAa3H,EAA2BxB,EAAuBc,mBAC/D2E,MAAOmB,EAASrE,SAChBU,SAAU,SAACmG,GAAD,OACRvC,GAAY,SAAC5B,GAAD,cACPA,GADO,IAEV1C,SAAU6G,EAAEjG,OAAOsC,eAK3B7C,EAAAA,cAAAA,MAAAA,CAAKC,UAAU,4BACbD,EAAAA,cAACyC,EAADzC,CACE2C,QAASxG,EAAMyD,MACf8C,aAAcA,EACdE,QAAS,kBAAMqB,GAAY,SAACwC,GAAD,cAAgBA,GAAhB,IAAsB7G,MAAO,SACxDvD,KAAK,kBACLiG,GAAG,6BACHrC,UAAS,2BAAsB6F,EAAW3J,EAAMyD,MAAOoE,EAASpE,QAChE0G,aAAa,QACbC,YAAa3H,EAA2BxB,EAAuBe,iBAC/D0E,MAAOmB,EAASpE,MAChBS,SAAU,SAACmG,GAAD,OACRvC,GAAY,SAAC5B,GAAD,cACPA,GADO,IAEVzC,MAAO4G,EAAEjG,OAAOsC,eAKxB7C,EAAAA,cAAAA,MAAAA,CAAKsC,GAAG,uBAAuBrC,UAAU,aACtCrB,EAA2BxB,EAAuBsJ,g4BCjNtD,IAAMC,EAAS,SAAC,OAAEC,EAAAA,EAAAA,UAAWC,EAAAA,EAAAA,aAAUC,QAAAA,OAAAA,IAAU,OAAAC,EAAShH,EAAAA,EAAAA,EAAAA,CAAAA,YAAAA,WAAAA,YAC/D,OACEC,EAAAA,cAAAA,SAAAA,OAAAA,OAAAA,CACEC,UAAS,sBAAiB2G,EAAY,uBAAyB,GAAtD,yBAAyEE,IAC9E/G,GAEH8G,0TCfP,IAAMG,EAA8D,SAACjH,GACnE,OACEC,EAAAA,cAAAA,MAAAA,OAAAA,OAAAA,CACE+B,MAAM,KACNC,OAAO,KACPC,QAAQ,YACRC,KAAK,OACLC,MAAM,8BACFpC,GAEJC,EAAAA,cAAAA,OAAAA,CACEqC,EAAE,4NACFH,KAAK,iBAEPlC,EAAAA,cAAAA,OAAAA,CAAMqC,EAAE,2BAA2BH,KAAK,mBCdxC+E,GAAyD,SAAClH,GAC9D,OACEC,EAAAA,cAAAA,MAAAA,OAAAA,OAAAA,CACE+B,MAAM,KACNC,OAAO,KACPC,QAAQ,YACRC,KAAK,OACLC,MAAM,8BACFpC,GAEJC,EAAAA,cAAAA,OAAAA,CACEqC,EAAE,4NACFH,KAAK,iBAEPlC,EAAAA,cAAAA,OAAAA,CAAMqC,EAAE,6DAA6DH,KAAK,mBCLhF,SAASgF,GAAT,OAAqBL,EAAAA,EAAAA,SAAUM,EAAAA,EAAAA,WACOnE,EAAAA,EAAAA,WAAS,MAAtCoE,EAAAA,EAAAA,GAAYC,EAAAA,EAAAA,GAEnB,OACErH,EAAAA,cAAAA,EAAAA,SAAAA,KACEA,EAAAA,cAAAA,SAAAA,CAAQC,UAAU,0BAA0BqH,QAAS,kBAAMD,GAAeD,KACxEpH,EAAAA,cAAAA,IAAAA,CAAGC,UAAU,kCAAkCkH,GAC9CC,EACCpH,EAAAA,cAACgH,EAADhH,CAAqBC,UAAU,iCAE/BD,EAAAA,cAACiH,GAADjH,CAAgBC,UAAU,kCAI7BmH,GAAcP,GCnBd,IAAMU,GAA6B,SAAC,OAAED,EAAAA,EAAAA,QAC3C,OACEtH,EAAAA,cAAAA,MAAAA,CACEC,UAAU,gCACV8B,MAAM,KACNC,OAAO,KACPC,QAAQ,YACRC,KAAK,OACLC,MAAM,6BACNmF,QAASA,GAETtH,EAAAA,cAAAA,OAAAA,CACEqC,EAAE,oVACFH,KAAK,QACLsF,OAAO,YCOTC,GAA4D,SAChE1H,GAEA,IA2H0B2H,EA3HpBC,GAAgB5E,EAAAA,EAAAA,SAAO,GACvB6E,GAAe7E,EAAAA,EAAAA,aAAuB8E,GACtCC,GAAkB/E,EAAAA,EAAAA,eAEQC,EAAAA,EAAAA,WAAS,MAAlC+E,EAAAA,EAAAA,GAAUC,EAAAA,EAAAA,QACuBhF,EAAAA,EAAAA,WAAkB,MAAnDiF,EAAAA,EAAAA,GAAcC,EAAAA,EAAAA,QACyBlF,EAAAA,EAAAA,WAAS,MAAhDmF,EAAAA,EAAAA,GAAiBC,EAAAA,EAAAA,QAEgBpF,EAAAA,EAAAA,WAAS,MAA1CN,EAAAA,EAAAA,GAAc2F,EAAAA,EAAAA,QACiBrF,EAAAA,EAAAA,eAAiB6E,MAAhD/C,EAAAA,EAAAA,GAAawD,EAAAA,EAAAA,GAEdC,EAAY,6BAAG,yFACnBF,GAAgB,GACZG,GAAY,GAEZP,EAJe,CAAAjD,EAAAA,KAAAA,GAAA,UAKb8C,EAAgBrE,QALH,CAAAuB,EAAAA,KAAAA,EAAA,aAMfoD,GAAmB,GANJpD,EAAAA,KAAAA,EAOG8C,EAAgBrE,QAAQoB,eAAeC,GAP1C,OAOf0D,EAPe,cAAAxD,EAAAA,KAAAA,GAAA,cASZwD,GAAY,EATA,QAWfA,GACF9H,EAAaC,mBAAmBZ,EAAM9D,MACtC8D,EAAMuF,UAAUmD,YACPR,IACT,UAAAL,EAAanE,eAAb,SAAsBiF,kBAGxBN,GAAmB,GAlBA,4CAAH,qDAqHlB,OA5FApC,EAAAA,EAAAA,YAAU,WACJ2B,EAAclE,UAChBkE,EAAclE,SAAU,GAExBkF,EAAAA,EAAAA,IAAa,CACXvH,YAAarB,EAAMqB,YACnBgF,QAASrG,EAAM6I,aACfzD,YAAapF,EAAMoF,YACnBC,aAAcrF,EAAMqF,aACpBC,cAAetF,EAAMuF,UAAUD,gBAE9B7D,MAAK,SAACqH,GACL,IAAMC,EAAY,SAAClM,GAAD,OAChBmM,EAAAA,EAAAA,IAAqB,CACnBnM,OAAQA,EACRwE,YAAarB,EAAMqB,YACnB+D,YAAa0D,EAAY1D,YACzBC,aAAcyD,EAAYzD,aAC1BC,cAAetF,EAAMuF,UAAUD,iBAG7B2D,EAAU,SAACpM,GAAD,OACdgF,EAAc7B,EAAM9D,KAAM8D,EAAMqB,YAAaxE,EAAQmD,EAAMkJ,iBAG7D,GAAIlJ,UAAAA,EAAM9D,KAA8B,CACtC,IAAMiN,EAAgB,QAEtB,MAAqB,OAAjBnJ,EAAMoJ,OACDL,EAAU/I,EAAMnD,QACpB4E,MAAK,SAAC4H,GAAD,OACJC,QAAQC,IAAI,CACVN,EAAQjJ,EAAMnD,QAAdoM,OAA4B,kBAAMA,EAAQE,MAC1CG,QAAQE,QAAQH,QAJf,OAOE,kBAAMC,QAAQC,IAAI,CAACN,EAAQE,GAAgBJ,EAAUI,QAGzDG,QAAQC,IAAI,CACjBN,EAAQjJ,EAAMnD,QAAdoM,OAA4B,WAE1B,IAAIQ,EAAiBN,EAIrB,MAHqB,OAAjBnJ,EAAMoJ,OAAiBK,EAAiB,QAClB,OAAjBzJ,EAAMoJ,SAAiBK,EAAiB,SAE1CR,EAAQQ,MAEjBH,QAAQE,aAAQ1B,KAIpB,OAAOwB,QAAQC,IAAI,CACjBN,EAAQjJ,EAAMnD,QACG,OAAjBmD,EAAMoJ,OACFpJ,EAAMkJ,eACJ9H,EAAmBpB,EAAMqB,YAAarB,EAAMnD,QAC5CkM,EAAU/I,EAAMnD,QAClByM,QAAQE,aAAQ1B,QAGvBrG,MAAK,SAACC,iBACCgI,EAAoB1J,EAAMkJ,eAAN,QAAAlJ,EAAA,OACtB0B,QADsB,IACtBA,GADsB,UACtBA,EAAW,UADW,aACtBiI,EAAeC,sBADO,aACW9B,EADX,QAAA9H,EAAA,OAEtB0B,QAFsB,IAEtBA,GAFsB,UAEtBA,EAAW,UAFW,aAEtBmI,EAAeC,YAFO,aAEChC,EACrBiC,EAAwB,OAACrI,QAAD,IAACA,GAAD,UAACA,EAAW,UAAZsI,IAAAA,GAACtI,EAAe2E,QAAU3E,EAAS,GAAG2E,aAAUyB,EAE9EjJ,EAAAA,EAAAA,EAAAA,GACK6C,EAAS,IADd,IAEEuI,yBAA0BP,GACvB1J,EAAMkK,QAAQpL,mBAEnByJ,EAAewB,GACf9B,GAAY,GACZjI,EAAMuF,UAAU4E,cAAc,cAtElC,OAwES,SAAC1D,GACNzG,EAAMuF,UAAUM,QAAQY,SAI7B,KAEHR,EAAAA,EAAAA,YAAU,WACHiC,GAAcI,GAAgB,KAClC,CAACJ,IAOGF,EACL/H,EAAAA,cAAAA,MAAAA,CAAKsC,GAAI7B,EAAiBR,UAAU,uBAClCD,EAAAA,cAAAA,MAAAA,CACEC,UAAS,0CACLF,EAAMoK,UAAYpK,EAAMqK,aAAe,aAAe,OAGvDrK,EAAMoK,SACPnK,EAAAA,cAAAA,MAAAA,CACEC,UAAS,6CACPF,EAAMqK,aAAe,8BAAgC,KAGtDrK,EAAMqK,cACLpK,EAAAA,cAAAA,IAAAA,CAAGC,UAAU,6BACVrB,EAA2BxB,EAAuBE,0BAGvD0C,EAAAA,cAACuH,GAADvH,CAAWsH,QAASvH,EAAMoK,WAG9BnK,EAAAA,cAAAA,MAAAA,CACEC,UAAS,oCAA+BF,EAAMqK,aAAe,cAAgB,IAC7EhH,IAAKwE,GAEL5H,EAAAA,cAAAA,MAAAA,CAAKC,UAAU,gCACbD,EAAAA,cAAAA,IAAAA,CAAGC,UAAU,kCACVF,UAAAA,EAAM9D,MAAgC8D,EAAMqK,aACzCxL,EAA2BxB,EAAuBU,iBAClDc,EAA2BxB,EAAuBE,0BAExD0C,EAAAA,cAAAA,IAAAA,CAAGC,UAAU,cACVrB,EAA2BxB,EAAuBG,0BAEnC,OAAjBwC,EAAMoJ,QACLnJ,EAAAA,cAAAA,EAAAA,SAAAA,KACEA,EAAAA,cAAAA,QAAAA,CAAOC,UAAU,iCAAiCoK,QAAQ,yBACvDzL,EAA2BxB,EAAuBkN,wBAGrDtK,EAAAA,cAACF,EAADE,CACEI,SAAU,EACVF,QAAS+H,EACT5H,SAAU,SAACH,GACTgI,EAAgBhI,MAGnB+H,GACCjI,EAAAA,cAAC2D,EAAD3D,OAAAA,OAAAA,CAAU0C,aAAcA,EAAcU,IAAK0E,GAAqB/H,MAKxEC,EAAAA,cAAAA,MAAAA,CAAKC,UAAU,gCACbD,EAAAA,cAACkH,GAADlH,CACEmH,MAAOvI,EACLxB,EAAuBmN,+BAGzBvK,EAAAA,cAAAA,MAAAA,CACEC,UAAU,yBACVuK,wBAAyB,CACvBC,OAAQ,GAAF,OAAK7L,EACTxB,EAAuBsN,8BAMf,OAAjB3K,EAAMoJ,QACLnJ,EAAAA,cAAAA,MAAAA,CAAKC,UAAU,gCACbD,EAAAA,cAACkH,GAADlH,CACEmH,MAAOvI,EAA2BxB,EAAuBuN,qBAEzD3K,EAAAA,cAAAA,MAAAA,CACEC,UAAU,2BACVuK,wBAAyB,CACvBC,OAAQ,GAAF,OAAK7L,EACTxB,EAAuB4M,kCASvChK,EAAAA,cAAAA,MAAAA,CAAKC,UAAU,+BACbD,EAAAA,cAAAA,IAAAA,CAAGC,UAAU,sCACVF,UAAAA,EAAM9D,KACL+D,EAAAA,cAAAA,OAAAA,CACEwK,wBAAyB,CACvBC,OAAQ,GAAF,OAAK7L,EACTxB,EAAuBI,4BADnB,aAMVwC,EAAAA,cAAAA,OAAAA,CACEwK,wBAAyB,CACvBC,OAAQ,GAAF,QAzGM/C,EA0GV9I,EAA2BxB,EAAuBwN,gCAxGzDlD,EAAKmD,QADE,wBACa9K,EAAM+K,YAuGf,aAOZ9K,EAAAA,cAAAA,IAAAA,CACEO,OAAO,SACPwK,IAAI,aACJ9K,UAAU,0CACV+K,KAAMjL,EAAMkK,QAAQgB,mBAAmBD,KACvC1D,QACEvH,EAAMuF,UAAU4F,2BACf,SAAC1E,GACAA,EAAE2E,iBACFpL,EAAMuF,UAAU4F,8BAIpBlL,EAAAA,cAAAA,OAAAA,KACGpB,EACCxB,EAAuBK,0CAK/BuC,EAAAA,cAAAA,MAAAA,CAAKC,UAAU,mCACbD,EAAAA,cAAC2G,EAAD3G,CAAQsH,QAhOK,WACnBvH,EAAMuF,UAAU8F,gBA+NqBC,MAAO,CAAEC,SAAU,SAAWxE,QAAQ,MAClElI,EAA2BxB,EAAuBS,wBAErDmC,EAAAA,cAAC2G,EAAD3G,CACEsH,QAASiB,EACTgD,SAAUpD,EACVkD,MAAO,CAAEC,SAAU,SACnB1E,WAAS,EACTE,QAAQ,MAEPlI,EAA2BxB,EAAuBQ,2BAKzD,yBCrSN,IAAI4N,EAAwBjP,OAAOiP,sBAC/BC,EAAiBlP,OAAOE,UAAUgP,eAClCC,EAAmBnP,OAAOE,UAAUkP,qBAExC,SAASC,EAASC,GACjB,GAAY,OAARA,QAAwBhE,IAARgE,EACnB,MAAM,IAAIC,UAAU,yDAGrB,OAAOvP,OAAOsP,GA+CfE,EAAOC,QA5CP,WACC,IACC,IAAKzP,OAAO0P,OACX,OAAO,EAMR,IAAIC,EAAQ,IAAIC,OAAO,OAEvB,GADAD,EAAM,GAAK,KACkC,MAAzC3P,OAAO6P,oBAAoBF,GAAO,GACrC,OAAO,EAKR,IADA,IAAIG,EAAQ,GACHC,EAAI,EAAGA,EAAI,GAAIA,IACvBD,EAAM,IAAMF,OAAOI,aAAaD,IAAMA,EAKvC,GAAwB,eAHX/P,OAAO6P,oBAAoBC,GAAO5G,KAAI,SAAU+G,GAC5D,OAAOH,EAAMG,MAEHC,KAAK,IACf,OAAO,EAIR,IAAIC,EAAQ,GAIZ,MAHA,uBAAuBC,MAAM,IAAIC,SAAQ,SAAUC,GAClDH,EAAMG,GAAUA,KAGf,yBADEtQ,OAAOuQ,KAAKvQ,OAAO0P,OAAO,GAAIS,IAAQD,KAAK,IAM9C,MAAOM,GAER,OAAO,GAIQC,GAAoBzQ,OAAO0P,OAAS,SAAU1L,EAAQ2E,GAKtE,IAJA,IAAI+H,EAEAC,EADAC,EAAKvB,EAASrL,GAGT6M,EAAI,EAAGA,EAAIC,UAAU5N,OAAQ2N,IAAK,CAG1C,IAAK,IAAItO,KAFTmO,EAAO1Q,OAAO8Q,UAAUD,IAGnB3B,EAAe6B,KAAKL,EAAMnO,KAC7BqO,EAAGrO,GAAOmO,EAAKnO,IAIjB,GAAI0M,EAAuB,CAC1B0B,EAAU1B,EAAsByB,GAChC,IAAK,IAAIX,EAAI,EAAGA,EAAIY,EAAQzN,OAAQ6M,IAC/BZ,EAAiB4B,KAAKL,EAAMC,EAAQZ,MACvCa,EAAGD,EAAQZ,IAAMW,EAAKC,EAAQZ,MAMlC,OAAOa,oFCtFD,SAASI,EAAgBC,GAC9B,IAAIC,EAAOD,EAAKC,KACZC,EAAYF,EAAKE,UACjB7G,EAAW2G,EAAK3G,SAChBhE,GAAQ8K,EAAAA,EAAAA,UAAQ,WAClB,MAAO,CACLF,KAAMA,EACNC,UAAWA,KAEZ,CAACD,EAAMC,IACV,OAAOE,EAAAA,EAAAA,eAAcC,EAAAA,GAAAA,SAAsB,CACzChL,MAAOA,GACNgE,2BCbL,IAAIiH,EAAYC,MAAQA,KAAKD,UAAa,WAStC,OARAA,EAAWvR,OAAO0P,QAAU,SAAS+B,GACjC,IAAK,IAAIZ,EAAGd,EAAI,EAAGE,EAAIa,UAAU5N,OAAQ6M,EAAIE,EAAGF,IAE5C,IAAK,IAAI2B,KADTb,EAAIC,UAAUf,GACO/P,OAAOE,UAAUgP,eAAe6B,KAAKF,EAAGa,KACzDD,EAAEC,GAAKb,EAAEa,IAEjB,OAAOD,GAEJF,EAASI,MAAMH,KAAMV,YAE5Bc,EAAgBJ,MAAQA,KAAKI,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIC,WAAY,OAAOD,EAClC,IAAIE,EAAS,GACb,GAAW,MAAPF,EAAa,IAAK,IAAIG,KAAKH,EAAS7R,OAAOkP,eAAe6B,KAAKc,EAAKG,KAAID,EAAOC,GAAKH,EAAIG,IAE5F,OADAD,EAAM,QAAcF,EACbE,GAEPE,EAAmBT,MAAQA,KAAKS,iBAAoB,SAAUJ,GAC9D,OAAQA,GAAOA,EAAIC,WAAcD,EAAM,CAAE,QAAWA,IAExD7R,OAAOkS,eAAezC,EAAS,aAAc,CAAEnJ,OAAO,IACtD,IAAI6L,EAAUP,EAAaQ,EAAQ,QAC/BC,EAAWJ,EAAgBG,EAAQ,QACnCE,EAAkBL,EAAgBG,EAAQ,QAC1CG,EAAUH,EAAQ,OAClBI,EAAgB,SAAUhP,GAC1B,IAAIiP,EAAiBjP,EAAMiP,eAAgBC,EAAclP,EAAMkP,YAAapI,EAAW9G,EAAM8G,SAAUqI,EAAiBnP,EAAMmP,eAAgBC,EAAYpP,EAAMoP,UAAWC,EAAarP,EAAMqP,WAAYC,EAAYtP,EAAMsP,UAAWC,EAAavP,EAAMuP,WAAYC,EAAWxP,EAAMwP,SAAUC,EAAazP,EAAMyP,WAAYC,EAAY1P,EAAM0P,UAAWC,EAAe3P,EAAM2P,aAAcC,EAAkB5P,EAAM4P,gBAAiBC,EAAkB7P,EAAM6P,gBAAiBC,EAAmB9P,EAAM8P,iBAAkBC,EAAmB/P,EAAM+P,iBAAkBC,EAAmBhQ,EAAMgQ,iBAAkBC,EAAiBjQ,EAAMiQ,eAAgBC,EAAMlQ,EAAMkQ,IAAKC,EAAYnQ,EAAMmQ,UAAWC,EAAqBpQ,EAAMoQ,mBAAoBC,EAAarQ,EAAMqQ,WAAYC,EAAOtQ,EAAMsQ,KAE/vBC,EAAgB5B,EAAQ3L,OAAO,MAE/BwN,EAAoB7B,EAAQ3L,OAAO,MAEnCyN,EAA+B,WAC/B,IAAKxB,EACD,OAAO,KAEX,IAAIyB,EAAgB,EAEhBnO,EAAK+N,EAAO,EAAI,EASpB,OARA3B,EAAQgC,SAAS9D,QAAQ/F,GAAU,SAAU8J,GACrCjC,EAAQkC,eAAeD,KACnBA,EAAM7R,MAAQkQ,IACdyB,EAAgBnO,GAEpBA,GAAM,MAGPmO,GASPI,EAAgB,WACkB,OAA9BN,EAAkB9M,UAClB8M,EAAkB9M,QAAQqN,SAAQ,GAAM,GACxCP,EAAkB9M,QAAU,OAIhCsN,EAAc,WACVT,EAAc7M,SAAyC,OAA9B8M,EAAkB9M,UAC3C8M,EAAkB9M,QAAU,IAAImL,EAASoC,QAAQV,EAAc7M,QAASoL,EAAgBmC,QAAQ,GAAIjR,MA0D5G,OAhCA2O,EAAQ1I,WAAU,WACd+K,IACA,IAAIE,EAAeT,IAInB,OAHkC,OAA9BD,EAAkB9M,SAAqC,OAAjBwN,GACtCV,EAAkB9M,QAAQyN,QAAQD,GAE/B,WAAc,OAAOJ,OAC7B,IAEHnC,EAAQ1I,WAAU,WACd,GAAkC,OAA9BuK,EAAkB9M,QAAkB,CACpC,GAAIkM,EAhCRkB,IACAE,SAkCS,GAAIZ,EAAoB,CA9BC,OAA9BI,EAAkB9M,SAClB8M,EAAkB9M,QAAQ0N,SA+BtB,IAAIC,EAAYb,EAAkB9M,QAAQ4N,OAAO5R,OACjD,GAAI2R,GAAab,EAAkB9M,QAAQ6N,YAAa,CACpD,IAAIC,EAAQC,KAAKC,IAAIL,EAAY,EAAG,GACpCb,EAAkB9M,QAAQyN,QAAQK,IAG1C,IAAIN,EAAeT,IACE,OAAjBS,GACAV,EAAkB9M,QAAQyN,QAAQD,OAI9CvC,EAAQ1I,WAAU,WArEM,IAAU0L,EAAAA,EAsEZnB,EAAkB9M,QArEX,oBAAd0L,GACPA,EAAUuC,KAqEf,CAACnB,IAEC1J,GAAaoI,GAAgBQ,EAI7BX,EAAQ6C,iBAAiB9K,GAItB6H,EAAQsC,QAAQpD,cAAcqB,EAAa,CAAEhP,UAAWiP,EAAgB0C,IAAK3B,GAAO,MAAO7M,IAAKkN,GACpGf,GAAYC,GAAcQ,GAAkBA,EAAejQ,GAC3D2O,EAAQsC,QAAQpD,cAAc6B,EAAW,CAAExP,UAAWyP,GAAgBhB,EAAQgC,SAASjL,IAAIoB,GArD3E,SAAUL,GAC1B,IAAKsI,EAAQ+C,eAAerL,GACxB,OAAO,KAEX,IAAIsL,EAAkB,CAAC1B,EAAY5J,EAAEzG,MAAME,WAI3C,OAHIoP,GACAyC,EAAgBpS,KAAK,qBAElBgP,EAAQqD,aAAavL,EAAGsH,EAASA,EAAS,GAAItH,EAAEzG,OAAQ,CAAEE,UAAW6R,EAAgBrF,KAAK,KAAKjN,cA8CtG8P,GAAcA,EAAW0C,IAAMnC,GAAoBA,EAAiB9P,GACpEmQ,GAAaA,EAAU8B,IAAMpC,GAAmBA,EAAgB7P,GAChEqP,GAAcA,EAAW6C,QAAUlC,GAAoBA,EAAiBhQ,GACxEqP,GAAcA,EAAW8C,QAAUpC,GAAoBA,EAAiB/P,KATxE2F,QAAQyM,KAAK,mEACN,MALA,MAgBfpD,EAAcqD,aAAe,CACzBlD,eAAgB,mBAChBQ,aAAc,iBACdU,WAAY,eACZnB,YAAa,MACbQ,UAAW,MACXG,gBAAiB,SAAUyC,GACvB,IAAInC,EAAYmC,EAAGnC,UACnB,OAAOA,EAAYxB,EAAQsC,QAAQpD,cAAc,MAAO,CAAE3N,UAAW6O,EAAQwD,WAAWpC,EAAU8B,MAAS,MAE/GnC,iBAAkB,SAAUwC,GACxB,IAAI/C,EAAa+C,EAAG/C,WACpB,OAAOA,EAAaZ,EAAQsC,QAAQpD,cAAc,MAAO,CAAE3N,UAAW6O,EAAQwD,WAAWhD,EAAW0C,MAAS,MAEjHlC,iBAAkB,SAAUuC,GACxB,IAAIjD,EAAaiD,EAAGjD,WACpB,OAAOA,EAAaV,EAAQsC,QAAQpD,cAAc,MAAO,CAAE3N,UAAW6O,EAAQwD,WAAWlD,EAAW8C,UAAa,MAErHnC,iBAAkB,SAAUsC,GACxB,IAAIjD,EAAaiD,EAAGjD,WACpB,OAAOA,EAAaV,EAAQsC,QAAQpD,cAAc,MAAO,CAAE3N,UAAW6O,EAAQwD,WAAWlD,EAAW6C,UAAa,MAErHjC,eAAgB,SAAUqC,GACtB,IAAI7C,EAAa6C,EAAG7C,WACpB,OAAOA,EAAcd,EAAQsC,QAAQpD,cAAc,MAAO,CAAE3N,UAAW6O,EAAQwD,WAAW9C,EAAWwC,IAAK,uBAAwBxC,EAAW3M,QAAY,OAGjKkM,EAAcwD,YAAc,gBAC5BvG,EAAAA,QAAkB+C,yBCzKlB,IAAIP,EAAmBT,MAAQA,KAAKS,iBAAoB,SAAUJ,GAC9D,OAAQA,GAAOA,EAAIC,WAAcD,EAAM,CAAE,QAAWA,IAExD7R,OAAOkS,eAAezC,EAAS,aAAc,CAAEnJ,OAAO,IACtD,IAAI2P,EAAkBhE,EAAgBG,EAAQ,QAE9C3C,EAAAA,QAAkBwG,EAAgBxB,+BCNlCzU,OAAOkS,eAAezC,EAAS,aAAc,CAAEnJ,OAAO,IACtD,IAAI6L,EAAUC,EAAQ,OACtB3C,EAAQsG,WAAa,SAAUN,GAC3B,MAAkB,kBAAPA,EACAA,EACFrF,MAAM,KACNF,KAAK,KACLjN,OAEAwS,aAAcS,YACZT,EAAG/R,UAEP,IAEX+L,EAAQ2F,iBAAmB,SAAU9K,GACjC,IAAIpC,GAAU,EAWd,OAVIiO,MAAMC,QAAQ9L,GACd6H,EAAQgC,SAAS9D,QAAQ/F,GAAU,SAAU8J,GACpCjC,EAAQkC,eAAeD,KACxBlM,GAAU,MAKlBA,EAAUiK,EAAQkC,eAAe/J,GAE9BpC,GAEXuH,EAAQ6F,eAAiB,SAAUe,GAC/B,OAAOlE,EAAQkC,eAAegC,KACD,kBAAjBA,EAAQ3W,MACY,oBAAjB2W,EAAQ3W,MACS,kBAAjB2W,EAAQ3W,OAE3B+P,EAAQ6G,kBAAoB,SAAUC,EAASC,GAE3C,IADA,IAAIC,GAAkB,EACb1G,EAAI,EAAGA,EAAIwG,EAAQrT,OAAQ6M,IAChC,GAAIwG,EAAQxG,GAAGjQ,OAAS0W,EAAY,CAChCC,GAAkB,EAClB,MAGR,OAAOA,0BC1CX,IAAIC,EAAalF,MAAQA,KAAKkF,WAAe,WACzC,IAAIC,EAAgB,SAAU7Q,EAAG8Q,GAI7B,OAHAD,EAAgB3W,OAAOC,gBAClB,CAAE4W,UAAW,cAAgBV,OAAS,SAAUrQ,EAAG8Q,GAAK9Q,EAAE+Q,UAAYD,IACvE,SAAU9Q,EAAG8Q,GAAK,IAAK,IAAIlF,KAAKkF,EAAO5W,OAAOE,UAAUgP,eAAe6B,KAAK6F,EAAGlF,KAAI5L,EAAE4L,GAAKkF,EAAElF,KACzFiF,EAAc7Q,EAAG8Q,IAE5B,OAAO,SAAU9Q,EAAG8Q,GAEhB,SAASE,IAAOtF,KAAKuF,YAAcjR,EADnC6Q,EAAc7Q,EAAG8Q,GAEjB9Q,EAAE5F,UAAkB,OAAN0W,EAAa5W,OAAOgX,OAAOJ,IAAME,EAAG5W,UAAY0W,EAAE1W,UAAW,IAAI4W,IAV1C,GAazCG,EAAmBzF,MAAQA,KAAKyF,kBAAqBjX,OAAOgX,OAAU,SAASE,EAAGC,EAAGnF,EAAGoF,QAC7E9L,IAAP8L,IAAkBA,EAAKpF,GAC3BhS,OAAOkS,eAAegF,EAAGE,EAAI,CAAEC,YAAY,EAAMC,IAAK,WAAa,OAAOH,EAAEnF,OAC1E,SAASkF,EAAGC,EAAGnF,EAAGoF,QACT9L,IAAP8L,IAAkBA,EAAKpF,GAC3BkF,EAAEE,GAAMD,EAAEnF,KAEVuF,EAAsB/F,MAAQA,KAAK+F,qBAAwBvX,OAAOgX,OAAU,SAASE,EAAGM,GACxFxX,OAAOkS,eAAegF,EAAG,UAAW,CAAEG,YAAY,EAAM/Q,MAAOkR,KAC9D,SAASN,EAAGM,GACbN,EAAC,QAAcM,IAEf5F,EAAgBJ,MAAQA,KAAKI,cAAiB,SAAUC,GACxD,GAAIA,GAAOA,EAAIC,WAAY,OAAOD,EAClC,IAAIE,EAAS,GACb,GAAW,MAAPF,EAAa,IAAK,IAAIG,KAAKH,EAAe,YAANG,GAAmBhS,OAAOE,UAAUgP,eAAe6B,KAAKc,EAAKG,IAAIiF,EAAgBlF,EAAQF,EAAKG,GAEtI,OADAuF,EAAmBxF,EAAQF,GACpBE,GAEP0F,EAAkBjG,MAAQA,KAAKiG,gBAAmB,WAClD,IAAK,IAAI5G,EAAI,EAAGd,EAAI,EAAG2H,EAAK5G,UAAU5N,OAAQ6M,EAAI2H,EAAI3H,IAAKc,GAAKC,UAAUf,GAAG7M,OACxE,IAAIyU,EAAIxB,MAAMtF,GAAImB,EAAI,EAA3B,IAA8BjC,EAAI,EAAGA,EAAI2H,EAAI3H,IACzC,IAAK,IAAI6H,EAAI9G,UAAUf,GAAI8H,EAAI,EAAGC,EAAKF,EAAE1U,OAAQ2U,EAAIC,EAAID,IAAK7F,IAC1D2F,EAAE3F,GAAK4F,EAAEC,GACjB,OAAOF,GAEX3X,OAAOkS,eAAezC,EAAS,aAAc,CAAEnJ,OAAO,IACtD,IAAI7C,EAAQmO,EAAaQ,EAAQ,QAC7BG,EAAUH,EAAQ,OAClB2F,EAAU3F,EAAQ,OAClB4F,EAAgB,CAAC,aAAc,UAAW,IAAK,UAC/CC,EAAgB,CAAC,YAAa,YAAa,IAAK,YAChDC,EAAuB,SAAUC,GAEjC,SAASD,EAAM1U,GACX,IAAI3D,EAAQsY,EAAOpH,KAAKS,KAAMhO,IAAUgO,KA+XxC,GA9XA3R,EAAMuY,SAAW3U,EAAM4U,YACvBxY,EAAMyY,UAAY,GAClBzY,EAAM0Y,SAAW,GACjB1Y,EAAM2Y,MAAQ,CACVC,gBAAiB,EAAE,GAAI,GACvBC,mBAAoB,EACpBC,cAAe,IAAIxC,MAAMtW,EAAM2D,MAAMoV,OAAO1V,QAAQyC,KAAK,GAAGuD,KAAI,SAAUuI,EAAG1B,GAAK,OAAOA,KACzF8I,WAAW,EACXC,YAAa,IAEjBjZ,EAAMkZ,WAAa,WACf,IAAIjD,EAAKjW,EAAM2D,MAAOwV,EAAYlD,EAAGkD,UAAWJ,EAAS9C,EAAG8C,OAAQK,EAAMnD,EAAGmD,IAAK/D,EAAMY,EAAGZ,IACvFgE,EAAerZ,EAAMuY,SAASlR,QAC9BiS,EAAYD,EAAaE,wBACzBC,EAAe9G,EAAQ+G,oBAAoBJ,GAC/C,OAAOrZ,EAAM0Z,YAAYrQ,KAAI,SAAUsQ,EAAOxE,GAC1C,IAAIyE,EAAe,CAAEC,EAAG,EAAGC,EAAG,GAC1BC,EAAYJ,EAAMJ,wBAClBS,EAAetH,EAAQuH,UAAUN,GACrC,OAAQR,GACJ,KAAKjB,EAAQgC,UAAUC,MAOnB,OANAP,EAAaC,GAA+C,GAA1CG,EAAaI,KAAOZ,EAAaY,MACnDR,EAAaE,GACyD,IAAhEC,EAAUnU,OAAS0T,EAAU1T,QAAU,EAAI4T,EAAaa,KAC9DT,EAAaC,GACTP,EAAU3T,MAAQ+M,EAAQ4H,cAAcvB,EAAO5D,GAAQiE,EAAK/D,GACxD0E,EAAUpU,MAAQ,EACnBiU,EACX,KAAK1B,EAAQgC,UAAUK,KAQnB,OAPAX,EAAaC,GAAiD,GAA5CG,EAAaQ,MAAQhB,EAAagB,OACpDZ,EAAaE,GACyD,IAAhEC,EAAUnU,OAAS0T,EAAU1T,QAAU,EAAI4T,EAAaa,KAC9DT,EAAaC,GACTP,EAAU3T,MACN2T,EAAU3T,MAAQ+M,EAAQ4H,cAAcvB,EAAO5D,GAAQiE,EAAK/D,GAC5D0E,EAAUpU,MAAQ,EACnBiU,EACX,KAAK1B,EAAQgC,UAAUO,GAWnB,OAVAb,EAAaC,GAIJ,IAHHE,EAAUpU,MAAQ2T,EAAU3T,OAAS,EACnCqU,EAAaI,KACbZ,EAAaY,MAErBR,EAAaE,GAAKN,EAAaY,KAC/BR,EAAaE,GACTR,EAAU1T,OACN0T,EAAU1T,OAAS8M,EAAQ4H,cAAcvB,EAAO5D,GAAQiE,EAAK/D,GAC7D0E,EAAUnU,OAAS,EACpBgU,EACX,KAAK1B,EAAQgC,UAAUQ,KAUnB,OATAd,EAAaC,GAIJ,IAHHE,EAAUpU,MAAQ2T,EAAU3T,OAAS,EACnCqU,EAAaI,KACbZ,EAAaY,MAErBR,EAAaE,GAAKN,EAAaY,KAC/BR,EAAaE,GACTR,EAAU1T,OAAS8M,EAAQ4H,cAAcvB,EAAO5D,GAAQiE,EAAK/D,GACzD0E,EAAUnU,OAAS,EACpBgU,EACX,QACI,OAAOlH,EAAQiI,kBAAkBxB,QAIjDnZ,EAAM0Z,UAAY,WACd,OAAI1Z,EAAMuY,UAAYvY,EAAMuY,SAASlR,QAC1BiP,MAAMzF,KAAK7Q,EAAMuY,SAASlR,QAAQoD,UAAUmQ,QAAO,SAAUhF,GAChE,OAAOA,EAAGiF,aAAa,qBAG/BvR,QAAQyM,KAAK,6GACN,KAEX/V,EAAM8a,eAAiB,SAAU1Q,GAC7B,OAAOpK,EAAM0Z,YAAYqB,WAAU,SAAUxG,GAAS,OAAOA,IAAUnK,EAAEjG,QAAUoQ,EAAMyG,SAAS5Q,EAAEjG,YAExGnE,EAAMib,eAAiB,SAAU7Q,GAC7B1F,SAASwW,iBAAiB,YAAalb,EAAMmb,gBAAiB,CAC1DC,SAAS,IAEb1W,SAASwW,iBAAiB,WAAYlb,EAAMqb,UAAW,CACnDD,SAAS,IAEb1W,SAASwW,iBAAiB,cAAelb,EAAMqb,UAAW,CACtDD,SAAS,KAGjBpb,EAAMsb,eAAiB,SAAUlR,GAC7B1F,SAASwW,iBAAiB,YAAalb,EAAMub,iBAC7C7W,SAASwW,iBAAiB,UAAWlb,EAAMqb,YAE/Crb,EAAMwb,iBAAmB,SAAUpR,GAC/B,IAAI6L,EACJ,GAAiB,IAAb7L,EAAEqR,OAKN,GAHArR,EAAEsR,UACFtR,EAAE2E,iBACF/O,EAAMsb,eAAelR,EAAEuR,aACnB3b,EAAM2D,MAAMoV,OAAO1V,OAAS,GAAKrD,EAAM2D,MAAMiY,eAAgB,CAC7D,GAAI5b,EAAMyY,UAAUoD,MAAK,SAAUC,GAAY,IAAI7F,EAAI,OAAmC,QAA3BA,EAAK6F,EAASzU,eAA4B,IAAP4O,OAAgB,EAASA,EAAG+E,SAAS5Q,EAAEjG,WACrI,OAEJnE,EAAM+b,SAAS,CACXnD,gBAAiB,CAACxO,EAAE4R,QAAS5R,EAAE6R,WAChC,WAAc,OAAOjc,EAAMkc,OAAO9R,EAAE4R,QAAS5R,EAAE6R,gBAEjD,CAED,IAAIpD,EAAoBnG,EAAQyJ,qBAAqBnc,EAAMyY,UAAUpP,KAAI,SAAUuI,GAAK,OAAOA,EAAEvK,WAAa+C,EAAE4R,QAAS5R,EAAE6R,QAASjc,EAAM2D,MAAMwV,WAE1F,QAArDlD,EAAKjW,EAAMyY,UAAUI,GAAmBxR,eAA4B,IAAP4O,GAAyBA,EAAG3O,QAC1FtH,EAAM+b,SAAS,CACXlD,kBAAmBA,IACpB,WAAc,OAAO7Y,EAAMkc,OAAO9R,EAAE4R,QAAS5R,EAAE6R,cAG1Djc,EAAMoc,SAAW,WACb1J,EAAQ2J,gBAAgBrc,EAAM0Z,YAAa1Z,EAAMkZ,aAAclZ,EAAM2D,MAAMkQ,KAC3E7T,EAAMsc,wBAEVtc,EAAMuc,kBAAoB,SAAUnS,GAChC,IAAI6L,EAGJ,GAFA7L,EAAEsR,UACF1b,EAAMib,eAAe7Q,EAAEuR,aACnB3b,EAAM2D,MAAMoV,OAAO1V,OAAS,GAAKrD,EAAM2D,MAAMiY,eAAgB,CAC7D,GAAI5b,EAAMyY,UAAUoD,MAAK,SAAUC,GAAY,IAAI7F,EAAI,OAAmC,QAA3BA,EAAK6F,EAASzU,eAA4B,IAAP4O,OAAgB,EAASA,EAAG+E,SAAS5Q,EAAEjG,WACrI,OAEJnE,EAAM+b,SAAS,CACXnD,gBAAiB,CAACxO,EAAEoS,QAAQ,GAAGR,QAAS5R,EAAEoS,QAAQ,GAAGP,WACtD,WAAc,OAAOjc,EAAMkc,OAAO9R,EAAEoS,QAAQ,GAAGR,QAAS5R,EAAEoS,QAAQ,GAAGP,gBAEvE,CAED,IAAIpD,EAAoBnG,EAAQyJ,qBAAqBnc,EAAMyY,UAAUpP,KAAI,SAAUuI,GAAK,OAAOA,EAAEvK,WAAa+C,EAAEoS,QAAQ,GAAGR,QAAS5R,EAAEoS,QAAQ,GAAGP,QAASjc,EAAM2D,MAAMwV,WAEhH,QAArDlD,EAAKjW,EAAMyY,UAAUI,GAAmBxR,eAA4B,IAAP4O,GAAyBA,EAAG3O,QAC1FtH,EAAM+b,SAAS,CACXlD,kBAAmBA,IACpB,WAAc,OAAO7Y,EAAMkc,OAAO9R,EAAEoS,QAAQ,GAAGR,QAAS5R,EAAEoS,QAAQ,GAAGP,cAGhFjc,EAAMyc,oBAAsB,SAAUrS,GAClC,IAAIpK,EAAM2D,MAAMwL,SAAhB,CAEA,IAAIuN,EAAUhK,EAAQiK,aAAavS,GACnC,GAAKsS,GAAwB,IAAbtS,EAAEqR,OAAlB,CAEA,IAAItG,EAAQnV,EAAM8a,eAAe1Q,IAClB,IAAX+K,IAEAuH,EACA1c,EAAMib,eAAe7Q,GAGrBpK,EAAMsb,eAAelR,GAEzBpK,EAAM+b,SAAS,CACXlD,kBAAmB1D,EACnB2D,cAAe9Y,EAAM2Y,MAAMG,cAAczP,KAAI,SAAUuI,EAAG1B,GACtD,OAAIA,IAAMiF,EACCC,KAAKC,IAAIvD,MAAMsD,KAAMpV,EAAM2Y,MAAMG,eAErClH,GAAK5R,EAAM2Y,MAAMG,cAAc3D,GAASvD,EAAIA,EAAI,WAInE5R,EAAM4c,YAAc,SAAUxS,GAC1BA,EAAE2E,iBACF/O,EAAMkc,OAAO9R,EAAE4R,QAAS5R,EAAE6R,UAE9Bjc,EAAM6c,YAAc,SAAUzS,GAC1BA,EAAE2E,iBACF/O,EAAMkc,OAAO9R,EAAEoS,QAAQ,GAAGR,QAAS5R,EAAEoS,QAAQ,GAAGP,UAEpDjc,EAAM8c,UAAY,SAAU1S,GACxB,IAAI6L,EAAKjW,EAAM2D,MAAOoV,EAAS9C,EAAG8C,OAAQ9U,EAAWgS,EAAGhS,SAAU8Y,EAAO9G,EAAG8G,KAAMlJ,EAAMoC,EAAGpC,IAAKsF,EAAYlD,EAAGkD,UAC3GH,EAAYhZ,EAAM2Y,MAAMK,UACxB7D,EAAQnV,EAAM8a,eAAe1Q,EAAEuR,aAC/BqB,EAAWnJ,GAAOsF,IAAcjB,EAAQgC,UAAUK,MAAQpB,IAAcjB,EAAQgC,UAAUQ,MACvF,EACD,GACS,IAAXvF,IAEAgD,EAActT,SAASuF,EAAE1H,MACzB0H,EAAE2E,iBACF/O,EAAM+b,SAAS,CACXlD,kBAAmB1D,EACnB6D,WAAW,IAEf/U,EAASyO,EAAQuK,UAAUlE,EAAQ5D,EAAOnV,EAAMkd,eAAenE,EAAO5D,GAAS6H,GAAsB,WAAV5S,EAAE1H,IAA0B,GAAPqa,EAAYA,GAAO5H,MAE9HiD,EAAcvT,SAASuF,EAAE1H,MAC9B0H,EAAE2E,iBACF/O,EAAM+b,SAAS,CACXlD,kBAAmB1D,EACnB6D,WAAW,IAEf/U,EAASyO,EAAQuK,UAAUlE,EAAQ5D,EAAOnV,EAAMkd,eAAenE,EAAO5D,GAClE6H,GAAsB,aAAV5S,EAAE1H,IAA4B,GAAPqa,EAAYA,GAAO5H,MAE3C,QAAV/K,EAAE1H,IACP1C,EAAM+b,SAAS,CAAElD,mBAAoB,IAAK,WAElCG,GACAhZ,EAAMmd,uBAKVnE,GACAhZ,EAAMmd,sBAIlBnd,EAAMod,QAAU,SAAUhT,GACtB,IAAI4O,EAAYhZ,EAAM2Y,MAAMK,UAC5BhZ,EAAM+b,SAAS,CACXlD,mBAAoB,IACrB,WACKG,GACAhZ,EAAMmd,wBAIlBnd,EAAMkc,OAAS,SAAUF,EAASC,GAC9B,IAAIhG,EAAKjW,EAAM2Y,MAAOE,EAAoB5C,EAAG4C,kBAAmBD,EAAkB3C,EAAG2C,gBACjFyE,EAAKrd,EAAM2D,MAAOwV,EAAYkE,EAAGlE,UAAWC,EAAMiE,EAAGjE,IAAK/D,EAAMgI,EAAGhI,IAAKpR,EAAWoZ,EAAGpZ,SAAU8U,EAASsE,EAAGtE,OAAQgE,EAAOM,EAAGN,KAAMlJ,EAAMwJ,EAAGxJ,IACjJ,IAA2B,IAAvBgF,IACwB,IAAxBD,EAAgB,KACQ,IAAxBA,EAAgB,GAChB,OAAO,KACX,IAAIS,EAAerZ,EAAMuY,SAASlR,QAElC,IAAKgS,EACD,OAAO,KACX,IAAIC,EAAYD,EAAaE,wBACzB+D,EAAc5K,EAAQ6K,WAAWpE,GAC/BG,EAAU1T,OACV0T,EAAU3T,MAChB,IAA4B,IAAxBiT,EAAgB,KAAqC,IAAxBA,EAAgB,GAAW,CAExD,IAAI4E,EAAKxB,EAAUpD,EAAgB,GAC/B6E,EAAKxB,EAAUrD,EAAgB,GAE/B8E,EAAa,EACjB,OAAQvE,GACJ,KAAKjB,EAAQgC,UAAUC,MACvB,KAAKjC,EAAQgC,UAAUK,KACnBmD,EAAcF,EAAKF,GAAgBjI,EAAM+D,GACzC,MACJ,KAAKlB,EAAQgC,UAAUQ,KACvB,KAAKxC,EAAQgC,UAAUO,GACnBiD,EAAcD,EAAKH,GAAgBjI,EAAM+D,GACzC,MACJ,QACI1G,EAAQiI,kBAAkBxB,GAMlC,GAHItF,IACA6J,IAAe,GAEftI,KAAKuI,IAAID,IAAeX,EAAO,EAAG,CAElC,IAAK,IAAI7M,EAAI,EAAGA,EAAIlQ,EAAMyY,UAAUpV,OAAQ6M,IAAK,CAC7C,GAAK6I,EAAO7I,KAAOmF,GAAiC,IAA1BD,KAAKwI,KAAKF,IAC/B3E,EAAO7I,KAAOkJ,IAAkC,IAA3BhE,KAAKwI,KAAKF,GAChC,OACJ,IAAIG,EAAa9E,EAAO7I,GAAKwN,EACzBG,EAAaxI,EACbqI,EAAarI,EAAM0D,EAAO7I,GACrB2N,EAAazE,IAClBsE,EAAatE,EAAML,EAAO7I,IAGlC,IAAI4N,EAAY/E,EAAOgF,MAAM,GAC7B,IAAS7N,EAAI,EAAGA,EAAIlQ,EAAMyY,UAAUpV,OAAQ6M,IACxC4N,EAAYpL,EAAQuK,UAAUa,EAAW5N,EAAGlQ,EAAMkd,eAAenE,EAAO7I,GAAKwN,EAAYxN,IAE7FlQ,EAAM+b,SAAS,CACXnD,gBAAiB,CAACoD,EAASC,KAE/BhY,EAAS6Z,QAGZ,CACD,IAAIE,EAAW,EACf,OAAQ7E,GACJ,KAAKjB,EAAQgC,UAAUC,MACnB6D,GACMhC,EAAU1C,EAAUc,MAAQkD,GAAgBjI,EAAM+D,GAAOA,EAC/D,MACJ,KAAKlB,EAAQgC,UAAUK,KACnByD,GACMV,GAAetB,EAAU1C,EAAUc,OAASkD,GACzCjI,EAAM+D,GACPA,EACR,MACJ,KAAKlB,EAAQgC,UAAUQ,KACnBsD,GACM/B,EAAU3C,EAAUe,KAAOiD,GAAgBjI,EAAM+D,GAAOA,EAC9D,MACJ,KAAKlB,EAAQgC,UAAUO,GACnBuD,GACMV,GAAerB,EAAU3C,EAAUe,MAAQiD,GACxCjI,EAAM+D,GACPA,EACR,MACJ,QACI1G,EAAQiI,kBAAkBxB,GAG9BtF,IACAmK,EAAW3I,EAAM+D,EAAM4E,GAEvB5I,KAAKuI,IAAI5E,EAAOF,GAAqBmF,IAAajB,EAAO,GACzD9Y,EAASyO,EAAQuK,UAAUlE,EAAQF,EAAmB7Y,EAAMkd,eAAec,EAAUnF,OAIjG7Y,EAAMkd,eAAiB,SAAUzW,EAAO0O,GACpC,IAAIc,EAAKjW,EAAM2D,MAAOyV,EAAMnD,EAAGmD,IAAK/D,EAAMY,EAAGZ,IAAK0H,EAAO9G,EAAG8G,KAAMkB,EAAehI,EAAGgI,aAAclF,EAAS9C,EAAG8C,OAC9G,OAAOrG,EAAQwK,eAAezW,EAAO0O,EAAOiE,EAAK/D,EAAK0H,EAAMkB,EAAclF,IAE9E/Y,EAAMke,MAAQ,SAAU9T,GAOpB,GANAA,EAAE2E,iBACFrK,SAASyZ,oBAAoB,YAAane,EAAMub,iBAChD7W,SAASyZ,oBAAoB,YAAane,EAAMmb,iBAChDzW,SAASyZ,oBAAoB,UAAWne,EAAMqb,WAC9C3W,SAASyZ,oBAAoB,WAAYne,EAAMqb,WAC/C3W,SAASyZ,oBAAoB,cAAene,EAAMqb,YACX,IAAnCrb,EAAM2Y,MAAME,oBACwB,IAApC7Y,EAAM2Y,MAAMC,gBAAgB,KACQ,IAApC5Y,EAAM2Y,MAAMC,gBAAgB,GAC5B,OAAO,KACX5Y,EAAM+b,SAAS,CAAElD,mBAAoB,EAAGD,gBAAiB,EAAE,GAAI,KAAM,WACjE5Y,EAAMmd,wBAGdnd,EAAMmd,kBAAoB,WACtBnd,EAAM+b,SAAS,CAAE/C,WAAW,IAC5B,IAAI/C,EAAKjW,EAAM2D,MAAOya,EAAgBnI,EAAGmI,cAAerF,EAAS9C,EAAG8C,OAChEqF,GACAA,EAAcrF,IAGtB/Y,EAAMsc,qBAAuB,WACzB,GAAKtc,EAAM2D,MAAM0a,YACZre,EAAMuY,UACoB,OAA3BvY,EAAMuY,SAASlR,QAFnB,CAUA,IANA,IAAIiX,EAAWC,OAAOC,iBAAiBxe,EAAMuY,SAASlR,SAClDoX,EAAaC,SAASJ,EAAS3Y,MAAO,IACtCgZ,EAAcD,SAASJ,EAAS1Y,OAAQ,IACxCgZ,EAAcF,SAASJ,EAASM,YAAa,IAC7CC,EAAaH,SAASJ,EAASO,WAAY,IAC3CC,EAAM,GACD5O,EAAI,EAAGA,EAAIlQ,EAAM+e,WAAa,EAAG7O,IAAK,CAC3C,IAAI8O,EAAa,KACbC,EAAY,KAChB,GAAIjf,EAAM0Y,SAASxI,GAAG7I,QAAS,CAC3B,IAAI6X,EAAWlf,EAAM0Y,SAASxI,GAAG7I,QAAQkS,wBACzCyF,EAAaE,EAAStZ,OACtBqZ,EAAYC,EAASvZ,MAErB3F,EAAM2D,MAAMwV,YAAcjB,EAAQgC,UAAUK,MAC5Cva,EAAM2D,MAAMwV,YAAcjB,EAAQgC,UAAUC,MAC5C2E,EAAIxb,KAAK,CACL8R,KAAK+J,MAAOV,EAAaze,EAAM+e,WAAc7O,EAAI0O,EAAcK,EAAY,IAC1E7J,KAAK+J,OAAOH,EAAaL,GAAe,KAI7CG,EAAIxb,KAAK,CACL8R,KAAK+J,MAAOR,EAAc3e,EAAM+e,WAAc7O,EAAI2O,EAAaG,EAAa,IAC3E5J,KAAK+J,OAAOF,EAAYR,GAAc,KAInDze,EAAM+b,SAAS,CAAE9C,YAAa6F,MAEf,IAAfnb,EAAMoZ,KACN,MAAM,IAAIzc,MAAM,+CAEpBN,EAAM+e,YAAcpb,EAAM0R,IAAM1R,EAAMyV,KAAOpZ,EAAM2D,MAAMoZ,KACzD/c,EAAMub,gBAAkB7I,EAAQ0M,KAAKpf,EAAM4c,aAC3C5c,EAAMmb,gBAAkBzI,EAAQ0M,KAAKpf,EAAM6c,aAC3C7c,EAAMqb,UAAY3I,EAAQ0M,KAAKpf,EAAMke,OACrCle,EAAMyY,UAAY9U,EAAMoV,OAAO1P,KAAI,WAAc,OAAOzF,EAAM4U,eAC9D,IAAK,IAAItI,EAAI,EAAGA,EAAIlQ,EAAM+e,WAAa,EAAG7O,IACtClQ,EAAM0Y,SAASxI,GAAKtM,EAAM4U,YAE9B,OAAOxY,EA8JX,OA1iBA6W,EAAUwB,EAAOC,GA8YjBD,EAAMhY,UAAUgf,kBAAoB,WAChC,IAAIrf,EAAQ2R,KACRsE,EAAKtE,KAAKhO,MAAOoV,EAAS9C,EAAG8C,OAAQK,EAAMnD,EAAGmD,IAAK2D,EAAO9G,EAAG8G,KACjEpL,KAAK2N,eAAiBf,OAAOgB,eACvB,IAAIhB,OAAOgB,eAAe5N,KAAKyK,UAC/B,CACEoD,QAAS,WAAc,OAAOjB,OAAOrD,iBAAiB,SAAUlb,EAAMoc,WACtEqD,UAAW,WAAc,OAAOlB,OAAOJ,oBAAoB,SAAUne,EAAMoc,YAEnF1X,SAASwW,iBAAiB,aAAcvJ,KAAK8K,oBAAqB,CAC9DrB,SAAS,IAEb1W,SAASwW,iBAAiB,YAAavJ,KAAK8K,oBAAqB,CAC7DrB,SAAS,KAEZzJ,KAAKhO,MAAMsa,cAAgBvL,EAAQgN,oBAAoB/N,KAAKhO,MAAMoV,QACnEpH,KAAKhO,MAAMoV,OAAOvI,SAAQ,SAAU/J,GAChC,OAAOiM,EAAQiN,gBAAgBlZ,EAAOzG,EAAM2D,MAAMyV,IAAKpZ,EAAM2D,MAAM0R,QAEvE1D,KAAK2N,eAAeE,QAAQ7N,KAAK4G,SAASlR,SAC1CqL,EAAQ2J,gBAAgB1K,KAAK+H,YAAa/H,KAAKuH,aAAcvH,KAAKhO,MAAMkQ,KACxElC,KAAK2K,uBACLvD,EAAOvI,SAAQ,SAAU/J,GAChBiM,EAAQkN,gBAAgBxG,EAAK3S,EAAOsW,IACrCzT,QAAQyM,KAAK,iLAIzBsC,EAAMhY,UAAUwf,mBAAqB,SAAUC,EAAWC,GACtD,IAAI9J,EAAKtE,KAAKhO,MAAO0R,EAAMY,EAAGZ,IAAK+D,EAAMnD,EAAGmD,IAAK2D,EAAO9G,EAAG8G,KAAMhE,EAAS9C,EAAG8C,OAAQlF,EAAMoC,EAAGpC,IAC9F,GAAIiM,EAAUzK,MAAQA,GAClByK,EAAU1G,MAAQA,GAClB0G,EAAU/C,OAASA,EAAM,CACzBpL,KAAK+G,SAAW,GAChB/G,KAAKoN,YAAc1J,EAAM+D,GAAO2D,EAChC,IAAK,IAAI7M,EAAI,EAAGA,EAAIyB,KAAKoN,WAAa,EAAG7O,IACrCyB,KAAK+G,SAASxI,GAAKtM,EAAM4U,YAGjC9F,EAAQ2J,gBAAgB1K,KAAK+H,YAAa/H,KAAKuH,aAAcrF,GAIzDiM,EAAUzK,MAAQA,GAClByK,EAAU1G,MAAQA,GAClB0G,EAAU/C,OAASA,GACnBgD,EAAU9G,YAAY5V,SAAWsO,KAAKgH,MAAMM,YAAY5V,SACxDsO,KAAK2K,uBACLvD,EAAOvI,SAAQ,SAAU/J,GAChBiM,EAAQkN,gBAAgBxG,EAAK3S,EAAOsW,IACrCzT,QAAQyM,KAAK,kLAK7BsC,EAAMhY,UAAU2f,qBAAuB,WAInCtb,SAASyZ,oBAAoB,YAAaxM,KAAK8K,oBAHjC,CACVrB,SAAS,IAIb1W,SAASyZ,oBAAoB,YAAaxM,KAAK4J,iBAC/C7W,SAASyZ,oBAAoB,YAAaxM,KAAKwJ,iBAC/CzW,SAASyZ,oBAAoB,aAAcxM,KAAK8K,qBAChD/X,SAASyZ,oBAAoB,UAAWxM,KAAK0J,WAC7C3W,SAASyZ,oBAAoB,WAAYxM,KAAK0J,WAC9C1J,KAAK2N,eAAeG,UAAU9N,KAAK4G,SAASlR,UAEhDgR,EAAMhY,UAAU4f,OAAS,WACrB,IAAIjgB,EAAQ2R,KACRsE,EAAKtE,KAAKhO,MAAOuc,EAAcjK,EAAGiK,YAAaC,EAAclK,EAAGkK,YAAa9C,EAAKpH,EAAGoI,WAAYA,OAAoB,IAAPhB,EAAgB,WAAc,OAAO,MAAUA,EAAItE,EAAS9C,EAAG8C,OAAQK,EAAMnD,EAAGmD,IAAK/D,EAAMY,EAAGZ,IAAK4I,EAAehI,EAAGgI,aAAc9O,EAAW8G,EAAG9G,SAC/PiR,EAAKzO,KAAKgH,MAAOE,EAAoBuH,EAAGvH,kBAAmBC,EAAgBsH,EAAGtH,cAAeG,EAAcmH,EAAGnH,YAClH,OAAOiH,EAAY,CACfvc,MAAO,CACHsL,MAAO,CAGHoR,UAAW,WACXC,OAAQzH,GAAqB,EACvB,WACAlH,KAAKhO,MAAMiY,eACPlJ,EAAQ6K,WAAW5L,KAAKhO,MAAMwV,WAC1B,YACA,YACc,IAAlBJ,EAAO1V,QAAiB8L,EAEpB,UADA,WAGlBhI,YAAagI,EAAWuD,EAAQ6N,OAAS5O,KAAK6J,iBAC9CgF,aAAcrR,EAAWuD,EAAQ6N,OAAS5O,KAAK4K,kBAC/CvV,IAAK2K,KAAK4G,UAEdkI,UAAW9O,KAAKgH,MAAME,mBAAqB,EAC3C1J,SAAUA,EACV1E,SAAUmN,EAAeqB,EAAY5P,KAAI,SAAUqX,EAAQvL,EAAOwL,GAC9D,OAAOtC,EAAW,CACd1a,MAAO,CACHsL,MAAOjP,EAAM2D,MAAMwV,YAAcjB,EAAQgC,UAAUK,MAC/Cva,EAAM2D,MAAMwV,YAAcjB,EAAQgC,UAAUC,MAC1C,CACEyG,SAAU,WACVxG,KAAMsG,EAAO,GAAK,KAClBG,UAAWH,EAAO,GAAK,MAEzB,CACEE,SAAU,WACVvG,IAAKqG,EAAO,GAAK,KACjBI,WAAYJ,EAAO,GAAK,MAEhChe,IAAK,OAASyS,EACdnO,IAAKhH,EAAM0Y,SAASvD,IAExBA,MAAOA,OAEX4D,EAAO1P,KAAI,SAAU5C,EAAO0O,GAC5B,IAAIsL,EAAYzgB,EAAM2Y,MAAME,oBAAsB1D,EAClD,OAAOgL,EAAY,CACfhL,MAAOA,EACP1O,MAAOA,EACPga,UAAWA,EACX9c,MAAO,CACHsL,MAAO,CACH2R,SAAU,WACVG,OAAQjI,EAAc3D,GACtBmL,OAAQnR,EAAW,UAAYsR,EAAY,WAAa,OACxDO,WAAY,OACZC,YAAa,OACbC,iBAAkB,OAClBC,cAAe,OACfC,aAAc,QAElB1e,IAAKyS,EACLnR,SAAUmL,OAAW1D,EAAY,EACjC,gBAAiBwS,EAAe5I,EAAM0D,EAAO5D,EAAQ,IAAME,EAC3D,gBAAiB4I,EAAe7E,EAAML,EAAO5D,EAAQ,IAAMiE,EAC3D,gBAAiB3S,EACjB4a,WAAW,EACXra,IAAKhH,EAAMyY,UAAUtD,GACrBmM,KAAM,SACNxE,UAAW3N,EAAWuD,EAAQ6N,OAASvgB,EAAM8c,UAC7CM,QAASjO,EAAWuD,EAAQ6N,OAASvgB,EAAMod,kBAM/D/E,EAAMrC,aAAe,CACjB+G,KAAM,EACN5D,UAAWjB,EAAQgC,UAAUC,MAC7BtG,KAAK,EACL1E,UAAU,EACV8O,cAAc,EACdrC,gBAAgB,EAChBxC,IAAK,EACL/D,IAAK,KAEFgD,EA3iBgB,CA4iBzBzU,EAAM2d,WACR3R,EAAAA,QAAkByI,yBC1lBlB,IAAIjG,EAAmBT,MAAQA,KAAKS,iBAAoB,SAAUJ,GAC9D,OAAQA,GAAOA,EAAIC,WAAcD,EAAM,CAAE,QAAWA,IAExD7R,OAAOkS,eAAezC,EAAS,aAAc,CAAEnJ,OAAO,IACtDmJ,EAAQ4R,6BAA+B5R,EAAQ0K,cAAgB1K,EAAQ6R,gBAAkB7R,EAAQsK,UAAYtK,EAAQ8R,mBAAqB9R,EAAQyI,WAAQ,EAC1J,IAAIsJ,EAAUvP,EAAgBG,EAAQ,QACtC3C,EAAQyI,MAAQsJ,EAAQ/M,QACxB,IAAIlC,EAAUH,EAAQ,OACtBpS,OAAOkS,eAAezC,EAAS,qBAAsB,CAAE4H,YAAY,EAAMC,IAAK,WAAc,OAAO/E,EAAQgP,sBAC3GvhB,OAAOkS,eAAezC,EAAS,kBAAmB,CAAE4H,YAAY,EAAMC,IAAK,WAAc,OAAO/E,EAAQ+O,mBACxGthB,OAAOkS,eAAezC,EAAS,gBAAiB,CAAE4H,YAAY,EAAMC,IAAK,WAAc,OAAO/E,EAAQ4H,iBACtGna,OAAOkS,eAAezC,EAAS,+BAAgC,CAAE4H,YAAY,EAAMC,IAAK,WAAc,OAAO/E,EAAQ8O,gCACrH,IAAItJ,EAAU3F,EAAQ,OACtBpS,OAAOkS,eAAezC,EAAS,YAAa,CAAE4H,YAAY,EAAMC,IAAK,WAAc,OAAOS,EAAQgC,kCCblG/Z,OAAOkS,eAAezC,EAAS,aAAc,CAAEnJ,OAAO,IACtDmJ,EAAQsK,eAAY,EAEpB,SAAWA,GACPA,EAAS,MAAY,WACrBA,EAAS,KAAW,UACpBA,EAAS,KAAW,YACpBA,EAAS,GAAS,SAJtB,CAKetK,EAAQsK,YAActK,EAAQsK,UAAY,4BCRzD,IAAItC,EAAkBjG,MAAQA,KAAKiG,gBAAmB,WAClD,IAAK,IAAI5G,EAAI,EAAGd,EAAI,EAAG2H,EAAK5G,UAAU5N,OAAQ6M,EAAI2H,EAAI3H,IAAKc,GAAKC,UAAUf,GAAG7M,OACxE,IAAIyU,EAAIxB,MAAMtF,GAAImB,EAAI,EAA3B,IAA8BjC,EAAI,EAAGA,EAAI2H,EAAI3H,IACzC,IAAK,IAAI6H,EAAI9G,UAAUf,GAAI8H,EAAI,EAAGC,EAAKF,EAAE1U,OAAQ2U,EAAIC,EAAID,IAAK7F,IAC1D2F,EAAE3F,GAAK4F,EAAEC,GACjB,OAAOF,GAEX3X,OAAOkS,eAAezC,EAAS,aAAc,CAAEnJ,OAAO,IACtDmJ,EAAQ6R,gBAAkB7R,EAAQ+K,kBAAoB/K,EAAQ2Q,OAAS3Q,EAAQ8R,mBAAqB9R,EAAQqN,UAAYrN,EAAQwP,KAAOxP,EAAQgS,UAAYhS,EAAQuM,qBAAuBvM,EAAQyM,gBAAkBzM,EAAQ6J,oBAAsB7J,EAAQqK,UAAYrK,EAAQ8P,oBAAsB9P,EAAQ4R,6BAA+B5R,EAAQ+P,gBAAkB/P,EAAQ2N,WAAa3N,EAAQ0K,cAAgB1K,EAAQsN,eAAiBtN,EAAQgQ,gBAAkBhQ,EAAQ+M,aAAe/M,EAAQiS,qBAAkB,EACtf,IAAIvP,EAAUC,EAAQ,OAClB2F,EAAU3F,EAAQ,OAqDtB,SAASgL,EAAWpE,GAChB,OAAOA,IAAcjB,EAAQgC,UAAUO,IAAMtB,IAAcjB,EAAQgC,UAAUQ,KAoFjF,SAASkH,EAAUpL,EAASqD,EAAGC,GAC3BtD,EAAQvH,MAAMoR,UAAY,aAAexG,EAAI,OAASC,EAAI,MAtI9DlK,EAAQiS,gBAJc,SAAU9E,GAC5B,IAAI+E,EAAW/E,EAAKgF,WAAWxR,MAAM,KAAK,GAC1C,OAAOuR,EAAWA,EAASze,OAAS,GAOxCuM,EAAQ+M,aAJR,SAAsBzY,GAClB,OAASA,EAAMsY,SAAWtY,EAAMsY,QAAQnZ,QACnCa,EAAM8d,gBAAkB9d,EAAM8d,eAAe3e,QAStDuM,EAAQgQ,gBANR,SAAyBxG,EAAK/D,EAAK0H,GAC/B,IAEIkF,EAAaC,SAFN7M,EAAM+D,GAAO2D,GAEIoF,QADZ,IAEhB,OAAOzD,SAASuD,EAAWF,WAAY,MAAQE,GAiCnDrS,EAAQsN,eA9BR,SAAwBzW,EAAO0O,EAAOiE,EAAK/D,EAAK0H,EAAMkB,EAAclF,GAChE,IAAIqJ,EAAU,KAEd,GADA3b,EAAQ2O,KAAK+J,MAAM1Y,EAAQ2b,GAAWA,GACjCnE,EAAc,CACf,IAAIoE,EAAOtJ,EAAO5D,EAAQ,GACtBmN,EAAOvJ,EAAO5D,EAAQ,GAC1B,GAAIkN,GAAQA,EAAO5b,EACf,OAAO4b,EACX,GAAIC,GAAQA,EAAO7b,EACf,OAAO6b,EAEf,GAAI7b,EAAQ4O,EACR,OAAOA,EACX,GAAI5O,EAAQ2S,EACR,OAAOA,EAIX,IAAImJ,EAAYnN,KAAKoN,MAAM/b,EAAQ2b,EAAUhJ,EAAMgJ,GAC/ChN,KAAKoN,MAAMzF,EAAOqF,GAClBK,EAAkBrN,KAAKoN,MAAM/b,EAAQ2b,EAAUhN,KAAKuI,IAAI4E,IACxDG,EAAwB,IAAdH,EAAkB9b,EAAQgc,EAAkBL,EAGtDtD,EAAM1J,KAAKuI,IAAI4E,EAAYH,GAAWrF,EAAO,EAC3C2F,EACAA,EAAU3F,EACZ4F,EAAgB/S,EAAQiS,gBAAgB9E,GAC5C,OAAO6F,WAAW9D,EAAIqD,QAAQQ,KAMlC/S,EAAQ0K,cAHR,SAAuB7T,EAAO2S,EAAK/D,GAC/B,OAAQ5O,EAAQ2S,IAAQ/D,EAAM+D,IAMlCxJ,EAAQ2N,WAAaA,EAYrB3N,EAAQ+P,gBAXR,SAAyBlZ,EAAO2S,EAAK/D,GACjC,GAAI+D,GAAO/D,EACP,MAAM,IAAIwN,WAAW,QAAUzJ,EAAM,+BAAiC/D,EAAM,KAEhF,GAAI5O,EAAQ2S,EACR,MAAM,IAAIyJ,WAAW,UAAYpc,EAAQ,0BAA4B2S,EAAM,KAE/E,GAAI3S,EAAQ4O,EACR,MAAM,IAAIwN,WAAW,UAAYpc,EAAQ,yBAA2B4O,EAAM,MAiBlFzF,EAAQ4R,6BAbR,SAAsC/a,EAAO2S,EAAK/D,GAC9C,OAAI5O,EAAQ2S,EAEDA,EAEP3S,EAAQ4O,EAEDA,EAGA5O,GAWfmJ,EAAQ8P,oBAPR,SAA6B3G,GACzB,KAAIA,EAAO1V,OAAS,KAEf0V,EAAOgF,MAAM,GAAG+E,OAAM,SAAUC,EAAM7S,GAAK,OAAO6I,EAAO7I,IAAM6S,KAChE,MAAM,IAAIF,WAAW,YAAc9J,EAAS,oDAapDnJ,EAAQqK,UATR,SAAmBzD,GACf,IAAIvH,EAAQsP,OAAOC,iBAAiBhI,GACpC,MAAO,CACH6D,IAAKqE,SAASzP,EAAM,cAAe,IACnC+T,OAAQtE,SAASzP,EAAM,iBAAkB,IACzCmL,KAAMsE,SAASzP,EAAM,eAAgB,IACrCuL,MAAOkE,SAASzP,EAAM,gBAAiB,MAa/CW,EAAQ6J,oBATR,SAA6BjD,GACzB,IAAIvH,EAAQsP,OAAOC,iBAAiBhI,GACpC,MAAO,CACH6D,IAAKqE,SAASzP,EAAM,eAAgB,IAAMyP,SAASzP,EAAM,oBAAqB,IAC9E+T,OAAQtE,SAASzP,EAAM,kBAAmB,IAAMyP,SAASzP,EAAM,uBAAwB,IACvFmL,KAAMsE,SAASzP,EAAM,gBAAiB,IAAMyP,SAASzP,EAAM,qBAAsB,IACjFuL,MAAOkE,SAASzP,EAAM,iBAAkB,IAAMyP,SAASzP,EAAM,sBAAuB,MAU5FW,EAAQyM,gBANR,SAAyB4G,EAAUC,EAASrP,GACxC,IAAImJ,EAAWnJ,GAAO,EAAI,EAC1BoP,EAASzS,SAAQ,SAAUgG,EAASrB,GAChC,OAAOyM,EAAUpL,EAASwG,EAAWkG,EAAQ/N,GAAO0E,EAAGqJ,EAAQ/N,GAAO2E,OAuB9ElK,EAAQuM,qBAZR,SAA8BgH,EAAQnH,EAASC,EAAS9C,GAGpD,IAFA,IAAIiK,EAAa,EACbC,EAAmBC,EAAiBH,EAAO,GAAInH,EAASC,EAAS9C,GAC5DjJ,EAAI,EAAGA,EAAIiT,EAAO9f,OAAQ6M,IAAK,CACpC,IAAIqT,EAAgBD,EAAiBH,EAAOjT,GAAI8L,EAASC,EAAS9C,GAC9DoK,EAAgBF,IAChBA,EAAmBE,EACnBH,EAAalT,GAGrB,OAAOkT,GAMXxT,EAAQgS,UAAYA,EAqBpBhS,EAAQwP,KAnBG,SAAUoE,GACjB,IAAIC,EAAW,GACXC,EAAU,KAed,OAdgB,WAEZ,IADA,IAAIC,EAAO,GACFC,EAAK,EAAGA,EAAK3S,UAAU5N,OAAQugB,IACpCD,EAAKC,GAAM3S,UAAU2S,GAEzBH,EAAWE,EACPD,IAGJA,EAAUG,uBAAsB,WAC5BH,EAAU,KACVF,EAAG1R,WAAM,EAAQ2R,SAW7B7T,EAAQqN,UALR,SAAmBlE,EAAQ5D,EAAO1O,GAC9B,IAAIqd,EAAM/K,EAAOgF,MAAM,GAEvB,OADA+F,EAAI3O,GAAS1O,EACNqd,GAkBXlU,EAAQ8R,mBAfR,SAA4BzL,GACxB,IAAI8C,EAAS9C,EAAG8C,OAAQgL,EAAS9N,EAAG8N,OAAQ3K,EAAMnD,EAAGmD,IAAK/D,EAAMY,EAAGZ,IAAKgI,EAAKpH,EAAGkD,UAAWA,OAAmB,IAAPkE,EAAgBnF,EAAQgC,UAAUC,MAAQkD,EAAI+C,EAAKnK,EAAGpC,IAAKA,OAAa,IAAPuM,GAAwBA,EAC5LvM,GAAOsF,IAAcjB,EAAQgC,UAAUC,MACvChB,EAAYjB,EAAQgC,UAAUK,KAEzB1G,GAAOqE,EAAQgC,UAAUK,OAC9BpB,EAAYjB,EAAQgC,UAAUC,OAGlC,IACI6J,EADWjL,EAAOgF,MAAM,GAAGkG,MAAK,SAAUlM,EAAGhB,GAAK,OAAOgB,EAAIhB,KAAM1N,KAAI,SAAU5C,GAAS,OAASA,EAAQ2S,IAAQ/D,EAAM+D,GAAQ,OAC/G8K,QAAO,SAAUC,EAAKC,EAAOjP,GAC/C,OAAOgP,EAAM,KAAOJ,EAAO5O,GAAS,IAAMiP,EAAQ,MAAQL,EAAO5O,EAAQ,GAAK,IAAMiP,EAAQ,MAC7F,IACH,MAAO,mBAAqBjL,EAAY,KAAO4K,EAAO,GAAK,MAAQC,EAAS,KAAOD,EAAOA,EAAO1gB,OAAS,GAAK,UAInHuM,EAAQ2Q,OADR,aAKA3Q,EAAQ+K,kBAHR,SAA2Bd,GACvB,MAAM,IAAIvZ,MAAM,8BAUpB,IAAI+jB,EAAgB,SAAUC,EAAS7d,EAAO8d,EAAW5B,EAAe6B,GAqBpE,YApBqB,IAAjBA,IAA2BA,EAAe,SAAU/d,GAAS,OAAOA,IAC5D2O,KAAKqP,KAAK7M,EAAe,CAAC0M,GAAUhO,MAAMzF,KAAKyT,EAAQ7Z,WAAWyZ,QAAO,SAAUve,EAAOiQ,GAClG,IAAI8O,EAAUtP,KAAKqP,KAAK7O,EAAG2D,wBAAwB5T,OAMnD,GAAIiQ,EAAG+O,WACH/O,EAAG+O,UAAU9f,SAAS0f,IACG,IAAzB3O,EAAGgP,kBAAyB,CAC5B,IAAIC,EAAUjP,EAAGkP,WAAU,GAC3BD,EAAQE,UAAYP,EAAa/d,EAAM0b,QAAQQ,IAC/CkC,EAAQ5V,MAAM+V,WAAa,SAC3BtgB,SAASugB,KAAKC,YAAYL,GAC1BH,EAAUtP,KAAKqP,KAAKI,EAAQtL,wBAAwB5T,OACpDjB,SAASugB,KAAKE,YAAYN,GAE9B,OAAOH,EAAU/e,EAAQ+e,EAAU/e,IACpC2e,EAAQ/K,wBAAwB5T,SA+JvC,SAAS2d,EAAiBgB,EAAStI,EAASC,EAAS9C,GACjD,IAAIlD,EAAKqO,EAAQ/K,wBAAyBa,EAAOnE,EAAGmE,KAAMC,EAAMpE,EAAGoE,IAAK1U,EAAQsQ,EAAGtQ,MAAOC,EAASqQ,EAAGrQ,OACtG,OAAO2X,EAAWpE,GAAa/D,KAAKuI,IAAI1B,GAAW5B,EAAMzU,EAAS,IAAMwP,KAAKuI,IAAI3B,GAAW5B,EAAOzU,EAAQ,IAX/GiK,EAAQ6R,gBArFc,SAAU2D,EAAUrM,EAAQ5D,EAAO4H,EAAMwH,EAAWC,QACzD,IAATzH,IAAmBA,EAAO,SACZ,IAAdwH,IAAwBA,EAAY,YACnB,IAAjBC,IAA2BA,EAAe,SAAU/d,GAAS,OAAOA,IACxE,IAAIkc,EAAgB/S,EAAQiS,gBAAgB9E,GAExC9G,EAAK3D,EAAQ1L,SAAS,IAAKye,EAAapP,EAAG,GAAIqP,EAAgBrP,EAAG,GAClEoH,EAAK/K,EAAQ1L,SAAS4d,EAAazL,EAAO5D,GAAOgN,QAAQQ,KAAkB4C,EAAalI,EAAG,GAAImI,EAAgBnI,EAAG,GA4EtH,OA1EA/K,EAAQ1I,WAAU,WACd,GAAIwb,EAAU,CACV,IAAIjC,EAASiC,EAAS1L,YACtB,GAAIyJ,EAAO9f,OAAS,EAChB,OACJ,IAAIoiB,EAAW,GACXC,EAAYN,EAASlM,aAOrByM,EArEE,SAAUxQ,EAAO+N,EAASC,EAAQpK,EAAQwL,EAAW5B,EAAe6B,QAC7D,IAAjBA,IAA2BA,EAAe,SAAU/d,GAAS,OAAOA,IACxE,IAAIkf,EAAW,GAiCf,OA3BoB,SAAhBC,EAA0BxC,GAC1B,IAAIyC,EAAcxB,EAAclB,EAAOC,GAAarK,EAAOqK,GAAamB,EAAW5B,EAAe6B,GAC9FsB,EAAS5C,EAAQE,GAAYvJ,EAOjCqJ,EAAQ1S,SAAQ,SAAUyF,EAAI8P,GAC1B,IAAIC,EAAW/P,EAAG4D,EACdoM,EAAe5B,EAAclB,EAAO4C,GAAehN,EAAOgN,GAAexB,EAAW5B,EAAe6B,GACnGpB,IAAe2C,IACbD,GAAUE,GAAYF,GAAUE,EAAWC,GACxCH,EAASD,GAAeG,GACrBF,EAASD,GAAeG,EAAWC,KACtCN,EAAS9gB,SAASkhB,KACnBJ,EAASriB,KAAK8f,GACduC,EAASriB,KAAKyiB,GACdJ,EAAW/N,EAAe+N,EAAU,CAACvC,EAAY2C,IACjDH,EAAcG,QAK9BH,CAAczQ,GAEPmB,MAAMzF,KAAK,IAAIqV,IAAIP,EAAS1B,SAkCZkC,CAAYhR,EAAOuQ,EAAWvC,EAAQpK,EAAQwL,EAAW5B,EAAe6B,GAEnF4B,EAAe5B,EAAazL,EAAO5D,GAAOgN,QAAQQ,IAOtD,GAAIgD,EAAStiB,OAAQ,CAMjB,IAAIgjB,EAAWV,EAASzB,QAAO,SAAUnM,EAAGuO,EAAGpW,EAAGc,GAC9C,OAAO+G,EAAE1U,OAASuU,EAAeG,EAAG,CAAC2N,EAAU1U,EAAEd,IAAI2J,IAAM,CAAC6L,EAAU1U,EAAEd,IAAI2J,KAC7E,IAKH,GAAIzE,KAAKgE,IAAItH,MAAMsD,KAAMiR,KAAcX,EAAUvQ,GAAO0E,EAAG,CAMvD,IAAI0M,EAAgB,GACpBZ,EAASnV,SAAQ,SAAUmJ,GACvB4M,EAAcjjB,KAAKyV,EAAOY,GAAOwI,QAAQQ,OAM7CyD,EAAe9P,MAAMzF,KAAK,IAAIqV,IAAIK,EAActC,MAAK,SAAUlM,EAAGhB,GAAK,OAAO6L,WAAW7K,GAAK6K,WAAW7L,QACpG1N,IAAImb,GACJnU,KAAKkU,GAOV,IAAIiC,EAAQpR,KAAKgE,IAAItH,MAAMsD,KAAMiR,GAC7BI,EAAOrR,KAAKC,IAAIvD,MAAMsD,KAAMiR,GAC5BK,EAAYvD,EAAOwC,EAASU,EAASM,QAAQF,KAAQlN,wBAAwB5T,MACjF8f,EAASrL,KAAOhF,KAAKuI,IAAI6I,GAASC,EAAOC,IAAc,EAAI,KAC3DjB,EAASpF,UAAY,0BAIrBoF,EAAST,WAAa,SAI9BQ,EAAcY,GACdd,EAAcG,MAEnB,CAACL,EAAUrM,IACP,CAACwM,EAAYF,gGCxXT,SAASuB,EAAeC,EAAUC,GAC/CD,EAASxmB,UAAYF,OAAOgX,OAAO2P,EAAWzmB,WAC9CwmB,EAASxmB,UAAU6W,YAAc2P,GACjC,EAAAzmB,EAAA,GAAeymB,EAAUC,GCJ3B,SAASC,EAAiBC,EAAWC,GACnC,OAAOD,EAAUvY,QAAQ,IAAIyY,OAAO,UAAYD,EAAgB,YAAa,KAAM,MAAMxY,QAAQ,OAAQ,KAAKA,QAAQ,aAAc,8BCDtI,GACY,ECAZ,EAAe7K,EAAAA,cAAoB,MCOxBujB,EAAY,YACZC,EAAS,SACTC,EAAW,WACXC,EAAU,UACVC,EAAU,UA6FjBC,EAA0B,SAAUC,GAGtC,SAASD,EAAW7jB,EAAO+jB,GACzB,IAAI1nB,EAEJA,EAAQynB,EAAiBvW,KAAKS,KAAMhO,EAAO+jB,IAAY/V,KACvD,IAGIgW,EADAC,EAFcF,IAAAA,EAEuBG,WAAalkB,EAAMmkB,MAAQnkB,EAAMikB,OAuB1E,OArBA5nB,EAAM+nB,aAAe,KAEjBpkB,EAAMqkB,GACJJ,GACFD,EAAgBP,EAChBpnB,EAAM+nB,aAAeV,GAErBM,EAAgBL,EAIhBK,EADEhkB,EAAMskB,eAAiBtkB,EAAMukB,aACff,EAEAC,EAIpBpnB,EAAM2Y,MAAQ,CACZvP,OAAQue,GAEV3nB,EAAMmoB,aAAe,KACdnoB,EA/BT4mB,EAAeY,EAAYC,GAkC3BD,EAAWY,yBAA2B,SAAkChX,EAAM2O,GAG5E,OAFa3O,EAAK4W,IAEJjI,EAAU3W,SAAW+d,EAC1B,CACL/d,OAAQge,GAIL,MAmBT,IAAIiB,EAASb,EAAWnnB,UA0OxB,OAxOAgoB,EAAOhJ,kBAAoB,WACzB1N,KAAK2W,cAAa,EAAM3W,KAAKoW,eAG/BM,EAAOxI,mBAAqB,SAA4BC,GACtD,IAAIyI,EAAa,KAEjB,GAAIzI,IAAcnO,KAAKhO,MAAO,CAC5B,IAAIyF,EAASuI,KAAKgH,MAAMvP,OAEpBuI,KAAKhO,MAAMqkB,GACT5e,IAAWie,GAAYje,IAAWke,IACpCiB,EAAalB,GAGXje,IAAWie,GAAYje,IAAWke,IACpCiB,EAAahB,GAKnB5V,KAAK2W,cAAa,EAAOC,IAG3BF,EAAOrI,qBAAuB,WAC5BrO,KAAK6W,sBAGPH,EAAOI,YAAc,WACnB,IACIC,EAAMZ,EAAOF,EADbe,EAAUhX,KAAKhO,MAAMglB,QAWzB,OATAD,EAAOZ,EAAQF,EAASe,EAET,MAAXA,GAAsC,kBAAZA,IAC5BD,EAAOC,EAAQD,KACfZ,EAAQa,EAAQb,MAEhBF,OAA4Bnc,IAAnBkd,EAAQf,OAAuBe,EAAQf,OAASE,GAGpD,CACLY,KAAMA,EACNZ,MAAOA,EACPF,OAAQA,IAIZS,EAAOC,aAAe,SAAsBM,EAAUL,QACnC,IAAbK,IACFA,GAAW,GAGM,OAAfL,GAEF5W,KAAK6W,qBAEDD,IAAelB,EACjB1V,KAAKkX,aAAaD,GAElBjX,KAAKmX,eAEEnX,KAAKhO,MAAMskB,eAAiBtW,KAAKgH,MAAMvP,SAAWge,GAC3DzV,KAAKoK,SAAS,CACZ3S,OAAQ+d,KAKdkB,EAAOQ,aAAe,SAAsBD,GAC1C,IAAInoB,EAASkR,KAETmW,EAAQnW,KAAKhO,MAAMmkB,MACnBiB,EAAYpX,KAAK+V,QAAU/V,KAAK+V,QAAQG,WAAae,EAErDI,EAAQrX,KAAKhO,MAAMslB,QAAU,CAACF,GAAa,CAACG,EAAAA,YAAqBvX,MAAOoX,GACxEI,EAAYH,EAAM,GAClBI,EAAiBJ,EAAM,GAEvBK,EAAW1X,KAAK8W,cAChBa,EAAeP,EAAYM,EAASzB,OAASyB,EAASvB,OAGrDc,IAAad,GAASyB,EACzB5X,KAAK6X,aAAa,CAChBpgB,OAAQke,IACP,WACD7mB,EAAOkD,MAAM8lB,UAAUN,OAK3BxX,KAAKhO,MAAM+lB,QAAQP,EAAWC,GAC9BzX,KAAK6X,aAAa,CAChBpgB,OAAQie,IACP,WACD5mB,EAAOkD,MAAMgmB,WAAWR,EAAWC,GAEnC3oB,EAAOmpB,gBAAgBN,GAAc,WACnC7oB,EAAO+oB,aAAa,CAClBpgB,OAAQke,IACP,WACD7mB,EAAOkD,MAAM8lB,UAAUN,EAAWC,cAM1Cf,EAAOS,YAAc,WACnB,IAAIe,EAASlY,KAET+W,EAAO/W,KAAKhO,MAAM+kB,KAClBW,EAAW1X,KAAK8W,cAChBU,EAAYxX,KAAKhO,MAAMslB,aAAUxd,EAAYyd,EAAAA,YAAqBvX,MAEjE+W,IAAQa,GASb5X,KAAKhO,MAAMmmB,OAAOX,GAClBxX,KAAK6X,aAAa,CAChBpgB,OAAQme,IACP,WACDsC,EAAOlmB,MAAMomB,UAAUZ,GAEvBU,EAAOD,gBAAgBP,EAASX,MAAM,WACpCmB,EAAOL,aAAa,CAClBpgB,OAAQge,IACP,WACDyC,EAAOlmB,MAAMqmB,SAASb,aAlB1BxX,KAAK6X,aAAa,CAChBpgB,OAAQge,IACP,WACDyC,EAAOlmB,MAAMqmB,SAASb,OAqB5Bd,EAAOG,mBAAqB,WACA,OAAtB7W,KAAKwW,eACPxW,KAAKwW,aAAa8B,SAClBtY,KAAKwW,aAAe,OAIxBE,EAAOmB,aAAe,SAAsBU,EAAWC,GAIrDA,EAAWxY,KAAKyY,gBAAgBD,GAChCxY,KAAKoK,SAASmO,EAAWC,IAG3B9B,EAAO+B,gBAAkB,SAAyBD,GAChD,IAAIxpB,EAASgR,KAET0Y,GAAS,EAcb,OAZA1Y,KAAKwW,aAAe,SAAUjkB,GACxBmmB,IACFA,GAAS,EACT1pB,EAAOwnB,aAAe,KACtBgC,EAASjmB,KAIbyN,KAAKwW,aAAa8B,OAAS,WACzBI,GAAS,GAGJ1Y,KAAKwW,cAGdE,EAAOuB,gBAAkB,SAAyBjB,EAAS2B,GACzD3Y,KAAKyY,gBAAgBE,GACrB,IAAIC,EAAO5Y,KAAKhO,MAAMslB,QAAUtX,KAAKhO,MAAMslB,QAAQ5hB,QAAU6hB,EAAAA,YAAqBvX,MAC9E6Y,EAA0C,MAAX7B,IAAoBhX,KAAKhO,MAAM8mB,eAElE,GAAKF,IAAQC,EAAb,CAKA,GAAI7Y,KAAKhO,MAAM8mB,eAAgB,CAC7B,IAAIC,EAAQ/Y,KAAKhO,MAAMslB,QAAU,CAACtX,KAAKwW,cAAgB,CAACoC,EAAM5Y,KAAKwW,cAC/DgB,EAAYuB,EAAM,GAClBC,EAAoBD,EAAM,GAE9B/Y,KAAKhO,MAAM8mB,eAAetB,EAAWwB,GAGxB,MAAXhC,GACFvhB,WAAWuK,KAAKwW,aAAcQ,QAb9BvhB,WAAWuK,KAAKwW,aAAc,IAiBlCE,EAAOpI,OAAS,WACd,IAAI7W,EAASuI,KAAKgH,MAAMvP,OAExB,GAAIA,IAAW+d,EACb,OAAO,KAGT,IAAIyD,EAAcjZ,KAAKhO,MACnB8G,EAAWmgB,EAAYngB,SAgBvBogB,GAfMD,EAAY5C,GACF4C,EAAY1C,aACX0C,EAAY3C,cACnB2C,EAAYhD,OACbgD,EAAY9C,MACb8C,EAAYlC,KACTkC,EAAYjC,QACLiC,EAAYH,eACnBG,EAAYlB,QACTkB,EAAYjB,WACbiB,EAAYnB,UACfmB,EAAYd,OACTc,EAAYb,UACba,EAAYZ,SACbY,EAAY3B,SACV6B,EAAAA,EAAAA,GAA8BF,EAAa,CAAC,WAAY,KAAM,eAAgB,gBAAiB,SAAU,QAAS,OAAQ,UAAW,iBAAkB,UAAW,aAAc,YAAa,SAAU,YAAa,WAAY,aAEjP,OAGEhnB,EAAAA,cAAoBmnB,EAAuBC,SAAU,CACnDvkB,MAAO,MACc,oBAAbgE,EAA0BA,EAASrB,EAAQyhB,GAAcjnB,EAAAA,aAAmBA,EAAAA,SAAAA,KAAoB6G,GAAWogB,KAIlHrD,EAzSqB,CA0S5B5jB,EAAAA,WA+LF,SAASqnB,KA7LTzD,EAAW0D,YAAcH,EACzBvD,EAAW2D,UA0LP,GAIJ3D,EAAWxR,aAAe,CACxBgS,IAAI,EACJE,cAAc,EACdD,eAAe,EACfL,QAAQ,EACRE,OAAO,EACPY,MAAM,EACNgB,QAASuB,EACTtB,WAAYsB,EACZxB,UAAWwB,EACXnB,OAAQmB,EACRlB,UAAWkB,EACXjB,SAAUiB,GAEZzD,EAAWL,UAAYA,EACvBK,EAAWJ,OAASA,EACpBI,EAAWH,SAAWA,EACtBG,EAAWF,QAAUA,EACrBE,EAAWD,QAAUA,EACrB,QCvlBI6D,EAAc,SAAqBb,EAAMc,GAC3C,OAAOd,GAAQc,GAAWA,EAAQ9a,MAAM,KAAKC,SAAQ,SAAU8V,GAC7D,OJPyCziB,EIObyiB,QJPI9P,EIOV+T,GJNZe,UACV9U,EAAQ8U,UAAUC,OAAO1nB,GACa,kBAAtB2S,EAAQ3S,UACxB2S,EAAQ3S,UAAYkjB,EAAiBvQ,EAAQ3S,UAAWA,GAExD2S,EAAQgV,aAAa,QAASzE,EAAiBvQ,EAAQ3S,WAAa2S,EAAQ3S,UAAU4nB,SAAW,GAAI5nB,KAN1F,IAAqB2S,EAAS3S,MIiFzC6nB,EAA6B,SAAUjE,GAGzC,SAASiE,IAGP,IAFA,IAAI1rB,EAEK2rB,EAAO1a,UAAU5N,OAAQsgB,EAAO,IAAIrN,MAAMqV,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/EjI,EAAKiI,GAAQ3a,UAAU2a,GAgHzB,OA7GA5rB,EAAQynB,EAAiBvW,KAAKY,MAAM2V,EAAkB,CAAC9V,MAAMka,OAAOlI,KAAUhS,MACxEma,eAAiB,CACrBlE,OAAQ,GACRE,MAAO,GACPY,KAAM,IAGR1oB,EAAM0pB,QAAU,SAAUP,EAAWC,GACnC,IAAI2C,EAAwB/rB,EAAMgsB,iBAAiB7C,EAAWC,GAC1DmB,EAAOwB,EAAsB,GAC7BhD,EAAYgD,EAAsB,GAEtC/rB,EAAMisB,cAAc1B,EAAM,QAE1BvqB,EAAMksB,SAAS3B,EAAMxB,EAAY,SAAW,QAAS,QAEjD/oB,EAAM2D,MAAM+lB,SACd1pB,EAAM2D,MAAM+lB,QAAQP,EAAWC,IAInCppB,EAAM2pB,WAAa,SAAUR,EAAWC,GACtC,IAAI+C,EAAyBnsB,EAAMgsB,iBAAiB7C,EAAWC,GAC3DmB,EAAO4B,EAAuB,GAG9BtsB,EAFYssB,EAAuB,GAEhB,SAAW,QAElCnsB,EAAMksB,SAAS3B,EAAM1qB,EAAM,UAEvBG,EAAM2D,MAAMgmB,YACd3pB,EAAM2D,MAAMgmB,WAAWR,EAAWC,IAItCppB,EAAMypB,UAAY,SAAUN,EAAWC,GACrC,IAAIgD,EAAyBpsB,EAAMgsB,iBAAiB7C,EAAWC,GAC3DmB,EAAO6B,EAAuB,GAG9BvsB,EAFYusB,EAAuB,GAEhB,SAAW,QAElCpsB,EAAMisB,cAAc1B,EAAM1qB,GAE1BG,EAAMksB,SAAS3B,EAAM1qB,EAAM,QAEvBG,EAAM2D,MAAM8lB,WACdzpB,EAAM2D,MAAM8lB,UAAUN,EAAWC,IAIrCppB,EAAM8pB,OAAS,SAAUX,GACvB,IACIoB,EADyBvqB,EAAMgsB,iBAAiB7C,GAClB,GAElCnpB,EAAMisB,cAAc1B,EAAM,UAE1BvqB,EAAMisB,cAAc1B,EAAM,SAE1BvqB,EAAMksB,SAAS3B,EAAM,OAAQ,QAEzBvqB,EAAM2D,MAAMmmB,QACd9pB,EAAM2D,MAAMmmB,OAAOX,IAIvBnpB,EAAM+pB,UAAY,SAAUZ,GAC1B,IACIoB,EADyBvqB,EAAMgsB,iBAAiB7C,GAClB,GAElCnpB,EAAMksB,SAAS3B,EAAM,OAAQ,UAEzBvqB,EAAM2D,MAAMomB,WACd/pB,EAAM2D,MAAMomB,UAAUZ,IAI1BnpB,EAAMgqB,SAAW,SAAUb,GACzB,IACIoB,EADyBvqB,EAAMgsB,iBAAiB7C,GAClB,GAElCnpB,EAAMisB,cAAc1B,EAAM,QAE1BvqB,EAAMksB,SAAS3B,EAAM,OAAQ,QAEzBvqB,EAAM2D,MAAMqmB,UACdhqB,EAAM2D,MAAMqmB,SAASb,IAIzBnpB,EAAMgsB,iBAAmB,SAAU7C,EAAWC,GAC5C,OAAOppB,EAAM2D,MAAMslB,QAAU,CAACjpB,EAAM2D,MAAMslB,QAAQ5hB,QAAS8hB,GACzD,CAACA,EAAWC,IAGhBppB,EAAMqsB,cAAgB,SAAUxsB,GAC9B,IAAIqW,EAAalW,EAAM2D,MAAMuS,WACzBoW,EAA2C,kBAAfpW,EAE5BqW,EAAgBD,EAAqB,IAD5BA,GAAsBpW,EAAaA,EAAa,IAAM,IACZrW,EAAOqW,EAAWrW,GAGzE,MAAO,CACL0sB,cAAeA,EACfC,gBAJoBF,EAAqBC,EAAgB,UAAYrW,EAAWrW,EAAO,UAKvF4sB,cAJkBH,EAAqBC,EAAgB,QAAUrW,EAAWrW,EAAO,UAQhFG,EAtHT4mB,EAAe8E,EAAejE,GAyH9B,IAAIY,EAASqD,EAAcrrB,UA6D3B,OA3DAgoB,EAAO6D,SAAW,SAAkB3B,EAAM1qB,EAAM6sB,GAC9C,IAAI7oB,EAAY8N,KAAK0a,cAAcxsB,GAAM6sB,EAAQ,aAG7CD,EADsB9a,KAAK0a,cAAc,SACLI,cAE3B,WAAT5sB,GAA+B,SAAV6sB,GAAoBD,IAC3C5oB,GAAa,IAAM4oB,GAKP,WAAVC,GAEFnC,GAAQA,EAAKoC,UAGX9oB,IACF8N,KAAKma,eAAejsB,GAAM6sB,GAAS7oB,EAhOzB,SAAkB0mB,EAAMc,GAC/Bd,GAAQc,GAAWA,EAAQ9a,MAAM,KAAKC,SAAQ,SAAU8V,GAC7D,OCJsCziB,EDIbyiB,QCJI9P,EDIV+T,GCHTe,UAAW9U,EAAQ8U,UAAUsB,IAAI/oB,GCHhC,SAAkB2S,EAAS3S,GACxC,OAAI2S,EAAQ8U,YAAoBznB,GAAa2S,EAAQ8U,UAAUtQ,SAASnX,IACkC,KAAlG,KAAO2S,EAAQ3S,UAAU4nB,SAAWjV,EAAQ3S,WAAa,KAAK8iB,QAAQ,IAAM9iB,EAAY,KDC9BgpB,CAASrW,EAAS3S,KAA6C,kBAAtB2S,EAAQ3S,UAAwB2S,EAAQ3S,UAAY2S,EAAQ3S,UAAY,IAAMA,EAAe2S,EAAQgV,aAAa,SAAUhV,EAAQ3S,WAAa2S,EAAQ3S,UAAU4nB,SAAW,IAAM,IAAM5nB,KADxR,IAAkB2S,EAAS3S,KDoOpCipB,CAAUvC,EAAM1mB,KAIpBwkB,EAAO4D,cAAgB,SAAuB1B,EAAM1qB,GAClD,IAAIktB,EAAwBpb,KAAKma,eAAejsB,GAC5C0sB,EAAgBQ,EAAsBC,KACtCR,EAAkBO,EAAsB1C,OACxCoC,EAAgBM,EAAsBE,KAC1Ctb,KAAKma,eAAejsB,GAAQ,GAExB0sB,GACFnB,EAAYb,EAAMgC,GAGhBC,GACFpB,EAAYb,EAAMiC,GAGhBC,GACFrB,EAAYb,EAAMkC,IAItBpE,EAAOpI,OAAS,WACd,IAAI2K,EAAcjZ,KAAKhO,MAEnBA,GADIinB,EAAY1U,YACR4U,EAAAA,EAAAA,GAA8BF,EAAa,CAAC,gBAExD,OAAoBhnB,EAAAA,cAAoB4jB,GAAY0F,EAAAA,EAAAA,GAAS,GAAIvpB,EAAO,CACtE+lB,QAAS/X,KAAK+X,QACdD,UAAW9X,KAAK8X,UAChBE,WAAYhY,KAAKgY,WACjBG,OAAQnY,KAAKmY,OACbC,UAAWpY,KAAKoY,UAChBC,SAAUrY,KAAKqY,aAIZ0B,EAvLwB,CAwL/B9nB,EAAAA,WAEF8nB,EAAc1V,aAAe,CAC3BE,WAAY,IAEdwV,EAAcP,UAiIT,GACL,6JG/YA,SAASgC,EAASC,GACd,OAAgB,OAARA,GACW,kBAARA,GACP,gBAAiBA,GACjBA,EAAIlW,cAAgB/W,OAE5B,SAASktB,EAAOlpB,EAAQmpB,QACL,IAAXnpB,IAAqBA,EAAS,SACtB,IAARmpB,IAAkBA,EAAM,IAC5BntB,OAAOuQ,KAAK4c,GAAK9c,SAAQ,SAAU9N,GACJ,qBAAhByB,EAAOzB,GACdyB,EAAOzB,GAAO4qB,EAAI5qB,GACbyqB,EAASG,EAAI5qB,KAClByqB,EAAShpB,EAAOzB,KAChBvC,OAAOuQ,KAAK4c,EAAI5qB,IAAMW,OAAS,GAC/BgqB,EAAOlpB,EAAOzB,GAAM4qB,EAAI5qB,OAKpC,IAAI6qB,EAA0B,qBAAb7oB,SAA2BA,SAAW,GACnD8oB,EAAc,CACdvI,KAAM,GACN/J,iBAAkB,aAClBiD,oBAAqB,aACrBsP,cAAe,CACXC,KAAM,aACNC,SAAU,IAEdC,cAAe,WACX,OAAO,MAEXC,iBAAkB,WACd,MAAO,IAEXC,eAAgB,WACZ,OAAO,MAEXC,YAAa,WACT,MAAO,CACHC,UAAW,eAGnBxc,cAAe,WACX,MAAO,CACH/G,SAAU,GACVwjB,WAAY,GACZhf,MAAO,GACPuc,aAAc,aACd0C,qBAAsB,WAClB,MAAO,MAInBC,gBAAiB,WACb,MAAO,IAEXC,WAAY,WACR,OAAO,MAEXC,SAAU,CACNC,KAAM,GACNC,KAAM,GACNC,SAAU,GACV5f,KAAM,GACN6f,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,KAGhBvB,EAAOE,EAAKC,GAEZ,IAAIqB,EAAwB,qBAAXtQ,OAAyBA,OAAS,GA2CnD8O,EAAOwB,EA1CS,CACZnqB,SAAU8oB,EACVsB,UAAW,CACPC,UAAW,IAEfV,SAAU,CACNC,KAAM,GACNC,KAAM,GACNC,SAAU,GACV5f,KAAM,GACN6f,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,IAEZI,QAAS,CACLC,aAAc,aACdC,UAAW,aACXC,GAAI,aACJC,KAAM,cAEVC,YAAa,WACT,OAAO1d,MAEXuJ,iBAAkB,aAClBiD,oBAAqB,aACrBK,iBAAkB,WACd,MAAO,CACH8Q,iBAAkB,WACd,MAAO,MAInBC,MAAO,aACPC,KAAM,aACNC,OAAQ,GACRroB,WAAY,aACZ0C,aAAc,aACd4lB,WAAY,WACR,MAAO,UC9GTC,GAAAA,EAAAA,EAAAA,IACJ,WAAYhP,IAAK,eAGf,IAFA,IAESzQ,EAAI,EAAGA,EAAIyQ,EAAItd,OAAQ6M,GAAK,EAFxByB,KAGNzB,GAAKyQ,EAAIzQ,GAIhB,OAPayB,KAKRtO,OAASsd,EAAItd,OAEXsO,QAIX,SAASie,EAAEC,EAAUnI,GACnB,IAAM/G,EAAM,GACRzQ,EAAI,EACR,GAAI2f,IAAanI,GACXmI,aAAoBF,EACtB,OAAOE,EAGX,GAAIA,EAEF,GAAwB,kBAAbA,EAAuB,CAChC,IAAIC,EACAC,EACEzkB,EAAOukB,EAASzsB,OACtB,GAAIkI,EAAKqb,QAAQ,MAAQ,GAAKrb,EAAKqb,QAAQ,MAAQ,EAAG,CACpD,IAAIqJ,EAAW,MAQf,IAP4B,IAAxB1kB,EAAKqb,QAAQ,SAAcqJ,EAAW,MACd,IAAxB1kB,EAAKqb,QAAQ,SAAcqJ,EAAW,SACd,IAAxB1kB,EAAKqb,QAAQ,QAAwC,IAAxBrb,EAAKqb,QAAQ,SAAcqJ,EAAW,MACxC,IAA3B1kB,EAAKqb,QAAQ,YAAiBqJ,EAAW,SACb,IAA5B1kB,EAAKqb,QAAQ,aAAkBqJ,EAAW,WAC9CD,EAAarrB,EAAAA,cAAuBsrB,IACzBjL,UAAYzZ,EAClB4E,EAAI,EAAGA,EAAI6f,EAAW9B,WAAW5qB,OAAQ6M,GAAK,EACjDyQ,EAAIrd,KAAKysB,EAAW9B,WAAW/d,SAUjC,IAFE4f,EALGpI,GAA2B,MAAhBmI,EAAS,IAAeA,EAASpsB,MAAM,aAK9CikB,GAAWhjB,GAAUmpB,iBAAiBgC,EAASzsB,QAHhD,CAACsB,EAAAA,eAAwBmrB,EAASzsB,OAAOmN,MAAM,KAAK,KAKvDL,EAAI,EAAGA,EAAI4f,EAAIzsB,OAAQ6M,GAAK,EAC3B4f,EAAI5f,IAAIyQ,EAAIrd,KAAKwsB,EAAI5f,SAGxB,GAAI2f,EAASI,UAAYJ,IAAatR,GAAUsR,IAAanrB,EAElEic,EAAIrd,KAAKusB,QACJ,GAAIA,EAASxsB,OAAS,GAAKwsB,EAAS,GAAGI,SAE5C,IAAK/f,EAAI,EAAGA,EAAI2f,EAASxsB,OAAQ6M,GAAK,EACpCyQ,EAAIrd,KAAKusB,EAAS3f,IAIxB,OAAO,IAAIyf,EAAKhP,GAOlB,SAASuP,EAAOvP,GAEd,IADA,IAAMwP,EAAc,GACXjgB,EAAI,EAAGA,EAAIyQ,EAAItd,OAAQ6M,GAAK,GACE,IAAjCigB,EAAYxJ,QAAQhG,EAAIzQ,KAAYigB,EAAY7sB,KAAKqd,EAAIzQ,IAE/D,OAAOigB,EATTP,EAAEpM,GAAKmM,EAAKtvB,UACZuvB,EAAEQ,MAAQT,EACVC,EAAED,KAAOA,EA+pCU,gBAAiBpf,MAAM,KCtsC1C,IAAM8f,EAAU,CACdnE,SD+DF,SAAkBroB,GAChB,GAAyB,qBAAdA,EACT,OAAO8N,KAGT,IADA,IAAM0Z,EAAUxnB,EAAU0M,MAAM,KACvBL,EAAI,EAAGA,EAAImb,EAAQhoB,OAAQ6M,GAAK,EACvC,IAAK,IAAI8H,EAAI,EAAGA,EAAIrG,KAAKtO,OAAQ2U,GAAK,EACb,qBAAZrG,KAAKqG,IAAmD,qBAAtBrG,KAAKqG,GAAGsT,WAA2B3Z,KAAKqG,GAAGsT,UAAUsB,IAAIvB,EAAQnb,IAGlH,OAAOyB,MCxEPyZ,YD0EF,SAAqBvnB,GAEnB,IADA,IAAMwnB,EAAUxnB,EAAU0M,MAAM,KACvBL,EAAI,EAAGA,EAAImb,EAAQhoB,OAAQ6M,GAAK,EACvC,IAAK,IAAI8H,EAAI,EAAGA,EAAIrG,KAAKtO,OAAQ2U,GAAK,EACb,qBAAZrG,KAAKqG,IAAmD,qBAAtBrG,KAAKqG,GAAGsT,WAA2B3Z,KAAKqG,GAAGsT,UAAUC,OAAOF,EAAQnb,IAGrH,OAAOyB,MChFPkb,SDkFF,SAAkBhpB,GAChB,QAAK8N,KAAK,IACHA,KAAK,GAAG2Z,UAAUtQ,SAASnX,ICnFlCysB,YDqFF,SAAqBzsB,GAEnB,IADA,IAAMwnB,EAAUxnB,EAAU0M,MAAM,KACvBL,EAAI,EAAGA,EAAImb,EAAQhoB,OAAQ6M,GAAK,EACvC,IAAK,IAAI8H,EAAI,EAAGA,EAAIrG,KAAKtO,OAAQ2U,GAAK,EACb,qBAAZrG,KAAKqG,IAAmD,qBAAtBrG,KAAKqG,GAAGsT,WAA2B3Z,KAAKqG,GAAGsT,UAAUiF,OAAOlF,EAAQnb,IAGrH,OAAOyB,MC3FP6e,KD6FF,SAAcC,EAAOhqB,GACnB,GAAyB,IAArBwK,UAAU5N,QAAiC,kBAAVotB,EAEnC,OAAI9e,KAAK,GAAWA,KAAK,GAAG+e,aAAaD,QACzC,EAIF,IAAK,IAAIvgB,EAAI,EAAGA,EAAIyB,KAAKtO,OAAQ6M,GAAK,EACpC,GAAyB,IAArBe,UAAU5N,OAEZsO,KAAKzB,GAAGsb,aAAaiF,EAAOhqB,QAI5B,IAAK,IAAMkqB,KAAYF,EACrB9e,KAAKzB,GAAGygB,GAAYF,EAAME,GAC1Bhf,KAAKzB,GAAGsb,aAAamF,EAAUF,EAAME,IAI3C,OAAOhf,MCjHPif,WDoHF,SAAoBJ,GAClB,IAAK,IAAItgB,EAAI,EAAGA,EAAIyB,KAAKtO,OAAQ6M,GAAK,EACpCyB,KAAKzB,GAAG2gB,gBAAgBL,GAE1B,OAAO7e,MCvHPtH,KD+IF,SAAc3H,EAAK+D,GACjB,IAAImP,EACJ,GAAqB,qBAAVnP,EAAX,CAkBA,IAAK,IAAIyJ,EAAI,EAAGA,EAAIyB,KAAKtO,OAAQ6M,GAAK,GACpC0F,EAAKjE,KAAKzB,IACF4gB,yBAAwBlb,EAAGkb,uBAAyB,IAC5Dlb,EAAGkb,uBAAuBpuB,GAAO+D,EAEnC,OAAOkL,KApBL,GAFAiE,EAAKjE,KAAK,GAEF,CACN,GAAIiE,EAAGkb,wBAA2BpuB,KAAOkT,EAAGkb,uBAC1C,OAAOlb,EAAGkb,uBAAuBpuB,GAGnC,IAAMquB,EAAUnb,EAAG8a,aAAH,eAAwBhuB,IACxC,OAAIquB,QAGJ,IC5JJ1Q,UD0OF,SAAmBA,GACjB,IAAK,IAAInQ,EAAI,EAAGA,EAAIyB,KAAKtO,OAAQ6M,GAAK,EAAG,CACvC,IAAM8gB,EAAUrf,KAAKzB,GAAGjB,MACxB+hB,EAAQC,gBAAkB5Q,EAC1B2Q,EAAQ3Q,UAAYA,EAEtB,OAAO1O,MC/OTuf,WDiPA,SAAoBC,GACM,kBAAbA,IACTA,EAAW,GAAH,OAAMA,EAAN,OAEV,IAAK,IAAIjhB,EAAI,EAAGA,EAAIyB,KAAKtO,OAAQ6M,GAAK,EAAG,CACvC,IAAM8gB,EAAUrf,KAAKzB,GAAGjB,MACxB+hB,EAAQI,yBAA2BD,EACnCH,EAAQK,mBAAqBF,EAE/B,OAAOxf,MCzPP2f,GD4PF,WAAqB,2BAAN3N,EAAM,yBAANA,EAAM,gBACnB,IAAK4N,EAAgD5N,EAArD,GAAgB6N,EAAqC7N,EAArD,GAAgC8N,EAAqB9N,EAArD,GAA0C+N,EAAW/N,EAArD,GAOA,SAASgO,EAAgBvnB,GACvB,IAAMjG,EAASiG,EAAEjG,OACjB,GAAKA,EAAL,CACA,IAAMytB,EAAYxnB,EAAEjG,OAAO0tB,eAAiB,GAI5C,GAHID,EAAUjL,QAAQvc,GAAK,GACzBwnB,EAAUE,QAAQ1nB,GAEhBwlB,EAAEzrB,GAAQ4tB,GAAGP,GAAiBC,EAAS3f,MAAM3N,EAAQytB,QAGvD,IADA,IAAMI,EAAUpC,EAAEzrB,GAAQ6tB,UACjB7f,EAAI,EAAGA,EAAI6f,EAAQ3uB,OAAQ8O,GAAK,EACnCyd,EAAEoC,EAAQ7f,IAAI4f,GAAGP,IAAiBC,EAAS3f,MAAMkgB,EAAQ7f,GAAIyf,IAIvE,SAASK,EAAY7nB,GACnB,IAAMwnB,EAAYxnB,GAAKA,EAAEjG,QAASiG,EAAEjG,OAAO0tB,eAAsB,GAC7DD,EAAUjL,QAAQvc,GAAK,GACzBwnB,EAAUE,QAAQ1nB,GAEpBqnB,EAAS3f,MAAMH,KAAMigB,GA1BA,oBAAZjO,EAAK,KACb4N,EAAgC5N,EADA,GACrB8N,EAAqB9N,EADA,GACX+N,EAAW/N,EADA,GAEjC6N,OAAiB/lB,GAEdimB,IAASA,GAAU,GA0BxB,IAFA,IACI1Z,EADEka,EAASX,EAAUhhB,MAAM,KAEtBL,EAAI,EAAGA,EAAIyB,KAAKtO,OAAQ6M,GAAK,EAAG,CACvC,IAAM0F,EAAKjE,KAAKzB,GAChB,GAAKshB,EAaH,IAAKxZ,EAAI,EAAGA,EAAIka,EAAO7uB,OAAQ2U,GAAK,EAAG,CACrC,IAAM9T,EAAQguB,EAAOla,GAChBpC,EAAGuc,oBAAmBvc,EAAGuc,kBAAoB,IAC7Cvc,EAAGuc,kBAAkBjuB,KAAQ0R,EAAGuc,kBAAkBjuB,GAAS,IAChE0R,EAAGuc,kBAAkBjuB,GAAOZ,KAAK,CAC/BmuB,SAAAA,EACAW,cAAeT,IAEjB/b,EAAGsF,iBAAiBhX,EAAOytB,EAAiBD,QApB9C,IAAK1Z,EAAI,EAAGA,EAAIka,EAAO7uB,OAAQ2U,GAAK,EAAG,CACrC,IAAM9T,EAAQguB,EAAOla,GAChBpC,EAAGyc,gBAAezc,EAAGyc,cAAgB,IACrCzc,EAAGyc,cAAcnuB,KAAQ0R,EAAGyc,cAAcnuB,GAAS,IACxD0R,EAAGyc,cAAcnuB,GAAOZ,KAAK,CAC3BmuB,SAAAA,EACAW,cAAeH,IAEjBrc,EAAGsF,iBAAiBhX,EAAO+tB,EAAaP,IAgB9C,OAAO/f,MCtTP2gB,IDwTF,WAAsB,2BAAN3O,EAAM,yBAANA,EAAM,gBACpB,IAAK4N,EAAgD5N,EAArD,GAAgB6N,EAAqC7N,EAArD,GAAgC8N,EAAqB9N,EAArD,GAA0C+N,EAAW/N,EAArD,GACuB,oBAAZA,EAAK,KACb4N,EAAgC5N,EADA,GACrB8N,EAAqB9N,EADA,GACX+N,EAAW/N,EADA,GAEjC6N,OAAiB/lB,GAEdimB,IAASA,GAAU,GAGxB,IADA,IAAMQ,EAASX,EAAUhhB,MAAM,KACtBL,EAAI,EAAGA,EAAIgiB,EAAO7uB,OAAQ6M,GAAK,EAEtC,IADA,IAAMhM,EAAQguB,EAAOhiB,GACZ8H,EAAI,EAAGA,EAAIrG,KAAKtO,OAAQ2U,GAAK,EAAG,CACvC,IAAMpC,EAAKjE,KAAKqG,GACZua,OAAQ,EAMZ,IALKf,GAAkB5b,EAAGyc,cACxBE,EAAW3c,EAAGyc,cAAcnuB,GACnBstB,GAAkB5b,EAAGuc,oBAC9BI,EAAW3c,EAAGuc,kBAAkBjuB,IAE9BquB,GAAYA,EAASlvB,OACvB,IAAK,IAAI8O,EAAIogB,EAASlvB,OAAS,EAAG8O,GAAK,EAAGA,GAAK,EAAG,CAChD,IAAMmY,EAAUiI,EAASpgB,GACrBsf,GAAYnH,EAAQmH,WAAaA,GAG1BA,GAAYnH,EAAQmH,UAAYnH,EAAQmH,SAASe,WAAalI,EAAQmH,SAASe,YAAcf,GAFtG7b,EAAGuI,oBAAoBja,EAAOomB,EAAQ8H,cAAeV,GACrDa,EAASE,OAAOtgB,EAAG,IAITsf,IACV7b,EAAGuI,oBAAoBja,EAAOomB,EAAQ8H,cAAeV,GACrDa,EAASE,OAAOtgB,EAAG,KAM7B,OAAOR,MC3VP+gB,QD8WF,WAA0B,2BAAN/O,EAAM,yBAANA,EAAM,gBAGxB,IAFA,IAAMuO,EAASvO,EAAK,GAAGpT,MAAM,KACvBqhB,EAAYjO,EAAK,GACdzT,EAAI,EAAGA,EAAIgiB,EAAO7uB,OAAQ6M,GAAK,EAEtC,IADA,IAAMhM,EAAQguB,EAAOhiB,GACZ8H,EAAI,EAAGA,EAAIrG,KAAKtO,OAAQ2U,GAAK,EAAG,CACvC,IAAMpC,EAAKjE,KAAKqG,GACZ2a,OAAG,EACP,IACEA,EAAM,IAAIpU,EAAAA,YAAmBra,EAAO,CAClC0uB,OAAQhB,EACRiB,SAAS,EACTC,YAAY,IAEd,MAAO1oB,IACPuoB,EAAMjuB,EAAAA,YAAqB,UACvBspB,UAAU9pB,GAAO,GAAM,GAC3ByuB,EAAIC,OAAShB,EAGfhc,EAAGic,cAAgBlO,EAAK/I,QAAO,SAACvQ,EAAM0oB,GAAP,OAAqBA,EAAY,KAChEnd,EAAGod,cAAcL,GACjB/c,EAAGic,cAAgB,UACZjc,EAAGic,cAGd,OAAOlgB,MCvYTshB,cDyYA,SAAuB9I,GACrB,IAEIja,EAFEgiB,EAAS,CAAC,sBAAuB,iBACjCgB,EAAMvhB,KAEZ,SAASwhB,EAAa/oB,GAEpB,GAAIA,EAAEjG,SAAWwN,KAEjB,IADAwY,EAASjZ,KAAKS,KAAMvH,GACf8F,EAAI,EAAGA,EAAIgiB,EAAO7uB,OAAQ6M,GAAK,EAClCgjB,EAAIZ,IAAIJ,EAAOhiB,GAAIijB,GAGvB,GAAIhJ,EACF,IAAKja,EAAI,EAAGA,EAAIgiB,EAAO7uB,OAAQ6M,GAAK,EAClCgjB,EAAI5B,GAAGY,EAAOhiB,GAAIijB,GAGtB,OAAOxhB,MCzZPyhB,WDybF,SAAoBC,GAClB,GAAI1hB,KAAKtO,OAAS,EAAG,CACnB,GAAIgwB,EAAgB,CAElB,IAAMC,EAAS3hB,KAAK2hB,SACpB,OAAO3hB,KAAK,GAAG4hB,YAAc3Q,WAAW0Q,EAAOhE,iBAAiB,iBAAmB1M,WAAW0Q,EAAOhE,iBAAiB,gBAExH,OAAO3d,KAAK,GAAG4hB,YAEjB,OAAO,MCjcPC,YD8cF,SAAqBH,GACnB,GAAI1hB,KAAKtO,OAAS,EAAG,CACnB,GAAIgwB,EAAgB,CAElB,IAAMC,EAAS3hB,KAAK2hB,SACpB,OAAO3hB,KAAK,GAAG8hB,aAAe7Q,WAAW0Q,EAAOhE,iBAAiB,eAAiB1M,WAAW0Q,EAAOhE,iBAAiB,kBAEvH,OAAO3d,KAAK,GAAG8hB,aAEjB,OAAO,MCtdP/S,ODwdF,WACE,GAAI/O,KAAKtO,OAAS,EAAG,CACnB,IAAMuS,EAAKjE,KAAK,GACV+hB,EAAM9d,EAAG2D,wBACT0L,EAAOvgB,EAAAA,KACPivB,EAAY/d,EAAG+d,WAAa1O,EAAK0O,WAAa,EAC9CC,EAAahe,EAAGge,YAAc3O,EAAK2O,YAAc,EACjDjH,EAAY/W,IAAO2I,EAASA,EAAAA,QAAiB3I,EAAG+W,UAChDkH,EAAaje,IAAO2I,EAASA,EAAAA,QAAiB3I,EAAGie,WACvD,MAAO,CACLxZ,IAAMqZ,EAAIrZ,IAAMsS,EAAagH,EAC7BvZ,KAAOsZ,EAAItZ,KAAOyZ,EAAcD,GAIpC,OAAO,MCtePE,ID+fF,SAAanwB,EAAO8C,GAClB,IAAIyJ,EACJ,GAAyB,IAArBe,UAAU5N,OAAc,CAC1B,GAAqB,kBAAVM,EAEJ,CACL,IAAKuM,EAAI,EAAGA,EAAIyB,KAAKtO,OAAQ6M,GAAK,EAEhC,IAAK,IAAI6jB,KAAQpwB,EACfgO,KAAKzB,GAAGjB,MAAM8kB,GAAQpwB,EAAMowB,GAGhC,OAAOpiB,KARP,GAAIA,KAAK,GAAI,OAAO4M,EAAAA,iBAAwB5M,KAAK,GAAI,MAAM2d,iBAAiB3rB,GAWhF,GAAyB,IAArBsN,UAAU5N,QAAiC,kBAAVM,EAAoB,CACvD,IAAKuM,EAAI,EAAGA,EAAIyB,KAAKtO,OAAQ6M,GAAK,EAChCyB,KAAKzB,GAAGjB,MAAMtL,GAAS8C,EAEzB,OAAOkL,KAET,OAAOA,MCnhBPqiB,KD+hBF,SAAc7J,GAEZ,IAAKA,EAAU,OAAOxY,KAEtB,IAAK,IAAIzB,EAAI,EAAGA,EAAIyB,KAAKtO,OAAQ6M,GAAK,EAEpC,IAA2C,IAAvCia,EAASjZ,KAAKS,KAAKzB,GAAIA,EAAGyB,KAAKzB,IAEjC,OAAOyB,KAIX,OAAOA,MC1iBPrG,KD2kBF,SAAcA,GACZ,GAAoB,qBAATA,EACT,OAAOqG,KAAK,GAAKA,KAAK,GAAGoT,eAAYtZ,EAGvC,IAAK,IAAIyE,EAAI,EAAGA,EAAIyB,KAAKtO,OAAQ6M,GAAK,EACpCyB,KAAKzB,GAAG6U,UAAYzZ,EAEtB,OAAOqG,MCllBPlE,KDqlBF,SAAcA,GACZ,GAAoB,qBAATA,EACT,OAAIkE,KAAK,GACAA,KAAK,GAAGsiB,YAAY7wB,OAEtB,KAGT,IAAK,IAAI8M,EAAI,EAAGA,EAAIyB,KAAKtO,OAAQ6M,GAAK,EACpCyB,KAAKzB,GAAG+jB,YAAcxmB,EAExB,OAAOkE,MC/lBPogB,GDimBF,SAAYlC,GACV,IACIqE,EACAhkB,EAFE0F,EAAKjE,KAAK,GAGhB,IAAKiE,GAA0B,qBAAbia,EAA0B,OAAO,EACnD,GAAwB,kBAAbA,EAAuB,CAChC,GAAIja,EAAGue,QAAS,OAAOve,EAAGue,QAAQtE,GAC7B,GAAIja,EAAGwe,sBAAuB,OAAOxe,EAAGwe,sBAAsBvE,GAC9D,GAAIja,EAAGye,kBAAmB,OAAOze,EAAGye,kBAAkBxE,GAG3D,IADAqE,EAActE,EAAEC,GACX3f,EAAI,EAAGA,EAAIgkB,EAAY7wB,OAAQ6M,GAAK,EACvC,GAAIgkB,EAAYhkB,KAAO0F,EAAI,OAAO,EAEpC,OAAO,EACF,GAAIia,IAAanrB,EAAU,OAAOkR,IAAOlR,EAC3C,GAAImrB,IAAatR,EAAQ,OAAO3I,IAAO2I,EAE5C,GAAIsR,EAASI,UAAYJ,aAAoBF,EAAM,CAEjD,IADAuE,EAAcrE,EAASI,SAAW,CAACJ,GAAYA,EAC1C3f,EAAI,EAAGA,EAAIgkB,EAAY7wB,OAAQ6M,GAAK,EACvC,GAAIgkB,EAAYhkB,KAAO0F,EAAI,OAAO,EAEpC,OAAO,EAET,OAAO,GCznBPT,MDioBF,WACE,IACIjF,EADAqE,EAAQ5C,KAAK,GAEjB,GAAI4C,EAAO,CAGT,IAFArE,EAAI,EAEuC,QAAnCqE,EAAQA,EAAM+f,kBACG,IAAnB/f,EAAM0b,WAAgB/f,GAAK,GAEjC,OAAOA,ICzoBTqkB,GD8oBF,SAAYpf,GACV,GAAqB,qBAAVA,EAAuB,OAAOxD,KACzC,IACI6iB,EADEnxB,EAASsO,KAAKtO,OAEpB,OACS,IAAIssB,EADTxa,EAAQ9R,EAAS,EACH,GAEd8R,EAAQ,GACVqf,EAAcnxB,EAAS8R,GACL,EAAmB,GACrB,CAACxD,KAAK6iB,IAER,CAAC7iB,KAAKwD,MCzpBtBsf,OD2pBF,WAGE,IAFA,IAAIC,EAEKviB,EAAI,EAAGA,EAAI,UAAK9O,OAAQ8O,GAAK,EAAG,CACvCuiB,EAAgBviB,EAAR,qBAAQA,OAAR,YAAQA,GAChB,IAAK,IAAIjC,EAAI,EAAGA,EAAIyB,KAAKtO,OAAQ6M,GAAK,EACpC,GAAwB,kBAAbwkB,EAAuB,CAChC,IAAMC,EAAUjwB,EAAAA,cAAuB,OAEvC,IADAiwB,EAAQ5P,UAAY2P,EACbC,EAAQC,YACbjjB,KAAKzB,GAAGgV,YAAYyP,EAAQC,iBAEzB,GAAIF,aAAoB/E,EAC7B,IAAK,IAAI3X,EAAI,EAAGA,EAAI0c,EAASrxB,OAAQ2U,GAAK,EACxCrG,KAAKzB,GAAGgV,YAAYwP,EAAS1c,SAG/BrG,KAAKzB,GAAGgV,YAAYwP,GAK1B,OAAO/iB,MChrBPkjB,QDurBF,SAAiBH,GACf,IAAIxkB,EACA8H,EACJ,IAAK9H,EAAI,EAAGA,EAAIyB,KAAKtO,OAAQ6M,GAAK,EAChC,GAAwB,kBAAbwkB,EAAuB,CAChC,IAAMC,EAAUjwB,EAAAA,cAAuB,OAEvC,IADAiwB,EAAQ5P,UAAY2P,EACf1c,EAAI2c,EAAQ1G,WAAW5qB,OAAS,EAAG2U,GAAK,EAAGA,GAAK,EACnDrG,KAAKzB,GAAG4kB,aAAaH,EAAQ1G,WAAWjW,GAAIrG,KAAKzB,GAAG+d,WAAW,SAE5D,GAAIyG,aAAoB/E,EAC7B,IAAK3X,EAAI,EAAGA,EAAI0c,EAASrxB,OAAQ2U,GAAK,EACpCrG,KAAKzB,GAAG4kB,aAAaJ,EAAS1c,GAAIrG,KAAKzB,GAAG+d,WAAW,SAGvDtc,KAAKzB,GAAG4kB,aAAaJ,EAAU/iB,KAAKzB,GAAG+d,WAAW,IAGtD,OAAOtc,MCxsBP2Q,KDuuBF,SAAcuN,GACZ,OAAIle,KAAKtO,OAAS,EACZwsB,EACEle,KAAK,GAAGojB,oBAAsBnF,EAAEje,KAAK,GAAGojB,oBAAoBhD,GAAGlC,GAC1D,IAAIF,EAAK,CAAChe,KAAK,GAAGojB,qBAEpB,IAAIpF,EAAK,IAGdhe,KAAK,GAAGojB,mBAA2B,IAAIpF,EAAK,CAAChe,KAAK,GAAGojB,qBAClD,IAAIpF,EAAK,IAEX,IAAIA,EAAK,KClvBhBqF,QDovBF,SAAiBnF,GACf,IAAMoF,EAAU,GACZrf,EAAKjE,KAAK,GACd,IAAKiE,EAAI,OAAO,IAAI+Z,EAAK,IACzB,KAAO/Z,EAAGmf,oBAAoB,CAC5B,IAAMzS,EAAO1M,EAAGmf,mBACZlF,EACED,EAAEtN,GAAMyP,GAAGlC,IAAWoF,EAAQ3xB,KAAKgf,GAClC2S,EAAQ3xB,KAAKgf,GACpB1M,EAAK0M,EAEP,OAAO,IAAIqN,EAAKsF,IC9vBhB5S,KDgwBF,SAAcwN,GACZ,GAAIle,KAAKtO,OAAS,EAAG,CACnB,IAAMuS,EAAKjE,KAAK,GAChB,OAAIke,EACEja,EAAGsf,wBAA0BtF,EAAEha,EAAGsf,wBAAwBnD,GAAGlC,GACxD,IAAIF,EAAK,CAAC/Z,EAAGsf,yBAEf,IAAIvF,EAAK,IAGd/Z,EAAGsf,uBAA+B,IAAIvF,EAAK,CAAC/Z,EAAGsf,yBAC5C,IAAIvF,EAAK,IAElB,OAAO,IAAIA,EAAK,KC5wBhBwF,QD8wBF,SAAiBtF,GACf,IAAMuF,EAAU,GACZxf,EAAKjE,KAAK,GACd,IAAKiE,EAAI,OAAO,IAAI+Z,EAAK,IACzB,KAAO/Z,EAAGsf,wBAAwB,CAChC,IAAM7S,EAAOzM,EAAGsf,uBACZrF,EACED,EAAEvN,GAAM0P,GAAGlC,IAAWuF,EAAQ9xB,KAAK+e,GAClC+S,EAAQ9xB,KAAK+e,GACpBzM,EAAKyM,EAEP,OAAO,IAAIsN,EAAKyF,ICxxBhBC,OD6xBF,SAAgBxF,GAEd,IADA,IAAMmC,EAAU,GACP9hB,EAAI,EAAGA,EAAIyB,KAAKtO,OAAQ6M,GAAK,EACT,OAAvByB,KAAKzB,GAAGolB,aACNzF,EACED,EAAEje,KAAKzB,GAAGolB,YAAYvD,GAAGlC,IAAWmC,EAAQ1uB,KAAKqO,KAAKzB,GAAGolB,YAE7DtD,EAAQ1uB,KAAKqO,KAAKzB,GAAGolB,aAI3B,OAAO1F,EAAEM,EAAO8B,KCvyBhBA,QDyyBF,SAAiBnC,GAEf,IADA,IAAMmC,EAAU,GACP9hB,EAAI,EAAGA,EAAIyB,KAAKtO,OAAQ6M,GAAK,EAEpC,IADA,IAAImlB,EAAS1jB,KAAKzB,GAAGolB,WACdD,GACDxF,EACED,EAAEyF,GAAQtD,GAAGlC,IAAWmC,EAAQ1uB,KAAK+xB,GAEzCrD,EAAQ1uB,KAAK+xB,GAEfA,EAASA,EAAOC,WAGpB,OAAO1F,EAAEM,EAAO8B,KCrzBhBuD,QDuzBF,SAAiB1F,GACf,IAAI0F,EAAU5jB,KACd,MAAwB,qBAAbke,EACF,IAAIF,EAAK,KAEb4F,EAAQxD,GAAGlC,KACd0F,EAAUA,EAAQvD,QAAQnC,GAAU0E,GAAG,IAElCgB,IC9zBPC,KDg0BF,SAAc3F,GAEZ,IADA,IAAM4F,EAAgB,GACbvlB,EAAI,EAAGA,EAAIyB,KAAKtO,OAAQ6M,GAAK,EAEpC,IADA,IAAMwlB,EAAQ/jB,KAAKzB,GAAG2d,iBAAiBgC,GAC9B7X,EAAI,EAAGA,EAAI0d,EAAMryB,OAAQ2U,GAAK,EACrCyd,EAAcnyB,KAAKoyB,EAAM1d,IAG7B,OAAO,IAAI2X,EAAK8F,ICv0BhBhrB,SDy0BF,SAAkBolB,GAEhB,IADA,IAAMplB,EAAW,GACRyF,EAAI,EAAGA,EAAIyB,KAAKtO,OAAQ6M,GAAK,EAGpC,IAFA,IAAM+d,EAAatc,KAAKzB,GAAG+d,WAElBjW,EAAI,EAAGA,EAAIiW,EAAW5qB,OAAQ2U,GAAK,EACrC6X,EAEiC,IAA3B5B,EAAWjW,GAAGiY,UAAkBL,EAAE3B,EAAWjW,IAAI+Z,GAAGlC,IAC7DplB,EAASnH,KAAK2qB,EAAWjW,IAFM,IAA3BiW,EAAWjW,GAAGiY,UAAgBxlB,EAASnH,KAAK2qB,EAAWjW,IAMjE,OAAO,IAAI2X,EAAKO,EAAOzlB,KCr1BvBmQ,OD0iBF,SAAgBuP,GAGd,IAFA,IAAMwL,EAAe,GACfzC,EAAMvhB,KACHzB,EAAI,EAAGA,EAAIgjB,EAAI7vB,OAAQ6M,GAAK,EAC/Bia,EAASjZ,KAAKgiB,EAAIhjB,GAAIA,EAAGgjB,EAAIhjB,KAAKylB,EAAaryB,KAAK4vB,EAAIhjB,IAE9D,OAAO,IAAIyf,EAAKgG,IC/iBhBpK,ODs1BF,WACE,IAAK,IAAIrb,EAAI,EAAGA,EAAIyB,KAAKtO,OAAQ6M,GAAK,EAChCyB,KAAKzB,GAAGolB,YAAY3jB,KAAKzB,GAAGolB,WAAWnQ,YAAYxT,KAAKzB,IAE9D,OAAOyB,MCz1BPib,ID81BF,WAAsB,IACpB,IACI1c,EACA8H,EAFEkb,EAAMvhB,KADQ,mBAANgS,EAAM,yBAANA,EAAM,gBAIpB,IAAKzT,EAAI,EAAGA,EAAIyT,EAAKtgB,OAAQ6M,GAAK,EAAG,CACnC,IAAM0lB,EAAQhG,EAAEjM,EAAKzT,IACrB,IAAK8H,EAAI,EAAGA,EAAI4d,EAAMvyB,OAAQ2U,GAAK,EACjCkb,EAAIA,EAAI7vB,QAAUuyB,EAAM5d,GACxBkb,EAAI7vB,QAAU,EAGlB,OAAO6vB,GCx2BPI,ODseF,WACE,OAAI3hB,KAAK,GAAW4M,EAAAA,iBAAwB5M,KAAK,GAAI,MAC9C,KCreTxR,OAAOuQ,KAAK2f,GAAS7f,SAAQ,SAACqlB,GAC5BjG,EAAEpM,GAAGqS,GAAcjG,EAAEpM,GAAGqS,IAAexF,EAAQwF,MClFjD,IAAMC,EAAQ,CACZC,YADY,SACA3I,GACV,IAAM4I,EAAS5I,EACfjtB,OAAOuQ,KAAKslB,GAAQxlB,SAAQ,SAAC9N,GAC3B,IACEszB,EAAOtzB,GAAO,KACd,MAAO0H,IAGT,WACS4rB,EAAOtzB,GACd,MAAO0H,SAKb6rB,SAhBY,SAgBH9L,GAAqB,IAAX+L,EAAW,uDAAH,EACzB,OAAO9uB,WAAW+iB,EAAU+L,IAE9BC,IAnBY,WAoBV,OAAO3G,KAAK2G,OAEdC,aAtBY,SAsBCxgB,GAAgB,IACvBygB,EACAC,EACAC,EAHWC,EAAY,uDAAL,IAKhBC,EAAWlY,EAAAA,iBAAwB3I,EAAI,MA+B7C,OA7BI2I,EAAAA,kBACF+X,EAAeG,EAASpW,WAAaoW,EAASxF,iBAC7B1gB,MAAM,KAAKlN,OAAS,IACnCizB,EAAeA,EAAa/lB,MAAM,MAAMlH,KAAI,SAAC0O,GAAD,OAAOA,EAAEtJ,QAAQ,IAAK,QAAM4B,KAAK,OAI/EkmB,EAAkB,IAAIhY,EAAAA,gBAAwC,SAAjB+X,EAA0B,GAAKA,IAG5ED,GADAE,EAAkBE,EAASC,cAAgBD,EAASE,YAAcF,EAASG,aAAeH,EAASI,aAAeJ,EAASpW,WAAaoW,EAASnH,iBAAiB,aAAa7gB,QAAQ,aAAc,uBAC5KsT,WAAWxR,MAAM,KAG/B,MAATimB,IAE0BF,EAAxB/X,EAAAA,gBAAuCgY,EAAgBO,IAEhC,KAAlBT,EAAOhzB,OAA8Buf,WAAWyT,EAAO,KAE5CzT,WAAWyT,EAAO,KAE3B,MAATG,IAE0BF,EAAxB/X,EAAAA,gBAAuCgY,EAAgBQ,IAEhC,KAAlBV,EAAOhzB,OAA8Buf,WAAWyT,EAAO,KAE5CzT,WAAWyT,EAAO,KAEjCC,GAAgB,GAEzBU,cA5DY,SA4DEC,GACZ,IAEI/mB,EACAgnB,EACAC,EACA9zB,EALE+zB,EAAQ,GACVC,EAAaJ,GAAO1Y,EAAAA,SAAAA,KAKxB,GAA0B,kBAAf8Y,GAA2BA,EAAWh0B,OAK/C,IAFAA,GADA6zB,GADAG,EAAaA,EAAW1Q,QAAQ,MAAQ,EAAI0Q,EAAW5oB,QAAQ,QAAS,IAAM,IAC1D8B,MAAM,KAAKqK,QAAO,SAAC0c,GAAD,MAA+B,KAAfA,MACtCj0B,OAEX6M,EAAI,EAAGA,EAAI7M,EAAQ6M,GAAK,EAC3BinB,EAAQD,EAAOhnB,GAAGzB,QAAQ,QAAS,IAAI8B,MAAM,KAC7C6mB,EAAMG,mBAAmBJ,EAAM,KAA2B,qBAAbA,EAAM,QAAqB1rB,EAAY8rB,mBAAmBJ,EAAM,KAAO,GAGxH,OAAOC,GAETjK,SA/EY,SA+EH9V,GACP,MAAoB,kBAANA,GAAwB,OAANA,GAAcA,EAAEH,aAAeG,EAAEH,cAAgB/W,QAEnFktB,OAlFY,WAoFV,IADA,IAAMtc,EAAK5Q,OAAO,UAAD,+BACR+P,EAAI,EAAGA,EAAI,UAAK7M,OAAQ6M,GAAK,EAAG,CACvC,IAAMsnB,EAAkBtnB,EAAR,qBAAQA,OAAR,YAAQA,GACxB,QAAmBzE,IAAf+rB,GAA2C,OAAfA,EAE9B,IADA,IAAMC,EAAYt3B,OAAOuQ,KAAKvQ,OAAOq3B,IAC5BE,EAAY,EAAGC,EAAMF,EAAUp0B,OAAQq0B,EAAYC,EAAKD,GAAa,EAAG,CAC/E,IAAME,EAAUH,EAAUC,GACpBG,EAAO13B,OAAO23B,yBAAyBN,EAAYI,QAC5CnsB,IAATosB,GAAsBA,EAAKrgB,aACzBse,EAAM3I,SAASpc,EAAG6mB,KAAa9B,EAAM3I,SAASqK,EAAWI,IAC3D9B,EAAMzI,OAAOtc,EAAG6mB,GAAUJ,EAAWI,KAC3B9B,EAAM3I,SAASpc,EAAG6mB,KAAa9B,EAAM3I,SAASqK,EAAWI,KACnE7mB,EAAG6mB,GAAW,GACd9B,EAAMzI,OAAOtc,EAAG6mB,GAAUJ,EAAWI,KAErC7mB,EAAG6mB,GAAWJ,EAAWI,KAMnC,OAAO7mB,ICxGLgnB,EACG,CACLC,SAAW,oBAA8BzZ,EAAAA,eAAwB7Z,aAAoB6Z,EAAAA,eAErF0Z,gBAAiB1Z,EAAAA,cAAwB,gCAAyCA,EAAAA,UAAAA,gBAAmC,EAErH2Z,SACU,wBAAgC,6BAG1CC,gBAAkB,WAChB,IAAIC,GAAkB,EACtB,IACE,IAAMC,EAAOl4B,OAAOkS,eAAe,GAAI,UAAW,CAEhDoF,IAFgD,WAG9C2gB,GAAkB,KAGtB7Z,EAAAA,iBAAwB,sBAAuB,KAAM8Z,GACrD,MAAOjuB,IAGT,OAAOguB,EAbS,GAgBlBE,SACS,sBC3BPC,EAAAA,WACJ,aAAyB,IAAbrB,EAAa,uDAAJ,IAAI,eACvB,IAAMsB,EAAO7mB,KACb6mB,EAAKtB,OAASA,EAGdsB,EAAKC,gBAAkB,GAEnBD,EAAKtB,QAAUsB,EAAKtB,OAAO5F,IAC7BnxB,OAAOuQ,KAAK8nB,EAAKtB,OAAO5F,IAAI9gB,SAAQ,SAACkoB,GACnCF,EAAKlH,GAAGoH,EAAWF,EAAKtB,OAAO5F,GAAGoH,wCAKxC,SAAGxG,EAAQ5H,EAASqO,GAClB,IAAMH,EAAO7mB,KACb,GAAuB,oBAAZ2Y,EAAwB,OAAOkO,EAC1C,IAAMI,EAASD,EAAW,UAAY,OAKtC,OAJAzG,EAAO3hB,MAAM,KAAKC,SAAQ,SAACtM,GACpBs0B,EAAKC,gBAAgBv0B,KAAQs0B,EAAKC,gBAAgBv0B,GAAS,IAChEs0B,EAAKC,gBAAgBv0B,GAAO00B,GAAQtO,MAE/BkO,sBAGT,SAAKtG,EAAQ5H,EAASqO,GACpB,IAAMH,EAAO7mB,KACb,GAAuB,oBAAZ2Y,EAAwB,OAAOkO,EAC1C,SAASK,IACPL,EAAKlG,IAAIJ,EAAQ2G,GACbA,EAAYC,gBACPD,EAAYC,QAHO,2BAANnV,EAAM,yBAANA,EAAM,gBAK5B2G,EAAQxY,MAAM0mB,EAAM7U,GAGtB,OADAkV,EAAYC,QAAUxO,EACfkO,EAAKlH,GAAGY,EAAQ2G,EAAaF,sBAGtC,SAAIzG,EAAQ5H,GACV,IAAMkO,EAAO7mB,KACb,OAAK6mB,EAAKC,iBACVvG,EAAO3hB,MAAM,KAAKC,SAAQ,SAACtM,GACF,qBAAZomB,EACTkO,EAAKC,gBAAgBv0B,GAAS,GACrBs0B,EAAKC,gBAAgBv0B,IAAUs0B,EAAKC,gBAAgBv0B,GAAOb,QACpEm1B,EAAKC,gBAAgBv0B,GAAOsM,SAAQ,SAACuoB,EAAc5jB,IAC7C4jB,IAAiBzO,GAAYyO,EAAaD,SAAWC,EAAaD,UAAYxO,IAChFkO,EAAKC,gBAAgBv0B,GAAOuuB,OAAOtd,EAAO,SAK3CqjB,GAZ2BA,sBAepC,WACE,IAEItG,EACA7nB,EACAqd,EAJE8Q,EAAO7mB,KACb,IAAK6mB,EAAKC,gBAAiB,OAAOD,EAFtB,2BAAN7U,EAAM,yBAANA,EAAM,gBAMW,kBAAZA,EAAK,IAAmBrN,MAAMC,QAAQoN,EAAK,KACpDuO,EAASvO,EAAK,GACdtZ,EAAOsZ,EAAK5F,MAAM,EAAG4F,EAAKtgB,QAC1BqkB,EAAU8Q,IAEVtG,EAASvO,EAAK,GAAGuO,OACjB7nB,EAAOsZ,EAAK,GAAGtZ,KACfqd,EAAU/D,EAAK,GAAG+D,SAAW8Q,GAE/B,IAAMQ,EAAc1iB,MAAMC,QAAQ2b,GAAUA,EAASA,EAAO3hB,MAAM,KAYlE,OAXAyoB,EAAYxoB,SAAQ,SAACtM,GACnB,GAAIs0B,EAAKC,iBAAmBD,EAAKC,gBAAgBv0B,GAAQ,CACvD,IAAMquB,EAAW,GACjBiG,EAAKC,gBAAgBv0B,GAAOsM,SAAQ,SAACuoB,GACnCxG,EAASjvB,KAAKy1B,MAEhBxG,EAAS/hB,SAAQ,SAACuoB,GAChBA,EAAajnB,MAAM4V,EAASrd,UAI3BmuB,kCAGT,SAAiBS,GACf,IAAMC,EAAWvnB,KACZunB,EAASxiB,SACdvW,OAAOuQ,KAAKwoB,EAASxiB,SAASlG,SAAQ,SAACmG,GACrC,IAAMhH,EAASupB,EAASxiB,QAAQC,GAE5BhH,EAAOunB,QACTpB,EAAMzI,OAAO4L,EAAgBtpB,EAAOunB,qCAK1C,WAA+B,IAApBiC,EAAoB,uDAAJ,GACnBD,EAAWvnB,KACZunB,EAASxiB,SACdvW,OAAOuQ,KAAKwoB,EAASxiB,SAASlG,SAAQ,SAACmG,GACrC,IAAMhH,EAASupB,EAASxiB,QAAQC,GAC1ByiB,EAAeD,EAAcxiB,IAAe,GAE9ChH,EAAOupB,UACT/4B,OAAOuQ,KAAKf,EAAOupB,UAAU1oB,SAAQ,SAAC6oB,GACpC,IAAMC,EAAa3pB,EAAOupB,SAASG,GAEjCH,EAASG,GADe,oBAAfC,EACkBA,EAAWC,KAAKL,GAEhBI,KAK7B3pB,EAAO2hB,IAAM4H,EAAS5H,IACxBnxB,OAAOuQ,KAAKf,EAAO2hB,IAAI9gB,SAAQ,SAACgpB,GAC9BN,EAAS5H,GAAGkI,EAAiB7pB,EAAO2hB,GAAGkI,OAKvC7pB,EAAOwH,QACTxH,EAAOwH,OAAOoiB,KAAKL,EAAnBvpB,CAA6BypB,gCAKnC,SAAsBK,GACN9nB,KACH+nB,KADG/nB,KAER+nB,IAAID,gCAGZ,SAAqB9pB,GACnB,IAAMygB,EAAQze,KACTye,EAAM/vB,UAAUqW,UAAS0Z,EAAM/vB,UAAUqW,QAAU,IACxD,IAAMzW,EAAO0P,EAAO1P,MAAP,UAAmBE,OAAOuQ,KAAK0f,EAAM/vB,UAAUqW,SAASrT,OAAxD,YAAkEyyB,EAAMK,OAerF,GAdA/F,EAAM/vB,UAAUqW,QAAQzW,GAAQ0P,EAE5BA,EAAOgqB,OACTx5B,OAAOuQ,KAAKf,EAAOgqB,OAAOnpB,SAAQ,SAAC9N,GACjC0tB,EAAM/vB,UAAUqC,GAAOiN,EAAOgqB,MAAMj3B,MAIpCiN,EAAOiqB,QACTz5B,OAAOuQ,KAAKf,EAAOiqB,QAAQppB,SAAQ,SAAC9N,GAClC0tB,EAAM1tB,GAAOiN,EAAOiqB,OAAOl3B,MAI3BiN,EAAOkqB,QAAS,4BAlBU3C,EAkBV,iCAlBUA,EAkBV,kBAClBvnB,EAAOkqB,QAAQ/nB,MAAMse,EAAO8G,GAE9B,OAAO9G,qBAGT,SAAWzgB,GACT,IAAMygB,EAAQze,KACd,GAAI2E,MAAMC,QAAQ5G,GAEhB,OADAA,EAAOa,SAAQ,SAAC8G,GAAD,OAAO8Y,EAAM0J,cAAcxiB,MACnC8Y,EAJmB,2BAAR8G,EAAQ,iCAARA,EAAQ,kBAM5B,OAAO9G,EAAM0J,cAAN,MAAA1J,EAAK,CAAezgB,GAAf,OAA0BunB,UAtKpCqB,GCQN,MAAe,CACbwB,WCTa,WACb,IACIp0B,EACAC,EAFE0P,EAAS3D,KAGTqoB,EAAM1kB,EAAO0kB,IAEjBr0B,EADiC,qBAAxB2P,EAAO4hB,OAAOvxB,MACf2P,EAAO4hB,OAAOvxB,MAEdq0B,EAAI,GAAGC,YAGfr0B,EADkC,qBAAzB0P,EAAO4hB,OAAOtxB,OACd0P,EAAO4hB,OAAOtxB,OAEdo0B,EAAI,GAAGE,aAEH,IAAVv0B,GAAe2P,EAAO6kB,gBAA+B,IAAXv0B,GAAgB0P,EAAOiI,eAKtE5X,EAAQA,EAAQ+Y,SAASsb,EAAIlG,IAAI,gBAAiB,IAAMpV,SAASsb,EAAIlG,IAAI,iBAAkB,IAC3FluB,EAASA,EAAS8Y,SAASsb,EAAIlG,IAAI,eAAgB,IAAMpV,SAASsb,EAAIlG,IAAI,kBAAmB,IAE7FgC,EAAMzI,OAAO/X,EAAQ,CACnB3P,MAAAA,EACAC,OAAAA,EACAw0B,KAAM9kB,EAAO6kB,eAAiBx0B,EAAQC,MDhBxCy0B,aETa,WACb,IAAM/kB,EAAS3D,KACTulB,EAAS5hB,EAAO4hB,OAGpBoD,EACEhlB,EADFglB,WAAkBC,EAChBjlB,EADU8kB,KAAgCvmB,EAC1CyB,EAD4BklB,aAAmBC,EAC/CnlB,EAD+CmlB,SAE7CC,EAAYplB,EAAOqlB,SAAWzD,EAAOyD,QAAQC,QAC7CC,EAAuBH,EAAYplB,EAAOqlB,QAAQ1lB,OAAO5R,OAASiS,EAAOL,OAAO5R,OAChF4R,EAASqlB,EAAW7vB,SAAX,WAAwB6K,EAAO4hB,OAAOljB,aAC/C8mB,EAAeJ,EAAYplB,EAAOqlB,QAAQ1lB,OAAO5R,OAAS4R,EAAO5R,OACnE03B,EAAW,GACTC,EAAa,GACbC,EAAkB,GAExB,SAASC,EAAgBC,GACvB,OAAKjE,EAAOkE,SACRD,IAAelmB,EAAO5R,OAAS,EAMrC,IAAIg4B,EAAenE,EAAOoE,mBACE,oBAAjBD,IACTA,EAAenE,EAAOoE,mBAAmBpqB,KAAKoE,IAGhD,IAAIimB,EAAcrE,EAAOsE,kBACE,oBAAhBD,IACTA,EAAcrE,EAAOsE,kBAAkBtqB,KAAKoE,IAG9C,IAAMmmB,EAAyBnmB,EAAOylB,SAAS13B,OACzCq4B,EAA2BpmB,EAAOylB,SAAS13B,OAE7Cs4B,EAAezE,EAAOyE,aACtBC,GAAiBP,EACjBQ,EAAgB,EAChB1mB,EAAQ,EACZ,GAA0B,qBAAfolB,EAAX,CAaA,IAAIuB,EAaAC,EAvBwB,kBAAjBJ,GAA6BA,EAAahV,QAAQ,MAAQ,IACnEgV,EAAgB/Y,WAAW+Y,EAAaltB,QAAQ,IAAK,KAAO,IAAO8rB,GAGrEjlB,EAAO0mB,aAAeL,EAGlB9nB,EAAKoB,EAAO6e,IAAI,CAAEhT,WAAY,GAAID,UAAW,KAC5C5L,EAAO6e,IAAI,CAAEmI,YAAa,GAAIC,aAAc,KAG7ChF,EAAOiF,gBAAkB,IAEzBL,EADE1mB,KAAKoN,MAAMsY,EAAe5D,EAAOiF,mBAAqBrB,EAAexlB,EAAO4hB,OAAOiF,gBAC5DrB,EAEA1lB,KAAKqP,KAAKqW,EAAe5D,EAAOiF,iBAAmBjF,EAAOiF,gBAExD,SAAzBjF,EAAOkF,eAA2D,QAA/BlF,EAAOmF,sBAC5CP,EAAyB1mB,KAAKC,IAAIymB,EAAwB5E,EAAOkF,cAAgBlF,EAAOiF,mBAS5F,IAHA,IA2IIG,EA3IEH,EAAkBjF,EAAOiF,gBACzBI,EAAeT,EAAyBK,EACxCK,EAAiBpnB,KAAKoN,MAAMsY,EAAe5D,EAAOiF,iBAC/CjsB,EAAI,EAAGA,EAAI4qB,EAAc5qB,GAAK,EAAG,CACxC6rB,EAAY,EACZ,IAAMU,EAAQxnB,EAAOsf,GAAGrkB,GACxB,GAAIgnB,EAAOiF,gBAAkB,EAAG,CAE9B,IAAIO,OAAkB,EAClBC,OAAM,EACNC,OAAG,EACP,GAAmC,QAA/B1F,EAAOmF,qBAAiCnF,EAAO2F,eAAiB,EAAG,CACrE,IAAMC,EAAa1nB,KAAKoN,MAAMtS,GAAKgnB,EAAO2F,eAAiB3F,EAAOiF,kBAC5DY,EAAoB7sB,EAAIgnB,EAAOiF,gBAAkBjF,EAAO2F,eAAiBC,EACzEE,EAAgC,IAAfF,EACnB5F,EAAO2F,eACPznB,KAAKgE,IAAIhE,KAAKqP,MAAMqW,EAAegC,EAAaX,EAAkBjF,EAAO2F,gBAAkBV,GAAkBjF,EAAO2F,gBAIxHH,GAFAC,EAAUI,GADVH,EAAMxnB,KAAKoN,MAAMua,EAAoBC,IACDA,EAAkBF,EAAa5F,EAAO2F,gBAE1CD,EAAMd,EAA0BK,EAChEM,EACG3I,IAAI,CACH,4BAA6B4I,EAC7B,yBAA0BA,EAC1B,iBAAkBA,EAClB,gBAAiBA,EACjBO,MAAOP,QAE6B,WAA/BxF,EAAOmF,qBAEhBO,EAAM1sB,GADNysB,EAASvnB,KAAKoN,MAAMtS,EAAIisB,IACJA,GAChBQ,EAASH,GAAmBG,IAAWH,GAAkBI,IAAQT,EAAkB,KACrFS,GAAO,IACIT,IACTS,EAAM,EACND,GAAU,IAKdA,EAASzsB,GADT0sB,EAAMxnB,KAAKoN,MAAMtS,EAAIqsB,IACDA,EAEtBE,EAAM3I,IAAN,iBACYxe,EAAO6kB,eAAiB,MAAQ,QACjC,IAARyC,GAAa1F,EAAOyE,cAArB,UAA0CzE,EAAOyE,aAAjD,OAGJ,GAA6B,SAAzBc,EAAM3I,IAAI,WAAd,CAEA,GAA6B,SAAzBoD,EAAOkF,cAA0B,CACnC,IAAMc,EAAc3e,EAAAA,iBAAwBke,EAAM,GAAI,MAChDU,EAAmBV,EAAM,GAAGxtB,MAAMoR,UAClC+c,EAAyBX,EAAM,GAAGxtB,MAAMgiB,gBAO9C,GANIkM,IACFV,EAAM,GAAGxtB,MAAMoR,UAAY,QAEzB+c,IACFX,EAAM,GAAGxtB,MAAMgiB,gBAAkB,QAE/BiG,EAAOmG,aACTtB,EAAYzmB,EAAO6kB,eACfsC,EAAMrJ,YAAW,GACjBqJ,EAAMjJ,aAAY,QAGtB,GAAIle,EAAO6kB,eAAgB,CACzB,IAAMx0B,EAAQid,WAAWsa,EAAY5N,iBAAiB,UAChD1Q,EAAcgE,WAAWsa,EAAY5N,iBAAiB,iBACtDgO,EAAe1a,WAAWsa,EAAY5N,iBAAiB,kBACvDxO,EAAa8B,WAAWsa,EAAY5N,iBAAiB,gBACrD2M,EAAcrZ,WAAWsa,EAAY5N,iBAAiB,iBACtDiO,EAAYL,EAAY5N,iBAAiB,cAE7CyM,EADEwB,GAA2B,eAAdA,EACH53B,EAAQmb,EAAamb,EAErBt2B,EAAQiZ,EAAc0e,EAAexc,EAAamb,MAE3D,CACL,IAAMr2B,EAASgd,WAAWsa,EAAY5N,iBAAiB,WACjDzQ,EAAa+D,WAAWsa,EAAY5N,iBAAiB,gBACrDkO,EAAgB5a,WAAWsa,EAAY5N,iBAAiB,mBACxDzO,EAAY+B,WAAWsa,EAAY5N,iBAAiB,eACpD4M,EAAetZ,WAAWsa,EAAY5N,iBAAiB,kBACvDiO,EAAYL,EAAY5N,iBAAiB,cAE7CyM,EADEwB,GAA2B,eAAdA,EACH33B,EAASib,EAAYqb,EAErBt2B,EAASiZ,EAAa2e,EAAgB3c,EAAYqb,EAIhEiB,IACFV,EAAM,GAAGxtB,MAAMoR,UAAY8c,GAEzBC,IACFX,EAAM,GAAGxtB,MAAMgiB,gBAAkBmM,GAE/BlG,EAAOmG,eAActB,EAAY3mB,KAAKoN,MAAMuZ,SAEhDA,GAAaxB,GAAerD,EAAOkF,cAAgB,GAAKT,GAAiBzE,EAAOkF,cAC5ElF,EAAOmG,eAActB,EAAY3mB,KAAKoN,MAAMuZ,IAE5C9mB,EAAO/E,KACLoF,EAAO6kB,eACTllB,EAAO/E,GAAGjB,MAAMtJ,MAAhB,UAA2Bo2B,EAA3B,MAEA9mB,EAAO/E,GAAGjB,MAAMrJ,OAAhB,UAA4Bm2B,EAA5B,OAIF9mB,EAAO/E,KACT+E,EAAO/E,GAAGutB,gBAAkB1B,GAE9Bd,EAAgB33B,KAAKy4B,GAGjB7E,EAAOwG,gBACT9B,EAAgBA,EAAiBG,EAAY,EAAMF,EAAgB,EAAKF,EAClD,IAAlBE,GAA6B,IAAN3rB,IAAS0rB,EAAgBA,EAAiBrB,EAAa,EAAKoB,GAC7E,IAANzrB,IAAS0rB,EAAgBA,EAAiBrB,EAAa,EAAKoB,GAC5DvmB,KAAKuI,IAAIie,GAAiB,OAAUA,EAAgB,GACpD1E,EAAOmG,eAAczB,EAAgBxmB,KAAKoN,MAAMoZ,IAC/CzmB,EAAS+hB,EAAO2F,iBAAmB,GAAG9B,EAASz3B,KAAKs4B,GACzDZ,EAAW13B,KAAKs4B,KAEZ1E,EAAOmG,eAAczB,EAAgBxmB,KAAKoN,MAAMoZ,KAC/CzmB,EAAQC,KAAKgE,IAAI9D,EAAO4hB,OAAOyG,mBAAoBxoB,IAAUG,EAAO4hB,OAAO2F,iBAAmB,GAAG9B,EAASz3B,KAAKs4B,GACpHZ,EAAW13B,KAAKs4B,GAChBA,EAAgBA,EAAgBG,EAAYJ,GAG9CrmB,EAAO0mB,aAAeD,EAAYJ,EAElCE,EAAgBE,EAEhB5mB,GAAS,GAcX,GAZAG,EAAO0mB,YAAc5mB,KAAKC,IAAIC,EAAO0mB,YAAazB,GAAcgB,EAI9D1nB,GAAO4mB,IAA+B,UAAlBvD,EAAO0G,QAAwC,cAAlB1G,EAAO0G,SACxDtD,EAAWxG,IAAI,CAAEnuB,MAAO,GAAF,OAAK2P,EAAO0mB,YAAc9E,EAAOyE,aAAjC,QAEpBzE,EAAO2G,iBACLvoB,EAAO6kB,eAAgBG,EAAWxG,IAAI,CAAEnuB,MAAO,GAAF,OAAK2P,EAAO0mB,YAAc9E,EAAOyE,aAAjC,QAC5CrB,EAAWxG,IAAI,CAAEluB,OAAQ,GAAF,OAAK0P,EAAO0mB,YAAc9E,EAAOyE,aAAjC,SAG1BzE,EAAOiF,gBAAkB,IAC3B7mB,EAAO0mB,aAAeD,EAAY7E,EAAOyE,cAAgBG,EACzDxmB,EAAO0mB,YAAc5mB,KAAKqP,KAAKnP,EAAO0mB,YAAc9E,EAAOiF,iBAAmBjF,EAAOyE,aACjFrmB,EAAO6kB,eAAgBG,EAAWxG,IAAI,CAAEnuB,MAAO,GAAF,OAAK2P,EAAO0mB,YAAc9E,EAAOyE,aAAjC,QAC5CrB,EAAWxG,IAAI,CAAEluB,OAAQ,GAAF,OAAK0P,EAAO0mB,YAAc9E,EAAOyE,aAAjC,QACxBzE,EAAOwG,gBAAgB,CACzBpB,EAAgB,GAChB,IAAK,IAAIpsB,EAAI,EAAGA,EAAI6qB,EAAS13B,OAAQ6M,GAAK,EAAG,CAC3C,IAAI4tB,GAAiB/C,EAAS7qB,GAC1BgnB,EAAOmG,eAAcS,GAAiB1oB,KAAKoN,MAAMsb,KACjD/C,EAAS7qB,GAAKoF,EAAO0mB,YAAcjB,EAAS,IAAIuB,EAAch5B,KAAKw6B,IAEzE/C,EAAWuB,EAKf,IAAKpF,EAAOwG,eAAgB,CAC1BpB,EAAgB,GAChB,IAAK,IAAIpsB,GAAI,EAAGA,GAAI6qB,EAAS13B,OAAQ6M,IAAK,EAAG,CAC3C,IAAI4tB,GAAiB/C,EAAS7qB,IAC1BgnB,EAAOmG,eAAcS,GAAiB1oB,KAAKoN,MAAMsb,KACjD/C,EAAS7qB,KAAMoF,EAAO0mB,YAAczB,GACtC+B,EAAch5B,KAAKw6B,IAGvB/C,EAAWuB,EACPlnB,KAAKoN,MAAMlN,EAAO0mB,YAAczB,GAAcnlB,KAAKoN,MAAMuY,EAASA,EAAS13B,OAAS,IAAM,GAC5F03B,EAASz3B,KAAKgS,EAAO0mB,YAAczB,GAYvC,GATwB,IAApBQ,EAAS13B,SAAc03B,EAAW,CAAC,IAEX,IAAxB7D,EAAOyE,eACLrmB,EAAO6kB,eACLtmB,EAAKoB,EAAO2F,OAAOsgB,GAAiBpH,IAAI,CAAEhT,WAAY,GAAF,OAAK6a,EAAL,QACnD1mB,EAAO2F,OAAOsgB,GAAiBpH,IAAI,CAAEmI,YAAa,GAAF,OAAKN,EAAL,QAChD1mB,EAAO2F,OAAOsgB,GAAiBpH,IAAI,CAAEoI,aAAc,GAAF,OAAKP,EAAL,SAGtDzE,EAAOwG,gBAAkBxG,EAAO6G,qBAAsB,CACxD,IAAIC,GAAgB,EACpB/C,EAAgBzqB,SAAQ,SAACytB,GACvBD,IAAiBC,GAAkB/G,EAAOyE,aAAezE,EAAOyE,aAAe,MAGjF,IAAMuC,IADNF,IAAiB9G,EAAOyE,cACQpB,EAChCQ,EAAWA,EAAS1xB,KAAI,SAAC80B,GACvB,OAAIA,EAAO,GAAW9C,EAClB8C,EAAOD,GAAgBA,GAAU3C,EAC9B4C,KAIX,GAAIjH,EAAOkH,yBAA0B,CACnC,IAAIJ,GAAgB,EAKpB,GAJA/C,EAAgBzqB,SAAQ,SAACytB,GACvBD,IAAiBC,GAAkB/G,EAAOyE,aAAezE,EAAOyE,aAAe,OAEjFqC,IAAiB9G,EAAOyE,cACJpB,EAAY,CAC9B,IAAM8D,IAAmB9D,EAAayD,IAAiB,EACvDjD,EAASvqB,SAAQ,SAAC2tB,EAAMG,GACtBvD,EAASuD,GAAaH,EAAOE,MAE/BrD,EAAWxqB,SAAQ,SAAC2tB,EAAMG,GACxBtD,EAAWsD,GAAaH,EAAOE,OAKrCvI,EAAMzI,OAAO/X,EAAQ,CACnBL,OAAAA,EACA8lB,SAAAA,EACAC,WAAAA,EACAC,gBAAAA,IAGEH,IAAiBD,GACnBvlB,EAAOipB,KAAK,sBAEVxD,EAAS13B,SAAWo4B,IAClBnmB,EAAO4hB,OAAOsH,eAAelpB,EAAOmpB,gBACxCnpB,EAAOipB,KAAK,yBAEVvD,EAAW33B,SAAWq4B,GACxBpmB,EAAOipB,KAAK,2BAGVrH,EAAOwH,qBAAuBxH,EAAOyH,wBACvCrpB,EAAOspB,uBFzSTC,iBGba,SAAUC,GACvB,IAGI5uB,EAHEoF,EAAS3D,KACTotB,EAAe,GACjBC,EAAY,EAQhB,GANqB,kBAAVF,EACTxpB,EAAO2pB,cAAcH,IACF,IAAVA,GACTxpB,EAAO2pB,cAAc3pB,EAAO4hB,OAAO4H,OAGD,SAAhCxpB,EAAO4hB,OAAOkF,eAA4B9mB,EAAO4hB,OAAOkF,cAAgB,EAC1E,GAAI9mB,EAAO4hB,OAAOwG,eAChBpoB,EAAO4pB,cAAclL,MAAK,SAAC7e,EAAOsnB,GAChCsC,EAAaz7B,KAAKm5B,WAGpB,IAAKvsB,EAAI,EAAGA,EAAIkF,KAAKqP,KAAKnP,EAAO4hB,OAAOkF,eAAgBlsB,GAAK,EAAG,CAC9D,IAAMiF,EAAQG,EAAOJ,YAAchF,EACnC,GAAIiF,EAAQG,EAAOL,OAAO5R,OAAQ,MAClC07B,EAAaz7B,KAAKgS,EAAOL,OAAOsf,GAAGpf,GAAO,SAI9C4pB,EAAaz7B,KAAKgS,EAAOL,OAAOsf,GAAGjf,EAAOJ,aAAa,IAIzD,IAAKhF,EAAI,EAAGA,EAAI6uB,EAAa17B,OAAQ6M,GAAK,EACxC,GAA+B,qBAApB6uB,EAAa7uB,GAAoB,CAC1C,IAAMtK,EAASm5B,EAAa7uB,GAAGujB,aAC/BuL,EAAYp5B,EAASo5B,EAAYp5B,EAASo5B,EAK1CA,GAAW1pB,EAAOglB,WAAWxG,IAAI,SAAtB,UAAmCkL,EAAnC,QHtBfJ,mBIda,WAGb,IAFA,IACM3pB,EADStD,KACOsD,OACb/E,EAAI,EAAGA,EAAI+E,EAAO5R,OAAQ6M,GAAK,EACtC+E,EAAO/E,GAAGivB,kBAHGxtB,KAGwBwoB,eAAiBllB,EAAO/E,GAAGkvB,WAAanqB,EAAO/E,GAAGmvB,WJWzFC,qBKba,WAAqD,IAA3C1d,EAA2C,uDAA9BjQ,MAAQA,KAAKiQ,WAAc,EACzDtM,EAAS3D,KACTulB,EAAS5hB,EAAO4hB,OAEdjiB,EAA8BK,EAA9BL,OAAsBpB,EAAQyB,EAAtBklB,aAEhB,GAAsB,IAAlBvlB,EAAO5R,OAAX,CAC2C,qBAAhC4R,EAAO,GAAGkqB,mBAAmC7pB,EAAOspB,qBAE/D,IAAIW,GAAgB3d,EAChB/N,IAAK0rB,EAAe3d,GAGxB3M,EAAOmW,YAAY8L,EAAOsI,mBAE1BlqB,EAAOmqB,qBAAuB,GAC9BnqB,EAAO4pB,cAAgB,GAEvB,IAAK,IAAIhvB,EAAI,EAAGA,EAAI+E,EAAO5R,OAAQ6M,GAAK,EAAG,CACzC,IAAMusB,EAAQxnB,EAAO/E,GACfwvB,GACHH,GAAgBrI,EAAOwG,eAAiBpoB,EAAOqqB,eAAiB,GAAMlD,EAAM0C,oBAC1E1C,EAAMgB,gBAAkBvG,EAAOyE,cACpC,GAAIzE,EAAOyH,uBAA0BzH,EAAOwG,gBAAkBxG,EAAO0I,WAAa,CAChF,IAAMC,IAAgBN,EAAe9C,EAAM0C,mBACrCW,EAAaD,EAAcvqB,EAAO2lB,gBAAgB/qB,GAClD6vB,EAAaF,GAAe,GAAKA,EAAcvqB,EAAO8kB,KAAO,GACrD0F,EAAa,GAAKA,GAAcxqB,EAAO8kB,MACvCyF,GAAe,GAAKC,GAAcxqB,EAAO8kB,KACnD2F,IACFzqB,EAAO4pB,cAAc57B,KAAKm5B,GAC1BnnB,EAAOmqB,qBAAqBn8B,KAAK4M,GACjC+E,EAAOsf,GAAGrkB,GAAGgc,SAASgL,EAAOsI,oBAGjC/C,EAAMuD,SAAWnsB,GAAO6rB,EAAgBA,EAE1CpqB,EAAO4pB,cAAgBtP,EAAEta,EAAO4pB,iBLvBhCe,eMda,SAAUre,GACvB,IAAMtM,EAAS3D,KACf,GAAyB,qBAAdiQ,EAA2B,CACpC,IAAMse,EAAa5qB,EAAOklB,cAAgB,EAAI,EAE9C5Y,EAAatM,GAAUA,EAAOsM,WAActM,EAAOsM,UAAYse,GAAgB,EAEjF,IAAMhJ,EAAS5hB,EAAO4hB,OAChBiJ,EAAiB7qB,EAAO8qB,eAAiB9qB,EAAOqqB,eAChDK,EAAiC1qB,EAAjC0qB,SAAUK,EAAuB/qB,EAAvB+qB,YAAaC,EAAUhrB,EAAVgrB,MACvBC,EAAeF,EACfG,EAASF,EACQ,IAAnBH,GACFH,EAAW,EACXK,GAAc,EACdC,GAAQ,IAGRD,GADAL,GAAYpe,EAAYtM,EAAOqqB,gBAAmBQ,IACxB,EAC1BG,EAAQN,GAAY,GAEtBlK,EAAMzI,OAAO/X,EAAQ,CACnB0qB,SAAAA,EACAK,YAAAA,EACAC,MAAAA,KAGEpJ,EAAOwH,qBAAuBxH,EAAOyH,uBAA0BzH,EAAOwG,gBAAkBxG,EAAO0I,aAAatqB,EAAOgqB,qBAAqB1d,GAExIye,IAAgBE,GAClBjrB,EAAOipB,KAAK,yBAEV+B,IAAUE,GACZlrB,EAAOipB,KAAK,oBAETgC,IAAiBF,GAAiBG,IAAWF,IAChDhrB,EAAOipB,KAAK,YAGdjpB,EAAOipB,KAAK,WAAYyB,INxBxBS,oBOjBa,WACb,IASIC,EATEprB,EAAS3D,KAGbsD,EACEK,EADFL,OAAQiiB,EACN5hB,EADM4hB,OAAQoD,EACdhlB,EADcglB,WAAYplB,EAC1BI,EAD0BJ,YAAayrB,EACvCrrB,EADuCqrB,UAErCjG,EAAYplB,EAAOqlB,SAAWzD,EAAOyD,QAAQC,QAEnD3lB,EAAOmW,YAAP,UAAsB8L,EAAO0J,iBAA7B,YAAiD1J,EAAO2J,eAAxD,YAA0E3J,EAAO4J,eAAjF,YAAmG5J,EAAO6J,0BAA1G,YAAuI7J,EAAO8J,wBAA9I,YAAyK9J,EAAO+J,2BAI9KP,EADEhG,EACYplB,EAAOglB,WAAW9E,KAAlB,WAA2B0B,EAAOljB,WAAlC,qCAAyEkB,EAAzE,OAEAD,EAAOsf,GAAGrf,IAIdgX,SAASgL,EAAO0J,kBAExB1J,EAAOjjB,OAELysB,EAAY7T,SAASqK,EAAOgK,qBAC9B5G,EACG7vB,SADH,WACgBysB,EAAOljB,WADvB,iBAC0CkjB,EAAOgK,oBADjD,sCACkGP,EADlG,OAEGzU,SAASgL,EAAO6J,2BAEnBzG,EACG7vB,SADH,WACgBysB,EAAOljB,WADvB,YACqCkjB,EAAOgK,oBAD5C,qCAC4FP,EAD5F,OAEGzU,SAASgL,EAAO6J,4BAIvB,IAAII,EAAYT,EAAY1L,QAAZ,WAAwBkC,EAAOljB,aAAcugB,GAAG,GAAGrI,SAASgL,EAAO2J,gBAC/E3J,EAAOjjB,MAA6B,IAArBktB,EAAU99B,SAC3B89B,EAAYlsB,EAAOsf,GAAG,IACZrI,SAASgL,EAAO2J,gBAG5B,IAAIO,EAAYV,EAAYvL,QAAZ,WAAwB+B,EAAOljB,aAAcugB,GAAG,GAAGrI,SAASgL,EAAO4J,gBAC/E5J,EAAOjjB,MAA6B,IAArBmtB,EAAU/9B,SAC3B+9B,EAAYnsB,EAAOsf,IAAI,IACbrI,SAASgL,EAAO4J,gBAExB5J,EAAOjjB,OAELktB,EAAUtU,SAASqK,EAAOgK,qBAC5B5G,EACG7vB,SADH,WACgBysB,EAAOljB,WADvB,iBAC0CkjB,EAAOgK,oBADjD,sCACkGC,EAAU3Q,KAAK,2BADjH,OAEGtE,SAASgL,EAAO8J,yBAEnB1G,EACG7vB,SADH,WACgBysB,EAAOljB,WADvB,YACqCkjB,EAAOgK,oBAD5C,qCAC4FC,EAAU3Q,KAAK,2BAD3G,OAEGtE,SAASgL,EAAO8J,yBAEjBI,EAAUvU,SAASqK,EAAOgK,qBAC5B5G,EACG7vB,SADH,WACgBysB,EAAOljB,WADvB,iBAC0CkjB,EAAOgK,oBADjD,sCACkGE,EAAU5Q,KAAK,2BADjH,OAEGtE,SAASgL,EAAO+J,yBAEnB3G,EACG7vB,SADH,WACgBysB,EAAOljB,WADvB,YACqCkjB,EAAOgK,oBAD5C,qCAC4FE,EAAU5Q,KAAK,2BAD3G,OAEGtE,SAASgL,EAAO+J,2BP5CvBI,kBQhBa,SAAUC,GACvB,IAMIhD,EANEhpB,EAAS3D,KACTiQ,EAAYtM,EAAOklB,aAAellB,EAAOsM,WAAatM,EAAOsM,UAEjEoZ,EACE1lB,EADF0lB,WAAYD,EACVzlB,EADUylB,SAAU7D,EACpB5hB,EADoB4hB,OAAqBqK,EACzCjsB,EAD4BJ,YAAuCssB,EACnElsB,EADwDqrB,UAAyCc,EACjGnsB,EADsFgpB,UAEtFppB,EAAcosB,EAElB,GAA2B,qBAAhBpsB,EAA6B,CACtC,IAAK,IAAIhF,EAAI,EAAGA,EAAI8qB,EAAW33B,OAAQ6M,GAAK,EACT,qBAAtB8qB,EAAW9qB,EAAI,GACpB0R,GAAaoZ,EAAW9qB,IAAM0R,EAAYoZ,EAAW9qB,EAAI,IAAO8qB,EAAW9qB,EAAI,GAAK8qB,EAAW9qB,IAAM,EACvGgF,EAAchF,EACL0R,GAAaoZ,EAAW9qB,IAAM0R,EAAYoZ,EAAW9qB,EAAI,KAClEgF,EAAchF,EAAI,GAEX0R,GAAaoZ,EAAW9qB,KACjCgF,EAAchF,GAIdgnB,EAAOwK,sBACLxsB,EAAc,GAA4B,qBAAhBA,KAA6BA,EAAc,GAG7E,GAAI6lB,EAASpU,QAAQ/E,IAAc,EACjC0c,EAAYvD,EAASpU,QAAQ/E,OACxB,CACL,IAAM+f,EAAOvsB,KAAKgE,IAAI8d,EAAOyG,mBAAoBzoB,GACjDopB,EAAYqD,EAAOvsB,KAAKoN,OAAOtN,EAAcysB,GAAQzK,EAAO2F,gBAG9D,GADIyB,GAAavD,EAAS13B,SAAQi7B,EAAYvD,EAAS13B,OAAS,GAC5D6R,IAAgBqsB,EAApB,CASA,IAAMZ,EAAYjiB,SAASpJ,EAAOL,OAAOsf,GAAGrf,GAAasb,KAAK,4BAA8Btb,EAAa,IAEzG4gB,EAAMzI,OAAO/X,EAAQ,CACnBgpB,UAAAA,EACAqC,UAAAA,EACAY,cAAAA,EACArsB,YAAAA,IAEFI,EAAOipB,KAAK,qBACZjpB,EAAOipB,KAAK,mBACRiD,IAAsBb,GACxBrrB,EAAOipB,KAAK,oBAEVjpB,EAAOssB,aAAetsB,EAAO4hB,OAAO2K,qBACtCvsB,EAAOipB,KAAK,oBAtBRD,IAAcmD,IAChBnsB,EAAOgpB,UAAYA,EACnBhpB,EAAOipB,KAAK,qBRlBhBuD,mBSjBa,SAAU13B,GACvB,IAAMkL,EAAS3D,KACTulB,EAAS5hB,EAAO4hB,OAChBuF,EAAQ7M,EAAExlB,EAAEjG,QAAQoxB,QAAZ,WAAwB2B,EAAOljB,aAAc,GACvD+tB,GAAa,EACjB,GAAItF,EACF,IAAK,IAAIvsB,EAAI,EAAGA,EAAIoF,EAAOL,OAAO5R,OAAQ6M,GAAK,EACzCoF,EAAOL,OAAO/E,KAAOusB,IAAOsF,GAAa,GAIjD,IAAItF,IAASsF,EAUX,OAFAzsB,EAAO0sB,kBAAev2B,OACtB6J,EAAO2sB,kBAAex2B,GARtB6J,EAAO0sB,aAAevF,EAClBnnB,EAAOqlB,SAAWrlB,EAAO4hB,OAAOyD,QAAQC,QAC1CtlB,EAAO2sB,aAAevjB,SAASkR,EAAE6M,GAAOjM,KAAK,2BAA4B,IAEzElb,EAAO2sB,aAAerS,EAAE6M,GAAOtnB,QAO/B+hB,EAAOgL,0BAA+Cz2B,IAAxB6J,EAAO2sB,cAA8B3sB,EAAO2sB,eAAiB3sB,EAAOJ,aACpGI,EAAO4sB,wBCpBX,MAAe,CACb9L,aCLa,WAAkD,IAAxCI,EAAwC,uDAAjC7kB,KAAKwoB,eAAiB,IAAM,IACpD7kB,EAAS3D,KAGbulB,EACE5hB,EADF4hB,OAAsBrjB,EACpByB,EADMklB,aAAmB5Y,EACzBtM,EADyBsM,UAAW0Y,EACpChlB,EADoCglB,WAGxC,GAAIpD,EAAOiL,iBACT,OAAOtuB,GAAO+N,EAAYA,EAE5B,GAAIsV,EAAOkE,QACT,OAAOxZ,EAGT,IAAIwgB,EAAmBtM,EAAMM,aAAakE,EAAW,GAAI9D,GAGzD,OAFI3iB,IAAKuuB,GAAoBA,GAEtBA,GAAoB,GDX3BC,aERa,SAAUzgB,EAAW0gB,GAClC,IAAMhtB,EAAS3D,KAECkC,EACZyB,EADFklB,aAAmBtD,EACjB5hB,EADiB4hB,OAAQoD,EACzBhlB,EADyBglB,WAAYiI,EACrCjtB,EADqCitB,UAAWvC,EAChD1qB,EADgD0qB,SAEhDnmB,EAAI,EACJC,EAAI,EAGJxE,EAAO6kB,eACTtgB,EAAIhG,GAAO+N,EAAYA,EAEvB9H,EAAI8H,EAGFsV,EAAOmG,eACTxjB,EAAIzE,KAAKoN,MAAM3I,GACfC,EAAI1E,KAAKoN,MAAM1I,IAGbod,EAAOkE,QACTmH,EAAUjtB,EAAO6kB,eAAiB,aAAe,aAAe7kB,EAAO6kB,gBAAkBtgB,GAAKC,EACpFod,EAAOiL,kBACjB7H,EAAWja,UAAX,sBAAoCxG,EAApC,eAA4CC,EAA5C,eAhBQ,EAgBR,QAEFxE,EAAOktB,kBAAoBltB,EAAOsM,UAClCtM,EAAOsM,UAAYtM,EAAO6kB,eAAiBtgB,EAAIC,EAI/C,IAAMqmB,EAAiB7qB,EAAO8qB,eAAiB9qB,EAAOqqB,gBAC/B,IAAnBQ,EACY,GAECve,EAAYtM,EAAOqqB,gBAAmBQ,KAEnCH,GAClB1qB,EAAO2qB,eAAere,GAGxBtM,EAAOipB,KAAK,eAAgBjpB,EAAOsM,UAAW0gB,IF/B9C3C,aGTa,WACb,OAAShuB,KAAKopB,SAAS,IHSvBqF,aIVa,WACb,OAASzuB,KAAKopB,SAASppB,KAAKopB,SAAS13B,OAAS,IJU9Co/B,YKXa,WAA2G,IAAjG7gB,EAAiG,uDAArF,EAAGkd,EAAkF,uDAA1EntB,KAAKulB,OAAO4H,MAAO4D,IAAuD,yDAAlCC,IAAkC,yDAAVC,EAAU,uCAClHttB,EAAS3D,KAGbulB,EAEE5hB,EAFF4hB,OACAqL,EACEjtB,EADFitB,UAGF,GAAIjtB,EAAOutB,WAAa3L,EAAO4L,+BAC7B,OAAO,EAGT,IAEIC,EAFEpD,EAAerqB,EAAOqqB,eACtBS,EAAe9qB,EAAO8qB,eAS5B,GAPiD2C,EAA7CJ,GAAmB/gB,EAAY+d,EAA6BA,EACvDgD,GAAmB/gB,EAAYwe,EAA6BA,EACjDxe,EAGpBtM,EAAO2qB,eAAe8C,GAElB7L,EAAOkE,QAAS,CAClB,IAK0B,EALpB4H,EAAM1tB,EAAO6kB,eACnB,GAAc,IAAV2E,EACFyD,EAAUS,EAAM,aAAe,cAAgBD,OAG/C,GAAIR,EAAUU,SACZV,EAAUU,UAAV,eACGD,EAAM,OAAS,OAASD,IAD3B,oBAEY,UAFZ,SAKAR,EAAUS,EAAM,aAAe,cAAgBD,EAGnD,OAAO,EAqCT,OAlCc,IAAVjE,GACFxpB,EAAO2pB,cAAc,GACrB3pB,EAAO+sB,aAAaU,GAChBL,IACFptB,EAAOipB,KAAK,wBAAyBO,EAAO8D,GAC5CttB,EAAOipB,KAAK,oBAGdjpB,EAAO2pB,cAAcH,GACrBxpB,EAAO+sB,aAAaU,GAChBL,IACFptB,EAAOipB,KAAK,wBAAyBO,EAAO8D,GAC5CttB,EAAOipB,KAAK,oBAETjpB,EAAOutB,YACVvtB,EAAOutB,WAAY,EACdvtB,EAAO4tB,oCACV5tB,EAAO4tB,kCAAoC,SAAuB94B,GAC3DkL,IAAUA,EAAO6tB,WAClB/4B,EAAEjG,SAAWwN,OACjB2D,EAAOglB,WAAW,GAAGnc,oBAAoB,gBAAiB7I,EAAO4tB,mCACjE5tB,EAAOglB,WAAW,GAAGnc,oBAAoB,sBAAuB7I,EAAO4tB,mCACvE5tB,EAAO4tB,kCAAoC,YACpC5tB,EAAO4tB,kCACVR,GACFptB,EAAOipB,KAAK,oBAIlBjpB,EAAOglB,WAAW,GAAGpf,iBAAiB,gBAAiB5F,EAAO4tB,mCAC9D5tB,EAAOglB,WAAW,GAAGpf,iBAAiB,sBAAuB5F,EAAO4tB,sCAIjE,ICtET,MAAe,CACbjE,cCLa,SAAU9N,EAAUmR,GACjC,IAAMhtB,EAAS3D,KAEV2D,EAAO4hB,OAAOkE,SACjB9lB,EAAOglB,WAAWpJ,WAAWC,GAG/B7b,EAAOipB,KAAK,gBAAiBpN,EAAUmR,IDDvCc,gBENa,WAA0C,IAAhCV,IAAgC,yDAAXvpB,EAAW,uCACjD7D,EAAS3D,KACPuD,EAAuCI,EAAvCJ,YAAagiB,EAA0B5hB,EAA1B4hB,OAAQqK,EAAkBjsB,EAAlBisB,cAC7B,IAAIrK,EAAOkE,QAAX,CACIlE,EAAO0I,YACTtqB,EAAOupB,mBAGT,IAAIrpB,EAAM2D,EASV,GARK3D,IAC8BA,EAA7BN,EAAcqsB,EAAqB,OAC9BrsB,EAAcqsB,EAAqB,OACjC,SAGbjsB,EAAOipB,KAAK,mBAERmE,GAAgBxtB,IAAgBqsB,EAAe,CACjD,GAAY,UAAR/rB,EAEF,YADAF,EAAOipB,KAAK,6BAGdjpB,EAAOipB,KAAK,8BACA,SAAR/oB,EACFF,EAAOipB,KAAK,4BAEZjpB,EAAOipB,KAAK,+BFnBhBtL,cGPa,WAA0C,IAAhCyP,IAAgC,yDAAXvpB,EAAW,uCACjD7D,EAAS3D,KACPuD,EAAuCI,EAAvCJ,YAAaqsB,EAA0BjsB,EAA1BisB,cAAerK,EAAW5hB,EAAX4hB,OAEpC,GADA5hB,EAAOutB,WAAY,GACf3L,EAAOkE,QAAX,CACA9lB,EAAO2pB,cAAc,GAErB,IAAIzpB,EAAM2D,EASV,GARK3D,IAC8BA,EAA7BN,EAAcqsB,EAAqB,OAC9BrsB,EAAcqsB,EAAqB,OACjC,SAGbjsB,EAAOipB,KAAK,iBAERmE,GAAgBxtB,IAAgBqsB,EAAe,CACjD,GAAY,UAAR/rB,EAEF,YADAF,EAAOipB,KAAK,2BAGdjpB,EAAOipB,KAAK,4BACA,SAAR/oB,EACFF,EAAOipB,KAAK,0BAEZjpB,EAAOipB,KAAK,8BCjBlB,MAAe,CACbzpB,QCTa,WAA+E,IAArEK,EAAqE,uDAA7D,EAAG2pB,EAA0D,uDAAlDntB,KAAKulB,OAAO4H,MAAO4D,IAA+B,yDAAVE,EAAU,uCACtFttB,EAAS3D,KACXwpB,EAAahmB,EACbgmB,EAAa,IAAGA,EAAa,GAEjC,IACEjE,EACE5hB,EADF4hB,OAAQ6D,EACNzlB,EADMylB,SAAUC,EAChB1lB,EADgB0lB,WAAYuG,EAC5BjsB,EAD4BisB,cAAersB,EAC3CI,EAD2CJ,YAA2BrB,EACtEyB,EADwDklB,aAAmB+H,EAC3EjtB,EAD2EitB,UAE/E,GAAIjtB,EAAOutB,WAAa3L,EAAO4L,+BAC7B,OAAO,EAGT,IAAMnB,EAAOvsB,KAAKgE,IAAI9D,EAAO4hB,OAAOyG,mBAAoBxC,GACpDmD,EAAYqD,EAAOvsB,KAAKoN,OAAO2Y,EAAawG,GAAQrsB,EAAO4hB,OAAO2F,gBAClEyB,GAAavD,EAAS13B,SAAQi7B,EAAYvD,EAAS13B,OAAS,IAE3D6R,GAAegiB,EAAOmM,cAAgB,MAAQ9B,GAAiB,IAAMmB,GACxEptB,EAAOipB,KAAK,0BAGd,IAuBIplB,EAvBEyI,GAAamZ,EAASuD,GAM5B,GAHAhpB,EAAO2qB,eAAere,GAGlBsV,EAAOwK,oBACT,IAAK,IAAIxxB,EAAI,EAAGA,EAAI8qB,EAAW33B,OAAQ6M,GAAK,GACrCkF,KAAKoN,MAAkB,IAAZZ,IAAoBxM,KAAKoN,MAAsB,IAAhBwY,EAAW9qB,MACxDirB,EAAajrB,GAKnB,GAAIoF,EAAOssB,aAAezG,IAAejmB,EAAa,CACpD,IAAKI,EAAOguB,gBAAkB1hB,EAAYtM,EAAOsM,WAAaA,EAAYtM,EAAOqqB,eAC/E,OAAO,EAET,IAAKrqB,EAAOiuB,gBAAkB3hB,EAAYtM,EAAOsM,WAAaA,EAAYtM,EAAO8qB,iBAC1ElrB,GAAe,KAAOimB,EAAY,OAAO,EAWlD,GAN8BhiB,EAA1BgiB,EAAajmB,EAAyB,OACjCimB,EAAajmB,EAAyB,OAC9B,QAIZrB,IAAQ+N,IAActM,EAAOsM,YAAgB/N,GAAO+N,IAActM,EAAOsM,UAc5E,OAbAtM,EAAO+rB,kBAAkBlG,GAErBjE,EAAO0I,YACTtqB,EAAOupB,mBAETvpB,EAAOmrB,sBACe,UAAlBvJ,EAAO0G,QACTtoB,EAAO+sB,aAAazgB,GAEJ,UAAdzI,IACF7D,EAAO8tB,gBAAgBV,EAAcvpB,GACrC7D,EAAO2d,cAAcyP,EAAcvpB,KAE9B,EAET,GAAI+d,EAAOkE,QAAS,CAClB,IAS0B,EATpB4H,EAAM1tB,EAAO6kB,eACfvoB,GAAKgQ,EAIT,GAHI/N,IACFjC,EAAI2wB,EAAUiB,YAAcjB,EAAUhP,YAAc3hB,GAExC,IAAVktB,EACFyD,EAAUS,EAAM,aAAe,aAAepxB,OAG9C,GAAI2wB,EAAUU,SACZV,EAAUU,UAAV,eACGD,EAAM,OAAS,MAAQpxB,IAD1B,oBAEY,UAFZ,SAKA2wB,EAAUS,EAAM,aAAe,aAAepxB,EAGlD,OAAO,EAoCT,OAjCc,IAAVktB,GACFxpB,EAAO2pB,cAAc,GACrB3pB,EAAO+sB,aAAazgB,GACpBtM,EAAO+rB,kBAAkBlG,GACzB7lB,EAAOmrB,sBACPnrB,EAAOipB,KAAK,wBAAyBO,EAAO8D,GAC5CttB,EAAO8tB,gBAAgBV,EAAcvpB,GACrC7D,EAAO2d,cAAcyP,EAAcvpB,KAEnC7D,EAAO2pB,cAAcH,GACrBxpB,EAAO+sB,aAAazgB,GACpBtM,EAAO+rB,kBAAkBlG,GACzB7lB,EAAOmrB,sBACPnrB,EAAOipB,KAAK,wBAAyBO,EAAO8D,GAC5CttB,EAAO8tB,gBAAgBV,EAAcvpB,GAChC7D,EAAOutB,YACVvtB,EAAOutB,WAAY,EACdvtB,EAAOmuB,gCACVnuB,EAAOmuB,8BAAgC,SAAuBr5B,GACvDkL,IAAUA,EAAO6tB,WAClB/4B,EAAEjG,SAAWwN,OACjB2D,EAAOglB,WAAW,GAAGnc,oBAAoB,gBAAiB7I,EAAOmuB,+BACjEnuB,EAAOglB,WAAW,GAAGnc,oBAAoB,sBAAuB7I,EAAOmuB,+BACvEnuB,EAAOmuB,8BAAgC,YAChCnuB,EAAOmuB,8BACdnuB,EAAO2d,cAAcyP,EAAcvpB,MAGvC7D,EAAOglB,WAAW,GAAGpf,iBAAiB,gBAAiB5F,EAAOmuB,+BAC9DnuB,EAAOglB,WAAW,GAAGpf,iBAAiB,sBAAuB5F,EAAOmuB,kCAIjE,GD/GPC,YEVa,WAA+E,IAArEvuB,EAAqE,uDAA7D,EAAG2pB,EAA0D,uDAAlDntB,KAAKulB,OAAO4H,MAAO4D,IAA+B,yDAAVE,EAAU,uCACtFttB,EAAS3D,KACXgyB,EAAWxuB,EAKf,OAJIG,EAAO4hB,OAAOjjB,OAChB0vB,GAAYruB,EAAOsuB,cAGdtuB,EAAOR,QAAQ6uB,EAAU7E,EAAO4D,EAAcE,IFIrDiB,UGVa,WAAoE,IAA1D/E,EAA0D,uDAAlDntB,KAAKulB,OAAO4H,MAAO4D,IAA+B,yDAAVE,EAAU,uCAC3EttB,EAAS3D,KACPulB,EAAsB5hB,EAAtB4hB,OAAQ2L,EAAcvtB,EAAdutB,UACViB,EAAYxuB,EAAOJ,YAAcgiB,EAAOyG,mBAAqB,EAAIzG,EAAO2F,eAC9E,GAAI3F,EAAOjjB,KAAM,CACf,GAAI4uB,EAAW,OAAO,EACtBvtB,EAAOyuB,UAEPzuB,EAAO0uB,YAAc1uB,EAAOglB,WAAW,GAAG1G,WAE5C,OAAOte,EAAOR,QAAQQ,EAAOJ,YAAc4uB,EAAWhF,EAAO4D,EAAcE,IHC3EqB,UIXa,WAAoE,IAA1DnF,EAA0D,uDAAlDntB,KAAKulB,OAAO4H,MAAO4D,IAA+B,yDAAVE,EAAU,uCAC3EttB,EAAS3D,KAEbulB,EACE5hB,EADF4hB,OAAQ2L,EACNvtB,EADMutB,UAAW9H,EACjBzlB,EADiBylB,SAAUC,EAC3B1lB,EAD2B0lB,WAAYR,EACvCllB,EADuCklB,aAG3C,GAAItD,EAAOjjB,KAAM,CACf,GAAI4uB,EAAW,OAAO,EACtBvtB,EAAOyuB,UAEPzuB,EAAO0uB,YAAc1uB,EAAOglB,WAAW,GAAG1G,WAE5C,IAAMhS,EAAY4Y,EAAellB,EAAOsM,WAAatM,EAAOsM,UAC5D,SAASsiB,EAAUz0B,GACjB,OAAIA,EAAM,GAAW2F,KAAKoN,MAAMpN,KAAKuI,IAAIlO,IAClC2F,KAAKoN,MAAM/S,GAEpB,IAWI00B,EAXEC,EAAsBF,EAAUtiB,GAChCyiB,EAAqBtJ,EAAS1xB,KAAI,SAACoG,GAAD,OAASy0B,EAAUz0B,MAIvD60B,GAHyBtJ,EAAW3xB,KAAI,SAACoG,GAAD,OAASy0B,EAAUz0B,MAE3CsrB,EAASsJ,EAAmB1d,QAAQyd,IACzCrJ,EAASsJ,EAAmB1d,QAAQyd,GAAuB,IAW1E,MAVwB,qBAAbE,GAA4BpN,EAAOkE,SAC5CL,EAASvqB,SAAQ,SAAC2tB,IACXmG,GAAYF,GAAuBjG,IAAMmG,EAAWnG,MAIrC,qBAAbmG,IACTH,EAAYnJ,EAAWrU,QAAQ2d,IACf,IAAGH,EAAY7uB,EAAOJ,YAAc,GAE/CI,EAAOR,QAAQqvB,EAAWrF,EAAO4D,EAAcE,IJrBtD2B,WKZa,WAAoE,IAA1DzF,EAA0D,uDAAlDntB,KAAKulB,OAAO4H,MAAO4D,IAA+B,yDAAVE,EAAU,uCAC3EttB,EAAS3D,KACf,OAAO2D,EAAOR,QAAQQ,EAAOJ,YAAa4pB,EAAO4D,EAAcE,ILW/D4B,eMba,WAAqF,IAA3E1F,EAA2E,uDAAnEntB,KAAKulB,OAAO4H,MAAO4D,IAAgD,yDAA3BE,EAA2B,uCAAjB6B,EAAiB,uDAAL,GACvFnvB,EAAS3D,KACXwD,EAAQG,EAAOJ,YACbysB,EAAOvsB,KAAKgE,IAAI9D,EAAO4hB,OAAOyG,mBAAoBxoB,GAClDmpB,EAAYqD,EAAOvsB,KAAKoN,OAAOrN,EAAQwsB,GAAQrsB,EAAO4hB,OAAO2F,gBAE7Djb,EAAYtM,EAAOklB,aAAellB,EAAOsM,WAAatM,EAAOsM,UAEnE,GAAIA,GAAatM,EAAOylB,SAASuD,GAAY,CAG3C,IAAMoG,EAAcpvB,EAAOylB,SAASuD,GAC9BqG,EAAWrvB,EAAOylB,SAASuD,EAAY,GACxC1c,EAAY8iB,GAAgBC,EAAWD,GAAeD,IACzDtvB,GAASG,EAAO4hB,OAAO2F,oBAEpB,CAGL,IAAMyH,EAAWhvB,EAAOylB,SAASuD,EAAY,GACvCoG,EAAcpvB,EAAOylB,SAASuD,GAC/B1c,EAAY0iB,IAAcI,EAAcJ,GAAYG,IACvDtvB,GAASG,EAAO4hB,OAAO2F,gBAM3B,OAHA1nB,EAAQC,KAAKC,IAAIF,EAAO,GACxBA,EAAQC,KAAKgE,IAAIjE,EAAOG,EAAO0lB,WAAW33B,OAAS,GAE5CiS,EAAOR,QAAQK,EAAO2pB,EAAO4D,EAAcE,INdlDV,oBOZa,WACb,IAKIvB,EALErrB,EAAS3D,KACPulB,EAAuB5hB,EAAvB4hB,OAAQoD,EAAehlB,EAAfglB,WAEV8B,EAAyC,SAAzBlF,EAAOkF,cAA2B9mB,EAAOsvB,uBAAyB1N,EAAOkF,cAC3FvnB,EAAeS,EAAO2sB,aAE1B,GAAI/K,EAAOjjB,KAAM,CACf,GAAIqB,EAAOutB,UAAW,OACtBlC,EAAYjiB,SAASkR,EAAEta,EAAO0sB,cAAcxR,KAAK,2BAA4B,IACzE0G,EAAOwG,eAEN7oB,EAAeS,EAAOsuB,aAAgBxH,EAAgB,GACnDvnB,EAAgBS,EAAOL,OAAO5R,OAASiS,EAAOsuB,aAAiBxH,EAAgB,GAEnF9mB,EAAOyuB,UACPlvB,EAAeylB,EACZ7vB,SADY,WACCysB,EAAOljB,WADR,qCAC+C2sB,EAD/C,mBACmEzJ,EAAOgK,oBAD1E,MAEZ3M,GAAG,GACHpf,QAEH2gB,EAAMG,UAAS,WACb3gB,EAAOR,QAAQD,OAGjBS,EAAOR,QAAQD,GAERA,EAAeS,EAAOL,OAAO5R,OAAS+4B,GAC/C9mB,EAAOyuB,UACPlvB,EAAeylB,EACZ7vB,SADY,WACCysB,EAAOljB,WADR,qCAC+C2sB,EAD/C,mBACmEzJ,EAAOgK,oBAD1E,MAEZ3M,GAAG,GACHpf,QAEH2gB,EAAMG,UAAS,WACb3gB,EAAOR,QAAQD,OAGjBS,EAAOR,QAAQD,QAGjBS,EAAOR,QAAQD,KCxCnB,MAAe,CACbgwB,WCFa,WACb,IAAMvvB,EAAS3D,KACPulB,EAAuB5hB,EAAvB4hB,OAAQoD,EAAehlB,EAAfglB,WAEhBA,EAAW7vB,SAAX,WAAwBysB,EAAOljB,WAA/B,YAA6CkjB,EAAOgK,sBAAuB3V,SAE3E,IAAItW,EAASqlB,EAAW7vB,SAAX,WAAwBysB,EAAOljB,aAE5C,GAAIkjB,EAAO4N,uBAAwB,CACjC,IAAMC,EAAiB7N,EAAO2F,eAAkB5nB,EAAO5R,OAAS6zB,EAAO2F,eACvE,GAAIkI,IAAmB7N,EAAO2F,eAAgB,CAC5C,IAAK,IAAI3sB,EAAI,EAAGA,EAAI60B,EAAgB70B,GAAK,EAAG,CAC1C,IAAM80B,EAAYpV,EAAElrB,EAAAA,cAAuB,QAAQwnB,SAAjC,UAA6CgL,EAAOljB,WAApD,YAAkEkjB,EAAO+N,kBAC3F3K,EAAW7F,OAAOuQ,GAEpB/vB,EAASqlB,EAAW7vB,SAAX,WAAwBysB,EAAOljB,cAIf,SAAzBkjB,EAAOkF,eAA6BlF,EAAO0M,eAAc1M,EAAO0M,aAAe3uB,EAAO5R,QAE1FiS,EAAOsuB,aAAexuB,KAAKqP,KAAK7B,WAAWsU,EAAO0M,cAAgB1M,EAAOkF,cAAe,KACxF9mB,EAAOsuB,cAAgB1M,EAAOgO,qBAC1B5vB,EAAOsuB,aAAe3uB,EAAO5R,SAC/BiS,EAAOsuB,aAAe3uB,EAAO5R,QAG/B,IAAM8hC,EAAgB,GAChBC,EAAe,GACrBnwB,EAAO+e,MAAK,SAAC7e,EAAOS,GAClB,IAAM6mB,EAAQ7M,EAAEha,GACZT,EAAQG,EAAOsuB,cAAcwB,EAAa9hC,KAAKsS,GAC/CT,EAAQF,EAAO5R,QAAU8R,GAASF,EAAO5R,OAASiS,EAAOsuB,cAAcuB,EAAc7hC,KAAKsS,GAC9F6mB,EAAMjM,KAAK,0BAA2Brb,MAExC,IAAK,IAAIjF,EAAI,EAAGA,EAAIk1B,EAAa/hC,OAAQ6M,GAAK,EAC5CoqB,EAAW7F,OAAO7E,EAAEwV,EAAal1B,GAAG4U,WAAU,IAAOoH,SAASgL,EAAOgK,sBAEvE,IAAK,IAAIhxB,EAAIi1B,EAAc9hC,OAAS,EAAG6M,GAAK,EAAGA,GAAK,EAClDoqB,EAAWzF,QAAQjF,EAAEuV,EAAcj1B,GAAG4U,WAAU,IAAOoH,SAASgL,EAAOgK,uBDpCzE6C,QENa,WACb,IAAMzuB,EAAS3D,KAEf2D,EAAOipB,KAAK,iBAEZ,IAGIoF,EAFFzuB,EACEI,EADFJ,YAAaD,EACXK,EADWL,OAAQ2uB,EACnBtuB,EADmBsuB,aAAcL,EACjCjuB,EADiCiuB,eAAgBD,EACjDhuB,EADiDguB,eAAgBvI,EACjEzlB,EADiEylB,SAAwBlnB,EACzFyB,EAD2EklB,aAG/EllB,EAAOiuB,gBAAiB,EACxBjuB,EAAOguB,gBAAiB,EAExB,IACM+B,GADiBtK,EAAS7lB,GACHI,EAAO8gB,eAGpC,GAAIlhB,EAAc0uB,EAChBD,EAAY1uB,EAAO5R,OAAyB,EAAfugC,EAAqB1uB,EAClDyuB,GAAYC,EACStuB,EAAOR,QAAQ6uB,EAAU,GAAG,GAAO,IAC3B,IAAT0B,GAClB/vB,EAAO+sB,cAAcxuB,GAAOyB,EAAOsM,UAAYtM,EAAOsM,WAAayjB,QAEhE,GAAInwB,GAAeD,EAAO5R,OAASugC,EAAc,CAEtDD,GAAY1uB,EAAO5R,OAAS6R,EAAc0uB,EAC1CD,GAAYC,EACStuB,EAAOR,QAAQ6uB,EAAU,GAAG,GAAO,IAC3B,IAAT0B,GAClB/vB,EAAO+sB,cAAcxuB,GAAOyB,EAAOsM,UAAYtM,EAAOsM,WAAayjB,GAGvE/vB,EAAOiuB,eAAiBA,EACxBjuB,EAAOguB,eAAiBA,EAExBhuB,EAAOipB,KAAK,YF5BZ+G,YGPa,WACb,IAAMhwB,EAAS3D,KACP2oB,EAA+BhlB,EAA/BglB,WAAYpD,EAAmB5hB,EAAnB4hB,OAAQjiB,EAAWK,EAAXL,OAC5BqlB,EAAW7vB,SAAX,WAAwBysB,EAAOljB,WAA/B,YAA6CkjB,EAAOgK,oBAApD,aAA4EhK,EAAOljB,WAAnF,YAAiGkjB,EAAO+N,kBAAmB1Z,SAC3HtW,EAAO2b,WAAW,6BCDpB,MAAe,CACb2U,cCFa,SAAUC,GACvB,IAAMlwB,EAAS3D,KACf,KAAIomB,EAAQC,QAAU1iB,EAAO4hB,OAAOuO,eAAkBnwB,EAAO4hB,OAAOsH,eAAiBlpB,EAAOowB,UAAapwB,EAAO4hB,OAAOkE,SAAvH,CACA,IAAMxlB,EAAKN,EAAOM,GAClBA,EAAG3G,MAAMqR,OAAS,OAClB1K,EAAG3G,MAAMqR,OAASklB,EAAS,mBAAqB,eAChD5vB,EAAG3G,MAAMqR,OAASklB,EAAS,eAAiB,YAC5C5vB,EAAG3G,MAAMqR,OAASklB,EAAS,WAAa,SDJxCG,gBEHa,WACb,IAAMrwB,EAAS3D,KACXomB,EAAQC,OAAU1iB,EAAO4hB,OAAOsH,eAAiBlpB,EAAOowB,UAAapwB,EAAO4hB,OAAOkE,UACvF9lB,EAAOM,GAAG3G,MAAMqR,OAAS,MCC3B,MAAe,CACbslB,YCLa,SAAU3wB,GACvB,IAAMK,EAAS3D,KACP2oB,EAAuBhlB,EAAvBglB,WAAYpD,EAAW5hB,EAAX4hB,OAIpB,GAHIA,EAAOjjB,MACTqB,EAAOgwB,cAEa,kBAAXrwB,GAAuB,WAAYA,EAC5C,IAAK,IAAI/E,EAAI,EAAGA,EAAI+E,EAAO5R,OAAQ6M,GAAK,EAClC+E,EAAO/E,IAAIoqB,EAAW7F,OAAOxf,EAAO/E,SAG1CoqB,EAAW7F,OAAOxf,GAEhBiiB,EAAOjjB,MACTqB,EAAOuvB,aAEH3N,EAAOgB,UAAYH,EAAQG,UAC/B5iB,EAAOP,UDXT8wB,aENa,SAAU5wB,GACvB,IAAMK,EAAS3D,KACPulB,EAAoC5hB,EAApC4hB,OAAQoD,EAA4BhlB,EAA5BglB,WAAYplB,EAAgBI,EAAhBJ,YAExBgiB,EAAOjjB,MACTqB,EAAOgwB,cAET,IAAIhE,EAAiBpsB,EAAc,EACnC,GAAsB,kBAAXD,GAAuB,WAAYA,EAAQ,CACpD,IAAK,IAAI/E,EAAI,EAAGA,EAAI+E,EAAO5R,OAAQ6M,GAAK,EAClC+E,EAAO/E,IAAIoqB,EAAWzF,QAAQ5f,EAAO/E,IAE3CoxB,EAAiBpsB,EAAcD,EAAO5R,YAEtCi3B,EAAWzF,QAAQ5f,GAEjBiiB,EAAOjjB,MACTqB,EAAOuvB,aAEH3N,EAAOgB,UAAYH,EAAQG,UAC/B5iB,EAAOP,SAETO,EAAOR,QAAQwsB,EAAgB,GAAG,IFflCwE,SGPa,SAAU3wB,EAAOF,GAC9B,IAAMK,EAAS3D,KACP2oB,EAAoChlB,EAApCglB,WAAYpD,EAAwB5hB,EAAxB4hB,OAChB6O,EADwCzwB,EAAhBJ,YAExBgiB,EAAOjjB,OACT8xB,GAAqBzwB,EAAOsuB,aAC5BtuB,EAAOgwB,cACPhwB,EAAOL,OAASqlB,EAAW7vB,SAAX,WAAwBysB,EAAOljB,cAEjD,IAAMgyB,EAAa1wB,EAAOL,OAAO5R,OACjC,GAAI8R,GAAS,EACXG,EAAOuwB,aAAa5wB,QAGtB,GAAIE,GAAS6wB,EACX1wB,EAAOswB,YAAY3wB,OADrB,CAOA,IAHA,IAAIqsB,EAAiByE,EAAoB5wB,EAAQ4wB,EAAoB,EAAIA,EAEnEE,EAAe,GACZ/1B,EAAI81B,EAAa,EAAG91B,GAAKiF,EAAOjF,GAAK,EAAG,CAC/C,IAAMg2B,EAAe5wB,EAAOL,OAAOsf,GAAGrkB,GACtCg2B,EAAa3a,SACb0a,EAAanU,QAAQoU,GAGvB,GAAsB,kBAAXjxB,GAAuB,WAAYA,EAAQ,CACpD,IAAK,IAAI/E,EAAI,EAAGA,EAAI+E,EAAO5R,OAAQ6M,GAAK,EAClC+E,EAAO/E,IAAIoqB,EAAW7F,OAAOxf,EAAO/E,IAE1CoxB,EAAiByE,EAAoB5wB,EAAQ4wB,EAAoB9wB,EAAO5R,OAAS0iC,OAEjFzL,EAAW7F,OAAOxf,GAGpB,IAAK,IAAI/E,EAAI,EAAGA,EAAI+1B,EAAa5iC,OAAQ6M,GAAK,EAC5CoqB,EAAW7F,OAAOwR,EAAa/1B,IAG7BgnB,EAAOjjB,MACTqB,EAAOuvB,aAEH3N,EAAOgB,UAAYH,EAAQG,UAC/B5iB,EAAOP,SAELmiB,EAAOjjB,KACTqB,EAAOR,QAAQwsB,EAAiBhsB,EAAOsuB,aAAc,GAAG,GAExDtuB,EAAOR,QAAQwsB,EAAgB,GAAG,KHzCpC6E,YIRa,SAAUC,GACvB,IAAM9wB,EAAS3D,KACPulB,EAAoC5hB,EAApC4hB,OAAQoD,EAA4BhlB,EAA5BglB,WAEZyL,EAFwCzwB,EAAhBJ,YAGxBgiB,EAAOjjB,OACT8xB,GAAqBzwB,EAAOsuB,aAC5BtuB,EAAOgwB,cACPhwB,EAAOL,OAASqlB,EAAW7vB,SAAX,WAAwBysB,EAAOljB,cAEjD,IACIqyB,EADA/E,EAAiByE,EAGrB,GAA6B,kBAAlBK,GAA8B,WAAYA,EAAe,CAClE,IAAK,IAAIl2B,EAAI,EAAGA,EAAIk2B,EAAc/iC,OAAQ6M,GAAK,EAC7Cm2B,EAAgBD,EAAcl2B,GAC1BoF,EAAOL,OAAOoxB,IAAgB/wB,EAAOL,OAAOsf,GAAG8R,GAAe9a,SAC9D8a,EAAgB/E,IAAgBA,GAAkB,GAExDA,EAAiBlsB,KAAKC,IAAIisB,EAAgB,QAE1C+E,EAAgBD,EACZ9wB,EAAOL,OAAOoxB,IAAgB/wB,EAAOL,OAAOsf,GAAG8R,GAAe9a,SAC9D8a,EAAgB/E,IAAgBA,GAAkB,GACtDA,EAAiBlsB,KAAKC,IAAIisB,EAAgB,GAGxCpK,EAAOjjB,MACTqB,EAAOuvB,aAGH3N,EAAOgB,UAAYH,EAAQG,UAC/B5iB,EAAOP,SAELmiB,EAAOjjB,KACTqB,EAAOR,QAAQwsB,EAAiBhsB,EAAOsuB,aAAc,GAAG,GAExDtuB,EAAOR,QAAQwsB,EAAgB,GAAG,IJ5BpCgF,gBKXa,WAIb,IAHA,IAEMF,EAAgB,GACbl2B,EAAI,EAAGA,EAHDyB,KAGYsD,OAAO5R,OAAQ6M,GAAK,EAC7Ck2B,EAAc9iC,KAAK4M,GAJNyB,KAMRw0B,YAAYC,KCJfG,EAAU,WACd,IAAMC,EAAWjoB,EAAAA,UAAAA,SACXkoB,EAAKloB,EAAAA,UAAAA,UAELmoB,EAAS,CACbC,KAAK,EACLC,SAAS,EACTC,eAAe,EACfC,SAAS,EACTC,QAAQ,EACRC,MAAM,EACNC,MAAM,EACNC,MAAM,EACNC,IAAI,EACJC,SAAS,EACTC,OAAO,EACPC,SAAS,EACTC,WAAYhpB,EAAAA,UAAkBA,EAAAA,UAC9BipB,YAAajpB,EAAAA,UAAkBA,EAAAA,UAC/BkpB,UAAU,GAGNC,EAAcnpB,EAAAA,OAAAA,MACdopB,EAAeppB,EAAAA,OAAAA,OAEfqoB,EAAUH,EAAGhjC,MAAM,+BACrBwjC,EAAOR,EAAGhjC,MAAM,wBACdujC,EAAOP,EAAGhjC,MAAM,2BAChBsjC,GAAUE,GAAQR,EAAGhjC,MAAM,8BAC3B0jC,EAAKV,EAAG9f,QAAQ,UAAY,GAAK8f,EAAG9f,QAAQ,aAAe,EAC3DugB,EAAOT,EAAG9f,QAAQ,UAAY,EAC9BygB,EAAUX,EAAG9f,QAAQ,WAAa,GAAK8f,EAAG9f,QAAQ,aAAe,EACjE2gB,EAAuB,UAAbd,EACViB,EAAWhB,EAAGmB,cAAcjhB,QAAQ,aAAe,EACrD0gB,EAAqB,aAAbb,EA4EZ,OAzEKS,GACAI,GACAtP,EAAQC,QAEQ,OAAhB0P,GAAyC,OAAjBC,GACL,MAAhBD,GAAwC,OAAjBC,GACP,MAAhBD,GAAwC,OAAjBC,GACP,MAAhBD,GAAwC,OAAjBC,KAG7BV,EAAOR,EAAGhjC,MAAM,uBAChB4jC,GAAQ,GAGVX,EAAOS,GAAKA,EACZT,EAAOQ,KAAOA,EACdR,EAAOU,QAAUA,EAGbR,IAAYU,IACdZ,EAAOmB,GAAK,UACZnB,EAAOoB,UAAYlB,EAAQ,GAC3BF,EAAOE,SAAU,EACjBF,EAAOG,cAAgBJ,EAAGmB,cAAcjhB,QAAQ,WAAa,IAE3DsgB,GAAQF,GAAUC,KACpBN,EAAOmB,GAAK,MACZnB,EAAOC,KAAM,GAGXI,IAAWC,IACbN,EAAOoB,UAAYf,EAAO,GAAGt4B,QAAQ,KAAM,KAC3Ci4B,EAAOK,QAAS,GAEdE,IACFP,EAAOoB,UAAYb,EAAK,GAAGx4B,QAAQ,KAAM,KACzCi4B,EAAOO,MAAO,GAEZD,IACFN,EAAOoB,UAAYd,EAAK,GAAKA,EAAK,GAAGv4B,QAAQ,KAAM,KAAO,KAC1Di4B,EAAOM,MAAO,GAGZN,EAAOC,KAAOD,EAAOoB,WAAarB,EAAG9f,QAAQ,aAAe,GACvB,OAAnC+f,EAAOoB,UAAUv3B,MAAM,KAAK,KAC9Bm2B,EAAOoB,UAAYrB,EAAGmB,cAAcr3B,MAAM,YAAY,GAAGA,MAAM,KAAK,IAKxEm2B,EAAOqB,YAAchB,GAAUE,GAAQD,KAAUP,EAAGhjC,MAAM,gCAAiC8a,EAAAA,UAAAA,aACrFA,EAAAA,YAAqBA,EAAAA,WAAkB,8BAA8B4V,QAC3EuS,EAAOsB,QAAUtB,EAAOqB,QACxBrB,EAAOuB,WAAavB,EAAOqB,QAG3BrB,EAAOI,UAAYJ,EAAOC,KAAOD,EAAOE,UAAYa,EAChDf,EAAOI,UACTJ,EAAOe,SAAWA,EAClBf,EAAOW,MAAQA,EACfX,EAAOY,QAAUA,EACbZ,EAAOW,QACTX,EAAOmB,GAAK,SAEVnB,EAAOY,UACTZ,EAAOmB,GAAK,YAKhBnB,EAAOwB,WAAa3pB,EAAAA,kBAA2B,EAGxCmoB,EA9GO,GCCD,SAAS,EAACxiC,GACvB,IAAMoR,EAAS3D,KACTtH,EAAOiL,EAAO6yB,gBACZjR,EAAoB5hB,EAApB4hB,OAAQ1a,EAAYlH,EAAZkH,QAEhB,IAAIlH,EAAOutB,YAAa3L,EAAO4L,+BAA/B,CAGA,IAAI14B,EAAIlG,EACJkG,EAAEg+B,gBAAeh+B,EAAIA,EAAEg+B,eAC3B,IAAMC,EAAYzY,EAAExlB,EAAEjG,QAEtB,IAAiC,YAA7B+yB,EAAOoR,mBACJD,EAAU9S,QAAQjgB,EAAOitB,WAAWl/B,UAE3CgH,EAAKsS,aAA0B,eAAXvS,EAAEvK,MACjBwK,EAAKsS,gBAAgB,UAAWvS,IAAiB,IAAZA,EAAEm+B,WACvCl+B,EAAKsS,cAAgB,WAAYvS,GAAKA,EAAEqR,OAAS,MAClDpR,EAAKm+B,YAAan+B,EAAKo+B,UAC3B,GAAIvR,EAAOjkB,WAAao1B,EAAU9S,QAAQ2B,EAAOwR,kBAAoBxR,EAAOwR,kBAAlC,WAA0DxR,EAAOyR,iBAAkB,GAC3HrzB,EAAOszB,YAAa,OAGtB,IAAI1R,EAAO2R,cACJR,EAAU9S,QAAQ2B,EAAO2R,cAAc,GAD9C,CAIArsB,EAAQssB,SAAsB,eAAX1+B,EAAEvK,KAAwBuK,EAAE2+B,cAAc,GAAGC,MAAQ5+B,EAAE4+B,MAC1ExsB,EAAQysB,SAAsB,eAAX7+B,EAAEvK,KAAwBuK,EAAE2+B,cAAc,GAAGG,MAAQ9+B,EAAE8+B,MAC1E,IAAMC,EAAS3sB,EAAQssB,SACjBM,EAAS5sB,EAAQysB,SAIjBI,EAAqBnS,EAAOmS,oBAAsBnS,EAAOoS,sBACzDC,EAAqBrS,EAAOqS,oBAAsBrS,EAAOsS,sBAC/D,IACEH,KACKF,GAAUI,GACXJ,GAAU5qB,EAAAA,OAAAA,MAAsBgrB,GAHtC,CAuBA,GAfAzT,EAAMzI,OAAOhjB,EAAM,CACjBm+B,WAAW,EACXC,SAAS,EACTgB,qBAAqB,EACrBC,iBAAaj+B,EACbk+B,iBAAal+B,IAGf+Q,EAAQ2sB,OAASA,EACjB3sB,EAAQ4sB,OAASA,EACjB/+B,EAAKu/B,eAAiB9T,EAAMK,MAC5B7gB,EAAOszB,YAAa,EACpBtzB,EAAOykB,aACPzkB,EAAOu0B,oBAAiBp+B,EACpByrB,EAAOuN,UAAY,IAAGp6B,EAAKy/B,oBAAqB,GACrC,eAAX1/B,EAAEvK,KAAuB,CAC3B,IAAIkP,GAAiB,EACjBs5B,EAAUtW,GAAG1nB,EAAK0/B,gBAAeh7B,GAAiB,GAEpDrK,EAAAA,eACGkrB,EAAElrB,EAAAA,eAAwBqtB,GAAG1nB,EAAK0/B,eAClCrlC,EAAAA,gBAA2B2jC,EAAU,IAExC3jC,EAAAA,cAAAA,OAGF,IAAMslC,EAAuBj7B,GAAkBuG,EAAO20B,gBAAkB/S,EAAOgT,0BAC3EhT,EAAOiT,+BAAiCH,IAC1C5/B,EAAE2E,iBAGNuG,EAAOipB,KAAK,aAAcn0B,MC3Eb,SAAS,EAAClG,GACvB,IAAMoR,EAAS3D,KACTtH,EAAOiL,EAAO6yB,gBACZjR,EAAuC5hB,EAAvC4hB,OAAQ1a,EAA+BlH,EAA/BkH,QAAuB3I,EAAQyB,EAAtBklB,aACrBpwB,EAAIlG,EAER,GADIkG,EAAEg+B,gBAAeh+B,EAAIA,EAAEg+B,eACtB/9B,EAAKm+B,WAMV,IAAIn+B,EAAKsS,cAA2B,cAAXvS,EAAEvK,KAA3B,CACA,IAAMuqC,EAAyB,cAAXhgC,EAAEvK,MAAwBuK,EAAE2+B,gBAAkB3+B,EAAE2+B,cAAc,IAAM3+B,EAAE4X,eAAe,IACnGgnB,EAAmB,cAAX5+B,EAAEvK,KAAuBuqC,EAAYpB,MAAQ5+B,EAAE4+B,MACvDE,EAAmB,cAAX9+B,EAAEvK,KAAuBuqC,EAAYlB,MAAQ9+B,EAAE8+B,MAC7D,GAAI9+B,EAAEigC,wBAGJ,OAFA7tB,EAAQ2sB,OAASH,OACjBxsB,EAAQ4sB,OAASF,GAGnB,IAAK5zB,EAAO20B,eAYV,OAVA30B,EAAOszB,YAAa,OAChBv+B,EAAKm+B,YACP1S,EAAMzI,OAAO7Q,EAAS,CACpB2sB,OAAQH,EACRI,OAAQF,EACRJ,SAAUE,EACVC,SAAUC,IAEZ7+B,EAAKu/B,eAAiB9T,EAAMK,QAIhC,GAAI9rB,EAAKsS,cAAgBua,EAAOoT,sBAAwBpT,EAAOjjB,KAC7D,GAAIqB,EAAOiI,cAET,GACG2rB,EAAQ1sB,EAAQ4sB,QAAU9zB,EAAOsM,WAAatM,EAAO8qB,gBAClD8I,EAAQ1sB,EAAQ4sB,QAAU9zB,EAAOsM,WAAatM,EAAOqqB,eAIzD,OAFAt1B,EAAKm+B,WAAY,OACjBn+B,EAAKo+B,SAAU,QAGZ,GACJO,EAAQxsB,EAAQ2sB,QAAU7zB,EAAOsM,WAAatM,EAAO8qB,gBAClD4I,EAAQxsB,EAAQ2sB,QAAU7zB,EAAOsM,WAAatM,EAAOqqB,eAEzD,OAGJ,GAAIt1B,EAAKsS,cAAgBjY,EAAAA,eACnB0F,EAAEjG,SAAWO,EAAAA,eAA0BkrB,EAAExlB,EAAEjG,QAAQ4tB,GAAG1nB,EAAK0/B,cAG7D,OAFA1/B,EAAKo+B,SAAU,OACfnzB,EAAOszB,YAAa,GAOxB,GAHIv+B,EAAKo/B,qBACPn0B,EAAOipB,KAAK,YAAan0B,KAEvBA,EAAE2+B,eAAiB3+B,EAAE2+B,cAAc1lC,OAAS,GAAhD,CAEAmZ,EAAQssB,SAAWE,EACnBxsB,EAAQysB,SAAWC,EAEnB,IAAMqB,EAAQ/tB,EAAQssB,SAAWtsB,EAAQ2sB,OACnCqB,EAAQhuB,EAAQysB,SAAWzsB,EAAQ4sB,OACzC,KAAI9zB,EAAO4hB,OAAOuN,WAAarvB,KAAKq1B,KAAK,SAACF,EAAS,GAAV,SAAgBC,EAAS,IAAMl1B,EAAO4hB,OAAOuN,WAAtF,CAGE,IAAIiG,EADN,GAAgC,qBAArBrgC,EAAKq/B,YAETp0B,EAAO6kB,gBAAkB3d,EAAQysB,WAAazsB,EAAQ4sB,QAAY9zB,EAAOiI,cAAgBf,EAAQssB,WAAatsB,EAAQ2sB,OACzH9+B,EAAKq/B,aAAc,EAGda,EAAQA,EAAUC,EAAQA,GAAU,KACvCE,EAA6D,IAA/Ct1B,KAAKu1B,MAAMv1B,KAAKuI,IAAI6sB,GAAQp1B,KAAKuI,IAAI4sB,IAAiBn1B,KAAKw1B,GACzEvgC,EAAKq/B,YAAcp0B,EAAO6kB,eAAiBuQ,EAAaxT,EAAOwT,WAAc,GAAKA,EAAaxT,EAAOwT,YAY5G,GARIrgC,EAAKq/B,aACPp0B,EAAOipB,KAAK,oBAAqBn0B,GAEH,qBAArBC,EAAKs/B,cACVntB,EAAQssB,WAAatsB,EAAQ2sB,QAAU3sB,EAAQysB,WAAazsB,EAAQ4sB,SACtE/+B,EAAKs/B,aAAc,IAGnBt/B,EAAKq/B,YACPr/B,EAAKm+B,WAAY,OAGnB,GAAKn+B,EAAKs/B,YAAV,CAGAr0B,EAAOszB,YAAa,GACf1R,EAAOkE,SAAWhxB,EAAE0oB,YACvB1oB,EAAE2E,iBAEAmoB,EAAO2T,2BAA6B3T,EAAO4T,QAC7C1gC,EAAE2gC,kBAGC1gC,EAAKo+B,UACJvR,EAAOjjB,MACTqB,EAAOyuB,UAET15B,EAAK2gC,eAAiB11B,EAAO8gB,eAC7B9gB,EAAO2pB,cAAc,GACjB3pB,EAAOutB,WACTvtB,EAAOglB,WAAW5H,QAAQ,qCAE5BroB,EAAK4gC,qBAAsB,GAEvB/T,EAAOgU,aAAyC,IAA1B51B,EAAOguB,iBAAqD,IAA1BhuB,EAAOiuB,gBACjEjuB,EAAOiwB,eAAc,GAEvBjwB,EAAOipB,KAAK,kBAAmBn0B,IAEjCkL,EAAOipB,KAAK,aAAcn0B,GAC1BC,EAAKo+B,SAAU,EAEf,IAAIpD,EAAO/vB,EAAO6kB,eAAiBoQ,EAAQC,EAC3ChuB,EAAQ6oB,KAAOA,EAEfA,GAAQnO,EAAOiU,WACXt3B,IAAKwxB,GAAQA,GAEjB/vB,EAAOu0B,eAAiBxE,EAAO,EAAI,OAAS,OAC5Ch7B,EAAK+3B,iBAAmBiD,EAAOh7B,EAAK2gC,eAEpC,IAAII,GAAsB,EACtBC,EAAkBnU,EAAOmU,gBA0B7B,GAzBInU,EAAOoT,sBACTe,EAAkB,GAEfhG,EAAO,GAAKh7B,EAAK+3B,iBAAmB9sB,EAAOqqB,gBAC9CyL,GAAsB,EAClBlU,EAAOoU,aAAYjhC,EAAK+3B,iBAAoB9sB,EAAOqqB,eAAiB,EAAzB,UAAiCrqB,EAAOqqB,eAAiBt1B,EAAK2gC,eAAiB3F,EAASgG,KAC9HhG,EAAO,GAAKh7B,EAAK+3B,iBAAmB9sB,EAAO8qB,iBACpDgL,GAAsB,EAClBlU,EAAOoU,aAAYjhC,EAAK+3B,iBAAoB9sB,EAAO8qB,eAAiB,EAAzB,SAAgC9qB,EAAO8qB,eAAiB/1B,EAAK2gC,eAAiB3F,EAASgG,KAGpID,IACFhhC,EAAEigC,yBAA0B,IAIzB/0B,EAAOguB,gBAA4C,SAA1BhuB,EAAOu0B,gBAA6Bx/B,EAAK+3B,iBAAmB/3B,EAAK2gC,iBAC7F3gC,EAAK+3B,iBAAmB/3B,EAAK2gC,iBAE1B11B,EAAOiuB,gBAA4C,SAA1BjuB,EAAOu0B,gBAA6Bx/B,EAAK+3B,iBAAmB/3B,EAAK2gC,iBAC7F3gC,EAAK+3B,iBAAmB/3B,EAAK2gC,gBAK3B9T,EAAOuN,UAAY,EAAG,CACxB,KAAIrvB,KAAKuI,IAAI0nB,GAAQnO,EAAOuN,WAAap6B,EAAKy/B,oBAW5C,YADAz/B,EAAK+3B,iBAAmB/3B,EAAK2gC,gBAT7B,IAAK3gC,EAAKy/B,mBAMR,OALAz/B,EAAKy/B,oBAAqB,EAC1BttB,EAAQ2sB,OAAS3sB,EAAQssB,SACzBtsB,EAAQ4sB,OAAS5sB,EAAQysB,SACzB5+B,EAAK+3B,iBAAmB/3B,EAAK2gC,oBAC7BxuB,EAAQ6oB,KAAO/vB,EAAO6kB,eAAiB3d,EAAQssB,SAAWtsB,EAAQ2sB,OAAS3sB,EAAQysB,SAAWzsB,EAAQ4sB,QASvGlS,EAAOqU,eAAgBrU,EAAOkE,WAG/BlE,EAAOsU,UAAYtU,EAAOwH,qBAAuBxH,EAAOyH,yBAC1DrpB,EAAO+rB,oBACP/rB,EAAOmrB,uBAELvJ,EAAOsU,WAEsB,IAA3BnhC,EAAKohC,WAAWpoC,QAClBgH,EAAKohC,WAAWnoC,KAAK,CACnBsd,SAAUpE,EAAQlH,EAAO6kB,eAAiB,SAAW,UACrDuR,KAAMrhC,EAAKu/B,iBAGfv/B,EAAKohC,WAAWnoC,KAAK,CACnBsd,SAAUpE,EAAQlH,EAAO6kB,eAAiB,WAAa,YACvDuR,KAAM5V,EAAMK,SAIhB7gB,EAAO2qB,eAAe51B,EAAK+3B,kBAE3B9sB,EAAO+sB,aAAah4B,EAAK+3B,4BAlMnB/3B,EAAKs/B,aAAet/B,EAAKq/B,aAC3Bp0B,EAAOipB,KAAK,oBAAqBn0B,GCVxB,SAAS,EAAClG,GACvB,IAAMoR,EAAS3D,KACTtH,EAAOiL,EAAO6yB,gBAGlBjR,EACE5hB,EADF4hB,OAAQ1a,EACNlH,EADMkH,QAAuB3I,EAC7ByB,EADeklB,aAAmBF,EAClChlB,EADkCglB,WAAYU,EAC9C1lB,EAD8C0lB,WAAYD,EAC1DzlB,EAD0DylB,SAE1D3wB,EAAIlG,EAMR,GALIkG,EAAEg+B,gBAAeh+B,EAAIA,EAAEg+B,eACvB/9B,EAAKo/B,qBACPn0B,EAAOipB,KAAK,WAAYn0B,GAE1BC,EAAKo/B,qBAAsB,GACtBp/B,EAAKm+B,UAMR,OALIn+B,EAAKo+B,SAAWvR,EAAOgU,YACzB51B,EAAOiwB,eAAc,GAEvBl7B,EAAKo+B,SAAU,OACfp+B,EAAKs/B,aAAc,GAIjBzS,EAAOgU,YAAc7gC,EAAKo+B,SAAWp+B,EAAKm+B,aAAwC,IAA1BlzB,EAAOguB,iBAAqD,IAA1BhuB,EAAOiuB,iBACnGjuB,EAAOiwB,eAAc,GAIvB,IA2BIoG,EA3BEC,EAAe9V,EAAMK,MACrB0V,EAAWD,EAAevhC,EAAKu/B,eAgBrC,GAbIt0B,EAAOszB,aACTtzB,EAAOwsB,mBAAmB13B,GAC1BkL,EAAOipB,KAAK,YAAan0B,GACrByhC,EAAW,KAAQD,EAAevhC,EAAKyhC,cAAiB,KAC1Dx2B,EAAOipB,KAAK,wBAAyBn0B,IAIzCC,EAAKyhC,cAAgBhW,EAAMK,MAC3BL,EAAMG,UAAS,WACR3gB,EAAO6tB,YAAW7tB,EAAOszB,YAAa,OAGxCv+B,EAAKm+B,YAAcn+B,EAAKo+B,UAAYnzB,EAAOu0B,gBAAmC,IAAjBrtB,EAAQ6oB,MAAch7B,EAAK+3B,mBAAqB/3B,EAAK2gC,eAIrH,OAHA3gC,EAAKm+B,WAAY,EACjBn+B,EAAKo+B,SAAU,OACfp+B,EAAKs/B,aAAc,GAcrB,GAXAt/B,EAAKm+B,WAAY,EACjBn+B,EAAKo+B,SAAU,EACfp+B,EAAKs/B,aAAc,EAIjBgC,EADEzU,EAAOqU,aACI13B,EAAMyB,EAAOsM,WAAatM,EAAOsM,WAEhCvX,EAAK+3B,kBAGjBlL,EAAOkE,QAIX,GAAIlE,EAAOsU,SAAX,CACE,GAAIG,GAAcr2B,EAAOqqB,eAEvB,YADArqB,EAAOR,QAAQQ,EAAOJ,aAGxB,GAAIy2B,GAAcr2B,EAAO8qB,eAMvB,YALI9qB,EAAOL,OAAO5R,OAAS03B,EAAS13B,OAClCiS,EAAOR,QAAQimB,EAAS13B,OAAS,GAEjCiS,EAAOR,QAAQQ,EAAOL,OAAO5R,OAAS,IAK1C,GAAI6zB,EAAO6U,iBAAkB,CAC3B,GAAI1hC,EAAKohC,WAAWpoC,OAAS,EAAG,CAC9B,IAAM2oC,EAAgB3hC,EAAKohC,WAAWQ,MAChCC,EAAgB7hC,EAAKohC,WAAWQ,MAEhCE,EAAWH,EAAcprB,SAAWsrB,EAActrB,SAClD8qB,EAAOM,EAAcN,KAAOQ,EAAcR,KAChDp2B,EAAO82B,SAAWD,EAAWT,EAC7Bp2B,EAAO82B,UAAY,EACfh3B,KAAKuI,IAAIrI,EAAO82B,UAAYlV,EAAOmV,0BACrC/2B,EAAO82B,SAAW,IAIhBV,EAAO,KAAQ5V,EAAMK,MAAQ6V,EAAcN,KAAQ,OACrDp2B,EAAO82B,SAAW,QAGpB92B,EAAO82B,SAAW,EAEpB92B,EAAO82B,UAAYlV,EAAOoV,8BAE1BjiC,EAAKohC,WAAWpoC,OAAS,EACzB,IAAIkpC,EAAmB,IAAOrV,EAAOsV,sBAC/BC,EAAmBn3B,EAAO82B,SAAWG,EAEvCG,EAAcp3B,EAAOsM,UAAY6qB,EACjC54B,IAAK64B,GAAeA,GAExB,IACIC,EAEAC,EAHAC,GAAW,EAETC,EAA2C,GAA5B13B,KAAKuI,IAAIrI,EAAO82B,UAAiBlV,EAAO6V,4BAE7D,GAAIL,EAAcp3B,EAAO8qB,eACnBlJ,EAAO8V,wBACLN,EAAcp3B,EAAO8qB,gBAAkB0M,IACzCJ,EAAcp3B,EAAO8qB,eAAiB0M,GAExCH,EAAsBr3B,EAAO8qB,eAC7ByM,GAAW,EACXxiC,EAAK4gC,qBAAsB,GAE3ByB,EAAcp3B,EAAO8qB,eAEnBlJ,EAAOjjB,MAAQijB,EAAOwG,iBAAgBkP,GAAe,QACpD,GAAIF,EAAcp3B,EAAOqqB,eAC1BzI,EAAO8V,wBACLN,EAAcp3B,EAAOqqB,eAAiBmN,IACxCJ,EAAcp3B,EAAOqqB,eAAiBmN,GAExCH,EAAsBr3B,EAAOqqB,eAC7BkN,GAAW,EACXxiC,EAAK4gC,qBAAsB,GAE3ByB,EAAcp3B,EAAOqqB,eAEnBzI,EAAOjjB,MAAQijB,EAAOwG,iBAAgBkP,GAAe,QACpD,GAAI1V,EAAO+V,eAAgB,CAEhC,IADA,IAAI9L,EACKnpB,EAAI,EAAGA,EAAI+iB,EAAS13B,OAAQ2U,GAAK,EACxC,GAAI+iB,EAAS/iB,IAAM00B,EAAa,CAC9BvL,EAAYnpB,EACZ,MASJ00B,IAJEA,EADEt3B,KAAKuI,IAAIod,EAASoG,GAAauL,GAAet3B,KAAKuI,IAAIod,EAASoG,EAAY,GAAKuL,IAA0C,SAA1Bp3B,EAAOu0B,eAC5F9O,EAASoG,GAETpG,EAASoG,EAAY,IAUvC,GANIyL,GACFt3B,EAAO43B,KAAK,iBAAiB,WAC3B53B,EAAOyuB,aAIa,IAApBzuB,EAAO82B,UAMT,GAJEG,EADE14B,EACiBuB,KAAKuI,MAAM+uB,EAAcp3B,EAAOsM,WAAatM,EAAO82B,UAEpDh3B,KAAKuI,KAAK+uB,EAAcp3B,EAAOsM,WAAatM,EAAO82B,UAEpElV,EAAO+V,eAAgB,CAQzB,IAAME,EAAe/3B,KAAKuI,KAAK9J,GAAO64B,EAAcA,GAAep3B,EAAOsM,WACpEwrB,EAAmB93B,EAAO2lB,gBAAgB3lB,EAAOJ,aAErDq3B,EADEY,EAAeC,EACElW,EAAO4H,MACjBqO,EAAe,EAAIC,EACM,IAAflW,EAAO4H,MAEQ,IAAf5H,EAAO4H,YAGzB,GAAI5H,EAAO+V,eAEhB,YADA33B,EAAOkvB,iBAILtN,EAAO8V,wBAA0BH,GACnCv3B,EAAO2qB,eAAe0M,GACtBr3B,EAAO2pB,cAAcsN,GACrBj3B,EAAO+sB,aAAaqK,GACpBp3B,EAAO8tB,iBAAgB,EAAM9tB,EAAOu0B,gBACpCv0B,EAAOutB,WAAY,EACnBvI,EAAWrH,eAAc,WAClB3d,IAAUA,EAAO6tB,WAAc94B,EAAK4gC,sBACzC31B,EAAOipB,KAAK,kBACZjpB,EAAO2pB,cAAc/H,EAAO4H,OAC5B13B,YAAW,WACTkO,EAAO+sB,aAAasK,GACpBrS,EAAWrH,eAAc,WAClB3d,IAAUA,EAAO6tB,WACtB7tB,EAAO2d,qBAER,QAEI3d,EAAO82B,UAChB92B,EAAO2qB,eAAeyM,GACtBp3B,EAAO2pB,cAAcsN,GACrBj3B,EAAO+sB,aAAaqK,GACpBp3B,EAAO8tB,iBAAgB,EAAM9tB,EAAOu0B,gBAC/Bv0B,EAAOutB,YACVvtB,EAAOutB,WAAY,EACnBvI,EAAWrH,eAAc,WAClB3d,IAAUA,EAAO6tB,WACtB7tB,EAAO2d,qBAIX3d,EAAO2qB,eAAeyM,GAGxBp3B,EAAO+rB,oBACP/rB,EAAOmrB,2BACF,GAAIvJ,EAAO+V,eAEhB,YADA33B,EAAOkvB,mBAIJtN,EAAO6U,kBAAoBF,GAAY3U,EAAOmW,gBACjD/3B,EAAO2qB,iBACP3qB,EAAO+rB,oBACP/rB,EAAOmrB,2BAtKX,CA8KA,IAFA,IAAI6M,EAAY,EACZC,EAAYj4B,EAAO2lB,gBAAgB,GAC9B/qB,EAAI,EAAGA,EAAI8qB,EAAW33B,OAAQ6M,GAAMA,EAAIgnB,EAAOyG,mBAAqB,EAAIzG,EAAO2F,eAAiB,CACvG,IAAMiH,EAAa5zB,EAAIgnB,EAAOyG,mBAAqB,EAAI,EAAIzG,EAAO2F,eACzB,qBAA9B7B,EAAW9qB,EAAI4zB,GACpB6H,GAAc3Q,EAAW9qB,IAAMy7B,EAAa3Q,EAAW9qB,EAAI4zB,KAC7DwJ,EAAYp9B,EACZq9B,EAAYvS,EAAW9qB,EAAI4zB,GAAa9I,EAAW9qB,IAE5Cy7B,GAAc3Q,EAAW9qB,KAClCo9B,EAAYp9B,EACZq9B,EAAYvS,EAAWA,EAAW33B,OAAS,GAAK23B,EAAWA,EAAW33B,OAAS,IAKnF,IAAMmqC,GAAS7B,EAAa3Q,EAAWsS,IAAcC,EAC/CzJ,EAAawJ,EAAYpW,EAAOyG,mBAAqB,EAAI,EAAIzG,EAAO2F,eAE1E,GAAIgP,EAAW3U,EAAOmW,aAAc,CAElC,IAAKnW,EAAOuW,WAEV,YADAn4B,EAAOR,QAAQQ,EAAOJ,aAGM,SAA1BI,EAAOu0B,iBACL2D,GAAStW,EAAOwW,gBAAiBp4B,EAAOR,QAAQw4B,EAAYxJ,GAC3DxuB,EAAOR,QAAQw4B,IAEQ,SAA1Bh4B,EAAOu0B,iBACL2D,EAAS,EAAItW,EAAOwW,gBAAkBp4B,EAAOR,QAAQw4B,EAAYxJ,GAChExuB,EAAOR,QAAQw4B,QAEjB,CAEL,IAAKpW,EAAOyW,YAEV,YADAr4B,EAAOR,QAAQQ,EAAOJ,aAGEI,EAAOtC,aAAe5I,EAAEjG,SAAWmR,EAAOtC,WAAW6C,QAAUzL,EAAEjG,SAAWmR,EAAOtC,WAAW8C,QAQ7G1L,EAAEjG,SAAWmR,EAAOtC,WAAW6C,OACxCP,EAAOR,QAAQw4B,EAAYxJ,GAE3BxuB,EAAOR,QAAQw4B,IATe,SAA1Bh4B,EAAOu0B,gBACTv0B,EAAOR,QAAQw4B,EAAYxJ,GAEC,SAA1BxuB,EAAOu0B,gBACTv0B,EAAOR,QAAQw4B,MC5RR,SAAS,IACtB,IAAMh4B,EAAS3D,KAEPulB,EAAe5hB,EAAf4hB,OAAQthB,EAAON,EAAPM,GAEhB,IAAIA,GAAyB,IAAnBA,EAAG2d,YAAb,CAGI2D,EAAO0W,aACTt4B,EAAOu4B,gBAIT,IAAQvK,EAA6ChuB,EAA7CguB,eAAgBC,EAA6BjuB,EAA7BiuB,eAAgBxI,EAAazlB,EAAbylB,SAGxCzlB,EAAOguB,gBAAiB,EACxBhuB,EAAOiuB,gBAAiB,EAExBjuB,EAAOykB,aACPzkB,EAAO+kB,eAEP/kB,EAAOmrB,uBACuB,SAAzBvJ,EAAOkF,eAA4BlF,EAAOkF,cAAgB,IAAM9mB,EAAOgrB,QAAUhrB,EAAO+qB,cAAgB/qB,EAAO4hB,OAAOwG,eACzHpoB,EAAOR,QAAQQ,EAAOL,OAAO5R,OAAS,EAAG,GAAG,GAAO,GAEnDiS,EAAOR,QAAQQ,EAAOJ,YAAa,GAAG,GAAO,GAG3CI,EAAOw4B,UAAYx4B,EAAOw4B,SAASC,SAAWz4B,EAAOw4B,SAASE,QAChE14B,EAAOw4B,SAASG,MAGlB34B,EAAOiuB,eAAiBA,EACxBjuB,EAAOguB,eAAiBA,EAEpBhuB,EAAO4hB,OAAOsH,eAAiBzD,IAAazlB,EAAOylB,UACrDzlB,EAAOmpB,iBCrCI,SAAS,EAACr0B,GACvB,IAAMkL,EAAS3D,KACV2D,EAAOszB,aACNtzB,EAAO4hB,OAAOgX,eAAe9jC,EAAE2E,iBAC/BuG,EAAO4hB,OAAOiX,0BAA4B74B,EAAOutB,YACnDz4B,EAAE2gC,kBACF3gC,EAAEgkC,6BCNO,SAAS,IACtB,IAAM94B,EAAS3D,KACP4wB,EAA4BjtB,EAA5BitB,UAAW/H,EAAiBllB,EAAjBklB,aACnBllB,EAAOktB,kBAAoBltB,EAAOsM,UAC9BtM,EAAO6kB,eAEP7kB,EAAOsM,UADL4Y,EACmB+H,EAAUiB,YAAcjB,EAAUhP,YAAegP,EAAU1O,YAE5D0O,EAAU1O,WAGhCve,EAAOsM,WAAa2gB,EAAU5V,WAGN,IAAtBrX,EAAOsM,YAAkBtM,EAAOsM,UAAY,GAEhDtM,EAAO+rB,oBACP/rB,EAAOmrB,sBAGP,IAAMN,EAAiB7qB,EAAO8qB,eAAiB9qB,EAAOqqB,gBAC/B,IAAnBQ,EACY,GAEC7qB,EAAOsM,UAAYtM,EAAOqqB,gBAAmBQ,KAE1C7qB,EAAO0qB,UACzB1qB,EAAO2qB,eAAezF,GAAgBllB,EAAOsM,UAAYtM,EAAOsM,WAGlEtM,EAAOipB,KAAK,eAAgBjpB,EAAOsM,WAAW,GCnBhD,IAAIysB,GAAqB,EACzB,SAASC,KCaT,ICzBA,EAAe,CACbC,MAAM,EACNp1B,UAAW,aACXmvB,kBAAmB,YACnBjF,aAAc,EACdvE,MAAO,IACP1D,SAAS,EACToT,sBAAsB,EAEtB1L,gCAAgC,EAGhCuG,oBAAoB,EACpBE,mBAAoB,GAGpBiC,UAAU,EACVO,kBAAkB,EAClBS,sBAAuB,EACvBQ,wBAAwB,EACxBD,4BAA6B,EAC7BT,8BAA+B,EAC/BW,gBAAgB,EAChBZ,wBAAyB,IAGzBzM,YAAY,EAGZ/B,gBAAgB,EAGhBsE,kBAAkB,EAGlBvE,OAAQ,QAGRgQ,iBAAaniC,EAGbkwB,aAAc,EACdS,cAAe,EACfD,gBAAiB,EACjBE,oBAAqB,SACrBQ,eAAgB,EAChBc,mBAAoB,EACpBD,gBAAgB,EAChBK,sBAAsB,EACtBzC,mBAAoB,EACpBE,kBAAmB,EACnBkG,qBAAqB,EACrBtD,0BAA0B,EAG1BI,eAAe,EAGfnB,cAAc,EAGd8N,WAAY,EACZT,WAAY,GACZjF,eAAe,EACfkI,aAAa,EACbF,YAAY,EACZC,gBAAiB,GACjBL,aAAc,IACd9B,cAAc,EACdtB,gBAAgB,EAChBxF,UAAW,EACXoG,0BAA0B,EAC1BX,0BAA0B,EAC1BC,+BAA+B,EAC/BG,qBAAqB,EAGrBmE,mBAAmB,EAGnBnD,YAAY,EACZD,gBAAiB,IAGjB3M,qBAAqB,EACrBC,uBAAuB,EAGvBuM,YAAY,EAGZgD,eAAe,EACfC,0BAA0B,EAC1BjM,qBAAqB,EAGrBwM,eAAe,EACfC,qBAAqB,EAGrB16B,MAAM,EACNixB,qBAAsB,EACtBtB,aAAc,KACdkB,wBAAwB,EAGxBvB,gBAAgB,EAChBD,gBAAgB,EAChBuF,aAAc,KACd51B,WAAW,EACX01B,eAAgB,oBAChBD,kBAAmB,KAGnBkG,kBAAkB,EAGlBC,uBAAwB,oBACxB76B,WAAY,eACZixB,gBAAiB,+BACjBrE,iBAAkB,sBAClBG,0BAA2B,gCAC3BvB,kBAAmB,uBACnB0B,oBAAqB,yBACrBL,eAAgB,oBAChBG,wBAAyB,8BACzBF,eAAgB,oBAChBG,wBAAyB,8BACzB3tB,aAAc,iBAGduuB,oBAAoB,GC7GhBiN,EAAa,CACjB/5B,OAAAA,EACA6M,UAAAA,EACAsP,WAAAA,EACAuL,MAAAA,EACAxoB,KAAAA,EACAi3B,WAAAA,EACA6D,aAAAA,EACA7c,OHqFa,CACb8c,aAtGF,WACE,IAAM15B,EAAS3D,KAEbulB,EACE5hB,EADF4hB,OAAQ+X,EACN35B,EADM25B,YAAar5B,EACnBN,EADmBM,GAAI2sB,EACvBjtB,EADuBitB,UAG3BjtB,EAAOkL,aAAeA,EAAa+Y,KAAKjkB,GACxCA,EAAOuH,YAAcA,EAAY0c,KAAKjkB,GACtCA,EAAO45B,WAAaA,EAAW3V,KAAKjkB,GAChC4hB,EAAOkE,UACT9lB,EAAO65B,SAAWA,EAAS5V,KAAKjkB,IAGlCA,EAAOpK,QAAUA,EAAQquB,KAAKjkB,GAE9B,IAAMoc,IAAYwF,EAAO4T,OAGzB,IAAK/S,EAAQC,OAASD,EAAQE,cAC5BriB,EAAGsF,iBAAiB+zB,EAAYG,MAAO95B,EAAOkL,cAAc,GAC5D9b,EAAAA,iBAA0BuqC,EAAYI,KAAM/5B,EAAOuH,YAAa6U,GAChEhtB,EAAAA,iBAA0BuqC,EAAYK,IAAKh6B,EAAO45B,YAAY,OACzD,CACL,GAAInX,EAAQC,MAAO,CACjB,IAAMG,IAAwC,eAAtB8W,EAAYG,QAA0BrX,EAAQI,kBAAmBjB,EAAO0X,mBAAmB,CAAExzB,SAAS,EAAMsW,SAAS,GAC7I9b,EAAGsF,iBAAiB+zB,EAAYG,MAAO95B,EAAOkL,aAAc2X,GAC5DviB,EAAGsF,iBAAiB+zB,EAAYI,KAAM/5B,EAAOuH,YAAakb,EAAQI,gBAAkB,CAAE/c,SAAS,EAAOsW,QAAAA,GAAYA,GAClH9b,EAAGsF,iBAAiB+zB,EAAYK,IAAKh6B,EAAO45B,WAAY/W,GACpD8W,EAAYhlB,QACdrU,EAAGsF,iBAAiB+zB,EAAYhlB,OAAQ3U,EAAO45B,WAAY/W,GAExDkW,IACH3pC,EAAAA,iBAA0B,aAAc4pC,GACxCD,GAAqB,IAGpBnX,EAAOuO,gBAAkBc,EAAOI,MAAQJ,EAAOK,SAAa1P,EAAOuO,gBAAkB1N,EAAQC,OAASuO,EAAOI,OAChH/wB,EAAGsF,iBAAiB,YAAa5F,EAAOkL,cAAc,GACtD9b,EAAAA,iBAA0B,YAAa4Q,EAAOuH,YAAa6U,GAC3DhtB,EAAAA,iBAA0B,UAAW4Q,EAAO45B,YAAY,KAIxDhY,EAAOgX,eAAiBhX,EAAOiX,2BACjCv4B,EAAGsF,iBAAiB,QAAS5F,EAAOpK,SAAS,GAE3CgsB,EAAOkE,SACTmH,EAAUrnB,iBAAiB,SAAU5F,EAAO65B,UAI1CjY,EAAOsX,qBACTl5B,EAAOgc,GAAIiV,EAAOI,KAAOJ,EAAOK,QAAU,0CAA4C,wBAA0BxqB,GAAU,GAE1H9G,EAAOgc,GAAG,iBAAkBlV,GAAU,IAiDxCmzB,aA7CF,WACE,IAAMj6B,EAAS3D,KAGbulB,EACE5hB,EADF4hB,OAAQ+X,EACN35B,EADM25B,YAAar5B,EACnBN,EADmBM,GAAI2sB,EACvBjtB,EADuBitB,UAGrB7Q,IAAYwF,EAAO4T,OAGzB,IAAK/S,EAAQC,OAASD,EAAQE,cAC5BriB,EAAGuI,oBAAoB8wB,EAAYG,MAAO95B,EAAOkL,cAAc,GAC/D9b,EAAAA,oBAA6BuqC,EAAYI,KAAM/5B,EAAOuH,YAAa6U,GACnEhtB,EAAAA,oBAA6BuqC,EAAYK,IAAKh6B,EAAO45B,YAAY,OAC5D,CACL,GAAInX,EAAQC,MAAO,CACjB,IAAMG,IAAwC,iBAAtB8W,EAAYG,QAA4BrX,EAAQI,kBAAmBjB,EAAO0X,mBAAmB,CAAExzB,SAAS,EAAMsW,SAAS,GAC/I9b,EAAGuI,oBAAoB8wB,EAAYG,MAAO95B,EAAOkL,aAAc2X,GAC/DviB,EAAGuI,oBAAoB8wB,EAAYI,KAAM/5B,EAAOuH,YAAa6U,GAC7D9b,EAAGuI,oBAAoB8wB,EAAYK,IAAKh6B,EAAO45B,WAAY/W,GACvD8W,EAAYhlB,QACdrU,EAAGuI,oBAAoB8wB,EAAYhlB,OAAQ3U,EAAO45B,WAAY/W,IAG7DjB,EAAOuO,gBAAkBc,EAAOI,MAAQJ,EAAOK,SAAa1P,EAAOuO,gBAAkB1N,EAAQC,OAASuO,EAAOI,OAChH/wB,EAAGuI,oBAAoB,YAAa7I,EAAOkL,cAAc,GACzD9b,EAAAA,oBAA6B,YAAa4Q,EAAOuH,YAAa6U,GAC9DhtB,EAAAA,oBAA6B,UAAW4Q,EAAO45B,YAAY,KAI3DhY,EAAOgX,eAAiBhX,EAAOiX,2BACjCv4B,EAAGuI,oBAAoB,QAAS7I,EAAOpK,SAAS,GAG9CgsB,EAAOkE,SACTmH,EAAUpkB,oBAAoB,SAAU7I,EAAO65B,UAIjD75B,EAAOgd,IAAKiU,EAAOI,KAAOJ,EAAOK,QAAU,0CAA4C,wBAA0BxqB,KGjFjHwxB,YC5Ba,CAAEC,cCDF,WACb,IAAMv4B,EAAS3D,KAEbuD,EACEI,EADFJ,YAAa0sB,EACXtsB,EADWssB,YADf,EAEItsB,EADwBsuB,aAAAA,OAD5B,MAC2C,EAD3C,EAC8C1M,EAC1C5hB,EAD0C4hB,OAAQ8C,EAClD1kB,EADkD0kB,IAEhD4T,EAAc1W,EAAO0W,YAC3B,GAAKA,KAAgBA,GAAmD,IAApCztC,OAAOuQ,KAAKk9B,GAAavqC,QAA7D,CAGA,IAAMmsC,EAAal6B,EAAOm6B,cAAc7B,GAExC,GAAI4B,GAAcl6B,EAAOo6B,oBAAsBF,EAAY,CACzD,IAAMG,EAAuBH,KAAc5B,EAAcA,EAAY4B,QAAc/jC,EAC/EkkC,GACF,CAAC,gBAAiB,eAAgB,iBAAkB,qBAAsB,mBAAmBn/B,SAAQ,SAAC2mB,GACpG,IAAMyY,EAAaD,EAAqBxY,GACd,qBAAfyY,IAITD,EAAqBxY,GAHT,kBAAVA,GAA6C,SAAfyY,GAAwC,SAAfA,EAEtC,kBAAVzY,EACqBvU,WAAWgtB,GAEXlxB,SAASkxB,EAAY,IAJrB,WASpC,IAAMC,EAAmBF,GAAwBr6B,EAAOw6B,eAClDC,EAAc7Y,EAAOiF,gBAAkB,EACvC6T,EAAaH,EAAiB1T,gBAAkB,EAClD4T,IAAgBC,EAClBhW,EAAI5O,YAAJ,UAAmB8L,EAAO2X,uBAA1B,oBAA4D3X,EAAO2X,uBAAnE,qBACUkB,GAAeC,IACzBhW,EAAI9N,SAAJ,UAAgBgL,EAAO2X,uBAAvB,aAC6C,WAAzCgB,EAAiBxT,qBACnBrC,EAAI9N,SAAJ,UAAgBgL,EAAO2X,uBAAvB,qBAIJ,IAAMoB,EAAmBJ,EAAiB12B,WAAa02B,EAAiB12B,YAAc+d,EAAO/d,UACvF+2B,EAAchZ,EAAOjjB,OAAS47B,EAAiBzT,gBAAkBlF,EAAOkF,eAAiB6T,GAE3FA,GAAoBrO,GACtBtsB,EAAO66B,kBAGTra,EAAMzI,OAAO/X,EAAO4hB,OAAQ2Y,GAE5B/Z,EAAMzI,OAAO/X,EAAQ,CACnB20B,eAAgB30B,EAAO4hB,OAAO+S,eAC9B3G,eAAgBhuB,EAAO4hB,OAAOoM,eAC9BC,eAAgBjuB,EAAO4hB,OAAOqM,iBAGhCjuB,EAAOo6B,kBAAoBF,EAEvBU,GAAetO,IACjBtsB,EAAOgwB,cACPhwB,EAAOuvB,aACPvvB,EAAO+kB,eACP/kB,EAAOR,QAASI,EAAc0uB,EAAgBtuB,EAAOsuB,aAAc,GAAG,IAGxEtuB,EAAOipB,KAAK,aAAcsR,MD9DEJ,cEDjB,SAAU7B,GAEvB,GAAKA,EAAL,CACA,IAAI4B,GAAa,EAEXY,EAASjwC,OAAOuQ,KAAKk9B,GAAavkC,KAAI,SAAC+a,GAC3C,GAAqB,kBAAVA,GAA6C,IAAvBA,EAAMuC,QAAQ,KAAY,CACzD,IAAM0pB,EAAWztB,WAAWwB,EAAMksB,OAAO,IAEzC,MAAO,CAAE7pC,MADK8X,EAAAA,YAAqB8xB,EACnBjsB,MAAAA,GAElB,MAAO,CAAE3d,MAAO2d,EAAOA,MAAAA,MAGzBgsB,EAAOnsB,MAAK,SAAClM,EAAGhB,GAAJ,OAAU2H,SAAS3G,EAAEtR,MAAO,IAAMiY,SAAS3H,EAAEtQ,MAAO,OAChE,IAAK,IAAIyJ,EAAI,EAAGA,EAAIkgC,EAAO/sC,OAAQ6M,GAAK,EAAG,CACzC,MAAyBkgC,EAAOlgC,GAAxBkU,EAAR,EAAQA,MAAR,EAAe3d,OACF8X,EAAAA,aACXixB,EAAaprB,GAGjB,OAAOorB,GAAc,SHSvB/Q,cFPe,CAAEA,cAxBjB,WACE,IAAMnpB,EAAS3D,KACTulB,EAAS5hB,EAAO4hB,OAChBqZ,EAAYj7B,EAAOowB,SACnB8K,EAAoBl7B,EAAOL,OAAO5R,OAAS,GAAM6zB,EAAOoE,mBAAsBpE,EAAOyE,cAAgBrmB,EAAOL,OAAO5R,OAAS,GAAQiS,EAAOL,OAAO,GAAIse,YAAeje,EAAOL,OAAO5R,OAErL6zB,EAAOoE,oBAAsBpE,EAAOsE,mBAAqBgV,EAC3Dl7B,EAAOowB,SAAW8K,GAAqBl7B,EAAO8kB,KAE9C9kB,EAAOowB,SAAsC,IAA3BpwB,EAAOylB,SAAS13B,OAGpCiS,EAAOguB,gBAAkBhuB,EAAOowB,SAChCpwB,EAAOiuB,gBAAkBjuB,EAAOowB,SAG5B6K,IAAcj7B,EAAOowB,UAAUpwB,EAAOipB,KAAKjpB,EAAOowB,SAAW,OAAS,UAEtE6K,GAAaA,IAAcj7B,EAAOowB,WACpCpwB,EAAOgrB,OAAQ,EACXhrB,EAAOtC,YAAYsC,EAAOtC,WAAW+B,YEY3CsW,QI9Ba,CAAEolB,WCDF,WACb,IAAMn7B,EAAS3D,KAEbuE,EACEZ,EADFY,WAAYghB,EACV5hB,EADU4hB,OAAQrjB,EAClByB,EADkBzB,IAAKmmB,EACvB1kB,EADuB0kB,IAErB0W,EAAW,GAEjBA,EAASptC,KAAK,eACdotC,EAASptC,KAAK4zB,EAAO/d,WAEjB+d,EAAOsU,UACTkF,EAASptC,KAAK,aAEZ4zB,EAAO0I,YACT8Q,EAASptC,KAAK,cAEZuQ,GACF68B,EAASptC,KAAK,OAEZ4zB,EAAOiF,gBAAkB,IAC3BuU,EAASptC,KAAK,YACqB,WAA/B4zB,EAAOmF,qBACTqU,EAASptC,KAAK,oBAGdijC,EAAOK,SACT8J,EAASptC,KAAK,WAEZijC,EAAOI,KACT+J,EAASptC,KAAK,OAGZ4zB,EAAOkE,SACTsV,EAASptC,KAAK,YAGhBotC,EAASlgC,SAAQ,SAACmgC,GAChBz6B,EAAW5S,KAAK4zB,EAAO2X,uBAAyB8B,MAGlD3W,EAAI9N,SAAShW,EAAW7F,KAAK,ODvCF4b,cEHd,WACb,IACQ+N,EADOroB,KACPqoB,IAAK9jB,EADEvE,KACFuE,WAEb8jB,EAAI5O,YAAYlV,EAAW7F,KAAK,QN8BhCugC,OO/Ba,CACbC,UCDa,SAAUC,EAASxjB,EAAKyjB,EAAQC,EAAOC,EAAkB9mB,GACtE,IAAI+mB,EACJ,SAASC,IACHhnB,GAAUA,IAEEyF,EAAEkhB,GAASzb,OAAO,WAAW,IAE3Byb,EAAQM,UAAaH,EAmBvCE,IAlBI7jB,IACF4jB,EAAQ,IAAI3yB,EAAAA,OACN8yB,OAASF,EACfD,EAAMI,QAAUH,EACZH,IACFE,EAAMF,MAAQA,GAEZD,IACFG,EAAMH,OAASA,GAEbzjB,IACF4jB,EAAM5jB,IAAMA,IAGd6jB,KDpBJzC,cELa,WACb,IAAMp5B,EAAS3D,KAEf,SAASw/B,IACe,qBAAX77B,GAAqC,OAAXA,GAAoBA,IAAUA,EAAO6tB,iBAC9C13B,IAAxB6J,EAAOi8B,eAA4Bj8B,EAAOi8B,cAAgB,GAC1Dj8B,EAAOi8B,eAAiBj8B,EAAOk8B,aAAanuC,SAC1CiS,EAAO4hB,OAAOyX,qBAAqBr5B,EAAOP,SAC9CO,EAAOipB,KAAK,iBANhBjpB,EAAOk8B,aAAel8B,EAAO0kB,IAAIxE,KAAK,OAStC,IAAK,IAAItlB,EAAI,EAAGA,EAAIoF,EAAOk8B,aAAanuC,OAAQ6M,GAAK,EAAG,CACtD,IAAM4gC,EAAUx7B,EAAOk8B,aAAathC,GACpCoF,EAAOu7B,UACLC,EACAA,EAAQW,YAAcX,EAAQpgB,aAAa,OAC3CogB,EAAQC,QAAUD,EAAQpgB,aAAa,UACvCogB,EAAQE,OAASF,EAAQpgB,aAAa,UACtC,EACAygB,OTkBAO,EAAmB,GAEnBC,EAAAA,SAAAA,iCACJ,aAAqB,MACf/7B,EACAshB,GAFe,0CAANvT,EAAM,yBAANA,EAAM,gBAGC,IAAhBA,EAAKtgB,QAAgBsgB,EAAK,GAAGzM,aAAeyM,EAAK,GAAGzM,cAAgB/W,OACtE+2B,EAASvT,EAAK,IAEb/N,EAAc+N,EADV,GACAuT,EAAUvT,EADV,IAGFuT,IAAQA,EAAS,IAEtBA,EAASpB,EAAMzI,OAAO,GAAI6J,GACtBthB,IAAOshB,EAAOthB,KAAIshB,EAAOthB,GAAKA,GAElC,cAAMshB,GAEN/2B,OAAOuQ,KAAKo+B,GAAYt+B,SAAQ,SAACohC,GAC/BzxC,OAAOuQ,KAAKo+B,EAAW8C,IAAiBphC,SAAQ,SAACqhC,GAC1CF,EAAOtxC,UAAUwxC,KACpBF,EAAOtxC,UAAUwxC,GAAe/C,EAAW8C,GAAgBC,UAMjE,IAAMv8B,GAAS,UACe,qBAAnBA,EAAOoB,UAChBpB,EAAOoB,QAAU,IAEnBvW,OAAOuQ,KAAK4E,EAAOoB,SAASlG,SAAQ,SAACmG,GACnC,IAAMhH,EAAS2F,EAAOoB,QAAQC,GAC9B,GAAIhH,EAAOunB,OAAQ,CACjB,IAAM4a,EAAkB3xC,OAAOuQ,KAAKf,EAAOunB,QAAQ,GAC7CkC,EAAezpB,EAAOunB,OAAO4a,GACnC,GAA4B,kBAAjB1Y,GAA8C,OAAjBA,EAAuB,OAC/D,KAAM0Y,KAAmB5a,MAAU,YAAakC,GAAe,QAC/B,IAA5BlC,EAAO4a,KACT5a,EAAO4a,GAAmB,CAAElX,SAAS,IAGF,kBAA5B1D,EAAO4a,IACT,YAAa5a,EAAO4a,KAEzB5a,EAAO4a,GAAiBlX,SAAU,GAE/B1D,EAAO4a,KAAkB5a,EAAO4a,GAAmB,CAAElX,SAAS,QAKvE,IAAMmX,EAAejc,EAAMzI,OAAO,GAAI2kB,GACtC18B,EAAO28B,iBAAiBF,GAGxBz8B,EAAO4hB,OAASpB,EAAMzI,OAAO,GAAI0kB,EAAcL,EAAkBxa,GACjE5hB,EAAOw6B,eAAiBha,EAAMzI,OAAO,GAAI/X,EAAO4hB,QAChD5hB,EAAO48B,aAAepc,EAAMzI,OAAO,GAAI6J,GAGvC5hB,EAAOsa,EAAIA,EAGX,IAoBI0K,EApBEN,EAAMpK,EAAEta,EAAO4hB,OAAOthB,IAG5B,KAFAA,EAAKokB,EAAI,IAGP,OAAO,cAAAvuB,GAGT,GAAIuuB,EAAI32B,OAAS,EAAG,CAClB,IAAM8uC,EAAU,GAKhB,OAJAnY,EAAIhG,MAAK,SAAC7e,EAAOi9B,GACf,IAAMC,EAAYvc,EAAMzI,OAAO,GAAI6J,EAAQ,CAAEthB,GAAIw8B,IACjDD,EAAQ7uC,KAAK,IAAIquC,EAAOU,QAEnB,SAAAF,GAoIT,OAjIAv8B,EAAGN,OAASA,EACZ0kB,EAAI3vB,KAAK,SAAUiL,GAIfM,GAAMA,EAAG08B,YAAc18B,EAAG08B,WAAW1kB,eACvC0M,EAAa1K,EAAEha,EAAG08B,WAAW1kB,cAAd,WAAgCtY,EAAO4hB,OAAO5jB,iBAElD7I,SAAW,SAAC8nC,GAAD,OAAavY,EAAIvvB,SAAS8nC,IAEhDjY,EAAaN,EAAIvvB,SAAJ,WAAiB6K,EAAO4hB,OAAO5jB,eAG9CwiB,EAAMzI,OAAO/X,EAAQ,CACnB0kB,IAAAA,EACApkB,GAAAA,EACA0kB,WAAAA,EACAiI,UAAWjI,EAAW,GAGtBpkB,WAAY,GAGZjB,OAAQ2a,IACRoL,WAAY,GACZD,SAAU,GACVE,gBAAiB,GAGjBd,aAhBmB,WAiBjB,MAAmC,eAA5B7kB,EAAO4hB,OAAO/d,WAEvBoE,WAnBmB,WAoBjB,MAAmC,aAA5BjI,EAAO4hB,OAAO/d,WAGvBtF,IAA+B,QAAzB+B,EAAGJ,IAAIoyB,eAAoD,QAAzB5N,EAAIlG,IAAI,aAChD0G,aAA0C,eAA5BllB,EAAO4hB,OAAO/d,YAAwD,QAAzBvD,EAAGJ,IAAIoyB,eAAoD,QAAzB5N,EAAIlG,IAAI,cACrG2G,SAAwC,gBAA9BH,EAAWxG,IAAI,WAGzB5e,YAAa,EACbyrB,UAAW,EAGXN,aAAa,EACbC,OAAO,EAGP1e,UAAW,EACX4gB,kBAAmB,EACnBxC,SAAU,EACVoM,SAAU,EACVvJ,WAAW,EAGXS,eAAgBhuB,EAAO4hB,OAAOoM,eAC9BC,eAAgBjuB,EAAO4hB,OAAOqM,eAG9B0L,YAAc,WACZ,IAAMjX,EAAQ,CAAC,aAAc,YAAa,WAAY,eAClD8O,EAAU,CAAC,YAAa,YAAa,WAezC,OAdI/O,EAAQE,gBACV6O,EAAU,CAAC,cAAe,cAAe,cAE3CxxB,EAAOk9B,iBAAmB,CACxBpD,MAAOpX,EAAM,GACbqX,KAAMrX,EAAM,GACZsX,IAAKtX,EAAM,GACX/N,OAAQ+N,EAAM,IAEhB1iB,EAAOm9B,mBAAqB,CAC1BrD,MAAOtI,EAAQ,GACfuI,KAAMvI,EAAQ,GACdwI,IAAKxI,EAAQ,IAER/O,EAAQC,QAAU1iB,EAAO4hB,OAAOuO,cAAgBnwB,EAAOk9B,iBAAmBl9B,EAAOm9B,mBAjB5E,GAmBdtK,gBAAiB,CACfK,eAAW/8B,EACXg9B,aAASh9B,EACTg+B,yBAAqBh+B,EACrBm+B,oBAAgBn+B,EAChBi+B,iBAAaj+B,EACb22B,sBAAkB32B,EAClBu/B,oBAAgBv/B,EAChBq+B,wBAAoBr+B,EAEpBs+B,aAAc,wDAEd+B,cAAehW,EAAMK,MACrBuc,kBAAcjnC,EAEdggC,WAAY,GACZR,yBAAqBx/B,EACrBkR,kBAAclR,EACdk+B,iBAAal+B,GAIfm9B,YAAY,EAGZqB,eAAgB30B,EAAO4hB,OAAO+S,eAE9BztB,QAAS,CACP2sB,OAAQ,EACRC,OAAQ,EACRN,SAAU,EACVG,SAAU,EACV5D,KAAM,GAIRmM,aAAc,GACdD,aAAc,IAKhBj8B,EAAOq9B,aAGHr9B,EAAO4hB,OAAOqX,MAChBj5B,EAAOi5B,QAIF,SAAAj5B,sDAGT,WACE,IAAMA,EAAS3D,KAEbulB,EACE5hB,EADF4hB,OAAQjiB,EACNK,EADML,OAAQ+lB,EACd1lB,EADc0lB,WAAkBT,EAChCjlB,EAD0B8kB,KAAkBllB,EAC5CI,EAD4CJ,YAE5C09B,EAAM,EACV,GAAI1b,EAAOwG,eAAgB,CAGzB,IAFA,IACImV,EADA9W,EAAY9mB,EAAOC,GAAauoB,gBAE3BvtB,EAAIgF,EAAc,EAAGhF,EAAI+E,EAAO5R,OAAQ6M,GAAK,EAChD+E,EAAO/E,KAAO2iC,IAEhBD,GAAO,GADP7W,GAAa9mB,EAAO/E,GAAGutB,iBAEPlD,IAAYsY,GAAY,IAG5C,IAAK,IAAI3iC,EAAIgF,EAAc,EAAGhF,GAAK,EAAGA,GAAK,EACrC+E,EAAO/E,KAAO2iC,IAEhBD,GAAO,GADP7W,GAAa9mB,EAAO/E,GAAGutB,iBAEPlD,IAAYsY,GAAY,SAI5C,IAAK,IAAI3iC,EAAIgF,EAAc,EAAGhF,EAAI+E,EAAO5R,OAAQ6M,GAAK,EAChD8qB,EAAW9qB,GAAK8qB,EAAW9lB,GAAeqlB,IAC5CqY,GAAO,GAIb,OAAOA,wBAGT,WACE,IAAMt9B,EAAS3D,KACf,GAAK2D,IAAUA,EAAO6tB,UAAtB,CACA,IAAQpI,EAAqBzlB,EAArBylB,SAAU7D,EAAW5hB,EAAX4hB,OAEdA,EAAO0W,aACTt4B,EAAOu4B,gBAETv4B,EAAOykB,aACPzkB,EAAO+kB,eACP/kB,EAAO2qB,iBACP3qB,EAAOmrB,sBAUHnrB,EAAO4hB,OAAOsU,UAChBnJ,IACI/sB,EAAO4hB,OAAO0I,YAChBtqB,EAAOupB,sBAG4B,SAAhCvpB,EAAO4hB,OAAOkF,eAA4B9mB,EAAO4hB,OAAOkF,cAAgB,IAAM9mB,EAAOgrB,QAAUhrB,EAAO4hB,OAAOwG,eACnGpoB,EAAOR,QAAQQ,EAAOL,OAAO5R,OAAS,EAAG,GAAG,GAAO,GAEnDiS,EAAOR,QAAQQ,EAAOJ,YAAa,GAAG,GAAO,KAG1DmtB,IAGAnL,EAAOsH,eAAiBzD,IAAazlB,EAAOylB,UAC9CzlB,EAAOmpB,gBAETnpB,EAAOipB,KAAK,UA1BZ,SAAS8D,IACP,IAAMyQ,EAAiBx9B,EAAOklB,cAAmC,EAApBllB,EAAOsM,UAAiBtM,EAAOsM,UACtEmhB,EAAe3tB,KAAKgE,IAAIhE,KAAKC,IAAIy9B,EAAgBx9B,EAAO8qB,gBAAiB9qB,EAAOqqB,gBACtFrqB,EAAO+sB,aAAaU,GACpBztB,EAAO+rB,oBACP/rB,EAAOmrB,sDAwBX,SAAgBsS,GAAiC,IAAnBC,IAAmB,yDACzC19B,EAAS3D,KACTshC,EAAmB39B,EAAO4hB,OAAO/d,UAKvC,OAJK45B,IAEHA,EAAoC,eAArBE,EAAoC,WAAa,cAE7DF,IAAiBE,GAAuC,eAAjBF,GAAkD,aAAjBA,IAI7Ez9B,EAAO0kB,IACJ5O,YADH,UACkB9V,EAAO4hB,OAAO2X,wBADhC,OACyDoE,IACtD/mB,SAFH,UAEe5W,EAAO4hB,OAAO2X,wBAF7B,OAEsDkE,IAEtDz9B,EAAO4hB,OAAO/d,UAAY45B,EAE1Bz9B,EAAOL,OAAO+e,MAAK,SAACmH,EAAY+X,GACT,aAAjBH,EACFG,EAAQjkC,MAAMtJ,MAAQ,GAEtButC,EAAQjkC,MAAMrJ,OAAS,MAI3B0P,EAAOipB,KAAK,mBACRyU,GAAY19B,EAAOP,UAlBdO,sBAuBX,WACE,IAAMA,EAAS3D,KACX2D,EAAOssB,cAEXtsB,EAAOipB,KAAK,cAGRjpB,EAAO4hB,OAAO0W,aAChBt4B,EAAOu4B,gBAITv4B,EAAOm7B,aAGHn7B,EAAO4hB,OAAOjjB,MAChBqB,EAAOuvB,aAITvvB,EAAOykB,aAGPzkB,EAAO+kB,eAEH/kB,EAAO4hB,OAAOsH,eAChBlpB,EAAOmpB,gBAILnpB,EAAO4hB,OAAOgU,YAChB51B,EAAOiwB,gBAGLjwB,EAAO4hB,OAAOwX,eAChBp5B,EAAOo5B,gBAILp5B,EAAO4hB,OAAOjjB,KAChBqB,EAAOR,QAAQQ,EAAO4hB,OAAOmM,aAAe/tB,EAAOsuB,aAAc,EAAGtuB,EAAO4hB,OAAO2K,oBAElFvsB,EAAOR,QAAQQ,EAAO4hB,OAAOmM,aAAc,EAAG/tB,EAAO4hB,OAAO2K,oBAI9DvsB,EAAO05B,eAGP15B,EAAOssB,aAAc,EAGrBtsB,EAAOipB,KAAK,gCAGd,WAAmD,IAA3C4U,IAA2C,yDAApBC,IAAoB,yDAC3C99B,EAAS3D,KAEbulB,EACE5hB,EADF4hB,OAAQ8C,EACN1kB,EADM0kB,IAAKM,EACXhlB,EADWglB,WAAYrlB,EACvBK,EADuBL,OAG3B,MAA6B,qBAAlBK,EAAO4hB,QAA0B5hB,EAAO6tB,YAInD7tB,EAAOipB,KAAK,iBAGZjpB,EAAOssB,aAAc,EAGrBtsB,EAAOi6B,eAGHrY,EAAOjjB,MACTqB,EAAOgwB,cAIL8N,IACF99B,EAAO2W,gBACP+N,EAAIpJ,WAAW,SACf0J,EAAW1J,WAAW,SAClB3b,GAAUA,EAAO5R,QACnB4R,EACGmW,YAAY,CACX8L,EAAOsI,kBACPtI,EAAO0J,iBACP1J,EAAO2J,eACP3J,EAAO4J,gBACPzwB,KAAK,MACNugB,WAAW,SACXA,WAAW,4BAIlBtb,EAAOipB,KAAK,WAGZp+B,OAAOuQ,KAAK4E,EAAOmjB,iBAAiBjoB,SAAQ,SAACkoB,GAC3CpjB,EAAOgd,IAAIoG,OAGU,IAAnBya,IACF79B,EAAO0kB,IAAI,GAAG1kB,OAAS,KACvBA,EAAO0kB,IAAI3vB,KAAK,SAAU,MAC1ByrB,EAAMC,YAAYzgB,IAEpBA,EAAO6tB,WAAY,GA9CV,qCAmDX,SAAsBkQ,GACpBvd,EAAMzI,OAAOqkB,EAAkB2B,iCAGjC,WACE,OAAO3B,wBAGT,WACE,OAAOM,qBAGT,WACE,OAAOzZ,iBAGT,WACE,OAAO3I,QA9bL+hB,CAAepZ,GUrCrB,EAAe,CACbt4B,KAAM,SACN05B,MAAO,CACL+M,OAAQH,GAEV3M,OAAQ,CACN8M,OAAQH,ICNZ,EAAe,CACbtmC,KAAM,UACN05B,MAAO,CACL2Z,QAASvb,GAEX6B,OAAQ,CACN0Z,QAASvb,ICNPwb,EAKG,CACLC,SAAUj1B,EAAAA,UAAAA,UAAAA,MAAiC,SAC3Ck1B,SANF,WACE,IAAMhN,EAAKloB,EAAAA,UAAAA,UAAAA,cACX,OAAQkoB,EAAG9f,QAAQ,WAAa,GAAK8f,EAAG9f,QAAQ,UAAY,GAAK8f,EAAG9f,QAAQ,WAAa,EAI/E8sB,GACVC,UAAW,+CAA+CC,KAAKp1B,EAAAA,UAAAA,YCRnE,EAAe,CACbte,KAAM,UACN05B,MAAO,CACLia,QAASL,GAEX3Z,OAAQ,CACNga,QAASL,ICLb,EAAe,CACbtzC,KAAM,SACNkX,OAFa,WAGX,IAAM7B,EAAS3D,KACfmkB,EAAMzI,OAAO/X,EAAQ,CACnBu+B,OAAQ,CACNC,cADM,WAECx+B,IAAUA,EAAO6tB,WAAc7tB,EAAOssB,cAC3CtsB,EAAOipB,KAAK,gBACZjpB,EAAOipB,KAAK,YAEdwV,yBANM,WAOCz+B,IAAUA,EAAO6tB,WAAc7tB,EAAOssB,aAC3CtsB,EAAOipB,KAAK,0BAKpBjN,GAAI,CACFid,KADE,WAIAhwB,EAAAA,iBAAwB,SAFT5M,KAE0BkiC,OAAOC,eAGhDv1B,EAAAA,iBAAwB,oBALT5M,KAKqCkiC,OAAOE,2BAE7Dr/B,QATE,WAWA6J,EAAAA,oBAA2B,SADZ5M,KAC6BkiC,OAAOC,eACnDv1B,EAAAA,oBAA2B,oBAFZ5M,KAEwCkiC,OAAOE,6BC7B9DC,EAAW,CACfC,KAAM11B,EAAAA,kBAA2BA,EAAAA,uBACjC21B,OAFe,SAER/vC,GAAsB,IAAdouC,EAAc,uDAAJ,GACjBj9B,EAAS3D,KAETwiC,EAAeH,EAASC,KACxB/b,EAAW,IAAIic,GAAa,SAACC,GAIjC,GAAyB,IAArBA,EAAU/wC,OAAd,CAIA,IAAMgxC,EAAiB,WACrB/+B,EAAOipB,KAAK,iBAAkB6V,EAAU,KAGtC71B,EAAAA,sBACFA,EAAAA,sBAA6B81B,GAE7B91B,EAAAA,WAAkB81B,EAAgB,QAVlC/+B,EAAOipB,KAAK,iBAAkB6V,EAAU,OAc5Clc,EAAS1Y,QAAQrb,EAAQ,CACvBmwC,WAA0C,qBAAvB/B,EAAQ+B,YAAoC/B,EAAQ+B,WACvEC,UAAwC,qBAAtBhC,EAAQgC,WAAmChC,EAAQgC,UACrEC,cAAgD,qBAA1BjC,EAAQiC,eAAuCjC,EAAQiC,gBAG/El/B,EAAO4iB,SAASuc,UAAUnxC,KAAK40B,IAEjCqW,KAjCe,WAkCb,IAAMj5B,EAAS3D,KACf,GAAKomB,EAAQG,UAAa5iB,EAAO4hB,OAAOgB,SAAxC,CACA,GAAI5iB,EAAO4hB,OAAOwd,eAEhB,IADA,IAAMC,EAAmBr/B,EAAO0kB,IAAIhI,UAC3B9hB,EAAI,EAAGA,EAAIykC,EAAiBtxC,OAAQ6M,GAAK,EAChDoF,EAAO4iB,SAASgc,OAAOS,EAAiBzkC,IAI5CoF,EAAO4iB,SAASgc,OAAO5+B,EAAO0kB,IAAI,GAAI,CAAEua,UAAWj/B,EAAO4hB,OAAO0d,uBAGjEt/B,EAAO4iB,SAASgc,OAAO5+B,EAAOglB,WAAW,GAAI,CAAEga,YAAY,MAE7D5/B,QAhDe,WAiDE/C,KACRumB,SAASuc,UAAUjkC,SAAQ,SAAC0nB,GACjCA,EAAS2c,gBAFIljC,KAIRumB,SAASuc,UAAY,KAIhC,EAAe,CACbx0C,KAAM,WACNi3B,OAAQ,CACNgB,UAAU,EACVwc,gBAAgB,EAChBE,sBAAsB,GAExBz9B,OAPa,WAQX,IAAM7B,EAAS3D,KACfmkB,EAAMzI,OAAO/X,EAAQ,CACnB4iB,SAAU,CACRqW,KAAMyF,EAASzF,KAAKhV,KAAKjkB,GACzB4+B,OAAQF,EAASE,OAAO3a,KAAKjkB,GAC7BZ,QAASs/B,EAASt/B,QAAQ6kB,KAAKjkB,GAC/Bm/B,UAAW,OAIjBnjB,GAAI,CACFid,KADE,WAEe58B,KACRumB,SAASqW,QAElB75B,QALE,WAMe/C,KACRumB,SAASxjB,aCnFhBogC,EAAU,CACd//B,OADc,SACPggC,GACL,IAAMz/B,EAAS3D,KACf,EAA0D2D,EAAO4hB,OAAzDkF,EAAR,EAAQA,cAAeS,EAAvB,EAAuBA,eAAgBa,EAAvC,EAAuCA,eACvC,EAA4CpoB,EAAO4hB,OAAOyD,QAAlDqa,EAAR,EAAQA,gBAAiBC,EAAzB,EAAyBA,eACzB,EAOI3/B,EAAOqlB,QANHua,EADR,EACErkC,KACIskC,EAFN,EAEEpkC,GACAkE,EAHF,EAGEA,OACYmgC,EAJd,EAIEpa,WACAqa,EALF,EAKEA,YACQC,EANV,EAME50B,OAEFpL,EAAO+rB,oBACP,IAEIkU,EAIAC,EACAC,EAPEvgC,EAAcI,EAAOJ,aAAe,EAGjBqgC,EAArBjgC,EAAOklB,aAA2B,QACpBllB,EAAO6kB,eAAiB,OAAS,MAI/CuD,GACF8X,EAAcpgC,KAAKoN,MAAM4Z,EAAgB,GAAKS,EAAiBmY,EAC/DS,EAAergC,KAAKoN,MAAM4Z,EAAgB,GAAKS,EAAiBoY,IAEhEO,EAAcpZ,GAAiBS,EAAiB,GAAKmY,EACrDS,EAAe5Y,EAAiBoY,GAElC,IAAMpkC,EAAOuE,KAAKC,KAAKH,GAAe,GAAKugC,EAAc,GACnD1kC,EAAKqE,KAAKgE,KAAKlE,GAAe,GAAKsgC,EAAavgC,EAAO5R,OAAS,GAChEqd,GAAUpL,EAAO0lB,WAAWnqB,IAAS,IAAMyE,EAAO0lB,WAAW,IAAM,GASzE,SAAS0a,IACPpgC,EAAO+kB,eACP/kB,EAAO2qB,iBACP3qB,EAAOmrB,sBACHnrB,EAAOqgC,MAAQrgC,EAAO4hB,OAAOye,KAAK/a,SACpCtlB,EAAOqgC,KAAKC,OAIhB,GAhBA9f,EAAMzI,OAAO/X,EAAOqlB,QAAS,CAC3B9pB,KAAAA,EACAE,GAAAA,EACA2P,OAAAA,EACAsa,WAAY1lB,EAAO0lB,aAYjBka,IAAiBrkC,GAAQskC,IAAepkC,IAAOgkC,EAKjD,OAJIz/B,EAAO0lB,aAAeoa,GAAsB10B,IAAW40B,GACzDhgC,EAAOL,OAAO6e,IAAIyhB,EAAlB,UAAiC70B,EAAjC,YAEFpL,EAAO2qB,iBAGT,GAAI3qB,EAAO4hB,OAAOyD,QAAQkb,eAcxB,OAbAvgC,EAAO4hB,OAAOyD,QAAQkb,eAAe3kC,KAAKoE,EAAQ,CAChDoL,OAAAA,EACA7P,KAAAA,EACAE,GAAAA,EACAkE,OAAS,WAEP,IADA,IAAM6gC,EAAiB,GACd5lC,EAAIW,EAAMX,GAAKa,EAAIb,GAAK,EAC/B4lC,EAAexyC,KAAK2R,EAAO/E,IAE7B,OAAO4lC,EALA,UAQXJ,IAGF,IAAMK,EAAiB,GACjBC,EAAgB,GACtB,GAAIjB,EACFz/B,EAAOglB,WAAW9E,KAAlB,WAA2BlgB,EAAO4hB,OAAOljB,aAAcuX,cAEvD,IAAK,IAAIrb,EAAIglC,EAAchlC,GAAKilC,EAAYjlC,GAAK,GAC3CA,EAAIW,GAAQX,EAAIa,IAClBuE,EAAOglB,WAAW9E,KAAlB,WAA2BlgB,EAAO4hB,OAAOljB,WAAzC,qCAAgF9D,EAAhF,OAAuFqb,SAI7F,IAAK,IAAIrb,EAAI,EAAGA,EAAI+E,EAAO5R,OAAQ6M,GAAK,EAClCA,GAAKW,GAAQX,GAAKa,IACM,qBAAfokC,GAA8BJ,EACvCiB,EAAc1yC,KAAK4M,IAEfA,EAAIilC,GAAYa,EAAc1yC,KAAK4M,GACnCA,EAAIglC,GAAca,EAAezyC,KAAK4M,KAIhD8lC,EAAcxlC,SAAQ,SAAC2E,GACrBG,EAAOglB,WAAW7F,OAAO4gB,EAAYpgC,EAAOE,GAAQA,OAEtD4gC,EAAe9xB,MAAK,SAAClM,EAAGhB,GAAJ,OAAUA,EAAIgB,KAAGvH,SAAQ,SAAC2E,GAC5CG,EAAOglB,WAAWzF,QAAQwgB,EAAYpgC,EAAOE,GAAQA,OAEvDG,EAAOglB,WAAW7vB,SAAS,iBAAiBqpB,IAAIyhB,EAAhD,UAA+D70B,EAA/D,OACAg1B,KAEFL,YAtGc,SAsGF5Y,EAAOtnB,GACjB,IAAMG,EAAS3D,KACTulB,EAAS5hB,EAAO4hB,OAAOyD,QAC7B,GAAIzD,EAAO+e,OAAS3gC,EAAOqlB,QAAQsb,MAAM9gC,GACvC,OAAOG,EAAOqlB,QAAQsb,MAAM9gC,GAE9B,IAAM+gC,EAAWhf,EAAOme,YACpBzlB,EAAEsH,EAAOme,YAAYnkC,KAAKoE,EAAQmnB,EAAOtnB,IACzCya,EAAE,eAAD,OAAgBta,EAAO4hB,OAAOljB,WAA9B,sCAAsEmB,EAAtE,aAAgFsnB,EAAhF,WAGL,OAFKyZ,EAAS1lB,KAAK,4BAA4B0lB,EAAS1lB,KAAK,0BAA2Brb,GACpF+hB,EAAO+e,QAAO3gC,EAAOqlB,QAAQsb,MAAM9gC,GAAS+gC,GACzCA,GAETtQ,YAnHc,SAmHF3wB,GACV,IAAMK,EAAS3D,KACf,GAAsB,kBAAXsD,GAAuB,WAAYA,EAC5C,IAAK,IAAI/E,EAAI,EAAGA,EAAI+E,EAAO5R,OAAQ6M,GAAK,EAClC+E,EAAO/E,IAAIoF,EAAOqlB,QAAQ1lB,OAAO3R,KAAK2R,EAAO/E,SAGnDoF,EAAOqlB,QAAQ1lB,OAAO3R,KAAK2R,GAE7BK,EAAOqlB,QAAQ5lB,QAAO,IAExB8wB,aA9Hc,SA8HD5wB,GACX,IAAMK,EAAS3D,KACTuD,EAAcI,EAAOJ,YACvBosB,EAAiBpsB,EAAc,EAC/BihC,EAAoB,EAExB,GAAI7/B,MAAMC,QAAQtB,GAAS,CACzB,IAAK,IAAI/E,EAAI,EAAGA,EAAI+E,EAAO5R,OAAQ6M,GAAK,EAClC+E,EAAO/E,IAAIoF,EAAOqlB,QAAQ1lB,OAAO6c,QAAQ7c,EAAO/E,IAEtDoxB,EAAiBpsB,EAAcD,EAAO5R,OACtC8yC,EAAoBlhC,EAAO5R,YAE3BiS,EAAOqlB,QAAQ1lB,OAAO6c,QAAQ7c,GAEhC,GAAIK,EAAO4hB,OAAOyD,QAAQsb,MAAO,CAC/B,IAAMA,EAAQ3gC,EAAOqlB,QAAQsb,MACvBG,EAAW,GACjBj2C,OAAOuQ,KAAKulC,GAAOzlC,SAAQ,SAAC6lC,GAC1B,IAAMC,EAAYL,EAAMI,GAClBE,EAAgBD,EAAU9lB,KAAK,2BACjC+lB,GACFD,EAAU9lB,KAAK,0BAA2B9R,SAAS63B,EAAe,IAAM,GAE1EH,EAAS13B,SAAS23B,EAAa,IAAMF,GAAqBG,KAE5DhhC,EAAOqlB,QAAQsb,MAAQG,EAEzB9gC,EAAOqlB,QAAQ5lB,QAAO,GACtBO,EAAOR,QAAQwsB,EAAgB,IAEjC6E,YA7Jc,SA6JFC,GACV,IAAM9wB,EAAS3D,KACf,GAA6B,qBAAlBy0B,GAAmD,OAAlBA,EAA5C,CACA,IAAIlxB,EAAcI,EAAOJ,YACzB,GAAIoB,MAAMC,QAAQ6vB,GAChB,IAAK,IAAIl2B,EAAIk2B,EAAc/iC,OAAS,EAAG6M,GAAK,EAAGA,GAAK,EAClDoF,EAAOqlB,QAAQ1lB,OAAOwd,OAAO2T,EAAcl2B,GAAI,GAC3CoF,EAAO4hB,OAAOyD,QAAQsb,cACjB3gC,EAAOqlB,QAAQsb,MAAM7P,EAAcl2B,IAExCk2B,EAAcl2B,GAAKgF,IAAaA,GAAe,GACnDA,EAAcE,KAAKC,IAAIH,EAAa,QAGtCI,EAAOqlB,QAAQ1lB,OAAOwd,OAAO2T,EAAe,GACxC9wB,EAAO4hB,OAAOyD,QAAQsb,cACjB3gC,EAAOqlB,QAAQsb,MAAM7P,GAE1BA,EAAgBlxB,IAAaA,GAAe,GAChDA,EAAcE,KAAKC,IAAIH,EAAa,GAEtCI,EAAOqlB,QAAQ5lB,QAAO,GACtBO,EAAOR,QAAQI,EAAa,KAE9BoxB,gBArLc,WAsLZ,IAAMhxB,EAAS3D,KACf2D,EAAOqlB,QAAQ1lB,OAAS,GACpBK,EAAO4hB,OAAOyD,QAAQsb,QACxB3gC,EAAOqlB,QAAQsb,MAAQ,IAEzB3gC,EAAOqlB,QAAQ5lB,QAAO,GACtBO,EAAOR,QAAQ,EAAG,KAItB,EAAe,CACb7U,KAAM,UACNi3B,OAAQ,CACNyD,QAAS,CACPC,SAAS,EACT3lB,OAAQ,GACRghC,OAAO,EACPZ,YAAa,KACbQ,eAAgB,KAChBb,gBAAiB,EACjBC,eAAgB,IAGpB99B,OAba,WAcX,IAAM7B,EAAS3D,KACfmkB,EAAMzI,OAAO/X,EAAQ,CACnBqlB,QAAS,CACP5lB,OAAQ+/B,EAAQ//B,OAAOwkB,KAAKjkB,GAC5BswB,YAAakP,EAAQlP,YAAYrM,KAAKjkB,GACtCuwB,aAAciP,EAAQjP,aAAatM,KAAKjkB,GACxC6wB,YAAa2O,EAAQ3O,YAAY5M,KAAKjkB,GACtCgxB,gBAAiBwO,EAAQxO,gBAAgB/M,KAAKjkB,GAC9C+/B,YAAaP,EAAQO,YAAY9b,KAAKjkB,GACtCL,OAAQK,EAAO4hB,OAAOyD,QAAQ1lB,OAC9BghC,MAAO,OAIb3kB,GAAI,CACFklB,WADE,WAEA,IAAMlhC,EAAS3D,KACf,GAAK2D,EAAO4hB,OAAOyD,QAAQC,QAA3B,CACAtlB,EAAOY,WAAW5S,KAAlB,UAA0BgS,EAAO4hB,OAAO2X,uBAAxC,YACA,IAAM4H,EAAkB,CACtB/X,qBAAqB,GAEvB5I,EAAMzI,OAAO/X,EAAO4hB,OAAQuf,GAC5B3gB,EAAMzI,OAAO/X,EAAOw6B,eAAgB2G,GAE/BnhC,EAAO4hB,OAAOmM,cACjB/tB,EAAOqlB,QAAQ5lB,WAGnBstB,aAfE,WAgBe1wB,KACHulB,OAAOyD,QAAQC,SADZjpB,KAERgpB,QAAQ5lB,YC7Of2hC,EAAW,CACfC,OADe,SACRzyC,GACL,IAAMoR,EAAS3D,KACOkC,EAAQyB,EAAtBklB,aACJpwB,EAAIlG,EACJkG,EAAEg+B,gBAAeh+B,EAAIA,EAAEg+B,eAC3B,IAAMwO,EAAKxsC,EAAEysC,SAAWzsC,EAAE0sC,SACpBC,EAAazhC,EAAO4hB,OAAO8f,SAASD,WACpCE,EAAWF,GAAqB,KAAPH,EACzBM,EAAaH,GAAqB,KAAPH,EAC3BO,EAAqB,KAAPP,EACdQ,EAAsB,KAAPR,EACfS,EAAmB,KAAPT,EACZU,EAAqB,KAAPV,EAEpB,IAAKthC,EAAOguB,iBAAoBhuB,EAAO6kB,gBAAkBid,GAAkB9hC,EAAOiI,cAAgB+5B,GAAgBJ,GAChH,OAAO,EAET,IAAK5hC,EAAOiuB,iBAAoBjuB,EAAO6kB,gBAAkBgd,GAAiB7hC,EAAOiI,cAAgB85B,GAAcJ,GAC7G,OAAO,EAET,KAAI7sC,EAAEmtC,UAAYntC,EAAEotC,QAAUptC,EAAEqtC,SAAWrtC,EAAEstC,YAGzChzC,EAAAA,gBAA0BA,EAAAA,cAAAA,UAAsF,UAAlDA,EAAAA,cAAAA,SAAAA,eAA+G,aAAlDA,EAAAA,cAAAA,SAAAA,eAA/H,CAGA,GAAI4Q,EAAO4hB,OAAO8f,SAASW,iBAAmBV,GAAYC,GAAcC,GAAeC,GAAgBC,GAAaC,GAAc,CAChI,IAAIM,GAAS,EAEb,GAAItiC,EAAO0kB,IAAIhI,QAAX,WAAuB1c,EAAO4hB,OAAOljB,aAAc3Q,OAAS,GAAyE,IAApEiS,EAAO0kB,IAAIhI,QAAX,WAAuB1c,EAAO4hB,OAAO0J,mBAAoBv9B,OAC5H,OAEF,IAAMw0C,EAAct5B,EAAAA,WACdu5B,EAAev5B,EAAAA,YACfw5B,EAAeziC,EAAO0kB,IAAItZ,SAC5B7M,IAAKkkC,EAAa39B,MAAQ9E,EAAO0kB,IAAI,GAAGnG,YAO5C,IANA,IAAMmkB,EAAc,CAClB,CAACD,EAAa39B,KAAM29B,EAAa19B,KACjC,CAAC09B,EAAa39B,KAAO9E,EAAO3P,MAAOoyC,EAAa19B,KAChD,CAAC09B,EAAa39B,KAAM29B,EAAa19B,IAAM/E,EAAO1P,QAC9C,CAACmyC,EAAa39B,KAAO9E,EAAO3P,MAAOoyC,EAAa19B,IAAM/E,EAAO1P,SAEtDsK,EAAI,EAAGA,EAAI8nC,EAAY30C,OAAQ6M,GAAK,EAAG,CAC9C,IAAMkU,EAAQ4zB,EAAY9nC,GAExBkU,EAAM,IAAM,GAAKA,EAAM,IAAMyzB,GAC1BzzB,EAAM,IAAM,GAAKA,EAAM,IAAM0zB,IAEhCF,GAAS,GAGb,IAAKA,EAAQ,OAEXtiC,EAAO6kB,iBACL8c,GAAYC,GAAcC,GAAeC,KACvChtC,EAAE2E,eAAgB3E,EAAE2E,iBACnB3E,EAAE6tC,aAAc,KAEjBf,GAAcE,KAAkBvjC,IAAUojC,GAAYE,IAAgBtjC,IAAMyB,EAAOuuB,cACnFoT,GAAYE,KAAiBtjC,IAAUqjC,GAAcE,IAAiBvjC,IAAMyB,EAAO2uB,eAErFgT,GAAYC,GAAcG,GAAaC,KACrCltC,EAAE2E,eAAgB3E,EAAE2E,iBACnB3E,EAAE6tC,aAAc,IAEnBf,GAAcI,IAAahiC,EAAOuuB,aAClCoT,GAAYI,IAAW/hC,EAAO2uB,aAEpC3uB,EAAOipB,KAAK,WAAYqY,KAG1BsB,OAxEe,WAyEb,IAAM5iC,EAAS3D,KACX2D,EAAO0hC,SAASpc,UACpBhL,EAAElrB,GAAU4sB,GAAG,UAAWhc,EAAO0hC,SAASL,QAC1CrhC,EAAO0hC,SAASpc,SAAU,IAE5Bud,QA9Ee,WA+Eb,IAAM7iC,EAAS3D,KACV2D,EAAO0hC,SAASpc,UACrBhL,EAAElrB,GAAU4tB,IAAI,UAAWhd,EAAO0hC,SAASL,QAC3CrhC,EAAO0hC,SAASpc,SAAU,KAI9B,EAAe,CACb36B,KAAM,WACNi3B,OAAQ,CACN8f,SAAU,CACRpc,SAAS,EACT+c,gBAAgB,EAChBZ,YAAY,IAGhB5/B,OATa,WAUX,IAAM7B,EAAS3D,KACfmkB,EAAMzI,OAAO/X,EAAQ,CACnB0hC,SAAU,CACRpc,SAAS,EACTsd,OAAQxB,EAASwB,OAAO3e,KAAKjkB,GAC7B6iC,QAASzB,EAASyB,QAAQ5e,KAAKjkB,GAC/BqhC,OAAQD,EAASC,OAAOpd,KAAKjkB,OAInCgc,GAAI,CACFid,KADE,WAEe58B,KACJulB,OAAO8f,SAASpc,SADZjpB,KAENqlC,SAASkB,UAGpBxjC,QAPE,WAQe/C,KACJqlC,SAASpc,SADLjpB,KAENqlC,SAASmB,aC7FxB,IAAMC,EAAa,CACjBC,eAAgBviB,EAAMK,MACtBmiB,yBAAqB7sC,EACrB8sC,kBAAmB,GACnBr0C,MAJiB,WAKf,OAAIqa,EAAAA,UAAAA,UAAAA,QAAmC,YAAc,EAAU,iBA5BnE,WACE,IAAMma,EAAY,UACd8f,EAAc9f,KAAah0B,EAE/B,IAAK8zC,EAAa,CAChB,IAAMhiC,EAAU9R,EAAAA,cAAuB,OACvC8R,EAAQgV,aAAakN,EAAW,WAChC8f,EAA4C,oBAAvBhiC,EAAO,QAc9B,OAXKgiC,GACA9zC,EAAAA,gBACAA,EAAAA,eAAAA,aAG+C,IAA/CA,EAAAA,eAAAA,WAAmC,GAAI,MAG1C8zC,EAAc9zC,EAAAA,eAAAA,WAAmC,eAAgB,QAG5D8zC,EAQEC,GAAqB,QAAU,cAExCvU,UARiB,SAQP95B,GAER,IAIIsuC,EAAK,EACLC,EAAK,EACLC,EAAK,EACLC,EAAK,EAuDT,MApDI,WAAYzuC,IACduuC,EAAKvuC,EAAEwoB,QAEL,eAAgBxoB,IAClBuuC,GAAMvuC,EAAE0uC,WAAa,KAEnB,gBAAiB1uC,IACnBuuC,GAAMvuC,EAAE2uC,YAAc,KAEpB,gBAAiB3uC,IACnBsuC,GAAMtuC,EAAE4uC,YAAc,KAIpB,SAAU5uC,GAAKA,EAAEosB,OAASpsB,EAAE6uC,kBAC9BP,EAAKC,EACLA,EAAK,GAGPC,EA7BmB,GA6BdF,EACLG,EA9BmB,GA8BdF,EAED,WAAYvuC,IACdyuC,EAAKzuC,EAAE8uC,QAEL,WAAY9uC,IACdwuC,EAAKxuC,EAAE+uC,QAGL/uC,EAAEmtC,WAAaqB,IACjBA,EAAKC,EACLA,EAAK,IAGFD,GAAMC,IAAOzuC,EAAEgvC,YACE,IAAhBhvC,EAAEgvC,WACJR,GA7CgB,GA8ChBC,GA9CgB,KAgDhBD,GA/CgB,IAgDhBC,GAhDgB,MAqDhBD,IAAOF,IACTA,EAAME,EAAK,GAAM,EAAI,GAEnBC,IAAOF,IACTA,EAAME,EAAK,GAAM,EAAI,GAGhB,CACLQ,MAAOX,EACPY,MAAOX,EACPY,OAAQX,EACRY,OAAQX,IAGZY,iBA/EiB,WAgFA9nC,KACR+nC,cAAe,GAExBC,iBAnFiB,WAoFAhoC,KACR+nC,cAAe,GAExB/C,OAvFiB,SAuFVzyC,GACL,IAAIkG,EAAIlG,EACFoR,EAAS3D,KACTulB,EAAS5hB,EAAO4hB,OAAO0iB,WAEzBtkC,EAAO4hB,OAAOkE,SAChBhxB,EAAE2E,iBAGJ,IAAI5K,EAASmR,EAAO0kB,IAIpB,GAH8C,cAA1C1kB,EAAO4hB,OAAO0iB,WAAWC,eAC3B11C,EAASyrB,EAAEta,EAAO4hB,OAAO0iB,WAAWC,gBAEjCvkC,EAAOokC,eAAiBv1C,EAAO,GAAG6W,SAAS5Q,EAAEjG,UAAY+yB,EAAO4iB,eAAgB,OAAO,EAExF1vC,EAAEg+B,gBAAeh+B,EAAIA,EAAEg+B,eAC3B,IAAI2R,EAAQ,EACNC,EAAY1kC,EAAOklB,cAAgB,EAAI,EAEvCnwB,EAAO+tC,EAAWlU,UAAU95B,GAElC,GAAI8sB,EAAO+iB,YACT,GAAI3kC,EAAO6kB,eAAgB,CACzB,KAAI/kB,KAAKuI,IAAItT,EAAKkvC,QAAUnkC,KAAKuI,IAAItT,EAAKmvC,SACrC,OAAO,EADuCO,GAAS1vC,EAAKkvC,OAASS,MAErE,MAAI5kC,KAAKuI,IAAItT,EAAKmvC,QAAUpkC,KAAKuI,IAAItT,EAAKkvC,SAC5C,OAAO,EAD8CQ,GAAS1vC,EAAKmvC,YAGxEO,EAAQ3kC,KAAKuI,IAAItT,EAAKkvC,QAAUnkC,KAAKuI,IAAItT,EAAKmvC,SAAWnvC,EAAKkvC,OAASS,GAAa3vC,EAAKmvC,OAG3F,GAAc,IAAVO,EAAa,OAAO,EAIxB,GAFI7iB,EAAOgjB,SAAQH,GAASA,GAEvBzkC,EAAO4hB,OAAOsU,SAoCZ,CAOL,IAAM2O,EAAW,CAAEzO,KAAM5V,EAAMK,MAAO4jB,MAAO3kC,KAAKuI,IAAIo8B,GAAQ5gC,UAAW/D,KAAKwI,KAAKm8B,IAC3EzB,EAAwBhjC,EAAOskC,WAA/BtB,oBACF8B,EAAoB9B,GACrB6B,EAASzO,KAAO4M,EAAoB5M,KAAO,KAC3CyO,EAASJ,OAASzB,EAAoByB,OACtCI,EAAShhC,YAAcm/B,EAAoBn/B,UAChD,IAAKihC,EAAmB,CACtB9kC,EAAOskC,WAAWtB,yBAAsB7sC,EAEpC6J,EAAO4hB,OAAOjjB,MAChBqB,EAAOyuB,UAET,IAAInjB,EAAWtL,EAAO8gB,eAAkB2jB,EAAQ7iB,EAAOmjB,YACjD9Z,EAAejrB,EAAO+qB,YACtBG,EAASlrB,EAAOgrB,MAetB,GAbI1f,GAAYtL,EAAOqqB,iBAAgB/e,EAAWtL,EAAOqqB,gBACrD/e,GAAYtL,EAAO8qB,iBAAgBxf,EAAWtL,EAAO8qB,gBAEzD9qB,EAAO2pB,cAAc,GACrB3pB,EAAO+sB,aAAazhB,GACpBtL,EAAO2qB,iBACP3qB,EAAO+rB,oBACP/rB,EAAOmrB,wBAEDF,GAAgBjrB,EAAO+qB,cAAkBG,GAAUlrB,EAAOgrB,QAC9DhrB,EAAOmrB,sBAGLnrB,EAAO4hB,OAAO+V,eAAgB,CAYhCnjC,aAAawL,EAAOskC,WAAWjxB,SAC/BrT,EAAOskC,WAAWjxB,aAAUld,EAC5B,IAAM8sC,EAAoBjjC,EAAOskC,WAAWrB,kBACxCA,EAAkBl1C,QAAU,IAC9Bk1C,EAAkB+B,QAEpB,IAAMC,EAAYhC,EAAkBl1C,OAASk1C,EAAkBA,EAAkBl1C,OAAS,QAAKoI,EACzF+uC,EAAajC,EAAkB,GAErC,GADAA,EAAkBj1C,KAAK62C,GACnBI,IAAcJ,EAASJ,MAAQQ,EAAUR,OAASI,EAAShhC,YAAcohC,EAAUphC,WAErFo/B,EAAkB9lB,OAAO,QACpB,GAAI8lB,EAAkBl1C,QAAU,IAChC82C,EAASzO,KAAO8O,EAAW9O,KAAO,KAClC8O,EAAWT,MAAQI,EAASJ,OAAS,GACrCI,EAASJ,OAAS,EACvB,CAOA,IAAMU,EAAkBV,EAAQ,EAAI,GAAM,GAC1CzkC,EAAOskC,WAAWtB,oBAAsB6B,EACxC5B,EAAkB9lB,OAAO,GACzBnd,EAAOskC,WAAWjxB,QAAUmN,EAAMG,UAAS,WACzC3gB,EAAOkvB,eAAelvB,EAAO4hB,OAAO4H,OAAO,OAAMrzB,EAAWgvC,KAC3D,GAEAnlC,EAAOskC,WAAWjxB,UAIrBrT,EAAOskC,WAAWjxB,QAAUmN,EAAMG,UAAS,WAEzC3gB,EAAOskC,WAAWtB,oBAAsB6B,EACxC5B,EAAkB9lB,OAAO,GACzBnd,EAAOkvB,eAAelvB,EAAO4hB,OAAO4H,OAAO,OAAMrzB,EAHzB,MAIvB,MAUP,GALK2uC,GAAmB9kC,EAAOipB,KAAK,SAAUn0B,GAG1CkL,EAAO4hB,OAAO4W,UAAYx4B,EAAO4hB,OAAOwjB,8BAA8BplC,EAAOw4B,SAAS6M,OAEtF/5B,IAAatL,EAAOqqB,gBAAkB/e,IAAatL,EAAO8qB,eAAgB,OAAO,OArI5D,CAE3B,IAAM+Z,EAAW,CACfzO,KAAM5V,EAAMK,MACZ4jB,MAAO3kC,KAAKuI,IAAIo8B,GAChB5gC,UAAW/D,KAAKwI,KAAKm8B,GACrBa,IAAK12C,GAIDq0C,EAAoBjjC,EAAOskC,WAAWrB,kBACxCA,EAAkBl1C,QAAU,GAC9Bk1C,EAAkB+B,QAEpB,IAAMC,EAAYhC,EAAkBl1C,OAASk1C,EAAkBA,EAAkBl1C,OAAS,QAAKoI,EAmB/F,GAlBA8sC,EAAkBj1C,KAAK62C,GAQnBI,GACEJ,EAAShhC,YAAcohC,EAAUphC,WAAaghC,EAASJ,MAAQQ,EAAUR,OAASI,EAASzO,KAAO6O,EAAU7O,KAAO,MACrHp2B,EAAOskC,WAAWiB,cAAcV,GAGlC7kC,EAAOskC,WAAWiB,cAAcV,GAK9B7kC,EAAOskC,WAAWkB,cAAcX,GAClC,OAAO,EAyGX,OAFI/vC,EAAE2E,eAAgB3E,EAAE2E,iBACnB3E,EAAE6tC,aAAc,GACd,GAET4C,cAvQiB,SAuQHV,GACZ,IAAM7kC,EAAS3D,KAIf,OAAIwoC,EAASJ,OAAS,GAAKjkB,EAAMK,MAAQ7gB,EAAOskC,WAAWvB,eAAiB,KAgBxE8B,EAAShhC,UAAY,EACjB7D,EAAOgrB,QAAShrB,EAAO4hB,OAAOjjB,MAAUqB,EAAOutB,YACnDvtB,EAAOuuB,YACPvuB,EAAOipB,KAAK,SAAU4b,EAASS,MAEtBtlC,EAAO+qB,cAAe/qB,EAAO4hB,OAAOjjB,MAAUqB,EAAOutB,YAChEvtB,EAAO2uB,YACP3uB,EAAOipB,KAAK,SAAU4b,EAASS,MAGjCtlC,EAAOskC,WAAWvB,gBAAkB,IAAI95B,EAAAA,MAAew8B,WAEhD,IAETD,cA1SiB,SA0SHX,GACZ,IAAM7kC,EAAS3D,KACTulB,EAAS5hB,EAAO4hB,OAAO0iB,WAC7B,GAAIO,EAAShhC,UAAY,GACvB,GAAI7D,EAAOgrB,QAAUhrB,EAAO4hB,OAAOjjB,MAAQijB,EAAO4iB,eAEhD,OAAO,OAEJ,GAAIxkC,EAAO+qB,cAAgB/qB,EAAO4hB,OAAOjjB,MAAQijB,EAAO4iB,eAE7D,OAAO,EAET,OAAO,GAET5B,OAxTiB,WAyTf,IAAM5iC,EAAS3D,KACTzN,EAAQk0C,EAAWl0C,QACzB,GAAIoR,EAAO4hB,OAAOkE,QAEhB,OADA9lB,EAAOitB,UAAUpkB,oBAAoBja,EAAOoR,EAAOskC,WAAWjD,SACvD,EAET,IAAKzyC,EAAO,OAAO,EACnB,GAAIoR,EAAOskC,WAAWhf,QAAS,OAAO,EACtC,IAAIz2B,EAASmR,EAAO0kB,IAQpB,MAP8C,cAA1C1kB,EAAO4hB,OAAO0iB,WAAWC,eAC3B11C,EAASyrB,EAAEta,EAAO4hB,OAAO0iB,WAAWC,eAEtC11C,EAAOmtB,GAAG,aAAchc,EAAOskC,WAAWH,kBAC1Ct1C,EAAOmtB,GAAG,aAAchc,EAAOskC,WAAWD,kBAC1Cx1C,EAAOmtB,GAAGptB,EAAOoR,EAAOskC,WAAWjD,QACnCrhC,EAAOskC,WAAWhf,SAAU,GACrB,GAETud,QA3UiB,WA4Uf,IAAM7iC,EAAS3D,KACTzN,EAAQk0C,EAAWl0C,QACzB,GAAIoR,EAAO4hB,OAAOkE,QAEhB,OADA9lB,EAAOitB,UAAUrnB,iBAAiBhX,EAAOoR,EAAOskC,WAAWjD,SACpD,EAET,IAAKzyC,EAAO,OAAO,EACnB,IAAKoR,EAAOskC,WAAWhf,QAAS,OAAO,EACvC,IAAIz2B,EAASmR,EAAO0kB,IAMpB,MAL8C,cAA1C1kB,EAAO4hB,OAAO0iB,WAAWC,eAC3B11C,EAASyrB,EAAEta,EAAO4hB,OAAO0iB,WAAWC,eAEtC11C,EAAOmuB,IAAIpuB,EAAOoR,EAAOskC,WAAWjD,QACpCrhC,EAAOskC,WAAWhf,SAAU,GACrB,IClXLogB,GAAa,CACjBjmC,OADiB,WAGf,IAAMO,EAAS3D,KACTulB,EAAS5hB,EAAO4hB,OAAOlkB,WAE7B,IAAIsC,EAAO4hB,OAAOjjB,KAAlB,CACA,MAA6BqB,EAAOtC,WAA5BioC,EAAR,EAAQA,QAASC,EAAjB,EAAiBA,QAEbA,GAAWA,EAAQ73C,OAAS,IAC1BiS,EAAO+qB,YACT6a,EAAQhvB,SAASgL,EAAOikB,eAExBD,EAAQ9vB,YAAY8L,EAAOikB,eAE7BD,EAAQ5lC,EAAO4hB,OAAOsH,eAAiBlpB,EAAOowB,SAAW,WAAa,eAAexO,EAAOkkB,YAE1FH,GAAWA,EAAQ53C,OAAS,IAC1BiS,EAAOgrB,MACT2a,EAAQ/uB,SAASgL,EAAOikB,eAExBF,EAAQ7vB,YAAY8L,EAAOikB,eAE7BF,EAAQ3lC,EAAO4hB,OAAOsH,eAAiBlpB,EAAOowB,SAAW,WAAa,eAAexO,EAAOkkB,cAGhGC,YA1BiB,SA0BLjxC,GACV,IAAMkL,EAAS3D,KACfvH,EAAE2E,iBACEuG,EAAO+qB,cAAgB/qB,EAAO4hB,OAAOjjB,MACzCqB,EAAO2uB,aAETqX,YAhCiB,SAgCLlxC,GACV,IAAMkL,EAAS3D,KACfvH,EAAE2E,iBACEuG,EAAOgrB,QAAUhrB,EAAO4hB,OAAOjjB,MACnCqB,EAAOuuB,aAET0K,KAtCiB,WAuCf,IAII0M,EACAC,EALE5lC,EAAS3D,KACTulB,EAAS5hB,EAAO4hB,OAAOlkB,YACvBkkB,EAAOrhB,QAAUqhB,EAAOphB,UAI1BohB,EAAOrhB,SACTolC,EAAUrrB,EAAEsH,EAAOrhB,QAEjBP,EAAO4hB,OAAOuX,mBACc,kBAAlBvX,EAAOrhB,QACdolC,EAAQ53C,OAAS,GACyB,IAA1CiS,EAAO0kB,IAAIxE,KAAK0B,EAAOrhB,QAAQxS,SAElC43C,EAAU3lC,EAAO0kB,IAAIxE,KAAK0B,EAAOrhB,UAGjCqhB,EAAOphB,SACTolC,EAAUtrB,EAAEsH,EAAOphB,QAEjBR,EAAO4hB,OAAOuX,mBACc,kBAAlBvX,EAAOphB,QACdolC,EAAQ73C,OAAS,GACyB,IAA1CiS,EAAO0kB,IAAIxE,KAAK0B,EAAOphB,QAAQzS,SAElC63C,EAAU5lC,EAAO0kB,IAAIxE,KAAK0B,EAAOphB,UAIjCmlC,GAAWA,EAAQ53C,OAAS,GAC9B43C,EAAQ3pB,GAAG,QAAShc,EAAOtC,WAAWsoC,aAEpCJ,GAAWA,EAAQ73C,OAAS,GAC9B63C,EAAQ5pB,GAAG,QAAShc,EAAOtC,WAAWqoC,aAGxCvlB,EAAMzI,OAAO/X,EAAOtC,WAAY,CAC9BioC,QAAAA,EACAplC,OAAQolC,GAAWA,EAAQ,GAC3BC,QAAAA,EACAplC,OAAQolC,GAAWA,EAAQ,OAG/BxmC,QAlFiB,WAmFf,IAAMY,EAAS3D,KACf,EAA6B2D,EAAOtC,WAA5BioC,EAAR,EAAQA,QAASC,EAAjB,EAAiBA,QACbD,GAAWA,EAAQ53C,SACrB43C,EAAQ3oB,IAAI,QAAShd,EAAOtC,WAAWsoC,aACvCL,EAAQ7vB,YAAY9V,EAAO4hB,OAAOlkB,WAAWmoC,gBAE3CD,GAAWA,EAAQ73C,SACrB63C,EAAQ5oB,IAAI,QAAShd,EAAOtC,WAAWqoC,aACvCH,EAAQ9vB,YAAY9V,EAAO4hB,OAAOlkB,WAAWmoC,kBC3F7CI,GAAa,CACjBxmC,OADiB,WAGf,IAAMO,EAAS3D,KACTkC,EAAMyB,EAAOzB,IACbqjB,EAAS5hB,EAAO4hB,OAAOhkB,WAC7B,GAAKgkB,EAAOthB,IAAON,EAAOpC,WAAW0C,IAAON,EAAOpC,WAAW8mB,KAAwC,IAAjC1kB,EAAOpC,WAAW8mB,IAAI32B,OAA3F,CACA,IAGIgE,EAHEyzB,EAAexlB,EAAOqlB,SAAWrlB,EAAO4hB,OAAOyD,QAAQC,QAAUtlB,EAAOqlB,QAAQ1lB,OAAO5R,OAASiS,EAAOL,OAAO5R,OAC9G22B,EAAM1kB,EAAOpC,WAAW8mB,IAGxBwhB,EAAQlmC,EAAO4hB,OAAOjjB,KAAOmB,KAAKqP,MAAMqW,EAAsC,EAAtBxlB,EAAOsuB,cAAqBtuB,EAAO4hB,OAAO2F,gBAAkBvnB,EAAOylB,SAAS13B,OAc1I,GAbIiS,EAAO4hB,OAAOjjB,OAChB5M,EAAU+N,KAAKqP,MAAMnP,EAAOJ,YAAcI,EAAOsuB,cAAgBtuB,EAAO4hB,OAAO2F,iBACjE/B,EAAe,EAA2B,EAAtBxlB,EAAOsuB,eACvCv8B,GAAYyzB,EAAsC,EAAtBxlB,EAAOsuB,cAEjCv8B,EAAUm0C,EAAQ,IAAGn0C,GAAWm0C,GAChCn0C,EAAU,GAAsC,YAAjCiO,EAAO4hB,OAAOukB,iBAA8Bp0C,EAAUm0C,EAAQn0C,IAEjFA,EADqC,qBAArBiO,EAAOgpB,UACbhpB,EAAOgpB,UAEPhpB,EAAOJ,aAAe,EAGd,YAAhBgiB,EAAOr3B,MAAsByV,EAAOpC,WAAWwoC,SAAWpmC,EAAOpC,WAAWwoC,QAAQr4C,OAAS,EAAG,CAClG,IACIs4C,EACAC,EACAC,EAHEH,EAAUpmC,EAAOpC,WAAWwoC,QAoBlC,GAhBIxkB,EAAO4kB,iBACTxmC,EAAOpC,WAAW6oC,WAAaL,EAAQnnB,GAAG,GAAGjf,EAAO6kB,eAAiB,aAAe,gBAAe,GACnGH,EAAIlG,IAAIxe,EAAO6kB,eAAiB,QAAU,SAA1C,UAAuD7kB,EAAOpC,WAAW6oC,YAAc7kB,EAAO8kB,mBAAqB,GAAnH,OACI9kB,EAAO8kB,mBAAqB,QAA8BvwC,IAAzB6J,EAAOisB,gBAC1CjsB,EAAOpC,WAAW+oC,oBAAuB50C,EAAUiO,EAAOisB,cACtDjsB,EAAOpC,WAAW+oC,mBAAsB/kB,EAAO8kB,mBAAqB,EACtE1mC,EAAOpC,WAAW+oC,mBAAqB/kB,EAAO8kB,mBAAqB,EAC1D1mC,EAAOpC,WAAW+oC,mBAAqB,IAChD3mC,EAAOpC,WAAW+oC,mBAAqB,IAG3CN,EAAat0C,EAAUiO,EAAOpC,WAAW+oC,mBAEzCJ,IADAD,EAAYD,GAAcvmC,KAAKgE,IAAIsiC,EAAQr4C,OAAQ6zB,EAAO8kB,oBAAsB,IACxDL,GAAc,GAExCD,EAAQtwB,YAAR,UAAuB8L,EAAOglB,kBAA9B,YAAmDhlB,EAAOglB,kBAA1D,iBAAoFhlB,EAAOglB,kBAA3F,sBAA0HhlB,EAAOglB,kBAAjI,iBAA2JhlB,EAAOglB,kBAAlK,sBAAiMhlB,EAAOglB,kBAAxM,UACIliB,EAAI32B,OAAS,EACfq4C,EAAQ1nB,MAAK,SAAC7e,EAAOgnC,GACnB,IAAMC,EAAUxsB,EAAEusB,GACZE,EAAcD,EAAQjnC,QACxBknC,IAAgBh1C,GAClB+0C,EAAQlwB,SAASgL,EAAOglB,mBAEtBhlB,EAAO4kB,iBACLO,GAAeV,GAAcU,GAAeT,GAC9CQ,EAAQlwB,SAAR,UAAoBgL,EAAOglB,kBAA3B,UAEEG,IAAgBV,GAClBS,EACG/5B,OACA6J,SAFH,UAEegL,EAAOglB,kBAFtB,UAGG75B,OACA6J,SAJH,UAIegL,EAAOglB,kBAJtB,eAMEG,IAAgBT,GAClBQ,EACG95B,OACA4J,SAFH,UAEegL,EAAOglB,kBAFtB,UAGG55B,OACA4J,SAJH,UAIegL,EAAOglB,kBAJtB,uBAQD,CACL,IAAME,EAAUV,EAAQnnB,GAAGltB,GACrBg1C,EAAcD,EAAQjnC,QAE5B,GADAinC,EAAQlwB,SAASgL,EAAOglB,mBACpBhlB,EAAO4kB,eAAgB,CAGzB,IAFA,IAAMQ,EAAwBZ,EAAQnnB,GAAGonB,GACnCY,EAAuBb,EAAQnnB,GAAGqnB,GAC/B1rC,EAAIyrC,EAAYzrC,GAAK0rC,EAAW1rC,GAAK,EAC5CwrC,EAAQnnB,GAAGrkB,GAAGgc,SAAd,UAA0BgL,EAAOglB,kBAAjC,UAEF,GAAI5mC,EAAO4hB,OAAOjjB,KAChB,GAAIooC,GAAeX,EAAQr4C,OAAS6zB,EAAO8kB,mBAAoB,CAC7D,IAAK,IAAI9rC,EAAIgnB,EAAO8kB,mBAAoB9rC,GAAK,EAAGA,GAAK,EACnDwrC,EAAQnnB,GAAGmnB,EAAQr4C,OAAS6M,GAAGgc,SAA/B,UAA2CgL,EAAOglB,kBAAlD,UAEFR,EAAQnnB,GAAGmnB,EAAQr4C,OAAS6zB,EAAO8kB,mBAAqB,GAAG9vB,SAA3D,UAAuEgL,EAAOglB,kBAA9E,eAEAI,EACGj6B,OACA6J,SAFH,UAEegL,EAAOglB,kBAFtB,UAGG75B,OACA6J,SAJH,UAIegL,EAAOglB,kBAJtB,eAKAK,EACGj6B,OACA4J,SAFH,UAEegL,EAAOglB,kBAFtB,UAGG55B,OACA4J,SAJH,UAIegL,EAAOglB,kBAJtB,oBAOFI,EACGj6B,OACA6J,SAFH,UAEegL,EAAOglB,kBAFtB,UAGG75B,OACA6J,SAJH,UAIegL,EAAOglB,kBAJtB,eAKAK,EACGj6B,OACA4J,SAFH,UAEegL,EAAOglB,kBAFtB,UAGG55B,OACA4J,SAJH,UAIegL,EAAOglB,kBAJtB,gBAQN,GAAIhlB,EAAO4kB,eAAgB,CACzB,IAAMU,EAAuBpnC,KAAKgE,IAAIsiC,EAAQr4C,OAAQ6zB,EAAO8kB,mBAAqB,GAC5ES,GAAmBnnC,EAAOpC,WAAW6oC,WAAaS,EAAyBlnC,EAAOpC,WAAW6oC,YAAe,EAAMF,EAAWvmC,EAAOpC,WAAW6oC,WAC/IxG,EAAa1hC,EAAM,QAAU,OACnC6nC,EAAQ5nB,IAAIxe,EAAO6kB,eAAiBob,EAAa,MAAjD,UAA2DkH,EAA3D,QAOJ,GAJoB,aAAhBvlB,EAAOr3B,OACTm6B,EAAIxE,KAAJ,WAAa0B,EAAOwlB,eAAgBjvC,KAAKypB,EAAOylB,sBAAsBt1C,EAAU,IAChF2yB,EAAIxE,KAAJ,WAAa0B,EAAO0lB,aAAcnvC,KAAKypB,EAAO2lB,oBAAoBrB,KAEhD,gBAAhBtkB,EAAOr3B,KAAwB,CACjC,IAAIi9C,EAEFA,EADE5lB,EAAO6lB,oBACcznC,EAAO6kB,eAAiB,WAAa,aAErC7kB,EAAO6kB,eAAiB,aAAe,WAEhE,IAAM6iB,GAAS31C,EAAU,GAAKm0C,EAC1ByB,EAAS,EACTC,EAAS,EACgB,eAAzBJ,EACFG,EAASD,EAETE,EAASF,EAEXhjB,EAAIxE,KAAJ,WAAa0B,EAAOimB,uBAAwB98B,UAA5C,oCAAmF48B,EAAnF,oBAAqGC,EAArG,MAAgHhsB,WAAW5b,EAAO4hB,OAAO4H,OAEvH,WAAhB5H,EAAOr3B,MAAqBq3B,EAAOkmB,cACrCpjB,EAAI1uB,KAAK4rB,EAAOkmB,aAAa9nC,EAAQjO,EAAU,EAAGm0C,IAClDlmC,EAAOipB,KAAK,mBAAoBjpB,EAAQ0kB,EAAI,KAE5C1kB,EAAOipB,KAAK,mBAAoBjpB,EAAQ0kB,EAAI,IAE9CA,EAAI1kB,EAAO4hB,OAAOsH,eAAiBlpB,EAAOowB,SAAW,WAAa,eAAexO,EAAOkkB,aAE1Fn7B,OAvJiB,WAyJf,IAAM3K,EAAS3D,KACTulB,EAAS5hB,EAAO4hB,OAAOhkB,WAC7B,GAAKgkB,EAAOthB,IAAON,EAAOpC,WAAW0C,IAAON,EAAOpC,WAAW8mB,KAAwC,IAAjC1kB,EAAOpC,WAAW8mB,IAAI32B,OAA3F,CACA,IAAMy3B,EAAexlB,EAAOqlB,SAAWrlB,EAAO4hB,OAAOyD,QAAQC,QAAUtlB,EAAOqlB,QAAQ1lB,OAAO5R,OAASiS,EAAOL,OAAO5R,OAE9G22B,EAAM1kB,EAAOpC,WAAW8mB,IAC1BqjB,EAAiB,GACrB,GAAoB,YAAhBnmB,EAAOr3B,KAAoB,CAE7B,IADA,IAAMy9C,EAAkBhoC,EAAO4hB,OAAOjjB,KAAOmB,KAAKqP,MAAMqW,EAAsC,EAAtBxlB,EAAOsuB,cAAqBtuB,EAAO4hB,OAAO2F,gBAAkBvnB,EAAOylB,SAAS13B,OAC3I6M,EAAI,EAAGA,EAAIotC,EAAiBptC,GAAK,EACpCgnB,EAAOqmB,aACTF,GAAkBnmB,EAAOqmB,aAAarsC,KAAKoE,EAAQpF,EAAGgnB,EAAOsmB,aAE7DH,GAAkB,IAAJ,OAAQnmB,EAAOumB,cAAf,mBAAuCvmB,EAAOsmB,YAA9C,eAAgEtmB,EAAOumB,cAAvE,KAGlBzjB,EAAI1uB,KAAK+xC,GACT/nC,EAAOpC,WAAWwoC,QAAU1hB,EAAIxE,KAAJ,WAAa0B,EAAOsmB,cAE9B,aAAhBtmB,EAAOr3B,OAEPw9C,EADEnmB,EAAOwmB,eACQxmB,EAAOwmB,eAAexsC,KAAKoE,EAAQ4hB,EAAOwlB,aAAcxlB,EAAO0lB,YAE/D,uBAAgB1lB,EAAOwlB,aAAvB,aACf,MADe,uBAECxlB,EAAO0lB,WAFR,aAInB5iB,EAAI1uB,KAAK+xC,IAES,gBAAhBnmB,EAAOr3B,OAEPw9C,EADEnmB,EAAOymB,kBACQzmB,EAAOymB,kBAAkBzsC,KAAKoE,EAAQ4hB,EAAOimB,sBAE7C,gBAAH,OAAmBjmB,EAAOimB,qBAA1B,aAEhBnjB,EAAI1uB,KAAK+xC,IAES,WAAhBnmB,EAAOr3B,MACTyV,EAAOipB,KAAK,mBAAoBjpB,EAAOpC,WAAW8mB,IAAI,MAG1DuU,KAlMiB,WAmMf,IAAMj5B,EAAS3D,KACTulB,EAAS5hB,EAAO4hB,OAAOhkB,WAC7B,GAAKgkB,EAAOthB,GAAZ,CAEA,IAAIokB,EAAMpK,EAAEsH,EAAOthB,IACA,IAAfokB,EAAI32B,SAGNiS,EAAO4hB,OAAOuX,mBACU,kBAAdvX,EAAOthB,IACdokB,EAAI32B,OAAS,IAEhB22B,EAAM1kB,EAAO0kB,IAAIxE,KAAK0B,EAAOthB,KAGX,YAAhBshB,EAAOr3B,MAAsBq3B,EAAO0mB,WACtC5jB,EAAI9N,SAASgL,EAAO2mB,gBAGtB7jB,EAAI9N,SAASgL,EAAO4mB,cAAgB5mB,EAAOr3B,MAEvB,YAAhBq3B,EAAOr3B,MAAsBq3B,EAAO4kB,iBACtC9hB,EAAI9N,SAAJ,UAAgBgL,EAAO4mB,eAAvB,OAAuC5mB,EAAOr3B,KAA9C,aACAyV,EAAOpC,WAAW+oC,mBAAqB,EACnC/kB,EAAO8kB,mBAAqB,IAC9B9kB,EAAO8kB,mBAAqB,IAGZ,gBAAhB9kB,EAAOr3B,MAA0Bq3B,EAAO6lB,qBAC1C/iB,EAAI9N,SAASgL,EAAO6mB,0BAGlB7mB,EAAO0mB,WACT5jB,EAAI1I,GAAG,QAAP,WAAoB4F,EAAOsmB,cAAe,SAAiBpzC,GACzDA,EAAE2E,iBACF,IAAIoG,EAAQya,EAAEje,MAAMwD,QAAUG,EAAO4hB,OAAO2F,eACxCvnB,EAAO4hB,OAAOjjB,OAAMkB,GAASG,EAAOsuB,cACxCtuB,EAAOR,QAAQK,MAInB2gB,EAAMzI,OAAO/X,EAAOpC,WAAY,CAC9B8mB,IAAAA,EACApkB,GAAIokB,EAAI,QAGZtlB,QAjPiB,WAkPf,IAAMY,EAAS3D,KACTulB,EAAS5hB,EAAO4hB,OAAOhkB,WAC7B,GAAKgkB,EAAOthB,IAAON,EAAOpC,WAAW0C,IAAON,EAAOpC,WAAW8mB,KAAwC,IAAjC1kB,EAAOpC,WAAW8mB,IAAI32B,OAA3F,CACA,IAAM22B,EAAM1kB,EAAOpC,WAAW8mB,IAE9BA,EAAI5O,YAAY8L,EAAO8mB,aACvBhkB,EAAI5O,YAAY8L,EAAO4mB,cAAgB5mB,EAAOr3B,MAC1CyV,EAAOpC,WAAWwoC,SAASpmC,EAAOpC,WAAWwoC,QAAQtwB,YAAY8L,EAAOglB,mBACxEhlB,EAAO0mB,WACT5jB,EAAI1H,IAAI,QAAR,WAAqB4E,EAAOsmB,iBCzP5BS,GAAY,CAChB5b,aADgB,WAEd,IAAM/sB,EAAS3D,KACf,GAAK2D,EAAO4hB,OAAOpjB,UAAU8B,IAAON,EAAOxB,UAAU8B,GAArD,CACA,IAAQ9B,EAA2CwB,EAA3CxB,UAAyBD,EAAkByB,EAAhCklB,aAAmBwF,EAAa1qB,EAAb0qB,SAEpCke,EACEpqC,EADFoqC,SAAUC,EACRrqC,EADQqqC,UAAWC,EACnBtqC,EADmBsqC,QAASpkB,EAC5BlmB,EAD4BkmB,IAE1B9C,EAAS5hB,EAAO4hB,OAAOpjB,UAEzBuqC,EAAUH,EACVI,GAAUH,EAAYD,GAAYle,EAClCnsB,GACFyqC,GAAUA,GACG,GACXD,EAAUH,EAAWI,EACrBA,EAAS,IACCA,EAASJ,EAAWC,IAC9BE,EAAUF,EAAYG,GAEfA,EAAS,GAClBD,EAAUH,EAAWI,EACrBA,EAAS,GACAA,EAASJ,EAAWC,IAC7BE,EAAUF,EAAYG,GAEpBhpC,EAAO6kB,gBACTikB,EAAQ/9B,UAAR,sBAAiCi+B,EAAjC,cACAF,EAAQ,GAAGnvC,MAAMtJ,MAAjB,UAA4B04C,EAA5B,QAEAD,EAAQ/9B,UAAR,2BAAsCi+B,EAAtC,WACAF,EAAQ,GAAGnvC,MAAMrJ,OAAjB,UAA6By4C,EAA7B,OAEEnnB,EAAOqnB,OACTz0C,aAAawL,EAAOxB,UAAU6U,SAC9BqR,EAAI,GAAG/qB,MAAMuvC,QAAU,EACvBlpC,EAAOxB,UAAU6U,QAAUvhB,YAAW,WACpC4yB,EAAI,GAAG/qB,MAAMuvC,QAAU,EACvBxkB,EAAI9I,WAAW,OACd,QAGP+N,cA1CgB,SA0CF9N,GACZ,IAAM7b,EAAS3D,KACV2D,EAAO4hB,OAAOpjB,UAAU8B,IAAON,EAAOxB,UAAU8B,IACrDN,EAAOxB,UAAUsqC,QAAQltB,WAAWC,IAEtC4I,WA/CgB,WAgDd,IAAMzkB,EAAS3D,KACf,GAAK2D,EAAO4hB,OAAOpjB,UAAU8B,IAAON,EAAOxB,UAAU8B,GAArD,CAEA,IAAQ9B,EAAcwB,EAAdxB,UACAsqC,EAAiBtqC,EAAjBsqC,QAASpkB,EAAQlmB,EAARkmB,IAEjBokB,EAAQ,GAAGnvC,MAAMtJ,MAAQ,GACzBy4C,EAAQ,GAAGnvC,MAAMrJ,OAAS,GAC1B,IAIIs4C,EAJEC,EAAY7oC,EAAO6kB,eAAiBH,EAAI,GAAGzG,YAAcyG,EAAI,GAAGvG,aAEhEgrB,EAAUnpC,EAAO8kB,KAAO9kB,EAAO0mB,YAC/B0iB,EAAcD,GAAWN,EAAY7oC,EAAO8kB,MAGhD8jB,EADuC,SAArC5oC,EAAO4hB,OAAOpjB,UAAUoqC,SACfC,EAAYM,EAEZ//B,SAASpJ,EAAO4hB,OAAOpjB,UAAUoqC,SAAU,IAGpD5oC,EAAO6kB,eACTikB,EAAQ,GAAGnvC,MAAMtJ,MAAjB,UAA4Bu4C,EAA5B,MAEAE,EAAQ,GAAGnvC,MAAMrJ,OAAjB,UAA6Bs4C,EAA7B,MAIAlkB,EAAI,GAAG/qB,MAAM0vC,QADXF,GAAW,EACU,OAEA,GAErBnpC,EAAO4hB,OAAOpjB,UAAUyqC,OAC1BvkB,EAAI,GAAG/qB,MAAMuvC,QAAU,GAEzB1oB,EAAMzI,OAAOvZ,EAAW,CACtBqqC,UAAAA,EACAM,QAAAA,EACAC,YAAAA,EACAR,SAAAA,IAEFpqC,EAAUkmB,IAAI1kB,EAAO4hB,OAAOsH,eAAiBlpB,EAAOowB,SAAW,WAAa,eAAepwB,EAAO4hB,OAAOpjB,UAAUsnC,aAErHwD,mBAzFgB,SAyFGx0C,GAEjB,OADeuH,KACJwoB,eACW,eAAX/vB,EAAEvK,MAAoC,cAAXuK,EAAEvK,KAAwBuK,EAAE2+B,cAAc,GAAG/sB,QAAU5R,EAAE4R,QAE3E,eAAX5R,EAAEvK,MAAoC,cAAXuK,EAAEvK,KAAwBuK,EAAE2+B,cAAc,GAAG9sB,QAAU7R,EAAE6R,SAE/F4iC,gBAhGgB,SAgGAz0C,GACd,IASI00C,EATExpC,EAAS3D,KACPmC,EAAiCwB,EAAjCxB,UAAyBD,EAAQyB,EAAtBklB,aAEjBR,EAIElmB,EAJFkmB,IACAkkB,EAGEpqC,EAHFoqC,SACAC,EAEErqC,EAFFqqC,UACAY,EACEjrC,EADFirC,aAIFD,GAAkBhrC,EAAU8qC,mBAAmBx0C,GAAM4vB,EAAItZ,SAASpL,EAAO6kB,eAAiB,OAAS,QAC7E,OAAjB4kB,EAAwBA,EAAeb,EAAW,KAAOC,EAAYD,GAC1EY,EAAgB1pC,KAAKC,IAAID,KAAKgE,IAAI0lC,EAAe,GAAI,GACjDjrC,IACFirC,EAAgB,EAAIA,GAGtB,IAAMl+B,EAAWtL,EAAOqqB,gBAAmBrqB,EAAO8qB,eAAiB9qB,EAAOqqB,gBAAkBmf,EAE5FxpC,EAAO2qB,eAAerf,GACtBtL,EAAO+sB,aAAazhB,GACpBtL,EAAO+rB,oBACP/rB,EAAOmrB,uBAETue,YAzHgB,SAyHJ50C,GACV,IAAMkL,EAAS3D,KACTulB,EAAS5hB,EAAO4hB,OAAOpjB,UACrBA,EAA0BwB,EAA1BxB,UAAWwmB,EAAehlB,EAAfglB,WACXN,EAAiBlmB,EAAjBkmB,IAAKokB,EAAYtqC,EAAZsqC,QACb9oC,EAAOxB,UAAU00B,WAAY,EAC7BlzB,EAAOxB,UAAUirC,aAAgB30C,EAAEjG,SAAWi6C,EAAQ,IAAMh0C,EAAEjG,SAAWi6C,EACrEtqC,EAAU8qC,mBAAmBx0C,GAAKA,EAAEjG,OAAOoV,wBAAwBjE,EAAO6kB,eAAiB,OAAS,OAAS,KACjH/vB,EAAE2E,iBACF3E,EAAE2gC,kBAEFzQ,EAAWpJ,WAAW,KACtBktB,EAAQltB,WAAW,KACnBpd,EAAU+qC,gBAAgBz0C,GAE1BN,aAAawL,EAAOxB,UAAUmrC,aAE9BjlB,EAAI9I,WAAW,GACXgG,EAAOqnB,MACTvkB,EAAIlG,IAAI,UAAW,GAEjBxe,EAAO4hB,OAAOkE,SAChB9lB,EAAOglB,WAAWxG,IAAI,mBAAoB,QAE5Cxe,EAAOipB,KAAK,qBAAsBn0B,IAEpC80C,WAnJgB,SAmJL90C,GACT,IAAMkL,EAAS3D,KACPmC,EAA0BwB,EAA1BxB,UAAWwmB,EAAehlB,EAAfglB,WACXN,EAAiBlmB,EAAjBkmB,IAAKokB,EAAYtqC,EAAZsqC,QAER9oC,EAAOxB,UAAU00B,YAClBp+B,EAAE2E,eAAgB3E,EAAE2E,iBACnB3E,EAAE6tC,aAAc,EACrBnkC,EAAU+qC,gBAAgBz0C,GAC1BkwB,EAAWpJ,WAAW,GACtB8I,EAAI9I,WAAW,GACfktB,EAAQltB,WAAW,GACnB5b,EAAOipB,KAAK,oBAAqBn0B,KAEnC+0C,UAjKgB,SAiKN/0C,GACR,IAAMkL,EAAS3D,KAETulB,EAAS5hB,EAAO4hB,OAAOpjB,UACrBA,EAA0BwB,EAA1BxB,UAAWwmB,EAAehlB,EAAfglB,WACXN,EAAQlmB,EAARkmB,IAEH1kB,EAAOxB,UAAU00B,YACtBlzB,EAAOxB,UAAU00B,WAAY,EACzBlzB,EAAO4hB,OAAOkE,UAChB9lB,EAAOglB,WAAWxG,IAAI,mBAAoB,IAC1CwG,EAAWpJ,WAAW,KAEpBgG,EAAOqnB,OACTz0C,aAAawL,EAAOxB,UAAUmrC,aAC9B3pC,EAAOxB,UAAUmrC,YAAcnpB,EAAMG,UAAS,WAC5C+D,EAAIlG,IAAI,UAAW,GACnBkG,EAAI9I,WAAW,OACd,MAEL5b,EAAOipB,KAAK,mBAAoBn0B,GAC5B8sB,EAAOkoB,eACT9pC,EAAOkvB,mBAGX6a,gBA1LgB,WA2Ld,IAAM/pC,EAAS3D,KACf,GAAK2D,EAAO4hB,OAAOpjB,UAAU8B,GAA7B,CACA,IACE9B,EACEwB,EADFxB,UAAW0+B,EACTl9B,EADSk9B,iBAAkBC,EAC3Bn9B,EAD2Bm9B,mBAAoBvb,EAC/C5hB,EAD+C4hB,OAG7C/yB,EADM2P,EAAUkmB,IACH,GACbslB,KAAiBvnB,EAAQI,kBAAmBjB,EAAO0X,mBAAmB,CAAExzB,SAAS,EAAOsW,SAAS,GACjGyG,KAAkBJ,EAAQI,kBAAmBjB,EAAO0X,mBAAmB,CAAExzB,SAAS,EAAMsW,SAAS,GAClGqG,EAAQC,OAKX7zB,EAAO+W,iBAAiBs3B,EAAiBpD,MAAO95B,EAAOxB,UAAUkrC,YAAaM,GAC9En7C,EAAO+W,iBAAiBs3B,EAAiBnD,KAAM/5B,EAAOxB,UAAUorC,WAAYI,GAC5En7C,EAAO+W,iBAAiBs3B,EAAiBlD,IAAKh6B,EAAOxB,UAAUqrC,UAAWhnB,KAN1Eh0B,EAAO+W,iBAAiBu3B,EAAmBrD,MAAO95B,EAAOxB,UAAUkrC,YAAaM,GAChF56C,EAAAA,iBAA0B+tC,EAAmBpD,KAAM/5B,EAAOxB,UAAUorC,WAAYI,GAChF56C,EAAAA,iBAA0B+tC,EAAmBnD,IAAKh6B,EAAOxB,UAAUqrC,UAAWhnB,MAOlFonB,iBA9MgB,WA+Md,IAAMjqC,EAAS3D,KACf,GAAK2D,EAAO4hB,OAAOpjB,UAAU8B,GAA7B,CACA,IACE9B,EACEwB,EADFxB,UAAW0+B,EACTl9B,EADSk9B,iBAAkBC,EAC3Bn9B,EAD2Bm9B,mBAAoBvb,EAC/C5hB,EAD+C4hB,OAG7C/yB,EADM2P,EAAUkmB,IACH,GACbslB,KAAiBvnB,EAAQI,kBAAmBjB,EAAO0X,mBAAmB,CAAExzB,SAAS,EAAOsW,SAAS,GACjGyG,KAAkBJ,EAAQI,kBAAmBjB,EAAO0X,mBAAmB,CAAExzB,SAAS,EAAMsW,SAAS,GAClGqG,EAAQC,OAKX7zB,EAAOga,oBAAoBq0B,EAAiBpD,MAAO95B,EAAOxB,UAAUkrC,YAAaM,GACjFn7C,EAAOga,oBAAoBq0B,EAAiBnD,KAAM/5B,EAAOxB,UAAUorC,WAAYI,GAC/En7C,EAAOga,oBAAoBq0B,EAAiBlD,IAAKh6B,EAAOxB,UAAUqrC,UAAWhnB,KAN7Eh0B,EAAOga,oBAAoBs0B,EAAmBrD,MAAO95B,EAAOxB,UAAUkrC,YAAaM,GACnF56C,EAAAA,oBAA6B+tC,EAAmBpD,KAAM/5B,EAAOxB,UAAUorC,WAAYI,GACnF56C,EAAAA,oBAA6B+tC,EAAmBnD,IAAKh6B,EAAOxB,UAAUqrC,UAAWhnB,MAOrFoW,KAlOgB,WAmOd,IAAMj5B,EAAS3D,KACf,GAAK2D,EAAO4hB,OAAOpjB,UAAU8B,GAA7B,CACA,IAAQ9B,EAA8BwB,EAA9BxB,UAAgB0rC,EAAclqC,EAAnB0kB,IACb9C,EAAS5hB,EAAO4hB,OAAOpjB,UAEzBkmB,EAAMpK,EAAEsH,EAAOthB,IACfN,EAAO4hB,OAAOuX,mBAA0C,kBAAdvX,EAAOthB,IAAmBokB,EAAI32B,OAAS,GAA0C,IAArCm8C,EAAUhqB,KAAK0B,EAAOthB,IAAIvS,SAClH22B,EAAMwlB,EAAUhqB,KAAK0B,EAAOthB,KAG9B,IAAIwoC,EAAUpkB,EAAIxE,KAAJ,WAAalgB,EAAO4hB,OAAOpjB,UAAU2rC,YAC5B,IAAnBrB,EAAQ/6C,SACV+6C,EAAUxuB,EAAE,eAAD,OAAgBta,EAAO4hB,OAAOpjB,UAAU2rC,UAAxC,aACXzlB,EAAIvF,OAAO2pB,IAGbtoB,EAAMzI,OAAOvZ,EAAW,CACtBkmB,IAAAA,EACApkB,GAAIokB,EAAI,GACRokB,QAAAA,EACAsB,OAAQtB,EAAQ,KAGdlnB,EAAO7V,WACTvN,EAAUurC,oBAGd3qC,QA9PgB,WA+PC/C,KACRmC,UAAUyrC,qBClQfI,GAAW,CACfC,aADe,SACFhqC,EAAIoqB,GACf,IACQnsB,EADOlC,KACPkC,IAEFmmB,EAAMpK,EAAEha,GACRokC,EAAYnmC,GAAO,EAAI,EAEvBhC,EAAImoB,EAAIxJ,KAAK,yBAA2B,IAC1C3W,EAAImgB,EAAIxJ,KAAK,0BACb1W,EAAIkgB,EAAIxJ,KAAK,0BACXwsB,EAAQhjB,EAAIxJ,KAAK,8BACjBguB,EAAUxkB,EAAIxJ,KAAK,gCAwBzB,GAtBI3W,GAAKC,GACPD,EAAIA,GAAK,IACTC,EAAIA,GAAK,KAdInI,KAeGwoB,gBAChBtgB,EAAIhI,EACJiI,EAAI,MAEJA,EAAIjI,EACJgI,EAAI,KAIJA,EADGA,EAAG8M,QAAQ,MAAQ,EAClB,GAAH,OAAMjI,SAAS7E,EAAG,IAAMmmB,EAAWga,EAAnC,KAEG,GAAH,OAAMngC,EAAImmB,EAAWga,EAArB,MAGDlgC,EADGA,EAAG6M,QAAQ,MAAQ,EAClB,GAAH,OAAMjI,SAAS5E,EAAG,IAAMkmB,EAAxB,KAEG,GAAH,OAAMlmB,EAAIkmB,EAAV,MAGoB,qBAAZwe,GAAuC,OAAZA,EAAkB,CACtD,IAAMqB,EAAiBrB,GAAYA,EAAU,IAAM,EAAIppC,KAAKuI,IAAIqiB,IAChEhG,EAAI,GAAG/qB,MAAMuvC,QAAUqB,EAEzB,GAAqB,qBAAV7C,GAAmC,OAAVA,EAClChjB,EAAI3Z,UAAJ,sBAA6BxG,EAA7B,aAAmCC,EAAnC,eACK,CACL,IAAMgmC,EAAe9C,GAAUA,EAAQ,IAAM,EAAI5nC,KAAKuI,IAAIqiB,IAC1DhG,EAAI3Z,UAAJ,sBAA6BxG,EAA7B,aAAmCC,EAAnC,wBAAoDgmC,EAApD,QAGJzd,aA/Ce,WAgDb,IAAM/sB,EAAS3D,KAEbqoB,EACE1kB,EADF0kB,IAAK/kB,EACHK,EADGL,OAAQ+qB,EACX1qB,EADW0qB,SAAUjF,EACrBzlB,EADqBylB,SAEzBf,EAAIvvB,SAAS,4IACVupB,MAAK,SAAC7e,EAAOS,GACZN,EAAOnC,SAASysC,aAAahqC,EAAIoqB,MAErC/qB,EAAO+e,MAAK,SAACmH,EAAY+X,GACvB,IAAIxT,EAAgBwT,EAAQlT,SACxB1qB,EAAO4hB,OAAO2F,eAAiB,GAAqC,SAAhCvnB,EAAO4hB,OAAOkF,gBACpDsD,GAAiBtqB,KAAKqP,KAAK0W,EAAa,GAAM6E,GAAYjF,EAAS13B,OAAS,IAE9Eq8B,EAAgBtqB,KAAKgE,IAAIhE,KAAKC,IAAIqqB,GAAgB,GAAI,GACtD9P,EAAEsjB,GAAS1d,KAAK,4IACbxB,MAAK,SAAC7e,EAAOS,GACZN,EAAOnC,SAASysC,aAAahqC,EAAI8pB,UAIzCT,cApEe,WAoE6B,IAA9B9N,EAA8B,uDAAnBxf,KAAKulB,OAAO4H,MAC7BxpB,EAAS3D,KACPqoB,EAAQ1kB,EAAR0kB,IACRA,EAAIxE,KAAK,4IACNxB,MAAK,SAAC7e,EAAO/B,GACZ,IAAM2sC,EAAcnwB,EAAExc,GAClB4sC,EAAmBthC,SAASqhC,EAAYvvB,KAAK,iCAAkC,KAAOW,EACzE,IAAbA,IAAgB6uB,EAAmB,GACvCD,EAAY7uB,WAAW8uB,QC1EzBC,GAAO,CAEXC,0BAFW,SAEe91C,GACxB,GAAIA,EAAE2+B,cAAc1lC,OAAS,EAAG,OAAO,EACvC,IAAM88C,EAAK/1C,EAAE2+B,cAAc,GAAGC,MACxBoX,EAAKh2C,EAAE2+B,cAAc,GAAGG,MACxBmX,EAAKj2C,EAAE2+B,cAAc,GAAGC,MACxBsX,EAAKl2C,EAAE2+B,cAAc,GAAGG,MAE9B,OADiB9zB,KAAKq1B,KAAK,SAAE4V,EAAKF,EAAO,GAAd,SAAqBG,EAAKF,EAAO,KAI9DG,eAZW,SAYIn2C,GACb,IAAMkL,EAAS3D,KACTulB,EAAS5hB,EAAO4hB,OAAOspB,KACvBA,EAAOlrC,EAAOkrC,KACZC,EAAYD,EAAZC,QAGR,GAFAD,EAAKE,oBAAqB,EAC1BF,EAAKG,kBAAmB,GACnB5oB,EAAQO,SAAU,CACrB,GAAe,eAAXluB,EAAEvK,MAAqC,eAAXuK,EAAEvK,MAAyBuK,EAAE2+B,cAAc1lC,OAAS,EAClF,OAEFm9C,EAAKE,oBAAqB,EAC1BD,EAAQG,WAAaX,GAAKC,0BAA0B91C,GAEjDq2C,EAAQvK,UAAauK,EAAQvK,SAAS7yC,SACzCo9C,EAAQvK,SAAWtmB,EAAExlB,EAAEjG,QAAQoxB,QAAZ,WAAwBjgB,EAAO4hB,OAAOljB,aACzB,IAA5BysC,EAAQvK,SAAS7yC,SAAco9C,EAAQvK,SAAW5gC,EAAOL,OAAOsf,GAAGjf,EAAOJ,cAC9EurC,EAAQI,SAAWJ,EAAQvK,SAAS1gB,KAAK,kDACzCirB,EAAQK,aAAeL,EAAQI,SAASxrB,OAAjB,WAA4B6B,EAAOpkB,iBAC1D2tC,EAAQM,SAAWN,EAAQK,aAAatwB,KAAK,qBAAuB0G,EAAO6pB,SACvC,IAAhCN,EAAQK,aAAaz9C,SAKvBo9C,EAAQI,UACVJ,EAAQI,SAAS3vB,WAAW,GAE9B5b,EAAOkrC,KAAKQ,WAAY,GAPpBP,EAAQI,cAAWp1C,GASzBw1C,gBA1CW,SA0CK72C,GACd,IACM8sB,EADSvlB,KACOulB,OAAOspB,KACvBA,EAFS7uC,KAEK6uC,KACZC,EAAYD,EAAZC,QACR,IAAK1oB,EAAQO,SAAU,CACrB,GAAe,cAAXluB,EAAEvK,MAAoC,cAAXuK,EAAEvK,MAAwBuK,EAAE2+B,cAAc1lC,OAAS,EAChF,OAEFm9C,EAAKG,kBAAmB,EACxBF,EAAQS,UAAYjB,GAAKC,0BAA0B91C,GAEhDq2C,EAAQI,UAAwC,IAA5BJ,EAAQI,SAASx9C,SAExCm9C,EAAKxD,MADHjlB,EAAQO,SACGluB,EAAE4yC,MAAQwD,EAAKV,aAEdW,EAAQS,UAAYT,EAAQG,WAAcJ,EAAKV,aAE3DU,EAAKxD,MAAQyD,EAAQM,WACvBP,EAAKxD,MAASyD,EAAQM,SAAW,EAApB,SAA4BP,EAAKxD,MAAQyD,EAAQM,SAAY,EAAM,KAE9EP,EAAKxD,MAAQ9lB,EAAOmZ,WACtBmQ,EAAKxD,MAAS9lB,EAAOmZ,SAAW,EAAnB,SAA2BnZ,EAAOmZ,SAAWmQ,EAAKxD,MAAS,EAAM,KAEhFyD,EAAQI,SAASxgC,UAAjB,mCAAuDmgC,EAAKxD,MAA5D,QAEFmE,aApEW,SAoEE/2C,GACX,IAAMkL,EAAS3D,KACTulB,EAAS5hB,EAAO4hB,OAAOspB,KACvBA,EAAOlrC,EAAOkrC,KACZC,EAAYD,EAAZC,QACR,IAAK1oB,EAAQO,SAAU,CACrB,IAAKkoB,EAAKE,qBAAuBF,EAAKG,iBACpC,OAEF,GAAe,aAAXv2C,EAAEvK,MAAmC,aAAXuK,EAAEvK,MAAuBuK,EAAE4X,eAAe3e,OAAS,IAAMkjC,EAAOK,QAC5F,OAEF4Z,EAAKE,oBAAqB,EAC1BF,EAAKG,kBAAmB,EAErBF,EAAQI,UAAwC,IAA5BJ,EAAQI,SAASx9C,SAC1Cm9C,EAAKxD,MAAQ5nC,KAAKC,IAAID,KAAKgE,IAAIonC,EAAKxD,MAAOyD,EAAQM,UAAW7pB,EAAOmZ,UACrEoQ,EAAQI,SAAS3vB,WAAW5b,EAAO4hB,OAAO4H,OAAOze,UAAjD,mCAAuFmgC,EAAKxD,MAA5F,MACAwD,EAAKV,aAAeU,EAAKxD,MACzBwD,EAAKQ,WAAY,EACE,IAAfR,EAAKxD,QAAayD,EAAQvK,cAAWzqC,KAE3C+U,aA1FW,SA0FEpW,GACX,IACMo2C,EADS7uC,KACK6uC,KACZC,EAAmBD,EAAnBC,QAASvP,EAAUsP,EAAVtP,MACZuP,EAAQI,UAAwC,IAA5BJ,EAAQI,SAASx9C,SACtC6tC,EAAM1I,YACNjC,EAAOK,SAAWx8B,EAAE0oB,YAAY1oB,EAAE2E,iBACtCmiC,EAAM1I,WAAY,EAClB0I,EAAMkQ,aAAavnC,EAAe,eAAXzP,EAAEvK,KAAwBuK,EAAE2+B,cAAc,GAAGC,MAAQ5+B,EAAE4+B,MAC9EkI,EAAMkQ,aAAatnC,EAAe,eAAX1P,EAAEvK,KAAwBuK,EAAE2+B,cAAc,GAAGG,MAAQ9+B,EAAE8+B,SAEhFrsB,YArGW,SAqGCzS,GACV,IAAMkL,EAAS3D,KACT6uC,EAAOlrC,EAAOkrC,KACZC,EAA6BD,EAA7BC,QAASvP,EAAoBsP,EAApBtP,MAAO9E,EAAaoU,EAAbpU,SACxB,GAAKqU,EAAQI,UAAwC,IAA5BJ,EAAQI,SAASx9C,SAC1CiS,EAAOszB,YAAa,EACfsI,EAAM1I,WAAciY,EAAQvK,UAAjC,CAEKhF,EAAMzI,UACTyI,EAAMvrC,MAAQ86C,EAAQI,SAAS,GAAGttB,YAClC2d,EAAMtrC,OAAS66C,EAAQI,SAAS,GAAGptB,aACnCyd,EAAM/H,OAASrT,EAAMM,aAAaqqB,EAAQK,aAAa,GAAI,MAAQ,EACnE5P,EAAM9H,OAAStT,EAAMM,aAAaqqB,EAAQK,aAAa,GAAI,MAAQ,EACnEL,EAAQY,WAAaZ,EAAQvK,SAAS,GAAG3iB,YACzCktB,EAAQa,YAAcb,EAAQvK,SAAS,GAAGziB,aAC1CgtB,EAAQK,aAAa5vB,WAAW,GAC5B5b,EAAOzB,MACTq9B,EAAM/H,QAAU+H,EAAM/H,OACtB+H,EAAM9H,QAAU8H,EAAM9H,SAI1B,IAAMmY,EAAcrQ,EAAMvrC,MAAQ66C,EAAKxD,MACjCwE,EAAetQ,EAAMtrC,OAAS46C,EAAKxD,MAEzC,KAAIuE,EAAcd,EAAQY,YAAcG,EAAef,EAAQa,aAA/D,CAUA,GARApQ,EAAMuQ,KAAOrsC,KAAKgE,IAAMqnC,EAAQY,WAAa,EAAME,EAAc,EAAK,GACtErQ,EAAMwQ,MAAQxQ,EAAMuQ,KACpBvQ,EAAMyQ,KAAOvsC,KAAKgE,IAAMqnC,EAAQa,YAAc,EAAME,EAAe,EAAK,GACxEtQ,EAAM0Q,MAAQ1Q,EAAMyQ,KAEpBzQ,EAAM2Q,eAAehoC,EAAe,cAAXzP,EAAEvK,KAAuBuK,EAAE2+B,cAAc,GAAGC,MAAQ5+B,EAAE4+B,MAC/EkI,EAAM2Q,eAAe/nC,EAAe,cAAX1P,EAAEvK,KAAuBuK,EAAE2+B,cAAc,GAAGG,MAAQ9+B,EAAE8+B,OAE1EgI,EAAMzI,UAAY+X,EAAKQ,UAAW,CACrC,GACE1rC,EAAO6kB,iBAEJ/kB,KAAKoN,MAAM0uB,EAAMuQ,QAAUrsC,KAAKoN,MAAM0uB,EAAM/H,SAAW+H,EAAM2Q,eAAehoC,EAAIq3B,EAAMkQ,aAAavnC,GAChGzE,KAAKoN,MAAM0uB,EAAMwQ,QAAUtsC,KAAKoN,MAAM0uB,EAAM/H,SAAW+H,EAAM2Q,eAAehoC,EAAIq3B,EAAMkQ,aAAavnC,GAIzG,YADAq3B,EAAM1I,WAAY,GAElB,IACClzB,EAAO6kB,iBAEL/kB,KAAKoN,MAAM0uB,EAAMyQ,QAAUvsC,KAAKoN,MAAM0uB,EAAM9H,SAAW8H,EAAM2Q,eAAe/nC,EAAIo3B,EAAMkQ,aAAatnC,GAChG1E,KAAKoN,MAAM0uB,EAAM0Q,QAAUxsC,KAAKoN,MAAM0uB,EAAM9H,SAAW8H,EAAM2Q,eAAe/nC,EAAIo3B,EAAMkQ,aAAatnC,GAIzG,YADAo3B,EAAM1I,WAAY,GAIlBp+B,EAAE0oB,YACJ1oB,EAAE2E,iBAEJ3E,EAAE2gC,kBAEFmG,EAAMzI,SAAU,EAChByI,EAAMpI,SAAYoI,EAAM2Q,eAAehoC,EAAIq3B,EAAMkQ,aAAavnC,EAAKq3B,EAAM/H,OACzE+H,EAAMjI,SAAYiI,EAAM2Q,eAAe/nC,EAAIo3B,EAAMkQ,aAAatnC,EAAKo3B,EAAM9H,OAErE8H,EAAMpI,SAAWoI,EAAMuQ,OACzBvQ,EAAMpI,SAAYoI,EAAMuQ,KAAO,EAAd,SAAsBvQ,EAAMuQ,KAAOvQ,EAAMpI,SAAY,EAAM,KAE1EoI,EAAMpI,SAAWoI,EAAMwQ,OACzBxQ,EAAMpI,SAAYoI,EAAMwQ,KAAO,EAAd,SAAsBxQ,EAAMpI,SAAWoI,EAAMwQ,KAAQ,EAAM,KAG1ExQ,EAAMjI,SAAWiI,EAAMyQ,OACzBzQ,EAAMjI,SAAYiI,EAAMyQ,KAAO,EAAd,SAAsBzQ,EAAMyQ,KAAOzQ,EAAMjI,SAAY,EAAM,KAE1EiI,EAAMjI,SAAWiI,EAAM0Q,OACzB1Q,EAAMjI,SAAYiI,EAAM0Q,KAAO,EAAd,SAAsB1Q,EAAMjI,SAAWiI,EAAM0Q,KAAQ,EAAM,KAIzExV,EAAS0V,gBAAe1V,EAAS0V,cAAgB5Q,EAAM2Q,eAAehoC,GACtEuyB,EAAS2V,gBAAe3V,EAAS2V,cAAgB7Q,EAAM2Q,eAAe/nC,GACtEsyB,EAAS4V,WAAU5V,EAAS4V,SAAWxyB,KAAK2G,OACjDiW,EAASvyB,GAAKq3B,EAAM2Q,eAAehoC,EAAIuyB,EAAS0V,gBAAkBtyB,KAAK2G,MAAQiW,EAAS4V,UAAY,EACpG5V,EAAStyB,GAAKo3B,EAAM2Q,eAAe/nC,EAAIsyB,EAAS2V,gBAAkBvyB,KAAK2G,MAAQiW,EAAS4V,UAAY,EAChG5sC,KAAKuI,IAAIuzB,EAAM2Q,eAAehoC,EAAIuyB,EAAS0V,eAAiB,IAAG1V,EAASvyB,EAAI,GAC5EzE,KAAKuI,IAAIuzB,EAAM2Q,eAAe/nC,EAAIsyB,EAAS2V,eAAiB,IAAG3V,EAAStyB,EAAI,GAChFsyB,EAAS0V,cAAgB5Q,EAAM2Q,eAAehoC,EAC9CuyB,EAAS2V,cAAgB7Q,EAAM2Q,eAAe/nC,EAC9CsyB,EAAS4V,SAAWxyB,KAAK2G,MAEzBsqB,EAAQK,aAAazgC,UAArB,sBAA8C6wB,EAAMpI,SAApD,eAAmEoI,EAAMjI,SAAzE,aAEFiG,WAlMW,WAmMT,IACMsR,EADS7uC,KACK6uC,KACZC,EAA6BD,EAA7BC,QAASvP,EAAoBsP,EAApBtP,MAAO9E,EAAaoU,EAAbpU,SACxB,GAAKqU,EAAQI,UAAwC,IAA5BJ,EAAQI,SAASx9C,OAA1C,CACA,IAAK6tC,EAAM1I,YAAc0I,EAAMzI,QAG7B,OAFAyI,EAAM1I,WAAY,OAClB0I,EAAMzI,SAAU,GAGlByI,EAAM1I,WAAY,EAClB0I,EAAMzI,SAAU,EAChB,IAAIwZ,EAAoB,IACpBC,EAAoB,IAClBC,EAAoB/V,EAASvyB,EAAIooC,EACjCG,EAAelR,EAAMpI,SAAWqZ,EAChCE,EAAoBjW,EAAStyB,EAAIooC,EACjCI,EAAepR,EAAMjI,SAAWoZ,EAGnB,IAAfjW,EAASvyB,IAASooC,EAAoB7sC,KAAKuI,KAAKykC,EAAelR,EAAMpI,UAAYsD,EAASvyB,IAC3E,IAAfuyB,EAAStyB,IAASooC,EAAoB9sC,KAAKuI,KAAK2kC,EAAepR,EAAMjI,UAAYmD,EAAStyB,IAC9F,IAAMyyB,EAAmBn3B,KAAKC,IAAI4sC,EAAmBC,GAErDhR,EAAMpI,SAAWsZ,EACjBlR,EAAMjI,SAAWqZ,EAGjB,IAAMf,EAAcrQ,EAAMvrC,MAAQ66C,EAAKxD,MACjCwE,EAAetQ,EAAMtrC,OAAS46C,EAAKxD,MACzC9L,EAAMuQ,KAAOrsC,KAAKgE,IAAMqnC,EAAQY,WAAa,EAAME,EAAc,EAAK,GACtErQ,EAAMwQ,MAAQxQ,EAAMuQ,KACpBvQ,EAAMyQ,KAAOvsC,KAAKgE,IAAMqnC,EAAQa,YAAc,EAAME,EAAe,EAAK,GACxEtQ,EAAM0Q,MAAQ1Q,EAAMyQ,KACpBzQ,EAAMpI,SAAW1zB,KAAKC,IAAID,KAAKgE,IAAI83B,EAAMpI,SAAUoI,EAAMwQ,MAAOxQ,EAAMuQ,MACtEvQ,EAAMjI,SAAW7zB,KAAKC,IAAID,KAAKgE,IAAI83B,EAAMjI,SAAUiI,EAAM0Q,MAAO1Q,EAAMyQ,MAEtElB,EAAQK,aAAa5vB,WAAWqb,GAAkBlsB,UAAlD,sBAA2E6wB,EAAMpI,SAAjF,eAAgGoI,EAAMjI,SAAtG,YAEFrf,gBAzOW,WA0OT,IAAMtU,EAAS3D,KACT6uC,EAAOlrC,EAAOkrC,KACZC,EAAYD,EAAZC,QACJA,EAAQvK,UAAY5gC,EAAOisB,gBAAkBjsB,EAAOJ,cAClDurC,EAAQI,UACVJ,EAAQI,SAASxgC,UAAU,+BAEzBogC,EAAQK,cACVL,EAAQK,aAAazgC,UAAU,sBAGjCmgC,EAAKxD,MAAQ,EACbwD,EAAKV,aAAe,EAEpBW,EAAQvK,cAAWzqC,EACnBg1C,EAAQI,cAAWp1C,EACnBg1C,EAAQK,kBAAer1C,IAI3B8kB,OA9PW,SA8PJnmB,GACL,IACMo2C,EADS7uC,KACK6uC,KAEhBA,EAAKxD,OAAwB,IAAfwD,EAAKxD,MAErBwD,EAAK+B,MAGL/B,EAAKx4B,GAAG5d,IAGZ4d,GA1QW,SA0QR5d,GACD,IAmBIo4C,EACAC,EAGAlY,EACAC,EACAkY,EACAC,EACAC,EACAC,EACAtB,EACAC,EACAsB,EACAC,EACAC,EACAC,EACA5B,EACAC,EApCEhsC,EAAS3D,KAET6uC,EAAOlrC,EAAOkrC,KACdtpB,EAAS5hB,EAAO4hB,OAAOspB,KACrBC,EAAmBD,EAAnBC,QAASvP,EAAUsP,EAAVtP,OAEZuP,EAAQvK,WACP5gC,EAAO4hB,OAAOyD,SAAWrlB,EAAO4hB,OAAOyD,QAAQC,SAAWtlB,EAAOqlB,QACnE8lB,EAAQvK,SAAW5gC,EAAOglB,WAAW7vB,SAAlB,WAA+B6K,EAAO4hB,OAAO0J,mBAEhE6f,EAAQvK,SAAW5gC,EAAOL,OAAOsf,GAAGjf,EAAOJ,aAE7CurC,EAAQI,SAAWJ,EAAQvK,SAAS1gB,KAAK,kDACzCirB,EAAQK,aAAeL,EAAQI,SAASxrB,OAAjB,WAA4B6B,EAAOpkB,kBAEvD2tC,EAAQI,UAAwC,IAA5BJ,EAAQI,SAASx9C,UAE1Co9C,EAAQvK,SAAShqB,SAAjB,UAA6BgL,EAAOgsB,mBAqBA,qBAAzBhS,EAAMkQ,aAAavnC,GAAqBzP,GACjDo4C,EAAoB,aAAXp4C,EAAEvK,KAAsBuK,EAAE4X,eAAe,GAAGgnB,MAAQ5+B,EAAE4+B,MAC/DyZ,EAAoB,aAAXr4C,EAAEvK,KAAsBuK,EAAE4X,eAAe,GAAGknB,MAAQ9+B,EAAE8+B,QAE/DsZ,EAAStR,EAAMkQ,aAAavnC,EAC5B4oC,EAASvR,EAAMkQ,aAAatnC,GAG9B0mC,EAAKxD,MAAQyD,EAAQK,aAAatwB,KAAK,qBAAuB0G,EAAO6pB,SACrEP,EAAKV,aAAeW,EAAQK,aAAatwB,KAAK,qBAAuB0G,EAAO6pB,SACxE32C,GACFi3C,EAAaZ,EAAQvK,SAAS,GAAG3iB,YACjC+tB,EAAcb,EAAQvK,SAAS,GAAGziB,aAGlC8W,EAFUkW,EAAQvK,SAASx1B,SAAStG,KAEhBinC,EAAa,EAAMmB,EACvChY,EAFUiW,EAAQvK,SAASx1B,SAASrG,IAEhBinC,EAAc,EAAMmB,EAExCG,EAAanC,EAAQI,SAAS,GAAGttB,YACjCsvB,EAAcpC,EAAQI,SAAS,GAAGptB,aAClC8tB,EAAcqB,EAAapC,EAAKxD,MAChCwE,EAAeqB,EAAcrC,EAAKxD,MAIlCgG,IAFAF,EAAgB1tC,KAAKgE,IAAMioC,EAAa,EAAME,EAAc,EAAK,IAGjE0B,IAFAF,EAAgB3tC,KAAKgE,IAAMkoC,EAAc,EAAME,EAAe,EAAK,KAInEkB,EAAanY,EAAQiW,EAAKxD,OAGT8F,IACfJ,EAAaI,GAEXJ,EAAaM,IACfN,EAAaM,IANfL,EAAanY,EAAQgW,EAAKxD,OAST+F,IACfJ,EAAaI,GAEXJ,EAAaM,IACfN,EAAaM,KAGfP,EAAa,EACbC,EAAa,GAEflC,EAAQK,aAAa5vB,WAAW,KAAK7Q,UAArC,sBAA8DqiC,EAA9D,eAA+EC,EAA/E,UACAlC,EAAQI,SAAS3vB,WAAW,KAAK7Q,UAAjC,mCAAuEmgC,EAAKxD,MAA5E,QAEFuF,IApWW,WAqWT,IAAMjtC,EAAS3D,KAET6uC,EAAOlrC,EAAOkrC,KACdtpB,EAAS5hB,EAAO4hB,OAAOspB,KACrBC,EAAYD,EAAZC,QAEHA,EAAQvK,WACP5gC,EAAO4hB,OAAOyD,SAAWrlB,EAAO4hB,OAAOyD,QAAQC,SAAWtlB,EAAOqlB,QACnE8lB,EAAQvK,SAAW5gC,EAAOglB,WAAW7vB,SAAlB,WAA+B6K,EAAO4hB,OAAO0J,mBAEhE6f,EAAQvK,SAAW5gC,EAAOL,OAAOsf,GAAGjf,EAAOJ,aAE7CurC,EAAQI,SAAWJ,EAAQvK,SAAS1gB,KAAK,kDACzCirB,EAAQK,aAAeL,EAAQI,SAASxrB,OAAjB,WAA4B6B,EAAOpkB,kBAEvD2tC,EAAQI,UAAwC,IAA5BJ,EAAQI,SAASx9C,SAE1Cm9C,EAAKxD,MAAQ,EACbwD,EAAKV,aAAe,EACpBW,EAAQK,aAAa5vB,WAAW,KAAK7Q,UAAU,sBAC/CogC,EAAQI,SAAS3vB,WAAW,KAAK7Q,UAAU,+BAC3CogC,EAAQvK,SAAS9qB,YAAjB,UAAgC8L,EAAOgsB,mBACvCzC,EAAQvK,cAAWzqC,IAGrBysC,OA9XW,WA+XT,IAAM5iC,EAAS3D,KACT6uC,EAAOlrC,EAAOkrC,KACpB,IAAIA,EAAK5lB,QAAT,CACA4lB,EAAK5lB,SAAU,EAEf,IAAMzC,IAA+C,eAA7B7iB,EAAO25B,YAAYG,QAA0BrX,EAAQI,kBAAmB7iB,EAAO4hB,OAAO0X,mBAAmB,CAAExzB,SAAS,EAAMsW,SAAS,GACrJyxB,GAA4BprB,EAAQI,iBAAkB,CAAE/c,SAAS,EAAOsW,SAAS,GAEjF0xB,EAAgB,IAAH,OAAO9tC,EAAO4hB,OAAOljB,YAGpC+jB,EAAQO,UACVhjB,EAAOglB,WAAWhJ,GAAG,eAAgB8xB,EAAe5C,EAAKD,eAAgBpoB,GACzE7iB,EAAOglB,WAAWhJ,GAAG,gBAAiB8xB,EAAe5C,EAAKS,gBAAiB9oB,GAC3E7iB,EAAOglB,WAAWhJ,GAAG,aAAc8xB,EAAe5C,EAAKW,aAAchpB,IAC/B,eAA7B7iB,EAAO25B,YAAYG,QAC5B95B,EAAOglB,WAAWhJ,GAAGhc,EAAO25B,YAAYG,MAAOgU,EAAe5C,EAAKD,eAAgBpoB,GACnF7iB,EAAOglB,WAAWhJ,GAAGhc,EAAO25B,YAAYI,KAAM+T,EAAe5C,EAAKS,gBAAiBkC,GACnF7tC,EAAOglB,WAAWhJ,GAAGhc,EAAO25B,YAAYK,IAAK8T,EAAe5C,EAAKW,aAAchpB,GAC3E7iB,EAAO25B,YAAYhlB,QACrB3U,EAAOglB,WAAWhJ,GAAGhc,EAAO25B,YAAYhlB,OAAQm5B,EAAe5C,EAAKW,aAAchpB,IAKtF7iB,EAAOglB,WAAWhJ,GAAGhc,EAAO25B,YAAYI,KAAxC,WAAkD/5B,EAAO4hB,OAAOspB,KAAK1tC,gBAAkB0tC,EAAK3jC,YAAasmC,KAE3GhL,QA1ZW,WA2ZT,IAAM7iC,EAAS3D,KACT6uC,EAAOlrC,EAAOkrC,KACpB,GAAKA,EAAK5lB,QAAV,CAEAtlB,EAAOkrC,KAAK5lB,SAAU,EAEtB,IAAMzC,IAA+C,eAA7B7iB,EAAO25B,YAAYG,QAA0BrX,EAAQI,kBAAmB7iB,EAAO4hB,OAAO0X,mBAAmB,CAAExzB,SAAS,EAAMsW,SAAS,GACrJyxB,GAA4BprB,EAAQI,iBAAkB,CAAE/c,SAAS,EAAOsW,SAAS,GAEjF0xB,EAAgB,IAAH,OAAO9tC,EAAO4hB,OAAOljB,YAGpC+jB,EAAQO,UACVhjB,EAAOglB,WAAWhI,IAAI,eAAgB8wB,EAAe5C,EAAKD,eAAgBpoB,GAC1E7iB,EAAOglB,WAAWhI,IAAI,gBAAiB8wB,EAAe5C,EAAKS,gBAAiB9oB,GAC5E7iB,EAAOglB,WAAWhI,IAAI,aAAc8wB,EAAe5C,EAAKW,aAAchpB,IAChC,eAA7B7iB,EAAO25B,YAAYG,QAC5B95B,EAAOglB,WAAWhI,IAAIhd,EAAO25B,YAAYG,MAAOgU,EAAe5C,EAAKD,eAAgBpoB,GACpF7iB,EAAOglB,WAAWhI,IAAIhd,EAAO25B,YAAYI,KAAM+T,EAAe5C,EAAKS,gBAAiBkC,GACpF7tC,EAAOglB,WAAWhI,IAAIhd,EAAO25B,YAAYK,IAAK8T,EAAe5C,EAAKW,aAAchpB,GAC5E7iB,EAAO25B,YAAYhlB,QACrB3U,EAAOglB,WAAWhI,IAAIhd,EAAO25B,YAAYhlB,OAAQm5B,EAAe5C,EAAKW,aAAchpB,IAKvF7iB,EAAOglB,WAAWhI,IAAIhd,EAAO25B,YAAYI,KAAzC,WAAmD/5B,EAAO4hB,OAAOspB,KAAK1tC,gBAAkB0tC,EAAK3jC,YAAasmC,MCvbxGE,GAAO,CACXC,YADW,SACCnuC,GAA+B,IAAxBouC,IAAwB,yDACnCjuC,EAAS3D,KACTulB,EAAS5hB,EAAO4hB,OAAOye,KAC7B,GAAqB,qBAAVxgC,GACkB,IAAzBG,EAAOL,OAAO5R,OAAlB,CACA,IAAMq3B,EAAYplB,EAAOqlB,SAAWrlB,EAAO4hB,OAAOyD,QAAQC,QAEpDsb,EAAWxb,EACbplB,EAAOglB,WAAW7vB,SAAlB,WAA+B6K,EAAO4hB,OAAOljB,WAA7C,qCAAoFmB,EAApF,OACAG,EAAOL,OAAOsf,GAAGpf,GAEjBquC,EAAUtN,EAAS1gB,KAAT,WAAkB0B,EAAOusB,aAAzB,iBAA8CvsB,EAAOwsB,YAArD,kBAA0ExsB,EAAOysB,aAAjF,OACVzN,EAASrpB,SAASqK,EAAOusB,eAAkBvN,EAASrpB,SAASqK,EAAOwsB,cAAiBxN,EAASrpB,SAASqK,EAAOysB,gBAChHH,EAAUA,EAAQ52B,IAAIspB,EAAS,KAEV,IAAnBsN,EAAQngD,QAEZmgD,EAAQxvB,MAAK,SAAC4vB,EAAY9S,GACxB,IAAM+P,EAAWjxB,EAAEkhB,GACnB+P,EAAS30B,SAASgL,EAAOysB,cAEzB,IAAME,EAAahD,EAASrwB,KAAK,mBAC3BlD,EAAMuzB,EAASrwB,KAAK,YACpBugB,EAAS8P,EAASrwB,KAAK,eACvBwgB,EAAQ6P,EAASrwB,KAAK,cACtBszB,EAAajD,EAASxrB,OAAO,WAEnC/f,EAAOu7B,UAAUgQ,EAAS,GAAKvzB,GAAOu2B,EAAa9S,EAAQC,GAAO,GAAO,WACvE,GAAsB,qBAAX17B,GAAqC,OAAXA,GAAoBA,KAAWA,GAAWA,EAAO4hB,UAAW5hB,EAAO6tB,UAAxG,CA+BA,GA9BI0gB,GACFhD,EAAS/sB,IAAI,mBAAb,eAAyC+vB,EAAzC,OACAhD,EAASjwB,WAAW,qBAEhBmgB,IACF8P,EAASrwB,KAAK,SAAUugB,GACxB8P,EAASjwB,WAAW,gBAElBogB,IACF6P,EAASrwB,KAAK,QAASwgB,GACvB6P,EAASjwB,WAAW,eAElBkzB,EAAWzgD,QACbygD,EAAWr5C,SAAS,UAAUupB,MAAK,SAAC+vB,EAAaC,GAC/C,IAAMC,EAAUr0B,EAAEo0B,GAEdC,EAAQzzB,KAAK,iBACfyzB,EAAQzzB,KAAK,SAAUyzB,EAAQzzB,KAAK,gBACpCyzB,EAAQrzB,WAAW,mBAIrBtD,IACFuzB,EAASrwB,KAAK,MAAOlD,GACrBuzB,EAASjwB,WAAW,cAIxBiwB,EAAS30B,SAASgL,EAAOwsB,aAAat4B,YAAY8L,EAAOysB,cACzDzN,EAAS1gB,KAAT,WAAkB0B,EAAOgtB,iBAAkB34B,SACvCjW,EAAO4hB,OAAOjjB,MAAQsvC,EAAiB,CACzC,IAAMY,EAAqBjO,EAAS1lB,KAAK,2BACzC,GAAI0lB,EAASrpB,SAASvX,EAAO4hB,OAAOgK,qBAAsB,CACxD,IAAMkjB,EAAgB9uC,EAAOglB,WAAW7vB,SAAlB,oCAAwD05C,EAAxD,mBAAqF7uC,EAAO4hB,OAAOgK,oBAAnG,MACtB5rB,EAAOqgC,KAAK2N,YAAYc,EAAcjvC,SAAS,OAC1C,CACL,IAAMkvC,EAAkB/uC,EAAOglB,WAAW7vB,SAAlB,WAA+B6K,EAAO4hB,OAAOgK,oBAA7C,qCAA6FijB,EAA7F,OACxB7uC,EAAOqgC,KAAK2N,YAAYe,EAAgBlvC,SAAS,IAGrDG,EAAOipB,KAAK,iBAAkB2X,EAAS,GAAI2K,EAAS,IAChDvrC,EAAO4hB,OAAO0I,YAChBtqB,EAAOupB,uBAIXvpB,EAAOipB,KAAK,gBAAiB2X,EAAS,GAAI2K,EAAS,SAGvDjL,KA/EW,WAgFT,IAAMtgC,EAAS3D,KAEb2oB,EACEhlB,EADFglB,WAAoByX,EAClBz8B,EADU4hB,OAAsBjiB,EAChCK,EADgCL,OAAQC,EACxCI,EADwCJ,YAEtCwlB,EAAYplB,EAAOqlB,SAAWoX,EAAapX,QAAQC,QACnD1D,EAAS6a,EAAa4D,KAExBvZ,EAAgB2V,EAAa3V,cAKjC,SAASkoB,EAAWnvC,GAClB,GAAIulB,GACF,GAAIJ,EAAW7vB,SAAX,WAAwBsnC,EAAa/9B,WAArC,qCAA4EmB,EAA5E,OAAuF9R,OACzF,OAAO,OAEJ,GAAI4R,EAAOE,GAAQ,OAAO,EACjC,OAAO,EAGT,SAASgmB,EAAW+X,GAClB,OAAIxY,EACK9K,EAAEsjB,GAAS1iB,KAAK,2BAElBZ,EAAEsjB,GAAS/9B,QAIpB,GArBsB,SAAlBinB,IACFA,EAAgB,GAmBb9mB,EAAOqgC,KAAK4O,qBAAoBjvC,EAAOqgC,KAAK4O,oBAAqB,GAClEjvC,EAAO4hB,OAAOyH,sBAChBrE,EAAW7vB,SAAX,WAAwBsnC,EAAavS,oBAAqBxL,MAAK,SAACwwB,EAAStR,GACvE,IAAM/9B,EAAQulB,EAAY9K,EAAEsjB,GAAS1iB,KAAK,2BAA6BZ,EAAEsjB,GAAS/9B,QAClFG,EAAOqgC,KAAK2N,YAAYnuC,WAErB,GAAIinB,EAAgB,EACzB,IAAK,IAAIlsB,EAAIgF,EAAahF,EAAIgF,EAAcknB,EAAelsB,GAAK,EAC1Do0C,EAAWp0C,IAAIoF,EAAOqgC,KAAK2N,YAAYpzC,QAG7CoF,EAAOqgC,KAAK2N,YAAYpuC,GAE1B,GAAIgiB,EAAOutB,aACT,GAAIroB,EAAgB,GAAMlF,EAAOwtB,oBAAsBxtB,EAAOwtB,mBAAqB,EAAI,CAMrF,IALA,IAAMC,EAASztB,EAAOwtB,mBAChB9R,EAAMxW,EACNwoB,EAAWxvC,KAAKgE,IAAIlE,EAAc09B,EAAMx9B,KAAKC,IAAIsvC,EAAQ/R,GAAM39B,EAAO5R,QACtEwhD,EAAWzvC,KAAKC,IAAIH,EAAcE,KAAKC,IAAIu9B,EAAK+R,GAAS,GAEtDz0C,EAAIgF,EAAcknB,EAAelsB,EAAI00C,EAAU10C,GAAK,EACvDo0C,EAAWp0C,IAAIoF,EAAOqgC,KAAK2N,YAAYpzC,GAG7C,IAAK,IAAIA,EAAI20C,EAAU30C,EAAIgF,EAAahF,GAAK,EACvCo0C,EAAWp0C,IAAIoF,EAAOqgC,KAAK2N,YAAYpzC,OAExC,CACL,IAAMixB,EAAY7G,EAAW7vB,SAAX,WAAwBsnC,EAAalR,iBACnDM,EAAU99B,OAAS,GAAGiS,EAAOqgC,KAAK2N,YAAYnoB,EAAWgG,IAE7D,IAAMC,EAAY9G,EAAW7vB,SAAX,WAAwBsnC,EAAajR,iBACnDM,EAAU/9B,OAAS,GAAGiS,EAAOqgC,KAAK2N,YAAYnoB,EAAWiG,OC3I/D0jB,GAAa,CACjBC,aAAc,SAAsBlrC,EAAGC,GACrC,IAwBIkrC,EACAC,EAzBEC,EAAgB,WACpB,IAAIN,EACAC,EACAM,EACJ,OAAO,SAACC,EAAO31C,GAGb,IAFAo1C,GAAY,EACZD,EAAWQ,EAAM/hD,OACVuhD,EAAWC,EAAW,GAEvBO,EADJD,EAAQP,EAAWC,GAAY,IACXp1C,EAClBo1C,EAAWM,EAEXP,EAAWO,EAGf,OAAOP,GAfW,GAsCtB,OApBAjzC,KAAKkI,EAAIA,EACTlI,KAAKmI,EAAIA,EACTnI,KAAKiqC,UAAY/hC,EAAExW,OAAS,EAO5BsO,KAAK0zC,YAAc,SAAqBhF,GACtC,OAAKA,GAGL4E,EAAKC,EAAavzC,KAAKkI,EAAGwmC,GAC1B2E,EAAKC,EAAK,GAIA5E,EAAK1uC,KAAKkI,EAAEmrC,KAAQrzC,KAAKmI,EAAEmrC,GAAMtzC,KAAKmI,EAAEkrC,KAASrzC,KAAKkI,EAAEorC,GAAMtzC,KAAKkI,EAAEmrC,IAAQrzC,KAAKmI,EAAEkrC,IAR9E,GAUXrzC,MAGT2zC,uBA3CiB,SA2CMh/B,GACrB,IAAMhR,EAAS3D,KACV2D,EAAOiwC,WAAWC,SACrBlwC,EAAOiwC,WAAWC,OAASlwC,EAAO4hB,OAAOjjB,KACrC,IAAI6wC,GAAWC,aAAazvC,EAAO0lB,WAAY1U,EAAE0U,YACjD,IAAI8pB,GAAWC,aAAazvC,EAAOylB,SAAUzU,EAAEyU,YAGvDsH,aAnDiB,SAmDJA,EAAcC,GACzB,IAEIpC,EACAulB,EAHEnwC,EAAS3D,KACT+zC,EAAapwC,EAAOiwC,WAAWI,QAGrC,SAASC,EAAuBt/B,GAK9B,IAAM1E,EAAYtM,EAAOklB,cAAgBllB,EAAOsM,UAAYtM,EAAOsM,UAC/B,UAAhCtM,EAAO4hB,OAAOquB,WAAWM,KAC3BvwC,EAAOiwC,WAAWD,uBAAuBh/B,GAGzCm/B,GAAuBnwC,EAAOiwC,WAAWC,OAAOH,aAAazjC,IAG1D6jC,GAAuD,cAAhCnwC,EAAO4hB,OAAOquB,WAAWM,KACnD3lB,GAAc5Z,EAAE8Z,eAAiB9Z,EAAEqZ,iBAAmBrqB,EAAO8qB,eAAiB9qB,EAAOqqB,gBACrF8lB,GAAwB7jC,EAAYtM,EAAOqqB,gBAAkBO,EAAc5Z,EAAEqZ,gBAG3ErqB,EAAO4hB,OAAOquB,WAAWO,UAC3BL,EAAsBn/B,EAAE8Z,eAAiBqlB,GAE3Cn/B,EAAE2Z,eAAewlB,GACjBn/B,EAAE+b,aAAaojB,EAAqBnwC,GACpCgR,EAAE+a,oBACF/a,EAAEma,sBAEJ,GAAInqB,MAAMC,QAAQmvC,GAChB,IAAK,IAAIx1C,EAAI,EAAGA,EAAIw1C,EAAWriD,OAAQ6M,GAAK,EACtCw1C,EAAWx1C,KAAOoyB,GAAgBojB,EAAWx1C,aAAcyhC,GAC7DiU,EAAuBF,EAAWx1C,SAG7Bw1C,aAAsB/T,GAAUrP,IAAiBojB,GAC1DE,EAAuBF,IAG3BzmB,cA5FiB,SA4FH9N,EAAUmR,GACtB,IAEIpyB,EAFEoF,EAAS3D,KACT+zC,EAAapwC,EAAOiwC,WAAWI,QAErC,SAASI,EAAwBz/B,GAC/BA,EAAE2Y,cAAc9N,EAAU7b,GACT,IAAb6b,IACF7K,EAAE8c,kBACE9c,EAAE4Q,OAAO0I,YACX9J,EAAMG,UAAS,WACb3P,EAAEuY,sBAGNvY,EAAEgU,WAAWrH,eAAc,WACpByyB,IACDp/B,EAAE4Q,OAAOjjB,MAAwC,UAAhCqB,EAAO4hB,OAAOquB,WAAWM,IAC5Cv/B,EAAEyd,UAEJzd,EAAE2M,qBAIR,GAAI3c,MAAMC,QAAQmvC,GAChB,IAAKx1C,EAAI,EAAGA,EAAIw1C,EAAWriD,OAAQ6M,GAAK,EAClCw1C,EAAWx1C,KAAOoyB,GAAgBojB,EAAWx1C,aAAcyhC,GAC7DoU,EAAwBL,EAAWx1C,SAG9Bw1C,aAAsB/T,GAAUrP,IAAiBojB,GAC1DK,EAAwBL,KAI9B,GAAe,CACbzlD,KAAM,aACNi3B,OAAQ,CACNquB,WAAY,CACVI,aAASl6C,EACTq6C,SAAS,EACTD,GAAI,UAGR1uC,OATa,WAUX,IAAM7B,EAAS3D,KACfmkB,EAAMzI,OAAO/X,EAAQ,CACnBiwC,WAAY,CACVI,QAASrwC,EAAO4hB,OAAOquB,WAAWI,QAClCL,uBAAwBR,GAAWQ,uBAAuB/rB,KAAKjkB,GAC/D+sB,aAAcyiB,GAAWziB,aAAa9I,KAAKjkB,GAC3C2pB,cAAe6lB,GAAW7lB,cAAc1F,KAAKjkB,OAInDgc,GAAI,CACFvc,OADE,WAEA,IAAMO,EAAS3D,KACV2D,EAAOiwC,WAAWI,SACnBrwC,EAAOiwC,WAAWC,SACpBlwC,EAAOiwC,WAAWC,YAAS/5C,SACpB6J,EAAOiwC,WAAWC,SAG7B3R,OATE,WAUA,IAAMv+B,EAAS3D,KACV2D,EAAOiwC,WAAWI,SACnBrwC,EAAOiwC,WAAWC,SACpBlwC,EAAOiwC,WAAWC,YAAS/5C,SACpB6J,EAAOiwC,WAAWC,SAG7BnR,eAjBE,WAkBA,IAAM/+B,EAAS3D,KACV2D,EAAOiwC,WAAWI,SACnBrwC,EAAOiwC,WAAWC,SACpBlwC,EAAOiwC,WAAWC,YAAS/5C,SACpB6J,EAAOiwC,WAAWC,SAG7BnjB,aAzBE,SAyBWzgB,EAAW0gB,GACP3wB,KACH4zC,WAAWI,SADRh0C,KAER4zC,WAAWljB,aAAazgB,EAAW0gB,IAE5CrD,cA9BE,SA8BY9N,EAAUmR,GACP3wB,KACH4zC,WAAWI,SADRh0C,KAER4zC,WAAWtmB,cAAc9N,EAAUmR,MCnL1C0jB,GAAO,CACXC,gBADW,SACKjsB,GAEd,OADAA,EAAIxJ,KAAK,WAAY,KACdwJ,GAETksB,mBALW,SAKQlsB,GAEjB,OADAA,EAAIxJ,KAAK,WAAY,MACdwJ,GAETmsB,UATW,SASDnsB,EAAK1Y,GAEb,OADA0Y,EAAIxJ,KAAK,OAAQlP,GACV0Y,GAETosB,WAbW,SAaApsB,EAAKqsB,GAEd,OADArsB,EAAIxJ,KAAK,aAAc61B,GAChBrsB,GAETssB,UAjBW,SAiBDtsB,GAER,OADAA,EAAIxJ,KAAK,iBAAiB,GACnBwJ,GAETusB,SArBW,SAqBFvsB,GAEP,OADAA,EAAIxJ,KAAK,iBAAiB,GACnBwJ,GAETwsB,WAzBW,SAyBAp8C,GACT,IAAMkL,EAAS3D,KACTulB,EAAS5hB,EAAO4hB,OAAO8uB,KAC7B,GAAkB,KAAd57C,EAAEysC,QAAN,CACA,IAAMxO,EAAYzY,EAAExlB,EAAEjG,QAClBmR,EAAOtC,YAAcsC,EAAOtC,WAAWioC,SAAW5S,EAAUtW,GAAGzc,EAAOtC,WAAWioC,WAC7E3lC,EAAOgrB,QAAUhrB,EAAO4hB,OAAOjjB,MACnCqB,EAAOuuB,YAELvuB,EAAOgrB,MACThrB,EAAO0wC,KAAKS,OAAOvvB,EAAOwvB,kBAE1BpxC,EAAO0wC,KAAKS,OAAOvvB,EAAOyvB,mBAG1BrxC,EAAOtC,YAAcsC,EAAOtC,WAAWkoC,SAAW7S,EAAUtW,GAAGzc,EAAOtC,WAAWkoC,WAC7E5lC,EAAO+qB,cAAgB/qB,EAAO4hB,OAAOjjB,MACzCqB,EAAO2uB,YAEL3uB,EAAO+qB,YACT/qB,EAAO0wC,KAAKS,OAAOvvB,EAAO0vB,mBAE1BtxC,EAAO0wC,KAAKS,OAAOvvB,EAAO2vB,mBAG1BvxC,EAAOpC,YAAcm1B,EAAUtW,GAAV,WAAiBzc,EAAO4hB,OAAOhkB,WAAWsqC,eACjEnV,EAAU,GAAGye,UAGjBL,OAtDW,SAsDJ3mD,GACL,IACMinD,EADSp1C,KACaq0C,KAAKgB,WACL,IAAxBD,EAAa1jD,SACjB0jD,EAAaz7C,KAAK,IAClBy7C,EAAaz7C,KAAKxL,KAEpBmnD,iBA7DW,WA8DT,IAAM3xC,EAAS3D,KAEf,IAAI2D,EAAO4hB,OAAOjjB,MAASqB,EAAOtC,WAAlC,CACA,MAA6BsC,EAAOtC,WAA5BioC,EAAR,EAAQA,QAASC,EAAjB,EAAiBA,QAEbA,GAAWA,EAAQ73C,OAAS,IAC1BiS,EAAO+qB,aACT/qB,EAAO0wC,KAAKM,UAAUpL,GACtB5lC,EAAO0wC,KAAKE,mBAAmBhL,KAE/B5lC,EAAO0wC,KAAKO,SAASrL,GACrB5lC,EAAO0wC,KAAKC,gBAAgB/K,KAG5BD,GAAWA,EAAQ53C,OAAS,IAC1BiS,EAAOgrB,OACThrB,EAAO0wC,KAAKM,UAAUrL,GACtB3lC,EAAO0wC,KAAKE,mBAAmBjL,KAE/B3lC,EAAO0wC,KAAKO,SAAStL,GACrB3lC,EAAO0wC,KAAKC,gBAAgBhL,OAIlCiM,iBAtFW,WAuFT,IAAM5xC,EAAS3D,KACTulB,EAAS5hB,EAAO4hB,OAAO8uB,KACzB1wC,EAAOpC,YAAcoC,EAAO4hB,OAAOhkB,WAAW0qC,WAAatoC,EAAOpC,WAAWwoC,SAAWpmC,EAAOpC,WAAWwoC,QAAQr4C,QACpHiS,EAAOpC,WAAWwoC,QAAQ1nB,MAAK,SAACqoB,EAAa8K,GAC3C,IAAMC,EAAYx3B,EAAEu3B,GACpB7xC,EAAO0wC,KAAKC,gBAAgBmB,GAC5B9xC,EAAO0wC,KAAKG,UAAUiB,EAAW,UACjC9xC,EAAO0wC,KAAKI,WAAWgB,EAAWlwB,EAAOmwB,wBAAwB54C,QAAQ,gBAAiB24C,EAAUjyC,QAAU,QAIpHo5B,KAlGW,WAmGT,IAAMj5B,EAAS3D,KAEf2D,EAAO0kB,IAAIvF,OAAOnf,EAAO0wC,KAAKgB,YAG9B,IACI/L,EACAC,EAFEhkB,EAAS5hB,EAAO4hB,OAAO8uB,KAGzB1wC,EAAOtC,YAAcsC,EAAOtC,WAAWioC,UACzCA,EAAU3lC,EAAOtC,WAAWioC,SAE1B3lC,EAAOtC,YAAcsC,EAAOtC,WAAWkoC,UACzCA,EAAU5lC,EAAOtC,WAAWkoC,SAE1BD,IACF3lC,EAAO0wC,KAAKC,gBAAgBhL,GAC5B3lC,EAAO0wC,KAAKG,UAAUlL,EAAS,UAC/B3lC,EAAO0wC,KAAKI,WAAWnL,EAAS/jB,EAAOyvB,kBACvC1L,EAAQ3pB,GAAG,UAAWhc,EAAO0wC,KAAKQ,aAEhCtL,IACF5lC,EAAO0wC,KAAKC,gBAAgB/K,GAC5B5lC,EAAO0wC,KAAKG,UAAUjL,EAAS,UAC/B5lC,EAAO0wC,KAAKI,WAAWlL,EAAShkB,EAAO2vB,kBACvC3L,EAAQ5pB,GAAG,UAAWhc,EAAO0wC,KAAKQ,aAIhClxC,EAAOpC,YAAcoC,EAAO4hB,OAAOhkB,WAAW0qC,WAAatoC,EAAOpC,WAAWwoC,SAAWpmC,EAAOpC,WAAWwoC,QAAQr4C,QACpHiS,EAAOpC,WAAW8mB,IAAI1I,GAAG,UAAzB,WAAwChc,EAAO4hB,OAAOhkB,WAAWsqC,aAAeloC,EAAO0wC,KAAKQ,aAGhG9xC,QAnIW,WAoIT,IAGIumC,EACAC,EAJE5lC,EAAS3D,KACX2D,EAAO0wC,KAAKgB,YAAc1xC,EAAO0wC,KAAKgB,WAAW3jD,OAAS,GAAGiS,EAAO0wC,KAAKgB,WAAWz7B,SAIpFjW,EAAOtC,YAAcsC,EAAOtC,WAAWioC,UACzCA,EAAU3lC,EAAOtC,WAAWioC,SAE1B3lC,EAAOtC,YAAcsC,EAAOtC,WAAWkoC,UACzCA,EAAU5lC,EAAOtC,WAAWkoC,SAE1BD,GACFA,EAAQ3oB,IAAI,UAAWhd,EAAO0wC,KAAKQ,YAEjCtL,GACFA,EAAQ5oB,IAAI,UAAWhd,EAAO0wC,KAAKQ,YAIjClxC,EAAOpC,YAAcoC,EAAO4hB,OAAOhkB,WAAW0qC,WAAatoC,EAAOpC,WAAWwoC,SAAWpmC,EAAOpC,WAAWwoC,QAAQr4C,QACpHiS,EAAOpC,WAAW8mB,IAAI1H,IAAI,UAA1B,WAAyChd,EAAO4hB,OAAOhkB,WAAWsqC,aAAeloC,EAAO0wC,KAAKQ,cCxJ7Fc,GAAU,CACd/Y,KADc,WAEZ,IAAMj5B,EAAS3D,KACf,GAAK2D,EAAO4hB,OAAOlI,QAAnB,CACA,IAAKzQ,EAAAA,UAAmBA,EAAAA,QAAAA,UAGtB,OAFAjJ,EAAO4hB,OAAOlI,QAAQ4L,SAAU,OAChCtlB,EAAO4hB,OAAOqwB,eAAe3sB,SAAU,GAGzC,IAAM5L,EAAU1Z,EAAO0Z,QACvBA,EAAQ4S,aAAc,EACtB5S,EAAQw4B,MAAQF,GAAQG,iBACnBz4B,EAAQw4B,MAAM9kD,KAAQssB,EAAQw4B,MAAM/gD,SACzCuoB,EAAQ04B,cAAc,EAAG14B,EAAQw4B,MAAM/gD,MAAO6O,EAAO4hB,OAAO2K,oBACvDvsB,EAAO4hB,OAAOlI,QAAQC,cACzB1Q,EAAAA,iBAAwB,WAAYjJ,EAAO0Z,QAAQ24B,uBAGvDjzC,QAlBc,WAmBG/C,KACHulB,OAAOlI,QAAQC,cACzB1Q,EAAAA,oBAA2B,WAFd5M,KAEiCqd,QAAQ24B,qBAG1DA,mBAxBc,WAyBZ,IAAMryC,EAAS3D,KACf2D,EAAO0Z,QAAQw4B,MAAQF,GAAQG,gBAC/BnyC,EAAO0Z,QAAQ04B,cAAcpyC,EAAO4hB,OAAO4H,MAAOxpB,EAAO0Z,QAAQw4B,MAAM/gD,OAAO,IAEhFghD,cA7Bc,WA8BZ,IAAMG,EAAYrpC,EAAAA,SAAAA,SAAAA,MAA+B,GAAGhO,MAAM,KAAKqK,QAAO,SAACitC,GAAD,MAAmB,KAATA,KAC1ErM,EAAQoM,EAAUvkD,OAGxB,MAAO,CAAEX,IAFGklD,EAAUpM,EAAQ,GAEhB/0C,MADAmhD,EAAUpM,EAAQ,KAGlCsM,WApCc,SAoCHplD,EAAKyS,GACd,IAAMG,EAAS3D,KACf,GAAK2D,EAAO0Z,QAAQ4S,aAAgBtsB,EAAO4hB,OAAOlI,QAAQ4L,QAA1D,CACA,IAAM6B,EAAQnnB,EAAOL,OAAOsf,GAAGpf,GAC3B1O,EAAQ6gD,GAAQS,QAAQtrB,EAAMjM,KAAK,iBAClCjS,EAAAA,SAAAA,SAAAA,SAAkC7b,KACrC+D,EAAQ,GAAH,OAAM/D,EAAN,YAAa+D,IAEpB,IAAMuhD,EAAezpC,EAAAA,QAAAA,MACjBypC,GAAgBA,EAAavhD,QAAUA,IAGvC6O,EAAO4hB,OAAOlI,QAAQC,aACxB1Q,EAAAA,QAAAA,aAA4B,CAAE9X,MAAAA,GAAS,KAAMA,GAE7C8X,EAAAA,QAAAA,UAAyB,CAAE9X,MAAAA,GAAS,KAAMA,MAG9CshD,QAtDc,SAsDNt6C,GACN,OAAOA,EAAKsU,WACTtT,QAAQ,OAAQ,KAChBA,QAAQ,WAAY,IACpBA,QAAQ,OAAQ,KAChBA,QAAQ,MAAO,IACfA,QAAQ,MAAO,KAEpBi5C,cA9Dc,SA8DA5oB,EAAOr4B,EAAOi8B,GAC1B,IAAMptB,EAAS3D,KACf,GAAIlL,EACF,IAAK,IAAIyJ,EAAI,EAAG7M,EAASiS,EAAOL,OAAO5R,OAAQ6M,EAAI7M,EAAQ6M,GAAK,EAAG,CACjE,IAAMusB,EAAQnnB,EAAOL,OAAOsf,GAAGrkB,GAE/B,GADqBo3C,GAAQS,QAAQtrB,EAAMjM,KAAK,mBAC3B/pB,IAAUg2B,EAAM5P,SAASvX,EAAO4hB,OAAOgK,qBAAsB,CAChF,IAAM/rB,EAAQsnB,EAAMtnB,QACpBG,EAAOR,QAAQK,EAAO2pB,EAAO4D,SAIjCptB,EAAOR,QAAQ,EAAGgqB,EAAO4D,KCzEzBulB,GAAiB,CACrBC,YADqB,WAEnB,IAAM5yC,EAAS3D,KACf2D,EAAOipB,KAAK,cACZ,IAAM4pB,EAAUzjD,EAAAA,SAAAA,KAAAA,QAA+B,IAAK,IAEpD,GAAIyjD,IADoB7yC,EAAOL,OAAOsf,GAAGjf,EAAOJ,aAAasb,KAAK,aACjC,CAC/B,IAAMmT,EAAWruB,EAAOglB,WAAW7vB,SAAlB,WAA+B6K,EAAO4hB,OAAOljB,WAA7C,uBAAsEm0C,EAAtE,OAAmFhzC,QACpG,GAAwB,qBAAbwuB,EAA0B,OACrCruB,EAAOR,QAAQ6uB,KAGnBykB,QAZqB,WAanB,IAAM9yC,EAAS3D,KACf,GAAK2D,EAAOiyC,eAAe3lB,aAAgBtsB,EAAO4hB,OAAOqwB,eAAe3sB,QACxE,GAAItlB,EAAO4hB,OAAOqwB,eAAet4B,cAAgB1Q,EAAAA,SAAkBA,EAAAA,QAAAA,aACjEA,EAAAA,QAAAA,aAA4B,KAAM,KAAO,WAAIjJ,EAAOL,OAAOsf,GAAGjf,EAAOJ,aAAasb,KAAK,eAAkB,GACzGlb,EAAOipB,KAAK,eACP,CACL,IAAM9B,EAAQnnB,EAAOL,OAAOsf,GAAGjf,EAAOJ,aAChCoZ,EAAOmO,EAAMjM,KAAK,cAAgBiM,EAAMjM,KAAK,gBACnD9rB,EAAAA,SAAAA,KAAyB4pB,GAAQ,GACjChZ,EAAOipB,KAAK,aAGhBgQ,KAzBqB,WA0BnB,IAAMj5B,EAAS3D,KACf,MAAK2D,EAAO4hB,OAAOqwB,eAAe3sB,SAAYtlB,EAAO4hB,OAAOlI,SAAW1Z,EAAO4hB,OAAOlI,QAAQ4L,SAA7F,CACAtlB,EAAOiyC,eAAe3lB,aAAc,EACpC,IAAMtT,EAAO5pB,EAAAA,SAAAA,KAAAA,QAA+B,IAAK,IACjD,GAAI4pB,EAEF,IADA,IACSpe,EAAI,EAAG7M,EAASiS,EAAOL,OAAO5R,OAAQ6M,EAAI7M,EAAQ6M,GAAK,EAAG,CACjE,IAAMusB,EAAQnnB,EAAOL,OAAOsf,GAAGrkB,GAE/B,IADkBusB,EAAMjM,KAAK,cAAgBiM,EAAMjM,KAAK,mBACtClC,IAASmO,EAAM5P,SAASvX,EAAO4hB,OAAOgK,qBAAsB,CAC5E,IAAM/rB,EAAQsnB,EAAMtnB,QACpBG,EAAOR,QAAQK,EANL,EAMmBG,EAAO4hB,OAAO2K,oBAAoB,IAIjEvsB,EAAO4hB,OAAOqwB,eAAec,YAC/Bz4B,EAAErR,GAAQ+S,GAAG,aAAchc,EAAOiyC,eAAeW,eAGrDxzC,QA7CqB,WA8CJ/C,KACJulB,OAAOqwB,eAAec,YAC/Bz4B,EAAErR,GAAQ+T,IAAI,aAFD3gB,KAEsB41C,eAAeW,eCjDlDI,GAAW,CACfra,IADe,WAEb,IAAM34B,EAAS3D,KACT42C,EAAiBjzC,EAAOL,OAAOsf,GAAGjf,EAAOJ,aAC3CghB,EAAQ5gB,EAAO4hB,OAAO4W,SAAS5X,MAC/BqyB,EAAe/3B,KAAK,0BACtB0F,EAAQqyB,EAAe/3B,KAAK,yBAA2Blb,EAAO4hB,OAAO4W,SAAS5X,OAEhFpsB,aAAawL,EAAOw4B,SAASnlB,SAC7BrT,EAAOw4B,SAASnlB,QAAUmN,EAAMG,UAAS,WACnC3gB,EAAO4hB,OAAO4W,SAAS0a,iBACrBlzC,EAAO4hB,OAAOjjB,MAChBqB,EAAOyuB,UACPzuB,EAAO2uB,UAAU3uB,EAAO4hB,OAAO4H,OAAO,GAAM,GAC5CxpB,EAAOipB,KAAK,aACFjpB,EAAO+qB,YAGP/qB,EAAO4hB,OAAO4W,SAAS2a,gBAIjCnzC,EAAOw4B,SAAS6M,QAHhBrlC,EAAOR,QAAQQ,EAAOL,OAAO5R,OAAS,EAAGiS,EAAO4hB,OAAO4H,OAAO,GAAM,GACpExpB,EAAOipB,KAAK,cAJZjpB,EAAO2uB,UAAU3uB,EAAO4hB,OAAO4H,OAAO,GAAM,GAC5CxpB,EAAOipB,KAAK,aAOLjpB,EAAO4hB,OAAOjjB,MACvBqB,EAAOyuB,UACPzuB,EAAOuuB,UAAUvuB,EAAO4hB,OAAO4H,OAAO,GAAM,GAC5CxpB,EAAOipB,KAAK,aACFjpB,EAAOgrB,MAGPhrB,EAAO4hB,OAAO4W,SAAS2a,gBAIjCnzC,EAAOw4B,SAAS6M,QAHhBrlC,EAAOR,QAAQ,EAAGQ,EAAO4hB,OAAO4H,OAAO,GAAM,GAC7CxpB,EAAOipB,KAAK,cAJZjpB,EAAOuuB,UAAUvuB,EAAO4hB,OAAO4H,OAAO,GAAM,GAC5CxpB,EAAOipB,KAAK,aAOVjpB,EAAO4hB,OAAOkE,SAAW9lB,EAAOw4B,SAASC,SAASz4B,EAAOw4B,SAASG,QACrE/X,IAELkZ,MAxCe,WAyCb,IAAM95B,EAAS3D,KACf,MAAuC,qBAA5B2D,EAAOw4B,SAASnlB,WACvBrT,EAAOw4B,SAASC,UACpBz4B,EAAOw4B,SAASC,SAAU,EAC1Bz4B,EAAOipB,KAAK,iBACZjpB,EAAOw4B,SAASG,OACT,KAET0M,KAjDe,WAkDb,IAAMrlC,EAAS3D,KACf,QAAK2D,EAAOw4B,SAASC,UACkB,qBAA5Bz4B,EAAOw4B,SAASnlB,UAEvBrT,EAAOw4B,SAASnlB,UAClB7e,aAAawL,EAAOw4B,SAASnlB,SAC7BrT,EAAOw4B,SAASnlB,aAAUld,GAE5B6J,EAAOw4B,SAASC,SAAU,EAC1Bz4B,EAAOipB,KAAK,iBACL,KAETmqB,MA9De,SA8DT5pB,GACJ,IAAMxpB,EAAS3D,KACV2D,EAAOw4B,SAASC,UACjBz4B,EAAOw4B,SAASE,SAChB14B,EAAOw4B,SAASnlB,SAAS7e,aAAawL,EAAOw4B,SAASnlB,SAC1DrT,EAAOw4B,SAASE,QAAS,EACX,IAAVlP,GAAgBxpB,EAAO4hB,OAAO4W,SAAS6a,mBAIzCrzC,EAAOglB,WAAW,GAAGpf,iBAAiB,gBAAiB5F,EAAOw4B,SAASlkB,iBACvEtU,EAAOglB,WAAW,GAAGpf,iBAAiB,sBAAuB5F,EAAOw4B,SAASlkB,mBAJ7EtU,EAAOw4B,SAASE,QAAS,EACzB14B,EAAOw4B,SAASG,WCvEhB2a,GAAO,CACXvmB,aADW,WAIT,IAFA,IAAM/sB,EAAS3D,KACPsD,EAAWK,EAAXL,OACC/E,EAAI,EAAGA,EAAI+E,EAAO5R,OAAQ6M,GAAK,EAAG,CACzC,IAAMgmC,EAAW5gC,EAAOL,OAAOsf,GAAGrkB,GAE9B24C,GADW3S,EAAS,GAAG/W,kBAEtB7pB,EAAO4hB,OAAOiL,mBAAkB0mB,GAAMvzC,EAAOsM,WAClD,IAAIknC,EAAK,EACJxzC,EAAO6kB,iBACV2uB,EAAKD,EACLA,EAAK,GAEP,IAAME,EAAezzC,EAAO4hB,OAAO8xB,WAAWC,UAC1C7zC,KAAKC,IAAI,EAAID,KAAKuI,IAAIu4B,EAAS,GAAGlW,UAAW,GAC7C,EAAI5qB,KAAKgE,IAAIhE,KAAKC,IAAI6gC,EAAS,GAAGlW,UAAW,GAAI,GACrDkW,EACGpiB,IAAI,CACH0qB,QAASuK,IAEV1oC,UAJH,sBAI4BwoC,EAJ5B,eAIqCC,EAJrC,eAOJ7pB,cAxBW,SAwBG9N,GACZ,IAAM7b,EAAS3D,KACPsD,EAAuBK,EAAvBL,OAAQqlB,EAAehlB,EAAfglB,WAEhB,GADArlB,EAAOic,WAAWC,GACd7b,EAAO4hB,OAAOiL,kBAAiC,IAAbhR,EAAgB,CACpD,IAAI+3B,GAAiB,EACrBj0C,EAAOge,eAAc,WACnB,IAAIi2B,GACC5zC,IAAUA,EAAO6tB,UAAtB,CACA+lB,GAAiB,EACjB5zC,EAAOutB,WAAY,EAEnB,IADA,IAAMsmB,EAAgB,CAAC,sBAAuB,iBACrCj5C,EAAI,EAAGA,EAAIi5C,EAAc9lD,OAAQ6M,GAAK,EAC7CoqB,EAAW5H,QAAQy2B,EAAcj5C,WCnCrCk5C,GAAO,CACX/mB,aADW,WAET,IAQIgnB,EARE/zC,EAAS3D,KAEbqoB,EACE1kB,EADF0kB,IAAKM,EACHhlB,EADGglB,WAAYrlB,EACfK,EADeL,OAAeq0C,EAC9Bh0C,EADuB3P,MAA4B4jD,EACnDj0C,EAD2C1P,OAAoCiO,EAC/EyB,EADiEklB,aAAyBD,EAC1FjlB,EADoF8kB,KAElFlD,EAAS5hB,EAAO4hB,OAAOsyB,WACvBrvB,EAAe7kB,EAAO6kB,eACtBO,EAAYplB,EAAOqlB,SAAWrlB,EAAO4hB,OAAOyD,QAAQC,QACtD6uB,EAAgB,EAEhBvyB,EAAOwyB,SACLvvB,GAE2B,KAD7BkvB,EAAgB/uB,EAAW9E,KAAK,wBACdnyB,SAChBgmD,EAAgBz5B,EAAE,0CAClB0K,EAAW7F,OAAO40B,IAEpBA,EAAcv1B,IAAI,CAAEluB,OAAQ,GAAF,OAAK0jD,EAAL,SAGG,KAD7BD,EAAgBrvB,EAAIxE,KAAK,wBACPnyB,SAChBgmD,EAAgBz5B,EAAE,0CAClBoK,EAAIvF,OAAO40B,KAIjB,IAAK,IAAIn5C,EAAI,EAAGA,EAAI+E,EAAO5R,OAAQ6M,GAAK,EAAG,CACzC,IAAMgmC,EAAWjhC,EAAOsf,GAAGrkB,GACvBirB,EAAajrB,EACbwqB,IACFS,EAAazc,SAASw3B,EAAS1lB,KAAK,2BAA4B,KAElE,IAAIm5B,EAA0B,GAAbxuB,EACbhc,EAAQ/J,KAAKoN,MAAMmnC,EAAa,KAChC91C,IACF81C,GAAcA,EACdxqC,EAAQ/J,KAAKoN,OAAOmnC,EAAa,MAEnC,IAAM3pB,EAAW5qB,KAAKC,IAAID,KAAKgE,IAAI88B,EAAS,GAAGlW,SAAU,IAAK,GAC1D6oB,EAAK,EACLC,EAAK,EACLc,EAAK,EACLzuB,EAAa,IAAM,GACrB0tB,EAAc,GAAR1pC,EAAYob,EAClBqvB,EAAK,IACKzuB,EAAa,GAAK,IAAM,GAClC0tB,EAAK,EACLe,EAAc,GAARzqC,EAAYob,IACRY,EAAa,GAAK,IAAM,GAClC0tB,EAAKtuB,EAAsB,EAARpb,EAAYob,EAC/BqvB,EAAKrvB,IACKY,EAAa,GAAK,IAAM,IAClC0tB,GAAMtuB,EACNqvB,EAAM,EAAIrvB,EAA4B,EAAbA,EAAiBpb,GAExCtL,IACFg1C,GAAMA,GAGH1uB,IACH2uB,EAAKD,EACLA,EAAK,GAGP,IAAMxoC,EAAY,WAAH,OAAc8Z,EAAe,GAAKwvB,EAAlC,wBAA4DxvB,EAAewvB,EAAa,EAAxF,4BAA6Gd,EAA7G,eAAsHC,EAAtH,eAA+Hc,EAA/H,OAMf,GALI5pB,GAAY,GAAKA,GAAY,IAC/BypB,EAA8B,GAAbtuB,EAA+B,GAAX6E,EACjCnsB,IAAK41C,EAA+B,IAAbtuB,EAA+B,GAAX6E,IAEjDkW,EAAS71B,UAAUA,GACf6W,EAAO2yB,aAAc,CAEvB,IAAIC,EAAe3vB,EAAe+b,EAAS1gB,KAAK,6BAA+B0gB,EAAS1gB,KAAK,4BACzFu0B,EAAc5vB,EAAe+b,EAAS1gB,KAAK,8BAAgC0gB,EAAS1gB,KAAK,+BACjE,IAAxBs0B,EAAazmD,SACfymD,EAAel6B,EAAE,mCAAD,OAAoCuK,EAAe,OAAS,MAA5D,aAChB+b,EAASzhB,OAAOq1B,IAES,IAAvBC,EAAY1mD,SACd0mD,EAAcn6B,EAAE,mCAAD,OAAoCuK,EAAe,QAAU,SAA7D,aACf+b,EAASzhB,OAAOs1B,IAEdD,EAAazmD,SAAQymD,EAAa,GAAG76C,MAAMuvC,QAAUppC,KAAKC,KAAK2qB,EAAU,IACzE+pB,EAAY1mD,SAAQ0mD,EAAY,GAAG96C,MAAMuvC,QAAUppC,KAAKC,IAAI2qB,EAAU,KAU9E,GAPA1F,EAAWxG,IAAI,CACb,2BAA4B,YAA5B,OAAwCyG,EAAa,EAArD,MACA,wBAAyB,YAAzB,OAAqCA,EAAa,EAAlD,MACA,uBAAwB,YAAxB,OAAoCA,EAAa,EAAjD,MACA,mBAAoB,YAApB,OAAgCA,EAAa,EAA7C,QAGErD,EAAOwyB,OACT,GAAIvvB,EACFkvB,EAAchpC,UAAd,2BAA6CipC,EAAc,EAAKpyB,EAAO8yB,aAAvE,gBAA2FV,EAAc,EAAzG,kDAAoJpyB,EAAO+yB,YAA3J,UACK,CACL,IAAMC,EAAc90C,KAAKuI,IAAI8rC,GAA6D,GAA3Cr0C,KAAKoN,MAAMpN,KAAKuI,IAAI8rC,GAAiB,IAC9EvpB,EAAa,KAChB9qB,KAAK+0C,IAAmB,EAAdD,EAAkB90C,KAAKw1B,GAAM,KAAO,EAC5Cx1B,KAAKg1C,IAAmB,EAAdF,EAAkB90C,KAAKw1B,GAAM,KAAO,GAE7Cyf,EAASnzB,EAAO+yB,YAChBK,EAASpzB,EAAO+yB,YAAc/pB,EAC9Bxf,EAASwW,EAAO8yB,aACtBX,EAAchpC,UAAd,kBAAmCgqC,EAAnC,gBAAiDC,EAAjD,8BAA8Ef,EAAe,EAAK7oC,EAAlG,gBAAgH6oC,EAAe,EAAIe,EAAnI,wBAGJ,IAAMC,EAAWhX,EAAQE,UAAYF,EAAQG,WAAenZ,EAAa,EAAK,EAC9ED,EACGja,UADH,4BACkCkqC,EADlC,uBACwDj1C,EAAO6kB,eAAiB,EAAIsvB,EADpF,wBACiHn0C,EAAO6kB,gBAAkBsvB,EAAgB,EAD1J,UAGFxqB,cAjHW,SAiHG9N,GACZ,IAAM7b,EAAS3D,KACPqoB,EAAgB1kB,EAAhB0kB,IAAgB1kB,EAAXL,OAEVic,WAAWC,GACXqE,KAAK,gHACLtE,WAAWC,GACV7b,EAAO4hB,OAAOsyB,WAAWE,SAAWp0C,EAAO6kB,gBAC7CH,EAAIxE,KAAK,uBAAuBtE,WAAWC,KC1H3Cq5B,GAAO,CACXnoB,aADW,WAIT,IAFA,IAAM/sB,EAAS3D,KACPsD,EAA8BK,EAA9BL,OAAsBpB,EAAQyB,EAAtBklB,aACPtqB,EAAI,EAAGA,EAAI+E,EAAO5R,OAAQ6M,GAAK,EAAG,CACzC,IAAMgmC,EAAWjhC,EAAOsf,GAAGrkB,GACvB8vB,EAAWkW,EAAS,GAAGlW,SACvB1qB,EAAO4hB,OAAOuzB,WAAWC,gBAC3B1qB,EAAW5qB,KAAKC,IAAID,KAAKgE,IAAI88B,EAAS,GAAGlW,SAAU,IAAK,IAE1D,IAEI2qB,GADY,IAAM3qB,EAElB4qB,EAAU,EACV/B,GAJW3S,EAAS,GAAG/W,kBAKvB2pB,EAAK,EAYT,GAXKxzC,EAAO6kB,eAKDtmB,IACT82C,GAAWA,IALX7B,EAAKD,EACLA,EAAK,EACL+B,GAAWD,EACXA,EAAU,GAKZzU,EAAS,GAAGjnC,MAAM8R,QAAU3L,KAAKuI,IAAIvI,KAAK+J,MAAM6gB,IAAa/qB,EAAO5R,OAEhEiS,EAAO4hB,OAAOuzB,WAAWZ,aAAc,CAEzC,IAAIC,EAAex0C,EAAO6kB,eAAiB+b,EAAS1gB,KAAK,6BAA+B0gB,EAAS1gB,KAAK,4BAClGu0B,EAAcz0C,EAAO6kB,eAAiB+b,EAAS1gB,KAAK,8BAAgC0gB,EAAS1gB,KAAK,+BAC1E,IAAxBs0B,EAAazmD,SACfymD,EAAel6B,EAAE,mCAAD,OAAoCta,EAAO6kB,eAAiB,OAAS,MAArE,aAChB+b,EAASzhB,OAAOq1B,IAES,IAAvBC,EAAY1mD,SACd0mD,EAAcn6B,EAAE,mCAAD,OAAoCta,EAAO6kB,eAAiB,QAAU,SAAtE,aACf+b,EAASzhB,OAAOs1B,IAEdD,EAAazmD,SAAQymD,EAAa,GAAG76C,MAAMuvC,QAAUppC,KAAKC,KAAK2qB,EAAU,IACzE+pB,EAAY1mD,SAAQ0mD,EAAY,GAAG96C,MAAMuvC,QAAUppC,KAAKC,IAAI2qB,EAAU,IAE5EkW,EACG71B,UADH,sBAC4BwoC,EAD5B,eACqCC,EADrC,4BAC2D8B,EAD3D,wBACkFD,EADlF,WAIJ1rB,cA9CW,SA8CG9N,GACZ,IAAM7b,EAAS3D,KACPsD,EAAoCK,EAApCL,OAAQC,EAA4BI,EAA5BJ,YAAaolB,EAAehlB,EAAfglB,WAK7B,GAJArlB,EACGic,WAAWC,GACXqE,KAAK,gHACLtE,WAAWC,GACV7b,EAAO4hB,OAAOiL,kBAAiC,IAAbhR,EAAgB,CACpD,IAAI+3B,GAAiB,EAErBj0C,EAAOsf,GAAGrf,GAAa+d,eAAc,WACnC,IAAIi2B,GACC5zC,IAAUA,EAAO6tB,UAAtB,CAEA+lB,GAAiB,EACjB5zC,EAAOutB,WAAY,EAEnB,IADA,IAAMsmB,EAAgB,CAAC,sBAAuB,iBACrCj5C,EAAI,EAAGA,EAAIi5C,EAAc9lD,OAAQ6M,GAAK,EAC7CoqB,EAAW5H,QAAQy2B,EAAcj5C,WC/DrC26C,GAAY,CAChBxoB,aADgB,WAad,IAXA,IAAM/sB,EAAS3D,KAEN23C,EACLh0C,EADF3P,MAA4B4jD,EAC1Bj0C,EADkB1P,OAAsBqP,EACxCK,EADwCL,OAAQqlB,EAChDhlB,EADgDglB,WAAYW,EAC5D3lB,EAD4D2lB,gBAE1D/D,EAAS5hB,EAAO4hB,OAAO4zB,gBACvB3wB,EAAe7kB,EAAO6kB,eACtB9Z,EAAY/K,EAAOsM,UACnBmpC,EAAS5wB,EAA6BmvB,EAAc,EAA3BjpC,EAA8CkpC,EAAe,EAA5BlpC,EAC1D2qC,EAAS7wB,EAAejD,EAAO8zB,QAAU9zB,EAAO8zB,OAChDppC,EAAYsV,EAAO+zB,MAEhB/6C,EAAI,EAAG7M,EAAS4R,EAAO5R,OAAQ6M,EAAI7M,EAAQ6M,GAAK,EAAG,CAC1D,IAAMgmC,EAAWjhC,EAAOsf,GAAGrkB,GACrB6rB,EAAYd,EAAgB/qB,GAE5Bg7C,GAAqBH,EADP7U,EAAS,GAAG/W,kBACmBpD,EAAY,GAAMA,EAAa7E,EAAOi0B,SAErFR,EAAUxwB,EAAe6wB,EAASE,EAAmB,EACrDN,EAAUzwB,EAAe,EAAI6wB,EAASE,EAEtCE,GAAcxpC,EAAYxM,KAAKuI,IAAIutC,GAEnCG,EAAUn0B,EAAOm0B,QAEE,kBAAZA,IAAkD,IAA1BA,EAAQ1kC,QAAQ,OACjD0kC,EAAYzoC,WAAWsU,EAAOm0B,SAAW,IAAOtvB,GAElD,IAAI4mB,EAAaxoB,EAAe,EAAIkxB,EAAWH,EAC3CxI,EAAavoB,EAAekxB,EAAWH,EAAoB,EAE3DlO,EAAQ,GAAK,EAAI9lB,EAAO8lB,OAAS5nC,KAAKuI,IAAIutC,GAG1C91C,KAAKuI,IAAI+kC,GAAc,OAAOA,EAAa,GAC3CttC,KAAKuI,IAAIglC,GAAc,OAAOA,EAAa,GAC3CvtC,KAAKuI,IAAIytC,GAAc,OAAOA,EAAa,GAC3Ch2C,KAAKuI,IAAIgtC,GAAW,OAAOA,EAAU,GACrCv1C,KAAKuI,IAAIitC,GAAW,OAAOA,EAAU,GACrCx1C,KAAKuI,IAAIq/B,GAAS,OAAOA,EAAQ,GAErC,IAAMsO,EAAiB,eAAH,OAAkB5I,EAAlB,cAAkCC,EAAlC,cAAkDyI,EAAlD,wBAA4ER,EAA5E,wBAAmGD,EAAnG,sBAAwH3N,EAAxH,KAIpB,GAFA9G,EAAS71B,UAAUirC,GACnBpV,EAAS,GAAGjnC,MAAM8R,OAAmD,EAAzC3L,KAAKuI,IAAIvI,KAAK+J,MAAM+rC,IAC5Ch0B,EAAO2yB,aAAc,CAEvB,IAAI0B,EAAkBpxB,EAAe+b,EAAS1gB,KAAK,6BAA+B0gB,EAAS1gB,KAAK,4BAC5Fg2B,EAAiBrxB,EAAe+b,EAAS1gB,KAAK,8BAAgC0gB,EAAS1gB,KAAK,+BACjE,IAA3B+1B,EAAgBloD,SAClBkoD,EAAkB37B,EAAE,mCAAD,OAAoCuK,EAAe,OAAS,MAA5D,aACnB+b,EAASzhB,OAAO82B,IAEY,IAA1BC,EAAenoD,SACjBmoD,EAAiB57B,EAAE,mCAAD,OAAoCuK,EAAe,QAAU,SAA7D,aAClB+b,EAASzhB,OAAO+2B,IAEdD,EAAgBloD,SAAQkoD,EAAgB,GAAGt8C,MAAMuvC,QAAU0M,EAAmB,EAAIA,EAAmB,GACrGM,EAAenoD,SAAQmoD,EAAe,GAAGv8C,MAAMuvC,SAAY0M,EAAoB,GAAKA,EAAmB,KAK3GnzB,EAAQE,eAAiBF,EAAQ0zB,yBACxBnxB,EAAW,GAAGrrB,MACtBy8C,kBAAH,UAA0BX,EAA1B,YAGJ9rB,cArEgB,SAqEF9N,GACGxf,KACRsD,OACJic,WAAWC,GACXqE,KAAK,gHACLtE,WAAWC,KC3EZw6B,GAAS,CACbpd,KADa,WAEX,IAAMj5B,EAAS3D,KACCi6C,EAAiBt2C,EAAO4hB,OAAhC/T,OACFoV,EAAcjjB,EAAO4B,YACvB00C,EAAat2C,kBAAkBijB,GACjCjjB,EAAO6N,OAAO7N,OAASs2C,EAAat2C,OACpCwgB,EAAMzI,OAAO/X,EAAO6N,OAAO7N,OAAOw6B,eAAgB,CAChDpR,qBAAqB,EACrBwD,qBAAqB,IAEvBpM,EAAMzI,OAAO/X,EAAO6N,OAAO7N,OAAO4hB,OAAQ,CACxCwH,qBAAqB,EACrBwD,qBAAqB,KAEdpM,EAAM3I,SAASy+B,EAAat2C,UACrCA,EAAO6N,OAAO7N,OAAS,IAAIijB,EAAYzC,EAAMzI,OAAO,GAAIu+B,EAAat2C,OAAQ,CAC3EqpB,uBAAuB,EACvBD,qBAAqB,EACrBwD,qBAAqB,KAEvB5sB,EAAO6N,OAAO0oC,eAAgB,GAEhCv2C,EAAO6N,OAAO7N,OAAO0kB,IAAI9N,SAAS5W,EAAO4hB,OAAO/T,OAAO2oC,sBACvDx2C,EAAO6N,OAAO7N,OAAOgc,GAAG,MAAOhc,EAAO6N,OAAO4oC,eAE/CA,aA1Ba,WA2BX,IAAMz2C,EAAS3D,KACTq6C,EAAe12C,EAAO6N,OAAO7N,OACnC,GAAK02C,EAAL,CACA,IAAM/pB,EAAe+pB,EAAa/pB,aAC5BD,EAAegqB,EAAahqB,aAClC,KAAIA,IAAgBpS,EAAEoS,GAAcnV,SAASvX,EAAO4hB,OAAO/T,OAAO8oC,yBACtC,qBAAjBhqB,GAAiD,OAAjBA,EAA3C,CACA,IAAIptB,EAMJ,GAJEA,EADEm3C,EAAa90B,OAAOjjB,KACPyK,SAASkR,EAAEo8B,EAAahqB,cAAcxR,KAAK,2BAA4B,IAEvEyR,EAEb3sB,EAAO4hB,OAAOjjB,KAAM,CACtB,IAAIi4C,EAAe52C,EAAOJ,YACtBI,EAAOL,OAAOsf,GAAG23B,GAAcr/B,SAASvX,EAAO4hB,OAAOgK,uBACxD5rB,EAAOyuB,UAEPzuB,EAAO0uB,YAAc1uB,EAAOglB,WAAW,GAAG1G,WAC1Cs4B,EAAe52C,EAAOJ,aAExB,IAAMivB,EAAY7uB,EAAOL,OAAOsf,GAAG23B,GAAc/2B,QAA/B,oCAAoEtgB,EAApE,OAAsF0f,GAAG,GAAGpf,QACxGuiB,EAAYpiB,EAAOL,OAAOsf,GAAG23B,GAAcl3B,QAA/B,oCAAoEngB,EAApE,OAAsF0f,GAAG,GAAGpf,QACxEN,EAAb,qBAAdsvB,EAA0CzM,EACvB,qBAAdA,EAA0CyM,EACjDzM,EAAYw0B,EAAeA,EAAe/nB,EAA0BzM,EACzDyM,EAEtB7uB,EAAOR,QAAQD,MAEjBE,OAzDa,SAyDNo3C,GACL,IAAM72C,EAAS3D,KACTq6C,EAAe12C,EAAO6N,OAAO7N,OACnC,GAAK02C,EAAL,CAEA,IAAM5vB,EAAsD,SAAtC4vB,EAAa90B,OAAOkF,cACtC4vB,EAAapnB,uBACbonB,EAAa90B,OAAOkF,cAElBgwB,EAAmB92C,EAAO4hB,OAAO/T,OAAOipC,iBACxCC,EAAYD,IAAqBJ,EAAa90B,OAAOjjB,KAC3D,GAAIqB,EAAOqrB,YAAcqrB,EAAarrB,WAAa0rB,EAAW,CAC5D,IACIC,EACAnzC,EAFAozC,EAAqBP,EAAa92C,YAGtC,GAAI82C,EAAa90B,OAAOjjB,KAAM,CACxB+3C,EAAa/2C,OAAOsf,GAAGg4B,GAAoB1/B,SAASm/B,EAAa90B,OAAOgK,uBAC1E8qB,EAAajoB,UAEbioB,EAAahoB,YAAcgoB,EAAa1xB,WAAW,GAAG1G,WACtD24B,EAAqBP,EAAa92C,aAGpC,IAAMs3C,EAAkBR,EAAa/2C,OAClCsf,GAAGg4B,GACHp3B,QAFqB,oCAEgB7f,EAAOqrB,UAFvB,OAEsCpM,GAAG,GAC9Dpf,QACGs3C,EAAkBT,EAAa/2C,OAClCsf,GAAGg4B,GACHv3B,QAFqB,oCAEgB1f,EAAOqrB,UAFvB,OAEsCpM,GAAG,GAC9Dpf,QACyCm3C,EAAb,qBAApBE,EAAkDC,EACzB,qBAApBA,EAAkDD,EACzDC,EAAkBF,IAAuBA,EAAqBC,EAAkCD,EAChGE,EAAkBF,EAAqBA,EAAqBC,EAAkCC,EACjFD,EACtBrzC,EAAY7D,EAAOJ,YAAcI,EAAOisB,cAAgB,OAAS,YAGjEpoB,GADAmzC,EAAiBh3C,EAAOqrB,WACKrrB,EAAOisB,cAAgB,OAAS,OAE3D8qB,IACFC,GAAgC,SAAdnzC,EAAuBizC,GAAoB,EAAIA,GAG/DJ,EAAavsB,sBAAwBusB,EAAavsB,qBAAqB9Y,QAAQ2lC,GAAkB,IAC/FN,EAAa90B,OAAOwG,eAEpB4uB,EADEA,EAAiBC,EACFD,EAAiBl3C,KAAKoN,MAAM4Z,EAAgB,GAAK,EAEjDkwB,EAAiBl3C,KAAKoN,MAAM4Z,EAAgB,GAAK,EAE3DkwB,EAAiBC,IAC1BD,EAAiBA,EAAiBlwB,EAAgB,GAEpD4vB,EAAal3C,QAAQw3C,EAAgBH,EAAU,OAAI1gD,IAKvD,IAAIihD,EAAmB,EACjBC,EAAmBr3C,EAAO4hB,OAAO/T,OAAO8oC,sBAa9C,GAXI32C,EAAO4hB,OAAOkF,cAAgB,IAAM9mB,EAAO4hB,OAAOwG,iBACpDgvB,EAAmBp3C,EAAO4hB,OAAOkF,eAG9B9mB,EAAO4hB,OAAO/T,OAAOypC,uBACxBF,EAAmB,GAGrBA,EAAmBt3C,KAAKoN,MAAMkqC,GAE9BV,EAAa/2C,OAAOmW,YAAYuhC,GAC5BX,EAAa90B,OAAOjjB,MAAS+3C,EAAa90B,OAAOyD,SAAWqxB,EAAa90B,OAAOyD,QAAQC,QAC1F,IAAK,IAAI1qB,EAAI,EAAGA,EAAIw8C,EAAkBx8C,GAAK,EACzC87C,EAAa1xB,WAAW7vB,SAAxB,oCAA8D6K,EAAOqrB,UAAYzwB,EAAjF,OAAwFgc,SAASygC,QAGnG,IAAK,IAAIz8C,EAAI,EAAGA,EAAIw8C,EAAkBx8C,GAAK,EACzC87C,EAAa/2C,OAAOsf,GAAGjf,EAAOqrB,UAAYzwB,GAAGgc,SAASygC,MChIxDlzB,GAAa,CACjB8M,EACAxO,EACAwb,EACAsZ,EACA7Y,EACAc,EANiB,EjB6WJ,CACb70C,KAAM,aACNi3B,OAAQ,CACN0iB,WAAY,CACVhf,SAAS,EACTkf,gBAAgB,EAChBI,QAAQ,EACRD,aAAa,EACbI,YAAa,EACbR,aAAc,cAGlB1iC,OAZa,WAaX,IAAM7B,EAAS3D,KACfmkB,EAAMzI,OAAO/X,EAAQ,CACnBskC,WAAY,CACVhf,SAAS,EACTsd,OAAQE,EAAWF,OAAO3e,KAAKjkB,GAC/B6iC,QAASC,EAAWD,QAAQ5e,KAAKjkB,GACjCqhC,OAAQyB,EAAWzB,OAAOpd,KAAKjkB,GAC/BmkC,iBAAkBrB,EAAWqB,iBAAiBlgB,KAAKjkB,GACnDqkC,iBAAkBvB,EAAWuB,iBAAiBpgB,KAAKjkB,GACnDulC,cAAezC,EAAWyC,cAActhB,KAAKjkB,GAC7CwlC,cAAe1C,EAAW0C,cAAcvhB,KAAKjkB,GAC7C+iC,eAAgBviB,EAAMK,MACtBmiB,yBAAqB7sC,EACrB8sC,kBAAmB,OAIzBjnB,GAAI,CACFid,KADE,WAEA,IAAMj5B,EAAS3D,MACV2D,EAAO4hB,OAAO0iB,WAAWhf,SAAWtlB,EAAO4hB,OAAOkE,SACrD9lB,EAAOskC,WAAWzB,UAEhB7iC,EAAO4hB,OAAO0iB,WAAWhf,SAAStlB,EAAOskC,WAAW1B,UAE1DxjC,QARE,WASA,IAAMY,EAAS3D,KACX2D,EAAO4hB,OAAOkE,SAChB9lB,EAAOskC,WAAW1B,SAEhB5iC,EAAOskC,WAAWhf,SAAStlB,EAAOskC,WAAWzB,aCjUxC,CACbl4C,KAAM,aACNi3B,OAAQ,CACNlkB,WAAY,CACV6C,OAAQ,KACRC,OAAQ,KAERg3C,aAAa,EACb3R,cAAe,yBACf6C,YAAa,uBACb5C,UAAW,uBAGfjkC,OAba,WAcX,IAAM7B,EAAS3D,KACfmkB,EAAMzI,OAAO/X,EAAQ,CACnBtC,WAAY,CACVu7B,KAAMyM,GAAWzM,KAAKhV,KAAKjkB,GAC3BP,OAAQimC,GAAWjmC,OAAOwkB,KAAKjkB,GAC/BZ,QAASsmC,GAAWtmC,QAAQ6kB,KAAKjkB,GACjCgmC,YAAaN,GAAWM,YAAY/hB,KAAKjkB,GACzC+lC,YAAaL,GAAWK,YAAY9hB,KAAKjkB,OAI/Cgc,GAAI,CACFid,KADE,WAEe58B,KACRqB,WAAWu7B,OADH58B,KAERqB,WAAW+B,UAEpBg4C,OANE,WAOep7C,KACRqB,WAAW+B,UAEpBi4C,SAVE,WAWer7C,KACRqB,WAAW+B,UAEpBL,QAdE,WAee/C,KACRqB,WAAW0B,WAEpBoyC,MAlBE,SAkBI18C,GACJ,IAOM6iD,EAPA33C,EAAS3D,KACf,EAA6B2D,EAAOtC,WAA5BioC,EAAR,EAAQA,QAASC,EAAjB,EAAiBA,SAEf5lC,EAAO4hB,OAAOlkB,WAAW85C,aACrBl9B,EAAExlB,EAAEjG,QAAQ4tB,GAAGmpB,IACftrB,EAAExlB,EAAEjG,QAAQ4tB,GAAGkpB,KAGfA,EACFgS,EAAWhS,EAAQpuB,SAASvX,EAAO4hB,OAAOlkB,WAAWgrC,aAC5C9C,IACT+R,EAAW/R,EAAQruB,SAASvX,EAAO4hB,OAAOlkB,WAAWgrC,eAEtC,IAAbiP,EACF33C,EAAOipB,KAAK,iBAAkBjpB,GAE9BA,EAAOipB,KAAK,iBAAkBjpB,GAE5B2lC,GACFA,EAAQ3qB,YAAYhb,EAAO4hB,OAAOlkB,WAAWgrC,aAE3C9C,GACFA,EAAQ5qB,YAAYhb,EAAO4hB,OAAOlkB,WAAWgrC,iBC8FxC,CACb/9C,KAAM,aACNi3B,OAAQ,CACNhkB,WAAY,CACV0C,GAAI,KACJ6nC,cAAe,OACfG,WAAW,EACXkP,aAAa,EACbvP,aAAc,KACdI,kBAAmB,KACnBD,eAAgB,KAChBN,aAAc,KACdL,qBAAqB,EACrBl9C,KAAM,UACNi8C,gBAAgB,EAChBE,mBAAoB,EACpBW,sBAAuB,SAACuQ,GAAD,OAAYA,GACnCrQ,oBAAqB,SAACqQ,GAAD,OAAYA,GACjC1P,YAAa,2BACbtB,kBAAmB,kCACnB4B,cAAe,qBACfpB,aAAc,4BACdE,WAAY,0BACZoB,YAAa,2BACbb,qBAAsB,qCACtBY,yBAA0B,yCAC1BF,eAAgB,8BAChBzC,UAAW,2BAGfjkC,OA9Ba,WA+BX,IAAM7B,EAAS3D,KACfmkB,EAAMzI,OAAO/X,EAAQ,CACnBpC,WAAY,CACVq7B,KAAMgN,GAAWhN,KAAKhV,KAAKjkB,GAC3B2K,OAAQs7B,GAAWt7B,OAAOsZ,KAAKjkB,GAC/BP,OAAQwmC,GAAWxmC,OAAOwkB,KAAKjkB,GAC/BZ,QAAS6mC,GAAW7mC,QAAQ6kB,KAAKjkB,GACjC2mC,mBAAoB,MAI1B3qB,GAAI,CACFid,KADE,WAEA,IAAMj5B,EAAS3D,KACf2D,EAAOpC,WAAWq7B,OAClBj5B,EAAOpC,WAAW+M,SAClB3K,EAAOpC,WAAW6B,UAEpBo4C,kBAPE,WAQA,IAAM73C,EAAS3D,MACX2D,EAAO4hB,OAAOjjB,MAEqB,qBAArBqB,EAAOgpB,YADvBhpB,EAAOpC,WAAW6B,UAKtBq4C,gBAfE,WAgBez7C,KACHulB,OAAOjjB,MADJtC,KAENuB,WAAW6B,UAGtBs4C,mBArBE,WAsBA,IAAM/3C,EAAS3D,KACX2D,EAAO4hB,OAAOjjB,OAChBqB,EAAOpC,WAAW+M,SAClB3K,EAAOpC,WAAW6B,WAGtBu4C,qBA5BE,WA6BA,IAAMh4C,EAAS3D,KACV2D,EAAO4hB,OAAOjjB,OACjBqB,EAAOpC,WAAW+M,SAClB3K,EAAOpC,WAAW6B,WAGtBL,QAnCE,WAoCe/C,KACRuB,WAAWwB,WAEpBoyC,MAvCE,SAuCI18C,GACJ,IAAMkL,EAAS3D,KAEb2D,EAAO4hB,OAAOhkB,WAAW0C,IACtBN,EAAO4hB,OAAOhkB,WAAW45C,aACzBx3C,EAAOpC,WAAW8mB,IAAI32B,OAAS,IAC9BusB,EAAExlB,EAAEjG,QAAQ0oB,SAASvX,EAAO4hB,OAAOhkB,WAAWsqC,gBAGjC,IADAloC,EAAOpC,WAAW8mB,IAAInN,SAASvX,EAAO4hB,OAAOhkB,WAAW8qC,aAEvE1oC,EAAOipB,KAAK,iBAAkBjpB,GAE9BA,EAAOipB,KAAK,iBAAkBjpB,GAEhCA,EAAOpC,WAAW8mB,IAAI1J,YAAYhb,EAAO4hB,OAAOhkB,WAAW8qC,iBCzFpD,CACb/9C,KAAM,YACNi3B,OAAQ,CACNpjB,UAAW,CACT8B,GAAI,KACJsoC,SAAU,OACVK,MAAM,EACNl9B,WAAW,EACX+9B,eAAe,EACfhE,UAAW,wBACXqE,UAAW,0BAGftoC,OAba,WAcX,IAAM7B,EAAS3D,KACfmkB,EAAMzI,OAAO/X,EAAQ,CACnBxB,UAAW,CACTy6B,KAAM0P,GAAU1P,KAAKhV,KAAKjkB,GAC1BZ,QAASupC,GAAUvpC,QAAQ6kB,KAAKjkB,GAChCykB,WAAYkkB,GAAUlkB,WAAWR,KAAKjkB,GACtC+sB,aAAc4b,GAAU5b,aAAa9I,KAAKjkB,GAC1C2pB,cAAegf,GAAUhf,cAAc1F,KAAKjkB,GAC5C+pC,gBAAiBpB,GAAUoB,gBAAgB9lB,KAAKjkB,GAChDiqC,iBAAkBtB,GAAUsB,iBAAiBhmB,KAAKjkB,GAClDupC,gBAAiBZ,GAAUY,gBAAgBtlB,KAAKjkB,GAChDspC,mBAAoBX,GAAUW,mBAAmBrlB,KAAKjkB,GACtD0pC,YAAaf,GAAUe,YAAYzlB,KAAKjkB,GACxC4pC,WAAYjB,GAAUiB,WAAW3lB,KAAKjkB,GACtC6pC,UAAWlB,GAAUkB,UAAU5lB,KAAKjkB,GACpCkzB,WAAW,EACX7f,QAAS,KACTs2B,YAAa,SAInB3tB,GAAI,CACFid,KADE,WAEA,IAAMj5B,EAAS3D,KACf2D,EAAOxB,UAAUy6B,OACjBj5B,EAAOxB,UAAUimB,aACjBzkB,EAAOxB,UAAUuuB,gBAEnBttB,OAPE,WAQepD,KACRmC,UAAUimB,cAEnB8Z,OAXE,WAYeliC,KACRmC,UAAUimB,cAEnBsa,eAfE,WAgBe1iC,KACRmC,UAAUimB,cAEnBsI,aAnBE,WAoBe1wB,KACRmC,UAAUuuB,gBAEnBpD,cAvBE,SAuBY9N,GACGxf,KACRmC,UAAUmrB,cAAc9N,IAEjCzc,QA3BE,WA4Be/C,KACRmC,UAAUY,aCrPR,CACbzU,KAAM,WACNi3B,OAAQ,CACN/jB,SAAU,CACRynB,SAAS,IAGbzjB,OAPa,WAQX,IAAM7B,EAAS3D,KACfmkB,EAAMzI,OAAO/X,EAAQ,CACnBnC,SAAU,CACRysC,aAAcD,GAASC,aAAarmB,KAAKjkB,GACzC+sB,aAAcsd,GAAStd,aAAa9I,KAAKjkB,GACzC2pB,cAAe0gB,GAAS1gB,cAAc1F,KAAKjkB,OAIjDgc,GAAI,CACFklB,WADE,WAEA,IAAMlhC,EAAS3D,KACV2D,EAAO4hB,OAAO/jB,SAASynB,UAC5BtlB,EAAO4hB,OAAOwH,qBAAsB,EACpCppB,EAAOw6B,eAAepR,qBAAsB,IAE9C6P,KAPE,WAQe58B,KACHulB,OAAO/jB,SAASynB,SADbjpB,KAERwB,SAASkvB,gBAElBA,aAZE,WAae1wB,KACHulB,OAAO/jB,SAASynB,SADbjpB,KAERwB,SAASkvB,gBAElBpD,cAjBE,SAiBY9N,GACGxf,KACHulB,OAAO/jB,SAASynB,SADbjpB,KAERwB,SAAS8rB,cAAc9N,MCqUrB,CACblxB,KAAM,OACNi3B,OAAQ,CACNspB,KAAM,CACJ5lB,SAAS,EACTmmB,SAAU,EACV1Q,SAAU,EACV9f,QAAQ,EACRzd,eAAgB,wBAChBowC,iBAAkB,wBAGtB/rC,OAZa,WAaX,IAAM7B,EAAS3D,KACT6uC,EAAO,CACX5lB,SAAS,EACToiB,MAAO,EACP8C,aAAc,EACdkB,WAAW,EACXP,QAAS,CACPvK,cAAUzqC,EACV41C,gBAAY51C,EACZ61C,iBAAa71C,EACbo1C,cAAUp1C,EACVq1C,kBAAcr1C,EACds1C,SAAU,GAEZ7P,MAAO,CACL1I,eAAW/8B,EACXg9B,aAASh9B,EACTq9B,cAAUr9B,EACVw9B,cAAUx9B,EACVg2C,UAAMh2C,EACNk2C,UAAMl2C,EACNi2C,UAAMj2C,EACNm2C,UAAMn2C,EACN9F,WAAO8F,EACP7F,YAAQ6F,EACR09B,YAAQ19B,EACR29B,YAAQ39B,EACR21C,aAAc,GACdS,eAAgB,IAElBzV,SAAU,CACRvyB,OAAGpO,EACHqO,OAAGrO,EACHq2C,mBAAer2C,EACfs2C,mBAAet2C,EACfu2C,cAAUv2C,IAIb,+HAAgI8E,MAAM,KAAKC,SAAQ,SAACqlB,GACnJ2qB,EAAK3qB,GAAcoqB,GAAKpqB,GAAY0D,KAAKjkB,MAE3CwgB,EAAMzI,OAAO/X,EAAQ,CACnBkrC,KAAAA,IAGF,IAAIxD,EAAQ,EACZ78C,OAAOkS,eAAeiD,EAAOkrC,KAAM,QAAS,CAC1C/oC,IAD0C,WAExC,OAAOulC,GAETuQ,IAJ0C,SAItC9mD,GACF,GAAIu2C,IAAUv2C,EAAO,CACnB,IAAMqqC,EAAUx7B,EAAOkrC,KAAKC,QAAQI,SAAWvrC,EAAOkrC,KAAKC,QAAQI,SAAS,QAAKp1C,EAC3EynC,EAAU59B,EAAOkrC,KAAKC,QAAQvK,SAAW5gC,EAAOkrC,KAAKC,QAAQvK,SAAS,QAAKzqC,EACjF6J,EAAOipB,KAAK,aAAc93B,EAAOqqC,EAASoC,GAE5C8J,EAAQv2C,MAId6qB,GAAI,CACFid,KADE,WAEe58B,KACJulB,OAAOspB,KAAK5lB,SADRjpB,KAEN6uC,KAAKtI,UAGhBxjC,QAPE,WAQe/C,KACR6uC,KAAKrI,WAEdqV,WAXE,SAWSpjD,GACMuH,KACH6uC,KAAK5lB,SADFjpB,KAER6uC,KAAKhgC,aAAapW,IAE3BqjD,SAhBE,SAgBOrjD,GACQuH,KACH6uC,KAAK5lB,SADFjpB,KAER6uC,KAAKtR,WAAW9kC,IAEzBsjD,UArBE,SAqBQtjD,GACR,IAAMkL,EAAS3D,KACX2D,EAAO4hB,OAAOspB,KAAK5lB,SAAWtlB,EAAOkrC,KAAK5lB,SAAWtlB,EAAO4hB,OAAOspB,KAAKjwB,QAC1Ejb,EAAOkrC,KAAKjwB,OAAOnmB,IAGvB6oB,cA3BE,WA4BA,IAAM3d,EAAS3D,KACX2D,EAAOkrC,KAAK5lB,SAAWtlB,EAAO4hB,OAAOspB,KAAK5lB,SAC5CtlB,EAAOkrC,KAAK52B,mBAGhB+jC,YAjCE,WAkCA,IAAMr4C,EAAS3D,KACX2D,EAAOkrC,KAAK5lB,SAAWtlB,EAAO4hB,OAAOspB,KAAK5lB,SAAWtlB,EAAO4hB,OAAOkE,SACrE9lB,EAAOkrC,KAAK52B,qBCvZL,CACb3pB,KAAM,OACNi3B,OAAQ,CACNye,KAAM,CACJ/a,SAAS,EACT6pB,cAAc,EACdC,mBAAoB,EACpBkJ,uBAAuB,EAEvBnK,aAAc,cACdE,aAAc,sBACdD,YAAa,qBACbQ,eAAgB,0BAGpB/sC,OAfa,WAgBX,IAAM7B,EAAS3D,KACfmkB,EAAMzI,OAAO/X,EAAQ,CACnBqgC,KAAM,CACJ4O,oBAAoB,EACpB3O,KAAMyN,GAAKzN,KAAKrc,KAAKjkB,GACrBguC,YAAaD,GAAKC,YAAY/pB,KAAKjkB,OAIzCgc,GAAI,CACFklB,WADE,WAEA,IAAMlhC,EAAS3D,KACX2D,EAAO4hB,OAAOye,KAAK/a,SAAWtlB,EAAO4hB,OAAOwX,gBAC9Cp5B,EAAO4hB,OAAOwX,eAAgB,IAGlCH,KAPE,WAQA,IAAMj5B,EAAS3D,KACX2D,EAAO4hB,OAAOye,KAAK/a,UAAYtlB,EAAO4hB,OAAOjjB,MAAuC,IAA/BqB,EAAO4hB,OAAOmM,cACrE/tB,EAAOqgC,KAAKC,QAGhBiY,OAbE,WAcA,IAAMv4C,EAAS3D,KACX2D,EAAO4hB,OAAOsU,WAAal2B,EAAO4hB,OAAO+V,gBAC3C33B,EAAOqgC,KAAKC,QAGhB/B,OAnBE,WAoBeliC,KACJulB,OAAOye,KAAK/a,SADRjpB,KAENgkC,KAAKC,QAGhBkY,kBAzBE,WA0Ben8C,KACJulB,OAAOye,KAAK/a,SADRjpB,KAENgkC,KAAKC,QAGhBxS,gBA/BE,WAgCA,IAAM9tB,EAAS3D,KACX2D,EAAO4hB,OAAOye,KAAK/a,UACjBtlB,EAAO4hB,OAAOye,KAAKiY,wBAA2Bt4C,EAAO4hB,OAAOye,KAAKiY,wBAA0Bt4C,EAAOqgC,KAAK4O,qBACzGjvC,EAAOqgC,KAAKC,QAIlB3iB,cAvCE,WAwCA,IAAM3d,EAAS3D,KACX2D,EAAO4hB,OAAOye,KAAK/a,UAAYtlB,EAAO4hB,OAAOye,KAAKiY,uBACpDt4C,EAAOqgC,KAAKC,QAGhB+X,YA7CE,WA8CA,IAAMr4C,EAAS3D,KACX2D,EAAO4hB,OAAOye,KAAK/a,SAAWtlB,EAAO4hB,OAAOkE,SAC9C9lB,EAAOqgC,KAAKC,UWlND,GTmJJ,CACb31C,KAAM,OACNi3B,OAAQ,CACN8uB,KAAM,CACJprB,SAAS,EACTmzB,kBAAmB,sBACnBlH,iBAAkB,iBAClBF,iBAAkB,aAClBC,kBAAmB,0BACnBF,iBAAkB,yBAClBW,wBAAyB,0BAG7BlwC,OAba,WAcX,IAAM7B,EAAS3D,KACfmkB,EAAMzI,OAAO/X,EAAQ,CACnB0wC,KAAM,CACJgB,WAAYp3B,EAAE,gBAAD,OAAiBta,EAAO4hB,OAAO8uB,KAAK+H,kBAApC,0DAGjB5tD,OAAOuQ,KAAKs1C,IAAMx1C,SAAQ,SAACqlB,GACzBvgB,EAAO0wC,KAAKnwB,GAAcmwB,GAAKnwB,GAAY0D,KAAKjkB,OAGpDgc,GAAI,CACFid,KADE,WAEA,IAAMj5B,EAAS3D,KACV2D,EAAO4hB,OAAO8uB,KAAKprB,UACxBtlB,EAAO0wC,KAAKzX,OACZj5B,EAAO0wC,KAAKiB,qBAEd8F,OAPE,WAQep7C,KACHulB,OAAO8uB,KAAKprB,SADTjpB,KAERq0C,KAAKiB,oBAEd+F,SAZE,WAaer7C,KACHulB,OAAO8uB,KAAKprB,SADTjpB,KAERq0C,KAAKiB,oBAEd+G,iBAjBE,WAkBer8C,KACHulB,OAAO8uB,KAAKprB,SADTjpB,KAERq0C,KAAKkB,oBAEdxyC,QAtBE,WAuBe/C,KACHulB,OAAO8uB,KAAKprB,SADTjpB,KAERq0C,KAAKtxC,aC9HH,CACbzU,KAAM,UACNi3B,OAAQ,CACNlI,QAAS,CACP4L,SAAS,EACT3L,cAAc,EACdvsB,IAAK,WAGTyU,OATa,WAUX,IAAM7B,EAAS3D,KACfmkB,EAAMzI,OAAO/X,EAAQ,CACnB0Z,QAAS,CACPuf,KAAM+Y,GAAQ/Y,KAAKhV,KAAKjkB,GACxBwyC,WAAYR,GAAQQ,WAAWvuB,KAAKjkB,GACpCqyC,mBAAoBL,GAAQK,mBAAmBpuB,KAAKjkB,GACpDoyC,cAAeJ,GAAQI,cAAcnuB,KAAKjkB,GAC1CZ,QAAS4yC,GAAQ5yC,QAAQ6kB,KAAKjkB,OAIpCgc,GAAI,CACFid,KADE,WAEe58B,KACJulB,OAAOlI,QAAQ4L,SADXjpB,KAENqd,QAAQuf,QAGnB75B,QAPE,WAQe/C,KACJulB,OAAOlI,QAAQ4L,SADXjpB,KAENqd,QAAQta,WAGnBue,cAbE,WAcA,IAAM3d,EAAS3D,KACX2D,EAAO0Z,QAAQ4S,aACjBtsB,EAAO0Z,QAAQ84B,WAAWxyC,EAAO4hB,OAAOlI,QAAQtsB,IAAK4S,EAAOJ,cAGhEy4C,YAnBE,WAoBA,IAAMr4C,EAAS3D,KACX2D,EAAO0Z,QAAQ4S,aAAetsB,EAAO4hB,OAAOkE,SAC9C9lB,EAAO0Z,QAAQ84B,WAAWxyC,EAAO4hB,OAAOlI,QAAQtsB,IAAK4S,EAAOJ,gBCrErD,CACbjV,KAAM,kBACNi3B,OAAQ,CACNqwB,eAAgB,CACd3sB,SAAS,EACT3L,cAAc,EACdo5B,YAAY,IAGhBlxC,OATa,WAUX,IAAM7B,EAAS3D,KACfmkB,EAAMzI,OAAO/X,EAAQ,CACnBiyC,eAAgB,CACd3lB,aAAa,EACb2M,KAAM0Z,GAAe1Z,KAAKhV,KAAKjkB,GAC/BZ,QAASuzC,GAAevzC,QAAQ6kB,KAAKjkB,GACrC8yC,QAASH,GAAeG,QAAQ7uB,KAAKjkB,GACrC4yC,YAAaD,GAAeC,YAAY3uB,KAAKjkB,OAInDgc,GAAI,CACFid,KADE,WAEe58B,KACJulB,OAAOqwB,eAAe3sB,SADlBjpB,KAEN41C,eAAehZ,QAG1B75B,QAPE,WAQe/C,KACJulB,OAAOqwB,eAAe3sB,SADlBjpB,KAEN41C,eAAe7yC,WAG1Bue,cAbE,WAcethB,KACJ41C,eAAe3lB,aADXjwB,KAEN41C,eAAea,WAG1BuF,YAnBE,WAoBA,IAAMr4C,EAAS3D,KACX2D,EAAOiyC,eAAe3lB,aAAetsB,EAAO4hB,OAAOkE,SACrD9lB,EAAOiyC,eAAea,aClBf,CACbnoD,KAAM,WACNi3B,OAAQ,CACN4W,SAAU,CACRlT,SAAS,EACT1E,MAAO,IACPyyB,mBAAmB,EACnBsF,sBAAsB,EACtBxF,iBAAiB,EACjBD,kBAAkB,IAGtBrxC,OAZa,WAaX,IAAM7B,EAAS3D,KACfmkB,EAAMzI,OAAO/X,EAAQ,CACnBw4B,SAAU,CACRC,SAAS,EACTC,QAAQ,EACRC,IAAKqa,GAASra,IAAI1U,KAAKjkB,GACvB85B,MAAOkZ,GAASlZ,MAAM7V,KAAKjkB,GAC3BqlC,KAAM2N,GAAS3N,KAAKphB,KAAKjkB,GACzBozC,MAAOJ,GAASI,MAAMnvB,KAAKjkB,GAC3B44C,mBAPQ,WAQ2B,WAA7BxpD,SAASypD,iBAAgC74C,EAAOw4B,SAASC,SAC3Dz4B,EAAOw4B,SAAS4a,QAEe,YAA7BhkD,SAASypD,iBAAiC74C,EAAOw4B,SAASE,SAC5D14B,EAAOw4B,SAASG,MAChB34B,EAAOw4B,SAASE,QAAS,IAG7BpkB,gBAhBQ,SAgBQxf,GACTkL,IAAUA,EAAO6tB,WAAc7tB,EAAOglB,YACvClwB,EAAEjG,SAAWwN,OACjB2D,EAAOglB,WAAW,GAAGnc,oBAAoB,gBAAiB7I,EAAOw4B,SAASlkB,iBAC1EtU,EAAOglB,WAAW,GAAGnc,oBAAoB,sBAAuB7I,EAAOw4B,SAASlkB,iBAChFtU,EAAOw4B,SAASE,QAAS,EACpB14B,EAAOw4B,SAASC,QAGnBz4B,EAAOw4B,SAASG,MAFhB34B,EAAOw4B,SAAS6M,aAQ1BrpB,GAAI,CACFid,KADE,WAEA,IAAMj5B,EAAS3D,KACX2D,EAAO4hB,OAAO4W,SAASlT,UACzBtlB,EAAOw4B,SAASsB,QAChB1qC,SAASwW,iBAAiB,mBAAoB5F,EAAOw4B,SAASogB,sBAGlEE,sBARE,SAQoBtvB,EAAO8D,GAC3B,IAAMttB,EAAS3D,KACX2D,EAAOw4B,SAASC,UACdnL,IAAattB,EAAO4hB,OAAO4W,SAASmgB,qBACtC34C,EAAOw4B,SAAS4a,MAAM5pB,GAEtBxpB,EAAOw4B,SAAS6M,SAItB0T,gBAlBE,WAmBA,IAAM/4C,EAAS3D,KACX2D,EAAOw4B,SAASC,UACdz4B,EAAO4hB,OAAO4W,SAASmgB,qBACzB34C,EAAOw4B,SAAS6M,OAEhBrlC,EAAOw4B,SAAS4a,UAItB+E,SA5BE,WA6BA,IAAMn4C,EAAS3D,KACX2D,EAAO4hB,OAAOkE,SAAW9lB,EAAOw4B,SAASE,SAAW14B,EAAO4hB,OAAO4W,SAASmgB,sBAC7E34C,EAAOw4B,SAASG,OAGpBv5B,QAlCE,WAmCA,IAAMY,EAAS3D,KACX2D,EAAOw4B,SAASC,SAClBz4B,EAAOw4B,SAAS6M,OAElBj2C,SAASyZ,oBAAoB,mBAAoB7I,EAAOw4B,SAASogB,uBCxHxD,CACbjuD,KAAM,cACNi3B,OAAQ,CACN8xB,WAAY,CACVC,WAAW,IAGf9xC,OAPa,WAQX,IAAM7B,EAAS3D,KACfmkB,EAAMzI,OAAO/X,EAAQ,CACnB0zC,WAAY,CACV3mB,aAAcumB,GAAKvmB,aAAa9I,KAAKjkB,GACrC2pB,cAAe2pB,GAAK3pB,cAAc1F,KAAKjkB,OAI7Cgc,GAAI,CACFklB,WADE,WAEA,IAAMlhC,EAAS3D,KACf,GAA6B,SAAzB2D,EAAO4hB,OAAO0G,OAAlB,CACAtoB,EAAOY,WAAW5S,KAAlB,UAA0BgS,EAAO4hB,OAAO2X,uBAAxC,SACA,IAAM4H,EAAkB,CACtBra,cAAe,EACfD,gBAAiB,EACjBU,eAAgB,EAChB6B,qBAAqB,EACrB/C,aAAc,EACdwG,kBAAkB,GAEpBrM,EAAMzI,OAAO/X,EAAO4hB,OAAQuf,GAC5B3gB,EAAMzI,OAAO/X,EAAOw6B,eAAgB2G,KAEtCpU,aAhBE,WAkB6B,SADd1wB,KACJulB,OAAO0G,QADHjsB,KAERq3C,WAAW3mB,gBAEpBpD,cArBE,SAqBY9N,GAEiB,SADdxf,KACJulB,OAAO0G,QADHjsB,KAERq3C,WAAW/pB,cAAc9N,MC4CvB,CACblxB,KAAM,cACNi3B,OAAQ,CACNsyB,WAAY,CACVK,cAAc,EACdH,QAAQ,EACRM,aAAc,GACdC,YAAa,MAGjB9yC,OAVa,WAWX,IAAM7B,EAAS3D,KACfmkB,EAAMzI,OAAO/X,EAAQ,CACnBk0C,WAAY,CACVnnB,aAAc+mB,GAAK/mB,aAAa9I,KAAKjkB,GACrC2pB,cAAemqB,GAAKnqB,cAAc1F,KAAKjkB,OAI7Cgc,GAAI,CACFklB,WADE,WAEA,IAAMlhC,EAAS3D,KACf,GAA6B,SAAzB2D,EAAO4hB,OAAO0G,OAAlB,CACAtoB,EAAOY,WAAW5S,KAAlB,UAA0BgS,EAAO4hB,OAAO2X,uBAAxC,SACAv5B,EAAOY,WAAW5S,KAAlB,UAA0BgS,EAAO4hB,OAAO2X,uBAAxC,OACA,IAAM4H,EAAkB,CACtBra,cAAe,EACfD,gBAAiB,EACjBU,eAAgB,EAChB6B,qBAAqB,EACrB2M,gBAAiB,EACjB1P,aAAc,EACd+B,gBAAgB,EAChByE,kBAAkB,GAEpBrM,EAAMzI,OAAO/X,EAAO4hB,OAAQuf,GAC5B3gB,EAAMzI,OAAO/X,EAAOw6B,eAAgB2G,KAEtCpU,aAnBE,WAqB6B,SADd1wB,KACJulB,OAAO0G,QADHjsB,KAER63C,WAAWnnB,gBAEpBpD,cAxBE,SAwBY9N,GAEiB,SADdxf,KACJulB,OAAO0G,QADHjsB,KAER63C,WAAWvqB,cAAc9N,MCtGvB,CACblxB,KAAM,cACNi3B,OAAQ,CACNuzB,WAAY,CACVZ,cAAc,EACda,eAAe,IAGnBvzC,OARa,WASX,IAAM7B,EAAS3D,KACfmkB,EAAMzI,OAAO/X,EAAQ,CACnBm1C,WAAY,CACVpoB,aAAcmoB,GAAKnoB,aAAa9I,KAAKjkB,GACrC2pB,cAAeurB,GAAKvrB,cAAc1F,KAAKjkB,OAI7Cgc,GAAI,CACFklB,WADE,WAEA,IAAMlhC,EAAS3D,KACf,GAA6B,SAAzB2D,EAAO4hB,OAAO0G,OAAlB,CACAtoB,EAAOY,WAAW5S,KAAlB,UAA0BgS,EAAO4hB,OAAO2X,uBAAxC,SACAv5B,EAAOY,WAAW5S,KAAlB,UAA0BgS,EAAO4hB,OAAO2X,uBAAxC,OACA,IAAM4H,EAAkB,CACtBra,cAAe,EACfD,gBAAiB,EACjBU,eAAgB,EAChB6B,qBAAqB,EACrB/C,aAAc,EACdwG,kBAAkB,GAEpBrM,EAAMzI,OAAO/X,EAAO4hB,OAAQuf,GAC5B3gB,EAAMzI,OAAO/X,EAAOw6B,eAAgB2G,KAEtCpU,aAjBE,WAmB6B,SADd1wB,KACJulB,OAAO0G,QADHjsB,KAER84C,WAAWpoB,gBAEpBpD,cAtBE,SAsBY9N,GAEiB,SADdxf,KACJulB,OAAO0G,QADHjsB,KAER84C,WAAWxrB,cAAc9N,MClCvB,CACblxB,KAAM,mBACNi3B,OAAQ,CACN4zB,gBAAiB,CACfE,OAAQ,GACRK,QAAS,EACTJ,MAAO,IACPjO,MAAO,EACPmO,SAAU,EACVtB,cAAc,IAGlB1yC,OAZa,WAaX,IAAM7B,EAAS3D,KACfmkB,EAAMzI,OAAO/X,EAAQ,CACnBw1C,gBAAiB,CACfzoB,aAAcwoB,GAAUxoB,aAAa9I,KAAKjkB,GAC1C2pB,cAAe4rB,GAAU5rB,cAAc1F,KAAKjkB,OAIlDgc,GAAI,CACFklB,WADE,WAEA,IAAMlhC,EAAS3D,KACc,cAAzB2D,EAAO4hB,OAAO0G,SAElBtoB,EAAOY,WAAW5S,KAAlB,UAA0BgS,EAAO4hB,OAAO2X,uBAAxC,cACAv5B,EAAOY,WAAW5S,KAAlB,UAA0BgS,EAAO4hB,OAAO2X,uBAAxC,OAEAv5B,EAAO4hB,OAAOwH,qBAAsB,EACpCppB,EAAOw6B,eAAepR,qBAAsB,IAE9C2D,aAXE,WAa6B,cADd1wB,KACJulB,OAAO0G,QADHjsB,KAERm5C,gBAAgBzoB,gBAEzBpD,cAhBE,SAgBY9N,GAEiB,cADdxf,KACJulB,OAAO0G,QADHjsB,KAERm5C,gBAAgB7rB,cAAc9N,MCuB5B,CACblxB,KAAM,SACNi3B,OAAQ,CACN/T,OAAQ,CACN7N,OAAQ,KACRs3C,sBAAsB,EACtBR,iBAAkB,EAClBH,sBAAuB,4BACvBH,qBAAsB,4BAG1B30C,OAXa,WAYX,IAAM7B,EAAS3D,KACfmkB,EAAMzI,OAAO/X,EAAQ,CACnB6N,OAAQ,CACN7N,OAAQ,KACRi5B,KAAMod,GAAOpd,KAAKhV,KAAKjkB,GACvBP,OAAQ42C,GAAO52C,OAAOwkB,KAAKjkB,GAC3By2C,aAAcJ,GAAOI,aAAaxyB,KAAKjkB,OAI7Cgc,GAAI,CACFklB,WADE,WAEA,IAAMlhC,EAAS3D,KACPwR,EAAW7N,EAAO4hB,OAAlB/T,OACHA,GAAWA,EAAO7N,SACvBA,EAAO6N,OAAOorB,OACdj5B,EAAO6N,OAAOpO,QAAO,KAEvB44C,YARE,WASeh8C,KACHwR,OAAO7N,QADJ3D,KAERwR,OAAOpO,UAEhBA,OAbE,WAcepD,KACHwR,OAAO7N,QADJ3D,KAERwR,OAAOpO,UAEhB8+B,OAlBE,WAmBeliC,KACHwR,OAAO7N,QADJ3D,KAERwR,OAAOpO,UAEhBs/B,eAvBE,WAwBe1iC,KACHwR,OAAO7N,QADJ3D,KAERwR,OAAOpO,UAEhBkqB,cA5BE,SA4BY9N,GACZ,IACM66B,EADSr6C,KACawR,OAAO7N,OAC9B02C,GACLA,EAAa/sB,cAAc9N,IAE7Bm9B,cAlCE,WAmCA,IACMtC,EADSr6C,KACawR,OAAO7N,OAC9B02C,GAFUr6C,KAGJwR,OAAO0oC,eAAiBG,GACjCA,EAAat3C,cCzLK,qBAAfi9B,EAAOjY,MAChBiY,EAAOjY,IAAMiY,EAAOvhB,MAAMsJ,IAC1BiY,EAAO7X,cAAgB6X,EAAOvhB,MAAM0J,eAGtC6X,EAAOjY,IAAID","sources":["../node_modules/@luxottica/bipa-manager/src/errors/errors.ts","../node_modules/@luxottica/bipa-manager/src/constants/DefaultPrivacyLocalization.ts","../node_modules/@luxottica/bipa-manager/src/helpers/LocalizationHelper.ts","../node_modules/@luxottica/bipa-manager/src/interfaces/PrivacyLocalization.ts","../node_modules/@luxottica/bipa-manager/src/helpers/ParameterHelper.ts","../node_modules/@luxottica/bipa-manager/src/components/YesNoCheckbox.tsx","../node_modules/@luxottica/bipa-manager/src/constants/Styling.ts","../node_modules/@luxottica/bipa-manager/src/helpers/CookieHelper.ts","../node_modules/@luxottica/bipa-manager/src/helpers/RequestHelper.ts","../node_modules/@luxottica/bipa-manager/src/components/Icons/ErrorIcon.tsx","../node_modules/@luxottica/bipa-manager/src/components/Icons/RoundedCloseIcon.tsx","../node_modules/@luxottica/bipa-manager/src/components/Icons/RoundedCheckIcon.tsx","../node_modules/@luxottica/bipa-manager/src/components/BipaFormInput.tsx","../node_modules/@luxottica/bipa-manager/src/components/BipaForm.tsx","../node_modules/@luxottica/bipa-manager/src/components/Button.tsx","../node_modules/@luxottica/bipa-manager/src/components/Icons/RoundedSubtractIcon.tsx","../node_modules/@luxottica/bipa-manager/src/components/Icons/RoundedPlusIcon.tsx","../node_modules/@luxottica/bipa-manager/src/components/Accordion/Accordion.tsx","../node_modules/@luxottica/bipa-manager/src/components/Icons/CloseIcon.tsx","../node_modules/@luxottica/bipa-manager/src/PrivacyPolicyOverlay.tsx","../node_modules/object-assign/index.js","../node_modules/react-i18next/dist/es/I18nextProvider.js","../node_modules/react-id-swiper/lib/ReactIdSwiper.js","../node_modules/react-id-swiper/lib/index.js","../node_modules/react-id-swiper/lib/utils.js","../node_modules/react-range/lib/Range.js","../node_modules/react-range/lib/index.js","../node_modules/react-range/lib/types.js","../node_modules/react-range/lib/utils.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/dom-helpers/esm/removeClass.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/react-transition-group/esm/CSSTransition.js","../node_modules/dom-helpers/esm/addClass.js","../node_modules/dom-helpers/esm/hasClass.js","../node_modules/ssr-window/dist/ssr-window.esm.js","../node_modules/dom7/dist/dom7.modular.js","../node_modules/swiper/src/utils/dom.js","../node_modules/swiper/src/utils/utils.js","../node_modules/swiper/src/utils/support.js","../node_modules/swiper/src/utils/class.js","../node_modules/swiper/src/components/core/update/index.js","../node_modules/swiper/src/components/core/update/updateSize.js","../node_modules/swiper/src/components/core/update/updateSlides.js","../node_modules/swiper/src/components/core/update/updateAutoHeight.js","../node_modules/swiper/src/components/core/update/updateSlidesOffset.js","../node_modules/swiper/src/components/core/update/updateSlidesProgress.js","../node_modules/swiper/src/components/core/update/updateProgress.js","../node_modules/swiper/src/components/core/update/updateSlidesClasses.js","../node_modules/swiper/src/components/core/update/updateActiveIndex.js","../node_modules/swiper/src/components/core/update/updateClickedSlide.js","../node_modules/swiper/src/components/core/translate/index.js","../node_modules/swiper/src/components/core/translate/getTranslate.js","../node_modules/swiper/src/components/core/translate/setTranslate.js","../node_modules/swiper/src/components/core/translate/minTranslate.js","../node_modules/swiper/src/components/core/translate/maxTranslate.js","../node_modules/swiper/src/components/core/translate/translateTo.js","../node_modules/swiper/src/components/core/transition/index.js","../node_modules/swiper/src/components/core/transition/setTransition.js","../node_modules/swiper/src/components/core/transition/transitionStart.js","../node_modules/swiper/src/components/core/transition/transitionEnd.js","../node_modules/swiper/src/components/core/slide/index.js","../node_modules/swiper/src/components/core/slide/slideTo.js","../node_modules/swiper/src/components/core/slide/slideToLoop.js","../node_modules/swiper/src/components/core/slide/slideNext.js","../node_modules/swiper/src/components/core/slide/slidePrev.js","../node_modules/swiper/src/components/core/slide/slideReset.js","../node_modules/swiper/src/components/core/slide/slideToClosest.js","../node_modules/swiper/src/components/core/slide/slideToClickedSlide.js","../node_modules/swiper/src/components/core/loop/index.js","../node_modules/swiper/src/components/core/loop/loopCreate.js","../node_modules/swiper/src/components/core/loop/loopFix.js","../node_modules/swiper/src/components/core/loop/loopDestroy.js","../node_modules/swiper/src/components/core/grab-cursor/index.js","../node_modules/swiper/src/components/core/grab-cursor/setGrabCursor.js","../node_modules/swiper/src/components/core/grab-cursor/unsetGrabCursor.js","../node_modules/swiper/src/components/core/manipulation/index.js","../node_modules/swiper/src/components/core/manipulation/appendSlide.js","../node_modules/swiper/src/components/core/manipulation/prependSlide.js","../node_modules/swiper/src/components/core/manipulation/addSlide.js","../node_modules/swiper/src/components/core/manipulation/removeSlide.js","../node_modules/swiper/src/components/core/manipulation/removeAllSlides.js","../node_modules/swiper/src/utils/device.js","../node_modules/swiper/src/components/core/events/onTouchStart.js","../node_modules/swiper/src/components/core/events/onTouchMove.js","../node_modules/swiper/src/components/core/events/onTouchEnd.js","../node_modules/swiper/src/components/core/events/onResize.js","../node_modules/swiper/src/components/core/events/onClick.js","../node_modules/swiper/src/components/core/events/onScroll.js","../node_modules/swiper/src/components/core/events/index.js","../node_modules/swiper/src/components/core/check-overflow/index.js","../node_modules/swiper/src/components/core/defaults.js","../node_modules/swiper/src/components/core/core-class.js","../node_modules/swiper/src/components/core/breakpoints/index.js","../node_modules/swiper/src/components/core/breakpoints/setBreakpoint.js","../node_modules/swiper/src/components/core/breakpoints/getBreakpoint.js","../node_modules/swiper/src/components/core/classes/index.js","../node_modules/swiper/src/components/core/classes/addClasses.js","../node_modules/swiper/src/components/core/classes/removeClasses.js","../node_modules/swiper/src/components/core/images/index.js","../node_modules/swiper/src/components/core/images/loadImage.js","../node_modules/swiper/src/components/core/images/preloadImages.js","../node_modules/swiper/src/modules/device/device.js","../node_modules/swiper/src/modules/support/support.js","../node_modules/swiper/src/utils/browser.js","../node_modules/swiper/src/modules/browser/browser.js","../node_modules/swiper/src/modules/resize/resize.js","../node_modules/swiper/src/modules/observer/observer.js","../node_modules/swiper/src/components/virtual/virtual.js","../node_modules/swiper/src/components/keyboard/keyboard.js","../node_modules/swiper/src/components/mousewheel/mousewheel.js","../node_modules/swiper/src/components/navigation/navigation.js","../node_modules/swiper/src/components/pagination/pagination.js","../node_modules/swiper/src/components/scrollbar/scrollbar.js","../node_modules/swiper/src/components/parallax/parallax.js","../node_modules/swiper/src/components/zoom/zoom.js","../node_modules/swiper/src/components/lazy/lazy.js","../node_modules/swiper/src/components/controller/controller.js","../node_modules/swiper/src/components/a11y/a11y.js","../node_modules/swiper/src/components/history/history.js","../node_modules/swiper/src/components/hash-navigation/hash-navigation.js","../node_modules/swiper/src/components/autoplay/autoplay.js","../node_modules/swiper/src/components/effect-fade/effect-fade.js","../node_modules/swiper/src/components/effect-cube/effect-cube.js","../node_modules/swiper/src/components/effect-flip/effect-flip.js","../node_modules/swiper/src/components/effect-coverflow/effect-coverflow.js","../node_modules/swiper/src/components/thumbs/thumbs.js","../node_modules/swiper/src/swiper.js"],"sourcesContent":["import { FieldError } from '../interfaces/FieldError';\n\nclass BipaError extends Error {\n public type: string;\n\n constructor(type: string, message: string, error?: Error) {\n super(message);\n this.type = type;\n this.name = type;\n this.message = message;\n this.stack = error?.stack;\n\n Object.setPrototypeOf(this, BipaError.prototype);\n }\n}\n\nclass MissingTranslationError extends BipaError {\n public static type = 'MissingTranslationError';\n\n constructor(locale: string) {\n super(MissingTranslationError.type, `translation missing for locale: ${locale}`);\n Object.setPrototypeOf(this, MissingTranslationError.prototype);\n }\n}\n\nclass PrivacyError extends BipaError {\n public static type = 'PrivacyError';\n\n constructor(message: string, error?: Error) {\n super(PrivacyError.type, message, error);\n Object.setPrototypeOf(this, PrivacyError.prototype);\n }\n}\n\nclass BipaServiceError extends BipaError {\n public static type = 'BipaServiceError';\n\n constructor(message: string, error?: Error) {\n super(BipaServiceError.type, message, error);\n Object.setPrototypeOf(this, BipaServiceError.prototype);\n }\n}\n\nclass BipaSubmissionError extends BipaError {\n public static type = 'BipaSubmissionError';\n public fieldErrors: FieldError[];\n\n constructor(message: string, fieldErrors?: FieldError[], error?: Error) {\n super(BipaSubmissionError.type, message, error);\n this.fieldErrors = fieldErrors;\n Object.setPrototypeOf(this, BipaSubmissionError.prototype);\n }\n}\n\nexport {\n MissingTranslationError,\n PrivacyError,\n BipaServiceError,\n BipaSubmissionError\n};\n","import { PrivacyLocalization } from '../interfaces/PrivacyLocalization';\n\nexport const DefaultPrivacyLocalization: PrivacyLocalization = {\n PRIVACY_AGREEMENT_TITLE: 'Biometric data consent',\n PRIVACY_FIRST_AGREEMENT: 'We need your consent to record your face\\'s biometric data and proceed with our eyewear suggestion experience. We will not store any of your information in our database and once the process is finished, we will delete all of your personal data.',\n PRIVACY_IMPLICIT_AGREEMENT: 'By continuing you accept',\n PRIVACY_IMPLICIT_TERMS_AND_CONDITIONS: 'Terms and Conditions',\n PRIVACY_IMPLICIT_TERMS_PRIVACY_CONJUNCTION: ' and ',\n PRIVACY_IMPLICIT_PRIVACY_POLICY: 'Privacy Policy',\n PRIVACY_BUTTON_SUBMIT: 'Submit',\n PRIVACY_BUTTON_CANCEL: 'Cancel',\n BIPA_FORM_TITLE: 'Biometric data consent',\n BIPA_CITIZEN_DECLARATION: 'I declare I\\'m an Illinois citizen',\n BIPA_FORM_SUBTITLE: 'Due to some Illinois regulations we need to ask you some information, please fill in your details below.',\n BIPA_FORM_NAME: 'Name',\n BIPA_FORM_SURNAME: 'Surname',\n BIPA_FORM_EMAIL: 'E-mail',\n BIPA_IMPLICIT_AGREEMENT: 'By continuing you accept',\n BIPA_IMPLICIT_TERMS_AND_CONDITIONS: 'Terms and Conditions',\n BIPA_IMPLICIT_TERMS_PRIVACY_CONJUNCTION: ' and ',\n BIPA_IMPLICIT_PRIVACY_POLICY: 'Privacy Policy',\n BIPA_FORM_IMPLICIT_AGREEMENT: 'By continuing you accept Luxottica\\'s Terms and Conditions and below BIPA Notice.',\n BIPA_FORM_BUTTON_SUBMIT: 'Submit',\n BIPA_FORM_BUTTON_CANCEL: 'Cancel',\n BIPA_SERVER_ERROR: 'There was a problem with the server, please check insered informations or network connection'\n};\n","import { DefaultPrivacyLocalization } from '../constants/DefaultPrivacyLocalization';\nimport { PrivacyLocalization, PrivacyLocalizationKey } from '../interfaces/PrivacyLocalization';\n\nlet currentLocalizationText: PrivacyLocalization;\n\nconst LocalizationHelper = {\n setText: (localizationText: PrivacyLocalization): void => {\n currentLocalizationText = {\n ...currentLocalizationText,\n ...DefaultPrivacyLocalization,\n ...localizationText\n };\n },\n\n getText: (key: PrivacyLocalizationKey): string => {\n return (!!currentLocalizationText[key]) ? currentLocalizationText[key] : '';\n }\n};\n\nexport {\n LocalizationHelper\n};","enum PrivacyLocalizationKey {\n PRIVACY_AGREEMENT_TITLE = 'PRIVACY_AGREEMENT_TITLE',\n PRIVACY_AGREEMENT_TEXT = 'PRIVACY_AGREEMENT_TEXT',\n PRIVACY_FIRST_AGREEMENT = 'PRIVACY_FIRST_AGREEMENT',\n PRIVACY_IMPLICIT_AGREEMENT = 'PRIVACY_IMPLICIT_AGREEMENT',\n PRIVACY_IMPLICIT_AGREEMENT_NEW = 'PRIVACY_IMPLICIT_AGREEMENT_NEW',\n PRIVACY_IMPLICIT_TERMS_AND_CONDITIONS = 'PRIVACY_IMPLICIT_TERMS_AND_CONDITIONS',\n PRIVACY_IMPLICIT_TERMS_PRIVACY_CONJUNCTION = 'PRIVACY_IMPLICIT_TERMS_PRIVACY_CONJUNCTION',\n PRIVACY_IMPLICIT_PRIVACY_POLICY = 'PRIVACY_IMPLICIT_PRIVACY_POLICY',\n PRIVACY_BUTTON_SUBMIT = 'PRIVACY_BUTTON_SUBMIT',\n PRIVACY_BUTTON_CANCEL = 'PRIVACY_BUTTON_CANCEL',\n BIPA_CITIZEN_DECLARATION = 'BIPA_CITIZEN_DECLARATION',\n BIPA_CITIZEN_QUESTION = 'BIPA_CITIZEN_QUESTION',\n BIPA_FORM_TITLE = 'BIPA_FORM_TITLE',\n BIPA_FORM_SUBTITLE = 'BIPA_FORM_SUBTITLE',\n BIPA_FORM_NAME = 'BIPA_FORM_NAME',\n BIPA_FORM_SURNAME = 'BIPA_FORM_SURNAME',\n BIPA_FORM_EMAIL = 'BIPA_FORM_EMAIL',\n BIPA_FORM_ERROR = 'BIPA_FORM_ERROR',\n BIPA_FORM_ERROR_MAIL = 'BIPA_FORM_ERROR_MAIL',\n BIPA_FORM_MANDATORY_FIELD = 'BIPA_FORM_MANDATORY_FIELD',\n BIPA_IMPLICIT_AGREEMENT = 'BIPA_IMPLICIT_AGREEMENT',\n BIPA_IMPLICIT_TERMS_AND_CONDITIONS = 'BIPA_IMPLICIT_TERMS_AND_CONDITIONS',\n BIPA_IMPLICIT_TERMS_PRIVACY_CONJUNCTION = 'BIPA_IMPLICIT_TERMS_PRIVACY_CONJUNCTION',\n BIPA_IMPLICIT_PRIVACY_POLICY = 'BIPA_IMPLICIT_PRIVACY_POLICY',\n BIPA_FORM_IMPLICIT_AGREEMENT = 'BIPA_FORM_IMPLICIT_AGREEMENT',\n BIPA_FORM_BIPA_AGREEMENT = 'BIPA_FORM_BIPA_AGREEMENT',\n BIPA_FORM_BUTTON_SUBMIT = 'BIPA_FORM_BUTTON_SUBMIT',\n BIPA_FORM_BUTTON_CANCEL = 'BIPA_FORM_BUTTON_CANCEL',\n BIPA_NO = 'BIPA_NO',\n BIPA_SERVER_ERROR = 'BIPA_SERVER_ERROR',\n BIPA_YES = 'BIPA_YES',\n PRIVACY_POLICY_SECTION_TITLE = 'PRIVACY_POLICY_SECTION_TITLE',\n BIPA_SECTION_TITLE = 'BIPA_SECTION_TITLE',\n}\n\ntype PrivacyLocalization = {\n [key in PrivacyLocalizationKey]?: string;\n};\n\nexport { PrivacyLocalizationKey, PrivacyLocalization };\n","import { BipaFormData } from '../interfaces/BipaFormData';\nimport { FieldError } from '../interfaces/FieldError';\n\nconst NOT_BLANK = 'NotBlank';\nconst SIZE = 'Size';\nconst PATTERN = 'Pattern';\n\nconst EMAIL_REGEX = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\nconst createFieldError = (field: string, message: string): FieldError => { return { objectName: 'bipaConsentPublic', field, message }; };\n\nconst ParameterHelper = {\n validateBipaForm: (bipaForm: BipaFormData): FieldError[] => {\n const fieldErrors: FieldError[] = [];\n\n if (!bipaForm?.firstName) { \n fieldErrors.push(createFieldError('firstName', NOT_BLANK));\n } else if (!!bipaForm?.firstName && bipaForm.firstName.trim().length < 2) {\n fieldErrors.push(createFieldError('firstName', SIZE));\n }\n\n if (!bipaForm?.lastName) { \n fieldErrors.push(createFieldError('lastName', NOT_BLANK));\n } else if (!!bipaForm?.lastName && bipaForm.lastName.trim().length < 2) {\n fieldErrors.push(createFieldError('lastName', SIZE));\n }\n\n if (!bipaForm?.email) { \n fieldErrors.push(createFieldError('email', NOT_BLANK));\n } else if (!!bipaForm?.email && bipaForm.email.trim().length < 2) {\n fieldErrors.push(createFieldError('email', SIZE));\n } else if (!!bipaForm?.email && !bipaForm.email.trim().match(EMAIL_REGEX)) {\n fieldErrors.push(createFieldError('email', PATTERN));\n }\n\n return fieldErrors;\n }\n};\n\nexport {\n ParameterHelper\n};\n","import React from 'react';\nimport { LocalizationHelper } from '../helpers/LocalizationHelper';\nimport { PrivacyLocalizationKey } from '../interfaces/PrivacyLocalization';\nimport './YesNoCheckBox.scss';\n\ninterface YesNoCheckBoxProps {\n tabIndex: number;\n checked: boolean;\n onChange: (checked: boolean) => void;\n}\n\nconst YesNoCheckBox = (props: YesNoCheckBoxProps) => {\n\n return (\n
\n {LocalizationHelper.getText(PrivacyLocalizationKey.BIPA_NO)}\n \n {LocalizationHelper.getText(PrivacyLocalizationKey.BIPA_YES)}\n
\n );\n};\n\nexport {\n YesNoCheckBox\n};\n","const ROOT_STYLE_NAME = 'bipa-overlay-root-style';\n\nexport {\n ROOT_STYLE_NAME\n};\n","import { AgreementType } from '../constants/AgreementType';\n\nconst BASIC_COOKIE_NAME = 'BasicImageConsent=true';\nconst BIOMETRIC_COOKIE_NAME = 'MlProcessImageConsent=true';\nconst COOKIE_PATH = 'path=/';\n\nconst CookieHelper = {\n setBiometricCookie: (agreementType: AgreementType): void => {\n if (!CookieHelper.biometricCookieExists(agreementType)) {\n document.cookie = `${CookieHelper.getBiometricCookieName(agreementType)};${COOKIE_PATH}`;\n }\n },\n\n biometricCookieExists: (agreementType: AgreementType): boolean => {\n if (agreementType === AgreementType.BASIC) {\n return document.cookie.includes(CookieHelper.getBiometricCookieName(AgreementType.BASIC))\n || document.cookie.includes(CookieHelper.getBiometricCookieName(AgreementType.BIOMETRIC));\n\n } else if (agreementType === AgreementType.BIOMETRIC) {\n return document.cookie.includes(CookieHelper.getBiometricCookieName(AgreementType.BIOMETRIC));\n\n } else {\n return false;\n }\n },\n\n getBiometricCookieName: (agreementType: AgreementType): string => {\n return agreementType === AgreementType.BIOMETRIC ? BIOMETRIC_COOKIE_NAME : BASIC_COOKIE_NAME;\n }\n};\n\nexport {\n CookieHelper\n};","import { MicroserviceEnvironment } from '@luxottica/vto-microservices';\nimport { AgreementType } from '../constants/AgreementType';\nimport { MissingTranslationError } from '../errors/errors';\nimport { PrivacyLocalization } from '../interfaces/PrivacyLocalization';\n\nconst localizationBaseUrl = 'https://d5nhc6q3o19l2.cloudfront.net';\n\nconst fetchBipaJsonLight = (environment: MicroserviceEnvironment, locale: string): Promise => {\n const localizationFileUrl = `${localizationBaseUrl}/frame-advisor/v3/${bipaJsonEnv(\n environment\n )}/bipa/bipa_agreement_${locale}.json`;\n return fetch(localizationFileUrl).then((response) => {\n if (response.ok) {\n return response.json();\n } else {\n throw new MissingTranslationError(locale);\n }\n });\n};\n\nconst fetchBipaJson = (\n agreementType: AgreementType,\n environment: MicroserviceEnvironment,\n locale: string,\n isLight = false\n): Promise => {\n if (agreementType === AgreementType.BASIC) {\n const localizationFileUrl = `${localizationBaseUrl}/vmmv/v1/${bipaJsonEnv(\n environment\n )}/privacy/application_${locale}.json`;\n return fetch(localizationFileUrl).then((response) => {\n if (response.ok) {\n return response.json();\n } else {\n throw new MissingTranslationError(locale);\n }\n });\n } else {\n const localizationFileUrl = `${localizationBaseUrl}/frame-advisor/${\n !isLight ? 'v2' : 'v3'\n }/${bipaJsonEnv(environment)}/privacy/privacy_${locale}.json`;\n return fetch(localizationFileUrl).then((response) => {\n if (response.ok) {\n return response.json() as PrivacyLocalization;\n } else {\n throw new MissingTranslationError(locale);\n }\n });\n }\n};\n\nconst bipaJsonEnv = (environment: MicroserviceEnvironment): 'dev' | 'prod' | 'test' => {\n switch (environment) {\n case 'STAGING':\n return 'dev';\n\n case 'PRODUCTION':\n return 'prod';\n\n case 'ACCEPTANCE':\n default:\n return 'test';\n }\n};\n\nexport { fetchBipaJson, fetchBipaJsonLight };\n","import React, { FC } from 'react';\n\nconst ErrorIcon: FC> = (props) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport { ErrorIcon };\n","import React, { FC } from 'react';\n\nconst RoundedCloseIcon: FC> = (props) => {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport { RoundedCloseIcon };\n","import React, { FC } from 'react';\n\nconst RoundedCheckIcon: FC> = (props) => {\n return (\n \n \n \n \n );\n};\n\nexport { RoundedCheckIcon };\n","import React, { useRef, useState } from 'react';\n\nimport { ErrorIcon } from './Icons/ErrorIcon';\nimport { RoundedCloseIcon } from './Icons/RoundedCloseIcon';\nimport { RoundedCheckIcon } from './Icons/RoundedCheckIcon';\n\nimport './BipaFormInput.scss';\n\ninterface BipaFormInputProps\n extends React.DetailedHTMLProps, HTMLInputElement> {\n isSubmitting: boolean;\n isError: boolean;\n onClear: () => void;\n}\n\nfunction BipaFormInput({ isSubmitting, isError, onClear, value, ...props }: BipaFormInputProps) {\n const inputRef = useRef(null);\n\n const [isFocus, setIsFocus] = useState(false);\n\n function clearValue() {\n onClear();\n\n setTimeout(() => {\n inputRef.current && inputRef.current.focus();\n }, 100);\n }\n\n const clearBtnVisible = !isSubmitting && isFocus && !!value;\n\n return (\n <>\n setIsFocus(true)}\n onBlur={() => setIsFocus(false)}\n />\n\n {isSubmitting && (\n
\n {isError ? (\n \n ) : (\n \n )}\n
\n )}\n\n {clearBtnVisible && (\n \n \n \n )}\n \n );\n}\n\nexport default BipaFormInput;\n","import React, { useCallback, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport './BipaForm.scss';\n\nimport { submitBipaFormRequest } from '@luxottica/vto-microservices';\n\nimport { ParameterHelper } from '../helpers/ParameterHelper';\nimport { LocalizationHelper } from '../helpers/LocalizationHelper';\nimport { PrivacyLocalizationKey } from '../interfaces/PrivacyLocalization';\nimport { BipaOverlayProps } from '../BipaManager';\nimport { BipaServiceError } from '../errors/errors';\n\nimport BipaFormInput from './BipaFormInput';\n\ninterface BipaFormProps extends BipaOverlayProps {\n isSubmitting: boolean;\n}\n\ninterface BipaFormData {\n firstName: string;\n lastName: string;\n email: string;\n}\n\nexport type BipaFormFunc = {\n submitBipaForm: (version: number) => Promise;\n};\n\nexport const BipaForm = React.forwardRef(\n ({ isSubmitting, ...props }: BipaFormProps, ref) => {\n const {\n firstName: firstNamePreFill,\n lastName: lastNamePrefill,\n email: emailPrefill,\n } = props.formPrefill || {};\n\n const [formData, setFormData] = useState({\n firstName: firstNamePreFill || '',\n lastName: lastNamePrefill || '',\n email: emailPrefill || '',\n });\n\n const isValidRef = useRef(false);\n\n const [error, setError] = useState({ firstName: false, lastName: false, email: false });\n const [serverError, setServerError] = useState(false);\n\n const checkFieldErrors = useCallback((errorFields: string[]) => {\n let isValid = true;\n\n let firstNameInvalid = false,\n lastNameInvalid = false,\n emailInvalid = false;\n\n if (errorFields.includes('firstName')) firstNameInvalid = true;\n if (errorFields.includes('lastName')) lastNameInvalid = true;\n if (errorFields.includes('email')) emailInvalid = true;\n\n if (firstNameInvalid || lastNameInvalid || emailInvalid) isValid = false;\n\n setError({\n firstName: firstNameInvalid,\n lastName: lastNameInvalid,\n email: emailInvalid,\n });\n\n return isValid;\n }, []);\n\n const submitBipaForm = useCallback(\n async (bipaVersion: number) => {\n let isSuccess = false;\n setServerError(false);\n\n if (isValidRef.current) {\n try {\n const bipaRes = await submitBipaFormRequest({\n source: props.source,\n environment: props.environment,\n accessToken: props.accessToken,\n refreshToken: props.refreshToken,\n firstName: formData.firstName,\n lastName: formData.lastName,\n email: formData.email,\n bipaVersion: bipaVersion,\n onAuthUpdated: props.callbacks.onAuthUpdated,\n });\n\n if (bipaRes.ok) isSuccess = true;\n else if (bipaRes.status < 404) {\n const json = await bipaRes.json();\n\n const errorFields: string[] = !!json?.fieldErrors\n ? json.fieldErrors.map((error) => error.field)\n : [];\n console.info(errorFields);\n checkFieldErrors(errorFields);\n } else {\n setServerError(true);\n props.callbacks.onError(\n new BipaServiceError(\n `failed to submit bipa form due to response=${bipaRes.status} ${bipaRes.statusText}`\n )\n );\n }\n } catch (e) {\n setServerError(true);\n props.callbacks.onError(e);\n }\n }\n\n return isSuccess;\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [formData] // WARNING: do not add props as dependency\n );\n\n const fieldStyle = (isError: boolean, currentValue: string) => {\n if (isSubmitting) {\n if (isError) return 'bipa-form__input--error';\n else return 'bipa-form__input--validated';\n }\n\n if (currentValue !== '') return 'bipa-form__input--filled';\n return '';\n };\n\n useEffect(() => {\n const debounce = setTimeout(() => {\n const fieldErrors = ParameterHelper.validateBipaForm(formData).map((error) => error.field);\n const isValid = checkFieldErrors(fieldErrors);\n\n isValidRef.current = isValid;\n }, 100);\n\n return () => clearTimeout(debounce);\n }, [checkFieldErrors, formData]);\n\n useImperativeHandle(\n ref,\n () => ({\n submitBipaForm: (version) => submitBipaForm(version),\n }),\n [submitBipaForm]\n );\n\n return (\n
\n {(error.firstName || error.lastName || error.email) && isSubmitting && (\n

\n {LocalizationHelper.getText(PrivacyLocalizationKey.BIPA_FORM_ERROR)}\n

\n )}\n {serverError && (\n

\n {LocalizationHelper.getText(PrivacyLocalizationKey.BIPA_SERVER_ERROR)}\n

\n )}\n
\n \n setFormData((d) => ({\n ...d,\n firstName: '',\n }))\n }\n name=\"BIPA_FORM_NAME\"\n id=\"bipa-data-collection-name\"\n className={`bipa-form__input ${fieldStyle(error.firstName, formData.firstName)}`}\n autoComplete=\"given-name\"\n placeholder={LocalizationHelper.getText(PrivacyLocalizationKey.BIPA_FORM_NAME)}\n value={formData.firstName}\n onChange={(e) =>\n setFormData((d) => ({\n ...d,\n firstName: e.target.value,\n }))\n }\n />\n
\n
\n setFormData((data) => ({ ...data, lastName: '' }))}\n name=\"BIPA_FORM_SURNAME\"\n id=\"bipa-data-collection-surname\"\n className={`bipa-form__input ${fieldStyle(error.lastName, formData.lastName)}`}\n autoComplete=\"family-name\"\n placeholder={LocalizationHelper.getText(PrivacyLocalizationKey.BIPA_FORM_SURNAME)}\n value={formData.lastName}\n onChange={(e) =>\n setFormData((d) => ({\n ...d,\n lastName: e.target.value,\n }))\n }\n />\n
\n
\n setFormData((data) => ({ ...data, email: '' }))}\n name=\"BIPA_FORM_EMAIL\"\n id=\"bipa-data-collection-email\"\n className={`bipa-form__input ${fieldStyle(error.email, formData.email)}`}\n autoComplete=\"email\"\n placeholder={LocalizationHelper.getText(PrivacyLocalizationKey.BIPA_FORM_EMAIL)}\n value={formData.email}\n onChange={(e) =>\n setFormData((d) => ({\n ...d,\n email: e.target.value,\n }))\n }\n />\n
\n
\n {LocalizationHelper.getText(PrivacyLocalizationKey.BIPA_FORM_MANDATORY_FIELD)}\n
\n
\n );\n }\n);\n","import React from 'react';\nimport './Button.scss';\n\ntype ButtonVariant = 'sm' | 'md' | 'lg';\n\ninterface ButtonProps extends React.ComponentPropsWithRef<'button'> {\n children: React.ReactNode;\n isPrimary?: boolean;\n variant?: ButtonVariant;\n}\n\nexport const Button = ({ isPrimary, children, variant = 'sm', ...props }: ButtonProps) => {\n return (\n \n {children}\n \n );\n};\n","import React, { FC } from 'react';\n\nconst RoundedSubtractIcon: FC> = (props) => {\n return (\n \n \n \n \n );\n};\n\nexport { RoundedSubtractIcon };\n","import React, { FC } from 'react';\n\nconst RoundedAddIcon: FC> = (props) => {\n return (\n \n \n \n \n );\n};\n\nexport { RoundedAddIcon };\n","import React, { useState } from 'react';\nimport './Accordion.scss';\n\nimport { RoundedSubtractIcon } from '../Icons/RoundedSubtractIcon';\nimport { RoundedAddIcon } from '../Icons/RoundedPlusIcon';\n\ninterface AccordionProps {\n children: React.ReactNode;\n title: string;\n}\n\nfunction Accordion({ children, title }: AccordionProps) {\n const [isExpanded, setisExpanded] = useState(true);\n\n return (\n <>\n \n\n {isExpanded && children}\n \n );\n}\n\nexport default Accordion;\n","import React from 'react';\n\ninterface Props {\n onClick: () => void;\n}\n\nexport const CloseIcon: React.FC = ({ onClick }: Props) => {\n return (\n \n \n \n );\n};\n","import React, { useEffect, useRef, useState } from 'react';\nimport './PrivacyPolicyOverlay.scss';\n\nimport { bipaAgreementRequest, loginRequest } from '@luxottica/vto-microservices';\n\nimport { ROOT_STYLE_NAME } from './constants/Styling';\nimport { BipaOverlayProps } from './BipaOverlay';\nimport { PrivacyLocalizationKey } from './interfaces/PrivacyLocalization';\n\nimport { BipaForm, BipaFormFunc } from './components/BipaForm';\nimport { Button } from './components/Button';\nimport { YesNoCheckBox } from './components/YesNoCheckbox';\n\nimport { LocalizationHelper } from './helpers/LocalizationHelper';\nimport { fetchBipaJson, fetchBipaJsonLight } from './helpers/RequestHelper';\nimport { CookieHelper } from './helpers/CookieHelper';\nimport Accordion from './components/Accordion/Accordion';\nimport { CloseIcon } from './components/Icons/CloseIcon';\nimport { AgreementType } from './BipaManager';\n\nexport interface PrivacyPolicyOverlayProps extends BipaOverlayProps {\n stickyHeader?: boolean;\n brandName?: string;\n isLightVersion?: boolean;\n onClose?: () => void;\n}\n\nconst PrivacyPolicyOverlay: React.FC = (\n props: PrivacyPolicyOverlayProps\n) => {\n const isFirstRender = useRef(true);\n const containerRef = useRef(undefined);\n const bipaFormFuncRef = useRef();\n\n const [isLoaded, setIsLoaded] = useState(false);\n const [illinoisUser, setIlliniosUser] = useState(false);\n const [isButtonDisable, setIsButtonDisable] = useState(false);\n\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [bipaVersion, setBipaVersion] = useState(undefined);\n\n const handleSubmit = async () => {\n setIsSubmitting(true);\n let canSubmit = false;\n\n if (illinoisUser) {\n if (bipaFormFuncRef.current) {\n setIsButtonDisable(true);\n canSubmit = await bipaFormFuncRef.current.submitBipaForm(bipaVersion);\n }\n } else canSubmit = true;\n\n if (canSubmit) {\n CookieHelper.setBiometricCookie(props.type);\n props.callbacks.onSubmit();\n } else if (illinoisUser) {\n containerRef.current?.scrollIntoView();\n }\n\n setIsButtonDisable(false);\n };\n\n const handleCancel = () => {\n props.callbacks.onUserReject();\n };\n\n useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n\n loginRequest({\n environment: props.environment,\n version: props.tokenVersion,\n accessToken: props.accessToken,\n refreshToken: props.refreshToken,\n onAuthUpdated: props.callbacks.onAuthUpdated,\n })\n .then((loginReturn) => {\n const fetchBipa = (locale: string) =>\n bipaAgreementRequest({\n locale: locale,\n environment: props.environment,\n accessToken: loginReturn.accessToken,\n refreshToken: loginReturn.refreshToken,\n onAuthUpdated: props.callbacks.onAuthUpdated,\n });\n\n const fetchPP = (locale: string) =>\n fetchBipaJson(props.type, props.environment, locale, props.isLightVersion);\n\n // VMC-1114: translation fallback, PP and Bipa, VMMV only\n if (props.type === AgreementType.BASIC) {\n const defaultLocale = 'en-US';\n\n if (props.region === 'US') {\n return fetchBipa(props.locale)\n .then((bipa) =>\n Promise.all([\n fetchPP(props.locale).catch(() => fetchPP(defaultLocale)),\n Promise.resolve(bipa),\n ])\n )\n .catch(() => Promise.all([fetchPP(defaultLocale), fetchBipa(defaultLocale)]));\n }\n\n return Promise.all([\n fetchPP(props.locale).catch(() => {\n // PP not found, fallback PP translation based on region\n let fallbackLocale = defaultLocale;\n if (props.region === 'EU') fallbackLocale = 'en-EU';\n else if (props.region === 'AU') fallbackLocale = 'en-AU';\n\n return fetchPP(fallbackLocale);\n }),\n Promise.resolve(undefined),\n ]);\n }\n\n return Promise.all([\n fetchPP(props.locale),\n props.region === 'US'\n ? props.isLightVersion\n ? fetchBipaJsonLight(props.environment, props.locale)\n : fetchBipa(props.locale)\n : Promise.resolve(undefined),\n ]);\n })\n .then((response) => {\n const bipaAgreementText = props.isLightVersion\n ? response?.[1]?.BIPA_AGREEMENT ?? undefined\n : response?.[1]?.text ?? undefined;\n const bipaAgreementVersion = !!response?.[1]?.version ? response[1].version : undefined;\n\n LocalizationHelper.setText({\n ...response[0],\n BIPA_FORM_BIPA_AGREEMENT: bipaAgreementText,\n ...props.privacy.localizationText,\n });\n setBipaVersion(bipaAgreementVersion);\n setIsLoaded(true);\n props.callbacks.onDisplayPage('PRIVACY');\n })\n .catch((e) => {\n props.callbacks.onError(e);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []); // WARNING: do not add props as dependency here to avoid unexpected side effects (probably the props was not memoize, especially the callback because callback is an object)\n\n useEffect(() => {\n if (!illinoisUser) setIsSubmitting(false);\n }, [illinoisUser]);\n\n function replaceBrandName(html: string) {\n const regex = /{{\\s*brandName\\s*}}/gi;\n return html.replace(regex, props.brandName);\n }\n\n return isLoaded ? (\n
\n \n {!!props.onClose && (\n \n {props.stickyHeader && (\n

\n {LocalizationHelper.getText(PrivacyLocalizationKey.PRIVACY_AGREEMENT_TITLE)}\n

\n )}\n \n
\n )}\n \n
\n

\n {props.type === AgreementType.BASIC && props.stickyHeader\n ? LocalizationHelper.getText(PrivacyLocalizationKey.BIPA_FORM_TITLE)\n : LocalizationHelper.getText(PrivacyLocalizationKey.PRIVACY_AGREEMENT_TITLE)}\n

\n

\n {LocalizationHelper.getText(PrivacyLocalizationKey.PRIVACY_FIRST_AGREEMENT)}\n

\n {props.region === 'US' && (\n <>\n \n\n {\n setIlliniosUser(checked);\n }}\n />\n {illinoisUser && (\n \n )}\n \n )}\n
\n
\n \n
\n \n \n {props.region === 'US' && (\n
\n \n
\n \n \n )}\n \n \n
\n

\n {props.type === AgreementType.BASIC ? (\n \n ) : (\n \n )}\n\n {\n e.preventDefault();\n props.callbacks.onTermsAndConditionsClick();\n })\n }\n >\n \n {LocalizationHelper.getText(\n PrivacyLocalizationKey.PRIVACY_IMPLICIT_TERMS_AND_CONDITIONS\n )}\n \n \n

\n
\n \n \n {LocalizationHelper.getText(PrivacyLocalizationKey.PRIVACY_BUTTON_SUBMIT)}\n \n
\n
\n \n ) : null;\n};\n\nexport default PrivacyPolicyOverlay;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","import { createElement, useMemo } from 'react';\nimport { I18nContext } from './context';\nexport function I18nextProvider(_ref) {\n var i18n = _ref.i18n,\n defaultNS = _ref.defaultNS,\n children = _ref.children;\n var value = useMemo(function () {\n return {\n i18n: i18n,\n defaultNS: defaultNS\n };\n }, [i18n, defaultNS]);\n return createElement(I18nContext.Provider, {\n value: value\n }, children);\n}","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = __importStar(require(\"react\"));\nvar swiper_1 = __importDefault(require(\"swiper\"));\nvar object_assign_1 = __importDefault(require(\"object-assign\"));\nvar utils_1 = require(\"./utils\");\nvar ReactIdSwiper = function (props) {\n var activeSlideKey = props.activeSlideKey, ContainerEl = props.ContainerEl, children = props.children, containerClass = props.containerClass, getSwiper = props.getSwiper, navigation = props.navigation, noSwiping = props.noSwiping, pagination = props.pagination, parallax = props.parallax, parallaxEl = props.parallaxEl, WrapperEl = props.WrapperEl, wrapperClass = props.wrapperClass, rebuildOnUpdate = props.rebuildOnUpdate, renderScrollbar = props.renderScrollbar, renderPagination = props.renderPagination, renderPrevButton = props.renderPrevButton, renderNextButton = props.renderNextButton, renderParallax = props.renderParallax, rtl = props.rtl, scrollbar = props.scrollbar, shouldSwiperUpdate = props.shouldSwiperUpdate, slideClass = props.slideClass, loop = props.loop;\n // Define swiper ref\n var swiperNodeRef = react_1.useRef(null);\n // Define swiper instance ref\n var swiperInstanceRef = react_1.useRef(null);\n // Get current active slide key\n var getActiveSlideIndexFromProps = function () {\n if (!activeSlideKey) {\n return null;\n }\n var activeSlideId = 0;\n // In loop mode first slide index should be 1\n var id = loop ? 1 : 0;\n react_1.Children.forEach(children, function (child) {\n if (react_1.isValidElement(child)) {\n if (child.key === activeSlideKey) {\n activeSlideId = id;\n }\n id += 1;\n }\n });\n return activeSlideId;\n };\n // Get swiper instance\n var getSwiperInstance = function (swiper) {\n if (typeof getSwiper === 'function') {\n getSwiper(swiper);\n }\n };\n // Destroy swiper\n var destroySwiper = function () {\n if (swiperInstanceRef.current !== null) {\n swiperInstanceRef.current.destroy(true, true);\n swiperInstanceRef.current = null;\n }\n };\n // Initialize swiper\n var buildSwiper = function () {\n if (swiperNodeRef.current && swiperInstanceRef.current === null) {\n swiperInstanceRef.current = new swiper_1.default(swiperNodeRef.current, object_assign_1.default({}, props));\n }\n };\n // Rebuild swiper\n var rebuildSwiper = function () {\n destroySwiper();\n buildSwiper();\n };\n // Update swiper\n var updateSwiper = function () {\n if (swiperInstanceRef.current !== null) {\n swiperInstanceRef.current.update();\n }\n };\n // Render slides\n var renderContent = function (e) {\n if (!utils_1.isReactElement(e)) {\n return null;\n }\n var slideClassNames = [slideClass, e.props.className];\n if (noSwiping) {\n slideClassNames.push('swiper-no-swiping');\n }\n return react_1.cloneElement(e, __assign(__assign({}, e.props), { className: slideClassNames.join(' ').trim() }));\n };\n // Only execute when component is mounted or unmounted\n react_1.useEffect(function () {\n buildSwiper();\n var slideToIndex = getActiveSlideIndexFromProps();\n if (swiperInstanceRef.current !== null && slideToIndex !== null) {\n swiperInstanceRef.current.slideTo(slideToIndex);\n }\n return function () { return destroySwiper(); };\n }, []);\n // Execute each time when props are updated\n react_1.useEffect(function () {\n if (swiperInstanceRef.current !== null) {\n if (rebuildOnUpdate) {\n rebuildSwiper();\n }\n else if (shouldSwiperUpdate) {\n updateSwiper();\n var numSlides = swiperInstanceRef.current.slides.length;\n if (numSlides <= swiperInstanceRef.current.activeIndex) {\n var index = Math.max(numSlides - 1, 0);\n swiperInstanceRef.current.slideTo(index);\n }\n }\n var slideToIndex = getActiveSlideIndexFromProps();\n if (slideToIndex !== null) {\n swiperInstanceRef.current.slideTo(slideToIndex);\n }\n }\n });\n react_1.useEffect(function () {\n getSwiperInstance(swiperInstanceRef.current);\n }, [swiperInstanceRef]);\n // No render if wrapper elements are not provided\n if (!children || !ContainerEl || !WrapperEl) {\n return null;\n }\n // Validate children props\n if (!utils_1.validateChildren(children)) {\n console.warn('Children should be react element or an array of react element!!');\n return null;\n }\n return (react_1.default.createElement(ContainerEl, { className: containerClass, dir: rtl && 'rtl', ref: swiperNodeRef },\n parallax && parallaxEl && renderParallax && renderParallax(props),\n react_1.default.createElement(WrapperEl, { className: wrapperClass }, react_1.Children.map(children, renderContent)),\n pagination && pagination.el && renderPagination && renderPagination(props),\n scrollbar && scrollbar.el && renderScrollbar && renderScrollbar(props),\n navigation && navigation.nextEl && renderNextButton && renderNextButton(props),\n navigation && navigation.prevEl && renderPrevButton && renderPrevButton(props)));\n};\n// Default props\nReactIdSwiper.defaultProps = {\n containerClass: 'swiper-container',\n wrapperClass: 'swiper-wrapper',\n slideClass: 'swiper-slide',\n ContainerEl: 'div',\n WrapperEl: 'div',\n renderScrollbar: function (_a) {\n var scrollbar = _a.scrollbar;\n return scrollbar ? react_1.default.createElement(\"div\", { className: utils_1.classNames(scrollbar.el) }) : null;\n },\n renderPagination: function (_a) {\n var pagination = _a.pagination;\n return pagination ? react_1.default.createElement(\"div\", { className: utils_1.classNames(pagination.el) }) : null;\n },\n renderPrevButton: function (_a) {\n var navigation = _a.navigation;\n return navigation ? react_1.default.createElement(\"div\", { className: utils_1.classNames(navigation.prevEl) }) : null;\n },\n renderNextButton: function (_a) {\n var navigation = _a.navigation;\n return navigation ? react_1.default.createElement(\"div\", { className: utils_1.classNames(navigation.nextEl) }) : null;\n },\n renderParallax: function (_a) {\n var parallaxEl = _a.parallaxEl;\n return parallaxEl ? (react_1.default.createElement(\"div\", { className: utils_1.classNames(parallaxEl.el), \"data-swiper-parallax\": parallaxEl.value })) : null;\n }\n};\nReactIdSwiper.displayName = 'ReactIdSwiper';\nexports.default = ReactIdSwiper;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ReactIdSwiper_1 = __importDefault(require(\"./ReactIdSwiper\"));\n// React-id-swiper\nexports.default = ReactIdSwiper_1.default;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\nexports.classNames = function (el) {\n if (typeof el === 'string') {\n return el\n .split('.')\n .join(' ')\n .trim();\n }\n else if (el instanceof HTMLElement) {\n return el.className;\n }\n return '';\n};\nexports.validateChildren = function (children) {\n var isValid = true;\n if (Array.isArray(children)) {\n react_1.Children.forEach(children, function (child) {\n if (!react_1.isValidElement(child)) {\n isValid = false;\n }\n });\n }\n else {\n isValid = react_1.isValidElement(children);\n }\n return isValid;\n};\nexports.isReactElement = function (element) {\n return react_1.isValidElement(element) &&\n (typeof element.type === 'string' ||\n typeof element.type === 'function' ||\n typeof element.type === 'object');\n};\nexports.isModuleAvailable = function (modules, moduleName) {\n var moduleAvailable = false;\n for (var i = 0; i < modules.length; i++) {\n if (modules[i].name === moduleName) {\n moduleAvailable = true;\n break;\n }\n }\n return moduleAvailable;\n};\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar React = __importStar(require(\"react\"));\nvar utils_1 = require(\"./utils\");\nvar types_1 = require(\"./types\");\nvar INCREASE_KEYS = ['ArrowRight', 'ArrowUp', 'k', 'PageUp'];\nvar DECREASE_KEYS = ['ArrowLeft', 'ArrowDown', 'j', 'PageDown'];\nvar Range = /** @class */ (function (_super) {\n __extends(Range, _super);\n function Range(props) {\n var _this = _super.call(this, props) || this;\n _this.trackRef = React.createRef();\n _this.thumbRefs = [];\n _this.markRefs = [];\n _this.state = {\n draggedTrackPos: [-1, -1],\n draggedThumbIndex: -1,\n thumbZIndexes: new Array(_this.props.values.length).fill(0).map(function (t, i) { return i; }),\n isChanged: false,\n markOffsets: []\n };\n _this.getOffsets = function () {\n var _a = _this.props, direction = _a.direction, values = _a.values, min = _a.min, max = _a.max;\n var trackElement = _this.trackRef.current;\n var trackRect = trackElement.getBoundingClientRect();\n var trackPadding = utils_1.getPaddingAndBorder(trackElement);\n return _this.getThumbs().map(function (thumb, index) {\n var thumbOffsets = { x: 0, y: 0 };\n var thumbRect = thumb.getBoundingClientRect();\n var thumbMargins = utils_1.getMargin(thumb);\n switch (direction) {\n case types_1.Direction.Right:\n thumbOffsets.x = (thumbMargins.left + trackPadding.left) * -1;\n thumbOffsets.y =\n ((thumbRect.height - trackRect.height) / 2 + trackPadding.top) * -1;\n thumbOffsets.x +=\n trackRect.width * utils_1.relativeValue(values[index], min, max) -\n thumbRect.width / 2;\n return thumbOffsets;\n case types_1.Direction.Left:\n thumbOffsets.x = (thumbMargins.right + trackPadding.right) * -1;\n thumbOffsets.y =\n ((thumbRect.height - trackRect.height) / 2 + trackPadding.top) * -1;\n thumbOffsets.x +=\n trackRect.width -\n trackRect.width * utils_1.relativeValue(values[index], min, max) -\n thumbRect.width / 2;\n return thumbOffsets;\n case types_1.Direction.Up:\n thumbOffsets.x =\n ((thumbRect.width - trackRect.width) / 2 +\n thumbMargins.left +\n trackPadding.left) *\n -1;\n thumbOffsets.y = -trackPadding.left;\n thumbOffsets.y +=\n trackRect.height -\n trackRect.height * utils_1.relativeValue(values[index], min, max) -\n thumbRect.height / 2;\n return thumbOffsets;\n case types_1.Direction.Down:\n thumbOffsets.x =\n ((thumbRect.width - trackRect.width) / 2 +\n thumbMargins.left +\n trackPadding.left) *\n -1;\n thumbOffsets.y = -trackPadding.left;\n thumbOffsets.y +=\n trackRect.height * utils_1.relativeValue(values[index], min, max) -\n thumbRect.height / 2;\n return thumbOffsets;\n default:\n return utils_1.assertUnreachable(direction);\n }\n });\n };\n _this.getThumbs = function () {\n if (_this.trackRef && _this.trackRef.current) {\n return Array.from(_this.trackRef.current.children).filter(function (el) {\n return el.hasAttribute('aria-valuenow');\n });\n }\n console.warn('No thumbs found in the track container. Did you forget to pass & spread the `props` param in renderTrack?');\n return [];\n };\n _this.getTargetIndex = function (e) {\n return _this.getThumbs().findIndex(function (child) { return child === e.target || child.contains(e.target); });\n };\n _this.addTouchEvents = function (e) {\n document.addEventListener('touchmove', _this.schdOnTouchMove, {\n passive: false\n });\n document.addEventListener('touchend', _this.schdOnEnd, {\n passive: false\n });\n document.addEventListener('touchcancel', _this.schdOnEnd, {\n passive: false\n });\n };\n _this.addMouseEvents = function (e) {\n document.addEventListener('mousemove', _this.schdOnMouseMove);\n document.addEventListener('mouseup', _this.schdOnEnd);\n };\n _this.onMouseDownTrack = function (e) {\n var _a;\n if (e.button !== 0)\n return;\n e.persist();\n e.preventDefault();\n _this.addMouseEvents(e.nativeEvent);\n if (_this.props.values.length > 1 && _this.props.draggableTrack) {\n if (_this.thumbRefs.some(function (thumbRef) { var _a; return (_a = thumbRef.current) === null || _a === void 0 ? void 0 : _a.contains(e.target); }))\n return;\n // handle dragging the whole track\n _this.setState({\n draggedTrackPos: [e.clientX, e.clientY]\n }, function () { return _this.onMove(e.clientX, e.clientY); });\n }\n else {\n // get the index of the thumb that is closest to the place where the track is clicked\n var draggedThumbIndex = utils_1.getClosestThumbIndex(_this.thumbRefs.map(function (t) { return t.current; }), e.clientX, e.clientY, _this.props.direction);\n // move the thumb which is closest to the place where the track is clicked\n (_a = _this.thumbRefs[draggedThumbIndex].current) === null || _a === void 0 ? void 0 : _a.focus();\n _this.setState({\n draggedThumbIndex: draggedThumbIndex\n }, function () { return _this.onMove(e.clientX, e.clientY); });\n }\n };\n _this.onResize = function () {\n utils_1.translateThumbs(_this.getThumbs(), _this.getOffsets(), _this.props.rtl);\n _this.calculateMarkOffsets();\n };\n _this.onTouchStartTrack = function (e) {\n var _a;\n e.persist();\n _this.addTouchEvents(e.nativeEvent);\n if (_this.props.values.length > 1 && _this.props.draggableTrack) {\n if (_this.thumbRefs.some(function (thumbRef) { var _a; return (_a = thumbRef.current) === null || _a === void 0 ? void 0 : _a.contains(e.target); }))\n return;\n // handle dragging the whole track\n _this.setState({\n draggedTrackPos: [e.touches[0].clientX, e.touches[0].clientY]\n }, function () { return _this.onMove(e.touches[0].clientX, e.touches[0].clientY); });\n }\n else {\n // get the index of the thumb that is closest to the place where the track is clicked\n var draggedThumbIndex = utils_1.getClosestThumbIndex(_this.thumbRefs.map(function (t) { return t.current; }), e.touches[0].clientX, e.touches[0].clientY, _this.props.direction);\n // move the thumb which is closest to the place where the track is clicked\n (_a = _this.thumbRefs[draggedThumbIndex].current) === null || _a === void 0 ? void 0 : _a.focus();\n _this.setState({\n draggedThumbIndex: draggedThumbIndex\n }, function () { return _this.onMove(e.touches[0].clientX, e.touches[0].clientY); });\n }\n };\n _this.onMouseOrTouchStart = function (e) {\n if (_this.props.disabled)\n return;\n var isTouch = utils_1.isTouchEvent(e);\n if (!isTouch && e.button !== 0)\n return;\n var index = _this.getTargetIndex(e);\n if (index === -1)\n return;\n if (isTouch) {\n _this.addTouchEvents(e);\n }\n else {\n _this.addMouseEvents(e);\n }\n _this.setState({\n draggedThumbIndex: index,\n thumbZIndexes: _this.state.thumbZIndexes.map(function (t, i) {\n if (i === index) {\n return Math.max.apply(Math, _this.state.thumbZIndexes);\n }\n return t <= _this.state.thumbZIndexes[index] ? t : t - 1;\n })\n });\n };\n _this.onMouseMove = function (e) {\n e.preventDefault();\n _this.onMove(e.clientX, e.clientY);\n };\n _this.onTouchMove = function (e) {\n e.preventDefault();\n _this.onMove(e.touches[0].clientX, e.touches[0].clientY);\n };\n _this.onKeyDown = function (e) {\n var _a = _this.props, values = _a.values, onChange = _a.onChange, step = _a.step, rtl = _a.rtl, direction = _a.direction;\n var isChanged = _this.state.isChanged;\n var index = _this.getTargetIndex(e.nativeEvent);\n var inverter = rtl || direction === types_1.Direction.Left || direction === types_1.Direction.Down\n ? -1\n : 1;\n if (index === -1)\n return;\n if (INCREASE_KEYS.includes(e.key)) {\n e.preventDefault();\n _this.setState({\n draggedThumbIndex: index,\n isChanged: true\n });\n onChange(utils_1.replaceAt(values, index, _this.normalizeValue(values[index] + inverter * (e.key === 'PageUp' ? step * 10 : step), index)));\n }\n else if (DECREASE_KEYS.includes(e.key)) {\n e.preventDefault();\n _this.setState({\n draggedThumbIndex: index,\n isChanged: true\n });\n onChange(utils_1.replaceAt(values, index, _this.normalizeValue(values[index] -\n inverter * (e.key === 'PageDown' ? step * 10 : step), index)));\n }\n else if (e.key === 'Tab') {\n _this.setState({ draggedThumbIndex: -1 }, function () {\n // If key pressed when thumb was moving, fire onFinalChange\n if (isChanged) {\n _this.fireOnFinalChange();\n }\n });\n }\n else {\n if (isChanged) {\n _this.fireOnFinalChange();\n }\n }\n };\n _this.onKeyUp = function (e) {\n var isChanged = _this.state.isChanged;\n _this.setState({\n draggedThumbIndex: -1\n }, function () {\n if (isChanged) {\n _this.fireOnFinalChange();\n }\n });\n };\n _this.onMove = function (clientX, clientY) {\n var _a = _this.state, draggedThumbIndex = _a.draggedThumbIndex, draggedTrackPos = _a.draggedTrackPos;\n var _b = _this.props, direction = _b.direction, min = _b.min, max = _b.max, onChange = _b.onChange, values = _b.values, step = _b.step, rtl = _b.rtl;\n if (draggedThumbIndex === -1 &&\n draggedTrackPos[0] === -1 &&\n draggedTrackPos[1] === -1)\n return null;\n var trackElement = _this.trackRef.current;\n // If component was closed down prematurely, A last onMove could be triggered based on requestAnimationFrame()\n if (!trackElement)\n return null;\n var trackRect = trackElement.getBoundingClientRect();\n var trackLength = utils_1.isVertical(direction)\n ? trackRect.height\n : trackRect.width;\n if (draggedTrackPos[0] !== -1 && draggedTrackPos[1] !== -1) {\n // calculate how much it moved since the last update\n var dX = clientX - draggedTrackPos[0];\n var dY = clientY - draggedTrackPos[1];\n // calculate the delta of the value\n var deltaValue = 0;\n switch (direction) {\n case types_1.Direction.Right:\n case types_1.Direction.Left:\n deltaValue = (dX / trackLength) * (max - min);\n break;\n case types_1.Direction.Down:\n case types_1.Direction.Up:\n deltaValue = (dY / trackLength) * (max - min);\n break;\n default:\n utils_1.assertUnreachable(direction);\n }\n // invert for RTL\n if (rtl) {\n deltaValue *= -1;\n }\n if (Math.abs(deltaValue) >= step / 2) {\n // adjust delta so it fits into the range\n for (var i = 0; i < _this.thumbRefs.length; i++) {\n if ((values[i] === max && Math.sign(deltaValue) === 1) ||\n (values[i] === min && Math.sign(deltaValue) === -1))\n return;\n var thumbValue = values[i] + deltaValue;\n if (thumbValue > max)\n deltaValue = max - values[i];\n else if (thumbValue < min)\n deltaValue = min - values[i];\n }\n // add the delta to each thumb\n var newValues = values.slice(0);\n for (var i = 0; i < _this.thumbRefs.length; i++) {\n newValues = utils_1.replaceAt(newValues, i, _this.normalizeValue(values[i] + deltaValue, i));\n }\n _this.setState({\n draggedTrackPos: [clientX, clientY]\n });\n onChange(newValues);\n }\n }\n else {\n var newValue = 0;\n switch (direction) {\n case types_1.Direction.Right:\n newValue =\n ((clientX - trackRect.left) / trackLength) * (max - min) + min;\n break;\n case types_1.Direction.Left:\n newValue =\n ((trackLength - (clientX - trackRect.left)) / trackLength) *\n (max - min) +\n min;\n break;\n case types_1.Direction.Down:\n newValue =\n ((clientY - trackRect.top) / trackLength) * (max - min) + min;\n break;\n case types_1.Direction.Up:\n newValue =\n ((trackLength - (clientY - trackRect.top)) / trackLength) *\n (max - min) +\n min;\n break;\n default:\n utils_1.assertUnreachable(direction);\n }\n // invert for RTL\n if (rtl) {\n newValue = max + min - newValue;\n }\n if (Math.abs(values[draggedThumbIndex] - newValue) >= step / 2) {\n onChange(utils_1.replaceAt(values, draggedThumbIndex, _this.normalizeValue(newValue, draggedThumbIndex)));\n }\n }\n };\n _this.normalizeValue = function (value, index) {\n var _a = _this.props, min = _a.min, max = _a.max, step = _a.step, allowOverlap = _a.allowOverlap, values = _a.values;\n return utils_1.normalizeValue(value, index, min, max, step, allowOverlap, values);\n };\n _this.onEnd = function (e) {\n e.preventDefault();\n document.removeEventListener('mousemove', _this.schdOnMouseMove);\n document.removeEventListener('touchmove', _this.schdOnTouchMove);\n document.removeEventListener('mouseup', _this.schdOnEnd);\n document.removeEventListener('touchend', _this.schdOnEnd);\n document.removeEventListener('touchcancel', _this.schdOnEnd);\n if (_this.state.draggedThumbIndex === -1 &&\n _this.state.draggedTrackPos[0] === -1 &&\n _this.state.draggedTrackPos[1] === -1)\n return null;\n _this.setState({ draggedThumbIndex: -1, draggedTrackPos: [-1, -1] }, function () {\n _this.fireOnFinalChange();\n });\n };\n _this.fireOnFinalChange = function () {\n _this.setState({ isChanged: false });\n var _a = _this.props, onFinalChange = _a.onFinalChange, values = _a.values;\n if (onFinalChange) {\n onFinalChange(values);\n }\n };\n _this.calculateMarkOffsets = function () {\n if (!_this.props.renderMark ||\n !_this.trackRef ||\n _this.trackRef.current === null)\n return;\n var elStyles = window.getComputedStyle(_this.trackRef.current);\n var trackWidth = parseInt(elStyles.width, 10);\n var trackHeight = parseInt(elStyles.height, 10);\n var paddingLeft = parseInt(elStyles.paddingLeft, 10);\n var paddingTop = parseInt(elStyles.paddingTop, 10);\n var res = [];\n for (var i = 0; i < _this.numOfMarks + 1; i++) {\n var markHeight = 9999;\n var markWidth = 9999;\n if (_this.markRefs[i].current) {\n var markRect = _this.markRefs[i].current.getBoundingClientRect();\n markHeight = markRect.height;\n markWidth = markRect.width;\n }\n if (_this.props.direction === types_1.Direction.Left ||\n _this.props.direction === types_1.Direction.Right) {\n res.push([\n Math.round((trackWidth / _this.numOfMarks) * i + paddingLeft - markWidth / 2),\n -Math.round((markHeight - trackHeight) / 2)\n ]);\n }\n else {\n res.push([\n Math.round((trackHeight / _this.numOfMarks) * i + paddingTop - markHeight / 2),\n -Math.round((markWidth - trackWidth) / 2)\n ]);\n }\n }\n _this.setState({ markOffsets: res });\n };\n if (props.step === 0) {\n throw new Error('\"step\" property should be a positive number');\n }\n _this.numOfMarks = (props.max - props.min) / _this.props.step;\n _this.schdOnMouseMove = utils_1.schd(_this.onMouseMove);\n _this.schdOnTouchMove = utils_1.schd(_this.onTouchMove);\n _this.schdOnEnd = utils_1.schd(_this.onEnd);\n _this.thumbRefs = props.values.map(function () { return React.createRef(); });\n for (var i = 0; i < _this.numOfMarks + 1; i++) {\n _this.markRefs[i] = React.createRef();\n }\n return _this;\n }\n Range.prototype.componentDidMount = function () {\n var _this = this;\n var _a = this.props, values = _a.values, min = _a.min, step = _a.step;\n this.resizeObserver = window.ResizeObserver\n ? new window.ResizeObserver(this.onResize)\n : {\n observe: function () { return window.addEventListener('resize', _this.onResize); },\n unobserve: function () { return window.removeEventListener('resize', _this.onResize); }\n };\n document.addEventListener('touchstart', this.onMouseOrTouchStart, {\n passive: false\n });\n document.addEventListener('mousedown', this.onMouseOrTouchStart, {\n passive: false\n });\n !this.props.allowOverlap && utils_1.checkInitialOverlap(this.props.values);\n this.props.values.forEach(function (value) {\n return utils_1.checkBoundaries(value, _this.props.min, _this.props.max);\n });\n this.resizeObserver.observe(this.trackRef.current);\n utils_1.translateThumbs(this.getThumbs(), this.getOffsets(), this.props.rtl);\n this.calculateMarkOffsets();\n values.forEach(function (value) {\n if (!utils_1.isStepDivisible(min, value, step)) {\n console.warn('The `values` property is in conflict with the current `step`, `min`, and `max` properties. Please provide values that are accessible using the min, max, and step values.');\n }\n });\n };\n Range.prototype.componentDidUpdate = function (prevProps, prevState) {\n var _a = this.props, max = _a.max, min = _a.min, step = _a.step, values = _a.values, rtl = _a.rtl;\n if (prevProps.max !== max ||\n prevProps.min !== min ||\n prevProps.step !== step) {\n this.markRefs = [];\n this.numOfMarks = (max - min) / step;\n for (var i = 0; i < this.numOfMarks + 1; i++) {\n this.markRefs[i] = React.createRef();\n }\n }\n utils_1.translateThumbs(this.getThumbs(), this.getOffsets(), rtl);\n // ensure offsets are calculated when the refs for the marks have been created\n // and those refs have been mounted to the dom\n // on the state update in calculateOffsets with new markOffsets are calculated\n if (prevProps.max !== max ||\n prevProps.min !== min ||\n prevProps.step !== step ||\n prevState.markOffsets.length !== this.state.markOffsets.length) {\n this.calculateMarkOffsets();\n values.forEach(function (value) {\n if (!utils_1.isStepDivisible(min, value, step)) {\n console.warn('The `values` property is in conflict with the current `step`, `min`, and `max` properties. Please provide values that are accessible using the min, max, and step values.');\n }\n });\n }\n };\n Range.prototype.componentWillUnmount = function () {\n var options = {\n passive: false\n };\n document.removeEventListener('mousedown', this.onMouseOrTouchStart, options);\n // These need to be removed!!\n document.removeEventListener('mousemove', this.schdOnMouseMove);\n document.removeEventListener('touchmove', this.schdOnTouchMove);\n document.removeEventListener('touchstart', this.onMouseOrTouchStart);\n document.removeEventListener('mouseup', this.schdOnEnd);\n document.removeEventListener('touchend', this.schdOnEnd);\n this.resizeObserver.unobserve(this.trackRef.current);\n };\n Range.prototype.render = function () {\n var _this = this;\n var _a = this.props, renderTrack = _a.renderTrack, renderThumb = _a.renderThumb, _b = _a.renderMark, renderMark = _b === void 0 ? function () { return null; } : _b, values = _a.values, min = _a.min, max = _a.max, allowOverlap = _a.allowOverlap, disabled = _a.disabled;\n var _c = this.state, draggedThumbIndex = _c.draggedThumbIndex, thumbZIndexes = _c.thumbZIndexes, markOffsets = _c.markOffsets;\n return renderTrack({\n props: {\n style: {\n // creates stacking context that prevents z-index applied to thumbs\n // interfere with other elements\n transform: 'scale(1)',\n cursor: draggedThumbIndex > -1\n ? 'grabbing'\n : this.props.draggableTrack\n ? utils_1.isVertical(this.props.direction)\n ? 'ns-resize'\n : 'ew-resize'\n : values.length === 1 && !disabled\n ? 'pointer'\n : 'inherit'\n },\n onMouseDown: disabled ? utils_1.voidFn : this.onMouseDownTrack,\n onTouchStart: disabled ? utils_1.voidFn : this.onTouchStartTrack,\n ref: this.trackRef\n },\n isDragged: this.state.draggedThumbIndex > -1,\n disabled: disabled,\n children: __spreadArrays(markOffsets.map(function (offset, index, arr) {\n return renderMark({\n props: {\n style: _this.props.direction === types_1.Direction.Left ||\n _this.props.direction === types_1.Direction.Right\n ? {\n position: 'absolute',\n left: offset[0] + \"px\",\n marginTop: offset[1] + \"px\"\n }\n : {\n position: 'absolute',\n top: offset[0] + \"px\",\n marginLeft: offset[1] + \"px\"\n },\n key: \"mark\" + index,\n ref: _this.markRefs[index]\n },\n index: index\n });\n }), values.map(function (value, index) {\n var isDragged = _this.state.draggedThumbIndex === index;\n return renderThumb({\n index: index,\n value: value,\n isDragged: isDragged,\n props: {\n style: {\n position: 'absolute',\n zIndex: thumbZIndexes[index],\n cursor: disabled ? 'inherit' : isDragged ? 'grabbing' : 'grab',\n userSelect: 'none',\n touchAction: 'none',\n WebkitUserSelect: 'none',\n MozUserSelect: 'none',\n msUserSelect: 'none'\n },\n key: index,\n tabIndex: disabled ? undefined : 0,\n 'aria-valuemax': allowOverlap ? max : values[index + 1] || max,\n 'aria-valuemin': allowOverlap ? min : values[index - 1] || min,\n 'aria-valuenow': value,\n draggable: false,\n ref: _this.thumbRefs[index],\n role: 'slider',\n onKeyDown: disabled ? utils_1.voidFn : _this.onKeyDown,\n onKeyUp: disabled ? utils_1.voidFn : _this.onKeyUp\n }\n });\n }))\n });\n };\n Range.defaultProps = {\n step: 1,\n direction: types_1.Direction.Right,\n rtl: false,\n disabled: false,\n allowOverlap: false,\n draggableTrack: false,\n min: 0,\n max: 100\n };\n return Range;\n}(React.Component));\nexports.default = Range;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.checkValuesAgainstBoundaries = exports.relativeValue = exports.useThumbOverlap = exports.Direction = exports.getTrackBackground = exports.Range = void 0;\nvar Range_1 = __importDefault(require(\"./Range\"));\nexports.Range = Range_1.default;\nvar utils_1 = require(\"./utils\");\nObject.defineProperty(exports, \"getTrackBackground\", { enumerable: true, get: function () { return utils_1.getTrackBackground; } });\nObject.defineProperty(exports, \"useThumbOverlap\", { enumerable: true, get: function () { return utils_1.useThumbOverlap; } });\nObject.defineProperty(exports, \"relativeValue\", { enumerable: true, get: function () { return utils_1.relativeValue; } });\nObject.defineProperty(exports, \"checkValuesAgainstBoundaries\", { enumerable: true, get: function () { return utils_1.checkValuesAgainstBoundaries; } });\nvar types_1 = require(\"./types\");\nObject.defineProperty(exports, \"Direction\", { enumerable: true, get: function () { return types_1.Direction; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Direction = void 0;\nvar Direction;\n(function (Direction) {\n Direction[\"Right\"] = \"to right\";\n Direction[\"Left\"] = \"to left\";\n Direction[\"Down\"] = \"to bottom\";\n Direction[\"Up\"] = \"to top\";\n})(Direction = exports.Direction || (exports.Direction = {}));\n","\"use strict\";\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.useThumbOverlap = exports.assertUnreachable = exports.voidFn = exports.getTrackBackground = exports.replaceAt = exports.schd = exports.translate = exports.getClosestThumbIndex = exports.translateThumbs = exports.getPaddingAndBorder = exports.getMargin = exports.checkInitialOverlap = exports.checkValuesAgainstBoundaries = exports.checkBoundaries = exports.isVertical = exports.relativeValue = exports.normalizeValue = exports.isStepDivisible = exports.isTouchEvent = exports.getStepDecimals = void 0;\nvar react_1 = require(\"react\");\nvar types_1 = require(\"./types\");\nvar getStepDecimals = function (step) {\n var decimals = step.toString().split('.')[1];\n return decimals ? decimals.length : 0;\n};\nexports.getStepDecimals = getStepDecimals;\nfunction isTouchEvent(event) {\n return ((event.touches && event.touches.length) ||\n (event.changedTouches && event.changedTouches.length));\n}\nexports.isTouchEvent = isTouchEvent;\nfunction isStepDivisible(min, max, step) {\n var res = (max - min) / step;\n var precision = 8;\n var roundedRes = Number(res.toFixed(precision));\n return parseInt(roundedRes.toString(), 10) === roundedRes;\n}\nexports.isStepDivisible = isStepDivisible;\nfunction normalizeValue(value, index, min, max, step, allowOverlap, values) {\n var BIG_NUM = 10e10;\n value = Math.round(value * BIG_NUM) / BIG_NUM;\n if (!allowOverlap) {\n var prev = values[index - 1];\n var next = values[index + 1];\n if (prev && prev > value)\n return prev;\n if (next && next < value)\n return next;\n }\n if (value > max)\n return max;\n if (value < min)\n return min;\n // `remainder` is a difference between the given value and a full step value\n // that is closest lower to the given value and is in the range between the min value\n // and the given value\n var remainder = Math.floor(value * BIG_NUM - min * BIG_NUM) %\n Math.floor(step * BIG_NUM);\n var closestLowerNum = Math.floor(value * BIG_NUM - Math.abs(remainder));\n var rounded = remainder === 0 ? value : closestLowerNum / BIG_NUM;\n // Values with a remainder `< step/2` are rounded to the closest lower value\n // while values with a remainder `= > step/2` are rounded to the closest bigger value\n var res = Math.abs(remainder / BIG_NUM) < step / 2\n ? rounded\n : rounded + step;\n var decimalPlaces = exports.getStepDecimals(step);\n return parseFloat(res.toFixed(decimalPlaces));\n}\nexports.normalizeValue = normalizeValue;\nfunction relativeValue(value, min, max) {\n return (value - min) / (max - min);\n}\nexports.relativeValue = relativeValue;\nfunction isVertical(direction) {\n return direction === types_1.Direction.Up || direction === types_1.Direction.Down;\n}\nexports.isVertical = isVertical;\nfunction checkBoundaries(value, min, max) {\n if (min >= max) {\n throw new RangeError(\"min (\" + min + \") is equal/bigger than max (\" + max + \")\");\n }\n if (value < min) {\n throw new RangeError(\"value (\" + value + \") is smaller than min (\" + min + \")\");\n }\n if (value > max) {\n throw new RangeError(\"value (\" + value + \") is bigger than max (\" + max + \")\");\n }\n}\nexports.checkBoundaries = checkBoundaries;\nfunction checkValuesAgainstBoundaries(value, min, max) {\n if (value < min) {\n // set selectedValue to min\n return min;\n }\n if (value > max) {\n // set selectedValue to max\n return max;\n }\n else {\n return value;\n }\n}\nexports.checkValuesAgainstBoundaries = checkValuesAgainstBoundaries;\nfunction checkInitialOverlap(values) {\n if (values.length < 2)\n return;\n if (!values.slice(1).every(function (item, i) { return values[i] <= item; })) {\n throw new RangeError(\"values={[\" + values + \"]} needs to be sorted when allowOverlap={false}\");\n }\n}\nexports.checkInitialOverlap = checkInitialOverlap;\nfunction getMargin(element) {\n var style = window.getComputedStyle(element);\n return {\n top: parseInt(style['margin-top'], 10),\n bottom: parseInt(style['margin-bottom'], 10),\n left: parseInt(style['margin-left'], 10),\n right: parseInt(style['margin-right'], 10)\n };\n}\nexports.getMargin = getMargin;\nfunction getPaddingAndBorder(element) {\n var style = window.getComputedStyle(element);\n return {\n top: parseInt(style['padding-top'], 10) + parseInt(style['border-top-width'], 10),\n bottom: parseInt(style['padding-bottom'], 10) + parseInt(style['border-bottom-width'], 10),\n left: parseInt(style['padding-left'], 10) + parseInt(style['border-left-width'], 10),\n right: parseInt(style['padding-right'], 10) + parseInt(style['border-right-width'], 10),\n };\n}\nexports.getPaddingAndBorder = getPaddingAndBorder;\nfunction translateThumbs(elements, offsets, rtl) {\n var inverter = rtl ? -1 : 1;\n elements.forEach(function (element, index) {\n return translate(element, inverter * offsets[index].x, offsets[index].y);\n });\n}\nexports.translateThumbs = translateThumbs;\n/**\n * Util function for calculating the index of the thumb that is closes to a given position\n * @param thumbs - array of Thumb element to calculate the distance from\n * @param clientX - target x position (mouse/touch)\n * @param clientY - target y position (mouse/touch)\n * @param direction - the direction of the track\n */\nfunction getClosestThumbIndex(thumbs, clientX, clientY, direction) {\n var thumbIndex = 0;\n var minThumbDistance = getThumbDistance(thumbs[0], clientX, clientY, direction);\n for (var i = 1; i < thumbs.length; i++) {\n var thumbDistance = getThumbDistance(thumbs[i], clientX, clientY, direction);\n if (thumbDistance < minThumbDistance) {\n minThumbDistance = thumbDistance;\n thumbIndex = i;\n }\n }\n return thumbIndex;\n}\nexports.getClosestThumbIndex = getClosestThumbIndex;\nfunction translate(element, x, y) {\n element.style.transform = \"translate(\" + x + \"px, \" + y + \"px)\";\n}\nexports.translate = translate;\n// adapted from https://github.com/alexreardon/raf-schd\nvar schd = function (fn) {\n var lastArgs = [];\n var frameId = null;\n var wrapperFn = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n lastArgs = args;\n if (frameId) {\n return;\n }\n frameId = requestAnimationFrame(function () {\n frameId = null;\n fn.apply(void 0, lastArgs);\n });\n };\n return wrapperFn;\n};\nexports.schd = schd;\nfunction replaceAt(values, index, value) {\n var ret = values.slice(0);\n ret[index] = value;\n return ret;\n}\nexports.replaceAt = replaceAt;\nfunction getTrackBackground(_a) {\n var values = _a.values, colors = _a.colors, min = _a.min, max = _a.max, _b = _a.direction, direction = _b === void 0 ? types_1.Direction.Right : _b, _c = _a.rtl, rtl = _c === void 0 ? false : _c;\n if (rtl && direction === types_1.Direction.Right) {\n direction = types_1.Direction.Left;\n }\n else if (rtl && types_1.Direction.Left) {\n direction = types_1.Direction.Right;\n }\n // sort values ascending\n var progress = values.slice(0).sort(function (a, b) { return a - b; }).map(function (value) { return ((value - min) / (max - min)) * 100; });\n var middle = progress.reduce(function (acc, point, index) {\n return acc + \", \" + colors[index] + \" \" + point + \"%, \" + colors[index + 1] + \" \" + point + \"%\";\n }, '');\n return \"linear-gradient(\" + direction + \", \" + colors[0] + \" 0%\" + middle + \", \" + colors[colors.length - 1] + \" 100%)\";\n}\nexports.getTrackBackground = getTrackBackground;\nfunction voidFn() { }\nexports.voidFn = voidFn;\nfunction assertUnreachable(x) {\n throw new Error(\"Didn't expect to get here\");\n}\nexports.assertUnreachable = assertUnreachable;\n/**\n * Util function for grabbing the true largest width of a thumb\n * including the label\n * @param thumbEl - Thumb element to grab the largest width from\n * @param value - Thumb value, not label value\n * @param separator - Label separator value\n */\nvar getThumbWidth = function (thumbEl, value, separator, decimalPlaces, valueToLabel) {\n if (valueToLabel === void 0) { valueToLabel = function (value) { return value; }; }\n var width = Math.ceil(__spreadArrays([thumbEl], Array.from(thumbEl.children)).reduce(function (width, el) {\n var elWidth = Math.ceil(el.getBoundingClientRect().width);\n /**\n * If a label contains a merged label value, it won't return the true\n * label width for that Thumb. Clone the label and change the value\n * to that individual Thumb value in order to grab the true width.\n */\n if (el.innerText &&\n el.innerText.includes(separator) &&\n el.childElementCount === 0) {\n var elClone = el.cloneNode(true);\n elClone.innerHTML = valueToLabel(value.toFixed(decimalPlaces));\n elClone.style.visibility = 'hidden';\n document.body.appendChild(elClone);\n elWidth = Math.ceil(elClone.getBoundingClientRect().width);\n document.body.removeChild(elClone);\n }\n return elWidth > width ? elWidth : width;\n }, thumbEl.getBoundingClientRect().width));\n return width;\n};\n/**\n * Bulk of logic for thumb overlaps\n * Consider a scenario with 5 thumbs;\n * Thumb 1 overlaps with thumb 0 and thumb 2\n * Thumb 2 overlaps with thumb 3\n * We need an array that contains [0, 1, 2, 3]\n * The function needs to return the directly overlapping thumbs\n * and all thumbs overlapping linked to those and so on\n * @param index - Thumb index calculating overlaps for\n * @param offsets - Current Array of Thumb offsets for Range\n * @param thumbs - Array of Thumb elements\n * @param values - Array of Thumb values\n * @param separator - String separator for merged label values\n * @returns overlaps - Array of all overlapping thumbs from the index\n */\nvar getOverlaps = function (index, offsets, thumbs, values, separator, decimalPlaces, valueToLabel) {\n if (valueToLabel === void 0) { valueToLabel = function (value) { return value; }; }\n var overlaps = [];\n /**\n * Recursive function for building the overlaps Array\n * If an overlap is found, find the overlaps for that overlap\n * @param thumbIndex current Thumb index to find overlaps from\n */\n var buildOverlaps = function (thumbIndex) {\n var thumbXWidth = getThumbWidth(thumbs[thumbIndex], values[thumbIndex], separator, decimalPlaces, valueToLabel);\n var thumbX = offsets[thumbIndex].x;\n /**\n * Iterate through the Thumb offsets, if there is a match\n * add the thumbIndex and siblingIndex to the overlaps Array\n *\n * Then build overlaps from the overlapping siblingIndex\n */\n offsets.forEach(function (_a, siblingIndex) {\n var siblingX = _a.x;\n var siblingWidth = getThumbWidth(thumbs[siblingIndex], values[siblingIndex], separator, decimalPlaces, valueToLabel);\n if (thumbIndex !== siblingIndex &&\n ((thumbX >= siblingX && thumbX <= siblingX + siblingWidth) ||\n (thumbX + thumbXWidth >= siblingX &&\n thumbX + thumbXWidth <= siblingX + siblingWidth))) {\n if (!overlaps.includes(siblingIndex)) {\n overlaps.push(thumbIndex);\n overlaps.push(siblingIndex);\n overlaps = __spreadArrays(overlaps, [thumbIndex, siblingIndex]);\n buildOverlaps(siblingIndex);\n }\n }\n });\n };\n buildOverlaps(index);\n // Sort and remove duplicates from the built overlaps\n return Array.from(new Set(overlaps.sort()));\n};\n/**\n * A custom React Hook for calculating whether a thumb overlaps\n * another and whether labels could/should merge.\n * @param rangeRef - React ref value of Range component\n * @param values - current Range values Array\n * @param index - thumb index\n * @param step - step value, used to calculate the number of decimal places\n * @param separator - string to separate thumb values\n * @returns label value + styling for thumb label\n */\nvar useThumbOverlap = function (rangeRef, values, index, step, separator, valueToLabel) {\n if (step === void 0) { step = 0.1; }\n if (separator === void 0) { separator = ' - '; }\n if (valueToLabel === void 0) { valueToLabel = function (value) { return value; }; }\n var decimalPlaces = exports.getStepDecimals(step);\n // Create initial label style and value. Label value defaults to thumb value\n var _a = react_1.useState({}), labelStyle = _a[0], setLabelStyle = _a[1];\n var _b = react_1.useState(valueToLabel(values[index].toFixed(decimalPlaces))), labelValue = _b[0], setLabelValue = _b[1];\n // When the rangeRef or values change, update the Thumb label values and styling\n react_1.useEffect(function () {\n if (rangeRef) {\n var thumbs = rangeRef.getThumbs();\n if (thumbs.length < 1)\n return;\n var newStyle = {};\n var offsets_1 = rangeRef.getOffsets();\n /**\n * Get any overlaps for the given Thumb index. This must return all linked\n * Thumbs. So if there are 4 Thumbs and Thumbs 2, 3 and 4 overlap. If we are\n * getting the overlaps for Thumb 1 and it overlaps only Thumb 2, we must get\n * 2, 3 and 4 also.\n */\n var overlaps = getOverlaps(index, offsets_1, thumbs, values, separator, decimalPlaces, valueToLabel);\n // Set a default label value of the Thumb value\n var labelValue_1 = valueToLabel(values[index].toFixed(decimalPlaces));\n /**\n * If there are overlaps for the Thumb, we need to calculate the correct\n * Label value along with the relevant styling. We only want to show a Label\n * for the left most Thumb in an overlapping set.\n * All other Thumbs will be set to display: none.\n */\n if (overlaps.length) {\n /**\n * Get an Array of the offsets for the overlapping Thumbs\n * This is so we can determine if the Thumb we are looking at\n * is the left most thumb in an overlapping set\n */\n var offsetsX = overlaps.reduce(function (a, c, i, s) {\n return a.length ? __spreadArrays(a, [offsets_1[s[i]].x]) : [offsets_1[s[i]].x];\n }, []);\n /**\n * If our Thumb is the left most Thumb, we can build a Label value\n * and set the style for that Label\n */\n if (Math.min.apply(Math, offsetsX) === offsets_1[index].x) {\n /**\n * First calculate the Label value. To do this,\n * grab all the values for the Thumbs in our overlaps.\n * Then convert that to a Set and sort it whilst removing duplicates.\n */\n var labelValues_1 = [];\n overlaps.forEach(function (thumb) {\n labelValues_1.push(values[thumb].toFixed(decimalPlaces));\n });\n /**\n * Update the labelValue with the resulting Array\n * joined by our defined separator\n */\n labelValue_1 = Array.from(new Set(labelValues_1.sort(function (a, b) { return parseFloat(a) - parseFloat(b); })))\n .map(valueToLabel)\n .join(separator);\n /**\n * Lastly, build the label styling. The label styling will\n * position the label and apply a transform so that it's centered.\n * We want the center point between the left edge of the left most Thumb\n * and the right edge of the right most Thumb.\n */\n var first = Math.min.apply(Math, offsetsX);\n var last = Math.max.apply(Math, offsetsX);\n var lastWidth = thumbs[overlaps[offsetsX.indexOf(last)]].getBoundingClientRect().width;\n newStyle.left = Math.abs(first - (last + lastWidth)) / 2 + \"px\";\n newStyle.transform = 'translate(-50%, 0)';\n }\n else {\n // If the Thumb isn't the left most Thumb, hide the Label!\n newStyle.visibility = 'hidden';\n }\n }\n // Update the label value and style\n setLabelValue(labelValue_1);\n setLabelStyle(newStyle);\n }\n }, [rangeRef, values]);\n return [labelValue, labelStyle];\n};\nexports.useThumbOverlap = useThumbOverlap;\n/**\n * Util function for calculating the distance of the center of a thumb\n * form a given mouse/touch target's position\n * @param thumbEl - Thumb element to calculate the distance from\n * @param clientX - target x position (mouse/touch)\n * @param clientY - target y position (mouse/touch)\n * @param direction - the direction of the track\n */\nfunction getThumbDistance(thumbEl, clientX, clientY, direction) {\n var _a = thumbEl.getBoundingClientRect(), left = _a.left, top = _a.top, width = _a.width, height = _a.height;\n return isVertical(direction) ? Math.abs(clientY - (top + height / 2)) : Math.abs(clientX - (left + width / 2));\n}\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","function replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n/**\n * Removes a CSS class from a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\n\nexport default function removeClass(element, className) {\n if (element.classList) {\n element.classList.remove(className);\n } else if (typeof element.className === 'string') {\n element.className = replaceClassName(element.className, className);\n } else {\n element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n }\n}","export default {\n disabled: false\n};","import React from 'react';\nexport default React.createContext(null);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport addOneClass from 'dom-helpers/addClass';\nimport removeOneClass from 'dom-helpers/removeClass';\nimport React from 'react';\nimport Transition from './Transition';\nimport { classNamesShape } from './utils/PropTypes';\n\nvar _addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return addOneClass(node, c);\n });\n};\n\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return removeOneClass(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](https://docs.angularjs.org/api/ngAnimate) library, you should\n * use it if you're using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n *
\n * {\"I'll receive my-node-* classes\"}\n *
\n *
\n * \n *
\n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**, so it's\n * important to add `transition` declaration only to them, otherwise transitions\n * might not behave as intended! This might not be obvious when the transitions\n * are symmetrical, i.e. when `*-enter-active` is the same as `*-exit`, like in\n * the example above (minus `transition`), but it becomes apparent in more\n * complex transitions.\n *\n * **Note**: If you're using the\n * [`appear`](http://reactcommunity.org/react-transition-group/transition#Transition-prop-appear)\n * prop, make sure to define styles for `.appear-*` classes as well.\n */\n\n\nvar CSSTransition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.appliedClasses = {\n appear: {},\n enter: {},\n exit: {}\n };\n\n _this.onEnter = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument[0],\n appearing = _this$resolveArgument[1];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, appearing ? 'appear' : 'enter', 'base');\n\n if (_this.props.onEnter) {\n _this.props.onEnter(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntering = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument2 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument2[0],\n appearing = _this$resolveArgument2[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.addClass(node, type, 'active');\n\n if (_this.props.onEntering) {\n _this.props.onEntering(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntered = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument3 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument3[0],\n appearing = _this$resolveArgument3[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.removeClasses(node, type);\n\n _this.addClass(node, type, 'done');\n\n if (_this.props.onEntered) {\n _this.props.onEntered(maybeNode, maybeAppearing);\n }\n };\n\n _this.onExit = function (maybeNode) {\n var _this$resolveArgument4 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument4[0];\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n _this.addClass(node, 'exit', 'base');\n\n if (_this.props.onExit) {\n _this.props.onExit(maybeNode);\n }\n };\n\n _this.onExiting = function (maybeNode) {\n var _this$resolveArgument5 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument5[0];\n\n _this.addClass(node, 'exit', 'active');\n\n if (_this.props.onExiting) {\n _this.props.onExiting(maybeNode);\n }\n };\n\n _this.onExited = function (maybeNode) {\n var _this$resolveArgument6 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument6[0];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, 'exit', 'done');\n\n if (_this.props.onExited) {\n _this.props.onExited(maybeNode);\n }\n };\n\n _this.resolveArguments = function (maybeNode, maybeAppearing) {\n return _this.props.nodeRef ? [_this.props.nodeRef.current, maybeNode] // here `maybeNode` is actually `appearing`\n : [maybeNode, maybeAppearing];\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + \"-\" : '';\n var baseClassName = isStringClassNames ? \"\" + prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? baseClassName + \"-active\" : classNames[type + \"Active\"];\n var doneClassName = isStringClassNames ? baseClassName + \"-done\" : classNames[type + \"Done\"];\n return {\n baseClassName: baseClassName,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.addClass = function addClass(node, type, phase) {\n var className = this.getClassNames(type)[phase + \"ClassName\"];\n\n var _this$getClassNames = this.getClassNames('enter'),\n doneClassName = _this$getClassNames.doneClassName;\n\n if (type === 'appear' && phase === 'done' && doneClassName) {\n className += \" \" + doneClassName;\n } // This is to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n\n\n if (phase === 'active') {\n /* eslint-disable no-unused-expressions */\n node && node.scrollTop;\n }\n\n if (className) {\n this.appliedClasses[type][phase] = className;\n\n _addClass(node, className);\n }\n };\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$appliedClasses$ = this.appliedClasses[type],\n baseClassName = _this$appliedClasses$.base,\n activeClassName = _this$appliedClasses$.active,\n doneClassName = _this$appliedClasses$.done;\n this.appliedClasses[type] = {};\n\n if (baseClassName) {\n removeClass(node, baseClassName);\n }\n\n if (activeClassName) {\n removeClass(node, activeClassName);\n }\n\n if (doneClassName) {\n removeClass(node, doneClassName);\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n _ = _this$props.classNames,\n props = _objectWithoutPropertiesLoose(_this$props, [\"classNames\"]);\n\n return /*#__PURE__*/React.createElement(Transition, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(React.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, Transition.propTypes, {\n /**\n * The animation classNames applied to the component as it appears, enters,\n * exits or has finished the transition. A single name can be provided, which\n * will be suffixed for each stage, e.g. `classNames=\"fade\"` applies:\n *\n * - `fade-appear`, `fade-appear-active`, `fade-appear-done`\n * - `fade-enter`, `fade-enter-active`, `fade-enter-done`\n * - `fade-exit`, `fade-exit-active`, `fade-exit-done`\n *\n * A few details to note about how these classes are applied:\n *\n * 1. They are _joined_ with the ones that are already defined on the child\n * component, so if you want to add some base styles, you can use\n * `className` without worrying that it will be overridden.\n *\n * 2. If the transition component mounts with `in={false}`, no classes are\n * applied yet. You might be expecting `*-exit-done`, but if you think\n * about it, a component cannot finish exiting if it hasn't entered yet.\n *\n * 2. `fade-appear-done` and `fade-enter-done` will _both_ be applied. This\n * allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply\n * an epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: classNamesShape,\n\n /**\n * A `` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit-active' is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nexport default CSSTransition;","import hasClass from './hasClass';\n/**\n * Adds a CSS class to a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\nexport default function addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}","/**\n * Checks if a given element has a CSS class.\n * \n * @param element the element\n * @param className the CSS class name\n */\nexport default function hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);\n return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}","/**\n * SSR Window 2.0.0\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2020, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: May 12, 2020\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target, src) {\n if (target === void 0) { target = {}; }\n if (src === void 0) { src = {}; }\n Object.keys(src).forEach(function (key) {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nvar doc = typeof document !== 'undefined' ? document : {};\nvar ssrDocument = {\n body: {},\n addEventListener: function () { },\n removeEventListener: function () { },\n activeElement: {\n blur: function () { },\n nodeName: '',\n },\n querySelector: function () {\n return null;\n },\n querySelectorAll: function () {\n return [];\n },\n getElementById: function () {\n return null;\n },\n createEvent: function () {\n return {\n initEvent: function () { },\n };\n },\n createElement: function () {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute: function () { },\n getElementsByTagName: function () {\n return [];\n },\n };\n },\n createElementNS: function () {\n return {};\n },\n importNode: function () {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nextend(doc, ssrDocument);\n\nvar win = typeof window !== 'undefined' ? window : {};\nvar ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState: function () { },\n pushState: function () { },\n go: function () { },\n back: function () { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener: function () { },\n removeEventListener: function () { },\n getComputedStyle: function () {\n return {\n getPropertyValue: function () {\n return '';\n },\n };\n },\n Image: function () { },\n Date: function () { },\n screen: {},\n setTimeout: function () { },\n clearTimeout: function () { },\n matchMedia: function () {\n return {};\n },\n};\nextend(win, ssrWindow);\n\nexport { doc as document, extend, win as window };\n","/**\n * Dom7 2.1.5\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * http://framework7.io/docs/dom.html\n *\n * Copyright 2020, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n *\n * Licensed under MIT\n *\n * Released on: May 15, 2020\n */\nimport { document, window } from 'ssr-window';\n\nclass Dom7 {\n constructor(arr) {\n const self = this;\n // Create array-like object\n for (let i = 0; i < arr.length; i += 1) {\n self[i] = arr[i];\n }\n self.length = arr.length;\n // Return collection with methods\n return this;\n }\n}\n\nfunction $(selector, context) {\n const arr = [];\n let i = 0;\n if (selector && !context) {\n if (selector instanceof Dom7) {\n return selector;\n }\n }\n if (selector) {\n // String\n if (typeof selector === 'string') {\n let els;\n let tempParent;\n const html = selector.trim();\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(':~]/)) {\n // Pure ID selector\n els = [document.getElementById(selector.trim().split('#')[1])];\n } else {\n // Other selectors\n els = (context || document).querySelectorAll(selector.trim());\n }\n for (i = 0; i < els.length; i += 1) {\n if (els[i]) arr.push(els[i]);\n }\n }\n } else if (selector.nodeType || selector === window || selector === document) {\n // Node/element\n arr.push(selector);\n } else if (selector.length > 0 && selector[0].nodeType) {\n // Array of elements or instance of Dom\n for (i = 0; i < selector.length; i += 1) {\n arr.push(selector[i]);\n }\n }\n }\n return new Dom7(arr);\n}\n\n$.fn = Dom7.prototype;\n$.Class = Dom7;\n$.Dom7 = Dom7;\n\nfunction unique(arr) {\n const uniqueArray = [];\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group1) => group1.toUpperCase());\n}\n\nfunction requestAnimationFrame(callback) {\n if (window.requestAnimationFrame) return window.requestAnimationFrame(callback);\n else if (window.webkitRequestAnimationFrame) return window.webkitRequestAnimationFrame(callback);\n return window.setTimeout(callback, 1000 / 60);\n}\nfunction cancelAnimationFrame(id) {\n if (window.cancelAnimationFrame) return window.cancelAnimationFrame(id);\n else if (window.webkitCancelAnimationFrame) return window.webkitCancelAnimationFrame(id);\n return window.clearTimeout(id);\n}\n\n// Classes and attributes\nfunction addClass(className) {\n if (typeof className === 'undefined') {\n return this;\n }\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.add(classes[i]);\n }\n }\n return this;\n}\nfunction removeClass(className) {\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.remove(classes[i]);\n }\n }\n return this;\n}\nfunction hasClass(className) {\n if (!this[0]) return false;\n return this[0].classList.contains(className);\n}\nfunction toggleClass(className) {\n const classes = className.split(' ');\n for (let i = 0; i < classes.length; i += 1) {\n for (let j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.toggle(classes[i]);\n }\n }\n return this;\n}\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n }\n\n // Set attrs\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n // eslint-disable-next-line\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n return this;\n}\n// eslint-disable-next-line\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n return this;\n}\n// eslint-disable-next-line\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n // eslint-disable-next-line\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n return this;\n }\n}\nfunction data(key, value) {\n let el;\n if (typeof value === 'undefined') {\n el = this[0];\n // Get value\n if (el) {\n if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n if (dataKey) {\n return dataKey;\n }\n return undefined;\n }\n return undefined;\n }\n\n // Set value\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n return this;\n}\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n if (el.dataset) {\n // eslint-disable-next-line\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n // eslint-disable-next-line\n const attr = el.attributes[i];\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n // eslint-disable-next-line\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;\n else if (dataset[key] === 'true') dataset[key] = true;\n else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n return dataset;\n}\nfunction val(value) {\n const dom = this;\n if (typeof value === 'undefined') {\n if (dom[0]) {\n if (dom[0].multiple && dom[0].nodeName.toLowerCase() === 'select') {\n const values = [];\n for (let i = 0; i < dom[0].selectedOptions.length; i += 1) {\n values.push(dom[0].selectedOptions[i].value);\n }\n return values;\n }\n return dom[0].value;\n }\n return undefined;\n }\n\n for (let i = 0; i < dom.length; i += 1) {\n const el = dom[i];\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n return dom;\n}\n// Transforms\n// eslint-disable-next-line\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n const elStyle = this[i].style;\n elStyle.webkitTransform = transform;\n elStyle.transform = transform;\n }\n return this;\n}\nfunction transition(duration) {\n if (typeof duration !== 'string') {\n duration = `${duration}ms`; // eslint-disable-line\n }\n for (let i = 0; i < this.length; i += 1) {\n const elStyle = this[i].style;\n elStyle.webkitTransitionDuration = duration;\n elStyle.transitionDuration = duration;\n }\n return this;\n}\n// Events\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n if ($(target).is(targetSelector)) listener.apply(target, eventData);\n else {\n const parents = $(target).parents(); // eslint-disable-line\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n listener.apply(this, eventData);\n }\n const events = eventType.split(' ');\n let j;\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent,\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent,\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n return this;\n}\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n if (!capture) capture = false;\n\n const events = eventType.split(' ');\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n return this;\n}\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\nfunction trigger(...args) {\n const events = args[0].split(' ');\n const eventData = args[1];\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let evt;\n try {\n evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true,\n });\n } catch (e) {\n evt = document.createEvent('Event');\n evt.initEvent(event, true, true);\n evt.detail = eventData;\n }\n // eslint-disable-next-line\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n return this;\n}\nfunction transitionEnd(callback) {\n const events = ['webkitTransitionEnd', 'transitionend'];\n const dom = this;\n let i;\n function fireCallBack(e) {\n /* jshint validthis:true */\n if (e.target !== this) return;\n callback.call(this, e);\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n}\nfunction animationEnd(callback) {\n const events = ['webkitAnimationEnd', 'animationend'];\n const dom = this;\n let i;\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n}\n// Sizing/Styles\nfunction width() {\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n return this[0].offsetWidth;\n }\n return null;\n}\nfunction height() {\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n return this[0].offsetHeight;\n }\n return null;\n}\nfunction offset() {\n if (this.length > 0) {\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: (box.top + scrollTop) - clientTop,\n left: (box.left + scrollLeft) - clientLeft,\n };\n }\n\n return null;\n}\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n return this;\n}\nfunction show() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n return this;\n}\nfunction styles() {\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\nfunction css(props, value) {\n let i;\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n for (i = 0; i < this.length; i += 1) {\n // eslint-disable-next-line\n for (let prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n return this;\n }\n }\n if (arguments.length === 2 && typeof props === 'string') {\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n return this;\n }\n return this;\n}\n\n// Dom manipulation\nfunction toArray() {\n const arr = [];\n for (let i = 0; i < this.length; i += 1) {\n arr.push(this[i]);\n }\n return arr;\n}\n// Iterate over the collection passing elements to `callback`\nfunction each(callback) {\n // Don't bother continuing without a callback\n if (!callback) return this;\n // Iterate over the current collection\n for (let i = 0; i < this.length; i += 1) {\n // If the callback returns false\n if (callback.call(this[i], i, this[i]) === false) {\n // End the loop early\n return this;\n }\n }\n // Return `this` to allow chained DOM operations\n return this;\n}\nfunction forEach(callback) {\n // Don't bother continuing without a callback\n if (!callback) return this;\n // Iterate over the current collection\n for (let i = 0; i < this.length; i += 1) {\n // If the callback returns false\n if (callback.call(this[i], this[i], i) === false) {\n // End the loop early\n return this;\n }\n }\n // Return `this` to allow chained DOM operations\n return this;\n}\nfunction filter(callback) {\n const matchedItems = [];\n const dom = this;\n for (let i = 0; i < dom.length; i += 1) {\n if (callback.call(dom[i], i, dom[i])) matchedItems.push(dom[i]);\n }\n return new Dom7(matchedItems);\n}\nfunction map(callback) {\n const modifiedItems = [];\n const dom = this;\n for (let i = 0; i < dom.length; i += 1) {\n modifiedItems.push(callback.call(dom[i], i, dom[i]));\n }\n return new Dom7(modifiedItems);\n}\n// eslint-disable-next-line\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : undefined;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n return this;\n}\n// eslint-disable-next-line\nfunction text(text) {\n if (typeof text === 'undefined') {\n if (this[0]) {\n return this[0].textContent.trim();\n }\n return null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n return this;\n}\nfunction is(selector) {\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n else if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n else if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n\n compareWith = $(selector);\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n } else if (selector === document) return el === document;\n else if (selector === window) return el === window;\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n return false;\n }\n return false;\n}\nfunction indexOf(el) {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i] === el) return i;\n }\n return -1;\n}\nfunction index() {\n let child = this[0];\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\n// eslint-disable-next-line\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n let returnIndex;\n if (index > length - 1) {\n return new Dom7([]);\n }\n if (index < 0) {\n returnIndex = length + index;\n if (returnIndex < 0) return new Dom7([]);\n return new Dom7([this[returnIndex]]);\n }\n return new Dom7([this[index]]);\n}\nfunction append(...args) {\n let newChild;\n\n for (let k = 0; k < args.length; k += 1) {\n newChild = args[k];\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n// eslint-disable-next-line\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\nfunction prepend(newChild) {\n let i;\n let j;\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n return this;\n}\n// eslint-disable-next-line\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\nfunction insertBefore(selector) {\n const before = $(selector);\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\nfunction insertAfter(selector) {\n const after = $(selector);\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return new Dom7([this[0].nextElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (this[0].nextElementSibling) return new Dom7([this[0].nextElementSibling]);\n return new Dom7([]);\n }\n return new Dom7([]);\n}\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return new Dom7([]);\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return new Dom7(nextEls);\n}\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return new Dom7([el.previousElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (el.previousElementSibling) return new Dom7([el.previousElementSibling]);\n return new Dom7([]);\n }\n return new Dom7([]);\n}\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return new Dom7([]);\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return new Dom7(prevEls);\n}\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n return $(unique(parents));\n}\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentNode;\n }\n }\n return $(unique(parents));\n}\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n if (typeof selector === 'undefined') {\n return new Dom7([]);\n }\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n return closest;\n}\nfunction find(selector) {\n const foundElements = [];\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n return new Dom7(foundElements);\n}\nfunction children(selector) {\n const children = []; // eslint-disable-line\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].childNodes;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector) {\n if (childNodes[j].nodeType === 1) children.push(childNodes[j]);\n } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n return new Dom7(unique(children));\n}\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n return this;\n}\nfunction detach() {\n return this.remove();\n}\nfunction add(...args) {\n const dom = this;\n let i;\n let j;\n for (i = 0; i < args.length; i += 1) {\n const toAdd = $(args[i]);\n for (j = 0; j < toAdd.length; j += 1) {\n dom[dom.length] = toAdd[j];\n dom.length += 1;\n }\n }\n return dom;\n}\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n el.textContent = '';\n }\n }\n return this;\n}\n\nfunction scrollTo(...args) {\n let [left, top, duration, easing, callback] = args;\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n if (typeof easing === 'undefined') easing = 'swing';\n\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n let scrollLeft; // eslint-disable-line\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n if (animateTop) {\n currentTop = el.scrollTop;\n if (!duration) {\n el.scrollTop = top;\n }\n }\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n if (!duration) return;\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : (0.5 - (Math.cos(progress * Math.PI) / 2));\n let done;\n if (animateTop) scrollTop = currentTop + (easeProgress * (newTop - currentTop));\n if (animateLeft) scrollLeft = currentLeft + (easeProgress * (newLeft - currentLeft));\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n requestAnimationFrame(render);\n }\n requestAnimationFrame(render);\n });\n}\n// scrollTop(top, duration, easing, callback) {\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n const dom = this;\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n const dom = this;\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\nfunction animate(initialProps, initialParams) {\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing', // or 'linear'\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n }, initialParams),\n\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - (Math.cos(progress * Math.PI) / 2);\n }\n if (typeof easing === 'function') {\n return easing(progress);\n }\n return progress;\n },\n stop() {\n if (a.frameId) {\n cancelAnimationFrame(a.frameId);\n }\n a.animating = false;\n a.elements.each((index, el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n done(complete) {\n a.animating = false;\n a.elements.each((index, el) => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n const elements = [];\n\n // Define & Cache Initials & Units\n a.elements.each((index, el) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n\n elements[index] = {\n container: el,\n };\n Object.keys(props).forEach((prop) => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue,\n };\n });\n });\n\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress;\n // let el;\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n if (startTime === null) {\n startTime = time;\n }\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), ((startTime + params.duration) - time < 0 ? 0 : (startTime + params.duration) - time), startTime);\n }\n\n elements.forEach((element) => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach((prop) => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const { initialValue, finalValue, unit } = el[prop];\n el[prop].currentValue = initialValue + (easeProgress * (finalValue - initialValue));\n const currentValue = el[prop].currentValue;\n\n if (\n (finalValue > initialValue && currentValue >= finalValue) ||\n (finalValue < initialValue && currentValue <= finalValue)) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n if (done) {\n a.done(params.complete);\n return;\n }\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return;\n // Then call\n a.frameId = requestAnimationFrame(render);\n }\n a.frameId = requestAnimationFrame(render);\n return a;\n },\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = ('resize scroll').split(' ');\nfunction eventShortcut(name, ...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();\n else {\n $(this[i]).trigger(name);\n }\n }\n }\n return this;\n }\n return this.on(name, ...args);\n}\n\nfunction click(...args) {\n return eventShortcut.bind(this)('click', ...args);\n}\nfunction blur(...args) {\n return eventShortcut.bind(this)('blur', ...args);\n}\nfunction focus(...args) {\n return eventShortcut.bind(this)('focus', ...args);\n}\nfunction focusin(...args) {\n return eventShortcut.bind(this)('focusin', ...args);\n}\nfunction focusout(...args) {\n return eventShortcut.bind(this)('focusout', ...args);\n}\nfunction keyup(...args) {\n return eventShortcut.bind(this)('keyup', ...args);\n}\nfunction keydown(...args) {\n return eventShortcut.bind(this)('keydown', ...args);\n}\nfunction keypress(...args) {\n return eventShortcut.bind(this)('keypress', ...args);\n}\nfunction submit(...args) {\n return eventShortcut.bind(this)('submit', ...args);\n}\nfunction change(...args) {\n return eventShortcut.bind(this)('change', ...args);\n}\nfunction mousedown(...args) {\n return eventShortcut.bind(this)('mousedown', ...args);\n}\nfunction mousemove(...args) {\n return eventShortcut.bind(this)('mousemove', ...args);\n}\nfunction mouseup(...args) {\n return eventShortcut.bind(this)('mouseup', ...args);\n}\nfunction mouseenter(...args) {\n return eventShortcut.bind(this)('mouseenter', ...args);\n}\nfunction mouseleave(...args) {\n return eventShortcut.bind(this)('mouseleave', ...args);\n}\nfunction mouseout(...args) {\n return eventShortcut.bind(this)('mouseout', ...args);\n}\nfunction mouseover(...args) {\n return eventShortcut.bind(this)('mouseover', ...args);\n}\nfunction touchstart(...args) {\n return eventShortcut.bind(this)('touchstart', ...args);\n}\nfunction touchend(...args) {\n return eventShortcut.bind(this)('touchend', ...args);\n}\nfunction touchmove(...args) {\n return eventShortcut.bind(this)('touchmove', ...args);\n}\nfunction resize(...args) {\n return eventShortcut.bind(this)('resize', ...args);\n}\nfunction scroll(...args) {\n return eventShortcut.bind(this)('scroll', ...args);\n}\n\nexport { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, prop, data, removeData, dataset, val, transform, transition, on, off, once, trigger, transitionEnd, animationEnd, width, outerWidth, height, outerHeight, offset, hide, show, styles, css, toArray, each, forEach, filter, map, html, text, is, indexOf, index, eq, append, appendTo, prepend, prependTo, insertBefore, insertAfter, next, nextAll, prev, prevAll, siblings, parent, parents, closest, find, children, remove, detach, add, empty, scrollTo, scrollTop, scrollLeft, animate, stop, click, blur, focus, focusin, focusout, keyup, keydown, keypress, submit, change, mousedown, mousemove, mouseup, mouseenter, mouseleave, mouseout, mouseover, touchstart, touchend, touchmove, resize, scroll };\n","import {\n $,\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n data,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n add,\n styles,\n} from 'dom7/dist/dom7.modular';\n\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n data,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove,\n add,\n styles,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n $.fn[methodName] = $.fn[methodName] || Methods[methodName];\n});\n\nexport default $;\n","import { window } from 'ssr-window';\n\nconst Utils = {\n deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach((key) => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n },\n nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n },\n now() {\n return Date.now();\n },\n getTranslate(el, axis = 'x') {\n let matrix;\n let curTransform;\n let transformMatrix;\n\n const curStyle = window.getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map((a) => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n },\n parseUrlQuery(url) {\n const query = {};\n let urlToParse = url || window.location.href;\n let i;\n let params;\n let param;\n let length;\n if (typeof urlToParse === 'string' && urlToParse.length) {\n urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n params = urlToParse.split('&').filter((paramsPart) => paramsPart !== '');\n length = params.length;\n\n for (i = 0; i < length; i += 1) {\n param = params[i].replace(/#\\S+/g, '').split('=');\n query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';\n }\n }\n return query;\n },\n isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n },\n extend(...args) {\n const to = Object(args[0]);\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n },\n};\nexport default Utils;\n","import { window, document } from 'ssr-window';\n\nconst Support = (function Support() {\n return {\n touch: !!(('ontouchstart' in window) || (window.DocumentTouch && document instanceof window.DocumentTouch)),\n\n pointerEvents: !!window.PointerEvent && ('maxTouchPoints' in window.navigator) && window.navigator.maxTouchPoints >= 0,\n\n observer: (function checkObserver() {\n return ('MutationObserver' in window || 'WebkitMutationObserver' in window);\n }()),\n\n passiveListener: (function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n },\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n }()),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in window;\n }()),\n };\n}());\n\nexport default Support;\n","import Utils from './utils';\n\nclass SwiperClass {\n constructor(params = {}) {\n const self = this;\n self.params = params;\n\n // Events\n self.eventsListeners = {};\n\n if (self.params && self.params.on) {\n Object.keys(self.params.on).forEach((eventName) => {\n self.on(eventName, self.params.on[eventName]);\n });\n }\n }\n\n on(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach((event) => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n }\n\n once(events, handler, priority) {\n const self = this;\n if (typeof handler !== 'function') return self;\n function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.f7proxy) {\n delete onceHandler.f7proxy;\n }\n handler.apply(self, args);\n }\n onceHandler.f7proxy = handler;\n return self.on(events, onceHandler, priority);\n }\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach((event) => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event] && self.eventsListeners[event].length) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n }\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach((event) => {\n if (self.eventsListeners && self.eventsListeners[event]) {\n const handlers = [];\n self.eventsListeners[event].forEach((eventHandler) => {\n handlers.push(eventHandler);\n });\n handlers.forEach((eventHandler) => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n useModulesParams(instanceParams) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n // Extend params\n if (module.params) {\n Utils.extend(instanceParams, module.params);\n }\n });\n }\n\n useModules(modulesParams = {}) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n const moduleParams = modulesParams[moduleName] || {};\n // Extend instance methods and props\n if (module.instance) {\n Object.keys(module.instance).forEach((modulePropName) => {\n const moduleProp = module.instance[modulePropName];\n if (typeof moduleProp === 'function') {\n instance[modulePropName] = moduleProp.bind(instance);\n } else {\n instance[modulePropName] = moduleProp;\n }\n });\n }\n // Add event listeners\n if (module.on && instance.on) {\n Object.keys(module.on).forEach((moduleEventName) => {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n }\n\n // Module create callback\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n });\n }\n\n static set components(components) {\n const Class = this;\n if (!Class.use) return;\n Class.use(components);\n }\n\n static installModule(module, ...params) {\n const Class = this;\n if (!Class.prototype.modules) Class.prototype.modules = {};\n const name = module.name || (`${Object.keys(Class.prototype.modules).length}_${Utils.now()}`);\n Class.prototype.modules[name] = module;\n // Prototype\n if (module.proto) {\n Object.keys(module.proto).forEach((key) => {\n Class.prototype[key] = module.proto[key];\n });\n }\n // Class\n if (module.static) {\n Object.keys(module.static).forEach((key) => {\n Class[key] = module.static[key];\n });\n }\n // Callback\n if (module.install) {\n module.install.apply(Class, params);\n }\n return Class;\n }\n\n static use(module, ...params) {\n const Class = this;\n if (Array.isArray(module)) {\n module.forEach((m) => Class.installModule(m));\n return Class;\n }\n return Class.installModule(module, ...params);\n }\n}\n\nexport default SwiperClass;\n","import updateSize from './updateSize';\nimport updateSlides from './updateSlides';\nimport updateAutoHeight from './updateAutoHeight';\nimport updateSlidesOffset from './updateSlidesOffset';\nimport updateSlidesProgress from './updateSlidesProgress';\nimport updateProgress from './updateProgress';\nimport updateSlidesClasses from './updateSlidesClasses';\nimport updateActiveIndex from './updateActiveIndex';\nimport updateClickedSlide from './updateClickedSlide';\n\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide,\n};\n","import Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n if (typeof swiper.params.width !== 'undefined') {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined') {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);\n height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);\n\n Utils.extend(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height,\n });\n}\n","import { window } from 'ssr-window';\nimport Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n const params = swiper.params;\n\n const {\n $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL,\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n\n function slidesForMargin(slideIndex) {\n if (!params.cssMode) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }\n\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.snapGrid.length;\n\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n if (rtl) slides.css({ marginLeft: '', marginTop: '' });\n else slides.css({ marginRight: '', marginBottom: '' });\n\n let slidesNumberEvenToRows;\n if (params.slidesPerColumn > 1) {\n if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n }\n if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n }\n }\n\n // Calc slides\n let slideSize;\n const slidesPerColumn = params.slidesPerColumn;\n const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n const numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n if (params.slidesPerColumn > 1) {\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));\n const slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0\n ? params.slidesPerGroup\n : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = (slideIndexInGroup - row * columnsInGroup) + groupIndex * params.slidesPerGroup;\n\n newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);\n slide\n .css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex,\n });\n } else if (params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - (column * slidesPerColumn);\n if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {\n row += 1;\n if (row >= slidesPerColumn) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - (row * slidesPerRow);\n }\n slide.css(\n `margin-${swiper.isHorizontal() ? 'top' : 'left'}`,\n (row !== 0 && params.spaceBetween) && (`${params.spaceBetween}px`)\n );\n }\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n const slideStyles = window.getComputedStyle(slide[0], null);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal()\n ? slide.outerWidth(true)\n : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n if (swiper.isHorizontal()) {\n const width = parseFloat(slideStyles.getPropertyValue('width'));\n const paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));\n const paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));\n const marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));\n const marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;\n }\n } else {\n const height = parseFloat(slideStyles.getPropertyValue('height'));\n const paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));\n const paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));\n const marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));\n const marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = height + marginTop + marginBottom;\n } else {\n slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;\n }\n }\n }\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n if (swiper.isHorizontal()) {\n slides[i].style.width = `${slideSize}px`;\n } else {\n slides[i].style.height = `${slideSize}px`;\n }\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n if (i === 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index) % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n\n prevSlideSize = slideSize;\n\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n let newSlidesGrid;\n\n if (\n rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n if (params.setWrapperSize) {\n if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n\n if (params.slidesPerColumn > 1) {\n swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n if (params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid = newSlidesGrid;\n }\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n if (swiper.isHorizontal()) {\n if (rtl) slides.filter(slidesForMargin).css({ marginLeft: `${spaceBetween}px` });\n else slides.filter(slidesForMargin).css({ marginRight: `${spaceBetween}px` });\n } else slides.filter(slidesForMargin).css({ marginBottom: `${spaceBetween}px` });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map((snap) => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach((slideSizeValue) => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Utils.extend(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid,\n });\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateSlidesOffset();\n }\n}\n","export default function (speed) {\n const swiper = this;\n const activeSlides = [];\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each((index, slide) => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length) break;\n activeSlides.push(swiper.slides.eq(index)[0]);\n }\n }\n } else {\n activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n","export default function () {\n const swiper = this;\n const slides = swiper.slides;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}\n","import $ from '../../../utils/dom';\n\nexport default function (translate = (this && this.translate) || 0) {\n const swiper = this;\n const params = swiper.params;\n\n const { slides, rtlTranslate: rtl } = swiper;\n\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.removeClass(params.slideVisibleClass);\n\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n const slideProgress = (\n (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset\n ) / (slide.swiperSlideSize + params.spaceBetween);\n if (params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) {\n const slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1)\n || (slideAfter > 1 && slideAfter <= swiper.size)\n || (slideBefore <= 0 && slideAfter >= swiper.size);\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n }\n slide.progress = rtl ? -slideProgress : slideProgress;\n }\n swiper.visibleSlides = $(swiper.visibleSlides);\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = (swiper && swiper.translate && (swiper.translate * multiplier)) || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let { progress, isBeginning, isEnd } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / (translatesDiff);\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n Utils.extend(swiper, {\n progress,\n isBeginning,\n isEnd,\n });\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}\n","export default function () {\n const swiper = this;\n\n const {\n slides, params, $wrapperEl, activeIndex, realIndex,\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n\n let activeSlide;\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n }\n\n // Active classes\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`)\n .addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`)\n .addClass(params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicatePrevClass);\n }\n }\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid, snapGrid, params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex,\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n\n // Get real index\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n\n Utils.extend(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex,\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}\n","import $ from '../../../utils/dom';\n\nexport default function (e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) slideFound = true;\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = $(slide).index();\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n","import getTranslate from './getTranslate';\nimport setTranslate from './setTranslate';\nimport minTranslate from './minTranslate';\nimport maxTranslate from './maxTranslate';\nimport translateTo from './translateTo';\n\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo,\n};\n","import Utils from '../../../utils/utils';\n\nexport default function (axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n\n const {\n params, rtlTranslate: rtl, translate, $wrapperEl,\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = Utils.getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n\n return currentTranslate || 0;\n}\n","export default function (translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress,\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / (translatesDiff);\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n","export default function () {\n return (-this.snapGrid[0]);\n}\n","export default function () {\n return (-this.snapGrid[this.snapGrid.length - 1]);\n}\n","export default function (translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n\n const {\n params,\n wrapperEl,\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\n else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth',\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n }\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}\n","import setTransition from './setTransition';\nimport transitionStart from './transitionStart';\nimport transitionEnd from './transitionEnd';\n\nexport default {\n setTransition,\n transitionStart,\n transitionEnd,\n};\n","export default function (duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}\n","export default function (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, params, previousIndex } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit('transitionStart');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionStart');\n return;\n }\n swiper.emit('slideChangeTransitionStart');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionStart');\n } else {\n swiper.emit('slidePrevTransitionStart');\n }\n }\n}\n","export default function (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, previousIndex, params } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit('transitionEnd');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionEnd');\n return;\n }\n swiper.emit('slideChangeTransitionEnd');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionEnd');\n } else {\n swiper.emit('slidePrevTransitionEnd');\n }\n }\n}\n","import slideTo from './slideTo';\nimport slideToLoop from './slideToLoop';\nimport slideNext from './slideNext';\nimport slidePrev from './slidePrev';\nimport slideReset from './slideReset';\nimport slideToClosest from './slideToClosest';\nimport slideToClickedSlide from './slideToClickedSlide';\n\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide,\n};\n","export default function (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n\n const {\n params, snapGrid, slidesGrid, previousIndex, activeIndex, rtlTranslate: rtl, wrapperEl,\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex];\n\n // Update progress\n swiper.updateProgress(translate);\n\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';\n else if (slideIndex < activeIndex) direction = 'prev';\n else direction = 'reset';\n\n\n // Update Index\n if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n let t = -translate;\n if (rtl) {\n t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;\n }\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth',\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n }\n\n return true;\n}\n","export default function (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { params, animating } = swiper;\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params, animating, snapGrid, slidesGrid, rtlTranslate,\n } = swiper;\n\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map((val) => normalize(val));\n const normalizedSlidesGrid = slidesGrid.map((val) => normalize(val));\n\n const currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n snapGrid.forEach((snap) => {\n if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;\n });\n }\n let prevIndex;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n","/* eslint no-unused-vars: \"off\" */\nexport default function (speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if ((translate - currentSnap) > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if ((translate - prevSnap) <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n","import $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (\n (slideToIndex < swiper.loopedSlides - (slidesPerView / 2))\n || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))\n ) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n .eq(0)\n .index();\n\n Utils.nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n .eq(0)\n .index();\n\n Utils.nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n","import loopCreate from './loopCreate';\nimport loopFix from './loopFix';\nimport loopDestroy from './loopDestroy';\n\nexport default {\n loopCreate,\n loopFix,\n loopDestroy,\n};\n","import { document } from 'ssr-window';\nimport $ from '../../../utils/dom';\n\nexport default function () {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n // Remove duplicated slides\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n let slides = $wrapperEl.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $wrapperEl.append(blankNode);\n }\n slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((index, el) => {\n const slide = $(el);\n if (index < swiper.loopedSlides) appendSlides.push(el);\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) prependSlides.push(el);\n slide.attr('data-swiper-slide-index', index);\n });\n for (let i = 0; i < appendSlides.length; i += 1) {\n $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}\n","export default function () {\n const swiper = this;\n\n swiper.emit('beforeLoopFix');\n\n const {\n activeIndex, slides, loopedSlides, allowSlidePrev, allowSlideNext, snapGrid, rtlTranslate: rtl,\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate();\n\n // Fix For Negative Oversliding\n if (activeIndex < loopedSlides) {\n newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n swiper.emit('loopFix');\n}\n","export default function () {\n const swiper = this;\n const { $wrapperEl, params, slides } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}\n","import setGrabCursor from './setGrabCursor';\nimport unsetGrabCursor from './unsetGrabCursor';\n\nexport default {\n setGrabCursor,\n unsetGrabCursor,\n};\n","import Support from '../../../utils/support';\n\nexport default function (moving) {\n const swiper = this;\n if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n const el = swiper.el;\n el.style.cursor = 'move';\n el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n","import Support from '../../../utils/support';\n\nexport default function () {\n const swiper = this;\n if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n swiper.el.style.cursor = '';\n}\n","import appendSlide from './appendSlide';\nimport prependSlide from './prependSlide';\nimport addSlide from './addSlide';\nimport removeSlide from './removeSlide';\nimport removeAllSlides from './removeAllSlides';\n\nexport default {\n appendSlide,\n prependSlide,\n addSlide,\n removeSlide,\n removeAllSlides,\n};\n","import Support from '../../../utils/support';\n\nexport default function (slides) {\n const swiper = this;\n const { $wrapperEl, params } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n } else {\n $wrapperEl.append(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n}\n","import Support from '../../../utils/support';\n\nexport default function (slides) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.prepend(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n","import Support from '../../../utils/support';\n\nexport default function (index, slides) {\n const swiper = this;\n const { $wrapperEl, params, activeIndex } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) $wrapperEl.append(slides[i]);\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n $wrapperEl.append(slidesBuffer[i]);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","import Support from '../../../utils/support';\n\nexport default function (slidesIndexes) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n\n if (params.loop) {\n swiper.loopCreate();\n }\n\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n","export default function () {\n const swiper = this;\n\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n","import { window } from 'ssr-window';\nimport Support from './support';\n\nconst Device = (function Device() {\n const platform = window.navigator.platform;\n const ua = window.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n androidChrome: false,\n desktop: false,\n iphone: false,\n ipod: false,\n ipad: false,\n edge: false,\n ie: false,\n firefox: false,\n macos: false,\n windows: false,\n cordova: !!(window.cordova || window.phonegap),\n phonegap: !!(window.cordova || window.phonegap),\n electron: false,\n };\n\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n const edge = ua.indexOf('Edge/') >= 0;\n const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;\n const windows = platform === 'Win32';\n const electron = ua.toLowerCase().indexOf('electron') >= 0;\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n if (!ipad\n && macos\n && Support.touch\n && (\n (screenWidth === 1024 && screenHeight === 1366) // Pro 12.9\n || (screenWidth === 834 && screenHeight === 1194) // Pro 11\n || (screenWidth === 834 && screenHeight === 1112) // Pro 10.5\n || (screenWidth === 768 && screenHeight === 1024) // other\n )\n ) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n macos = false;\n }\n\n device.ie = ie;\n device.edge = edge;\n device.firefox = firefox;\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.osVersion = android[2];\n device.android = true;\n device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n // iOS\n if (iphone && !ipod) {\n device.osVersion = iphone[2].replace(/_/g, '.');\n device.iphone = true;\n }\n if (ipad) {\n device.osVersion = ipad[2].replace(/_/g, '.');\n device.ipad = true;\n }\n if (ipod) {\n device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n device.ipod = true;\n }\n // iOS 8+ changed UA\n if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n if (device.osVersion.split('.')[0] === '10') {\n device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n }\n }\n\n // Webview\n device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone))\n || (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches);\n device.webview = device.webView;\n device.standalone = device.webView;\n\n // Desktop\n device.desktop = !(device.ios || device.android) || electron;\n if (device.desktop) {\n device.electron = electron;\n device.macos = macos;\n device.windows = windows;\n if (device.macos) {\n device.os = 'macos';\n }\n if (device.windows) {\n device.os = 'windows';\n }\n }\n\n // Pixel Ratio\n device.pixelRatio = window.devicePixelRatio || 1;\n\n // Export object\n return device;\n}());\n\nexport default Device;\n","import { window, document } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`)[0]) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (\n edgeSwipeDetection\n && ((startX <= edgeSwipeThreshold)\n || (startX >= window.screen.width - edgeSwipeThreshold))\n ) {\n return;\n }\n\n Utils.extend(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined,\n });\n\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = Utils.now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($targetEl.is(data.formElements)) preventDefault = false;\n if (\n document.activeElement\n && $(document.activeElement).is(data.formElements)\n && document.activeElement !== $targetEl[0]\n ) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if (params.touchStartForcePreventDefault || shouldPreventDefault) {\n e.preventDefault();\n }\n }\n swiper.emit('touchStart', e);\n}\n","import { document } from 'ssr-window';\nimport $ from '../../../utils/dom';\nimport Utils from '../../../utils/utils';\n\nexport default function (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches, rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n if (data.isTouched) {\n Utils.extend(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n });\n data.touchStartTime = Utils.now();\n }\n return;\n }\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (\n (pageY < touches.startY && swiper.translate <= swiper.maxTranslate())\n || (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n ) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (\n (pageX < touches.startX && swiper.translate <= swiper.maxTranslate())\n || (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n ) {\n return;\n }\n }\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.formElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n\n touches.currentX = pageX;\n touches.currentY = pageY;\n\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt((diffX ** 2) + (diffY ** 2)) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if ((diffX * diffX) + (diffY * diffY) >= 25) {\n touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle);\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop) {\n swiper.loopFix();\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = (swiper.minTranslate() - 1) + ((-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio);\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = (swiper.maxTranslate() + 1) - ((swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio);\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode) {\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime,\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: Utils.now(),\n });\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n","import Utils from '../../../utils/utils';\n\nexport default function (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n\n const {\n params, touches, rtlTranslate: rtl, $wrapperEl, slidesGrid, snapGrid,\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = Utils.now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = Utils.now();\n Utils.nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (params.freeMode) {\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n\n if (params.freeModeMomentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeModeMomentumVelocityRatio;\n\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeModeMomentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeModeSticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n swiper.once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeModeSticky) {\n // If freeModeSticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeModeMomentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n swiper.emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += (i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup)) {\n const increment = (i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = (stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > (1 - params.longSwipesRatio)) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n","export default function () {\n const swiper = this;\n\n const { params, el } = swiper;\n\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n\n swiper.updateSize();\n swiper.updateSlides();\n\n swiper.updateSlidesClasses();\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n","export default function (e) {\n const swiper = this;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n","export default function () {\n const swiper = this;\n const { wrapperEl, rtlTranslate } = swiper;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n if (rtlTranslate) {\n swiper.translate = ((wrapperEl.scrollWidth - wrapperEl.offsetWidth) - wrapperEl.scrollLeft);\n } else {\n swiper.translate = -wrapperEl.scrollLeft;\n }\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === -0) swiper.translate = 0;\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / (translatesDiff);\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}\n","import { document } from 'ssr-window';\nimport Device from '../../../utils/device';\nimport Support from '../../../utils/support';\n\nimport onTouchStart from './onTouchStart';\nimport onTouchMove from './onTouchMove';\nimport onTouchEnd from './onTouchEnd';\nimport onResize from './onResize';\nimport onClick from './onClick';\nimport onScroll from './onScroll';\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nfunction attachEvents() {\n const swiper = this;\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n const capture = !!params.nested;\n\n // Touch Events\n if (!Support.touch && Support.pointerEvents) {\n el.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n const passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture } : capture);\n el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n if (!dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n el.addEventListener('mousedown', swiper.onTouchStart, false);\n document.addEventListener('mousemove', swiper.onTouchMove, capture);\n document.addEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el.addEventListener('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl.addEventListener('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);\n } else {\n swiper.on('observerUpdate', onResize, true);\n }\n}\n\nfunction detachEvents() {\n const swiper = this;\n\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\n const capture = !!params.nested;\n\n // Touch Events\n if (!Support.touch && Support.pointerEvents) {\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n const passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n el.removeEventListener('mousedown', swiper.onTouchStart, false);\n document.removeEventListener('mousemove', swiper.onTouchMove, capture);\n document.removeEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el.removeEventListener('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl.removeEventListener('scroll', swiper.onScroll);\n }\n\n // Resize handler\n swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);\n}\n\nexport default {\n attachEvents,\n detachEvents,\n};\n","\nfunction checkOverflow() {\n const swiper = this;\n const params = swiper.params;\n const wasLocked = swiper.isLocked;\n const lastSlidePosition = swiper.slides.length > 0 && (params.slidesOffsetBefore + (params.spaceBetween * (swiper.slides.length - 1)) + ((swiper.slides[0]).offsetWidth) * swiper.slides.length);\n\n if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {\n swiper.isLocked = lastSlidePosition <= swiper.size;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n swiper.allowSlideNext = !swiper.isLocked;\n swiper.allowSlidePrev = !swiper.isLocked;\n\n // events\n if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n if (swiper.navigation) swiper.navigation.update();\n }\n}\n\nexport default { checkOverflow };\n","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n //\n preventInteractionOnTransition: false,\n\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeMomentumVelocityRatio: 1,\n freeModeSticky: false,\n freeModeMinimumVelocity: 0.02,\n\n // Autoheight\n autoHeight: false,\n\n // Set wrapper width\n setWrapperSize: false,\n\n // Virtual Translate\n virtualTranslate: false,\n\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: false,\n\n // Round length\n roundLengths: false,\n\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n\n // Unique Navigation Elements\n uniqueNavElements: true,\n\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n\n // Cursor\n grabCursor: false,\n\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null, // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n\n // Passive Listeners\n passiveListeners: true,\n\n // NS\n containerModifierClass: 'swiper-container-', // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n\n // Callbacks\n runCallbacksOnInit: true,\n};\n","/* eslint no-param-reassign: \"off\" */\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nimport SwiperClass from '../../utils/class';\n\nimport update from './update/index';\nimport translate from './translate/index';\nimport transition from './transition/index';\nimport slide from './slide/index';\nimport loop from './loop/index';\nimport grabCursor from './grab-cursor/index';\nimport manipulation from './manipulation/index';\nimport events from './events/index';\nimport breakpoints from './breakpoints/index';\nimport classes from './classes/index';\nimport images from './images/index';\nimport checkOverflow from './check-overflow/index';\n\nimport defaults from './defaults';\n\nconst prototypes = {\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n manipulation,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper extends SwiperClass {\n constructor(...args) {\n let el;\n let params;\n if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n\n params = Utils.extend({}, params);\n if (el && !params.el) params.el = el;\n\n super(params);\n\n Object.keys(prototypes).forEach((prototypeGroup) => {\n Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n if (!Swiper.prototype[protoMethod]) {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n }\n });\n });\n\n // Swiper Instance\n const swiper = this;\n if (typeof swiper.modules === 'undefined') {\n swiper.modules = {};\n }\n Object.keys(swiper.modules).forEach((moduleName) => {\n const module = swiper.modules[moduleName];\n if (module.params) {\n const moduleParamName = Object.keys(module.params)[0];\n const moduleParams = module.params[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) return;\n if (!(moduleParamName in params && 'enabled' in moduleParams)) return;\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (\n typeof params[moduleParamName] === 'object'\n && !('enabled' in params[moduleParamName])\n ) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n }\n });\n\n // Extend defaults with modules params\n const swiperParams = Utils.extend({}, defaults);\n swiper.useModulesParams(swiperParams);\n\n // Extend defaults with passed params\n swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = Utils.extend({}, swiper.params);\n swiper.passedParams = Utils.extend({}, params);\n\n // Save Dom lib\n swiper.$ = $;\n\n // Find el\n const $el = $(swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return undefined;\n }\n\n if ($el.length > 1) {\n const swipers = [];\n $el.each((index, containerEl) => {\n const newParams = Utils.extend({}, params, { el: containerEl });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n }\n\n el.swiper = swiper;\n $el.data('swiper', swiper);\n\n // Find Wrapper\n let $wrapperEl;\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n $wrapperEl = $(el.shadowRoot.querySelector(`.${swiper.params.wrapperClass}`));\n // Children needs to return slot items\n $wrapperEl.children = (options) => $el.children(options);\n } else {\n $wrapperEl = $el.children(`.${swiper.params.wrapperClass}`);\n }\n // Extend Swiper\n Utils.extend(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n\n // Classes\n classNames: [],\n\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // RTL\n rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n\n //\n isBeginning: true,\n isEnd: false,\n\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n\n // Touch Events\n touchEvents: (function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n let desktop = ['mousedown', 'mousemove', 'mouseup'];\n if (Support.pointerEvents) {\n desktop = ['pointerdown', 'pointermove', 'pointerup'];\n }\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3],\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2],\n };\n return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }()),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n formElements: 'input, select, option, textarea, button, video, label',\n // Last click time\n lastClickTime: Utils.now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined,\n },\n\n // Clicks\n allowClick: true,\n\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0,\n },\n\n // Images\n imagesToLoad: [],\n imagesLoaded: 0,\n\n });\n\n // Install Modules\n swiper.useModules();\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n return swiper;\n }\n\n slidesPerViewDynamic() {\n const swiper = this;\n const {\n params, slides, slidesGrid, size: swiperSize, activeIndex,\n } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) {\n spv += 1;\n }\n }\n }\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const { snapGrid, params } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (swiper.params.freeMode) {\n setTranslate();\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) {\n return swiper;\n }\n\n swiper.$el\n .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)\n .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n\n swiper.params.direction = newDirection;\n\n swiper.slides.each((slideIndex, slideEl) => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n\n return swiper;\n }\n\n init() {\n const swiper = this;\n if (swiper.initialized) return;\n\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);\n }\n\n // Attach events\n swiper.attachEvents();\n\n // Init Flag\n swiper.initialized = true;\n\n // Emit\n swiper.emit('init');\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params, $el, $wrapperEl, slides,\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n if (slides && slides.length) {\n slides\n .removeClass([\n params.slideVisibleClass,\n params.slideActiveClass,\n params.slideNextClass,\n params.slidePrevClass,\n ].join(' '))\n .removeAttr('style')\n .removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach((eventName) => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n swiper.$el.data('swiper', null);\n Utils.deleteProps(swiper);\n }\n swiper.destroyed = true;\n\n return null;\n }\n\n static extendDefaults(newDefaults) {\n Utils.extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static get Class() {\n return SwiperClass;\n }\n\n static get $() {\n return $;\n }\n}\n\nexport default Swiper;\n","import setBreakpoint from './setBreakpoint';\nimport getBreakpoint from './getBreakpoint';\n\nexport default { setBreakpoint, getBreakpoint };\n","import Utils from '../../../utils/utils';\n\nexport default function () {\n const swiper = this;\n const {\n activeIndex, initialized, loopedSlides = 0, params, $el,\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints);\n\n if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n if (breakpointOnlyParams) {\n ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach((param) => {\n const paramValue = breakpointOnlyParams[param];\n if (typeof paramValue === 'undefined') return;\n if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {\n breakpointOnlyParams[param] = 'auto';\n } else if (param === 'slidesPerView') {\n breakpointOnlyParams[param] = parseFloat(paramValue);\n } else {\n breakpointOnlyParams[param] = parseInt(paramValue, 10);\n }\n });\n }\n\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = params.slidesPerColumn > 1;\n const isMultiRow = breakpointParams.slidesPerColumn > 1;\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}multirow ${params.containerModifierClass}multirow-column`);\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}multirow`);\n if (breakpointParams.slidesPerColumnFill === 'column') {\n $el.addClass(`${params.containerModifierClass}multirow-column`);\n }\n }\n\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n Utils.extend(swiper.params, breakpointParams);\n\n Utils.extend(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n });\n\n swiper.currentBreakpoint = breakpoint;\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n }\n}\n","import { window } from 'ssr-window';\n\nexport default function (breakpoints) {\n // Get breakpoint for window width\n if (!breakpoints) return undefined;\n let breakpoint = false;\n\n const points = Object.keys(breakpoints).map((point) => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = window.innerHeight * minRatio;\n return { value, point };\n }\n return { value: point, point };\n });\n\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const { point, value } = points[i];\n if (value <= window.innerWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n","import addClasses from './addClasses';\nimport removeClasses from './removeClasses';\n\nexport default { addClasses, removeClasses };\n","import Device from '../../../utils/device';\n\nexport default function () {\n const swiper = this;\n const {\n classNames, params, rtl, $el,\n } = swiper;\n const suffixes = [];\n\n suffixes.push('initialized');\n suffixes.push(params.direction);\n\n if (params.freeMode) {\n suffixes.push('free-mode');\n }\n if (params.autoHeight) {\n suffixes.push('autoheight');\n }\n if (rtl) {\n suffixes.push('rtl');\n }\n if (params.slidesPerColumn > 1) {\n suffixes.push('multirow');\n if (params.slidesPerColumnFill === 'column') {\n suffixes.push('multirow-column');\n }\n }\n if (Device.android) {\n suffixes.push('android');\n }\n if (Device.ios) {\n suffixes.push('ios');\n }\n\n if (params.cssMode) {\n suffixes.push('css-mode');\n }\n\n suffixes.forEach((suffix) => {\n classNames.push(params.containerModifierClass + suffix);\n });\n\n $el.addClass(classNames.join(' '));\n}\n","export default function () {\n const swiper = this;\n const { $el, classNames } = swiper;\n\n $el.removeClass(classNames.join(' '));\n}\n","import loadImage from './loadImage';\nimport preloadImages from './preloadImages';\n\nexport default {\n loadImage,\n preloadImages,\n};\n","import { window } from 'ssr-window';\nimport $ from '../../../utils/dom';\n\nexport default function (imageEl, src, srcset, sizes, checkForComplete, callback) {\n let image;\n function onReady() {\n if (callback) callback();\n }\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\n }\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}\n","export default function () {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(\n imageEl,\n imageEl.currentSrc || imageEl.getAttribute('src'),\n imageEl.srcset || imageEl.getAttribute('srcset'),\n imageEl.sizes || imageEl.getAttribute('sizes'),\n true,\n onReady\n );\n }\n}\n","import Device from '../../utils/device';\n\nexport default {\n name: 'device',\n proto: {\n device: Device,\n },\n static: {\n device: Device,\n },\n};\n","import Support from '../../utils/support';\n\nexport default {\n name: 'support',\n proto: {\n support: Support,\n },\n static: {\n support: Support,\n },\n};\n","import { window } from 'ssr-window';\n\nconst Browser = (function Browser() {\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n }\n return {\n isEdge: !!window.navigator.userAgent.match(/Edge/g),\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n };\n}());\n\nexport default Browser;\n","import Browser from '../../utils/browser';\n\nexport default {\n name: 'browser',\n proto: {\n browser: Browser,\n },\n static: {\n browser: Browser,\n },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\n\nexport default {\n name: 'resize',\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n resize: {\n resizeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('beforeResize');\n swiper.emit('resize');\n },\n orientationChangeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('orientationchange');\n },\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n // Emit resize\n window.addEventListener('resize', swiper.resize.resizeHandler);\n\n // Emit orientationchange\n window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n destroy() {\n const swiper = this;\n window.removeEventListener('resize', swiper.resize.resizeHandler);\n window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nconst Observer = {\n func: window.MutationObserver || window.WebkitMutationObserver,\n attach(target, options = {}) {\n const swiper = this;\n\n const ObserverFunc = Observer.func;\n const observer = new ObserverFunc((mutations) => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n swiper.emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n swiper.emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n });\n\n swiper.observer.observers.push(observer);\n },\n init() {\n const swiper = this;\n if (!Support.observer || !swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n for (let i = 0; i < containerParents.length; i += 1) {\n swiper.observer.attach(containerParents[i]);\n }\n }\n // Observe container\n swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren });\n\n // Observe wrapper\n swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });\n },\n destroy() {\n const swiper = this;\n swiper.observer.observers.forEach((observer) => {\n observer.disconnect();\n });\n swiper.observer.observers = [];\n },\n};\n\nexport default {\n name: 'observer',\n params: {\n observer: false,\n observeParents: false,\n observeSlideChildren: false,\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n observer: {\n init: Observer.init.bind(swiper),\n attach: Observer.attach.bind(swiper),\n destroy: Observer.destroy.bind(swiper),\n observers: [],\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.observer.init();\n },\n destroy() {\n const swiper = this;\n swiper.observer.destroy();\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Virtual = {\n update(force) {\n const swiper = this;\n const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;\n const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n renderSlide,\n offset: previousOffset,\n } = swiper.virtual;\n swiper.updateActiveIndex();\n const activeIndex = swiper.activeIndex || 0;\n\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';\n else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;\n slidesBefore = slidesPerGroup + addSlidesAfter;\n }\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n Utils.extend(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, `${offset}px`);\n }\n swiper.updateProgress();\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: (function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()),\n });\n onRendered();\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`).remove();\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n if (i >= from && i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i);\n } else {\n if (i > previousTo) appendIndexes.push(i);\n if (i < previousFrom) prependIndexes.push(i);\n }\n }\n }\n appendIndexes.forEach((index) => {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes.sort((a, b) => b - a).forEach((index) => {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n onRendered();\n },\n renderSlide(slide, index) {\n const swiper = this;\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n const $slideEl = params.renderSlide\n ? $(params.renderSlide.call(swiper, slide, index))\n : $(`
${slide}
`);\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n },\n appendSlide(slides) {\n const swiper = this;\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n swiper.virtual.update(true);\n },\n prependSlide(slides) {\n const swiper = this;\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach((cachedIndex) => {\n const $cachedEl = cache[cachedIndex];\n const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n if (cachedElIndex) {\n $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n swiper.virtual.update(true);\n swiper.slideTo(newActiveIndex, 0);\n },\n removeSlide(slidesIndexes) {\n const swiper = this;\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n swiper.virtual.update(true);\n swiper.slideTo(activeIndex, 0);\n },\n removeAllSlides() {\n const swiper = this;\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n swiper.virtual.update(true);\n swiper.slideTo(0, 0);\n },\n};\n\nexport default {\n name: 'virtual',\n params: {\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n addSlidesBefore: 0,\n addSlidesAfter: 0,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n virtual: {\n update: Virtual.update.bind(swiper),\n appendSlide: Virtual.appendSlide.bind(swiper),\n prependSlide: Virtual.prependSlide.bind(swiper),\n removeSlide: Virtual.removeSlide.bind(swiper),\n removeAllSlides: Virtual.removeAllSlides.bind(swiper),\n renderSlide: Virtual.renderSlide.bind(swiper),\n slides: swiper.params.virtual.slides,\n cache: {},\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (!swiper.params.virtual.enabled) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n const overwriteParams = {\n watchSlidesProgress: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n\n if (!swiper.params.initialSlide) {\n swiper.virtual.update();\n }\n },\n setTranslate() {\n const swiper = this;\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.update();\n },\n },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Keyboard = {\n handle(event) {\n const swiper = this;\n const { rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40;\n // Directions locks\n if (!swiper.allowSlideNext && ((swiper.isHorizontal() && isArrowRight) || (swiper.isVertical() && isArrowDown) || isPageDown)) {\n return false;\n }\n if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && isArrowLeft) || (swiper.isVertical() && isArrowUp) || isPageUp)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiper.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiper.height],\n [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],\n ];\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n if (\n point[0] >= 0 && point[0] <= windowWidth\n && point[1] >= 0 && point[1] <= windowHeight\n ) {\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (((isPageDown || isArrowRight) && !rtl) || ((isPageUp || isArrowLeft) && rtl)) swiper.slideNext();\n if (((isPageUp || isArrowLeft) && !rtl) || ((isPageDown || isArrowRight) && rtl)) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n swiper.emit('keyPress', kc);\n return undefined;\n },\n enable() {\n const swiper = this;\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = true;\n },\n disable() {\n const swiper = this;\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = false;\n },\n};\n\nexport default {\n name: 'keyboard',\n params: {\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n keyboard: {\n enabled: false,\n enable: Keyboard.enable.bind(swiper),\n disable: Keyboard.disable.bind(swiper),\n handle: Keyboard.handle.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.keyboard.enabled) {\n swiper.keyboard.enable();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.keyboard.enabled) {\n swiper.keyboard.disable();\n }\n },\n },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nfunction isEventSupported() {\n const eventName = 'onwheel';\n let isSupported = eventName in document;\n\n if (!isSupported) {\n const element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported\n && document.implementation\n && document.implementation.hasFeature\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n && document.implementation.hasFeature('', '') !== true\n ) {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\nconst Mousewheel = {\n lastScrollTime: Utils.now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n event() {\n if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';\n return isEventSupported() ? 'wheel' : 'mousewheel';\n },\n normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) { // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) { // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else { // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = (pX < 1) ? -1 : 1;\n }\n if (pY && !sY) {\n sY = (pY < 1) ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY,\n };\n },\n handleMouseEnter() {\n const swiper = this;\n swiper.mouseEntered = true;\n },\n handleMouseLeave() {\n const swiper = this;\n swiper.mouseEntered = false;\n },\n handle(event) {\n let e = event;\n const swiper = this;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n const data = Mousewheel.normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;\n else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;\n else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n\n if (params.invert) delta = -delta;\n\n if (!swiper.params.freeMode) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: Utils.now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event,\n };\n\n // Keep the most recent events\n const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n swiper.mousewheel.animateSlider(newEvent);\n }\n } else {\n swiper.mousewheel.animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (swiper.mousewheel.releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = { time: Utils.now(), delta: Math.abs(delta), direction: Math.sign(delta) };\n const { lastEventBeforeSnap } = swiper.mousewheel;\n const ignoreWheelEvents = lastEventBeforeSnap\n && newEvent.time < lastEventBeforeSnap.time + 500\n && newEvent.delta <= lastEventBeforeSnap.delta\n && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n swiper.mousewheel.lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n let position = swiper.getTranslate() + (delta * params.sensitivity);\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeModeSticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momuntum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(swiper.mousewheel.timeout);\n swiper.mousewheel.timeout = undefined;\n const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15\n && newEvent.time - firstEvent.time < 500\n && firstEvent.delta - newEvent.delta >= 1\n && newEvent.delta <= 6\n ) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n swiper.mousewheel.lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.mousewheel.timeout = Utils.nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n if (!swiper.mousewheel.timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n swiper.mousewheel.timeout = Utils.nextTick(() => {\n const snapToThreshold = 0.5;\n swiper.mousewheel.lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) swiper.emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n },\n animateSlider(newEvent) {\n const swiper = this;\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && Utils.now() - swiper.mousewheel.lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n swiper.emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n swiper.emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n swiper.mousewheel.lastScrollTime = (new window.Date()).getTime();\n // Return false as a default\n return false;\n },\n releaseScroll(newEvent) {\n const swiper = this;\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n },\n enable() {\n const swiper = this;\n const event = Mousewheel.event();\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n if (!event) return false;\n if (swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.on('mouseenter', swiper.mousewheel.handleMouseEnter);\n target.on('mouseleave', swiper.mousewheel.handleMouseLeave);\n target.on(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = true;\n return true;\n },\n disable() {\n const swiper = this;\n const event = Mousewheel.event();\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n if (!event) return false;\n if (!swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.off(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = false;\n return true;\n },\n};\n\nexport default {\n name: 'mousewheel',\n params: {\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarged: 'container',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n mousewheel: {\n enabled: false,\n enable: Mousewheel.enable.bind(swiper),\n disable: Mousewheel.disable.bind(swiper),\n handle: Mousewheel.handle.bind(swiper),\n handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),\n handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),\n animateSlider: Mousewheel.animateSlider.bind(swiper),\n releaseScroll: Mousewheel.releaseScroll.bind(swiper),\n lastScrollTime: Utils.now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n swiper.mousewheel.disable();\n }\n if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();\n },\n destroy() {\n const swiper = this;\n if (swiper.params.cssMode) {\n swiper.mousewheel.enable();\n }\n if (swiper.mousewheel.enabled) swiper.mousewheel.disable();\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Navigation = {\n update() {\n // Update Navigation Buttons\n const swiper = this;\n const params = swiper.params.navigation;\n\n if (swiper.params.loop) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n $prevEl.addClass(params.disabledClass);\n } else {\n $prevEl.removeClass(params.disabledClass);\n }\n $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n $nextEl.addClass(params.disabledClass);\n } else {\n $nextEl.removeClass(params.disabledClass);\n }\n $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n },\n onPrevClick(e) {\n const swiper = this;\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n },\n onNextClick(e) {\n const swiper = this;\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n },\n init() {\n const swiper = this;\n const params = swiper.params.navigation;\n if (!(params.nextEl || params.prevEl)) return;\n\n let $nextEl;\n let $prevEl;\n if (params.nextEl) {\n $nextEl = $(params.nextEl);\n if (\n swiper.params.uniqueNavElements\n && typeof params.nextEl === 'string'\n && $nextEl.length > 1\n && swiper.$el.find(params.nextEl).length === 1\n ) {\n $nextEl = swiper.$el.find(params.nextEl);\n }\n }\n if (params.prevEl) {\n $prevEl = $(params.prevEl);\n if (\n swiper.params.uniqueNavElements\n && typeof params.prevEl === 'string'\n && $prevEl.length > 1\n && swiper.$el.find(params.prevEl).length === 1\n ) {\n $prevEl = swiper.$el.find(params.prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', swiper.navigation.onNextClick);\n }\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', swiper.navigation.onPrevClick);\n }\n\n Utils.extend(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0],\n });\n },\n destroy() {\n const swiper = this;\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', swiper.navigation.onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', swiper.navigation.onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n },\n};\n\nexport default {\n name: 'navigation',\n params: {\n navigation: {\n nextEl: null,\n prevEl: null,\n\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n navigation: {\n init: Navigation.init.bind(swiper),\n update: Navigation.update.bind(swiper),\n destroy: Navigation.destroy.bind(swiper),\n onNextClick: Navigation.onNextClick.bind(swiper),\n onPrevClick: Navigation.onPrevClick.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.navigation.init();\n swiper.navigation.update();\n },\n toEdge() {\n const swiper = this;\n swiper.navigation.update();\n },\n fromEdge() {\n const swiper = this;\n swiper.navigation.update();\n },\n destroy() {\n const swiper = this;\n swiper.navigation.destroy();\n },\n click(e) {\n const swiper = this;\n const { $nextEl, $prevEl } = swiper.navigation;\n if (\n swiper.params.navigation.hideOnClick\n && !$(e.target).is($prevEl)\n && !$(e.target).is($nextEl)\n ) {\n let isHidden;\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n swiper.emit('navigationShow', swiper);\n } else {\n swiper.emit('navigationHide', swiper);\n }\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Pagination = {\n update() {\n // Render || Update Pagination bullets/items\n const swiper = this;\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n // Current/Total\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {\n current -= (slidesLength - (swiper.loopedSlides * 2));\n }\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)}px`);\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);\n if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) {\n swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (swiper.pagination.dynamicBulletIndex < 0) {\n swiper.pagination.dynamicBulletIndex = 0;\n }\n }\n firstIndex = current - swiper.pagination.dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.removeClass(`${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`);\n if ($el.length > 1) {\n bullets.each((index, bullet) => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n if (bulletIndex === firstIndex) {\n $bullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n }\n if (bulletIndex === lastIndex) {\n $bullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n $firstDisplayedBullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n $lastDisplayedBullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n } else {\n $firstDisplayedBullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n $lastDisplayedBullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n if (params.type === 'fraction') {\n $el.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1));\n $el.find(`.${params.totalClass}`).text(params.formatFractionTotal(total));\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n $el.find(`.${params.progressbarFillClass}`).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n swiper.emit('paginationRender', swiper, $el[0]);\n } else {\n swiper.emit('paginationUpdate', swiper, $el[0]);\n }\n $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n },\n render() {\n // Render Container\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n if (params.type === 'bullets') {\n const numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(`.${params.bulletClass}`);\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = ``\n + ' / '\n + ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type !== 'custom') {\n swiper.emit('paginationRender', swiper.pagination.$el[0]);\n }\n },\n init() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el) return;\n\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (\n swiper.params.uniqueNavElements\n && typeof params.el === 'string'\n && $el.length > 1\n ) {\n $el = swiper.$el.find(params.el);\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n swiper.pagination.dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', `.${params.bulletClass}`, function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Utils.extend(swiper.pagination, {\n $el,\n el: $el[0],\n });\n },\n destroy() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const $el = swiper.pagination.$el;\n\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n if (params.clickable) {\n $el.off('click', `.${params.bulletClass}`);\n }\n },\n};\n\nexport default {\n name: 'pagination',\n params: {\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: (number) => number,\n formatFractionTotal: (number) => number,\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n modifierClass: 'swiper-pagination-', // NEW\n currentClass: 'swiper-pagination-current',\n totalClass: 'swiper-pagination-total',\n hiddenClass: 'swiper-pagination-hidden',\n progressbarFillClass: 'swiper-pagination-progressbar-fill',\n progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\n clickableClass: 'swiper-pagination-clickable', // NEW\n lockClass: 'swiper-pagination-lock',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n pagination: {\n init: Pagination.init.bind(swiper),\n render: Pagination.render.bind(swiper),\n update: Pagination.update.bind(swiper),\n destroy: Pagination.destroy.bind(swiper),\n dynamicBulletIndex: 0,\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.pagination.init();\n swiper.pagination.render();\n swiper.pagination.update();\n },\n activeIndexChange() {\n const swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n swiper.pagination.update();\n }\n },\n snapIndexChange() {\n const swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.update();\n }\n },\n slidesLengthChange() {\n const swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n snapGridLengthChange() {\n const swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n destroy() {\n const swiper = this;\n swiper.pagination.destroy();\n },\n click(e) {\n const swiper = this;\n if (\n swiper.params.pagination.el\n && swiper.params.pagination.hideOnClick\n && swiper.pagination.$el.length > 0\n && !$(e.target).hasClass(swiper.params.pagination.bulletClass)\n ) {\n const isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n swiper.emit('paginationShow', swiper);\n } else {\n swiper.emit('paginationHide', swiper);\n }\n swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n },\n },\n};\n","import { document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Support from '../../utils/support';\n\nconst Scrollbar = {\n setTranslate() {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n const {\n dragSize, trackSize, $dragEl, $el,\n } = scrollbar;\n const params = swiper.params.scrollbar;\n\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(swiper.scrollbar.timeout);\n $el[0].style.opacity = 1;\n swiper.scrollbar.timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n },\n setTransition(duration) {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n },\n updateSize() {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n const { scrollbar } = swiper;\n const { $dragEl, $el } = scrollbar;\n\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n const trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n const divider = swiper.size / swiper.virtualSize;\n const moveDivider = divider * (trackSize / swiper.size);\n let dragSize;\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n Utils.extend(scrollbar, {\n trackSize,\n divider,\n moveDivider,\n dragSize,\n });\n scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n },\n getPointerPosition(e) {\n const swiper = this;\n if (swiper.isHorizontal()) {\n return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientX : e.clientX);\n }\n return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientY : e.clientY);\n },\n setDragPosition(e) {\n const swiper = this;\n const { scrollbar, rtlTranslate: rtl } = swiper;\n const {\n $el,\n dragSize,\n trackSize,\n dragStartPos,\n } = scrollbar;\n\n let positionRatio;\n positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top']\n - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);\n\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n },\n onDragStart(e) {\n const swiper = this;\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n swiper.scrollbar.isTouched = true;\n swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl)\n ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n scrollbar.setDragPosition(e);\n\n clearTimeout(swiper.scrollbar.dragTimeout);\n\n $el.transition(0);\n if (params.hide) {\n $el.css('opacity', 1);\n }\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n swiper.emit('scrollbarDragStart', e);\n },\n onDragMove(e) {\n const swiper = this;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n scrollbar.setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n swiper.emit('scrollbarDragMove', e);\n },\n onDragEnd(e) {\n const swiper = this;\n\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n swiper.scrollbar.isTouched = false;\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n if (params.hide) {\n clearTimeout(swiper.scrollbar.dragTimeout);\n swiper.scrollbar.dragTimeout = Utils.nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n swiper.emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n },\n enableDraggable() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const {\n scrollbar, touchEventsTouch, touchEventsDesktop, params,\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch) {\n target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n document.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n document.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n disableDraggable() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const {\n scrollbar, touchEventsTouch, touchEventsDesktop, params,\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch) {\n target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n document.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n document.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n init() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const { scrollbar, $el: $swiperEl } = swiper;\n const params = swiper.params.scrollbar;\n\n let $el = $(params.el);\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n $el = $swiperEl.find(params.el);\n }\n\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n if ($dragEl.length === 0) {\n $dragEl = $(`
`);\n $el.append($dragEl);\n }\n\n Utils.extend(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0],\n });\n\n if (params.draggable) {\n scrollbar.enableDraggable();\n }\n },\n destroy() {\n const swiper = this;\n swiper.scrollbar.disableDraggable();\n },\n};\n\nexport default {\n name: 'scrollbar',\n params: {\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n scrollbar: {\n init: Scrollbar.init.bind(swiper),\n destroy: Scrollbar.destroy.bind(swiper),\n updateSize: Scrollbar.updateSize.bind(swiper),\n setTranslate: Scrollbar.setTranslate.bind(swiper),\n setTransition: Scrollbar.setTransition.bind(swiper),\n enableDraggable: Scrollbar.enableDraggable.bind(swiper),\n disableDraggable: Scrollbar.disableDraggable.bind(swiper),\n setDragPosition: Scrollbar.setDragPosition.bind(swiper),\n getPointerPosition: Scrollbar.getPointerPosition.bind(swiper),\n onDragStart: Scrollbar.onDragStart.bind(swiper),\n onDragMove: Scrollbar.onDragMove.bind(swiper),\n onDragEnd: Scrollbar.onDragEnd.bind(swiper),\n isTouched: false,\n timeout: null,\n dragTimeout: null,\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.scrollbar.init();\n swiper.scrollbar.updateSize();\n swiper.scrollbar.setTranslate();\n },\n update() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n resize() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n observerUpdate() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n setTranslate() {\n const swiper = this;\n swiper.scrollbar.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n swiper.scrollbar.setTransition(duration);\n },\n destroy() {\n const swiper = this;\n swiper.scrollbar.destroy();\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Parallax = {\n setTransform(el, progress) {\n const swiper = this;\n const { rtl } = swiper;\n\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n\n const p = $el.attr('data-swiper-parallax') || '0';\n let x = $el.attr('data-swiper-parallax-x');\n let y = $el.attr('data-swiper-parallax-y');\n const scale = $el.attr('data-swiper-parallax-scale');\n const opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if ((x).indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if ((y).indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress)));\n $el[0].style.opacity = currentOpacity;\n }\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(`translate3d(${x}, ${y}, 0px)`);\n } else {\n const currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));\n $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n }\n },\n setTranslate() {\n const swiper = this;\n const {\n $el, slides, progress, snapGrid,\n } = swiper;\n $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each((index, el) => {\n swiper.parallax.setTransform(el, progress);\n });\n slides.each((slideIndex, slideEl) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each((index, el) => {\n swiper.parallax.setTransform(el, slideProgress);\n });\n });\n },\n setTransition(duration = this.params.speed) {\n const swiper = this;\n const { $el } = swiper;\n $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each((index, parallaxEl) => {\n const $parallaxEl = $(parallaxEl);\n let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n },\n};\n\nexport default {\n name: 'parallax',\n params: {\n parallax: {\n enabled: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n parallax: {\n setTransform: Parallax.setTransform.bind(swiper),\n setTranslate: Parallax.setTranslate.bind(swiper),\n setTransition: Parallax.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n init() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTranslate() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Device from '../../utils/device';\nimport Support from '../../utils/support';\n\nconst Zoom = {\n // Calc Scale From Multi-touches\n getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt(((x2 - x1) ** 2) + ((y2 - y1) ** 2));\n return distance;\n },\n // Events\n onGestureStart(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n if (!Support.gestures) {\n if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureTouched = true;\n gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n swiper.zoom.isScaling = true;\n },\n onGestureChange(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (!Support.gestures) {\n if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureMoved = true;\n gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (Support.gestures) {\n zoom.scale = e.scale * zoom.currentScale;\n } else {\n zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;\n }\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = (gesture.maxRatio - 1) + (((zoom.scale - gesture.maxRatio) + 1) ** 0.5);\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = (params.minRatio + 1) - (((params.minRatio - zoom.scale) + 1) ** 0.5);\n }\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n },\n onGestureEnd(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (!Support.gestures) {\n if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\n return;\n }\n if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {\n return;\n }\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n zoom.currentScale = zoom.scale;\n zoom.isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n },\n onTouchStart(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (Device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n },\n onTouchMove(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n if (swiper.rtl) {\n image.startX = -image.startX;\n image.startY = -image.startY;\n }\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\n image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n image.maxX = -image.minX;\n image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n image.maxY = -image.minY;\n\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !zoom.isScaling) {\n if (\n swiper.isHorizontal()\n && (\n (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x)\n || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)\n )\n ) {\n image.isTouched = false;\n return;\n } if (\n !swiper.isHorizontal()\n && (\n (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y)\n || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)\n )\n ) {\n image.isTouched = false;\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n\n image.isMoved = true;\n image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX;\n image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = (image.minX + 1) - (((image.minX - image.currentX) + 1) ** 0.8);\n }\n if (image.currentX > image.maxX) {\n image.currentX = (image.maxX - 1) + (((image.currentX - image.maxX) + 1) ** 0.8);\n }\n\n if (image.currentY < image.minY) {\n image.currentY = (image.minY + 1) - (((image.minY - image.currentY) + 1) ** 0.8);\n }\n if (image.currentY > image.maxY) {\n image.currentY = (image.maxY - 1) + (((image.currentY - image.maxY) + 1) ** 0.8);\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n },\n onTouchEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n image.maxX = -image.minX;\n image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n },\n onTransitionEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n },\n // Toggle Zoom\n toggle(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoom.out();\n } else {\n // Zoom In\n zoom.in(e);\n }\n },\n in(e) {\n const swiper = this;\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture, image } = zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left;\n offsetY = gesture.$slideEl.offset().top;\n diffX = (offsetX + (slideWidth / 2)) - touchX;\n diffY = (offsetY + (slideHeight / 2)) - touchY;\n\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n\n translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0);\n translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n },\n out() {\n const swiper = this;\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture } = zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n gesture.$slideEl = undefined;\n },\n // Attach/Detach Events\n enable() {\n const swiper = this;\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n const slideSelector = `.${swiper.params.slideClass}`;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.on('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.on('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n }\n\n // Move image\n swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\n },\n disable() {\n const swiper = this;\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n\n swiper.zoom.enabled = false;\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n const slideSelector = `.${swiper.params.slideClass}`;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.off('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.off('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n }\n\n // Move image\n swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\n },\n};\n\nexport default {\n name: 'zoom',\n params: {\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed',\n },\n },\n create() {\n const swiper = this;\n const zoom = {\n enabled: false,\n scale: 1,\n currentScale: 1,\n isScaling: false,\n gesture: {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3,\n },\n image: {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {},\n },\n velocity: {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined,\n },\n };\n\n ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach((methodName) => {\n zoom[methodName] = Zoom[methodName].bind(swiper);\n });\n Utils.extend(swiper, {\n zoom,\n });\n\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;\n const slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;\n swiper.emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.zoom.enabled) {\n swiper.zoom.enable();\n }\n },\n destroy() {\n const swiper = this;\n swiper.zoom.disable();\n },\n touchStart(e) {\n const swiper = this;\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchStart(e);\n },\n touchEnd(e) {\n const swiper = this;\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchEnd(e);\n },\n doubleTap(e) {\n const swiper = this;\n if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n swiper.zoom.toggle(e);\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n swiper.zoom.onTransitionEnd();\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n swiper.zoom.onTransitionEnd();\n }\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Lazy = {\n loadInSlide(index, loadInDuplicate = true) {\n const swiper = this;\n const params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n const $slideEl = isVirtual\n ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`)\n : swiper.slides.eq(index);\n\n let $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n $images = $images.add($slideEl[0]);\n }\n if ($images.length === 0) return;\n\n $images.each((imageIndex, imageEl) => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n const $pictureEl = $imageEl.parent('picture');\n\n swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, () => {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) return;\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n if ($pictureEl.length) {\n $pictureEl.children('source').each((sourceIndex, sourceEl) => {\n const $source = $(sourceEl);\n\n if ($source.attr('data-srcset')) {\n $source.attr('srcset', $source.attr('data-srcset'));\n $source.removeAttr('data-srcset');\n }\n });\n }\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n swiper.lazy.loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n swiper.lazy.loadInSlide(duplicatedSlide.index(), false);\n }\n }\n swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n\n swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n },\n load() {\n const swiper = this;\n const {\n $wrapperEl, params: swiperParams, slides, activeIndex,\n } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n\n let slidesPerView = swiperParams.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`).length) {\n return true;\n }\n } else if (slides[index]) return true;\n return false;\n }\n\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n return $(slideEl).index();\n }\n\n if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;\n if (swiper.params.watchSlidesVisibility) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((elIndex, slideEl) => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n swiper.lazy.loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n swiper.lazy.loadInSlide(activeIndex);\n }\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n const amount = params.loadPrevNextAmount;\n const spv = slidesPerView;\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n // Prev Slides\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));\n\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));\n }\n }\n },\n};\n\nexport default {\n name: 'lazy',\n params: {\n lazy: {\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n lazy: {\n initialImageLoaded: false,\n load: Lazy.load.bind(swiper),\n loadInSlide: Lazy.loadInSlide.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n },\n init() {\n const swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\n swiper.lazy.load();\n }\n },\n scroll() {\n const swiper = this;\n if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n swiper.lazy.load();\n }\n },\n resize() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n scrollbarDragMove() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n transitionStart() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) {\n swiper.lazy.load();\n }\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n swiper.lazy.load();\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.params.lazy.enabled && swiper.params.cssMode) {\n swiper.lazy.load();\n }\n },\n },\n};\n","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport Swiper from '../core/core-class';\nimport Utils from '../../utils/utils';\n\nconst Controller = {\n LinearSpline: function LinearSpline(x, y) {\n const binarySearch = (function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }());\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];\n };\n return this;\n },\n // xxx: for now i will just save one spline function to to\n getInterpolateFunction(c) {\n const swiper = this;\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop\n ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid)\n : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n },\n setTranslate(setTranslate, byController) {\n const swiper = this;\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n swiper.controller.getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n },\n setTransition(duration, byController) {\n const swiper = this;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n Utils.nextTick(() => {\n c.updateAutoHeight();\n });\n }\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n },\n};\nexport default {\n name: 'controller',\n params: {\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide', // or 'container'\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n controller: {\n control: swiper.params.controller.control,\n getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),\n setTranslate: Controller.setTranslate.bind(swiper),\n setTransition: Controller.setTransition.bind(swiper),\n },\n });\n },\n on: {\n update() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n resize() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n observerUpdate() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n setTranslate(translate, byController) {\n const swiper = this;\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n },\n setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst a11y = {\n makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n return $el;\n },\n makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n return $el;\n },\n addElRole($el, role) {\n $el.attr('role', role);\n return $el;\n },\n addElLabel($el, label) {\n $el.attr('aria-label', label);\n return $el;\n },\n disableEl($el) {\n $el.attr('aria-disabled', true);\n return $el;\n },\n enableEl($el) {\n $el.attr('aria-disabled', false);\n return $el;\n },\n onEnterKey(e) {\n const swiper = this;\n const params = swiper.params.a11y;\n if (e.keyCode !== 13) return;\n const $targetEl = $(e.target);\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n swiper.a11y.notify(params.lastSlideMessage);\n } else {\n swiper.a11y.notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n swiper.a11y.notify(params.firstSlideMessage);\n } else {\n swiper.a11y.notify(params.prevSlideMessage);\n }\n }\n if (swiper.pagination && $targetEl.is(`.${swiper.params.pagination.bulletClass}`)) {\n $targetEl[0].click();\n }\n },\n notify(message) {\n const swiper = this;\n const notification = swiper.a11y.liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n },\n updateNavigation() {\n const swiper = this;\n\n if (swiper.params.loop || !swiper.navigation) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n swiper.a11y.disableEl($prevEl);\n swiper.a11y.makeElNotFocusable($prevEl);\n } else {\n swiper.a11y.enableEl($prevEl);\n swiper.a11y.makeElFocusable($prevEl);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n swiper.a11y.disableEl($nextEl);\n swiper.a11y.makeElNotFocusable($nextEl);\n } else {\n swiper.a11y.enableEl($nextEl);\n swiper.a11y.makeElFocusable($nextEl);\n }\n }\n },\n updatePagination() {\n const swiper = this;\n const params = swiper.params.a11y;\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.bullets.each((bulletIndex, bulletEl) => {\n const $bulletEl = $(bulletEl);\n swiper.a11y.makeElFocusable($bulletEl);\n swiper.a11y.addElRole($bulletEl, 'button');\n swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n });\n }\n },\n init() {\n const swiper = this;\n\n swiper.$el.append(swiper.a11y.liveRegion);\n\n // Navigation\n const params = swiper.params.a11y;\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n swiper.a11y.makeElFocusable($nextEl);\n swiper.a11y.addElRole($nextEl, 'button');\n swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);\n $nextEl.on('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n swiper.a11y.makeElFocusable($prevEl);\n swiper.a11y.addElRole($prevEl, 'button');\n swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);\n $prevEl.on('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.on('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();\n\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n $nextEl.off('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n $prevEl.off('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.off('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n }\n },\n};\nexport default {\n name: 'a11y',\n params: {\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n a11y: {\n liveRegion: $(``),\n },\n });\n Object.keys(a11y).forEach((methodName) => {\n swiper.a11y[methodName] = a11y[methodName].bind(swiper);\n });\n },\n on: {\n init() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.init();\n swiper.a11y.updateNavigation();\n },\n toEdge() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n fromEdge() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n paginationUpdate() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updatePagination();\n },\n destroy() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.destroy();\n },\n },\n};\n","import { window } from 'ssr-window';\nimport Utils from '../../utils/utils';\n\nconst History = {\n init() {\n const swiper = this;\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n const history = swiper.history;\n history.initialized = true;\n history.paths = History.getPathValues();\n if (!history.paths.key && !history.paths.value) return;\n history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n destroy() {\n const swiper = this;\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n setHistoryPopState() {\n const swiper = this;\n swiper.history.paths = History.getPathValues();\n swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);\n },\n getPathValues() {\n const pathArray = window.location.pathname.slice(1).split('/').filter((part) => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return { key, value };\n },\n setHistory(key, index) {\n const swiper = this;\n if (!swiper.history.initialized || !swiper.params.history.enabled) return;\n const slide = swiper.slides.eq(index);\n let value = History.slugify(slide.attr('data-history'));\n if (!window.location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({ value }, null, value);\n } else {\n window.history.pushState({ value }, null, value);\n }\n },\n slugify(text) {\n return text.toString()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w-]+/g, '')\n .replace(/--+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n },\n scrollToSlide(speed, value, runCallbacks) {\n const swiper = this;\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHistory = History.slugify(slide.attr('data-history'));\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n },\n};\n\nexport default {\n name: 'history',\n params: {\n history: {\n enabled: false,\n replaceState: false,\n key: 'slides',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n history: {\n init: History.init.bind(swiper),\n setHistory: History.setHistory.bind(swiper),\n setHistoryPopState: History.setHistoryPopState.bind(swiper),\n scrollToSlide: History.scrollToSlide.bind(swiper),\n destroy: History.destroy.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.init();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.destroy();\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.history.initialized) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.history.initialized && swiper.params.cssMode) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n },\n },\n};\n","import { window, document } from 'ssr-window';\nimport $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst HashNavigation = {\n onHashCange() {\n const swiper = this;\n swiper.emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`).index();\n if (typeof newIndex === 'undefined') return;\n swiper.slideTo(newIndex);\n }\n },\n setHash() {\n const swiper = this;\n if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, (`#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || ''));\n swiper.emit('hashSet');\n } else {\n const slide = swiper.slides.eq(swiper.activeIndex);\n const hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n swiper.emit('hashSet');\n }\n },\n init() {\n const swiper = this;\n if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) return;\n swiper.hashNavigation.initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n};\nexport default {\n name: 'hash-navigation',\n params: {\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n hashNavigation: {\n initialized: false,\n init: HashNavigation.init.bind(swiper),\n destroy: HashNavigation.destroy.bind(swiper),\n setHash: HashNavigation.setHash.bind(swiper),\n onHashCange: HashNavigation.onHashCange.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.init();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.destroy();\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.hashNavigation.initialized) {\n swiper.hashNavigation.setHash();\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.hashNavigation.initialized && swiper.params.cssMode) {\n swiper.hashNavigation.setHash();\n }\n },\n },\n};\n","/* eslint no-underscore-dangle: \"off\" */\nimport Utils from '../../utils/utils';\n\nconst Autoplay = {\n run() {\n const swiper = this;\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = Utils.nextTick(() => {\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isBeginning) {\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isEnd) {\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();\n }, delay);\n },\n start() {\n const swiper = this;\n if (typeof swiper.autoplay.timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n swiper.emit('autoplayStart');\n swiper.autoplay.run();\n return true;\n },\n stop() {\n const swiper = this;\n if (!swiper.autoplay.running) return false;\n if (typeof swiper.autoplay.timeout === 'undefined') return false;\n\n if (swiper.autoplay.timeout) {\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = undefined;\n }\n swiper.autoplay.running = false;\n swiper.emit('autoplayStop');\n return true;\n },\n pause(speed) {\n const swiper = this;\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.paused = true;\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n swiper.autoplay.run();\n } else {\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n }\n },\n};\n\nexport default {\n name: 'autoplay',\n params: {\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n autoplay: {\n running: false,\n paused: false,\n run: Autoplay.run.bind(swiper),\n start: Autoplay.start.bind(swiper),\n stop: Autoplay.stop.bind(swiper),\n pause: Autoplay.pause.bind(swiper),\n onVisibilityChange() {\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n swiper.autoplay.pause();\n }\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n swiper.autoplay.run();\n swiper.autoplay.paused = false;\n }\n },\n onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n swiper.autoplay.paused = false;\n if (!swiper.autoplay.running) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.run();\n }\n },\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.autoplay.enabled) {\n swiper.autoplay.start();\n document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n }\n },\n beforeTransitionStart(speed, internal) {\n const swiper = this;\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n swiper.autoplay.stop();\n }\n }\n },\n sliderFirstMove() {\n const swiper = this;\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.pause();\n }\n }\n },\n touchEnd() {\n const swiper = this;\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.run();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.autoplay.running) {\n swiper.autoplay.stop();\n }\n document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n },\n },\n};\n","import Utils from '../../utils/utils';\n\nconst Fade = {\n setTranslate() {\n const swiper = this;\n const { slides } = swiper;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset = $slideEl[0].swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade\n ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n $slideEl\n .css({\n opacity: slideOpacity,\n })\n .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n },\n setTransition(duration) {\n const swiper = this;\n const { slides, $wrapperEl } = swiper;\n slides.transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n slides.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n};\n\nexport default {\n name: 'effect-fade',\n params: {\n fadeEffect: {\n crossFade: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n fadeEffect: {\n setTranslate: Fade.setTranslate.bind(swiper),\n setTransition: Fade.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}fade`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\nimport Browser from '../../utils/browser';\n\nconst Cube = {\n setTranslate() {\n const swiper = this;\n const {\n $el, $wrapperEl, slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize,\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $wrapperEl.append($cubeShadowEl);\n }\n $cubeShadowEl.css({ height: `${swiperWidth}px` });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $el.append($cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + (round * 4 * swiperSize);\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = (3 * swiperSize) + (swiperSize * 4 * round);\n }\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = (slideIndex * 90) + (progress * 90);\n if (rtl) wrapperRotate = (-slideIndex * 90) - (progress * 90);\n }\n $slideEl.transform(transform);\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(`
`);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(`
`);\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n '-moz-transform-origin': `50% 50% -${swiperSize / 2}px`,\n '-ms-transform-origin': `50% 50% -${swiperSize / 2}px`,\n 'transform-origin': `50% 50% -${swiperSize / 2}px`,\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(`translate3d(0px, ${(swiperWidth / 2) + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);\n const multiplier = 1.5 - (\n (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2)\n + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)\n );\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${(swiperHeight / 2) + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);\n }\n }\n const zFactor = (Browser.isSafari || Browser.isWebView) ? (-swiperSize / 2) : 0;\n $wrapperEl\n .transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n },\n setTransition(duration) {\n const swiper = this;\n const { $el, slides } = swiper;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n },\n};\n\nexport default {\n name: 'effect-cube',\n params: {\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n cubeEffect: {\n setTranslate: Cube.setTranslate.bind(swiper),\n setTransition: Cube.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}cube`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Utils from '../../utils/utils';\n\nconst Flip = {\n setTranslate() {\n const swiper = this;\n const { slides, rtlTranslate: rtl } = swiper;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (swiper.params.flipEffect.slideShadows) {\n // Set shadows\n let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = $(`
`);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(`
`);\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n $slideEl\n .transform(`translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`);\n }\n },\n setTransition(duration) {\n const swiper = this;\n const { slides, activeIndex, $wrapperEl } = swiper;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n // eslint-disable-next-line\n slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n};\n\nexport default {\n name: 'effect-flip',\n params: {\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n flipEffect: {\n setTranslate: Flip.setTranslate.bind(swiper),\n setTransition: Flip.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}flip`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTransition(duration);\n },\n },\n};\n","import $ from '../../utils/dom';\nimport Support from '../../utils/support';\nimport Utils from '../../utils/utils';\n\nconst Coverflow = {\n setTranslate() {\n const swiper = this;\n const {\n width: swiperWidth, height: swiperHeight, slides, $wrapperEl, slidesSizesGrid,\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2);\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;\n\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = ((parseFloat(params.stretch) / 100) * slideSize);\n }\n let translateY = isHorizontal ? 0 : stretch * (offsetMultiplier);\n let translateX = isHorizontal ? stretch * (offsetMultiplier) : 0;\n\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n\n $slideEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = $(`
`);\n $slideEl.append($shadowBeforeEl);\n }\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = $(`
`);\n $slideEl.append($shadowAfterEl);\n }\n if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0;\n }\n }\n\n // Set correct perspective for IE10\n if (Support.pointerEvents || Support.prefixedPointerEvents) {\n const ws = $wrapperEl[0].style;\n ws.perspectiveOrigin = `${center}px 50%`;\n }\n },\n setTransition(duration) {\n const swiper = this;\n swiper.slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n },\n};\n\nexport default {\n name: 'effect-coverflow',\n params: {\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n coverflowEffect: {\n setTranslate: Coverflow.setTranslate.bind(swiper),\n setTransition: Coverflow.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n\n swiper.classNames.push(`${swiper.params.containerModifierClass}coverflow`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTransition(duration);\n },\n },\n};\n","import Utils from '../../utils/utils';\nimport $ from '../../utils/dom';\n\nconst Thumbs = {\n init() {\n const swiper = this;\n const { thumbs: thumbsParams } = swiper.params;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Utils.extend(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n Utils.extend(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n } else if (Utils.isObject(thumbsParams.swiper)) {\n swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, {\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n }));\n swiper.thumbs.swiperCreated = true;\n }\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);\n },\n onThumbClick() {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;\n else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;\n else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;\n else slideToIndex = prevIndex;\n }\n swiper.slideTo(slideToIndex);\n },\n update(initial) {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto'\n ? thumbsSwiper.slidesPerViewDynamic()\n : thumbsSwiper.params.slidesPerView;\n\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix();\n // eslint-disable-next-line\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n }\n // Find actual thumbs index to slide to\n const prevThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0)\n .index();\n const nextThumbsIndex = thumbsSwiper.slides\n .eq(currentThumbsIndex)\n .nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0)\n .index();\n if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;\n else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;\n else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;\n else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;\n else newThumbsIndex = prevThumbsIndex;\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n\n // Activate thumbs\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n if (thumbsSwiper.params.loop || (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n },\n};\nexport default {\n name: 'thumbs',\n params: {\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-container-thumbs',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n thumbs: {\n swiper: null,\n init: Thumbs.init.bind(swiper),\n update: Thumbs.update.bind(swiper),\n onThumbClick: Thumbs.onThumbClick.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n const { thumbs } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n swiper.thumbs.init();\n swiper.thumbs.update(true);\n },\n slideChange() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n update() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n resize() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n observerUpdate() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n setTransition(duration) {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n thumbsSwiper.setTransition(duration);\n },\n beforeDestroy() {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n if (swiper.thumbs.swiperCreated && thumbsSwiper) {\n thumbsSwiper.destroy();\n }\n },\n },\n};\n","// Swiper Class\nimport Swiper from './components/core/core-class';\n\n// Core Modules\nimport Device from './modules/device/device';\nimport Support from './modules/support/support';\nimport Browser from './modules/browser/browser';\nimport Resize from './modules/resize/resize';\nimport Observer from './modules/observer/observer';\n\n//IMPORT_COMPONENTS\n\nconst components = [\n Device,\n Support,\n Browser,\n Resize,\n Observer,\n //INSTALL_COMPONENTS\n];\n\nif (typeof Swiper.use === 'undefined') {\n Swiper.use = Swiper.Class.use;\n Swiper.installModule = Swiper.Class.installModule;\n}\n\nSwiper.use(components);\n\n//EXPORT\n"],"names":["BipaError","type","message","error","_this","name","stack","Object","setPrototypeOf","prototype","Error","MissingTranslationError","locale","_this2","BipaServiceError","_this4","BipaSubmissionError","fieldErrors","_this5","currentLocalizationText","PrivacyLocalizationKey","DefaultPrivacyLocalization","PRIVACY_AGREEMENT_TITLE","PRIVACY_FIRST_AGREEMENT","PRIVACY_IMPLICIT_AGREEMENT","PRIVACY_IMPLICIT_TERMS_AND_CONDITIONS","PRIVACY_IMPLICIT_TERMS_PRIVACY_CONJUNCTION","PRIVACY_IMPLICIT_PRIVACY_POLICY","PRIVACY_BUTTON_SUBMIT","PRIVACY_BUTTON_CANCEL","BIPA_FORM_TITLE","BIPA_CITIZEN_DECLARATION","BIPA_FORM_SUBTITLE","BIPA_FORM_NAME","BIPA_FORM_SURNAME","BIPA_FORM_EMAIL","BIPA_IMPLICIT_AGREEMENT","BIPA_IMPLICIT_TERMS_AND_CONDITIONS","BIPA_IMPLICIT_TERMS_PRIVACY_CONJUNCTION","BIPA_IMPLICIT_PRIVACY_POLICY","BIPA_FORM_IMPLICIT_AGREEMENT","BIPA_FORM_BUTTON_SUBMIT","BIPA_FORM_BUTTON_CANCEL","BIPA_SERVER_ERROR","LocalizationHelper","localizationText","key","NOT_BLANK","SIZE","EMAIL_REGEX","createFieldError","field","objectName","ParameterHelper","bipaForm","firstName","trim","length","push","lastName","email","match","YesNoCheckBox","props","React","className","checked","BIPA_NO","tabIndex","onChange","event","target","BIPA_YES","ROOT_STYLE_NAME","CookieHelper","setBiometricCookie","agreementType","biometricCookieExists","document","cookie","getBiometricCookieName","includes","localizationBaseUrl","fetchBipaJsonLight","environment","localizationFileUrl","bipaJsonEnv","fetch","then","response","ok","json","fetchBipaJson","isLight","ErrorIcon","width","height","viewBox","fill","xmlns","clipPath","d","id","RoundedCloseIcon","RoundedCheckIcon","BipaFormInput","isSubmitting","isError","onClear","value","inputRef","useRef","useState","isFocus","setIsFocus","clearBtnVisible","ref","onFocus","onBlur","onMouseDown","setTimeout","current","focus","BipaForm","formPrefill","firstNamePreFill","lastNamePrefill","emailPrefill","formData","setFormData","isValidRef","setError","serverError","setServerError","checkFieldErrors","useCallback","errorFields","isValid","firstNameInvalid","lastNameInvalid","emailInvalid","submitBipaForm","bipaVersion","isSuccess","_context","submitBipaFormRequest","source","accessToken","refreshToken","onAuthUpdated","callbacks","bipaRes","status","map","console","info","onError","statusText","fieldStyle","currentValue","useEffect","debounce","clearTimeout","useImperativeHandle","version","BIPA_FORM_ERROR","autoComplete","placeholder","e","data","BIPA_FORM_MANDATORY_FIELD","Button","isPrimary","children","variant","_ref$variant","RoundedSubtractIcon","RoundedAddIcon","Accordion","title","isExpanded","setisExpanded","onClick","CloseIcon","stroke","PrivacyPolicyOverlay","html","isFirstRender","containerRef","undefined","bipaFormFuncRef","isLoaded","setIsLoaded","illinoisUser","setIlliniosUser","isButtonDisable","setIsButtonDisable","setIsSubmitting","setBipaVersion","handleSubmit","canSubmit","onSubmit","scrollIntoView","loginRequest","tokenVersion","loginReturn","fetchBipa","bipaAgreementRequest","fetchPP","isLightVersion","defaultLocale","region","bipa","Promise","all","resolve","fallbackLocale","bipaAgreementText","_response$","BIPA_AGREEMENT","_response$2","text","bipaAgreementVersion","_response$3","BIPA_FORM_BIPA_AGREEMENT","privacy","onDisplayPage","onClose","stickyHeader","htmlFor","BIPA_CITIZEN_QUESTION","PRIVACY_POLICY_SECTION_TITLE","dangerouslySetInnerHTML","__html","PRIVACY_AGREEMENT_TEXT","BIPA_SECTION_TITLE","PRIVACY_IMPLICIT_AGREEMENT_NEW","replace","brandName","rel","href","termsAndConditions","onTermsAndConditionsClick","preventDefault","onUserReject","style","maxWidth","disabled","getOwnPropertySymbols","hasOwnProperty","propIsEnumerable","propertyIsEnumerable","toObject","val","TypeError","module","exports","assign","test1","String","getOwnPropertyNames","test2","i","fromCharCode","n","join","test3","split","forEach","letter","keys","err","shouldUseNative","from","symbols","to","s","arguments","call","I18nextProvider","_ref","i18n","defaultNS","useMemo","createElement","I18nContext","__assign","this","t","p","apply","__importStar","mod","__esModule","result","k","__importDefault","defineProperty","react_1","require","swiper_1","object_assign_1","utils_1","ReactIdSwiper","activeSlideKey","ContainerEl","containerClass","getSwiper","navigation","noSwiping","pagination","parallax","parallaxEl","WrapperEl","wrapperClass","rebuildOnUpdate","renderScrollbar","renderPagination","renderPrevButton","renderNextButton","renderParallax","rtl","scrollbar","shouldSwiperUpdate","slideClass","loop","swiperNodeRef","swiperInstanceRef","getActiveSlideIndexFromProps","activeSlideId","Children","child","isValidElement","destroySwiper","destroy","buildSwiper","default","slideToIndex","slideTo","update","numSlides","slides","activeIndex","index","Math","max","swiper","validateChildren","dir","isReactElement","slideClassNames","cloneElement","el","nextEl","prevEl","warn","defaultProps","_a","classNames","displayName","ReactIdSwiper_1","HTMLElement","Array","isArray","element","isModuleAvailable","modules","moduleName","moduleAvailable","__extends","extendStatics","b","__proto__","__","constructor","create","__createBinding","o","m","k2","enumerable","get","__setModuleDefault","v","__spreadArrays","il","r","a","j","jl","types_1","INCREASE_KEYS","DECREASE_KEYS","Range","_super","trackRef","createRef","thumbRefs","markRefs","state","draggedTrackPos","draggedThumbIndex","thumbZIndexes","values","isChanged","markOffsets","getOffsets","direction","min","trackElement","trackRect","getBoundingClientRect","trackPadding","getPaddingAndBorder","getThumbs","thumb","thumbOffsets","x","y","thumbRect","thumbMargins","getMargin","Direction","Right","left","top","relativeValue","Left","right","Up","Down","assertUnreachable","filter","hasAttribute","getTargetIndex","findIndex","contains","addTouchEvents","addEventListener","schdOnTouchMove","passive","schdOnEnd","addMouseEvents","schdOnMouseMove","onMouseDownTrack","button","persist","nativeEvent","draggableTrack","some","thumbRef","setState","clientX","clientY","onMove","getClosestThumbIndex","onResize","translateThumbs","calculateMarkOffsets","onTouchStartTrack","touches","onMouseOrTouchStart","isTouch","isTouchEvent","onMouseMove","onTouchMove","onKeyDown","step","inverter","replaceAt","normalizeValue","fireOnFinalChange","onKeyUp","_b","trackLength","isVertical","dX","dY","deltaValue","abs","sign","thumbValue","newValues","slice","newValue","allowOverlap","onEnd","removeEventListener","onFinalChange","renderMark","elStyles","window","getComputedStyle","trackWidth","parseInt","trackHeight","paddingLeft","paddingTop","res","numOfMarks","markHeight","markWidth","markRect","round","schd","componentDidMount","resizeObserver","ResizeObserver","observe","unobserve","checkInitialOverlap","checkBoundaries","isStepDivisible","componentDidUpdate","prevProps","prevState","componentWillUnmount","render","renderTrack","renderThumb","_c","transform","cursor","voidFn","onTouchStart","isDragged","offset","arr","position","marginTop","marginLeft","zIndex","userSelect","touchAction","WebkitUserSelect","MozUserSelect","msUserSelect","draggable","role","Component","checkValuesAgainstBoundaries","useThumbOverlap","getTrackBackground","Range_1","translate","getStepDecimals","decimals","toString","changedTouches","roundedRes","Number","toFixed","BIG_NUM","prev","next","remainder","floor","closestLowerNum","rounded","decimalPlaces","parseFloat","RangeError","every","item","bottom","elements","offsets","thumbs","thumbIndex","minThumbDistance","getThumbDistance","thumbDistance","fn","lastArgs","frameId","args","_i","requestAnimationFrame","ret","colors","middle","sort","reduce","acc","point","getThumbWidth","thumbEl","separator","valueToLabel","ceil","elWidth","innerText","childElementCount","elClone","cloneNode","innerHTML","visibility","body","appendChild","removeChild","rangeRef","labelStyle","setLabelStyle","labelValue","setLabelValue","newStyle","offsets_1","overlaps","buildOverlaps","thumbXWidth","thumbX","siblingIndex","siblingX","siblingWidth","Set","getOverlaps","labelValue_1","offsetsX","c","labelValues_1","first","last","lastWidth","indexOf","_inheritsLoose","subClass","superClass","replaceClassName","origClass","classToRemove","RegExp","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","_React$Component","context","initialStatus","appear","isMounting","enter","appearStatus","in","unmountOnExit","mountOnEnter","nextCallback","getDerivedStateFromProps","_proto","updateStatus","nextStatus","cancelNextCallback","getTimeouts","exit","timeout","mounting","performEnter","performExit","appearing","_ref2","nodeRef","ReactDOM","maybeNode","maybeAppearing","timeouts","enterTimeout","config","safeSetState","onEntered","onEnter","onEntering","onTransitionEnd","_this3","onExit","onExiting","onExited","cancel","nextState","callback","setNextCallback","active","handler","node","doesNotHaveTimeoutOrListener","addEndListener","_ref3","maybeNextCallback","_this$props","childProps","_objectWithoutPropertiesLoose","TransitionGroupContext","Provider","noop","contextType","propTypes","removeClass","classes","classList","remove","setAttribute","baseVal","CSSTransition","_len","_key","concat","appliedClasses","_this$resolveArgument","resolveArguments","removeClasses","addClass","_this$resolveArgument2","_this$resolveArgument3","getClassNames","isStringClassNames","baseClassName","activeClassName","doneClassName","phase","scrollTop","add","hasClass","_addClass","_this$appliedClasses$","base","done","_extends","isObject","obj","extend","src","doc","ssrDocument","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","childNodes","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","origin","pathname","protocol","search","win","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","getPropertyValue","Image","Date","screen","matchMedia","Dom7","$","selector","els","tempParent","toCreate","nodeType","unique","uniqueArray","Class","Methods","toggleClass","toggle","attr","attrs","getAttribute","attrName","removeAttr","removeAttribute","dom7ElementDataStorage","dataKey","elStyle","webkitTransform","transition","duration","webkitTransitionDuration","transitionDuration","on","eventType","targetSelector","listener","capture","handleLiveEvent","eventData","dom7EventData","unshift","is","parents","handleEvent","events","dom7LiveListeners","proxyListener","dom7Listeners","off","handlers","dom7proxy","splice","trigger","evt","detail","bubbles","cancelable","dataIndex","dispatchEvent","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","styles","offsetWidth","outerHeight","offsetHeight","box","clientTop","clientLeft","scrollLeft","css","prop","each","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","previousSibling","eq","returnIndex","append","newChild","tempDiv","firstChild","prepend","insertBefore","nextElementSibling","nextAll","nextEls","previousElementSibling","prevAll","prevEls","parent","parentNode","closest","find","foundElements","found","matchedItems","toAdd","methodName","Utils","deleteProps","object","nextTick","delay","now","getTranslate","matrix","curTransform","transformMatrix","axis","curStyle","MozTransform","OTransform","MsTransform","msTransform","m41","m42","parseUrlQuery","url","params","param","query","urlToParse","paramsPart","decodeURIComponent","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","Support","touch","pointerEvents","observer","passiveListener","supportsPassive","opts","gestures","SwiperClass","self","eventsListeners","eventName","priority","method","onceHandler","f7proxy","eventHandler","eventsArray","instanceParams","instance","modulesParams","moduleParams","modulePropName","moduleProp","bind","moduleEventName","components","use","proto","static","install","installModule","updateSize","$el","clientWidth","clientHeight","isHorizontal","size","updateSlides","$wrapperEl","swiperSize","rtlTranslate","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","slidesForMargin","slideIndex","cssMode","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","slidesNumberEvenToRows","slideSize","virtualSize","marginRight","marginBottom","slidesPerColumn","slidesPerView","slidesPerColumnFill","newSlidesGrid","slidesPerRow","numFullColumns","slide","newSlideOrderIndex","column","row","slidesPerGroup","groupIndex","slideIndexInGroup","columnsInGroup","order","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingRight","boxSizing","paddingBottom","swiperSlideSize","centeredSlides","slidesPerGroupSkip","effect","setWrapperSize","slidesGridItem","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","emit","watchOverflow","checkOverflow","watchSlidesProgress","watchSlidesVisibility","updateSlidesOffset","updateAutoHeight","speed","activeSlides","newHeight","setTransition","visibleSlides","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideProgress","minTranslate","autoHeight","slideBefore","slideAfter","isVisible","progress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","updateSlidesClasses","activeSlide","realIndex","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","slideDuplicateClass","nextSlide","prevSlide","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","wrapperEl","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","scrollTo","onTranslateToWrapperTransitionEnd","destroyed","transitionStart","initialSlide","allowSlideNext","allowSlidePrev","scrollWidth","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","increment","loopFix","_clientLeft","slidePrev","normalize","prevIndex","normalizedTranslate","normalizedSnapGrid","prevSnap","slideReset","slideToClosest","threshold","currentSnap","nextSnap","slidesPerViewDynamic","loopCreate","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","diff","loopDestroy","setGrabCursor","moving","simulateTouch","isLocked","unsetGrabCursor","appendSlide","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","Device","platform","ua","device","ios","android","androidChrome","desktop","iphone","ipod","ipad","edge","ie","firefox","macos","windows","cordova","phonegap","electron","screenWidth","screenHeight","toLowerCase","os","osVersion","webView","webview","standalone","pixelRatio","touchEventsData","originalEvent","$targetEl","touchEventsTarget","which","isTouched","isMoved","noSwipingSelector","noSwipingClass","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","formElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","targetTouch","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","PI","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","grabCursor","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","velocities","time","currentPos","touchEndTime","timeDiff","lastClickTime","freeModeMomentum","lastMoveEvent","pop","velocityEvent","distance","velocity","freeModeMinimumVelocity","freeModeMomentumVelocityRatio","momentumDuration","freeModeMomentumRatio","momentumDistance","newPosition","afterBouncePosition","needsLoopFix","doBounce","bounceAmount","freeModeMomentumBounceRatio","freeModeMomentumBounce","freeModeSticky","once","moveDistance","currentSlideSize","longSwipesMs","stopIndex","groupSize","ratio","longSwipes","longSwipesRatio","shortSwipes","breakpoints","setBreakpoint","autoplay","running","paused","run","preventClicks","preventClicksPropagation","stopImmediatePropagation","dummyEventAttached","dummyEventListener","init","updateOnWindowResize","uniqueNavElements","preloadImages","updateOnImagesReady","passiveListeners","containerModifierClass","prototypes","manipulation","attachEvents","touchEvents","onTouchEnd","onScroll","start","move","end","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointOnlyParams","paramValue","breakpointParams","originalParams","wasMultiRow","isMultiRow","directionChanged","needsReLoop","changeDirection","points","minRatio","substr","wasLocked","lastSlidePosition","addClasses","suffixes","suffix","images","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","Swiper","prototypeGroup","protoMethod","moduleParamName","swiperParams","defaults","useModulesParams","passedParams","swipers","containerEl","newParams","shadowRoot","options","touchEventsTouch","touchEventsDesktop","clickTimeout","useModules","spv","breakLoop","translateValue","newDirection","needUpdate","currentDirection","slideEl","deleteInstance","cleanStyles","newDefaults","support","Browser","isEdge","isSafari","isWebView","test","browser","resize","resizeHandler","orientationChangeHandler","Observer","func","attach","ObserverFunc","mutations","observerUpdate","attributes","childList","characterData","observers","observeParents","containerParents","observeSlideChildren","disconnect","Virtual","force","addSlidesBefore","addSlidesAfter","previousFrom","previousTo","previousSlidesGrid","renderSlide","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","lazy","load","renderExternal","slidesToRender","prependIndexes","appendIndexes","cache","$slideEl","numberOfNewSlides","newCache","cachedIndex","$cachedEl","cachedElIndex","beforeInit","overwriteParams","Keyboard","handle","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","enable","disable","Mousewheel","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","isSupported","isEventSupported","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","handleMouseEnter","mouseEntered","handleMouseLeave","mousewheel","eventsTarged","releaseOnEdges","delta","rtlFactor","forceToAxis","invert","newEvent","ignoreWheelEvents","sensitivity","shift","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","raw","animateSlider","releaseScroll","getTime","Navigation","$nextEl","$prevEl","disabledClass","lockClass","onPrevClick","onNextClick","Pagination","total","paginationType","bullets","firstIndex","lastIndex","midIndex","dynamicBullets","bulletSize","dynamicMainBullets","dynamicBulletIndex","bulletActiveClass","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","currentClass","formatFractionCurrent","totalClass","formatFractionTotal","progressbarDirection","progressbarOpposite","scale","scaleX","scaleY","progressbarFillClass","renderCustom","paginationHTML","numberOfBullets","renderBullet","bulletClass","bulletElement","renderFraction","renderProgressbar","clickable","clickableClass","modifierClass","progressbarOppositeClass","hiddenClass","Scrollbar","dragSize","trackSize","$dragEl","newSize","newPos","hide","opacity","divider","moveDivider","display","getPointerPosition","setDragPosition","positionRatio","dragStartPos","onDragStart","dragTimeout","onDragMove","onDragEnd","snapOnRelease","enableDraggable","activeListener","disableDraggable","$swiperEl","dragClass","dragEl","Parallax","setTransform","currentOpacity","currentScale","$parallaxEl","parallaxDuration","Zoom","getDistanceBetweenTouches","x1","y1","x2","y2","onGestureStart","zoom","gesture","fakeGestureTouched","fakeGestureMoved","scaleStart","$imageEl","$imageWrapEl","maxRatio","isScaling","onGestureChange","scaleMove","onGestureEnd","touchesStart","slideWidth","slideHeight","scaledWidth","scaledHeight","minX","maxX","minY","maxY","touchesCurrent","prevPositionX","prevPositionY","prevTime","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","out","touchX","touchY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","zoomedSlideClass","activeListenerWithCapture","slideSelector","Lazy","loadInSlide","loadInDuplicate","$images","elementClass","loadedClass","loadingClass","imageIndex","background","$pictureEl","sourceIndex","sourceEl","$source","preloaderClass","slideOriginalIndex","originalSlide","duplicatedSlide","slideExist","initialImageLoaded","elIndex","loadPrevNext","loadPrevNextAmount","amount","maxIndex","minIndex","Controller","LinearSpline","i1","i3","binarySearch","guess","array","interpolate","getInterpolateFunction","controller","spline","controlledTranslate","controlled","control","setControlledTranslate","by","inverse","setControlledTransition","a11y","makeElFocusable","makeElNotFocusable","addElRole","addElLabel","label","disableEl","enableEl","onEnterKey","notify","lastSlideMessage","nextSlideMessage","firstSlideMessage","prevSlideMessage","click","notification","liveRegion","updateNavigation","updatePagination","bulletEl","$bulletEl","paginationBulletMessage","History","hashNavigation","paths","getPathValues","scrollToSlide","setHistoryPopState","pathArray","part","setHistory","slugify","currentState","HashNavigation","onHashCange","newHash","setHash","watchState","Autoplay","$activeSlideEl","reverseDirection","stopOnLastSlide","pause","waitForTransition","Fade","tx","ty","slideOpacity","fadeEffect","crossFade","eventTriggered","triggerEvents","Cube","$cubeShadowEl","swiperWidth","swiperHeight","cubeEffect","wrapperRotate","shadow","slideAngle","tz","slideShadows","shadowBefore","shadowAfter","shadowOffset","shadowScale","shadowAngle","sin","cos","scale1","scale2","zFactor","Flip","flipEffect","limitRotation","rotateY","rotateX","Coverflow","coverflowEffect","center","rotate","depth","offsetMultiplier","modifier","translateZ","stretch","slideTransform","$shadowBeforeEl","$shadowAfterEl","prefixedPointerEvents","perspectiveOrigin","Thumbs","thumbsParams","swiperCreated","thumbsContainerClass","onThumbClick","thumbsSwiper","slideThumbActiveClass","currentIndex","initial","autoScrollOffset","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","multipleActiveThumbs","Resize","hideOnClick","toEdge","fromEdge","isHidden","number","activeIndexChange","snapIndexChange","slidesLengthChange","snapGridLengthChange","set","touchStart","touchEnd","doubleTap","slideChange","loadOnTransitionStart","scroll","scrollbarDragMove","notificationClass","paginationUpdate","disableOnInteraction","onVisibilityChange","visibilityState","beforeTransitionStart","sliderFirstMove","beforeDestroy"],"sourceRoot":""}