{"version":3,"file":"js-respond/2025.04.02.6/9924.26d842077cf5bfe8a064.js","mappings":";2HAAA,SAASA,EAAQC,GACf,IAAIC,EAAQC,OAAOC,OAAO,MAC1B,OAAO,SAAUC,GAEf,YADmBC,IAAfJ,EAAMG,KAAoBH,EAAMG,GAAOJ,EAAGI,IACvCH,EAAMG,EACf,CACF,kBCJA,IAAIE,EAAkB,0+HAElBC,EAA6BR,GAAQ,SAAUS,GACjD,OAAOF,EAAgBG,KAAKD,IAAgC,MAAvBA,EAAKE,WAAW,IAE3B,MAAvBF,EAAKE,WAAW,IAEhBF,EAAKE,WAAW,GAAK,EAC1B,kDC4lBA,QAtmBA,SAAqBC,GACnB,SAASC,EAAEC,EAAGC,EAAGC,EAAGC,EAAGC,GACrB,IAAK,IAAgCC,EAAGC,EAAiBC,EAAuEC,EAAmCC,EAA1JC,EAAI,EAAGC,EAAI,EAAGC,EAAI,EAAGC,EAAI,EAASC,EAAI,EAAGC,EAAI,EAAMC,EAAIT,EAAIF,EAAI,EAAGY,EAAI,EAAGC,EAAI,EAAGC,EAAI,EAAGC,EAAI,EAAGC,EAAInB,EAAEoB,OAAQC,EAAIF,EAAI,EAAMG,EAAI,GAAIC,EAAI,GAAIC,EAAI,GAAIC,EAAI,GAAOV,EAAII,GAAI,CAI5K,GAHAf,EAAIJ,EAAEL,WAAWoB,GACjBA,IAAMM,GAAK,IAAMZ,EAAIE,EAAID,EAAIF,IAAM,IAAMC,IAAML,EAAI,KAAOK,EAAI,GAAK,IAAKE,EAAID,EAAIF,EAAI,EAAGW,IAAKE,KAExF,IAAMZ,EAAIE,EAAID,EAAIF,EAAG,CACvB,GAAIO,IAAMM,IAAM,EAAIL,IAAMM,EAAIA,EAAEI,QAAQC,EAAG,KAAM,EAAIL,EAAEM,OAAOR,QAAS,CACrE,OAAQhB,GACN,KAAK,GACL,KAAK,EACL,KAAK,GACL,KAAK,GACL,KAAK,GACH,MAEF,QACEkB,GAAKtB,EAAE6B,OAAOd,GAGlBX,EAAI,EACN,CAEA,OAAQA,GACN,KAAK,IAKH,IAHAD,GADAmB,EAAIA,EAAEM,QACAjC,WAAW,GACjBU,EAAI,EAECa,IAAMH,EAAGA,EAAII,GAAI,CACpB,OAAQf,EAAIJ,EAAEL,WAAWoB,IACvB,KAAK,IACHV,IACA,MAEF,KAAK,IACHA,IACA,MAEF,KAAK,GACH,OAAQD,EAAIJ,EAAEL,WAAWoB,EAAI,IAC3B,KAAK,GACL,KAAK,GACHb,EAAG,CACD,IAAKY,EAAIC,EAAI,EAAGD,EAAIO,IAAKP,EACvB,OAAQd,EAAEL,WAAWmB,IACnB,KAAK,GACH,GAAI,KAAOV,GAAK,KAAOJ,EAAEL,WAAWmB,EAAI,IAAMC,EAAI,IAAMD,EAAG,CACzDC,EAAID,EAAI,EACR,MAAMZ,CACR,CAEA,MAEF,KAAK,GACH,GAAI,KAAOE,EAAG,CACZW,EAAID,EAAI,EACR,MAAMZ,CACR,EAKNa,EAAID,CACN,EAIJ,MAEF,KAAK,GACHV,IAEF,KAAK,GACHA,IAEF,KAAK,GACL,KAAK,GACH,KAAOW,IAAMM,GAAKrB,EAAEL,WAAWoB,KAAOX,KAK1C,GAAI,IAAMC,EAAG,MACbU,GACF,CAKA,GAHAV,EAAIL,EAAE8B,UAAUZ,EAAGH,GACnB,IAAMZ,IAAMA,GAAKmB,EAAIA,EAAEI,QAAQK,EAAI,IAAIH,QAAQjC,WAAW,IAGnD,KADCQ,EACN,CAIE,OAHA,EAAIa,IAAMM,EAAIA,EAAEI,QAAQC,EAAG,KAC3BvB,EAAIkB,EAAE3B,WAAW,IAGf,KAAK,IACL,KAAK,IACL,KAAK,IACL,KAAK,GACHqB,EAAIjB,EACJ,MAEF,QACEiB,EAAIgB,EAMR,GAFAd,GADAb,EAAIR,EAAEE,EAAGiB,EAAGX,EAAGD,EAAGF,EAAI,IAChBkB,OACN,EAAIa,IAAsB1B,EAAI2B,EAAE,EAAG7B,EAAzBW,EAAImB,EAAEH,EAAGV,EAAGL,GAAmBlB,EAAGqC,EAAGC,EAAGnB,EAAGd,EAAGF,EAAGD,GAAIqB,EAAIN,EAAEsB,KAAK,SAAK,IAAW/B,GAAK,KAAOW,GAAKb,EAAIE,EAAEqB,QAAQR,UAAYhB,EAAI,EAAGC,EAAI,KAC5I,EAAIa,EAAG,OAAQd,GACjB,KAAK,IACHkB,EAAIA,EAAEI,QAAQa,EAAIC,GAEpB,KAAK,IACL,KAAK,IACL,KAAK,GACHnC,EAAIiB,EAAI,IAAMjB,EAAI,IAClB,MAEF,KAAK,IAEHA,GADAiB,EAAIA,EAAEI,QAAQe,EAAI,UACV,IAAMpC,EAAI,IAClBA,EAAI,IAAMqC,GAAK,IAAMA,GAAKC,EAAE,IAAMtC,EAAG,GAAK,YAAcA,EAAI,IAAMA,EAAI,IAAMA,EAC5E,MAEF,QACEA,EAAIiB,EAAIjB,EAAG,MAAQJ,IAAWsB,GAAKlB,EAAVA,EAAa,SACnCA,EAAI,EACN,MAGLA,EAAIR,EAAEE,EAAGoC,EAAEpC,EAAGuB,EAAGL,GAAIZ,EAAGJ,EAAGC,EAAI,GAGnCsB,GAAKnB,EACLA,EAAIY,EAAID,EAAIF,EAAIX,EAAI,EACpBmB,EAAI,GACJlB,EAAIJ,EAAEL,aAAaoB,GACnB,MAEF,KAAK,IACL,KAAK,GAEH,GAAI,GAAKG,GADTI,GAAK,EAAIN,EAAIM,EAAEI,QAAQC,EAAG,IAAML,GAAGM,QACpBR,QAAS,OAAQ,IAAMN,IAAMX,EAAImB,EAAE3B,WAAW,GAAI,KAAOQ,GAAK,GAAKA,GAAK,IAAMA,KAAOe,GAAKI,EAAIA,EAAEI,QAAQ,IAAK,MAAMN,QAAS,EAAIa,QAAK,KAAY1B,EAAI2B,EAAE,EAAGZ,EAAGvB,EAAGD,EAAGsC,EAAGC,EAAGd,EAAEH,OAAQnB,EAAGC,EAAGD,KAAO,KAAOiB,GAAKI,EAAIf,EAAEqB,QAAQR,UAAYE,EAAI,QAAanB,EAAImB,EAAE3B,WAAW,GAAIS,EAAIkB,EAAE3B,WAAW,GAAIQ,GAC9S,KAAK,EACH,MAEF,KAAK,GACH,GAAI,MAAQC,GAAK,KAAOA,EAAG,CACzBqB,GAAKH,EAAItB,EAAE6B,OAAOd,GAClB,KACF,CAEF,QACE,KAAOO,EAAE3B,WAAWuB,EAAI,KAAOK,GAAKqB,EAAEtB,EAAGnB,EAAGC,EAAGkB,EAAE3B,WAAW,KAEhEsB,EAAID,EAAIF,EAAIX,EAAI,EAChBmB,EAAI,GACJlB,EAAIJ,EAAEL,aAAaoB,GAEzB,CAEA,OAAQX,GACN,KAAK,GACL,KAAK,GACH,KAAOK,EAAIA,EAAI,EAAI,IAAM,EAAIN,GAAK,MAAQF,GAAK,EAAIqB,EAAEF,SAAWJ,EAAI,EAAGM,GAAK,MAC5E,EAAIW,EAAIY,GAAKX,EAAE,EAAGZ,EAAGvB,EAAGD,EAAGsC,EAAGC,EAAGd,EAAEH,OAAQnB,EAAGC,EAAGD,GACjDoC,EAAI,EACJD,IACA,MAEF,KAAK,GACL,KAAK,IACH,GAAI,IAAM3B,EAAIE,EAAID,EAAIF,EAAG,CACvB6B,IACA,KACF,CAEF,QAIE,OAHAA,IACA/B,EAAIN,EAAE6B,OAAOd,GAELX,GACN,KAAK,EACL,KAAK,GACH,GAAI,IAAMO,EAAIH,EAAIC,EAAG,OAAQG,GAC3B,KAAK,GACL,KAAK,GACL,KAAK,EACL,KAAK,GACHN,EAAI,GACJ,MAEF,QACE,KAAOF,IAAME,EAAI,KAErB,MAEF,KAAK,EACHA,EAAI,MACJ,MAEF,KAAK,GACHA,EAAI,MACJ,MAEF,KAAK,GACHA,EAAI,MACJ,MAEF,KAAK,GACH,IAAMK,EAAIF,EAAID,IAAMQ,EAAIC,EAAI,EAAGX,EAAI,KAAOA,GAC1C,MAEF,KAAK,IACH,GAAI,IAAMK,EAAIF,EAAID,EAAIsC,GAAK,EAAIhC,EAAG,OAAQC,EAAID,GAC5C,KAAK,EACH,MAAQF,GAAK,KAAOZ,EAAEL,WAAWoB,EAAI,KAAO+B,EAAIlC,GAElD,KAAK,EACH,MAAQC,IAAMiC,EAAIjC,GAEtB,MAEF,KAAK,GACH,IAAMF,EAAIF,EAAID,IAAMM,EAAIC,GACxB,MAEF,KAAK,GACH,IAAMN,EAAIC,EAAIC,EAAIH,IAAMQ,EAAI,EAAGV,GAAK,MACpC,MAEF,KAAK,GACL,KAAK,GACH,IAAMG,IAAME,EAAIA,IAAMP,EAAI,EAAI,IAAMO,EAAIP,EAAIO,GAC5C,MAEF,KAAK,GACH,IAAMA,EAAIF,EAAIC,GAAKF,IACnB,MAEF,KAAK,GACH,IAAMG,EAAIF,EAAIC,GAAKF,IACnB,MAEF,KAAK,GACH,IAAMG,EAAIF,EAAID,GAAKE,IACnB,MAEF,KAAK,GACC,IAAMC,EAAIF,EAAID,IACZ,IAAML,IAAW,EAAIS,EAAI,EAAIC,GAC1B,MAIHV,EAAI,IAERO,KAGF,MAEF,KAAK,GACH,IAAMD,EAAIC,EAAIC,EAAIH,EAAIM,EAAIT,IAAMA,EAAI,GACpC,MAEF,KAAK,GACL,KAAK,GACH,KAAM,EAAIM,EAAIH,EAAIE,GAAI,OAAQD,GAC5B,KAAK,EACH,OAAQ,EAAIL,EAAI,EAAIJ,EAAEL,WAAWoB,EAAI,IACnC,KAAK,IACHN,EAAI,GACJ,MAEF,KAAK,IACHS,EAAIH,EAAGN,EAAI,GAGf,MAEF,KAAK,GACH,KAAOL,GAAK,KAAOQ,GAAKM,EAAI,IAAMH,IAAM,KAAOf,EAAEL,WAAWuB,EAAI,KAAOK,GAAKvB,EAAE8B,UAAUZ,EAAGH,EAAI,IAAKT,EAAI,GAAIG,EAAI,IAIxH,IAAMA,IAAMa,GAAKhB,GAGrBO,EAAID,EACJA,EAAIR,EACJW,GACF,CAIA,GAAI,GAFJG,EAAIK,EAAEH,QAEK,CAET,GADAJ,EAAIjB,EACA,EAAIkC,QAA2C,KAArC1B,EAAI2B,EAAE,EAAGX,EAAGP,EAAGlB,EAAGsC,EAAGC,EAAGnB,EAAGjB,EAAGC,EAAGD,KAAoB,KAAOsB,EAAIhB,GAAGa,OAAS,OAAOK,EAAIF,EAAIC,EAGzG,GAFAD,EAAIP,EAAEsB,KAAK,KAAO,IAAMf,EAAI,IAExB,GAAMmB,EAAII,EAAG,CAGf,OAFA,IAAMJ,GAAKC,EAAEpB,EAAG,KAAOuB,EAAI,GAEnBA,GACN,KAAK,IACHvB,EAAIA,EAAEG,QAAQqB,EAAI,YAAcxB,EAChC,MAEF,KAAK,IACHA,EAAIA,EAAEG,QAAQsB,EAAG,sBAAwBzB,EAAEG,QAAQsB,EAAG,aAAezB,EAAEG,QAAQsB,EAAG,iBAAmBzB,EAGzGuB,EAAI,CACN,CACF,CAEA,OAAOrB,EAAIF,EAAIC,CACjB,CAEA,SAASW,EAAErC,EAAGC,EAAGC,GACf,IAAIC,EAAIF,EAAE6B,OAAOqB,MAAMC,GACvBnD,EAAIE,EACJ,IAAIC,EAAID,EAAEmB,OACNZ,EAAIV,EAAEsB,OAEV,OAAQZ,GACN,KAAK,EACL,KAAK,EACH,IAAIC,EAAI,EAER,IAAKX,EAAI,IAAMU,EAAI,GAAKV,EAAE,GAAK,IAAKW,EAAIP,IAAKO,EAC3CV,EAAEU,GAAK0C,EAAErD,EAAGC,EAAEU,GAAIT,GAAG4B,OAGvB,MAEF,QACE,IAAIlB,EAAID,EAAI,EAEZ,IAAKV,EAAI,GAAIU,EAAIP,IAAKO,EACpB,IAAK,IAAIE,EAAI,EAAGA,EAAIH,IAAKG,EACvBZ,EAAEW,KAAOyC,EAAErD,EAAEa,GAAK,IAAKV,EAAEQ,GAAIT,GAAG4B,OAMxC,OAAO7B,CACT,CAEA,SAASoD,EAAErD,EAAGC,EAAGC,GACf,IAAIC,EAAIF,EAAEJ,WAAW,GAGrB,OAFA,GAAKM,IAAMA,GAAKF,EAAIA,EAAE6B,QAAQjC,WAAW,IAEjCM,GACN,KAAK,GACH,OAAOF,EAAE2B,QAAQF,EAAG,KAAO1B,EAAE8B,QAE/B,KAAK,GACH,OAAO9B,EAAE8B,OAAS7B,EAAE2B,QAAQF,EAAG,KAAO1B,EAAE8B,QAE1C,QACE,GAAI,EAAI,EAAI5B,GAAK,EAAID,EAAEqD,QAAQ,MAAO,OAAOrD,EAAE2B,QAAQF,GAAI,KAAO1B,EAAEH,WAAW,GAAK,GAAK,MAAQG,EAAE8B,QAGvG,OAAO9B,EAAIC,CACb,CAEA,SAAS6C,EAAE9C,EAAGC,EAAGC,EAAGC,GAClB,IAAIC,EAAIJ,EAAI,IACRU,EAAI,EAAIT,EAAI,EAAIC,EAAI,EAAIC,EAE5B,GAAI,MAAQO,EAAG,CACbV,EAAII,EAAEkD,QAAQ,IAAK,GAAK,EACxB,IAAI3C,EAAIP,EAAE4B,UAAUhC,EAAGI,EAAEkB,OAAS,GAAGQ,OAErC,OADAnB,EAAIP,EAAE4B,UAAU,EAAGhC,GAAG8B,OAASnB,EAAI,IAC5B,IAAMiC,GAAK,IAAMA,GAAKC,EAAElC,EAAG,GAAK,WAAaA,EAAIA,EAAIA,CAC9D,CAEA,GAAI,IAAMiC,GAAK,IAAMA,IAAMC,EAAEzC,EAAG,GAAI,OAAOA,EAE3C,OAAQM,GACN,KAAK,KACH,OAAO,KAAON,EAAEP,WAAW,IAAM,WAAaO,EAAIA,EAAIA,EAExD,KAAK,IACH,OAAO,MAAQA,EAAEP,WAAW,GAAK,WAAaO,EAAIA,EAAIA,EAExD,KAAK,IACH,OAAO,MAAQA,EAAEP,WAAW,GAAK,WAAaO,EAAIA,EAAIA,EAExD,KAAK,KACH,GAAI,MAAQA,EAAEP,WAAW,GAAI,MAE/B,KAAK,IACL,KAAK,IACH,MAAO,WAAaO,EAAIA,EAE1B,KAAK,IACH,MAAO,WAAaA,EAAI,QAAUA,EAAIA,EAExC,KAAK,KACL,KAAK,IACH,MAAO,WAAaA,EAAI,QAAUA,EAAI,OAASA,EAAIA,EAErD,KAAK,IACH,GAAI,KAAOA,EAAEP,WAAW,GAAI,MAAO,WAAaO,EAAIA,EACpD,GAAI,EAAIA,EAAEkD,QAAQ,aAAc,IAAK,OAAOlD,EAAEwB,QAAQ2B,EAAI,gBAAkBnD,EAC5E,MAEF,KAAK,IACH,GAAI,KAAOA,EAAEP,WAAW,GAAI,OAAQO,EAAEP,WAAW,IAC/C,KAAK,IACH,MAAO,eAAiBO,EAAEwB,QAAQ,QAAS,IAAM,WAAaxB,EAAI,OAASA,EAAEwB,QAAQ,OAAQ,YAAcxB,EAE7G,KAAK,IACH,MAAO,WAAaA,EAAI,OAASA,EAAEwB,QAAQ,SAAU,YAAcxB,EAErE,KAAK,GACH,MAAO,WAAaA,EAAI,OAASA,EAAEwB,QAAQ,QAAS,kBAAoBxB,EAE5E,MAAO,WAAaA,EAAI,OAASA,EAAIA,EAEvC,KAAK,IACH,MAAO,WAAaA,EAAI,YAAcA,EAAIA,EAE5C,KAAK,KACH,GAAI,KAAOA,EAAEP,WAAW,GAAI,MAE5B,MAAO,oBADPc,EAAIP,EAAE4B,UAAU5B,EAAEkD,QAAQ,IAAK,KAAK1B,QAAQ,QAAS,IAAIA,QAAQ,gBAAiB,YAClD,WAAaxB,EAAI,gBAAkBO,EAAIP,EAEzE,KAAK,KACH,OAAOoD,EAAG5D,KAAKQ,GAAKA,EAAEwB,QAAQ6B,EAAI,aAAerD,EAAEwB,QAAQ6B,EAAI,UAAYrD,EAAIA,EAEjF,KAAK,IAIH,OAFAH,GADAU,EAAIP,EAAE4B,UAAU,IAAIF,QACdwB,QAAQ,KAAO,EAEb3C,EAAEd,WAAW,GAAKc,EAAEd,WAAWI,IACrC,KAAK,IACHU,EAAIP,EAAEwB,QAAQD,EAAG,MACjB,MAEF,KAAK,IACHhB,EAAIP,EAAEwB,QAAQD,EAAG,SACjB,MAEF,KAAK,IACHhB,EAAIP,EAAEwB,QAAQD,EAAG,MACjB,MAEF,QACE,OAAOvB,EAGX,MAAO,WAAaA,EAAI,OAASO,EAAIP,EAEvC,KAAK,KACH,IAAK,IAAMA,EAAEkD,QAAQ,SAAU,GAAI,MAErC,KAAK,IAIH,OAHArD,GAAKG,EAAIJ,GAAGsB,OAAS,GAGbZ,GAFRC,GAAK,KAAOP,EAAEP,WAAWI,GAAKG,EAAE4B,UAAU,EAAG/B,GAAKG,GAAG4B,UAAUhC,EAAEsD,QAAQ,IAAK,GAAK,GAAGxB,QAExEjC,WAAW,IAAwB,EAAlBc,EAAEd,WAAW,KAC1C,KAAK,IACH,GAAI,IAAMc,EAAEd,WAAW,GAAI,MAE7B,KAAK,IACHO,EAAIA,EAAEwB,QAAQjB,EAAG,WAAaA,GAAK,IAAMP,EACzC,MAEF,KAAK,IACL,KAAK,IACHA,EAAIA,EAAEwB,QAAQjB,EAAG,YAAc,IAAMD,EAAI,UAAY,IAAM,OAAS,IAAMN,EAAEwB,QAAQjB,EAAG,WAAaA,GAAK,IAAMP,EAAEwB,QAAQjB,EAAG,OAASA,EAAI,OAAS,IAAMP,EAG5J,OAAOA,EAAI,IAEb,KAAK,IACH,GAAI,KAAOA,EAAEP,WAAW,GAAI,OAAQO,EAAEP,WAAW,IAC/C,KAAK,IACH,OAAOc,EAAIP,EAAEwB,QAAQ,SAAU,IAAK,WAAaxB,EAAI,eAAiBO,EAAI,YAAcA,EAAIP,EAE9F,KAAK,IACH,MAAO,WAAaA,EAAI,iBAAmBA,EAAEwB,QAAQ8B,EAAI,IAAMtD,EAEjE,QACE,MAAO,WAAaA,EAAI,qBAAuBA,EAAEwB,QAAQ,gBAAiB,IAAIA,QAAQ8B,EAAI,IAAMtD,EAEpG,MAEF,KAAK,IACL,KAAK,IACH,GAAI,KAAOA,EAAEP,WAAW,IAAM,MAAQO,EAAEP,WAAW,GAAI,MAEzD,KAAK,IACL,KAAK,IACH,IAAI,IAAO8D,EAAG/D,KAAKI,GAAI,OAAO,OAASW,EAAIX,EAAEgC,UAAUhC,EAAEsD,QAAQ,KAAO,IAAIzD,WAAW,GAAKiD,EAAE9C,EAAE4B,QAAQ,UAAW,kBAAmB3B,EAAGC,EAAGC,GAAGyB,QAAQ,kBAAmB,YAAcxB,EAAEwB,QAAQjB,EAAG,WAAaA,GAAKP,EAAEwB,QAAQjB,EAAG,QAAUA,EAAEiB,QAAQ,QAAS,KAAOxB,EACxQ,MAEF,KAAK,IACH,GAAIA,EAAI,WAAaA,GAAK,MAAQA,EAAEP,WAAW,GAAK,OAASO,EAAI,IAAMA,EAAG,MAAQF,EAAIC,GAAK,MAAQC,EAAEP,WAAW,KAAO,EAAIO,EAAEkD,QAAQ,YAAa,IAAK,OAAOlD,EAAE4B,UAAU,EAAG5B,EAAEkD,QAAQ,IAAK,IAAM,GAAG1B,QAAQgC,EAAI,gBAAkBxD,EAGvO,OAAOA,CACT,CAEA,SAASyC,EAAE7C,EAAGC,GACZ,IAAIC,EAAIF,EAAEsD,QAAQ,IAAMrD,EAAI,IAAM,KAC9BE,EAAIH,EAAEgC,UAAU,EAAG,IAAM/B,EAAIC,EAAI,IAErC,OADAA,EAAIF,EAAEgC,UAAU9B,EAAI,EAAGF,EAAEsB,OAAS,GAC3BuC,EAAE,IAAM5D,EAAIE,EAAIA,EAAEyB,QAAQkC,EAAI,MAAO5D,EAAGD,EACjD,CAEA,SAASyC,EAAG1C,EAAGC,GACb,IAAIC,EAAI4C,EAAE7C,EAAGA,EAAEJ,WAAW,GAAII,EAAEJ,WAAW,GAAII,EAAEJ,WAAW,IAC5D,OAAOK,IAAMD,EAAI,IAAMC,EAAE0B,QAAQmC,EAAI,YAAY/B,UAAU,GAAK,IAAM/B,EAAI,GAC5E,CAEA,SAASmC,EAAEpC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGM,EAAGC,EAAGC,EAAGC,EAAGR,GACpC,IAAK,IAAkBuC,EAAdtC,EAAI,EAAGQ,EAAIb,EAAMK,EAAI6B,IAAK7B,EACjC,OAAQsC,EAAIoB,EAAE1D,GAAG2D,KAAK5C,EAAGrB,EAAGc,EAAGZ,EAAGC,EAAGC,EAAGM,EAAGC,EAAGC,EAAGC,EAAGR,IAClD,UAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,KACH,MAEF,QACES,EAAI8B,EAIV,GAAI9B,IAAMb,EAAG,OAAOa,CACtB,CAkBA,SAASoD,EAAElE,GAGT,YADA,KADAA,EAAIA,EAAEmE,UACWN,EAAI,KAAM7D,EAAI,mBAAsBA,EAAI4C,EAAI,GAAKA,EAAI,EAAGiB,EAAI7D,GAAK4C,EAAI,GAC/EsB,CACT,CAEA,SAAS7C,EAAErB,EAAGC,GACZ,IAAIC,EAAIF,EAKR,GAJA,GAAKE,EAAEL,WAAW,KAAOK,EAAIA,EAAE4B,QAE/B5B,EAAI,CADAA,GAGA,EAAIiC,EAAG,CACT,IAAIhC,EAAIiC,GAAG,EAAGnC,EAAGC,EAAGA,EAAGoC,EAAGC,EAAG,EAAG,EAAG,EAAG,QACtC,IAAWpC,GAAK,iBAAoBA,IAAMF,EAAIE,EAChD,CAEA,IAAIC,EAAIL,EAAEmC,EAAGhC,EAAGD,EAAG,EAAG,GAKtB,OAJA,EAAIkC,QAAmD,KAA7ChC,EAAIiC,GAAG,EAAGhC,EAAGF,EAAGA,EAAGoC,EAAGC,EAAGnC,EAAEkB,OAAQ,EAAG,EAAG,MAAqBlB,EAAID,GAE5E6C,EAAI,EACJT,EAAID,EAAI,EACDlC,CACT,CAEA,IAAI6B,EAAK,QACLJ,EAAI,YACJ4B,EAAK,OACLD,EAAK,UACLI,EAAK,sBACLR,EAAK,SACL1B,EAAI,oBACJiB,EAAK,qBACLO,EAAI,aACJD,EAAK,gBACLtB,EAAI,qBACJc,EAAK,kBACLsB,EAAK,eACLL,EAAK,eACLI,EAAK,8BACLH,EAAK,mCACLJ,EAAK,sBACLhB,EAAI,EACJD,EAAI,EACJU,EAAI,EACJJ,EAAI,EACJV,EAAI,GACJ8B,EAAI,GACJ7B,EAAI,EACJ0B,EAAI,KACJd,EAAI,EAKR,OAHA1B,EAAE+C,IApEF,SAASC,EAAErE,GACT,OAAQA,GACN,UAAK,EACL,KAAK,KACHmC,EAAI6B,EAAE1C,OAAS,EACf,MAEF,QACE,GAAI,mBAAsBtB,EAAGgE,EAAE7B,KAAOnC,OAAO,GAAI,iBAAoBA,EAAG,IAAK,IAAIC,EAAI,EAAGC,EAAIF,EAAEsB,OAAQrB,EAAIC,IAAKD,EAC7GoE,EAAErE,EAAEC,SACC8C,EAAU,IAAJ/C,EAGjB,OAAOqE,CACT,EAuDAhD,EAAEiD,IAAMJ,OACR,IAAWpE,GAAKoE,EAAEpE,GACXuB,CACT,iDCnjBA,QAjDmB,CACjBkD,wBAAyB,EACzBC,kBAAmB,EACnBC,iBAAkB,EAClBC,iBAAkB,EAClBC,QAAS,EACTC,aAAc,EACdC,gBAAiB,EACjBC,YAAa,EACbC,QAAS,EACTC,KAAM,EACNC,SAAU,EACVC,aAAc,EACdC,WAAY,EACZC,aAAc,EACdC,UAAW,EACXC,QAAS,EACTC,WAAY,EACZC,YAAa,EACbC,aAAc,EACdC,WAAY,EACZC,cAAe,EACfC,eAAgB,EAChBC,gBAAiB,EACjBC,UAAW,EACXC,cAAe,EACfC,aAAc,EACdC,iBAAkB,EAClBC,WAAY,EACZC,WAAY,EACZC,QAAS,EACTC,MAAO,EACPC,QAAS,EACTC,QAAS,EACTC,OAAQ,EACRC,OAAQ,EACRC,KAAM,EACNC,gBAAiB,EAEjBC,YAAa,EACbC,aAAc,EACdC,YAAa,EACbC,gBAAiB,EACjBC,iBAAkB,EAClBC,iBAAkB,EAClBC,cAAe,EACfC,YAAa,kECvCXC,EAAU,QASVC,EAOU,WAPVA,EAYW,YAZXA,EAcU,WAdVA,EAgBU,WAhBVA,EAmBgB,kBAnBhBA,EAoBS,UAKTC,EAA2B,SAAUC,GAOrC,SAASD,EAAUE,EAAOC,GACtB,IAAIC,EAAQH,EAAOtD,KAAK0D,KAAMF,IAAYE,KAI1C,OAHAD,EAAMF,MAAQA,EACdE,EAAME,KAAO,YACbvI,OAAOwI,eAAeH,EAAOJ,EAAUQ,WAChCJ,CACX,CACA,OAbA,QAAUJ,EAAWC,GAadD,CACX,CAf8B,CAe5BS,OAwBF,SAASC,EAAQC,GACb,OAAO,QAAUN,UAAM,OAAQ,GAAQ,WACnC,IAAIO,EAAYC,EACZT,EAAQC,KACZ,OAAO,QAAYA,MAAM,SAAUS,GAC/B,OAAQA,EAAGC,OACP,KAAK,EAGD,OAFAH,EAAa,CAAC,EACdC,EAAc9I,OAAOiJ,KAAKL,GACnB,CAAC,EAAaM,QAAQC,IAAIL,EAAYM,KAAI,SAAUC,GAAa,OAAO,QAAUhB,OAAO,OAAQ,GAAQ,WACxG,IAAIiB,EAAKP,EAAIQ,EAAIC,EACbC,EACJ,OAAO,QAAYnB,MAAM,SAAUoB,GAC/B,OAAQA,EAAGV,OACP,KAAK,EACDM,EAAMV,EAAQS,GACdK,EAAGV,MAAQ,EACf,KAAK,EAKD,OAJAU,EAAGC,KAAKC,KAAK,CAAC,EAAG,EAAG,CAAE,IACtBb,EAAKF,EACLU,EAAKF,EACLI,EAAK,CAAC,EACC,CAAC,EAAaH,KACzB,KAAK,EAID,OAHAP,EAAGQ,IAAOE,EAAGI,MAAQH,EAAGI,OACpBL,EAAGtB,MAAQ,EACXsB,GACG,CAAC,EAAa,GACzB,KAAK,EAcD,OAbAD,EAAUE,EAAGI,OAETjB,EAAWQ,GADXG,aAAmBvB,EACK,CACpBE,MAAOqB,EAAQrB,MACf4B,MAAO,GAAGC,OAAOR,EAAQjB,KAAM,MAAMyB,OAAOR,EAAQpB,UAIhC,CACpBD,OAAQ,EACR4B,MAAOP,aAAmBd,MAAQ,GAAGsB,OAAOR,EAAQjB,KAAM,MAAMyB,OAAOR,EAAQpB,SAAW6B,OAAOT,IAGlG,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GAAI,MACZ,KAAK,EAED,OADAT,EAAGe,OACI,CAAC,EAAcjB,GAElC,GACJ,GACJ,CAcA,SAASqB,EAAcC,EAAKN,GACxB,OAA+B,IAAxBM,EAAIlG,QAAQ4F,EACvB,CACA,SAASO,EAAYC,EAAKR,GACtB,OAA+B,IAAxBQ,EAAIpG,QAAQ4F,EACvB,CAWA,SAASS,EAAeC,GACpB,OAAOvK,OAAOwK,oBAAoBD,EACtC,CACA,SAASE,EAASN,GAEd,IADA,IAAIlB,EAAO,GACFyB,EAAK,EAAGA,EAAKC,UAAU1I,OAAQyI,IACpCzB,EAAKyB,EAAK,GAAKC,UAAUD,GAa7B,IAXA,IAAIE,EAAU,SAAUC,GACpB,GAAmB,iBAARA,GACP,GAAIX,EAAcC,EAAKU,GACnB,MAAO,CAAEhB,OAAO,QAIpB,GAAa,MAzBzB,SAAmBiB,EAAOC,GACtB,GAAI,SAAUD,EACV,OAAOA,EAAME,KAAKD,GACtB,IAAK,IAAIE,EAAI,EAAGA,EAAIH,EAAM7I,OAAQgJ,IAC9B,GAAIF,EAASD,EAAMG,IACf,OAAOH,EAAMG,EAGzB,CAgBwBC,CAAUf,GAAK,SAAUN,GAAS,OAAOgB,EAAItK,KAAKsJ,EAAQ,IAElE,MAAO,CAAEA,OAAO,EAE5B,EACSd,EAAK,EAAGoC,EAASlC,EAAMF,EAAKoC,EAAOlJ,OAAQ8G,IAAM,CACtD,IACIqC,EAAUR,EADJO,EAAOpC,IAEjB,GAAuB,iBAAZqC,EACP,OAAOA,EAAQvB,KACvB,CACA,OAAO,CACX,CACA,SAASwB,EAAYC,GACjB,OAAOA,EAAOC,QAAO,SAAUC,EAAK3B,GAAS,OAAO2B,GAAO3B,EAAQ,EAAI,EAAI,GAAG,EAClF,CAsKA,IAAI4B,EAAY,CACZC,iBAhOJ,SAA0B3C,GACtB,IAAI4C,EAAa5C,EAAG4C,WACpB,OAAyB,IAArBA,EAAWxD,QAEX,YAAY5H,KAAKoL,EAAW9B,OACrB7B,EACP,YAAYzH,KAAKoL,EAAW9B,OACrB7B,EACP,YAAYzH,KAAKoL,EAAW9B,OACrB7B,OADX,EAEJ,EAuNI4D,yBAtKJ,SAAkC7C,GAC9B,IAAI8C,EAAsB9C,EAAG8C,oBAC7B,OAAkC,IAA9BA,EAAoB1D,QAEpBsC,EAASoB,EAAoBhC,MAAO,WAAY,YAAa,UACtD7B,OADX,EAGJ,EAgKI8D,iBA9JJ,SAA0B/C,GACtB,IAAIgD,EAAahD,EAAGgD,WACpB,OAAyB,IAArBA,EAAW5D,QAEX,aAAa5H,KAAKwL,EAAWlC,OACtB7B,OADX,EAEJ,EAyJIgE,8BAvJJ,SAAuCjD,GACnC,IAAIkD,EAAalD,EAAGkD,WAAYC,EAAcnD,EAAGmD,YAAaC,EAAoBpD,EAAGoD,kBACrF,GAAyB,IAArBF,EAAW9D,OACW,IAAtB+D,EAAY/D,OACgB,IAA5BgE,EAAkBhE,MAFtB,CAIA,IAAIlG,EAASgK,EAAWpC,MACxB,MAAgC,YAA5BsC,EAAkBtC,QAEF,KAAX5H,IAAkBiI,EAAc,CAAC,SAAyC,SAAwCiC,EAAkBtC,QAC7H,KAAX5H,IAAkBiI,EAAc,CAAC,qBAA2CgC,EAAYrC,QAC7E,KAAX5H,IAAkBiI,EAAc,CAAC,YAA8CiC,EAAkBtC,OAN5F,CAOd,EA4IIuC,mBA1IJ,SAA4BrD,GAExB,IAA4B,IADTA,EAAGsD,aACLlE,MACb,OAAOH,CACf,EAuIIsE,mCArIJ,SAA4CvD,GACxC,IAAIwD,EAAYxD,EAAGwD,UACnB,GAAwB,IAApBA,EAAUpE,OAA8D,IAA3BoE,EAAU1C,MAAM5H,OAC7D,OAAO+F,CAEf,EAiIIwE,8BAxHJ,SAAuCzD,GACnC,IAAI0D,EAA0B1D,EAAG0D,wBAAyBP,EAAcnD,EAAGmD,YAC3E,OAA0B,IAAtBA,EAAY/D,OAAyD,WAAtB+D,EAAYrC,QAEzB,IAAlC4C,EAAwBtE,OAAmCsE,EAAwB5C,MAC5E7B,OADX,EAGJ,EAkHI0E,mBAhHJ,SAA4B3D,GACxB,IAAI4D,EAAe5D,EAAG4D,aACtB,GAA2B,IAAvBA,EAAaxE,QAAoCwE,EAAa9C,MAC9D,OAAO7B,CACf,EA6GI4E,iCA3GJ,SAA0C7D,GACtC,IAAI8D,EAAgB9D,EAAG8D,cAAeC,EAAU/D,EAAG+D,QAASZ,EAAcnD,EAAGmD,YAAaC,EAAoBpD,EAAGoD,kBACjH,GAA4B,IAAxBU,EAAc1E,OACI,IAAlB2E,EAAQ3E,OACc,IAAtB+D,EAAY/D,OACgB,IAA5BgE,EAAkBhE,OAEI,WAAtB+D,EAAYrC,QACZiD,EAAQjD,OACoB,aAA5BsC,EAAkBtC,MAEtB,OAA4B,IAAxBgD,EAAchD,MACP7B,OADX,CAEJ,EA+FI+E,cA7FJ,SAAuBhE,GACnB,IAAIQ,EACAyD,EAAUjE,EAAGiE,QACjB,OAAsB,IAAlBA,EAAQ7E,QAEe,aAAvB6E,EAAQnD,MAAMoD,MAA2G,OAAjD,QAAjC1D,EAAKyD,EAAQnD,MAAMqD,gBAA6B,IAAP3D,OAAgB,EAASA,EAAG4D,UACrGnF,OADX,EAEJ,EAuFIoF,gBAzEJ,SAAyBrE,GACrB,IAAIsE,EAAYtE,EAAGsE,UACnB,OAAwB,IAApBA,EAAUlF,QAEV,aAAa5H,KAAK8M,EAAUxD,OACrB7B,EACP,YAAYzH,KAAK8M,EAAUxD,OACpB7B,EACP,YAAYzH,KAAK8M,EAAUxD,OACpB7B,EACP,YAAYzH,KAAK8M,EAAUxD,OACpB7B,OADX,EAEJ,EA8DIsF,gBA5DJ,SAAyBvE,GACrB,IAAIwE,EAAYxE,EAAGwE,UACnB,GAAwB,IAApBA,EAAUpF,OAAmCoF,EAAU1D,MACvD,OAAO7B,CACf,EAyDIwF,YAvDJ,SAAqBzE,GACjB,IAAI0E,EAAQ1E,EAAG0E,MACf,GAAoB,IAAhBA,EAAMtF,MAAiC,CACvC,IAAIoB,EAAKkE,EAAM5D,MAAO6D,EAASnE,EAAGmE,OAAQC,EAAWpE,EAAGoE,SACxD,GAAc,cAAVD,GAAsC,kBAAZC,EAC1B,OAAO3F,CAEf,CACJ,EAgDI4F,qBA9CJ,SAA8B7E,GAC1B,IAAI8E,EAAiB9E,EAAG8E,eACxB,OAA6B,IAAzBA,EAAe1F,QAEf,aAAa5H,KAAKsN,EAAehE,OA3S1B,iBA2SX,EAEJ,EAyCIiE,iBAvCJ,SAA0B/E,GACtB,IAAIgF,EAAahF,EAAGgF,WAAYC,EAAgBjF,EAAGiF,cACnD,GAAyB,IAArBD,EAAW5F,OAA2D,IAAxB6F,EAAc7F,MAC5D,OAAO,EACX,IAAIoB,EAAKwE,EAAWlE,MAAOoE,EAAa1E,EAAG0E,WAAYC,EAAc3E,EAAG2E,YAExE,OAAKF,EAAcnE,OAEA,IAAfoE,GAAoC,IAAhBC,EACblG,OAHX,CAIJ,EA8BImG,0BAxIJ,SAAmCpF,GAC/B,IAAIqF,EAAsBrF,EAAGqF,oBAC7B,GAAkC,IAA9BA,EAAoBjG,QAAoCiG,EAAoBvE,MAC5E,OAAO7B,CAEf,EAoIIqG,iBA3FJ,SAA0BtF,GACtB,IAAIuF,EAAavF,EAAGuF,WAAYpC,EAAcnD,EAAGmD,YACjD,OAAyB,IAArBoC,EAAWnG,OAAyD,IAAtB+D,EAAY/D,QAEnC,WAAtB+D,EAAYrC,OACS,WAAtBqC,EAAYrC,OACU,UAAtBqC,EAAYrC,OACU,WAAtBqC,EAAYrC,OACS,aAArByE,EAAWzE,WAJf,EAKW7B,EACf,EAkFIuG,4BA9BJ,SAAqCxF,GACjC,IAAIyF,EAAmBzF,EAAGyF,iBAC1B,GAA+B,IAA3BA,EAAiBrG,MACjB,OAAO,EACX,IACIsG,EADA5E,EAAQ2E,EAAiB3E,MAE7B,IAAK4E,KAAO5E,EACR,GAAIA,EAAM4E,GACN,OAAOA,CACnB,GAoEA,SAASC,IACL,IAAI3F,EAAIQ,EAEJhG,EAAIoL,OACJnN,EAAIoN,UACR,OAAIvD,EAAY,CACZ,4BAA6B7J,EAC7B,2BAA4BA,EACG,IAA/BA,EAAEkM,OAAOzJ,QAAQ,UACjB,oCAAqCV,EACrC,mBAAoBA,EACpB,sBAAuBA,EACvB,wBAAyBA,KACvB,EACK,WAEP8H,EAAY,CACZ,kBAAmB9H,EACnB,sBAAuBA,EACvB,YAAaA,EACiB,IAA9B/B,EAAEkM,OAAOzJ,QAAQ,SACjB,sBAAuBzC,EACvB,oBAAqB+B,KACnB,EACK,SAEP8H,EAAY,CACZ,YAAauD,UACb,kBAA6G,QAAxFrF,EAAyC,QAAnCR,EAAK8F,SAASC,uBAAoC,IAAP/F,OAAgB,EAASA,EAAGgG,aAA0B,IAAPxF,EAAgBA,EAAK,CAAC,GAC3I,0BAA2BhG,EAC3B,oBAAqBA,EACrB,uBAAwBA,EACxB,6BAA8BA,KAC5B,EACK,QAEJ,SACX,CAgUA,IAAIqF,EAAU,CACVkE,QAnSJ,WACI,IAAIX,EAAoBuC,IACpBM,EAAqC,aAAtB7C,EACf8C,EAAkC,UAAtB9C,EAGhB,IAAK6C,IAAiBC,EAClB,OAAO,EACX,IAAI1L,EAAIoL,OAGR,OAAQtD,EAAY,CAChB,wBAAyB9H,EACzB,gBAAiBA,EACjByL,KAAkB,iBAAkBzL,GACpC0L,GAAa,WAAW1O,KAAKqO,UAAUjD,eACrC,CACV,EAmRIO,YAjUJ,WACI,IAAInD,EACAsE,EAA2C,QAA9BtE,EAAK6F,UAAUvB,iBAA8B,IAAPtE,OAAgB,EAASA,EAAGmG,cACnF,OAAI9E,EAAYiD,EAAW,QAChB,OAEFjD,EAAYiD,EAAW,YAAcjD,EAAYiD,EAAW,QAC1D,oBAEFjD,EAAYiD,EAAW,UACrB,SAEFjD,EAAYiD,EAAW,WACrB,UAEFjD,EAAYiD,EAAW,UAAYjD,EAAYiD,EAAW,OACxD,QAEFjD,EAAYiD,EAAW,UACrB,SAEFjD,EAAYiD,EAAW,UACrB,SAGA,SAEf,EAuSIlB,kBAAmBuC,EACnBV,cApRJ,WACI,YAA0B7N,IAAtB0O,SAASM,UAGNN,SAASM,UACpB,EAgRI9B,UA9IJ,WACI,OAAOuB,UAAUvB,SACrB,EA6II1B,WAvZJ,WACI,IAAIA,EAAaiD,UAAUjD,WAC3B,GAAkBxL,MAAdwL,EACA,MAAM,IAAI1D,GAAW,EAAyB,qCAElD,OAAO0D,CACX,EAkZIyD,IA1JJ,WACI,QAA6BjP,IAAzByO,UAAUS,WACV,MAAM,IAAIpH,GAAW,EAAyB,qCAElD,QAAiC9H,IAA7ByO,UAAUS,WAAWD,IACrB,MAAM,IAAInH,GAAW,EAAyB,yCAElD,OAAO2G,UAAUS,WAAWD,GAChC,EAmJIrB,WA1GJ,WACI,MAAO,CACHE,WAAYU,OAAOV,WACnBC,YAAaS,OAAOT,YACpBoB,WAAYX,OAAOW,WACnBC,YAAaZ,OAAOY,YAE5B,EAoGI1C,cA1LJ,WACI,QAA0B1M,IAAtByO,UAAUY,QACV,MAAM,IAAIvH,GAAW,EAAyB,kCAElD,QAAiC9H,IAA7ByO,UAAUY,QAAQvN,OAClB,MAAM,IAAIgG,GAAW,EAAmC,yCAE5D,OAAO2G,UAAUY,QAAQvN,MAC7B,EAmLI0K,aArMJ,WACI,QAA0BxM,IAAtByO,UAAUY,QACV,MAAM,IAAIvH,GAAW,EAAyB,kCAElD,QAA2B9H,IAAvBwO,OAAOc,YACP,MAAM,IAAIxH,GAAW,EAAyB,mCAElD,OAAO2G,UAAUY,mBAAmBC,WACxC,EA8LI1D,WAzYJ,WACI,IAGI,KAAK,IACT,CACA,MAAOhC,GACH,GAAIA,aAAiBrB,OAA2B,MAAlBqB,EAAa,MACvC,OAAOA,EAAM2F,MAAMC,UAE3B,CACA,MAAM,IAAI1H,GAAW,EAAmC,yCAC5D,EA8XIqG,WAvKJ,WACI,IAAIA,EAAaM,UAAUN,WAC3B,QAAmBnO,IAAfmO,EACA,MAAM,IAAIrG,GAAW,EAAyB,qCAElD,OAAOqG,CACX,EAkKIT,eA1HJ,WACI,QAAwB1N,IAApBwO,OAAOiB,SACP,MAAM,IAAI3H,GAAW,EAAyB,gCAElD,IAAI2H,EAAWjB,OAAOiB,SACtB,GAAiC,mBAAtBA,EAASD,SAChB,MAAM,IAAI1H,GAAW,EAA2B,8CAEpD,OAAO2H,EAASD,UACpB,EAkHIvB,oBArPJ,WACI,QAA4BjO,IAAxByO,UAAUiB,UACV,MAAM,IAAI5H,GAAW,EAAyB,oCAIlD,IAFA,IAAI4H,EAAYjB,UAAUiB,UACtBC,EAAe9P,OAAO+P,eAAeF,KAAeG,cAAcvH,UAC7DwC,EAAI,EAAGA,EAAI4E,EAAU5N,OAAQgJ,IAClC6E,IAAiBA,EAAe9P,OAAO+P,eAAeF,EAAU5E,MAAQgF,SAASxH,WAErF,OAAOqH,CACX,EA4OI7D,WA/XJ,WACI,OAAOiE,KAAKP,WAAW1N,MAC3B,EA8XIwL,MA9IJ,WACI,IAAI0C,EAAgBtB,SAASuB,cAAc,UAC3C,GAAwC,mBAA7BD,EAAcE,WACrB,MAAM,IAAIpI,GAAW,EAA2B,kDAEpD,IAAIqI,EAAeH,EAAcE,WAAW,SAC5C,GAAqB,OAAjBC,EACA,MAAM,IAAIrI,GAAW,EAAoB,iCAE7C,GAAyC,mBAA9BqI,EAAaC,aACpB,MAAM,IAAItI,GAAW,EAA2B,wDAIpD,MAAO,CAAEyF,OAFI4C,EAAaC,aAAaD,EAAaE,QAE3B7C,SADV2C,EAAaC,aAAaD,EAAaG,UAE1D,EAgIIlD,UAtJJ,WACI,GAA2BpN,MAAvByO,UAAU8B,UACV,MAAM,IAAIzI,GAAW,EAAyB,oCAElD,OAAO2G,UAAU8B,SACrB,EAkJInE,UAjRJ,WACI,IAVIhJ,EAUA/B,EAAIoN,UACJ+B,EAAS,GACTC,EAAWpP,EAAEoP,UAAYpP,EAAEqP,cAAgBrP,EAAEsP,iBAAmBtP,EAAEuP,eAItE,QAHiB5Q,IAAbyQ,GACAD,EAAO/G,KAAK,CAACgH,IAEbI,MAAMC,QAAQzP,EAAE+K,WAIQ,aAHJmC,KAhBhBrD,EAAY,GACd,uBAFF9H,EAAIoL,SAGJ,yBAA0BpL,EAC1B,GAAKA,EAAE2N,MAAS,gBAChB,GAAK3N,EAAE4N,SAAY,sBACjB,GAeER,EAAO/G,KAAKpI,EAAE+K,gBAGjB,GAA2B,iBAAhB/K,EAAE+K,UAAwB,CACtC,IAAIA,EAAY/K,EAAE+K,UACdA,GACAoE,EAAO/G,KAAK2C,EAAUzI,MAAM,KAEpC,CACA,OAAO6M,CACX,EA4PIlE,wBA9OJ,WACI,OAAO,QAAUnE,UAAM,OAAQ,GAAQ,WACnC,IAAI8I,EAAaC,EACjB,OAAO,QAAY/I,MAAM,SAAUS,GAC/B,OAAQA,EAAGC,OACP,KAAK,EACD,QAA4B7I,IAAxBwO,OAAO2C,aACP,MAAM,IAAIrJ,GAAW,EAAyB,oCAElD,QAA8B9H,IAA1ByO,UAAUwC,YACV,MAAM,IAAInJ,GAAW,EAAyB,sCAGlD,GAAiC,mBADjCmJ,EAAcxC,UAAUwC,aACDG,MACnB,MAAM,IAAItJ,GAAW,EAA2B,iDAEpDc,EAAGC,MAAQ,EACf,KAAK,EAED,OADAD,EAAGY,KAAKC,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAawH,EAAYG,MAAM,CAAEhJ,KAAM,mBACnD,KAAK,EAED,OADA8I,EAAmBtI,EAAGe,OACf,CAAC,EAAiD,WAAnC6E,OAAO2C,aAAaE,YAAsD,WAA3BH,EAAiBlJ,OAC1F,KAAK,EAED,MADAY,EAAGe,OACG,IAAI7B,GAAW,EAAmC,uDAC5D,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GACJ,EAiNI4D,oBA7ZJ,WACI,QAAiC1L,IAA7B0O,SAASC,gBACT,MAAM,IAAI7G,GAAW,EAAyB,yCAElD,IAAI6G,EAAkBD,SAASC,gBAC/B,GAAiD,mBAAtCA,EAAgB2C,kBACvB,MAAM,IAAIxJ,GAAW,EAA2B,gEAEpD,OAAO6G,EAAgB2C,mBAC3B,EAqZIpF,aAjYJ,WACI,QAAgClM,IAA5BuR,SAASjJ,UAAUkJ,KACnB,MAAM,IAAI1J,GAAW,EAA2B,wCAEpD,OAAOyJ,SAASjJ,UAAUkJ,KAAKhC,UACnC,EA6XI3C,QA7LJ,WACI,IAAIA,EAAU2B,OAAO3B,QACjB4E,EAAc,oBAClB,QAAgBzR,IAAZ6M,EACA,MAAM,IAAI/E,GAAW,EAAyB,GAAG+B,OAAO4H,EAAa,eAEzE,GAAI5E,GAA8B,iBAAZA,EAClB,MAAM,IAAI/E,GAAW,EAAmC,GAAG+B,OAAO4H,EAAa,mBAEnF,OAAO5E,CACX,EAoLIwB,iBAhHJ,WACI,IAAIzF,EAuEA8I,EArEAC,IAAwB/I,EAAK,CAAC,GACV,UAAI,CACpB4F,OAAQ,CAAC,cAEb5F,EAAc,IAAI,CACd4F,OAAQ,CAAC,gBAEb5F,EAAmB,SAAI,CACnB4F,OAAQ,CAAC,aAEb5F,EAAkB,QAAI,CAClB4F,OAAQ,CAAC,SAEb5F,EAAiB,OAAI,CACjB4F,OAAQ,CAAC,kBAEb5F,EAAc,IAAI,CACd4F,OAAQ,CAAC,QAEb5F,EAAsB,YAAI,CACtB4F,OAAQ,CAAC,cAAe,cAE5B5F,EAAoB,UAAI,CACpB4F,OAAQ,CAAC,gBAEb5F,EAAGf,GAAqB,CACpB2G,OAAQ,CAAC,cAAe,aAE5B5F,EAAgB,MAAI,CAChB4F,OAAQ,CAAC,UAEb5F,EAAGf,GAAoB,CACnB2G,OAAQ,CAAC,yBAA0B,YAAa,iBAAkB,0CAClEE,SAAU,CAAC,sBAAuB,oBAAqB,yBAE3D9F,EAAsB,YAAI,CACtB4F,OAAQ,CAAC,iBAEb5F,EAAoB,UAAI,CACpB4F,OAAQ,CACJ,YACA,kBACA,mBACA,qBACA,oBACA,wBACA,iBAEJE,SAAU,CACN,wBACA,oBACA,uBACA,sBACA,qBACA,wBACA,uBACA,wBACA,0BACA,8BACA,6BACA,+BACA,0BACA,8BAGR9F,EAAGf,GAA0B,CACzB2G,OAAQ,CAAC,gBAAiB,4BAE9B5F,GAEA4H,EAAS,CAAC,EACVoB,EAAczH,EAAeqE,QAC7BqD,EAAgB,GAGpB,IAAKH,UAFmB1R,IAApBwO,OAAOE,WACPmD,EAAgB1H,EAAeqE,OAAOE,WAC1BiD,EAAsB,CAClC,IAAIG,EAAQH,EAAqBD,GACjC,QAAc1R,IAAV8R,EAAqB,CACrB,IAAIC,OAAkC/R,IAAjB8R,EAAMtD,QAA+BlE,EAAS0H,WAAM,GAAQ,QAAc,CAACJ,GAAcE,EAAMtD,QAAQ,IACxHyD,SAAsCjS,IAAnB8R,EAAMpD,WAA2BmD,EAAc/P,SAAiBwI,EAAS0H,WAAM,GAAQ,QAAc,CAACH,GAAgBC,EAAMpD,UAAU,IAC7J8B,EAAOkB,GAAWK,GAAkBE,CACxC,CACJ,CACA,OAAOzB,CACX,GAkCI0B,EAA6B,WAC7B,SAASA,IACL/J,KAAKO,gBAAa1I,EAClBmI,KAAKgK,gBAAanS,CACtB,CAoCA,OAnCAkS,EAAY5J,UAAU8J,cAAgB,WAClC,OAAOjK,KAAKO,UAChB,EACAwJ,EAAY5J,UAAU+J,cAAgB,WAClC,OAAOlK,KAAKgK,UAChB,EAIAD,EAAY5J,UAAUgK,OAAS,WAC3B,QAAwBtS,IAApBmI,KAAKO,WACL,MAAM,IAAIH,MAAM,iEAEpB,IAAIK,EApwBZ,SAAgBF,EAAY4C,GACxB,IAAI6G,EAAa,CAAC,EACdI,EAAiB,CACjBjE,KAAK,GAET,IAAK,IAAIkE,KAAgBlH,EAAW,CAChC,IACImH,GAAcC,EADHpH,EAAUkH,IACE9J,GACvBiK,EAAY,CAAErE,KAAK,GACI,iBAAhBmE,EACPE,EAAY,CAAErE,KAAK,EAAMsE,QAASH,GAE7BA,IACLE,EAAY,CAAErE,KAAK,EAAMsE,QAAS/K,IAEtCsK,EAAWK,GAAgBG,EACvBA,EAAUrE,MACViE,EAAiBI,EAEzB,CACA,MAAO,CAACR,EAAYI,EACxB,CA+uBiBD,CAAOnK,KAAKO,WAAY4C,GAAY6G,EAAavJ,EAAG,GAAI2J,EAAiB3J,EAAG,GAErF,OADAT,KAAKgK,WAAaA,EACXI,CACX,EAIAL,EAAY5J,UAAUE,QAAU,WAC5B,OAAO,QAAUL,UAAM,OAAQ,GAAQ,WACnC,IAAIS,EACJ,OAAO,QAAYT,MAAM,SAAUiB,GAC/B,OAAQA,EAAGP,OACP,KAAK,EAED,OADAD,EAAKT,KACE,CAAC,EAAaK,EAAQC,IACjC,KAAK,EAED,OADAG,EAAGF,WAAaU,EAAGO,OACZ,CAAC,EAAcxB,KAAKO,YAEvC,GACJ,GACJ,EACOwJ,CACX,CAzCgC,GA8DhC,SAASW,EAAKjK,GACV,IAAkCU,QAAlB,IAAPV,EAAgB,CAAC,EAAIA,GAAYkK,WAAYA,OAAoB,IAAPxJ,GAAuBA,EAC1F,OAAO,QAAUnB,UAAM,OAAQ,GAAQ,WACnC,IAAIuK,EACJ,OAAO,QAAYvK,MAAM,SAAUoB,GAC/B,OAAQA,EAAGV,OACP,KAAK,EAKD,OAJIiK,GAvBxB,WAEI,KAAItE,OAAOuE,YAAcC,KAAKC,UAAY,MAG1C,IACI,IAAIC,EAAU,IAAIC,eAClBD,EAAQE,KAAK,MAAO,iCAAiCvJ,OAAOjC,EAAS,oBAAoB,GACzFsL,EAAQG,MACZ,CACA,MAAOzJ,GAGH0J,QAAQ1J,MAAMA,EAClB,CACJ,CASwB2J,GAGG,CAAC,GADRb,EAAW,IAAIR,GACe1J,WAClC,KAAK,EAED,OADAe,EAAGI,OACI,CAAC,EAAc+I,GAElC,GACJ,GACJ,gCCl3BA,SAASc,IAYP,OAXAA,EAAW3T,OAAO4T,OAAS5T,OAAO4T,OAAOjC,OAAS,SAAUkC,GAC1D,IAAK,IAAI5I,EAAI,EAAGA,EAAIN,UAAU1I,OAAQgJ,IAAK,CACzC,IAAI6I,EAASnJ,UAAUM,GACvB,IAAK,IAAIJ,KAAOiJ,EACV9T,OAAOyI,UAAUsL,eAAenP,KAAKkP,EAAQjJ,KAC/CgJ,EAAOhJ,GAAOiJ,EAAOjJ,GAG3B,CACA,OAAOgJ,CACT,EACOF,EAASxB,MAAM7J,KAAMqC,UAC9B,CAQA,IAAIqJ,8GACJ,SAAWA,GAQTA,EAAY,IAAI,MAMhBA,EAAa,KAAI,OAKjBA,EAAgB,QAAI,SACrB,CApBD,CAoBGA,IAAWA,EAAS,CAAC,IACxB,MAAMC,EAAoB,WAgH1B,SAASC,EAAqBC,GAqB5B,YApBgB,IAAZA,IACFA,EAAU,CAAC,GAgKf,SAA4BC,EAAaC,EAAYC,EAAkBH,QACrD,IAAZA,IACFA,EAAU,CAAC,GAEb,IAAI,OACFxF,EAASE,SAAS0F,YAAW,SAC7BC,GAAW,GACTL,EACAM,EAAgB9F,EAAO+F,QACvBC,EAASX,EAAOY,IAChBC,EAAW,KACXC,EAAQC,IAUZ,SAASA,IAIP,OAHYN,EAActM,OAAS,CACjC6M,IAAK,OAEMA,GACf,CACA,SAASC,IACPN,EAASX,EAAOY,IAChB,IAAIM,EAAYH,IACZI,EAAqB,MAAbD,EAAoB,KAAOA,EAAYJ,EACnDA,EAAQI,EACJL,GACFA,EAAS,CACPF,SACAS,SAAUV,EAAQU,SAClBD,SAGN,CA+CA,SAASE,EAAUC,GAIjB,IAAIC,EAAkC,SAA3B5G,EAAOyG,SAASI,OAAoB7G,EAAOyG,SAASI,OAAS7G,EAAOyG,SAASK,KACpFA,EAAqB,iBAAPH,EAAkBA,EAAKI,EAAWJ,GAMpD,OAFAG,EAAOA,EAAKlT,QAAQ,KAAM,OAC1BoT,EAAUJ,EAAM,sEAAwEE,GACjF,IAAIG,IAAIH,EAAMF,EACvB,CAnFa,MAATT,IACFA,EAAQ,EACRL,EAAcoB,aAAalC,EAAS,CAAC,EAAGc,EAActM,MAAO,CAC3D6M,IAAKF,IACH,KAgFN,IAAIJ,EAAU,CACZ,UAAIC,GACF,OAAOA,CACT,EACA,YAAIS,GACF,OAAOhB,EAAYzF,EAAQ8F,EAC7B,EACA,MAAAqB,CAAOhW,GACL,GAAI+U,EACF,MAAM,IAAInM,MAAM,8CAIlB,OAFAiG,EAAOoH,iBAAiB9B,EAAmBgB,GAC3CJ,EAAW/U,EACJ,KACL6O,EAAOqH,oBAAoB/B,EAAmBgB,GAC9CJ,EAAW,IAAI,CAEnB,EACAR,WAAWiB,GACFjB,EAAW1F,EAAQ2G,GAE5BD,YACA,cAAAY,CAAeX,GAEb,IAAIY,EAAMb,EAAUC,GACpB,MAAO,CACLa,SAAUD,EAAIC,SACdC,OAAQF,EAAIE,OACZC,KAAMH,EAAIG,KAEd,EACAzM,KA1FF,SAAc0L,EAAInN,GAChBwM,EAASX,EAAOsC,KAChB,IAAIlB,EAAWmB,EAAe7B,EAAQU,SAAUE,EAAInN,GAChDmM,GAAkBA,EAAiBc,EAAUE,GACjDR,EAAQC,IAAa,EACrB,IAAIyB,EAAeC,EAAgBrB,EAAUN,GACzCoB,EAAMxB,EAAQL,WAAWe,GAE7B,IACEX,EAAciC,UAAUF,EAAc,GAAIN,EAC5C,CAAE,MAAOnM,GAKP,GAAIA,aAAiB4M,cAA+B,mBAAf5M,EAAMxB,KACzC,MAAMwB,EAIR4E,EAAOyG,SAASxB,OAAOsC,EACzB,CACI1B,GAAYK,GACdA,EAAS,CACPF,SACAS,SAAUV,EAAQU,SAClBD,MAAO,GAGb,EA8DE5S,QA7DF,SAAiB+S,EAAInN,GACnBwM,EAASX,EAAO4C,QAChB,IAAIxB,EAAWmB,EAAe7B,EAAQU,SAAUE,EAAInN,GAChDmM,GAAkBA,EAAiBc,EAAUE,GACjDR,EAAQC,IACR,IAAIyB,EAAeC,EAAgBrB,EAAUN,GACzCoB,EAAMxB,EAAQL,WAAWe,GAC7BX,EAAcoB,aAAaW,EAAc,GAAIN,GACzC1B,GAAYK,GACdA,EAAS,CACPF,SACAS,SAAUV,EAAQU,SAClBD,MAAO,GAGb,EA+CE0B,GAAGrV,GACMiT,EAAcoC,GAAGrV,IAG5B,OAAOkT,CACT,CAtRSoC,EAjBP,SAA+BnI,EAAQ8F,GACrC,IAAI,SACF0B,EAAQ,OACRC,EAAM,KACNC,GACE1H,EAAOyG,SACX,OAAOmB,EAAe,GAAI,CACxBJ,WACAC,SACAC,QAGF5B,EAActM,OAASsM,EAActM,MAAM4O,KAAO,KAAMtC,EAActM,OAASsM,EAActM,MAAM0C,KAAO,UAC5G,IACA,SAA2B8D,EAAQ2G,GACjC,MAAqB,iBAAPA,EAAkBA,EAAKI,EAAWJ,EAClD,GACoE,KAAMnB,EAC5E,CAmDA,SAASwB,EAAU9L,EAAOzB,GACxB,IAAc,IAAVyB,SAAmBA,EACrB,MAAM,IAAInB,MAAMN,EAEpB,CACA,SAAS4O,EAAQC,EAAM7O,GACrB,IAAK6O,EAAM,CAEc,oBAAZxD,SAAyBA,QAAQyD,KAAK9O,GACjD,IAME,MAAM,IAAIM,MAAMN,EAElB,CAAE,MAAOvH,GAAI,CACf,CACF,CAOA,SAAS4V,EAAgBrB,EAAUN,GACjC,MAAO,CACLiC,IAAK3B,EAASjN,MACd0C,IAAKuK,EAASvK,IACdmK,IAAKF,EAET,CAIA,SAASyB,EAAeY,EAAS7B,EAAInN,EAAO0C,GAgB1C,YAfc,IAAV1C,IACFA,EAAQ,MAEKwL,EAAS,CACtBwC,SAA6B,iBAAZgB,EAAuBA,EAAUA,EAAQhB,SAC1DC,OAAQ,GACRC,KAAM,IACS,iBAAPf,EAAkB8B,EAAU9B,GAAMA,EAAI,CAC9CnN,QAKA0C,IAAKyK,GAAMA,EAAGzK,KAAOA,GA7BhBsI,KAAKC,SAASzD,SAAS,IAAI0H,OAAO,EAAG,IAgC9C,CAIA,SAAS3B,EAAW4B,GAClB,IAAI,SACFnB,EAAW,IAAG,OACdC,EAAS,GAAE,KACXC,EAAO,IACLiB,EAGJ,OAFIlB,GAAqB,MAAXA,IAAgBD,GAAiC,MAArBC,EAAO1T,OAAO,GAAa0T,EAAS,IAAMA,GAChFC,GAAiB,MAATA,IAAcF,GAA+B,MAAnBE,EAAK3T,OAAO,GAAa2T,EAAO,IAAMA,GACrEF,CACT,CAIA,SAASiB,EAAUG,GACjB,IAAIC,EAAa,CAAC,EAClB,GAAID,EAAM,CACR,IAAIE,EAAYF,EAAKtT,QAAQ,KACzBwT,GAAa,IACfD,EAAWnB,KAAOkB,EAAKF,OAAOI,GAC9BF,EAAOA,EAAKF,OAAO,EAAGI,IAExB,IAAIC,EAAcH,EAAKtT,QAAQ,KAC3ByT,GAAe,IACjBF,EAAWpB,OAASmB,EAAKF,OAAOK,GAChCH,EAAOA,EAAKF,OAAO,EAAGK,IAEpBH,IACFC,EAAWrB,SAAWoB,EAE1B,CACA,OAAOC,CACT,CA6IA,IAAIG,EAiDJ,SAASC,EAAYC,EAAQC,EAAaC,QACvB,IAAbA,IACFA,EAAW,KAEb,IACI5B,EAAW6B,GADuB,iBAAhBF,EAA2BV,EAAUU,GAAeA,GACpC3B,UAAY,IAAK4B,GACvD,GAAgB,MAAZ5B,EACF,OAAO,KAET,IAAI8B,EAAWC,EAAcL,IAkI/B,SAA2BI,GACzBA,EAASE,MAAK,CAACpX,EAAGO,IAAMP,EAAEqX,QAAU9W,EAAE8W,MAAQ9W,EAAE8W,MAAQrX,EAAEqX,MAqB5D,SAAwBrX,EAAGO,GAEzB,OADeP,EAAEkB,SAAWX,EAAEW,QAAUlB,EAAEsX,MAAM,GAAI,GAAGC,OAAM,CAAC9W,EAAGyJ,IAAMzJ,IAAMF,EAAE2J,KAM/ElK,EAAEA,EAAEkB,OAAS,GAAKX,EAAEA,EAAEW,OAAS,GAG/B,CACF,CA/BIsW,CAAexX,EAAEyX,WAAWpP,KAAIqP,GAAQA,EAAKC,gBAAgBpX,EAAEkX,WAAWpP,KAAIqP,GAAQA,EAAKC,kBAC/F,CApIEC,CAAkBV,GAClB,IAAIW,EAAU,KACd,IAAK,IAAI3N,EAAI,EAAc,MAAX2N,GAAmB3N,EAAIgN,EAAShW,SAAUgJ,EAAG,CAO3D,IAAI4N,EAAUC,EAAW3C,GACzByC,EAAUG,EAAiBd,EAAShN,GAAI4N,EAC1C,CACA,OAAOD,CACT,CAeA,SAASV,EAAcL,EAAQI,EAAUe,EAAaC,QACnC,IAAbhB,IACFA,EAAW,SAEO,IAAhBe,IACFA,EAAc,SAEG,IAAfC,IACFA,EAAa,IAEf,IAAIC,EAAe,CAACC,EAAOrE,EAAOsE,KAChC,IAAIX,EAAO,CACTW,kBAA+BjZ,IAAjBiZ,EAA6BD,EAAM5B,MAAQ,GAAK6B,EAC9DC,eAAuC,IAAxBF,EAAME,cACrBX,cAAe5D,EACfqE,SAEEV,EAAKW,aAAaE,WAAW,OAC/B3D,EAAU8C,EAAKW,aAAaE,WAAWL,GAAa,wBAA2BR,EAAKW,aAAhC,wBAAiFH,EAAjF,4GACpDR,EAAKW,aAAeX,EAAKW,aAAaf,MAAMY,EAAWhX,SAEzD,IAAIsV,EAAOgC,EAAU,CAACN,EAAYR,EAAKW,eACnCZ,EAAaQ,EAAYhP,OAAOyO,GAIhCU,EAAMK,UAAYL,EAAMK,SAASvX,OAAS,IAC5C0T,GAGgB,IAAhBwD,EAAMrE,MAAgB,4FAAqGyC,EAAO,MAClIW,EAAciB,EAAMK,SAAUvB,EAAUO,EAAYjB,KAIpC,MAAd4B,EAAM5B,MAAiB4B,EAAMrE,QAGjCmD,EAASrO,KAAK,CACZ2N,OACAa,MAAOqB,EAAalC,EAAM4B,EAAMrE,OAChC0D,cACA,EAaJ,OAXAX,EAAO6B,SAAQ,CAACP,EAAOrE,KACrB,IAAI6E,EAEJ,GAAmB,KAAfR,EAAM5B,MAA+C,OAA7BoC,EAAcR,EAAM5B,OAAiBoC,EAAYlP,SAAS,KAGpF,IAAK,IAAImP,KAAYC,EAAwBV,EAAM5B,MACjD2B,EAAaC,EAAOrE,EAAO8E,QAH7BV,EAAaC,EAAOrE,EAKtB,IAEKmD,CACT,CAeA,SAAS4B,EAAwBtC,GAC/B,IAAIuC,EAAWvC,EAAKzT,MAAM,KAC1B,GAAwB,IAApBgW,EAAS7X,OAAc,MAAO,GAClC,IAAK8X,KAAUC,GAAQF,EAEnBG,EAAaF,EAAMG,SAAS,KAE5BC,EAAWJ,EAAMxX,QAAQ,MAAO,IACpC,GAAoB,IAAhByX,EAAK/X,OAGP,OAAOgY,EAAa,CAACE,EAAU,IAAM,CAACA,GAExC,IAAIC,EAAeP,EAAwBG,EAAK7W,KAAK,MACjDwN,EAAS,GAcb,OANAA,EAAO/G,QAAQwQ,EAAahR,KAAIiR,GAAuB,KAAZA,EAAiBF,EAAW,CAACA,EAAUE,GAASlX,KAAK,QAE5F8W,GACFtJ,EAAO/G,QAAQwQ,GAGVzJ,EAAOvH,KAAIwQ,GAAYrC,EAAK+B,WAAW,MAAqB,KAAbM,EAAkB,IAAMA,GAChF,EA1LA,SAAWjC,GACTA,EAAiB,KAAI,OACrBA,EAAqB,SAAI,WACzBA,EAAqB,SAAI,WACzBA,EAAkB,MAAI,OACvB,CALD,CAKGA,IAAeA,EAAa,CAAC,IACL,IAAI2C,IAAI,CAAC,OAAQ,gBAAiB,OAAQ,KAAM,QAAS,aAyLpF,MAAMC,EAAU,YACVC,EAAsB,EACtBC,EAAkB,EAClBC,EAAoB,EACpBC,EAAqB,GACrBC,GAAgB,EAChBC,EAAUC,GAAW,MAANA,EACrB,SAASrB,EAAalC,EAAMzC,GAC1B,IAAIgF,EAAWvC,EAAKzT,MAAM,KACtBiX,EAAejB,EAAS7X,OAO5B,OANI6X,EAASkB,KAAKH,KAChBE,GAAgBH,GAEd9F,IACFiG,GAAgBN,GAEXX,EAASmB,QAAOH,IAAMD,EAAQC,KAAIvP,QAAO,CAAC6M,EAAO8C,IAAY9C,GAASmC,EAAQha,KAAK2a,GAAWV,EAAkC,KAAZU,EAAiBR,EAAoBC,IAAqBI,EACvL,CAaA,SAAShC,EAAiBoC,EAAQhF,GAChC,IAAI,WACFqC,GACE2C,EACAC,EAAgB,CAAC,EACjBC,EAAkB,IAClBzC,EAAU,GACd,IAAK,IAAI3N,EAAI,EAAGA,EAAIuN,EAAWvW,SAAUgJ,EAAG,CAC1C,IAAIwN,EAAOD,EAAWvN,GAClBqQ,EAAMrQ,IAAMuN,EAAWvW,OAAS,EAChCsZ,EAAwC,MAApBF,EAA0BlF,EAAWA,EAASkC,MAAMgD,EAAgBpZ,SAAW,IACnGuZ,EAAQC,EAAU,CACpBlE,KAAMkB,EAAKW,aACXC,cAAeZ,EAAKY,cACpBiC,OACCC,GACH,IAAKC,EAAO,OAAO,KACnBxb,OAAO4T,OAAOwH,EAAeI,EAAME,QACnC,IAAIvC,EAAQV,EAAKU,MACjBP,EAAQhP,KAAK,CAEX8R,OAAQN,EACRjF,SAAUoD,EAAU,CAAC8B,EAAiBG,EAAMrF,WAC5CwF,aAAcC,EAAkBrC,EAAU,CAAC8B,EAAiBG,EAAMG,gBAClExC,UAEyB,MAAvBqC,EAAMG,eACRN,EAAkB9B,EAAU,CAAC8B,EAAiBG,EAAMG,eAExD,CACA,OAAO/C,CACT,CA8CA,SAAS6C,EAAUI,EAAS1F,GACH,iBAAZ0F,IACTA,EAAU,CACRtE,KAAMsE,EACNxC,eAAe,EACfiC,KAAK,IAGT,IAAKQ,EAASC,GAgChB,SAAqBxE,EAAM8B,EAAeiC,QAClB,IAAlBjC,IACFA,GAAgB,QAEN,IAARiC,IACFA,GAAM,GAERtE,EAAiB,MAATO,IAAiBA,EAAK2C,SAAS,MAAQ3C,EAAK2C,SAAS,MAAO,eAAkB3C,EAAlB,oCAAuEA,EAAKhV,QAAQ,MAAO,MAA3F,qIAAwPgV,EAAKhV,QAAQ,MAAO,MAAQ,MACxV,IAAImZ,EAAS,GACTM,EAAe,IAAMzE,EAAKhV,QAAQ,UAAW,IAChDA,QAAQ,OAAQ,KAChBA,QAAQ,qBAAsB,QAC9BA,QAAQ,qBAAqB,CAAC0Z,EAAGC,EAAWjC,KAC3CyB,EAAO9R,KAAK,CACVsS,YACAjC,WAA0B,MAAdA,IAEPA,EAAa,eAAiB,gBAsBvC,OApBI1C,EAAK2C,SAAS,MAChBwB,EAAO9R,KAAK,CACVsS,UAAW,MAEbF,GAAyB,MAATzE,GAAyB,OAATA,EAAgB,QAC9C,qBACO+D,EAETU,GAAgB,QACE,KAATzE,GAAwB,MAATA,IAQxByE,GAAgB,iBAGX,CADO,IAAIG,OAAOH,EAAc3C,OAAgBlZ,EAAY,KAClDub,EACnB,CAxEkCU,CAAYP,EAAQtE,KAAMsE,EAAQxC,cAAewC,EAAQP,KACrFE,EAAQrF,EAASqF,MAAMM,GAC3B,IAAKN,EAAO,OAAO,KACnB,IAAIH,EAAkBG,EAAM,GACxBG,EAAeN,EAAgB9Y,QAAQ,UAAW,MAClD8Z,EAAgBb,EAAMnD,MAAM,GAoBhC,MAAO,CACLqD,OApBWK,EAAexQ,QAAO,CAAC+Q,EAAMhF,EAAMxC,KAC9C,IAAI,UACFoH,EAAS,WACTjC,GACE3C,EAGJ,GAAkB,MAAd4E,EAAmB,CACrB,IAAIK,EAAaF,EAAcvH,IAAU,GACzC6G,EAAeN,EAAgBhD,MAAM,EAAGgD,EAAgBpZ,OAASsa,EAAWta,QAAQM,QAAQ,UAAW,KACzG,CACA,MAAMsH,EAAQwS,EAAcvH,GAM5B,OAJEwH,EAAKJ,GADHjC,IAAepQ,OACC1J,GAEC0J,GAAS,IAAItH,QAAQ,OAAQ,KAE3C+Z,CAAI,GACV,CAAC,GAGFnG,SAAUkF,EACVM,eACAE,UAEJ,CA0CA,SAAS/C,EAAWjP,GAClB,IACE,OAAOA,EAAM/F,MAAM,KAAKsF,KAAI7H,GAAKib,mBAAmBjb,GAAGgB,QAAQ,MAAO,SAAQY,KAAK,IACrF,CAAE,MAAO4G,GAEP,OADAiN,GAAQ,EAAO,iBAAoBnN,EAApB,oHAA8JE,EAAQ,MAC9KF,CACT,CACF,CAIA,SAASmO,EAAc7B,EAAU4B,GAC/B,GAAiB,MAAbA,EAAkB,OAAO5B,EAC7B,IAAKA,EAASjH,cAAcoK,WAAWvB,EAAS7I,eAC9C,OAAO,KAIT,IAAIuN,EAAa1E,EAASmC,SAAS,KAAOnC,EAAS9V,OAAS,EAAI8V,EAAS9V,OACrEya,EAAWvG,EAASzT,OAAO+Z,GAC/B,OAAIC,GAAyB,MAAbA,EAEP,KAEFvG,EAASkC,MAAMoE,IAAe,GACvC,CAmCA,SAASE,EAAoBC,EAAMC,EAAOC,EAAMvF,GAC9C,MAAO,qBAAuBqF,EAAvB,2CAAiFC,EAAQ,YAAcE,KAAKC,UAAUzF,GAAtH,yCAAgLuF,EAAhL,2HACT,CA6BA,SAASG,EAAoBrE,EAASsE,GACpC,IAAIC,EANN,SAAoCvE,GAClC,OAAOA,EAAQqC,QAAO,CAACO,EAAO1G,IAAoB,IAAVA,GAAe0G,EAAMrC,MAAM5B,MAAQiE,EAAMrC,MAAM5B,KAAKtV,OAAS,GACvG,CAIoBmb,CAA2BxE,GAI7C,OAAIsE,EACKC,EAAY/T,KAAI,CAACoS,EAAOxG,IAAQA,IAAQ4D,EAAQ3W,OAAS,EAAIuZ,EAAMrF,SAAWqF,EAAMG,eAEtFwB,EAAY/T,KAAIoS,GAASA,EAAMG,cACxC,CAIA,SAAS0B,EAAUC,EAAOC,EAAgBC,EAAkBC,GAI1D,IAAInI,OAHmB,IAAnBmI,IACFA,GAAiB,GAGE,iBAAVH,EACThI,EAAK8B,EAAUkG,IAEfhI,EAAK3B,EAAS,CAAC,EAAG2J,GAClB3H,GAAWL,EAAGa,WAAab,EAAGa,SAAS1L,SAAS,KAAMkS,EAAoB,IAAK,WAAY,SAAUrH,IACrGK,GAAWL,EAAGa,WAAab,EAAGa,SAAS1L,SAAS,KAAMkS,EAAoB,IAAK,WAAY,OAAQrH,IACnGK,GAAWL,EAAGc,SAAWd,EAAGc,OAAO3L,SAAS,KAAMkS,EAAoB,IAAK,SAAU,OAAQrH,KAE/F,IAEIoI,EAFAC,EAAwB,KAAVL,GAAgC,KAAhBhI,EAAGa,SACjCyH,EAAaD,EAAc,IAAMrI,EAAGa,SAWxC,GAAkB,MAAdyH,EACFF,EAAOF,MACF,CACL,IAAIK,EAAqBN,EAAetb,OAAS,EAKjD,IAAKwb,GAAkBG,EAAWtE,WAAW,MAAO,CAClD,IAAIwE,EAAaF,EAAW9Z,MAAM,KAClC,KAAyB,OAAlBga,EAAW,IAChBA,EAAWC,QACXF,GAAsB,EAExBvI,EAAGa,SAAW2H,EAAW3a,KAAK,IAChC,CACAua,EAAOG,GAAsB,EAAIN,EAAeM,GAAsB,GACxE,CACA,IAAItG,EApHN,SAAqBjC,EAAI0I,QACF,IAAjBA,IACFA,EAAe,KAEjB,IACE7H,SAAUyH,EAAU,OACpBxH,EAAS,GAAE,KACXC,EAAO,IACS,iBAAPf,EAAkB8B,EAAU9B,GAAMA,EACzCa,EAAWyH,EAAaA,EAAWtE,WAAW,KAAOsE,EAO3D,SAAyBxE,EAAc4E,GACrC,IAAIlE,EAAWkE,EAAazb,QAAQ,OAAQ,IAAIuB,MAAM,KAUtD,OATuBsV,EAAatV,MAAM,KACzB4V,SAAQwB,IACP,OAAZA,EAEEpB,EAAS7X,OAAS,GAAG6X,EAASmE,MACb,MAAZ/C,GACTpB,EAASlQ,KAAKsR,EAChB,IAEKpB,EAAS7X,OAAS,EAAI6X,EAAS3W,KAAK,KAAO,GACpD,CAnBwE+a,CAAgBN,EAAYI,GAAgBA,EAClH,MAAO,CACL7H,WACAC,OAAQ+H,EAAgB/H,GACxBC,KAAM+H,EAAc/H,GAExB,CAqGagI,CAAY/I,EAAIoI,GAEvBY,EAA2BV,GAA6B,MAAfA,GAAsBA,EAAW1D,SAAS,KAEnFqE,GAA2BZ,GAA8B,MAAfC,IAAuBJ,EAAiBtD,SAAS,KAI/F,OAHK3C,EAAKpB,SAAS+D,SAAS,OAASoE,IAA4BC,IAC/DhH,EAAKpB,UAAY,KAEZoB,CACT,CAWA,MAAMgC,EAAYiF,GAASA,EAAMrb,KAAK,KAAKZ,QAAQ,SAAU,KAIvDqZ,EAAoBzF,GAAYA,EAAS5T,QAAQ,OAAQ,IAAIA,QAAQ,OAAQ,KAI7E4b,EAAkB/H,GAAWA,GAAqB,MAAXA,EAAsBA,EAAOkD,WAAW,KAAOlD,EAAS,IAAMA,EAA7C,GAIxDgI,EAAgB/H,GAASA,GAAiB,MAATA,EAAoBA,EAAKiD,WAAW,KAAOjD,EAAO,IAAMA,EAAzC,GAoBtD,MAAMoI,UAA6B/V,OA6MnC,SAASgW,EAAqB3U,GAC5B,OAAgB,MAATA,GAAyC,iBAAjBA,EAAM4U,QAAmD,iBAArB5U,EAAM6U,YAAqD,kBAAnB7U,EAAM8U,UAA0B,SAAU9U,CACvJ,CAEA,MAAM+U,EAA0B,CAAC,OAAQ,MAAO,QAAS,UAEnDC,GADuB,IAAIzE,IAAIwE,GACN,CAAC,SAAUA,IACd,IAAIxE,IAAIyE,GACR,IAAIzE,IAAI,CAAC,IAAK,IAAK,IAAK,IAAK,MACf,IAAIA,IAAI,CAAC,IAAK,MA+hDzB0E,OAAO,2DC3wFtC,IAAIC,EAAS,2BACTC,EAAe,4CACfC,EAA0B,mJA2C1BC,EAAgB,KA8DhBC,EAAkBnW,QAAQoW,UAAUC,MAAK,WAC3C,OA9DmC7D,EA8DjB,KA5DI,OAAlB0D,IAIJA,EAAgB,IAAIlW,SAAQ,SAAUoW,EAASE,GAC7C,GAAsB,oBAAX7Q,OAWX,GAJIA,OAAO8Q,QAAU/D,GACnBjI,QAAQyD,KAAKiI,GAGXxQ,OAAO8Q,OACTH,EAAQ3Q,OAAO8Q,aAIjB,IACE,IAAIC,EAnEO,WAGf,IAFA,IAAIC,EAAU9Q,SAAS+Q,iBAAiB,gBAAiB5V,OAAOiV,EAAQ,OAE/DhU,EAAI,EAAGA,EAAI0U,EAAQ1d,OAAQgJ,IAAK,CACvC,IAAIyU,EAASC,EAAQ1U,GAErB,GAAKiU,EAAa3e,KAAKmf,EAAOG,KAI9B,OAAOH,CACT,CAEA,OAAO,IACT,CAqDmBI,GAETJ,GAAUhE,EACZjI,QAAQyD,KAAKiI,GACHO,IACVA,EAxDW,SAAsBhE,GACvC,IAAIqE,EAAcrE,IAAWA,EAAOsE,qBAAuB,8BAAgC,GACvFN,EAAS7Q,SAASuB,cAAc,UACpCsP,EAAOG,IAAM,GAAG7V,OAAOiV,GAAQjV,OAAO+V,GACtC,IAAIE,EAAapR,SAASqR,MAAQrR,SAASsR,KAE3C,IAAKF,EACH,MAAM,IAAIvX,MAAM,+EAIlB,OADAuX,EAAWG,YAAYV,GAChBA,CACT,CA4CiBW,CAAa3E,IAGxBgE,EAAO3J,iBAAiB,QAAQ,WAC1BpH,OAAO8Q,OACTH,EAAQ3Q,OAAO8Q,QAEfD,EAAO,IAAI9W,MAAM,2BAErB,IACAgX,EAAO3J,iBAAiB,SAAS,WAC/ByJ,EAAO,IAAI9W,MAAM,4BACnB,GACF,CAAE,MAAOqB,GAEP,YADAyV,EAAOzV,EAET,MAnCEuV,EAAQ,KAoCZ,KA3CSF,EAHM,IAAoB1D,CA+DrC,IACI4E,GAAa,EACjBjB,EAAuB,OAAE,SAAUkB,GAC5BD,GACH7M,QAAQyD,KAAKqJ,EAEjB,IACA,IAAIC,EAAa,WACf,IAAK,IAAIC,EAAO9V,UAAU1I,OAAQye,EAAO,IAAI1P,MAAMyP,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/ED,EAAKC,GAAQhW,UAAUgW,GAGzBL,GAAa,EACb,IAAIM,EAAYC,KAAKC,MACrB,OAAOzB,EAAgBE,MAAK,SAAUwB,GACpC,OA7Ba,SAAoBA,EAAaL,EAAME,GACtD,GAAoB,OAAhBG,EACF,OAAO,KAGT,IAAIC,EAASD,EAAY5O,WAAMhS,EAAWugB,GAE1C,OArEoB,SAAyBM,EAAQJ,GAChDI,GAAWA,EAAOC,kBAIvBD,EAAOC,iBAAiB,CACtB1Y,KAAM,YACNR,QAAS,SACT6Y,UAAWA,GAEf,CA0DEM,CAAgBF,EAAQJ,GACjBI,CACT,CAqBWG,CAAWJ,EAAaL,EAAME,EACvC,GACF,0BCpGA,IA2NIQ,EA3NAC,EAEJ,WACE,SAASA,EAAWC,EAAanN,GAC/B,GAA2B,mBAAhBmN,EACT,MAAM,IAAIC,UAAU,uHAA+HD,EAAc,KAGnKhZ,KAAKkZ,aAAeF,EACpBhZ,KAAKmZ,cAyTT,SAA8BtN,GAG5B,MAFmBA,IAA6B,IAAlBA,EAAQuN,OAGpC,OAAO,EAGT,IAAIC,EAAexN,GAAWA,EAAQwN,aAEtC,QAAqBxhB,IAAjBwhB,EACF,OAAOC,IAGT,GAA4B,iBAAjBD,GAA6BA,EAAe,EACrD,MAAM,IAAIJ,UAAU,2CAA6CI,GAGnE,OAAOA,CACT,CA3UyBE,CAAqB1N,GAC1C7L,KAAKwZ,iBA6UT,SAAiC3N,GAC/B,IAAI4N,EAAkB5N,GAAWA,EAAQ4N,gBAEzC,QAAwB5hB,IAApB4hB,EACF,OAAOC,EAGT,GAA+B,mBAApBD,EACT,MAAM,IAAIR,UAAU,uCAAyCQ,GAG/D,OAAOA,CACT,CAzV4BE,CAAwB9N,GAChD7L,KAAK4Z,YA2VT,SAA4B/N,GAC1B,IAAIgO,EAAahO,GAAWA,EAAQgO,WAEpC,QAAmBhiB,IAAfgiB,EACF,OAAO,SAAUtX,GACf,OAAOA,CACT,EAGF,GAA0B,mBAAfsX,EACT,MAAM,IAAIZ,UAAU,kCAAoCY,GAG1D,OAAOA,CACT,CAzWuBC,CAAmBjO,GACtC7L,KAAK+Z,UA2WT,SAA0BlO,GAGxB,MAFmBA,IAA6B,IAAlBA,EAAQpU,OAGpC,OAAO,KAGT,IAAIuiB,EAAWnO,GAAWA,EAAQmO,SAElC,QAAiBniB,IAAbmiB,EACF,OAAO,IAAIC,IAGb,GAAiB,OAAbD,EAAmB,CACrB,IACIE,EADiB,CAAC,MAAO,MAAO,SAAU,SACRvH,QAAO,SAAUwH,GACrD,OAAOH,GAAwC,mBAArBA,EAASG,EACrC,IAEA,GAAgC,IAA5BD,EAAiBvgB,OACnB,MAAM,IAAIsf,UAAU,oCAAsCiB,EAAiBrf,KAAK,MAEpF,CAEA,OAAOmf,CACT,CApYqBI,CAAiBvO,GAClC7L,KAAKqa,OAAS,KACdra,KAAKC,KAoYT,SAAsB4L,GACpB,OAAIA,GAAWA,EAAQ5L,KACd4L,EAAQ5L,KAGV,IACT,CA1YgBqa,CAAazO,EAC3B,CAGA,IAAI0O,EAASxB,EAAW5Y,UA8JxB,OAzJAoa,EAAO7P,KAAO,SAAcnI,GAC1B,GAAIA,QACF,MAAM,IAAI0W,UAAU,oEAA4EtX,OAAOY,GAAO,KAGhH,IAAI6W,EAmMR,SAAyBoB,GAGvB,IAAIC,EAAgBD,EAAOH,OAE3B,GAAsB,OAAlBI,IAA2BA,EAAcC,eAAiBD,EAAc9Z,KAAKhH,OAAS6gB,EAAOrB,cAC/F,OAAOsB,EAIT,IAAIE,EAAW,CACbD,eAAe,EACf/Z,KAAM,GACNia,UAAW,IASb,OANAJ,EAAOH,OAASM,EAEhBH,EAAOhB,kBAAiB,YAO1B,SAAuBgB,EAAQpB,GAI7B,GAFAA,EAAMsB,eAAgB,EAEI,IAAtBtB,EAAMzY,KAAKhH,OAAf,CAOA,IAAIkhB,EAEJ,IACEA,EAAeL,EAAOtB,aAAaE,EAAMzY,KAC3C,CAAE,MAAOpI,GACP,OAAOuiB,EAAeN,EAAQpB,EAAO,IAAIH,UAAU,sJAAmKtX,OAAOpJ,GAAK,KACpO,CAGA,IAAKsiB,GAA6C,mBAAtBA,EAAa5D,KACvC,OAAO6D,EAAeN,EAAQpB,EAAO,IAAIH,UAAU,yJAAsKtX,OAAOkZ,GAAgB,MAIlPA,EAAa5D,MAAK,SAAUjU,GAE1B,IAAK+X,EAAY/X,GACf,MAAM,IAAIiW,UAAU,qKAAkLtX,OAAOqB,GAAU,KAGzN,GAAIA,EAAOrJ,SAAWyf,EAAMzY,KAAKhH,OAC/B,MAAM,IAAIsf,UAAU,uNAA8OtX,OAAOyX,EAAMzY,MAAU,gBAAkBgB,OAAOqB,IAIpTgY,EAAiB5B,GAEjB,IAAK,IAAIzW,EAAI,EAAGA,EAAIyW,EAAMwB,UAAUjhB,OAAQgJ,IAAK,CAC/C,IAAIpB,EAAQyB,EAAOL,GAEfpB,aAAiBnB,MACnBgZ,EAAMwB,UAAUjY,GAAGuU,OAAO3V,GAE1B6X,EAAMwB,UAAUjY,GAAGqU,QAAQzV,EAE/B,CACF,IAAU,OAAE,SAAUE,GACpBqZ,EAAeN,EAAQpB,EAAO3X,EAChC,GA1CA,MAFEuZ,EAAiB5B,EA6CrB,CAxDI6B,CAAcT,EAAQG,EACxB,IAEOA,CACT,CA1NgBO,CAAgBlb,MACxBga,EAAWha,KAAK+Z,UAEhBoB,EAAWnb,KAAK4Z,YAAYrX,GAGhC,GAAIyX,EAAU,CACZ,IAAIoB,EAAgBpB,EAASqB,IAAIF,GAEjC,GAAIC,EAAe,CACjB,IAAIE,EAAYlC,EAAMkC,YAAclC,EAAMkC,UAAY,IACtD,OAAO,IAAI1a,SAAQ,SAAUoW,GAC3BsE,EAAUha,MAAK,WACb0V,EAAQoE,EACV,GACF,GACF,CACF,CAIAhC,EAAMzY,KAAKW,KAAKiB,GAChB,IAAIgZ,EAAU,IAAI3a,SAAQ,SAAUoW,EAASE,GAC3CkC,EAAMwB,UAAUtZ,KAAK,CACnB0V,QAASA,EACTE,OAAQA,GAEZ,IAMA,OAJI8C,GACFA,EAASrd,IAAIwe,EAAUI,GAGlBA,CACT,EAuBAhB,EAAOiB,SAAW,SAAkB7a,GAClC,IAAKoa,EAAYpa,GACf,MAAM,IAAIsY,UAAU,0EAAkFtY,EAAO,KAM/G,IAFA,IAAI8a,EAAe,GAEV9Y,EAAI,EAAGA,EAAIhC,EAAKhH,OAAQgJ,IAC/B8Y,EAAana,KAAKtB,KAAK0K,KAAK/J,EAAKgC,IAAW,OAAE,SAAUlB,GACtD,OAAOA,CACT,KAGF,OAAOb,QAAQC,IAAI4a,EACrB,EAOAlB,EAAOmB,MAAQ,SAAenZ,GAC5B,IAAIyX,EAAWha,KAAK+Z,UAEpB,GAAIC,EAAU,CACZ,IAAImB,EAAWnb,KAAK4Z,YAAYrX,GAEhCyX,EAAiB,OAAEmB,EACrB,CAEA,OAAOnb,IACT,EAQAua,EAAOoB,SAAW,WAChB,IAAI3B,EAAWha,KAAK+Z,UAMpB,OAJIC,GACFA,EAAS0B,QAGJ1b,IACT,EASAua,EAAOqB,MAAQ,SAAerZ,EAAKhB,GACjC,IAAIyY,EAAWha,KAAK+Z,UAEpB,GAAIC,EAAU,CACZ,IAMMuB,EANFJ,EAAWnb,KAAK4Z,YAAYrX,QAGD1K,IAA3BmiB,EAASqB,IAAIF,KAKX5Z,aAAiBnB,OACnBmb,EAAU3a,QAAQsW,OAAO3V,IAGV,OAAE,WAAa,IAE9Bga,EAAU3a,QAAQoW,QAAQzV,GAG5ByY,EAASrd,IAAIwe,EAAUI,GAE3B,CAEA,OAAOvb,IACT,EAQO+Y,CACT,CA/KA,GA2MIW,EAA2C,iBAAZhV,SAAoD,mBAArBA,QAAQmX,SAA0B,SAAUrkB,GACvGshB,IACHA,EAAkBlY,QAAQoW,WAG5B8B,EAAgB7B,MAAK,WACnBvS,QAAQmX,SAASrkB,EACnB,GACF,EAA4B,mBAAjBskB,aAA8B,SAAUtkB,GACjDskB,aAAatkB,EACf,EAAI,SAAUA,GACZukB,WAAWvkB,EACb,EAqFA,SAASsjB,EAAeN,EAAQpB,EAAO3X,GAErCuZ,EAAiB5B,GAEjB,IAAK,IAAIzW,EAAI,EAAGA,EAAIyW,EAAMzY,KAAKhH,OAAQgJ,IACrC6X,EAAOkB,MAAMtC,EAAMzY,KAAKgC,IACxByW,EAAMwB,UAAUjY,GAAGuU,OAAOzV,EAE9B,CAGA,SAASuZ,EAAiB5B,GACxB,GAAIA,EAAMkC,UACR,IAAK,IAAI3Y,EAAI,EAAGA,EAAIyW,EAAMkC,UAAU3hB,OAAQgJ,IAC1CyW,EAAMkC,UAAU3Y,IAGtB,CA4FA,SAASoY,EAAY5hB,GACnB,MAAoB,iBAANA,GAAwB,OAANA,GAAkC,iBAAbA,EAAEQ,SAAqC,IAAbR,EAAEQ,QAAgBR,EAAEQ,OAAS,GAAKjC,OAAOyI,UAAUsL,eAAenP,KAAKnD,EAAGA,EAAEQ,OAAS,GACtK,CAEAqiB,EAAOC,QAAUlD,+BCvbjB,IAAImD,EAAU,EAAQ,OAMlBC,EAAgB,CAClBC,mBAAmB,EACnBC,aAAa,EACbC,cAAc,EACdC,cAAc,EACdC,aAAa,EACbC,iBAAiB,EACjBC,0BAA0B,EAC1BC,0BAA0B,EAC1BC,QAAQ,EACRC,WAAW,EACXlY,MAAM,GAEJmY,EAAgB,CAClB7c,MAAM,EACNtG,QAAQ,EACRwG,WAAW,EACX4c,QAAQ,EACRC,QAAQ,EACR3a,WAAW,EACX4a,OAAO,GASLC,EAAe,CACjB,UAAY,EACZC,SAAS,EACTZ,cAAc,EACdC,aAAa,EACbK,WAAW,EACXlY,MAAM,GAEJyY,EAAe,CAAC,EAIpB,SAASC,EAAWC,GAElB,OAAIpB,EAAQqB,OAAOD,GACVJ,EAIFE,EAAaE,EAAoB,WAAMnB,CAChD,CAXAiB,EAAalB,EAAQsB,YAhBK,CACxB,UAAY,EACZC,QAAQ,EACRlB,cAAc,EACdC,aAAa,EACbK,WAAW,GAYbO,EAAalB,EAAQwB,MAAQR,EAY7B,IAAIS,EAAiBjmB,OAAOimB,eACxBzb,EAAsBxK,OAAOwK,oBAC7B0b,EAAwBlmB,OAAOkmB,sBAC/BC,EAA2BnmB,OAAOmmB,yBAClCpW,EAAiB/P,OAAO+P,eACxBqW,EAAkBpmB,OAAOyI,UAsC7B6b,EAAOC,QArCP,SAAS8B,EAAqBC,EAAiBC,EAAiBC,GAC9D,GAA+B,iBAApBD,EAA8B,CAEvC,GAAIH,EAAiB,CACnB,IAAIK,EAAqB1W,EAAewW,GAEpCE,GAAsBA,IAAuBL,GAC/CC,EAAqBC,EAAiBG,EAAoBD,EAE9D,CAEA,IAAIvd,EAAOuB,EAAoB+b,GAE3BL,IACFjd,EAAOA,EAAKe,OAAOkc,EAAsBK,KAM3C,IAHA,IAAIG,EAAgBf,EAAWW,GAC3BK,EAAgBhB,EAAWY,GAEtBtb,EAAI,EAAGA,EAAIhC,EAAKhH,SAAUgJ,EAAG,CACpC,IAAIJ,EAAM5B,EAAKgC,GAEf,KAAKma,EAAcva,IAAU2b,GAAaA,EAAU3b,IAAW8b,GAAiBA,EAAc9b,IAAW6b,GAAiBA,EAAc7b,IAAO,CAC7I,IAAI+b,EAAaT,EAAyBI,EAAiB1b,GAE3D,IAEEob,EAAeK,EAAiBzb,EAAK+b,EACvC,CAAE,MAAO/lB,GAAI,CACf,CACF,CACF,CAEA,OAAOylB,CACT,gCCpGe,SAASO,EAAQC,GAG9B,OAAOD,EAAU,mBAAqB7H,QAAU,iBAAmBA,OAAO+H,SAAW,SAAUD,GAC7F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAK,mBAAqB9H,QAAU8H,EAAEE,cAAgBhI,QAAU8H,IAAM9H,OAAOvW,UAAY,gBAAkBqe,CACpH,EAAGD,EAAQC,EACb,CCNe,SAASG,EAAcllB,GACpC,IAAIkJ,ECFS,SAAqBlJ,EAAGF,GACrC,GAAI,UAAYglB,EAAQ9kB,KAAOA,EAAG,OAAOA,EACzC,IAAIlB,EAAIkB,EAAEid,OAAOkI,aACjB,QAAI,IAAWrmB,EAAG,CAChB,IAAIoK,EAAIpK,EAAE+D,KAAK7C,EAAGF,UAClB,GAAI,UAAYglB,EAAQ5b,GAAI,OAAOA,EACnC,MAAM,IAAIsW,UAAU,+CACtB,CACA,OAAyBtX,OAAiBlI,EAC5C,CDPUmlB,CAAYnlB,GACpB,MAAO,UAAY8kB,EAAQ5b,GAAKA,EAAIA,EAAI,EAC1C,CEJA,SAASkc,EAAkBtT,EAAQ5B,GACjC,IAAK,IAAIhH,EAAI,EAAGA,EAAIgH,EAAMhQ,OAAQgJ,IAAK,CACrC,IAAI2b,EAAa3U,EAAMhH,GACvB2b,EAAWQ,WAAaR,EAAWQ,aAAc,EACjDR,EAAWS,cAAe,EACtB,UAAWT,IAAYA,EAAWU,UAAW,GACjDtnB,OAAOimB,eAAepS,EAAQoT,EAAcL,EAAW/b,KAAM+b,EAC/D,CACF,kBCNA,IAAIzc,EAAM,GACNod,EAAOpd,EAAIuP,QACXrB,EAAQlO,EAAIkO,MAaZmP,EAAqB,wCAwGrBC,EAAW,CACblf,KAAM,SACNmf,OAAQ,SAAgBvT,GACtB,IAAIwT,EAEJ,GAAIxT,EAAQyT,cAAoC,oBAAb/Y,SAA0B,CAC3D,IAAIjO,EA1BF,SAAc2H,GAIlB,IAHA,IAAIsf,EAAS,GAAG7d,OAAOzB,EAAM,KACzB3F,EAAKiM,SAASiZ,OAAOhkB,MAAM,KAEtBmH,EAAI,EAAGA,EAAIrI,EAAGX,OAAQgJ,IAAK,CAGlC,IAFA,IAAIrK,EAAIgC,EAAGqI,GAEY,MAAhBrK,EAAE8B,OAAO,IACd9B,EAAIA,EAAE+B,UAAU,EAAG/B,EAAEqB,QAGvB,GAA0B,IAAtBrB,EAAEqD,QAAQ4jB,GAAe,OAAOjnB,EAAE+B,UAAUklB,EAAO5lB,OAAQrB,EAAEqB,OACnE,CAEA,OAAO,IACT,CAWY6lB,CAAY3T,EAAQyT,cACxBhnB,IAAG+mB,EAAQ/mB,EACjB,CAEA,OAAO+mB,CACT,EACAI,kBAAmB,SAA2BC,EAAK7T,GAC7CA,EAAQyT,cAAoC,oBAAb/Y,UA/C7B,SAAgBtG,EAAMsB,EAAOoe,EAASC,GAC5C,IAAIC,EAAgBxd,UAAU1I,OAAS,QAAsB9B,IAAjBwK,UAAU,GAAmBA,UAAU,GAAK,CACtF4M,KAAM,IACN6Q,SAAU,UAGRH,IACFE,EAAcE,QAAU,IAAIxH,KAC5BsH,EAAcE,QAAQC,QAAQH,EAAcE,QAAQE,UAAsB,GAAVN,EAAe,MAG7EC,IAAQC,EAAcD,OAASA,GACnCrZ,SAASiZ,OAhFS,SAAyBvf,EAAMigB,EAAKrU,GACxD,IAAIsU,EAAMtU,GAAW,CAAC,EACtBsU,EAAIlR,KAAOkR,EAAIlR,MAAQ,IACvB,IAAI1N,EAAQ6e,mBAAmBF,GAC3Bne,EAAM,GAAGL,OAAOzB,EAAM,KAAKyB,OAAOH,GAEtC,GAAI4e,EAAIE,OAAS,EAAG,CAClB,IAAIA,EAASF,EAAIE,OAAS,EAC1B,GAAIC,OAAOC,MAAMF,GAAS,MAAM,IAAIjgB,MAAM,6BAC1C2B,GAAO,aAAaL,OAAOmJ,KAAK2V,MAAMH,GACxC,CAEA,GAAIF,EAAIP,OAAQ,CACd,IAAKV,EAAmBjnB,KAAKkoB,EAAIP,QAC/B,MAAM,IAAI3G,UAAU,4BAGtBlX,GAAO,YAAYL,OAAOye,EAAIP,OAChC,CAEA,GAAIO,EAAIlR,KAAM,CACZ,IAAKiQ,EAAmBjnB,KAAKkoB,EAAIlR,MAC/B,MAAM,IAAIgK,UAAU,0BAGtBlX,GAAO,UAAUL,OAAOye,EAAIlR,KAC9B,CAEA,GAAIkR,EAAIJ,QAAS,CACf,GAAuC,mBAA5BI,EAAIJ,QAAQU,YACrB,MAAM,IAAIxH,UAAU,6BAGtBlX,GAAO,aAAaL,OAAOye,EAAIJ,QAAQU,cACzC,CAKA,GAHIN,EAAIO,WAAU3e,GAAO,cACrBoe,EAAIQ,SAAQ5e,GAAO,YAEnBoe,EAAIL,SAGN,OAFuC,iBAAjBK,EAAIL,SAAwBK,EAAIL,SAASlZ,cAAgBuZ,EAAIL,UAGjF,KAAK,EACH/d,GAAO,oBACP,MAEF,IAAK,MACHA,GAAO,iBACP,MAEF,IAAK,SACHA,GAAO,oBACP,MAEF,IAAK,OACHA,GAAO,kBACP,MAEF,QACE,MAAM,IAAIkX,UAAU,8BAI1B,OAAOlX,CACT,CAesB6e,CAAgB3gB,EAAMmgB,mBAAmB7e,GAAQse,EACrE,CAmCIL,CAAc3T,EAAQyT,aAAcI,EAAK7T,EAAQgV,cAAehV,EAAQiV,aAAcjV,EAAQgU,cAElG,GAGEkB,EAAc,CAChB9gB,KAAM,cACNmf,OAAQ,SAAgBvT,GACtB,IAAIwT,EAEJ,GAAsB,oBAAXhZ,OAAwB,CACjC,IAAIyH,EAASzH,OAAOyG,SAASgB,QAExBzH,OAAOyG,SAASgB,QAAUzH,OAAOyG,SAASiB,MAAQ1H,OAAOyG,SAASiB,KAAKpS,QAAQ,MAAQ,IAC1FmS,EAASzH,OAAOyG,SAASiB,KAAK1T,UAAUgM,OAAOyG,SAASiB,KAAKpS,QAAQ,OAMvE,IAHA,IACIyX,EADQtF,EAAOzT,UAAU,GACVmB,MAAM,KAEhBmH,EAAI,EAAGA,EAAIyQ,EAAOzZ,OAAQgJ,IAAK,CACtC,IAAIqe,EAAM5N,EAAOzQ,GAAGhH,QAAQ,KAExBqlB,EAAM,GACE5N,EAAOzQ,GAAGtI,UAAU,EAAG2mB,KAErBnV,EAAQoV,oBAClB5B,EAAQjM,EAAOzQ,GAAGtI,UAAU2mB,EAAM,GAGxC,CACF,CAEA,OAAO3B,CACT,GAGE6B,EAAyB,KAEzBC,EAAwB,WAC1B,GAA+B,OAA3BD,EAAiC,OAAOA,EAE5C,IACEA,EAAoC,cAAX7a,QAAkD,OAAxBA,OAAO+a,aAC1D,IAAIC,EAAU,wBACdhb,OAAO+a,aAAaE,QAAQD,EAAS,OACrChb,OAAO+a,aAAaG,WAAWF,EACjC,CAAE,MAAO9oB,GACP2oB,GAAyB,CAC3B,CAEA,OAAOA,CACT,EAEIE,EAAe,CACjBnhB,KAAM,eACNmf,OAAQ,SAAgBvT,GACtB,IAAIwT,EAEJ,GAAIxT,EAAQ2V,oBAAsBL,IAAyB,CACzD,IAAIzB,EAAMrZ,OAAO+a,aAAaK,QAAQ5V,EAAQ2V,oBAC1C9B,IAAKL,EAAQK,EACnB,CAEA,OAAOL,CACT,EACAI,kBAAmB,SAA2BC,EAAK7T,GAC7CA,EAAQ2V,oBAAsBL,KAChC9a,OAAO+a,aAAaE,QAAQzV,EAAQ2V,mBAAoB9B,EAE5D,GAGEgC,EAA2B,KAE3BC,EAA0B,WAC5B,GAAiC,OAA7BD,EAAmC,OAAOA,EAE9C,IACEA,EAAsC,cAAXrb,QAAoD,OAA1BA,OAAOub,eAC5D,IAAIP,EAAU,wBACdhb,OAAOub,eAAeN,QAAQD,EAAS,OACvChb,OAAOub,eAAeL,WAAWF,EACnC,CAAE,MAAO9oB,GACPmpB,GAA2B,CAC7B,CAEA,OAAOA,CACT,EAEIE,EAAiB,CACnB3hB,KAAM,iBACNmf,OAAQ,SAAgBvT,GACtB,IAAIwT,EAEJ,GAAIxT,EAAQgW,sBAAwBF,IAA2B,CAC7D,IAAIjC,EAAMrZ,OAAOub,eAAeH,QAAQ5V,EAAQgW,sBAC5CnC,IAAKL,EAAQK,EACnB,CAEA,OAAOL,CACT,EACAI,kBAAmB,SAA2BC,EAAK7T,GAC7CA,EAAQgW,sBAAwBF,KAClCtb,OAAOub,eAAeN,QAAQzV,EAAQgW,qBAAsBnC,EAEhE,GAGEoC,EAAc,CAChB7hB,KAAM,YACNmf,OAAQ,SAAgBvT,GACtB,IAAIwT,EAAQ,GAEZ,GAAyB,oBAAd/Y,UAA2B,CACpC,GAAIA,UAAUrC,UAEZ,IAAK,IAAItB,EAAI,EAAGA,EAAI2D,UAAUrC,UAAUtK,OAAQgJ,IAC9C0c,EAAM/d,KAAKgF,UAAUrC,UAAUtB,IAI/B2D,UAAUiC,cACZ8W,EAAM/d,KAAKgF,UAAUiC,cAGnBjC,UAAUgC,UACZ+W,EAAM/d,KAAKgF,UAAUgC,SAEzB,CAEA,OAAO+W,EAAM1lB,OAAS,EAAI0lB,OAAQxnB,CACpC,GAGEkqB,EAAU,CACZ9hB,KAAM,UACNmf,OAAQ,SAAgBvT,GACtB,IAAIwT,EACA0C,EAAUlW,EAAQkW,UAAgC,oBAAbxb,SAA2BA,SAASC,gBAAkB,MAM/F,OAJIub,GAA2C,mBAAzBA,EAAQC,eAC5B3C,EAAQ0C,EAAQC,aAAa,SAGxB3C,CACT,GAGEpQ,EAAO,CACThP,KAAM,OACNmf,OAAQ,SAAgBvT,GACtB,IAAIwT,EAEJ,GAAsB,oBAAXhZ,OAAwB,CACjC,IAAIiC,EAAWjC,OAAOyG,SAASe,SAASqF,MAAM,mBAE9C,GAAI5K,aAAoBI,MACtB,GAA2C,iBAAhCmD,EAAQoW,oBAAkC,CACnD,GAAqD,iBAA1C3Z,EAASuD,EAAQoW,qBAC1B,OAGF5C,EAAQ/W,EAASuD,EAAQoW,qBAAqBhoB,QAAQ,IAAK,GAC7D,MACEolB,EAAQ/W,EAAS,GAAGrO,QAAQ,IAAK,GAGvC,CAEA,OAAOolB,CACT,GAGE6C,EAAY,CACdjiB,KAAM,YACNmf,OAAQ,SAAgBvT,GAEtB,IAAIsW,EAAuE,iBAArCtW,EAAQsW,yBAAwCtW,EAAQsW,yBAA2B,EAAI,EAIzH7Z,EAA6B,oBAAXjC,QAA0BA,OAAOyG,UAAYzG,OAAOyG,SAASsV,UAAY/b,OAAOyG,SAASsV,SAASlP,MAAM,0DAE9H,GAAK5K,EAEL,OAAOA,EAAS6Z,EAClB,GAkBEE,EAAuB,WACzB,SAASA,EAAQC,GACf,IAAIzW,EAAUxJ,UAAU1I,OAAS,QAAsB9B,IAAjBwK,UAAU,GAAmBA,UAAU,GAAK,CAAC,GCvVxE,SAAyBkgB,EAAUC,GAChD,KAAMD,aAAoBC,GACxB,MAAM,IAAIvJ,UAAU,oCAExB,CDqVIwJ,CAAgBziB,KAAMqiB,GAEtBriB,KAAK2E,KAAO,mBACZ3E,KAAKmD,UAAY,CAAC,EAClBnD,KAAK0iB,KAAKJ,EAAUzW,EACtB,CDpVa,IAAsB2W,EAAaG,EC+YhD,OD/YmCH,ECsVtBH,EDtVmCM,ECsV1B,CAAC,CACrBpgB,IAAK,OACLhB,MAAO,SAAc+gB,GACnB,IAAIzW,EAAUxJ,UAAU1I,OAAS,QAAsB9B,IAAjBwK,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/EugB,EAAcvgB,UAAU1I,OAAS,QAAsB9B,IAAjBwK,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACvFrC,KAAKsiB,SAAWA,EAChBtiB,KAAK6L,QAhWX,SAAkB5J,GAQhB,OAPAgd,EAAK3iB,KAAKyT,EAAMzT,KAAK+F,UAAW,IAAI,SAAUmJ,GAC5C,GAAIA,EACF,IAAK,IAAIxT,KAAQwT,OACG3T,IAAdoK,EAAIjK,KAAqBiK,EAAIjK,GAAQwT,EAAOxT,GAGtD,IACOiK,CACT,CAuVqB4gB,CAAShX,EAAS7L,KAAK6L,SAAW,CAAC,EA/B/C,CACLnN,MAAO,CAAC,cAAe,SAAU,eAAgB,iBAAkB,YAAa,WAChFuiB,kBAAmB,MACnB3B,aAAc,UACdkC,mBAAoB,aACpBK,qBAAsB,aAEtBiB,OAAQ,CAAC,gBACTC,gBAAiB,CAAC,YAyBZ/iB,KAAK6L,QAAQmX,qBAAoBhjB,KAAK6L,QAAQoW,oBAAsBjiB,KAAK6L,QAAQmX,oBACrFhjB,KAAK4iB,YAAcA,EACnB5iB,KAAKijB,YAAY9D,GACjBnf,KAAKijB,YAAYlC,GACjB/gB,KAAKijB,YAAY7B,GACjBphB,KAAKijB,YAAYrB,GACjB5hB,KAAKijB,YAAYnB,GACjB9hB,KAAKijB,YAAYlB,GACjB/hB,KAAKijB,YAAYhU,GACjBjP,KAAKijB,YAAYf,EACnB,GACC,CACD3f,IAAK,cACLhB,MAAO,SAAqBgJ,GAC1BvK,KAAKmD,UAAUoH,EAAStK,MAAQsK,CAClC,GACC,CACDhI,IAAK,SACLhB,MAAO,SAAgB2hB,GACrB,IAAInjB,EAAQC,KAEPkjB,IAAgBA,EAAiBljB,KAAK6L,QAAQnN,OACnD,IAAIykB,EAAW,GASf,OARAD,EAAe9R,SAAQ,SAAU/G,GAC/B,GAAItK,EAAMoD,UAAUkH,GAAe,CACjC,IAAI+U,EAASrf,EAAMoD,UAAUkH,GAAc+U,OAAOrf,EAAM8L,SAEpDuT,GAA4B,iBAAXA,IAAqBA,EAAS,CAACA,IAChDA,IAAQ+D,EAAWA,EAASzhB,OAAO0d,GACzC,CACF,IACIpf,KAAKsiB,SAASc,cAAcC,sBAA8BF,EAEvDA,EAASxpB,OAAS,EAAIwpB,EAAS,GAAK,IAC7C,GACC,CACD5gB,IAAK,oBACLhB,MAAO,SAA2Bme,EAAKoD,GACrC,IAAIQ,EAAStjB,KAER8iB,IAAQA,EAAS9iB,KAAK6L,QAAQiX,QAC9BA,IACD9iB,KAAK6L,QAAQkX,iBAAmB/iB,KAAK6L,QAAQkX,gBAAgBpnB,QAAQ+jB,IAAQ,GACjFoD,EAAO1R,SAAQ,SAAUmS,GACnBD,EAAOngB,UAAUogB,IAAYD,EAAOngB,UAAUogB,GAAW9D,kBAAkBC,EAAK4D,EAAOzX,QAC7F,IACF,ID3YE8W,GAAY9D,EAAkB2D,EAAYriB,UAAWwiB,GAEzDjrB,OAAOimB,eAAe6E,EAAa,YAAa,CAC9CxD,UAAU,IC2YLqD,CACT,CArE2B,GAuE3BA,EAAQ1d,KAAO,0CE5Zf,IAAiD6e,IASvCC,GACM,MACN,IAAIC,EAAsB,CAE9B,yCAIA,CAAEC,EAAyB1H,KAEjC,aASAA,EAAQ/I,MAWR,SAAoB0Q,EAAY5gB,GAC5B,OAAO6gB,EAAWD,GAAYlR,MAAK,SAAUzJ,GACzC,IAAI6a,EAAU7a,EAAM6a,QAIhBC,EAA2B,QAAf9a,EAAMtE,MAAkB3B,EAAO2B,OAASsE,EAAMtE,KAG9D,GAAKof,GAAaD,IAAcC,IAAaD,EACzC,OAAO,EAGX,IAAIE,EAAmB/a,EAAMgb,YAAYjU,OAAM,SAAUkU,GACrD,IAAIC,EAAWD,EAAWC,QACtBC,EAAWF,EAAWE,SACtBC,EAAWH,EAAW3iB,MACtBA,EAAWyB,EAAOmhB,GAGtB,IAAK5iB,EAAS,OAAO,EAErB,OAAQ4iB,GACJ,IAAK,cACL,IAAK,OACD,OAAO5iB,EAAMqF,gBAAkByd,EAASzd,cAE5C,IAAK,QACL,IAAK,SACL,IAAK,eACL,IAAK,gBACDyd,EAAWC,EAAKD,GAChB9iB,EAAW+iB,EAAK/iB,GAChB,MAEJ,IAAK,aACD8iB,EAAWE,EAAMF,GACjB9iB,EAAWgjB,EAAMhjB,GACjB,MAEJ,IAAK,eACL,IAAK,sBACL,IAAsB,qBAClB8iB,EAAWG,EAAUH,GACrB9iB,EAAWijB,EAAUjjB,GACrB,MAEJ,IAAK,OACL,IAAK,QACL,IAAK,cACL,IAAK,aACD8iB,EAAWI,SAASJ,EAAU,KAAO,EACrC9iB,EAAWkjB,SAASljB,EAAO,KAAO,EAI1C,OAAQ6iB,GACJ,IAAK,MAAO,OAAO7iB,GAAS8iB,EAC5B,IAAK,MAAO,OAAO9iB,GAAS8iB,EAC5B,QAAY,OAAO9iB,IAAU8iB,EAErC,IAEA,OAAQL,IAAqBF,IAAcE,GAAoBF,CACnE,GACJ,EA3EA7H,EAAQyI,MAAQb,EAIhB,IAAIc,EAAqB,sDACrBC,EAAqB,gDACrBC,EAAqB,uBACrBC,EAAqB,+BACrBC,EAAqB,oBAqEzB,SAASlB,EAAWD,GAChB,OAAOA,EAAWpoB,MAAM,KAAKsF,KAAI,SAAUmI,GAGvC,IAAI+b,GAFJ/b,EAAQA,EAAM9O,QAEU+Y,MAAMyR,GAC1BP,EAAcY,EAAS,GACvBrgB,EAAcqgB,EAAS,GACvBf,EAAce,EAAS,IAAM,GAC7BC,EAAc,CAAC,EAmBnB,OAjBAA,EAAOnB,UAAYM,GAAuC,QAA3BA,EAASxd,cACxCqe,EAAOtgB,KAAUA,EAAOA,EAAKiC,cAAgB,MAG7Cqd,EAAcA,EAAY/Q,MAAM,gBAAkB,GAElD+R,EAAOhB,YAAcA,EAAYnjB,KAAI,SAAUojB,GAC3C,IAAIc,EAAWd,EAAWhR,MAAM0R,GAC5BT,EAAWa,EAAS,GAAGpe,cAAcsM,MAAM2R,GAE/C,MAAO,CACHT,SAAUD,EAAQ,GAClBA,QAAUA,EAAQ,GAClB5iB,MAAUyjB,EAAS,GAE3B,IAEOC,CACX,GACJ,CAIA,SAAST,EAAUU,GACf,IACIC,EADAC,EAAU9E,OAAO4E,GAQrB,OALKE,IAEDA,GADAD,EAAUD,EAAMhS,MAAM,yBACJ,GAAKiS,EAAQ,IAG5BC,CACX,CAEA,SAASb,EAAMc,GACX,IAAI9jB,EAAQ+jB,WAAWD,GAGvB,OAFY1jB,OAAO0jB,GAAYnS,MAAM6R,GAAoB,IAGrD,IAAK,OAAQ,OAAOxjB,EAAQ,KAC5B,IAAK,OAAQ,OAAe,GAARA,EACpB,QAAa,OAAOA,EAE5B,CAEA,SAAS+iB,EAAK3qB,GACV,IAAI4H,EAAQ+jB,WAAW3rB,GAGvB,OAFYgI,OAAOhI,GAAQuZ,MAAM4R,GAAgB,IAG7C,IAAK,KACL,IAAK,MAAO,OAAe,GAARvjB,EACnB,IAAK,KAAO,OAAe,GAARA,EAAa,KAChC,IAAK,KAAO,OAAe,GAARA,EAAa,KAAO,GACvC,IAAK,KAAO,OAAe,GAARA,EACnB,IAAK,KAAO,OAAe,GAARA,EACnB,IAAK,KAAO,OAAe,GAARA,EAAa,GAChC,QAAY,OAAOA,EAE3B,CAGO,EAED,+CAIA,CAAEoiB,EAAyB,EAAqB,KAEtD,aACA,EAAoBpqB,EAAE,GACD,EAAoBlB,EAAE,EAAqB,CACzC,QAAW,IAAM,IAGxC,IAAIktB,EAAmB,SACnBC,EAAY,OACZ/tB,EAAQ,CAAC,EAEb,SAASguB,EAAcvS,GACrB,MAAO,IAAMA,EAAMtM,aACrB,CAW6B,MAAM8e,EATnC,SAA4BzlB,GAC1B,GAAIxI,EAAMgU,eAAexL,GACvB,OAAOxI,EAAMwI,GAGf,IAAI0lB,EAAQ1lB,EAAKhG,QAAQsrB,EAAkBE,GAC3C,OAAQhuB,EAAMwI,GAAQulB,EAAUvtB,KAAK0tB,GAAS,IAAMA,EAAQA,CAC9D,CAKO,EAED,0CAIA,CAAE3J,EAAQ4J,EAA0B,KAE1C,aAGA,IAAIC,EAAe,EAA0C,0CAA+C,MACxGC,EAAiC,oBAAXzf,OAAyBA,OAAO0f,WAAa,KAGvE,SAASC,EAAI/c,EAAOjG,EAAQijB,GAC1B,IAAIC,EAAOlmB,KACX,GAAG8lB,IAAiBG,EAAY,CAC9B,IAAIE,EAAML,EAAaxpB,KAAK+J,OAAQ4C,GACpCjJ,KAAKsQ,QAAU6V,EAAI7V,QACnBtQ,KAAKomB,MAAQD,EAAIC,MAEjBD,EAAIE,YAAYC,EAClB,MACEtmB,KAAKsQ,QAAUuV,EAAY5c,EAAOjG,GAClChD,KAAKomB,MAAQnd,EAoBf,SAASqd,EAAOC,GACdL,EAAK5V,QAAUiW,EAAIjW,QACnB4V,EAAKE,MAAQG,EAAIH,KACnB,CApBApmB,KAAKqmB,YAIL,SAAqB9Z,GAChB4Z,GACDA,EAAIE,YAAY9Z,EAEpB,EAPAvM,KAAKwmB,eASL,SAAwBja,GACnB4Z,GACDA,EAAIK,eAAeja,EAEvB,EAZAvM,KAAKymB,QAoBL,WACKN,GACDA,EAAIK,eAAeF,EAEvB,CACF,CAMAtK,EAAOC,QAJP,SAAoBhT,EAAOjG,EAAQijB,GACjC,OAAO,IAAID,EAAI/c,EAAOjG,EAAQijB,EAChC,CAKO,EAED,wCAIEjK,IAER,aASA,IAAI4B,EAAwBlmB,OAAOkmB,sBAC/BnS,EAAiB/T,OAAOyI,UAAUsL,eAClCib,EAAmBhvB,OAAOyI,UAAUwmB,qBAsDxC3K,EAAOC,QA5CP,WACC,IACC,IAAKvkB,OAAO4T,OACX,OAAO,EAMR,IAAIsb,EAAQ,IAAIjlB,OAAO,OAEvB,GADAilB,EAAM,GAAK,KACkC,MAAzClvB,OAAOwK,oBAAoB0kB,GAAO,GACrC,OAAO,EAKR,IADA,IAAIC,EAAQ,CAAC,EACJlkB,EAAI,EAAGA,EAAI,GAAIA,IACvBkkB,EAAM,IAAMllB,OAAOmlB,aAAankB,IAAMA,EAKvC,GAAwB,eAHXjL,OAAOwK,oBAAoB2kB,GAAO/lB,KAAI,SAAU5H,GAC5D,OAAO2tB,EAAM3tB,EACd,IACW2B,KAAK,IACf,OAAO,EAIR,IAAIksB,EAAQ,CAAC,EAIb,MAHA,uBAAuBvrB,MAAM,IAAI4V,SAAQ,SAAU4V,GAClDD,EAAMC,GAAUA,CACjB,IAEE,yBADEtvB,OAAOiJ,KAAKjJ,OAAO4T,OAAO,CAAC,EAAGyb,IAAQlsB,KAAK,GAMhD,CAAE,MAAOod,GAER,OAAO,CACR,CACD,CAEiBgP,GAAoBvvB,OAAO4T,OAAS,SAAUC,EAAQC,GAKtE,IAJA,IAAI4J,EAEA8R,EADAla,EAtDL,SAAkBkT,GACjB,GAAIA,QACH,MAAM,IAAIjH,UAAU,yDAGrB,OAAOvhB,OAAOwoB,EACf,CAgDUiH,CAAS5b,GAGTiH,EAAI,EAAGA,EAAInQ,UAAU1I,OAAQ6Y,IAAK,CAG1C,IAAK,IAAIjQ,KAFT6S,EAAO1d,OAAO2K,UAAUmQ,IAGnB/G,EAAenP,KAAK8Y,EAAM7S,KAC7ByK,EAAGzK,GAAO6S,EAAK7S,IAIjB,GAAIqb,EAAuB,CAC1BsJ,EAAUtJ,EAAsBxI,GAChC,IAAK,IAAIzS,EAAI,EAAGA,EAAIukB,EAAQvtB,OAAQgJ,IAC/B+jB,EAAiBpqB,KAAK8Y,EAAM8R,EAAQvkB,MACvCqK,EAAGka,EAAQvkB,IAAMyS,EAAK8R,EAAQvkB,IAGjC,CACD,CAEA,OAAOqK,CACR,CAGO,EAED,8CAIA,CAAEgP,EAAQ4J,EAA0B,KAE1C,aAUA,IAAIwB,EAAe,WAAY,EAGzBC,EAAuB,EAAsD,yDAC7EC,EAAqB,CAAC,EACtBC,EAAM,EAAqC,wCA2BjD,SAASC,EAAeC,EAAWzkB,EAAQ8J,EAAU4a,EAAeC,GAEhE,IAAK,IAAIC,KAAgBH,EACvB,GAAIF,EAAIE,EAAWG,GAAe,CAChC,IAAInmB,EAIJ,IAGE,GAAuC,mBAA5BgmB,EAAUG,GAA8B,CACjD,IAAI3P,EAAM7X,OACPsnB,GAAiB,eAAiB,KAAO5a,EAAW,UAAY8a,EAAjE,oGACwFH,EAAUG,GADlG,mGAKF,MADA3P,EAAIhY,KAAO,sBACLgY,CACR,CACAxW,EAAQgmB,EAAUG,GAAc5kB,EAAQ4kB,EAAcF,EAAe5a,EAAU,KAAMua,EACvF,CAAE,MAAOQ,GACPpmB,EAAQomB,CACV,CAWA,IAVIpmB,GAAWA,aAAiBrB,OAC9BgnB,GACGM,GAAiB,eAAiB,2BACnC5a,EAAW,KAAO8a,EADlB,kGAEqEnmB,EAFrE,kKAQAA,aAAiBrB,SAAWqB,EAAM3B,WAAWwnB,GAAqB,CAGpEA,EAAmB7lB,EAAM3B,UAAW,EAEpC,IAAIsH,EAAQugB,EAAWA,IAAa,GAEpCP,EACE,UAAYta,EAAW,UAAYrL,EAAM3B,SAAoB,MAATsH,EAAgBA,EAAQ,IAEhF,CACF,CAGN,CAzEEggB,EAAe,SAASU,GACtB,IAAIhoB,EAAU,YAAcgoB,EACL,oBAAZ3c,SACTA,QAAQ1J,MAAM3B,GAEhB,IAIE,MAAM,IAAIM,MAAMN,EAClB,CAAE,MAAO3G,GAAU,CACrB,EAqEFquB,EAAeO,kBAAoB,WAE/BT,EAAqB,CAAC,CAE1B,EAEAtL,EAAOC,QAAUuL,CAGV,EAED,uDAIA,CAAExL,EAAQ4J,EAA0B,KAE1C,aAUA,IAOIwB,EAPAY,EAAU,EAAoC,oCAC9C1c,EAAS,EAAyC,yCAElD+b,EAAuB,EAAsD,yDAC7EE,EAAM,EAAqC,wCAC3CC,EAAiB,EAA4C,+CAmBjE,SAASS,IACP,OAAO,IACT,CAhBEb,EAAe,SAASU,GACtB,IAAIhoB,EAAU,YAAcgoB,EACL,oBAAZ3c,SACTA,QAAQ1J,MAAM3B,GAEhB,IAIE,MAAM,IAAIM,MAAMN,EAClB,CAAE,MAAO3G,GAAI,CACf,EAOF6iB,EAAOC,QAAU,SAASiM,EAAgBC,GAExC,IAAIC,EAAoC,mBAAX1R,QAAyBA,OAAO+H,SAuEzD4J,EAAY,gBAIZC,EAAiB,CACnB9lB,MAAO+lB,EAA2B,SAClCC,OAAQD,EAA2B,UACnCE,KAAMF,EAA2B,WACjCG,KAAMH,EAA2B,YACjCI,OAAQJ,EAA2B,UACnCK,OAAQL,EAA2B,UACnCM,OAAQN,EAA2B,UACnCO,OAAQP,EAA2B,UAEnCQ,IA6HOC,EAA2Bf,GA5HlCgB,QA+HF,SAAkCC,GAkBhC,OAAOF,GAjBP,SAAkBrf,EAAOwf,EAAUzB,EAAe5a,EAAUsc,GAC1D,GAA2B,mBAAhBF,EACT,OAAO,IAAIG,EAAc,aAAeD,EAAe,mBAAqB1B,EAAgB,mDAE9F,IAAI4B,EAAY3f,EAAMwf,GACtB,IAAKzgB,MAAMC,QAAQ2gB,GAEjB,OAAO,IAAID,EAAc,WAAavc,EAAW,KAAOsc,EAA/B,cADVG,EAAYD,GAC6E,kBAAoB5B,EAAgB,yBAE9I,IAAK,IAAI/kB,EAAI,EAAGA,EAAI2mB,EAAU3vB,OAAQgJ,IAAK,CACzC,IAAIlB,EAAQynB,EAAYI,EAAW3mB,EAAG+kB,EAAe5a,EAAUsc,EAAe,IAAMzmB,EAAI,IAAK0kB,GAC7F,GAAI5lB,aAAiBrB,MACnB,OAAOqB,CAEX,CACA,OAAO,IACT,GAEF,EAjJE+nB,QA4JOR,GARP,SAAkBrf,EAAOwf,EAAUzB,EAAe5a,EAAUsc,GAC1D,IAAIE,EAAY3f,EAAMwf,GACtB,OAAKjB,EAAeoB,GAIb,KAFE,IAAID,EAAc,WAAavc,EAAW,KAAOsc,EAA/B,cADVG,EAAYD,GAC6E,kBAAoB5B,EAAgB,qCAGhJ,IA1JA+B,YAuKOT,GARP,SAAkBrf,EAAOwf,EAAUzB,EAAe5a,EAAUsc,GAC1D,IAAIE,EAAY3f,EAAMwf,GACtB,OAAKnB,EAAQ0B,mBAAmBJ,GAIzB,KAFE,IAAID,EAAc,WAAavc,EAAW,KAAOsc,EAA/B,cADVG,EAAYD,GAC6E,kBAAoB5B,EAAgB,0CAGhJ,IArKAiC,WAyKF,SAAmCC,GASjC,OAAOZ,GARP,SAAkBrf,EAAOwf,EAAUzB,EAAe5a,EAAUsc,GAC1D,KAAMzf,EAAMwf,aAAqBS,GAAgB,CAC/C,IAAIC,EAAoBD,EAAc3pB,MAAQooB,EAE9C,OAAO,IAAIgB,EAAc,WAAavc,EAAW,KAAOsc,EAA/B,gBAuSTE,EAxSmB3f,EAAMwf,IAyS9BzK,aAAgB4K,EAAU5K,YAAYze,KAG9CqpB,EAAU5K,YAAYze,KAFpBooB,GAzS0G,kBAAoBX,EAA1G,4BAA+JmC,EAAoB,KAC9M,CAsSJ,IAAsBP,EArSlB,OAAO,IACT,GAEF,EAlLEQ,KAwROd,GANP,SAAkBrf,EAAOwf,EAAUzB,EAAe5a,EAAUsc,GAC1D,OAAKW,EAAOpgB,EAAMwf,IAGX,KAFE,IAAIE,EAAc,WAAavc,EAAW,KAAOsc,EAA/B,kBAAwE1B,EAAgB,2BAGrH,IAtRAsC,SAsNF,SAAmCd,GAoBjC,OAAOF,GAnBP,SAAkBrf,EAAOwf,EAAUzB,EAAe5a,EAAUsc,GAC1D,GAA2B,mBAAhBF,EACT,OAAO,IAAIG,EAAc,aAAeD,EAAe,mBAAqB1B,EAAgB,oDAE9F,IAAI4B,EAAY3f,EAAMwf,GAClBc,EAAWV,EAAYD,GAC3B,GAAiB,WAAbW,EACF,OAAO,IAAIZ,EAAc,WAAavc,EAAW,KAAOsc,EAA/B,cAAoEa,EAAW,kBAAoBvC,EAAgB,0BAE9I,IAAK,IAAInlB,KAAO+mB,EACd,GAAI/B,EAAI+B,EAAW/mB,GAAM,CACvB,IAAId,EAAQynB,EAAYI,EAAW/mB,EAAKmlB,EAAe5a,EAAUsc,EAAe,IAAM7mB,EAAK8kB,GAC3F,GAAI5lB,aAAiBrB,MACnB,OAAOqB,CAEX,CAEF,OAAO,IACT,GAEF,EA1OEyoB,MAkLF,SAA+BC,GAC7B,OAAKzhB,MAAMC,QAAQwhB,GA+BZnB,GAjBP,SAAkBrf,EAAOwf,EAAUzB,EAAe5a,EAAUsc,GAE1D,IADA,IAAIE,EAAY3f,EAAMwf,GACbxmB,EAAI,EAAGA,EAAIwnB,EAAexwB,OAAQgJ,IACzC,GAzLMxJ,EAyLCmwB,EAzLEzwB,EAyLSsxB,EAAexnB,GAvLjCxJ,IAAMN,EAGK,IAANM,GAAW,EAAIA,GAAM,EAAIN,EAGzBM,GAAMA,GAAKN,GAAMA,EAkLpB,OAAO,KA1Lf,IAAYM,EAAGN,EA8LPuxB,EAAe3V,KAAKC,UAAUyV,GAAgB,SAAkB5nB,EAAKhB,GAEvE,MAAa,WADF8oB,EAAe9oB,GAEjBI,OAAOJ,GAETA,CACT,IACA,OAAO,IAAI8nB,EAAc,WAAavc,EAAW,KAAOsc,EAAe,eAAiBznB,OAAO2nB,GAAtE,kBAA6G5B,EAAgB,sBAAwB0C,EAAe,IAC/L,KA3BMhD,EADE/kB,UAAU1I,OAAS,EAEnB,+DAAiE0I,UAAU1I,OAA3E,uFAIW,0DAGVsuB,EAqBX,EAlNEqC,UA2OF,SAAgCC,GAC9B,IAAK7hB,MAAMC,QAAQ4hB,GAEjB,OADQnD,EAAa,0EACda,EAGT,IAAK,IAAItlB,EAAI,EAAGA,EAAI4nB,EAAoB5wB,OAAQgJ,IAAK,CACnD,IAAI6nB,EAAUD,EAAoB5nB,GAClC,GAAuB,mBAAZ6nB,EAKT,OAJApD,EACE,8FACcqD,EAAyBD,GAAW,aAAe7nB,EAAI,KAEhEslB,CAEX,CAiBA,OAAOe,GAfP,SAAkBrf,EAAOwf,EAAUzB,EAAe5a,EAAUsc,GAE1D,IADA,IAAIsB,EAAgB,GACX/nB,EAAI,EAAGA,EAAI4nB,EAAoB5wB,OAAQgJ,IAAK,CACnD,IACIgoB,GAAgBH,EADND,EAAoB5nB,IACNgH,EAAOwf,EAAUzB,EAAe5a,EAAUsc,EAAc/B,GACpF,GAAqB,MAAjBsD,EACF,OAAO,KAELA,EAAcC,MAAQrD,EAAIoD,EAAcC,KAAM,iBAChDF,EAAcppB,KAAKqpB,EAAcC,KAAKC,aAE1C,CAEA,OAAO,IAAIxB,EAAc,WAAavc,EAAW,KAAOsc,EAA/B,kBAAwE1B,EAAgB,KADrFgD,EAAc/wB,OAAS,EAAK,2BAA6B+wB,EAAc7vB,KAAK,MAAQ,IAAK,IACyB,IAChJ,GAEF,EA3QEiwB,MA8RF,SAAgCC,GAmB9B,OAAO/B,GAlBP,SAAkBrf,EAAOwf,EAAUzB,EAAe5a,EAAUsc,GAC1D,IAAIE,EAAY3f,EAAMwf,GAClBc,EAAWV,EAAYD,GAC3B,GAAiB,WAAbW,EACF,OAAO,IAAIZ,EAAc,WAAavc,EAAW,KAAOsc,EAAe,cAAgBa,EAA9D,kBAAmGvC,EAAgB,yBAE9I,IAAK,IAAInlB,KAAOwoB,EAAY,CAC1B,IAAIP,EAAUO,EAAWxoB,GACzB,GAAuB,mBAAZioB,EACT,OAAOQ,EAAsBtD,EAAe5a,EAAUsc,EAAc7mB,EAAK8nB,EAAeG,IAE1F,IAAI/oB,EAAQ+oB,EAAQlB,EAAW/mB,EAAKmlB,EAAe5a,EAAUsc,EAAe,IAAM7mB,EAAK8kB,GACvF,GAAI5lB,EACF,OAAOA,CAEX,CACA,OAAO,IACT,GAEF,EAjTEwpB,MAmTF,SAAsCF,GA6BpC,OAAO/B,GA5BP,SAAkBrf,EAAOwf,EAAUzB,EAAe5a,EAAUsc,GAC1D,IAAIE,EAAY3f,EAAMwf,GAClBc,EAAWV,EAAYD,GAC3B,GAAiB,WAAbW,EACF,OAAO,IAAIZ,EAAc,WAAavc,EAAW,KAAOsc,EAAe,cAAgBa,EAA9D,kBAAmGvC,EAAgB,yBAG9I,IAAIwD,EAAU5f,EAAO,CAAC,EAAG3B,EAAMwf,GAAW4B,GAC1C,IAAK,IAAIxoB,KAAO2oB,EAAS,CACvB,IAAIV,EAAUO,EAAWxoB,GACzB,GAAIglB,EAAIwD,EAAYxoB,IAA2B,mBAAZioB,EACjC,OAAOQ,EAAsBtD,EAAe5a,EAAUsc,EAAc7mB,EAAK8nB,EAAeG,IAE1F,IAAKA,EACH,OAAO,IAAInB,EACT,WAAavc,EAAW,KAAOsc,EAAe,UAAY7mB,EAAM,kBAAoBmlB,EAApF,mBACmBjT,KAAKC,UAAU/K,EAAMwf,GAAW,KAAM,MACzD,iBAAmB1U,KAAKC,UAAUhd,OAAOiJ,KAAKoqB,GAAa,KAAM,OAGrE,IAAItpB,EAAQ+oB,EAAQlB,EAAW/mB,EAAKmlB,EAAe5a,EAAUsc,EAAe,IAAM7mB,EAAK8kB,GACvF,GAAI5lB,EACF,OAAOA,CAEX,CACA,OAAO,IACT,GAGF,GArTA,SAAS4nB,EAAcvpB,EAAS8qB,GAC9B5qB,KAAKF,QAAUA,EACfE,KAAK4qB,KAAOA,GAAwB,iBAATA,EAAoBA,EAAM,CAAC,EACtD5qB,KAAKoH,MAAQ,EACf,CAIA,SAAS4hB,EAA2BmC,GAEhC,IAAIC,EAA0B,CAAC,EAC3BC,EAA6B,EAEnC,SAASC,EAAUC,EAAY5hB,EAAOwf,EAAUzB,EAAe5a,EAAUsc,EAAcoC,GAIrF,GAHA9D,EAAgBA,GAAiBW,EACjCe,EAAeA,GAAgBD,EAE3BqC,IAAWnE,EAAsB,CACnC,GAAIc,EAAqB,CAEvB,IAAIlQ,EAAM,IAAI7X,MACZ,qLAKF,MADA6X,EAAIhY,KAAO,sBACLgY,CACR,CAAO,GAAgC,oBAAZ9M,QAAyB,CAElD,IAAIgQ,EAAWuM,EAAgB,IAAMyB,GAElCiC,EAAwBjQ,IAEzBkQ,EAA6B,IAE7BjE,EACE,2EACuBgC,EAAe,cAAgB1B,EADtD,wNAMF0D,EAAwBjQ,IAAY,EACpCkQ,IAEJ,CACF,CACA,OAAuB,MAAnB1hB,EAAMwf,GACJoC,EACsB,OAApB5hB,EAAMwf,GACD,IAAIE,EAAc,OAASvc,EAAW,KAAOsc,EAA3B,+BAAiF1B,EAAgB,+BAErH,IAAI2B,EAAc,OAASvc,EAAW,KAAOsc,EAA3B,+BAAiF1B,EAAgB,oCAErH,KAEAyD,EAASxhB,EAAOwf,EAAUzB,EAAe5a,EAAUsc,EAE9D,CAEA,IAAIqC,EAAmBH,EAAUjiB,KAAK,MAAM,GAG5C,OAFAoiB,EAAiBF,WAAaD,EAAUjiB,KAAK,MAAM,GAE5CoiB,CACT,CAEA,SAASlD,EAA2BsC,GAiBlC,OAAO7B,GAhBP,SAAkBrf,EAAOwf,EAAUzB,EAAe5a,EAAUsc,EAAcoC,GACxE,IAAIlC,EAAY3f,EAAMwf,GAEtB,OADeI,EAAYD,KACVuB,EAMR,IAAIxB,EACT,WAAavc,EAAW,KAAOsc,EAA/B,cAHgBiB,EAAef,GAGmD,kBAAoB5B,EAAtG,gBAA+ImD,EAAe,KAC9J,CAACA,aAAcA,IAGZ,IACT,GAEF,CAsKA,SAASG,EAAsBtD,EAAe5a,EAAUsc,EAAc7mB,EAAKoC,GACzE,OAAO,IAAI0kB,GACR3B,GAAiB,eAAiB,KAAO5a,EAAW,UAAYsc,EAAe,IAAM7mB,EAAtF,6FACiFoC,EAAO,KAE5F,CAwDA,SAASolB,EAAOT,GACd,cAAeA,GACb,IAAK,SACL,IAAK,SACL,IAAK,YACH,OAAO,EACT,IAAK,UACH,OAAQA,EACV,IAAK,SACH,GAAI5gB,MAAMC,QAAQ2gB,GAChB,OAAOA,EAAUtZ,MAAM+Z,GAEzB,GAAkB,OAAdT,GAAsBpB,EAAeoB,GACvC,OAAO,EAGT,IAAIoC,EAjbV,SAAuBC,GACrB,IAAID,EAAaC,IAAkBvD,GAAmBuD,EAAcvD,IAAoBuD,EAjB/D,eAkBzB,GAA0B,mBAAfD,EACT,OAAOA,CAEX,CA4auBE,CAActC,GAC/B,IAAIoC,EAqBF,OAAO,EApBP,IACIG,EADApN,EAAWiN,EAAWpvB,KAAKgtB,GAE/B,GAAIoC,IAAepC,EAAUwC,SAC3B,OAASD,EAAOpN,EAASsN,QAAQC,MAC/B,IAAKjC,EAAO8B,EAAKtqB,OACf,OAAO,OAKX,OAASsqB,EAAOpN,EAASsN,QAAQC,MAAM,CACrC,IAAIC,EAAQJ,EAAKtqB,MACjB,GAAI0qB,IACGlC,EAAOkC,EAAM,IAChB,OAAO,CAGb,CAMJ,OAAO,EACT,QACE,OAAO,EAEb,CA2BA,SAAS1C,EAAYD,GACnB,IAAIW,SAAkBX,EACtB,OAAI5gB,MAAMC,QAAQ2gB,GACT,QAELA,aAAqBzV,OAIhB,SAlCX,SAAkBoW,EAAUX,GAE1B,MAAiB,WAAbW,KAKCX,IAK8B,WAA/BA,EAAU,kBAKQ,mBAAX5S,QAAyB4S,aAAqB5S,OAK3D,CAcMwV,CAASjC,EAAUX,GACd,SAEFW,CACT,CAIA,SAASI,EAAef,GACtB,GAAI,MAAOA,EACT,MAAO,GAAKA,EAEd,IAAIW,EAAWV,EAAYD,GAC3B,GAAiB,WAAbW,EAAuB,CACzB,GAAIX,aAAqB/Q,KACvB,MAAO,OACF,GAAI+Q,aAAqBzV,OAC9B,MAAO,QAEX,CACA,OAAOoW,CACT,CAIA,SAASQ,EAAyBlpB,GAChC,IAAIoD,EAAO0lB,EAAe9oB,GAC1B,OAAQoD,GACN,IAAK,QACL,IAAK,SACH,MAAO,MAAQA,EACjB,IAAK,UACL,IAAK,OACL,IAAK,SACH,MAAO,KAAOA,EAChB,QACE,OAAOA,EAEb,CAcA,OAxbA0kB,EAAclpB,UAAYC,MAAMD,UAobhCmoB,EAAed,eAAiBA,EAChCc,EAAeP,kBAAoBP,EAAeO,kBAClDO,EAAe6D,UAAY7D,EAEpBA,CACT,CAGO,EAED,qCAIA,CAAEtM,EAAQ4J,EAA0B,KAUxC,IAAIoC,EAAU,EAAoC,oCAKlDhM,EAAOC,QAAU,EAAqD,uDAArD,CAA6G+L,EAAQoE,WAD5G,EAKrB,EAED,wDAIEpQ,IAER,aAYAA,EAAOC,QAFoB,8CAKpB,EAED,uCAIED,IAERA,EAAOC,QAAU7S,SAAS9M,KAAK+M,KAAK3R,OAAOyI,UAAUsL,eAG9C,EAED,sDAIA,CAAEkY,EAAyB1H,KAEjC,cAeE,WAKF,IAAIoQ,EAA8B,mBAAX3V,QAAyBA,OAAO4V,IACnDC,EAAqBF,EAAY3V,OAAO4V,IAAI,iBAAmB,MAC/DE,EAAoBH,EAAY3V,OAAO4V,IAAI,gBAAkB,MAC7DG,EAAsBJ,EAAY3V,OAAO4V,IAAI,kBAAoB,MACjEI,EAAyBL,EAAY3V,OAAO4V,IAAI,qBAAuB,MACvEK,EAAsBN,EAAY3V,OAAO4V,IAAI,kBAAoB,MACjEM,EAAsBP,EAAY3V,OAAO4V,IAAI,kBAAoB,MACjEO,EAAqBR,EAAY3V,OAAO4V,IAAI,iBAAmB,MAG/DQ,EAAwBT,EAAY3V,OAAO4V,IAAI,oBAAsB,MACrES,EAA6BV,EAAY3V,OAAO4V,IAAI,yBAA2B,MAC/EU,EAAyBX,EAAY3V,OAAO4V,IAAI,qBAAuB,MACvEW,EAAsBZ,EAAY3V,OAAO4V,IAAI,kBAAoB,MACjEY,EAA2Bb,EAAY3V,OAAO4V,IAAI,uBAAyB,MAC3Ea,EAAkBd,EAAY3V,OAAO4V,IAAI,cAAgB,MACzDc,EAAkBf,EAAY3V,OAAO4V,IAAI,cAAgB,MACzDe,EAAmBhB,EAAY3V,OAAO4V,IAAI,eAAiB,MAC3DgB,EAAyBjB,EAAY3V,OAAO4V,IAAI,qBAAuB,MACvEiB,EAAuBlB,EAAY3V,OAAO4V,IAAI,mBAAqB,MACnEkB,EAAmBnB,EAAY3V,OAAO4V,IAAI,eAAiB,MAO/D,SAASmB,EAAO7E,GACd,GAAsB,iBAAXA,GAAkC,OAAXA,EAAiB,CACjD,IAAI8E,EAAW9E,EAAO8E,SAEtB,OAAQA,GACN,KAAKnB,EACH,IAAI5nB,EAAOikB,EAAOjkB,KAElB,OAAQA,GACN,KAAKmoB,EACL,KAAKC,EACL,KAAKN,EACL,KAAKE,EACL,KAAKD,EACL,KAAKO,EACH,OAAOtoB,EAET,QACE,IAAIgpB,EAAehpB,GAAQA,EAAK+oB,SAEhC,OAAQC,GACN,KAAKd,EACL,KAAKG,EACL,KAAKI,EACL,KAAKD,EACL,KAAKP,EACH,OAAOe,EAET,QACE,OAAOD,GAKjB,KAAKlB,EACH,OAAOkB,EAEb,CAGF,CAEA,IAAIE,EAAYd,EACZe,EAAiBd,EACjBe,EAAkBjB,EAClBkB,EAAkBnB,EAClBoB,EAAUzB,EACV/O,EAAawP,EACbiB,EAAWxB,EACXyB,EAAOd,EACP1P,EAAOyP,EACPgB,EAAS3B,EACT4B,EAAWzB,EACX0B,EAAa3B,EACb4B,EAAWrB,EACXsB,GAAsC,EAa1C,SAASC,EAAiB5F,GACxB,OAAO6E,EAAO7E,KAAYmE,CAC5B,CAmCA9Q,EAAQ2R,UAAYA,EACpB3R,EAAQ4R,eAAiBA,EACzB5R,EAAQ6R,gBAAkBA,EAC1B7R,EAAQ8R,gBAAkBA,EAC1B9R,EAAQ+R,QAAUA,EAClB/R,EAAQuB,WAAaA,EACrBvB,EAAQgS,SAAWA,EACnBhS,EAAQiS,KAAOA,EACfjS,EAAQyB,KAAOA,EACfzB,EAAQkS,OAASA,EACjBlS,EAAQmS,SAAWA,EACnBnS,EAAQoS,WAAaA,EACrBpS,EAAQqS,SAAWA,EACnBrS,EAAQwS,YA7DR,SAAqB7F,GASnB,OAPO2F,IACHA,GAAsC,EAEtCpjB,QAAc,KAAE,kLAIbqjB,EAAiB5F,IAAW6E,EAAO7E,KAAYkE,CACxD,EAoDA7Q,EAAQuS,iBAAmBA,EAC3BvS,EAAQyS,kBAjDR,SAA2B9F,GACzB,OAAO6E,EAAO7E,KAAYiE,CAC5B,EAgDA5Q,EAAQ0S,kBA/CR,SAA2B/F,GACzB,OAAO6E,EAAO7E,KAAYgE,CAC5B,EA8CA3Q,EAAQmQ,UA7CR,SAAmBxD,GACjB,MAAyB,iBAAXA,GAAkC,OAAXA,GAAmBA,EAAO8E,WAAanB,CAC9E,EA4CAtQ,EAAQ2S,aA3CR,SAAsBhG,GACpB,OAAO6E,EAAO7E,KAAYoE,CAC5B,EA0CA/Q,EAAQ4S,WAzCR,SAAoBjG,GAClB,OAAO6E,EAAO7E,KAAY6D,CAC5B,EAwCAxQ,EAAQ6S,OAvCR,SAAgBlG,GACd,OAAO6E,EAAO7E,KAAYwE,CAC5B,EAsCAnR,EAAQsB,OArCR,SAAgBqL,GACd,OAAO6E,EAAO7E,KAAYuE,CAC5B,EAoCAlR,EAAQ8S,SAnCR,SAAkBnG,GAChB,OAAO6E,EAAO7E,KAAY4D,CAC5B,EAkCAvQ,EAAQ+S,WAjCR,SAAoBpG,GAClB,OAAO6E,EAAO7E,KAAY+D,CAC5B,EAgCA1Q,EAAQgT,aA/BR,SAAsBrG,GACpB,OAAO6E,EAAO7E,KAAY8D,CAC5B,EA8BAzQ,EAAQiT,WA7BR,SAAoBtG,GAClB,OAAO6E,EAAO7E,KAAYqE,CAC5B,EA4BAhR,EAAQyN,mBAxIR,SAA4B/kB,GAC1B,MAAuB,iBAATA,GAAqC,mBAATA,GAC1CA,IAAS8nB,GAAuB9nB,IAASooB,GAA8BpoB,IAASgoB,GAAuBhoB,IAAS+nB,GAA0B/nB,IAASsoB,GAAuBtoB,IAASuoB,GAA4C,iBAATvoB,GAA8B,OAATA,IAAkBA,EAAK+oB,WAAaN,GAAmBzoB,EAAK+oB,WAAaP,GAAmBxoB,EAAK+oB,WAAad,GAAuBjoB,EAAK+oB,WAAab,GAAsBloB,EAAK+oB,WAAaV,GAA0BroB,EAAK+oB,WAAaJ,GAA0B3oB,EAAK+oB,WAAaH,GAAwB5oB,EAAK+oB,WAAaF,GAAoB7oB,EAAK+oB,WAAaL,EACplB,EAsIApR,EAAQwR,OAASA,CACd,CArKD,EAyKK,EAED,mCAIA,CAAEzR,EAAQ4J,EAA0B,KAE1C,aAIE5J,EAAOC,QAAU,EAAyD,sDAIrE,EAED,iDAIA,CAAE0H,EAAyB,EAAqB,KAEtD,aAMA,SAASwL,EAAoBC,EAAMC,GACjC,GAAID,IAASC,EACX,OAAO,EAGT,IAAKD,IAASC,EACZ,OAAO,EAGT,IAAIC,EAAQ53B,OAAOiJ,KAAKyuB,GACpBG,EAAQ73B,OAAOiJ,KAAK0uB,GACpBG,EAAMF,EAAM31B,OAEhB,GAAI41B,EAAM51B,SAAW61B,EACnB,OAAO,EAGT,IAAK,IAAI7sB,EAAI,EAAGA,EAAI6sB,EAAK7sB,IAAK,CAC5B,IAAIJ,EAAM+sB,EAAM3sB,GAEhB,GAAIysB,EAAK7sB,KAAS8sB,EAAK9sB,KAAS7K,OAAOyI,UAAUsL,eAAenP,KAAK+yB,EAAM9sB,GACzE,OAAO,CAEX,CAEA,OAAO,CACT,CAEA,SAASktB,EAAmBC,EAAMC,GAChC,GAAID,IAASC,EACX,OAAO,EAGT,IAAKD,IAASC,EACZ,OAAO,EAGT,IAAIH,EAAME,EAAK/1B,OAEf,GAAIg2B,EAAKh2B,SAAW61B,EAClB,OAAO,EAGT,IAAK,IAAI7sB,EAAI,EAAGA,EAAI6sB,EAAK7sB,IACvB,GAAI+sB,EAAK/sB,KAAOgtB,EAAKhtB,GACnB,OAAO,EAIX,OAAO,CACT,CAvDA,EAAoBpJ,EAAE,GACD,EAAoBlB,EAAE,EAAqB,CACzC,mBAAsB,IAAM,EAC5B,oBAAuB,IAAM,GAyD7C,EAED,qBAIA,SAAUsrB,EAAyB1H,EAAS,GAElD,aAEA,IAAI2T,EAAU5vB,MAAQA,KAAK4vB,QAAW,SAAUpd,EAAGja,GAC/C,IAAIkB,EAAI,CAAC,EACT,IAAK,IAAIK,KAAK0Y,EAAO9a,OAAOyI,UAAUsL,eAAenP,KAAKkW,EAAG1Y,IAAMvB,EAAEoD,QAAQ7B,GAAK,IAC9EL,EAAEK,GAAK0Y,EAAE1Y,IACb,GAAS,MAAL0Y,GAAqD,mBAAjC9a,OAAOkmB,sBACtB,KAAIjb,EAAI,EAAb,IAAgB7I,EAAIpC,OAAOkmB,sBAAsBpL,GAAI7P,EAAI7I,EAAEH,OAAQgJ,IAC3DpK,EAAEoD,QAAQ7B,EAAE6I,IAAM,GAAKjL,OAAOyI,UAAUwmB,qBAAqBrqB,KAAKkW,EAAG1Y,EAAE6I,MACvElJ,EAAEK,EAAE6I,IAAM6P,EAAE1Y,EAAE6I,IAF4B,CAItD,OAAOlJ,CACX,EACIo2B,EAAmB7vB,MAAQA,KAAK6vB,iBAAoB,SAAUC,GAC9D,OAAQA,GAAOA,EAAIC,WAAcD,EAAM,CAAE,QAAWA,EACxD,EACAp4B,OAAOimB,eAAe1B,EAAS,aAAc,CAAG1a,OAAO,IACvD,IAAIyuB,EAAkBH,EAAgB,EAA2C,2BAUjF5T,EAAiB,QARA,SAAUxb,GACvB,IAAIyQ,EAAWzQ,EAAGyQ,SAAU+e,EAASxvB,EAAGwvB,OAAQC,EAAWzvB,EAAGyvB,SAAUC,EAAWP,EAAOnvB,EAAI,CAAC,WAAY,SAAU,aACjH6P,GAAU,EAAI0f,EAAgBI,SAASD,EAAUF,EAAQC,GAC7D,MAAwB,mBAAbhf,EACAA,EAASZ,GAEbA,EAAUY,EAAW,IAChC,CAIO,EAED,mBAIA,CAAEyS,EAAyB1H,EAAS,KAE1C,aAEAvkB,OAAOimB,eAAe1B,EAAS,aAAc,CAAG1a,OAAO,IACvD,IACI8uB,GAAU,EADA,EAAiC,SACrBC,oBAAez4B,GACzCokB,EAAiB,QAAIoU,CAGd,EAED,iBAIA,SAAU1M,EAAyB1H,EAAS,GAElD,aAEA,IAAI4T,EAAmB7vB,MAAQA,KAAK6vB,iBAAoB,SAAUC,GAC9D,OAAQA,GAAOA,EAAIC,WAAcD,EAAM,CAAE,QAAWA,EACxD,EACAp4B,OAAOimB,eAAe1B,EAAS,aAAc,CAAG1a,OAAO,IACvD0a,EAAQoU,QAAUpU,EAAQsU,QAAUtU,EAAQuU,cAAgBvU,EAAiB,aAAI,EACjF,IAAI+T,EAAkBH,EAAgB,EAA2C,2BACjF5T,EAAQuU,cAAgBR,EAAgBI,QACxC,IAAIK,EAAcZ,EAAgB,EAAuC,uBACzE5T,EAAiB,QAAIwU,EAAYL,QACjC,IAAIM,EAAYb,EAAgB,EAAqC,qBACrE5T,EAAQsU,QAAUG,EAAUN,QAC5B,IAAIO,EAAYd,EAAgB,EAAqC,qBACrE5T,EAAQoU,QAAUM,EAAUP,OAGrB,EAED,sBAIA,SAAUzM,EAAyB1H,EAAS,GAElD,aAEA,IAAI2U,EAAY5wB,MAAQA,KAAK4wB,UAAa,WAStC,OARAA,EAAWl5B,OAAO4T,QAAU,SAAS7R,GACjC,IAAK,IAAI+Y,EAAG7P,EAAI,EAAGzJ,EAAImJ,UAAU1I,OAAQgJ,EAAIzJ,EAAGyJ,IAE5C,IAAK,IAAI7I,KADT0Y,EAAInQ,UAAUM,GACOjL,OAAOyI,UAAUsL,eAAenP,KAAKkW,EAAG1Y,KACzDL,EAAEK,GAAK0Y,EAAE1Y,IAEjB,OAAOL,CACX,EACOm3B,EAAS/mB,MAAM7J,KAAMqC,UAChC,EACIutB,EAAU5vB,MAAQA,KAAK4vB,QAAW,SAAUpd,EAAGja,GAC/C,IAAIkB,EAAI,CAAC,EACT,IAAK,IAAIK,KAAK0Y,EAAO9a,OAAOyI,UAAUsL,eAAenP,KAAKkW,EAAG1Y,IAAMvB,EAAEoD,QAAQ7B,GAAK,IAC9EL,EAAEK,GAAK0Y,EAAE1Y,IACb,GAAS,MAAL0Y,GAAqD,mBAAjC9a,OAAOkmB,sBACtB,KAAIjb,EAAI,EAAb,IAAgB7I,EAAIpC,OAAOkmB,sBAAsBpL,GAAI7P,EAAI7I,EAAEH,OAAQgJ,IAC3DpK,EAAEoD,QAAQ7B,EAAE6I,IAAM,GAAKjL,OAAOyI,UAAUwmB,qBAAqBrqB,KAAKkW,EAAG1Y,EAAE6I,MACvElJ,EAAEK,EAAE6I,IAAM6P,EAAE1Y,EAAE6I,IAF4B,CAItD,OAAOlJ,CACX,EACIo2B,EAAmB7vB,MAAQA,KAAK6vB,iBAAoB,SAAUC,GAC9D,OAAQA,GAAOA,EAAIC,WAAcD,EAAM,CAAE,QAAWA,EACxD,EACAp4B,OAAOimB,eAAe1B,EAAS,aAAc,CAAG1a,OAAO,IACvD,IAAIsvB,EAAehB,EAAgB,EAAsC,uCACrEiB,EAAiBD,EAAaT,QAAQ9F,UAAU,CAChDuG,EAAaT,QAAQvH,OACrBgI,EAAaT,QAAQzH,SAGrBoI,EAAQ,CACRlwB,IAAKgwB,EAAaT,QAAQ3H,KAC1BuI,KAAMH,EAAaT,QAAQ3H,KAC3BwI,MAAOJ,EAAaT,QAAQ3H,KAC5ByI,QAASL,EAAaT,QAAQ3H,KAC9B0I,SAAUN,EAAaT,QAAQ3H,KAC/B2I,MAAOP,EAAaT,QAAQ3H,KAC5B4I,WAAYR,EAAaT,QAAQ3H,KACjC6I,OAAQT,EAAaT,QAAQ3H,KAC7B8I,IAAKV,EAAaT,QAAQ3H,KAC1B+I,GAAIX,EAAaT,QAAQ3H,KACzBgJ,SAAUZ,EAAaT,QAAQ3H,MAG/BiJ,EAAW,CACXC,YAAad,EAAaT,QAAQlG,MAAM,CACpC,WACA,cAEJ0H,KAAMf,EAAaT,QAAQlG,MAAM,CAC7B,cACA,cAEJ2H,YAAahB,EAAaT,QAAQvH,OAClCiJ,kBAAmBjB,EAAaT,QAAQvH,OACxCkJ,OAAQjB,EACRkB,aAAclB,EACdmB,MAAOnB,EACPoB,YAAapB,EACbqB,MAAOtB,EAAaT,QAAQ3H,KAC5B2J,WAAYvB,EAAaT,QAAQ3H,KACjC4J,WAAYxB,EAAaT,QAAQ3H,KACjCpD,WAAYyL,EACZnsB,KAAMjN,OAAOiJ,KAAKowB,IAGIuB,EAAkB1C,EAAO8B,EAEjD,CAAC,SAECa,EAAW3B,EAAS,CAAE4B,eAAgB3B,EAAaT,QAAQvH,OAAQ4J,eAAgB5B,EAAaT,QAAQvH,OAAQ6J,qBAAsB7B,EAAaT,QAAQvH,OAAQ8J,qBAAsB9B,EAAaT,QAAQvH,OAAQ+J,UAAW9B,EAAgB+B,UAAW/B,EAAgBgC,gBAAiBhC,EAAgBiC,gBAAiBjC,EAAgBkC,SAAUlC,EAAgBmC,SAAUnC,EAAgBoC,eAAgBpC,EAAgBqC,eAAgBrC,EAAgBsC,SAAUvC,EAAaT,QAAQzH,OAAQ0K,SAAUxC,EAAaT,QAAQzH,OAAQ2K,cAAezC,EAAaT,QAAQzH,OAAQ4K,cAAe1C,EAAaT,QAAQzH,OAAQ6K,cAAe3C,EAAaT,QAAQzH,OAAQ8K,cAAe5C,EAAaT,QAAQzH,OAAQ+K,cAAe5C,EAAgB6C,cAAe7C,GAAkBwB,GAChwBzxB,EAAM+vB,EAASA,EAAS,CAAC,EAAGG,GAAQwB,GACxCtW,EAAiB,QAAI,CACjBpb,IAAKA,EACLkwB,MAAOA,EACPW,SAAUA,EACVa,SAAUA,EAIP,EAED,mBAIA,SAAU5O,EAAyB1H,EAAS,GAElD,aAEA,IAAI4T,EAAmB7vB,MAAQA,KAAK6vB,iBAAoB,SAAUC,GAC9D,OAAQA,GAAOA,EAAIC,WAAcD,EAAM,CAAE,QAAWA,EACxD,EACAp4B,OAAOimB,eAAe1B,EAAS,aAAc,CAAG1a,OAAO,IACvD,IAAIqyB,EAAyB/D,EAAgB,EAAgD,iDACzFgE,EAAehE,EAAgB,EAAwC,wBA2B3E5T,EAAiB,QAVH,SAAUha,GACpB,IAAI6xB,EAAQ,GAOZ,OANAp8B,OAAOiJ,KAAKkzB,EAAazD,QAAQvvB,KAAKuQ,SAAQ,SAAUxY,GACpD,IAAIK,EAAIgJ,EAAIrJ,GACH,MAALK,GACA66B,EAAMxyB,KApBL,SAAU1I,EAAGK,GACtB,IAAI86B,GAAU,EAAIH,EAAuBxD,SAASx3B,GAKlD,MAHiB,iBAANK,IACPA,EAAI,GAAGyI,OAAOzI,EAAG,QAEX,IAANA,EACO86B,GAED,IAAN96B,EAV8B,OAAOyI,OAWvBqyB,GAEX,IAAIryB,OAAOqyB,EAAS,MAAMryB,OAAOzI,EAAG,IAC/C,CAOuB+6B,CAAOp7B,EAAGK,GAE7B,IACY66B,EAT2Bj5B,KAAK,QAUhD,CAIO,EAED,yBAIA,SAAU8oB,EAAyB1H,EAAS,GAElD,aAEA,IAAI4T,EAAmB7vB,MAAQA,KAAK6vB,iBAAoB,SAAUC,GAC9D,OAAQA,GAAOA,EAAIC,WAAcD,EAAM,CAAE,QAAWA,EACxD,EACAp4B,OAAOimB,eAAe1B,EAAS,aAAc,CAAG1a,OAAO,IACvD,IAAI0yB,EAAU,EAAiC,SAC3CC,EAAoBrE,EAAgB,EAA2C,4CAC/E+D,EAAyB/D,EAAgB,EAAgD,iDACzFsE,EAAkB,EAAyC,kDAC3DzD,EAAYb,EAAgB,EAAqC,qBACjEc,EAAYd,EAAgB,EAAqC,qBAEjEuE,EAAgB,SAAUnyB,GAC1B,GAAKA,EAGL,OADWvK,OAAOiJ,KAAKsB,GACXgB,QAAO,SAAUoF,EAAQ9F,GAEjC,OADA8F,GAAO,EAAIurB,EAAuBxD,SAAS7tB,IAAQN,EAAIM,GAChD8F,CACX,GAAG,CAAC,EACR,EACIgsB,EAAc,WACd,IAAIC,GAAM,EAAIL,EAAQM,SAAQ,GAI9B,OAHA,EAAIN,EAAQO,YAAW,WACnBF,EAAIzlB,SAAU,CAClB,GAAG,IACIylB,EAAIzlB,OACf,EA8EAoN,EAAiB,QApBG,SAAUkU,EAAUF,EAAQC,GAC5C,IAAIuE,EA1DQ,SAAUC,GACtB,IAAIC,GAAoB,EAAIV,EAAQW,YAAYjE,EAAUP,SACtDyE,EAAY,WACZ,OAAOT,EAAcM,IAAoBN,EAAcO,EAC3D,EACIl0B,GAAK,EAAIwzB,EAAQa,UAAUD,GAAY5E,EAASxvB,EAAG,GAAIs0B,EAAYt0B,EAAG,GAO1E,OANA,EAAIwzB,EAAQO,YAAW,WACnB,IAAIQ,EAAYH,KACX,EAAIV,EAAgBhF,qBAAqBc,EAAQ+E,IAClDD,EAAUC,EAElB,GAAG,CAACN,EAAiBC,IACd1E,CACX,CA6CyBgF,CAAUhF,GAC3BhnB,EA7CO,SAAUknB,GACrB,IAAI+E,EAAW,WAAc,OAhCjB,SAAU/E,GAAY,OAAOA,EAASlnB,QAAS,EAAIynB,EAAUN,SAASD,EAAW,CAgCzDgF,CAAUhF,EAAW,EACrD1vB,GAAK,EAAIwzB,EAAQa,UAAUI,GAAWjsB,EAAQxI,EAAG,GAAI20B,EAAW30B,EAAG,GAOvE,OANA,EAAIwzB,EAAQO,YAAW,WACnB,IAAIa,EAAWH,IACXjsB,IAAUosB,GACVD,EAASC,EAEjB,GAAG,CAAClF,IACGlnB,CACX,CAmCgBqsB,CAASnF,GACrB,IAAKlnB,EACD,MAAM,IAAI7I,MAAM,kCACpB,IAAIm1B,EArCY,SAAUtsB,EAAOgnB,GACjC,IAAIuF,EAAgB,WAAc,OAAO,EAAItB,EAAkB9D,SAASnnB,EAAOgnB,GAAU,CAAC,IAAKA,EAAS,EACpGxvB,GAAK,EAAIwzB,EAAQa,UAAUU,GAAgBD,EAAK90B,EAAG,GAAIg1B,EAAQh1B,EAAG,GAClEi1B,EAAWrB,IAaf,OAZA,EAAIJ,EAAQO,YAAW,WACnB,GAAIkB,EAAU,CAEV,IAAIC,EAAUH,IAEd,OADAC,EAAME,GACC,WACCA,GACAA,EAAQlP,SAEhB,CACJ,CACJ,GAAG,CAACxd,EAAOgnB,IACJsF,CACX,CAoBaK,CAAc3sB,EAAOwrB,GAC1BnkB,EApBS,SAAUsT,GACvB,IAAInjB,GAAK,EAAIwzB,EAAQa,UAAUlR,EAAWtT,SAAUA,EAAU7P,EAAG,GAAIo1B,EAAap1B,EAAG,GAWrF,OAVA,EAAIwzB,EAAQO,YAAW,WACnB,IAAIsB,EAAgB,SAAUC,GAC1BF,EAAWE,EAAGzlB,QAClB,EAGA,OAFAsT,EAAWyC,YAAYyP,GACvBD,EAAWjS,EAAWtT,SACf,WACHsT,EAAW4C,eAAesP,EAC9B,CACJ,GAAG,CAAClS,IACGtT,CACX,CAOkB0lB,CAAWT,GACrBG,EAAWrB,IAWf,OAVA,EAAIJ,EAAQO,YAAW,WACfkB,GAAYxF,GACZA,EAAS5f,EAEjB,GAAG,CAACA,KACJ,EAAI2jB,EAAQO,YAAW,WAAc,OAAO,WACpCe,GACAA,EAAG9O,SAEX,CAAG,GAAG,IACCnW,CACX,CAIO,EAED,MAIE0L,IAER,aACAA,EAAOC,QAAUwH,CAEV,GAKOwS,EAA2B,CAAC,EAGhC,SAAS,EAAoBC,GAE5B,IAAIC,EAAeF,EAAyBC,GAC5C,QAAqBr+B,IAAjBs+B,EACH,OAAOA,EAAala,QAGrB,IAAID,EAASia,EAAyBC,GAAY,CAGjDja,QAAS,CAAC,GAOX,OAHAyH,EAAoBwS,GAAU55B,KAAK0f,EAAOC,QAASD,EAAQA,EAAOC,QAAS,GAGpED,EAAOC,OACf,CAsCA,OAhCC,EAAoB5jB,EAAI,CAAC4jB,EAASma,KACjC,IAAI,IAAI7zB,KAAO6zB,EACX,EAAoB5X,EAAE4X,EAAY7zB,KAAS,EAAoBic,EAAEvC,EAAS1Z,IAC5E7K,OAAOimB,eAAe1B,EAAS1Z,EAAK,CAAEuc,YAAY,EAAMzD,IAAK+a,EAAW7zB,IAE1E,EAMD,EAAoBic,EAAI,CAACvc,EAAKjK,IAAUN,OAAOyI,UAAUsL,eAAenP,KAAK2F,EAAKjK,GAMlF,EAAoBuB,EAAK0iB,IACH,oBAAXvF,QAA0BA,OAAO2f,aAC1C3+B,OAAOimB,eAAe1B,EAASvF,OAAO2f,YAAa,CAAE90B,MAAO,WAE7D7J,OAAOimB,eAAe1B,EAAS,aAAc,CAAE1a,OAAO,GAAO,EASrC,EAAoB,iBAG9C,EAxzDM,GARdya,EAAOC,QAAUuH,EAAQ,EAAQ,gHCiIL,IAAIxR,IAAI,CAAC,oCAAqC,sBAAuB,eA2FnG,IACE3L,OAAOiwB,qBAFoB,GAG7B,CAAE,MAAO/9B,GAET,CAsFyD,IAAI0hB,IA6B7D,MACMsc,GAAsB,iBAAsB,gBAyQlD,SAASC,EAAcC,GACrB,IAAI,SACFhnB,EAAQ,SACRyB,EAAQ,OACRwlB,EAAM,OACNrwB,GACEowB,EACAE,EAAa,WACS,MAAtBA,EAAW9nB,UACb8nB,EAAW9nB,SAAU,QAAqB,CACxCxI,SACA6F,UAAU,KAGd,IAAIE,EAAUuqB,EAAW9nB,SACpBhP,EAAO+2B,GAAgB,WAAe,CACzCvqB,OAAQD,EAAQC,OAChBS,SAAUV,EAAQU,YAEhB,mBACF+pB,GACEH,GAAU,CAAC,EACXI,EAAW,eAAkBC,IAC/BF,GAAsBN,EAAsBA,GAAoB,IAAMK,EAAaG,KAAaH,EAAaG,EAAS,GACrH,CAACH,EAAcC,IAElB,OADA,mBAAsB,IAAMzqB,EAAQoB,OAAOspB,IAAW,CAAC1qB,EAAS0qB,IAC5C,gBAAoB,KAAQ,CAC9CrnB,SAAUA,EACVyB,SAAUA,EACVpE,SAAUjN,EAAMiN,SAChBkqB,eAAgBn3B,EAAMwM,OACtB/F,UAAW8F,EACXsqB,OAAQA,GAEZ,CAiTA,IAAIO,EAQAC,GAlmBkB,iBAAmB,WAEvB,iBAAY,MAmXM,oBAAX7wB,aAAqD,IAApBA,OAAOE,UAAmCF,OAAOE,SAASuB,cAsOpH,SAAWmvB,GACTA,EAAqC,qBAAI,uBACzCA,EAA0B,UAAI,YAC9BA,EAAiC,iBAAI,mBACrCA,EAA2B,WAAI,aAC/BA,EAAuC,uBAAI,wBAC5C,CAND,CAMGA,IAAmBA,EAAiB,CAAC,IAExC,SAAWC,GACTA,EAAgC,WAAI,aACpCA,EAAiC,YAAI,cACrCA,EAA0C,qBAAI,sBAC/C,CAJD,CAIGA,IAAwBA,EAAsB,CAAC,kCC97BlDlb,EAAOC,QAAU,EAAjB,kCCQa,SAASpiB,EAAEpB,EAAEO,GAAG,IAAIV,EAAEG,EAAEkB,OAAOlB,EAAE6I,KAAKtI,GAAGP,EAAE,KAAK,EAAEH,GAAG,CAAC,IAAID,EAAEC,EAAE,IAAI,EAAEC,EAAEE,EAAEJ,GAAG,KAAG,EAAEM,EAAEJ,EAAES,IAA0B,MAAMP,EAA7BA,EAAEJ,GAAGW,EAAEP,EAAEH,GAAGC,EAAED,EAAED,CAAc,CAAC,CAAC,SAASG,EAAEC,GAAG,OAAO,IAAIA,EAAEkB,OAAO,KAAKlB,EAAE,EAAE,CAAC,SAASG,EAAEH,GAAG,GAAG,IAAIA,EAAEkB,OAAO,OAAO,KAAK,IAAIX,EAAEP,EAAE,GAAGH,EAAEG,EAAEkd,MAAM,GAAGrd,IAAIU,EAAE,CAACP,EAAE,GAAGH,EAAEG,EAAE,IAAI,IAAIJ,EAAE,EAAEE,EAAEE,EAAEkB,OAAOsB,EAAE1C,IAAI,EAAEF,EAAE4C,GAAG,CAAC,IAAIlC,EAAE,GAAGV,EAAE,GAAG,EAAES,EAAEL,EAAEM,GAAGG,EAAEH,EAAE,EAAEI,EAAEV,EAAES,GAAG,GAAG,EAAEP,EAAEG,EAAER,GAAGY,EAAEX,GAAG,EAAEI,EAAEQ,EAAEL,IAAIL,EAAEJ,GAAGc,EAAEV,EAAES,GAAGZ,EAAED,EAAEa,IAAIT,EAAEJ,GAAGS,EAAEL,EAAEM,GAAGT,EAAED,EAAEU,OAAQ,MAAGG,EAAEX,GAAG,EAAEI,EAAEQ,EAAEb,IAA0B,MAAMG,EAA7BA,EAAEJ,GAAGc,EAAEV,EAAES,GAAGZ,EAAED,EAAEa,CAAaT,CAAC,CAAC,CAAC,OAAOO,CAAC,CAC3c,SAASL,EAAEF,EAAEO,GAAG,IAAIV,EAAEG,EAAE0+B,UAAUn+B,EAAEm+B,UAAU,OAAO,IAAI7+B,EAAEA,EAAEG,EAAE2+B,GAAGp+B,EAAEo+B,EAAE,CAAC,GAAG,iBAAkBC,aAAa,mBAAoBA,YAAY7e,IAAI,CAAC,IAAIlf,EAAE+9B,YAAYpb,EAAQqb,aAAa,WAAW,OAAOh+B,EAAEkf,KAAK,CAAC,KAAK,CAAC,IAAI1e,EAAEye,KAAK7f,EAAEoB,EAAE0e,MAAMyD,EAAQqb,aAAa,WAAW,OAAOx9B,EAAE0e,MAAM9f,CAAC,CAAC,CAAC,IAAIa,EAAE,GAAGE,EAAE,GAAGJ,EAAE,EAAEJ,EAAE,KAAKJ,EAAE,EAAE+B,GAAE,EAAGJ,GAAE,EAAGd,GAAE,EAAGiB,EAAE,mBAAoBohB,WAAWA,WAAW,KAAK1gB,EAAE,mBAAoBk8B,aAAaA,aAAa,KAAKx9B,EAAE,oBAAqB+hB,aAAaA,aAAa,KACnT,SAAS9hB,EAAEvB,GAAG,IAAI,IAAIO,EAAER,EAAEiB,GAAG,OAAOT,GAAG,CAAC,GAAG,OAAOA,EAAEyJ,SAAS7J,EAAEa,OAAQ,MAAGT,EAAEsf,WAAW7f,GAAgD,MAA9CG,EAAEa,GAAGT,EAAEm+B,UAAUn+B,EAAEw+B,eAAe39B,EAAEN,EAAEP,EAAa,CAACA,EAAER,EAAEiB,EAAE,CAAC,CAAC,SAASgB,EAAEhC,GAAa,GAAViB,GAAE,EAAGM,EAAEvB,IAAO+B,EAAE,GAAG,OAAOhC,EAAEe,GAAGiB,GAAE,EAAGhB,EAAEI,OAAO,CAAC,IAAIZ,EAAER,EAAEiB,GAAG,OAAOT,GAAGI,EAAEqB,EAAEzB,EAAEsf,UAAU7f,EAAE,CAAC,CACra,SAASmB,EAAEnB,EAAEO,GAAGwB,GAAE,EAAGd,IAAIA,GAAE,EAAG2B,EAAEH,GAAGA,GAAG,GAAGN,GAAE,EAAG,IAAItC,EAAEO,EAAE,IAAS,IAALmB,EAAEhB,GAAOC,EAAET,EAAEe,GAAG,OAAON,MAAMA,EAAEu+B,eAAex+B,IAAIP,IAAIL,MAAM,CAAC,IAAIC,EAAEY,EAAEwJ,SAAS,GAAG,mBAAoBpK,EAAE,CAACY,EAAEwJ,SAAS,KAAK5J,EAAEI,EAAEw+B,cAAc,IAAIl/B,EAAEF,EAAEY,EAAEu+B,gBAAgBx+B,GAAGA,EAAEijB,EAAQqb,eAAe,mBAAoB/+B,EAAEU,EAAEwJ,SAASlK,EAAEU,IAAIT,EAAEe,IAAIX,EAAEW,GAAGS,EAAEhB,EAAE,MAAMJ,EAAEW,GAAGN,EAAET,EAAEe,EAAE,CAAC,GAAG,OAAON,EAAE,IAAIgC,GAAE,MAAO,CAAC,IAAIlC,EAAEP,EAAEiB,GAAG,OAAOV,GAAGK,EAAEqB,EAAE1B,EAAEuf,UAAUtf,GAAGiC,GAAE,CAAE,CAAC,OAAOA,CAAC,CAAC,QAAQhC,EAAE,KAAKJ,EAAEP,EAAEsC,GAAE,CAAE,CAAC,CAD1a,oBAAqB0L,gBAAW,IAASA,UAAUoxB,iBAAY,IAASpxB,UAAUoxB,WAAWC,gBAAgBrxB,UAAUoxB,WAAWC,eAAetuB,KAAK/C,UAAUoxB,YAC2Q,IACzPr7B,EAD6PnC,GAAE,EAAGK,EAAE,KAAKW,GAAG,EAAEC,EAAE,EAAEI,GAAG,EACvc,SAASnD,IAAI,QAAO6jB,EAAQqb,eAAe/7B,EAAEJ,EAAO,CAAC,SAASe,IAAI,GAAG,OAAO3B,EAAE,CAAC,IAAI9B,EAAEwjB,EAAQqb,eAAe/7B,EAAE9C,EAAE,IAAIO,GAAE,EAAG,IAAIA,EAAEuB,GAAE,EAAG9B,EAAE,CAAC,QAAQO,EAAEqD,KAAKnC,GAAE,EAAGK,EAAE,KAAK,CAAC,MAAML,GAAE,CAAE,CAAO,GAAG,mBAAoBH,EAAEsC,EAAE,WAAWtC,EAAEmC,EAAE,OAAO,GAAG,oBAAqB07B,eAAe,CAAC,IAAIl7B,EAAE,IAAIk7B,eAAer7B,EAAEG,EAAEm7B,MAAMn7B,EAAEo7B,MAAMC,UAAU77B,EAAEG,EAAE,WAAWE,EAAEy7B,YAAY,KAAK,CAAC,MAAM37B,EAAE,WAAW1B,EAAEuB,EAAE,EAAE,EAAE,SAAS1C,EAAEf,GAAG8B,EAAE9B,EAAEyB,IAAIA,GAAE,EAAGmC,IAAI,CAAC,SAASjD,EAAEX,EAAEO,GAAGkC,EAAEP,GAAE,WAAWlC,EAAEwjB,EAAQqb,eAAe,GAAEt+B,EAAE,CAC5dijB,EAAQgc,sBAAsB,EAAEhc,EAAQic,2BAA2B,EAAEjc,EAAQkc,qBAAqB,EAAElc,EAAQmc,wBAAwB,EAAEnc,EAAQoc,mBAAmB,KAAKpc,EAAQqc,8BAA8B,EAAErc,EAAQsc,wBAAwB,SAAS9/B,GAAGA,EAAEgK,SAAS,IAAI,EAAEwZ,EAAQuc,2BAA2B,WAAWh+B,GAAGI,IAAIJ,GAAE,EAAGhB,EAAEI,GAAG,EAC1UqiB,EAAQwc,wBAAwB,SAAShgC,GAAG,EAAEA,GAAG,IAAIA,EAAE0S,QAAQ1J,MAAM,mHAAmHtG,EAAE,EAAE1C,EAAEoS,KAAK2V,MAAM,IAAI/nB,GAAG,CAAC,EAAEwjB,EAAQyc,iCAAiC,WAAW,OAAO7/B,CAAC,EAAEojB,EAAQ0c,8BAA8B,WAAW,OAAOngC,EAAEe,EAAE,EAAE0iB,EAAQ2c,cAAc,SAASngC,GAAG,OAAOI,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAIG,EAAE,EAAE,MAAM,QAAQA,EAAEH,EAAE,IAAIP,EAAEO,EAAEA,EAAEG,EAAE,IAAI,OAAOP,GAAG,CAAC,QAAQI,EAAEP,CAAC,CAAC,EAAE2jB,EAAQ4c,wBAAwB,WAAW,EAC9f5c,EAAQ6c,sBAAsB,WAAW,EAAE7c,EAAQ8c,yBAAyB,SAAStgC,EAAEO,GAAG,OAAOP,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQA,EAAE,EAAE,IAAIH,EAAEO,EAAEA,EAAEJ,EAAE,IAAI,OAAOO,GAAG,CAAC,QAAQH,EAAEP,CAAC,CAAC,EAChM2jB,EAAQ+c,0BAA0B,SAASvgC,EAAEO,EAAEV,GAAG,IAAID,EAAE4jB,EAAQqb,eAA8F,OAAtCh/B,EAAzC,iBAAkBA,GAAG,OAAOA,GAAe,iBAAZA,EAAEA,EAAE2gC,QAA6B,EAAE3gC,EAAED,EAAEC,EAAOD,EAASI,GAAG,KAAK,EAAE,IAAIF,GAAG,EAAE,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,KAAK,EAAEA,EAAE,WAAW,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,QAAQA,EAAE,IAAmN,OAAzME,EAAE,CAAC2+B,GAAG/9B,IAAIoJ,SAASzJ,EAAEy+B,cAAch/B,EAAE6f,UAAUhgB,EAAEk/B,eAAvDj/B,EAAED,EAAEC,EAAoE4+B,WAAW,GAAG7+B,EAAED,GAAGI,EAAE0+B,UAAU7+B,EAAEuB,EAAEJ,EAAEhB,GAAG,OAAOD,EAAEe,IAAId,IAAID,EAAEiB,KAAKC,GAAG2B,EAAEH,GAAGA,GAAG,GAAGxB,GAAE,EAAGN,EAAEqB,EAAEnC,EAAED,MAAMI,EAAE0+B,UAAU5+B,EAAEsB,EAAEN,EAAEd,GAAG+B,GAAGI,IAAIJ,GAAE,EAAGhB,EAAEI,KAAYnB,CAAC,EACnewjB,EAAQid,qBAAqB9gC,EAAE6jB,EAAQkd,sBAAsB,SAAS1gC,GAAG,IAAIO,EAAEH,EAAE,OAAO,WAAW,IAAIP,EAAEO,EAAEA,EAAEG,EAAE,IAAI,OAAOP,EAAEoR,MAAM7J,KAAKqC,UAAU,CAAC,QAAQxJ,EAAEP,CAAC,CAAC,CAAC,gCCf7J0jB,EAAOC,QAAU,EAAjB,gBCDFD,EAAOC,QAAU,SAAsBmT,EAAMC,EAAMlS,EAASic,GAC1D,IAAIC,EAAMlc,EAAUA,EAAQ7gB,KAAK88B,EAAgBhK,EAAMC,QAAQ,EAE/D,QAAY,IAARgK,EACF,QAASA,EAGX,GAAIjK,IAASC,EACX,OAAO,EAGT,GAAoB,iBAATD,IAAsBA,GAAwB,iBAATC,IAAsBA,EACpE,OAAO,EAGT,IAAIiK,EAAQ5hC,OAAOiJ,KAAKyuB,GACpBmK,EAAQ7hC,OAAOiJ,KAAK0uB,GAExB,GAAIiK,EAAM3/B,SAAW4/B,EAAM5/B,OACzB,OAAO,EAMT,IAHA,IAAI6/B,EAAkB9hC,OAAOyI,UAAUsL,eAAepC,KAAKgmB,GAGlD3iB,EAAM,EAAGA,EAAM4sB,EAAM3/B,OAAQ+S,IAAO,CAC3C,IAAInK,EAAM+2B,EAAM5sB,GAEhB,IAAK8sB,EAAgBj3B,GACnB,OAAO,EAGT,IAAIk3B,EAASrK,EAAK7sB,GACdm3B,EAASrK,EAAK9sB,GAIlB,IAAY,KAFZ82B,EAAMlc,EAAUA,EAAQ7gB,KAAK88B,EAAgBK,EAAQC,EAAQn3B,QAAO,SAEtC,IAAR82B,GAAkBI,IAAWC,EACjD,OAAO,CAEX,CAEA,OAAO,CACT,kBC7CA,IAAInb,EAAU,iBACd,SAASob,IACP,aACA3d,EAAOC,QAAU0d,EAAsB,WACrC,OAAOphC,CACT,EAAGyjB,EAAOC,QAAQ8T,YAAa,EAAM/T,EAAOC,QAAiB,QAAID,EAAOC,QACxE,IAAIxiB,EACFlB,EAAI,CAAC,EACLgB,EAAI7B,OAAOyI,UACXjH,EAAIK,EAAEkS,eACN+S,EAAI9mB,OAAOimB,gBAAkB,SAAUlkB,EAAGlB,EAAGgB,GAC3CE,EAAElB,GAAKgB,EAAEgI,KACX,EACAoB,EAAI,mBAAqB+T,OAASA,OAAS,CAAC,EAC5Cje,EAAIkK,EAAE8b,UAAY,aAClBnmB,EAAIqK,EAAEi3B,eAAiB,kBACvBvgC,EAAIsJ,EAAE0zB,aAAe,gBACvB,SAASwD,EAAOpgC,EAAGlB,EAAGgB,GACpB,OAAO7B,OAAOimB,eAAelkB,EAAGlB,EAAG,CACjCgJ,MAAOhI,EACPulB,YAAY,EACZC,cAAc,EACdC,UAAU,IACRvlB,EAAElB,EACR,CACA,IACEshC,EAAO,CAAC,EAAG,GACb,CAAE,MAAOpgC,GACPogC,EAAS,SAAgBpgC,EAAGlB,EAAGgB,GAC7B,OAAOE,EAAElB,GAAKgB,CAChB,CACF,CACA,SAASugC,EAAKrgC,EAAGlB,EAAGgB,EAAGL,GACrB,IAAIyJ,EAAIpK,GAAKA,EAAE4H,qBAAqB45B,EAAYxhC,EAAIwhC,EAClDthC,EAAIf,OAAOC,OAAOgL,EAAExC,WACpB7H,EAAI,IAAI+3B,EAAQn3B,GAAK,IACvB,OAAOslB,EAAE/lB,EAAG,UAAW,CACrB8I,MAAOy4B,EAAiBvgC,EAAGF,EAAGjB,KAC5BG,CACN,CACA,SAASwhC,EAASxgC,EAAGlB,EAAGgB,GACtB,IACE,MAAO,CACLoL,KAAM,SACN/M,IAAK6B,EAAE6C,KAAK/D,EAAGgB,GAEnB,CAAE,MAAOE,GACP,MAAO,CACLkL,KAAM,QACN/M,IAAK6B,EAET,CACF,CACAlB,EAAEuhC,KAAOA,EACT,IAAIthC,EAAI,iBACNc,EAAI,iBACJO,EAAI,YACJ2Y,EAAI,YACJ3Z,EAAI,CAAC,EACP,SAASkhC,IAAa,CACtB,SAASG,IAAqB,CAC9B,SAASC,IAA8B,CACvC,IAAIrgC,EAAI,CAAC,EACT+/B,EAAO//B,EAAGrB,GAAG,WACX,OAAOuH,IACT,IACA,IAAI3H,EAAIX,OAAO+P,eACbxO,EAAIZ,GAAKA,EAAEA,EAAE2K,EAAO,MACtB/J,GAAKA,IAAMM,GAAKL,EAAEoD,KAAKrD,EAAGR,KAAOqB,EAAIb,GACrC,IAAIN,EAAIwhC,EAA2Bh6B,UAAY45B,EAAU55B,UAAYzI,OAAOC,OAAOmC,GACnF,SAASsgC,EAAsB3gC,GAC7B,CAAC,OAAQ,QAAS,UAAU2X,SAAQ,SAAU7Y,GAC5CshC,EAAOpgC,EAAGlB,GAAG,SAAUkB,GACrB,OAAOuG,KAAKq6B,QAAQ9hC,EAAGkB,EACzB,GACF,GACF,CACA,SAAS6gC,EAAc7gC,EAAGlB,GACxB,SAASgiC,EAAOhhC,EAAGilB,EAAG7b,EAAGlK,GACvB,IAAIH,EAAI2hC,EAASxgC,EAAEF,GAAIE,EAAG+kB,GAC1B,GAAI,UAAYlmB,EAAEqM,KAAM,CACtB,IAAItL,EAAIf,EAAEV,IACRY,EAAIa,EAAEkI,MACR,OAAO/I,GAAK,UAAY+lB,EAAQ/lB,IAAMU,EAAEoD,KAAK9D,EAAG,WAAaD,EAAEye,QAAQxe,EAAEgiC,SAASvjB,MAAK,SAAUxd,GAC/F8gC,EAAO,OAAQ9gC,EAAGkJ,EAAGlK,EACvB,IAAG,SAAUgB,GACX8gC,EAAO,QAAS9gC,EAAGkJ,EAAGlK,EACxB,IAAKF,EAAEye,QAAQxe,GAAGye,MAAK,SAAUxd,GAC/BJ,EAAEkI,MAAQ9H,EAAGkJ,EAAEtJ,EACjB,IAAG,SAAUI,GACX,OAAO8gC,EAAO,QAAS9gC,EAAGkJ,EAAGlK,EAC/B,GACF,CACAA,EAAEH,EAAEV,IACN,CACA,IAAI2B,EACJilB,EAAExe,KAAM,UAAW,CACjBuB,MAAO,SAAe9H,EAAGP,GACvB,SAASuhC,IACP,OAAO,IAAIliC,GAAE,SAAUA,EAAGgB,GACxBghC,EAAO9gC,EAAGP,EAAGX,EAAGgB,EAClB,GACF,CACA,OAAOA,EAAIA,EAAIA,EAAE0d,KAAKwjB,EAA4BA,GAA8BA,GAClF,GAEJ,CACA,SAAST,EAAiBzhC,EAAGgB,EAAGL,GAC9B,IAAIslB,EAAIhmB,EACR,OAAO,SAAUmK,EAAGlK,GAClB,GAAI+lB,IAAM3kB,EAAG,MAAMuG,MAAM,gCACzB,GAAIoe,IAAMhM,EAAG,CACX,GAAI,UAAY7P,EAAG,MAAMlK,EACzB,MAAO,CACL8I,MAAO9H,EACPuyB,MAAM,EAEV,CACA,IAAK9yB,EAAEwhC,OAAS/3B,EAAGzJ,EAAEtB,IAAMa,IAAK,CAC9B,IAAIH,EAAIY,EAAEyhC,SACV,GAAIriC,EAAG,CACL,IAAIe,EAAIuhC,EAAoBtiC,EAAGY,GAC/B,GAAIG,EAAG,CACL,GAAIA,IAAMR,EAAG,SACb,OAAOQ,CACT,CACF,CACA,GAAI,SAAWH,EAAEwhC,OAAQxhC,EAAEsI,KAAOtI,EAAE2hC,MAAQ3hC,EAAEtB,SAAS,GAAI,UAAYsB,EAAEwhC,OAAQ,CAC/E,GAAIlc,IAAMhmB,EAAG,MAAMgmB,EAAIhM,EAAGtZ,EAAEtB,IAC5BsB,EAAE4hC,kBAAkB5hC,EAAEtB,IACxB,KAAO,WAAasB,EAAEwhC,QAAUxhC,EAAE6hC,OAAO,SAAU7hC,EAAEtB,KACrD4mB,EAAI3kB,EACJ,IAAIC,EAAImgC,EAAS1hC,EAAGgB,EAAGL,GACvB,GAAI,WAAaY,EAAE6K,KAAM,CACvB,GAAI6Z,EAAItlB,EAAE8yB,KAAOxZ,EAAIlZ,EAAGQ,EAAElC,MAAQiB,EAAG,SACrC,MAAO,CACL0I,MAAOzH,EAAElC,IACTo0B,KAAM9yB,EAAE8yB,KAEZ,CACA,UAAYlyB,EAAE6K,OAAS6Z,EAAIhM,EAAGtZ,EAAEwhC,OAAS,QAASxhC,EAAEtB,IAAMkC,EAAElC,IAC9D,CACF,CACF,CACA,SAASgjC,EAAoBriC,EAAGgB,GAC9B,IAAIL,EAAIK,EAAEmhC,OACRlc,EAAIjmB,EAAEkmB,SAASvlB,GACjB,GAAIslB,IAAM/kB,EAAG,OAAOF,EAAEohC,SAAW,KAAM,UAAYzhC,GAAKX,EAAEkmB,SAAiB,SAAMllB,EAAEmhC,OAAS,SAAUnhC,EAAE3B,IAAM6B,EAAGmhC,EAAoBriC,EAAGgB,GAAI,UAAYA,EAAEmhC,SAAW,WAAaxhC,IAAMK,EAAEmhC,OAAS,QAASnhC,EAAE3B,IAAM,IAAIqhB,UAAU,oCAAsC/f,EAAI,aAAcL,EAC1R,IAAI8J,EAAIs3B,EAASzb,EAAGjmB,EAAEkmB,SAAUllB,EAAE3B,KAClC,GAAI,UAAY+K,EAAEgC,KAAM,OAAOpL,EAAEmhC,OAAS,QAASnhC,EAAE3B,IAAM+K,EAAE/K,IAAK2B,EAAEohC,SAAW,KAAM9hC,EACrF,IAAIJ,EAAIkK,EAAE/K,IACV,OAAOa,EAAIA,EAAEuzB,MAAQzyB,EAAEhB,EAAEyiC,YAAcviC,EAAE8I,MAAOhI,EAAEwyB,KAAOxzB,EAAE0iC,QAAS,WAAa1hC,EAAEmhC,SAAWnhC,EAAEmhC,OAAS,OAAQnhC,EAAE3B,IAAM6B,GAAIF,EAAEohC,SAAW,KAAM9hC,GAAKJ,GAAKc,EAAEmhC,OAAS,QAASnhC,EAAE3B,IAAM,IAAIqhB,UAAU,oCAAqC1f,EAAEohC,SAAW,KAAM9hC,EAC9P,CACA,SAASqiC,EAAazhC,GACpB,IAAIlB,EAAI,CACN4iC,OAAQ1hC,EAAE,IAEZ,KAAKA,IAAMlB,EAAE6iC,SAAW3hC,EAAE,IAAK,KAAKA,IAAMlB,EAAE8iC,WAAa5hC,EAAE,GAAIlB,EAAE+iC,SAAW7hC,EAAE,IAAKuG,KAAKu7B,WAAWj6B,KAAK/I,EAC1G,CACA,SAASijC,EAAc/hC,GACrB,IAAIlB,EAAIkB,EAAEgiC,YAAc,CAAC,EACzBljC,EAAEoM,KAAO,gBAAiBpM,EAAEX,IAAK6B,EAAEgiC,WAAaljC,CAClD,CACA,SAAS83B,EAAQ52B,GACfuG,KAAKu7B,WAAa,CAAC,CACjBJ,OAAQ,SACN1hC,EAAE2X,QAAQ8pB,EAAcl7B,MAAOA,KAAK07B,OAAM,EAChD,CACA,SAAS14B,EAAOzK,GACd,GAAIA,GAAK,KAAOA,EAAG,CACjB,IAAIgB,EAAIhB,EAAEE,GACV,GAAIc,EAAG,OAAOA,EAAE+C,KAAK/D,GACrB,GAAI,mBAAqBA,EAAEwzB,KAAM,OAAOxzB,EACxC,IAAKgoB,MAAMhoB,EAAEoB,QAAS,CACpB,IAAI6kB,GAAK,EACP7b,EAAI,SAASopB,IACX,OAASvN,EAAIjmB,EAAEoB,QAAS,GAAIT,EAAEoD,KAAK/D,EAAGimB,GAAI,OAAOuN,EAAKxqB,MAAQhJ,EAAEimB,GAAIuN,EAAKC,MAAO,EAAID,EACpF,OAAOA,EAAKxqB,MAAQ9H,EAAGsyB,EAAKC,MAAO,EAAID,CACzC,EACF,OAAOppB,EAAEopB,KAAOppB,CAClB,CACF,CACA,MAAM,IAAIsW,UAAUsF,EAAQhmB,GAAK,mBACnC,CACA,OAAO2hC,EAAkB/5B,UAAYg6B,EAA4B3b,EAAE7lB,EAAG,cAAe,CACnF4I,MAAO44B,EACPpb,cAAc,IACZP,EAAE2b,EAA4B,cAAe,CAC/C54B,MAAO24B,EACPnb,cAAc,IACZmb,EAAkB1d,YAAcqd,EAAOM,EAA4B9gC,EAAG,qBAAsBd,EAAEojC,oBAAsB,SAAUliC,GAChI,IAAIlB,EAAI,mBAAqBkB,GAAKA,EAAEilB,YACpC,QAASnmB,IAAMA,IAAM2hC,GAAqB,uBAAyB3hC,EAAEikB,aAAejkB,EAAE0H,MACxF,EAAG1H,EAAEqjC,KAAO,SAAUniC,GACpB,OAAO/B,OAAOwI,eAAiBxI,OAAOwI,eAAezG,EAAG0gC,IAA+B1gC,EAAEoiC,UAAY1B,EAA4BN,EAAOpgC,EAAGJ,EAAG,sBAAuBI,EAAE0G,UAAYzI,OAAOC,OAAOgB,GAAIc,CACvM,EAAGlB,EAAEujC,MAAQ,SAAUriC,GACrB,MAAO,CACL+gC,QAAS/gC,EAEb,EAAG2gC,EAAsBE,EAAcn6B,WAAY05B,EAAOS,EAAcn6B,UAAW7H,GAAG,WACpF,OAAO0H,IACT,IAAIzH,EAAE+hC,cAAgBA,EAAe/hC,EAAEwjC,MAAQ,SAAUtiC,EAAGF,EAAGL,EAAGslB,EAAG7b,QACnE,IAAWA,IAAMA,EAAI/B,SACrB,IAAInI,EAAI,IAAI6hC,EAAcR,EAAKrgC,EAAGF,EAAGL,EAAGslB,GAAI7b,GAC5C,OAAOpK,EAAEojC,oBAAoBpiC,GAAKd,EAAIA,EAAEszB,OAAO9U,MAAK,SAAUxd,GAC5D,OAAOA,EAAEuyB,KAAOvyB,EAAE8H,MAAQ9I,EAAEszB,MAC9B,GACF,EAAGqO,EAAsBzhC,GAAIkhC,EAAOlhC,EAAGU,EAAG,aAAcwgC,EAAOlhC,EAAGF,GAAG,WACnE,OAAOuH,IACT,IAAI65B,EAAOlhC,EAAG,YAAY,WACxB,MAAO,oBACT,IAAIJ,EAAEoI,KAAO,SAAUlH,GACrB,IAAIlB,EAAIb,OAAO+B,GACbF,EAAI,GACN,IAAK,IAAIL,KAAKX,EAAGgB,EAAE+H,KAAKpI,GACxB,OAAOK,EAAEyiC,UAAW,SAASjQ,IAC3B,KAAOxyB,EAAEI,QAAS,CAChB,IAAIF,EAAIF,EAAEoc,MACV,GAAIlc,KAAKlB,EAAG,OAAOwzB,EAAKxqB,MAAQ9H,EAAGsyB,EAAKC,MAAO,EAAID,CACrD,CACA,OAAOA,EAAKC,MAAO,EAAID,CACzB,CACF,EAAGxzB,EAAEyK,OAASA,EAAQqtB,EAAQlwB,UAAY,CACxCue,YAAa2R,EACbqL,MAAO,SAAenjC,GACpB,GAAIyH,KAAKi8B,KAAO,EAAGj8B,KAAK+rB,KAAO,EAAG/rB,KAAKwB,KAAOxB,KAAK66B,MAAQphC,EAAGuG,KAAKgsB,MAAO,EAAIhsB,KAAK26B,SAAW,KAAM36B,KAAK06B,OAAS,OAAQ16B,KAAKpI,IAAM6B,EAAGuG,KAAKu7B,WAAWnqB,QAAQoqB,IAAiBjjC,EAAG,IAAK,IAAIgB,KAAKyG,KAAM,MAAQzG,EAAEa,OAAO,IAAMlB,EAAEoD,KAAK0D,KAAMzG,KAAOgnB,OAAOhnB,EAAEwW,MAAM,MAAQ/P,KAAKzG,GAAKE,EACtR,EACAyiC,KAAM,WACJl8B,KAAKgsB,MAAO,EACZ,IAAIvyB,EAAIuG,KAAKu7B,WAAW,GAAGE,WAC3B,GAAI,UAAYhiC,EAAEkL,KAAM,MAAMlL,EAAE7B,IAChC,OAAOoI,KAAKm8B,IACd,EACArB,kBAAmB,SAA2BviC,GAC5C,GAAIyH,KAAKgsB,KAAM,MAAMzzB,EACrB,IAAIgB,EAAIyG,KACR,SAASo8B,EAAOljC,EAAGslB,GACjB,OAAO/lB,EAAEkM,KAAO,QAASlM,EAAEb,IAAMW,EAAGgB,EAAEwyB,KAAO7yB,EAAGslB,IAAMjlB,EAAEmhC,OAAS,OAAQnhC,EAAE3B,IAAM6B,KAAM+kB,CACzF,CACA,IAAK,IAAIA,EAAIxe,KAAKu7B,WAAW5hC,OAAS,EAAG6kB,GAAK,IAAKA,EAAG,CACpD,IAAI7b,EAAI3C,KAAKu7B,WAAW/c,GACtB/lB,EAAIkK,EAAE84B,WACR,GAAI,SAAW94B,EAAEw4B,OAAQ,OAAOiB,EAAO,OACvC,GAAIz5B,EAAEw4B,QAAUn7B,KAAKi8B,KAAM,CACzB,IAAI3jC,EAAIY,EAAEoD,KAAKqG,EAAG,YAChBtJ,EAAIH,EAAEoD,KAAKqG,EAAG,cAChB,GAAIrK,GAAKe,EAAG,CACV,GAAI2G,KAAKi8B,KAAOt5B,EAAEy4B,SAAU,OAAOgB,EAAOz5B,EAAEy4B,UAAU,GACtD,GAAIp7B,KAAKi8B,KAAOt5B,EAAE04B,WAAY,OAAOe,EAAOz5B,EAAE04B,WAChD,MAAO,GAAI/iC,GACT,GAAI0H,KAAKi8B,KAAOt5B,EAAEy4B,SAAU,OAAOgB,EAAOz5B,EAAEy4B,UAAU,OACjD,CACL,IAAK/hC,EAAG,MAAM+G,MAAM,0CACpB,GAAIJ,KAAKi8B,KAAOt5B,EAAE04B,WAAY,OAAOe,EAAOz5B,EAAE04B,WAChD,CACF,CACF,CACF,EACAN,OAAQ,SAAgBthC,EAAGlB,GACzB,IAAK,IAAIgB,EAAIyG,KAAKu7B,WAAW5hC,OAAS,EAAGJ,GAAK,IAAKA,EAAG,CACpD,IAAIilB,EAAIxe,KAAKu7B,WAAWhiC,GACxB,GAAIilB,EAAE2c,QAAUn7B,KAAKi8B,MAAQ/iC,EAAEoD,KAAKkiB,EAAG,eAAiBxe,KAAKi8B,KAAOzd,EAAE6c,WAAY,CAChF,IAAI14B,EAAI6b,EACR,KACF,CACF,CACA7b,IAAM,UAAYlJ,GAAK,aAAeA,IAAMkJ,EAAEw4B,QAAU5iC,GAAKA,GAAKoK,EAAE04B,aAAe14B,EAAI,MACvF,IAAIlK,EAAIkK,EAAIA,EAAE84B,WAAa,CAAC,EAC5B,OAAOhjC,EAAEkM,KAAOlL,EAAGhB,EAAEb,IAAMW,EAAGoK,GAAK3C,KAAK06B,OAAS,OAAQ16B,KAAK+rB,KAAOppB,EAAE04B,WAAYxiC,GAAKmH,KAAKq8B,SAAS5jC,EACxG,EACA4jC,SAAU,SAAkB5iC,EAAGlB,GAC7B,GAAI,UAAYkB,EAAEkL,KAAM,MAAMlL,EAAE7B,IAChC,MAAO,UAAY6B,EAAEkL,MAAQ,aAAelL,EAAEkL,KAAO3E,KAAK+rB,KAAOtyB,EAAE7B,IAAM,WAAa6B,EAAEkL,MAAQ3E,KAAKm8B,KAAOn8B,KAAKpI,IAAM6B,EAAE7B,IAAKoI,KAAK06B,OAAS,SAAU16B,KAAK+rB,KAAO,OAAS,WAAatyB,EAAEkL,MAAQpM,IAAMyH,KAAK+rB,KAAOxzB,GAAIM,CAC1N,EACAyjC,OAAQ,SAAgB7iC,GACtB,IAAK,IAAIlB,EAAIyH,KAAKu7B,WAAW5hC,OAAS,EAAGpB,GAAK,IAAKA,EAAG,CACpD,IAAIgB,EAAIyG,KAAKu7B,WAAWhjC,GACxB,GAAIgB,EAAE8hC,aAAe5hC,EAAG,OAAOuG,KAAKq8B,SAAS9iC,EAAEkiC,WAAYliC,EAAE+hC,UAAWE,EAAcjiC,GAAIV,CAC5F,CACF,EACA,MAAS,SAAgBY,GACvB,IAAK,IAAIlB,EAAIyH,KAAKu7B,WAAW5hC,OAAS,EAAGpB,GAAK,IAAKA,EAAG,CACpD,IAAIgB,EAAIyG,KAAKu7B,WAAWhjC,GACxB,GAAIgB,EAAE4hC,SAAW1hC,EAAG,CAClB,IAAIP,EAAIK,EAAEkiC,WACV,GAAI,UAAYviC,EAAEyL,KAAM,CACtB,IAAI6Z,EAAItlB,EAAEtB,IACV4jC,EAAcjiC,EAChB,CACA,OAAOilB,CACT,CACF,CACA,MAAMpe,MAAM,wBACd,EACAm8B,cAAe,SAAuBhkC,EAAGgB,EAAGL,GAC1C,OAAO8G,KAAK26B,SAAW,CACrBlc,SAAUzb,EAAOzK,GACjByiC,WAAYzhC,EACZ0hC,QAAS/hC,GACR,SAAW8G,KAAK06B,SAAW16B,KAAKpI,IAAM6B,GAAIZ,CAC/C,GACCN,CACL,CACAyjB,EAAOC,QAAU0d,EAAqB3d,EAAOC,QAAQ8T,YAAa,EAAM/T,EAAOC,QAAiB,QAAID,EAAOC,mBC/S3G,SAASsC,EAAQC,GAGf,OAAOxC,EAAOC,QAAUsC,EAAU,mBAAqB7H,QAAU,iBAAmBA,OAAO+H,SAAW,SAAUD,GAC9G,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAK,mBAAqB9H,QAAU8H,EAAEE,cAAgBhI,QAAU8H,IAAM9H,OAAOvW,UAAY,gBAAkBqe,CACpH,EAAGxC,EAAOC,QAAQ8T,YAAa,EAAM/T,EAAOC,QAAiB,QAAID,EAAOC,QAASsC,EAAQC,EAC3F,CACAxC,EAAOC,QAAUsC,EAASvC,EAAOC,QAAQ8T,YAAa,EAAM/T,EAAOC,QAAiB,QAAID,EAAOC,yBCP/F,IAAIugB,EAAU,EAAQ,KAAR,GACdxgB,EAAOC,QAAUugB,EAGjB,IACEC,mBAAqBD,CACvB,CAAE,MAAOE,GACmB,iBAAfC,WACTA,WAAWF,mBAAqBD,EAEhCpzB,SAAS,IAAK,yBAAdA,CAAwCozB,EAE5C,gCCdA,SAASI,EAAkBrjC,EAAGd,IAC3B,MAAQA,GAAKA,EAAIc,EAAEI,UAAYlB,EAAIc,EAAEI,QACtC,IAAK,IAAIpB,EAAI,EAAGW,EAAIwP,MAAMjQ,GAAIF,EAAIE,EAAGF,IAAKW,EAAEX,GAAKgB,EAAEhB,GACnD,OAAOW,CACT,gDCJA,SAAS2jC,EAAmB3jC,EAAGO,EAAGlB,EAAGgB,EAAGilB,EAAG/lB,EAAGH,GAC5C,IACE,IAAIqK,EAAIzJ,EAAET,GAAGH,GACXe,EAAIsJ,EAAEpB,KACV,CAAE,MAAOrI,GACP,YAAYX,EAAEW,EAChB,CACAyJ,EAAEqpB,KAAOvyB,EAAEJ,GAAKuH,QAAQoW,QAAQ3d,GAAG4d,KAAK1d,EAAGilB,EAC7C,CACA,SAASse,EAAkB5jC,GACzB,OAAO,WACL,IAAIO,EAAIuG,KACNzH,EAAI8J,UACN,OAAO,IAAIzB,SAAQ,SAAUrH,EAAGilB,GAC9B,IAAI/lB,EAAIS,EAAE2Q,MAAMpQ,EAAGlB,GACnB,SAASwkC,EAAM7jC,GACb2jC,EAAmBpkC,EAAGc,EAAGilB,EAAGue,EAAOC,EAAQ,OAAQ9jC,EACrD,CACA,SAAS8jC,EAAO9jC,GACd2jC,EAAmBpkC,EAAGc,EAAGilB,EAAGue,EAAOC,EAAQ,QAAS9jC,EACtD,CACA6jC,OAAM,EACR,GACF,CACF,gDCxBA,SAASta,EAAgBhqB,EAAGS,GAC1B,KAAMT,aAAaS,GAAI,MAAM,IAAI+f,UAAU,oCAC7C,gFCDA,SAAS4F,EAAkBtmB,EAAGgB,GAC5B,IAAK,IAAIE,EAAI,EAAGA,EAAIF,EAAEI,OAAQF,IAAK,CACjC,IAAI+kB,EAAIjlB,EAAEE,GACV+kB,EAAEM,WAAaN,EAAEM,aAAc,EAAIN,EAAEO,cAAe,EAAI,UAAWP,IAAMA,EAAEQ,UAAW,GAAKtnB,OAAOimB,eAAeplB,GAAG,OAAcimB,EAAEjc,KAAMic,EAC5I,CACF,CACA,SAASye,EAAa1kC,EAAGgB,EAAGE,GAC1B,OAAOF,GAAKslB,EAAkBtmB,EAAE4H,UAAW5G,GAAIE,GAAKolB,EAAkBtmB,EAAGkB,GAAI/B,OAAOimB,eAAeplB,EAAG,YAAa,CACjHymB,UAAU,IACRzmB,CACN,gECVA,SAAS2kC,EAAgB3kC,EAAGgB,EAAGE,GAC7B,OAAQF,GAAI,OAAcA,MAAOhB,EAAIb,OAAOimB,eAAeplB,EAAGgB,EAAG,CAC/DgI,MAAO9H,EACPqlB,YAAY,EACZC,cAAc,EACdC,UAAU,IACPzmB,EAAEgB,GAAKE,EAAGlB,CACjB,gCCRA,SAAS4kC,EAAgB1jC,GACvB,OAAO0jC,EAAkBzlC,OAAOwI,eAAiBxI,OAAO+P,eAAe4B,OAAS,SAAU5P,GACxF,OAAOA,EAAEoiC,WAAankC,OAAO+P,eAAehO,EAC9C,EAAG0jC,EAAgB1jC,EACrB,gDCJA,SAAS2jC,EAAgB3jC,EAAGlB,GAC1B,OAAO6kC,EAAkB1lC,OAAOwI,eAAiBxI,OAAOwI,eAAemJ,OAAS,SAAU5P,EAAGlB,GAC3F,OAAOkB,EAAEoiC,UAAYtjC,EAAGkB,CAC1B,EAAG2jC,EAAgB3jC,EAAGlB,EACxB,CCHA,SAAS8kC,EAAU5jC,EAAGlB,GACpB,GAAI,mBAAqBA,GAAK,OAASA,EAAG,MAAM,IAAI0gB,UAAU,sDAC9Dxf,EAAE0G,UAAYzI,OAAOC,OAAOY,GAAKA,EAAE4H,UAAW,CAC5Cue,YAAa,CACXnd,MAAO9H,EACPulB,UAAU,EACVD,cAAc,KAEdrnB,OAAOimB,eAAelkB,EAAG,YAAa,CACxCulB,UAAU,IACRzmB,GAAK,EAAekB,EAAGlB,EAC7B,gFCVA,SAAS+kC,EAA2B7jC,EAAGlB,GACrC,GAAIA,IAAM,WAAY,OAAQA,IAAM,mBAAqBA,GAAI,OAAOA,EACpE,QAAI,IAAWA,EAAG,MAAM,IAAI0gB,UAAU,4DACtC,OCLF,SAAgC1gB,GAC9B,QAAI,IAAWA,EAAG,MAAM,IAAIglC,eAAe,6DAC3C,OAAOhlC,CACT,CDES,CAAsBkB,EAC/B,gEEFA,SAAS+jC,EAAejkC,EAAGhB,GACzB,OCLF,SAAyBgB,GACvB,GAAImP,MAAMC,QAAQpP,GAAI,OAAOA,CAC/B,CDGS,CAAeA,IELxB,SAA+BA,EAAGD,GAChC,IAAIG,EAAI,MAAQF,EAAI,KAAO,oBAAsBmd,QAAUnd,EAAEmd,OAAO+H,WAAallB,EAAE,cACnF,GAAI,MAAQE,EAAG,CACb,IAAIlB,EACFW,EACAyJ,EACAtJ,EACAZ,EAAI,GACJoB,GAAI,EACJ2kB,GAAI,EACN,IACE,GAAI7b,GAAKlJ,EAAIA,EAAE6C,KAAK/C,IAAIwyB,KAAM,IAAMzyB,EAAG,CACrC,GAAI5B,OAAO+B,KAAOA,EAAG,OACrBI,GAAI,CACN,MAAO,OAASA,GAAKtB,EAAIoK,EAAErG,KAAK7C,IAAIuyB,QAAUvzB,EAAE6I,KAAK/I,EAAEgJ,OAAQ9I,EAAEkB,SAAWL,GAAIO,GAAI,GACtF,CAAE,MAAON,GACPilB,GAAI,EAAItlB,EAAIK,CACd,CAAE,QACA,IACE,IAAKM,GAAK,MAAQJ,EAAU,SAAMJ,EAAII,EAAU,SAAK/B,OAAO2B,KAAOA,GAAI,MACzE,CAAE,QACA,GAAImlB,EAAG,MAAMtlB,CACf,CACF,CACA,OAAOT,CACT,CACF,CFrB8B,CAAqBc,EAAGhB,KAAM,EAAAklC,EAAA,GAA2BlkC,EAAGhB,IGL1F,WACE,MAAM,IAAI0gB,UAAU,4IACtB,CHGgG,EAChG,gCINA,SAASykB,EAAuBnlC,EAAGkB,GACjC,OAAOA,IAAMA,EAAIlB,EAAEwX,MAAM,IAAKrY,OAAOimC,OAAOjmC,OAAOkmC,iBAAiBrlC,EAAG,CACrEslC,IAAK,CACHt8B,MAAO7J,OAAOimC,OAAOlkC,MAG3B,2FCFA,SAASqkC,EAAmBvkC,GAC1B,OCJF,SAA4BA,GAC1B,GAAImP,MAAMC,QAAQpP,GAAI,OAAO,EAAAwkC,EAAA,GAAiBxkC,EAChD,CDES,CAAkBA,IEL3B,SAA0BA,GACxB,GAAI,oBAAsBmd,QAAU,MAAQnd,EAAEmd,OAAO+H,WAAa,MAAQllB,EAAE,cAAe,OAAOmP,MAAM0M,KAAK7b,EAC/G,CFGiC,CAAgBA,KAAM,EAAAkkC,EAAA,GAA2BlkC,IGLlF,WACE,MAAM,IAAI0f,UAAU,uIACtB,CHGwF,EACxF,gEIJA,SAAS0F,EAAcllB,GACrB,IAAIkJ,ECFN,SAAqBlJ,EAAGF,GACtB,GAAI,WAAY,OAAQE,KAAOA,EAAG,OAAOA,EACzC,IAAIlB,EAAIkB,EAAEid,OAAOkI,aACjB,QAAI,IAAWrmB,EAAG,CAChB,IAAIoK,EAAIpK,EAAE+D,KAAK7C,EAAGF,UAClB,GAAI,WAAY,OAAQoJ,GAAI,OAAOA,EACnC,MAAM,IAAIsW,UAAU,+CACtB,CACA,OAAyBtX,OAAiBlI,EAC5C,CDPUmlB,CAAYnlB,GACpB,MAAO,WAAY,OAAQkJ,GAAKA,EAAIA,EAAI,EAC1C,gCELA,SAAS4b,EAAQC,GAGf,OAAOD,EAAU,mBAAqB7H,QAAU,iBAAmBA,OAAO+H,SAAW,SAAUD,GAC7F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAK,mBAAqB9H,QAAU8H,EAAEE,cAAgBhI,QAAU8H,IAAM9H,OAAOvW,UAAY,gBAAkBqe,CACpH,EAAGD,EAAQC,EACb,gFCPA,SAASwf,EAA4BzkC,EAAGd,GACtC,GAAIc,EAAG,CACL,GAAI,iBAAmBA,EAAG,OAAO,OAAiBA,EAAGd,GACrD,IAAIgB,EAAI,CAAC,EAAE4N,SAAS/K,KAAK/C,GAAGwW,MAAM,GAAI,GACtC,MAAO,WAAatW,GAAKF,EAAEmlB,cAAgBjlB,EAAIF,EAAEmlB,YAAYze,MAAO,QAAUxG,GAAK,QAAUA,EAAIiP,MAAM0M,KAAK7b,GAAK,cAAgBE,GAAK,2CAA2CxB,KAAKwB,IAAK,OAAiBF,EAAGd,QAAK,CACtN,CACF,gCCPA,SAASwlC,IAAmB,kBACrB,MAAMC,EACT,WAAAxf,CAAYyf,EAAM7kB,IAAUmN,EAAUwX,GAClCj+B,KAAKm+B,IAAMA,EACXn+B,KAAKymB,QAAUA,EACfzmB,KAAKc,IAAM,IAAImZ,IACfja,KAAKo+B,OAAS,KACdp+B,KAAKq+B,OAAS,IAClB,CACA,GAAA9W,CAAIhlB,GACA,OAAOvC,KAAKc,IAAIymB,IAAIhlB,EACxB,CACA,GAAA8Y,CAAI9Y,GACA,MAAMunB,EAAO9pB,KAAKs+B,QAAQ/7B,GAC1B,OAAOunB,GAAQA,EAAKvoB,KACxB,CACA,QAAIg9B,GACA,OAAOv+B,KAAKc,IAAIy9B,IACpB,CACA,OAAAD,CAAQ/7B,GACJ,MAAMunB,EAAO9pB,KAAKc,IAAIua,IAAI9Y,GAC1B,GAAIunB,GAAQA,IAAS9pB,KAAKo+B,OAAQ,CAC9B,MAAM,MAAEI,EAAK,MAAEC,GAAU3U,EACrB2U,IACAA,EAAMD,MAAQA,GAEdA,IACAA,EAAMC,MAAQA,GAElB3U,EAAK0U,MAAQx+B,KAAKo+B,OAClBtU,EAAK0U,MAAMC,MAAQ3U,EACnBA,EAAK2U,MAAQ,KACbz+B,KAAKo+B,OAAStU,EACVA,IAAS9pB,KAAKq+B,SACdr+B,KAAKq+B,OAASI,EAEtB,CACA,OAAO3U,CACX,CACA,GAAAntB,CAAI4F,EAAKhB,GACL,IAAIuoB,EAAO9pB,KAAKs+B,QAAQ/7B,GACxB,OAAIunB,EACOA,EAAKvoB,MAAQA,GAExBuoB,EAAO,CACHvnB,MACAhB,QACAk9B,MAAO,KACPD,MAAOx+B,KAAKo+B,QAEZp+B,KAAKo+B,SACLp+B,KAAKo+B,OAAOK,MAAQ3U,GAExB9pB,KAAKo+B,OAAStU,EACd9pB,KAAKq+B,OAASr+B,KAAKq+B,QAAUvU,EAC7B9pB,KAAKc,IAAInE,IAAI4F,EAAKunB,GACXA,EAAKvoB,MAChB,CACA,KAAAm9B,GACI,KAAO1+B,KAAKq+B,QAAUr+B,KAAKc,IAAIy9B,KAAOv+B,KAAKm+B,KACvCn+B,KAAK2+B,OAAO3+B,KAAKq+B,OAAO97B,IAEhC,CACA,OAAOA,GACH,MAAMunB,EAAO9pB,KAAKc,IAAIua,IAAI9Y,GAC1B,QAAIunB,IACIA,IAAS9pB,KAAKo+B,SACdp+B,KAAKo+B,OAAStU,EAAK0U,OAEnB1U,IAAS9pB,KAAKq+B,SACdr+B,KAAKq+B,OAASvU,EAAK2U,OAEnB3U,EAAK2U,QACL3U,EAAK2U,MAAMD,MAAQ1U,EAAK0U,OAExB1U,EAAK0U,QACL1U,EAAK0U,MAAMC,MAAQ3U,EAAK2U,OAE5Bz+B,KAAKc,IAAI69B,OAAOp8B,GAChBvC,KAAKymB,QAAQqD,EAAKvoB,MAAOgB,IAClB,EAGf,iCCnFJ,SAASq8B,IAAS,kBAClB,MAAMX,EAAiBW,EACjBC,EAA8B,oBAAZC,QAClBA,QACA,SAAUv9B,GACR,MAAO,CAAEw9B,MAAO,IAAMx9B,EAC1B,EACEy9B,EAA8B,oBAAZC,QAA0BA,QAAUhlB,IACtDilB,EAAwD,oBAAzBC,qBAC/BA,qBACA,WACE,MAAO,CACHC,SAAUR,EACVS,WAAYT,EAEpB,EAEG,MAAMU,EACT,WAAA5gB,CAAYyf,EAAM7kB,IAAUmN,EAAUwX,GAClCj+B,KAAKm+B,IAAMA,EACXn+B,KAAKymB,QAAUA,EACfzmB,KAAKc,IAAM,IAAIk+B,EACfh/B,KAAKo+B,OAAS,KACdp+B,KAAKq+B,OAAS,KACdr+B,KAAKu/B,iBAAmB,IAAIvtB,IAC5BhS,KAAKw/B,uBAAwB,EAC7Bx/B,KAAKu+B,KAAO,EACZv+B,KAAKy/B,SAAW,KACZ,MAAMhhB,EAAWze,KAAKu/B,iBAAiBv8B,SACvC,IAAK,IAAIL,EAAI,EAAGA,EAbE,MAayBA,IAAK,CAC5C,MAAMmnB,EAAOrL,EAASsN,OAAOxqB,MAC7B,IAAKuoB,EACD,MACJ9pB,KAAKu/B,iBAAiBZ,OAAO7U,GAC7B,MAAMvnB,EAAMunB,EAAKvnB,WACVunB,EAAKvnB,IACZunB,EAAK4V,OAAS,IAAIb,EAASt8B,GAC3BvC,KAAK2/B,SAASP,SAAS78B,EAAKunB,EAAMA,EACtC,CACI9pB,KAAKu/B,iBAAiBhB,KAAO,EAC7BqB,eAAe5/B,KAAKy/B,UAGpBz/B,KAAKw/B,uBAAwB,CACjC,EAEJx/B,KAAK2/B,SAAW,IAAIT,EAAsBl/B,KAAK6/B,WAAWx2B,KAAKrJ,MACnE,CACA,GAAAunB,CAAIhlB,GACA,OAAOvC,KAAKc,IAAIymB,IAAIhlB,EACxB,CACA,GAAA8Y,CAAI9Y,GACA,MAAMunB,EAAO9pB,KAAKs+B,QAAQ/7B,GAC1B,OAAOunB,GAAQA,EAAKvoB,KACxB,CACA,OAAA+8B,CAAQ/7B,GACJ,MAAMunB,EAAO9pB,KAAKc,IAAIua,IAAI9Y,GAC1B,GAAIunB,GAAQA,IAAS9pB,KAAKo+B,OAAQ,CAC9B,MAAM,MAAEI,EAAK,MAAEC,GAAU3U,EACrB2U,IACAA,EAAMD,MAAQA,GAEdA,IACAA,EAAMC,MAAQA,GAElB3U,EAAK0U,MAAQx+B,KAAKo+B,OAClBtU,EAAK0U,MAAMC,MAAQ3U,EACnBA,EAAK2U,MAAQ,KACbz+B,KAAKo+B,OAAStU,EACVA,IAAS9pB,KAAKq+B,SACdr+B,KAAKq+B,OAASI,EAEtB,CACA,OAAO3U,CACX,CACA,GAAAntB,CAAI4F,EAAKhB,GACL,IAAIuoB,EAAO9pB,KAAKs+B,QAAQ/7B,GACxB,OAAIunB,EACQA,EAAKvoB,MAAQA,GAEzBuoB,EAAO,CACHvnB,MACAhB,QACAk9B,MAAO,KACPD,MAAOx+B,KAAKo+B,QAEZp+B,KAAKo+B,SACLp+B,KAAKo+B,OAAOK,MAAQ3U,GAExB9pB,KAAKo+B,OAAStU,EACd9pB,KAAKq+B,OAASr+B,KAAKq+B,QAAUvU,EAC7B9pB,KAAK8/B,qBAAqBhW,GAC1B9pB,KAAKc,IAAInE,IAAI4F,EAAKunB,GAClB9pB,KAAKu+B,OACEzU,EAAKvoB,MAChB,CACA,KAAAm9B,GACI,KAAO1+B,KAAKq+B,QAAUr+B,KAAKu+B,KAAOv+B,KAAKm+B,KACnCn+B,KAAK6/B,WAAW7/B,KAAKq+B,OAE7B,CACA,UAAAwB,CAAW/V,GACHA,IAAS9pB,KAAKo+B,SACdp+B,KAAKo+B,OAAStU,EAAK0U,OAEnB1U,IAAS9pB,KAAKq+B,SACdr+B,KAAKq+B,OAASvU,EAAK2U,OAEnB3U,EAAK2U,QACL3U,EAAK2U,MAAMD,MAAQ1U,EAAK0U,OAExB1U,EAAK0U,QACL1U,EAAK0U,MAAMC,MAAQ3U,EAAK2U,OAE5Bz+B,KAAKu+B,OACL,MAAMh8B,EAAMunB,EAAKvnB,KAAQunB,EAAK4V,QAAU5V,EAAK4V,OAAOX,QACpD/+B,KAAKymB,QAAQqD,EAAKvoB,MAAOgB,GACpBunB,EAAK4V,OAIN1/B,KAAK2/B,SAASN,WAAWvV,GAHzB9pB,KAAKu/B,iBAAiBZ,OAAO7U,GAK7BvnB,GACAvC,KAAKc,IAAI69B,OAAOp8B,EACxB,CACA,OAAOA,GACH,MAAMunB,EAAO9pB,KAAKc,IAAIua,IAAI9Y,GAC1B,QAAIunB,IACA9pB,KAAK6/B,WAAW/V,IACT,EAGf,CACA,oBAAAgW,CAAqBhW,GACjB9pB,KAAKu/B,iBAAiBQ,IAAIjW,GACrB9pB,KAAKw/B,wBACNx/B,KAAKw/B,uBAAwB,EAC7BI,eAAe5/B,KAAKy/B,UAE5B,0DC5IJ,MAAM,SAAEp4B,EAAQ,eAAEoE,GAAmB/T,OAAOyI,UACtC6/B,EAAU52B,SAASjJ,UAAUkH,SAC7B44B,EAAsB,IAAIhmB,IAIzB,SAASimB,EAAMznC,EAAGO,GACrB,IACI,OAAOmnC,EAAM1nC,EAAGO,EACpB,CACA,QACIinC,EAAoBvkB,OACxB,CACJ,CAEA,UACA,SAASykB,EAAM1nC,EAAGO,GAEd,GAAIP,IAAMO,EACN,OAAO,EAIX,MAAMonC,EAAO/4B,EAAS/K,KAAK7D,GAK3B,GAAI2nC,IAJS/4B,EAAS/K,KAAKtD,GAKvB,OAAO,EAEX,OAAQonC,GACJ,IAAK,iBAGD,GAAI3nC,EAAEkB,SAAWX,EAAEW,OACf,OAAO,EAEf,IAAK,kBAAmB,CACpB,GAAI0mC,EAAmB5nC,EAAGO,GACtB,OAAO,EACX,MAAMs2B,EAAQgR,EAAY7nC,GACpB82B,EAAQ+Q,EAAYtnC,GAGpBunC,EAAWjR,EAAM31B,OACvB,GAAI4mC,IAAahR,EAAM51B,OACnB,OAAO,EAEX,IAAK,IAAIf,EAAI,EAAGA,EAAI2nC,IAAY3nC,EAC5B,IAAK6S,EAAenP,KAAKtD,EAAGs2B,EAAM12B,IAC9B,OAAO,EAIf,IAAK,IAAIA,EAAI,EAAGA,EAAI2nC,IAAY3nC,EAAG,CAC/B,MAAM2J,EAAM+sB,EAAM12B,GAClB,IAAKunC,EAAM1nC,EAAE8J,GAAMvJ,EAAEuJ,IACjB,OAAO,CAEf,CACA,OAAO,CACX,CACA,IAAK,iBACD,OAAO9J,EAAEwH,OAASjH,EAAEiH,MAAQxH,EAAEqH,UAAY9G,EAAE8G,QAChD,IAAK,kBAED,GAAIrH,GAAMA,EACN,OAAOO,GAAMA,EAErB,IAAK,mBACL,IAAK,gBACD,OAAQP,IAAOO,EACnB,IAAK,kBACL,IAAK,kBACD,OAAOP,GAAK,GAAGO,IACnB,IAAK,eACL,IAAK,eAAgB,CACjB,GAAIP,EAAE8lC,OAASvlC,EAAEulC,KACb,OAAO,EACX,GAAI8B,EAAmB5nC,EAAGO,GACtB,OAAO,EACX,MAAMwnC,EAAY/nC,EAAEqzB,UACd2U,EAAiB,iBAATL,EACd,OAAa,CACT,MAAMM,EAAOF,EAAUzU,OACvB,GAAI2U,EAAK1U,KACL,MAEJ,MAAO2U,EAAMC,GAAUF,EAAKn/B,MAE5B,IAAKvI,EAAEuuB,IAAIoZ,GACP,OAAO,EAIX,GAAIF,IAAUN,EAAMS,EAAQ5nC,EAAEqiB,IAAIslB,IAC9B,OAAO,CAEf,CACA,OAAO,CACX,CACA,IAAK,uBACL,IAAK,sBACL,IAAK,uBACL,IAAK,sBACL,IAAK,qBACL,IAAK,sBACL,IAAK,uBAGDloC,EAAI,IAAIooC,WAAWpoC,GACnBO,EAAI,IAAI6nC,WAAW7nC,GAEvB,IAAK,oBAAqB,CACtB,IAAIw2B,EAAM/2B,EAAEqoC,WACZ,GAAItR,IAAQx2B,EAAE8nC,WACV,KAAOtR,KAAS/2B,EAAE+2B,KAASx2B,EAAEw2B,KAIjC,OAAgB,IAATA,CACX,CACA,IAAK,yBACL,IAAK,6BACL,IAAK,kCACL,IAAK,oBAAqB,CACtB,MAAMuR,EAAQf,EAAQ1jC,KAAK7D,GAC3B,OAAIsoC,IAAUf,EAAQ1jC,KAAKtD,KAyCvC,SAAkBgoC,EAAMC,GACpB,MAAMC,EAAYF,EAAKrnC,OAASsnC,EAAOtnC,OACvC,OAAOunC,GAAa,GAChBF,EAAKrlC,QAAQslC,EAAQC,KAAeA,CAC5C,CAnBoBtvB,CAASmvB,EAAOI,EAC5B,EAGJ,OAAO,CACX,CACA,SAASb,EAAYr+B,GAGjB,OAAOvK,OAAOiJ,KAAKsB,GAAK0Q,OAAOyuB,EAAcn/B,EACjD,CACA,SAASm/B,EAAa7+B,GAClB,YAAqB,IAAdvC,KAAKuC,EAChB,CACA,MAAM4+B,EAAmB,oBAMzB,SAASd,EAAmB5nC,EAAGO,GAS3B,IAAIqoC,EAAOpB,EAAoB5kB,IAAI5iB,GACnC,GAAI4oC,GAGA,GAAIA,EAAK9Z,IAAIvuB,GACT,OAAO,OAGXinC,EAAoBtjC,IAAIlE,EAAG4oC,EAAO,IAAIrvB,KAG1C,OADAqvB,EAAKtB,IAAI/mC,IACF,CACX,iDC9LA,MAAMsoC,EAAkB,IAAM5pC,OAAOC,OAAO,OAEtC,QAAEyZ,EAAO,MAAErB,GAAUrH,MAAMvI,WAC3B,eAAEsL,GAAmB/T,OAAOyI,UAC3B,MAAMohC,EACT,WAAA7iB,CAAY8iB,GAAW,EAAMC,EAAWH,GACpCthC,KAAKwhC,SAAWA,EAChBxhC,KAAKyhC,SAAWA,CACpB,CACA,MAAAriB,GACI,OAAOpf,KAAK0hC,YAAYr/B,UAC5B,CACA,WAAAq/B,CAAYl/B,GACR,IAAIsnB,EAAO9pB,KAEX,OADAoR,EAAQ9U,KAAKkG,GAAOD,GAAOunB,EAAOA,EAAK6X,aAAap/B,KAC7CkJ,EAAenP,KAAKwtB,EAAM,QAC3BA,EAAKc,KACLd,EAAKc,KAAO5qB,KAAKyhC,SAAS1xB,EAAMzT,KAAKkG,GAC/C,CACA,IAAAo/B,GACI,OAAO5hC,KAAK6hC,UAAUx/B,UAC1B,CACA,SAAAw/B,CAAUr/B,GACN,IAAIsnB,EAAO9pB,KACX,IAAK,IAAI2C,EAAI,EAAG6sB,EAAMhtB,EAAM7I,OAAQmwB,GAAQnnB,EAAI6sB,IAAO7sB,EAAG,CACtD,MAAM7B,EAAMgpB,EAAKgY,OAAOt/B,EAAMG,IAAI,GAClCmnB,EAAOhpB,GAAOA,EAAIua,IAAI7Y,EAAMG,GAChC,CACA,OAAOmnB,GAAQA,EAAKc,IACxB,CACA,MAAAmX,GACI,OAAO/hC,KAAKgiC,YAAY3/B,UAC5B,CACA,WAAA2/B,CAAYx/B,GACR,IAAIooB,EACJ,GAAIpoB,EAAM7I,OAAQ,CACd,MAAMie,EAAOpV,EAAM,GACb1B,EAAMd,KAAK8hC,OAAOlqB,GAAM,GACxBqqB,EAAQnhC,GAAOA,EAAIua,IAAIzD,GACzBqqB,IACArX,EAAOqX,EAAMD,YAAYjyB,EAAMzT,KAAKkG,EAAO,IACtCy/B,EAAMrX,MAASqX,EAAMC,MAAUD,EAAME,QAAUF,EAAME,OAAO5D,MAC7Dz9B,EAAI69B,OAAO/mB,GAGvB,MAEIgT,EAAO5qB,KAAK4qB,YACL5qB,KAAK4qB,KAEhB,OAAOA,CACX,CACA,YAAA+W,CAAap/B,GACT,MAAMzB,EAAMd,KAAK8hC,OAAOv/B,GAAK,GAC7B,IAAI0/B,EAAQnhC,EAAIua,IAAI9Y,GAGpB,OAFK0/B,GACDnhC,EAAInE,IAAI4F,EAAK0/B,EAAQ,IAAIV,EAAKvhC,KAAKwhC,SAAUxhC,KAAKyhC,WAC/CQ,CACX,CACA,MAAAH,CAAOv/B,EAAK5K,GACR,OAAOqI,KAAKwhC,UAKpB,SAAkBjgC,GACd,cAAeA,GACX,IAAK,SACD,GAAc,OAAVA,EACA,MAER,IAAK,WACD,OAAO,EAEf,OAAO,CACX,CAfgC6gC,CAAS7/B,GAC3BvC,KAAKkiC,OAASvqC,EAASqI,KAAKkiC,KAAO,IAAIjD,aAAU,GACjDj/B,KAAKmiC,SAAWxqC,EAASqI,KAAKmiC,OAAS,IAAIloB,SAAM,EAC3D,4DClEW,SAAS5Q,EAAK7R,EAAI6qC,GAC/B,OAAO,WACL,OAAO7qC,EAAGqS,MAAMw4B,EAAShgC,UAC3B,CACF,wICAA,MAAOgF,SAAQ,GAAI3P,OAAOyI,WACpB,eAACsH,GAAkB/P,OAEnB4qC,GAAU7qC,EAGbC,OAAOC,OAAO,MAHQ4qC,IACrB,MAAMxgC,EAAM,EAASzF,KAAKimC,GAC1B,OAAO9qC,EAAMsK,KAAStK,EAAMsK,GAAOA,EAAIgO,MAAM,GAAI,GAAGnJ,cAAc,GAFvD,IAACnP,EAKhB,MAAM+qC,EAAc79B,IAClBA,EAAOA,EAAKiC,cACJ27B,GAAUD,EAAOC,KAAW59B,GAGhC89B,EAAa99B,GAAQ49B,UAAgBA,IAAU59B,GAS/C,QAACgE,GAAWD,MASZg6B,EAAcD,EAAW,aAqBzBE,EAAgBH,EAAW,eA2B3BI,EAAWH,EAAW,UAQtBI,EAAaJ,EAAW,YASxBK,EAAWL,EAAW,UAStBM,EAAYR,GAAoB,OAAVA,GAAmC,iBAAVA,EAiB/CS,EAAiB9iB,IACrB,GAAoB,WAAhBoiB,EAAOpiB,GACT,OAAO,EAGT,MAAM/f,EAAYsH,EAAeyY,GACjC,QAAsB,OAAd/f,GAAsBA,IAAczI,OAAOyI,WAAkD,OAArCzI,OAAO+P,eAAetH,IAA0BuW,OAAO2f,eAAenW,GAAUxJ,OAAO+H,YAAYyB,EAAI,EAUnK+iB,EAAST,EAAW,QASpBU,EAASV,EAAW,QASpBW,EAASX,EAAW,QASpBY,EAAaZ,EAAW,YAsCxBa,EAAoBb,EAAW,oBAE9Bc,EAAkBC,EAAWC,EAAYC,GAAa,CAAC,iBAAkB,UAAW,WAAY,WAAW3iC,IAAI0hC,GA2BtH,SAASpxB,EAAQnP,EAAKzK,GAAI,WAACksC,GAAa,GAAS,CAAC,GAEhD,GAAIzhC,QACF,OAGF,IAAIU,EACArJ,EAQJ,GALmB,iBAAR2I,IAETA,EAAM,CAACA,IAGL0G,EAAQ1G,GAEV,IAAKU,EAAI,EAAGrJ,EAAI2I,EAAItI,OAAQgJ,EAAIrJ,EAAGqJ,IACjCnL,EAAG8E,KAAK,KAAM2F,EAAIU,GAAIA,EAAGV,OAEtB,CAEL,MAAMtB,EAAO+iC,EAAahsC,OAAOwK,oBAAoBD,GAAOvK,OAAOiJ,KAAKsB,GAClEutB,EAAM7uB,EAAKhH,OACjB,IAAI4I,EAEJ,IAAKI,EAAI,EAAGA,EAAI6sB,EAAK7sB,IACnBJ,EAAM5B,EAAKgC,GACXnL,EAAG8E,KAAK,KAAM2F,EAAIM,GAAMA,EAAKN,EAEjC,CACF,CAEA,SAAS0hC,EAAQ1hC,EAAKM,GACpBA,EAAMA,EAAIqE,cACV,MAAMjG,EAAOjJ,OAAOiJ,KAAKsB,GACzB,IACIoW,EADA1V,EAAIhC,EAAKhH,OAEb,KAAOgJ,KAAM,GAEX,GADA0V,EAAO1X,EAAKgC,GACRJ,IAAQ8V,EAAKzR,cACf,OAAOyR,EAGX,OAAO,IACT,CAEA,MAAMurB,EAEsB,oBAAfjH,WAAmCA,WACvB,oBAATzW,KAAuBA,KAA0B,oBAAX7f,OAAyBA,OAASw9B,OAGlFC,EAAoBC,IAAarB,EAAYqB,IAAYA,IAAYH,EAkLrEI,GAAgBC,EAKG,oBAAfpD,YAA8Bp5B,EAAeo5B,YAH9C0B,GACE0B,GAAc1B,aAAiB0B,GAHrB,IAACA,EAetB,MAiCMC,EAAa1B,EAAW,mBAWxB,EAAiB,GAAG/2B,oBAAoB,CAACxJ,EAAKjK,IAASyT,EAAenP,KAAK2F,EAAKjK,GAA/D,CAAsEN,OAAOyI,WAS9FgkC,EAAW3B,EAAW,UAEtB4B,EAAoB,CAACniC,EAAKoiC,KAC9B,MAAMC,EAAc5sC,OAAO6sC,0BAA0BtiC,GAC/CuiC,EAAqB,CAAC,EAE5BpzB,EAAQkzB,GAAa,CAAChmB,EAAYre,KAChC,IAAIo5B,GAC2C,KAA1CA,EAAMgL,EAAQ/lB,EAAYre,EAAMgC,MACnCuiC,EAAmBvkC,GAAQo5B,GAAO/a,EACpC,IAGF5mB,OAAOkmC,iBAAiB37B,EAAKuiC,EAAmB,EAgG5CC,EAAYjC,EAAW,iBAQvBkC,GAAkBC,EAkBE,mBAAjB7oB,aAlBsC8oB,EAmB7C/B,EAAWe,EAAQ5L,aAlBf2M,EACK7oB,aAGF8oB,GAAyBC,EAW7B,SAASh6B,KAAKC,WAXsB8P,EAWV,GAV3BgpB,EAAQn2B,iBAAiB,WAAW,EAAEjC,SAAQof,WACxCpf,IAAWo4B,GAAWhZ,IAASia,GACjCjqB,EAAUjhB,QAAUihB,EAAUnF,OAAVmF,EACtB,IACC,GAEKkqB,IACNlqB,EAAUtZ,KAAKwjC,GACflB,EAAQ5L,YAAY6M,EAAO,IAAI,GAECC,GAAO/oB,WAAW+oB,IAhBlC,IAAEH,EAAuBC,EAKbC,EAAOjqB,EAiBzC,MAAMmqB,EAAiC,oBAAnBnF,eAClBA,eAAev2B,KAAKu6B,GAAgC,oBAAZl/B,SAA2BA,QAAQmX,UAAY6oB,EAIzF,GACE/7B,UACAg6B,gBACAqC,SA9nBF,SAAkB9kB,GAChB,OAAe,OAARA,IAAiBwiB,EAAYxiB,IAA4B,OAApBA,EAAIxB,cAAyBgkB,EAAYxiB,EAAIxB,cACpFmkB,EAAW3iB,EAAIxB,YAAYsmB,WAAa9kB,EAAIxB,YAAYsmB,SAAS9kB,EACxE,EA4nBE+kB,WAhfkB1C,IAClB,IAAI2C,EACJ,OAAO3C,IACgB,mBAAb4C,UAA2B5C,aAAiB4C,UAClDtC,EAAWN,EAAM6C,UACY,cAA1BF,EAAO5C,EAAOC,KAEL,WAAT2C,GAAqBrC,EAAWN,EAAMl7B,WAAkC,sBAArBk7B,EAAMl7B,YAGhE,EAueAg+B,kBA1mBF,SAA2BnlB,GACzB,IAAI7X,EAMJ,OAJEA,EAD0B,oBAAhBi9B,aAAiCA,YAAkB,OACpDA,YAAYC,OAAOrlB,GAEnB,GAAUA,EAAU,QAAMyiB,EAAcziB,EAAIslB,QAEhDn9B,CACT,EAmmBEu6B,WACAE,WACA2C,UA1jBgBlD,IAAmB,IAAVA,IAA4B,IAAVA,EA2jB3CQ,WACAC,gBACAM,mBACAC,YACAC,aACAC,YACAf,cACAO,SACAC,SACAC,SACAgB,WACAtB,aACA6C,SA1gBgBxlB,GAAQ6iB,EAAS7iB,IAAQ2iB,EAAW3iB,EAAIylB,MA2gBxDtC,oBACAW,eACAZ,aACAhyB,UACAw0B,MA5YF,SAASA,IACP,MAAM,SAACC,GAAY/B,EAAiB9jC,OAASA,MAAQ,CAAC,EAChDqI,EAAS,CAAC,EACVy9B,EAAc,CAAC5lB,EAAK3d,KACxB,MAAMwjC,EAAYF,GAAYlC,EAAQt7B,EAAQ9F,IAAQA,EAClDygC,EAAc36B,EAAO09B,KAAe/C,EAAc9iB,GACpD7X,EAAO09B,GAAaH,EAAMv9B,EAAO09B,GAAY7lB,GACpC8iB,EAAc9iB,GACvB7X,EAAO09B,GAAaH,EAAM,CAAC,EAAG1lB,GACrBvX,EAAQuX,GACjB7X,EAAO09B,GAAa7lB,EAAInQ,QAExB1H,EAAO09B,GAAa7lB,CACtB,EAGF,IAAK,IAAIvd,EAAI,EAAGrJ,EAAI+I,UAAU1I,OAAQgJ,EAAIrJ,EAAGqJ,IAC3CN,UAAUM,IAAMyO,EAAQ/O,UAAUM,GAAImjC,GAExC,OAAOz9B,CACT,EAyXE29B,OA7Wa,CAACvtC,EAAGO,EAAGqpC,GAAUqB,cAAa,CAAC,KAC5CtyB,EAAQpY,GAAG,CAACknB,EAAK3d,KACX8/B,GAAWQ,EAAW3iB,GACxBznB,EAAE8J,GAAO8G,EAAK6W,EAAKmiB,GAEnB5pC,EAAE8J,GAAO2d,CACX,GACC,CAACwjB,eACGjrC,GAsWP0B,KAzeY4H,GAAQA,EAAI5H,KACxB4H,EAAI5H,OAAS4H,EAAI9H,QAAQ,qCAAsC,IAye/DgsC,SA7VgBC,IACc,QAA1BA,EAAQhuC,WAAW,KACrBguC,EAAUA,EAAQn2B,MAAM,IAEnBm2B,GA0VPC,SA9Ue,CAACznB,EAAa0nB,EAAkBz8B,EAAO26B,KACtD5lB,EAAYve,UAAYzI,OAAOC,OAAOyuC,EAAiBjmC,UAAWmkC,GAClE5lB,EAAYve,UAAUue,YAAcA,EACpChnB,OAAOimB,eAAee,EAAa,QAAS,CAC1Cnd,MAAO6kC,EAAiBjmC,YAE1BwJ,GAASjS,OAAO4T,OAAOoT,EAAYve,UAAWwJ,EAAM,EAyUpD08B,aA7TmB,CAACC,EAAWC,EAAS5zB,EAAQ6zB,KAChD,IAAI78B,EACAhH,EACA3K,EACJ,MAAMyuC,EAAS,CAAC,EAIhB,GAFAF,EAAUA,GAAW,CAAC,EAEL,MAAbD,EAAmB,OAAOC,EAE9B,EAAG,CAGD,IAFA58B,EAAQjS,OAAOwK,oBAAoBokC,GACnC3jC,EAAIgH,EAAMhQ,OACHgJ,KAAM,GACX3K,EAAO2R,EAAMhH,GACP6jC,IAAcA,EAAWxuC,EAAMsuC,EAAWC,IAAcE,EAAOzuC,KACnEuuC,EAAQvuC,GAAQsuC,EAAUtuC,GAC1ByuC,EAAOzuC,IAAQ,GAGnBsuC,GAAuB,IAAX3zB,GAAoBlL,EAAe6+B,EACjD,OAASA,KAAe3zB,GAAUA,EAAO2zB,EAAWC,KAAaD,IAAc5uC,OAAOyI,WAEtF,OAAOomC,CAAO,EAuSdjE,SACAE,aACA5wB,SA7Re,CAAC7P,EAAK2kC,EAAcC,KACnC5kC,EAAMJ,OAAOI,SACIlK,IAAb8uC,GAA0BA,EAAW5kC,EAAIpI,UAC3CgtC,EAAW5kC,EAAIpI,QAEjBgtC,GAAYD,EAAa/sC,OACzB,MAAMitC,EAAY7kC,EAAIpG,QAAQ+qC,EAAcC,GAC5C,OAAsB,IAAfC,GAAoBA,IAAcD,CAAQ,EAuRjDE,QA5QetE,IACf,IAAKA,EAAO,OAAO,KACnB,GAAI55B,EAAQ45B,GAAQ,OAAOA,EAC3B,IAAI5/B,EAAI4/B,EAAM5oC,OACd,IAAKmpC,EAASngC,GAAI,OAAO,KACzB,MAAMd,EAAM,IAAI6G,MAAM/F,GACtB,KAAOA,KAAM,GACXd,EAAIc,GAAK4/B,EAAM5/B,GAEjB,OAAOd,CAAG,EAoQVilC,aAzOmB,CAAC7kC,EAAKzK,KACzB,MAEMinB,GAFYxc,GAAOA,EAAIyU,OAAO+H,WAETniB,KAAK2F,GAEhC,IAAIoG,EAEJ,MAAQA,EAASoW,EAASsN,UAAY1jB,EAAO2jB,MAAM,CACjD,MAAM+a,EAAO1+B,EAAO9G,MACpB/J,EAAG8E,KAAK2F,EAAK8kC,EAAK,GAAIA,EAAK,GAC7B,GAgOAC,SArNe,CAACC,EAAQllC,KACxB,IAAIuO,EACJ,MAAMzO,EAAM,GAEZ,KAAwC,QAAhCyO,EAAU22B,EAAOC,KAAKnlC,KAC5BF,EAAIP,KAAKgP,GAGX,OAAOzO,CAAG,EA8MVqiC,aACAz4B,eAAc,EACd07B,WAAY,EACZ/C,oBACAgD,cArKqBnlC,IACrBmiC,EAAkBniC,GAAK,CAACqc,EAAYre,KAElC,GAAI4iC,EAAW5gC,KAA6D,IAArD,CAAC,YAAa,SAAU,UAAUtG,QAAQsE,GAC/D,OAAO,EAGT,MAAMsB,EAAQU,EAAIhC,GAEb4iC,EAAWthC,KAEhB+c,EAAWQ,YAAa,EAEpB,aAAcR,EAChBA,EAAWU,UAAW,EAInBV,EAAW3hB,MACd2hB,EAAW3hB,IAAM,KACf,MAAMyD,MAAM,qCAAwCH,EAAO,IAAK,GAEpE,GACA,EA+IFonC,YA5IkB,CAACC,EAAeC,KAClC,MAAMtlC,EAAM,CAAC,EAEP43B,EAAUh4B,IACdA,EAAIuP,SAAQ7P,IACVU,EAAIV,IAAS,CAAI,GACjB,EAKJ,OAFAoH,EAAQ2+B,GAAiBzN,EAAOyN,GAAiBzN,EAAOl4B,OAAO2lC,GAAe9rC,MAAM+rC,IAE7EtlC,CAAG,EAkIVulC,YA9MkBzlC,GACXA,EAAI6E,cAAc3M,QAAQ,yBAC/B,SAAkBlB,EAAG0uC,EAAIC,GACvB,OAAOD,EAAGE,cAAgBD,CAC5B,IA2MF9I,KAhIW,OAiIXgJ,eA/HqB,CAACrmC,EAAOsmC,IACb,MAATtmC,GAAiB+e,OAAOwnB,SAASvmC,GAASA,GAASA,EAAQsmC,EA+HlElE,UACAE,OAAQD,EACRE,mBACAiE,oBAxHF,SAA6BxF,GAC3B,SAAUA,GAASM,EAAWN,EAAM6C,SAAyC,aAA9B7C,EAAM7rB,OAAO2f,cAA+BkM,EAAM7rB,OAAO+H,UAC1G,EAuHEupB,aArHoB/lC,IACpB,MAAMmF,EAAQ,IAAIsB,MAAM,IAElBu/B,EAAQ,CAACz8B,EAAQ7I,KAErB,GAAIogC,EAASv3B,GAAS,CACpB,GAAIpE,EAAMzL,QAAQ6P,IAAW,EAC3B,OAGF,KAAK,WAAYA,GAAS,CACxBpE,EAAMzE,GAAK6I,EACX,MAAMD,EAAS5C,EAAQ6C,GAAU,GAAK,CAAC,EASvC,OAPA4F,EAAQ5F,GAAQ,CAACjK,EAAOgB,KACtB,MAAM2lC,EAAeD,EAAM1mC,EAAOoB,EAAI,IACrC+/B,EAAYwF,KAAkB38B,EAAOhJ,GAAO2lC,EAAa,IAG5D9gC,EAAMzE,QAAK9K,EAEJ0T,CACT,CACF,CAEA,OAAOC,CAAM,EAGf,OAAOy8B,EAAMhmC,EAAK,EAAE,EA0FpBwiC,YACA0D,WAtFkB5F,GAClBA,IAAUQ,EAASR,IAAUM,EAAWN,KAAWM,EAAWN,EAAMtrB,OAAS4rB,EAAWN,EAAM6F,OAsF9FtsB,aAAc4oB,EACdK,QCjtBF,SAASsD,EAAWvoC,EAASwoC,EAAMC,EAAQx9B,EAASy9B,GAClDpoC,MAAM9D,KAAK0D,MAEPI,MAAMqoC,kBACRroC,MAAMqoC,kBAAkBzoC,KAAMA,KAAK0e,aAEnC1e,KAAKoH,OAAQ,IAAKhH,OAASgH,MAG7BpH,KAAKF,QAAUA,EACfE,KAAKC,KAAO,aACZqoC,IAAStoC,KAAKsoC,KAAOA,GACrBC,IAAWvoC,KAAKuoC,OAASA,GACzBx9B,IAAY/K,KAAK+K,QAAUA,GACvBy9B,IACFxoC,KAAKwoC,SAAWA,EAChBxoC,KAAKqW,OAASmyB,EAASnyB,OAASmyB,EAASnyB,OAAS,KAEtD,CAEAqyB,EAAMvC,SAASkC,EAAYjoC,MAAO,CAChCuoC,OAAQ,WACN,MAAO,CAEL7oC,QAASE,KAAKF,QACdG,KAAMD,KAAKC,KAEX2oC,YAAa5oC,KAAK4oC,YAClBjgB,OAAQ3oB,KAAK2oB,OAEbkgB,SAAU7oC,KAAK6oC,SACfC,WAAY9oC,KAAK8oC,WACjBC,aAAc/oC,KAAK+oC,aACnB3hC,MAAOpH,KAAKoH,MAEZmhC,OAAQG,EAAMV,aAAahoC,KAAKuoC,QAChCD,KAAMtoC,KAAKsoC,KACXjyB,OAAQrW,KAAKqW,OAEjB,IAGF,MAAM,EAAYgyB,EAAWloC,UACvBmkC,EAAc,CAAC,EAErB,CACE,uBACA,iBACA,eACA,YACA,cACA,4BACA,iBACA,mBACA,kBACA,eACA,kBACA,mBAEAlzB,SAAQk3B,IACRhE,EAAYgE,GAAQ,CAAC/mC,MAAO+mC,EAAK,IAGnC5wC,OAAOkmC,iBAAiByK,EAAY/D,GACpC5sC,OAAOimB,eAAe,EAAW,eAAgB,CAACpc,OAAO,IAGzD8mC,EAAWjzB,KAAO,CAAC3T,EAAO6mC,EAAMC,EAAQx9B,EAASy9B,EAAUQ,KACzD,MAAMC,EAAavxC,OAAOC,OAAO,GAgBjC,OAdA+wC,EAAMrC,aAAa5kC,EAAOwnC,GAAY,SAAgBhnC,GACpD,OAAOA,IAAQ7B,MAAMD,SACvB,IAAGnI,GACe,iBAATA,IAGTqwC,EAAW/rC,KAAK2sC,EAAYxnC,EAAM3B,QAASwoC,EAAMC,EAAQx9B,EAASy9B,GAElES,EAAWC,MAAQznC,EAEnBwnC,EAAWhpC,KAAOwB,EAAMxB,KAExB+oC,GAAetxC,OAAO4T,OAAO29B,EAAYD,GAElCC,CAAU,EAGnB,UCxFA,SAASE,EAAY5G,GACnB,OAAOmG,EAAM1F,cAAcT,IAAUmG,EAAM//B,QAAQ45B,EACrD,CASA,SAAS6G,EAAe7mC,GACtB,OAAOmmC,EAAM92B,SAASrP,EAAK,MAAQA,EAAIwN,MAAM,GAAI,GAAKxN,CACxD,CAWA,SAAS8mC,EAAUp6B,EAAM1M,EAAK+mC,GAC5B,OAAKr6B,EACEA,EAAKvN,OAAOa,GAAKzB,KAAI,SAAc+jC,EAAOliC,GAG/C,OADAkiC,EAAQuE,EAAevE,IACfyE,GAAQ3mC,EAAI,IAAMkiC,EAAQ,IAAMA,CAC1C,IAAGhqC,KAAKyuC,EAAO,IAAM,IALH/mC,CAMpB,CAaA,MAAMgnC,EAAab,EAAMrC,aAAaqC,EAAO,CAAC,EAAG,MAAM,SAAgB1wC,GACrE,MAAO,WAAWC,KAAKD,EACzB,IA8JA,GArIA,SAAoBiK,EAAKunC,EAAU39B,GACjC,IAAK68B,EAAM3F,SAAS9gC,GAClB,MAAM,IAAIgX,UAAU,4BAItBuwB,EAAWA,GAAY,IAAyBrE,SAYhD,MAAMsE,GATN59B,EAAU68B,EAAMrC,aAAax6B,EAAS,CACpC49B,YAAY,EACZH,MAAM,EACNI,SAAS,IACR,GAAO,SAAiBC,EAAQn+B,GAEjC,OAAQk9B,EAAMhG,YAAYl3B,EAAOm+B,GACnC,KAE2BF,WAErBG,EAAU/9B,EAAQ+9B,SAAWC,EAC7BP,EAAOz9B,EAAQy9B,KACfI,EAAU79B,EAAQ69B,QAElBI,GADQj+B,EAAQk+B,MAAwB,oBAATA,MAAwBA,OACpCrB,EAAMX,oBAAoByB,GAEnD,IAAKd,EAAM7F,WAAW+G,GACpB,MAAM,IAAI3wB,UAAU,8BAGtB,SAAS+wB,EAAazoC,GACpB,GAAc,OAAVA,EAAgB,MAAO,GAE3B,GAAImnC,EAAMzF,OAAO1hC,GACf,OAAOA,EAAM0oC,cAGf,IAAKH,GAAWpB,EAAMvF,OAAO5hC,GAC3B,MAAM,IAAI,EAAW,gDAGvB,OAAImnC,EAAM/F,cAAcphC,IAAUmnC,EAAM1E,aAAaziC,GAC5CuoC,GAA2B,mBAATC,KAAsB,IAAIA,KAAK,CAACxoC,IAAU2oC,OAAO90B,KAAK7T,GAG1EA,CACT,CAYA,SAASsoC,EAAetoC,EAAOgB,EAAK0M,GAClC,IAAIpN,EAAMN,EAEV,GAAIA,IAAU0N,GAAyB,iBAAV1N,EAC3B,GAAImnC,EAAM92B,SAASrP,EAAK,MAEtBA,EAAMknC,EAAalnC,EAAMA,EAAIwN,MAAM,GAAI,GAEvCxO,EAAQkT,KAAKC,UAAUnT,QAClB,GACJmnC,EAAM//B,QAAQpH,IAnGvB,SAAqBM,GACnB,OAAO6mC,EAAM//B,QAAQ9G,KAASA,EAAI6Q,KAAKy2B,EACzC,CAiGiCgB,CAAY5oC,KACnCmnC,EAAMtF,WAAW7hC,IAAUmnC,EAAM92B,SAASrP,EAAK,SAAWV,EAAM6mC,EAAM7B,QAAQtlC,IAYhF,OATAgB,EAAM6mC,EAAe7mC,GAErBV,EAAIuP,SAAQ,SAAcg5B,EAAI59B,IAC1Bk8B,EAAMhG,YAAY0H,IAAc,OAAPA,GAAgBZ,EAASpE,QAEtC,IAAZsE,EAAmBL,EAAU,CAAC9mC,GAAMiK,EAAO88B,GAAqB,OAAZI,EAAmBnnC,EAAMA,EAAM,KACnFynC,EAAaI,GAEjB,KACO,EAIX,QAAIjB,EAAY5nC,KAIhBioC,EAASpE,OAAOiE,EAAUp6B,EAAM1M,EAAK+mC,GAAOU,EAAazoC,KAElD,EACT,CAEA,MAAM6F,EAAQ,GAERijC,EAAiB3yC,OAAO4T,OAAOi+B,EAAY,CAC/CM,iBACAG,eACAb,gBAyBF,IAAKT,EAAM3F,SAAS9gC,GAClB,MAAM,IAAIgX,UAAU,0BAKtB,OA5BA,SAASqxB,EAAM/oC,EAAO0N,GACpB,IAAIy5B,EAAMhG,YAAYnhC,GAAtB,CAEA,IAA8B,IAA1B6F,EAAMzL,QAAQ4F,GAChB,MAAMnB,MAAM,kCAAoC6O,EAAKpU,KAAK,MAG5DuM,EAAM9F,KAAKC,GAEXmnC,EAAMt3B,QAAQ7P,GAAO,SAAc6oC,EAAI7nC,IAKtB,OAJEmmC,EAAMhG,YAAY0H,IAAc,OAAPA,IAAgBR,EAAQttC,KAChEktC,EAAUY,EAAI1B,EAAM9F,SAASrgC,GAAOA,EAAIpI,OAASoI,EAAK0M,EAAMo7B,KAI5DC,EAAMF,EAAIn7B,EAAOA,EAAKvN,OAAOa,GAAO,CAACA,GAEzC,IAEA6E,EAAMuO,KAlB8B,CAmBtC,CAMA20B,CAAMroC,GAECunC,CACT,EC5MA,SAASe,GAAOxoC,GACd,MAAMyoC,EAAU,CACd,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,MAAO,IACP,MAAO,MAET,OAAOpqB,mBAAmBre,GAAK9H,QAAQ,oBAAoB,SAAkBiZ,GAC3E,OAAOs3B,EAAQt3B,EACjB,GACF,CAUA,SAASu3B,GAAqBr3B,EAAQvH,GACpC7L,KAAK0qC,OAAS,GAEdt3B,GAAU,GAAWA,EAAQpT,KAAM6L,EACrC,CAEA,MAAM,GAAY4+B,GAAqBtqC,UAEvC,GAAUilC,OAAS,SAAgBnlC,EAAMsB,GACvCvB,KAAK0qC,OAAOppC,KAAK,CAACrB,EAAMsB,GAC1B,EAEA,GAAU8F,SAAW,SAAkBsjC,GACrC,MAAMC,EAAUD,EAAU,SAASppC,GACjC,OAAOopC,EAAQruC,KAAK0D,KAAMuB,EAAOgpC,GACnC,EAAIA,GAEJ,OAAOvqC,KAAK0qC,OAAO5pC,KAAI,SAAcimC,GACnC,OAAO6D,EAAQ7D,EAAK,IAAM,IAAM6D,EAAQ7D,EAAK,GAC/C,GAAG,IAAIlsC,KAAK,IACd,EAEA,YC5CA,SAAS,GAAOqlB,GACd,OAAOE,mBAAmBF,GACxBjmB,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,IACrB,CAWe,SAAS4wC,GAASj9B,EAAKwF,EAAQvH,GAE5C,IAAKuH,EACH,OAAOxF,EAGT,MAAMg9B,EAAU/+B,GAAWA,EAAQ0+B,QAAU,GAEzC7B,EAAM7F,WAAWh3B,KACnBA,EAAU,CACRi/B,UAAWj/B,IAIf,MAAMk/B,EAAcl/B,GAAWA,EAAQi/B,UAEvC,IAAIE,EAUJ,GAPEA,EADED,EACiBA,EAAY33B,EAAQvH,GAEpB68B,EAAMrF,kBAAkBjwB,GACzCA,EAAO/L,WACP,IAAI,GAAqB+L,EAAQvH,GAASxE,SAASujC,GAGnDI,EAAkB,CACpB,MAAMC,EAAgBr9B,EAAIjS,QAAQ,MAEX,IAAnBsvC,IACFr9B,EAAMA,EAAImC,MAAM,EAAGk7B,IAErBr9B,KAA8B,IAAtBA,EAAIjS,QAAQ,KAAc,IAAM,KAAOqvC,CACjD,CAEA,OAAOp9B,CACT,CCEA,SAlEA,MACE,WAAA8Q,GACE1e,KAAKkrC,SAAW,EAClB,CAUA,GAAAzuC,CAAI0uC,EAAWC,EAAUv/B,GAOvB,OANA7L,KAAKkrC,SAAS5pC,KAAK,CACjB6pC,YACAC,WACAC,cAAax/B,GAAUA,EAAQw/B,YAC/BC,QAASz/B,EAAUA,EAAQy/B,QAAU,OAEhCtrC,KAAKkrC,SAASvxC,OAAS,CAChC,CASA,KAAA4xC,CAAMnU,GACAp3B,KAAKkrC,SAAS9T,KAChBp3B,KAAKkrC,SAAS9T,GAAM,KAExB,CAOA,KAAA1b,GACM1b,KAAKkrC,WACPlrC,KAAKkrC,SAAW,GAEpB,CAYA,OAAA95B,CAAQ5Z,GACNkxC,EAAMt3B,QAAQpR,KAAKkrC,UAAU,SAAwB1yC,GACzC,OAANA,GACFhB,EAAGgB,EAEP,GACF,GCjEF,IACEgzC,mBAAmB,EACnBC,mBAAmB,EACnBC,qBAAqB,GCDvB,IACEC,WAAW,EACXC,QAAS,CACPC,gBCJsC,oBAApBA,gBAAkCA,gBAAkB,GDKtE1G,SEN+B,oBAAbA,SAA2BA,SAAW,KFOxD4E,KGP2B,oBAATA,KAAuBA,KAAO,MHSlD+B,UAAW,CAAC,OAAQ,QAAS,OAAQ,OAAQ,MAAO,SIXhDC,GAAkC,oBAAX1lC,QAA8C,oBAAbE,SAExDylC,GAAkC,iBAAd1lC,WAA0BA,gBAAazO,EAmB3Do0C,GAAwBF,MAC1BC,IAAc,CAAC,cAAe,eAAgB,MAAMrwC,QAAQqwC,GAAWE,SAAW,GAWhFC,GAE2B,oBAAtBC,mBAEPlmB,gBAAgBkmB,mBACc,mBAAvBlmB,KAAKmmB,cAIVn/B,GAAS6+B,IAAiB1lC,OAAOyG,SAASK,MAAQ,mBCvCxD,OACK,KACA,ICyFL,GA9CA,SAAwBq8B,GACtB,SAAS8C,EAAUr9B,EAAM1N,EAAOgK,EAAQiB,GACtC,IAAIvM,EAAOgP,EAAKzC,KAEhB,GAAa,cAATvM,EAAsB,OAAO,EAEjC,MAAMssC,EAAejsB,OAAOwnB,UAAU7nC,GAChCusC,EAAShgC,GAASyC,EAAKtV,OAG7B,OAFAsG,GAAQA,GAAQyoC,EAAM//B,QAAQ4C,GAAUA,EAAO5R,OAASsG,EAEpDusC,GACE9D,EAAMvB,WAAW57B,EAAQtL,GAC3BsL,EAAOtL,GAAQ,CAACsL,EAAOtL,GAAOsB,GAE9BgK,EAAOtL,GAAQsB,GAGTgrC,IAGLhhC,EAAOtL,IAAUyoC,EAAM3F,SAASx3B,EAAOtL,MAC1CsL,EAAOtL,GAAQ,IAGFqsC,EAAUr9B,EAAM1N,EAAOgK,EAAOtL,GAAOuM,IAEtCk8B,EAAM//B,QAAQ4C,EAAOtL,MACjCsL,EAAOtL,GA/Cb,SAAuB4B,GACrB,MAAMI,EAAM,CAAC,EACPtB,EAAOjJ,OAAOiJ,KAAKkB,GACzB,IAAIc,EACJ,MAAM6sB,EAAM7uB,EAAKhH,OACjB,IAAI4I,EACJ,IAAKI,EAAI,EAAGA,EAAI6sB,EAAK7sB,IACnBJ,EAAM5B,EAAKgC,GACXV,EAAIM,GAAOV,EAAIU,GAEjB,OAAON,CACT,CAoCqBwqC,CAAclhC,EAAOtL,MAG9BssC,EACV,CAEA,GAAI7D,EAAMzD,WAAWuE,IAAad,EAAM7F,WAAW2G,EAAS1d,SAAU,CACpE,MAAM7pB,EAAM,CAAC,EAMb,OAJAymC,EAAM5B,aAAa0C,GAAU,CAACvpC,EAAMsB,KAClC+qC,EA1EN,SAAuBrsC,GAKrB,OAAOyoC,EAAM1B,SAAS,gBAAiB/mC,GAAMa,KAAIoS,GAC3B,OAAbA,EAAM,GAAc,GAAKA,EAAM,IAAMA,EAAM,IAEtD,CAkEgBw5B,CAAczsC,GAAOsB,EAAOU,EAAK,EAAE,IAGxCA,CACT,CAEA,OAAO,IACT,ECzDM4gB,GAAW,CAEf8pB,aAAc,GAEdC,QAAS,CAAC,MAAO,OAAQ,SAEzBC,iBAAkB,CAAC,SAA0BjiB,EAAMkiB,GACjD,MAAMC,EAAcD,EAAQE,kBAAoB,GAC1CC,EAAqBF,EAAYpxC,QAAQ,qBAAuB,EAChEuxC,EAAkBxE,EAAM3F,SAASnY,GAQvC,GANIsiB,GAAmBxE,EAAMxE,WAAWtZ,KACtCA,EAAO,IAAIua,SAASva,IAGH8d,EAAMzD,WAAWra,GAGlC,OAAOqiB,EAAqBx4B,KAAKC,UAAU,GAAekW,IAASA,EAGrE,GAAI8d,EAAM/F,cAAc/X,IACtB8d,EAAM1D,SAASpa,IACf8d,EAAMhD,SAAS9a,IACf8d,EAAMxF,OAAOtY,IACb8d,EAAMvF,OAAOvY,IACb8d,EAAMpF,iBAAiB1Y,GAEvB,OAAOA,EAET,GAAI8d,EAAMrD,kBAAkBza,GAC1B,OAAOA,EAAK4a,OAEd,GAAIkD,EAAMrF,kBAAkBzY,GAE1B,OADAkiB,EAAQK,eAAe,mDAAmD,GACnEviB,EAAKvjB,WAGd,IAAI+7B,EAEJ,GAAI8J,EAAiB,CACnB,GAAIH,EAAYpxC,QAAQ,sCAAwC,EAC9D,OCvEO,SAA0BivB,EAAM/e,GAC7C,OAAO,GAAW+e,EAAM,IAAIwiB,GAASxB,QAAQC,gBAAmBn0C,OAAO4T,OAAO,CAC5Es+B,QAAS,SAASroC,EAAOgB,EAAK0M,EAAMo+B,GAClC,OAAID,GAASrjB,QAAU2e,EAAM1D,SAASzjC,IACpCvB,KAAKolC,OAAO7iC,EAAKhB,EAAM8F,SAAS,YACzB,GAGFgmC,EAAQxD,eAAehgC,MAAM7J,KAAMqC,UAC5C,GACCwJ,GACL,CD4DeyhC,CAAiB1iB,EAAM5qB,KAAKutC,gBAAgBlmC,WAGrD,IAAK+7B,EAAasF,EAAMtF,WAAWxY,KAAUmiB,EAAYpxC,QAAQ,wBAA0B,EAAG,CAC5F,MAAM6xC,EAAYxtC,KAAKytC,KAAOztC,KAAKytC,IAAItI,SAEvC,OAAO,GACL/B,EAAa,CAAC,UAAWxY,GAAQA,EACjC4iB,GAAa,IAAIA,EACjBxtC,KAAKutC,eAET,CACF,CAEA,OAAIL,GAAmBD,GACrBH,EAAQK,eAAe,oBAAoB,GAxEjD,SAAyBO,EAAUC,EAAQhD,GACzC,GAAIjC,EAAM9F,SAAS8K,GACjB,IAEE,OADA,EAAWj5B,KAAKiQ,OAAOgpB,GAChBhF,EAAMvuC,KAAKuzC,EACpB,CAAE,MAAOn1C,GACP,GAAe,gBAAXA,EAAE0H,KACJ,MAAM1H,CAEV,CAGF,OAAO,EAAYkc,KAAKC,WAAWg5B,EACrC,CA4DaE,CAAgBhjB,IAGlBA,CACT,GAEAijB,kBAAmB,CAAC,SAA2BjjB,GAC7C,MAAM+hB,EAAe3sC,KAAK2sC,cAAgB9pB,GAAS8pB,aAC7ClB,EAAoBkB,GAAgBA,EAAalB,kBACjDqC,EAAsC,SAAtB9tC,KAAK+tC,aAE3B,GAAIrF,EAAMlF,WAAW5Y,IAAS8d,EAAMpF,iBAAiB1Y,GACnD,OAAOA,EAGT,GAAIA,GAAQ8d,EAAM9F,SAAShY,KAAW6gB,IAAsBzrC,KAAK+tC,cAAiBD,GAAgB,CAChG,MACME,IADoBrB,GAAgBA,EAAanB,oBACPsC,EAEhD,IACE,OAAOr5B,KAAKiQ,MAAMkG,EACpB,CAAE,MAAOryB,GACP,GAAIy1C,EAAmB,CACrB,GAAe,gBAAXz1C,EAAE0H,KACJ,MAAM,EAAWmV,KAAK7c,EAAG,EAAW01C,iBAAkBjuC,KAAM,KAAMA,KAAKwoC,UAEzE,MAAMjwC,CACR,CACF,CACF,CAEA,OAAOqyB,CACT,GAMAsjB,QAAS,EAETC,eAAgB,aAChBC,eAAgB,eAEhBC,kBAAmB,EACnBC,eAAgB,EAEhBb,IAAK,CACHtI,SAAUiI,GAASxB,QAAQzG,SAC3B4E,KAAMqD,GAASxB,QAAQ7B,MAGzBwE,eAAgB,SAAwBl4B,GACtC,OAAOA,GAAU,KAAOA,EAAS,GACnC,EAEAy2B,QAAS,CACP0B,OAAQ,CACN,OAAU,oCACV,oBAAgB32C,KAKtB6wC,EAAMt3B,QAAQ,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,UAAWspB,IAChE7X,GAASiqB,QAAQpS,GAAU,CAAC,CAAC,IAG/B,YE1JM+T,GAAoB/F,EAAMrB,YAAY,CAC1C,MAAO,gBAAiB,iBAAkB,eAAgB,OAC1D,UAAW,OAAQ,OAAQ,oBAAqB,sBAChD,gBAAiB,WAAY,eAAgB,sBAC7C,UAAW,cAAe,eCLtBqH,GAAah4B,OAAO,aAE1B,SAASi4B,GAAgBC,GACvB,OAAOA,GAAUjtC,OAAOitC,GAAQz0C,OAAOyM,aACzC,CAEA,SAASioC,GAAettC,GACtB,OAAc,IAAVA,GAA4B,MAATA,EACdA,EAGFmnC,EAAM//B,QAAQpH,GAASA,EAAMT,IAAI+tC,IAAkBltC,OAAOJ,EACnE,CAgBA,SAASutC,GAAiB/K,EAASxiC,EAAOqtC,EAAQj8B,EAAQo8B,GACxD,OAAIrG,EAAM7F,WAAWlwB,GACZA,EAAOrW,KAAK0D,KAAMuB,EAAOqtC,IAG9BG,IACFxtC,EAAQqtC,GAGLlG,EAAM9F,SAASrhC,GAEhBmnC,EAAM9F,SAASjwB,IACiB,IAA3BpR,EAAM5F,QAAQgX,GAGnB+1B,EAAMvE,SAASxxB,GACVA,EAAO1a,KAAKsJ,QADrB,OANA,EASF,CAsBA,MAAMytC,GACJ,WAAAtwB,CAAYouB,GACVA,GAAW9sC,KAAKrD,IAAImwC,EACtB,CAEA,GAAAnwC,CAAIiyC,EAAQK,EAAgBC,GAC1B,MAAMhpB,EAAOlmB,KAEb,SAASmvC,EAAUC,EAAQC,EAASC,GAClC,MAAMC,EAAUZ,GAAgBU,GAEhC,IAAKE,EACH,MAAM,IAAInvC,MAAM,0CAGlB,MAAMmC,EAAMmmC,EAAM/E,QAAQzd,EAAMqpB,KAE5BhtC,QAAqB1K,IAAdquB,EAAK3jB,KAAmC,IAAb+sC,QAAmCz3C,IAAby3C,IAAwC,IAAdppB,EAAK3jB,MACzF2jB,EAAK3jB,GAAO8sC,GAAWR,GAAeO,GAE1C,CAEA,MAAMI,EAAa,CAAC1C,EAASwC,IAC3B5G,EAAMt3B,QAAQ07B,GAAS,CAACsC,EAAQC,IAAYF,EAAUC,EAAQC,EAASC,KAEzE,GAAI5G,EAAM1F,cAAc4L,IAAWA,aAAkB5uC,KAAK0e,YACxD8wB,EAAWZ,EAAQK,QACd,GAAGvG,EAAM9F,SAASgM,KAAYA,EAASA,EAAOz0C,UArEtB,iCAAiClC,KAqEmB22C,EArEVz0C,QAsEvEq1C,ED1EN,CAAeC,IACb,MAAMxqB,EAAS,CAAC,EAChB,IAAI1iB,EACA2d,EACAvd,EAsBJ,OApBA8sC,GAAcA,EAAWj0C,MAAM,MAAM4V,SAAQ,SAAgBs+B,GAC3D/sC,EAAI+sC,EAAK/zC,QAAQ,KACjB4G,EAAMmtC,EAAKr1C,UAAU,EAAGsI,GAAGxI,OAAOyM,cAClCsZ,EAAMwvB,EAAKr1C,UAAUsI,EAAI,GAAGxI,QAEvBoI,GAAQ0iB,EAAO1iB,IAAQksC,GAAkBlsC,KAIlC,eAARA,EACE0iB,EAAO1iB,GACT0iB,EAAO1iB,GAAKjB,KAAK4e,GAEjB+E,EAAO1iB,GAAO,CAAC2d,GAGjB+E,EAAO1iB,GAAO0iB,EAAO1iB,GAAO0iB,EAAO1iB,GAAO,KAAO2d,EAAMA,EAE3D,IAEO+E,CACR,EC+CgB0qB,CAAaf,GAASK,QAC5B,GAAIvG,EAAMjF,UAAUmL,GACzB,IAAK,MAAOrsC,EAAKhB,KAAUqtC,EAAO9iB,UAChCqjB,EAAU5tC,EAAOgB,EAAK2sC,QAGd,MAAVN,GAAkBO,EAAUF,EAAgBL,EAAQM,GAGtD,OAAOlvC,IACT,CAEA,GAAAqb,CAAIuzB,EAAQjB,GAGV,GAFAiB,EAASD,GAAgBC,GAEb,CACV,MAAMrsC,EAAMmmC,EAAM/E,QAAQ3jC,KAAM4uC,GAEhC,GAAIrsC,EAAK,CACP,MAAMhB,EAAQvB,KAAKuC,GAEnB,IAAKorC,EACH,OAAOpsC,EAGT,IAAe,IAAXosC,EACF,OA5GV,SAAqB5rC,GACnB,MAAM6tC,EAASl4C,OAAOC,OAAO,MACvBk4C,EAAW,mCACjB,IAAI38B,EAEJ,KAAQA,EAAQ28B,EAAS3I,KAAKnlC,IAC5B6tC,EAAO18B,EAAM,IAAMA,EAAM,GAG3B,OAAO08B,CACT,CAkGiBE,CAAYvuC,GAGrB,GAAImnC,EAAM7F,WAAW8K,GACnB,OAAOA,EAAOrxC,KAAK0D,KAAMuB,EAAOgB,GAGlC,GAAImmC,EAAMvE,SAASwJ,GACjB,OAAOA,EAAOzG,KAAK3lC,GAGrB,MAAM,IAAI0X,UAAU,yCACtB,CACF,CACF,CAEA,GAAAsO,CAAIqnB,EAAQp7B,GAGV,GAFAo7B,EAASD,GAAgBC,GAEb,CACV,MAAMrsC,EAAMmmC,EAAM/E,QAAQ3jC,KAAM4uC,GAEhC,SAAUrsC,QAAqB1K,IAAdmI,KAAKuC,IAAwBiR,IAAWs7B,GAAiB9uC,EAAMA,KAAKuC,GAAMA,EAAKiR,GAClG,CAEA,OAAO,CACT,CAEA,OAAOo7B,EAAQp7B,GACb,MAAM0S,EAAOlmB,KACb,IAAI+vC,GAAU,EAEd,SAASC,EAAaX,GAGpB,GAFAA,EAAUV,GAAgBU,GAEb,CACX,MAAM9sC,EAAMmmC,EAAM/E,QAAQzd,EAAMmpB,IAE5B9sC,GAASiR,IAAWs7B,GAAiB5oB,EAAMA,EAAK3jB,GAAMA,EAAKiR,YACtD0S,EAAK3jB,GAEZwtC,GAAU,EAEd,CACF,CAQA,OANIrH,EAAM//B,QAAQimC,GAChBA,EAAOx9B,QAAQ4+B,GAEfA,EAAapB,GAGRmB,CACT,CAEA,KAAAr0B,CAAMlI,GACJ,MAAM7S,EAAOjJ,OAAOiJ,KAAKX,MACzB,IAAI2C,EAAIhC,EAAKhH,OACTo2C,GAAU,EAEd,KAAOptC,KAAK,CACV,MAAMJ,EAAM5B,EAAKgC,GACb6Q,IAAWs7B,GAAiB9uC,EAAMA,KAAKuC,GAAMA,EAAKiR,GAAS,YACtDxT,KAAKuC,GACZwtC,GAAU,EAEd,CAEA,OAAOA,CACT,CAEA,SAAAE,CAAUC,GACR,MAAMhqB,EAAOlmB,KACP8sC,EAAU,CAAC,EAsBjB,OApBApE,EAAMt3B,QAAQpR,MAAM,CAACuB,EAAOqtC,KAC1B,MAAMrsC,EAAMmmC,EAAM/E,QAAQmJ,EAAS8B,GAEnC,GAAIrsC,EAGF,OAFA2jB,EAAK3jB,GAAOssC,GAAettC,eACpB2kB,EAAK0oB,GAId,MAAMuB,EAAaD,EA9JzB,SAAsBtB,GACpB,OAAOA,EAAOz0C,OACXyM,cAAc3M,QAAQ,mBAAmB,CAACgB,EAAGqZ,EAAMvS,IAC3CuS,EAAKqzB,cAAgB5lC,GAElC,CAyJkCquC,CAAaxB,GAAUjtC,OAAOitC,GAAQz0C,OAE9Dg2C,IAAevB,UACV1oB,EAAK0oB,GAGd1oB,EAAKiqB,GAActB,GAAettC,GAElCurC,EAAQqD,IAAc,CAAI,IAGrBnwC,IACT,CAEA,MAAA0B,IAAU2uC,GACR,OAAOrwC,KAAK0e,YAAYhd,OAAO1B,QAASqwC,EAC1C,CAEA,MAAA1H,CAAO2H,GACL,MAAMruC,EAAMvK,OAAOC,OAAO,MAM1B,OAJA+wC,EAAMt3B,QAAQpR,MAAM,CAACuB,EAAOqtC,KACjB,MAATrtC,IAA2B,IAAVA,IAAoBU,EAAI2sC,GAAU0B,GAAa5H,EAAM//B,QAAQpH,GAASA,EAAM1G,KAAK,MAAQ0G,EAAM,IAG3GU,CACT,CAEA,CAACyU,OAAO+H,YACN,OAAO/mB,OAAOo0B,QAAQ9rB,KAAK2oC,UAAUjyB,OAAO+H,WAC9C,CAEA,QAAApX,GACE,OAAO3P,OAAOo0B,QAAQ9rB,KAAK2oC,UAAU7nC,KAAI,EAAE8tC,EAAQrtC,KAAWqtC,EAAS,KAAOrtC,IAAO1G,KAAK,KAC5F,CAEA,IAAK6b,OAAO2f,eACV,MAAO,cACT,CAEA,WAAOjhB,CAAKmtB,GACV,OAAOA,aAAiBviC,KAAOuiC,EAAQ,IAAIviC,KAAKuiC,EAClD,CAEA,aAAO7gC,CAAO+P,KAAU4+B,GACtB,MAAME,EAAW,IAAIvwC,KAAKyR,GAI1B,OAFA4+B,EAAQj/B,SAAS7F,GAAWglC,EAAS5zC,IAAI4O,KAElCglC,CACT,CAEA,eAAOC,CAAS5B,GACd,MAIM6B,GAJYzwC,KAAK0uC,IAAe1uC,KAAK0uC,IAAc,CACvD+B,UAAW,CAAC,IAGcA,UACtBtwC,EAAYH,KAAKG,UAEvB,SAASuwC,EAAerB,GACtB,MAAME,EAAUZ,GAAgBU,GAE3BoB,EAAUlB,KAtNrB,SAAwBttC,EAAK2sC,GAC3B,MAAM+B,EAAejI,EAAMlB,YAAY,IAAMoH,GAE7C,CAAC,MAAO,MAAO,OAAOx9B,SAAQw/B,IAC5Bl5C,OAAOimB,eAAe1b,EAAK2uC,EAAaD,EAAc,CACpDpvC,MAAO,SAASsvC,EAAMC,EAAMC,GAC1B,OAAO/wC,KAAK4wC,GAAYt0C,KAAK0D,KAAM4uC,EAAQiC,EAAMC,EAAMC,EACzD,EACAhyB,cAAc,GACd,GAEN,CA4MQiyB,CAAe7wC,EAAWkvC,GAC1BoB,EAAUlB,IAAW,EAEzB,CAIA,OAFA7G,EAAM//B,QAAQimC,GAAUA,EAAOx9B,QAAQs/B,GAAkBA,EAAe9B,GAEjE5uC,IACT,EAGFgvC,GAAawB,SAAS,CAAC,eAAgB,iBAAkB,SAAU,kBAAmB,aAAc,kBAGpG9H,EAAMtE,kBAAkB4K,GAAa7uC,WAAW,EAAEoB,SAAQgB,KACxD,IAAI0uC,EAAS1uC,EAAI,GAAGolC,cAAgBplC,EAAIwN,MAAM,GAC9C,MAAO,CACLsL,IAAK,IAAM9Z,EACX,GAAA5E,CAAIu0C,GACFlxC,KAAKixC,GAAUC,CACjB,EACF,IAGFxI,EAAMtB,cAAc4H,IAEpB,YC/Re,SAASmC,GAAcC,EAAK5I,GACzC,MAAMD,EAASvoC,MAAQ,GACjB+jC,EAAUyE,GAAYD,EACtBuE,EAAU,GAAa13B,KAAK2uB,EAAQ+I,SAC1C,IAAIliB,EAAOmZ,EAAQnZ,KAQnB,OANA8d,EAAMt3B,QAAQggC,GAAK,SAAmB55C,GACpCozB,EAAOpzB,EAAG8E,KAAKisC,EAAQ3d,EAAMkiB,EAAQmD,YAAazH,EAAWA,EAASnyB,YAASxe,EACjF,IAEAi1C,EAAQmD,YAEDrlB,CACT,CCzBe,SAASymB,GAAS9vC,GAC/B,SAAUA,IAASA,EAAM+vC,WAC3B,CCUA,SAASC,GAAczxC,EAASyoC,EAAQx9B,GAEtC,EAAWzO,KAAK0D,KAAiB,MAAXF,EAAkB,WAAaA,EAAS,EAAW0xC,aAAcjJ,EAAQx9B,GAC/F/K,KAAKC,KAAO,eACd,CAEAyoC,EAAMvC,SAASoL,GAAe,EAAY,CACxCD,YAAY,IAGd,YCXe,SAASG,GAAOz6B,EAASE,EAAQsxB,GAC9C,MAAM+F,EAAiB/F,EAASD,OAAOgG,eAClC/F,EAASnyB,QAAWk4B,IAAkBA,EAAe/F,EAASnyB,QAGjEa,EAAO,IAAI,EACT,mCAAqCsxB,EAASnyB,OAC9C,CAAC,EAAWq7B,gBAAiB,EAAWzD,kBAAkBpjC,KAAK2V,MAAMgoB,EAASnyB,OAAS,KAAO,GAC9FmyB,EAASD,OACTC,EAASz9B,QACTy9B,IAPFxxB,EAAQwxB,EAUZ,CC4BA,MClDamJ,GAAuB,CAACplC,EAAUqlC,EAAkBC,EAAO,KACtE,IAAIC,EAAgB,EACpB,MAAMC,EDER,SAAqBC,EAAcC,GACjCD,EAAeA,GAAgB,GAC/B,MAAME,EAAQ,IAAIxpC,MAAMspC,GAClBG,EAAa,IAAIzpC,MAAMspC,GAC7B,IAEII,EAFAx6B,EAAO,EACPy6B,EAAO,EAKX,OAFAJ,OAAcp6C,IAARo6C,EAAoBA,EAAM,IAEzB,SAAcK,GACnB,MAAM95B,EAAMD,KAAKC,MAEX+5B,EAAYJ,EAAWE,GAExBD,IACHA,EAAgB55B,GAGlB05B,EAAMt6B,GAAQ06B,EACdH,EAAWv6B,GAAQY,EAEnB,IAAI7V,EAAI0vC,EACJG,EAAa,EAEjB,KAAO7vC,IAAMiV,GACX46B,GAAcN,EAAMvvC,KACpBA,GAAQqvC,EASV,GANAp6B,GAAQA,EAAO,GAAKo6B,EAEhBp6B,IAASy6B,IACXA,GAAQA,EAAO,GAAKL,GAGlBx5B,EAAM45B,EAAgBH,EACxB,OAGF,MAAMQ,EAASF,GAAa/5B,EAAM+5B,EAElC,OAAOE,EAAS5nC,KAAK6nC,MAAmB,IAAbF,EAAoBC,QAAU56C,CAC3D,CACF,CC9CuB,CAAY,GAAI,KAErC,OCFF,SAAkBL,EAAIq6C,GACpB,IAEIc,EACAC,EAHAC,EAAY,EACZC,EAAY,IAAOjB,EAIvB,MAAMtX,EAAS,CAACniB,EAAMI,EAAMD,KAAKC,SAC/Bq6B,EAAYr6B,EACZm6B,EAAW,KACPC,IACFrb,aAAaqb,GACbA,EAAQ,MAEVp7C,EAAGqS,MAAM,KAAMuO,EAAK,EAqBtB,MAAO,CAlBW,IAAIA,KACpB,MAAMI,EAAMD,KAAKC,MACXi6B,EAASj6B,EAAMq6B,EAChBJ,GAAUK,EACbvY,EAAOniB,EAAMI,IAEbm6B,EAAWv6B,EACNw6B,IACHA,EAAQ72B,YAAW,KACjB62B,EAAQ,KACRrY,EAAOoY,EAAQ,GACdG,EAAYL,IAEnB,EAGY,IAAME,GAAYpY,EAAOoY,GAGzC,CDjCS,EAASp6C,IACd,MAAMw6C,EAASx6C,EAAEw6C,OACXC,EAAQz6C,EAAE06C,iBAAmB16C,EAAEy6C,WAAQn7C,EACvCq7C,EAAgBH,EAASjB,EACzBqB,EAAOpB,EAAamB,GAG1BpB,EAAgBiB,EAchBxmC,EAZa,CACXwmC,SACAC,QACAI,SAAUJ,EAASD,EAASC,OAASn7C,EACrCq6C,MAAOgB,EACPC,KAAMA,QAAct7C,EACpBw7C,UAAWF,GAAQH,GAVLD,GAAUC,GAUeA,EAAQD,GAAUI,OAAOt7C,EAChEy7C,MAAO/6C,EACP06C,iBAA2B,MAATD,EAClB,CAACpB,EAAmB,WAAa,WAAW,GAGhC,GACbC,EAAK,EAGG0B,GAAyB,CAACP,EAAOQ,KAC5C,MAAMP,EAA4B,MAATD,EAEzB,MAAO,CAAED,GAAWS,EAAU,GAAG,CAC/BP,mBACAD,QACAD,WACES,EAAU,GAAG,EAGNC,GAAkBj8C,GAAO,IAAI4gB,IAASswB,EAAM3D,MAAK,IAAMvtC,KAAM4gB,KEzC1E,GAAeg1B,GAASnB,sBAAwB,EAAE/+B,EAAQwmC,IAAY9lC,IACpEA,EAAM,IAAIN,IAAIM,EAAKw/B,GAASlgC,QAG1BA,EAAOymC,WAAa/lC,EAAI+lC,UACxBzmC,EAAO0mC,OAAShmC,EAAIgmC,OACnBF,GAAUxmC,EAAO2mC,OAASjmC,EAAIimC,OANa,CAS9C,IAAIvmC,IAAI8/B,GAASlgC,QACjBkgC,GAAS9mC,WAAa,kBAAkBrO,KAAKm1C,GAAS9mC,UAAUvB,YAC9D,KAAM,ECVV,GAAeqoC,GAASnB,sBAGtB,CACE,KAAA6H,CAAM7zC,EAAMsB,EAAOwe,EAAS9Q,EAAM2Q,EAAQe,GACxC,MAAMnB,EAAS,CAACvf,EAAO,IAAMmgB,mBAAmB7e,IAEhDmnC,EAAM5F,SAAS/iB,IAAYP,EAAOle,KAAK,WAAa,IAAIiX,KAAKwH,GAASg0B,eAEtErL,EAAM9F,SAAS3zB,IAASuQ,EAAOle,KAAK,QAAU2N,GAE9Cy5B,EAAM9F,SAAShjB,IAAWJ,EAAOle,KAAK,UAAYse,IAEvC,IAAXe,GAAmBnB,EAAOle,KAAK,UAE/BiF,SAASiZ,OAASA,EAAO3kB,KAAK,KAChC,EAEA,IAAAm5C,CAAK/zC,GACH,MAAMiT,EAAQ3M,SAASiZ,OAAOtM,MAAM,IAAIW,OAAO,aAAe5T,EAAO,cACrE,OAAQiT,EAAQgB,mBAAmBhB,EAAM,IAAM,IACjD,EAEA,MAAA6uB,CAAO9hC,GACLD,KAAK8zC,MAAM7zC,EAAM,GAAIsY,KAAKC,MAAQ,MACpC,GAMF,CACE,KAAAs7B,GAAS,EACTE,KAAI,IACK,KAET,MAAAjS,GAAU,GCxBC,SAASkS,GAAcC,EAASC,EAAcC,GAC3D,IAAIC,GCHG,8BAA8Bp8C,KDGFk8C,GACnC,OAAID,GAAWG,GAAsC,GAArBD,EEPnB,SAAqBF,EAASI,GAC3C,OAAOA,EACHJ,EAAQj6C,QAAQ,SAAU,IAAM,IAAMq6C,EAAYr6C,QAAQ,OAAQ,IAClEi6C,CACN,CFIWK,CAAYL,EAASC,GAEvBA,CACT,CGhBA,MAAMK,GAAmBjS,GAAUA,aAAiB,GAAe,IAAKA,GAAUA,EAWnE,SAASkS,GAAYC,EAASC,GAE3CA,EAAUA,GAAW,CAAC,EACtB,MAAMpM,EAAS,CAAC,EAEhB,SAASqM,EAAerpC,EAAQC,EAAQxT,EAAM6tC,GAC5C,OAAI6C,EAAM1F,cAAcz3B,IAAWm9B,EAAM1F,cAAcx3B,GAC9Ck9B,EAAM9C,MAAMtpC,KAAK,CAACupC,YAAWt6B,EAAQC,GACnCk9B,EAAM1F,cAAcx3B,GACtBk9B,EAAM9C,MAAM,CAAC,EAAGp6B,GACdk9B,EAAM//B,QAAQ6C,GAChBA,EAAOuE,QAETvE,CACT,CAGA,SAASqpC,EAAoBp8C,EAAGO,EAAGhB,EAAO6tC,GACxC,OAAK6C,EAAMhG,YAAY1pC,GAEX0vC,EAAMhG,YAAYjqC,QAAvB,EACEm8C,OAAe/8C,EAAWY,EAAGT,EAAO6tC,GAFpC+O,EAAen8C,EAAGO,EAAGhB,EAAO6tC,EAIvC,CAGA,SAASiP,EAAiBr8C,EAAGO,GAC3B,IAAK0vC,EAAMhG,YAAY1pC,GACrB,OAAO47C,OAAe/8C,EAAWmB,EAErC,CAGA,SAAS+7C,EAAiBt8C,EAAGO,GAC3B,OAAK0vC,EAAMhG,YAAY1pC,GAEX0vC,EAAMhG,YAAYjqC,QAAvB,EACEm8C,OAAe/8C,EAAWY,GAF1Bm8C,OAAe/8C,EAAWmB,EAIrC,CAGA,SAASg8C,EAAgBv8C,EAAGO,EAAGhB,GAC7B,OAAIA,KAAQ28C,EACHC,EAAen8C,EAAGO,GAChBhB,KAAQ08C,EACVE,OAAe/8C,EAAWY,QAD5B,CAGT,CAEA,MAAMw8C,EAAW,CACfrnC,IAAKknC,EACLpa,OAAQoa,EACRlqB,KAAMkqB,EACNZ,QAASa,EACTlI,iBAAkBkI,EAClBlH,kBAAmBkH,EACnBG,iBAAkBH,EAClB7G,QAAS6G,EACTI,eAAgBJ,EAChBK,gBAAiBL,EACjBM,cAAeN,EACfnI,QAASmI,EACThH,aAAcgH,EACd5G,eAAgB4G,EAChB3G,eAAgB2G,EAChBO,iBAAkBP,EAClBQ,mBAAoBR,EACpBS,WAAYT,EACZ1G,iBAAkB0G,EAClBzG,cAAeyG,EACfU,eAAgBV,EAChBW,UAAWX,EACXY,UAAWZ,EACXa,WAAYb,EACZc,YAAad,EACbe,WAAYf,EACZgB,iBAAkBhB,EAClBxG,eAAgByG,EAChBlI,QAAS,CAACr0C,EAAGO,EAAIhB,IAAS68C,EAAoBL,GAAgB/7C,GAAI+7C,GAAgBx7C,GAAGhB,GAAM,IAS7F,OANA0wC,EAAMt3B,QAAQ1Z,OAAOiJ,KAAKjJ,OAAO4T,OAAO,CAAC,EAAGopC,EAASC,KAAW,SAA4B38C,GAC1F,MAAM4tC,EAAQqP,EAASj9C,IAAS68C,EAC1BmB,EAAcpQ,EAAM8O,EAAQ18C,GAAO28C,EAAQ38C,GAAOA,GACvD0wC,EAAMhG,YAAYsT,IAAgBpQ,IAAUoP,IAAqBzM,EAAOvwC,GAAQg+C,EACnF,IAEOzN,CACT,CChGA,SAAgBA,IACd,MAAM0N,EAAYxB,GAAY,CAAC,EAAGlM,GAElC,IAaIwE,GAbA,KAACniB,EAAI,cAAEyqB,EAAa,eAAEjH,EAAc,eAAED,EAAc,QAAErB,EAAO,KAAEoJ,GAAQD,EAe3E,GAbAA,EAAUnJ,QAAUA,EAAU,GAAa13B,KAAK03B,GAEhDmJ,EAAUroC,IAAMi9B,GAASoJ,GAAcgC,EAAU/B,QAAS+B,EAAUroC,KAAM26B,EAAOn1B,OAAQm1B,EAAO2M,kBAG5FgB,GACFpJ,EAAQnwC,IAAI,gBAAiB,SAC3Bw5C,MAAMD,EAAKE,UAAY,IAAM,KAAOF,EAAKG,SAAWC,SAASl2B,mBAAmB81B,EAAKG,WAAa,MAMlG3N,EAAMzD,WAAWra,GACnB,GAAIwiB,GAASnB,uBAAyBmB,GAASjB,+BAC7CW,EAAQK,oBAAet1C,QAClB,IAAiD,KAA5Ck1C,EAAcD,EAAQE,kBAA6B,CAE7D,MAAOroC,KAASirC,GAAU7C,EAAcA,EAAYvxC,MAAM,KAAKsF,KAAI+jC,GAASA,EAAM1qC,SAAQwY,OAAO4jC,SAAW,GAC5GzJ,EAAQK,eAAe,CAACxoC,GAAQ,yBAA0BirC,GAAQ/0C,KAAK,MACzE,CAOF,GAAIuyC,GAASnB,wBACXoJ,GAAiB3M,EAAM7F,WAAWwS,KAAmBA,EAAgBA,EAAcY,IAE/EZ,IAAoC,IAAlBA,GAA2BmB,GAAgBP,EAAUroC,MAAO,CAEhF,MAAM6oC,EAAYrI,GAAkBD,GAAkBuI,GAAQ1C,KAAK7F,GAE/DsI,GACF3J,EAAQnwC,IAAIyxC,EAAgBqI,EAEhC,CAGF,OAAOR,CACR,EC1CD,GAFwD,oBAAnBjrC,gBAEG,SAAUu9B,GAChD,OAAO,IAAI3nC,SAAQ,SAA4BoW,EAASE,GACtD,MAAMy/B,EAAUC,GAAcrO,GAC9B,IAAIsO,EAAcF,EAAQ/rB,KAC1B,MAAMksB,EAAiB,GAAa1hC,KAAKuhC,EAAQ7J,SAASmD,YAC1D,IACI8G,EACAC,EAAiBC,EACjBC,EAAaC,GAHb,aAACpJ,EAAY,iBAAEuH,EAAgB,mBAAEC,GAAsBoB,EAK3D,SAAS3qB,IACPkrB,GAAeA,IACfC,GAAiBA,IAEjBR,EAAQd,aAAec,EAAQd,YAAYuB,YAAYL,GAEvDJ,EAAQU,QAAUV,EAAQU,OAAO3pC,oBAAoB,QAASqpC,EAChE,CAEA,IAAIhsC,EAAU,IAAIC,eAOlB,SAASssC,IACP,IAAKvsC,EACH,OAGF,MAAMwsC,EAAkB,GAAaniC,KACnC,0BAA2BrK,GAAWA,EAAQysC,yBAahD/F,IAAO,SAAkBlwC,GACvByV,EAAQzV,GACRyqB,GACF,IAAG,SAAiB/T,GAClBf,EAAOe,GACP+T,GACF,GAfiB,CACfpB,KAHoBmjB,GAAiC,SAAjBA,GAA4C,SAAjBA,EACxChjC,EAAQy9B,SAA/Bz9B,EAAQ0sC,aAGRphC,OAAQtL,EAAQsL,OAChBC,WAAYvL,EAAQuL,WACpBw2B,QAASyK,EACThP,SACAx9B,YAYFA,EAAU,IACZ,CAlCAA,EAAQE,KAAK0rC,EAAQjc,OAAOiN,cAAegP,EAAQ/oC,KAAK,GAGxD7C,EAAQmjC,QAAUyI,EAAQzI,QAiCtB,cAAenjC,EAEjBA,EAAQusC,UAAYA,EAGpBvsC,EAAQ2sC,mBAAqB,WACtB3sC,GAAkC,IAAvBA,EAAQ4sC,aAQD,IAAnB5sC,EAAQsL,QAAkBtL,EAAQ6sC,aAAwD,IAAzC7sC,EAAQ6sC,YAAYj8C,QAAQ,WAKjFogB,WAAWu7B,EACb,EAIFvsC,EAAQ8sC,QAAU,WACX9sC,IAILmM,EAAO,IAAI,EAAW,kBAAmB,EAAW4gC,aAAcvP,EAAQx9B,IAG1EA,EAAU,KACZ,EAGAA,EAAQgtC,QAAU,WAGhB7gC,EAAO,IAAI,EAAW,gBAAiB,EAAW8gC,YAAazP,EAAQx9B,IAGvEA,EAAU,IACZ,EAGAA,EAAQktC,UAAY,WAClB,IAAIC,EAAsBvB,EAAQzI,QAAU,cAAgByI,EAAQzI,QAAU,cAAgB,mBAC9F,MAAMvB,EAAegK,EAAQhK,cAAgB,GACzCgK,EAAQuB,sBACVA,EAAsBvB,EAAQuB,qBAEhChhC,EAAO,IAAI,EACTghC,EACAvL,EAAajB,oBAAsB,EAAWyM,UAAY,EAAWL,aACrEvP,EACAx9B,IAGFA,EAAU,IACZ,OAGgBlT,IAAhBg/C,GAA6BC,EAAe3J,eAAe,MAGvD,qBAAsBpiC,GACxB29B,EAAMt3B,QAAQ0lC,EAAenO,UAAU,SAA0BzoB,EAAK3d,GACpEwI,EAAQqtC,iBAAiB71C,EAAK2d,EAChC,IAIGwoB,EAAMhG,YAAYiU,EAAQvB,mBAC7BrqC,EAAQqqC,kBAAoBuB,EAAQvB,iBAIlCrH,GAAiC,SAAjBA,IAClBhjC,EAAQgjC,aAAe4I,EAAQ5I,cAI7BwH,KACA0B,EAAmBE,GAAiBxF,GAAqB4D,GAAoB,GAC/ExqC,EAAQ0C,iBAAiB,WAAYwpC,IAInC3B,GAAoBvqC,EAAQstC,UAC5BrB,EAAiBE,GAAevF,GAAqB2D,GAEvDvqC,EAAQstC,OAAO5qC,iBAAiB,WAAYupC,GAE5CjsC,EAAQstC,OAAO5qC,iBAAiB,UAAWypC,KAGzCP,EAAQd,aAAec,EAAQU,UAGjCN,EAAauB,IACNvtC,IAGLmM,GAAQohC,GAAUA,EAAO3zC,KAAO,IAAI,GAAc,KAAM4jC,EAAQx9B,GAAWutC,GAC3EvtC,EAAQwtC,QACRxtC,EAAU,KAAI,EAGhB4rC,EAAQd,aAAec,EAAQd,YAAY2C,UAAUzB,GACjDJ,EAAQU,SACVV,EAAQU,OAAOoB,QAAU1B,IAAeJ,EAAQU,OAAO5pC,iBAAiB,QAASspC,KAIrF,MAAMpD,ECvLK,SAAuB/lC,GACpC,MAAMsF,EAAQ,4BAA4Bg0B,KAAKt5B,GAC/C,OAAOsF,GAASA,EAAM,IAAM,EAC9B,CDoLqBwlC,CAAc/B,EAAQ/oC,KAEnC+lC,IAAsD,IAA1CvG,GAAStB,UAAUnwC,QAAQg4C,GACzCz8B,EAAO,IAAI,EAAW,wBAA0By8B,EAAW,IAAK,EAAWjC,gBAAiBnJ,IAM9Fx9B,EAAQG,KAAK2rC,GAAe,KAC9B,GACF,EErJA,GA3CuB,CAAC8B,EAASzK,KAC/B,MAAM,OAACv0C,GAAWg/C,EAAUA,EAAUA,EAAQhmC,OAAO4jC,SAAW,GAEhE,GAAIrI,GAAWv0C,EAAQ,CACrB,IAEI8+C,EAFAG,EAAa,IAAIC,gBAIrB,MAAMhB,EAAU,SAAUiB,GACxB,IAAKL,EAAS,CACZA,GAAU,EACVrB,IACA,MAAMn/B,EAAM6gC,aAAkB14C,MAAQ04C,EAAS94C,KAAK84C,OACpDF,EAAWL,MAAMtgC,aAAe,EAAaA,EAAM,IAAI,GAAcA,aAAe7X,MAAQ6X,EAAInY,QAAUmY,GAC5G,CACF,EAEA,IAAI26B,EAAQ1E,GAAWnyB,YAAW,KAChC62B,EAAQ,KACRiF,EAAQ,IAAI,EAAW,WAAW3J,mBAA0B,EAAWiK,WAAU,GAChFjK,GAEH,MAAMkJ,EAAc,KACduB,IACF/F,GAASrb,aAAaqb,GACtBA,EAAQ,KACR+F,EAAQvnC,SAAQimC,IACdA,EAAOD,YAAcC,EAAOD,YAAYS,GAAWR,EAAO3pC,oBAAoB,QAASmqC,EAAQ,IAEjGc,EAAU,KACZ,EAGFA,EAAQvnC,SAASimC,GAAWA,EAAO5pC,iBAAiB,QAASoqC,KAE7D,MAAM,OAACR,GAAUuB,EAIjB,OAFAvB,EAAOD,YAAc,IAAM1O,EAAM3D,KAAKqS,GAE/BC,CACT,GC3CW0B,GAAc,UAAWC,EAAOC,GAC3C,IAAIzpB,EAAMwpB,EAAMlY,WAEhB,IAAKmY,GAAazpB,EAAMypB,EAEtB,kBADMD,GAIR,IACIhmC,EADAgO,EAAM,EAGV,KAAOA,EAAMwO,GACXxc,EAAMgO,EAAMi4B,QACND,EAAMjpC,MAAMiR,EAAKhO,GACvBgO,EAAMhO,CAEV,EA4BakmC,GAAc,CAACC,EAAQF,EAAWG,EAAYC,KACzD,MAAM56B,EA3BiBsd,gBAAiBud,EAAUL,GAClD,UAAW,MAAMD,KAKAjd,gBAAiBod,GAClC,GAAIA,EAAOziC,OAAOkjB,eAEhB,kBADOuf,GAIT,MAAMI,EAASJ,EAAOK,YACtB,IACE,OAAS,CACP,MAAM,KAACxtB,EAAI,MAAEzqB,SAAeg4C,EAAOvF,OACnC,GAAIhoB,EACF,YAEIzqB,CACR,CACF,CAAE,cACMg4C,EAAOjB,QACf,CACF,CAvB4BmB,CAAWH,SAC5BP,GAAYC,EAAOC,EAE9B,CAuBmBS,CAAUP,EAAQF,GAEnC,IACIjtB,EADAkmB,EAAQ,EAERyH,EAAaphD,IACVyzB,IACHA,GAAO,EACPqtB,GAAYA,EAAS9gD,GACvB,EAGF,OAAO,IAAIqhD,eAAe,CACxB,UAAMC,CAAKjB,GACT,IACE,MAAM,KAAC5sB,EAAI,MAAEzqB,SAAekd,EAASsN,OAErC,GAAIC,EAGF,OAFD2tB,SACCf,EAAWkB,QAIb,IAAItqB,EAAMjuB,EAAMu/B,WAChB,GAAIsY,EAAY,CACd,IAAIW,EAAc7H,GAAS1iB,EAC3B4pB,EAAWW,EACb,CACAnB,EAAWoB,QAAQ,IAAInZ,WAAWt/B,GACpC,CAAE,MAAO0W,GAEP,MADA0hC,EAAU1hC,GACJA,CACR,CACF,EACAqgC,OAAOQ,IACLa,EAAUb,GACHr6B,EAASw7B,WAEjB,CACDC,cAAe,GAChB,EC3EGC,GAAoC,mBAAVC,OAA2C,mBAAZC,SAA8C,mBAAbC,SAC1FC,GAA4BJ,IAA8C,mBAAnBP,eAGvDY,GAAaL,KAA4C,mBAAhBM,aACzC9P,GAA0C,IAAI8P,YAAjC14C,GAAQ4oC,GAAQJ,OAAOxoC,IACtCg6B,MAAOh6B,GAAQ,IAAI8+B,iBAAiB,IAAIyZ,SAASv4C,GAAK24C,gBADtD,IAAE/P,GAIN,MAAM1yC,GAAO,CAACT,KAAO4gB,KACnB,IACE,QAAS5gB,KAAM4gB,EACjB,CAAE,MAAO7f,GACP,OAAO,CACT,GAGIoiD,GAAwBJ,IAA6BtiD,IAAK,KAC9D,IAAI2iD,GAAiB,EAErB,MAAMC,EAAiB,IAAIR,QAAQjN,GAASlgC,OAAQ,CAClD2K,KAAM,IAAI+hC,eACVlf,OAAQ,OACR,UAAIogB,GAEF,OADAF,GAAiB,EACV,MACT,IACC9N,QAAQvlB,IAAI,gBAEf,OAAOqzB,IAAmBC,CAAc,IAKpCE,GAAyBR,IAC7BtiD,IAAK,IAAMywC,EAAMpF,iBAAiB,IAAIgX,SAAS,IAAIziC,QAG/CmjC,GAAY,CAChB7B,OAAQ4B,IAA0B,CAAE/5C,GAAQA,EAAI6W,OAG7B,IAAE7W,GAAvBm5C,KAAuBn5C,GAOpB,IAAIs5C,SANL,CAAC,OAAQ,cAAe,OAAQ,WAAY,UAAUlpC,SAAQzM,KAC3Dq2C,GAAUr2C,KAAUq2C,GAAUr2C,GAAQ+jC,EAAM7F,WAAW7hC,GAAI2D,IAAU3D,GAAQA,EAAI2D,KAChF,CAACgP,EAAG40B,KACF,MAAM,IAAI,EAAW,kBAAkB5jC,sBAA0B,EAAWs2C,gBAAiB1S,EAAO,EACrG,KAIP,MCvDM2S,GAAgB,CACpBC,KCNF,KDOEC,IAAKA,GACLhB,MDwFaD,IAAoB,OAAQ5R,IACzC,IAAI,IACF36B,EAAG,OACH8sB,EAAM,KACN9P,EAAI,OACJysB,EAAM,YACNxB,EAAW,QACX3H,EAAO,mBACPqH,EAAkB,iBAClBD,EAAgB,aAChBvH,EAAY,QACZjB,EAAO,gBACPsI,EAAkB,cAAa,aAC/BiG,GACEzE,GAAcrO,GAElBwF,EAAeA,GAAgBA,EAAe,IAAInnC,cAAgB,OAElE,IAEImE,EAFAuwC,EAAiB,GAAe,CAACjE,EAAQxB,GAAeA,EAAY0F,iBAAkBrN,GAI1F,MAAMkJ,EAAckE,GAAkBA,EAAelE,aAAe,MAChEkE,EAAelE,aAClB,GAED,IAAIoE,EAEJ,IACE,GACElG,GAAoBqF,IAAoC,QAAXjgB,GAA+B,SAAXA,GACG,KAAnE8gB,OArCmBzf,OAAO+Q,EAASj1B,KACxC,MAAMle,EAAS+uC,EAAMd,eAAekF,EAAQ2O,oBAE5C,OAAiB,MAAV9hD,EAjCaoiC,OAAOlkB,IAC3B,GAAY,MAARA,EACF,OAAO,EAGT,GAAG6wB,EAAMvF,OAAOtrB,GACd,OAAOA,EAAK0mB,KAGd,GAAGmK,EAAMX,oBAAoBlwB,GAAO,CAClC,MAAM6jC,EAAW,IAAIrB,QAAQjN,GAASlgC,OAAQ,CAC5CwtB,OAAQ,OACR7iB,SAEF,aAAc6jC,EAAShB,eAAe5Z,UACxC,CAEA,OAAG4H,EAAMrD,kBAAkBxtB,IAAS6wB,EAAM/F,cAAc9qB,GAC/CA,EAAKipB,YAGX4H,EAAMrF,kBAAkBxrB,KACzBA,GAAc,IAGb6wB,EAAM9F,SAAS/qB,UACF2iC,GAAW3iC,IAAOipB,gBADlC,EAEA,EAMwB6a,CAAc9jC,GAAQle,CAAM,EAkClBiiD,CAAkB9O,EAASliB,IACzD,CACA,IAMIixB,EANAH,EAAW,IAAIrB,QAAQzsC,EAAK,CAC9B8sB,OAAQ,OACR7iB,KAAM+S,EACNkwB,OAAQ,SASV,GAJIpS,EAAMzD,WAAWra,KAAUixB,EAAoBH,EAAS5O,QAAQzxB,IAAI,kBACtEyxB,EAAQK,eAAe0O,GAGrBH,EAAS7jC,KAAM,CACjB,MAAOuhC,EAAY0C,GAASvI,GAC1BiI,EACA7J,GAAqB8B,GAAe6B,KAGtC1qB,EAAOsuB,GAAYwC,EAAS7jC,KA1GT,MA0GmCuhC,EAAY0C,EACpE,CACF,CAEKpT,EAAM9F,SAASwS,KAClBA,EAAkBA,EAAkB,UAAY,QAKlD,MAAM2G,EAAyB,gBAAiB1B,QAAQl6C,UACxD4K,EAAU,IAAIsvC,QAAQzsC,EAAK,IACtBytC,EACHhE,OAAQiE,EACR5gB,OAAQA,EAAOiN,cACfmF,QAASA,EAAQmD,YAAYtH,SAC7B9wB,KAAM+S,EACNkwB,OAAQ,OACRkB,YAAaD,EAAyB3G,OAAkBv9C,IAG1D,IAAI2wC,QAAiB4R,MAAMrvC,GAE3B,MAAMkxC,EAAmBlB,KAA4C,WAAjBhN,GAA8C,aAAjBA,GAEjF,GAAIgN,KAA2BxF,GAAuB0G,GAAoB7E,GAAe,CACvF,MAAMvrC,EAAU,CAAC,EAEjB,CAAC,SAAU,aAAc,WAAWuF,SAAQpZ,IAC1C6T,EAAQ7T,GAAQwwC,EAASxwC,EAAK,IAGhC,MAAMkkD,EAAwBxT,EAAMd,eAAeY,EAASsE,QAAQzxB,IAAI,oBAEjE+9B,EAAY0C,GAASvG,GAAsBhC,GAChD2I,EACAvK,GAAqB8B,GAAe8B,IAAqB,KACtD,GAEL/M,EAAW,IAAI8R,SACbpB,GAAY1Q,EAAS3wB,KAlJF,MAkJ4BuhC,GAAY,KACzD0C,GAASA,IACT1E,GAAeA,GAAa,IAE9BvrC,EAEJ,CAEAkiC,EAAeA,GAAgB,OAE/B,IAAIoO,QAAqBnB,GAAUtS,EAAM/E,QAAQqX,GAAWjN,IAAiB,QAAQvF,EAAUD,GAI/F,OAFC0T,GAAoB7E,GAAeA,UAEvB,IAAIx2C,SAAQ,CAACoW,EAASE,KACjCu6B,GAAOz6B,EAASE,EAAQ,CACtB0T,KAAMuxB,EACNrP,QAAS,GAAa13B,KAAKozB,EAASsE,SACpCz2B,OAAQmyB,EAASnyB,OACjBC,WAAYkyB,EAASlyB,WACrBiyB,SACAx9B,WACD,GAEL,CAAE,MAAOkN,GAGP,GAFAm/B,GAAeA,IAEXn/B,GAAoB,cAAbA,EAAIhY,MAAwB,SAAShI,KAAKggB,EAAInY,SACvD,MAAMpI,OAAO4T,OACX,IAAI,EAAW,gBAAiB,EAAW0sC,YAAazP,EAAQx9B,GAChE,CACEm+B,MAAOjxB,EAAIixB,OAASjxB,IAK1B,MAAM,EAAW7C,KAAK6C,EAAKA,GAAOA,EAAIqwB,KAAMC,EAAQx9B,EACtD,CACD,ICtND29B,EAAMt3B,QAAQ8pC,IAAe,CAAC1jD,EAAI+J,KAChC,GAAI/J,EAAI,CACN,IACEE,OAAOimB,eAAenmB,EAAI,OAAQ,CAAC+J,SACrC,CAAE,MAAOhJ,GAET,CACAb,OAAOimB,eAAenmB,EAAI,cAAe,CAAC+J,SAC5C,KAGF,MAAM66C,GAAgBtD,GAAW,KAAKA,IAEhCuD,GAAoBzP,GAAYlE,EAAM7F,WAAW+J,IAAwB,OAAZA,IAAgC,IAAZA,EAEvF,GACe0P,IACXA,EAAW5T,EAAM//B,QAAQ2zC,GAAYA,EAAW,CAACA,GAEjD,MAAM,OAAC3iD,GAAU2iD,EACjB,IAAIC,EACA3P,EAEJ,MAAM4P,EAAkB,CAAC,EAEzB,IAAK,IAAI75C,EAAI,EAAGA,EAAIhJ,EAAQgJ,IAAK,CAE/B,IAAIy0B,EAIJ,GALAmlB,EAAgBD,EAAS35C,GAGzBiqC,EAAU2P,GAELF,GAAiBE,KACpB3P,EAAUsO,IAAe9jB,EAAKz1B,OAAO46C,IAAgB31C,oBAErC/O,IAAZ+0C,GACF,MAAM,IAAI,EAAW,oBAAoBxV,MAI7C,GAAIwV,EACF,MAGF4P,EAAgBplB,GAAM,IAAMz0B,GAAKiqC,CACnC,CAEA,IAAKA,EAAS,CAEZ,MAAM6P,EAAU/kD,OAAOo0B,QAAQ0wB,GAC5B17C,KAAI,EAAEs2B,EAAIv3B,KAAW,WAAWu3B,OACpB,IAAVv3B,EAAkB,sCAAwC,mCAG/D,IAAI2S,EAAI7Y,EACL8iD,EAAQ9iD,OAAS,EAAI,YAAc8iD,EAAQ37C,IAAIs7C,IAAcvhD,KAAK,MAAQ,IAAMuhD,GAAaK,EAAQ,IACtG,0BAEF,MAAM,IAAI,EACR,wDAA0DjqC,EAC1D,kBAEJ,CAEA,OAAOo6B,CAAO,EE3DlB,SAAS8P,GAA6BnU,GAKpC,GAJIA,EAAOsN,aACTtN,EAAOsN,YAAY8G,mBAGjBpU,EAAO8O,QAAU9O,EAAO8O,OAAOoB,QACjC,MAAM,IAAI,GAAc,KAAMlQ,EAElC,CASe,SAASqU,GAAgBrU,GAiBtC,OAhBAmU,GAA6BnU,GAE7BA,EAAOuE,QAAU,GAAa13B,KAAKmzB,EAAOuE,SAG1CvE,EAAO3d,KAAOumB,GAAc70C,KAC1BisC,EACAA,EAAOsE,mBAGgD,IAArD,CAAC,OAAQ,MAAO,SAASlxC,QAAQ4sC,EAAO7N,SAC1C6N,EAAOuE,QAAQK,eAAe,qCAAqC,GAGrDmP,GAAoB/T,EAAOqE,SAAW,GAASA,QAExDA,CAAQrE,GAAQtxB,MAAK,SAA6BuxB,GAYvD,OAXAkU,GAA6BnU,GAG7BC,EAAS5d,KAAOumB,GAAc70C,KAC5BisC,EACAA,EAAOsF,kBACPrF,GAGFA,EAASsE,QAAU,GAAa13B,KAAKozB,EAASsE,SAEvCtE,CACT,IAAG,SAA4BsQ,GAe7B,OAdKzH,GAASyH,KACZ4D,GAA6BnU,GAGzBuQ,GAAUA,EAAOtQ,WACnBsQ,EAAOtQ,SAAS5d,KAAOumB,GAAc70C,KACnCisC,EACAA,EAAOsF,kBACPiL,EAAOtQ,UAETsQ,EAAOtQ,SAASsE,QAAU,GAAa13B,KAAK0jC,EAAOtQ,SAASsE,WAIzDlsC,QAAQsW,OAAO4hC,EACxB,GACF,CChFO,MCKD+D,GAAa,CAAC,EAGpB,CAAC,SAAU,UAAW,SAAU,WAAY,SAAU,UAAUzrC,SAAQ,CAACzM,EAAMhC,KAC7Ek6C,GAAWl4C,GAAQ,SAAmB49B,GACpC,cAAcA,IAAU59B,GAAQ,KAAOhC,EAAI,EAAI,KAAO,KAAOgC,CAC/D,CAAC,IAGH,MAAMm4C,GAAqB,CAAC,EAW5BD,GAAWlQ,aAAe,SAAsBoQ,EAAWt9C,EAASK,GAClE,SAASk9C,EAAc78B,EAAK88B,GAC1B,MAAO,uCAAoD98B,EAAM,IAAO88B,GAAQn9C,EAAU,KAAOA,EAAU,GAC7G,CAGA,MAAO,CAACyB,EAAO4e,EAAK+8B,KAClB,IAAkB,IAAdH,EACF,MAAM,IAAI,EACRC,EAAc78B,EAAK,qBAAuB1gB,EAAU,OAASA,EAAU,KACvE,EAAW09C,gBAef,OAXI19C,IAAYq9C,GAAmB38B,KACjC28B,GAAmB38B,IAAO,EAE1BhV,QAAQyD,KACNouC,EACE78B,EACA,+BAAiC1gB,EAAU,8CAK1Cs9C,GAAYA,EAAUx7C,EAAO4e,EAAK+8B,EAAY,CAEzD,EAEAL,GAAWO,SAAW,SAAkBC,GACtC,MAAO,CAAC97C,EAAO4e,KAEbhV,QAAQyD,KAAK,GAAGuR,gCAAkCk9B,MAC3C,EAEX,EAmCA,UACEC,cAxBF,SAAuBzxC,EAAS0xC,EAAQC,GACtC,GAAuB,iBAAZ3xC,EACT,MAAM,IAAI,EAAW,4BAA6B,EAAW4xC,sBAE/D,MAAM98C,EAAOjJ,OAAOiJ,KAAKkL,GACzB,IAAIlJ,EAAIhC,EAAKhH,OACb,KAAOgJ,KAAM,GAAG,CACd,MAAMwd,EAAMxf,EAAKgC,GACXo6C,EAAYQ,EAAOp9B,GACzB,GAAI48B,EAAJ,CACE,MAAMx7C,EAAQsK,EAAQsU,GAChB9X,OAAmBxQ,IAAV0J,GAAuBw7C,EAAUx7C,EAAO4e,EAAKtU,GAC5D,IAAe,IAAXxD,EACF,MAAM,IAAI,EAAW,UAAY8X,EAAM,YAAc9X,EAAQ,EAAWo1C,qBAG5E,MACA,IAAqB,IAAjBD,EACF,MAAM,IAAI,EAAW,kBAAoBr9B,EAAK,EAAWu9B,eAE7D,CACF,EAIEb,eCtFI,GAAaE,GAAUF,WAS7B,MAAMc,GACJ,WAAAj/B,CAAYk/B,GACV59C,KAAK6iB,SAAW+6B,EAChB59C,KAAK69C,aAAe,CAClB9yC,QAAS,IAAI,GACby9B,SAAU,IAAI,GAElB,CAUA,aAAMz9B,CAAQ+yC,EAAavV,GACzB,IACE,aAAavoC,KAAK07C,SAASoC,EAAavV,EAC1C,CAAE,MAAOtwB,GACP,GAAIA,aAAe7X,MAAO,CACxB,IAAI29C,EAAQ,CAAC,EAEb39C,MAAMqoC,kBAAoBroC,MAAMqoC,kBAAkBsV,GAAUA,EAAQ,IAAI39C,MAGxE,MAAMgH,EAAQ22C,EAAM32C,MAAQ22C,EAAM32C,MAAMnN,QAAQ,QAAS,IAAM,GAC/D,IACOge,EAAI7Q,MAGEA,IAAUzF,OAAOsW,EAAI7Q,OAAOwK,SAASxK,EAAMnN,QAAQ,YAAa,OACzEge,EAAI7Q,OAAS,KAAOA,GAHpB6Q,EAAI7Q,MAAQA,CAKhB,CAAE,MAAO7O,GAET,CACF,CAEA,MAAM0f,CACR,CACF,CAEA,QAAAyjC,CAASoC,EAAavV,GAGO,iBAAhBuV,GACTvV,EAASA,GAAU,CAAC,GACb36B,IAAMkwC,EAEbvV,EAASuV,GAAe,CAAC,EAG3BvV,EAASkM,GAAYz0C,KAAK6iB,SAAU0lB,GAEpC,MAAM,aAACoE,EAAY,iBAAEuI,EAAgB,QAAEpI,GAAWvE,OAE7B1wC,IAAjB80C,GACFoQ,GAAUO,cAAc3Q,EAAc,CACpCnB,kBAAmB,GAAWmB,aAAa,GAAWqR,SACtDvS,kBAAmB,GAAWkB,aAAa,GAAWqR,SACtDtS,oBAAqB,GAAWiB,aAAa,GAAWqR,WACvD,GAGmB,MAApB9I,IACExM,EAAM7F,WAAWqS,GACnB3M,EAAO2M,iBAAmB,CACxBpK,UAAWoK,GAGb6H,GAAUO,cAAcpI,EAAkB,CACxC3K,OAAQ,GAAW0T,SACnBnT,UAAW,GAAWmT,WACrB,SAK0BpmD,IAA7B0wC,EAAO6L,yBAEoCv8C,IAApCmI,KAAK6iB,SAASuxB,kBACvB7L,EAAO6L,kBAAoBp0C,KAAK6iB,SAASuxB,kBAEzC7L,EAAO6L,mBAAoB,GAG7B2I,GAAUO,cAAc/U,EAAQ,CAC9B2V,QAAS,GAAWd,SAAS,WAC7Be,cAAe,GAAWf,SAAS,mBAClC,GAGH7U,EAAO7N,QAAU6N,EAAO7N,QAAU16B,KAAK6iB,SAAS6X,QAAU,OAAO9zB,cAGjE,IAAIw3C,EAAiBtR,GAAWpE,EAAM9C,MACpCkH,EAAQ0B,OACR1B,EAAQvE,EAAO7N,SAGjBoS,GAAWpE,EAAMt3B,QACf,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,QAAS,WACjDspB,WACQoS,EAAQpS,EAAO,IAI1B6N,EAAOuE,QAAU,GAAaprC,OAAO08C,EAAgBtR,GAGrD,MAAMuR,EAA0B,GAChC,IAAIC,GAAiC,EACrCt+C,KAAK69C,aAAa9yC,QAAQqG,SAAQ,SAAoCmtC,GACjC,mBAAxBA,EAAYjT,UAA0D,IAAhCiT,EAAYjT,QAAQ/C,KAIrE+V,EAAiCA,GAAkCC,EAAYlT,YAE/EgT,EAAwBG,QAAQD,EAAYpT,UAAWoT,EAAYnT,UACrE,IAEA,MAAMqT,EAA2B,GAKjC,IAAIljC,EAJJvb,KAAK69C,aAAarV,SAASp3B,SAAQ,SAAkCmtC,GACnEE,EAAyBn9C,KAAKi9C,EAAYpT,UAAWoT,EAAYnT,SACnE,IAGA,IACI5b,EADA7sB,EAAI,EAGR,IAAK27C,EAAgC,CACnC,MAAMI,EAAQ,CAAC9B,GAAgBvzC,KAAKrJ,WAAOnI,GAO3C,IANA6mD,EAAMF,QAAQ30C,MAAM60C,EAAOL,GAC3BK,EAAMp9C,KAAKuI,MAAM60C,EAAOD,GACxBjvB,EAAMkvB,EAAM/kD,OAEZ4hB,EAAU3a,QAAQoW,QAAQuxB,GAEnB5lC,EAAI6sB,GACTjU,EAAUA,EAAQtE,KAAKynC,EAAM/7C,KAAM+7C,EAAM/7C,MAG3C,OAAO4Y,CACT,CAEAiU,EAAM6uB,EAAwB1kD,OAE9B,IAAIs8C,EAAY1N,EAIhB,IAFA5lC,EAAI,EAEGA,EAAI6sB,GAAK,CACd,MAAMmvB,EAAcN,EAAwB17C,KACtCi8C,EAAaP,EAAwB17C,KAC3C,IACEszC,EAAY0I,EAAY1I,EAC1B,CAAE,MAAOx0C,GACPm9C,EAAWtiD,KAAK0D,KAAMyB,GACtB,KACF,CACF,CAEA,IACE8Z,EAAUqhC,GAAgBtgD,KAAK0D,KAAMi2C,EACvC,CAAE,MAAOx0C,GACP,OAAOb,QAAQsW,OAAOzV,EACxB,CAKA,IAHAkB,EAAI,EACJ6sB,EAAMivB,EAAyB9kD,OAExBgJ,EAAI6sB,GACTjU,EAAUA,EAAQtE,KAAKwnC,EAAyB97C,KAAM87C,EAAyB97C,MAGjF,OAAO4Y,CACT,CAEA,MAAAsjC,CAAOtW,GAGL,OAAOsC,GADUoJ,IADjB1L,EAASkM,GAAYz0C,KAAK6iB,SAAU0lB,IACE2L,QAAS3L,EAAO36B,IAAK26B,EAAO6L,mBACxC7L,EAAOn1B,OAAQm1B,EAAO2M,iBAClD,EAIFxM,EAAMt3B,QAAQ,CAAC,SAAU,MAAO,OAAQ,YAAY,SAA6BspB,GAE/EijB,GAAMx9C,UAAUu6B,GAAU,SAAS9sB,EAAK26B,GACtC,OAAOvoC,KAAK+K,QAAQ0pC,GAAYlM,GAAU,CAAC,EAAG,CAC5C7N,SACA9sB,MACAgd,MAAO2d,GAAU,CAAC,GAAG3d,OAEzB,CACF,IAEA8d,EAAMt3B,QAAQ,CAAC,OAAQ,MAAO,UAAU,SAA+BspB,GAGrE,SAASokB,EAAmBC,GAC1B,OAAO,SAAoBnxC,EAAKgd,EAAM2d,GACpC,OAAOvoC,KAAK+K,QAAQ0pC,GAAYlM,GAAU,CAAC,EAAG,CAC5C7N,SACAoS,QAASiS,EAAS,CAChB,eAAgB,uBACd,CAAC,EACLnxC,MACAgd,SAEJ,CACF,CAEA+yB,GAAMx9C,UAAUu6B,GAAUokB,IAE1BnB,GAAMx9C,UAAUu6B,EAAS,QAAUokB,GAAmB,EACxD,IAEA,YCtOA,MAAME,GACJ,WAAAtgC,CAAYugC,GACV,GAAwB,mBAAbA,EACT,MAAM,IAAIhmC,UAAU,gCAGtB,IAAIimC,EAEJl/C,KAAKub,QAAU,IAAI3a,SAAQ,SAAyBoW,GAClDkoC,EAAiBloC,CACnB,IAEA,MAAM6tB,EAAQ7kC,KAGdA,KAAKub,QAAQtE,MAAKqhC,IAChB,IAAKzT,EAAMsa,WAAY,OAEvB,IAAIx8C,EAAIkiC,EAAMsa,WAAWxlD,OAEzB,KAAOgJ,KAAM,GACXkiC,EAAMsa,WAAWx8C,GAAG21C,GAEtBzT,EAAMsa,WAAa,IAAI,IAIzBn/C,KAAKub,QAAQtE,KAAOmoC,IAClB,IAAIC,EAEJ,MAAM9jC,EAAU,IAAI3a,SAAQoW,IAC1B6tB,EAAM2T,UAAUxhC,GAChBqoC,EAAWroC,CAAO,IACjBC,KAAKmoC,GAMR,OAJA7jC,EAAQ+8B,OAAS,WACfzT,EAAMuS,YAAYiI,EACpB,EAEO9jC,CAAO,EAGhB0jC,GAAS,SAAgBn/C,EAASyoC,EAAQx9B,GACpC85B,EAAMiU,SAKVjU,EAAMiU,OAAS,IAAI,GAAch5C,EAASyoC,EAAQx9B,GAClDm0C,EAAera,EAAMiU,QACvB,GACF,CAKA,gBAAA6D,GACE,GAAI38C,KAAK84C,OACP,MAAM94C,KAAK84C,MAEf,CAMA,SAAAN,CAAUjsC,GACJvM,KAAK84C,OACPvsC,EAASvM,KAAK84C,QAIZ94C,KAAKm/C,WACPn/C,KAAKm/C,WAAW79C,KAAKiL,GAErBvM,KAAKm/C,WAAa,CAAC5yC,EAEvB,CAMA,WAAA6qC,CAAY7qC,GACV,IAAKvM,KAAKm/C,WACR,OAEF,MAAM3yC,EAAQxM,KAAKm/C,WAAWxjD,QAAQ4Q,IACvB,IAAXC,GACFxM,KAAKm/C,WAAWG,OAAO9yC,EAAO,EAElC,CAEA,aAAA+uC,GACE,MAAM3C,EAAa,IAAIC,gBAEjBN,EAAStgC,IACb2gC,EAAWL,MAAMtgC,EAAI,EAOvB,OAJAjY,KAAKw4C,UAAUD,GAEfK,EAAWvB,OAAOD,YAAc,IAAMp3C,KAAKo3C,YAAYmB,GAEhDK,EAAWvB,MACpB,CAMA,aAAO7rC,GACL,IAAI8sC,EAIJ,MAAO,CACLzT,MAJY,IAAIma,IAAY,SAAkB1mD,GAC9CggD,EAAShgD,CACX,IAGEggD,SAEJ,EAGF,YCtIMiH,GAAiB,CACrBC,SAAU,IACVC,mBAAoB,IACpBC,WAAY,IACZC,WAAY,IACZC,GAAI,IACJC,QAAS,IACTC,SAAU,IACVC,4BAA6B,IAC7BC,UAAW,IACXC,aAAc,IACdC,eAAgB,IAChBC,YAAa,IACbC,gBAAiB,IACjBC,OAAQ,IACRC,gBAAiB,IACjBC,iBAAkB,IAClBC,MAAO,IACPC,SAAU,IACVC,YAAa,IACbC,SAAU,IACVC,OAAQ,IACRC,kBAAmB,IACnBC,kBAAmB,IACnBC,WAAY,IACZC,aAAc,IACdC,gBAAiB,IACjBC,UAAW,IACXC,SAAU,IACVC,iBAAkB,IAClBC,cAAe,IACfC,4BAA6B,IAC7BC,eAAgB,IAChBC,SAAU,IACVC,KAAM,IACNC,eAAgB,IAChBC,mBAAoB,IACpBC,gBAAiB,IACjBC,WAAY,IACZC,qBAAsB,IACtBC,oBAAqB,IACrBC,kBAAmB,IACnBC,UAAW,IACXC,mBAAoB,IACpBC,oBAAqB,IACrBC,OAAQ,IACRC,iBAAkB,IAClBC,SAAU,IACVC,gBAAiB,IACjBC,qBAAsB,IACtBC,gBAAiB,IACjBC,4BAA6B,IAC7BC,2BAA4B,IAC5BC,oBAAqB,IACrBC,eAAgB,IAChBC,WAAY,IACZC,mBAAoB,IACpBC,eAAgB,IAChBC,wBAAyB,IACzBC,sBAAuB,IACvBC,oBAAqB,IACrBC,aAAc,IACdC,YAAa,IACbC,8BAA+B,KAGjC5rD,OAAOo0B,QAAQyzB,IAAgBnuC,SAAQ,EAAE7O,EAAKhB,MAC5Cg+C,GAAeh+C,GAASgB,CAAG,IAG7B,YCxBMghD,GAnBN,SAASC,EAAeC,GACtB,MAAM1f,EAAU,IAAI,GAAM0f,GACpBlhC,EAAWlZ,EAAK,GAAMlJ,UAAU4K,QAASg5B,GAa/C,OAVA2E,EAAM1C,OAAOzjB,EAAU,GAAMpiB,UAAW4jC,EAAS,CAACL,YAAY,IAG9DgF,EAAM1C,OAAOzjB,EAAUwhB,EAAS,KAAM,CAACL,YAAY,IAGnDnhB,EAAS5qB,OAAS,SAAgBimD,GAChC,OAAO4F,EAAe/O,GAAYgP,EAAe7F,GACnD,EAEOr7B,CACT,CAGcihC,CAAe,IAG7BD,GAAM5F,MAAQ,GAGd4F,GAAMhS,cAAgB,GACtBgS,GAAMvE,YAAc,GACpBuE,GAAMlS,SAAWA,GACjBkS,GAAMG,QLvDiB,QKwDvBH,GAAMI,WAAa,GAGnBJ,GAAMlb,WAAa,EAGnBkb,GAAMK,OAASL,GAAMhS,cAGrBgS,GAAM1iD,IAAM,SAAagjD,GACvB,OAAOjjD,QAAQC,IAAIgjD,EACrB,EAEAN,GAAMO,OC9CS,SAAgBrhD,GAC7B,OAAO,SAAcZ,GACnB,OAAOY,EAASoH,MAAM,KAAMhI,EAC9B,CACF,ED6CA0hD,GAAMQ,aE7DS,SAAsBC,GACnC,OAAOtb,EAAM3F,SAASihB,KAAsC,IAAzBA,EAAQD,YAC7C,EF8DAR,GAAM9O,YAAcA,GAEpB8O,GAAMvU,aAAe,GAErBuU,GAAMU,WAAa1hB,GAAS,GAAemG,EAAMxE,WAAW3B,GAAS,IAAI4C,SAAS5C,GAASA,GAE3FghB,GAAMW,WAAa5H,GAEnBiH,GAAMhE,eAAiB,GAEvBgE,GAAMnzB,QAAUmzB,GAGhB,2DGxFA,IAAIY,EAAqB,SAA4BnjD,GACnD,MAAO,CACL2D,KAAM,UACN+d,KAAM,SAAcJ,EAAU8hC,EAAgBC,GAAiB,EAC/DrQ,KAAM,SAAc1rC,EAAUg8C,EAAW7hD,GACvC,GAAmB,mBAARzB,EAmBXyB,EAAS,KAAMzB,GAAOA,EAAIsH,IAAatH,EAAIsH,GAAUg8C,QAnBrD,CACE,GAAItjD,EAAIrH,OAAS,EAAG,CAClB,IACE,IAAIJ,EAAIyH,EAAIsH,EAAUg8C,GAClB/qD,GAAuB,mBAAXA,EAAE0d,KAChB1d,EAAE0d,MAAK,SAAU2T,GACf,OAAOnoB,EAAS,KAAMmoB,GAAQA,EAAKwF,SAAWxF,EAChD,IAAGwd,MAAM3lC,GAETA,EAAS,KAAMlJ,EAEnB,CAAE,MAAO0e,GACPxV,EAASwV,EACX,CACA,MACF,CACAjX,EAAIsH,EAAUg8C,EAAW7hD,EAE3B,CAEF,EAEJ,mECtBA,MAAM6+B,EAAkB,IAAM5pC,OAAOC,OAAO,OAEtC,QAAEyZ,EAAO,MAAErB,GAAUrH,MAAMvI,WACzBsL,eAAc,GAAK/T,OAAOyI,UAC3B,MAAMohC,EACT,WAAA7iB,CAAY8iB,GAAW,EAAMC,EAAWH,GACpCthC,KAAKwhC,SAAWA,EAChBxhC,KAAKyhC,SAAWA,CACpB,CACA,MAAAriB,IAAU5c,GACN,OAAOxC,KAAK0hC,YAAYl/B,EAC5B,CACA,WAAAk/B,CAAYl/B,GACR,IAAIsnB,EAAO9pB,KAEX,OADAoR,EAAQ9U,KAAKkG,GAAOD,GAAOunB,EAAOA,EAAK6X,aAAap/B,KAC7C,EAAejG,KAAKwtB,EAAM,QAC3BA,EAAKc,KACLd,EAAKc,KAAO5qB,KAAKyhC,SAAS1xB,EAAMzT,KAAKkG,GAC/C,CACA,IAAAo/B,IAAQp/B,GACJ,OAAOxC,KAAK6hC,UAAUr/B,EAC1B,CACA,SAAAq/B,CAAUr/B,GACN,IAAIsnB,EAAO9pB,KACX,IAAK,IAAI2C,EAAI,EAAG6sB,EAAMhtB,EAAM7I,OAAQmwB,GAAQnnB,EAAI6sB,IAAO7sB,EAAG,CACtD,MAAM7B,EAAMd,KAAKwhC,UAAYY,EAAS5/B,EAAMG,IAAMmnB,EAAKoY,KAAOpY,EAAKqY,OACnErY,EAAOhpB,GAAOA,EAAIua,IAAI7Y,EAAMG,GAChC,CACA,OAAOmnB,GAAQA,EAAKc,IACxB,CACA,YAAA+W,CAAap/B,GACT,MAAMzB,EAAMd,KAAKwhC,UAAYY,EAAS7/B,GAChCvC,KAAKkiC,OAASliC,KAAKkiC,KAAO,IAAIjD,SAC9Bj/B,KAAKmiC,SAAWniC,KAAKmiC,OAAS,IAAIloB,KACxC,IAAIgoB,EAAQnhC,EAAIua,IAAI9Y,GAGpB,OAFK0/B,GACDnhC,EAAInE,IAAI4F,EAAK0/B,EAAQ,IAAIV,EAAKvhC,KAAKwhC,SAAUxhC,KAAKyhC,WAC/CQ,CACX,EAEJ,SAASG,EAAS7gC,GACd,cAAeA,GACX,IAAK,SACD,GAAc,OAAVA,EACA,MAER,IAAK,WACD,OAAO,EAEf,OAAO,CACX,gBCpDA,IAAIgjD,EAAiB,KAGrB,MAAMC,EAAgB,CAAC,EACvB,IAAIC,EAAY,EAsGhB,SAASC,EAAMltD,GACX,IACI,OAAOA,GACX,CACA,MAAOmtD,GAAW,CACtB,CASA,MAAMC,EAAY,oBAeZC,EAXNH,GAAM,IAAM/nB,cAIR+nB,GAAM,IAAM7gB,UAIZnsC,OAAOC,OAAO,MAILmtD,EAAOD,EAAWD,IAG3Bl8C,MAAMk8C,IACN,SAAWE,GACP,IACIptD,OAAOimB,eAAeknC,EAAYD,EAAW,CACzCrjD,MAAOujD,EACPhmC,YAAY,EACZE,UAAU,EAOVD,cAAc,GAEtB,CACA,QACI,OAAO+lC,CACX,CACH,CAlBD,CApIwB,MACxB,WAAApmC,GAII1e,KAAKo3B,GAAK,CACN,OACAqtB,IACAlsC,KAAKC,MACL3N,KAAKC,SAASzD,SAAS,IAAI0I,MAAM,IACnClV,KAAK,IACX,CACA,QAAAkqD,GACI,IAAK,IAAIhhB,EAAUwgB,EAAgBxgB,EAASA,EAAUA,EAAQihB,OAG1D,GAAIhlD,KAAKo3B,MAAM2M,EAAQkhB,MAAO,CAC1B,MAAM1jD,EAAQwiC,EAAQkhB,MAAMjlD,KAAKo3B,IACjC,GAAI71B,IAAUijD,EACV,MAOJ,OANIzgB,IAAYwgB,IAIZA,EAAeU,MAAMjlD,KAAKo3B,IAAM71B,IAE7B,CACX,CAQJ,OANIgjD,IAIAA,EAAeU,MAAMjlD,KAAKo3B,IAAMotB,IAE7B,CACX,CACA,QAAAU,GACI,GAAIllD,KAAK+kD,WACL,OAAOR,EAAeU,MAAMjlD,KAAKo3B,GAEzC,CACA,SAAA+tB,CAAU5jD,EAAOkB,EAGjB2V,EAAMiqB,GACF,MAAM4iB,EAAQ,CACVppB,UAAW,KACX,CAAC77B,KAAKo3B,IAAK71B,GAETyjD,EAAST,EACfA,EAAiB,CAAES,SAAQC,SAC3B,IAGI,OAAOxiD,EAASoH,MAAMw4B,EAASjqB,EACnC,CACA,QACImsC,EAAiBS,CACrB,CACJ,CAGA,WAAO37C,CAAK5G,GACR,MAAMshC,EAAUwgB,EAChB,OAAO,WACH,MAAMa,EAAQb,EACd,IAEI,OADAA,EAAiBxgB,EACVthC,EAASoH,MAAM7J,KAAMqC,UAChC,CACA,QACIkiD,EAAiBa,CACrB,CACJ,CACJ,CAEA,gBAAOC,CAAU5iD,EAGjB2V,EAAMiqB,GACF,IAAIkiB,EAaA,OAAO9hD,EAASoH,MAAMw4B,EAASjqB,GAbf,CAChB,MAAMgtC,EAAQb,EACd,IAII,OAHAA,EAAiB,KAGV9hD,EAASoH,MAAMw4B,EAASjqB,EACnC,CACA,QACImsC,EAAiBa,CACrB,CACJ,CAIJ,KCzGS,KAAE/7C,EAAI,UAAEg8C,GAAcP,ECDtBQ,EAAkB,IAAIR,GCDpBr5C,eAAc,GAAM/T,OAAOyI,UAC7BolD,EAAe78C,MAAM0M,MAC9B,SAAUzY,GACN,MAAM6F,EAAQ,GAEd,OADA7F,EAAIyU,SAAQo0C,GAAQhjD,EAAMlB,KAAKkkD,KACxBhjD,CACX,EACG,SAASijD,EAAiBC,GAC7B,MAAM,YAAEtO,GAAgBsO,EACG,mBAAhBtO,IACPsO,EAAWtO,iBAAc,EACzBA,IAER,CCXA,MAAMuO,EAAe,GACfC,EAAmB,IAGzB,SAASC,EAAOC,EAAWC,GACvB,IAAKD,EACD,MAAM,IAAI1lD,MAAM2lD,GAAmB,oBAE3C,CACA,SAASC,EAAQvtD,EAAGO,GAChB,MAAMw2B,EAAM/2B,EAAEkB,OACd,OAEA61B,EAAM,GAEFA,IAAQx2B,EAAEW,QAEVlB,EAAE+2B,EAAM,KAAOx2B,EAAEw2B,EAAM,EAC/B,CACA,SAASy2B,EAAS1kD,GACd,OAAQA,EAAM5H,QACV,KAAK,EAAG,MAAM,IAAIyG,MAAM,iBACxB,KAAK,EAAG,OAAOmB,EAAM,GACrB,KAAK,EAAG,MAAMA,EAAM,GAE5B,CACA,SAAS2kD,EAAU3kD,GACf,OAAOA,EAAMwO,MAAM,EACvB,CACO,MAAMo2C,EACT,WAAAznC,CAAYlnB,GACRwI,KAAKxI,GAAKA,EACVwI,KAAKomD,QAAU,IAAIp0C,IACnBhS,KAAKqmD,YAAc,IAAIpsC,IAIvBja,KAAKsmD,cAAgB,KACrBtmD,KAAKumD,OAAQ,EACbvmD,KAAKwmD,aAAc,EACnBxmD,KAAKuB,MAAQ,GACbvB,KAAKymD,KAAO,OACVN,EAAMO,KACZ,CACA,IAAA9kB,GACI,GAA0B,IAAtB5hC,KAAKuB,MAAM5H,SAAiBgtD,EAAa3mD,MAEzC,OADA4mD,EAAe5mD,MACRA,KAAKuB,MAAM,EAE1B,CAOA,SAAAslD,CAAUzuC,GAGN,OAFAytC,GAAQ7lD,KAAKwmD,YAAa,uBAC1BI,EAAe5mD,MACR2mD,EAAa3mD,MA2E5B,SAAyBisB,EAAO7T,GAS5B,OARA0uC,EAAe76B,GAEfq5B,EAAgBH,UAAUl5B,EAAO86B,EAAmB,CAAC96B,EAAO7T,IA8IhE,SAAwB6T,EAAO7T,GAC3B,GAA+B,mBAApB6T,EAAMusB,UACb,IACIiN,EAAiBx5B,GACjBA,EAAMmrB,YAAcnrB,EAAMusB,UAAU3uC,MAAM,KAAMuO,EACpD,CACA,MAAO7f,GAMH,OADA0zB,EAAM+6B,YACC,CACX,CAIJ,OAAO,CACX,CA/JQC,CAAeh7B,EAAO7T,IA2C9B,SAAkB6T,GACdA,EAAMs6B,OAAQ,EACVI,EAAa16B,IAKjBi7B,EAAYj7B,EAChB,CAhDQk7B,CAASl7B,GAENg6B,EAASh6B,EAAM1qB,MAC1B,CApFc6lD,CAAgBpnD,KAAMoY,GACtB6tC,EAASjmD,KAAKuB,MACxB,CACA,QAAAylD,GACQhnD,KAAKumD,QAETvmD,KAAKumD,OAAQ,EACbc,EAAYrnD,MAIZylD,EAAiBzlD,MACrB,CACA,OAAAymB,GACIzmB,KAAKgnD,WAILF,EAAe9mD,MAYfsnD,EAAWtnD,MAAM,CAACglD,EAAQ/iB,KACtB+iB,EAAOgC,WACPO,EAAYvC,EAAQhlD,KAAK,GAEjC,CACA,MAAAwnD,GAIIxnD,KAAKymB,SACT,CACA,QAAAghC,CAASC,GACLA,EAAI3nB,IAAI//B,MACHA,KAAKymD,OACNzmD,KAAKymD,KAAOd,EAAahwC,OAAS,IAAI3D,KAE1ChS,KAAKymD,KAAK1mB,IAAI2nB,EAClB,CACA,UAAAC,GACQ3nD,KAAKymD,OACLlB,EAAavlD,KAAKymD,MAAMr1C,SAAQs2C,GAAOA,EAAI/oB,OAAO3+B,QAClDA,KAAKymD,KAAK/qC,QACViqC,EAAarkD,KAAKtB,KAAKymD,MACvBzmD,KAAKymD,KAAO,KAEpB,EAGJ,SAASG,EAAe3kB,GACpB,MAAM+iB,EAASM,EAAgBJ,WAC/B,GAAIF,EAWA,OAVA/iB,EAAMmkB,QAAQrmB,IAAIilB,GACbA,EAAOqB,YAAY9+B,IAAI0a,IACxB+iB,EAAOqB,YAAY1pD,IAAIslC,EAAO,IAE9B0kB,EAAa1kB,GACb2lB,EAAiB5C,EAAQ/iB,GAGzB4lB,EAAiB7C,EAAQ/iB,GAEtB+iB,CAEf,CAYA,SAAS+B,EAAkB96B,EAAO7T,GAC9B6T,EAAMu6B,aAAc,EACpB,MAAM,gBAAEsB,GAAoB77B,EAC5B,IAAI87B,EACAD,GAA0C,IAAvB77B,EAAM1qB,MAAM5H,SAC/BouD,EAAe7B,EAAUj6B,EAAM1qB,QAGnC0qB,EAAM1qB,MAAM5H,OAAS,EACrB,IAOI,GALAsyB,EAAM1qB,MAAM,GAAK0qB,EAAMz0B,GAAGqS,MAAM,KAAMuO,GAKlC0vC,GAAmBC,IAAiB/B,EAAQ+B,EAAc97B,EAAM1qB,OAChE,IACI0qB,EAAM1qB,MAAM,GAAKumD,EAAgB77B,EAAM1qB,MAAM,GAAIwmD,EAAa,GAClE,CACA,MAAOtnD,GAGP,CAER,CACA,MAAOlI,GAEH0zB,EAAM1qB,MAAM,GAAKhJ,CACrB,CAEA0zB,EAAMu6B,aAAc,CACxB,CACA,SAASG,EAAa16B,GAClB,OAAOA,EAAMs6B,UAAYt6B,EAAMq6B,gBAAiBr6B,EAAMq6B,cAAc/nB,KACxE,CAUA,SAAS8oB,EAAYplB,GACjBqlB,EAAWrlB,EAAO2lB,EACtB,CACA,SAASV,EAAYjlB,GACjBqlB,EAAWrlB,EAAO4lB,EACtB,CACA,SAASP,EAAWrlB,EAAOx/B,GACvB,MAAMulD,EAAc/lB,EAAMmkB,QAAQ7nB,KAClC,GAAIypB,EAAa,CACb,MAAM5B,EAAUb,EAAatjB,EAAMmkB,SACnC,IAAK,IAAIzjD,EAAI,EAAGA,EAAIqlD,IAAerlD,EAC/BF,EAAS2jD,EAAQzjD,GAAIs/B,EAE7B,CACJ,CAEA,SAAS2lB,EAAiB5C,EAAQ/iB,GAG9B4jB,EAAOb,EAAOqB,YAAY9+B,IAAI0a,IAC9B4jB,EAAOc,EAAa1kB,IACpB,MAAMgmB,GAAkBtB,EAAa3B,GACrC,GAAKA,EAAOsB,eAGP,GAAItB,EAAOsB,cAAc/+B,IAAI0a,GAI9B,YANA+iB,EAAOsB,cAAgBX,EAAahwC,OAAS,IAAI3D,IAQrDgzC,EAAOsB,cAAcvmB,IAAIkC,GAGrBgmB,GACAZ,EAAYrC,EAEpB,CAEA,SAAS6C,EAAiB7C,EAAQ/iB,GAG9B4jB,EAAOb,EAAOqB,YAAY9+B,IAAI0a,IAC9B4jB,GAAQc,EAAa1kB,IACrB,MAAMimB,EAAalD,EAAOqB,YAAYhrC,IAAI4mB,GAChB,IAAtBimB,EAAWvuD,OACXqrD,EAAOqB,YAAY1pD,IAAIslC,EAAOikB,EAAUjkB,EAAM1gC,QAExCykD,EAAQkC,EAAYjmB,EAAM1gC,QAChCyjD,EAAOgC,WAEXmB,EAAiBnD,EAAQ/iB,GACrB0kB,EAAa3B,IAGjBkC,EAAYlC,EAChB,CACA,SAASmD,EAAiBnD,EAAQ/iB,GAC9B,MAAMmmB,EAAKpD,EAAOsB,cACd8B,IACAA,EAAGzpB,OAAOsD,GACM,IAAZmmB,EAAG7pB,OACConB,EAAahsD,OAASisD,GACtBD,EAAarkD,KAAK8mD,GAEtBpD,EAAOsB,cAAgB,MAGnC,CAGA,SAASQ,EAAe9B,GAChBA,EAAOqB,YAAY9nB,KAAO,GAC1BymB,EAAOqB,YAAYj1C,SAAQ,CAACg+B,EAAQnN,KAChCslB,EAAYvC,EAAQ/iB,EAAM,IAKlC+iB,EAAO2C,aAGP9B,EAAgC,OAAzBb,EAAOsB,cAClB,CACA,SAASiB,EAAYvC,EAAQ/iB,GACzBA,EAAMmkB,QAAQznB,OAAOqmB,GACrBA,EAAOqB,YAAY1nB,OAAOsD,GAC1BkmB,EAAiBnD,EAAQ/iB,EAC7B,CAjKAkkB,EAAMO,MAAQ,ECrHd,MAAM2B,EAAe,CACjBrB,UAAU,EACVvgC,SAAS,EACT+gC,QAAQ,GAEL,SAASE,EAAI77C,GAChB,MAAMy8C,EAAY,IAAIruC,IAChBu+B,EAAY3sC,GAAWA,EAAQ2sC,UACrC,SAAS+P,EAAOhmD,GACZ,MAAMyiD,EAASM,EAAgBJ,WAC/B,GAAIF,EAAQ,CACR,IAAI0C,EAAMY,EAAUjtC,IAAI9Y,GACnBmlD,GACDY,EAAU3rD,IAAI4F,EAAKmlD,EAAM,IAAI11C,KAEjCgzC,EAAOyC,SAASC,GACS,mBAAdlP,IACPiN,EAAiBiC,GACjBA,EAAItQ,YAAcoB,EAAUj2C,GAEpC,CACJ,CAcA,OAbAgmD,EAAOhC,MAAQ,SAAehkD,EAAKimD,GAC/B,MAAMd,EAAMY,EAAUjtC,IAAI9Y,GAC1B,GAAImlD,EAAK,CACL,MAAM3uD,EAAKyvD,GACP,EAAelsD,KAAK+rD,EAAcG,GAAoBA,EAAkB,WAI5EjD,EAAamC,GAAKt2C,SAAQ6a,GAASA,EAAMlzB,OACzCuvD,EAAU3pB,OAAOp8B,GACjBkjD,EAAiBiC,EACrB,CACJ,EACOa,CACX,CCfA,IAAIE,EACG,SAASC,KAAuBtwC,GAEnC,OADaqwC,IAAmBA,EAAiB,IAAIlnB,EAAwB,mBAAZtC,WACrDyC,YAAYtpB,EAC5B,CAMA,MAAM0K,EAAS,IAAI9Q,IACZ,SAAS8nB,EAAK6uB,GAAkB,IAAExqB,EAAMtzB,KAAK+9C,IAAI,EAAG,IAAG,QAAEC,EAAO,aAAEC,EAAeJ,EAAmB,gBAAEZ,EAAe,UAAEtP,EAAW/gD,MAAOsxD,EAAc,KAAiBrxD,OAAOC,OAAO,OACzL,MAAMF,EAA+B,mBAAhBsxD,EACf,IAAIA,EAAY5qB,GAAKlS,GAASA,EAAMxF,YACpCsiC,EACAC,EAAa,WACf,MAAMzmD,EAAMumD,EAAaj/C,MAAM,KAAMg/C,EAAUA,EAAQh/C,MAAM,KAAMxH,WAAaA,WAChF,QAAY,IAARE,EACA,OAAOomD,EAAiB9+C,MAAM,KAAMxH,WAExC,IAAI4pB,EAAQx0B,EAAM4jB,IAAI9Y,GACjB0pB,IACDx0B,EAAMkF,IAAI4F,EAAK0pB,EAAQ,IAAIk6B,EAAMwC,IACjC18B,EAAM67B,gBAAkBA,EACxB77B,EAAMusB,UAAYA,EAGlBvsB,EAAMu7B,OAAS,IAAM/vD,EAAMknC,OAAOp8B,IAEtC,MAAMhB,EAAQ0qB,EAAM46B,UAAUn+C,MAAMvI,UAAU4P,MAAMzT,KAAK+F,YAYzD,OATA5K,EAAMkF,IAAI4F,EAAK0pB,GACfnJ,EAAOid,IAAItoC,GAIN6tD,EAAgBP,aACjBjiC,EAAO1R,SAAQ3Z,GAASA,EAAMinC,UAC9B5b,EAAOpH,SAEJna,CACX,EAcA,SAAS0nD,EAAS1mD,GACd,MAAM0pB,EAAQ1pB,GAAO9K,EAAM4jB,IAAI9Y,GAC3B0pB,GACAA,EAAM+6B,UAEd,CAKA,SAASkC,EAAQ3mD,GACb,MAAM0pB,EAAQ1pB,GAAO9K,EAAM4jB,IAAI9Y,GAC/B,GAAI0pB,EACA,OAAOA,EAAM2V,MAErB,CAKA,SAASunB,EAAU5mD,GACf,QAAOA,GAAM9K,EAAMknC,OAAOp8B,EAC9B,CASA,OA5CA7K,OAAOimB,eAAeqrC,EAAY,OAAQ,CACtC3tC,IAAK,IAAM5jB,EAAM8mC,KACjBxf,cAAc,EACdD,YAAY,IAEhBpnB,OAAOimC,OAAOqrB,EAAWn9C,QAAU,CAC/BsyB,MACA0qB,UACAC,eACAhB,kBACAtP,YACA/gD,UAQJuxD,EAAWC,SAAWA,EACtBD,EAAWzC,MAAQ,WACf0C,EAASH,EAAaj/C,MAAM,KAAMxH,WACtC,EAOA2mD,EAAWE,QAAUA,EACrBF,EAAWpnB,KAAO,WACd,OAAOsnB,EAAQJ,EAAaj/C,MAAM,KAAMxH,WAC5C,EAIA2mD,EAAWG,UAAYA,EACvBH,EAAWxB,OAAS,WAChB,OAAO2B,EAAUL,EAAaj/C,MAAM,KAAMxH,WAC9C,EACA2mD,EAAWF,aAAeA,EAC1BE,EAAWI,OAASP,EAAU,WAC1B,OAAOC,EAAaj/C,MAAM,KAAMg/C,EAAQh/C,MAAM,KAAMxH,WACxD,EAAIymD,EACGpxD,OAAOimC,OAAOqrB,EACzB,0EC9GIK,EAAiB,sBACjB5oD,EAAK/I,OAAOwI,eAAgBA,OAAwB,IAAPO,EAAgB,SAAUwB,EAAKqnD,GAE5E,OADArnD,EAAI45B,UAAYytB,EACTrnD,CACX,EAAIxB,EACA8oD,EAAgC,SAAU3pD,GAE1C,SAAS2pD,EAAezpD,QACJ,IAAZA,IAAsBA,EAAUupD,GACpC,IAAItpD,EAAQH,EAAOtD,KAAK0D,KAAyB,iBAAZF,EAC/BupD,EAAiB,KAAOvpD,EAAU,6DAClCA,IAAYE,KAIlB,OAHAD,EAAMypD,YAAc,EACpBzpD,EAAME,KAAOopD,EACbnpD,EAAeH,EAAOwpD,EAAeppD,WAC9BJ,CACX,CACA,OAXA,QAAUwpD,EAAgB3pD,GAWnB2pD,CACX,CAbmC,CAajCnpD,OAEK,SAASiN,EAAUy4C,EAAWhmD,GACjC,IAAKgmD,EACD,MAAM,IAAIyD,EAAezpD,EAEjC,CACA,IAAI2pD,EAAkB,CAAC,QAAS,MAAO,OAAQ,QAAS,UACpDC,EAAiBD,EAAgB9tD,QAAQ,OAC7C,SAASguD,EAAkB1pD,GACvB,OAAO,WACH,GAAIwpD,EAAgB9tD,QAAQsE,IAASypD,EAIjC,OADav+C,QAAQlL,IAASkL,QAAQy+C,KACxB//C,MAAMsB,QAAS9I,UAErC,CACJ,EACA,SAAWgL,GACPA,EAAUw8C,MAAQF,EAAkB,SACpCt8C,EAAUu8C,IAAMD,EAAkB,OAClCt8C,EAAUuB,KAAO+6C,EAAkB,QACnCt8C,EAAU5L,MAAQkoD,EAAkB,QACvC,CALD,CAKGt8C,IAAcA,EAAY,CAAC,iGC3B9B,IAAIy8C,EAAgB,SAASzxD,EAAGW,GAI9B,OAHA8wD,EAAgBpyD,OAAOwI,gBAClB,CAAE27B,UAAW,cAAgBnzB,OAAS,SAAUrQ,EAAGW,GAAKX,EAAEwjC,UAAY7iC,CAAG,GAC1E,SAAUX,EAAGW,GAAK,IAAK,IAAIc,KAAKd,EAAOtB,OAAOyI,UAAUsL,eAAenP,KAAKtD,EAAGc,KAAIzB,EAAEyB,GAAKd,EAAEc,GAAI,EAC7FgwD,EAAczxD,EAAGW,EAC1B,EAEO,SAAS+wD,EAAU1xD,EAAGW,GAC3B,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIigB,UAAU,uBAAyBtX,OAAO3I,GAAK,iCAE7D,SAASgxD,IAAOhqD,KAAK0e,YAAcrmB,CAAG,CADtCyxD,EAAczxD,EAAGW,GAEjBX,EAAE8H,UAAkB,OAANnH,EAAatB,OAAOC,OAAOqB,IAAMgxD,EAAG7pD,UAAYnH,EAAEmH,UAAW,IAAI6pD,EACjF,CAEO,IAAIp5B,EAAW,WAQpB,OAPAA,EAAWl5B,OAAO4T,QAAU,SAAkB7R,GAC1C,IAAK,IAAI+Y,EAAG7P,EAAI,EAAGzJ,EAAImJ,UAAU1I,OAAQgJ,EAAIzJ,EAAGyJ,IAE5C,IAAK,IAAI7I,KADT0Y,EAAInQ,UAAUM,GACOjL,OAAOyI,UAAUsL,eAAenP,KAAKkW,EAAG1Y,KAAIL,EAAEK,GAAK0Y,EAAE1Y,IAE9E,OAAOL,CACX,EACOm3B,EAAS/mB,MAAM7J,KAAMqC,UAC9B,EAEO,SAASutB,EAAOpd,EAAGja,GACxB,IAAIkB,EAAI,CAAC,EACT,IAAK,IAAIK,KAAK0Y,EAAO9a,OAAOyI,UAAUsL,eAAenP,KAAKkW,EAAG1Y,IAAMvB,EAAEoD,QAAQ7B,GAAK,IAC9EL,EAAEK,GAAK0Y,EAAE1Y,IACb,GAAS,MAAL0Y,GAAqD,mBAAjC9a,OAAOkmB,sBACtB,KAAIjb,EAAI,EAAb,IAAgB7I,EAAIpC,OAAOkmB,sBAAsBpL,GAAI7P,EAAI7I,EAAEH,OAAQgJ,IAC3DpK,EAAEoD,QAAQ7B,EAAE6I,IAAM,GAAKjL,OAAOyI,UAAUwmB,qBAAqBrqB,KAAKkW,EAAG1Y,EAAE6I,MACvElJ,EAAEK,EAAE6I,IAAM6P,EAAE1Y,EAAE6I,IAF4B,CAItD,OAAOlJ,CACT,CA8DO,SAASwwD,EAAU5nB,EAAS6nB,EAAY/uD,EAAGgvD,GAEhD,OAAO,IAAKhvD,IAAMA,EAAIyF,WAAU,SAAUoW,EAASE,GAC/C,SAASi0B,EAAU5pC,GAAS,IAAMsqB,EAAKs+B,EAAUp+B,KAAKxqB,GAAS,CAAE,MAAOhJ,GAAK2e,EAAO3e,EAAI,CAAE,CAC1F,SAAS6yC,EAAS7pC,GAAS,IAAMsqB,EAAKs+B,EAAiB,MAAE5oD,GAAS,CAAE,MAAOhJ,GAAK2e,EAAO3e,EAAI,CAAE,CAC7F,SAASszB,EAAKxjB,GAJlB,IAAe9G,EAIa8G,EAAO2jB,KAAOhV,EAAQ3O,EAAO9G,QAJ1CA,EAIyD8G,EAAO9G,MAJhDA,aAAiBpG,EAAIoG,EAAQ,IAAIpG,GAAE,SAAU6b,GAAWA,EAAQzV,EAAQ,KAIjB0V,KAAKk0B,EAAWC,EAAW,CAC7Gvf,GAAMs+B,EAAYA,EAAUtgD,MAAMw4B,EAAS6nB,GAAc,KAAKn+B,OAClE,GACF,CAEO,SAASq+B,EAAY/nB,EAASxqB,GACnC,IAAsGhe,EAAGhB,EAAGY,EAAGd,EAA3Ggb,EAAI,CAAEjT,MAAO,EAAGc,KAAM,WAAa,GAAW,EAAP/H,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAG4H,KAAM,GAAIgpD,IAAK,IAChG,OAAO1xD,EAAI,CAAEozB,KAAMu+B,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,mBAAX5zC,SAA0B/d,EAAE+d,OAAO+H,UAAY,WAAa,OAAOze,IAAM,GAAIrH,EACvJ,SAAS2xD,EAAKpxD,GAAK,OAAO,SAAUD,GAAK,OACzC,SAAcsxD,GACV,GAAI1wD,EAAG,MAAM,IAAIof,UAAU,mCAC3B,KAAOtgB,IAAMA,EAAI,EAAG4xD,EAAG,KAAO52C,EAAI,IAAKA,OACnC,GAAI9Z,EAAI,EAAGhB,IAAMY,EAAY,EAAR8wD,EAAG,GAAS1xD,EAAU,OAAI0xD,EAAG,GAAK1xD,EAAS,SAAOY,EAAIZ,EAAU,SAAMY,EAAE6C,KAAKzD,GAAI,GAAKA,EAAEkzB,SAAWtyB,EAAIA,EAAE6C,KAAKzD,EAAG0xD,EAAG,KAAKv+B,KAAM,OAAOvyB,EAE3J,OADIZ,EAAI,EAAGY,IAAG8wD,EAAK,CAAS,EAARA,EAAG,GAAQ9wD,EAAE8H,QACzBgpD,EAAG,IACP,KAAK,EAAG,KAAK,EAAG9wD,EAAI8wD,EAAI,MACxB,KAAK,EAAc,OAAX52C,EAAEjT,QAAgB,CAAEa,MAAOgpD,EAAG,GAAIv+B,MAAM,GAChD,KAAK,EAAGrY,EAAEjT,QAAS7H,EAAI0xD,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAK52C,EAAE02C,IAAI10C,MAAOhC,EAAEtS,KAAKsU,MAAO,SACxC,QACI,MAAkBlc,GAAZA,EAAIka,EAAEtS,MAAY1H,OAAS,GAAKF,EAAEA,EAAEE,OAAS,KAAkB,IAAV4wD,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAE52C,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAV42C,EAAG,MAAc9wD,GAAM8wD,EAAG,GAAK9wD,EAAE,IAAM8wD,EAAG,GAAK9wD,EAAE,IAAM,CAAEka,EAAEjT,MAAQ6pD,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAY52C,EAAEjT,MAAQjH,EAAE,GAAI,CAAEka,EAAEjT,MAAQjH,EAAE,GAAIA,EAAI8wD,EAAI,KAAO,CACpE,GAAI9wD,GAAKka,EAAEjT,MAAQjH,EAAE,GAAI,CAAEka,EAAEjT,MAAQjH,EAAE,GAAIka,EAAE02C,IAAI/oD,KAAKipD,GAAK,KAAO,CAC9D9wD,EAAE,IAAIka,EAAE02C,IAAI10C,MAChBhC,EAAEtS,KAAKsU,MAAO,SAEtB40C,EAAK1yC,EAAKvb,KAAK+lC,EAAS1uB,EAC5B,CAAE,MAAOpb,GAAKgyD,EAAK,CAAC,EAAGhyD,GAAIM,EAAI,CAAG,CAAE,QAAUgB,EAAIJ,EAAI,CAAG,CACzD,GAAY,EAAR8wD,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEhpD,MAAOgpD,EAAG,GAAKA,EAAG,QAAK,EAAQv+B,MAAM,EAC9E,CAtBgDH,CAAK,CAAC3yB,EAAGD,GAAK,CAAG,CAuBnE,CA+DO,SAASuxD,EAAcx9C,EAAIoI,EAAMq1C,GACtC,GAAIA,GAA6B,IAArBpoD,UAAU1I,OAAc,IAAK,IAA4B+wD,EAAxB/nD,EAAI,EAAGrJ,EAAI8b,EAAKzb,OAAYgJ,EAAIrJ,EAAGqJ,KACxE+nD,GAAQ/nD,KAAKyS,IACRs1C,IAAIA,EAAKhiD,MAAMvI,UAAU4P,MAAMzT,KAAK8Y,EAAM,EAAGzS,IAClD+nD,EAAG/nD,GAAKyS,EAAKzS,IAGrB,OAAOqK,EAAGtL,OAAOgpD,GAAMhiD,MAAMvI,UAAU4P,MAAMzT,KAAK8Y,GACpD,CArE6B1d,OAAOC,OA0GXD,OAAOC,OAyDkB,mBAApBgzD,iBAAiCA,8CCvT/D,SAAS/tB,EAAkB/6B,EAAK2tB,IAAkB,MAAPA,GAAeA,EAAM3tB,EAAIlI,UAAQ61B,EAAM3tB,EAAIlI,QAAQ,IAAK,IAAIgJ,EAAI,EAAGioD,EAAO,IAAIliD,MAAM8mB,GAAM7sB,EAAI6sB,EAAK7sB,IAAOioD,EAAKjoD,GAAKd,EAAIc,GAAM,OAAOioD,CAAM,CAEtL,SAAS/rC,EAAkBtT,EAAQ5B,GAAS,IAAK,IAAIhH,EAAI,EAAGA,EAAIgH,EAAMhQ,OAAQgJ,IAAK,CAAE,IAAI2b,EAAa3U,EAAMhH,GAAI2b,EAAWQ,WAAaR,EAAWQ,aAAc,EAAOR,EAAWS,cAAe,EAAU,UAAWT,IAAYA,EAAWU,UAAW,GAAMtnB,OAAOimB,eAAepS,EAAQ+S,EAAW/b,IAAK+b,EAAa,CAAE,CAE5T,SAAS2e,EAAaza,EAAaG,EAAYkoC,GAAyN,OAAtMloC,GAAY9D,EAAkB2D,EAAYriB,UAAWwiB,GAAiBkoC,GAAahsC,EAAkB2D,EAAaqoC,GAAcnzD,OAAOimB,eAAe6E,EAAa,YAAa,CAAExD,UAAU,IAAiBwD,CAAa,kBAG5R,IAAIsoC,EAAa,WACf,MAAyB,mBAAXp0C,MAChB,EAEI2V,EAAY,SAAUpsB,GACxB,OAAO6qD,KAAgBvU,QAAQ7/B,OAAOzW,GACxC,EAEI8qD,EAAY,SAAU9qD,GACxB,OAAOosB,EAAUpsB,GAAQyW,OAAOzW,GAAQ,KAAOA,CACjD,EAEI6qD,MAAiBz+B,EAAU,gBAC7B3V,OAAOs0C,WAAat0C,OAAO,eAG7B,IAAIu0C,EAAiBF,EAAU,YAC3BG,EAAmBH,EAAU,cAC7BI,EAAgBJ,EAAU,WAE9B,SAASK,EAAUnpD,EAAKM,GACtB,IAAIhB,EAAQU,EAAIM,GAChB,GAAa,MAAThB,EAAJ,CACA,GAAqB,mBAAVA,EAAsB,MAAM,IAAI0X,UAAU1X,EAAQ,sBAC7D,OAAOA,CAF4B,CAGrC,CAEA,SAAS8pD,EAAWppD,GAClB,IAAIqpD,EAAOrpD,EAAIyc,YAUf,YARa7mB,IAATyzD,GAGW,QAFbA,EAAOA,EAAKH,MAGVG,OAAOzzD,QAIKA,IAATyzD,EAAqBA,EAAOC,CACrC,CAEA,SAASC,EAAaryD,GACpB,OAAOA,aAAaoyD,CACtB,CAEA,SAASE,EAAgBlzD,GACnBkzD,EAAgB7B,IAClB6B,EAAgB7B,IAAIrxD,GAEpBwjB,YAAW,WACT,MAAMxjB,CACR,GAEJ,CAEA,SAASyhD,EAAQxiD,GACfoJ,QAAQoW,UAAUC,MAAK,WACrB,IACEzf,GACF,CAAE,MAAOe,GACPkzD,EAAgBlzD,EAClB,CACF,GACF,CAEA,SAASmzD,EAAoBC,GAC3B,IAAIC,EAAUD,EAAaE,SAC3B,QAAgBh0D,IAAZ+zD,IACJD,EAAaE,cAAWh0D,EAEnB+zD,GAIL,IACE,GAAuB,mBAAZA,EACTA,QACK,CACL,IAAIxU,EAAcgU,EAAUQ,EAAS,eAEjCxU,GACFA,EAAY96C,KAAKsvD,EAErB,CACF,CAAE,MAAOrzD,GACPkzD,EAAgBlzD,EAClB,CACF,CAEA,SAASuzD,EAAkBH,GACzBA,EAAaI,eAAYl0D,EACzB8zD,EAAaK,YAASn0D,EACtB8zD,EAAaM,OAAS,QACxB,CAkBA,SAASC,EAAmBP,EAAchnD,EAAMpD,GAC9CoqD,EAAaM,OAAS,UACtB,IAAIE,EAAWR,EAAaI,UAE5B,IACE,IAAIhzD,EAAIqyD,EAAUe,EAAUxnD,GAE5B,OAAQA,GACN,IAAK,OACC5L,GAAGA,EAAEuD,KAAK6vD,EAAU5qD,GACxB,MAEF,IAAK,QAEH,GADAuqD,EAAkBH,IACd5yD,EAAgC,MAAMwI,EAAnCxI,EAAEuD,KAAK6vD,EAAU5qD,GACxB,MAEF,IAAK,WACHuqD,EAAkBH,GACd5yD,GAAGA,EAAEuD,KAAK6vD,GAGpB,CAAE,MAAO5zD,GACPkzD,EAAgBlzD,EAClB,CAE4B,WAAxBozD,EAAaM,OAAqBP,EAAoBC,GAA+C,YAAxBA,EAAaM,SAAsBN,EAAaM,OAAS,QAC5I,CAEA,SAASG,EAAST,EAAchnD,EAAMpD,GACpC,GAA4B,WAAxBoqD,EAAaM,OAAjB,CAEA,GAA4B,cAAxBN,EAAaM,OASjB,MAA4B,UAAxBN,EAAaM,QACfN,EAAaM,OAAS,YACtBN,EAAaK,OAAS,CAAC,CACrBrnD,KAAMA,EACNpD,MAAOA,SAETy4C,GAAQ,WACN,OAhEN,SAA2B2R,GACzB,IAAIU,EAAQV,EAAaK,OAEzB,GAAKK,EAAL,CAIAV,EAAaK,YAASn0D,EACtB8zD,EAAaM,OAAS,QAEtB,IAAK,IAAItpD,EAAI,EAAGA,EAAI0pD,EAAM1yD,SACxBuyD,EAAmBP,EAAcU,EAAM1pD,GAAGgC,KAAM0nD,EAAM1pD,GAAGpB,OAC7B,WAAxBoqD,EAAaM,UAFiBtpD,GALpC,CASF,CAkDa2pD,CAAkBX,EAC3B,UAIFO,EAAmBP,EAAchnD,EAAMpD,GApBrCoqD,EAAaK,OAAO1qD,KAAK,CACvBqD,KAAMA,EACNpD,MAAOA,GALiC,CAwB9C,CAEA,IAAIgrD,EAA4B,WAC9B,SAASA,EAAaJ,EAAUK,GAG9BxsD,KAAK6rD,cAAWh0D,EAChBmI,KAAK+rD,UAAYI,EACjBnsD,KAAKgsD,YAASn0D,EACdmI,KAAKisD,OAAS,eACd,IAAIQ,EAAuB,IAAIC,EAAqB1sD,MAEpD,IACEA,KAAK6rD,SAAWW,EAAWlwD,UAAKzE,EAAW40D,EAC7C,CAAE,MAAOl0D,GACPk0D,EAAqBhrD,MAAMlJ,EAC7B,CAEoB,iBAAhByH,KAAKisD,SAA2BjsD,KAAKisD,OAAS,QACpD,CAkBA,OAhBaM,EAAapsD,UAEnBi3C,YAAc,WACC,WAAhBp3C,KAAKisD,SACPH,EAAkB9rD,MAClB0rD,EAAoB1rD,MAExB,EAEAi9B,EAAasvB,EAAc,CAAC,CAC1BhqD,IAAK,SACL8Y,IAAK,WACH,MAAuB,WAAhBrb,KAAKisD,MACd,KAGKM,CACT,CApCgC,GAsC5BG,EAAoC,WACtC,SAASA,EAAqBf,GAC5B3rD,KAAK2sD,cAAgBhB,CACvB,CAEA,IAAIiB,EAAUF,EAAqBvsD,UAqBnC,OAnBAysD,EAAQ7gC,KAAO,SAAcxqB,GAC3B6qD,EAASpsD,KAAK2sD,cAAe,OAAQprD,EACvC,EAEAqrD,EAAQnrD,MAAQ,SAAeF,GAC7B6qD,EAASpsD,KAAK2sD,cAAe,QAASprD,EACxC,EAEAqrD,EAAQvwB,SAAW,WACjB+vB,EAASpsD,KAAK2sD,cAAe,WAC/B,EAEA1vB,EAAayvB,EAAsB,CAAC,CAClCnqD,IAAK,SACL8Y,IAAK,WACH,MAAqC,WAA9Brb,KAAK2sD,cAAcV,MAC5B,KAGKS,CACT,CA3BwC,GA6BpCnB,EAA0B,WAC5B,SAASA,EAAWiB,GAClB,KAAMxsD,gBAAgBurD,GAAa,MAAM,IAAItyC,UAAU,6CACvD,GAA0B,mBAAfuzC,EAA2B,MAAM,IAAIvzC,UAAU,6CAC1DjZ,KAAK6sD,YAAcL,CACrB,CAEA,IAAIM,EAAUvB,EAAWprD,UAsTzB,OApTA2sD,EAAQtU,UAAY,SAAmB2T,GASrC,MARwB,iBAAbA,GAAsC,OAAbA,IAClCA,EAAW,CACTpgC,KAAMogC,EACN1qD,MAAOY,UAAU,GACjBg6B,SAAUh6B,UAAU,KAIjB,IAAIkqD,EAAaJ,EAAUnsD,KAAK6sD,YACzC,EAEAC,EAAQ17C,QAAU,SAAiB5Z,GACjC,IAAIuI,EAAQC,KAEZ,OAAO,IAAIY,SAAQ,SAAUoW,EAASE,GACpC,GAAkB,mBAAP1f,EAUX,IAAIm0D,EAAe5rD,EAAMy4C,UAAU,CACjCzsB,KAAM,SAAUxqB,GACd,IACE/J,EAAG+J,EAAOyqB,EACZ,CAAE,MAAOzzB,GACP2e,EAAO3e,GACPozD,EAAavU,aACf,CACF,EACA31C,MAAOyV,EACPmlB,SAAUrlB,SAnBVE,EAAO,IAAI+B,UAAUzhB,EAAK,uBAI5B,SAASw0B,IACP2/B,EAAavU,cACbpgC,GACF,CAcF,GACF,EAEA81C,EAAQhsD,IAAM,SAAatJ,GACzB,IAAI8rB,EAAStjB,KAEb,GAAkB,mBAAPxI,EAAmB,MAAM,IAAIyhB,UAAUzhB,EAAK,sBAEvD,OAAO,IADC6zD,EAAWrrD,MACZ,EAAM,SAAUmsD,GACrB,OAAO7oC,EAAOk1B,UAAU,CACtBzsB,KAAM,SAAUxqB,GACd,IACEA,EAAQ/J,EAAG+J,EACb,CAAE,MAAOhJ,GACP,OAAO4zD,EAAS1qD,MAAMlJ,EACxB,CAEA4zD,EAASpgC,KAAKxqB,EAChB,EACAE,MAAO,SAAUlJ,GACf4zD,EAAS1qD,MAAMlJ,EACjB,EACA8jC,SAAU,WACR8vB,EAAS9vB,UACX,GAEJ,GACF,EAEAywB,EAAQn6C,OAAS,SAAgBnb,GAC/B,IAAIu1D,EAAS/sD,KAEb,GAAkB,mBAAPxI,EAAmB,MAAM,IAAIyhB,UAAUzhB,EAAK,sBAEvD,OAAO,IADC6zD,EAAWrrD,MACZ,EAAM,SAAUmsD,GACrB,OAAOY,EAAOvU,UAAU,CACtBzsB,KAAM,SAAUxqB,GACd,IACE,IAAK/J,EAAG+J,GAAQ,MAClB,CAAE,MAAOhJ,GACP,OAAO4zD,EAAS1qD,MAAMlJ,EACxB,CAEA4zD,EAASpgC,KAAKxqB,EAChB,EACAE,MAAO,SAAUlJ,GACf4zD,EAAS1qD,MAAMlJ,EACjB,EACA8jC,SAAU,WACR8vB,EAAS9vB,UACX,GAEJ,GACF,EAEAywB,EAAQ7pD,OAAS,SAAgBzL,GAC/B,IAAIw1D,EAAShtD,KAEb,GAAkB,mBAAPxI,EAAmB,MAAM,IAAIyhB,UAAUzhB,EAAK,sBACvD,IAAIsB,EAAIuyD,EAAWrrD,MACfitD,EAAU5qD,UAAU1I,OAAS,EAC7BorD,GAAW,EAEXmI,EADO7qD,UAAU,GAErB,OAAO,IAAIvJ,GAAE,SAAUqzD,GACrB,OAAOa,EAAOxU,UAAU,CACtBzsB,KAAM,SAAUxqB,GACd,IAAIkQ,GAASszC,EAGb,GAFAA,GAAW,GAENtzC,GAASw7C,EACZ,IACEC,EAAM11D,EAAG01D,EAAK3rD,EAChB,CAAE,MAAOhJ,GACP,OAAO4zD,EAAS1qD,MAAMlJ,EACxB,MAEA20D,EAAM3rD,CAEV,EACAE,MAAO,SAAUlJ,GACf4zD,EAAS1qD,MAAMlJ,EACjB,EACA8jC,SAAU,WACR,IAAK0oB,IAAakI,EAAS,OAAOd,EAAS1qD,MAAM,IAAIwX,UAAU,oCAC/DkzC,EAASpgC,KAAKmhC,GACdf,EAAS9vB,UACX,GAEJ,GACF,EAEAywB,EAAQprD,OAAS,WAGf,IAFA,IAAIyrD,EAASntD,KAEJmY,EAAO9V,UAAU1I,OAAQ2G,EAAU,IAAIoI,MAAMyP,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAClF/X,EAAQ+X,GAAQhW,UAAUgW,GAG5B,IAAIvf,EAAIuyD,EAAWrrD,MACnB,OAAO,IAAIlH,GAAE,SAAUqzD,GACrB,IAAIR,EACAn/C,EAAQ,EAsBZ,OApBA,SAAS4gD,EAAUrhC,GACjB4/B,EAAe5/B,EAAKysB,UAAU,CAC5BzsB,KAAM,SAAU9yB,GACdkzD,EAASpgC,KAAK9yB,EAChB,EACAwI,MAAO,SAAUlJ,GACf4zD,EAAS1qD,MAAMlJ,EACjB,EACA8jC,SAAU,WACJ7vB,IAAUlM,EAAQ3G,QACpBgyD,OAAe9zD,EACfs0D,EAAS9vB,YAET+wB,EAAUt0D,EAAEsc,KAAK9U,EAAQkM,MAE7B,GAEJ,CAEA4gD,CAAUD,GACH,WACDxB,IACFA,EAAavU,cACbuU,OAAe9zD,EAEnB,CACF,GACF,EAEAi1D,EAAQO,QAAU,SAAiB71D,GACjC,IAAI81D,EAASttD,KAEb,GAAkB,mBAAPxI,EAAmB,MAAM,IAAIyhB,UAAUzhB,EAAK,sBACvD,IAAIsB,EAAIuyD,EAAWrrD,MACnB,OAAO,IAAIlH,GAAE,SAAUqzD,GACrB,IAAIoB,EAAgB,GAEhBC,EAAQF,EAAO9U,UAAU,CAC3BzsB,KAAM,SAAUxqB,GACd,GAAI/J,EACF,IACE+J,EAAQ/J,EAAG+J,EACb,CAAE,MAAOhJ,GACP,OAAO4zD,EAAS1qD,MAAMlJ,EACxB,CAGF,IAAIk1D,EAAQ30D,EAAEsc,KAAK7T,GAAOi3C,UAAU,CAClCzsB,KAAM,SAAUxqB,GACd4qD,EAASpgC,KAAKxqB,EAChB,EACAE,MAAO,SAAUlJ,GACf4zD,EAAS1qD,MAAMlJ,EACjB,EACA8jC,SAAU,WACR,IAAI15B,EAAI4qD,EAAc5xD,QAAQ8xD,GAC1B9qD,GAAK,GAAG4qD,EAAcjO,OAAO38C,EAAG,GACpC+qD,GACF,IAEFH,EAAcjsD,KAAKmsD,EACrB,EACAhsD,MAAO,SAAUlJ,GACf4zD,EAAS1qD,MAAMlJ,EACjB,EACA8jC,SAAU,WACRqxB,GACF,IAGF,SAASA,IACHF,EAAMG,QAAmC,IAAzBJ,EAAc5zD,QAAcwyD,EAAS9vB,UAC3D,CAEA,OAAO,WACLkxB,EAAcn8C,SAAQ,SAAUoB,GAC9B,OAAOA,EAAE4kC,aACX,IACAoW,EAAMpW,aACR,CACF,GACF,EAEA0V,EAAQ5B,GAAoB,WAC1B,OAAOlrD,IACT,EAEAurD,EAAWn2C,KAAO,SAAcjc,GAC9B,IAAIL,EAAoB,mBAATkH,KAAsBA,KAAOurD,EAC5C,GAAS,MAALpyD,EAAW,MAAM,IAAI8f,UAAU9f,EAAI,qBACvC,IAAIuhC,EAAS0wB,EAAUjyD,EAAG+xD,GAE1B,GAAIxwB,EAAQ,CACV,IAAIswB,EAAatwB,EAAOp+B,KAAKnD,GAC7B,GAAIzB,OAAOszD,KAAgBA,EAAY,MAAM,IAAI/xC,UAAU+xC,EAAa,qBACxE,OAAIQ,EAAaR,IAAeA,EAAWtsC,cAAgB5lB,EAAUkyD,EAC9D,IAAIlyD,GAAE,SAAUqzD,GACrB,OAAOnB,EAAWxS,UAAU2T,EAC9B,GACF,CAEA,GAAI9/B,EAAU,cACZqO,EAAS0wB,EAAUjyD,EAAG8xD,IAGpB,OAAO,IAAInyD,GAAE,SAAUqzD,GACrBnS,GAAQ,WACN,IAAImS,EAASwB,OAAb,CAEA,IAAK,IAAiEC,EAA7DC,EAzfrB,SAAyCrvC,EAAGsvC,GAAkB,IAAIC,EAAuB,oBAAXr3C,QAA0B8H,EAAE9H,OAAO+H,WAAaD,EAAE,cAAe,GAAIuvC,EAAI,OAAQA,EAAKA,EAAGzxD,KAAKkiB,IAAIuN,KAAK1iB,KAAK0kD,GAAK,GAAIrlD,MAAMC,QAAQ6V,KAAOuvC,EAExN,SAAqCvvC,EAAGwvC,GAAU,GAAKxvC,EAAL,CAAgB,GAAiB,iBAANA,EAAgB,OAAOoe,EAAkBpe,EAAGwvC,GAAS,IAAI90D,EAAIxB,OAAOyI,UAAUkH,SAAS/K,KAAKkiB,GAAGzO,MAAM,GAAI,GAAiE,MAAnD,WAAN7W,GAAkBslB,EAAEE,cAAaxlB,EAAIslB,EAAEE,YAAYze,MAAgB,QAAN/G,GAAqB,QAANA,EAAoBwP,MAAM0M,KAAKoJ,GAAc,cAANtlB,GAAqB,2CAA2CjB,KAAKiB,GAAW0jC,EAAkBpe,EAAGwvC,QAAzG,CAA7O,CAA+V,CAFlMhwB,CAA4Bxf,KAAOsvC,GAAkBtvC,GAAyB,iBAAbA,EAAE7kB,OAAqB,CAAMo0D,IAAIvvC,EAAIuvC,GAAI,IAAIprD,EAAI,EAAG,OAAO,WAAc,OAAIA,GAAK6b,EAAE7kB,OAAe,CAAEqyB,MAAM,GAAe,CAAEA,MAAM,EAAOzqB,MAAOid,EAAE7b,KAAQ,CAAG,CAAE,MAAM,IAAIsW,UAAU,wIAA0I,CAyf1jBg1C,CAAgCvzB,EAAOp+B,KAAKnD,MAAcy0D,EAAQC,KAAa7hC,MAAO,CACzG,IAAIw5B,EAAOoI,EAAMrsD,MAEjB,GADA4qD,EAASpgC,KAAKy5B,GACV2G,EAASwB,OAAQ,MACvB,CAEAxB,EAAS9vB,UARkB,CAS7B,GACF,IAIJ,GAAI3zB,MAAMC,QAAQxP,GAChB,OAAO,IAAIL,GAAE,SAAUqzD,GACrBnS,GAAQ,WACN,IAAImS,EAASwB,OAAb,CAEA,IAAK,IAAIhrD,EAAI,EAAGA,EAAIxJ,EAAEQ,SAAUgJ,EAE9B,GADAwpD,EAASpgC,KAAK5yB,EAAEwJ,IACZwpD,EAASwB,OAAQ,OAGvBxB,EAAS9vB,UAPkB,CAQ7B,GACF,IAGF,MAAM,IAAIpjB,UAAU9f,EAAI,qBAC1B,EAEAoyD,EAAW2C,GAAK,WACd,IAAK,IAAIC,EAAQ9rD,UAAU1I,OAAQy0D,EAAQ,IAAI1lD,MAAMylD,GAAQE,EAAQ,EAAGA,EAAQF,EAAOE,IACrFD,EAAMC,GAAShsD,UAAUgsD,GAI3B,OAAO,IADiB,mBAATruD,KAAsBA,KAAOurD,IAC/B,SAAUY,GACrBnS,GAAQ,WACN,IAAImS,EAASwB,OAAb,CAEA,IAAK,IAAIhrD,EAAI,EAAGA,EAAIyrD,EAAMz0D,SAAUgJ,EAElC,GADAwpD,EAASpgC,KAAKqiC,EAAMzrD,IAChBwpD,EAASwB,OAAQ,OAGvBxB,EAAS9vB,UAPkB,CAQ7B,GACF,GACF,EAEAY,EAAasuB,EAAY,KAAM,CAAC,CAC9BhpD,IAAK4oD,EACL9vC,IAAK,WACH,OAAOrb,IACT,KAGKurD,CACT,CA9T8B,GAgU1BT,KACFpzD,OAAOimB,eAAe4tC,EAAY70C,OAAO,cAAe,CACtDnV,MAAO,CACLunB,OAAQoiC,EACRO,gBAAiBA,GAEnB1sC,cAAc","sources":["webpack://pc-frontend-respond/./node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","webpack://pc-frontend-respond/./node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","webpack://pc-frontend-respond/./node_modules/@emotion/stylis/dist/stylis.browser.esm.js","webpack://pc-frontend-respond/./node_modules/@emotion/unitless/dist/unitless.browser.esm.js","webpack://pc-frontend-respond/./node_modules/@fingerprintjs/botd/dist/botd.esm.js","webpack://pc-frontend-respond/./node_modules/@remix-run/router/dist/router.js","webpack://pc-frontend-respond/./node_modules/@stripe/stripe-js/dist/stripe.esm.js","webpack://pc-frontend-respond/./node_modules/dataloader/index.js","webpack://pc-frontend-respond/./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack://pc-frontend-respond/./node_modules/i18next-browser-languagedetector/node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://pc-frontend-respond/./node_modules/i18next-browser-languagedetector/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://pc-frontend-respond/./node_modules/i18next-browser-languagedetector/node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://pc-frontend-respond/./node_modules/i18next-browser-languagedetector/node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://pc-frontend-respond/./node_modules/i18next-browser-languagedetector/dist/esm/i18nextBrowserLanguageDetector.js","webpack://pc-frontend-respond/./node_modules/i18next-browser-languagedetector/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://pc-frontend-respond/./node_modules/react-responsive/dist/react-responsive.js","webpack://pc-frontend-respond/./node_modules/react-router-dom/dist/index.js","webpack://pc-frontend-respond/./node_modules/rehackt/index.js","webpack://pc-frontend-respond/./node_modules/scheduler/cjs/scheduler.production.min.js","webpack://pc-frontend-respond/./node_modules/scheduler/index.js","webpack://pc-frontend-respond/./node_modules/shallowequal/index.js","webpack://pc-frontend-respond/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://pc-frontend-respond/./node_modules/@babel/runtime/helpers/typeof.js","webpack://pc-frontend-respond/./node_modules/@babel/runtime/regenerator/index.js","webpack://pc-frontend-respond/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://pc-frontend-respond/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://pc-frontend-respond/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://pc-frontend-respond/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://pc-frontend-respond/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://pc-frontend-respond/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://pc-frontend-respond/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://pc-frontend-respond/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://pc-frontend-respond/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://pc-frontend-respond/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://pc-frontend-respond/./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://pc-frontend-respond/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://pc-frontend-respond/./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://pc-frontend-respond/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://pc-frontend-respond/./node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","webpack://pc-frontend-respond/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://pc-frontend-respond/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://pc-frontend-respond/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://pc-frontend-respond/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://pc-frontend-respond/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://pc-frontend-respond/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://pc-frontend-respond/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://pc-frontend-respond/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://pc-frontend-respond/./node_modules/@wry/caches/lib/strong.js","webpack://pc-frontend-respond/./node_modules/@wry/caches/lib/weak.js","webpack://pc-frontend-respond/./node_modules/@wry/equality/lib/index.js","webpack://pc-frontend-respond/./node_modules/@wry/trie/lib/index.js","webpack://pc-frontend-respond/./node_modules/axios/lib/helpers/bind.js","webpack://pc-frontend-respond/./node_modules/axios/lib/utils.js","webpack://pc-frontend-respond/./node_modules/axios/lib/core/AxiosError.js","webpack://pc-frontend-respond/./node_modules/axios/lib/helpers/toFormData.js","webpack://pc-frontend-respond/./node_modules/axios/lib/helpers/AxiosURLSearchParams.js","webpack://pc-frontend-respond/./node_modules/axios/lib/helpers/buildURL.js","webpack://pc-frontend-respond/./node_modules/axios/lib/core/InterceptorManager.js","webpack://pc-frontend-respond/./node_modules/axios/lib/defaults/transitional.js","webpack://pc-frontend-respond/./node_modules/axios/lib/platform/browser/index.js","webpack://pc-frontend-respond/./node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","webpack://pc-frontend-respond/./node_modules/axios/lib/platform/browser/classes/FormData.js","webpack://pc-frontend-respond/./node_modules/axios/lib/platform/browser/classes/Blob.js","webpack://pc-frontend-respond/./node_modules/axios/lib/platform/common/utils.js","webpack://pc-frontend-respond/./node_modules/axios/lib/platform/index.js","webpack://pc-frontend-respond/./node_modules/axios/lib/helpers/formDataToJSON.js","webpack://pc-frontend-respond/./node_modules/axios/lib/defaults/index.js","webpack://pc-frontend-respond/./node_modules/axios/lib/helpers/toURLEncodedForm.js","webpack://pc-frontend-respond/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://pc-frontend-respond/./node_modules/axios/lib/core/AxiosHeaders.js","webpack://pc-frontend-respond/./node_modules/axios/lib/core/transformData.js","webpack://pc-frontend-respond/./node_modules/axios/lib/cancel/isCancel.js","webpack://pc-frontend-respond/./node_modules/axios/lib/cancel/CanceledError.js","webpack://pc-frontend-respond/./node_modules/axios/lib/core/settle.js","webpack://pc-frontend-respond/./node_modules/axios/lib/helpers/speedometer.js","webpack://pc-frontend-respond/./node_modules/axios/lib/helpers/progressEventReducer.js","webpack://pc-frontend-respond/./node_modules/axios/lib/helpers/throttle.js","webpack://pc-frontend-respond/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://pc-frontend-respond/./node_modules/axios/lib/helpers/cookies.js","webpack://pc-frontend-respond/./node_modules/axios/lib/core/buildFullPath.js","webpack://pc-frontend-respond/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://pc-frontend-respond/./node_modules/axios/lib/helpers/combineURLs.js","webpack://pc-frontend-respond/./node_modules/axios/lib/core/mergeConfig.js","webpack://pc-frontend-respond/./node_modules/axios/lib/helpers/resolveConfig.js","webpack://pc-frontend-respond/./node_modules/axios/lib/adapters/xhr.js","webpack://pc-frontend-respond/./node_modules/axios/lib/helpers/parseProtocol.js","webpack://pc-frontend-respond/./node_modules/axios/lib/helpers/composeSignals.js","webpack://pc-frontend-respond/./node_modules/axios/lib/helpers/trackStream.js","webpack://pc-frontend-respond/./node_modules/axios/lib/adapters/fetch.js","webpack://pc-frontend-respond/./node_modules/axios/lib/adapters/adapters.js","webpack://pc-frontend-respond/./node_modules/axios/lib/helpers/null.js","webpack://pc-frontend-respond/./node_modules/axios/lib/core/dispatchRequest.js","webpack://pc-frontend-respond/./node_modules/axios/lib/env/data.js","webpack://pc-frontend-respond/./node_modules/axios/lib/helpers/validator.js","webpack://pc-frontend-respond/./node_modules/axios/lib/core/Axios.js","webpack://pc-frontend-respond/./node_modules/axios/lib/cancel/CancelToken.js","webpack://pc-frontend-respond/./node_modules/axios/lib/helpers/HttpStatusCode.js","webpack://pc-frontend-respond/./node_modules/axios/lib/axios.js","webpack://pc-frontend-respond/./node_modules/axios/lib/helpers/spread.js","webpack://pc-frontend-respond/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://pc-frontend-respond/./node_modules/i18next-resources-to-backend/dist/esm/index.js","webpack://pc-frontend-respond/./node_modules/optimism/node_modules/@wry/trie/lib/index.js","webpack://pc-frontend-respond/./node_modules/@wry/context/lib/slot.js","webpack://pc-frontend-respond/./node_modules/@wry/context/lib/index.js","webpack://pc-frontend-respond/./node_modules/optimism/lib/context.js","webpack://pc-frontend-respond/./node_modules/optimism/lib/helpers.js","webpack://pc-frontend-respond/./node_modules/optimism/lib/entry.js","webpack://pc-frontend-respond/./node_modules/optimism/lib/dep.js","webpack://pc-frontend-respond/./node_modules/optimism/lib/index.js","webpack://pc-frontend-respond/./node_modules/ts-invariant/lib/invariant.js","webpack://pc-frontend-respond/./node_modules/tslib/tslib.es6.mjs","webpack://pc-frontend-respond/./node_modules/zen-observable-ts/module.js"],"sourcesContent":["function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport { memoize as default };\n","import memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport { isPropValid as default };\n","function stylis_min (W) {\n function M(d, c, e, h, a) {\n for (var m = 0, b = 0, v = 0, n = 0, q, g, x = 0, K = 0, k, u = k = q = 0, l = 0, r = 0, I = 0, t = 0, B = e.length, J = B - 1, y, f = '', p = '', F = '', G = '', C; l < B;) {\n g = e.charCodeAt(l);\n l === J && 0 !== b + n + v + m && (0 !== b && (g = 47 === b ? 10 : 47), n = v = m = 0, B++, J++);\n\n if (0 === b + n + v + m) {\n if (l === J && (0 < r && (f = f.replace(N, '')), 0 < f.trim().length)) {\n switch (g) {\n case 32:\n case 9:\n case 59:\n case 13:\n case 10:\n break;\n\n default:\n f += e.charAt(l);\n }\n\n g = 59;\n }\n\n switch (g) {\n case 123:\n f = f.trim();\n q = f.charCodeAt(0);\n k = 1;\n\n for (t = ++l; l < B;) {\n switch (g = e.charCodeAt(l)) {\n case 123:\n k++;\n break;\n\n case 125:\n k--;\n break;\n\n case 47:\n switch (g = e.charCodeAt(l + 1)) {\n case 42:\n case 47:\n a: {\n for (u = l + 1; u < J; ++u) {\n switch (e.charCodeAt(u)) {\n case 47:\n if (42 === g && 42 === e.charCodeAt(u - 1) && l + 2 !== u) {\n l = u + 1;\n break a;\n }\n\n break;\n\n case 10:\n if (47 === g) {\n l = u + 1;\n break a;\n }\n\n }\n }\n\n l = u;\n }\n\n }\n\n break;\n\n case 91:\n g++;\n\n case 40:\n g++;\n\n case 34:\n case 39:\n for (; l++ < J && e.charCodeAt(l) !== g;) {\n }\n\n }\n\n if (0 === k) break;\n l++;\n }\n\n k = e.substring(t, l);\n 0 === q && (q = (f = f.replace(ca, '').trim()).charCodeAt(0));\n\n switch (q) {\n case 64:\n 0 < r && (f = f.replace(N, ''));\n g = f.charCodeAt(1);\n\n switch (g) {\n case 100:\n case 109:\n case 115:\n case 45:\n r = c;\n break;\n\n default:\n r = O;\n }\n\n k = M(c, r, k, g, a + 1);\n t = k.length;\n 0 < A && (r = X(O, f, I), C = H(3, k, r, c, D, z, t, g, a, h), f = r.join(''), void 0 !== C && 0 === (t = (k = C.trim()).length) && (g = 0, k = ''));\n if (0 < t) switch (g) {\n case 115:\n f = f.replace(da, ea);\n\n case 100:\n case 109:\n case 45:\n k = f + '{' + k + '}';\n break;\n\n case 107:\n f = f.replace(fa, '$1 $2');\n k = f + '{' + k + '}';\n k = 1 === w || 2 === w && L('@' + k, 3) ? '@-webkit-' + k + '@' + k : '@' + k;\n break;\n\n default:\n k = f + k, 112 === h && (k = (p += k, ''));\n } else k = '';\n break;\n\n default:\n k = M(c, X(c, f, I), k, h, a + 1);\n }\n\n F += k;\n k = I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n break;\n\n case 125:\n case 59:\n f = (0 < r ? f.replace(N, '') : f).trim();\n if (1 < (t = f.length)) switch (0 === u && (q = f.charCodeAt(0), 45 === q || 96 < q && 123 > q) && (t = (f = f.replace(' ', ':')).length), 0 < A && void 0 !== (C = H(1, f, c, d, D, z, p.length, h, a, h)) && 0 === (t = (f = C.trim()).length) && (f = '\\x00\\x00'), q = f.charCodeAt(0), g = f.charCodeAt(1), q) {\n case 0:\n break;\n\n case 64:\n if (105 === g || 99 === g) {\n G += f + e.charAt(l);\n break;\n }\n\n default:\n 58 !== f.charCodeAt(t - 1) && (p += P(f, q, g, f.charCodeAt(2)));\n }\n I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n }\n }\n\n switch (g) {\n case 13:\n case 10:\n 47 === b ? b = 0 : 0 === 1 + q && 107 !== h && 0 < f.length && (r = 1, f += '\\x00');\n 0 < A * Y && H(0, f, c, d, D, z, p.length, h, a, h);\n z = 1;\n D++;\n break;\n\n case 59:\n case 125:\n if (0 === b + n + v + m) {\n z++;\n break;\n }\n\n default:\n z++;\n y = e.charAt(l);\n\n switch (g) {\n case 9:\n case 32:\n if (0 === n + m + b) switch (x) {\n case 44:\n case 58:\n case 9:\n case 32:\n y = '';\n break;\n\n default:\n 32 !== g && (y = ' ');\n }\n break;\n\n case 0:\n y = '\\\\0';\n break;\n\n case 12:\n y = '\\\\f';\n break;\n\n case 11:\n y = '\\\\v';\n break;\n\n case 38:\n 0 === n + b + m && (r = I = 1, y = '\\f' + y);\n break;\n\n case 108:\n if (0 === n + b + m + E && 0 < u) switch (l - u) {\n case 2:\n 112 === x && 58 === e.charCodeAt(l - 3) && (E = x);\n\n case 8:\n 111 === K && (E = K);\n }\n break;\n\n case 58:\n 0 === n + b + m && (u = l);\n break;\n\n case 44:\n 0 === b + v + n + m && (r = 1, y += '\\r');\n break;\n\n case 34:\n case 39:\n 0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n break;\n\n case 91:\n 0 === n + b + v && m++;\n break;\n\n case 93:\n 0 === n + b + v && m--;\n break;\n\n case 41:\n 0 === n + b + m && v--;\n break;\n\n case 40:\n if (0 === n + b + m) {\n if (0 === q) switch (2 * x + 3 * K) {\n case 533:\n break;\n\n default:\n q = 1;\n }\n v++;\n }\n\n break;\n\n case 64:\n 0 === b + v + n + m + u + k && (k = 1);\n break;\n\n case 42:\n case 47:\n if (!(0 < n + m + v)) switch (b) {\n case 0:\n switch (2 * g + 3 * e.charCodeAt(l + 1)) {\n case 235:\n b = 47;\n break;\n\n case 220:\n t = l, b = 42;\n }\n\n break;\n\n case 42:\n 47 === g && 42 === x && t + 2 !== l && (33 === e.charCodeAt(t + 2) && (p += e.substring(t, l + 1)), y = '', b = 0);\n }\n }\n\n 0 === b && (f += y);\n }\n\n K = x;\n x = g;\n l++;\n }\n\n t = p.length;\n\n if (0 < t) {\n r = c;\n if (0 < A && (C = H(2, p, r, d, D, z, t, h, a, h), void 0 !== C && 0 === (p = C).length)) return G + p + F;\n p = r.join(',') + '{' + p + '}';\n\n if (0 !== w * E) {\n 2 !== w || L(p, 2) || (E = 0);\n\n switch (E) {\n case 111:\n p = p.replace(ha, ':-moz-$1') + p;\n break;\n\n case 112:\n p = p.replace(Q, '::-webkit-input-$1') + p.replace(Q, '::-moz-$1') + p.replace(Q, ':-ms-input-$1') + p;\n }\n\n E = 0;\n }\n }\n\n return G + p + F;\n }\n\n function X(d, c, e) {\n var h = c.trim().split(ia);\n c = h;\n var a = h.length,\n m = d.length;\n\n switch (m) {\n case 0:\n case 1:\n var b = 0;\n\n for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n c[b] = Z(d, c[b], e).trim();\n }\n\n break;\n\n default:\n var v = b = 0;\n\n for (c = []; b < a; ++b) {\n for (var n = 0; n < m; ++n) {\n c[v++] = Z(d[n] + ' ', h[b], e).trim();\n }\n }\n\n }\n\n return c;\n }\n\n function Z(d, c, e) {\n var h = c.charCodeAt(0);\n 33 > h && (h = (c = c.trim()).charCodeAt(0));\n\n switch (h) {\n case 38:\n return c.replace(F, '$1' + d.trim());\n\n case 58:\n return d.trim() + c.replace(F, '$1' + d.trim());\n\n default:\n if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n }\n\n return d + c;\n }\n\n function P(d, c, e, h) {\n var a = d + ';',\n m = 2 * c + 3 * e + 4 * h;\n\n if (944 === m) {\n d = a.indexOf(':', 9) + 1;\n var b = a.substring(d, a.length - 1).trim();\n b = a.substring(0, d).trim() + b + ';';\n return 1 === w || 2 === w && L(b, 1) ? '-webkit-' + b + b : b;\n }\n\n if (0 === w || 2 === w && !L(a, 1)) return a;\n\n switch (m) {\n case 1015:\n return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n\n case 951:\n return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n\n case 963:\n return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n\n case 1009:\n if (100 !== a.charCodeAt(4)) break;\n\n case 969:\n case 942:\n return '-webkit-' + a + a;\n\n case 978:\n return '-webkit-' + a + '-moz-' + a + a;\n\n case 1019:\n case 983:\n return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n\n case 883:\n if (45 === a.charCodeAt(8)) return '-webkit-' + a + a;\n if (0 < a.indexOf('image-set(', 11)) return a.replace(ja, '$1-webkit-$2') + a;\n break;\n\n case 932:\n if (45 === a.charCodeAt(4)) switch (a.charCodeAt(5)) {\n case 103:\n return '-webkit-box-' + a.replace('-grow', '') + '-webkit-' + a + '-ms-' + a.replace('grow', 'positive') + a;\n\n case 115:\n return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n\n case 98:\n return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n }\n return '-webkit-' + a + '-ms-' + a + a;\n\n case 964:\n return '-webkit-' + a + '-ms-flex-' + a + a;\n\n case 1023:\n if (99 !== a.charCodeAt(8)) break;\n b = a.substring(a.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n return '-webkit-box-pack' + b + '-webkit-' + a + '-ms-flex-pack' + b + a;\n\n case 1005:\n return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n\n case 1e3:\n b = a.substring(13).trim();\n c = b.indexOf('-') + 1;\n\n switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n case 226:\n b = a.replace(G, 'tb');\n break;\n\n case 232:\n b = a.replace(G, 'tb-rl');\n break;\n\n case 220:\n b = a.replace(G, 'lr');\n break;\n\n default:\n return a;\n }\n\n return '-webkit-' + a + '-ms-' + b + a;\n\n case 1017:\n if (-1 === a.indexOf('sticky', 9)) break;\n\n case 975:\n c = (a = d).length - 10;\n b = (33 === a.charCodeAt(c) ? a.substring(0, c) : a).substring(d.indexOf(':', 7) + 1).trim();\n\n switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n case 203:\n if (111 > b.charCodeAt(8)) break;\n\n case 115:\n a = a.replace(b, '-webkit-' + b) + ';' + a;\n break;\n\n case 207:\n case 102:\n a = a.replace(b, '-webkit-' + (102 < m ? 'inline-' : '') + 'box') + ';' + a.replace(b, '-webkit-' + b) + ';' + a.replace(b, '-ms-' + b + 'box') + ';' + a;\n }\n\n return a + ';';\n\n case 938:\n if (45 === a.charCodeAt(5)) switch (a.charCodeAt(6)) {\n case 105:\n return b = a.replace('-items', ''), '-webkit-' + a + '-webkit-box-' + b + '-ms-flex-' + b + a;\n\n case 115:\n return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n\n default:\n return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n }\n break;\n\n case 973:\n case 989:\n if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n\n case 931:\n case 953:\n if (!0 === la.test(d)) return 115 === (b = d.substring(d.indexOf(':') + 1)).charCodeAt(0) ? P(d.replace('stretch', 'fill-available'), c, e, h).replace(':fill-available', ':stretch') : a.replace(b, '-webkit-' + b) + a.replace(b, '-moz-' + b.replace('fill-', '')) + a;\n break;\n\n case 962:\n if (a = '-webkit-' + a + (102 === a.charCodeAt(5) ? '-ms-' + a : '') + a, 211 === e + h && 105 === a.charCodeAt(13) && 0 < a.indexOf('transform', 10)) return a.substring(0, a.indexOf(';', 27) + 1).replace(ma, '$1-webkit-$2') + a;\n }\n\n return a;\n }\n\n function L(d, c) {\n var e = d.indexOf(1 === c ? ':' : '{'),\n h = d.substring(0, 3 !== c ? e : 10);\n e = d.substring(e + 1, d.length - 1);\n return R(2 !== c ? h : h.replace(na, '$1'), e, c);\n }\n\n function ea(d, c) {\n var e = P(c, c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2));\n return e !== c + ';' ? e.replace(oa, ' or ($1)').substring(4) : '(' + c + ')';\n }\n\n function H(d, c, e, h, a, m, b, v, n, q) {\n for (var g = 0, x = c, w; g < A; ++g) {\n switch (w = S[g].call(B, d, x, e, h, a, m, b, v, n, q)) {\n case void 0:\n case !1:\n case !0:\n case null:\n break;\n\n default:\n x = w;\n }\n }\n\n if (x !== c) return x;\n }\n\n function T(d) {\n switch (d) {\n case void 0:\n case null:\n A = S.length = 0;\n break;\n\n default:\n if ('function' === typeof d) S[A++] = d;else if ('object' === typeof d) for (var c = 0, e = d.length; c < e; ++c) {\n T(d[c]);\n } else Y = !!d | 0;\n }\n\n return T;\n }\n\n function U(d) {\n d = d.prefix;\n void 0 !== d && (R = null, d ? 'function' !== typeof d ? w = 1 : (w = 2, R = d) : w = 0);\n return U;\n }\n\n function B(d, c) {\n var e = d;\n 33 > e.charCodeAt(0) && (e = e.trim());\n V = e;\n e = [V];\n\n if (0 < A) {\n var h = H(-1, c, e, e, D, z, 0, 0, 0, 0);\n void 0 !== h && 'string' === typeof h && (c = h);\n }\n\n var a = M(O, e, c, 0, 0);\n 0 < A && (h = H(-2, a, e, e, D, z, a.length, 0, 0, 0), void 0 !== h && (a = h));\n V = '';\n E = 0;\n z = D = 1;\n return a;\n }\n\n var ca = /^\\0+/g,\n N = /[\\0\\r\\f]/g,\n aa = /: */g,\n ka = /zoo|gra/,\n ma = /([,: ])(transform)/g,\n ia = /,\\r+?/g,\n F = /([\\t\\r\\n ])*\\f?&/g,\n fa = /@(k\\w+)\\s*(\\S*)\\s*/,\n Q = /::(place)/g,\n ha = /:(read-only)/g,\n G = /[svh]\\w+-[tblr]{2}/,\n da = /\\(\\s*(.*)\\s*\\)/g,\n oa = /([\\s\\S]*?);/g,\n ba = /-self|flex-/g,\n na = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n la = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n ja = /([^-])(image-set\\()/,\n z = 1,\n D = 1,\n E = 0,\n w = 1,\n O = [],\n S = [],\n A = 0,\n R = null,\n Y = 0,\n V = '';\n B.use = T;\n B.set = U;\n void 0 !== W && U(W);\n return B;\n}\n\nexport default stylis_min;\n","var unitlessKeys = {\n animationIterationCount: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","/**\n * Fingerprint BotD v1.9.1 - Copyright (c) FingerprintJS, Inc, 2024 (https://fingerprint.com)\n * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license.\n */\n\nimport { __extends, __awaiter, __generator, __spreadArray } from 'tslib';\n\nvar version = \"1.9.1\";\n\n/**\n * Enum for types of bots.\n * Specific types of bots come first, followed by automation technologies.\n *\n * @readonly\n * @enum {string}\n */\nvar BotKind = {\n // Object is used instead of Typescript enum to avoid emitting IIFE which might be affected by further tree-shaking.\n // See example of compiled enums https://stackoverflow.com/q/47363996)\n Awesomium: 'awesomium',\n Cef: 'cef',\n CefSharp: 'cefsharp',\n CoachJS: 'coachjs',\n Electron: 'electron',\n FMiner: 'fminer',\n Geb: 'geb',\n NightmareJS: 'nightmarejs',\n Phantomas: 'phantomas',\n PhantomJS: 'phantomjs',\n Rhino: 'rhino',\n Selenium: 'selenium',\n Sequentum: 'sequentum',\n SlimerJS: 'slimerjs',\n WebDriverIO: 'webdriverio',\n WebDriver: 'webdriver',\n HeadlessChrome: 'headless_chrome',\n Unknown: 'unknown',\n};\n/**\n * Bot detection error.\n */\nvar BotdError = /** @class */ (function (_super) {\n __extends(BotdError, _super);\n /**\n * Creates a new BotdError.\n *\n * @class\n */\n function BotdError(state, message) {\n var _this = _super.call(this, message) || this;\n _this.state = state;\n _this.name = 'BotdError';\n Object.setPrototypeOf(_this, BotdError.prototype);\n return _this;\n }\n return BotdError;\n}(Error));\n\nfunction detect(components, detectors) {\n var detections = {};\n var finalDetection = {\n bot: false,\n };\n for (var detectorName in detectors) {\n var detector = detectors[detectorName];\n var detectorRes = detector(components);\n var detection = { bot: false };\n if (typeof detectorRes === 'string') {\n detection = { bot: true, botKind: detectorRes };\n }\n else if (detectorRes) {\n detection = { bot: true, botKind: BotKind.Unknown };\n }\n detections[detectorName] = detection;\n if (detection.bot) {\n finalDetection = detection;\n }\n }\n return [detections, finalDetection];\n}\nfunction collect(sources) {\n return __awaiter(this, void 0, void 0, function () {\n var components, sourcesKeys;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n components = {};\n sourcesKeys = Object.keys(sources);\n return [4 /*yield*/, Promise.all(sourcesKeys.map(function (sourceKey) { return __awaiter(_this, void 0, void 0, function () {\n var res, _a, _b, error_1;\n var _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n res = sources[sourceKey];\n _d.label = 1;\n case 1:\n _d.trys.push([1, 3, , 4]);\n _a = components;\n _b = sourceKey;\n _c = {};\n return [4 /*yield*/, res()];\n case 2:\n _a[_b] = (_c.value = _d.sent(),\n _c.state = 0 /* State.Success */,\n _c);\n return [3 /*break*/, 4];\n case 3:\n error_1 = _d.sent();\n if (error_1 instanceof BotdError) {\n components[sourceKey] = {\n state: error_1.state,\n error: \"\".concat(error_1.name, \": \").concat(error_1.message),\n };\n }\n else {\n components[sourceKey] = {\n state: -3 /* State.UnexpectedBehaviour */,\n error: error_1 instanceof Error ? \"\".concat(error_1.name, \": \").concat(error_1.message) : String(error_1),\n };\n }\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n }); }))];\n case 1:\n _a.sent();\n return [2 /*return*/, components];\n }\n });\n });\n}\n\nfunction detectAppVersion(_a) {\n var appVersion = _a.appVersion;\n if (appVersion.state !== 0 /* State.Success */)\n return false;\n if (/headless/i.test(appVersion.value))\n return BotKind.HeadlessChrome;\n if (/electron/i.test(appVersion.value))\n return BotKind.Electron;\n if (/slimerjs/i.test(appVersion.value))\n return BotKind.SlimerJS;\n}\n\nfunction arrayIncludes(arr, value) {\n return arr.indexOf(value) !== -1;\n}\nfunction strIncludes(str, value) {\n return str.indexOf(value) !== -1;\n}\nfunction arrayFind(array, callback) {\n if ('find' in array)\n return array.find(callback);\n for (var i = 0; i < array.length; i++) {\n if (callback(array[i], i, array))\n return array[i];\n }\n return undefined;\n}\n\nfunction getObjectProps(obj) {\n return Object.getOwnPropertyNames(obj);\n}\nfunction includes(arr) {\n var keys = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n keys[_i - 1] = arguments[_i];\n }\n var _loop_1 = function (key) {\n if (typeof key === 'string') {\n if (arrayIncludes(arr, key))\n return { value: true };\n }\n else {\n var match = arrayFind(arr, function (value) { return key.test(value); });\n if (match != null)\n return { value: true };\n }\n };\n for (var _a = 0, keys_1 = keys; _a < keys_1.length; _a++) {\n var key = keys_1[_a];\n var state_1 = _loop_1(key);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n return false;\n}\nfunction countTruthy(values) {\n return values.reduce(function (sum, value) { return sum + (value ? 1 : 0); }, 0);\n}\n\nfunction detectDocumentAttributes(_a) {\n var documentElementKeys = _a.documentElementKeys;\n if (documentElementKeys.state !== 0 /* State.Success */)\n return false;\n if (includes(documentElementKeys.value, 'selenium', 'webdriver', 'driver')) {\n return BotKind.Selenium;\n }\n}\n\nfunction detectErrorTrace(_a) {\n var errorTrace = _a.errorTrace;\n if (errorTrace.state !== 0 /* State.Success */)\n return false;\n if (/PhantomJS/i.test(errorTrace.value))\n return BotKind.PhantomJS;\n}\n\nfunction detectEvalLengthInconsistency(_a) {\n var evalLength = _a.evalLength, browserKind = _a.browserKind, browserEngineKind = _a.browserEngineKind;\n if (evalLength.state !== 0 /* State.Success */ ||\n browserKind.state !== 0 /* State.Success */ ||\n browserEngineKind.state !== 0 /* State.Success */)\n return;\n var length = evalLength.value;\n if (browserEngineKind.value === \"unknown\" /* BrowserEngineKind.Unknown */)\n return false;\n return ((length === 37 && !arrayIncludes([\"webkit\" /* BrowserEngineKind.Webkit */, \"gecko\" /* BrowserEngineKind.Gecko */], browserEngineKind.value)) ||\n (length === 39 && !arrayIncludes([\"internet_explorer\" /* BrowserKind.IE */], browserKind.value)) ||\n (length === 33 && !arrayIncludes([\"chromium\" /* BrowserEngineKind.Chromium */], browserEngineKind.value)));\n}\n\nfunction detectFunctionBind(_a) {\n var functionBind = _a.functionBind;\n if (functionBind.state === -2 /* State.NotFunction */)\n return BotKind.PhantomJS;\n}\n\nfunction detectLanguagesLengthInconsistency(_a) {\n var languages = _a.languages;\n if (languages.state === 0 /* State.Success */ && languages.value.length === 0) {\n return BotKind.HeadlessChrome;\n }\n}\n\nfunction detectMimeTypesConsistent(_a) {\n var mimeTypesConsistent = _a.mimeTypesConsistent;\n if (mimeTypesConsistent.state === 0 /* State.Success */ && !mimeTypesConsistent.value) {\n return BotKind.Unknown;\n }\n}\n\nfunction detectNotificationPermissions(_a) {\n var notificationPermissions = _a.notificationPermissions, browserKind = _a.browserKind;\n if (browserKind.state !== 0 /* State.Success */ || browserKind.value !== \"chrome\" /* BrowserKind.Chrome */)\n return false;\n if (notificationPermissions.state === 0 /* State.Success */ && notificationPermissions.value) {\n return BotKind.HeadlessChrome;\n }\n}\n\nfunction detectPluginsArray(_a) {\n var pluginsArray = _a.pluginsArray;\n if (pluginsArray.state === 0 /* State.Success */ && !pluginsArray.value)\n return BotKind.HeadlessChrome;\n}\n\nfunction detectPluginsLengthInconsistency(_a) {\n var pluginsLength = _a.pluginsLength, android = _a.android, browserKind = _a.browserKind, browserEngineKind = _a.browserEngineKind;\n if (pluginsLength.state !== 0 /* State.Success */ ||\n android.state !== 0 /* State.Success */ ||\n browserKind.state !== 0 /* State.Success */ ||\n browserEngineKind.state !== 0 /* State.Success */)\n return;\n if (browserKind.value !== \"chrome\" /* BrowserKind.Chrome */ ||\n android.value ||\n browserEngineKind.value !== \"chromium\" /* BrowserEngineKind.Chromium */)\n return;\n if (pluginsLength.value === 0)\n return BotKind.HeadlessChrome;\n}\n\nfunction detectProcess(_a) {\n var _b;\n var process = _a.process;\n if (process.state !== 0 /* State.Success */)\n return false;\n if (process.value.type === 'renderer' || ((_b = process.value.versions) === null || _b === void 0 ? void 0 : _b.electron) != null)\n return BotKind.Electron;\n}\n\nfunction detectProductSub(_a) {\n var productSub = _a.productSub, browserKind = _a.browserKind;\n if (productSub.state !== 0 /* State.Success */ || browserKind.state !== 0 /* State.Success */)\n return false;\n if ((browserKind.value === \"chrome\" /* BrowserKind.Chrome */ ||\n browserKind.value === \"safari\" /* BrowserKind.Safari */ ||\n browserKind.value === \"opera\" /* BrowserKind.Opera */ ||\n browserKind.value === \"wechat\" /* BrowserKind.WeChat */) &&\n productSub.value !== '20030107')\n return BotKind.Unknown;\n}\n\nfunction detectUserAgent(_a) {\n var userAgent = _a.userAgent;\n if (userAgent.state !== 0 /* State.Success */)\n return false;\n if (/PhantomJS/i.test(userAgent.value))\n return BotKind.PhantomJS;\n if (/Headless/i.test(userAgent.value))\n return BotKind.HeadlessChrome;\n if (/Electron/i.test(userAgent.value))\n return BotKind.Electron;\n if (/slimerjs/i.test(userAgent.value))\n return BotKind.SlimerJS;\n}\n\nfunction detectWebDriver(_a) {\n var webDriver = _a.webDriver;\n if (webDriver.state === 0 /* State.Success */ && webDriver.value)\n return BotKind.HeadlessChrome;\n}\n\nfunction detectWebGL(_a) {\n var webGL = _a.webGL;\n if (webGL.state === 0 /* State.Success */) {\n var _b = webGL.value, vendor = _b.vendor, renderer = _b.renderer;\n if (vendor == 'Brian Paul' && renderer == 'Mesa OffScreen') {\n return BotKind.HeadlessChrome;\n }\n }\n}\n\nfunction detectWindowExternal(_a) {\n var windowExternal = _a.windowExternal;\n if (windowExternal.state !== 0 /* State.Success */)\n return false;\n if (/Sequentum/i.test(windowExternal.value))\n return BotKind.Sequentum;\n}\n\nfunction detectWindowSize(_a) {\n var windowSize = _a.windowSize, documentFocus = _a.documentFocus;\n if (windowSize.state !== 0 /* State.Success */ || documentFocus.state !== 0 /* State.Success */)\n return false;\n var _b = windowSize.value, outerWidth = _b.outerWidth, outerHeight = _b.outerHeight;\n // When a page is opened in a new tab without focusing it right away, the window outer size is 0x0\n if (!documentFocus.value)\n return;\n if (outerWidth === 0 && outerHeight === 0)\n return BotKind.HeadlessChrome;\n}\n\nfunction detectDistinctiveProperties(_a) {\n var distinctiveProps = _a.distinctiveProps;\n if (distinctiveProps.state !== 0 /* State.Success */)\n return false;\n var value = distinctiveProps.value;\n var bot;\n for (bot in value)\n if (value[bot])\n return bot;\n}\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nvar detectors = {\n detectAppVersion: detectAppVersion,\n detectDocumentAttributes: detectDocumentAttributes,\n detectErrorTrace: detectErrorTrace,\n detectEvalLengthInconsistency: detectEvalLengthInconsistency,\n detectFunctionBind: detectFunctionBind,\n detectLanguagesLengthInconsistency: detectLanguagesLengthInconsistency,\n detectNotificationPermissions: detectNotificationPermissions,\n detectPluginsArray: detectPluginsArray,\n detectPluginsLengthInconsistency: detectPluginsLengthInconsistency,\n detectProcess: detectProcess,\n detectUserAgent: detectUserAgent,\n detectWebDriver: detectWebDriver,\n detectWebGL: detectWebGL,\n detectWindowExternal: detectWindowExternal,\n detectWindowSize: detectWindowSize,\n detectMimeTypesConsistent: detectMimeTypesConsistent,\n detectProductSub: detectProductSub,\n detectDistinctiveProperties: detectDistinctiveProperties,\n};\n\nfunction getAppVersion() {\n var appVersion = navigator.appVersion;\n if (appVersion == undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'navigator.appVersion is undefined');\n }\n return appVersion;\n}\n\nfunction getDocumentElementKeys() {\n if (document.documentElement === undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'document.documentElement is undefined');\n }\n var documentElement = document.documentElement;\n if (typeof documentElement.getAttributeNames !== 'function') {\n throw new BotdError(-2 /* State.NotFunction */, 'document.documentElement.getAttributeNames is not a function');\n }\n return documentElement.getAttributeNames();\n}\n\nfunction getErrorTrace() {\n try {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n null[0]();\n }\n catch (error) {\n if (error instanceof Error && error['stack'] != null) {\n return error.stack.toString();\n }\n }\n throw new BotdError(-3 /* State.UnexpectedBehaviour */, 'errorTrace signal unexpected behaviour');\n}\n\nfunction getEvalLength() {\n return eval.toString().length;\n}\n\nfunction getFunctionBind() {\n if (Function.prototype.bind === undefined) {\n throw new BotdError(-2 /* State.NotFunction */, 'Function.prototype.bind is undefined');\n }\n return Function.prototype.bind.toString();\n}\n\nfunction getBrowserEngineKind() {\n var _a, _b;\n // Based on research in October 2020. Tested to detect Chromium 42-86.\n var w = window;\n var n = navigator;\n if (countTruthy([\n 'webkitPersistentStorage' in n,\n 'webkitTemporaryStorage' in n,\n n.vendor.indexOf('Google') === 0,\n 'webkitResolveLocalFileSystemURL' in w,\n 'BatteryManager' in w,\n 'webkitMediaStream' in w,\n 'webkitSpeechGrammar' in w,\n ]) >= 5) {\n return \"chromium\" /* BrowserEngineKind.Chromium */;\n }\n if (countTruthy([\n 'ApplePayError' in w,\n 'CSSPrimitiveValue' in w,\n 'Counter' in w,\n n.vendor.indexOf('Apple') === 0,\n 'getStorageUpdates' in n,\n 'WebKitMediaKeys' in w,\n ]) >= 4) {\n return \"webkit\" /* BrowserEngineKind.Webkit */;\n }\n if (countTruthy([\n 'buildID' in navigator,\n 'MozAppearance' in ((_b = (_a = document.documentElement) === null || _a === void 0 ? void 0 : _a.style) !== null && _b !== void 0 ? _b : {}),\n 'onmozfullscreenchange' in w,\n 'mozInnerScreenX' in w,\n 'CSSMozDocumentRule' in w,\n 'CanvasCaptureMediaStream' in w,\n ]) >= 4) {\n return \"gecko\" /* BrowserEngineKind.Gecko */;\n }\n return \"unknown\" /* BrowserEngineKind.Unknown */;\n}\nfunction getBrowserKind() {\n var _a;\n var userAgent = (_a = navigator.userAgent) === null || _a === void 0 ? void 0 : _a.toLowerCase();\n if (strIncludes(userAgent, 'edg/')) {\n return \"edge\" /* BrowserKind.Edge */;\n }\n else if (strIncludes(userAgent, 'trident') || strIncludes(userAgent, 'msie')) {\n return \"internet_explorer\" /* BrowserKind.IE */;\n }\n else if (strIncludes(userAgent, 'wechat')) {\n return \"wechat\" /* BrowserKind.WeChat */;\n }\n else if (strIncludes(userAgent, 'firefox')) {\n return \"firefox\" /* BrowserKind.Firefox */;\n }\n else if (strIncludes(userAgent, 'opera') || strIncludes(userAgent, 'opr')) {\n return \"opera\" /* BrowserKind.Opera */;\n }\n else if (strIncludes(userAgent, 'chrome')) {\n return \"chrome\" /* BrowserKind.Chrome */;\n }\n else if (strIncludes(userAgent, 'safari')) {\n return \"safari\" /* BrowserKind.Safari */;\n }\n else {\n return \"unknown\" /* BrowserKind.Unknown */;\n }\n}\n// Source: https://github.com/fingerprintjs/fingerprintjs/blob/master/src/utils/browser.ts#L223\nfunction isAndroid() {\n var browserEngineKind = getBrowserEngineKind();\n var isItChromium = browserEngineKind === \"chromium\" /* BrowserEngineKind.Chromium */;\n var isItGecko = browserEngineKind === \"gecko\" /* BrowserEngineKind.Gecko */;\n // Only 2 browser engines are presented on Android.\n // Actually, there is also Android 4.1 browser, but it's not worth detecting it at the moment.\n if (!isItChromium && !isItGecko)\n return false;\n var w = window;\n // Chrome removes all words \"Android\" from `navigator` when desktop version is requested\n // Firefox keeps \"Android\" in `navigator.appVersion` when desktop version is requested\n return (countTruthy([\n 'onorientationchange' in w,\n 'orientation' in w,\n isItChromium && !('SharedWorker' in w),\n isItGecko && /android/i.test(navigator.appVersion),\n ]) >= 2);\n}\nfunction getDocumentFocus() {\n if (document.hasFocus === undefined) {\n return false;\n }\n return document.hasFocus();\n}\nfunction isChromium86OrNewer() {\n // Checked in Chrome 85 vs Chrome 86 both on desktop and Android\n var w = window;\n return (countTruthy([\n !('MediaSettingsRange' in w),\n 'RTCEncodedAudioFrame' in w,\n '' + w.Intl === '[object Intl]',\n '' + w.Reflect === '[object Reflect]',\n ]) >= 3);\n}\n\nfunction getLanguages() {\n var n = navigator;\n var result = [];\n var language = n.language || n.userLanguage || n.browserLanguage || n.systemLanguage;\n if (language !== undefined) {\n result.push([language]);\n }\n if (Array.isArray(n.languages)) {\n var browserEngine = getBrowserEngineKind();\n // Starting from Chromium 86, there is only a single value in `navigator.language` in Incognito mode:\n // the value of `navigator.language`. Therefore, the value is ignored in this browser.\n if (!(browserEngine === \"chromium\" /* BrowserEngineKind.Chromium */ && isChromium86OrNewer())) {\n result.push(n.languages);\n }\n }\n else if (typeof n.languages === 'string') {\n var languages = n.languages;\n if (languages) {\n result.push(languages.split(','));\n }\n }\n return result;\n}\n\nfunction areMimeTypesConsistent() {\n if (navigator.mimeTypes === undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'navigator.mimeTypes is undefined');\n }\n var mimeTypes = navigator.mimeTypes;\n var isConsistent = Object.getPrototypeOf(mimeTypes) === MimeTypeArray.prototype;\n for (var i = 0; i < mimeTypes.length; i++) {\n isConsistent && (isConsistent = Object.getPrototypeOf(mimeTypes[i]) === MimeType.prototype);\n }\n return isConsistent;\n}\n\nfunction getNotificationPermissions() {\n return __awaiter(this, void 0, void 0, function () {\n var permissions, permissionStatus;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (window.Notification === undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'window.Notification is undefined');\n }\n if (navigator.permissions === undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'navigator.permissions is undefined');\n }\n permissions = navigator.permissions;\n if (typeof permissions.query !== 'function') {\n throw new BotdError(-2 /* State.NotFunction */, 'navigator.permissions.query is not a function');\n }\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, permissions.query({ name: 'notifications' })];\n case 2:\n permissionStatus = _a.sent();\n return [2 /*return*/, window.Notification.permission === 'denied' && permissionStatus.state === 'prompt'];\n case 3:\n _a.sent();\n throw new BotdError(-3 /* State.UnexpectedBehaviour */, 'notificationPermissions signal unexpected behaviour');\n case 4: return [2 /*return*/];\n }\n });\n });\n}\n\nfunction getPluginsArray() {\n if (navigator.plugins === undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'navigator.plugins is undefined');\n }\n if (window.PluginArray === undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'window.PluginArray is undefined');\n }\n return navigator.plugins instanceof PluginArray;\n}\n\nfunction getPluginsLength() {\n if (navigator.plugins === undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'navigator.plugins is undefined');\n }\n if (navigator.plugins.length === undefined) {\n throw new BotdError(-3 /* State.UnexpectedBehaviour */, 'navigator.plugins.length is undefined');\n }\n return navigator.plugins.length;\n}\n\nfunction getProcess() {\n var process = window.process;\n var errorPrefix = 'window.process is';\n if (process === undefined) {\n throw new BotdError(-1 /* State.Undefined */, \"\".concat(errorPrefix, \" undefined\"));\n }\n if (process && typeof process !== 'object') {\n throw new BotdError(-3 /* State.UnexpectedBehaviour */, \"\".concat(errorPrefix, \" not an object\"));\n }\n return process;\n}\n\nfunction getProductSub() {\n var productSub = navigator.productSub;\n if (productSub === undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'navigator.productSub is undefined');\n }\n return productSub;\n}\n\nfunction getRTT() {\n if (navigator.connection === undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'navigator.connection is undefined');\n }\n if (navigator.connection.rtt === undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'navigator.connection.rtt is undefined');\n }\n return navigator.connection.rtt;\n}\n\nfunction getUserAgent() {\n return navigator.userAgent;\n}\n\nfunction getWebDriver() {\n if (navigator.webdriver == undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'navigator.webdriver is undefined');\n }\n return navigator.webdriver;\n}\n\nfunction getWebGL() {\n var canvasElement = document.createElement('canvas');\n if (typeof canvasElement.getContext !== 'function') {\n throw new BotdError(-2 /* State.NotFunction */, 'HTMLCanvasElement.getContext is not a function');\n }\n var webGLContext = canvasElement.getContext('webgl');\n if (webGLContext === null) {\n throw new BotdError(-4 /* State.Null */, 'WebGLRenderingContext is null');\n }\n if (typeof webGLContext.getParameter !== 'function') {\n throw new BotdError(-2 /* State.NotFunction */, 'WebGLRenderingContext.getParameter is not a function');\n }\n var vendor = webGLContext.getParameter(webGLContext.VENDOR);\n var renderer = webGLContext.getParameter(webGLContext.RENDERER);\n return { vendor: vendor, renderer: renderer };\n}\n\nfunction getWindowExternal() {\n if (window.external === undefined) {\n throw new BotdError(-1 /* State.Undefined */, 'window.external is undefined');\n }\n var external = window.external;\n if (typeof external.toString !== 'function') {\n throw new BotdError(-2 /* State.NotFunction */, 'window.external.toString is not a function');\n }\n return external.toString();\n}\n\nfunction getWindowSize() {\n return {\n outerWidth: window.outerWidth,\n outerHeight: window.outerHeight,\n innerWidth: window.innerWidth,\n innerHeight: window.innerHeight,\n };\n}\n\nfunction checkDistinctiveProperties() {\n var _a;\n // The order in the following list matters, because specific types of bots come first, followed by automation technologies.\n var distinctivePropsList = (_a = {},\n _a[BotKind.Awesomium] = {\n window: ['awesomium'],\n },\n _a[BotKind.Cef] = {\n window: ['RunPerfTest'],\n },\n _a[BotKind.CefSharp] = {\n window: ['CefSharp'],\n },\n _a[BotKind.CoachJS] = {\n window: ['emit'],\n },\n _a[BotKind.FMiner] = {\n window: ['fmget_targets'],\n },\n _a[BotKind.Geb] = {\n window: ['geb'],\n },\n _a[BotKind.NightmareJS] = {\n window: ['__nightmare', 'nightmare'],\n },\n _a[BotKind.Phantomas] = {\n window: ['__phantomas'],\n },\n _a[BotKind.PhantomJS] = {\n window: ['callPhantom', '_phantom'],\n },\n _a[BotKind.Rhino] = {\n window: ['spawn'],\n },\n _a[BotKind.Selenium] = {\n window: ['_Selenium_IDE_Recorder', '_selenium', 'calledSelenium', /^([a-z]){3}_.*_(Array|Promise|Symbol)$/],\n document: ['__selenium_evaluate', 'selenium-evaluate', '__selenium_unwrapped'],\n },\n _a[BotKind.WebDriverIO] = {\n window: ['wdioElectron'],\n },\n _a[BotKind.WebDriver] = {\n window: [\n 'webdriver',\n '__webdriverFunc',\n '__lastWatirAlert',\n '__lastWatirConfirm',\n '__lastWatirPrompt',\n '_WEBDRIVER_ELEM_CACHE',\n 'ChromeDriverw',\n ],\n document: [\n '__webdriver_script_fn',\n '__driver_evaluate',\n '__webdriver_evaluate',\n '__fxdriver_evaluate',\n '__driver_unwrapped',\n '__webdriver_unwrapped',\n '__fxdriver_unwrapped',\n '__webdriver_script_fn',\n '__webdriver_script_func',\n '__webdriver_script_function',\n '$cdc_asdjflasutopfhvcZLmcf',\n '$cdc_asdjflasutopfhvcZLmcfl_',\n '$chrome_asyncScriptInfo',\n '__$webdriverAsyncExecutor',\n ],\n },\n _a[BotKind.HeadlessChrome] = {\n window: ['domAutomation', 'domAutomationController'],\n },\n _a);\n var botName;\n var result = {};\n var windowProps = getObjectProps(window);\n var documentProps = [];\n if (window.document !== undefined)\n documentProps = getObjectProps(window.document);\n for (botName in distinctivePropsList) {\n var props = distinctivePropsList[botName];\n if (props !== undefined) {\n var windowContains = props.window === undefined ? false : includes.apply(void 0, __spreadArray([windowProps], props.window, false));\n var documentContains = props.document === undefined || !documentProps.length ? false : includes.apply(void 0, __spreadArray([documentProps], props.document, false));\n result[botName] = windowContains || documentContains;\n }\n }\n return result;\n}\n\nvar sources = {\n android: isAndroid,\n browserKind: getBrowserKind,\n browserEngineKind: getBrowserEngineKind,\n documentFocus: getDocumentFocus,\n userAgent: getUserAgent,\n appVersion: getAppVersion,\n rtt: getRTT,\n windowSize: getWindowSize,\n pluginsLength: getPluginsLength,\n pluginsArray: getPluginsArray,\n errorTrace: getErrorTrace,\n productSub: getProductSub,\n windowExternal: getWindowExternal,\n mimeTypesConsistent: areMimeTypesConsistent,\n evalLength: getEvalLength,\n webGL: getWebGL,\n webDriver: getWebDriver,\n languages: getLanguages,\n notificationPermissions: getNotificationPermissions,\n documentElementKeys: getDocumentElementKeys,\n functionBind: getFunctionBind,\n process: getProcess,\n distinctiveProps: checkDistinctiveProperties,\n};\n\n/**\n * Class representing a bot detector.\n *\n * @class\n * @implements {BotDetectorInterface}\n */\nvar BotDetector = /** @class */ (function () {\n function BotDetector() {\n this.components = undefined;\n this.detections = undefined;\n }\n BotDetector.prototype.getComponents = function () {\n return this.components;\n };\n BotDetector.prototype.getDetections = function () {\n return this.detections;\n };\n /**\n * @inheritdoc\n */\n BotDetector.prototype.detect = function () {\n if (this.components === undefined) {\n throw new Error(\"BotDetector.detect can't be called before BotDetector.collect\");\n }\n var _a = detect(this.components, detectors), detections = _a[0], finalDetection = _a[1];\n this.detections = detections;\n return finalDetection;\n };\n /**\n * @inheritdoc\n */\n BotDetector.prototype.collect = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = this;\n return [4 /*yield*/, collect(sources)];\n case 1:\n _a.components = _b.sent();\n return [2 /*return*/, this.components];\n }\n });\n });\n };\n return BotDetector;\n}());\n\n/**\n * Sends an unpersonalized AJAX request to collect installation statistics\n */\nfunction monitor() {\n // The FingerprintJS CDN (https://github.com/fingerprintjs/cdn) replaces `window.__fpjs_d_m` with `true`\n if (window.__fpjs_d_m || Math.random() >= 0.001) {\n return;\n }\n try {\n var request = new XMLHttpRequest();\n request.open('get', \"https://m1.openfpcdn.io/botd/v\".concat(version, \"/npm-monitoring\"), true);\n request.send();\n }\n catch (error) {\n // console.error is ok here because it's an unexpected error handler\n // eslint-disable-next-line no-console\n console.error(error);\n }\n}\nfunction load(_a) {\n var _b = _a === void 0 ? {} : _a, _c = _b.monitoring, monitoring = _c === void 0 ? true : _c;\n return __awaiter(this, void 0, void 0, function () {\n var detector;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n if (monitoring) {\n monitor();\n }\n detector = new BotDetector();\n return [4 /*yield*/, detector.collect()];\n case 1:\n _d.sent();\n return [2 /*return*/, detector];\n }\n });\n });\n}\nvar index = { load: load };\n\nexport { BotKind, BotdError, collect, index as default, detect, detectors, load, sources };\n","/**\n * @remix-run/router v1.15.3\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n/**\n * Actions represent the type of change to a location value.\n */\nvar Action;\n(function (Action) {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Action[\"Pop\"] = \"POP\";\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Action[\"Push\"] = \"PUSH\";\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Action[\"Replace\"] = \"REPLACE\";\n})(Action || (Action = {}));\nconst PopStateEventType = \"popstate\";\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nfunction createMemoryHistory(options) {\n if (options === void 0) {\n options = {};\n }\n let {\n initialEntries = [\"/\"],\n initialIndex,\n v5Compat = false\n } = options;\n let entries; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) => createMemoryLocation(entry, typeof entry === \"string\" ? null : entry.state, index === 0 ? \"default\" : undefined));\n let index = clampIndex(initialIndex == null ? entries.length - 1 : initialIndex);\n let action = Action.Pop;\n let listener = null;\n function clampIndex(n) {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation() {\n return entries[index];\n }\n function createMemoryLocation(to, state, key) {\n if (state === void 0) {\n state = null;\n }\n let location = createLocation(entries ? getCurrentLocation().pathname : \"/\", to, state, key);\n warning(location.pathname.charAt(0) === \"/\", \"relative pathnames are not supported in memory history: \" + JSON.stringify(to));\n return location;\n }\n function createHref(to) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n let history = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\"\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({\n action,\n location: nextLocation,\n delta: 1\n });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({\n action,\n location: nextLocation,\n delta: 0\n });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({\n action,\n location: nextLocation,\n delta\n });\n }\n },\n listen(fn) {\n listener = fn;\n return () => {\n listener = null;\n };\n }\n };\n return history;\n}\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nfunction createBrowserHistory(options) {\n if (options === void 0) {\n options = {};\n }\n function createBrowserLocation(window, globalHistory) {\n let {\n pathname,\n search,\n hash\n } = window.location;\n return createLocation(\"\", {\n pathname,\n search,\n hash\n },\n // state defaults to `null` because `window.history.state` does\n globalHistory.state && globalHistory.state.usr || null, globalHistory.state && globalHistory.state.key || \"default\");\n }\n function createBrowserHref(window, to) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n return getUrlBasedHistory(createBrowserLocation, createBrowserHref, null, options);\n}\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nfunction createHashHistory(options) {\n if (options === void 0) {\n options = {};\n }\n function createHashLocation(window, globalHistory) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\"\n } = parsePath(window.location.hash.substr(1));\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route () since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n return createLocation(\"\", {\n pathname,\n search,\n hash\n },\n // state defaults to `null` because `window.history.state` does\n globalHistory.state && globalHistory.state.usr || null, globalHistory.state && globalHistory.state.key || \"default\");\n }\n function createHashHref(window, to) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n function validateHashLocation(location, to) {\n warning(location.pathname.charAt(0) === \"/\", \"relative pathnames are not supported in hash history.push(\" + JSON.stringify(to) + \")\");\n }\n return getUrlBasedHistory(createHashLocation, createHashHref, validateHashLocation, options);\n}\nfunction invariant(value, message) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\nfunction warning(cond, message) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location, index) {\n return {\n usr: location.state,\n key: location.key,\n idx: index\n };\n}\n/**\n * Creates a Location object with a unique key from the given Path\n */\nfunction createLocation(current, to, state, key) {\n if (state === void 0) {\n state = null;\n }\n let location = _extends({\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\"\n }, typeof to === \"string\" ? parsePath(to) : to, {\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: to && to.key || key || createKey()\n });\n return location;\n}\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nfunction createPath(_ref) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\"\n } = _ref;\n if (search && search !== \"?\") pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\") pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nfunction parsePath(path) {\n let parsedPath = {};\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n if (path) {\n parsedPath.pathname = path;\n }\n }\n return parsedPath;\n}\nfunction getUrlBasedHistory(getLocation, createHref, validateLocation, options) {\n if (options === void 0) {\n options = {};\n }\n let {\n window = document.defaultView,\n v5Compat = false\n } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener = null;\n let index = getIndex();\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState(_extends({}, globalHistory.state, {\n idx: index\n }), \"\");\n }\n function getIndex() {\n let state = globalHistory.state || {\n idx: null\n };\n return state.idx;\n }\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({\n action,\n location: history.location,\n delta\n });\n }\n }\n function push(to, state) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n if (v5Compat && listener) {\n listener({\n action,\n location: history.location,\n delta: 1\n });\n }\n }\n function replace(to, state) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n if (v5Compat && listener) {\n listener({\n action,\n location: history.location,\n delta: 0\n });\n }\n }\n function createURL(to) {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base = window.location.origin !== \"null\" ? window.location.origin : window.location.href;\n let href = typeof to === \"string\" ? to : createPath(to);\n // Treating this as a full URL will strip any trailing spaces so we need to\n // pre-encode them since they might be part of a matching splat param from\n // an ancestor route\n href = href.replace(/ $/, \"%20\");\n invariant(base, \"No window.location.(origin|href) available to create URL for href: \" + href);\n return new URL(href, base);\n }\n let history = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n }\n };\n return history;\n}\n//#endregion\n\nvar ResultType;\n(function (ResultType) {\n ResultType[\"data\"] = \"data\";\n ResultType[\"deferred\"] = \"deferred\";\n ResultType[\"redirect\"] = \"redirect\";\n ResultType[\"error\"] = \"error\";\n})(ResultType || (ResultType = {}));\nconst immutableRouteKeys = new Set([\"lazy\", \"caseSensitive\", \"path\", \"id\", \"index\", \"children\"]);\nfunction isIndexRoute(route) {\n return route.index === true;\n}\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nfunction convertRoutesToDataRoutes(routes, mapRouteProperties, parentPath, manifest) {\n if (parentPath === void 0) {\n parentPath = [];\n }\n if (manifest === void 0) {\n manifest = {};\n }\n return routes.map((route, index) => {\n let treePath = [...parentPath, index];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(route.index !== true || !route.children, \"Cannot specify children on an index route\");\n invariant(!manifest[id], \"Found a route id collision on id \\\"\" + id + \"\\\". Route \" + \"id's must be globally unique within Data Router usages\");\n if (isIndexRoute(route)) {\n let indexRoute = _extends({}, route, mapRouteProperties(route), {\n id\n });\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute = _extends({}, route, mapRouteProperties(route), {\n id,\n children: undefined\n });\n manifest[id] = pathOrLayoutRoute;\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(route.children, mapRouteProperties, treePath, manifest);\n }\n return pathOrLayoutRoute;\n }\n });\n}\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nfunction matchRoutes(routes, locationArg, basename) {\n if (basename === void 0) {\n basename = \"/\";\n }\n let location = typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n let pathname = stripBasename(location.pathname || \"/\", basename);\n if (pathname == null) {\n return null;\n }\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n let decoded = decodePath(pathname);\n matches = matchRouteBranch(branches[i], decoded);\n }\n return matches;\n}\nfunction convertRouteMatchToUiMatch(match, loaderData) {\n let {\n route,\n pathname,\n params\n } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle\n };\n}\nfunction flattenRoutes(routes, branches, parentsMeta, parentPath) {\n if (branches === void 0) {\n branches = [];\n }\n if (parentsMeta === void 0) {\n parentsMeta = [];\n }\n if (parentPath === void 0) {\n parentPath = \"\";\n }\n let flattenRoute = (route, index, relativePath) => {\n let meta = {\n relativePath: relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route\n };\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(meta.relativePath.startsWith(parentPath), \"Absolute route path \\\"\" + meta.relativePath + \"\\\" nested under path \" + (\"\\\"\" + parentPath + \"\\\" is not valid. An absolute child route path \") + \"must start with the combined path of all its parent routes.\");\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true, \"Index routes must not have child routes. Please remove \" + (\"all child routes from route path \\\"\" + path + \"\\\".\"));\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta\n });\n };\n routes.forEach((route, index) => {\n var _route$path;\n // coarse-grain check for optional params\n if (route.path === \"\" || !((_route$path = route.path) != null && _route$path.includes(\"?\"))) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n return branches;\n}\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path) {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n let [first, ...rest] = segments;\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n let result = [];\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(...restExploded.map(subpath => subpath === \"\" ? required : [required, subpath].join(\"/\")));\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n // for absolute paths, ensure `/` instead of empty segment\n return result.map(exploded => path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded);\n}\nfunction rankRouteBranches(branches) {\n branches.sort((a, b) => a.score !== b.score ? b.score - a.score // Higher score first\n : compareIndexes(a.routesMeta.map(meta => meta.childrenIndex), b.routesMeta.map(meta => meta.childrenIndex)));\n}\nconst paramRe = /^:[\\w-]+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = s => s === \"*\";\nfunction computeScore(path, index) {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n if (index) {\n initialScore += indexRouteValue;\n }\n return segments.filter(s => !isSplat(s)).reduce((score, segment) => score + (paramRe.test(segment) ? dynamicSegmentValue : segment === \"\" ? emptySegmentValue : staticSegmentValue), initialScore);\n}\nfunction compareIndexes(a, b) {\n let siblings = a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n return siblings ?\n // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1] :\n // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\nfunction matchRouteBranch(branch, pathname) {\n let {\n routesMeta\n } = branch;\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname = matchedPathname === \"/\" ? pathname : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath({\n path: meta.relativePath,\n caseSensitive: meta.caseSensitive,\n end\n }, remainingPathname);\n if (!match) return null;\n Object.assign(matchedParams, match.params);\n let route = meta.route;\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(joinPaths([matchedPathname, match.pathnameBase])),\n route\n });\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n return matches;\n}\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nfunction generatePath(originalPath, params) {\n if (params === void 0) {\n params = {};\n }\n let path = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(false, \"Route path \\\"\" + path + \"\\\" will be treated as if it were \" + (\"\\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\" because the `*` character must \") + \"always follow a `/` in the pattern. To get rid of this warning, \" + (\"please change the route path to \\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\".\"));\n path = path.replace(/\\*$/, \"/*\");\n }\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n const stringify = p => p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n const segments = path.split(/\\/+/).map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\";\n // Apply the splat\n return stringify(params[star]);\n }\n const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key];\n invariant(optional === \"?\" || param != null, \"Missing \\\":\" + key + \"\\\" param\");\n return stringify(param);\n }\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter(segment => !!segment);\n return prefix + segments.join(\"/\");\n}\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nfunction matchPath(pattern, pathname) {\n if (typeof pattern === \"string\") {\n pattern = {\n path: pattern,\n caseSensitive: false,\n end: true\n };\n }\n let [matcher, compiledParams] = compilePath(pattern.path, pattern.caseSensitive, pattern.end);\n let match = pathname.match(matcher);\n if (!match) return null;\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params = compiledParams.reduce((memo, _ref, index) => {\n let {\n paramName,\n isOptional\n } = _ref;\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname.slice(0, matchedPathname.length - splatValue.length).replace(/(.)\\/+$/, \"$1\");\n }\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo[paramName] = undefined;\n } else {\n memo[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n }\n return memo;\n }, {});\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern\n };\n}\nfunction compilePath(path, caseSensitive, end) {\n if (caseSensitive === void 0) {\n caseSensitive = false;\n }\n if (end === void 0) {\n end = true;\n }\n warning(path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"), \"Route path \\\"\" + path + \"\\\" will be treated as if it were \" + (\"\\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\" because the `*` character must \") + \"always follow a `/` in the pattern. To get rid of this warning, \" + (\"please change the route path to \\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\".\"));\n let params = [];\n let regexpSource = \"^\" + path.replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/\\/:([\\w-]+)(\\?)?/g, (_, paramName, isOptional) => {\n params.push({\n paramName,\n isOptional: isOptional != null\n });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n });\n if (path.endsWith(\"*\")) {\n params.push({\n paramName: \"*\"\n });\n regexpSource += path === \"*\" || path === \"/*\" ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else ;\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n return [matcher, params];\n}\nfunction decodePath(value) {\n try {\n return value.split(\"/\").map(v => decodeURIComponent(v).replace(/\\//g, \"%2F\")).join(\"/\");\n } catch (error) {\n warning(false, \"The URL path \\\"\" + value + \"\\\" could not be decoded because it is is a \" + \"malformed URL segment. This is probably due to a bad percent \" + (\"encoding (\" + error + \").\"));\n return value;\n }\n}\n/**\n * @private\n */\nfunction stripBasename(pathname, basename) {\n if (basename === \"/\") return pathname;\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\") ? basename.length - 1 : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n return pathname.slice(startIndex) || \"/\";\n}\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nfunction resolvePath(to, fromPathname) {\n if (fromPathname === void 0) {\n fromPathname = \"/\";\n }\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\"\n } = typeof to === \"string\" ? parsePath(to) : to;\n let pathname = toPathname ? toPathname.startsWith(\"/\") ? toPathname : resolvePathname(toPathname, fromPathname) : fromPathname;\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash)\n };\n}\nfunction resolvePathname(relativePath, fromPathname) {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n relativeSegments.forEach(segment => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\nfunction getInvalidPathError(char, field, dest, path) {\n return \"Cannot include a '\" + char + \"' character in a manually specified \" + (\"`to.\" + field + \"` field [\" + JSON.stringify(path) + \"]. Please separate it out to the \") + (\"`to.\" + dest + \"` field. Alternatively you may provide the full path as \") + \"a string in and the router will parse it for you.\";\n}\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nfunction getPathContributingMatches(matches) {\n return matches.filter((match, index) => index === 0 || match.route.path && match.route.path.length > 0);\n}\n// Return the array of pathnames for the current route matches - used to\n// generate the routePathnames input for resolveTo()\nfunction getResolveToMatches(matches, v7_relativeSplatPath) {\n let pathMatches = getPathContributingMatches(matches);\n // When v7_relativeSplatPath is enabled, use the full pathname for the leaf\n // match so we include splat values for \".\" links. See:\n // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329\n if (v7_relativeSplatPath) {\n return pathMatches.map((match, idx) => idx === matches.length - 1 ? match.pathname : match.pathnameBase);\n }\n return pathMatches.map(match => match.pathnameBase);\n}\n/**\n * @private\n */\nfunction resolveTo(toArg, routePathnames, locationPathname, isPathRelative) {\n if (isPathRelative === void 0) {\n isPathRelative = false;\n }\n let to;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = _extends({}, toArg);\n invariant(!to.pathname || !to.pathname.includes(\"?\"), getInvalidPathError(\"?\", \"pathname\", \"search\", to));\n invariant(!to.pathname || !to.pathname.includes(\"#\"), getInvalidPathError(\"#\", \"pathname\", \"hash\", to));\n invariant(!to.search || !to.search.includes(\"#\"), getInvalidPathError(\"#\", \"search\", \"hash\", to));\n }\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n let from;\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n // With relative=\"route\" (the default), each leading .. segment means\n // \"go up one route\" instead of \"go up one URL segment\". This is a key\n // difference from how works and a major reason we call this a\n // \"to\" value instead of a \"href\".\n if (!isPathRelative && toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n to.pathname = toSegments.join(\"/\");\n }\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n let path = resolvePath(to, from);\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash = toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash = (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (!path.pathname.endsWith(\"/\") && (hasExplicitTrailingSlash || hasCurrentTrailingSlash)) {\n path.pathname += \"/\";\n }\n return path;\n}\n/**\n * @private\n */\nfunction getToPathname(to) {\n // Empty strings should be treated the same as / paths\n return to === \"\" || to.pathname === \"\" ? \"/\" : typeof to === \"string\" ? parsePath(to).pathname : to.pathname;\n}\n/**\n * @private\n */\nconst joinPaths = paths => paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n/**\n * @private\n */\nconst normalizePathname = pathname => pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n/**\n * @private\n */\nconst normalizeSearch = search => !search || search === \"?\" ? \"\" : search.startsWith(\"?\") ? search : \"?\" + search;\n/**\n * @private\n */\nconst normalizeHash = hash => !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nconst json = function json(data, init) {\n if (init === void 0) {\n init = {};\n }\n let responseInit = typeof init === \"number\" ? {\n status: init\n } : init;\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n return new Response(JSON.stringify(data), _extends({}, responseInit, {\n headers\n }));\n};\nclass AbortedDeferredError extends Error {}\nclass DeferredData {\n constructor(data, responseInit) {\n this.pendingKeysSet = new Set();\n this.subscribers = new Set();\n this.deferredKeys = [];\n invariant(data && typeof data === \"object\" && !Array.isArray(data), \"defer() only accepts plain objects\");\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject;\n this.abortPromise = new Promise((_, r) => reject = r);\n this.controller = new AbortController();\n let onAbort = () => reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () => this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n this.data = Object.entries(data).reduce((acc, _ref2) => {\n let [key, value] = _ref2;\n return Object.assign(acc, {\n [key]: this.trackPromise(key, value)\n });\n }, {});\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n this.init = responseInit;\n }\n trackPromise(key, value) {\n if (!(value instanceof Promise)) {\n return value;\n }\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise = Promise.race([value, this.abortPromise]).then(data => this.onSettle(promise, key, undefined, data), error => this.onSettle(promise, key, error));\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n Object.defineProperty(promise, \"_tracked\", {\n get: () => true\n });\n return promise;\n }\n onSettle(promise, key, error, data) {\n if (this.controller.signal.aborted && error instanceof AbortedDeferredError) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", {\n get: () => error\n });\n return Promise.reject(error);\n }\n this.pendingKeysSet.delete(key);\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\"Deferred data for key \\\"\" + key + \"\\\" resolved/rejected with `undefined`, \" + \"you must resolve/reject with a value or `null`.\");\n Object.defineProperty(promise, \"_error\", {\n get: () => undefinedError\n });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", {\n get: () => error\n });\n this.emit(false, key);\n return Promise.reject(error);\n }\n Object.defineProperty(promise, \"_data\", {\n get: () => data\n });\n this.emit(false, key);\n return data;\n }\n emit(aborted, settledKey) {\n this.subscribers.forEach(subscriber => subscriber(aborted, settledKey));\n }\n subscribe(fn) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n async resolveData(signal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise(resolve => {\n this.subscribe(aborted => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n get unwrappedData() {\n invariant(this.data !== null && this.done, \"Can only unwrap data on initialized and settled deferreds\");\n return Object.entries(this.data).reduce((acc, _ref3) => {\n let [key, value] = _ref3;\n return Object.assign(acc, {\n [key]: unwrapTrackedPromise(value)\n });\n }, {});\n }\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\nfunction isTrackedPromise(value) {\n return value instanceof Promise && value._tracked === true;\n}\nfunction unwrapTrackedPromise(value) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\nconst defer = function defer(data, init) {\n if (init === void 0) {\n init = {};\n }\n let responseInit = typeof init === \"number\" ? {\n status: init\n } : init;\n return new DeferredData(data, responseInit);\n};\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nconst redirect = function redirect(url, init) {\n if (init === void 0) {\n init = 302;\n }\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = {\n status: responseInit\n };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n return new Response(null, _extends({}, responseInit, {\n headers\n }));\n};\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nconst redirectDocument = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nclass ErrorResponseImpl {\n constructor(status, statusText, data, internal) {\n if (internal === void 0) {\n internal = false;\n }\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nfunction isRouteErrorResponse(error) {\n return error != null && typeof error.status === \"number\" && typeof error.statusText === \"string\" && typeof error.internal === \"boolean\" && \"data\" in error;\n}\n\nconst validMutationMethodsArr = [\"post\", \"put\", \"patch\", \"delete\"];\nconst validMutationMethods = new Set(validMutationMethodsArr);\nconst validRequestMethodsArr = [\"get\", ...validMutationMethodsArr];\nconst validRequestMethods = new Set(validRequestMethodsArr);\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\nconst IDLE_NAVIGATION = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined\n};\nconst IDLE_FETCHER = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined\n};\nconst IDLE_BLOCKER = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined\n};\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\nconst defaultMapRouteProperties = route => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary)\n});\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n/**\n * Create a router and listen to history POP navigations\n */\nfunction createRouter(init) {\n const routerWindow = init.window ? init.window : typeof window !== \"undefined\" ? window : undefined;\n const isBrowser = typeof routerWindow !== \"undefined\" && typeof routerWindow.document !== \"undefined\" && typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n invariant(init.routes.length > 0, \"You must provide a non-empty routes array to createRouter\");\n let mapRouteProperties;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = route => ({\n hasErrorBoundary: detectErrorBoundary(route)\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Routes keyed by ID\n let manifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(init.routes, mapRouteProperties, undefined, manifest);\n let inFlightDataRoutes;\n let basename = init.basename || \"/\";\n // Config driven behavior flags\n let future = _extends({\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_partialHydration: false,\n v7_prependBasename: false,\n v7_relativeSplatPath: false\n }, init.future);\n // Cleanup function for history\n let unlistenHistory = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors = null;\n if (initialMatches == null) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname\n });\n let {\n matches,\n route\n } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = {\n [route.id]: error\n };\n }\n let initialized;\n let hasLazyRoutes = initialMatches.some(m => m.route.lazy);\n let hasLoaders = initialMatches.some(m => m.route.loader);\n if (hasLazyRoutes) {\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n initialized = false;\n } else if (!hasLoaders) {\n // If we've got no loaders to run, then we're good to go\n initialized = true;\n } else if (future.v7_partialHydration) {\n // If partial hydration is enabled, we're initialized so long as we were\n // provided with hydrationData for every route with a loader, and no loaders\n // were marked for explicit hydration\n let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n let errors = init.hydrationData ? init.hydrationData.errors : null;\n let isRouteInitialized = m => {\n // No loader, nothing to initialize\n if (!m.route.loader) return true;\n // Explicitly opting-in to running on hydration\n if (m.route.loader.hydrate === true) return false;\n // Otherwise, initialized if hydrated with data or an error\n return loaderData && loaderData[m.route.id] !== undefined || errors && errors[m.route.id] !== undefined;\n };\n // If errors exist, don't consider routes below the boundary\n if (errors) {\n let idx = initialMatches.findIndex(m => errors[m.route.id] !== undefined);\n initialized = initialMatches.slice(0, idx + 1).every(isRouteInitialized);\n } else {\n initialized = initialMatches.every(isRouteInitialized);\n }\n } else {\n // Without partial hydration - we're initialized if we were provided any\n // hydrationData - which is expected to be complete\n initialized = init.hydrationData != null;\n }\n let router;\n let state = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: init.hydrationData && init.hydrationData.loaderData || {},\n actionData: init.hydrationData && init.hydrationData.actionData || null,\n errors: init.hydrationData && init.hydrationData.errors || initialErrors,\n fetchers: new Map(),\n blockers: new Map()\n };\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction = Action.Pop;\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n // AbortController for the active navigation\n let pendingNavigationController;\n // Should the current navigation enable document.startViewTransition?\n let pendingViewTransitionEnabled = false;\n // Store applied view transitions so we can apply them on POP\n let appliedViewTransitions = new Map();\n // Cleanup function for persisting applied transitions to sessionStorage\n let removePageHideEventListener = null;\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes = [];\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads = [];\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n // Ref-count mounted fetchers so we know when it's ok to clean them up\n let activeFetchers = new Map();\n // Fetchers that have requested a delete when using v7_fetcherPersist,\n // they'll be officially removed after they return to idle\n let deletedFetchers = new Set();\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let ignoreNextHistoryUpdate = false;\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(_ref => {\n let {\n action: historyAction,\n location,\n delta\n } = _ref;\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\n return;\n }\n warning(blockerFunctions.size === 0 || delta != null, \"You are trying to use a blocker on a POP navigation to a location \" + \"that was not created by @remix-run/router. This will fail silently in \" + \"production. This can happen if you are navigating outside the router \" + \"via `window.history.pushState`/`window.location.hash` instead of using \" + \"router navigation APIs. This can also happen if you are using \" + \"createHashRouter and the user manually changes the URL.\");\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction\n });\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n ignoreNextHistoryUpdate = true;\n init.history.go(delta * -1);\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location\n });\n // Re-do the same POP navigation we just blocked\n init.history.go(delta);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey, IDLE_BLOCKER);\n updateState({\n blockers\n });\n }\n });\n return;\n }\n return startNavigation(historyAction, location);\n });\n if (isBrowser) {\n // FIXME: This feels gross. How can we cleanup the lines between\n // scrollRestoration/appliedTransitions persistance?\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () => persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () => routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(Action.Pop, state.location, {\n initialHydration: true\n });\n }\n return router;\n }\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n // Subscribe to state updates for the router\n function subscribe(fn) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n // Update our state and notify the calling context of the change\n function updateState(newState, opts) {\n if (opts === void 0) {\n opts = {};\n }\n state = _extends({}, state, newState);\n // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n // can be removed\n let completedFetchers = [];\n let deletedFetchersKeys = [];\n if (future.v7_fetcherPersist) {\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (deletedFetchers.has(key)) {\n // Unmounted from the UI and can be totally removed\n deletedFetchersKeys.push(key);\n } else {\n // Returned to idle but still mounted in the UI, so semi-remains for\n // revalidations and such\n completedFetchers.push(key);\n }\n }\n });\n }\n // Iterate over a local copy so that if flushSync is used and we end up\n // removing and adding a new subscriber due to the useCallback dependencies,\n // we don't get ourselves into a loop calling the new subscriber immediately\n [...subscribers].forEach(subscriber => subscriber(state, {\n deletedFetchers: deletedFetchersKeys,\n unstable_viewTransitionOpts: opts.viewTransitionOpts,\n unstable_flushSync: opts.flushSync === true\n }));\n // Remove idle fetchers from state since we only care about in-flight fetchers.\n if (future.v7_fetcherPersist) {\n completedFetchers.forEach(key => state.fetchers.delete(key));\n deletedFetchersKeys.forEach(key => deleteFetcher(key));\n }\n }\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(location, newState, _temp) {\n var _location$state, _location$state2;\n let {\n flushSync\n } = _temp === void 0 ? {} : _temp;\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload = state.actionData != null && state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && state.navigation.state === \"loading\" && ((_location$state = location.state) == null ? void 0 : _location$state._isRedirect) !== true;\n let actionData;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData ? mergeLoaderData(state.loaderData, newState.loaderData, newState.matches || [], newState.errors) : state.loaderData;\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset = pendingPreventScrollReset === true || state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && ((_location$state2 = location.state) == null ? void 0 : _location$state2._isRedirect) !== true;\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n if (isUninterruptedRevalidation) ; else if (pendingAction === Action.Pop) ; else if (pendingAction === Action.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === Action.Replace) {\n init.history.replace(location, location.state);\n }\n let viewTransitionOpts;\n // On POP, enable transitions if they were enabled on the original navigation\n if (pendingAction === Action.Pop) {\n // Forward takes precedence so they behave like the original navigation\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n // If we don't have a previous forward nav, assume we're popping back to\n // the new location and enable if that location previously enabled\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location\n };\n }\n } else if (pendingViewTransitionEnabled) {\n // Store the applied transition on PUSH/REPLACE\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location\n };\n }\n updateState(_extends({}, newState, {\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(location, newState.matches || state.matches),\n preventScrollReset,\n blockers\n }), {\n viewTransitionOpts,\n flushSync: flushSync === true\n });\n // Reset stateful navigation vars\n pendingAction = Action.Pop;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n cancelledFetcherLoads = [];\n }\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(to, opts) {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n let normalizedPath = normalizeTo(state.location, state.matches, basename, future.v7_prependBasename, to, future.v7_relativeSplatPath, opts == null ? void 0 : opts.fromRouteId, opts == null ? void 0 : opts.relative);\n let {\n path,\n submission,\n error\n } = normalizeNavigateOptions(future.v7_normalizeFormMethod, false, normalizedPath, opts);\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = _extends({}, nextLocation, init.history.encodeLocation(nextLocation));\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n let historyAction = Action.Push;\n if (userReplace === true) {\n historyAction = Action.Replace;\n } else if (userReplace === false) ; else if (submission != null && isMutationMethod(submission.formMethod) && submission.formAction === state.location.pathname + state.location.search) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = Action.Replace;\n }\n let preventScrollReset = opts && \"preventScrollReset\" in opts ? opts.preventScrollReset === true : undefined;\n let flushSync = (opts && opts.unstable_flushSync) === true;\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction\n });\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey, IDLE_BLOCKER);\n updateState({\n blockers\n });\n }\n });\n return;\n }\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.unstable_viewTransition,\n flushSync\n });\n }\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({\n revalidation: \"loading\"\n });\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true\n });\n return;\n }\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(pendingAction || state.historyAction, state.navigation.location, {\n overrideNavigation: state.navigation\n });\n }\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(historyAction, location, opts) {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation = (opts && opts.startUninterruptedRevalidation) === true;\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let error = getInternalRouterError(404, {\n pathname: location.pathname\n });\n let {\n matches: notFoundMatches,\n route\n } = getShortCircuitMatches(routesToUse);\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n completeNavigation(location, {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error\n }\n }, {\n flushSync\n });\n return;\n }\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial load will always\n // be \"same hash\". For example, on /page#hash and submit a
\n // which will default to a navigation to /page\n if (state.initialized && !isRevalidationRequired && isHashChangeOnly(state.location, location) && !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))) {\n completeNavigation(location, {\n matches\n }, {\n flushSync\n });\n return;\n }\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(init.history, location, pendingNavigationController.signal, opts && opts.submission);\n let pendingActionData;\n let pendingError;\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingError = {\n [findNearestBoundary(matches).route.id]: opts.pendingError\n };\n } else if (opts && opts.submission && isMutationMethod(opts.submission.formMethod)) {\n // Call action if we received an action submission\n let actionOutput = await handleAction(request, location, opts.submission, matches, {\n replace: opts.replace,\n flushSync\n });\n if (actionOutput.shortCircuited) {\n return;\n }\n pendingActionData = actionOutput.pendingActionData;\n pendingError = actionOutput.pendingActionError;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n // Create a GET request for the loaders\n request = new Request(request.url, {\n signal: request.signal\n });\n }\n // Call loaders\n let {\n shortCircuited,\n loaderData,\n errors\n } = await handleLoaders(request, location, matches, loadingNavigation, opts && opts.submission, opts && opts.fetcherSubmission, opts && opts.replace, opts && opts.initialHydration === true, flushSync, pendingActionData, pendingError);\n if (shortCircuited) {\n return;\n }\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n completeNavigation(location, _extends({\n matches\n }, pendingActionData ? {\n actionData: pendingActionData\n } : {}, {\n loaderData,\n errors\n }));\n }\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(request, location, submission, matches, opts) {\n if (opts === void 0) {\n opts = {};\n }\n interruptActiveLoads();\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({\n navigation\n }, {\n flushSync: opts.flushSync === true\n });\n // Call our action and get the result\n let result;\n let actionMatch = getTargetMatch(matches, location);\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id\n })\n };\n } else {\n result = await callLoaderOrAction(\"action\", request, actionMatch, matches, manifest, mapRouteProperties, basename, future.v7_relativeSplatPath);\n if (request.signal.aborted) {\n return {\n shortCircuited: true\n };\n }\n }\n if (isRedirectResult(result)) {\n let replace;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n replace = result.location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(state, result, {\n submission,\n replace\n });\n return {\n shortCircuited: true\n };\n }\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n // By default, all submissions are REPLACE navigations, but if the\n // action threw an error that'll be rendered in an errorElement, we fall\n // back to PUSH so that the user can use the back button to get back to\n // the pre-submission form location to try again\n if ((opts && opts.replace) !== true) {\n pendingAction = Action.Push;\n }\n return {\n // Send back an empty object we can use to clear out any prior actionData\n pendingActionData: {},\n pendingActionError: {\n [boundaryMatch.route.id]: result.error\n }\n };\n }\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, {\n type: \"defer-action\"\n });\n }\n return {\n pendingActionData: {\n [actionMatch.route.id]: result.data\n }\n };\n }\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(request, location, matches, overrideNavigation, submission, fetcherSubmission, replace, initialHydration, flushSync, pendingActionData, pendingError) {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation = overrideNavigation || getLoadingNavigation(location, submission);\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission = submission || fetcherSubmission || getSubmissionFromNavigation(loadingNavigation);\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(init.history, state, matches, activeSubmission, location, future.v7_partialHydration && initialHydration === true, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, pendingActionData, pendingError);\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(routeId => !(matches && matches.some(m => m.route.id === routeId)) || matchesToLoad && matchesToLoad.some(m => m.route.id === routeId));\n pendingNavigationLoadId = ++incrementingLoadId;\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(location, _extends({\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors: pendingError || null\n }, pendingActionData ? {\n actionData: pendingActionData\n } : {}, updatedFetchers ? {\n fetchers: new Map(state.fetchers)\n } : {}), {\n flushSync\n });\n return {\n shortCircuited: true\n };\n }\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n // If we have partialHydration enabled, then don't update the state for the\n // initial data load since it's not a \"navigation\"\n if (!isUninterruptedRevalidation && (!future.v7_partialHydration || !initialHydration)) {\n revalidatingFetchers.forEach(rf => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(undefined, fetcher ? fetcher.data : undefined);\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n let actionData = pendingActionData || state.actionData;\n updateState(_extends({\n navigation: loadingNavigation\n }, actionData ? Object.keys(actionData).length === 0 ? {\n actionData: null\n } : {\n actionData\n } : {}, revalidatingFetchers.length > 0 ? {\n fetchers: new Map(state.fetchers)\n } : {}), {\n flushSync\n });\n }\n revalidatingFetchers.forEach(rf => {\n if (fetchControllers.has(rf.key)) {\n abortFetcher(rf.key);\n }\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach(f => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\"abort\", abortPendingFetchRevalidations);\n }\n let {\n results,\n loaderResults,\n fetcherResults\n } = await callLoadersAndMaybeResolveData(state.matches, matches, matchesToLoad, revalidatingFetchers, request);\n if (request.signal.aborted) {\n return {\n shortCircuited: true\n };\n }\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\"abort\", abortPendingFetchRevalidations);\n }\n revalidatingFetchers.forEach(rf => fetchControllers.delete(rf.key));\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(results);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey = revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n await startRedirectNavigation(state, redirect.result, {\n replace\n });\n return {\n shortCircuited: true\n };\n }\n // Process and commit output from loaders\n let {\n loaderData,\n errors\n } = processLoaderData(state, matches, matchesToLoad, loaderResults, pendingError, revalidatingFetchers, fetcherResults, activeDeferreds);\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe(aborted => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n // During partial hydration, preserve SSR errors for routes that don't re-run\n if (future.v7_partialHydration && initialHydration && state.errors) {\n Object.entries(state.errors).filter(_ref2 => {\n let [id] = _ref2;\n return !matchesToLoad.some(m => m.route.id === id);\n }).forEach(_ref3 => {\n let [routeId, error] = _ref3;\n errors = Object.assign(errors || {}, {\n [routeId]: error\n });\n });\n }\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers = updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n return _extends({\n loaderData,\n errors\n }, shouldUpdateFetchers ? {\n fetchers: new Map(state.fetchers)\n } : {});\n }\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(key, routeId, href, opts) {\n if (isServer) {\n throw new Error(\"router.fetch() was called during the server render, but it shouldn't be. \" + \"You are likely calling a useFetcher() method in the body of your component. \" + \"Try moving it to a useEffect or a callback.\");\n }\n if (fetchControllers.has(key)) abortFetcher(key);\n let flushSync = (opts && opts.unstable_flushSync) === true;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(state.location, state.matches, basename, future.v7_prependBasename, href, future.v7_relativeSplatPath, routeId, opts == null ? void 0 : opts.relative);\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n if (!matches) {\n setFetcherError(key, routeId, getInternalRouterError(404, {\n pathname: normalizedPath\n }), {\n flushSync\n });\n return;\n }\n let {\n path,\n submission,\n error\n } = normalizeNavigateOptions(future.v7_normalizeFormMethod, true, normalizedPath, opts);\n if (error) {\n setFetcherError(key, routeId, error, {\n flushSync\n });\n return;\n }\n let match = getTargetMatch(matches, path);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(key, routeId, path, match, matches, flushSync, submission);\n return;\n }\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, {\n routeId,\n path\n });\n handleFetcherLoader(key, routeId, path, match, matches, flushSync, submission);\n }\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(key, routeId, path, match, requestMatches, flushSync, submission) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n if (!match.route.action && !match.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId\n });\n setFetcherError(key, routeId, error, {\n flushSync\n });\n return;\n }\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync\n });\n // Call the action for the fetcher\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(init.history, path, abortController.signal, submission);\n fetchControllers.set(key, abortController);\n let originatingLoadId = incrementingLoadId;\n let actionResult = await callLoaderOrAction(\"action\", fetchRequest, match, requestMatches, manifest, mapRouteProperties, basename, future.v7_relativeSplatPath);\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n // When using v7_fetcherPersist, we don't want errors bubbling up to the UI\n // or redirects processed for unmounted fetchers so we just revert them to\n // idle\n if (future.v7_fetcherPersist && deletedFetchers.has(key)) {\n if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // Let SuccessResult's fall through for revalidation\n } else {\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(state, actionResult, {\n fetcherSubmission: submission\n });\n }\n }\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n }\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, {\n type: \"defer-action\"\n });\n }\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(init.history, nextLocation, abortController.signal);\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches = state.navigation.state !== \"idle\" ? matchRoutes(routesToUse, state.navigation.location, basename) : state.matches;\n invariant(matches, \"Didn't find any matches after fetcher action\");\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(init.history, state, matches, submission, nextLocation, false, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, {\n [match.route.id]: actionResult.data\n }, undefined // No need to send through errors since we short circuit above\n );\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers.filter(rf => rf.key !== key).forEach(rf => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(undefined, existingFetcher ? existingFetcher.data : undefined);\n state.fetchers.set(staleKey, revalidatingFetcher);\n if (fetchControllers.has(staleKey)) {\n abortFetcher(staleKey);\n }\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n updateState({\n fetchers: new Map(state.fetchers)\n });\n let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach(rf => abortFetcher(rf.key));\n abortController.signal.addEventListener(\"abort\", abortPendingFetchRevalidations);\n let {\n results,\n loaderResults,\n fetcherResults\n } = await callLoadersAndMaybeResolveData(state.matches, matches, matchesToLoad, revalidatingFetchers, revalidationRequest);\n if (abortController.signal.aborted) {\n return;\n }\n abortController.signal.removeEventListener(\"abort\", abortPendingFetchRevalidations);\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach(r => fetchControllers.delete(r.key));\n let redirect = findRedirect(results);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey = revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n return startRedirectNavigation(state, redirect.result);\n }\n // Process and commit output from loaders\n let {\n loaderData,\n errors\n } = processLoaderData(state, state.matches, matchesToLoad, loaderResults, undefined, revalidatingFetchers, fetcherResults, activeDeferreds);\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n abortStaleFetchLoads(loadId);\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (state.navigation.state === \"loading\" && loadId > pendingNavigationLoadId) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers)\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(state.loaderData, loaderData, matches, errors),\n fetchers: new Map(state.fetchers)\n });\n isRevalidationRequired = false;\n }\n }\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(key, routeId, path, match, matches, flushSync, submission) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getLoadingFetcher(submission, existingFetcher ? existingFetcher.data : undefined), {\n flushSync\n });\n // Call the loader for this fetcher route match\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(init.history, path, abortController.signal);\n fetchControllers.set(key, abortController);\n let originatingLoadId = incrementingLoadId;\n let result = await callLoaderOrAction(\"loader\", fetchRequest, match, matches, manifest, mapRouteProperties, basename, future.v7_relativeSplatPath);\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result = (await resolveDeferredData(result, fetchRequest.signal, true)) || result;\n }\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n if (fetchRequest.signal.aborted) {\n return;\n }\n // We don't want errors bubbling up or redirects followed for unmounted\n // fetchers, so short circuit here if it was removed from the UI\n if (deletedFetchers.has(key)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(state, result);\n return;\n }\n }\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n // Put the fetcher back into an idle state\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(state, redirect, _temp2) {\n let {\n submission,\n fetcherSubmission,\n replace\n } = _temp2 === void 0 ? {} : _temp2;\n if (redirect.revalidate) {\n isRevalidationRequired = true;\n }\n let redirectLocation = createLocation(state.location, redirect.location, {\n _isRedirect: true\n });\n invariant(redirectLocation, \"Expected a location on the redirect navigation\");\n if (isBrowser) {\n let isDocumentReload = false;\n if (redirect.reloadDocument) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(redirect.location)) {\n const url = init.history.createURL(redirect.location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(redirect.location);\n } else {\n routerWindow.location.assign(redirect.location);\n }\n return;\n }\n }\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n let redirectHistoryAction = replace === true ? Action.Replace : Action.Push;\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let {\n formMethod,\n formAction,\n formEncType\n } = state.navigation;\n if (!submission && !fetcherSubmission && formMethod && formAction && formEncType) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (redirectPreserveMethodStatusCodes.has(redirect.status) && activeSubmission && isMutationMethod(activeSubmission.formMethod)) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: _extends({}, activeSubmission, {\n formAction: redirect.location\n }),\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(redirectLocation, submission);\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset\n });\n }\n }\n async function callLoadersAndMaybeResolveData(currentMatches, matches, matchesToLoad, fetchersToLoad, request) {\n // Call all navigation loaders and revalidating fetcher loaders in parallel,\n // then slice off the results into separate arrays so we can handle them\n // accordingly\n let results = await Promise.all([...matchesToLoad.map(match => callLoaderOrAction(\"loader\", request, match, matches, manifest, mapRouteProperties, basename, future.v7_relativeSplatPath)), ...fetchersToLoad.map(f => {\n if (f.matches && f.match && f.controller) {\n return callLoaderOrAction(\"loader\", createClientSideRequest(init.history, f.path, f.controller.signal), f.match, f.matches, manifest, mapRouteProperties, basename, future.v7_relativeSplatPath);\n } else {\n let error = {\n type: ResultType.error,\n error: getInternalRouterError(404, {\n pathname: f.path\n })\n };\n return error;\n }\n })]);\n let loaderResults = results.slice(0, matchesToLoad.length);\n let fetcherResults = results.slice(matchesToLoad.length);\n await Promise.all([resolveDeferredResults(currentMatches, matchesToLoad, loaderResults, loaderResults.map(() => request.signal), false, state.loaderData), resolveDeferredResults(currentMatches, fetchersToLoad.map(f => f.match), fetcherResults, fetchersToLoad.map(f => f.controller ? f.controller.signal : null), true)]);\n return {\n results,\n loaderResults,\n fetcherResults\n };\n }\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.push(key);\n abortFetcher(key);\n }\n });\n }\n function updateFetcherState(key, fetcher, opts) {\n if (opts === void 0) {\n opts = {};\n }\n state.fetchers.set(key, fetcher);\n updateState({\n fetchers: new Map(state.fetchers)\n }, {\n flushSync: (opts && opts.flushSync) === true\n });\n }\n function setFetcherError(key, routeId, error, opts) {\n if (opts === void 0) {\n opts = {};\n }\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState({\n errors: {\n [boundaryMatch.route.id]: error\n },\n fetchers: new Map(state.fetchers)\n }, {\n flushSync: (opts && opts.flushSync) === true\n });\n }\n function getFetcher(key) {\n if (future.v7_fetcherPersist) {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n // If this fetcher was previously marked for deletion, unmark it since we\n // have a new instance\n if (deletedFetchers.has(key)) {\n deletedFetchers.delete(key);\n }\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n function deleteFetcher(key) {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (fetchControllers.has(key) && !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n deletedFetchers.delete(key);\n state.fetchers.delete(key);\n }\n function deleteFetcherAndUpdateState(key) {\n if (future.v7_fetcherPersist) {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n deletedFetchers.add(key);\n } else {\n activeFetchers.set(key, count);\n }\n } else {\n deleteFetcher(key);\n }\n updateState({\n fetchers: new Map(state.fetchers)\n });\n }\n function abortFetcher(key) {\n let controller = fetchControllers.get(key);\n invariant(controller, \"Expected fetch controller: \" + key);\n controller.abort();\n fetchControllers.delete(key);\n }\n function markFetchersDone(keys) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n function markFetchRedirectsDone() {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, \"Expected fetcher: \" + key);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n function abortStaleFetchLoads(landedId) {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, \"Expected fetcher: \" + key);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n function getBlocker(key, fn) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n return blocker;\n }\n function deleteBlocker(key) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key, newBlocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(blocker.state === \"unblocked\" && newBlocker.state === \"blocked\" || blocker.state === \"blocked\" && newBlocker.state === \"blocked\" || blocker.state === \"blocked\" && newBlocker.state === \"proceeding\" || blocker.state === \"blocked\" && newBlocker.state === \"unblocked\" || blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\", \"Invalid blocker state transition: \" + blocker.state + \" -> \" + newBlocker.state);\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({\n blockers\n });\n }\n function shouldBlockNavigation(_ref4) {\n let {\n currentLocation,\n nextLocation,\n historyAction\n } = _ref4;\n if (blockerFunctions.size === 0) {\n return;\n }\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({\n currentLocation,\n nextLocation,\n historyAction\n })) {\n return blockerKey;\n }\n }\n function cancelActiveDeferreds(predicate) {\n let cancelledRouteIds = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(positions, getPosition, getKey) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({\n restoreScrollPosition: y\n });\n }\n }\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n function getScrollKey(location, matches) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(location, matches.map(m => convertRouteMatchToUiMatch(m, state.loaderData)));\n return key || location.key;\n }\n return location.key;\n }\n function saveScrollPosition(location, matches) {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n function getSavedScrollPosition(location, matches) {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n function _internalSetRoutes(newRoutes) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(newRoutes, mapRouteProperties, undefined, manifest);\n }\n router = {\n get basename() {\n return basename;\n },\n get future() {\n return future;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: to => init.history.createHref(to),\n encodeLocation: to => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher: deleteFetcherAndUpdateState,\n dispose,\n getBlocker,\n deleteBlocker,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes\n };\n return router;\n}\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\nconst UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\nfunction createStaticHandler(routes, opts) {\n invariant(routes.length > 0, \"You must provide a non-empty routes array to createStaticHandler\");\n let manifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties;\n if (opts != null && opts.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts != null && opts.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = route => ({\n hasErrorBoundary: detectErrorBoundary(route)\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Config driven behavior flags\n let future = _extends({\n v7_relativeSplatPath: false,\n v7_throwAbortReason: false\n }, opts ? opts.future : null);\n let dataRoutes = convertRoutesToDataRoutes(routes, mapRouteProperties, undefined, manifest);\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n */\n async function query(request, _temp3) {\n let {\n requestContext\n } = _temp3 === void 0 ? {} : _temp3;\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, {\n method\n });\n let {\n matches: methodNotAllowedMatches,\n route\n } = getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, {\n pathname: location.pathname\n });\n let {\n matches: notFoundMatches,\n route\n } = getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null\n };\n }\n let result = await queryImpl(request, location, matches, requestContext);\n if (isResponse(result)) {\n return result;\n }\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return _extends({\n location,\n basename\n }, result);\n }\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n */\n async function queryRoute(request, _temp4) {\n let {\n routeId,\n requestContext\n } = _temp4 === void 0 ? {} : _temp4;\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, {\n method\n });\n } else if (!matches) {\n throw getInternalRouterError(404, {\n pathname: location.pathname\n });\n }\n let match = routeId ? matches.find(m => m.route.id === routeId) : getTargetMatch(matches, location);\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, {\n pathname: location.pathname\n });\n }\n let result = await queryImpl(request, location, matches, requestContext, match);\n if (isResponse(result)) {\n return result;\n }\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n if (result.loaderData) {\n var _result$activeDeferre;\n let data = Object.values(result.loaderData)[0];\n if ((_result$activeDeferre = result.activeDeferreds) != null && _result$activeDeferre[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n return undefined;\n }\n async function queryImpl(request, location, matches, requestContext, routeMatch) {\n invariant(request.signal, \"query()/queryRoute() requests must contain an AbortController signal\");\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(request, matches, routeMatch || getTargetMatch(matches, location), requestContext, routeMatch != null);\n return result;\n }\n let result = await loadRouteData(request, matches, requestContext, routeMatch);\n return isResponse(result) ? result : _extends({}, result, {\n actionData: null,\n actionHeaders: {}\n });\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction, we throw\n // it to bail out and then return or throw here based on whether the user\n // returned or threw\n if (isQueryRouteResponse(e)) {\n if (e.type === ResultType.error) {\n throw e.response;\n }\n return e.response;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n async function submit(request, matches, actionMatch, requestContext, isRouteRequest) {\n let result;\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error\n };\n } else {\n result = await callLoaderOrAction(\"action\", request, actionMatch, matches, manifest, mapRouteProperties, basename, future.v7_relativeSplatPath, {\n isStaticRequest: true,\n isRouteRequest,\n requestContext\n });\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n }\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.status,\n headers: {\n Location: result.location\n }\n });\n }\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, {\n type: \"defer-action\"\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error\n };\n }\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: {\n [actionMatch.route.id]: result.data\n },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null\n };\n }\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n let context = await loadRouteData(request, matches, requestContext, undefined, {\n [boundaryMatch.route.id]: result.error\n });\n // action status codes take precedence over loader status codes\n return _extends({}, context, {\n statusCode: isRouteErrorResponse(result.error) ? result.error.status : 500,\n actionData: null,\n actionHeaders: _extends({}, result.headers ? {\n [actionMatch.route.id]: result.headers\n } : {})\n });\n }\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal\n });\n let context = await loadRouteData(loaderRequest, matches, requestContext);\n return _extends({}, context, result.statusCode ? {\n statusCode: result.statusCode\n } : {}, {\n actionData: {\n [actionMatch.route.id]: result.data\n },\n actionHeaders: _extends({}, result.headers ? {\n [actionMatch.route.id]: result.headers\n } : {})\n });\n }\n async function loadRouteData(request, matches, requestContext, routeMatch, pendingActionError) {\n let isRouteRequest = routeMatch != null;\n // Short circuit if we have no loaders to run (queryRoute())\n if (isRouteRequest && !(routeMatch != null && routeMatch.route.loader) && !(routeMatch != null && routeMatch.route.lazy)) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch == null ? void 0 : routeMatch.route.id\n });\n }\n let requestMatches = routeMatch ? [routeMatch] : getLoaderMatchesUntilBoundary(matches, Object.keys(pendingActionError || {})[0]);\n let matchesToLoad = requestMatches.filter(m => m.route.loader || m.route.lazy);\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce((acc, m) => Object.assign(acc, {\n [m.route.id]: null\n }), {}),\n errors: pendingActionError || null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null\n };\n }\n let results = await Promise.all([...matchesToLoad.map(match => callLoaderOrAction(\"loader\", request, match, matches, manifest, mapRouteProperties, basename, future.v7_relativeSplatPath, {\n isStaticRequest: true,\n isRouteRequest,\n requestContext\n }))]);\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(matches, matchesToLoad, results, pendingActionError, activeDeferreds);\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(matchesToLoad.map(match => match.route.id));\n matches.forEach(match => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n return _extends({}, context, {\n matches,\n activeDeferreds: activeDeferreds.size > 0 ? Object.fromEntries(activeDeferreds.entries()) : null\n });\n }\n return {\n dataRoutes,\n query,\n queryRoute\n };\n}\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nfunction getStaticContextFromError(routes, context, error) {\n let newContext = _extends({}, context, {\n statusCode: isRouteErrorResponse(error) ? error.status : 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error\n }\n });\n return newContext;\n}\nfunction throwStaticHandlerAbortedError(request, isRouteRequest, future) {\n if (future.v7_throwAbortReason && request.signal.reason !== undefined) {\n throw request.signal.reason;\n }\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(method + \"() call aborted: \" + request.method + \" \" + request.url);\n}\nfunction isSubmissionNavigation(opts) {\n return opts != null && (\"formData\" in opts && opts.formData != null || \"body\" in opts && opts.body !== undefined);\n}\nfunction normalizeTo(location, matches, basename, prependBasename, to, v7_relativeSplatPath, fromRouteId, relative) {\n let contextualMatches;\n let activeRouteMatch;\n if (fromRouteId) {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n // Resolve the relative path\n let path = resolveTo(to ? to : \".\", getResolveToMatches(contextualMatches, v7_relativeSplatPath), stripBasename(location.pathname, basename) || location.pathname, relative === \"path\");\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n // Add an ?index param for matched index routes if we don't already have one\n if ((to == null || to === \"\" || to === \".\") && activeRouteMatch && activeRouteMatch.route.index && !hasNakedIndexQuery(path.search)) {\n path.search = path.search ? path.search.replace(/^\\?/, \"?index&\") : \"?index\";\n }\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n return createPath(path);\n}\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(normalizeFormMethod, isFetcher, path, opts) {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return {\n path\n };\n }\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, {\n method: opts.formMethod\n })\n };\n }\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, {\n type: \"invalid-body\"\n })\n });\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod ? rawFormMethod.toUpperCase() : rawFormMethod.toLowerCase();\n let formAction = stripHashFromPath(path);\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n let text = typeof opts.body === \"string\" ? opts.body : opts.body instanceof FormData || opts.body instanceof URLSearchParams ?\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce((acc, _ref5) => {\n let [name, value] = _ref5;\n return \"\" + acc + name + \"=\" + value + \"\\n\";\n }, \"\") : String(opts.body);\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text\n }\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n try {\n let json = typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined\n }\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n invariant(typeof FormData === \"function\", \"FormData is not available in this environment\");\n let searchParams;\n let formData;\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n let submission = {\n formMethod,\n formAction,\n formEncType: opts && opts.formEncType || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined\n };\n if (isMutationMethod(submission.formMethod)) {\n return {\n path,\n submission\n };\n }\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = \"?\" + searchParams;\n return {\n path: createPath(parsedPath),\n submission\n };\n}\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(matches, boundaryId) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex(m => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\nfunction getMatchesToLoad(history, state, matches, submission, location, isInitialLoad, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, pendingActionData, pendingError) {\n let actionResult = pendingError ? Object.values(pendingError)[0] : pendingActionData ? Object.values(pendingActionData)[0] : undefined;\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId = pendingError ? Object.keys(pendingError)[0] : undefined;\n let boundaryMatches = getLoaderMatchesUntilBoundary(matches, boundaryId);\n let navigationMatches = boundaryMatches.filter((match, index) => {\n let {\n route\n } = match;\n if (route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n if (route.loader == null) {\n return false;\n }\n if (isInitialLoad) {\n if (route.loader.hydrate) {\n return true;\n }\n return state.loaderData[route.id] === undefined && (\n // Don't re-run if the loader ran and threw an error\n !state.errors || state.errors[route.id] === undefined);\n }\n // Always call the loader on new route instances and pending defer cancellations\n if (isNewLoader(state.loaderData, state.matches[index], match) || cancelledDeferredRoutes.some(id => id === match.route.id)) {\n return true;\n }\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n return shouldRevalidateLoader(match, _extends({\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params\n }, submission, {\n actionResult,\n defaultShouldRevalidate:\n // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n // Clicked the same link, resubmitted a GET form\n currentUrl.pathname + currentUrl.search === nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search || isNewRouteInstance(currentRouteMatch, nextRouteMatch)\n }));\n });\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate:\n // - on initial load (shouldn't be any fetchers then anyway)\n // - if fetcher won't be present in the subsequent render\n // - no longer matches the URL (v7_fetcherPersist=false)\n // - was unmounted but persisted due to v7_fetcherPersist=true\n if (isInitialLoad || !matches.some(m => m.route.id === f.routeId) || deletedFetchers.has(key)) {\n return;\n }\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null\n });\n return;\n }\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.includes(key)) {\n // Always revalidate if the fetcher was cancelled\n shouldRevalidate = true;\n } else if (fetcher && fetcher.state !== \"idle\" && fetcher.data === undefined) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, _extends({\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params\n }, submission, {\n actionResult,\n defaultShouldRevalidate: isRevalidationRequired\n }));\n }\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController()\n });\n }\n });\n return [navigationMatches, revalidatingFetchers];\n}\nfunction isNewLoader(currentLoaderData, currentMatch, match) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\nfunction isNewRouteInstance(currentMatch, match) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n currentPath != null && currentPath.endsWith(\"*\") && currentMatch.params[\"*\"] !== match.params[\"*\"]\n );\n}\nfunction shouldRevalidateLoader(loaderMatch, arg) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n return arg.defaultShouldRevalidate;\n}\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(route, mapRouteProperties, manifest) {\n if (!route.lazy) {\n return;\n }\n let lazyRoute = await route.lazy();\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue = routeToUpdate[lazyRouteProperty];\n let isPropertyStaticallyDefined = staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n warning(!isPropertyStaticallyDefined, \"Route \\\"\" + routeToUpdate.id + \"\\\" has a static property \\\"\" + lazyRouteProperty + \"\\\" \" + \"defined but its lazy function is also returning a value for this property. \" + (\"The lazy route property \\\"\" + lazyRouteProperty + \"\\\" will be ignored.\"));\n if (!isPropertyStaticallyDefined && !immutableRouteKeys.has(lazyRouteProperty)) {\n routeUpdates[lazyRouteProperty] = lazyRoute[lazyRouteProperty];\n }\n }\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, _extends({}, mapRouteProperties(routeToUpdate), {\n lazy: undefined\n }));\n}\nasync function callLoaderOrAction(type, request, match, matches, manifest, mapRouteProperties, basename, v7_relativeSplatPath, opts) {\n if (opts === void 0) {\n opts = {};\n }\n let resultType;\n let result;\n let onReject;\n let runHandler = handler => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject;\n let abortPromise = new Promise((_, r) => reject = r);\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n return Promise.race([handler({\n request,\n params: match.params,\n context: opts.requestContext\n }), abortPromise]);\n };\n try {\n let handler = match.route[type];\n if (match.route.lazy) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let values = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch(e => {\n handlerError = e;\n }), loadLazyRouteModule(match.route, mapRouteProperties, manifest)]);\n if (handlerError) {\n throw handlerError;\n }\n result = values[0];\n } else {\n // Load lazy route module, then run any returned handler\n await loadLazyRouteModule(match.route, mapRouteProperties, manifest);\n handler = match.route[type];\n if (handler) {\n // Handler still run even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return {\n type: ResultType.data,\n data: undefined\n };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname\n });\n } else {\n result = await runHandler(handler);\n }\n invariant(result !== undefined, \"You defined \" + (type === \"action\" ? \"an action\" : \"a loader\") + \" for route \" + (\"\\\"\" + match.route.id + \"\\\" but didn't return anything from your `\" + type + \"` \") + \"function. Please return a value or `null`.\");\n } catch (e) {\n resultType = ResultType.error;\n result = e;\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n if (isResponse(result)) {\n let status = result.status;\n // Process redirects\n if (redirectStatusCodes.has(status)) {\n let location = result.headers.get(\"Location\");\n invariant(location, \"Redirects returned/thrown from loaders/actions must have a Location header\");\n // Support relative routing in internal redirects\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n location = normalizeTo(new URL(request.url), matches.slice(0, matches.indexOf(match) + 1), basename, true, location, v7_relativeSplatPath);\n } else if (!opts.isStaticRequest) {\n // Strip off the protocol+origin for same-origin + same-basename absolute\n // redirects. If this is a static request, we can let it go back to the\n // browser as-is\n let currentUrl = new URL(request.url);\n let url = location.startsWith(\"//\") ? new URL(currentUrl.protocol + location) : new URL(location);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n location = url.pathname + url.search + url.hash;\n }\n }\n // Don't process redirects in the router during static requests requests.\n // Instead, throw the Response and let the server handle it with an HTTP\n // redirect. We also update the Location header in place in this flow so\n // basename and relative routing is taken into account\n if (opts.isStaticRequest) {\n result.headers.set(\"Location\", location);\n throw result;\n }\n return {\n type: ResultType.redirect,\n status,\n location,\n revalidate: result.headers.get(\"X-Remix-Revalidate\") !== null,\n reloadDocument: result.headers.get(\"X-Remix-Reload-Document\") !== null\n };\n }\n // For SSR single-route requests, we want to hand Responses back directly\n // without unwrapping. We do this with the QueryRouteResponse wrapper\n // interface so we can know whether it was returned or thrown\n if (opts.isRouteRequest) {\n let queryRouteResponse = {\n type: resultType === ResultType.error ? ResultType.error : ResultType.data,\n response: result\n };\n throw queryRouteResponse;\n }\n let data;\n try {\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n if (result.body == null) {\n data = null;\n } else {\n data = await result.json();\n }\n } else {\n data = await result.text();\n }\n } catch (e) {\n return {\n type: ResultType.error,\n error: e\n };\n }\n if (resultType === ResultType.error) {\n return {\n type: resultType,\n error: new ErrorResponseImpl(status, result.statusText, data),\n headers: result.headers\n };\n }\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers\n };\n }\n if (resultType === ResultType.error) {\n return {\n type: resultType,\n error: result\n };\n }\n if (isDeferredData(result)) {\n var _result$init, _result$init2;\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: (_result$init = result.init) == null ? void 0 : _result$init.status,\n headers: ((_result$init2 = result.init) == null ? void 0 : _result$init2.headers) && new Headers(result.init.headers)\n };\n }\n return {\n type: ResultType.data,\n data: result\n };\n}\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(history, location, signal, submission) {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init = {\n signal\n };\n if (submission && isMutationMethod(submission.formMethod)) {\n let {\n formMethod,\n formEncType\n } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n if (formEncType === \"application/json\") {\n init.headers = new Headers({\n \"Content-Type\": formEncType\n });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (formEncType === \"application/x-www-form-urlencoded\" && submission.formData) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n return new Request(url, init);\n}\nfunction convertFormDataToSearchParams(formData) {\n let searchParams = new URLSearchParams();\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n return searchParams;\n}\nfunction convertSearchParamsToFormData(searchParams) {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\nfunction processRouteLoaderData(matches, matchesToLoad, results, pendingError, activeDeferreds) {\n // Fill in loaderData/errors from our loaders\n let loaderData = {};\n let errors = null;\n let statusCode;\n let foundError = false;\n let loaderHeaders = {};\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(!isRedirectResult(result), \"Cannot handle redirect results in processLoaderData\");\n if (isErrorResult(result)) {\n // Look upwards from the matched route for the closest ancestor\n // error boundary, defaulting to the root match\n let boundaryMatch = findNearestBoundary(matches, id);\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError) {\n error = Object.values(pendingError)[0];\n pendingError = undefined;\n }\n errors = errors || {};\n // Prefer higher error values if lower errors bubble to the same boundary\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error) ? result.error.status : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n } else {\n loaderData[id] = result.data;\n }\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (result.statusCode != null && result.statusCode !== 200 && !foundError) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n });\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError) {\n errors = pendingError;\n loaderData[Object.keys(pendingError)[0]] = undefined;\n }\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders\n };\n}\nfunction processLoaderData(state, matches, matchesToLoad, results, pendingError, revalidatingFetchers, fetcherResults, activeDeferreds) {\n let {\n loaderData,\n errors\n } = processRouteLoaderData(matches, matchesToLoad, results, pendingError, activeDeferreds);\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let {\n key,\n match,\n controller\n } = revalidatingFetchers[index];\n invariant(fetcherResults !== undefined && fetcherResults[index] !== undefined, \"Did not find corresponding fetcher result\");\n let result = fetcherResults[index];\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n continue;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match == null ? void 0 : match.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = _extends({}, errors, {\n [boundaryMatch.route.id]: result.error\n });\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n return {\n loaderData,\n errors\n };\n}\nfunction mergeLoaderData(loaderData, newLoaderData, matches, errors) {\n let mergedLoaderData = _extends({}, newLoaderData);\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(matches, routeId) {\n let eligibleMatches = routeId ? matches.slice(0, matches.findIndex(m => m.route.id === routeId) + 1) : [...matches];\n return eligibleMatches.reverse().find(m => m.route.hasErrorBoundary === true) || matches[0];\n}\nfunction getShortCircuitMatches(routes) {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route = routes.length === 1 ? routes[0] : routes.find(r => r.index || !r.path || r.path === \"/\") || {\n id: \"__shim-error-route__\"\n };\n return {\n matches: [{\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route\n }],\n route\n };\n}\nfunction getInternalRouterError(status, _temp5) {\n let {\n pathname,\n routeId,\n method,\n type\n } = _temp5 === void 0 ? {} : _temp5;\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage = \"You made a \" + method + \" request to \\\"\" + pathname + \"\\\" but \" + (\"did not provide a `loader` for route \\\"\" + routeId + \"\\\", \") + \"so there is no way to handle the request.\";\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = \"Route \\\"\" + routeId + \"\\\" does not match URL \\\"\" + pathname + \"\\\"\";\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = \"No route matches URL \\\"\" + pathname + \"\\\"\";\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage = \"You made a \" + method.toUpperCase() + \" request to \\\"\" + pathname + \"\\\" but \" + (\"did not provide an `action` for route \\\"\" + routeId + \"\\\", \") + \"so there is no way to handle the request.\";\n } else if (method) {\n errorMessage = \"Invalid request method \\\"\" + method.toUpperCase() + \"\\\"\";\n }\n }\n return new ErrorResponseImpl(status || 500, statusText, new Error(errorMessage), true);\n}\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(results) {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return {\n result,\n idx: i\n };\n }\n }\n}\nfunction stripHashFromPath(path) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath(_extends({}, parsedPath, {\n hash: \"\"\n }));\n}\nfunction isHashChangeOnly(a, b) {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\nfunction isDeferredResult(result) {\n return result.type === ResultType.deferred;\n}\nfunction isErrorResult(result) {\n return result.type === ResultType.error;\n}\nfunction isRedirectResult(result) {\n return (result && result.type) === ResultType.redirect;\n}\nfunction isDeferredData(value) {\n let deferred = value;\n return deferred && typeof deferred === \"object\" && typeof deferred.data === \"object\" && typeof deferred.subscribe === \"function\" && typeof deferred.cancel === \"function\" && typeof deferred.resolveData === \"function\";\n}\nfunction isResponse(value) {\n return value != null && typeof value.status === \"number\" && typeof value.statusText === \"string\" && typeof value.headers === \"object\" && typeof value.body !== \"undefined\";\n}\nfunction isRedirectResponse(result) {\n if (!isResponse(result)) {\n return false;\n }\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\nfunction isQueryRouteResponse(obj) {\n return obj && isResponse(obj.response) && (obj.type === ResultType.data || obj.type === ResultType.error);\n}\nfunction isValidMethod(method) {\n return validRequestMethods.has(method.toLowerCase());\n}\nfunction isMutationMethod(method) {\n return validMutationMethods.has(method.toLowerCase());\n}\nasync function resolveDeferredResults(currentMatches, matchesToLoad, results, signals, isFetcher, currentLoaderData) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n let currentMatch = currentMatches.find(m => m.route.id === match.route.id);\n let isRevalidatingLoader = currentMatch != null && !isNewRouteInstance(currentMatch, match) && (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n let signal = signals[index];\n invariant(signal, \"Expected an AbortSignal for revalidating fetcher deferred result\");\n await resolveDeferredData(result, signal, isFetcher).then(result => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\nasync function resolveDeferredData(result, signal, unwrap) {\n if (unwrap === void 0) {\n unwrap = false;\n }\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e\n };\n }\n }\n return {\n type: ResultType.data,\n data: result.deferredData.data\n };\n}\nfunction hasNakedIndexQuery(search) {\n return new URLSearchParams(search).getAll(\"index\").some(v => v === \"\");\n}\nfunction getTargetMatch(matches, location) {\n let search = typeof location === \"string\" ? parsePath(location).search : location.search;\n if (matches[matches.length - 1].route.index && hasNakedIndexQuery(search || \"\")) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\nfunction getSubmissionFromNavigation(navigation) {\n let {\n formMethod,\n formAction,\n formEncType,\n text,\n formData,\n json\n } = navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined\n };\n }\n}\nfunction getLoadingNavigation(location, submission) {\n if (submission) {\n let navigation = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text\n };\n return navigation;\n } else {\n let navigation = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined\n };\n return navigation;\n }\n}\nfunction getSubmittingNavigation(location, submission) {\n let navigation = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text\n };\n return navigation;\n}\nfunction getLoadingFetcher(submission, data) {\n if (submission) {\n let fetcher = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data\n };\n return fetcher;\n } else {\n let fetcher = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data\n };\n return fetcher;\n }\n}\nfunction getSubmittingFetcher(submission, existingFetcher) {\n let fetcher = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined\n };\n return fetcher;\n}\nfunction getDoneFetcher(data) {\n let fetcher = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data\n };\n return fetcher;\n}\nfunction restoreAppliedTransitions(_window, transitions) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(TRANSITIONS_STORAGE_KEY);\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n // no-op, use default empty object\n }\n}\nfunction persistAppliedTransitions(_window, transitions) {\n if (transitions.size > 0) {\n let json = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(TRANSITIONS_STORAGE_KEY, JSON.stringify(json));\n } catch (error) {\n warning(false, \"Failed to save applied view transitions in sessionStorage (\" + error + \").\");\n }\n }\n}\n//#endregion\n\nexport { AbortedDeferredError, Action, IDLE_BLOCKER, IDLE_FETCHER, IDLE_NAVIGATION, UNSAFE_DEFERRED_SYMBOL, DeferredData as UNSAFE_DeferredData, ErrorResponseImpl as UNSAFE_ErrorResponseImpl, convertRouteMatchToUiMatch as UNSAFE_convertRouteMatchToUiMatch, convertRoutesToDataRoutes as UNSAFE_convertRoutesToDataRoutes, getResolveToMatches as UNSAFE_getResolveToMatches, invariant as UNSAFE_invariant, warning as UNSAFE_warning, createBrowserHistory, createHashHistory, createMemoryHistory, createPath, createRouter, createStaticHandler, defer, generatePath, getStaticContextFromError, getToPathname, isDeferredData, isRouteErrorResponse, joinPaths, json, matchPath, matchRoutes, normalizePathname, parsePath, redirect, redirectDocument, resolvePath, resolveTo, stripBasename };\n//# sourceMappingURL=router.js.map\n","var V3_URL = 'https://js.stripe.com/v3';\nvar V3_URL_REGEX = /^https:\\/\\/js\\.stripe\\.com\\/v3\\/?(\\?.*)?$/;\nvar EXISTING_SCRIPT_MESSAGE = 'loadStripe.setLoadParameters was called but an existing Stripe.js script already exists in the document; existing script parameters will be used';\nvar findScript = function findScript() {\n var scripts = document.querySelectorAll(\"script[src^=\\\"\".concat(V3_URL, \"\\\"]\"));\n\n for (var i = 0; i < scripts.length; i++) {\n var script = scripts[i];\n\n if (!V3_URL_REGEX.test(script.src)) {\n continue;\n }\n\n return script;\n }\n\n return null;\n};\n\nvar injectScript = function injectScript(params) {\n var queryString = params && !params.advancedFraudSignals ? '?advancedFraudSignals=false' : '';\n var script = document.createElement('script');\n script.src = \"\".concat(V3_URL).concat(queryString);\n var headOrBody = document.head || document.body;\n\n if (!headOrBody) {\n throw new Error('Expected document.body not to be null. Stripe.js requires a element.');\n }\n\n headOrBody.appendChild(script);\n return script;\n};\n\nvar registerWrapper = function registerWrapper(stripe, startTime) {\n if (!stripe || !stripe._registerWrapper) {\n return;\n }\n\n stripe._registerWrapper({\n name: 'stripe-js',\n version: \"1.32.0\",\n startTime: startTime\n });\n};\n\nvar stripePromise = null;\nvar loadScript = function loadScript(params) {\n // Ensure that we only attempt to load Stripe.js at most once\n if (stripePromise !== null) {\n return stripePromise;\n }\n\n stripePromise = new Promise(function (resolve, reject) {\n if (typeof window === 'undefined') {\n // Resolve to null when imported server side. This makes the module\n // safe to import in an isomorphic code base.\n resolve(null);\n return;\n }\n\n if (window.Stripe && params) {\n console.warn(EXISTING_SCRIPT_MESSAGE);\n }\n\n if (window.Stripe) {\n resolve(window.Stripe);\n return;\n }\n\n try {\n var script = findScript();\n\n if (script && params) {\n console.warn(EXISTING_SCRIPT_MESSAGE);\n } else if (!script) {\n script = injectScript(params);\n }\n\n script.addEventListener('load', function () {\n if (window.Stripe) {\n resolve(window.Stripe);\n } else {\n reject(new Error('Stripe.js not available'));\n }\n });\n script.addEventListener('error', function () {\n reject(new Error('Failed to load Stripe.js'));\n });\n } catch (error) {\n reject(error);\n return;\n }\n });\n return stripePromise;\n};\nvar initStripe = function initStripe(maybeStripe, args, startTime) {\n if (maybeStripe === null) {\n return null;\n }\n\n var stripe = maybeStripe.apply(undefined, args);\n registerWrapper(stripe, startTime);\n return stripe;\n}; // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\n// own script injection.\n\nvar stripePromise$1 = Promise.resolve().then(function () {\n return loadScript(null);\n});\nvar loadCalled = false;\nstripePromise$1[\"catch\"](function (err) {\n if (!loadCalled) {\n console.warn(err);\n }\n});\nvar loadStripe = function loadStripe() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n loadCalled = true;\n var startTime = Date.now();\n return stripePromise$1.then(function (maybeStripe) {\n return initStripe(maybeStripe, args, startTime);\n });\n};\n\nexport { loadStripe };\n","\"use strict\";\n\n/**\n * Copyright (c) 2019-present, GraphQL Foundation\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n// A Function, which when given an Array of keys, returns a Promise of an Array\n// of values or Errors.\n// Optionally turn off batching or caching or provide a cache key function or a\n// custom cache instance.\n// If a custom cache is provided, it must be of this type (a subset of ES6 Map).\n\n/**\n * A `DataLoader` creates a public API for loading data from a particular\n * data back-end with unique keys such as the `id` column of a SQL table or\n * document name in a MongoDB database, given a batch loading function.\n *\n * Each `DataLoader` instance contains a unique memoized cache. Use caution when\n * used in long-lived applications or those which serve many users with\n * different access permissions and consider creating a new instance per\n * web request.\n */\nvar DataLoader =\n/*#__PURE__*/\nfunction () {\n function DataLoader(batchLoadFn, options) {\n if (typeof batchLoadFn !== 'function') {\n throw new TypeError('DataLoader must be constructed with a function which accepts ' + (\"Array and returns Promise>, but got: \" + batchLoadFn + \".\"));\n }\n\n this._batchLoadFn = batchLoadFn;\n this._maxBatchSize = getValidMaxBatchSize(options);\n this._batchScheduleFn = getValidBatchScheduleFn(options);\n this._cacheKeyFn = getValidCacheKeyFn(options);\n this._cacheMap = getValidCacheMap(options);\n this._batch = null;\n this.name = getValidName(options);\n } // Private\n\n\n var _proto = DataLoader.prototype;\n\n /**\n * Loads a key, returning a `Promise` for the value represented by that key.\n */\n _proto.load = function load(key) {\n if (key === null || key === undefined) {\n throw new TypeError('The loader.load() function must be called with a value, ' + (\"but got: \" + String(key) + \".\"));\n }\n\n var batch = getCurrentBatch(this);\n var cacheMap = this._cacheMap;\n\n var cacheKey = this._cacheKeyFn(key); // If caching and there is a cache-hit, return cached Promise.\n\n\n if (cacheMap) {\n var cachedPromise = cacheMap.get(cacheKey);\n\n if (cachedPromise) {\n var cacheHits = batch.cacheHits || (batch.cacheHits = []);\n return new Promise(function (resolve) {\n cacheHits.push(function () {\n resolve(cachedPromise);\n });\n });\n }\n } // Otherwise, produce a new Promise for this key, and enqueue it to be\n // dispatched along with the current batch.\n\n\n batch.keys.push(key);\n var promise = new Promise(function (resolve, reject) {\n batch.callbacks.push({\n resolve: resolve,\n reject: reject\n });\n }); // If caching, cache this promise.\n\n if (cacheMap) {\n cacheMap.set(cacheKey, promise);\n }\n\n return promise;\n }\n /**\n * Loads multiple keys, promising an array of values:\n *\n * var [ a, b ] = await myLoader.loadMany([ 'a', 'b' ]);\n *\n * This is similar to the more verbose:\n *\n * var [ a, b ] = await Promise.all([\n * myLoader.load('a'),\n * myLoader.load('b')\n * ]);\n *\n * However it is different in the case where any load fails. Where\n * Promise.all() would reject, loadMany() always resolves, however each result\n * is either a value or an Error instance.\n *\n * var [ a, b, c ] = await myLoader.loadMany([ 'a', 'b', 'badkey' ]);\n * // c instanceof Error\n *\n */\n ;\n\n _proto.loadMany = function loadMany(keys) {\n if (!isArrayLike(keys)) {\n throw new TypeError('The loader.loadMany() function must be called with Array ' + (\"but got: \" + keys + \".\"));\n } // Support ArrayLike by using only minimal property access\n\n\n var loadPromises = [];\n\n for (var i = 0; i < keys.length; i++) {\n loadPromises.push(this.load(keys[i])[\"catch\"](function (error) {\n return error;\n }));\n }\n\n return Promise.all(loadPromises);\n }\n /**\n * Clears the value at `key` from the cache, if it exists. Returns itself for\n * method chaining.\n */\n ;\n\n _proto.clear = function clear(key) {\n var cacheMap = this._cacheMap;\n\n if (cacheMap) {\n var cacheKey = this._cacheKeyFn(key);\n\n cacheMap[\"delete\"](cacheKey);\n }\n\n return this;\n }\n /**\n * Clears the entire cache. To be used when some event results in unknown\n * invalidations across this particular `DataLoader`. Returns itself for\n * method chaining.\n */\n ;\n\n _proto.clearAll = function clearAll() {\n var cacheMap = this._cacheMap;\n\n if (cacheMap) {\n cacheMap.clear();\n }\n\n return this;\n }\n /**\n * Adds the provided key and value to the cache. If the key already\n * exists, no change is made. Returns itself for method chaining.\n *\n * To prime the cache with an error at a key, provide an Error instance.\n */\n ;\n\n _proto.prime = function prime(key, value) {\n var cacheMap = this._cacheMap;\n\n if (cacheMap) {\n var cacheKey = this._cacheKeyFn(key); // Only add the key if it does not already exist.\n\n\n if (cacheMap.get(cacheKey) === undefined) {\n // Cache a rejected promise if the value is an Error, in order to match\n // the behavior of load(key).\n var promise;\n\n if (value instanceof Error) {\n promise = Promise.reject(value); // Since this is a case where an Error is intentionally being primed\n // for a given key, we want to disable unhandled promise rejection.\n\n promise[\"catch\"](function () {});\n } else {\n promise = Promise.resolve(value);\n }\n\n cacheMap.set(cacheKey, promise);\n }\n }\n\n return this;\n }\n /**\n * The name given to this `DataLoader` instance. Useful for APM tools.\n *\n * Is `null` if not set in the constructor.\n */\n ;\n\n return DataLoader;\n}(); // Private: Enqueue a Job to be executed after all \"PromiseJobs\" Jobs.\n//\n// ES6 JavaScript uses the concepts Job and JobQueue to schedule work to occur\n// after the current execution context has completed:\n// http://www.ecma-international.org/ecma-262/6.0/#sec-jobs-and-job-queues\n//\n// Node.js uses the `process.nextTick` mechanism to implement the concept of a\n// Job, maintaining a global FIFO JobQueue for all Jobs, which is flushed after\n// the current call stack ends.\n//\n// When calling `then` on a Promise, it enqueues a Job on a specific\n// \"PromiseJobs\" JobQueue which is flushed in Node as a single Job on the\n// global JobQueue.\n//\n// DataLoader batches all loads which occur in a single frame of execution, but\n// should include in the batch all loads which occur during the flushing of the\n// \"PromiseJobs\" JobQueue after that same execution frame.\n//\n// In order to avoid the DataLoader dispatch Job occuring before \"PromiseJobs\",\n// A Promise Job is created with the sole purpose of enqueuing a global Job,\n// ensuring that it always occurs after \"PromiseJobs\" ends.\n//\n// Node.js's job queue is unique. Browsers do not have an equivalent mechanism\n// for enqueuing a job to be performed after promise microtasks and before the\n// next macrotask. For browser environments, a macrotask is used (via\n// setImmediate or setTimeout) at a potential performance penalty.\n\n\nvar enqueuePostPromiseJob = typeof process === 'object' && typeof process.nextTick === 'function' ? function (fn) {\n if (!resolvedPromise) {\n resolvedPromise = Promise.resolve();\n }\n\n resolvedPromise.then(function () {\n process.nextTick(fn);\n });\n} : typeof setImmediate === 'function' ? function (fn) {\n setImmediate(fn);\n} : function (fn) {\n setTimeout(fn);\n}; // Private: cached resolved Promise instance\n\nvar resolvedPromise; // Private: Describes a batch of requests\n\n// Private: Either returns the current batch, or creates and schedules a\n// dispatch of a new batch for the given loader.\nfunction getCurrentBatch(loader) {\n // If there is an existing batch which has not yet dispatched and is within\n // the limit of the batch size, then return it.\n var existingBatch = loader._batch;\n\n if (existingBatch !== null && !existingBatch.hasDispatched && existingBatch.keys.length < loader._maxBatchSize) {\n return existingBatch;\n } // Otherwise, create a new batch for this loader.\n\n\n var newBatch = {\n hasDispatched: false,\n keys: [],\n callbacks: []\n }; // Store it on the loader so it may be reused.\n\n loader._batch = newBatch; // Then schedule a task to dispatch this batch of requests.\n\n loader._batchScheduleFn(function () {\n dispatchBatch(loader, newBatch);\n });\n\n return newBatch;\n}\n\nfunction dispatchBatch(loader, batch) {\n // Mark this batch as having been dispatched.\n batch.hasDispatched = true; // If there's nothing to load, resolve any cache hits and return early.\n\n if (batch.keys.length === 0) {\n resolveCacheHits(batch);\n return;\n } // Call the provided batchLoadFn for this loader with the batch's keys and\n // with the loader as the `this` context.\n\n\n var batchPromise;\n\n try {\n batchPromise = loader._batchLoadFn(batch.keys);\n } catch (e) {\n return failedDispatch(loader, batch, new TypeError('DataLoader must be constructed with a function which accepts ' + 'Array and returns Promise>, but the function ' + (\"errored synchronously: \" + String(e) + \".\")));\n } // Assert the expected response from batchLoadFn\n\n\n if (!batchPromise || typeof batchPromise.then !== 'function') {\n return failedDispatch(loader, batch, new TypeError('DataLoader must be constructed with a function which accepts ' + 'Array and returns Promise>, but the function did ' + (\"not return a Promise: \" + String(batchPromise) + \".\")));\n } // Await the resolution of the call to batchLoadFn.\n\n\n batchPromise.then(function (values) {\n // Assert the expected resolution from batchLoadFn.\n if (!isArrayLike(values)) {\n throw new TypeError('DataLoader must be constructed with a function which accepts ' + 'Array and returns Promise>, but the function did ' + (\"not return a Promise of an Array: \" + String(values) + \".\"));\n }\n\n if (values.length !== batch.keys.length) {\n throw new TypeError('DataLoader must be constructed with a function which accepts ' + 'Array and returns Promise>, but the function did ' + 'not return a Promise of an Array of the same length as the Array ' + 'of keys.' + (\"\\n\\nKeys:\\n\" + String(batch.keys)) + (\"\\n\\nValues:\\n\" + String(values)));\n } // Resolve all cache hits in the same micro-task as freshly loaded values.\n\n\n resolveCacheHits(batch); // Step through values, resolving or rejecting each Promise in the batch.\n\n for (var i = 0; i < batch.callbacks.length; i++) {\n var value = values[i];\n\n if (value instanceof Error) {\n batch.callbacks[i].reject(value);\n } else {\n batch.callbacks[i].resolve(value);\n }\n }\n })[\"catch\"](function (error) {\n failedDispatch(loader, batch, error);\n });\n} // Private: do not cache individual loads if the entire batch dispatch fails,\n// but still reject each request so they do not hang.\n\n\nfunction failedDispatch(loader, batch, error) {\n // Cache hits are resolved, even though the batch failed.\n resolveCacheHits(batch);\n\n for (var i = 0; i < batch.keys.length; i++) {\n loader.clear(batch.keys[i]);\n batch.callbacks[i].reject(error);\n }\n} // Private: Resolves the Promises for any cache hits in this batch.\n\n\nfunction resolveCacheHits(batch) {\n if (batch.cacheHits) {\n for (var i = 0; i < batch.cacheHits.length; i++) {\n batch.cacheHits[i]();\n }\n }\n} // Private: given the DataLoader's options, produce a valid max batch size.\n\n\nfunction getValidMaxBatchSize(options) {\n var shouldBatch = !options || options.batch !== false;\n\n if (!shouldBatch) {\n return 1;\n }\n\n var maxBatchSize = options && options.maxBatchSize;\n\n if (maxBatchSize === undefined) {\n return Infinity;\n }\n\n if (typeof maxBatchSize !== 'number' || maxBatchSize < 1) {\n throw new TypeError(\"maxBatchSize must be a positive number: \" + maxBatchSize);\n }\n\n return maxBatchSize;\n} // Private\n\n\nfunction getValidBatchScheduleFn(options) {\n var batchScheduleFn = options && options.batchScheduleFn;\n\n if (batchScheduleFn === undefined) {\n return enqueuePostPromiseJob;\n }\n\n if (typeof batchScheduleFn !== 'function') {\n throw new TypeError(\"batchScheduleFn must be a function: \" + batchScheduleFn);\n }\n\n return batchScheduleFn;\n} // Private: given the DataLoader's options, produce a cache key function.\n\n\nfunction getValidCacheKeyFn(options) {\n var cacheKeyFn = options && options.cacheKeyFn;\n\n if (cacheKeyFn === undefined) {\n return function (key) {\n return key;\n };\n }\n\n if (typeof cacheKeyFn !== 'function') {\n throw new TypeError(\"cacheKeyFn must be a function: \" + cacheKeyFn);\n }\n\n return cacheKeyFn;\n} // Private: given the DataLoader's options, produce a CacheMap to be used.\n\n\nfunction getValidCacheMap(options) {\n var shouldCache = !options || options.cache !== false;\n\n if (!shouldCache) {\n return null;\n }\n\n var cacheMap = options && options.cacheMap;\n\n if (cacheMap === undefined) {\n return new Map();\n }\n\n if (cacheMap !== null) {\n var cacheFunctions = ['get', 'set', 'delete', 'clear'];\n var missingFunctions = cacheFunctions.filter(function (fnName) {\n return cacheMap && typeof cacheMap[fnName] !== 'function';\n });\n\n if (missingFunctions.length !== 0) {\n throw new TypeError('Custom cacheMap missing methods: ' + missingFunctions.join(', '));\n }\n }\n\n return cacheMap;\n}\n\nfunction getValidName(options) {\n if (options && options.name) {\n return options.name;\n }\n\n return null;\n} // Private\n\n\nfunction isArrayLike(x) {\n return typeof x === 'object' && x !== null && typeof x.length === 'number' && (x.length === 0 || x.length > 0 && Object.prototype.hasOwnProperty.call(x, x.length - 1));\n}\n\nmodule.exports = DataLoader;","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}","import _typeof from \"./typeof.js\";\nexport default function toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","import _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\n\nvar arr = [];\nvar each = arr.forEach;\nvar slice = arr.slice;\nfunction defaults(obj) {\n each.call(slice.call(arguments, 1), function (source) {\n if (source) {\n for (var prop in source) {\n if (obj[prop] === undefined) obj[prop] = source[prop];\n }\n }\n });\n return obj;\n}\n\n// eslint-disable-next-line no-control-regex\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\nvar serializeCookie = function serializeCookie(name, val, options) {\n var opt = options || {};\n opt.path = opt.path || '/';\n var value = encodeURIComponent(val);\n var str = \"\".concat(name, \"=\").concat(value);\n\n if (opt.maxAge > 0) {\n var maxAge = opt.maxAge - 0;\n if (Number.isNaN(maxAge)) throw new Error('maxAge should be a Number');\n str += \"; Max-Age=\".concat(Math.floor(maxAge));\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n\n str += \"; Domain=\".concat(opt.domain);\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n\n str += \"; Path=\".concat(opt.path);\n }\n\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== 'function') {\n throw new TypeError('option expires is invalid');\n }\n\n str += \"; Expires=\".concat(opt.expires.toUTCString());\n }\n\n if (opt.httpOnly) str += '; HttpOnly';\n if (opt.secure) str += '; Secure';\n\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string' ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n\n case 'lax':\n str += '; SameSite=Lax';\n break;\n\n case 'strict':\n str += '; SameSite=Strict';\n break;\n\n case 'none':\n str += '; SameSite=None';\n break;\n\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n\n return str;\n};\n\nvar cookie = {\n create: function create(name, value, minutes, domain) {\n var cookieOptions = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n path: '/',\n sameSite: 'strict'\n };\n\n if (minutes) {\n cookieOptions.expires = new Date();\n cookieOptions.expires.setTime(cookieOptions.expires.getTime() + minutes * 60 * 1000);\n }\n\n if (domain) cookieOptions.domain = domain;\n document.cookie = serializeCookie(name, encodeURIComponent(value), cookieOptions);\n },\n read: function read(name) {\n var nameEQ = \"\".concat(name, \"=\");\n var ca = document.cookie.split(';');\n\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n\n while (c.charAt(0) === ' ') {\n c = c.substring(1, c.length);\n }\n\n if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);\n }\n\n return null;\n },\n remove: function remove(name) {\n this.create(name, '', -1);\n }\n};\nvar cookie$1 = {\n name: 'cookie',\n lookup: function lookup(options) {\n var found;\n\n if (options.lookupCookie && typeof document !== 'undefined') {\n var c = cookie.read(options.lookupCookie);\n if (c) found = c;\n }\n\n return found;\n },\n cacheUserLanguage: function cacheUserLanguage(lng, options) {\n if (options.lookupCookie && typeof document !== 'undefined') {\n cookie.create(options.lookupCookie, lng, options.cookieMinutes, options.cookieDomain, options.cookieOptions);\n }\n }\n};\n\nvar querystring = {\n name: 'querystring',\n lookup: function lookup(options) {\n var found;\n\n if (typeof window !== 'undefined') {\n var search = window.location.search;\n\n if (!window.location.search && window.location.hash && window.location.hash.indexOf('?') > -1) {\n search = window.location.hash.substring(window.location.hash.indexOf('?'));\n }\n\n var query = search.substring(1);\n var params = query.split('&');\n\n for (var i = 0; i < params.length; i++) {\n var pos = params[i].indexOf('=');\n\n if (pos > 0) {\n var key = params[i].substring(0, pos);\n\n if (key === options.lookupQuerystring) {\n found = params[i].substring(pos + 1);\n }\n }\n }\n }\n\n return found;\n }\n};\n\nvar hasLocalStorageSupport = null;\n\nvar localStorageAvailable = function localStorageAvailable() {\n if (hasLocalStorageSupport !== null) return hasLocalStorageSupport;\n\n try {\n hasLocalStorageSupport = window !== 'undefined' && window.localStorage !== null;\n var testKey = 'i18next.translate.boo';\n window.localStorage.setItem(testKey, 'foo');\n window.localStorage.removeItem(testKey);\n } catch (e) {\n hasLocalStorageSupport = false;\n }\n\n return hasLocalStorageSupport;\n};\n\nvar localStorage = {\n name: 'localStorage',\n lookup: function lookup(options) {\n var found;\n\n if (options.lookupLocalStorage && localStorageAvailable()) {\n var lng = window.localStorage.getItem(options.lookupLocalStorage);\n if (lng) found = lng;\n }\n\n return found;\n },\n cacheUserLanguage: function cacheUserLanguage(lng, options) {\n if (options.lookupLocalStorage && localStorageAvailable()) {\n window.localStorage.setItem(options.lookupLocalStorage, lng);\n }\n }\n};\n\nvar hasSessionStorageSupport = null;\n\nvar sessionStorageAvailable = function sessionStorageAvailable() {\n if (hasSessionStorageSupport !== null) return hasSessionStorageSupport;\n\n try {\n hasSessionStorageSupport = window !== 'undefined' && window.sessionStorage !== null;\n var testKey = 'i18next.translate.boo';\n window.sessionStorage.setItem(testKey, 'foo');\n window.sessionStorage.removeItem(testKey);\n } catch (e) {\n hasSessionStorageSupport = false;\n }\n\n return hasSessionStorageSupport;\n};\n\nvar sessionStorage = {\n name: 'sessionStorage',\n lookup: function lookup(options) {\n var found;\n\n if (options.lookupSessionStorage && sessionStorageAvailable()) {\n var lng = window.sessionStorage.getItem(options.lookupSessionStorage);\n if (lng) found = lng;\n }\n\n return found;\n },\n cacheUserLanguage: function cacheUserLanguage(lng, options) {\n if (options.lookupSessionStorage && sessionStorageAvailable()) {\n window.sessionStorage.setItem(options.lookupSessionStorage, lng);\n }\n }\n};\n\nvar navigator$1 = {\n name: 'navigator',\n lookup: function lookup(options) {\n var found = [];\n\n if (typeof navigator !== 'undefined') {\n if (navigator.languages) {\n // chrome only; not an array, so can't use .push.apply instead of iterating\n for (var i = 0; i < navigator.languages.length; i++) {\n found.push(navigator.languages[i]);\n }\n }\n\n if (navigator.userLanguage) {\n found.push(navigator.userLanguage);\n }\n\n if (navigator.language) {\n found.push(navigator.language);\n }\n }\n\n return found.length > 0 ? found : undefined;\n }\n};\n\nvar htmlTag = {\n name: 'htmlTag',\n lookup: function lookup(options) {\n var found;\n var htmlTag = options.htmlTag || (typeof document !== 'undefined' ? document.documentElement : null);\n\n if (htmlTag && typeof htmlTag.getAttribute === 'function') {\n found = htmlTag.getAttribute('lang');\n }\n\n return found;\n }\n};\n\nvar path = {\n name: 'path',\n lookup: function lookup(options) {\n var found;\n\n if (typeof window !== 'undefined') {\n var language = window.location.pathname.match(/\\/([a-zA-Z-]*)/g);\n\n if (language instanceof Array) {\n if (typeof options.lookupFromPathIndex === 'number') {\n if (typeof language[options.lookupFromPathIndex] !== 'string') {\n return undefined;\n }\n\n found = language[options.lookupFromPathIndex].replace('/', '');\n } else {\n found = language[0].replace('/', '');\n }\n }\n }\n\n return found;\n }\n};\n\nvar subdomain = {\n name: 'subdomain',\n lookup: function lookup(options) {\n // If given get the subdomain index else 1\n var lookupFromSubdomainIndex = typeof options.lookupFromSubdomainIndex === 'number' ? options.lookupFromSubdomainIndex + 1 : 1; // get all matches if window.location. is existing\n // first item of match is the match itself and the second is the first group macht which sould be the first subdomain match\n // is the hostname no public domain get the or option of localhost\n\n var language = typeof window !== 'undefined' && window.location && window.location.hostname && window.location.hostname.match(/^(\\w{2,5})\\.(([a-z0-9-]{1,63}\\.[a-z]{2,6})|localhost)/i); // if there is no match (null) return undefined\n\n if (!language) return undefined; // return the given group match\n\n return language[lookupFromSubdomainIndex];\n }\n};\n\nfunction getDefaults() {\n return {\n order: ['querystring', 'cookie', 'localStorage', 'sessionStorage', 'navigator', 'htmlTag'],\n lookupQuerystring: 'lng',\n lookupCookie: 'i18next',\n lookupLocalStorage: 'i18nextLng',\n lookupSessionStorage: 'i18nextLng',\n // cache user language\n caches: ['localStorage'],\n excludeCacheFor: ['cimode'] // cookieMinutes: 10,\n // cookieDomain: 'myDomain'\n\n };\n}\n\nvar Browser = /*#__PURE__*/function () {\n function Browser(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Browser);\n\n this.type = 'languageDetector';\n this.detectors = {};\n this.init(services, options);\n }\n\n _createClass(Browser, [{\n key: \"init\",\n value: function init(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var i18nOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.services = services;\n this.options = defaults(options, this.options || {}, getDefaults()); // backwards compatibility\n\n if (this.options.lookupFromUrlIndex) this.options.lookupFromPathIndex = this.options.lookupFromUrlIndex;\n this.i18nOptions = i18nOptions;\n this.addDetector(cookie$1);\n this.addDetector(querystring);\n this.addDetector(localStorage);\n this.addDetector(sessionStorage);\n this.addDetector(navigator$1);\n this.addDetector(htmlTag);\n this.addDetector(path);\n this.addDetector(subdomain);\n }\n }, {\n key: \"addDetector\",\n value: function addDetector(detector) {\n this.detectors[detector.name] = detector;\n }\n }, {\n key: \"detect\",\n value: function detect(detectionOrder) {\n var _this = this;\n\n if (!detectionOrder) detectionOrder = this.options.order;\n var detected = [];\n detectionOrder.forEach(function (detectorName) {\n if (_this.detectors[detectorName]) {\n var lookup = _this.detectors[detectorName].lookup(_this.options);\n\n if (lookup && typeof lookup === 'string') lookup = [lookup];\n if (lookup) detected = detected.concat(lookup);\n }\n });\n if (this.services.languageUtils.getBestMatchFromCodes) return detected; // new i18next v19.5.0\n\n return detected.length > 0 ? detected[0] : null; // a little backward compatibility\n }\n }, {\n key: \"cacheUserLanguage\",\n value: function cacheUserLanguage(lng, caches) {\n var _this2 = this;\n\n if (!caches) caches = this.options.caches;\n if (!caches) return;\n if (this.options.excludeCacheFor && this.options.excludeCacheFor.indexOf(lng) > -1) return;\n caches.forEach(function (cacheName) {\n if (_this2.detectors[cacheName]) _this2.detectors[cacheName].cacheUserLanguage(lng, _this2.options);\n });\n }\n }]);\n\n return Browser;\n}();\n\nBrowser.type = 'languageDetector';\n\nexport { Browser as default };\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"MediaQuery\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"MediaQuery\"] = factory(root[\"React\"]);\n})(this, (__WEBPACK_EXTERNAL_MODULE_react__) => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ \"./node_modules/css-mediaquery/index.js\":\n/*!**********************************************!*\\\n !*** ./node_modules/css-mediaquery/index.js ***!\n \\**********************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\n/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n\n\nexports.match = matchQuery;\nexports.parse = parseQuery;\n\n// -----------------------------------------------------------------------------\n\nvar RE_MEDIA_QUERY = /(?:(only|not)?\\s*([^\\s\\(\\)]+)(?:\\s*and)?\\s*)?(.+)?/i,\n RE_MQ_EXPRESSION = /\\(\\s*([^\\s\\:\\)]+)\\s*(?:\\:\\s*([^\\s\\)]+))?\\s*\\)/,\n RE_MQ_FEATURE = /^(?:(min|max)-)?(.+)/,\n RE_LENGTH_UNIT = /(em|rem|px|cm|mm|in|pt|pc)?$/,\n RE_RESOLUTION_UNIT = /(dpi|dpcm|dppx)?$/;\n\nfunction matchQuery(mediaQuery, values) {\n return parseQuery(mediaQuery).some(function (query) {\n var inverse = query.inverse;\n\n // Either the parsed or specified `type` is \"all\", or the types must be\n // equal for a match.\n var typeMatch = query.type === 'all' || values.type === query.type;\n\n // Quit early when `type` doesn't match, but take \"not\" into account.\n if ((typeMatch && inverse) || !(typeMatch || inverse)) {\n return false;\n }\n\n var expressionsMatch = query.expressions.every(function (expression) {\n var feature = expression.feature,\n modifier = expression.modifier,\n expValue = expression.value,\n value = values[feature];\n\n // Missing or falsy values don't match.\n if (!value) { return false; }\n\n switch (feature) {\n case 'orientation':\n case 'scan':\n return value.toLowerCase() === expValue.toLowerCase();\n\n case 'width':\n case 'height':\n case 'device-width':\n case 'device-height':\n expValue = toPx(expValue);\n value = toPx(value);\n break;\n\n case 'resolution':\n expValue = toDpi(expValue);\n value = toDpi(value);\n break;\n\n case 'aspect-ratio':\n case 'device-aspect-ratio':\n case /* Deprecated */ 'device-pixel-ratio':\n expValue = toDecimal(expValue);\n value = toDecimal(value);\n break;\n\n case 'grid':\n case 'color':\n case 'color-index':\n case 'monochrome':\n expValue = parseInt(expValue, 10) || 1;\n value = parseInt(value, 10) || 0;\n break;\n }\n\n switch (modifier) {\n case 'min': return value >= expValue;\n case 'max': return value <= expValue;\n default : return value === expValue;\n }\n });\n\n return (expressionsMatch && !inverse) || (!expressionsMatch && inverse);\n });\n}\n\nfunction parseQuery(mediaQuery) {\n return mediaQuery.split(',').map(function (query) {\n query = query.trim();\n\n var captures = query.match(RE_MEDIA_QUERY),\n modifier = captures[1],\n type = captures[2],\n expressions = captures[3] || '',\n parsed = {};\n\n parsed.inverse = !!modifier && modifier.toLowerCase() === 'not';\n parsed.type = type ? type.toLowerCase() : 'all';\n\n // Split expressions into a list.\n expressions = expressions.match(/\\([^\\)]+\\)/g) || [];\n\n parsed.expressions = expressions.map(function (expression) {\n var captures = expression.match(RE_MQ_EXPRESSION),\n feature = captures[1].toLowerCase().match(RE_MQ_FEATURE);\n\n return {\n modifier: feature[1],\n feature : feature[2],\n value : captures[2]\n };\n });\n\n return parsed;\n });\n}\n\n// -- Utilities ----------------------------------------------------------------\n\nfunction toDecimal(ratio) {\n var decimal = Number(ratio),\n numbers;\n\n if (!decimal) {\n numbers = ratio.match(/^(\\d+)\\s*\\/\\s*(\\d+)$/);\n decimal = numbers[1] / numbers[2];\n }\n\n return decimal;\n}\n\nfunction toDpi(resolution) {\n var value = parseFloat(resolution),\n units = String(resolution).match(RE_RESOLUTION_UNIT)[1];\n\n switch (units) {\n case 'dpcm': return value / 2.54;\n case 'dppx': return value * 96;\n default : return value;\n }\n}\n\nfunction toPx(length) {\n var value = parseFloat(length),\n units = String(length).match(RE_LENGTH_UNIT)[1];\n\n switch (units) {\n case 'em' : return value * 16;\n case 'rem': return value * 16;\n case 'cm' : return value * 96 / 2.54;\n case 'mm' : return value * 96 / 2.54 / 10;\n case 'in' : return value * 96;\n case 'pt' : return value * 72;\n case 'pc' : return value * 72 / 12;\n default : return value;\n }\n}\n\n\n/***/ }),\n\n/***/ \"./node_modules/hyphenate-style-name/index.js\":\n/*!****************************************************!*\\\n !*** ./node_modules/hyphenate-style-name/index.js ***!\n \\****************************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* eslint-disable no-var, prefer-template */\nvar uppercasePattern = /[A-Z]/g\nvar msPattern = /^ms-/\nvar cache = {}\n\nfunction toHyphenLower(match) {\n return '-' + match.toLowerCase()\n}\n\nfunction hyphenateStyleName(name) {\n if (cache.hasOwnProperty(name)) {\n return cache[name]\n }\n\n var hName = name.replace(uppercasePattern, toHyphenLower)\n return (cache[name] = msPattern.test(hName) ? '-' + hName : hName)\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (hyphenateStyleName);\n\n\n/***/ }),\n\n/***/ \"./node_modules/matchmediaquery/index.js\":\n/*!***********************************************!*\\\n !*** ./node_modules/matchmediaquery/index.js ***!\n \\***********************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nvar staticMatch = (__webpack_require__(/*! css-mediaquery */ \"./node_modules/css-mediaquery/index.js\").match);\nvar dynamicMatch = typeof window !== 'undefined' ? window.matchMedia : null;\n\n// our fake MediaQueryList\nfunction Mql(query, values, forceStatic){\n var self = this;\n if(dynamicMatch && !forceStatic){\n var mql = dynamicMatch.call(window, query);\n this.matches = mql.matches;\n this.media = mql.media;\n // TODO: is there a time it makes sense to remove this listener?\n mql.addListener(update);\n } else {\n this.matches = staticMatch(query, values);\n this.media = query;\n }\n\n this.addListener = addListener;\n this.removeListener = removeListener;\n this.dispose = dispose;\n\n function addListener(listener){\n if(mql){\n mql.addListener(listener);\n }\n }\n\n function removeListener(listener){\n if(mql){\n mql.removeListener(listener);\n }\n }\n\n // update ourselves!\n function update(evt){\n self.matches = evt.matches;\n self.media = evt.media;\n }\n\n function dispose(){\n if(mql){\n mql.removeListener(update);\n }\n }\n}\n\nfunction matchMedia(query, values, forceStatic){\n return new Mql(query, values, forceStatic);\n}\n\nmodule.exports = matchMedia;\n\n\n/***/ }),\n\n/***/ \"./node_modules/object-assign/index.js\":\n/*!*********************************************!*\\\n !*** ./node_modules/object-assign/index.js ***!\n \\*********************************************/\n/***/ ((module) => {\n\n\"use strict\";\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/prop-types/checkPropTypes.js\":\n/*!***************************************************!*\\\n !*** ./node_modules/prop-types/checkPropTypes.js ***!\n \\***************************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar printWarning = function() {};\n\nif (true) {\n var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ \"./node_modules/prop-types/lib/ReactPropTypesSecret.js\");\n var loggedTypeFailures = {};\n var has = __webpack_require__(/*! ./lib/has */ \"./node_modules/prop-types/lib/has.js\");\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (true) {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (true) {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n\n\n/***/ }),\n\n/***/ \"./node_modules/prop-types/factoryWithTypeCheckers.js\":\n/*!************************************************************!*\\\n !*** ./node_modules/prop-types/factoryWithTypeCheckers.js ***!\n \\************************************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar ReactIs = __webpack_require__(/*! react-is */ \"./node_modules/react-is/index.js\");\nvar assign = __webpack_require__(/*! object-assign */ \"./node_modules/object-assign/index.js\");\n\nvar ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ \"./node_modules/prop-types/lib/ReactPropTypesSecret.js\");\nvar has = __webpack_require__(/*! ./lib/has */ \"./node_modules/prop-types/lib/has.js\");\nvar checkPropTypes = __webpack_require__(/*! ./checkPropTypes */ \"./node_modules/prop-types/checkPropTypes.js\");\n\nvar printWarning = function() {};\n\nif (true) {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (true) {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if ( true && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (true) {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n true ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/prop-types/index.js\":\n/*!******************************************!*\\\n !*** ./node_modules/prop-types/index.js ***!\n \\******************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (true) {\n var ReactIs = __webpack_require__(/*! react-is */ \"./node_modules/react-is/index.js\");\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = __webpack_require__(/*! ./factoryWithTypeCheckers */ \"./node_modules/prop-types/factoryWithTypeCheckers.js\")(ReactIs.isElement, throwOnDirectAccess);\n} else {}\n\n\n/***/ }),\n\n/***/ \"./node_modules/prop-types/lib/ReactPropTypesSecret.js\":\n/*!*************************************************************!*\\\n !*** ./node_modules/prop-types/lib/ReactPropTypesSecret.js ***!\n \\*************************************************************/\n/***/ ((module) => {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n/***/ }),\n\n/***/ \"./node_modules/prop-types/lib/has.js\":\n/*!********************************************!*\\\n !*** ./node_modules/prop-types/lib/has.js ***!\n \\********************************************/\n/***/ ((module) => {\n\nmodule.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n\n\n/***/ }),\n\n/***/ \"./node_modules/react-is/cjs/react-is.development.js\":\n/*!***********************************************************!*\\\n !*** ./node_modules/react-is/cjs/react-is.development.js ***!\n \\***********************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\n/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\n\n\nif (true) {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n\n\n/***/ }),\n\n/***/ \"./node_modules/react-is/index.js\":\n/*!****************************************!*\\\n !*** ./node_modules/react-is/index.js ***!\n \\****************************************/\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nif (false) {} else {\n module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ \"./node_modules/react-is/cjs/react-is.development.js\");\n}\n\n\n/***/ }),\n\n/***/ \"./node_modules/shallow-equal/dist/index.esm.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/shallow-equal/dist/index.esm.js ***!\n \\******************************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"shallowEqualArrays\": () => (/* binding */ shallowEqualArrays),\n/* harmony export */ \"shallowEqualObjects\": () => (/* binding */ shallowEqualObjects)\n/* harmony export */ });\nfunction shallowEqualObjects(objA, objB) {\n if (objA === objB) {\n return true;\n }\n\n if (!objA || !objB) {\n return false;\n }\n\n var aKeys = Object.keys(objA);\n var bKeys = Object.keys(objB);\n var len = aKeys.length;\n\n if (bKeys.length !== len) {\n return false;\n }\n\n for (var i = 0; i < len; i++) {\n var key = aKeys[i];\n\n if (objA[key] !== objB[key] || !Object.prototype.hasOwnProperty.call(objB, key)) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction shallowEqualArrays(arrA, arrB) {\n if (arrA === arrB) {\n return true;\n }\n\n if (!arrA || !arrB) {\n return false;\n }\n\n var len = arrA.length;\n\n if (arrB.length !== len) {\n return false;\n }\n\n for (var i = 0; i < len; i++) {\n if (arrA[i] !== arrB[i]) {\n return false;\n }\n }\n\n return true;\n}\n\n\n\n\n/***/ }),\n\n/***/ \"./src/Component.ts\":\n/*!**************************!*\\\n !*** ./src/Component.ts ***!\n \\**************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nvar useMediaQuery_1 = __importDefault(__webpack_require__(/*! ./useMediaQuery */ \"./src/useMediaQuery.ts\"));\n// ReactNode and ReactElement typings are a little funky for functional components, so the ReactElement cast is needed on the return\nvar MediaQuery = function (_a) {\n var children = _a.children, device = _a.device, onChange = _a.onChange, settings = __rest(_a, [\"children\", \"device\", \"onChange\"]);\n var matches = (0, useMediaQuery_1.default)(settings, device, onChange);\n if (typeof children === 'function') {\n return children(matches);\n }\n return matches ? children : null;\n};\nexports[\"default\"] = MediaQuery;\n\n\n/***/ }),\n\n/***/ \"./src/Context.ts\":\n/*!************************!*\\\n !*** ./src/Context.ts ***!\n \\************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nvar react_1 = __webpack_require__(/*! react */ \"react\");\nvar Context = (0, react_1.createContext)(undefined);\nexports[\"default\"] = Context;\n\n\n/***/ }),\n\n/***/ \"./src/index.ts\":\n/*!**********************!*\\\n !*** ./src/index.ts ***!\n \\**********************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Context = exports.toQuery = exports.useMediaQuery = exports[\"default\"] = void 0;\nvar useMediaQuery_1 = __importDefault(__webpack_require__(/*! ./useMediaQuery */ \"./src/useMediaQuery.ts\"));\nexports.useMediaQuery = useMediaQuery_1.default;\nvar Component_1 = __importDefault(__webpack_require__(/*! ./Component */ \"./src/Component.ts\"));\nexports[\"default\"] = Component_1.default;\nvar toQuery_1 = __importDefault(__webpack_require__(/*! ./toQuery */ \"./src/toQuery.ts\"));\nexports.toQuery = toQuery_1.default;\nvar Context_1 = __importDefault(__webpack_require__(/*! ./Context */ \"./src/Context.ts\"));\nexports.Context = Context_1.default;\n\n\n/***/ }),\n\n/***/ \"./src/mediaQuery.ts\":\n/*!***************************!*\\\n !*** ./src/mediaQuery.ts ***!\n \\***************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nvar prop_types_1 = __importDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\nvar stringOrNumber = prop_types_1.default.oneOfType([\n prop_types_1.default.string,\n prop_types_1.default.number\n]);\n// media types\nvar types = {\n all: prop_types_1.default.bool,\n grid: prop_types_1.default.bool,\n aural: prop_types_1.default.bool,\n braille: prop_types_1.default.bool,\n handheld: prop_types_1.default.bool,\n print: prop_types_1.default.bool,\n projection: prop_types_1.default.bool,\n screen: prop_types_1.default.bool,\n tty: prop_types_1.default.bool,\n tv: prop_types_1.default.bool,\n embossed: prop_types_1.default.bool\n};\n// properties that match media queries\nvar matchers = {\n orientation: prop_types_1.default.oneOf([\n 'portrait',\n 'landscape'\n ]),\n scan: prop_types_1.default.oneOf([\n 'progressive',\n 'interlace'\n ]),\n aspectRatio: prop_types_1.default.string,\n deviceAspectRatio: prop_types_1.default.string,\n height: stringOrNumber,\n deviceHeight: stringOrNumber,\n width: stringOrNumber,\n deviceWidth: stringOrNumber,\n color: prop_types_1.default.bool,\n colorIndex: prop_types_1.default.bool,\n monochrome: prop_types_1.default.bool,\n resolution: stringOrNumber,\n type: Object.keys(types)\n};\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar type = matchers.type, featureMatchers = __rest(matchers\n// media features\n, [\"type\"]);\n// media features\nvar features = __assign({ minAspectRatio: prop_types_1.default.string, maxAspectRatio: prop_types_1.default.string, minDeviceAspectRatio: prop_types_1.default.string, maxDeviceAspectRatio: prop_types_1.default.string, minHeight: stringOrNumber, maxHeight: stringOrNumber, minDeviceHeight: stringOrNumber, maxDeviceHeight: stringOrNumber, minWidth: stringOrNumber, maxWidth: stringOrNumber, minDeviceWidth: stringOrNumber, maxDeviceWidth: stringOrNumber, minColor: prop_types_1.default.number, maxColor: prop_types_1.default.number, minColorIndex: prop_types_1.default.number, maxColorIndex: prop_types_1.default.number, minMonochrome: prop_types_1.default.number, maxMonochrome: prop_types_1.default.number, minResolution: stringOrNumber, maxResolution: stringOrNumber }, featureMatchers);\nvar all = __assign(__assign({}, types), features);\nexports[\"default\"] = {\n all: all,\n types: types,\n matchers: matchers,\n features: features\n};\n\n\n/***/ }),\n\n/***/ \"./src/toQuery.ts\":\n/*!************************!*\\\n !*** ./src/toQuery.ts ***!\n \\************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nvar hyphenate_style_name_1 = __importDefault(__webpack_require__(/*! hyphenate-style-name */ \"./node_modules/hyphenate-style-name/index.js\"));\nvar mediaQuery_1 = __importDefault(__webpack_require__(/*! ./mediaQuery */ \"./src/mediaQuery.ts\"));\nvar negate = function (cond) { return \"not \".concat(cond); };\nvar keyVal = function (k, v) {\n var realKey = (0, hyphenate_style_name_1.default)(k);\n // px shorthand\n if (typeof v === 'number') {\n v = \"\".concat(v, \"px\");\n }\n if (v === true) {\n return realKey;\n }\n if (v === false) {\n return negate(realKey);\n }\n return \"(\".concat(realKey, \": \").concat(v, \")\");\n};\nvar join = function (conds) { return conds.join(' and '); };\nvar toQuery = function (obj) {\n var rules = [];\n Object.keys(mediaQuery_1.default.all).forEach(function (k) {\n var v = obj[k];\n if (v != null) {\n rules.push(keyVal(k, v));\n }\n });\n return join(rules);\n};\nexports[\"default\"] = toQuery;\n\n\n/***/ }),\n\n/***/ \"./src/useMediaQuery.ts\":\n/*!******************************!*\\\n !*** ./src/useMediaQuery.ts ***!\n \\******************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nvar react_1 = __webpack_require__(/*! react */ \"react\");\nvar matchmediaquery_1 = __importDefault(__webpack_require__(/*! matchmediaquery */ \"./node_modules/matchmediaquery/index.js\"));\nvar hyphenate_style_name_1 = __importDefault(__webpack_require__(/*! hyphenate-style-name */ \"./node_modules/hyphenate-style-name/index.js\"));\nvar shallow_equal_1 = __webpack_require__(/*! shallow-equal */ \"./node_modules/shallow-equal/dist/index.esm.js\");\nvar toQuery_1 = __importDefault(__webpack_require__(/*! ./toQuery */ \"./src/toQuery.ts\"));\nvar Context_1 = __importDefault(__webpack_require__(/*! ./Context */ \"./src/Context.ts\"));\nvar makeQuery = function (settings) { return settings.query || (0, toQuery_1.default)(settings); };\nvar hyphenateKeys = function (obj) {\n if (!obj)\n return undefined;\n var keys = Object.keys(obj);\n return keys.reduce(function (result, key) {\n result[(0, hyphenate_style_name_1.default)(key)] = obj[key];\n return result;\n }, {});\n};\nvar useIsUpdate = function () {\n var ref = (0, react_1.useRef)(false);\n (0, react_1.useEffect)(function () {\n ref.current = true;\n }, []);\n return ref.current;\n};\nvar useDevice = function (deviceFromProps) {\n var deviceFromContext = (0, react_1.useContext)(Context_1.default);\n var getDevice = function () {\n return hyphenateKeys(deviceFromProps) || hyphenateKeys(deviceFromContext);\n };\n var _a = (0, react_1.useState)(getDevice), device = _a[0], setDevice = _a[1];\n (0, react_1.useEffect)(function () {\n var newDevice = getDevice();\n if (!(0, shallow_equal_1.shallowEqualObjects)(device, newDevice)) {\n setDevice(newDevice);\n }\n }, [deviceFromProps, deviceFromContext]);\n return device;\n};\nvar useQuery = function (settings) {\n var getQuery = function () { return makeQuery(settings); };\n var _a = (0, react_1.useState)(getQuery), query = _a[0], setQuery = _a[1];\n (0, react_1.useEffect)(function () {\n var newQuery = getQuery();\n if (query !== newQuery) {\n setQuery(newQuery);\n }\n }, [settings]);\n return query;\n};\nvar useMatchMedia = function (query, device) {\n var getMatchMedia = function () { return (0, matchmediaquery_1.default)(query, device || {}, !!device); };\n var _a = (0, react_1.useState)(getMatchMedia), mq = _a[0], setMq = _a[1];\n var isUpdate = useIsUpdate();\n (0, react_1.useEffect)(function () {\n if (isUpdate) {\n // skip on mounting, it has already been set\n var newMq_1 = getMatchMedia();\n setMq(newMq_1);\n return function () {\n if (newMq_1) {\n newMq_1.dispose();\n }\n };\n }\n }, [query, device]);\n return mq;\n};\nvar useMatches = function (mediaQuery) {\n var _a = (0, react_1.useState)(mediaQuery.matches), matches = _a[0], setMatches = _a[1];\n (0, react_1.useEffect)(function () {\n var updateMatches = function (ev) {\n setMatches(ev.matches);\n };\n mediaQuery.addListener(updateMatches);\n setMatches(mediaQuery.matches);\n return function () {\n mediaQuery.removeListener(updateMatches);\n };\n }, [mediaQuery]);\n return matches;\n};\nvar useMediaQuery = function (settings, device, onChange) {\n var deviceSettings = useDevice(device);\n var query = useQuery(settings);\n if (!query)\n throw new Error('Invalid or missing MediaQuery!');\n var mq = useMatchMedia(query, deviceSettings);\n var matches = useMatches(mq);\n var isUpdate = useIsUpdate();\n (0, react_1.useEffect)(function () {\n if (isUpdate && onChange) {\n onChange(matches);\n }\n }, [matches]);\n (0, react_1.useEffect)(function () { return function () {\n if (mq) {\n mq.dispose();\n }\n }; }, []);\n return matches;\n};\nexports[\"default\"] = useMediaQuery;\n\n\n/***/ }),\n\n/***/ \"react\":\n/*!**************************************************************************************!*\\\n !*** external {\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\",\"root\":\"React\"} ***!\n \\**************************************************************************************/\n/***/ ((module) => {\n\n\"use strict\";\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_react__;\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t(() => {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = (exports, definition) => {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t(() => {\n/******/ \t\t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t(() => {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = (exports) => {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/************************************************************************/\n/******/ \t\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \t// This entry module is referenced by other modules so it can't be inlined\n/******/ \tvar __webpack_exports__ = __webpack_require__(\"./src/index.ts\");\n/******/ \t\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});\n//# sourceMappingURL=react-responsive.js.map","/**\n * React Router DOM v6.22.3\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { UNSAFE_mapRouteProperties, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext, Router, UNSAFE_useRoutesImpl, UNSAFE_NavigationContext, useHref, useResolvedPath, useLocation, useNavigate, createPath, UNSAFE_useRouteId, UNSAFE_RouteContext, useMatches, useNavigation, useBlocker } from 'react-router';\nexport { AbortedDeferredError, Await, MemoryRouter, Navigate, NavigationType, Outlet, Route, Router, Routes, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext, UNSAFE_LocationContext, UNSAFE_NavigationContext, UNSAFE_RouteContext, UNSAFE_useRouteId, createMemoryRouter, createPath, createRoutesFromChildren, createRoutesFromElements, defer, generatePath, isRouteErrorResponse, json, matchPath, matchRoutes, parsePath, redirect, redirectDocument, renderMatches, resolvePath, useActionData, useAsyncError, useAsyncValue, useBlocker, useHref, useInRouterContext, useLoaderData, useLocation, useMatch, useMatches, useNavigate, useNavigation, useNavigationType, useOutlet, useOutletContext, useParams, useResolvedPath, useRevalidator, useRouteError, useRouteLoaderData, useRoutes } from 'react-router';\nimport { stripBasename, UNSAFE_warning, createRouter, createBrowserHistory, createHashHistory, UNSAFE_ErrorResponseImpl, UNSAFE_invariant, joinPaths, IDLE_FETCHER, matchPath } from '@remix-run/router';\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\nconst defaultMethod = \"get\";\nconst defaultEncType = \"application/x-www-form-urlencoded\";\nfunction isHtmlElement(object) {\n return object != null && typeof object.tagName === \"string\";\n}\nfunction isButtonElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"button\";\n}\nfunction isFormElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"form\";\n}\nfunction isInputElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"input\";\n}\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\nfunction shouldProcessLinkClick(event, target) {\n return event.button === 0 && (\n // Ignore everything but left clicks\n !target || target === \"_self\") &&\n // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // Ignore clicks with modifier keys\n ;\n}\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n * let searchParams = new URLSearchParams([\n * ['sort', 'name'],\n * ['sort', 'price']\n * ]);\n *\n * you can do:\n *\n * let searchParams = createSearchParams({\n * sort: ['name', 'price']\n * });\n */\nfunction createSearchParams(init) {\n if (init === void 0) {\n init = \"\";\n }\n return new URLSearchParams(typeof init === \"string\" || Array.isArray(init) || init instanceof URLSearchParams ? init : Object.keys(init).reduce((memo, key) => {\n let value = init[key];\n return memo.concat(Array.isArray(value) ? value.map(v => [key, v]) : [[key, value]]);\n }, []));\n}\nfunction getSearchParamsForLocation(locationSearch, defaultSearchParams) {\n let searchParams = createSearchParams(locationSearch);\n if (defaultSearchParams) {\n // Use `defaultSearchParams.forEach(...)` here instead of iterating of\n // `defaultSearchParams.keys()` to work-around a bug in Firefox related to\n // web extensions. Relevant Bugzilla tickets:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1414602\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1023984\n defaultSearchParams.forEach((_, key) => {\n if (!searchParams.has(key)) {\n defaultSearchParams.getAll(key).forEach(value => {\n searchParams.append(key, value);\n });\n }\n });\n }\n return searchParams;\n}\n// One-time check for submitter support\nlet _formDataSupportsSubmitter = null;\nfunction isFormDataSubmitterSupported() {\n if (_formDataSupportsSubmitter === null) {\n try {\n new FormData(document.createElement(\"form\"),\n // @ts-expect-error if FormData supports the submitter parameter, this will throw\n 0);\n _formDataSupportsSubmitter = false;\n } catch (e) {\n _formDataSupportsSubmitter = true;\n }\n }\n return _formDataSupportsSubmitter;\n}\nconst supportedFormEncTypes = new Set([\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"]);\nfunction getFormEncType(encType) {\n if (encType != null && !supportedFormEncTypes.has(encType)) {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(false, \"\\\"\" + encType + \"\\\" is not a valid `encType` for ``/`` \" + (\"and will default to \\\"\" + defaultEncType + \"\\\"\")) : void 0;\n return null;\n }\n return encType;\n}\nfunction getFormSubmissionInfo(target, basename) {\n let method;\n let action;\n let encType;\n let formData;\n let body;\n if (isFormElement(target)) {\n // When grabbing the action from the element, it will have had the basename\n // prefixed to ensure non-JS scenarios work, so strip it since we'll\n // re-prefix in the router\n let attr = target.getAttribute(\"action\");\n action = attr ? stripBasename(attr, basename) : null;\n method = target.getAttribute(\"method\") || defaultMethod;\n encType = getFormEncType(target.getAttribute(\"enctype\")) || defaultEncType;\n formData = new FormData(target);\n } else if (isButtonElement(target) || isInputElement(target) && (target.type === \"submit\" || target.type === \"image\")) {\n let form = target.form;\n if (form == null) {\n throw new Error(\"Cannot submit a