{"mappings":";AWEA,OAAA,oBAAAA,GAAA,0BAAAC,GAAA,uBAAAC,OAAA,uCXcO,IAAMC,EAAqB,CAACC,EAAoCC,IAErE,CAAC,CAAC,CAAED,EAAiB,QAAQC,CAAA,EAElBC,EAAO,CAACC,EAA0BC,EAAY,MAAgBD,EAAM,KAAKC,CAAA,EAEzEC,GAAa,CAACF,EAAoCC,IAC7DF,EAAKC,EAAM,OAAO,OAAA,EAAsBC,CAAA,EAE7BE,EAAO,CAAwCC,EAAUC,EAAa,IACjFD,EAAM,MAAMC,CAAA,EAEDC,GAAeT,GAAgBA,EAE/BU,GAAO,IAAY,CAAA,EAInBC,EAAgCX,GAC1CA,EAAM,CAAA,EAAG,YAAA,EAAgBM,EAAKN,CAAA,EAEpBY,GAAaZ,GAA0BA,EAAM,QAAQ,SAAU,KAAA,EAAO,YAAA,EAEtEa,EAAY,CAAIb,EAAsBc,IAAwB,CACzE,KAAO,OAAOd,GAAS,YACrBA,EAASA,EAAkCc,CAAA,EAG7C,OAAOd,CAAA,EAGIe,GAAgB,CAAOC,EAAgBC,IAAsB,CAEpED,EAAI,KAAOC,GACbD,EAAI,OAAOA,EAAI,KAAA,EAAO,KAAA,EAAO,KAAA,CAAA,EAKpBE,GAAgB,CAACC,EAAanB,IACzC,CAACD,EAAS,MAAOoB,EAAI,CAAA,CAAA,IAAQpB,EAAS,MAAO,OAAOC,GAAO,CAAA,CAAA,GAAO,MAAM,QAAQA,CAAA,GAErEoB,GAAQ,CAACC,EAAkBC,EAAkBR,IACxDQ,EACI,OAAO,KAAKA,CAAA,EAAQ,OAAO,CAACC,EAAQJ,IAAQ,CAC1C,IAAMnB,EAAQa,EAAUS,EAAOH,CAAA,EAAML,CAAA,EAErC,OAAII,GAAcC,EAAKnB,CAAA,EAErBuB,EAAOX,GAAUO,CAAA,CAAA,EAAQnB,EAGzBuB,EAAOJ,CAAA,EACLA,EAAI,CAAA,GAAM,KAAOpB,EAAS,OAAQoB,EAAI,CAAA,CAAA,GAChCI,EAAOJ,CAAA,GAAQ,CAAA,GAAmB,OAAOnB,CAAA,EAC3CoB,GAAOG,EAAOJ,CAAA,GAAQ,CAAA,EAAiBnB,EAAmBc,CAAA,EAG3DS,CAAA,EACNF,CAAA,EACHA,EAEOG,GACV,OAAO,IAAQ,KAAe,IAAI,SAGjCC,GACAA,EAEG,QAAQ,sCAAuC,MAAA,EAG/C,QAAQ,MAAO,QAAA,GAETC,GAAmBC,IACzB,MAAM,QAAQA,CAAA,IACjBA,EAAS,CAACA,CAAA,GAIV,UACAzB,EACGyB,EAA8B,IAAKC,IAC9B,OAAOA,GAAU,WACnBA,EAAS,CAAE,IAAKA,CAAA,GAIfA,EAA4B,KAC7B1B,EACE,OAAO,KAAK0B,CAAA,EAAQ,IACjBC,GAAY,IAAIA,CAAA,UAAkBD,EAAkCC,CAAA,CAAA,GAAA,EAEvE,OAAA,EAAA,EAIN,GAAA,GAMOC,GAAkB9B,GAA0B,CAEvD,QAAS+B,EAAI,EAAGC,EAAQhC,EAAM,OAAQgC,KACpCD,EAAI,KAAK,KAAKA,EAAI/B,EAAM,WAAWgC,CAAA,EAAQ,UAAA,EAG7C,MAAO,QAAUD,EAAKA,IAAM,KAAQ,GAAG,SAAS,EAAA,CAAA,EAQrCE,GAAuB,CAAC1B,EAA0B2B,IAA4B,CAGzF,QAASC,EAAM,EAAGC,EAAO7B,EAAM,OAAQ4B,EAAMC,GAAQ,CACnD,IAAMC,EAASD,EAAOD,GAAQ,EAG1B5B,EAAM8B,CAAA,GAAUH,EAClBC,EAAME,EAAQ,EAEdD,EAAOC,CAAA,CAIX,OAAOD,CAAA,ECrHLE,EAGAC,EAIEC,EAAgB,CAACxC,EAAQ,MAC7BsC,EAAU,KAAKtC,CAAA,EACR,IAUHyC,GAAeC,GAAiC,CAGpDJ,EAAU,OAAS,KAAK,IAAIA,EAAU,YAAY,EAAA,EAAM,CAAC,CAAEI,EAA0B,CAAA,CAAA,EAGjFC,GAAgBC,GAA4BA,GAAK,CAAC7C,EAAS,KAAM6C,EAAE,CAAA,CAAA,EACnEC,GAAgBD,GAA4BA,EAAE,CAAA,GAAM,IAEpDE,GAAU,CAACC,EAAsBC,IAA2B,CAChET,EAAM,KAAK,CACT,EAAGD,EAAU,OAAOO,EAAA,EACpB,EAAGE,EACH,EAAGC,EACH,EAAGjD,EAASuC,EAAW,GAAA,EACvB,EAAG,EAAA,CAAA,CAAA,EAIDW,GAAYC,GAAuB,CACvC,IAAMF,EAASE,EAAO,CAAA,GAAM,IAExBF,IACFE,EAAS5C,EAAK4C,CAAA,GAGhB,IAAMC,EAASjD,EAAKoC,EAAU,OAAOK,EAAA,CAAA,EAErC,OAAAG,GAAQI,GAAU,IAAMC,GAAUA,GAAUA,EAAS,KAAOD,EAAQF,CAAA,EAE7D,EAAA,EAGHI,GAAc,CAACC,EAAeC,IAA8B,CAChE,IAAIJ,EAAS,GAEb,QAASK,EAAcC,EAAU,GAAOC,EAAW,EAAIF,EAAOF,EAAMI,GAAA,GAAgB,CAClF,GAAID,GAAWD,GAAQ,IAAK,CAC1BL,GAAUK,EACVC,EAAUD,GAAQ,IAClB,QAAA,CAGF,OAAQA,EAAA,CAAA,IACD,IAEHL,EACEA,GAAUV,EAAc,KAAOa,EAAMI,CAAA,GAAaF,EAAOF,EAAMI,GAAA,EAAc,IAAMP,CAAA,EAErF,MAAA,IAEG,IAEHA,EAASA,GAAUV,EAAcU,CAAA,EAEjCV,EAAA,EAEA,MAAA,IAEG,IACHA,EAAce,CAAA,EAEd,MAAA,IAEG,IAAA,IACA,IAAA,IACA,IAAA,IACA;EAAA,IACA,KACHL,EAASA,GAAUD,GAASC,CAAA,EAC5BT,GAAYc,IAAS,GAAA,EAErB,MAAA,QAGAL,GAAUK,CAAA,CAAA,CAIZL,IACEI,EACFd,EAAc,IAAMU,CAAA,EACXA,EAAO,MAAM,EAAA,GAAO,IAC7BV,EAAcU,EAAO,MAAM,EAAG,EAAA,CAAA,EAE9BD,GAASC,CAAA,EAAA,EAKTQ,GAAqBL,GAAuB,CAChDb,EAAA,EAGAmB,GAAWN,CAAA,EAEXZ,GAAA,CAAA,EAGImB,GAAa,CAACzC,EAAakC,IAAuB,CACtD,GAAIA,EAAO,CACTb,EAAA,EAYA,IAAMc,EAAYvD,EAAS,OAAQ,OAAOsD,GAAO,CAAA,CAAA,EAEjDD,GAAYjC,EAAKmC,CAAA,EAEbA,GACFI,GAAkBL,CAAA,EAGpBZ,GAAA,CAAA,CAAA,EAIEkB,GAAcN,GAAuB,CACzC,OAAQ,OAAOA,EAAA,CAAA,IACR,SACHD,GAAYC,CAAA,EACZ,MAAA,IACG,WACHP,GAAQO,CAAA,EACR,MAAA,IACG,SACC,MAAM,QAAQA,CAAA,EAChBA,EAAM,QAAQK,EAAA,EACLL,GACT,OAAO,KAAKA,CAAA,EAAO,QAASlC,GAAQ,CAClCyC,GAAWzC,EAAKkC,EAAMlC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAkB1B0C,GAAgB,IAAI,QAEpBC,GAAgBC,GAA4C,CAChE,IAAIC,EAAUH,GAAc,IAAIE,CAAA,EAEhC,GAAI,CAACC,EAAS,CAIZ,IAAIC,EAAgB,IAGhBf,EAAS,GAEbc,EAAUD,EAAQ,IAAI,CAACV,EAAOrB,IAAU,CAWtC,GATEiC,IAAkBA,IACjBZ,EAAM,MAAM,EAAA,GAAO,KAAOtD,EAAS,OAAQgE,EAAQ/B,EAAQ,CAAA,GAAM,IAAI,CAAA,CAAA,KAItEiC,EAAgBjC,GAIdA,GAASiC,EACX,OAAQC,GAAkB,CAEpBlC,GAASiC,IACXf,EAAS,IAGXA,GAAUG,EAGNtD,EAAS,MAAO,OAAOmE,GAAe,CAAA,CAAA,EACxChB,GAAUgB,EACDA,IACTd,GAAYF,CAAA,EACZA,EAAS,GACTS,GAAWO,CAAA,GAITlC,GAAS+B,EAAQ,OAAS,GAC5BX,GAAYF,CAAA,CAAA,EAOlB,IAAMiB,EAAe5B,EAAQ,CAAA,EAE7Ba,GAAYC,CAAA,EAIZ,IAAMe,EAAkB,CAAC,GAAG9B,CAAA,EAG5B,OAAAC,EAAQ,CAAA,EAEA2B,GAAkB,CACxB3B,EAAM,KAAK,GAAG4B,CAAA,EACd7B,EAAY,CAAC,GAAG8B,CAAA,EACZF,GACFP,GAAWO,CAAA,CAAA,CAAA,CAAA,EAKjBL,GAAc,IAAIE,EAASC,CAAA,CAAA,CAG7B,OAAOA,CAAA,EAGIK,GAASC,IACpBhC,EAAY,CAAA,EACZC,EAAQ,CAAA,EAIN,MAAM,QAAQ+B,EAAO,CAAA,CAAA,GACrB,MAAM,QAASA,EAAO,CAAA,EAA4B,GAAA,EAElDR,GAAaQ,EAAO,CAAA,CAAA,EAA4B,QAAQ,CAACC,EAAOvC,IAC9DuC,EAAMD,EAAOtC,EAAQ,CAAA,CAAA,CAAA,EAGvB2B,GAAWW,CAAA,EAGN/B,GCvSLiC,GACEC,GAAiB,CAACtD,EAAanB,KAC/B,OAAOA,GAAS,aAClBwE,GAAiB,IAGZxE,GAGH0E,GAAaC,GAAkC,CACnDH,GAAiB,GAEjB,IAAMrD,EAAM,KAAK,UAAUwD,EAAMF,EAAA,EAEjC,OAAOD,IAAkBrD,CAAA,EAIrByD,GAAiB,IAAI,QAedC,GAAY,CACvBC,EACAH,IACiB,CACjB,IAAMxD,EAAMuD,GAAUC,CAAA,EAElB5B,EAEJ,GAAI5B,EAAK,CAEP,IAAI4D,EAAQH,GAAe,IAAIE,CAAA,EAE1BC,GACHH,GAAe,IAAIE,EAAUC,EAAQ,IAAI,GAAA,EAG3ChC,EAAYgC,EAAM,IAAI5D,CAAA,CAAA,CAGxB,OAAK4B,IACHA,EAAY,OAAO,eACjB,CAACiC,EAA4BlE,KAC3BA,EAAU,MAAM,QAAQkE,CAAA,EAAUlE,EAAUkE,EACrCnE,EAAUiE,EAAQH,EAAM7D,CAAA,EAAUA,CAAA,GAE3C,SACA,CAIE,MAAO,IAAMK,GAAOwD,CAAA,CAAA,EAIpBI,IACFA,EAAM,IAAI5D,EAAe4B,CAAA,EAGzBhC,GAAcgE,EAAO,GAAA,IAIlBhC,CAAA,ECpEHkC,GAAe,CAACX,EAAmB,CAAE,IAAAY,CAAA,IAAmBA,EAAIb,GAAMC,CAAA,CAAA,EAE3Da,GAAe,IAAIb,IAC9BO,GAAUI,GAAcX,CAAA,ECTpBc,GAAaC,GAA+D,CAChFrF,EACAyD,EACAN,EACAmC,IACyB,CACzB,GAAItF,EAAO,CACT,IAAMuF,EAAa9B,GAAY4B,EAAQ5B,CAAA,EAEvC,GAAI8B,GAAcA,EAAW,OAAS,EACpC,OAAOA,EAAW,OAAO,CAACC,EAAcC,KACtCD,EAAanF,GAAW,CAAC8C,EAAQsC,EAAUH,CAAA,CAAA,CAAA,EAAYtF,EAChDwF,GACN,CAAA,CAAA,CAAA,CAAA,EAKIE,GAAwBN,GAClCjE,IACG,CACA,EAAG,CAAC,WAAY,WAAA,EAChB,EAAG,CAAC,YAAa,cAAA,EACjB,EAAG,CAAC,cAAe,cAAA,EACnB,EAAG,CAAC,cAAe,UAAA,EACnB,GAAI,CAAC,UAAA,EACL,GAAI,CAAC,WAAA,EACL,GAAI,CAAC,aAAA,EACL,GAAI,CAAC,cAAA,CAAA,GACoCA,CAAA,CAAA,EAGlCwE,GAAexE,GAAsC,CAChE,IAAMhB,GAAU,CAAE,EAAG,KAAM,EAAG,IAAA,EAA8CgB,CAAA,GAAQA,GAAO,IACxF,MAAM,EAAA,EACN,KAAA,EAEH,QAASa,EAAQ7B,EAAM,OAAQ6B,KAC7B,GACE,EAAE7B,EAAM6B,CAAA,EAAU,CAChB,EAAG,MACH,EAAG,QACH,EAAG,SACH,EAAG,MAAA,EACwB7B,EAAM6B,CAAA,CAAA,GAEnC,OAGJ,GAAI7B,EAAM,OAAQ,OAAOA,CAAA,EAOdyF,GAAsBR,GAAUO,EAAA,EC9BzCE,EACAC,EACAC,EAEEC,GAAmBC,GAAmCA,GAAK,OAAS,UAAY,OAEhFC,GAAYT,GAAqB,CACrCT,EACAlE,EACAqF,KACc,CAAA,CACbV,CAAA,EAAWU,IAAON,EAAI3F,EAAK8E,CAAA,IAAY,IAAMa,EAAA,GAG1CO,EAAgB,CAACX,EAAmBrF,IAAuB,CAC/D4E,EACAlE,EACAqF,KAECN,EAAI3F,EAAK8E,EAAQ5E,CAAA,IAAe,CAAA,CAC9BqF,GAAaU,CAAA,EAAgBN,CAAA,EAG5BQ,EAAiBC,GAAyC,CAACtB,EAAkB,CAAE,MAAAuB,CAAA,EAASJ,KAC3FN,EAAIU,EAAMD,GAAYH,EAAoBnB,CAAA,IAAsB,CAAA,CAC9DsB,GAAWH,CAAA,EAAKN,CAAA,EAGfW,GAAwB,CAACF,EAAuBlG,IAAsC,CAC1F4E,EACA,CAAE,MAAAuB,CAAA,EACFJ,KAECN,EAAIU,EAAMD,GAAYH,EAAoBnB,EAAQ9E,EAAK8E,EAAQ5E,CAAA,CAAA,IAA0B,CAAA,CACvFkG,GAAWH,CAAA,EAAKN,CAAA,EAGfY,EAAQ,CAACC,EAAwBC,IAAgC,CAAC3B,EAAQlE,IAC9E4F,EAAQ1B,EAAQlE,EAAS6F,CAAA,EAErBC,EAAUV,GAAS,SAAA,EACnBW,GAAWX,GAAS,UAAA,EACpBY,EAAgBZ,GAAS,eAAA,EACzBa,EAAiBb,GAAS,gBAAA,EAC1Bc,GAAYd,GAAS,WAAA,EACrBe,EAAsB9F,GAA+B,CAAC6D,EAAQlE,EAASqF,KAAQ,CAAA,CAClF,QAAUhF,CAAA,EAAMgF,EACjB,mBACE,oLAAA,GAGEe,GAAuB,CAAClC,EAAQ,CAAE,MAAAuB,CAAA,EAASJ,KAAQN,EAAIU,EAAM,QAASvB,CAAA,IAAY,CAAA,CAAGmB,CAAA,EAAKN,CAAA,EAE1FsB,GAAkB,CACtBnC,EACAuB,EACAJ,EACAG,EAAUH,KAETN,EAAIU,EAAOD,EAAU,UAA6BhG,EAAK0E,CAAA,CAAA,IAA0B,CAAA,CAC/E,QAAQmB,CAAA,UAAA,EAAeN,CAAA,EAGtBuB,GAAsB,CAACC,EAAeC,IAC1C,KAAK,MAAM,SAASD,EAAO,EAAA,EAAMC,CAAA,EAE7BC,GAAS,CACbC,EACAC,EACAC,IAEIF,GAASA,EAAM,CAAA,GAAM,MAAQ3B,GAAK2B,EAAM,OAAS,GAAK,KAAOzB,EAAI,CAAC,GAAI,EAAG,OAAA,EAAUF,EAAI,CAAA,GAClF,QAAQuB,GAAoBI,EAAM,OAAO,EAAG3B,CAAA,EAAIE,CAAA,CAAA,IAAMqB,GAC3DI,EAAM,OAAO,EAAI3B,EAAGA,CAAA,EACpBE,CAAA,CAAA,IACGqB,GAAoBI,EAAM,OAAO,EAAI,EAAI3B,EAAGA,CAAA,EAAIE,CAAA,CAAA,IACnD0B,EACI,YAAYA,CAAA,GAAkBC,EAAiB,IAAMA,EAAiB,EAAA,IACtEA,GAAkB,CAAA,IAInBF,EAGHG,GAAsB,CAC1BlC,EACAmC,EACAJ,IAEAA,GAAS,OAAOA,GAAS,UACpB3B,EAAI0B,GAAOC,EAAOI,EAAO,UAAA,IAAgB/B,IAAM2B,EAC9C,CAAA,CACG,QAAQI,CAAA,UAAA,EAAiB,IAAA,CACzBnC,CAAA,EAAW,CAAC+B,EAAO3B,CAAA,CAAA,EAEtB,CAAA,CAAGJ,CAAA,EAAW+B,CAAA,EAChB,OAEAK,GAAiBL,IAAoBzB,EAAIwB,GAAOC,EAAO,GAAI,GAAA,IAAS3B,EAAI,cAAgBE,EAExF+B,GAAiB,CACrB9C,EACA,CAAE,MAAAuB,CAAA,EACFJ,EACAG,EACAnD,EACAmC,KAGCO,EAAK,CAAE,EAAG,CAAC,QAAS,MAAA,EAAS,EAAG,CAAC,SAAU,KAAA,CAAA,EAC1Cb,EAAO,CAAA,CAAA,KACFe,EAAI,QAAQI,CAAA,IAAMnB,EAAO,CAAA,CAAA,YAC5BA,EAAO,CAAA,GAAM,UACX,CAAA,CACGe,CAAA,EAAI,GAAA,EAEP,CAAA,CACGA,CAAA,EAAI,IAAA,CACJ1F,GAAW,CAAC8C,EAAQ0C,EAAE,CAAA,EAAIP,CAAA,CAAA,CAAA,GACxBQ,EAAKS,EAAMD,EAAShG,EAAK0E,CAAA,CAAA,IAAa,QAAQc,CAAA,UAAYC,CAAA,KAAA,CAE5D1F,GAAW,CAAC8C,EAAQ0C,EAAE,CAAA,EAAIP,CAAA,CAAA,CAAA,EAAWQ,GAAM,CAACA,EAAI,QAAQA,CAAA,mBAAqBC,CAAA,KAAA,CAAA,EAElF,OAEAgC,GAAc,CAACtC,EAAkBT,IACrCA,EAAO,CAAA,GAAM,CAAA,CAWVS,CAAA,GAAY1F,EAAS,OAAQiF,EAAO,CAAA,GAAM,IAAI,CAAA,CAAA,EAAM,SAAW,IAAMA,EAAO,CAAA,CAAA,EAG3EgD,GAAoBvC,GAAsBT,GAC9CjF,EAAS,CAAC,QAAS,KAAA,EAAQiF,EAAO,CAAA,CAAA,EAC9B,CAAA,CAAGS,CAAA,EAAW,QAAUT,EAAO,CAAA,CAAA,EAC/B+C,GAAYtC,EAAUT,CAAA,EAEtBiD,GAAcL,GAA0C,CAAC5C,EAAQ,CAAE,MAAAuB,CAAA,IAAY,CACnF,GAAKV,EAAIU,EAAO,OAAS5F,EAAWiH,CAAA,EAAqB5C,EAAQ,EAAA,EAC/D,MAAO,CAAA,CAAG,QAAU4C,CAAA,EAAO/B,CAAA,EAG7B,OAAQb,EAAO,CAAA,EAAA,CAAA,IACR,OACH,OACEA,EAAO,CAAA,GAAM,CAAA,CACV,QAAU4C,CAAA,EAAO,QAAQ5C,EAAO,CAAA,CAAA,WAAaA,EAAO,CAAA,CAAA,EAAA,EAAA,IAGtD,QAAA,IACA,MACH,OACGa,EAAIU,EACF,OAAS5F,EAAWiH,CAAA,EAAQjH,EAAWqE,EAAO,CAAA,CAAA,EAC/C1E,EAAK0E,CAAA,EACL9E,EAAKI,EAAK0E,CAAA,CAAA,CAAA,IACN,CAAA,CACH,QAAQ4C,CAAA,IAAQ5C,EAAO,CAAA,CAAA,EAAA,EAAOa,CAAA,CAAA,CAAA,EAMnCqC,GAAwB,CAAClD,EAAQ,CAAE,MAAAuB,CAAA,EAASJ,IAAsC,CACtF,OAAQnB,EAAO,CAAA,EAAA,CAAA,IACR,QAAA,IACA,SAAA,IACA,SAAA,IACA,SAAA,IACA,OACH,OAAOoB,EAAc,aAAA,EAAepB,CAAA,EAAA,IACjC,WAAA,IACA,WACH,OAAOoB,EAAc,gBAAA,EAAkBpB,CAAA,EAAA,IACpC,UACH,OAAOmC,GAAgBnC,EAAQuB,EAAOJ,CAAA,CAAA,CAG1C,OAAQN,EAAIU,EAAOJ,EAAK,QAA2CnB,EAAQ,EAAA,GACvE,CAAE,YAAaa,CAAA,EACf8B,GACE,cACAxB,EACAI,EAAOJ,EAAK,QAA2CnB,CAAA,CAAA,CAAA,EAIzDmD,GAAaC,IAChBA,EACG,iEACA,2EACJ,0IAYIC,GAAqC,CAACrD,EAAQlE,EAASqF,IAC3DnB,EAAO,CAAA,IACNa,EAAI/E,EAAQ,MAAMqF,EAAsCnB,EAAO,CAAA,GAAMA,EAAO,CAAA,CAAA,IAAQ,CAAA,CAClF,QAAQmB,CAAA,IAAA,EAASnB,EAAO,CAAA,IAAO,KAAOa,EAAA,CACtC,QAAQM,CAAA,IAAA,EAASnB,EAAO,CAAA,IAAO,KAAOa,EACvC,UAAW,CAAC,GAAGM,CAAA,GAAKnB,EAAO,CAAA,EAAKA,EAAO,CAAA,EAAG,YAAA,EAAgB,EAAA,IAAMa,CAAA,IAAMsC,GAAA,CAAA,CAAA,EAGpEG,GAAkBnH,GAA6C,CAAC6D,EAAQlE,EAASqF,IACrFA,EAAG,CAAA,EAAKP,GAAM9E,EAAQ,MAAMK,EAAK6D,CAAA,EAASmB,EAAG,CAAA,EAAIhF,CAAA,EAAOkF,EAAclF,CAAA,EAAK6D,EAAQlE,EAASqF,CAAA,EAGxFoC,EAAUD,GAAe,SAAA,EAGzBE,EAASF,GAAe,QAAA,EAIxBG,GAAwB,CAACzD,EAAQ,CAAE,MAAAuB,CAAA,EAASJ,KAC/CN,EAAK,CAAE,EAAG,QAAS,EAAG,QAAA,EAAkDb,EAAO,CAAA,CAAA,IAAQ,CAAA,CACpFa,EAAI,GAAGM,CAAA,GAAKxF,EAAWkF,CAAA,CAAA,EAAA,EAAQU,EAC/BV,EACAvF,EAAK0E,CAAA,CAAA,CAAA,EAIL0D,EAAiB,CAAC1D,EAAQ,CAAE,MAAAuB,CAAA,EAASJ,IAAO,CAChD,IAAMhG,EAAQgG,EAAG,MAAM,GAAA,EACjBhD,EAAShD,EAAM,CAAA,GAAM,WAAaA,EAAM,CAAA,EAAK,IAAM,GAKzD,GAJKgD,GACH6B,EAAO,QAAQ,GAAG7E,CAAA,EAGhB6E,EAAO,CAAA,GAAM,SAAU,CACzB,IAAM2D,EAAU,CACd,OACA,aACA,WACA,YACA,aACA,SACAxF,GAAU,UACV,WACA,QACA,CAACA,GAAU,aAAA,EACX,OAAO,OAAA,EAET,OAAO6B,EAAO,CAAA,GAAM,OAChB,CAAA,CAAG7B,EAAS,QAAA,EAAW,MAAA,EACvBwF,EAAQ,OACN,CAACzD,EAAK/D,KACJ+D,EAAI,QAAU/B,EAAShC,CAAA,EAAO,8BACvB+D,GAET,CAAA,CACG/B,EAAS,QAAA,EAAWwF,EAAQ,IAAKxH,GAAQ,YAAYgC,CAAA,GAAShC,CAAA,GAAA,EAAQ,KAAK,GAAA,CAAA,CAAA,CAAA,CAKtF,OAAA4E,EAAIf,EAAO,MAAA,EAEPjF,EAAS,CAAC,MAAO,MAAA,EAASgG,CAAA,IAAIA,GAAKpF,EAAWqE,EAAO,MAAA,CAAA,IAGtDa,EAAIU,EAAOpD,EAAS,WAAaxC,EAAWoF,CAAA,EAAeA,EAAcf,CAAA,IAAY,CAAA,CACnF,QAAU7B,EAAS4C,CAAA,GAAK,MAAM,QAAQF,CAAA,EAAMA,EAAiB,CAACA,CAAA,GAC5D,IAAK+C,GAAM,GAAGhI,GAAUmF,CAAA,CAAA,IAAgB6C,CAAA,GAAA,EACxC,KAAK,GAAA,CAAA,CAAA,EAKDC,GAAkD,CAC7D,MAAO,CAAC7D,EAAQ,CAAE,IAAA8D,CAAA,EAAO3C,IAAO2C,EAAI5I,EAAK,CAACiG,EAAI,GAAGnB,CAAA,CAAA,CAAA,EAEjD,OAAQyB,EAAMG,EAAS,MAAA,EACvB,OAAQA,EACR,MAAOA,EACP,SAAUA,EACV,KAAMA,EAEN,MAAO,CAAC5B,EAAQlE,EAASqF,IACvBpG,EAAS,CAAC,OAAQ,OAAA,EAAUiF,EAAO,CAAA,CAAA,EAC/B,CAAE,YAAaA,EAAO,CAAA,CAAA,EACtB4B,EAAQ5B,EAAQlE,EAASqF,CAAA,EAE/B,KAAKnB,EAAQlE,EAASqF,EAAI,CACxB,OAAQnB,EAAO,CAAA,EAAA,CAAA,IACR,MAAA,IACA,MACH,MAAO,CACL,cAAe9E,EAAK8E,EAAO,CAAA,GAAM,MAAQ,CAAC,SAAU,GAAG1E,EAAK0E,CAAA,CAAA,EAAWA,CAAA,CAAA,EAAA,IAEtE,SAAA,IACA,OACH,MAAO,CAAE,SAAU9E,EAAK8E,CAAA,CAAA,EAAA,IACrB,OAAA,IACA,SACH,OAAAa,EAAI/E,EAAQ,MACT,OAASH,EAAWqE,EAAO,CAAA,CAAA,EAC5B1E,EAAK0E,CAAA,EACJA,EAAO,CAAA,GAAM,CAAA,EAIda,GAAK,MAAQ,CAAA,CACV,QAAUb,EAAO,CAAA,CAAA,EAAK,GAAKa,CAAA,CAAA,CAKpC,OAAQA,EAAI/E,EAAQ,MAAM,OAAQkE,EAAQ,EAAA,GACtC,CAAE,KAAMa,CAAA,EACRe,EAAQ5B,EAAQlE,EAASqF,CAAA,CAAA,EAG/B,KAAKnB,EAAQlE,EAASqF,EAAI,CACxB,OAAQnB,EAAO,CAAA,EAAA,CAAA,IACR,OAAA,IACA,OACH,OACGa,EAAI/E,EAAQ,MACV,eAAiBH,EAAWqF,GAAgBhB,EAAO,CAAA,CAAA,CAAA,EACpD1E,EAAK0E,CAAA,EACLA,EAAO,QAAU,GAAK,OAAOA,EAAO,CAAA,CAAA,EAChC,UAAUA,EAAO,CAAA,CAAA,kBACjB9E,EAAKI,EAAK0E,CAAA,CAAA,CAAA,IACV,CAAA,CACH,gBAAkBgB,GAAgBhB,EAAO,CAAA,CAAA,CAAA,EAAMa,CAAA,EAAA,IAIjD,OACH,OACEb,EAAO,OAAS,GAAK,CACnB,aAAc9E,EACZ8E,EAAO,CAAA,GAAM,MAAQ,CAAC,SAAU,GAAG1E,EAAK0E,EAAQ,CAAA,CAAA,EAAM1E,EAAK0E,CAAA,EAC3D,GAAA,CAAA,CAAA,CAMV,OAAO4B,EAAQ5B,EAAQlE,EAASqF,CAAA,CAAA,EAGlC,KAAM,CAACnB,EAAQ,CAAE,MAAAuB,CAAA,IACfxG,EAAS,CAAC,OAAQ,MAAA,EAASiF,EAAO,CAAA,CAAA,IACjCa,EAAIU,EACF,WAAa5F,EAAWqF,GAAgBhB,EAAO,CAAA,CAAA,CAAA,EAChD1E,EAAK0E,CAAA,EACL9E,EAAKI,EAAK0E,CAAA,CAAA,CAAA,IACN,CAAA,CACH,YAAcgB,GAAgBhB,EAAO,CAAA,CAAA,CAAA,EAAMa,CAAA,EAGhD,OAAQgB,GACR,MAAOA,GACP,SAAUA,GACV,SAAUA,GACV,OAAQA,GAER,QAAS,CAAE,WAAY,SAAA,EACvB,UAAW,CAAE,WAAY,QAAA,EAEzB,YAAa,CACX,oBAAqB,cACrB,oBAAqB,WAAA,EAGvB,uBAAwB,CACtB,oBAAqB,OACrB,oBAAqB,MAAA,EAGvB,SAAU,CACR,SAAU,SACV,WAAY,SACZ,aAAc,UAAA,EAGhB,UAAW,CACT,SAAU,WACV,MAAO,MACP,OAAQ,MACR,QAAS,IACT,OAAQ,OACR,SAAU,SACV,WAAY,SACZ,KAAM,gBACN,YAAa,GAAA,EAGf,cAAe,CACb,SAAU,SACV,MAAO,OACP,OAAQ,OACR,QAAS,IACT,OAAQ,IACR,SAAU,UACV,WAAY,SACZ,KAAM,MAAA,EAGR,OAAS7B,IAAY,CACnB,OACG,CAAE,EAAG,aAAc,EAAG,UAAA,EAAoDA,EAAO,CAAA,CAAA,GAClFA,EAAO,CAAA,GACP,MAAA,GAGJ,IAAMA,GAAWA,EAAO,CAAA,GAAM,CAAE,UAAWA,EAAO,CAAA,EAAK,MAAA,EAMvD,WAAYoB,EAAA,EACZ,OAAQI,GAAA,EAER,MAAOJ,EAAA,EACP,MAAOA,EAAA,EACP,WAAYA,EAAc,oBAAA,EAE1B,QAAS,CAAE,UAAW,SAAA,EACtB,UAAWA,EAAA,EAEX,YAAaA,EAAc,cAAA,EAE3B,IAAKc,GACL,MAAOA,GACP,OAAQA,GACR,KAAMA,GAKN,MAAO,CAAClC,EAAQ,CAAE,MAAAuB,CAAA,KACfV,EAAIF,GAAYX,EAAO,CAAA,CAAA,GACpBY,GAAMW,EAAM,QAASjG,EAAK0E,CAAA,CAAA,EAAUA,EAAO,CAAA,CAAA,GAC1Ca,EAAIU,EAAM,QAASvB,CAAA,IAAY,CAC9B,IAAKa,EACL,MAAOA,EACP,OAAQA,EACR,KAAMA,CAAA,EAGd,UAAWkB,EACX,eAAgBA,EAChB,eAAgBN,EAAMM,EAAgB,MAAA,EAEtC,iBAAkBN,EAAMM,EAAgB,WAAA,EACxC,oBAAqBN,EAAMM,EAAgB,MAAA,EAC3C,oBAAqBN,EAAMM,EAAgB,cAAA,EAE3C,UAAWD,EACX,UAAWA,EACX,WAAYA,EAEZ,cAAeL,EAAMK,EAAe,MAAA,EACpC,mBAAoBL,EAAMK,EAAe,MAAA,EAEzC,OAAQE,GACR,aAAcP,EAAMO,GAAW,QAAA,EAE/B,cAAeP,EAAMO,GAAW,QAAA,EAChC,kBAAmBP,EAAMO,GAAW,QAAA,EAEpC,KAAM,CAAChC,EAAQlE,EAASqF,KACrBN,EAAI/E,EAAQ,MAAM,aAAckE,EAAQ,EAAA,GACrC,CAAE,WAAYa,CAAA,EACdQ,EAAc,YAAA,EAAcrB,EAAQlE,EAASqF,CAAA,EAEnD,MAAQnB,GACNA,EAAO,CAAA,GAAM,CACX,WAAYjF,EAAS,CAAC,QAAS,KAAA,EAAQiF,EAAO,CAAA,CAAA,EAAM,QAAUA,EAAO,CAAA,EAAK9E,EAAK8E,CAAA,CAAA,EAGnF,eAAgBoB,EAAA,EAChB,gBAAiBA,EAAA,EACjB,QAAS4B,GAAiB,gBAAA,EAC1B,QAASA,GAAiB,cAAA,EAC1B,KAAMA,GAAiB,WAAA,EAEvB,MAAQhD,GAAWA,EAAO,CAAA,GAAM+C,GAAY,SAAW/C,EAAO,CAAA,EAAI1E,EAAK0E,CAAA,CAAA,EAEvE,WAAaA,GACXA,EAAO,CAAA,GAAM,CAAA,CACV,sBAAwBA,EAAO,CAAA,EAAK,IAAMA,EAAO,CAAA,EAAK,GAAA,EAAMA,EAAO,CAAA,GAAMA,EAAO,CAAA,CAAA,EAGrF,IAAKiD,GAAW,QAAA,EAChB,IAAKA,GAAW,KAAA,EAIhB,SAAU5B,EAAc,oBAAA,EAIxB,MAAOA,EAAc,iBAAA,EAErB,SAAUA,EAAc,eAAA,EAKxB,QAASA,EAAc,YAAA,EAIvB,EAAGA,EAAc,QAAA,EAEjB,QAASA,EAAA,EAET,KAAMA,EAAc,0BAAA,EAEpB,EAAGkC,EACH,GAAIA,EACJ,GAAIA,EACJ,GAAIA,EACJ,GAAIA,EACJ,GAAIA,EACJ,GAAIA,EAEJ,EAAGC,EACH,GAAIA,EACJ,GAAIA,EACJ,GAAIA,EACJ,GAAIA,EACJ,GAAIA,EACJ,GAAIA,EAQJ,EAAGnC,EAAc,OAAA,EACjB,EAAGA,EAAc,QAAA,EAEjB,IAAKoC,GACL,IAAKA,GAEL,KAAMpC,EAAA,EAEN,MAAOA,EAAA,EAEP,OAAQG,GAAsB,kBAAmB,GAAA,EAEjD,OAAQJ,EAAc,YAAA,EAEtB,iBAAkBA,EAAA,EAElB,MAAOA,EAAc,eAAA,EAErB,WAAYA,EAAc,YAAA,EAE1B,cAAe,CAAE,mBAAoB,QAAA,EACrC,QAASa,EAAmB,SAAA,EAC5B,eAAgBA,EAAmB,cAAA,EACnC,cAAeA,EAAmB,gBAAA,EAClC,gBAAiBA,EAAmB,gBAAA,EACpC,oBAAqBA,EAAmB,iBAAA,EACxC,eAAgBA,EAAmB,iBAAA,EACnC,qBAAsBA,EAAmB,kBAAA,EACzC,oBAAqBA,EAAmB,kBAAA,EAIxC,SAAU,CAACjC,EAAQlE,EAASqF,IAC1BpG,EAAS,CAAC,WAAY,MAAA,EAASiF,EAAO,CAAA,CAAA,EAClCoB,EAAc,cAAA,EAAgBpB,CAAA,EAC9BA,EAAO,CAAA,EACP,CAAA,CAAG,YAAcA,EAAO,CAAA,CAAA,EAAKA,EAAO,CAAA,CAAA,EACpCoB,EAAA,EAAgBpB,EAAQlE,EAASqF,CAAA,EAEvC,UAAYnB,GACVA,EAAO,CAAA,GAAM,OACT,CAAE,UAAW,MAAA,EACb,CACE,mBAAoB,IACpB,mBAAoB,IACpB,cAAe,IACf,cAAe,IACf,cAAe,IACf,eAAgB,IAChB,eAAgB,IAChB,UAAWmD,GAAUnD,EAAO,CAAA,GAAM,KAAA,CAAA,EAK1C,OAAQ,CAACA,EAAQ,CAAE,MAAAuB,CAAA,KAChBV,EAAIU,EAAM,SAAUvB,CAAA,IAAY,CAC/B,cAAea,EACf,UAAW,CAAC,UAAUA,CAAA,IAAMsC,GAAA,CAAA,CAAA,EAGhC,MAAOE,GACP,UAAWA,GACX,KAAMA,GAON,IAAK,CAACrD,EAAQlE,EAASqF,KACpBN,EAAK,CAAE,EAAG,SAAU,EAAG,KAAA,EAA+Cb,EAAO,CAAA,CAAA,GAC1E,CAAA,CAAGa,EAAI,KAAA,EAAQ/E,EAAQ,MAAM,MAAOR,EAAK0E,CAAA,CAAA,CAAA,EACzCqB,EAAc,KAAA,EAAOrB,EAAQlE,EAASqF,CAAA,EAK5C,OAAQ,CAACnB,EAAQlE,EAASqF,KACvBN,EAAI/E,EAAQ,MAAM,SAAUkE,EAAQ,EAAA,GACjC,CAAE,OAAQa,CAAA,EACVQ,EAAc,aAAA,EAAerB,EAAQlE,EAASqF,CAAA,EAIpD,QAAS,CAACnB,EAAQ,CAAE,MAAAuB,CAAA,KACjBV,EAAIU,EAAM,UAAWvB,CAAA,IAAY,CAChC,QAASa,EAAE,CAAA,EACX,cAAeA,EAAE,CAAA,CAAA,EAGrB,eAAgB,CACd,UAAW,SACX,aAAc,QAAA,EAEhB,cAAe,CAAE,aAAc,YAAA,EAC/B,YAAa,CAAE,UAAW,WAAA,EAE1B,KAAKb,EAAQ,CAAE,MAAAuB,CAAA,EAASJ,EAAI,CAC1B,OAAQnB,EAAO,CAAA,EAAA,CAAA,IACR,OAAA,IACA,SAAA,IACA,QAAA,IACA,UACH,MAAO,CAAE,UAAWA,EAAO,CAAA,CAAA,EAAA,IACxB,YAAA,IACA,YAAA,IACA,aACH,OAAO8B,EAAc,CAAA,EAAIjB,EAAGb,EAAO,CAAA,CAAA,EAAA,IAChC,UACH,OAAOmC,GAAgBnC,EAAQuB,EAAOJ,CAAA,CAAA,CAG1C,IAAM4C,EAAWxC,EAAM,WAAYvB,EAAQ,EAAA,EAE3C,OAAI+D,EACK,OAAOA,GAAY,SACtB,CAAE,SAAAA,CAAA,EACF,CACE,SAAUA,EAAS,CAAA,EAAA,GACf,OAAOA,EAAS,CAAA,GAAM,SAAW,CAAE,WAAYA,EAAS,CAAA,CAAA,EAAOA,EAAS,CAAA,CAAA,EAI7EpB,GAAoB,QAAS,OAAQpB,EAAM,YAAavB,CAAA,CAAA,CAAA,EAIjE,GAAGA,EAAQ,CAAE,MAAAuB,CAAA,EAASJ,EAAI,CACxB,OAAQnB,EAAO,CAAA,EAAA,CAAA,IACR,QAAA,IACA,QAAA,IACA,SACH,OAAOoB,EAAc,uBAAwB,GAAA,EAAKpB,CAAA,EAAA,IAE/C,SAAA,IACA,SAAA,IACA,OAAA,IACA,QAAA,IACA,MACH,OAAOoB,EAAc,qBAAsB,GAAA,EAAKpB,CAAA,EAAA,IAE7C,KACH,OAAOA,EAAO,CAAA,GAAM,UAAYoB,EAAc,kBAAA,EAAoBpB,CAAA,EAAA,IAE/D,SACH,OAAOjF,EAAS,KAAMiF,EAAO,CAAA,CAAA,EACzBoB,EAAc,kBAAA,EAAoBpB,CAAA,EAClC,CAAE,iBAAkBA,EAAO,CAAA,GAAMA,EAAO,CAAA,CAAA,EAAA,IAEzC,UACH,OAAOmC,GAAgBnC,EAAQuB,EAAOJ,EAAI,YAAA,EAAA,IAEvC,OAAA,IACA,SACH,OACEnB,EAAO,CAAA,GAAM,CAAA,CACV,cAAgBA,EAAO,CAAA,CAAA,EAAKA,EAAO,CAAA,GAAMA,EAAO,CAAA,GAAM,OAAS,GAAK,OAAA,EAAA,IAItE,QACH,OAAOoB,EAAc,uBAAA,EAAyB9F,EAAK0E,CAAA,CAAA,EAAA,IAIhD,WACH,GAAIA,EAAO,CAAA,GAAM,OAASa,EAAIF,GAAYX,EAAO,CAAA,CAAA,GAC/C,MAAO,CACL,gBAAiB,sBAAsB9E,EAAK2F,EAAG,GAAA,CAAA,4BAAA,CAAA,CAKvD,OAAQA,EAAIU,EAAM,qBAAsBvB,EAAQ,EAAA,GAC5C,CAAE,mBAAoBa,CAAA,GACrBA,EAAIU,EAAM,iBAAkBvB,EAAQ,EAAA,GACrC,CAAE,eAAgBa,CAAA,GACjBA,EAAIU,EAAM,kBAAmBvB,EAAQ,EAAA,GACtC,CAAE,gBAAiBa,CAAA,EACnB8B,GAAoB,kBAAmB,KAAMpB,EAAM,kBAAmBvB,CAAA,CAAA,CAAA,EAI5E,KAAM,CAACA,EAAQ,CAAE,MAAAuB,CAAA,KACdV,EAAIU,EAAM,qBAAsBvB,CAAA,IAAY,CAC3C,qBAAsBa,EACtB,sBAAuB,gDAAgDgC,GACrEhC,CAAA,CAAA,GAAA,EAKN,IAAK,CAACb,EAAQ,CAAE,MAAAuB,CAAA,KACbV,EAAIU,EAAM,qBAAsBvB,CAAA,IAAY,CAC3C,sBAAuB,2BAA2Ba,CAAA,yBAA0BgC,GAC1EhC,CAAA,CAAA,GAAA,EAKN,GAAI,CAACb,EAAQ,CAAE,MAAAuB,CAAA,KACZV,EAAIU,EAAM,qBAAsBvB,CAAA,IAAY,CAC3C,mBAAoBa,CAAA,EAUxB,OAAQ,CAACb,EAAQlE,EAASqF,IACxBR,GAAYX,EAAO,CAAA,CAAA,EACfY,GAAM9E,EAAQ,MAAM,cAAeR,EAAK0E,CAAA,CAAA,EAAUA,EAAO,CAAA,EAAI,SAAU,OAAA,EACvEkD,GAAOlD,EAAQlE,EAASqF,CAAA,EAI9B,OAAQ,CAACnB,EAAQlE,EAASqF,KACvBN,EACCiC,GAAe9C,EAAQlE,EAASqF,EAAI,cAAe,SAAU,OAAA,GAC7D+B,GAAOlD,EAAQlE,EAASqF,CAAA,IAAQ,CAChC,kCAAmCN,CAAA,EAGvC,MAAO,CAACb,EAAQlE,EAASqF,KACtBN,EAAIiC,GAAe9C,EAAQlE,EAASqF,EAAI,QAAS,QAAA,IAAc,CAC9D,kCAAmCN,CAAA,EAGvC,YAAa,CAACb,EAAQ,CAAE,MAAAuB,CAAA,EAASJ,KAC9BN,EACCb,EAAO,CAAA,GAAM,UACTmC,GAAgBnC,EAAQuB,EAAOJ,CAAA,EAC/BwB,GACE,QACA,cACApB,EAAM,mBAAoBvB,CAAA,CAAA,IACtB,CACV,iBAAkBa,CAAA,EAMtB,OAAQ,CAACb,EAAQ,CAAE,MAAAuB,CAAA,KAChBV,EAAIU,EAAM,YAAavB,CAAA,IAAY,CAClC,UAAW,CACT,IAAK,CACH,cAAe,iBAAA,CAAA,EAGnB,cAAea,GAAK,OAAS,kBAAoBA,EAEjD,UAAW,CACTA,EACA,qGAAA,CAAA,EAIN,QAAS,CAACb,EAAQ,CAAE,MAAAuB,EAAO,IAAAuC,CAAA,IAAU,CACnC,GAAK/C,EAAIQ,EAAM,YAAavB,CAAA,EAAU,CAEpC,IAAM7E,EAAQ4F,EAAE,MAAM,GAAA,EAItB,OAAKF,EAAIU,EAAM,YAAapG,EAAM,CAAA,EAAK2F,EAAK,CAAA,CAAA,KAAUA,GAGjDC,EAAI+C,EAAI3I,EAAM,CAAA,CAAA,IAAQ,CACrB,UAAW4F,EAAI,IAAM7F,EAAKI,EAAKH,CAAA,EAAQ,GAAA,EAAA,CACtC,cAAgB4F,CAAA,EAAIF,CAAA,EAKpB,CAAE,UAAWE,CAAA,CAAA,CAAA,EAoBxB,KAAKf,EAAQ,CAAE,MAAAuB,CAAA,EAASJ,EAAI,CAC1B,OAAQnB,EAAO,CAAA,EAAA,CAAA,IACR,QACH,MAAO,CAAE,kBAAmB,OAAA,EAAA,IAEzB,UACH,OAAOmC,GAAgBnC,EAAQuB,EAAOJ,CAAA,EAAA,IAEnC,SAEH,OAAQN,EAAIU,EAAM,kBAAmBjG,EAAK0E,CAAA,EAAS,EAAA,GAC/C,CACE,yBAA0Ba,CAAA,EAE5B,CACE,yBAA0BU,EAAM,kBAAmBjG,EAAK0E,CAAA,CAAA,CAAA,CAAA,CAKlE,OAAQa,EAAIU,EAAM,YAAavB,EAAQ,EAAA,GACnC,CAEE,0BAA2B,qFAC3B,mBAAoB,mCAAmCa,CAAA,uDACvD,UAAW,sFAEX,UAAW,CACT,IAAK,CACH,kBAAmB,8BACnB,yBAA0BU,EAAM,kBAAmB,GAAI,KAAA,EACvD,yBAA0BA,EAAM,kBAAmB,GAAI,MAAA,EACvD,kBAAmBgB,GACjBhB,EAAM,YAAa,GAAI,SAAA,EACvB,eACAA,EAAM,cAAe,GAAI,KAAA,CAAA,EAE3B,0BAA2B,kBAC3B,mBAAoB,iBAAA,CAAA,CAAA,EAI1B,CAEE,oBAAqB,IACrB,kBAAmBgB,GAAOhB,EAAM,YAAavB,CAAA,EAAmB,cAAA,CAAA,CAAA,EAIxE,OAAQ,CAACA,EAAQlE,EAASqF,IACxBpG,EAAS,CAAC,UAAW,QAAS,OAAQ,OAAQ,YAAA,EAAeG,EAAK8E,CAAA,CAAA,EAC9D,CAAE,UAAW9E,EAAK8E,CAAA,CAAA,EAClBwB,GAAsB,iBAAkB,GAAA,EAAKxB,EAAQlE,EAASqF,CAAA,EAEpE,KAAM,CAACnB,EAAQlE,EAASqF,IACtBjG,EAAK8E,CAAA,GAAW,OACZ4B,EAAQ5B,EAAQlE,EAASqF,CAAA,EACzBpG,EAAS,CAAC,SAAU,SAAA,EAAYG,EAAK8E,CAAA,CAAA,EACrC,CAAE,kBAAmBA,EAAO,CAAA,CAAA,EAC5BwB,GAAsB,eAAA,EAAiBxB,EAAQlE,EAASqF,CAAA,EAY9D,QAAS,CAACnB,EAAQlE,EAASqF,IACzBT,GACE5E,EAAQ,MAAM,eAAgBR,EAAK0E,CAAA,EAAS,EAAA,EAC5CA,EAAO,CAAA,EACP,SACA,QAAA,GACGqB,EAAc,cAAA,EAAgBrB,EAAQlE,EAASqF,CAAA,EAEtD,kBAAmB,CAAE,mBAAoB,MAAA,EAEzC,WAAY,CAACnB,EAAQ,CAAE,MAAAuB,CAAA,KAAa,CAClC,mBAAoBA,EAAM,qBAAsBvB,CAAA,EAChD,yBAA0BuB,EAAM,2BAA4B,EAAA,EAC5D,mBAAoBA,EAAM,qBAAsB,EAAA,CAAA,GAGlD,UAAW,CAACvB,EAAQ,CAAE,MAAAuB,CAAA,IAAY,CAChC,GAAM,CAAE,QAAAyC,EAAUzC,EAAM,SAAA,EAAY,OAAA0C,EAAQ,QAAAC,CAAA,EAAY3C,EAAM,WAAA,EAExD4C,EAAcxH,IACjBkE,EAAIqD,IAAY,OAAOA,GAAW,SAAWA,EAAUA,EAAQvH,CAAA,GAAWuH,EAAQ,UAC/E,CACE,aAAcrD,EACd,YAAaA,CAAA,EAEf,CAAA,EAEN,OAAO,OAAO,KAAKmD,CAAA,EAAS,OAC1B,CAACI,EAAOzH,MACDoE,EAAIiD,EAAQrH,CAAA,IAAY,OAAOoE,GAAK,WACvCqD,EAAM1H,GAAgBqE,CAAA,CAAA,EAAM,CAC1B,IAAK,CACH,YAAaA,EAAA,GACVoD,EAAWxH,CAAA,CAAA,CAAA,GAKbyH,GAET,CACE,MAAO,OAAA,GACHH,EAAS,CAAE,YAAa,OAAQ,WAAY,MAAA,EAAW,CAAA,EAAA,GACxDE,EAAW,IAAA,CAAA,CAAA,CAAA,EAKpB,OAAAT,EACA,KAAMA,EACN,WAAYA,EACZ,SAAUA,EACV,UAAWA,EACX,aAAcA,EACd,OAAQA,EACR,SAAUA,EACV,MAAOA,EACP,cAAeA,EACf,SAAUA,CAAA,ECv+BCW,GAAmB9C,IAAoC,CAIlE,QAAS,CAAE,QAAS,CAAA,EAKpB,yEAA0E,CAAE,OAAQ,GAAA,EAEpF,OAAQ,CAAE,gBAAiB,cAAe,gBAAiB,MAAA,EAK3D,wDAAyD,CAAE,iBAAkB,QAAA,EAM7E,eAAgB,CAAE,QAAS,CAAC,aAAc,mCAAA,CAAA,EAK1C,wBAAyB,CAAE,QAAS,GAAA,EAEpC,QAAS,CAAE,UAAW,MAAA,EAStB,KAAM,CACJ,WAAY,MACZ,qBAAsB,OACtB,WAAYA,EAAM,kBAAmB,oCAAA,CAAA,EAQvC,KAAM,CAAE,WAAY,UAAW,WAAY,SAAA,EA2B3C,qBAAsB,CACpB,UAAW,aACX,OAAQ,WAAWA,EAAM,sBAAuB,cAAA,CAAA,EAAA,EAQlD,GAAI,CAAE,OAAQ,IAAK,MAAO,UAAW,eAAgB,KAAA,EAWrD,IAAK,CAAE,YAAa,OAAA,EAEpB,SAAU,CAAE,OAAQ,UAAA,EAEpB,2CAA4C,CAC1C,QAAS,IACT,MAAOA,EAAM,2BAA4BA,EAAM,kBAAmB,SAAA,CAAA,CAAA,EAGpE,yBAA0B,CAAE,OAAQ,SAAA,EAMpC,MAAO,CAAE,WAAY,IAAK,YAAa,UAAW,eAAgB,UAAA,EAElE,oBAAqB,CAAE,SAAU,UAAW,WAAY,SAAA,EAMxD,EAAG,CAAE,MAAO,UAAW,eAAgB,SAAA,EAWvC,wCAAyC,CACvC,WAAY,UACZ,SAAU,OACV,OAAQ,IACR,QAAS,IACT,WAAY,UACZ,MAAO,SAAA,EAOT,gBAAiB,CAAE,cAAe,MAAA,EAKlC,qBAAsB,CAAE,YAAa,OAAQ,QAAS,GAAA,EAKtD,kBAAmB,CAAE,QAAS,uBAAA,EAM9B,mBAAoB,CAAE,UAAW,MAAA,EAKjC,SAAU,CAAE,cAAe,UAAA,EAK3B,0DAA2D,CAAE,OAAQ,MAAA,EAMrE,kBAAmB,CAAE,iBAAkB,YAAa,cAAe,MAAA,EAKnE,8BAA+B,CAAE,iBAAkB,MAAA,EAMnD,+BAAgC,CAAE,iBAAkB,SAAU,KAAM,SAAA,EAKpE,QAAS,CAAE,QAAS,WAAA,EAKpB,cAAe,CAAE,eAAgB,kBAAA,EAKjC,WAAY,CAAE,WAAY,QAAA,EAS1B,oBAAqB,CACnB,WAAYA,EAAM,aAAc,OAAQ,wBAAA,EACxC,SAAU,KAAA,EAMZ,UAAW,CAAE,SAAU,MAAO,WAAY,IAAK,SAAU,WAAY,cAAe,UAAA,EAEpF,IAAK,CAAE,OAAQ,SAAA,EAEf,IAAK,CAAE,IAAK,QAAA,EASZ,iDAAkD,CAAE,QAAS,QAAS,cAAe,QAAA,EAQrF,YAAa,CAAE,SAAU,OAAQ,OAAQ,MAAA,CAAA,GC7P9B+C,GAAuC,CAClD,KAAM,qCACN,OAAQ,8DACR,gBAAiB,yCACjB,cAAe,gDACf,MAAO,gBACP,KAAM,eACN,KAAM,kBACN,IAAK,mBACL,SAAU,MACV,SAAU,MACV,QAAS,MACT,SAAU,IAAA,ECZCC,GAAmB,UAQnBC,GAAmBC,GAAqC,CAInE,IAAIvH,EAAU,KAAKqH,EAAA,EAEnB,OAAKrH,IAEHA,EAAU,SAAS,KAAK,YAAY,SAAS,cAAc,OAAA,CAAA,EAE3DA,EAAQ,GAAKqH,GACbE,IAAUvH,EAAQ,MAAQuH,GAG1BvH,EAAQ,YAAY,SAAS,eAAe,EAAA,CAAA,GAGvCA,CAAA,EChBIwH,GAAa,CAAC,CACzB,MAAAD,EACA,OAAApI,EAASmI,GAAgBC,CAAA,EAAO,KAAA,EACF,CAAA,IAA6B,CAC3D,IAAME,EAAStI,EAAO,SAAS,OAE/B,MAAO,CACL,OAAAA,EACA,OAAQ,CAACuI,EAAM5H,IAAUX,EAAO,WAAWuI,EAAMD,EAAS3H,CAAA,CAAA,CAAA,EAOjD6H,GAAY,KAAoB,CAC3C,OAAQ,KACR,OAAQnJ,EAAA,GCtBGoJ,GAAQC,IAA6C,CAChE,QAAQzD,EAASnF,EAAM,CAAA,EAAI6I,EAAUlJ,EAAS,CACvCkJ,GAEH,KAAK,OAAO,CAAE,GAAI,sBAAuB,IAAK1D,EAAU,IAAMpG,EAAKiB,CAAA,CAAA,EAAQL,CAAA,CAAA,EAI/E,OAAO,CAAE,GAAAqF,EAAA,GAAO8D,CAAA,EAAQ,CACtB,OAAOF,EAAO,IAAI5D,CAAA,KAAO,KAAK,UAAU8D,CAAA,CAAA,EAAA,CAAA,CAAA,GAI/BC,GAAqBJ,GAAMK,GAAY,QAAQ,KAAKA,CAAA,CAAA,EAEpDC,GAAuBN,GAAMK,GAAY,CACpD,MAAM,IAAI,MAAMA,CAAA,CAAA,CAAA,EAGLE,GAAuBP,GAAKpJ,EAAA,ECnB5B4J,EAAqB,CAAC7E,EAAkBzF,EAAeuK,IAClE,GAAG9E,CAAA,IAAYzF,CAAA,GAAQuK,EAAY,cAAgB,EAAA,GAExCC,GAAuB,CAClC/E,EACAzF,EACAuK,IACW,CACX,IAAIE,EAAU,GAGRC,EAAgB9K,GAAiB6F,CAAA,EACnCiF,IAAeD,GAAW,GAAGH,EAASI,EAAe1K,EAAOuK,CAAA,CAAA,KAGhE,IAAII,EAAQ9K,GAAuB4F,CAAA,EACnC,OAAIkF,EAAQ,IAAOF,GAAW,WAAWH,EAAS7E,EAAUzF,EAAOuK,CAAA,CAAA,KAC/DI,EAAQ,IAAOF,GAAW,QAAQH,EAAS7E,EAAUzF,EAAOuK,CAAA,CAAA,KAC5DI,EAAQ,IAAOF,GAAW,OAAOH,EAAS7E,EAAUzF,EAAOuK,CAAA,CAAA,KAI/DI,EAAQ7K,GAAoB2F,EAAUzF,CAAA,EAClC2K,EAAQ,IAAOF,GAAW,GAAGH,EAAS7E,EAAU,WAAWzF,CAAA,GAASuK,CAAA,CAAA,KACpEI,EAAQ,IAAOF,GAAW,GAAGH,EAAS7E,EAAU,QAAQzF,CAAA,GAASuK,CAAA,CAAA,KACjEI,EAAQ,IAAOF,GAAW,GAAGH,EAAS7E,EAAU,OAAOzF,CAAA,GAASuK,CAAA,CAAA,KAIpEE,GAAWH,EAAS7E,EAAUzF,EAAOuK,CAAA,EAE9BE,CAAA,ECLHG,GAAS,CAACC,EAAeC,IAAwC,CACrE,IAAMC,EAAiC,CAAA,EAEvC,EACE,SAASC,EAAW,EAAGA,EAAWH,EAAOG,IAEvCD,EAAO,GAAGC,CAAA,IAAYH,CAAA,EAAA,EAAW,QAASG,EAAWH,EAAS,KAAK,QAAQ,CAAA,CAAA,EAAM,UAE5E,EAAEA,GAASC,GAEpB,OAAOC,CAAA,EAOHE,EAAc,CAACC,EAAcC,EAAcN,EAAQ,IAA8B,CACrF,IAAME,EAAiC,CAAA,EAEvC,KAAOF,GAASK,EAAML,EAAQA,EAAQ,GAAK,EAEzCE,EAAOF,CAAA,EAASA,EAAQM,EAG1B,OAAOJ,CAAA,EAWHK,EAAS,CACbF,EACAC,EAAO,GACPE,EAAW,EACXR,EAAQ,EACRS,EAAO,EACPP,EAAiC,CAAA,IAEN,CAC3B,KAAOF,GAASK,EAAML,GAASS,EAE7BP,EAAOF,CAAA,EAASA,EAAQQ,EAAWF,EAGrC,OAAOJ,CAAA,EAGHQ,EACJjF,GAC4DC,GAAUA,EAAMD,CAAA,EAExEkF,GAAe,CAACC,EAAiC,CAAE,MAAAlF,CAAA,IAAqBA,EAAM,GAAGkF,CAAA,EAE1EC,GAAS,IAAID,IACxB5G,GAAU2G,GAAcC,CAAA,EAEpBE,GAA6C,CACjD,QAAS,CACP,GAAI,QACJ,GAAI,QACJ,GAAI,SACJ,GAAI,SACJ,MAAO,QAAA,EAET,OAAQ,CACN,YAAa,cACb,QAAS,eAGT,MAAO,OAGP,MAAO,OAGP,KAAM,CACJ,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SAAA,EAIP,IAAK,CACH,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SAAA,EAIP,OAAQ,CACN,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SAAA,EAIP,MAAO,CACL,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SAAA,EAIP,KAAM,CACJ,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SAAA,EAIP,OAAQ,CACN,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SAAA,EAIP,OAAQ,CACN,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SAAA,EAIP,KAAM,CACJ,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,SAAA,CAAA,EAIT,QAAS,CACP,GAAI,MACJ,EAAG,MAAA,GACcP,EAAO,EAAG,MAAO,EAAG,GAAK,EAAA,EAAA,GASzBA,EAAO,GAAI,MAAO,EAAG,CAAA,EAStC,GAAI,SAAA,GACaA,EAAO,GAAI,MAAO,EAAG,GAAI,CAAA,EAc1C,GAAI,QACJ,GAAI,QACJ,GAAI,OAAA,EAGN,UAAW,CACT,GAAI,OACJ,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAM,QAAA,EAGR,UAAW,CACT,KAAM,OACN,KAAM,0BACN,KAAM,8CACN,MAAO,iDACP,OAAQ,oBAAA,EAGV,aAA4BG,EAAM,MAAA,EAClC,mBAAkCA,EAAM,YAAA,EACxC,iBAAgCA,EAAM,UAAA,EACtC,kBAAiCA,EAAM,WAAA,EACvC,kBAAiCA,EAAM,WAAA,EACvC,eAA8BA,EAAM,QAAA,EACpC,gBAA+BA,EAAM,SAAA,EACrC,iBAAgCA,EAAM,UAAA,EACtC,cAA6BA,EAAM,OAAA,EAEnC,gBAA+BA,EAAM,QAAA,EACrC,gBAAiB,CACf,KAAM,MAAA,EAWR,kBAAiCA,EAAM,SAAA,EAMvC,eAAgB,CACd,KAAM,OACN,MAAO,QACP,QAAS,SAAA,EAEX,KAAM,CACJ,EAAG,IACH,GAAI,MACJ,QAAS,MACT,GAAI,OACJ,GAAI,OACJ,GAAI,OACJ,MAAO,OACP,MAAO,MAAA,EAET,WAAY,CAAA,GACOH,EAAO,IAAK,GAAI,IAAK,EAAG,EAAA,EAAA,GAMxBA,EAAO,IAAK,GAAI,IAAK,GAAI,CAAA,EAM1C,GAAI,OACJ,IAAK,MAAA,EAEP,YAAc7E,IAAW,CAAA,GACpBA,EAAM,QAAA,EACT,QAASA,EAAM,kBAAmB,cAAA,CAAA,GAEpC,cAA6BgF,EAAM,SAAA,EACnC,aAAc,CACZ,KAAM,MACN,GAAI,WACJ,QAAS,UACT,GAAI,WACJ,GAAI,SACJ,GAAI,UACJ,MAAO,OACP,MAAO,SACP,MAAO,MACP,KAAM,QAAA,EAER,YAAa,CACX,QAAS,MAAA,GACQN,EAAY,EAAG,IAAA,CAAA,EAMlC,UAAW,CACT,GAAI,kCACJ,QAAS,kEACT,GAAI,wEACJ,GAAI,0EACJ,GAAI,4EACJ,MAAO,wCACP,MAAO,wCACP,KAAM,MAAA,EAMR,SAAU,CAAA,GACSG,EAAO,IAAK,GAAI,IAAK,EAAG,EAAA,EAKzC,GAAI,OACJ,IAAK,MAAA,EAEP,YAA2BG,EAAM,aAAA,EACjC,cAA6BA,EAAM,eAAA,EACnC,YAA2BA,EAAM,aAAA,EACjC,WAAY,CACV,GAAI,6BACJ,QAAS,CAAC,+BAAgC,+BAAA,EAC1C,GAAI,CAAC,gCAAiC,+BAAA,EACtC,GAAI,CAAC,iCAAkC,8BAAA,EACvC,GAAI,CAAC,kCAAmC,+BAAA,EACxC,MAAO,kCACP,KAAM,WAAA,EAER,KAAM,CAAE,QAAS,cAAA,EACjB,UAAW,CACT,EAAG,IACH,QAAS,MAAA,EAEX,UAAW,CACT,EAAG,OACH,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,IAAK,QAAA,EAEP,OAAQ,CACN,EAAG,IACH,QAAS,MAAA,EAEX,KAAM,CACJ,EAAG,SACH,KAAM,WACN,QAAS,WACT,KAAM,MAAA,EAQR,WAAY,CACV,KAAM,qMAAqM,MACzM,GAAA,EAEF,MAAO,yDAAyD,MAAM,GAAA,EACtE,KAAM,8FAA8F,MAClG,GAAA,CAAA,EAGJ,SAAU,CACR,GAAI,CAAC,UAAW,MAAA,EAChB,GAAI,CAAC,WAAY,SAAA,EACjB,KAAM,CAAC,OAAQ,QAAA,EACf,GAAI,CAAC,WAAY,SAAA,EACjB,GAAI,CAAC,UAAW,SAAA,EAChB,MAAO,CAAC,SAAU,MAAA,EAClB,MAAO,CAAC,WAAY,SAAA,EACpB,MAAO,CAAC,UAAW,QAAA,EACnB,MAAO,CAAC,OAAQ,GAAA,EAChB,MAAO,CAAC,UAAW,GAAA,EACnB,MAAO,CAAC,SAAU,GAAA,EAClB,MAAO,CAAC,OAAQ,GAAA,EAChB,MAAO,CAAC,OAAQ,GAAA,CAAA,EAElB,WAAY,CACV,KAAM,MACN,WAAY,MACZ,MAAO,MACP,OAAQ,MACR,OAAQ,MACR,SAAU,MACV,KAAM,MACN,UAAW,MACX,MAAO,KAAA,EAET,oBAAqB,CAAA,EAIrB,iBAAkB,CAAA,EAIlB,gBAAiB,CAEf,IAAK,cACL,IAAK,cACL,GAAI,eAAA,EAEN,aAAc,CAEZ,IAAK,cACL,IAAK,cACL,GAAI,eAAA,EAcN,WAAY,CAEV,KAAM,OACN,YAAa,QAAA,EAEf,QAAS,CAEP,KAAM,OACN,YAAa,QAAA,EAEf,IAAmBA,EAAM,SAAA,EACzB,mBAAkCA,EAAM,QAAA,EACxC,OAAShF,IAAW,CAClB,KAAM,OAAA,GACHA,EAAM,SAAA,EAAA,GACNqE,GAAO,EAAG,CAAA,EAgBb,KAAM,OACN,OAAQ,OAAA,GAEV,MAAQrE,IAAW,CACjB,KAAM,OAAA,GACHA,EAAM,SAAA,EAAA,GACNqE,GAAO,EAAG,CAAA,EAOb,KAAM,MAAA,GAER,UAAW,CACT,KAAM,CACJ,KAAM,CACJ,UAAW,cAAA,EAEb,GAAI,CACF,UAAW,gBAAA,CAAA,EAGf,KAAM,CACJ,KAAM,CACJ,UAAW,WACX,QAAS,GAAA,EAEX,WAAY,CACV,UAAW,WACX,QAAS,GAAA,CAAA,EAGb,MAAO,CACL,UAAW,CACT,QAAS,GAAA,EAEX,MAAO,CACL,QAAS,IAAA,CAAA,EAGb,OAAQ,CACN,WAAY,CACV,UAAW,mBACX,wBAAyB,yBAAA,EAE3B,MAAO,CACL,UAAW,OACX,wBAAyB,yBAAA,CAAA,CAAA,EAI/B,cAAe,CACb,QAAS,UACT,MAAO,WACP,OAAQ,MACR,KAAM,UACN,MAAO,SACP,OAAQ,OAAA,EAEV,WAAY,CACV,KAAM,IACN,MAAO,OACP,KAAM,QACN,OAAQ,MACR,QAAS,QACT,MAAO,IAAA,GACUQ,EAAO,GAAI,MAAO,EAAG,CAAA,CAAA,EAaxC,OAAS7E,IAAW,CAClB,KAAM,OAAA,GACHA,EAAM,SAAA,CAAA,GAEX,UAAYA,IAAW,CAAA,GAClBA,EAAM,SAAA,EACT,KAAM,OACN,OAAQ,OAAA,GAEV,SAAU,CAACA,EAAO,CAAE,YAAAqF,CAAA,KAAmB,CACrC,KAAM,OACN,EAAG,OACH,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,MAAO,QACP,MAAO,QACP,MAAO,QACP,MAAO,QACP,MAAO,QACP,MAAO,QACP,KAAM,OACN,IAAK,cACL,IAAK,cACL,MAAO,OAAA,GACJA,EAAYrF,EAAM,SAAA,CAAA,CAAA,GAEvB,UAAW,CACT,EAAG,MACH,KAAM,OACN,OAAQ,OAAA,EAEV,SAAU,CACR,EAAG,MACH,KAAM,OACN,IAAK,cACL,IAAK,aAAA,EAKP,QAAS,CAAA,GACU6E,EAAO,IAAK,GAAI,IAAK,EAAG,EAAA,EAWzC,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,GAAI,MAAA,EAEN,MAAO,CACL,MAAO,QACP,KAAM,OACN,KAAM,IAAA,GACWA,EAAO,GAAI,GAAI,EAAG,CAAA,CAAA,EAcrC,QAAS,CACP,KAAM,CAAC,wBAAyB,KAAA,EAChC,MAAO,CAAC,mBAAoB,KAAA,EAC5B,MAAO,CAAC,mBAAoB,KAAA,CAAA,EAE9B,QAAuBG,EAAM,SAAA,EAC7B,iBAAgCA,EAAM,QAAA,EACtC,mBAAkCA,EAAM,SAAA,EACxC,UAAYhF,IAAW,CACrB,QAASA,EAAM,kBAAmB,SAAA,EAAA,GAC/BA,EAAM,QAAA,CAAA,GAEX,gBAA+BgF,EAAM,QAAA,EACrC,gBAA+BN,EAAY,EAAG,IAAA,EAM9C,YAAc1E,IAAW,CACvB,QAAS,MAAA,GACNA,EAAM,SAAA,CAAA,GAEX,UAAW,CACT,QAAS,MAAA,GACQ0E,EAAY,EAAG,IAAA,CAAA,EAOlC,OAAQ,CAAA,GACWA,EAAY,EAAG,KAAA,EAAA,GAIfA,EAAY,GAAI,MAAO,CAAA,EAAA,GAIvBA,EAAY,IAAK,MAAO,EAAA,CAAA,EAK3C,SAAwBG,EAAO,IAAK,GAAI,IAAK,EAAG,EAAA,EAMhD,MAAO,CAAA,GACYA,EAAO,IAAK,GAAI,IAAK,EAAG,EAAA,EAAA,GAIxBA,EAAO,IAAK,GAAI,IAAK,GAAI,CAAA,EAM1C,GAAI,OACJ,IAAK,MAAA,EAEP,MAAO,CACL,EAAG,IACH,QAAS,MAAA,EAEX,KAAM,CAAA,GACaH,EAAY,EAAG,KAAA,EAAA,GAIfA,EAAY,GAAI,MAAO,CAAA,CAAA,EAK1C,MAAqBM,EAAM,SAAA,EAC3B,OAAQ,CACN,QAAS,cAAA,EAEX,YAA2BH,EAAO,CAAA,EAIlC,UAAyBG,EAAM,QAAA,EAC/B,YAA2BA,EAAM,SAAA,EAMjC,mBAAqBhF,IAAW,CAC9B,QAAS,QAAA,GACNA,EAAM,WAAA,CAAA,GAEX,gBAA+BgF,EAAM,WAAA,EACrC,mBAAoB,CAClB,KAAM,OACN,IAAK,MACL,QACE,sGACF,OAAQ,kDACR,QAAS,UACT,OAAQ,aACR,UAAW,WAAA,EAEb,yBAA0B,CACxB,QAAS,4BACT,OAAQ,SACR,GAAI,0BACJ,IAAK,0BACL,SAAU,2BAAA,EAEZ,UAAYhF,IAAW,CAAA,GAClBA,EAAM,SAAA,EAAA,GACNqE,GAAO,EAAG,CAAA,EAOb,KAAM,MAAA,GAER,MAAQrE,IAAW,CACjB,KAAM,OAAA,GACHA,EAAM,SAAA,EAAA,GACNqE,GAAO,EAAG,CAAA,EAAA,GAiBVA,GAAO,GAAI,EAAA,EAad,OAAQ,QACR,KAAM,OACN,IAAK,cACL,IAAK,aAAA,GAEP,OAAQ,CACN,KAAM,OAAA,GACWQ,EAAO,GAAI,GAAI,EAAG,EAAG,EAAA,CAAA,CAAA,EAWpCS,GAAsB,CAC1BC,EACAzK,EAAqC,CAAA,EACrC8B,EAAmB,CAAA,KAEnB,OAAO,KAAK2I,CAAA,EAAQ,QAASrG,GAAa,CACxC,IAAMzF,EAAQ8L,EAAOrG,CAAA,EAEjBA,GAAY,YACdpE,EAAOnB,EAAKiD,CAAA,CAAA,EAAWnD,EACvBqB,EAAOnB,EAAKiD,EAAQ,GAAA,CAAA,EAAQnD,GAG9B,IAAMmB,EAAM,CAAC,GAAGgC,EAAQsC,CAAA,EACxBpE,EAAOnB,EAAKiB,CAAA,CAAA,EAAQnB,EACpBqB,EAAOnB,EAAKiB,EAAK,GAAA,CAAA,EAAQnB,EAErBA,GAAS,OAAOA,GAAS,UAC3B6L,GAAoB7L,EAAOqB,EAAQF,CAAA,CAAA,EAEpCE,CAAA,EAEIA,GAGH0K,GAA8C,CAWlD,SAAU,KAAO,CAAA,GAEjB,YAAc/C,GACZ,OAAO,KAAKA,CAAA,EACT,OAAQ7H,GAAQ,OAAO6H,EAAQ7H,CAAA,GAAQ,QAAA,EACvC,OAAO,CAACE,EAAQF,KACfE,EAAO,UAAYF,CAAA,EAAO6H,EAAQ7H,CAAA,EAE3BE,GACN,CAAA,CAAA,CAAA,EAGH2K,GAAwB,CAAC1F,EAAsBnF,KAClDA,EAAOA,EAAI,CAAA,GAAM,KAAOA,EAAI,MAAM,EAAA,GAAO,KAAOA,EAAI,MAAM,EAAG,EAAA,IAC9DpB,EAASuG,EAAS,MAAA,GAAW,6BAA6B,KAAKnF,CAAA,IAC9DpB,EAASoB,EAAK,OAAA,EACXA,EAAI,QAAQ,oEAAqE,QAAA,EACjFA,GAEO8K,GAAqBC,GAA+C,CAC/E,IAAMnH,EAAQ,IAAI,IAEZwB,EAAQ,CAAA,GAAKoF,GAAA,GAAiBO,CAAA,EAE9BC,EAAQ,CACZC,EACA9F,IACwC,CACxC,IAAM+F,EAAOD,GAASA,EAAM9F,CAAA,EAEtBtG,EAAQ,OAAOqM,GAAQ,WAAaA,EAAKhH,EAAS0G,EAAA,EAAkBM,EAE1E,OAAOrM,GAASsG,GAAW,SACvBuF,GAAoB7L,CAAA,EACnBA,CAAA,EAGDqF,EAAW,CAACiB,EAAsBnF,EAAcmL,IAAmC,CACvF,IAAMC,EAAUjG,EAAQ,MAAM,GAAA,EAC9BA,EAAUiG,EAAQ,CAAA,EAGdA,EAAQ,OAAS,IACnBD,EAAenL,EACfA,EAAMjB,EAAKI,EAAKiM,CAAA,EAAU,GAAA,GAI5B,IAAIF,EAAOtH,EAAM,IAAIuB,CAAA,EASrB,GAPK+F,IAEHtH,EAAM,IAAIuB,EAAU+F,EAAO,CAAA,GAAKF,EAAM5F,EAAOD,CAAA,CAAA,CAAA,EAE7C,OAAO,OAAO+F,EAAMF,EAAM5F,EAAM,OAAQD,CAAA,CAAA,GAGtCnF,GAAO,KAAM,CACfA,GAAO,MAAM,QAAQA,CAAA,EAAOjB,EAAKiB,CAAA,EAAQA,IAAmB,UAE5D,IAAMnB,EAAiBgM,GAAsB1F,EAASnF,CAAA,GAAkBkL,EAAKlL,CAAA,EAE7E,OAAOnB,GAAS,KACZsM,EACA,MAAM,QAAQtM,CAAA,GAGd,CAACD,EAAS,CAAC,WAAY,UAAW,YAAA,EAAeuG,CAAA,EACjDpG,EAAKF,EAAO,GAAA,EACZA,CAAA,CAGN,OAAOqM,CAAA,EAGT,OAAOhH,CAAA,ECv8BImH,GAAY,CACvBC,EACA3L,IAIsE,CAAC8I,EAAM8C,IAAkB,CAE/F,GAAI,OAAO9C,EAAK,GAAK,WACnB,OAAOA,EAAK,EAAE9I,CAAA,EAGhB,IAAM6L,EAAa/C,EAAK,EAAE,MAAM,cAAA,EAKhC,GAAI,CAAC8C,GAAiBC,EAAW,CAAA,GAAM,MAAQ/C,EAAK,GAAKA,EAAK,EAC5D,OAAOA,EAAK,EASd,QAAS5H,EAAQ2K,EAAW,OAAQ3K,EAAOA,IAAS,CAClD,IAAMmE,EAAKjG,EAAKyM,EAAW,MAAM,EAAG3K,CAAA,CAAA,EAE9B4K,EAASH,EAAQtG,CAAA,EAEvB,GAAIyG,EACF,OAAO,OAAOA,GAAU,WACpBA,EAAOtM,EAAKqM,EAAY3K,CAAA,EAAQlB,EAASqF,CAAA,EACzC,OAAOyG,GAAU,SACjB9L,EAAQ4L,EAAgB,MAAQ,IAAA,EAAME,CAAA,EACtCA,CAAA,CAAA,EC7CNC,GAESC,GAAW,oCACXC,GAAgB,eAEhBC,GAA0BC,GACrCA,EAAQ,CAAA,GAAM,IAAM3M,EAAK2M,CAAA,EAAWA,EAMzBC,GAAW,CACtBC,EACAC,EACA,CAAE,MAAA7G,EAAO,IAAAuC,CAAA,IAC6C,CAEtD,IAAMuE,EAAe,CAACC,EAAuBL,KAEtCJ,GAAItG,EAAM,UAAWjG,EAAK2M,CAAA,EAAU,EAAA,GAChC,CAAA,CAAGvL,GAAgBmL,EAAA,CAAA,EAAKS,CAAA,EAI7BL,GAAW,SAAWE,GAAY,QAC7B,CAAE,UAAWG,CAAA,GAMjBT,GAAIC,GAAS,KAAKG,CAAA,GACd,CAAA,CAAG,IAAIzL,GAAOsH,EAAK+D,GAAsB,CAAA,CAAA,CAAA,CAAA,IAAQA,GAAE,CAAA,CAAA,IAAA,EAASS,CAAA,EAK9D,CAAA,CACJF,EAAS9M,EAAK2M,CAAA,CAAA,GACf,IACEA,EAAQ,QACNF,GACA,CAACnE,EAAG2E,EAAKC,IAAYD,EAAM,IAAMP,GAAuB,IAAMQ,CAAA,EAAW,GAAA,CAAA,EACvEF,CAAA,EAKV,MAAO,CAACA,EAAa1D,IAASA,EAAK,EAAE,YAAYyD,EAAcC,CAAA,CAAA,ECuB7DG,EA+BSC,GAAwBxI,MAChCuI,EAAI,uCAAuC,KAAKvI,CAAA,GAAQ,CAACuI,EAAE,CAAA,GAAMA,EAAE,CAAA,EAAK,GAAK,GAAK,GAAK,GACxF,KACF,GAGWE,GAAuBC,GAA2B,CAC7DH,EAAI,EAEJ,QAASzL,EAAQ4L,EAAO,OAAQ5L,KAC9ByL,GAAM1N,EAAS,MAAO6N,EAAO5L,CAAA,CAAA,EAG/B,OAAOyL,CAAA,EAGII,GAAoB3I,IAAyByI,GAAoBzI,CAAA,EAAO,KAAO,GAetF4I,GAA8B,CACzB,MACA,KACA,KACA,IACA,KACA,QACA,MACA,QACA,QACA,MACA,MACA,QACA,OACA,QACA,QACA,QACA,OAAA,EAGLC,GAAoBC,GACxB,IACC,EAAEP,EAAIK,GAA4B,QAAQE,EAAY,QAAQlB,GAAU,KAAA,EAAO,MAAM,EAAG,CAAA,CAAA,GACrFW,EACA,IAGOQ,GAAkC,CAC7C1H,EACA6G,IACG,CAACc,EAAoBjB,IACxBiB,IAEET,EAAIlH,EAAM,UAAWjG,EAAK2M,CAAA,EAAU,EAAA,GAQjC,GAAK,GAAMS,GAAqBhM,GAAgB+L,CAAA,CAAA,EAEnDR,GAAW,QACT,GAAK,IAENQ,EAAIL,EAASH,CAAA,GAAYA,EAAQ,QAAQF,GAAe,KAAA,GAAQ,CAAA,GAAM,IACrEc,GAAiBJ,CAAA,EAEjBM,GAAiBd,CAAA,GAoCVkB,GAAiC1I,GAC5CA,EAAS,CAAA,GAAM,IACX,EACAkI,GAAoBlI,CAAA,IAClBgI,EAAI,yEAAyE,KAAKhI,CAAA,GAChF,CAAC,CAAC,CAACgI,EAAE,CAAA,GAAe,CAAC,CAAC,CAACA,EAAE,CAAA,EACzB,GACJ,EC7MAW,GAAiB,CAACC,EAAcC,IAA6BA,EAAW,IAAMD,EAAO,IAoD9EE,GAAY,CACvBpL,EACAiK,EACAtM,IAC8F,CAC9F,GAAM,CAAE,MAAAyF,EAAO,IAAAuC,CAAA,EAAQhI,EAIjB0N,EAAS,CAAC5F,EAAWnD,IAA6B,KAAOqD,EAAIrD,CAAA,EAE7DgJ,EAAWzO,GAAmC,GAAGA,CAAA,GAAQ,QAAQ,mBAAoBwO,CAAA,EAGrFE,EAAuB,CAC3BjJ,EACAzF,EACAuK,KAEA9E,EAAWgJ,EAAQhJ,CAAA,EAGZ,MAAM,QAAQzF,CAAA,EACjBE,EACEF,EAAM,OAAO,OAAA,EAAS,IAAK2O,GAAUxL,EAAOsC,EAAUgJ,EAAQE,CAAA,EAAQpE,CAAA,CAAA,EACtE,GAAA,EAEFpH,EAAOsC,EAAUgJ,EAAQzO,CAAA,EAAQuK,CAAA,GAInCnB,EAIEwF,EAAY,CAEhBC,EAEAP,EAEAJ,EAEAhJ,EACAqF,IACS,CACT,GAAI,MAAM,QAAQrF,CAAA,EAAM,CACtBA,EAAI,QAAS4J,GAAQA,GAAOF,EAAUC,EAASP,EAAUJ,EAAYY,EAAKvE,CAAA,CAAA,EAC1E,MAAA,CAUF,IAAI/E,EAAe,GAKfuJ,EAAwB,EAGxBC,EAAuB,EAEtB9J,EAAiB,QAAA,IACpBA,EAAM9D,GACJP,EAAUsE,GAAOD,EAAiB,QAAA,CAAA,EAAqBpE,CAAA,EACvD,CAAA,GAAMoE,EAAkB,SAAU,MAAA,EAClCpE,CAAA,GAKJ,OAAO,KAAKoE,CAAA,EAAiB,QAAS/D,GAAQ,CAC5C,IAAMnB,EAAQa,EAAWqE,EAAiB/D,CAAA,EAAML,CAAA,EAEhD,GAAII,GAAcC,EAAKnB,CAAA,GACrB,GAAIA,IAAU,IAAMmB,EAAI,OAAS,EAAG,CAElC,IAAMsE,EAAW7E,GAAUO,CAAA,EAG3B6N,GAAwB,EACxBD,EAAwB,KAAK,IAC3BA,EACAZ,GAA8B1I,CAAA,CAAA,EAIhCD,GACGA,GAAgBA,EAAe,KAChCkJ,EAAqBjJ,EAAUzF,EAAqCuK,CAAA,CAAA,UAE/DvK,EAST,GAPImB,GAAO,YACTA,EAAM,WAMJA,EAAI,CAAA,GAAM,IACZ,GAAIA,EAAI,CAAA,GAAM,IAEZyN,EAAU,CAAA,EAAI,GAAI,EAAG5O,EAA+BuK,CAAA,UAC3CpJ,EAAI,CAAA,GAAM,IAEnByN,EAAU,CAAA,EAAIzN,EAAK,EAAGnB,EAA+BuK,CAAA,UAC5CpJ,EAAI,CAAA,GAAM,IAAK,CASxB,IAAM8N,EAAc7F,EAAM,OAE1BwF,EAAU,CAAA,EAAI,GAAI,EAAG5O,EAA+BuK,CAAA,EAEpD,IAAM2E,EAAY9F,EAAM,OAAO6F,EAAa7F,EAAM,OAAS6F,CAAA,EAG3D7F,EAAM,KAAK,CACT,EAAGgF,GACDlO,EACEgP,EAAU,IAAKC,GAAMA,EAAE,CAAA,EACvB,EAAA,EAEFhO,CAAA,EAEF,EAAG+N,EAAU,OAAO,CAACE,EAAKD,IAAMC,EAAMD,EAAE,EAAG,CAAA,CAAA,CAAA,CAAA,MAEpChO,EAAI,CAAA,GAAM,KAGjB,MAAM,QAAQnB,CAAA,EAASA,EAAQ,CAACA,CAAA,GAAQ,QACvC2O,GAAUA,GAASvF,EAAM,KAAK,CAAE,EAAG,EAAG,EAAG,GAAGjI,CAAA,IAAOwN,CAAA,GAAA,CAAA,CAAA,GAIlDxN,EAAI,CAAA,GAAM,MACZA,EAAMO,GAAgBZ,EAAQ,MAAM,UAAWR,EAAKa,EAAK,CAAA,EAAG,KAAA,CAAA,CAAA,GAI9DyN,EACE,CAAC,GAAGC,EAAS1N,CAAA,EACbmN,EACAJ,EAAaR,GAAqBvM,CAAA,EAAO0M,GAAiB1M,CAAA,EAC1DnB,EACAuK,CAAA,QAKJqE,EACEC,EAGAP,EAEIpO,EACEoO,EAAS,MAAM,cAAA,EAAgB,IAAKe,GAElCnP,EACEiB,EAAI,MAAM,cAAA,EAAgB,IAAKmO,GAE7BvP,EAASuP,EAAS,GAAA,EACdA,EAAQ,QAAQ,KAAMD,CAAA,GACrBA,GAAgBA,EAAe,KAAOC,CAAA,EAE7C,GAAA,CAAA,EAGJ,GAAA,EAEFnO,EACJ+M,EACAlO,EACAuK,CAAA,CAAA,CAAA,EAQJyE,GAGF5F,EAAM,KAAK,CAET,EAAGyF,EAAQ,YAAYT,GAAgBA,GAAe5I,EAAc8I,CAAA,CAAA,EAGpE,EACEJ,EAEG,MAEA,KAAK,IAAI,EAAG,GAAKc,CAAA,EAAwB,KAAO,GAI/CD,GAAyB,IAAM,GAAA,CAAA,CAAA,EAKrCQ,EAAoBtB,GAAgC1H,EAAO6G,CAAA,EAEjE,MAAO,CAAClI,EAAKzD,EAAWmI,EAAM4F,EAAQ,KAEpCA,IAAU,GAEVpG,EAAQ,CAAA,EAERwF,EACE,CAAA,EACAnN,EAAY,IAAMD,GAAOC,CAAA,EAAa,GAEtCmI,EAAOA,EAAK,EAAE,YAAY2F,EAAmBC,CAAA,EAASA,EACtDtK,EACA0E,GAAQA,EAAK,CAAA,EAGRR,EAAA,EC/SEqG,GAAS,CACpBC,EACAC,EACAC,EACA9O,IACyC,CAGzC,IAAI+O,EACJD,EAAe,CAAC5P,EAAQ,CAAA,IAAQ6P,EAAoB7P,CAAA,EAIpD,IAAI8P,EACJ,OAAAF,EAAkB,CAAC5P,EAAQ,IAAI,MAAW8P,EAAgB9P,CAAA,EAEnD,CAAC,CAAE,EAAGkF,EAAK,EAAGgJ,CAAA,IAAiB,CAEpC,GAAI,CAAC4B,EAAc,IAAI5K,CAAA,EAAM,CAE3B4K,EAAc,IAAI5K,CAAA,EAGlB,IAAMlD,EAAQC,GAAqB4N,EAAmB3B,CAAA,EAEtD,GAAI,CAEFwB,EAAM,OAAOxK,EAAKlD,CAAA,EAGlB6N,EAAkB,OAAO7N,EAAO,EAAGkM,CAAA,CAAA,OAC5B6B,EAAP,CAKK,UAAU,KAAK7K,CAAA,GAClByK,EAAK,OAAO,CAAE,GAAI,mBAAoB,IAAAzK,EAAK,MAAA6K,CAAA,EAAyBjP,CAAA,CAAA,CAAA,CAAA,CAAA,ECHxEkP,GAAW,CACfhQ,EACAsM,EACA2D,EACAC,EAAU5D,IACHtM,IAAU,GAAQiQ,EAAWjQ,IAAU,GAAOkQ,EAAUlQ,GAASsM,EAEpE6D,GAAYR,IACf,OAAOA,GAAQ,SACX,CAAE,EAAGvF,GAAQ,EAAGF,GAAM,EAAGG,EAAA,EAAkCsF,EAAK,CAAA,CAAA,EACjEA,IAASzF,GAETkG,GAAmB,CAAC9B,EAAkBrB,IAC1CqB,GAAYrB,EAAQ,CAAA,GAAM,IAAM3M,EAAK2M,EAAS,CAAA,EAAK,IAAM3M,EAAK2M,CAAA,GAAY,IAItEoD,GAAY,CAACzG,EAAY7G,EAAY6G,EAAK,IAC9C,OAAO7G,GAAa,WAChB,GACA6G,EAAK,EAAE,OAAOwG,GAAkB,EAAA,GAAOxG,EAAK,EAAI,IAAM,KAAOA,EAAK,EAAI,IAAM,IAAM7G,EAGlFuN,GAAkB,CAAE,EAAG,CAAE,MAAO,GAAI,SAAU,EAAA,CAAA,EAEvCC,GAAY,CACvBrE,EAAwB,CAAA,IAIrB,CACH,IAAM3F,EAAQ0F,GAAkBC,EAAO,KAAA,EAEjCyD,EAAOQ,GAASjE,EAAO,IAAA,EAEvBsE,EAAOR,GAAyB9D,EAAO,KAAM,GAAO,GAAOpK,EAAA,EAE3DyI,EAAY2B,EAAO,UAQrBuE,EAA2C,CAAE,EAAG,CAAA,CAAA,EAEhDC,EAAiB,EACfC,EAAkD,CAAA,EAGlD7P,EAAmB,CAEvB,GAAI,IAAIwD,IAAsBsM,EAAQtM,CAAA,EAEtC,MAAQ,CAACgC,EAAsBnF,EAAyBmL,IAAoC,CAhGhG,IAAAuE,EAiGM,IAAM7Q,GAEJ6Q,EAAAtK,EAAMD,EAASnF,EAAemL,CAAA,IAA9B,KAAAuE,EAEAlB,EAAK,QACHrJ,EACAnF,GAAO,MAAQ,MAAM,QAAQA,CAAA,EAAOA,EAAMA,EAAI,MAAM,GAAA,EACpDmL,GAAgB,KAChBxL,CAAA,EAIJ,OAAO2P,EAAW,GAAKzQ,GAASD,EAAS,MAAO,OAAOC,GAAO,CAAA,CAAA,EAC1D,QAAQA,CAAA,SACRA,CAAA,EAGN,IAAMA,GAAWwQ,EAAOA,EAAKxQ,CAAA,EAASA,EAEtC,IAAMoJ,GAAU,CACdsH,IACA,IAAMI,EAAwBH,EAAiB,OAE/C,GAAI,EAEA,OAAOvH,GAAS,SAAW/E,GAAM,CAAC+E,CAAA,CAAA,EAAUA,GAAO,QAAQ2H,CAAA,EAE7D,IAAM7L,EAAM,OAAO,OAAO,KAAMoL,EAAA,EAEhC,QAAStO,EAAQ8O,EAAuB9O,EAAQ2O,EAAiB,OAAQ3O,IAAS,CAChF,IAAMsL,EAAcqD,EAAiB3O,CAAA,EAErC,GAAIsL,EACF,OAAQ,OAAOA,EAAA,CAAA,IACR,SACHlM,GAAM8D,EAAKoI,EAAaxM,CAAA,EACxB,MAAA,IACG,SACHoE,EAAI,IAAMA,EAAI,GAAK,KAAOoI,CAAA,CAAA,CAKlC,OAAOpI,CAAA,QAAA,CAEPyL,EAAiB,OAASG,EAC1BJ,GAAA,CAAA,CAAA,EAMAM,EAAYxE,GAAc,CAAA,GAAK3D,GAAA,GAAgBqD,EAAO,OAAA,EAAWpL,CAAA,EAKjEmQ,EAAerH,GAA6D,CAEhF,IAAMsH,EAAaT,EACnBA,EAAa7G,EAEb,GAAI,CACF,OAAO/I,EAAUmQ,EAAUpH,CAAA,EAAO9I,CAAA,CAAA,QAAA,CAElC2P,EAAaS,CAAA,CAAA,EAIX9D,EAAW,CAAA,GAAK9D,GAAA,GAAiB4C,EAAO,QAAA,EAGxCiF,EAAWjE,GAAahB,EAAO,UAAY,QAASkB,EAAUtM,CAAA,EAG9DsQ,EAAY7C,GAAcyB,GAAS9D,EAAO,OAAQ1B,GAAYF,CAAA,EAAW8C,EAAUtM,CAAA,EAEnF4O,EAAQxD,EAAO,QAAU,OAAO,WAAU,IAAcrC,GAAA,EAAcH,GAAWwC,CAAA,GAEjF,CAAE,KAAA0D,EAAQyB,GAAaA,EAAA,CAAA,EAAe3B,EAGtC4B,EAAS7B,GAAWC,EAAOC,EAAMC,EAAM9O,CAAA,EAGzCyQ,EACJ3B,EAA0B,CAAC5P,EAAQ,IAAI,MAAWuR,EAAgBvR,CAAA,EAGlE,IAAMwR,EAAsB,IAAI,QAG1BC,EAAoB,CAACtQ,EAAanB,IACtCmB,GAAO,IACH,OACA,OAAOnB,GAAS,WAChB,KAAK,UAAUa,EAAUb,EAAOc,CAAA,EAAU2Q,CAAA,EAC1CzR,EAGA+Q,EAAWnH,GAA0C,CAGrD,CAAC8G,GAAkBD,EAAW,EAAE,SAClC7G,EAAO,CAAA,GAAKA,EAAM,EAAG,CAAC,GAAG6G,EAAW,EAAG,GAAG7G,EAAK,CAAA,EAAI,EAAG,EAAA,GAKnDA,EAAK,IAIRA,EAAK,EAAIyG,GAAUzG,EAAM4H,EAAoB,IAAI5H,EAAK,CAAA,CAAA,GAIxD,IAAInI,EAAYiP,EAAiB,KAAOa,EAAc,IAAI3H,EAAK,CAAA,EAE/D,GAAInI,GAAa,KAAM,CAErB,IAAI6L,EAAc2D,EAAYrH,CAAA,EAmB9B,GAhBKA,EAAK,IAORA,EAAK,EAAI9H,GAAO,KAAK,UAAUwL,EAAamE,CAAA,CAAA,EAG5CD,EAAoB,IAAI5H,EAAK,EAAsBA,EAAK,CAAA,EAGxDA,EAAK,EAAIyG,GAAUzG,EAAMA,EAAK,CAAA,GAG5B0D,GAAe,OAAOA,GAAe,SAOvC,GANA1D,EAAK,EAAIA,EAAK,EAAE,IAAIoD,EAAA,EAChBzC,IAAWX,EAAK,EAAIW,GAGxB+C,EAAc6D,EAAS7D,EAAa1D,CAAA,EAEhC8G,EACFC,EAAiB,KAAKrD,CAAA,MACjB,CAIL,IAAMkC,EAAQ,OAAO5F,EAAK,GAAK,WAAc,OAAO0D,EAAY,GAAK,SAAW,EAAI,EAAK,EAEzF7L,EACE+O,GAAQ,OAAO5G,EAAK,GAAK,YAAc4G,GAAQ1O,IAAQ0N,EAAQ5F,EAAK,CAAA,EAAKA,EAAK,EAIhFwH,EAAU9D,EAAa7L,EAAWmI,EAAM4F,CAAA,EAAO,QAAQ8B,CAAA,EAEnDhE,EAAY,IACd7L,GAAa,IAAM6L,EAAY,EAAA,MAK/B,OAAOA,GAAe,SAExB7L,EAAY6L,GAGZ7L,EAAYmI,EAAK,EACjB+F,EAAK,OAAO,CAAE,GAAI,oBAAqB,KAAMlO,CAAA,EAAaX,CAAA,GAGxD4P,GAAkB,OAAO9G,EAAK,GAAM,YACtC+G,EAAiB,KAAKlP,CAAA,EAIrBiP,IAEHa,EAAc,IAAI3H,EAAK,EAAGnI,CAAA,EAG1BV,GAAcwQ,EAAe,GAAA,EAAA,CAIjC,OAAO9P,CAAA,EAKHmP,EAAWtM,GACfpE,EAAKmE,GAAMC,CAAA,EAAQ,IAAIyM,CAAA,EAAS,OAAO,OAAA,EAAsB,GAAA,EAGzDW,EAAY1B,GAAuC9D,EAAO,UAAWzL,GAAU,EAAA,EAErF,GAAIiR,EAAW,CAEb,IAAMxM,EAAMmE,GAAgB9C,CAAA,EAGtBoL,EAASP,EACb,OAAOM,GAAa,WAChB7Q,EAAU6Q,EAAUxM,EAAKpE,CAAA,EAAUA,CAAA,GAAYoE,EAC/C,CAAA,GAAKA,EAAA,GAAQwM,CAAA,CAAA,EAGnB9B,EAAc,CAACgC,GAAYD,EAAO,QAAQL,CAAA,EAAS,MAAUM,CAAA,CAAA,CAG/D,MAAO,CACL,KAAM,IAAMjC,EAAK,OAAO,CAAE,GAAI,iBAAA,EAAqB7O,CAAA,EACnD,QAAA8P,CAAA,CAAA,ECvTSiB,GAAU3F,GAAqC,CAY1D,IAAI0E,EAAWtM,IAEbsL,EAAA,EACOgB,EAAQtM,CAAA,GAIbsL,EAAQkC,GAAiC,EAKzC,CAAE,QAAAlB,EAAS,KAAAhB,CAAA,EAASW,GAAUuB,CAAA,EAAA,EAI9B5F,GAAQ0D,EAAK1D,CAAA,EAEjB,IAAIpL,EAiBJ,MAAO,CACL,GAAI,OAAO,iBAAiB,IAAIwD,IAAsBsM,EAAQtM,CAAA,EAAS,CACrE,MAAO,CACL,KAnB0CnD,GAAa,KACtDL,GACH8P,EAAQ,CACLhI,IACC9H,EAAU8H,EACH,GAAA,CAAA,EAKN9H,EAAQK,CAAA,IASM,OAAA,CAAA,CAAA,CAAA,EAUrB,MAAQ2Q,GAAWlC,EAAKkC,CAAA,CAAA,CAAA,EC9Df,CAAE,GAAAC,GAAI,MAAAC,EAAA,EAAwBH,GAAA","names":["cssPropertyAlias","cssPropertyPrefixFlags","cssValuePrefixFlags","includes","value","search","join","parts","separator","joinTruthy","tail","array","startIndex","identity","noop","capitalize","hyphenate","evalThunk","context","ensureMaxSize","map","max","isCSSProperty","key","merge","target","source","target2","escape","className","buildMediaQuery","screen","screen2","feature","cyrb32","h","index","sortedInsertionIndex","element","low","high","pivot","groupings","rules","startGrouping","endGrouping","isWhitespace","onlyPrefixes","s","onlyVariants","addRule","directive2","negate","saveRule","buffer","prefix","parseString","token","isVariant","char","dynamic","position2","parseGroupedToken","parseToken","parseGroup","staticsCaches","buildStatics","strings","statics","slowModeIndex","interpolation","staticRules","activeGroupings","parse","tokens","apply2","isFunctionFree","detectFunction","stringify","data","cacheByFactory","directive","factory","cache","params","applyFactory","css","apply","positions","resolve","suffix","properties","declarations","property2","corners","expandEdges","edges","_","__","$","toColumnsOrRows","x","property","id","propertyValue","themeProperty","section","theme2","themePropertyFallback","alias","handler","name","display","position","textTransform","textDecoration","fontStyle","fontVariantNumeric","inset","opacityProperty","parseColorComponent","chars","factor","asRGBA","color","opacityProperty2","opacityDefault","withOpacityFallback","kind","transparentTo","reversableEdge","placeHelper","contentPluginFor","gridPlugin","border","transform","gpu","transformXYFunction","edgesPluginFor","padding","margin","minMax","filter","filters","_4","corePlugins","tag","fontSize","screens","center","padding2","paddingFor","rules2","createPreflight","coreVariants","STYLE_ELEMENT_ID","getStyleElement","nonce","cssomSheet","offset","rule","voidSheet","mode","report","optional","info","warn","message","strict","silent","noprefix","important","autoprefix","cssText","propertyAlias","flags","ratios","start","end","result","dividend","exponential","stop","unit","linear","divideBy","step","alias2","themeFactory","args","theme","defaultTheme","breakpoints","flattenColorPalette","colors","resolveContext","handleArbitraryValues","makeThemeResolver","config","deref","theme3","base","defaultValue","keypath","translate","plugins","isTranslating","parameters","plugin","_2","GROUP_RE","NOT_PREFIX_RE","prepareVariantSelector","variant","decorate","darkMode","variants","applyVariant","translation","not","variant2","_3","responsivePrecedence","seperatorPrecedence","string","atRulePresedence","PRECEDENCES_BY_PSEUDO_CLASS","pseudoPrecedence","pseudoClass","makeVariantPresedenceCalculator","presedence","declarationPropertyPrecedence","stringifyBlock","body","selector","serialize","tagVar","tagVars","stringifyDeclaration","value2","stringify3","atRules","css2","maxPropertyPresedence","numberOfDeclarations","currentSize","waypoints","p","sum","selectorPart","keyPart","variantPresedence","layer","inject","sheet","mode2","init","sortedPrecedences","insertedRules","error","sanitize","disabled","enabled","loadMode","stringifyVariant","stringify2","COMPONENT_PROPS","configure","hash","activeRule","translateDepth","lastTranslations","process","_a","lastTranslationsIndex","convert","translate2","doTranslate","parentRule","decorate2","serialize2","callback","inject2","idToClassName","inlineDirectiveName","evaluateFunctions","preflight","styles","injected","create","config2","tw","setup"],"sources":["../esm/npm/twind@0.16.16/node_modules/src/internal/util.ts","../esm/npm/twind@0.16.16/node_modules/src/twind/parse.ts","../esm/npm/twind@0.16.16/node_modules/src/twind/directive.ts","../esm/npm/twind@0.16.16/node_modules/src/twind/apply.ts","../esm/npm/twind@0.16.16/node_modules/src/twind/helpers.ts","../esm/npm/twind@0.16.16/node_modules/src/twind/plugins.ts","../esm/npm/twind@0.16.16/node_modules/src/twind/preflight.ts","../esm/npm/twind@0.16.16/node_modules/src/twind/variants.ts","../esm/npm/twind@0.16.16/node_modules/src/internal/dom.ts","../esm/npm/twind@0.16.16/node_modules/src/twind/sheets.ts","../esm/npm/twind@0.16.16/node_modules/src/twind/modes.ts","../esm/npm/twind@0.16.16/node_modules/src/twind/prefix.ts","../esm/npm/twind@0.16.16/node_modules/src/twind/theme.ts","../esm/npm/twind@0.16.16/node_modules/src/twind/translate.ts","../esm/npm/twind@0.16.16/node_modules/src/twind/decorate.ts","../esm/npm/twind@0.16.16/node_modules/src/twind/presedence.ts","../esm/npm/twind@0.16.16/node_modules/src/twind/serialize.ts","../esm/npm/twind@0.16.16/node_modules/src/twind/inject.ts","../esm/npm/twind@0.16.16/node_modules/src/twind/configure.ts","../esm/npm/twind@0.16.16/node_modules/src/twind/instance.ts","../esm/npm/twind@0.16.16/node_modules/src/twind/default.ts"],"sourcesContent":["import type {\n  Context,\n  Hasher,\n  Falsy,\n  MaybeThunk,\n  CSSRules,\n  ThemeScreen,\n  ThemeScreenValue,\n  CSSRuleValue,\n} from '../types'\n\ninterface Includes {\n  (value: string, search: string): boolean\n  \u003cT\u003e(value: readonly T[], search: T): boolean\n}\n\nexport const includes: Includes = (value: string | readonly unknown[], search: unknown) =\u003e\n  // eslint-disable-next-line no-implicit-coercion\n  !!~(value as string).indexOf(search as string)\n\nexport const join = (parts: readonly string[], separator = '-'): string =\u003e parts.join(separator)\n\nexport const joinTruthy = (parts: readonly (string | Falsy)[], separator?: string): string =\u003e\n  join(parts.filter(Boolean) as string[], separator)\n\nexport const tail = \u003cT extends string | readonly unknown[]\u003e(array: T, startIndex = 1): T =\u003e\n  array.slice(startIndex) as T\n\nexport const identity = \u003cT\u003e(value: T): T =\u003e value\n\nexport const noop = (): void =\u003e {\n  /* no-op */\n}\n\nexport const capitalize = \u003cT extends string\u003e(value: T): Capitalize\u003cT\u003e =\u003e\n  (value[0].toUpperCase() + tail(value)) as Capitalize\u003cT\u003e\n\nexport const hyphenate = (value: string): string =\u003e value.replace(/[A-Z]/g, '-$\u0026').toLowerCase()\n\nexport const evalThunk = \u003cT\u003e(value: MaybeThunk\u003cT\u003e, context: Context): T =\u003e {\n  while (typeof value == 'function') {\n    value = (value as (context: Context) =\u003e T)(context)\n  }\n\n  return value\n}\n\nexport const ensureMaxSize = \u003cK, V\u003e(map: Map\u003cK, V\u003e, max: number): void =\u003e {\n  // Ensure the cache does not grow unlimited\n  if (map.size \u003e max) {\n    map.delete(map.keys().next().value)\n  }\n}\n\n// string, number or Array =\u003e a property with a value\nexport const isCSSProperty = (key: string, value: CSSRuleValue): boolean =\u003e\n  !includes('@:\u0026', key[0]) \u0026\u0026 (includes('rg', (typeof value)[5]) || Array.isArray(value))\n\nexport const merge = (target: CSSRules, source: CSSRules, context: Context): CSSRules =\u003e\n  source\n    ? Object.keys(source).reduce((target, key) =\u003e {\n        const value = evalThunk(source[key], context)\n\n        if (isCSSProperty(key, value)) {\n          // hyphenate target key only if key is property like (\\w-)\n          target[hyphenate(key)] = value\n        } else {\n          // Keep all @font-face, @import, @global, @apply as is\n          target[key] =\n            key[0] == '@' \u0026\u0026 includes('figa', key[1])\n              ? ((target[key] || []) as CSSRules[]).concat(value as CSSRules)\n              : merge((target[key] || {}) as CSSRules, value as CSSRules, context)\n        }\n\n        return target\n      }, target)\n    : target\n\nexport const escape =\n  (typeof CSS !== 'undefined' \u0026\u0026 CSS.escape) ||\n  // Simplified: escaping only special characters\n  // Needed for NodeJS and Edge \u003c79 (https://caniuse.com/mdn-api_css_escape)\n  ((className: string): string =\u003e\n    className\n      // Simplifed escape testing only for chars that we know happen to be in tailwind directives\n      .replace(/[!\"'`*+.,;:\\\\/\u003c=\u003e?@#$%\u0026^|~()[\\]{}]/g, '\\\\$\u0026')\n      // If the character is the first character and is in the range [0-9] (2xl, ...)\n      // https://drafts.csswg.org/cssom/#escape-a-character-as-code-point\n      .replace(/^\\d/, '\\\\3$\u0026 '))\n\nexport const buildMediaQuery = (screen: ThemeScreen): string =\u003e {\n  if (!Array.isArray(screen)) {\n    screen = [screen as ThemeScreenValue]\n  }\n\n  return (\n    '@media ' +\n    join(\n      (screen as ThemeScreenValue[]).map((screen) =\u003e {\n        if (typeof screen == 'string') {\n          screen = { min: screen }\n        }\n\n        return (\n          (screen as { raw?: string }).raw ||\n          join(\n            Object.keys(screen).map(\n              (feature) =\u003e `(${feature}-width:${(screen as Record\u003cstring, string\u003e)[feature]})`,\n            ),\n            ' and ',\n          )\n        )\n      }),\n      ',',\n    )\n  )\n}\n\n// Based on https://stackoverflow.com/a/52171480\nexport const cyrb32: Hasher = (value: string): string =\u003e {\n  // eslint-disable-next-line no-var\n  for (var h = 9, index = value.length; index--; ) {\n    h = Math.imul(h ^ value.charCodeAt(index), 0x5f356495)\n  }\n\n  return 'tw-' + ((h ^ (h \u003e\u003e\u003e 9)) \u003e\u003e\u003e 0).toString(36)\n}\n\n/**\n * Find the array index of where to add an element to keep it sorted.\n *\n * @returns The insertion index\n */\nexport const sortedInsertionIndex = (array: readonly number[], element: number): number =\u003e {\n  // Find position by binary search\n  // eslint-disable-next-line no-var\n  for (var low = 0, high = array.length; low \u003c high; ) {\n    const pivot = (high + low) \u003e\u003e 1\n\n    // Less-Then-Equal to add new equal element after all existing equal elements (stable sort)\n    if (array[pivot] \u003c= element) {\n      low = pivot + 1\n    } else {\n      high = pivot\n    }\n  }\n\n  return high\n}\n","import type { Rule, Token } from '../types'\n\nimport { join, tail, includes } from '../internal/util'\n\n// The parsing is stacked based\n// when ever we find a group start\n// - in strings ':' or '(',\n// - array values\n// - object keys and their value\n// we add an empty marker string `\"\"` into `groupings` to mark the group start\n// if we find a variant or prefix we push it onto `groupings`\n// once the group ends (whitespace or ')') we drop all entries until the last marker\n// This way we can filter `groupings` for truthy values which are either\n// a variant (starting with ':') or a prefix\n\n// Shared variables used during parsing\n\n// List of active groupings: either variant (':xxx') or prefix\n// sm:text =\u003e ':sm'\n// sm:(text) =\u003e ':sm', ''\n// text(center sm:hover:underline focus:black) sm:rounded\n// =\u003e 'text'\n// =\u003e 'text', ''\n// =\u003e 'text', '', ':sm'\n// =\u003e 'text', '', ':sm', ':hover'\n// =\u003e 'text', ''\n// =\u003e 'text', '', ':focus'\n// =\u003e 'text'\n// =\u003e\n// =\u003e ':sm'\nlet groupings: string[]\n\n// List of parsed rules\nlet rules: Rule[]\n\n// A new group has been found\n// this maybe a value (':variant' or 'prefix') or an empty marker string\nconst startGrouping = (value = ''): '' =\u003e {\n  groupings.push(value)\n  return ''\n}\n\n// Close a group\n// Within strings we need to distinguish between a whitespace and a closing bracket\n// a) if we have a whitespace\n// we want to keep everything up to including the last group start\n//\n// b) if we have a non-whitespace\n// we want to keep everything before the last group start\nconst endGrouping = (isWhitespace?: boolean): void =\u003e {\n  // true =\u003e +1\n  // false =\u003e +0\n  groupings.length = Math.max(groupings.lastIndexOf('') + ~~(isWhitespace as boolean), 0)\n}\n\nconst onlyPrefixes = (s: string): '' | boolean =\u003e s \u0026\u0026 !includes('!:', s[0])\nconst onlyVariants = (s: string): '' | boolean =\u003e s[0] == ':'\n\nconst addRule = (directive: Rule['d'], negate?: boolean): void =\u003e {\n  rules.push({\n    v: groupings.filter(onlyVariants),\n    d: directive,\n    n: negate,\n    i: includes(groupings, '!'),\n    $: '',\n  })\n}\n\nconst saveRule = (buffer: string): '' =\u003e {\n  const negate = buffer[0] == '-'\n\n  if (negate) {\n    buffer = tail(buffer)\n  }\n\n  const prefix = join(groupings.filter(onlyPrefixes))\n\n  addRule(buffer == '\u0026' ? prefix : (prefix \u0026\u0026 prefix + '-') + buffer, negate)\n\n  return ''\n}\n\nconst parseString = (token: string, isVariant?: boolean): void =\u003e {\n  let buffer = ''\n\n  for (let char: string, dynamic = false, position = 0; (char = token[position++]); ) {\n    if (dynamic || char == '[') {\n      buffer += char\n      dynamic = char != ']'\n      continue\n    }\n\n    switch (char) {\n      case ':':\n        // Check if this is an pseudo element \"after::\"\n        buffer =\n          buffer \u0026\u0026 startGrouping(':' + (token[position] == char ? token[position++] : '') + buffer)\n\n        break\n\n      case '(':\n        // If there is a buffer this is the prefix for all grouped tokens\n        buffer = buffer \u0026\u0026 startGrouping(buffer)\n\n        startGrouping()\n\n        break\n\n      case '!':\n        startGrouping(char)\n\n        break\n\n      case ')':\n      case ' ':\n      case '\\t':\n      case '\\n':\n      case '\\r':\n        buffer = buffer \u0026\u0026 saveRule(buffer)\n        endGrouping(char !== ')')\n\n        break\n\n      default:\n        buffer += char\n    }\n  }\n\n  if (buffer) {\n    if (isVariant) {\n      startGrouping(':' + buffer)\n    } else if (buffer.slice(-1) == '-') {\n      startGrouping(buffer.slice(0, -1))\n    } else {\n      saveRule(buffer)\n    }\n  }\n}\n\nconst parseGroupedToken = (token: Token): void =\u003e {\n  startGrouping()\n\n  // eslint-disable-next-line @typescript-eslint/no-use-before-define\n  parseToken(token)\n\n  endGrouping()\n}\n\nconst parseGroup = (key: string, token: Token): void =\u003e {\n  if (token) {\n    startGrouping()\n\n    // we care about: string, object and function\n    // \"undefined\"\n    // \"object\" - this includes arrays\n    // \"boolean\"\n    // \"number\"\n    // \"bigint\"\n    // \"string\"\n    // \"symbol\"\n    // \"function\"\n    // 2nd char is uniq\n    const isVariant = includes('tbu', (typeof token)[1])\n\n    parseString(key, isVariant)\n\n    if (isVariant) {\n      parseGroupedToken(token)\n    }\n\n    endGrouping()\n  }\n}\n\nconst parseToken = (token: Token): void =\u003e {\n  switch (typeof token) {\n    case 'string':\n      parseString(token)\n      break\n    case 'function':\n      addRule(token)\n      break\n    case 'object':\n      if (Array.isArray(token)) {\n        token.forEach(parseGroupedToken)\n      } else if (token) {\n        Object.keys(token).forEach((key) =\u003e {\n          parseGroup(key, token[key])\n        })\n      }\n  }\n}\n\n// A function to be called with an interpolation\n// to add dynamic rules\ntype Static = (interpolation: Token) =\u003e void\n\n// Template literal strings do not change\n// we can pre-calculate all groupings and static rules\n// which are later combined with the dynamic rules from interpolations\n//\n// For this to work we assume that interpolations do not\n// affect the current groupings:\n// Fast mode: tw`text(${'center'})`, tw`text-${'center'}`\n// Slow mode: tw`text-${'red'}-600`, tw`bg(${'red'}(600 700(hover:\u0026))`, tw`${\"hover\"}:text-blue-600`,\nconst staticsCaches = new WeakMap\u003cTemplateStringsArray, Static[]\u003e()\n\nconst buildStatics = (strings: TemplateStringsArray): Static[] =\u003e {\n  let statics = staticsCaches.get(strings)\n\n  if (!statics) {\n    // Index within strings from which on we use slow mode for parsing\n    // these means collecting all strings and string interpolations\n    // into `buffer` and parse it dynamicly\n    let slowModeIndex = NaN\n\n    // Used during slow mode to join consecutive strings\n    let buffer = ''\n\n    statics = strings.map((token, index) =\u003e {\n      if (\n        slowModeIndex !== slowModeIndex \u0026\u0026\n        (token.slice(-1) == '[' || includes(':-(', (strings[index + 1] || '')[0]))\n      ) {\n        // If the the string after the upcoming interpolation\n        // would start a grouping we switch to slow mode now\n        slowModeIndex = index\n      }\n\n      // Slow mode\n      if (index \u003e= slowModeIndex) {\n        return (interpolation) =\u003e {\n          // If first =\u003e reset bufferd tokens\n          if (index == slowModeIndex) {\n            buffer = ''\n          }\n\n          buffer += token\n\n          // Join consecutive strings and numbers\n          if (includes('rg', (typeof interpolation)[5])) {\n            buffer += interpolation\n          } else if (interpolation) {\n            parseString(buffer)\n            buffer = ''\n            parseToken(interpolation)\n          }\n\n          // If last =\u003e parse remaining buffered tokens\n          if (index == strings.length - 1) {\n            parseString(buffer)\n          }\n        }\n      }\n\n      // Fast mode\n      // Reset rules to extract all static generated rules\n      const staticRules = (rules = [])\n\n      parseString(token)\n\n      // Copy the active groupings to set them\n      // before interpolation processing\n      const activeGroupings = [...groupings]\n\n      // Reset the rules\n      rules = []\n\n      return (interpolation) =\u003e {\n        rules.push(...staticRules)\n        groupings = [...activeGroupings]\n        if (interpolation) {\n          parseToken(interpolation)\n        }\n      }\n    })\n\n    staticsCaches.set(strings, statics)\n  }\n\n  return statics\n}\n\nexport const parse = (tokens: unknown[]): Rule[] =\u003e {\n  groupings = []\n  rules = []\n\n  // Handles template literal strings\n  if (\n    Array.isArray(tokens[0] as TemplateStringsArray) \u0026\u0026\n    Array.isArray((tokens[0] as TemplateStringsArray).raw)\n  ) {\n    buildStatics(tokens[0] as TemplateStringsArray).forEach((apply, index) =\u003e\n      apply(tokens[index + 1] as Token),\n    )\n  } else {\n    parseToken(tokens as Token)\n  }\n\n  return rules\n}\n","import type { Context, Directive, MaybeThunk } from '../types'\n\nimport { ensureMaxSize, evalThunk } from '../internal/util'\n\nlet isFunctionFree: boolean\nconst detectFunction = (key: string, value: unknown): unknown =\u003e {\n  if (typeof value == 'function') {\n    isFunctionFree = false\n  }\n\n  return value\n}\n\nconst stringify = (data: unknown): string | false =\u003e {\n  isFunctionFree = true\n\n  const key = JSON.stringify(data, detectFunction)\n\n  return isFunctionFree \u0026\u0026 key\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst cacheByFactory = new WeakMap\u003c\n  (data: any, context: Context) =\u003e any,\n  Map\u003cstring, Directive\u003cany\u003e\u003e\n\u003e()\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n/**\n * Returns an optimized and cached function for use with `tw`.\n *\n * `tw` caches rules based on the function identity. This helper caches\n * the function based on the data.\n *\n * @param factory to use when the directive is invoked\n * @param data to use\n */\nexport const directive = \u003cData, T\u003e(\n  factory: (data: Data, context: Context) =\u003e MaybeThunk\u003cT\u003e,\n  data: Data,\n): Directive\u003cT\u003e =\u003e {\n  const key = stringify(data)\n\n  let directive: Directive\u003cT\u003e | undefined\n\n  if (key) {\n    // eslint-disable-next-line no-var\n    var cache = cacheByFactory.get(factory)\n\n    if (!cache) {\n      cacheByFactory.set(factory, (cache = new Map()))\n    }\n\n    directive = cache.get(key)\n  }\n\n  if (!directive) {\n    directive = Object.defineProperty(\n      (params: string[] | Context, context: Context): T =\u003e {\n        context = Array.isArray(params) ? context : params\n        return evalThunk(factory(data, context), context)\n      },\n      'toJSON',\n      {\n        // Allow twind to generate a unique id for this directive\n        // twind uses JSON.stringify which returns undefined for functions like this directive\n        // providing a toJSON function allows to include this directive in the id generation\n        value: () =\u003e key || data,\n      },\n    )\n\n    if (cache) {\n      cache.set(key as string, directive as Directive\u003cT\u003e)\n\n      // Ensure the cache does not grow unlimited\n      ensureMaxSize(cache, 10000)\n    }\n  }\n\n  return directive as Directive\u003cT\u003e\n}\n","import type { Token, Directive, CSSRules, Context } from '../types'\n\nimport { parse } from './parse'\nimport { directive } from './directive'\n\nexport interface Apply {\n  (strings: TemplateStringsArray, ...interpolations: Token[]): Directive\u003cCSSRules\u003e\n\n  (...tokens: Token[]): Directive\u003cCSSRules\u003e\n}\n\nconst applyFactory = (tokens: unknown[], { css }: Context) =\u003e css(parse(tokens))\n\nexport const apply: Apply = (...tokens: unknown[]): Directive\u003cCSSRules\u003e =\u003e\n  directive(applyFactory, tokens)\n","/* eslint-disable @typescript-eslint/consistent-type-assertions */\nimport type { CSSRules } from '../types'\n\nimport { joinTruthy } from '../internal/util'\n\nconst positions = (resolve: (position: string) =\u003e undefined | string[] | void) =\u003e (\n  value: string | string[] | undefined,\n  position: string,\n  prefix?: string,\n  suffix?: string,\n): CSSRules | undefined =\u003e {\n  if (value) {\n    const properties = position \u0026\u0026 resolve(position)\n\n    if (properties \u0026\u0026 properties.length \u003e 0) {\n      return properties.reduce((declarations, property) =\u003e {\n        declarations[joinTruthy([prefix, property, suffix])] = value\n        return declarations\n      }, {} as CSSRules)\n    }\n  }\n}\n\nexport const corners = /*#__PURE__*/ positions(\n  (key) =\u003e\n    (({\n      t: ['top-left', 'top-right'],\n      r: ['top-right', 'bottom-right'],\n      b: ['bottom-left', 'bottom-right'],\n      l: ['bottom-left', 'top-left'],\n      tl: ['top-left'],\n      tr: ['top-right'],\n      bl: ['bottom-left'],\n      br: ['bottom-right'],\n    } as Record\u003cstring, undefined | string[]\u003e)[key]),\n)\n\nexport const expandEdges = (key: string): string[] | undefined =\u003e {\n  const parts = (({ x: 'lr', y: 'tb' } as Record\u003cstring, undefined | string\u003e)[key] || key || '')\n    .split('')\n    .sort()\n\n  for (let index = parts.length; index--; ) {\n    if (\n      !(parts[index] = ({\n        t: 'top',\n        r: 'right',\n        b: 'bottom',\n        l: 'left',\n      } as Record\u003cstring, string\u003e)[parts[index]])\n    )\n      return\n  }\n\n  if (parts.length) return parts\n}\n\n// Support several edges like 'tr'\n// 'x' and 'y' can not be combined with others because size 'xl'\n// Every char must be a edge position\n// Sort to have consistent declaration ordering\nexport const edges = /*#__PURE__*/ positions(expandEdges)\n/* eslint-enable @typescript-eslint/consistent-type-assertions */\n","/* eslint-disable no-return-assign, no-cond-assign, @typescript-eslint/consistent-type-assertions */\nimport type {\n  Theme,\n  CSSRules,\n  CSSProperties,\n  Plugin,\n  ThemeResolver,\n  Context,\n  Falsy,\n  ThemeContainer,\n  ThemeScreen,\n} from '../types'\n\nimport {\n  includes,\n  join,\n  joinTruthy,\n  tail,\n  capitalize,\n  hyphenate,\n  buildMediaQuery,\n} from '../internal/util'\nimport { corners, expandEdges, edges } from './helpers'\n\ntype PluginHandler = (\n  parameters: string[],\n  context: Context,\n  id: string,\n) =\u003e CSSRules | string | Falsy\n\n// Shared variables\nlet _: undefined | string | CSSRules | CSSProperties | string[] | boolean | Falsy | number\nlet __: undefined | string | CSSProperties\nlet $: undefined | string | number | ThemeScreen\n\nconst toColumnsOrRows = (x: string): 'columns' | 'rows' =\u003e (x == 'cols' ? 'columns' : 'rows')\n\nconst property = (property: string) =\u003e (\n  params: string[],\n  context: unknown,\n  id: string,\n): CSSRules =\u003e ({\n  [property]: id + ((_ = join(params)) \u0026\u0026 '-' + _),\n})\n\nconst propertyValue = (property?: string, separator?: string) =\u003e (\n  params: string[],\n  context?: Context,\n  id?: string,\n): CSSRules | string =\u003e\n  (_ = join(params, separator)) \u0026\u0026 {\n    [property || (id as string)]: _,\n  }\n\nconst themeProperty = (section?: keyof Theme): PluginHandler =\u003e (params: string[], { theme }, id) =\u003e\n  (_ = theme(section || (id as keyof Theme), params) as string) \u0026\u0026 {\n    [section || id]: _,\n  }\n\nconst themePropertyFallback = (section?: keyof Theme, separator?: string): PluginHandler =\u003e (\n  params: string[],\n  { theme },\n  id,\n) =\u003e\n  (_ = theme(section || (id as keyof Theme), params, join(params, separator)) as string) \u0026\u0026 {\n    [section || id]: _,\n  }\n\nconst alias = (handler: PluginHandler, name: string): PluginHandler =\u003e (params, context) =\u003e\n  handler(params, context, name)\n\nconst display = property('display')\nconst position = property('position')\nconst textTransform = property('textTransform')\nconst textDecoration = property('textDecoration')\nconst fontStyle = property('fontStyle')\nconst fontVariantNumeric = (key: string): PluginHandler =\u003e (params, context, id) =\u003e ({\n  ['--tw-' + key]: id,\n  fontVariantNumeric:\n    'var(--tw-ordinal,/*!*/ /*!*/) var(--tw-slashed-zero,/*!*/ /*!*/) var(--tw-numeric-figure,/*!*/ /*!*/) var(--tw-numeric-spacing,/*!*/ /*!*/) var(--tw-numeric-fraction,/*!*/ /*!*/)',\n})\n\nconst inset: PluginHandler = (params, { theme }, id) =\u003e (_ = theme('inset', params)) \u0026\u0026 { [id]: _ }\n\nconst opacityProperty = (\n  params: string[],\n  theme: ThemeResolver,\n  id: string,\n  section = id,\n): CSSRules | undefined =\u003e\n  (_ = theme((section + 'Opacity') as 'textOpacity', tail(params)) as undefined) \u0026\u0026 {\n    [`--tw-${id}-opacity`]: _,\n  }\n\nconst parseColorComponent = (chars: string, factor: number): number =\u003e\n  Math.round(parseInt(chars, 16) * factor)\n\nconst asRGBA = \u003cT extends string | undefined\u003e(\n  color: T,\n  opacityProperty: string,\n  opacityDefault?: string,\n): T | string =\u003e {\n  if (color \u0026\u0026 color[0] == '#' \u0026\u0026 (_ = (color.length - 1) / 3) \u0026\u0026 ($ = [17, 1, 0.062272][_ - 1])) {\n    return `rgba(${parseColorComponent(color.substr(1, _), $)},${parseColorComponent(\n      color.substr(1 + _, _),\n      $,\n    )},${parseColorComponent(color.substr(1 + 2 * _, _), $)},${\n      opacityProperty\n        ? `var(--tw-${opacityProperty}${opacityDefault ? ',' + opacityDefault : ''})`\n        : opacityDefault || 1\n    })`\n  }\n\n  return color\n}\n\nconst withOpacityFallback = (\n  property: string,\n  kind: string,\n  color: string | undefined,\n): CSSRules | undefined =\u003e\n  color \u0026\u0026 typeof color == 'string'\n    ? (_ = asRGBA(color, kind + '-opacity')) \u0026\u0026 _ !== color\n      ? {\n          [`--tw-${kind}-opacity`]: '1',\n          [property]: [color, _],\n        }\n      : { [property]: color }\n    : undefined\n\nconst transparentTo = (color: string) =\u003e (($ = asRGBA(color, '', '0')) == _ ? 'transparent' : $)\n\nconst reversableEdge = (\n  params: string[],\n  { theme }: Context,\n  id: string,\n  section: 'divideWidth' | 'space',\n  prefix: string,\n  suffix?: string,\n  // eslint-disable-next-line max-params\n): CSSRules | undefined =\u003e\n  (_ = ({ x: ['right', 'left'], y: ['bottom', 'top'] } as Record\u003cstring, undefined | string[]\u003e)[\n    params[0]\n  ]) \u0026\u0026 ($ = `--tw-${id}-${params[0]}-reverse`)\n    ? params[1] == 'reverse'\n      ? {\n          [$]: '1',\n        }\n      : {\n          [$]: '0',\n          [joinTruthy([prefix, _[0], suffix])]:\n            (__ = theme(section, tail(params))) \u0026\u0026 `calc(${__} * var(${$}))`,\n          // With fallback\n          [joinTruthy([prefix, _[1], suffix])]: __ \u0026\u0026 [__, `calc(${__} * calc(1 - var(${$})))`],\n        }\n    : undefined\n\nconst placeHelper = (property: string, params: string[]): CSSRules | string =\u003e\n  params[0] \u0026\u0026 {\n    // 'auto'\n    // 'start'\n    // 'end'\n    // 'center'\n    // 'stretch'\n    // 'between'\n    // 'around'\n    // 'evenly'\n    // 'between', 'around', 'evenly' =\u003e space-$0\n    // 4th char is unique\n    [property]: (includes('wun', (params[0] || '')[3]) ? 'space-' : '') + params[0],\n  }\n\nconst contentPluginFor = (property: string) =\u003e (params: string[]): CSSRules | string =\u003e\n  includes(['start', 'end'], params[0])\n    ? { [property]: 'flex-' + params[0] }\n    : placeHelper(property, params)\n\nconst gridPlugin = (kind: 'column' | 'row'): PluginHandler =\u003e (params, { theme }) =\u003e {\n  if ((_ = theme(('grid' + capitalize(kind)) as 'gridRow', params, ''))) {\n    return { ['grid-' + kind]: _ }\n  }\n\n  switch (params[0]) {\n    case 'span':\n      return (\n        params[1] \u0026\u0026 {\n          ['grid-' + kind]: `span ${params[1]} / span ${params[1]}`,\n        }\n      )\n    case 'start':\n    case 'end':\n      return (\n        (_ = theme(\n          ('grid' + capitalize(kind) + capitalize(params[0])) as 'gridRowStart',\n          tail(params),\n          join(tail(params)),\n        )) \u0026\u0026 {\n          [`grid-${kind}-${params[0]}`]: _,\n        }\n      )\n  }\n}\n\nconst border: PluginHandler = (params, { theme }, id): CSSRules | string | undefined =\u003e {\n  switch (params[0]) {\n    case 'solid':\n    case 'dashed':\n    case 'dotted':\n    case 'double':\n    case 'none':\n      return propertyValue('borderStyle')(params)\n    case 'collapse':\n    case 'separate':\n      return propertyValue('borderCollapse')(params)\n    case 'opacity':\n      return opacityProperty(params, theme, id)\n  }\n\n  return (_ = theme((id + 'Width') as 'borderWidth' | 'divideWidth', params, '' /* Optional */))\n    ? { borderWidth: _ }\n    : withOpacityFallback(\n        'borderColor',\n        id,\n        theme((id + 'Color') as 'borderColor' | 'divideColor', params) as string,\n      )\n}\n\nconst transform = (gpu?: boolean): string =\u003e\n  (gpu\n    ? 'translate3d(var(--tw-translate-x,0),var(--tw-translate-y,0),0)'\n    : 'translateX(var(--tw-translate-x,0)) translateY(var(--tw-translate-y,0))') +\n  ' rotate(var(--tw-rotate,0)) skewX(var(--tw-skew-x,0)) skewY(var(--tw-skew-y,0)) scaleX(var(--tw-scale-x,1)) scaleY(var(--tw-scale-y,1))'\n\n// .scale-0\t--scale-x: 0;\n// .scale-x-150\n// .scale-y-0\n// .translate-x-0\t--translate-x: 0;\n// .translate-x-1\t--translate-x: 0.25rem;\n// .translate-y-px\t--translate-y: 1px;\n// .translate-y-full\t--translate-y: 100%;\n// .translate-y-1/2\t--translate-y: 50%;\n// .skew-y-0\t--skew-y: 0;\n// .skew-y-1\t--skew-y: 1deg;\nconst transformXYFunction: PluginHandler = (params, context, id) =\u003e\n  params[0] \u0026\u0026\n  (_ = context.theme(id as 'scale' | 'skew' | 'translate', params[1] || params[0])) \u0026\u0026 {\n    [`--tw-${id}-x`]: params[0] !== 'y' \u0026\u0026 _,\n    [`--tw-${id}-y`]: params[0] !== 'x' \u0026\u0026 _,\n    transform: [`${id}${params[1] ? params[0].toUpperCase() : ''}(${_})`, transform()],\n  }\n\nconst edgesPluginFor = (key: 'margin' | 'padding'): PluginHandler =\u003e (params, context, id) =\u003e\n  id[1] ? edges(context.theme(key, params), id[1], key) : themeProperty(key)(params, context, id)\n\n// For p-*, px-*, pt-*\nconst padding = edgesPluginFor('padding')\n\n// For m-*, mx-*, mt-*\nconst margin = edgesPluginFor('margin')\n\n// 'min-w-full' -\u003e minWidth\n// 'max-h-0.5' -\u003e maxHeight\nconst minMax: PluginHandler = (params, { theme }, id) =\u003e\n  (_ = ({ w: 'width', h: 'height' } as Record\u003cstring, undefined | string\u003e)[params[0]]) \u0026\u0026 {\n    [(_ = `${id}${capitalize(_)}`)]: theme(\n      _ as 'minWidth' | 'minHeight' | 'maxWidth' | 'maxHeight',\n      tail(params),\n    ),\n  }\n\nconst filter: Plugin = (params, { theme }, id) =\u003e {\n  const parts = id.split('-')\n  const prefix = parts[0] == 'backdrop' ? parts[0] + '-' : ''\n  if (!prefix) {\n    params.unshift(...parts)\n  }\n\n  if (params[0] == 'filter') {\n    const filters = [\n      'blur',\n      'brightness',\n      'contrast',\n      'grayscale',\n      'hue-rotate',\n      'invert',\n      prefix \u0026\u0026 'opacity',\n      'saturate',\n      'sepia',\n      !prefix \u0026\u0026 'drop-shadow',\n    ].filter(Boolean)\n\n    return params[1] == 'none'\n      ? { [prefix + 'filter']: 'none' }\n      : filters.reduce(\n          (css, key) =\u003e {\n            css['--tw-' + prefix + key] = 'var(--tw-empty,/*!*/ /*!*/)'\n            return css\n          },\n          {\n            [prefix + 'filter']: filters.map((key) =\u003e `var(--tw-${prefix}${key})`).join(' '),\n          } as CSSRules,\n        )\n  }\n\n  $ = params.shift()\n  // hue-rotate, drop-shadow\n  if (includes(['hue', 'drop'], $)) $ += capitalize(params.shift() as string)\n\n  return (\n    (_ = theme((prefix ? 'backdrop' + capitalize($ as string) : $) as 'blur', params)) \u0026\u0026 {\n      ['--tw-' + prefix + $]: (Array.isArray(_) ? (_ as string[]) : [_])\n        .map((_) =\u003e `${hyphenate($ as string)}(${_})`)\n        .join(' '),\n    }\n  )\n}\n\nexport const corePlugins: Record\u003cstring, Plugin | undefined\u003e = {\n  group: (params, { tag }, id) =\u003e tag(join([id, ...params])),\n\n  hidden: alias(display, 'none'),\n  inline: display,\n  block: display,\n  contents: display,\n  flow: display,\n\n  table: (params, context, id) =\u003e\n    includes(['auto', 'fixed'], params[0])\n      ? { tableLayout: params[0] }\n      : display(params, context, id),\n\n  flex(params, context, id) {\n    switch (params[0]) {\n      case 'row':\n      case 'col':\n        return {\n          flexDirection: join(params[0] == 'col' ? ['column', ...tail(params)] : params),\n        }\n      case 'nowrap':\n      case 'wrap':\n        return { flexWrap: join(params) }\n      case 'grow':\n      case 'shrink':\n        _ = context.theme(\n          ('flex' + capitalize(params[0])) as 'flexGrow',\n          tail(params),\n          (params[1] || 1) as number,\n        )\n\n        return (\n          _ != null \u0026\u0026 {\n            ['flex-' + params[0]]: '' + _,\n          }\n        )\n    }\n\n    return (_ = context.theme('flex', params, '' /* Optional */))\n      ? { flex: _ }\n      : display(params, context, id)\n  },\n\n  grid(params, context, id) {\n    switch (params[0]) {\n      case 'cols':\n      case 'rows':\n        return (\n          (_ = context.theme(\n            ('gridTemplate' + capitalize(toColumnsOrRows(params[0]))) as 'gridTemplateRows',\n            tail(params),\n            params.length == 2 \u0026\u0026 Number(params[1])\n              ? `repeat(${params[1]},minmax(0,1fr))`\n              : join(tail(params)),\n          )) \u0026\u0026 {\n            ['gridTemplate-' + toColumnsOrRows(params[0])]: _,\n          }\n        )\n\n      case 'flow':\n        return (\n          params.length \u003e 1 \u0026\u0026 {\n            gridAutoFlow: join(\n              params[1] == 'col' ? ['column', ...tail(params, 2)] : tail(params),\n              ' ',\n            ),\n          }\n        )\n    }\n\n    return display(params, context, id)\n  },\n\n  auto: (params, { theme }) =\u003e\n    includes(['cols', 'rows'], params[0]) \u0026\u0026\n    (_ = theme(\n      ('gridAuto' + capitalize(toColumnsOrRows(params[0]))) as 'gridAutoRows' | 'gridAutoColumns',\n      tail(params),\n      join(tail(params)),\n    )) \u0026\u0026 {\n      ['gridAuto-' + toColumnsOrRows(params[0])]: _,\n    },\n\n  static: position,\n  fixed: position,\n  absolute: position,\n  relative: position,\n  sticky: position,\n\n  visible: { visibility: 'visible' },\n  invisible: { visibility: 'hidden' },\n\n  antialiased: {\n    WebkitFontSmoothing: 'antialiased',\n    MozOsxFontSmoothing: 'grayscale',\n  },\n\n  'subpixel-antialiased': {\n    WebkitFontSmoothing: 'auto',\n    MozOsxFontSmoothing: 'auto',\n  },\n\n  truncate: {\n    overflow: 'hidden',\n    whiteSpace: 'nowrap',\n    textOverflow: 'ellipsis',\n  },\n\n  'sr-only': {\n    position: 'absolute',\n    width: '1px',\n    height: '1px',\n    padding: '0',\n    margin: '-1px',\n    overflow: 'hidden',\n    whiteSpace: 'nowrap',\n    clip: 'rect(0,0,0,0)',\n    borderWidth: '0',\n  },\n\n  'not-sr-only': {\n    position: 'static',\n    width: 'auto',\n    height: 'auto',\n    padding: '0',\n    margin: '0',\n    overflow: 'visible',\n    whiteSpace: 'normal',\n    clip: 'auto',\n  },\n\n  resize: (params) =\u003e ({\n    resize:\n      ({ x: 'horizontal', y: 'vertical' } as Record\u003cstring, string | undefined\u003e)[params[0]] ||\n      params[0] ||\n      'both',\n  }),\n\n  box: (params) =\u003e params[0] \u0026\u0026 { boxSizing: params[0] + '-box' },\n\n  // .appearance-none -\u003e appearance: none;\n  // .appearance-auto -\u003e appearance: auto;\n  // .appearance-menulist-button; -\u003e appearance: menulist-button;\n  // .appearance-textfield -\u003e appearance: textfield;\n  appearance: propertyValue(),\n  cursor: themePropertyFallback(),\n\n  float: propertyValue(),\n  clear: propertyValue(),\n  decoration: propertyValue('boxDecorationBreak'),\n\n  isolate: { isolation: 'isolate' },\n  isolation: propertyValue(),\n\n  'mix-blend': propertyValue('mixBlendMode'),\n\n  top: inset,\n  right: inset,\n  bottom: inset,\n  left: inset,\n\n  // 'inset-0'\n  // 'inset-1.5'\n  // 'inset-x-1.5'\n  inset: (params, { theme }) =\u003e\n    (_ = expandEdges(params[0]))\n      ? edges(theme('inset', tail(params)), params[0])\n      : (_ = theme('inset', params)) \u0026\u0026 {\n          top: _,\n          right: _,\n          bottom: _,\n          left: _,\n        },\n\n  underline: textDecoration,\n  'line-through': textDecoration,\n  'no-underline': alias(textDecoration, 'none'),\n\n  'text-underline': alias(textDecoration, 'underline'),\n  'text-no-underline': alias(textDecoration, 'none'),\n  'text-line-through': alias(textDecoration, 'line-through'),\n\n  uppercase: textTransform,\n  lowercase: textTransform,\n  capitalize: textTransform,\n\n  'normal-case': alias(textTransform, 'none'),\n  'text-normal-case': alias(textTransform, 'none'),\n\n  italic: fontStyle,\n  'not-italic': alias(fontStyle, 'normal'),\n\n  'font-italic': alias(fontStyle, 'italic'),\n  'font-not-italic': alias(fontStyle, 'normal'),\n\n  font: (params, context, id) =\u003e\n    (_ = context.theme('fontFamily', params, '' /* Optional */))\n      ? { fontFamily: _ }\n      : themeProperty('fontWeight')(params, context, id),\n\n  items: (params) =\u003e\n    params[0] \u0026\u0026 {\n      alignItems: includes(['start', 'end'], params[0]) ? 'flex-' + params[0] : join(params),\n    },\n\n  'justify-self': propertyValue(),\n  'justify-items': propertyValue(),\n  justify: contentPluginFor('justifyContent'),\n  content: contentPluginFor('alignContent'),\n  self: contentPluginFor('alignSelf'),\n\n  place: (params) =\u003e params[0] \u0026\u0026 placeHelper('place-' + params[0], tail(params)),\n\n  overscroll: (params) =\u003e\n    params[0] \u0026\u0026 {\n      ['overscrollBehavior' + (params[1] ? '-' + params[0] : '')]: params[1] || params[0],\n    },\n\n  col: gridPlugin('column'),\n  row: gridPlugin('row'),\n\n  // .duration-75\ttransition-duration: 75ms;\n  // .duration-75\ttransition-duration: 75ms;\n  duration: themeProperty('transitionDuration'),\n\n  // .delay-75\ttransition-delay: 75ms;\n  // .delay-100\ttransition-delay: 100ms;\n  delay: themeProperty('transitionDelay'),\n\n  tracking: themeProperty('letterSpacing'),\n\n  // .leading-10\tline-height: 2.5rem;\n  // .leading-none\tline-height: 1;\n  // .leading-tight\tline-height: 1.25;\n  leading: themeProperty('lineHeight'),\n\n  // .z-50\tz-index: 50;\n  // .z-auto\tz-index: auto;\n  z: themeProperty('zIndex'),\n\n  opacity: themeProperty(),\n\n  ease: themeProperty('transitionTimingFunction'),\n\n  p: padding,\n  py: padding,\n  px: padding,\n  pt: padding,\n  pr: padding,\n  pb: padding,\n  pl: padding,\n\n  m: margin,\n  my: margin,\n  mx: margin,\n  mt: margin,\n  mr: margin,\n  mb: margin,\n  ml: margin,\n\n  // .w-64\twidth: 16rem;\n  // .w-auto\twidth: auto;\n  // .w-px\twidth: 1px;\n  // .w-1/2\twidth: 50%;\n  // .w-full\twidth: 100%;\n  // .w-screen\twidth: 100vw;\n  w: themeProperty('width'),\n  h: themeProperty('height'),\n\n  min: minMax,\n  max: minMax,\n\n  fill: themeProperty(),\n\n  order: themeProperty(),\n\n  origin: themePropertyFallback('transformOrigin', ' '),\n\n  select: propertyValue('userSelect'),\n\n  'pointer-events': propertyValue(),\n\n  align: propertyValue('verticalAlign'),\n\n  whitespace: propertyValue('whiteSpace'),\n\n  'normal-nums': { fontVariantNumeric: 'normal' },\n  ordinal: fontVariantNumeric('ordinal'),\n  'slashed-zero': fontVariantNumeric('slashed-zero'),\n  'lining-nums': fontVariantNumeric('numeric-figure'),\n  'oldstyle-nums': fontVariantNumeric('numeric-figure'),\n  'proportional-nums': fontVariantNumeric('numeric-spacing'),\n  'tabular-nums': fontVariantNumeric('numeric-spacing'),\n  'diagonal-fractions': fontVariantNumeric('numeric-fraction'),\n  'stacked-fractions': fontVariantNumeric('numeric-fraction'),\n\n  // 'overflow-visible'\n  // 'overflow-x-hidden'\n  overflow: (params, context, id) =\u003e\n    includes(['ellipsis', 'clip'], params[0])\n      ? propertyValue('textOverflow')(params)\n      : params[1]\n      ? { ['overflow-' + params[0]]: params[1] }\n      : propertyValue()(params, context, id),\n\n  transform: (params) =\u003e\n    params[0] == 'none'\n      ? { transform: 'none' }\n      : {\n          '--tw-translate-x': '0',\n          '--tw-translate-y': '0',\n          '--tw-rotate': '0',\n          '--tw-skew-x': '0',\n          '--tw-skew-y': '0',\n          '--tw-scale-x': '1',\n          '--tw-scale-y': '1',\n          transform: transform(params[0] == 'gpu'),\n        },\n\n  // .rotate-0\t--transform-rotate: 0;\n  // .rotate-1\t--transform-rotate: 1deg;\n  rotate: (params, { theme }) =\u003e\n    (_ = theme('rotate', params)) \u0026\u0026 {\n      '--tw-rotate': _,\n      transform: [`rotate(${_})`, transform()],\n    },\n\n  scale: transformXYFunction,\n  translate: transformXYFunction,\n  skew: transformXYFunction,\n\n  // .gap-0\tgap: 0;\n  // .gap-1\tgap: 0.25rem;\n  // .gap-px\tgap: 1px;\n  // .gap-x-0\tcolumn-gap: 0;\n  // .gap-x-1\tcolumn-gap: 0.25rem;\n  gap: (params, context, id) =\u003e\n    (_ = ({ x: 'column', y: 'row' } as Record\u003cstring, string | undefined\u003e)[params[0]])\n      ? { [_ + 'Gap']: context.theme('gap', tail(params)) }\n      : themeProperty('gap')(params, context, id),\n\n  // .stroke-current\tstroke: currentColor;\n  // stroke-0\tstroke-width: 0;\n  // .stroke-1\tstroke-width: 1;\n  stroke: (params, context, id) =\u003e\n    (_ = context.theme('stroke', params, '' /* Optional */))\n      ? { stroke: _ }\n      : themeProperty('strokeWidth')(params, context, id),\n\n  // .outline-none\toutline: 2px solid transparent; outline-offset: 2px;\n  // .outline-white\toutline: 2px dotted white; outline-offset: 2px;\n  outline: (params, { theme }) =\u003e\n    (_ = theme('outline', params)) \u0026\u0026 {\n      outline: _[0],\n      outlineOffset: _[1],\n    },\n\n  'break-normal': {\n    wordBreak: 'normal',\n    overflowWrap: 'normal',\n  },\n  'break-words': { overflowWrap: 'break-word' },\n  'break-all': { wordBreak: 'break-all' },\n\n  text(params, { theme }, id) {\n    switch (params[0]) {\n      case 'left':\n      case 'center':\n      case 'right':\n      case 'justify':\n        return { textAlign: params[0] }\n      case 'uppercase':\n      case 'lowercase':\n      case 'capitalize':\n        return textTransform([], _, params[0])\n      case 'opacity':\n        return opacityProperty(params, theme, id)\n    }\n\n    const fontSize = theme('fontSize', params, '' /* Optional */)\n\n    if (fontSize) {\n      return typeof fontSize == 'string'\n        ? { fontSize }\n        : {\n            fontSize: fontSize[0],\n            ...(typeof fontSize[1] == 'string' ? { lineHeight: fontSize[1] } : fontSize[1]),\n          }\n    }\n\n    return withOpacityFallback('color', 'text', theme('textColor', params) as string)\n  },\n\n  // eslint-disable-next-line complexity\n  bg(params, { theme }, id) {\n    switch (params[0]) {\n      case 'fixed':\n      case 'local':\n      case 'scroll':\n        return propertyValue('backgroundAttachment', ',')(params)\n\n      case 'bottom':\n      case 'center':\n      case 'left':\n      case 'right':\n      case 'top':\n        return propertyValue('backgroundPosition', ' ')(params)\n\n      case 'no':\n        return params[1] == 'repeat' \u0026\u0026 propertyValue('backgroundRepeat')(params)\n\n      case 'repeat':\n        return includes('xy', params[1])\n          ? propertyValue('backgroundRepeat')(params)\n          : { backgroundRepeat: params[1] || params[0] }\n\n      case 'opacity':\n        return opacityProperty(params, theme, id, 'background')\n\n      case 'clip':\n      case 'origin':\n        return (\n          params[1] \u0026\u0026 {\n            ['background-' + params[0]]: params[1] + (params[1] == 'text' ? '' : '-box'),\n          }\n        )\n\n      case 'blend':\n        return propertyValue('background-blend-mode')(tail(params))\n\n      // .bg-gradient-to-r =\u003e linear-gradient(to right, ...)\n      // .bg-gradient-to-r =\u003e linear-gradient(to right, ...)\n      case 'gradient':\n        if (params[1] == 'to' \u0026\u0026 (_ = expandEdges(params[2]))) {\n          return {\n            backgroundImage: `linear-gradient(to ${join(_, ' ')},var(--tw-gradient-stops))`,\n          }\n        }\n    }\n\n    return (_ = theme('backgroundPosition', params, '' /* Optional */))\n      ? { backgroundPosition: _ }\n      : (_ = theme('backgroundSize', params, '' /* Optional */))\n      ? { backgroundSize: _ }\n      : (_ = theme('backgroundImage', params, '' /* Optional */))\n      ? { backgroundImage: _ }\n      : withOpacityFallback('backgroundColor', 'bg', theme('backgroundColor', params) as string)\n  },\n\n  // .from-purple-400\n  from: (params, { theme }) =\u003e\n    (_ = theme('gradientColorStops', params)) \u0026\u0026 {\n      '--tw-gradient-from': _,\n      '--tw-gradient-stops': `var(--tw-gradient-from),var(--tw-gradient-to,${transparentTo(\n        _ as string,\n      )})`,\n    },\n\n  // .via-pink-500\n  via: (params, { theme }) =\u003e\n    (_ = theme('gradientColorStops', params)) \u0026\u0026 {\n      '--tw-gradient-stops': `var(--tw-gradient-from),${_},var(--tw-gradient-to,${transparentTo(\n        _ as string,\n      )})`,\n    },\n\n  // .to-red-500\n  to: (params, { theme }) =\u003e\n    (_ = theme('gradientColorStops', params)) \u0026\u0026 {\n      '--tw-gradient-to': _ as string,\n    },\n\n  // .border\tborder-width: 1px;\n  // .border-0\tborder-width: 0;\n  // .border-2\tborder-width: 2px;\n  // .border\tborder-width: 1px;\n  // .border-t\tborder-top-width: 1px;\n  // .border-t-0\tborder-top-width: 0px;\n  // .border-t-xs\n  border: (params, context, id) =\u003e\n    expandEdges(params[0])\n      ? edges(context.theme('borderWidth', tail(params)), params[0], 'border', 'width')\n      : border(params, context, id),\n\n  // .divide-x\n  // .divide-x-8\n  divide: (params, context, id) =\u003e\n    (_ =\n      reversableEdge(params, context, id, 'divideWidth', 'border', 'width') ||\n      border(params, context, id)) \u0026\u0026 {\n      '\u0026\u003e:not([hidden])~:not([hidden])': _ as CSSRules,\n    },\n\n  space: (params, context, id) =\u003e\n    (_ = reversableEdge(params, context, id, 'space', 'margin')) \u0026\u0026 {\n      '\u0026\u003e:not([hidden])~:not([hidden])': _,\n    },\n\n  placeholder: (params, { theme }, id) =\u003e\n    (_ =\n      params[0] == 'opacity'\n        ? opacityProperty(params, theme, id)\n        : withOpacityFallback(\n            'color',\n            'placeholder',\n            theme('placeholderColor', params) as string,\n          )) \u0026\u0026 {\n      '\u0026::placeholder': _,\n    },\n\n  // .shadow\tbox-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);\n  // .shadow-md\tbox-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n  // .shadow-none\tbox-shadow: none;\n  shadow: (params, { theme }) =\u003e\n    (_ = theme('boxShadow', params)) \u0026\u0026 {\n      ':global': {\n        '*': {\n          '--tw-shadow': '0 0 transparent',\n        },\n      },\n      '--tw-shadow': _ == 'none' ? '0 0 transparent' : _,\n      // Fallback first, then modern with ring-* support\n      boxShadow: [\n        _,\n        `var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)`,\n      ],\n    },\n\n  animate: (params, { theme, tag }) =\u003e {\n    if (($ = theme('animation', params))) {\n      // Try to auto inject keyframes\n      const parts = $.split(' ')\n\n      // Try to find a keyframe defintion in the theme using the first part\n      // Provide a default (__ = {}) and check if that is returned\n      if ((_ = theme('keyframes', parts[0], (__ = {}))) !== __) {\n        // Use a hashed named for the keyframes\n        return (\n          ($ = tag(parts[0])) \u0026\u0026 {\n            animation: $ + ' ' + join(tail(parts), ' '),\n            ['@keyframes ' + $]: _,\n          }\n        )\n      }\n\n      return { animation: $ }\n    }\n  },\n\n  // From theme.ringWidth\n  // .ring\n  // .ring-0\n  // .ring-inset\n  //\n  // From theme.colors\n  // .ring-current\n  // .ring-transparent\n  // .ring-gray-100\n  //\n  // From theme.opacity\n  // .ring-opacity-50\n  //\n  // From theme.ringOffsetWidth\n  // .ring-offset -\u003e 2px\n  // .ring-offset-8 -\u003e 8px\n  ring(params, { theme }, id) {\n    switch (params[0]) {\n      case 'inset':\n        return { '--tw-ring-inset': 'inset' }\n\n      case 'opacity':\n        return opacityProperty(params, theme, id)\n\n      case 'offset':\n        // Either width or color\n        return (_ = theme('ringOffsetWidth', tail(params), '' /* Optional */))\n          ? {\n              '--tw-ring-offset-width': _,\n            }\n          : {\n              '--tw-ring-offset-color': theme('ringOffsetColor', tail(params)),\n            }\n    }\n\n    // Either width or color\n    return (_ = theme('ringWidth', params, '' /* Optional */))\n      ? {\n          // A width\n          '--tw-ring-offset-shadow': `var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)`,\n          '--tw-ring-shadow': `var(--tw-ring-inset) 0 0 0 calc(${_} + var(--tw-ring-offset-width)) var(--tw-ring-color)`,\n          boxShadow: `var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)`,\n\n          ':global': {\n            '*': {\n              '--tw-ring-inset': 'var(--tw-empty,/*!*/ /*!*/)',\n              '--tw-ring-offset-width': theme('ringOffsetWidth', '', '0px'),\n              '--tw-ring-offset-color': theme('ringOffsetColor', '', '#fff'),\n              '--tw-ring-color': asRGBA(\n                theme('ringColor', '', '#93c5fd') as string,\n                'ring-opacity',\n                theme('ringOpacity', '', '0.5'),\n              ),\n              '--tw-ring-offset-shadow': '0 0 transparent',\n              '--tw-ring-shadow': '0 0 transparent',\n            },\n          },\n        }\n      : {\n          // A color\n          '--tw-ring-opacity': '1',\n          '--tw-ring-color': asRGBA(theme('ringColor', params) as string, 'ring-opacity'),\n        }\n  },\n\n  object: (params, context, id) =\u003e\n    includes(['contain', 'cover', 'fill', 'none', 'scale-down'], join(params))\n      ? { objectFit: join(params) }\n      : themePropertyFallback('objectPosition', ' ')(params, context, id),\n\n  list: (params, context, id) =\u003e\n    join(params) == 'item'\n      ? display(params, context, id)\n      : includes(['inside', 'outside'], join(params))\n      ? { listStylePosition: params[0] }\n      : themePropertyFallback('listStyleType')(params, context, id),\n\n  // .rounded\tborder-radius: 0.25rem;\n  // .rounded-5\tborder-radius: 5px;\n  // .rounded-md\tborder-radius: 0.375rem;\n  // .rounded-lg\tborder-radius: 0.5rem;\n  // .rounded-xl\tborder-radius: 0.75rem;\n  // .rounded-2xl\tborder-radius: 1rem;\n  // .rounded-3xl\tborder-radius: 1.5rem;\n  // .rounded-full\tborder-radius: 9999px;\n  // .rounded-t-none\tborder-top-left-radius: 0px; border-top-right-radius: 0px;\n  // .rounded-t-4\tborder-radius: 4px;\n  rounded: (params, context, id) =\u003e\n    corners(\n      context.theme('borderRadius', tail(params), '' /* Optional */),\n      params[0],\n      'border',\n      'radius',\n    ) || themeProperty('borderRadius')(params, context, id),\n\n  'transition-none': { transitionProperty: 'none' },\n\n  transition: (params, { theme }) =\u003e ({\n    transitionProperty: theme('transitionProperty', params),\n    transitionTimingFunction: theme('transitionTimingFunction', ''),\n    transitionDuration: theme('transitionDuration', ''),\n  }),\n\n  container: (params, { theme }) =\u003e {\n    const { screens = theme('screens'), center, padding } = theme('container') as ThemeContainer\n\n    const paddingFor = (screen: string): CSSRules =\u003e\n      (_ = padding \u0026\u0026 (typeof padding == 'string' ? padding : padding[screen] || padding.DEFAULT))\n        ? {\n            paddingRight: _,\n            paddingLeft: _,\n          }\n        : {}\n\n    return Object.keys(screens).reduce(\n      (rules, screen) =\u003e {\n        if (($ = screens[screen]) \u0026\u0026 typeof $ == 'string') {\n          rules[buildMediaQuery($)] = {\n            '\u0026': {\n              'max-width': $,\n              ...paddingFor(screen),\n            },\n          }\n        }\n\n        return rules\n      },\n      {\n        width: '100%',\n        ...(center ? { marginRight: 'auto', marginLeft: 'auto' } : {}),\n        ...paddingFor('xs'),\n      } as CSSRules,\n    )\n  },\n\n  filter,\n  blur: filter,\n  brightness: filter,\n  contrast: filter,\n  grayscale: filter,\n  'hue-rotate': filter,\n  invert: filter,\n  saturate: filter,\n  sepia: filter,\n  'drop-shadow': filter,\n  backdrop: filter,\n}\n\n/* eslint-enable no-return-assign, no-cond-assign, @typescript-eslint/consistent-type-assertions */\n","// Source: https://github.com/sindresorhus/modern-normalize/blob/master/modern-normalize.css\n// License: MIT\n\n// Source: https://github.com/tailwindlabs/tailwindcss/blob/master/src/plugins/css/preflight.css\n// License: MIT\n\nimport type { CSSRules, ThemeResolver } from '../types'\n\n/**\n * Manually forked from SUIT CSS Base: https://github.com/suitcss/base\n * A thin layer on top of normalize.css that provides a starting point more\n * suitable for web applications.\n */\nexport const createPreflight = (theme: ThemeResolver): CSSRules =\u003e ({\n  /**\n   * Use a more readable tab size (opinionated).\n   */\n  ':root': { tabSize: 4 },\n\n  /**\n   * Removes the default spacing and border for appropriate elements.\n   */\n  'body,blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre,fieldset,ol,ul': { margin: '0' },\n\n  button: { backgroundColor: 'transparent', backgroundImage: 'none' },\n\n  /**\n   * Correct the inability to style clickable types in iOS and Safari.\n   */\n  'button,[type=\"button\"],[type=\"reset\"],[type=\"submit\"]': { WebkitAppearance: 'button' },\n\n  /**\n   * Work around a Firefox/IE bug where the transparent `button` background\n   * results in a loss of the default `button` focus styles.\n   */\n  'button:focus': { outline: ['1px dotted', '5px auto -webkit-focus-ring-color'] },\n\n  /**\n   * Remove the padding so developers are not caught out when they zero out 'fieldset' elements in all browsers.\n   */\n  'fieldset,ol,ul,legend': { padding: '0' },\n\n  'ol,ul': { listStyle: 'none' },\n\n  /**\n   * 1. Use Tailwind's default \"normal\" line-height so the user isn't forced\n   *    to override it to ensure consistency even when using the default theme.\n   * 2. Prevent adjustments of font size after orientation changes in iOS.\n   * 3. Use the user's configured `sans` font-family (with Tailwind's default\n   *    sans-serif font stack as a fallback) as a sane default.\n   */\n  html: {\n    lineHeight: '1.5',\n    WebkitTextSizeAdjust: '100%',\n    fontFamily: theme('fontFamily.sans', 'ui-sans-serif,system-ui,sans-serif'),\n  },\n\n  /**\n   * 1. Remove the margin in all browsers.\n   * 2. Inherit font-family and line-height from `html` so users can set them as\n   * a class directly on the `html` element.\n   */\n  body: { fontFamily: 'inherit', lineHeight: 'inherit' },\n\n  /**\n   * 1. Prevent padding and border from affecting element width.\n   *\n   *    We used to set this in the html element and inherit from\n   *    the parent element for everything else. This caused issues\n   *    in shadow-dom-enhanced elements like \u003cdetails\u003e where the content\n   *    is wrapped by a div with box-sizing set to `content-box`.\n   *\n   *    https://github.com/mozdevs/cssremedy/issues/4\n   *\n   *\n   * 2. Allow adding a border to an element by just adding a border-width.\n   *\n   *    By default, the way the browser specifies that an element should have no\n   *    border is by setting it's border-style to `none` in the user-agent\n   *    stylesheet.\n   *\n   *    In order to easily add borders to elements by just setting the `border-width`\n   *    property, we change the default border-style for all elements to `solid`, and\n   *    use border-width to hide them instead. This way our `border` utilities only\n   *    need to set the `border-width` property instead of the entire `border`\n   *    shorthand, making our border utilities much more straightforward to compose.\n   *\n   *    https://github.com/tailwindcss/tailwindcss/pull/116\n   */\n  '*,::before,::after': {\n    boxSizing: 'border-box',\n    border: `0 solid ${theme('borderColor.DEFAULT', 'currentColor')}`,\n  },\n\n  /*\n   * 1. Add the correct height in Firefox.\n   * 2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n   * 3. Ensure horizontal rules are visible by default\n   */\n  hr: { height: '0', color: 'inherit', borderTopWidth: '1px' },\n\n  /**\n   * Undo the `border-style: none` reset that Normalize applies to images so that\n   * our `border-\u003cwidth\u003e` utilities have the expected effect.\n   *\n   * The Normalize reset is unnecessary for us since we default the border-width\n   * to 0 on all elements.\n   *\n   * https://github.com/tailwindcss/tailwindcss/issues/362\n   */\n  img: { borderStyle: 'solid' },\n\n  textarea: { resize: 'vertical' },\n\n  'input::placeholder,textarea::placeholder': {\n    opacity: '1',\n    color: theme('placeholderColor.DEFAULT', theme('colors.gray.400', '#a1a1aa')),\n  },\n\n  'button,[role=\"button\"]': { cursor: 'pointer' },\n\n  /**\n   * 1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n   * 2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n   */\n  table: { textIndent: '0', borderColor: 'inherit', borderCollapse: 'collapse' },\n\n  'h1,h2,h3,h4,h5,h6': { fontSize: 'inherit', fontWeight: 'inherit' },\n\n  /**\n   * Reset links to optimize for opt-in styling instead of\n   * opt-out.\n   */\n  a: { color: 'inherit', textDecoration: 'inherit' },\n\n  /**\n   * 1. Change the font styles in all browsers.\n   * 2. Remove the margin in Firefox and Safari.\n   * Reset form element properties that are easy to forget to\n   * style explicitly so you don't inadvertently introduce\n   * styles that deviate from your design system. These styles\n   * supplement a partial reset that is already applied by\n   * normalize.css.\n   */\n  'button,input,optgroup,select,textarea': {\n    fontFamily: 'inherit',\n    fontSize: '100%',\n    margin: '0',\n    padding: '0',\n    lineHeight: 'inherit',\n    color: 'inherit',\n  },\n\n  /**\n   * Remove the inheritance of text transform in Edge and Firefox.\n   * 1. Remove the inheritance of text transform in Firefox.\n   */\n  'button,select': { textTransform: 'none' },\n\n  /**\n   * Remove the inner border and padding in Firefox.\n   */\n  '::-moz-focus-inner': { borderStyle: 'none', padding: '0' },\n\n  /**\n   * Restore the focus styles unset by the previous rule.\n   */\n  ':-moz-focusring': { outline: '1px dotted ButtonText' },\n\n  /**\n   * Remove the additional ':invalid' styles in Firefox.\n   * See: https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737\n   */\n  ':-moz-ui-invalid': { boxShadow: 'none' },\n\n  /**\n   * Add the correct vertical alignment in Chrome and Firefox.\n   */\n  progress: { verticalAlign: 'baseline' },\n\n  /**\n   * Correct the cursor style of increment and decrement buttons in Safari.\n   */\n  '::-webkit-inner-spin-button,::-webkit-outer-spin-button': { height: 'auto' },\n\n  /**\n   * 1. Correct the odd appearance in Chrome and Safari.\n   * 2. Correct the outline style in Safari.\n   */\n  '[type=\"search\"]': { WebkitAppearance: 'textfield', outlineOffset: '-2px' },\n\n  /**\n   * Remove the inner padding in Chrome and Safari on macOS.\n   */\n  '::-webkit-search-decoration': { WebkitAppearance: 'none' },\n\n  /**\n   * 1. Correct the inability to style clickable types in iOS and Safari.\n   * 2. Change font properties to 'inherit' in Safari.\n   */\n  '::-webkit-file-upload-button': { WebkitAppearance: 'button', font: 'inherit' },\n\n  /*\n   * Add the correct display in Chrome and Safari.\n   */\n  summary: { display: 'list-item' },\n\n  /**\n   * Add the correct text decoration in Chrome, Edge, and Safari.\n   */\n  'abbr[title]': { textDecoration: 'underline dotted' },\n\n  /**\n   * Add the correct font weight in Edge and Safari.\n   */\n  'b,strong': { fontWeight: 'bolder' },\n\n  /**\n   * 1. Use the configured 'mono' font family for elements that\n   * are expected to be rendered with a monospace font, falling\n   * back to the system monospace stack if there is no configured\n   * 'mono' font family.\n   * 2. Correct the odd 'em' font sizing in all browsers.\n   */\n  'pre,code,kbd,samp': {\n    fontFamily: theme('fontFamily', 'mono', 'ui-monospace,monospace'),\n    fontSize: '1em',\n  },\n\n  /**\n   * Prevent 'sub' and 'sup' elements from affecting the line height in all browsers.\n   */\n  'sub,sup': { fontSize: '75%', lineHeight: '0', position: 'relative', verticalAlign: 'baseline' },\n\n  sub: { bottom: '-0.25em' },\n\n  sup: { top: '-0.5em' },\n\n  /**\n   * Make replaced elements `display: block` by default as that's\n   * the behavior you want almost all of the time. Inspired by\n   * CSS Remedy, with `svg` added as well.\n   *\n   * https://github.com/mozdevs/cssremedy/issues/14\n   */\n  'img,svg,video,canvas,audio,iframe,embed,object': { display: 'block', verticalAlign: 'middle' },\n\n  /**\n   * Constrain images and videos to the parent width and preserve\n   * their instrinsic aspect ratio.\n   *\n   * https://github.com/mozdevs/cssremedy/issues/14\n   */\n  'img,video': { maxWidth: '100%', height: 'auto' },\n})\n","export const coreVariants: Record\u003cstring, string\u003e = {\n  dark: '@media (prefers-color-scheme:dark)',\n  sticky: '@supports ((position: -webkit-sticky) or (position:sticky))',\n  'motion-reduce': '@media (prefers-reduced-motion:reduce)',\n  'motion-safe': '@media (prefers-reduced-motion:no-preference)',\n  first: '\u0026:first-child',\n  last: '\u0026:last-child',\n  even: '\u0026:nth-child(2n)',\n  odd: '\u0026:nth-child(odd)',\n  children: '\u0026\u003e*',\n  siblings: '\u0026~*',\n  sibling: '\u0026+*',\n  override: '\u0026\u0026',\n}\n","export const STYLE_ELEMENT_ID = '__twind' as const\n\ndeclare global {\n  interface Window {\n    [STYLE_ELEMENT_ID]?: HTMLStyleElement\n  }\n}\n\nexport const getStyleElement = (nonce?: string): HTMLStyleElement =\u003e {\n  // Hydrate existing style element if available\n  // self[id] - every element with an id is available through the global object\n  // eslint-disable-next-line no-restricted-globals\n  let element = self[STYLE_ELEMENT_ID]\n\n  if (!element) {\n    // Create a new one otherwise\n    element = document.head.appendChild(document.createElement('style'))\n\n    element.id = STYLE_ELEMENT_ID\n    nonce \u0026\u0026 (element.nonce = nonce)\n\n    // Avoid Edge bug where empty style elements doesn't create sheets\n    element.appendChild(document.createTextNode(''))\n  }\n\n  return element\n}\n","// Based on https://github.com/kripod/otion/blob/main/packages/otion/src/injectors.ts\n// License MIT\nimport type { SheetConfig, Sheet } from '../types'\nimport { noop } from '../internal/util'\nimport { getStyleElement } from '../internal/dom'\n\n/**\n * Creates an sheet which inserts style rules through the CSS Object Model.\n */\nexport const cssomSheet = ({\n  nonce,\n  target = getStyleElement(nonce).sheet as CSSStyleSheet,\n}: SheetConfig\u003cCSSStyleSheet\u003e = {}): Sheet\u003cCSSStyleSheet\u003e =\u003e {\n  const offset = target.cssRules.length\n\n  return {\n    target,\n    insert: (rule, index) =\u003e target.insertRule(rule, offset + index),\n  }\n}\n\n/**\n * An sheet placeholder which performs no operations. Useful for avoiding errors in a non-browser environment.\n */\nexport const voidSheet = (): Sheet\u003cnull\u003e =\u003e ({\n  target: null,\n  insert: noop,\n})\n","import type { Mode } from '../types'\n\nimport { join, noop } from '../internal/util'\n\nexport const mode = (report: (message: string) =\u003e void): Mode =\u003e ({\n  unknown(section, key = [], optional, context) {\n    if (!optional) {\n      // TODO hint about possible values, did you mean ...\n      this.report({ id: 'UNKNOWN_THEME_VALUE', key: section + '.' + join(key) }, context)\n    }\n  },\n\n  report({ id, ...info }) {\n    return report(`[${id}] ${JSON.stringify(info)}`)\n  },\n})\n\nexport const warn = /*#__PURE__*/ mode((message) =\u003e console.warn(message))\n\nexport const strict = /*#__PURE__*/ mode((message) =\u003e {\n  throw new Error(message)\n})\n\nexport const silent = /*#__PURE__*/ mode(noop)\n","import type { Prefixer } from '../types'\n\nimport { cssPropertyAlias, cssPropertyPrefixFlags, cssValuePrefixFlags } from 'style-vendorizer'\n\nexport const noprefix: Prefixer = (property: string, value: string, important?: boolean): string =\u003e\n  `${property}:${value}${important ? ' !important' : ''}`\n\nexport const autoprefix: Prefixer = (\n  property: string,\n  value: string,\n  important?: boolean,\n): string =\u003e {\n  let cssText = ''\n\n  // Resolve aliases, e.g. `gap` -\u003e `grid-gap`\n  const propertyAlias = cssPropertyAlias(property)\n  if (propertyAlias) cssText += `${noprefix(propertyAlias, value, important)};`\n\n  // Prefix properties, e.g. `backdrop-filter` -\u003e `-webkit-backdrop-filter`\n  let flags = cssPropertyPrefixFlags(property)\n  if (flags \u0026 0b001) cssText += `-webkit-${noprefix(property, value, important)};`\n  if (flags \u0026 0b010) cssText += `-moz-${noprefix(property, value, important)};`\n  if (flags \u0026 0b100) cssText += `-ms-${noprefix(property, value, important)};`\n\n  // Prefix values, e.g. `position: \"sticky\"` -\u003e `position: \"-webkit-sticky\"`\n  // Notice that flags don't overlap and property prefixing isn't needed here\n  flags = cssValuePrefixFlags(property, value)\n  if (flags \u0026 0b001) cssText += `${noprefix(property, `-webkit-${value}`, important)};`\n  if (flags \u0026 0b010) cssText += `${noprefix(property, `-moz-${value}`, important)};`\n  if (flags \u0026 0b100) cssText += `${noprefix(property, `-ms-${value}`, important)};`\n\n  /* Include the standardized declaration last */\n  /* https://css-tricks.com/ordering-css3-properties/ */\n  cssText += noprefix(property, value, important)\n\n  return cssText\n}\n","import type {\n  Theme,\n  ThemeColor,\n  ThemeConfiguration,\n  ThemeResolver,\n  ThemeSectionType,\n  ThemeSectionResolver,\n  ThemeSectionResolverContext,\n  ThemeHelper,\n  Context,\n} from '../types'\n\nimport { join, tail, includes } from '../internal/util'\nimport { directive } from './directive'\n\n// '1/2': '50%',\n// '1/3': '33.333333%',\n// '2/3': '66.666667%',\n// '1/4': '25%',\n// '2/4': '50%',\n// '3/4': '75%',\n// '1/5': '20%',\n// '2/5': '40%',\n// '3/5': '60%',\n// '4/5': '80%',\n// '1/6': '16.666667%',\n// '2/6': '33.333333%',\n// '3/6': '50%',\n// '4/6': '66.666667%',\n// '5/6': '83.333333%',\nconst ratios = (start: number, end: number): Record\u003cstring, string\u003e =\u003e {\n  const result: Record\u003cstring, string\u003e = {}\n\n  do {\n    for (let dividend = 1; dividend \u003c start; dividend++) {\n      // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n      result[`${dividend}/${start}`] = Number(((dividend / start) * 100).toFixed(6)) + '%'\n    }\n  } while (++start \u003c= end)\n\n  return result\n}\n\n// 0: '0px',\n// 2: '2px',\n// 4: '4px',\n// 8: '8px',\nconst exponential = (stop: number, unit: string, start = 0): Record\u003cstring, string\u003e =\u003e {\n  const result: Record\u003cstring, string\u003e = {}\n\n  for (; start \u003c= stop; start = start * 2 || 1) {\n    // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n    result[start] = start + unit\n  }\n\n  return result\n}\n\n// 3: '.75rem',\n// 4: '1rem',\n// 5: '1.25rem',\n// 6: '1.5rem',\n// 7: '1.75rem',\n// 8: '2rem',\n// 9: '2.25rem',\n// 10: '2.5rem',\nconst linear = (\n  stop: number,\n  unit = '',\n  divideBy = 1,\n  start = 0,\n  step = 1,\n  result: Record\u003cstring, string\u003e = {},\n  // eslint-disable-next-line max-params\n): Record\u003cstring, string\u003e =\u003e {\n  for (; start \u003c= stop; start += step) {\n    // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n    result[start] = start / divideBy + unit\n  }\n\n  return result\n}\n\nconst alias = \u003cSection extends keyof Theme\u003e(\n  section: Section,\n): ThemeSectionResolver\u003cThemeSectionType\u003cTheme[Section]\u003e\u003e =\u003e (theme) =\u003e theme(section)\n\nconst themeFactory = (args: Parameters\u003cThemeResolver\u003e, { theme }: Context) =\u003e theme(...args)\n\nexport const theme = ((...args: Parameters\u003cThemeResolver\u003e): ReturnType\u003cThemeHelper\u003e =\u003e\n  directive(themeFactory, args)) as ThemeHelper\n\nconst defaultTheme: Partial\u003cTheme\u003e = /*#__PURE__*/ {\n  screens: {\n    sm: '640px',\n    md: '768px',\n    lg: '1024px',\n    xl: '1280px',\n    '2xl': '1536px',\n  },\n  colors: {\n    transparent: 'transparent',\n    current: 'currentColor',\n\n    // black: colors.black,\n    black: '#000',\n\n    // white: colors.white,\n    white: '#fff',\n\n    // gray: colors.coolGray,\n    gray: {\n      50: '#f9fafb',\n      100: '#f3f4f6',\n      200: '#e5e7eb',\n      300: '#d1d5db',\n      400: '#9ca3af',\n      500: '#6b7280',\n      600: '#4b5563',\n      700: '#374151',\n      800: '#1f2937',\n      900: '#111827',\n    },\n\n    // red: colors.red,\n    red: {\n      50: '#fef2f2',\n      100: '#fee2e2',\n      200: '#fecaca',\n      300: '#fca5a5',\n      400: '#f87171',\n      500: '#ef4444',\n      600: '#dc2626',\n      700: '#b91c1c',\n      800: '#991b1b',\n      900: '#7f1d1d',\n    },\n\n    // yellow: colors.amber,\n    yellow: {\n      50: '#fffbeb',\n      100: '#fef3c7',\n      200: '#fde68a',\n      300: '#fcd34d',\n      400: '#fbbf24',\n      500: '#f59e0b',\n      600: '#d97706',\n      700: '#b45309',\n      800: '#92400e',\n      900: '#78350f',\n    },\n\n    // green: colors.emerald,\n    green: {\n      50: '#ecfdf5',\n      100: '#d1fae5',\n      200: '#a7f3d0',\n      300: '#6ee7b7',\n      400: '#34d399',\n      500: '#10b981',\n      600: '#059669',\n      700: '#047857',\n      800: '#065f46',\n      900: '#064e3b',\n    },\n\n    // blue: colors.blue,\n    blue: {\n      50: '#eff6ff',\n      100: '#dbeafe',\n      200: '#bfdbfe',\n      300: '#93c5fd',\n      400: '#60a5fa',\n      500: '#3b82f6',\n      600: '#2563eb',\n      700: '#1d4ed8',\n      800: '#1e40af',\n      900: '#1e3a8a',\n    },\n\n    // indigo: colors.indigo,\n    indigo: {\n      50: '#eef2ff',\n      100: '#e0e7ff',\n      200: '#c7d2fe',\n      300: '#a5b4fc',\n      400: '#818cf8',\n      500: '#6366f1',\n      600: '#4f46e5',\n      700: '#4338ca',\n      800: '#3730a3',\n      900: '#312e81',\n    },\n\n    // purple: colors.violet,\n    purple: {\n      50: '#f5f3ff',\n      100: '#ede9fe',\n      200: '#ddd6fe',\n      300: '#c4b5fd',\n      400: '#a78bfa',\n      500: '#8b5cf6',\n      600: '#7c3aed',\n      700: '#6d28d9',\n      800: '#5b21b6',\n      900: '#4c1d95',\n    },\n\n    // pink: colors.pink,\n    pink: {\n      50: '#fdf2f8',\n      100: '#fce7f3',\n      200: '#fbcfe8',\n      300: '#f9a8d4',\n      400: '#f472b6',\n      500: '#ec4899',\n      600: '#db2777',\n      700: '#be185d',\n      800: '#9d174d',\n      900: '#831843',\n    },\n  },\n\n  spacing: {\n    px: '1px',\n    0: '0px',\n    .../*#__PURE__*/ linear(4, 'rem', 4, 0.5, 0.5),\n    // 0.5: '0.125rem',\n    // 1: '0.25rem',\n    // 1.5: '0.375rem',\n    // 2: '0.5rem',\n    // 2.5: '0.625rem',\n    // 3: '0.75rem',\n    // 3.5: '0.875rem',\n    // 4: '1rem',\n    .../*#__PURE__*/ linear(12, 'rem', 4, 5),\n    // 5: '1.25rem',\n    // 6: '1.5rem',\n    // 7: '1.75rem',\n    // 8: '2rem',\n    // 9: '2.25rem',\n    // 10: '2.5rem',\n    // 11: '2.75rem',\n    // 12: '3rem',\n    14: '3.5rem',\n    .../*#__PURE__*/ linear(64, 'rem', 4, 16, 4),\n    // 16: '4rem',\n    // 20: '5rem',\n    // 24: '6rem',\n    // 28: '7rem',\n    // 32: '8rem',\n    // 36: '9rem',\n    // 40: '10rem',\n    // 44: '11rem',\n    // 48: '12rem',\n    // 52: '13rem',\n    // 56: '14rem',\n    // 60: '15rem',\n    // 64: '16rem',\n    72: '18rem',\n    80: '20rem',\n    96: '24rem',\n  },\n\n  durations: {\n    75: '75ms',\n    100: '100ms',\n    150: '150ms',\n    200: '200ms',\n    300: '300ms',\n    500: '500ms',\n    700: '700ms',\n    1000: '1000ms',\n  },\n\n  animation: {\n    none: 'none',\n    spin: 'spin 1s linear infinite',\n    ping: 'ping 1s cubic-bezier(0, 0, 0.2, 1) infinite',\n    pulse: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite',\n    bounce: 'bounce 1s infinite',\n  },\n\n  backdropBlur: /*#__PURE__*/ alias('blur'),\n  backdropBrightness: /*#__PURE__*/ alias('brightness'),\n  backdropContrast: /*#__PURE__*/ alias('contrast'),\n  backdropGrayscale: /*#__PURE__*/ alias('grayscale'),\n  backdropHueRotate: /*#__PURE__*/ alias('hueRotate'),\n  backdropInvert: /*#__PURE__*/ alias('invert'),\n  backdropOpacity: /*#__PURE__*/ alias('opacity'),\n  backdropSaturate: /*#__PURE__*/ alias('saturate'),\n  backdropSepia: /*#__PURE__*/ alias('sepia'),\n\n  backgroundColor: /*#__PURE__*/ alias('colors'),\n  backgroundImage: {\n    none: 'none',\n    // These are built-in\n    // 'gradient-to-t': 'linear-gradient(to top, var(--tw-gradient-stops))',\n    // 'gradient-to-tr': 'linear-gradient(to top right, var(--tw-gradient-stops))',\n    // 'gradient-to-r': 'linear-gradient(to right, var(--tw-gradient-stops))',\n    // 'gradient-to-br': 'linear-gradient(to bottom right, var(--tw-gradient-stops))',\n    // 'gradient-to-b': 'linear-gradient(to bottom, var(--tw-gradient-stops))',\n    // 'gradient-to-bl': 'linear-gradient(to bottom left, var(--tw-gradient-stops))',\n    // 'gradient-to-l': 'linear-gradient(to left, var(--tw-gradient-stops))',\n    // 'gradient-to-tl': 'linear-gradient(to top left, var(--tw-gradient-stops))',\n  },\n  backgroundOpacity: /*#__PURE__*/ alias('opacity'),\n  // backgroundPosition: {\n  //   // The following are already handled by the plugin:\n  //   // center, right, left, bottom, top\n  //   // 'bottom-10px-right-20px' -\u003e bottom 10px right 20px\n  // },\n  backgroundSize: {\n    auto: 'auto',\n    cover: 'cover',\n    contain: 'contain',\n  },\n  blur: {\n    0: '0',\n    sm: '4px',\n    DEFAULT: '8px',\n    md: '12px',\n    lg: '16px',\n    xl: '24px',\n    '2xl': '40px',\n    '3xl': '64px',\n  },\n  brightness: {\n    .../*#__PURE__*/ linear(200, '', 100, 0, 50),\n    // 0: '0',\n    // 50: '.5',\n    // 150: '1.5',\n    // 200: '2',\n\n    .../*#__PURE__*/ linear(110, '', 100, 90, 5),\n    // 90: '.9',\n    // 95: '.95',\n    // 100: '1',\n    // 105: '1.05',\n    // 110: '1.1',\n    75: '0.75',\n    125: '1.25',\n  },\n  borderColor: (theme) =\u003e ({\n    ...theme('colors'),\n    DEFAULT: theme('colors.gray.200', 'currentColor'),\n  }),\n  borderOpacity: /*#__PURE__*/ alias('opacity'),\n  borderRadius: {\n    none: '0px',\n    sm: '0.125rem',\n    DEFAULT: '0.25rem',\n    md: '0.375rem',\n    lg: '0.5rem',\n    xl: '0.75rem',\n    '2xl': '1rem',\n    '3xl': '1.5rem',\n    '1/2': '50%',\n    full: '9999px',\n  },\n  borderWidth: {\n    DEFAULT: '1px',\n    .../*#__PURE__*/ exponential(8, 'px'),\n    // 0: '0px',\n    // 2: '2px',\n    // 4: '4px',\n    // 8: '8px',\n  },\n  boxShadow: {\n    sm: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',\n    DEFAULT: '0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)',\n    md: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)',\n    lg: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)',\n    xl: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)',\n    '2xl': '0 25px 50px -12px rgba(0, 0, 0, 0.25)',\n    inner: 'inset 0 2px 4px 0 rgba(0, 0, 0, 0.06)',\n    none: 'none',\n  },\n  // container: {},\n  // cursor: {\n  //   // Default values are handled by plugin\n  // },\n  contrast: {\n    .../*#__PURE__*/ linear(200, '', 100, 0, 50),\n    // 0: '0',\n    // 50: '.5',\n    // 150: '1.5',\n    // 200: '2',\n    75: '0.75',\n    125: '1.25',\n  },\n  divideColor: /*#__PURE__*/ alias('borderColor'),\n  divideOpacity: /*#__PURE__*/ alias('borderOpacity'),\n  divideWidth: /*#__PURE__*/ alias('borderWidth'),\n  dropShadow: {\n    sm: '0 1px 1px rgba(0,0,0,0.05)',\n    DEFAULT: ['0 1px 2px rgba(0, 0, 0, 0.1)', '0 1px 1px rgba(0, 0, 0, 0.06)'],\n    md: ['0 4px 3px rgba(0, 0, 0, 0.07)', '0 2px 2px rgba(0, 0, 0, 0.06)'],\n    lg: ['0 10px 8px rgba(0, 0, 0, 0.04)', '0 4px 3px rgba(0, 0, 0, 0.1)'],\n    xl: ['0 20px 13px rgba(0, 0, 0, 0.03)', '0 8px 5px rgba(0, 0, 0, 0.08)'],\n    '2xl': '0 25px 25px rgba(0, 0, 0, 0.15)',\n    none: '0 0 #0000',\n  },\n  fill: { current: 'currentColor' },\n  grayscale: {\n    0: '0',\n    DEFAULT: '100%',\n  },\n  hueRotate: {\n    0: '0deg',\n    15: '15deg',\n    30: '30deg',\n    60: '60deg',\n    90: '90deg',\n    180: '180deg',\n  },\n  invert: {\n    0: '0',\n    DEFAULT: '100%',\n  },\n  flex: {\n    1: '1 1 0%',\n    auto: '1 1 auto',\n    initial: '0 1 auto',\n    none: 'none',\n  },\n  // flexGrow: {\n  //   // Handled by plugin\n  // },\n  // flexShrink: {\n  //   // Handled by plugin\n  // },\n  fontFamily: {\n    sans: 'ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\"'.split(\n      ',',\n    ),\n    serif: 'ui-serif,Georgia,Cambria,\"Times New Roman\",Times,serif'.split(','),\n    mono: 'ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace'.split(\n      ',',\n    ),\n  },\n  fontSize: {\n    xs: ['0.75rem', '1rem'],\n    sm: ['0.875rem', '1.25rem'],\n    base: ['1rem', '1.5rem'],\n    lg: ['1.125rem', '1.75rem'],\n    xl: ['1.25rem', '1.75rem'],\n    '2xl': ['1.5rem', '2rem'],\n    '3xl': ['1.875rem', '2.25rem'],\n    '4xl': ['2.25rem', '2.5rem'],\n    '5xl': ['3rem', '1'],\n    '6xl': ['3.75rem', '1'],\n    '7xl': ['4.5rem', '1'],\n    '8xl': ['6rem', '1'],\n    '9xl': ['8rem', '1'],\n  },\n  fontWeight: {\n    thin: '100',\n    extralight: '200',\n    light: '300',\n    normal: '400',\n    medium: '500',\n    semibold: '600',\n    bold: '700',\n    extrabold: '800',\n    black: '900',\n  },\n  gridTemplateColumns: {\n    // numbers are handled by the plugin: 1 -\u003e repeat(1, minmax(0, 1fr))\n    // none: 'none', // handled by plugin\n  },\n  gridTemplateRows: {\n    // numbers are handled by the plugin: 1 -\u003e repeat(1, minmax(0, 1fr))\n    // none: 'none', // handled by plugin\n  },\n  gridAutoColumns: {\n    // auto: 'auto', // handled by plugin\n    min: 'min-content',\n    max: 'max-content',\n    fr: 'minmax(0,1fr)',\n  },\n  gridAutoRows: {\n    // auto: 'auto', handled by plugin\n    min: 'min-content',\n    max: 'max-content',\n    fr: 'minmax(0,1fr)',\n  },\n  // gridColumnStart: {\n  //   // Defaults handled by plugin\n  // },\n  // gridRowStart: {\n  //   // Defaults handled by plugin\n  // },\n  // gridColumnEnd: {\n  //   // Defaults handled by plugin\n  // },\n  // gridRowEnd: {\n  //   // Defaults handled by plugin\n  // },\n  gridColumn: {\n    // span-X is handled by the plugin: span-1 -\u003e span 1 / span 1\n    auto: 'auto',\n    'span-full': '1 / -1',\n  },\n  gridRow: {\n    // span-X is handled by the plugin: span-1 -\u003e span 1 / span 1\n    auto: 'auto',\n    'span-full': '1 / -1',\n  },\n  gap: /*#__PURE__*/ alias('spacing'),\n  gradientColorStops: /*#__PURE__*/ alias('colors'),\n  height: (theme) =\u003e ({\n    auto: 'auto',\n    ...theme('spacing'),\n    ...ratios(2, 6),\n    // '1/2': '50%',\n    // '1/3': '33.333333%',\n    // '2/3': '66.666667%',\n    // '1/4': '25%',\n    // '2/4': '50%',\n    // '3/4': '75%',\n    // '1/5': '20%',\n    // '2/5': '40%',\n    // '3/5': '60%',\n    // '4/5': '80%',\n    // '1/6': '16.666667%',\n    // '2/6': '33.333333%',\n    // '3/6': '50%',\n    // '4/6': '66.666667%',\n    // '5/6': '83.333333%',\n    full: '100%',\n    screen: '100vh',\n  }),\n  inset: (theme) =\u003e ({\n    auto: 'auto',\n    ...theme('spacing'),\n    ...ratios(2, 4),\n    // '1/2': '50%',\n    // '1/3': '33.333333%',\n    // '2/3': '66.666667%',\n    // '1/4': '25%',\n    // '2/4': '50%',\n    // '3/4': '75%',\n    full: '100%',\n  }),\n  keyframes: {\n    spin: {\n      from: {\n        transform: 'rotate(0deg)',\n      },\n      to: {\n        transform: 'rotate(360deg)',\n      },\n    },\n    ping: {\n      '0%': {\n        transform: 'scale(1)',\n        opacity: '1',\n      },\n      '75%,100%': {\n        transform: 'scale(2)',\n        opacity: '0',\n      },\n    },\n    pulse: {\n      '0%,100%': {\n        opacity: '1',\n      },\n      '50%': {\n        opacity: '.5',\n      },\n    },\n    bounce: {\n      '0%, 100%': {\n        transform: 'translateY(-25%)',\n        animationTimingFunction: 'cubic-bezier(0.8,0,1,1)',\n      },\n      '50%': {\n        transform: 'none',\n        animationTimingFunction: 'cubic-bezier(0,0,0.2,1)',\n      },\n    },\n  },\n  letterSpacing: {\n    tighter: '-0.05em',\n    tight: '-0.025em',\n    normal: '0em',\n    wide: '0.025em',\n    wider: '0.05em',\n    widest: '0.1em',\n  },\n  lineHeight: {\n    none: '1',\n    tight: '1.25',\n    snug: '1.375',\n    normal: '1.5',\n    relaxed: '1.625',\n    loose: '2',\n    .../*#__PURE__*/ linear(10, 'rem', 4, 3),\n    // 3: '.75rem',\n    // 4: '1rem',\n    // 5: '1.25rem',\n    // 6: '1.5rem',\n    // 7: '1.75rem',\n    // 8: '2rem',\n    // 9: '2.25rem',\n    // 10: '2.5rem',\n  },\n  // listStyleType: {\n  //   // Defaults handled by plugin\n  // },\n  margin: (theme) =\u003e ({\n    auto: 'auto',\n    ...theme('spacing'),\n  }),\n  maxHeight: (theme) =\u003e ({\n    ...theme('spacing'),\n    full: '100%',\n    screen: '100vh',\n  }),\n  maxWidth: (theme, { breakpoints }) =\u003e ({\n    none: 'none',\n    0: '0rem',\n    xs: '20rem',\n    sm: '24rem',\n    md: '28rem',\n    lg: '32rem',\n    xl: '36rem',\n    '2xl': '42rem',\n    '3xl': '48rem',\n    '4xl': '56rem',\n    '5xl': '64rem',\n    '6xl': '72rem',\n    '7xl': '80rem',\n    full: '100%',\n    min: 'min-content',\n    max: 'max-content',\n    prose: '65ch',\n    ...breakpoints(theme('screens')),\n  }),\n  minHeight: {\n    0: '0px',\n    full: '100%',\n    screen: '100vh',\n  },\n  minWidth: {\n    0: '0px',\n    full: '100%',\n    min: 'min-content',\n    max: 'max-content',\n  },\n  // objectPosition: {\n  //   // The plugins joins all arguments by default\n  // },\n  opacity: {\n    .../*#__PURE__*/ linear(100, '', 100, 0, 10),\n    // 0: '0',\n    // 10: '0.1',\n    // 20: '0.2',\n    // 30: '0.3',\n    // 40: '0.4',\n    // 60: '0.6',\n    // 70: '0.7',\n    // 80: '0.8',\n    // 90: '0.9',\n    // 100: '1',\n    5: '0.05',\n    25: '0.25',\n    75: '0.75',\n    95: '0.95',\n  },\n  order: {\n    first: '-9999',\n    last: '9999',\n    none: '0',\n    .../*#__PURE__*/ linear(12, '', 1, 1),\n    // 1: '1',\n    // 2: '2',\n    // 3: '3',\n    // 4: '4',\n    // 5: '5',\n    // 6: '6',\n    // 7: '7',\n    // 8: '8',\n    // 9: '9',\n    // 10: '10',\n    // 11: '11',\n    // 12: '12',\n  },\n  outline: {\n    none: ['2px solid transparent', '2px'],\n    white: ['2px dotted white', '2px'],\n    black: ['2px dotted black', '2px'],\n  },\n  padding: /*#__PURE__*/ alias('spacing'),\n  placeholderColor: /*#__PURE__*/ alias('colors'),\n  placeholderOpacity: /*#__PURE__*/ alias('opacity'),\n  ringColor: (theme) =\u003e ({\n    DEFAULT: theme('colors.blue.500', '#3b82f6'),\n    ...theme('colors'),\n  }),\n  ringOffsetColor: /*#__PURE__*/ alias('colors'),\n  ringOffsetWidth: /*#__PURE__*/ exponential(8, 'px'),\n  // 0: '0px',\n  // 1: '1px',\n  // 2: '2px',\n  // 4: '4px',\n  // 8: '8px',,\n  ringOpacity: (theme) =\u003e ({\n    DEFAULT: '0.5',\n    ...theme('opacity'),\n  }),\n  ringWidth: {\n    DEFAULT: '3px',\n    .../*#__PURE__*/ exponential(8, 'px'),\n    // 0: '0px',\n    // 1: '1px',\n    // 2: '2px',\n    // 4: '4px',\n    // 8: '8px',\n  },\n  rotate: {\n    .../*#__PURE__*/ exponential(2, 'deg'),\n    // 0: '0deg',\n    // 1: '1deg',\n    // 2: '2deg',\n    .../*#__PURE__*/ exponential(12, 'deg', 3),\n    // 3: '3deg',\n    // 6: '6deg',\n    // 12: '12deg',\n    .../*#__PURE__*/ exponential(180, 'deg', 45),\n    // 45: '45deg',\n    // 90: '90deg',\n    // 180: '180deg',\n  },\n  saturate: /*#__PURE__*/ linear(200, '', 100, 0, 50),\n  // 0: '0',\n  // 50: '.5',\n  // 100: '1',\n  // 150: '1.5',\n  // 200: '2',\n  scale: {\n    .../*#__PURE__*/ linear(150, '', 100, 0, 50),\n    // 0: '0',\n    // 50: '.5',\n    // 150: '1.5',\n    .../*#__PURE__*/ linear(110, '', 100, 90, 5),\n    // 90: '.9',\n    // 95: '.95',\n    // 100: '1',\n    // 105: '1.05',\n    // 110: '1.1',\n    75: '0.75',\n    125: '1.25',\n  },\n  sepia: {\n    0: '0',\n    DEFAULT: '100%',\n  },\n  skew: {\n    .../*#__PURE__*/ exponential(2, 'deg'),\n    // 0: '0deg',\n    // 1: '1deg',\n    // 2: '2deg',\n    .../*#__PURE__*/ exponential(12, 'deg', 3),\n    // 3: '3deg',\n    // 6: '6deg',\n    // 12: '12deg',\n  },\n  space: /*#__PURE__*/ alias('spacing'),\n  stroke: {\n    current: 'currentColor',\n  },\n  strokeWidth: /*#__PURE__*/ linear(2),\n  // 0: '0',\n  // 1: '1',\n  // 2: '2',,\n  textColor: /*#__PURE__*/ alias('colors'),\n  textOpacity: /*#__PURE__*/ alias('opacity'),\n  // transformOrigin: {\n  //   // The following are already handled by the plugin:\n  //   // center, right, left, bottom, top\n  //   // 'bottom-10px-right-20px' -\u003e bottom 10px right 20px\n  // },\n  transitionDuration: (theme) =\u003e ({\n    DEFAULT: '150ms',\n    ...theme('durations'),\n  }),\n  transitionDelay: /*#__PURE__*/ alias('durations'),\n  transitionProperty: {\n    none: 'none',\n    all: 'all',\n    DEFAULT:\n      'background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter',\n    colors: 'background-color,border-color,color,fill,stroke',\n    opacity: 'opacity',\n    shadow: 'box-shadow',\n    transform: 'transform',\n  },\n  transitionTimingFunction: {\n    DEFAULT: 'cubic-bezier(0.4,0,0.2,1)',\n    linear: 'linear',\n    in: 'cubic-bezier(0.4,0,1,1)',\n    out: 'cubic-bezier(0,0,0.2,1)',\n    'in-out': 'cubic-bezier(0.4,0,0.2,1)',\n  },\n  translate: (theme) =\u003e ({\n    ...theme('spacing'),\n    ...ratios(2, 4),\n    // '1/2': '50%',\n    // '1/3': '33.333333%',\n    // '2/3': '66.666667%',\n    // '1/4': '25%',\n    // '2/4': '50%',\n    // '3/4': '75%',\n    full: '100%',\n  }),\n  width: (theme) =\u003e ({\n    auto: 'auto',\n    ...theme('spacing'),\n    ...ratios(2, 6),\n    // '1/2': '50%',\n    // '1/3': '33.333333%',\n    // '2/3': '66.666667%',\n    // '1/4': '25%',\n    // '2/4': '50%',\n    // '3/4': '75%',\n    // '1/5': '20%',\n    // '2/5': '40%',\n    // '3/5': '60%',\n    // '4/5': '80%',\n    // '1/6': '16.666667%',\n    // '2/6': '33.333333%',\n    // '3/6': '50%',\n    // '4/6': '66.666667%',\n    // '5/6': '83.333333%',\n\n    ...ratios(12, 12),\n    // '1/12': '8.333333%',\n    // '2/12': '16.666667%',\n    // '3/12': '25%',\n    // '4/12': '33.333333%',\n    // '5/12': '41.666667%',\n    // '6/12': '50%',\n    // '7/12': '58.333333%',\n    // '8/12': '66.666667%',\n    // '9/12': '75%',\n    // '10/12': '83.333333%',\n    // '11/12': '91.666667%',\n\n    screen: '100vw',\n    full: '100%',\n    min: 'min-content',\n    max: 'max-content',\n  }),\n  zIndex: {\n    auto: 'auto',\n    .../*#__PURE__*/ linear(50, '', 1, 0, 10),\n    // 0: '0',\n    // 10: '10',\n    // 20: '20',\n    // 30: '30',\n    // 40: '40',\n    // 50: '50',\n  },\n}\n\n// https://github.com/tailwindlabs/tailwindcss/blob/master/src/util/flattenColorPalette.js\nconst flattenColorPalette = (\n  colors: Record\u003cstring, ThemeColor\u003e,\n  target: Record\u003cstring, ThemeColor\u003e = {},\n  prefix: string[] = [],\n): Record\u003cstring, ThemeColor\u003e =\u003e {\n  Object.keys(colors).forEach((property) =\u003e {\n    const value = colors[property]\n\n    if (property == 'DEFAULT') {\n      target[join(prefix)] = value\n      target[join(prefix, '.')] = value\n    }\n\n    const key = [...prefix, property]\n    target[join(key)] = value\n    target[join(key, '.')] = value\n\n    if (value \u0026\u0026 typeof value == 'object') {\n      flattenColorPalette(value, target, key)\n    }\n  }, target)\n\n  return target\n}\n\nconst resolveContext: ThemeSectionResolverContext = {\n  // ?negative: (source) =\u003e\n  //   Object.keys(source).reduce(\n  //     (target, key) =\u003e {\n  //       if (source[key]) target['-' + key] = '-' + (source[key] as string)\n\n  //       return target\n  //     },\n  //     { ...source },\n  //   ),\n  // Stub implementation as negated values are automatically infered and do _not_ not to be in the theme\n  negative: () =\u003e ({}),\n\n  breakpoints: (screens) =\u003e\n    Object.keys(screens)\n      .filter((key) =\u003e typeof screens[key] == 'string')\n      .reduce((target, key) =\u003e {\n        target['screen-' + key] = screens[key] as string\n\n        return target\n      }, {} as Record\u003cstring, string | undefined\u003e),\n}\n\nconst handleArbitraryValues = (section: keyof Theme, key: string): string | false =\u003e\n  (key = (key[0] == '[' \u0026\u0026 key.slice(-1) == ']' \u0026\u0026 key.slice(1, -1)) as string) \u0026\u0026\n  includes(section, 'olor') == /^(#|(hsl|rgb)a?\\(|[a-z]+$)/.test(key) \u0026\u0026\n  (includes(key, 'calc(')\n    ? key.replace(/(-?\\d*\\.?\\d(?!\\b-.+[,)](?![^+\\-/*])\\D)(?:%|[a-z]+)?|\\))([+\\-/*])/g, '$1 $2 ')\n    : key)\n\nexport const makeThemeResolver = (config?: ThemeConfiguration): ThemeResolver =\u003e {\n  const cache = new Map\u003ckeyof Theme, Record\u003cstring, unknown\u003e\u003e()\n\n  const theme = { ...defaultTheme, ...config }\n\n  const deref = (\n    theme: undefined | Partial\u003cTheme\u003e,\n    section: keyof Theme,\n  ): Record\u003cstring, unknown\u003e | undefined =\u003e {\n    const base = theme \u0026\u0026 theme[section]\n\n    const value = typeof base == 'function' ? base(resolve, resolveContext) : base\n\n    return value \u0026\u0026 section == 'colors'\n      ? flattenColorPalette(value as Record\u003cstring, ThemeColor\u003e)\n      : (value as Record\u003cstring, unknown\u003e)\n  }\n\n  const resolve = ((section: keyof Theme, key: unknown, defaultValue: unknown): unknown =\u003e {\n    const keypath = section.split('.')\n    section = keypath[0] as keyof Theme\n\n    // theme('colors.gray.500', maybeDefault)\n    if (keypath.length \u003e 1) {\n      defaultValue = key\n      key = join(tail(keypath), '.')\n    }\n    // else: theme('colors', 'gray.500', maybeDefault)\n\n    let base = cache.get(section)\n\n    if (!base) {\n      // Stacked resolution to allow referencing the same section from core theme with extend\n      cache.set(section, (base = { ...deref(theme, section) }))\n\n      Object.assign(base, deref(theme.extend, section))\n    }\n\n    if (key != null) {\n      key = (Array.isArray(key) ? join(key) : (key as string)) || 'DEFAULT'\n\n      const value: unknown = handleArbitraryValues(section, key as string) || base[key as string]\n\n      return value == null\n        ? defaultValue\n        : Array.isArray(value) \u0026\u0026\n          // https://github.com/tailwindlabs/tailwindcss/blob/master/src/util/transformThemeValue.js\n          // only testing for sections that uses an array for values\n          !includes(['fontSize', 'outline', 'dropShadow'], section)\n        ? join(value, ',')\n        : value\n    }\n\n    return base\n  }) as ThemeResolver\n\n  return resolve\n}\n","import type {\n  Context,\n  CSSRules,\n  Plugin,\n  Rule,\n  Falsy,\n  InlineDirective,\n  TypescriptCompat,\n} from '../types'\n\nimport { join, tail } from '../internal/util'\n\nexport const translate = (\n  plugins: Record\u003cstring, Plugin | undefined\u003e,\n  context: Context,\n): ((\n  rule: Rule,\n  isTranslating?: boolean,\n) =\u003e InlineDirective | CSSRules | string | Falsy | TypescriptCompat) =\u003e (rule, isTranslating) =\u003e {\n  // If this is a inline directive - called it right away\n  if (typeof rule.d == 'function') {\n    return rule.d(context)\n  }\n\n  const parameters = rule.d.split(/-(?![^[]*])/g)\n\n  // Bail early for already hashed class names\n  // Only if there are no variants and no negation\n  // If there are variants or negation unknown directive will be reported\n  if (!isTranslating \u0026\u0026 parameters[0] == 'tw' \u0026\u0026 rule.$ == rule.d) {\n    return rule.$\n  }\n\n  // Try to find a plugin to handle this directive\n  // example 'bg-gradient-to-r'\n  // 1. 'bg-gradient-to-r' -\u003e parameters=['bg-gradient-to-r']\n  // 2. 'bg-gradient-to'   -\u003e parameters=['bg-gradient-to', 'r']\n  // 4. 'bg-gradient'      -\u003e parameters=['bg-gradient', 'to', 'r']\n  // 5. 'bg'               -\u003e parameters=['bg', 'gradient', 'to', 'r']\n  for (let index = parameters.length; index; index--) {\n    const id = join(parameters.slice(0, index))\n\n    const plugin = plugins[id]\n\n    if (plugin) {\n      return typeof plugin == 'function'\n        ? plugin(tail(parameters, index), context, id)\n        : typeof plugin == 'string'\n        ? context[isTranslating ? 'css' : 'tw'](plugin)\n        : plugin\n    }\n  }\n}\n","import type { Context, CSSRules, Rule, DarkMode, ThemeScreenValue } from '../types'\n\nimport { tail, escape, buildMediaQuery } from '../internal/util'\n\nlet _: RegExpExecArray | null | readonly ThemeScreenValue[] | string\n\nexport const GROUP_RE = /^:(group(?:(?!-focus).+?)*)-(.+)$/\nexport const NOT_PREFIX_RE = /^(:not)-(.+)/\n\nexport const prepareVariantSelector = (variant: string): string =\u003e\n  variant[1] == '[' ? tail(variant) : variant\n\n// Wraps a CSS rule object with variant at-rules and pseudo classes\n// { '.selector': {...} }\n// =\u003e { '\u0026:hover': { '.selector': {...} } }\n// =\u003e { '@media (min-width: ...)': { '\u0026:hover': { '.selector': {...} } } }\nexport const decorate = (\n  darkMode: DarkMode,\n  variants: Record\u003cstring, string\u003e,\n  { theme, tag }: Context,\n): ((translation: CSSRules, rule: Rule) =\u003e CSSRules) =\u003e {\n  // Select the wrapper for a variant\n  const applyVariant = (translation: CSSRules, variant: string): CSSRules =\u003e {\n    // Check responsive\n    if ((_ = theme('screens', tail(variant), ''))) {\n      return { [buildMediaQuery(_)]: translation }\n    }\n\n    // Dark mode\n    if (variant == ':dark' \u0026\u0026 darkMode == 'class') {\n      return { '.dark \u0026': translation }\n    }\n\n    // Groups classes like: group-focus and group-hover\n    // these need to add a marker selector with the pseudo class\n    // =\u003e '.group:focus .group-focus:selector'\n    if ((_ = GROUP_RE.exec(variant))) {\n      return { [`.${escape(tag((_ as RegExpExecArray)[1]))}:${_[2]} \u0026`]: translation }\n    }\n\n    // Check other well known variants\n    // and fallback to pseudo class or element\n    return {\n      [variants[tail(variant)] ||\n      '\u0026' +\n        variant.replace(\n          NOT_PREFIX_RE,\n          (_, not, variant) =\u003e not + '(' + prepareVariantSelector(':' + variant) + ')',\n        )]: translation,\n    }\n  }\n\n  // Apply variants depth-first\n  return (translation, rule) =\u003e rule.v.reduceRight(applyVariant, translation)\n}\n","/* eslint-disable no-return-assign, no-cond-assign, no-implicit-coercion */\n\n// Based on https://github.com/kripod/otion\n// License MIT\n\n/*\nTo have a predictable styling the styles must be ordered.\n\nThis order is represented by a precedence number. The lower values\nare inserted before higher values. Meaning higher precedence styles\noverwrite lower precedence styles.\n\nEach rule has some traits that are put into a bit set which form\nthe precedence:\n\n| bits | trait                                             |\n| ---- | ------------------------------------------------- |\n| 1    | dark mode                                         |\n| 2    | layer: base = 0, components = 1, utilities = 2    |\n| 1    | screens: is this a responsive variation of a rule |\n| 5    | responsive based on min-width                     |\n| 4    | at-rules                                          |\n| 17   | pseudo and group variants                         |\n| 4    | number of declarations (descending)               |\n| 4    | greatest precedence of properties                 |\n\n**Dark Mode: 1 bit**\n\nFlag for dark mode rules.\n\n**Layer: 3 bits**\n\n- base = 0: The preflight styles and any base styles registered by plugins.\n- components = 1: Component classes and any component classes registered by plugins.\n- utilities = 2: Utility classes and any utility classes registered by plugins.\n\n**Screens: 1 bit**\n\nFlag for screen variants. They may not always have a `min-width` to be detected by _Responsive_ below.\n\n**Responsive: 5 bits**\n\nBased on extracted `min-width` value:\n\n- 576px -\u003e 3\n- 1536px -\u003e 9\n- 36rem -\u003e 3\n- 96rem -\u003e 9\n\n**At-Rules: 4 bits**\n\nBased on the count of special chars (`-:,`) within the at-rule.\n\n**Pseudo and group variants: 17 bits**\n\nEnsures predictable order of pseudo classes.\n\n- https://bitsofco.de/when-do-the-hover-focus-and-active-pseudo-classes-apply/#orderofstyleshoverthenfocusthenactive\n- https://developer.mozilla.org/docs/Web/CSS/:active#Active_links\n- https://github.com/tailwindlabs/tailwindcss/blob/master/stubs/defaultConfig.stub.js#L718\n\n**Number of declarations (descending): 4 bits**\n\nAllows single declaration styles to overwrite styles from multi declaration styles.\n\n**Greatest precedence of properties: 4 bits**\n\nEnsure shorthand properties are inserted before longhand properties; eg longhand override shorthand\n*/\n\nimport type { ThemeResolver, ThemeScreen } from '../types'\n\nimport { tail, includes, buildMediaQuery } from '../internal/util'\nimport { GROUP_RE, NOT_PREFIX_RE } from './decorate'\n\n// Shared variables\nlet _: string | RegExpExecArray | null | number | ThemeScreen\n\n/*\nBit shifts for the primary bits:\n\n| bits | trait                                                   | shift |\n| ---- | ------------------------------------------------------- | ----- |\n| 1    | dark mode                                               | 30    |\n| 2    | layer: base = 0, components = 1, utilities = 2, css = 3 | 28    |\n| 1    | screens: is this a responsive variation of a rule       | 27    |\n| 5    | responsive based on min-width                           | 22    |\n| 4    | at-rules                                                | 18    |\n| 17   | pseudo and group variants                               | 0     |\n\nThese are calculated by serialize and added afterwards:\n\n| bits | trait                               |\n| ---- | ----------------------------------- |\n| 4    | number of declarations (descending) |\n| 4    | greatest precedence of properties   |\n\nThese are added by shifting the primary bits using multiplication as js only\nsupports bit shift up to 32 bits.\n*/\n\n// 0=none, 1=sm, 2=md, 3=lg, 4=xl, 5=2xl, 6=??, 7=??\n// 0 - 31: 5 bits\n//  576px -\u003e 3\n// 1536px -\u003e 9\n// 36rem -\u003e 3\n// 96rem -\u003e 9\nexport const responsivePrecedence = (css: string): number =\u003e\n  (((_ = /(?:^|min-width: *)(\\d+(?:.\\d+)?)(p)?/.exec(css)) ? +_[1] / (_[2] ? 15 : 1) / 10 : 0) \u0026\n    31) \u003c\u003c\n  22\n\n// Colon and dash count of string (ascending): 0 -\u003e 7 =\u003e 3 bits\nexport const seperatorPrecedence = (string: string): number =\u003e {\n  _ = 0\n\n  for (let index = string.length; index--; ) {\n    _ += (includes('-:,', string[index]) as unknown) as number\n  }\n\n  return _\n}\n\nexport const atRulePresedence = (css: string): number =\u003e (seperatorPrecedence(css) \u0026 15) \u003c\u003c 18\n\n// Pesudo variant presedence\n// Chars 3 - 8: Uniquely identifies a pseudo selector\n// represented as a bit set for each relevant value\n// 17 bits: one for each variant plus one for unknown variants\n//\n// ':group-*' variants are normalized to their native pseudo class (':group-hover' -\u003e ':hover')\n// as they already have a higher selector presedence due to the add '.group' ('.group:hover .group-hover:...')\n\n// Sources:\n// - https://bitsofco.de/when-do-the-hover-focus-and-active-pseudo-classes-apply/#orderofstyleshoverthenfocusthenactive\n// - https://developer.mozilla.org/docs/Web/CSS/:active#Active_links\n// - https://github.com/tailwindlabs/tailwindcss/blob/master/stubs/defaultConfig.stub.js#L718\n\nconst PRECEDENCES_BY_PSEUDO_CLASS = [\n  /* fi */ 'rst' /* : 0 */,\n  /* la */ 'st' /* : 1 */,\n  /* ev */ 'en' /* : 2 */,\n  /* od */ 'd' /* : 3 */,\n  /* li */ 'nk' /* : 4 */,\n  /* vi */ 'sited' /* : 5 */,\n  /* em */ 'pty' /* : 6 */,\n  /* ch */ 'ecked' /* : 7 */,\n  /* fo */ 'cus-w' /* ithin : 8 */,\n  /* ho */ 'ver' /* : 9 */,\n  /* fo */ 'cus' /* : 10 */,\n  /* fo */ 'cus-v' /* isible : 11 */,\n  /* ac */ 'tive' /* : 12 */,\n  /* di */ 'sable' /* d : 13 */,\n  /* re */ 'ad-on' /* ly: 14 */,\n  /* op */ 'tiona' /* l: 15 */,\n  /* re */ 'quire' /* d: 16 */,\n]\n\nconst pseudoPrecedence = (pseudoClass: string): number =\u003e\n  1 \u003c\u003c\n  (~(_ = PRECEDENCES_BY_PSEUDO_CLASS.indexOf(pseudoClass.replace(GROUP_RE, ':$2').slice(3, 8)))\n    ? _\n    : 17)\n\n// Variants: 28 bits\nexport const makeVariantPresedenceCalculator = (\n  theme: ThemeResolver,\n  variants: Record\u003cstring, string | undefined\u003e,\n) =\u003e (presedence: number, variant: string): number =\u003e\n  presedence |\n  // 5: responsive\n  ((_ = theme('screens', tail(variant), ''))\n    ? // 0=none, 1=sm, 2=md, 3=lg, 4=xl, 5=2xl, 6=??, 7=??\n      // 0 - 31: 5 bits\n      // 576px -\u003e 3\n      // 1536px -\u003e 9\n      // 36rem -\u003e 3\n      // 96rem -\u003e 9\n      // Move into screens layer and adjust based on min-width\n      (1 \u003c\u003c 27) | responsivePrecedence(buildMediaQuery(_))\n    : // 1: dark mode flag\n    variant == ':dark'\n    ? 1 \u003c\u003c 30\n    : // 4: precedence of other at-rules\n    (_ = variants[variant] || variant.replace(NOT_PREFIX_RE, ':$2'))[0] == '@'\n    ? atRulePresedence(_)\n    : // 17: pseudo and group variants\n      pseudoPrecedence(variant))\n\n// https://github.com/kripod/otion/blob/main/packages/otion/src/propertyMatchers.ts\n// \"+1\": [\n// \t/* ^border-.*(w|c|sty) */\n// \t\"border-.*(width,color,style)\",\n\n// \t/* ^[tlbr].{2,4}m?$ */\n// \t\"top\",\n// \t\"left\",\n// \t\"bottom\",\n// \t\"right\",\n\n// \t/* ^c.{7}$ */\n// \t\"continue\",\n// ],\n\n// \"-1\": [\n// \t/* ^[fl].{5}l */\n// \t\"flex-flow\",\n// \t\"line-clamp\",\n\n// \t/* ^g.{8}$ */\n// \t\"grid-area\",\n\n// \t/* ^pl */\n// \t\"place-content\",\n// \t\"place-items\",\n// \t\"place-self\",\n// ],\n\n// group: 1 =\u003e +1\n// group: 2 =\u003e -1\n\n// 0 - 15 =\u003e 4 bits\n// Ignore vendor prefixed and custom properties\nexport const declarationPropertyPrecedence = (property: string): number =\u003e\n  property[0] == '-'\n    ? 0\n    : seperatorPrecedence(property) +\n      ((_ = /^(?:(border-(?!w|c|sty)|[tlbr].{2,4}m?$|c.{7}$)|([fl].{5}l|g.{8}$|pl))/.exec(property))\n        ? +!!_[1] /* +1 */ || -!!_[2] /* -1 */\n        : 0) +\n      1\n\n/* eslint-enable no-return-assign, no-cond-assign, no-implicit-coercion */\n","import type { Context, CSSRules, Prefixer, Rule, Token, MaybeArray } from '../types'\n\nimport {\n  join,\n  includes,\n  escape,\n  hyphenate,\n  evalThunk,\n  buildMediaQuery,\n  tail,\n  merge,\n  isCSSProperty,\n} from '../internal/util'\nimport {\n  responsivePrecedence,\n  declarationPropertyPrecedence,\n  makeVariantPresedenceCalculator,\n  atRulePresedence,\n} from './presedence'\nimport { apply } from './apply'\nexport interface RuleWithPresedence {\n  r: string\n  p: number\n}\n\nconst stringifyBlock = (body: string, selector: string): string =\u003e selector + '{' + body + '}'\n\n// Not using const enums as they get transpiled to a lot of code\n// /**\n//  * Determines the default order of styles.\n//  *\n//  * For example: screens have a higher presedence (eg override) utilities\n//  */\n// const enum Layer {\n//   /**\n//    * The preflight styles and any base styles registered by plugins.\n//    */\n//   base = 0,\n\n//   /**\n//    * Component classes and any component classes registered by plugins.\n//    */\n//   components = 1,\n\n//   /**\n//    * Utility classes and any utility classes registered by plugins.\n//    */\n//   utilities = 2,\n\n//   /**\n//    * Inline directives\n//    */\n//   css = 3,\n// }\n\n/**\n * The preflight styles and any base styles registered by plugins.\n */\nexport type LayerBase = 0\n\n/**\n * Component classes and any component classes registered by plugins.\n */\nexport type LayerComponents = 1\n\n/**\n * Utility classes and any utility classes registered by plugins.\n */\nexport type LayerUtilities = 2\n\n/**\n * Inline directives\n */\nexport type LayerCss = 3\n\nexport type Layer = LayerBase | LayerComponents | LayerUtilities | LayerCss\n\nexport const serialize = (\n  prefix: Prefixer,\n  variants: Record\u003cstring, string\u003e,\n  context: Context,\n): ((css: CSSRules, className?: string, rule?: Rule, layer?: Layer) =\u003e RuleWithPresedence[]) =\u003e {\n  const { theme, tag } = context\n\n  // Hash/Tag tailwind custom properties during serialization\n  // used by `tagVars` below\n  const tagVar = (_: string, property: string): string =\u003e '--' + tag(property)\n\n  const tagVars = (value: string | number): string =\u003e `${value}`.replace(/--(tw-[\\w-]+)\\b/g, tagVar)\n\n  // Create a css declaration with prefix and hashed custom properties\n  const stringifyDeclaration = (\n    property: string,\n    value: string | number | string[],\n    important: boolean | undefined,\n  ): string =\u003e {\n    property = tagVars(property)\n\n    // Support array fallbacks\n    return Array.isArray(value)\n      ? join(\n          value.filter(Boolean).map((value) =\u003e prefix(property, tagVars(value), important)),\n          ';',\n        )\n      : prefix(property, tagVars(value), important)\n  }\n\n  // List of css rule with presedence to be injected\n  let rules: RuleWithPresedence[]\n\n  // Responsible for converting the css into one or more css strings\n  // which will be injected into the page\n  const stringify = (\n    // Upper at-rules, selector that should wrap each generated css block\n    atRules: string[],\n    // The current css selector\n    selector: string,\n    // The current presedence for determine the css position in the stylesheet\n    presedence: number,\n    // The rules object\n    css: MaybeArray\u003cCSSRules\u003e,\n    important: boolean | undefined,\n  ): void =\u003e {\n    if (Array.isArray(css)) {\n      css.forEach((css) =\u003e css \u0026\u0026 stringify(atRules, selector, presedence, css, important))\n      return\n    }\n\n    // 1. Properties\n    // 3. *\n    // 2. @...\n    // 3. :pseudo\n    // 4. \u0026\n\n    // The generated declaration block eg body of the css rule\n    let declarations = ''\n\n    // Additional presedence values\n\n    // this ensures that 'border-top-width' has a higer presedence than 'border-top'\n    let maxPropertyPresedence = 0\n\n    // more specific utilities have less declarations and a higher presedence\n    let numberOfDeclarations = 0\n\n    if ((css as CSSRules)['@apply']) {\n      css = merge(\n        evalThunk(apply((css as CSSRules)['@apply'] as Token), context),\n        { ...(css as CSSRules), '@apply': undefined },\n        context,\n      )\n    }\n\n    // Walk through the object\n    Object.keys(css as CSSRules).forEach((key) =\u003e {\n      const value = evalThunk((css as CSSRules)[key], context)\n\n      if (isCSSProperty(key, value)) {\n        if (value !== '' \u0026\u0026 key.length \u003e 1) {\n          // It is a Property\n          const property = hyphenate(key)\n\n          // Update presedence\n          numberOfDeclarations += 1\n          maxPropertyPresedence = Math.max(\n            maxPropertyPresedence,\n            declarationPropertyPrecedence(property),\n          )\n\n          // Add to the declaration block with prefixer applied\n          declarations =\n            (declarations \u0026\u0026 declarations + ';') +\n            stringifyDeclaration(property, value as string | number | string[], important)\n        }\n      } else if (value) {\n        // TODO remove once moved from :global to @global\n        if (key == ':global') {\n          key = '@global'\n        }\n\n        // If the value is an object this must be a nested block\n        // like '@media ...', '@supports ... ', ':pseudo ...', '\u0026 \u003e ...'\n        // If this is a `@` rule\n        if (key[0] == '@') {\n          if (key[1] == 'g') {\n            // @global\n            stringify([], '', 0, value as MaybeArray\u003cCSSRules\u003e, important)\n          } else if (key[1] == 'f') {\n            // `@font-face` is never wrapped, eg always global/root\n            stringify([], key, 0, value as MaybeArray\u003cCSSRules\u003e, important)\n          } else if (key[1] == 'k') {\n            // @keyframes handling\n            // To prevent\n            // \"@keyframes spin{from{transform:rotate(0deg)}}\"\n            // \"@keyframes spin{to{transform:rotate(360deg)}}\"\n            // we generate waypoints without prefix and grap them from the stack\n            // \"from{transform:rotate(0deg)}\"\n            // \"to{transform:rotate(360deg)}\"\n            // =\u003e \"@keyframes name{from{transform:rotate(0deg)}from{transform:rotate(0deg)}}\"\n            const currentSize = rules.length\n\n            stringify([], '', 0, value as MaybeArray\u003cCSSRules\u003e, important)\n\n            const waypoints = rules.splice(currentSize, rules.length - currentSize)\n\n            // Insert without wrappers\n            rules.push({\n              r: stringifyBlock(\n                join(\n                  waypoints.map((p) =\u003e p.r),\n                  '',\n                ),\n                key,\n              ),\n              p: waypoints.reduce((sum, p) =\u003e sum + p.p, 0),\n            })\n          } else if (key[1] == 'i') {\n            // @import\n            // eslint-disable-next-line @typescript-eslint/no-extra-semi\n            ;(Array.isArray(value) ? value : [value]).forEach(\n              (value) =\u003e value \u0026\u0026 rules.push({ p: 0, r: `${key} ${value};` }),\n            )\n          } else {\n            // @screen\n            if (key[2] == 'c') {\n              key = buildMediaQuery(context.theme('screens', tail(key, 8).trim()) as string)\n            }\n\n            // Some nested block like @media, dive into it\n            stringify(\n              [...atRules, key],\n              selector,\n              presedence | responsivePrecedence(key) | atRulePresedence(key),\n              value as MaybeArray\u003cCSSRules\u003e,\n              important,\n            )\n          }\n        } else {\n          // A selector block: { '\u0026:focus': { ... } }\n          stringify(\n            atRules,\n            // If this is a nested selector we need to\n            // - replace `\u0026` with the current selector\n            selector\n              ? // Go over the selector and replace the matching selectors respecting multiple selectors\n                join(\n                  selector.split(/,(?![^[]*])/g).map((selectorPart) =\u003e\n                    // Same for the key\n                    join(\n                      key.split(/,(?![^[]*])/g).map((keyPart) =\u003e\n                        // If the current part has a nested selector replace it\n                        includes(keyPart, '\u0026')\n                          ? keyPart.replace(/\u0026/g, selectorPart)\n                          : (selectorPart \u0026\u0026 selectorPart + ' ') + keyPart,\n                      ),\n                      ',',\n                    ),\n                  ),\n                  ',',\n                )\n              : key,\n            presedence,\n            value as MaybeArray\u003cCSSRules\u003e,\n            important,\n          )\n        }\n      }\n    })\n\n    // We have collected all properties\n    // if there have been some we need to create a css rule\n    if (numberOfDeclarations) {\n      // Inject declarations\n\n      rules.push({\n        // Wrap block with upper at-rules\n        r: atRules.reduceRight(stringifyBlock, stringifyBlock(declarations, selector)),\n\n        // Calculate precedence\n        p:\n          presedence *\n            // Declarations: 8 bits = 256\n            (1 \u003c\u003c 8) +\n          // 4: number of declarations (descending)\n          (((Math.max(0, 15 - numberOfDeclarations) \u0026 15) \u003c\u003c 4) |\n            // 4: greatest precedence of properties\n            // if there is no property presedence this is most likely a custom property only declaration\n            // these have the highest presedence\n            ((maxPropertyPresedence || 15) \u0026 15)),\n      })\n    }\n  }\n\n  const variantPresedence = makeVariantPresedenceCalculator(theme, variants)\n\n  return (css, className, rule, layer = 0 /* Layerbase */) =\u003e {\n    // Initial presedence based on layer (base = 0, components = 1, utilities = 2, css = 3)\n    layer \u003c\u003c= 28\n\n    rules = []\n\n    stringify(\n      [],\n      className ? '.' + escape(className) : '',\n      // If we have a rule, create starting presedence based on the variants\n      rule ? rule.v.reduceRight(variantPresedence, layer) : layer,\n      css,\n      rule \u0026\u0026 rule.i,\n    )\n\n    return rules\n  }\n}\n","import type { Context, Sheet, Mode, SheetInit } from '../types'\n\nimport { sortedInsertionIndex } from '../internal/util'\n\nimport type { RuleWithPresedence } from './serialize'\n\n// Insert css rules using presedence to find the correct position within the sheet\nexport const inject = (\n  sheet: Sheet,\n  mode: Mode,\n  init: SheetInit,\n  context: Context,\n): ((rule: RuleWithPresedence) =\u003e void) =\u003e {\n  // An array of presedence by index within the sheet\n  // always sorted\n  let sortedPrecedences: number[]\n  init\u003cnumber[]\u003e((value = []) =\u003e (sortedPrecedences = value))\n\n  // Cache for already inserted css rules\n  // to prevent double insertions\n  let insertedRules: Set\u003cstring\u003e\n  init\u003cSet\u003cstring\u003e\u003e((value = new Set()) =\u003e (insertedRules = value))\n\n  return ({ r: css, p: presedence }) =\u003e {\n    // If not already inserted\n    if (!insertedRules.has(css)) {\n      // Mark rule as inserted\n      insertedRules.add(css)\n\n      // Find the correct position\n      const index = sortedInsertionIndex(sortedPrecedences, presedence)\n\n      try {\n        // Insert\n        sheet.insert(css, index)\n\n        // Update sorted index\n        sortedPrecedences.splice(index, 0, presedence)\n      } catch (error) {\n        // Some thrown error a because of specific pseudo classes\n        // let filter them to prevent unnecessary warnings\n        // ::-moz-focus-inner\n        // :-moz-focusring\n        if (!/:-[mwo]/.test(css)) {\n          mode.report({ id: 'INJECT_CSS_ERROR', css, error: error as Error }, context)\n        }\n      }\n    }\n  }\n}\n","import type {\n  Configuration,\n  Context,\n  Preflight,\n  ThemeResolver,\n  Theme,\n  Rule,\n  Hasher,\n  InlineDirective,\n  CSSRules,\n  Mode,\n  Falsy,\n  TypescriptCompat,\n} from '../types'\n\nimport { corePlugins } from './plugins'\nimport { createPreflight } from './preflight'\nimport { coreVariants } from './variants'\n\nimport { cssomSheet, voidSheet } from './sheets'\nimport { silent, strict, warn } from './modes'\nimport { autoprefix, noprefix } from './prefix'\nimport { makeThemeResolver } from './theme'\n\nimport {\n  cyrb32,\n  identity,\n  tail,\n  merge,\n  evalThunk,\n  ensureMaxSize,\n  includes,\n  join,\n} from '../internal/util'\n\nimport { parse } from './parse'\nimport { translate as makeTranslate } from './translate'\nimport { decorate as makeDecorate, prepareVariantSelector } from './decorate'\nimport { serialize as makeSerialize } from './serialize'\nimport { inject as makeInject } from './inject'\n\nconst sanitize = \u003cT\u003e(\n  value: T | boolean | undefined,\n  defaultValue: T,\n  disabled: T,\n  enabled = defaultValue,\n): T =\u003e (value === false ? disabled : value === true ? enabled : value || defaultValue)\n\nconst loadMode = (mode: Configuration['mode']): Mode =\u003e\n  (typeof mode == 'string'\n    ? ({ t: strict, a: warn, i: silent } as Record\u003cstring, Mode\u003e)[mode[1]]\n    : mode) || warn\n\nconst stringifyVariant = (selector: string, variant: string): string =\u003e\n  selector + (variant[1] == ':' ? tail(variant, 2) + ':' : tail(variant)) + ':'\n\n// Creates rule id including variants, negate and directive\n// which is exactly like a tailwind rule\nconst stringify = (rule: Rule, directive = rule.d): string =\u003e\n  typeof directive == 'function'\n    ? ''\n    : rule.v.reduce(stringifyVariant, '') + (rule.i ? '!' : '') + (rule.n ? '-' : '') + directive\n\n// Use hidden '_' property to collect class names which have no css translation like hashed twind classes\nconst COMPONENT_PROPS = { _: { value: '', writable: true } }\n\nexport const configure = (\n  config: Configuration = {},\n): {\n  init: () =\u003e void\n  process: (tokens: unknown[]) =\u003e string\n} =\u003e {\n  const theme = makeThemeResolver(config.theme)\n\n  const mode = loadMode(config.mode)\n\n  const hash = sanitize\u003cHasher | false\u003e(config.hash, false, false, cyrb32)\n\n  const important = config.important\n\n  // Track the active rule\n  // 1. to detect if a theme value should be negated\n  // 2. for nested `tw()` calls\n  //    `sm:hover:${({ tw }) =\u003e tw`underline`}`\n  //    ==\u003e 'sm:hover:underline`\n  // Start with an \"empty\" rule, to always have value to use\n  let activeRule: { v: string[]; n?: boolean } = { v: [] }\n\n  let translateDepth = 0\n  const lastTranslations: (CSSRules | string | Falsy)[] = []\n\n  // The context that is passed to functions to access the theme, ...\n  const context: Context = {\n    // eslint-disable-next-line @typescript-eslint/no-use-before-define\n    tw: (...tokens: unknown[]) =\u003e process(tokens),\n\n    theme: ((section: keyof Theme, key?: string | string[], defaultValue?: unknown): unknown =\u003e {\n      const value =\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        theme(section, key as string, defaultValue as any) ??\n        // If no theme value is found, notify 'mode', it may be able to resolve a value\n        mode.unknown(\n          section,\n          key == null || Array.isArray(key) ? key : key.split('.'),\n          defaultValue != null,\n          context,\n        )\n\n      // Add negate to theme value using calc to support complex values\n      return activeRule.n \u0026\u0026 value \u0026\u0026 includes('rg', (typeof value)[5])\n        ? `calc(${value} * -1)`\n        : value\n    }) as ThemeResolver,\n\n    tag: (value) =\u003e (hash ? hash(value) : value),\n\n    css: (rules) =\u003e {\n      translateDepth++\n      const lastTranslationsIndex = lastTranslations.length\n\n      try {\n        // eslint-disable-next-line @typescript-eslint/no-extra-semi\n        ;(typeof rules == 'string' ? parse([rules]) : rules).forEach(convert)\n\n        const css = Object.create(null, COMPONENT_PROPS)\n\n        for (let index = lastTranslationsIndex; index \u003c lastTranslations.length; index++) {\n          const translation = lastTranslations[index]\n\n          if (translation) {\n            switch (typeof translation) {\n              case 'object':\n                merge(css, translation, context)\n                break\n              case 'string':\n                css._ += (css._ \u0026\u0026 ' ') + translation\n            }\n          }\n        }\n\n        return css\n      } finally {\n        lastTranslations.length = lastTranslationsIndex\n        translateDepth--\n      }\n    },\n  }\n\n  // Used to translate a rule using plugins\n  const translate = makeTranslate({ ...corePlugins, ...config.plugins }, context)\n\n  // Wrap `translate()` to keep track of the active rule\n  // we need to use try-finally as mode.report may throw\n  // and we must always reset the active rule\n  const doTranslate = (rule: Rule): CSSRules | string | Falsy | TypescriptCompat =\u003e {\n    // Keep track of active variants for nested `tw` calls\n    const parentRule = activeRule\n    activeRule = rule\n\n    try {\n      return evalThunk(translate(rule), context)\n    } finally {\n      activeRule = parentRule\n    }\n  }\n\n  const variants = { ...coreVariants, ...config.variants }\n\n  // Apply variants to a translation\n  const decorate = makeDecorate(config.darkMode || 'media', variants, context)\n\n  // Serialize a translation to css\n  const serialize = makeSerialize(sanitize(config.prefix, autoprefix, noprefix), variants, context)\n\n  const sheet = config.sheet || (typeof window == 'undefined' ? voidSheet() : cssomSheet(config))\n\n  const { init = (callback) =\u003e callback() } = sheet\n\n  // Inject css into the target enviroment\n  const inject = makeInject(sheet, mode, init, context)\n\n  // Cache rule ids and their generated class name\n  let idToClassName: Map\u003cstring, string\u003e\n  init\u003cMap\u003cstring, string\u003e\u003e((value = new Map()) =\u003e (idToClassName = value))\n\n  // Cache generated inline directive names by their function identity\n  const inlineDirectiveName = new WeakMap\u003cInlineDirective, string\u003e()\n\n  // Used as replacer for JSON.stringify to calculate the hash for a inline function\n  const evaluateFunctions = (key: string, value: unknown): unknown =\u003e\n    key == '_' // Do not include passed classNames in the hash\n      ? undefined\n      : typeof value == 'function'\n      ? JSON.stringify(evalThunk(value, context), evaluateFunctions)\n      : value\n\n  // Responsible for converting (translate, decorate, serialize, inject) a rule\n  const convert = (rule: Rule): string | undefined | void =\u003e {\n    // If there is a active rule this one is nested\n    // we must add the variants and need to reset the id\n    if (!translateDepth \u0026\u0026 activeRule.v.length) {\n      rule = { ...rule, v: [...activeRule.v, ...rule.v], $: '' }\n    }\n\n    // Static rules (from template literals) can cache their id\n    // this greatly improves performance\n    if (!rule.$) {\n      // For inline directives (functions) `stringify` returns an empty string\n      // in that case we check if we already have a name for the function\n      // and use that one to generate the id\n      rule.$ = stringify(rule, inlineDirectiveName.get(rule.d as InlineDirective))\n    }\n\n    // Check if we already have a class name for this rule id\n    let className = translateDepth ? null : idToClassName.get(rule.$)\n\n    if (className == null) {\n      // 2. translate each rule using plugins\n      let translation = doTranslate(rule)\n\n      // If this is a unknown inline directive\n      if (!rule.$) {\n        // We can now generate a unique name based on the created translation\n        // This id does not include the variants as a directive is always independent of variants\n        // Variants are applied below using `decorate()`\n        // JSON.stringify ignores functions - by using a custom replace\n        // we can calculate a hash based on the value returned by these functions\n        // eslint-disable-next-line no-var\n        rule.$ = cyrb32(JSON.stringify(translation, evaluateFunctions))\n\n        // Remember it\n        inlineDirectiveName.set(rule.d as InlineDirective, rule.$)\n\n        // Generate an id including the current variants\n        rule.$ = stringify(rule, rule.$)\n      }\n\n      if (translation \u0026\u0026 typeof translation == 'object') {\n        rule.v = rule.v.map(prepareVariantSelector)\n        if (important) rule.i = important\n\n        // 3. decorate: apply variants\n        translation = decorate(translation, rule)\n\n        if (translateDepth) {\n          lastTranslations.push(translation)\n        } else {\n          // - components: layer.components = 1\n          // - plugins: layer.utilities = 2\n          // - inline directive: layer.css = 3\n          const layer = typeof rule.d == 'function' ? (typeof translation._ == 'string' ? 1 : 3) : 2\n\n          className =\n            hash || typeof rule.d == 'function' ? (hash || cyrb32)(layer + rule.$) : rule.$\n\n          // 4. serialize: convert to css string with precedence\n          // 5. inject: add to dom\n          serialize(translation, className, rule, layer).forEach(inject)\n\n          if (translation._) {\n            className += ' ' + translation._\n          }\n        }\n      } else {\n        // CSS class names have been returned\n        if (typeof translation == 'string') {\n          // Use as is\n          className = translation\n        } else {\n          // No plugin or plugin did not return something\n          className = rule.$\n          mode.report({ id: 'UNKNOWN_DIRECTIVE', rule: className }, context)\n        }\n\n        if (translateDepth \u0026\u0026 typeof rule.d !== 'function') {\n          lastTranslations.push(className)\n        }\n      }\n\n      if (!translateDepth) {\n        // Remember the generated class name\n        idToClassName.set(rule.$, className as string)\n\n        // Ensure the cache does not grow unlimited\n        ensureMaxSize(idToClassName, 30000)\n      }\n    }\n\n    return className as string\n  }\n\n  // This function is called from `tw(...)`\n  // it parses, translates, decorates, serializes and injects the tokens\n  const process = (tokens: unknown[]): string =\u003e\n    join(parse(tokens).map(convert).filter(Boolean) as string[], ' ')\n\n  // Determine if we should inject the preflight (browser normalize)\n  const preflight = sanitize\u003cPreflight | false | CSSRules\u003e(config.preflight, identity, false)\n\n  if (preflight) {\n    // Create the base tailwind preflight css rules\n    const css = createPreflight(theme)\n\n    // Call the preflight handler, serialize and inject the result\n    const styles = serialize(\n      typeof preflight == 'function'\n        ? evalThunk(preflight(css, context), context) || css\n        : { ...css, ...preflight },\n    )\n\n    init\u003cboolean\u003e((injected = (styles.forEach(inject), true)) =\u003e injected)\n  }\n\n  return {\n    init: () =\u003e mode.report({ id: 'LATE_SETUP_CALL' }, context),\n    process,\n  }\n}\n","import type { Configuration, Context, Instance } from '../types'\n\nimport { configure } from './configure'\n\nexport const create = (config?: Configuration): Instance =\u003e {\n  // We are using lazy variables to trigger setup either\n  // on first `setup` or `tw` call\n  //\n  // This allows to provide one-time lazy configuration\n  //\n  // These variables are not named `tw` and `setup`\n  // as we use `tw` and `setup` to find the callee site\n  // during stacktrace generation\n  // This allows the error stacktrace to start at the call site.\n\n  // Used by `tw`\n  let process = (tokens: unknown[]): string =\u003e {\n    // eslint-disable-next-line @typescript-eslint/no-use-before-define\n    init()\n    return process(tokens)\n  }\n\n  // Used by `setup`\n  let init = (config?: Configuration): void =\u003e {\n    // Replace implementation with configured ones\n    // `process`: the real one\n    // `init`: invokes `mode.report` with `LATE_SETUP_CALL`\n    // eslint-disable-next-line @typescript-eslint/no-extra-semi\n    ;({ process, init } = configure(config))\n  }\n\n  // If we got a config, start right away\n  if (config) init(config)\n\n  let context: Context\n  const fromContext = \u003cKey extends keyof Context\u003e(key: Key) =\u003e (): Context[Key] =\u003e {\n    if (!context) {\n      process([\n        (_: Context) =\u003e {\n          context = _\n          return ''\n        },\n      ])\n    }\n\n    return context[key]\n  }\n\n  // The instance methods delegate to the lazy ones.\n  // This ensures that after setup we use the configured\n  // `process` and `setup` fails.\n  return {\n    tw: Object.defineProperties((...tokens: unknown[]) =\u003e process(tokens), {\n      theme: {\n        get: fromContext('theme'),\n      },\n      // css: {\n      //   get: fromContext('css'),\n      // },\n      // tag: {\n      //   get: fromContext('tag'),\n      // },\n    }),\n\n    setup: (config) =\u003e init(config),\n  }\n}\n","import { create } from './instance'\n\nexport const { tw, setup } = /*#__PURE__*/ create()\n"],"version":3}
