{"version":3,"file":"vendors.bundle.min.js","mappings":";2EAcA,SAASA,EAASC,EAAMC,EAAMC,GAC5B,IAAIC,EAASC,EAAMC,EAASC,EAAWC,EAGvC,SAASC,IACP,IAAIC,EAAOC,KAAKC,MAAQL,EAEpBG,EAAOR,GAAQQ,GAAQ,EACzBN,EAAUS,WAAWJ,EAAOP,EAAOQ,IAEnCN,EAAU,KACLD,IACHK,EAASP,EAAKa,MAAMR,EAASD,GAC7BC,EAAUD,EAAO,MAGvB,CAdI,MAAQH,IAAMA,EAAO,KAgBzB,IAAIa,EAAY,WACdT,EAAUU,KACVX,EAAOY,UACPV,EAAYI,KAAKC,MACjB,IAAIM,EAAUf,IAAcC,EAO5B,OANKA,IAASA,EAAUS,WAAWJ,EAAOP,IACtCgB,IACFV,EAASP,EAAKa,MAAMR,EAASD,GAC7BC,EAAUD,EAAO,MAGZG,CACT,EAmBA,OAjBAO,EAAUI,MAAQ,WACZf,IACFgB,aAAahB,GACbA,EAAU,KAEd,EAEAW,EAAUM,MAAQ,WACZjB,IACFI,EAASP,EAAKa,MAAMR,EAASD,GAC7BC,EAAUD,EAAO,KAEjBe,aAAahB,GACbA,EAAU,KAEd,EAEOW,CACT,CAGAf,EAASA,SAAWA,EAEpBsB,EAAOC,QAAUvB,6BC/DjBwB,OAAOC,eAAeF,EAAS,aAAc,CAAEG,OAAO,IACtD,IAAIC,EAAsB,WACtB,SAASA,IACL,IAAIC,EAAQZ,KACZA,KAAKa,aAAc,EACnBb,KAAKc,UAAY,EACjBd,KAAKe,SAAW,EAChBf,KAAKgB,OAAS,YACdhB,KAAKiB,KAAO,WACHL,EAAMC,cACPD,EAAMM,SAAW,IAAIC,MAAM,IAAIA,MAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,IAAIA,MAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,IAAIA,MAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,IAAIA,MAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,IAAIA,MAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,IAAIA,MAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,IAAIA,MAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,IAAIA,MAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,IAAIA,MAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,IAAIA,MAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,IAAIA,MAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,IAAIA,MAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,IAAIA,MAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OACrsBP,EAAMC,aAAc,EAE5B,EACAb,KAAKoB,SAAW,SAAUC,GACtBT,EAAMI,OAASK,CACnB,EACArB,KAAKsB,mBAAqB,SAAUP,EAAUD,GAC1CF,EAAME,UAAYA,EAClBF,EAAMG,SAAWA,EACjBH,EAAMI,OAAS,IACnB,EACAhB,KAAKuB,WAAa,WACd,IAAIC,EAAKZ,EAAMa,WAAW,GAC1BC,QAAQC,IAAIH,EAChB,EACAxB,KAAKyB,WAAa,SAAUG,GAOxB,IAAIC,EACAC,EAPAF,EAAY,IACZA,EAAY,GAEZA,EAAY,IACZA,EAAY,GAIhB,IAAIG,EAAI,EACJC,EAAI,EACR,GAAIJ,EAAY,EAAG,CACfG,EAAIE,KAAKC,MAAMtB,EAAME,UAAY,KACjCkB,EAAIC,KAAKC,MAAMtB,EAAMG,SAAW,KAChCc,EAAII,KAAKE,MAAMvB,EAAMG,SAAW,KAChCe,EAAIG,KAAKE,MAAMvB,EAAME,UAAY,KACjC,IAAIsB,EAAO,EAAIR,EAGfC,EAAII,KAAKC,MAAML,EAAII,KAAKI,IAAI,GAAID,IAChCN,EAAIG,KAAKC,MAAMJ,EAAIG,KAAKI,IAAI,GAAID,GAGpC,CAEA,OADaxB,EAAMM,SAASa,GAAGC,GACf,IAAMpB,EAAM0B,SAAST,EAAGD,GAAa,IAAMhB,EAAM0B,SAASR,EAAGF,EACjF,EACA5B,KAAKuC,aAAe,SAAUC,GAC1B,IACIZ,EADAa,GAAK,EAIT,IAFA7B,EAAME,UAAY,EAClBF,EAAMG,SAAW,EACZa,EAAY,EAAGA,GAAa,EAAGA,IAAa,CAC7C,IAAIc,EAAU,IAAIC,OAAO,uBAAyBf,EAAY,cAAgBA,EAAY,MAAO,KAC7FgB,EAAUJ,EAAWK,MAAMH,GAC/B,GAAIE,EAAS,CACT,IAAIE,EAAYF,EAAQ,GACpBG,EAAW,EACXC,EAAY,EAEhB,GAAIpB,EAAY,EAAG,CACf,IAAIqB,EAAOhB,KAAKI,IAAI,GAAI,EAAIT,GAC5BmB,EAAWG,SAASN,EAAQ,GAAI,IAAMK,EACtCD,EAAYE,SAASN,EAAQ,GAAI,IAAMK,CAC3C,CACA,IAAIjB,OAAI,EAAQD,OAAI,EACpBoB,EAAQ,IAAKpB,EAAI,EAAGA,EAAInB,EAAMM,SAASkC,OAAQrB,IAC3C,IAAKC,EAAI,EAAGA,EAAIpB,EAAMM,SAASa,GAAGqB,OAAQpB,IACtC,GAAIpB,EAAMM,SAASa,GAAGC,IAAMc,EAAW,CACnClC,EAAMG,SAAgB,IAAJiB,EAAce,EAChCnC,EAAME,UAAiB,IAAJiB,EAAciB,EACjCP,GAAK,EACL,MAAMU,CACV,CAEZ,CACJ,CACA,OAAOV,CACX,EACAzC,KAAKqD,SAAW,WACZ,IACIC,EAAOC,EAAOC,WAAW5C,EAAMG,SAAUH,EAAME,UAAW,YAAa,WAAa,KAAS,IAAQ,WAAa,IAAW,GAC7H2C,EAAOF,EAAOG,YAAY9C,EAAMG,SAAUH,EAAME,UAAW,YAAa,WAAa,KAAS,IAAQ,WAAa,IAAW,GAC9H6C,EAAKJ,EAAOK,gBAAgBN,EAAMG,EAHzB,EAGuC,YAAa,YAC7DI,EAAKN,EAAOO,gBAAgBR,EAAMG,EAJzB,EAIuC,YAAa,YAC7DM,EAAKR,EAAOS,WAAWV,EALd,EAK4B,YAAa,YAClDW,EAAKV,EAAOW,UAAUP,EAAIE,EAAIE,EAAI,QAAS,KAAQ,OAAS,SAC5DI,EAAKZ,EAAOa,UAAUT,EAAIE,EAAIE,GAAK,QAAS,MAAQ,OAAS,SAC7DM,EAAKd,EAAOe,UAAUX,EAAIE,EAAIE,EAAI,OAAS,MAAQ,MAAS,SAC5DQ,EAAWhB,EAAOiB,WAAWP,EAAIE,EAAIE,EAAI,QAAa,aACtDI,EAAYlB,EAAOmB,YAAYT,EAAIE,GAEvC,OADY,IAAIQ,EAAMJ,EAAUE,EAEpC,EACAzE,KAAKsC,SAAW,SAAUsC,EAAKC,GAE3B,IADA,IAAIC,EAAMF,EAAIG,WACPD,EAAI1B,OAASyB,GAChBC,EAAM,IAAMA,EAEhB,OAAOA,CACX,EACA9E,KAAKiB,MACT,CAeA,OAdAT,OAAOC,eAAeE,EAAKqE,UAAW,YAAa,CAC/CC,IAAK,WACD,OAAOjF,KAAKc,SAChB,EACAoE,YAAY,EACZC,cAAc,IAElB3E,OAAOC,eAAeE,EAAKqE,UAAW,WAAY,CAC9CC,IAAK,WACD,OAAOjF,KAAKe,QAChB,EACAmE,YAAY,EACZC,cAAc,IAEXxE,CACX,CA3HyB,GA4HzBJ,EAAQI,KAAOA,EAMf,IAAIgE,EAAuB,WACvB,SAASA,EAAMJ,EAAUE,GACrB,IAAI7D,EAAQZ,KACZA,KAAKuE,SAAW,EAChBvE,KAAKyE,UAAY,EACjBzE,KAAKoF,YAAc,SAAUC,GACzB,IAAI5C,GAAK,EAIL6C,EAHMD,EAGQxC,MADJ,oEAEd,GAAIyC,EAAS,CACT7C,GAAK,EACL,IAAI8C,EAAyB,KAAdD,EAAQ,IAA2B,KAAdA,EAAQ,IAAc,EAAI,EAC1DE,EAA0B,KAAdF,EAAQ,IAA2B,KAAdA,EAAQ,IAAc,EAAI,EAC3DG,EAAKC,WAAWJ,EAAQ,IACxBK,EAAKD,WAAWJ,EAAQ,IACxBM,EAAKF,WAAWJ,EAAQ,IACxBO,EAAKH,WAAWJ,EAAQ,IAC5BtF,KAAKuE,SAAWgB,GAAWE,EAAME,EAAK,IACtC3F,KAAKyE,UAAYe,GAAYI,EAAMC,EAAK,GAC5C,CACA,OAAOpD,CACX,EACAzC,KAAK8F,eAAiB,WAClB,OAAOlF,EAAM2D,SAAW,IACpB3D,EAAM2D,SAAW,IACjB3D,EAAM6D,WAAa,KACnB7D,EAAM6D,UAAY,GAC1B,EACAzE,KAAK+F,UAAY,WACb,OAAOnF,EAAM2D,SAAW,MACpB3D,EAAM2D,SAAW,OACjB3D,EAAM6D,WAAa,MACnB7D,EAAM6D,WAAa,GAC3B,EACAzE,KAAKgG,QAAU,WACX,IAAIC,EAAO,IAAItF,EACf,GAAIC,EAAMkF,iBAAkB,CACxB,IACInC,EAAKJ,EAAOK,gBAAgBhD,EAAM2D,SAAU3D,EAAM6D,UADzC,EAC4D,QAAY,aACjFZ,EAAKN,EAAOO,gBAAgBlD,EAAM2D,SAAU3D,EAAM6D,UAFzC,EAE4D,QAAY,aACjFV,EAAKR,EAAOS,WAAWpD,EAAM2D,SAHpB,EAGsC,QAAY,aAC3DN,EAAKV,EAAOW,UAAUP,EAAIE,EAAIE,GAAK,SAAU,MAAS,MAAQ,SAC9DI,EAAKZ,EAAOa,UAAUT,EAAIE,EAAIE,EAAI,SAAU,OAAS,MAAQ,SAC7DM,EAAKd,EAAOe,UAAUX,EAAIE,EAAIE,GAAK,QAAU,OAAS,KAAQ,SAC9DmC,EAAY3C,EAAOiB,WAAWP,EAAIE,EAAIE,EAAI,YAAa,YACvD8B,EAAa5C,EAAOmB,YAAYT,EAAIE,GACpCtC,EAAI0B,EAAO6C,iBAAiBF,EAAWC,EAAY,YAAa,WAAa,IAAQ,WAAa,IAAW,GAC7GrE,EAAIyB,EAAO8C,kBAAkBH,EAAWC,EAAY,YAAa,WAAa,KAAS,IAAQ,WAAa,IAAW,GAC3HF,EAAK3E,mBAAmBW,KAAKE,MAAMN,GAAII,KAAKE,MAAML,GACtD,MAEImE,EAAK7E,SAAS,uCAElB,OAAO6E,CACX,EACAjG,KAAKuE,SAAWA,EAChBvE,KAAKyE,UAAYA,CACrB,CAeA,OAdAjE,OAAOC,eAAekE,EAAMK,UAAW,WAAY,CAC/CC,IAAK,WACD,OAAOjF,KAAKuE,QAChB,EACAW,YAAY,EACZC,cAAc,IAElB3E,OAAOC,eAAekE,EAAMK,UAAW,YAAa,CAChDC,IAAK,WACD,OAAOjF,KAAKyE,SAChB,EACAS,YAAY,EACZC,cAAc,IAEXR,CACX,CA3E0B,GA4E1BpE,EAAQoE,MAAQA,EAMhB,IAAIpB,EAAwB,WACxB,SAASA,IACT,CA8RA,OA7RAA,EAAOC,WAAa,SAAU8C,EAAMC,EAAOC,EAAGC,EAAGC,EAAIC,EAAIC,EAAIC,EAAMC,GAU/D,IAAIC,EAAK,iBACLC,EAAUH,GAAQE,EAAK,KAGvBE,EAAMT,EAAII,EACVM,EAAMT,EAAIG,EACVO,GAAMlF,KAAKI,IAAI4E,EAAK,GAAKhF,KAAKI,IAAI6E,EAAK,IAAMjF,KAAKI,IAAI4E,EAAK,GAC3DnF,GAAKmF,EAAMC,IAAQD,EAAMC,GACzBE,EAAKd,EAAOI,EAEZW,EAAO9D,EAAO+D,WAAWf,EAAOI,EAAIM,EAAKD,EAASlF,EAAGoF,GAErDK,EAAKN,EAAOhF,KAAKuF,KAAK,EAAKL,EAAMlF,KAAKI,IAAIJ,KAAKwF,IAAIJ,GAAO,IAC1DK,EAAOH,GAAM,EAAIJ,IAAQ,EAAKA,EAAKlF,KAAKI,IAAIJ,KAAKwF,IAAIJ,GAAO,IAC5DM,EAAQJ,EAAKG,EAAO,EAEpBE,EAAO3F,KAAK4F,IAAIR,IAAU,EAAIK,EAAMH,GACpCO,EAAS7F,KAAK4F,IAAIR,IAAU,GAAKK,EAAMzF,KAAKI,IAAIkF,EAAI,KAAQ,EAAK,EAAKtF,KAAKI,IAAIJ,KAAK4F,IAAIR,GAAO,GAAOM,EAAQ,EAAIA,EAAQ1F,KAAKI,IAAIJ,KAAK4F,IAAIR,GAAO,IACnJU,EAAO9F,KAAK4F,IAAIR,IAAU,IAAMK,EAAMzF,KAAKI,IAAIkF,EAAI,KAAQ,GAAM,IAAyB,EAAlBtF,KAAK4F,IAAIR,IAAgB,GAAMpF,KAAKI,IAAIJ,KAAK4F,IAAIR,GAAO,IAEpI,OADkB,IAAMN,GAAOM,EAAQpF,KAAKI,IAAI+E,EAAI,GAAKQ,EAAQ3F,KAAKI,IAAI+E,EAAI,GAAKU,GAAe,EAALV,GAAUW,EAE3G,EACAxE,EAAOG,YAAc,SAAU4C,EAAMC,EAAOC,EAAGC,EAAGC,EAAIC,EAAIC,EAAIC,EAAMC,GAUhE,IAAIC,EAAK,iBACLC,EAAUH,GAAQE,EAAK,KACvBiB,EAAUlB,GAAQC,EAAK,KAEvBE,EAAMT,EAAII,EACVM,EAAMT,EAAIG,EACVO,GAAMlF,KAAKI,IAAI4E,EAAK,GAAKhF,KAAKI,IAAI6E,EAAK,IAAMjF,KAAKI,IAAI4E,EAAK,GAC3DnF,GAAKmF,EAAMC,IAAQD,EAAMC,GACzBE,EAAKd,EAAOI,EAEZW,EAAO9D,EAAO+D,WAAWf,EAAOI,EAAIM,EAAKD,EAASlF,EAAGoF,GAErDK,EAAKN,EAAOhF,KAAKuF,KAAK,EAAKL,EAAMlF,KAAKI,IAAIJ,KAAKwF,IAAIJ,GAAO,IAC1DK,EAAOH,GAAM,EAAIJ,IAAQ,EAAKA,EAAKlF,KAAKI,IAAIJ,KAAKwF,IAAIJ,GAAO,IAG5DY,EAAKhG,KAAKI,IAAIJ,KAAKiG,IAAIb,IAAQ,GAAME,EACrCY,EAAOlG,KAAKI,IAAIJ,KAAKiG,IAAIb,IAAQ,IAAO,EAAIpF,KAAKI,IAAIkF,EAAI,KAASA,EAAKG,EAAQ,EAAKzF,KAAKI,IAAIJ,KAAK4F,IAAIR,GAAO,IAC7Ge,EAAQnG,KAAKI,IAAIJ,KAAKiG,IAAIb,IAAQ,IAAO,IAAMpF,KAAKI,IAAIkF,EAAI,KAAQ,EAAK,GAAMtF,KAAKI,IAAIJ,KAAK4F,IAAIR,GAAO,GAAQ,GAAMpF,KAAKI,IAAIJ,KAAK4F,IAAIR,GAAO,IAC/IgB,EAASpG,KAAKI,IAAIJ,KAAKiG,IAAIb,IAAQ,IAAO,KAAOpF,KAAKI,IAAIkF,EAAI,KAAQ,GAAM,IAAOtF,KAAKI,IAAIJ,KAAK4F,IAAIR,GAAO,GAAQ,KAAQpF,KAAKI,IAAIJ,KAAK4F,IAAIR,GAAO,GAAQ,IAAOpF,KAAKI,IAAIJ,KAAK4F,IAAIR,GAAO,IAEjM,OADmB,IAAMN,GAAOiB,EAAWZ,EAAKa,EAAMhG,KAAKI,IAAI+E,EAAI,GAAKe,EAAOlG,KAAKI,IAAI+E,EAAI,GAAKgB,EAAQnG,KAAKI,IAAI+E,EAAI,GAAKiB,EAE/H,EACA9E,EAAO+D,WAAa,SAAUf,EAAOI,EAAI2B,EAAKzB,EAAM/E,EAAGyG,GAkBnD,IANA,IAAIC,GAASjC,EAAQI,GAAM2B,EAAOzB,EAE9B4B,EAAIlF,EAAOmF,KAAKH,EAAKzG,EAAG+E,EAAM2B,GAE9BG,GAASpC,EAAQI,EAAK8B,GAAKH,EAAOE,EAE/BvG,KAAK2G,IAAIrC,EAAQI,EAAK8B,GAAK,MAC9BE,GAASpC,EAAQI,EAAK8B,GAAKH,EAAOE,EAClCC,EAAIlF,EAAOmF,KAAKH,EAAKzG,EAAG+E,EAAM8B,GAC9BH,EAAOG,EAEX,OAAOA,CACX,EACApF,EAAOK,gBAAkB,SAAUiF,EAAKC,EAAKC,EAAGvC,EAAGC,GAM/C,IAAIM,EAAK,iBACLiC,EAASH,GAAO9B,EAAK,KACrBkC,EAASH,GAAO/B,EAAK,KAErBI,GAAMlF,KAAKI,IAAImE,EAAG,GAAKvE,KAAKI,IAAIoE,EAAG,IAAMxE,KAAKI,IAAImE,EAAG,GAGzD,OAFQA,EAAKvE,KAAKuF,KAAK,EAAKL,EAAMlF,KAAKI,IAAIJ,KAAKwF,IAAIuB,GAAS,IAEjDD,GAAM9G,KAAKiG,IAAIc,GAAY/G,KAAKiG,IAAIe,EACpD,EACA1F,EAAOO,gBAAkB,SAAU+E,EAAKC,EAAKC,EAAGvC,EAAGC,GAM/C,IAAIM,EAAK,iBACLiC,EAASH,GAAO9B,EAAK,KACrBkC,EAASH,GAAO/B,EAAK,KAErBI,GAAMlF,KAAKI,IAAImE,EAAG,GAAKvE,KAAKI,IAAIoE,EAAG,IAAMxE,KAAKI,IAAImE,EAAG,GAGzD,OAFQA,EAAKvE,KAAKuF,KAAK,EAAKL,EAAMlF,KAAKI,IAAIJ,KAAKwF,IAAIuB,GAAS,IAEjDD,GAAM9G,KAAKiG,IAAIc,GAAY/G,KAAKwF,IAAIwB,EACpD,EACA1F,EAAOS,WAAa,SAAU6E,EAAKE,EAAGvC,EAAGC,GAMrC,IACIuC,EAAe,oBAANH,EAET1B,GAAMlF,KAAKI,IAAImE,EAAG,GAAKvE,KAAKI,IAAIoE,EAAG,IAAMxE,KAAKI,IAAImE,EAAG,GAGzD,OAFQA,EAAKvE,KAAKuF,KAAK,EAAKL,EAAMlF,KAAKI,IAAIJ,KAAKwF,IAAIuB,GAAS,KAE/C,EAAI7B,GAAO4B,GAAM9G,KAAKwF,IAAIuB,EAC5C,EACAzF,EAAOW,UAAY,SAAU+D,EAAGiB,EAAGC,EAAGC,EAAIC,EAAOC,EAAOC,GAOpD,IAAIxC,EAAK,iBAKT,OAAQkB,EAAKA,GAJK,KAAJsB,GAIeL,GAFbI,EAAQ,MAASvC,EAAK,MAEQoC,GAH9BE,EAAQ,MAAStC,EAAK,MAGwBqC,CAClE,EACA7F,EAAOa,UAAY,SAAU6D,EAAGiB,EAAGC,EAAGK,EAAIC,EAAOH,EAAOC,GAOpD,IAAIxC,EAAK,iBAKT,OAAQkB,GAFQqB,EAAQ,MAASvC,EAAK,MAEdmC,EAAKA,GAJX,KAAJK,GAI+BJ,GAH7BM,EAAQ,MAAS1C,EAAK,MAGuByC,CACjE,EACAjG,EAAOe,UAAY,SAAU2D,EAAGiB,EAAGC,EAAGO,EAAID,EAAOJ,EAAOE,GAQpD,IAAIxC,EAAK,iBAKT,OAAS,EAAIkB,GAFGoB,EAAQ,MAAStC,EAAK,MAERmC,GAHdO,EAAQ,MAAS1C,EAAK,MAGQoC,EAAKA,GAJjC,KAAJI,GAIoDG,CACtE,EACAnG,EAAOiB,WAAa,SAAUyD,EAAGiB,EAAGC,EAAG3C,EAAGC,GAMtC,IAAIkD,EAAY1H,KAAKuF,KAAKvF,KAAKI,IAAI4F,EAAG,GAAKhG,KAAKI,IAAI6G,EAAG,IACnD/B,GAAMlF,KAAKI,IAAImE,EAAG,GAAKvE,KAAKI,IAAIoE,EAAG,IAAMxE,KAAKI,IAAImE,EAAG,GACrDgC,EAAOvG,KAAK2H,MAAMT,EAAIQ,GAAa,EAAIxC,IAG3C,OAAa,kBAFH5D,EAAOsG,mBAAmBrD,EAAGW,EAAIqB,EAAMW,EAAGQ,EAGxD,EACApG,EAAOsG,mBAAqB,SAAUrD,EAAGW,EAAIqB,EAAMW,EAAGQ,GAalD,IAFA,IAAIG,EAAItD,EAAKvE,KAAKuF,KAAK,EAAKL,EAAKlF,KAAKI,IAAIJ,KAAKwF,IAAIe,GAAO,IACtDG,EAAO1G,KAAK2H,MAAOT,EAAKhC,EAAK2C,EAAK7H,KAAKwF,IAAIe,GAAUmB,GAClD1H,KAAK2G,IAAIJ,EAAOG,GAAQ,MAC3BH,EAAOG,EACPmB,EAAItD,EAAKvE,KAAKuF,KAAK,EAAKL,EAAKlF,KAAKI,IAAIJ,KAAKwF,IAAIe,GAAO,IACtDG,EAAO1G,KAAK2H,MAAOT,EAAKhC,EAAK2C,EAAK7H,KAAKwF,IAAIe,GAAUmB,GAEzD,OAAOhB,CACX,EACApF,EAAOmB,YAAc,SAAUuD,EAAGiB,GAK9B,OAA0B,kBAAnBjH,KAAK2H,MAAMV,EAAGjB,EACzB,EACA1E,EAAO6C,iBAAmB,SAAUyC,EAAKC,EAAKtC,EAAGC,EAAGC,EAAIE,EAAIC,EAAMC,GAS9D,IAAIC,EAAK,iBACLiC,EAASH,GAAO9B,EAAK,KACrBkC,EAASH,GAAO/B,EAAK,KAErBiB,EAAUlB,GAAQC,EAAK,KACvBE,EAAMT,EAAII,EACVM,EAAMT,EAAIG,EACVO,GAAMlF,KAAKI,IAAI4E,EAAK,GAAKhF,KAAKI,IAAI6E,EAAK,IAAMjF,KAAKI,IAAI4E,EAAK,GAE3DM,EAAKN,EAAOhF,KAAKuF,KAAK,EAAKL,EAAKlF,KAAKI,IAAIJ,KAAKwF,IAAIuB,GAAS,IAC3DtB,EAAOH,GAAM,EAAIJ,IAAQ,EAAKA,EAAKlF,KAAKI,IAAIJ,KAAKwF,IAAIuB,GAAS,IAC9DrB,EAAQJ,EAAKG,EAAO,EACpBqC,EAAId,EAASjB,EACbgC,EAAKzC,EAAMtF,KAAKiG,IAAIc,GACpBc,EAAKvC,EAAK,EAAMtF,KAAKI,IAAIJ,KAAKiG,IAAIc,GAAS,IAAQzB,EAAKG,EAAQzF,KAAKI,IAAIJ,KAAK4F,IAAImB,GAAS,IAC3FiB,EAAM1C,EAAK,IAAQtF,KAAKI,IAAIJ,KAAKiG,IAAIc,GAAS,IAAO,EAAK,GAAM/G,KAAKI,IAAIJ,KAAK4F,IAAImB,GAAS,GAAQ/G,KAAKI,IAAIJ,KAAK4F,IAAImB,GAAS,GAAO,GAAKrB,EAAS,GAAM1F,KAAKI,IAAIJ,KAAK4F,IAAImB,GAAS,GAAMrB,GAC9L,OAAOjB,EAAMqD,EAAIC,EAAO/H,KAAKI,IAAI0H,EAAG,GAAKD,EAAM7H,KAAKI,IAAI0H,EAAG,GAAKE,CACpE,EACA1G,EAAO8C,kBAAoB,SAAUwC,EAAKC,EAAKtC,EAAGC,EAAGC,EAAIC,EAAIC,EAAIC,EAAMC,GAUnE,IAAIC,EAAK,iBACLiC,EAASH,GAAO9B,EAAK,KACrBkC,EAASH,GAAO/B,EAAK,KACrBC,EAAUH,GAAQE,EAAK,KACvBiB,EAAUlB,GAAQC,EAAK,KACvBE,EAAMT,EAAII,EACVM,EAAMT,EAAIG,EACVO,GAAMlF,KAAKI,IAAI4E,EAAK,GAAKhF,KAAKI,IAAI6E,EAAK,IAAMjF,KAAKI,IAAI4E,EAAK,GAC3DnF,GAAKmF,EAAMC,IAAQD,EAAMC,GACzBK,EAAKN,EAAOhF,KAAKuF,KAAK,EAAKL,EAAKlF,KAAKI,IAAIJ,KAAKwF,IAAIuB,GAAS,IAE3DrB,EAAQJ,GADDA,GAAM,EAAIJ,IAAQ,EAAKA,EAAKlF,KAAKI,IAAIJ,KAAKwF,IAAIuB,GAAS,KAC1C,EACpBe,EAAId,EAASjB,EAEbkC,EADI3G,EAAOmF,KAAKxB,EAAKpF,EAAGkF,EAASgC,GACzBrC,EACRwD,EAAM5C,EAAK,EAAMtF,KAAKwF,IAAIuB,GAAY/G,KAAKiG,IAAIc,GAC/CoB,EAAQ7C,EAAK,GAAOtF,KAAKwF,IAAIuB,GAAY/G,KAAKI,IAAIJ,KAAKiG,IAAIc,GAAS,IAAQ,EAAK/G,KAAKI,IAAIJ,KAAK4F,IAAImB,GAAS,GAAO,EAAIrB,GACvH0C,EAAS9C,EAAK,IAAQtF,KAAKwF,IAAIuB,GAAY/G,KAAKI,IAAIJ,KAAKiG,IAAIc,GAAS,IAAQ,GAAM,GAAM/G,KAAKI,IAAIJ,KAAK4F,IAAImB,GAAS,GAAQ/G,KAAKI,IAAIJ,KAAK4F,IAAImB,GAAS,IAC5J,OAAOkB,EAAKjI,KAAKI,IAAI0H,EAAG,GAAKI,EAAOlI,KAAKI,IAAI0H,EAAG,GAAKK,EAAQnI,KAAKI,IAAI0H,EAAG,GAAKM,CAClF,EACA9G,EAAOmF,KAAO,SAAUxB,EAAKpF,EAAG+E,EAAMgC,GASlC,OAAO3B,IAAS,EAAIpF,EAAM,EAAI,EAAKG,KAAKI,IAAIP,EAAG,GAAQ,EAAI,EAAKG,KAAKI,IAAIP,EAAG,KAAQ+G,EAAMhC,IAAY,EAAI/E,EAAM,EAAIG,KAAKI,IAAIP,EAAG,GAAQ,GAAK,EAAKG,KAAKI,IAAIP,EAAG,IAAQG,KAAKwF,IAAIoB,EAAMhC,GAAU5E,KAAKiG,IAAIW,EAAMhC,IAAc,GAAK,EAAK5E,KAAKI,IAAIP,EAAG,GAAQ,GAAK,EAAKG,KAAKI,IAAIP,EAAG,IAAQG,KAAKwF,IAAI,GAAKoB,EAAMhC,IAAW5E,KAAKiG,IAAI,GAAKW,EAAMhC,IAAc,GAAK,GAAM5E,KAAKI,IAAIP,EAAG,GAAOG,KAAKwF,IAAI,GAAKoB,EAAMhC,IAAW5E,KAAKiG,IAAI,GAAKW,EAAMhC,IAC9a,EACOtD,CACX,CAjS2B,yBCtNyCjD,EAAOC,QAAgN,SAAU+J,GAAG,aAAqF,IAAIxI,EAA5E,SAAWwI,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,YAAYA,EAAEA,EAAE,CAACC,QAAQD,EAAE,CAAOzI,CAAEyI,GAAGE,EAAE,cAAcC,EAAE,CAACC,UAAUF,EAAEG,UAAUH,EAAE,aAAaI,UAAUJ,EAAE,aAAaK,QAAQL,EAAE,WAAWM,OAAON,EAAE,UAAUO,KAAKP,EAAE,QAAQQ,OAAOR,EAAE,WAAWS,QAAQT,EAAE,YAAYU,aAAa,mBAAmB3B,EAAEkB,EAAoCU,EAAE,cAAcC,EAAE,CAACC,MAAM,IAAIC,SAAS,EAAEC,UAAUJ,EAAEK,cAAa,GAAIzB,EAAE,CAAC,CAAC1E,KAAK,UAAUoG,UAAUhB,EAAEO,OAAO,IAAIP,EAAEM,KAAKW,SAAS,SAASpB,EAAEzI,GAAG,IAAIC,EAAED,EAAE8J,UAAU7J,EAAE8J,QAAQ,CAACC,MAAM/J,EAAEgK,UAAU,EAAEC,SAAS,IAAIC,OAAO1B,EAAE2B,YAAY,GAAG,CAAC5G,KAAK,WAAWoG,UAAUhB,EAAEQ,QAAQ,IAAIR,EAAEM,KAAKW,SAAS,SAASpB,EAAEzI,GAAG,IAAIC,EAAED,EAAE8J,UAAU7J,EAAE8J,QAAQ,CAACC,MAAM/J,EAAEgK,UAAU,EAAEC,SAAS,IAAIC,OAAO1B,EAAE2B,YAAY,IAAI,SAASC,EAAE5B,EAAEzI,GAAG,QAAG,IAASA,IAAIA,EAAE,qBAAqByI,EAAE,CAAC,GAAG,oBAAoB6B,MAAM,MAAM,IAAIA,MAAMtK,GAAG,MAAMA,CAAC,CAAC,CAAC,SAASuK,EAAE9B,GAAG,MAAM,QAAQ+B,KAAK/B,EAAE,CAAC,SAASgC,EAAEhC,EAAEzI,GAAG,OAAOyI,EAAEiC,UAAUjC,EAAEiC,UAAUC,SAAS3K,GAAG4K,EAAE5K,GAAGwK,KAAK/B,EAAEoC,UAAU,CAAC,SAASC,EAAErC,EAAEzI,EAAEC,QAAG,IAASD,IAAIA,EAAE+K,OAAOC,UAAU,IAAIrC,EAAErJ,MAAM6D,UAAU8H,MAAMrC,EAAE,GAAG,GAAG,yBAAyB4B,KAAK/B,GAAG,OAAOA,EAAE,IAAI,IAAI,IAAIG,EAAE,CAAC1I,EAAEuI,EAAEyC,OAAO,KAAK,MAAM,IAAI,IAAItC,EAAED,EAAEwC,KAAKnL,EAAEoL,uBAAuB3C,EAAEyC,OAAO,GAAGG,QAAQ,MAAM,OAAO,MAAM,QAAQzC,EAAED,EAAEwC,KAAKnL,EAAEsL,qBAAqB7C,SAASG,EAAED,EAAEwC,KAAKnL,EAAEuL,iBAAiB9C,IAAI,OAAOxI,EAAE2I,EAAEA,EAAE,EAAE,CAAC,SAAS1I,EAAEuI,GAAG,OAAOA,EAAE,MAAMA,EAAE,GAAGA,EAAEyC,OAAO,EAAEzC,EAAElH,QAAQkH,EAAEuC,SAASQ,eAAe/C,EAAE,CAAC,SAASgD,EAAEhD,GAAG,IAAIzI,EAAEgL,SAASU,yBAAyBzL,EAAE+K,SAASW,cAAc,OAAO,IAAI1L,EAAE2L,UAAUnD,EAAExI,EAAE4L,YAAY7L,EAAE8L,YAAY7L,EAAE4L,YAAY,OAAO7L,CAAC,CAAC,SAAS4K,EAAEnC,GAAG,OAAO,IAAI3H,OAAO,YAAY2H,EAAE,YAAY,CAAC,SAAS7D,EAAE6D,EAAEzI,EAAEC,GAAGwI,EAAEiC,UAAUjC,EAAEiC,UAAUqB,IAAI/L,GAAGyI,EAAEoC,WAAWpC,EAAEoC,UAAU,IAAI7K,GAAGgM,OAAO/L,GAAGsK,EAAEtK,IAAI8K,OAAO/M,YAAW,WAAY,OAAOiO,EAAExD,EAAEzI,EAAG,GAAEC,EAAE,CAAC,SAASgM,EAAExD,EAAEzI,EAAEC,GAAGwI,EAAEiC,UAAUjC,EAAEiC,UAAUwB,OAAOlM,GAAGyI,EAAEoC,UAAUpC,EAAEoC,UAAUQ,QAAQT,EAAE5K,GAAG,KAAKgM,OAAO/L,GAAGsK,EAAEtK,IAAI8K,OAAO/M,YAAW,WAAY,OAAO4G,EAAE6D,EAAEzI,EAAG,GAAEC,EAAE,CAAC,IAAIkM,EAAE,SAAS1D,GAAG,OAAOtK,KAAKiO,KAAK3D,EAAEtK,KAAKkO,SAAI,EAAOlO,KAAKmO,cAAS,EAAOnO,KAAKoO,uBAAkB,EAAOpO,KAAKqO,kBAAa,EAAOrO,KAAKsO,WAAW,EAAEtO,KAAKuO,MAAM,CAAC,EAAEvO,KAAKwO,QAAO,EAAGxO,KAAK6K,QAAQ,CAAC4D,KAAKnE,EAAEoE,QAAQrD,MAAM,GAAG,KAAKsD,SAAS,IAAI3O,KAAK4O,aAAa5O,KAAK6O,YAAYC,KAAK9O,MAAMA,KAAK+O,oBAAoB/O,KAAKgP,mBAAmBF,KAAK9O,MAAMA,IAAI,EAAEgO,EAAEhJ,UAAU/D,KAAK,SAASqJ,GAAGtK,KAAKkO,IAAI5D,EAAEtK,KAAKmO,SAAS7D,EAAE2E,cAAcjP,KAAKkP,eAAelP,KAAKiO,KAAKkB,KAAKC,aAAapP,KAAKsO,WAAWtO,KAAKqP,iBAAiB,EAAErP,KAAKiO,KAAKtD,UAAU2E,aAAatP,KAAKqP,iBAAiBrP,KAAKiO,KAAKkB,KAAKI,uBAAuB,EAAEvB,EAAEhJ,UAAUqK,eAAe,WAAW,IAAI/E,EAAEtK,KAAK6B,EAAE,EAAE,OAAOrB,OAAOgP,KAAKxP,KAAKuO,OAAOkB,SAAQ,SAAU3N,GAAGwI,EAAEiE,MAAMzM,GAAG+I,SAASP,EAAEiE,MAAMzM,GAAG8I,WAAW/I,GAAI,IAAGA,CAAC,EAAEmM,EAAEhJ,UAAU0K,gBAAgB,WAAW,OAAO1P,KAAKqO,YAAY,EAAEL,EAAEhJ,UAAU2K,qBAAqB,WAAW,OAAO3P,KAAKoO,iBAAiB,EAAEJ,EAAEhJ,UAAU4K,kBAAkB,SAAStF,GAAG,IAAIzI,EAAE7B,KAAK8B,EAAE9B,KAAKiO,KAAKtD,UAAUH,EAAExK,KAAKkO,IAAI2B,UAAUpF,EAAED,EAAE,GAAGF,EAAE,GAAG9D,EAAEgE,EAAE,GAAGF,EAAE,GAAGwF,EAAEhO,EAAEiO,YAAYC,EAAE/N,KAAKE,MAAMnC,KAAKsO,WAAWtO,KAAKqP,kBAAkBlE,EAAEwB,EAAE,MAAMpD,EAAEsB,QAAQ,OAAO/I,GAAE,GAAI0E,GAAGsJ,GAAGhO,EAAEmO,MAAMC,MAAM,OAAOpO,EAAEmO,MAAMxB,KAAKnE,EAAE,GAAG,EAAE,OAAOxI,EAAEmO,MAAMxB,KAAK,OAAO3M,EAAEmO,MAAMC,MAAM,QAAQzF,GAAGuF,GAAGlO,EAAEmO,MAAME,OAAO,OAAOrO,EAAEmO,MAAMG,IAAI9F,EAAE,GAAG,GAAG,OAAOxI,EAAEmO,MAAMG,IAAI,OAAOtO,EAAEmO,MAAME,OAAO,GAAG,SAAS7F,EAAEzI,EAAEC,EAAE0I,GAAG,GAAGrJ,MAAMkP,QAAQxO,GAAGA,EAAE4N,SAAQ,SAAU5N,GAAG,OAAOyI,EAAEzI,EAAEC,EAAE0I,EAAG,SAAQ,IAAI,IAAIC,EAAEtJ,MAAMkP,QAAQvO,GAAGA,EAAEA,EAAEwO,MAAM,OAAO/G,EAAEkB,EAAErH,OAAOmG,KAAK+C,EAAEzK,EAAE4I,EAAElB,KAAKuE,EAAEjM,EAAE4I,EAAElB,GAAGiB,EAAE,CAAvK,CAAyK1I,EAAEyH,EAAEuB,QAAQK,EAAE/H,SAASpD,KAAK6K,QAAQ8D,SAASnI,EAAE,EAAEsJ,EAAE,IAAIA,EAAE,KAAK9P,KAAK6K,QAAQ4D,KAAKtD,EAAEsE,SAAQ,SAAUnF,GAAkBsC,OAAO2D,YAAY1D,SAAS2D,gBAAgBC,YAA3D,IAAI3O,EAAE0I,EAAEjB,EAAE/C,EAA+DoG,OAAO8D,aAAa7D,SAAS2D,gBAAgBG,aAAcb,GAAGtF,GAAG1I,EAAEwI,GAAGsG,wBAAwBrH,EAAEsD,SAAS2D,gBAAgB,CAAC/B,KAAKjE,EAAEiE,KAAK7B,OAAOiE,YAAYtH,EAAEuH,WAAWV,IAAI5F,EAAE4F,IAAIxD,OAAOmE,YAAYxH,EAAEyH,UAAU3F,MAAMvJ,EAAEiO,YAAYkB,OAAOnP,EAAEwN,eAAeU,EAAEF,EAAEmB,OAAO9F,EAAEV,EAAEuF,EAAE7E,EAAE,IAAIA,EAAE6E,GAAGxJ,EAAIsJ,EAAEM,KAAK9F,EAAE2F,MAAMG,IAAI,IAAIjF,EAAE,MAAMb,EAAE2F,MAAMxB,KAAK5M,EAAEgJ,QAAQ8D,QAAS,IAAG,EAAEX,EAAEhJ,UAAUkM,SAAS,SAAS5G,EAAEzI,GAAG7B,KAAKiO,KAAKkD,cAAc,CAACC,KAAxjH,OAA+jHC,MAAM/G,EAAE2B,WAAWpK,IAAI7B,KAAKwO,QAAO,EAAGxO,KAAK4P,kBAAkBtF,EAAE,EAAE0D,EAAEhJ,UAAUsM,UAAU,WAAWtR,KAAKwO,QAAO,EAAG,SAASlE,EAAEzI,EAAEC,EAAE0I,GAAG,GAAGrJ,MAAMkP,QAAQxO,GAAGA,EAAE4N,SAAQ,SAAU5N,GAAG,OAAOyI,EAAEzI,EAAEC,EAAG,SAAQ,IAAI,IAAI2I,EAAEtJ,MAAMkP,QAAQvO,GAAGA,EAAEA,EAAEwO,MAAM,OAAO/G,EAAEkB,EAAErH,OAAOmG,KAAK+C,EAAEzK,EAAE4I,EAAElB,KAAK9C,EAAE5E,EAAE4I,EAAElB,GAAGiB,EAAE,CAArK,CAAuKxK,KAAKiO,KAAKtD,UAAUpB,EAAEuB,QAAQ9K,KAAKiO,KAAKkD,cAAc,CAACC,KAAr4H,SAA64H,EAAEpD,EAAEhJ,UAAUkK,aAAa,WAAWlP,KAAKmO,SAASoD,iBAAiBvR,KAAKiO,KAAKS,QAAQnD,UAAUvL,KAAK4O,cAAa,GAAI5O,KAAKkO,IAAIsD,GAAG,YAAYxR,KAAK+O,oBAAoB,EAAEf,EAAEhJ,UAAUyM,gBAAgB,WAAWzR,KAAKmO,SAASuD,oBAAoB1R,KAAKiO,KAAKS,QAAQnD,UAAUvL,KAAK4O,cAAa,GAAI5O,KAAKkO,IAAIyD,GAAG,YAAY3R,KAAK+O,oBAAoB,EAAEf,EAAEhJ,UAAU6J,YAAY,SAASvE,GAAG,IAAIzI,EAAE7B,KAAKA,KAAKoO,kBAAkBpO,KAAKkO,IAAI0D,mBAAmBtH,GAAGtK,KAAKqO,aAAarO,KAAKkO,IAAI2D,cAAcvH,GAAGtK,KAAKiO,KAAKkD,cAAc,CAACC,KAAv6I,aAA86IC,MAAMrR,KAAKqO,aAAapC,WAAWjM,KAAKoO,oBAAoBpO,KAAKiO,KAAK6D,WAAW9R,KAAKiO,KAAKS,QAAQnD,YAAYJ,IAAIb,EAAEyH,kBAAkBzH,EAAE0H,kBAAkBhS,KAAKkR,SAASlR,KAAKqO,aAAarO,KAAKoO,mBAAmB9D,EAAE2H,OAAOV,iBAAiB,cAAc,CAAC1C,YAAY,SAAS/M,GAAGD,EAAE2M,SAAS3M,EAAEyP,YAAYxP,EAAEiQ,kBAAkBzH,EAAE2H,OAAOP,oBAAoB5P,EAAEsP,KAAKpR,MAAK,GAAI,IAAG,GAAI,EAAEgO,EAAEhJ,UAAUgK,mBAAmB,SAAS1E,GAAGtK,KAAKsR,WAAW,EAAEtD,EAAEhJ,UAAUkN,gBAAgB,SAAS5H,EAAEzI,GAAG,IAAIC,EAAE0I,EAAExK,KAAKsK,GAAG,mBAAmBtK,KAAKuO,MAAM1M,GAAG6J,WAAW5J,EAAE9B,KAAKuO,MAAM1M,GAAG6J,SAASpB,EAAEiH,iBAAiB,SAAQ,SAAUjH,GAAGA,EAAE0H,iBAAiB,IAAIvH,EAAE,CAACwB,WAAWzB,EAAEmF,uBAAuBwC,KAAK3H,EAAE+D,MAAM1M,GAAGsQ,MAAM,MAAM3H,EAAE8G,YAAYxP,EAAE2I,EAAED,EAAE0D,IAAK,IAAE,GAAI,EAAE,IAAIkE,EAAE,SAAS9H,GAAG,OAAOtK,KAAKiO,KAAK3D,EAAEtK,KAAKiO,KAAKtD,UAAU3K,KAAK2K,UAAU3K,KAAKqS,iBAAgB,GAAIrS,IAAI,EAAE,OAAOoS,EAAEpN,UAAUqN,gBAAgB,SAAS/H,GAAG,IAAIzI,EAAEgL,SAASW,cAAc,OAAO1L,EAAE+K,SAASW,cAAc,MAAMhD,EAAE,CAACjB,EAAEoB,UAAUpB,EAAE2B,cAAc,OAAOZ,GAAGE,EAAE8H,KAAK/I,EAAEuB,QAAQjJ,EAAE6K,UAAUlC,EAAE+H,KAAK,KAAK1Q,EAAEoO,MAAM5E,MAAMnI,SAASlD,KAAKiO,KAAKS,QAAQrD,MAAM,IAAI,KAAKxJ,EAAE8L,YAAY7L,GAAGD,CAAC,EAAEuQ,EAAEpN,UAAUoK,WAAW,WAAW,IAAI9E,EAAE,GAAG,GAAG,UAAUtK,KAAKiO,KAAKS,QAAQpE,EAAEtK,KAAKiO,KAAKS,QAAQlD,aAAaxL,KAAKiO,KAAKS,QAAQH,MAAMiE,OAAOzI,GAAG/J,KAAKiO,KAAKS,QAAQH,MAAMvO,KAAKiO,KAAKS,QAAQlD,eAAelB,EAAEP,GAAG,IAAIO,EAAElH,OAAO,OAAM,EAAGkH,EAAEmF,QAAQzP,KAAKyS,aAAazS,KAAK,EAAEoS,EAAEpN,UAAUyN,aAAa,SAASnI,GAAG,IAAIzI,EAAEC,EAAE9B,KAAK,GAAGsK,EAAEiE,OAAOpN,MAAMkP,QAAQ/F,EAAEiE,OAAO,CAACjE,EAAEmB,UAAUnB,EAAEmB,WAAW,GAAG5J,EAAE0H,EAAEsB,SAASP,EAAEmB,UAAUiH,QAAQ7Q,KAAKyI,EAAEmB,UAAUnB,EAAEmB,UAAUrI,OAAO,IAAImG,EAAEsB,QAAQtB,EAAEsB,SAAS,IAAIL,EAAExK,KAAK2S,uBAAuB3S,KAAK2K,UAAUL,GAAGG,EAAEzK,KAAKqS,kBAAkB5H,EAAEwF,MAAMxB,KAAKzO,KAAKiO,KAAK2E,SAAS/H,QAAQ8D,UAAU3O,KAAKiO,KAAK2E,SAAS/H,QAAQ4D,KAAKjE,EAAEmD,YAAYlD,GAAGH,EAAEiE,MAAMkB,SAAQ,SAAUnF,GAAGxI,EAAE6Q,uBAAuBlI,EAAEH,GAAE,EAAI,GAAE,MAAMtK,KAAK2S,uBAAuB3S,KAAK2K,UAAUL,EAAE,EAAE8H,EAAEpN,UAAU2N,uBAAuB,SAASrI,EAAEzI,EAAEC,GAAG,IAAI0I,EAAEC,EAAEjE,EAAE,IAAIvE,KAAK4Q,SAAS9N,SAAS,IAAIgI,OAAO,EAAE,GAAG+C,GAAE,EAAG,MAAM,iBAAiBjO,GAAG,MAAMA,EAAEgM,QAAQrD,EAAE8C,EAAE,WAAW9G,EAAE,YAAY+C,EAAEqB,UAAU,eAAeH,EAAE,GAAGqC,MAAME,KAAKxC,EAAEsI,WAAW,GAAG,GAAGxI,EAAEoD,WAAWC,YAAYnD,GAAGsF,GAAE,IAAKjO,EAAE4J,UAAU5J,EAAE4J,WAAW,GAAGjB,EAAE8C,EAAE,SAASzL,EAAEwD,KAAK,WAAWoF,EAAEoC,SAASW,cAAc,MAAM3L,EAAEkJ,OAAO,KAAKlJ,EAAE4J,UAAU5J,EAAE4J,UAAUlC,EAAEwB,MAAM,IAAIlJ,EAAE4J,UAAUiH,QAAQnJ,EAAEwB,QAAQlJ,EAAE4J,WAAW,IAAIlC,EAAEwB,MAAMN,EAAEsI,aAAa,QAAQ,wBAAwBlR,EAAEkJ,KAAK,MAAMN,EAAEuI,GAAGxM,EAAEiE,EAAEiC,UAAU7K,EAAE4J,UAAUhB,EAAEkD,YAAYnD,GAAGF,EAAEoD,WAAWC,YAAYlD,IAAIzK,KAAKiO,KAAK2E,SAASrE,MAAM/H,GAAG,CAACwM,GAAGxM,EAAEqE,QAAQ/I,GAAG,EAAE8I,UAAUkF,EAAEpE,SAAS7J,EAAE6J,SAASyG,KAAKtQ,EAAEsQ,MAAM,MAAMnS,KAAKiO,KAAK2E,SAASV,gBAAgBzH,EAAEjE,GAAGiE,CAAC,EAAE2H,EAAEpN,UAAUiO,gBAAgB,SAAS3I,GAAG,IAAIzI,EAAE8K,EAAE,IAAIrC,EAAEtK,KAAK2K,UAAU+C,YAAY7L,GAAG7B,KAAK2K,UAAU+C,WAAWwF,YAAYrR,UAAU7B,KAAKiO,KAAK2E,SAASrE,MAAMjE,EAAE,EAAE8H,EAAEpN,UAAUuK,sBAAsB,WAAW,IAAIjF,EAAEtK,KAAK2K,UAAUwI,YAAYtR,EAAEyL,EAAE,oBAAoBxL,EAAEwL,EAAE,oBAAoB9C,EAAEqC,SAASW,cAAc,MAAM/C,EAAEoC,SAASW,cAAc,MAAMhD,EAAEmD,YAAY9L,GAAG4I,EAAEkD,YAAY7L,GAAGwI,EAAEqD,YAAYnD,GAAGF,EAAEqD,YAAYlD,GAAGzK,KAAK2K,UAAUyI,WAAWzF,YAAYrD,GAAG,IAAIf,EAAEe,EAAEgF,aAAa,EAAE,OAAOtP,KAAK2K,UAAUyI,WAAWF,YAAY5I,GAAGf,CAAC,EAAE,SAASe,GAAG,SAASzI,EAAEA,QAAG,IAASA,IAAIA,EAAE,CAAC,GAAGqK,EAAE,iBAAiBrK,EAAE,+CAA+C7B,KAAK0O,QAAQ,SAASpE,EAAEzI,GAAG,IAAIC,EAAE,CAAC,EAAE,IAAI,IAAI0I,KAAKF,EAAExI,EAAE0I,GAAGF,EAAEE,GAAG,IAAI,IAAIC,KAAK5I,EAAEC,EAAE2I,GAAG5I,EAAE4I,GAAG,OAAO3I,CAAC,CAAjF,CAAmFsJ,EAAEvJ,GAAG7B,KAAK8R,UAAS,EAAG9R,KAAK4S,SAAS,IAAI5E,EAAEhO,MAAMA,KAAKmP,KAAK,IAAIiD,EAAEpS,MAAMsK,EAAE0C,KAAKhN,KAAK,CAACqT,QAAQrT,KAAK2K,WAAW,CAAC,OAAOL,IAAIzI,EAAEyR,UAAUhJ,GAAGzI,EAAEmD,UAAUxE,OAAO+S,OAAOjJ,GAAGA,EAAEtF,WAAWnD,EAAEmD,UAAUwO,YAAY3R,EAAEA,EAAEmD,UAAU7E,MAAM,WAAWK,OAAOgP,KAAKxP,KAAK4S,SAASrE,OAAOkB,QAAQzP,KAAKmP,KAAK8D,gBAAgBjT,KAAKmP,KAAK,EAAEtN,EAAEmD,UAAUyO,MAAM,WAAWzT,KAAK4S,SAAStB,WAAW,EAAEzP,EAAEmD,UAAU0O,OAAO,WAAW1T,KAAK8R,UAAS,CAAE,EAAEjQ,EAAEmD,UAAU2O,QAAQ,WAAW3T,KAAK8R,UAAS,CAAE,EAAEjQ,EAAEmD,UAAU4O,gBAAgB,WAAW,OAAO7J,CAAC,EAAElI,EAAEmD,UAAU6O,WAAW,WAAW,OAAOrT,OAAOgP,KAAKxP,KAAK4S,SAASrE,OAAOnL,MAAM,EAAEvB,EAAEmD,UAAU8O,OAAO,SAASxJ,GAAG4B,EAAE/K,MAAMkP,QAAQ/F,GAAG,oCAAoCA,EAAEmF,QAAQzP,KAAKsS,KAAKtS,KAAK,EAAE6B,EAAEmD,UAAU+O,OAAO,WAAW,OAAO/T,KAAK4S,SAASpE,MAAM,EAAE3M,EAAEmD,UAAUgP,eAAe,SAAS1J,GAAG4B,EAAE/K,MAAMkP,QAAQ/F,GAAG,sCAAsCtK,KAAK+T,UAAU/T,KAAK4S,SAAShD,kBAAkBtF,EAAE,EAAEzI,EAAEmD,UAAUiP,IAAI,WAAW,IAAI3J,EAAE9J,OAAOgP,KAAKxP,KAAK4S,SAASrE,OAAOvO,KAAKmP,KAAK8D,gBAAgB3I,EAAEA,EAAElH,OAAO,GAAG,EAAEvB,EAAEmD,UAAUsN,KAAK,SAAShI,GAAG4B,EAAE,MAAM5B,EAAE,mCAAmCtK,KAAKmP,KAAKsD,aAAanI,EAAE,EAAEzI,EAAEmD,UAAUkP,MAAM,WAAWlU,KAAKmP,KAAK8D,gBAAgBzS,OAAOgP,KAAKxP,KAAK4S,SAASrE,OAAO,GAAG,EAAE1M,EAAEmD,UAAUmP,OAAO,SAAStS,GAAGyI,EAAEtF,UAAUmP,OAAOnH,KAAKhN,KAAK6B,GAAGA,EAAE7B,KAAK4S,SAAS3R,KAAKY,EAAE7B,MAAMA,KAAK4S,SAASnB,iBAAiB,EAAE5P,CAAC,CAA9gD,CAAghDC,EAAEyI,QAAS,CAA9hT1I,CAAE,EAAQ,yDCJrFuS,YADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GA4CJ,QAjCoC,SAAUC,GAK1C,SAASC,EAAeC,GACpB,IAAI/T,EAAQZ,KAER4U,EAAU,oDADS,WAAZ,KAAuB,KAAU,IAAM,WAAc,KAAK,IAGjE,gBACAD,EACA,gBAiBJ,OAhBA/T,EAAQ6T,EAAOzH,KAAKhN,KAAM4U,IAAY5U,MAShC2U,KAAOA,EAIb/T,EAAMiU,KAAO,iBAEbjU,EAAMgU,QAAUA,EACThU,CACX,CACA,OA9BAyT,EAAUK,EAAgBD,GA8BnBC,CACX,CAhCmC,CAgCjCvI,yDCrDMiI,0CADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAaAM,EACQ,SAORC,EAAiC,SAAUN,GAO3C,SAASM,EAAgB3D,EAAM4D,EAAaC,GACxC,IAAIrU,EAAQ6T,EAAOzH,KAAKhN,KAAMoR,IAASpR,KAavC,OAPAY,EAAMyS,QAAU2B,EAMhBpU,EAAMsU,MAAQD,EACPrU,CACX,CACA,OAtBAyT,EAAUU,EAAiBN,GAsBpBM,CACX,CAxBoC,CAwBlC,MA6NF,QAzMgC,SAAUN,GAMtC,SAASU,EAAWC,EAAWC,GAC3B,IAAIzU,EAAQ6T,EAAOzH,KAAKhN,OAASA,KAC7B0O,EAAU2G,GAAe,CAAC,EAW9B,GANAzU,EAAM0U,UAAY5G,EAAQ6G,OAK1B3U,EAAM4U,OAASJ,GAAwB,GACnCxU,EAAM0U,QACN,IAAK,IAAI9K,EAAI,EAAGiL,EAAK7U,EAAM4U,OAAOpS,OAAQoH,EAAIiL,IAAMjL,EAChD5J,EAAM8U,cAAc9U,EAAM4U,OAAOhL,GAAIA,GAI7C,OADA5J,EAAM+U,gBACC/U,CACX,CA6KA,OAtMAyT,EAAUc,EAAYV,GA8BtBU,EAAWnQ,UAAU7E,MAAQ,WACzB,KAAOH,KAAK4V,YAAc,GACtB5V,KAAKiU,KAEb,EAQAkB,EAAWnQ,UAAU8O,OAAS,SAAU+B,GACpC,IAAK,IAAIrL,EAAI,EAAGiL,EAAKI,EAAIzS,OAAQoH,EAAIiL,IAAMjL,EACvCxK,KAAKsS,KAAKuD,EAAIrL,IAElB,OAAOxK,IACX,EAQAmV,EAAWnQ,UAAUyK,QAAU,SAAU9C,GAErC,IADA,IAAImJ,EAAQ9V,KAAKwV,OACRhL,EAAI,EAAGiL,EAAKK,EAAM1S,OAAQoH,EAAIiL,IAAMjL,EACzCmC,EAAEmJ,EAAMtL,GAAIA,EAAGsL,EAEvB,EASAX,EAAWnQ,UAAU+Q,SAAW,WAC5B,OAAO/V,KAAKwV,MAChB,EAOAL,EAAWnQ,UAAUgR,KAAO,SAAUd,GAClC,OAAOlV,KAAKwV,OAAON,EACvB,EAOAC,EAAWnQ,UAAU4Q,UAAY,WAC7B,OAAO5V,KAAKiF,IAAI6P,EACpB,EAOAK,EAAWnQ,UAAUiR,SAAW,SAAUf,EAAOgB,GACzClW,KAAKsV,SACLtV,KAAK0V,cAAcQ,GAEvBlW,KAAKwV,OAAOW,OAAOjB,EAAO,EAAGgB,GAC7BlW,KAAK2V,gBACL3V,KAAKmR,cAAc,IAAI4D,EAAgB,QAAyBmB,EAAMhB,GAC1E,EAOAC,EAAWnQ,UAAUiP,IAAM,WACvB,OAAOjU,KAAKoW,SAASpW,KAAK4V,YAAc,EAC5C,EAOAT,EAAWnQ,UAAUsN,KAAO,SAAU4D,GAC9BlW,KAAKsV,SACLtV,KAAK0V,cAAcQ,GAEvB,IAAIpU,EAAI9B,KAAK4V,YAEb,OADA5V,KAAKiW,SAASnU,EAAGoU,GACVlW,KAAK4V,WAChB,EAOAT,EAAWnQ,UAAU+I,OAAS,SAAUmI,GAEpC,IADA,IAAIL,EAAM7V,KAAKwV,OACNhL,EAAI,EAAGiL,EAAKI,EAAIzS,OAAQoH,EAAIiL,IAAMjL,EACvC,GAAIqL,EAAIrL,KAAO0L,EACX,OAAOlW,KAAKoW,SAAS5L,EAIjC,EAQA2K,EAAWnQ,UAAUoR,SAAW,SAAUlB,GACtC,IAAImB,EAAOrW,KAAKwV,OAAON,GAIvB,OAHAlV,KAAKwV,OAAOW,OAAOjB,EAAO,GAC1BlV,KAAK2V,gBACL3V,KAAKmR,cAAc,IAAI4D,EAAgB,WAA4BsB,EAAMnB,IAClEmB,CACX,EAOAlB,EAAWnQ,UAAUsR,MAAQ,SAAUpB,EAAOgB,GAC1C,IAAIpU,EAAI9B,KAAK4V,YACb,GAAIV,EAAQpT,EAAG,CACP9B,KAAKsV,SACLtV,KAAK0V,cAAcQ,EAAMhB,GAE7B,IAAImB,EAAOrW,KAAKwV,OAAON,GACvBlV,KAAKwV,OAAON,GAASgB,EACrBlW,KAAKmR,cAAc,IAAI4D,EAAgB,WAA4BsB,EAAMnB,IACzElV,KAAKmR,cAAc,IAAI4D,EAAgB,QAAyBmB,EAAMhB,GAC1E,KACK,CACD,IAAK,IAAIqB,EAAIzU,EAAGyU,EAAIrB,IAASqB,EACzBvW,KAAKiW,SAASM,OAAGC,GAErBxW,KAAKiW,SAASf,EAAOgB,EACzB,CACJ,EAIAf,EAAWnQ,UAAU2Q,cAAgB,WACjC3V,KAAKyW,IAAI3B,EAAiB9U,KAAKwV,OAAOpS,OAC1C,EAMA+R,EAAWnQ,UAAU0Q,cAAgB,SAAUQ,EAAMQ,GACjD,IAAK,IAAIlM,EAAI,EAAGiL,EAAKzV,KAAKwV,OAAOpS,OAAQoH,EAAIiL,IAAMjL,EAC/C,GAAIxK,KAAKwV,OAAOhL,KAAO0L,GAAQ1L,IAAMkM,EACjC,MAAM,IAAI,IAAe,GAGrC,EACOvB,CACX,CAxM+B,CAwM7B,oDC9QF,SAMIwB,IAAK,MAMLC,OAAQ,uDCcZ,QAzBgC,WAC5B,SAASC,IAML7W,KAAK8W,UAAW,CACpB,CAeA,OAXAD,EAAW7R,UAAU+R,QAAU,WACtB/W,KAAK8W,WACN9W,KAAK8W,UAAW,EAChB9W,KAAKgX,kBAEb,EAKAH,EAAW7R,UAAUgS,gBAAkB,WAAc,EAC9CH,CACX,CAxB+B,4FCNvBzC,0CADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAqQG,SAASyC,EAAoBC,GAChC,MAAmB,mBAARA,EACAA,GAOH/V,MAAMkP,QAAQ6G,GACdC,EAAWD,IAGX,OAAqD,mBAArB,EAAe,UAAkB,IAEjEC,EAAW,CADmD,IAG3D,WACH,OAAOA,CACX,GAXA,IAAIA,CAaZ,CACA,QA/N6B,SAAU1C,GAQnC,SAAS2C,EAAQC,GACb,IAAIzW,EAAQ6T,EAAOzH,KAAKhN,OAASA,KA4BjC,GAvBAY,EAAM0W,SAAMd,EAKZ5V,EAAM2W,cAAgB,WAMtB3W,EAAM4W,OAAS,KAKf5W,EAAM6W,oBAAiBjB,EAKvB5V,EAAM8W,mBAAqB,KAC3B9W,EAAM2Q,kBAAiB,QAAmB3Q,EAAM2W,eAAgB3W,EAAM+W,wBAClEN,EACA,GACuE,mBAAtD,EAAgD,sBAAkB,CAC/E,IAAIO,EAAmC,EACvChX,EAAMiX,YAAYD,EACtB,KACK,CAED,IAAIE,EAAaT,EACjBzW,EAAMmX,cAAcD,EACxB,CAEJ,OAAOlX,CACX,CA6IA,OA9LAyT,EAAU+C,EAAS3C,GAwDnB2C,EAAQpS,UAAUgT,MAAQ,WACtB,IAAIA,EAAQ,IAAIZ,EAAQpX,KAAKiY,gBAAkBjY,KAAKkY,gBAAkB,MACtEF,EAAMG,gBAAgBnY,KAAKoY,mBAC3B,IAAIR,EAAW5X,KAAKqY,cAChBT,GACAI,EAAMH,YAAYD,EAASI,SAE/B,IAAI/H,EAAQjQ,KAAKsY,WAIjB,OAHIrI,GACA+H,EAAMO,SAAStI,GAEZ+H,CACX,EASAZ,EAAQpS,UAAUqT,YAAc,WAC5B,OAA0CrY,KAAKiF,IAAIjF,KAAKuX,cAC5D,EAQAH,EAAQpS,UAAUwT,MAAQ,WACtB,OAAOxY,KAAKsX,GAChB,EAQAF,EAAQpS,UAAUoT,gBAAkB,WAChC,OAAOpY,KAAKuX,aAChB,EAOAH,EAAQpS,UAAUsT,SAAW,WACzB,OAAOtY,KAAKwX,MAChB,EAOAJ,EAAQpS,UAAUyT,iBAAmB,WACjC,OAAOzY,KAAKyX,cAChB,EAIAL,EAAQpS,UAAU0T,sBAAwB,WACtC1Y,KAAK2Y,SACT,EAIAvB,EAAQpS,UAAU2S,uBAAyB,WACnC3X,KAAK0X,sBACL,QAAc1X,KAAK0X,oBACnB1X,KAAK0X,mBAAqB,MAE9B,IAAIE,EAAW5X,KAAKqY,cAChBT,IACA5X,KAAK0X,oBAAqB,QAAOE,EAAU,WAAkB5X,KAAK0Y,sBAAuB1Y,OAE7FA,KAAK2Y,SACT,EAQAvB,EAAQpS,UAAU6S,YAAc,SAAUD,GACtC5X,KAAKyW,IAAIzW,KAAKuX,cAAeK,EACjC,EAUAR,EAAQpS,UAAUuT,SAAW,SAAUK,GACnC5Y,KAAKwX,OAASoB,EACd5Y,KAAKyX,eAAkBmB,EAEjB3B,EAAoB2B,QADpBpC,EAENxW,KAAK2Y,SACT,EAUAvB,EAAQpS,UAAU6T,MAAQ,SAAU7F,GAChChT,KAAKsX,IAAMtE,EACXhT,KAAK2Y,SACT,EAQAvB,EAAQpS,UAAUmT,gBAAkB,SAAUtD,GAC1C7U,KAAK0R,qBAAoB,QAAmB1R,KAAKuX,eAAgBvX,KAAK2X,wBACtE3X,KAAKuX,cAAgB1C,EACrB7U,KAAKuR,kBAAiB,QAAmBvR,KAAKuX,eAAgBvX,KAAK2X,wBACnE3X,KAAK2X,wBACT,EACOP,CACX,CAhM4B,CAgM1B,qECtQMhD,8DADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAcAM,EACU,WADVA,EAEmB,mBAFnBA,EAGU,WAHVA,EAImB,mBAJnBA,EAKS,UALTA,EAMU,WANVA,EAOY,aAPZA,EAQO,QARPA,EASU,WATVA,EAUkB,kBAMlBgE,EAAkC,SAAUrE,GAK5C,SAASqE,EAAiBC,GACtB,IAAInY,EAAQ6T,EAAOzH,KAAKhN,KAAM,YAAoBA,KASlD,OALAY,EAAM+T,KAAOoE,EAAMpE,KAInB/T,EAAMgU,QAAUmE,EAAMnE,QACfhU,CACX,CACA,OAhBAyT,EAAUyE,EAAkBrE,GAgBrBqE,CACX,CAlBqC,CAkBnC,MA4QF,QA3OiC,SAAUrE,GAKvC,SAASuE,EAAY3D,GACjB,IAAIzU,EAAQ6T,EAAOzH,KAAKhN,OAASA,KAC7B0O,EAAU2G,GAAe,CAAC,EA0B9B,OApBAzU,EAAMqY,UAAY,KAKlBrY,EAAMsY,WAAa,EAAAC,kBAKnBvY,EAAMwY,cAAW5C,EACjB5V,EAAM2Q,kBAAiB,QAAmBuD,GAAsBlU,EAAMyY,0BACtEzY,EAAM2Q,kBAAiB,QAAmBuD,GAAoBlU,EAAM0Y,6BACzC9C,IAAvB9H,EAAQ6K,YACR3Y,EAAM4Y,cAAc9K,EAAQ6K,iBAEA/C,IAA5B9H,EAAQ+K,iBACR7Y,EAAM8Y,mBAAmBhL,EAAQ+K,iBAErC7Y,EAAM+Y,iBAAiCnD,IAArB9H,EAAQkL,UAAyBlL,EAAQkL,UACpDhZ,CACX,CAuMA,OAxOAyT,EAAU2E,EAAavE,GAqCvBuE,EAAYhU,UAAUgS,gBAAkB,WACpChX,KAAK2Z,aAAY,GACjBlF,EAAOzP,UAAUgS,gBAAgBhK,KAAKhN,KAC1C,EAIAgZ,EAAYhU,UAAUqU,yBAA2B,WAC7C,IAAIE,EAAavZ,KAAK6Z,gBAClBN,IACAvZ,KAAKkZ,YAAa,IAAAY,8BAA4B,IAAA7U,KAAc,aAAcsU,GACtEvZ,KAAKiZ,WACLjZ,KAAKyW,IAAI3B,EAAmB9U,KAAKkZ,WAAWlZ,KAAKiZ,YAG7D,EAIAD,EAAYhU,UAAUsU,uBAAyB,WAC3C,GAAI,gBAAiBS,UAAW,CAC5B,IAAIH,EAAW5Z,KAAKga,cAChBJ,QAA8BpD,IAAlBxW,KAAKoZ,SACjBpZ,KAAKoZ,SAAWW,UAAUE,YAAYC,cAAcla,KAAKma,gBAAgBrL,KAAK9O,MAAOA,KAAKoa,eAAetL,KAAK9O,MAAOA,KAAKqa,sBAEpHT,QAA8BpD,IAAlBxW,KAAKoZ,WACvBW,UAAUE,YAAYK,WAAWta,KAAKoZ,UACtCpZ,KAAKoZ,cAAW5C,EAExB,CACJ,EAKAwC,EAAYhU,UAAUmV,gBAAkB,SAAUI,GAC9C,IAAIC,EAASD,EAASC,OACtBxa,KAAKyW,IAAI3B,EAAmB0F,EAAOC,UACnCza,KAAKyW,IAAI3B,EAAuC,OAApB0F,EAAOE,cAAoBlE,EAAYgE,EAAOE,UAC1E1a,KAAKyW,IAAI3B,EAAwD,OAA5B0F,EAAOG,sBAA4BnE,EAAYgE,EAAOG,kBAC3F3a,KAAKyW,IAAI3B,EAAqC,OAAnB0F,EAAOI,aAAmBpE,GAAY,QAAUgE,EAAOI,UAC7E5a,KAAKiZ,WAINjZ,KAAKiZ,UAAU,GAAKuB,EAAO/V,UAC3BzE,KAAKiZ,UAAU,GAAKuB,EAAOjW,UAJ3BvE,KAAKiZ,UAAY,CAACuB,EAAO/V,UAAW+V,EAAOjW,UAM/C,IAAIsW,EAAoB7a,KAAKkZ,WAAWlZ,KAAKiZ,WAC7CjZ,KAAKyW,IAAI3B,EAAmB+F,GAC5B7a,KAAKyW,IAAI3B,EAAiC,OAAjB0F,EAAOM,WAAiBtE,EAAYgE,EAAOM,OACpE,IAAIlD,GAAW,QAAgB5X,KAAKiZ,UAAWuB,EAAOC,UACtD7C,EAASmD,eAAe/a,KAAKkZ,YAC7BlZ,KAAKyW,IAAI3B,EAA4B8C,GACrC5X,KAAK2Y,SACT,EAKAK,EAAYhU,UAAUoV,eAAiB,SAAUrB,GAC7C/Y,KAAKmR,cAAc,IAAI2H,EAAiBC,GAC5C,EAQAC,EAAYhU,UAAUgW,YAAc,WAChC,OAAwChb,KAAKiF,IAAI6P,EACrD,EAOAkE,EAAYhU,UAAUiW,oBAAsB,WACxC,OAA4Djb,KAAKiF,IAAI6P,IAA+B,IACxG,EAQAkE,EAAYhU,UAAUkW,YAAc,WAChC,OAAwClb,KAAKiF,IAAI6P,EACrD,EAQAkE,EAAYhU,UAAUmW,oBAAsB,WACxC,OAAwCnb,KAAKiF,IAAI6P,EACrD,EASAkE,EAAYhU,UAAUoW,WAAa,WAC/B,OAAwCpb,KAAKiF,IAAI6P,EACrD,EAQAkE,EAAYhU,UAAUqW,YAAc,WAChC,OAAsErb,KAAKiF,IAAI6P,EACnF,EAQAkE,EAAYhU,UAAU6U,cAAgB,WAClC,OAAwE7Z,KAAKiF,IAAI6P,EACrF,EAQAkE,EAAYhU,UAAUsW,SAAW,WAC7B,OAAwCtb,KAAKiF,IAAI6P,EACrD,EAOAkE,EAAYhU,UAAUgV,YAAc,WAChC,OAA+Bha,KAAKiF,IAAI6P,EAC5C,EAUAkE,EAAYhU,UAAUqV,mBAAqB,WACvC,OAAiDra,KAAKiF,IAAI6P,EAC9D,EAQAkE,EAAYhU,UAAUwU,cAAgB,SAAUD,GAC5CvZ,KAAKyW,IAAI3B,GAAqB,IAAA7P,KAAcsU,GAChD,EAOAP,EAAYhU,UAAU2U,YAAc,SAAUC,GAC1C5Z,KAAKyW,IAAI3B,EAAmB8E,EAChC,EAUAZ,EAAYhU,UAAU0U,mBAAqB,SAAUhL,GACjD1O,KAAKyW,IAAI3B,EAA2BpG,EACxC,EACOsK,CACX,CA1OgC,CA0O9B,gECrUM5E,8DADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GA2IG,SAAS+G,EAAYC,EAAOC,EAAaC,GAC5C,IAAIC,EAAsC,EAC1C,GAAIA,EAAIC,KAAO,KAAc,CACzB,IAAIC,EAAUF,EAAIG,SACdC,GAAc,EAuBlB,OAnBAF,EACKG,MAAK,WACFD,GACAN,GAER,IACKQ,OAAM,SAAUlD,GACbgD,IAGmB,kBAAfhD,EAAMlE,MACY,wBAAlBkE,EAAMnE,QACN6G,IAGAC,IAGZ,IArBe,WACXK,GAAc,CAClB,CAqBJ,CACA,IAAIG,EAAe,EACf,QAAWP,EAAK,SAAgBF,IAChC,QAAWE,EAAK,UAAiBD,IAErC,OAAO,WACHQ,EAAazM,QAAQ,KACzB,CACJ,CACA,QApJkC,SAAUgF,GAUxC,SAAS0H,EAAaC,EAAQC,EAAYC,EAAYV,EAAKW,EAAaC,GACpE,IAAI5b,EAAQ6T,EAAOzH,KAAKhN,KAAMoc,EAAQC,EAAYC,EAAY,WAAoBtc,KA6BlF,OAxBAY,EAAM6b,KAAOb,EAKbhb,EAAM8b,OAAS,IAAIC,MACC,OAAhBJ,IACA3b,EAAM8b,OAAOH,YAAcA,GAM/B3b,EAAMgc,UAAY,KAKlBhc,EAAMic,MAAQ,SAKdjc,EAAMkc,mBAAqBN,EACpB5b,CACX,CA8DA,OAtGAyT,EAAU8H,EAAc1H,GA6CxB0H,EAAanX,UAAU+X,SAAW,WAC9B,OAAO/c,KAAK0c,MAChB,EAMAP,EAAanX,UAAUgY,kBAAoB,WACvChd,KAAK6c,MAAQ,UACb7c,KAAKid,iBACLjd,KAAK2Y,SACT,EAMAwD,EAAanX,UAAUkY,iBAAmB,gBACd1G,IAApBxW,KAAKqc,aACLrc,KAAKqc,YAAa,IAAAc,WAAUnd,KAAKoc,QAAUpc,KAAK0c,OAAOzL,QAE3DjR,KAAK6c,MAAQ,WACb7c,KAAKid,iBACLjd,KAAK2Y,SACT,EAOAwD,EAAanX,UAAUoY,KAAO,WACtBpd,KAAK6c,OAAS,UAAmB7c,KAAK6c,OAAS,YAC/C7c,KAAK6c,MAAQ,YACb7c,KAAK2Y,UACL3Y,KAAK8c,mBAAmB9c,KAAMA,KAAKyc,MACnCzc,KAAK4c,UAAYrB,EAAYvb,KAAK0c,OAAQ1c,KAAKkd,iBAAiBpO,KAAK9O,MAAOA,KAAKgd,kBAAkBlO,KAAK9O,OAEhH,EAIAmc,EAAanX,UAAUqY,SAAW,SAAU7B,GACxCxb,KAAK0c,OAASlB,CAClB,EAMAW,EAAanX,UAAUiY,eAAiB,WAChCjd,KAAK4c,YACL5c,KAAK4c,YACL5c,KAAK4c,UAAY,KAEzB,EACOT,CACX,CAxGiC,CAwG/B,uDC9IM/H,gCADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAyFJ,QA9E+B,SAAUC,GAQrC,SAAS6I,EAAUlB,EAAQC,EAAYC,EAAYO,GAC/C,IAAIjc,EAAQ6T,EAAOzH,KAAKhN,OAASA,KAqBjC,OAhBAY,EAAMwb,OAASA,EAKfxb,EAAM2c,YAAcjB,EAKpB1b,EAAMyb,WAAaA,EAKnBzb,EAAMic,MAAQA,EACPjc,CACX,CA6CA,OA3EAyT,EAAUiJ,EAAW7I,GAkCrB6I,EAAUtY,UAAU2T,QAAU,WAC1B3Y,KAAKmR,cAAc,WACvB,EAIAmM,EAAUtY,UAAUwY,UAAY,WAC5B,OAAOxd,KAAKoc,MAChB,EAKAkB,EAAUtY,UAAU+X,SAAW,WAC3B,OAAO,SACX,EAIAO,EAAUtY,UAAUyY,cAAgB,WAChC,OAAOzd,KAAKud,WAChB,EAIAD,EAAUtY,UAAU0Y,cAAgB,WAChC,OAA8B1d,KAAe,UACjD,EAIAsd,EAAUtY,UAAU2Y,SAAW,WAC3B,OAAO3d,KAAK6c,KAChB,EAKAS,EAAUtY,UAAUoY,KAAO,YACvB,SACJ,EACOE,CACX,CA7E8B,CA6E5B,mDC7FF,SACIM,KAAM,EACNC,QAAS,EACTC,OAAQ,EACRC,MAAO,EACPC,MAAO,qDCVH5J,0CADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAwIJ,QA/H+B,SAAUC,GAUrC,SAASwJ,EAAUC,EAAWrB,EAAOjB,EAAKW,EAAa4B,EAAkB9I,GACrE,IAAIzU,EAAQ6T,EAAOzH,KAAKhN,KAAMke,EAAWrB,EAAOxH,IAAgBrV,KA+BhE,OA1BAY,EAAMwd,aAAe7B,EAOrB3b,EAAM6b,KAAOb,EAKbhb,EAAM8b,OAAS,IAAIC,MACC,OAAhBJ,IACA3b,EAAM8b,OAAOH,YAAcA,GAM/B3b,EAAMgc,UAAY,KAKlBhc,EAAMyd,kBAAoBF,EACnBvd,CACX,CAwEA,OAlHAyT,EAAU4J,EAAWxJ,GAgDrBwJ,EAAUjZ,UAAU+X,SAAW,WAC3B,OAAO/c,KAAK0c,MAChB,EAIAuB,EAAUjZ,UAAUsZ,OAAS,WACzB,OAAOte,KAAKyc,IAChB,EAMAwB,EAAUjZ,UAAUgY,kBAAoB,WA0D5C,IACQuB,EA1DAve,KAAK6c,MAAQ,UACb7c,KAAKid,iBACLjd,KAAK0c,SAwDL6B,GAAM,QAAsB,EAAG,IAC/BC,UAAY,gBAChBD,EAAIE,SAAS,EAAG,EAAG,EAAG,GACfF,EAAIG,QA1DP1e,KAAK2Y,SACT,EAMAsF,EAAUjZ,UAAUkY,iBAAmB,WACnC,IAAI1B,EAAyCxb,KAAW,OACpDwb,EAAMmD,cAAgBnD,EAAMoD,cAC5B5e,KAAK6c,MAAQ,WAGb7c,KAAK6c,MAAQ,UAEjB7c,KAAKid,iBACLjd,KAAK2Y,SACT,EAKAsF,EAAUjZ,UAAUoY,KAAO,WACnBpd,KAAK6c,OAAS,YACd7c,KAAK6c,MAAQ,SACb7c,KAAK0c,OAAS,IAAIC,MACQ,OAAtB3c,KAAKoe,eACLpe,KAAK0c,OAAOH,YAAcvc,KAAKoe,eAGnCpe,KAAK6c,OAAS,WACd7c,KAAK6c,MAAQ,YACb7c,KAAK2Y,UACL3Y,KAAKqe,kBAAkBre,KAAMA,KAAKyc,MAClCzc,KAAK4c,WAAY,OAAY5c,KAAK0c,OAAQ1c,KAAKkd,iBAAiBpO,KAAK9O,MAAOA,KAAKgd,kBAAkBlO,KAAK9O,OAEhH,EAMAie,EAAUjZ,UAAUiY,eAAiB,WAC7Bjd,KAAK4c,YACL5c,KAAK4c,YACL5c,KAAK4c,UAAY,KAEzB,EACOqB,CACX,CApH8B,CAoH5B,mDCzBF,QAtG6B,WAOzB,SAASY,EAAQC,EAAOC,EAAaC,GAKjChf,KAAKif,OAASH,EAKd9e,KAAKkf,aAAeH,EAKpB/e,KAAKmf,OAASH,EAKdhf,KAAKof,QAAU,GAKfpf,KAAKqf,OAAS,EAKdrf,KAAKsf,iBAAmB,CAC5B,CA8DA,OA1DAT,EAAQ7Z,UAAUua,MAAQ,WACtBvf,KAAKof,QAAQhc,OAAS,EACtBpD,KAAKqf,OAAS,EACdrf,KAAKsf,iBAAmB,CAC5B,EAKAT,EAAQ7Z,UAAUwa,OAAS,SAAUxd,EAAGD,GACpC/B,KAAKof,QAAQ9M,KAAKtQ,EAAGD,EAAGpC,KAAKC,MACjC,EAIAif,EAAQ7Z,UAAUya,IAAM,WACpB,GAAIzf,KAAKof,QAAQhc,OAAS,EAGtB,OAAO,EAEX,IAAI4b,EAAQrf,KAAKC,MAAQI,KAAKmf,OAC1BO,EAAY1f,KAAKof,QAAQhc,OAAS,EACtC,GAAIpD,KAAKof,QAAQM,EAAY,GAAKV,EAG9B,OAAO,EAIX,IADA,IAAIW,EAAaD,EAAY,EACtBC,EAAa,GAAK3f,KAAKof,QAAQO,EAAa,GAAKX,GACpDW,GAAc,EAElB,IAAI5T,EAAW/L,KAAKof,QAAQM,EAAY,GAAK1f,KAAKof,QAAQO,EAAa,GAIvE,GAAI5T,EAAW,IAAO,GAClB,OAAO,EAEX,IAAI6T,EAAK5f,KAAKof,QAAQM,GAAa1f,KAAKof,QAAQO,GAC5CE,EAAK7f,KAAKof,QAAQM,EAAY,GAAK1f,KAAKof,QAAQO,EAAa,GAGjE,OAFA3f,KAAKqf,OAASpd,KAAK2H,MAAMiW,EAAID,GAC7B5f,KAAKsf,iBAAmBrd,KAAKuF,KAAKoY,EAAKA,EAAKC,EAAKA,GAAM9T,EAChD/L,KAAKsf,iBAAmBtf,KAAKkf,YACxC,EAIAL,EAAQ7Z,UAAU8a,YAAc,WAC5B,OAAQ9f,KAAKkf,aAAelf,KAAKsf,kBAAoBtf,KAAKif,MAC9D,EAIAJ,EAAQ7Z,UAAU+a,SAAW,WACzB,OAAO/f,KAAKqf,MAChB,EACOR,CACX,CArG4B,kECRpBzK,0FADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GA2LJ,SAASwL,EAAgB9R,EAAK+R,GAC1B,YACJ,CACA,QA7KiC,SAAUxL,GAKvC,SAASyL,EAAYhS,GACjB,IAAItN,EAAQ6T,EAAOzH,KAAKhN,OAASA,KAUjC,OALAY,EAAMuf,KAAOjS,EAIbtN,EAAMwf,eAAiB,KAChBxf,CACX,CAmJA,OAnKAyT,EAAU6L,EAAazL,GAsBvByL,EAAYlb,UAAUqb,oBAAsB,SAAUjP,EAAM6O,IACxD,SACJ,EAKAC,EAAYlb,UAAUsb,oBAAsB,SAAUL,GAClD,IAAIM,EAAYN,EAAWM,UACvBC,EAA6BP,EAAWO,2BACxCC,EAA6BR,EAAWQ,4BAC5C,QAAiBD,EAA4BP,EAAWS,KAAK,GAAK,EAAGT,EAAWS,KAAK,GAAK,EAAG,EAAIH,EAAUlE,YAAa,EAAIkE,EAAUlE,YAAakE,EAAUI,UAAWJ,EAAUvU,OAAO,IAAKuU,EAAUvU,OAAO,KAC/M,QAAYyU,EAA4BD,EAC5C,EAiBAN,EAAYlb,UAAU4b,2BAA6B,SAAU3U,EAAYgU,EAAYY,EAAcC,EAAcpV,EAAUqV,EAASC,EAAaC,GAC7I,IAAIzhB,EACA+gB,EAAYN,EAAWM,UAO3B,SAASK,EAA2BM,EAASC,EAASC,GAClD,OAAO1V,EAASsB,KAAK+T,EAASI,EAASD,EAAUE,EAAQ,KAC7D,CACA,IAAI7H,EAAagH,EAAUhH,WACvB8H,GAAuB,QAAMpV,EAAWa,QAASyM,GACjD+H,EAAU,CAAC,CAAC,EAAG,IACnB,GAAI/H,EAAWgI,YAAcT,EAAc,CACvC,IAAIU,EAAmBjI,EAAWiE,YAC9BiE,GAAa,IAAAC,UAASF,GAC1BF,EAAQhP,KAAK,EAAEmP,EAAY,GAAI,CAACA,EAAY,GAChD,CACA,IAEIE,EAFAC,EAAc3B,EAAW4B,iBACzBC,EAAYF,EAAYxe,OAExBpD,KAAKogB,iBACLuB,EAAsB3hB,KAAKogB,eAAe2B,MAAM7T,KAAI,SAAU8T,GAC1D,OAAOA,EAAMthB,KACjB,KAGJ,IADA,IAAIuhB,EAAW,GACNzX,EAAI,EAAGA,EAAI8W,EAAQle,OAAQoH,IAChC,IAAK,IAAI+L,EAAIuL,EAAY,EAAGvL,GAAK,IAAKA,EAAG,CACrC,IAAI2L,EAAaN,EAAYrL,GACzB6K,EAA4Dc,EAAgB,MAChF,GAAId,EAAMe,gBACN,OAAOD,EAAY3B,IACnBS,EAAYhU,KAAKiU,EAAUG,GAAQ,CACnC,IAAIgB,EAAgBhB,EAAMiB,cACtBC,EAASlB,EAAMmB,YACnB,GAAIH,GAAiBE,EAAQ,CACzB,IAAIE,EAAcF,EAAOG,WACnBpB,EACApV,EACFyW,EAAa9B,EAA2B9R,KAAK,KAAMoT,EAAWhB,SAClEe,EAAS,GAAKO,EAAY,GAAKlB,EAAQ9W,GAAG,GAC1CyX,EAAS,GAAKO,EAAY,GAAKlB,EAAQ9W,GAAG,GAC1ChL,EAAS4iB,EAAcxB,2BAA2BqB,EAAUhC,EAAYY,EAAc6B,EAAYf,EACtG,CACA,GAAIniB,EACA,OAAOA,CAEf,CACJ,CAGR,EAeA0gB,EAAYlb,UAAU2d,oBAAsB,SAAUtR,EAAO4O,EAAYY,EAAcnV,EAAUsV,GAC7F,OAAO,SACX,EAcAd,EAAYlb,UAAU4d,uBAAyB,SAAU3W,EAAYgU,EAAYY,EAAcC,EAAcE,EAAaD,GAEtH,YAAsBvK,IADLxW,KAAK4gB,2BAA2B3U,EAAYgU,EAAYY,EAAcC,EAAc,KAAM9gB,KAAMghB,EAAaD,EAElI,EAIAb,EAAYlb,UAAU6d,OAAS,WAC3B,OAAO7iB,KAAKmgB,IAChB,EAKAD,EAAYlb,UAAU8d,YAAc,SAAU7C,GAC1CjgB,KAAKogB,gBAAiB,EAAA2C,EAAA,IAAqB9C,EAAYjgB,KAAKogB,eAChE,EAKAF,EAAYlb,UAAUge,wBAA0B,SAAU/C,GAClD,sBACAA,EAAWgD,oBAAoB3Q,KAAK0N,EAE5C,EACOE,CACX,CArKgC,CAqK9BrJ,EAAA,uFCjME,EAAwC,WACxC,IAAIzC,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GAuK5C,QAxI0C,SAAUC,GAKhD,SAASyO,EAAqBhV,GAC1B,IAAItN,EAAQ6T,EAAOzH,KAAKhN,KAAMkO,IAAQlO,KAItCY,EAAMuiB,wBAAyB,QAAO,KAAcC,EAAA,iBAAgClV,EAAImV,WAAWvU,KAAKZ,IAKxGtN,EAAM0iB,SAAWzW,SAASW,cAAc,OACxC,IAAIyC,EAAQrP,EAAM0iB,SAASrT,MAC3BA,EAAMsK,SAAW,WACjBtK,EAAM5E,MAAQ,OACd4E,EAAMgB,OAAS,OACfhB,EAAMsT,OAAS,IACf3iB,EAAM0iB,SAAS5W,UAAY,KAAqB,aAChD,IAAI/B,EAAYuD,EAAIe,cAYpB,OAXAtE,EAAU6Y,aAAa5iB,EAAM0iB,SAAU3Y,EAAU+C,YAAc,MAK/D9M,EAAM6iB,UAAY,GAKlB7iB,EAAM8iB,kBAAmB,EAClB9iB,CACX,CAmGA,OArIA,EAAUsiB,EAAsBzO,GAuChCyO,EAAqBle,UAAUqb,oBAAsB,SAAUjP,EAAM6O,GACjE,IAAI/R,EAAMlO,KAAK6iB,SACf,GAAI3U,EAAIyV,YAAYvS,GAAO,CACvB,IAAIwS,EAAU,IAAI,IAAYxS,OAAMoF,EAAWyJ,GAC/C/R,EAAIiD,cAAcyS,EACtB,CACJ,EACAV,EAAqBle,UAAUgS,gBAAkB,YAC7C,QAAchX,KAAKmjB,wBACnBnjB,KAAKsjB,SAASlQ,WAAWF,YAAYlT,KAAKsjB,UAC1C7O,EAAOzP,UAAUgS,gBAAgBhK,KAAKhN,KAC1C,EAKAkjB,EAAqBle,UAAU8d,YAAc,SAAU7C,GACnD,GAAKA,EAAL,CAOAjgB,KAAKsgB,oBAAoBL,GACzBjgB,KAAKqgB,oBAAoB,eAA4BJ,GACrD,IAAI4B,EAAmB5B,EAAW4B,iBAAiBgC,MAAK,SAAUrd,EAAGC,GACjE,OAAOD,EAAE+c,OAAS9c,EAAE8c,MACxB,IACIhD,EAAYN,EAAWM,UAC3BvgB,KAAKyjB,UAAUrgB,OAAS,EAExB,IADA,IAAI0gB,EAAkB,KACbtZ,EAAI,EAAGiL,EAAKoM,EAAiBze,OAAQoH,EAAIiL,IAAMjL,EAAG,CACvD,IAAI0X,EAAaL,EAAiBrX,GAElC,GADAyV,EAAW8D,WAAavZ,GACnB,OAAO0X,EAAY3B,KACnB2B,EAAW8B,aAAe,WACvB9B,EAAW8B,aAAe,eAFlC,CAKA,IACI3Q,EADQ6O,EAAWd,MACH2B,OAAO9C,EAAY6D,GAClCzQ,GAGDA,IAAYyQ,IACZ9jB,KAAKyjB,UAAUnR,KAAKe,GACpByQ,EAAkBzQ,EARtB,CAUJ,CACAoB,EAAOzP,UAAU8d,YAAY9V,KAAKhN,KAAMigB,IACxC,QAAgBjgB,KAAKsjB,SAAUtjB,KAAKyjB,WACpCzjB,KAAKqgB,oBAAoB,gBAA6BJ,GACjDjgB,KAAK0jB,mBACN1jB,KAAKsjB,SAASrT,MAAMgU,QAAU,GAC9BjkB,KAAK0jB,kBAAmB,GAE5B1jB,KAAKgjB,wBAAwB/C,EAlC7B,MALQjgB,KAAK0jB,mBACL1jB,KAAKsjB,SAASrT,MAAMgU,QAAU,OAC9BjkB,KAAK0jB,kBAAmB,EAsCpC,EAcAR,EAAqBle,UAAU2d,oBAAsB,SAAUtR,EAAO4O,EAAYY,EAAcnV,EAAUsV,GAItG,IAHA,IAAIT,EAAYN,EAAWM,UACvBqB,EAAc3B,EAAW4B,iBAEpBrX,EADOoX,EAAYxe,OACH,EAAGoH,GAAK,IAAKA,EAAG,CACrC,IAAI0X,EAAaN,EAAYpX,GACzB4W,EAAQc,EAAWd,MACvB,GAAIA,EAAMe,gBACN,OAAOD,EAAY3B,IACnBS,EAAYI,GAAQ,CACpB,IACIjP,EADgBiP,EAAMiB,cACD6B,eAAe7S,EAAO4O,EAAYY,GAC3D,GAAI1O,EAAM,CACN,IAAI3S,EAASkM,EAAS0V,EAAOjP,GAC7B,GAAI3S,EACA,OAAOA,CAEf,CACJ,CACJ,CAEJ,EACO0jB,CACX,CAvIyC,CAuIvCiB,yDCtKE,EAAwC,WACxC,IAAI/P,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GAqT5C,QAhQiC,SAAUC,GAKvC,SAAS2P,EAAY/O,GACjB,IAAIzU,EAAQZ,KACR0O,EAAU2G,GAA4B,CAAC,GAC3CzU,EAAQ6T,EAAOzH,KAAKhN,KAAM,CACtBqT,QAASxG,SAASW,cAAc,OAChCuV,OAAQrU,EAAQqU,OAChB9Q,OAAQvD,EAAQuD,UACdjS,MAKAqkB,WAAaxX,SAASW,cAAc,MAK1C5M,EAAM0jB,gBACoB9N,IAAtB9H,EAAQ6V,WAA0B7V,EAAQ6V,UAK9C3jB,EAAM4jB,0BAA+ChO,IAAxB9H,EAAQ+V,YAKrC7jB,EAAM8jB,kBACsBlO,IAAxB9H,EAAQ+V,aAA4B/V,EAAQ+V,YAC3C7jB,EAAM8jB,eACP9jB,EAAM0jB,YAAa,GAEvB,IAAI5X,OAAkC8J,IAAtB9H,EAAQhC,UAA0BgC,EAAQhC,UAAY,iBAClEiY,OAAgCnO,IAArB9H,EAAQiW,SAAyBjW,EAAQiW,SAAW,eAC/DC,OAA0CpO,IAA1B9H,EAAQkW,cAA8BlW,EAAQkW,cAAgB,IACrD,iBAAlBA,GAKPhkB,EAAMikB,eAAiBhY,SAASW,cAAc,QAC9C5M,EAAMikB,eAAeC,YAAcF,GAGnChkB,EAAMikB,eAAiBD,EAE3B,IAAIG,OAA0BvO,IAAlB9H,EAAQqW,MAAsBrW,EAAQqW,MAAQ,IACrC,iBAAVA,GAKPnkB,EAAMokB,OAASnY,SAASW,cAAc,QACtC5M,EAAMokB,OAAOF,YAAcC,GAG3BnkB,EAAMokB,OAASD,EAEnB,IAAIE,EAAcrkB,EAAM8jB,eAAiB9jB,EAAM0jB,WAAa1jB,EAAMikB,eAAiBjkB,EAAMokB,OACrFE,EAASrY,SAASW,cAAc,UACpC0X,EAAOnS,aAAa,OAAQ,UAC5BmS,EAAOC,MAAQR,EACfO,EAAOvX,YAAYsX,GACnBC,EAAO3T,iBAAiB,UAAiB3Q,EAAMwkB,aAAatW,KAAKlO,IAAQ,GACzE,IAAIykB,EAAa3Y,EACb,IACA,KACA,IACA,MACC9L,EAAM0jB,YAAc1jB,EAAM8jB,aAAe,IAAM,KAAkB,KACjE9jB,EAAM8jB,aAAe,GAAK,qBAC3BrR,EAAUzS,EAAMyS,QAepB,OAdAA,EAAQ3G,UAAY2Y,EACpBhS,EAAQ1F,YAAY/M,EAAMyjB,YAC1BhR,EAAQ1F,YAAYuX,GAMpBtkB,EAAM0kB,sBAAwB,GAK9B1kB,EAAM8iB,kBAAmB,EAClB9iB,CACX,CAiKA,OA7PA,EAAUwjB,EAAa3P,GAmGvB2P,EAAYpf,UAAUugB,2BAA6B,SAAUtF,GAYzD,IAPA,IAAIuF,EAAS,CAAC,EAKVC,EAAsB,GACtB5D,EAAmB5B,EAAW4B,iBACzBrX,EAAI,EAAGiL,EAAKoM,EAAiBze,OAAQoH,EAAIiL,IAAMjL,EAAG,CACvD,IAAI0X,EAAaL,EAAiBrX,GAClC,IAAK,OAAO0X,EAAYjC,EAAWM,WAAnC,CAGA,IAAI+B,EAA6DJ,EAAgB,MAAEK,YACnF,GAAKD,EAAL,CAGA,IAAIoD,EAAoBpD,EAAOqD,kBAC/B,GAAKD,EAAL,CAGA,IAAIE,EAAeF,EAAkBzF,GACrC,GAAK2F,EAOL,GAJK5lB,KAAKwkB,uBACkC,IAAxClC,EAAOuD,8BACP7lB,KAAK8lB,gBAAe,GAEpB3kB,MAAMkP,QAAQuV,GACd,IAAK,IAAIrP,EAAI,EAAGwP,EAAKH,EAAaxiB,OAAQmT,EAAIwP,IAAMxP,EAC1CqP,EAAarP,KAAMiP,IACrBC,EAAoBnT,KAAKsT,EAAarP,IACtCiP,EAAOI,EAAarP,KAAM,QAK5BqP,KAAgBJ,IAClBC,EAAoBnT,KAAKsT,GACzBJ,EAAOI,IAAgB,EApB/B,CAJA,CAJA,CA+BJ,CACA,OAAOH,CACX,EAKArB,EAAYpf,UAAUghB,eAAiB,SAAU/F,GAC7C,GAAKA,EAAL,CAOA,IAAI2F,EAAe5lB,KAAKulB,2BAA2BtF,GAC/CgG,EAAUL,EAAaxiB,OAAS,EAKpC,GAJIpD,KAAK0jB,kBAAoBuC,IACzBjmB,KAAKqT,QAAQpD,MAAMgU,QAAUgC,EAAU,GAAK,OAC5CjmB,KAAK0jB,iBAAmBuC,KAExB,QAAOL,EAAc5lB,KAAKslB,uBAA9B,EAGA,QAAetlB,KAAKqkB,YAEpB,IAAK,IAAI7Z,EAAI,EAAGiL,EAAKmQ,EAAaxiB,OAAQoH,EAAIiL,IAAMjL,EAAG,CACnD,IAAI6I,EAAUxG,SAASW,cAAc,MACrC6F,EAAQ5F,UAAYmY,EAAapb,GACjCxK,KAAKqkB,WAAW1W,YAAY0F,EAChC,CACArT,KAAKslB,sBAAwBM,CAR7B,CATA,MALQ5lB,KAAK0jB,mBACL1jB,KAAKqT,QAAQpD,MAAMgU,QAAU,OAC7BjkB,KAAK0jB,kBAAmB,EAqBpC,EAKAU,EAAYpf,UAAUogB,aAAe,SAAUc,GAC3CA,EAAMlU,iBACNhS,KAAKmmB,eACT,EAIA/B,EAAYpf,UAAUmhB,cAAgB,WAClCnmB,KAAKqT,QAAQ9G,UAAU6Z,OAAO,MAC1BpmB,KAAKskB,YACL,QAAYtkB,KAAK6kB,eAAgB7kB,KAAKglB,SAGtC,QAAYhlB,KAAKglB,OAAQhlB,KAAK6kB,gBAElC7kB,KAAKskB,YAActkB,KAAKskB,UAC5B,EAMAF,EAAYpf,UAAUqhB,eAAiB,WACnC,OAAOrmB,KAAK0kB,YAChB,EAMAN,EAAYpf,UAAU8gB,eAAiB,SAAUrB,GACzCzkB,KAAK0kB,eAAiBD,IAG1BzkB,KAAK0kB,aAAeD,EACpBzkB,KAAKqT,QAAQ9G,UAAU6Z,OAAO,qBACzB3B,GAAezkB,KAAKskB,YACrBtkB,KAAKmmB,gBAEb,EAQA/B,EAAYpf,UAAUshB,aAAe,SAAU/B,GACtCvkB,KAAK0kB,cAAgB1kB,KAAKskB,aAAeC,GAG9CvkB,KAAKmmB,eACT,EAOA/B,EAAYpf,UAAUuhB,aAAe,WACjC,OAAOvmB,KAAKskB,UAChB,EAMAF,EAAYpf,UAAU+d,OAAS,SAAUyD,GACrCxmB,KAAKgmB,eAAeQ,EAASvG,WACjC,EACOmE,CACX,CA/PgC,CA+P9BqC,EAAA,iCCpTE,EAAwC,WACxC,IAAIrS,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GA2CxCkS,EAAwB,SAAUjS,GAKlC,SAASiS,EAAOrR,GACZ,IAAIzU,EAAQZ,KACR0O,EAAU2G,GAA4B,CAAC,EAC3CzU,EAAQ6T,EAAOzH,KAAKhN,KAAM,CACtBqT,QAASxG,SAASW,cAAc,OAChCuV,OAAQrU,EAAQqU,OAChB9Q,OAAQvD,EAAQuD,UACdjS,KACN,IAAI0M,OAAkC8J,IAAtB9H,EAAQhC,UAA0BgC,EAAQhC,UAAY,YAClEqY,OAA0BvO,IAAlB9H,EAAQqW,MAAsBrW,EAAQqW,MAAQ,IAK1DnkB,EAAMokB,OAAS,KACM,iBAAVD,GACPnkB,EAAMokB,OAASnY,SAASW,cAAc,QACtC5M,EAAMokB,OAAOtY,UAAY,aACzB9L,EAAMokB,OAAOF,YAAcC,IAG3BnkB,EAAMokB,OAASD,EACfnkB,EAAMokB,OAAOzY,UAAUqB,IAAI,eAE/B,IAAI+W,EAAWjW,EAAQiW,SAAWjW,EAAQiW,SAAW,iBACjDO,EAASrY,SAASW,cAAc,UACpC0X,EAAOxY,UAAYA,EAAY,SAC/BwY,EAAOnS,aAAa,OAAQ,UAC5BmS,EAAOC,MAAQR,EACfO,EAAOvX,YAAY/M,EAAMokB,QACzBE,EAAO3T,iBAAiB,UAAiB3Q,EAAMwkB,aAAatW,KAAKlO,IAAQ,GACzE,IAAIykB,EAAa3Y,EAAY,IAAM,KAAqB,IAAM,KAC1D2G,EAAUzS,EAAMyS,QAsBpB,OArBAA,EAAQ3G,UAAY2Y,EACpBhS,EAAQ1F,YAAYuX,GACpBtkB,EAAM+lB,gBAAkBjY,EAAQkY,WAAalY,EAAQkY,gBAAapQ,EAKlE5V,EAAMimB,eAAiCrQ,IAArB9H,EAAQ3C,SAAyB2C,EAAQ3C,SAAW,IAKtEnL,EAAMkmB,eAAiCtQ,IAArB9H,EAAQqY,UAAyBrY,EAAQqY,SAK3DnmB,EAAMomB,eAAYxQ,EACd5V,EAAMkmB,WACNlmB,EAAMyS,QAAQ9G,UAAUqB,IAAI,MAEzBhN,CACX,CAiEA,OA5HA,EAAU8lB,EAAQjS,GAgElBiS,EAAO1hB,UAAUogB,aAAe,SAAUc,GACtCA,EAAMlU,sBACuBwE,IAAzBxW,KAAK2mB,gBACL3mB,KAAK2mB,kBAGL3mB,KAAKinB,aAEb,EAIAP,EAAO1hB,UAAUiiB,YAAc,WAC3B,IACIC,EADMlnB,KAAK6iB,SACAlX,UACf,GAAKub,EAAL,CAKA,IAAIvG,EAAWuG,EAAKC,mBACH3Q,IAAbmK,IACI3gB,KAAK6mB,UAAY,GAAKlG,GAAY,EAAI1e,KAAKmlB,KAAQ,EACnDF,EAAKtb,QAAQ,CACT+U,SAAU,EACV5U,SAAU/L,KAAK6mB,UACfQ,OAAQ,OAIZH,EAAKI,YAAY,GAXzB,CAcJ,EAMAZ,EAAO1hB,UAAU+d,OAAS,SAAUyD,GAChC,IAAIvG,EAAauG,EAASvG,WAC1B,GAAKA,EAAL,CAGA,IAAIU,EAAWV,EAAWM,UAAUI,SACpC,GAAIA,GAAY3gB,KAAKgnB,UAAW,CAC5B,IAAIO,EAAY,UAAY5G,EAAW,OACvC,GAAI3gB,KAAK8mB,UAAW,CAChB,IAAIta,EAAWxM,KAAKqT,QAAQ9G,UAAUC,SAAS,MAC1CA,GAAyB,IAAbmU,EAGRnU,GAAyB,IAAbmU,GACjB3gB,KAAKqT,QAAQ9G,UAAUwB,OAAO,MAH9B/N,KAAKqT,QAAQ9G,UAAUqB,IAAI,KAKnC,CACA5N,KAAKglB,OAAO/U,MAAMsX,UAAYA,CAClC,CACAvnB,KAAKgnB,UAAYrG,CAfjB,CAgBJ,EACO+F,CACX,CA9H2B,CA8HzBD,EAAA,SACF,UC1KA,IAAI,EAAwC,WACxC,IAAIrS,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GAmI5C,QAzF0B,SAAUC,GAKhC,SAAS+S,EAAKnS,GACV,IAAIzU,EAAQZ,KACR0O,EAAU2G,GAA4B,CAAC,EAC3CzU,EAAQ6T,EAAOzH,KAAKhN,KAAM,CACtBqT,QAASxG,SAASW,cAAc,OAChCyE,OAAQvD,EAAQuD,UACdjS,KACN,IAAI0M,OAAkC8J,IAAtB9H,EAAQhC,UAA0BgC,EAAQhC,UAAY,UAClE+a,OAA0BjR,IAAlB9H,EAAQ+Y,MAAsB/Y,EAAQ+Y,MAAQ,EACtDC,OAAsClR,IAAxB9H,EAAQgZ,YAA4BhZ,EAAQgZ,YAAc,IACxEC,OAAwCnR,IAAzB9H,EAAQiZ,aAA6BjZ,EAAQiZ,aAAe,IAC3EC,OAA4CpR,IAA3B9H,EAAQkZ,eAA+BlZ,EAAQkZ,eAAiB,UACjFC,OAA8CrR,IAA5B9H,EAAQmZ,gBACxBnZ,EAAQmZ,gBACR,WACFC,EAAYjb,SAASW,cAAc,UACvCsa,EAAUpb,UAAYA,EAAY,MAClCob,EAAU/U,aAAa,OAAQ,UAC/B+U,EAAU3C,MAAQyC,EAClBE,EAAUna,YAAmC,iBAAhB+Z,EACvB7a,SAASkb,eAAeL,GACxBA,GACNI,EAAUvW,iBAAiB,UAAiB3Q,EAAMwkB,aAAatW,KAAKlO,EAAO6mB,IAAQ,GACnF,IAAIO,EAAanb,SAASW,cAAc,UACxCwa,EAAWtb,UAAYA,EAAY,OACnCsb,EAAWjV,aAAa,OAAQ,UAChCiV,EAAW7C,MAAQ0C,EACnBG,EAAWra,YAAoC,iBAAjBga,EACxB9a,SAASkb,eAAeJ,GACxBA,GACNK,EAAWzW,iBAAiB,UAAiB3Q,EAAMwkB,aAAatW,KAAKlO,GAAQ6mB,IAAQ,GACrF,IAAIpC,EAAa3Y,EAAY,IAAM,KAAqB,IAAM,KAC1D2G,EAAUzS,EAAMyS,QASpB,OARAA,EAAQ3G,UAAY2Y,EACpBhS,EAAQ1F,YAAYma,GACpBzU,EAAQ1F,YAAYqa,GAKpBpnB,EAAMimB,eAAiCrQ,IAArB9H,EAAQ3C,SAAyB2C,EAAQ3C,SAAW,IAC/DnL,CACX,CAwCA,OAtFA,EAAU4mB,EAAM/S,GAoDhB+S,EAAKxiB,UAAUogB,aAAe,SAAUqC,EAAOvB,GAC3CA,EAAMlU,iBACNhS,KAAKioB,aAAaR,EACtB,EAKAD,EAAKxiB,UAAUijB,aAAe,SAAUR,GACpC,IACIP,EADMlnB,KAAK6iB,SACAlX,UACf,GAAKub,EAAL,CAKA,IAAIgB,EAAchB,EAAKpb,UACvB,QAAoB0K,IAAhB0R,EAA2B,CAC3B,IAAIC,EAAUjB,EAAKkB,mBAAmBF,EAAcT,GAChDznB,KAAK6mB,UAAY,GACbK,EAAKmB,gBACLnB,EAAKoB,mBAETpB,EAAKtb,QAAQ,CACTC,KAAMsc,EACNpc,SAAU/L,KAAK6mB,UACfQ,OAAQ,QAIZH,EAAKqB,QAAQJ,EAErB,CAjBA,CAkBJ,EACOX,CACX,CAxFyB,CAwFvBf,EAAA,uBClIE,EAAwC,WACxC,IAAIrS,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GAoExC,EAAqB,SAAUC,GAK/B,SAAS0P,EAAIzV,GAYT,OAVAA,GAAU,QAAO,CAAC,EAAGA,IACR8Z,WACT9Z,EAAQ8Z,SC/Bb,SAAkBnT,GACrB,IAAI3G,EAAsC,CAAC,EACvC8Z,EAAW,IAAIrT,EAAA,EAanB,YAZmCqB,IAAjB9H,EAAQ7C,MAAqB6C,EAAQ7C,OAEnD2c,EAASlW,KAAK,IAAI,EAAK5D,EAAQ+Z,oBAEIjS,IAAnB9H,EAAQga,QAAuBha,EAAQga,SAEvDF,EAASlW,KAAK,IAAI,EAAO5D,EAAQia,sBAEYnS,IAAxB9H,EAAQka,aAA4Bla,EAAQka,cAEjEJ,EAASlW,KAAK,IAAI,EAAY5D,EAAQma,qBAEnCL,CACX,CDe+B,IAElB9Z,EAAQoa,eACTpa,EAAQoa,cAAe,cAAoB,CACvCC,aAAa,KAGbtU,EAAOzH,KAAKhN,KAAM0O,IAAY1O,IAE1C,CAIA,OArBA,EAAUmkB,EAAK1P,GAkBf0P,EAAInf,UAAUgkB,eAAiB,WAC3B,OAAO,IAAIC,EAAqBjpB,KACpC,EACOmkB,CACX,CAvBwB,CAuBtB+E,EAAA,GACF,4DE3FQ9U,WADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GA2GJ,QA/FqC,SAAUC,GAS3C,SAAS0U,EAAgB/X,EAAMlD,EAAKkb,EAAeC,EAAcC,GAC7D,IAAI1oB,EAAQ6T,EAAOzH,KAAKhN,KAAMoR,EAAMlD,EAAKob,IAAmBtpB,KA0B5D,OAnBAY,EAAMwoB,cAAgBA,EAKtBxoB,EAAM2oB,OAAS,KAKf3oB,EAAM4oB,YAAc,KAQpB5oB,EAAM6oB,cAA4BjT,IAAjB6S,GAA6BA,EACvCzoB,CACX,CAwDA,OA5FAyT,EAAU8U,EAAiB1U,GAqC3BjU,OAAOC,eAAe0oB,EAAgBnkB,UAAW,QAAS,CAMtDC,IAAK,WAID,OAHKjF,KAAKupB,SACNvpB,KAAKupB,OAASvpB,KAAKkO,IAAI2D,cAAc7R,KAAKopB,gBAEvCppB,KAAKupB,MAChB,EACA9S,IAAK,SAAUpF,GACXrR,KAAKupB,OAASlY,CAClB,EACAnM,YAAY,EACZC,cAAc,IAElB3E,OAAOC,eAAe0oB,EAAgBnkB,UAAW,aAAc,CAO3DC,IAAK,WAID,OAHKjF,KAAKwpB,cACNxpB,KAAKwpB,YAAcxpB,KAAKkO,IAAIwb,uBAAuB1pB,KAAKqR,QAErDrR,KAAKwpB,WAChB,EACA/S,IAAK,SAAUxK,GACXjM,KAAKwpB,YAAcvd,CACvB,EACA/G,YAAY,EACZC,cAAc,IAOlBgkB,EAAgBnkB,UAAUgN,eAAiB,WACvCyC,EAAOzP,UAAUgN,eAAehF,KAAKhN,MACrCA,KAAKopB,cAAcpX,gBACvB,EAMAmX,EAAgBnkB,UAAU+M,gBAAkB,WACxC0C,EAAOzP,UAAU+M,gBAAgB/E,KAAKhN,MACtCA,KAAKopB,cAAcrX,iBACvB,EACOoX,CACX,CA9FoC,CA8FlC,uDCjHM/U,oEADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GA+QJ,QAtQ4C,SAAUC,GAMlD,SAASkV,EAAuBzb,EAAK0b,GACjC,IAAIhpB,EAAQ6T,EAAOzH,KAAKhN,KAAMkO,IAAQlO,KAMtCY,EAAMuf,KAAOjS,EAKbtN,EAAMipB,gBAKNjpB,EAAMkpB,WAAY,EAKlBlpB,EAAMmpB,kBAAoB,GAK1BnpB,EAAMopB,eAAiBJ,EACjBA,EAAgB,KAChB,KAONhpB,EAAMqpB,MAAQ,KACd,IAAI5W,EAAUzS,EAAMuf,KAAKlR,cAgCzB,OA3BArO,EAAMspB,gBAAkB,EAKxBtpB,EAAMupB,gBAAkB,CAAC,EACzBvpB,EAAM0iB,SAAWjQ,EAKjBzS,EAAMwpB,yBAA0B,QAAO/W,EAAS,gBAA8BzS,EAAMypB,mBAAoBzpB,GAKxGA,EAAM0pB,0BAKN1pB,EAAM2pB,qBAAsB,QAAOlX,EAAS,gBAA8BzS,EAAM4pB,YAAa5pB,GAI7FA,EAAM6pB,sBAAwB7pB,EAAM8pB,iBAAiB5b,KAAKlO,GAC1DA,EAAM0iB,SAAS/R,iBAAiB,cAAqB3Q,EAAM6pB,wBAAuB,MAA0B,CAAEE,SAAS,IAChH/pB,CACX,CAwLA,OAnQAyT,EAAUsV,EAAwBlV,GAiFlCkV,EAAuB3kB,UAAU4lB,cAAgB,SAAUC,GACvD,IAAIC,EAAW,IAAI,IAAgB,UAA2B9qB,KAAKmgB,KAAM0K,GACzE7qB,KAAKmR,cAAc2Z,QACUtU,IAAzBxW,KAAK6pB,iBAELzpB,aAAaJ,KAAK6pB,iBAClB7pB,KAAK6pB,qBAAkBrT,EACvBsU,EAAW,IAAI,IAAgB,aAA8B9qB,KAAKmgB,KAAM0K,GACxE7qB,KAAKmR,cAAc2Z,IAInB9qB,KAAK6pB,gBAAkBhqB,WAAW,WAC9BG,KAAK6pB,qBAAkBrT,EACvB,IAAIsU,EAAW,IAAI,IAAgB,gBAAiC9qB,KAAKmgB,KAAM0K,GAC/E7qB,KAAKmR,cAAc2Z,EACvB,EAAEhc,KAAK9O,MAAO,IAEtB,EAQA2pB,EAAuB3kB,UAAU+lB,sBAAwB,SAAUF,GAC/D,IAAI3E,EAAQ2E,EACR3E,EAAM9U,MAAQ,eACd8U,EAAM9U,MAAQ,yBACPpR,KAAKmqB,gBAAgBjE,EAAM8E,WAE7B9E,EAAM9U,MAAQ,kBACnBpR,KAAKmqB,gBAAgBjE,EAAM8E,YAAa,GAE5ChrB,KAAKkqB,gBAAkB1pB,OAAOgP,KAAKxP,KAAKmqB,iBAAiB/mB,MAC7D,EAMAumB,EAAuB3kB,UAAUimB,iBAAmB,SAAUJ,GAC1D7qB,KAAK+qB,sBAAsBF,GAC3B,IAAIC,EAAW,IAAI,IAAgB,cAA+B9qB,KAAKmgB,KAAM0K,GAC7E7qB,KAAKmR,cAAc2Z,GAOdA,EAASI,oBACTlrB,KAAK8pB,YACN9pB,KAAKmrB,qBAAqBN,IAC1B7qB,KAAK4qB,cAAc5qB,KAAKiqB,OAEC,IAAzBjqB,KAAKkqB,kBACLlqB,KAAK+pB,kBAAkBta,QAAQ,MAC/BzP,KAAK+pB,kBAAkB3mB,OAAS,EAChCpD,KAAK8pB,WAAY,EACjB9pB,KAAKiqB,MAAQ,KAErB,EAOAN,EAAuB3kB,UAAUmmB,qBAAuB,SAAUN,GAC9D,OAA+B,IAAxBA,EAAa3F,MACxB,EAMAyE,EAAuB3kB,UAAUqlB,mBAAqB,SAAUQ,GAC5D7qB,KAAK+qB,sBAAsBF,GAC3B,IAAIC,EAAW,IAAI,IAAgB,gBAAiC9qB,KAAKmgB,KAAM0K,GAC/E7qB,KAAKmR,cAAc2Z,GACnB9qB,KAAKiqB,MAAQY,EACyB,IAAlC7qB,KAAK+pB,kBAAkB3mB,SACvBpD,KAAK+pB,kBAAkBzX,MAAK,QAAOzF,SAAU,gBAAiC7M,KAAKorB,mBAAoBprB,OAAO,QAAO6M,SAAU,cAA+B7M,KAAKirB,iBAAkBjrB,OAcrL,QAAOA,KAAKsjB,SAAU,kBAAmCtjB,KAAKirB,iBAAkBjrB,OAC5EA,KAAKsjB,SAAS+H,aACdrrB,KAAKsjB,SAAS+H,gBAAkBxe,UAChC7M,KAAK+pB,kBAAkBzX,MAAK,QAAOtS,KAAKsjB,SAAS+H,cAAe,cAA+BrrB,KAAKirB,iBAAkBjrB,OAGlI,EAMA2pB,EAAuB3kB,UAAUomB,mBAAqB,SAAUP,GAI5D,GAAI7qB,KAAKsrB,UAAUT,GAAe,CAC9B7qB,KAAK8pB,WAAY,EACjB,IAAIgB,EAAW,IAAI,IAAgB,gBAAiC9qB,KAAKmgB,KAAM0K,EAAc7qB,KAAK8pB,WAClG9pB,KAAKmR,cAAc2Z,EACvB,CACJ,EAQAnB,EAAuB3kB,UAAUwlB,YAAc,SAAUK,GACrD7qB,KAAKsqB,0BAA4BO,EACjC,IAAIpB,KAAczpB,KAAKiqB,QAASjqB,KAAKsrB,UAAUT,IAC/C7qB,KAAKmR,cAAc,IAAI,IAAgB0Z,EAAazZ,KAAMpR,KAAKmgB,KAAM0K,EAAcpB,GACvF,EASAE,EAAuB3kB,UAAU0lB,iBAAmB,SAAUxE,GAGrDlmB,KAAKsqB,4BACNtqB,KAAKsqB,0BAA0BiB,kBAC/BrF,EAAMlU,gBAEd,EAOA2X,EAAuB3kB,UAAUsmB,UAAY,SAAUT,GACnD,OAAQ7qB,KAAK8pB,WACT7nB,KAAK2G,IAAIiiB,EAAaW,QAAUxrB,KAAKiqB,MAAMuB,SACvCxrB,KAAKgqB,gBACT/nB,KAAK2G,IAAIiiB,EAAaY,QAAUzrB,KAAKiqB,MAAMwB,SAAWzrB,KAAKgqB,cACnE,EAIAL,EAAuB3kB,UAAUgS,gBAAkB,WAC3ChX,KAAKuqB,uBACL,QAAcvqB,KAAKuqB,qBACnBvqB,KAAKuqB,oBAAsB,MAE/BvqB,KAAKsjB,SAAS5R,oBAAoB,cAAqB1R,KAAKyqB,uBACxDzqB,KAAKoqB,2BACL,QAAcpqB,KAAKoqB,yBACnBpqB,KAAKoqB,wBAA0B,MAEnCpqB,KAAK+pB,kBAAkBta,QAAQ,MAC/BzP,KAAK+pB,kBAAkB3mB,OAAS,EAChCpD,KAAKsjB,SAAW,KAChB7O,EAAOzP,UAAUgS,gBAAgBhK,KAAKhN,KAC1C,EACO2pB,CACX,CArQ2C,CAqQzC,8DCpRF,SAOI+B,YAAa,cAMbC,MAAO,UAMPC,SAAU,aAMVC,YAAa,cAObC,YAAa,cACbC,YAAa,cACbC,UAAW,YACXC,YAAa,cACbC,WAAY,aACZC,aAAc,eACdC,aAAc,eACdC,cAAe,kEC9CXjY,YADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAoCJ,QAzB8B,SAAUC,GAOpC,SAAS6X,EAASlb,EAAMlD,EAAKob,GACzB,IAAI1oB,EAAQ6T,EAAOzH,KAAKhN,KAAMoR,IAASpR,KAavC,OAPAY,EAAMsN,IAAMA,EAMZtN,EAAMqf,gBAAgCzJ,IAAnB8S,EAA+BA,EAAiB,KAC5D1oB,CACX,CACA,OAtBAyT,EAAUiY,EAAU7X,GAsBb6X,CACX,CAxB6B,CAwB3B,mDCxCF,SAMIC,WAAY,aAMZC,UAAW,YAMXC,QAAS,uECvBLrY,oDADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAcAkY,EAA6B,SAAUjY,GAOvC,SAASiY,EAAYtb,EAAMub,EAAKC,GAC5B,IAAIhsB,EAAQ6T,EAAOzH,KAAKhN,KAAMoR,IAASpR,KAcvC,OARAY,EAAM+rB,IAAMA,EAOZ/rB,EAAMgsB,SAAWA,EACVhsB,CACX,CACA,OAvBAyT,EAAUqY,EAAajY,GAuBhBiY,CACX,CAzBgC,CAyB9B,MA6CEG,EAA4B,SAAUpY,GAKtC,SAASoY,EAAWC,GAChB,IAAIlsB,EAAQ6T,EAAOzH,KAAKhN,OAASA,KAcjC,OATA,QAAOY,GAKPA,EAAMmsB,QAAU,UACGvW,IAAfsW,GACAlsB,EAAMmX,cAAc+U,GAEjBlsB,CACX,CAiGA,OArHAyT,EAAUwY,EAAYpY,GA2BtBoY,EAAW7nB,UAAUC,IAAM,SAAU0nB,GACjC,IAAIjsB,EAIJ,OAHIV,KAAK+sB,SAAW/sB,KAAK+sB,QAAQxY,eAAeoY,KAC5CjsB,EAAQV,KAAK+sB,QAAQJ,IAElBjsB,CACX,EAMAmsB,EAAW7nB,UAAUgoB,QAAU,WAC3B,OAAQhtB,KAAK+sB,SAAWvsB,OAAOgP,KAAKxP,KAAK+sB,UAAa,EAC1D,EAMAF,EAAW7nB,UAAUkT,cAAgB,WACjC,OAAQlY,KAAK+sB,UAAW,QAAO,CAAC,EAAG/sB,KAAK+sB,UAAa,CAAC,CAC1D,EAIAF,EAAW7nB,UAAUiT,cAAgB,WACjC,QAASjY,KAAK+sB,OAClB,EAKAF,EAAW7nB,UAAUioB,OAAS,SAAUN,EAAKC,GACzC,IAAIrhB,EACJA,EAAY2hB,EAAmBP,GAC/B3sB,KAAKmR,cAAc,IAAIub,EAAYnhB,EAAWohB,EAAKC,IACnDrhB,EAAY,mBACZvL,KAAKmR,cAAc,IAAIub,EAAYnhB,EAAWohB,EAAKC,GACvD,EAQAC,EAAW7nB,UAAUyR,IAAM,SAAUkW,EAAKjsB,EAAOysB,GAC7C,IAAIC,EAASptB,KAAK+sB,UAAY/sB,KAAK+sB,QAAU,CAAC,GAC9C,GAAII,EACAC,EAAOT,GAAOjsB,MAEb,CACD,IAAIksB,EAAWQ,EAAOT,GACtBS,EAAOT,GAAOjsB,EACVksB,IAAalsB,GACbV,KAAKitB,OAAON,EAAKC,EAEzB,CACJ,EAQAC,EAAW7nB,UAAU+S,cAAgB,SAAUqV,EAAQD,GACnD,IAAK,IAAIR,KAAOS,EACZptB,KAAKyW,IAAIkW,EAAKS,EAAOT,GAAMQ,EAEnC,EAOAN,EAAW7nB,UAAUqoB,MAAQ,SAAUV,EAAKQ,GACxC,GAAIntB,KAAK+sB,SAAWJ,KAAO3sB,KAAK+sB,QAAS,CACrC,IAAIH,EAAW5sB,KAAK+sB,QAAQJ,UACrB3sB,KAAK+sB,QAAQJ,IAChB,QAAQ3sB,KAAK+sB,WACb/sB,KAAK+sB,QAAU,MAEdI,GACDntB,KAAKitB,OAAON,EAAKC,EAEzB,CACJ,EACOC,CACX,CAvH+B,CAuH7B,WAIES,EAAuB,CAAC,EAKrB,SAASJ,EAAmBP,GAC/B,OAAOW,EAAqB/Y,eAAeoY,GACrCW,EAAqBX,GACpBW,EAAqBX,GAAO,UAAYA,CACnD,CACA,wDC9NA,SAMIY,eAAgB,+FCXZnZ,gCADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAyHG,SAASgZ,EAAQb,GACpB,GAAIxrB,MAAMkP,QAAQsc,GACd,IAAK,IAAIniB,EAAI,EAAGiL,EAAKkX,EAAIvpB,OAAQoH,EAAIiL,IAAMjL,GACvC,QAAcmiB,EAAIniB,SAItB,QAA6D,EAErE,CACA,QAhHgC,SAAUiK,GAEtC,SAASgZ,IACL,IAAI7sB,EAAQ6T,EAAOzH,KAAKhN,OAASA,KAMjC,OADAY,EAAM8sB,UAAY,EACX9sB,CACX,CAoFA,OA7FAyT,EAAUoZ,EAAYhZ,GActBgZ,EAAWzoB,UAAU2T,QAAU,aACzB3Y,KAAK0tB,UACP1tB,KAAKmR,cAAc,WACvB,EAOAsc,EAAWzoB,UAAU2oB,YAAc,WAC/B,OAAO3tB,KAAK0tB,SAChB,EAUAD,EAAWzoB,UAAUwM,GAAK,SAAUJ,EAAMwc,GACtC,GAAIzsB,MAAMkP,QAAQe,GAAO,CAGrB,IAFA,IAAIvM,EAAMuM,EAAKhO,OACXoM,EAAO,IAAIrO,MAAM0D,GACZ2F,EAAI,EAAGA,EAAI3F,IAAO2F,EACvBgF,EAAKhF,IAAK,QAAOxK,KAAMoR,EAAK5G,GAAIojB,GAEpC,OAAOpe,CACX,CAEI,OAAO,QAAOxP,KAA4B,EAAQ4tB,EAE1D,EAUAH,EAAWzoB,UAAU6oB,KAAO,SAAUzc,EAAMwc,GACxC,IAAIjB,EACJ,GAAIxrB,MAAMkP,QAAQe,GAAO,CACrB,IAAIvM,EAAMuM,EAAKhO,OACfupB,EAAM,IAAIxrB,MAAM0D,GAChB,IAAK,IAAI2F,EAAI,EAAGA,EAAI3F,IAAO2F,EACvBmiB,EAAIniB,IAAK,QAAWxK,KAAMoR,EAAK5G,GAAIojB,EAE3C,MAEIjB,GAAM,QAAW3sB,KAA4B,EAAQ4tB,GAGzD,OADsB,EAAWE,OAASnB,EACnCA,CACX,EAOAc,EAAWzoB,UAAU2M,GAAK,SAAUP,EAAMwc,GACtC,IAAIjB,EAA4B,EAAWmB,OAC3C,GAAInB,EACAa,EAAQb,QAEP,GAAIxrB,MAAMkP,QAAQe,GACnB,IAAK,IAAI5G,EAAI,EAAGiL,EAAKrE,EAAKhO,OAAQoH,EAAIiL,IAAMjL,EACxCxK,KAAK0R,oBAAoBN,EAAK5G,GAAIojB,QAItC5tB,KAAK0R,oBAAoBN,EAAMwc,EAEvC,EACOH,CACX,CA/F+B,CA+F7B,gECpHF,SACIM,YAAa,cACbC,cAAe,gBACfC,aAAc,eACdC,YAAa,cACbC,cAAe,gBACfC,aAAc,eACdC,SAAU,WACVC,WAAY,aACZC,UAAW,8JCZf,QACgB,aADhB,EAEU,OAFV,EAGY,SAHZ,EAIU,WCTFna,sJADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAsyCJ,QAtqCkC,SAAUC,GAKxC,SAASyU,EAAaxa,GAClB,IAAI9N,EAAQ6T,EAAOzH,KAAKhN,OAASA,KAC7BwuB,EA8lCZ,SAA+B9f,GAI3B,IAAI+f,EAAsB,UACUjY,IAAhC9H,EAAQ+f,sBACRA,EAC2C,iBAAhC/f,EAAQ+f,oBACT5hB,SAASQ,eAAeqB,EAAQ+f,qBAChC/f,EAAQ+f,qBAKtB,IASIjG,EAUAM,EAWA4F,EA9BAtB,EAAS,CAAC,EACVuB,EAAajgB,EAAQkgB,QACoC,mBAA/BlgB,EAAc,OAAW,UACtBA,EAAc,OACzC,IAAI,UAAW,CAAEkgB,OAAmClgB,EAAc,SAuCxE,OAtCA0e,EAAOyB,GAA0BF,EACjCvB,EAAOyB,GAAsBngB,EAAQuD,OACrCmb,EAAOyB,QACcrY,IAAjB9H,EAAQwY,KAAqBxY,EAAQwY,KAAO,IAAI4H,EAAA,QAE3BtY,IAArB9H,EAAQ8Z,WACJrnB,MAAMkP,QAAQ3B,EAAQ8Z,UACtBA,EAAW,IAAIrT,EAAA,EAAWzG,EAAQ8Z,SAAS1b,WAG3C,OAAiE,mBAAhC4B,EAAgB,SAAU,SAAkB,IAC7E8Z,EAAsC9Z,EAAgB,gBAIjC8H,IAAzB9H,EAAQoa,eACJ3nB,MAAMkP,QAAQ3B,EAAQoa,cACtBA,EAAe,IAAI3T,EAAA,EAAWzG,EAAQoa,aAAahc,WAGnD,OACI,mBAD6B4B,EAAoB,aAAU,SAC/C,IAChBoa,EAA0Cpa,EAAoB,oBAI7C8H,IAArB9H,EAAQggB,SACJvtB,MAAMkP,QAAQ3B,EAAQggB,UACtBA,EAAW,IAAIvZ,EAAA,EAAWzG,EAAQggB,SAAS5hB,WAG3C,OAAiE,mBAAhC4B,EAAgB,SAAU,SAAkB,IAC7EggB,EAAWhgB,EAAQggB,UAIvBA,EAAW,IAAIvZ,EAAA,EAEZ,CACHqT,SAAUA,EACVM,aAAcA,EACd2F,oBAAqBA,EACrBC,SAAUA,EACVtB,OAAQA,EAEhB,CA9pC8B2B,CAAsBrgB,GAmP5C,OAjPA9N,EAAMouB,yBAA2BpuB,EAAMquB,mBAAmBngB,KAAKlO,GAK/DA,EAAMsuB,sBAC0B1Y,IAA5B9H,EAAQygB,gBAAgCzgB,EAAQygB,gBAAkB,GAKtEvuB,EAAM2c,iBACqB/G,IAAvB9H,EAAQ4N,WACF5N,EAAQ4N,WACR,KAKV1b,EAAMwuB,yBAKNxuB,EAAMyuB,mBAINzuB,EAAM0uB,gBAAkB,WACpBtvB,KAAKqvB,wBAAqB7Y,EAC1BxW,KAAKuvB,aAAa5vB,KAAKC,MAC3B,EAAEkP,KAAKlO,GAKPA,EAAM4uB,6BAA8B,UAKpC5uB,EAAM6uB,6BAA8B,UAKpC7uB,EAAM8uB,YAAc,EAKpB9uB,EAAM+uB,YAAc,KAMpB/uB,EAAMgvB,gBAAkB,KAKxBhvB,EAAMivB,yBAA2B,KAKjCjvB,EAAMkvB,uBAAyB,KAK/BlvB,EAAMmvB,gCAAkC,KAKxCnvB,EAAMovB,UAAYnjB,SAASW,cAAc,OACzC5M,EAAMovB,UAAUtjB,UACZ,eAAiB,iBAAkBE,OAAS,YAAc,IAC9DhM,EAAMovB,UAAU/f,MAAMsK,SAAW,WACjC3Z,EAAMovB,UAAU/f,MAAMggB,SAAW,SACjCrvB,EAAMovB,UAAU/f,MAAM5E,MAAQ,OAC9BzK,EAAMovB,UAAU/f,MAAMgB,OAAS,OAK/BrQ,EAAMsvB,kBAAoBrjB,SAASW,cAAc,OACjD5M,EAAMsvB,kBAAkBjgB,MAAMsK,SAAW,WACzC3Z,EAAMsvB,kBAAkBjgB,MAAMsT,OAAS,IACvC3iB,EAAMsvB,kBAAkBjgB,MAAM5E,MAAQ,OACtCzK,EAAMsvB,kBAAkBjgB,MAAMgB,OAAS,OACvCrQ,EAAMsvB,kBAAkBjgB,MAAMkgB,cAAgB,OAC9CvvB,EAAMsvB,kBAAkBxjB,UAAY,sBACpC9L,EAAMovB,UAAUriB,YAAY/M,EAAMsvB,mBAKlCtvB,EAAMwvB,2BAA6BvjB,SAASW,cAAc,OAC1D5M,EAAMwvB,2BAA2BngB,MAAMsK,SAAW,WAClD3Z,EAAMwvB,2BAA2BngB,MAAMsT,OAAS,IAChD3iB,EAAMwvB,2BAA2BngB,MAAM5E,MAAQ,OAC/CzK,EAAMwvB,2BAA2BngB,MAAMgB,OAAS,OAChDrQ,EAAMwvB,2BAA2BngB,MAAMkgB,cAAgB,OACvDvvB,EAAMwvB,2BAA2B1jB,UAAY,gCAC7C9L,EAAMovB,UAAUriB,YAAY/M,EAAMwvB,4BAKlCxvB,EAAMyvB,wBAA0B,KAKhCzvB,EAAMopB,eAAiBtb,EAAQkb,cAK/BhpB,EAAM0vB,qBAAuB9B,EAAgBC,oBAK7C7tB,EAAM2vB,gBAAkB,KAKxB3vB,EAAM4nB,SAAWgG,EAAgBhG,UAAY,IAAIrT,EAAA,EAKjDvU,EAAMkoB,aAAe0F,EAAgB1F,cAAgB,IAAI3T,EAAA,EAKzDvU,EAAM4vB,UAAYhC,EAAgBE,SAMlC9tB,EAAM6vB,gBAAkB,CAAC,EAKzB7vB,EAAM8vB,UAAY,KAKlB9vB,EAAM+vB,cAKN/vB,EAAMgwB,qBAAuB,GAK7BhwB,EAAMiwB,WAAa,IAAIC,EAAA,EAAUlwB,EAAMmwB,gBAAgBjiB,KAAKlO,GAAQA,EAAMowB,kBAAkBliB,KAAKlO,IACjGA,EAAM2Q,kBAAiB,QAAmBsd,GAAyBjuB,EAAMqwB,0BACzErwB,EAAM2Q,kBAAiB,QAAmBsd,GAAmBjuB,EAAMswB,oBACnEtwB,EAAM2Q,kBAAiB,QAAmBsd,GAAmBjuB,EAAMuwB,oBACnEvwB,EAAM2Q,kBAAiB,QAAmBsd,GAAqBjuB,EAAMwwB,sBAGrExwB,EAAMmX,cAAcyW,EAAgBpB,QACpCxsB,EAAM4nB,SAAS/Y,QAKf,SAAU4hB,GACNA,EAAQld,OAAOnU,KACnB,EAAE8O,KAAKlO,IACPA,EAAM4nB,SAASjX,iBAAiB+f,EAAA,MAIhC,SAAUpL,GACNA,EAAM7S,QAAQc,OAAOnU,KACzB,EAAE8O,KAAKlO,IACPA,EAAM4nB,SAASjX,iBAAiB+f,EAAA,SAIhC,SAAUpL,GACNA,EAAM7S,QAAQc,OAAO,KACzB,EAAErF,KAAKlO,IACPA,EAAMkoB,aAAarZ,QAKnB,SAAU8hB,GACNA,EAAYpd,OAAOnU,KACvB,EAAE8O,KAAKlO,IACPA,EAAMkoB,aAAavX,iBAAiB+f,EAAA,MAIpC,SAAUpL,GACNA,EAAM7S,QAAQc,OAAOnU,KACzB,EAAE8O,KAAKlO,IACPA,EAAMkoB,aAAavX,iBAAiB+f,EAAA,SAIpC,SAAUpL,GACNA,EAAM7S,QAAQc,OAAO,KACzB,EAAErF,KAAKlO,IACPA,EAAM4vB,UAAU/gB,QAAQ7O,EAAM4wB,oBAAoB1iB,KAAKlO,IACvDA,EAAM4vB,UAAUjf,iBAAiB+f,EAAA,MAIjC,SAAUpL,GACNlmB,KAAKwxB,oBAC0CtL,EAAa,QAChE,EAAEpX,KAAKlO,IACPA,EAAM4vB,UAAUjf,iBAAiB+f,EAAA,SAIjC,SAAUpL,GACN,IACIlT,EADyDkT,EAAa,QACzD1N,aACNhC,IAAPxD,UACOhT,KAAKywB,gBAAgBzd,EAAGjO,YAEnCmhB,EAAM7S,QAAQc,OAAO,KACzB,EAAErF,KAAKlO,IACAA,CACX,CAo2BA,OA9lCAyT,EAAU6U,EAAczU,GA+PxByU,EAAalkB,UAAUgkB,eAAiB,WACpC,MAAM,IAAI7c,MAAM,kDACpB,EAMA+c,EAAalkB,UAAUysB,WAAa,SAAUJ,GAC1CrxB,KAAK0xB,cAAcpf,KAAK+e,EAC5B,EAUAnI,EAAalkB,UAAU2sB,eAAiB,SAAUJ,GAC9CvxB,KAAK4xB,kBAAkBtf,KAAKif,EAChC,EAQArI,EAAalkB,UAAU6sB,SAAW,SAAUzQ,GAC3BphB,KAAK8xB,gBAAgBC,YAC3Bzf,KAAK8O,EAChB,EAMA8H,EAAalkB,UAAUgtB,WAAa,SAAUC,GAC1CjyB,KAAKkyB,cAAc5f,KAAK2f,EAC5B,EAMA/I,EAAalkB,UAAUwsB,oBAAsB,SAAUS,GACnD,IAAIjf,EAAKif,EAAQzZ,aACNhC,IAAPxD,IACAhT,KAAKywB,gBAAgBzd,EAAGjO,YAAcktB,GAE1CA,EAAQ9d,OAAOnU,KACnB,EAKAkpB,EAAalkB,UAAUgS,gBAAkB,WACrChX,KAAKmyB,UAAU,MACf1d,EAAOzP,UAAUgS,gBAAgBhK,KAAKhN,KAC1C,EAoBAkpB,EAAalkB,UAAUotB,sBAAwB,SAAU/gB,EAAO3F,EAAU2J,GACtE,GAAKrV,KAAK2vB,YAAV,CAGA,IAAI1jB,EAAajM,KAAKqyB,+BAA+BhhB,GAEjDwP,OAA4CrK,KADhDnB,OAA8BmB,IAAhBnB,EAA4BA,EAAc,CAAC,GAC1BwL,aACzBxL,EAAYwL,aAAe7gB,KAAK2vB,YAAYrT,WAC5C,EACF0E,OAA0CxK,IAA5BnB,EAAY2L,YAA4B3L,EAAY2L,YAAc,KAChFF,GAA4C,IAA7BzL,EAAYyL,aAC/B,OAAO9gB,KAAK0wB,UAAU9P,2BAA2B3U,EAAYjM,KAAK2vB,YAAa9O,EAAcC,EAAcpV,EAAU,KAAMsV,EAAa,KARxI,CASJ,EASAkI,EAAalkB,UAAUstB,mBAAqB,SAAUjhB,EAAOgE,GACzD,IAAIkd,EAAW,GAIf,OAHAvyB,KAAKoyB,sBAAsB/gB,GAAO,SAAU8P,GACxCoR,EAASjgB,KAAK6O,EAClB,GAAG9L,GACIkd,CACX,EAsBArJ,EAAalkB,UAAU2d,oBAAsB,SAAUtR,EAAO3F,EAAU2J,GACpE,GAAKrV,KAAK2vB,YAAV,CAGA,IAAIjhB,EAAU2G,GAAe,CAAC,EAC1BwL,OAAwCrK,IAAzB9H,EAAQmS,aACrBnS,EAAQmS,aAAe7gB,KAAK2vB,YAAYrT,WACxC,EACF0E,EAActS,EAAQsS,aAAe,KACzC,OAAOhhB,KAAK0wB,UAAU/N,oBAAoBtR,EAAOrR,KAAK2vB,YAAa9O,EAAcnV,EAAUsV,EAN3F,CAOJ,EASAkI,EAAalkB,UAAUwtB,kBAAoB,SAAUnhB,EAAOgE,GACxD,IAAKrV,KAAK2vB,YACN,OAAO,EAEX,IAAI1jB,EAAajM,KAAKqyB,+BAA+BhhB,GAEjD2P,OAA0CxK,KAD9CnB,OAA8BmB,IAAhBnB,EAA4BA,EAAc,CAAC,GAC3B2L,YAA4B3L,EAAY2L,YAAc,KAChFH,OAA4CrK,IAA7BnB,EAAYwL,aACzBxL,EAAYwL,aAAe7gB,KAAK2vB,YAAYrT,WAC5C,EACFwE,GAA4C,IAA7BzL,EAAYyL,aAC/B,OAAO9gB,KAAK0wB,UAAU9N,uBAAuB3W,EAAYjM,KAAK2vB,YAAa9O,EAAcC,EAAcE,EAAa,KACxH,EAOAkI,EAAalkB,UAAU4M,mBAAqB,SAAUsU,GAClD,OAAOlmB,KAAK0pB,uBAAuB1pB,KAAK6R,cAAcqU,GAC1D,EAMAgD,EAAalkB,UAAUytB,2BAA6B,SAAUvM,GAC1D,OAAOlmB,KAAKqyB,+BAA+BryB,KAAK6R,cAAcqU,GAClE,EAOAgD,EAAalkB,UAAU6M,cAAgB,SAAUqU,GAC7C,IAAIwM,EAAmB1yB,KAAKgwB,UAAUpf,wBAClC+hB,EAEJ,mBAAoBzM,EACY,EAAQ0M,eAAe,GACvB,EAChC,MAAO,CACHD,EAAcnH,QAAUkH,EAAiBjkB,KACzCkkB,EAAclH,QAAUiH,EAAiBtiB,IAEjD,EAUA8Y,EAAalkB,UAAU6tB,UAAY,WAC/B,OAAoD7yB,KAAKiF,IAAI4pB,EACjE,EAQA3F,EAAalkB,UAAU8tB,iBAAmB,WACtC,IAAI7gB,EAASjS,KAAK6yB,YAClB,YAAerc,IAAXvE,EACyB,iBAAXA,EACRpF,SAASQ,eAAe4E,GACxBA,EAGC,IAEf,EAQAiX,EAAalkB,UAAU0kB,uBAAyB,SAAUrY,GACtD,OAAO,IAAA0hB,kBAAiB/yB,KAAKqyB,+BAA+BhhB,GAAQrR,KAAK2L,UAAUkO,gBACvF,EAOAqP,EAAalkB,UAAUqtB,+BAAiC,SAAUhhB,GAC9D,IAAI4O,EAAajgB,KAAK2vB,YACtB,OAAK1P,GAIM,QAAeA,EAAWQ,2BAA4BpP,EAAMvE,SAH5D,IAKf,EAOAoc,EAAalkB,UAAU0sB,YAAc,WACjC,OAAO1xB,KAAKwoB,QAChB,EAOAU,EAAalkB,UAAUktB,YAAc,WACjC,OAAOlyB,KAAKwwB,SAChB,EASAtH,EAAalkB,UAAUguB,eAAiB,SAAUhgB,GAC9C,IAAIif,EAAUjyB,KAAKywB,gBAAgBzd,EAAGjO,YACtC,YAAmByR,IAAZyb,EAAwBA,EAAU,IAC7C,EASA/I,EAAalkB,UAAU4sB,gBAAkB,WACrC,OAAO5xB,KAAK8oB,YAChB,EAOAI,EAAalkB,UAAU8sB,cAAgB,WACnC,OAAkC9xB,KAAKiF,IAAI4pB,EAC/C,EAMA3F,EAAalkB,UAAU+sB,UAAY,WAE/B,OADa/xB,KAAK8xB,gBAAgBC,WAEtC,EAIA7I,EAAalkB,UAAUiuB,WAAa,WAEhC,IADA,IAAIpR,EAAmB7hB,KAAK8xB,gBAAgBoB,sBACnC1oB,EAAI,EAAGiL,EAAKoM,EAAiBze,OAAQoH,EAAIiL,IAAMjL,EAAG,CACvD,IACI8X,EADQT,EAAiBrX,GAAG4W,MACuCmB,YACvE,GAAID,GAAUA,EAAO6Q,QACjB,OAAO,CAEf,CACA,OAAO,CACX,EAQAjK,EAAalkB,UAAUouB,uBAAyB,SAAUnnB,GACtD,IAAIonB,GAAiB,IAAAC,oBAAmBrnB,EAAYjM,KAAK2L,UAAUkO,iBACnE,OAAO7Z,KAAKuzB,+BAA+BF,EAC/C,EAOAnK,EAAalkB,UAAUuuB,+BAAiC,SAAUtnB,GAC9D,IAAIgU,EAAajgB,KAAK2vB,YACtB,OAAK1P,GAIM,QAAeA,EAAWO,2BAA4BvU,EAAWa,MAAM,EAAG,IAH1E,IAKf,EAKAoc,EAAalkB,UAAUqd,YAAc,WACjC,OAAOriB,KAAK0wB,SAChB,EAOAxH,EAAalkB,UAAU6K,QAAU,WAC7B,OAA0D7P,KAAKiF,IAAI4pB,EACvE,EAQA3F,EAAalkB,UAAU2G,QAAU,WAC7B,OAA4B3L,KAAKiF,IAAI4pB,EACzC,EAMA3F,EAAalkB,UAAUiK,YAAc,WACjC,OAAOjP,KAAKgwB,SAChB,EAQA9G,EAAalkB,UAAUwuB,oBAAsB,WACzC,OAAOxzB,KAAKkwB,iBAChB,EAQAhH,EAAalkB,UAAUyuB,6BAA+B,WAClD,OAAOzzB,KAAKowB,0BAChB,EAQAlH,EAAalkB,UAAU+rB,gBAAkB,SAAU2C,EAAMC,EAAeC,EAAYC,GAChF,OAAO,OAAgB7zB,KAAK2vB,YAAa+D,EAAMC,EAAeC,EAAYC,EAC9E,EAKA3K,EAAalkB,UAAUiqB,mBAAqB,SAAU6E,EAAcC,GAChE,IAAI3iB,EAAO2iB,GAAYD,EAAa1iB,KAChC4iB,EAAkB,IAAI7K,EAAA,EAAgB/X,EAAMpR,KAAM8zB,GACtD9zB,KAAKi0B,sBAAsBD,EAC/B,EAIA9K,EAAalkB,UAAUivB,sBAAwB,SAAUD,GACrD,GAAKh0B,KAAK2vB,YAAV,CAKA,IAAIvG,EAA6C4K,EAA6B,cAC1EzoB,EAAY6d,EAAchY,KAC9B,GAAI7F,IAAc,iBACdA,IAAc2oB,EAAA,SACd3oB,IAAc2oB,EAAA,UAAmB,CACjC,IAAIC,EAAWn0B,KAAKgwB,UAAU3E,YACxBrrB,KAAKgwB,UAAU3E,cACfxe,SACFoF,EAASkiB,IAAatnB,SACCuc,EAAoB,OACf,EAAWgL,iBAAiBhL,EAAcoC,QAASpC,EAAcqC,SACjG,GAGAzrB,KAAKowB,2BAA2B5jB,SAASyF,MAKnCkiB,IAAatnB,SAAWA,SAAS2D,gBAAkB2jB,GAAU3nB,SAASyF,GACxE,MAER,CACA+hB,EAAgB/T,WAAajgB,KAAK2vB,YAClC,IAAI0E,EAAoBr0B,KAAK4xB,kBAAkB7b,WAC/C,IAA4C,IAAxC/V,KAAKmR,cAAc6iB,GACnB,IAAK,IAAIxpB,EAAI6pB,EAAkBjxB,OAAS,EAAGoH,GAAK,EAAGA,IAAK,CACpD,IAAI+mB,EAAc8C,EAAkB7pB,GACpC,GAAK+mB,EAAY+C,cAGN/C,EAAY1iB,YAAYmlB,GAE/B,KAER,CApCJ,CAsCJ,EAIA9K,EAAalkB,UAAUuvB,iBAAmB,WACtC,IAAItU,EAAajgB,KAAK2vB,YAUlB6E,EAAYx0B,KAAK6wB,WACrB,IAAK2D,EAAUC,UAAW,CACtB,IAAIC,EAAkB10B,KAAKkvB,iBACvByF,EAAcD,EAClB,GAAIzU,EAAY,CACZ,IAAI2U,EAAQ3U,EAAW4U,UACvB,GAAID,EAAME,EAAA,cAAuBF,EAAME,EAAA,eAAuB,CAC1D,IAAIC,GAAoB,MAAgBp1B,KAAKC,MAAQqgB,EAAW+U,KAAO,EACvEN,EAAkBK,EAAmB,EAAI,EACzCJ,EAAcI,EAAmB,EAAI,CACzC,CACJ,CACIP,EAAUS,kBAAoBP,IAC9BF,EAAUU,eACVV,EAAUW,cAAcT,EAAiBC,GAEjD,EACI1U,IACAjgB,KAAK2jB,YAAY,qBAChB1D,EAAWrU,SACX5L,KAAK6wB,WAAWoE,mBAChBj1B,KAAKizB,cACNjzB,KAAK0wB,UAAUrQ,oBAAoB,mBAAgCJ,GAGvE,IADA,IAAIgD,EAAsBjjB,KAAK4wB,qBACtBpmB,EAAI,EAAGiL,EAAKwN,EAAoB7f,OAAQoH,EAAIiL,IAAMjL,EACvDyY,EAAoBzY,GAAGxK,KAAMigB,GAEjCgD,EAAoB7f,OAAS,CACjC,EAIA8lB,EAAalkB,UAAUmsB,mBAAqB,WACpCnxB,KAAK2L,YAAc3L,KAAK2L,UAAU0c,gBAClCroB,KAAK2L,UAAUypB,mBAAmB,GAEtCp1B,KAAK+iB,QACT,EAIAmG,EAAalkB,UAAUosB,qBAAuB,WAK1C,IAAIiE,EAIJ,GAHIr1B,KAAK6yB,cACLwC,EAAgBr1B,KAAK8yB,oBAErB9yB,KAAKqwB,wBAAyB,CAC9B,IAAK,IAAI7lB,EAAI,EAAGiL,EAAKzV,KAAKuwB,gBAAgBntB,OAAQoH,EAAIiL,IAAMjL,GACxD,QAAcxK,KAAKuwB,gBAAgB/lB,IAEvCxK,KAAKuwB,gBAAkB,KACvBvwB,KAAKgwB,UAAUte,oBAAoBwiB,EAAA,cAAuBl0B,KAAKgvB,0BAC/DhvB,KAAKgwB,UAAUte,oBAAoBwiB,EAAA,QAAiBl0B,KAAKgvB,+BAC9BxY,IAAvBxW,KAAK2wB,gBACLjf,oBAAoBwiB,EAAA,SAAkBl0B,KAAK2wB,eAAe,GAC1D3wB,KAAK2wB,mBAAgBna,GAEzBxW,KAAKqwB,wBAAwBtZ,UAC7B/W,KAAKqwB,wBAA0B,MAC/B,QAAWrwB,KAAKgwB,UACpB,CACA,GAAKqF,EAYA,CAMD,IAAK,IAAI1I,KALT0I,EAAc1nB,YAAY3N,KAAKgwB,WAC1BhwB,KAAK0wB,YACN1wB,KAAK0wB,UAAY1wB,KAAKgpB,kBAE1BhpB,KAAKqwB,wBAA0B,IAAI1G,EAAA,EAAuB3pB,KAAMA,KAAKgqB,gBACrDsL,EAAA,EACZt1B,KAAKqwB,wBAAwB9e,iBAAiB+jB,EAAA,EAAoB3I,GAAM3sB,KAAKi0B,sBAAsBnlB,KAAK9O,OAE5GA,KAAKgwB,UAAUze,iBAAiB2iB,EAAA,cAAuBl0B,KAAKgvB,0BAA0B,GACtFhvB,KAAKgwB,UAAUze,iBAAiB2iB,EAAA,QAAiBl0B,KAAKgvB,2BAA0B,MAA0B,CAAErE,SAAS,IACrH,IAAI8D,EAAuBzuB,KAAKswB,qBAE1BtwB,KAAKswB,qBADL+E,EAENr1B,KAAKuwB,gBAAkB,EACnB,QAAO9B,EAAqByF,EAAA,UAAmBl0B,KAAKivB,mBAAoBjvB,OACxE,QAAOyuB,EAAqByF,EAAA,WAAoBl0B,KAAKivB,mBAAoBjvB,OAExEA,KAAK2wB,gBACN3wB,KAAK2wB,cAAgB3wB,KAAKu1B,WAAWzmB,KAAK9O,MAC1C4M,OAAO2E,iBAAiB2iB,EAAA,SAAkBl0B,KAAK2wB,eAAe,GAEtE,MAjCQ3wB,KAAK0wB,YACLtwB,aAAaJ,KAAKovB,0BAClBpvB,KAAK4wB,qBAAqBxtB,OAAS,EACnCpD,KAAK0wB,UAAU3Z,UACf/W,KAAK0wB,UAAY,MAEjB1wB,KAAKqvB,qBACLmG,qBAAqBx1B,KAAKqvB,oBAC1BrvB,KAAKqvB,wBAAqB7Y,GA0BlCxW,KAAKu1B,YAGT,EAIArM,EAAalkB,UAAUgsB,kBAAoB,WACvChxB,KAAK+iB,QACT,EAIAmG,EAAalkB,UAAUywB,2BAA6B,WAChDz1B,KAAK+iB,QACT,EAIAmG,EAAalkB,UAAUksB,mBAAqB,WACpClxB,KAAK6vB,4BACL,QAAc7vB,KAAK6vB,0BACnB7vB,KAAK6vB,yBAA2B,MAEhC7vB,KAAK8vB,0BACL,QAAc9vB,KAAK8vB,wBACnB9vB,KAAK8vB,uBAAyB,MAElC,IAAI5I,EAAOlnB,KAAK2L,UACZub,IACAlnB,KAAK01B,sBACL11B,KAAK6vB,0BAA2B,QAAO3I,EAAM9D,EAAA,iBAAgCpjB,KAAKy1B,2BAA4Bz1B,MAC9GA,KAAK8vB,wBAAyB,QAAO5I,EAAMgN,EAAA,SAAkBl0B,KAAKy1B,2BAA4Bz1B,MAC9FknB,EAAKkO,mBAAmB,IAE5Bp1B,KAAK+iB,QACT,EAIAmG,EAAalkB,UAAUisB,yBAA2B,WAC1CjxB,KAAK+vB,kCACL/vB,KAAK+vB,gCAAgCtgB,QAAQ,MAC7CzP,KAAK+vB,gCAAkC,MAE3C,IAAIpB,EAAa3uB,KAAK8xB,gBAClBnD,IACA3uB,KAAK+vB,gCAAkC,EACnC,QAAOpB,EAAYvL,EAAA,iBAAgCpjB,KAAK+iB,OAAQ/iB,OAChE,QAAO2uB,EAAYuF,EAAA,SAAkBl0B,KAAK+iB,OAAQ/iB,QAG1DA,KAAK+iB,QACT,EAIAmG,EAAalkB,UAAU2wB,WAAa,WAChC,QAAS31B,KAAK2vB,WAClB,EAKAzG,EAAalkB,UAAU4wB,WAAa,WAC5B51B,KAAKqvB,oBACLmG,qBAAqBx1B,KAAKqvB,oBAE9BrvB,KAAKsvB,iBACT,EAIApG,EAAalkB,UAAUqe,WAAa,WAEhC,IADA,IAAIzB,EAAc5hB,KAAK8xB,gBAAgBoB,sBAC9B1oB,EAAI,EAAGiL,EAAKmM,EAAYxe,OAAQoH,EAAIiL,IAAMjL,EAAG,CAClD,IAAI4W,EAAQQ,EAAYpX,GAAG4W,MACvBA,EAAMe,eACNf,EAAMiB,cAAcwT,oBAE5B,CACJ,EAKA3M,EAAalkB,UAAU+d,OAAS,WACxB/iB,KAAK0wB,gBAAyCla,IAA5BxW,KAAKqvB,qBACvBrvB,KAAKqvB,mBAAqByG,sBAAsB91B,KAAKsvB,iBAE7D,EAQApG,EAAalkB,UAAU+wB,cAAgB,SAAU1E,GAC7C,OAAOrxB,KAAK0xB,cAAc3jB,OAAOsjB,EACrC,EAQAnI,EAAalkB,UAAUgxB,kBAAoB,SAAUzE,GACjD,OAAOvxB,KAAK4xB,kBAAkB7jB,OAAOwjB,EACzC,EAQArI,EAAalkB,UAAUixB,YAAc,SAAU7U,GAE3C,OADaphB,KAAK8xB,gBAAgBC,YACpBhkB,OAAOqT,EACzB,EAQA8H,EAAalkB,UAAUkxB,cAAgB,SAAUjE,GAC7C,OAAOjyB,KAAKkyB,cAAcnkB,OAAOkkB,EACrC,EAKA/I,EAAalkB,UAAUuqB,aAAe,SAAUyF,GAC5C,IAAItU,EAAO1gB,KAAK6P,UACZqX,EAAOlnB,KAAK2L,UACZwqB,EAAqBn2B,KAAK2vB,YAE1B1P,EAAa,KACjB,QAAazJ,IAATkK,IAAsB,QAAQA,IAASwG,GAAQA,EAAKkP,QAAS,CAC7D,IAAIvB,EAAY3N,EAAKmP,SAASr2B,KAAK2vB,YAAc3vB,KAAK2vB,YAAYkF,eAAYre,GAC1E+J,EAAY2G,EAAKvJ,WACrBsC,EAAa,CACTrU,SAAS,EACT4U,2BAA4BxgB,KAAKwvB,4BACjC8G,eAAgBH,EACVA,EAAmBG,eACnB,GACNla,QAAQ,IAAAma,mBAAkBhW,EAAUvU,OAAQuU,EAAUlE,WAAYkE,EAAUI,SAAUD,GACtFxL,MAAOlV,KAAK0vB,cACZ3L,WAAY,EACZlC,iBAAkB7hB,KAAK8xB,gBAAgBoB,sBACvC5W,WAAYtc,KAAKud,YACjBkD,2BAA4BzgB,KAAKyvB,4BACjCxM,oBAAqB,GACrBvC,KAAMA,EACN8T,UAAWx0B,KAAK6wB,WAChBmE,KAAMA,EACNwB,UAAW,CAAC,EACZjW,UAAWA,EACXsU,UAAWA,EACX4B,YAAa,CAAC,EAEtB,CACAz2B,KAAK2vB,YAAc1P,EACnBjgB,KAAK0wB,UAAU5N,YAAY7C,GACvBA,IACIA,EAAWrU,SACX5L,KAAK+iB,SAET5hB,MAAM6D,UAAUsN,KAAKxS,MAAME,KAAK4wB,qBAAsB3Q,EAAWgD,qBAC7DkT,KACiBn2B,KAAK4vB,mBAChB,IAAA6E,SAAQz0B,KAAK4vB,oBACV,IAAA8G,QAAOzW,EAAW7D,OAAQpc,KAAK4vB,oBAEpC5vB,KAAKmR,cAAc,IAAImb,EAAA,EAASqK,EAAA,YAAwB32B,KAAMm2B,IAC9Dn2B,KAAK4vB,iBAAkB,IAAAgH,qBAAoB52B,KAAK4vB,kBAG7C5vB,KAAK4vB,kBACX3P,EAAW4U,UAAUC,EAAA,eACrB7U,EAAW4U,UAAUC,EAAA,kBACrB,IAAA4B,QAAOzW,EAAW7D,OAAQpc,KAAK4vB,mBAEhC5vB,KAAKmR,cAAc,IAAImb,EAAA,EAASqK,EAAA,UAAsB32B,KAAMigB,KAC5D,IAAAjI,OAAMiI,EAAW7D,OAAQpc,KAAK4vB,mBAGtC5vB,KAAKmR,cAAc,IAAImb,EAAA,EAASqK,EAAA,aAAyB32B,KAAMigB,IAC/DjgB,KAAKovB,yBAA2BvvB,WAAWG,KAAKu0B,iBAAiBzlB,KAAK9O,MAAO,EACjF,EAOAkpB,EAAalkB,UAAU6xB,cAAgB,SAAUlI,GAC7C3uB,KAAKyW,IAAIoY,EAAwBF,EACrC,EAOAzF,EAAalkB,UAAU8xB,QAAU,SAAUpW,GACvC1gB,KAAKyW,IAAIoY,EAAkBnO,EAC/B,EAQAwI,EAAalkB,UAAUmtB,UAAY,SAAUlgB,GACzCjS,KAAKyW,IAAIoY,EAAoB5c,EACjC,EAOAiX,EAAalkB,UAAU+xB,QAAU,SAAU7P,GACvClnB,KAAKyW,IAAIoY,EAAkB3H,EAC/B,EAMAgC,EAAalkB,UAAUuwB,WAAa,WAChC,IAAIF,EAAgBr1B,KAAK8yB,mBACzB,GAAKuC,EAGA,CACD,IAAI2B,EAAgBC,iBAAiB5B,GACrCr1B,KAAK82B,QAAQ,CACTzB,EAActlB,YACVrK,WAAWsxB,EAA+B,iBAC1CtxB,WAAWsxB,EAA2B,aACtCtxB,WAAWsxB,EAA4B,cACvCtxB,WAAWsxB,EAAgC,kBAC/C3B,EAAc/lB,aACV5J,WAAWsxB,EAA8B,gBACzCtxB,WAAWsxB,EAA0B,YACrCtxB,WAAWsxB,EAA6B,eACxCtxB,WAAWsxB,EAAiC,oBAExD,MAhBIh3B,KAAK82B,aAAQtgB,GAiBjBxW,KAAK01B,qBACT,EAKAxM,EAAalkB,UAAU0wB,oBAAsB,WACzC,IAAIxO,EAAOlnB,KAAK2L,UAChB,GAAIub,EAAM,CACN,IAAIxG,OAAOlK,EACPwgB,EAAgBC,iBAAiBj3B,KAAKgwB,WACtCgH,EAAc3rB,OAAS2rB,EAAc/lB,SACrCyP,EAAO,CACHxd,SAAS8zB,EAAc3rB,MAAO,IAC9BnI,SAAS8zB,EAAc/lB,OAAQ,MAGvCiW,EAAKgQ,gBAAgBxW,EACzB,CACJ,EACOwI,CACX,CAhmCiC,CAgmC/B,wDC1uCM9U,oDADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAmSJ,QA3N0B,SAAUC,GAOhC,SAAS0iB,EAAKjZ,EAAWrB,EAAOxH,GAC5B,IAAIzU,EAAQ6T,EAAOzH,KAAKhN,OAASA,KAC7B0O,EAAU2G,GAA4B,CAAC,EA2C3C,OAvCAzU,EAAMsd,UAAYA,EAKlBtd,EAAMic,MAAQA,EAOdjc,EAAMw2B,YAAc,KAOpBx2B,EAAMy2B,MAAO,EAObz2B,EAAM+rB,IAAM,GAKZ/rB,EAAM02B,iBACqB9gB,IAAvB9H,EAAQ6oB,WAA2B,IAAM7oB,EAAQ6oB,WAMrD32B,EAAM42B,kBAAoB,CAAC,EACpB52B,CACX,CAoKA,OAxNAyT,EAAU8iB,EAAM1iB,GAwDhB0iB,EAAKnyB,UAAU2T,QAAU,WACrB3Y,KAAKmR,cAAc,WACvB,EAIAgmB,EAAKnyB,UAAUyyB,QAAU,WAAc,EAIvCN,EAAKnyB,UAAUsZ,OAAS,WACpB,OAAOte,KAAK2sB,IAAM,IAAM3sB,KAAKke,SACjC,EAOAiZ,EAAKnyB,UAAU0yB,eAAiB,WAC5B,IAAK13B,KAAKo3B,YAEN,OAAOp3B,KAEX,IAAI0zB,EAAO1zB,KAAKo3B,YAKhB,EAAG,CACC,GAAI1D,EAAK/V,YAAc,WAInB,OADA3d,KAAKs3B,YAAc,EACZ5D,EAEXA,EAAOA,EAAK0D,WAChB,OAAS1D,GAET,OAAO1zB,IACX,EAKAm3B,EAAKnyB,UAAU2yB,oBAAsB,WACjC,GAAK33B,KAAKo3B,YAAV,CAGA,IAAI1D,EAAO1zB,KAAKo3B,YACZ/gB,EAA2B,KAC/B,EAAG,CACC,GAAIqd,EAAK/V,YAAc,WAAkB,CAIrC+V,EAAK0D,YAAc,KACnB,KACJ,CACS1D,EAAK/V,YAAc,YAGxBtH,EAAOqd,EAEFA,EAAK/V,YAAc,SAGxBtH,EAAK+gB,YAAc1D,EAAK0D,YAGxB/gB,EAAOqd,EAEXA,EAAOrd,EAAK+gB,WAChB,OAAS1D,EAzBT,CA0BJ,EAMAyD,EAAKnyB,UAAU4yB,aAAe,WAC1B,OAAO53B,KAAKke,SAChB,EAIAiZ,EAAKnyB,UAAU2Y,SAAW,WACtB,OAAO3d,KAAK6c,KAChB,EASAsa,EAAKnyB,UAAU6yB,SAAW,SAAUhb,GAChC,GAAI7c,KAAK6c,QAAU,WAAmB7c,KAAK6c,MAAQA,EAC/C,MAAM,IAAI1Q,MAAM,gCAEpBnM,KAAK6c,MAAQA,EACb7c,KAAK2Y,SACT,EAQAwe,EAAKnyB,UAAUoY,KAAO,YAClB,SACJ,EAOA+Z,EAAKnyB,UAAU8yB,SAAW,SAAU9kB,EAAIgiB,GACpC,IAAKh1B,KAAKs3B,YACN,OAAO,EAEX,IAAIS,EAAQ/3B,KAAKw3B,kBAAkBxkB,GACnC,GAAK+kB,GAIA,IAAe,IAAXA,EACL,OAAO,OAJPA,EAAQ/C,EACRh1B,KAAKw3B,kBAAkBxkB,GAAM+kB,EAKjC,IAAItQ,EAAQuN,EAAO+C,EAAQ,IAAO,GAClC,OAAItQ,GAASznB,KAAKs3B,YACP,GAEJ,QAAO7P,EAAQznB,KAAKs3B,YAC/B,EAQAH,EAAKnyB,UAAUgzB,aAAe,SAAUhlB,GACpC,QAAKhT,KAAKs3B,cAG6B,IAAhCt3B,KAAKw3B,kBAAkBxkB,EAClC,EAKAmkB,EAAKnyB,UAAUizB,cAAgB,SAAUjlB,GACjChT,KAAKs3B,cACLt3B,KAAKw3B,kBAAkBxkB,IAAO,EAEtC,EACOmkB,CACX,CA1NyB,CA0NvB,iECvDF,QAlO8B,WAI1B,SAASe,EAASC,GAMdn4B,KAAKo4B,mBACqB5hB,IAAtB2hB,EAAkCA,EAAoB,KAK1Dn4B,KAAKq4B,OAAS,EAKdr4B,KAAKs4B,SAAW,CAAC,EAKjBt4B,KAAKu4B,QAAU,KAKfv4B,KAAKw4B,QAAU,IACnB,CAgMA,OA5LAN,EAASlzB,UAAUyzB,eAAiB,WAChC,OAAOz4B,KAAKo4B,cAAgB,GAAKp4B,KAAK04B,WAAa14B,KAAKo4B,aAC5D,EAIAF,EAASlzB,UAAU7E,MAAQ,WACvBH,KAAKq4B,OAAS,EACdr4B,KAAKs4B,SAAW,CAAC,EACjBt4B,KAAKu4B,QAAU,KACfv4B,KAAKw4B,QAAU,IACnB,EAKAN,EAASlzB,UAAU2zB,YAAc,SAAUhM,GACvC,OAAO3sB,KAAKs4B,SAAS/jB,eAAeoY,EACxC,EAOAuL,EAASlzB,UAAUyK,QAAU,SAAU9C,GAEnC,IADA,IAAIqV,EAAQhiB,KAAKu4B,QACVvW,GACHrV,EAAEqV,EAAM4W,OAAQ5W,EAAM6W,KAAM74B,MAC5BgiB,EAAQA,EAAM8W,KAEtB,EAMAZ,EAASlzB,UAAUC,IAAM,SAAU0nB,EAAKtX,GACpC,IAAI2M,EAAQhiB,KAAKs4B,SAAS3L,GAE1B,OADA,YAAiBnW,IAAVwL,EAAqB,IACxBA,IAAUhiB,KAAKw4B,UAGVxW,IAAUhiB,KAAKu4B,SACpBv4B,KAAKu4B,QAAgCv4B,KAAKu4B,QAAa,MACvDv4B,KAAKu4B,QAAQQ,MAAQ,OAGrB/W,EAAM8W,MAAMC,MAAQ/W,EAAM+W,MAC1B/W,EAAM+W,MAAMD,MAAQ9W,EAAM8W,OAE9B9W,EAAM8W,MAAQ,KACd9W,EAAM+W,MAAQ/4B,KAAKw4B,QACnBx4B,KAAKw4B,QAAQM,MAAQ9W,EACrBhiB,KAAKw4B,QAAUxW,GAbJA,EAAM4W,MAerB,EAMAV,EAASlzB,UAAU+I,OAAS,SAAU4e,GAClC,IAAI3K,EAAQhiB,KAAKs4B,SAAS3L,GAoB1B,OAnBA,YAAiBnW,IAAVwL,EAAqB,IACxBA,IAAUhiB,KAAKw4B,SACfx4B,KAAKw4B,QAAgCxW,EAAW,MAC5ChiB,KAAKw4B,UACLx4B,KAAKw4B,QAAQM,MAAQ,OAGpB9W,IAAUhiB,KAAKu4B,SACpBv4B,KAAKu4B,QAAgCvW,EAAW,MAC5ChiB,KAAKu4B,UACLv4B,KAAKu4B,QAAQQ,MAAQ,QAIzB/W,EAAM8W,MAAMC,MAAQ/W,EAAM+W,MAC1B/W,EAAM+W,MAAMD,MAAQ9W,EAAM8W,cAEvB94B,KAAKs4B,SAAS3L,KACnB3sB,KAAKq4B,OACArW,EAAM4W,MACjB,EAIAV,EAASlzB,UAAU0zB,SAAW,WAC1B,OAAO14B,KAAKq4B,MAChB,EAIAH,EAASlzB,UAAUgoB,QAAU,WACzB,IAEIhL,EAFAxS,EAAO,IAAIrO,MAAMnB,KAAKq4B,QACtB7tB,EAAI,EAER,IAAKwX,EAAQhiB,KAAKw4B,QAASxW,EAAOA,EAAQA,EAAM+W,MAC5CvpB,EAAKhF,KAAOwX,EAAM6W,KAEtB,OAAOrpB,CACX,EAIA0oB,EAASlzB,UAAUg0B,UAAY,WAC3B,IAEIhX,EAFAoL,EAAS,IAAIjsB,MAAMnB,KAAKq4B,QACxB7tB,EAAI,EAER,IAAKwX,EAAQhiB,KAAKw4B,QAASxW,EAAOA,EAAQA,EAAM+W,MAC5C3L,EAAO5iB,KAAOwX,EAAM4W,OAExB,OAAOxL,CACX,EAIA8K,EAASlzB,UAAUi0B,SAAW,WAC1B,OAAOj5B,KAAKu4B,QAAQK,MACxB,EAIAV,EAASlzB,UAAUk0B,YAAc,WAC7B,OAAOl5B,KAAKu4B,QAAQM,IACxB,EAKAX,EAASlzB,UAAUm0B,aAAe,WAC9B,OAAOn5B,KAAKw4B,QAAQK,IACxB,EAIAX,EAASlzB,UAAUiP,IAAM,WACrB,IAAI+N,EAAQhiB,KAAKu4B,QAUjB,cATOv4B,KAAKs4B,SAAStW,EAAM6W,MACvB7W,EAAM8W,QACN9W,EAAM8W,MAAMC,MAAQ,MAExB/4B,KAAKu4B,QAAgCvW,EAAW,MAC3ChiB,KAAKu4B,UACNv4B,KAAKw4B,QAAU,QAEjBx4B,KAAKq4B,OACArW,EAAM4W,MACjB,EAKAV,EAASlzB,UAAUkI,QAAU,SAAUyf,EAAKjsB,GACxCV,KAAKiF,IAAI0nB,GACT3sB,KAAKs4B,SAAS3L,GAAKiM,OAASl4B,CAChC,EAKAw3B,EAASlzB,UAAUyR,IAAM,SAAUkW,EAAKjsB,IACpC,SAASisB,KAAO3sB,KAAKs4B,UAAW,IAChC,IAAItW,EAAQ,CACR6W,KAAMlM,EACNmM,MAAO,KACPC,MAAO/4B,KAAKw4B,QACZI,OAAQl4B,GAEPV,KAAKw4B,QAINx4B,KAAKw4B,QAAQM,MAAQ9W,EAHrBhiB,KAAKu4B,QAAUvW,EAKnBhiB,KAAKw4B,QAAUxW,EACfhiB,KAAKs4B,SAAS3L,GAAO3K,IACnBhiB,KAAKq4B,MACX,EAMAH,EAASlzB,UAAU8xB,QAAU,SAAUpW,GACnC1gB,KAAKo4B,cAAgB1X,CACzB,EACOwX,CACX,CAjO6B,OCnBrB9jB,WADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GA6CJ,QAtC+B,SAAUC,GAErC,SAAS2kB,IACL,OAAkB,OAAX3kB,GAAmBA,EAAO3U,MAAME,KAAMC,YAAcD,IAC/D,CAgCA,OAnCAqU,EAAU+kB,EAAW3kB,GAOrB2kB,EAAUp0B,UAAUq0B,YAAc,SAAU7C,GACxC,KAAOx2B,KAAKy4B,oBACGz4B,KAAKi5B,WACP3a,WAAYkY,IAIjBx2B,KAAKiU,MAAMwjB,SAGvB,EAIA2B,EAAUp0B,UAAUs0B,mBAAqB,WACrC,GAAwB,IAApBt5B,KAAK04B,WAAT,CAGA,IAAI/L,EAAM3sB,KAAKm5B,eAEXI,GADY,QAAQ5M,GACN,GAClB3sB,KAAKyP,QAAQ,SAAUikB,GACfA,EAAKxV,UAAU,KAAOqb,IACtBv5B,KAAK+N,QAAO,QAAO2lB,EAAKxV,YACxBwV,EAAK+D,UAEb,EAAE3oB,KAAK9O,MATP,CAUJ,EACOo5B,CACX,CArC8B,CAqC5B,2FC/CSI,EAAOC,IAsOlB,QAzNmC,WAK/B,SAASC,EAAcC,EAAkBC,GAKrC55B,KAAK65B,kBAAoBF,EAKzB35B,KAAK85B,aAAeF,EAKpB55B,KAAK+5B,UAAY,GAKjB/5B,KAAKg6B,YAAc,GAKnBh6B,KAAKi6B,gBAAkB,CAAC,CAC5B,CAwLA,OApLAP,EAAc10B,UAAU7E,MAAQ,WAC5BH,KAAK+5B,UAAU32B,OAAS,EACxBpD,KAAKg6B,YAAY52B,OAAS,GAC1B,QAAMpD,KAAKi6B,gBACf,EAKAP,EAAc10B,UAAUk1B,QAAU,WAC9B,IAAIC,EAAWn6B,KAAK+5B,UAChBK,EAAap6B,KAAKg6B,YAClB3mB,EAAU8mB,EAAS,GACA,GAAnBA,EAAS/2B,QACT+2B,EAAS/2B,OAAS,EAClBg3B,EAAWh3B,OAAS,IAGpB+2B,EAAS,GAAKA,EAASlmB,MACvBmmB,EAAW,GAAKA,EAAWnmB,MAC3BjU,KAAKq6B,QAAQ,IAEjB,IAAIC,EAAat6B,KAAK85B,aAAazmB,GAEnC,cADOrT,KAAKi6B,gBAAgBK,GACrBjnB,CACX,EAMAqmB,EAAc10B,UAAUu1B,QAAU,SAAUlnB,IACxC,SAASrT,KAAK85B,aAAazmB,KAAYrT,KAAKi6B,iBAAkB,IAC9D,IAAIO,EAAWx6B,KAAK65B,kBAAkBxmB,GACtC,OAAImnB,GAAYhB,IACZx5B,KAAK+5B,UAAUznB,KAAKe,GACpBrT,KAAKg6B,YAAY1nB,KAAKkoB,GACtBx6B,KAAKi6B,gBAAgBj6B,KAAK85B,aAAazmB,KAAY,EACnDrT,KAAKy6B,UAAU,EAAGz6B,KAAK+5B,UAAU32B,OAAS,IACnC,EAGf,EAIAs2B,EAAc10B,UAAU0zB,SAAW,WAC/B,OAAO14B,KAAK+5B,UAAU32B,MAC1B,EAOAs2B,EAAc10B,UAAU01B,mBAAqB,SAAUxlB,GACnD,OAAe,EAARA,EAAY,CACvB,EAOAwkB,EAAc10B,UAAU21B,oBAAsB,SAAUzlB,GACpD,OAAe,EAARA,EAAY,CACvB,EAOAwkB,EAAc10B,UAAU41B,gBAAkB,SAAU1lB,GAChD,OAAQA,EAAQ,GAAM,CAC1B,EAKAwkB,EAAc10B,UAAU61B,SAAW,WAC/B,IAAIrwB,EACJ,IAAKA,GAAKxK,KAAK+5B,UAAU32B,QAAU,GAAK,EAAGoH,GAAK,EAAGA,IAC/CxK,KAAKq6B,QAAQ7vB,EAErB,EAIAkvB,EAAc10B,UAAUyvB,QAAU,WAC9B,OAAiC,IAA1Bz0B,KAAK+5B,UAAU32B,MAC1B,EAKAs2B,EAAc10B,UAAU81B,YAAc,SAAUnO,GAC5C,OAAOA,KAAO3sB,KAAKi6B,eACvB,EAKAP,EAAc10B,UAAU+1B,SAAW,SAAU1nB,GACzC,OAAOrT,KAAK86B,YAAY96B,KAAK85B,aAAazmB,GAC9C,EAKAqmB,EAAc10B,UAAUq1B,QAAU,SAAUnlB,GAOxC,IANA,IAAIilB,EAAWn6B,KAAK+5B,UAChBK,EAAap6B,KAAKg6B,YAClBgB,EAAQb,EAAS/2B,OACjBiQ,EAAU8mB,EAASjlB,GACnBslB,EAAWJ,EAAWllB,GACtB+lB,EAAa/lB,EACVA,EAAQ8lB,GAAS,GAAG,CACvB,IAAIE,EAASl7B,KAAK06B,mBAAmBxlB,GACjCimB,EAASn7B,KAAK26B,oBAAoBzlB,GAClCkmB,EAAoBD,EAASH,GAASZ,EAAWe,GAAUf,EAAWc,GACpEC,EACAD,EACNf,EAASjlB,GAASilB,EAASiB,GAC3BhB,EAAWllB,GAASklB,EAAWgB,GAC/BlmB,EAAQkmB,CACZ,CACAjB,EAASjlB,GAAS7B,EAClB+mB,EAAWllB,GAASslB,EACpBx6B,KAAKy6B,UAAUQ,EAAY/lB,EAC/B,EAMAwkB,EAAc10B,UAAUy1B,UAAY,SAAUQ,EAAY/lB,GAKtD,IAJA,IAAIilB,EAAWn6B,KAAK+5B,UAChBK,EAAap6B,KAAKg6B,YAClB3mB,EAAU8mB,EAASjlB,GACnBslB,EAAWJ,EAAWllB,GACnBA,EAAQ+lB,GAAY,CACvB,IAAII,EAAcr7B,KAAK46B,gBAAgB1lB,GACvC,KAAIklB,EAAWiB,GAAeb,GAM1B,MALAL,EAASjlB,GAASilB,EAASkB,GAC3BjB,EAAWllB,GAASklB,EAAWiB,GAC/BnmB,EAAQmmB,CAKhB,CACAlB,EAASjlB,GAAS7B,EAClB+mB,EAAWllB,GAASslB,CACxB,EAIAd,EAAc10B,UAAUkwB,aAAe,WACnC,IAKI7hB,EAAS7I,EAAGgwB,EALZb,EAAmB35B,KAAK65B,kBACxBM,EAAWn6B,KAAK+5B,UAChBK,EAAap6B,KAAKg6B,YAClB9kB,EAAQ,EACRpT,EAAIq4B,EAAS/2B,OAEjB,IAAKoH,EAAI,EAAGA,EAAI1I,IAAK0I,GAEjBgwB,EAAWb,EADXtmB,EAAU8mB,EAAS3vB,MAEHgvB,SACLx5B,KAAKi6B,gBAAgBj6B,KAAK85B,aAAazmB,KAG9C+mB,EAAWllB,GAASslB,EACpBL,EAASjlB,KAAW7B,GAG5B8mB,EAAS/2B,OAAS8R,EAClBklB,EAAWh3B,OAAS8R,EACpBlV,KAAK66B,UACT,EACOnB,CACX,CAxNkC,OCpB1BtlB,YADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAgHJ,QArG+B,SAAUC,GAMrC,SAASqc,EAAUwK,EAAsBC,GACrC,IAAI36B,EAAQ6T,EAAOzH,KAAKhN,MAKxB,SAAUqT,GACN,OAAOioB,EAAqBx7B,MAAM,KAAMuT,EAC5C,IAKA,SAAUA,GACN,OAAmDA,EAAQ,GAAIiL,QACnE,KAAMte,KAkBN,OAhBAY,EAAM46B,uBAAyB56B,EAAM66B,iBAAiB3sB,KAAKlO,GAK3DA,EAAM86B,oBAAsBH,EAK5B36B,EAAM+6B,cAAgB,EAKtB/6B,EAAMg7B,kBAAoB,CAAC,EACpBh7B,CACX,CA2DA,OAlGAyT,EAAUyc,EAAWrc,GA4CrBqc,EAAU9rB,UAAUu1B,QAAU,SAAUlnB,GACpC,IAAIwoB,EAAQpnB,EAAOzP,UAAUu1B,QAAQvtB,KAAKhN,KAAMqT,GAKhD,OAJIwoB,GACWxoB,EAAQ,GACd9B,iBAAiB2iB,EAAA,SAAkBl0B,KAAKw7B,wBAE1CK,CACX,EAIA/K,EAAU9rB,UAAUiwB,gBAAkB,WAClC,OAAOj1B,KAAK27B,aAChB,EAKA7K,EAAU9rB,UAAUy2B,iBAAmB,SAAUvV,GAC7C,IAAIwN,EAAmDxN,EAAY,OAC/DrJ,EAAQ6W,EAAK/V,WACjB,GAAK+V,EAAK2D,MAAQxa,IAAUif,EAAA,UACxBjf,IAAUif,EAAA,SACVjf,IAAUif,EAAA,QAAiB,CAC3BpI,EAAKhiB,oBAAoBwiB,EAAA,SAAkBl0B,KAAKw7B,wBAChD,IAAIO,EAAUrI,EAAKpV,SACfyd,KAAW/7B,KAAK47B,2BACT57B,KAAK47B,kBAAkBG,KAC5B/7B,KAAK27B,eAEX37B,KAAK07B,qBACT,CACJ,EAKA5K,EAAU9rB,UAAUmwB,cAAgB,SAAUT,EAAiBC,GAG3D,IAFA,IACWjB,EAAMqI,EADbC,EAAW,EAERh8B,KAAK27B,cAAgBjH,GACxBsH,EAAWrH,GACX30B,KAAK04B,WAAa,GAElBqD,GADArI,EAAmD1zB,KAAKk6B,UAAU,IACnD5b,SACPoV,EAAK/V,aACCme,EAAA,QAAoBC,KAAW/7B,KAAK47B,oBAC9C57B,KAAK47B,kBAAkBG,IAAW,IAChC/7B,KAAK27B,gBACLK,EACFtI,EAAKtW,OAGjB,EACO0T,CACX,CApG8B,CAoG5B,GAUK,SAASC,EAAgB9Q,EAAYyT,EAAMC,EAAeC,EAAYC,GAGzE,IAAK5T,KAAgB0T,KAAiB1T,EAAWwW,aAC7C,OAAO+C,EAEX,IAAKvZ,EAAWwW,YAAY9C,GAAeD,EAAKpV,UAC5C,OAAOkb,EAQX,IAAIxtB,EAASiU,EAAWM,UAAUvU,OAC9BiwB,EAASrI,EAAW,GAAK5nB,EAAO,GAChCkwB,EAAStI,EAAW,GAAK5nB,EAAO,GACpC,OAAQ,MAAQ/J,KAAKN,IAAIkyB,GACrB5xB,KAAKuF,KAAKy0B,EAASA,EAASC,EAASA,GAAUrI,CACvD,wDCjJA,IAAIsI,EAA2B,WAO3B,SAASA,EAAUC,EAAMC,EAAMC,EAAMC,GAIjCv8B,KAAKo8B,KAAOA,EAIZp8B,KAAKq8B,KAAOA,EAIZr8B,KAAKs8B,KAAOA,EAIZt8B,KAAKu8B,KAAOA,CAChB,CAiFA,OA5EAJ,EAAUn3B,UAAUwH,SAAW,SAAU0R,GACrC,OAAOle,KAAKw8B,WAAWte,EAAU,GAAIA,EAAU,GACnD,EAKAie,EAAUn3B,UAAUy3B,kBAAoB,SAAUC,GAC9C,OAAQ18B,KAAKo8B,MAAQM,EAAUN,MAC3BM,EAAUL,MAAQr8B,KAAKq8B,MACvBr8B,KAAKs8B,MAAQI,EAAUJ,MACvBI,EAAUH,MAAQv8B,KAAKu8B,IAC/B,EAMAJ,EAAUn3B,UAAUw3B,WAAa,SAAUx6B,EAAGD,GAC1C,OAAO/B,KAAKo8B,MAAQp6B,GAAKA,GAAKhC,KAAKq8B,MAAQr8B,KAAKs8B,MAAQv6B,GAAKA,GAAK/B,KAAKu8B,IAC3E,EAKAJ,EAAUn3B,UAAU0xB,OAAS,SAAUgG,GACnC,OAAQ18B,KAAKo8B,MAAQM,EAAUN,MAC3Bp8B,KAAKs8B,MAAQI,EAAUJ,MACvBt8B,KAAKq8B,MAAQK,EAAUL,MACvBr8B,KAAKu8B,MAAQG,EAAUH,IAC/B,EAIAJ,EAAUn3B,UAAU8O,OAAS,SAAU4oB,GAC/BA,EAAUN,KAAOp8B,KAAKo8B,OACtBp8B,KAAKo8B,KAAOM,EAAUN,MAEtBM,EAAUL,KAAOr8B,KAAKq8B,OACtBr8B,KAAKq8B,KAAOK,EAAUL,MAEtBK,EAAUJ,KAAOt8B,KAAKs8B,OACtBt8B,KAAKs8B,KAAOI,EAAUJ,MAEtBI,EAAUH,KAAOv8B,KAAKu8B,OACtBv8B,KAAKu8B,KAAOG,EAAUH,KAE9B,EAIAJ,EAAUn3B,UAAUmY,UAAY,WAC5B,OAAOnd,KAAKu8B,KAAOv8B,KAAKs8B,KAAO,CACnC,EAIAH,EAAUn3B,UAAU6K,QAAU,WAC1B,MAAO,CAAC7P,KAAK0hB,WAAY1hB,KAAKmd,YAClC,EAIAgf,EAAUn3B,UAAU0c,SAAW,WAC3B,OAAO1hB,KAAKq8B,KAAOr8B,KAAKo8B,KAAO,CACnC,EAKAD,EAAUn3B,UAAU23B,WAAa,SAAUD,GACvC,OAAQ18B,KAAKo8B,MAAQM,EAAUL,MAC3Br8B,KAAKq8B,MAAQK,EAAUN,MACvBp8B,KAAKs8B,MAAQI,EAAUH,MACvBv8B,KAAKu8B,MAAQG,EAAUJ,IAC/B,EACOH,CACX,CA1G8B,GAmHvB,SAASS,EAAeR,EAAMC,EAAMC,EAAMC,EAAMG,GACnD,YAAkBlmB,IAAdkmB,GACAA,EAAUN,KAAOA,EACjBM,EAAUL,KAAOA,EACjBK,EAAUJ,KAAOA,EACjBI,EAAUH,KAAOA,EACVG,GAGA,IAAIP,EAAUC,EAAMC,EAAMC,EAAMC,EAE/C,CACA,wDChIA,SACI3e,KAAM,EACNC,QAAS,EACTC,OAAQ,EAKRC,MAAO,EACPC,MAAO,6FCTX,QACY,SADZ,EAEgB,aAFhB,EAGc,mFCKP,SAAS6e,EAAazgB,EAAQ0gB,EAAYC,GAC7C,OAAO,SAQG/wB,EAAQqQ,EAAYqE,EAAMsc,GAChC,GAAIhxB,EAAQ,CACR,IAAIixB,EAAYH,EAAa,EAAIpc,EAAK,GAAKrE,EACvC6gB,EAAaJ,EAAa,EAAIpc,EAAK,GAAKrE,EACxC+f,EAAOhgB,EAAO,GAAK6gB,EAAY,EAC/BZ,EAAOjgB,EAAO,GAAK6gB,EAAY,EAC/BX,EAAOlgB,EAAO,GAAK8gB,EAAa,EAChCX,EAAOngB,EAAO,GAAK8gB,EAAa,EAGhCd,EAAOC,IAEPA,EADAD,GAAQC,EAAOD,GAAQ,GAGvBE,EAAOC,IAEPA,EADAD,GAAQC,EAAOD,GAAQ,GAG3B,IAAIt6B,GAAI,QAAMgK,EAAO,GAAIowB,EAAMC,GAC3Bt6B,GAAI,QAAMiK,EAAO,GAAIswB,EAAMC,GAC3BY,EAAQ,GAAK9gB,EAUjB,OARI2gB,GAAgBD,IAChB/6B,IACKm7B,EAAQl7B,KAAKN,IAAI,EAAIM,KAAKm7B,IAAI,EAAGhB,EAAOpwB,EAAO,IAAMmxB,GAClDA,EAAQl7B,KAAKN,IAAI,EAAIM,KAAKm7B,IAAI,EAAGpxB,EAAO,GAAKqwB,GAAQc,GAC7Dp7B,IACKo7B,EAAQl7B,KAAKN,IAAI,EAAIM,KAAKm7B,IAAI,EAAGd,EAAOtwB,EAAO,IAAMmxB,GAClDA,EAAQl7B,KAAKN,IAAI,EAAIM,KAAKm7B,IAAI,EAAGpxB,EAAO,GAAKuwB,GAAQY,IAE1D,CAACn7B,EAAGD,EACf,CAIH,CACL,CAKO,SAASs7B,EAAKrxB,GACjB,OAAOA,CACX,yBChDA,SAASsxB,EAA6BjhB,EAAYkhB,EAAWC,EAAcC,GACvE,IAAIC,GAAc,IAAAhc,UAAS6b,GAAaC,EAAa,GACjDG,GAAc,IAAAxgB,WAAUogB,GAAaC,EAAa,GACtD,OAAIC,EACOx7B,KAAK27B,IAAIvhB,EAAYpa,KAAKm7B,IAAIM,EAAaC,IAE/C17B,KAAK27B,IAAIvhB,EAAYpa,KAAK27B,IAAIF,EAAaC,GACtD,CAaA,SAASE,EAA2BxhB,EAAYyhB,EAAeC,GAC3D,IAAIv+B,EAASyC,KAAK27B,IAAIvhB,EAAYyhB,GAYlC,OAVAt+B,GACIyC,KAAKN,IAAI,EAFD,GAEaM,KAAKm7B,IAAI,EAAG/gB,EAAayhB,EAAgB,IAFtD,GAGJ,EACJC,IACAv+B,EAASyC,KAAKm7B,IAAI59B,EAAQu+B,GAC1Bv+B,GACIyC,KAAKN,IAAI,EAPL,GAOiBM,KAAKm7B,IAAI,EAAGW,EAAgB1hB,EAAa,IAP1D,GASA,IAEL,QAAM7c,EAAQu+B,EAAgB,EAAmB,EAAhBD,EAC5C,CAkGO,SAASE,EAAuBF,EAAeC,EAAeE,EAAYC,EAAeC,GAC5F,OAAO,SAQG9hB,EAAY+hB,EAAW1d,EAAMsc,GACnC,QAAmBxmB,IAAf6F,EAA0B,CAC1B,IAAIgiB,EAAeH,EACbZ,EAA6BQ,EAAeI,EAAexd,EAAMyd,GACjEL,EAEN,YAD4BtnB,IAAfynB,GAA2BA,IACxBjB,EAGTa,EAA2BxhB,EAAYgiB,EAAcN,IAFjD,QAAM1hB,EAAY0hB,EAAeM,EAGhD,CAIH,CACL,KC7KQjqB,gCADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAu8CJ,SAAS8pB,EAAkB5yB,EAAU6yB,GACjC1+B,YAAW,WACP6L,EAAS6yB,EACb,GAAG,EACP,CAkJO,SAASC,EAAgBC,GAC5B,QAAIA,EAAUC,cAAgBD,EAAUE,gBAC/B,EAAA1yB,EAAA,IAAiBwyB,EAAUC,aAAcD,EAAUE,gBAIxDF,EAAUG,mBAAqBH,EAAUI,kBAGzCJ,EAAUK,iBAAmBL,EAAUM,cAI/C,CACA,QA72C0B,SAAUtqB,GAKhC,SAASqa,EAAKzZ,GACV,IAAIzU,EAAQ6T,EAAOzH,KAAKhN,OAASA,KAC7B0O,GAAU,QAAO,CAAC,EAAG2G,GAsDzB,OAjDAzU,EAAMo+B,OAAS,CAAC,EAAG,GAKnBp+B,EAAMq+B,YAAc,GAKpBr+B,EAAMs+B,oBAMNt+B,EAAMu+B,aAAc,IAAAC,kBAAiB1wB,EAAQ6K,WAAY,aAKzD3Y,EAAMy+B,cAAgB,CAAC,IAAK,KAK5Bz+B,EAAM0+B,cAAgB,KAKtB1+B,EAAM2+B,kBAKN3+B,EAAM4+B,gBAKN5+B,EAAM6+B,mBAAgBjpB,EAClB9H,EAAQ1C,SACR0C,EAAQ1C,QAAS,IAAAsnB,oBAAmB5kB,EAAQ1C,OAAQpL,EAAMu+B,cAE1DzwB,EAAQ0N,SACR1N,EAAQ0N,QAAS,IAAAsjB,gBAAehxB,EAAQ0N,OAAQxb,EAAMu+B,cAE1Dv+B,EAAM++B,cAAcjxB,GACb9N,CACX,CAqoCA,OAlsCAyT,EAAUya,EAAMra,GAkEhBqa,EAAK9pB,UAAU26B,cAAgB,SAAUjxB,GAIrC,IACIkxB,EA+pCL,SAAoClxB,GACvC,IAAImxB,EACA/B,EACAC,EAKA+B,OAA8BtpB,IAApB9H,EAAQoxB,QAAwBpxB,EAAQoxB,QAxzCnC,EAyzCfC,OAA8BvpB,IAApB9H,EAAQqxB,QAAwBrxB,EAAQqxB,QAHjC,GAIjBC,OAAoCxpB,IAAvB9H,EAAQsxB,WAA2BtxB,EAAQsxB,WAHpC,EAIpBC,OAAoCzpB,IAAvB9H,EAAQuxB,YAA2BvxB,EAAQuxB,WACxDlD,OAAgDvmB,IAAvC9H,EAAQwxB,4BACfxxB,EAAQwxB,2BAEVzC,OAA4CjnB,IAA3B9H,EAAQ+uB,gBAA+B/uB,EAAQ+uB,eAChElkB,GAAa,IAAA6lB,kBAAiB1wB,EAAQ6K,WAAY,aAClD4mB,EAAa5mB,EAAWiE,YACxB4iB,EAAsB1xB,EAAQ0xB,oBAC9BhkB,EAAS1N,EAAQ0N,OAKrB,GAJK6jB,GAAe7jB,IAAU7C,EAAW8mB,aACrCD,GAAsB,EACtBhkB,EAAS+jB,QAEe3pB,IAAxB9H,EAAQ4xB,YAA2B,CACnC,IAAIA,EAAc5xB,EAAQ4xB,YAC1BxC,EAAgBwC,EAAYR,GAC5B/B,OAC6BvnB,IAAzB8pB,EAAYP,GACNO,EAAYP,GACZO,EAAYA,EAAYl9B,OAAS,GAEvCy8B,EADAnxB,EAAQ6xB,oBDn9Cb,SAAiCD,EAAarC,EAAYC,EAAeC,GAC5E,OAAO,SAQG9hB,EAAY+hB,EAAW1d,EAAMsc,GACnC,QAAmBxmB,IAAf6F,EAA0B,CAC1B,IAAIyhB,EAAgBwC,EAAY,GAC5BvC,EAAgBuC,EAAYA,EAAYl9B,OAAS,GACjDi7B,EAAeH,EACbZ,EAA6BQ,EAAeI,EAAexd,EAAMyd,GACjEL,EAEN,GAAId,EAEA,YAD4BxmB,IAAfynB,GAA2BA,EAIjCJ,EAA2BxhB,EAAYgiB,EAAcN,IAFjD,QAAM1hB,EAAY0hB,EAAeM,GAIhD,IAAImC,EAASv+B,KAAK27B,IAAIS,EAAchiB,GAChCkd,EAAIt3B,KAAKC,OAAM,QAAkBo+B,EAAaE,EAAQpC,IAC1D,OAAIkC,EAAY/G,GAAK8E,GAAgB9E,EAAI+G,EAAYl9B,OAAS,EACnDk9B,EAAY/G,EAAI,GAEpB+G,EAAY/G,EACvB,CAIH,CACL,CCi7CmCkH,CAAwBH,EAAavD,GAASqD,GAAuBhkB,EAAQqhB,GAG7EO,EAAuBF,EAAeC,EAAehB,GAASqD,GAAuBhkB,EAAQqhB,EAE5H,KACK,CAED,IAIIiD,GAJQP,EAGNl+B,KAAKm7B,KAAI,IAAA1b,UAASye,IAAa,IAAAhjB,WAAUgjB,IADtC,IAAM,EAAAQ,gBAAgBC,EAAA,WAAkBrnB,EAAWsnB,oBAE1B,IAAoB5+B,KAAKI,IArCvC,EAvzCL,GA61CXy+B,EAAuBJ,EACvBz+B,KAAKI,IAvCW,EAuCY0+B,SAGVvqB,KADtBsnB,EAAgBpvB,EAAQovB,eAEpBgC,EAAU,EAGVhC,EAAgB4C,EAAuBz+B,KAAKI,IAAI29B,EAAYF,QAI1CtpB,KADtBunB,EAAgBrvB,EAAQqvB,iBAIZA,OAFgBvnB,IAApB9H,EAAQqxB,aACsBvpB,IAA1B9H,EAAQovB,cACQA,EAAgB77B,KAAKI,IAAI29B,EAAYD,GAGrCW,EAAuBz+B,KAAKI,IAAI29B,EAAYD,GAIhDe,GAIxBf,EACID,EACI79B,KAAKC,MAAMD,KAAKN,IAAIm8B,EAAgBC,GAAiB97B,KAAKN,IAAIq+B,IACtEjC,EAAgBD,EAAgB77B,KAAKI,IAAI29B,EAAYD,EAAUD,GAE3DD,EADAnxB,EAAQ6xB,oBDl9Cb,SAA2BS,EAAOlD,EAAemD,EAAmBhD,EAAYC,EAAeC,GAClG,OAAO,SAQG9hB,EAAY+hB,EAAW1d,EAAMsc,GACnC,QAAmBxmB,IAAf6F,EAA0B,CAC1B,IAAIgiB,EAAeH,EACbZ,EAA6BQ,EAAeI,EAAexd,EAAMyd,GACjEL,EACFC,OAAsCvnB,IAAtByqB,EAAkCA,EAAoB,EAE1E,GAAIjE,EAEA,YAD4BxmB,IAAfynB,GAA2BA,EAIjCJ,EAA2BxhB,EAAYgiB,EAAcN,IAFjD,QAAM1hB,EAAY0hB,EAAeM,GAIhD,IACI6C,EAAej/B,KAAKk/B,KAAKl/B,KAAKN,IAAIm8B,EAAgBO,GAAgBp8B,KAAKN,IAAIq/B,GAD/D,MAEZI,GAAUhD,GAAa,GAFX,MAE8B,GAC1CoC,EAASv+B,KAAK27B,IAAIS,EAAchiB,GAChCglB,EAAkBp/B,KAAKC,MAAMD,KAAKN,IAAIm8B,EAAgB0C,GAAUv+B,KAAKN,IAAIq/B,GAASI,GAClFE,EAAYr/B,KAAKm7B,IAAI8D,EAAcG,GACnCE,EAAgBzD,EAAgB77B,KAAKI,IAAI2+B,EAAOM,GACpD,OAAO,QAAMC,EAAexD,EAAeM,EAC/C,CAIH,CACL,CC+6CmCmD,CAAkBxB,EAAYlC,EAAeC,EAAehB,GAASqD,GAAuBhkB,EAAQqhB,GAGpGO,EAAuBF,EAAeC,EAAehB,GAASqD,GAAuBhkB,EAAQqhB,EAE5H,CACA,MAAO,CACHgE,WAAY5B,EACZ/B,cAAeA,EACfC,cAAeA,EACf+B,QAASA,EACTE,WAAYA,EAEpB,CAxvCuC0B,CAA2BhzB,GAK1D1O,KAAK2hC,eAAiB/B,EAAyB9B,cAK/C99B,KAAK4hC,eAAiBhC,EAAyB7B,cAK/C/9B,KAAK6hC,YAAcjC,EAAyBI,WAK5ChgC,KAAK8hC,aAAepzB,EAAQ4xB,YAK5BtgC,KAAK+hC,SAAWnC,EAAyBE,QACzC,IAAIkC,EAgnCL,SAAgCtzB,GACnC,QAAuB8H,IAAnB9H,EAAQ0N,OAAsB,CAC9B,IAAI2gB,OAA4CvmB,IAAnC9H,EAAQuzB,wBACfvzB,EAAQuzB,uBAEd,OAAOpF,EAAanuB,EAAQ0N,OAAQ1N,EAAQ0xB,oBAAqBrD,EACrE,CACA,IAAIxjB,GAAa,IAAA6lB,kBAAiB1wB,EAAQ6K,WAAY,aACtD,IAA2B,IAAvB7K,EAAQuxB,YAAuB1mB,EAAW8mB,WAAY,CACtD,IAAIjkB,EAAS7C,EAAWiE,YAAY1Q,QAGpC,OAFAsP,EAAO,IAAK,IACZA,EAAO,GAAKqd,IACLoD,EAAazgB,GAAQ,GAAO,EACvC,CACA,OAAO,CACX,CA/nC+B8lB,CAAuBxzB,GAC1CmxB,EAAuBD,EAAyB6B,WAChDU,EAiuCL,SAAkCzzB,GAErC,QADgD8H,IAA3B9H,EAAQ0zB,gBAA+B1zB,EAAQ0zB,eAChD,CAChB,IAAIC,EAAoB3zB,EAAQ2zB,kBAChC,YAA0B7rB,IAAtB6rB,IAAyD,IAAtBA,GAC5B,WAEoB,IAAtBA,EACE,KAE2B,iBAAtBA,GACL,QAAcA,GAGd,IAEf,CAEI,OAAO,IAEf,CArvCiCC,CAAyB5zB,GAKlD1O,KAAKuiC,aAAe,CAChBv2B,OAAQg2B,EACR3lB,WAAYwjB,EACZlf,SAAUwhB,GAEdniC,KAAKsnB,iBAAiC9Q,IAArB9H,EAAQiS,SAAyBjS,EAAQiS,SAAW,GACrE3gB,KAAKwiC,uBAAqChsB,IAAnB9H,EAAQ1C,OAAuB0C,EAAQ1C,OAAS,WAC5CwK,IAAvB9H,EAAQ2N,WACRrc,KAAKyiC,cAAc/zB,EAAQ2N,iBAEL7F,IAAjB9H,EAAQ7C,MACb7L,KAAKuoB,QAAQ7Z,EAAQ7C,MAEzB7L,KAAK+X,cA/CY,CAAC,GAoDlB/X,KAAK0iC,SAAWh0B,CACpB,EASAogB,EAAK9pB,UAAU29B,mBAAqB,SAAUC,GAC1C,IAAIl0B,GAAU,QAAO,CAAC,EAAG1O,KAAK0iC,UAY9B,YAV2BlsB,IAAvB9H,EAAQ2N,WACR3N,EAAQ2N,WAAarc,KAAK0d,gBAG1BhP,EAAQ7C,KAAO7L,KAAK8L,UAGxB4C,EAAQ1C,OAAShM,KAAK6iC,oBAEtBn0B,EAAQiS,SAAW3gB,KAAKmnB,eACjB,QAAO,CAAC,EAAGzY,EAASk0B,EAC/B,EAkCA9T,EAAK9pB,UAAU4G,QAAU,SAAUk3B,GAC3B9iC,KAAKo2B,UAAYp2B,KAAKqoB,gBACtBroB,KAAKo1B,mBAAmB,GAG5B,IADA,IAAI/1B,EAAO,IAAI8B,MAAMlB,UAAUmD,QACtBoH,EAAI,EAAGA,EAAInL,EAAK+D,SAAUoH,EAAG,CAClC,IAAIkE,EAAUzO,UAAUuK,GACpBkE,EAAQ1C,UACR0C,GAAU,QAAO,CAAC,EAAGA,IACb1C,QAAS,IAAAsnB,oBAAmB5kB,EAAQ1C,OAAQhM,KAAK6Z,kBAEzDnL,EAAQq0B,UACRr0B,GAAU,QAAO,CAAC,EAAGA,IACbq0B,QAAS,IAAAzP,oBAAmB5kB,EAAQq0B,OAAQ/iC,KAAK6Z,kBAE7Dxa,EAAKmL,GAAKkE,CACd,CACA1O,KAAKgjC,gBAAgBljC,MAAME,KAAMX,EACrC,EAIAyvB,EAAK9pB,UAAUg+B,gBAAkB,SAAUF,GACvC,IACIp3B,EADAu3B,EAAiBhjC,UAAUmD,OAO/B,GALI6/B,EAAiB,GACwB,mBAAlChjC,UAAUgjC,EAAiB,KAClCv3B,EAAWzL,UAAUgjC,EAAiB,KACpCA,IAEDjjC,KAAKo2B,QAAS,CAEf,IAAIvZ,EAAQ5c,UAAUgjC,EAAiB,GAavC,OAZIpmB,EAAM7Q,QACNhM,KAAKwiC,kBAAkB3lB,EAAM7Q,aAEdwK,IAAfqG,EAAMhR,MACN7L,KAAKuoB,QAAQ1L,EAAMhR,WAEA2K,IAAnBqG,EAAM8D,UACN3gB,KAAKsnB,YAAYzK,EAAM8D,eAEvBjV,GACA4yB,EAAkB5yB,GAAU,GAGpC,CAMA,IALA,IAAIqsB,EAAQp4B,KAAKC,MACboM,EAAShM,KAAKs/B,cAAcxyB,QAC5BuP,EAAarc,KAAKu/B,kBAClB5e,EAAW3gB,KAAKw/B,gBAChB0D,EAAS,GACJ14B,EAAI,EAAGA,EAAIy4B,IAAkBz4B,EAAG,CACrC,IAAIkE,EAA2CzO,UAAUuK,GACrDi0B,EAAY,CACZ1G,MAAOA,EACPoL,UAAU,EACVJ,OAAQr0B,EAAQq0B,OAChBh3B,cAA+ByK,IAArB9H,EAAQ3C,SAAyB2C,EAAQ3C,SAAW,IAC9Dsb,OAAQ3Y,EAAQ2Y,QAAU,KAC1B3b,SAAUA,GAiBd,GAfIgD,EAAQ1C,SACRyyB,EAAUC,aAAe1yB,EACzByyB,EAAUE,aAAejwB,EAAQ1C,OAAOc,QACxCd,EAASyyB,EAAUE,mBAEFnoB,IAAjB9H,EAAQ7C,MACR4yB,EAAUG,iBAAmBviB,EAC7BoiB,EAAUI,iBAAmB7+B,KAAKojC,qBAAqB10B,EAAQ7C,MAC/DwQ,EAAaoiB,EAAUI,kBAElBnwB,EAAQ2N,aACboiB,EAAUG,iBAAmBviB,EAC7BoiB,EAAUI,iBAAmBnwB,EAAQ2N,WACrCA,EAAaoiB,EAAUI,uBAEFroB,IAArB9H,EAAQiS,SAAwB,CAChC8d,EAAUK,eAAiBne,EAC3B,IAAI8G,GAAQ,QAAO/Y,EAAQiS,SAAWA,EAAW1e,KAAKmlB,GAAI,EAAInlB,KAAKmlB,IAAMnlB,KAAKmlB,GAC9EqX,EAAUM,eAAiBpe,EAAW8G,EACtC9G,EAAW8d,EAAUM,cACzB,CAEIP,EAAgBC,GAChBA,EAAU0E,UAAW,EAIrBpL,GAAS0G,EAAU1yB,SAEvBm3B,EAAO5wB,KAAKmsB,EAChB,CACAz+B,KAAKi/B,YAAY3sB,KAAK4wB,GACtBljC,KAAKqjC,QAAQvO,EAAA,YAAoB,GACjC90B,KAAKsjC,mBACT,EAMAxU,EAAK9pB,UAAUqjB,aAAe,WAC1B,OAAOroB,KAAKg/B,OAAOlK,EAAA,aAAsB,CAC7C,EAMAhG,EAAK9pB,UAAUu+B,eAAiB,WAC5B,OAAOvjC,KAAKg/B,OAAOlK,EAAA,eAAwB,CAC/C,EAKAhG,EAAK9pB,UAAUsjB,iBAAmB,WAE9B,IAAIya,EADJ/iC,KAAKqjC,QAAQvO,EAAA,aAAqB90B,KAAKg/B,OAAOlK,EAAA,cAE9C,IAAK,IAAItqB,EAAI,EAAGiL,EAAKzV,KAAKi/B,YAAY77B,OAAQoH,EAAIiL,IAAMjL,EAAG,CACvD,IAAI04B,EAASljC,KAAKi/B,YAAYz0B,GAI9B,GAHI04B,EAAO,GAAGx3B,UACV4yB,EAAkB4E,EAAO,GAAGx3B,UAAU,IAErCq3B,EACD,IAAK,IAAIxsB,EAAI,EAAGwP,EAAKmd,EAAO9/B,OAAQmT,EAAIwP,IAAMxP,EAAG,CAC7C,IAAIkoB,EAAYyE,EAAO3sB,GACvB,IAAKkoB,EAAU0E,SAAU,CACrBJ,EAAStE,EAAUsE,OACnB,KACJ,CACJ,CAER,CACA/iC,KAAKi/B,YAAY77B,OAAS,EAC1BpD,KAAKy/B,cAAgBsD,CACzB,EAIAjU,EAAK9pB,UAAUs+B,kBAAoB,WAK/B,QAJiC9sB,IAA7BxW,KAAKk/B,sBACL1J,qBAAqBx1B,KAAKk/B,qBAC1Bl/B,KAAKk/B,yBAAsB1oB,GAE1BxW,KAAKqoB,eAAV,CAKA,IAFA,IAAIzoB,EAAMD,KAAKC,MACX4jC,GAAO,EACFh5B,EAAIxK,KAAKi/B,YAAY77B,OAAS,EAAGoH,GAAK,IAAKA,EAAG,CAGnD,IAFA,IAAI04B,EAASljC,KAAKi/B,YAAYz0B,GAC1Bi5B,GAAiB,EACZltB,EAAI,EAAGwP,EAAKmd,EAAO9/B,OAAQmT,EAAIwP,IAAMxP,EAAG,CAC7C,IAAIkoB,EAAYyE,EAAO3sB,GACvB,IAAIkoB,EAAU0E,SAAd,CAGA,IAAIO,EAAU9jC,EAAM6+B,EAAU1G,MAC1B4L,EAAWlF,EAAU1yB,SAAW,EAAI23B,EAAUjF,EAAU1yB,SAAW,EACnE43B,GAAY,GACZlF,EAAU0E,UAAW,EACrBQ,EAAW,GAGXF,GAAiB,EAErB,IAAIG,EAAWnF,EAAUpX,OAAOsc,GAChC,GAAIlF,EAAUC,aAAc,CACxB,IAAImF,EAAKpF,EAAUC,aAAa,GAC5BoF,EAAKrF,EAAUC,aAAa,GAG5B18B,EAAI6hC,EAAKD,GAFJnF,EAAUE,aAAa,GAEFkF,GAC1B9hC,EAAI+hC,EAAKF,GAFJnF,EAAUE,aAAa,GAEFmF,GAC9B9jC,KAAKs/B,cAAgB,CAACt9B,EAAGD,EAC7B,CACA,GAAI08B,EAAUG,kBAAoBH,EAAUI,iBAAkB,CAC1D,IAAIxiB,EAA0B,IAAbunB,EACXnF,EAAUI,iBACVJ,EAAUG,iBACRgF,GACKnF,EAAUI,iBAAmBJ,EAAUG,kBACpD,GAAIH,EAAUsE,OAAQ,CAClB,IAAIriB,EAAO1gB,KAAK+jC,iBAAiB/jC,KAAKmnB,eAClC6c,EAAwBhkC,KAAKuiC,aAAalmB,WAAWA,EAAY,EAAGqE,GAAM,GAC9E1gB,KAAKs/B,cAAgBt/B,KAAKikC,oBAAoBD,EAAuBvF,EAAUsE,OACnF,CACA/iC,KAAKu/B,kBAAoBljB,EACzBrc,KAAKkkC,mBAAkB,EAC3B,CACA,QAAiC1tB,IAA7BioB,EAAUK,qBACmBtoB,IAA7BioB,EAAUM,eAA8B,CACxC,IAAIpe,EAAwB,IAAbijB,GACT,QAAOnF,EAAUM,eAAiB98B,KAAKmlB,GAAI,EAAInlB,KAAKmlB,IAClDnlB,KAAKmlB,GACPqX,EAAUK,eACR8E,GACKnF,EAAUM,eAAiBN,EAAUK,gBAClD,GAAIL,EAAUsE,OAAQ,CAClB,IAAIoB,EAAsBnkC,KAAKuiC,aAAa5hB,SAASA,GAAU,GAC/D3gB,KAAKs/B,cAAgBt/B,KAAKokC,sBAAsBD,EAAqB1F,EAAUsE,OACnF,CACA/iC,KAAKw/B,gBAAkB7e,CAC3B,CAGA,GAFA3gB,KAAKkkC,mBAAkB,GACvBV,GAAO,GACF/E,EAAU0E,SACX,KAnDJ,CAqDJ,CACA,GAAIM,EAAgB,CAChBzjC,KAAKi/B,YAAYz0B,GAAK,KACtBxK,KAAKqjC,QAAQvO,EAAA,aAAqB,GAClC,IAAIppB,EAAWw3B,EAAO,GAAGx3B,SACrBA,GACA4yB,EAAkB5yB,GAAU,EAEpC,CACJ,CAEA1L,KAAKi/B,YAAcj/B,KAAKi/B,YAAYoF,OAAOC,SACvCd,QAAqChtB,IAA7BxW,KAAKk/B,sBACbl/B,KAAKk/B,oBAAsBpJ,sBAAsB91B,KAAKsjC,kBAAkBx0B,KAAK9O,OA5EjF,CA8EJ,EAMA8uB,EAAK9pB,UAAUo/B,sBAAwB,SAAUzjB,EAAUoiB,GACvD,IAAI/2B,EACAu4B,EAAgBvkC,KAAK6iC,oBAMzB,YALsBrsB,IAAlB+tB,IACAv4B,EAAS,CAACu4B,EAAc,GAAKxB,EAAO,GAAIwB,EAAc,GAAKxB,EAAO,KAClE,QAAiB/2B,EAAQ2U,EAAW3gB,KAAKmnB,gBACzC,QAAcnb,EAAQ+2B,IAEnB/2B,CACX,EAMA8iB,EAAK9pB,UAAUi/B,oBAAsB,SAAU5nB,EAAY0mB,GACvD,IAAI/2B,EACAu4B,EAAgBvkC,KAAK6iC,oBACrB2B,EAAoBxkC,KAAK0d,gBAQ7B,YAPsBlH,IAAlB+tB,QAAqD/tB,IAAtBguB,IAK/Bx4B,EAAS,CAJD+2B,EAAO,GACV1mB,GAAc0mB,EAAO,GAAKwB,EAAc,IAAOC,EAC5CzB,EAAO,GACV1mB,GAAc0mB,EAAO,GAAKwB,EAAc,IAAOC,IAGjDx4B,CACX,EAOA8iB,EAAK9pB,UAAU++B,iBAAmB,SAAUU,GACxC,IAAI/jB,EAAO1gB,KAAKq/B,cAChB,GAAIoF,EAAc,CACd,IAAIryB,EAAIsO,EAAK,GACTtV,EAAIsV,EAAK,GACb,MAAO,CACHze,KAAK2G,IAAIwJ,EAAInQ,KAAKiG,IAAIu8B,IAClBxiC,KAAK2G,IAAIwC,EAAInJ,KAAKwF,IAAIg9B,IAC1BxiC,KAAK2G,IAAIwJ,EAAInQ,KAAKwF,IAAIg9B,IAClBxiC,KAAK2G,IAAIwC,EAAInJ,KAAKiG,IAAIu8B,IAElC,CAEI,OAAO/jB,CAEf,EAQAoO,EAAK9pB,UAAUkyB,gBAAkB,SAAUwN,GACvC1kC,KAAKq/B,cAAgBl+B,MAAMkP,QAAQq0B,GAC7BA,EAAS53B,QACT,CAAC,IAAK,KACP9M,KAAKqoB,gBACNroB,KAAKo1B,mBAAmB,EAEhC,EAOAtG,EAAK9pB,UAAU2/B,UAAY,WACvB,IAAI34B,EAAShM,KAAK6iC,oBAClB,OAAK72B,GAGE,IAAA+mB,kBAAiB/mB,EAAQhM,KAAK6Z,iBAF1B7N,CAGf,EAKA8iB,EAAK9pB,UAAU69B,kBAAoB,WAC/B,OAAsE7iC,KAAKiF,IAAI2/B,EACnF,EAIA9V,EAAK9pB,UAAU6/B,eAAiB,WAC5B,OAAO7kC,KAAKuiC,YAChB,EAIAzT,EAAK9pB,UAAU8/B,uBAAyB,WACpC,OAAO9kC,KAAK0iC,SAASnC,mBACzB,EAKAzR,EAAK9pB,UAAUqxB,SAAW,SAAU0O,GAChC,YAAkBvuB,IAAduuB,GACAA,EAAU,GAAK/kC,KAAKg/B,OAAO,GAC3B+F,EAAU,GAAK/kC,KAAKg/B,OAAO,GACpB+F,GAGA/kC,KAAKg/B,OAAOlyB,OAE3B,EAWAgiB,EAAK9pB,UAAUggC,gBAAkB,SAAUN,GACvC,IAAItoB,EAASpc,KAAKilC,wBAAwBP,GAC1C,OAAO,IAAAQ,cAAa9oB,EAAQpc,KAAK6Z,gBACrC,EAMAiV,EAAK9pB,UAAUigC,wBAA0B,SAAUP,GAC/C,IAAIhkB,EAAOgkB,GAAY1kC,KAAK+jC,mBACxB/3B,EAA+DhM,KAAK6iC,qBACxE,OAAO72B,EAAQ,GACf,IAAIqQ,EAAqCrc,KAAK0d,iBAC9C,YAAsBlH,IAAf6F,EAA0B,GACjC,IAAIsE,EAAmC3gB,KAAKmnB,cAE5C,OADA,YAAoB3Q,IAAbmK,EAAwB,IACxB,IAAA4V,mBAAkBvqB,EAAQqQ,EAAYsE,EAAUD,EAC3D,EAMAoO,EAAK9pB,UAAUmgC,iBAAmB,WAC9B,OAAOnlC,KAAK2hC,cAChB,EAMA7S,EAAK9pB,UAAUogC,iBAAmB,WAC9B,OAAOplC,KAAK4hC,cAChB,EAMA9S,EAAK9pB,UAAUqgC,WAAa,WACxB,OAA8BrlC,KAAKslC,qBAAqBtlC,KAAK4hC,eACjE,EAMA9S,EAAK9pB,UAAUugC,WAAa,SAAU15B,GAClC7L,KAAK2/B,cAAc3/B,KAAK2iC,mBAAmB,CAAE5C,QAASl0B,IAC1D,EAMAijB,EAAK9pB,UAAUwgC,WAAa,WACxB,OAA8BxlC,KAAKslC,qBAAqBtlC,KAAK2hC,eACjE,EAMA7S,EAAK9pB,UAAUygC,WAAa,SAAU55B,GAClC7L,KAAK2/B,cAAc3/B,KAAK2iC,mBAAmB,CAAE7C,QAASj0B,IAC1D,EAMAijB,EAAK9pB,UAAU0gC,uBAAyB,SAAUC,GAC9C3lC,KAAK2/B,cAAc3/B,KAAK2iC,mBAAmB,CAAEpC,oBAAqBoF,IACtE,EAMA7W,EAAK9pB,UAAU6U,cAAgB,WAC3B,OAAO7Z,KAAKm/B,WAChB,EAOArQ,EAAK9pB,UAAU0Y,cAAgB,WAC3B,OAAwC1d,KAAKiF,IAAI2/B,EACrD,EAOA9V,EAAK9pB,UAAU4gC,eAAiB,WAC5B,OAAO5lC,KAAK8hC,YAChB,EASAhT,EAAK9pB,UAAU6gC,uBAAyB,SAAUzpB,EAAQsoB,GACtD,OAAO1kC,KAAK8lC,gCAA+B,IAAApG,gBAAetjB,EAAQpc,KAAK6Z,iBAAkB6qB,EAC7F,EAQA5V,EAAK9pB,UAAU8gC,+BAAiC,SAAU1pB,EAAQsoB,GAC9D,IAAIhkB,EAAOgkB,GAAY1kC,KAAK+jC,mBACxBrG,GAAc,IAAAhc,UAAStF,GAAUsE,EAAK,GACtCid,GAAc,IAAAxgB,WAAUf,GAAUsE,EAAK,GAC3C,OAAOze,KAAKm7B,IAAIM,EAAaC,EACjC,EAOA7O,EAAK9pB,UAAU+gC,8BAAgC,SAAUC,GACrD,IAAIhF,EAAQgF,GAAa,EACrBlI,EAAgB99B,KAAKimC,yBAAyBjmC,KAAK2hC,gBACnD5D,EAAgB/9B,KAAK4hC,eACrBxE,EAAMn7B,KAAKN,IAAIm8B,EAAgBC,GAAiB97B,KAAKN,IAAIq/B,GAC7D,OAAO,SAKGtgC,GAEN,OADiBo9B,EAAgB77B,KAAKI,IAAI2+B,EAAOtgC,EAAQ08B,EAE5D,CACL,EAOAtO,EAAK9pB,UAAUmiB,YAAc,WACzB,OAA8BnnB,KAAKiF,IAAI2/B,EAC3C,EAOA9V,EAAK9pB,UAAUkhC,8BAAgC,SAAUF,GACrD,IAAIG,EAAWlkC,KAAKN,IAAIqkC,GAAa,GACjClI,EAAgB99B,KAAKimC,yBAAyBjmC,KAAK2hC,gBACnD5D,EAAgB/9B,KAAK4hC,eACrBxE,EAAMn7B,KAAKN,IAAIm8B,EAAgBC,GAAiBoI,EACpD,OAAO,SAKG9pB,GAEN,OADYpa,KAAKN,IAAIm8B,EAAgBzhB,GAAc8pB,EAAW/I,CAEjE,CACL,EAIAtO,EAAK9pB,UAAU2Y,SAAW,WACtB,IAAI3R,EAA8DhM,KAAK6iC,oBACnEtpB,EAAavZ,KAAK6Z,gBAClBwC,EAAoCrc,KAAK0d,gBACzCiD,EAAW3gB,KAAKmnB,cACpB,MAAO,CACHnb,OAAQA,EAAOc,MAAM,GACrByM,gBAA2B/C,IAAf+C,EAA2BA,EAAa,KACpD8C,WAAYA,EACZsE,SAAUA,EACV9U,KAAM7L,KAAK8L,UAEnB,EAQAgjB,EAAK9pB,UAAU8G,QAAU,WACrB,IAAID,EACAwQ,EAAarc,KAAK0d,gBAItB,YAHmBlH,IAAf6F,IACAxQ,EAAO7L,KAAKslC,qBAAqBjpB,IAE9BxQ,CACX,EAOAijB,EAAK9pB,UAAUsgC,qBAAuB,SAAUjpB,GAC5C,IACI+gB,EAAK4C,EADLoB,EAASphC,KAAK+hC,UAAY,EAE9B,GAAI/hC,KAAK8hC,aAAc,CACnB,IAAIsE,GAAU,QAAkBpmC,KAAK8hC,aAAczlB,EAAY,GAC/D+kB,EAASgF,EACThJ,EAAMp9B,KAAK8hC,aAAasE,GAEpBpG,EADAoG,GAAWpmC,KAAK8hC,aAAa1+B,OAAS,EACzB,EAGAg6B,EAAMp9B,KAAK8hC,aAAasE,EAAU,EAEvD,MAEIhJ,EAAMp9B,KAAK2hC,eACX3B,EAAahgC,KAAK6hC,YAEtB,OAAOT,EAASn/B,KAAKN,IAAIy7B,EAAM/gB,GAAcpa,KAAKN,IAAIq+B,EAC1D,EAOAlR,EAAK9pB,UAAUo+B,qBAAuB,SAAUv3B,GAC5C,GAAI7L,KAAK8hC,aAAc,CACnB,GAAI9hC,KAAK8hC,aAAa1+B,QAAU,EAC5B,OAAO,EAEX,IAAIijC,GAAY,QAAMpkC,KAAKC,MAAM2J,GAAO,EAAG7L,KAAK8hC,aAAa1+B,OAAS,GAClE48B,EAAahgC,KAAK8hC,aAAauE,GAAarmC,KAAK8hC,aAAauE,EAAY,GAC9E,OAAQrmC,KAAK8hC,aAAauE,GACtBpkC,KAAKI,IAAI29B,GAAY,QAAMn0B,EAAOw6B,EAAW,EAAG,GACxD,CAEI,OAAQrmC,KAAK2hC,eAAiB1/B,KAAKI,IAAIrC,KAAK6hC,YAAah2B,EAAO7L,KAAK+hC,SAE7E,EAWAjT,EAAK9pB,UAAUshC,IAAM,SAAUC,EAAkBlxB,GAC7C,IAEIuC,EAFAlJ,GAAU,QAAO,CAAEgS,KAAM1gB,KAAK+jC,oBAAsB1uB,GAAe,CAAC,GAMxE,IAHA,OAAOlU,MAAMkP,QAAQk2B,IAEb,mBADqB,EAAwC,sBACjD,IAChBplC,MAAMkP,QAAQk2B,GAAmB,EACjC,SAAQ,IAAA9R,SAAQ8R,GAAmB,IACnC,IAAInqB,GAAS,IAAAsjB,gBAAe6G,EAAkBvmC,KAAK6Z,iBACnDjC,GAAW,QAAkBwE,EACjC,MACK,GAAImqB,EAAiBC,YAAcC,EAAA,eAChCrqB,GAAS,IAAAsjB,gBAAe6G,EAAiB/oB,YAAaxd,KAAK6Z,kBAC/DjC,GAAW,QAAkBwE,IACpBsM,OAAO1oB,KAAKmnB,eAAe,IAAAwd,WAAUvoB,QAE7C,CACD,IAAIsqB,GAAiB,IAAAC,qBAEjB/uB,EADA8uB,EACsEH,EACjEvuB,QACAuP,UAAUmf,EAAgB1mC,KAAK6Z,iBAGzB0sB,CAEnB,CACAvmC,KAAK4mC,YAAYhvB,EAAUlJ,EAC/B,EAKAogB,EAAK9pB,UAAU4hC,YAAc,SAAUhvB,EAAUvC,GAC7C,IAAI3G,EAAU2G,GAAe,CAAC,EAC1BqL,EAAOhS,EAAQgS,KACdA,IACDA,EAAO1gB,KAAK+jC,oBAEhB,IAEIhG,EAFA8I,OAA8BrwB,IAApB9H,EAAQm4B,QAAwBn4B,EAAQm4B,QAAU,CAAC,EAAG,EAAG,EAAG,GACtET,OAA8B5vB,IAApB9H,EAAQ03B,SAAwB13B,EAAQ03B,QAGlDrI,OAD0BvnB,IAA1B9H,EAAQqvB,cACQrvB,EAAQqvB,mBAECvnB,IAApB9H,EAAQqxB,QACG//B,KAAKojC,qBAAqB10B,EAAQqxB,SAGlC,EAYpB,IAVA,IAAIvlB,EAAS5C,EAASkvB,qBAElBnmB,EAAW3gB,KAAKmnB,cAChB4f,EAAW9kC,KAAKiG,KAAKyY,GACrBqmB,EAAW/kC,KAAKwF,KAAKkZ,GACrBsmB,EAAU,IACVC,EAAU,IACVC,GAAU,IACVC,GAAU,IACVC,EAASzvB,EAAS0vB,YACb98B,EAAI,EAAGiL,EAAK+E,EAAOpX,OAAQoH,EAAIiL,EAAIjL,GAAK68B,EAAQ,CACrD,IAAIE,EAAO/sB,EAAOhQ,GAAKu8B,EAAWvsB,EAAOhQ,EAAI,GAAKw8B,EAC9CQ,EAAOhtB,EAAOhQ,GAAKw8B,EAAWxsB,EAAOhQ,EAAI,GAAKu8B,EAClDE,EAAUhlC,KAAK27B,IAAIqJ,EAASM,GAC5BL,EAAUjlC,KAAK27B,IAAIsJ,EAASM,GAC5BL,EAAUllC,KAAKm7B,IAAI+J,EAASI,GAC5BH,EAAUnlC,KAAKm7B,IAAIgK,EAASI,EAChC,CAEA,IAAInrB,EAAarc,KAAK8lC,+BAA+B,CAACmB,EAASC,EAASC,EAASC,GAAU,CAAC1mB,EAAK,GAAKmmB,EAAQ,GAAKA,EAAQ,GAAInmB,EAAK,GAAKmmB,EAAQ,GAAKA,EAAQ,KAC9JxqB,EAAaorB,MAAMprB,GACb0hB,EACA97B,KAAKm7B,IAAI/gB,EAAY0hB,GAC3B1hB,EAAarc,KAAKimC,yBAAyB5pB,EAAY+pB,EAAU,EAAI,GAErEY,GAAYA,EACZ,IAAIU,GAAcT,EAAUE,GAAW,EACnCQ,GAAcT,EAAUE,GAAW,EAKnCp7B,EAAS,EAJb07B,IAAgBb,EAAQ,GAAKA,EAAQ,IAAM,EAAKxqB,GAErB0qB,GAD3BY,IAAgBd,EAAQ,GAAKA,EAAQ,IAAM,EAAKxqB,GACG2qB,EACrCW,EAAaZ,EAAWW,EAAaV,GAE/Ct7B,EAAWgD,EAAQhD,SAAWgD,EAAQhD,SAAW,UAC5B8K,IAArB9H,EAAQ3C,SACR/L,KAAKgjC,gBAAgB,CACjB3mB,WAAYA,EACZrQ,OAAQhM,KAAK4nC,qBAAqB57B,EAAQqQ,GAC1CtQ,SAAU2C,EAAQ3C,SAClBsb,OAAQ3Y,EAAQ2Y,QACjB3b,IAGH1L,KAAKu/B,kBAAoBljB,EACzBrc,KAAKs/B,cAAgBtzB,EACrBhM,KAAKkkC,mBAAkB,GAAO,GAC9B5F,EAAkB5yB,GAAU,GAEpC,EAQAojB,EAAK9pB,UAAU6iC,SAAW,SAAU57B,EAAYyU,EAAMnG,GAClDva,KAAK8nC,kBAAiB,IAAAxU,oBAAmBrnB,EAAYjM,KAAK6Z,iBAAkB6G,EAAMnG,EACtF,EAMAuU,EAAK9pB,UAAU8iC,iBAAmB,SAAU77B,EAAYyU,EAAMnG,GAE1D,IAAIoG,EAAW3gB,KAAKmnB,cAChB4f,EAAW9kC,KAAKiG,KAAKyY,GACrBqmB,EAAW/kC,KAAKwF,KAAKkZ,GACrB4mB,EAAOt7B,EAAW,GAAK86B,EAAW96B,EAAW,GAAK+6B,EAClDQ,EAAOv7B,EAAW,GAAK86B,EAAW96B,EAAW,GAAK+6B,EAClD3qB,EAAarc,KAAK0d,gBAKlBqqB,GAJJR,IAAS7mB,EAAK,GAAK,EAAInG,EAAS,IAAM8B,GAIjB0qB,GAHrBS,IAASjtB,EAAS,GAAKmG,EAAK,GAAK,GAAKrE,IAEtC2qB,GAAYA,GAERgB,EAAUR,EAAOT,EAAWQ,EAAOP,EACvChnC,KAAKwiC,kBAAkB,CAACuF,EAASC,GACrC,EAIAlZ,EAAK9pB,UAAUoxB,MAAQ,WACnB,QAASp2B,KAAK6iC,0BAAgDrsB,IAAzBxW,KAAK0d,eAC9C,EAMAoR,EAAK9pB,UAAUijC,aAAe,SAAUC,GACpC,IAAIl8B,GAAS,IAAA+mB,kBAAiB/yB,KAAKs/B,cAAet/B,KAAK6Z,iBACvD7Z,KAAKmoC,UAAU,CACXn8B,EAAO,GAAKk8B,EAAiB,GAC7Bl8B,EAAO,GAAKk8B,EAAiB,IAErC,EAKApZ,EAAK9pB,UAAUojC,qBAAuB,SAAUF,GAC5C,IAAIl8B,EAAShM,KAAKs/B,cAClBt/B,KAAKwiC,kBAAkB,CACnBx2B,EAAO,GAAKk8B,EAAiB,GAC7Bl8B,EAAO,GAAKk8B,EAAiB,IAErC,EAQApZ,EAAK9pB,UAAUqjC,iBAAmB,SAAUlL,EAAOmL,GAC/C,IAAIvF,EAASuF,IAAc,IAAAhV,oBAAmBgV,EAAYtoC,KAAK6Z,iBAC/D7Z,KAAKuoC,yBAAyBpL,EAAO4F,EACzC,EAOAjU,EAAK9pB,UAAUujC,yBAA2B,SAAUpL,EAAOmL,GACvD,IAAIE,EAAWxoC,KAAKqoB,gBAAkBroB,KAAKujC,iBACvC7iB,EAAO1gB,KAAK+jC,iBAAiB/jC,KAAKmnB,eAClCoa,EAAgBvhC,KAAKuiC,aAAalmB,WAAWrc,KAAKu/B,kBAAoBpC,EAAO,EAAGzc,EAAM8nB,GACtFF,IACAtoC,KAAKs/B,cAAgBt/B,KAAKikC,oBAAoB1C,EAAe+G,IAEjEtoC,KAAKu/B,mBAAqBpC,EAC1Bn9B,KAAKkkC,mBACT,EAQApV,EAAK9pB,UAAUyjC,WAAa,SAAUhhB,EAAO6gB,GACzCtoC,KAAKqoC,iBAAiBpmC,KAAKI,IAAIrC,KAAK6hC,aAAcpa,GAAQ6gB,EAC9D,EAQAxZ,EAAK9pB,UAAU0jC,eAAiB,SAAUjhB,EAAO6gB,GACzCA,IACAA,GAAa,IAAAhV,oBAAmBgV,EAAYtoC,KAAK6Z,kBAErD7Z,KAAK2oC,uBAAuBlhB,EAAO6gB,EACvC,EAKAxZ,EAAK9pB,UAAU2jC,uBAAyB,SAAUlhB,EAAO6gB,GACrD,IAAIE,EAAWxoC,KAAKqoB,gBAAkBroB,KAAKujC,iBACvCqF,EAAc5oC,KAAKuiC,aAAa5hB,SAAS3gB,KAAKw/B,gBAAkB/X,EAAO+gB,GACvEF,IACAtoC,KAAKs/B,cAAgBt/B,KAAKokC,sBAAsBwE,EAAaN,IAEjEtoC,KAAKw/B,iBAAmB/X,EACxBznB,KAAKkkC,mBACT,EAOApV,EAAK9pB,UAAUmjC,UAAY,SAAUn8B,GACjChM,KAAKwiC,mBAAkB,IAAAlP,oBAAmBtnB,EAAQhM,KAAK6Z,iBAC3D,EAKAiV,EAAK9pB,UAAUw9B,kBAAoB,SAAUx2B,GACzChM,KAAKs/B,cAAgBtzB,EACrBhM,KAAKkkC,mBACT,EAMApV,EAAK9pB,UAAUq+B,QAAU,SAAUwF,EAAMphB,GAGrC,OAFAznB,KAAKg/B,OAAO6J,IAASphB,EACrBznB,KAAK2Y,UACE3Y,KAAKg/B,OAAO6J,EACvB,EAOA/Z,EAAK9pB,UAAUy9B,cAAgB,SAAUpmB,GACrCrc,KAAKu/B,kBAAoBljB,EACzBrc,KAAKkkC,mBACT,EAOApV,EAAK9pB,UAAUsiB,YAAc,SAAU3G,GACnC3gB,KAAKw/B,gBAAkB7e,EACvB3gB,KAAKkkC,mBACT,EAMApV,EAAK9pB,UAAUujB,QAAU,SAAU1c,GAC/B7L,KAAKyiC,cAAcziC,KAAKojC,qBAAqBv3B,GACjD,EASAijB,EAAK9pB,UAAUk/B,kBAAoB,SAAU4E,EAAsBC,GAC/D,IAAIP,EAAWxoC,KAAKqoB,gBAAkBroB,KAAKujC,kBAAoBwF,EAE3DH,EAAc5oC,KAAKuiC,aAAa5hB,SAAS3gB,KAAKw/B,gBAAiBgJ,GAC/D9nB,EAAO1gB,KAAK+jC,iBAAiB6E,GAC7BrH,EAAgBvhC,KAAKuiC,aAAalmB,WAAWrc,KAAKu/B,kBAAmB,EAAG7e,EAAM8nB,GAC9EQ,EAAYhpC,KAAKuiC,aAAav2B,OAAOhM,KAAKs/B,cAAeiC,EAAe7gB,EAAM8nB,GAC9ExoC,KAAKiF,IAAI2/B,KAA2BgE,GACpC5oC,KAAKyW,IAAImuB,EAAuBgE,GAEhC5oC,KAAKiF,IAAI2/B,KAA6BrD,GACtCvhC,KAAKyW,IAAImuB,EAAyBrD,GAEjCvhC,KAAKiF,IAAI2/B,KACT,QAAO5kC,KAAKiF,IAAI2/B,GAAsBoE,IACvChpC,KAAKyW,IAAImuB,EAAqBoE,GAE9BhpC,KAAKqoB,iBAAmBygB,GACxB9oC,KAAKsoB,mBAETtoB,KAAKy/B,mBAAgBjpB,CACzB,EAUAsY,EAAK9pB,UAAUowB,mBAAqB,SAAU6T,EAAcC,EAAyBZ,GACjF,IAAIv8B,OAA4ByK,IAAjByyB,EAA6BA,EAAe,IACvD7K,EAAY8K,GAA2B,EACvCN,EAAc5oC,KAAKuiC,aAAa5hB,SAAS3gB,KAAKw/B,iBAC9C9e,EAAO1gB,KAAK+jC,iBAAiB6E,GAC7BrH,EAAgBvhC,KAAKuiC,aAAalmB,WAAWrc,KAAKu/B,kBAAmBnB,EAAW1d,GAChFsoB,EAAYhpC,KAAKuiC,aAAav2B,OAAOhM,KAAKs/B,cAAeiC,EAAe7gB,GAC5E,GAAiB,IAAb3U,IAAmB/L,KAAKy/B,cAKxB,OAJAz/B,KAAKu/B,kBAAoBgC,EACzBvhC,KAAKw/B,gBAAkBoJ,EACvB5oC,KAAKs/B,cAAgB0J,OACrBhpC,KAAKkkC,oBAGT,IAAInB,EAASuF,IAA4B,IAAbv8B,EAAiB/L,KAAKy/B,mBAAgBjpB,GAClExW,KAAKy/B,mBAAgBjpB,EACjBxW,KAAK0d,kBAAoB6jB,GACzBvhC,KAAKmnB,gBAAkByhB,GACtB5oC,KAAK6iC,sBACL,QAAO7iC,KAAK6iC,oBAAqBmG,KAC9BhpC,KAAKqoB,gBACLroB,KAAKsoB,mBAETtoB,KAAKgjC,gBAAgB,CACjBriB,SAAUioB,EACV58B,OAAQg9B,EACR3sB,WAAYklB,EACZx1B,SAAUA,EACVsb,OAAQ,KACR0b,OAAQA,IAGpB,EAOAjU,EAAK9pB,UAAUmkC,iBAAmB,WAC9BnpC,KAAKo1B,mBAAmB,GACxBp1B,KAAKqjC,QAAQvO,EAAA,cAAsB,EACvC,EASAhG,EAAK9pB,UAAUokC,eAAiB,SAAUH,EAAcC,EAAyBZ,GAC7E,IAAIvF,EAASuF,IAAc,IAAAhV,oBAAmBgV,EAAYtoC,KAAK6Z,iBAC/D7Z,KAAKqpC,uBAAuBJ,EAAcC,EAAyBnG,EACvE,EAQAjU,EAAK9pB,UAAUqkC,uBAAyB,SAAUJ,EAAcC,EAAyBZ,GACrFtoC,KAAKqjC,QAAQvO,EAAA,eAAuB,GACpC90B,KAAKo1B,mBAAmB6T,EAAcC,EAAyBZ,EACnE,EAQAxZ,EAAK9pB,UAAU4iC,qBAAuB,SAAUjJ,EAAc2K,GAC1D,IAAI5oB,EAAO1gB,KAAK+jC,iBAAiB/jC,KAAKmnB,eACtC,OAAOnnB,KAAKuiC,aAAav2B,OAAO2yB,EAAc2K,GAAwBtpC,KAAK0d,gBAAiBgD,EAChG,EAUAoO,EAAK9pB,UAAUojB,mBAAqB,SAAUmhB,EAAYC,GACtD,IAAIC,EAAYzpC,KAAKojC,qBAAqBmG,GAC1C,OAAOvpC,KAAKslC,qBAAqBtlC,KAAKimC,yBAAyBwD,EAAWD,GAC9E,EAUA1a,EAAK9pB,UAAUihC,yBAA2B,SAAUpH,EAAkB2K,GAClE,IAAIpL,EAAYoL,GAAiB,EAC7B9oB,EAAO1gB,KAAK+jC,iBAAiB/jC,KAAKmnB,eACtC,OAAOnnB,KAAKuiC,aAAalmB,WAAWwiB,EAAkBT,EAAW1d,EACrE,EACOoO,CACX,CApsCyB,CAosCvB,oDCv8CF,SACI4a,UAAW,EACXC,YAAa,gCCIV,SAASC,EAAaC,EAAUC,EAAQC,GAM3C,IALA,IAAIC,EAAKC,EACLC,EAAaH,GAAkBI,EAC/BC,EAAM,EACNC,EAAOR,EAASzmC,OAChBknC,GAAQ,EACLF,EAAMC,IAITJ,GAAOC,EAAWL,EADlBG,EAAMI,GAAQC,EAAOD,GAAQ,IACIN,IACvB,EAENM,EAAMJ,EAAM,GAIZK,EAAOL,EACPM,GAASL,GAIjB,OAAOK,EAAQF,GAAOA,CAC1B,CAQO,SAASD,EAA0B3jC,EAAGC,GACzC,OAAOD,EAAIC,EAAI,EAAID,EAAIC,GAAK,EAAI,CACpC,CAOO,SAAS8jC,EAAS10B,EAAKqB,GAC1B,OAAOrB,EAAInD,QAAQwE,IAAQ,CAC/B,CASO,SAASszB,EAAkB30B,EAAK5D,EAAQmsB,GAC3C,IAAIt8B,EAAI+T,EAAIzS,OACZ,GAAIyS,EAAI,IAAM5D,EACV,OAAO,EAEN,GAAIA,GAAU4D,EAAI/T,EAAI,GACvB,OAAOA,EAAI,EAGX,IAAI0I,OAAI,EACR,GAAI4zB,EAAY,GACZ,IAAK5zB,EAAI,EAAGA,EAAI1I,IAAK0I,EACjB,GAAIqL,EAAIrL,GAAKyH,EACT,OAAOzH,EAAI,OAIlB,GAAI4zB,EAAY,GACjB,IAAK5zB,EAAI,EAAGA,EAAI1I,IAAK0I,EACjB,GAAIqL,EAAIrL,IAAMyH,EACV,OAAOzH,OAKf,IAAKA,EAAI,EAAGA,EAAI1I,IAAK0I,EAAG,CACpB,GAAIqL,EAAIrL,IAAMyH,EACV,OAAOzH,EAEN,GAAIqL,EAAIrL,GAAKyH,EACd,OAAI4D,EAAIrL,EAAI,GAAKyH,EAASA,EAAS4D,EAAIrL,GAC5BA,EAAI,EAGJA,CAGnB,CAEJ,OAAO1I,EAAI,CAEnB,CAMO,SAAS2oC,EAAgB50B,EAAK0J,EAAOE,GACxC,KAAOF,EAAQE,GAAK,CAChB,IAAIirB,EAAM70B,EAAI0J,GACd1J,EAAI0J,GAAS1J,EAAI4J,GACjB5J,EAAI4J,GAAOirB,IACTnrB,IACAE,CACN,CACJ,CAMO,SAAS3L,EAAO+B,EAAK1D,GAGxB,IAFA,IAAIw4B,EAAYxpC,MAAMkP,QAAQ8B,GAAQA,EAAO,CAACA,GAC1C/O,EAASunC,EAAUvnC,OACdoH,EAAI,EAAGA,EAAIpH,EAAQoH,IACxBqL,EAAIA,EAAIzS,QAAUunC,EAAUngC,EAEpC,CAqCO,SAASksB,EAAOkU,EAAMC,GACzB,IAAIC,EAAOF,EAAKxnC,OAChB,GAAI0nC,IAASD,EAAKznC,OACd,OAAO,EAEX,IAAK,IAAIoH,EAAI,EAAGA,EAAIsgC,EAAMtgC,IACtB,GAAIogC,EAAKpgC,KAAOqgC,EAAKrgC,GACjB,OAAO,EAGf,OAAO,CACX,CAyCO,SAASugC,EAASl1B,EAAKm1B,EAAUC,GACpC,IAAIC,EAAUF,GAAYb,EAC1B,OAAOt0B,EAAIs1B,OAAM,SAAUC,EAAYl2B,GACnC,GAAc,IAAVA,EACA,OAAO,EAEX,IAAIm2B,EAAMH,EAAQr1B,EAAIX,EAAQ,GAAIk2B,GAClC,QAASC,EAAM,GAAMJ,GAAsB,IAARI,EACvC,GACJ,8IC5NO,SAASC,EAAOC,EAAWC,GAC9B,IAAKD,EACD,MAAM,IAAI,IAAeC,EAEjC,2FCOIC,EAAgB,oDAOhBC,EAAkB,4BAOf,SAASC,EAASC,GACrB,MAAqB,iBAAVA,EACAA,EAGA7mC,EAAS6mC,EAExB,CAuBO,IAYCC,EAIAC,EAhBGC,GAYHF,EAAQ,CAAC,EAITC,EAAY,EACT,SAKGviC,GACN,IAAIqiC,EACJ,GAAIC,EAAMt3B,eAAehL,GACrBqiC,EAAQC,EAAMtiC,OAEb,CACD,GAAIuiC,GApBS,KAoBoB,CAC7B,IAAIthC,EAAI,EACR,IAAK,IAAImiB,KAAOkf,EACM,IAAP,EAANrhC,cACMqhC,EAAMlf,KACXmf,EAGd,CACAF,EA2BZ,SAA6BriC,GACzB,IAAIuG,EAAGrD,EAAGhG,EAAGD,EAAGolC,EAIhB,GAHIF,EAAgBM,KAAKziC,KACrBA,EApFR,SAAmBqiC,GACf,IAAIK,EAAKp/B,SAASW,cAAc,OAEhC,GADAy+B,EAAGh8B,MAAM27B,MAAQA,EACM,KAAnBK,EAAGh8B,MAAM27B,MAAc,CACvB/+B,SAASq/B,KAAKv+B,YAAYs+B,GAC1B,IAAIE,EAAMlV,iBAAiBgV,GAAIL,MAE/B,OADA/+B,SAASq/B,KAAKh5B,YAAY+4B,GACnBE,CACX,CAEI,MAAO,EAEf,CAwEYC,CAAU7iC,IAEdkiC,EAAcO,KAAKziC,GAAI,CAEvB,IACI6C,EADAtK,EAAIyH,EAAEnG,OAAS,EAIfgJ,EADAtK,GAAK,EACD,EAGA,EAER,IAAIuqC,EAAiB,IAANvqC,GAAiB,IAANA,EAC1BgO,EAAI5M,SAASqG,EAAEwD,OAAO,EAAI,EAAIX,EAAGA,GAAI,IACrCK,EAAIvJ,SAASqG,EAAEwD,OAAO,EAAI,EAAIX,EAAGA,GAAI,IACrC3F,EAAIvD,SAASqG,EAAEwD,OAAO,EAAI,EAAIX,EAAGA,GAAI,IAEjC5F,EADA6lC,EACInpC,SAASqG,EAAEwD,OAAO,EAAI,EAAIX,EAAGA,GAAI,IAGjC,IAEC,GAALA,IACA0D,GAAKA,GAAK,GAAKA,EACfrD,GAAKA,GAAK,GAAKA,EACfhG,GAAKA,GAAK,GAAKA,EACX4lC,IACA7lC,GAAKA,GAAK,GAAKA,IAGvBolC,EAAQ,CAAC97B,EAAGrD,EAAGhG,EAAGD,EAAI,IAC1B,MAC+B,GAAtB+C,EAAEmJ,QAAQ,SAGf45B,EADAV,EAAQriC,EAAEuD,MAAM,GAAI,GAAGwD,MAAM,KAAKpC,IAAIq+B,SAGZ,GAArBhjC,EAAEmJ,QAAQ,UAEfk5B,EAAQriC,EAAEuD,MAAM,GAAI,GAAGwD,MAAM,KAAKpC,IAAIq+B,SAChCj6B,KAAK,GACXg6B,EAAUV,KAGV,QAAO,EAAO,IAElB,OAAOA,CACX,CA9EoBY,CAAoBjjC,GAC5BsiC,EAAMtiC,GAAKqiC,IACTE,CACN,CACA,OAAOF,CACV,GASE,SAASa,EAAQb,GACpB,OAAIzqC,MAAMkP,QAAQu7B,GACPA,EAGAG,EAAWH,EAE1B,CA+DO,SAASU,EAAUV,GAKtB,OAJAA,EAAM,IAAK,QAAOA,EAAM,GAAK,GAAO,EAAG,EAAG,KAC1CA,EAAM,IAAK,QAAOA,EAAM,GAAK,GAAO,EAAG,EAAG,KAC1CA,EAAM,IAAK,QAAOA,EAAM,GAAK,GAAO,EAAG,EAAG,KAC1CA,EAAM,IAAK,QAAMA,EAAM,GAAI,EAAG,GACvBA,CACX,CAKO,SAAS7mC,EAAS6mC,GACrB,IAAI97B,EAAI87B,EAAM,GACV97B,IAAU,EAAJA,KACNA,EAAKA,EAAI,GAAO,GAEpB,IAAIrD,EAAIm/B,EAAM,GACVn/B,IAAU,EAAJA,KACNA,EAAKA,EAAI,GAAO,GAEpB,IAAIhG,EAAImlC,EAAM,GAKd,OAJInlC,IAAU,EAAJA,KACNA,EAAKA,EAAI,GAAO,GAGb,QAAUqJ,EAAI,IAAMrD,EAAI,IAAMhG,EAAI,UADpB+P,IAAbo1B,EAAM,GAAmB,EAAIA,EAAM,IACQ,GACvD,8DC9LO,SAASc,EAAYd,GACxB,OAAIzqC,MAAMkP,QAAQu7B,IACP,QAASA,GAGTA,CAEf,iEC1BQx3B,mDADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAmJJ,QAtG6B,SAAUC,GAKnC,SAASgS,EAAQ/X,GACb,IAAI9N,EAAQ6T,EAAOzH,KAAKhN,OAASA,KAC7BqT,EAAU3E,EAAQ2E,QA8BtB,OA7BIA,GAAY3E,EAAQuD,QAAWoB,EAAQpD,MAAMkgB,gBAC7C9c,EAAQpD,MAAMkgB,cAAgB,QAMlCvvB,EAAMyS,QAAUA,GAAoB,KAKpCzS,EAAM+rC,QAAU,KAKhB/rC,EAAMuf,KAAO,KAKbvf,EAAMsb,aAAe,GACjBxN,EAAQqU,SACRniB,EAAMmiB,OAASrU,EAAQqU,QAEvBrU,EAAQuD,QACRrR,EAAMuxB,UAAUzjB,EAAQuD,QAErBrR,CACX,CA8DA,OAnGAyT,EAAUoS,EAAShS,GAyCnBgS,EAAQzhB,UAAUgS,gBAAkB,YAChC,QAAWhX,KAAKqT,SAChBoB,EAAOzP,UAAUgS,gBAAgBhK,KAAKhN,KAC1C,EAMAymB,EAAQzhB,UAAU6d,OAAS,WACvB,OAAO7iB,KAAKmgB,IAChB,EAQAsG,EAAQzhB,UAAUmP,OAAS,SAAUjG,GAC7BlO,KAAKmgB,OACL,QAAWngB,KAAKqT,SAEpB,IAAK,IAAI7I,EAAI,EAAGiL,EAAKzV,KAAKkc,aAAa9Y,OAAQoH,EAAIiL,IAAMjL,GACrD,QAAcxK,KAAKkc,aAAa1R,IAEpCxK,KAAKkc,aAAa9Y,OAAS,EAC3BpD,KAAKmgB,KAAOjS,EACRlO,KAAKmgB,QACQngB,KAAK2sC,QACZ3sC,KAAK2sC,QACLz+B,EAAIulB,gCACH9lB,YAAY3N,KAAKqT,SACpBrT,KAAK+iB,SAAW,MAChB/iB,KAAKkc,aAAa5J,MAAK,QAAOpE,EAAK,eAAyBlO,KAAK+iB,OAAQ/iB,OAE7EkO,EAAI6U,SAEZ,EAMA0D,EAAQzhB,UAAU+d,OAAS,SAAUyD,GAAY,EAUjDC,EAAQzhB,UAAUmtB,UAAY,SAAUlgB,GACpCjS,KAAK2sC,QACiB,iBAAX16B,EAAsBpF,SAASQ,eAAe4E,GAAUA,CACvE,EACOwU,CACX,CArG4B,CAqG1B,qEC5JMrS,oDADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAUAo4B,EAAS,CACT,mBACA,yBACA,sBAkNJ,SAASC,IACL,IAAIX,EAAOr/B,SAASq/B,KACpB,SAAUA,EAA8B,yBACnCA,EAA0B,qBAAKr/B,SAA8B,qBAC7Dq/B,EAAKY,mBAAqBjgC,SAASkgC,kBAC5C,CAIA,SAASC,IACL,SAAUngC,SAA6B,oBACnCA,SAA8B,qBAC9BA,SAASogC,kBACjB,CAKA,SAASC,EAAkB75B,GACnBA,EAAQy5B,kBACRz5B,EAAQy5B,oBAEHz5B,EAA6B,oBAClCA,EAA6B,sBAExBA,EAAiC,yBACtCA,EAAiC,yBAEzC,CA2BA,QAvNgC,SAAUoB,GAKtC,SAAS04B,EAAW93B,GAChB,IAAIzU,EAAQZ,KACR0O,EAAU2G,GAA4B,CAAC,GAC3CzU,EAAQ6T,EAAOzH,KAAKhN,KAAM,CACtBqT,QAASxG,SAASW,cAAc,OAChCyE,OAAQvD,EAAQuD,UACdjS,MAKAotC,mBACoB52B,IAAtB9H,EAAQhC,UAA0BgC,EAAQhC,UAAY,iBAC1D,IAAIqY,OAA0BvO,IAAlB9H,EAAQqW,MAAsBrW,EAAQqW,MAAQ,IAK1DnkB,EAAMysC,WACe,iBAAVtoB,EAAqBlY,SAASkb,eAAehD,GAASA,EACjE,IAAIuoB,OAAsC92B,IAAxB9H,EAAQ4+B,YAA4B5+B,EAAQ4+B,YAAc,IAK5E1sC,EAAM2sC,iBACqB,iBAAhBD,EACDzgC,SAASkb,eAAeulB,GACxBA,EAKV1sC,EAAM4sC,QAAU3gC,SAASW,cAAc,UACvC,IAAImX,EAAWjW,EAAQiW,SAAWjW,EAAQiW,SAAW,qBACrD/jB,EAAM6sC,cAAc7sC,EAAM4sC,QAASR,KACnCpsC,EAAM4sC,QAAQz6B,aAAa,OAAQ,UACnCnS,EAAM4sC,QAAQroB,MAAQR,EACtB/jB,EAAM4sC,QAAQ7/B,YAAY/M,EAAMysC,YAChCzsC,EAAM4sC,QAAQj8B,iBAAiB,UAAiB3Q,EAAMwkB,aAAatW,KAAKlO,IAAQ,GAChF,IAAIykB,EAAazkB,EAAMwsC,cACnB,IACA,KACA,IACA,KACA,KACEP,IAA8C,GAApB,MAC5Bx5B,EAAUzS,EAAMyS,QAapB,OAZAA,EAAQ3G,UAAY2Y,EACpBhS,EAAQ1F,YAAY/M,EAAM4sC,SAK1B5sC,EAAM8sC,WAAyBl3B,IAAjB9H,EAAQc,MAAqBd,EAAQc,KAKnD5O,EAAM+sC,QAAUj/B,EAAQ4T,OACjB1hB,CACX,CAyFA,OA1JAyT,EAAU84B,EAAY14B,GAsEtB04B,EAAWnoC,UAAUogB,aAAe,SAAUc,GAC1CA,EAAMlU,iBACNhS,KAAK4tC,mBACT,EAIAT,EAAWnoC,UAAU4oC,kBAAoB,WACrC,GAAKf,IAAL,CAGA,IAAI3+B,EAAMlO,KAAK6iB,SACf,GAAK3U,EAGL,GAAI8+B,IAuHJngC,SAASghC,eACThhC,SAASghC,iBAEJhhC,SAA2B,iBAChCA,SAA2B,mBAEtBA,SAA+B,sBACpCA,SAA+B,2BA3H1B,CACD,IAAIwG,EAEAA,EADArT,KAAK2tC,QAEuB,iBAAjB3tC,KAAK2tC,QACN9gC,SAASQ,eAAerN,KAAK2tC,SAC7B3tC,KAAK2tC,QAGLz/B,EAAI4kB,mBAEd9yB,KAAK0tC,MA6FrB,SAAmCr6B,GAC3BA,EAAiC,wBACjCA,EAAiC,0BAGjC65B,EAAkB75B,EAE1B,CAnGgBy6B,CAA0Bz6B,GAG1B65B,EAAkB75B,EAE1B,CAzBA,CA0BJ,EAIA85B,EAAWnoC,UAAU+oC,wBAA0B,WAC3C,IAAI7/B,EAAMlO,KAAK6iB,SACXmqB,KACAhtC,KAAKytC,cAAcztC,KAAKwtC,SAAS,IACjC,QAAYxtC,KAAKutC,iBAAkBvtC,KAAKqtC,YACxCrtC,KAAKmR,cA3JI,qBA8JTnR,KAAKytC,cAAcztC,KAAKwtC,SAAS,IACjC,QAAYxtC,KAAKqtC,WAAYrtC,KAAKutC,kBAClCvtC,KAAKmR,cA1JI,oBA4JTjD,GACAA,EAAIqnB,YAEZ,EAMA4X,EAAWnoC,UAAUyoC,cAAgB,SAAUp6B,EAAS26B,GACpD,IAAIC,EAAkBjuC,KAAKotC,cAAgB,QACvCc,EAAoBluC,KAAKotC,cAAgB,SACzCe,EAAgBH,EAAaC,EAAkBC,EACnD76B,EAAQ9G,UAAUwB,OAAOkgC,GACzB56B,EAAQ9G,UAAUwB,OAAOmgC,GACzB76B,EAAQ9G,UAAUqB,IAAIugC,EAC1B,EAQAhB,EAAWnoC,UAAUmP,OAAS,SAAUjG,GAEpC,GADAuG,EAAOzP,UAAUmP,OAAOnH,KAAKhN,KAAMkO,GAC/BA,EACA,IAAK,IAAI1D,EAAI,EAAGiL,EAAKm3B,EAAOxpC,OAAQoH,EAAIiL,IAAMjL,EAC1CxK,KAAKkc,aAAa5J,MAAK,QAAOzF,SAAU+/B,EAAOpiC,GAAIxK,KAAK+tC,wBAAyB/tC,MAG7F,EACOmtC,CACX,CA5J+B,CA4J7B,0EClOM/4B,mDADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAUA45B,EAAa,aAIbC,EAAoB,mBAyNxB,QA5LmC,SAAU55B,GAKzC,SAAS65B,EAAcj5B,GACnB,IAAIzU,EAAQZ,KACR0O,EAAU2G,GAA4B,CAAC,EACvChC,EAAUxG,SAASW,cAAc,OAyCrC,OAxCA6F,EAAQ3G,eACkB8J,IAAtB9H,EAAQhC,UAA0BgC,EAAQhC,UAAY,qBAC1D9L,EAAQ6T,EAAOzH,KAAKhN,KAAM,CACtBqT,QAASA,EACT0P,OAAQrU,EAAQqU,OAChB9Q,OAAQvD,EAAQuD,UACdjS,MACAuR,kBAAiB,QAAmB68B,GAAaxtC,EAAMyY,0BACzD3K,EAAQ6/B,kBACR3tC,EAAM4tC,oBAAoB9/B,EAAQ6/B,kBAElC7/B,EAAQ6K,YACR3Y,EAAM4Y,cAAc9K,EAAQ6K,YAMhC3Y,EAAM6tC,oBACwBj4B,IAA1B9H,EAAQggC,cAA8BhgC,EAAQggC,cAAgB,SAKlE9tC,EAAM+tC,oBAAsB/tC,EAAM6tC,eAKlC7tC,EAAMguC,cAAgBv7B,EAAQ5F,UAK9B7M,EAAMiuC,eAAiB,KAKvBjuC,EAAMsY,WAAa,KACZtY,CACX,CAwIA,OAzLAyT,EAAUi6B,EAAe75B,GAqDzB65B,EAActpC,UAAUqU,yBAA2B,WAC/CrZ,KAAKkZ,WAAa,IACtB,EASAo1B,EAActpC,UAAU8pC,oBAAsB,WAC1C,OAA6E9uC,KAAKiF,IAAIopC,EAC1F,EAQAC,EAActpC,UAAU6U,cAAgB,WACpC,OAAyE7Z,KAAKiF,IAAImpC,EACtF,EAKAE,EAActpC,UAAU+pC,gBAAkB,SAAU7oB,GAChD,IAAIhY,EAAMlO,KAAK6iB,SACf7iB,KAAKgvC,YAAY9gC,EAAI2D,cAAcqU,GACvC,EAKAooB,EAActpC,UAAUiqC,eAAiB,SAAU/oB,GAC/ClmB,KAAKgvC,YAAY,KACrB,EAQAV,EAActpC,UAAUmP,OAAS,SAAUjG,GAEvC,GADAuG,EAAOzP,UAAUmP,OAAOnH,KAAKhN,KAAMkO,GAC/BA,EAAK,CACL,IAAIC,EAAWD,EAAIe,cACnBjP,KAAKkc,aAAa5J,MAAK,QAAOnE,EAAU,gBAAuBnO,KAAK+uC,gBAAiB/uC,OACjFA,KAAK2uC,mBACL3uC,KAAKkc,aAAa5J,MAAK,QAAOnE,EAAU,eAAsBnO,KAAKivC,eAAgBjvC,MAE3F,CACJ,EAQAsuC,EAActpC,UAAUwpC,oBAAsB,SAAUU,GACpDlvC,KAAKyW,IAAI43B,EAAmBa,EAChC,EAQAZ,EAActpC,UAAUwU,cAAgB,SAAUD,GAC9CvZ,KAAKyW,IAAI23B,GAAY,IAAAnpC,KAAcsU,GACvC,EAKA+0B,EAActpC,UAAUgqC,YAAc,SAAU39B,GAC5C,IAAI89B,EAAOnvC,KAAKyuC,eAChB,GAAIp9B,GAASrR,KAAK6uC,eAAgB,CAC9B,IAAK7uC,KAAKkZ,WAAY,CAClB,IAAIK,EAAavZ,KAAK6Z,gBAElB7Z,KAAKkZ,WADLK,GACkB,IAAAO,6BAA4B9Z,KAAK6uC,eAAgBt1B,GAGjD,EAAAJ,iBAE1B,CACA,IACIlN,EADMjM,KAAK6iB,SACMwP,+BAA+BhhB,GACpD,GAAIpF,EAAY,CACZ,IAAIy6B,GAAiB,IAAAC,qBACjBD,IACA1mC,KAAKkZ,YAAa,IAAAY,6BAA4B9Z,KAAK6uC,eAAgBnI,IAEvE1mC,KAAKkZ,WAAWjN,EAAYA,GAC5B,IAAIsiC,EAAmBvuC,KAAK8uC,sBAExBK,EADAZ,EACOA,EAAiBtiC,GAGjBA,EAAWlH,UAE1B,CACJ,CACK/E,KAAK4uC,eAAiBO,IAASnvC,KAAK4uC,gBACrC5uC,KAAKqT,QAAQ5F,UAAY0hC,EACzBnvC,KAAK4uC,cAAgBO,EAE7B,EAOAb,EAActpC,UAAU+d,OAAS,SAAUyD,GACvC,IAAIvG,EAAauG,EAASvG,WACrBA,EAIGjgB,KAAK6uC,gBAAkB5uB,EAAWM,UAAUhH,aAC5CvZ,KAAK6uC,eAAiB5uB,EAAWM,UAAUhH,WAC3CvZ,KAAKkZ,WAAa,MALtBlZ,KAAK6uC,eAAiB,IAQ9B,EACOP,CACX,CA3LkC,CA2LhC,sFCnPMl6B,6DADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAcA46B,EAAa,QAMNxO,EAAQ,CACfyO,QAAS,UACTC,SAAU,WACVC,SAAU,WACVC,OAAQ,SACRC,GAAI,MAMJC,EAAiB,CAAC,EAAG,EAAG,GAKxBC,EAAc,KAAO,IA8ZzB,QA7X+B,SAAUl7B,GAKrC,SAASm7B,EAAUv6B,GACf,IAAIzU,EAAQZ,KACR0O,EAAU2G,GAA4B,CAAC,EACvC3I,OAAkC8J,IAAtB9H,EAAQhC,UAClBgC,EAAQhC,UACRgC,EAAQmhC,IACJ,eACA,gBA6DV,OA5DAjvC,EAAQ6T,EAAOzH,KAAKhN,KAAM,CACtBqT,QAASxG,SAASW,cAAc,OAChCuV,OAAQrU,EAAQqU,OAChB9Q,OAAQvD,EAAQuD,UACdjS,MAKA8vC,cAAgBjjC,SAASW,cAAc,OAC7C5M,EAAMkvC,cAAcpjC,UAAYA,EAAY,SAC5C9L,EAAMyS,QAAQ3G,UAAYA,EAAY,IAAM,KAC5C9L,EAAMyS,QAAQ1F,YAAY/M,EAAMkvC,eAKhClvC,EAAMmvC,WAAa,KAKnBnvC,EAAMovC,eAAiCx5B,IAArB9H,EAAQuhC,SAAyBvhC,EAAQuhC,SAAW,GAKtErvC,EAAM8iB,kBAAmB,EAKzB9iB,EAAMsvC,oBAAiB15B,EAKvB5V,EAAMguC,cAAgB,GACtBhuC,EAAM2Q,kBAAiB,QAAmB69B,GAAaxuC,EAAMuvC,qBAC7DvvC,EAAMwvC,SAAS1hC,EAAQ2hC,OAASzP,EAAM4O,QAKtC5uC,EAAM0vC,UAAY5hC,EAAQmhC,MAAO,EAKjCjvC,EAAM2vC,eAAiB7hC,EAAQ8hC,OAAS,EAKxC5vC,EAAM6vC,cAAgB/hC,EAAQrJ,OAAQ,EAKtCzE,EAAM8vC,KAAOhiC,EAAQiiC,UAAOn6B,EACrB5V,CACX,CAiTA,OA1XAyT,EAAUu7B,EAAWn7B,GAiFrBm7B,EAAU5qC,UAAU4rC,SAAW,WAC3B,OAAO5wC,KAAKiF,IAAImqC,EACpB,EAIAQ,EAAU5qC,UAAUmrC,oBAAsB,WACtCnwC,KAAKgmB,gBACT,EAOA4pB,EAAU5qC,UAAUorC,SAAW,SAAUC,GACrCrwC,KAAKyW,IAAI24B,EAAYiB,EACzB,EAMAT,EAAU5qC,UAAU6rC,OAAS,SAAUF,GACnC3wC,KAAK0wC,KAAOC,CAChB,EAIAf,EAAU5qC,UAAUghB,eAAiB,WACjC,IAAIzF,EAAYvgB,KAAK+vC,WACrB,GAAKxvB,EAAL,CAOA,IAAIvU,EAASuU,EAAUvU,OACnBuN,EAAagH,EAAUhH,WACvB82B,EAAQrwC,KAAK4wC,WACbE,EAAuBT,GAASzP,EAAMyO,QAAU,YAAoB,WACpE0B,GAAkB,IAAAC,oBAAmBz3B,EAAYgH,EAAUlE,WAAYrQ,EAAQ8kC,GAC/Eb,EAAYjwC,KAAKgwC,WAAahwC,KAAK0wC,MAAQf,GAAgBA,EAC3DsB,EAAehB,EAAWc,EAC1BG,EAAS,GACb,GAAIb,GAASzP,EAAMyO,QAAS,CACxB,IAAI8B,EAAkB,EAAAxQ,gBAAgB,cACtCsQ,GAAgBE,GACGA,EAAkB,IACjCD,EAAS,IACTH,GAAmB,MAEdE,EAAeE,GACpBD,EAAS,IACTH,GAAmB,IAGnBG,EAAS,GAEjB,MACSb,GAASzP,EAAM0O,SAChB2B,EAAe,OACfC,EAAS,KACTH,GAAmB,OAEdE,EAAe,UACpBC,EAAS,KACTH,GAAmB,QAGnBG,EAAS,KACTH,GAAmB,UAGlBV,GAASzP,EAAM2O,UACpBwB,GAAmB,KACnBG,EAAS,MAEJb,GAASzP,EAAM4O,OAChByB,EAAe,MACfC,EAAS,KACTH,GAAmB,KAEdE,EAAe,GACpBC,EAAS,KACTH,GAAmB,KAEdE,EAAe,IACpBC,EAAS,KAGTA,EAAS,KACTH,GAAmB,KAGlBV,GAASzP,EAAM6O,GAChBwB,EAAe,OACfC,EAAS,KACTH,GAAmB,OAEdE,EAAe,UACpBC,EAAS,KACTH,GAAmB,YAGnBG,EAAS,KACTH,GAAmB,YAIvB,QAAO,EAAO,IAIlB,IAFA,IACI/V,EAAO3vB,EAAO+lC,EAgBdjC,EAjBA3kC,EAAI,EAAIvI,KAAKC,MAAMD,KAAKN,IAAIsuC,EAAWc,GAAmB9uC,KAAKN,IAAI,OAE1D,CACTyvC,EAAenvC,KAAKC,MAAMsI,EAAI,GAC9B,IAAI6mC,EAAUpvC,KAAKI,IAAI,GAAI+uC,GAG3B,GAFApW,EAAQ0U,GAAiBllC,EAAI,EAAK,GAAK,GAAK6mC,EAC5ChmC,EAAQpJ,KAAKE,MAAM64B,EAAQ+V,GACvBtJ,MAAMp8B,GAGN,OAFArL,KAAKqT,QAAQpD,MAAMgU,QAAU,YAC7BjkB,KAAK0jB,kBAAmB,GAGvB,GAAIrY,GAAS4kC,EACd,QAEFzlC,CACN,CAGI2kC,EADAnvC,KAAKswC,UACEtwC,KAAKsxC,eAAejmC,EAAO2vB,EAAOkW,GAGlClW,EAAMuW,QAAQH,EAAe,GAAKA,EAAe,GAAK,IAAMF,EAEnElxC,KAAK4uC,eAAiBO,IACtBnvC,KAAK8vC,cAAcriC,UAAY0hC,EAC/BnvC,KAAK4uC,cAAgBO,GAErBnvC,KAAKkwC,gBAAkB7kC,IACvBrL,KAAK8vC,cAAc7/B,MAAM5E,MAAQA,EAAQ,KACzCrL,KAAKkwC,eAAiB7kC,GAErBrL,KAAK0jB,mBACN1jB,KAAKqT,QAAQpD,MAAMgU,QAAU,GAC7BjkB,KAAK0jB,kBAAmB,EA9G5B,MALQ1jB,KAAK0jB,mBACL1jB,KAAKqT,QAAQpD,MAAMgU,QAAU,OAC7BjkB,KAAK0jB,kBAAmB,EAmHpC,EAQAksB,EAAU5qC,UAAUssC,eAAiB,SAAUjmC,EAAOmmC,EAAON,GAKzD,IAJA,IAAIO,EAAW,OAASxvC,KAAKE,MAAMnC,KAAK0xC,yBAAyBC,iBAC7DC,EAAa,GACbC,EAAYxmC,EAAQrL,KAAKuwC,eACzBuB,EAAkB,UACbtnC,EAAI,EAAGA,EAAIxK,KAAKuwC,eAAgB/lC,IAC3B,IAANA,GAEAonC,EAAWt/B,KAAKtS,KAAK+xC,aAAa,WAAYvnC,IAElDonC,EAAWt/B,KAAK,sDAKZu/B,EALY,wBAQZC,EARY,YAYZ9xC,KAAK+xC,aAAa,WAAYvnC,IAE7BA,EAAI,GAAM,GAA6B,IAAxBxK,KAAKuwC,eACfvwC,KAAKgyC,eAAexnC,EAAGa,GAAO,EAAOmmC,EAAON,GAC5C,IACN,UACA1mC,IAAMxK,KAAKuwC,eAAiB,GAI5BqB,EAAWt/B,KAAKtS,KAAKgyC,eAAexnC,EAAI,EAAGa,GAAO,EAAMmmC,EAAON,IAI/DY,EADoB,YAApBA,EACkB,UAGA,UAsB1B,MALgB,gCAbZ9xC,KAAKywC,cAED,4CAGIplC,EACA,QACAomC,EACA,SAGO,IAKfG,EAAWr/B,KAAK,IAChB,QAER,EAOAq9B,EAAU5qC,UAAU+sC,aAAe,SAAUx3B,EAAU/P,GAEnD,MAAQ,sDAGJ+P,EAHI,UADe,aAAbA,EAA0B,GAAK,IAClC,aASX,EAUAq1B,EAAU5qC,UAAUgtC,eAAiB,SAAUxnC,EAAGa,EAAO4mC,EAAQT,EAAON,GACpE,IACIgB,GADe,IAAN1nC,EAAU,EAAIvI,KAAKE,MAAOqvC,EAAQxxC,KAAKuwC,eAAkB/lC,EAAI,KAAO,MAC9C,IAANA,EAAU,GAAK,IAAM0mC,GAGlD,MAAQ,wDAFW,IAAN1mC,GAAW,EAAKa,EAAQrL,KAAKuwC,gBAAmB,GAErD,mBAOG,IAAN/lC,EAAU,OAAS,UAPhB,iBADa,IAANA,EAAU,EAAKa,EAAQrL,KAAKuwC,eAAkB,GACrD,aAaH0B,EAAS5mC,EAAQ,KAAO,SAbrB,MAgBJ6mC,EACA,QACR,EAKAtC,EAAU5qC,UAAU0sC,sBAAwB,WACxC,IAAIr1B,GAAa,IAAA20B,oBAAmBhxC,KAAK+vC,WAAWx2B,WAAYvZ,KAAK+vC,WAAW1zB,WAAYrc,KAAK+vC,WAAW/jC,QACxG2kC,EAAM3wC,KAAK0wC,MAAQf,EACnBwC,EAAMnyC,KAAK+vC,WAAWx2B,WAAWsnB,mBAErC,OAAOn7B,WAAW2W,EAAWtX,YAAcotC,EADtB,MAC6CxB,CACtE,EAMAf,EAAU5qC,UAAU+d,OAAS,SAAUyD,GACnC,IAAIvG,EAAauG,EAASvG,WAKtBjgB,KAAK+vC,WAJJ9vB,EAIiBA,EAAWM,UAHX,KAKtBvgB,KAAKgmB,gBACT,EACO4pB,CACX,CA5X8B,CA4X5B,8LCxaK,SAAShiC,EAAI3B,EAAYwb,GAG5B,OAFAxb,EAAW,KAAOwb,EAAM,GACxBxb,EAAW,KAAOwb,EAAM,GACjBxb,CACX,CAQO,SAASmmC,EAAgBnmC,EAAYomC,GACxC,IAAIviC,EAAIuiC,EAAOC,YACXtmC,EAASqmC,EAAO1N,YAChBd,EAAK73B,EAAO,GACZ83B,EAAK93B,EAAO,GAGZ4T,EAFK3T,EAAW,GAEN43B,EACVhkB,EAFK5T,EAAW,GAEN63B,EACH,IAAPlkB,GAAmB,IAAPC,IACZD,EAAK,GAET,IAAIxT,EAAInK,KAAKuF,KAAKoY,EAAKA,EAAKC,EAAKA,GAGjC,MAAO,CAFCgkB,EAAM/zB,EAAI8P,EAAMxT,EAChB03B,EAAMh0B,EAAI+P,EAAMzT,EAE5B,CAaO,SAASmmC,EAAiBtmC,EAAYumC,GACzC,IAaIxwC,EAAGD,EAbH8hC,EAAK53B,EAAW,GAChB63B,EAAK73B,EAAW,GAChB8rB,EAAQya,EAAQ,GAChB/yB,EAAM+yB,EAAQ,GACd7uC,EAAKo0B,EAAM,GACXl0B,EAAKk0B,EAAM,GACX9zB,EAAKwb,EAAI,GACTtb,EAAKsb,EAAI,GACTG,EAAK3b,EAAKN,EACVkc,EAAK1b,EAAKN,EACV4uC,EAAe,IAAP7yB,GAAmB,IAAPC,EAClB,GACCD,GAAMikB,EAAKlgC,GAAMkc,GAAMikB,EAAKjgC,KAAQ+b,EAAKA,EAAKC,EAAKA,GAAM,GAchE,OAZI4yB,GAAS,GACTzwC,EAAI2B,EACJ5B,EAAI8B,GAEC4uC,GAAS,GACdzwC,EAAIiC,EACJlC,EAAIoC,IAGJnC,EAAI2B,EAAK8uC,EAAQ7yB,EACjB7d,EAAI8B,EAAK4uC,EAAQ5yB,GAEd,CAAC7d,EAAGD,EACf,CA8CO,SAAS2wC,EAAoBC,EAAaC,EAASC,GACtD,IAAIC,GAAoB,QAAOF,EAAU,IAAK,KAAO,IACjD5wC,EAAIC,KAAK2G,IAAI,KAAOkqC,GACpBC,EAAeF,GAAsB,EACrCjxC,EAAYK,KAAKI,IAAI,GAAI0wC,GACzBC,EAAM/wC,KAAKC,MAAMF,EAAI,MACrB47B,EAAM37B,KAAKC,OAAOF,EAAU,KAANgxC,GAAc,IACpCC,EAAMjxC,EAAU,KAANgxC,EAAmB,GAANpV,EAU3B,OATAqV,EAAMhxC,KAAKk/B,KAAK8R,EAAMrxC,GAAaA,IACxB,KACPqxC,EAAM,EACNrV,GAAO,GAEPA,GAAO,KACPA,EAAM,EACNoV,GAAO,GAEHA,EACJ,MACA,OAAUpV,EAAK,GACf,MACA,OAAUqV,EAAK,EAAGF,GAClB,KACsB,GAArBD,EACK,GACA,IAAMH,EAAYO,OAAOJ,EAAoB,EAAI,EAAI,GACnE,CA+CO,SAASpc,EAAOyc,EAAaC,GAEhC,IADA,IAAI1c,GAAS,EACJlsB,EAAI2oC,EAAY/vC,OAAS,EAAGoH,GAAK,IAAKA,EAC3C,GAAI2oC,EAAY3oC,IAAM4oC,EAAY5oC,GAAI,CAClCksB,GAAS,EACT,KACJ,CAEJ,OAAOA,CACX,CAmBO,SAAShO,EAAOzc,EAAYonC,GAC/B,IAAItM,EAAW9kC,KAAKiG,IAAImrC,GACpBrM,EAAW/kC,KAAKwF,IAAI4rC,GACpBrxC,EAAIiK,EAAW,GAAK86B,EAAW96B,EAAW,GAAK+6B,EAC/CjlC,EAAIkK,EAAW,GAAK86B,EAAW96B,EAAW,GAAK+6B,EAGnD,OAFA/6B,EAAW,GAAKjK,EAChBiK,EAAW,GAAKlK,EACTkK,CACX,CAkBO,SAASulC,EAAMvlC,EAAYulC,GAG9B,OAFAvlC,EAAW,IAAMulC,EACjBvlC,EAAW,IAAMulC,EACVvlC,CACX,CAMO,SAASqnC,EAAgBC,EAAQC,GACpC,IAAI5zB,EAAK2zB,EAAO,GAAKC,EAAO,GACxB3zB,EAAK0zB,EAAO,GAAKC,EAAO,GAC5B,OAAO5zB,EAAKA,EAAKC,EAAKA,CAC1B,CAMO,SAAS4zB,EAASF,EAAQC,GAC7B,OAAOvxC,KAAKuF,KAAK8rC,EAAgBC,EAAQC,GAC7C,CASO,SAASE,EAAyBznC,EAAYumC,GACjD,OAAOc,EAAgBrnC,EAAYsmC,EAAiBtmC,EAAYumC,GACpE,CA0EO,SAASmB,EAAM1nC,EAAYsN,GAC9B,GAAIA,EAAWgI,WAAY,CACvB,IAAIE,GAAa,IAAAC,UAASnI,EAAWiE,aACjCo2B,EAAaC,EAAc5nC,EAAYsN,EAAYkI,GACnDmyB,IACA3nC,EAAW,IAAM2nC,EAAanyB,EAEtC,CACA,OAAOxV,CACX,CAOO,SAAS4nC,EAAc5nC,EAAYsN,EAAYu6B,GAClD,IAAItyB,EAAmBjI,EAAWiE,YAC9Bo2B,EAAa,EACjB,GAAIr6B,EAAWgI,aACVtV,EAAW,GAAKuV,EAAiB,IAAMvV,EAAW,GAAKuV,EAAiB,IAAK,CAC9E,IAAIuyB,EAAoBD,IAAyB,IAAApyB,UAASF,GAC1DoyB,EAAa3xC,KAAKC,OAAO+J,EAAW,GAAKuV,EAAiB,IAAMuyB,EACpE,CACA,OAAOH,CACX,sGCvYO,IAAII,EAAe,YAOfC,EAAmB,gBAOnBC,EAAqB,kBAOrBC,EAAoB,iBAOpBC,EAAgB,aAQhBC,EAAkB,eAKzBC,EAAY,IAAI3xC,OAAO,CACvB,qDACA,4CACA,8DACA,gDACA,8EACA,gEACA,mCACF4P,KAAK,IAAK,KACRgiC,EAAsB,CACtB,QACA,UACA,SACA,OACA,aACA,UAQOC,EAAoB,SAAUC,GACrC,IAAI5xC,EAAQ4xC,EAAS5xC,MAAMyxC,GAC3B,IAAKzxC,EACD,OAAO,KASX,IAPA,IAAIoN,EAAsC,CACtC3B,WAAY,SACZoS,KAAM,QACNzQ,MAAO,SACPykC,OAAQ,SACRC,QAAS,UAEJnqC,EAAI,EAAGiL,EAAK8+B,EAAoBnxC,OAAQoH,EAAIiL,IAAMjL,EAAG,CAC1D,IAAI9J,EAAQmC,EAAM2H,EAAI,QACRgM,IAAV9V,IACAuP,EAAMskC,EAAoB/pC,IAAM9J,EAExC,CAEA,OADAuP,EAAM2kC,SAAW3kC,EAAM4kC,OAAOvkC,MAAM,QAC7BL,CACX,qHC3FO,SAAS6kC,EAAsBC,EAAWC,EAAYC,GACzD,IAAIv2B,EAASu2B,GAAkBA,EAAe7xC,OACxC6xC,EAAe/gC,QACf,KACI,IAAIghC,gBAAgBH,GAAa,IAAKC,GAAc,KACpDnoC,SAASW,cAAc,UAQjC,OAPIunC,IACAr2B,EAAOrT,MAAQ0pC,GAEfC,IACAt2B,EAAOzN,OAAS+jC,GAG4Bt2B,EAAOy2B,WAAW,KACtE,CAQO,SAASC,EAAW/hC,GACvB,IAAIhI,EAAQgI,EAAQtD,YAChBE,EAAQgnB,iBAAiB5jB,GAE7B,OADAhI,GAASnI,SAAS+M,EAAMolC,WAAY,IAAMnyC,SAAS+M,EAAMqlC,YAAa,IAE1E,CAQO,SAASC,EAAYliC,GACxB,IAAIpC,EAASoC,EAAQ/D,aACjBW,EAAQgnB,iBAAiB5jB,GAE7B,OADApC,GAAU/N,SAAS+M,EAAMulC,UAAW,IAAMtyC,SAAS+M,EAAMwlC,aAAc,IAE3E,CAKO,SAASC,EAAYC,EAASC,GACjC,IAAIC,EAASD,EAAQxiC,WACjByiC,GACAA,EAAOC,aAAaH,EAASC,EAErC,CAKO,SAASG,EAAWC,GACvB,OAAOA,GAAQA,EAAK5iC,WAAa4iC,EAAK5iC,WAAWF,YAAY8iC,GAAQ,IACzE,CAIO,SAASC,EAAeD,GAC3B,KAAOA,EAAKE,WACRF,EAAK9iC,YAAY8iC,EAAKE,UAE9B,CASO,SAASC,EAAgBH,EAAMI,GAElC,IADA,IAAIC,EAAcL,EAAKljC,WACdtI,EAAI,KAAWA,EAAG,CACvB,IAAI8rC,EAAWD,EAAY7rC,GACvB+rC,EAAWH,EAAS5rC,GAExB,IAAK8rC,IAAaC,EACd,MAGAD,IAAaC,IAIZD,EAKAC,EAMLP,EAAKxyB,aAAa+yB,EAAUD,IALxBN,EAAK9iC,YAAYojC,KACf9rC,GANFwrC,EAAKroC,YAAY4oC,GAWzB,CACJ,+BCxGO,SAASC,EAAOlsC,GACnB,OAAOrI,KAAKI,IAAIiI,EAAG,EACvB,CAOO,SAASmsC,EAAQnsC,GACpB,OAAO,EAAIksC,EAAO,EAAIlsC,EAC1B,CAOO,SAASosC,EAASpsC,GACrB,OAAO,EAAIA,EAAIA,EAAI,EAAIA,EAAIA,EAAIA,CACnC,CAOO,SAASqsC,EAAOrsC,GACnB,OAAOA,CACX,6HCGO,SAASssC,EAAO3kC,EAAQb,EAAMwc,EAAUipB,EAAUC,GAIrD,GAHID,GAAYA,IAAa5kC,IACzB2b,EAAWA,EAAS9e,KAAK+nC,IAEzBC,EAAU,CACV,IAAIC,EAAqBnpB,EACzBA,EAAW,WACP3b,EAAOP,oBAAoBN,EAAMwc,GACjCmpB,EAAmBj3C,MAAME,KAAMC,UACnC,CACJ,CACA,IAAI+2C,EAAY,CACZ/kC,OAAQA,EACRb,KAAMA,EACNwc,SAAUA,GAGd,OADA3b,EAAOV,iBAAiBH,EAAMwc,GACvBopB,CACX,CAqBO,SAASC,EAAWhlC,EAAQb,EAAMwc,EAAUipB,GAC/C,OAAOD,EAAO3kC,EAAQb,EAAMwc,EAAUipB,GAAU,EACpD,CAUO,SAASK,EAAcvqB,GACtBA,GAAOA,EAAI1a,SACX0a,EAAI1a,OAAOP,oBAAoBib,EAAIvb,KAAMub,EAAIiB,WAC7C,QAAMjB,GAEd,iDClCA,QAlD+B,WAI3B,SAASwqB,EAAU/lC,GAIfpR,KAAKkrB,mBAMLlrB,KAAKoR,KAAOA,EAMZpR,KAAKiS,OAAS,IAClB,CAeA,OAVAklC,EAAUnyC,UAAUgN,eAAiB,WACjChS,KAAKkrB,oBAAqB,CAC9B,EAKAisB,EAAUnyC,UAAU+M,gBAAkB,WAClC/R,KAAKkrB,oBAAqB,CAC9B,EACOisB,CACX,CArC8B,iDCN9B,SAMIC,OAAQ,SAMRr5B,MAAO,QACPs5B,KAAM,OACNC,MAAO,QACPC,YAAa,cACb5rB,MAAO,QACPC,SAAU,WACV4rB,UAAW,YACXC,SAAU,WACVje,KAAM,OACNke,MAAO,QACPC,QAAS,UACTC,SAAU,WACVC,KAAM,OACNC,OAAQ,SACRC,UAAW,YACXC,MAAO,2DCjCH5jC,yCADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GA+KJ,QApJ4B,SAAUC,GAKlC,SAASwjC,EAAOC,GACZ,IAAIt3C,EAAQ6T,EAAOzH,KAAKhN,OAASA,KAqBjC,OAhBAY,EAAMu3C,aAAeD,EAKrBt3C,EAAMw3C,iBAAmB,KAKzBx3C,EAAMy3C,aAAe,KAKrBz3C,EAAM03C,WAAa,KACZ13C,CACX,CAsHA,OAjJAyT,EAAU4jC,EAAQxjC,GAgClBwjC,EAAOjzC,UAAUuM,iBAAmB,SAAUH,EAAMwc,GAChD,GAAKxc,GAASwc,EAAd,CAGA,IAAI2qB,EAAYv4C,KAAKs4C,aAAet4C,KAAKs4C,WAAa,CAAC,GACnDE,EAAmBD,EAAUnnC,KAAUmnC,EAAUnnC,GAAQ,KACjB,IAAxConC,EAAiB9lC,QAAQkb,IACzB4qB,EAAiBlmC,KAAKsb,EAJ1B,CAMJ,EAWAqqB,EAAOjzC,UAAUmM,cAAgB,SAAU+U,GAEvC,IAAIuyB,EAAuB,iBAAVvyB,EAAqB,IAAI,KAAMA,GAASA,EACrD9U,EAAOqnC,EAAIrnC,KACVqnC,EAAIxmC,SACLwmC,EAAIxmC,OAASjS,KAAKm4C,cAAgBn4C,MAEtC,IACI04C,EADAH,EAAYv4C,KAAKs4C,YAAct4C,KAAKs4C,WAAWlnC,GAEnD,GAAImnC,EAAW,CACX,IAAII,EAAc34C,KAAKq4C,eAAiBr4C,KAAKq4C,aAAe,CAAC,GACzDO,EAAkB54C,KAAKo4C,mBAAqBp4C,KAAKo4C,iBAAmB,CAAC,GACnEhnC,KAAQunC,IACVA,EAAYvnC,GAAQ,EACpBwnC,EAAgBxnC,GAAQ,KAE1BunC,EAAYvnC,GACd,IAAK,IAAI5G,EAAI,EAAGiL,EAAK8iC,EAAUn1C,OAAQoH,EAAIiL,IAAMjL,EAO7C,IAAkB,KALdkuC,EADA,gBAAiBH,EAAU/tC,GACuC+tC,EAAU/tC,GAAIqE,YAAY4pC,GAGxBF,EAAU/tC,GAAIwC,KAAKhN,KAAMy4C,KAEtEA,EAAIvtB,mBAAoB,CAC/CwtB,GAAY,EACZ,KACJ,CAGJ,KADEC,EAAYvnC,GACY,IAAtBunC,EAAYvnC,GAAa,CACzB,IAAIynC,EAAKD,EAAgBxnC,GAEzB,WADOwnC,EAAgBxnC,GAChBynC,KACH74C,KAAK0R,oBAAoBN,EAAM,aAE5BunC,EAAYvnC,EACvB,CACA,OAAOsnC,CACX,CACJ,EAIAT,EAAOjzC,UAAUgS,gBAAkB,WAC/BhX,KAAKs4C,aAAc,QAAMt4C,KAAKs4C,WAClC,EAQAL,EAAOjzC,UAAU8zC,aAAe,SAAU1nC,GACtC,OAAQpR,KAAKs4C,YAAct4C,KAAKs4C,WAAWlnC,SAAUoF,CACzD,EAMAyhC,EAAOjzC,UAAU2e,YAAc,SAAUoQ,GACrC,QAAK/zB,KAAKs4C,aAGHvkB,EACDA,KAAY/zB,KAAKs4C,WACjB93C,OAAOgP,KAAKxP,KAAKs4C,YAAYl1C,OAAS,EAChD,EAKA60C,EAAOjzC,UAAU0M,oBAAsB,SAAUN,EAAMwc,GACnD,IAAI2qB,EAAYv4C,KAAKs4C,YAAct4C,KAAKs4C,WAAWlnC,GACnD,GAAImnC,EAAW,CACX,IAAIrjC,EAAQqjC,EAAU7lC,QAAQkb,IACf,IAAX1Y,IACIlV,KAAKo4C,kBAAoBhnC,KAAQpR,KAAKo4C,kBAEtCG,EAAUrjC,GAAS,OACjBlV,KAAKo4C,iBAAiBhnC,KAGxBmnC,EAAUpiC,OAAOjB,EAAO,GACC,IAArBqjC,EAAUn1C,eACHpD,KAAKs4C,WAAWlnC,IAIvC,CACJ,EACO6mC,CACX,CAnJ2B,CAmJzB,uhCCvKK,SAASc,EAAev2B,GAE3B,IADA,IAAIpG,EA2KG,CAACqd,IAAUA,KAAU,KAAW,KA1K9BjvB,EAAI,EAAGiL,EAAK+M,EAAYpf,OAAQoH,EAAIiL,IAAMjL,EAC/CwuC,EAAiB58B,EAAQoG,EAAYhY,IAEzC,OAAO4R,CACX,CAuBO,SAAS68B,EAAO78B,EAAQ1b,EAAOw4C,GAClC,OAAIA,GACAA,EAAW,GAAK98B,EAAO,GAAK1b,EAC5Bw4C,EAAW,GAAK98B,EAAO,GAAK1b,EAC5Bw4C,EAAW,GAAK98B,EAAO,GAAK1b,EAC5Bw4C,EAAW,GAAK98B,EAAO,GAAK1b,EACrBw4C,GAGA,CACH98B,EAAO,GAAK1b,EACZ0b,EAAO,GAAK1b,EACZ0b,EAAO,GAAK1b,EACZ0b,EAAO,GAAK1b,EAGxB,CAQO,SAASsX,EAAMoE,EAAQ88B,GAC1B,OAAIA,GACAA,EAAW,GAAK98B,EAAO,GACvB88B,EAAW,GAAK98B,EAAO,GACvB88B,EAAW,GAAK98B,EAAO,GACvB88B,EAAW,GAAK98B,EAAO,GAChB88B,GAGA98B,EAAOtP,OAEtB,CAOO,SAASqsC,EAAyB/8B,EAAQpa,EAAGD,GAChD,IAAI6d,EAAIC,EAmBR,OAjBID,EADA5d,EAAIoa,EAAO,GACNA,EAAO,GAAKpa,EAEZoa,EAAO,GAAKpa,EACZA,EAAIoa,EAAO,GAGX,GAWGwD,GARRC,EADA9d,EAAIqa,EAAO,GACNA,EAAO,GAAKra,EAEZqa,EAAO,GAAKra,EACZA,EAAIqa,EAAO,GAGX,GAEayD,CAC1B,CASO,SAASu5B,EAAmBh9B,EAAQnQ,GACvC,OAAOuwB,EAAWpgB,EAAQnQ,EAAW,GAAIA,EAAW,GACxD,CAaO,SAASotC,EAAeC,EAASC,GACpC,OAAQD,EAAQ,IAAMC,EAAQ,IAC1BA,EAAQ,IAAMD,EAAQ,IACtBA,EAAQ,IAAMC,EAAQ,IACtBA,EAAQ,IAAMD,EAAQ,EAC9B,CAUO,SAAS9c,EAAWpgB,EAAQpa,EAAGD,GAClC,OAAOqa,EAAO,IAAMpa,GAAKA,GAAKoa,EAAO,IAAMA,EAAO,IAAMra,GAAKA,GAAKqa,EAAO,EAC7E,CAQO,SAASo9B,EAAuBp9B,EAAQnQ,GAC3C,IAAImwB,EAAOhgB,EAAO,GACdkgB,EAAOlgB,EAAO,GACdigB,EAAOjgB,EAAO,GACdmgB,EAAOngB,EAAO,GACdpa,EAAIiK,EAAW,GACflK,EAAIkK,EAAW,GACfwtC,EAAe,YAgBnB,OAfIz3C,EAAIo6B,EACJqd,GAA8B,SAEzBz3C,EAAIq6B,IACTod,GAA8B,WAE9B13C,EAAIu6B,EACJmd,GAA8B,UAEzB13C,EAAIw6B,IACTkd,GAA8B,WAE9BA,IAAiB,cACjBA,EAAe,kBAEZA,CACX,CAMO,SAASC,IACZ,MAAO,CAACjgB,IAAUA,KAAU,KAAW,IAC3C,CAUO,SAASmD,EAAeR,EAAME,EAAMD,EAAME,EAAM2c,GACnD,OAAIA,GACAA,EAAW,GAAK9c,EAChB8c,EAAW,GAAK5c,EAChB4c,EAAW,GAAK7c,EAChB6c,EAAW,GAAK3c,EACT2c,GAGA,CAAC9c,EAAME,EAAMD,EAAME,EAElC,CAMO,SAAS3F,EAAoBsiB,GAChC,OAAOtc,EAAenD,IAAUA,KAAU,KAAW,IAAWyf,EACpE,CAMO,SAASS,EAA6B1tC,EAAYitC,GACrD,IAAIl3C,EAAIiK,EAAW,GACflK,EAAIkK,EAAW,GACnB,OAAO2wB,EAAe56B,EAAGD,EAAGC,EAAGD,EAAGm3C,EACtC,CAMO,SAASU,EAA8Bp3B,EAAa02B,GAEvD,OAAOW,EADMjjB,EAAoBsiB,GACA12B,EACrC,CASO,SAASs3B,EAAkCC,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQ6R,GAEpF,OAAOc,EADMpjB,EAAoBsiB,GACIa,EAAiB3Y,EAAQ3hB,EAAK4nB,EACvE,CAMO,SAAS4S,EAAwBC,EAAOhB,GAE3C,OAAOiB,EADMvjB,EAAoBsiB,GACNgB,EAC/B,CAQO,SAASxjB,EAAO4iB,EAASC,GAC5B,OAAQD,EAAQ,IAAMC,EAAQ,IAC1BD,EAAQ,IAAMC,EAAQ,IACtBD,EAAQ,IAAMC,EAAQ,IACtBD,EAAQ,IAAMC,EAAQ,EAC9B,CAQO,SAASa,EAAoBd,EAASC,EAASc,GAClD,OAAQp4C,KAAK2G,IAAI0wC,EAAQ,GAAKC,EAAQ,IAAMc,GACxCp4C,KAAK2G,IAAI0wC,EAAQ,GAAKC,EAAQ,IAAMc,GACpCp4C,KAAK2G,IAAI0wC,EAAQ,GAAKC,EAAQ,IAAMc,GACpCp4C,KAAK2G,IAAI0wC,EAAQ,GAAKC,EAAQ,IAAMc,CAC5C,CAQO,SAASvmC,EAAOwlC,EAASC,GAa5B,OAZIA,EAAQ,GAAKD,EAAQ,KACrBA,EAAQ,GAAKC,EAAQ,IAErBA,EAAQ,GAAKD,EAAQ,KACrBA,EAAQ,GAAKC,EAAQ,IAErBA,EAAQ,GAAKD,EAAQ,KACrBA,EAAQ,GAAKC,EAAQ,IAErBA,EAAQ,GAAKD,EAAQ,KACrBA,EAAQ,GAAKC,EAAQ,IAElBD,CACX,CAKO,SAASN,EAAiB58B,EAAQnQ,GACjCA,EAAW,GAAKmQ,EAAO,KACvBA,EAAO,GAAKnQ,EAAW,IAEvBA,EAAW,GAAKmQ,EAAO,KACvBA,EAAO,GAAKnQ,EAAW,IAEvBA,EAAW,GAAKmQ,EAAO,KACvBA,EAAO,GAAKnQ,EAAW,IAEvBA,EAAW,GAAKmQ,EAAO,KACvBA,EAAO,GAAKnQ,EAAW,GAE/B,CAMO,SAAS4tC,EAAkBz9B,EAAQoG,GACtC,IAAK,IAAIhY,EAAI,EAAGiL,EAAK+M,EAAYpf,OAAQoH,EAAIiL,IAAMjL,EAC/CwuC,EAAiB58B,EAAQoG,EAAYhY,IAEzC,OAAO4R,CACX,CASO,SAAS49B,EAAsB59B,EAAQ29B,EAAiB3Y,EAAQ3hB,EAAK4nB,GACxE,KAAOjG,EAAS3hB,EAAK2hB,GAAUiG,EAC3BiT,EAASl+B,EAAQ29B,EAAgB3Y,GAAS2Y,EAAgB3Y,EAAS,IAEvE,OAAOhlB,CACX,CAMO,SAAS+9B,EAAY/9B,EAAQ89B,GAChC,IAAK,IAAI1vC,EAAI,EAAGiL,EAAKykC,EAAM92C,OAAQoH,EAAIiL,IAAMjL,EACzCqvC,EAAkBz9B,EAAQ89B,EAAM1vC,IAEpC,OAAO4R,CACX,CAMO,SAASk+B,EAASl+B,EAAQpa,EAAGD,GAChCqa,EAAO,GAAKna,KAAK27B,IAAIxhB,EAAO,GAAIpa,GAChCoa,EAAO,GAAKna,KAAK27B,IAAIxhB,EAAO,GAAIra,GAChCqa,EAAO,GAAKna,KAAKm7B,IAAIhhB,EAAO,GAAIpa,GAChCoa,EAAO,GAAKna,KAAKm7B,IAAIhhB,EAAO,GAAIra,EACpC,CAUO,SAASw4C,EAAcn+B,EAAQ1Q,GAClC,IAAI8uC,EAEJ,OADAA,EAAM9uC,EAAS+uC,EAAcr+B,OAI7Bo+B,EAAM9uC,EAASgvC,EAAet+B,OAI9Bo+B,EAAM9uC,EAASivC,EAAYv+B,KANhBo+B,GAUXA,EAAM9uC,EAASkvC,EAAWx+B,OAInB,CACX,CAOO,SAASy+B,EAAQz+B,GACpB,IAAI0+B,EAAO,EAIX,OAHKrmB,EAAQrY,KACT0+B,EAAOp5B,EAAStF,GAAUe,EAAUf,IAEjC0+B,CACX,CAOO,SAASL,EAAcr+B,GAC1B,MAAO,CAACA,EAAO,GAAIA,EAAO,GAC9B,CAOO,SAASs+B,EAAet+B,GAC3B,MAAO,CAACA,EAAO,GAAIA,EAAO,GAC9B,CAOO,SAASuoB,EAAUvoB,GACtB,MAAO,EAAEA,EAAO,GAAKA,EAAO,IAAM,GAAIA,EAAO,GAAKA,EAAO,IAAM,EACnE,CAOO,SAAS2+B,EAAU3+B,EAAQ4+B,GAC9B,IAAI/uC,EAgBJ,OAfI+uC,IAAW,gBACX/uC,EAAawuC,EAAcr+B,GAEtB4+B,IAAW,iBAChB/uC,EAAayuC,EAAet+B,GAEvB4+B,IAAW,aAChB/uC,EAAa2uC,EAAWx+B,GAEnB4+B,IAAW,cAChB/uC,EAAa0uC,EAAYv+B,IAGzB,QAAO,EAAO,IAEXnQ,CACX,CAMO,SAASgvC,EAAgB3B,EAASC,GACrC,IAAInd,EAAOn6B,KAAK27B,IAAI0b,EAAQ,GAAIC,EAAQ,IACpCjd,EAAOr6B,KAAK27B,IAAI0b,EAAQ,GAAIC,EAAQ,IAGxC,OAFWt3C,KAAKm7B,IAAIkc,EAAQ,GAAIC,EAAQ,IAEzBnd,IADJn6B,KAAKm7B,IAAIkc,EAAQ,GAAIC,EAAQ,IACTjd,EACnC,CASO,SAAS/F,EAAkBvqB,EAAQqQ,EAAYsE,EAAUD,EAAMw4B,GAClE,IAAIt5B,EAAMvD,EAAaqE,EAAK,GAAM,EAC9Bb,EAAMxD,EAAaqE,EAAK,GAAM,EAC9Bw6B,EAAcj5C,KAAKiG,IAAIyY,GACvBw6B,EAAcl5C,KAAKwF,IAAIkZ,GACvBy6B,EAAOx7B,EAAKs7B,EACZG,EAAOz7B,EAAKu7B,EACZG,EAAOz7B,EAAKq7B,EACZK,EAAO17B,EAAKs7B,EACZn5C,EAAIgK,EAAO,GACXjK,EAAIiK,EAAO,GACX63B,EAAK7hC,EAAIo5C,EAAOG,EAChB53C,EAAK3B,EAAIo5C,EAAOG,EAChBt3C,EAAKjC,EAAIo5C,EAAOG,EAChBC,EAAKx5C,EAAIo5C,EAAOG,EAChBzX,EAAK/hC,EAAIs5C,EAAOC,EAChBz3C,EAAK9B,EAAIs5C,EAAOC,EAChBn3C,EAAKpC,EAAIs5C,EAAOC,EAChBG,EAAK15C,EAAIs5C,EAAOC,EACpB,OAAO1e,EAAe36B,KAAK27B,IAAIiG,EAAIlgC,EAAIM,EAAIu3C,GAAKv5C,KAAK27B,IAAIkG,EAAIjgC,EAAIM,EAAIs3C,GAAKx5C,KAAKm7B,IAAIyG,EAAIlgC,EAAIM,EAAIu3C,GAAKv5C,KAAKm7B,IAAI0G,EAAIjgC,EAAIM,EAAIs3C,GAAKvC,EAClI,CAOO,SAAS/7B,EAAUf,GACtB,OAAOA,EAAO,GAAKA,EAAO,EAC9B,CAMO,SAASs/B,EAAoBpC,EAASC,GAEzC,OAAOsB,EADYc,EAAgBrC,EAASC,GAEhD,CASO,SAASoC,EAAgBrC,EAASC,EAASL,GAC9C,IAAI0C,EAAe1C,GA1VZ,CAACzf,IAAUA,KAAU,KAAW,KAwXvC,OA7BIkD,EAAW2c,EAASC,IAChBD,EAAQ,GAAKC,EAAQ,GACrBqC,EAAa,GAAKtC,EAAQ,GAG1BsC,EAAa,GAAKrC,EAAQ,GAE1BD,EAAQ,GAAKC,EAAQ,GACrBqC,EAAa,GAAKtC,EAAQ,GAG1BsC,EAAa,GAAKrC,EAAQ,GAE1BD,EAAQ,GAAKC,EAAQ,GACrBqC,EAAa,GAAKtC,EAAQ,GAG1BsC,EAAa,GAAKrC,EAAQ,GAE1BD,EAAQ,GAAKC,EAAQ,GACrBqC,EAAa,GAAKtC,EAAQ,GAG1BsC,EAAa,GAAKrC,EAAQ,IAI9B3iB,EAAoBglB,GAEjBA,CACX,CAKO,SAASC,EAAUz/B,GACtB,OAAOsF,EAAStF,GAAUe,EAAUf,EACxC,CAOO,SAASvM,EAAQuM,GACpB,MAAO,CAACA,EAAO,GAAKA,EAAO,GAAIA,EAAO,GAAKA,EAAO,GACtD,CAOO,SAASw+B,EAAWx+B,GACvB,MAAO,CAACA,EAAO,GAAIA,EAAO,GAC9B,CAOO,SAASu+B,EAAYv+B,GACxB,MAAO,CAACA,EAAO,GAAIA,EAAO,GAC9B,CAOO,SAASsF,EAAStF,GACrB,OAAOA,EAAO,GAAKA,EAAO,EAC9B,CAQO,SAASugB,EAAW2c,EAASC,GAChC,OAAQD,EAAQ,IAAMC,EAAQ,IAC1BD,EAAQ,IAAMC,EAAQ,IACtBD,EAAQ,IAAMC,EAAQ,IACtBD,EAAQ,IAAMC,EAAQ,EAC9B,CAOO,SAAS9kB,EAAQrY,GACpB,OAAOA,EAAO,GAAKA,EAAO,IAAMA,EAAO,GAAKA,EAAO,EACvD,CAMO,SAAS0/B,EAAe1/B,EAAQ88B,GACnC,OAAIA,GACAA,EAAW,GAAK98B,EAAO,GACvB88B,EAAW,GAAK98B,EAAO,GACvB88B,EAAW,GAAK98B,EAAO,GACvB88B,EAAW,GAAK98B,EAAO,GAChB88B,GAGA98B,CAEf,CAKO,SAAS2/B,EAAgB3/B,EAAQ1b,GACpC,IAAIu7B,GAAW7f,EAAO,GAAKA,EAAO,IAAM,GAAM1b,EAAQ,GAClDw7B,GAAW9f,EAAO,GAAKA,EAAO,IAAM,GAAM1b,EAAQ,GACtD0b,EAAO,IAAM6f,EACb7f,EAAO,IAAM6f,EACb7f,EAAO,IAAM8f,EACb9f,EAAO,IAAM8f,CACjB,CASO,SAAS8f,EAAkB5/B,EAAQ2b,EAAOtY,GAC7C,IAAIkd,GAAa,EACbsf,EAAWzC,EAAuBp9B,EAAQ2b,GAC1CmkB,EAAS1C,EAAuBp9B,EAAQqD,GAC5C,GAAIw8B,IAAa,kBACbC,IAAW,iBACXvf,GAAa,MAEZ,CACD,IAAIP,EAAOhgB,EAAO,GACdkgB,EAAOlgB,EAAO,GACdigB,EAAOjgB,EAAO,GACdmgB,EAAOngB,EAAO,GACd+/B,EAASpkB,EAAM,GACfqkB,EAASrkB,EAAM,GACfskB,EAAO58B,EAAI,GACX68B,EAAO78B,EAAI,GACX88B,GAASD,EAAOF,IAAWC,EAAOF,GAClCn6C,OAAI,EAAQD,OAAI,EACbm6C,EAAS,aAAyBD,EAAW,aAGhDtf,GADA36B,EAAIq6C,GAAQC,EAAO/f,GAAQggB,IACTngB,GAAQp6B,GAAKq6B,GAE9BM,KACEuf,EAAS,YACVD,EAAW,YAGbtf,GADA56B,EAAIu6C,GAAQD,EAAOhgB,GAAQkgB,IACTjgB,GAAQv6B,GAAKw6B,GAE9BI,KACEuf,EAAS,YACVD,EAAW,YAGbtf,GADA36B,EAAIq6C,GAAQC,EAAOhgB,GAAQigB,IACTngB,GAAQp6B,GAAKq6B,GAE9BM,KACEuf,EAAS,WACVD,EAAW,WAGbtf,GADA56B,EAAIu6C,GAAQD,EAAOjgB,GAAQmgB,IACTjgB,GAAQv6B,GAAKw6B,EAEvC,CACA,OAAOI,CACX,CAYO,SAAS5hB,EAAeqB,EAAQogC,EAAatD,EAAYuD,GAC5D,IAAIj6B,EAAc,GAClB,GAAIi6B,EAAY,EAGZ,IAFA,IAAIpxC,EAAQ+Q,EAAO,GAAKA,EAAO,GAC3BnL,EAASmL,EAAO,GAAKA,EAAO,GACvB5R,EAAI,EAAGA,EAAIiyC,IAAajyC,EAC7BgY,EAAYlQ,KAAK8J,EAAO,GAAM/Q,EAAQb,EAAKiyC,EAAWrgC,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAMnL,EAASzG,EAAKiyC,EAAWrgC,EAAO,GAAM/Q,EAAQb,EAAKiyC,EAAWrgC,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAMnL,EAASzG,EAAKiyC,QAI5Mj6B,EAAc,CACVpG,EAAO,GACPA,EAAO,GACPA,EAAO,GACPA,EAAO,GACPA,EAAO,GACPA,EAAO,GACPA,EAAO,GACPA,EAAO,IAGfogC,EAAYh6B,EAAaA,EAAa,GAGtC,IAFA,IAAIk6B,EAAK,GACLC,EAAK,GACO3sC,GAAPxF,EAAI,EAAOgY,EAAYpf,QAAQoH,EAAIwF,EAAGxF,GAAK,EAChDkyC,EAAGpqC,KAAKkQ,EAAYhY,IACpBmyC,EAAGrqC,KAAKkQ,EAAYhY,EAAI,IAE5B,OArtBJ,SAA4BkyC,EAAIC,EAAIzD,GAKhC,OAAOtc,EAJI36B,KAAK27B,IAAI99B,MAAM,KAAM48C,GACrBz6C,KAAK27B,IAAI99B,MAAM,KAAM68C,GACrB16C,KAAKm7B,IAAIt9B,MAAM,KAAM48C,GACrBz6C,KAAKm7B,IAAIt9B,MAAM,KAAM68C,GACczD,EAClD,CA+sBW0D,CAAmBF,EAAIC,EAAIzD,EACtC,CASO,SAASvF,EAAMv3B,EAAQ7C,GAC1B,IAAIiI,EAAmBjI,EAAWiE,YAC9BxR,EAAS24B,EAAUvoB,GACvB,GAAI7C,EAAWgI,aACVvV,EAAO,GAAKwV,EAAiB,IAAMxV,EAAO,IAAMwV,EAAiB,IAAK,CACvE,IAAIC,EAAaC,EAASF,GAEtB4f,EADan/B,KAAKC,OAAO8J,EAAO,GAAKwV,EAAiB,IAAMC,GACtCA,EAC1BrF,EAAO,IAAMglB,EACbhlB,EAAO,IAAMglB,CACjB,CACA,OAAOhlB,CACX,gDCpwBA,SACI2R,YAAa,cACbE,aAAc,eACdI,SAAU,WACVE,UAAW,2DCJf,SACIsuB,QAAS,EACTC,aAAc,EACdC,MAAO,EACPC,MAAO,EACPC,MAAO,EACPC,KAAM,gHCwLV,QA3ImC,WAC/B,SAASC,IAKLn9C,KAAKo9C,eAAiB,KAKtBp9C,KAAKq9C,yBAA2B,IACpC,CA6HA,OArHAF,EAAcn4C,UAAUs4C,eAAiB,SAAUh7B,EAAQjN,GACvD,IAAI3G,EACJ,GAAI2G,EAAa,CACb,IAAI+nC,EAAiB/nC,EAAY+nC,gBAC3B,IAAAn4C,KAAcoQ,EAAY+nC,gBAC1Bp9C,KAAKu9C,eAAej7B,GACtBjN,EAAY+G,QACZghC,GACAA,EAAexM,aAAe,kBAC9BwM,GAAiB,IAAAn4C,KAAcm4C,IAChBI,eAAenoC,EAAY+G,QAE9C1N,EAAU,CACN0uC,eAAgBA,EAChBK,kBAAmBpoC,EAAYooC,kBAEvC,CACA,OAAOz9C,KAAK09C,aAAahvC,EAC7B,EAUAyuC,EAAcn4C,UAAU04C,aAAe,SAAUhvC,GAC7C,OAAO,QAAO,CACV0uC,eAAgBp9C,KAAKo9C,eACrBK,kBAAmBz9C,KAAKq9C,0BACzB3uC,EACP,EAKAyuC,EAAcn4C,UAAUwhC,QAAU,WAC9B,OAAO,SACX,EASA2W,EAAcn4C,UAAU24C,YAAc,SAAUr7B,EAAQjN,GACpD,OAAO,SACX,EASA8nC,EAAcn4C,UAAU44C,aAAe,SAAUt7B,EAAQjN,GACrD,OAAO,SACX,EASA8nC,EAAcn4C,UAAU64C,aAAe,SAAUv7B,EAAQjN,GACrD,OAAO,SACX,EAQA8nC,EAAcn4C,UAAUu4C,eAAiB,SAAUj7B,GAC/C,OAAO,SACX,EASA66B,EAAcn4C,UAAU84C,aAAe,SAAU38B,EAAS9L,GACtD,OAAO,SACX,EASA8nC,EAAcn4C,UAAU+4C,cAAgB,SAAUxrB,EAAUld,GACxD,OAAO,SACX,EASA8nC,EAAcn4C,UAAUg5C,cAAgB,SAAUpmC,EAAUvC,GACxD,OAAO,SACX,EACO8nC,CACX,CA1IkC,GAkJ3B,SAASc,EAA6BrmC,EAAUsmC,EAAO7oC,GAC1D,IAMI8oC,EANAV,EAAoBpoC,GAClB,IAAApQ,KAAcoQ,EAAYooC,mBAC1B,KACFL,EAAiB/nC,GACf,IAAApQ,KAAcoQ,EAAY+nC,gBAC1B,KAUN,GALIe,EAHAV,GACAL,KACC,IAAAgB,YAAqBX,EAAmBL,IAC1Bc,EAAQtmC,EAASI,QAAUJ,GAAU2P,UAAU22B,EAAQT,EAAoBL,EAAgBc,EAAQd,EAAiBK,GAGrH7lC,EAEdsmC,GACA7oC,QACuDmB,IAA3B,EAAc6nC,SAAwB,CAClE,IAAIC,EAAUr8C,KAAKI,IAAI,GACK,EAAcg8C,UAYtCF,IAAgBvmC,IAChBumC,EAAcvmC,EAASI,SAE3BmmC,EAAYpjC,gBATI,SAAUyH,GACtB,IAAK,IAAIhY,EAAI,EAAGiL,EAAK+M,EAAYpf,OAAQoH,EAAIiL,IAAMjL,EAC/CgY,EAAYhY,GAAKvI,KAAKE,MAAMqgB,EAAYhY,GAAK8zC,GAAWA,EAE5D,OAAO97B,CACX,GAKJ,CACA,OAAO27B,CACX,CAMO,SAASI,EAA2BniC,EAAQ/G,GAC/C,IAAIooC,EAAoBpoC,GAClB,IAAApQ,KAAcoQ,EAAYooC,mBAC1B,KACFL,EAAiB/nC,GACf,IAAApQ,KAAcoQ,EAAY+nC,gBAC1B,KACN,OAAIK,GACAL,KACC,IAAAgB,YAAqBX,EAAmBL,IAClC,IAAAoB,iBAAgBpiC,EAAQghC,EAAgBK,GAGxCrhC,CAEf,gDCjQA,SACIqiC,aAAc,cACdC,KAAM,OACNC,KAAM,OACNC,IAAK,qECTDxqC,0HADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAqBAqqC,EAAiB,CACjB,KACA,oCACA,qCAYAC,EAAiB,CACjB,IAAOC,EACP,IAAOC,EACP,IAAOC,GAOPC,GAAc,QAAgBL,EAAgB,CAC9C,KAAO,QAAgBE,GACvB,KAAO,QAAgBC,GACvB,KAAO,QAAgBC,KAOvBE,GAAe,QAAgBN,EAAgB,CAC/C,MAAQ,QAAyB,KAAY,YAC7C,MAAQ,QAAyB,KAAY,cAO7CO,GAAkB,QAAgBP,EAAgB,CAClD,KAAO,SAopBX,SAAkB7I,EAAM70B,EAASk+B,GAC7B,IAAI3wC,EAA8D2wC,EAAY,GAC1EvnC,EAAaqJ,EAAQjJ,gBACrB5Y,EAAU,CAAE02C,KAAMA,GACtB12C,EAAoB,WAAIwY,EACxB,IAAIF,EAAWuJ,EAAQ9I,cACvB,GAAIT,EAAS4uB,WAAa,sBAA0B,CAChD,IAAI8Y,GAAwC,QAA6B1nC,GAAU,EAAMlJ,GACzFpP,EAAwB,eAAIggD,EAAWC,YACvCznC,EAAkB,MAAIwnC,EAAWE,gBACrC,CACA,IAAIpsC,EAAaisC,EAAYA,EAAYj8C,OAAS,GAAG4yC,KACjDyJ,EAAcC,EAAatsC,EAAWusC,cACtCvyB,GAAS,QAAatV,EAAY2nC,IACtC,QAAoBngD,EAASsgD,EAAiB,KAA8BxyB,EAAQiyB,EAAaI,EACrG,IAlqBI,KAAO,SAwqBX,SAAkBzJ,EAAM70B,EAASk+B,GAC7B,IAAI3wC,EAA8D2wC,EAAY,GAC1EvnC,EAAaqJ,EAAQjJ,gBAErB5Y,EAAU,CAAE02C,KAAMA,GACtB12C,EAAoB,WAAIwY,EACxB,IAAIF,EAAWuJ,EAAQ9I,cACvB,GAAIT,EAAS4uB,WAAa,4BAAgC,CACtD,IAAIqZ,GAAkD,QAA6BjoC,GAAU,EAAMlJ,GACnGoJ,EAAmB,OAAI+nC,EAAgBC,gBAC3C,CACA,IAAI1sC,EAAaisC,EAAYA,EAAYj8C,OAAS,GAAG4yC,KACjDyJ,EAAcM,EAAa3sC,EAAWusC,cACtCvyB,GAAS,QAAatV,EAAY2nC,IACtC,QAAoBngD,EAAS0gD,EAAiB,KAA8B5yB,EAAQiyB,EAAaI,EACrG,IAtrBI,KAAO,SAwsBX,SAAkBzJ,EAAM70B,EAASk+B,GAC7B,IAAI3wC,EAA8D2wC,EAAY,GAC1E//C,EAAU+/C,EAAYA,EAAYj8C,OAAS,GAC/C9D,EAAoB,WAAI6hB,EAAQjJ,gBAChC,IAAIN,EAAWuJ,EAAQ9I,cACvB,GAAIT,EAAS4uB,WAAa,gBAAoB,CAC1C,IAAIyZ,GAA8B,QAA6BroC,GAAU,EAAMlJ,GAC/EpP,EAAwB,eAAI2gD,EAAMV,YAClCW,EAAalK,EAAMiK,EAAMT,iBAAkBH,EAC/C,CACJ,MAlrBIc,EAAqB,SAAU1rC,GAK/B,SAAS0rC,EAAI9qC,GACT,IAAIzU,EAAQ6T,EAAOzH,KAAKhN,OAASA,KAC7B0O,EAAU2G,GAA4B,CAAC,EAU3C,OANAzU,EAAMw8C,gBAAiB,IAAAn4C,KAAc,aAKrCrE,EAAMw/C,gBAAkB1xC,EAAQ2xC,eACzBz/C,CACX,CAwFA,OAzGAyT,EAAU8rC,EAAK1rC,GAsBf0rC,EAAIn7C,UAAUs7C,sBAAwB,SAAU/tB,GACvCA,IACDA,EAAW,IAEf,IAAK,IAAI/nB,EAAI,EAAGiL,EAAK8c,EAASnvB,OAAQoH,EAAIiL,IAAMjL,EAAG,CAC/C,IAAI2W,EAAUoR,EAAS/nB,GACvB,GAAIxK,KAAKogD,gBAAiB,CACtB,IAAIG,EAAiBp/B,EAAQlc,IAAI,oBAAsB,KACvDjF,KAAKogD,gBAAgBj/B,EAASo/B,EAClC,CACAp/B,EAAQ1K,IAAI,uBAAmBD,EACnC,CACJ,EAMA2pC,EAAIn7C,UAAUw7C,oBAAsB,SAAUxK,EAAM3gC,GAChD,KAAK,QAASwpC,EAAgB7I,EAAK2J,cAC/B,OAAO,KAEX,IAAIc,EAAgB3B,EAAe9I,EAAK0K,WACxC,IAAKD,EACD,OAAO,KAEX,IAAIt/B,EAAUs/B,EAAczK,EAAM,CAC9Bh2C,KAAKs9C,eAAetH,EAAM3gC,KAE9B,OAAK8L,GAGLnhB,KAAKsgD,sBAAsB,CAACn/B,IACrBA,GAHI,IAIf,EAMAg/B,EAAIn7C,UAAU27C,qBAAuB,SAAU3K,EAAM3gC,GACjD,KAAK,QAASwpC,EAAgB7I,EAAK2J,cAC/B,MAAO,GAEX,GAAsB,OAAlB3J,EAAK0K,UAAoB,CAEzB,IAAInuB,GAAW,OAAgB,GAAI2sB,EAAalJ,EAAM,CAClDh2C,KAAKs9C,eAAetH,EAAM3gC,KAE9B,OAAIkd,GACAvyB,KAAKsgD,sBAAsB/tB,GACpBA,GAGA,EAEf,CACA,MAAO,EACX,EAWA4tB,EAAIn7C,UAAU47C,kBAAoB,SAAUruB,EAAUld,GAClDA,EAAcrV,KAAK09C,aAAaroC,GAEhC,IAAIwrC,GAAM,IAAA11C,GAAgB,oCAAqC,OAS/D,OAPA01C,EAAIC,eADW,gCACc,YAAa,MAC1CD,EAAIC,eAAe,KAAyB,qBAxK9B,+EAyKdD,EAAI9tC,aAAa,UAAW,OAC5B8tC,EAAI9tC,aAAa,UAAW,eAC5B,QAEA,CAAGijC,KAAM6K,GAAQzB,EAAiB2B,EAAkBxuB,EAAU,CAACld,IACxDwrC,CACX,EACOV,CACX,CA3GwB,CA2GtB,KAMEa,GAAc,QAAgBnC,EAAgB,CAC9C,MAAQ,QAAyB,MACjC,KAAO,QAAyB,MAChC,MAAQ,QAAyB,MACjC,KAAO,QAAyB,MAChC,KAAQoC,EACR,QAAU,QAAyB,MACnC,WAAcC,EACd,MAAQ,QAAyB,MACjC,MA6UJ,SAAoBlL,EAAMqJ,GACtB,IAAIjyB,GAAS,OAAgB,CAAC,EAAG+zB,EAAenL,EAAMqJ,GACtD,GAAIjyB,EAAQ,CACR,IAAIg0B,EAAoC/B,EAAYA,EAAYj8C,OAAS,GAGzEi+C,EAFoDD,EAA4B,gBAC9BA,EAA0B,cAC3BpL,EAAM5oB,EAC3D,CACJ,IA9UI+zB,GAAgB,QAAgBtC,EAAgB,CAChD,KAAO,QAAyB,MAChC,MAAQ,QAAyB,QAOjCyC,GAAc,QAAgBzC,EAAgB,CAC9C,MAAQ,QAAyB,MACjC,KAAO,QAAyB,MAChC,MAAQ,QAAyB,MACjC,KAAO,QAAyB,MAChC,KAAQoC,EACR,QAAU,QAAyB,MACnC,MAAQ,QAAyB,MACjC,WAAcC,EACd,OA8UJ,SAAqBlL,EAAMqJ,GACvB,IAAIjyB,EAAgCiyB,EAAYA,EAAYj8C,OAAS,IACrE,QAAUm+C,EAAgBvL,EAAMqJ,GAChC,IAAItF,EAEH3sB,EAAyB,gBACeA,EAAc,KAClD9a,KAAKynC,EAAgB32C,OAC9B,IA/UIm+C,GAAiB,QAAgB1C,EAAgB,CACjD,MAyTJ,SAAoB7I,EAAMqJ,GACtB,IAAIjyB,GAAS,OAAgB,CAAC,EAAGo0B,EAAexL,EAAMqJ,GACtD,GAAIjyB,EAAQ,CACR,IAAIq0B,EAAoCpC,EAAYA,EAAYj8C,OAAS,GAGzEi+C,EAFoDI,EAA4B,gBAC9BA,EAA0B,cAC3BzL,EAAM5oB,EAC3D,CACJ,IA1TIo0B,GAAgB,QAAgB3C,EAAgB,CAChD,KAAO,QAAyB,MAChC,MAAQ,QAAyB,QAOjC6C,GAAc,QAAgB7C,EAAgB,CAC9C,KAAO,QAAyB,MAChC,MAAQ,QAAyB,MACjC,QAAU,QAAyB,MACnC,aAAe,QAAyB,MACxC,MAAQ,QAAyB,MACjC,KAAO,QAAyB,MAChC,MAAQ,QAAyB,MACjC,KAAO,QAAyB,MAChC,KAAQoC,EACR,KAAO,QAAyB,MAChC,MAAQ,QAAyB,MACjC,KAAO,QAAyB,MAChC,KAAO,QAAyB,MAChC,MAAQ,QAAyB,MACjC,MAAQ,QAAyB,MACjC,MAAQ,QAAyB,MACjC,eAAiB,QAAyB,MAC1C,QAAU,QAAyB,MACnC,WAAcC,IAMdS,EAAgB,CAAC,OAAQ,QAMzBC,GAAmB,QAAgB/C,EAAgB,CACnD,MAAQ,QAAkB,MAC1B,MAAQ,QAAkB,QAO1Ba,GAAe,QAAgBb,EAAgB,CAC/C,OACA,MACA,OACA,MACA,OACA,SACA,OACA,UAOAe,GAAkB,QAAgBf,EAAgB,CAClD,MAAQ,QAAkB,MAC1B,KAAO,QAAkB,MACzB,MAAQ,QAAkB,MAC1B,KAAO,QAAkB,MACzB,MAAQ,QAAkBgD,GAC1B,QAAU,QAAkB,MAC5B,MAAQ,QAAkB,MAC1B,OAAS,SAAoB,QAAkB3B,MAO/C4B,GAAsB,QAAgBjD,EAAgB,CAAC,MAAO,SAM9DkB,GAAe,QAAgBlB,EAAgB,CAC/C,OACA,MACA,OACA,MACA,OACA,SACA,OACA,WAOAmB,GAAkB,QAAgBnB,EAAgB,CAClD,MAAQ,QAAkB,MAC1B,KAAO,QAAkB,MACzB,MAAQ,QAAkB,MAC1B,KAAO,QAAkB,MACzB,MAAQ,QAAkBgD,GAC1B,QAAU,QAAkB,MAC5B,MAAQ,QAAkB,MAC1B,QAAU,SAAoB,SA8YlC,SAAqB7L,EAAMsJ,EAAYD,GAEnC,IAAI//C,EAAU,CAAE02C,KAAMA,GACtB12C,EAAwB,eAAIggD,EAAWC,YACvCjgD,EAAoB,WAAI,CAAC,GACzB,QAAoBA,EAASyiD,EAAoBC,EAAqB1C,EAAWE,iBAAkBH,EACvG,OA9YI2C,GAAsB,QAAsB,SAM5CD,GAAqB,QAAgBlD,EAAgB,CACrD,OAAS,QAAkBqB,KAO3B+B,GAAoB,QAAgBpD,EAAgB,CACpD,MACA,OACA,SACA,cACA,OACA,MACA,OACA,MACA,OACA,MACA,OACA,MACA,MACA,OACA,OACA,OACA,gBACA,WAOAqD,GAAuB,QAAgBrD,EAAgB,CACvD,KAAO,QAAkB,MACzB,MAAQ,QAAkB,MAC1B,QAAU,QAAkB,MAC5B,aAAe,QAAkB,MACjC,MAAQ,QAAkB,MAC1B,KAAO,QAAkB,MACzB,MAAQ,QAAkB,MAC1B,KAAO,QAAkB,MACzB,MAAQ,QAAkBgD,GAC1B,KAAO,QAAkB,MACzB,MAAQ,QAAkB,MAC1B,KAAO,QAAkB,MACzB,KAAO,QAAkB,MACzB,MAAQ,QAAkB,MAC1B,MAAQ,QAAkB,MAC1B,MAAQ,QAAkB,MAC1B,eAAiB,QAAkB,MACnC,QAAU,QAAkB,QAM5BM,EAA4B,CAC5B,MAAS,MACT,WAAc,MACd,gBAAmB,OAQvB,SAASpB,EAAiBrgD,EAAO2+C,EAAa+C,GAC1C,IAAIxqC,EAAkC,EAAQS,cAC9C,GAAIT,EAAU,CACV,IAAIyqC,EAAWF,EAA0BvqC,EAAS4uB,WAClD,GAAI6b,EAAU,CACV,IAAIjvC,EAAaisC,EAAYA,EAAYj8C,OAAS,GAAG4yC,KACrD,OAAO,IAAA7qC,GAAgBiI,EAAWusC,aAAc0C,EACpD,CACJ,CACJ,CAQA,SAAShB,EAAiBtH,EAAiBuI,EAAetM,EAAM5oB,GAkB5D,OAjBA2sB,EAAgBznC,KAAK5M,WAAWswC,EAAKuM,aAAa,QAAS78C,WAAWswC,EAAKuM,aAAa,SACpF,QAASn1B,GACT2sB,EAAgBznC,KAA4B8a,EAAa,YAClDA,EAAY,IACnBk1B,EAAcE,MAAO,GAGrBzI,EAAgBznC,KAAK,GAErB,SAAU8a,GACV2sB,EAAgBznC,KAA4B8a,EAAc,aACnDA,EAAa,KACpBk1B,EAAcG,MAAO,GAGrB1I,EAAgBznC,KAAK,GAElBynC,CACX,CAUA,SAAS2I,EAAmBJ,EAAevI,EAAiB4I,GACxD,IAAIC,EAAS,aACTvb,EAAS,EAab,GAZIib,EAAcE,MAAQF,EAAcG,MACpCG,EAAS,eACTvb,EAAS,GAEJib,EAAcE,MACnBI,EAAS,cACTvb,EAAS,GAEJib,EAAcG,OACnBG,EAAS,cACTvb,EAAS,GAEE,IAAXA,EAAc,CACd,IAAK,IAAI78B,EAAI,EAAGiL,EAAKskC,EAAgB32C,OAAS,EAAGoH,EAAIiL,EAAIjL,IACrDuvC,EAAgBvvC,EAAI68B,GAAU0S,EAAoB,EAAJvvC,GAC9CuvC,EAAgBvvC,EAAI68B,EAAS,GAAK0S,EAAoB,EAAJvvC,EAAQ,GACtD83C,EAAcE,OACdzI,EAAgBvvC,EAAI68B,EAAS,GAAK0S,EAAoB,EAAJvvC,EAAQ,IAE1D83C,EAAcG,OACd1I,EAAgBvvC,EAAI68B,EAAS,GAAK0S,EAAoB,EAAJvvC,EAAQ,IAIlE,GADAuvC,EAAgB32C,OAAU22C,EAAgB32C,OAAS,EAAKikC,EACpDsb,EACA,IAASn4C,EAAI,EAAGiL,EAAKktC,EAAKv/C,OAAQoH,EAAIiL,EAAIjL,IACtCm4C,EAAKn4C,GAAMm4C,EAAKn4C,GAAK,EAAK68B,CAGtC,CACA,OAAOub,CACX,CAKA,SAAS3B,EAAUjL,EAAMqJ,GACrB,IAAIjyB,EAAgCiyB,EAAYA,EAAYj8C,OAAS,GACjEy/C,EAAO7M,EAAKuM,aAAa,QAChB,OAATM,IACAz1B,EAAa,KAAIy1B,IAErB,QAAU1D,EAAcnJ,EAAMqJ,EAClC,CAKA,SAAS6B,EAAgBlL,EAAMqJ,GACSA,EAAYA,EAAYj8C,OAAS,GAC7C,gBAAI4yC,CAChC,CA6CA,SAAS+I,EAAQ/I,EAAMqJ,GACnB,IAAI3wC,EAA6D2wC,EAAY,GACzEjyB,GAAS,OAAgB,CACzB,gBAAmB,GACnB,cAAiB,CAAC,GACnB4zB,EAAahL,EAAMqJ,GACtB,GAAKjyB,EAAL,CAGA,IAAI2sB,EAEH3sB,EAAyB,uBACnBA,EAAwB,gBAC/B,IAAIk1B,EAA8Cl1B,EAAuB,qBAClEA,EAAsB,cAC7B,IAAIw1B,EAASF,EAAmBJ,EAAevI,GAC3CniC,EAAW,IAAI,UAAWmiC,EAAiB6I,IAC/C,QAA6BhrC,GAAU,EAAOlJ,GAC9C,IAAIyS,EAAU,IAAI,UAAQvJ,GAE1B,OADAuJ,EAAQpJ,cAAcqV,GAAQ,GACvBjM,CAZP,CAaJ,CAMA,SAAS69B,EAAQhJ,EAAMqJ,GACnB,IAAI3wC,EAA6D2wC,EAAY,GACzEjyB,GAAS,OAAgB,CACzB,gBAAmB,GACnB,KAAQ,GACR,cAAiB,CAAC,GACnBk0B,EAAatL,EAAMqJ,GACtB,GAAKjyB,EAAL,CAGA,IAAI2sB,EAEH3sB,EAAyB,uBACnBA,EAAwB,gBAC/B,IAAIu1B,EAAqCv1B,EAAc,YAChDA,EAAa,KACpB,IAAIk1B,EAA8Cl1B,EAAuB,qBAClEA,EAAsB,cAC7B,IAAIw1B,EAASF,EAAmBJ,EAAevI,EAAiB4I,GAC5D/qC,EAAW,IAAI,IAAgBmiC,EAAiB6I,EAAQD,IAC5D,QAA6B/qC,GAAU,EAAOlJ,GAC9C,IAAIyS,EAAU,IAAI,UAAQvJ,GAE1B,OADAuJ,EAAQpJ,cAAcqV,GAAQ,GACvBjM,CAdP,CAeJ,CAMA,SAAS89B,EAAQjJ,EAAMqJ,GACnB,IAAI3wC,EAA6D2wC,EAAY,GACzEjyB,GAAS,OAAgB,CAAC,EAAGs0B,EAAa1L,EAAMqJ,GACpD,GAAKjyB,EAAL,CAGA,IAAIk1B,EAA6C,CAAG,EAChD9/B,EAAc6+B,EAAiB,GAAIiB,EAAetM,EAAM5oB,GACxDw1B,EAASF,EAAmBJ,EAAe9/B,GAC3C5K,EAAW,IAAI,UAAM4K,EAAaogC,IACtC,QAA6BhrC,GAAU,EAAOlJ,GAC9C,IAAIyS,EAAU,IAAI,UAAQvJ,GAE1B,OADAuJ,EAAQpJ,cAAcqV,GAAQ,GACvBjM,CARP,CASJ,CAMA,SAAS0gC,EAAU7L,EAAMt1C,EAAO2+C,GAC5BrJ,EAAKjjC,aAAa,OAAQrS,GAC1B,IACIoX,EADUunC,EAAYA,EAAYj8C,OAAS,GACV,WACjC0/C,EAAO,CAAChrC,EAAqB,SAAGA,EAAqB,WACzD,QACiD,CAAGk+B,KAAMA,GAAS4L,EAAkB,KAA8BkB,EAAMzD,EAAasC,EAC1I,CAMA,SAASzB,EAAalK,EAAM/pC,EAAYozC,GACpC,IAAI//C,EAAU+/C,EAAYA,EAAYj8C,OAAS,GAE3Cu8C,EADargD,EAAQ02C,KACK2J,aAC1B7nC,EAAaxY,EAAoB,WAKrC,OAHA02C,EAAK8K,eAAe,KAAM,MAAOiC,OAAO92C,EAAW,KACnD+pC,EAAK8K,eAAe,KAAM,MAAOiC,OAAO92C,EAAW,KAC9B3M,EAAwB,gBAEzC,KAAK,eACqB,IAAlB2M,EAAW,KACX6L,EAAiB,KAAI7L,EAAW,IAGxC,KAAK,cACqB,IAAlBA,EAAW,KACX6L,EAAgB,IAAI7L,EAAW,IAEnC,MACJ,KAAK,cACqB,IAAlBA,EAAW,KACX6L,EAAiB,KAAI7L,EAAW,IAM5C,IAAIwzC,EAA+B,SAAjBzJ,EAAKqM,SACjBP,EAAoBnC,GACpBsC,EAAkBtC,GACpBvyB,GAAS,QAAatV,EAAY2nC,IACtC,QAEA,CAAGzJ,KAAMA,EAAM,WAAcl+B,GAAeoqC,EAAsB,KAA8B90B,EAAQiyB,EAAaI,EACzH,CAuEA,QAAe,WAAG,oECjyBVrrC,8DADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAiLJ,SAASwuC,EAAU1gC,GACf,MAAsB,iBAAXA,EACMo8B,KAAKuE,MAAM3gC,IACyB,KAEjC,OAAXA,EACEA,EAGA,IAEf,CACA,QA7KiC,SAAU7N,GAEvC,SAASyuC,IACL,OAAOzuC,EAAOzH,KAAKhN,OAASA,IAChC,CAuJA,OA1JAqU,EAAU6uC,EAAazuC,GAOvByuC,EAAYl+C,UAAUwhC,QAAU,WAC5B,OAAO2c,EAAA,MACX,EAUAD,EAAYl+C,UAAU24C,YAAc,SAAUr7B,EAAQjN,GAClD,OAAOrV,KAAKojD,sBAAsBJ,EAAU1gC,GAAStiB,KAAKs9C,eAAeh7B,EAAQjN,GACrF,EAUA6tC,EAAYl+C,UAAU44C,aAAe,SAAUt7B,EAAQjN,GACnD,OAAOrV,KAAKqjD,uBAAuBL,EAAU1gC,GAAStiB,KAAKs9C,eAAeh7B,EAAQjN,GACtF,EAQA6tC,EAAYl+C,UAAUo+C,sBAAwB,SAAUE,EAAQjuC,GAC5D,OAAO,SACX,EAQA6tC,EAAYl+C,UAAUq+C,uBAAyB,SAAUC,EAAQjuC,GAC7D,OAAO,SACX,EASA6tC,EAAYl+C,UAAU64C,aAAe,SAAUv7B,EAAQjN,GACnD,OAAOrV,KAAKujD,uBAAuBP,EAAU1gC,GAAStiB,KAAKs9C,eAAeh7B,EAAQjN,GACtF,EAQA6tC,EAAYl+C,UAAUu+C,uBAAyB,SAAUD,EAAQjuC,GAC7D,OAAO,SACX,EAQA6tC,EAAYl+C,UAAUu4C,eAAiB,SAAUj7B,GAC7C,OAAOtiB,KAAKwjD,yBAAyBR,EAAU1gC,GACnD,EAOA4gC,EAAYl+C,UAAUw+C,yBAA2B,SAAUF,GACvD,OAAO,SACX,EASAJ,EAAYl+C,UAAU84C,aAAe,SAAU38B,EAAS9L,GACpD,OAAOqpC,KAAK+E,UAAUzjD,KAAK0jD,mBAAmBviC,EAAS9L,GAC3D,EAOA6tC,EAAYl+C,UAAU0+C,mBAAqB,SAAUviC,EAAS9L,GAC1D,OAAO,SACX,EASA6tC,EAAYl+C,UAAU+4C,cAAgB,SAAUxrB,EAAUld,GACtD,OAAOqpC,KAAK+E,UAAUzjD,KAAK2jD,oBAAoBpxB,EAAUld,GAC7D,EAOA6tC,EAAYl+C,UAAU2+C,oBAAsB,SAAUpxB,EAAUld,GAC5D,OAAO,SACX,EASA6tC,EAAYl+C,UAAUg5C,cAAgB,SAAUpmC,EAAUvC,GACtD,OAAOqpC,KAAK+E,UAAUzjD,KAAK4jD,oBAAoBhsC,EAAUvC,GAC7D,EAOA6tC,EAAYl+C,UAAU4+C,oBAAsB,SAAUhsC,EAAUvC,GAC5D,OAAO,SACX,EACO6tC,CACX,CA5JgC,CA4J9B,oGCpLE,EAAwC,WACxC,IAAI9uC,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GA6P5C,SAASqpC,EAAayF,EAAQjuC,GAC1B,IAAKiuC,EACD,OAAO,KAKX,IAAI1rC,EACJ,OAAQ0rC,EAAa,MACjB,KAAK7c,EAAA,cACD7uB,EA0DZ,SAA2B0rC,GACvB,OAAO,IAAIO,EAAA,QAAMP,EAAoB,YACzC,CA5DuBQ,CAA8C,GACzD,MAEJ,KAAKrd,EAAA,oBACD7uB,EA6DZ,SAAgC0rC,GAC5B,OAAO,IAAIS,EAAA,QAAWT,EAAoB,YAC9C,CA/DuBU,CACsB,GACjC,MAEJ,KAAKvd,EAAA,gBACD7uB,EAoFZ,SAA6B0rC,GACzB,OAAO,IAAIW,EAAA,GAAQX,EAAoB,YAC3C,CAtFuBY,CAAkD,GAC7D,MAEJ,KAAKzd,EAAA,oBACD7uB,EAkEZ,SAAgC0rC,GAC5B,OAAO,IAAIa,EAAA,EAAWb,EAAoB,YAC9C,CApEuBc,CACsB,GACjC,MAEJ,KAAK3d,EAAA,0BACD7uB,EAsDZ,SAAqC0rC,GACjC,OAAO,IAAIe,EAAA,EAAgBf,EAAoB,YACnD,CAxDuBgB,CAC2B,GACtC,MAEJ,KAAK7d,EAAA,sBACD7uB,EA+DZ,SAAkC0rC,GAC9B,OAAO,IAAIiB,EAAA,EAAajB,EAAoB,YAChD,CAjEuBkB,CACwB,GACnC,MAEJ,KAAK/d,EAAA,4BACD7uB,EAeZ,SAAwC0rC,EAAQjuC,GAC5C,IAAIovC,EAAanB,EAAmB,WAAEp1C,KAKtC,SAAU0J,GACN,OAAOimC,EAAajmC,EAtBL8sC,UAuBnB,IACA,OAAO,IAAIC,EAAA,EAAmBF,EAClC,CAzBuBC,CAC8B,GACzC,MAEJ,QACI,MAAM,IAAIv4C,MAAM,6BAA+Bm3C,EAAOlyC,MAG9D,OAAO,QAA6BwG,GAAU,EAAOvC,EACzD,CAgEA,SAAS2oC,EAAcpmC,EAAUvC,GAE7B,IAEIuvC,EAFAxzC,GADJwG,GAAW,QAA6BA,GAAU,EAAMvC,IACpCmxB,UAGpB,OAAQp1B,GACJ,KAAKq1B,EAAA,cACDme,EAoHZ,SAA4BhtC,EAAUvC,GAClC,MAAO,CACHjE,KAAM,QACNoR,YAAa5K,EAAS4nC,iBAE9B,CAzHsBqF,CACW,GACrB,MAEJ,KAAKpe,EAAA,oBACDme,EA+DZ,SAAiChtC,EAAUvC,GACvC,MAAO,CACHjE,KAAM,aACNoR,YAAa5K,EAAS4nC,iBAE9B,CApEsBsF,CACgB,GAC1B,MAEJ,KAAKre,EAAA,gBACDme,EAqHZ,SAA8BhtC,EAAUvC,GACpC,IAAInF,EAIJ,OAHImF,IACAnF,EAAQmF,EAAY0vC,aAEjB,CACH3zC,KAAM,UACNoR,YAAa5K,EAAS4nC,eAAetvC,GAE7C,CA9HsB80C,CACa,EAAY3vC,GACnC,MAEJ,KAAKoxB,EAAA,oBACDme,EA2EZ,SAAiChtC,EAAUvC,GACvC,MAAO,CACHjE,KAAM,aACNoR,YAAa5K,EAAS4nC,iBAE9B,CAhFsByF,CACgB,GAC1B,MAEJ,KAAKxe,EAAA,0BACDme,EA2DZ,SAAsChtC,EAAUvC,GAC5C,MAAO,CACHjE,KAAM,kBACNoR,YAAa5K,EAAS4nC,iBAE9B,CAhEsB0F,CACqB,GAC/B,MAEJ,KAAKze,EAAA,sBACDme,EA4EZ,SAAmChtC,EAAUvC,GACzC,IAAInF,EAIJ,OAHImF,IACAnF,EAAQmF,EAAY0vC,aAEjB,CACH3zC,KAAM,eACNoR,YAAa5K,EAAS4nC,eAAetvC,GAE7C,CArFsBi1C,CACkB,EAAY9vC,GACxC,MAEJ,KAAKoxB,EAAA,4BACDme,EAsBZ,SAAyChtC,EAAUvC,GAM/C,MAAO,CACHjE,KAAM,qBACNqzC,WAPa7sC,EAASwtC,qBAAqBl3C,KAAI,SAAU0J,GACzD,IAAIlJ,GAAU,QAAO,CAAC,EAAG2G,GAEzB,cADO3G,EAAQ+uC,kBACRO,EAAcpmC,EAAUlJ,EACnC,IAKJ,CAhCsB22C,CACwB,EAAYhwC,GAC9C,MAEJ,KAAKoxB,EAAA,eACDme,EAAU,CACNxzC,KAAM,qBACNqzC,WAAY,IAEhB,MAEJ,QACI,MAAM,IAAIt4C,MAAM,8BAAgCiF,GAGxD,OAAOwzC,CACX,CA2FA,QAnc6B,SAAUnwC,GAKnC,SAAS6wC,EAAQjwC,GACb,IAAIzU,EAAQZ,KACR0O,EAAU2G,GAA4B,CAAC,EAqB3C,OApBAzU,EAAQ6T,EAAOzH,KAAKhN,OAASA,MAIvBo9C,gBAAiB,IAAAn4C,KAAcyJ,EAAQ0uC,eAAiB1uC,EAAQ0uC,eAAiB,aACnF1uC,EAAQ+uC,oBACR78C,EAAMy8C,0BAA2B,IAAAp4C,KAAcyJ,EAAQ+uC,oBAO3D78C,EAAM2W,cAAgB7I,EAAQ62C,aAM9B3kD,EAAM4kD,qBAAuB92C,EAAQ+2C,oBAC9B7kD,CACX,CAgKA,OA5LA,EAAU0kD,EAAS7wC,GAmCnB6wC,EAAQtgD,UAAUo+C,sBAAwB,SAAUE,EAAQjuC,GAIxD,IAAIqwC,EAWA9tC,EAAWimC,GATX6H,EADmB,YAAnBpC,EAAa,KACkC,EAG9B,CACb,KAAQ,UACR,SAA2C,EAC3C,WAAc,OAG+B,SAAGjuC,GACpD8L,EAAU,IAAI/J,EAAA,QAelB,OAdIpX,KAAKuX,cACL4J,EAAQhJ,gBAAgBnY,KAAKuX,eAExBvX,KAAKwlD,sBACV,kBAAmBE,SAAmBlvC,GACtC2K,EAAQhJ,gBAAgButC,EAA8B,eAE1DvkC,EAAQtJ,YAAYD,GAChB,OAAQ8tC,GACRvkC,EAAQtI,MAAM6sC,EAAmB,IAEjCA,EAA2B,YAC3BvkC,EAAQpJ,cAAc2tC,EAA2B,YAAG,GAEjDvkC,CACX,EAOAmkC,EAAQtgD,UAAUq+C,uBAAyB,SAAUC,EAAQjuC,GACzD,IAEIkd,EAAW,KACf,GAA8B,sBAHmB,EAGzB,KAA2B,CAE/CA,EAAW,GAEX,IADA,IAAIozB,EAFmE,EAEd,SAChDn7C,EAAI,EAAGiL,EAAKkwC,EAAgBviD,OAAQoH,EAAIiL,IAAMjL,EACnD+nB,EAASjgB,KAAKtS,KAAKojD,sBAAsBuC,EAAgBn7C,GAAI6K,GAErE,MAEIkd,EAAW,CAACvyB,KAAKojD,sBAAsBE,EAAQjuC,IAEnD,OAAOkd,CACX,EAOA+yB,EAAQtgD,UAAUu+C,uBAAyB,SAAUD,EAAQjuC,GACzD,OAAOwoC,EAAayF,EAAQjuC,EAChC,EAMAiwC,EAAQtgD,UAAUw+C,yBAA2B,SAAUF,GACnD,IACI/pC,EADAqsC,EAAMtC,EAAY,IAgBtB,OAdIsC,EACmB,QAAfA,EAAU,KACVrsC,GAAa,IAAAtU,KAAc2gD,EAAgB,WAAQ,MAE9B,SAAhBA,EAAU,KACfrsC,GAAa,IAAAtU,KAAc,QAAU2gD,EAAgB,WAAQ,OAG7D,QAAO,EAAO,IAIlBrsC,EAAavZ,KAAKo9C,eAEwC,CAClE,EASAkI,EAAQtgD,UAAU0+C,mBAAqB,SAAUviC,EAAS9L,GACtDA,EAAcrV,KAAK09C,aAAaroC,GAEhC,IAAIiuC,EAAS,CACT,KAAQ,UACR1rC,SAAU,KACVE,WAAY,MAEZ9E,EAAKmO,EAAQ3I,QAIjB,QAHWhC,IAAPxD,IACAswC,EAAOtwC,GAAKA,IAEXmO,EAAQlJ,gBACT,OAAOqrC,EAEX,IAAIxrC,EAAaqJ,EAAQjJ,gBACrBN,EAAWuJ,EAAQ9I,cAQvB,OAPIT,IACA0rC,EAAO1rC,SAAWomC,EAAcpmC,EAAUvC,UACnCyC,EAAWqJ,EAAQ/I,qBAEzB,QAAQN,KACTwrC,EAAOxrC,WAAaA,GAEjBwrC,CACX,EASAgC,EAAQtgD,UAAU2+C,oBAAsB,SAAUpxB,EAAUld,GACxDA,EAAcrV,KAAK09C,aAAaroC,GAEhC,IADA,IAAIwwC,EAAU,GACLr7C,EAAI,EAAGiL,EAAK8c,EAASnvB,OAAQoH,EAAIiL,IAAMjL,EAC5Cq7C,EAAQvzC,KAAKtS,KAAK0jD,mBAAmBnxB,EAAS/nB,GAAI6K,IAEtD,MAAO,CACHjE,KAAM,oBACNmhB,SAAUszB,EAElB,EASAP,EAAQtgD,UAAU4+C,oBAAsB,SAAUhsC,EAAUvC,GACxD,OAAO2oC,EAAcpmC,EAAU5X,KAAK09C,aAAaroC,GACrD,EACOiwC,CACX,CA9L4B,CA8L1B,qFCzPMlxC,wJADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GA2BOsxC,EAAQ,6BAYfC,EAAqB,cA0CrBC,EAAyB,SAAUvxC,GAKnC,SAASuxC,EAAQ3wC,GACb,IAAIzU,EAAQ6T,EAAOzH,KAAKhN,OAASA,KAC7B0O,EAAkC2G,GAA4B,CAAC,EA6BnE,OAxBAzU,EAAMqlD,YAAcv3C,EAAQu3C,YAK5BrlD,EAAMslD,UAAYx3C,EAAQw3C,UAK1BtlD,EAAMulD,QAAUz3C,EAAQy3C,QAKxBvlD,EAAMwlD,eAAiB,GAIvBxlD,EAAMylD,2BAA6B,CAAC,EACpCzlD,EAAMylD,2BAA2BzlD,EAAM8J,WAAa,CAChD,eAAiB,QAAgB9J,EAAM0lD,sBACvC,gBAAkB,OAAa1lD,EAAM0lD,uBAElC1lD,CACX,CA8WA,OAlZAyT,EAAU2xC,EAASvxC,GA0CnBuxC,EAAQhhD,UAAUshD,qBAAuB,SAAUtQ,EAAMqJ,GACrD,IAAIqB,EAAY1K,EAAK0K,UACjBnuB,EAAW,KACf,GAAiB,qBAAbmuB,EACAnuB,GAAW,OAAgB,GAAIvyB,KAAKqmD,2BAA4BrQ,EAAMqJ,EAAar/C,WAElF,GAAiB,kBAAb0gD,GAA8C,iBAAbA,EAA8B,CACpE,IAAIphD,EAAU+/C,EAAY,GACtB4G,EAAc3mD,EAAqB,YACnC4mD,EAAY5mD,EAAmB,UAGnC,IAAK2mD,GAAejQ,EAAKljC,WAAY,CAChCmzC,EAAc,GAAMC,EAAY,CAAC,EAClC,IAAK,IAAI17C,EAAI,EAAGiL,EAAKugC,EAAKljC,WAAW1P,OAAQoH,EAAIiL,IAAMjL,EAAG,CACtD,IAAI+7C,EAAQvQ,EAAKljC,WAAWtI,GAC5B,GAAuB,IAAnB+7C,EAAMC,SAAgB,CACtB,IAAIC,EAAKF,EAAMlE,SAAS/xC,MAAM,KAAK2D,MACnC,IAAiC,IAA7BgyC,EAAYvzC,QAAQ+zC,GAAY,CAChC,IAAI95B,EAAM,GACNqO,EAAQ,EACR0rB,EAAMH,EAAM5G,aAChB,IAAK,IAAIgH,KAAaT,EAAW,CAC7B,GAAIA,EAAUS,KAAeD,EAAK,CAC9B/5B,EAAMg6B,EACN,KACJ,GACE3rB,CACN,CACKrO,IAEDu5B,EADAv5B,EApBP,IAoBsBqO,GACE0rB,GAErBT,EAAY3zC,KAAKqa,EAAM,IAAM85B,EACjC,CACJ,CACJ,CACiB,iBAAb/F,IAEAphD,EAAqB,YAAI2mD,EACzB3mD,EAAmB,UAAI4mD,EAE/B,CACA,GAAyB,iBAAdA,EAAwB,CAC/B,IAAIU,EAAKV,GACTA,EAAY,CAAC,GACU,GAAIU,CAC/B,CAEA,IAAIC,EAAY,CAAC,EACbC,EAAe3lD,MAAMkP,QAAQ41C,GAC3BA,EACA,CAACA,GACP,IAAK,IAAIl8C,KAAKm8C,EAAW,CAErB,IAAIa,EAAU,CAAC,EACf,IAASv8C,EAAI,EAAGiL,EAAKqxC,EAAa1jD,OAAQoH,EAAIiL,IAAMjL,IACM,IAAlCs8C,EAAat8C,GAAGkI,QAAQ,KA9ChC,KAgDNo0C,EAAat8C,GAAG8F,MAAM,KAAK,MACXvG,IAClBg9C,EAAQD,EAAat8C,GAAG8F,MAAM,KAAK2D,OAClB,kBAAbysC,GACM,QAAgB1gD,KAAKgnD,mBAAoBhnD,OACzC,OAAaA,KAAKgnD,mBAAoBhnD,OAGxD6mD,EAAUX,EAAUn8C,IAAMg9C,CAC9B,CAEIx0B,EADa,iBAAbmuB,GACW,YAAgBlqC,EAAWqwC,EAAW7Q,EAAMqJ,IAG5C,OAAgB,GAAIwH,EAAW7Q,EAAMqJ,EAExD,CAIA,OAHiB,OAAb9sB,IACAA,EAAW,IAERA,CACX,EAMAyzB,EAAQhhD,UAAUiiD,oBAAsB,SAAUjR,EAAMqJ,GACpD,IAAI//C,EAAiC+/C,EAAY,GACjD//C,EAAiB,QAAI02C,EAAKkR,kBAAkB3E,aAAa,WACzDjjD,EAAsB,aAAI02C,EAAKkR,kBAAkB3E,aAAa,gBAC9D,IAAI3qC,GAAW,OAAgB,KAAM5X,KAAKmnD,iBAAkBnR,EAAMqJ,EAAar/C,MAC/E,OAAI4X,EACIzW,MAAMkP,QAAQuH,IACP,QACsC,EAAYtY,IAGlD,QAC8C,GAAY,EAAOA,QAI5E,CAER,EAOA0mD,EAAQhhD,UAAUoiD,2BAA6B,SAAUpR,EAAMqJ,EAAagI,GAGxE,IAFA,IAAI9B,EACAn4B,EAAS,CAAC,EACLtrB,EAAIk0C,EAAKkR,kBAAmBplD,EAAGA,EAAIA,EAAEwlD,mBAAoB,CAC9D,IAAI5mD,OAAQ,EACRggD,EAAY5+C,EAAE4+C,UAEU,IAAxB5+C,EAAEgR,WAAW1P,QACY,IAAxBtB,EAAEgR,WAAW1P,SACiB,IAA1BtB,EAAE4L,WAAW84C,UAA4C,IAA1B1kD,EAAE4L,WAAW84C,WACjD9lD,GAAQ,QAAkBoB,GAAG,GACzBikD,EAAmB15C,KAAK3L,KACxBA,OAAQ8V,KAIR6wC,IAEA3mD,EAAQV,KAAKinD,oBAAoBnlD,EAAGu9C,IAEnC3+C,EAIkB,cAAdggD,IAEL6E,EAAe7E,GAJfhgD,EAAQV,KAAKonD,2BAA2BtlD,EAAGu9C,GAAa,IAO5DjyB,EAAOszB,IACDtzB,EAAOszB,aAAsBv/C,QAC/BisB,EAAOszB,GAAa,CAACtzB,EAAOszB,KAEhCtzB,EAAOszB,GAAWpuC,KAAK5R,IAGvB0sB,EAAOszB,GAAahgD,EAExB,IAAImE,EAAM/C,EAAEylD,WAAWnkD,OACvB,GAAIyB,EAAM,EAAG,CACTuoB,EAAOszB,GAAa,CAAE8G,UAAWp6B,EAAOszB,IACxC,IAAK,IAAIl2C,EAAI,EAAGA,EAAI3F,EAAK2F,IAAK,CAC1B,IAAIi9C,EAAU3lD,EAAEylD,WAAW/8C,GAAGqK,KAC9BuY,EAAOszB,GAAW+G,GAAW3lD,EAAEylD,WAAW/8C,GAAG9J,KACjD,CACJ,CACJ,CACA,GAAK2mD,EAGA,CACD,IAAIlmC,EAAU,IAAI/J,EAAA,QAAQgW,GACtBm4B,GACApkC,EAAQhJ,gBAAgBotC,GAE5B,IAAImC,EAAM1R,EAAKuM,aAAa,SAAU,QAAevM,EAAMh2C,KAAK0K,UAAW,MAI3E,OAHIg9C,GACAvmC,EAAQtI,MAAM6uC,GAEXvmC,CACX,CAZI,OAAOiM,CAaf,EAMA44B,EAAQhhD,UAAUgiD,mBAAqB,SAAUhR,EAAMqJ,GACnD,OAAOr/C,KAAKonD,2BAA2BpR,EAAMqJ,GAAa,EAC9D,EAMA2G,EAAQhhD,UAAU2iD,UAAY,SAAU3R,EAAMqJ,GAC1C,IAAItF,EAAkB/5C,KAAK4nD,4BAA4B5R,EAAMqJ,GAC7D,GAAItF,EACA,OAAO,IAAI8J,EAAA,QAAM9J,EAAiB8N,EAAA,YAE1C,EAMA7B,EAAQhhD,UAAU8iD,eAAiB,SAAU9R,EAAMqJ,GAE/C,IAAI78B,GAAc,OAAgB,GAAIxiB,KAAK+nD,mBAAoB/R,EAAMqJ,EAAar/C,MAClF,OAAIwiB,EACO,IAAI2hC,EAAA,EAAW3hC,QAGtB,CAER,EAMAwjC,EAAQhhD,UAAUgjD,oBAAsB,SAAUhS,EAAMqJ,GAEpD,IAAI4I,GAAc,OAAgB,GAAIjoD,KAAKkoD,wBAAyBlS,EAAMqJ,EAAar/C,MACvF,GAAIioD,EACA,OAAO,IAAI5D,EAAA,EAAgB4D,EAEnC,EAMAjC,EAAQhhD,UAAUmjD,iBAAmB,SAAUnS,EAAMqJ,GAEjD,IAAI+I,GAAW,OAAgB,GAAIpoD,KAAKqoD,qBAAsBrS,EAAMqJ,EAAar/C,MACjF,GAAIooD,EACA,OAAO,IAAI7D,EAAA,EAAa6D,EAEhC,EAKApC,EAAQhhD,UAAUsjD,kBAAoB,SAAUtS,EAAMqJ,IAClD,QAAUr/C,KAAKuoD,oBAAqBvS,EAAMqJ,EAAar/C,KAC3D,EAKAgmD,EAAQhhD,UAAUwjD,uBAAyB,SAAUxS,EAAMqJ,IACvD,QAAUr/C,KAAKyoD,yBAA0BzS,EAAMqJ,EAAar/C,KAChE,EAKAgmD,EAAQhhD,UAAU0jD,oBAAsB,SAAU1S,EAAMqJ,IACpD,QAAUr/C,KAAK2oD,sBAAuB3S,EAAMqJ,EAAar/C,KAC7D,EAMAgmD,EAAQhhD,UAAU4jD,eAAiB,SAAU5S,EAAMqJ,GAC/C,IAAItF,EAAkB/5C,KAAK4nD,4BAA4B5R,EAAMqJ,GAC7D,OAAItF,EACiB,IAAIgK,EAAA,QAAWhK,EAAiB8N,EAAA,kBAIjD,CAER,EAMA7B,EAAQhhD,UAAU6jD,mBAAqB,SAAU7S,EAAMqJ,GAEnD,OADW,OAAgB,KAAMr/C,KAAK8oD,kCAAmC9S,EAAMqJ,EAAar/C,YAKxF,CAER,EAMAgmD,EAAQhhD,UAAU+jD,eAAiB,SAAU/S,EAAMqJ,GAC/C,IAAItF,EAAkB/5C,KAAK4nD,4BAA4B5R,EAAMqJ,GAC7D,GAAItF,EACA,OAAO,IAAIiP,EAAA,EAAWjP,EAAiB8N,EAAA,YAE/C,EAMA7B,EAAQhhD,UAAUikD,YAAc,SAAUjT,EAAMqJ,GAE5C,IAAI6J,GAAkB,OAAgB,CAAC,MAAOlpD,KAAKmpD,0BAA2BnT,EAAMqJ,EAAar/C,MACjG,GAAIkpD,GAAmBA,EAAgB,GAAI,CACvC,IAEgBzzC,EAFZskC,EAAkBmP,EAAgB,GAClCvG,EAAO,CAAC5I,EAAgB32C,QACxBoH,OAAI,EACR,IAAKA,EAAI,EAAGiL,EAAKyzC,EAAgB9lD,OAAQoH,EAAIiL,IAAMjL,GAC/C,QAAOuvC,EAAiBmP,EAAgB1+C,IACxCm4C,EAAKrwC,KAAKynC,EAAgB32C,QAE9B,OAAO,IAAI6gD,EAAA,GAAQlK,EAAiB8N,EAAA,YAAoBlF,EAC5D,CAIJ,EAMAqD,EAAQhhD,UAAU4iD,4BAA8B,SAAU5R,EAAMqJ,GAC5D,OAAO,OAAgB,KAAMr/C,KAAK8oD,kCAAmC9S,EAAMqJ,EAAar/C,KAC5F,EAQAgmD,EAAQhhD,UAAUokD,qBAAuB,SAAUpT,EAAM3gC,GAIrD,OAHerV,KAAKinD,oBAAoBjR,EAAM,CAC1Ch2C,KAAKs9C,eAAetH,EAAM3gC,GAA4B,CAAC,MAE9B,IACjC,EAMA2wC,EAAQhhD,UAAU27C,qBAAuB,SAAU3K,EAAM3gC,GACrD,IAAI3G,EAAU,CACVu3C,YAAajmD,KAAKimD,YAClBC,UAAWlmD,KAAKkmD,WAMpB,OAJI7wC,IACA,QAAO3G,EAAS1O,KAAKs9C,eAAetH,EAAM3gC,IAE/BrV,KAAKsmD,qBAAqBtQ,EAAM,CAACtnC,KAC7B,EACvB,EAKAs3C,EAAQhhD,UAAUqkD,uBAAyB,SAAUrT,GACjD,OAAO,IAAA/wC,KAAcjF,KAAKmmD,QACpBnmD,KAAKmmD,QACLnQ,EAAKkR,kBAAkB3E,aAAa,WAC9C,EACOyD,CACX,CApZ4B,CAoZ1BsD,EAAA,GACFtD,EAAQhhD,UAAU0F,UAAYo7C,EAK9BE,EAAQhhD,UAAUmkD,0BAA4B,CAC1C,6BAA8B,CAAC,GAMnCnD,EAAQhhD,UAAU8jD,kCAAoC,CAClD,6BAA8B,CAAC,GAMnC9C,EAAQhhD,UAAUmiD,iBAAmB,CACjC,6BAA8B,CAAC,GAMnCnB,EAAQhhD,UAAU+iD,mBAAqB,CACnC,6BAA8B,CAC1B,aAAe,QAAgB/B,EAAQhhD,UAAUsjD,mBACjD,cAAgB,QAAgBtC,EAAQhhD,UAAUsjD,qBAO1DtC,EAAQhhD,UAAUkjD,wBAA0B,CACxC,6BAA8B,CAC1B,kBAAoB,QAAgBlC,EAAQhhD,UAAUwjD,wBACtD,mBAAqB,QAAgBxC,EAAQhhD,UAAUwjD,0BAO/DxC,EAAQhhD,UAAUqjD,qBAAuB,CACrC,6BAA8B,CAC1B,eAAiB,QAAgBrC,EAAQhhD,UAAU0jD,qBACnD,gBAAkB,QAAgB1C,EAAQhhD,UAAU0jD,uBAO5D1C,EAAQhhD,UAAUujD,oBAAsB,CACpC,6BAA8B,CAC1B,OAAS,QAAgBvC,EAAQhhD,UAAU4iD,+BAOnD5B,EAAQhhD,UAAUyjD,yBAA2B,CACzC,6BAA8B,CAC1B,YAAc,QAAgBzC,EAAQhhD,UAAU4jD,kBAOxD5C,EAAQhhD,UAAU2jD,sBAAwB,CACtC,6BAA8B,CAC1B,SAAW,QAAgB3C,EAAQhhD,UAAUikD,eAOrDjD,EAAQhhD,UAAUukD,aAAe,CAC7B,6BAA8B,CAC1B,YAAc,OAAavD,EAAQhhD,UAAU6jD,sBAGrD,kCCzkBI,EAAwC,WACxC,IAAIz0C,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GA2BxC4xC,EAAiBN,EAAQ,oDAKzB0D,EAAmC,CACnC,gBAAmB,mBACnB,WAAc,cACd,aAAgB,gBAChB,aAAgB,iBAShBC,EAAsB,SAAUh1C,GAKhC,SAASg1C,EAAKp0C,GACV,IAAIzU,EAAQZ,KACR0O,EAEH2G,GAA4B,CAAC,EAS9B,OARAzU,EAAQ6T,EAAOzH,KAAKhN,KAAM0O,IAAY1O,MAChCqmD,2BAA2BP,GAAsB,eAAI,QAAgBllD,EAAM0lD,sBAIjF1lD,EAAMwlD,eAAiB13C,EAAQ03C,eACzB13C,EAAQ03C,eACRA,EACCxlD,CACX,CA6cA,OA/dA,EAAU6oD,EAAMh1C,GAwBhBg1C,EAAKzkD,UAAU0kD,oBAAsB,SAAU1T,EAAMqJ,GACjD,IAAI91C,GAAI,QAAkBysC,GAAM,GAAO9oC,QAAQ,aAAc,IAEzDy8C,EAD4DtK,EAAY,GACxC,QAChCuK,EAAkB,MACtB,GAAID,EAAc,CACd,IAAIE,GAAO,IAAA5kD,KAAc0kD,GACrBE,IACAD,EAAkBC,EAAKC,qBAE/B,CAGA,IAFA,IAAIC,EAAexgD,EAAEsE,OAAOyC,MAAM,OAC9BypC,EAAkB,GACbvvC,EAAI,EAAGiL,EAAKs0C,EAAa3mD,OAAQoH,EAAIiL,EAAIjL,IAAK,CACnD,IAAIgQ,EAASuvC,EAAav/C,GAAG8F,MAAM,MAC/BtO,EAAI0D,WAAW8U,EAAO,IACtBzY,EAAI2D,WAAW8U,EAAO,IACtB+e,EAAsB,IAAlB/e,EAAOpX,OAAesC,WAAW8U,EAAO,IAAM,EACjB,OAAjCovC,EAAgB78C,OAAO,EAAG,GAC1BgtC,EAAgBznC,KAAKtQ,EAAGD,EAAGw3B,GAG3BwgB,EAAgBznC,KAAKvQ,EAAGC,EAAGu3B,EAEnC,CACA,OAAOwgB,CACX,EAMA0P,EAAKzkD,UAAUglD,QAAU,SAAUhU,EAAMqJ,GAErC,IAAItF,GAAkB,OAAgB,CAAC,MAAO/5C,KAAKiqD,aAAcjU,EAAMqJ,EAAar/C,MACpF,OAAO,IAAA48B,gBAAemd,EAAgB,GAAG,GAAIA,EAAgB,GAAG,GAAIA,EAAgB,GAAG,GAAIA,EAAgB,GAAG,GAClH,EAKA0P,EAAKzkD,UAAUklD,sBAAwB,SAAUlU,EAAMqJ,GAEnD,IAAI8K,GAAiB,YAAgB3zC,EAAWxW,KAAKupD,aAAcvT,EAAMqJ,EAAar/C,MAClFmqD,GAGC9K,EAAYA,EAAYj8C,OAAS,GAClBkP,KAAK63C,EAE7B,EAKAV,EAAKzkD,UAAUolD,sBAAwB,SAAUpU,EAAMqJ,GAEnD,IAAI8K,GAAiB,YAAgB3zC,EAAWxW,KAAKupD,aAAcvT,EAAMqJ,EAAar/C,MAClFmqD,IAGC9K,EAAYA,EAAYj8C,OAAS,GAClB,GAAK+mD,EAE7B,EASAV,EAAKzkD,UAAUqlD,uBAAyB,SAAU3pD,EAAO2+C,EAAa+C,GAClE,IAIIC,EAJA/iD,EAAU+/C,EAAYA,EAAYj8C,OAAS,GAC3CknD,EAAehrD,EAAsB,aACrCirD,EAAUjrD,EAAiB,QAC3BkrD,EAAalrD,EAAoB,WAiBrC,OAfK6B,MAAMkP,QAAQ3P,GAaf2hD,EAAW,WAXM,kBADjBA,EAAgE,EAAQ7b,aACpB,IAAjB8jB,EAC/BjI,EAAW,eAEO,YAAbA,IAAsC,IAAZkI,EAC/BlI,EAAW,UAEO,oBAAbA,IAAiD,IAAfmI,IACvCnI,EAAW,eAMZ,IAAAl3C,GAAgB,6BAA8Bk3C,EACzD,EAMAoH,EAAKzkD,UAAUylD,oBAAsB,SAAUzU,EAAM70B,EAASk+B,GAC1D,IAAIqI,EAAMvmC,EAAQ3I,QACdkvC,GACA1R,EAAKjjC,aAAa,MAA6B,GAEnD,IAAIzT,EAAiC+/C,EAAYA,EAAYj8C,OAAS,GAClE8iD,EAAY5mD,EAAmB,UAC/BimD,EAAepkC,EAAQ/I,kBACtB9Y,EAAQorD,cACTprD,EAAQorD,YAAc,CAAC,EACvBprD,EAAQorD,YAAYxE,GAAa,CAAC,GAEtC,IAAI12C,EAAO,GACP4d,EAAS,GACb,GAAIjM,EAAQlJ,gBAAiB,CACzB,IAAIH,EAAaqJ,EAAQjJ,gBACzB,IAAK,IAAIyU,KAAO7U,EAAY,CACxB,IAAIpX,EAAQoX,EAAW6U,GACT,OAAVjsB,IACA8O,EAAK8C,KAAKqa,GACVS,EAAO9a,KAAK5R,GACRisB,GAAO44B,GAEH,mBADqB,EAA6B,sBAEhD54B,KAAOrtB,EAAQorD,YAAYxE,KAC7B5mD,EAAQorD,YAAYxE,GAAWv5B,IAAO,QAAkB3sB,KAAK2qD,qBAAsB3qD,OAIjF2sB,KAAOrtB,EAAQorD,YAAYxE,KAC7B5mD,EAAQorD,YAAYxE,GAAWv5B,IAAO,QAAkB,OAIxE,CACJ,CACA,IAAI3W,GAAO,QAAO,CAAC,EAAG1W,GACtB0W,EAAKggC,KAAOA,GACZ,QAEA,EAAQ12C,EAAQorD,aAAa,aAAsBl0C,EAAW0vC,GAAY94B,EAAQiyB,EAAa7vC,EACnG,EAMAi6C,EAAKzkD,UAAU4lD,uBAAyB,SAAU5U,EAAMp+B,EAAUynC,GAC9D,IACI8G,EADU9G,EAAYA,EAAYj8C,OAAS,GAChB,QAI/B,GAHsB,sBAAlB4yC,EAAKqM,UAAoC8D,GACzCnQ,EAAKjjC,aAAa,UAAWozC,GAEX,eAAlBnQ,EAAKqM,UACa,sBAAlBrM,EAAKqM,SAAkC,CACvC,IAAI7/B,EAAcxiB,KAAK6qD,uBAAuB7U,EAAK2J,cACnD3J,EAAKroC,YAAY6U,GACjBxiB,KAAK8qD,kBAAkBtoC,EAAa5K,EAAUynC,EAClD,MACK,GAAsB,UAAlBrJ,EAAKqM,SAAsB,CAChC,IAAI0I,GAAW,IAAA5/C,GAAgB6qC,EAAK2J,aAAc,YAClD3J,EAAKroC,YAAYo9C,GACjB/qD,KAAKgrD,oBAAoBD,EAAUnzC,EAAUynC,EACjD,CACJ,EAMAoK,EAAKzkD,UAAUimD,6BAA+B,SAAUjV,EAAMkV,EAAM7L,GAChE,IAAIkH,EAAQvmD,KAAKqqD,uBAAuBa,EAAM7L,GAC1CkH,IACAvQ,EAAKroC,YAAY44C,GACjBvmD,KAAK4qD,uBAAuBrE,EAAO2E,EAAM7L,GAEjD,EAMAoK,EAAKzkD,UAAUmmD,4BAA8B,SAAUnV,EAAMp+B,EAAUynC,GACnE,IAAI//C,EAAU+/C,EAAYA,EAAYj8C,OAAS,GAC3Co/C,EAAOljD,EAAc,KACrB6mD,EAAU7mD,EAAiB,QAC3B8rD,EAAQ9rD,EAAe,MACvB6mD,GACAnQ,EAAKjjC,aAAa,UAAWozC,GAEjC,IAAIkF,EAAQzzC,EAASkoC,kBACrB,QAAoB,CAAE9J,KAAMA,EAAMwM,KAAMA,EAAM2D,QAASA,EAASiF,MAAOA,GAASprD,KAAKsrD,oCAAqCtrD,KAAKurD,mCAAoCF,EAAOhM,OAAa7oC,EAAWxW,KACtM,EAMAypD,EAAKzkD,UAAU2lD,qBAAuB,SAAU3U,EAAMp+B,EAAUynC,GAC5D,IAGI3+C,EAHApB,EAA8D+/C,EAAYA,EAAYj8C,OAAS,GAC/F4S,GAAO,QAAO,CAAC,EAAG1W,GACtB0W,EAAW,KAAIggC,EAGXt1C,EADAS,MAAMkP,QAAQuH,IACN,QACqC,EAAYtY,IAGjD,QAC6C,GAAY,EAAMA,IAE3E,QAEA,EAAQU,KAAKwrD,qBAAsBxrD,KAAKqqD,uBAAwB,CAAC3pD,GAAQ2+C,OAAa7oC,EAAWxW,KACrG,EAMAypD,EAAKzkD,UAAU6lD,uBAAyB,SAAUlL,GAC9C,IAAIn9B,GAAc,IAAArX,GAAgBw0C,EAAc,eAIhD,OAHAn9B,EAAYzP,aAAa,UAAW,KACpCyP,EAAYzP,aAAa,KAAM,KAC/ByP,EAAYzP,aAAa,KAAM,KACxByP,CACX,EAOAinC,EAAKzkD,UAAU8lD,kBAAoB,SAAU9U,EAAMt1C,EAAO2+C,GAQtD,IAPA,IAAI//C,EAAU+/C,EAAYA,EAAYj8C,OAAS,GAC3Co/C,EAAOljD,EAAc,KACrB6mD,EAAU7mD,EAAiB,QAE3BmsD,EAAS/qD,EAAM8+C,iBACf36C,EAAM4mD,EAAOroD,OACbsoD,EAAQ,IAAIvqD,MAAM0D,GACb2F,EAAI,EAAGA,EAAI3F,IAAO2F,EAAG,CAC1B,IAAIy1C,EAAQwL,EAAOjhD,GACnBkhD,EAAMlhD,GAAKxK,KAAK2rD,WAAW1L,EAAOkG,EAAS3D,EAC/C,EACA,QAAoBxM,EAAM0V,EAAMn5C,KAAK,KACzC,EAOAk3C,EAAKzkD,UAAUgmD,oBAAsB,SAAUhV,EAAMkV,EAAM7L,GACvD,IAAIkH,GAAQ,IAAAp7C,GAAgB6qC,EAAK2J,aAAc,qBAC/C3J,EAAKroC,YAAY44C,GACjBvmD,KAAK4qD,uBAAuBrE,EAAO2E,EAAM7L,EAC7C,EAMAoK,EAAKzkD,UAAU4mD,sBAAwB,SAAU5V,EAAMp+B,EAAUynC,GAC7D,IAAI//C,EAAU+/C,EAAYA,EAAYj8C,OAAS,GAC3Co/C,EAAOljD,EAAc,KACrB6mD,EAAU7mD,EAAiB,QAI/B,GAHsB,iBAAlB02C,EAAKqM,UAA+B8D,GACpCnQ,EAAKjjC,aAAa,UAAWozC,GAEX,YAAlBnQ,EAAKqM,UAA4C,iBAAlBrM,EAAKqM,SAA6B,CACjE,IAAInI,EAAQtiC,EAASi0C,kBACrB,QAAoB,CAAE7V,KAAMA,EAAMwM,KAAMA,EAAM2D,QAASA,GAAWnmD,KAAK8rD,iBAAkB9rD,KAAK+rD,mBAAoB7R,EAAOmF,OAAa7oC,EAAWxW,KACrJ,MACK,GAAsB,YAAlBg2C,EAAKqM,SAAwB,CAClC,IAAI2J,GAAU,IAAA7gD,GAAgB6qC,EAAK2J,aAAc,WACjD3J,EAAKroC,YAAYq+C,GACjBhsD,KAAKisD,qBAAqBD,EAASp0C,EAAUynC,EACjD,CACJ,EAQAoK,EAAKzkD,UAAU+mD,mBAAqB,SAAUrrD,EAAO2+C,EAAa+C,GAC9D,IAAI9iD,EAAU+/C,EAAYA,EAAYj8C,OAAS,GAC3CgQ,EAAa9T,EAAQ02C,KACrBkW,EAAkB5sD,EAAyB,gBAI/C,YAHwBkX,IAApB01C,IACA5sD,EAAyB,iBAAI,IAE1B,IAAA6L,GAAgBiI,EAAWusC,kBAAkCnpC,IAApB01C,EAAgC,kBAAoB,kBACxG,EAOAzC,EAAKzkD,UAAUinD,qBAAuB,SAAUjW,EAAMmW,EAAS9M,GAC3D,IAAIkH,GAAQ,IAAAp7C,GAAgB6qC,EAAK2J,aAAc,gBAC/C3J,EAAKroC,YAAY44C,GACjBvmD,KAAK4rD,sBAAsBrF,EAAO4F,EAAS9M,EAC/C,EAMAoK,EAAKzkD,UAAUonD,UAAY,SAAUpW,EAAMqW,EAAMhN,GAC7C,IAAIiN,GAAa,IAAAnhD,GAAgB6qC,EAAK2J,aAAc,cACpD3J,EAAKroC,YAAY2+C,GACjBtsD,KAAKusD,gBAAgBD,EAAYD,EAAMhN,EAC3C,EAQAoK,EAAKzkD,UAAU2mD,WAAa,SAAU1L,EAAOuM,EAAaC,GACtD,IAAI7C,EAAkB,MAClB4C,IACA5C,GAAkB,IAAA3kD,KAAcunD,GAAa1C,sBAEjD,IAAItvC,EAA0C,OAAjCovC,EAAgB78C,OAAO,EAAG,GACjCkzC,EAAM,GAAK,IAAMA,EAAM,GACvBA,EAAM,GAAK,IAAMA,EAAM,GAM7B,OALIwM,IAGAjyC,GAAU,KADFylC,EAAM,IAAM,IAGjBzlC,CACX,EAMAivC,EAAKzkD,UAAU0nD,WAAa,SAAU1W,EAAMp+B,EAAUynC,GAClD,IAAI//C,EAAU+/C,EAAYA,EAAYj8C,OAAS,GAC3Co/C,EAAOljD,EAAc,KACrB6mD,EAAU7mD,EAAiB,QAC3B6mD,GACAnQ,EAAKjjC,aAAa,UAAWozC,GAEjC,IAAI3jC,EAAcxiB,KAAK6qD,uBAAuB7U,EAAK2J,cACnD3J,EAAKroC,YAAY6U,GACjB,IAAIy9B,EAAQroC,EAAS4nC,iBACjBmN,EAAQ3sD,KAAK2rD,WAAW1L,EAAOkG,EAAS3D,IAC5C,QAAoBhgC,EAAamqC,EACrC,EAMAlD,EAAKzkD,UAAU4nD,gBAAkB,SAAU5W,EAAMp+B,EAAUynC,GACvD,IAAI//C,EAAU+/C,EAAYA,EAAYj8C,OAAS,GAC3Co/C,EAAOljD,EAAc,KACrB6mD,EAAU7mD,EAAiB,QAC3B6mD,GACAnQ,EAAKjjC,aAAa,UAAWozC,GAEjC,IAAIsF,EAAS7zC,EAASi1C,aACtB,QAAoB,CAAE7W,KAAMA,EAAMwM,KAAMA,EAAM2D,QAASA,GAAWnmD,KAAK8sD,yBAAyB,QAAsB,eAAgBrB,EAAQpM,OAAa7oC,EAAWxW,KAC1K,EAMAypD,EAAKzkD,UAAU+nD,iBAAmB,SAAU/W,EAAMiK,EAAOZ,GACrD,IAAIkH,GAAQ,IAAAp7C,GAAgB6qC,EAAK2J,aAAc,SAC/C3J,EAAKroC,YAAY44C,GACjBvmD,KAAK0sD,WAAWnG,EAAOtG,EAAOZ,EAClC,EAMAoK,EAAKzkD,UAAUunD,gBAAkB,SAAUvW,EAAMp+B,EAAUynC,GACvD,IACI8G,EADU9G,EAAYA,EAAYj8C,OAAS,GAChB,QAC3B+iD,GACAnQ,EAAKjjC,aAAa,UAAWozC,GAEjC,IAAI3jC,EAAcxiB,KAAK6qD,uBAAuB7U,EAAK2J,cACnD3J,EAAKroC,YAAY6U,GACjBxiB,KAAK8qD,kBAAkBtoC,EAAa5K,EAAUynC,EAClD,EAMAoK,EAAKzkD,UAAUgoD,2BAA6B,SAAUhX,EAAMp+B,EAAUynC,GAClE,IAAI//C,EAAU+/C,EAAYA,EAAYj8C,OAAS,GAC3Co/C,EAAOljD,EAAc,KACrB6mD,EAAU7mD,EAAiB,QAC3BirD,EAAUjrD,EAAiB,QAC3B6mD,GACAnQ,EAAKjjC,aAAa,UAAWozC,GAEjC,IAAIiC,EAAWxwC,EAASq1C,eACxB,QAAoB,CAAEjX,KAAMA,EAAMwM,KAAMA,EAAM2D,QAASA,EAASoE,QAASA,GAAWvqD,KAAKktD,mCAAoCltD,KAAKurD,mCAAoCnD,EAAU/I,OAAa7oC,EAAWxW,KAC5M,EAMAypD,EAAKzkD,UAAUmoD,4BAA8B,SAAUnX,EAAMmW,EAAS9M,GAClE,IAAIkH,EAAQvmD,KAAKqqD,uBAAuB8B,EAAS9M,GAC7CkH,IACAvQ,EAAKroC,YAAY44C,GACjBvmD,KAAK4rD,sBAAsBrF,EAAO4F,EAAS9M,GAEnD,EAMAoK,EAAKzkD,UAAUooD,cAAgB,SAAUpX,EAAM55B,EAAQijC,GACnD,IACI8G,EADU9G,EAAYA,EAAYj8C,OAAS,GAChB,QAC3B+iD,GACAnQ,EAAKjjC,aAAa,UAAWozC,GAEjC,IACI/4B,EAAS,CAAChR,EAAO,GAAK,IAAMA,EAAO,GAAIA,EAAO,GAAK,IAAMA,EAAO,KACpE,QAEA,CAAG45B,KAAMA,GAASh2C,KAAKqtD,qBAAsB,KAA8BjgC,EAAQiyB,EAJxE,CAAC,cAAe,eAI2Er/C,KAC1G,EASAypD,EAAKzkD,UAAUumD,mCAAqC,SAAU7qD,EAAO2+C,EAAa+C,GAC9E,IAAIhvC,EAAaisC,EAAYA,EAAYj8C,OAAS,GAAG4yC,KACrD,OAAO,IAAA7qC,GAAgB,6BAA8Bq+C,EAAiCp2C,EAAWivC,UACrG,EACOoH,CACX,CAjeyB,CAievB,GAKFA,EAAKzkD,UAAU8jD,kCAAoC,CAC/C,6BAA8B,CAC1B,aAAe,OAAaW,EAAKzkD,UAAU0kD,uBAOnDD,EAAKzkD,UAAUmkD,0BAA4B,CACvC,6BAA8B,CAC1B,gBAAmBM,EAAKzkD,UAAUklD,sBAClC,gBAAmBT,EAAKzkD,UAAUolD,wBAO1CX,EAAKzkD,UAAUilD,aAAe,CAC1B,6BAA8B,CAC1B,aAAe,QAAgBR,EAAKzkD,UAAU0kD,uBAOtDD,EAAKzkD,UAAUmiD,iBAAmB,CAC9B,6BAA8B,CAC1B,OAAS,OAAa,uBACtB,YAAc,OAAa,4BAC3B,YAAc,OAAa,4BAC3B,iBAAmB,OAAa,iCAChC,YAAc,OAAa,4BAC3B,SAAW,OAAa,yBACxB,cAAgB,OAAa,8BAC7B,KAAO,OAAasC,EAAKzkD,UAAUglD,WAO3CP,EAAKzkD,UAAUwmD,qBAAuB,CAClC,6BAA8B,CAC1B,OAAS,QAAkB/B,EAAKzkD,UAAU4lD,wBAC1C,YAAc,QAAkBnB,EAAKzkD,UAAUmmD,6BAC/C,OAAS,QAAkB1B,EAAKzkD,UAAU0nD,YAC1C,YAAc,QAAkBjD,EAAKzkD,UAAU4nD,iBAC/C,YAAc,QAAkBnD,EAAKzkD,UAAU4lD,wBAC/C,iBAAmB,QAAkBnB,EAAKzkD,UAAUmmD,6BACpD,YAAc,QAAkB1B,EAAKzkD,UAAUunD,iBAC/C,SAAW,QAAkB9C,EAAKzkD,UAAU4mD,uBAC5C,cAAgB,QAAkBnC,EAAKzkD,UAAUgoD,4BACjD,SAAW,QAAkBvD,EAAKzkD,UAAU4mD,uBAC5C,cAAgB,QAAkBnC,EAAKzkD,UAAUgoD,4BACjD,UAAY,QAAkBvD,EAAKzkD,UAAUooD,iBAMrD3D,EAAKzkD,UAAUsmD,oCAAsC,CACjD,6BAA8B,CAC1B,kBAAoB,QAAkB7B,EAAKzkD,UAAUimD,8BACrD,aAAe,QAAkBxB,EAAKzkD,UAAUimD,gCAMxDxB,EAAKzkD,UAAU8mD,iBAAmB,CAC9B,6BAA8B,CAC1B,iBAAmB,QAAkBrC,EAAKzkD,UAAUonD,WACpD,iBAAmB,QAAkB3C,EAAKzkD,UAAUonD,aAM5D3C,EAAKzkD,UAAU8nD,wBAA0B,CACrC,6BAA8B,CAC1B,aAAe,QAAkBrD,EAAKzkD,UAAU+nD,oBAOxDtD,EAAKzkD,UAAUkoD,mCAAqC,CAChD,6BAA8B,CAC1B,eAAiB,QAAkBzD,EAAKzkD,UAAUmoD,6BAClD,eAAiB,QAAkB1D,EAAKzkD,UAAUmoD,+BAM1D1D,EAAKzkD,UAAUqoD,qBAAuB,CAClC,6BAA8B,CAC1B,aAAe,QAAkB,MACjC,aAAe,QAAkB,QAGzC,UC5nBA,IAAI,EAAwC,WACxC,IAAIj5C,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GAkCxC,EAAiBsxC,gFAOjB,EAAmC,CACnC,gBAAmB,mBACnB,WAAc,cACd,aAAgB,gBAChB,aAAgB,iBAUhBwH,EAAsB,SAAU74C,GAKhC,SAAS64C,EAAKj4C,GACV,IAAIzU,EAAQZ,KACR0O,EAEH2G,GAA4B,CAAC,EAmC9B,OAlCAzU,EAAQ6T,EAAOzH,KAAKhN,KAAM0O,IAAY1O,MAKhCutD,cAA+B/2C,IAApB9H,EAAQ67C,SAAwB77C,EAAQ67C,QAKzD3pD,EAAM4sD,YAA2Bh3C,IAAlB9H,EAAQ08C,OAAsB18C,EAAQ08C,MAKrDxqD,EAAM6sD,iBACqBj3C,IAAvB9H,EAAQ87C,YAA2B97C,EAAQ87C,WAK/C5pD,EAAM8sD,mBACuBl3C,IAAzB9H,EAAQ47C,cAA6B57C,EAAQ47C,aAIjD1pD,EAAMwlD,eAAiB13C,EAAQ03C,eACzB13C,EAAQ03C,eACR,EAKNxlD,EAAM4hD,UAAwBhsC,IAAjB9H,EAAQ8zC,MAAqB9zC,EAAQ8zC,KAC3C5hD,CACX,CAytBA,OArwBA,EAAU0sD,EAAM74C,GAkDhB64C,EAAKtoD,UAAU2oD,eAAiB,SAAU3X,EAAMqJ,GAE5C,IAAI4I,GAAc,OAAgB,GAAIjoD,KAAK4tD,mBAAoB5X,EAAMqJ,EAAar/C,MAClF,OAAIioD,EACsB,IAAI5D,EAAA,EAAgB4D,QAI1C,CAER,EAMAqF,EAAKtoD,UAAU6oD,iBAAmB,SAAU7X,EAAMqJ,GAE9C,IAAI+I,GAAW,OAAgB,GAAIpoD,KAAK8tD,qBAAsB9X,EAAMqJ,EAAar/C,MACjF,GAAIooD,EACA,OAAO,IAAI7D,EAAA,EAAa6D,EAEhC,EAKAkF,EAAKtoD,UAAU+oD,kBAAoB,SAAU/X,EAAMqJ,IAC/C,QAAUr/C,KAAKguD,oBAAqBhY,EAAMqJ,EAAar/C,KAC3D,EAKAstD,EAAKtoD,UAAUipD,oBAAsB,SAAUjY,EAAMqJ,IACjD,QAAUr/C,KAAKkuD,sBAAuBlY,EAAMqJ,EAAar/C,KAC7D,EAMAstD,EAAKtoD,UAAUmpD,UAAY,SAAUnY,EAAMqJ,GACvC,OAAO,OAAgB,CAAC,MAAOr/C,KAAKouD,gBAAiBpY,EAAMqJ,EAAar/C,KAC5E,EAMAstD,EAAKtoD,UAAUqpD,YAAc,SAAUrY,EAAMqJ,GACzC,OAAO,OAAgB,CAAC,MAAOr/C,KAAKsuD,iBAAkBtY,EAAMqJ,EAAar/C,KAC7E,EAMAstD,EAAKtoD,UAAUupD,iBAAmB,SAAUvY,EAAMqJ,GAC9C,OAAO,OAAgB,CAAC,MAAOr/C,KAAKmpD,0BAA2BnT,EAAMqJ,EAAar/C,KACtF,EAMAstD,EAAKtoD,UAAUwpD,sBAAwB,SAAUxY,EAAMqJ,GACnD,OAAO,OAAgB,CAAC,MAAOr/C,KAAK8oD,kCAAmC9S,EAAMqJ,EAAar/C,KAC9F,EAKAstD,EAAKtoD,UAAUypD,eAAiB,SAAUzY,EAAMqJ,GAE5C,IAAI8K,GAAiB,YAAgB3zC,EAAWxW,KAAKupD,aAAcvT,EAAMqJ,EAAar/C,MAClFmqD,GAGC9K,EAAYA,EAAYj8C,OAAS,GAClBkP,KAAK63C,EAE7B,EAKAmD,EAAKtoD,UAAU0pD,eAAiB,SAAU1Y,EAAMqJ,GAE5C,IAAI8K,GAAiB,YAAgB3zC,EAAWxW,KAAKupD,aAAcvT,EAAMqJ,EAAar/C,MAClFmqD,IAGC9K,EAAYA,EAAYj8C,OAAS,GAClB,GAAK+mD,EAE7B,EAMAmD,EAAKtoD,UAAU2pD,YAAc,SAAU3Y,EAAMqJ,GAEzC,IAAI6J,GAAkB,OAAgB,CAAC,MAAOlpD,KAAK4uD,gBAAiB5Y,EAAMqJ,EAAar/C,MACvF,GAAIkpD,GAAmBA,EAAgB,GAAI,CACvC,IAEgBzzC,EAFZskC,EAAkBmP,EAAgB,GAClCvG,EAAO,CAAC5I,EAAgB32C,QACxBoH,OAAI,EACR,IAAKA,EAAI,EAAGiL,EAAKyzC,EAAgB9lD,OAAQoH,EAAIiL,IAAMjL,GAC/C,QAAOuvC,EAAiBmP,EAAgB1+C,IACxCm4C,EAAKrwC,KAAKynC,EAAgB32C,QAE9B,OAAO,IAAI6gD,EAAA,GAAQlK,EAAiB8N,EAAA,YAAoBlF,EAC5D,CAIJ,EAMA2K,EAAKtoD,UAAU6pD,UAAY,SAAU7Y,EAAMqJ,GAEvC,IAAItF,GAAkB,OAAgB,CAAC,MAAO/5C,KAAK8uD,cAAe9Y,EAAMqJ,EAAar/C,MACrF,OAAI+5C,EACiB,IAAIgK,EAAA,QAAWhK,EAAiB8N,EAAA,kBAIjD,CAER,EAMAyF,EAAKtoD,UAAU+pD,aAAe,SAAU/Y,EAAMqJ,GAE1C,IAAItF,GAAkB,OAAgB,CAAC,MAAO/5C,KAAKgvD,iBAAkBhZ,EAAMqJ,EAAar/C,MACxF,OAAO,IAAA48B,gBAAemd,EAAgB,GAAG,GAAIA,EAAgB,GAAG,GAAIA,EAAgB,GAAG,GAAIA,EAAgB,GAAG,GAClH,EAMAuT,EAAKtoD,UAAUiqD,YAAc,SAAUjZ,EAAMqJ,GAMzC,IALA,IAII/yC,EAJA/C,GAAI,QAAkBysC,GAAM,GAC5BkZ,EAAK,6CAELnV,EAAkB,GAEdztC,EAAI4iD,EAAGljB,KAAKziC,IAChBwwC,EAAgBznC,KAAK5M,WAAW4G,EAAE,KAClC/C,EAAIA,EAAEwD,OAAOT,EAAE,GAAGlJ,QAEtB,GAAU,KAANmG,EAAJ,CAGA,IACIogD,EADUtK,EAAY,GACU,QAChCuK,EAAkB,MAKtB,GAJID,IAEAC,GADW,IAAA3kD,KAAc0kD,GACFG,sBAEH,QAApBF,EAA2B,CAC3B,IAAgBn0C,EAAZjL,OAAI,EACR,IAAKA,EAAI,EAAGiL,EAAKskC,EAAgB32C,OAAQoH,EAAIiL,EAAIjL,GAAK,EAAG,CACrD,IAAIzI,EAAIg4C,EAAgBvvC,GACpBxI,EAAI+3C,EAAgBvvC,EAAI,GAC5BuvC,EAAgBvvC,GAAKxI,EACrB+3C,EAAgBvvC,EAAI,GAAKzI,CAC7B,CACJ,CACA,IAAI8C,EAAMk1C,EAAgB32C,OAI1B,GAHW,GAAPyB,GACAk1C,EAAgBznC,KAAK,GAEb,IAARzN,EAGJ,OAAOk1C,CAxBP,CAyBJ,EAMAuT,EAAKtoD,UAAUmqD,gBAAkB,SAAUnZ,EAAMqJ,GAC7C,IAAI91C,GAAI,QAAkBysC,GAAM,GAAO9oC,QAAQ,aAAc,IACzD5N,EAAU+/C,EAAY,GACtBsK,EAAerqD,EAAiB,QAChC8vD,EAAmB9vD,EAAsB,aACzCsqD,EAAkB,MAClBD,IAEAC,GADW,IAAA3kD,KAAc0kD,GACFG,sBAE3B,IAiBI9nD,EAAGD,EAAGw3B,EAjBN/e,EAASjR,EAAE+G,MAAM,OAEjB++C,EAAM,EACNrZ,EAAKuM,aAAa,gBAClB8M,GAAM,QAA6BrZ,EAAKuM,aAAa,iBAEhDvM,EAAKuM,aAAa,aACvB8M,GAAM,QAA6BrZ,EAAKuM,aAAa,cAGjCvM,EAAe,WAAEuM,aAAa,gBAClD8M,GAAM,QACkBrZ,EAAe,WAAEuM,aAAa,iBAEjD6M,IACLC,GAAM,QAA6BD,IAIvC,IADA,IAAIrV,EAAkB,GACbvvC,EAAI,EAAGiL,EAAK+E,EAAOpX,OAAQoH,EAAIiL,EAAIjL,GAAK6kD,EAC7CrtD,EAAI0D,WAAW8U,EAAOhQ,IACtBzI,EAAI2D,WAAW8U,EAAOhQ,EAAI,IAC1B+uB,EAAY,IAAR81B,EAAY3pD,WAAW8U,EAAOhQ,EAAI,IAAM,EACP,OAAjCo/C,EAAgB78C,OAAO,EAAG,GAC1BgtC,EAAgBznC,KAAKtQ,EAAGD,EAAGw3B,GAG3BwgB,EAAgBznC,KAAKvQ,EAAGC,EAAGu3B,GAGnC,OAAOwgB,CACX,EAOAuT,EAAKtoD,UAAUsqD,UAAY,SAAUtZ,EAAMt1C,EAAO2+C,GAC9C,IAAI//C,EAAU+/C,EAAYA,EAAYj8C,OAAS,GAC3Co/C,EAAOljD,EAAc,KACrBiwD,EAAe/M,EAAO,IAAM,IAChCxM,EAAKjjC,aAAa,eAAgBw8C,GAClC,IAAIpJ,EAAU7mD,EAAiB,QAC3BsqD,EAAkB,MAClBzD,IACAyD,GAAkB,IAAA3kD,KAAckhD,GAAS2D,sBAE7C,IACItvC,EADAylC,EAAQv/C,EAAM8+C,iBAIdhlC,EADiC,OAAjCovC,EAAgB78C,OAAO,EAAG,GACjBkzC,EAAM,GAAK,IAAMA,EAAM,GAGvBA,EAAM,GAAK,IAAMA,EAAM,GAEhCuC,IAGAhoC,GAAU,KADFylC,EAAM,IAAM,KAGxB,QAAoBjK,EAAMx7B,EAC9B,EAQA8yC,EAAKtoD,UAAU2mD,WAAa,SAAU1L,EAAOuM,EAAaC,GACtD,IAAI7C,EAAkB,MAClB4C,IACA5C,GAAkB,IAAA3kD,KAAcunD,GAAa1C,sBAEjD,IAAItvC,EAA0C,OAAjCovC,EAAgB78C,OAAO,EAAG,GACjCkzC,EAAM,GAAK,IAAMA,EAAM,GACvBA,EAAM,GAAK,IAAMA,EAAM,GAM7B,OALIwM,IAGAjyC,GAAU,KADFylC,EAAM,IAAM,IAGjBzlC,CACX,EAOA8yC,EAAKtoD,UAAUwqD,cAAgB,SAAUxZ,EAAMt1C,EAAO2+C,GAClD,IAAI//C,EAAU+/C,EAAYA,EAAYj8C,OAAS,GAC3Co/C,EAAOljD,EAAc,KACrBiwD,EAAe/M,EAAO,IAAM,IAChCxM,EAAKjjC,aAAa,eAAgBw8C,GAOlC,IANA,IAKItP,EALAkG,EAAU7mD,EAAiB,QAE3BmsD,EAAS/qD,EAAM8+C,iBACf36C,EAAM4mD,EAAOroD,OACbsoD,EAAQ,IAAIvqD,MAAM0D,GAEb2F,EAAI,EAAGA,EAAI3F,IAAO2F,EACvBy1C,EAAQwL,EAAOjhD,GACfkhD,EAAMlhD,GAAKxK,KAAK2rD,WAAW1L,EAAOkG,EAAS3D,IAE/C,QAAoBxM,EAAM0V,EAAMn5C,KAAK,KACzC,EAMA+6C,EAAKtoD,UAAU0nD,WAAa,SAAU1W,EAAMp+B,EAAUynC,GAClD,IACI8G,EADU9G,EAAYA,EAAYj8C,OAAS,GAChB,QAC3B+iD,GACAnQ,EAAKjjC,aAAa,UAAWozC,GAEjC,IAAIsJ,GAAM,IAAAtkD,GAAgB6qC,EAAK2J,aAAc,OAC7C3J,EAAKroC,YAAY8hD,GACjBzvD,KAAKsvD,UAAUG,EAAK73C,EAAUynC,EAClC,EAMAiO,EAAKtoD,UAAUooD,cAAgB,SAAUpX,EAAM55B,EAAQijC,GACnD,IACI8G,EADU9G,EAAYA,EAAYj8C,OAAS,GAChB,QAC3B+iD,GACAnQ,EAAKjjC,aAAa,UAAWozC,GAEjC,IACI/4B,EAAS,CAAChR,EAAO,GAAK,IAAMA,EAAO,GAAIA,EAAO,GAAK,IAAMA,EAAO,KACpE,QAEA,CAAG45B,KAAMA,GAASh2C,KAAKqtD,qBAAsB,KAA8BjgC,EAAQiyB,EAJxE,CAAC,cAAe,eAI2Er/C,KAC1G,EAMAstD,EAAKtoD,UAAUunD,gBAAkB,SAAUvW,EAAMp+B,EAAUynC,GACvD,IACI8G,EADU9G,EAAYA,EAAYj8C,OAAS,GAChB,QAC3B+iD,GACAnQ,EAAKjjC,aAAa,UAAWozC,GAEjC,IAAIuJ,GAAU,IAAAvkD,GAAgB6qC,EAAK2J,aAAc,WACjD3J,EAAKroC,YAAY+hD,GACjB1vD,KAAKwvD,cAAcE,EAAS93C,EAAUynC,EAC1C,EAQAiO,EAAKtoD,UAAU+mD,mBAAqB,SAAUrrD,EAAO2+C,EAAa+C,GAC9D,IAAI9iD,EAAU+/C,EAAYA,EAAYj8C,OAAS,GAC3CgQ,EAAa9T,EAAQ02C,KACrBkW,EAAkB5sD,EAAyB,gBAI/C,YAHwBkX,IAApB01C,IACA5sD,EAAyB,iBAAI,IAE1B,IAAA6L,GAAgBiI,EAAWusC,kBAAkCnpC,IAApB01C,EAAgC,WAAa,WACjG,EAMAoB,EAAKtoD,UAAU4mD,sBAAwB,SAAU5V,EAAMp+B,EAAUynC,GAC7D,IAAI//C,EAAU+/C,EAAYA,EAAYj8C,OAAS,GAC3Co/C,EAAOljD,EAAc,KACrB6mD,EAAU7mD,EAAiB,QAI/B,GAHsB,iBAAlB02C,EAAKqM,UAA+B8D,GACpCnQ,EAAKjjC,aAAa,UAAWozC,GAEX,YAAlBnQ,EAAKqM,UAA4C,iBAAlBrM,EAAKqM,SAA6B,CACjE,IAAInI,EAAQtiC,EAASi0C,kBACrB,QAAoB,CAAE7V,KAAMA,EAAMwM,KAAMA,EAAM2D,QAASA,GAAWnmD,KAAK8rD,iBAAkB9rD,KAAK+rD,mBAAoB7R,EAAOmF,OAAa7oC,EAAWxW,KACrJ,MACK,GAAsB,YAAlBg2C,EAAKqM,SAAwB,CAClC,IAAI2J,GAAU,IAAA7gD,GAAgB6qC,EAAK2J,aAAc,WACjD3J,EAAKroC,YAAYq+C,GACjBhsD,KAAKisD,qBAAqBD,EAASp0C,EAAUynC,EACjD,CACJ,EAMAiO,EAAKtoD,UAAU4lD,uBAAyB,SAAU5U,EAAMp+B,EAAUynC,GAC9D,IACI8G,EADU9G,EAAYA,EAAYj8C,OAAS,GAChB,QAI/B,GAHsB,sBAAlB4yC,EAAKqM,UAAoC8D,GACzCnQ,EAAKjjC,aAAa,UAAWozC,GAEX,eAAlBnQ,EAAKqM,UACa,sBAAlBrM,EAAKqM,SAAkC,CACvC,IAAIqN,GAAU,IAAAvkD,GAAgB6qC,EAAK2J,aAAc,WACjD3J,EAAKroC,YAAY+hD,GACjB1vD,KAAKwvD,cAAcE,EAAS93C,EAAUynC,EAC1C,MACK,GAAsB,UAAlBrJ,EAAKqM,SAAsB,CAChC,IAAI0I,GAAW,IAAA5/C,GAAgB6qC,EAAK2J,aAAc,YAClD3J,EAAKroC,YAAYo9C,GACjB/qD,KAAKgrD,oBAAoBD,EAAUnzC,EAAUynC,EACjD,CACJ,EAMAiO,EAAKtoD,UAAUgoD,2BAA6B,SAAUhX,EAAMp+B,EAAUynC,GAClE,IAAI//C,EAAU+/C,EAAYA,EAAYj8C,OAAS,GAC3Co/C,EAAOljD,EAAc,KACrB6mD,EAAU7mD,EAAiB,QAC3BirD,EAAUjrD,EAAiB,QAC3B6mD,GACAnQ,EAAKjjC,aAAa,UAAWozC,GAEjC,IAAIiC,EAAWxwC,EAASq1C,eACxB,QAAoB,CAAEjX,KAAMA,EAAMwM,KAAMA,EAAM2D,QAASA,EAASoE,QAASA,GAAWvqD,KAAKktD,mCAAoCltD,KAAKurD,mCAAoCnD,EAAU/I,OAAa7oC,EAAWxW,KAC5M,EAMAstD,EAAKtoD,UAAU4nD,gBAAkB,SAAU5W,EAAMp+B,EAAUynC,GACvD,IAAI//C,EAAU+/C,EAAYA,EAAYj8C,OAAS,GAC3C+iD,EAAU7mD,EAAiB,QAC3BkjD,EAAOljD,EAAc,KACrB6mD,GACAnQ,EAAKjjC,aAAa,UAAWozC,GAEjC,IAAIsF,EAAS7zC,EAASi1C,aACtB,QAAoB,CAAE7W,KAAMA,EAAMwM,KAAMA,EAAM2D,QAASA,GAAWnmD,KAAK8sD,yBAAyB,QAAsB,eAAgBrB,EAAQpM,OAAa7oC,EAAWxW,KAC1K,EAMAstD,EAAKtoD,UAAUmmD,4BAA8B,SAAUnV,EAAMp+B,EAAUynC,GACnE,IAAI//C,EAAU+/C,EAAYA,EAAYj8C,OAAS,GAC3Co/C,EAAOljD,EAAc,KACrB6mD,EAAU7mD,EAAiB,QAC3B8rD,EAAQ9rD,EAAe,MACvB6mD,GACAnQ,EAAKjjC,aAAa,UAAWozC,GAEjC,IAAIkF,EAAQzzC,EAASkoC,kBACrB,QAAoB,CAAE9J,KAAMA,EAAMwM,KAAMA,EAAM2D,QAASA,EAASiF,MAAOA,GAASprD,KAAKsrD,oCAAqCtrD,KAAKurD,mCAAoCF,EAAOhM,OAAa7oC,EAAWxW,KACtM,EAMAstD,EAAKtoD,UAAUonD,UAAY,SAAUpW,EAAMqW,EAAMhN,GAC7C,IAAIiN,GAAa,IAAAnhD,GAAgB6qC,EAAK2J,aAAc,cACpD3J,EAAKroC,YAAY2+C,GACjBtsD,KAAKusD,gBAAgBD,EAAYD,EAAMhN,EAC3C,EAMAiO,EAAKtoD,UAAUmoD,4BAA8B,SAAUnX,EAAMmW,EAAS9M,GAClE,IAAIkH,EAAQvmD,KAAKqqD,uBAAuB8B,EAAS9M,GAC7CkH,IACAvQ,EAAKroC,YAAY44C,GACjBvmD,KAAK4rD,sBAAsBrF,EAAO4F,EAAS9M,GAEnD,EAMAiO,EAAKtoD,UAAU+nD,iBAAmB,SAAU/W,EAAMiK,EAAOZ,GACrD,IAAIkH,GAAQ,IAAAp7C,GAAgB6qC,EAAK2J,aAAc,SAC/C3J,EAAKroC,YAAY44C,GACjBvmD,KAAK0sD,WAAWnG,EAAOtG,EAAOZ,EAClC,EAMAiO,EAAKtoD,UAAUimD,6BAA+B,SAAUjV,EAAMkV,EAAM7L,GAChE,IAAIkH,EAAQvmD,KAAKqqD,uBAAuBa,EAAM7L,GAC1CkH,IACAvQ,EAAKroC,YAAY44C,GACjBvmD,KAAK4qD,uBAAuBrE,EAAO2E,EAAM7L,GAEjD,EAOAiO,EAAKtoD,UAAUinD,qBAAuB,SAAUjW,EAAMmW,EAAS9M,GAC3D,IAAIkH,GAAQ,IAAAp7C,GAAgB6qC,EAAK2J,aAAc,gBAC/C3J,EAAKroC,YAAY44C,GACjBvmD,KAAK4rD,sBAAsBrF,EAAO4F,EAAS9M,EAC/C,EAOAiO,EAAKtoD,UAAUgmD,oBAAsB,SAAUhV,EAAMkV,EAAM7L,GACvD,IAAIkH,GAAQ,IAAAp7C,GAAgB6qC,EAAK2J,aAAc,qBAC/C3J,EAAKroC,YAAY44C,GACjBvmD,KAAK4qD,uBAAuBrE,EAAO2E,EAAM7L,EAC7C,EAMAiO,EAAKtoD,UAAU2lD,qBAAuB,SAAU3U,EAAMp+B,EAAUynC,GAC5D,IAGI3+C,EAHApB,EAA8D+/C,EAAYA,EAAYj8C,OAAS,GAC/F4S,GAAO,QAAO,CAAC,EAAG1W,GACtB0W,EAAW,KAAIggC,EAGXt1C,EADAS,MAAMkP,QAAQuH,IACN,QACqC,EAAYtY,IAGjD,QAC6C,GAAY,EAAMA,IAE3E,QAEA,EAAQU,KAAKwrD,qBAAsBxrD,KAAKqqD,uBAAwB,CAAC3pD,GAAQ2+C,OAAa7oC,EAAWxW,KACrG,EAMAstD,EAAKtoD,UAAUylD,oBAAsB,SAAUzU,EAAM70B,EAASk+B,GAC1D,IAAIqI,EAAMvmC,EAAQ3I,QACdkvC,GACA1R,EAAKjjC,aAAa,MAA6B,GAEnD,IAAIzT,EAAiC+/C,EAAYA,EAAYj8C,OAAS,GAClE8iD,EAAY5mD,EAAmB,UAC/BimD,EAAepkC,EAAQ/I,kBACtB9Y,EAAQorD,cACTprD,EAAQorD,YAAc,CAAC,EACvBprD,EAAQorD,YAAYxE,GAAa,CAAC,GAEtC,IAAI12C,EAAO,GACP4d,EAAS,GACb,GAAIjM,EAAQlJ,gBAAiB,CACzB,IAAIH,EAAaqJ,EAAQjJ,gBACzB,IAAK,IAAIyU,KAAO7U,EAAY,CACxB,IAAIpX,EAAQoX,EAAW6U,GACT,OAAVjsB,IACA8O,EAAK8C,KAAKqa,GACVS,EAAO9a,KAAK5R,GACRisB,GAAO44B,GAEH,mBADqB,EAA6B,sBAEhD54B,KAAOrtB,EAAQorD,YAAYxE,KAC7B5mD,EAAQorD,YAAYxE,GAAWv5B,IAAO,QAAkB3sB,KAAK2qD,qBAAsB3qD,OAIjF2sB,KAAOrtB,EAAQorD,YAAYxE,KAC7B5mD,EAAQorD,YAAYxE,GAAWv5B,IAAO,QAAkB,OAIxE,CACJ,CACA,IAAI3W,GAAO,QAAO,CAAC,EAAG1W,GACtB0W,EAAKggC,KAAOA,GACZ,QAEA,EAAQ12C,EAAQorD,aAAa,aAAsBl0C,EAAW0vC,GAAY94B,EAAQiyB,EAAa7vC,EACnG,EAOA89C,EAAKtoD,UAAU2qD,qBAAuB,SAAU3Z,EAAMzjB,EAAU8sB,GAC5D,IAAI//C,EAAiC+/C,EAAYA,EAAYj8C,OAAS,GAClE6iD,EAAc3mD,EAAqB,YACnC4mD,EAAY5mD,EAAmB,UAE/BorD,EAAc,CAAC,EACnBA,EAAYxE,GAAa,CAAC,EAC1BwE,EAAYxE,GAAWD,IAAe,QAAkBjmD,KAAKyqD,oBAAqBzqD,MAClF,IAAIgW,GAAO,QAAO,CAAC,EAAG1W,GACtB0W,EAAKggC,KAAOA,GACZ,QAEA,EAAQ0U,GAAa,QAAsBzE,EAAaC,GAAY3zB,EAAU8sB,EAClF,EASAiO,EAAKtoD,UAAUumD,mCAAqC,SAAU7qD,EAAO2+C,EAAa+C,GAC9E,IAAIhvC,EAAaisC,EAAYA,EAAYj8C,OAAS,GAAG4yC,KACrD,OAAO,IAAA7qC,GAAgBnL,KAAK0K,UAAW,EAAiC0I,EAAWivC,UACvF,EASAiL,EAAKtoD,UAAUqlD,uBAAyB,SAAU3pD,EAAO2+C,EAAa+C,GAClE,IAKIC,EALA/iD,EAAU+/C,EAAYA,EAAYj8C,OAAS,GAC3CknD,EAAehrD,EAAsB,aACrCirD,EAAUjrD,EAAiB,QAC3B8rD,EAAQ9rD,EAAe,MACvBkrD,EAAalrD,EAAoB,WAoBrC,OAlBK6B,MAAMkP,QAAQ3P,GAgBf2hD,EAAW,WAdM,kBADjBA,EAAgE,EAAQ7b,aACpB,IAAjB8jB,EAC/BjI,EAAW,eAEO,YAAbA,IAAsC,IAAZkI,EAC/BlI,EAAW,UAEO,eAAbA,IAAuC,IAAV+I,EAClC/I,EAAW,QAEO,oBAAbA,IAAiD,IAAfmI,IACvCnI,EAAW,eAMZ,IAAAl3C,GAAgBnL,KAAK0K,UAAW23C,EAC3C,EASAiL,EAAKtoD,UAAU4qD,kBAAoB,SAAUh4C,EAAUvC,GACnDA,EAAcrV,KAAK09C,aAAaroC,GAChC,IAAIw6C,GAAO,IAAA1kD,GAAgBnL,KAAK0K,UAAW,QACvCpL,EAAU,CACV02C,KAAM6Z,EACNrN,KAAMxiD,KAAKwiD,KACX2D,QAASnmD,KAAKmmD,QACdiF,MAAOprD,KAAKwtD,OACZjD,QAASvqD,KAAKutD,SACdjD,aAActqD,KAAK0tD,cACnBlD,WAAYxqD,KAAKytD,aAMrB,OAJIp4C,IACA,QAAO/V,EAAS+V,GAEpBrV,KAAK2qD,qBAAqBkF,EAAMj4C,EAAU,CAACtY,IACpCuwD,CACX,EASAvC,EAAKtoD,UAAU47C,kBAAoB,SAAUruB,EAAUld,GACnDA,EAAcrV,KAAK09C,aAAaroC,GAChC,IAAI2gC,GAAO,IAAA7qC,GAAgBnL,KAAK0K,UAAW,kBAC3CsrC,EAAK8K,eAAe,KAAyB,qBAAsB9gD,KAAKomD,gBACxE,IAAI9mD,EAAU,CACV6mD,QAASnmD,KAAKmmD,QACd3D,KAAMxiD,KAAKwiD,KACX4I,MAAOprD,KAAKwtD,OACZjD,QAASvqD,KAAKutD,SACdjD,aAActqD,KAAK0tD,cACnBlD,WAAYxqD,KAAKytD,YACjBvH,UAAWlmD,KAAKkmD,UAChBD,YAAajmD,KAAKimD,aAMtB,OAJI5wC,IACA,QAAO/V,EAAS+V,GAEpBrV,KAAK2vD,qBAAqB3Z,EAAMzjB,EAAU,CAACjzB,IACpC02C,CACX,EACOsX,CACX,CAvwByB,CAuwBvB,GAKFA,EAAKtoD,UAAU8jD,kCAAoC,CAC/C,6BAA8B,CAC1B,KAAO,OAAawE,EAAKtoD,UAAUiqD,aACnC,SAAW,OAAa3B,EAAKtoD,UAAUmqD,mBAO/C7B,EAAKtoD,UAAUmkD,0BAA4B,CACvC,6BAA8B,CAC1B,SAAYmE,EAAKtoD,UAAUypD,eAC3B,SAAYnB,EAAKtoD,UAAU0pD,iBAOnCpB,EAAKtoD,UAAUmiD,iBAAmB,CAC9B,6BAA8B,CAC1B,OAAS,OAAa,uBACtB,YAAc,OAAa,4BAC3B,YAAc,OAAa,4BAC3B,iBAAmB,OAAa,iCAChC,YAAc,OAAa,4BAC3B,SAAW,OAAa,yBACxB,cAAgB,OAAa,8BAC7B,SAAW,OAAamG,EAAKtoD,UAAU2pD,aACvC,cAAgB,OAAarB,EAAKtoD,UAAU6oD,kBAC5C,OAAS,OAAaP,EAAKtoD,UAAU6pD,WACrC,YAAc,OAAavB,EAAKtoD,UAAU2oD,gBAC1C,UAAY,OAAaL,EAAKtoD,UAAU+pD,gBAOhDzB,EAAKtoD,UAAU4oD,mBAAqB,CAChC,6BAA8B,CAC1B,aAAe,QAAgBN,EAAKtoD,UAAU+oD,mBAC9C,cAAgB,QAAgBT,EAAKtoD,UAAU+oD,qBAOvDT,EAAKtoD,UAAU8oD,qBAAuB,CAClC,6BAA8B,CAC1B,eAAiB,QAAgBR,EAAKtoD,UAAUipD,qBAChD,gBAAkB,QAAgBX,EAAKtoD,UAAUipD,uBAOzDX,EAAKtoD,UAAUgpD,oBAAsB,CACjC,6BAA8B,CAC1B,YAAc,QAAgB,4BAC9B,OAAS,QAAgBV,EAAKtoD,UAAU6pD,aAOhDvB,EAAKtoD,UAAUkpD,sBAAwB,CACnC,6BAA8B,CAC1B,SAAW,QAAgB,yBAC3B,SAAW,QAAgBZ,EAAKtoD,UAAU2pD,eAOlDrB,EAAKtoD,UAAU4pD,gBAAkB,CAC7B,6BAA8B,CAC1B,SAAW,OAAatB,EAAKtoD,UAAUmpD,aAO/Cb,EAAKtoD,UAAU8pD,cAAgB,CAC3B,6BAA8B,CAC1B,UAAY,OAAaxB,EAAKtoD,UAAUqpD,eAOhDf,EAAKtoD,UAAUgqD,iBAAmB,CAC9B,6BAA8B,CAC1B,aAAe,QAAgB1B,EAAKtoD,UAAUmqD,iBAC9C,aAAe,QAAgB7B,EAAKtoD,UAAUmqD,mBAOtD7B,EAAKtoD,UAAUopD,gBAAkB,CAC7B,6BAA8B,CAC1B,cAAgB,OAAad,EAAKtoD,UAAUupD,oBAOpDjB,EAAKtoD,UAAUspD,iBAAmB,CAC9B,6BAA8B,CAC1B,mBAAqB,OAAahB,EAAKtoD,UAAUwpD,yBAYzDlB,EAAKtoD,UAAU+4C,cAIfuP,EAAKtoD,UAAU8mD,iBAAmB,CAC9B,6BAA8B,CAC1B,UAAY,QAAkBwB,EAAKtoD,UAAUonD,WAC7C,UAAY,QAAkBkB,EAAKtoD,UAAUonD,aAMrDkB,EAAKtoD,UAAUqoD,qBAAuB,CAClC,6BAA8B,CAC1B,aAAe,QAAkB,MACjC,aAAe,QAAkB,QAMzCC,EAAKtoD,UAAUkoD,mCAAqC,CAChD,6BAA8B,CAC1B,eAAiB,QAAkBI,EAAKtoD,UAAUmoD,6BAClD,eAAiB,QAAkBG,EAAKtoD,UAAUmoD,+BAM1DG,EAAKtoD,UAAU8nD,wBAA0B,CACrC,6BAA8B,CAC1B,aAAe,QAAkBQ,EAAKtoD,UAAU+nD,oBAMxDO,EAAKtoD,UAAUsmD,oCAAsC,CACjD,6BAA8B,CAC1B,kBAAoB,QAAkBgC,EAAKtoD,UAAUimD,8BACrD,aAAe,QAAkBqC,EAAKtoD,UAAUimD,gCAMxDqC,EAAKtoD,UAAUwmD,qBAAuB,CAClC,6BAA8B,CAC1B,OAAS,QAAkB8B,EAAKtoD,UAAU4lD,wBAC1C,YAAc,QAAkB0C,EAAKtoD,UAAUmmD,6BAC/C,OAAS,QAAkBmC,EAAKtoD,UAAU0nD,YAC1C,YAAc,QAAkBY,EAAKtoD,UAAU4nD,iBAC/C,YAAc,QAAkBU,EAAKtoD,UAAU4lD,wBAC/C,iBAAmB,QAAkB0C,EAAKtoD,UAAUmmD,6BACpD,YAAc,QAAkBmC,EAAKtoD,UAAUunD,iBAC/C,SAAW,QAAkBe,EAAKtoD,UAAU4mD,uBAC5C,cAAgB,QAAkB0B,EAAKtoD,UAAUgoD,4BACjD,SAAW,QAAkBM,EAAKtoD,UAAU4mD,uBAC5C,cAAgB,QAAkB0B,EAAKtoD,UAAUgoD,4BACjD,UAAY,QAAkBM,EAAKtoD,UAAUooD,iBAGrD,kCCtgCI,EAAwC,WACxC,IAAIh5C,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GA8BxC6xC,EAA6B,CAC7B,6BAA8B,CAC1B,WAAa,QAAyB,gCAAuC,YAOjFyJ,EAA8B,CAC9B,6BAA8B,CAC1B,eAAiB,QAAyB,MAC1C,cAAgB,QAAyB,MACzC,cAAgB,QAAyB,QAO7CC,EAA+B,CAC/B,6BAA8B,CAC1B,oBAAsB,SAmd9B,SAAgC/Z,EAAMqJ,GAClC,OAAO,OAAgB,CAAC,EAAGyQ,EAA6B9Z,EAAMqJ,EAClE,GArd+E,sBACvE,eAAiB,SAqfzB,SAA2BrJ,EAAMqJ,GAC7B,OAAO,OAAgB,GAAI2Q,EAAwBha,EAAMqJ,EAC7D,GAvfqE,eAMjE4Q,EAAoB,CACpB,6BAA8B,CAC1B,cAAgB,QAAkB,QAMtCC,EAA0B,CAC1B,6BAA8B,CAC1B,QAAU,SA6elB,SAAsBla,EAAM70B,EAASk+B,GACjC,IAAI//C,EAAU+/C,EAAYA,EAAYj8C,OAAS,GAC3C6iD,EAAc3mD,EAAqB,YACnC4mD,EAAY5mD,EAAmB,UAC/B6wD,EAAa7wD,EAAoB,WACjCinD,GAAQ,IAAAp7C,GAAgB+6C,EAAWD,GACvCjQ,EAAKroC,YAAY44C,GACE,IAAf4J,EACA,gCAAmC5J,EAAOplC,EAASk+B,GAGnD,gCAAmCkH,EAAOplC,EAASk+B,EAE3D,IAzfQ,QAAU,SA8iBlB,SAAqBrJ,EAAM70B,EAASk+B,GAChC,IAAI//C,EAAU+/C,EAAYA,EAAYj8C,OAAS,IAC/C,YAA2BoT,IAApB2K,EAAQ3I,QAAuB,IACtC,IAAIytC,EAAc3mD,EAAqB,YACnC8wD,EAAgB9wD,EAAuB,cACvC4mD,EAAY5mD,EAAmB,UAC/B+wD,EAAWC,GAAYF,EAAenK,GACtCV,EAAepkC,EAAQ/I,kBAC3B49B,EAAKjjC,aAAa,WAAYs9C,GAC9Bra,EAAK8K,eAAeyP,EAAO,SAAWH,EAAelK,GACrD,IAAIwB,EAAMvmC,EAAQ3I,QAClB,QAAYhC,IAARkxC,EAAmB,CAGnB,IAFA,IAAIl4C,EAAO2R,EAAQ6L,UACfI,EAAS,GACJ5iB,EAAI,EAAGiL,EAAKjG,EAAKpM,OAAQoH,EAAIiL,EAAIjL,IAAK,CAC3C,IAAI9J,EAAQygB,EAAQlc,IAAIuK,EAAKhF,IAC7B,QAAcgM,IAAV9V,EAAqB,CACrB,IAAI8vD,EAAShhD,EAAKhF,GACd9J,GAC4D,mBAAnC,EAA6B,wBACtD8vD,EAASjL,GAEbn4B,EAAO9a,KAAK,CAAEuC,KAAM27C,EAAQ9vD,MAAOA,GACvC,CACJ,EACA,QACiD,CAC7C,WAAcpB,EAAoB,WAClC02C,KAAMA,EACN,KAAQ12C,EAAc,KACtB,QAAWA,EAAiB,SAC5B4wD,GAAyB,QAAsB,YAAa9iC,EAAQiyB,GACxEoR,EAAkBza,EAAM0R,EAC5B,CACJ,IA/kBQ,QAAU,SA0hBlB,SAAqB1R,EAAM70B,EAASk+B,GAChC,IAAI//C,EAAU+/C,EAAYA,EAAYj8C,OAAS,IAC/C,YAA2BoT,IAApB2K,EAAQ3I,QAAuB,IACtC,IAAIytC,EAAc3mD,EAAqB,YACnC8wD,EAAgB9wD,EAAuB,cACvC4mD,EAAY5mD,EAAmB,UAC/B+wD,EAAWC,GAAYF,EAAenK,GAC1CjQ,EAAKjjC,aAAa,WAAYs9C,GAC9Bra,EAAK8K,eAAeyP,EAAO,SAAWH,EAAelK,GACrD,IAAIwB,EAAMvmC,EAAQ3I,aACNhC,IAARkxC,GACA+I,EAAkBza,EAAM0R,EAEhC,IAtiBQ,UAAY,SAolBpB,SAAuB1R,EAAM0a,EAAMrR,GAC/B,IAAIxqC,GAAO,IAAA1J,GAAgBwlD,EAAO,QAE9BR,EADU9Q,EAAYA,EAAYj8C,OAAS,GACV,WAGrC,GAFA4yC,EAAKroC,YAAYkH,IACjB,QAAoBA,EAAM67C,EAAK77C,WACZ2B,IAAfk6C,EAAKhwD,OAAsC,OAAfgwD,EAAKhwD,MAAgB,CACjD,IAAIA,GAAQ,IAAAyK,GAAgBwlD,EAAO,SACnC3a,EAAKroC,YAAYjN,GACbgwD,EAAKhwD,OAED,mBADsBgwD,EAAU,MAAuB,sBAExC,IAAfP,EACA,iCAAoCzvD,EAAOgwD,EAAKhwD,MAAO2+C,GAGvD,iCAAoC3+C,EAAOgwD,EAAKhwD,MAAO2+C,IAI3D,QAAoB3+C,EAAOgwD,EAAKhwD,MAExC,CACJ,IA1mBQ,QAAU,SAgnBlB,SAAqBs1C,EAAM4a,EAAevR,GAClCuR,EAAcC,UACd7a,EAAKjjC,aAAa,WAAY69C,EAAcC,eAEbr6C,IAA/Bo6C,EAAcE,cACd9a,EAAKjjC,aAAa,eAAgBgwC,OAAO6N,EAAcE,oBAE/Bt6C,IAAxBo6C,EAAclwD,QACd,QAAoBs1C,EAAM4a,EAAclwD,MAEhD,MAzjBIqwD,EAAiB,UAIjBR,EAAQ,gCAIRS,EAAQ,6BAIRL,EAAQ,6BAQRM,EAAmB,CACnB,QAAS,0EACT,QAAS,2EAMTC,EAAkB,QAUlBC,EAAqB,SAAU18C,GAK/B,SAAS08C,EAAI97C,GACT,IAAIzU,EAAQ6T,EAAOzH,KAAKhN,OAASA,KAC7B0O,EAAU2G,GAA4B,CAAC,EAuB3C,OAlBAzU,EAAMwwD,aAAe1iD,EAAQu3C,YAK7BrlD,EAAMywD,WAAa3iD,EAAQw3C,UAK3BtlD,EAAM0wD,WAAa5iD,EAAQ6iD,UAAY7iD,EAAQ6iD,UAAY,IAAI,EAK/D3wD,EAAM4wD,gBAAkB9iD,EAAQ03C,eAC1B13C,EAAQ03C,eACR6K,EAAiBC,GAChBtwD,CACX,CAiTA,OA/UA,EAAUuwD,EAAK18C,GAkCf08C,EAAInsD,UAAUysD,eAAiB,WAC3B,OAAOzxD,KAAKoxD,YAChB,EAIAD,EAAInsD,UAAU0sD,eAAiB,SAAUzL,GACrCjmD,KAAKoxD,aAAenL,CACxB,EAOAkL,EAAInsD,UAAU27C,qBAAuB,SAAU3K,EAAM3gC,GAEjD,IAAI/V,EAAU,CACV02C,KAAMA,IAEV,QAAO12C,EAAS,CACZ,YAAeU,KAAKoxD,aACpB,UAAapxD,KAAKqxD,cAEtB,QAAO/xD,EAASU,KAAKs9C,eAAetH,EAAM3gC,GAA4B,CAAC,IACvE,IAAIgqC,EAAc,CAAC//C,GACnBU,KAAKsxD,WAAWjL,2BAA2BP,GAAsB,eAAI,QAAgB,kCACrF,IAAIvzB,GAAW,OAAgB,GAAIvyB,KAAKsxD,WAAWjL,2BAA4BrQ,EAAMqJ,EAAar/C,KAAKsxD,YAIvG,OAHK/+B,IACDA,EAAW,IAERA,CACX,EAQA4+B,EAAInsD,UAAU2sD,wBAA0B,SAAUrvC,GAC9C,GAAKA,EAGA,IAAsB,iBAAXA,EAAqB,CACjC,IAAIsvC,GAAM,QAAMtvC,GAChB,OAAOtiB,KAAK6xD,oCAAoCD,EACpD,CACK,OAAI,QAAWtvC,GACTtiB,KAAK6xD,oCACY,GAGjB7xD,KAAK8xD,gCACW,EAC3B,CACJ,EASAX,EAAInsD,UAAU+sD,8BAAgC,SAAUzvC,GACpD,GAAKA,EAGA,IAAsB,iBAAXA,EAAqB,CACjC,IAAIsvC,GAAM,QAAMtvC,GAChB,OAAOtiB,KAAKgyD,0CAA0CJ,EAC1D,CACK,OAAI,QAAWtvC,GACTtiB,KAAKgyD,0CACY,GAGjBhyD,KAAKiyD,sCACW,EAC3B,CACJ,EAMAd,EAAInsD,UAAUgtD,0CAA4C,SAAUJ,GAChE,IAAK,IAAI9vD,EAAyB8vD,EAAc,WAAG9vD,EAAGA,EAAIA,EAAEowD,YACxD,GAAIpwD,EAAE0kD,UAAY2L,KAAKC,aACnB,OAAOpyD,KAAKiyD,sCACW,EAInC,EAMAd,EAAInsD,UAAUitD,sCAAwC,SAAUjc,GAC5D,IAAIx2C,EAAS,CAAC,EACVkB,GAAQ,QAA6Bs1C,EAAKuM,aAAa,qBAE3D,OADA/iD,EAAyB,iBAAIkB,GACtB,OACkC,EAAU2lD,EAA4BrQ,EAAM,GAAIh2C,KAAKsxD,WAClG,EAKAH,EAAInsD,UAAU6sD,oCAAsC,SAAUD,GAC1D,IAAK,IAAI9vD,EAAyB8vD,EAAc,WAAG9vD,EAAGA,EAAIA,EAAEowD,YACxD,GAAIpwD,EAAE0kD,UAAY2L,KAAKC,aACnB,OAAOpyD,KAAK8xD,gCAAuD,EAI/E,EAKAX,EAAInsD,UAAU8sD,gCAAkC,SAAU9b,GACtD,OAAO,OAC4B,CAAG,EAAG+Z,EAA8B/Z,EAAM,GACjF,EAQAmb,EAAInsD,UAAUqtD,gBAAkB,SAAU3jD,GACtC,IAGI21B,EAHA2R,GAAO,IAAA7qC,GAAgBwlD,EAAO,cAIlC,GAHA3a,EAAKjjC,aAAa,UAAW,OAC7BijC,EAAKjjC,aAAa,UAAW,SAEzBrE,IACIA,EAAQ4jD,QACRtc,EAAKjjC,aAAa,SAAUrE,EAAQ4jD,QAEpC5jD,EAAQ6jD,cACRvc,EAAKjjC,aAAa,eAAgBrE,EAAQ6jD,mBAElB/7C,IAAxB9H,EAAQ8jD,aACRxc,EAAKjjC,aAAa,cAAegwC,OAAOr0C,EAAQ8jD,cAEhD9jD,EAAQ+jD,YACRzc,EAAKjjC,aAAa,aAAcrE,EAAQ+jD,iBAEjBj8C,IAAvB9H,EAAQusB,YACR+a,EAAKjjC,aAAa,aAAcgwC,OAAOr0C,EAAQusB,kBAE7BzkB,IAAlB9H,EAAQssB,OACRgb,EAAKjjC,aAAa,QAASgwC,OAAOr0C,EAAQssB,aAEnBxkB,IAAvB9H,EAAQgkD,YACR1c,EAAKjjC,aAAa,aAAcrE,EAAQgkD,YAE5CruB,EAAS31B,EAAQ21B,OACb31B,EAAQikD,MAAM,EACd,OAAOjkD,EAAQ62C,aAAc,IAC7B,IAAIoN,GAAO,IAAAA,MACYjkD,EAAoB,aAAGA,EAAQikD,KAAMjkD,EAAQy3C,SAGhE9hB,EAFAA,GAES,IAAAuuB,KAAUvuB,EAAQsuB,GAGlBA,CAEjB,CAEJ3c,EAAK8K,eAAe,KAAyB,qBAAsB9gD,KAAKwxD,iBAExE,IAAIlyD,EAAU,CACV02C,KAAMA,GAaV,OAXA,QAAO12C,EAAS,CACZ,QAAWoP,EAAQy3C,QACnB,UAAaz3C,EAAQw3C,UAAYx3C,EAAQw3C,UAAYlmD,KAAKqxD,WAC1D,cAAiB3iD,EAAQ0hD,cACzB,aAAgB1hD,EAAQ62C,aACxB,OAAUlhB,EACV,cAAiB31B,EAAQmkD,cAAgBnkD,EAAQmkD,cAAgB,MAErE,OAAO1xD,MAAMkP,QAAQ3B,EAAQo4C,cAAe,IAyjBpD,SAAyB9Q,EAAM8Q,EAAczH,GACzC,IAAI//C,EAAiC+/C,EAAYA,EAAYj8C,OAAS,GAClE4S,GAAyD,QAAO,CAAC,EAAG1W,GACxE0W,EAAKggC,KAAOA,GACZ,QAAoBhgC,EAAM88C,IAAwB,QAAsB,SAAUhM,EAAczH,EACpG,CA7jBQgT,CAAgBrc,EACetnC,EAAoB,aAAG,CAACpP,IAChD02C,CACX,EAWAmb,EAAInsD,UAAU+tD,iBAAmB,SAAUC,EAASC,EAASC,EAASxkD,GAClE,IAMIykD,EAEAj8C,EARAmoC,EAAc,GACdrJ,GAAO,IAAA7qC,GAAgBwlD,EAAO,eAC9ByC,EAAU1kD,EAAQ0kD,QAAU1kD,EAAQ0kD,QAAUlC,EAC9Cf,EAAyB,UAAZiD,EAAsB,EAAI,EAC3Cpd,EAAKjjC,aAAa,UAAW,OAC7BijC,EAAKjjC,aAAa,UAAWqgD,GAIzB1kD,IACAykD,EAAUzkD,EAAQ2kD,WAAa3kD,EAAQ2kD,WAAa,CAAC,EACjD3kD,EAAQ4jD,QACRtc,EAAKjjC,aAAa,SAAUrE,EAAQ4jD,SAG5C,IAAIlM,EAAiB6K,EAAiBmC,GACtCpd,EAAK8K,eAAe,KAAyB,qBAAsBsF,GACnE,IAAIgK,EAAgB1hD,EAAQ0hD,cACtB1hD,EAAQ0hD,cACRW,EA6CN,OA5CIiC,IACA97C,GAAM,QAAO,CAAE8+B,KAAMA,GAAQ,CACzB,UAAatnC,EAAQw3C,UACrB,YAAex3C,EAAQu3C,YACvB,cAAiBmK,EACjB,WAAcD,EACd,KAAQzhD,EAAQ8zC,KAChB,QAAW9zC,EAAQy3C,WAEvB,QAAOjvC,EAAKi8C,IACZ,QAAoBj8C,EAAKg5C,GAAyB,QAAsB,UAAW8C,EAAS3T,IAE5F4T,IACA/7C,GAAM,QAAO,CAAE8+B,KAAMA,GAAQ,CACzB,UAAatnC,EAAQw3C,UACrB,YAAex3C,EAAQu3C,YACvB,cAAiBmK,EACjB,WAAcD,EACd,KAAQzhD,EAAQ8zC,KAChB,QAAW9zC,EAAQy3C,WAEvB,QAAOjvC,EAAKi8C,IACZ,QAAoBj8C,EAAKg5C,GAAyB,QAAsB,UAAW+C,EAAS5T,IAE5F6T,IACA,QAAoB,CAChBld,KAAMA,EACN,UAAatnC,EAAQw3C,UACrB,YAAex3C,EAAQu3C,YACvB,cAAiBmK,EACjB,WAAcD,EACd,QAAWzhD,EAAQy3C,SACpB+J,GAAyB,QAAsB,UAAWgD,EAAS7T,GAEtE3wC,EAAQ4kD,iBACR,QAAoB,CAChBtd,KAAMA,EACN,UAAatnC,EAAQw3C,UACrB,YAAex3C,EAAQu3C,YACvB,cAAiBmK,EACjB,WAAcD,EACd,QAAWzhD,EAAQy3C,SACpB+J,GAAyB,QAAsB,UAAWxhD,EAAQ4kD,eAAgBjU,GAElFrJ,CACX,EAKAmb,EAAInsD,UAAUuuD,2BAA6B,SAAU3B,GACjD,IAAK,IAAI9vD,EAAI8vD,EAAIlkD,WAAY5L,EAAGA,EAAIA,EAAEowD,YAClC,GAAIpwD,EAAE0kD,UAAY2L,KAAKC,aACnB,OAAOpyD,KAAKqpD,uBAA8C,GAGlE,OAAO,IACX,EAKA8H,EAAInsD,UAAUqkD,uBAAyB,SAAUrT,GAC7C,GAAIA,EAAKkR,mBAAqBlR,EAAKkR,kBAAkBA,kBAEjD,IAAK,IAAIplD,GADTk0C,EAAOA,EAAKkR,kBAAkBA,mBACZA,kBAAmBplD,EAAGA,EAAIA,EAAEwlD,mBAC1C,GAA8B,IAAxBxlD,EAAEgR,WAAW1P,SACU,IAAxBtB,EAAEgR,WAAW1P,QAA0C,IAA1BtB,EAAE4L,WAAW84C,UAAkB,CAC7D,IAAInH,EAAc,CAAC,CAAC,GAEpB,OADAr/C,KAAKsxD,WAAWrK,oBAAoBnlD,EAAGu9C,IAChC,IAAAp6C,KAAco6C,EAAYprC,MAAMkyC,QAC3C,CAGR,OAAO,IACX,EACOgL,CACX,CAjVwB,CAiVtB7H,EAAA,GAaEkK,EAAkB,CAClB,6BAA8B,CAC1B,WAAa,SAAgB,SAAUxd,EAAMqJ,GACzC,OAAOrJ,EAAKuM,aAAa,MAC7B,MAcJyN,EAAyB,CACzB,6BAA8B,CAC1B,QATR,SAAmBha,EAAMqJ,IACrB,QAAUmU,EAAiBxd,EAAMqJ,EACrC,IA0CA,SAASoR,EAAkBza,EAAM0R,EAAKrI,GAClC,IAAIhb,GAAS,IAAAl5B,GAAgB6lD,EAAO,UAChCzK,GAAQ,IAAAp7C,GAAgB6lD,EAAO,aACnC3sB,EAAO12B,YAAY44C,GACnBA,EAAMxzC,aAAa,MAA6B,GAChDijC,EAAKroC,YAAY02B,EACrB,CAMA,SAASisB,GAAYF,EAAenK,GAEhC,IAAIwN,GADJrD,EAAgBA,GAAgCW,GACnB,IAE7B,OAAoC,IAAhC9K,EAAYvzC,QAAQ+gD,GACbxN,EAGAwN,EAASxN,CAExB,CA4GA,IAAI6M,GAAyB,CACzB,6BAA8B,CAC1B,OAAS,SA2BjB,SAAoB9c,EAAMiQ,EAAa5G,GACnC,IAKIgR,EALA/wD,EAAiC+/C,EAAYA,EAAYj8C,OAAS,GAClEgtD,EAAgB9wD,EAAuB,cACvC4mD,EAAY5mD,EAAmB,UAC/BuzD,EAAgBvzD,EAAuB,cACvC6mD,EAAU7mD,EAAiB,QAI3B+wD,EADAD,EACWE,GAAYF,EAAenK,GAG3BA,EAEfjQ,EAAKjjC,aAAa,WAAYs9C,GAC1BlK,GACAnQ,EAAKjjC,aAAa,UAAWozC,GAE7BD,GACAlQ,EAAK8K,eAAeyP,EAAO,SAAWH,EAAelK,GAEzD,IAAIlwC,GAAyD,QAAO,CAAC,EAAG1W,GACxE0W,EAAKggC,KAAOA,GACZ,QAAoBhgC,EAAMi6C,GAAmB,QAAsB,gBAAiB4C,EAAexT,GACnG,IAAIhb,EAAS/kC,EAAgB,OAC7B,GAAI+kC,EAAQ,CACR,IAAIkiB,GAAQ,IAAAp7C,GAAgB6lD,EAAO,UACnChb,EAAKroC,YAAY44C,GACjBmN,GAAqBnN,EAAOliB,EAAQgb,EACxC,CACJ,KAvDI,6BAA8B,CAC1B,QAAU,SAkHlB,SAA2BrJ,EAAM3R,EAAQgb,GACrC,IAAIsU,GAAiB,IAAAxoD,GArqBb,6BAqqBoC,mBAC5C,QAAoBwoD,EAAgBtvB,EAAOuvB,cAC3C5d,EAAKroC,YAAYgmD,GACjB,IAAIE,GAAa,IAAA1oD,GAAgB26C,EAAO,cACxC9P,EAAKroC,YAAYkmD,GACjB,IAAIt0C,GAAQ,IAAApU,GAAgB26C,EAAO,SACnC+N,EAAWlmD,YAAY4R,GACvBu0C,GAAiBv0C,EAAO8kB,EAAO9kB,OAC/B,IAAIE,GAAM,IAAAtU,GAAgB26C,EAAO,OACjC+N,EAAWlmD,YAAY8R,GACvBq0C,GAAiBr0C,EAAK4kB,EAAO5kB,IACjC,IA7HQ,KAAO,QAAkBs0C,IACzB,IAAM,QAAkBA,IACxB,KAAO,SA+If,SAAwB/d,EAAM3R,EAAQgb,GAElC,IAAIrpC,EAAO,CAAEggC,KAAMA,GACfge,EAAY3vB,EAAO2vB,WACvB,QAAoBh+C,EAAM88C,IAAwB,QAAsBkB,EAAUC,cAAe,CAACD,GAAY3U,EAClH,IAnJQ,MAAQ,SAkEhB,SAAyBrJ,EAAM3R,EAAQgb,GACrBA,EAAYA,EAAYj8C,OAAS,GAC9B,QAAIihC,EAAO8hB,QAC5B+N,GAAqBle,EAAM3R,EAAOkhB,cAClC,iCAAoCvP,EAAM3R,EAAOjoB,OAAQijC,EAC7D,IAtEQ,UAAY,SA4EpB,SAA6BrJ,EAAM3R,EAAQgb,GACzBA,EAAYA,EAAYj8C,OAAS,GAC9B,QAAIihC,EAAO8hB,QAC5B+N,GAAqBle,EAAM3R,EAAOkhB,cAClC,iCAAoCvP,EAAM3R,EAAOzsB,SAAUynC,EAC/D,IAhFQ,YAAc,SAsFtB,SAA+BrJ,EAAM3R,EAAQgb,GAC3BA,EAAYA,EAAYj8C,OAAS,GAC9B,QAAIihC,EAAO8hB,QAC5B+N,GAAqBle,EAAM3R,EAAOkhB,cAClC,iCAAoCvP,EAAM3R,EAAOzsB,SAAUynC,EAC/D,IA1FQ,QAAU,SAgGlB,SAA2BrJ,EAAM3R,EAAQgb,GACvBA,EAAYA,EAAYj8C,OAAS,GAC9B,QAAIihC,EAAO8hB,QAC5B+N,GAAqBle,EAAM3R,EAAOkhB,cAClC,iCAAoCvP,EAAM3R,EAAOzsB,SAAUynC,EAC/D,IApGQ,mBAAqB,QAAkB8U,IACvC,sBAAwB,QAAkBA,IAC1C,oBAAsB,QAAkBA,IACxC,6BAA+B,QAAkBA,IACjD,uBAAyB,QAAkBA,IAC3C,gCAAkC,QAAkBA,IACpD,gBAAkB,SA2J1B,SAA2Bne,EAAM3R,EAAQgb,GACrC6U,GAAqBle,EAAM3R,EAAOuvB,aACtC,IA5JQ,mBAAqB,SAkK7B,SAA8B5d,EAAM3R,EAAQgb,GACxC6U,GAAqBle,EAAM3R,EAAOuvB,cAClC,IAAIQ,GAAgB,IAAAjpD,GAAgB6lD,EAAO,iBAC3Chb,EAAKroC,YAAYymD,GACjBC,GAAgBD,EAAe,GAAK/vB,EAAO+vB,eAC3C,IAAIE,GAAgB,IAAAnpD,GAAgB6lD,EAAO,iBAC3Chb,EAAKroC,YAAY2mD,GACjBD,GAAgBC,EAAe,GAAKjwB,EAAOiwB,cAC/C,IAzKQ,gBAAkB,SA+K1B,SAA2Bte,EAAM3R,EAAQgb,GACrCrJ,EAAKjjC,aAAa,WAAYsxB,EAAOkwB,UACrCve,EAAKjjC,aAAa,aAAcsxB,EAAOmwB,YACvCxe,EAAKjjC,aAAa,aAAcsxB,EAAOowB,iBACdj+C,IAArB6tB,EAAOqwB,WACP1e,EAAKjjC,aAAa,YAAasxB,EAAOqwB,UAAU3vD,YAEpDmvD,GAAqBle,EAAM3R,EAAOuvB,cAClCS,GAAgBre,EAAM,GAAK3R,EAAO3hC,QACtC,MA5IA,SAASgxD,GAAqB1d,EAAM3R,EAAQgb,GAExC,IAAIrpC,EAAO,CAAEggC,KAAMA,IACnB,QAAoBhgC,EAAM88C,IAAwB,QAAsBzuB,EAAO4vB,cAAe,CAAC5vB,GAASgb,EAC5G,CAoEA,SAAS0U,GAAmB/d,EAAM3R,EAAQgb,GAItC,IAFA,IAAIrpC,EAAO,CAAEggC,KAAMA,GACf2e,EAAatwB,EAAOswB,WACfnqD,EAAI,EAAGiL,EAAKk/C,EAAWvxD,OAAQoH,EAAIiL,IAAMjL,EAAG,CACjD,IAAIwpD,EAAYW,EAAWnqD,IAC3B,QAAoBwL,EAAM88C,IAAwB,QAAsBkB,EAAUC,cAAe,CAACD,GAAY3U,EAClH,CACJ,CAiBA,SAAS8U,GAAsBne,EAAM3R,EAAQgb,QAChB7oC,IAArB6tB,EAAOqwB,WACP1e,EAAKjjC,aAAa,YAAasxB,EAAOqwB,UAAU3vD,YAEpDmvD,GAAqBle,EAAM3R,EAAOuvB,cAClCS,GAAgBre,EAAM,GAAK3R,EAAOuwB,WACtC,CA2CA,SAASC,GAAmBC,EAAS9e,EAAMt1C,GACvC,IAAIq0D,GAAW,IAAA5pD,GAAgB6lD,EAAO8D,IACtC,QAAoBC,EAAUr0D,GAC9Bs1C,EAAKroC,YAAYonD,EACrB,CAKA,SAASb,GAAqBle,EAAMt1C,GAChCm0D,GAAmB,eAAgB7e,EAAMt1C,EAC7C,CAKA,SAAS2zD,GAAgBre,EAAMt1C,GAC3Bm0D,GAAmB,UAAW7e,EAAMt1C,EACxC,CAKA,SAASozD,GAAiB9d,EAAMhhB,GAC5B,IAAIggC,GAAc,IAAA7pD,GAAgB26C,EAAO,eACzC9P,EAAKroC,YAAYqnD,GACjB,IAAIC,GAAe,IAAA9pD,GAAgB26C,EAAO,gBAC1CkP,EAAYrnD,YAAYsnD,IACxB,QAAoBA,EAAcjgC,EACtC,CAQO,SAASkgC,GAAY7wB,GACxB,IAAIkiB,GAAQ,IAAAp7C,GAAgB6lD,EAAO,UAEnC,OADA0C,GAAqBnN,EAAOliB,EAAQ,IAC7BkiB,CACX,CAYA,yEC98BQnyC,oIADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAiLJ,SAAS2gD,EAAQ7yC,GACb,MAAsB,iBAAXA,EACAA,EAGA,EAEf,CACA,QAzKiC,SAAU7N,GAEvC,SAAS2gD,IACL,OAAO3gD,EAAOzH,KAAKhN,OAASA,IAChC,CAuJA,OA1JAqU,EAAU+gD,EAAa3gD,GAOvB2gD,EAAYpwD,UAAUwhC,QAAU,WAC5B,OAAO2c,EAAA,MACX,EASAiS,EAAYpwD,UAAU24C,YAAc,SAAUr7B,EAAQjN,GAClD,OAAOrV,KAAKq1D,oBAAoBF,EAAQ7yC,GAAStiB,KAAK09C,aAAaroC,GACvE,EAQA+/C,EAAYpwD,UAAUqwD,oBAAsB,SAAUhwD,EAAMgQ,GACxD,OAAO,SACX,EASA+/C,EAAYpwD,UAAU44C,aAAe,SAAUt7B,EAAQjN,GACnD,OAAOrV,KAAKs1D,qBAAqBH,EAAQ7yC,GAAStiB,KAAK09C,aAAaroC,GACxE,EAQA+/C,EAAYpwD,UAAUswD,qBAAuB,SAAUjwD,EAAMgQ,GACzD,OAAO,SACX,EASA+/C,EAAYpwD,UAAU64C,aAAe,SAAUv7B,EAAQjN,GACnD,OAAOrV,KAAKu1D,qBAAqBJ,EAAQ7yC,GAAStiB,KAAK09C,aAAaroC,GACxE,EAQA+/C,EAAYpwD,UAAUuwD,qBAAuB,SAAUlwD,EAAMgQ,GACzD,OAAO,SACX,EAQA+/C,EAAYpwD,UAAUu4C,eAAiB,SAAUj7B,GAC7C,OAAOtiB,KAAKw1D,uBAAuBL,EAAQ7yC,GAC/C,EAMA8yC,EAAYpwD,UAAUwwD,uBAAyB,SAAUnwD,GACrD,OAAOrF,KAAKo9C,cAChB,EASAgY,EAAYpwD,UAAU84C,aAAe,SAAU38B,EAAS9L,GACpD,OAAOrV,KAAKy1D,iBAAiBt0C,EAASnhB,KAAK09C,aAAaroC,GAC5D,EAQA+/C,EAAYpwD,UAAUywD,iBAAmB,SAAUt0C,EAAS9L,GACxD,OAAO,SACX,EASA+/C,EAAYpwD,UAAU+4C,cAAgB,SAAUxrB,EAAUld,GACtD,OAAOrV,KAAK01D,kBAAkBnjC,EAAUvyB,KAAK09C,aAAaroC,GAC9D,EAQA+/C,EAAYpwD,UAAU0wD,kBAAoB,SAAUnjC,EAAUld,GAC1D,OAAO,SACX,EASA+/C,EAAYpwD,UAAUg5C,cAAgB,SAAUpmC,EAAUvC,GACtD,OAAOrV,KAAK21D,kBAAkB/9C,EAAU5X,KAAK09C,aAAaroC,GAC9D,EAQA+/C,EAAYpwD,UAAU2wD,kBAAoB,SAAU/9C,EAAUvC,GAC1D,OAAO,SACX,EACO+/C,CACX,CA5JgC,CA4J9B,MCvLF,IAAI,EAAwC,WACxC,IAAIhhD,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GAgCxCohD,EAAsB,CACtB,MAAS/R,EAAA,QACT,WAAcE,EAAA,QACd,QAAWE,EAAA,GACX,WAAcE,EAAA,EACd,gBAAmBE,EAAA,EACnB,aAAgBE,EAAA,GAiBhBvmC,EAAQ,QAgCR63C,EAAkB,CAAC,EACvB,IAAK,IAAIzkD,KAAQq1B,EAAA,QACbovB,EAAgBzkD,GAAQq1B,EAAA,QAAar1B,GAAM0kD,cAK/C,IAAIC,EAAuB,WAIvB,SAASA,EAAMC,GAIXh2D,KAAKg2D,IAAMA,EAKXh2D,KAAKi2D,QAAU,CACnB,CA+GA,OAzGAF,EAAM/wD,UAAUkxD,SAAW,SAAU/qD,GACjC,OAAQA,GAAK,KAAOA,GAAK,KAASA,GAAK,KAAOA,GAAK,GACvD,EAQA4qD,EAAM/wD,UAAUmxD,WAAa,SAAUhrD,EAAGirD,GAEtC,OAAQjrD,GAAK,KAAOA,GAAK,KAAc,KAALA,UADJqL,IAAhB4/C,GAA4BA,EAE9C,EAMAL,EAAM/wD,UAAUqxD,cAAgB,SAAUlrD,GACtC,MAAY,KAALA,GAAiB,MAALA,GAAkB,MAALA,GAAkB,MAALA,CACjD,EAKA4qD,EAAM/wD,UAAUsxD,UAAY,WACxB,OAAOt2D,KAAKg2D,IAAI9iB,SAASlzC,KAAKi2D,OAClC,EAKAF,EAAM/wD,UAAUuxD,UAAY,WACxB,IAIInlD,EAJAjG,EAAInL,KAAKs2D,YACT/7C,EAAWva,KAAKi2D,OAEhBv1D,EAAQyK,EAEZ,GAAS,KAALA,EACAiG,EA7EI,OA+EH,GAAS,KAALjG,EACLiG,EA7ED,OA+EE,GAAS,KAALjG,EACLiG,EAlFK,OAoFJ,GAAIpR,KAAKm2D,WAAWhrD,IAAW,KAALA,EAC3BiG,EApFA,EAqFA1Q,EAAQV,KAAKw2D,mBAEZ,GAAIx2D,KAAKk2D,SAAS/qD,GACnBiG,EA3FF,EA4FE1Q,EAAQV,KAAKy2D,gBAEZ,IAAIz2D,KAAKq2D,cAAclrD,GACxB,OAAOnL,KAAKu2D,YAEX,GAAU,KAANprD,EAIL,MAAM,IAAIgB,MAAM,yBAA2BhB,GAH3CiG,EA7FH,CAiGD,CACA,MAAO,CAAEmJ,SAAUA,EAAU7Z,MAAOA,EAAO0Q,KAAMA,EACrD,EAKA2kD,EAAM/wD,UAAUwxD,YAAc,WAC1B,IAAIrrD,EACA+J,EAAQlV,KAAKi2D,OACb5kB,GAAU,EACVqlB,GAAqB,EACzB,GACa,KAALvrD,EACAkmC,GAAU,EAEA,KAALlmC,GAAiB,KAALA,IACjBurD,GAAqB,GAEzBvrD,EAAInL,KAAKs2D,kBACJt2D,KAAKm2D,WAAWhrD,EAAGkmC,KAGtBqlB,IAA4B,KAALvrD,GAAiB,KAALA,IAGpCurD,IAA4B,KAALvrD,GAAiB,KAALA,IACxC,OAAOzF,WAAW1F,KAAKg2D,IAAIW,UAAUzhD,EAAOlV,KAAKi2D,UACrD,EAKAF,EAAM/wD,UAAUyxD,UAAY,WACxB,IAAItrD,EACA+J,EAAQlV,KAAKi2D,OACjB,GACI9qD,EAAInL,KAAKs2D,kBACJt2D,KAAKk2D,SAAS/qD,IACvB,OAAOnL,KAAKg2D,IAAIW,UAAUzhD,EAAOlV,KAAKi2D,UAAUH,aACpD,EACOC,CACX,CA9H0B,GAkItBa,EAAwB,WAIxB,SAASA,EAAOC,GAKZ72D,KAAK82D,OAASD,EAKd72D,KAAK+2D,OAKL/2D,KAAKg3D,QAAUnP,EAAA,UACnB,CAgVA,OA3UA+O,EAAO5xD,UAAUiyD,SAAW,WACxBj3D,KAAK+2D,OAAS/2D,KAAK82D,OAAOP,WAC9B,EAMAK,EAAO5xD,UAAUkyD,YAAc,SAAU9lD,GAErC,OADcpR,KAAK+2D,OAAO3lD,MAAQA,CAEtC,EAMAwlD,EAAO5xD,UAAUnC,MAAQ,SAAUuO,GAC/B,IAAI+lD,EAAUn3D,KAAKk3D,YAAY9lD,GAI/B,OAHI+lD,GACAn3D,KAAKi3D,WAEFE,CACX,EAKAP,EAAO5xD,UAAUi+C,MAAQ,WAGrB,OAFAjjD,KAAKi3D,WACUj3D,KAAKo3D,gBAExB,EAMAR,EAAO5xD,UAAUqyD,qBAAuB,WACpC,IAAIzU,EAASiF,EAAA,WACTyP,EAAWt3D,KAAK+2D,OACpB,GAAI/2D,KAAKk3D,YAtNP,GAsNoC,CAClC,IAAIK,EAAUD,EAAS52D,MAvO3B,MAwOQ62D,EACA3U,EAASiF,EAAA,YApOjB,MAsOa0P,EACL3U,EAASiF,EAAA,YAlOhB,OAoOY0P,IACL3U,EAASiF,EAAA,cAETjF,IAAWiF,EAAA,YACX7nD,KAAKi3D,UAEb,CACA,OAAOrU,CACX,EAKAgU,EAAO5xD,UAAUwyD,6BAA+B,WAC5C,GAAIx3D,KAAK6C,MA3OD,GA2O8B,CAClC,IAAI4hD,EAAa,GACjB,GACIA,EAAWnyC,KAAKtS,KAAKo3D,wBAChBp3D,KAAK6C,MA5Of,IA6OC,GAAI7C,KAAK6C,MA/OJ,GAgPD,OAAO4hD,CAEf,MACK,GAAIzkD,KAAKy3D,mBACV,MAAO,GAEX,MAAM,IAAItrD,MAAMnM,KAAK03D,sBACzB,EAKAd,EAAO5xD,UAAU2yD,gBAAkB,WAC/B,GAAI33D,KAAK6C,MA9PD,GA8P8B,CAClC,IAAI2f,EAAcxiB,KAAK43D,cACvB,GAAI53D,KAAK6C,MA/PJ,GAgQD,OAAO2f,CAEf,MACK,GAAIxiB,KAAKy3D,mBACV,OAAO,KAEX,MAAM,IAAItrD,MAAMnM,KAAK03D,sBACzB,EAKAd,EAAO5xD,UAAU6yD,qBAAuB,WACpC,GAAI73D,KAAK6C,MA9QD,GA8Q8B,CAClC,IAAI2f,EAAcxiB,KAAK83D,kBACvB,GAAI93D,KAAK6C,MA/QJ,GAgRD,OAAO2f,CAEf,MACK,GAAIxiB,KAAKy3D,mBACV,MAAO,GAEX,MAAM,IAAItrD,MAAMnM,KAAK03D,sBACzB,EAKAd,EAAO5xD,UAAU+yD,kBAAoB,WACjC,GAAI/3D,KAAK6C,MA9RD,GA8R8B,CAClC,IAAI2f,EAAcxiB,KAAKg4D,2BACvB,GAAIh4D,KAAK6C,MA/RJ,GAgSD,OAAO2f,CAEf,MACK,GAAIxiB,KAAKy3D,mBACV,MAAO,GAEX,MAAM,IAAItrD,MAAMnM,KAAK03D,sBACzB,EAKAd,EAAO5xD,UAAUizD,qBAAuB,WACpC,GAAIj4D,KAAK6C,MA9SD,GA8S8B,CAClC,IAAI2f,EAOJ,GALIA,EAjTA,GAgTAxiB,KAAK+2D,OAAO3lD,KACEpR,KAAKk4D,sBAGLl4D,KAAK83D,kBAEnB93D,KAAK6C,MArTJ,GAsTD,OAAO2f,CAEf,MACK,GAAIxiB,KAAKy3D,mBACV,MAAO,GAEX,MAAM,IAAItrD,MAAMnM,KAAK03D,sBACzB,EAMAd,EAAO5xD,UAAUmzD,0BAA4B,WACzC,GAAIn4D,KAAK6C,MArUD,GAqU8B,CAClC,IAAI2f,EAAcxiB,KAAKg4D,2BACvB,GAAIh4D,KAAK6C,MAtUJ,GAuUD,OAAO2f,CAEf,MACK,GAAIxiB,KAAKy3D,mBACV,MAAO,GAEX,MAAM,IAAItrD,MAAMnM,KAAK03D,sBACzB,EAKAd,EAAO5xD,UAAUozD,uBAAyB,WACtC,GAAIp4D,KAAK6C,MArVD,GAqV8B,CAClC,IAAI2f,EAAcxiB,KAAKq4D,wBACvB,GAAIr4D,KAAK6C,MAtVJ,GAuVD,OAAO2f,CAEf,MACK,GAAIxiB,KAAKy3D,mBACV,MAAO,GAEX,MAAM,IAAItrD,MAAMnM,KAAK03D,sBACzB,EAKAd,EAAO5xD,UAAU4yD,YAAc,WAG3B,IAFA,IAAIp1C,EAAc,GACd81C,EAAat4D,KAAKg3D,QAAQ5zD,OACrBoH,EAAI,EAAGA,EAAI8tD,IAAc9tD,EAAG,CACjC,IAAI+tD,EAAQv4D,KAAK+2D,OACjB,IAAI/2D,KAAK6C,MAvWT,GA2WI,MAHA2f,EAAYlQ,KAA4BimD,EAAW,MAK3D,CACA,GAAI/1C,EAAYpf,QAAUk1D,EACtB,OAAO91C,EAEX,MAAM,IAAIrW,MAAMnM,KAAK03D,sBACzB,EAKAd,EAAO5xD,UAAU8yD,gBAAkB,WAE/B,IADA,IAAIt1C,EAAc,CAACxiB,KAAK43D,eACjB53D,KAAK6C,MAxXT,IAyXC2f,EAAYlQ,KAAKtS,KAAK43D,eAE1B,OAAOp1C,CACX,EAKAo0C,EAAO5xD,UAAUkzD,oBAAsB,WAEnC,IADA,IAAI11C,EAAc,CAACxiB,KAAK23D,mBACjB33D,KAAK6C,MAnYT,IAoYC2f,EAAYlQ,KAAKtS,KAAK23D,mBAE1B,OAAOn1C,CACX,EAKAo0C,EAAO5xD,UAAUgzD,yBAA2B,WAExC,IADA,IAAIx1C,EAAc,CAACxiB,KAAK63D,wBACjB73D,KAAK6C,MA9YT,IA+YC2f,EAAYlQ,KAAKtS,KAAK63D,wBAE1B,OAAOr1C,CACX,EAKAo0C,EAAO5xD,UAAUqzD,sBAAwB,WAErC,IADA,IAAI71C,EAAc,CAACxiB,KAAK+3D,qBACjB/3D,KAAK6C,MAzZT,IA0ZC2f,EAAYlQ,KAAKtS,KAAK+3D,qBAE1B,OAAOv1C,CACX,EAKAo0C,EAAO5xD,UAAUyyD,iBAAmB,WAChC,IAAIhjC,EAAUz0B,KAAKk3D,YAvajB,IAuagDl3D,KAAK+2D,OAAOr2D,OAASsd,EAIvE,OAHIyW,GACAz0B,KAAKi3D,WAEFxiC,CACX,EAMAmiC,EAAO5xD,UAAU0yD,oBAAsB,WACnC,MAAQ,eACJ13D,KAAK+2D,OAAOr2D,MACZ,iBACAV,KAAK+2D,OAAOx8C,SACZ,QACAva,KAAK82D,OAAOd,IACZ,GACR,EAKAY,EAAO5xD,UAAUoyD,eAAiB,WAC9B,IAAImB,EAAQv4D,KAAK+2D,OACjB,GAAI/2D,KAAK6C,MAjcP,GAic8B,CAC5B,IAAI21D,EAAWD,EAAM73D,MAErB,GADAV,KAAKg3D,QAAUh3D,KAAKq3D,uBACJ,sBAAZmB,EAAkC,CAClC,IAAI/T,EAAazkD,KAAKw3D,+BACtB,OAAO,IAAI7S,EAAA,EAAmBF,EAClC,CAEI,IAAIgU,EAAO7C,EAAoB4C,GAC/B,IAAKC,EACD,MAAM,IAAItsD,MAAM,0BAA4BqsD,GAEhD,IAAIh2C,OAAc,EAClB,OAAQg2C,GACJ,IAAK,QACDh2C,EAAcxiB,KAAK23D,kBACnB,MAEJ,IAAK,aACDn1C,EAAcxiB,KAAK63D,uBACnB,MAEJ,IAAK,UACDr1C,EAAcxiB,KAAK+3D,oBACnB,MAEJ,IAAK,aACDv1C,EAAcxiB,KAAKi4D,uBACnB,MAEJ,IAAK,kBACDz1C,EAAcxiB,KAAKm4D,4BACnB,MAEJ,IAAK,eACD31C,EAAcxiB,KAAKo4D,yBACnB,MAEJ,QACI,MAAM,IAAIjsD,MAAM,0BAA4BqsD,GAWpD,OARKh2C,IAEGA,EADAi2C,IAAS7C,EAA2B,MACtB,CAAC8C,IAAKA,KAGN,IAGf,IAAID,EAAKj2C,EAAaxiB,KAAKg3D,QAE1C,CACA,MAAM,IAAI7qD,MAAMnM,KAAK03D,sBACzB,EACOd,CACX,CArW2B,GA6WvB+B,EAAqB,SAAUlkD,GAK/B,SAASkkD,EAAItjD,GACT,IAAIzU,EAAQ6T,EAAOzH,KAAKhN,OAASA,KAC7B0O,EAAU2G,GAA4B,CAAC,EAQ3C,OAFAzU,EAAMg4D,sBAC0BpiD,IAA5B9H,EAAQmqD,iBAAgCnqD,EAAQmqD,gBAC7Cj4D,CACX,CA0GA,OAzHA,EAAU+3D,EAAKlkD,GAuBfkkD,EAAI3zD,UAAU8zD,OAAS,SAAU9C,GAC7B,IAAIa,EAAQ,IAAId,EAAMC,GAEtB,OADa,IAAIY,EAAOC,GACV5T,OAClB,EAOA0V,EAAI3zD,UAAUqwD,oBAAsB,SAAUhwD,EAAMgQ,GAChD,IAAIw6C,EAAO7vD,KAAKu1D,qBAAqBlwD,EAAMgQ,GAC3C,GAAIw6C,EAAM,CACN,IAAI1uC,EAAU,IAAI/J,EAAA,QAElB,OADA+J,EAAQtJ,YAAYg4C,GACb1uC,CACX,CACA,OAAO,IACX,EAOAw3C,EAAI3zD,UAAUswD,qBAAuB,SAAUjwD,EAAMgQ,GAWjD,IAVA,IAAIovC,EACA7sC,EAAW5X,KAAKu1D,qBAAqBlwD,EAAMgQ,GAQ3Ckd,EAAW,GACN/nB,EAAI,EAAGiL,GANZgvC,EAFAzkD,KAAK44D,kBACLhhD,EAAS4uB,WAAaC,EAAA,4BACyB,EAAW2e,qBAG7C,CAACxtC,IAGcxU,OAAQoH,EAAIiL,IAAMjL,EAAG,CACjD,IAAI2W,EAAU,IAAI/J,EAAA,QAClB+J,EAAQtJ,YAAY4sC,EAAWj6C,IAC/B+nB,EAASjgB,KAAK6O,EAClB,CACA,OAAOoR,CACX,EAOAomC,EAAI3zD,UAAUuwD,qBAAuB,SAAUlwD,EAAMgQ,GACjD,IAAIuC,EAAW5X,KAAK84D,OAAOzzD,GAC3B,OAAIuS,GACO,QAA6BA,GAAU,EAAOvC,GAG9C,IAEf,EAOAsjD,EAAI3zD,UAAUywD,iBAAmB,SAAUt0C,EAAS9L,GAChD,IAAIuC,EAAWuJ,EAAQ9I,cACvB,OAAIT,EACO5X,KAAK21D,kBAAkB/9C,EAAUvC,GAErC,EACX,EAOAsjD,EAAI3zD,UAAU0wD,kBAAoB,SAAUnjC,EAAUld,GAClD,GAAuB,GAAnBkd,EAASnvB,OACT,OAAOpD,KAAKy1D,iBAAiBljC,EAAS,GAAIld,GAG9C,IADA,IAAIovC,EAAa,GACRj6C,EAAI,EAAGiL,EAAK8c,EAASnvB,OAAQoH,EAAIiL,IAAMjL,EAC5Ci6C,EAAWnyC,KAAKigB,EAAS/nB,GAAG6N,eAEhC,IAAI0gD,EAAa,IAAIpU,EAAA,EAAmBF,GACxC,OAAOzkD,KAAK21D,kBAAkBoD,EAAY1jD,EAC9C,EAOAsjD,EAAI3zD,UAAU2wD,kBAAoB,SAAU/9C,EAAUvC,GAClD,OAAO2jD,GAAO,QAA6BphD,GAAU,EAAMvC,GAC/D,EACOsjD,CACX,CA3HwB,CA2HtB,GAKF,SAASM,EAAoBpJ,GACzB,IAAIrtC,EAAcqtC,EAAKrQ,iBACvB,OAA2B,IAAvBh9B,EAAYpf,OACL,GAEJof,EAAYjQ,KAAK,IAC5B,CA6BA,SAAS2mD,EAAyBrJ,GAG9B,IAFA,IAAIrtC,EAAcqtC,EAAKrQ,iBACnB1pC,EAAQ,GACHtL,EAAI,EAAGiL,EAAK+M,EAAYpf,OAAQoH,EAAIiL,IAAMjL,EAC/CsL,EAAMxD,KAAKkQ,EAAYhY,GAAG+H,KAAK,MAEnC,OAAOuD,EAAMvD,KAAK,IACtB,CAiBA,SAAS4mD,EAAsBtJ,GAG3B,IAFA,IAAI/5C,EAAQ,GACRokC,EAAQ2V,EAAKhE,iBACRrhD,EAAI,EAAGiL,EAAKykC,EAAM92C,OAAQoH,EAAIiL,IAAMjL,EACzCsL,EAAMxD,KAAK,IAAM4mD,EAAyBhf,EAAM1vC,IAAM,KAE1D,OAAOsL,EAAMvD,KAAK,IACtB,CAgCA,IAAI6mD,EAAkB,CAClB,MAASH,EACT,WAAcC,EACd,QAAWC,EACX,WA3FJ,SAAkCtJ,GAG9B,IAFA,IAAI/5C,EAAQ,GACRujD,EAAaxJ,EAAKhD,YACbriD,EAAI,EAAGiL,EAAK4jD,EAAWj2D,OAAQoH,EAAIiL,IAAMjL,EAC9CsL,EAAMxD,KAAK,IAAM2mD,EAAoBI,EAAW7uD,IAAM,KAE1D,OAAOsL,EAAMvD,KAAK,IACtB,EAqFI,gBAxDJ,SAAuCs9C,GAGnC,IAFA,IAAI/5C,EAAQ,GACRujD,EAAaxJ,EAAK/P,iBACbt1C,EAAI,EAAGiL,EAAK4jD,EAAWj2D,OAAQoH,EAAIiL,IAAMjL,EAC9CsL,EAAMxD,KAAK,IAAM4mD,EAAyBG,EAAW7uD,IAAM,KAE/D,OAAOsL,EAAMvD,KAAK,IACtB,EAkDI,aAjCJ,SAAoCs9C,GAGhC,IAFA,IAAI/5C,EAAQ,GACRujD,EAAaxJ,EAAK5C,cACbziD,EAAI,EAAGiL,EAAK4jD,EAAWj2D,OAAQoH,EAAIiL,IAAMjL,EAC9CsL,EAAMxD,KAAK,IAAM6mD,EAAsBE,EAAW7uD,IAAM,KAE5D,OAAOsL,EAAMvD,KAAK,IACtB,EA2BI,mBAlFJ,SAA0Cs9C,GAGtC,IAFA,IAAI/5C,EAAQ,GACRwjD,EAAQzJ,EAAK0J,gBACR/uD,EAAI,EAAGiL,EAAK6jD,EAAMl2D,OAAQoH,EAAIiL,IAAMjL,EACzCsL,EAAMxD,KAAK0mD,EAAOM,EAAM9uD,KAE5B,OAAOsL,EAAMvD,KAAK,IACtB,GAkFA,SAASymD,EAAOnJ,GACZ,IAAIz+C,EAAOy+C,EAAKrpB,UAEZgzB,GAAMC,EADYL,EAAgBhoD,IACZy+C,GAE1B,GADAz+C,EAAOA,EAAK0kD,cACgD,mBAA/B,EAAyB,mBAAkB,CACpE,IAAIyB,EAnCZ,SAA8B1H,GAC1B,IAAIjN,EAASiN,EAAKtQ,YACdgY,EAAU,GAOd,OANI3U,IAAWiF,EAAA,aAAsBjF,IAAWiF,EAAA,eAC5C0P,GAxuBA,KA0uBA3U,IAAWiF,EAAA,aAAsBjF,IAAWiF,EAAA,eAC5C0P,GAtuBA,KAwuBGA,CACX,CAyBsBmC,CAC6C,GACvDnC,EAAQn0D,OAAS,IACjBgO,GAAQ,IAAMmmD,EAEtB,CACA,OAAmB,IAAfiC,EAAIp2D,OACGgO,EAAO,IAAM4M,EAEjB5M,EAAO,IAAMooD,EAAM,GAC9B,CACA,4DC70BQplD,oDADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAkBA80C,EAA4B,SAAU70C,GAEtC,SAAS60C,IACL,IAAI1oD,EAAQ6T,EAAOzH,KAAKhN,OAASA,KAMjC,OADAY,EAAM+4D,gBAAiB,UAChB/4D,CACX,CAoPA,OA7PAyT,EAAUi1C,EAAY70C,GAatB60C,EAAWtkD,UAAUwhC,QAAU,WAC3B,OAAO,OACX,EASA8iB,EAAWtkD,UAAU24C,YAAc,SAAUr7B,EAAQjN,GACjD,GAAKiN,EAGA,IAAsB,iBAAXA,EAAqB,CACjC,IAAIsvC,GAAM,QAAMtvC,GAChB,OAAOtiB,KAAK45D,wBAAwBhI,EAAKv8C,EAC7C,CACK,OAAI,QAAWiN,GACTtiB,KAAK45D,wBACY,EAAUvkD,GAG3BrV,KAAKwgD,oBACW,EAAUnrC,EACrC,CAbI,OAAO,IAcf,EAMAi0C,EAAWtkD,UAAU40D,wBAA0B,SAAUhI,EAAKv8C,GAC1D,IAAIkd,EAAWvyB,KAAK65D,yBAAyBjI,EAAKv8C,GAClD,OAAIkd,EAASnvB,OAAS,EACXmvB,EAAS,GAGT,IAEf,EAMA+2B,EAAWtkD,UAAUw7C,oBAAsB,SAAUxK,EAAM3gC,GACvD,OAAO,IACX,EASAi0C,EAAWtkD,UAAU44C,aAAe,SAAUt7B,EAAQjN,GAClD,GAAKiN,EAGA,IAAsB,iBAAXA,EAAqB,CACjC,IAAIsvC,GAAM,QAAMtvC,GAChB,OAAOtiB,KAAK65D,yBAAyBjI,EAAKv8C,EAC9C,CACK,OAAI,QAAWiN,GACTtiB,KAAK65D,yBACY,EAAUxkD,GAG3BrV,KAAK2gD,qBACW,EAAUtrC,EACrC,CAbI,MAAO,EAcf,EAOAi0C,EAAWtkD,UAAU60D,yBAA2B,SAAUjI,EAAKv8C,GAG3D,IADA,IAAIkd,EAAW,GACNzwB,EAAI8vD,EAAIlkD,WAAY5L,EAAGA,EAAIA,EAAEowD,YAC9BpwD,EAAE0kD,UAAY2L,KAAKC,eACnB,QAAO7/B,EAAUvyB,KAAK2gD,qBAA4C,EAAKtrC,IAG/E,OAAOkd,CACX,EAQA+2B,EAAWtkD,UAAU27C,qBAAuB,SAAU3K,EAAM3gC,GACxD,OAAO,SACX,EAQAi0C,EAAWtkD,UAAU64C,aAAe,SAAUv7B,EAAQjN,GAClD,GAAKiN,EAGA,IAAsB,iBAAXA,EAAqB,CACjC,IAAIsvC,GAAM,QAAMtvC,GAChB,OAAOtiB,KAAK85D,yBAAyBlI,EAAKv8C,EAC9C,CACK,OAAI,QAAWiN,GACTtiB,KAAK85D,yBACY,EAAUzkD,GAG3BrV,KAAKopD,qBACW,EAAU/zC,EACrC,CAbI,OAAO,IAcf,EAOAi0C,EAAWtkD,UAAU80D,yBAA2B,SAAUlI,EAAKv8C,GAC3D,OAAO,IACX,EAOAi0C,EAAWtkD,UAAUokD,qBAAuB,SAAUpT,EAAM3gC,GACxD,OAAO,IACX,EAQAi0C,EAAWtkD,UAAUu4C,eAAiB,SAAUj7B,GAC5C,GAAKA,EAGA,IAAsB,iBAAXA,EAAqB,CACjC,IAAIsvC,GAAM,QAAMtvC,GAChB,OAAOtiB,KAAKuzD,2BAA2B3B,EAC3C,CACK,OAAI,QAAWtvC,GACTtiB,KAAKuzD,2BAAmD,GAGxDvzD,KAAKqpD,uBAA8C,EAC9D,CAXI,OAAO,IAYf,EAMAC,EAAWtkD,UAAUuuD,2BAA6B,SAAU3B,GACxD,OAAO5xD,KAAKo9C,cAChB,EAMAkM,EAAWtkD,UAAUqkD,uBAAyB,SAAUrT,GACpD,OAAOh2C,KAAKo9C,cAChB,EAQAkM,EAAWtkD,UAAU84C,aAAe,SAAU38B,EAAS9L,GACnD,IAAI2gC,EAAOh2C,KAAK+5D,iBAAiB54C,EAAS9L,GAC1C,OAAOrV,KAAK25D,eAAeK,kBAAkBhkB,EACjD,EAOAsT,EAAWtkD,UAAU+0D,iBAAmB,SAAU54C,EAAS9L,GACvD,OAAO,IACX,EASAi0C,EAAWtkD,UAAU+4C,cAAgB,SAAUxrB,EAAUld,GACrD,IAAI2gC,EAAOh2C,KAAK4gD,kBAAkBruB,EAAUld,GAC5C,OAAOrV,KAAK25D,eAAeK,kBAAkBhkB,EACjD,EAMAsT,EAAWtkD,UAAU47C,kBAAoB,SAAUruB,EAAUld,GACzD,OAAO,IACX,EAQAi0C,EAAWtkD,UAAUg5C,cAAgB,SAAUpmC,EAAUvC,GACrD,IAAI2gC,EAAOh2C,KAAK4vD,kBAAkBh4C,EAAUvC,GAC5C,OAAOrV,KAAK25D,eAAeK,kBAAkBhkB,EACjD,EAMAsT,EAAWtkD,UAAU4qD,kBAAoB,SAAUh4C,EAAUvC,GACzD,OAAO,IACX,EACOi0C,CACX,CA/P+B,CA+P7B,MACF,QAAe,WAAU,uuBClQlB,SAASsJ,EAAI+B,GAChB,IAAIsF,EAAS,CAAC,MAAMznD,OAAOrR,MAAM6D,UAAU8H,MAAME,KAAK/M,YACtD,OAAO,IAAKi6D,SAASl1D,UAAU8J,KAAKhP,MAAM,IAAKm6D,GACnD,CAQO,SAASE,EAAGxF,GACf,IAAIsF,EAAS,CAAC,MAAMznD,OAAOrR,MAAM6D,UAAU8H,MAAME,KAAK/M,YACtD,OAAO,IAAKi6D,SAASl1D,UAAU8J,KAAKhP,MAAM,IAAIm6D,GAClD,CAQO,SAASG,EAAIpG,GAChB,OAAO,IAAI,IAAIA,EACnB,CAYO,SAASrB,EAAKpN,EAAcnpC,EAAQowC,GACvC,OAAO,IAAI,IAAKjH,EAAcnpC,EAAQowC,EAC1C,CAYO,SAAShgD,EAAS+4C,EAAc3tC,EAAU40C,GAC7C,OAAO,IAAI,IAASjH,EAAc3tC,EAAU40C,EAChD,CAYO,SAAS7vB,EAAW4oB,EAAc3tC,EAAU40C,GAC/C,OAAO,IAAI,IAAWjH,EAAc3tC,EAAU40C,EAClD,CAYO,SAAS6N,EAAO9U,EAAc3tC,EAAU40C,GAC3C,OAAO,IAAI,IAAOjH,EAAc3tC,EAAU40C,EAC9C,CAUO,SAAS8N,EAAQ1G,EAAcgB,EAAY2F,GAC9C,OAAO,IAAI,IAAQ3G,EAAcgB,EAAY2F,EACjD,CAUO,SAASC,EAAW5G,EAAcgB,EAAY2F,GACjD,OAAO,IAAI,IAAW3G,EAAcgB,EAAY2F,EACpD,CASO,SAASE,EAAS7G,EAAcgB,GACnC,OAAO,IAAI,IAAShB,EAAcgB,EACtC,CASO,SAAS8F,EAAkB9G,EAAcgB,GAC5C,OAAO,IAAI,IAAkBhB,EAAcgB,EAC/C,CASO,SAAS+F,EAAY/G,EAAcgB,GACtC,OAAO,IAAI,IAAYhB,EAAcgB,EACzC,CASO,SAASgG,EAAqBhH,EAAcgB,GAC/C,OAAO,IAAI,IAAqBhB,EAAcgB,EAClD,CASO,SAASiG,EAAOjH,GACnB,OAAO,IAAI,IAAOA,EACtB,CAWO,SAASkH,EAAQlH,EAAcQ,EAAeE,GACjD,OAAO,IAAI,IAAUV,EAAcQ,EAAeE,EACtD,CAiBO,SAASyG,EAAKnH,EAAclxD,EAASs4D,EAAcC,EAAgBC,EAAgBX,GACtF,OAAO,IAAI,IAAO3G,EAAclxD,EAASs4D,EAAcC,EAAgBC,EAAgBX,EAC3F,CAUO,SAASY,EAAOvH,EAAcr0C,EAAOE,GACxC,OAAO,IAAI,IAAOm0C,EAAcr0C,EAAOE,EAC3C,oDCrOQrL,YADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAYA4mD,EAAqB,SAAU3mD,GAK/B,SAAS2mD,EAAIzG,GACT,OAAOlgD,EAAOzH,KAAKhN,KAAM,MAAOmB,MAAM6D,UAAU8H,MAAME,KAAK/M,aAAeD,IAC9E,CACA,OAPAqU,EAAU+mD,EAAK3mD,GAOR2mD,CACX,CATwB,CAStB,KACF,QAAe,WAAG,uDChCVhnD,YADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAaA6mD,EAAsB,SAAU5mD,GAQhC,SAAS4mD,EAAK9V,EAAcnpC,EAAQowC,GAChC,IAAI5rD,EAAQ6T,EAAOzH,KAAKhN,KAAM,SAAWA,KASzC,GALAY,EAAM2kD,aAAeA,EAIrB3kD,EAAMwb,OAASA,EACO,IAAlBA,EAAOhZ,OACP,MAAM,IAAI+I,MAAM,kEAMpB,OADAvL,EAAMulD,QAAUqG,EACT5rD,CACX,CACA,OA1BAyT,EAAUgnD,EAAM5mD,GA0BT4mD,CACX,CA5ByB,CA4BvB,KACF,QAAe,WAAI,uDCpDXjnD,YADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAaA8mD,EAA4B,SAAU7mD,GAMtC,SAAS6mD,EAAWxG,EAASlB,GACzB,IAAIhzD,EAAQ6T,EAAOzH,KAAKhN,KAAM80D,IAAY90D,KAK1C,OADAY,EAAMgzD,aAAeA,EACdhzD,CACX,CACA,OAbAyT,EAAUinD,EAAY7mD,GAaf6mD,CACX,CAf+B,CAe7B,KACF,QAAe,WAAU,uDCvCjBlnD,YADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAaA+mD,EAAkC,SAAU9mD,GAQ5C,SAAS8mD,EAAiBzG,EAASlB,EAAcgB,EAAY2F,GACzD,IAAI35D,EAAQ6T,EAAOzH,KAAKhN,KAAM80D,EAASlB,IAAiB5zD,KASxD,OALAY,EAAMg0D,WAAaA,EAInBh0D,EAAM8zD,UAAY6F,EACX35D,CACX,CACA,OAnBAyT,EAAUknD,EAAkB9mD,GAmBrB8mD,CACX,CArBqC,CAqBnC,KACF,QAAe,WAAgB,uDC7CvBnnD,YADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAYAgnD,EAA0B,SAAU/mD,GAQpC,SAAS+mD,EAASjW,EAAc3tC,EAAU40C,GACtC,OAAO/3C,EAAOzH,KAAKhN,KAAM,WAAYulD,EAAc3tC,EAAU40C,IAAgBxsD,IACjF,CACA,OAVAqU,EAAUmnD,EAAU/mD,GAUb+mD,CACX,CAZ6B,CAY3B,KACF,QAAe,WAAQ,uDCnCfpnD,YADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAWAinD,EAAwB,SAAUhnD,GAOlC,SAASgnD,EAAO7H,EAAcr0C,EAAOE,GACjC,IAAI7e,EAAQ6T,EAAOzH,KAAKhN,KAAM,SAAU4zD,IAAiB5zD,KASzD,OALAY,EAAM2e,MAAQA,EAId3e,EAAM6e,IAAMA,EACL7e,CACX,CACA,OAlBAyT,EAAUonD,EAAQhnD,GAkBXgnD,CACX,CApB2B,CAoBzB,KACF,QAAe,WAAM,uDC1CbrnD,YADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAWAknD,EAAyB,SAAUjnD,GAOnC,SAASinD,EAAQ9H,EAAcgB,EAAY2F,GACvC,OAAO9lD,EAAOzH,KAAKhN,KAAM,oBAAqB4zD,EAAcgB,EAAY2F,IAAkBv6D,IAC9F,CACA,OATAqU,EAAUqnD,EAASjnD,GASZinD,CACX,CAX4B,CAW1B,KACF,QAAe,WAAO,mDCxBtB,IAAIC,EAAwB,WAIxB,SAASA,EAAO7G,GAKZ90D,KAAK47D,SAAW9G,CACpB,CAQA,OAHA6G,EAAO32D,UAAUivD,WAAa,WAC1B,OAAOj0D,KAAK47D,QAChB,EACOD,CACX,CAnB2B,GAoB3B,QAAe,WAAM,uDC7BbvnD,YADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAWAqnD,EAA6B,SAAUpnD,GAMvC,SAASonD,EAAYjI,EAAcgB,GAC/B,OAAOngD,EAAOzH,KAAKhN,KAAM,wBAAyB4zD,EAAcgB,IAAe50D,IACnF,CACA,OARAqU,EAAUwnD,EAAapnD,GAQhBonD,CACX,CAVgC,CAU9B,KACF,QAAe,WAAW,uDChClBznD,YADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAWAsnD,EAAsC,SAAUrnD,GAMhD,SAASqnD,EAAqBlI,EAAcgB,GACxC,OAAOngD,EAAOzH,KAAKhN,KAAM,iCAAkC4zD,EAAcgB,IAAe50D,IAC5F,CACA,OARAqU,EAAUynD,EAAsBrnD,GAQzBqnD,CACX,CAVyC,CAUvC,KACF,QAAe,WAAoB,uDChC3B1nD,YADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAYAunD,EAA4B,SAAUtnD,GAQtC,SAASsnD,EAAWxW,EAAc3tC,EAAU40C,GACxC,OAAO/3C,EAAOzH,KAAKhN,KAAM,aAAculD,EAAc3tC,EAAU40C,IAAgBxsD,IACnF,CACA,OAVAqU,EAAU0nD,EAAYtnD,GAUfsnD,CACX,CAZ+B,CAY7B,KACF,QAAe,WAAU,uDCnCjB3nD,YADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAWAwnD,EAA2B,SAAUvnD,GAOrC,SAASunD,EAAUpI,EAAcQ,EAAeE,GAC5C,IAAI1zD,EAAQ6T,EAAOzH,KAAKhN,KAAM,oBAAqB4zD,IAAiB5zD,KASpE,OALAY,EAAMwzD,cAAgBA,EAItBxzD,EAAM0zD,cAAgBA,EACf1zD,CACX,CACA,OAlBAyT,EAAU2nD,EAAWvnD,GAkBdunD,CACX,CApB8B,CAoB5B,KACF,QAAe,WAAS,uDC1ChB5nD,YADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAWAynD,EAAwB,SAAUxnD,GAclC,SAASwnD,EAAOrI,EAAclxD,EAASs4D,EAAcC,EAAgBC,EAAgBX,GACjF,IAAI35D,EAAQ6T,EAAOzH,KAAKhN,KAAM,iBAAkB4zD,IAAiB5zD,KAqBjE,OAjBAY,EAAM8B,QAAUA,EAIhB9B,EAAM2zD,cAA4B/9C,IAAjBwkD,EAA6BA,EAAe,IAI7Dp6D,EAAM4zD,gBAAgCh+C,IAAnBykD,EAA+BA,EAAiB,IAInEr6D,EAAM6zD,gBAAgCj+C,IAAnB0kD,EAA+BA,EAAiB,IAInEt6D,EAAM8zD,UAAY6F,EACX35D,CACX,CACA,OArCAyT,EAAU4nD,EAAQxnD,GAqCXwnD,CACX,CAvC2B,CAuCzB,KACF,QAAe,WAAM,uDC7Db7nD,YADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAWA0nD,EAAwB,SAAUznD,GAKlC,SAASynD,EAAOtI,GACZ,OAAOn/C,EAAOzH,KAAKhN,KAAM,iBAAkB4zD,IAAiB5zD,IAChE,CACA,OAPAqU,EAAU6nD,EAAQznD,GAOXynD,CACX,CAT2B,CASzB,KACF,QAAe,WAAM,uDC/Bb9nD,YADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAWA2nD,EAA0B,SAAU1nD,GAMpC,SAAS0nD,EAASvI,EAAcgB,GAC5B,OAAOngD,EAAOzH,KAAKhN,KAAM,qBAAsB4zD,EAAcgB,IAAe50D,IAChF,CACA,OARAqU,EAAU8nD,EAAU1nD,GAQb0nD,CACX,CAV6B,CAU3B,KACF,QAAe,WAAQ,uDChCf/nD,YADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAWA4nD,EAAmC,SAAU3nD,GAM7C,SAAS2nD,EAAkBxI,EAAcgB,GACrC,OAAOngD,EAAOzH,KAAKhN,KAAM,8BAA+B4zD,EAAcgB,IAAe50D,IACzF,CACA,OARAqU,EAAU+nD,EAAmB3nD,GAQtB2nD,CACX,CAVsC,CAUpC,KACF,QAAe,WAAiB,uDChCxBhoD,sBADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAcA6nD,EAA6B,SAAU5nD,GAMvC,SAAS4nD,EAAYvH,EAASH,GAC1B,IAAI/zD,EAAQ6T,EAAOzH,KAAKhN,KAAM80D,IAAY90D,KAM1C,OAFAY,EAAM+zD,WAAaA,GACnB,OAAO/zD,EAAM+zD,WAAWvxD,QAAU,EAAG,IAC9BxC,CACX,CACA,OAdAyT,EAAUgoD,EAAa5nD,GAchB4nD,CACX,CAhBgC,CAgB9B,KACF,QAAe,WAAW,uDCzClBjoD,YADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAWA8nD,EAAqB,SAAU7nD,GAK/B,SAAS6nD,EAAItI,GACT,IAAIpzD,EAAQ6T,EAAOzH,KAAKhN,KAAM,QAAUA,KAKxC,OADAY,EAAMozD,UAAYA,EACXpzD,CACX,CACA,OAZAyT,EAAUioD,EAAK7nD,GAYR6nD,CACX,CAdwB,CActB,KACF,QAAe,WAAG,uDCpCVloD,YADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAWA+nD,EAA4B,SAAU9nD,GAOtC,SAAS8nD,EAAW3I,EAAcgB,EAAY2F,GAC1C,OAAO9lD,EAAOzH,KAAKhN,KAAM,uBAAwB4zD,EAAcgB,EAAY2F,IAAkBv6D,IACjG,CACA,OATAqU,EAAUkoD,EAAY9nD,GASf8nD,CACX,CAX+B,CAW7B,KACF,QAAe,WAAU,uDCjCjBnoD,YADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAWAgoD,EAAoB,SAAU/nD,GAK9B,SAAS+nD,EAAG7H,GACR,OAAOlgD,EAAOzH,KAAKhN,KAAM,KAAMmB,MAAM6D,UAAU8H,MAAME,KAAK/M,aAAeD,IAC7E,CACA,OAPAqU,EAAUmoD,EAAI/nD,GAOP+nD,CACX,CATuB,CASrB,KACF,QAAe,WAAE,uDC/BTpoD,YADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAcAioD,EAAyB,SAAUhoD,GASnC,SAASgoD,EAAQ3H,EAASvP,EAAc3tC,EAAU40C,GAC9C,IAAI5rD,EAAQ6T,EAAOzH,KAAKhN,KAAM80D,IAAY90D,KAa1C,OATAY,EAAM2kD,aAAeA,GAAgB,WAIrC3kD,EAAMgX,SAAWA,EAIjBhX,EAAMulD,QAAUqG,EACT5rD,CACX,CACA,OAxBAyT,EAAUooD,EAAShoD,GAwBZgoD,CACX,CA1B4B,CA0B1B,KACF,QAAe,WAAO,uDCnDdroD,YADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAYAkoD,EAAwB,SAAUjoD,GAQlC,SAASioD,EAAOnX,EAAc3tC,EAAU40C,GACpC,OAAO/3C,EAAOzH,KAAKhN,KAAM,SAAUulD,EAAc3tC,EAAU40C,IAAgBxsD,IAC/E,CACA,OAVAqU,EAAUqoD,EAAQjoD,GAUXioD,CACX,CAZ2B,CAYzB,KACF,QAAe,WAAM,gLCNd,SAASC,EAAa3mB,GACzB,IAAIzsC,GAAI,QAAkBysC,GAAM,GAC5B4mB,EAAWj9D,KAAKsjD,MAAM15C,GAC1B,OAAOk+B,MAAMm1B,QAAYpmD,EAAYomD,EAAW,GACpD,CAKO,SAASC,EAAY7mB,GACxB,IASI1pC,EATA/C,GAAI,QAAkBysC,GAAM,GAChC,OAQI1pC,EAAI,4CAA4C0/B,KAR3BziC,IAUd7D,WAAW4G,EAAE,SAGpB,CAZR,CAmBO,SAASwwD,EAAuB9mB,GAEnC,OAAO+mB,GADC,QAAkB/mB,GAAM,GAEpC,CAKO,SAAS+mB,EAA6BC,GACzC,IAAI1wD,EAAI,gBAAgB0/B,KAAKgxB,GAC7B,OAAI1wD,EACOpJ,SAASoJ,EAAE,GAAI,SAGtB,CAER,CAKO,SAAS2wD,EAAWjnB,GACvB,OAAO,QAAkBA,GAAM,GAAOnoC,MAC1C,CAmBO,SAASqvD,EAAsBlnB,EAAM4mB,GACxC,IAAIO,EAAO,IAAIx9D,KAAgB,IAAXi9D,GAChBI,EAASG,EAAKC,iBACd,KACA,OAAUD,EAAKE,cAAgB,EAAG,GAClC,KACA,OAAUF,EAAKG,aAAc,GAC7B,KACA,OAAUH,EAAKI,cAAe,GAC9B,KACA,OAAUJ,EAAKK,gBAAiB,GAChC,KACA,OAAUL,EAAKM,gBAAiB,GAChC,IACJznB,EAAKroC,aAAY,UAAcoa,eAAei1C,GAClD,CAKO,SAASU,EAAqB1nB,EAAM3E,GACvC,IAAI2rB,EAAS3rB,EAAQssB,cACrB3nB,EAAKroC,aAAY,UAAcoa,eAAei1C,GAClD,CAKO,SAASY,EAAgC5nB,EAAM6nB,GAClD,IAAIb,EAASa,EAAmB94D,WAChCixC,EAAKroC,aAAY,UAAcoa,eAAei1C,GAClD,CAKO,SAASc,EAAoB9nB,EAAMgnB,GACtChnB,EAAKroC,aAAY,UAAcoa,eAAei1C,GAClD,0FCrIO,SAASe,IACZ,OAAO,CACX,CAKO,SAASC,IACZ,OAAO,CACX,CAMO,SAASC,IAAS,CAUlB,SAASC,EAAWC,GACvB,IAEIC,EAEAC,EACAC,EALAC,GAAS,EAMb,OAAO,WACH,IAAIC,EAAWr9D,MAAM6D,UAAU8H,MAAME,KAAK/M,WAO1C,OANKs+D,GAAUv+D,OAASs+D,IAAa,QAAYE,EAAUH,KACvDE,GAAS,EACTD,EAAWt+D,KACXq+D,EAAWG,EACXJ,EAAaD,EAAGr+D,MAAME,KAAMC,YAEzBm+D,CACX,CACJ,oDCjDQhqD,iFADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAgBAiqD,GAAe,UAqQnB,QAxP8B,SAAUhqD,GAEpC,SAASiqD,IACL,IAAI99D,EAAQ6T,EAAOzH,KAAKhN,OAASA,KAqCjC,OAhCAY,EAAM+9D,SAAU,IAAAjlB,eAKhB94C,EAAMg+D,iBAAmB,EAKzBh+D,EAAMi+D,yCAA2C,EAKjDj+D,EAAMk+D,2BAA6B,EASnCl+D,EAAMm+D,6BAA8B,SAAW,SAAUC,EAAUC,EAAkBC,GACjF,IAAKA,EACD,OAAOl/D,KAAKm/D,sBAAsBF,GAEtC,IAAIjnD,EAAQhY,KAAKgY,QAEjB,OADAA,EAAM+C,eAAemkD,GACdlnD,EAAMmnD,sBAAsBF,EACvC,IACOr+D,CACX,CA6MA,OArPAyT,EAAUqqD,EAAUjqD,GAgDpBiqD,EAAS15D,UAAUo6D,oBAAsB,SAAUH,EAAkBC,GACjE,OAAOl/D,KAAK++D,4BAA4B/+D,KAAK2tB,cAAesxC,EAAkBC,EAClF,EAMAR,EAAS15D,UAAUgT,MAAQ,WACvB,OAAO,SACX,EASA0mD,EAAS15D,UAAUq6D,eAAiB,SAAUr9D,EAAGD,EAAGu9D,EAAcC,GAC9D,OAAO,SACX,EAMAb,EAAS15D,UAAUw3B,WAAa,SAAUx6B,EAAGD,GACzC,IAAI4qD,EAAQ3sD,KAAKw/D,gBAAgB,CAACx9D,EAAGD,IACrC,OAAO4qD,EAAM,KAAO3qD,GAAK2qD,EAAM,KAAO5qD,CAC1C,EASA28D,EAAS15D,UAAUw6D,gBAAkB,SAAUvf,EAAOwf,GAClD,IAAIH,EAAeG,GAAsC,CAAC/G,IAAKA,KAE/D,OADA14D,KAAKq/D,eAAepf,EAAM,GAAIA,EAAM,GAAIqf,EAAc7lC,KAC/C6lC,CACX,EAQAZ,EAAS15D,UAAU06D,qBAAuB,SAAUzzD,GAChD,OAAOjM,KAAKw8B,WAAWvwB,EAAW,GAAIA,EAAW,GACrD,EAOAyyD,EAAS15D,UAAU26D,cAAgB,SAAUvjD,GACzC,OAAO,SACX,EAOAsiD,EAAS15D,UAAUwY,UAAY,SAAU07B,GACrC,GAAIl5C,KAAK4+D,iBAAmB5+D,KAAK2tB,cAAe,CAC5C,IAAIvR,EAASpc,KAAK2/D,cAAc3/D,KAAK2+D,UACjCl3B,MAAMrrB,EAAO,KAAOqrB,MAAMrrB,EAAO,OACjC,IAAAwa,qBAAoBxa,GAExBpc,KAAK4+D,gBAAkB5+D,KAAK2tB,aAChC,CACA,OAAO,IAAAmuB,gBAAe97C,KAAK2+D,QAASzlB,EACxC,EASAwlB,EAAS15D,UAAU0jB,OAAS,SAAU2qB,EAAOtQ,IACzC,SACJ,EAWA27B,EAAS15D,UAAUwsC,MAAQ,SAAUouB,EAAIC,EAAQv3B,IAC7C,SACJ,EAUAo2B,EAAS15D,UAAU86D,SAAW,SAAUzlB,GACpC,OAAOr6C,KAAKm/D,sBAAsB9kB,EAAYA,EAClD,EASAqkB,EAAS15D,UAAUm6D,sBAAwB,SAAUF,GACjD,OAAO,SACX,EAMAP,EAAS15D,UAAUwhC,QAAU,WACzB,OAAO,SACX,EAUAk4B,EAAS15D,UAAU+V,eAAiB,SAAUyhC,IAC1C,SACJ,EAOAkiB,EAAS15D,UAAU+6D,iBAAmB,SAAU3jD,GAC5C,OAAO,SACX,EASAsiD,EAAS15D,UAAUg7D,UAAY,SAAU/jC,EAAQC,IAC7C,SACJ,EAgBAwiC,EAAS15D,UAAUuiB,UAAY,SAAUjF,EAAQ29C,GAE7C,IAAIC,GAAa,IAAAj7D,KAAcqd,GAC3Bk6B,EAAc0jB,EAAWtvB,YAAc,gBACrC,SAAUuvB,EAAeC,EAAgB/4B,GACvC,IAAIg5B,EAAcH,EAAW1iD,YACzB8iD,EAAkBJ,EAAWK,iBAC7B/uB,GAAQ,IAAAr0B,WAAUmjD,IAAmB,IAAAnjD,WAAUkjD,GAGnD,OAFA,QAAiB5B,EAAc6B,EAAgB,GAAIA,EAAgB,GAAI9uB,GAAQA,EAAO,EAAG,EAAG,IAC5F,QAAY2uB,EAAe,EAAGA,EAAc/8D,OAAQikC,EAAQo3B,EAAc2B,IACnE,IAAAI,cAAaN,EAAYD,EAAzB,CAAsCE,EAAeC,EAAgB/4B,EAChF,GACE,IAAAm5B,cAAaN,EAAYD,GAE/B,OADAjgE,KAAK+a,eAAeyhC,GACbx8C,IACX,EACO0+D,CACX,CAvP6B,CAuP3B,wDC9RMtqD,oDADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GA2SJ,SAASisD,EAAgBhc,GAErB,IADA,IAAIic,EAAmB,GACdl2D,EAAI,EAAGiL,EAAKgvC,EAAWrhD,OAAQoH,EAAIiL,IAAMjL,EAC9Ck2D,EAAiBpuD,KAAKmyC,EAAWj6C,GAAGwN,SAExC,OAAO0oD,CACX,CACA,QAlSwC,SAAUjsD,GAK9C,SAASkwC,EAAmBgc,GACxB,IAAI//D,EAAQ6T,EAAOzH,KAAKhN,OAASA,KAWjC,OANAY,EAAMggE,YAAcD,GAAkC,KAItD//D,EAAMigE,kBAAoB,GAC1BjgE,EAAMkgE,0BACClgE,CACX,CAmQA,OApRAyT,EAAUswC,EAAoBlwC,GAqB9BkwC,EAAmB3/C,UAAU+7D,0BAA4B,WACrD/gE,KAAK6gE,kBAAkBpxD,QAAQ,MAC/BzP,KAAK6gE,kBAAkBz9D,OAAS,CACpC,EAIAuhD,EAAmB3/C,UAAU87D,wBAA0B,WACnD,GAAK9gE,KAAK4gE,YAGV,IAAK,IAAIp2D,EAAI,EAAGiL,EAAKzV,KAAK4gE,YAAYx9D,OAAQoH,EAAIiL,IAAMjL,EACpDxK,KAAK6gE,kBAAkBvuD,MAAK,QAAOtS,KAAK4gE,YAAYp2D,GAAI,WAAkBxK,KAAK2Y,QAAS3Y,MAEhG,EAMA2kD,EAAmB3/C,UAAUgT,MAAQ,WACjC,IAAIgpD,EAAqB,IAAIrc,EAAmB,MAEhD,OADAqc,EAAmBC,cAAcjhE,KAAK4gE,aAC/BI,CACX,EAQArc,EAAmB3/C,UAAUq6D,eAAiB,SAAUr9D,EAAGD,EAAGu9D,EAAcC,GACxE,GAAIA,GAAqB,IAAApmB,0BAAyBn5C,KAAKwd,YAAaxb,EAAGD,GACnE,OAAOw9D,EAGX,IADA,IAAI9a,EAAazkD,KAAK4gE,YACbp2D,EAAI,EAAGiL,EAAKgvC,EAAWrhD,OAAQoH,EAAIiL,IAAMjL,EAC9C+0D,EAAqB9a,EAAWj6C,GAAG60D,eAAer9D,EAAGD,EAAGu9D,EAAcC,GAE1E,OAAOA,CACX,EAMA5a,EAAmB3/C,UAAUw3B,WAAa,SAAUx6B,EAAGD,GAEnD,IADA,IAAI0iD,EAAazkD,KAAK4gE,YACbp2D,EAAI,EAAGiL,EAAKgvC,EAAWrhD,OAAQoH,EAAIiL,IAAMjL,EAC9C,GAAIi6C,EAAWj6C,GAAGgyB,WAAWx6B,EAAGD,GAC5B,OAAO,EAGf,OAAO,CACX,EAMA4iD,EAAmB3/C,UAAU26D,cAAgB,SAAUvjD,IACnD,IAAAwa,qBAAoBxa,GAEpB,IADA,IAAIqoC,EAAazkD,KAAK4gE,YACbp2D,EAAI,EAAGiL,EAAKgvC,EAAWrhD,OAAQoH,EAAIiL,IAAMjL,GAC9C,IAAAsJ,QAAOsI,EAAQqoC,EAAWj6C,GAAGgT,aAEjC,OAAOpB,CACX,EAMAuoC,EAAmB3/C,UAAUu0D,cAAgB,WACzC,OAAOkH,EAAgBzgE,KAAK4gE,YAChC,EAIAjc,EAAmB3/C,UAAUogD,mBAAqB,WAC9C,OAAOplD,KAAK4gE,WAChB,EAIAjc,EAAmB3/C,UAAUk8D,4BAA8B,WAIvD,IAFA,IAAIC,EAAkB,GAClB1c,EAAazkD,KAAK4gE,YACbp2D,EAAI,EAAGiL,EAAKgvC,EAAWrhD,OAAQoH,EAAIiL,IAAMjL,EAC1Ci6C,EAAWj6C,GAAGg8B,YAAcxmC,KAAKwmC,UACjC26B,EAAkBA,EAAgB3uD,OACCiyC,EAAWj6C,GAAI02D,+BAGlDC,EAAgB7uD,KAAKmyC,EAAWj6C,IAGxC,OAAO22D,CACX,EAMAxc,EAAmB3/C,UAAUm6D,sBAAwB,SAAUF,GAK3D,GAJIj/D,KAAK8+D,6BAA+B9+D,KAAK2tB,gBACzC3tB,KAAK6+D,yCAA2C,EAChD7+D,KAAK8+D,2BAA6B9+D,KAAK2tB,eAEvCsxC,EAAmB,GACgC,IAAlDj/D,KAAK6+D,0CACFI,EAAmBj/D,KAAK6+D,yCAC5B,OAAO7+D,KAKX,IAHA,IAAIohE,EAAuB,GACvB3c,EAAazkD,KAAK4gE,YAClBS,GAAa,EACR72D,EAAI,EAAGiL,EAAKgvC,EAAWrhD,OAAQoH,EAAIiL,IAAMjL,EAAG,CACjD,IAAIoN,EAAW6sC,EAAWj6C,GACtB82D,EAAqB1pD,EAASunD,sBAAsBF,GACxDmC,EAAqB9uD,KAAKgvD,GACtBA,IAAuB1pD,IACvBypD,GAAa,EAErB,CACA,GAAIA,EAAY,CACZ,IAAIE,EAA+B,IAAI5c,EAAmB,MAE1D,OADA4c,EAA6BC,mBAAmBJ,GACzCG,CACX,CAGI,OADAvhE,KAAK6+D,yCAA2CI,EACzCj/D,IAEf,EAMA2kD,EAAmB3/C,UAAUwhC,QAAU,WACnC,OAAO,6BACX,EAOAme,EAAmB3/C,UAAU+6D,iBAAmB,SAAU3jD,GAEtD,IADA,IAAIqoC,EAAazkD,KAAK4gE,YACbp2D,EAAI,EAAGiL,EAAKgvC,EAAWrhD,OAAQoH,EAAIiL,IAAMjL,EAC9C,GAAIi6C,EAAWj6C,GAAGu1D,iBAAiB3jD,GAC/B,OAAO,EAGf,OAAO,CACX,EAIAuoC,EAAmB3/C,UAAUyvB,QAAU,WACnC,OAAmC,IAA5Bz0B,KAAK4gE,YAAYx9D,MAC5B,EAQAuhD,EAAmB3/C,UAAU0jB,OAAS,SAAU2qB,EAAOtQ,GAEnD,IADA,IAAI0hB,EAAazkD,KAAK4gE,YACbp2D,EAAI,EAAGiL,EAAKgvC,EAAWrhD,OAAQoH,EAAIiL,IAAMjL,EAC9Ci6C,EAAWj6C,GAAGke,OAAO2qB,EAAOtQ,GAEhC/iC,KAAK2Y,SACT,EAWAgsC,EAAmB3/C,UAAUwsC,MAAQ,SAAUouB,EAAIC,EAAQv3B,GACvD,IAAIvF,EAASuF,EACRvF,IACDA,GAAS,IAAA4B,WAAU3kC,KAAKwd,cAG5B,IADA,IAAIinC,EAAazkD,KAAK4gE,YACbp2D,EAAI,EAAGiL,EAAKgvC,EAAWrhD,OAAQoH,EAAIiL,IAAMjL,EAC9Ci6C,EAAWj6C,GAAGgnC,MAAMouB,EAAIC,EAAQ98B,GAEpC/iC,KAAK2Y,SACT,EAMAgsC,EAAmB3/C,UAAUi8D,cAAgB,SAAUxc,GACnDzkD,KAAKwhE,mBAAmBf,EAAgBhc,GAC5C,EAIAE,EAAmB3/C,UAAUw8D,mBAAqB,SAAU/c,GACxDzkD,KAAK+gE,4BACL/gE,KAAK4gE,YAAcnc,EACnBzkD,KAAK8gE,0BACL9gE,KAAK2Y,SACT,EAUAgsC,EAAmB3/C,UAAU+V,eAAiB,SAAUyhC,GAEpD,IADA,IAAIiI,EAAazkD,KAAK4gE,YACbp2D,EAAI,EAAGiL,EAAKgvC,EAAWrhD,OAAQoH,EAAIiL,IAAMjL,EAC9Ci6C,EAAWj6C,GAAGuQ,eAAeyhC,GAEjCx8C,KAAK2Y,SACT,EAQAgsC,EAAmB3/C,UAAUg7D,UAAY,SAAU/jC,EAAQC,GAEvD,IADA,IAAIuoB,EAAazkD,KAAK4gE,YACbp2D,EAAI,EAAGiL,EAAKgvC,EAAWrhD,OAAQoH,EAAIiL,IAAMjL,EAC9Ci6C,EAAWj6C,GAAGw1D,UAAU/jC,EAAQC,GAEpCl8B,KAAK2Y,SACT,EAIAgsC,EAAmB3/C,UAAUgS,gBAAkB,WAC3ChX,KAAK+gE,4BACLtsD,EAAOzP,UAAUgS,gBAAgBhK,KAAKhN,KAC1C,EACO2kD,CACX,CAtRuC,CAsRrC,gECxSF,SACI8c,GAAI,KACJC,IAAK,MACLC,IAAK,MACLC,KAAM,mECJV,SACIC,MAAO,QACPC,YAAa,aACbC,YAAa,aACbC,QAAS,UACTC,YAAa,aACbC,kBAAmB,kBACnBC,cAAe,eACfC,oBAAqB,qBACrBC,OAAQ,yECjBJjuD,mIADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GA4NJ,QApMgC,SAAUC,GAOtC,SAASsvC,EAAWvhC,EAAa8/C,GAC7B,IAAI1hE,EAAQ6T,EAAOzH,KAAKhN,OAASA,KA6BjC,OAxBAY,EAAM2hE,cAAgB,KAKtB3hE,EAAM4hE,uBAAyB,EAK/B5hE,EAAM6hE,WAAa,EAKnB7hE,EAAM8hE,mBAAqB,OACRlsD,IAAf8rD,GAA6BnhE,MAAMkP,QAAQmS,EAAY,IAKvD5hB,EAAM+hE,eACsD,EAAeL,GAL3E1hE,EAAMgiE,mBAAmBN,EACI,GAM1B1hE,CACX,CA4JA,OAjMAyT,EAAU0vC,EAAYtvC,GA2CtBsvC,EAAW/+C,UAAUq8C,iBAAmB,SAAUp1C,GACzCjM,KAAK+5C,iBAIN,QAAO/5C,KAAK+5C,gBAAiB9tC,GAH7BjM,KAAK+5C,gBAAkB9tC,EAAWa,QAKtC9M,KAAK2Y,SACT,EAMAorC,EAAW/+C,UAAUgT,MAAQ,WACzB,OAAO,IAAI+rC,EAAW/jD,KAAK+5C,gBAAgBjtC,QAAS9M,KAAK4iD,OAC7D,EAQAmB,EAAW/+C,UAAUq6D,eAAiB,SAAUr9D,EAAGD,EAAGu9D,EAAcC,GAChE,OAAIA,GAAqB,IAAApmB,0BAAyBn5C,KAAKwd,YAAaxb,EAAGD,GAC5Dw9D,GAEPv/D,KAAK0iE,mBAAqB1iE,KAAK2tB,gBAC/B3tB,KAAKyiE,UAAYxgE,KAAKuF,MAAK,QAAgBxH,KAAK+5C,gBAAiB,EAAG/5C,KAAK+5C,gBAAgB32C,OAAQpD,KAAKqnC,OAAQ,IAC9GrnC,KAAK0iE,kBAAoB1iE,KAAK2tB,gBAE3B,QAAmB3tB,KAAK+5C,gBAAiB,EAAG/5C,KAAK+5C,gBAAgB32C,OAAQpD,KAAKqnC,OAAQrnC,KAAKyiE,WAAW,EAAOzgE,EAAGD,EAAGu9D,EAAcC,GAC5I,EAYAxb,EAAW/+C,UAAU69D,eAAiB,SAAUn3D,GAC5C,OAAO,OAAe1L,KAAK+5C,gBAAiB,EAAG/5C,KAAK+5C,gBAAgB32C,OAAQpD,KAAKqnC,OAAQ37B,EAC7F,EAeAq4C,EAAW/+C,UAAU89D,iBAAmB,SAAUx2D,EAAGy2D,GACjD,GAAI/iE,KAAK4iD,QAAU,eACf5iD,KAAK4iD,QAAU,eACf,OAAO,KAEX,IAAIogB,OAAkCxsD,IAApBusD,GAAgCA,EAClD,OAAO,QAAwB/iE,KAAK+5C,gBAAiB,EAAG/5C,KAAK+5C,gBAAgB32C,OAAQpD,KAAKqnC,OAAQ/6B,EAAG02D,EACzG,EAMAjf,EAAW/+C,UAAUw6C,eAAiB,WAClC,OAAO,QAAmBx/C,KAAK+5C,gBAAiB,EAAG/5C,KAAK+5C,gBAAgB32C,OAAQpD,KAAKqnC,OACzF,EAWA0c,EAAW/+C,UAAUi+D,gBAAkB,SAAUt/B,EAAUu/B,GACvD,OAAO,QAAiBljE,KAAK+5C,gBAAiB,EAAG/5C,KAAK+5C,gBAAgB32C,OAAQpD,KAAKqnC,OAAQ1D,EAAUu/B,EAAUljE,KAAKqnC,OACxH,EAMA0c,EAAW/+C,UAAU4Q,UAAY,WAC7B,OAAO,OAAiB5V,KAAK+5C,gBAAiB,EAAG/5C,KAAK+5C,gBAAgB32C,OAAQpD,KAAKqnC,OACvF,EAIA0c,EAAW/+C,UAAUm+D,gBAAkB,WAKnC,OAJInjE,KAAKwiE,uBAAyBxiE,KAAK2tB,gBACnC3tB,KAAKuiE,cAAgBviE,KAAKijE,gBAAgB,GAAKjjE,KAAKuiE,eACpDviE,KAAKwiE,sBAAwBxiE,KAAK2tB,eAE/B3tB,KAAKuiE,aAChB,EAMAxe,EAAW/+C,UAAUo+D,8BAAgC,SAAUnE,GAC3D,IAAIoE,EAA4B,GAEhC,OADAA,EAA0BjgE,QAAS,QAAepD,KAAK+5C,gBAAiB,EAAG/5C,KAAK+5C,gBAAgB32C,OAAQpD,KAAKqnC,OAAQ43B,EAAkBoE,EAA2B,GAC3J,IAAItf,EAAWsf,EAA2B,aACrD,EAMAtf,EAAW/+C,UAAUwhC,QAAU,WAC3B,OAAO,qBACX,EAOAud,EAAW/+C,UAAU+6D,iBAAmB,SAAU3jD,GAC9C,OAAO,QAAqBpc,KAAK+5C,gBAAiB,EAAG/5C,KAAK+5C,gBAAgB32C,OAAQpD,KAAKqnC,OAAQjrB,EACnG,EAOA2nC,EAAW/+C,UAAU29D,eAAiB,SAAUngD,EAAa8/C,GACzDtiE,KAAKsjE,UAAUhB,EAAY9/C,EAAa,GACnCxiB,KAAK+5C,kBACN/5C,KAAK+5C,gBAAkB,IAE3B/5C,KAAK+5C,gBAAgB32C,QAAS,QAAmBpD,KAAK+5C,gBAAiB,EAAGv3B,EAAaxiB,KAAKqnC,QAC5FrnC,KAAK2Y,SACT,EACOorC,CACX,CAnM+B,CAmM7B,wDCrOM3vC,4FADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAsIJ,QAjHgC,SAAUC,GAOtC,SAASu0C,EAAWxmC,EAAa8/C,GAC7B,IAAI1hE,EAAQ6T,EAAOzH,KAAKhN,OAASA,KAmBjC,OAdAY,EAAM6hE,WAAa,EAKnB7hE,EAAM8hE,mBAAqB,OACRlsD,IAAf8rD,GAA6BnhE,MAAMkP,QAAQmS,EAAY,IAKvD5hB,EAAM+hE,eACsD,EAAeL,GAL3E1hE,EAAMgiE,mBAAmBN,EACI,GAM1B1hE,CACX,CAmFA,OA9GAyT,EAAU20C,EAAYv0C,GAiCtBu0C,EAAWhkD,UAAUgT,MAAQ,WACzB,OAAO,IAAIgxC,EAAWhpD,KAAK+5C,gBAAgBjtC,QAAS9M,KAAK4iD,OAC7D,EAQAoG,EAAWhkD,UAAUq6D,eAAiB,SAAUr9D,EAAGD,EAAGu9D,EAAcC,GAChE,OAAIA,GAAqB,IAAApmB,0BAAyBn5C,KAAKwd,YAAaxb,EAAGD,GAC5Dw9D,GAEPv/D,KAAK0iE,mBAAqB1iE,KAAK2tB,gBAC/B3tB,KAAKyiE,UAAYxgE,KAAKuF,MAAK,QAAgBxH,KAAK+5C,gBAAiB,EAAG/5C,KAAK+5C,gBAAgB32C,OAAQpD,KAAKqnC,OAAQ,IAC9GrnC,KAAK0iE,kBAAoB1iE,KAAK2tB,gBAE3B,QAAmB3tB,KAAK+5C,gBAAiB,EAAG/5C,KAAK+5C,gBAAgB32C,OAAQpD,KAAKqnC,OAAQrnC,KAAKyiE,WAAW,EAAMzgE,EAAGD,EAAGu9D,EAAcC,GAC3I,EAMAvW,EAAWhkD,UAAU61C,QAAU,WAC3B,OAAO,QAAe76C,KAAK+5C,gBAAiB,EAAG/5C,KAAK+5C,gBAAgB32C,OAAQpD,KAAKqnC,OACrF,EAMA2hB,EAAWhkD,UAAUw6C,eAAiB,WAClC,OAAO,QAAmBx/C,KAAK+5C,gBAAiB,EAAG/5C,KAAK+5C,gBAAgB32C,OAAQpD,KAAKqnC,OACzF,EAMA2hB,EAAWhkD,UAAUo+D,8BAAgC,SAAUnE,GAC3D,IAAIoE,EAA4B,GAEhC,OADAA,EAA0BjgE,QAAS,QAAepD,KAAK+5C,gBAAiB,EAAG/5C,KAAK+5C,gBAAgB32C,OAAQpD,KAAKqnC,OAAQ43B,EAAkBoE,EAA2B,GAC3J,IAAIra,EAAWqa,EAA2B,aACrD,EAMAra,EAAWhkD,UAAUwhC,QAAU,WAC3B,OAAO,qBACX,EAOAwiB,EAAWhkD,UAAU+6D,iBAAmB,SAAU3jD,GAC9C,OAAO,CACX,EAOA4sC,EAAWhkD,UAAU29D,eAAiB,SAAUngD,EAAa8/C,GACzDtiE,KAAKsjE,UAAUhB,EAAY9/C,EAAa,GACnCxiB,KAAK+5C,kBACN/5C,KAAK+5C,gBAAkB,IAE3B/5C,KAAK+5C,gBAAgB32C,QAAS,QAAmBpD,KAAK+5C,gBAAiB,EAAGv3B,EAAaxiB,KAAKqnC,QAC5FrnC,KAAK2Y,SACT,EACOqwC,CACX,CAhH+B,CAgH7B,wDC/IM50C,yHADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAgQJ,QAzOqC,SAAUC,GAS3C,SAAS4vC,EAAgB7hC,EAAa8/C,EAAYiB,GAC9C,IAAI3iE,EAAQ6T,EAAOzH,KAAKhN,OAASA,KAgBjC,GAXAY,EAAM4iE,MAAQ,GAKd5iE,EAAM6hE,WAAa,EAKnB7hE,EAAM8hE,mBAAqB,EACvBvhE,MAAMkP,QAAQmS,EAAY,IAC1B5hB,EAAM+hE,eAC6D,EAAeL,QAEjF,QAAmB9rD,IAAf8rD,GAA4BiB,EACjC3iE,EAAMgiE,mBAAmBN,EACI,GAC7B1hE,EAAM4iE,MAAQD,MAEb,CAKD,IAJA,IAAI3gB,EAAShiD,EAAM2+C,YACf0I,EAA+C,EAC/ClO,EAAkB,GAClB4I,EAAO,GACFn4C,EAAI,EAAGiL,EAAKwyC,EAAY7kD,OAAQoH,EAAIiL,IAAMjL,EAAG,CAClD,IAAI80C,EAAa2I,EAAYz9C,GACnB,IAANA,IACAo4C,EAAStD,EAAWC,cAExB,QAAOxF,EAAiBuF,EAAWxY,sBACnC6b,EAAKrwC,KAAKynC,EAAgB32C,OAC9B,CACAxC,EAAMgiE,mBAAmBhgB,EAAQ7I,GACjCn5C,EAAM4iE,MAAQ7gB,CAClB,CACA,OAAO/hD,CACX,CAmLA,OAtOAyT,EAAUgwC,EAAiB5vC,GAyD3B4vC,EAAgBr/C,UAAUy+D,iBAAmB,SAAUnkB,GAC9Ct/C,KAAK+5C,iBAIN,QAAO/5C,KAAK+5C,gBAAiBuF,EAAWxY,qBAAqBh6B,SAH7D9M,KAAK+5C,gBAAkBuF,EAAWxY,qBAAqBh6B,QAK3D9M,KAAKwjE,MAAMlxD,KAAKtS,KAAK+5C,gBAAgB32C,QACrCpD,KAAK2Y,SACT,EAMA0rC,EAAgBr/C,UAAUgT,MAAQ,WAC9B,OAAO,IAAIqsC,EAAgBrkD,KAAK+5C,gBAAgBjtC,QAAS9M,KAAK4iD,OAAQ5iD,KAAKwjE,MAAM12D,QACrF,EAQAu3C,EAAgBr/C,UAAUq6D,eAAiB,SAAUr9D,EAAGD,EAAGu9D,EAAcC,GACrE,OAAIA,GAAqB,IAAApmB,0BAAyBn5C,KAAKwd,YAAaxb,EAAGD,GAC5Dw9D,GAEPv/D,KAAK0iE,mBAAqB1iE,KAAK2tB,gBAC/B3tB,KAAKyiE,UAAYxgE,KAAKuF,MAAK,QAAqBxH,KAAK+5C,gBAAiB,EAAG/5C,KAAKwjE,MAAOxjE,KAAKqnC,OAAQ,IAClGrnC,KAAK0iE,kBAAoB1iE,KAAK2tB,gBAE3B,QAAwB3tB,KAAK+5C,gBAAiB,EAAG/5C,KAAKwjE,MAAOxjE,KAAKqnC,OAAQrnC,KAAKyiE,WAAW,EAAOzgE,EAAGD,EAAGu9D,EAAcC,GAChI,EAuBAlb,EAAgBr/C,UAAU89D,iBAAmB,SAAUx2D,EAAGy2D,EAAiBW,GACvE,GAAK1jE,KAAK4iD,QAAU,eAChB5iD,KAAK4iD,QAAU,gBACiB,IAAhC5iD,KAAK+5C,gBAAgB32C,OACrB,OAAO,KAEX,IAAI4/D,OAAkCxsD,IAApBusD,GAAgCA,EAC9CY,OAAkCntD,IAApBktD,GAAgCA,EAClD,OAAO,QAAyB1jE,KAAK+5C,gBAAiB,EAAG/5C,KAAKwjE,MAAOxjE,KAAKqnC,OAAQ/6B,EAAG02D,EAAaW,EACtG,EAMAtf,EAAgBr/C,UAAUw6C,eAAiB,WACvC,OAAO,QAAwBx/C,KAAK+5C,gBAAiB,EAAG/5C,KAAKwjE,MAAOxjE,KAAKqnC,OAC7E,EAIAgd,EAAgBr/C,UAAU4+D,QAAU,WAChC,OAAO5jE,KAAKwjE,KAChB,EAOAnf,EAAgBr/C,UAAU6+D,cAAgB,SAAU3uD,GAChD,OAAIA,EAAQ,GAAKlV,KAAKwjE,MAAMpgE,QAAU8R,EAC3B,KAEJ,IAAI,UAAWlV,KAAK+5C,gBAAgBjtC,MAAgB,IAAVoI,EAAc,EAAIlV,KAAKwjE,MAAMtuD,EAAQ,GAAIlV,KAAKwjE,MAAMtuD,IAASlV,KAAK4iD,OACvH,EAMAyB,EAAgBr/C,UAAU86C,eAAiB,WAOvC,IANA,IAAI/F,EAAkB/5C,KAAK+5C,gBACvB4I,EAAO3iD,KAAKwjE,MACZ5gB,EAAS5iD,KAAK4iD,OAEdqF,EAAc,GACd7mB,EAAS,EACJ52B,EAAI,EAAGiL,EAAKktC,EAAKv/C,OAAQoH,EAAIiL,IAAMjL,EAAG,CAC3C,IAAIiV,EAAMkjC,EAAKn4C,GACX80C,EAAa,IAAI,UAAWvF,EAAgBjtC,MAAMs0B,EAAQ3hB,GAAMmjC,GACpEqF,EAAY31C,KAAKgtC,GACjBle,EAAS3hB,CACb,CACA,OAAOwoC,CACX,EAIA5D,EAAgBr/C,UAAU8+D,iBAAmB,WAMzC,IALA,IAAIC,EAAY,GACZhqB,EAAkB/5C,KAAK+5C,gBACvB3Y,EAAS,EACTuhB,EAAO3iD,KAAKwjE,MACZn8B,EAASrnC,KAAKqnC,OACT78B,EAAI,EAAGiL,EAAKktC,EAAKv/C,OAAQoH,EAAIiL,IAAMjL,EAAG,CAC3C,IAAIiV,EAAMkjC,EAAKn4C,GACXw5D,GAAW,QAAiBjqB,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQ,KACtE,QAAO08B,EAAWC,GAClB5iC,EAAS3hB,CACb,CACA,OAAOskD,CACX,EAMA1f,EAAgBr/C,UAAUo+D,8BAAgC,SAAUnE,GAChE,IAAIoE,EAA4B,GAC5BY,EAAiB,GAErB,OADAZ,EAA0BjgE,QAAS,QAAoBpD,KAAK+5C,gBAAiB,EAAG/5C,KAAKwjE,MAAOxjE,KAAKqnC,OAAQ43B,EAAkBoE,EAA2B,EAAGY,GAClJ,IAAI5f,EAAgBgf,EAA2B,aAAmBY,EAC7E,EAMA5f,EAAgBr/C,UAAUwhC,QAAU,WAChC,OAAO,2BACX,EAOA6d,EAAgBr/C,UAAU+6D,iBAAmB,SAAU3jD,GACnD,OAAO,QAA0Bpc,KAAK+5C,gBAAiB,EAAG/5C,KAAKwjE,MAAOxjE,KAAKqnC,OAAQjrB,EACvF,EAOAioC,EAAgBr/C,UAAU29D,eAAiB,SAAUngD,EAAa8/C,GAC9DtiE,KAAKsjE,UAAUhB,EAAY9/C,EAAa,GACnCxiB,KAAK+5C,kBACN/5C,KAAK+5C,gBAAkB,IAE3B,IAAI4I,GAAO,QAAwB3iD,KAAK+5C,gBAAiB,EAAGv3B,EAAaxiB,KAAKqnC,OAAQrnC,KAAKwjE,OAC3FxjE,KAAK+5C,gBAAgB32C,OAAyB,IAAhBu/C,EAAKv/C,OAAe,EAAIu/C,EAAKA,EAAKv/C,OAAS,GACzEpD,KAAK2Y,SACT,EACO0rC,CACX,CAxOoC,CAwOlC,wDCzQMjwC,kFADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAwKJ,QArJgC,SAAUC,GAOtC,SAAS0vC,EAAW3hC,EAAa8/C,GAC7B,IAAI1hE,EAAQ6T,EAAOzH,KAAKhN,OAASA,KASjC,OARIsiE,IAAenhE,MAAMkP,QAAQmS,EAAY,IACzC5hB,EAAMgiE,mBAAmBN,EACI,GAG7B1hE,EAAM+hE,eACsD,EAAeL,GAExE1hE,CACX,CAiIA,OAlJAyT,EAAU8vC,EAAY1vC,GAuBtB0vC,EAAWn/C,UAAUk/D,YAAc,SAAUjkB,GACpCjgD,KAAK+5C,iBAIN,QAAO/5C,KAAK+5C,gBAAiBkG,EAAMnZ,sBAHnC9mC,KAAK+5C,gBAAkBkG,EAAMnZ,qBAAqBh6B,QAKtD9M,KAAK2Y,SACT,EAMAwrC,EAAWn/C,UAAUgT,MAAQ,WAEzB,OADiB,IAAImsC,EAAWnkD,KAAK+5C,gBAAgBjtC,QAAS9M,KAAK4iD,OAEvE,EAQAuB,EAAWn/C,UAAUq6D,eAAiB,SAAUr9D,EAAGD,EAAGu9D,EAAcC,GAChE,GAAIA,GAAqB,IAAApmB,0BAAyBn5C,KAAKwd,YAAaxb,EAAGD,GACnE,OAAOw9D,EAIX,IAFA,IAAIxlB,EAAkB/5C,KAAK+5C,gBACvB1S,EAASrnC,KAAKqnC,OACT78B,EAAI,EAAGiL,EAAKskC,EAAgB32C,OAAQoH,EAAIiL,EAAIjL,GAAK68B,EAAQ,CAC9D,IAAIiM,GAAkB,QAAUtxC,EAAGD,EAAGg4C,EAAgBvvC,GAAIuvC,EAAgBvvC,EAAI,IAC9E,GAAI8oC,EAAkBisB,EAAoB,CACtCA,EAAqBjsB,EACrB,IAAK,IAAI/8B,EAAI,EAAGA,EAAI8wB,IAAU9wB,EAC1B+oD,EAAa/oD,GAAKwjC,EAAgBvvC,EAAI+L,GAE1C+oD,EAAal8D,OAASikC,CAC1B,CACJ,CACA,OAAOk4B,CACX,EAMApb,EAAWn/C,UAAUw6C,eAAiB,WAClC,OAAO,QAAmBx/C,KAAK+5C,gBAAiB,EAAG/5C,KAAK+5C,gBAAgB32C,OAAQpD,KAAKqnC,OACzF,EAOA8c,EAAWn/C,UAAUm/D,SAAW,SAAUjvD,GACtC,IAAIpT,EAAK9B,KAAK+5C,gBAER/5C,KAAK+5C,gBAAgB32C,OAASpD,KAAKqnC,OADnC,EAEN,OAAInyB,EAAQ,GAAKpT,GAAKoT,EACX,KAEJ,IAAI,UAAMlV,KAAK+5C,gBAAgBjtC,MAAMoI,EAAQlV,KAAKqnC,QAASnyB,EAAQ,GAAKlV,KAAKqnC,QAASrnC,KAAK4iD,OACtG,EAMAuB,EAAWn/C,UAAU6nD,UAAY,WAM7B,IALA,IAAI9S,EAAkB/5C,KAAK+5C,gBACvB6I,EAAS5iD,KAAK4iD,OACdvb,EAASrnC,KAAKqnC,OAEdokB,EAAS,GACJjhD,EAAI,EAAGiL,EAAKskC,EAAgB32C,OAAQoH,EAAIiL,EAAIjL,GAAK68B,EAAQ,CAC9D,IAAI4Y,EAAQ,IAAI,UAAMlG,EAAgBjtC,MAAMtC,EAAGA,EAAI68B,GAASub,GAC5D6I,EAAOn5C,KAAK2tC,EAChB,CACA,OAAOwL,CACX,EAMAtH,EAAWn/C,UAAUwhC,QAAU,WAC3B,OAAO,qBACX,EAOA2d,EAAWn/C,UAAU+6D,iBAAmB,SAAU3jD,GAG9C,IAFA,IAAI29B,EAAkB/5C,KAAK+5C,gBACvB1S,EAASrnC,KAAKqnC,OACT78B,EAAI,EAAGiL,EAAKskC,EAAgB32C,OAAQoH,EAAIiL,EAAIjL,GAAK68B,EAAQ,CAC9D,IAAIrlC,EAAI+3C,EAAgBvvC,GACpBzI,EAAIg4C,EAAgBvvC,EAAI,GAC5B,IAAI,IAAAgyB,YAAWpgB,EAAQpa,EAAGD,GACtB,OAAO,CAEf,CACA,OAAO,CACX,EAOAoiD,EAAWn/C,UAAU29D,eAAiB,SAAUngD,EAAa8/C,GACzDtiE,KAAKsjE,UAAUhB,EAAY9/C,EAAa,GACnCxiB,KAAK+5C,kBACN/5C,KAAK+5C,gBAAkB,IAE3B/5C,KAAK+5C,gBAAgB32C,QAAS,QAAmBpD,KAAK+5C,gBAAiB,EAAGv3B,EAAaxiB,KAAKqnC,QAC5FrnC,KAAK2Y,SACT,EACOwrC,CACX,CApJ+B,CAoJ7B,wDCjLM/vC,+JADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GA2VJ,QA/TkC,SAAUC,GAQxC,SAAS8vC,EAAa/hC,EAAa8/C,EAAY8B,GAC3C,IAAIxjE,EAAQ6T,EAAOzH,KAAKhN,OAASA,KAoCjC,GA/BAY,EAAMyjE,OAAS,GAKfzjE,EAAM0jE,6BAA+B,EAKrC1jE,EAAM2jE,oBAAsB,KAK5B3jE,EAAM6hE,WAAa,EAKnB7hE,EAAM8hE,mBAAqB,EAK3B9hE,EAAM4jE,mBAAqB,EAK3B5jE,EAAM6jE,yBAA2B,MAC5BL,IAAcjjE,MAAMkP,QAAQmS,EAAY,IAAK,CAK9C,IAJA,IAAIogC,EAAShiD,EAAM2+C,YACf6I,EAAyC,EACzCrO,EAAkB,GAClB2qB,EAAQ,GACHl6D,EAAI,EAAGiL,EAAK2yC,EAAShlD,OAAQoH,EAAIiL,IAAMjL,EAAG,CAC/C,IAAI2hD,EAAU/D,EAAS59C,GACb,IAANA,IACAo4C,EAASuJ,EAAQ5M,aAIrB,IAFA,IAAIne,EAAS2Y,EAAgB32C,OACzBu/C,EAAOwJ,EAAQyX,UACVrtD,EAAI,EAAGwP,EAAK48B,EAAKv/C,OAAQmT,EAAIwP,IAAMxP,EACxCosC,EAAKpsC,IAAM6qB,GAEf,QAAO2Y,EAAiBoS,EAAQrlB,sBAChC49B,EAAMpyD,KAAKqwC,EACf,CACA2f,EAAa1f,EACbpgC,EAAcu3B,EACdqqB,EAAYM,CAChB,CAUA,YATmBluD,IAAf8rD,GAA4B8B,GAC5BxjE,EAAMgiE,mBAAmBN,EACI,GAC7B1hE,EAAMyjE,OAASD,GAGfxjE,EAAM+hE,eACoE,EAAeL,GAEtF1hE,CACX,CAgPA,OA5TAyT,EAAUkwC,EAAc9vC,GAkFxB8vC,EAAav/C,UAAU2/D,cAAgB,SAAUxY,GAE7C,IAAIxJ,EACJ,GAAK3iD,KAAK+5C,gBAKL,CACD,IAAI3Y,EAASphC,KAAK+5C,gBAAgB32C,QAClC,QAAOpD,KAAK+5C,gBAAiBoS,EAAQrlB,sBAErC,IAAK,IAAIt8B,EAAI,EAAGiL,GADhBktC,EAAOwJ,EAAQyX,UAAU92D,SACC1J,OAAQoH,EAAIiL,IAAMjL,EACxCm4C,EAAKn4C,IAAM42B,CAEnB,MAXIphC,KAAK+5C,gBAAkBoS,EAAQrlB,qBAAqBh6B,QACpD61C,EAAOwJ,EAAQyX,UAAU92D,QACzB9M,KAAKqkE,OAAO/xD,OAUhBtS,KAAKqkE,OAAO/xD,KAAKqwC,GACjB3iD,KAAK2Y,SACT,EAMA4rC,EAAav/C,UAAUgT,MAAQ,WAG3B,IAFA,IAAInT,EAAM7E,KAAKqkE,OAAOjhE,OAClBwhE,EAAW,IAAIzjE,MAAM0D,GAChB2F,EAAI,EAAGA,EAAI3F,IAAO2F,EACvBo6D,EAASp6D,GAAKxK,KAAKqkE,OAAO75D,GAAGsC,QAEjC,OAAO,IAAIy3C,EAAavkD,KAAK+5C,gBAAgBjtC,QAAS9M,KAAK4iD,OAAQgiB,EACvE,EAQArgB,EAAav/C,UAAUq6D,eAAiB,SAAUr9D,EAAGD,EAAGu9D,EAAcC,GAClE,OAAIA,GAAqB,IAAApmB,0BAAyBn5C,KAAKwd,YAAaxb,EAAGD,GAC5Dw9D,GAEPv/D,KAAK0iE,mBAAqB1iE,KAAK2tB,gBAC/B3tB,KAAKyiE,UAAYxgE,KAAKuF,MAAK,QAA0BxH,KAAK+5C,gBAAiB,EAAG/5C,KAAKqkE,OAAQrkE,KAAKqnC,OAAQ,IACxGrnC,KAAK0iE,kBAAoB1iE,KAAK2tB,gBAE3B,QAA6B3tB,KAAK6kE,6BAA8B,EAAG7kE,KAAKqkE,OAAQrkE,KAAKqnC,OAAQrnC,KAAKyiE,WAAW,EAAMzgE,EAAGD,EAAGu9D,EAAcC,GAClJ,EAMAhb,EAAav/C,UAAUw3B,WAAa,SAAUx6B,EAAGD,GAC7C,OAAO,QAAuB/B,KAAK6kE,6BAA8B,EAAG7kE,KAAKqkE,OAAQrkE,KAAKqnC,OAAQrlC,EAAGD,EACrG,EAMAwiD,EAAav/C,UAAU61C,QAAU,WAC7B,OAAO,QAAiB76C,KAAK6kE,6BAA8B,EAAG7kE,KAAKqkE,OAAQrkE,KAAKqnC,OACpF,EAcAkd,EAAav/C,UAAUw6C,eAAiB,SAAUslB,GAC9C,IAAI/qB,EAQJ,YAPkBvjC,IAAdsuD,GACA/qB,EAAkB/5C,KAAK6kE,6BAA6B/3D,SACpD,EAAAi4D,EAAA,IAAuBhrB,EAAiB,EAAG/5C,KAAKqkE,OAAQrkE,KAAKqnC,OAAQy9B,IAGrE/qB,EAAkB/5C,KAAK+5C,iBAEpB,EAAAirB,EAAA,IAA6BjrB,EAAiB,EAAG/5C,KAAKqkE,OAAQrkE,KAAKqnC,OAC9E,EAIAkd,EAAav/C,UAAUigE,SAAW,WAC9B,OAAOjlE,KAAKqkE,MAChB,EAIA9f,EAAav/C,UAAUkgE,sBAAwB,WAC3C,GAAIllE,KAAKskE,6BAA+BtkE,KAAK2tB,cAAe,CACxD,IAAIw3C,ECnNT,SAAsBprB,EAAiB3Y,EAAQsjC,EAAOr9B,GAGzD,IAFA,IAAI89B,EAAc,GACd/oD,GAAS,IAAAs9B,eACJlvC,EAAI,EAAGiL,EAAKivD,EAAMthE,OAAQoH,EAAIiL,IAAMjL,EAAG,CAC5C,IAAIm4C,EAAO+hB,EAAMl6D,GACjB4R,GAAS,IAAA09B,mCAAkCC,EAAiB3Y,EAAQuhB,EAAK,GAAItb,GAC7E89B,EAAY7yD,MAAM8J,EAAO,GAAKA,EAAO,IAAM,GAAIA,EAAO,GAAKA,EAAO,IAAM,GACxEglB,EAASuhB,EAAKA,EAAKv/C,OAAS,EAChC,CACA,OAAO+hE,CACX,CDyM8BC,CAAmBplE,KAAK+5C,gBAAiB,EAAG/5C,KAAKqkE,OAAQrkE,KAAKqnC,QAChFrnC,KAAKukE,qBAAsB,OAA8BvkE,KAAK6kE,6BAA8B,EAAG7kE,KAAKqkE,OAAQrkE,KAAKqnC,OAAQ89B,GACzHnlE,KAAKskE,4BAA8BtkE,KAAK2tB,aAC5C,CACA,OAAO3tB,KAAKukE,mBAChB,EAOAhgB,EAAav/C,UAAUqgE,kBAAoB,WACvC,OAAO,IAAIlhB,EAAA,EAAWnkD,KAAKklE,wBAAwBp4D,QAAS+6C,EAAA,YAChE,EAIAtD,EAAav/C,UAAU6/D,2BAA6B,WAChD,GAAI7kE,KAAKwkE,mBAAqBxkE,KAAK2tB,cAAe,CAC9C,IAAIosB,EAAkB/5C,KAAK+5C,iBACvB,QAAwBA,EAAiB,EAAG/5C,KAAKqkE,OAAQrkE,KAAKqnC,QAC9DrnC,KAAKykE,yBAA2B1qB,GAGhC/5C,KAAKykE,yBAA2B1qB,EAAgBjtC,QAChD9M,KAAKykE,yBAAyBrhE,QAAS,EAAA2hE,EAAA,IAAuB/kE,KAAKykE,yBAA0B,EAAGzkE,KAAKqkE,OAAQrkE,KAAKqnC,SAEtHrnC,KAAKwkE,kBAAoBxkE,KAAK2tB,aAClC,CACA,OAAO3tB,KAAKykE,wBAChB,EAMAlgB,EAAav/C,UAAUo+D,8BAAgC,SAAUnE,GAC7D,IAAIoE,EAA4B,GAC5BiC,EAAkB,GAEtB,OADAjC,EAA0BjgE,QAAS,QAAmBpD,KAAK+5C,gBAAiB,EAAG/5C,KAAKqkE,OAAQrkE,KAAKqnC,OAAQplC,KAAKuF,KAAKy3D,GAAmBoE,EAA2B,EAAGiC,GAC7J,IAAI/gB,EAAa8e,EAA2Bxb,EAAA,WAAmByd,EAC1E,EAOA/gB,EAAav/C,UAAUugE,WAAa,SAAUrwD,GAC1C,GAAIA,EAAQ,GAAKlV,KAAKqkE,OAAOjhE,QAAU8R,EACnC,OAAO,KAEX,IAAIksB,EACJ,GAAc,IAAVlsB,EACAksB,EAAS,MAER,CACD,IAAIokC,EAAWxlE,KAAKqkE,OAAOnvD,EAAQ,GACnCksB,EAASokC,EAASA,EAASpiE,OAAS,EACxC,CACA,IAAIu/C,EAAO3iD,KAAKqkE,OAAOnvD,GAAOpI,QAC1B2S,EAAMkjC,EAAKA,EAAKv/C,OAAS,GAC7B,GAAe,IAAXg+B,EACA,IAAK,IAAI52B,EAAI,EAAGiL,EAAKktC,EAAKv/C,OAAQoH,EAAIiL,IAAMjL,EACxCm4C,EAAKn4C,IAAM42B,EAGnB,OAAO,IAAI6iB,EAAA,GAAQjkD,KAAK+5C,gBAAgBjtC,MAAMs0B,EAAQ3hB,GAAMzf,KAAK4iD,OAAQD,EAC7E,EAMA4B,EAAav/C,UAAUioD,YAAc,WAMjC,IALA,IAAIrK,EAAS5iD,KAAK4iD,OACd7I,EAAkB/5C,KAAK+5C,gBACvB2qB,EAAQ1kE,KAAKqkE,OACbjc,EAAW,GACXhnB,EAAS,EACJ52B,EAAI,EAAGiL,EAAKivD,EAAMthE,OAAQoH,EAAIiL,IAAMjL,EAAG,CAC5C,IAAIm4C,EAAO+hB,EAAMl6D,GAAGsC,QAChB2S,EAAMkjC,EAAKA,EAAKv/C,OAAS,GAC7B,GAAe,IAAXg+B,EACA,IAAK,IAAI7qB,EAAI,EAAGwP,EAAK48B,EAAKv/C,OAAQmT,EAAIwP,IAAMxP,EACxCosC,EAAKpsC,IAAM6qB,EAGnB,IAAI+qB,EAAU,IAAIlI,EAAA,GAAQlK,EAAgBjtC,MAAMs0B,EAAQ3hB,GAAMmjC,EAAQD,GACtEyF,EAAS91C,KAAK65C,GACd/qB,EAAS3hB,CACb,CACA,OAAO2oC,CACX,EAMA7D,EAAav/C,UAAUwhC,QAAU,WAC7B,OAAOC,EAAA,qBACX,EAOA8d,EAAav/C,UAAU+6D,iBAAmB,SAAU3jD,GAChD,OAAO,QAA+Bpc,KAAK6kE,6BAA8B,EAAG7kE,KAAKqkE,OAAQrkE,KAAKqnC,OAAQjrB,EAC1G,EAOAmoC,EAAav/C,UAAU29D,eAAiB,SAAUngD,EAAa8/C,GAC3DtiE,KAAKsjE,UAAUhB,EAAY9/C,EAAa,GACnCxiB,KAAK+5C,kBACN/5C,KAAK+5C,gBAAkB,IAE3B,IAAI2qB,GAAQ,EAAAe,EAAA,IAA6BzlE,KAAK+5C,gBAAiB,EAAGv3B,EAAaxiB,KAAKqnC,OAAQrnC,KAAKqkE,QACjG,GAAqB,IAAjBK,EAAMthE,OACNpD,KAAK+5C,gBAAgB32C,OAAS,MAE7B,CACD,IAAIsiE,EAAWhB,EAAMA,EAAMthE,OAAS,GACpCpD,KAAK+5C,gBAAgB32C,OACG,IAApBsiE,EAAStiE,OAAe,EAAIsiE,EAASA,EAAStiE,OAAS,EAC/D,CACApD,KAAK2Y,SACT,EACO4rC,CACX,CA9TiC,CA8T/BohB,EAAA,mEEpWMvxD,oDADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GA0GJ,QA1F2B,SAAUC,GAMjC,SAASovC,EAAMrhC,EAAa8/C,GACxB,IAAI1hE,EAAQ6T,EAAOzH,KAAKhN,OAASA,KAEjC,OADAY,EAAM+hE,eAAengD,EAAa8/C,GAC3B1hE,CACX,CA8EA,OAvFAyT,EAAUwvC,EAAOpvC,GAejBovC,EAAM7+C,UAAUgT,MAAQ,WAEpB,OADY,IAAI6rC,EAAM7jD,KAAK+5C,gBAAgBjtC,QAAS9M,KAAK4iD,OAE7D,EAQAiB,EAAM7+C,UAAUq6D,eAAiB,SAAUr9D,EAAGD,EAAGu9D,EAAcC,GAC3D,IAAIxlB,EAAkB/5C,KAAK+5C,gBACvBzG,GAAkB,QAAUtxC,EAAGD,EAAGg4C,EAAgB,GAAIA,EAAgB,IAC1E,GAAIzG,EAAkBisB,EAAoB,CAEtC,IADA,IAAIl4B,EAASrnC,KAAKqnC,OACT78B,EAAI,EAAGA,EAAI68B,IAAU78B,EAC1B80D,EAAa90D,GAAKuvC,EAAgBvvC,GAGtC,OADA80D,EAAal8D,OAASikC,EACfiM,CACX,CAEI,OAAOisB,CAEf,EAMA1b,EAAM7+C,UAAUw6C,eAAiB,WAC7B,OAAQx/C,KAAK+5C,gBAAuB/5C,KAAK+5C,gBAAgBjtC,QAA1B,EACnC,EAMA+2C,EAAM7+C,UAAU26D,cAAgB,SAAUvjD,GACtC,OAAO,IAAAu9B,8BAA6B35C,KAAK+5C,gBAAiB39B,EAC9D,EAMAynC,EAAM7+C,UAAUwhC,QAAU,WACtB,OAAO,eACX,EAOAqd,EAAM7+C,UAAU+6D,iBAAmB,SAAU3jD,GACzC,OAAO,IAAAogB,YAAWpgB,EAAQpc,KAAK+5C,gBAAgB,GAAI/5C,KAAK+5C,gBAAgB,GAC5E,EAMA8J,EAAM7+C,UAAU29D,eAAiB,SAAUngD,EAAa8/C,GACpDtiE,KAAKsjE,UAAUhB,EAAY9/C,EAAa,GACnCxiB,KAAK+5C,kBACN/5C,KAAK+5C,gBAAkB,IAE3B/5C,KAAK+5C,gBAAgB32C,QAAS,QAAkBpD,KAAK+5C,gBAAiB,EAAGv3B,EAAaxiB,KAAKqnC,QAC3FrnC,KAAK2Y,SACT,EACOkrC,CACX,CAzF0B,CAyFxB,oFCnHMzvC,kLADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GA6BAyvC,EAAyB,SAAUxvC,GAanC,SAASwvC,EAAQzhC,EAAa8/C,EAAYiB,GACtC,IAAI3iE,EAAQ6T,EAAOzH,KAAKhN,OAASA,KA6CjC,OAxCAY,EAAM4iE,MAAQ,GAKd5iE,EAAMglE,4BAA8B,EAKpChlE,EAAMilE,mBAAqB,KAK3BjlE,EAAM6hE,WAAa,EAKnB7hE,EAAM8hE,mBAAqB,EAK3B9hE,EAAM4jE,mBAAqB,EAK3B5jE,EAAM6jE,yBAA2B,UACdjuD,IAAf8rD,GAA4BiB,GAC5B3iE,EAAMgiE,mBAAmBN,EACI,GAC7B1hE,EAAM4iE,MAAQD,GAGd3iE,EAAM+hE,eAC6D,EAAeL,GAE/E1hE,CACX,CAoNA,OA/QAyT,EAAU4vC,EAASxvC,GAiEnBwvC,EAAQj/C,UAAU8gE,iBAAmB,SAAUxZ,GACtCtsD,KAAK+5C,iBAIN,QAAO/5C,KAAK+5C,gBAAiBuS,EAAWxlB,sBAHxC9mC,KAAK+5C,gBAAkBuS,EAAWxlB,qBAAqBh6B,QAK3D9M,KAAKwjE,MAAMlxD,KAAKtS,KAAK+5C,gBAAgB32C,QACrCpD,KAAK2Y,SACT,EAMAsrC,EAAQj/C,UAAUgT,MAAQ,WACtB,OAAO,IAAIisC,EAAQjkD,KAAK+5C,gBAAgBjtC,QAAS9M,KAAK4iD,OAAQ5iD,KAAKwjE,MAAM12D,QAC7E,EAQAm3C,EAAQj/C,UAAUq6D,eAAiB,SAAUr9D,EAAGD,EAAGu9D,EAAcC,GAC7D,OAAIA,GAAqB,IAAApmB,0BAAyBn5C,KAAKwd,YAAaxb,EAAGD,GAC5Dw9D,GAEPv/D,KAAK0iE,mBAAqB1iE,KAAK2tB,gBAC/B3tB,KAAKyiE,UAAYxgE,KAAKuF,MAAK,QAAqBxH,KAAK+5C,gBAAiB,EAAG/5C,KAAKwjE,MAAOxjE,KAAKqnC,OAAQ,IAClGrnC,KAAK0iE,kBAAoB1iE,KAAK2tB,gBAE3B,QAAwB3tB,KAAK+5C,gBAAiB,EAAG/5C,KAAKwjE,MAAOxjE,KAAKqnC,OAAQrnC,KAAKyiE,WAAW,EAAMzgE,EAAGD,EAAGu9D,EAAcC,GAC/H,EAMAtb,EAAQj/C,UAAUw3B,WAAa,SAAUx6B,EAAGD,GACxC,OAAO,QAAsB/B,KAAK6kE,6BAA8B,EAAG7kE,KAAKwjE,MAAOxjE,KAAKqnC,OAAQrlC,EAAGD,EACnG,EAMAkiD,EAAQj/C,UAAU61C,QAAU,WACxB,OAAO,QAAgB76C,KAAK6kE,6BAA8B,EAAG7kE,KAAKwjE,MAAOxjE,KAAKqnC,OAClF,EAcA4c,EAAQj/C,UAAUw6C,eAAiB,SAAUslB,GACzC,IAAI/qB,EAQJ,YAPkBvjC,IAAdsuD,GACA/qB,EAAkB/5C,KAAK6kE,6BAA6B/3D,SACpD,QAAkBitC,EAAiB,EAAG/5C,KAAKwjE,MAAOxjE,KAAKqnC,OAAQy9B,IAG/D/qB,EAAkB/5C,KAAK+5C,iBAEpB,QAAwBA,EAAiB,EAAG/5C,KAAKwjE,MAAOxjE,KAAKqnC,OACxE,EAIA4c,EAAQj/C,UAAU4+D,QAAU,WACxB,OAAO5jE,KAAKwjE,KAChB,EAIAvf,EAAQj/C,UAAU+gE,qBAAuB,WACrC,GAAI/lE,KAAK4lE,4BAA8B5lE,KAAK2tB,cAAe,CACvD,IAAIq4C,GAAa,IAAArhC,WAAU3kC,KAAKwd,aAChCxd,KAAK6lE,oBAAqB,OAAwB7lE,KAAK6kE,6BAA8B,EAAG7kE,KAAKwjE,MAAOxjE,KAAKqnC,OAAQ2+B,EAAY,GAC7HhmE,KAAK4lE,2BAA6B5lE,KAAK2tB,aAC3C,CACA,OAAO3tB,KAAK6lE,kBAChB,EAOA5hB,EAAQj/C,UAAUihE,iBAAmB,WACjC,OAAO,IAAI,UAAMjmE,KAAK+lE,uBAAwB,cAClD,EAQA9hB,EAAQj/C,UAAUkhE,mBAAqB,WACnC,OAAOlmE,KAAKwjE,MAAMpgE,MACtB,EAWA6gD,EAAQj/C,UAAUmhE,cAAgB,SAAUjxD,GACxC,OAAIA,EAAQ,GAAKlV,KAAKwjE,MAAMpgE,QAAU8R,EAC3B,KAEJ,IAAI,IAAWlV,KAAK+5C,gBAAgBjtC,MAAgB,IAAVoI,EAAc,EAAIlV,KAAKwjE,MAAMtuD,EAAQ,GAAIlV,KAAKwjE,MAAMtuD,IAASlV,KAAK4iD,OACvH,EAMAqB,EAAQj/C,UAAU6mD,eAAiB,WAM/B,IALA,IAAIjJ,EAAS5iD,KAAK4iD,OACd7I,EAAkB/5C,KAAK+5C,gBACvB4I,EAAO3iD,KAAKwjE,MACZ4C,EAAc,GACdhlC,EAAS,EACJ52B,EAAI,EAAGiL,EAAKktC,EAAKv/C,OAAQoH,EAAIiL,IAAMjL,EAAG,CAC3C,IAAIiV,EAAMkjC,EAAKn4C,GACX8hD,EAAa,IAAI,IAAWvS,EAAgBjtC,MAAMs0B,EAAQ3hB,GAAMmjC,GACpEwjB,EAAY9zD,KAAKg6C,GACjBlrB,EAAS3hB,CACb,CACA,OAAO2mD,CACX,EAIAniB,EAAQj/C,UAAU6/D,2BAA6B,WAC3C,GAAI7kE,KAAKwkE,mBAAqBxkE,KAAK2tB,cAAe,CAC9C,IAAIosB,EAAkB/5C,KAAK+5C,iBACvB,QAAuBA,EAAiB,EAAG/5C,KAAKwjE,MAAOxjE,KAAKqnC,QAC5DrnC,KAAKykE,yBAA2B1qB,GAGhC/5C,KAAKykE,yBAA2B1qB,EAAgBjtC,QAChD9M,KAAKykE,yBAAyBrhE,QAAS,QAAkBpD,KAAKykE,yBAA0B,EAAGzkE,KAAKwjE,MAAOxjE,KAAKqnC,SAEhHrnC,KAAKwkE,kBAAoBxkE,KAAK2tB,aAClC,CACA,OAAO3tB,KAAKykE,wBAChB,EAMAxgB,EAAQj/C,UAAUo+D,8BAAgC,SAAUnE,GACxD,IAAIoE,EAA4B,GAC5BY,EAAiB,GAErB,OADAZ,EAA0BjgE,QAAS,QAAcpD,KAAK+5C,gBAAiB,EAAG/5C,KAAKwjE,MAAOxjE,KAAKqnC,OAAQplC,KAAKuF,KAAKy3D,GAAmBoE,EAA2B,EAAGY,GACvJ,IAAIhgB,EAAQof,EAA2B,aAAmBY,EACrE,EAMAhgB,EAAQj/C,UAAUwhC,QAAU,WACxB,OAAO,iBACX,EAOAyd,EAAQj/C,UAAU+6D,iBAAmB,SAAU3jD,GAC3C,OAAO,QAA0Bpc,KAAK6kE,6BAA8B,EAAG7kE,KAAKwjE,MAAOxjE,KAAKqnC,OAAQjrB,EACpG,EAOA6nC,EAAQj/C,UAAU29D,eAAiB,SAAUngD,EAAa8/C,GACtDtiE,KAAKsjE,UAAUhB,EAAY9/C,EAAa,GACnCxiB,KAAK+5C,kBACN/5C,KAAK+5C,gBAAkB,IAE3B,IAAI4I,GAAO,QAAwB3iD,KAAK+5C,gBAAiB,EAAGv3B,EAAaxiB,KAAKqnC,OAAQrnC,KAAKwjE,OAC3FxjE,KAAK+5C,gBAAgB32C,OAAyB,IAAhBu/C,EAAKv/C,OAAe,EAAIu/C,EAAKA,EAAKv/C,OAAS,GACzEpD,KAAK2Y,SACT,EACOsrC,CACX,CAjR4B,CAiR1B,MACF,UAaO,SAASoiB,EAASr6D,EAAQs6D,EAAQC,EAAOC,GAI5C,IAHA,IAAI1kE,EAAIykE,GAAgB,GAEpBxsB,EAAkB,GACbvvC,EAAI,EAAGA,EAAI1I,IAAK0I,GACrB,QAAOuvC,GAAiB,YAAa/tC,EAAQs6D,EAAS,EAAIrkE,KAAKmlB,GAAK5c,EAAK1I,EAAG0kE,IAGhF,OADAzsB,EAAgBznC,KAAKynC,EAAgB,GAAIA,EAAgB,IAClD,IAAIkK,EAAQlK,EAAiB,aAAmB,CACnDA,EAAgB32C,QAExB,CAOO,SAASqjE,EAAWrqD,GACvB,IAAIggB,EAAOhgB,EAAO,GACdkgB,EAAOlgB,EAAO,GACdigB,EAAOjgB,EAAO,GACdmgB,EAAOngB,EAAO,GACd29B,EAAkB,CAClB3d,EACAE,EACAF,EACAG,EACAF,EACAE,EACAF,EACAC,EACAF,EACAE,GAEJ,OAAO,IAAI2nB,EAAQlK,EAAiB,aAAmB,CACnDA,EAAgB32C,QAExB,CAUO,SAASsjE,EAAWr0B,EAAQs0B,EAAWC,GAO1C,IANA,IAAIC,EAAQF,GAAwB,GAChCt/B,EAASgL,EAAO/K,YAChBsb,EAASvQ,EAAOkN,YAChBvzC,EAASqmC,EAAO1N,YAChBmiC,EAAcz/B,GAAUw/B,EAAQ,GAChC9sB,EAAkB,IAAI54C,MAAM2lE,GACvBt8D,EAAI,EAAGA,EAAIs8D,EAAat8D,GAAK68B,EAAQ,CAC1C0S,EAAgBvvC,GAAK,EACrBuvC,EAAgBvvC,EAAI,GAAK,EACzB,IAAK,IAAI+L,EAAI,EAAGA,EAAI8wB,EAAQ9wB,IACxBwjC,EAAgBvvC,EAAI+L,GAAKvK,EAAOuK,EAExC,CACA,IAAIosC,EAAO,CAAC5I,EAAgB32C,QACxB+oD,EAAU,IAAIlI,EAAQlK,EAAiB6I,EAAQD,GAEnD,OAUG,SAAqBwJ,EAASngD,EAAQs6D,EAAQM,GAKjD,IAJA,IAAI7sB,EAAkBoS,EAAQrlB,qBAC1BO,EAAS8kB,EAAQ7kB,YACjBu/B,EAAQ9sB,EAAgB32C,OAASikC,EAAS,EAC1C0/B,EAAaH,GAAwB,EAChCp8D,EAAI,EAAGA,GAAKq8D,IAASr8D,EAAG,CAC7B,IAAI42B,EAAS52B,EAAI68B,EACbgM,EAAQ0zB,EAAiC,GAAnB,QAAOv8D,EAAGq8D,GAAa5kE,KAAKmlB,GAAMy/C,EAC5D9sB,EAAgB3Y,GAAUp1B,EAAO,GAAKs6D,EAASrkE,KAAKiG,IAAImrC,GACxD0G,EAAgB3Y,EAAS,GAAKp1B,EAAO,GAAKs6D,EAASrkE,KAAKwF,IAAI4rC,EAChE,CACA8Y,EAAQxzC,SACZ,CAvBIquD,CAAY7a,EAASngD,EAAQqmC,EAAOC,YAAas0B,GAC1Cza,CACX,8DCxYQ/3C,oDADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GA8QG,SAASyyD,EAAmBrkB,GAC/B,IAAIvb,EAUJ,OATIub,GAAU,aACVvb,EAAS,EAEJub,GAAU,eAAsBA,GAAU,cAC/Cvb,EAAS,EAEJub,GAAU,iBACfvb,EAAS,GAEgB,CACjC,CAOO,SAAS6/B,EAAgBC,EAAgB5/C,EAAW27C,GACvD,IAAInpB,EAAkBotB,EAAergC,qBACrC,GAAKiT,EAGA,CACD,IAAI1S,EAAS8/B,EAAe7/B,YAC5B,OAAO,QAAYyS,EAAiB,EAAGA,EAAgB32C,OAAQikC,EAAQ9f,EAAW27C,EACtF,CALI,OAAO,IAMf,CACA,QAzRoC,SAAUzuD,GAE1C,SAASkxD,IACL,IAAI/kE,EAAQ6T,EAAOzH,KAAKhN,OAASA,KAgBjC,OAXAY,EAAMgiD,OAAS,aAKfhiD,EAAMymC,OAAS,EAKfzmC,EAAMm5C,gBAAkB,KACjBn5C,CACX,CAiNA,OApOAyT,EAAUsxD,EAAgBlxD,GAyB1BkxD,EAAe3gE,UAAU26D,cAAgB,SAAUvjD,GAC/C,OAAO,IAAA09B,mCAAkC95C,KAAK+5C,gBAAiB,EAAG/5C,KAAK+5C,gBAAgB32C,OAAQpD,KAAKqnC,OAAQjrB,EAChH,EAKAupD,EAAe3gE,UAAUw6C,eAAiB,WACtC,OAAO,SACX,EAMAmmB,EAAe3gE,UAAUoiE,mBAAqB,WAC1C,OAAOpnE,KAAK+5C,gBAAgBjtC,MAAM,EAAG9M,KAAKqnC,OAC9C,EAIAs+B,EAAe3gE,UAAU8hC,mBAAqB,WAC1C,OAAO9mC,KAAK+5C,eAChB,EAMA4rB,EAAe3gE,UAAUqiE,kBAAoB,WACzC,OAAOrnE,KAAK+5C,gBAAgBjtC,MAAM9M,KAAK+5C,gBAAgB32C,OAASpD,KAAKqnC,OACzE,EAMAs+B,EAAe3gE,UAAUu6C,UAAY,WACjC,OAAOv/C,KAAK4iD,MAChB,EAMA+iB,EAAe3gE,UAAUm6D,sBAAwB,SAAUF,GAOvD,GANIj/D,KAAK8+D,6BAA+B9+D,KAAK2tB,gBACzC3tB,KAAK6+D,yCAA2C,EAChD7+D,KAAK8+D,2BAA6B9+D,KAAK2tB,eAIvCsxC,EAAmB,GACgC,IAAlDj/D,KAAK6+D,0CACFI,GAAoBj/D,KAAK6+D,yCAC7B,OAAO7+D,KAEX,IAAIshE,EAAqBthE,KAAKojE,8BAA8BnE,GAE5D,OADgCqC,EAAmBx6B,qBACrB1jC,OAASpD,KAAK+5C,gBAAgB32C,OACjDk+D,GASPthE,KAAK6+D,yCAA2CI,EACzCj/D,KAEf,EAMA2lE,EAAe3gE,UAAUo+D,8BAAgC,SAAUnE,GAC/D,OAAOj/D,IACX,EAIA2lE,EAAe3gE,UAAUsiC,UAAY,WACjC,OAAOtnC,KAAKqnC,MAChB,EAKAs+B,EAAe3gE,UAAU49D,mBAAqB,SAAUhgB,EAAQ7I,GAC5D/5C,KAAKqnC,OAAS4/B,EAAmBrkB,GACjC5iD,KAAK4iD,OAASA,EACd5iD,KAAK+5C,gBAAkBA,CAC3B,EAMA4rB,EAAe3gE,UAAU29D,eAAiB,SAAUngD,EAAa8/C,IAC7D,SACJ,EAOAqD,EAAe3gE,UAAUs+D,UAAY,SAAU1gB,EAAQpgC,EAAa8kD,GAEhE,IAAIjgC,EACJ,GAAIub,EACAvb,EAAS4/B,EAAmBrkB,OAE3B,CACD,IAAK,IAAIp4C,EAAI,EAAGA,EAAI88D,IAAW98D,EAAG,CAC9B,GAA2B,IAAvBgY,EAAYpf,OAGZ,OAFApD,KAAK4iD,OAAS,kBACd5iD,KAAKqnC,OAAS,GAId7kB,EAAoCA,EAAY,EAExD,CAEAogC,EAiFZ,SAA4Bvb,GACxB,IAAIub,EAUJ,OATc,GAAVvb,EACAub,EAAS,aAEM,GAAVvb,EACLub,EAAS,cAEM,GAAVvb,IACLub,EAAS,gBAE+C,CAChE,CA7FqB2kB,CADTlgC,EAAS7kB,EAAYpf,OAEzB,CACApD,KAAK4iD,OAASA,EACd5iD,KAAKqnC,OAASA,CAClB,EAUAs+B,EAAe3gE,UAAU+V,eAAiB,SAAUyhC,GAC5Cx8C,KAAK+5C,kBACLyC,EAAYx8C,KAAK+5C,gBAAiB/5C,KAAK+5C,gBAAiB/5C,KAAKqnC,QAC7DrnC,KAAK2Y,UAEb,EAQAgtD,EAAe3gE,UAAU0jB,OAAS,SAAU2qB,EAAOtQ,GAC/C,IAAIgX,EAAkB/5C,KAAK8mC,qBAC3B,GAAIiT,EAAiB,CACjB,IAAI1S,EAASrnC,KAAKsnC,aAClB,QAAOyS,EAAiB,EAAGA,EAAgB32C,OAAQikC,EAAQgM,EAAOtQ,EAAQgX,GAC1E/5C,KAAK2Y,SACT,CACJ,EAUAgtD,EAAe3gE,UAAUwsC,MAAQ,SAAUouB,EAAIC,EAAQv3B,GACnD,IAAIk/B,EAAK3H,OACErpD,IAAPgxD,IACAA,EAAK5H,GAET,IAAI78B,EAASuF,EACRvF,IACDA,GAAS,IAAA4B,WAAU3kC,KAAKwd,cAE5B,IAAIu8B,EAAkB/5C,KAAK8mC,qBAC3B,GAAIiT,EAAiB,CACjB,IAAI1S,EAASrnC,KAAKsnC,aAClB,QAAMyS,EAAiB,EAAGA,EAAgB32C,OAAQikC,EAAQu4B,EAAI4H,EAAIzkC,EAAQgX,GAC1E/5C,KAAK2Y,SACT,CACJ,EAQAgtD,EAAe3gE,UAAUg7D,UAAY,SAAU/jC,EAAQC,GACnD,IAAI6d,EAAkB/5C,KAAK8mC,qBAC3B,GAAIiT,EAAiB,CACjB,IAAI1S,EAASrnC,KAAKsnC,aAClB,QAAUyS,EAAiB,EAAGA,EAAgB32C,OAAQikC,EAAQpL,EAAQC,EAAQ6d,GAC9E/5C,KAAK2Y,SACT,CACJ,EACOgtD,CACX,CAtOmC,CAsOjC,kCCzPK,SAASrZ,EAAWvS,EAAiB3Y,EAAQ3hB,EAAK4nB,GAIrD,IAHA,IAAIogC,EAAY,EACZ9jE,EAAKo2C,EAAgBt6B,EAAM4nB,GAC3BxjC,EAAKk2C,EAAgBt6B,EAAM4nB,EAAS,GACjCjG,EAAS3hB,EAAK2hB,GAAUiG,EAAQ,CACnC,IAAIpjC,EAAK81C,EAAgB3Y,GACrBj9B,EAAK41C,EAAgB3Y,EAAS,GAClCqmC,GAAa5jE,EAAKI,EAAKN,EAAKQ,EAC5BR,EAAKM,EACLJ,EAAKM,CACT,CACA,OAAOsjE,EAAY,CACvB,CAQO,SAASrB,EAAYrsB,EAAiB3Y,EAAQuhB,EAAMtb,GAEvD,IADA,IAAIyT,EAAO,EACFtwC,EAAI,EAAGiL,EAAKktC,EAAKv/C,OAAQoH,EAAIiL,IAAMjL,EAAG,CAC3C,IAAIiV,EAAMkjC,EAAKn4C,GACfswC,GAAQwR,EAAWvS,EAAiB3Y,EAAQ3hB,EAAK4nB,GACjDjG,EAAS3hB,CACb,CACA,OAAOq7B,CACX,CAQO,SAASsqB,EAAarrB,EAAiB3Y,EAAQsjC,EAAOr9B,GAEzD,IADA,IAAIyT,EAAO,EACFtwC,EAAI,EAAGiL,EAAKivD,EAAMthE,OAAQoH,EAAIiL,IAAMjL,EAAG,CAC5C,IAAIm4C,EAAO+hB,EAAMl6D,GACjBswC,GAAQsrB,EAAYrsB,EAAiB3Y,EAAQuhB,EAAMtb,GACnDjG,EAASuhB,EAAKA,EAAKv/C,OAAS,EAChC,CACA,OAAO03C,CACX,+ICtCA,SAAS4sB,EAAc3tB,EAAiB4tB,EAASC,EAASvgC,EAAQrlC,EAAGD,EAAGu9D,GACpE,IAIIl+B,EAJAz9B,EAAKo2C,EAAgB4tB,GACrB9jE,EAAKk2C,EAAgB4tB,EAAU,GAC/B/nD,EAAKm6B,EAAgB6tB,GAAWjkE,EAChCkc,EAAKk6B,EAAgB6tB,EAAU,GAAK/jE,EAExC,GAAW,IAAP+b,GAAmB,IAAPC,EACZuhB,EAASumC,MAER,CACD,IAAIr9D,IAAMtI,EAAI2B,GAAMic,GAAM7d,EAAI8B,GAAMgc,IAAOD,EAAKA,EAAKC,EAAKA,GAC1D,GAAIvV,EAAI,EACJ82B,EAASwmC,MAER,IAAIt9D,EAAI,EAAG,CACZ,IAAK,IAAIE,EAAI,EAAGA,EAAI68B,IAAU78B,EAC1B80D,EAAa90D,IAAK,QAAKuvC,EAAgB4tB,EAAUn9D,GAAIuvC,EAAgB6tB,EAAUp9D,GAAIF,GAGvF,YADAg1D,EAAal8D,OAASikC,EAE1B,CAEIjG,EAASumC,CACb,CACJ,CACA,IAASn9D,EAAI,EAAGA,EAAI68B,IAAU78B,EAC1B80D,EAAa90D,GAAKuvC,EAAgB3Y,EAAS52B,GAE/C80D,EAAal8D,OAASikC,CAC1B,CAWO,SAASwgC,EAAgB9tB,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQjK,GAClE,IAAIz5B,EAAKo2C,EAAgB3Y,GACrBv9B,EAAKk2C,EAAgB3Y,EAAS,GAClC,IAAKA,GAAUiG,EAAQjG,EAAS3hB,EAAK2hB,GAAUiG,EAAQ,CACnD,IAAIpjC,EAAK81C,EAAgB3Y,GACrBj9B,EAAK41C,EAAgB3Y,EAAS,GAC9B0mC,GAAe,QAAUnkE,EAAIE,EAAII,EAAIE,GACrC2jE,EAAe1qC,IACfA,EAAM0qC,GAEVnkE,EAAKM,EACLJ,EAAKM,CACT,CACA,OAAOi5B,CACX,CASO,SAAS2qC,EAAqBhuB,EAAiB3Y,EAAQuhB,EAAMtb,EAAQjK,GACxE,IAAK,IAAI5yB,EAAI,EAAGiL,EAAKktC,EAAKv/C,OAAQoH,EAAIiL,IAAMjL,EAAG,CAC3C,IAAIiV,EAAMkjC,EAAKn4C,GACf4yB,EAAMyqC,EAAgB9tB,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQjK,GAC5DgE,EAAS3hB,CACb,CACA,OAAO2d,CACX,CASO,SAAS4qC,EAA0BjuB,EAAiB3Y,EAAQsjC,EAAOr9B,EAAQjK,GAC9E,IAAK,IAAI5yB,EAAI,EAAGiL,EAAKivD,EAAMthE,OAAQoH,EAAIiL,IAAMjL,EAAG,CAC5C,IAAIm4C,EAAO+hB,EAAMl6D,GACjB4yB,EAAM2qC,EAAqBhuB,EAAiB3Y,EAAQuhB,EAAMtb,EAAQjK,GAClEgE,EAASuhB,EAAKA,EAAKv/C,OAAS,EAChC,CACA,OAAOg6B,CACX,CAeO,SAAS6qC,EAAmBluB,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQ6gC,EAAUC,EAAQnmE,EAAGD,EAAGu9D,EAAcC,EAAoB6I,GAC/H,GAAIhnC,GAAU3hB,EACV,OAAO8/C,EAEX,IAAI/0D,EAAG8oC,EACP,GAAiB,IAAb40B,EAAgB,CAGhB,IADA50B,GAAkB,QAAUtxC,EAAGD,EAAGg4C,EAAgB3Y,GAAS2Y,EAAgB3Y,EAAS,KAC9Dm+B,EAAoB,CACtC,IAAK/0D,EAAI,EAAGA,EAAI68B,IAAU78B,EACtB80D,EAAa90D,GAAKuvC,EAAgB3Y,EAAS52B,GAG/C,OADA80D,EAAal8D,OAASikC,EACfiM,CACX,CAEI,OAAOisB,CAEf,CAGA,IAFA,IAAI8I,EAAWD,GAA8B,CAAC1P,IAAKA,KAC/CxjD,EAAQksB,EAASiG,EACdnyB,EAAQuK,GAGX,GAFAioD,EAAc3tB,EAAiB7kC,EAAQmyB,EAAQnyB,EAAOmyB,EAAQrlC,EAAGD,EAAGsmE,IACpE/0B,GAAkB,QAAUtxC,EAAGD,EAAGsmE,EAAS,GAAIA,EAAS,KAClC9I,EAAoB,CAEtC,IADAA,EAAqBjsB,EAChB9oC,EAAI,EAAGA,EAAI68B,IAAU78B,EACtB80D,EAAa90D,GAAK69D,EAAS79D,GAE/B80D,EAAal8D,OAASikC,EACtBnyB,GAASmyB,CACb,MAYInyB,GACImyB,EACIplC,KAAKm7B,KAAMn7B,KAAKuF,KAAK8rC,GAAmBrxC,KAAKuF,KAAK+3D,IAC9C2I,EACA,EAAG,GAGvB,GAAIC,IAEAT,EAAc3tB,EAAiBt6B,EAAM4nB,EAAQjG,EAAQiG,EAAQrlC,EAAGD,EAAGsmE,IACnE/0B,GAAkB,QAAUtxC,EAAGD,EAAGsmE,EAAS,GAAIA,EAAS,KAClC9I,GAAoB,CAEtC,IADAA,EAAqBjsB,EAChB9oC,EAAI,EAAGA,EAAI68B,IAAU78B,EACtB80D,EAAa90D,GAAK69D,EAAS79D,GAE/B80D,EAAal8D,OAASikC,CAC1B,CAEJ,OAAOk4B,CACX,CAeO,SAAS+I,EAAwBvuB,EAAiB3Y,EAAQuhB,EAAMtb,EAAQ6gC,EAAUC,EAAQnmE,EAAGD,EAAGu9D,EAAcC,EAAoB6I,GAErI,IADA,IAAIC,EAAWD,GAA8B,CAAC1P,IAAKA,KAC1CluD,EAAI,EAAGiL,EAAKktC,EAAKv/C,OAAQoH,EAAIiL,IAAMjL,EAAG,CAC3C,IAAIiV,EAAMkjC,EAAKn4C,GACf+0D,EAAqB0I,EAAmBluB,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQ6gC,EAAUC,EAAQnmE,EAAGD,EAAGu9D,EAAcC,EAAoB8I,GACxIjnC,EAAS3hB,CACb,CACA,OAAO8/C,CACX,CAeO,SAASgJ,EAA6BxuB,EAAiB3Y,EAAQsjC,EAAOr9B,EAAQ6gC,EAAUC,EAAQnmE,EAAGD,EAAGu9D,EAAcC,EAAoB6I,GAE3I,IADA,IAAIC,EAAWD,GAA8B,CAAC1P,IAAKA,KAC1CluD,EAAI,EAAGiL,EAAKivD,EAAMthE,OAAQoH,EAAIiL,IAAMjL,EAAG,CAC5C,IAAIm4C,EAAO+hB,EAAMl6D,GACjB+0D,EAAqB+I,EAAwBvuB,EAAiB3Y,EAAQuhB,EAAMtb,EAAQ6gC,EAAUC,EAAQnmE,EAAGD,EAAGu9D,EAAcC,EAAoB8I,GAC9IjnC,EAASuhB,EAAKA,EAAKv/C,OAAS,EAChC,CACA,OAAOm8D,CACX,yFCtNO,SAASiJ,EAAyBzuB,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQjrB,GAS3E,QARc,IAAAm+B,eAAcn+B,GAK5B,SAAUnQ,GACN,OAAQw8D,EAAqB1uB,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQp7B,EAAW,GAAIA,EAAW,GACjG,GAEJ,CAUO,SAASw8D,EAAqB1uB,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQrlC,EAAGD,GAW1E,IAHA,IAAI2mE,EAAK,EACL/kE,EAAKo2C,EAAgBt6B,EAAM4nB,GAC3BxjC,EAAKk2C,EAAgBt6B,EAAM4nB,EAAS,GACjCjG,EAAS3hB,EAAK2hB,GAAUiG,EAAQ,CACnC,IAAIpjC,EAAK81C,EAAgB3Y,GACrBj9B,EAAK41C,EAAgB3Y,EAAS,GAC9Bv9B,GAAM9B,EACFoC,EAAKpC,IAAMkC,EAAKN,IAAO5B,EAAI8B,IAAO7B,EAAI2B,IAAOQ,EAAKN,GAAM,GACxD6kE,IAGCvkE,GAAMpC,IAAMkC,EAAKN,IAAO5B,EAAI8B,IAAO7B,EAAI2B,IAAOQ,EAAKN,GAAM,GAC9D6kE,IAEJ/kE,EAAKM,EACLJ,EAAKM,CACT,CACA,OAAc,IAAPukE,CACX,CAUO,SAASC,EAAsB5uB,EAAiB3Y,EAAQuhB,EAAMtb,EAAQrlC,EAAGD,GAC5E,GAAoB,IAAhB4gD,EAAKv/C,OACL,OAAO,EAEX,IAAKqlE,EAAqB1uB,EAAiB3Y,EAAQuhB,EAAK,GAAItb,EAAQrlC,EAAGD,GACnE,OAAO,EAEX,IAAK,IAAIyI,EAAI,EAAGiL,EAAKktC,EAAKv/C,OAAQoH,EAAIiL,IAAMjL,EACxC,GAAIi+D,EAAqB1uB,EAAiB4I,EAAKn4C,EAAI,GAAIm4C,EAAKn4C,GAAI68B,EAAQrlC,EAAGD,GACvE,OAAO,EAGf,OAAO,CACX,CAUO,SAAS6mE,EAAuB7uB,EAAiB3Y,EAAQsjC,EAAOr9B,EAAQrlC,EAAGD,GAC9E,GAAqB,IAAjB2iE,EAAMthE,OACN,OAAO,EAEX,IAAK,IAAIoH,EAAI,EAAGiL,EAAKivD,EAAMthE,OAAQoH,EAAIiL,IAAMjL,EAAG,CAC5C,IAAIm4C,EAAO+hB,EAAMl6D,GACjB,GAAIm+D,EAAsB5uB,EAAiB3Y,EAAQuhB,EAAMtb,EAAQrlC,EAAGD,GAChE,OAAO,EAEXq/B,EAASuhB,EAAKA,EAAKv/C,OAAS,EAChC,CACA,OAAO,CACX,+BC7FO,SAASylE,EAAkB9uB,EAAiB3Y,EAAQn1B,EAAYo7B,GACnE,IAAK,IAAI78B,EAAI,EAAGiL,EAAKxJ,EAAW7I,OAAQoH,EAAIiL,IAAMjL,EAC9CuvC,EAAgB3Y,KAAYn1B,EAAWzB,GAE3C,OAAO42B,CACX,CAQO,SAAS0nC,EAAmB/uB,EAAiB3Y,EAAQ5e,EAAa6kB,GACrE,IAAK,IAAI78B,EAAI,EAAGiL,EAAK+M,EAAYpf,OAAQoH,EAAIiL,IAAMjL,EAE/C,IADA,IAAIyB,EAAauW,EAAYhY,GACpB+L,EAAI,EAAGA,EAAI8wB,IAAU9wB,EAC1BwjC,EAAgB3Y,KAAYn1B,EAAWsK,GAG/C,OAAO6qB,CACX,CASO,SAAS2nC,EAAwBhvB,EAAiB3Y,EAAQ4nC,EAAc3hC,EAAQk8B,GAGnF,IAFA,IAAI5gB,EAAO4gB,GAAsB,GAC7B/4D,EAAI,EACC+L,EAAI,EAAGwP,EAAKijD,EAAa5lE,OAAQmT,EAAIwP,IAAMxP,EAAG,CACnD,IAAIkJ,EAAMqpD,EAAmB/uB,EAAiB3Y,EAAQ4nC,EAAazyD,GAAI8wB,GACvEsb,EAAKn4C,KAAOiV,EACZ2hB,EAAS3hB,CACb,CAEA,OADAkjC,EAAKv/C,OAASoH,EACPm4C,CACX,CASO,SAASsmB,EAA6BlvB,EAAiB3Y,EAAQ8nC,EAAe7hC,EAAQ+8B,GAGzF,IAFA,IAAIM,EAAQN,GAAwB,GAChC55D,EAAI,EACC+L,EAAI,EAAGwP,EAAKmjD,EAAc9lE,OAAQmT,EAAIwP,IAAMxP,EAAG,CACpD,IAAIosC,EAAOomB,EAAwBhvB,EAAiB3Y,EAAQ8nC,EAAc3yD,GAAI8wB,EAAQq9B,EAAMl6D,IAC5Fk6D,EAAMl6D,KAAOm4C,EACbvhB,EAASuhB,EAAKA,EAAKv/C,OAAS,EAChC,CAEA,OADAshE,EAAMthE,OAASoH,EACRk6D,CACX,2EC1DO,SAASyE,EAAmBpvB,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQ+hC,GAGrE,IAFA,IAAI5mD,OAAkChM,IAApB4yD,EAAgCA,EAAkB,GAChE5+D,EAAI,EACC+L,EAAI6qB,EAAQ7qB,EAAIkJ,EAAKlJ,GAAK8wB,EAC/B7kB,EAAYhY,KAAOuvC,EAAgBjtC,MAAMyJ,EAAGA,EAAI8wB,GAGpD,OADA7kB,EAAYpf,OAASoH,EACdgY,CACX,CASO,SAAS6mD,EAAwBtvB,EAAiB3Y,EAAQuhB,EAAMtb,EAAQiiC,GAG3E,IAFA,IAAIN,OAAoCxyD,IAArB8yD,EAAiCA,EAAmB,GACnE9+D,EAAI,EACC+L,EAAI,EAAGwP,EAAK48B,EAAKv/C,OAAQmT,EAAIwP,IAAMxP,EAAG,CAC3C,IAAIkJ,EAAMkjC,EAAKpsC,GACfyyD,EAAax+D,KAAO2+D,EAAmBpvB,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQ2hC,EAAax+D,IAC1F42B,EAAS3hB,CACb,CAEA,OADAupD,EAAa5lE,OAASoH,EACfw+D,CACX,CAUO,SAASO,EAA6BxvB,EAAiB3Y,EAAQsjC,EAAOr9B,EAAQmiC,GAGjF,IAFA,IAAIN,OAAsC1yD,IAAtBgzD,EAAkCA,EAAoB,GACtEh/D,EAAI,EACC+L,EAAI,EAAGwP,EAAK2+C,EAAMthE,OAAQmT,EAAIwP,IAAMxP,EAAG,CAC5C,IAAIosC,EAAO+hB,EAAMnuD,GACjB2yD,EAAc1+D,KAAO6+D,EAAwBtvB,EAAiB3Y,EAAQuhB,EAAMtb,EAAQ6hC,EAAc1+D,IAClG42B,EAASuhB,EAAKA,EAAKv/C,OAAS,EAChC,CAEA,OADA8lE,EAAc9lE,OAASoH,EAChB0+D,CACX,kHCxCO,SAASO,EAAwB1vB,EAAiB3Y,EAAQuhB,EAAMtb,EAAQ89B,EAAauE,EAAmBxG,GAM3G,IALA,IAAI14D,EAAGiL,EAAIzT,EAAG2B,EAAIM,EAAIJ,EAAIM,EACtBpC,EAAIojE,EAAYuE,EAAoB,GAEpCC,EAAgB,GAEX75D,EAAI,EAAG85D,EAAKjnB,EAAKv/C,OAAQ0M,EAAI85D,IAAM95D,EAAG,CAC3C,IAAI2P,EAAMkjC,EAAK7yC,GAGf,IAFAnM,EAAKo2C,EAAgBt6B,EAAM4nB,GAC3BxjC,EAAKk2C,EAAgBt6B,EAAM4nB,EAAS,GAC/B78B,EAAI42B,EAAQ52B,EAAIiV,EAAKjV,GAAK68B,EAC3BpjC,EAAK81C,EAAgBvvC,GACrBrG,EAAK41C,EAAgBvvC,EAAI,IACpBzI,GAAK8B,GAAMM,GAAMpC,GAAO8B,GAAM9B,GAAKA,GAAKoC,KACzCnC,GAAMD,EAAI8B,IAAOM,EAAKN,IAAQI,EAAKN,GAAMA,EACzCgmE,EAAcr3D,KAAKtQ,IAEvB2B,EAAKM,EACLJ,EAAKM,CAEb,CAGA,IAAI0lE,EAASnR,IACToR,GAAmB,IAGvB,IAFAH,EAAc9lD,KAAK,MACnBlgB,EAAKgmE,EAAc,GACdn/D,EAAI,EAAGiL,EAAKk0D,EAAcvmE,OAAQoH,EAAIiL,IAAMjL,EAAG,CAChDvG,EAAK0lE,EAAcn/D,GACnB,IAAIu/D,EAAgB9nE,KAAK2G,IAAI3E,EAAKN,GAC9BomE,EAAgBD,IAChB9nE,GAAK2B,EAAKM,GAAM,GACZ,QAAsB81C,EAAiB3Y,EAAQuhB,EAAMtb,EAAQrlC,EAAGD,KAChE8nE,EAAS7nE,EACT8nE,EAAmBC,IAG3BpmE,EAAKM,CACT,CAMA,OALIwjC,MAAMoiC,KAGNA,EAAS1E,EAAYuE,IAErBxG,GACAA,EAAS5wD,KAAKu3D,EAAQ9nE,EAAG+nE,GAClB5G,GAGA,CAAC2G,EAAQ9nE,EAAG+nE,EAE3B,CAUO,SAASE,EAA8BjwB,EAAiB3Y,EAAQsjC,EAAOr9B,EAAQ89B,GAElF,IADA,IAAI8E,EAAiB,GACZz/D,EAAI,EAAGiL,EAAKivD,EAAMthE,OAAQoH,EAAIiL,IAAMjL,EAAG,CAC5C,IAAIm4C,EAAO+hB,EAAMl6D,GACjBy/D,EAAiBR,EAAwB1vB,EAAiB3Y,EAAQuhB,EAAMtb,EAAQ89B,EAAa,EAAI36D,EAAGy/D,GACpG7oC,EAASuhB,EAAKA,EAAKv/C,OAAS,EAChC,CACA,OAAO6mE,CACX,2FCxEO,SAASC,EAAiBnwB,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQ1D,EAAUu/B,EAAUiH,GACvF,IAAI1/D,EAAGH,EACHxI,GAAK2d,EAAM2hB,GAAUiG,EACzB,GAAU,IAANvlC,EACA2I,EAAI22B,OAEH,GAAU,IAANt/B,EACL2I,EAAI22B,EACJ92B,EAAIq5B,OAEH,GAAU,IAAN7hC,EAAS,CAKd,IAJA,IAAI6B,EAAKo2C,EAAgB3Y,GACrBv9B,EAAKk2C,EAAgB3Y,EAAS,GAC9BgpC,EAAW,EACXC,EAAoB,CAAC,GAChB7/D,EAAI42B,EAASiG,EAAQ78B,EAAIiV,EAAKjV,GAAK68B,EAAQ,CAChD,IAAIpjC,EAAK81C,EAAgBvvC,GACrBrG,EAAK41C,EAAgBvvC,EAAI,GAC7B4/D,GAAYnoE,KAAKuF,MAAMvD,EAAKN,IAAOM,EAAKN,IAAOQ,EAAKN,IAAOM,EAAKN,IAChEwmE,EAAkB/3D,KAAK83D,GACvBzmE,EAAKM,EACLJ,EAAKM,CACT,CACA,IAAI8N,EAAS0xB,EAAWymC,EACpBl1D,GAAQ,QAAam1D,EAAmBp4D,GACxCiD,EAAQ,GACR5K,GACK2H,EAASo4D,GAAmBn1D,EAAQ,KAChCm1D,GAAmBn1D,EAAQ,GAAKm1D,GAAmBn1D,EAAQ,IACpEzK,EAAI22B,IAAWlsB,EAAQ,GAAKmyB,GAG5B58B,EAAI22B,EAASlsB,EAAQmyB,CAE7B,CACA,IAAIijC,EAAYH,EAAgB,EAAIA,EAAgB,EAChDI,EAAOrH,GAAsB,IAAI/hE,MAAMmpE,GAC3C,IAAS9/D,EAAI,EAAGA,EAAI8/D,IAAa9/D,EAC7B+/D,EAAK//D,QACKgM,IAAN/L,EACMiuD,SACMliD,IAANlM,EACIyvC,EAAgBtvC,EAAID,IACpB,QAAKuvC,EAAgBtvC,EAAID,GAAIuvC,EAAgBtvC,EAAI48B,EAAS78B,GAAIF,GAEhF,OAAOigE,CACX,CAUO,SAASC,EAAwBzwB,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQ/6B,EAAG02D,GAC7E,GAAIvjD,GAAO2hB,EACP,OAAO,KAEX,IAAIn1B,EACJ,GAAIK,EAAIytC,EAAgB3Y,EAASiG,EAAS,GACtC,OAAI27B,IACA/2D,EAAa8tC,EAAgBjtC,MAAMs0B,EAAQA,EAASiG,IACzCA,EAAS,GAAK/6B,EAClBL,GAGA,KAGV,GAAI8tC,EAAgBt6B,EAAM,GAAKnT,EAChC,OAAI02D,IACA/2D,EAAa8tC,EAAgBjtC,MAAM2S,EAAM4nB,EAAQ5nB,IACtC4nB,EAAS,GAAK/6B,EAClBL,GAGA,KAIf,GAAIK,GAAKytC,EAAgB3Y,EAASiG,EAAS,GACvC,OAAO0S,EAAgBjtC,MAAMs0B,EAAQA,EAASiG,GAIlD,IAFA,IAAIojC,EAAKrpC,EAASiG,EACdqjC,EAAKjrD,EAAM4nB,EACRojC,EAAKC,GAAI,CACZ,IAAI1gC,EAAOygC,EAAKC,GAAO,EACnBp+D,EAAIytC,GAAiB/P,EAAM,GAAK3C,EAAS,GACzCqjC,EAAK1gC,EAGLygC,EAAKzgC,EAAM,CAEnB,CACA,IAAI2gC,EAAK5wB,EAAgB0wB,EAAKpjC,EAAS,GACvC,GAAI/6B,GAAKq+D,EACL,OAAO5wB,EAAgBjtC,OAAO29D,EAAK,GAAKpjC,GAASojC,EAAK,GAAKpjC,EAASA,GAExE,IACI/8B,GAAKgC,EAAIq+D,IADJ5wB,GAAiB0wB,EAAK,GAAKpjC,EAAS,GACpBsjC,GACzB1+D,EAAa,GACb,IAAK,IAAIzB,EAAI,EAAGA,EAAI68B,EAAS,IAAK78B,EAC9ByB,EAAWqG,MAAK,QAAKynC,GAAiB0wB,EAAK,GAAKpjC,EAAS78B,GAAIuvC,EAAgB0wB,EAAKpjC,EAAS78B,GAAIF,IAGnG,OADA2B,EAAWqG,KAAKhG,GACTL,CACX,CAWO,SAAS2+D,EAAyB7wB,EAAiB3Y,EAAQuhB,EAAMtb,EAAQ/6B,EAAG02D,EAAaW,GAC5F,GAAIA,EACA,OAAO6G,EAAwBzwB,EAAiB3Y,EAAQuhB,EAAKA,EAAKv/C,OAAS,GAAIikC,EAAQ/6B,EAAG02D,GAE9F,IAAI/2D,EACJ,GAAIK,EAAIytC,EAAgB1S,EAAS,GAC7B,OAAI27B,IACA/2D,EAAa8tC,EAAgBjtC,MAAM,EAAGu6B,IAC3BA,EAAS,GAAK/6B,EAClBL,GAGA,KAGf,GAAI8tC,EAAgBA,EAAgB32C,OAAS,GAAKkJ,EAC9C,OAAI02D,IACA/2D,EAAa8tC,EAAgBjtC,MAAMitC,EAAgB32C,OAASikC,IACjDA,EAAS,GAAK/6B,EAClBL,GAGA,KAGf,IAAK,IAAIzB,EAAI,EAAGiL,EAAKktC,EAAKv/C,OAAQoH,EAAIiL,IAAMjL,EAAG,CAC3C,IAAIiV,EAAMkjC,EAAKn4C,GACf,GAAI42B,GAAU3hB,EAAd,CAGA,GAAInT,EAAIytC,EAAgB3Y,EAASiG,EAAS,GACtC,OAAO,KAEN,GAAI/6B,GAAKytC,EAAgBt6B,EAAM,GAChC,OAAO+qD,EAAwBzwB,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQ/6B,GAAG,GAE5E80B,EAAS3hB,CAPT,CAQJ,CACA,OAAO,IACX,4GC/JO,SAASorD,EAAqB9wB,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQjrB,GACvE,IAAI0uD,GAAoB,IAAA9wB,wBAAsB,IAAAN,eAAeK,EAAiB3Y,EAAQ3hB,EAAK4nB,GAC3F,SAAK,IAAA1K,YAAWvgB,EAAQ0uD,QAGpB,IAAAzxB,gBAAej9B,EAAQ0uD,IAGvBA,EAAkB,IAAM1uD,EAAO,IAAM0uD,EAAkB,IAAM1uD,EAAO,IAGpE0uD,EAAkB,IAAM1uD,EAAO,IAAM0uD,EAAkB,IAAM1uD,EAAO,KAGjE,OAAe29B,EAAiB3Y,EAAQ3hB,EAAK4nB,GAOpD,SAAU0jC,EAAQC,GACd,OAAO,IAAAhvB,mBAAkB5/B,EAAQ2uD,EAAQC,EAC7C,IACJ,CASO,SAASC,EAA0BlxB,EAAiB3Y,EAAQuhB,EAAMtb,EAAQjrB,GAC7E,IAAK,IAAI5R,EAAI,EAAGiL,EAAKktC,EAAKv/C,OAAQoH,EAAIiL,IAAMjL,EAAG,CAC3C,GAAIqgE,EAAqB9wB,EAAiB3Y,EAAQuhB,EAAKn4C,GAAI68B,EAAQjrB,GAC/D,OAAO,EAEXglB,EAASuhB,EAAKn4C,EAClB,CACA,OAAO,CACX,CAmCO,SAAS0gE,EAA0BnxB,EAAiB3Y,EAAQuhB,EAAMtb,EAAQjrB,GAC7E,IA3BG,SAA8B29B,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQjrB,GACvE,SAAIyuD,EAAqB9wB,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQjrB,KAG3D,QAAqB29B,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQjrB,EAAO,GAAIA,EAAO,MAG7E,QAAqB29B,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQjrB,EAAO,GAAIA,EAAO,MAG7E,QAAqB29B,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQjrB,EAAO,GAAIA,EAAO,MAG7E,QAAqB29B,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQjrB,EAAO,GAAIA,EAAO,IAIrF,CAUS+uD,CAAqBpxB,EAAiB3Y,EAAQuhB,EAAK,GAAItb,EAAQjrB,GAChE,OAAO,EAEX,GAAoB,IAAhBumC,EAAKv/C,OACL,OAAO,EAEX,IAAK,IAAIoH,EAAI,EAAGiL,EAAKktC,EAAKv/C,OAAQoH,EAAIiL,IAAMjL,EACxC,IAAI,QAAyBuvC,EAAiB4I,EAAKn4C,EAAI,GAAIm4C,EAAKn4C,GAAI68B,EAAQjrB,KACnEyuD,EAAqB9wB,EAAiB4I,EAAKn4C,EAAI,GAAIm4C,EAAKn4C,GAAI68B,EAAQjrB,GACrE,OAAO,EAInB,OAAO,CACX,CASO,SAASgvD,EAA+BrxB,EAAiB3Y,EAAQsjC,EAAOr9B,EAAQjrB,GACnF,IAAK,IAAI5R,EAAI,EAAGiL,EAAKivD,EAAMthE,OAAQoH,EAAIiL,IAAMjL,EAAG,CAC5C,IAAIm4C,EAAO+hB,EAAMl6D,GACjB,GAAI0gE,EAA0BnxB,EAAiB3Y,EAAQuhB,EAAMtb,EAAQjrB,GACjE,OAAO,EAEXglB,EAASuhB,EAAKA,EAAKv/C,OAAS,EAChC,CACA,OAAO,CACX,+BCjHO,SAASioE,EAAiBtxB,EAAiB3Y,EAAQ3hB,EAAK4nB,GAI3D,IAHA,IAAI1jC,EAAKo2C,EAAgB3Y,GACrBv9B,EAAKk2C,EAAgB3Y,EAAS,GAC9Bh+B,EAAS,EACJoH,EAAI42B,EAASiG,EAAQ78B,EAAIiV,EAAKjV,GAAK68B,EAAQ,CAChD,IAAIpjC,EAAK81C,EAAgBvvC,GACrBrG,EAAK41C,EAAgBvvC,EAAI,GAC7BpH,GAAUnB,KAAKuF,MAAMvD,EAAKN,IAAOM,EAAKN,IAAOQ,EAAKN,IAAOM,EAAKN,IAC9DF,EAAKM,EACLJ,EAAKM,CACT,CACA,OAAOf,CACX,8CCbO,SAASof,EAAYu3B,EAAiB3Y,EAAQ3hB,EAAK4nB,GACtD,KAAOjG,EAAS3hB,EAAM4nB,GAAQ,CAC1B,IAAK,IAAI78B,EAAI,EAAGA,EAAI68B,IAAU78B,EAAG,CAC7B,IAAIkgC,EAAMqP,EAAgB3Y,EAAS52B,GACnCuvC,EAAgB3Y,EAAS52B,GAAKuvC,EAAgBt6B,EAAM4nB,EAAS78B,GAC7DuvC,EAAgBt6B,EAAM4nB,EAAS78B,GAAKkgC,CACxC,CACAtJ,GAAUiG,EACV5nB,GAAO4nB,CACX,CACJ,CCLO,SAASikC,EAAsBvxB,EAAiB3Y,EAAQ3hB,EAAK4nB,GAIhE,IADA,IAAIkkC,GAAsB,EACjB/gE,EAAI,EAAGA,EAAI68B,IAAU78B,EAC1B,GAAIuvC,EAAgB3Y,EAAS52B,KAAOuvC,EAAgBt6B,EAAM4nB,EAAS78B,GAAI,CACnE+gE,GAAsB,EACtB,KACJ,CAEAA,IACA9rD,GAAO4nB,GAEX,IAAImkC,EAwBR,SAA0BzxB,EAAiB3Y,EAAQ3hB,EAAK4nB,GAIpD,IAHA,IAAImkC,GAAc,EACdlvC,EAAO7C,IACPgyC,EAAahyC,IACRjvB,EAAI42B,EAAQ52B,EAAIiV,EAAKjV,GAAK68B,EAAQ,CACvC,IAAIrlC,EAAI+3C,EAAgBvvC,GACpBzI,EAAIg4C,EAAgBvvC,EAAI,GACxBzI,EAAIu6B,GAGJv6B,GAAKu6B,GACDt6B,GAAKypE,IAKbD,EAAahhE,EACb8xB,EAAOv6B,EACP0pE,EAAazpE,EACjB,CACA,OAAOwpE,CACX,CA7CqBE,CAAiB3xB,EAAiB3Y,EAAQ3hB,EAAK4nB,GAK5DskC,EAAkBH,EAAankC,EAC/BskC,EAAkBvqC,IAClBuqC,EAAkBlsD,EAAM4nB,GAE5B,IAAIukC,EAAcJ,EAAankC,EAC3BukC,GAAensD,IACfmsD,EAAcxqC,GAElB,IAAIyqC,EAAK9xB,EAAgB4xB,GACrBG,EAAK/xB,EAAgB4xB,EAAkB,GACvCI,EAAKhyB,EAAgByxB,GACrBQ,EAAKjyB,EAAgByxB,EAAa,GAClCS,EAAKlyB,EAAgB6xB,GACrBM,EAAKnyB,EAAgB6xB,EAAc,GAEvC,OADkBG,EAAKG,EAAKL,EAAKG,EAAKF,EAAKG,GAAMH,EAAKC,EAAKC,EAAKC,EAAKJ,EAAKK,GACrD,CACzB,CAsCO,SAASC,EAAuBpyB,EAAiB3Y,EAAQuhB,EAAMtb,EAAQy9B,GAE1E,IADA,IAAI50D,OAAsBsG,IAAdsuD,GAA0BA,EAC7Bt6D,EAAI,EAAGiL,EAAKktC,EAAKv/C,OAAQoH,EAAIiL,IAAMjL,EAAG,CAC3C,IAAIiV,EAAMkjC,EAAKn4C,GACX4hE,EAAcd,EAAsBvxB,EAAiB3Y,EAAQ3hB,EAAK4nB,GACtE,GAAU,IAAN78B,GACA,GAAK0F,GAASk8D,IAAkBl8D,IAAUk8D,EACtC,OAAO,OAIX,GAAKl8D,IAAUk8D,IAAkBl8D,GAASk8D,EACtC,OAAO,EAGfhrC,EAAS3hB,CACb,CACA,OAAO,CACX,CAcO,SAAS4sD,EAAwBtyB,EAAiB3Y,EAAQsjC,EAAOr9B,EAAQy9B,GAC5E,IAAK,IAAIt6D,EAAI,EAAGiL,EAAKivD,EAAMthE,OAAQoH,EAAIiL,IAAMjL,EAAG,CAC5C,IAAIm4C,EAAO+hB,EAAMl6D,GACjB,IAAK2hE,EAAuBpyB,EAAiB3Y,EAAQuhB,EAAMtb,EAAQy9B,GAC/D,OAAO,EAEPniB,EAAKv/C,SACLg+B,EAASuhB,EAAKA,EAAKv/C,OAAS,GAEpC,CACA,OAAO,CACX,CAcO,SAASkpE,EAAkBvyB,EAAiB3Y,EAAQuhB,EAAMtb,EAAQy9B,GAErE,IADA,IAAI50D,OAAsBsG,IAAdsuD,GAA0BA,EAC7Bt6D,EAAI,EAAGiL,EAAKktC,EAAKv/C,OAAQoH,EAAIiL,IAAMjL,EAAG,CAC3C,IAAIiV,EAAMkjC,EAAKn4C,GACX4hE,EAAcd,EAAsBvxB,EAAiB3Y,EAAQ3hB,EAAK4nB,IAClD,IAAN78B,EACP0F,GAASk8D,IAAkBl8D,IAAUk8D,EACrCl8D,IAAUk8D,IAAkBl8D,GAASk8D,IAExC,EAAmBryB,EAAiB3Y,EAAQ3hB,EAAK4nB,GAErDjG,EAAS3hB,CACb,CACA,OAAO2hB,CACX,CAcO,SAASmrC,EAAuBxyB,EAAiB3Y,EAAQsjC,EAAOr9B,EAAQy9B,GAC3E,IAAK,IAAIt6D,EAAI,EAAGiL,EAAKivD,EAAMthE,OAAQoH,EAAIiL,IAAMjL,EACzC42B,EAASkrC,EAAkBvyB,EAAiB3Y,EAAQsjC,EAAMl6D,GAAI68B,EAAQy9B,GAE1E,OAAO1jC,CACX,2EChKO,SAAS3xB,EAAQsqC,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQ37B,GAI1D,IAHA,IAEI8gE,EAFAzB,EAAS,CAAChxB,EAAgB3Y,GAAS2Y,EAAgB3Y,EAAS,IAC5D4pC,EAAS,GAEN5pC,EAASiG,EAAS5nB,EAAK2hB,GAAUiG,EAAQ,CAI5C,GAHA2jC,EAAO,GAAKjxB,EAAgB3Y,EAASiG,GACrC2jC,EAAO,GAAKjxB,EAAgB3Y,EAASiG,EAAS,GAC9CmlC,EAAM9gE,EAASq/D,EAAQC,GAEnB,OAAOwB,EAEXzB,EAAO,GAAKC,EAAO,GACnBD,EAAO,GAAKC,EAAO,EACvB,CACA,OAAO,CACX,mHCiCO,SAASyB,EAAe1yB,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQ43B,EAAkBoE,EAA2BqJ,GAC9G,IAAI5qE,GAAK2d,EAAM2hB,GAAUiG,EACzB,GAAIvlC,EAAI,EAAG,CACP,KAAOs/B,EAAS3hB,EAAK2hB,GAAUiG,EAC3Bg8B,EAA0BqJ,KAAsB3yB,EAAgB3Y,GAChEiiC,EAA0BqJ,KACtB3yB,EAAgB3Y,EAAS,GAEjC,OAAOsrC,CACX,CAEA,IAAIC,EAAU,IAAIxrE,MAAMW,GACxB6qE,EAAQ,GAAK,EACbA,EAAQ7qE,EAAI,GAAK,EAIjB,IAFA,IAAI8qE,EAAQ,CAACxrC,EAAQ3hB,EAAM4nB,GACvBnyB,EAAQ,EACL03D,EAAMxpE,OAAS,GAAG,CAQrB,IAPA,IAAI1D,EAAOktE,EAAM34D,MACb44D,EAAQD,EAAM34D,MACd64D,EAAqB,EACrBnpE,EAAKo2C,EAAgB8yB,GACrBhpE,EAAKk2C,EAAgB8yB,EAAQ,GAC7B5oE,EAAK81C,EAAgBr6C,GACrByE,EAAK41C,EAAgBr6C,EAAO,GACvB8K,EAAIqiE,EAAQxlC,EAAQ78B,EAAI9K,EAAM8K,GAAK68B,EAAQ,CAChD,IAAIrlC,EAAI+3C,EAAgBvvC,GACpBzI,EAAIg4C,EAAgBvvC,EAAI,GACxBuiE,GAAoB,QAAuB/qE,EAAGD,EAAG4B,EAAIE,EAAII,EAAIE,GAC7D4oE,EAAoBD,IACpB53D,EAAQ1K,EACRsiE,EAAqBC,EAE7B,CACID,EAAqB7N,IACrB0N,GAASz3D,EAAQksB,GAAUiG,GAAU,EACjCwlC,EAAQxlC,EAASnyB,GACjB03D,EAAMt6D,KAAKu6D,EAAO33D,GAElBA,EAAQmyB,EAAS3nC,GACjBktE,EAAMt6D,KAAK4C,EAAOxV,GAG9B,CACA,IAAS8K,EAAI,EAAGA,EAAI1I,IAAK0I,EACjBmiE,EAAQniE,KACR64D,EAA0BqJ,KACtB3yB,EAAgB3Y,EAAS52B,EAAI68B,GACjCg8B,EAA0BqJ,KACtB3yB,EAAgB3Y,EAAS52B,EAAI68B,EAAS,IAGlD,OAAOqlC,CACX,CAaO,SAASM,EAAoBjzB,EAAiB3Y,EAAQuhB,EAAMtb,EAAQ43B,EAAkBoE,EAA2BqJ,EAAkBzI,GACtI,IAAK,IAAIz5D,EAAI,EAAGiL,EAAKktC,EAAKv/C,OAAQoH,EAAIiL,IAAMjL,EAAG,CAC3C,IAAIiV,EAAMkjC,EAAKn4C,GACfkiE,EAAmBD,EAAe1yB,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQ43B,EAAkBoE,EAA2BqJ,GACrHzI,EAAe3xD,KAAKo6D,GACpBtrC,EAAS3hB,CACb,CACA,OAAOitD,CACX,CA0EO,SAASO,EAAKvsE,EAAO25C,GACxB,OAAOA,EAAYp4C,KAAKE,MAAMzB,EAAQ25C,EAC1C,CAoBO,SAAS6yB,EAASnzB,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQgT,EAAWgpB,EAA2BqJ,GAEjG,GAAItrC,GAAU3hB,EACV,OAAOitD,EAGX,IAQIzoE,EAAIE,EARJR,EAAKspE,EAAKlzB,EAAgB3Y,GAASiZ,GACnCx2C,EAAKopE,EAAKlzB,EAAgB3Y,EAAS,GAAIiZ,GAC3CjZ,GAAUiG,EAEVg8B,EAA0BqJ,KAAsB/oE,EAChD0/D,EAA0BqJ,KAAsB7oE,EAIhD,GAII,GAHAI,EAAKgpE,EAAKlzB,EAAgB3Y,GAASiZ,GACnCl2C,EAAK8oE,EAAKlzB,EAAgB3Y,EAAS,GAAIiZ,IACvCjZ,GAAUiG,IACI5nB,EAOV,OAFA4jD,EAA0BqJ,KAAsBzoE,EAChDo/D,EAA0BqJ,KAAsBvoE,EACzCuoE,QAENzoE,GAAMN,GAAMQ,GAAMN,GAC3B,KAAOu9B,EAAS3hB,GAAK,CAEjB,IAAI+7B,EAAKyxB,EAAKlzB,EAAgB3Y,GAASiZ,GACnCoB,EAAKwxB,EAAKlzB,EAAgB3Y,EAAS,GAAIiZ,GAG3C,GAFAjZ,GAAUiG,EAENmU,GAAMv3C,GAAMw3C,GAAMt3C,EAAtB,CAIA,IAAIgpE,EAAMlpE,EAAKN,EACXypE,EAAMjpE,EAAKN,EAEXwpE,EAAM7xB,EAAK73C,EACX2pE,EAAM7xB,EAAK53C,EAIXspE,EAAMG,GAAOF,EAAMC,IACjBF,EAAM,GAAKE,EAAMF,GAAQA,GAAOE,GAAQF,EAAM,GAAKE,EAAMF,KACzDC,EAAM,GAAKE,EAAMF,GAAQA,GAAOE,GAAQF,EAAM,GAAKE,EAAMF,IAE3DnpE,EAAKu3C,EACLr3C,EAAKs3C,IAMT4nB,EAA0BqJ,KAAsBzoE,EAChDo/D,EAA0BqJ,KAAsBvoE,EAChDR,EAAKM,EACLJ,EAAKM,EACLF,EAAKu3C,EACLr3C,EAAKs3C,EA1BL,CA2BJ,CAIA,OAFA4nB,EAA0BqJ,KAAsBzoE,EAChDo/D,EAA0BqJ,KAAsBvoE,EACzCuoE,CACX,CAaO,SAASa,EAAcxzB,EAAiB3Y,EAAQuhB,EAAMtb,EAAQgT,EAAWgpB,EAA2BqJ,EAAkBzI,GACzH,IAAK,IAAIz5D,EAAI,EAAGiL,EAAKktC,EAAKv/C,OAAQoH,EAAIiL,IAAMjL,EAAG,CAC3C,IAAIiV,EAAMkjC,EAAKn4C,GACfkiE,EAAmBQ,EAASnzB,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQgT,EAAWgpB,EAA2BqJ,GACxGzI,EAAe3xD,KAAKo6D,GACpBtrC,EAAS3hB,CACb,CACA,OAAOitD,CACX,CAaO,SAASc,EAAmBzzB,EAAiB3Y,EAAQsjC,EAAOr9B,EAAQgT,EAAWgpB,EAA2BqJ,EAAkBpH,GAC/H,IAAK,IAAI96D,EAAI,EAAGiL,EAAKivD,EAAMthE,OAAQoH,EAAIiL,IAAMjL,EAAG,CAC5C,IAAIm4C,EAAO+hB,EAAMl6D,GACby5D,EAAiB,GACrByI,EAAmBa,EAAcxzB,EAAiB3Y,EAAQuhB,EAAMtb,EAAQgT,EAAWgpB,EAA2BqJ,EAAkBzI,GAChIqB,EAAgBhzD,KAAK2xD,GACrB7iC,EAASuhB,EAAKA,EAAKv/C,OAAS,EAChC,CACA,OAAOspE,CACX,+BC9UO,SAASe,EAAY1zB,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQ9f,EAAW27C,GAGzE,IAFA,IAAIqH,EAAOrH,GAAsB,GAC7B14D,EAAI,EACC+L,EAAI6qB,EAAQ7qB,EAAIkJ,EAAKlJ,GAAK8wB,EAAQ,CACvC,IAAIrlC,EAAI+3C,EAAgBxjC,GACpBxU,EAAIg4C,EAAgBxjC,EAAI,GAC5Bg0D,EAAK//D,KAAO+c,EAAU,GAAKvlB,EAAIulB,EAAU,GAAKxlB,EAAIwlB,EAAU,GAC5DgjD,EAAK//D,KAAO+c,EAAU,GAAKvlB,EAAIulB,EAAU,GAAKxlB,EAAIwlB,EAAU,EAChE,CAIA,OAHI27C,GAAYqH,EAAKnnE,QAAUoH,IAC3B+/D,EAAKnnE,OAASoH,GAEX+/D,CACX,CAWO,SAAS7hD,EAAOqxB,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQgM,EAAOtQ,EAAQmgC,GAOxE,IANA,IAAIqH,EAAOrH,GAAsB,GAC7Bh7D,EAAMjG,KAAKiG,IAAImrC,GACf5rC,EAAMxF,KAAKwF,IAAI4rC,GACfq6B,EAAU3qC,EAAO,GACjB4qC,EAAU5qC,EAAO,GACjBv4B,EAAI,EACC+L,EAAI6qB,EAAQ7qB,EAAIkJ,EAAKlJ,GAAK8wB,EAAQ,CACvC,IAAIpL,EAAS8d,EAAgBxjC,GAAKm3D,EAC9BxxC,EAAS6d,EAAgBxjC,EAAI,GAAKo3D,EACtCpD,EAAK//D,KAAOkjE,EAAUzxC,EAAS/zB,EAAMg0B,EAASz0B,EAC9C8iE,EAAK//D,KAAOmjE,EAAU1xC,EAASx0B,EAAMy0B,EAASh0B,EAC9C,IAAK,IAAI0lE,EAAIr3D,EAAI,EAAGq3D,EAAIr3D,EAAI8wB,IAAUumC,EAClCrD,EAAK//D,KAAOuvC,EAAgB6zB,EAEpC,CAIA,OAHI1K,GAAYqH,EAAKnnE,QAAUoH,IAC3B+/D,EAAKnnE,OAASoH,GAEX+/D,CACX,CAaO,SAAS/4B,EAAMuI,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQu4B,EAAI4H,EAAIzkC,EAAQmgC,GAKxE,IAJA,IAAIqH,EAAOrH,GAAsB,GAC7BwK,EAAU3qC,EAAO,GACjB4qC,EAAU5qC,EAAO,GACjBv4B,EAAI,EACC+L,EAAI6qB,EAAQ7qB,EAAIkJ,EAAKlJ,GAAK8wB,EAAQ,CACvC,IAAIpL,EAAS8d,EAAgBxjC,GAAKm3D,EAC9BxxC,EAAS6d,EAAgBxjC,EAAI,GAAKo3D,EACtCpD,EAAK//D,KAAOkjE,EAAU9N,EAAK3jC,EAC3BsuC,EAAK//D,KAAOmjE,EAAUnG,EAAKtrC,EAC3B,IAAK,IAAI0xC,EAAIr3D,EAAI,EAAGq3D,EAAIr3D,EAAI8wB,IAAUumC,EAClCrD,EAAK//D,KAAOuvC,EAAgB6zB,EAEpC,CAIA,OAHI1K,GAAYqH,EAAKnnE,QAAUoH,IAC3B+/D,EAAKnnE,OAASoH,GAEX+/D,CACX,CAWO,SAASvK,EAAUjmB,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQpL,EAAQC,EAAQgnC,GAG5E,IAFA,IAAIqH,EAAOrH,GAAsB,GAC7B14D,EAAI,EACC+L,EAAI6qB,EAAQ7qB,EAAIkJ,EAAKlJ,GAAK8wB,EAAQ,CACvCkjC,EAAK//D,KAAOuvC,EAAgBxjC,GAAK0lB,EACjCsuC,EAAK//D,KAAOuvC,EAAgBxjC,EAAI,GAAK2lB,EACrC,IAAK,IAAI0xC,EAAIr3D,EAAI,EAAGq3D,EAAIr3D,EAAI8wB,IAAUumC,EAClCrD,EAAK//D,KAAOuvC,EAAgB6zB,EAEpC,CAIA,OAHI1K,GAAYqH,EAAKnnE,QAAUoH,IAC3B+/D,EAAKnnE,OAASoH,GAEX+/D,CACX,kJC7GA,IAAIsD,EAA0B,oBAAd9zD,gBAA4D,IAAxBA,UAAU+zD,UACxD/zD,UAAU+zD,UAAUC,cACpB,GAKKC,GAAqC,IAA3BH,EAAGn7D,QAAQ,WAUrBu7D,IALmC,IAA1BJ,EAAGn7D,QAAQ,WAAoBm7D,EAAGn7D,QAAQ,UAKhB,IAA1Bm7D,EAAGn7D,QAAQ,YAA2C,GAAvBm7D,EAAGn7D,QAAQ,SAKnDw7D,GAAmC,IAA7BL,EAAGn7D,QAAQ,aAQjBy7D,EAAiD,oBAArBC,iBAAmCA,iBAAmB,EAMlFC,EAAuD,oBAAtBC,mBACb,oBAApBp5B,iBACPq5B,gBAAgBD,kBAKTE,EAAgC,oBAAV7xD,OAAyBA,MAAM3X,UAAU8W,OAI/D2yD,EAA0B,WACjC,IAAI9jD,GAAU,EACd,IACI,IAAIjc,EAAUlO,OAAOC,eAAe,CAAC,EAAG,UAAW,CAC/CwE,IAAK,WACD0lB,GAAU,CACd,IAEJ/d,OAAO2E,iBAAiB,IAAK,KAAM7C,GACnC9B,OAAO8E,oBAAoB,IAAK,KAAMhD,EAC1C,CACA,MAAOqK,GAEP,CACA,OAAO4R,CACV,CAfoC,+xBCtCrC,SAASugC,EAAKyY,EAAap8C,EAAW03C,GAmBlC,IAfA,IAcIyP,EAAMpiE,EAAGqiE,EAAOC,EAAOC,EAAOliD,EAd9BotB,EAAkB,GAClB+0B,EAAOnL,EAAY,GACnBoL,EAAOpL,EAAY,GACnBn9D,EAAI+gB,EAAUunD,GACdroE,EAAI8gB,EAAUwnD,GAEdC,EAAW,CAACD,EAAMD,GAElBlC,EAAQ,CAACnmE,EAAGD,GAEZyoE,EAAgB,CAAC,EAAG,GAEpBC,EAAY,CAAC,EACbC,EAAgB,MAEXA,EAAgB,GAAKF,EAAc7rE,OAAS,GAEjDurE,EAAQM,EAAch7D,MACtB66D,EAAOE,EAAS/6D,MAChBzN,EAAIomE,EAAM34D,OAEV0Y,EAAMgiD,EAAM5pE,cACCmqE,IACTn1B,EAAgBznC,KAAK9L,EAAE,GAAIA,EAAE,IAC7B0oE,EAAUviD,IAAO,GAGrBiiD,EAAQK,EAAch7D,MACtB86D,EAAOC,EAAS/6D,MAChBxN,EAAImmE,EAAM34D,MAIV3H,EAAIib,EADJmnD,EAAO/K,EADPkL,GAASF,EAAQC,GAAS,KAGtB,QAAuBtiE,EAAE,GAAIA,EAAE,GAAI9F,EAAE,GAAIA,EAAE,GAAIC,EAAE,GAAIA,EAAE,IACvDw4D,GAIAllB,EAAgBznC,KAAK7L,EAAE,GAAIA,EAAE,IAE7ByoE,EADAviD,EAAMiiD,EAAM7pE,aACK,IAKjBkqE,EAAc38D,KAAKs8D,EAAOC,EAAOA,EAAOF,GACxC/B,EAAMt6D,KAAK7L,EAAG6F,EAAGA,EAAG9F,GACpBwoE,EAAS18D,KAAKy8D,EAAML,EAAMA,EAAMI,IAGxC,OAAO/0B,CACX,CCpEA,IACQ3lC,EADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GA6BA46D,EAAuB,IAAIC,EAAA,QAAO,CAClCzjC,MAAO,oBAMP0jC,EAAY,CACZ,GACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,IACA,IACA,KACA,KACA,MAo8BJ,QA51B+B,SAAU76D,GAKrC,SAAS86D,EAAUl6D,GACf,IAAIzU,EAAQZ,KACR0O,EAAU2G,GAA4B,CAAC,EACvCm6D,GAAc,QAAO,CACrBC,sBAAsB,EACtBC,wBAAwB,EACxBC,aAAc,GACfjhE,GAwQH,cAvQO8gE,EAAYI,gBACZJ,EAAYK,mBACZL,EAAYM,kBACZN,EAAYO,kBACZP,EAAYQ,yBACZR,EAAYS,yBACZT,EAAYU,wBACZV,EAAYW,wBACZX,EAAYY,qBACZZ,EAAYa,qBACZb,EAAYc,WACnB1vE,EAAQ6T,EAAOzH,KAAKhN,KAAMwvE,IAAgBxvE,MAIpCm/B,YAAc,KAKpBv+B,EAAM2vE,QAAU92C,IAKhB74B,EAAM4vE,QAAU/2C,IAKhB74B,EAAM6vE,SAAU,IAKhB7vE,EAAM8vE,SAAU,IAKhB9vE,EAAM+vE,MAAQl3C,IAKd74B,EAAMgwE,MAAQn3C,IAKd74B,EAAMiwE,OAAQ,IAKdjwE,EAAMkwE,OAAQ,IAKdlwE,EAAMmwE,iBACqBv6D,IAAvB9H,EAAQohE,WAA2BphE,EAAQohE,WAAa,IAK5DlvE,EAAMowE,eAAiCx6D,IAArB9H,EAAQkhE,SAAyBlhE,EAAQkhE,SAAW,IAKtEhvE,EAAMqwE,WAAa,GAKnBrwE,EAAMswE,WAAa,GAKnBtwE,EAAMuwE,kBACsB36D,IAAxB9H,EAAQmhE,YACFnhE,EAAQmhE,YACRT,EAKVxuE,EAAMwwE,0BAAuB56D,EAK7B5V,EAAMywE,wBAAqB76D,EAK3B5V,EAAM0wE,wBAA0B,KAKhC1wE,EAAM2wE,YAAc,KAKpB3wE,EAAM4wE,aAAe,KAKrB5wE,EAAM6wE,SAAW,KAKjB7wE,EAAM8wE,UAAY,KAKlB9wE,EAAM+wE,iBAAmB,KAKzB/wE,EAAMgxE,iBAAmB,KACrBljE,EAAQqhE,aAKRnvE,EAAMixE,mBAC2Br7D,MAA7B9H,EAAQshE,kBACF,UAAyBpvE,EAAO,MAChC8N,EAAQshE,kBAKlBpvE,EAAMkxE,mBAC2Bt7D,MAA7B9H,EAAQuhE,kBACF,UAAyBrvE,EAAO,MAChC8N,EAAQuhE,kBAOlBrvE,EAAMmxE,kBAC0Bv7D,MAA5B9H,EAAQwhE,iBAAgC,EAAIxhE,EAAQwhE,iBAOxDtvE,EAAMoxE,kBAC0Bx7D,MAA5B9H,EAAQyhE,iBAAgC,EAAIzhE,EAAQyhE,iBAKxDvvE,EAAMqxE,mBAAqB,IAAIC,EAAA,QAAM,CACjC7sE,UAAgCmR,IAA1B9H,EAAQ0hE,cACR1hE,EAAQ0hE,cAAcp4D,QACtB,IAAIm6D,EAAA,QAAK,CACPC,KAAM,0BACNC,aAAc,SACdC,KAAM,IAAIC,EAAA,QAAK,CACX3mC,MAAO,kBAEX4mC,OAAQ,IAAInD,EAAA,QAAO,CACfzjC,MAAO,sBACPvgC,MAAO,QASvBzK,EAAM6xE,eAAiB,SAAUtxD,GAC7B,IAAI4D,EAAQ5D,EAAQlc,IAAI,mBAExB,OADAjF,KAAKiyE,mBAAmB9c,UAAUud,QAAQ3tD,GACnC/kB,KAAKiyE,kBAChB,EAAEnjE,KAAKlO,GAKPA,EAAM+xE,mBAAqB,IAAIT,EAAA,QAAM,CACjC7sE,UAAgCmR,IAA1B9H,EAAQ2hE,cACR3hE,EAAQ2hE,cAAcr4D,QACtB,IAAIm6D,EAAA,QAAK,CACPC,KAAM,0BACNQ,UAAW,QACXN,KAAM,IAAIC,EAAA,QAAK,CACX3mC,MAAO,kBAEX4mC,OAAQ,IAAInD,EAAA,QAAO,CACfzjC,MAAO,sBACPvgC,MAAO,QASvBzK,EAAMiyE,eAAiB,SAAU1xD,GAC7B,IAAI4D,EAAQ5D,EAAQlc,IAAI,mBAExB,OADAjF,KAAK2yE,mBAAmBxd,UAAUud,QAAQ3tD,GACnC/kB,KAAK2yE,kBAChB,EAAE7jE,KAAKlO,GACPA,EAAM+wE,iBAAmB,GACzB/wE,EAAMgxE,iBAAmB,GACzBhxE,EAAM2Q,iBAAiB2iB,EAAA,aAAsBtzB,EAAMkyE,YAAYhkE,KAAKlO,KAMxEA,EAAMmyE,gBACoBv8D,IAAtB9H,EAAQ4hE,UAA0B5hE,EAAQ4hE,UAAYhB,EAE1D1uE,EAAMoyE,UAAU,IAAI,UAAa,CAC7BC,OAAQryE,EAAMsyE,eAAepkE,KAAKlO,GAClCuyE,SAAUvyE,EAAMwyE,iBAAiBtkE,KAAKlO,GACtC2xB,SAAU,IAAIpd,EAAA,EACdk+D,UAAU,EACVC,iBAAiB,EACjB3/B,MAAOjlC,EAAQilC,SAOnB/yC,EAAM2yE,aAAe,GAKrB3yE,EAAM4yE,WAAa,IAAItB,EAAA,QAAM,CACzBM,OAAQ5xE,EAAMuwE,eAMlBvwE,EAAM6yE,cAAgB,KAItB7yE,EAAM8yE,gBAAkB,KACxB9yE,EAAM+yE,eAAe,MACd/yE,CACX,CAqkBA,OAz1BAyT,EAAUk7D,EAAW96D,GA4RrB86D,EAAUvqE,UAAUouE,iBAAmB,SAAUh3D,EAAQC,GAErD,IAAIu3D,EAAkBx3D,EAAOtP,QAc7B,OAbI9M,KAAKm/B,aAAen/B,KAAKuiB,YAAYE,aACrC,WAAYmxD,EAAiB5zE,KAAKm/B,aAElCn/B,KAAKyzE,iBACD,IAAAr5B,qBAAoBp6C,KAAKyzE,cAAeG,EAAiBv3D,GAEzDu3D,EAAkB5zE,KAAKyzE,cAAc3mE,QAIrC9M,KAAKuiB,YAAYsxD,mBAAmB7zE,KAAKyzE,gBAG1C,CAACG,EACZ,EAOArE,EAAUvqE,UAAUkuE,eAAiB,SAAU92D,EAAQC,EAAY9C,GAC/DvZ,KAAKyzE,cAAgBr3D,EACrB,IAAIkG,EAAStiB,KAAKuiB,YAEduxD,EAAc9zE,KAAKwd,aAAe,EAClC,KACA,IACAic,IACAA,KAEAs6C,GAAe,IAAAp4B,iBAAgBm4B,EAAa13D,GAChD,KAAIpc,KAAK0zE,kBAAmB,IAAAh9C,QAAO12B,KAAK0zE,gBAAiBK,KAGzD/zE,KAAK0zE,gBAAkBK,GAEnB,IAAAt/C,SAAQs/C,KAAZ,CAIA,IAAI/nE,GAAS,IAAA24B,WAAUovC,GACnB9U,EAAoB5iD,EAAaA,EAAc,IACvBrc,KAAKm/B,eAAgB,IAAAif,YAAqBp+C,KAAKm/B,YAAa5lB,KAEpFvZ,KAAKg0E,sBAAsBz6D,GAE/BvZ,KAAKi0E,iBAAiBF,EAAc/nE,EAAQqQ,EAAY4iD,GAExD,IAOI99C,EAPA+yD,EAAel0E,KAAKixE,WAAW7tE,OAASpD,KAAKkxE,WAAW9tE,OAQ5D,IAPIpD,KAAK2xE,mBACLuC,GAAgBl0E,KAAKixE,WAAW7tE,QAEhCpD,KAAK4xE,mBACLsC,GAAgBl0E,KAAKkxE,WAAW9tE,QAG7B8wE,EAAel0E,KAAKuzE,aAAanwE,QACpC+d,EAAU,IAAI/J,EAAA,QACdpX,KAAKuzE,aAAajhE,KAAK6O,GAE3B,IAAIgzD,EAAe7xD,EAAO8xD,wBAC1BD,EAAah0E,QACb,IAEIqK,EAAGwF,EAFHqkE,EAAY,EAGhB,IAAK7pE,EAAI,EAAGwF,EAAIhQ,KAAKixE,WAAW7tE,OAAQoH,EAAIwF,IAAKxF,GAC7C2W,EAAUnhB,KAAKuzE,aAAac,MACpBx8D,YAAY7X,KAAKixE,WAAWzmE,IACpC2W,EAAQ5I,SAASvY,KAAKwzE,YACtBW,EAAa7hE,KAAK6O,GAEtB,IAAK3W,EAAI,EAAGwF,EAAIhQ,KAAKkxE,WAAW9tE,OAAQoH,EAAIwF,IAAKxF,GAC7C2W,EAAUnhB,KAAKuzE,aAAac,MACpBx8D,YAAY7X,KAAKkxE,WAAW1mE,IACpC2W,EAAQ5I,SAASvY,KAAKwzE,YACtBW,EAAa7hE,KAAK6O,EArCtB,CAuCJ,EAWAouD,EAAUvqE,UAAUsvE,aAAe,SAAUC,EAAKC,EAAQC,EAAQxV,EAAkB7iD,EAAQlH,GACxF,IAAIoqC,EAAat/C,KAAK00E,aAAaH,EAAKC,EAAQC,EAAQxV,EAAkB/pD,GAC1E,IAAI,IAAAynB,YAAW2iB,EAAW9hC,YAAapB,GAAS,CAC5C,GAAIpc,KAAK2xE,iBAAkB,CACvB,IAAItsE,EAAOrF,KAAK6xE,mBAAmB0C,GAC/Br/D,KAASlV,KAAK2xE,iBACd3xE,KAAK2xE,iBAAiBz8D,GAAO7P,KAAOA,EAGpCrF,KAAK2xE,iBAAiBz8D,GAAS,CAC3B26C,KAAM,IAAIhM,EAAA,QAAM,IAChBx+C,KAAMA,EAGlB,CACArF,KAAKixE,WAAW/7D,KAAWoqC,CAC/B,CACA,OAAOpqC,CACX,EAWAq6D,EAAUvqE,UAAU2vE,aAAe,SAAUC,EAAKC,EAAQC,EAAQ7V,EAAkB7iD,EAAQlH,GACxF,IAAIoqC,EAAat/C,KAAK+0E,aAAaH,EAAKC,EAAQC,EAAQ7V,EAAkB/pD,GAC1E,IAAI,IAAAynB,YAAW2iB,EAAW9hC,YAAapB,GAAS,CAC5C,GAAIpc,KAAK4xE,iBAAkB,CACvB,IAAIvsE,EAAOrF,KAAK8xE,mBAAmB8C,GAC/B1/D,KAASlV,KAAK4xE,iBACd5xE,KAAK4xE,iBAAiB18D,GAAO7P,KAAOA,EAGpCrF,KAAK4xE,iBAAiB18D,GAAS,CAC3B26C,KAAM,IAAIhM,EAAA,QAAM,IAChBx+C,KAAMA,EAGlB,CACArF,KAAKkxE,WAAWh8D,KAAWoqC,CAC/B,CACA,OAAOpqC,CACX,EAKAq6D,EAAUvqE,UAAU8tE,YAAc,SAAU5sD,GACxC,IAAIvF,EAAWuF,EAAMjG,WAAWM,UAAUI,SACtCvE,EAAS8J,EAAMjG,WAAW7D,OAC1B44D,GAAiB,IAAArwC,WAAUvoB,GAC3B64D,EAAiB74D,EACrB,GAAIuE,EAAU,CACV,IAAItV,GAAQ,IAAAqW,UAAStF,GACjBnL,GAAS,IAAAkM,WAAUf,GACnB84D,EAAKjzE,KAAK2G,IAAI3G,KAAKiG,IAAIyY,IACvBw0D,EAAKlzE,KAAK2G,IAAI3G,KAAKwF,IAAIkZ,IACvBy0D,GAAkBD,EAAKlkE,EAASikE,EAAK7pE,IAAU8pE,EAAKA,EAAKD,EAAKA,GAC9DG,GAAmBF,EAAK9pE,EAAQ6pE,EAAKjkE,IAAWkkE,EAAKA,EAAKD,EAAKA,GACnED,EAAiB,CACbD,EAAe,GAAKI,EAAiB,EACrCJ,EAAe,GAAKK,EAAkB,EACtCL,EAAe,GAAKI,EAAiB,EACrCJ,EAAe,GAAKK,EAAkB,EAE9C,CACA,IAAIC,EAAa,EACbC,EAAW,EACXC,EAAgBx1E,KAAKgyE,kBAAoB,GACzCxwD,EAAmBxhB,KAAKm/B,YAAY3hB,YACpCiE,GAAa,IAAAC,UAASF,GACtBxhB,KAAKuiB,YAAYE,YACjBziB,KAAKm/B,YAAY5d,cAChB,IAAA83B,gBAAe73B,EAAkBpF,KAClCk5D,EAAarzE,KAAKC,OAAOka,EAAO,GAAKoF,EAAiB,IAAMC,GAC5D8zD,EAAWtzE,KAAKk/B,MAAM/kB,EAAO,GAAKoF,EAAiB,IAAMC,GAEzD+zD,EAAgBA,IADDvzE,KAAK2G,IAAI+X,GAAY1e,KAAKmlB,GAAK,GAIlD,IADA,IAAIquD,GAAgB,QAAiBvvD,GAC5BwvD,EAAQJ,EAAYI,GAASH,IAAYG,EAAO,CACrD,IAAIrB,EAAYr0E,KAAKixE,WAAW7tE,OAASpD,KAAKkxE,WAAW9tE,OACrD+d,OAAU,EAAQjM,OAAQ,EAAQlF,OAAI,EAAQ2lE,OAAY,EAC9D,GAAI31E,KAAK2xE,iBACL,IAAKz8D,EAAQ,EAAGlF,EAAIhQ,KAAK2xE,iBAAiBvuE,OAAQ8R,EAAQlF,IAAKkF,EAAO,CAClE,IAAIoqC,EAAat/C,KAAKixE,WAAW/7D,GAC5ByL,GAAsB,IAAV+0D,IAIT19D,EAAQsnC,EAAWtnC,SACjBgoD,UAAU0V,EAAQj0D,EAAY,GACpCzJ,EAAM0Q,QAAQ/H,EAAUq0D,IACxBW,EAAY31E,KAAK41E,kBAAkB59D,EAAOi9D,EAAgB//D,IAChDwT,OAAO/H,EAAUq0D,IAP3BW,EAAY31E,KAAK41E,kBAAkBt2B,EAAYljC,EAAQlH,IAS3DiM,EAAUnhB,KAAKuzE,aAAac,MACpBx8D,YAAY89D,GACpBx0D,EAAQ1K,IAAI,kBAAmBzW,KAAK2xE,iBAAiBz8D,GAAO7P,MAC5DowE,EAAcI,YAAY10D,EAASnhB,KAAKyyE,eAAetxD,GAC3D,CAEJ,GAAInhB,KAAK4xE,mBACA8D,IAAUJ,GAAcE,GACxBE,IAAUH,IAAaC,GACxB,IAAKtgE,EAAQ,EAAGlF,EAAIhQ,KAAKkxE,WAAW9tE,OAAQ8R,EAAQlF,IAAKkF,EAAO,CAC5D,IAKQ8C,EALJsnC,EAAat/C,KAAKkxE,WAAWh8D,GAC5ByL,GAAsB,IAAV+0D,IAIT19D,EAAQsnC,EAAWtnC,SACjBgoD,UAAU0V,EAAQj0D,EAAY,GACpCzJ,EAAM0Q,QAAQ/H,EAAUq0D,IACxBW,EAAY31E,KAAK81E,kBAAkB99D,EAAOi9D,EAAgB//D,IAChDwT,OAAO/H,EAAUq0D,IAP3BW,EAAY31E,KAAK81E,kBAAkBx2B,EAAYljC,EAAQlH,IAS3DiM,EAAUnhB,KAAKuzE,aAAac,MACpBx8D,YAAY89D,GACpBx0D,EAAQ1K,IAAI,kBAAmBzW,KAAK4xE,iBAAiB18D,GAAO7P,MAC5DowE,EAAcI,YAAY10D,EAASnhB,KAAK6yE,eAAe1xD,GAC3D,CAGZ,CACJ,EAQAouD,EAAUvqE,UAAUivE,iBAAmB,SAAU73D,EAAQpQ,EAAQqQ,EAAY4iD,GACzE,IAAI8W,EAAW/1E,KAAKg2E,aAAa35D,GACjC,IAAiB,GAAb05D,EASA,OARA/1E,KAAKixE,WAAW7tE,OAAS,EACzBpD,KAAKkxE,WAAW9tE,OAAS,EACrBpD,KAAK2xE,mBACL3xE,KAAK2xE,iBAAiBvuE,OAAS,QAE/BpD,KAAK4xE,mBACL5xE,KAAK4xE,iBAAiBxuE,OAAS,IAIvC,IAAIuwC,GAAQ,EACRnyB,EAAmBxhB,KAAKm/B,YAAY3hB,YACpCiE,GAAa,IAAAC,UAASF,GACtBxhB,KAAKuiB,YAAYE,YACjBziB,KAAKm/B,YAAY5d,cAChB,IAAA83B,gBAAe73B,EAAkBpF,MAC9B,IAAAsF,UAAStF,IAAWqF,GACpBrF,EAAO,GAAKoF,EAAiB,GAC7BpF,EAAO,GAAKoF,EAAiB,IAG7BmyB,GAAQ,GAIhB,IAAIsiC,EAAe,EACf,QAAMjqE,EAAO,GAAIhM,KAAK6wE,MAAO7wE,KAAK2wE,QAClC,QAAM3kE,EAAO,GAAIhM,KAAK8wE,MAAO9wE,KAAK4wE,QAKlCsF,EAAel2E,KAAKqxE,mBAAmB4E,GACvCxuC,MAAMyuC,EAAa,MACnBA,EAAa,GACTj0E,KAAK2G,IAAI5I,KAAKuwE,UAAYtuE,KAAK2G,IAAI5I,KAAKywE,SAClCzwE,KAAKuwE,QACLvwE,KAAKywE,SAEnB,IAGI0F,EAAKC,EAAKxB,EAAKL,EAHf8B,GAAY,QAAMH,EAAa,GAAIl2E,KAAK0wE,QAAS1wE,KAAKwwE,SACtD8F,GAAY,QAAMJ,EAAa,GAAIl2E,KAAKywE,QAASzwE,KAAKuwE,SACtDX,EAAW5vE,KAAKgxE,UAGhBuF,EAAen6D,EACdu3B,IACD4iC,EAAe,EACX,QAAMn6D,EAAO,GAAIpc,KAAK6wE,MAAO7wE,KAAK2wE,QAClC,QAAMv0D,EAAO,GAAIpc,KAAK8wE,MAAO9wE,KAAK4wE,QAClC,QAAMx0D,EAAO,GAAIpc,KAAK6wE,MAAO7wE,KAAK2wE,QAClC,QAAMv0D,EAAO,GAAIpc,KAAK8wE,MAAO9wE,KAAK4wE,SAI1C,IAAI4F,GAAc,IAAAz7D,gBAAew7D,EAAcv2E,KAAKqxE,wBAAoB76D,EAAW,GAC/Ei+D,EAAS+B,EAAY,GACrB1B,EAAS0B,EAAY,GACrBhC,EAASgC,EAAY,GACrB3B,EAAS2B,EAAY,GAgCzB,GA/BK7iC,KAIG,IAAAyF,oBAAmBm9B,EAAcv2E,KAAKuxE,eACtCsD,EAAS70E,KAAK0wE,QACd8D,EAASx0E,KAAKywE,UAEd,IAAAr3B,oBAAmBm9B,EAAcv2E,KAAKwxE,gBACtCsD,EAAS90E,KAAKwwE,QACdgE,EAASx0E,KAAKywE,UAEd,IAAAr3B,oBAAmBm9B,EAAcv2E,KAAKyxE,YACtCoD,EAAS70E,KAAK0wE,QACd+D,EAASz0E,KAAKuwE,UAEd,IAAAn3B,oBAAmBm9B,EAAcv2E,KAAK0xE,aACtCoD,EAAS90E,KAAKwwE,QACdiE,EAASz0E,KAAKuwE,SAGlBkE,GAAS,QAAMA,EAAQ6B,EAAWt2E,KAAKuwE,SACvCuE,GAAS,QAAMA,EAAQuB,EAAWr2E,KAAKwwE,SACvCgE,GAAS,QAAMA,EAAQx0E,KAAKywE,QAAS6F,GACrCzB,GAAS,QAAMA,EAAQ70E,KAAK0wE,QAAS2F,IAGzCA,EAAYp0E,KAAKC,MAAMm0E,EAAYN,GAAYA,EAC/CxB,GAAM,QAAM8B,EAAWr2E,KAAK0wE,QAAS1wE,KAAKwwE,SAC1C4F,EAAMp2E,KAAKs0E,aAAaC,EAAKC,EAAQC,EAAQxV,EAAkB7iD,EAAQ,GACvE+5D,EAAM,EACFxiC,EACA,MAAQ4gC,GAAOwB,IAAalB,GAAUsB,IAAQvG,GAC1CwG,EAAMp2E,KAAKs0E,aAAaC,EAAKC,EAAQC,EAAQxV,EAAkB7iD,EAAQg6D,QAI3E,KAAO7B,GAAOv0E,KAAK0wE,SAAWyF,IAAQvG,GAClC2E,EAAMtyE,KAAKm7B,IAAIm3C,EAAMwB,EAAU/1E,KAAK0wE,SACpC0F,EAAMp2E,KAAKs0E,aAAaC,EAAKC,EAAQC,EAAQxV,EAAkB7iD,EAAQg6D,GAK/E,GAFA7B,GAAM,QAAM8B,EAAWr2E,KAAK0wE,QAAS1wE,KAAKwwE,SAC1C2F,EAAM,EACFxiC,EACA,MAAQ4gC,GAAOwB,IAAajB,GAAUqB,IAAQvG,GAC1CwG,EAAMp2E,KAAKs0E,aAAaC,EAAKC,EAAQC,EAAQxV,EAAkB7iD,EAAQg6D,QAI3E,KAAO7B,GAAOv0E,KAAKwwE,SAAW2F,IAAQvG,GAClC2E,EAAMtyE,KAAK27B,IAAI22C,EAAMwB,EAAU/1E,KAAKwwE,SACpC4F,EAAMp2E,KAAKs0E,aAAaC,EAAKC,EAAQC,EAAQxV,EAAkB7iD,EAAQg6D,GAY/E,IATAp2E,KAAKixE,WAAW7tE,OAASgzE,EACrBp2E,KAAK2xE,mBACL3xE,KAAK2xE,iBAAiBvuE,OAASgzE,GAGnCE,EAAYr0E,KAAKC,MAAMo0E,EAAYP,GAAYA,EAC/CnB,GAAM,QAAM0B,EAAWt2E,KAAKywE,QAASzwE,KAAKuwE,SAC1C6F,EAAMp2E,KAAK20E,aAAaC,EAAKC,EAAQC,EAAQ7V,EAAkB7iD,EAAQ,GACvE+5D,EAAM,EACCvB,GAAO50E,KAAKywE,SAAW0F,IAAQvG,GAClCgF,EAAM3yE,KAAKm7B,IAAIw3C,EAAMmB,EAAU/1E,KAAKywE,SACpC2F,EAAMp2E,KAAK20E,aAAaC,EAAKC,EAAQC,EAAQ7V,EAAkB7iD,EAAQg6D,GAI3E,IAFAxB,GAAM,QAAM0B,EAAWt2E,KAAKywE,QAASzwE,KAAKuwE,SAC1C4F,EAAM,EACCvB,GAAO50E,KAAKuwE,SAAW4F,IAAQvG,GAClCgF,EAAM3yE,KAAK27B,IAAIg3C,EAAMmB,EAAU/1E,KAAKuwE,SACpC6F,EAAMp2E,KAAK20E,aAAaC,EAAKC,EAAQC,EAAQ7V,EAAkB7iD,EAAQg6D,GAE3Ep2E,KAAKkxE,WAAW9tE,OAASgzE,EACrBp2E,KAAK4xE,mBACL5xE,KAAK4xE,iBAAiBxuE,OAASgzE,EAEvC,EAMA7G,EAAUvqE,UAAUgxE,aAAe,SAAU35D,GASzC,IARA,IAAIg6D,EAAYr2E,KAAKsxE,wBAAwB,GACzCgF,EAAYt2E,KAAKsxE,wBAAwB,GACzCyE,GAAY,EACZ9jE,EAAShQ,KAAKI,IAAIrC,KAAK+wE,YAAc10D,EAAY,GAEjDo6D,EAAK,GAELC,EAAK,GACAlsE,EAAI,EAAGiL,EAAKzV,KAAK+yE,WAAW3vE,OAAQoH,EAAIiL,IAAMjL,EAAG,CACtD,IAAIid,GAAQ,QAAMznB,KAAK+yE,WAAWvoE,GAAK,EAAG,EAAG,IAEzCmsE,GAAa,QAAML,GAAY,GAAK7uD,EAAO,GAAKA,GAQpD,GAPAgvD,EAAG,GAAKJ,EAAY5uD,EACpBgvD,EAAG,GAAKE,EAAalvD,EACrBivD,EAAG,GAAKL,EAAY5uD,EACpBivD,EAAG,GAAKC,EAAalvD,EACrBznB,KAAKoxE,qBAAqBqF,EAAIA,GAC9Bz2E,KAAKoxE,qBAAqBsF,EAAIA,GACnBz0E,KAAKI,IAAIq0E,EAAG,GAAKD,EAAG,GAAI,GAAKx0E,KAAKI,IAAIq0E,EAAG,GAAKD,EAAG,GAAI,IACpDxkE,EACR,MAEJ8jE,EAAW/1E,KAAK+yE,WAAWvoE,EAC/B,CACA,OAAOurE,CACX,EAUAxG,EAAUvqE,UAAU0vE,aAAe,SAAUH,EAAKC,EAAQC,EAAQxV,EAAkB/pD,GAChF,IAAI6kC,ED3uBL,SAAkBw6B,EAAKjxE,EAAMszE,EAAMr9D,EAAY0lD,GAClD,IAAI4X,GAAqB,IAAA5xE,KAAc,aACvC,OAAOimD,GAKP,SAAU4rB,GACN,MAAO,CAACvC,EAAKjxE,GAAQszE,EAAOtzE,GAAQwzE,EACxC,IAAG,IAAAtW,cAAaqW,EAAoBt9D,GAAa0lD,EACrD,CCiuB8B8X,CAASxC,EAAKC,EAAQC,EAAQz0E,KAAKm/B,YAAa8/B,GAClE3f,EAAat/C,KAAKixE,WAAW/7D,GASjC,OARKoqC,GAKDA,EAAWsjB,mBAAmB/a,EAAA,WAAmB9N,GACjDuF,EAAW3mC,YALX2mC,EAAa,IAAIyE,EAAA,QAAWhK,EAAiB8N,EAAA,YAC7C7nD,KAAKixE,WAAW/7D,GAASoqC,GAMtBA,CACX,EAQAiwB,EAAUvqE,UAAU4wE,kBAAoB,SAAUt2B,EAAYljC,EAAQlH,GAClE,IAAI6kC,EAAkBuF,EAAWxY,qBAC7B32B,EAAS,EACTC,EAAM2pC,EAAgB32C,OAAS,EAC/B22C,EAAgB5pC,GAAU4pC,EAAgB3pC,KAC1CD,EAASC,EACTA,EAAM,GAEV,IAAI4mE,EAAgB/0E,KAAKm7B,IAAIhhB,EAAO,GAAI29B,EAAgB5pC,IACpD8mE,EAAah1E,KAAK27B,IAAIxhB,EAAO,GAAI29B,EAAgB3pC,IACjDwkE,GAAM,QAAMx4D,EAAO,GAAKna,KAAK2G,IAAIwT,EAAO,GAAKA,EAAO,IAAMpc,KAAK+xE,kBAAmBiF,EAAeC,GAKjGhrE,EAAa,CAJC8tC,EAAgB5pC,EAAS,IACrC4pC,EAAgB3pC,EAAM,GAAK2pC,EAAgB5pC,EAAS,KACjDykE,EAAM76B,EAAgB5pC,KACtB4pC,EAAgB3pC,GAAO2pC,EAAgB5pC,IACjBykE,GAC3B30B,EAAQjgD,KAAK2xE,iBAAiBz8D,GAAO26C,KAEzC,OADA5P,EAAM0iB,eAAe12D,GACdg0C,CACX,EAMAsvB,EAAUvqE,UAAUkyE,aAAe,WAC/B,OAAOl3E,KAAKixE,UAChB,EAUA1B,EAAUvqE,UAAU+vE,aAAe,SAAUH,EAAKC,EAAQC,EAAQ7V,EAAkB/pD,GAChF,IAAI6kC,EDhxBL,SAAkB66B,EAAKnxE,EAAM0zE,EAAM59D,EAAY0lD,GAClD,IAAI4X,GAAqB,IAAA5xE,KAAc,aACvC,OAAOimD,GAKP,SAAU4rB,GACN,MAAO,CAACrzE,GAAQ0zE,EAAO1zE,GAAQqzE,EAAMlC,EACzC,IAAG,IAAApU,cAAaqW,EAAoBt9D,GAAa0lD,EACrD,CCswB8BmY,CAASxC,EAAKC,EAAQC,EAAQ90E,KAAKm/B,YAAa8/B,GAClE3f,EAAat/C,KAAKkxE,WAAWh8D,GAQjC,OAPKoqC,GAIDA,EAAWsjB,mBAAmB/a,EAAA,WAAmB9N,GACjDuF,EAAW3mC,WAJX2mC,EAAa,IAAIyE,EAAA,QAAWhK,EAAiB8N,EAAA,YAM1CvI,CACX,EAQAiwB,EAAUvqE,UAAU8wE,kBAAoB,SAAUx2B,EAAYljC,EAAQlH,GAClE,IAAI6kC,EAAkBuF,EAAWxY,qBAC7Br4B,EAAO,EACPyB,EAAQ6pC,EAAgB32C,OAAS,EACjC22C,EAAgBtrC,GAAQsrC,EAAgB7pC,KACxCzB,EAAOyB,EACPA,EAAQ,GAEZ,IAAImnE,EAAcp1E,KAAKm7B,IAAIhhB,EAAO,GAAI29B,EAAgBtrC,IAClD6oE,EAAer1E,KAAK27B,IAAIxhB,EAAO,GAAI29B,EAAgB7pC,IACnDqkE,GAAM,QAAMn4D,EAAO,GAAKna,KAAK2G,IAAIwT,EAAO,GAAKA,EAAO,IAAMpc,KAAKgyE,kBAAmBqF,EAAaC,GAK/FrrE,EAAa,CAACsoE,EAJAx6B,EAAgBtrC,EAAO,IACnCsrC,EAAgB7pC,EAAQ,GAAK6pC,EAAgBtrC,EAAO,KACjD8lE,EAAMx6B,EAAgBtrC,KACtBsrC,EAAgB7pC,GAAS6pC,EAAgBtrC,KAE9CwxC,EAAQjgD,KAAK4xE,iBAAiB18D,GAAO26C,KAEzC,OADA5P,EAAM0iB,eAAe12D,GACdg0C,CACX,EAMAsvB,EAAUvqE,UAAUuyE,aAAe,WAC/B,OAAOv3E,KAAKkxE,UAChB,EAKA3B,EAAUvqE,UAAUgvE,sBAAwB,SAAUz6D,GAClD,IAAIs9D,GAAqB,IAAA5xE,KAAc,aACnCuyE,EAAcj+D,EAAWgnD,iBAC7BvgE,KAAKuwE,QAAUiH,EAAY,GAC3Bx3E,KAAKwwE,QAAUgH,EAAY,GAC3Bx3E,KAAKywE,QAAU+G,EAAY,GAC3Bx3E,KAAK0wE,QAAU8G,EAAY,GAG3B,IAAIC,GAAoB,IAAAjX,cAAajnD,EAAYs9D,GACjD,GAAI72E,KAAK0wE,QAAU1wE,KAAKwwE,QACpBxwE,KAAKqxE,mBAAqBoG,MAEzB,CACD,IAAIC,EAAU13E,KAAK0wE,QAAU1wE,KAAKwwE,QAAU,EAC5CxwE,KAAKwwE,SAAW,IAChBxwE,KAAKqxE,mBAAqB,SAAU7uD,EAAam1D,EAAYxN,GAGzD,IAFA,IAAIG,EAAYH,GAAiB,EAC7ByN,EAAoBH,EAAkBj1D,EAAam1D,EAAYrN,GAC1D9/D,EAAI,EAAGwF,EAAI4nE,EAAkBx0E,OAAQoH,EAAIwF,EAAGxF,GAAK8/D,EAClDsN,EAAkBptE,GAAKktE,IACvBE,EAAkBptE,IAAM,KAGhC,OAAOotE,CACX,CACJ,CAGA53E,KAAKoxE,sBAAuB,IAAA5Q,cAAaqW,EAAoBt9D,GAC7D,IAAIs+D,GAAe,IAAA98D,gBAAe,CAAC/a,KAAK0wE,QAAS1wE,KAAKywE,QAASzwE,KAAKwwE,QAASxwE,KAAKuwE,SAAUvwE,KAAKoxE,0BAAsB56D,EAAW,GAClIxW,KAAK6wE,MAAQgH,EAAa,GAC1B73E,KAAK2wE,MAAQkH,EAAa,GAC1B73E,KAAK8wE,MAAQ+G,EAAa,GAC1B73E,KAAK4wE,MAAQiH,EAAa,GAG1B73E,KAAKuxE,YAAcvxE,KAAKoxE,qBAAqB,CAACpxE,KAAK0wE,QAAS1wE,KAAKywE,UACjEzwE,KAAKwxE,aAAexxE,KAAKoxE,qBAAqB,CAACpxE,KAAKwwE,QAASxwE,KAAKywE,UAClEzwE,KAAKyxE,SAAWzxE,KAAKoxE,qBAAqB,CAACpxE,KAAK0wE,QAAS1wE,KAAKuwE,UAC9DvwE,KAAK0xE,UAAY1xE,KAAKoxE,qBAAqB,CAACpxE,KAAKwwE,QAASxwE,KAAKuwE,UAI/DvwE,KAAKsxE,wBAA0BtxE,KAAKqxE,oBAAmB,IAAA1sC,WAAUprB,EAAWiE,cACxEiqB,MAAMznC,KAAKsxE,wBAAwB,MACnCtxE,KAAKsxE,wBAAwB,GACzBrvE,KAAK2G,IAAI5I,KAAKuwE,UAAYtuE,KAAK2G,IAAI5I,KAAKywE,SAClCzwE,KAAKuwE,QACLvwE,KAAKywE,SAEnBzwE,KAAKm/B,YAAc5lB,CACvB,EACOg2D,CACX,CA31B8B,CA21B5BuI,EAAA,2CClgCE,EAAwC,WACxC,IAAI1jE,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GAkG5C,QAxEiC,SAAUC,GAUvC,SAASsjE,EAAY37D,EAAQC,EAAYC,EAAYoC,EAAQs5D,GACzD,IAAIp3E,EAAQZ,KACR6c,OAAuBrG,IAAfwhE,EAA2BC,EAAA,OAAkBA,EAAA,SAkBzD,OAjBAr3E,EAAQ6T,EAAOzH,KAAKhN,KAAMoc,EAAQC,EAAYC,EAAYO,IAAU7c,MAM9Dk4E,aAAyB1hE,IAAfwhE,EAA2BA,EAAa,KAKxDp3E,EAAMu3E,QAAUz5D,EAKhB9d,EAAMw3E,OAAS,KACRx3E,CACX,CAuCA,OArEA,EAAUm3E,EAAatjE,GAmCvBsjE,EAAY/yE,UAAUqzE,SAAW,WAC7B,OAAOr4E,KAAKo4E,MAChB,EAMAL,EAAY/yE,UAAUszE,YAAc,SAAUC,GACtCA,GACAv4E,KAAKo4E,OAASG,EACdv4E,KAAK6c,MAAQo7D,EAAA,SAGbj4E,KAAK6c,MAAQo7D,EAAA,SAEjBj4E,KAAK2Y,SACT,EAIAo/D,EAAY/yE,UAAUoY,KAAO,WACrBpd,KAAK6c,OAASo7D,EAAA,SACdj4E,KAAK6c,MAAQo7D,EAAA,UACbj4E,KAAK2Y,UACL3Y,KAAKk4E,QAAQl4E,KAAKs4E,YAAYxpE,KAAK9O,OAE3C,EAIA+3E,EAAY/yE,UAAU+X,SAAW,WAC7B,OAAO/c,KAAKm4E,OAChB,EACOJ,CACX,CAvEgC,CAuE9Bz6D,EAAA,uICjGE,EAAwC,WACxC,IAAIlJ,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GAsFxCM,EACS,UADTA,EAEK,MAFLA,EAGQ,SAHRA,EAIU,WAJVA,EAKa,cA0ajB,SApZ6B,SAAUL,GAKnC,SAAS+jE,EAAQ9pE,GACb,IAAI9N,EAAQ6T,EAAOzH,KAAKhN,OAASA,KAKjCY,EAAM8N,QAAUA,EAKhB9N,EAAMoS,GAAKtE,EAAQsE,GAKnBpS,EAAM63E,iBACsBjiE,IAAxB9H,EAAQ+pE,aAA4B/pE,EAAQ+pE,YAKhD73E,EAAM83E,eAAkCliE,IAAtB9H,EAAQgqE,WAA0BhqE,EAAQgqE,UAK5D93E,EAAMyS,QAAUxG,SAASW,cAAc,OACvC5M,EAAMyS,QAAQ3G,eACY8J,IAAtB9H,EAAQhC,UACFgC,EAAQhC,UACR,wBAA0B,KACpC9L,EAAMyS,QAAQpD,MAAMsK,SAAW,WAC/B3Z,EAAMyS,QAAQpD,MAAMkgB,cAAgB,OACpC,IAAIwoD,EAAUjqE,EAAQiqE,QAyCtB,OAxCIA,GAAW,iBAAoBA,IAC/BA,EAAU,CACNl6C,UAAW/vB,EAAQkqE,iBACnBC,OAAQnqE,EAAQoqE,gBAOxBl4E,EAAM+3E,QAA4C,IAAa,EAM/D/3E,EAAMm4E,SAAW,CACb7/D,WAAY,GACZ+M,SAAS,GAMbrlB,EAAMo4E,yBAA2B,KACjCp4E,EAAM2Q,kBAAiB,QAAmBuD,GAAmBlU,EAAMq4E,sBACnEr4E,EAAM2Q,kBAAiB,QAAmBuD,GAAelU,EAAMs4E,kBAC/Dt4E,EAAM2Q,kBAAiB,QAAmBuD,GAAkBlU,EAAMu4E,qBAClEv4E,EAAM2Q,kBAAiB,QAAmBuD,GAAoBlU,EAAMw4E,uBACpEx4E,EAAM2Q,kBAAiB,QAAmBuD,GAAuBlU,EAAMy4E,+BAC/C7iE,IAApB9H,EAAQ2E,SACRzS,EAAM04E,WAAW5qE,EAAQ2E,SAE7BzS,EAAM24E,eAA6B/iE,IAAnB9H,EAAQ0yB,OAAuB1yB,EAAQ0yB,OAAS,CAAC,EAAG,IACpExgC,EAAM44E,oBAAuChjE,IAAxB9H,EAAQ+qE,YACmC/qE,EAAmB,YAC7EgrE,EAAA,uBACmBljE,IAArB9H,EAAQ6L,UACR3Z,EAAM+4E,YAAYjrE,EAAQ6L,UAEvB3Z,CACX,CAiUA,OAjZA,EAAU43E,EAAS/jE,GAuFnB+jE,EAAQxzE,UAAU40E,WAAa,WAC3B,OAA6C55E,KAAKiF,IAAI6P,EAC1D,EAMA0jE,EAAQxzE,UAAUwT,MAAQ,WACtB,OAAOxY,KAAKgT,EAChB,EAQAwlE,EAAQxzE,UAAU6d,OAAS,WACvB,OAAqE7iB,KAAKiF,IAAI6P,EAClF,EAOA0jE,EAAQxzE,UAAU60E,UAAY,WAC1B,OAAqC75E,KAAKiF,IAAI6P,EAClD,EAQA0jE,EAAQxzE,UAAUqW,YAAc,WAC5B,OAAsErb,KAAKiF,IAAI6P,EACnF,EAQA0jE,EAAQxzE,UAAU80E,eAAiB,WAC/B,OAAiE95E,KAAKiF,IAAI6P,EAC9E,EAIA0jE,EAAQxzE,UAAUi0E,qBAAuB,YACrC,QAAej5E,KAAKqT,SACpB,IAAIA,EAAUrT,KAAK45E,aACfvmE,GACArT,KAAKqT,QAAQ1F,YAAY0F,EAEjC,EAIAmlE,EAAQxzE,UAAUk0E,iBAAmB,WAC7Bl5E,KAAKg5E,4BACL,QAAWh5E,KAAKqT,UAChB,QAAcrT,KAAKg5E,0BACnBh5E,KAAKg5E,yBAA2B,MAEpC,IAAI9qE,EAAMlO,KAAK6iB,SACf,GAAI3U,EAAK,CACLlO,KAAKg5E,0BAA2B,QAAO9qE,EAAKyoB,EAAA,aAAyB32B,KAAK+iB,OAAQ/iB,MAClFA,KAAK+5E,sBACL,IAAIpvE,EAAY3K,KAAK04E,UACfxqE,EAAIulB,+BACJvlB,EAAIslB,sBACNxzB,KAAKy4E,YACL9tE,EAAU6Y,aAAaxjB,KAAKqT,QAAS1I,EAAUmI,WAAW,IAAM,MAGhEnI,EAAUgD,YAAY3N,KAAKqT,SAE/BrT,KAAKg6E,gBACT,CACJ,EAIAxB,EAAQxzE,UAAU+d,OAAS,WACvB/iB,KAAK+5E,qBACT,EAIAvB,EAAQxzE,UAAUm0E,oBAAsB,WACpCn5E,KAAK+5E,qBACT,EAIAvB,EAAQxzE,UAAUo0E,sBAAwB,WACtCp5E,KAAK+5E,sBACL/5E,KAAKg6E,gBACT,EAIAxB,EAAQxzE,UAAUq0E,yBAA2B,WACzCr5E,KAAK+5E,qBACT,EAOAvB,EAAQxzE,UAAUs0E,WAAa,SAAUjmE,GACrCrT,KAAKyW,IAAI3B,EAAkBzB,EAC/B,EAQAmlE,EAAQxzE,UAAUmP,OAAS,SAAUjG,GACjClO,KAAKyW,IAAI3B,EAAc5G,EAC3B,EAOAsqE,EAAQxzE,UAAUu0E,UAAY,SAAUn4C,GACpCphC,KAAKyW,IAAI3B,EAAiBssB,EAC9B,EASAo3C,EAAQxzE,UAAU20E,YAAc,SAAUp/D,GACtCva,KAAKyW,IAAI3B,EAAmByF,EAChC,EAMAi+D,EAAQxzE,UAAUg1E,eAAiB,WAC3Bh6E,KAAK24E,SACL34E,KAAKi6E,YAAYj6E,KAAK24E,QAE9B,EAOAH,EAAQxzE,UAAUi1E,YAAc,SAAUC,GACtC,IAAIhsE,EAAMlO,KAAK6iB,SACf,GAAK3U,GAAQA,EAAI4kB,oBAAuB9yB,KAAKiF,IAAI6P,GAAjD,CAGA,IAAIqlE,EAAUn6E,KAAKo6E,QAAQlsE,EAAI4kB,mBAAoB5kB,EAAI2B,WACnDwD,EAAUrT,KAAK45E,aACfS,EAAcr6E,KAAKo6E,QAAQ/mE,EAAS,EACpC,QAAWA,IACX,QAAYA,KAEZinE,EAAqBJ,GAA0B,CAAC,EAChDK,OAAyC/jE,IAA9B8jE,EAAmBzB,OAAuB,GAAKyB,EAAmBzB,OACjF,KAAK,IAAAx/B,gBAAe8gC,EAASE,GAAc,CAEvC,IAAIG,EAAaH,EAAY,GAAKF,EAAQ,GACtCM,EAAcN,EAAQ,GAAKE,EAAY,GACvCK,EAAYL,EAAY,GAAKF,EAAQ,GACrCQ,EAAeR,EAAQ,GAAKE,EAAY,GACxC5yD,EAAQ,CAAC,EAAG,GAiBhB,GAhBI+yD,EAAa,EAEb/yD,EAAM,GAAK+yD,EAAaD,EAEnBE,EAAc,IAEnBhzD,EAAM,GAAKxlB,KAAK2G,IAAI6xE,GAAeF,GAEnCG,EAAY,EAEZjzD,EAAM,GAAKizD,EAAYH,EAElBI,EAAe,IAEpBlzD,EAAM,GAAKxlB,KAAK2G,IAAI+xE,GAAgBJ,GAEvB,IAAb9yD,EAAM,IAAyB,IAAbA,EAAM,GAAU,CAClC,IAAIzb,EAA8DkC,EAC7DvC,UACAk3B,oBACD+3C,EAAW1sE,EAAIqlB,+BAA+BvnB,GAC9C6uE,EAAc,CAACD,EAAS,GAAKnzD,EAAM,GAAImzD,EAAS,GAAKnzD,EAAM,IAC3DqzD,EAAaR,EAAmB77C,WAAa,CAAC,EAClDvwB,EAAIvC,UAAUq3B,gBAAgB,CAC1Bh3B,OAAQkC,EAAImkB,+BAA+BwoD,GAC3C9uE,SAAU+uE,EAAW/uE,SACrBsb,OAAQyzD,EAAWzzD,QAE3B,CACJ,CA7CA,CA8CJ,EAQAmxD,EAAQxzE,UAAUo1E,QAAU,SAAU/mE,EAASqN,GAC3C,IAAIq6D,EAAM1nE,EAAQzC,wBACdoqE,EAAUD,EAAItsE,KAAO7B,OAAOiE,YAC5BoqE,EAAUF,EAAI3qE,IAAMxD,OAAOmE,YAC/B,MAAO,CAACiqE,EAASC,EAASD,EAAUt6D,EAAK,GAAIu6D,EAAUv6D,EAAK,GAChE,EAQA83D,EAAQxzE,UAAUw0E,eAAiB,SAAUC,GACzCz5E,KAAKyW,IAAI3B,EAAsB2kE,EACnC,EAMAjB,EAAQxzE,UAAUk2E,WAAa,SAAUj1D,GACjCjmB,KAAK+4E,SAAS9yD,UAAYA,IAC1BjmB,KAAKqT,QAAQpD,MAAMgU,QAAUgC,EAAU,GAAK,OAC5CjmB,KAAK+4E,SAAS9yD,QAAUA,EAEhC,EAKAuyD,EAAQxzE,UAAU+0E,oBAAsB,WACpC,IAAI7rE,EAAMlO,KAAK6iB,SACXtI,EAAWva,KAAKqb,cACpB,GAAKnN,GAAQA,EAAIynB,cAAiBpb,EAAlC,CAIA,IAAIlJ,EAAQnD,EAAIklB,uBAAuB7Y,GACnC4gE,EAAUjtE,EAAI2B,UAClB7P,KAAKo7E,uBAAuB/pE,EAAO8pE,EAHnC,MAFIn7E,KAAKk7E,YAAW,EAMxB,EAMA1C,EAAQxzE,UAAUo2E,uBAAyB,SAAU/pE,EAAO8pE,GACxD,IAAIlrE,EAAQjQ,KAAKqT,QAAQpD,MACrBmxB,EAASphC,KAAK65E,YACdJ,EAAcz5E,KAAK85E,iBACvB95E,KAAKk7E,YAAW,GAChB,IAAIl5E,EAAIC,KAAKE,MAAMkP,EAAM,GAAK+vB,EAAO,IAAM,KACvCr/B,EAAIE,KAAKE,MAAMkP,EAAM,GAAK+vB,EAAO,IAAM,KACvCi6C,EAAO,KACPC,EAAO,KACP7B,GAAeC,EAAA,sBACfD,GAAeC,EAAA,sBACfD,GAAeC,EAAA,kBACf2B,EAAO,QAEF5B,GAAeC,EAAA,uBACpBD,GAAeC,EAAA,uBACfD,GAAeC,EAAA,qBACf2B,EAAO,QAEP5B,GAAeC,EAAA,qBACfD,GAAeC,EAAA,uBACfD,GAAeC,EAAA,qBACf4B,EAAO,QAEF7B,GAAeC,EAAA,qBACpBD,GAAeC,EAAA,uBACfD,GAAeC,EAAA,uBACf4B,EAAO,QAEX,IAAI/zD,EAAY,aAAe8zD,EAAO,KAAOC,EAAO,eAAiBt5E,EAAI,KAAOD,EAAI,IAChF/B,KAAK+4E,SAAS7/D,YAAcqO,IAC5BvnB,KAAK+4E,SAAS7/D,WAAaqO,EAC3BtX,EAAMsX,UAAYA,EAElBtX,EAAMsrE,YAAch0D,EAE5B,EAKAixD,EAAQxzE,UAAUw2E,WAAa,WAC3B,OAAOx7E,KAAK0O,OAChB,EACO8pE,CACX,CAnZ4B,CAmZ1B,4ECpgBE,GAAwC,WACxC,IAAIpkE,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GAiCxCinE,GAAa,GAoIjB,SAnIsC,SAAUhnE,GAS5C,SAASinE,EAAiBx9D,EAAWrB,EAAO8+D,EAAcC,GACtD,IAAIh7E,EAAQ6T,EAAOzH,KAAKhN,KAAMke,EAAWrB,EAAO,CAAE0a,WAAY,KAAQv3B,KAwDtE,OAnDAY,EAAMi7E,SAAW,CAAC,EAKlBj7E,EAAMk7E,eAAiB,CAAC,EAKxBl7E,EAAMm7E,mBAAqB,EAK3Bn7E,EAAMo7E,oBAAsB,CAAC,EAI7Bp7E,EAAMq7E,sBAAwB,CAAC,EAK/Br7E,EAAMs7E,aAAe,CAAC,EAItBt7E,EAAMu7E,YAAc,KAIpBv7E,EAAMw7E,iBAINx7E,EAAMg7E,eAAiBA,EAAe9sE,UAAK0H,EAAW5V,GAKtDA,EAAMy7E,SAAW,EAKjBz7E,EAAMy2B,MAAO,EAIbz2B,EAAM07E,iBAAmBX,EAClB/6E,CACX,CA8DA,OAhIA,GAAU86E,EAAkBjnE,GAuE5BinE,EAAiB12E,UAAUmwC,WAAa,SAAU/zB,GAC9C,IAAIuL,GAAM,SAAOvL,GAIjB,OAHMuL,KAAO3sB,KAAK67E,WACd77E,KAAK67E,SAASlvD,IAAO,QAAsB,EAAG,EAAG8uD,KAE9Cz7E,KAAK67E,SAASlvD,EACzB,EAKA+uD,EAAiB12E,UAAUu3E,WAAa,SAAUn7D,GAC9C,OAAO,SAAOA,KAAUphB,KAAK67E,QACjC,EAMAH,EAAiB12E,UAAU+X,SAAW,SAAUqE,GAC5C,OAAOphB,KAAKu8E,WAAWn7D,GAASphB,KAAKm1C,WAAW/zB,GAAO1C,OAAS,IACpE,EAKAg9D,EAAiB12E,UAAUw3E,eAAiB,SAAUp7D,GAClD,IAAIuL,GAAM,SAAOvL,GAajB,OAZMuL,KAAO3sB,KAAKk8E,eACdl8E,KAAKk8E,aAAavvD,GAAO,CACrB8vD,OAAO,EACPC,oBAAqB,KACrBC,mBAAoBjkB,IACpBkkB,kBAAmB,EACnBC,uBAAwBnkB,IACxBokB,sBAAuB,EACvBC,WAAY,EACZC,eAAgB,IAGjBh9E,KAAKk8E,aAAavvD,EAC7B,EAIA+uD,EAAiB12E,UAAUoY,KAAO,WAC9Bpd,KAAK47E,gBACT,EAIAF,EAAiB12E,UAAUyyB,QAAU,WACjC,IAAK,IAAI9K,KAAO3sB,KAAK67E,SACjBJ,GAAWnpE,KAAKtS,KAAK67E,SAASlvD,GAAKjO,QAEvCjK,EAAOzP,UAAUyyB,QAAQzqB,KAAKhN,KAClC,EACO07E,CACX,CAlIqC,CAkInCvkD,GAAA,kBCpKE,GAAwC,WACxC,IAAI/iB,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GA4I5C,SA1HgC,SAAUC,GAUtC,SAASwoE,EAAW/+D,EAAWrB,EAAOjB,EAAKszB,EAAQ/wB,EAAkB9I,GACjE,IAAIzU,EAAQ6T,EAAOzH,KAAKhN,KAAMke,EAAWrB,EAAOxH,IAAgBrV,KAyChE,OApCAY,EAAMwb,OAAS,KAKfxb,EAAMs8E,QAAUhuC,EAKhBtuC,EAAMu8E,UAAY,KAKlBv8E,EAAMs3E,QAKNt3E,EAAM2Y,WAAa,KAKnB3Y,EAAMyb,WAKNzb,EAAMyd,kBAAoBF,EAK1Bvd,EAAMw8E,KAAOxhE,EACNhb,CACX,CAmEA,OAvHA,GAAUq8E,EAAYxoE,GA0DtBwoE,EAAWj4E,UAAUq4E,UAAY,WAC7B,OAAOr9E,KAAKk9E,OAChB,EAMAD,EAAWj4E,UAAUs4E,YAAc,WAC/B,OAAOt9E,KAAKm9E,SAChB,EAIAF,EAAWj4E,UAAUsZ,OAAS,WAC1B,OAAOte,KAAKo9E,IAChB,EAIAH,EAAWj4E,UAAUoY,KAAO,WACpBpd,KAAK6c,OAASif,GAAA,SACd97B,KAAK63B,SAASiE,GAAA,WACd97B,KAAKqe,kBAAkBre,KAAMA,KAAKo9E,MAC9Bp9E,KAAKk4E,SACLl4E,KAAKk4E,QAAQl4E,KAAKoc,OAAQpc,KAAKqc,WAAYrc,KAAKuZ,YAG5D,EAMA0jE,EAAWj4E,UAAUu4E,OAAS,SAAUhrD,EAAU6qB,GAC9Cp9C,KAAKw9E,YAAYjrD,EACrB,EAIA0qD,EAAWj4E,UAAUy4E,QAAU,WAC3Bz9E,KAAK63B,SAASiE,GAAA,QAClB,EAOAmhD,EAAWj4E,UAAUw4E,YAAc,SAAUjrD,GACzCvyB,KAAKm9E,UAAY5qD,EACjBvyB,KAAK63B,SAASiE,GAAA,SAClB,EAMAmhD,EAAWj4E,UAAU04E,UAAY,SAAUzK,GACvCjzE,KAAKk4E,QAAUjF,CACnB,EACOgK,CACX,CAzH+B,CAyH7B9lD,GAAA,wbCrIF,QACY,aCNJ/iB,YADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAqHG,SAASmpE,EAAYz2D,EAAMO,EAAO6gB,EAAYW,GACjD,IAAI/gB,EAAchB,EAAKpb,UACvB,QAAoB0K,IAAhB0R,EAAJ,CAGA,IAAIC,EAAUjB,EAAKkB,mBAAmBF,EAAcT,GAChD8Z,EAAgBra,EAAKkc,qBAAqBjb,GAC1CjB,EAAKmB,gBACLnB,EAAKoB,mBAETpB,EAAKtb,QAAQ,CACTyQ,WAAYklB,EACZwB,OAAQuF,EACRv8B,cAA2ByK,IAAjByyB,EAA6BA,EAAe,IACtD5hB,OAAQ,MAVZ,CAYJ,CACA,QAvGiC,SAAU5S,GAKvC,SAASmpE,EAAYvoE,GACjB,IAAIzU,EAAQ6T,EAAOzH,KAAKhN,OAASA,KAUjC,OATIqV,GAAeA,EAAYxG,cAC3BjO,EAAMiO,YAAcwG,EAAYxG,aAMpCjO,EAAMuf,KAAO,KACbvf,EAAMi9E,WAAU,GACTj9E,CACX,CA6CA,OA7DAyT,EAAUupE,EAAanpE,GAuBvBmpE,EAAY54E,UAAUsvB,UAAY,WAC9B,OAA+Bt0B,KAAKiF,IAAI,EAC5C,EAMA24E,EAAY54E,UAAU6d,OAAS,WAC3B,OAAO7iB,KAAKmgB,IAChB,EAOAy9D,EAAY54E,UAAU6J,YAAc,SAAUmlB,GAC1C,OAAO,CACX,EAOA4pD,EAAY54E,UAAU64E,UAAY,SAAUC,GACxC99E,KAAKyW,IAAI,EAA4BqnE,EACzC,EAOAF,EAAY54E,UAAUmP,OAAS,SAAUjG,GACrClO,KAAKmgB,KAAOjS,CAChB,EACO0vE,CACX,CA/DgC,CA+D9B,iBCzGE,EAAwC,WACxC,IAAIxpE,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GAsE5C,QA1CqC,SAAUC,GAK3C,SAASspE,EAAgB1oE,GACrB,IAAIzU,EAAQ6T,EAAOzH,KAAKhN,OAASA,KAC7B0O,EAAU2G,GAA4B,CAAC,EAW3C,OANAzU,EAAMo9E,OAAStvE,EAAQ+Y,MAAQ/Y,EAAQ+Y,MAAQ,EAK/C7mB,EAAMimB,eAAiCrQ,IAArB9H,EAAQ3C,SAAyB2C,EAAQ3C,SAAW,IAC/DnL,CACX,CAqBA,OAvCA,EAAUm9E,EAAiBtpE,GAyB3BspE,EAAgB/4E,UAAU6J,YAAc,SAAUmlB,GAC9C,IAAI0kD,GAAY,EAChB,GAAI1kD,EAAgB5iB,MAAQ,aAA8B,CACtD,IAAI0iB,EAA0CE,EAA6B,cACvE9lB,EAAM8lB,EAAgB9lB,IACtB60B,EAAS/O,EAAgB/nB,WACzBwb,EAAQqM,EAAamqD,UAAYj+E,KAAKg+E,OAASh+E,KAAKg+E,OAExDL,EADWzvE,EAAIvC,UACG8b,EAAOsb,EAAQ/iC,KAAK6mB,WACtCmN,EAAgBhiB,iBAChB0mE,GAAY,CAChB,CACA,OAAQA,CACZ,EACOqF,CACX,CAzCoC,CAyClC,iBCrEE,EAAwC,WACxC,IAAI3pE,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GAmNrC,SAAS,EAAS2b,GAIrB,IAHA,IAAI/sB,EAAS+sB,EAAc/sB,OACvBooB,EAAU,EACVC,EAAU,EACLjhB,EAAI,EAAGA,EAAIpH,EAAQoH,IACxBghB,GAAW2E,EAAc3lB,GAAGghB,QAC5BC,GAAW0E,EAAc3lB,GAAGihB,QAEhC,MAAO,CAACD,EAAUpoB,EAAQqoB,EAAUroB,EACxC,CAYA,QAhLwC,SAAUqR,GAK9C,SAASypE,EAAmB7oE,GACxB,IAAIzU,EAAQZ,KACR0O,EAAU2G,GAA4B,CAAC,EAiC3C,OAhCAzU,EAAQ6T,EAAOzH,KAAKhN,KACyC,IAAcA,KACvE0O,EAAQyvE,kBACRv9E,EAAMu9E,gBAAkBzvE,EAAQyvE,iBAEhCzvE,EAAQ0vE,kBACRx9E,EAAMw9E,gBAAkB1vE,EAAQ0vE,iBAEhC1vE,EAAQ2vE,kBACRz9E,EAAMy9E,gBAAkB3vE,EAAQ2vE,iBAEhC3vE,EAAQ4vE,gBACR19E,EAAM09E,cAAgB5vE,EAAQ4vE,eAE9B5vE,EAAQ6vE,WACR39E,EAAM29E,SAAW7vE,EAAQ6vE,UAM7B39E,EAAM49E,wBAAyB,EAK/B59E,EAAM69E,iBAAmB,CAAC,EAK1B79E,EAAM89E,eAAiB,GAChB99E,CACX,CA4GA,OApJA,EAAUs9E,EAAoBzpE,GA+C9BypE,EAAmBl5E,UAAU25E,gBAAkB,WAC3C,OAAO3+E,KAAK0+E,eAAet7E,MAC/B,EAOA86E,EAAmBl5E,UAAUm5E,gBAAkB,SAAUnqD,GACrD,OAAO,CACX,EAMAkqD,EAAmBl5E,UAAUo5E,gBAAkB,SAAUpqD,GAAmB,EAS5EkqD,EAAmBl5E,UAAU6J,YAAc,SAAUmlB,GACjD,IAAKA,EAAgB5K,cACjB,OAAO,EAEX,IAAIsvD,GAAY,EAEhB,GADA14E,KAAK4+E,uBAAuB5qD,GACxBh0B,KAAKw+E,wBACL,GAAIxqD,EAAgB5iB,MAAQ,gBACxBpR,KAAKo+E,gBAAgBpqD,GAErBA,EAAgBhiB,sBAEf,GAAIgiB,EAAgB5iB,MAAQ,cAA+B,CAC5D,IAAIytE,EAAY7+E,KAAKs+E,cAActqD,GACnCh0B,KAAKw+E,uBACDK,GAAa7+E,KAAK0+E,eAAet7E,OAAS,CAClD,OAGA,GAAI4wB,EAAgB5iB,MAAQ,gBAAiC,CACzD,IAAI0tE,EAAU9+E,KAAKm+E,gBAAgBnqD,GACnCh0B,KAAKw+E,uBAAyBM,EAC9BpG,EAAY14E,KAAKu+E,SAASO,EAC9B,MACS9qD,EAAgB5iB,MAAQ,iBAC7BpR,KAAKq+E,gBAAgBrqD,GAG7B,OAAQ0kD,CACZ,EAMAwF,EAAmBl5E,UAAUq5E,gBAAkB,SAAUrqD,GAAmB,EAO5EkqD,EAAmBl5E,UAAUs5E,cAAgB,SAAUtqD,GACnD,OAAO,CACX,EAOAkqD,EAAmBl5E,UAAUu5E,SAAW,SAAUO,GAC9C,OAAOA,CACX,EAKAZ,EAAmBl5E,UAAU45E,uBAAyB,SAAU5qD,GAC5D,GAqCR,SAAgCA,GAC5B,IAAI5iB,EAAO4iB,EAAgB5iB,KAC3B,OAAQA,IAAS,iBACbA,IAAS,iBACTA,IAAS,aACjB,CA1CY2tE,CAAuB/qD,GAAkB,CACzC,IAAIpQ,EAAUoQ,EAAgB5K,cAC1BpW,EAAK4Q,EAAQoH,UAAUjmB,WACvBivB,EAAgB5iB,MAAQ,qBACjBpR,KAAKy+E,iBAAiBzrE,IAExBghB,EAAgB5iB,MAAQ,iBAGxB4B,KAAMhT,KAAKy+E,oBAFhBz+E,KAAKy+E,iBAAiBzrE,GAAM4Q,GAMhC5jB,KAAK0+E,gBAAiB,QAAU1+E,KAAKy+E,iBACzC,CACJ,EACOP,CACX,CAtJuC,CAsJrC,qCC5LK,SAAS,EAAIp7C,GAChB,IAAI6xB,EAAa10D,UAKjB,OAAO,SAAUimB,GAEb,IADA,IAAI84D,GAAO,EACFx0E,EAAI,EAAGiL,EAAKk/C,EAAWvxD,OAAQoH,EAAIiL,IACxCupE,EAAOA,GAAQrqB,EAAWnqD,GAAG0b,MADiB1b,GAMlD,OAAOw0E,CACX,CACJ,CASO,IAcIC,EAAmB,SAAUjrD,GACpC,IAAI5K,EAAoE4K,EAA6B,cACrG,OAAQ5K,EAAc81D,UAChB91D,EAAc+1D,SAAW/1D,EAAcg2D,UACzCh2D,EAAc60D,QACtB,EAkBWoB,EAAoB,SAAUn5D,GACrC,OAAOA,EAAMhY,IAAI4kB,mBAAmBwsD,aAAa,aAVlC,SAAUp5D,GACzB,OAAOA,EAAMjU,OAAO6gB,mBAAmBtmB,SAASK,SAAS0yE,cAC7D,CASU,CAAMr5D,EAEhB,EAQWs5D,EAAS,KAoBTC,EAAoB,SAAUzrD,GACrC,IAAI5K,EAA2C4K,EAA6B,cAC5E,OAA+B,GAAxB5K,EAAclE,UAAiB,MAAU,MAAOkE,EAAcg2D,QACzE,EAQWM,EAAQ,KAmBRC,EAAc,SAAU3rD,GAC/B,OAAOA,EAAgB5iB,MAAQ,eACnC,EAmBWwuE,EAAiB,SAAU5rD,GAClC,IAAI5K,EAAoE4K,EAA6B,cACrG,OAAS5K,EAAc81D,UACjB91D,EAAc+1D,SAAW/1D,EAAcg2D,WACxCh2D,EAAc60D,QACvB,EAwBW4B,EAAe,SAAU7rD,GAChC,IAAI5K,EAAoE4K,EAA6B,cACrG,OAAS5K,EAAc81D,UACjB91D,EAAc+1D,SAAW/1D,EAAcg2D,UACzCh2D,EAAc60D,QACtB,EASW6B,EAAoB,SAAU9rD,GACrC,IACI8gC,EADoE9gC,EAA6B,cAC3C,OAAE8gC,QAC5D,MAAmB,UAAZA,GAAmC,WAAZA,GAAoC,aAAZA,CAC1D,EAQWirB,EAAY,SAAU/rD,GAC7B,IAAInJ,EAAmE,EAClEzB,cAGL,OAFA,YAAwB5S,IAAjBqU,EAA4B,IAEA,SAA5BA,EAAam1D,WACxB,EAsCWC,EAAgB,SAAUjsD,GACjC,IAAInJ,EAAmE,EAClEzB,cAEL,OADA,YAAwB5S,IAAjBqU,EAA4B,IAC5BA,EAAaq1D,WAAqC,IAAxBr1D,EAAa3F,MAClD,WC3QI,EAAwC,WACxC,IAAI9Q,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GAuL5C,QApJ6B,SAAUC,GAKnC,SAAS0rE,EAAQ9qE,GACb,IAAIzU,EAAQ6T,EAAOzH,KAAKhN,KAAM,CAC1Bu+E,SAAU,QACRv+E,KACF0O,EAAU2G,GAA4B,CAAC,EAK3CzU,EAAMw/E,SAAW1xE,EAAQ2xE,QAIzBz/E,EAAM0/E,aAAe,KAIrB1/E,EAAM2/E,mBAIN3/E,EAAM4/E,UAAW,EACjB,IAAIxsB,EAAYtlD,EAAQslD,UAClBtlD,EAAQslD,UACR,EAAI4rB,EAAgBK,GAa1B,OARAr/E,EAAM6/E,WAAa/xE,EAAQqa,YACrB,EAAIs2D,EAAmBrrB,GACvBA,EAKNpzD,EAAM8/E,YAAa,EACZ9/E,CACX,CAuGA,OAjJA,EAAUu/E,EAAS1rE,GA+CnB0rE,EAAQn7E,UAAUo5E,gBAAkB,SAAUpqD,GACrCh0B,KAAKwgF,WACNxgF,KAAKwgF,UAAW,EAChBxgF,KAAK6iB,SAASlX,UAAUw9B,oBAE5B,IAAIu1C,EAAiB1+E,KAAK0+E,eACtBiC,EAAW,EAAqBjC,GACpC,GAAIA,EAAet7E,QAAUpD,KAAKugF,oBAI9B,GAHIvgF,KAAKogF,UACLpgF,KAAKogF,SAAS5gE,OAAOmhE,EAAS,GAAIA,EAAS,IAE3C3gF,KAAKsgF,aAAc,CACnB,IAAI74D,EAAQ,CACRznB,KAAKsgF,aAAa,GAAKK,EAAS,GAChCA,EAAS,GAAK3gF,KAAKsgF,aAAa,IAGhCp5D,EADM8M,EAAgB9lB,IACXvC,WACf,QAAgB8b,EAAOP,EAAKxJ,kBAC5B,QAAiB+J,EAAOP,EAAKC,eAC7BD,EAAKkhB,qBAAqB3gB,EAC9B,OAEKznB,KAAKogF,UAGVpgF,KAAKogF,SAAS7gE,QAElBvf,KAAKsgF,aAAeK,EACpB3gF,KAAKugF,mBAAqB7B,EAAet7E,OACzC4wB,EAAgB5K,cAAcpX,gBAClC,EAMAmuE,EAAQn7E,UAAUs5E,cAAgB,SAAUtqD,GACxC,IAAI9lB,EAAM8lB,EAAgB9lB,IACtBgZ,EAAOhZ,EAAIvC,UACf,GAAmC,IAA/B3L,KAAK0+E,eAAet7E,OAAc,CAClC,IAAKpD,KAAK0gF,YAAc1gF,KAAKogF,UAAYpgF,KAAKogF,SAAS3gE,MAAO,CAC1D,IAAIg0B,EAAWzzC,KAAKogF,SAAStgE,cACzBuzB,EAAQrzC,KAAKogF,SAASrgE,WACtB/T,EAASkb,EAAK2b,oBACd+9C,EAAW1yE,EAAIqlB,+BAA+BvnB,GAC9Cu+D,EAAOr8D,EAAImkB,+BAA+B,CAC1CuuD,EAAS,GAAKntC,EAAWxxC,KAAKiG,IAAImrC,GAClCutC,EAAS,GAAKntC,EAAWxxC,KAAKwF,IAAI4rC,KAEtCnsB,EAAK8b,gBAAgB,CACjBh3B,OAAQkb,EAAK0gB,qBAAqB2iC,GAClCx+D,SAAU,IACVsb,OAAQ,MAEhB,CAKA,OAJIrnB,KAAKwgF,WACLxgF,KAAKwgF,UAAW,EAChBt5D,EAAKkiB,mBAEF,CACX,CAQI,OANIppC,KAAKogF,UAGLpgF,KAAKogF,SAAS7gE,QAElBvf,KAAKsgF,aAAe,MACb,CAEf,EAMAH,EAAQn7E,UAAUm5E,gBAAkB,SAAUnqD,GAC1C,GAAIh0B,KAAK0+E,eAAet7E,OAAS,GAAKpD,KAAKygF,WAAWzsD,GAAkB,CACpE,IACI9M,EADM8M,EAAgB9lB,IACXvC,UAYf,OAXA3L,KAAKsgF,aAAe,KAEhBp5D,EAAKmB,gBACLnB,EAAKoB,mBAELtoB,KAAKogF,UACLpgF,KAAKogF,SAAS7gE,QAIlBvf,KAAK0gF,WAAa1gF,KAAK0+E,eAAet7E,OAAS,GACxC,CACX,CAEI,OAAO,CAEf,EACO+8E,CACX,CAnJ4B,CAmJ1BU,iBCtLE,EAAwC,WACxC,IAAIzsE,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GA2H5C,QAtFgC,SAAUC,GAKtC,SAASqsE,EAAWzrE,GAChB,IAAIzU,EAAQZ,KACR0O,EAAU2G,GAA4B,CAAC,EAmB3C,OAlBAzU,EAAQ6T,EAAOzH,KAAKhN,KAAM,CACtBu+E,SAAU,QACRv+E,MAKAygF,WAAa/xE,EAAQslD,UAAYtlD,EAAQslD,UAAYirB,EAK3Dr+E,EAAMmgF,gBAAavqE,EAKnB5V,EAAMimB,eAAiCrQ,IAArB9H,EAAQ3C,SAAyB2C,EAAQ3C,SAAW,IAC/DnL,CACX,CAyDA,OAnFA,EAAUkgF,EAAYrsE,GA+BtBqsE,EAAW97E,UAAUo5E,gBAAkB,SAAUpqD,GAC7C,GAAK+rD,EAAU/rD,GAAf,CAGA,IAAI9lB,EAAM8lB,EAAgB9lB,IACtBgZ,EAAOhZ,EAAIvC,UACf,GAAIub,EAAK2d,iBAAiBlkB,WAAa,KAAvC,CAGA,IAAID,EAAOxS,EAAI2B,UACXuxB,EAASpN,EAAgB3iB,MACzB2vE,EAAQ/+E,KAAK2H,MAAM8W,EAAK,GAAK,EAAI0gB,EAAO,GAAIA,EAAO,GAAK1gB,EAAK,GAAK,GACtE,QAAwBlK,IAApBxW,KAAK+gF,WAA0B,CAC/B,IAAIt5D,EAAQu5D,EAAQhhF,KAAK+gF,WACzB75D,EAAKyhB,wBAAwBlhB,EACjC,CACAznB,KAAK+gF,WAAaC,CARlB,CALA,CAcJ,EAMAF,EAAW97E,UAAUs5E,cAAgB,SAAUtqD,GAC3C,OAAK+rD,EAAU/rD,KAGLA,EAAgB9lB,IACXvC,UACVy9B,eAAeppC,KAAK6mB,YAClB,EACX,EAMAi6D,EAAW97E,UAAUm5E,gBAAkB,SAAUnqD,GAC7C,SAAK+rD,EAAU/rD,KAGXyrD,EAAkBzrD,KAClBh0B,KAAKygF,WAAWzsD,KACNA,EAAgB9lB,IACtBvC,UAAUw9B,mBACdnpC,KAAK+gF,gBAAavqE,EACX,GAKf,EACOsqE,CACX,CArF+B,CAqF7BD,oCCvHE,EAAwC,WACxC,IAAIzsE,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GAgI5C,QAjH+B,SAAUC,GAKrC,SAASwsE,EAAUv0E,GACf,IAAI9L,EAAQ6T,EAAOzH,KAAKhN,OAASA,KA6BjC,OAxBAY,EAAMsgF,UAAY,KAKlBtgF,EAAM0iB,SAAWzW,SAASW,cAAc,OACxC5M,EAAM0iB,SAASrT,MAAMsK,SAAW,WAChC3Z,EAAM0iB,SAASrT,MAAMkgB,cAAgB,OACrCvvB,EAAM0iB,SAAS5W,UAAY,UAAYA,EAKvC9L,EAAMuf,KAAO,KAKbvf,EAAMugF,YAAc,KAKpBvgF,EAAMwgF,UAAY,KACXxgF,CACX,CA2EA,OA9GA,EAAUqgF,EAAWxsE,GAuCrBwsE,EAAUj8E,UAAUgS,gBAAkB,WAClChX,KAAKmU,OAAO,KAChB,EAIA8sE,EAAUj8E,UAAUq8E,QAAU,WAC1B,IAAIC,EAAathF,KAAKmhF,YAClBI,EAAWvhF,KAAKohF,UAChBI,EAAK,KACLvxE,EAAQjQ,KAAKsjB,SAASrT,MAC1BA,EAAMxB,KAAOxM,KAAK27B,IAAI0jD,EAAW,GAAIC,EAAS,IAAMC,EACpDvxE,EAAMG,IAAMnO,KAAK27B,IAAI0jD,EAAW,GAAIC,EAAS,IAAMC,EACnDvxE,EAAM5E,MAAQpJ,KAAK2G,IAAI24E,EAAS,GAAKD,EAAW,IAAME,EACtDvxE,EAAMgB,OAAShP,KAAK2G,IAAI24E,EAAS,GAAKD,EAAW,IAAME,CAC3D,EAIAP,EAAUj8E,UAAUmP,OAAS,SAAUjG,GACnC,GAAIlO,KAAKmgB,KAAM,CACXngB,KAAKmgB,KAAKqT,sBAAsBtgB,YAAYlT,KAAKsjB,UACjD,IAAIrT,EAAQjQ,KAAKsjB,SAASrT,MAC1BA,EAAMxB,KAAO,UACbwB,EAAMG,IAAM,UACZH,EAAM5E,MAAQ,UACd4E,EAAMgB,OAAS,SACnB,CACAjR,KAAKmgB,KAAOjS,EACRlO,KAAKmgB,MACLngB,KAAKmgB,KAAKqT,sBAAsB7lB,YAAY3N,KAAKsjB,SAEzD,EAKA29D,EAAUj8E,UAAUy8E,UAAY,SAAUH,EAAYC,GAClDvhF,KAAKmhF,YAAcG,EACnBthF,KAAKohF,UAAYG,EACjBvhF,KAAK0hF,yBACL1hF,KAAKqhF,SACT,EAIAJ,EAAUj8E,UAAU08E,uBAAyB,WACzC,IAAIJ,EAAathF,KAAKmhF,YAClBI,EAAWvhF,KAAKohF,UAOhB5+D,EANS,CACT8+D,EACA,CAACA,EAAW,GAAIC,EAAS,IACzBA,EACA,CAACA,EAAS,GAAID,EAAW,KAEJpzE,IAAIlO,KAAKmgB,KAAKkS,+BAAgCryB,KAAKmgB,MAE5EqC,EAAY,GAAKA,EAAY,GAAG1V,QAC3B9M,KAAKkhF,UAINlhF,KAAKkhF,UAAUve,eAAe,CAACngD,IAH/BxiB,KAAKkhF,UAAY,IAAI,KAAQ,CAAC1+D,GAKtC,EAIAy+D,EAAUj8E,UAAUqT,YAAc,WAC9B,OAAOrY,KAAKkhF,SAChB,EACOD,CACX,CAhH8B,CAgH5BpqE,EAAA,GClIF,IAAI,EAAwC,WACxC,IAAIzC,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GAqExCmtE,EAA8B,SAAUltE,GAOxC,SAASktE,EAAavwE,EAAMnF,EAAY+nB,GACpC,IAAIpzB,EAAQ6T,EAAOzH,KAAKhN,KAAMoR,IAASpR,KAcvC,OAPAY,EAAMqL,WAAaA,EAMnBrL,EAAMozB,gBAAkBA,EACjBpzB,CACX,CACA,OAvBA,EAAU+gF,EAAcltE,GAuBjBktE,CACX,CAzBiC,CAyB/BC,EAAA,IAwHF,QA3G6B,SAAUntE,GAKnC,SAASotE,EAAQxsE,GACb,IAAIzU,EAAQ6T,EAAOzH,KAAKhN,OAASA,KAC7B0O,EAAU2G,GAA4B,CAAC,EA+B3C,OA1BAzU,EAAMkhF,KAAO,IAAI,EAAUpzE,EAAQhC,WAAa,cAKhD9L,EAAMmhF,cAA+BvrE,IAApB9H,EAAQszE,QAAwBtzE,EAAQszE,QAAU,GAC/DtzE,EAAQuzE,WACRrhF,EAAMqhF,SAAWvzE,EAAQuzE,UAM7BrhF,EAAMugF,YAAc,KAKpBvgF,EAAM6/E,WAAa/xE,EAAQslD,UAAYtlD,EAAQslD,UAAYyrB,EAK3D7+E,EAAMshF,iBAAmBxzE,EAAQyzE,gBAC3BzzE,EAAQyzE,gBACRvhF,EAAMwhF,uBACLxhF,CACX,CAkEA,OAxGA,EAAUihF,EAASptE,GAgDnBotE,EAAQ78E,UAAUo9E,uBAAyB,SAAUpuD,EAAiBstD,EAAYC,GAC9E,IAAIl2E,EAAQk2E,EAAS,GAAKD,EAAW,GACjCrwE,EAASswE,EAAS,GAAKD,EAAW,GACtC,OAAOj2E,EAAQA,EAAQ4F,EAASA,GAAUjR,KAAK+hF,QACnD,EAMAF,EAAQ78E,UAAUqT,YAAc,WAC5B,OAAOrY,KAAK8hF,KAAKzpE,aACrB,EAKAwpE,EAAQ78E,UAAUo5E,gBAAkB,SAAUpqD,GAC1Ch0B,KAAK8hF,KAAKL,UAAUzhF,KAAKmhF,YAAantD,EAAgB3iB,OACtDrR,KAAKmR,cAAc,IAAIwwE,EAvHlB,UAuHyD3tD,EAAgB/nB,WAAY+nB,GAC9F,EAMA6tD,EAAQ78E,UAAUs5E,cAAgB,SAAUtqD,GAMxC,OALAh0B,KAAK8hF,KAAK3tE,OAAO,MACbnU,KAAKkiF,iBAAiBluD,EAAiBh0B,KAAKmhF,YAAantD,EAAgB3iB,SACzErR,KAAKiiF,SAASjuD,GACdh0B,KAAKmR,cAAc,IAAIwwE,EA5HvB,SA4H6D3tD,EAAgB/nB,WAAY+nB,MAEtF,CACX,EAMA6tD,EAAQ78E,UAAUm5E,gBAAkB,SAAUnqD,GAC1C,QAAIh0B,KAAKygF,WAAWzsD,KAChBh0B,KAAKmhF,YAAcntD,EAAgB3iB,MACnCrR,KAAK8hF,KAAK3tE,OAAO6f,EAAgB9lB,KACjClO,KAAK8hF,KAAKL,UAAUzhF,KAAKmhF,YAAanhF,KAAKmhF,aAC3CnhF,KAAKmR,cAAc,IAAIwwE,EAtJrB,WAsJ6D3tD,EAAgB/nB,WAAY+nB,KACpF,EAKf,EAKA6tD,EAAQ78E,UAAUi9E,SAAW,SAAU/7D,GAAS,EACzC27D,CACX,CA1G4B,CA0G1BhB,iBCrNE,EAAwC,WACxC,IAAIzsE,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GAmG5C,QAxD8B,SAAUC,GAKpC,SAAS4tE,EAAShtE,GACd,IAAIzU,EAAQZ,KACR0O,EAAU2G,GAA4B,CAAC,EACvC2+C,EAAYtlD,EAAQslD,UAAYtlD,EAAQslD,UAAY6rB,EAgBxD,OAfAj/E,EAAQ6T,EAAOzH,KAAKhN,KAAM,CACtBg0D,UAAWA,EACXtnD,UAAWgC,EAAQhC,WAAa,cAChCs1E,QAAStzE,EAAQszE,WACfhiF,MAKA6mB,eAAiCrQ,IAArB9H,EAAQ3C,SAAyB2C,EAAQ3C,SAAW,IAKtEnL,EAAM0hF,UAAuB9rE,IAAhB9H,EAAQ6zE,KAAoB7zE,EAAQ6zE,IAC1C3hF,CACX,CA6BA,OArDA,EAAUyhF,EAAU5tE,GA6BpB4tE,EAASr9E,UAAUi9E,SAAW,SAAU/7D,GACpC,IAAIhY,EAAMlO,KAAK6iB,SACXqE,EAAqDhZ,EAAIvC,UACzD+U,EAAkDxS,EAAI2B,UACtDuM,EAASpc,KAAKqY,cAAcmF,YAChC,GAAIxd,KAAKsiF,KAAM,CACX,IAAIE,EAAYt7D,EAAK+d,wBAAwBvkB,GACzC+hE,GAAiB,IAAA7oC,+BAA8B,CAC/C1rC,EAAIqlB,gCAA+B,IAAAknB,eAAcr+B,IACjDlO,EAAIqlB,gCAA+B,IAAAonB,aAAYv+B,MAE/CsmE,EAASx7D,EAAK4e,+BAA+B28C,EAAgB/hE,IACjE,IAAAq7B,iBAAgBymC,EAAW,EAAIE,GAC/BtmE,EAASomE,CACb,CACA,IAAInmE,EAAa6K,EAAK+e,yBAAyB/e,EAAK4e,+BAA+B1pB,EAAQsE,IACvF1U,EAASkb,EAAK0gB,sBAAqB,IAAAjD,WAAUvoB,GAASC,GAC1D6K,EAAK8b,gBAAgB,CACjB3mB,WAAYA,EACZrQ,OAAQA,EACRD,SAAU/L,KAAK6mB,UACfQ,OAAQ,MAEhB,EACOg7D,CACX,CAvD6B,CAuD3B,iBClGF,IAAI,EAAwC,WACxC,IAAIjuE,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GA+H5C,QAlFiC,SAAUC,GAKvC,SAASkuE,EAAYttE,GACjB,IAAIzU,EAAQ6T,EAAOzH,KAAKhN,OAASA,KAC7B0O,EAAU2G,GAAe,CAAC,EA4B9B,OAtBAzU,EAAMgiF,kBAAoB,SAAU5uD,GAChC,OAAQ4rD,EAAe5rD,IAAoB8rD,EAAkB9rD,EACjE,EAKApzB,EAAM6/E,gBACoBjqE,IAAtB9H,EAAQslD,UACFtlD,EAAQslD,UACRpzD,EAAMgiF,kBAKhBhiF,EAAMimB,eAAiCrQ,IAArB9H,EAAQ3C,SAAyB2C,EAAQ3C,SAAW,IAKtEnL,EAAMiiF,iBACqBrsE,IAAvB9H,EAAQo0E,WAA2Bp0E,EAAQo0E,WAAa,IACrDliF,CACX,CA4CA,OA/EA,EAAU+hF,EAAaluE,GA4CvBkuE,EAAY39E,UAAU6J,YAAc,SAAUmlB,GAC1C,IAAI0kD,GAAY,EAChB,GAAI1kD,EAAgB5iB,MAAQ8iB,EAAA,UAAmB,CAC3C,IACI6uD,EADyC/uD,EAA6B,cACnD+uD,QACvB,GAAI/iF,KAAKygF,WAAWzsD,KCpFtB,IDqFO+uD,GCxFP,IDyFUA,GCvFT,IDwFSA,GCzFZ,ID0FYA,GAAwB,CAC5B,IACI77D,EADM8M,EAAgB9lB,IACXvC,UACXq3E,EAAgB97D,EAAKxJ,gBAAkB1d,KAAK6iF,YAC5C5mD,EAAS,EAAGC,EAAS,EC5F/B,ID6FU6mD,EACA7mD,GAAU8mD,ECjGpB,IDmGeD,EACL9mD,GAAU+mD,EClGnB,IDoGcD,EACL9mD,EAAS+mD,EAGT9mD,EAAS8mD,EAEb,IAAIv7D,EAAQ,CAACwU,EAAQC,IACrB,QAAiBzU,EAAOP,EAAKC,eTNtC,SAAaD,EAAMO,EAAOwhB,GAC7B,IAAI1E,EAAgBrd,EAAK2b,oBACzB,GAAI0B,EAAe,CACf,IAAIv4B,EAAS,CAACu4B,EAAc,GAAK9c,EAAM,GAAI8c,EAAc,GAAK9c,EAAM,IACpEP,EAAK8b,gBAAgB,CACjBj3B,cAA2ByK,IAAjByyB,EAA6BA,EAAe,IACtD5hB,OAAQ,KACRrb,OAAQkb,EAAK0gB,qBAAqB57B,IAE1C,CACJ,CSHgBi3E,CAAI/7D,EAAMO,EAAOznB,KAAK6mB,WACtBmN,EAAgBhiB,iBAChB0mE,GAAY,CAChB,CACJ,CACA,OAAQA,CACZ,EACOiK,CACX,CAjFgC,CAiF9B,GE9HF,IAAI,EAAwC,WACxC,IAAIvuE,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GA8F5C,SArDkC,SAAUC,GAKxC,SAASyuE,EAAa7tE,GAClB,IAAIzU,EAAQ6T,EAAOzH,KAAKhN,OAASA,KAC7B0O,EAAU2G,GAA4B,CAAC,EAgB3C,OAXAzU,EAAM6/E,WAAa/xE,EAAQslD,UAAYtlD,EAAQslD,UAAY8rB,EAK3Dl/E,EAAMo9E,OAAStvE,EAAQ+Y,MAAQ/Y,EAAQ+Y,MAAQ,EAK/C7mB,EAAMimB,eAAiCrQ,IAArB9H,EAAQ3C,SAAyB2C,EAAQ3C,SAAW,IAC/DnL,CACX,CA2BA,OAlDA,EAAUsiF,EAAczuE,GAgCxByuE,EAAal+E,UAAU6J,YAAc,SAAUmlB,GAC3C,IAAI0kD,GAAY,EAChB,GAAI1kD,EAAgB5iB,MAAQ8iB,EAAA,WACxBF,EAAgB5iB,MAAQ8iB,EAAA,WAAoB,CAC5C,IACIivD,EADyCnvD,EAA6B,cAClDmvD,SACxB,GAAInjF,KAAKygF,WAAWzsD,KACfmvD,GAAY,IAAIC,WAAW,IAAMD,GAAY,IAAIC,WAAW,IAAK,CAClE,IAAIl1E,EAAM8lB,EAAgB9lB,IACtBuZ,EAAQ07D,GAAY,IAAIC,WAAW,GAAKpjF,KAAKg+E,QAAUh+E,KAAKg+E,OAEhEL,EADWzvE,EAAIvC,UACG8b,OAAOjR,EAAWxW,KAAK6mB,WACzCmN,EAAgBhiB,iBAChB0mE,GAAY,CAChB,CACJ,CACA,OAAQA,CACZ,EACOwK,CACX,CApDiC,CAoD/B,6BC7FE,GAAwC,WACxC,IAAI9uE,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GAwBjC6uE,GACG,WAwOd,SA9MoC,SAAU5uE,GAK1C,SAAS6uE,EAAejuE,GACpB,IAAIzU,EAAQZ,KACR0O,EAAU2G,GAA4B,CAAC,GAC3CzU,EAAQ6T,EAAOzH,KAAKhN,KACyC,IAAcA,MAKrEujF,YAAc,EAKpB3iF,EAAM4iF,WAAa,EAKnB5iF,EAAM6hE,eAAiCjsD,IAArB9H,EAAQw5D,SAAyBx5D,EAAQw5D,SAAW,EAKtEtnE,EAAMimB,eAAiCrQ,IAArB9H,EAAQ3C,SAAyB2C,EAAQ3C,SAAW,IAKtEnL,EAAM6iF,cAA+BjtE,IAApB9H,EAAQtP,QAAwBsP,EAAQtP,QAAU,GAKnEwB,EAAM8iF,gBACoBltE,IAAtB9H,EAAQi1E,WAA0Bj1E,EAAQi1E,UAK9C/iF,EAAMgjF,0BAC8BptE,IAAhC9H,EAAQ6xB,qBACF7xB,EAAQ6xB,oBAElB,IAAIyzB,EAAYtlD,EAAQslD,UAAYtlD,EAAQslD,UAAYwrB,EA4CxD,OAvCA5+E,EAAM6/E,WAAa/xE,EAAQqa,YACrB,EAAIs2D,EAAmBrrB,GACvBA,EAKNpzD,EAAMijF,YAAc,KAKpBjjF,EAAMkjF,gBAAattE,EAKnB5V,EAAMmjF,WAKNnjF,EAAMojF,WAAQxtE,EAMd5V,EAAMqjF,kBAAoB,IAI1BrjF,EAAMsjF,mBAMNtjF,EAAMujF,cAAgB,IACfvjF,CACX,CA8GA,OA3MA,GAAU0iF,EAAgB7uE,GAiG1B6uE,EAAet+E,UAAUo/E,gBAAkB,WACvCpkF,KAAKkkF,wBAAqB1tE,EACfxW,KAAK6iB,SAASlX,UACpBy9B,oBAAe5yB,EAAWxW,KAAKwjF,WAAcxjF,KAAKwjF,WAAa,EAAI,GAAK,EAAK,EAAGxjF,KAAK6jF,YAC9F,EAOAP,EAAet+E,UAAU6J,YAAc,SAAUmlB,GAC7C,IAAKh0B,KAAKygF,WAAWzsD,GACjB,OAAO,EAGX,GADWA,EAAgB5iB,OACd8iB,EAAA,QACT,OAAO,EAEXF,EAAgBhiB,iBAChB,IAOIyV,EAPAvZ,EAAM8lB,EAAgB9lB,IACtBm2E,EAAwCrwD,EAA6B,cAgBzE,GAfIh0B,KAAK0jF,aACL1jF,KAAK6jF,YAAc7vD,EAAgB/nB,YAKnC+nB,EAAgB5iB,MAAQ8iB,EAAA,UACxBzM,EAAQ48D,EAAWnoD,OACf,KAAWmoD,EAAWC,YAAcC,WAAWC,kBAC/C/8D,GAAS,MAET48D,EAAWC,YAAcC,WAAWE,iBACpCh9D,GAAS,KAGH,IAAVA,EACA,OAAO,EAGPznB,KAAKwjF,WAAa/7D,EAEtB,IAAI7nB,EAAMD,KAAKC,WACS4W,IAApBxW,KAAK8jF,aACL9jF,KAAK8jF,WAAalkF,KAEjBI,KAAKgkF,OAASpkF,EAAMI,KAAK8jF,WAAa9jF,KAAKikF,qBAC5CjkF,KAAKgkF,MAAQ/hF,KAAK2G,IAAI6e,GAAS,EAAI47D,GA3KpC,SA6KH,IAAIn8D,EAAOhZ,EAAIvC,UACf,GAAI3L,KAAKgkF,QAAUX,KACbn8D,EAAK4d,2BAA4B9kC,KAAK4jF,qBAaxC,OAZI5jF,KAAKkkF,mBACL9jF,aAAaJ,KAAKkkF,qBAGdh9D,EAAKmB,gBACLnB,EAAKoB,mBAETpB,EAAKiiB,oBAETnpC,KAAKkkF,mBAAqBrkF,WAAWG,KAAKokF,gBAAgBt1E,KAAK9O,MAAOA,KAAKyjF,UAC3Ev8D,EAAKuhB,YAAYhhB,EAAQznB,KAAKmkF,cAAenkF,KAAK6jF,aAClD7jF,KAAK8jF,WAAalkF,GACX,EAEXI,KAAKujF,aAAe97D,EACpB,IAAIi9D,EAAWziF,KAAKm7B,IAAIp9B,KAAKyjF,UAAY7jF,EAAMI,KAAK8jF,YAAa,GAGjE,OAFA1jF,aAAaJ,KAAK+jF,YAClB/jF,KAAK+jF,WAAalkF,WAAWG,KAAK2kF,iBAAiB71E,KAAK9O,KAAMkO,GAAMw2E,IAC7D,CACX,EAKApB,EAAet+E,UAAU2/E,iBAAmB,SAAUz2E,GAClD,IAAIgZ,EAAOhZ,EAAIvC,UACXub,EAAKmB,gBACLnB,EAAKoB,mBAET,IAAIb,IAAS,SAAMznB,KAAKujF,aAAcvjF,KAAKyiE,UAAYziE,KAAKmkF,cAAenkF,KAAKyiE,UAAYziE,KAAKmkF,eAAiBnkF,KAAKmkF,eACnHj9D,EAAK4d,0BAA4B9kC,KAAK4jF,wBAEtCn8D,EAAQA,EAASA,EAAQ,EAAI,GAAK,EAAK,GAE3Ck2D,EAAYz2D,EAAMO,EAAOznB,KAAK6jF,YAAa7jF,KAAK6mB,WAChD7mB,KAAKgkF,WAAQxtE,EACbxW,KAAKujF,YAAc,EACnBvjF,KAAK6jF,YAAc,KACnB7jF,KAAK8jF,gBAAattE,EAClBxW,KAAK+jF,gBAAavtE,CACtB,EAOA8sE,EAAet+E,UAAU4/E,eAAiB,SAAUjB,GAChD3jF,KAAK0jF,WAAaC,EACbA,IACD3jF,KAAK6jF,YAAc,KAE3B,EACOP,CACX,CA7MmC,CA6MjC,GChQF,IAAI,GAAwC,WACxC,IAAIlvE,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GAyJ5C,SA1HiC,SAAUC,GAKvC,SAASowE,EAAYxvE,GACjB,IAAIzU,EAAQZ,KACR0O,EAAU2G,GAA4B,CAAC,EACvCyvE,EAA+D,EAmCnE,OAlCKA,EAAevG,WAChBuG,EAAevG,SAAW,OAE9B39E,EAAQ6T,EAAOzH,KAAKhN,KAAM8kF,IAAmB9kF,MAKvC+kF,QAAU,KAKhBnkF,EAAMmgF,gBAAavqE,EAKnB5V,EAAMokF,WAAY,EAKlBpkF,EAAMqkF,eAAiB,EAKvBrkF,EAAMskF,gBAAmC1uE,IAAtB9H,EAAQy2E,UAA0Bz2E,EAAQy2E,UAAY,GAKzEvkF,EAAMimB,eAAiCrQ,IAArB9H,EAAQ3C,SAAyB2C,EAAQ3C,SAAW,IAC/DnL,CACX,CA4EA,OAvHA,GAAUikF,EAAapwE,GAgDvBowE,EAAY7/E,UAAUo5E,gBAAkB,SAAUpqD,GAC9C,IAAIoxD,EAAgB,EAChBC,EAASrlF,KAAK0+E,eAAe,GAC7B4G,EAAStlF,KAAK0+E,eAAe,GAE7BrrC,EAAQpxC,KAAK2H,MAAM07E,EAAO75D,QAAU45D,EAAO55D,QAAS65D,EAAO95D,QAAU65D,EAAO75D,SAChF,QAAwBhV,IAApBxW,KAAK+gF,WAA0B,CAC/B,IAAIt5D,EAAQ4rB,EAAQrzC,KAAK+gF,WACzB/gF,KAAKilF,gBAAkBx9D,GAClBznB,KAAKglF,WAAa/iF,KAAK2G,IAAI5I,KAAKilF,gBAAkBjlF,KAAKklF,aACxDllF,KAAKglF,WAAY,GAErBI,EAAgB39D,CACpB,CACAznB,KAAK+gF,WAAa1tC,EAClB,IAAInlC,EAAM8lB,EAAgB9lB,IACtBgZ,EAAOhZ,EAAIvC,UACf,GAAIub,EAAK2d,iBAAiBlkB,WAAa,KAAvC,CAMA,IAAI+R,EAAmBxkB,EAAIe,cAAc2B,wBACrC+vE,EAAW,EAAqB3gF,KAAK0+E,gBACzCiC,EAAS,IAAMjuD,EAAiBjkB,KAChCkyE,EAAS,IAAMjuD,EAAiBtiB,IAChCpQ,KAAK+kF,QAAU72E,EAAImkB,+BAA+BsuD,GAE9C3gF,KAAKglF,YACL92E,EAAI6U,SACJmE,EAAKyhB,uBAAuBy8C,EAAeplF,KAAK+kF,SAZpD,CAcJ,EAMAF,EAAY7/E,UAAUs5E,cAAgB,SAAUtqD,GAC5C,QAAIh0B,KAAK0+E,eAAet7E,OAAS,IACnB4wB,EAAgB9lB,IACXvC,UACVy9B,eAAeppC,KAAK6mB,WAClB,GAKf,EAMAg+D,EAAY7/E,UAAUm5E,gBAAkB,SAAUnqD,GAC9C,GAAIh0B,KAAK0+E,eAAet7E,QAAU,EAAG,CACjC,IAAI8K,EAAM8lB,EAAgB9lB,IAQ1B,OAPAlO,KAAK+kF,QAAU,KACf/kF,KAAK+gF,gBAAavqE,EAClBxW,KAAKglF,WAAY,EACjBhlF,KAAKilF,eAAiB,EACjBjlF,KAAKw+E,wBACNtwE,EAAIvC,UAAUw9B,oBAEX,CACX,CAEI,OAAO,CAEf,EACO07C,CACX,CAzHgC,CAyH9BhE,GCxJF,IAAI,GAAwC,WACxC,IAAIzsE,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GAqI5C,SAzG+B,SAAUC,GAKrC,SAAS8wE,EAAUlwE,GACf,IAAIzU,EAAQZ,KACR0O,EAAU2G,GAA4B,CAAC,EACvCyvE,EAA+D,EAyBnE,OAxBKA,EAAevG,WAChBuG,EAAevG,SAAW,OAE9B39E,EAAQ6T,EAAOzH,KAAKhN,KAAM8kF,IAAmB9kF,MAKvC+kF,QAAU,KAKhBnkF,EAAMimB,eAAiCrQ,IAArB9H,EAAQ3C,SAAyB2C,EAAQ3C,SAAW,IAKtEnL,EAAM4kF,mBAAgBhvE,EAKtB5V,EAAM6kF,gBAAkB,EACjB7kF,CACX,CAqEA,OAtGA,GAAU2kF,EAAW9wE,GAsCrB8wE,EAAUvgF,UAAUo5E,gBAAkB,SAAUpqD,GAC5C,IAAI0xD,EAAa,EACbL,EAASrlF,KAAK0+E,eAAe,GAC7B4G,EAAStlF,KAAK0+E,eAAe,GAC7B9+D,EAAKylE,EAAO75D,QAAU85D,EAAO95D,QAC7B3L,EAAKwlE,EAAO55D,QAAU65D,EAAO75D,QAE7BgoB,EAAWxxC,KAAKuF,KAAKoY,EAAKA,EAAKC,EAAKA,QACbrJ,IAAvBxW,KAAKwlF,gBACLE,EAAa1lF,KAAKwlF,cAAgB/xC,GAEtCzzC,KAAKwlF,cAAgB/xC,EACrB,IAAIvlC,EAAM8lB,EAAgB9lB,IACtBgZ,EAAOhZ,EAAIvC,UACG,GAAd+5E,IACA1lF,KAAKylF,gBAAkBC,GAG3B,IAAIhzD,EAAmBxkB,EAAIe,cAAc2B,wBACrC+vE,EAAW,EAAqB3gF,KAAK0+E,gBACzCiC,EAAS,IAAMjuD,EAAiBjkB,KAChCkyE,EAAS,IAAMjuD,EAAiBtiB,IAChCpQ,KAAK+kF,QAAU72E,EAAImkB,+BAA+BsuD,GAElDzyE,EAAI6U,SACJmE,EAAKqhB,yBAAyBm9C,EAAY1lF,KAAK+kF,QACnD,EAMAQ,EAAUvgF,UAAUs5E,cAAgB,SAAUtqD,GAC1C,GAAIh0B,KAAK0+E,eAAet7E,OAAS,EAAG,CAChC,IACI8jB,EADM8M,EAAgB9lB,IACXvC,UACXyyB,EAAYp+B,KAAKylF,gBAAkB,EAAI,GAAK,EAEhD,OADAv+D,EAAKkiB,eAAeppC,KAAK6mB,UAAWuX,IAC7B,CACX,CAEI,OAAO,CAEf,EAMAmnD,EAAUvgF,UAAUm5E,gBAAkB,SAAUnqD,GAC5C,GAAIh0B,KAAK0+E,eAAet7E,QAAU,EAAG,CACjC,IAAI8K,EAAM8lB,EAAgB9lB,IAO1B,OANAlO,KAAK+kF,QAAU,KACf/kF,KAAKwlF,mBAAgBhvE,EACrBxW,KAAKylF,gBAAkB,EAClBzlF,KAAKw+E,wBACNtwE,EAAIvC,UAAUw9B,oBAEX,CACX,CAEI,OAAO,CAEf,EACOo8C,CACX,CAxG8B,CAwG5B1E,6BChIE,GAAwC,WACxC,IAAIzsE,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GA8CxCmxE,GAAkC,SAAUlxE,GAQ5C,SAASkxE,EAAiBv0E,EAAMw0E,EAAMC,EAAcC,GAChD,IAAIllF,EAAQ6T,EAAOzH,KAAKhN,KAAMoR,IAASpR,KAmBvC,OAbAY,EAAM2xB,SAAWszD,EAMjBjlF,EAAMglF,KAAOA,EAMbhlF,EAAM2Y,WAAausE,EACZllF,CACX,CACA,OA7BA,GAAU+kF,EAAkBlxE,GA6BrBkxE,CACX,CA/BqC,CA+BnC/D,EAAA,IA0KF,SAlKiC,SAAUntE,GAKvC,SAASsxE,EAAY1wE,GACjB,IAAIzU,EAAQZ,KACR0O,EAAU2G,GAA4B,CAAC,EAiC3C,OAhCAzU,EAAQ6T,EAAOzH,KAAKhN,KAAM,CACtB6O,YAAa,QACX7O,MAKAgmF,oBAAsBt3E,EAAQu3E,mBAC9Bv3E,EAAQu3E,mBACR,GAKNrlF,EAAMu+B,YAAczwB,EAAQ6K,YACtB,KAAAtU,KAAcyJ,EAAQ6K,YACtB,KAKN3Y,EAAMslF,gBAAkB,KAKxBtlF,EAAM+sC,QAAUj/B,EAAQ4T,QAAU,KAKlC1hB,EAAMqR,OAASvD,EAAQuD,OAASvD,EAAQuD,OAAS,KAC1CrR,CACX,CAuHA,OA/JA,GAAUmlF,EAAatxE,GA8CvBsxE,EAAY/gF,UAAUmhF,cAAgB,SAAUP,EAAM1/D,GAClD,IAAI1mB,EAAS0mB,EAAMjU,OAAOzS,OACtB0O,EAAMlO,KAAK6iB,SACXtJ,EAAavZ,KAAKm/B,YACjB5lB,IAEDA,EADWrL,EAAIvC,UACGkO,iBAGtB,IADA,IAAIosE,EAAqBjmF,KAAKgmF,oBACrBx7E,EAAI,EAAGiL,EAAKwwE,EAAmB7iF,OAAQoH,EAAIiL,IAAMjL,EAAG,CACzD,IAAI0kC,EAAS,IAAI+2C,EAAmBz7E,GAChC+nB,EAAWvyB,KAAKomF,iBAAiBl3C,EAAQ1vC,EAAQ,CACjDi+C,kBAAmBlkC,IAEvB,GAAIgZ,GAAYA,EAASnvB,OAAS,EAAG,CAC7BpD,KAAK2tC,UACL3tC,KAAK2tC,QAAQxtC,QACbH,KAAK2tC,QAAQ04C,YAAY9zD,IAE7BvyB,KAAKmR,cAAc,IAAIw0E,GAhHrB,cAgHyEC,EAAMrzD,EAAUhZ,IAC3F,KACJ,CACJ,CACJ,EAIAwsE,EAAY/gF,UAAUshF,mBAAqB,WACvC,IAAIp4E,EAAMlO,KAAK6iB,SACf,GAAI3U,EAAK,CACL,IAAIq4E,EAAWvmF,KAAKiS,OAASjS,KAAKiS,OAAS/D,EAAIe,cAC/CjP,KAAKkmF,gBAAkB,EACnB,SAAOK,EAAUryD,EAAA,OAAgBl0B,KAAKwmF,WAAYxmF,OAClD,SAAOumF,EAAUryD,EAAA,YAAqBl0B,KAAKymF,WAAYzmF,OACvD,SAAOumF,EAAUryD,EAAA,WAAoBl0B,KAAKymF,WAAYzmF,OACtD,SAAOumF,EAAUryD,EAAA,OAAgBl0B,KAAKymF,WAAYzmF,MAE1D,CACJ,EAOA+lF,EAAY/gF,UAAU64E,UAAY,SAAUC,IACnC99E,KAAKs0B,aAAewpD,GACrB99E,KAAKsmF,qBAELtmF,KAAKs0B,cAAgBwpD,GACrB99E,KAAK0mF,uBAETjyE,EAAOzP,UAAU64E,UAAU7wE,KAAKhN,KAAM89E,EAC1C,EAOAiI,EAAY/gF,UAAUmP,OAAS,SAAUjG,GACrClO,KAAK0mF,uBACLjyE,EAAOzP,UAAUmP,OAAOnH,KAAKhN,KAAMkO,GAC/BlO,KAAKs0B,aACLt0B,KAAKsmF,oBAEb,EAQAP,EAAY/gF,UAAUohF,iBAAmB,SAAUl3C,EAAQ7pC,EAAMqJ,GAC7D,IACI,OAECwgC,EAAO0O,aAAav4C,EAAMqJ,EAC/B,CACA,MAAO7M,GACH,OAAO,IACX,CACJ,EAIAkkF,EAAY/gF,UAAU0hF,qBAAuB,WACrC1mF,KAAKkmF,kBACLlmF,KAAKkmF,gBAAgBz2E,QAAQ,OAC7BzP,KAAKkmF,gBAAkB,KAE/B,EAIAH,EAAY/gF,UAAUwhF,WAAa,SAAUtgE,GAEzC,IADA,IAAIygE,EAAQzgE,EAAM0gE,aAAaD,MACtBn8E,EAAI,EAAGiL,EAAKkxE,EAAMvjF,OAAQoH,EAAIiL,IAAMjL,EAAG,CAC5C,IAAIo7E,EAAOe,EAAM3wE,KAAKxL,GAClBq8E,EAAS,IAAIC,WACjBD,EAAOt1E,iBAAiB2iB,EAAA,OAAgBl0B,KAAKmmF,cAAcr3E,KAAK9O,KAAM4lF,IACtEiB,EAAOE,WAAWnB,EACtB,CACJ,EAIAG,EAAY/gF,UAAUyhF,WAAa,SAAUvgE,GACzCA,EAAMnU,kBACNmU,EAAMlU,iBACNkU,EAAM0gE,aAAaI,WAAa,MACpC,EACOjB,CACX,CAjKgC,CAiK9B,GC1PF,IAAI,GAAwC,WACxC,IAAI3xE,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GA2I5C,SAtGuC,SAAUC,GAK7C,SAASwyE,EAAkB5xE,GACvB,IAAIzU,EAAQZ,KACR0O,EAAU2G,GAA4B,CAAC,EA2B3C,OA1BAzU,EAAQ6T,EAAOzH,KAAKhN,KAAoD,IAAcA,MAKhFygF,WAAa/xE,EAAQslD,UAAYtlD,EAAQslD,UAAY6rB,EAK3Dj/E,EAAMmgF,gBAAavqE,EAKnB5V,EAAMsmF,oBAAiB1wE,EAKvB5V,EAAM6kF,gBAAkB,EAKxB7kF,EAAMimB,eAAiCrQ,IAArB9H,EAAQ3C,SAAyB2C,EAAQ3C,SAAW,IAC/DnL,CACX,CAiEA,OAnGA,GAAUqmF,EAAmBxyE,GAuC7BwyE,EAAkBjiF,UAAUo5E,gBAAkB,SAAUpqD,GACpD,GAAK+rD,EAAU/rD,GAAf,CAGA,IAAI9lB,EAAM8lB,EAAgB9lB,IACtBwS,EAAOxS,EAAI2B,UACXuxB,EAASpN,EAAgB3iB,MACzB4qB,EAASmF,EAAO,GAAK1gB,EAAK,GAAK,EAC/Bwb,EAASxb,EAAK,GAAK,EAAI0gB,EAAO,GAC9B4/C,EAAQ/+E,KAAK2H,MAAMsyB,EAAQD,GAC3BkrD,EAAYllF,KAAKuF,KAAKy0B,EAASA,EAASC,EAASA,GACjDhV,EAAOhZ,EAAIvC,UACf,QAAwB6K,IAApBxW,KAAK+gF,WAA0B,CAC/B,IAAIqG,EAAapnF,KAAK+gF,WAAaC,EACnC95D,EAAKyhB,uBAAuBy+C,EAChC,CACApnF,KAAK+gF,WAAaC,OACUxqE,IAAxBxW,KAAKknF,gBACLhgE,EAAKqhB,yBAAyBvoC,KAAKknF,eAAiBC,QAE5B3wE,IAAxBxW,KAAKknF,iBACLlnF,KAAKylF,gBAAkBzlF,KAAKknF,eAAiBC,GAEjDnnF,KAAKknF,eAAiBC,CApBtB,CAqBJ,EAMAF,EAAkBjiF,UAAUs5E,cAAgB,SAAUtqD,GAClD,IAAK+rD,EAAU/rD,GACX,OAAO,EAEX,IACI9M,EADM8M,EAAgB9lB,IACXvC,UACXyyB,EAAYp+B,KAAKylF,gBAAkB,EAAI,GAAK,EAGhD,OAFAv+D,EAAKkiB,eAAeppC,KAAK6mB,UAAWuX,GACpCp+B,KAAKylF,gBAAkB,GAChB,CACX,EAMAwB,EAAkBjiF,UAAUm5E,gBAAkB,SAAUnqD,GACpD,QAAK+rD,EAAU/rD,MAGXh0B,KAAKygF,WAAWzsD,KAChBA,EAAgB9lB,IAAIvC,UAAUw9B,mBAC9BnpC,KAAK+gF,gBAAavqE,EAClBxW,KAAKknF,oBAAiB1wE,GACf,EAKf,EACOywE,CACX,CArGsC,CAqGpCpG,mDC1IE,GAAwC,WACxC,IAAIzsE,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GA2BxC,GAAwB,SAAUC,GASlC,SAAS4yE,EAAOr7E,EAAQs7E,EAAYhlB,GAChC,IAAI1hE,EAAQ6T,EAAOzH,KAAKhN,OAASA,KACjC,QAAmBwW,IAAf8rD,QAA2C9rD,IAAf8wE,EAC5B1mF,EAAMgiE,mBAAmBN,EAAYt2D,OAEpC,CACD,IAAIs6D,EAASghB,GAA0B,EACvC1mF,EAAM2mF,mBAAmBv7E,EAAQs6D,EAAQhE,EAC7C,CACA,OAAO1hE,CACX,CAkMA,OApNA,GAAUymF,EAAQ5yE,GAwBlB4yE,EAAOriF,UAAUgT,MAAQ,WACrB,OAAO,IAAIqvE,EAAOrnF,KAAK+5C,gBAAgBjtC,aAAS0J,EAAWxW,KAAK4iD,OACpE,EAQAykC,EAAOriF,UAAUq6D,eAAiB,SAAUr9D,EAAGD,EAAGu9D,EAAcC,GAC5D,IAAIxlB,EAAkB/5C,KAAK+5C,gBACvBn6B,EAAK5d,EAAI+3C,EAAgB,GACzBl6B,EAAK9d,EAAIg4C,EAAgB,GACzBzG,EAAkB1zB,EAAKA,EAAKC,EAAKA,EACrC,GAAIyzB,EAAkBisB,EAAoB,CACtC,GAAwB,IAApBjsB,EACA,IAAK,IAAI9oC,EAAI,EAAGA,EAAIxK,KAAKqnC,SAAU78B,EAC/B80D,EAAa90D,GAAKuvC,EAAgBvvC,OAGrC,CACD,IAAIid,EAAQznB,KAAKsyC,YAAcrwC,KAAKuF,KAAK8rC,GAGzC,IAFAgsB,EAAa,GAAKvlB,EAAgB,GAAKtyB,EAAQ7H,EAC/C0/C,EAAa,GAAKvlB,EAAgB,GAAKtyB,EAAQ5H,EACtCrV,EAAI,EAAGA,EAAIxK,KAAKqnC,SAAU78B,EAC/B80D,EAAa90D,GAAKuvC,EAAgBvvC,EAE1C,CAEA,OADA80D,EAAal8D,OAASpD,KAAKqnC,OACpBiM,CACX,CAEI,OAAOisB,CAEf,EAMA8nB,EAAOriF,UAAUw3B,WAAa,SAAUx6B,EAAGD,GACvC,IAAIg4C,EAAkB/5C,KAAK+5C,gBACvBn6B,EAAK5d,EAAI+3C,EAAgB,GACzBl6B,EAAK9d,EAAIg4C,EAAgB,GAC7B,OAAOn6B,EAAKA,EAAKC,EAAKA,GAAM7f,KAAKwnF,mBACrC,EAMAH,EAAOriF,UAAU2/B,UAAY,WACzB,OAAO3kC,KAAK+5C,gBAAgBjtC,MAAM,EAAG9M,KAAKqnC,OAC9C,EAMAggD,EAAOriF,UAAU26D,cAAgB,SAAUvjD,GACvC,IAAI29B,EAAkB/5C,KAAK+5C,gBACvBusB,EAASvsB,EAAgB/5C,KAAKqnC,QAAU0S,EAAgB,GAC5D,OAAO,IAAAnd,gBAAemd,EAAgB,GAAKusB,EAAQvsB,EAAgB,GAAKusB,EAAQvsB,EAAgB,GAAKusB,EAAQvsB,EAAgB,GAAKusB,EAAQlqD,EAC9I,EAMAirE,EAAOriF,UAAUstC,UAAY,WACzB,OAAOrwC,KAAKuF,KAAKxH,KAAKwnF,oBAC1B,EAKAH,EAAOriF,UAAUwiF,kBAAoB,WACjC,IAAI5nE,EAAK5f,KAAK+5C,gBAAgB/5C,KAAKqnC,QAAUrnC,KAAK+5C,gBAAgB,GAC9Dl6B,EAAK7f,KAAK+5C,gBAAgB/5C,KAAKqnC,OAAS,GAAKrnC,KAAK+5C,gBAAgB,GACtE,OAAOn6B,EAAKA,EAAKC,EAAKA,CAC1B,EAMAwnE,EAAOriF,UAAUwhC,QAAU,WACvB,OAAOC,GAAA,cACX,EAOA4gD,EAAOriF,UAAU+6D,iBAAmB,SAAU3jD,GAC1C,IAAIqrE,EAAeznF,KAAKwd,YACxB,IAAI,IAAAmf,YAAWvgB,EAAQqrE,GAAe,CAClC,IAAIz7E,EAAShM,KAAK2kC,YAClB,OAAIvoB,EAAO,IAAMpQ,EAAO,IAAMoQ,EAAO,IAAMpQ,EAAO,IAG9CoQ,EAAO,IAAMpQ,EAAO,IAAMoQ,EAAO,IAAMpQ,EAAO,KAG3C,IAAAuuC,eAAcn+B,EAAQpc,KAAK0/D,qBAAqB5wD,KAAK9O,MAChE,CACA,OAAO,CACX,EAMAqnF,EAAOriF,UAAUmjC,UAAY,SAAUn8B,GACnC,IAAIq7B,EAASrnC,KAAKqnC,OACdi/B,EAAStmE,KAAK+5C,gBAAgB1S,GAAUrnC,KAAK+5C,gBAAgB,GAC7DA,EAAkB/tC,EAAOc,QAC7BitC,EAAgB1S,GAAU0S,EAAgB,GAAKusB,EAC/C,IAAK,IAAI97D,EAAI,EAAGA,EAAI68B,IAAU78B,EAC1BuvC,EAAgB1S,EAAS78B,GAAKwB,EAAOxB,GAEzCxK,KAAK4iE,mBAAmB5iE,KAAK4iD,OAAQ7I,GACrC/5C,KAAK2Y,SACT,EASA0uE,EAAOriF,UAAUuiF,mBAAqB,SAAUv7E,EAAQs6D,EAAQhE,GAC5DtiE,KAAKsjE,UAAUhB,EAAYt2D,EAAQ,GAC9BhM,KAAK+5C,kBACN/5C,KAAK+5C,gBAAkB,IAG3B,IAAIA,EAAkB/5C,KAAK+5C,gBACvB3Y,GAAS,EAAAqkC,GAAA,IAAkB1rB,EAAiB,EAAG/tC,EAAQhM,KAAKqnC,QAChE0S,EAAgB3Y,KAAY2Y,EAAgB,GAAKusB,EACjD,IAAK,IAAI97D,EAAI,EAAGiL,EAAKzV,KAAKqnC,OAAQ78B,EAAIiL,IAAMjL,EACxCuvC,EAAgB3Y,KAAY2Y,EAAgBvvC,GAEhDuvC,EAAgB32C,OAASg+B,EACzBphC,KAAK2Y,SACT,EACA0uE,EAAOriF,UAAUw6C,eAAiB,WAC9B,OAAO,IACX,EACA6nC,EAAOriF,UAAU29D,eAAiB,SAAUngD,EAAa8/C,GAAc,EAMvE+kB,EAAOriF,UAAU0iF,UAAY,SAAUphB,GACnCtmE,KAAK+5C,gBAAgB/5C,KAAKqnC,QAAUrnC,KAAK+5C,gBAAgB,GAAKusB,EAC9DtmE,KAAK2Y,SACT,EAQA0uE,EAAOriF,UAAU0jB,OAAS,SAAU2qB,EAAOtQ,GACvC,IAAI/2B,EAAShM,KAAK2kC,YACd0C,EAASrnC,KAAKsnC,YAClBtnC,KAAKmoC,WAAU,SAAOn8B,EAAQ,EAAGA,EAAO5I,OAAQikC,EAAQgM,EAAOtQ,EAAQ/2B,IACvEhM,KAAK2Y,SACT,EAQA0uE,EAAOriF,UAAUg7D,UAAY,SAAU/jC,EAAQC,GAC3C,IAAIlwB,EAAShM,KAAK2kC,YACd0C,EAASrnC,KAAKsnC,YAClBtnC,KAAKmoC,WAAU,SAAUn8B,EAAQ,EAAGA,EAAO5I,OAAQikC,EAAQpL,EAAQC,EAAQlwB,IAC3EhM,KAAK2Y,SACT,EACO0uE,CACX,CAtN2B,CAsNzB1hB,GAAA,IAuBF,GAAO3gE,UAAUuiB,UACjB,8HCzQI,GAAwC,WACxC,IAAInT,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GAyHxC,GACO,QADP,GAEa,aAFb,GAGS,UAHT,GAIQ,SAKRmzE,GAMW,YAmBXC,GAA2B,SAAUnzE,GAMrC,SAASmzE,EAAUx2E,EAAM+P,GACrB,IAAIvgB,EAAQ6T,EAAOzH,KAAKhN,KAAMoR,IAASpR,KAOvC,OADAY,EAAMugB,QAAUA,EACTvgB,CACX,CACA,OAfA,GAAUgnF,EAAWnzE,GAedmzE,CACX,CAjB8B,CAiB5BhG,EAAA,IAm6BF,SA35B0B,SAAUntE,GAKhC,SAASozE,EAAKn5E,GACV,IAm4BS0C,EACT02E,EAp4BIlnF,EAAQZ,KACR8kF,EAA+D,EAC9DA,EAAevG,WAChBuG,EAAevG,SAAW,OAE9B39E,EAAQ6T,EAAOzH,KAAKhN,KAAM8kF,IAAmB9kF,MAKvC+nF,eAAgB,EAKtBnnF,EAAMonF,QAAU,KAKhBpnF,EAAMqnF,aAKNrnF,EAAMsnF,cAKNtnF,EAAMunF,WAAY,EAMlBvnF,EAAM+sC,QAAUj/B,EAAQ4T,OAAS5T,EAAQ4T,OAAS,KAMlD1hB,EAAMu8E,UAAYzuE,EAAQ6jB,SAAW7jB,EAAQ6jB,SAAW,KAMxD3xB,EAAMwnF,eAAiB15E,EAAQ25E,cAAgB35E,EAAQ25E,cAAgB,GAMvEznF,EAAM0nF,MAAkE55E,EAAY,KAMpF9N,EAAMojF,QAu0BG5yE,EAv0BaxQ,EAAM0nF,SAy0BnB7hD,GAAA,eAAsBr1B,IAASq1B,GAAA,oBACxCqhD,EAAO,GAEF12E,IAASq1B,GAAA,qBACdr1B,IAASq1B,GAAA,0BACTqhD,EAAO,GAEF12E,IAASq1B,GAAA,iBACdr1B,IAASq1B,GAAA,sBACTqhD,EAAO,GAEF12E,IAASq1B,GAAA,iBACdqhD,EAAO,IAEiB,GAh1BxBlnF,EAAM2nF,aAAe75E,EAAQ85E,UAQ7B5nF,EAAM6nF,WAAa/5E,EAAQg6E,UACrBh6E,EAAQg6E,UACR9nF,EAAMojF,QAAU,GACZ,EACA,EAOVpjF,EAAM+nF,WAAaj6E,EAAQk6E,UAAYl6E,EAAQk6E,UAAYnvD,IAM3D74B,EAAMioF,iBAAmBn6E,EAAQo6E,gBAC3Bp6E,EAAQo6E,gBACR,KACN,IAgtBAC,EAhtBIC,EAAmBt6E,EAAQs6E,iBAC/B,IAAKA,EACD,GAAIpoF,EAAM0nF,QAAU7hD,GAAA,eAOhBuiD,EAAmB,SAAUxmE,EAAaymE,EAAc1vE,GACpD,IAAI84B,EAAS42C,GAEP,IAAI,GAAO,CAACvwB,IAAKA,MACnB1sD,GAAS,KAAAsnB,oBAAmB9Q,EAAY,GAAIjJ,GAC5C2vE,GAAgB,QAA0Bl9E,GAAQ,KAAAsnB,oBAAmB9Q,EAAY,GAAIjJ,IACzF84B,EAAOk1C,mBAAmBv7E,EAAQ/J,KAAKuF,KAAK0hF,IAC5C,IAAIxiD,GAAiB,KAAAC,qBAIrB,OAHID,GACA2L,EAAO9qB,UAAUhO,EAAYmtB,GAE1B2L,CACX,MAEC,CACD,IAAI82C,EACAC,EAASxoF,EAAMojF,MACfoF,IAAW,GACXD,EAAgBtlC,GAAA,QAEXulC,IAAW,GAChBD,EAAgBplC,GAAA,QAEXqlC,IAAW,KAChBD,EAAgB,MAQpBH,EAAmB,SAAUxmE,EAAaymE,EAAc1vE,GACpD,IAAI3B,EAAWqxE,EAoBf,OAnBIrxE,EACIwxE,IAAW,GACP5mE,EAAY,GAAGpf,OAEfwU,EAAS+qD,eAAe,CACpBngD,EAAY,GAAGhQ,OAAO,CAACgQ,EAAY,GAAG,OAI1C5K,EAAS+qD,eAAe,IAI5B/qD,EAAS+qD,eAAengD,GAI5B5K,EAAW,IAAIuxE,EAAc3mE,GAE1B5K,CACX,CACJ,CAkGJ,OA5FAhX,EAAMyoF,kBAAoBL,EAK1BpoF,EAAM0oF,sBAC0B9yE,IAA5B9H,EAAQ66E,gBAAgC76E,EAAQ66E,gBAAkB,IAOtE3oF,EAAM4oF,kBAAoB,KAM1B5oF,EAAM6oF,eAAiB,KAMvB7oF,EAAM8oF,aAAe,KAMrB9oF,EAAM+oF,cAAgB,KAMtB/oF,EAAMgpF,YAAc,KAMpBhpF,EAAMipF,kBAAoB,KAQ1BjpF,EAAMkpF,uBAAyBp7E,EAAQq7E,eACjCr7E,EAAQq7E,eAAiBr7E,EAAQq7E,eACjC,GAMNnpF,EAAMopF,SAAW,IAAIlS,GAAA,QAAY,CAC7Bx1D,OAAQ,IAAI,WAAa,CACrBgxD,iBAAiB,EACjB3/B,QAAOjlC,EAAQilC,OAAQjlC,EAAQilC,QAEnC1jC,MAAOvB,EAAQuB,MAAQvB,EAAQuB,OA0kBnC84E,GAAS,KAAAkB,sBACN,SAAU9oE,EAAS9E,GACtB,OAAO0sE,EAAO5nE,EAAQ9I,cAAcmuB,UACxC,GA5kBQkpC,wBAAwB,IAO5B9uE,EAAM2W,cAAgB7I,EAAQ62C,aAK9B3kD,EAAM6/E,WAAa/xE,EAAQslD,UAAYtlD,EAAQslD,UAAY4rB,EAK3Dh/E,EAAMspF,mBACFx7E,EAAQy7E,SACRvpF,EAAMspF,mBAAqB1K,EAG3B5+E,EAAMspF,mBAAqBx7E,EAAQ07E,kBAC7B17E,EAAQ07E,kBACRvK,EAEVj/E,EAAM2Q,kBAAiB,QAAmB,GAA6B3Q,EAAMypF,cACtEzpF,CACX,CAuiBA,OA9yBA,GAAUinF,EAAMpzE,GA8QhBozE,EAAK7iF,UAAUmP,OAAS,SAAUjG,GAC9BuG,EAAOzP,UAAUmP,OAAOnH,KAAKhN,KAAMkO,GACnClO,KAAKqqF,cACT,EAMAxC,EAAK7iF,UAAUslF,WAAa,WACxB,OAAOtqF,KAAKgqF,QAChB,EAOAnC,EAAK7iF,UAAU6J,YAAc,SAAUqX,GAC/BA,EAAMkD,cAAchY,OAAS8iB,EAAA,eAE7BhO,EAAMlU,iBAEVhS,KAAKmoF,UACDnoF,KAAKgkF,QAAU,IAAchkF,KAAKkqF,mBAAmBhkE,GACzD,IAAIqkE,EAAOrkE,EAAM9U,OAAS,gBACtB4tE,GAAO,EA8CX,OA7CKh/E,KAAKmoF,WACNnoF,KAAKkoF,eACLhiE,EAAM9U,OAAS,kBACLzR,KAAKC,MACLI,KAAKkoF,eAAiBloF,KAAKspF,kBACjCtpF,KAAKgoF,QAAU9hE,EAAM7U,MACrBrR,KAAK+nF,eAAiB/nF,KAAKmoF,UAC3BoC,GAAO,GAGPvqF,KAAKkoF,mBAAgB1xE,EAErBxW,KAAK+nF,oBAAuCvxE,IAAtBxW,KAAKioF,eAC3B7nF,aAAaJ,KAAKioF,cAClBjoF,KAAKioF,kBAAezxE,IAGxBxW,KAAKmoF,WACLjiE,EAAM9U,OAAS,iBACS,OAAxBpR,KAAKypF,gBACLzpF,KAAKwqF,cAActkE,EAAMja,YACzB+yE,GAAO,GAEFh/E,KAAKmoF,WACVjiE,EAAM9U,OAAS,gBACf4tE,GAAO,EAEFuL,GACLvL,EAAO94D,EAAM9U,OAAS,kBACVpR,KAAKmoF,WACbnoF,KAAKorB,mBAAmBlF,GACpBlmB,KAAK+nF,eAEL7hE,EAAMlU,mBAG8B,SAAnCkU,EAAMkD,cAAc42D,aACxB95D,EAAM9U,OAAS,sBACUoF,IAAtBxW,KAAKioF,eACTjoF,KAAKorB,mBAAmBlF,GAGvBA,EAAM9U,OAAS,eACpB4tE,GAAO,GAEJvqE,EAAOzP,UAAU6J,YAAY7B,KAAKhN,KAAMkmB,IAAU84D,CAC7D,EAMA6I,EAAK7iF,UAAUm5E,gBAAkB,SAAUj4D,GAEvC,OADAlmB,KAAK+nF,eAAiB/nF,KAAKmoF,UACvBnoF,KAAKmoF,WACLnoF,KAAKgoF,QAAU9hE,EAAM7U,MAChBrR,KAAKwpF,mBACNxpF,KAAKyqF,cAAcvkE,IAEhB,GAEFlmB,KAAKygF,WAAWv6D,IACrBlmB,KAAKkoF,cAAgBvoF,KAAKC,MAC1BI,KAAKioF,aAAepoF,WAAW,WAC3BG,KAAKorB,mBAAmB,IAAIjC,GAAA,EAAgB,gBAAiCjD,EAAMhY,IAAKgY,EAAMkD,eAAe,EAAOlD,EAAMjG,YAC9H,EAAEnR,KAAK9O,MAAOA,KAAKspF,kBACnBtpF,KAAKgoF,QAAU9hE,EAAM7U,OACd,IAGPrR,KAAKkoF,mBAAgB1xE,GACd,EAEf,EAMAqxE,EAAK7iF,UAAUs5E,cAAgB,SAAUp4D,GACrC,IAAI84D,GAAO,EACPh/E,KAAKioF,eACL7nF,aAAaJ,KAAKioF,cAClBjoF,KAAKioF,kBAAezxE,GAExBxW,KAAKorB,mBAAmBlF,GACxB,IAAIwkE,EAAa1qF,KAAKgkF,QAAU,GA2BhC,OA1BIhkF,KAAK+nF,eACA/nF,KAAKwpF,kBAMDxpF,KAAKmoF,WAAauC,EACvB1qF,KAAK2qF,gBAEA3qF,KAAK4qF,UAAU1kE,GAChBlmB,KAAK6oF,iBAAiB3iE,IACtBlmB,KAAK2qF,gBAIT3qF,KAAKwqF,cAActkE,EAAMja,aAdzBjM,KAAKyqF,cAAcvkE,GACflmB,KAAKgkF,QAAU,IACfhkF,KAAK2qF,iBAcb3L,GAAO,GAEFh/E,KAAKmoF,WACVnoF,KAAK6qF,gBAEJ7L,GAAQh/E,KAAKuoF,YACdriE,EAAMnU,kBAEHitE,CACX,EAMA6I,EAAK7iF,UAAUomB,mBAAqB,SAAUlF,GAC1C,GAAIlmB,KAAKgoF,WACFhoF,KAAKmoF,WAAanoF,KAAK+nF,eACrB/nF,KAAKmoF,YAAcnoF,KAAK+nF,eAAiB,CAC9C,IAAI+C,EAAS9qF,KAAKgoF,QACd+C,EAAU7kE,EAAM7U,MAChBuO,EAAKkrE,EAAO,GAAKC,EAAQ,GACzBlrE,EAAKirE,EAAO,GAAKC,EAAQ,GACzBz3C,EAAkB1zB,EAAKA,EAAKC,EAAKA,EAIrC,GAHA7f,KAAK+nF,cAAgB/nF,KAAKmoF,UACpB70C,EAAkBtzC,KAAK8pF,uBACvBx2C,GAAmBtzC,KAAK8pF,wBACzB9pF,KAAK+nF,cACN,MAER,CACI/nF,KAAKwpF,kBACLxpF,KAAKgrF,eAAe9kE,GAGpBlmB,KAAKirF,2BAA2B/kE,EAExC,EAOA2hE,EAAK7iF,UAAU4lF,UAAY,SAAU1kE,GACjC,IAAIglE,GAAK,EACT,GAAIlrF,KAAKypF,eAAgB,CACrB,IAAI0B,GAAkB,EAClBC,EAA+B,CAACprF,KAAKwpF,mBACzC,GAAIxpF,KAAKgkF,QAAU,GACfmH,EAAkBnrF,KAAK2pF,cAAcvmF,OAASpD,KAAKyoF,gBAElD,GAAIzoF,KAAKgkF,QAAU,GAAc,CAClC,IAAIqH,EAA6CrrF,KAAkB,cACnEmrF,EAAkBE,EAAa,GAAGjoF,OAASpD,KAAKyoF,WAChD2C,EAA+B,CAC3BC,EAAa,GAAG,GAChBA,EAAa,GAAGA,EAAa,GAAGjoF,OAAS,GAEjD,CACA,GAAI+nF,EAEA,IADA,IAAIj9E,EAAMgY,EAAMhY,IACP1D,EAAI,EAAGiL,EAAK21E,EAA6BhoF,OAAQoH,EAAIiL,EAAIjL,IAAK,CACnE,IAAI8gF,EAAmBF,EAA6B5gF,GAChD+gF,EAAcr9E,EAAIklB,uBAAuBk4D,GACzCj6E,EAAQ6U,EAAM7U,MACduO,EAAKvO,EAAM,GAAKk6E,EAAY,GAC5B1rE,EAAKxO,EAAM,GAAKk6E,EAAY,GAC5BlD,EAAgBroF,KAAKmoF,UAAY,EAAInoF,KAAKooF,eAE9C,GADA8C,EAAKjpF,KAAKuF,KAAKoY,EAAKA,EAAKC,EAAKA,IAAOwoE,EAC7B,CACJroF,KAAKwpF,kBAAoB8B,EACzB,KACJ,CACJ,CAER,CACA,OAAOJ,CACX,EAKArD,EAAK7iF,UAAUimF,2BAA6B,SAAU/kE,GAClD,IAAI1D,EAAc0D,EAAMja,WAAWa,QAC9B9M,KAAK0pF,aAKgB1pF,KAAK0pF,aAAarxE,cACxBsqD,eAAengD,IAL/BxiB,KAAK0pF,aAAe,IAAItyE,GAAA,QAAQ,IAAIysC,GAAA,QAAMrhC,IAC1CxiB,KAAKwrF,wBAMb,EAMA3D,EAAK7iF,UAAUylF,cAAgB,SAAUvkE,GACrC,IAAI6R,EAAQ7R,EAAMja,WACdsN,EAAa2M,EAAMhY,IAAIvC,UAAUkO,gBACrC7Z,KAAKwpF,kBAAoBzxD,EACrB/3B,KAAKgkF,QAAU,GACfhkF,KAAK2pF,cAAgB5xD,EAAMjrB,QAEtB9M,KAAKgkF,QAAU,IACpBhkF,KAAK2pF,cAAgB,CAAC,CAAC5xD,EAAMjrB,QAASirB,EAAMjrB,UAC5C9M,KAAK6pF,kBAAoB7pF,KAAK2pF,cAAc,IAG5C3pF,KAAK2pF,cAAgB,CAAC5xD,EAAMjrB,QAASirB,EAAMjrB,SAE3C9M,KAAK6pF,oBACL7pF,KAAK4pF,YAAc,IAAIxyE,GAAA,QAAQ,IAAI2sC,GAAA,QAAW/jD,KAAK6pF,qBAEvD,IAAIjyE,EAAW5X,KAAKqpF,kBAAkBrpF,KAAK2pF,mBAAenzE,EAAW+C,GACrEvZ,KAAKypF,eAAiB,IAAIryE,GAAA,QACtBpX,KAAKuX,eACLvX,KAAKypF,eAAetxE,gBAAgBnY,KAAKuX,eAE7CvX,KAAKypF,eAAe5xE,YAAYD,GAChC5X,KAAKwrF,wBACLxrF,KAAKmR,cAAc,IAAIy2E,GAAUD,GAAyB3nF,KAAKypF,gBACnE,EAMA5B,EAAK7iF,UAAUgmF,eAAiB,SAAU9kE,GACtC,IAGI1D,EAAa9iB,EAyBb+rF,EA5BAx/E,EAAaia,EAAMja,WACnB2L,EAAW5X,KAAKypF,eAAepxE,cAC/BkB,EAAa2M,EAAMhY,IAAIvC,UAAUkO,gBA2BrC,GAzBI7Z,KAAKgkF,QAAU,GACftkF,EAAOM,KAAK2pF,cAEP3pF,KAAKgkF,QAAU,IAEpBtkF,GADA8iB,EAA4CxiB,KAAkB,cAAE,IAC7CwiB,EAAYpf,OAAS,GACpCpD,KAAK4qF,UAAU1kE,KAEfja,EAAajM,KAAKwpF,kBAAkB18E,UAKxCpN,GADA8iB,EAAcxiB,KAAK2pF,eACAnnE,EAAYpf,OAAS,GAE5C1D,EAAK,GAAKuM,EAAW,GACrBvM,EAAK,GAAKuM,EAAW,GACrBjM,KAAKqpF,kBAC0BrpF,KAAkB,cAAG4X,EAAU2B,GAC1DvZ,KAAK0pF,cACiB1pF,KAAK0pF,aAAarxE,cACxBsqD,eAAe12D,GAI/B2L,EAAS4uB,WAAaC,GAAA,iBACtBzmC,KAAKgkF,QAAU,GAAc,CACxBhkF,KAAK4pF,cACN5pF,KAAK4pF,YAAc,IAAIxyE,GAAA,SAE3B,IAAIi1C,EAAOz0C,EAASuuD,cAAc,IAClCslB,EAAiBzrF,KAAK4pF,YAAYvxE,gBAM9BozE,EAAe7oB,mBAAmBvW,EAAK9M,YAAa8M,EAAKvlB,sBACzD2kD,EAAe9yE,YALf8yE,EAAiB,IAAI1nC,GAAA,QAAWsI,EAAKvlB,qBAAsBulB,EAAK9M,aAChEv/C,KAAK4pF,YAAY/xE,YAAY4zE,GAMrC,MACSzrF,KAAK6pF,oBACV4B,EAAiBzrF,KAAK4pF,YAAYvxE,eACnBsqD,eAAe3iE,KAAK6pF,mBAEvC7pF,KAAKwrF,uBACT,EAMA3D,EAAK7iF,UAAUwlF,cAAgB,SAAUv+E,GACrC,IAEIy/E,EACAlpE,EAHA5K,EAAW5X,KAAKypF,eAAepxE,cAC/BkB,EAAavZ,KAAK6iB,SAASlX,UAAUkO,gBAGrC7Z,KAAKgkF,QAAU,IACfhkF,KAAKwpF,kBAAoBv9E,EAAWa,SACpC0V,EAA4CxiB,KAAkB,eAC9CoD,QAAUpD,KAAK2oF,aACvB3oF,KAAKmoF,UACL3lE,EAAYvO,MAGZy3E,GAAO,GAGflpE,EAAYlQ,KAAKrG,EAAWa,SAC5B9M,KAAKqpF,kBAAkB7mE,EAAa5K,EAAU2B,IAEzCvZ,KAAKgkF,QAAU,MACpBxhE,EAA4CxiB,KAAkB,cAAE,IAChDoD,QAAUpD,KAAK2oF,aACvB3oF,KAAKmoF,UACL3lE,EAAYvO,MAGZy3E,GAAO,GAGflpE,EAAYlQ,KAAKrG,EAAWa,SACxB4+E,IACA1rF,KAAKwpF,kBAAoBhnE,EAAY,IAEzCxiB,KAAKqpF,kBAAkBrpF,KAAK2pF,cAAe/xE,EAAU2B,IAEzDvZ,KAAKwrF,wBACDE,GACA1rF,KAAK2qF,eAEb,EAKA9C,EAAK7iF,UAAU2mF,gBAAkB,WAC7B,GAAK3rF,KAAKypF,eAAV,CAGA,IAEIjnE,EAFA5K,EAAW5X,KAAKypF,eAAepxE,cAC/BkB,EAAavZ,KAAK6iB,SAASlX,UAAUkO,gBAIrC7Z,KAAKgkF,QAAU,KACfxhE,EAA4CxiB,KAAkB,eAClDmW,QAAQ,EAAG,GACvBnW,KAAKqpF,kBAAkB7mE,EAAa5K,EAAU2B,GAC1CiJ,EAAYpf,QAAU,IACtBpD,KAAKwpF,kBAAoBhnE,EAAYA,EAAYpf,OAAS,GAAG0J,UAG5D9M,KAAKgkF,QAAU,MACpBxhE,EAA4CxiB,KAAkB,cAAE,IACpDmW,QAAQ,EAAG,GACNnW,KAAK4pF,YAAYvxE,cACnBsqD,eAAengD,GAC9BxiB,KAAKqpF,kBAAkBrpF,KAAK2pF,cAAe/xE,EAAU2B,IAE9B,IAAvBiJ,EAAYpf,QACZpD,KAAK6qF,eAET7qF,KAAKwrF,uBAxBL,CAyBJ,EAOA3D,EAAK7iF,UAAU2lF,cAAgB,WAC3B,IAAIiB,EAAgB5rF,KAAK6rF,gBACzB,GAAKD,EAAL,CAGA,IAAIppE,EAAcxiB,KAAK2pF,cACnB/xE,EAAWg0E,EAAcvzE,cACzBkB,EAAavZ,KAAK6iB,SAASlX,UAAUkO,gBACrC7Z,KAAKgkF,QAAU,IAEfxhE,EAAYvO,MACZjU,KAAKqpF,kBAAkB7mE,EAAa5K,EAAU2B,IAEzCvZ,KAAKgkF,QAAU,KAES,EAAc,GAAG/vE,MAC9CjU,KAAKqpF,kBAAkB7mE,EAAa5K,EAAU2B,GAC9CiJ,EAAc5K,EAAS4nC,kBAGvBx/C,KAAKsoF,QAAU7hD,GAAA,oBACfmlD,EAAc/zE,YAAY,IAAIssC,GAAA,EAAW,CAA+B,KAEnEnkD,KAAKsoF,QAAU7hD,GAAA,0BACpBmlD,EAAc/zE,YAAY,IAAIwsC,GAAA,EAAgB,CAA8B,KAEvErkD,KAAKsoF,QAAU7hD,GAAA,uBACpBmlD,EAAc/zE,YAAY,IAAI0sC,GAAA,EAAa,CAA8B,KAG7EvkD,KAAKmR,cAAc,IAAIy2E,GAjuBlB,UAiuBmDgE,IAEpD5rF,KAAKm9E,WACLn9E,KAAKm9E,UAAU7qE,KAAKs5E,GAEpB5rF,KAAK2tC,SACL3tC,KAAK2tC,QAAQm+C,WAAWF,EAhC5B,CAkCJ,EAMA/D,EAAK7iF,UAAU6mF,cAAgB,WAC3B7rF,KAAKwpF,kBAAoB,KACzB,IAAIoC,EAAgB5rF,KAAKypF,eAKzB,OAJAzpF,KAAKypF,eAAiB,KACtBzpF,KAAK0pF,aAAe,KACpB1pF,KAAK4pF,YAAc,KACnB5pF,KAAKgqF,SAASznE,YAAYpiB,OAAM,GACzByrF,CACX,EAKA/D,EAAK7iF,UAAU6lF,aAAe,WAC1B,IAAIe,EAAgB5rF,KAAK6rF,gBACrBD,GACA5rF,KAAKmR,cAAc,IAAIy2E,GAzvBpB,YAyvBuDgE,GAElE,EAUA/D,EAAK7iF,UAAU+mF,kBAAoB,SAAUvpE,GACzC,IAAIslE,EAAO9nF,KAAKgkF,MACZqH,EAAe,GACfvD,IAAS,GACTuD,EAA4CrrF,KAAK2pF,cAE5C7B,IAAS,KACduD,EACIrrF,KAAK2pF,eAAiB3pF,KAAK2pF,cAAcvmF,OACLpD,KAAkB,cAAE,GAClD,IAKd,IAFA,IAAIgsF,EAASX,EAAap3E,MAEjBzJ,EAAI,EAAGA,EAAIgY,EAAYpf,OAAQoH,IACpCxK,KAAKwqF,cAAchoE,EAAYhY,IAGnCxK,KAAKwqF,cAAcwB,EACvB,EAaAnE,EAAK7iF,UAAU8O,OAAS,SAAUqN,GAC9B,IACIm+B,EADWn+B,EAAQ9I,cAEvBrY,KAAKypF,eAAiBtoE,EACtBnhB,KAAK2pF,cAAgBrqC,EAAWE,iBAChC,IAAI9/C,EAAOM,KAAK2pF,cAAc3pF,KAAK2pF,cAAcvmF,OAAS,GAC1DpD,KAAKwpF,kBAAoB9pF,EAAKoN,QAC9B9M,KAAK2pF,cAAcr3E,KAAK5S,EAAKoN,SAC7B9M,KAAKwrF,wBACLxrF,KAAKmR,cAAc,IAAIy2E,GAAUD,GAAyB3nF,KAAKypF,gBACnE,EAKA5B,EAAK7iF,UAAUwmF,sBAAwB,WACnC,IAAIS,EAAiB,GACjBjsF,KAAKypF,gBACLwC,EAAe35E,KAAKtS,KAAKypF,gBAEzBzpF,KAAK4pF,aACLqC,EAAe35E,KAAKtS,KAAK4pF,aAEzB5pF,KAAK0pF,cACLuC,EAAe35E,KAAKtS,KAAK0pF,cAE7B,IAAIwC,EAAgBlsF,KAAKgqF,SAASznE,YAClC2pE,EAAc/rF,OAAM,GACpB+rF,EAAc7F,YAAY4F,EAC9B,EAIApE,EAAK7iF,UAAUqlF,aAAe,WAC1B,IAAIn8E,EAAMlO,KAAK6iB,SACXi7D,EAAS99E,KAAKs0B,YACbpmB,GAAQ4vE,GACT99E,KAAK6qF,eAET7qF,KAAKgqF,SAAS71E,OAAO2pE,EAAS5vE,EAAM,KACxC,EACO25E,CACX,CAhzByB,CAgzBvBhH,GCp+BF,IAAI,GAAwC,WACxC,IAAIzsE,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GAiExC23E,GAA6B,SAAU13E,GAKvC,SAAS03E,EAAY/vE,GACjB,IAAIxb,EAAQ6T,EAAOzH,KAAKhN,KAbb,kBAaqDA,KAOhE,OADAY,EAAMwb,OAASA,EACRxb,CACX,CACA,OAdA,GAAUurF,EAAa13E,GAchB03E,CACX,CAhBgC,CAgB9BvK,EAAA,IAkWF,SAASwK,KACL,IAAIn8E,GAAQ,KAAAg6E,sBACZ,OAAO,SAAU9oE,EAAS9E,GACtB,OAAOpM,EAAMw2B,GAAA,cACjB,CACJ,CAKA,SAAS4lD,GAAgBC,GACrB,OAAO,SAAUrsC,GACb,OAAO,IAAAlH,gBAAe,CAACuzC,EAAYrsC,GACvC,CACJ,CAMA,SAASssC,GAAeC,EAASC,GAC7B,OAAID,EAAQ,IAAMC,EAAQ,GACf,SAAUxsC,GACb,OAAO,IAAAlH,gBAAe,CAACyzC,EAAS,CAACvsC,EAAM,GAAIwsC,EAAQ,KACvD,EAEKD,EAAQ,IAAMC,EAAQ,GACpB,SAAUxsC,GACb,OAAO,IAAAlH,gBAAe,CAACyzC,EAAS,CAACC,EAAQ,GAAIxsC,EAAM,KACvD,EAGO,IAEf,CAyBA,SAnZ4B,SAAUxrC,GAKlC,SAASi4E,EAAOr3E,GACZ,IAwUApF,EAxUIrP,EAAQZ,KACR0O,EAAU2G,GAAe,CAAC,EAmF9B,OAlFAzU,EAAQ6T,EAAOzH,KAAKhN,KAAoD,IAAcA,MAMhFygF,WAAa/xE,EAAQslD,UAAYtlD,EAAQslD,UAAYwrB,EAM3D5+E,EAAM+9D,QAAU,KAMhB/9D,EAAM+rF,gBAAkB,KAMxB/rF,EAAMgsF,qBACyBp2E,IAA3B9H,EAAQm+E,eAA+Bn+E,EAAQm+E,eAAiB,GAMpEjsF,EAAMksF,kBAAmB,EAMzBlsF,EAAMmsF,eAAiB,KAMvBnsF,EAAMosF,eAAiB,KAClB33E,IACDA,EAAc,CAAC,GAOnBzU,EAAMqsF,eAAiB,IAAInV,GAAA,QAAY,CACnCx1D,OAAQ,IAAI,WAAa,CACrBgxD,iBAAiB,EACjB3/B,QAASt+B,EAAYs+B,QAEzB1jC,MAAOoF,EAAY63E,SACb73E,EAAY63E,UA4QtBj9E,GAAQ,KAAAg6E,sBACL,SAAU9oE,EAAS9E,GACtB,OAAOpM,EAAMw2B,GAAA,gBACjB,GA7QQgpC,sBAAsB,EACtBC,wBAAwB,IAO5B9uE,EAAMusF,eAAiB,IAAIrV,GAAA,QAAY,CACnCx1D,OAAQ,IAAI,WAAa,CACrBgxD,iBAAiB,EACjB3/B,QAASt+B,EAAYs+B,QAEzB1jC,MAAOoF,EAAY+3E,aACb/3E,EAAY+3E,aACZhB,KACN3c,sBAAsB,EACtBC,wBAAwB,IAExBr6D,EAAY+G,QACZxb,EAAMysF,UAAUh4E,EAAY+G,QAEzBxb,CACX,CA2OA,OArUA,GAAU8rF,EAAQj4E,GAiGlBi4E,EAAO1nF,UAAUsoF,cAAgB,SAAUj8E,EAAOnD,GAC9C,IAAIq/E,EAAkBr/E,EAAImkB,+BAA+BhhB,GAKrD+K,EAASpc,KAAKwtF,oBAClB,GAAIpxE,EAAQ,CAER,IAAI2uC,EAoRhB,SAAqB3uC,GACjB,MAAO,CACH,CACI,CAACA,EAAO,GAAIA,EAAO,IACnB,CAACA,EAAO,GAAIA,EAAO,KAEvB,CACI,CAACA,EAAO,GAAIA,EAAO,IACnB,CAACA,EAAO,GAAIA,EAAO,KAEvB,CACI,CAACA,EAAO,GAAIA,EAAO,IACnB,CAACA,EAAO,GAAIA,EAAO,KAEvB,CACI,CAACA,EAAO,GAAIA,EAAO,IACnB,CAACA,EAAO,GAAIA,EAAO,KAG/B,CAvS2BqxE,CAAYrxE,GAC3B2uC,EAASlnC,MARQ,SAAUrd,EAAGC,GAC9B,OAAQ,QAAyB8mF,EAAiB/mF,IAC9C,QAAyB+mF,EAAiB9mF,EAClD,IAMI,IAAIinF,EAAiB3iC,EAAS,GAC1B4iC,GAAS,QAAiBJ,EAAiBG,GAC3CE,EAAc1/E,EAAIqlB,+BAA+Bo6D,GAErD,IAAI,QAAmBt8E,EAAOu8E,IAAgB5tF,KAAK4sF,gBAAiB,CAEhE,IAAIiB,EAAS3/E,EAAIqlB,+BAA+Bm6D,EAAe,IAC3DI,EAAS5/E,EAAIqlB,+BAA+Bm6D,EAAe,IAC3DK,GAAe,QAA0BH,EAAaC,GACtDG,GAAe,QAA0BJ,EAAaE,GACtDG,EAAOhsF,KAAKuF,KAAKvF,KAAK27B,IAAImwD,EAAcC,IAM5C,OALAhuF,KAAK8sF,iBAAmBmB,GAAQjuF,KAAK4sF,gBACjC5sF,KAAK8sF,mBACLa,EACII,EAAeC,EAAeN,EAAe,GAAKA,EAAe,IAElEC,CACX,CACJ,CACA,OAAO,IACX,EAKAjB,EAAO1nF,UAAUomB,mBAAqB,SAAU4I,GAC5C,IAAI3iB,EAAQ2iB,EAAgB3iB,MACxBnD,EAAM8lB,EAAgB9lB,IACtBy/E,EAAS3tF,KAAKstF,cAAcj8E,EAAOnD,GAClCy/E,IACDA,EAASz/E,EAAImkB,+BAA+BhhB,IAEhDrR,KAAKkuF,8BAA8BP,EACvC,EAMAjB,EAAO1nF,UAAUmpF,6BAA+B,SAAU/xE,GACtD,IAAIgyE,EAAgBpuF,KAAK+sF,eAmBzB,OAlBKqB,EAWIhyE,EAIDgyE,EAAcv2E,aAAY,QAAkBuE,IAH5CgyE,EAAcv2E,iBAAYrB,IAP1B43E,EAJChyE,EAIe,IAAIhF,GAAA,SAAQ,QAAkBgF,IAH9B,IAAIhF,GAAA,QAAQ,CAAC,GAKjCpX,KAAK+sF,eAAiBqB,EACtBpuF,KAAKitF,eAAe1qE,YAAYupE,WAAWsC,IAUxCA,CACX,EAMA1B,EAAO1nF,UAAUkpF,8BAAgC,SAAUP,GACvD,IAAIU,EAAgBruF,KAAKgtF,eAUzB,OATKqB,EAMcA,EAAch2E,cACpBsqD,eAAegrB,IANxBU,EAAgB,IAAIj3E,GAAA,QAAQ,IAAIysC,GAAA,QAAM8pC,IACtC3tF,KAAKgtF,eAAiBqB,EACtBruF,KAAKmtF,eAAe5qE,YAAYupE,WAAWuC,IAMxCA,CACX,EAKA3B,EAAO1nF,UAAU6J,YAAc,SAAUmlB,GACrC,OAAKA,EAAgB5K,gBAAkBppB,KAAKygF,WAAWzsD,KAInDA,EAAgB5iB,MAAQ,iBACvBpR,KAAKw+E,wBACNx+E,KAAKorB,mBAAmB4I,GAG5Bvf,EAAOzP,UAAU6J,YAAY7B,KAAKhN,KAAMg0B,IAEjC,EACX,EAMA04D,EAAO1nF,UAAUm5E,gBAAkB,SAAUnqD,GACzC,IAAI3iB,EAAQ2iB,EAAgB3iB,MACxBnD,EAAM8lB,EAAgB9lB,IACtBkO,EAASpc,KAAKwtF,oBACdG,EAAS3tF,KAAKstF,cAAcj8E,EAAOnD,GAEnCogF,EAAmB,SAAUruC,GAC7B,IAAIsuC,EAAK,KACLC,EAAK,KAaT,OAZIvuC,EAAM,IAAM7jC,EAAO,GACnBmyE,EAAKnyE,EAAO,GAEP6jC,EAAM,IAAM7jC,EAAO,KACxBmyE,EAAKnyE,EAAO,IAEZ6jC,EAAM,IAAM7jC,EAAO,GACnBoyE,EAAKpyE,EAAO,GAEP6jC,EAAM,IAAM7jC,EAAO,KACxBoyE,EAAKpyE,EAAO,IAEL,OAAPmyE,GAAsB,OAAPC,EACR,CAACD,EAAIC,GAET,IACX,EACA,GAAIb,GAAUvxE,EAAQ,CAClB,IAAIpa,EAAI2rF,EAAO,IAAMvxE,EAAO,IAAMuxE,EAAO,IAAMvxE,EAAO,GAAKuxE,EAAO,GAAK,KACnE5rF,EAAI4rF,EAAO,IAAMvxE,EAAO,IAAMuxE,EAAO,IAAMvxE,EAAO,GAAKuxE,EAAO,GAAK,KAE7D,OAAN3rF,GAAoB,OAAND,EACd/B,KAAK2sF,gBAAkBN,GAAgBiC,EAAiBX,IAG7C,OAAN3rF,EACLhC,KAAK2sF,gBAAkBJ,GAAe+B,EAAiB,CAACtsF,EAAGoa,EAAO,KAAMkyE,EAAiB,CAACtsF,EAAGoa,EAAO,MAEzF,OAANra,IACL/B,KAAK2sF,gBAAkBJ,GAAe+B,EAAiB,CAAClyE,EAAO,GAAIra,IAAKusF,EAAiB,CAAClyE,EAAO,GAAIra,KAG7G,MAEI4rF,EAASz/E,EAAImkB,+BAA+BhhB,GAC5CrR,KAAKqtF,UAAU,CAACM,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,KACxD3tF,KAAK2sF,gBAAkBN,GAAgBsB,GAE3C,OAAO,CACX,EAKAjB,EAAO1nF,UAAUo5E,gBAAkB,SAAUpqD,GACzC,GAAIh0B,KAAK2sF,gBAAiB,CACtB,IAAIY,EAAkBv5D,EAAgB/nB,WACtCjM,KAAKqtF,UAAUrtF,KAAK2sF,gBAAgBY,IACpCvtF,KAAKkuF,8BAA8BX,EACvC,CACJ,EAMAb,EAAO1nF,UAAUs5E,cAAgB,SAAUtqD,GACvCh0B,KAAK2sF,gBAAkB,KAEvB,IAAIvwE,EAASpc,KAAKwtF,oBAIlB,OAHKpxE,GAA8B,KAApB,IAAAy+B,SAAQz+B,IACnBpc,KAAKqtF,UAAU,OAEZ,CACX,EAOAX,EAAO1nF,UAAUmP,OAAS,SAAUjG,GAChClO,KAAKitF,eAAe94E,OAAOjG,GAC3BlO,KAAKmtF,eAAeh5E,OAAOjG,GAC3BuG,EAAOzP,UAAUmP,OAAOnH,KAAKhN,KAAMkO,EACvC,EAOAw+E,EAAO1nF,UAAUwY,UAAY,WACzB,OAAO,KAAA0nB,cAAallC,KAAKwtF,oBAAqBxtF,KAAK6iB,SAASlX,UAAUkO,gBAC1E,EAOA6yE,EAAO1nF,UAAUwoF,kBAAoB,WACjC,OAAOxtF,KAAK2+D,OAChB,EAOA+tB,EAAO1nF,UAAUqoF,UAAY,SAAUjxE,GAEnCpc,KAAK2+D,QAAUviD,GAAkB,KACjCpc,KAAKmuF,6BAA6B/xE,GAClCpc,KAAKmR,cAAc,IAAIg7E,GAAYnsF,KAAK2+D,SAC5C,EACO+tB,CACX,CAvU2B,CAuUzB7L,8DClaE,GAAwC,WACxC,IAAIzsE,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GAiDxCi6E,GAAa,CAAC,EAAG,EAAG,EAAG,GACvBC,GAAc,GAIdC,GAYW,YA8CXC,GAA6B,SAAUn6E,GASvC,SAASm6E,EAAYx9E,EAAMmhB,EAAUpJ,GACjC,IAAIvoB,EAAQ6T,EAAOzH,KAAKhN,KAAMoR,IAASpR,KAavC,OAPAY,EAAM2xB,SAAWA,EAMjB3xB,EAAMozB,gBAAkB7K,EACjBvoB,CACX,CACA,OAxBA,GAAUguF,EAAan6E,GAwBhBm6E,CACX,CA1BgC,CA0B9BhN,EAAA,IAoiCF,SAASiN,GAAeroF,EAAGC,GACvB,OAAOD,EAAE0O,MAAQzO,EAAEyO,KACvB,CAWA,SAAS45E,GAAsCC,EAAkBC,EAAaz1E,GAC1E,IAAI3B,EAAWo3E,EAAYp3E,SAC3B,GAAIA,EAAS4uB,YAAcC,GAAA,eAAqB,CAC5C,IAAIwoD,EAAoE,EACxE,GA/oCyB,IA+oCrBD,EAAY95E,MAAsC,CAClD,IAAIwxB,GAAiB,KAAAC,qBACjBD,IACAuoD,EAAqEA,EAChEj3E,QACAuP,UAAUmf,EAAgBntB,IAEnC,IAAI21E,GAA0B,QAA0BD,EAAetqD,aAAa,KAAArR,oBAAmBy7D,EAAkBx1E,IACrH41E,EAA0BltF,KAAKuF,KAAK0nF,GAA2BD,EAAe38C,YAClF,OAAO68C,EAA0BA,CACrC,CACJ,CACA,IAAIljF,GAAa,KAAAqnB,oBAAmBy7D,EAAkBx1E,GAGtD,OAFAm1E,GAAY,IAAK,KAAAp7D,oBAAmB07D,EAAYx8C,QAAQ,GAAIj5B,GAC5Dm1E,GAAY,IAAK,KAAAp7D,oBAAmB07D,EAAYx8C,QAAQ,GAAIj5B,IACrD,QAAyBtN,EAAYyiF,GAChD,CAWA,SAASU,GAAqBL,EAAkBC,EAAaz1E,GACzD,IAAI3B,EAAWo3E,EAAYp3E,SAC3B,GAAIA,EAAS4uB,YAAcC,GAAA,gBA5qCE,IA6qCzBuoD,EAAY95E,MAAsC,CAClD,IAAI+5E,EAAoE,EACpEvoD,GAAiB,KAAAC,qBAMrB,OALID,IACAuoD,EAAqEA,EAChEj3E,QACAuP,UAAUmf,EAAgBntB,KAE5B,KAAAwZ,kBAAiBk8D,EAAezvB,iBAAgB,KAAAlsC,oBAAmBy7D,EAAkBx1E,IAAcA,EAC9G,CACA,IAAItN,GAAa,KAAAqnB,oBAAmBy7D,EAAkBx1E,GAGtD,OAFAm1E,GAAY,IAAK,KAAAp7D,oBAAmB07D,EAAYx8C,QAAQ,GAAIj5B,GAC5Dm1E,GAAY,IAAK,KAAAp7D,oBAAmB07D,EAAYx8C,QAAQ,GAAIj5B,IACrD,KAAAwZ,mBAAiB,QAAiB9mB,EAAYyiF,IAAcn1E,EACvE,CAUA,SA1lC4B,SAAU9E,GAKlC,SAAS46E,EAAO3gF,GACZ,IA+kCAuB,EAp9BIsiB,EA3HA3xB,EAAQ6T,EAAOzH,KAAKhN,KAAoD,IAAcA,KAqI1F,GAnIAY,EAAM0uF,0BAA4B1uF,EAAM2uF,qBAAqBzgF,KAAKlO,GAKlEA,EAAM6/E,WAAa/xE,EAAQslD,UAAYtlD,EAAQslD,UAAYisB,EAM3Dr/E,EAAM4uF,wBAA0B,SAAUx7D,GACtC,OjBpIY,SAAUA,GAC9B,IAAI5K,EAAoE4K,EAA6B,cACrG,OAAQ5K,EAAc81D,UAChB91D,EAAc+1D,SAAW/1D,EAAcg2D,WACxCh2D,EAAc60D,QACvB,CiB+HmBwR,CAAWz7D,IAAoB2rD,EAAY3rD,EACtD,EAKApzB,EAAM8uF,iBAAmBhhF,EAAQihF,gBAC3BjhF,EAAQihF,gBACR/uF,EAAM4uF,wBAKZ5uF,EAAMgvF,uBAAyBlhF,EAAQmhF,sBACjCnhF,EAAQmhF,sBACRrQ,EAMN5+E,EAAMosF,eAAiB,KAMvBpsF,EAAMkvF,gBAAkB,KAKxBlvF,EAAMmvF,WAAa,CAAC,EAAG,GAOvBnvF,EAAMovF,wBAAyB,EAK/BpvF,EAAMqvF,WAAY,EAMlBrvF,EAAMsvF,OAAS,IAAIC,GAAA,EAKnBvvF,EAAMgsF,qBACyBp2E,IAA3B9H,EAAQm+E,eAA+Bn+E,EAAQm+E,eAAiB,GAKpEjsF,EAAMksF,kBAAmB,EAOzBlsF,EAAMwvF,kBAAmB,EAKzBxvF,EAAMyvF,cAAgB,GAMtBzvF,EAAMopF,SAAW,IAAIlS,GAAA,QAAY,CAC7Bx1D,OAAQ,IAAI,WAAa,CACrBgxD,iBAAiB,EACjB3/B,QAASjlC,EAAQilC,QAErB1jC,MAAOvB,EAAQuB,MAAQvB,EAAQuB,OA6+BnCA,GAAQ,KAAAg6E,sBACL,SAAU9oE,EAAS9E,GACtB,OAAOpM,EAAMw2B,GAAA,cACjB,GA/+BQgpC,sBAAsB,EACtBC,wBAAwB,IAO5B9uE,EAAM0vF,iBAAmB,CACrB,MAAS1vF,EAAM2vF,oBAAoBzhF,KAAKlO,GACxC,WAAcA,EAAM4vF,yBAAyB1hF,KAAKlO,GAClD,WAAcA,EAAM4vF,yBAAyB1hF,KAAKlO,GAClD,QAAWA,EAAM6vF,sBAAsB3hF,KAAKlO,GAC5C,WAAcA,EAAM8vF,yBAAyB5hF,KAAKlO,GAClD,gBAAmBA,EAAM+vF,8BAA8B7hF,KAAKlO,GAC5D,aAAgBA,EAAMgwF,2BAA2B9hF,KAAKlO,GACtD,OAAUA,EAAMiwF,qBAAqB/hF,KAAKlO,GAC1C,mBAAsBA,EAAMkwF,iCAAiChiF,KAAKlO,IAMtEA,EAAM+sC,QAAU,KAEZj/B,EAAQ4T,QACR1hB,EAAM+sC,QAAUj/B,EAAQ4T,OACxBiQ,EAAW,IAAIpd,EAAA,EAAWvU,EAAM+sC,QAAQ2vC,eACxC18E,EAAM+sC,QAAQp8B,iBAAiBw/E,GAAA,aAA4BnwF,EAAMowF,iBAAiBliF,KAAKlO,IACvFA,EAAM+sC,QAAQp8B,iBAAiBw/E,GAAA,gBAA+BnwF,EAAMqwF,oBAAoBniF,KAAKlO,KAG7F2xB,EAAW7jB,EAAQ6jB,UAElBA,EACD,MAAM,IAAIpmB,MAAM,wDAepB,OATAvL,EAAMu8E,UAAY5qD,EAClB3xB,EAAMu8E,UAAU1tE,QAAQ7O,EAAMswF,YAAYpiF,KAAKlO,IAC/CA,EAAMu8E,UAAU5rE,iBAAiB+f,GAAA,MAAyB1wB,EAAMuwF,kBAAkBriF,KAAKlO,IACvFA,EAAMu8E,UAAU5rE,iBAAiB+f,GAAA,SAA4B1wB,EAAMwwF,qBAAqBtiF,KAAKlO,IAK7FA,EAAMywF,kBAAoB,KACnBzwF,CACX,CAg3BA,OA3gCA,GAAUyuF,EAAQ56E,GAgKlB46E,EAAOrqF,UAAUksF,YAAc,SAAU/vE,GACrC,IAAIvJ,EAAWuJ,EAAQ9I,cACvB,GAAIT,EAAU,CACV,IAAI05E,EAAStxF,KAAKswF,iBAAiB14E,EAAS4uB,WACxC8qD,GACAA,EAAOnwE,EAASvJ,EAExB,CACA,IAAI1J,EAAMlO,KAAK6iB,SACX3U,GAAOA,EAAIynB,cAAgB31B,KAAKs0B,aAChCt0B,KAAKuxF,sBAAsBvxF,KAAK+vF,WAAY7hF,GAEhDiT,EAAQ5P,iBAAiB2iB,EAAA,SAAkBl0B,KAAKsvF,0BACpD,EAKAD,EAAOrqF,UAAUwsF,oBAAsB,SAAU/4C,GACxCz4C,KAAKiwF,YACNjwF,KAAKiwF,WAAY,EACjBjwF,KAAKmR,cAAc,IAAIy9E,GArRlB,cAqR2D5uF,KAAKm9E,UAAW1kC,IAExF,EAKA42C,EAAOrqF,UAAUysF,eAAiB,SAAUtwE,GACxCnhB,KAAK0xF,0BAA0BvwE,GAE3BnhB,KAAKgtF,gBAAiD,IAA/BhtF,KAAKm9E,UAAUvnE,cACtC5V,KAAKgqF,SAASznE,YAAYovE,cAAc3xF,KAAKgtF,gBAC7ChtF,KAAKgtF,eAAiB,MAE1B7rE,EAAQzP,oBAAoBwiB,EAAA,SAAkBl0B,KAAKsvF,0BACvD,EAKAD,EAAOrqF,UAAU0sF,0BAA4B,SAAUvwE,GACnD,IAAIywE,EAAQ5xF,KAAKkwF,OAEb2B,EAAgB,GACpBD,EAAMniF,SAIN,SAAUumC,GACF70B,IAAY60B,EAAK70B,SACjB0wE,EAAcv/E,KAAK0jC,EAE3B,IACA,IAAK,IAAIxrC,EAAIqnF,EAAczuF,OAAS,EAAGoH,GAAK,IAAKA,EAAG,CAEhD,IADA,IAAIsnF,EAAeD,EAAcrnF,GACxB+L,EAAIvW,KAAKqwF,cAAcjtF,OAAS,EAAGmT,GAAK,IAAKA,EAC9CvW,KAAKqwF,cAAc95E,GAAG,KAAOu7E,GAC7B9xF,KAAKqwF,cAAcl6E,OAAOI,EAAG,GAGrCq7E,EAAM7jF,OAAO+jF,EACjB,CACJ,EAOAzC,EAAOrqF,UAAU64E,UAAY,SAAUC,GAC/B99E,KAAKgtF,iBAAmBlP,IACxB99E,KAAKgqF,SAASznE,YAAYovE,cAAc3xF,KAAKgtF,gBAC7ChtF,KAAKgtF,eAAiB,MAE1Bv4E,EAAOzP,UAAU64E,UAAU7wE,KAAKhN,KAAM89E,EAC1C,EAOAuR,EAAOrqF,UAAUmP,OAAS,SAAUjG,GAChClO,KAAKgqF,SAAS71E,OAAOjG,GACrBuG,EAAOzP,UAAUmP,OAAOnH,KAAKhN,KAAMkO,EACvC,EAMAmhF,EAAOrqF,UAAUslF,WAAa,WAC1B,OAAOtqF,KAAKgqF,QAChB,EAKAqF,EAAOrqF,UAAUgsF,iBAAmB,SAAU9qE,GACtCA,EAAM/E,SACNnhB,KAAKm9E,UAAU7qE,KAAK4T,EAAM/E,QAElC,EAKAkuE,EAAOrqF,UAAUisF,oBAAsB,SAAU/qE,GACzCA,EAAM/E,SACNnhB,KAAKm9E,UAAUpvE,OAAOmY,EAAM/E,QAEpC,EAKAkuE,EAAOrqF,UAAUmsF,kBAAoB,SAAU14C,GAC3Cz4C,KAAKkxF,YAAoCz4C,EAAW,QACxD,EAKA42C,EAAOrqF,UAAUuqF,qBAAuB,SAAU92C,GAC9C,IAAKz4C,KAAKowF,iBAAkB,CACxB,IAAIjvE,EAAkCs3B,EAAU,OAChDz4C,KAAKyxF,eAAetwE,GACpBnhB,KAAKkxF,YAAY/vE,EACrB,CACJ,EAKAkuE,EAAOrqF,UAAUosF,qBAAuB,SAAU34C,GAC9C,IAAIt3B,EAAkCs3B,EAAW,QACjDz4C,KAAKyxF,eAAetwE,EACxB,EAMAkuE,EAAOrqF,UAAUurF,oBAAsB,SAAUpvE,EAASvJ,GACtD,IAAI4K,EAAc5K,EAAS4nC,iBAEvBwvC,EAAc,CACd7tE,QAASA,EACTvJ,SAAUA,EACV46B,QAAS,CAAChwB,EAAaA,IAE3BxiB,KAAKkwF,OAAO6B,OAAOn6E,EAAS4F,YAAawxE,EAC7C,EAMAK,EAAOrqF,UAAU0rF,yBAA2B,SAAUvvE,EAASvJ,GAE3D,IADA,IAAI6zC,EAAS7zC,EAAS4nC,iBACbh1C,EAAI,EAAGiL,EAAKg2C,EAAOroD,OAAQoH,EAAIiL,IAAMjL,EAAG,CAC7C,IAAIgY,EAAcipC,EAAOjhD,GAErBwkF,EAAc,CACd7tE,QAASA,EACTvJ,SAAUA,EACVo6E,MAAO,CAACxnF,GACR0K,MAAO1K,EACPgoC,QAAS,CAAChwB,EAAaA,IAE3BxiB,KAAKkwF,OAAO6B,OAAOn6E,EAAS4F,YAAawxE,EAC7C,CACJ,EAMAK,EAAOrqF,UAAUwrF,yBAA2B,SAAUrvE,EAASvJ,GAE3D,IADA,IAAI4K,EAAc5K,EAAS4nC,iBAClBh1C,EAAI,EAAGiL,EAAK+M,EAAYpf,OAAS,EAAGoH,EAAIiL,IAAMjL,EAAG,CACtD,IAAIgoC,EAAUhwB,EAAY1V,MAAMtC,EAAGA,EAAI,GAEnCwkF,EAAc,CACd7tE,QAASA,EACTvJ,SAAUA,EACV1C,MAAO1K,EACPgoC,QAASA,GAEbxyC,KAAKkwF,OAAO6B,QAAO,IAAAh5C,gBAAevG,GAAUw8C,EAChD,CACJ,EAMAK,EAAOrqF,UAAU2rF,8BAAgC,SAAUxvE,EAASvJ,GAEhE,IADA,IAAIyzC,EAAQzzC,EAAS4nC,iBACZjpC,EAAI,EAAGwP,EAAKslC,EAAMjoD,OAAQmT,EAAIwP,IAAMxP,EAEzC,IADA,IAAIiM,EAAc6oC,EAAM90C,GACf/L,EAAI,EAAGiL,EAAK+M,EAAYpf,OAAS,EAAGoH,EAAIiL,IAAMjL,EAAG,CACtD,IAAIgoC,EAAUhwB,EAAY1V,MAAMtC,EAAGA,EAAI,GAEnCwkF,EAAc,CACd7tE,QAASA,EACTvJ,SAAUA,EACVo6E,MAAO,CAACz7E,GACRrB,MAAO1K,EACPgoC,QAASA,GAEbxyC,KAAKkwF,OAAO6B,QAAO,IAAAh5C,gBAAevG,GAAUw8C,EAChD,CAER,EAMAK,EAAOrqF,UAAUyrF,sBAAwB,SAAUtvE,EAASvJ,GAExD,IADA,IAAIsiC,EAAQtiC,EAAS4nC,iBACZjpC,EAAI,EAAGwP,EAAKm0B,EAAM92C,OAAQmT,EAAIwP,IAAMxP,EAEzC,IADA,IAAIiM,EAAc03B,EAAM3jC,GACf/L,EAAI,EAAGiL,EAAK+M,EAAYpf,OAAS,EAAGoH,EAAIiL,IAAMjL,EAAG,CACtD,IAAIgoC,EAAUhwB,EAAY1V,MAAMtC,EAAGA,EAAI,GAEnCwkF,EAAc,CACd7tE,QAASA,EACTvJ,SAAUA,EACVo6E,MAAO,CAACz7E,GACRrB,MAAO1K,EACPgoC,QAASA,GAEbxyC,KAAKkwF,OAAO6B,QAAO,IAAAh5C,gBAAevG,GAAUw8C,EAChD,CAER,EAMAK,EAAOrqF,UAAU4rF,2BAA6B,SAAUzvE,EAASvJ,GAE7D,IADA,IAAIwwC,EAAWxwC,EAAS4nC,iBACfouB,EAAI,EAAGqkB,EAAK7pC,EAAShlD,OAAQwqE,EAAIqkB,IAAMrkB,EAE5C,IADA,IAAI1zB,EAAQkO,EAASwlB,GACZr3D,EAAI,EAAGwP,EAAKm0B,EAAM92C,OAAQmT,EAAIwP,IAAMxP,EAEzC,IADA,IAAIiM,EAAc03B,EAAM3jC,GACf/L,EAAI,EAAGiL,EAAK+M,EAAYpf,OAAS,EAAGoH,EAAIiL,IAAMjL,EAAG,CACtD,IAAIgoC,EAAUhwB,EAAY1V,MAAMtC,EAAGA,EAAI,GAEnCwkF,EAAc,CACd7tE,QAASA,EACTvJ,SAAUA,EACVo6E,MAAO,CAACz7E,EAAGq3D,GACX14D,MAAO1K,EACPgoC,QAASA,GAEbxyC,KAAKkwF,OAAO6B,QAAO,IAAAh5C,gBAAevG,GAAUw8C,EAChD,CAGZ,EAYAK,EAAOrqF,UAAU6rF,qBAAuB,SAAU1vE,EAASvJ,GACvD,IAAI4K,EAAc5K,EAAS+sB,YAEvButD,EAAoB,CACpB/wE,QAASA,EACTvJ,SAAUA,EACV1C,MA5iBc,EA6iBds9B,QAAS,CAAChwB,EAAaA,IAGvB2vE,EAA2B,CAC3BhxE,QAASA,EACTvJ,SAAUA,EACV1C,MA7iBqB,EA8iBrBs9B,QAAS,CAAChwB,EAAaA,IAEvB4vE,EAAkB,CAACF,EAAmBC,GAC1CD,EAAkBE,gBAAkBA,EACpCD,EAAyBC,gBAAkBA,EAC3CpyF,KAAKkwF,OAAO6B,QAAO,kCAAavvE,GAAc0vE,GAC9C,IAAIjD,EAAsE,EACtEvoD,GAAiB,KAAAC,qBACrB,GAAID,GAAkB1mC,KAAK6iB,SAAU,CACjC,IAAItJ,EAAavZ,KAAK6iB,SAASlX,UAAUkO,gBACzCo1E,EAAiBA,EACZj3E,QACAuP,UAAUmf,EAAgBntB,GAC/B01E,GAAiB,QACkC,GAAkB1nE,UAAUhO,EAAYmtB,EAC/F,CACA1mC,KAAKkwF,OAAO6B,OAAO9C,EAAezxE,YAAa20E,EACnD,EAMA9C,EAAOrqF,UAAU8rF,iCAAmC,SAAU3vE,EAASvJ,GAEnE,IADA,IAAI6sC,EAAa7sC,EAASwtC,qBACjB56C,EAAI,EAAGA,EAAIi6C,EAAWrhD,SAAUoH,EAAG,CACxC,IAAI6nF,EAAa5tC,EAAWj6C,IAE5B8mF,EADatxF,KAAKswF,iBAAiB+B,EAAW7rD,YACvCrlB,EAASkxE,EACpB,CACJ,EAMAhD,EAAOrqF,UAAUstF,6BAA+B,SAAU9vE,GACtD,IAAI6rE,EAAgBruF,KAAKgtF,eAUzB,OATKqB,EAMcA,EAAch2E,cACpBsqD,eAAengD,IANxB6rE,EAAgB,IAAIj3E,GAAA,QAAQ,IAAIysC,GAAA,QAAMrhC,IACtCxiB,KAAKgtF,eAAiBqB,EACtBruF,KAAKgqF,SAASznE,YAAYupE,WAAWuC,IAMlCA,CACX,EAMAgB,EAAOrqF,UAAU6J,YAAc,SAAUmlB,GACrC,OAAKA,EAAgB5K,gBAGrBppB,KAAKqxF,kBAAoBr9D,EAEpBA,EAAgB9lB,IAAIvC,UAAU43B,kBAC/BvP,EAAgB5iB,MAAQ,iBACvBpR,KAAKw+E,wBACNx+E,KAAKorB,mBAAmB4I,GAExBh0B,KAAKgtF,gBAAkBhtF,KAAK0vF,iBAAiB17D,KAMzC8qD,IALA9qD,EAAgB5iB,MAAQ,kBACvBpR,KAAKgwF,yBACIhwF,KAAKuyF,eAMnBv+D,EAAgB5iB,MAAQ,kBACxBpR,KAAKgwF,wBAAyB,GAE3Bv7E,EAAOzP,UAAU6J,YAAY7B,KAAKhN,KAAMg0B,KAAqB8qD,GAlBpE,IAAIA,CAmBR,EAKAuQ,EAAOrqF,UAAUo5E,gBAAkB,SAAU3lC,GACzCz4C,KAAKgwF,wBAAyB,EAC9BhwF,KAAKwxF,oBAAoB/4C,GAEzB,IADA,IAAIk1C,EAASl1C,EAAIxsC,WACRzB,EAAI,EAAGiL,EAAKzV,KAAKqwF,cAAcjtF,OAAQoH,EAAIiL,IAAMjL,EAAG,CAQzD,IAPA,IAAIgoF,EAAcxyF,KAAKqwF,cAAc7lF,GACjCwkF,EAAcwD,EAAY,GAC1BR,EAAQhD,EAAYgD,MACpBp6E,EAAWo3E,EAAYp3E,SACvB4K,OAAc,EACdgwB,EAAUw8C,EAAYx8C,QACtBt9B,EAAQs9E,EAAY,GACjB7E,EAAOvqF,OAASwU,EAAS0vB,aAC5BqmD,EAAOr7E,KAAKkgC,EAAQt9B,GAAOy4E,EAAOvqF,SAEtC,OAAQwU,EAAS4uB,WACb,KAAKC,GAAA,cACDjkB,EAAcmrE,EACdn7C,EAAQ,GAAKm7C,EACbn7C,EAAQ,GAAKm7C,EACb,MACJ,KAAKlnD,GAAA,qBACDjkB,EAAc5K,EAAS4nC,kBACXwvC,EAAY95E,OAASy4E,EACjCn7C,EAAQ,GAAKm7C,EACbn7C,EAAQ,GAAKm7C,EACb,MACJ,KAAKlnD,GAAA,qBACDjkB,EAAc5K,EAAS4nC,kBACXwvC,EAAY95E,MAAQA,GAASy4E,EACzCn7C,EAAQt9B,GAASy4E,EACjB,MACJ,KAAKlnD,GAAA,0BAKL,KAAKA,GAAA,iBACDjkB,EAAc5K,EAAS4nC,kBACXwyC,EAAM,IAAIhD,EAAY95E,MAAQA,GAASy4E,EACnDn7C,EAAQt9B,GAASy4E,EACjB,MACJ,KAAKlnD,GAAA,uBACDjkB,EAAc5K,EAAS4nC,kBACXwyC,EAAM,IAAIA,EAAM,IAAIhD,EAAY95E,MAAQA,GAASy4E,EAC7Dn7C,EAAQt9B,GAASy4E,EACjB,MACJ,KAAKlnD,GAAA,eAGD,GAFA+L,EAAQ,GAAKm7C,EACbn7C,EAAQ,GAAKm7C,EAxrBP,IAyrBFqB,EAAY95E,MACZlV,KAAKowF,kBAAmB,EACxBx4E,EAASuwB,UAAUwlD,GACnB3tF,KAAKowF,kBAAmB,MAEvB,CAEDpwF,KAAKowF,kBAAmB,EACxB,IAAI72E,EAAak/B,EAAIvqC,IAAIvC,UAAUkO,gBAC/BysD,GAAS,SAAmB,KAAAhzC,oBAAmB1b,EAAS+sB,YAAaprB,IAAa,KAAA+Z,oBAAmBq6D,EAAQp0E,IAC7GmtB,GAAiB,KAAAC,qBACrB,GAAID,EAAgB,CAChB,IAAIuoD,EAAiBr3E,EAChBI,QACAuP,UAAUmf,EAAgBntB,GAC/B01E,EAAevH,UAAUphB,GACzBA,EAAS2oB,EACJ1nE,UAAUhO,EAAYmtB,GACtB4L,WACT,CACA16B,EAAS8vE,UAAUphB,GACnBtmE,KAAKowF,kBAAmB,CAC5B,EAKJ5tE,GACAxiB,KAAKyyF,wBAAwB76E,EAAU4K,EAE/C,CACAxiB,KAAKsyF,6BAA6B3E,EACtC,EAMA0B,EAAOrqF,UAAUm5E,gBAAkB,SAAU1lC,GACzC,IAAKz4C,KAAKygF,WAAWhoC,GACjB,OAAO,EAEX,IAAI80C,EAAkB90C,EAAIxsC,WAC1BjM,KAAKuxF,sBAAsB94C,EAAIpnC,MAAOonC,EAAIvqC,IAAKq/E,GAC/CvtF,KAAKqwF,cAAcjtF,OAAS,EAC5BpD,KAAKiwF,WAAY,EACjB,IAAI5B,EAAgBruF,KAAKgtF,eACzB,GAAIqB,EAAe,CACf,IAAI90E,EAAak/B,EAAIvqC,IAAIvC,UAAUkO,gBAC/B64E,EAAiB,GACjB/E,EAASU,EAAch2E,cAAcmnC,iBACrCmzC,GAAe,IAAA55C,gBAAe,CAAC40C,IAC/BiF,EAAqB5yF,KAAKkwF,OAAO2C,YAAYF,GAC7CG,EAAoB,CAAC,EACzBF,EAAmB/uE,KAAKgrE,IACxB,IAAK,IAAIrkF,EAAI,EAAGiL,EAAKm9E,EAAmBxvF,OAAQoH,EAAIiL,IAAMjL,EAAG,CACzD,IAAIuoF,EAAmBH,EAAmBpoF,GACtCgoC,EAAUugD,EAAiBvgD,QAC3BwgD,GAAM,SAAOD,EAAiBn7E,UAC9Bo6E,EAAQe,EAAiBf,MAO7B,GANIA,IACAgB,GAAO,IAAMhB,EAAMz/E,KAAK,MAEvBugF,EAAkBE,KACnBF,EAAkBE,GAAO,IAAI7xF,MAAM,IAEnC4xF,EAAiBn7E,SAAS4uB,YAAcC,GAAA,gBArvB3B,IAsvBbssD,EAAiB79E,MASrB,KAAI,QAAiBs9B,EAAQ,GAAIm7C,IAC5BmF,EAAkBE,GAAK,GAK5B,KAAI,QAAiBxgD,EAAQ,GAAIm7C,IAC5BmF,EAAkBE,GAAK,IAaxB,SAAOxgD,KAAYxyC,KAAK8vF,kBACvBgD,EAAkBE,GAAK,KACvBF,EAAkBE,GAAK,IACxBhzF,KAAK4vF,uBAAuBn3C,IAC5Bi6C,EAAepgF,KAAK,CAACygF,EAAkBpF,QAlB3C,CAGI,IAAKoF,EAAiBn7E,SAAS4uB,YAAcC,GAAA,qBACzCssD,EAAiBn7E,SAAS4uB,YACtBC,GAAA,4BACJqsD,EAAkBE,GAAK,IACa,IAApCF,EAAkBE,GAAK,GAAG99E,MAC1B,SAEJlV,KAAKqwF,cAAc/9E,KAAK,CAACygF,EAAkB,IAC3CD,EAAkBE,GAAK,GAAKD,CAEhC,MAjBI/yF,KAAKqwF,cAAc/9E,KAAK,CAACygF,EAAkB,IAC3CD,EAAkBE,GAAK,GAAKD,MAbhC,CAEI,IAAIE,EAAgB7D,GAAqB7B,EAAiBwF,EAAkBx5E,IACxE,QAAiB05E,EAAetF,KAC/BmF,EAAkBE,GAAK,KACxBhzF,KAAKqwF,cAAc/9E,KAAK,CAACygF,EAAkB,IAC3CD,EAAkBE,GAAK,GAAKD,EAGpC,CA2BJ,CACIL,EAAetvF,QACfpD,KAAKwxF,oBAAoB/4C,GAE7B,IAAK,IAAIliC,EAAIm8E,EAAetvF,OAAS,EAAGmT,GAAK,IAAKA,EAC9CvW,KAAKkzF,cAAcpzF,MAAME,KAAM0yF,EAAen8E,GAEtD,CACA,QAASvW,KAAKgtF,cAClB,EAMAqC,EAAOrqF,UAAUs5E,cAAgB,SAAU7lC,GACvC,IAAK,IAAIjuC,EAAIxK,KAAKqwF,cAAcjtF,OAAS,EAAGoH,GAAK,IAAKA,EAAG,CACrD,IAAIwkF,EAAchvF,KAAKqwF,cAAc7lF,GAAG,GACpCoN,EAAWo3E,EAAYp3E,SAC3B,GAAIA,EAAS4uB,YAAcC,GAAA,eAAqB,CAE5C,IAAIjkB,EAAc5K,EAAS+sB,YACvButD,EAAoBlD,EAAYoD,gBAAgB,GAChDD,EAA2BnD,EAAYoD,gBAAgB,GAC3DF,EAAkB1/C,QAAQ,GAAKhwB,EAC/B0vE,EAAkB1/C,QAAQ,GAAKhwB,EAC/B2vE,EAAyB3/C,QAAQ,GAAKhwB,EACtC2vE,EAAyB3/C,QAAQ,GAAKhwB,EACtCxiB,KAAKkwF,OAAO1wE,QAAO,kCAAagD,GAAc0vE,GAC9C,IAAIjD,EAAiBr3E,EACjB8uB,GAAiB,KAAAC,qBACrB,GAAID,EAAgB,CAChB,IAAIntB,EAAak/B,EAAIvqC,IAAIvC,UAAUkO,gBACnCo1E,EAAiBA,EACZj3E,QACAuP,UAAUmf,EAAgBntB,GAC/B01E,GAAiB,QAAWA,GAAgB1nE,UAAUhO,EAAYmtB,EACtE,CACA1mC,KAAKkwF,OAAO1wE,OAAOyvE,EAAezxE,YAAa20E,EACnD,MAEInyF,KAAKkwF,OAAO1wE,QAAO,IAAAu5B,gBAAei2C,EAAYx8C,SAAUw8C,EAEhE,CAKA,OAJIhvF,KAAKiwF,YACLjwF,KAAKmR,cAAc,IAAIy9E,GAAYD,GAA2B3uF,KAAKm9E,UAAW1kC,IAC9Ez4C,KAAKiwF,WAAY,IAEd,CACX,EAKAZ,EAAOrqF,UAAUomB,mBAAqB,SAAUqtB,GAC5Cz4C,KAAK+vF,WAAat3C,EAAIpnC,MACtBrR,KAAKuxF,sBAAsB94C,EAAIpnC,MAAOonC,EAAIvqC,IAAKuqC,EAAIxsC,WACvD,EAOAojF,EAAOrqF,UAAUusF,sBAAwB,SAAUlgF,EAAOnD,EAAKilF,GAC3D,IAAI5F,EAAkB4F,GAAkBjlF,EAAIwb,uBAAuBrY,GAC/DkI,EAAarL,EAAIvC,UAAUkO,gBAK3Bu5E,GAAa,KAAA1zD,iBAAe,kCAAa6tD,EAAiBkB,IAAal1E,GACvE0/B,EAAS/qC,EAAIvC,UAAU+R,gBAAkB1d,KAAK4sF,gBAC9C7R,GAAM,KAAA71C,eAAa,IAAA+T,QAAam6C,EAAYn6C,EAAQw1C,IAAal1E,GAEjE85E,EADQrzF,KAAKkwF,OACC2C,YAAY9X,GAC9B,GAAIsY,EAAMjwF,OAAS,EAAG,CAClBiwF,EAAMxvE,MAVW,SAAUrd,EAAGC,GAC9B,OAAQqoF,GAAsCvB,EAAiB/mF,EAAG+S,GAC9Du1E,GAAsCvB,EAAiB9mF,EAAG8S,EAClE,IAQI,IAAIy8B,EAAOq9C,EAAM,GACb3F,EAAiB13C,EAAKxD,QACtBm7C,EAASyB,GAAqB7B,EAAiBv3C,EAAMz8B,GACrDq0E,EAAc1/E,EAAIklB,uBAAuBu6D,GACzCM,GAAO,QAAmB58E,EAAOu8E,GACrC,GAAIK,GAAQjuF,KAAK4sF,gBAAiB,CAE9B,IAAI0G,EAAiB,CAAC,EACtB,GAAIt9C,EAAKp+B,SAAS4uB,YAAcC,GAAA,gBA/2Bf,IAg3BbuP,EAAK9gC,MACLlV,KAAK8sF,kBAAmB,EACxB9sF,KAAKsyF,6BAA6B3E,OAEjC,CACD,IAAIE,EAAS3/E,EAAIklB,uBAAuBs6D,EAAe,IACnDI,EAAS5/E,EAAIklB,uBAAuBs6D,EAAe,IACnDK,GAAe,QAA0BH,EAAaC,GACtDG,GAAe,QAA0BJ,EAAaE,GAC1DG,EAAOhsF,KAAKuF,KAAKvF,KAAK27B,IAAImwD,EAAcC,IACxChuF,KAAK8sF,iBAAmBmB,GAAQjuF,KAAK4sF,gBACjC5sF,KAAK8sF,mBACLa,EACII,EAAeC,EACTN,EAAe,GACfA,EAAe,IAE7B1tF,KAAKsyF,6BAA6B3E,GAClC,IAAK,IAAInjF,EAAI,EAAGiL,EAAK49E,EAAMjwF,OAAQoH,EAAIiL,IAAMjL,EAAG,CAC5C,IAAIgoC,EAAU6gD,EAAM7oF,GAAGgoC,QACvB,MAAK,QAAiBk7C,EAAe,GAAIl7C,EAAQ,MAC7C,QAAiBk7C,EAAe,GAAIl7C,EAAQ,MAC3C,QAAiBk7C,EAAe,GAAIl7C,EAAQ,MACzC,QAAiBk7C,EAAe,GAAIl7C,EAAQ,KAIhD,MAHA8gD,GAAe,SAAO9gD,KAAY,CAK1C,CACJ,CAGA,OAFA8gD,GAAe,SAAO5F,KAAmB,OACzC1tF,KAAK8vF,gBAAkBwD,EAE3B,CACJ,CACItzF,KAAKgtF,iBACLhtF,KAAKgqF,SAASznE,YAAYovE,cAAc3xF,KAAKgtF,gBAC7ChtF,KAAKgtF,eAAiB,KAE9B,EAMAqC,EAAOrqF,UAAUkuF,cAAgB,SAAUlE,EAAarB,GAOpD,IANA,IAKInrE,EALAgwB,EAAUw8C,EAAYx8C,QACtBrxB,EAAU6tE,EAAY7tE,QACtBvJ,EAAWo3E,EAAYp3E,SACvBo6E,EAAQhD,EAAYgD,MACpB98E,EAAQ85E,EAAY95E,MAEjBy4E,EAAOvqF,OAASwU,EAAS0vB,aAC5BqmD,EAAOr7E,KAAK,GAEhB,OAAQsF,EAAS4uB,WACb,KAAKC,GAAA,0BAIL,KAAKA,GAAA,iBACDjkB,EAAc5K,EAAS4nC,kBACXwyC,EAAM,IAAI77E,OAAOjB,EAAQ,EAAG,EAAGy4E,GAC3C,MACJ,KAAKlnD,GAAA,uBACDjkB,EAAc5K,EAAS4nC,kBACXwyC,EAAM,IAAIA,EAAM,IAAI77E,OAAOjB,EAAQ,EAAG,EAAGy4E,GACrD,MACJ,KAAKlnD,GAAA,qBACDjkB,EAAc5K,EAAS4nC,kBACXrpC,OAAOjB,EAAQ,EAAG,EAAGy4E,GACjC,MACJ,QACI,OAER3tF,KAAKyyF,wBAAwB76E,EAAU4K,GACvC,IAAI+wE,EAAQvzF,KAAKkwF,OACjBqD,EAAMxlF,OAAOihF,GACbhvF,KAAKwzF,sBAAsB57E,EAAU1C,EAAO88E,EAAO,GAEnD,IAAIyB,EAAiB,CACjBjhD,QAAS,CAACA,EAAQ,GAAIm7C,GACtBxsE,QAASA,EACTvJ,SAAUA,EACVo6E,MAAOA,EACP98E,MAAOA,GAEXq+E,EAAMxB,QAAO,IAAAh5C,gBAAe06C,EAAejhD,SAAUihD,GACrDzzF,KAAKqwF,cAAc/9E,KAAK,CAACmhF,EAAgB,IAEzC,IAAIC,EAAkB,CAClBlhD,QAAS,CAACm7C,EAAQn7C,EAAQ,IAC1BrxB,QAASA,EACTvJ,SAAUA,EACVo6E,MAAOA,EACP98E,MAAOA,EAAQ,GAEnBq+E,EAAMxB,QAAO,IAAAh5C,gBAAe26C,EAAgBlhD,SAAUkhD,GACtD1zF,KAAKqwF,cAAc/9E,KAAK,CAACohF,EAAiB,IAC1C1zF,KAAKgwF,wBAAyB,CAClC,EAMAX,EAAOrqF,UAAUutF,YAAc,WAC3B,GAAIvyF,KAAKqxF,mBACLrxF,KAAKqxF,kBAAkBjgF,MAAQ,gBAAiC,CAChE,IAAIqnC,EAAMz4C,KAAKqxF,kBACfrxF,KAAKwxF,oBAAoB/4C,GACzB,IAAIk7C,EAAU3zF,KAAK4zF,gBAGnB,OAFA5zF,KAAKmR,cAAc,IAAIy9E,GAAYD,GAA2B3uF,KAAKm9E,UAAW1kC,IAC9Ez4C,KAAKiwF,WAAY,EACV0D,CACX,CACA,OAAO,CACX,EAMAtE,EAAOrqF,UAAU4uF,cAAgB,WAC7B,IAGIC,EAAWrxE,EAAagwE,EAAa56E,EAAUpN,EAAG0K,EAAOzG,EACzDqlF,EAAU5jF,EAAO8+E,EAAagE,EAJ9Be,EAAe/zF,KAAKqwF,cACpB2D,EAAoB,CAAC,EACrBC,GAAU,EAGd,IAAKzpF,EAAIupF,EAAa3wF,OAAS,EAAGoH,GAAK,IAAKA,EAExCwkF,GADAwD,EAAcuB,EAAavpF,IACD,GAC1BwoF,GAAM,SAAOhE,EAAY7tE,SACrB6tE,EAAYgD,QAEZgB,GAAO,IAAMhE,EAAYgD,MAAMz/E,KAAK,MAElCygF,KAAOgB,IACTA,EAAkBhB,GAAO,CAAC,GAEP,IAAnBR,EAAY,IACZwB,EAAkBhB,GAAK9iF,MAAQ8+E,EAC/BgF,EAAkBhB,GAAK99E,MAAQ85E,EAAY95E,OAEpB,GAAlBs9E,EAAY,KACjBwB,EAAkBhB,GAAKvkF,KAAOugF,EAC9BgF,EAAkBhB,GAAK99E,MAAQ85E,EAAY95E,MAAQ,GAG3D,IAAK89E,KAAOgB,EAAmB,CAkB3B,OAjBA9jF,EAAQ8jF,EAAkBhB,GAAK9iF,MAC/BzB,EAAOulF,EAAkBhB,GAAKvkF,MAE9BqlF,GADA5+E,EAAQ8+E,EAAkBhB,GAAK99E,OACZ,GAOJ,IACX4+E,EAAW,GAIfD,EADArxE,GADA5K,GARIo3E,OADSx4E,IAAT/H,EACcA,EAGAyB,GAKK0H,UACA4nC,iBAEvBy0C,GAAU,EACFr8E,EAAS4uB,WACb,KAAKC,GAAA,0BACGjkB,EAAYwsE,EAAYgD,MAAM,IAAI5uF,OAAS,IAC3Cof,EAAYwsE,EAAYgD,MAAM,IAAI77E,OAAOjB,EAAO,GAChD++E,GAAU,GAEd,MACJ,KAAKxtD,GAAA,oBACGjkB,EAAYpf,OAAS,IACrBof,EAAYrM,OAAOjB,EAAO,GAC1B++E,GAAU,GAEd,MACJ,KAAKxtD,GAAA,sBACDotD,EAAYA,EAAU7E,EAAYgD,MAAM,IAE5C,KAAKvrD,GAAA,iBACDotD,EAAYA,EAAU7E,EAAYgD,MAAM,KAC1B5uF,OAAS,IACf8R,GAAS2+E,EAAUzwF,OAAS,IAC5B8R,EAAQ,GAEZ2+E,EAAU19E,OAAOjB,EAAO,GACxB++E,GAAU,EACI,IAAV/+E,IAEA2+E,EAAU5/E,MACV4/E,EAAUvhF,KAAKuhF,EAAU,IACzBC,EAAWD,EAAUzwF,OAAS,IAO9C,GAAI6wF,EAAS,CACTj0F,KAAKyyF,wBAAwB76E,EAAU4K,GACvC,IAAIuoC,EAAW,GASf,QARav0C,IAAT/H,IACAzO,KAAKkwF,OAAOniF,OAAOU,GACnBs8C,EAASz4C,KAAK7D,EAAK+jC,QAAQ,UAEjBh8B,IAAVtG,IACAlQ,KAAKkwF,OAAOniF,OAAOmC,GACnB66C,EAASz4C,KAAKpC,EAAMsiC,QAAQ,UAEnBh8B,IAAT/H,QAAgC+H,IAAVtG,EAAqB,CAE3C,IAAIujF,EAAiB,CACjBzB,MAAOhD,EAAYgD,MACnB7wE,QAAS6tE,EAAY7tE,QACrBvJ,SAAUo3E,EAAYp3E,SACtB1C,MAAO4+E,EACPthD,QAASuY,GAEb/qD,KAAKkwF,OAAO6B,QAAO,IAAAh5C,gBAAe06C,EAAejhD,SAAUihD,EAC/D,CACAzzF,KAAKwzF,sBAAsB57E,EAAU1C,EAAO85E,EAAYgD,OAAQ,GAC5DhyF,KAAKgtF,iBACLhtF,KAAKgqF,SAASznE,YAAYovE,cAAc3xF,KAAKgtF,gBAC7ChtF,KAAKgtF,eAAiB,MAE1B+G,EAAa3wF,OAAS,CAC1B,CACJ,CACA,OAAO6wF,CACX,EAMA5E,EAAOrqF,UAAUytF,wBAA0B,SAAU76E,EAAU4K,GAC3DxiB,KAAKowF,kBAAmB,EACxBx4E,EAAS+qD,eAAengD,GACxBxiB,KAAKowF,kBAAmB,CAC5B,EAQAf,EAAOrqF,UAAUwuF,sBAAwB,SAAU57E,EAAU1C,EAAO88E,EAAOvqE,GACvEznB,KAAKkwF,OAAOgE,gBAAgBt8E,EAAS4F,aAAa,SAAUu1E,GACpDA,EAAiBn7E,WAAaA,SACnBpB,IAAVw7E,QAC8Bx7E,IAA3Bu8E,EAAiBf,QACjB,SAAOe,EAAiBf,MAAOA,KACnCe,EAAiB79E,MAAQA,IACzB69E,EAAiB79E,OAASuS,EAElC,GACJ,EACO4nE,CACX,CA7gC2B,CA6gCzBxO,GCxqCF,IAAI,GAAwC,WACxC,IAAIzsE,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GAyGxC2/E,GAA6B,SAAU1/E,GASvC,SAAS0/E,EAAY/iF,EAAMgjF,EAAUC,EAAYrgE,GAC7C,IAAIpzB,EAAQ6T,EAAOzH,KAAKhN,KAAMoR,IAASpR,KAmBvC,OAbAY,EAAMwzF,SAAWA,EAMjBxzF,EAAMyzF,WAAaA,EAMnBzzF,EAAMozB,gBAAkBA,EACjBpzB,CACX,CACA,OA9BA,GAAUuzF,EAAa1/E,GA8BhB0/E,CACX,CAhCgC,CAgC9BvS,EAAA,IAKE0S,GAAwB,CAAC,EAmW7B,SAnV4B,SAAU7/E,GAKlC,SAAS8/E,EAAOl/E,GACZ,IAmUA0zE,EAtQI/nE,EA7DApgB,EAAQ6T,EAAOzH,KAAKhN,OAASA,KAC7B0O,EAAU2G,GAA4B,CAAC,EA6D3C,GAzDAzU,EAAM4zF,iBAAmB5zF,EAAMswF,YAAYpiF,KAAKlO,GAIhDA,EAAM6zF,oBAAsB7zF,EAAM6wF,eAAe3iF,KAAKlO,GAKtDA,EAAM6/E,WAAa/xE,EAAQslD,UAAYtlD,EAAQslD,UAAY2rB,EAK3D/+E,EAAM8zF,cAAgBhmF,EAAQimF,aAAejmF,EAAQimF,aAAejV,EAKpE9+E,EAAMg0F,iBAAmBlmF,EAAQmmF,gBAC3BnmF,EAAQmmF,gBACRnV,EAKN9+E,EAAMk0F,iBAAmBpmF,EAAQqmF,gBAC3BrmF,EAAQqmF,gBACRlV,EAKNj/E,EAAMo0F,SAAStmF,EAAQumF,OAAQvmF,EAAQumF,MAKvCr0F,EAAMs0F,QAAUxmF,EAAQ21B,OAAS31B,EAAQ21B,OAAS,KAKlDzjC,EAAMu0F,cAAgBzmF,EAAQmS,aAAenS,EAAQmS,aAAe,EAKpEjgB,EAAM4W,YACgBhB,IAAlB9H,EAAQuB,MAAsBvB,EAAQuB,OA6Q1C84E,GAAS,KAAAkB,uBACb,SAAOlB,EAAOtiD,GAAA,iBAAuBsiD,EAAOtiD,GAAA,uBAC5C,SAAOsiD,EAAOtiD,GAAA,6BAAmCsiD,EAAOtiD,GAAA,sBACjD,SAAUtlB,GACb,OAAKA,EAAQ9I,cAGN0wE,EAAO5nE,EAAQ9I,cAAcmuB,WAFzB,IAGf,GAhRI5lC,EAAMu8E,UAAYzuE,EAAQ6jB,UAAY,IAAIpd,EAAA,EAGtCzG,EAAQkgB,OACR,GAA8B,mBAAnBlgB,EAAQkgB,OACf5N,EAActS,EAAQkgB,WAErB,CACD,IAAIwmE,EAAW1mF,EAAQkgB,OACvB5N,EAAc,SAAUI,GACpB,OAAO,SAASg0E,EAAUh0E,EAC9B,CACJ,MAGAJ,EAAc,KAclB,OARApgB,EAAMy0F,aAAer0E,EAOrBpgB,EAAM00F,yBAA2B,CAAC,EAC3B10F,CACX,CAoOA,OAlUA,GAAU2zF,EAAQ9/E,GAoGlB8/E,EAAOvvF,UAAUuwF,4BAA8B,SAAUp0E,EAASC,GAC9DphB,KAAKs1F,0BAAyB,SAAOn0E,IAAYC,CACrD,EAMAmzE,EAAOvvF,UAAUs4E,YAAc,WAC3B,OAAOt9E,KAAKm9E,SAChB,EAMAoX,EAAOvvF,UAAUwwF,gBAAkB,WAC/B,OAAOx1F,KAAKm1F,aAChB,EAUAZ,EAAOvvF,UAAUywF,SAAW,SAAUt0E,GAClC,OAA4DnhB,KACvDs1F,0BAAyB,SAAOn0E,GACzC,EAOAozE,EAAOvvF,UAAU0wF,gBAAkB,SAAU70E,GACzC7gB,KAAKm1F,cAAgBt0E,CACzB,EAOA0zE,EAAOvvF,UAAUmP,OAAS,SAAUjG,GACflO,KAAK6iB,UACJ7iB,KAAKwX,QACnBxX,KAAKm9E,UAAU1tE,QAAQzP,KAAK21F,sBAAsB7mF,KAAK9O,OAE3DyU,EAAOzP,UAAUmP,OAAOnH,KAAKhN,KAAMkO,GAC/BA,GACAlO,KAAKm9E,UAAU5rE,iBAAiB+f,GAAA,MAAyBtxB,KAAKw0F,kBAC9Dx0F,KAAKm9E,UAAU5rE,iBAAiB+f,GAAA,SAA4BtxB,KAAKy0F,qBAC7Dz0F,KAAKwX,QACLxX,KAAKm9E,UAAU1tE,QAAQzP,KAAK41F,oBAAoB9mF,KAAK9O,SAIzDA,KAAKm9E,UAAUzrE,oBAAoB4f,GAAA,MAAyBtxB,KAAKw0F,kBACjEx0F,KAAKm9E,UAAUzrE,oBAAoB4f,GAAA,SAA4BtxB,KAAKy0F,qBAE5E,EAKAF,EAAOvvF,UAAUksF,YAAc,SAAUz4C,GACrC,IAAIt3B,EAAUs3B,EAAIplC,QACdrT,KAAKwX,QACLxX,KAAK41F,oBAAoBz0E,EAEjC,EAKAozE,EAAOvvF,UAAUysF,eAAiB,SAAUh5C,GACxC,IAAIt3B,EAAUs3B,EAAIplC,QACdrT,KAAKwX,QACLxX,KAAK21F,sBAAsBx0E,EAEnC,EAIAozE,EAAOvvF,UAAUsT,SAAW,WACxB,OAAOtY,KAAKwX,MAChB,EAKA+8E,EAAOvvF,UAAU4wF,oBAAsB,SAAUz0E,GAC7C,IAAIwL,GAAM,SAAOxL,GACXwL,KAAO2nE,KACTA,GAAsB3nE,GAAOxL,EAAQ7I,YAEzC6I,EAAQ5I,SAASvY,KAAKwX,OAC1B,EAKA+8E,EAAOvvF,UAAU2wF,sBAAwB,SAAUx0E,GAC/C,IAAIwL,GAAM,SAAOxL,GACb00E,EAAmD71F,KAAK6iB,SACvD+O,kBACA7b,WACAsuB,QAAO,SAAU9S,GAClB,OAAQA,aAAuBgjE,GAC3BhjE,EAAYjZ,aAC+C,IAA3DiZ,EAAY+rD,cAAcvnE,WAAWrD,QAAQyO,EACrD,IACI00E,EAAmBzyF,OAAS,EAC5B+d,EAAQ5I,SAASs9E,EAAmBA,EAAmBzyF,OAAS,GAAGkV,aAGnE6I,EAAQ5I,SAAS+7E,GAAsB3nE,WAChC2nE,GAAsB3nE,GAErC,EAKA4nE,EAAOvvF,UAAU8wF,+BAAiC,SAAU30E,UACjDnhB,KAAKs1F,0BAAyB,SAAOn0E,GAChD,EAQAozE,EAAOvvF,UAAU6J,YAAc,SAAUmlB,GACrC,IAAKh0B,KAAKygF,WAAWzsD,GACjB,OAAO,EAEX,IAAIpmB,EAAM5N,KAAK00F,cAAc1gE,GACzBjmB,EAAS/N,KAAK40F,iBAAiB5gE,GAC/B5N,EAASpmB,KAAK80F,iBAAiB9gE,GAC/Bvd,GAAO7I,IAAQG,IAAWqY,EAC1BlY,EAAM8lB,EAAgB9lB,IACtBqkB,EAAWvyB,KAAKs9E,cAChB+W,EAAa,GACbD,EAAW,GACf,GAAI39E,EAAK,EAIL,QAAMzW,KAAKs1F,0BACXpnF,EAAIkkB,sBAAsB4B,EAAgB3iB,MAM1C,SAAU8P,EAASC,GACf,GAAIphB,KAAKk1F,QAAQ/zE,EAASC,GAGtB,OAFAgzE,EAAS9hF,KAAK6O,GACdnhB,KAAKu1F,4BAA4Bp0E,EAASC,IAClCphB,KAAKg1F,MAErB,EAAElmF,KAAK9O,MAAO,CACVghB,YAAahhB,KAAKq1F,aAClBx0E,aAAc7gB,KAAKm1F,gBAEvB,IAAK,IAAI3qF,EAAI+nB,EAAS3c,YAAc,EAAGpL,GAAK,IAAKA,EAAG,CAChD,IAAI2W,EAAUoR,EAASvc,KAAKxL,GACxB0K,EAAQk/E,EAAS1hF,QAAQyO,GACzBjM,GAAS,EAETk/E,EAASj+E,OAAOjB,EAAO,IAGvBqd,EAASxkB,OAAOoT,GAChBkzE,EAAW/hF,KAAK6O,GAExB,CACwB,IAApBizE,EAAShxF,QACTmvB,EAASze,OAAOsgF,EAExB,KACK,CAEDlmF,EAAIkkB,sBAAsB4B,EAAgB3iB,MAM1C,SAAU8P,EAASC,GACf,GAAIphB,KAAKk1F,QAAQ/zE,EAASC,GAUtB,OATKxT,IAAOwY,IAAY,SAASmM,EAASxc,WAAYoL,IAI5CpT,GAAUqY,KAChB,SAASmM,EAASxc,WAAYoL,KAC9BkzE,EAAW/hF,KAAK6O,GAChBnhB,KAAK81F,+BAA+B30E,KANpCizE,EAAS9hF,KAAK6O,GACdnhB,KAAKu1F,4BAA4Bp0E,EAASC,KAOtCphB,KAAKg1F,MAErB,EAAElmF,KAAK9O,MAAO,CACVghB,YAAahhB,KAAKq1F,aAClBx0E,aAAc7gB,KAAKm1F,gBAEvB,IAAK,IAAI5+E,EAAI89E,EAAWjxF,OAAS,EAAGmT,GAAK,IAAKA,EAC1Cgc,EAASxkB,OAAOsmF,EAAW99E,IAE/Bgc,EAASze,OAAOsgF,EACpB,CAIA,OAHIA,EAAShxF,OAAS,GAAKixF,EAAWjxF,OAAS,IAC3CpD,KAAKmR,cAAc,IAAIgjF,GAzbvB,SAyb2DC,EAAUC,EAAYrgE,KAE9E,CACX,EACOugE,CACX,CApU2B,CAoUzB,GCleF,IAAI,GAAwC,WACxC,IAAIngF,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GAsD5C,SAASuhF,GAAoBt9C,GACzB,OAC+D,EAAMt3B,QACK,EACjEA,QAGiD,EAAM9N,QAEF,EAAa,aAHtE,CAKT,CACA,IAAI,GAAc,GA6hBlB,SArgB0B,SAAUoB,GAKhC,SAASuhF,EAAK3gF,GACV,IAAIzU,EAAQZ,KACR0O,EAAU2G,GAA4B,CAAC,EACvCyvE,EAA+D,EAiFnE,OAhFKA,EAAe3G,kBAChB2G,EAAe3G,gBAAkB,MAEhC2G,EAAevG,WAChBuG,EAAevG,SAAW,OAE9B39E,EAAQ6T,EAAOzH,KAAKhN,KAAM8kF,IAAmB9kF,MAKvC2tC,QAAUj/B,EAAQ4T,OAAS5T,EAAQ4T,OAAS,KAKlD1hB,EAAMq1F,aAA6Bz/E,IAAnB9H,EAAQi/E,QAAuBj/E,EAAQi/E,OAKvD/sF,EAAMs1F,WAAyB1/E,IAAjB9H,EAAQynF,MAAqBznF,EAAQynF,KAKnDv1F,EAAMu8E,UAAYzuE,EAAQ6jB,SAAW7jB,EAAQ6jB,SAAW,KAKxD3xB,EAAMw1F,sBAAwB,GAK9Bx1F,EAAMy1F,2BAA6B,CAAC,EAOpCz1F,EAAM01F,wBAA0B,CAAC,EAQjC11F,EAAM21F,iBAAmB,CAAC,EAK1B31F,EAAMgsF,qBACyBp2E,IAA3B9H,EAAQm+E,eAA+Bn+E,EAAQm+E,eAAiB,GAMpEjsF,EAAMsvF,OAAS,IAAIC,GAAA,EAMnBvvF,EAAM0vF,iBAAmB,CACrB,MAAS1vF,EAAM2vF,oBAAoBzhF,KAAKlO,GACxC,WAAcA,EAAM4vF,yBAAyB1hF,KAAKlO,GAClD,WAAcA,EAAM4vF,yBAAyB1hF,KAAKlO,GAClD,QAAWA,EAAM6vF,sBAAsB3hF,KAAKlO,GAC5C,WAAcA,EAAM8vF,yBAAyB5hF,KAAKlO,GAClD,gBAAmBA,EAAM+vF,8BAA8B7hF,KAAKlO,GAC5D,aAAgBA,EAAMgwF,2BAA2B9hF,KAAKlO,GACtD,mBAAsBA,EAAMkwF,iCAAiChiF,KAAKlO,GAClE,OAAUA,EAAMiwF,qBAAqB/hF,KAAKlO,IAEvCA,CACX,CAyaA,OAlgBA,GAAUo1F,EAAMvhF,GAiGhBuhF,EAAKhxF,UAAU8mF,WAAa,SAAU3qE,EAASq1E,GAC3C,IAAIC,OAA0BjgF,IAAfggF,GAA2BA,EACtCE,GAAc,SAAOv1E,GACrBvJ,EAAWuJ,EAAQ9I,cACvB,GAAIT,EAAU,CACV,IAAI++E,EAAgB32F,KAAKswF,iBAAiB14E,EAAS4uB,WAC/CmwD,IACA32F,KAAKs2F,wBAAwBI,GAAe9+E,EAAS4F,WAAU,IAAAk8B,gBAC/Di9C,EAAcx1E,EAASvJ,GAE/B,CACI6+E,IACAz2F,KAAKq2F,2BAA2BK,IAAe,SAAOv1E,EAAS+S,EAAA,SAAkBl0B,KAAKuvF,qBAAsBvvF,MAEpH,EAKAg2F,EAAKhxF,UAAU4xF,mBAAqB,SAAUz1E,GAC1CnhB,KAAK8rF,WAAW3qE,EACpB,EAKA60E,EAAKhxF,UAAU6xF,sBAAwB,SAAU11E,GAC7CnhB,KAAK2xF,cAAcxwE,EACvB,EAKA60E,EAAKhxF,UAAU8xF,aAAe,WAC1B,IAAIvkE,EAOJ,OANIvyB,KAAKm9E,UACL5qD,EAAWvyB,KAAKm9E,UAEXn9E,KAAK2tC,UACVpb,EAAWvyB,KAAK2tC,QAAQ2vC,eAErB/qD,CACX,EAKAyjE,EAAKhxF,UAAU6J,YAAc,SAAU4pC,GACnC,IAAIj5C,EAASQ,KAAK+2F,OAAOt+C,EAAIpnC,MAAOonC,EAAIxsC,WAAYwsC,EAAIvqC,KAKxD,OAJI1O,EAAOw3F,UACPv+C,EAAIxsC,WAAazM,EAAOmuF,OAAO7gF,MAAM,EAAG,GACxC2rC,EAAIpnC,MAAQ7R,EAAOouF,aAEhBn5E,EAAOzP,UAAU6J,YAAY7B,KAAKhN,KAAMy4C,EACnD,EAKAu9C,EAAKhxF,UAAUmsF,kBAAoB,SAAU14C,GACzC,IAAIt3B,EAAU40E,GAAoBt9C,GAClCz4C,KAAK8rF,WAAW3qE,EACpB,EAKA60E,EAAKhxF,UAAUosF,qBAAuB,SAAU34C,GAC5C,IAAIt3B,EAAU40E,GAAoBt9C,GAClCz4C,KAAK2xF,cAAcxwE,EACvB,EAKA60E,EAAKhxF,UAAUuqF,qBAAuB,SAAU92C,GAC5C,IAAIt3B,EAA0Ds3B,EAAU,OACxE,GAAIz4C,KAAKw+E,uBAAwB,CAC7B,IAAIwU,GAAM,SAAO7xE,GACX6xE,KAAOhzF,KAAKu2F,mBACdv2F,KAAKu2F,iBAAiBvD,GAAO7xE,EAErC,MAEInhB,KAAKi3F,eAAe91E,EAE5B,EAMA60E,EAAKhxF,UAAUs5E,cAAgB,SAAU7lC,GACrC,IAAIy+C,GAAmB,QAAUl3F,KAAKu2F,kBAKtC,OAJIW,EAAiB9zF,SACjB8zF,EAAiBznF,QAAQzP,KAAKi3F,eAAenoF,KAAK9O,OAClDA,KAAKu2F,iBAAmB,CAAC,IAEtB,CACX,EAQAP,EAAKhxF,UAAU2sF,cAAgB,SAAUxwE,EAASg2E,GAC9C,IAAIC,OAA8B5gF,IAAjB2gF,GAA6BA,EAC1CT,GAAc,SAAOv1E,GACrB/E,EAASpc,KAAKs2F,wBAAwBI,GAC1C,GAAIt6E,EAAQ,CACR,IAAIw1E,EAAQ5xF,KAAKkwF,OACbmH,EAAkB,GACtBzF,EAAMsC,gBAAgB93E,GAAQ,SAAU45B,GAChC70B,IAAY60B,EAAK70B,SACjBk2E,EAAgB/kF,KAAK0jC,EAE7B,IACA,IAAK,IAAIxrC,EAAI6sF,EAAgBj0F,OAAS,EAAGoH,GAAK,IAAKA,EAC/ConF,EAAM7jF,OAAOspF,EAAgB7sF,GAErC,CACI4sF,KACA,SAAcp3F,KAAKq2F,2BAA2BK,WACvC12F,KAAKq2F,2BAA2BK,GAE/C,EAOAV,EAAKhxF,UAAUmP,OAAS,SAAUjG,GAC9B,IAAIopF,EAAat3F,KAAK6iB,SAClBrT,EAAOxP,KAAKo2F,sBACZ7jE,EAAkEvyB,KAAK82F,eACvEQ,IACA9nF,EAAKC,QAAQ,OACbD,EAAKpM,OAAS,EACdmvB,EAAS9iB,QAAQzP,KAAK62F,sBAAsB/nF,KAAK9O,QAErDyU,EAAOzP,UAAUmP,OAAOnH,KAAKhN,KAAMkO,GAC/BA,IACIlO,KAAKm9E,UACL3tE,EAAK8C,MAAK,SAAOtS,KAAKm9E,UAAW7rD,GAAA,MAAyBtxB,KAAKmxF,kBAAmBnxF,OAAO,SAAOA,KAAKm9E,UAAW7rD,GAAA,SAA4BtxB,KAAKoxF,qBAAsBpxF,OAElKA,KAAK2tC,SACVn+B,EAAK8C,MAAK,SAAOtS,KAAK2tC,QAASojD,GAAA,aAA4B/wF,KAAKmxF,kBAAmBnxF,OAAO,SAAOA,KAAK2tC,QAASojD,GAAA,gBAA+B/wF,KAAKoxF,qBAAsBpxF,OAE7KuyB,EAAS9iB,QAAQzP,KAAK42F,mBAAmB9nF,KAAK9O,OAEtD,EAOAg2F,EAAKhxF,UAAU+xF,OAAS,SAAU1lF,EAAOk8E,EAAiBr/E,GACtD,IAAIqpF,EAAYrpF,EAAIwb,uBAAuB,CACvCrY,EAAM,GAAKrR,KAAK4sF,gBAChBv7E,EAAM,GAAKrR,KAAK4sF,kBAEhB4K,EAAatpF,EAAIwb,uBAAuB,CACxCrY,EAAM,GAAKrR,KAAK4sF,gBAChBv7E,EAAM,GAAKrR,KAAK4sF,kBAEhB7R,GAAM,IAAAhiC,gBAAe,CAACw+C,EAAWC,IACjCzsC,EAAW/qD,KAAKkwF,OAAO2C,YAAY9X,GAEnC/6E,KAAKi2F,UAAYj2F,KAAKk2F,QACtBnrC,EAAWA,EAAS1mB,QAAO,SAAUmO,GACjC,OAAOA,EAAQrxB,QAAQ9I,cAAcmuB,YAAcC,GAAA,cACvD,KAEJ,IAAIuwD,GAAU,EACVrJ,EAAS,KACTC,EAAc,KAClB,GAAwB,IAApB7iC,EAAS3nD,OACT,MAAO,CACH4zF,QAASA,EACTrJ,OAAQA,EACRC,YAAaA,GAOrB,IAJA,IAEI6J,EAFAl+E,EAAarL,EAAIvC,UAAUkO,gBAC3B69E,GAAsB,KAAApkE,oBAAmBi6D,EAAiBh0E,GAE1DgmD,EAAqB9lC,IAChBjvB,EAAI,EAAGA,EAAIugD,EAAS3nD,SAAUoH,EAAG,CACtC,IAAIwkF,EAAcjkC,EAASvgD,GAC3B,GAAY,IAAK,KAAA8oB,oBAAmB07D,EAAYx8C,QAAQ,GAAIj5B,GAC5D,GAAY,IAAK,KAAA+Z,oBAAmB07D,EAAYx8C,QAAQ,GAAIj5B,GAC5D,IAAIkO,GAAQ,QAAyBiwE,EAAqB,IACtDjwE,EAAQ83C,IACRk4B,EAAqBzI,EACrBzvB,EAAqB93C,EAE7B,CACA,IAAIimE,EAAiB+J,EAAmBjlD,QACxC,GAAIxyC,KAAKi2F,UAAYj2F,KAAKk2F,MAAO,CAC7B,IAAIrI,EAAS3/E,EAAIklB,uBAAuBs6D,EAAe,IACnDI,EAAS5/E,EAAIklB,uBAAuBs6D,EAAe,IACnDK,GAAe,QAA0B18E,EAAOw8E,GAChDG,GAAe,QAA0B38E,EAAOy8E,GACzC7rF,KAAKuF,KAAKvF,KAAK27B,IAAImwD,EAAcC,KAChChuF,KAAK4sF,kBACboK,GAAU,EACVrJ,EACII,EAAeC,EAAeN,EAAe,GAAKA,EAAe,GACrEE,EAAc1/E,EAAIklB,uBAAuBu6D,GAEjD,MACK,GAAI3tF,KAAKk2F,MAAO,CACjB,IAAIyB,EAAWF,EAAmBt2E,QAAQ9I,cAAcmuB,YACpDC,GAAA,eACJ,GAAIkxD,EAAU,CACV,IAAI1I,EAAiBwI,EAAmBt2E,QAAQ9I,cAC5CquB,GAAiB,KAAAC,qBACjBD,IACAuoD,EAAiBA,EACZj3E,QACAuP,UAAUmf,EAAgBntB,IAEnCo0E,GAAS,KAAA56D,mBAAiB,QAAgB2kE,EACS,GAAmBn+E,EAC1E,MAEI,GAAY,IAAK,KAAA+Z,oBAAmBo6D,EAAe,GAAIn0E,GACvD,GAAY,IAAK,KAAA+Z,oBAAmBo6D,EAAe,GAAIn0E,GACvDo0E,GAAS,KAAA56D,mBAAiB,QAAiB2kE,EAAqB,IAAcn+E,GAElFq0E,EAAc1/E,EAAIklB,uBAAuBu6D,IACrC,QAAmBt8E,EAAOu8E,IAAgB5tF,KAAK4sF,kBAC/CoK,GAAU,EACNh3F,KAAKi2F,UAAY0B,KACb9J,EAAS3/E,EAAIklB,uBAAuBs6D,EAAe,IACnDI,EAAS5/E,EAAIklB,uBAAuBs6D,EAAe,IACnDK,GAAe,QAA0BH,EAAaC,GACtDG,GAAe,QAA0BJ,EAAaE,GAC/C7rF,KAAKuF,KAAKvF,KAAK27B,IAAImwD,EAAcC,KAChChuF,KAAK4sF,kBACbe,EACII,EAAeC,EACTN,EAAe,GACfA,EAAe,GACzBE,EAAc1/E,EAAIklB,uBAAuBu6D,IAIzD,CAIA,OAHIqJ,IACApJ,EAAc,CAAC3rF,KAAKE,MAAMyrF,EAAY,IAAK3rF,KAAKE,MAAMyrF,EAAY,MAE/D,CACHoJ,QAASA,EACTrJ,OAAQA,EACRC,YAAaA,EAErB,EAKAoI,EAAKhxF,UAAUiyF,eAAiB,SAAU91E,GACtCnhB,KAAK2xF,cAAcxwE,GAAS,GAC5BnhB,KAAK8rF,WAAW3qE,GAAS,EAC7B,EAMA60E,EAAKhxF,UAAU6rF,qBAAuB,SAAU1vE,EAASvJ,GACrD,IAAI2B,EAAavZ,KAAK6iB,SAASlX,UAAUkO,gBACrCo1E,EAAiBr3E,EACjB8uB,GAAiB,KAAAC,qBACjBD,IACAuoD,EAAqEA,EAChEj3E,QACAuP,UAAUmf,EAAgBntB,IAEnC,IAAI4yC,GAAU,QAAW8iC,GACrBvoD,GACAylB,EAAQ5kC,UAAUhO,EAAYmtB,GAGlC,IADA,IAAIlkB,EAAc2pC,EAAQ3M,iBAAiB,GAClCh1C,EAAI,EAAGiL,EAAK+M,EAAYpf,OAAS,EAAGoH,EAAIiL,IAAMjL,EAAG,CACtD,IAAIgoC,EAAUhwB,EAAY1V,MAAMtC,EAAGA,EAAI,GACnCwkF,EAAc,CACd7tE,QAASA,EACTqxB,QAASA,GAEbxyC,KAAKkwF,OAAO6B,QAAO,IAAAh5C,gBAAevG,GAAUw8C,EAChD,CACJ,EAMAgH,EAAKhxF,UAAU8rF,iCAAmC,SAAU3vE,EAASvJ,GAEjE,IADA,IAAI6sC,EAAa7sC,EAASwtC,qBACjB56C,EAAI,EAAGA,EAAIi6C,EAAWrhD,SAAUoH,EAAG,CACxC,IAAImsF,EAAgB32F,KAAKswF,iBAAiB7rC,EAAWj6C,GAAGg8B,WACpDmwD,GACAA,EAAcx1E,EAASsjC,EAAWj6C,GAE1C,CACJ,EAMAwrF,EAAKhxF,UAAUwrF,yBAA2B,SAAUrvE,EAASvJ,GAEzD,IADA,IAAI4K,EAAc5K,EAAS4nC,iBAClBh1C,EAAI,EAAGiL,EAAK+M,EAAYpf,OAAS,EAAGoH,EAAIiL,IAAMjL,EAAG,CACtD,IAAIgoC,EAAUhwB,EAAY1V,MAAMtC,EAAGA,EAAI,GACnCwkF,EAAc,CACd7tE,QAASA,EACTqxB,QAASA,GAEbxyC,KAAKkwF,OAAO6B,QAAO,IAAAh5C,gBAAevG,GAAUw8C,EAChD,CACJ,EAMAgH,EAAKhxF,UAAU2rF,8BAAgC,SAAUxvE,EAASvJ,GAE9D,IADA,IAAIyzC,EAAQzzC,EAAS4nC,iBACZjpC,EAAI,EAAGwP,EAAKslC,EAAMjoD,OAAQmT,EAAIwP,IAAMxP,EAEzC,IADA,IAAIiM,EAAc6oC,EAAM90C,GACf/L,EAAI,EAAGiL,EAAK+M,EAAYpf,OAAS,EAAGoH,EAAIiL,IAAMjL,EAAG,CACtD,IAAIgoC,EAAUhwB,EAAY1V,MAAMtC,EAAGA,EAAI,GACnCwkF,EAAc,CACd7tE,QAASA,EACTqxB,QAASA,GAEbxyC,KAAKkwF,OAAO6B,QAAO,IAAAh5C,gBAAevG,GAAUw8C,EAChD,CAER,EAMAgH,EAAKhxF,UAAU0rF,yBAA2B,SAAUvvE,EAASvJ,GAEzD,IADA,IAAI6zC,EAAS7zC,EAAS4nC,iBACbh1C,EAAI,EAAGiL,EAAKg2C,EAAOroD,OAAQoH,EAAIiL,IAAMjL,EAAG,CAC7C,IAAIgY,EAAcipC,EAAOjhD,GACrBwkF,EAAc,CACd7tE,QAASA,EACTqxB,QAAS,CAAChwB,EAAaA,IAE3BxiB,KAAKkwF,OAAO6B,OAAOn6E,EAAS4F,YAAawxE,EAC7C,CACJ,EAMAgH,EAAKhxF,UAAU4rF,2BAA6B,SAAUzvE,EAASvJ,GAE3D,IADA,IAAIwwC,EAAWxwC,EAAS4nC,iBACfouB,EAAI,EAAGqkB,EAAK7pC,EAAShlD,OAAQwqE,EAAIqkB,IAAMrkB,EAE5C,IADA,IAAI1zB,EAAQkO,EAASwlB,GACZr3D,EAAI,EAAGwP,EAAKm0B,EAAM92C,OAAQmT,EAAIwP,IAAMxP,EAEzC,IADA,IAAIiM,EAAc03B,EAAM3jC,GACf/L,EAAI,EAAGiL,EAAK+M,EAAYpf,OAAS,EAAGoH,EAAIiL,IAAMjL,EAAG,CACtD,IAAIgoC,EAAUhwB,EAAY1V,MAAMtC,EAAGA,EAAI,GACnCwkF,EAAc,CACd7tE,QAASA,EACTqxB,QAASA,GAEbxyC,KAAKkwF,OAAO6B,QAAO,IAAAh5C,gBAAevG,GAAUw8C,EAChD,CAGZ,EAMAgH,EAAKhxF,UAAUurF,oBAAsB,SAAUpvE,EAASvJ,GACpD,IAAI4K,EAAc5K,EAAS4nC,iBACvBwvC,EAAc,CACd7tE,QAASA,EACTqxB,QAAS,CAAChwB,EAAaA,IAE3BxiB,KAAKkwF,OAAO6B,OAAOn6E,EAAS4F,YAAawxE,EAC7C,EAMAgH,EAAKhxF,UAAUyrF,sBAAwB,SAAUtvE,EAASvJ,GAEtD,IADA,IAAIsiC,EAAQtiC,EAAS4nC,iBACZjpC,EAAI,EAAGwP,EAAKm0B,EAAM92C,OAAQmT,EAAIwP,IAAMxP,EAEzC,IADA,IAAIiM,EAAc03B,EAAM3jC,GACf/L,EAAI,EAAGiL,EAAK+M,EAAYpf,OAAS,EAAGoH,EAAIiL,IAAMjL,EAAG,CACtD,IAAIgoC,EAAUhwB,EAAY1V,MAAMtC,EAAGA,EAAI,GACnCwkF,EAAc,CACd7tE,QAASA,EACTqxB,QAASA,GAEbxyC,KAAKkwF,OAAO6B,QAAO,IAAAh5C,gBAAevG,GAAUw8C,EAChD,CAER,EACOgH,CACX,CApgByB,CAogBvBnV,GC9lBF,IAAI,GAAwC,WACxC,IAAIzsE,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GA0ExCojF,GAAgC,SAAUnjF,GAS1C,SAASmjF,EAAexmF,EAAMmhB,EAAUtmB,EAAY4rF,EAAiB7jE,GACjE,IAAIpzB,EAAQ6T,EAAOzH,KAAKhN,KAAMoR,IAASpR,KA2BvC,OArBAY,EAAM2xB,SAAWA,EAOjB3xB,EAAMqL,WAAaA,EAOnBrL,EAAMi3F,gBAAkBA,EAMxBj3F,EAAMozB,gBAAkBA,EACjBpzB,CACX,CACA,OAtCA,GAAUg3F,EAAgBnjF,GAsCnBmjF,CACX,CAxCmC,CAwCjChW,EAAA,IAuNF,SA9M+B,SAAUntE,GAKrC,SAASqjF,EAAUziF,GACf,IAqBI2L,EArBApgB,EAAQZ,KACR0O,EAAU2G,GAA4B,CAAC,EAqB3C,IApBAzU,EAAQ6T,EAAOzH,KAAKhN,KAAoD,IAAcA,MAMhF+3F,gBAAkB,KAMxBn3F,EAAMo3F,iBAAmB,KAKzBp3F,EAAMu8E,eAAiC3mE,IAArB9H,EAAQ6jB,SAAyB7jB,EAAQ6jB,SAAW,KAGlE7jB,EAAQkgB,OACR,GAA8B,mBAAnBlgB,EAAQkgB,OACf5N,EAActS,EAAQkgB,WAErB,CACD,IAAIwmE,EAAW1mF,EAAQkgB,OACvB5N,EAAc,SAAUI,GACpB,OAAO,SAASg0E,EAAUh0E,EAC9B,CACJ,MAGAJ,EAAc,KAuBlB,OAjBApgB,EAAMy0F,aAAer0E,EAKrBpgB,EAAMs0F,QAAUxmF,EAAQ21B,OAAS31B,EAAQ21B,OAAS,KAKlDzjC,EAAMu0F,cAAgBzmF,EAAQmS,aAAenS,EAAQmS,aAAe,EAKpEjgB,EAAMq3F,aAAe,KACrBr3F,EAAM2Q,kBAAiB,QAAmB,GAA6B3Q,EAAMs3F,sBACtEt3F,CACX,CA4IA,OA3MA,GAAUk3F,EAAWrjF,GAqErBqjF,EAAU9yF,UAAUm5E,gBAAkB,SAAUj4D,GAE5C,GADAlmB,KAAKi4F,aAAej4F,KAAKm4F,iBAAiBjyE,EAAM7U,MAAO6U,EAAMhY,MACxDlO,KAAK+3F,iBAAmB/3F,KAAKi4F,aAAc,CAC5Cj4F,KAAKg4F,iBAAmB9xE,EAAMja,WAC9BjM,KAAK+3F,gBAAkB7xE,EAAMja,WAC7BjM,KAAKq+E,gBAAgBn4D,GACrB,IAAIqM,EAAWvyB,KAAKm9E,WAAa,IAAIhoE,EAAA,EAAW,CAACnV,KAAKi4F,eAEtD,OADAj4F,KAAKmR,cAAc,IAAIymF,GAxKf,iBAwKiErlE,EAAUrM,EAAMja,WAAYjM,KAAKg4F,iBAAkB9xE,KACrH,CACX,CACA,OAAO,CACX,EAMA4xE,EAAU9yF,UAAUs5E,cAAgB,SAAUp4D,GAC1C,GAAIlmB,KAAK+3F,gBAAiB,CACtB/3F,KAAK+3F,gBAAkB,KACvB/3F,KAAKq+E,gBAAgBn4D,GACrB,IAAIqM,EAAWvyB,KAAKm9E,WAAa,IAAIhoE,EAAA,EAAW,CAACnV,KAAKi4F,eAItD,OAHAj4F,KAAKmR,cAAc,IAAIymF,GA3KjB,eA2KiErlE,EAAUrM,EAAMja,WAAYjM,KAAKg4F,iBAAkB9xE,IAE1HlmB,KAAKg4F,iBAAmB,MACjB,CACX,CACA,OAAO,CACX,EAKAF,EAAU9yF,UAAUo5E,gBAAkB,SAAUl4D,GAC5C,GAAIlmB,KAAK+3F,gBAAiB,CACtB,IAAIK,EAAgBlyE,EAAMja,WACtBosF,EAAWD,EAAc,GAAKp4F,KAAK+3F,gBAAgB,GACnDO,EAAWF,EAAc,GAAKp4F,KAAK+3F,gBAAgB,GACnDxlE,EAAWvyB,KAAKm9E,WAAa,IAAIhoE,EAAA,EAAW,CAACnV,KAAKi4F,eACtD1lE,EAAS9iB,SAAQ,SAAU0R,GACvB,IAAI0uC,EAAO1uC,EAAQ9I,cACnBw3C,EAAKmQ,UAAUq4B,EAAUC,GACzBn3E,EAAQtJ,YAAYg4C,EACxB,IACA7vD,KAAK+3F,gBAAkBK,EACvBp4F,KAAKmR,cAAc,IAAIymF,GAxMlB,cAwMiErlE,EAAU6lE,EAAep4F,KAAKg4F,iBAAkB9xE,GAC1H,CACJ,EAKA4xE,EAAU9yF,UAAUq5E,gBAAkB,SAAUn4D,GAC5C,IAAIhQ,EAAOgQ,EAAMhY,IAAIe,cAGjBjP,KAAKm4F,iBAAiBjyE,EAAM7U,MAAO6U,EAAMhY,MACzCgI,EAAK3J,UAAUwB,OAAO/N,KAAK+3F,gBAAkB,UAAY,eACzD7hF,EAAK3J,UAAUqB,IAAI5N,KAAK+3F,gBAAkB,cAAgB,YAG1D7hF,EAAK3J,UAAUwB,OAAO,UAAW,cAEzC,EAUA+pF,EAAU9yF,UAAUmzF,iBAAmB,SAAU9mF,EAAOnD,GACpD,OAAOA,EAAIkkB,sBAAsB/gB,EAAO,SAAU8P,EAASC,GACvD,GAAIphB,KAAKk1F,QAAQ/zE,EAASC,MACjBphB,KAAKm9E,YAAa,SAASn9E,KAAKm9E,UAAUpnE,WAAYoL,IACvD,OAAOA,CAGnB,EAAErS,KAAK9O,MAAO,CACVghB,YAAahhB,KAAKq1F,aAClBx0E,aAAc7gB,KAAKm1F,eAE3B,EAMA2C,EAAU9yF,UAAUwwF,gBAAkB,WAClC,OAAOx1F,KAAKm1F,aAChB,EAOA2C,EAAU9yF,UAAU0wF,gBAAkB,SAAU70E,GAC5C7gB,KAAKm1F,cAAgBt0E,CACzB,EAOAi3E,EAAU9yF,UAAUmP,OAAS,SAAUjG,GACnC,IAAIqqF,EAASv4F,KAAK6iB,SAClBpO,EAAOzP,UAAUmP,OAAOnH,KAAKhN,KAAMkO,GACnClO,KAAKqqF,aAAakO,EACtB,EAIAT,EAAU9yF,UAAUkzF,qBAAuB,WACvCl4F,KAAKqqF,aAAa,KACtB,EAKAyN,EAAU9yF,UAAUqlF,aAAe,SAAUkO,GACzC,IAAIrqF,EAAMlO,KAAK6iB,SACXi7D,EAAS99E,KAAKs0B,YACbpmB,GAAQ4vE,IACT5vE,EAAMA,GAAOqqF,IAEErqF,EAAIe,cACV1C,UAAUwB,OAAO,UAAW,cAG7C,EACO+pF,CACX,CA7M8B,CA6M5BjX,GCxPK,SAAS2X,GAASnjF,GACrB,IAAI3G,EAAU2G,GAA4B,CAAC,EACvCyT,EAAe,IAAI3T,EAAA,EACnBkrE,EAAU,IAAIxhE,GAAA,GAAS,KAAO,IAAM,KAoDxC,YAnDwDrI,IAA/B9H,EAAQ+pF,oBAC3B/pF,EAAQ+pF,qBAGV3vE,EAAaxW,KAAK,IAAI,SAEwBkE,IAA5B9H,EAAQgqF,iBAAgChqF,EAAQgqF,kBAElE5vE,EAAaxW,KAAK,IAAI,EAAgB,CAClCmV,MAAO/Y,EAAQiqF,UACf5sF,SAAU2C,EAAQkqF,sBAGQpiF,IAApB9H,EAAQmqF,SAAwBnqF,EAAQmqF,UAElD/vE,EAAaxW,KAAK,IAAI,EAAQ,CAC1ByW,YAAara,EAAQqa,YACrBs3D,QAASA,WAGyB7pE,IAAxB9H,EAAQoqF,aAA4BpqF,EAAQoqF,cAE1DhwE,EAAaxW,KAAK,IAAI,UAEYkE,IAAtB9H,EAAQqqF,WAA0BrqF,EAAQqqF,YAEtDjwE,EAAaxW,KAAK,IAAI,GAAU,CAC5BvG,SAAU2C,EAAQkqF,sBAGUpiF,IAArB9H,EAAQsqF,UAAyBtqF,EAAQsqF,YAEpDlwE,EAAaxW,KAAK,IAAI,GACtBwW,EAAaxW,KAAK,IAAI,GAAa,CAC/BmV,MAAO/Y,EAAQiqF,UACf5sF,SAAU2C,EAAQkqF,uBAGsBpiF,IAA3B9H,EAAQuqF,gBAA+BvqF,EAAQuqF,iBAEhEnwE,EAAaxW,KAAK,IAAI,GAAe,CACjCyW,YAAara,EAAQqa,YACrBhd,SAAU2C,EAAQkqF,sBAGoBpiF,IAA1B9H,EAAQwqF,eAA8BxqF,EAAQwqF,gBAE9DpwE,EAAaxW,KAAK,IAAI,EAAS,CAC3BvG,SAAU2C,EAAQkqF,gBAGnB9vE,CACX,mDCvIQ1U,8DADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAiTJ,QAxQ+B,SAAUC,GAKrC,SAAS0kF,EAAUzqF,GACf,IAAI9N,EAAQ6T,EAAOzH,KAAKhN,OAASA,KAI7B8X,GAAa,QAAO,CAAC,EAAGpJ,GA4B5B,OA3BAoJ,EAAW,kBACatB,IAApB9H,EAAQ0qF,QAAwB1qF,EAAQ0qF,QAAU,GACtD,OAAoD,iBAAtCthF,EAAW,aAAqC,IAC9DA,EAAW,kBACatB,IAApB9H,EAAQuX,SAAwBvX,EAAQuX,QAC5CnO,EAAW,aAAyBpJ,EAAQ6U,OAC5CzL,EAAW,yBACmBtB,IAA1B9H,EAAQovB,cAA8BpvB,EAAQovB,cAAgBrE,IAClE3hB,EAAW,yBACmBtB,IAA1B9H,EAAQqvB,cAA8BrvB,EAAQqvB,cAAgB,EAClEjmB,EAAW,mBACatB,IAApB9H,EAAQoxB,QAAwBpxB,EAAQoxB,SAAU,IACtDhoB,EAAW,mBACatB,IAApB9H,EAAQqxB,QAAwBrxB,EAAQqxB,QAAUtG,IAKtD74B,EAAMy4F,gBACuB7iF,IAAzBsB,EAAWpL,UAA0BgC,EAAQhC,UAAY,kBACtDoL,EAAWpL,UAClB9L,EAAMmX,cAAcD,GAKpBlX,EAAM04F,OAAS,KACR14F,CACX,CA+NA,OArQAyT,EAAU8kF,EAAW1kF,GA0CrB0kF,EAAUn0F,UAAUu0F,aAAe,WAC/B,OAAOv5F,KAAKq5F,UAChB,EAQAF,EAAUn0F,UAAUw0F,cAAgB,SAAUC,GAE1C,IAAI58E,EAAQ7c,KAAKs5F,QACI,CACbl4E,MAAOphB,KACPkhB,aAAyB1K,IAAhBijF,GAAmCA,GAEhDl2E,EAASvjB,KAAK05F,YAYlB,OAXA78E,EAAMu8E,SAAU,QAAMn3F,KAAKE,MAA0B,IAApBnC,KAAK25F,cAAsB,IAAK,EAAG,GACpE98E,EAAMmH,YAAchkB,KAAK45F,iBACzB/8E,EAAMoJ,QAAUjmB,KAAK65F,aACrBh9E,EAAMT,OAASpc,KAAKwd,YACpBX,EAAM0G,YACS/M,IAAX+M,EAAuBA,GAA2B,IAAlB1G,EAAMqE,QAAoBuY,IAAW,EACzE5c,EAAMihB,cAAgB99B,KAAKmlC,mBAC3BtoB,EAAMkhB,cAAgB97B,KAAKm7B,IAAIp9B,KAAKolC,mBAAoB,GACxDvoB,EAAMijB,QAAU9/B,KAAKwlC,aACrB3oB,EAAMkjB,QAAU//B,KAAKqlC,aACrBrlC,KAAKs5F,OAASz8E,EACPA,CACX,EAOAs8E,EAAUn0F,UAAU80F,eAAiB,SAAU1kF,GAC3C,OAAO,SACX,EAOA+jF,EAAUn0F,UAAUkuB,oBAAsB,SAAU6mE,GAChD,OAAO,SACX,EAQAZ,EAAUn0F,UAAUwY,UAAY,WAC5B,OAA+Dxd,KAAKiF,IAAI,WAC5E,EAOAk0F,EAAUn0F,UAAUmgC,iBAAmB,WACnC,OAA8BnlC,KAAKiF,IAAI,mBAC3C,EAOAk0F,EAAUn0F,UAAUogC,iBAAmB,WACnC,OAA8BplC,KAAKiF,IAAI,mBAC3C,EAOAk0F,EAAUn0F,UAAUwgC,WAAa,WAC7B,OAA8BxlC,KAAKiF,IAAI,aAC3C,EAOAk0F,EAAUn0F,UAAUqgC,WAAa,WAC7B,OAA8BrlC,KAAKiF,IAAI,aAC3C,EAOAk0F,EAAUn0F,UAAU20F,WAAa,WAC7B,OAA8B35F,KAAKiF,IAAI,YAC3C,EAKAk0F,EAAUn0F,UAAU40F,eAAiB,WACjC,OAAO,SACX,EAOAT,EAAUn0F,UAAU60F,WAAa,WAC7B,OAA+B75F,KAAKiF,IAAI,YAC5C,EAQAk0F,EAAUn0F,UAAU00F,UAAY,WAC5B,OAA8B15F,KAAKiF,IAAI,YAC3C,EAQAk0F,EAAUn0F,UAAUqoF,UAAY,SAAUjxE,GACtCpc,KAAKyW,IAAI,WAAsB2F,EACnC,EAOA+8E,EAAUn0F,UAAUg1F,iBAAmB,SAAUl8D,GAC7C99B,KAAKyW,IAAI,mBAA8BqnB,EAC3C,EAOAq7D,EAAUn0F,UAAUi1F,iBAAmB,SAAUl8D,GAC7C/9B,KAAKyW,IAAI,mBAA8BsnB,EAC3C,EASAo7D,EAAUn0F,UAAUugC,WAAa,SAAUxF,GACvC//B,KAAKyW,IAAI,aAAwBspB,EACrC,EASAo5D,EAAUn0F,UAAUygC,WAAa,SAAU3F,GACvC9/B,KAAKyW,IAAI,aAAwBqpB,EACrC,EAOAq5D,EAAUn0F,UAAUk1F,WAAa,SAAUd,IACvC,OAA0B,iBAAZA,EAAsB,IACpCp5F,KAAKyW,IAAI,YAAuB2iF,EACpC,EAOAD,EAAUn0F,UAAUk2E,WAAa,SAAUj1D,GACvCjmB,KAAKyW,IAAI,YAAuBwP,EACpC,EAQAkzE,EAAUn0F,UAAUm1F,UAAY,SAAUC,GACtCp6F,KAAKyW,IAAI,YAAuB2jF,EACpC,EAIAjB,EAAUn0F,UAAUgS,gBAAkB,WAC9BhX,KAAKs5F,SACLt5F,KAAKs5F,OAAOl4E,MAAQ,KACpBphB,KAAKs5F,OAAS,MAElB7kF,EAAOzP,UAAUgS,gBAAgBhK,KAAKhN,KAC1C,EACOm5F,CACX,CAvQ8B,CAuQ5B,qEC1TM/kF,yHADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GA6CAM,EACQ,SAyKZ,QA/JgC,SAAUL,GAKtC,SAAS4lF,EAAWhlF,GAChB,IAAIzU,EAAQZ,KACR0O,EAAU2G,GAAe,CAAC,EAC1Bm6D,GAAsC,QAAO,CAAC,EAAG9gE,UAC9C8gE,EAAY5gD,OACnB,IAAIA,EAASlgB,EAAQkgB,OAyBrB,OAxBAhuB,EAAQ6T,EAAOzH,KAAKhN,KAAMwvE,IAAgBxvE,MAKpCs6F,oBAAsB,GAK5B15F,EAAM25F,cAAgB,CAAC,EACvB35F,EAAM2Q,kBAAiB,QAAmBuD,GAAkBlU,EAAM45F,sBAC9D5rE,EACIztB,MAAMkP,QAAQue,GACdA,EAAS,IAAI,IAAWA,EAAO9hB,QAAS,CAAEyI,QAAQ,KAGlD,OAAuD,mBAAvB,EAAiB,SAAkB,IAIvEqZ,EAAS,IAAI,SAAWpY,EAAW,CAAEjB,QAAQ,IAEjD3U,EAAM65F,UAAU7rE,GACThuB,CACX,CAyHA,OA5JAyT,EAAUgmF,EAAY5lF,GAuCtB4lF,EAAWr1F,UAAU01F,mBAAqB,WACtC16F,KAAK2Y,SACT,EAIA0hF,EAAWr1F,UAAUw1F,qBAAuB,WACxCx6F,KAAKs6F,oBAAoB7qF,QAAQ,MACjCzP,KAAKs6F,oBAAoBl3F,OAAS,EAClC,IAAIwrB,EAAS5uB,KAAK+xB,YAElB,IAAK,IAAI/e,KADThT,KAAKs6F,oBAAoBhoF,MAAK,QAAOsc,EAAQ,QAAyB5uB,KAAK26F,iBAAkB36F,OAAO,QAAO4uB,EAAQ,WAA4B5uB,KAAK46F,oBAAqB56F,OAC1JA,KAAKu6F,cAChBv6F,KAAKu6F,cAAcvnF,GAAIvD,QAAQ,OAEnC,QAAMzP,KAAKu6F,eAEX,IADA,IAAIM,EAAcjsE,EAAO7Y,WAChBvL,EAAI,EAAGiL,EAAKolF,EAAYz3F,OAAQoH,EAAIiL,EAAIjL,IAAK,CAClD,IAAI4W,EAAQy5E,EAAYrwF,GACxBxK,KAAKu6F,eAAc,QAAOn5E,IAAU,EAChC,QAAOA,EAAO,mBAAgCphB,KAAK06F,mBAAoB16F,OACvE,QAAOohB,EAAO,WAAkBphB,KAAK06F,mBAAoB16F,MAEjE,CACAA,KAAK2Y,SACT,EAKA0hF,EAAWr1F,UAAU21F,iBAAmB,SAAUG,GAC9C,IAAI15E,EAAoD05E,EAAuB,QAC/E96F,KAAKu6F,eAAc,QAAOn5E,IAAU,EAChC,QAAOA,EAAO,mBAAgCphB,KAAK06F,mBAAoB16F,OACvE,QAAOohB,EAAO,WAAkBphB,KAAK06F,mBAAoB16F,OAE7DA,KAAK2Y,SACT,EAKA0hF,EAAWr1F,UAAU41F,oBAAsB,SAAUE,GACjD,IAAI15E,EAAoD05E,EAAuB,QAC3EnuE,GAAM,QAAOvL,GACjBphB,KAAKu6F,cAAc5tE,GAAKld,QAAQ,aACzBzP,KAAKu6F,cAAc5tE,GAC1B3sB,KAAK2Y,SACT,EASA0hF,EAAWr1F,UAAU+sB,UAAY,WAC7B,OAAwF/xB,KAAKiF,IAAI6P,EACrG,EASAulF,EAAWr1F,UAAUy1F,UAAY,SAAU7rE,GACvC5uB,KAAKyW,IAAI3B,EAAiB8Z,EAC9B,EAKAyrE,EAAWr1F,UAAU80F,eAAiB,SAAU1kF,GAC5C,IAAIU,OAAsBU,IAAdpB,EAA0BA,EAAY,GAIlD,OAHApV,KAAK+xB,YAAYtiB,SAAQ,SAAU2R,GAC/BA,EAAM04E,eAAehkF,EACzB,IACOA,CACX,EAKAukF,EAAWr1F,UAAUkuB,oBAAsB,SAAU6mE,GACjD,IAAIgB,OAAwBvkF,IAAfujF,EAA2BA,EAAa,GACjDtqC,EAAMsrC,EAAO33F,OACjBpD,KAAK+xB,YAAYtiB,SAAQ,SAAU2R,GAC/BA,EAAM8R,oBAAoB6nE,EAC9B,IAEA,IADA,IAAIC,EAAgBh7F,KAAKw5F,gBAChBhvF,EAAIilD,EAAKh6C,EAAKslF,EAAO33F,OAAQoH,EAAIiL,EAAIjL,IAAK,CAC/C,IAAI0X,EAAa64E,EAAOvwF,GACxB0X,EAAWk3E,SAAW4B,EAAc5B,QACpCl3E,EAAW+D,QAAU/D,EAAW+D,SAAW+0E,EAAc/0E,QACzD/D,EAAW4b,cAAgB77B,KAAK27B,IAAI1b,EAAW4b,cAAek9D,EAAcl9D,eAC5E5b,EAAW6b,cAAgB97B,KAAKm7B,IAAIlb,EAAW6b,cAAei9D,EAAcj9D,eAC5E7b,EAAW4d,QAAU79B,KAAKm7B,IAAIlb,EAAW4d,QAASk7D,EAAcl7D,SAChE5d,EAAW6d,QAAU99B,KAAK27B,IAAI1b,EAAW6d,QAASi7D,EAAcj7D,cACnCvpB,IAAzBwkF,EAAc5+E,cACY5F,IAAtB0L,EAAW9F,OACX8F,EAAW9F,QAAS,IAAAu/B,iBAAgBz5B,EAAW9F,OAAQ4+E,EAAc5+E,QAGrE8F,EAAW9F,OAAS4+E,EAAc5+E,OAG9C,CACA,OAAO2+E,CACX,EAIAV,EAAWr1F,UAAU40F,eAAiB,WAClC,OAAO,SACX,EACOS,CACX,CA9J+B,CA8J7B,oEChOMjmF,YADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAuDJ,QAboC,SAAUC,GAK1C,SAASwmF,EAAe5lF,GACpB,IACI3G,EAAU2G,GAA4B,CAAC,EAE3C,OADQZ,EAAOzH,KAAKhN,KAAM0O,IAAY1O,IAE1C,CACA,OAVAqU,EAAU4mF,EAAgBxmF,GAUnBwmF,CACX,CAZmC,CAYjCC,EAAA,uFCjEE,EAAwC,WACxC,IAAI9mF,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GA2K5C,QA7I8C,SAAUC,GAKpD,SAAS0mF,EAAyBC,GAC9B,IAAIx6F,EAAQ6T,EAAOzH,KAAKhN,KAAMo7F,IAAep7F,KAM7C,OADAY,EAAM8b,OAAS,KACR9b,CACX,CA8HA,OA1IA,EAAUu6F,EAA0B1mF,GAgBpC0mF,EAAyBn2F,UAAU+X,SAAW,WAC1C,OAAQ/c,KAAK0c,OAAgB1c,KAAK0c,OAAOK,WAAnB,IAC1B,EAMAo+E,EAAyBn2F,UAAUq2F,aAAe,SAAUp7E,GACxD,IAAIiC,EAAajC,EAAW4B,iBAAiB5B,EAAW8D,YACpDzH,EAAa2D,EAAW3D,WACxBiE,EAAYN,EAAWM,UACvB+6E,EAAiB/6E,EAAUlE,WAC3Bk/E,EAAcv7F,KAAKy1F,WAAWlzE,YAC9BqS,EAAQ3U,EAAW4U,UACnB2mE,EAAiBv7E,EAAW7D,OAIhC,QAH0B5F,IAAtB0L,EAAW9F,SACXo/E,GAAiB,IAAA7/C,iBAAgB6/C,GAAgB,IAAA97D,gBAAexd,EAAW9F,OAAQmE,EAAUhH,eAE5Fqb,EAAME,EAAA,eACNF,EAAME,EAAA,kBACN,IAAAL,SAAQ+mE,GACT,GAAID,EAAa,CACb,IAAIhiF,EAAagH,EAAUhH,WAC3B,IAAK,IAA4B,CAC7B,IAAIkiF,EAAmBF,EAAY1hF,gBAC/B4hF,IACAliF,EAAakiF,EAErB,CACA,IAAIjgF,EAAQ+/E,EAAYx+E,SAASy+E,EAAgBF,EAAgBh/E,EAAY/C,GACzEiC,GAASxb,KAAK07F,UAAUlgF,KACxBxb,KAAK0c,OAASlB,EAEtB,MAEIxb,KAAK0c,OAAS,KAGtB,QAAS1c,KAAK0c,MAClB,EAOAy+E,EAAyBn2F,UAAU8d,YAAc,SAAU7C,EAAYhO,GACnE,IAAIuJ,EAAQxb,KAAK0c,OACbi/E,EAAcngF,EAAMgC,YACpBo+E,EAAkBpgF,EAAMkC,gBACxBm+E,EAAkBrgF,EAAMiC,gBACxByE,EAAajC,EAAW4B,iBAAiB5B,EAAW8D,YACpDzH,EAAa2D,EAAW3D,WACxBiE,EAAYN,EAAWM,UACvBu7E,EAAav7E,EAAUvU,OACvBsvF,EAAiB/6E,EAAUlE,WAC3BqE,EAAOT,EAAWS,KAClB8wB,EAASl1B,EAAas/E,GAAoBN,EAAiBO,GAC3DxwF,EAAQpJ,KAAKE,MAAMue,EAAK,GAAKpE,GAC7BrL,EAAShP,KAAKE,MAAMue,EAAK,GAAKpE,GAC9BqE,EAAWJ,EAAUI,SACzB,GAAIA,EAAU,CACV,IAAIo7E,EAAS95F,KAAKE,MAAMF,KAAKuF,KAAK6D,EAAQA,EAAQ4F,EAASA,IAC3D5F,EAAQ0wF,EACR9qF,EAAS8qF,CACb,EAEA,QAAiB/7F,KAAKg8F,eAAgB/7E,EAAWS,KAAK,GAAK,EAAGT,EAAWS,KAAK,GAAK,EAAG,EAAIpE,EAAY,EAAIA,EAAYqE,GAAWtV,EAAQ,GAAI4F,EAAS,IACtJ,QAAYjR,KAAKi8F,sBAAuBj8F,KAAKg8F,gBAC7C,IAAIE,GAAkB,QAAsBl8F,KAAKg8F,gBACjDh8F,KAAKm8F,aAAalqF,EAAQiqF,EAAiBh6E,EAAWk3E,SACtD,IAAI95F,EAAUU,KAAKV,QACfof,EAASpf,EAAQof,OACjBA,EAAOrT,OAASA,GAASqT,EAAOzN,QAAUA,GAC1CyN,EAAOrT,MAAQA,EACfqT,EAAOzN,OAASA,GAEVjR,KAAKo8F,iBACX98F,EAAQ+8F,UAAU,EAAG,EAAGhxF,EAAO4F,GAGnC,IAAIqrF,GAAU,EACd,GAAIp6E,EAAW9F,OAAQ,CACnB,IAAI03D,GAAc,IAAAp0C,gBAAexd,EAAW9F,OAAQmE,EAAUhH,aAC9D+iF,IACK,IAAAjjD,gBAAey6B,EAAa7zD,EAAW7D,UACpC,IAAAugB,YAAWm3C,EAAa7zD,EAAW7D,UAEvCpc,KAAKu8F,cAAcj9F,EAAS2gB,EAAY6zD,EAEhD,CACA,IAAIn4D,EAAMH,EAAMuB,WACZwK,GAAY,QAAiBvnB,KAAKw8F,cAAenxF,EAAQ,EAAG4F,EAAS,EAAGugC,EAAOA,EAAO,EAAIqqD,GAAmBF,EAAY,GAAKG,EAAW,IAAOF,EAAkBC,GAAmBC,EAAW,GAAKH,EAAY,IAAOC,GAC5N57F,KAAK28E,mBAAsBif,EAAkBt/E,EAAcu/E,EAC3D,IAAIj8E,EAAK2H,EAAU,GACf1H,EAAK0H,EAAU,GACfk1E,EAAK9gF,EAAItQ,MAAQkc,EAAU,GAC3Bm1E,EAAK/gF,EAAI1K,OAASsW,EAAU,GAGhC,IAFA,QAAOjoB,EAASU,KAAKy1F,WAAWlzE,YAAYo6E,qBAC5C38F,KAAK48F,UAAUt9F,EAAS2gB,GACpBw8E,GAAM,IAAOC,GAAM,GAAK,CACxB,IAAItD,EAAUl3E,EAAWk3E,QACrByD,OAAgB,EACJ,IAAZzD,IACAyD,EAAgB78F,KAAKV,QAAQw9F,YAC7B98F,KAAKV,QAAQw9F,YAAc1D,GAE/Bp5F,KAAKV,QAAQy9F,UAAUphF,EAAK,EAAG,GAAIA,EAAItQ,OAAQsQ,EAAI1K,OAAQhP,KAAKE,MAAMyd,GAAK3d,KAAKE,MAAM0d,GAAK5d,KAAKE,MAAMs6F,GAAKx6F,KAAKE,MAAMu6F,IACtG,IAAZtD,IACAp5F,KAAKV,QAAQw9F,YAAcD,EAEnC,CAQA,OAPA78F,KAAKg9F,WAAW19F,EAAS2gB,GACrBq8E,GACAh9F,EAAQ29F,UAERf,IAAoBx9E,EAAOzO,MAAMsX,YACjC7I,EAAOzO,MAAMsX,UAAY20E,GAEtBl8F,KAAK2K,SAChB,EACOwwF,CACX,CA5I6C,CA4I3C,KC1KF,IAAI,EAAwC,WACxC,IAAI/mF,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GA6C5C,QAjBgC,SAAUC,GAKtC,SAASyoF,EAAW7nF,GAChB,OAAOZ,EAAOzH,KAAKhN,KAAMqV,IAAgBrV,IAC7C,CAQA,OAdA,EAAUk9F,EAAYzoF,GAWtByoF,EAAWl4F,UAAUgkB,eAAiB,WAClC,OAAO,IAAI,EAAyBhpB,KACxC,EACOk9F,CACX,CAhB+B,CAgB7BC,6DC3CM/oF,2FADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAqSG,SAAS4oF,EAAOl7E,EAAY3B,GAC/B,IAAK2B,EAAW+D,QACZ,OAAO,EAEX,IAAI5J,EAAakE,EAAUlE,WAC3B,GAAIA,EAAa6F,EAAW6b,eACxB1hB,GAAc6F,EAAW4b,cACzB,OAAO,EAEX,IAAIjyB,EAAO0U,EAAU1U,KACrB,OAAOA,EAAOqW,EAAW4d,SAAWj0B,GAAQqW,EAAW6d,OAC3D,CACA,QA5N2B,SAAUtrB,GAKjC,SAASymF,EAAMxsF,GACX,IAAI9N,EAAQZ,KACRwvE,GAAc,QAAO,CAAC,EAAG9gE,UACtB8gE,EAAYltD,QACnB1hB,EAAQ6T,EAAOzH,KAAKhN,KAAMwvE,IAAgBxvE,MAKpCq9F,kBAAoB,KAK1Bz8F,EAAM08F,cAAgB,KAKtB18F,EAAM28F,iBAAmB,KAKzB38F,EAAM8vB,UAAY,KAEdhiB,EAAQqU,SACRniB,EAAMmiB,OAASrU,EAAQqU,QAEvBrU,EAAQR,KACRtN,EAAMuT,OAAOzF,EAAQR,KAEzBtN,EAAM2Q,kBAAiB,QAAmB,YAAuB3Q,EAAM48F,6BACvE,IAAIl7E,EAAS5T,EAAQ4T,OACY5T,EAAc,OACzC,KAEN,OADA9N,EAAMoyE,UAAU1wD,GACT1hB,CACX,CA4JA,OAtMAyT,EAAU6mF,EAAOzmF,GA+CjBymF,EAAMl2F,UAAU80F,eAAiB,SAAU1kF,GACvC,IAAIU,EAAQV,GAAwB,GAEpC,OADAU,EAAMxD,KAAKtS,MACJ8V,CACX,EAKAolF,EAAMl2F,UAAUkuB,oBAAsB,SAAU6mE,GAC5C,IAAIgB,EAAShB,GAA0B,GAEvC,OADAgB,EAAOzoF,KAAKtS,KAAKw5F,iBACVuB,CACX,EAOAG,EAAMl2F,UAAUud,UAAY,WACxB,OAAkCviB,KAAKiF,IAAI,aAA0B,IACzE,EAIAi2F,EAAMl2F,UAAU40F,eAAiB,WAC7B,IAAIt3E,EAAStiB,KAAKuiB,YAClB,OAAQD,EAAiCA,EAAO3E,WAA/B,aACrB,EAIAu9E,EAAMl2F,UAAUy4F,oBAAsB,WAClCz9F,KAAK2Y,SACT,EAIAuiF,EAAMl2F,UAAUw4F,4BAA8B,WACtCx9F,KAAKu9F,oBACL,QAAcv9F,KAAKu9F,kBACnBv9F,KAAKu9F,iBAAmB,MAE5B,IAAIj7E,EAAStiB,KAAKuiB,YACdD,IACAtiB,KAAKu9F,kBAAmB,QAAOj7E,EAAQ,WAAkBtiB,KAAKy9F,oBAAqBz9F,OAEvFA,KAAK2Y,SACT,EAMAuiF,EAAMl2F,UAAUs4E,YAAc,SAAUjsE,GACpC,OAAOrR,KAAK0wB,UAAU4sD,YAAYjsE,EACtC,EASA6pF,EAAMl2F,UAAU+d,OAAS,SAAU9C,EAAYhO,GAC3C,IAAImQ,EAAgBpiB,KAAKqiB,cACzB,GAAID,EAAci5E,aAAap7E,GAC3B,OAAOmC,EAAcU,YAAY7C,EAAYhO,EAErD,EAaAipF,EAAMl2F,UAAUmP,OAAS,SAAUjG,GAC3BlO,KAAKq9F,qBACL,QAAcr9F,KAAKq9F,mBACnBr9F,KAAKq9F,kBAAoB,MAExBnvF,GACDlO,KAAK2Y,UAEL3Y,KAAKs9F,iBACL,QAAct9F,KAAKs9F,eACnBt9F,KAAKs9F,cAAgB,MAErBpvF,IACAlO,KAAKq9F,mBAAoB,QAAOnvF,EAAK,gBAA4B,SAAUuqC,GACvE,IACI52B,EADkE,EACnC5B,WAAW4B,iBAC1CK,EAAaliB,KAAKw5F,eAAc,IAEpC,QAAQ33E,EAAiB67E,MAAK,SAAUC,GACpC,OAAOA,EAAgBv8E,QAAUc,EAAWd,KAChD,IAAI,IACJS,EAAiBvP,KAAK4P,EAC1B,GAAGliB,MACHA,KAAKs9F,eAAgB,QAAOt9F,KAAM,WAAkBkO,EAAI6U,OAAQ7U,GAChElO,KAAK2Y,UAEb,EAOAuiF,EAAMl2F,UAAUguE,UAAY,SAAU1wD,GAClCtiB,KAAKyW,IAAI,WAAsB6L,EACnC,EAKA44E,EAAMl2F,UAAUqd,YAAc,WAI1B,OAHKriB,KAAK0wB,YACN1wB,KAAK0wB,UAAY1wB,KAAKgpB,kBAEnBhpB,KAAK0wB,SAChB,EAIAwqE,EAAMl2F,UAAUmd,YAAc,WAC1B,QAASniB,KAAK0wB,SAClB,EAMAwqE,EAAMl2F,UAAUgkB,eAAiB,WAC7B,OAAO,IACX,EAIAkyE,EAAMl2F,UAAUgS,gBAAkB,WAC9BhX,KAAKgzE,UAAU,MACfv+D,EAAOzP,UAAUgS,gBAAgBhK,KAAKhN,KAC1C,EACOk7F,CACX,CAxM0B,CAwMxB,mDClSF,SACI0C,QAAS,UACTC,QAAS,UACTC,OAAQ,SACRC,QAAS,SACTC,eAAgB,gBAChBC,eAAgB,gBAChBC,SAAU,UACVC,SAAU,UACVC,OAAQ,mFCTZ,QACa,UADb,EAEgC,6BCPxBhqF,YADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAuGJ,QAxDmC,SAAUC,GAKzC,SAAS4pF,EAAchpF,GACnB,IAAIzU,EAAQZ,KACR0O,EAAU2G,GAA4B,CAAC,EACvCm6D,GAAc,QAAO,CAAC,EAAG9gE,GAQ7B,cAPO8gE,EAAY8uB,eACZ9uB,EAAY+uB,wBACnB39F,EAAQ6T,EAAOzH,KAAKhN,KAAMwvE,IAAgBxvE,MACpCw+F,gBAA+BhoF,IAApB9H,EAAQ4vF,QAAwB5vF,EAAQ4vF,QAAU,GACnE19F,EAAM69F,+BAA6DjoF,IAAnC9H,EAAQ6vF,wBAClC7vF,EAAQ6vF,wBAEP39F,CACX,CAqCA,OArDAyT,EAAUgqF,EAAe5pF,GAuBzB4pF,EAAcr5F,UAAU05F,WAAa,WACjC,OAA8B1+F,KAAKiF,IAAI05F,EAC3C,EAOAN,EAAcr5F,UAAUw5F,WAAa,SAAUF,GAC3Ct+F,KAAKyW,IAAIkoF,EAAsBL,EACnC,EAOAD,EAAcr5F,UAAU45F,0BAA4B,WAChD,OAA+B5+F,KAAKiF,IAAI05F,EAC5C,EAOAN,EAAcr5F,UAAUy5F,0BAA4B,SAAUF,GAC1Dv+F,KAAKyW,IAAIkoF,EAAyCJ,EACtD,EACOF,CACX,CAvDkC,CAuDhCnD,EAAA,iGCjHE,EAAwC,WACxC,IAAI9mF,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GA+BxCqqF,EAAyC,SAAUpqF,GAKnD,SAASoqF,EAAwBC,GAC7B,IAAIl+F,EAAQ6T,EAAOzH,KAAKhN,KAAM8+F,IAAc9+F,KA8C5C,OAzCAY,EAAMm+F,eAAgB,EAKtBn+F,EAAM8yE,gBAAkB,KAKxB9yE,EAAMo+F,mBAKNp+F,EAAMq+F,mBAAqB,KAK3Br+F,EAAMg8E,iBAKNh8E,EAAMs+F,cAAgB,GAKtBt+F,EAAMu+F,WAAY,EAKlBv+F,EAAMw+F,WAAY,IAAA1lD,eAKlB94C,EAAMy+F,cAAgB,IAAIljE,EAAA,EAAU,EAAG,EAAG,EAAG,GACtCv7B,CACX,CA0ZA,OA9cA,EAAUi+F,EAAyBpqF,GA0DnCoqF,EAAwB75F,UAAUs6F,eAAiB,SAAU5rE,GACzD,IAAIorE,EAAY9+F,KAAKy1F,WACjB8J,EAAY7rE,EAAK/V,WACjB4gF,EAAyBO,EAAUF,4BACvC,OAAQW,GAAazjE,EAAA,UACjByjE,GAAazjE,EAAA,SACZyjE,GAAazjE,EAAA,UAAoByiE,CAC1C,EAQAM,EAAwB75F,UAAUw6F,QAAU,SAAUjmE,EAAGv3B,EAAGD,EAAGke,GAC3D,IAAI3D,EAAa2D,EAAW3D,WACxB/C,EAAa0G,EAAWM,UAAUhH,WAClCulF,EAAY9+F,KAAKy1F,WAEjB/hE,EADaorE,EAAUv8E,YACLi9E,QAAQjmE,EAAGv3B,EAAGD,EAAGua,EAAY/C,GAcnD,OAbIma,EAAK/V,YAAcme,EAAA,UACdgjE,EAAUF,4BAINE,EAAUJ,aAAe,IAE9B1+F,KAAKm/F,WAAY,GAJjBzrE,EAAKmE,SAASiE,EAAA,WAOjB97B,KAAKs/F,eAAe5rE,KACrBA,EAAOA,EAAKgE,kBAEThE,CACX,EAOAmrE,EAAwB75F,UAAUy6F,mBAAqB,SAAUC,EAAO7zF,EAAM6nB,GAC1E,QAAI1zB,KAAKs/F,eAAe5rE,IACbjf,EAAOzP,UAAUy6F,mBAAmBzyF,KAAKhN,KAAM0/F,EAAO7zF,EAAM6nB,EAG3E,EAMAmrE,EAAwB75F,UAAUq2F,aAAe,SAAUp7E,GACvD,QAASjgB,KAAKy1F,WAAWlzE,WAC7B,EAOAs8E,EAAwB75F,UAAU8d,YAAc,SAAU7C,EAAYhO,GAClE,IAAIiQ,EAAajC,EAAW4B,iBAAiB5B,EAAW8D,YACpDxD,EAAYN,EAAWM,UACvBhH,EAAagH,EAAUhH,WACvB+hF,EAAiB/6E,EAAUlE,WAC3By/E,EAAav7E,EAAUvU,OACvB2U,EAAWJ,EAAUI,SACrBrE,EAAa2D,EAAW3D,WACxBwiF,EAAY9+F,KAAKy1F,WACjBkK,EAAab,EAAUv8E,YACvBq9E,EAAiBD,EAAWhyE,cAC5BkyE,EAAWF,EAAWG,yBAAyBvmF,GAC/CggB,EAAIsmE,EAASE,kBAAkBzE,EAAgBqE,EAAWK,YAC1DnsE,EAAiBgsE,EAASniF,cAAc6b,GACxCnd,EAAS6D,EAAW7D,OACpB03D,EAAc5xD,EAAW9F,SAAU,IAAAsjB,gBAAexd,EAAW9F,OAAQ7C,GACrEu6D,IACA13D,GAAS,IAAAu/B,iBAAgBv/B,GAAQ,IAAAsjB,gBAAexd,EAAW9F,OAAQ7C,KAEvE,IAAI0mF,EAAiBN,EAAWO,kBAAkB5jF,GAE9CjR,EAAQpJ,KAAKE,MAAM8d,EAAWS,KAAK,GAAKu/E,GACxChvF,EAAShP,KAAKE,MAAM8d,EAAWS,KAAK,GAAKu/E,GAC7C,GAAIt/E,EAAU,CACV,IAAID,EAAOze,KAAKE,MAAMF,KAAKuF,KAAK6D,EAAQA,EAAQ4F,EAASA,IACzD5F,EAAQqV,EACRzP,EAASyP,CACb,CACA,IAAId,EAAMiU,EAAiBxoB,EAAS,EAAI40F,EACpCpgF,EAAMgU,EAAiB5iB,EAAU,EAAIgvF,EACrCE,EAAe,CACfrE,EAAW,GAAKl8E,EAChBk8E,EAAW,GAAKj8E,EAChBi8E,EAAW,GAAKl8E,EAChBk8E,EAAW,GAAKj8E,GAEhB6c,EAAYmjE,EAASO,0BAA0BhkF,EAAQmd,GAIvD8mE,EAAiB,CAAC,EACtBA,EAAe9mE,GAAK,CAAC,EACrB,IAAI+mE,EAAkBtgG,KAAKugG,uBAAuBZ,EAAYpmF,EAAY8mF,GACtEjB,EAAYp/F,KAAKo/F,UACjBoB,EAAexgG,KAAKq/F,cACxBr/F,KAAKm/F,WAAY,EACjB,IAAK,IAAIn9F,EAAI06B,EAAUN,KAAMp6B,GAAK06B,EAAUL,OAAQr6B,EAChD,IAAK,IAAID,EAAI26B,EAAUJ,KAAMv6B,GAAK26B,EAAUH,OAAQx6B,EAAG,CACnD,IAAI2xB,EAAO1zB,KAAKw/F,QAAQjmE,EAAGv3B,EAAGD,EAAGke,GACjC,GAAIjgB,KAAKs/F,eAAe5rE,GAAO,CAC3B,IAAIs/D,GAAM,QAAOhzF,MACjB,GAAI0zB,EAAK/V,YAAcme,EAAA,SAAkB,CACrCukE,EAAe9mE,GAAG7F,EAAKxV,UAAUnZ,YAAc2uB,EAC/C,IAAIsE,EAAetE,EAAKsE,aAAag7D,GAChChzF,KAAKm/F,YACLnnE,IAAsD,IAAtCh4B,KAAKk/F,cAAcxsF,QAAQghB,KAC5C1zB,KAAKm/F,WAAY,EAEzB,CACA,GAA4C,IAAxCzrE,EAAKoE,SAASk7D,EAAK/yE,EAAW+U,MAE9B,QAER,CACA,IAAIyrE,EAAiBZ,EAASa,2BAA2BhtE,EAAKxV,UAAWsiF,EAAcpB,GACnFuB,GAAU,EACVF,IACAE,EAAUL,EAAgB/mE,EAAI,EAAGknE,IAEhCE,GACDd,EAASe,gCAAgCltE,EAAKxV,UAAWoiF,EAAiBE,EAAcpB,EAEhG,CAEJ,IAAIyB,EAAchtE,EAAiBynE,GAEnC,QAAiBt7F,KAAKg8F,eAAgB/7E,EAAWS,KAAK,GAAK,EAAGT,EAAWS,KAAK,GAAK,EAAG,EAAIu/E,EAAgB,EAAIA,EAAgBt/E,GAAWtV,EAAQ,GAAI4F,EAAS,GAC9J,IAAIirF,GAAkB,QAAsBl8F,KAAKg8F,gBACjDh8F,KAAKm8F,aAAalqF,EAAQiqF,EAAiBh6E,EAAWk3E,SACtD,IAAI95F,EAAUU,KAAKV,QACfof,EAASpf,EAAQof,QACrB,QAAY1e,KAAKi8F,sBAAuBj8F,KAAKg8F,iBAE7C,QAAiBh8F,KAAKw8F,cAAenxF,EAAQ,EAAG4F,EAAS,EAAG4vF,EAAaA,EAAa,GAAIx1F,EAAQ,GAAI4F,EAAS,GAC3GyN,EAAOrT,OAASA,GAASqT,EAAOzN,QAAUA,GAC1CyN,EAAOrT,MAAQA,EACfqT,EAAOzN,OAASA,GAEVjR,KAAKo8F,iBACX98F,EAAQ+8F,UAAU,EAAG,EAAGhxF,EAAO4F,GAE/B6iE,GACA9zE,KAAKu8F,cAAcj9F,EAAS2gB,EAAY6zD,IAE5C,QAAOx0E,EAASqgG,EAAWhD,qBAC3B38F,KAAK48F,UAAUt9F,EAAS2gB,GACxBjgB,KAAKk/F,cAAc97F,OAAS,EAE5B,IAEI09F,EAAOC,EAAQC,EAFfC,EAAKzgG,OAAOgP,KAAK6wF,GAAgBnyF,IAAIq+B,QACzC00D,EAAGp9E,KAAK,MAEmB,IAAvB3B,EAAWk3E,SACTp5F,KAAKo8F,kBACHuD,EAAWuB,UAAUjhF,EAAWM,UAAUhH,aAI9CunF,EAAQ,GACRC,EAAS,IAJTE,EAAKA,EAAGE,UAMZ,IAAK,IAAI32F,EAAIy2F,EAAG79F,OAAS,EAAGoH,GAAK,IAAKA,EAAG,CACrC,IAAI42F,EAAWH,EAAGz2F,GACd62F,GAAuB1B,EAAW2B,iBAAiBF,EAAU9kF,EAAY/C,GAEzEgoF,GADoB1B,EAASniF,cAAc0jF,GACRvtE,EACnC2tE,GAAOH,GAAqB,GAAKE,GAAeV,EAChDY,GAAOJ,GAAqB,GAAKE,GAAeV,EAChDa,GAAkB7B,EAAS8B,0BAAyB,IAAA/mD,YAAWulD,GAAeiB,GAC9EQ,GAAmB/B,EAASgC,mBAAmBH,IAC/CI,IAAW,QAAe9hG,KAAKw8F,cAAe,CAC7CyD,GAAkB2B,GAAiB,GAAKzB,EAAa,IAClDtsE,EACHosE,GAAkBE,EAAa,GAAKyB,GAAiB,IAClD/tE,IAEJkuE,GAAa9B,EAAiBN,EAAWqC,uBAAuBzoF,GAChE0oF,GAAc5B,EAAee,GACjC,IAAK,IAAIc,MAAgBD,GAAa,CAClC,IACI/jF,IADAwV,EAA4DuuE,GAAYC,KACvDhkF,UAEjBikF,GAASL,GAAS,IAAMJ,GAAgB,GAAKxjF,GAAU,IAAMsjF,GAC7DY,GAAQngG,KAAKE,MAAMggG,GAASX,IAC5Ba,GAASP,GAAS,IAAMJ,GAAgB,GAAKxjF,GAAU,IAAMujF,GAC7Da,GAAQrgG,KAAKE,MAAMkgG,GAASZ,IAG5BrvF,GAAIgwF,IAFJpgG,EAAIC,KAAKE,MAAMggG,KAGf/2F,GAAIk3F,IAFJvgG,EAAIE,KAAKE,MAAMkgG,KAGf9qE,GAAagC,IAAM6nE,EAEvB,KADIppE,EAAeT,IAA+D,IAAjD7D,EAAKoE,UAAS,QAAO93B,MAAOigB,EAAW+U,OAEpE,GAAI8rE,EAAO,CAEPxhG,EAAQijG,OACRvB,EAAc,CAACh/F,EAAGD,EAAGC,EAAIoQ,GAAGrQ,EAAGC,EAAIoQ,GAAGrQ,EAAIqJ,GAAGpJ,EAAGD,EAAIqJ,IACpD,IAAK,IAAIo3F,GAAM,EAAG/sF,GAAKqrF,EAAM19F,OAAQo/F,GAAM/sF,KAAM+sF,GAC7C,GAAIjpE,IAAM6nE,GAAYA,EAAWL,EAAOyB,IAAM,CAC1C,IAAIC,GAAO3B,EAAM0B,IACjBljG,EAAQojG,YAERpjG,EAAQqjG,OAAO3B,EAAY,GAAIA,EAAY,IAC3C1hG,EAAQsjG,OAAO5B,EAAY,GAAIA,EAAY,IAC3C1hG,EAAQsjG,OAAO5B,EAAY,GAAIA,EAAY,IAC3C1hG,EAAQsjG,OAAO5B,EAAY,GAAIA,EAAY,IAE3C1hG,EAAQqjG,OAAOF,GAAK,GAAIA,GAAK,IAC7BnjG,EAAQsjG,OAAOH,GAAK,GAAIA,GAAK,IAC7BnjG,EAAQsjG,OAAOH,GAAK,GAAIA,GAAK,IAC7BnjG,EAAQsjG,OAAOH,GAAK,GAAIA,GAAK,IAC7BnjG,EAAQmjG,MACZ,CAEJ3B,EAAMxuF,KAAK0uF,GACXD,EAAOzuF,KAAK8uF,EAChB,MAEI9hG,EAAQ+8F,UAAUr6F,EAAGD,EAAGqQ,GAAGhH,IAGnCpL,KAAK6iG,cAAcnvE,EAAMzT,EAAYje,EAAGD,EAAGqQ,GAAGhH,GAAG22F,GAAYxqE,GAAYrV,EAAWk3E,SAChF0H,IAAU9oE,GACV14B,EAAQ29F,UAEZj9F,KAAKk/F,cAAc5sF,KAAKohB,GACxB1zB,KAAK8iG,gBAAgB7iF,EAAWuW,UAAWmpE,EAAYjsE,EAC3D,CACJ,CAiBA,OAhBA1zB,KAAK48E,iBAAmBgjB,EACxB5/F,KAAK28E,mBAAqB9oD,EAC1B7zB,KAAK++F,eACA/+F,KAAK0zE,mBAAoB,IAAAh9C,QAAO12B,KAAK0zE,gBAAiBysB,GAC3DngG,KAAK0zE,gBAAkBysB,EACvBngG,KAAKg/F,mBAAqB1iF,EAC1Btc,KAAKi/F,mBAAqB1lF,EAC1BvZ,KAAK+iG,kBAAkB9iF,EAAY0/E,EAAYE,EAAUvjF,EAAY/C,EAAY6C,EAAQmd,EAAGulE,EAAUJ,cACtG1+F,KAAKgjG,oBAAoB/iF,EAAY0/E,GACrC3/F,KAAKg9F,WAAW19F,EAAS2gB,GACrBiC,EAAW9F,QACX9c,EAAQ29F,UAERf,IAAoBx9E,EAAOzO,MAAMsX,YACjC7I,EAAOzO,MAAMsX,UAAY20E,GAEtBl8F,KAAK2K,SAChB,EAYAk0F,EAAwB75F,UAAU69F,cAAgB,SAAUnvE,EAAMzT,EAAYje,EAAGD,EAAGqQ,EAAGhH,EAAG63F,EAAQ1rE,EAAY6hE,GAC1G,IAAI59E,EAAQxb,KAAKkjG,aAAaxvE,GAC9B,GAAKlY,EAAL,CAGA,IAAIw3E,GAAM,QAAOhzF,MACbmjG,EAAY5rE,EAAa7D,EAAKoE,SAASk7D,EAAK/yE,EAAW+U,MAAQ,EAC/DouE,EAAQhK,EAAU+J,EAClBE,EAAeD,IAAUpjG,KAAKV,QAAQw9F,YACtCuG,IACArjG,KAAKV,QAAQijG,OACbviG,KAAKV,QAAQw9F,YAAcsG,GAE/BpjG,KAAKV,QAAQy9F,UAAUvhF,EAAOynF,EAAQA,EAAQznF,EAAMnQ,MAAQ,EAAI43F,EAAQznF,EAAMvK,OAAS,EAAIgyF,EAAQjhG,EAAGD,EAAGqQ,EAAGhH,GACxGi4F,GACArjG,KAAKV,QAAQ29F,UAEC,IAAdkG,EACAljF,EAAWrU,SAAU,EAEhB2rB,GACL7D,EAAKuE,cAAc+6D,EAjBvB,CAmBJ,EAIA6L,EAAwB75F,UAAU+X,SAAW,WACzC,IAAIzd,EAAUU,KAAKV,QACnB,OAAOA,EAAUA,EAAQof,OAAS,IACtC,EAOAmgF,EAAwB75F,UAAUk+F,aAAe,SAAUxvE,GACvD,OAAOA,EAAK3W,UAChB,EAMA8hF,EAAwB75F,UAAUg+F,oBAAsB,SAAU/iF,EAAY0/E,GAC1E,GAAIA,EAAWlnE,iBAAkB,CAM7B,IAAI6qE,EAAqB,SAAU3D,EAAYzxF,EAAK+R,GAChD,IAAI0T,GAAgB,QAAOgsE,GACvBhsE,KAAiB1T,EAAWuW,WAC5BmpE,EAAWtmE,YAAYpZ,EAAWM,UAAUhH,WAAY0G,EAAWuW,UAAU7C,GAErF,EAAE7kB,KAAK,KAAM6wF,GACb1/E,EAAWgD,oBAAoB3Q,KACmC,EACtE,CACJ,EAOAusF,EAAwB75F,UAAU89F,gBAAkB,SAAUtsE,EAAWmpE,EAAYjsE,GAEjF,IAAIC,GAAgB,QAAOgsE,GACrBhsE,KAAiB6C,IACnBA,EAAU7C,GAAiB,CAAC,GAEhC6C,EAAU7C,GAAeD,EAAKpV,WAAY,CAC9C,EAmBAugF,EAAwB75F,UAAU+9F,kBAAoB,SAAU9iF,EAAY0/E,EAAYE,EAAUvjF,EAAY/C,EAAY6C,EAAQglF,EAAU9C,EAASiF,GACjJ,IAAI5vE,GAAgB,QAAOgsE,GACrBhsE,KAAiB1T,EAAWwW,cAC9BxW,EAAWwW,YAAY9C,GAAiB,CAAC,GAE7C,IAIID,EAAMgJ,EAAW7I,EAAgB7xB,EAAGD,EAAGw3B,EAJvC9C,EAAcxW,EAAWwW,YAAY9C,GACrCa,EAAYvU,EAAWuU,UAEvBgvE,EAAY,EAEhB,IAAKjqE,EAHSsmE,EAASr6D,aAGLjM,GAAK6nE,IAAY7nE,EAG/B,IAFAmD,EAAYmjE,EAASO,0BAA0BhkF,EAAQmd,EAAGmD,GAC1D7I,EAAiBgsE,EAASniF,cAAc6b,GACnCv3B,EAAI06B,EAAUN,KAAMp6B,GAAK06B,EAAUL,OAAQr6B,EAC5C,IAAKD,EAAI26B,EAAUJ,KAAMv6B,GAAK26B,EAAUH,OAAQx6B,EACxCq/F,EAAW7nE,GAAK+kE,KACdkF,GACF9vE,EAAOisE,EAAWH,QAAQjmE,EAAGv3B,EAAGD,EAAGua,EAAY/C,IACtCoE,YAAcme,EAAA,SACnBrF,EAAY/C,EAAKpV,WAAY,EACxBkW,EAAUsG,YAAYpH,EAAKpV,WAC5BkW,EAAU+F,QAAQ,CACd7G,EACAC,EACAksE,EAAS4D,mBAAmB/vE,EAAKxV,WACjC2V,UAIard,IAArB+sF,GACAA,EAAiB7vE,IAIrBisE,EAAW+D,QAAQnqE,EAAGv3B,EAAGD,EAAGwX,GAK5ComF,EAAWgE,gBAAgBH,EAAWjqF,EAC1C,EACOslF,CACX,CAhd4C,CAgd1C,KAKFA,EAAwB75F,UAAUywF,SAClC,UCrfA,IAAI,EAAwC,WACxC,IAAIrhF,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GA8C5C,QAlB+B,SAAUC,GAKrC,SAASmvF,EAAUvuF,GACf,OAAOZ,EAAOzH,KAAKhN,KAAMqV,IAAgBrV,IAC7C,CASA,OAfA,EAAU4jG,EAAWnvF,GAYrBmvF,EAAU5+F,UAAUgkB,eAAiB,WACjC,OAAO,IAAI,EAAwBhpB,KACvC,EACO4jG,CACX,CAjB8B,CAiB5BC,mEC5CMzvF,gCADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAyDAM,EACc,cAkKlB,QArJqC,SAAUL,GAK3C,SAASqvF,EAAgBzuF,GACrB,IAAIzU,EAAQZ,KACR0O,EAAU2G,GAA4B,CAAC,EACvCm6D,GAAc,QAAO,CAAC,EAAG9gE,GA+C7B,cA9CO8gE,EAAYv/D,aACZu/D,EAAYG,oBACZH,EAAYC,4BACZD,EAAYE,wBACnB9uE,EAAQ6T,EAAOzH,KAAKhN,KAAMwvE,IAAgBxvE,MAKpC+jG,gBACoBvtF,IAAtB9H,EAAQs1F,WAA0Bt1F,EAAQs1F,UAK9CpjG,EAAMqjG,mBACuBztF,IAAzB9H,EAAQihE,aAA6BjhE,EAAQihE,aAAe,IAMhE/uE,EAAM4W,OAAS,KAMf5W,EAAM6W,oBAAiBjB,EACvB5V,EAAM2X,SAAS7J,EAAQuB,OAKvBrP,EAAMsjG,2BAC+B1tF,IAAjC9H,EAAQ+gE,sBACF/gE,EAAQ+gE,qBAMlB7uE,EAAMujG,6BACiC3tF,IAAnC9H,EAAQghE,wBACFhhE,EAAQghE,uBAEX9uE,CACX,CA2FA,OAlJAyT,EAAUyvF,EAAiBrvF,GA2D3BqvF,EAAgB9+F,UAAUo/F,aAAe,WACrC,OAAOpkG,KAAK+jG,UAChB,EAeAD,EAAgB9+F,UAAUs4E,YAAc,SAAUjsE,GAC9C,OAAOoD,EAAOzP,UAAUs4E,YAAYtwE,KAAKhN,KAAMqR,EACnD,EAIAyyF,EAAgB9+F,UAAUq/F,gBAAkB,WACxC,OAAOrkG,KAAKikG,aAChB,EAKAH,EAAgB9+F,UAAUs/F,eAAiB,WACvC,OAA2EtkG,KAAKiF,IAAI6P,EACxF,EAOAgvF,EAAgB9+F,UAAUsT,SAAW,WACjC,OAAOtY,KAAKwX,MAChB,EAMAssF,EAAgB9+F,UAAUyT,iBAAmB,WACzC,OAAOzY,KAAKyX,cAChB,EAKAqsF,EAAgB9+F,UAAUu/F,wBAA0B,WAChD,OAAOvkG,KAAKkkG,qBAChB,EAKAJ,EAAgB9+F,UAAUw/F,0BAA4B,WAClD,OAAOxkG,KAAKmkG,uBAChB,EAKAL,EAAgB9+F,UAAU2uE,eAAiB,SAAU8wB,GACjDzkG,KAAKyW,IAAI3B,EAAuB2vF,EACpC,EAWAX,EAAgB9+F,UAAUuT,SAAW,SAAUK,GAC3C5Y,KAAKwX,YAAuBhB,IAAdoC,EAA0BA,EAAY,EAAA8rF,mBACpD1kG,KAAKyX,eACa,OAAdmB,OAAqBpC,GAAY,gBAAgBxW,KAAKwX,QAC1DxX,KAAK2Y,SACT,EACOmrF,CACX,CApJoC,CAoJlC5I,EAAA,GChOF,IAAIyJ,EAAc,CACdC,eAAgB,EAChBC,WAAY,EACZxiC,OAAQ,EACRyiC,WAAY,EACZC,OAAQ,EACRC,WAAY,EACZC,WAAY,EACZC,aAAc,EACdC,KAAM,EACNC,gBAAiB,EACjBC,eAAgB,GAChBC,iBAAkB,GAClBC,OAAQ,IAKDC,EAAkB,CAACb,EAAYQ,MAI/BM,EAAoB,CAACd,EAAYY,QAIjCG,EAAuB,CAACf,EAAYE,YAIpCc,EAAuB,CAAChB,EAAYG,YAC/C,8FCrCI,EAAwC,WACxC,IAAI1wF,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GAkCxCoxF,EAA+B,SAAUnxF,GAQzC,SAASmxF,EAAcvrD,EAAW9c,EAAWlhB,EAAYC,GACrD,IAAI1b,EAAQ6T,EAAOzH,KAAKhN,OAASA,KAoEjC,OA/DAY,EAAMy5C,UAAYA,EAMlBz5C,EAAM28B,UAAYA,EAKlB38B,EAAM0b,WAAaA,EAKnB1b,EAAMilG,aAAe,EAMrBjlG,EAAMyb,WAAaA,EAKnBzb,EAAMklG,2BAA6B,KAKnCllG,EAAMmlG,2BAA6B,KAKnCnlG,EAAMolG,mBAAqB,KAK3BplG,EAAMqlG,aAAe,GAKrBrlG,EAAM4hB,YAAc,GAKpB5hB,EAAMslG,eAAiB,GAKvBtlG,EAAMulG,yBAA2B,GAKjCvlG,EAAMic,MAA8D,CAAG,EAChEjc,CACX,CAgYA,OA7cA,EAAUglG,EAAenxF,GAmFzBmxF,EAAc5gG,UAAUohG,gBAAkB,SAAUC,GAChD,IAAI/pF,EAAatc,KAAKsc,WACtB,OAAqB,GAAdA,EACD+pF,EACAA,EAAUn4F,KAAI,SAAUo4F,GACtB,OAAOA,EAAOhqF,CAClB,GACR,EAWAspF,EAAc5gG,UAAUuhG,sBAAwB,SAAUxsD,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQm/D,EAAQC,GACpG,IAAIC,EAAQ1mG,KAAKwiB,YAAYpf,OACzBgZ,EAASpc,KAAK2mG,uBACdF,IACArlE,GAAUiG,GAEd,IAII78B,EAAGo8F,EAASC,EAJZC,EAAa/sD,EAAgB3Y,GAC7B2lE,EAAahtD,EAAgB3Y,EAAS,GACtC4lE,EAAYhnG,KAAKkmG,eACjBe,GAAU,EAEd,IAAKz8F,EAAI42B,EAASiG,EAAQ78B,EAAIiV,EAAKjV,GAAK68B,EACpC2/D,EAAU,GAAKjtD,EAAgBvvC,GAC/Bw8F,EAAU,GAAKjtD,EAAgBvvC,EAAI,IACnCq8F,GAAU,IAAArtD,wBAAuBp9B,EAAQ4qF,MACzBJ,GACRK,IACAjnG,KAAKwiB,YAAYkkF,KAAWI,EAC5B9mG,KAAKwiB,YAAYkkF,KAAWK,GAEhC/mG,KAAKwiB,YAAYkkF,KAAWM,EAAU,GACtChnG,KAAKwiB,YAAYkkF,KAAWM,EAAU,GACtCC,GAAU,GAELJ,IAAYK,EAAA,gBACjBlnG,KAAKwiB,YAAYkkF,KAAWM,EAAU,GACtChnG,KAAKwiB,YAAYkkF,KAAWM,EAAU,GACtCC,GAAU,GAGVA,GAAU,EAEdH,EAAaE,EAAU,GACvBD,EAAaC,EAAU,GACvBJ,EAAUC,EAOd,OAJKL,GAAUS,GAAYz8F,IAAM42B,EAASiG,KACtCrnC,KAAKwiB,YAAYkkF,KAAWI,EAC5B9mG,KAAKwiB,YAAYkkF,KAAWK,GAEzBL,CACX,EASAd,EAAc5gG,UAAUmiG,uBAAyB,SAAUptD,EAAiB3Y,EAAQuhB,EAAMtb,EAAQ+/D,GAC9F,IAAK,IAAI58F,EAAI,EAAGiL,EAAKktC,EAAKv/C,OAAQoH,EAAIiL,IAAMjL,EAAG,CAC3C,IAAIiV,EAAMkjC,EAAKn4C,GACX68F,EAAarnG,KAAKumG,sBAAsBxsD,EAAiB3Y,EAAQ3hB,EAAK4nB,GAAQ,GAAO,GACzF+/D,EAAY90F,KAAK+0F,GACjBjmE,EAAS3hB,CACb,CACA,OAAO2hB,CACX,EAMAwkE,EAAc5gG,UAAUsiG,WAAa,SAAU1vF,EAAUuJ,EAASomF,GAC9DvnG,KAAKwnG,cAAc5vF,EAAUuJ,GAC7B,IAGI44B,EAAiBstD,EAAYD,EAAaK,EAC1CrmE,EAJAhwB,EAAOwG,EAAS4uB,UAChBa,EAASzvB,EAAS0vB,YAClBogE,EAAe1nG,KAAKwiB,YAAYpf,OAGpC,GAAIgO,GAAQq1B,EAAA,sBAA4B,CACpCsT,EAA8E,EAAW8qB,6BACzF4iC,EAAe,GACf,IAAI/iC,EAAoE,EAAWO,WACnF7jC,EAAS,EACT,IAAK,IAAI52B,EAAI,EAAGiL,EAAKivD,EAAMthE,OAAQoH,EAAIiL,IAAMjL,EAAG,CAC5C,IAAIm9F,EAAS,GACbvmE,EAASphC,KAAKmnG,uBAAuBptD,EAAiB3Y,EAAQsjC,EAAMl6D,GAAI68B,EAAQsgE,GAChFF,EAAan1F,KAAKq1F,EACtB,CACA3nG,KAAKimG,aAAa3zF,KAAK,CACnB,SACAo1F,EACAD,EACA7vF,EACA2vF,EACAviC,EAAA,IAER,MACS5zD,GAAQq1B,EAAA,iBACbr1B,GAAQq1B,EAAA,2BACR2gE,EAAc,GACdrtD,EACI3oC,GAAQq1B,EAAA,gBACqD,EAAWo+B,6BAClEjtD,EAASkvB,qBACnB1F,EAASphC,KAAKmnG,uBAAuBptD,EAAiB,EACiD,EAAW6pB,UAAWv8B,EAAQ+/D,GACrIpnG,KAAKimG,aAAa3zF,KAAK,CACnB,SACAo1F,EACAN,EACAxvF,EACA2vF,EACAviC,EAAA,MAGC5zD,GAAQq1B,EAAA,qBACbr1B,GAAQq1B,EAAA,qBACRsT,EAAkBniC,EAASkvB,qBAC3BugE,EAAarnG,KAAKumG,sBAAsBxsD,EAAiB,EAAGA,EAAgB32C,OAAQikC,GAAQ,GAAO,GACnGrnC,KAAKimG,aAAa3zF,KAAK,CACnB,SACAo1F,EACAL,EACAzvF,EACA2vF,EACAviC,EAAA,MAGC5zD,GAAQq1B,EAAA,gBACbsT,EAAkBniC,EAASkvB,qBAC3B9mC,KAAKwiB,YAAYlQ,KAAKynC,EAAgB,GAAIA,EAAgB,IAC1DstD,EAAarnG,KAAKwiB,YAAYpf,OAC9BpD,KAAKimG,aAAa3zF,KAAK,CACnB,SACAo1F,EACAL,EACAzvF,EACA2vF,KAGRvnG,KAAK4nG,YAAYzmF,EACrB,EAMAykF,EAAc5gG,UAAUwiG,cAAgB,SAAU5vF,EAAUuJ,GACxD,IAAI/E,EAASxE,EAAS4F,YACtBxd,KAAK8lG,2BAA6B,CAC9B,iBACA3kF,EACA,EACA/E,GAEJpc,KAAKimG,aAAa3zF,KAAKtS,KAAK8lG,4BAC5B9lG,KAAK+lG,2BAA6B,CAC9B,iBACA5kF,EACA,EACA/E,GAEJpc,KAAKmmG,yBAAyB7zF,KAAKtS,KAAK+lG,2BAC5C,EAIAH,EAAc5gG,UAAU6iG,OAAS,WAC7B,MAAO,CACH5B,aAAcjmG,KAAKimG,aACnBE,yBAA0BnmG,KAAKmmG,yBAC/B3jF,YAAaxiB,KAAKwiB,YAE1B,EAIAojF,EAAc5gG,UAAU8iG,gCAAkC,WACtD,IAIIt9F,EAJA27F,EAA2BnmG,KAAKmmG,yBAEpCA,EAAyBhF,UAGzB,IACI4G,EACA32F,EAFAtP,EAAIqkG,EAAyB/iG,OAG7Bmc,GAAS,EACb,IAAK/U,EAAI,EAAGA,EAAI1I,IAAK0I,GAEjB4G,GADA22F,EAAc5B,EAAyB37F,IAC+B,KAC1D,eACR+U,EAAQ/U,EAEH4G,GAAQ,mBACb22F,EAAY,GAAKv9F,GACjB,QAAgBxK,KAAKmmG,yBAA0B5mF,EAAO/U,GACtD+U,GAAS,EAGrB,EAKAqmF,EAAc5gG,UAAUgjG,mBAAqB,SAAUxpF,EAAWqxD,GAC9D,IAAIhzD,EAAQ7c,KAAK6c,MACjB,GAAI2B,EAAW,CACX,IAAIypF,EAAiBzpF,EAAU0pF,WAC/BrrF,EAAM2B,WAAY,OAAYypF,GAAkC,KACpE,MAEIprF,EAAM2B,eAAYhI,EAEtB,GAAIq5D,EAAa,CACb,IAAIs4B,EAAmBt4B,EAAYq4B,WACnCrrF,EAAMgzD,aAAc,OAAYs4B,GAAsC,MACtE,IAAIC,EAAqBv4B,EAAYw4B,aACrCxrF,EAAMyrF,aACqB9xF,IAAvB4xF,EAAmCA,EAAqB,KAC5D,IAAIG,EAAsB14B,EAAY24B,cACtC3rF,EAAM4rF,SAAWF,EACXA,EAAoBz7F,QACpB,KACN,IAAI47F,EAA4B74B,EAAY84B,oBAC5C9rF,EAAM+rF,eAAiBF,GAEjB,KACN,IAAIG,EAAsBh5B,EAAYi5B,cACtCjsF,EAAMksF,cACsBvyF,IAAxBqyF,EACMA,EACA,KACV,IAAIG,EAAmBn5B,EAAYnuD,WACnC7E,EAAMosF,eACmBzyF,IAArBwyF,EAAiCA,EAAmB,KACxD,IAAIE,EAAwBr5B,EAAYs5B,gBACxCtsF,EAAMusF,gBACwB5yF,IAA1B0yF,EACMA,EACA,KACNrsF,EAAMosF,UAAYjpG,KAAK6lG,eACvB7lG,KAAK6lG,aAAehpF,EAAMosF,UAE1BjpG,KAAKgmG,mBAAqB,KAElC,MAEInpF,EAAMgzD,iBAAcr5D,EACpBqG,EAAMyrF,aAAU9xF,EAChBqG,EAAM4rF,SAAW,KACjB5rF,EAAM+rF,oBAAiBpyF,EACvBqG,EAAMksF,cAAWvyF,EACjBqG,EAAMosF,eAAYzyF,EAClBqG,EAAMusF,gBAAa5yF,CAE3B,EAKAovF,EAAc5gG,UAAUqkG,WAAa,SAAUxsF,GAC3C,IAAI2B,EAAY3B,EAAM2B,UAElBgnF,EAAkB,CAAC,iBAAkChnF,GAKzD,MAJyB,iBAAdA,GAEPgnF,EAAgBlzF,MAAK,GAElBkzF,CACX,EAIAI,EAAc5gG,UAAUskG,YAAc,SAAUzsF,GAC5C7c,KAAKimG,aAAa3zF,KAAKtS,KAAKupG,aAAa1sF,GAC7C,EAKA+oF,EAAc5gG,UAAUukG,aAAe,SAAU1sF,GAC7C,MAAO,CACH,mBACAA,EAAMgzD,YACNhzD,EAAMosF,UAAYjpG,KAAKsc,WACvBO,EAAMyrF,QACNzrF,EAAMksF,SACNlsF,EAAMusF,WACNppG,KAAKomG,gBAAgBvpF,EAAM4rF,UAC3B5rF,EAAM+rF,eAAiB5oG,KAAKsc,WAEpC,EAKAspF,EAAc5gG,UAAUwkG,gBAAkB,SAAU3sF,EAAOwsF,GACvD,IAAI7qF,EAAY3B,EAAM2B,UACG,iBAAdA,GAA0B3B,EAAM4sF,kBAAoBjrF,SACzChI,IAAdgI,GACAxe,KAAKimG,aAAa3zF,KAAK+2F,EAAWr8F,KAAKhN,KAAM6c,IAEjDA,EAAM4sF,iBAAmBjrF,EAEjC,EAKAonF,EAAc5gG,UAAU0kG,kBAAoB,SAAU7sF,EAAOysF,GACzD,IAAIz5B,EAAchzD,EAAMgzD,YACpBy4B,EAAUzrF,EAAMyrF,QAChBG,EAAW5rF,EAAM4rF,SACjBG,EAAiB/rF,EAAM+rF,eACvBG,EAAWlsF,EAAMksF,SACjBE,EAAYpsF,EAAMosF,UAClBG,EAAavsF,EAAMusF,YACnBvsF,EAAM8sF,oBAAsB95B,GAC5BhzD,EAAM+sF,gBAAkBtB,GACvBG,GAAY5rF,EAAMgtF,mBACd,QAAOhtF,EAAMgtF,gBAAiBpB,IACnC5rF,EAAMitF,uBAAyBlB,GAC/B/rF,EAAMktF,iBAAmBhB,GACzBlsF,EAAMmtF,kBAAoBf,GAC1BpsF,EAAMotF,mBAAqBb,UACP5yF,IAAhBq5D,GACAy5B,EAAYt8F,KAAKhN,KAAM6c,GAE3BA,EAAM8sF,mBAAqB95B,EAC3BhzD,EAAM+sF,eAAiBtB,EACvBzrF,EAAMgtF,gBAAkBpB,EACxB5rF,EAAMitF,sBAAwBlB,EAC9B/rF,EAAMktF,gBAAkBhB,EACxBlsF,EAAMmtF,iBAAmBf,EACzBpsF,EAAMotF,kBAAoBb,EAElC,EAIAxD,EAAc5gG,UAAU4iG,YAAc,SAAUzmF,GAC5CnhB,KAAK8lG,2BAA2B,GAAK9lG,KAAKimG,aAAa7iG,OACvDpD,KAAK8lG,2BAA6B,KAClC9lG,KAAK+lG,2BAA2B,GAAK/lG,KAAKmmG,yBAAyB/iG,OACnEpD,KAAK+lG,2BAA6B,KAClC,IAAImE,EAAyB,CAAC,eAAgC/oF,GAC9DnhB,KAAKimG,aAAa3zF,KAAK43F,GACvBlqG,KAAKmmG,yBAAyB7zF,KAAK43F,EACvC,EAQAtE,EAAc5gG,UAAU2hG,qBAAuB,WAC3C,IAAK3mG,KAAKgmG,qBACNhmG,KAAKgmG,oBAAqB,IAAAhuF,OAAMhY,KAAKu9B,WACjCv9B,KAAK6lG,aAAe,GAAG,CACvB,IAAIx6F,EAASrL,KAAKqc,YAAcrc,KAAK6lG,aAAe,GAAM,GAC1D,IAAA5sD,QAAOj5C,KAAKgmG,mBAAoB36F,EAAOrL,KAAKgmG,mBAChD,CAEJ,OAAOhmG,KAAKgmG,kBAChB,EACOJ,CACX,CA/ckC,CA+chCuE,EAAA,GACF,UClfA,IAAI,EAAwC,WACxC,IAAI/1F,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GA2Q5C,QAzPwC,SAAUC,GAQ9C,SAAS21F,EAAmB/vD,EAAW9c,EAAWlhB,EAAYC,GAC1D,IAAI1b,EAAQ6T,EAAOzH,KAAKhN,KAAMq6C,EAAW9c,EAAWlhB,EAAYC,IAAetc,KAuE/E,OAlEAY,EAAMypG,iBAAmB,KAKzBzpG,EAAM0pG,mBAAqB,KAK3B1pG,EAAM8b,OAAS,KAKf9b,EAAM2pG,sBAAmB/zF,EAKzB5V,EAAM4pG,cAAWh0F,EAKjB5V,EAAM6pG,cAAWj0F,EAKjB5V,EAAM8pG,aAAUl0F,EAKhB5V,EAAM+pG,cAAWn0F,EAKjB5V,EAAMgqG,cAAWp0F,EAKjB5V,EAAMiqG,cAAWr0F,EAKjB5V,EAAMkqG,qBAAkBt0F,EAKxB5V,EAAMomB,eAAYxQ,EAKlB5V,EAAMmqG,YAASv0F,EAKf5V,EAAMoqG,YAASx0F,EACR5V,CACX,CAsKA,OAtPA,EAAUwpG,EAAoB31F,GAyF9B21F,EAAmBplG,UAAUimG,iBAAmB,SAAUlxD,EAAiB3Y,EAAQ3hB,EAAK4nB,GACpF,OAAOrnC,KAAKumG,sBAAsBxsD,EAAiB3Y,EAAQ3hB,EAAK4nB,GAAQ,GAAO,EACnF,EAKA+iE,EAAmBplG,UAAUkmG,UAAY,SAAUC,EAAehqF,GAC9D,GAAKnhB,KAAK0c,OAAV,CAGA1c,KAAKwnG,cAAc2D,EAAehqF,GAClC,IAAI44B,EAAkBoxD,EAAcrkE,qBAChCO,EAAS8jE,EAAc7jE,YACvB8jE,EAAUprG,KAAKwiB,YAAYpf,OAC3BsjG,EAAQ1mG,KAAKirG,iBAAiBlxD,EAAiB,EAAGA,EAAgB32C,OAAQikC,GAC9ErnC,KAAKimG,aAAa3zF,KAAK,CACnB,aACA84F,EACA1E,EACA1mG,KAAK0c,OAEL1c,KAAKwqG,SAAWxqG,KAAKuqG,iBACrBvqG,KAAKyqG,SAAWzqG,KAAKuqG,iBACrBvqG,KAAKqqG,iBACLpoG,KAAKk/B,KAAKnhC,KAAK0qG,QAAU1qG,KAAKuqG,kBAC9BvqG,KAAK2qG,SACL3qG,KAAK4qG,SACL5qG,KAAK6qG,SACL7qG,KAAK8qG,gBACL9qG,KAAKgnB,UACL,CACKhnB,KAAK+qG,OAAO,GAAK/qG,KAAKsc,WAActc,KAAKuqG,iBACzCvqG,KAAK+qG,OAAO,GAAK/qG,KAAKsc,WAActc,KAAKuqG,kBAE9CtoG,KAAKk/B,KAAKnhC,KAAKgrG,OAAShrG,KAAKuqG,oBAEjCvqG,KAAKmmG,yBAAyB7zF,KAAK,CAC/B,aACA84F,EACA1E,EACA1mG,KAAKsqG,mBAELtqG,KAAKwqG,SACLxqG,KAAKyqG,SACLzqG,KAAKqqG,iBACLrqG,KAAK0qG,QACL1qG,KAAK2qG,SACL3qG,KAAK4qG,SACL5qG,KAAK6qG,SACL7qG,KAAK8qG,gBACL9qG,KAAKgnB,UACLhnB,KAAK+qG,OACL/qG,KAAKgrG,SAEThrG,KAAK4nG,YAAYzmF,EA7CjB,CA8CJ,EAKAipF,EAAmBplG,UAAUqmG,eAAiB,SAAUC,EAAoBnqF,GACxE,GAAKnhB,KAAK0c,OAAV,CAGA1c,KAAKwnG,cAAc8D,EAAoBnqF,GACvC,IAAI44B,EAAkBuxD,EAAmBxkE,qBACrCO,EAASikE,EAAmBhkE,YAC5B8jE,EAAUprG,KAAKwiB,YAAYpf,OAC3BsjG,EAAQ1mG,KAAKirG,iBAAiBlxD,EAAiB,EAAGA,EAAgB32C,OAAQikC,GAC9ErnC,KAAKimG,aAAa3zF,KAAK,CACnB,aACA84F,EACA1E,EACA1mG,KAAK0c,OAEL1c,KAAKwqG,SAAWxqG,KAAKuqG,iBACrBvqG,KAAKyqG,SAAWzqG,KAAKuqG,iBACrBvqG,KAAKqqG,iBACLpoG,KAAKk/B,KAAKnhC,KAAK0qG,QAAU1qG,KAAKuqG,kBAC9BvqG,KAAK2qG,SACL3qG,KAAK4qG,SACL5qG,KAAK6qG,SACL7qG,KAAK8qG,gBACL9qG,KAAKgnB,UACL,CACKhnB,KAAK+qG,OAAO,GAAK/qG,KAAKsc,WAActc,KAAKuqG,iBACzCvqG,KAAK+qG,OAAO,GAAK/qG,KAAKsc,WAActc,KAAKuqG,kBAE9CtoG,KAAKk/B,KAAKnhC,KAAKgrG,OAAShrG,KAAKuqG,oBAEjCvqG,KAAKmmG,yBAAyB7zF,KAAK,CAC/B,aACA84F,EACA1E,EACA1mG,KAAKsqG,mBAELtqG,KAAKwqG,SACLxqG,KAAKyqG,SACLzqG,KAAKqqG,iBACLrqG,KAAK0qG,QACL1qG,KAAK2qG,SACL3qG,KAAK4qG,SACL5qG,KAAK6qG,SACL7qG,KAAK8qG,gBACL9qG,KAAKgnB,UACLhnB,KAAK+qG,OACL/qG,KAAKgrG,SAEThrG,KAAK4nG,YAAYzmF,EA7CjB,CA8CJ,EAIAipF,EAAmBplG,UAAU6iG,OAAS,WAgBlC,OAfA7nG,KAAK8nG,kCAEL9nG,KAAKwqG,cAAWh0F,EAChBxW,KAAKyqG,cAAWj0F,EAChBxW,KAAKsqG,mBAAqB,KAC1BtqG,KAAK0c,OAAS,KACd1c,KAAKuqG,sBAAmB/zF,EACxBxW,KAAK0qG,aAAUl0F,EACfxW,KAAK+qG,YAASv0F,EACdxW,KAAK2qG,cAAWn0F,EAChBxW,KAAK4qG,cAAWp0F,EAChBxW,KAAK6qG,cAAWr0F,EAChBxW,KAAK8qG,qBAAkBt0F,EACvBxW,KAAKgnB,eAAYxQ,EACjBxW,KAAKgrG,YAASx0F,EACP/B,EAAOzP,UAAU6iG,OAAO76F,KAAKhN,KACxC,EAKAoqG,EAAmBplG,UAAUumG,cAAgB,SAAUC,EAAYC,GAC/D,IAAI1oE,EAASyoE,EAAWE,YACpBhrF,EAAO8qF,EAAW37F,UAClB87F,EAAoBH,EAAWI,uBAC/BpwF,EAAQgwF,EAAWzuF,SAAS/c,KAAKsc,YACjCuvF,EAASL,EAAWM,YACxB9rG,KAAKuqG,iBAAmBiB,EAAW/tF,cAAczd,KAAKsc,YACtDtc,KAAKwqG,SAAWznE,EAAO,GACvB/iC,KAAKyqG,SAAW1nE,EAAO,GACvB/iC,KAAKqqG,iBAAmBoB,EACxBzrG,KAAKsqG,mBAAqBqB,EAC1B3rG,KAAK0c,OAASlB,EACdxb,KAAK0qG,QAAUhqF,EAAK,GACpB1gB,KAAK2qG,SAAWa,EAAW7R,aAC3B35F,KAAK4qG,SAAWiB,EAAO,GACvB7rG,KAAK6qG,SAAWgB,EAAO,GACvB7rG,KAAK8qG,gBAAkBU,EAAWO,oBAClC/rG,KAAKgnB,UAAYwkF,EAAWrkF,cAC5BnnB,KAAK+qG,OAASS,EAAWQ,gBACzBhsG,KAAKgrG,OAAStqF,EAAK,EACvB,EACO0pF,CACX,CAxPuC,CAwPrC,GC1QF,IAAI,EAAwC,WACxC,IAAIh2F,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GA4I5C,QA1H6C,SAAUC,GAQnD,SAASw3F,EAAwB5xD,EAAW9c,EAAWlhB,EAAYC,GAC/D,OAAO7H,EAAOzH,KAAKhN,KAAMq6C,EAAW9c,EAAWlhB,EAAYC,IAAetc,IAC9E,CA8GA,OAvHA,EAAUisG,EAAyBx3F,GAkBnCw3F,EAAwBjnG,UAAUknG,qBAAuB,SAAUnyD,EAAiB3Y,EAAQ3hB,EAAK4nB,GAC7F,IAAI+jE,EAAUprG,KAAKwiB,YAAYpf,OAC3BsjG,EAAQ1mG,KAAKumG,sBAAsBxsD,EAAiB3Y,EAAQ3hB,EAAK4nB,GAAQ,GAAO,GAChF8kE,EAA0B,CAC1B,kBACAf,EACA1E,GAIJ,OAFA1mG,KAAKimG,aAAa3zF,KAAK65F,GACvBnsG,KAAKmmG,yBAAyB7zF,KAAK65F,GAC5B1sF,CACX,EAKAwsF,EAAwBjnG,UAAUonG,eAAiB,SAAUC,EAAoBlrF,GAC7E,IAAItE,EAAQ7c,KAAK6c,MACbgzD,EAAchzD,EAAMgzD,YACpBo5B,EAAYpsF,EAAMosF,UACtB,QAAoBzyF,IAAhBq5D,QAA2Cr5D,IAAdyyF,EAAjC,CAGAjpG,KAAK0pG,kBAAkB7sF,EAAO7c,KAAKspG,aACnCtpG,KAAKwnG,cAAc6E,EAAoBlrF,GACvCnhB,KAAKmmG,yBAAyB7zF,KAAK,CAC/B,mBACAuK,EAAMgzD,YACNhzD,EAAMosF,UACNpsF,EAAMyrF,QACNzrF,EAAMksF,SACNlsF,EAAMusF,WACNvsF,EAAM4rF,SACN5rF,EAAM+rF,gBACPlD,GACH,IAAI3rD,EAAkBsyD,EAAmBvlE,qBACrCO,EAASglE,EAAmB/kE,YAChCtnC,KAAKksG,qBAAqBnyD,EAAiB,EAAGA,EAAgB32C,OAAQikC,GACtErnC,KAAKmmG,yBAAyB7zF,KAAKmzF,GACnCzlG,KAAK4nG,YAAYzmF,EAjBjB,CAkBJ,EAKA8qF,EAAwBjnG,UAAUsnG,oBAAsB,SAAUC,EAAyBprF,GACvF,IAAItE,EAAQ7c,KAAK6c,MACbgzD,EAAchzD,EAAMgzD,YACpBo5B,EAAYpsF,EAAMosF,UACtB,QAAoBzyF,IAAhBq5D,QAA2Cr5D,IAAdyyF,EAAjC,CAGAjpG,KAAK0pG,kBAAkB7sF,EAAO7c,KAAKspG,aACnCtpG,KAAKwnG,cAAc+E,EAAyBprF,GAC5CnhB,KAAKmmG,yBAAyB7zF,KAAK,CAC/B,mBACAuK,EAAMgzD,YACNhzD,EAAMosF,UACNpsF,EAAMyrF,QACNzrF,EAAMksF,SACNlsF,EAAMusF,WACNvsF,EAAM4rF,SACN5rF,EAAM+rF,gBACPlD,GAKH,IAJA,IAAI/iD,EAAO4pD,EAAwB3oC,UAC/B7pB,EAAkBwyD,EAAwBzlE,qBAC1CO,EAASklE,EAAwBjlE,YACjClG,EAAS,EACJ52B,EAAI,EAAGiL,EAAKktC,EAAKv/C,OAAQoH,EAAIiL,IAAMjL,EACxC42B,EAASphC,KAAKksG,qBAAqBnyD,EAAiB3Y,EAC7BuhB,EAAKn4C,GAAK68B,GAErCrnC,KAAKmmG,yBAAyB7zF,KAAKmzF,GACnCzlG,KAAK4nG,YAAYzmF,EAtBjB,CAuBJ,EAIA8qF,EAAwBjnG,UAAU6iG,OAAS,WACvC,IAAIhrF,EAAQ7c,KAAK6c,MAOjB,OANwBrG,MAApBqG,EAAM2vF,YACN3vF,EAAM2vF,YAAcxsG,KAAKwiB,YAAYpf,QACrCpD,KAAKimG,aAAa3zF,KAAKmzF,GAE3BzlG,KAAK8nG,kCACL9nG,KAAK6c,MAAQ,KACNpI,EAAOzP,UAAU6iG,OAAO76F,KAAKhN,KACxC,EAIAisG,EAAwBjnG,UAAUskG,YAAc,SAAUzsF,GAC9BrG,MAApBqG,EAAM2vF,YACN3vF,EAAM2vF,YAAcxsG,KAAKwiB,YAAYpf,SACrCpD,KAAKimG,aAAa3zF,KAAKmzF,GACvB5oF,EAAM2vF,WAAaxsG,KAAKwiB,YAAYpf,QAExCyZ,EAAM2vF,WAAa,EACnB/3F,EAAOzP,UAAUskG,YAAYt8F,KAAKhN,KAAM6c,GACxC7c,KAAKimG,aAAa3zF,KAAKozF,EAC3B,EACOuG,CACX,CAzH4C,CAyH1C,iBC3IE,EAAwC,WACxC,IAAI73F,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GA2O5C,QAvN0C,SAAUC,GAQhD,SAASg4F,EAAqBpyD,EAAW9c,EAAWlhB,EAAYC,GAC5D,OAAO7H,EAAOzH,KAAKhN,KAAMq6C,EAAW9c,EAAWlhB,EAAYC,IAAetc,IAC9E,CA2MA,OApNA,EAAUysG,EAAsBh4F,GAkBhCg4F,EAAqBznG,UAAU0nG,sBAAwB,SAAU3yD,EAAiB3Y,EAAQuhB,EAAMtb,GAC5F,IAAIxqB,EAAQ7c,KAAK6c,MACby1D,OAA2B97D,IAApBqG,EAAM2B,UACbg0D,OAA+Bh8D,IAAtBqG,EAAMgzD,YACf88B,EAAUhqD,EAAKv/C,OACnBpD,KAAKimG,aAAa3zF,KAAKozF,GACvB1lG,KAAKmmG,yBAAyB7zF,KAAKozF,GACnC,IAAK,IAAIl7F,EAAI,EAAGA,EAAImiG,IAAWniG,EAAG,CAC9B,IAAIiV,EAAMkjC,EAAKn4C,GACX4gG,EAAUprG,KAAKwiB,YAAYpf,OAC3BsjG,EAAQ1mG,KAAKumG,sBAAsBxsD,EAAiB3Y,EAAQ3hB,EAAK4nB,GAAQ,GAAOmrC,GAChF25B,EAA0B,CAC1B,kBACAf,EACA1E,GAEJ1mG,KAAKimG,aAAa3zF,KAAK65F,GACvBnsG,KAAKmmG,yBAAyB7zF,KAAK65F,GAC/B35B,IAGAxyE,KAAKimG,aAAa3zF,KAAKqzF,GACvB3lG,KAAKmmG,yBAAyB7zF,KAAKqzF,IAEvCvkE,EAAS3hB,CACb,CASA,OARI6yD,IACAtyE,KAAKimG,aAAa3zF,KAAKkzF,GACvBxlG,KAAKmmG,yBAAyB7zF,KAAKkzF,IAEnChzB,IACAxyE,KAAKimG,aAAa3zF,KAAKmzF,GACvBzlG,KAAKmmG,yBAAyB7zF,KAAKmzF,IAEhCrkE,CACX,EAKAqrE,EAAqBznG,UAAU4nG,WAAa,SAAU3d,EAAgB9tE,GAClE,IAAItE,EAAQ7c,KAAK6c,MACb2B,EAAY3B,EAAM2B,UAClBqxD,EAAchzD,EAAMgzD,YACxB,QAAkBr5D,IAAdgI,QAA2ChI,IAAhBq5D,EAA/B,CAGA7vE,KAAK6sG,uBACL7sG,KAAKwnG,cAAcvY,EAAgB9tE,QACX3K,IAApBqG,EAAM2B,WACNxe,KAAKmmG,yBAAyB7zF,KAAK,CAC/B,iBACA,YAGkBkE,IAAtBqG,EAAMgzD,aACN7vE,KAAKmmG,yBAAyB7zF,KAAK,CAC/B,mBACAuK,EAAMgzD,YACNhzD,EAAMosF,UACNpsF,EAAMyrF,QACNzrF,EAAMksF,SACNlsF,EAAMusF,WACNvsF,EAAM4rF,SACN5rF,EAAM+rF,iBAGd,IAAI7uD,EAAkBk1C,EAAenoD,qBACjCO,EAAS4nD,EAAe3nD,YACxB8jE,EAAUprG,KAAKwiB,YAAYpf,OAC/BpD,KAAKumG,sBAAsBxsD,EAAiB,EAAGA,EAAgB32C,OAAQikC,GAAQ,GAAO,GACtF,IAAIylE,EAAoB,CAAC,SAA0B1B,GACnDprG,KAAKimG,aAAa3zF,KAAKozF,EAAsBoH,GAC7C9sG,KAAKmmG,yBAAyB7zF,KAAKozF,EAAsBoH,QACjCt2F,IAApBqG,EAAM2B,YACNxe,KAAKimG,aAAa3zF,KAAKkzF,GACvBxlG,KAAKmmG,yBAAyB7zF,KAAKkzF,SAEbhvF,IAAtBqG,EAAMgzD,cACN7vE,KAAKimG,aAAa3zF,KAAKmzF,GACvBzlG,KAAKmmG,yBAAyB7zF,KAAKmzF,IAEvCzlG,KAAK4nG,YAAYzmF,EApCjB,CAqCJ,EAKAsrF,EAAqBznG,UAAU+nG,YAAc,SAAUC,EAAiB7rF,GACpE,IAAItE,EAAQ7c,KAAK6c,MACb2B,EAAY3B,EAAM2B,UAClBqxD,EAAchzD,EAAMgzD,YACxB,QAAkBr5D,IAAdgI,QAA2ChI,IAAhBq5D,EAA/B,CAGA7vE,KAAK6sG,uBACL7sG,KAAKwnG,cAAcwF,EAAiB7rF,QACZ3K,IAApBqG,EAAM2B,WACNxe,KAAKmmG,yBAAyB7zF,KAAK,CAC/B,iBACA,YAGkBkE,IAAtBqG,EAAMgzD,aACN7vE,KAAKmmG,yBAAyB7zF,KAAK,CAC/B,mBACAuK,EAAMgzD,YACNhzD,EAAMosF,UACNpsF,EAAMyrF,QACNzrF,EAAMksF,SACNlsF,EAAMusF,WACNvsF,EAAM4rF,SACN5rF,EAAM+rF,iBAGd,IAAIjmD,EAAOqqD,EAAgBppC,UACvB7pB,EAAkBizD,EAAgBnoC,6BAClCx9B,EAAS2lE,EAAgB1lE,YAC7BtnC,KAAK0sG,sBAAsB3yD,EAAiB,EACf,EAAQ1S,GACrCrnC,KAAK4nG,YAAYzmF,EA1BjB,CA2BJ,EAKAsrF,EAAqBznG,UAAUioG,iBAAmB,SAAUC,EAAsB/rF,GAC9E,IAAItE,EAAQ7c,KAAK6c,MACb2B,EAAY3B,EAAM2B,UAClBqxD,EAAchzD,EAAMgzD,YACxB,QAAkBr5D,IAAdgI,QAA2ChI,IAAhBq5D,EAA/B,CAGA7vE,KAAK6sG,uBACL7sG,KAAKwnG,cAAc0F,EAAsB/rF,QACjB3K,IAApBqG,EAAM2B,WACNxe,KAAKmmG,yBAAyB7zF,KAAK,CAC/B,iBACA,YAGkBkE,IAAtBqG,EAAMgzD,aACN7vE,KAAKmmG,yBAAyB7zF,KAAK,CAC/B,mBACAuK,EAAMgzD,YACNhzD,EAAMosF,UACNpsF,EAAMyrF,QACNzrF,EAAMksF,SACNlsF,EAAMusF,WACNvsF,EAAM4rF,SACN5rF,EAAM+rF,iBAOd,IAJA,IAAIlkC,EAAQwoC,EAAqBjoC,WAC7BlrB,EAAkBmzD,EAAqBroC,6BACvCx9B,EAAS6lE,EAAqB5lE,YAC9BlG,EAAS,EACJ52B,EAAI,EAAGiL,EAAKivD,EAAMthE,OAAQoH,EAAIiL,IAAMjL,EACzC42B,EAASphC,KAAK0sG,sBAAsB3yD,EAAiB3Y,EAAQsjC,EAAMl6D,GAAI68B,GAE3ErnC,KAAK4nG,YAAYzmF,EA5BjB,CA6BJ,EAIAsrF,EAAqBznG,UAAU6iG,OAAS,WACpC7nG,KAAK8nG,kCACL9nG,KAAK6c,MAAQ,KAKb,IAAIw9B,EAAYr6C,KAAKq6C,UACrB,GAAkB,IAAdA,EAEA,IADA,IAAI73B,EAAcxiB,KAAKwiB,YACdhY,EAAI,EAAGiL,EAAK+M,EAAYpf,OAAQoH,EAAIiL,IAAMjL,EAC/CgY,EAAYhY,IAAK,QAAKgY,EAAYhY,GAAI6vC,GAG9C,OAAO5lC,EAAOzP,UAAU6iG,OAAO76F,KAAKhN,KACxC,EAIAysG,EAAqBznG,UAAU6nG,qBAAuB,WAClD,IAAIhwF,EAAQ7c,KAAK6c,WAECrG,IADFqG,EAAM2B,WAElBxe,KAAKwpG,gBAAgB3sF,EAAO7c,KAAKqpG,iBAEX7yF,IAAtBqG,EAAMgzD,aACN7vE,KAAK0pG,kBAAkB7sF,EAAO7c,KAAKspG,YAE3C,EACOmD,CACX,CAtNyC,CAsNvC,2BC9NK,SAASU,EAAcC,EAAUrzD,EAAiB3Y,EAAQ3hB,EAAK4nB,GAClE,IAKU78B,EAAG6iG,EAAKC,EAAK3pG,EAAIE,EAAI0pG,EAAKC,EAAKC,EAAKC,EAL1CC,EAAavsE,EACbwsE,EAAWxsE,EACXysE,EAAS,EACTvhG,EAAI,EACJyrB,EAAQqJ,EAEZ,IAAK52B,EAAI42B,EAAQ52B,EAAIiV,EAAKjV,GAAK68B,EAAQ,CACnC,IAAIpjC,EAAK81C,EAAgBvvC,GACrBrG,EAAK41C,EAAgBvvC,EAAI,QAClBgM,IAAP7S,IACA8pG,EAAMxpG,EAAKN,EACX+pG,EAAMvpG,EAAKN,EACXypG,EAAMrrG,KAAKuF,KAAKimG,EAAMA,EAAMC,EAAMA,QACtBl3F,IAAR+2F,IACAjhG,GAAK+gG,EACEprG,KAAK6rG,MAAMP,EAAME,EAAMD,EAAME,IAAQL,EAAMC,IACvCF,IACH9gG,EAAIuhG,IACJA,EAASvhG,EACTqhG,EAAa51E,EACb61E,EAAWpjG,GAEf8B,EAAI,EACJyrB,EAAQvtB,EAAI68B,IAGpBgmE,EAAMC,EACNC,EAAME,EACND,EAAME,GAEV/pG,EAAKM,EACLJ,EAAKM,CACT,CAEA,OADAmI,GAAKghG,GACMO,EAAS,CAAC91E,EAAOvtB,GAAK,CAACmjG,EAAYC,EAClD,CChDA,IAAI,EAAwC,WACxC,IAAIx5F,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GA6BjCu5F,EAAa,CACpB,KAAQ,EACR,IAAO,EACP,OAAU,GACV,MAAS,EACT,MAAS,EACT,IAAO,EACP,OAAU,GACV,QAAW,GACX,WAAc,GACd,YAAe,GACf,OAAU,GAEVC,EAAmC,SAAUv5F,GAQ7C,SAASu5F,EAAkB3zD,EAAW9c,EAAWlhB,EAAYC,GACzD,IAAI1b,EAAQ6T,EAAOzH,KAAKhN,KAAMq6C,EAAW9c,EAAWlhB,EAAYC,IAAetc,KA8E/E,OAzEAY,EAAMypG,iBAKNzpG,EAAMqtG,QAAU,KAKhBrtG,EAAMstG,MAAQ,GAKdttG,EAAMutG,aAAe,EAKrBvtG,EAAMwtG,aAAe,EAKrBxtG,EAAMytG,yBAAsB73F,EAK5B5V,EAAM0tG,cAAgB,EAKtB1tG,EAAM2tG,eAAiB,KAIvB3tG,EAAM4tG,WAAa,CAAC,EAKpB5tG,EAAM6tG,iBAAmB,KAIzB7tG,EAAM8tG,aAAe,CAAC,EAKtB9tG,EAAM+tG,WAA6D,CAAG,EAItE/tG,EAAMguG,WAAa,CAAC,EAKpBhuG,EAAMiuG,SAAW,GAKjBjuG,EAAMkuG,SAAW,GAKjBluG,EAAMmuG,WAAa,GACZnuG,CACX,CAmaA,OA1fA,EAAUotG,EAAmBv5F,GA2F7Bu5F,EAAkBhpG,UAAU6iG,OAAS,WACjC,IAAI5B,EAAexxF,EAAOzP,UAAU6iG,OAAO76F,KAAKhN,MAIhD,OAHAimG,EAAa2I,WAAa5uG,KAAK4uG,WAC/B3I,EAAauI,WAAaxuG,KAAKwuG,WAC/BvI,EAAayI,aAAe1uG,KAAK0uG,aAC1BzI,CACX,EAKA+H,EAAkBhpG,UAAUgqG,SAAW,SAAUp3F,EAAUuJ,GACvD,IAAI8tF,EAAYjvG,KAAKuuG,eACjBW,EAAclvG,KAAKyuG,iBACnBU,EAAYnvG,KAAK2uG,WACrB,GAAmB,KAAf3uG,KAAKkuG,OAAiBiB,IAAeF,GAAcC,GAAvD,CAGA,IAKI1kG,EAAGiL,EALH8J,EAAQvf,KAAKwiB,YAAYpf,OACzBgsG,EAAex3F,EAAS4uB,UACxBuT,EAAkB,KAClBt6B,EAAM,EACN4nB,EAASzvB,EAAS0vB,YAEtB,GAAI6nE,EAAUE,YAAcC,EAAA,OAAoB,CAC5C,KAAK,IAAA3yE,YAAW38B,KAAK2mG,uBAAwB/uF,EAAS4F,aAClD,OAEJ,IAAImlC,OAAO,EAEX,GADA5I,EAAkBniC,EAASkvB,qBACvBsoE,GAAgB3oE,EAAA,oBAChBkc,EAAO,CAAC5I,EAAgB32C,aAEvB,GAAIgsG,GAAgB3oE,EAAA,0BACrBkc,EAAsE,EAAWihB,eAEhF,GAAIwrC,GAAgB3oE,EAAA,gBACrBkc,EAA8D,EACzDihB,UACA92D,MAAM,EAAG,QAEb,GAAIsiG,GAAgB3oE,EAAA,sBAA4B,CACjD,IAAIi+B,EAAoE,EAAWO,WAEnF,IADAtiB,EAAO,GACFn4C,EAAI,EAAGiL,EAAKivD,EAAMthE,OAAQoH,EAAIiL,IAAMjL,EACrCm4C,EAAKrwC,KAAKoyD,EAAMl6D,GAAG,GAE3B,CACAxK,KAAKwnG,cAAc5vF,EAAUuJ,GAI7B,IAHA,IAAIyxD,EAAYu8B,EAAUv8B,UACtB28B,EAAa,EACbC,OAAU,EACL/kG,EAAI,EAAGglG,EAAK9sD,EAAKv/C,OAAQqH,EAAIglG,IAAMhlG,EAAG,CAC3C,GAAiB+L,MAAbo8D,EAAwB,CACxB,IAAI88B,EAAQvC,EAAcgC,EAAU/B,SAAUrzD,EAAiBw1D,EAAY5sD,EAAKl4C,GAAI48B,GACpFkoE,EAAaG,EAAM,GACnBF,EAAUE,EAAM,EACpB,MAEIF,EAAU7sD,EAAKl4C,GAEnB,IAAKD,EAAI+kG,EAAY/kG,EAAIglG,EAAShlG,GAAK68B,EACnCrnC,KAAKwiB,YAAYlQ,KAAKynC,EAAgBvvC,GAAIuvC,EAAgBvvC,EAAI,IAElEiV,EAAMzf,KAAKwiB,YAAYpf,OACvBmsG,EAAa5sD,EAAKl4C,GAClB,IAAIklG,EAAiB3vG,KAAKqqG,iBACd,IAAN5/F,EACIzK,KAAKqqG,iBAAiB,GACtB,GAAG73F,OAAOxS,KAAKqqG,iBAAiB,IACpC,KACNrqG,KAAK4vG,WAAWrwF,EAAOE,EAAKkwF,GAC5BpwF,EAAQE,CACZ,CACAzf,KAAK4nG,YAAYzmF,EACrB,KACK,CACD,IAAI0uF,EAAiB,KAIrB,OAHKV,EAAUl/E,WACX4/E,EAAiB,IAEbT,GACJ,KAAK3oE,EAAA,cACL,KAAKA,EAAA,oBAEDhnB,GADAs6B,EAA4E,EAAWjT,sBACjE1jC,OACtB,MACJ,KAAKqjC,EAAA,oBACDsT,EAA4E,EAAWopB,kBACvF,MACJ,KAAK18B,EAAA,eACDsT,EAAwE,EAAWpV,YACnF,MACJ,KAAK8B,EAAA,0BAEDY,EAAS,EACT5nB,GAFAs6B,EAAiF,EAAW+pB,oBAEtE1gE,OACtB,MACJ,KAAKqjC,EAAA,gBACDsT,EAAyE,EAAWgsB,uBAC/EopC,EAAUl/E,UACX4/E,EAAev9F,KAAKynC,EAAgB,GAAK/5C,KAAKqc,YAElDgrB,EAAS,EACT,MACJ,KAAKZ,EAAA,sBACD,IAAIwjC,EAA6E,EAAW/E,wBAE5F,IADAnrB,EAAkB,GACbvvC,EAAI,EAAGiL,EAAKw0D,EAAe7mE,OAAQoH,EAAIiL,EAAIjL,GAAK,EAC5C2kG,EAAUl/E,UACX4/E,EAAev9F,KAAK23D,EAAez/D,EAAI,GAAKxK,KAAKqc,YAErD09B,EAAgBznC,KAAK23D,EAAez/D,GAAIy/D,EAAez/D,EAAI,IAI/D,GAFA68B,EAAS,EAEE,IADX5nB,EAAMs6B,EAAgB32C,QAElB,OAKZqc,EAAMzf,KAAKumG,sBAAsBxsD,EAAiB,EAAGt6B,EAAK4nB,GAAQ,GAAO,GACzErnC,KAAK8vG,mBACDX,EAAUY,gBAAkBZ,EAAUa,oBACtChwG,KAAKgoG,mBAAmBmH,EAAUY,eAAgBZ,EAAUa,kBACxDb,EAAUY,iBACV/vG,KAAKwpG,gBAAgBxpG,KAAK6c,MAAO7c,KAAKqpG,YACtCrpG,KAAKmmG,yBAAyB7zF,KAAKtS,KAAKqpG,WAAWrpG,KAAK6c,SAExDsyF,EAAUa,mBACVhwG,KAAK0pG,kBAAkB1pG,KAAK6c,MAAO7c,KAAKspG,aACxCtpG,KAAKmmG,yBAAyB7zF,KAAKtS,KAAKupG,aAAavpG,KAAK6c,UAGlE7c,KAAKwnG,cAAc5vF,EAAUuJ,GAE7B,IAAI0lB,EAAUsoE,EAAUtoE,QACxB,GAAIA,GAAW,OACVsoE,EAAU39D,MAAM,GAAK,GAAK29D,EAAU39D,MAAM,GAAK,GAAI,CACpD,IAAIy+D,EAAKd,EAAUtoE,QAAQ,GACvB4vC,EAAK04B,EAAUtoE,QAAQ,GACvB6vC,EAAKy4B,EAAUtoE,QAAQ,GACvBqpE,EAAKf,EAAUtoE,QAAQ,GACvBsoE,EAAU39D,MAAM,GAAK,IACrBilC,GAAMA,EACNy5B,GAAMA,GAENf,EAAU39D,MAAM,GAAK,IACrBy+D,GAAMA,EACNv5B,GAAMA,GAEV7vC,EAAU,CAACopE,EAAIx5B,EAAIC,EAAIw5B,EAC3B,CAIA,IAAIC,EAAenwG,KAAKsc,WACxBtc,KAAKimG,aAAa3zF,KAAK,CACnB,aACAiN,EACAE,EACA,KACAi5C,IACAA,IACA14D,KAAKqqG,iBACL3xC,IACA,EACA,EACA,EACA14D,KAAKquG,oBACLruG,KAAKsuG,cACL,CAAC,EAAG,GACJ51C,IACA7xB,GAAW,KACL,KACAA,EAAQ34B,KAAI,SAAUnE,GACpB,OAAOA,EAAIomG,CACf,MACFhB,EAAUY,iBACVZ,EAAUa,iBACZhwG,KAAKkuG,MACLluG,KAAK6uG,SACL7uG,KAAK+uG,WACL/uG,KAAK8uG,SACL9uG,KAAKmuG,aACLnuG,KAAKouG,aACLyB,IAEJ,IAAIr+D,EAAQ,EAAI2+D,EAChBnwG,KAAKmmG,yBAAyB7zF,KAAK,CAC/B,aACAiN,EACAE,EACA,KACAi5C,IACAA,IACA14D,KAAKqqG,iBACL3xC,IACA,EACA,EACA,EACA14D,KAAKquG,oBACLruG,KAAKsuG,cACL,CAAC98D,EAAOA,GACRknB,IACA7xB,IACEsoE,EAAUY,iBACVZ,EAAUa,iBACZhwG,KAAKkuG,MACLluG,KAAK6uG,SACL7uG,KAAK+uG,WACL/uG,KAAK8uG,SACL9uG,KAAKmuG,aACLnuG,KAAKouG,aACLyB,IAEJ7vG,KAAK4nG,YAAYzmF,EACrB,CAzMA,CA0MJ,EAIA6sF,EAAkBhpG,UAAU8qG,gBAAkB,WAC1C,IAAIZ,EAAclvG,KAAKyuG,iBACnBU,EAAYnvG,KAAK2uG,WACjBM,EAAYjvG,KAAKuuG,eACjB6B,EAAYpwG,KAAK+uG,WACjBG,IACMkB,KAAapwG,KAAK0uG,eACpB1uG,KAAK0uG,aAAa0B,GAAa,CAC3BvgC,YAAaq/B,EAAYr/B,YACzBy4B,QAAS4G,EAAY5G,QACrBM,eAAgBsG,EAAYtG,eAC5BK,UAAWiG,EAAYjG,UACvBF,SAAUmG,EAAYnG,SACtBK,WAAY8F,EAAY9F,WACxBX,SAAUyG,EAAYzG,YAIlC,IAAI4H,EAAUrwG,KAAK6uG,SACbwB,KAAWrwG,KAAK4uG,aAClB5uG,KAAK4uG,WAAWyB,GAAW,CACvBj+B,KAAM+8B,EAAU/8B,KAChBQ,UAAWu8B,EAAUv8B,WAAa,KAClCP,aAAc88B,EAAU98B,cAAgB,KACxC7gC,MAAO29D,EAAU39D,QAGzB,IAAI8+D,EAAUtwG,KAAK8uG,SACfG,IACMqB,KAAWtwG,KAAKwuG,aAClBxuG,KAAKwuG,WAAW8B,GAAW,CACvB9xF,UAAWywF,EAAUzwF,YAIrC,EAOAwvF,EAAkBhpG,UAAU4qG,WAAa,SAAUrwF,EAAOE,EAAKkwF,GAC3D,IAAIT,EAAclvG,KAAKyuG,iBACnBU,EAAYnvG,KAAK2uG,WACjByB,EAAYpwG,KAAK+uG,WACjBsB,EAAUrwG,KAAK6uG,SACfyB,EAAUtwG,KAAK8uG,SACnB9uG,KAAK8vG,kBACL,IAAIxzF,EAAatc,KAAKsc,WAClBi0F,EAAWxC,EAAWoB,EAAU98B,cAChC4I,EAAUj7E,KAAKouG,aAAe9xF,EAC9BjX,EAAOrF,KAAKkuG,MACZsC,EAActB,EACXA,EAAYjG,UAAYhnG,KAAK2G,IAAIumG,EAAU39D,MAAM,IAAO,EACzD,EACNxxC,KAAKimG,aAAa3zF,KAAK,CACnB,aACAiN,EACAE,EACA8wF,EACAZ,EACAR,EAAUl/E,SACVqgF,EACAnB,EAAU/B,SACV9wF,EACA2+D,EACAm1B,EACAI,EAAcl0F,EACdjX,EACAgrG,EACA,IAEJrwG,KAAKmmG,yBAAyB7zF,KAAK,CAC/B,aACAiN,EACAE,EACA8wF,EACAZ,EACAR,EAAUl/E,SACVqgF,EACAnB,EAAU/B,SACV,EACAnyB,EACAm1B,EACAI,EACAnrG,EACAgrG,EACA,EAAI/zF,GAEZ,EAKA0xF,EAAkBhpG,UAAUyrG,aAAe,SAAUC,EAAWjF,GAC5D,IAAI0D,EAAWF,EAAWC,EAC1B,GAAKwB,EAGA,CACD1wG,KAAKqqG,iBAAmBoB,EACxB,IAAIkF,EAAgBD,EAAUE,UACzBD,IAKD1B,EAAYjvG,KAAKuuG,kBAEbU,EAA4D,CAAG,EAC/DjvG,KAAKuuG,eAAiBU,GAE1BA,EAAUzwF,WAAY,OAAYmyF,EAAczI,YAAc,QAT9D+G,EAAY,KACZjvG,KAAKuuG,eAAiBU,GAU1B,IAAI4B,EAAkBH,EAAUI,YAChC,GAAKD,EAIA,EACD3B,EAAclvG,KAAKyuG,oBAEfS,EAAgE,CAAG,EACnElvG,KAAKyuG,iBAAmBS,GAE5B,IAAIzG,EAAWoI,EAAgBrI,cAC3BI,EAAiBiI,EAAgBlI,oBACjCM,EAAY4H,EAAgBnvF,WAC5B0nF,EAAayH,EAAgB1H,gBACjC+F,EAAY5G,QAAUuI,EAAgBxI,cAAgB,KACtD6G,EAAYzG,SAAWA,EAAWA,EAAS37F,QAAU,KACrDoiG,EAAYtG,oBACWpyF,IAAnBoyF,EAA+B,KAAwBA,EAC3DsG,EAAYnG,SAAW8H,EAAgB/H,eAAiB,KACxDoG,EAAYjG,eACMzyF,IAAdyyF,EAA0B,KAAmBA,EACjDiG,EAAY9F,gBACO5yF,IAAf4yF,EAA2B,KAAoBA,EACnD8F,EAAYr/B,aAAc,OAAYghC,EAAgB3I,YAAc,KACxE,MAvBIgH,EAAc,KACdlvG,KAAKyuG,iBAAmBS,EAuB5BC,EAAYnvG,KAAK2uG,WACjB,IAAIv8B,EAAOs+B,EAAUK,WAAa,MAClC,QAAa3+B,GACb,IAAI4+B,EAAYN,EAAU1E,gBAC1BmD,EAAUl/E,SAAWygF,EAAUO,cAC/B9B,EAAU/8B,KAAOA,EACjB+8B,EAAU/B,SAAWsD,EAAUQ,cAC/B/B,EAAUE,UAAYqB,EAAUS,eAChChC,EAAUv8B,UAAY89B,EAAUU,eAChCjC,EAAU98B,aACNq+B,EAAUW,mBAAqB,KACnClC,EAAUY,eAAiBW,EAAUY,oBACrCnC,EAAUa,iBAAmBU,EAAUa,sBACvCpC,EAAUtoE,QAAU6pE,EAAUc,cAAgB,KAC9CrC,EAAU39D,WAAsBh7B,IAAdw6F,EAA0B,CAAC,EAAG,GAAKA,EACrD,IAAIS,EAAcf,EAAUgB,aACxBC,EAAcjB,EAAUkB,aACxBC,EAAqBnB,EAAU3E,oBAC/B+F,EAAepB,EAAUvpF,cAC7BnnB,KAAKkuG,MAAQwC,EAAUv7C,WAAa,GACpCn1D,KAAKmuG,kBAA+B33F,IAAhBi7F,EAA4B,EAAIA,EACpDzxG,KAAKouG,kBAA+B53F,IAAhBm7F,EAA4B,EAAIA,EACpD3xG,KAAKquG,yBACsB73F,IAAvBq7F,GAA2CA,EAC/C7xG,KAAKsuG,mBAAiC93F,IAAjBs7F,EAA6B,EAAIA,EACtD9xG,KAAK+uG,WAAaG,GACuB,iBAA3BA,EAAYr/B,YAChBq/B,EAAYr/B,aACZ,QAAOq/B,EAAYr/B,cACrBq/B,EAAY5G,QACZ4G,EAAYtG,eACZ,IACAsG,EAAYjG,UACZiG,EAAYnG,SACZmG,EAAY9F,WACZ,IACA8F,EAAYzG,SAASl2F,OACrB,IACF,GACNvS,KAAK6uG,SACDM,EAAU/8B,KACN+8B,EAAU39D,OACT29D,EAAUv8B,WAAa,MACvBu8B,EAAU98B,cAAgB,KACnCryE,KAAK8uG,SAAWG,EACoB,iBAAvBA,EAAUzwF,UACbywF,EAAUzwF,UACV,KAAM,QAAOywF,EAAUzwF,WAC3B,EACV,MA5FIxe,KAAKkuG,MAAQ,EA6FrB,EACOF,CACX,CA5fsC,CA4fpC,GC3hBE+D,EAAqB,CACrB,OAAUC,EACV,QAAWC,EACX,MAASC,EACT,WAAcC,EACd,QAAWH,EACX,KDshBJ,GC/aA,QArGkC,WAQ9B,SAASI,EAAa/3D,EAAW9c,EAAWlhB,EAAYC,EAAY0nF,GAKhEhkG,KAAK+jG,WAAaC,EAKlBhkG,KAAKqqG,iBAAmB,KAKxBrqG,KAAKqyG,WAAah4D,EAKlBr6C,KAAKsyG,WAAa/0E,EAKlBv9B,KAAKud,YAAcjB,EAKnBtc,KAAKuyG,YAAcl2F,EAKnBrc,KAAKwyG,kBAAoB,CAAC,CAC9B,CAuDA,OAlDAJ,EAAaptG,UAAUytG,aAAe,SAAUC,GAE5C,IAAI1O,EAAY,KAWhB,OAVIhkG,KAAK+jG,aACD2O,GACA1O,EAAYhkG,KAAKqqG,kBACgB,GAAG,MAGpCrG,EAAY,CAAC,CAAC,IACdhkG,KAAKqqG,iBAAmBrG,IAGzBA,CACX,EAIAoO,EAAaptG,UAAU6iG,OAAS,WAC5B,IAAI8K,EAAsB,CAAC,EAC3B,IAAK,IAAIC,KAAQ5yG,KAAKwyG,kBAAmB,CACrCG,EAAoBC,GAAQD,EAAoBC,IAAS,CAAC,EAC1D,IAAIC,EAAW7yG,KAAKwyG,kBAAkBI,GACtC,IAAK,IAAIE,KAAcD,EAAU,CAC7B,IAAIE,EAAqBF,EAASC,GAAYjL,SAC9C8K,EAAoBC,GAAME,GAAcC,CAC5C,CACJ,CACA,OAAOJ,CACX,EAMAP,EAAaptG,UAAUguG,WAAa,SAAUzvF,EAAQ0vF,GAClD,IAAIC,OAAuB18F,IAAX+M,EAAuBA,EAAOxe,WAAa,IACvDouG,EAAUnzG,KAAKwyG,kBAAkBU,QACrB18F,IAAZ28F,IACAA,EAAU,CAAC,EACXnzG,KAAKwyG,kBAAkBU,GAAaC,GAExC,IAAIC,EAASD,EAAQF,GAMrB,YALez8F,IAAX48F,IAEAA,EAAS,IAAIC,EADKtB,EAAmBkB,IACZjzG,KAAKqyG,WAAYryG,KAAKsyG,WAAYtyG,KAAKuyG,YAAavyG,KAAKud,aAClF41F,EAAQF,GAAeG,GAEpBA,CACX,EACOhB,CACX,CApGiC,sFCE1B,SAASkB,EAAev5D,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQhiC,EAAMkuG,EAAQnG,EAAU57D,EAAOgiE,EAA0BphC,EAAMvmC,EAAOlrB,GACvI,IAEIwgF,EAFA3hG,EAAS,GAGb,GAAImhB,EAAU,CACV,IAAI8yF,GAAqB,QAAO15D,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQ1mB,EAAU,CAACo5B,EAAgB3Y,GAAS2Y,EAAgB3Y,EAAS,KACnI+/D,EACIsS,EAAmB,GACfA,EAAmBA,EAAmBrwG,OAASikC,EAC3D,MAEI85D,EAAUpnD,EAAgB3Y,GAAU2Y,EAAgBt6B,EAAM4nB,GAY9D,IAVA,IASInyB,EAAOw+F,EATPC,EAAWtuG,EAAKjC,OAChBO,EAAKo2C,EAAgB3Y,GACrBv9B,EAAKk2C,EAAgB3Y,EAAS,GAE9Bn9B,EAAK81C,EADT3Y,GAAUiG,GAENljC,EAAK41C,EAAgB3Y,EAAS,GAC9BwyE,EAAW,EACX7pC,EAAgB9nE,KAAKuF,KAAKvF,KAAKI,IAAI4B,EAAKN,EAAI,GAAK1B,KAAKI,IAAI8B,EAAKN,EAAI,IACnEgwG,GAAe,EAEVrpG,EAAI,EAAGA,EAAImpG,IAAYnpG,EAAG,CAK/B,IAHA,IAAIspG,EAAOzuG,EADX6P,EAAQisF,EAAUwS,EAAWnpG,EAAI,EAAIA,GAEjCupG,EAAaviE,EAAQgiE,EAAyBphC,EAAM0hC,EAAMjoE,GAC1DmoE,EAAQT,EAASQ,EAAa,EAC3B3yE,EAAS3hB,EAAM4nB,GAAUusE,EAAW7pC,EAAgBiqC,GACvDrwG,EAAKM,EACLJ,EAAKM,EAELF,EAAK81C,EADL3Y,GAAUiG,GAEVljC,EAAK41C,EAAgB3Y,EAAS,GAC9BwyE,GAAY7pC,EACZA,EAAgB9nE,KAAKuF,KAAKvF,KAAKI,IAAI4B,EAAKN,EAAI,GAAK1B,KAAKI,IAAI8B,EAAKN,EAAI,IAEvE,IAAIowG,EAAaD,EAAQJ,EACrBvgE,EAAQpxC,KAAK2H,MAAMzF,EAAKN,EAAII,EAAKN,GAIrC,GAHIw9F,IACA9tD,GAASA,EAAQ,GAAKpxC,KAAKmlB,GAAKnlB,KAAKmlB,SAEnB5Q,IAAlBk9F,EAA6B,CAC7B,IAAIjsF,EAAQ4rB,EAAQqgE,EAIpB,GAHAG,EAAeA,GAA0B,IAAVpsF,EAC/BA,GACIA,EAAQxlB,KAAKmlB,IAAM,EAAInlB,KAAKmlB,GAAKK,GAASxlB,KAAKmlB,GAAK,EAAInlB,KAAKmlB,GAAK,EAClEnlB,KAAK2G,IAAI6e,GAAS2lF,EAClB,OAAO,IAEf,CACAsG,EAAgBrgE,EAChB,IAAIswB,EAAcswC,EAAalqC,EAC3B/nE,GAAI,QAAK2B,EAAIM,EAAI0/D,GACjB5hE,GAAI,QAAK8B,EAAIM,EAAIw/D,GACrBnkE,EAAO0V,GAAS,CAAClT,EAAGD,EAAGgyG,EAAa,EAAG1gE,EAAOygE,GAC9CP,GAAUQ,CACd,CACA,OAAOF,EACDr0G,EACA,CAAC,CAACA,EAAO,GAAG,GAAIA,EAAO,GAAG,GAAIA,EAAO,GAAG,GAAIA,EAAO,GAAG,GAAI6F,GACpE,eCvDI+5F,GAAY,IAAA1lD,eAIZ+kB,GAAe,UAEfgY,GAAK,GAELC,GAAK,GAELw5B,GAAK,GAELgE,GAAK,GACLC,GAA0B,WAQ1B,SAASA,EAAS93F,EAAYC,EAAY+2D,EAAU4yB,EAAct2B,GAK9D3vE,KAAKqzE,SAAWA,EAKhBrzE,KAAKsc,WAAaA,EAMlBtc,KAAKqc,WAAaA,EAKlBrc,KAAKo0G,WAILp0G,KAAKs2B,eAAiB,GAKtBt2B,KAAKimG,aAAeA,EAAaA,aAKjCjmG,KAAKwiB,YAAcyjF,EAAazjF,YAKhCxiB,KAAKq0G,iBAAmB,CAAC,EAKzBr0G,KAAKikG,cAAgBt0B,EAKrB3vE,KAAKs0G,oBAAqB,UAK1Bt0G,KAAKmmG,yBAA2BF,EAAaE,yBAK7CnmG,KAAKu0G,kBAAoB,KAKzBv0G,KAAKw0G,cAAgB,EAIrBx0G,KAAKwuG,WAAavI,EAAauI,YAAc,CAAC,EAI9CxuG,KAAK0uG,aAAezI,EAAayI,cAAgB,CAAC,EAIlD1uG,KAAK4uG,WAAa3I,EAAa2I,YAAc,CAAC,EAK9C5uG,KAAKy0G,QAAU,CAAC,EAKhBz0G,KAAKiuG,QAAU,CAAC,CACpB,CAovBA,OA5uBAkG,EAASnvG,UAAU0vG,YAAc,SAAUrvG,EAAMgrG,EAASC,EAASF,GAC/D,IAAIzjF,EAAMtnB,EAAOgrG,EAAUC,EAAUF,EACrC,GAAIpwG,KAAKiuG,QAAQthF,GACb,OAAO3sB,KAAKiuG,QAAQthF,GAExB,IAAIuiF,EAAckB,EAAYpwG,KAAK0uG,aAAa0B,GAAa,KACzDnB,EAAYqB,EAAUtwG,KAAKwuG,WAAW8B,GAAW,KACjDnB,EAAYnvG,KAAK4uG,WAAWyB,GAC5B/zF,EAAatc,KAAKsc,WAClBk1B,EAAQ,CACR29D,EAAU39D,MAAM,GAAKl1B,EACrB6yF,EAAU39D,MAAM,GAAKl1B,GAErBq4F,EAAQ5G,EAAWoB,EAAUv8B,WAAa,MAC1C49B,EAAcJ,GAAalB,EAAYjG,UAAYiG,EAAYjG,UAAY,EAC3E59C,EAAQhmD,EAAKiL,MAAM,MACnBskG,EAAWvpD,EAAMjoD,OACjByxG,EAAS,GACTxpG,GAAQ,QAAkB8jG,EAAU/8B,KAAM/mB,EAAOwpD,GACjDvmG,GAAa,QAAkB6gG,EAAU/8B,MAEzC0iC,EAAczpG,EAAQmlG,EACtBuE,EAAsB,GAEtB3iG,GAAK0iG,EAAc,GAAKtjE,EAAM,GAC9BpmC,GALSkD,EAAasmG,EAKRpE,GAAeh/D,EAAM,GAEnCzsB,EAAQ,CACR1Z,MAAO+G,EAAI,EAAInQ,KAAKC,MAAMkQ,GAAKnQ,KAAKk/B,KAAK/uB,GACzCnB,OAAQ7F,EAAI,EAAInJ,KAAKC,MAAMkJ,GAAKnJ,KAAKk/B,KAAK/1B,GAC1C2pG,oBAAqBA,GAET,GAAZvjE,EAAM,IAAuB,GAAZA,EAAM,IACvBujE,EAAoBziG,KAAK,QAASk/B,GAEtCujE,EAAoBziG,KAAK,OAAQ68F,EAAU/8B,MACvCg+B,IACA2E,EAAoBziG,KAAK,cAAe48F,EAAYr/B,aACpDklC,EAAoBziG,KAAK,YAAak+F,GACtCuE,EAAoBziG,KAAK,UAAW48F,EAAY5G,SAChDyM,EAAoBziG,KAAK,WAAY48F,EAAYnG,UACjDgM,EAAoBziG,KAAK,aAAc48F,EAAY9F,aAErC,KAA0B4L,kCAAoCC,0BAChEjwG,UAAUkwG,cAClBH,EAAoBziG,KAAK,cAAe,CAAC48F,EAAYzG,WACrDsM,EAAoBziG,KAAK,iBAAkB48F,EAAYtG,kBAG3D0H,GACAyE,EAAoBziG,KAAK,YAAa28F,EAAUzwF,WAEpDu2F,EAAoBziG,KAAK,eAAgB,UACzCyiG,EAAoBziG,KAAK,YAAa,UACtC,IAEI9H,EAFA2qG,EAAY,GAAMR,EAClB3yG,EAAI2yG,EAAQG,EAAcK,EAAY3E,EAE1C,GAAIJ,EACA,IAAK5lG,EAAI,EAAGA,EAAIoqG,IAAYpqG,EACxBuqG,EAAoBziG,KAAK,aAAc,CACnC+4C,EAAM7gD,GACNxI,EAAImzG,EAAYN,EAAOrqG,GACvB,IAAOgmG,EAAcliG,GAAc9D,EAAI8D,IAInD,GAAIgiG,EACA,IAAK9lG,EAAI,EAAGA,EAAIoqG,IAAYpqG,EACxBuqG,EAAoBziG,KAAK,WAAY,CACjC+4C,EAAM7gD,GACNxI,EAAImzG,EAAYN,EAAOrqG,GACvB,IAAOgmG,EAAcliG,GAAc9D,EAAI8D,IAKnD,OADAtO,KAAKiuG,QAAQthF,GAAO5H,EACbA,CACX,EAWAovF,EAASnvG,UAAUowG,sBAAwB,SAAU91G,EAASm3E,EAAIC,EAAIw5B,EAAIgE,EAAI1O,EAAiBC,EAAmBzB,GAC9G1kG,EAAQojG,YACRpjG,EAAQqjG,OAAO7iG,MAAMR,EAASm3E,GAC9Bn3E,EAAQsjG,OAAO9iG,MAAMR,EAASo3E,GAC9Bp3E,EAAQsjG,OAAO9iG,MAAMR,EAAS4wG,GAC9B5wG,EAAQsjG,OAAO9iG,MAAMR,EAAS40G,GAC9B50G,EAAQsjG,OAAO9iG,MAAMR,EAASm3E,GAC1B+uB,IACAxlG,KAAKo0G,WAAqC5O,EAAgB,GACtDxB,IACA1kG,EAAQkf,UAAmEgnF,EAAgB,IAE/FxlG,KAAKq1G,MAAM/1G,IAEXmmG,IACAzlG,KAAKs1G,gBAAgBh2G,EACG,GACxBA,EAAQkzE,SAEhB,EAuBA2hC,EAASnvG,UAAUuwG,oBAAsB,SAAUj2G,EAASk2G,EAAcxzG,EAAGD,EAAG0zG,EAAc/nC,EAASC,EAASgiC,EAAgB1+F,EAAQmoF,EAASsc,EAASC,EAASh1F,EAAU6wB,EAAOokE,EAAavqG,EAAOw7B,EAAS2+D,EAAiBC,GAC9N,IAAIoQ,EAAarQ,GAAmBC,EAGpCzjG,GAFA0rE,GAAWl8B,EAAM,GAGjBzvC,GAFA4rE,GAAWn8B,EAAM,GAGjB,IAAIp/B,EAAI/G,EAAQqqG,EAAUD,EAAapqG,MACjCoqG,EAAapqG,MAAQqqG,EACrBrqG,EACFD,EAAI6F,EAAS0kG,EAAUF,EAAaxkG,OAClCwkG,EAAaxkG,OAAS0kG,EACtB1kG,EACF6kG,EAAOjvE,EAAQ,GAAKz0B,EAAIo/B,EAAM,GAAK3K,EAAQ,GAC3CkvE,EAAOlvE,EAAQ,GAAKz7B,EAAIomC,EAAM,GAAK3K,EAAQ,GAC3CmvE,EAAOh0G,EAAI6kC,EAAQ,GACnBovE,EAAOl0G,EAAI8kC,EAAQ,IACnBgvE,GAA2B,IAAbl1F,KACd81D,GAAG,GAAKu/B,EACR9B,GAAG,GAAK8B,EACRv/B,GAAG,GAAKw/B,EACRv/B,GAAG,GAAKu/B,EACRv/B,GAAG,GAAKs/B,EAAOF,EACf5F,GAAG,GAAKx5B,GAAG,GACXw5B,GAAG,GAAK+F,EAAOF,EACf7B,GAAG,GAAKhE,GAAG,IAEf,IAAI3oF,EAAY,KAChB,GAAiB,IAAb5G,EAAgB,CAChB,IAAIonB,EAAU/lC,EAAI0rE,EACd1lC,EAAUjmC,EAAI4rE,EAClBpmD,GAAY,QAAiBk3C,EAAc12B,EAASC,EAAS,EAAG,EAAGrnB,GAAWonB,GAAUC,IACxF,QAAey2B,EAAcgY,KAC7B,QAAehY,EAAciY,KAC7B,QAAejY,EAAcyxC,KAC7B,QAAezxC,EAAcy1C,KAC7B,IAAAt3E,gBAAe36B,KAAK27B,IAAI64C,GAAG,GAAIC,GAAG,GAAIw5B,GAAG,GAAIgE,GAAG,IAAKjyG,KAAK27B,IAAI64C,GAAG,GAAIC,GAAG,GAAIw5B,GAAG,GAAIgE,GAAG,IAAKjyG,KAAKm7B,IAAIq5C,GAAG,GAAIC,GAAG,GAAIw5B,GAAG,GAAIgE,GAAG,IAAKjyG,KAAKm7B,IAAIq5C,GAAG,GAAIC,GAAG,GAAIw5B,GAAG,GAAIgE,GAAG,IAAK9U,EAC3K,MAEI,IAAAxiE,gBAAeo5E,EAAMC,EAAMD,EAAOF,EAAMG,EAAOF,EAAM3W,GAEzDp/F,KAAKikG,cAAc,GAAKhiG,KAAKm7B,IAAIp9B,KAAKikG,cAAc,IAAI,IAAAviF,UAAS09E,IACjEp/F,KAAKikG,cAAc,GAAKhiG,KAAKm7B,IAAIp9B,KAAKikG,cAAc,IAAI,IAAA9mF,WAAUiiF,IAClE,IAAI1gF,EAASpf,EAAQof,OACjBw3F,EAAgBzQ,EACbA,EAAkB,GAAKj0D,EAAM,GAAM,EACpC,EACFm+B,EAAe3vE,KAAKikG,cACpBtnE,EAAayiE,EAAU,GAAK8W,IAC3Bx3F,EAAOrT,MAAQskE,EAAa,IAAM6lC,GACnCpW,EAAU,GAAK8W,IAAkBvmC,EAAa,GAAK6lC,GACnDpW,EAAU,GAAK8W,IACVx3F,EAAOzN,OAAS0+D,EAAa,IAAM6lC,GACxCpW,EAAU,GAAK8W,IAAkBvmC,EAAa,GAAK6lC,EAKvD,GAJII,IACA5zG,EAAIC,KAAKE,MAAMH,GACfD,EAAIE,KAAKE,MAAMJ,IAEf4tG,EAAgB,CAChB,IAAKhzE,GAAmC,GAArBgzE,EAAe,GAC9B,OAAO,EAEX,IAAIwG,EAAgBx5E,EACd,CACEr9B,EACAioB,EAAYA,EAAUza,MAAM,GAAK,KACjCssF,EACAqc,EACAC,EACAC,EACAvjG,EACAhH,EACApJ,EACAD,EACAyvC,EACA4tD,EAAUtyF,SAEZ,KACFqpG,IACIN,GACAM,EAAc7jG,KAAKkzF,EAAiBC,EAAmBhvB,GAAG3pE,MAAM,GAAI4pE,GAAG5pE,MAAM,GAAIojG,GAAGpjG,MAAM,GAAIonG,GAAGpnG,MAAM,IAE3G6iG,EAAer9F,KAAK6jG,GAE5B,MACSx5E,IACDk5E,GACA71G,KAAKo1G,sBAAsB91G,EAASm3E,GAAIC,GAAIw5B,GAAIgE,GACxB,EACA,GAAqB,IAEjD,QAAiB50G,EAASioB,EAAW6xE,EAASqc,EAAcC,EAASC,EAASvjG,EAAGhH,EAAGpJ,EAAGD,EAAGyvC,IAE9F,OAAO,CACX,EAKA2iE,EAASnvG,UAAUqwG,MAAQ,SAAU/1G,GACjC,GAAIU,KAAKo0G,WAAY,CACjB,IAAItS,GAAW,QAAe9hG,KAAKs0G,mBAAoB,CAAC,EAAG,IACvD8B,EAAa,IAAMp2G,KAAKsc,WAC5Bhd,EAAQijG,OACRjjG,EAAQ0gE,UAAU8hC,EAAS,GAAKsU,EAAYtU,EAAS,GAAKsU,GAC1D92G,EAAQopB,OAAO1oB,KAAKw0G,cACxB,CACAl1G,EAAQgzE,OACJtyE,KAAKo0G,YACL90G,EAAQ29F,SAEhB,EAMAkX,EAASnvG,UAAUswG,gBAAkB,SAAUh2G,EAASyoG,GACpDzoG,EAAQuwE,YAAqEk4B,EAAY,GACzFzoG,EAAQ2pG,UAAmClB,EAAY,GACvDzoG,EAAQgpG,QAAwCP,EAAY,GAC5DzoG,EAAQypG,SAA0ChB,EAAY,GAC9DzoG,EAAQ8pG,WAAoCrB,EAAY,GACpDzoG,EAAQ41G,cACR51G,EAAQspG,eAAwCb,EAAY,GAC5DzoG,EAAQ41G,YAA0CnN,EAAY,IAEtE,EAQAoM,EAASnvG,UAAUqxG,gBAAkB,SAAU1G,EAAgBxuF,EAASi4E,EAASkd,GAG7E,IADA,IAAIC,EAAQ,GACH/rG,EAAI,EAAGiL,EAAKk6F,EAAevsG,OAAQoH,EAAIiL,IAAMjL,EAAG,CACrD,IACIuwE,GADAy7B,EAAgB7G,EAAenlG,IACX,IACxB+rG,EAAMjkG,KAAK,CACP8pB,KAAM2+C,EAAI,GACVz+C,KAAMy+C,EAAI,GACV1+C,KAAM0+C,EAAI,GACVx+C,KAAMw+C,EAAI,GACVr6E,MAAOygB,GAEf,CACKm1F,IACDA,EAAgB,IAAI,IAAJ,CAAU,IAE9B,IAAIG,GAAW,EACf,IAASjsG,EAAI,EAAGiL,EAAK8gG,EAAMnzG,OAAQoH,EAAIiL,IAAMjL,EACzC,GAAI8rG,EAAcG,SAASF,EAAM/rG,IAAK,CAClCisG,GAAW,EACX,KACJ,CAEJ,IAAKA,EAAU,CACXH,EAAcl5F,KAAKm5F,GACnB,IAAK,IAAIhgG,EAAI,EAAGwP,EAAK4pF,EAAevsG,OAAQmT,EAAIwP,IAAMxP,EAAG,CACrD,IAAIigG,EACAl3G,GADAk3G,EAAsC7G,EAAep5F,IAC7B,GACxBmgG,EAAep3G,EAAQw9F,YACvB4Z,IAAiBtd,IACjB95F,EAAQw9F,YAAc1D,GAEtBod,EAAcpzG,OAAS,IACvBpD,KAAKo1G,sBAAsBoB,EAAc,GAAIA,EAAc,IAAKA,EAAc,IAAKA,EAAc,IAAKA,EAAc,IAAKA,EAAc,IAAKA,EAAc,KAAK,GAEnK,gBAAuBhgG,EAAWggG,GAC9BE,IAAiBtd,IACjB95F,EAAQw9F,YAAc4Z,EAE9B,CACJ,CAEA,OADA/G,EAAevsG,OAAS,EACjBkzG,CACX,EASAnC,EAASnvG,UAAU2xG,6BAA+B,SAAUtxG,EAAMgrG,EAASD,EAAWE,GAClF,IAAInB,EAAYnvG,KAAK4uG,WAAWyB,GAC5BtrF,EAAQ/kB,KAAK00G,YAAYrvG,EAAMgrG,EAASC,EAASF,GACjDlB,EAAclvG,KAAK0uG,aAAa0B,GAChC9zF,EAAatc,KAAKsc,WAClBq4F,EAAQ5G,EAAWoB,EAAUv8B,WAAa,MAC1C29B,EAAWxC,EAAWoB,EAAU98B,cAAgB,MAChDm+B,EAActB,GAAeA,EAAYjG,UAAYiG,EAAYjG,UAAY,EAMjF,MAAO,CACHlkF,MAAOA,EACP2oD,QALUinC,GADF5vF,EAAM1Z,MAAQiR,EAAa,EAAI6yF,EAAU39D,MAAM,IAC7B,GAAK,GAAMmjE,GAASnE,EAM9C7iC,QALW4iC,EAAWxrF,EAAM9T,OAAUqL,EACtC,GAAK,GAAMi0F,GAAYC,EAM/B,EAcA2D,EAASnvG,UAAU4xG,SAAW,SAAUt3G,EAASk2G,EAAcjuF,EAAW0+E,EAAc2P,EAAaiB,EAAiBC,GAGlH,IAAIC,EAFJ/2G,KAAKs2B,eAAelzB,OAAS,EAGzBpD,KAAKu0G,oBAAqB,QAAOhtF,EAAWvnB,KAAKs0G,oBACjDyC,EAAmB/2G,KAAKu0G,mBAGnBv0G,KAAKu0G,oBACNv0G,KAAKu0G,kBAAoB,IAE7BwC,GAAmB,QAAY/2G,KAAKwiB,YAAa,EAAGxiB,KAAKwiB,YAAYpf,OAAQ,EAAGmkB,EAAWvnB,KAAKu0G,oBAChG,QAAsBv0G,KAAKs0G,mBAAoB/sF,IA0BnD,IAxBA,IAGIyvF,EACAtpC,EAASC,EAASspC,EAAOC,EAAOC,EAAQC,EAAQzH,EAAgBlE,EAAiBjwF,EAAOnW,EAAMgrG,EAC9FD,EAAWE,EAiB2CnvF,EACtDnf,EAAGD,EAvBHyI,EAAI,EACJiL,EAAKwwF,EAAa7iG,OAClBgJ,EAAI,EAIJirG,EAAc,EACdC,EAAgB,EAChBC,EAAsB,KACtBC,EAAwB,KACxBC,EAAkBz3G,KAAKq0G,iBACvBqD,EAAe13G,KAAKw0G,cACpBmD,EAA4B11G,KAAKE,MAAgD,KAA1CF,KAAK2H,OAAO2d,EAAU,GAAIA,EAAU,KAAc,KACzF1K,EAAuD,CACvDvd,QAASA,EACTgd,WAAYtc,KAAKsc,WACjBD,WAAYrc,KAAKqc,WACjBsE,SAAU+2F,GAIVE,EAAY53G,KAAKimG,cAAgBA,GAAgBjmG,KAAKqzE,SAAW,EAAI,IAGlE7oE,EAAIiL,GAAI,CACX,IAAIsyF,EAAc9B,EAAaz7F,GAE/B,OAD8Du9F,EAAY,IAEtE,KAAK,kBACD5mF,EAAiE4mF,EAAY,IAChE1vF,mBAGc7B,IAAlBsgG,IACJ,IAAAn6E,YAAWm6E,EAAe/O,EAAY,MAIrCv9F,EAHFA,EAA2Bu9F,EAAY,GAAM,EAJ7Cv9F,EAA2Bu9F,EAAY,GAS3C,MACJ,KAAK,aACGsP,EAAcO,IACd53G,KAAKq1G,MAAM/1G,GACX+3G,EAAc,GAEdC,EAAgBM,IAChBt4G,EAAQkzE,SACR8kC,EAAgB,GAEfD,GAAgBC,IACjBh4G,EAAQojG,YACRuU,EAAQv+C,IACRw+C,EAAQx+C,OAEVluD,EACF,MACJ,KAAK,SAED,IAAI7G,EAAKozG,EADT3qG,EAA2B27F,EAAY,IAEnClkG,EAAKkzG,EAAiB3qG,EAAI,GAG1BwT,EAFKm3F,EAAiB3qG,EAAI,GAEhBzI,EACVkc,EAFKk3F,EAAiB3qG,EAAI,GAEhBvI,EACViM,EAAI7N,KAAKuF,KAAKoY,EAAKA,EAAKC,EAAKA,GACjCvgB,EAAQqjG,OAAOh/F,EAAKmM,EAAGjM,GACvBvE,EAAQu4G,IAAIl0G,EAAIE,EAAIiM,EAAG,EAAG,EAAI7N,KAAKmlB,IAAI,KACrC5c,EACF,MACJ,KAAK,aACDlL,EAAQw4G,cACNttG,EACF,MACJ,KAAK,SACD4B,EAA2B27F,EAAY,GACvCiP,EAAKjP,EAAY,GACjB,IAAInwF,EAA0EmwF,EAAY,GACtFR,EAAWQ,EAAY,GACvB5pC,GAA2B,GAAtB4pC,EAAY3kG,OAAc2kG,EAAY,QAAKvxF,EACpDqG,EAAMjF,SAAWA,EACjBiF,EAAMsE,QAAUA,EACV3W,KAAKitG,IACPA,EAAgBjtG,GAAK,IAEzB,IAAIgQ,GAASi9F,EAAgBjtG,GACzB2zD,GACAA,GAAG44C,EAAkB3qG,EAAG4qG,EAAI,EAAGx8F,KAG/BA,GAAO,GAAKu8F,EAAiB3qG,GAC7BoO,GAAO,GAAKu8F,EAAiB3qG,EAAI,GACjCoO,GAAOpX,OAAS,GAEpBmkG,EAAS/sF,GAAQqC,KACfrS,EACF,MACJ,KAAK,aACD4B,EAA2B27F,EAAY,GACvCiP,EAA4BjP,EAAY,GACxCvsF,EAA4EusF,EAAY,GAExFr6B,EAAiCq6B,EAAY,GAC7Cp6B,EAAiCo6B,EAAY,GAC7C0D,EAAkBoL,EAAkB,KAAO9O,EAAY,GACvD,IAAI92F,GAAgC82F,EAAY,GAC5C3O,GAAiC2O,EAAY,GAC7C2N,GAAiC3N,EAAY,GAC7C4N,GAAiC5N,EAAY,IAC7CgQ,GAAyChQ,EAAY,IACrDpnF,GAAkConF,EAAY,IAC9Cv2D,GAAqDu2D,EAAY,IACjE18F,GAA+B08F,EAAY,IAC/C,IAAKvsF,GAASusF,EAAY3kG,QAAU,GAAI,CAEpCiC,EAA8B0iG,EAAY,IAC1CsI,EAAiCtI,EAAY,IAC7CqI,EAAmCrI,EAAY,IAC/CuI,EAAiCvI,EAAY,IAC7C,IAAIiQ,GAAkBh4G,KAAK22G,6BAA6BtxG,EAAMgrG,EAASD,EAAWE,GAClF90F,EAAQw8F,GAAgBjzF,MACxBgjF,EAAY,GAAKvsF,EACjB,IAAIi2F,GAAqC1J,EAAY,IACrDr6B,GAAWsqC,GAAgBtqC,QAAU+jC,IAAezxG,KAAKsc,WACzDyrF,EAAY,GAAKr6B,EACjB,IAAIikC,GAAqC5J,EAAY,IACrDp6B,GAAWqqC,GAAgBrqC,QAAUgkC,IAAe3xG,KAAKsc,WACzDyrF,EAAY,GAAKp6B,EACjB18D,GAASuK,EAAMvK,OACf82F,EAAY,GAAK92F,GACjB5F,GAAQmQ,EAAMnQ,MACd08F,EAAY,IAAM18F,EACtB,CACA,IAAIwkG,QAAiB,EACjB9H,EAAY3kG,OAAS,KACrBysG,GAAwC9H,EAAY,KAExD,IAAIlhE,QAAU,EAAQkpE,QAAiB,EAAQC,QAAmB,EAC9DjI,EAAY3kG,OAAS,IACrByjC,GAAwCkhE,EAAY,IACpDgI,GAAyChI,EAAY,IACrDiI,GAA2CjI,EAAY,MAGvDlhE,GAAU,KACVkpE,IAAiB,EACjBC,IAAmB,GAEnB+H,IAAkBJ,EAElBh3F,IAAY+2F,EAENK,IAAmBJ,IAEzBh3F,IAAY+2F,GAIhB,IAFA,IAAIO,GAAa,EACbC,GAAsB,EACnB9rG,EAAI4qG,EAAI5qG,GAAK,EAChB,KAAIyjG,IACAA,GAAeoI,MAAgB5sG,GAAQrL,KAAKsc,YADhD,CAIA,GAAImvF,EAAiB,CACjB,IAAIv2F,GAAQjT,KAAKC,MAAMg2G,IACvBvI,EACIlE,EAAgBroG,OAAS8R,GAAQ,EAC3B,CAACu2F,EAAgB,GAAG,IACpBA,EAAgBv2F,GAC9B,EACI6jE,GAAW/4E,KAAKu1G,oBAAoBj2G,EAASk2G,EAAcuB,EAAiB3qG,GAAI2qG,EAAiB3qG,EAAI,GAAIoP,EAAOkyD,EAASC,EAASgiC,EAAgB1+F,GAAQmoF,GAASsc,GAASC,GAASh1F,GAAU6wB,GAAOokE,EAAavqG,GAAOw7B,GAASkpE,GACzM,EACxB,KAAMC,GACkB,EACxB,QAEFL,GACAlE,EAAgBA,EAAgBroG,OAAS,KAAOusG,GAChDlE,EAAgBn5F,KAAKq9F,GAErBA,IACIA,EAAevsG,OAAS,IAAMusG,EAAe,IAC7C3vG,KAAKs2B,eAAehkB,KAAKtS,KAAM2vG,EAAgBxuF,GAEnD+2F,IAAuB,EAAIvI,EAAe,GAtB9C,GAyBFnlG,EACF,MACJ,KAAK,aACD,IAAI+U,GAA+BwoF,EAAY,GAC3CtoF,GAA6BsoF,EAAY,GACzCwI,GAAkCxI,EAAY,GAClD4H,EAAiBkH,EAAkB,KAAO9O,EAAY,GACtD,IAAI93E,GAAkC83E,EAAY,GAClDuI,EAAiCvI,EAAY,GAC7C,IAAIqF,GAAkCrF,EAAY,GAC9CoQ,GAA2CpQ,EAAY,GACvD9sB,GAAiC8sB,EAAY,GACjDqI,EAAmCrI,EAAY,IAC/C,IAAIyI,GAAqCzI,EAAY,IACrD1iG,EAA8B0iG,EAAY,IAC1CsI,EAAiCtI,EAAY,IAC7C,IAAIqQ,GAAkB,CACKrQ,EAAY,IACZA,EAAY,KAEnCoH,GAAYnvG,KAAK4uG,WAAWyB,GAC5Bj+B,GAAO+8B,GAAU/8B,KACjB4+B,GAAY,CACZ7B,GAAU39D,MAAM,GAAK2mE,GACrBhJ,GAAU39D,MAAM,GAAK2mE,IAErBE,QAAe,EACfjmC,MAAQpyE,KAAKy0G,QACb4D,GAAer4G,KAAKy0G,QAAQriC,KAG5BimC,GAAe,CAAC,EAChBr4G,KAAKy0G,QAAQriC,IAAQimC,IAEzB,IAAIC,IAAa,OAAiBvB,EAAkBx3F,GAAOE,GAAK,GAC5D84F,GAAat2G,KAAK2G,IAAIooG,GAAU,KAChC,QAAyB5+B,GAAM/sE,EAAMgzG,IACzC,GAAIpoF,IAAYsoF,IAAcD,GAAY,CACtC,IAAI1lC,GAAY5yE,KAAK4uG,WAAWyB,GAASz9B,UAErClnB,GAAQ4nD,EAAeyD,EAAkBx3F,GAAOE,GAAK,EAAGpa,GAD9CizG,GAAaC,IAAcxK,EAAWn7B,IACsBw6B,GAAUnrG,KAAK2G,IAAIooG,GAAU,IAAK,KAA0B5+B,GAAMimC,GAAcV,EAA4B,EAAI33G,KAAKw0G,eAC/L,GAAI9oD,GAAO,CACP,IAAIqtB,IAAW,EACX5tE,QAAI,EAAQqtG,QAAK,EAAQC,QAAQ,EAAQ1zF,QAAQ,EAAQ2zF,QAAO,EACpE,GAAItI,EACA,IAAKjlG,GAAI,EAAGqtG,GAAK9sD,GAAMtoD,OAAQ+H,GAAIqtG,KAAMrtG,GAErCstG,IADAC,GAAOhtD,GAAMvgD,KACuB,GACpC4Z,GAAQ/kB,KAAK00G,YAAY+D,GAAOpI,EAAS,GAAID,GAC7C1iC,EAAiCgrC,GAAK,GAAMlI,GAC5C7iC,EACI4iC,GAAWxrF,GAAM9T,OACO,GAAlB,GAAMs/F,IAAgBC,GAAcQ,GAAU,GAC5CA,GAAU,GACd/1B,GACRlC,GACI/4E,KAAKu1G,oBAAoBj2G,EAASk2G,EACXkD,GAAK,GACLA,GAAK,GAAK3zF,GAAO2oD,EAASC,EAASgiC,EAAgB5qF,GAAM9T,OAAQ,EAAG,EAAG,EACvEynG,GAAK,GAAKN,IAAiB,EAAOrzF,GAAM1Z,MAAO,KAAgB,KAAM,OAAS0tE,GAGjH,GAAIu3B,EACA,IAAKnlG,GAAI,EAAGqtG,GAAK9sD,GAAMtoD,OAAQ+H,GAAIqtG,KAAMrtG,GAErCstG,IADAC,GAAOhtD,GAAMvgD,KACuB,GACpC4Z,GAAQ/kB,KAAK00G,YAAY+D,GAAOpI,EAASC,EAAS,IAClD5iC,EAAiCgrC,GAAK,GACtC/qC,EAAU4iC,GAAWxrF,GAAM9T,OAASgqE,GACpClC,GACI/4E,KAAKu1G,oBAAoBj2G,EAASk2G,EACXkD,GAAK,GACLA,GAAK,GAAK3zF,GAAO2oD,EAASC,EAASgiC,EAAgB5qF,GAAM9T,OAAQ,EAAG,EAAG,EACvEynG,GAAK,GAAKN,IAAiB,EAAOrzF,GAAM1Z,MAAO,KAAgB,KAAM,OAAS0tE,GAG7GA,IACA/4E,KAAKs2B,eAAehkB,KAAKtS,KAAM2vG,EAAgBxuF,EAEvD,CACJ,GACE3W,EACF,MACJ,KAAK,eACD,QAAwBgM,IAApBqgG,EAA+B,CAE/B,IAAIr3G,GAASq3G,EADb11F,EAAiE4mF,EAAY,IAE7E,GAAIvoG,GACA,OAAOA,EAEf,GACEgL,EACF,MACJ,KAAK,OACGotG,EACAP,IAGAr3G,KAAKq1G,MAAM/1G,KAEbkL,EACF,MACJ,KAAK,kBAYD,IAXA4B,EAA2B27F,EAAY,GACvCiP,EAA4BjP,EAAY,GACxC/lG,EAAI+0G,EAAiB3qG,GAGrBgrG,GAFAr1G,EAAIg1G,EAAiB3qG,EAAI,IAEX,GAAO,GADrB+qG,EAAUn1G,EAAI,GAAO,KAENi1G,GAASG,IAAWF,IAC/B53G,EAAQqjG,OAAO3gG,EAAGD,GAClBk1G,EAAQE,EACRD,EAAQE,GAEPhrG,GAAK,EAAGA,EAAI4qG,EAAI5qG,GAAK,EAGtB+qG,GAFAn1G,EAAI+0G,EAAiB3qG,IAEP,GAAO,EACrBgrG,GAFAr1G,EAAIg1G,EAAiB3qG,EAAI,IAEX,GAAO,EACjBA,GAAK4qG,EAAK,GAAKG,IAAWF,GAASG,IAAWF,IAC9C53G,EAAQsjG,OAAO5gG,EAAGD,GAClBk1G,EAAQE,EACRD,EAAQE,KAGd5sG,EACF,MACJ,KAAK,iBACD+sG,EAAsBxP,EACtB/nG,KAAKo0G,WAAarM,EAAY,GAC1BsP,IACAr3G,KAAKq1G,MAAM/1G,GACX+3G,EAAc,EACVC,IACAh4G,EAAQkzE,SACR8kC,EAAgB,IAGxBh4G,EAAQkf,UAAmEupF,EAAY,KACrFv9F,EACF,MACJ,KAAK,mBACDgtG,EAAwBzP,EACpBuP,IACAh4G,EAAQkzE,SACR8kC,EAAgB,GAEpBt3G,KAAKs1G,gBAAgBh2G,EAAiC,KACpDkL,EACF,MACJ,KAAK,SACGotG,EACAN,IAGAh4G,EAAQkzE,WAEVhoE,EACF,MACJ,UACMA,EAGd,CACI6sG,GACAr3G,KAAKq1G,MAAM/1G,GAEXg4G,GACAh4G,EAAQkzE,QAGhB,EAQA2hC,EAASnvG,UAAU2zG,QAAU,SAAUr5G,EAASk2G,EAAcjuF,EAAWmwF,EAAc9B,GACnF51G,KAAKw0G,cAAgBkD,EACrB13G,KAAK42G,SAASt3G,EAASk2G,EAAcjuF,EAAWvnB,KAAKimG,aAAc2P,OAAap/F,OAAWA,EAC/F,EAYA29F,EAASnvG,UAAU4zG,oBAAsB,SAAUt5G,EAASioB,EAAWmwF,EAAcmB,EAAqB/B,GAEtG,OADA92G,KAAKw0G,cAAgBkD,EACd13G,KAAK42G,SAASt3G,EAAS,EAAGioB,EAAWvnB,KAAKmmG,0BAA0B,EAAM0S,EAAqB/B,EAC1G,EACO3C,CACX,CAr1B6B,GAs1B7B,2BC/2BI2E,GAAQ,CACRC,EAAA,UACAA,EAAA,SACAA,EAAA,cACAA,EAAA,QACAA,EAAA,OACAA,EAAA,WAEAC,GAA+B,WAa/B,SAASA,EAAcz7E,EAAWlhB,EAAYC,EAAY+2D,EAAU4lC,EAAiBC,GAKjFl5G,KAAKsyG,WAAa/0E,EAKlBv9B,KAAKm5G,UAAY9lC,EAKjBrzE,KAAKud,YAAcjB,EAKnBtc,KAAKuyG,YAAcl2F,EAKnBrc,KAAKikG,cAAgBiV,EAKrBl5G,KAAKo5G,mBAAqB,CAAC,EAK3Bp5G,KAAKq5G,qBAAuB,KAK5Br5G,KAAKs5G,wBAAyB,UAC9Bt5G,KAAKu5G,iBAAiBN,EAC1B,CAiNA,OA5MAD,EAAch0G,UAAUy9F,KAAO,SAAUnjG,EAASioB,GAC9C,IAAIiyF,EAAiBx5G,KAAKy5G,cAAclyF,GACxCjoB,EAAQojG,YACRpjG,EAAQqjG,OAAO6W,EAAe,GAAIA,EAAe,IACjDl6G,EAAQsjG,OAAO4W,EAAe,GAAIA,EAAe,IACjDl6G,EAAQsjG,OAAO4W,EAAe,GAAIA,EAAe,IACjDl6G,EAAQsjG,OAAO4W,EAAe,GAAIA,EAAe,IACjDl6G,EAAQmjG,MACZ,EAMAuW,EAAch0G,UAAUu0G,iBAAmB,SAAUN,GACjD,IAAK,IAAI11F,KAAU01F,EAAiB,CAChC,IAAIS,EAAY15G,KAAKo5G,mBAAmB71F,QACtB/M,IAAdkjG,IACAA,EAAY,CAAC,EACb15G,KAAKo5G,mBAAmB71F,GAAUm2F,GAEtC,IAAIC,EAAsBV,EAAgB11F,GACtCosD,EAAe,CAAC3vE,KAAKikG,eAAiB,EAAGjkG,KAAKikG,eAAiB,GACnE,IAAK,IAAIgP,KAAe0G,EAAqB,CACzC,IAAI1T,EAAe0T,EAAoB1G,GACvCyG,EAAUzG,GAAe,IAAI,GAASjzG,KAAKuyG,YAAavyG,KAAKud,YAAavd,KAAKm5G,UAAWlT,EAAct2B,EAC5G,CACJ,CACJ,EAKAqpC,EAAch0G,UAAU40G,aAAe,SAAUF,GAC7C,IAAK,IAAIn2F,KAAUvjB,KAAKo5G,mBAEpB,IADA,IAAIS,EAAa75G,KAAKo5G,mBAAmB71F,GAChC/Y,EAAI,EAAGiL,EAAKikG,EAAUt2G,OAAQoH,EAAIiL,IAAMjL,EAC7C,GAAIkvG,EAAUlvG,KAAMqvG,EAChB,OAAO,EAInB,OAAO,CACX,EAWAb,EAAch0G,UAAU4b,2BAA6B,SAAU3U,EAAYoQ,EAAYsE,EAAUE,EAAcnV,EAAUiW,GAErH,IAAIm4F,EAA6B,GADjCj5F,EAAe5e,KAAKE,MAAM0e,IACW,EACjC0G,GAAY,QAAiBvnB,KAAKs5G,uBAAwBz4F,EAAe,GAAKA,EAAe,GAAK,EAAIxE,GAAa,EAAIA,GAAasE,GAAW1U,EAAW,IAAKA,EAAW,IACzKjM,KAAKq5G,uBACNr5G,KAAKq5G,sBAAuB,SAAsBS,EAAaA,IAEnE,IAYIC,EAZAz6G,EAAUU,KAAKq5G,qBACf/5G,EAAQof,OAAOrT,QAAUyuG,GACzBx6G,EAAQof,OAAOzN,SAAW6oG,GAC1Bx6G,EAAQof,OAAOrT,MAAQyuG,EACvBx6G,EAAQof,OAAOzN,OAAS6oG,GAGxBx6G,EAAQ+8F,UAAU,EAAG,EAAGyd,EAAaA,QAMdtjG,IAAvBxW,KAAKikG,gBACL8V,GAAY,IAAArgE,gBACZ,IAAAV,kBAAiB+gE,EAAW9tG,IAC5B,IAAAgtC,QAAO8gE,EAAW19F,GAAcrc,KAAKikG,cAAgBpjF,GAAek5F,IAExE,IACI9G,EADA+G,EAoKL,SAAwB1zC,GAC3B,QAAiC9vD,IAA7ByjG,GAAiB3zC,GACjB,OAAO2zC,GAAiB3zC,GAI5B,IAFA,IAAI4zC,EAAqB,EAAT5zC,EAAa,EACzBzwD,EAAM,IAAI1U,MAAM+4G,GACX1vG,EAAI,EAAGA,EAAI0vG,EAAW1vG,IAC3BqL,EAAIrL,GAAK,IAAIrJ,MAAM+4G,GAKvB,IAHA,IAAIl4G,EAAIskE,EACJvkE,EAAI,EACJgX,EAAQ,EACL/W,GAAKD,GACRo4G,GAA2BtkG,EAAKywD,EAAStkE,EAAGskE,EAASvkE,GACrDo4G,GAA2BtkG,EAAKywD,EAASvkE,EAAGukE,EAAStkE,GACrDm4G,GAA2BtkG,EAAKywD,EAASvkE,EAAGukE,EAAStkE,GACrDm4G,GAA2BtkG,EAAKywD,EAAStkE,EAAGskE,EAASvkE,GACrDo4G,GAA2BtkG,EAAKywD,EAAStkE,EAAGskE,EAASvkE,GACrDo4G,GAA2BtkG,EAAKywD,EAASvkE,EAAGukE,EAAStkE,GACrDm4G,GAA2BtkG,EAAKywD,EAASvkE,EAAGukE,EAAStkE,GACrDm4G,GAA2BtkG,EAAKywD,EAAStkE,EAAGskE,EAASvkE,GAGjD,IADJgX,GAAS,EAAI,IADbhX,GAEiBC,GAAK,EAAI,IAEtB+W,GAAS,EAAI,GADb/W,GAAK,IAKb,OADAi4G,GAAiB3zC,GAAUzwD,EACpBA,CACX,CAlMmBukG,CAAev5F,GAM1B,SAASg2F,EAAgB11F,GAGrB,IAFA,IAAIk5F,EAAY/6G,EAAQg7G,aAAa,EAAG,EAAGR,EAAaA,GACnD3nG,KACIqwF,EAAM,EAAGA,EAAMsX,EAAatX,IACjC,IAAK,IAAI+X,EAAM,EAAGA,EAAMT,EAAaS,IACjC,GAAIP,EAAKxX,GAAK+X,IACNF,EAAsC,GAA3BE,EAAMT,EAActX,GAAW,GAAK,EAAG,CAClD,IAAIgY,OAAW,EAOf,QANM74F,GACDsxF,GAAe8F,EAAA,SACZ9F,GAAe8F,EAAA,SACuB,IAA1Cp3F,EAAoBjP,QAAQyO,MAC5Bq5F,EAAW9uG,EAASyV,IAEpBq5F,QAIAl7G,EAAQ+8F,UAAU,EAAG,EAAGyd,EAAaA,EAG7C,CAIhB,CAEA,IAEItvG,EAAG+L,EAAGmjG,EAAWe,EAAUj7G,EAF3ByhG,EAAKzgG,OAAOgP,KAAKxP,KAAKo5G,oBAAoBlrG,IAAIq+B,QAGlD,IAFA00D,EAAGp9E,KAAK,MAEHrZ,EAAIy2F,EAAG79F,OAAS,EAAGoH,GAAK,IAAKA,EAAG,CACjC,IAAI0oG,EAAYjS,EAAGz2F,GAAGzF,WAEtB,IADA20G,EAAY15G,KAAKo5G,mBAAmBlG,GAC/B38F,EAAIuiG,GAAM11G,OAAS,EAAGmT,GAAK,IAAKA,EAGjC,QAAiBC,KADjBikG,EAAWf,EADXzG,EAAc6F,GAAMviG,OAGhB/W,EAASi7G,EAAS7B,oBAAoBt5G,EAASioB,EAAW5G,EAAUk2F,EAAiBkD,IAEjF,OAAOv6G,CAIvB,CAEJ,EAKAw5G,EAAch0G,UAAUy0G,cAAgB,SAAUlyF,GAC9C,IAAIgW,EAAYv9B,KAAKsyG,WACrB,IAAK/0E,EACD,OAAO,KAEX,IAAInB,EAAOmB,EAAU,GACjBjB,EAAOiB,EAAU,GACjBlB,EAAOkB,EAAU,GACjBhB,EAAOgB,EAAU,GACjBi8E,EAAiB,CAACp9E,EAAME,EAAMF,EAAMG,EAAMF,EAAME,EAAMF,EAAMC,GAEhE,OADA,QAAYk9E,EAAgB,EAAG,EAAG,EAAGjyF,EAAWiyF,GACzCA,CACX,EAIAR,EAAch0G,UAAUyvB,QAAU,WAC9B,OAAO,QAAQz0B,KAAKo5G,mBACxB,EAWAJ,EAAch0G,UAAU2zG,QAAU,SAAUr5G,EAASk2G,EAAcjuF,EAAWmwF,EAAc9B,EAAa8E,EAAkBC,GAEvH,IAAI1Z,EAAKzgG,OAAOgP,KAAKxP,KAAKo5G,oBAAoBlrG,IAAIq+B,QAClD00D,EAAGp9E,KAAK,MAGJ7jB,KAAKsyG,aACLhzG,EAAQijG,OACRviG,KAAKyiG,KAAKnjG,EAASioB,IAEvB,IACI/c,EAAGiL,EAAIc,EAAGwP,EAAIotF,EAASC,EADvBwH,EAAeF,GAAsC5B,GAEzD,IAAKtuG,EAAI,EAAGiL,EAAKwrF,EAAG79F,OAAQoH,EAAIiL,IAAMjL,EAAG,CACrC,IAAI0oG,EAAYjS,EAAGz2F,GAAGzF,WAEtB,IADAouG,EAAUnzG,KAAKo5G,mBAAmBlG,GAC7B38F,EAAI,EAAGwP,EAAK60F,EAAax3G,OAAQmT,EAAIwP,IAAMxP,EAAG,CAC/C,IAAI08F,EAAc2H,EAAarkG,GAE/B,QAAeC,KADf48F,EAASD,EAAQF,IAEb,IAAI0H,GACC1H,GAAe8F,EAAA,SACZ9F,GAAe8F,EAAA,OAUnB3F,EAAOuF,QAAQr5G,EAASk2G,EAAcjuF,EAAWmwF,EAAc9B,OAVzB,CACtC,IAAI5R,EAAY2W,EAAqBzH,GAChClP,EAIDA,EAAU1xF,KAAK8gG,EAAQ7rF,EAAUza,MAAM,IAHvC6tG,EAAqBzH,GAAa,CAACE,EAAQ7rF,EAAUza,MAAM,GAKnE,CAKR,CACJ,CACI9M,KAAKsyG,YACLhzG,EAAQ29F,SAEhB,EACO+b,CACX,CAzQkC,GA+Q9BiB,GAAmB,CACnB,EAAG,CAAC,EAAC,KAST,SAASE,GAA2BrkG,EAAO9T,EAAGD,GAC1C,IAAIyI,EACA87D,EAASrkE,KAAKC,MAAM4T,EAAM1S,OAAS,GACvC,GAAIpB,GAAKskE,EACL,IAAK97D,EAAI87D,EAAQ97D,EAAIxI,EAAGwI,IACpBsL,EAAMtL,GAAGzI,IAAK,OAGjB,GAAIC,EAAIskE,EACT,IAAK97D,EAAIxI,EAAI,EAAGwI,EAAI87D,EAAQ97D,IACxBsL,EAAMtL,GAAGzI,IAAK,CAG1B,CAqEA,4FClYI,GAAwC,WACxC,IAAIqS,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GAse5C,SAtc+C,SAAUC,GAKrD,SAASomG,EAA0BC,GAC/B,IAAIl6G,EAAQ6T,EAAOzH,KAAKhN,KAAM86G,IAAgB96G,KAsE9C,OApEAY,EAAMm6G,6BAA+Bn6G,EAAMo6G,wBAAwBlsG,KAAKlO,GAIxEA,EAAMq6G,wBAKNr6G,EAAMs6G,QAAS,EAIft6G,EAAMu6G,uBAAyB,KAI/Bv6G,EAAMw6G,kBAAoB,KAK1Bx6G,EAAMy6G,mBAAqB,EAK3Bz6G,EAAM06G,oBAAsB5iD,IAK5B93D,EAAM8yE,iBAAkB,IAAAh6B,eAKxB94C,EAAM26G,kBAKN36G,EAAM46G,gBAAkB,KAKxB56G,EAAM66G,oBAAsB,KAK5B76G,EAAM86G,qBAAuB,KAK7B96G,EAAM+6G,aAAe,KAKrB/6G,EAAMg7G,oBAAqB,EAK3Bh7G,EAAMi7G,UAAW,EACVj7G,CACX,CAuXA,OAncA,GAAUi6G,EAA2BpmG,GAmFrComG,EAA0B71G,UAAUm3F,aAAe,SAAUlqF,EAAQsV,EAAW6xE,GACxEA,EAAU,IACVnnF,EAAS,MAEbwC,EAAOzP,UAAUm3F,aAAanvF,KAAKhN,KAAMiS,EAAQsV,EAAW6xE,EAChE,EAOAyhB,EAA0B71G,UAAU8d,YAAc,SAAU7C,EAAYhO,GACpE,IAAIqK,EAAa2D,EAAW3D,WACxB4F,EAAajC,EAAW4B,iBAAiB5B,EAAW8D,aAExD,QAAU/jB,KAAKg8F,eAAgB,EAAI1/E,EAAY,EAAIA,IACnD,QAAYtc,KAAKi8F,sBAAuBj8F,KAAKg8F,gBAC7C,IAAIE,GAAkB,QAAkBl8F,KAAKg8F,gBAC7Ch8F,KAAKm8F,aAAalqF,EAAQiqF,EAAiBh6E,EAAWk3E,SACtD,IAAI95F,EAAUU,KAAKV,QACfof,EAASpf,EAAQof,OACjBo9F,EAAc97G,KAAK27G,aACvB,IAAKG,GAAeA,EAAYrnF,UAI5B,OAHKz0B,KAAKo8F,iBAAmB19E,EAAOrT,MAAQ,IACxCqT,EAAOrT,MAAQ,GAEZrL,KAAK2K,UAGhB,IAAIU,EAAQpJ,KAAKE,MAAM8d,EAAWS,KAAK,GAAKpE,GACxCrL,EAAShP,KAAKE,MAAM8d,EAAWS,KAAK,GAAKpE,GACzCoC,EAAOrT,OAASA,GAASqT,EAAOzN,QAAUA,GAC1CyN,EAAOrT,MAAQA,EACfqT,EAAOzN,OAASA,EACZyN,EAAOzO,MAAMsX,YAAc20E,IAC3Bx9E,EAAOzO,MAAMsX,UAAY20E,IAGvBl8F,KAAKo8F,iBACX98F,EAAQ+8F,UAAU,EAAG,EAAGhxF,EAAO4F,GAEnCjR,KAAK48F,UAAUt9F,EAAS2gB,GACxB,IAAI7D,EAAS6D,EAAW7D,OACpBmE,EAAYN,EAAWM,UACvBvU,EAASuU,EAAUvU,OACnBqQ,EAAakE,EAAUlE,WACvB9C,EAAagH,EAAUhH,WACvBoH,EAAWJ,EAAUI,SACrBa,EAAmBjI,EAAWiE,YAC9Bu+F,EAAe/7G,KAAKy1F,WAAWlzE,YAE/B+5E,GAAU,EACd,GAAIp6E,EAAW9F,QAAUpc,KAAK67G,SAAU,CACpC,IAAI/nC,GAAc,KAAAp0C,gBAAexd,EAAW9F,OAAQ7C,IACpD+iF,IACK,IAAAjjD,gBAAey6B,EAAa7zD,EAAW7D,UACpC,IAAAugB,YAAiBm3C,EAAa7zD,EAAW7D,UAE7Cpc,KAAKu8F,cAAcj9F,EAAS2gB,EAAY6zD,EAEhD,CACA,IAAIj/C,EAAY5U,EAAW4U,UACvB+gF,IAAgB/gF,EAAUC,GAAA,cAAuBD,EAAUC,GAAA,gBAC3DvN,EAAYvnB,KAAKg8G,mBAAmBhwG,EAAQqQ,EAAYsE,EAAUrE,EAAYjR,EAAO4F,EAAQ,GAC7FgrG,EAAmBj8G,KAAKy1F,WAAW2O,eAAiB,CAAC,EAAI,KAE7D,GADA0X,EAAYnD,QAAQr5G,EAAS,EAAGioB,EAAW5G,EAAUi1F,OAAap/F,EAAWylG,GACzEF,EAAat5F,YACblJ,EAAWgI,cACV,IAAA83B,gBAAe73B,EAAkBpF,GAAS,CAK3C,IAJA,IAAI+/B,EAAS//B,EAAO,GAChBqF,GAAa,IAAAC,UAASF,GACtBk0D,EAAQ,EACRsF,OAAU,EACP7+B,EAAS36B,EAAiB,IAAI,CAEjCw5D,EAAUv5D,IADRi0D,EAEF,IAAIwmC,EAAcl8G,KAAKg8G,mBAAmBhwG,EAAQqQ,EAAYsE,EAAUrE,EAAYjR,EAAO4F,EAAQ+pE,GACnG8gC,EAAYnD,QAAQr5G,EAAS,EAAG48G,EAAav7F,EAAUi1F,OAAap/F,EAAWylG,GAC/E9/D,GAAU16B,CACd,CAGA,IAFAi0D,EAAQ,EACRv5B,EAAS//B,EAAO,GACT+/B,EAAS36B,EAAiB,IAAI,CAEjCw5D,EAAUv5D,IADRi0D,EAEF,IAAIymC,EAAcn8G,KAAKg8G,mBAAmBhwG,EAAQqQ,EAAYsE,EAAUrE,EAAYjR,EAAO4F,EAAQ+pE,GACnG8gC,EAAYnD,QAAQr5G,EAAS,EAAG68G,EAAax7F,EAAUi1F,OAAap/F,EAAWylG,GAC/E9/D,GAAU16B,CACd,CACJ,CACA,GAAIw6F,EAAkB,CAClB,IAAIG,EAAcn8F,EAAW4U,WD6JlC,SAAyBonF,EAAkB38G,EAASqhB,EAAUy4E,EAASwc,EAAat/E,GAIvF,IAHA,IAAI2qE,EAAKzgG,OAAOgP,KAAKysG,GAChB/tG,IAAIq+B,QACJ1oB,KAAK,MACD0V,EAAI,EAAG8iF,EAAKpb,EAAG79F,OAAQm2B,EAAI8iF,IAAM9iF,EAGtC,IAFA,IAAI+iF,EAAeL,EAAiBhb,EAAG1nE,GAAGx0B,YACtCw3G,OAAkB,EACb/xG,EAAI,EAAGiL,EAAK6mG,EAAal5G,OAAQoH,EAAIiL,GAAK,CAC/C,IAAIglG,EAAW6B,EAAa9xG,KACxB+c,EAAY+0F,EAAa9xG,KAC7BiwG,EAAS9B,QAAQr5G,EAAS,EAAGioB,EAAW5G,EAAUi1F,GAC9C6E,IAAa8B,GAAmB9B,EAASnkF,eAAelzB,OAAS,IACjEm5G,EAAkB9B,EAClBnkF,EAAehkB,KAAK,CAChB/D,MAAOksG,EAASnkF,eAChB8iE,QC1K6C,ID6KzD,CAER,CC/KYojB,CAAgBP,EAAkB38G,EAASqhB,EAAU,IADxCy7F,EAAYtnF,GAAA,cAAuBsnF,EAAYtnF,GAAA,gBACE7U,EAAWqW,eAC7E,CACIgmE,GACAh9F,EAAQ29F,UAEZj9F,KAAKg9F,WAAW19F,EAAS2gB,GACzB,IAAIm5E,EAAUl3E,EAAWk3E,QACrBzuF,EAAY3K,KAAK2K,UAQrB,OAPIyuF,IAAY1zF,WAAWiF,EAAUsF,MAAMmpF,WACvCzuF,EAAUsF,MAAMmpF,QAAsB,IAAZA,EAAgB,GAAKr2C,OAAOq2C,IAEtDp5F,KAAKu7G,oBAAsBh7F,EAAUI,WACrC3gB,KAAKu7G,kBAAoBh7F,EAAUI,SACnC3gB,KAAKm7G,uBAAyB,MAE3Bn7G,KAAK2K,SAChB,EAMAkwG,EAA0B71G,UAAUs4E,YAAc,SAAUjsE,GACxD,OAAO,IAAIorG,QAAQ,SAAUC,EAASC,GAClC,IAAK38G,KAAKm7G,yBAA2Bn7G,KAAKi7G,wBAAyB,CAC/D,IAAIv6F,EAAO,CAAC1gB,KAAKV,QAAQof,OAAOrT,MAAOrL,KAAKV,QAAQof,OAAOzN,SAC3D,QAAMjR,KAAKg8F,eAAgBt7E,GAC3B,IAAI1U,EAAShM,KAAKw7G,gBACdn/F,EAAarc,KAAKs7G,oBAClB36F,EAAW3gB,KAAKu7G,kBAChBhiG,EAAavZ,KAAKy7G,oBAClBr/F,EAASpc,KAAK0zE,gBACdtyD,EAAQphB,KAAKy1F,WACbmnB,EAAa,GACbvxG,EAAQqV,EAAK,GAAK,EAClBzP,EAASyP,EAAK,GAAK,EACvBk8F,EAAWtqG,KAAKtS,KAAKg8G,mBAAmBhwG,EAAQqQ,EAAYsE,EAAU,GAAKtV,EAAO4F,EAAQ,GAAGnE,SAC7F,IAAIwV,EAASlB,EAAMmB,YACff,EAAmBjI,EAAWiE,YAClC,GAAI8E,EAAOG,YACPlJ,EAAWgI,cACV,IAAA83B,gBAAe73B,EAAkBpF,GAAS,CAK3C,IAJA,IAAI+/B,EAAS//B,EAAO,GAChBqF,GAAa,IAAAC,UAASF,GACtBk0D,EAAQ,EACRsF,OAAU,EACP7+B,EAAS36B,EAAiB,IAE7Bw5D,EAAUv5D,IADRi0D,EAEFknC,EAAWtqG,KAAKtS,KAAKg8G,mBAAmBhwG,EAAQqQ,EAAYsE,EAAU,GAAKtV,EAAO4F,EAAQ+pE,GAASluE,SACnGqvC,GAAU16B,EAId,IAFAi0D,EAAQ,EACRv5B,EAAS//B,EAAO,GACT+/B,EAAS36B,EAAiB,IAE7Bw5D,EAAUv5D,IADRi0D,EAEFknC,EAAWtqG,KAAKtS,KAAKg8G,mBAAmBhwG,EAAQqQ,EAAYsE,EAAU,GAAKtV,EAAO4F,EAAQ+pE,GAASluE,SACnGqvC,GAAU16B,CAElB,CACAzhB,KAAKm7G,uBCvPd,SAAqCz6F,EAAMk8F,EAAYrqF,EAAUsqF,EAAezgG,EAAQC,EAAYsE,GACvG,IAAItV,EAAQqV,EAAK,GAAK,EAClBzP,EAASyP,EAAK,GAAK,EACnBphB,GAAU,SAAsB+L,EAAO4F,GAC3C3R,EAAQw9G,uBAAwB,EAOhC,IANA,IAAIp+F,EAASpf,EAAQof,OACjB6oF,EAAW,IAAI,KAAwBjoG,EAAS,GAAK8c,EAAQ,KAAMuE,GACnEuzD,EAAe3hD,EAASnvB,OAExB25G,EAAc96G,KAAKC,MAAM,SAAwBgyE,GACjD8oC,EAAmB,CAAC,EACfxyG,EAAI,EAAGA,GAAK0pE,IAAgB1pE,EAAG,CACpC,IAAI2W,EAAUoR,EAAS/nB,EAAI,GACvByyG,EAAuB97F,EAAQ1I,oBAAsBokG,EACzD,GAAKA,EAAL,CAGA,IAAI9zB,EAASk0B,EAAqB97F,EAAS9E,GAC3C,GAAK0sE,EAAL,CAGK5nF,MAAMkP,QAAQ04E,KACfA,EAAS,CAACA,IAId,IAFA,IACIn9C,EAAQ,KAAO,UADPphC,EAAIuyG,GACoBh4G,SAAS,KAAK+H,OAAO,GAChDyJ,EAAI,EAAGwP,EAAKgjE,EAAO3lF,OAAQmT,EAAIwP,IAAMxP,EAAG,CAC7C,IAAI2mG,EAAgBn0B,EAAOxyE,GACvBtG,EAAQitG,EAAcllG,QACtBs6D,EAAOriE,EAAM2gG,UACbt+B,GACAA,EAAK6qC,SAASvxE,GAElB,IAAI4mC,EAASviE,EAAM6gG,YACft+B,GACAA,EAAO2qC,SAASvxE,GAEpB37B,EAAMyiE,aAAQl8D,GACd,IAAIgF,EAAQ0hG,EAAcngG,WAC1B,GAAIvB,EAAO,CACP,IAAI4hG,EAAU5hG,EAAM6hG,eACpB,IAAKD,EACD,SAEJ,IAAIE,EAAWzwG,SAASW,cAAc,UACtC8vG,EAASjyG,MAAQ+xG,EAAQ,GACzBE,EAASrsG,OAASmsG,EAAQ,GAC1B,IAAIG,EAAaD,EAASnoE,WAAW,KAAM,CAAEiuD,OAAO,IACpDma,EAAW/+F,UAAYotB,EACvB,IAAIjwB,EAAM4hG,EAAW7+F,OACrB6+F,EAAW9+F,SAAS,EAAG,EAAG9C,EAAItQ,MAAOsQ,EAAI1K,QACzC,IAAIusG,EAAUJ,EAAUA,EAAQ,GAAKzhG,EAAItQ,MACrCoyG,EAAWL,EAAUA,EAAQ,GAAKzhG,EAAI1K,QACxB,SAAsBusG,EAASC,GACrC1gB,UAAUphF,EAAK,EAAG,GAC9B1L,EAAMoN,SAAS,IAAIqgG,GAAA,QAAK,CACpB/hG,IAAKA,EACLyhG,QAASA,EACTr6E,OAAQvnB,EAAMkwF,YACdiS,aAAcC,GAAA,eACdC,aAAcD,GAAA,eACdx8E,OAAQ5lB,EAAMswF,YACdprF,KAAMlF,EAAM3L,UACZupF,QAAS59E,EAAMm+E,aACfnoD,MAAOh2B,EAAMsiG,WACbn9F,SAAUnF,EAAM2L,cAChB4wF,eAAgBv8F,EAAMuwF,sBAE9B,CACA,IAAIxoF,EAASgpB,OAAOt8B,EAAMypF,cACtBqkB,EAAiBf,EAAiBz5F,MAElCw6F,EAAiB,CAAC,EAClBf,EAAiBz5F,GAAUw6F,EAC3BA,EAAet3E,EAAA,iBAAwB,GACvCs3E,EAAet3E,EAAA,gBAAuB,GACtCs3E,EAAet3E,EAAA,qBAA4B,GAC3Cs3E,EAAet3E,EAAA,eAAsB,IAEzC,IAAI7uB,EAAW3H,EAAM+tG,qBAAN/tG,CAA4BkR,GACvCvJ,IAAY,IAAA+kB,YAAWvgB,EAAQxE,EAAS4F,cACxCugG,EAAenmG,EAAS4uB,UAAUt5B,QAAQ,QAAS,KAAKoF,KAAKsF,EAAU3H,EAE/E,CA/DA,CAJA,CAoEJ,CAIA,IAHA,IAAIguG,EAAaz9G,OAAOgP,KAAKwtG,GACxB9uG,IAAIq+B,QACJ1oB,KAAK,MACMpO,GAAPjL,EAAI,EAAQyzG,EAAW76G,QAAQoH,EAAIiL,IAAMjL,EAAG,CACjD,IAAIuzG,EAAiBf,EAAiBiB,EAAWzzG,IACjD,IAAK,IAAI4G,KAAQ2sG,EACb,KAAIG,EAAeH,EAAe3sG,GAClC,IAASmF,EAAI,EAAGwP,EAAKm4F,EAAa96G,OAAQmT,EAAIwP,EAAIxP,GAAK,EAAG,CACtDgxF,EAAShvF,SAAS2lG,EAAa3nG,EAAI,IACnC,IAAK,IAAIq3D,EAAI,EAAGqkB,EAAK2qB,EAAWx5G,OAAQwqE,EAAIqkB,IAAMrkB,EAC9C25B,EAAS4W,aAAavB,EAAWhvC,IACjC25B,EAAS6W,aAAaF,EAAa3nG,GAE3C,CAPuC,CAS/C,CACA,OAAOjX,EAAQg7G,aAAa,EAAG,EAAG57F,EAAOrT,MAAOqT,EAAOzN,OAC3D,CDiJ8CotG,CAA4B39F,EAAMk8F,EAAY58G,KAAKo7G,kBAAmBh6F,EAAM3I,mBAAoB2D,EAAQC,EAAYsE,EACtJ,CACA+7F,ECzIL,SAAmBrrG,EAAOkhB,EAAU8nF,GACvC,IAAIiE,EAAiB,GACrB,GAAIjE,EAAW,CACX,IAAInlG,EACA,GADSjT,KAAKE,MAAMkP,EAAM,GAAK,GAAKpP,KAAKE,MAAMkP,EAAM,GAAK,GAAKgpG,EAAUhvG,OAEzEyE,EAAIuqG,EAAUloG,KAAK+C,GACnBzI,EAAI4tG,EAAUloG,KAAK+C,EAAQ,GAE3B1K,EADI6vG,EAAUloG,KAAK+C,EAAQ,GACnB,KAAOzI,EAAI,IAAMqD,GACzBitG,EAAc96G,KAAKC,MAAM,SAAwBqwB,EAASnvB,QAC1DoH,GAAKA,EAAIuyG,GAAgB,GACzBuB,EAAehsG,KAAKigB,EAAS/nB,EAAIuyG,EAAc,GAEvD,CACA,OAAOuB,CACX,CD0HoBC,CAAUltG,EAAOrR,KAAKo7G,kBAAmBp7G,KAAKm7G,wBAC1D,EAAErsG,KAAK9O,MACX,EAUA66G,EAA0B71G,UAAU4b,2BAA6B,SAAU3U,EAAYgU,EAAYY,EAAcnV,EAAUiW,GACvH,GAAK3hB,KAAK27G,aAGL,CACD,IAAIt/F,EAAa4D,EAAWM,UAAUlE,WAClCsE,EAAWV,EAAWM,UAAUI,SAChC69F,EAAUx+G,KAAKy1F,WAEfgpB,EAAa,CAAC,EAalB,OAZaz+G,KAAK27G,aAAa/6F,2BAA2B3U,EAAYoQ,EAAYsE,EAAUE,GAK5F,SAAUM,GACN,IAAIwL,GAAM,QAAOxL,GACjB,KAAMwL,KAAO8xF,GAET,OADAA,EAAW9xF,IAAO,EACXjhB,EAASyV,EAASq9F,EAEjC,GAAGA,EAAQpa,eAAiBziF,EAAsB,KAEtD,CACJ,EAIAk5F,EAA0B71G,UAAU6wB,mBAAqB,WACrD,IAAIzU,EAAQphB,KAAKy1F,WACbr0E,EAAMy4E,cAAgB75F,KAAK27G,cAC3Bv6F,EAAMzI,SAEd,EAMAkiG,EAA0B71G,UAAUg2G,wBAA0B,SAAU90F,GACpElmB,KAAK0+G,yBACT,EAMA7D,EAA0B71G,UAAUq2F,aAAe,SAAUp7E,GACzD,IAAI66F,EAAc96G,KAAKy1F,WACnBsmB,EAAejB,EAAYv4F,YAC/B,IAAKw5F,EACD,OAAO,EAEX,IAAI4C,EAAY1+F,EAAW4U,UAAUC,GAAA,aACjC8pF,EAAc3+F,EAAW4U,UAAUC,GAAA,eACnC26C,EAAuBqrC,EAAYvW,0BACnC70B,EAAyBorC,EAAYtW,4BACzC,IAAMxkG,KAAKk7G,SAAWzrC,GAAwBkvC,IACxCjvC,GAA0BkvC,EAE5B,OADA5+G,KAAKi7G,yBAA0B,GACxB,EAEXj7G,KAAKi7G,yBAA0B,EAC/B,IAAI4D,EAAmB5+F,EAAW7D,OAC9BmE,EAAYN,EAAWM,UACvBhH,EAAagH,EAAUhH,WACvB8C,EAAakE,EAAUlE,WACvBC,EAAa2D,EAAW3D,WACxBwiG,EAAsBhE,EAAYntF,cAClCoxF,EAA0BjE,EAAYzW,kBACtC2a,EAAyBlE,EAAYxW,sBACV9tF,IAA3BwoG,IACAA,EAAyB,OAE7B,IAAIhzG,EAASuU,EAAUvU,OAAOc,QAC1BsP,GAAS,IAAA68B,QAAO4lE,EAAkBE,EAA0B1iG,GAC5D4iG,EAAc,CAAC7iG,EAAOtP,SACtB0U,EAAmBjI,EAAWiE,YAClC,GAAIu+F,EAAat5F,YACblJ,EAAWgI,cACV,IAAA83B,gBAAe73B,EAAkBvB,EAAW7D,QAAS,CAMtD,IAAIqF,GAAa,IAAAC,UAASF,GACtByhF,EAAShhG,KAAKm7B,KAAI,IAAA1b,UAAStF,GAAU,EAAGqF,GAC5CrF,EAAO,GAAKoF,EAAiB,GAAKyhF,EAClC7mF,EAAO,GAAKoF,EAAiB,GAAKyhF,GAClC,SAAgBj3F,EAAQuN,GACxB,IAAI2lG,GAAa,WAAYD,EAAY,GAAI1lG,GAEzC2lG,EAAW,GAAK19F,EAAiB,IACjC09F,EAAW,GAAK19F,EAAiB,GACjCy9F,EAAY3sG,KAAK,CACb4sG,EAAW,GAAKz9F,EAChBy9F,EAAW,GACXA,EAAW,GAAKz9F,EAChBy9F,EAAW,KAGVA,EAAW,GAAK19F,EAAiB,IACtC09F,EAAW,GAAK19F,EAAiB,IACjCy9F,EAAY3sG,KAAK,CACb4sG,EAAW,GAAKz9F,EAChBy9F,EAAW,GACXA,EAAW,GAAKz9F,EAChBy9F,EAAW,IAGvB,CACA,IAAKl/G,KAAKk7G,QACNl7G,KAAKs7G,qBAAuBj/F,GAC5Brc,KAAKq7G,mBAAqByD,GAC1B9+G,KAAK07G,sBAAwBsD,IAC7B,IAAA3lE,gBAAer5C,KAAK0zE,gBAAiBt3D,GAErC,OADApc,KAAK47G,oBAAqB,GACnB,EAEX57G,KAAK27G,aAAe,KACpB37G,KAAKk7G,QAAS,EACd,IAEIiE,EAFArD,EAAc,IAAI,GAAmB,SAAmBz/F,EAAYC,GAAaF,EAAQC,EAAYC,EAAYw+F,EAAY1W,gBAC7H19D,GAAiB,KAAAC,qBAErB,GAAID,EAAgB,CAChB,IAAK,IAAIl8B,EAAI,EAAGiL,EAAKwpG,EAAY77G,OAAQoH,EAAIiL,IAAMjL,EAC/CuxG,EAAaqD,cAAa,KAAAl6E,cAAa+5E,EAAYz0G,GAAI+O,GAAa8C,EAAYqqB,GAEpFy4E,GAAgB,KAAArlG,6BAA4B4sB,EAAgBntB,EAChE,MAEI,IAAS/O,EAAI,EAAGiL,EAAKwpG,EAAY77G,OAAQoH,EAAIiL,IAAMjL,EAC/CuxG,EAAaqD,aAAaH,EAAYz0G,GAAI6R,EAAY9C,GAG9D,IAAI0lD,GAAmB,SAA0B5iD,EAAYC,GAKzDyG,EAAS,SAAU5B,GACnB,IAAI4nE,EACA8zB,EAAgB17F,EAAQ1I,oBAAsBqiG,EAAYriG,mBAI9D,GAHIokG,IACA9zB,EAAS8zB,EAAc17F,EAAS9E,IAEhC0sE,EAAQ,CACR,IAAItM,EAAQz8E,KAAKq/G,cAAcl+F,EAAS89C,EAAkB8pB,EAAQ+yB,EAAaqD,GAC/En/G,KAAKk7G,OAASl7G,KAAKk7G,QAAUz+B,CACjC,CACJ,EAAE3tE,KAAK9O,MACHs/G,GAAa,KAAAp6E,cAAa9oB,EAAQ7C,GAElCgZ,EAAWwpF,EAAawD,oBAAoBD,GAIhD,IAHIN,GACAzsF,EAAS1O,KAAKm7F,GAETx0G,EAAI,EAAGiL,EAAK8c,EAASnvB,OAAQoH,EAAIiL,IAAMjL,EAC5CuY,EAAOwP,EAAS/nB,IAEpBxK,KAAKo7G,kBAAoB7oF,EACzB,IAAIitF,EAA0B1D,EAAYjU,SACtC4X,EAAgB,IAAI,GAAcrjG,EAAQC,EAAYC,EAAYy/F,EAAa2D,cAAeF,EAAyB1E,EAAYzW,mBAUvI,OATArkG,KAAKs7G,oBAAsBj/F,EAC3Brc,KAAKq7G,kBAAoByD,EACzB9+G,KAAK07G,qBAAuBsD,EAC5Bh/G,KAAK0zE,gBAAkBt3D,EACvBpc,KAAKw7G,gBAAkBxvG,EACvBhM,KAAKy7G,oBAAsBliG,EAC3BvZ,KAAK27G,aAAe8D,EACpBz/G,KAAKm7G,uBAAyB,KAC9Bn7G,KAAK47G,oBAAqB,GACnB,CACX,EASAf,EAA0B71G,UAAUq6G,cAAgB,SAAUl+F,EAAS89C,EAAkB8pB,EAAQ42B,EAAczgD,GAC3G,IAAK6pB,EACD,OAAO,EAEX,IAAI51D,GAAU,EACd,GAAIhyB,MAAMkP,QAAQ04E,GACd,IAAK,IAAIv+E,EAAI,EAAGiL,EAAKszE,EAAO3lF,OAAQoH,EAAIiL,IAAMjL,EAC1C2oB,GACI,SAAcwsF,EAAcx+F,EAAS4nE,EAAOv+E,GAAIy0D,EAAkBj/D,KAAK+6G,6BAA8B77C,IAAkB/rC,OAI/HA,GAAU,SAAcwsF,EAAcx+F,EAAS4nE,EAAQ9pB,EAAkBj/D,KAAK+6G,6BAA8B77C,GAEhH,OAAO/rC,CACX,EACO0nF,CACX,CArc8C,CAqc5C,KEreF,IAAI,GAAwC,WACxC,IAAIzmG,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GA6C5C,SAjBiC,SAAUC,GAKvC,SAASmrG,EAAYvqG,GACjB,OAAOZ,EAAOzH,KAAKhN,KAAMqV,IAAgBrV,IAC7C,CAQA,OAdA,GAAU4/G,EAAanrG,GAWvBmrG,EAAY56G,UAAUgkB,eAAiB,WACnC,OAAO,IAAI,GAA0BhpB,KACzC,EACO4/G,CACX,CAhBgC,CAgB9BC,+BClCK,SAAS99F,EAAI3F,EAAQC,GACxB,MAAO,CAAC,EAAC,KAAW,IAAWod,IAAUA,KAC7C,CASO,SAASk5B,EAAKv2C,EAAQC,GACzB,MAAO,CAACD,EACZ,CAOO,SAASsX,EAAKmsE,GACjB,OAAO,SAMGzjF,EAAQC,GACd,IAAIkd,EAAIsmE,EAASE,kBAAkB1jF,GAC/BqgB,EAAYmjE,EAASO,0BAA0BhkF,EAAQmd,GAEvDumF,EAAU,GAEV5hG,EAAY,CAACqb,EAAG,EAAG,GACvB,IAAKrb,EAAU,GAAKwe,EAAUN,KAAMle,EAAU,IAAMwe,EAAUL,OAAQne,EAAU,GAC5E,IAAKA,EAAU,GAAKwe,EAAUJ,KAAMpe,EAAU,IAAMwe,EAAUH,OAAQre,EAAU,GAC5E4hG,EAAQxtG,KAAKutF,EAASgC,mBAAmB3jF,IAGjD,OAAO4hG,CACV,CACL,8ECxCO,SAASC,EAAMr/G,EAAOk9B,EAAKR,GAC9B,OAAOn7B,KAAK27B,IAAI37B,KAAKm7B,IAAI18B,EAAOk9B,GAAMR,EAC1C,oGAUO,IAAI4iF,EAIH,SAAU/9G,KAEHA,KAAK+9G,KAIL,SAAUh+G,GACb,IAAID,EAAwB,KAAOk+G,IAAIj+G,GACvC,OAAQD,EAAI,EAAIA,GAAK,CACzB,EAaGm+G,EAIH,SAAUj+G,KAEHA,KAAKi+G,KAIL,SAAUl+G,GACb,OAAOC,KAAKN,IAAIK,GAAKC,KAAKk+G,KAC9B,EAeD,SAASC,EAAuBp+G,EAAGD,EAAG4B,EAAIE,EAAII,EAAIE,GACrD,IAAIyb,EAAK3b,EAAKN,EACVkc,EAAK1b,EAAKN,EACd,GAAW,IAAP+b,GAAmB,IAAPC,EAAU,CACtB,IAAIvV,IAAMtI,EAAI2B,GAAMic,GAAM7d,EAAI8B,GAAMgc,IAAOD,EAAKA,EAAKC,EAAKA,GACtDvV,EAAI,GACJ3G,EAAKM,EACLJ,EAAKM,GAEAmG,EAAI,IACT3G,GAAMic,EAAKtV,EACXzG,GAAMgc,EAAKvV,EAEnB,CACA,OAAOgpC,EAAgBtxC,EAAGD,EAAG4B,EAAIE,EACrC,CASO,SAASyvC,EAAgB3vC,EAAIE,EAAII,EAAIE,GACxC,IAAIyb,EAAK3b,EAAKN,EACVkc,EAAK1b,EAAKN,EACd,OAAO+b,EAAKA,EAAKC,EAAKA,CAC1B,CAQO,SAASwgG,EAAkBC,GAE9B,IADA,IAAIx+G,EAAIw+G,EAAIl9G,OACHoH,EAAI,EAAGA,EAAI1I,EAAG0I,IAAK,CAIxB,IAFA,IAAI+1G,EAAS/1G,EACTg2G,EAAQv+G,KAAK2G,IAAI03G,EAAI91G,GAAGA,IACnBsF,EAAItF,EAAI,EAAGsF,EAAIhO,EAAGgO,IAAK,CAC5B,IAAI2wG,EAAWx+G,KAAK2G,IAAI03G,EAAIxwG,GAAGtF,IAC3Bi2G,EAAWD,IACXA,EAAQC,EACRF,EAASzwG,EAEjB,CACA,GAAc,IAAV0wG,EACA,OAAO,KAGX,IAAI91E,EAAM41E,EAAIC,GACdD,EAAIC,GAAUD,EAAI91G,GAClB81G,EAAI91G,GAAKkgC,EAET,IAAK,IAAIn0B,EAAI/L,EAAI,EAAG+L,EAAIzU,EAAGyU,IAEvB,IADA,IAAImqG,GAAQJ,EAAI/pG,GAAG/L,GAAK81G,EAAI91G,GAAGA,GACtBojE,EAAIpjE,EAAGojE,EAAI9rE,EAAI,EAAG8rE,IACnBpjE,GAAKojE,EACL0yC,EAAI/pG,GAAGq3D,GAAK,EAGZ0yC,EAAI/pG,GAAGq3D,IAAM8yC,EAAOJ,EAAI91G,GAAGojE,EAI3C,CAGA,IADA,IAAI5rE,EAAI,IAAIb,MAAMW,GACTkO,EAAIlO,EAAI,EAAGkO,GAAK,EAAGA,IAAK,CAC7BhO,EAAEgO,GAAKswG,EAAItwG,GAAGlO,GAAKw+G,EAAItwG,GAAGA,GAC1B,IAAK,IAAI1D,EAAI0D,EAAI,EAAG1D,GAAK,EAAGA,IACxBg0G,EAAIh0G,GAAGxK,IAAMw+G,EAAIh0G,GAAG0D,GAAKhO,EAAEgO,EAEnC,CACA,OAAOhO,CACX,CAOO,SAAS2+G,EAAUC,GACtB,OAAyB,IAAjBA,EAAwB3+G,KAAKmlB,EACzC,CAOO,SAASy5F,EAAUC,GACtB,OAAQA,EAAiB7+G,KAAKmlB,GAAM,GACxC,CAQO,SAAS25F,EAAOv6G,EAAGC,GACtB,IAAIqJ,EAAItJ,EAAIC,EACZ,OAAOqJ,EAAIrJ,EAAI,EAAIqJ,EAAIrJ,EAAIqJ,CAC/B,CASO,SAASkxG,EAAKx6G,EAAGC,EAAGzE,GACvB,OAAOwE,EAAIxE,GAAKyE,EAAID,EACxB,4ECtLO,IAAIy6G,EAAkC,mBAAlBzgH,OAAOygH,OAC5BzgH,OAAOygH,OACP,SAAUhvG,EAAQivG,GAChB,GAAIjvG,QACA,MAAM,IAAIkvG,UAAU,8CAGxB,IADA,IAAIC,EAAS5gH,OAAOyR,GACXzH,EAAI,EAAGiL,EAAKxV,UAAUmD,OAAQoH,EAAIiL,IAAMjL,EAAG,CAChD,IAAI8X,EAASriB,UAAUuK,GACvB,GAAI8X,QACA,IAAK,IAAIqK,KAAOrK,EACRA,EAAO/N,eAAeoY,KACtBy0F,EAAOz0F,GAAOrK,EAAOqK,GAIrC,CACA,OAAOy0F,CACX,EAKG,SAASjhH,EAAMmjD,GAClB,IAAK,IAAIyR,KAAYzR,SACVA,EAAOyR,EAEtB,CASO,IAAI/7B,EAAqC,mBAAlBx4B,OAAO4sB,OAC/B5sB,OAAO4sB,OACP,SAAUk2B,GACR,IAAIl2B,EAAS,GACb,IAAK,IAAI2nC,KAAYzR,EACjBl2B,EAAO9a,KAAKgxC,EAAOyR,IAEvB,OAAO3nC,CACX,EAMG,SAASqH,EAAQ6uB,GACpB,IAAIyR,EACJ,IAAKA,KAAYzR,EACb,OAAO,EAEX,OAAQyR,CACZ,+CC7DA,SACIjpC,YAAa,cACbC,YAAa,cACbC,UAAW,YACXC,YAAa,cACbC,WAAY,aACZC,aAAc,eACdC,aAAc,eACdC,cAAe,uzBCdXjY,+BADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAcO6sG,EAAS,QAKTC,EAAYr/G,KAAKmlB,GAAKi6F,EAKtBvjB,EAAS,EAAEwjB,GAAYA,EAAWA,EAAWA,GAK7CC,EAAe,EAAE,KAAM,GAAI,IAAK,IAKvCC,EAAoC,SAAU/sG,GAK9C,SAAS+sG,EAAmB7sG,GACxB,OAAOF,EAAOzH,KAAKhN,KAAM,CACrB2U,KAAMA,EACN07B,MAAOzP,EAAA,SACPxkB,OAAQ0hF,EACR2jB,QAAQ,EACRjqC,YAAa+pC,EACbvwE,mBAAoB,SAAU30B,EAAY4jC,GACtC,OAAO5jC,GAAa,QAAK4jC,EAAM,GAAKohE,EACxC,KACErhH,IACV,CACA,OAhBAqU,EAAUmtG,EAAoB/sG,GAgBvB+sG,CACX,CAlBuC,CAkBrCE,EAAA,GAOSC,EAAc,CACrB,IAAIH,EAAmB,aACvB,IAAIA,EAAmB,eACvB,IAAIA,EAAmB,eACvB,IAAIA,EAAmB,eACvB,IAAIA,EAAmB,oCACvB,IAAIA,EAAmB,8BACvB,IAAIA,EAAmB,iDAUpB,SAASI,EAAaC,EAAOlqC,EAAYxN,GAC5C,IAAI/mE,EAASy+G,EAAMz+G,OACfknE,EAAYH,EAAgB,EAAIA,EAAgB,EAChDi3C,EAASzpC,OACEnhE,IAAX4qG,IAGIA,EAFA92C,EAAY,EAEHu3C,EAAM/0G,QAGN,IAAI3L,MAAMiC,IAI3B,IADA,IAAI0+G,EAAWR,EACN92G,EAAI,EAAGA,EAAIpH,EAAQoH,GAAK8/D,EAAW,CACxC82C,EAAO52G,GAAMs3G,EAAWD,EAAMr3G,GAAM,IACpC,IAAIzI,EAAIs/G,EAASp/G,KAAKN,IAAIM,KAAK4F,IAAK5F,KAAKmlB,KAAOy6F,EAAMr3G,EAAI,GAAK,IAAO,MAClEzI,EAAI+/G,EACJ//G,EAAI+/G,EAEC//G,GAAK+/G,IACV//G,GAAK+/G,GAETV,EAAO52G,EAAI,GAAKzI,CACpB,CACA,OAAOq/G,CACX,CASO,SAASW,EAAWF,EAAOlqC,EAAYxN,GAC1C,IAAI/mE,EAASy+G,EAAMz+G,OACfknE,EAAYH,EAAgB,EAAIA,EAAgB,EAChDi3C,EAASzpC,OACEnhE,IAAX4qG,IAGIA,EAFA92C,EAAY,EAEHu3C,EAAM/0G,QAGN,IAAI3L,MAAMiC,IAG3B,IAAK,IAAIoH,EAAI,EAAGA,EAAIpH,EAAQoH,GAAK8/D,EAC7B82C,EAAO52G,GAAM,IAAMq3G,EAAMr3G,GAAM82G,EAC/BF,EAAO52G,EAAI,GACN,IAAMvI,KAAK+/G,KAAK//G,KAAKg+G,IAAI4B,EAAMr3G,EAAI,GAAK62G,IAAYp/G,KAAKmlB,GAAK,GAEvE,OAAOg6F,CACX,CC7IA,IAAI,EAAwC,WACxC,IAAIhtG,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GA+BjC,EAAS,EAAE,KAAM,GAAI,IAAK,IAK1BmsB,EAZS,QAYU1+B,KAAKmlB,GAAe,IAS9C66F,EAAoC,SAAUxtG,GAM9C,SAASwtG,EAAmBttG,EAAMutG,GAC9B,OAAOztG,EAAOzH,KAAKhN,KAAM,CACrB2U,KAAMA,EACN07B,MAAOzP,EAAA,UACPxkB,OAAQ,EACRwtC,gBAAiBs4D,EACjBT,QAAQ,EACRU,cAAexhF,EACf62C,YAAa,KACXx3E,IACV,CACA,OAhBA,EAAUiiH,EAAoBxtG,GAgBvBwtG,CACX,CAlBuC,CAkBrCP,EAAA,GAOS,EAAc,CACrB,IAAIO,EAAmB,UACvB,IAAIA,EAAmB,YAAa,OACpC,IAAIA,EAAmB,6BAA8B,OACrD,IAAIA,EAAmB,gCAAiC,OACxD,IAAIA,EAAmB,iCACvB,IAAIA,EAAmB,4BACvB,IAAIA,EAAmB,+CAAgD,OACvE,IAAIA,EAAmB,8BAA+B,QCxEtDp2E,EAAQ,CAAC,wCCkFN,SAASu2E,EAAeP,EAAOlqC,EAAYxN,GAC9C,IAAIi3C,EACJ,QAAmB5qG,IAAfmhE,EAA0B,CAC1B,IAAK,IAAIntE,EAAI,EAAGiL,EAAKosG,EAAMz+G,OAAQoH,EAAIiL,IAAMjL,EACzCmtE,EAAWntE,GAAKq3G,EAAMr3G,GAE1B42G,EAASzpC,CACb,MAEIypC,EAASS,EAAM/0G,QAEnB,OAAOs0G,CACX,CAOO,SAASjoG,EAAkB0oG,EAAOlqC,EAAYxN,GACjD,QAAmB3zD,IAAfmhE,GAA4BkqC,IAAUlqC,EAAY,CAClD,IAAK,IAAIntE,EAAI,EAAGiL,EAAKosG,EAAMz+G,OAAQoH,EAAIiL,IAAMjL,EACzCmtE,EAAWntE,GAAKq3G,EAAMr3G,GAE1Bq3G,EAAQlqC,CACZ,CACA,OAAOkqC,CACX,CAQO,SAASQ,EAAc9oG,IDjGvB,SAAa5E,EAAM4E,GACtBsyB,EAAMl3B,GAAQ4E,CAClB,CCgGI3L,CAAQ2L,EAAW+oG,UAAW/oG,IAC9B,QAAiBA,EAAYA,EAAY6oG,EAC7C,CAIO,SAASG,EAAeC,GAC3BA,EAAY/yG,QAAQ4yG,EACxB,CAUO,SAAS,EAAII,GAChB,MAAiC,iBAAnBA,ED5HP52E,EC6H6B,ID7Hd,KC8HU,GAAoB,IACxD,CAqBO,SAASmF,EAAmBz3B,EAAY8C,EAAY4jC,EAAOyiE,GAE9D,IAAI3xE,EACA4xE,GAFJppG,EAAa,EAAIA,IAEOqpG,yBACxB,GAAID,EACA5xE,EAAkB4xE,EAAOtmG,EAAY4jC,GACjCyiE,GAAaA,IAAcnpG,EAAWq3B,aAClCuxE,EAAgB5oG,EAAWsnB,sBAE3BkQ,EACKA,EAAkBoxE,EAAiB,IAAgBO,SAMhE,GADYnpG,EAAWq3B,YACThQ,EAAA,YAAkB8hF,GAAcA,GAAa9hF,EAAA,UACvDmQ,EAAkB10B,MAEjB,CAID,IAeI8lG,EAfAU,EAAe/oG,EAA4BP,EAAY,EAAI,cAC3DupG,EAAW,CACX7iE,EAAM,GAAK5jC,EAAa,EACxB4jC,EAAM,GACNA,EAAM,GAAK5jC,EAAa,EACxB4jC,EAAM,GACNA,EAAM,GACNA,EAAM,GAAK5jC,EAAa,EACxB4jC,EAAM,GACNA,EAAM,GAAK5jC,EAAa,GAE5BymG,EAAWD,EAAaC,EAAUA,EAAU,GAG5C/xE,IAFY,IAAAjxB,aAAYgjG,EAASh2G,MAAM,EAAG,GAAIg2G,EAASh2G,MAAM,EAAG,KACnD,IAAAgT,aAAYgjG,EAASh2G,MAAM,EAAG,GAAIg2G,EAASh2G,MAAM,EAAG,KAC5B,OAIf0J,KAHlB2rG,EAAgBO,EACd,IAAgBA,GAChBnpG,EAAWsnB,sBAEbkQ,GAAmBoxE,EAE3B,CAEJ,OAAOpxE,CACX,CAQO,SAASgyE,EAAyBP,GACrCD,EAAeC,GACfA,EAAY/yG,SAAQ,SAAU6S,GAC1BkgG,EAAY/yG,SAAQ,SAAUwwD,GACtB39C,IAAW29C,IACX,QAAiB39C,EAAQ29C,EAAamiD,EAE9C,GACJ,GACJ,CAcO,SAASY,EAAwBC,EAAcC,EAAcC,EAAkBC,GAClFH,EAAaxzG,SAAQ,SAAU4zG,GAC3BH,EAAazzG,SAAQ,SAAU6zG,IAC3B,QAAiBD,EAAaC,EAAaH,IAC3C,QAAiBG,EAAaD,EAAaD,EAC/C,GACJ,GACJ,CAIO,SAASG,IDrPZ13E,EAAQ,CAAC,GCuPT,SACJ,CAMO,SAASzM,EAAiB7lB,EAAYiqG,GACzC,OAAKjqG,EAG0B,iBAAfA,EACL,EAAIA,GAGsB,EAN1B,EAAIiqG,EAQnB,CAQO,SAASC,EAAuCC,GACnD,OAAO,SAOG7B,EAAOlqC,EAAYxN,GAIzB,IAHA,IAAI/mE,EAASy+G,EAAMz+G,OACfknE,OAA8B9zD,IAAlB2zD,EAA8BA,EAAgB,EAC1Di3C,OAAwB5qG,IAAfmhE,EAA2BA,EAAa,IAAIx2E,MAAMiC,GACtDoH,EAAI,EAAGA,EAAIpH,EAAQoH,GAAK8/D,EAAW,CACxC,IAAIrqB,EAAQyjE,EAAe,CAAC7B,EAAMr3G,GAAIq3G,EAAMr3G,EAAI,KAChD42G,EAAO52G,GAAKy1C,EAAM,GAClBmhE,EAAO52G,EAAI,GAAKy1C,EAAM,GACtB,IAAK,IAAI1pC,EAAI+zD,EAAY,EAAG/zD,GAAK,IAAKA,EAClC6qG,EAAO52G,EAAI+L,GAAKsrG,EAAMr3G,EAAI+L,EAElC,CACA,OAAO6qG,CACV,CACL,CAoBO,SAASuC,EAAwBrhG,EAAQ29C,EAAa2jD,EAASC,GAClE,IAAI3jD,EAAa,EAAI59C,GACjBwhG,EAAW,EAAI7jD,IACnB,QAAiBC,EAAY4jD,EAAUL,EAAuCG,KAC9E,QAAiBE,EAAU5jD,EAAYujD,EAAuCI,GAClF,CAUO,SAASE,EAAW93G,EAAY65E,GACnC,OAAOv+D,EAAUtb,EAAY,iBAAgCuK,IAAnBsvE,EAA+BA,EAAiB,YAC9F,CAUO,SAASk+B,EAAS/3G,EAAY65E,GACjC,IAAIm+B,EAAS18F,EAAUtb,OAA+BuK,IAAnBsvE,EAA+BA,EAAiB,YAAa,aAC5FvR,EAAM0vC,EAAO,GAIjB,OAHI1vC,GAAO,KAAOA,EAAM,OACpB0vC,EAAO,IAAK,QAAO1vC,EAAM,IAAK,KAAO,KAElC0vC,CACX,CAWO,SAAS7lE,EAAWilE,EAAaC,GACpC,GAAID,IAAgBC,EAChB,OAAO,EAEX,IAAIY,EAAab,EAAYzyE,aAAe0yE,EAAY1yE,WACxD,OAAIyyE,EAAYf,YAAcgB,EAAYhB,WAIlBxoG,EAA4BupG,EAAaC,KACpClB,IAJlB8B,CAMf,CAUO,SAASpqG,EAA4B2hF,EAAkB0oB,GAC1D,IAAIC,EAAa3oB,EAAiB6mB,UAC9B+B,EAAkBF,EAAsB7B,UACxCgC,GAAgB,QAAiBF,EAAYC,GAIjD,OAHKC,IACDA,EAAgBnrG,GAEbmrG,CACX,CAWO,SAAS9jD,EAAal+C,EAAQ29C,GAGjC,OAAOnmD,EAFgB,EAAIwI,GACC,EAAI29C,GAEpC,CAeO,SAAS14C,EAAUtb,EAAYqW,EAAQ29C,GAE1C,OADoBO,EAAal+C,EAAQ29C,EAClCqkD,CAAcr4G,OAAYuK,EAAWvK,EAAW7I,OAC3D,CAaO,SAASo7C,EAAgBpiC,EAAQkG,EAAQ29C,EAAaxjB,GACzD,IAAI6nE,EAAgB9jD,EAAal+C,EAAQ29C,GACzC,OAAO,IAAAllD,gBAAeqB,EAAQkoG,OAAe9tG,EAAWimC,EAC5D,CASO,SAAS8nE,EAAyBtkE,EAAOw7C,EAAkB0oB,GAE9D,OADoBrqG,EAA4B2hF,EAAkB0oB,EAC3DG,CAAcrkE,EACzB,CAIA,IAAIvZ,EAAiB,KAOd,SAAS89E,EAAkBjrG,GAC9BmtB,EAAiB,EAAIntB,EACzB,CAMO,SAASkrG,IACZ/9E,EAAiB,IACrB,CAOO,SAASC,IACZ,OAAOD,CACX,CAMO,SAASg+E,IACZF,EAAkB,YACtB,CAQO,SAASzxF,EAAiB9mB,EAAYwvF,GACzC,OAAK/0D,EAGEnf,EAAUtb,EAAYwvF,EAAkB/0D,GAFpCz6B,CAGf,CAQO,SAASqnB,EAAmBrnB,EAAY04G,GAC3C,OAAKj+E,EAGEnf,EAAUtb,EAAYy6B,EAAgBi+E,GAFlC14G,CAGf,CAQO,SAASi5B,EAAa9oB,EAAQq/E,GACjC,OAAK/0D,EAGE8X,EAAgBpiC,EAAQq/E,EAAkB/0D,GAFtCtqB,CAGf,CAQO,SAASsjB,GAAetjB,EAAQuoG,GACnC,OAAKj+E,EAGE8X,EAAgBpiC,EAAQsqB,EAAgBi+E,GAFpCvoG,CAGf,CAWO,SAASwoG,GAA8B1kD,EAAY4jD,EAAUv8F,GAChE,OAAO,SAAUolC,GACb,IAEIxO,EAAavK,EAFbixE,EAAUl4D,EAAM,GAChBm4D,EAAUn4D,EAAM,GAEpB,GAAIuT,EAAW3+C,WAAY,CACvB,IAAIwjG,EAAe7kD,EAAW1iD,YAC1Bu2B,GAAoB,IAAAryB,UAASqjG,IACjCnxE,GAAa,QAAc+Y,EAAOuT,EAAYnsB,MAG1C8wE,GAAoBjxE,EAAaG,GAErC8wE,GAAU,QAAMA,EAASE,EAAa,GAAIA,EAAa,IACvDD,GAAU,QAAMA,EAASC,EAAa,GAAIA,EAAa,IACvD5mE,EAAc52B,EAAU,CAACs9F,EAASC,GACtC,MAEI3mE,EAAc52B,EAAUolC,GAM5B,OAJI/Y,GAAckwE,EAASviG,aAEvB48B,EAAY,IAAMvK,GAAa,IAAAlyB,UAASoiG,EAAStmG,cAE9C2gC,CACX,CACJ,CAMO,SAAS6mE,KAGZjC,EAAyB,GACzBA,EAAyB,GAGzBC,EAAwB,EAAsB,EAAsBpB,EAAcG,EACtF,CACAiD,gECvWA,QAnMgC,WAI5B,SAAStD,EAAWhzG,GAKhB1O,KAAKilH,MAAQv2G,EAAQiG,KAQrB3U,KAAKklH,OAAsDx2G,EAAa,MAQxE1O,KAAK2+D,aAA6BnoD,IAAnB9H,EAAQ0N,OAAuB1N,EAAQ0N,OAAS,KAQ/Dpc,KAAKmlH,kBACuB3uG,IAAxB9H,EAAQ8oE,YAA4B9oE,EAAQ8oE,YAAc,KAK9Dx3E,KAAKolH,sBAC2B5uG,IAA5B9H,EAAQk7C,gBAAgCl7C,EAAQk7C,gBAAkB,MAKtE5pD,KAAKqlH,aAA6B7uG,IAAnB9H,EAAQ+yG,QAAuB/yG,EAAQ+yG,OAKtDzhH,KAAKslH,aAAetlH,KAAKqlH,UAAWrlH,KAAK2+D,SAKzC3+D,KAAKulH,wBAA0B72G,EAAQsiC,mBAKvChxC,KAAKwlH,iBAAmB,KAKxBxlH,KAAKylH,eAAiB/2G,EAAQyzG,aAClC,CA+HA,OA3HAT,EAAW18G,UAAUuc,SAAW,WAC5B,OAAOvhB,KAAKslH,SAChB,EAMA5D,EAAW18G,UAAUs9G,QAAU,WAC3B,OAAOtiH,KAAKilH,KAChB,EAMAvD,EAAW18G,UAAUwY,UAAY,WAC7B,OAAOxd,KAAK2+D,OAChB,EAMA+iD,EAAW18G,UAAU4rC,SAAW,WAC5B,OAAO5wC,KAAKklH,MAChB,EAQAxD,EAAW18G,UAAU67B,iBAAmB,WACpC,OAAO7gC,KAAKylH,gBAAkB,IAAgBzlH,KAAKklH,OACvD,EAMAxD,EAAW18G,UAAUu7D,eAAiB,WAClC,OAAOvgE,KAAKmlH,YAChB,EAYAzD,EAAW18G,UAAU8kD,mBAAqB,WACtC,OAAO9pD,KAAKolH,gBAChB,EAMA1D,EAAW18G,UAAUq7B,SAAW,WAC5B,OAAOrgC,KAAKqlH,OAChB,EAMA3D,EAAW18G,UAAU0gH,UAAY,SAAUjE,GACvCzhH,KAAKqlH,QAAU5D,EACfzhH,KAAKslH,aAAe7D,IAAUzhH,KAAK2+D,QACvC,EAIA+iD,EAAW18G,UAAU2gH,mBAAqB,WACtC,OAAO3lH,KAAKwlH,gBAChB,EAIA9D,EAAW18G,UAAU4gH,mBAAqB,SAAU/lB,GAChD7/F,KAAKwlH,iBAAmB3lB,CAC5B,EAMA6hB,EAAW18G,UAAUqoF,UAAY,SAAUjxE,GACvCpc,KAAK2+D,QAAUviD,EACfpc,KAAKslH,aAAetlH,KAAKqlH,UAAWjpG,EACxC,EAOAslG,EAAW18G,UAAUw4C,eAAiB,SAAUg6B,GAC5Cx3E,KAAKmlH,aAAe3tC,CACxB,EAOAkqC,EAAW18G,UAAU6gH,sBAAwB,SAAU5mH,GACnDe,KAAKulH,wBAA0BtmH,CACnC,EAMAyiH,EAAW18G,UAAU49G,uBAAyB,WAC1C,OAAO5iH,KAAKulH,uBAChB,EACO7D,CACX,CAlM+B,wDCzC/B,IAAI9gF,EAAQ,CACRyO,QAAS,UACTy2E,KAAM,KACNC,OAAQ,IACRC,OAAQ,SACRC,YAAa,cACbC,OAAQ,SAQDvlF,EAAkB,CAAC,EAE9BA,EAAgBC,EAAMyO,SAAY,EAAIptC,KAAKmlB,GAAK,QAAW,IAC3DuZ,EAAgBC,EAAMklF,MAAQ,MAC9BnlF,EAAgBC,EAAMmlF,QAAU,EAChCplF,EAAgBC,EAAMslF,QAAU,KAAO,KACvC,kHCVO,SAASzvB,EAAS0vB,GACrB,IAEI37G,EAAG+L,EAFH6vG,EAAY5lH,OAAOgP,KAAK22G,EAAME,MAC9BxhH,EAAMuhH,EAAUhjH,OAEpB,IAAKoH,EAAI,EAAGA,EAAI3F,IAAO2F,EAAG,CACtB,IAAImK,EAAOyxG,EAAU57G,GACrB,KAAK,IAAAvF,KAAI0P,GAAO,CACZ,IAAI2xG,EAAMH,EAAME,KAAK1xG,IACrB,IAAA0tG,eAAc,IAAI,IAAW,CACzB1tG,KAAMA,EACNi1C,gBAAiB08D,EAAIC,KACrBpE,cAAemE,EAAIE,SACnBn2E,MAAOi2E,EAAIj2E,QAEnB,CACJ,CACA,IAAK7lC,EAAI,EAAGA,EAAI3F,IAAO2F,EAAG,CACtB,IAAIi8G,EAAQL,EAAU57G,GAClBk8G,GAAQ,IAAAzhH,KAAIwhH,GAChB,IAAKlwG,EAAI,EAAGA,EAAI1R,IAAO0R,EAAG,CACtB,IAAIowG,EAAQP,EAAU7vG,GAClBqwG,GAAQ,IAAA3hH,KAAI0hH,GAChB,KAAK,QAAaF,EAAOE,GAAQ,CAC7B,IAAIE,EAAOV,EAAME,KAAKI,GAClBK,EAAOX,EAAME,KAAKM,GACtB,GAAIE,IAASC,GACT,IAAA/D,0BAAyB,CAAC2D,EAAOE,QAEhC,CAED,IAAIr/F,EAAY4+F,GAAM,QAAO,CAAC,EAAGU,EAAM,CAAEN,UAAM/vG,KAAc,QAAO,CAAC,EAAGswG,EAAM,CAAEP,UAAM/vG,MACtF,IAAAmtG,yBAAwB+C,EAAOE,GAAO,IAAAhC,+BAA8B8B,EAAOE,EAAOr/F,EAAUq8F,UAAU,IAAAgB,+BAA8BgC,EAAOF,EAAOn/F,EAAUs8F,SAChK,CACJ,CACJ,CACJ,CACJ,mEC9CA,IAAIjH,EAAa,CAAC,EAIX,SAASz8G,IACZy8G,EAAa,CAAC,CAClB,CASO,SAAShvG,EAAI0U,EAAQ29C,EAAazjB,GACrC,IAAI4nE,EAAa9hG,EAAOggG,UACpB+B,EAAkBpkD,EAAYqiD,UAC5B8B,KAAcxH,IAChBA,EAAWwH,GAAc,CAAC,GAE9BxH,EAAWwH,GAAYC,GAAmB7nE,CAC9C,CA0BO,SAASv3C,EAAIm/G,EAAYC,GAC5B,IAAI98F,EAIJ,OAHI68F,KAAcxH,GAAcyH,KAAmBzH,EAAWwH,KAC1D78F,EAAYq1F,EAAWwH,GAAYC,IAEhC98F,CACX,sGCiBO,SAASw/F,EAAiB7gG,GAC7B,IAGIi5F,EAHAl/F,EAAaiG,EAAMjG,WACnBsH,GAAY,QAAkBrB,EAAM+1E,sBAAsBnvF,QAASmT,EAAWO,4BAC9Ey+C,GAAmB,QAAoBh/C,EAAWM,UAAUlE,WAAY4D,EAAW3D,YAEnFoqB,GAAiB,IAAAC,qBAIrB,OAHID,IACAy4E,GAAgB,IAAArlG,6BAA4B4sB,EAAgBzmB,EAAWM,UAAUhH,aAE9E,IAAI,IAAwB2M,EAAM5mB,QAAS2gB,EAAW3D,WAAY2D,EAAW7D,OAAQmL,EAAWtH,EAAWM,UAAUI,SAAUs+C,EAAkBkgD,EAC5J,CAmBO,SAAS6H,EAAqB/mG,EAAYq2F,GACzCA,GACAA,EAAcn2G,QAGlB,IADA,IAAIoO,EAAQ0R,EAAWqW,eACdiD,EAAIhrB,EAAMnL,OAAS,EAAGm2B,GAAK,IAAKA,EAGrC,IAFA,IAAIvjB,EAAOzH,EAAMgrB,GACb0tF,EAAcjxG,EAAKzH,MACd/D,EAAI,EAAGiL,EAAKwxG,EAAY7jH,OAAQoH,EAAIiL,EAAIjL,GAAK,EAClD8rG,EAAgB2Q,EAAYz8G,GAAG6rG,gBAAgB4Q,EAAYz8G,EAAI,GAAIy8G,EAAYz8G,EAAI,GAAIwL,EAAKojF,QAASkd,GAI7G,OADA/nG,EAAMnL,OAAS,EACRkzG,CACX,oDCtHQliG,YADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAsCJ,QAnCiC,SAAUC,GASvC,SAASyyG,EAAY91G,EAAM+1G,EAA2B79F,EAAgB89F,GAClE,IAAIxmH,EAAQ6T,EAAOzH,KAAKhN,KAAMoR,IAASpR,KAqBvC,OAdAY,EAAMq7F,sBAAwBkrB,EAM9BvmH,EAAMqf,WAAaqJ,EAOnB1oB,EAAMtB,QAAU8nH,EACTxmH,CACX,CACA,OAhCAyT,EAAU6yG,EAAazyG,GAgChByyG,CACX,CAlCgC,CAkC9B,oDC7CF,SAMIG,UAAW,YAMX96F,WAAY,aAOZ+6F,WAAY,aAOZC,YAAa,cAQbC,eAAgB,gEC2DpB,QA1FmC,WAC/B,SAASrd,IACT,CAsFA,OA9EAA,EAAcnlG,UAAUsiG,WAAa,SAAU1vF,EAAUuJ,EAASomF,GAAY,EAM9E4C,EAAcnlG,UAAUo5G,aAAe,SAAUxmG,GAAY,EAM7DuyF,EAAcnlG,UAAUuT,SAAW,SAAUtI,GAAS,EAKtDk6F,EAAcnlG,UAAU4nG,WAAa,SAAU3d,EAAgB9tE,GAAW,EAK1EgpF,EAAcnlG,UAAU6wE,YAAc,SAAU10D,EAASlR,GAAS,EAKlEk6F,EAAcnlG,UAAUyiH,uBAAyB,SAAUC,EAA4BvmG,GAAW,EAKlGgpF,EAAcnlG,UAAUonG,eAAiB,SAAUC,EAAoBlrF,GAAW,EAKlFgpF,EAAcnlG,UAAUsnG,oBAAsB,SAAUC,EAAyBprF,GAAW,EAK5FgpF,EAAcnlG,UAAUqmG,eAAiB,SAAUC,EAAoBnqF,GAAW,EAKlFgpF,EAAcnlG,UAAUioG,iBAAmB,SAAUC,EAAsB/rF,GAAW,EAKtFgpF,EAAcnlG,UAAUkmG,UAAY,SAAUC,EAAehqF,GAAW,EAKxEgpF,EAAcnlG,UAAU+nG,YAAc,SAAUC,EAAiB7rF,GAAW,EAK5EgpF,EAAcnlG,UAAUgqG,SAAW,SAAUp3F,EAAUuJ,GAAW,EAKlEgpF,EAAcnlG,UAAUgjG,mBAAqB,SAAUxpF,EAAWqxD,GAAe,EAKjFs6B,EAAcnlG,UAAUumG,cAAgB,SAAUC,EAAYmc,GAAsB,EAKpFxd,EAAcnlG,UAAUyrG,aAAe,SAAUC,EAAWkX,GAAuB,EAC5Ezd,CACX,CAzFkC,uSCyEvB0d,EAAc,kBAKdC,EAAmB,OAKnBC,EAAiB,QAKjBC,EAAkB,GAKlBC,EAAwB,EAKxBC,EAAkB,QAKlBC,EAAoB,GAKpBC,EAAqB,OAKrBC,EAAmB,SAKnBC,EAAsB,SAKtBC,EAAiB,CAAC,EAAG,EAAG,EAAG,GAK3BC,EAAmB,EAInBC,EAAe,IAAI,MASN,IAAI,KACjB3xF,QAAU,WACjBp1B,QAAQgnH,KAAK,4BACjB,EAIA,IAIIC,EAmGIvmH,EACAwmH,EAxGJC,EAAiB,KAQVC,EAAc,CAAC,EAKfC,EAAe,WACtB,IAKIhzC,EAAUizC,EAJVtoG,EAAO,QACPuoG,EAAiB,CAAC,YAAa,SAC/BpkH,EAAMokH,EAAe7lH,OACrBiC,EAAO,2BAQX,SAAS6jH,EAAYC,EAAWC,EAAYC,GAExC,IADA,IAAIC,GAAY,EACP9+G,EAAI,EAAGA,EAAI3F,IAAO2F,EAAG,CAC1B,IAAI++G,EAAgBN,EAAez+G,GAEnC,GADAw+G,EAAiBQ,EAAiBL,EAAY,IAAMC,EAAa,IAAM1oG,EAAO6oG,EAAelkH,GACzFgkH,GAAcE,EAAe,CAC7B,IAAIl+G,EAAQm+G,EAAiBL,EACzB,IACAC,EACA,IACA1oG,EACA2oG,EACA,IACAE,EAAelkH,GAGnBikH,EAAYA,GAAaj+G,GAAS29G,CACtC,CACJ,CACA,QAAIM,CAIR,CACA,SAASG,IAGL,IAFA,IAAI/9B,GAAO,EACPg+B,EAAQjB,EAAaz7F,UAChBxiB,EAAI,EAAGiL,EAAKi0G,EAAMtmH,OAAQoH,EAAIiL,IAAMjL,EAAG,CAC5C,IAAI4nE,EAAOs3C,EAAMl/G,GACbi+G,EAAaxjH,IAAImtE,GAzCf,MA0CE82C,EAAYppH,MAAME,KAAMoyE,EAAK9hE,MAAM,SACnC,QAAMw4G,GAEND,EAAiB,KACjBF,OAAcnyG,EACdiyG,EAAahyG,IAAI27D,EA/CnB,OAkDEq2C,EAAahyG,IAAI27D,EAAMq2C,EAAaxjH,IAAImtE,GAAQ,GAAG,GACnDsZ,GAAO,GAGnB,CACIA,IACAi+B,cAAc5zC,GACdA,OAAWv/D,EAEnB,CACA,OAAO,SAAUi+B,GACb,IAAI29B,GAAO,OAAkB39B,GAC7B,GAAK29B,EAIL,IADA,IAAIx9B,EAAWw9B,EAAKx9B,SACXpqC,EAAI,EAAGiL,EAAKm/B,EAASxxC,OAAQoH,EAAIiL,IAAMjL,EAAG,CAC/C,IAAIqqC,EAASD,EAASpqC,GAClBmiB,EAAMylD,EAAKniE,MAAQ,KAAOmiE,EAAK19B,OAAS,KAAOG,OACrBr+B,IAA1BiyG,EAAaxjH,IAAI0nB,KACjB87F,EAAahyG,IAAIkW,EAtEf,KAsE6B,GAC1Bu8F,EAAY92C,EAAKniE,MAAOmiE,EAAK19B,OAAQG,KACtC4zE,EAAahyG,IAAIkW,EAAK,GAAG,QACRnW,IAAbu/D,IACAA,EAAW6zC,YAAYH,EAAO,MAI9C,CACJ,CACH,CAjFyB,GAsFfI,GAKHjB,EAAUE,EACP,SAAUr0E,GACb,IAAIxjC,EAAS23G,EAAQn0E,GACrB,GAAcj+B,MAAVvF,EACA,GAAI,KAAyB,CACzB,IAAImhE,GAAO,OAAkB39B,GACzBq1E,EAAUC,EAAYt1E,EAAU,MAChCnmC,EAAam5B,MAAM8E,OAAO6lC,EAAK9jE,aAC7B,IACAi+B,OAAO6lC,EAAK9jE,YAClBw6G,EAAYr0E,GACRnmC,GACKw7G,EAAQE,wBAA0BF,EAAQG,yBACvD,MAES7nH,KACDA,EAAMyK,SAASW,cAAc,QACzBC,UAAY,IAChBrL,EAAI6N,MAAM4oE,OAAS,eACnBz2E,EAAI6N,MAAM42B,QAAU,eACpBzkC,EAAI6N,MAAMsK,SAAW,sBACrBnY,EAAI6N,MAAMxB,KAAO,uBAErBrM,EAAI6N,MAAMmiE,KAAO39B,EACjB5nC,SAASq/B,KAAKv+B,YAAYvL,GAC1B6O,EAAS7O,EAAIkN,aACbs5G,EAAQn0E,GAAYxjC,EACpBpE,SAASq/B,KAAKh5B,YAAY9Q,GAGlC,OAAO6O,CACX,GAOJ,SAAS84G,EAAY33C,EAAM/sE,GAQvB,OAPKwjH,IACDA,GAAiB,QAAsB,EAAG,IAE1Cz2C,GAAQu2C,IACRE,EAAez2C,KAAOA,EACtBu2C,EAAcE,EAAez2C,MAE1By2C,EAAekB,YAAY1kH,EACtC,CAMO,SAASmkH,EAAiBp3C,EAAM/sE,GACnC,OAAO0kH,EAAY33C,EAAM/sE,GAAMgG,KACnC,CAQO,SAASmoG,EAAyBphC,EAAM/sE,EAAMwmC,GACjD,GAAIxmC,KAAQwmC,EACR,OAAOA,EAAMxmC,GAEjB,IAAIgG,EAAQm+G,EAAiBp3C,EAAM/sE,GAEnC,OADAwmC,EAAMxmC,GAAQgG,EACPA,CACX,CAQO,SAAS6+G,EAAkB93C,EAAM/mB,EAAOwpD,GAG3C,IAFA,IAAID,EAAWvpD,EAAMjoD,OACjBiI,EAAQ,EACHb,EAAI,EAAGA,EAAIoqG,IAAYpqG,EAAG,CAC/B,IAAI2/G,EAAeX,EAAiBp3C,EAAM/mB,EAAM7gD,IAChDa,EAAQpJ,KAAKm7B,IAAI/xB,EAAO8+G,GACxBtV,EAAOviG,KAAK63G,EAChB,CACA,OAAO9+G,CACX,CAOO,SAAS++G,EAAe9qH,EAASqhB,EAAUq6D,EAASC,GACtC,IAAbt6D,IACArhB,EAAQ0gE,UAAUgb,EAASC,GAC3B37E,EAAQopB,OAAO/H,GACfrhB,EAAQ0gE,WAAWgb,GAAUC,GAErC,CAcO,SAASovC,EAAiB/qH,EAASioB,EAAW6xE,EAASkxB,EAAc5U,EAASC,EAASvjG,EAAGhH,EAAGpJ,EAAGD,EAAGyvC,GACtGlyC,EAAQijG,OACQ,IAAZnJ,IACA95F,EAAQw9F,aAAe1D,GAEvB7xE,GACAjoB,EAAQ6+G,aAAar+G,MAAMR,EAASioB,GAEnB,EAAewtF,qBAEhCz1G,EAAQ0gE,UAAUh+D,EAAGD,GACrBzC,EAAQkyC,MAAMA,EAAM,GAAIA,EAAM,IAqBtC,SAAkCzsB,EAAOzlB,GAErC,IADA,IAAIy1G,EAAsBhwF,EAAMgwF,oBACvBvqG,EAAI,EAAGiL,EAAKs/F,EAAoB3xG,OAAQoH,EAAIiL,EAAIjL,GAAK,EACtDrJ,MAAMkP,QAAQ0kG,EAAoBvqG,EAAI,IACtClL,EAAQy1G,EAAoBvqG,IAAI1K,MAAMR,EAASy1G,EAAoBvqG,EAAI,IAGvElL,EAAQy1G,EAAoBvqG,IAAMuqG,EAAoBvqG,EAAI,EAGtE,CA9BQ+/G,CAA8C,EAAgBjrH,IAEzDkyC,EAAM,GAAK,GAAKA,EAAM,GAAK,GAEhClyC,EAAQ0gE,UAAUh+D,EAAGD,GACrBzC,EAAQkyC,MAAMA,EAAM,GAAIA,EAAM,IAC9BlyC,EAAQy9F,UAC2D,EAAgB2Y,EAASC,EAASvjG,EAAGhH,EAAG,EAAG,EAAGgH,EAAGhH,IAIpH9L,EAAQy9F,UAC2D,EAAgB2Y,EAASC,EAASvjG,EAAGhH,EAAGpJ,EAAGD,EAAGqQ,EAAIo/B,EAAM,GAAIpmC,EAAIomC,EAAM,IAE7IlyC,EAAQ29F,SACZ,CAoBA,IAAIutB,EAA8B,KAK3B,SAASC,EAAsBljG,GAClC,OAAI,MACO,QAASA,IAGXijG,IACDA,GAA8B,QAAsB,EAAG,GAAG9rG,QAE9D8rG,EAA4Bv6G,MAAMsX,WAAY,QAASA,GAChDijG,EAA4Bv6G,MAAMsX,UAEjD,gDChbA,SACI86C,OAAQ,SACRqoD,QAAS,UACTC,MAAO,QACP7oD,YAAa,aACbE,QAAS,UACTrjB,KAAM,0DCLFvqC,4FADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAo6BJ,QAh5B6C,SAAUC,GAWnD,SAASm2G,EAAwBtrH,EAASgd,EAAYF,EAAQmL,EAAWmwF,EAAcmT,EAAsBC,GACzG,IAAIlqH,EAAQ6T,EAAOzH,KAAKhN,OAASA,KA2KjC,OAtKAY,EAAMi7E,SAAWv8E,EAKjBsB,EAAM2c,YAAcjB,EAKpB1b,EAAM+9D,QAAUviD,EAKhBxb,EAAMsY,WAAaqO,EAKnB3mB,EAAM4zG,cAAgBkD,EAKtB92G,EAAMmqH,kBAAoBF,EAK1BjqH,EAAMoqH,eAAiBF,EAKvBlqH,EAAMqqH,kBAAoB,KAK1BrqH,EAAMsqH,oBAAsB,KAK5BtqH,EAAMuqH,kBAAoB,KAK1BvqH,EAAMwqH,WAAa,KAKnBxqH,EAAMyqH,aAAe,KAKrBzqH,EAAM8b,OAAS,KAKf9b,EAAM0qH,cAAgB,EAKtB1qH,EAAM2qH,cAAgB,EAKtB3qH,EAAM4qH,aAAe,EAKrB5qH,EAAM6qH,cAAgB,EAKtB7qH,EAAM8qH,cAAgB,EAKtB9qH,EAAM+qH,cAAgB,EAKtB/qH,EAAMgrH,sBAAuB,EAK7BhrH,EAAMirH,eAAiB,EAKvBjrH,EAAMkrH,YAAc,CAAC,EAAG,GAKxBlrH,EAAMmrH,YAAc,EAKpBnrH,EAAMstG,MAAQ,GAKdttG,EAAMutG,aAAe,EAKrBvtG,EAAMwtG,aAAe,EAKrBxtG,EAAMytG,qBAAsB,EAK5BztG,EAAM0tG,cAAgB,EAKtB1tG,EAAMorH,WAAa,CAAC,EAAG,GAKvBprH,EAAM2tG,eAAiB,KAKvB3tG,EAAM6tG,iBAAmB,KAKzB7tG,EAAM+tG,WAAa,KAKnB/tG,EAAM2zG,kBAAoB,GAK1B3zG,EAAMqrH,oBAAqB,UACpBrrH,CACX,CAstBA,OA74BAyT,EAAUu2G,EAAyBn2G,GA+LnCm2G,EAAwB5lH,UAAUknH,YAAc,SAAUnyE,EAAiB3Y,EAAQ3hB,EAAK4nB,GACpF,GAAKrnC,KAAK0c,OAAV,CAGA,IAAIq6F,GAAmB,QAAYh9D,EAAiB3Y,EAAQ3hB,EAAK,EAAGzf,KAAKkZ,WAAYlZ,KAAKu0G,mBACtFj1G,EAAUU,KAAK67E,SACfswC,EAAiBnsH,KAAKisH,mBACtB7oB,EAAQ9jG,EAAQw9F,YACM,GAAtB98F,KAAKyrH,gBACLnsH,EAAQw9F,YAAcsG,EAAQpjG,KAAKyrH,eAEvC,IAAI9qG,EAAW3gB,KAAK6rH,eAChB7rH,KAAK4rH,uBACLjrG,GAAY3gB,KAAKw0G,eAErB,IAAK,IAAIhqG,EAAI,EAAGiL,EAAKshG,EAAiB3zG,OAAQoH,EAAIiL,EAAIjL,GAAK,EAAG,CAC1D,IAAIxI,EAAI+0G,EAAiBvsG,GAAKxK,KAAKsrH,cAC/BvpH,EAAIg1G,EAAiBvsG,EAAI,GAAKxK,KAAKurH,cACvC,GAAiB,IAAb5qG,GACuB,GAAvB3gB,KAAK8rH,YAAY,IACM,GAAvB9rH,KAAK8rH,YAAY,GAAS,CAC1B,IAAI/jF,EAAU/lC,EAAIhC,KAAKsrH,cACnBtjF,EAAUjmC,EAAI/B,KAAKurH,eACvB,QAAiBY,EAAgBpkF,EAASC,EAAS,EAAG,EAAGrnB,GAAWonB,GAAUC,GAC9E1oC,EAAQ6+G,aAAar+G,MAAMR,EAAS6sH,GACpC7sH,EAAQ0gE,UAAUj4B,EAASC,GAC3B1oC,EAAQkyC,MAAMxxC,KAAK8rH,YAAY,GAAI9rH,KAAK8rH,YAAY,IACpDxsH,EAAQy9F,UAAU/8F,KAAK0c,OAAQ1c,KAAK0rH,cAAe1rH,KAAK2rH,cAAe3rH,KAAK+rH,YAAa/rH,KAAKwrH,cAAexrH,KAAKsrH,eAAgBtrH,KAAKurH,cAAevrH,KAAK+rH,YAAa/rH,KAAKwrH,cAC7KlsH,EAAQ6+G,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,EACxC,MAEI7+G,EAAQy9F,UAAU/8F,KAAK0c,OAAQ1c,KAAK0rH,cAAe1rH,KAAK2rH,cAAe3rH,KAAK+rH,YAAa/rH,KAAKwrH,aAAcxpH,EAAGD,EAAG/B,KAAK+rH,YAAa/rH,KAAKwrH,aAEjJ,CAC0B,GAAtBxrH,KAAKyrH,gBACLnsH,EAAQw9F,YAAcsG,EAhC1B,CAkCJ,EAQAwnB,EAAwB5lH,UAAUonH,UAAY,SAAUryE,EAAiB3Y,EAAQ3hB,EAAK4nB,GAClF,GAAKrnC,KAAK2uG,YAA6B,KAAf3uG,KAAKkuG,MAA7B,CAGIluG,KAAKuuG,gBACLvuG,KAAKqsH,qBAAqBrsH,KAAKuuG,gBAE/BvuG,KAAKyuG,kBACLzuG,KAAKssH,uBAAuBtsH,KAAKyuG,kBAErCzuG,KAAKusH,qBAAqBvsH,KAAK2uG,YAC/B,IAAIoI,GAAmB,QAAYh9D,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQrnC,KAAKkZ,WAAYlZ,KAAKu0G,mBAC3Fj1G,EAAUU,KAAK67E,SACfl7D,EAAW3gB,KAAKsuG,cAIpB,IAHItuG,KAAKquG,sBACL1tF,GAAY3gB,KAAKw0G,eAEdpzE,EAAS3hB,EAAK2hB,GAAUiG,EAAQ,CACnC,IAAIrlC,EAAI+0G,EAAiB31E,GAAUphC,KAAKmuG,aACpCpsG,EAAIg1G,EAAiB31E,EAAS,GAAKphC,KAAKouG,aAC5C,GAAiB,IAAbztF,GACsB,GAAtB3gB,KAAKgsH,WAAW,IACM,GAAtBhsH,KAAKgsH,WAAW,GAAS,CACzB,IAAIG,GAAiB,QAAiBnsH,KAAKisH,mBAAoBjqH,EAAGD,EAAG,EAAG,EAAG4e,GAAW3e,GAAID,GAC1FzC,EAAQ6+G,aAAar+G,MAAMR,EAAS6sH,GACpC7sH,EAAQ0gE,UAAUh+D,EAAGD,GACrBzC,EAAQkyC,MAAMxxC,KAAKgsH,WAAW,GAAIhsH,KAAKgsH,WAAW,IAC9ChsH,KAAKyuG,kBACLnvG,EAAQktH,WAAWxsH,KAAKkuG,MAAO,EAAG,GAElCluG,KAAKuuG,gBACLjvG,EAAQmtH,SAASzsH,KAAKkuG,MAAO,EAAG,GAEpC5uG,EAAQ6+G,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,EACxC,MAEQn+G,KAAKyuG,kBACLnvG,EAAQktH,WAAWxsH,KAAKkuG,MAAOlsG,EAAGD,GAElC/B,KAAKuuG,gBACLjvG,EAAQmtH,SAASzsH,KAAKkuG,MAAOlsG,EAAGD,EAG5C,CAxCA,CAyCJ,EAUA6oH,EAAwB5lH,UAAU0nH,cAAgB,SAAU3yE,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQ5zB,GAC9F,IAAInU,EAAUU,KAAK67E,SACfk7B,GAAmB,QAAYh9D,EAAiB3Y,EAAQ3hB,EAAK4nB,EAAQrnC,KAAKkZ,WAAYlZ,KAAKu0G,mBAC/Fj1G,EAAQqjG,OAAOoU,EAAiB,GAAIA,EAAiB,IACrD,IAAI3zG,EAAS2zG,EAAiB3zG,OAC1BqQ,IACArQ,GAAU,GAEd,IAAK,IAAIoH,EAAI,EAAGA,EAAIpH,EAAQoH,GAAK,EAC7BlL,EAAQsjG,OAAOmU,EAAiBvsG,GAAIusG,EAAiBvsG,EAAI,IAK7D,OAHIiJ,GACAnU,EAAQw4G,YAELr4F,CACX,EASAmrG,EAAwB5lH,UAAU2nH,WAAa,SAAU5yE,EAAiB3Y,EAAQuhB,EAAMtb,GACpF,IAAK,IAAI78B,EAAI,EAAGiL,EAAKktC,EAAKv/C,OAAQoH,EAAIiL,IAAMjL,EACxC42B,EAASphC,KAAK0sH,cAAc3yE,EAAiB3Y,EAAQuhB,EAAKn4C,GAAI68B,GAAQ,GAE1E,OAAOjG,CACX,EAQAwpF,EAAwB5lH,UAAU4nG,WAAa,SAAUh1F,GACrD,IAAK,IAAA+kB,YAAW38B,KAAK2+D,QAAS/mD,EAAS4F,aAAvC,CAGA,GAAIxd,KAAKorH,YAAcprH,KAAKqrH,aAAc,CAClCrrH,KAAKorH,YACLprH,KAAKqsH,qBAAqBrsH,KAAKorH,YAE/BprH,KAAKqrH,cACLrrH,KAAKssH,uBAAuBtsH,KAAKqrH,cAErC,IAAItU,GAAmB,QAAgBn/F,EAAU5X,KAAKkZ,WAAYlZ,KAAKu0G,mBACnE30F,EAAKm3F,EAAiB,GAAKA,EAAiB,GAC5Cl3F,EAAKk3F,EAAiB,GAAKA,EAAiB,GAC5CzwC,EAASrkE,KAAKuF,KAAKoY,EAAKA,EAAKC,EAAKA,GAClCvgB,EAAUU,KAAK67E,SACnBv8E,EAAQojG,YACRpjG,EAAQu4G,IAAId,EAAiB,GAAIA,EAAiB,GAAIzwC,EAAQ,EAAG,EAAIrkE,KAAKmlB,IACtEpnB,KAAKorH,YACL9rH,EAAQgzE,OAERtyE,KAAKqrH,cACL/rH,EAAQkzE,QAEhB,CACmB,KAAfxyE,KAAKkuG,OACLluG,KAAKosH,UAAUx0G,EAAS+sB,YAAa,EAAG,EAAG,EAvB/C,CAyBJ,EAQAimF,EAAwB5lH,UAAUuT,SAAW,SAAUtI,GACnDjQ,KAAKgoG,mBAAmB/3F,EAAM2gG,UAAW3gG,EAAM6gG,aAC/C9wG,KAAKurG,cAAct7F,EAAM8M,YACzB/c,KAAKywG,aAAaxgG,EAAMklD,UAC5B,EAIAy1D,EAAwB5lH,UAAUm5G,aAAe,SAAU52F,GACvDvnB,KAAKkZ,WAAaqO,CACtB,EAQAqjG,EAAwB5lH,UAAUo5G,aAAe,SAAUxmG,GAEvD,OADWA,EAAS4uB,WAEhB,KAAK,gBACDxmC,KAAKkrG,UACgD,GACrD,MACJ,KAAK,sBACDlrG,KAAKosG,eACqD,GAC1D,MACJ,KAAK,kBACDpsG,KAAK+sG,YACkD,GACvD,MACJ,KAAK,sBACD/sG,KAAKqrG,eACqD,GAC1D,MACJ,KAAK,4BACDrrG,KAAKssG,oBAC0D,GAC/D,MACJ,KAAK,wBACDtsG,KAAKitG,iBACuD,GAC5D,MACJ,KAAK,8BACDjtG,KAAKynH,uBAC6D,GAClE,MACJ,KAAK,iBACDznH,KAAK4sG,WACiD,GAIlE,EAWAge,EAAwB5lH,UAAU6wE,YAAc,SAAU10D,EAASlR,GAC/D,IAAI2H,EAAW3H,EAAM+tG,qBAAN/tG,CAA4BkR,GACtCvJ,IAAa,IAAA+kB,YAAW38B,KAAK2+D,QAAS/mD,EAAS4F,eAGpDxd,KAAKuY,SAAStI,GACdjQ,KAAKo+G,aAAaxmG,GACtB,EAOAgzG,EAAwB5lH,UAAUyiH,uBAAyB,SAAU7vG,GAEjE,IADA,IAAI6sC,EAAa7sC,EAASwtC,qBACjB56C,EAAI,EAAGiL,EAAKgvC,EAAWrhD,OAAQoH,EAAIiL,IAAMjL,EAC9CxK,KAAKo+G,aAAa35D,EAAWj6C,GAErC,EAOAogH,EAAwB5lH,UAAUkmG,UAAY,SAAUtzF,GAChD5X,KAAK+qH,oBACLnzG,EAAiEA,EAASwnD,oBAAoBp/D,KAAK+qH,kBAAmB/qH,KAAKgrH,iBAE/H,IAAIjxE,EAAkBniC,EAASkvB,qBAC3BO,EAASzvB,EAAS0vB,YAClBtnC,KAAK0c,QACL1c,KAAKksH,YAAYnyE,EAAiB,EAAGA,EAAgB32C,OAAQikC,GAE9C,KAAfrnC,KAAKkuG,OACLluG,KAAKosH,UAAUryE,EAAiB,EAAGA,EAAgB32C,OAAQikC,EAEnE,EAOAujF,EAAwB5lH,UAAUqmG,eAAiB,SAAUzzF,GACrD5X,KAAK+qH,oBACLnzG,EAAsEA,EAASwnD,oBAAoBp/D,KAAK+qH,kBAAmB/qH,KAAKgrH,iBAEpI,IAAIjxE,EAAkBniC,EAASkvB,qBAC3BO,EAASzvB,EAAS0vB,YAClBtnC,KAAK0c,QACL1c,KAAKksH,YAAYnyE,EAAiB,EAAGA,EAAgB32C,OAAQikC,GAE9C,KAAfrnC,KAAKkuG,OACLluG,KAAKosH,UAAUryE,EAAiB,EAAGA,EAAgB32C,OAAQikC,EAEnE,EAOAujF,EAAwB5lH,UAAUonG,eAAiB,SAAUx0F,GAIzD,GAHI5X,KAAK+qH,oBACLnzG,EAAsEA,EAASwnD,oBAAoBp/D,KAAK+qH,kBAAmB/qH,KAAKgrH,kBAE/H,IAAAruF,YAAW38B,KAAK2+D,QAAS/mD,EAAS4F,aAAvC,CAGA,GAAIxd,KAAKqrH,aAAc,CACnBrrH,KAAKssH,uBAAuBtsH,KAAKqrH,cACjC,IAAI/rH,EAAUU,KAAK67E,SACf9hC,EAAkBniC,EAASkvB,qBAC/BxnC,EAAQojG,YACR1iG,KAAK0sH,cAAc3yE,EAAiB,EAAGA,EAAgB32C,OAAQwU,EAAS0vB,aAAa,GACrFhoC,EAAQkzE,QACZ,CACA,GAAmB,KAAfxyE,KAAKkuG,MAAc,CACnB,IAAI0e,EAAeh1G,EAASurD,kBAC5BnjE,KAAKosH,UAAUQ,EAAc,EAAG,EAAG,EACvC,CAZA,CAaJ,EAOAhC,EAAwB5lH,UAAUsnG,oBAAsB,SAAU10F,GAC1D5X,KAAK+qH,oBACLnzG,EAA2EA,EAASwnD,oBAAoBp/D,KAAK+qH,kBAAmB/qH,KAAKgrH,iBAEzI,IAAI6B,EAAiBj1G,EAAS4F,YAC9B,IAAK,IAAAmf,YAAW38B,KAAK2+D,QAASkuD,GAA9B,CAGA,GAAI7sH,KAAKqrH,aAAc,CACnBrrH,KAAKssH,uBAAuBtsH,KAAKqrH,cACjC,IAAI/rH,EAAUU,KAAK67E,SACf9hC,EAAkBniC,EAASkvB,qBAC3B1F,EAAS,EACTuhB,EAAqC/qC,EAASgsD,UAC9Cv8B,EAASzvB,EAAS0vB,YACtBhoC,EAAQojG,YACR,IAAK,IAAIl4F,EAAI,EAAGiL,EAAKktC,EAAKv/C,OAAQoH,EAAIiL,IAAMjL,EACxC42B,EAASphC,KAAK0sH,cAAc3yE,EAAiB3Y,EAAQuhB,EAAKn4C,GAAI68B,GAAQ,GAE1E/nC,EAAQkzE,QACZ,CACA,GAAmB,KAAfxyE,KAAKkuG,MAAc,CACnB,IAAI4e,EAAgBl1G,EAASksD,mBAC7B9jE,KAAKosH,UAAUU,EAAe,EAAGA,EAAc1pH,OAAQ,EAC3D,CAjBA,CAkBJ,EAOAwnH,EAAwB5lH,UAAU+nG,YAAc,SAAUn1F,GAItD,GAHI5X,KAAK+qH,oBACLnzG,EAAmEA,EAASwnD,oBAAoBp/D,KAAK+qH,kBAAmB/qH,KAAKgrH,kBAE5H,IAAAruF,YAAW38B,KAAK2+D,QAAS/mD,EAAS4F,aAAvC,CAGA,GAAIxd,KAAKqrH,cAAgBrrH,KAAKorH,WAAY,CAClCprH,KAAKorH,YACLprH,KAAKqsH,qBAAqBrsH,KAAKorH,YAE/BprH,KAAKqrH,cACLrrH,KAAKssH,uBAAuBtsH,KAAKqrH,cAErC,IAAI/rH,EAAUU,KAAK67E,SACnBv8E,EAAQojG,YACR1iG,KAAK2sH,WAAW/0G,EAASitD,6BAA8B,EACzBjtD,EAASgsD,UAAYhsD,EAAS0vB,aACxDtnC,KAAKorH,YACL9rH,EAAQgzE,OAERtyE,KAAKqrH,cACL/rH,EAAQkzE,QAEhB,CACA,GAAmB,KAAfxyE,KAAKkuG,MAAc,CACnB,IAAI6e,EAAoBn1G,EAASmuD,uBACjC/lE,KAAKosH,UAAUW,EAAmB,EAAG,EAAG,EAC5C,CAtBA,CAuBJ,EAMAnC,EAAwB5lH,UAAUioG,iBAAmB,SAAUr1F,GAI3D,GAHI5X,KAAK+qH,oBACLnzG,EAAwEA,EAASwnD,oBAAoBp/D,KAAK+qH,kBAAmB/qH,KAAKgrH,kBAEjI,IAAAruF,YAAW38B,KAAK2+D,QAAS/mD,EAAS4F,aAAvC,CAGA,GAAIxd,KAAKqrH,cAAgBrrH,KAAKorH,WAAY,CAClCprH,KAAKorH,YACLprH,KAAKqsH,qBAAqBrsH,KAAKorH,YAE/BprH,KAAKqrH,cACLrrH,KAAKssH,uBAAuBtsH,KAAKqrH,cAErC,IAAI/rH,EAAUU,KAAK67E,SACf9hC,EAAkBniC,EAASitD,6BAC3BzjC,EAAS,EACTsjC,EAAQ9sD,EAASqtD,WACjB59B,EAASzvB,EAAS0vB,YACtBhoC,EAAQojG,YACR,IAAK,IAAIl4F,EAAI,EAAGiL,EAAKivD,EAAMthE,OAAQoH,EAAIiL,IAAMjL,EAAG,CAC5C,IAAIm4C,EAAO+hB,EAAMl6D,GACjB42B,EAASphC,KAAK2sH,WAAW5yE,EAAiB3Y,EAAQuhB,EAAMtb,EAC5D,CACIrnC,KAAKorH,YACL9rH,EAAQgzE,OAERtyE,KAAKqrH,cACL/rH,EAAQkzE,QAEhB,CACA,GAAmB,KAAfxyE,KAAKkuG,MAAc,CACnB,IAAI8e,EAAqBp1G,EAASstD,wBAClCllE,KAAKosH,UAAUY,EAAoB,EAAGA,EAAmB5pH,OAAQ,EACrE,CA5BA,CA6BJ,EAKAwnH,EAAwB5lH,UAAUqnH,qBAAuB,SAAUpd,GAC/D,IAAI3vG,EAAUU,KAAK67E,SACfoxC,EAAmBjtH,KAAKirH,kBACvBgC,EAOGA,EAAiBzuG,WAAaywF,EAAUzwF,YACxCyuG,EAAiBzuG,UAAYywF,EAAUzwF,UACvClf,EAAQkf,UAAYywF,EAAUzwF,YARlClf,EAAQkf,UAAYywF,EAAUzwF,UAC9Bxe,KAAKirH,kBAAoB,CACrBzsG,UAAWywF,EAAUzwF,WASjC,EAKAosG,EAAwB5lH,UAAUsnH,uBAAyB,SAAUpd,GACjE,IAAI5vG,EAAUU,KAAK67E,SACfqxC,EAAqBltH,KAAKkrH,oBACzBgC,GAqBGA,EAAmB5kB,SAAW4G,EAAY5G,UAC1C4kB,EAAmB5kB,QAAU4G,EAAY5G,QACzChpG,EAAQgpG,QAAU4G,EAAY5G,SAE9BhpG,EAAQ41G,eACH,QAAOgY,EAAmBzkB,SAAUyG,EAAYzG,WACjDnpG,EAAQ41G,YAAagY,EAAmBzkB,SAAWyG,EAAYzG,UAE/DykB,EAAmBtkB,gBAAkBsG,EAAYtG,iBACjDskB,EAAmBtkB,eAAiBsG,EAAYtG,eAChDtpG,EAAQspG,eAAiBsG,EAAYtG,iBAGzCskB,EAAmBnkB,UAAYmG,EAAYnG,WAC3CmkB,EAAmBnkB,SAAWmG,EAAYnG,SAC1CzpG,EAAQypG,SAAWmG,EAAYnG,UAE/BmkB,EAAmBjkB,WAAaiG,EAAYjG,YAC5CikB,EAAmBjkB,UAAYiG,EAAYjG,UAC3C3pG,EAAQ2pG,UAAYiG,EAAYjG,WAEhCikB,EAAmB9jB,YAAc8F,EAAY9F,aAC7C8jB,EAAmB9jB,WAAa8F,EAAY9F,WAC5C9pG,EAAQ8pG,WAAa8F,EAAY9F,YAEjC8jB,EAAmBr9C,aAAeq/B,EAAYr/B,cAC9Cq9C,EAAmBr9C,YAAcq/B,EAAYr/B,YAC7CvwE,EAAQuwE,YAAcq/B,EAAYr/B,eA/CtCvwE,EAAQgpG,QAAU4G,EAAY5G,QAC1BhpG,EAAQ41G,cACR51G,EAAQ41G,YAAYhG,EAAYzG,UAChCnpG,EAAQspG,eAAiBsG,EAAYtG,gBAEzCtpG,EAAQypG,SAAWmG,EAAYnG,SAC/BzpG,EAAQ2pG,UAAYiG,EAAYjG,UAChC3pG,EAAQ8pG,WAAa8F,EAAY9F,WACjC9pG,EAAQuwE,YAAcq/B,EAAYr/B,YAClC7vE,KAAKkrH,oBAAsB,CACvB5iB,QAAS4G,EAAY5G,QACrBG,SAAUyG,EAAYzG,SACtBG,eAAgBsG,EAAYtG,eAC5BG,SAAUmG,EAAYnG,SACtBE,UAAWiG,EAAYjG,UACvBG,WAAY8F,EAAY9F,WACxBv5B,YAAaq/B,EAAYr/B,aAkCrC,EAKA+6C,EAAwB5lH,UAAUunH,qBAAuB,SAAUpd,GAC/D,IAAI7vG,EAAUU,KAAK67E,SACfsxC,EAAmBntH,KAAKmrH,kBACxBv4C,EAAYu8B,EAAUv8B,UACpBu8B,EAAUv8B,UACV,KACDu6C,GAWGA,EAAiB/6C,MAAQ+8B,EAAU/8B,OACnC+6C,EAAiB/6C,KAAO+8B,EAAU/8B,KAClC9yE,EAAQ8yE,KAAO+8B,EAAU/8B,MAEzB+6C,EAAiBv6C,WAAaA,IAC9Bu6C,EAAiBv6C,UAA2C,EAC5DtzE,EAAQszE,UAA2C,GAEnDu6C,EAAiB96C,cAAgB88B,EAAU98B,eAC3C86C,EAAiB96C,aAAkD88B,EAAsB,aACzF7vG,EAAQ+yE,aAAkD88B,EAAsB,gBApBpF7vG,EAAQ8yE,KAAO+8B,EAAU/8B,KACzB9yE,EAAQszE,UAA2C,EACnDtzE,EAAQ+yE,aAAkD88B,EAAsB,aAChFnvG,KAAKmrH,kBAAoB,CACrB/4C,KAAM+8B,EAAU/8B,KAChBQ,UAAWA,EACXP,aAAc88B,EAAU98B,cAiBpC,EAQAu4C,EAAwB5lH,UAAUgjG,mBAAqB,SAAUxpF,EAAWqxD,GACxE,GAAKrxD,EAGA,CACD,IAAIypF,EAAiBzpF,EAAU0pF,WAC/BloG,KAAKorH,WAAa,CACd5sG,WAAW,OAAYypF,GAAkC,MAEjE,MAPIjoG,KAAKorH,WAAa,KAQtB,GAAKv7C,EAGA,CACD,IAAIs4B,EAAmBt4B,EAAYq4B,WAC/BE,EAAqBv4B,EAAYw4B,aACjCE,EAAsB14B,EAAY24B,cAClCE,EAA4B74B,EAAY84B,oBACxCE,EAAsBh5B,EAAYi5B,cAClCE,EAAmBn5B,EAAYnuD,WAC/BwnF,EAAwBr5B,EAAYs5B,gBACxCnpG,KAAKqrH,aAAe,CAChB/iB,aAAgC9xF,IAAvB4xF,EACHA,EACA,KACNK,SAAUF,GAA4C,KACtDK,eAAgBF,GAEV,KACNK,cAAkCvyF,IAAxBqyF,EACJA,EACA,KACNI,UAAWjpG,KAAKud,kBACU/G,IAArBwyF,EACKA,EACA,MACVI,gBAAsC5yF,IAA1B0yF,EACNA,EACA,KACNr5B,aAAa,OAAYs4B,GAAsC,MAEvE,MA9BInoG,KAAKqrH,aAAe,IA+B5B,EAOAT,EAAwB5lH,UAAUumG,cAAgB,SAAUC,GACxD,GAAKA,EAGA,CACD,IAAI4hB,EAAY5hB,EAAW37F,UAC3B,GAAKu9G,EAGA,CACD,IAAIC,EAAc7hB,EAAWE,YAEzB4hB,EAAa9hB,EAAWzuF,SAAS,GACjCwwG,EAAc/hB,EAAWM,YACzB0hB,EAAahiB,EAAWQ,gBAC5BhsG,KAAKsrH,cAAgB+B,EAAY,GACjCrtH,KAAKurH,cAAgB8B,EAAY,GACjCrtH,KAAKwrH,aAAe4B,EAAU,GAC9BptH,KAAK0c,OAAS4wG,EACdttH,KAAKyrH,cAAgBjgB,EAAW7R,aAChC35F,KAAK0rH,cAAgB6B,EAAY,GACjCvtH,KAAK2rH,cAAgB4B,EAAY,GACjCvtH,KAAK4rH,qBAAuBpgB,EAAWO,oBACvC/rG,KAAK6rH,eAAiBrgB,EAAWrkF,cACjCnnB,KAAK8rH,YAAc,CACf9rH,KAAKud,YAAciwG,EAAW,GAC9BxtH,KAAKud,YAAciwG,EAAW,IAElCxtH,KAAK+rH,YAAcqB,EAAU,EACjC,MAtBIptH,KAAK0c,OAAS,IAuBtB,MA5BI1c,KAAK0c,OAAS,IA6BtB,EAOAkuG,EAAwB5lH,UAAUyrG,aAAe,SAAUC,GACvD,GAAKA,EAGA,CACD,IAAIC,EAAgBD,EAAUE,UAC9B,GAAKD,EAGA,CACD,IAAI8c,EAAqB9c,EAAczI,WACvCloG,KAAKuuG,eAAiB,CAClB/vF,WAAW,OAAYivG,GAA0C,MAEzE,MAPIztH,KAAKuuG,eAAiB,KAQ1B,IAAIsC,EAAkBH,EAAUI,YAChC,GAAKD,EAGA,CACD,IAAI6c,EAAuB7c,EAAgB3I,WACvCylB,EAAyB9c,EAAgBxI,aACzCulB,EAA0B/c,EAAgBrI,cAC1CqlB,EAAgChd,EAAgBlI,oBAChDmlB,EAA0Bjd,EAAgB/H,cAC1CilB,EAAuBld,EAAgBnvF,WACvCssG,EAA4Bnd,EAAgB1H,gBAChDnpG,KAAKyuG,iBAAmB,CACpBnG,aAAoC9xF,IAA3Bm3G,EACHA,EACA,KACNllB,SAAUmlB,GAEJ,KACNhlB,eAAgBilB,GAEV,KACN9kB,cAAsCvyF,IAA5Bs3G,EACJA,EACA,KACN7kB,eAAoCzyF,IAAzBu3G,EACLA,EACA,KACN3kB,gBAA0C5yF,IAA9Bw3G,EACNA,EACA,KACNn+C,aAAa,OAAY69C,GAA8C,MAE/E,MA/BI1tH,KAAKyuG,iBAAmB,KAgC5B,IAAIwf,EAAWvd,EAAUK,UACrBU,EAAcf,EAAUgB,aACxBC,EAAcjB,EAAUkB,aACxBC,EAAqBnB,EAAU3E,oBAC/B+F,EAAepB,EAAUvpF,cACzB6pF,EAAYN,EAAU1E,gBACtBkiB,EAAWxd,EAAUv7C,UACrBg5D,EAAgBzd,EAAUU,eAC1Bgd,EAAmB1d,EAAUW,kBACjCrxG,KAAK2uG,WAAa,CACdv8B,UAAmB57D,IAAby3G,EAAyBA,EAAW,KAC1Cr7C,eAA6Bp8D,IAAlB23G,EAA8BA,EAAgB,KACzD97C,kBAAmC77D,IAArB43G,EACRA,EACA,MAEVpuH,KAAKkuG,WAAqB13F,IAAb03G,EAAyBA,EAAW,GACjDluH,KAAKmuG,kBACe33F,IAAhBi7F,EAA4BzxG,KAAKud,YAAck0F,EAAc,EACjEzxG,KAAKouG,kBACe53F,IAAhBm7F,EAA4B3xG,KAAKud,YAAco0F,EAAc,EACjE3xG,KAAKquG,yBACsB73F,IAAvBq7F,GAAmCA,EACvC7xG,KAAKsuG,mBAAiC93F,IAAjBs7F,EAA6BA,EAAe,EACjE9xG,KAAKgsH,WAAa,CACdhsH,KAAKud,YAAcyzF,EAAU,GAC7BhxG,KAAKud,YAAcyzF,EAAU,GAErC,MA3EIhxG,KAAKkuG,MAAQ,EA4ErB,EACO0c,CACX,CA/4B4C,CA+4B1C,uDCn7BMx2G,oDADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAsKJ,QAzJmC,SAAUC,GAKzC,SAAS45G,EAAcjtG,GACnB,IAAIxgB,EAAQ6T,EAAOzH,KAAKhN,OAASA,KAQjC,OANAY,EAAM0tH,wBAA0B1tH,EAAM2tH,mBAAmBz/G,KAAKlO,GAK9DA,EAAM4tH,OAASptG,EACRxgB,CACX,CAwIA,OAtJAyT,EAAUg6G,EAAe55G,GAqBzB45G,EAAcrpH,UAAUs4E,YAAc,SAAUjsE,GAC5C,OAAO,SACX,EAOAg9G,EAAcrpH,UAAUq2F,aAAe,SAAUp7E,GAC7C,OAAO,SACX,EAQAouG,EAAcrpH,UAAU8d,YAAc,SAAU7C,EAAYhO,GACxD,OAAO,SACX,EAOAo8G,EAAcrpH,UAAUy6F,mBAAqB,SAAUC,EAAO7zF,EAAM6nB,GAC3DgsE,EAAM7zF,KACP6zF,EAAM7zF,GAAQ,CAAC,GAEnB6zF,EAAM7zF,GAAM6nB,EAAKxV,UAAUnZ,YAAc2uB,CAE7C,EAUA26F,EAAcrpH,UAAUu7F,uBAAyB,SAAUj+E,EAAQ/I,EAAYmmF,GAC3E,OAOA,SAAU7zF,EAAM6wB,GACZ,IAAIhxB,EAAW1L,KAAKy/F,mBAAmB3wF,KAAK9O,KAAM0/F,EAAO7zF,GACzD,OAAOyW,EAAOmsG,kBAAkBl1G,EAAY1N,EAAM6wB,EAAWhxB,EACjE,EAAEoD,KAAK9O,KACX,EAWAquH,EAAcrpH,UAAU4b,2BAA6B,SAAU3U,EAAYgU,EAAYY,EAAcnV,EAAUiW,GAAuB,EAUtI0sG,EAAcrpH,UAAUkf,eAAiB,SAAU7S,EAAO4O,EAAYY,GAClE,OAAO,SACX,EAIAwtG,EAAcrpH,UAAUywF,SAAW,WAC/B,OAAOz1F,KAAKwuH,MAChB,EAKAH,EAAcrpH,UAAU6wB,mBAAqB,WAAc,EAM3Dw4F,EAAcrpH,UAAUupH,mBAAqB,SAAUroG,GACOA,EAAY,OAC5DvI,aAAes6D,EAAA,UACrBj4E,KAAK0+G,yBAEb,EAQA2P,EAAcrpH,UAAU02F,UAAY,SAAUlgF,GAC1C,IAAIkzG,EAAalzG,EAAMmC,WAQvB,OAPI+wG,GAAcz2C,EAAA,UAAqBy2C,GAAcz2C,EAAA,SACjDz8D,EAAMjK,iBAAiB2iB,EAAA,SAAkBl0B,KAAKsuH,yBAE9CI,GAAcz2C,EAAA,SACdz8D,EAAM4B,OACNsxG,EAAalzG,EAAMmC,YAEhB+wG,GAAcz2C,EAAA,QACzB,EAIAo2C,EAAcrpH,UAAU05G,wBAA0B,WAC9C,IAAIt9F,EAAQphB,KAAKy1F,WACbr0E,EAAMy4E,cAAgBz4E,EAAMw4E,kBAAoB,WAChDx4E,EAAMzI,SAEd,EACO01G,CACX,CAxJkC,CAwJhC5gG,EAAA,yEChLE,EAAwC,WACxC,IAAIrZ,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GA2BxCm6G,EAAqC,SAAUl6G,GAK/C,SAASk6G,EAAoBvtG,GACzB,IAAIxgB,EAAQ6T,EAAOzH,KAAKhN,KAAMohB,IAAUphB,KAwCxC,OAnCAY,EAAM+J,UAAY,KAKlB/J,EAAM+7E,mBAON/7E,EAAM47F,eAAgB,UAOtB57F,EAAMo7F,gBAAiB,UAOvBp7F,EAAMq7F,uBAAwB,UAI9Br7F,EAAMtB,QAAU,KAIhBsB,EAAMw7F,iBAAkB,EACjBx7F,CACX,CAgMA,OA9OA,EAAU+tH,EAAqBl6G,GAqD/Bk6G,EAAoB3pH,UAAUm3F,aAAe,SAAUlqF,EAAQsV,EAAW6xE,GACtE,IACIzuF,EAAWrL,EADXsvH,EAAiB5uH,KAAKy1F,WAAW8D,eAwBrC,GAtBItnF,GACyB,KAAzBA,EAAOhC,MAAMmpF,SACbnnF,EAAOvF,YAAckiH,IACjBlwG,EAASzM,EAAOi1C,6BACE2nE,oBAClBvvH,EAAUof,EAAOy2B,WAAW,QAGhC71C,GAC0B,IAAzBA,EAAQof,OAAOrT,OACZ/L,EAAQof,OAAOzO,MAAMsX,YAAcA,EAMlCvnB,KAAKo8F,kBAEVp8F,KAAK2K,UAAY,KACjB3K,KAAKV,QAAU,KACfU,KAAKo8F,iBAAkB,IARvBp8F,KAAK2K,UAAYsH,EACjBjS,KAAKV,QAAUA,EACfU,KAAKo8F,iBAAkB,IAQtBp8F,KAAK2K,UAAW,EACjBA,EAAYkC,SAASW,cAAc,QACzBd,UAAYkiH,EACtB,IAAI3+G,EAAQtF,EAAUsF,MACtBA,EAAMsK,SAAW,WACjBtK,EAAM5E,MAAQ,OACd4E,EAAMgB,OAAS,OAEf,IAAIyN,GADJpf,GAAU,WACWof,OACrB/T,EAAUgD,YAAY+Q,IACtBzO,EAAQyO,EAAOzO,OACTsK,SAAW,WACjBtK,EAAMxB,KAAO,IACbwB,EAAM6+G,gBAAkB,WACxB9uH,KAAK2K,UAAYA,EACjB3K,KAAKV,QAAUA,CACnB,CACJ,EAOAqvH,EAAoB3pH,UAAUy9F,KAAO,SAAUnjG,EAAS2gB,EAAY7D,GAChE,IAAIE,EAAa2D,EAAW3D,WACxByyG,EAAa9uG,EAAWS,KAAK,GAAKpE,EAAc,EAChD0yG,EAAc/uG,EAAWS,KAAK,GAAKpE,EAAc,EACjDqE,EAAWV,EAAWM,UAAUI,SAChCsuG,GAAU,IAAAr0E,YAAWx+B,GACrB8yG,GAAW,IAAAv0E,aAAYv+B,GACvB+yG,GAAc,IAAAz0E,gBAAet+B,GAC7BgzG,GAAa,IAAA30E,eAAcr+B,IAC/B,QAAe6D,EAAWO,2BAA4ByuG,IACtD,QAAehvG,EAAWO,2BAA4B0uG,IACtD,QAAejvG,EAAWO,2BAA4B2uG,IACtD,QAAelvG,EAAWO,2BAA4B4uG,GACtD9vH,EAAQijG,QACR,QAAejjG,GAAUqhB,EAAUouG,EAAWC,GAC9C1vH,EAAQojG,YACRpjG,EAAQqjG,OAAOssB,EAAQ,GAAK3yG,EAAY2yG,EAAQ,GAAK3yG,GACrDhd,EAAQsjG,OAAOssB,EAAS,GAAK5yG,EAAY4yG,EAAS,GAAK5yG,GACvDhd,EAAQsjG,OAAOusB,EAAY,GAAK7yG,EAAY6yG,EAAY,GAAK7yG,GAC7Dhd,EAAQsjG,OAAOwsB,EAAW,GAAK9yG,EAAY8yG,EAAW,GAAK9yG,GAC3Dhd,EAAQmjG,QACR,QAAenjG,EAASqhB,EAAUouG,EAAWC,EACjD,EAOAL,EAAoB3pH,UAAUu3F,cAAgB,SAAUj9F,EAAS2gB,EAAY7D,GACzE,IAAI6yG,GAAU,IAAAr0E,YAAWx+B,GACrB8yG,GAAW,IAAAv0E,aAAYv+B,GACvB+yG,GAAc,IAAAz0E,gBAAet+B,GAC7BgzG,GAAa,IAAA30E,eAAcr+B,IAC/B,QAAe6D,EAAWO,2BAA4ByuG,IACtD,QAAehvG,EAAWO,2BAA4B0uG,IACtD,QAAejvG,EAAWO,2BAA4B2uG,IACtD,QAAelvG,EAAWO,2BAA4B4uG,GACtD,IAAIC,EAAWrvH,KAAKi8F,uBACpB,QAAeozB,EAAUJ,IACzB,QAAeI,EAAUH,IACzB,QAAeG,EAAUF,IACzB,QAAeE,EAAUD,GACzB9vH,EAAQijG,OACRjjG,EAAQojG,YACRpjG,EAAQqjG,OAAO1gG,KAAKE,MAAM8sH,EAAQ,IAAKhtH,KAAKE,MAAM8sH,EAAQ,KAC1D3vH,EAAQsjG,OAAO3gG,KAAKE,MAAM+sH,EAAS,IAAKjtH,KAAKE,MAAM+sH,EAAS,KAC5D5vH,EAAQsjG,OAAO3gG,KAAKE,MAAMgtH,EAAY,IAAKltH,KAAKE,MAAMgtH,EAAY,KAClE7vH,EAAQsjG,OAAO3gG,KAAKE,MAAMitH,EAAW,IAAKntH,KAAKE,MAAMitH,EAAW,KAChE9vH,EAAQmjG,MACZ,EAOAksB,EAAoB3pH,UAAUsqH,qBAAuB,SAAUl+G,EAAM9R,EAAS2gB,GAC1E,IAAImB,EAAQphB,KAAKy1F,WACjB,GAAIr0E,EAAMuC,YAAYvS,GAAO,CACzB,IAAIwS,EAAU,IAAI,IAAYxS,EAAMpR,KAAKi8F,sBAAuBh8E,EAAY3gB,GAC5E8hB,EAAMjQ,cAAcyS,EACxB,CACJ,EAMA+qG,EAAoB3pH,UAAU43F,UAAY,SAAUt9F,EAAS2gB,GACzDjgB,KAAKsvH,qBAAqB,cAA2BhwH,EAAS2gB,EAClE,EAMA0uG,EAAoB3pH,UAAUg4F,WAAa,SAAU19F,EAAS2gB,GAC1DjgB,KAAKsvH,qBAAqB,eAA4BhwH,EAAS2gB,EACnE,EAaA0uG,EAAoB3pH,UAAUg3G,mBAAqB,SAAUhwG,EAAQqQ,EAAYsE,EAAUrE,EAAYjR,EAAO4F,EAAQ+pE,GAClH,IAAI7N,EAAM9hE,EAAQ,EACd+hE,EAAMn8D,EAAS,EACf2uD,EAAKtjD,EAAaD,EAClBmrD,GAAM5H,EACNyN,GAAOrhE,EAAO,GAAKgvE,EACnB1N,GAAOthE,EAAO,GAClB,OAAO,QAAiBhM,KAAKw8F,cAAervB,EAAKC,EAAKxN,EAAI4H,GAAK7mD,EAAU0sD,EAAKC,EAClF,EASAqhD,EAAoB3pH,UAAUkf,eAAiB,SAAU7S,EAAO4O,EAAYY,GACxE,IAEI1O,EAFAo9G,GAAc,QAAevvH,KAAKi8F,sBAAuB5qF,EAAMvE,SAC/DxN,EAAUU,KAAKV,QAEnB,IACI,IAAI0C,EAAIC,KAAKE,MAAMotH,EAAY,IAC3BxtH,EAAIE,KAAKE,MAAMotH,EAAY,IAC3BC,EAAY3iH,SAASW,cAAc,UACnCiiH,EAAaD,EAAUr6E,WAAW,MACtCq6E,EAAUnkH,MAAQ,EAClBmkH,EAAUv+G,OAAS,EACnBw+G,EAAWpzB,UAAU,EAAG,EAAG,EAAG,GAC9BozB,EAAW1yB,UAAUz9F,EAAQof,OAAQ1c,EAAGD,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC1DoQ,EAAOs9G,EAAWnV,aAAa,EAAG,EAAG,EAAG,GAAGnoG,IAC/C,CACA,MAAOomE,GACH,MAAiB,kBAAbA,EAAI1jE,KAEG,IAAI66G,WAERv9G,CACX,CACA,OAAgB,IAAZA,EAAK,GACE,KAEJA,CACX,EACOw8G,CACX,CAhPwC,CAgPtCzzB,GACF,gICjQIy0B,EAAqB,GAOrBC,EAAqB,CACrB,MA8MJ,SAA6BjQ,EAAc/nG,EAAU3H,EAAOkR,GACxD,IAAIqqF,EAAav7F,EAAM8M,WACvB,GAAIyuF,EAAY,CACZ,GAAIA,EAAWqkB,iBAAmB,WAC9B,OAEJ,IAAIC,EAAcnQ,EAAa3M,WAAW/iG,EAAMypF,YAAa,WAC7Do2B,EAAYvkB,cAAcC,EAAYmU,EAAalN,cAAa,IAChEqd,EAAY5kB,UAAUtzF,EAAUuJ,EACpC,CACA,IAAIuvF,EAAYzgG,EAAMklD,UACtB,GAAIu7C,EAAW,CACX,IAAIqf,EAAapQ,EAAa3M,WAAW/iG,EAAMypF,YAAa,UAC5Dq2B,EAAWtf,aAAaC,EAAWiP,EAAalN,eAAejH,IAC/DukB,EAAW/gB,SAASp3F,EAAUuJ,EAClC,CACJ,EA7NI,WAgJJ,SAAkCw+F,EAAc/nG,EAAU3H,EAAOkR,GAC7D,IAAI0uD,EAAc5/D,EAAM6gG,YACxB,GAAIjhC,EAAa,CACb,IAAImgD,EAAmBrQ,EAAa3M,WAAW/iG,EAAMypF,YAAa,iBAClEs2B,EAAiBhoB,mBAAmB,KAAMn4B,GAC1CmgD,EAAiB5jB,eAAex0F,EAAUuJ,EAC9C,CACA,IAAIuvF,EAAYzgG,EAAMklD,UACtB,GAAIu7C,EAAW,CACX,IAAIqf,EAAapQ,EAAa3M,WAAW/iG,EAAMypF,YAAa,UAC5Dq2B,EAAWtf,aAAaC,EAAWiP,EAAalN,cAAa,IAC7Dsd,EAAW/gB,SAASp3F,EAAUuJ,EAClC,CACJ,EA5JI,QA0PJ,SAA+Bw+F,EAAc/nG,EAAU3H,EAAOkR,GAC1D,IAAI3C,EAAYvO,EAAM2gG,UAClB/gC,EAAc5/D,EAAM6gG,YACxB,GAAItyF,GAAaqxD,EAAa,CAC1B,IAAIogD,EAAgBtQ,EAAa3M,WAAW/iG,EAAMypF,YAAa,aAC/Du2B,EAAcjoB,mBAAmBxpF,EAAWqxD,GAC5CogD,EAAcljB,YAAYn1F,EAAUuJ,EACxC,CACA,IAAIuvF,EAAYzgG,EAAMklD,UACtB,GAAIu7C,EAAW,CACX,IAAIqf,EAAapQ,EAAa3M,WAAW/iG,EAAMypF,YAAa,UAC5Dq2B,EAAWtf,aAAaC,EAAWiP,EAAalN,cAAa,IAC7Dsd,EAAW/gB,SAASp3F,EAAUuJ,EAClC,CACJ,EAvQI,WAkOJ,SAAkCw+F,EAAc/nG,EAAU3H,EAAOkR,GAC7D,IAAIqqF,EAAav7F,EAAM8M,WACvB,GAAIyuF,EAAY,CACZ,GAAIA,EAAWqkB,iBAAmB,WAC9B,OAEJ,IAAIC,EAAcnQ,EAAa3M,WAAW/iG,EAAMypF,YAAa,WAC7Do2B,EAAYvkB,cAAcC,EAAYmU,EAAalN,cAAa,IAChEqd,EAAYzkB,eAAezzF,EAAUuJ,EACzC,CACA,IAAIuvF,EAAYzgG,EAAMklD,UACtB,GAAIu7C,EAAW,CACX,IAAIqf,EAAapQ,EAAa3M,WAAW/iG,EAAMypF,YAAa,UAC5Dq2B,EAAWtf,aAAaC,EAAWiP,EAAalN,eAAejH,IAC/DukB,EAAW/gB,SAASp3F,EAAUuJ,EAClC,CACJ,EAjPI,gBAiKJ,SAAuCw+F,EAAc/nG,EAAU3H,EAAOkR,GAClE,IAAI0uD,EAAc5/D,EAAM6gG,YACxB,GAAIjhC,EAAa,CACb,IAAImgD,EAAmBrQ,EAAa3M,WAAW/iG,EAAMypF,YAAa,iBAClEs2B,EAAiBhoB,mBAAmB,KAAMn4B,GAC1CmgD,EAAiB1jB,oBAAoB10F,EAAUuJ,EACnD,CACA,IAAIuvF,EAAYzgG,EAAMklD,UACtB,GAAIu7C,EAAW,CACX,IAAIqf,EAAapQ,EAAa3M,WAAW/iG,EAAMypF,YAAa,UAC5Dq2B,EAAWtf,aAAaC,EAAWiP,EAAalN,cAAa,IAC7Dsd,EAAW/gB,SAASp3F,EAAUuJ,EAClC,CACJ,EA7KI,aAoLJ,SAAoCw+F,EAAc/nG,EAAU3H,EAAOkR,GAC/D,IAAI3C,EAAYvO,EAAM2gG,UAClB/gC,EAAc5/D,EAAM6gG,YACxB,GAAIjhC,GAAerxD,EAAW,CAC1B,IAAIyxG,EAAgBtQ,EAAa3M,WAAW/iG,EAAMypF,YAAa,aAC/Du2B,EAAcjoB,mBAAmBxpF,EAAWqxD,GAC5CogD,EAAchjB,iBAAiBr1F,EAAUuJ,EAC7C,CACA,IAAIuvF,EAAYzgG,EAAMklD,UACtB,GAAIu7C,EAAW,CACX,IAAIqf,EAAapQ,EAAa3M,WAAW/iG,EAAMypF,YAAa,UAC5Dq2B,EAAWtf,aAAaC,EAAWiP,EAAalN,cAAa,IAC7Dsd,EAAW/gB,SAASp3F,EAAUuJ,EAClC,CACJ,EAjMI,mBA6HJ,SAA0C26F,EAAalkG,EAAU3H,EAAOkR,GACpE,IACI3W,EAAGiL,EADHgvC,EAAa7sC,EAASwtC,qBAE1B,IAAK56C,EAAI,EAAGiL,EAAKgvC,EAAWrhD,OAAQoH,EAAIiL,IAAMjL,GAE1C0lH,EADuBN,EAAmBnrE,EAAWj6C,GAAGg8B,YACvCs1E,EAAar3D,EAAWj6C,GAAIyF,EAAOkR,EAE5D,EAnII,OAiCJ,SAA8Bw+F,EAAc/nG,EAAU3H,EAAOkR,GACzD,IAAI3C,EAAYvO,EAAM2gG,UAClB/gC,EAAc5/D,EAAM6gG,YACxB,GAAItyF,GAAaqxD,EAAa,CAC1B,IAAIsgD,EAAexQ,EAAa3M,WAAW/iG,EAAMypF,YAAa,YAC9Dy2B,EAAanoB,mBAAmBxpF,EAAWqxD,GAC3CsgD,EAAavjB,WAAWh1F,EAAUuJ,EACtC,CACA,IAAIuvF,EAAYzgG,EAAMklD,UACtB,GAAIu7C,EAAW,CACX,IAAIqf,EAAapQ,EAAa3M,WAAW/iG,EAAMypF,YAAa,UAC5Dq2B,EAAWtf,aAAaC,EAAWiP,EAAalN,cAAa,IAC7Dsd,EAAW/gB,SAASp3F,EAAUuJ,EAClC,CACJ,GAxCO,SAASivG,EAAaC,EAAUC,GACnC,OAAOptH,UAAS,QAAOmtH,GAAW,IAAMntH,UAAS,QAAOotH,GAAW,GACvE,CAMO,SAASC,EAAoBl0G,EAAYC,GAC5C,IAAI+9B,EAAYm2E,EAAan0G,EAAYC,GACzC,OAAO+9B,EAAYA,CACvB,CAMO,SAASm2E,EAAan0G,EAAYC,GACrC,OAAQqzG,EAAqBtzG,EAAcC,CAC/C,CAgCO,SAAS+iG,EAAcvD,EAAa36F,EAASlR,EAAOgvD,EAAkBrxC,EAAUsxC,GACnF,IAAI/rC,GAAU,EACVq4E,EAAav7F,EAAM8M,WACvB,GAAIyuF,EAAY,CACZ,IAAIkjB,EAAaljB,EAAWqkB,gBACxBnB,GAAc,YAAqBA,GAAc,UACjDljB,EAAWilB,oBAAoB7iG,IAG3B8gG,GAAc,UACdljB,EAAWpuF,OAEfsxG,EAAaljB,EAAWqkB,gBACxBrkB,EAAWklB,kBAAkB9iG,GAC7BuF,GAAU,EAElB,CAEA,OASJ,SAA+B2oF,EAAa36F,EAASlR,EAAOgvD,EAAkBC,GAC1E,IAAItnD,EAAW3H,EAAM+tG,qBAAN/tG,CAA4BkR,GAC3C,GAAKvJ,EAAL,CAGA,IAAI0pD,EAAqB1pD,EAASwnD,oBAAoBH,EAAkBC,GACzDjvD,EAAMoS,cAEjBsuG,EAAe7U,EAAax6C,EAAoBrxD,EAAOkR,IAIvD+uG,EADuBN,EAAmBtuD,EAAmB96B,YAC5Cs1E,EAAax6C,EAAoBrxD,EAAOkR,EAR7D,CAUJ,CAxBIyvG,CAAsB9U,EAAa36F,EAASlR,EAAOgvD,EAAkBC,GAC9D/rC,CACX,CA6BA,SAASw9F,EAAe7U,EAAalkG,EAAU3H,EAAOkR,GAClD,GAAIvJ,EAAS4uB,WAAa,8BAObs1E,EAAY9I,WAAW/iG,EAAMypF,YAAa,aAChD4N,WACoD,EAAYnmF,EAASlR,EAAMoS,oBAPlF,IADA,IAAIoiC,EAA4E,EAAW8U,gBAClF/uD,EAAI,EAAGiL,EAAKgvC,EAAWrhD,OAAQoH,EAAIiL,IAAMjL,EAC9CmmH,EAAe7U,EAAar3D,EAAWj6C,GAAIyF,EAAOkR,EAO9D,uECtII0vG,8DAWJ,SAASC,EAAiBvyG,EAAKwyG,EAAIC,EAAIC,EAAIC,GACvC3yG,EAAImkF,YACJnkF,EAAIokF,OAAO,EAAG,GACdpkF,EAAIqkF,OAAOmuB,EAAIC,GACfzyG,EAAIqkF,OAAOquB,EAAIC,GACf3yG,EAAIu5F,YACJv5F,EAAIgkF,OACJhkF,EAAIkkF,OACJlkF,EAAIE,SAAS,EAAG,EAAGxc,KAAKm7B,IAAI2zF,EAAIE,GAAM,EAAGhvH,KAAKm7B,IAAI4zF,EAAIE,IACtD3yG,EAAI0+E,SACR,CASA,SAASk0B,EAA8Bh/G,EAAMivB,GAEzC,OAAQn/B,KAAK2G,IAAIuJ,EAAc,EAATivB,GAAc,KAAO,GACvCn/B,KAAK2G,IAAIuJ,EAAc,EAATivB,EAAa,GAAK,QAAc,CACtD,CAsCO,SAASgwF,EAA0BlxD,EAAYmxD,EAAY1yF,EAAcE,GAC5E,IAAIH,GAAe,IAAAnX,WAAUoX,EAAc0yF,EAAYnxD,GAEnDthC,GAAmB,IAAAoS,oBAAmBqgF,EAAYxyF,EAAkBF,GACpE2yF,EAAsBD,EAAWxwF,wBACTrqB,IAAxB86G,IACA1yF,GAAoB0yF,GAExB,IAAIC,EAAsBrxD,EAAWr/B,wBACTrqB,IAAxB+6G,IACA3yF,GAAoB2yF,GAKxB,IAAIxM,EAAe7kD,EAAW1iD,YAC9B,IAAKunG,IAAgB,IAAA3rE,oBAAmB2rE,EAAcrmF,GAAe,CACjE,IAAI8yF,GAAqB,IAAAxgF,oBAAmBkvB,EAAYthC,EAAkBF,GACtEE,EACA6yF,SAASD,IAAuBA,EAAqB,IACrD5yF,GAAoB4yF,EAE5B,CACA,OAAO5yF,CACX,CAaO,SAAS8yF,EAAgCxxD,EAAYmxD,EAAYM,EAAc9yF,GAClF,IAAIF,GAAe,IAAAgG,WAAUgtF,GACzB/yF,EAAmBwyF,EAA0BlxD,EAAYmxD,EAAY1yF,EAAcE,GAOvF,QANK4yF,SAAS7yF,IAAqBA,GAAoB,KACnD,IAAA2b,eAAco3E,GAAc,SAAU32E,GAElC,OADApc,EAAmBwyF,EAA0BlxD,EAAYmxD,EAAYr2E,EAAQnc,GACtE4yF,SAAS7yF,IAAqBA,EAAmB,CAC5D,IAEGA,CACX,CAqBO,SAAS7b,EAAO1X,EAAO4F,EAAQqL,EAAYsiB,EAAkBmmF,EAAclmF,EAAkB8yF,EAAcC,EAAeC,EAAS5uB,EAAQ6uB,EAAiBC,GAC/J,IAAIzyH,GAAU,QAAsB2C,KAAKE,MAAMma,EAAajR,GAAQpJ,KAAKE,MAAMma,EAAarL,IAE5F,IADA,QAAO3R,EAASyyH,GACO,IAAnBF,EAAQzuH,OACR,OAAO9D,EAAQof,OAGnB,SAASszG,EAAWtxH,GAChB,OAAOuB,KAAKE,MAAMzB,EAAQ4b,GAAcA,CAC5C,CAHAhd,EAAQkyC,MAAMl1B,EAAYA,GAI1Bhd,EAAQ2yH,yBAA2B,UACnC,IAAIC,GAAmB,IAAAx4E,eACvBm4E,EAAQpiH,SAAQ,SAAUmM,EAAKpR,EAAGqL,IAC9B,IAAA/B,QAAOo+G,EAAkBt2G,EAAIQ,OACjC,IACA,IAAI+1G,GAAqB,IAAAzwG,UAASwwG,GAC9BE,GAAsB,IAAAj1G,WAAU+0G,GAChCG,GAAgB,QAAsBpwH,KAAKE,MAAOma,EAAa61G,EAAsBvzF,GAAmB38B,KAAKE,MAAOma,EAAa81G,EAAuBxzF,KAC5J,QAAOyzF,EAAeN,GACtB,IAAIO,EAAch2G,EAAasiB,EAC/BizF,EAAQpiH,SAAQ,SAAUmM,EAAKpR,EAAGqL,GAC9B,IAAI08G,EAAO32G,EAAIQ,OAAO,GAAK81G,EAAiB,GACxCM,IAAS52G,EAAIQ,OAAO,GAAK81G,EAAiB,IAC1CO,GAAW,IAAA/wG,UAAS9F,EAAIQ,QACxBs2G,GAAY,IAAAv1G,WAAUvB,EAAIQ,QAE1BR,EAAIJ,MAAMnQ,MAAQ,GAAKuQ,EAAIJ,MAAMvK,OAAS,GAC1CohH,EAAct1B,UAAUnhF,EAAIJ,MAAOynF,EAAQA,EAAQrnF,EAAIJ,MAAMnQ,MAAQ,EAAI43F,EAAQrnF,EAAIJ,MAAMvK,OAAS,EAAIgyF,EAAQsvB,EAAOD,EAAaE,EAAOF,EAAaG,EAAWH,EAAaI,EAAYJ,EAEpM,IACA,IAAIK,GAAgB,IAAA/3E,YAAW+2E,GA8G/B,OA7GAC,EAAcgB,eAAenjH,SAAQ,SAAUojH,EAAUroH,EAAGqL,GAqBxD,IAAIyM,EAASuwG,EAASvwG,OAClBrQ,EAAS4gH,EAAS5gH,OAClB4xB,EAAKvhB,EAAO,GAAG,GAAIwhB,EAAKxhB,EAAO,GAAG,GAClC3e,EAAK2e,EAAO,GAAG,GAAIze,EAAKye,EAAO,GAAG,GAClCre,EAAKqe,EAAO,GAAG,GAAIne,EAAKme,EAAO,GAAG,GAElCwwG,EAAKd,GAAY//G,EAAO,GAAG,GAAK0gH,EAAc,IAAM9zF,GACpDk0F,EAAKf,IAAa//G,EAAO,GAAG,GAAK0gH,EAAc,IAAM9zF,GACrDkyF,EAAKiB,GAAY//G,EAAO,GAAG,GAAK0gH,EAAc,IAAM9zF,GACpDmyF,EAAKgB,IAAa//G,EAAO,GAAG,GAAK0gH,EAAc,IAAM9zF,GACrDoyF,EAAKe,GAAY//G,EAAO,GAAG,GAAK0gH,EAAc,IAAM9zF,GACpDqyF,EAAKc,IAAa//G,EAAO,GAAG,GAAK0gH,EAAc,IAAM9zF,GAIrDm0F,EAAwBnvF,EACxBovF,EAAwBnvF,EAC5BD,EAAK,EACLC,EAAK,EAKL,IAAIovF,EAAkB,CAClB,CALJvvH,GAAMqvH,EACNnvH,GAAMovH,EAIO,EAAG,EAAGlC,EAAK+B,GACpB,CAJJ7uH,GAAM+uH,EACN7uH,GAAM8uH,EAGO,EAAG,EAAGhC,EAAK6B,GACpB,CAAC,EAAG,EAAGnvH,EAAIE,EAAImtH,EAAK+B,GACpB,CAAC,EAAG,EAAG9uH,EAAIE,EAAI+sH,EAAK6B,IAEpBI,GAAc,QAAkBD,GACpC,GAAKC,EAAL,CAKA,GAFA7zH,EAAQijG,OACRjjG,EAAQojG,YArLhB,WACI,QAAiClsF,IAA7Bq6G,EAAwC,CACxC,IAAItyG,EAAM1R,SAASW,cAAc,UAAU2nC,WAAW,MACtD52B,EAAI0zG,yBAA2B,UAC/B1zG,EAAIC,UAAY,wBAChBsyG,EAAiBvyG,EAAK,EAAG,EAAG,EAAG,GAC/BuyG,EAAiBvyG,EAAK,EAAG,EAAG,EAAG,GAC/B,IAAIpM,EAAOoM,EAAI+7F,aAAa,EAAG,EAAG,EAAG,GAAGnoG,KACxC0+G,EACIM,EAA8Bh/G,EAAM,IAChCg/G,EAA8Bh/G,EAAM,IACpCg/G,EAA8Bh/G,EAAM,EAChD,CACA,OAAO0+G,CACX,CAwKYuC,IACArB,IAAuB,IAA0B,CAEjDzyH,EAAQqjG,OAAOouB,EAAIC,GAKnB,IAHA,IACIqC,EAAKP,EAAK/B,EACVuC,EAAKP,EAAK/B,EACLuC,EAAO,EAAGA,EAHP,EAGqBA,IAE7Bj0H,EAAQsjG,OAAOmuB,EAAKiB,GAAauB,EAAO,GAAKF,EALrC,GAKmDrC,EAAKgB,EAAYuB,EAAOD,EAAM,IAE7E9iF,GAAR+iF,GACAj0H,EAAQsjG,OAAOmuB,EAAKiB,GAAauB,EAAO,GAAKF,EARzC,GAQuDrC,EAAKgB,GAAauB,EAAO,GAAKD,EAAM,IAIvGh0H,EAAQsjG,OAAOquB,EAAIC,EACvB,MAEI5xH,EAAQqjG,OAAOouB,EAAIC,GACnB1xH,EAAQsjG,OAAOkwB,EAAIC,GACnBzzH,EAAQsjG,OAAOquB,EAAIC,GAEvB5xH,EAAQmjG,OACRnjG,EAAQioB,UAAU4rG,EAAY,GAAIA,EAAY,GAAIA,EAAY,GAAIA,EAAY,GAAIL,EAAIC,GACtFzzH,EAAQ0gE,UAAUkyD,EAAiB,GAAKc,EAAuBd,EAAiB,GAAKe,GACrF3zH,EAAQkyC,MAAM5S,EAAmBtiB,GAAasiB,EAAmBtiB,GACjEhd,EAAQy9F,UAAUs1B,EAAc3zG,OAAQ,EAAG,GAC3Cpf,EAAQ29F,SAhCR,CAiCJ,IACI60B,IACAxyH,EAAQijG,OACRjjG,EAAQ2yH,yBAA2B,cACnC3yH,EAAQuwE,YAAc,QACtBvwE,EAAQ2pG,UAAY,EACpB2oB,EAAcgB,eAAenjH,SAAQ,SAAUojH,EAAUroH,EAAGqL,GACxD,IAAI5D,EAAS4gH,EAAS5gH,OAClB6gH,GAAM7gH,EAAO,GAAG,GAAK0gH,EAAc,IAAM9zF,EACzCk0F,IAAO9gH,EAAO,GAAG,GAAK0gH,EAAc,IAAM9zF,EAC1CkyF,GAAM9+G,EAAO,GAAG,GAAK0gH,EAAc,IAAM9zF,EACzCmyF,IAAO/+G,EAAO,GAAG,GAAK0gH,EAAc,IAAM9zF,EAC1CoyF,GAAMh/G,EAAO,GAAG,GAAK0gH,EAAc,IAAM9zF,EACzCqyF,IAAOj/G,EAAO,GAAG,GAAK0gH,EAAc,IAAM9zF,EAC9Cv/B,EAAQojG,YACRpjG,EAAQqjG,OAAOouB,EAAIC,GACnB1xH,EAAQsjG,OAAOkwB,EAAIC,GACnBzzH,EAAQsjG,OAAOquB,EAAIC,GACnB5xH,EAAQw4G,YACRx4G,EAAQkzE,QACZ,IACAlzE,EAAQ29F,WAEL39F,EAAQof,MACnB,kFC0EA,QA1UmC,WAS/B,SAAS80G,EAActzD,EAAYmxD,EAAYM,EAAc8B,EAAiBC,EAAgBC,GAK1F3zH,KAAK4zH,YAAc1zD,EAKnBlgE,KAAK6zH,YAAcxC,EAEnB,IAAIyC,EAAoB,CAAC,EACrBC,GAAe,IAAAvzD,cAAaxgE,KAAK6zH,YAAa7zH,KAAK4zH,aAMvD5zH,KAAKg0H,cAAgB,SAAU7oH,GAC3B,IAAIwhB,EAAMxhB,EAAE,GAAK,IAAMA,EAAE,GAIzB,OAHK2oH,EAAkBnnG,KACnBmnG,EAAkBnnG,GAAOonG,EAAa5oH,IAEnC2oH,EAAkBnnG,EAC7B,EAKA3sB,KAAKi0H,iBAAmBR,EAKxBzzH,KAAKk0H,uBAAyBR,EAAiBA,EAK/C1zH,KAAKm0H,WAAa,GAMlBn0H,KAAKo0H,iBAAkB,EAKvBp0H,KAAKq0H,kBACDr0H,KAAK4zH,YAAYryG,cACXkyG,KACAzzH,KAAK4zH,YAAYp2G,cACnB,IAAAkE,UAAS+xG,KAAoB,IAAA/xG,UAAS1hB,KAAK4zH,YAAYp2G,aAK/Dxd,KAAKs0H,kBAAoBt0H,KAAK4zH,YAAYp2G,aACpC,IAAAkE,UAAS1hB,KAAK4zH,YAAYp2G,aAC1B,KAKNxd,KAAKu0H,kBAAoBv0H,KAAK6zH,YAAYr2G,aACpC,IAAAkE,UAAS1hB,KAAK6zH,YAAYr2G,aAC1B,KACN,IAAIg3G,GAAqB,IAAA55E,YAAW+2E,GAChC8C,GAAsB,IAAA95E,aAAYg3E,GAClC+C,GAAyB,IAAAh6E,gBAAei3E,GACxCgD,GAAwB,IAAAl6E,eAAck3E,GACtCiD,EAAgB50H,KAAKg0H,cAAcQ,GACnCK,EAAiB70H,KAAKg0H,cAAcS,GACpCK,EAAoB90H,KAAKg0H,cAAcU,GACvCK,EAAmB/0H,KAAKg0H,cAAcW,GAWtCK,EAhHU,IAiHTrB,EACK1xH,KAAKm7B,IAAI,EAAGn7B,KAAKk/B,MAAK,SAAK,IAAA0Z,SAAQ82E,IAChCgC,EACGA,EACA,IACA,QACN,GAEV,GADA3zH,KAAKi1H,SAAST,EAAoBC,EAAqBC,EAAwBC,EAAuBC,EAAeC,EAAgBC,EAAmBC,EAAkBC,GACtKh1H,KAAKo0H,gBAAiB,CACtB,IAAIc,EAAcz7F,IAClBz5B,KAAKm0H,WAAW1kH,SAAQ,SAAUojH,EAAUroH,EAAGqL,GAC3Cq/G,EAAcjzH,KAAK27B,IAAIs3F,EAAarC,EAASvwG,OAAO,GAAG,GAAIuwG,EAASvwG,OAAO,GAAG,GAAIuwG,EAASvwG,OAAO,GAAG,GACzG,IAGAtiB,KAAKm0H,WAAW1kH,QAAQ,SAAUojH,GAC9B,GAAI5wH,KAAKm7B,IAAIy1F,EAASvwG,OAAO,GAAG,GAAIuwG,EAASvwG,OAAO,GAAG,GAAIuwG,EAASvwG,OAAO,GAAG,IAC1E4yG,EACAl1H,KAAKs0H,kBAAoB,EAAG,CAC5B,IAAIa,EAAc,CACd,CAACtC,EAASvwG,OAAO,GAAG,GAAIuwG,EAASvwG,OAAO,GAAG,IAC3C,CAACuwG,EAASvwG,OAAO,GAAG,GAAIuwG,EAASvwG,OAAO,GAAG,IAC3C,CAACuwG,EAASvwG,OAAO,GAAG,GAAIuwG,EAASvwG,OAAO,GAAG,KAE3C6yG,EAAY,GAAG,GAAKD,EAAcl1H,KAAKs0H,kBAAoB,IAC3Da,EAAY,GAAG,IAAMn1H,KAAKs0H,mBAE1Ba,EAAY,GAAG,GAAKD,EAAcl1H,KAAKs0H,kBAAoB,IAC3Da,EAAY,GAAG,IAAMn1H,KAAKs0H,mBAE1Ba,EAAY,GAAG,GAAKD,EAAcl1H,KAAKs0H,kBAAoB,IAC3Da,EAAY,GAAG,IAAMn1H,KAAKs0H,mBAK9B,IAAIl4F,EAAOn6B,KAAK27B,IAAIu3F,EAAY,GAAG,GAAIA,EAAY,GAAG,GAAIA,EAAY,GAAG,IAC9DlzH,KAAKm7B,IAAI+3F,EAAY,GAAG,GAAIA,EAAY,GAAG,GAAIA,EAAY,GAAG,IAC9D/4F,EAAOp8B,KAAKs0H,kBAAoB,IACvCzB,EAASvwG,OAAS6yG,EAE1B,CACJ,EAAErmH,KAAK9O,MACX,CACA8zH,EAAoB,CAAC,CACzB,CAyLA,OA9KAN,EAAcxuH,UAAUowH,aAAe,SAAU5uH,EAAGC,EAAG0E,EAAGkqH,EAAMC,EAAMC,GAClEv1H,KAAKm0H,WAAW7hH,KAAK,CACjBgQ,OAAQ,CAAC+yG,EAAMC,EAAMC,GACrBtjH,OAAQ,CAACzL,EAAGC,EAAG0E,IAEvB,EAiBAqoH,EAAcxuH,UAAUiwH,SAAW,SAAUzuH,EAAGC,EAAG0E,EAAGiB,EAAGipH,EAAMC,EAAMC,EAAMC,EAAMR,GAC7E,IAAIS,GAAmB,IAAA18E,gBAAe,CAACs8E,EAAMC,EAAMC,EAAMC,IACrDE,EAAkB11H,KAAKs0H,mBACrB,IAAA5yG,UAAS+zG,GAAoBz1H,KAAKs0H,kBAClC,KACFqB,EAA0C31H,KAAsB,kBAGhE41H,EAAS51H,KAAK4zH,YAAYryG,YAC1Bm0G,EAAkB,IAClBA,EAAkB,EAClBG,GAAmB,EACvB,GAAIb,EAAiB,EAAG,CACpB,GAAIh1H,KAAK6zH,YAAYxzF,YAAcrgC,KAAKu0H,kBAAmB,CACvD,IAAIuB,GAAmB,IAAA/8E,gBAAe,CAACvyC,EAAGC,EAAG0E,EAAGiB,IAEhDypH,GADsB,IAAAn0G,UAASo0G,GAAoB91H,KAAKu0H,kBArM/C,KAuMmCsB,CAChD,EACKD,GAAU51H,KAAK4zH,YAAYvzF,YAAcq1F,IAC1CG,EACIH,EA3MK,KA2MmCG,EAEpD,CACA,MAAKA,GAAoB71H,KAAKi0H,kBACtBxC,SAASgE,EAAiB,KAC1BhE,SAASgE,EAAiB,KAC1BhE,SAASgE,EAAiB,KAC1BhE,SAASgE,EAAiB,OACrB,IAAA94F,YAAW84F,EAAkBz1H,KAAKi0H,kBAL/C,CAWA,IAAI8B,EAAc,EAClB,KAAKF,GACIpE,SAAS4D,EAAK,KACd5D,SAAS4D,EAAK,KACd5D,SAAS6D,EAAK,KACd7D,SAAS6D,EAAK,KACd7D,SAAS8D,EAAK,KACd9D,SAAS8D,EAAK,KACd9D,SAAS+D,EAAK,KACd/D,SAAS+D,EAAK,KACf,GAAIR,EAAiB,EACjBa,GAAmB,OAUnB,GAAmB,IALnBE,GACMtE,SAAS4D,EAAK,KAAQ5D,SAAS4D,EAAK,IAAU,EAAJ,IACtC5D,SAAS6D,EAAK,KAAQ7D,SAAS6D,EAAK,IAAU,EAAJ,IAC1C7D,SAAS8D,EAAK,KAAQ9D,SAAS8D,EAAK,IAAU,EAAJ,IAC1C9D,SAAS+D,EAAK,KAAQ/D,SAAS+D,EAAK,IAAU,EAAJ,KAEjC,GAAfO,GACe,GAAfA,GACe,GAAfA,EACA,OAKhB,GAAIf,EAAiB,EAAG,CACpB,IAAKa,EAAkB,CACnB,IAAI7pH,EAAS,EAAExF,EAAE,GAAK2E,EAAE,IAAM,GAAI3E,EAAE,GAAK2E,EAAE,IAAM,GAC7C6qH,EAAYh2H,KAAKg0H,cAAchoH,GAC/B4T,OAAK,EAKLA,EAJAg2G,IACuB,QAAOP,EAAK,GAAIM,IACnC,QAAOJ,EAAK,GAAII,IAChB,GACmB,QAAOK,EAAU,GAAIL,IAGtCN,EAAK,GAAKE,EAAK,IAAM,EAAIS,EAAU,GAE7C,IAAIn2G,GAAMw1G,EAAK,GAAKE,EAAK,IAAM,EAAIS,EAAU,GAE7CH,EAD4Bj2G,EAAKA,EAAKC,EAAKA,EACA7f,KAAKk0H,sBACpD,CACA,GAAI2B,EAAkB,CAClB,GAAI5zH,KAAK2G,IAAIpC,EAAE,GAAK2E,EAAE,KAAOlJ,KAAK2G,IAAIpC,EAAE,GAAK2E,EAAE,IAAK,CAEhD,IAAI8qH,EAAK,EAAExvH,EAAE,GAAK0E,EAAE,IAAM,GAAI1E,EAAE,GAAK0E,EAAE,IAAM,GACzC+qH,EAAQl2H,KAAKg0H,cAAciC,GAC3BE,EAAK,EAAE/pH,EAAE,GAAK5F,EAAE,IAAM,GAAI4F,EAAE,GAAK5F,EAAE,IAAM,GACzC4vH,EAAQp2H,KAAKg0H,cAAcmC,GAC/Bn2H,KAAKi1H,SAASzuH,EAAGC,EAAGwvH,EAAIE,EAAId,EAAMC,EAAMY,EAAOE,EAAOpB,EAAiB,GACvEh1H,KAAKi1H,SAASkB,EAAIF,EAAI9qH,EAAGiB,EAAGgqH,EAAOF,EAAOX,EAAMC,EAAMR,EAAiB,EAC3E,KACK,CAED,IAAIqB,EAAK,EAAE7vH,EAAE,GAAKC,EAAE,IAAM,GAAID,EAAE,GAAKC,EAAE,IAAM,GACzC6vH,EAAQt2H,KAAKg0H,cAAcqC,GAC3BE,EAAK,EAAEprH,EAAE,GAAKiB,EAAE,IAAM,GAAIjB,EAAE,GAAKiB,EAAE,IAAM,GACzCoqH,EAAQx2H,KAAKg0H,cAAcuC,GAC/Bv2H,KAAKi1H,SAASzuH,EAAG6vH,EAAIE,EAAInqH,EAAGipH,EAAMiB,EAAOE,EAAOhB,EAAMR,EAAiB,GACvEh1H,KAAKi1H,SAASoB,EAAI5vH,EAAG0E,EAAGorH,EAAID,EAAOhB,EAAMC,EAAMiB,EAAOxB,EAAiB,EAC3E,CACA,MACJ,CACJ,CACA,GAAIY,EAAQ,CACR,IAAK51H,KAAKq0H,kBACN,OAEJr0H,KAAKo0H,iBAAkB,CAC3B,CAK2B,IAAR,GAAd2B,IACD/1H,KAAKo1H,aAAa5uH,EAAG2E,EAAGiB,EAAGipH,EAAME,EAAMC,GAEhB,IAAR,GAAdO,IACD/1H,KAAKo1H,aAAa5uH,EAAG2E,EAAG1E,EAAG4uH,EAAME,EAAMD,GAEvCS,IAE2B,IAAR,GAAdA,IACD/1H,KAAKo1H,aAAa3uH,EAAG2F,EAAG5F,EAAG8uH,EAAME,EAAMH,GAEhB,IAAR,EAAdU,IACD/1H,KAAKo1H,aAAa3uH,EAAG2F,EAAGjB,EAAGmqH,EAAME,EAAMD,GA7F/C,CAgGJ,EAMA/B,EAAcxuH,UAAUyxH,sBAAwB,WAC5C,IAAIr6G,GAAS,IAAAs9B,eAOb,OANA15C,KAAKm0H,WAAW1kH,SAAQ,SAAUojH,EAAUroH,EAAGqL,GAC3C,IAAI+F,EAAMi3G,EAASvwG,QACnB,IAAA02B,kBAAiB58B,EAAQR,EAAI,KAC7B,IAAAo9B,kBAAiB58B,EAAQR,EAAI,KAC7B,IAAAo9B,kBAAiB58B,EAAQR,EAAI,GACjC,IACOQ,CACX,EAIAo3G,EAAcxuH,UAAU4tH,aAAe,WACnC,OAAO5yH,KAAKm0H,UAChB,EACOX,CACX,CAzUkC,yDC1B3B,IAAIkD,EAAkB,GAMlBC,GAA6B,0FCHjC,SAAShjH,EAAQgN,GACpB,YAAiBnK,IAAbmK,EACO,OAGP,CAER,CAKO,SAAS0c,EAAK1c,GACjB,YAAiBnK,IAAbmK,EACOA,OAGP,CAER,CAKO,SAASi2G,EAAc90H,GAC1B,IAAIk/E,EAAS,EAAI/+E,KAAKmlB,GAAMtlB,EAC5B,OAAO,SAMG6e,EAAUqc,GAChB,OAAIA,EACOrc,OAEMnK,IAAbmK,EACAA,EAAW1e,KAAKC,MAAMye,EAAWqgE,EAAQ,IAAOA,OAIhD,CAEP,CACL,CAKO,SAAS61C,EAAiBC,GAC7B,IAAIz8E,EAAYy8E,IAAiB,QAAU,GAC3C,OAAO,SAMGn2G,EAAUqc,GAChB,OAAIA,EACOrc,OAEMnK,IAAbmK,EACI1e,KAAK2G,IAAI+X,IAAa05B,EACf,EAGA15B,OAIX,CAEP,CACL,8BCrEO,SAASs4B,EAAOv4B,EAAM9b,EAAK8/B,GAM9B,YALiBluB,IAAbkuB,IACAA,EAAW,CAAC,EAAG,IAEnBA,EAAS,GAAKhkB,EAAK,GAAK,EAAI9b,EAC5B8/B,EAAS,GAAKhkB,EAAK,GAAK,EAAI9b,EACrB8/B,CACX,CAMO,SAASqyF,EAAQr2G,GACpB,OAAOA,EAAK,GAAK,GAAKA,EAAK,GAAK,CACpC,CAQO,SAAS8wB,EAAM9wB,EAAMyc,EAAOuH,GAM/B,YALiBluB,IAAbkuB,IACAA,EAAW,CAAC,EAAG,IAEnBA,EAAS,GAAMhkB,EAAK,GAAKyc,EAAQ,GAAO,EACxCuH,EAAS,GAAMhkB,EAAK,GAAKyc,EAAQ,GAAO,EACjCuH,CACX,CAUO,SAASsyF,EAAOt2G,EAAMgkB,GACzB,OAAIvjC,MAAMkP,QAAQqQ,GACPA,QAGUlK,IAAbkuB,EACAA,EAAW,CAAChkB,EAAMA,IAGlBgkB,EAAS,GAAKhkB,EACdgkB,EAAS,GAAKhkB,GAEXgkB,EAEf,2HCjEQtwB,gFADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAcG,SAASyiH,EAAQ/4G,GACpB,IAGI1T,EAAG24E,EAHH5pD,EAAIrb,EAAU,GACdg5G,EAAS,IAAI/1H,MAAMo4B,GACnBygF,EAAO,GAAMzgF,EAAI,EAErB,IAAK/uB,EAAI,EAAGA,EAAI+uB,IAAK/uB,EAEjB24E,EAAW,GACPjlE,EAAU,GAAK87F,IACf72B,GAAY,GAEZjlE,EAAU,GAAK87F,IACf72B,GAAY,GAEhB+zC,EAAO1sH,GAAKu4C,OAAOo0E,aAAah0C,GAChC62B,IAAS,EAEb,OAAOkd,EAAO3kH,KAAK,GACvB,CA0OA,QAtK8B,SAAUkC,GAKpC,SAAS2iH,EAAS1oH,GACd,IAAI9N,EAAQZ,KACRq3H,OAA0B7gH,IAAlB9H,EAAQ2oH,OAAsB3oH,EAAQ2oH,MA8ClD,OA7CAz2H,EAAQ6T,EAAOzH,KAAKhN,KAAM,CACtB8rC,UAAWp9B,EAAQo9B,UACnBvvB,YAAa,YACb+6G,eAAgB5oH,EAAQ4oH,eACxBC,QAAQ,EACRh+G,YAAY,IAAAtU,KAAc,aAC1BuyH,2BAA4B9oH,EAAQ8oH,2BACpC36G,MAAO,YACPsB,iBAAkBzP,EAAQyP,iBAC1B8hF,eAAgBo3B,EAAQ,EAAI,EAC5B1jF,WAAyBn9B,IAAlB9H,EAAQilC,OAAsBjlC,EAAQilC,MAC7Cpc,WAAY7oB,EAAQ6oB,cAClBv3B,MAKAy3H,OAASJ,EAKfz2H,EAAM82H,cAA+BlhH,IAApB9H,EAAQipH,QAAwBjpH,EAAQipH,QAAU,QAKnE/2H,EAAMg3H,cAA+BphH,IAApB9H,EAAQqxB,QAAwBrxB,EAAQqxB,SAAW,EAKpEn/B,EAAMi3H,QAAUnpH,EAAQie,IAKxB/rB,EAAMk3H,YAAcppH,EAAQqpH,WChJ7B,SAAeC,EAAKtsH,EAAUusH,EAAaC,GAC9C,IAAIC,EAAStrH,SAASW,cAAc,UAChCmf,EAAM,QAAS,QAAOjhB,GAC1B,SAAS0sH,WACExrH,OAAO+f,GACdwrG,EAAO/kH,WAAWF,YAAYilH,EAClC,CACAA,EAAOE,OAAQ,EACfF,EAAOv8G,IACHo8G,IAC0B,GAArBA,EAAItlH,QAAQ,KAAa,IAAM,KADpCslH,SAIIrrG,EACR,IAAI2rG,EAAQz4H,YAAW,WACnBu4H,GAIJ,GAAG,KACHxrH,OAAO+f,GAAO,SAAUxa,GACpB/R,aAAak4H,GACbF,IACA1sH,EAASyG,EACb,EACAtF,SAASM,qBAAqB,QAAQ,GAAGQ,YAAYwqH,EACzD,CD6HQ,CANU,yDACNv3H,EAAMk3H,YACN,iDACAl3H,EAAMi3H,QACN,MACAj3H,EAAM82H,SACQ92H,EAAM23H,8BAA8BzpH,KAAKlO,IACpDA,CACX,CA8GA,OAnKAyT,EAAU+iH,EAAU3iH,GA4DpB2iH,EAASpyH,UAAUwzH,UAAY,WAC3B,OAAOx4H,KAAK63H,OAChB,EAOAT,EAASpyH,UAAUyzH,cAAgB,WAC/B,OAAOz4H,KAAK83H,WAChB,EAIAV,EAASpyH,UAAUuzH,8BAAgC,SAAUG,GACzD,GAA2B,KAAvBA,EAASC,YACqB,MAA9BD,EAASE,mBAC4B,oBAArCF,EAASG,0BACuB,GAAhCH,EAASI,aAAa11H,QACuB,GAA7Cs1H,EAASI,aAAa,GAAGC,UAAU31H,OAJvC,CAQA,IAAI41H,EAAWN,EAASI,aAAa,GAAGC,UAAU,GAC9Ch5F,GAA4B,GAAlB//B,KAAK43H,SAAiBoB,EAASC,QAAUj5H,KAAK43H,SACxDn8B,EAAmBz7F,KAAK6Z,gBACxBuC,GAAS,QAAqBq/E,GAC9BjqD,EAAQxxC,KAAKy3H,OAAS,EAAI,EAC1ByB,EAAWF,EAASG,YAAcH,EAASI,YACzCJ,EAASG,WAAa3nF,EACtB,CAACwnF,EAASG,WAAa3nF,EAAOwnF,EAASI,YAAc5nF,GACvDquD,GAAW,QAAU,CACrBzjF,OAAQA,EACR0jB,QAASk5F,EAASK,QAClBt5F,QAASA,EACTm5F,SAAUA,IAEdl5H,KAAK6/F,SAAWA,EAChB,IAAI83B,EAAU33H,KAAK03H,SACfL,EAAQr3H,KAAKy3H,OA4BjB,GA3BAz3H,KAAKs5H,iBAAkB,QAA2BN,EAASO,mBAAmBrrH,KAAI,SAAUsrH,GAExF,IAAIC,EAAmB,CAAC,EAAG,EAAG,GAC1BC,EAAWV,EAASU,SACnBxsH,QAAQ,cAAessH,GACvBtsH,QAAQ,YAAayqH,GAC1B,OAAO,SAOGz5G,EAAW5B,EAAY/C,GAC7B,GAAK2E,EAGA,EACD,QAAeA,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAIu7G,GACzD,IAAIzB,EAAM0B,EAIV,OAHIrC,IACAW,GAAO,yBAEJA,EAAI9qH,QAAQ,YAAa+pH,EAAQwC,GAC5C,CACH,CACL,KACIT,EAASW,iBAAkB,CAC3B,IAAIzd,GAAc,IAAApiG,8BAA4B,IAAA7U,KAAc,aAAcjF,KAAK6Z,iBAC/E7Z,KAAK45H,gBAAgB,SAAU35G,GAC3B,IAAI2F,EAAe,GACfrF,EAAYN,EAAWM,UACvBs/E,EAAW7/F,KAAK65H,cAChBtgG,EAAIsmE,EAASE,kBAAkBx/E,EAAUlE,WAAYrc,KAAKggG,YAE1Dn0F,EADYg0F,EAAS8B,yBAAyBphF,EAAUvU,OAAQutB,GAC/C,GAsBrB,OArBAy/F,EAASW,iBAAiBzrH,KAAI,SAAU4rH,GAGpC,IAFA,IAAIC,GAAe,EACfC,EAAgBF,EAAgBE,cAC3BxvH,EAAI,EAAGiL,EAAKukH,EAAc52H,OAAQoH,EAAIiL,IAAMjL,EAAG,CACpD,IAAIyvH,EAAeD,EAAcxvH,GACjC,GAAIqB,GAAQouH,EAAaZ,SACrBxtH,GAAQouH,EAAahB,QAAS,CAC9B,IAAItmE,EAAOsnE,EAAatnE,KACpBunE,EAAiB,CAACvnE,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAClDwnE,GAAW,IAAAp/G,gBAAem/G,EAAgBhe,GAC9C,IAAI,IAAAv/E,YAAWw9F,EAAUl6G,EAAW7D,QAAS,CACzC29G,GAAe,EACf,KACJ,CACJ,CACJ,CACIA,GACAn0G,EAAatT,KAAKwnH,EAAgBlxG,YAE1C,IACAhD,EAAatT,KA3NP,gIA4NCsT,CACX,EAAE9W,KAAK9O,MACX,CACAA,KAAK63B,SAAS,UA9Ed,MAFI73B,KAAK63B,SAAS,UAiFtB,EACOu/F,CACX,CArK6B,CAqK3BgD,EAAA,kEEtRMhmH,sGADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GA8KJ,QAzJiC,SAAUC,GAYvC,SAAS4lH,EAAYn6D,EAAYmxD,EAAYM,EAAc9yF,EAAkBviB,EAAYg+G,EAAkBvI,GACvG,IAAInxH,EAAQZ,KACRyzH,EAAkBvzD,EAAW1iD,YAC7B+8G,EAAkBlJ,EAAW7zG,YAC7Bg9G,EAAsBD,GACpB,IAAA5+E,iBAAgBg2E,EAAc4I,GAC9B5I,EACFhzF,GAAe,IAAAgG,WAAU61F,GACzB57F,GAAmB,QAA0BshC,EAAYmxD,EAAY1yF,EAAcE,GACnF47F,EAAyB,IACzB7I,EAAgB,IAAI4B,EAAA,EAActzD,EAAYmxD,EAAYmJ,EAAqB/G,EAAiB70F,EAAmB67F,EAAwB57F,GAE3I67F,EAAcJ,EADC1I,EAAc6E,wBACgB73F,EAAkBtiB,GAC/DO,EAAQ69G,EAAcziD,EAAA,OAAkBA,EAAA,QACxC0iD,EAAmBD,EAAcA,EAAYj9G,gBAAkB,EAoDnE,OAnDA7c,EAAQ6T,EAAOzH,KAAKhN,KAAM2xH,EAAc9yF,EAAkB87F,EAAkB99G,IAAU7c,MAKhF6zH,YAAcxC,EAKpBzwH,EAAMqzH,iBAAmBR,EAKzB7yH,EAAMg6H,eAAiBhJ,EAKvBhxH,EAAM2+B,kBAAoBV,EAK1Bj+B,EAAMi6H,cAAgBlJ,EAKtB/wH,EAAMk6H,aAAeJ,EAKrB95H,EAAMm6H,kBAAoBJ,EAK1B/5H,EAAMo6H,gBAAkBjJ,EAKxBnxH,EAAMu3E,QAAU,KAKhBv3E,EAAMq6H,mBAAqB,KACpBr6H,CACX,CAwEA,OAtJAyT,EAAUgmH,EAAa5lH,GAkFvB4lH,EAAYr1H,UAAUgS,gBAAkB,WAChChX,KAAK6c,OAASo7D,EAAA,WACdj4E,KAAKk7H,kBAETzmH,EAAOzP,UAAUgS,gBAAgBhK,KAAKhN,KAC1C,EAIAq6H,EAAYr1H,UAAU+X,SAAW,WAC7B,OAAO/c,KAAKm4E,OAChB,EAIAkiD,EAAYr1H,UAAU6U,cAAgB,WAClC,OAAO7Z,KAAK6zH,WAChB,EAIAwG,EAAYr1H,UAAUm2H,WAAa,WAC/B,IAAIn3G,EAAchkB,KAAK86H,aAAan9G,WACpC,GAAIqG,GAAei0D,EAAA,SAAmB,CAClC,IAAI5sE,GAAQ,IAAAqW,UAAS1hB,KAAK66H,eAAiB76H,KAAKu/B,kBAC5CtuB,GAAS,IAAAkM,WAAUnd,KAAK66H,eAAiB76H,KAAKu/B,kBAClDv/B,KAAKm4E,SAAU,QAAkB9sE,EAAO4F,EAAQjR,KAAK+6H,kBAAmB/6H,KAAK86H,aAAap9G,gBAAiB1d,KAAKi0H,iBAAkBj0H,KAAKu/B,kBAAmBv/B,KAAK66H,cAAe76H,KAAK46H,eAAgB,CAC/L,CACIx+G,OAAQpc,KAAK86H,aAAat9G,YAC1BhC,MAAOxb,KAAK86H,aAAa/9G,aAE9B,OAAGvG,EAAWxW,KAAKg7H,gBAC1B,CACAh7H,KAAK6c,MAAQmH,EACbhkB,KAAK2Y,SACT,EAIA0hH,EAAYr1H,UAAUoY,KAAO,WACzB,GAAIpd,KAAK6c,OAASo7D,EAAA,OAAiB,CAC/Bj4E,KAAK6c,MAAQo7D,EAAA,UACbj4E,KAAK2Y,UACL,IAAIqL,EAAchkB,KAAK86H,aAAan9G,WAChCqG,GAAei0D,EAAA,UAAqBj0D,GAAei0D,EAAA,QACnDj4E,KAAKm7H,cAGLn7H,KAAKi7H,oBAAqB,QAAOj7H,KAAK86H,aAAc5mG,EAAA,UAAkB,SAAUryB,GAC5E,IAAImiB,EAAchkB,KAAK86H,aAAan9G,WAChCqG,GAAei0D,EAAA,UACfj0D,GAAei0D,EAAA,UACfj4E,KAAKk7H,kBACLl7H,KAAKm7H,aAEb,GAAGn7H,MACHA,KAAK86H,aAAa19G,OAE1B,CACJ,EAIAi9G,EAAYr1H,UAAUk2H,gBAAkB,YACpC,QACkDl7H,KAAuB,oBACzEA,KAAKi7H,mBAAqB,IAC9B,EACOZ,CACX,CAxJgC,CAwJ9B/8G,EAAA,+CCxLE,EAAwC,WACxC,IAAIlJ,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GAsDxC4mH,EAAkC,SAAU3mH,GAM5C,SAAS2mH,EAAiBhqH,EAAMoK,GAC5B,IAAI5a,EAAQ6T,EAAOzH,KAAKhN,KAAMoR,IAASpR,KAOvC,OADAY,EAAM4a,MAAQA,EACP5a,CACX,CACA,OAfA,EAAUw6H,EAAkB3mH,GAerB2mH,CACX,CAjBqC,CAiBnCx5C,EAAA,IA8JK,SAASy5C,EAAyB7/G,EAAOI,GACMJ,EAAMuB,WAAYnB,IAAMA,CAC9E,CACA,QA9IiC,SAAUnH,GAKvC,SAAS6mH,EAAY5sH,GACjB,IAAI9N,EAAQ6T,EAAOzH,KAAKhN,KAAM,CAC1B4lB,aAAclX,EAAQkX,aACtBrM,WAAY7K,EAAQ6K,WACpBsD,MAAOnO,EAAQmO,SACb7c,KAuBN,OAlBAY,EAAMkhC,kBACsBtrB,IAAxB9H,EAAQ4xB,YAA4B5xB,EAAQ4xB,YAAc,KAK9D1/B,EAAM26H,kBAAoB,KAK1B36H,EAAM46H,qBAAuB,EAK7B56H,EAAMo6H,iBACyB,IAA3BtsH,EAAQ4oH,eAA2B,SAA2B9gH,EAC3D5V,CACX,CAiGA,OAlIA,EAAU06H,EAAa7mH,GAqCvB6mH,EAAYt2H,UAAU4gC,eAAiB,WACnC,OAAO5lC,KAAK8hC,YAChB,EAIAw5F,EAAYt2H,UAAU23F,kBAAoB,WACtC,OAAO38F,KAAKg7H,eAChB,EAMAM,EAAYt2H,UAAUy2H,sBAAwB,SAAUp/G,GACpD,GAAIrc,KAAK8hC,aAAc,CACnB,IAAIs0C,GAAM,QAAkBp2E,KAAK8hC,aAAczlB,EAAY,GAC3DA,EAAarc,KAAK8hC,aAAas0C,EACnC,CACA,OAAO/5D,CACX,EAQAi/G,EAAYt2H,UAAU+X,SAAW,SAAUX,EAAQC,EAAYC,EAAY/C,GACvE,IAAIkiF,EAAmBz7F,KAAK6Z,gBAC5B,GAAK,KACA4hF,GACAliF,KACD,IAAA6kC,YAAWq9C,EAAkBliF,GAM5B,CACD,GAAIvZ,KAAKu7H,kBAAmB,CACxB,GAAIv7H,KAAKw7H,sBAAwBx7H,KAAK2tB,gBAClC,IAAAywB,YAAWp+C,KAAKu7H,kBAAkB1hH,gBAAiBN,IACnDvZ,KAAKu7H,kBAAkB79G,iBAAmBrB,IAC1C,IAAAqa,QAAO12B,KAAKu7H,kBAAkB/9G,YAAapB,GAC3C,OAAOpc,KAAKu7H,kBAEhBv7H,KAAKu7H,kBAAkBxkH,UACvB/W,KAAKu7H,kBAAoB,IAC7B,CAKA,OAJAv7H,KAAKu7H,kBAAoB,IAAI,EAAY9/B,EAAkBliF,EAAY6C,EAAQC,EAAYC,EAAY,SAAUF,EAAQC,EAAYC,GACjI,OAAOtc,KAAK07H,iBAAiBt/G,EAAQC,EAAYC,EAAYm/E,EACjE,EAAE3sF,KAAK9O,MAAOA,KAAKg7H,iBACnBh7H,KAAKw7H,qBAAuBx7H,KAAK2tB,cAC1B3tB,KAAKu7H,iBAChB,CAlBI,OAHI9/B,IACAliF,EAAakiF,GAEVz7F,KAAK07H,iBAAiBt/G,EAAQC,EAAYC,EAAY/C,EAmBrE,EAUA+hH,EAAYt2H,UAAU02H,iBAAmB,SAAUt/G,EAAQC,EAAYC,EAAY/C,GAC/E,OAAO,SACX,EAMA+hH,EAAYt2H,UAAU22H,kBAAoB,SAAUz1G,GAChD,IAAI1K,EAAsD0K,EAAY,OACtE,OAAQ1K,EAAMmC,YACV,KAAKs6D,EAAA,UACDj4E,KAAKmzB,SAAU,EACfnzB,KAAKmR,cAAc,IAAIiqH,EA5KnB,iBA4KyE5/G,IAC7E,MACJ,KAAKy8D,EAAA,SACDj4E,KAAKmzB,SAAU,EACfnzB,KAAKmR,cAAc,IAAIiqH,EA1KrB,eA0KyE5/G,IAC3E,MACJ,KAAKy8D,EAAA,QACDj4E,KAAKmzB,SAAU,EACfnzB,KAAKmR,cAAc,IAAIiqH,EAxKnB,iBAwKyE5/G,IAKzF,EACO8/G,CACX,CApIgC,CAoI9BM,EAAA,mEC3NE,EAAwC,WACxC,IAAIxnH,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GA6BxCqnH,EAA4B,CAAC,IAAK,KA0WtC,QA1U8B,SAAUpnH,GAKpC,SAASqnH,EAASzmH,GACd,IAAIzU,EAAQZ,KACR0O,EAAU2G,GAA4B,CAAC,EAmE3C,OAlEAzU,EAAQ6T,EAAOzH,KAAKhN,KAAM,CACtB4lB,aAAclX,EAAQkX,aACtB0xG,eAAgB5oH,EAAQ4oH,eACxB/9G,WAAY7K,EAAQ6K,WACpB+mB,YAAa5xB,EAAQ4xB,eACnBtgC,MAKAoe,kBACsB5H,IAAxB9H,EAAQ6N,YAA4B7N,EAAQ6N,YAAc,KAK9D3b,EAAMw8E,KAAO1uE,EAAQspH,IAKrBp3H,EAAMkc,wBAC4BtG,IAA9B9H,EAAQ8N,kBACF9N,EAAQ8N,kBACR6+G,EAKVz6H,EAAMm7H,QAAUrtH,EAAQurD,QAAU,CAAC,EAKnCr5D,EAAMo7H,MAAO,EACbp7H,EAAMq7H,aAKNr7H,EAAMs7H,YAA6ExtH,EAAkB,WAKrG9N,EAAM62H,YAA2BjhH,IAAlB9H,EAAQ2oH,OAAsB3oH,EAAQ2oH,MAKrDz2H,EAAM8b,OAAS,KAKf9b,EAAMu7H,WAAa,CAAC,EAAG,GAKvBv7H,EAAMy6G,kBAAoB,EAK1Bz6G,EAAMw7H,YAA2B5lH,IAAlB9H,EAAQyuB,MAAsBzuB,EAAQyuB,MAAQ,IACtDv8B,CACX,CA6PA,OAvUA,EAAUk7H,EAAUrnH,GAyFpBqnH,EAAS92H,UAAUq3H,kBAAoB,SAAUpwH,EAAYoQ,EAAY9C,EAAY0gD,GACjF,QAAkBzjD,IAAdxW,KAAKo9E,KAAT,CAGA,IAAIk/C,GAAgB,IAAAr3H,KAAcsU,GAC9BgjH,EAAsBv8H,KAAK6Z,gBAC3B0iH,GAAuBA,IAAwBD,IAC/CjgH,GAAa,QAA0BkgH,EAAqBD,EAAerwH,EAAYoQ,GACvFpQ,GAAa,IAAAsb,WAAUtb,EAAYqwH,EAAeC,IAEtD,IAAIngH,GAAS,IAAAma,mBAAkBtqB,EAAYoQ,EAAY,EAAGw/G,GACtDW,EAAa,CACb,QAAW,MACX,QAAW,IACX,QAAW,iBACX,OAAU,YACV,aAAe,EACf,aAAgBx8H,KAAK+7H,QAAgB,SAEzC,QAAOS,EAAYx8H,KAAK+7H,QAAS9hE,GACjC,IAAIj4D,EAAIC,KAAKC,OAAO+J,EAAW,GAAKmQ,EAAO,IAAMC,GAC7Cta,EAAIE,KAAKC,OAAOka,EAAO,GAAKnQ,EAAW,IAAMoQ,GAGjD,OAFAmgH,EAAWx8H,KAAKg8H,KAAO,IAAM,KAAOh6H,EACpCw6H,EAAWx8H,KAAKg8H,KAAO,IAAM,KAAOj6H,EAC7B/B,KAAKy8H,eAAergH,EAAQy/G,EAA2B,EAAGU,GAAuBD,EAAeE,EArBvG,CAsBJ,EAeAV,EAAS92H,UAAU03H,aAAe,SAAUrgH,EAAY49C,GACpD,QAAkBzjD,IAAdxW,KAAKo9E,KAAT,CAGA,IAAIo/C,EAAa,CACb,QAAW,MACX,QAAW,IACX,QAAW,mBACX,OAAU,aAEd,QAAehmH,IAAXyjD,QAA4CzjD,IAApByjD,EAAc,MAAiB,CACvD,IAAIrrC,EAAS5uB,KAAK+7H,QAAQY,OAE1B,GADqBx7H,MAAMkP,QAAQue,IAA6B,IAAlBA,EAAOxrB,OAEjD,OAEJo5H,EAAkB,MAAI5tG,CAC1B,CACA,QAAmBpY,IAAf6F,EAA0B,CAC1B,IAAI81B,EAAMnyC,KAAK6Z,gBACT7Z,KAAK6Z,gBAAgBgnB,mBACrB,EAGN27F,EAAkB,MAAIngH,EAAa81B,EADd,OADX,KAAO,IAGrB,CAEA,OADA,QAAOqqF,EAAYviE,IACZ,OAAoCj6D,KAAS,KAAGw8H,EAxBvD,CAyBJ,EAOAV,EAAS92H,UAAU43H,UAAY,WAC3B,OAAO58H,KAAK+7H,OAChB,EAQAD,EAAS92H,UAAU02H,iBAAmB,SAAUt/G,EAAQC,EAAYC,EAAY/C,GAC5E,QAAkB/C,IAAdxW,KAAKo9E,KACL,OAAO,KAEX/gE,EAAarc,KAAKy7H,sBAAsBp/G,GACtB,GAAdC,GAAqBtc,KAAKy3H,aAA+BjhH,IAArBxW,KAAKk8H,cACzC5/G,EAAa,GAEjB,IAAIs/E,EAAkBv/E,EAAaC,EAC/BtQ,GAAS,IAAA24B,WAAUvoB,GACnB6gB,EAAYh7B,KAAKk/B,MAAK,IAAAzf,UAAStF,GAAUw/E,GACzC1+D,EAAaj7B,KAAKk/B,MAAK,IAAAhkB,WAAUf,GAAUw/E,GAC3CxI,GAAa,IAAA78D,mBAAkBvqB,EAAQ4vF,EAAiB,EAAG,CAC3D3+D,EACAC,IAEA2/F,EAAe56H,KAAKk/B,KAAMnhC,KAAKo8H,QAAS,IAAA16G,UAAStF,GAAWw/E,GAC5DkhC,EAAgB76H,KAAKk/B,KAAMnhC,KAAKo8H,QAAS,IAAAj/G,WAAUf,GAAWw/E,GAC9DmhC,GAAgB,IAAAxmG,mBAAkBvqB,EAAQ4vF,EAAiB,EAAG,CAC9DihC,EACAC,IAEAthH,EAAQxb,KAAK0c,OACjB,GAAIlB,GACAxb,KAAKq7G,mBAAqBr7G,KAAK2tB,eAC/BnS,EAAMkC,iBAAmBrB,GACzBb,EAAMiC,iBAAmBnB,IACzB,IAAA+8B,gBAAe79B,EAAMgC,YAAa41E,GAClC,OAAO53E,EAEX,IAAIy+C,EAAS,CACT,QAAW,MACX,QAAW,IACX,QAAW,SACX,OAAU,YACV,aAAe,IAEnB,QAAOA,EAAQj6D,KAAK+7H,SACpB/7H,KAAKm8H,WAAW,GAAKl6H,KAAKE,OAAM,IAAAuf,UAASq7G,GAAiBnhC,GAC1D57F,KAAKm8H,WAAW,GAAKl6H,KAAKE,OAAM,IAAAgb,WAAU4/G,GAAiBnhC,GAC3D,IAAIo8B,EAAMh4H,KAAKy8H,eAAeM,EAAe/8H,KAAKm8H,WAAY7/G,EAAY/C,EAAY0gD,GAItF,OAHAj6D,KAAK0c,OAAS,IAAI,IAAaqgH,EAAe1gH,EAAYC,EAAY07G,EAAKh4H,KAAKoe,aAAcpe,KAAK8c,oBACnG9c,KAAKq7G,kBAAoBr7G,KAAK2tB,cAC9B3tB,KAAK0c,OAAOnL,iBAAiB2iB,EAAA,SAAkBl0B,KAAK27H,kBAAkB7sH,KAAK9O,OACpEA,KAAK0c,MAChB,EAMAo/G,EAAS92H,UAAUg4H,qBAAuB,WACtC,OAAOh9H,KAAK8c,kBAChB,EAUAg/G,EAAS92H,UAAUy3H,eAAiB,SAAUrgH,EAAQsE,EAAMpE,EAAY/C,EAAY0gD,GAMhF,IALA,YAAqBzjD,IAAdxW,KAAKo9E,KAAoB,GAChCnjB,EAAOj6D,KAAKg8H,KAAO,MAAQ,OAASziH,EAAW+oG,UACzC,WAAYtiH,KAAK+7H,UACnB9hE,EAAe,OAAI,IAEL,GAAd39C,EACA,OAAQtc,KAAKk8H,aACT,KAAKe,EAAA,YACD,IAAItsF,EAAO,GAAKr0B,EAAa,GAAO,EAChC,mBAAoB29C,EACpBA,EAAuB,gBAAK,QAAUtpB,EAGtCspB,EAAuB,eAAI,OAAStpB,EAExC,MACJ,KAAKssF,EAAA,YACDhjE,EAAuB,eAAI,GAAK39C,EAChC,MACJ,KAAK2gH,EAAA,kBACL,KAAKA,EAAA,OACDhjE,EAAY,IAAI,GAAK39C,EACrB,MACJ,SACI,QAAO,EAAO,GAI1B29C,EAAc,MAAIv5C,EAAK,GACvBu5C,EAAe,OAAIv5C,EAAK,GACxB,IACIiyC,EADA/I,EAAkBrwC,EAAWuwC,qBASjC,OANI6I,EADA3yD,KAAKg8H,MAAwC,MAAhCpyE,EAAgB78C,OAAO,EAAG,GAChC,CAACqP,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IAGzCA,EAEX69C,EAAa,KAAItH,EAAKpgD,KAAK,MACpB,OAAoCvS,KAAS,KAAGi6D,EAC3D,EAMA6hE,EAAS92H,UAAUk4H,OAAS,WACxB,OAAOl9H,KAAKo9E,IAChB,EAMA0+C,EAAS92H,UAAUm4H,qBAAuB,SAAU3gH,GAChDxc,KAAK0c,OAAS,KACd1c,KAAK8c,mBAAqBN,EAC1Bxc,KAAK2Y,SACT,EAMAmjH,EAAS92H,UAAUo4H,OAAS,SAAUpF,GAC9BA,GAAOh4H,KAAKo9E,OACZp9E,KAAKo9E,KAAO46C,EACZh4H,KAAK0c,OAAS,KACd1c,KAAK2Y,UAEb,EAMAmjH,EAAS92H,UAAUq4H,aAAe,SAAUpjE,IACxC,QAAOj6D,KAAK+7H,QAAS9hE,GACrBj6D,KAAKi8H,aACLj8H,KAAK0c,OAAS,KACd1c,KAAK2Y,SACT,EAIAmjH,EAAS92H,UAAUi3H,WAAa,WAC5B,IAAI7oE,EAAUpzD,KAAK+7H,QAAiB,SAAK,IACzC/7H,KAAKg8H,MAAO,OAAgB5oE,EAAS,QAAU,CACnD,EACO0oE,CACX,CAzU6B,CAyU3B,oFCrYM1nH,YADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAUO8oH,EAAc,2GAkEzB,QApCyB,SAAU7oH,GAK/B,SAAS8oH,EAAIloH,GACT,IAEIuQ,EADAlX,EAAU2G,GAAe,CAAC,EAG1BuQ,OADyBpP,IAAzB9H,EAAQkX,aACOlX,EAAQkX,aAGR,CAAC03G,GAEpB,IAAI/gH,OAAsC/F,IAAxB9H,EAAQ6N,YAA4B7N,EAAQ6N,YAAc,YACxEy7G,OAAsBxhH,IAAhB9H,EAAQspH,IACZtpH,EAAQspH,IACR,uDAcN,OAbQvjH,EAAOzH,KAAKhN,KAAM,CACtB4lB,aAAcA,EACdkmB,UAAWp9B,EAAQo9B,UACnBvvB,YAAaA,EACb+6G,eAAgB5oH,EAAQ4oH,eACxBC,YAA2B/gH,IAAnB9H,EAAQ6oH,QAAuB7oH,EAAQ6oH,OAC/Cx3F,aAA6BvpB,IAApB9H,EAAQqxB,QAAwBrxB,EAAQqxB,QAAU,GAC3Dy3F,2BAA4B9oH,EAAQ8oH,2BACpCr5G,iBAAkBzP,EAAQyP,iBAC1B65G,IAAKA,EACLrkF,MAAOjlC,EAAQilC,MACf6pF,yBAAyB,KACvBx9H,IAEV,CACA,OAjCAqU,EAAUkpH,EAAK9oH,GAiCR8oH,CACX,CAnCwB,CAmCtB,6DCxFMnpH,0CADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAwKJ,SAASipH,EAAkBC,GACvB,OAAKA,EAGDv8H,MAAMkP,QAAQqtH,GACP,SAAUz9G,GACb,OAAOy9G,CACX,EAE2B,mBAApBA,EACAA,EAEJ,SAAUz9G,GACb,MAAO,CAACy9G,EACZ,EAZW,IAaf,CACA,QA7I4B,SAAUjpH,GAKlC,SAASmnH,EAAOltH,GACZ,IAAI9N,EAAQ6T,EAAOzH,KAAKhN,OAASA,KAoCjC,OA/BAY,EAAMu+B,aAAc,IAAAl6B,KAAcyJ,EAAQ6K,YAK1C3Y,EAAM+8H,cAAgBF,EAAkB/uH,EAAQkX,cAKhDhlB,EAAMg9H,8BACkCpnH,IAApC9H,EAAQ8uH,yBACF9uH,EAAQ8uH,wBAOlB58H,EAAMuyB,SAAU,EAKhBvyB,EAAM04F,YACgB9iF,IAAlB9H,EAAQmO,MAAsBnO,EAAQmO,MAAQ,UAKlDjc,EAAMi9H,YAA2BrnH,IAAlB9H,EAAQilC,OAAsBjlC,EAAQilC,MAC9C/yC,CACX,CA2EA,OArHAyT,EAAUunH,EAAQnnH,GA+ClBmnH,EAAO52H,UAAU2gB,gBAAkB,WAC/B,OAAO3lB,KAAK29H,aAChB,EAIA/B,EAAO52H,UAAU6gB,2BAA6B,WAC1C,OAAO7lB,KAAK49H,wBAChB,EAMAhC,EAAO52H,UAAU6U,cAAgB,WAC7B,OAAO7Z,KAAKm/B,WAChB,EAKAy8F,EAAO52H,UAAU4gC,eAAiB,WAC9B,OAAO,SACX,EAMAg2F,EAAO52H,UAAU2Y,SAAW,WACxB,OAAO3d,KAAKs5F,MAChB,EAIAsiC,EAAO52H,UAAUyd,SAAW,WACxB,OAAOziB,KAAK69H,MAChB,EAIAjC,EAAO52H,UAAU23F,kBAAoB,WAErC,EAKAi/B,EAAO52H,UAAU84H,QAAU,WACvB99H,KAAK2Y,SACT,EAQAijH,EAAO52H,UAAU40H,gBAAkB,SAAUh0G,GACzC5lB,KAAK29H,cAAgBF,EAAkB73G,GACvC5lB,KAAK2Y,SACT,EAKAijH,EAAO52H,UAAU6yB,SAAW,SAAUhb,GAClC7c,KAAKs5F,OAASz8E,EACd7c,KAAK2Y,SACT,EACOijH,CACX,CAvH2B,CAuHzB,oDCtKF,SACImC,UAAW,YACXlgH,QAAS,UACTmgH,MAAO,QACPjgH,MAAO,0DCVH3J,sGADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAuBAypH,EAA4B,SAAUxpH,GAiBtC,SAASwpH,EAAW/9D,EAAYg+D,EAAgB7M,EAAY8M,EAAgBjgH,EAAWo+D,EAAkBhgE,EAAY2mF,EAAQm7B,EAAiBC,EAAoBvM,EAAiBC,GAC/K,IAAInxH,EAAQ6T,EAAOzH,KAAKhN,KAAMke,EAAW4d,EAAA,SAAmB97B,KAK5DY,EAAM09H,kBAAmC9nH,IAApBs7G,GAAgCA,EAKrDlxH,EAAMo6H,gBAAkBjJ,EAKxBnxH,EAAM2c,YAAcjB,EAKpB1b,EAAM29H,QAAUt7B,EAKhBriG,EAAMu3E,QAAU,KAKhBv3E,EAAM49H,gBAAkBN,EAKxBt9H,EAAM69H,gBAAkBN,EAKxBv9H,EAAM89H,kBAAoBpiD,GAAsCp+D,EAKhEtd,EAAM+9H,aAAe,GAKrB/9H,EAAMg+H,qBAAuB,KAK7Bh+H,EAAMi+H,SAAW,EACjB,IAAIlN,EAAewM,EAAet8B,mBAAmBjhG,EAAM89H,mBACvDnE,EAAkB35H,EAAM69H,gBAAgBjhH,YACxCi2G,EAAkB7yH,EAAM49H,gBAAgBhhH,YACxCg9G,EAAsBD,GACpB,IAAA5+E,iBAAgBg2E,EAAc4I,GAC9B5I,EACN,GAAqC,KAAjC,IAAA92E,SAAQ2/E,GAIR,OADA55H,EAAMic,MAAQif,EAAA,QACPl7B,EAEX,IAAIk+H,EAAmB5+D,EAAW1iD,YAC9BshH,IAKIrL,EAJCA,GAIiB,IAAA93E,iBAAgB83E,EAAiBqL,GAHjCA,GAM1B,IAAIjgG,EAAmBs/F,EAAezgH,cAAc9c,EAAM89H,kBAAkB,IACxE9/F,GAAmB,QAAgCshC,EAAYmxD,EAAYmJ,EAAqB37F,GACpG,IAAK4yF,SAAS7yF,IAAqBA,GAAoB,EAInD,OADAh+B,EAAMic,MAAQif,EAAA,QACPl7B,EAEX,IAAI65H,OAAgDjkH,IAAvB6nH,EAAmCA,EAAqB,IAMrF,GADAz9H,EAAMg6H,eAAiB,IAAIpH,EAAA,EAActzD,EAAYmxD,EAAYmJ,EAAqB/G,EAAiB70F,EAAmB67F,EAAwB57F,GAC/F,IAA/Cj+B,EAAMg6H,eAAehI,eAAexvH,OAGpC,OADAxC,EAAMic,MAAQif,EAAA,QACPl7B,EAEXA,EAAMi+H,SAAWX,EAAen+B,kBAAkBnhE,GAClD,IAAImmF,EAAenkH,EAAMg6H,eAAenE,wBAUxC,GATIhD,IACIvzD,EAAW3+C,YACXwjG,EAAa,IAAK,QAAMA,EAAa,GAAI0O,EAAgB,GAAIA,EAAgB,IAC7E1O,EAAa,IAAK,QAAMA,EAAa,GAAI0O,EAAgB,GAAIA,EAAgB,KAG7E1O,GAAe,IAAAppE,iBAAgBopE,EAAc0O,KAGhD,IAAA54E,SAAQkqE,GAGR,CAED,IADA,IAAIga,EAAcb,EAAe99B,0BAA0B2kB,EAAcnkH,EAAMi+H,UACtEG,EAAOD,EAAY3iG,KAAM4iG,GAAQD,EAAY1iG,KAAM2iG,IACxD,IAAK,IAAIC,EAAOF,EAAYziG,KAAM2iG,GAAQF,EAAYxiG,KAAM0iG,IAAQ,CAChE,IAAIvrG,EAAO0qG,EAAgBx9H,EAAMi+H,SAAUG,EAAMC,EAAM3iH,GACnDoX,GACA9yB,EAAM+9H,aAAarsH,KAAKohB,EAEhC,CAE8B,IAA9B9yB,EAAM+9H,aAAav7H,SACnBxC,EAAMic,MAAQif,EAAA,QAEtB,MAfIl7B,EAAMic,MAAQif,EAAA,QAgBlB,OAAOl7B,CACX,CAqFA,OAnOAyT,EAAU4pH,EAAYxpH,GAmJtBwpH,EAAWj5H,UAAU+X,SAAW,WAC5B,OAAO/c,KAAKm4E,OAChB,EAIA8lD,EAAWj5H,UAAUm2H,WAAa,WAC9B,IAAItJ,EAAU,GAUd,GATA7xH,KAAK2+H,aAAalvH,QAAQ,SAAUikB,EAAMlpB,EAAGqL,GACrC6d,GAAQA,EAAK/V,YAAcme,EAAA,UAC3B+1F,EAAQv/G,KAAK,CACT8J,OAAQpc,KAAKw+H,gBAAgB38B,mBAAmBnuE,EAAKxV,WACrD1C,MAAOkY,EAAK3W,YAGxB,EAAEjO,KAAK9O,OACPA,KAAK2+H,aAAav7H,OAAS,EACJ,IAAnByuH,EAAQzuH,OACRpD,KAAK6c,MAAQif,EAAA,YAEZ,CACD,IAAIvC,EAAIv5B,KAAK0+H,kBAAkB,GAC3Bh+G,EAAO1gB,KAAKy+H,gBAAgBS,YAAY3lG,GACxCluB,EAAwB,iBAATqV,EAAoBA,EAAOA,EAAK,GAC/CzP,EAAyB,iBAATyP,EAAoBA,EAAOA,EAAK,GAChDme,EAAmB7+B,KAAKy+H,gBAAgB/gH,cAAc6b,GACtDqF,EAAmB5+B,KAAKw+H,gBAAgB9gH,cAAc1d,KAAK6+H,UAC3DlN,EAAe3xH,KAAKy+H,gBAAgB58B,mBAAmB7hG,KAAK0+H,mBAChE1+H,KAAKm4E,SAAU,QAAkB9sE,EAAO4F,EAAQjR,KAAKud,YAAaqhB,EAAkB5+B,KAAKw+H,gBAAgBhhH,YAAaqhB,EAAkB8yF,EAAc3xH,KAAK46H,eAAgB/I,EAAS7xH,KAAKu+H,QAASv+H,KAAKs+H,aAAct+H,KAAKg7H,iBAC1Nh7H,KAAK6c,MAAQif,EAAA,QACjB,CACA97B,KAAK2Y,SACT,EAIAslH,EAAWj5H,UAAUoY,KAAO,WACxB,GAAIpd,KAAK6c,OAASif,EAAA,OAAgB,CAC9B97B,KAAK6c,MAAQif,EAAA,UACb97B,KAAK2Y,UACL,IAAIwmH,EAAe,EACnBn/H,KAAK4+H,qBAAuB,GAC5B5+H,KAAK2+H,aAAalvH,QAAQ,SAAUikB,EAAMlpB,EAAGqL,GACzC,IAAIgH,EAAQ6W,EAAK/V,WACjB,GAAId,GAASif,EAAA,QAAkBjf,GAASif,EAAA,UAAmB,CACvDqjG,IACA,IAAIC,GAAoB,QAAO1rG,EAAMQ,EAAA,UAAkB,SAAUryB,GAC7D,IAAIgb,EAAQ6W,EAAK/V,WACbd,GAASif,EAAA,UACTjf,GAASif,EAAA,SACTjf,GAASif,EAAA,WACT,QAAcsjG,GAEO,KADrBD,IAEIn/H,KAAKq/H,mBACLr/H,KAAKm7H,cAGjB,GAAGn7H,MACHA,KAAK4+H,qBAAqBtsH,KAAK8sH,EACnC,CACJ,EAAEtwH,KAAK9O,OACPA,KAAK2+H,aAAalvH,SAAQ,SAAUikB,EAAMlpB,EAAGqL,GAC7B6d,EAAK/V,YACJme,EAAA,QACTpI,EAAKtW,MAEb,IACqB,IAAjB+hH,GACAt/H,WAAWG,KAAKm7H,WAAWrsH,KAAK9O,MAAO,EAE/C,CACJ,EAIAi+H,EAAWj5H,UAAUq6H,iBAAmB,WACpCr/H,KAAK4+H,qBAAqBnvH,QAAQ,MAClCzP,KAAK4+H,qBAAuB,IAChC,EACOX,CACX,CArO+B,CAqO7B9mG,EAAA,GACF,gGCxQI,EAAwC,WACxC,IAAI/iB,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GAgDxC8qH,EAA4B,SAAU7qH,GAKtC,SAAS6qH,EAAW5wH,GAChB,IAAI9N,EAAQ6T,EAAOzH,KAAKhN,KAAM,CAC1B4lB,aAAclX,EAAQkX,aACtB43G,wBAAyB9uH,EAAQ8uH,wBACjCjkH,WAAY7K,EAAQ6K,WACpBsD,MAAOnO,EAAQmO,MACf82B,MAAOjlC,EAAQilC,SACb3zC,KAKNY,EAAM2+H,aAA6B/oH,IAAnB9H,EAAQ6oH,QAAuB7oH,EAAQ6oH,OAKvD32H,EAAM4+H,qBACyBhpH,IAA3B9H,EAAQuxF,eAA+BvxF,EAAQuxF,eAAiB,EAKpEr/F,EAAMi/F,cAAgCrpF,IAArB9H,EAAQmxF,SAAyBnxF,EAAQmxF,SAAW,KACrE,IACIA,EAAWnxF,EAAQmxF,SAgCvB,OA/BIA,IACA,QAAOA,EAASq/B,YAAYr/B,EAASr6D,cAH1B,CAAC,IAAK,MASrB5kC,EAAM6+H,UAAY,IAAIrmG,EAAA,EAAU1qB,EAAQo9B,WAAa,GAKrDlrC,EAAM8+H,QAAU,CAAC,EAAG,GAKpB9+H,EAAMi4B,KAAOnqB,EAAQie,KAAO,GAK5B/rB,EAAM++H,YAAc,CAAEpoG,WAAY7oB,EAAQ6oB,YAQ1C32B,EAAMo/F,WAAatxF,EAAQsxF,WAAatxF,EAAQsxF,WAAa,EACtDp/F,CACX,CAmNA,OAjRA,EAAU0+H,EAAY7qH,GAkEtB6qH,EAAWt6H,UAAUyzB,eAAiB,WAClC,OAAOz4B,KAAKy/H,UAAUhnG,gBAC1B,EAKA6mG,EAAWt6H,UAAUq0B,YAAc,SAAU9f,EAAYid,GACrD,IAAIipG,EAAYz/H,KAAK4/H,0BAA0BrmH,GAC3CkmH,GACAA,EAAUpmG,YAAY7C,EAE9B,EAUA8oG,EAAWt6H,UAAUypH,kBAAoB,SAAUl1G,EAAYggB,EAAGmD,EAAWhxB,GACzE,IAAI+zH,EAAYz/H,KAAK4/H,0BAA0BrmH,GAC/C,IAAKkmH,EACD,OAAO,EAIX,IAFA,IACI/rG,EAAMwuE,EAAc29B,EADpBl/B,GAAU,EAEL3+F,EAAI06B,EAAUN,KAAMp6B,GAAK06B,EAAUL,OAAQr6B,EAChD,IAAK,IAAID,EAAI26B,EAAUJ,KAAMv6B,GAAK26B,EAAUH,OAAQx6B,EAChDmgG,GAAe,QAAU3oE,EAAGv3B,EAAGD,GAC/B89H,GAAS,EACLJ,EAAU9mG,YAAYupE,KAEtB29B,GADAnsG,EAAqD+rG,EAAUx6H,IAAIi9F,IACrDvkF,aAAeme,EAAA,YAEzB+jG,GAA4B,IAAnBn0H,EAASgoB,IAGrBmsG,IACDl/B,GAAU,GAItB,OAAOA,CACX,EAKA2+B,EAAWt6H,UAAUg9F,uBAAyB,SAAUzoF,GACpD,OAAO,CACX,EAMA+lH,EAAWt6H,UAAUsZ,OAAS,WAC1B,OAAOte,KAAK64B,IAChB,EAMAymG,EAAWt6H,UAAU86H,OAAS,SAAUnzG,GAChC3sB,KAAK64B,OAASlM,IACd3sB,KAAK64B,KAAOlM,EACZ3sB,KAAK2Y,UAEb,EAKA2mH,EAAWt6H,UAAUk8F,UAAY,SAAU3nF,GACvC,OAAOvZ,KAAKu/H,OAChB,EAIAD,EAAWt6H,UAAU4gC,eAAiB,WAClC,OAAO5lC,KAAK6/F,SAASj6D,gBACzB,EAUA05F,EAAWt6H,UAAUw6F,QAAU,SAAUjmE,EAAGv3B,EAAGD,EAAGua,EAAY/C,GAC1D,OAAO,SACX,EAMA+lH,EAAWt6H,UAAU60H,YAAc,WAC/B,OAAO75H,KAAK6/F,QAChB,EAKAy/B,EAAWt6H,UAAU86F,yBAA2B,SAAUvmF,GACtD,OAAKvZ,KAAK6/F,SAIC7/F,KAAK6/F,UAHL,QAAyBtmF,EAKxC,EAMA+lH,EAAWt6H,UAAU46H,0BAA4B,SAAUrmH,GACvD,IAAIwmH,EAAW//H,KAAK6Z,gBACpB,OAAIkmH,KAAa,IAAA3hF,YAAW2hF,EAAUxmH,GAC3B,KAGAvZ,KAAKy/H,SAEpB,EAQAH,EAAWt6H,UAAUk7F,kBAAoB,SAAU5jF,GAC/C,OAAOtc,KAAKw/H,eAChB,EAOAF,EAAWt6H,UAAUs8F,iBAAmB,SAAU/nE,EAAGjd,EAAY/C,GAC7D,IAAIsmF,EAAW7/F,KAAK8/F,yBAAyBvmF,GACzC0mF,EAAiBjgG,KAAKkgG,kBAAkB5jF,GACxC48G,GAAW,QAAOr5B,EAASq/B,YAAY3lG,GAAIv5B,KAAK0/H,SACpD,OAAsB,GAAlBz/B,EACOi5B,GAGA,QAAUA,EAAUj5B,EAAgBjgG,KAAK0/H,QAExD,EAUAJ,EAAWt6H,UAAUg7H,+BAAiC,SAAU9hH,EAAW4nE,GACvE,IAAIvsE,OAAgC/C,IAAnBsvE,EAA+BA,EAAiB9lF,KAAK6Z,gBAClEgmF,EAAW7/F,KAAK8/F,yBAAyBvmF,GAI7C,OAHIvZ,KAAKyiB,YAAclJ,EAAW8mB,aAC9BniB,GAAY,QAAM2hF,EAAU3hF,EAAW3E,KAEpC,QAAiB2E,EAAW2hF,GAAY3hF,EAAY,IAC/D,EAKAohH,EAAWt6H,UAAU7E,MAAQ,WACzBH,KAAKy/H,UAAUt/H,OACnB,EACAm/H,EAAWt6H,UAAU84H,QAAU,WAC3B99H,KAAKG,QACLsU,EAAOzP,UAAU84H,QAAQ9wH,KAAKhN,KAClC,EAMAs/H,EAAWt6H,UAAU2+F,gBAAkB,SAAUH,EAAWjqF,GACxD,IAAIkmH,EAAYz/H,KAAK4/H,0BAA0BrmH,GAC3CiqF,EAAYi8B,EAAUrnG,gBACtBqnG,EAAUrnG,cAAgBorE,EAElC,EASA87B,EAAWt6H,UAAU0+F,QAAU,SAAUnqE,EAAGv3B,EAAGD,EAAGwX,GAAc,EACzD+lH,CACX,CAnR+B,CAmR7B1D,EAAA,GAMEqE,EAAiC,SAAUxrH,GAM3C,SAASwrH,EAAgB7uH,EAAMsiB,GAC3B,IAAI9yB,EAAQ6T,EAAOzH,KAAKhN,KAAMoR,IAASpR,KAOvC,OADAY,EAAM8yB,KAAOA,EACN9yB,CACX,CACA,OAfA,EAAUq/H,EAAiBxrH,GAepBwrH,CACX,CAjBoC,CAiBlCr+C,EAAA,IAEF,wBC5VI,EAAwC,WACxC,IAAIxtE,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GAkO5C,QAnL6B,SAAUC,GAKnC,SAASyrH,EAAQxxH,GACb,IAAI9N,EAAQ6T,EAAOzH,KAAKhN,KAAM,CAC1B4lB,aAAclX,EAAQkX,aACtBkmB,UAAWp9B,EAAQo9B,UACnByrF,OAAQ7oH,EAAQ6oH,OAChBh+G,WAAY7K,EAAQ6K,WACpBsD,MAAOnO,EAAQmO,MACfgjF,SAAUnxF,EAAQmxF,SAClBI,eAAgBvxF,EAAQuxF,eACxBtsD,MAAOjlC,EAAQilC,MACfpc,WAAY7oB,EAAQ6oB,WACpB5K,IAAKje,EAAQie,IACb6wG,wBAAyB9uH,EAAQ8uH,wBACjCx9B,WAAYtxF,EAAQsxF,cAClBhgG,KA+BN,OA1BAY,EAAMu/H,yBACFv/H,EAAM04H,kBAAoB4G,EAAQl7H,UAAUs0H,gBAKhD14H,EAAMud,iBAAmBzP,EAAQyP,iBAC7BzP,EAAQ4qH,kBACR14H,EAAM04H,gBAAkB5qH,EAAQ4qH,gBAAgBxqH,KAAKlO,IAMzDA,EAAMw/H,KAAO,KACT1xH,EAAQ0xH,KACRx/H,EAAMy/H,QAAQ3xH,EAAQ0xH,MAEjB1xH,EAAQspH,KACbp3H,EAAMw8H,OAAO1uH,EAAQspH,KAMzBp3H,EAAM0/H,iBAAmB,CAAC,EACnB1/H,CACX,CA8HA,OAhLA,EAAUs/H,EAASzrH,GAwDnByrH,EAAQl7H,UAAUu7H,oBAAsB,WACpC,OAAOvgI,KAAKme,gBAChB,EAMA+hH,EAAQl7H,UAAUw7H,mBAAqB,WACnC,OAAOxgI,KAAKs5H,eAChB,EAQA4G,EAAQl7H,UAAUy7H,QAAU,WACxB,OAAOzgI,KAAKogI,IAChB,EAMAF,EAAQl7H,UAAUy2B,iBAAmB,SAAUvV,GAC3C,IAGI9U,EAHAsiB,EAAoDxN,EAAY,OAChE8sE,GAAM,QAAOt/D,GACb6rE,EAAY7rE,EAAK/V,WAEjB4hF,GAAazjE,EAAA,WACb97B,KAAKsgI,iBAAiBttC,IAAO,EAC7B5hF,EC7HO,iBD+HF4hF,KAAOhzF,KAAKsgI,0BACVtgI,KAAKsgI,iBAAiBttC,GAC7B5hF,EACImuF,GAAazjE,EAAA,QCrHV,gBDuHGyjE,GAAazjE,EAAA,SC7HlB,mBD+HStlB,GAENA,MAARpF,GACApR,KAAKmR,cAAc,IAAI8uH,EAAgB7uH,EAAMsiB,GAErD,EAMAwsG,EAAQl7H,UAAU07H,oBAAsB,SAAUviH,GAC9Cne,KAAKy/H,UAAUt/H,QACfH,KAAKme,iBAAmBA,EACxBne,KAAK2Y,SACT,EAOAunH,EAAQl7H,UAAU27H,mBAAqB,SAAUrH,EAAiB3sG,GAC9D3sB,KAAKs5H,gBAAkBA,EACvBt5H,KAAKy/H,UAAUnmG,0BACI,IAAR3M,EACP3sB,KAAK8/H,OAAOnzG,GAGZ3sB,KAAK2Y,SAEb,EAMAunH,EAAQl7H,UAAUo4H,OAAS,SAAUpF,GACjC,IAAIoI,GAAO,QAAUpI,GACrBh4H,KAAKogI,KAAOA,EACZpgI,KAAKqgI,QAAQD,EACjB,EAMAF,EAAQl7H,UAAUq7H,QAAU,SAAUD,GAClCpgI,KAAKogI,KAAOA,EACZ,IAAIzzG,EAAMyzG,EAAK7tH,KAAK,MAChBvS,KAAKmgI,yBACLngI,KAAK2gI,oBAAmB,QAAoBP,EAAMpgI,KAAK6/F,UAAWlzE,GAGlE3sB,KAAK8/H,OAAOnzG,EAEpB,EAOAuzG,EAAQl7H,UAAUs0H,gBAAkB,SAAUp7G,EAAW5B,EAAY/C,GAErE,EAOA2mH,EAAQl7H,UAAU0+F,QAAU,SAAUnqE,EAAGv3B,EAAGD,GACxC,IAAImgG,GAAe,QAAU3oE,EAAGv3B,EAAGD,GAC/B/B,KAAKy/H,UAAU9mG,YAAYupE,IAC3BliG,KAAKy/H,UAAUx6H,IAAIi9F,EAE3B,EACOg+B,CACX,CAlL4B,CAkL1B,iBEjOE,EAAwC,WACxC,IAAI9rH,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GA+ExC4lH,EAA2B,SAAU3lH,GAKrC,SAAS2lH,EAAU1rH,GACf,IAAI9N,EAAQ6T,EAAOzH,KAAKhN,KAAM,CAC1B4lB,aAAclX,EAAQkX,aACtBkmB,UAAWp9B,EAAQo9B,UACnByrF,OAAQ7oH,EAAQ6oH,OAChBh+G,WAAY7K,EAAQ6K,WACpBsD,MAAOnO,EAAQmO,MACfgjF,SAAUnxF,EAAQmxF,SAClB1hF,iBAAkBzP,EAAQyP,iBACpBzP,EAAQyP,iBACRyiH,EACN3gC,eAAgBvxF,EAAQuxF,eACxBq5B,gBAAiB5qH,EAAQ4qH,gBACzBtB,IAAKtpH,EAAQspH,IACboI,KAAM1xH,EAAQ0xH,KACdzsF,MAAOjlC,EAAQilC,MACfpc,WAAY7oB,EAAQ6oB,WACpB5K,IAAKje,EAAQie,IACb6wG,wBAAyB9uH,EAAQ8uH,wBACjCx9B,WAAYtxF,EAAQsxF,cAClBhgG,KAuCN,OAlCAY,EAAM2b,iBACsB/F,IAAxB9H,EAAQ6N,YAA4B7N,EAAQ6N,YAAc,KAK9D3b,EAAMigI,eACoBrqH,IAAtB9H,EAAQmyH,UAA0BnyH,EAAQmyH,UAAY5iH,EAAA,EAK1Drd,EAAMkgI,uBAAyB,CAAC,EAKhClgI,EAAMmgI,sBAAwB,CAAC,EAK/BngI,EAAMogI,4BAA8BtyH,EAAQ8oH,2BAK5C52H,EAAMo6H,iBACyB,IAA3BtsH,EAAQ4oH,eAA2B,SAA2B9gH,EAKlE5V,EAAMqgI,0BAA2B,EAC1BrgI,CACX,CAkRA,OAlVA,EAAUw5H,EAAW3lH,GAoErB2lH,EAAUp1H,UAAUyzB,eAAiB,WACjC,IAAK,IACD,OAAOhkB,EAAOzP,UAAUyzB,eAAezrB,KAAKhN,MAEhD,GAAIA,KAAKy/H,UAAUhnG,iBACf,OAAO,EAGP,IAAK,IAAI9L,KAAO3sB,KAAK8gI,uBACjB,GAAI9gI,KAAK8gI,uBAAuBn0G,GAAK8L,iBACjC,OAAO,EAInB,OAAO,CACX,EAKA2hG,EAAUp1H,UAAUq0B,YAAc,SAAU9f,EAAYid,GACpD,GAAK,IAAL,CAIA,IAAI0qG,EAAgBlhI,KAAK4/H,0BAA0BrmH,GAEnD,IAAK,IAAIvG,KADThT,KAAKy/H,UAAUpmG,YAAYr5B,KAAKy/H,WAAayB,EAAgB1qG,EAAY,CAAC,GAC3Dx2B,KAAK8gI,uBAAwB,CACxC,IAAIrB,EAAYz/H,KAAK8gI,uBAAuB9tH,GAC5CysH,EAAUpmG,YAAYomG,GAAayB,EAAgB1qG,EAAY,CAAC,EACpE,CANA,MAFI/hB,EAAOzP,UAAUq0B,YAAYrsB,KAAKhN,KAAMuZ,EAAYid,EAS5D,EAIA4jG,EAAUp1H,UAAU23F,kBAAoB,WACpC,OAAO38F,KAAKg7H,eAChB,EAKAZ,EAAUp1H,UAAUg9F,uBAAyB,SAAUzoF,GACnD,OAAI,KACAvZ,KAAK6Z,iBACLN,KACC,IAAA6kC,YAAWp+C,KAAK6Z,gBAAiBN,GAC3B,EAGAvZ,KAAKmhI,WAEpB,EAIA/G,EAAUp1H,UAAUm8H,UAAY,WAC5B,OAAO,CACX,EAMA/G,EAAUp1H,UAAUsZ,OAAS,WACzB,OAAQ7J,EAAOzP,UAAUsZ,OAAOtR,KAAKhN,OAChCA,KAAKg7H,gBAAkB,KAAOt8E,KAAK+E,UAAUzjD,KAAKg7H,iBAAmB,GAC9E,EAKAZ,EAAUp1H,UAAUk8F,UAAY,SAAU3nF,GACtC,QAAI,KACAvZ,KAAK6Z,iBACLN,KACC,IAAA6kC,YAAWp+C,KAAK6Z,gBAAiBN,KAI3B9E,EAAOzP,UAAUk8F,UAAUl0F,KAAKhN,KAAMuZ,EAErD,EAKA6gH,EAAUp1H,UAAU86F,yBAA2B,SAAUvmF,GACrD,IAAK,IACD,OAAO9E,EAAOzP,UAAU86F,yBAAyB9yF,KAAKhN,KAAMuZ,GAEhE,IAAIwmH,EAAW//H,KAAK6Z,gBACpB,IAAI7Z,KAAK6/F,UAAckgC,KAAY,IAAA3hF,YAAW2hF,EAAUxmH,GAGnD,CACD,IAAI6nH,GAAU,QAAO7nH,GAIrB,OAHM6nH,KAAWphI,KAAK+gI,wBAClB/gI,KAAK+gI,sBAAsBK,IAAW,QAAyB7nH,IAE5DvZ,KAAK+gI,sBAAsBK,EACtC,CARI,OAAOphI,KAAK6/F,QASpB,EAKAu6B,EAAUp1H,UAAU46H,0BAA4B,SAAUrmH,GACtD,IAAK,IACD,OAAO9E,EAAOzP,UAAU46H,0BAA0B5yH,KAAKhN,KAAMuZ,GAEjE,IAAIwmH,EAAW//H,KAAK6Z,gBACpB,IAAKkmH,IAAY,IAAA3hF,YAAW2hF,EAAUxmH,GAClC,OAAOvZ,KAAKy/H,UAGZ,IAAI2B,GAAU,QAAO7nH,GAIrB,OAHM6nH,KAAWphI,KAAK8gI,yBAClB9gI,KAAK8gI,uBAAuBM,GAAW,IAAIhoG,EAAA,EAAUp5B,KAAKy/H,UAAUrnG,gBAEjEp4B,KAAK8gI,uBAAuBM,EAE3C,EAWAhH,EAAUp1H,UAAUq8H,YAAc,SAAU9nG,EAAGv3B,EAAGD,EAAGua,EAAY/C,EAAYoT,GACzE,IAAIzO,EAAY,CAACqb,EAAGv3B,EAAGD,GACnB45E,EAAe37E,KAAKggI,+BAA+B9hH,EAAW3E,GAC9D+nH,EAAU3lD,EACR37E,KAAKs5H,gBAAgB39C,EAAcr/D,EAAY/C,QAC/C/C,EACFkd,EAAO,IAAI1zB,KAAK6gI,UAAU3iH,OAAuB1H,IAAZ8qH,EAAwBxlG,EAAA,OAAiBA,EAAA,aAA6BtlB,IAAZ8qH,EAAwBA,EAAU,GAAIthI,KAAKuc,YAAavc,KAAKme,iBAAkBne,KAAK2/H,aAGvL,OAFAjsG,EAAK/G,IAAMA,EACX+G,EAAKniB,iBAAiB2iB,EAAA,SAAkBl0B,KAAKy7B,iBAAiB3sB,KAAK9O,OAC5D0zB,CACX,EASA0mG,EAAUp1H,UAAUw6F,QAAU,SAAUjmE,EAAGv3B,EAAGD,EAAGua,EAAY/C,GACzD,IAAIkiF,EAAmBz7F,KAAK6Z,gBAC5B,GAAK,KACA4hF,GACAliF,KACD,IAAA6kC,YAAWq9C,EAAkBliF,GAG5B,CACD,IAAIsyB,EAAQ7rC,KAAK4/H,0BAA0BrmH,GACvC2E,EAAY,CAACqb,EAAGv3B,EAAGD,GACnB2xB,OAAO,EACPwuE,GAAe,QAAOhkF,GACtB2tB,EAAMlT,YAAYupE,KAClBxuE,EAAOmY,EAAM5mC,IAAIi9F,IAErB,IAAIv1E,EAAM3sB,KAAKse,SACf,GAAIoV,GAAQA,EAAK/G,KAAOA,EACpB,OAAO+G,EAGP,IAAIwqG,EAAiBl+H,KAAK8/F,yBAAyBrE,GAC/C0iC,EAAiBn+H,KAAK8/F,yBAAyBvmF,GAC/C+iE,EAAmBt8E,KAAKggI,+BAA+B9hH,EAAW3E,GAClEgoH,EAAU,IAAI,EAAW9lC,EAAkByiC,EAAgB3kH,EAAY4kH,EAAgBjgH,EAAWo+D,EAAkBt8E,KAAKkgG,kBAAkB5jF,GAAatc,KAAKmhI,YAAa,SAAU5nG,EAAGv3B,EAAGD,EAAGua,GAC7L,OAAOtc,KAAKwhI,gBAAgBjoG,EAAGv3B,EAAGD,EAAGua,EAAYm/E,EACrD,EAAE3sF,KAAK9O,MAAOA,KAAKghI,4BAA6BhhI,KAAKihI,yBAA0BjhI,KAAKg7H,iBAUpF,OATAuG,EAAQ50G,IAAMA,EACV+G,GACA6tG,EAAQnqG,YAAc1D,EACtB6tG,EAAQ5pG,sBACRkU,EAAM3+B,QAAQg1F,EAAcq/B,IAG5B11F,EAAMp1B,IAAIyrF,EAAcq/B,GAErBA,CAEf,CAhCI,OAAOvhI,KAAKwhI,gBAAgBjoG,EAAGv3B,EAAGD,EAAGua,EAAYm/E,GAAoBliF,EAiC7E,EAUA6gH,EAAUp1H,UAAUw8H,gBAAkB,SAAUjoG,EAAGv3B,EAAGD,EAAGua,EAAY/C,GACjE,IAAIma,EAAO,KACPwuE,GAAe,QAAU3oE,EAAGv3B,EAAGD,GAC/B4qB,EAAM3sB,KAAKse,SACf,GAAKte,KAAKy/H,UAAU9mG,YAAYupE,IAM5B,IADAxuE,EAAO1zB,KAAKy/H,UAAUx6H,IAAIi9F,IACjBv1E,KAAOA,EAAK,CAIjB,IAAIyK,EAAc1D,EAClBA,EAAO1zB,KAAKqhI,YAAY9nG,EAAGv3B,EAAGD,EAAGua,EAAY/C,EAAYoT,GAErDyK,EAAYzZ,YAAcme,EAAA,OAE1BpI,EAAK0D,YAAcA,EAAYA,YAG/B1D,EAAK0D,YAAcA,EAEvB1D,EAAKiE,sBACL33B,KAAKy/H,UAAUvyH,QAAQg1F,EAAcxuE,EACzC,OArBAA,EAAO1zB,KAAKqhI,YAAY9nG,EAAGv3B,EAAGD,EAAGua,EAAY/C,EAAYoT,GACzD3sB,KAAKy/H,UAAUhpH,IAAIyrF,EAAcxuE,GAsBrC,OAAOA,CACX,EAMA0mG,EAAUp1H,UAAUy8H,2BAA6B,SAAU1+G,GACvD,GAAK,KACD/iB,KAAKihI,0BAA4Bl+G,EADrC,CAKA,IAAK,IAAI/P,KADThT,KAAKihI,yBAA2Bl+G,EACjB/iB,KAAK8gI,uBAChB9gI,KAAK8gI,uBAAuB9tH,GAAI7S,QAEpCH,KAAK2Y,SALL,CAMJ,EAaAyhH,EAAUp1H,UAAU08H,yBAA2B,SAAUnoH,EAAYooH,GACjE,GAAI,IAA4B,CAC5B,IAAI93E,GAAO,IAAA5kD,KAAcsU,GACzB,GAAIswC,EAAM,CACN,IAAIu3E,GAAU,QAAOv3E,GACfu3E,KAAWphI,KAAK+gI,wBAClB/gI,KAAK+gI,sBAAsBK,GAAWO,EAE9C,CACJ,CACJ,EACOvH,CACX,CApV8B,CAoV5B,GAKF,SAASwG,EAAwBgB,EAAWhmH,GACUgmH,EAAU7kH,WAAYnB,IAAMA,CAClF,CACA,yECvaQxH,iIADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAoYJ,QA5T6B,SAAUC,GAKnC,SAASotH,EAAQxsH,GACb,IAAIzU,EAAQZ,KACR0O,EAAU2G,GAAmD,CAAG,EAChE4kD,EAASvrD,EAAQurD,QAAU,CAAC,EAC5B6nE,IAAc,gBAAiB7nE,IAASA,EAAoB,YAiDhE,OAhDAr5D,EAAQ6T,EAAOzH,KAAKhN,KAAM,CACtB4lB,aAAclX,EAAQkX,aACtBkmB,UAAWp9B,EAAQo9B,UACnBvvB,YAAa7N,EAAQ6N,YACrB+6G,eAAgB5oH,EAAQ4oH,eACxBC,QAASuK,EACTvoH,WAAY7K,EAAQ6K,WACpBi+G,2BAA4B9oH,EAAQ8oH,2BACpCqJ,UAAWnyH,EAAQmyH,UACnBhhC,SAAUnxF,EAAQmxF,SAClB1hF,iBAAkBzP,EAAQyP,iBAC1B65G,IAAKtpH,EAAQspH,IACboI,KAAM1xH,EAAQ0xH,KACdzsF,WAAyBn9B,IAAlB9H,EAAQilC,OAAsBjlC,EAAQilC,MAC7Cpc,WAAY7oB,EAAQ6oB,cAClBv3B,MAKAu+H,aAA6B/nH,IAAnB9H,EAAQu0F,OAAuBv0F,EAAQu0F,OAAS,EAKhEriG,EAAMm7H,QAAU9hE,EAKhBr5D,EAAMo7H,MAAO,EAKbp7H,EAAMs7H,YAA6ExtH,EAAkB,WAKrG9N,EAAM62H,YAA2BjhH,IAAlB9H,EAAQ2oH,OAAsB3oH,EAAQ2oH,MAKrDz2H,EAAMmhI,YAAa,IAAAroF,eACnB94C,EAAMq7H,aACNr7H,EAAMk/H,OAAOl/H,EAAMohI,oBACZphI,CACX,CA+PA,OAzTAyT,EAAUwtH,EAASptH,GAyEnBotH,EAAQ78H,UAAUq3H,kBAAoB,SAAUpwH,EAAYoQ,EAAY9C,EAAY0gD,GAChF,IAAIqiE,GAAgB,IAAAr3H,KAAcsU,GAC9BgjH,EAAsBv8H,KAAK6Z,gBAC3BgmF,EAAW7/F,KAAK65H,cACfh6B,IACDA,EAAW7/F,KAAK8/F,yBAAyBw8B,IAE7C,IAAI/iG,EAAIsmE,EAASE,kBAAkB1jF,EAAYrc,KAAKggG,YAChD9hF,EAAY2hF,EAAS8B,yBAAyB11F,EAAYstB,GAC9D,KAAIsmE,EAASj6D,iBAAiBxiC,QAAU8a,EAAU,IAAlD,CAGA,IAAI2V,EAAiBgsE,EAASniF,cAAcQ,EAAU,IAClD+jH,EAAapiC,EAASgC,mBAAmB3jF,EAAWle,KAAK+hI,YACzD7I,GAAW,QAAOr5B,EAASq/B,YAAYhhH,EAAU,IAAKle,KAAK0/H,SAC3Dz8B,EAASjjG,KAAKu+H,QACH,IAAXt7B,IACAi2B,GAAW,QAAWA,EAAUj2B,EAAQjjG,KAAK0/H,SAC7CuC,GAAa,IAAAhpF,QAAOgpF,EAAYpuG,EAAiBovE,EAAQg/B,IAEzD1F,GAAuBA,IAAwBD,IAC/CzoG,GAAiB,QAA0B0oG,EAAqBD,EAAerwH,EAAY4nB,GAC3FouG,GAAa,IAAAzjF,iBAAgByjF,EAAY3F,EAAeC,GACxDtwH,GAAa,IAAAsb,WAAUtb,EAAYqwH,EAAeC,IAEtD,IAAIC,EAAa,CACb,QAAW,MACX,QAAW,IACX,QAAW,iBACX,OAAU,YACV,aAAe,EACf,aAAgBx8H,KAAK+7H,QAAgB,SAEzC,QAAOS,EAAYx8H,KAAK+7H,QAAS9hE,GACjC,IAAIj4D,EAAIC,KAAKC,OAAO+J,EAAW,GAAKg2H,EAAW,IAAMpuG,GACjD9xB,EAAIE,KAAKC,OAAO+/H,EAAW,GAAKh2H,EAAW,IAAM4nB,GAGrD,OAFA2oG,EAAWx8H,KAAKg8H,KAAO,IAAM,KAAOh6H,EACpCw6H,EAAWx8H,KAAKg8H,KAAO,IAAM,KAAOj6H,EAC7B/B,KAAKy8H,eAAev+G,EAAWg7G,EAAU+I,EAAY,EAAG1F,GAAuBD,EAAeE,EA3BrG,CA4BJ,EAeAqF,EAAQ78H,UAAU03H,aAAe,SAAUrgH,EAAY49C,GACnD,QAAqBzjD,IAAjBxW,KAAKogI,KAAK,GAAd,CAGA,IAAI5D,EAAa,CACb,QAAW,MACX,QAAW,IACX,QAAW,mBACX,OAAU,aAEd,QAAehmH,IAAXyjD,QAA4CzjD,IAApByjD,EAAc,MAAiB,CACvD,IAAIrrC,EAAS5uB,KAAK+7H,QAAQY,OAE1B,GADqBx7H,MAAMkP,QAAQue,IAA6B,IAAlBA,EAAOxrB,OAEjD,OAEJo5H,EAAkB,MAAI5tG,CAC1B,CACA,QAAmBpY,IAAf6F,EAA0B,CAC1B,IAAI81B,EAAMnyC,KAAK6Z,gBACT7Z,KAAK6Z,gBAAgBgnB,mBACrB,EAGN27F,EAAkB,MAAIngH,EAAa81B,EADd,OADX,KAAO,IAGrB,CAEA,OADA,QAAOqqF,EAAYviE,IACZ,OAAoCj6D,KAAKogI,KAAK,GAAK5D,EAxB1D,CAyBJ,EAIAqF,EAAQ78H,UAAUm8H,UAAY,WAC1B,OAAOnhI,KAAKu+H,OAChB,EAOAsD,EAAQ78H,UAAU43H,UAAY,WAC1B,OAAO58H,KAAK+7H,OAChB,EAWA8F,EAAQ78H,UAAUy3H,eAAiB,SAAUv+G,EAAWg7G,EAAU+I,EAAY3lH,EAAY/C,EAAY0gD,GAClG,IAAImmE,EAAOpgI,KAAKogI,KAChB,GAAKA,EAAL,CASA,GANAnmE,EAAc,MAAIi/D,EAAS,GAC3Bj/D,EAAe,OAAIi/D,EAAS,GAC5Bj/D,EAAOj6D,KAAKg8H,KAAO,MAAQ,OAASziH,EAAW+oG,UACzC,WAAYtiH,KAAK+7H,UACnB9hE,EAAe,OAAI,IAEL,GAAd39C,EACA,OAAQtc,KAAKk8H,aACT,KAAK,cACD,IAAIvrF,EAAO,GAAKr0B,EAAa,GAAO,EAChC,mBAAoB29C,EACpBA,EAAuB,gBAAK,QAAUtpB,EAGtCspB,EAAuB,eAAI,OAAStpB,EAExC,MACJ,KAAK,cACDspB,EAAuB,eAAI,GAAK39C,EAChC,MACJ,KAAK,oBACL,KAAK,SACD29C,EAAY,IAAI,GAAK39C,EACrB,MACJ,SACI,QAAO,EAAO,IAI1B,IAYI07G,EAZApuE,EAAkBrwC,EAAWuwC,qBAC7B6I,EAAOsvE,EACX,GAAIjiI,KAAKg8H,MAAwC,MAAhCpyE,EAAgB78C,OAAO,EAAG,GAAY,CACnD,IAAI29B,OAAM,EACVA,EAAMu3F,EAAW,GACjBtvE,EAAK,GAAKsvE,EAAW,GACrBtvE,EAAK,GAAKjoB,EACVA,EAAMu3F,EAAW,GACjBtvE,EAAK,GAAKsvE,EAAW,GACrBtvE,EAAK,GAAKjoB,CACd,CAUA,OATAuvB,EAAa,KAAItH,EAAKpgD,KAAK,KAGvBylH,EADe,GAAfoI,EAAKh9H,OACCg9H,EAAK,GAILA,GADM,SAAO,QAAcliH,GAAYkiH,EAAKh9H,UAG/C,OAAa40H,EAAK/9D,EAlDzB,CAmDJ,EAMA4nE,EAAQ78H,UAAUk7F,kBAAoB,SAAU5jF,GAC5C,OAAQtc,KAAKy3H,aAA+BjhH,IAArBxW,KAAKk8H,YAAgC5/G,EAAJ,CAC5D,EAKAulH,EAAQ78H,UAAUg9H,iBAAmB,WACjC,IAAIx3H,EAAI,EACJ6gC,EAAM,GACV,IAAK,IAAI1e,KAAO3sB,KAAK+7H,QACjB1wF,EAAI7gC,KAAOmiB,EAAM,IAAM3sB,KAAK+7H,QAAQpvG,GAExC,OAAO0e,EAAI94B,KAAK,IACpB,EAMAsvH,EAAQ78H,UAAUq4H,aAAe,SAAUpjE,IACvC,QAAOj6D,KAAK+7H,QAAS9hE,GACrBj6D,KAAKi8H,aACLj8H,KAAK8/H,OAAO9/H,KAAKgiI,mBACrB,EAIAH,EAAQ78H,UAAUi3H,WAAa,WAC3B,IAAI7oE,EAAUpzD,KAAK+7H,QAAiB,SAAK,IACzC/7H,KAAKg8H,MAAO,OAAgB5oE,EAAS,QAAU,CACnD,EAQAyuE,EAAQ78H,UAAUs0H,gBAAkB,SAAUp7G,EAAW5B,EAAY/C,GACjE,IAAIsmF,EAAW7/F,KAAK65H,cAIpB,GAHKh6B,IACDA,EAAW7/F,KAAK8/F,yBAAyBvmF,MAEzCsmF,EAASj6D,iBAAiBxiC,QAAU8a,EAAU,IAAlD,CAGkB,GAAd5B,GAAqBtc,KAAKy3H,aAA+BjhH,IAArBxW,KAAKk8H,cACzC5/G,EAAa,GAEjB,IAAIuX,EAAiBgsE,EAASniF,cAAcQ,EAAU,IAClD+jH,EAAapiC,EAASgC,mBAAmB3jF,EAAWle,KAAK+hI,YACzD7I,GAAW,QAAOr5B,EAASq/B,YAAYhhH,EAAU,IAAKle,KAAK0/H,SAC3Dz8B,EAASjjG,KAAKu+H,QACH,IAAXt7B,IACAi2B,GAAW,QAAWA,EAAUj2B,EAAQjjG,KAAK0/H,SAC7CuC,GAAa,IAAAhpF,QAAOgpF,EAAYpuG,EAAiBovE,EAAQg/B,IAE3C,GAAd3lH,IACA48G,GAAW,QAAUA,EAAU58G,EAAYtc,KAAK0/H,UAEpD,IAAIlD,EAAa,CACb,QAAW,MACX,QAAW,IACX,QAAW,SACX,OAAU,YACV,aAAe,GAGnB,OADA,QAAOA,EAAYx8H,KAAK+7H,SACjB/7H,KAAKy8H,eAAev+G,EAAWg7G,EAAU+I,EAAY3lH,EAAY/C,EAAYijH,EAvBpF,CAwBJ,EACOqF,CACX,CA3T4B,CA2T1B,+QC3RK,SAASK,EAAIlK,EAAK9oF,GACrB,OAtEG,SAAyB8oF,EAAK9oF,EAAQizF,EAASC,GAClD,OAAO,SAOGhmH,EAAQC,EAAY9C,GAC1B,IAAI2oH,EAAM,IAAIG,eACdH,EAAII,KAAK,MAAsB,mBAARtK,EAAqBA,EAAI57G,EAAQC,EAAY9C,GAAcy+G,GAAK,GACnF9oF,EAAO1I,WAAa2c,EAAA,iBACpB++E,EAAIK,aAAe,eAEvBL,EAAIM,gBArDU,MA0DdN,EAAIO,OAAS,SAAUv8G,GAEnB,IAAKg8G,EAAIlhI,QAAWkhI,EAAIlhI,QAAU,KAAOkhI,EAAIlhI,OAAS,IAAM,CACxD,IAAIoQ,EAAO89B,EAAO1I,UAEdlkB,OAAS,EACTlR,GAAQ+xC,EAAA,QAAmB/xC,GAAQ+xC,EAAA,OACnC7gC,EAAS4/G,EAAIQ,aAERtxH,GAAQ+xC,EAAA,OACb7gC,EAAS4/G,EAAIS,eAETrgH,GAAS,IAAIsgH,WAAYC,gBAAgBX,EAAIQ,aAAc,oBAG1DtxH,GAAQ+xC,EAAA,iBACb7gC,EAAqC4/G,EAAY,UAEjD5/G,EACA6/G,EAAQn1H,KAAKhN,KAAMkvC,EAAO0O,aAAat7B,EAAQ,CAC3ClG,OAAQA,EACRqhC,kBAAmBlkC,IACnB21B,EAAOqO,eAAej7B,IAG1B8/G,EAAQp1H,KAAKhN,KAErB,MAEIoiI,EAAQp1H,KAAKhN,KAErB,EAAE8O,KAAK9O,MAIPkiI,EAAIY,QAAU,WACVV,EAAQp1H,KAAKhN,KACjB,EAAE8O,KAAK9O,MACPkiI,EAAIa,MACP,CACL,CAWWC,CAAgBhL,EAAK9oF,GAO5B,SAAU3c,EAAU6qB,GAEwB,mBADJ,KACZipC,aADY,KAEgCA,YAAY9zD,EAEpF,GACyB,KAC7B,CClIA,IACQne,EADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAkCAyuH,EAAmC,SAAUxuH,GAM7C,SAASwuH,EAAkB7xH,EAAM8xH,GAC7B,IAAItiI,EAAQ6T,EAAOzH,KAAKhN,KAAMoR,IAASpR,KAOvC,OADAY,EAAMugB,QAAU+hH,EACTtiI,CACX,CACA,OAfAyT,EAAU4uH,EAAmBxuH,GAetBwuH,CACX,CAjBsC,CAiBpCrhD,EAAA,IAoGEuhD,EAA8B,SAAU1uH,GAKxC,SAAS0uH,EAAa9tH,GAClB,IAAIzU,EAAQZ,KACR0O,EAAU2G,GAAe,CAAC,GAC9BzU,EAAQ6T,EAAOzH,KAAKhN,KAAM,CACtB4lB,aAAclX,EAAQkX,aACtBrM,gBAAY/C,EACZqG,MAAO,UACP82B,WAAyBn9B,IAAlB9H,EAAQilC,OAAsBjlC,EAAQilC,SAC3C3zC,MAKAk4E,QAAU,KAKhBt3E,EAAMs8E,QAAUxuE,EAAQwgC,OAKxBtuC,EAAMu4G,eAAiC3iG,IAArB9H,EAAQ2kE,UAAgC3kE,EAAQ2kE,SAKlEzyE,EAAMw8E,KAAO1uE,EAAQspH,SACExhH,IAAnB9H,EAAQukE,OACRryE,EAAMs3E,QAAUxpE,EAAQukE,YAEJz8D,IAAf5V,EAAMw8E,QACX,OAAOx8E,EAAMs8E,QAAS,GAEtBt8E,EAAMs3E,QAAUgqD,EAAIthI,EAAMw8E,KAC6Bx8E,EAAa,UAMxEA,EAAMwiI,eACmB5sH,IAArB9H,EAAQykE,SAAyBzkE,EAAQykE,SAAW,EAAApxD,IACxD,IAsCIg3C,EAAYxmC,EAtCZ+gD,OAA8C98D,IAA5B9H,EAAQ4kE,iBAAgC5kE,EAAQ4kE,gBAuDtE,OAlDA1yE,EAAMyiI,eAAiB/vD,EAAkB,IAAI6c,EAAA,EAAU,KAKvDvvF,EAAM0iI,oBAAsB,IAAInzC,EAAA,EAKhCvvF,EAAM2iI,sBAAwB,CAAC,EAM/B3iI,EAAM4iI,SAAW,CAAC,EAMlB5iI,EAAM6iI,UAAY,CAAC,EAKnB7iI,EAAM8iI,mBAAqB,CAAC,EAK5B9iI,EAAM+iI,oBAAsB,KAExBxiI,MAAMkP,QAAQ3B,EAAQ6jB,UACtBA,EAAW7jB,EAAQ6jB,SAEd7jB,EAAQ6jB,WAEbA,GADAwmC,EAAarqD,EAAQ6jB,UACCxc,YAErBu9D,QAAkC98D,IAAfuiD,IACpBA,EAAa,IAAI5jD,EAAA,EAAWod,SAEf/b,IAAb+b,GACA3xB,EAAMgjI,oBAAoBrxG,QAEX/b,IAAfuiD,GACAn4D,EAAMijI,wBAAwB9qE,GAE3Bn4D,CACX,CA2qBA,OAnxBAyT,EAAU8uH,EAAc1uH,GAqHxB0uH,EAAan+H,UAAU8mF,WAAa,SAAU3qE,GAC1CnhB,KAAK8jI,mBAAmB3iH,GACxBnhB,KAAK2Y,SACT,EAMAwqH,EAAan+H,UAAU8+H,mBAAqB,SAAU3iH,GAClD,IAAI4iH,GAAa,QAAO5iH,GACxB,GAAKnhB,KAAKgkI,YAAYD,EAAY5iH,GAAlC,CAMAnhB,KAAKikI,mBAAmBF,EAAY5iH,GACpC,IAAIvJ,EAAWuJ,EAAQ9I,cACvB,GAAIT,EAAU,CACV,IAAIwE,EAASxE,EAAS4F,YAClBxd,KAAKqjI,gBACLrjI,KAAKqjI,eAAetxC,OAAO31E,EAAQ+E,EAE3C,MAEInhB,KAAKujI,sBAAsBQ,GAAc5iH,EAE7CnhB,KAAKmR,cAAc,IAAI8xH,EAAkBlyC,EAAA,aAA4B5vE,GAZrE,MAJQnhB,KAAK2jI,qBACL3jI,KAAK2jI,oBAAoB51H,OAAOoT,EAgB5C,EAMAgiH,EAAan+H,UAAUi/H,mBAAqB,SAAUF,EAAY5iH,GAC9DnhB,KAAK0jI,mBAAmBK,GAAc,EAClC,QAAO5iH,EAAS+S,EAAA,SAAkBl0B,KAAKuvF,qBAAsBvvF,OAC7D,QAAOmhB,EAASiC,EAAA,iBAAgCpjB,KAAKuvF,qBAAsBvvF,MAEnF,EAQAmjI,EAAan+H,UAAUg/H,YAAc,SAAUD,EAAY5iH,GACvD,IAAI+iH,GAAQ,EACRlxH,EAAKmO,EAAQ3I,QAajB,YAZWhC,IAAPxD,IACMA,EAAGjO,aAAc/E,KAAKwjI,SAIxBU,GAAQ,EAHRlkI,KAAKwjI,SAASxwH,EAAGjO,YAAcoc,GAMnC+iH,KACA,SAASH,KAAc/jI,KAAKyjI,WAAY,IACxCzjI,KAAKyjI,UAAUM,GAAc5iH,GAE1B+iH,CACX,EAMAf,EAAan+H,UAAUqhF,YAAc,SAAU9zD,GAC3CvyB,KAAK4jI,oBAAoBrxG,GACzBvyB,KAAK2Y,SACT,EAMAwqH,EAAan+H,UAAU4+H,oBAAsB,SAAUrxG,GAInD,IAHA,IAAIutF,EAAU,GACVqkB,EAAc,GACdC,EAAmB,GACd55H,EAAI,EAAG4/D,EAAW73C,EAASnvB,OAAQoH,EAAI4/D,EAAU5/D,IAAK,CAC3D,IAAI2W,EAAUoR,EAAS/nB,GACnBu5H,GAAa,QAAO5iH,GACpBnhB,KAAKgkI,YAAYD,EAAY5iH,IAC7BgjH,EAAY7xH,KAAK6O,EAEzB,CACS3W,EAAI,EAAb,IAAK,IAAW65H,EAAWF,EAAY/gI,OAAQoH,EAAI65H,EAAU75H,IAAK,CAC1D2W,EAAUgjH,EAAY35H,GACtBu5H,GAAa,QAAO5iH,GACxBnhB,KAAKikI,mBAAmBF,EAAY5iH,GACpC,IAAIvJ,EAAWuJ,EAAQ9I,cACvB,GAAIT,EAAU,CACV,IAAIwE,EAASxE,EAAS4F,YACtBsiG,EAAQxtG,KAAK8J,GACbgoH,EAAiB9xH,KAAK6O,EAC1B,MAEInhB,KAAKujI,sBAAsBQ,GAAc5iH,CAEjD,CACInhB,KAAKqjI,gBACLrjI,KAAKqjI,eAAejmH,KAAK0iG,EAASskB,GAE7B55H,EAAI,EAAb,IAAK,IAAW85H,EAAWH,EAAY/gI,OAAQoH,EAAI85H,EAAU95H,IACzDxK,KAAKmR,cAAc,IAAI8xH,EAAkBlyC,EAAA,aAA4BozC,EAAY35H,IAEzF,EAKA24H,EAAan+H,UAAU6+H,wBAA0B,SAAU9qE,GACvD,IAAIwrE,GAAsB,EAC1BvkI,KAAKuR,iBAAiBw/E,EAAA,cAItB,SAAUt4C,GACD8rF,IACDA,GAAsB,EACtBxrE,EAAWzmD,KAAKmmC,EAAIt3B,SACpBojH,GAAsB,EAE9B,IACAvkI,KAAKuR,iBAAiBw/E,EAAA,iBAItB,SAAUt4C,GACD8rF,IACDA,GAAsB,EACtBxrE,EAAWhrD,OAAO0qC,EAAIt3B,SACtBojH,GAAsB,EAE9B,IACAxrE,EAAWxnD,iBAAiB+f,EAAA,MAI5B,SAAUmnB,GACD8rF,IACDA,GAAsB,EACtBvkI,KAAK8rF,WACqDrzC,EAAW,SACrE8rF,GAAsB,EAE9B,EAAEz1H,KAAK9O,OACP+4D,EAAWxnD,iBAAiB+f,EAAA,SAI5B,SAAUmnB,GACD8rF,IACDA,GAAsB,EACtBvkI,KAAK2xF,cACqDl5C,EAAW,SACrE8rF,GAAsB,EAE9B,EAAEz1H,KAAK9O,OACPA,KAAK2jI,oBAAsB5qE,CAC/B,EAMAoqE,EAAan+H,UAAU7E,MAAQ,SAAUqkI,GACrC,GAAIA,EAAU,CACV,IAAK,IAAIC,KAAazkI,KAAK0jI,mBACZ1jI,KAAK0jI,mBAAmBe,GAC9Bh1H,QAAQ,MAEZzP,KAAK2jI,sBACN3jI,KAAK0jI,mBAAqB,CAAC,EAC3B1jI,KAAKwjI,SAAW,CAAC,EACjBxjI,KAAKyjI,UAAY,CAAC,EAE1B,MAEI,GAAIzjI,KAAKqjI,eAEL,IAAK,IAAIrwH,KADThT,KAAKqjI,eAAe5zH,QAAQzP,KAAK0kI,sBAAsB51H,KAAK9O,OAC7CA,KAAKujI,sBAChBvjI,KAAK0kI,sBAAsB1kI,KAAKujI,sBAAsBvwH,IAI9DhT,KAAK2jI,qBACL3jI,KAAK2jI,oBAAoBxjI,QAEzBH,KAAKqjI,gBACLrjI,KAAKqjI,eAAeljI,QAExBH,KAAKujI,sBAAwB,CAAC,EAC9B,IAAIoB,EAAa,IAAI1B,EAAkBlyC,EAAA,SACvC/wF,KAAKmR,cAAcwzH,GACnB3kI,KAAK2Y,SACT,EAaAwqH,EAAan+H,UAAU4/H,eAAiB,SAAUl5H,GAC9C,GAAI1L,KAAKqjI,eACL,OAAOrjI,KAAKqjI,eAAe5zH,QAAQ/D,GAE9B1L,KAAK2jI,qBACV3jI,KAAK2jI,oBAAoBl0H,QAAQ/D,EAEzC,EAaAy3H,EAAan+H,UAAU6/H,iCAAmC,SAAU54H,EAAYP,GAC5E,IAAI0Q,EAAS,CAACnQ,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAAIA,EAAW,IACtE,OAAOjM,KAAK8kI,uBAAuB1oH,GAAQ,SAAU+E,GAEjD,OADeA,EAAQ9I,cACVqnD,qBAAqBzzD,GACvBP,EAASyV,QAGhB,CAER,GACJ,EAoBAgiH,EAAan+H,UAAU8/H,uBAAyB,SAAU1oH,EAAQ1Q,GAC9D,GAAI1L,KAAKqjI,eACL,OAAOrjI,KAAKqjI,eAAenvC,gBAAgB93E,EAAQ1Q,GAE9C1L,KAAK2jI,qBACV3jI,KAAK2jI,oBAAoBl0H,QAAQ/D,EAEzC,EAgBAy3H,EAAan+H,UAAU+/H,iCAAmC,SAAU3oH,EAAQ1Q,GACxE,OAAO1L,KAAK8kI,uBAAuB1oH,GAKnC,SAAU+E,GAEN,GADeA,EAAQ9I,cACV0nD,iBAAiB3jD,GAAS,CACnC,IAAI5c,EAASkM,EAASyV,GACtB,GAAI3hB,EACA,OAAOA,CAEf,CACJ,GACJ,EAQA2jI,EAAan+H,UAAUovE,sBAAwB,WAC3C,OAAOp0E,KAAK2jI,mBAChB,EAMAR,EAAan+H,UAAUs4E,YAAc,WACjC,IAAI/qD,EAUJ,OATIvyB,KAAK2jI,oBACLpxG,EAAWvyB,KAAK2jI,oBAAoB5tH,WAE/B/V,KAAKqjI,iBACV9wG,EAAWvyB,KAAKqjI,eAAe2B,UAC1B,QAAQhlI,KAAKujI,yBACd,QAAOhxG,GAAU,QAAUvyB,KAAKujI,yBAG+B,CAC3E,EAOAJ,EAAan+H,UAAUigI,wBAA0B,SAAUh5H,GACvD,IAAIsmB,EAAW,GAIf,OAHAvyB,KAAK6kI,iCAAiC54H,GAAY,SAAUkV,GACxDoR,EAASjgB,KAAK6O,EAClB,IACOoR,CACX,EAaA4wG,EAAan+H,UAAUu6G,oBAAsB,SAAUnjG,GACnD,OAAIpc,KAAKqjI,eACErjI,KAAKqjI,eAAexwC,YAAYz2E,GAElCpc,KAAK2jI,oBACH3jI,KAAK2jI,oBAAoB5tH,WAGzB,EAEf,EAaAotH,EAAan+H,UAAUkgI,8BAAgC,SAAUj5H,EAAYk5H,GAQzE,IAAInjI,EAAIiK,EAAW,GACflK,EAAIkK,EAAW,GACfm5H,EAAiB,KACjB9lE,EAAe,CAAC5G,IAAKA,KACrB6G,EAAqB9lC,IACrBrd,EAAS,EAAC,KAAW,IAAWqd,IAAUA,KAC1C4K,EAAS8gG,GAA0B,KAwBvC,OAvBAnlI,KAAKqjI,eAAenvC,gBAAgB93E,GAIpC,SAAU+E,GACN,GAAIkjB,EAAOljB,GAAU,CACjB,IAAIvJ,EAAWuJ,EAAQ9I,cACnBgtH,EAA6B9lE,EAEjC,IADAA,EAAqB3nD,EAASynD,eAAer9D,EAAGD,EAAGu9D,EAAcC,IACxC8lE,EAA4B,CACjDD,EAAiBjkH,EAKjB,IAAImkH,EAAcrjI,KAAKuF,KAAK+3D,GAC5BnjD,EAAO,GAAKpa,EAAIsjI,EAChBlpH,EAAO,GAAKra,EAAIujI,EAChBlpH,EAAO,GAAKpa,EAAIsjI,EAChBlpH,EAAO,GAAKra,EAAIujI,CACpB,CACJ,CACJ,IACOF,CACX,EAWAjC,EAAan+H,UAAUwY,UAAY,SAAU07B,GACzC,OAAOl5C,KAAKqjI,eAAe7lH,UAAU07B,EACzC,EAUAiqF,EAAan+H,UAAUugI,eAAiB,SAAUvyH,GAC9C,IAAImO,EAAUnhB,KAAKwjI,SAASxwH,EAAGjO,YAC/B,YAAmByR,IAAZ2K,EAAwBA,EAAU,IAC7C,EAOAgiH,EAAan+H,UAAUwgI,gBAAkB,SAAUxyC,GAC/C,IAAI7xE,EAAUnhB,KAAKyjI,UAAUzwC,GAC7B,YAAmBx8E,IAAZ2K,EAAwBA,EAAU,IAC7C,EAOAgiH,EAAan+H,UAAUq4E,UAAY,WAC/B,OAAOr9E,KAAKk9E,OAChB,EAIAimD,EAAan+H,UAAU06G,YAAc,WACjC,OAAO1/G,KAAKm5G,SAChB,EAOAgqB,EAAan+H,UAAUk4H,OAAS,WAC5B,OAAOl9H,KAAKo9E,IAChB,EAKA+lD,EAAan+H,UAAUuqF,qBAAuB,SAAUrpE,GACpD,IAAI/E,EAAoE+E,EAAY,OAChF69G,GAAa,QAAO5iH,GACpBvJ,EAAWuJ,EAAQ9I,cACvB,GAAKT,EAQA,CACD,IAAIwE,EAASxE,EAAS4F,YAClBumH,KAAc/jI,KAAKujI,8BACZvjI,KAAKujI,sBAAsBQ,GAC9B/jI,KAAKqjI,gBACLrjI,KAAKqjI,eAAetxC,OAAO31E,EAAQ+E,IAInCnhB,KAAKqjI,gBACLrjI,KAAKqjI,eAAe7jH,OAAOpD,EAAQ+E,EAG/C,MApBU4iH,KAAc/jI,KAAKujI,wBACjBvjI,KAAKqjI,gBACLrjI,KAAKqjI,eAAet1H,OAAOoT,GAE/BnhB,KAAKujI,sBAAsBQ,GAAc5iH,GAiBjD,IAAInO,EAAKmO,EAAQ3I,QACjB,QAAWhC,IAAPxD,EAAkB,CAClB,IAAIyyH,EAAMzyH,EAAGjO,WACT/E,KAAKwjI,SAASiC,KAAStkH,IACvBnhB,KAAK0lI,mBAAmBvkH,GACxBnhB,KAAKwjI,SAASiC,GAAOtkH,EAE7B,MAEInhB,KAAK0lI,mBAAmBvkH,GACxBnhB,KAAKyjI,UAAUM,GAAc5iH,EAEjCnhB,KAAK2Y,UACL3Y,KAAKmR,cAAc,IAAI8xH,EAAkBlyC,EAAA,gBAA+B5vE,GAC5E,EAOAgiH,EAAan+H,UAAU2gI,WAAa,SAAUxkH,GAC1C,IAAInO,EAAKmO,EAAQ3I,QACjB,YAAWhC,IAAPxD,EACOA,KAAMhT,KAAKwjI,UAGX,QAAOriH,KAAYnhB,KAAKyjI,SAEvC,EAIAN,EAAan+H,UAAUyvB,QAAU,WAC7B,OAAOz0B,KAAKqjI,eAAe5uG,YAAa,QAAQz0B,KAAKujI,sBACzD,EAMAJ,EAAan+H,UAAUo6G,aAAe,SAAUhjG,EAAQC,EAAY9C,GAChE,IAAIqsH,EAAqB5lI,KAAKsjI,oBAC1BuC,EAAgB7lI,KAAKojI,UAAUhnH,EAAQC,GAC3Crc,KAAKmzB,SAAU,EAkBf,IAjBA,IAAI2yG,EAAU,SAAUt7H,EAAGiL,GACvB,IAAIswH,EAAeF,EAAcr7H,GACbo7H,EAAmB1xC,gBAAgB6xC,GAKvD,SAAUziF,GACN,OAAO,IAAAjK,gBAAeiK,EAAOlnC,OAAQ2pH,EACzC,MAEIC,EAAO9tD,QAAQlrE,KAAKg5H,EAAQD,EAAc1pH,EAAY9C,GACtDqsH,EAAmB7zC,OAAOg0C,EAAc,CAAE3pH,OAAQ2pH,EAAaj5H,UAC/Dk5H,EAAO7yG,QAAU6yG,EAAO9tD,UAAY,KAE5C,EACI8tD,EAAShmI,KACJwK,EAAI,EAAGiL,EAAKowH,EAAcziI,OAAQoH,EAAIiL,IAAMjL,EACjDs7H,EAAQt7H,EAEhB,EACA24H,EAAan+H,UAAU84H,QAAU,WAC7B99H,KAAKG,OAAM,GACXH,KAAKsjI,oBAAoBnjI,QACzBsU,EAAOzP,UAAU84H,QAAQ9wH,KAAKhN,KAClC,EAMAmjI,EAAan+H,UAAU6uE,mBAAqB,SAAUz3D,GAClD,IACIlF,EADA0uH,EAAqB5lI,KAAKsjI,oBAE9BsC,EAAmB1xC,gBAAgB93E,GAAQ,SAAUknC,GACjD,IAAI,IAAA5sB,QAAO4sB,EAAOlnC,OAAQA,GAEtB,OADAlF,EAAMosC,GACC,CAEf,IACIpsC,GACA0uH,EAAmB73H,OAAOmJ,EAElC,EAQAisH,EAAan+H,UAAU2sF,cAAgB,SAAUxwE,GAC7C,IAAI4iH,GAAa,QAAO5iH,GACpB4iH,KAAc/jI,KAAKujI,6BACZvjI,KAAKujI,sBAAsBQ,GAG9B/jI,KAAKqjI,gBACLrjI,KAAKqjI,eAAet1H,OAAOoT,GAGnCnhB,KAAK0kI,sBAAsBvjH,GAC3BnhB,KAAK2Y,SACT,EAMAwqH,EAAan+H,UAAU0/H,sBAAwB,SAAUvjH,GACrD,IAAI4iH,GAAa,QAAO5iH,GACxBnhB,KAAK0jI,mBAAmBK,GAAYt0H,QAAQ,aACrCzP,KAAK0jI,mBAAmBK,GAC/B,IAAI/wH,EAAKmO,EAAQ3I,aACNhC,IAAPxD,UACOhT,KAAKwjI,SAASxwH,EAAGjO,mBAErB/E,KAAKyjI,UAAUM,GACtB/jI,KAAKmR,cAAc,IAAI8xH,EAAkBlyC,EAAA,gBAA+B5vE,GAC5E,EAQAgiH,EAAan+H,UAAU0gI,mBAAqB,SAAUvkH,GAClD,IAAIwyE,GAAU,EACd,IAAK,IAAI3gF,KAAMhT,KAAKwjI,SAChB,GAAIxjI,KAAKwjI,SAASxwH,KAAQmO,EAAS,QACxBnhB,KAAKwjI,SAASxwH,GACrB2gF,GAAU,EACV,KACJ,CAEJ,OAAOA,CACX,EAOAwvC,EAAan+H,UAAU04E,UAAY,SAAUzK,GACzCjzE,KAAKk4E,QAAUjF,CACnB,EAMAkwD,EAAan+H,UAAUo4H,OAAS,SAAUpF,IACtC,OAAOh4H,KAAKk9E,QAAS,GACrBl9E,KAAK09E,UAAUwkD,EAAIlK,EAAKh4H,KAAKk9E,SACjC,EACOimD,CACX,CArxBiC,CAqxB/BvH,EAAA,GACF,wDCr7BA,SAMIqK,WAAY,aAMZC,cAAe,gBAMf5uF,MAAO,QAOP6uF,cAAe,+DCtBnB,SAKIC,gBAAiB,iBAKjBC,UAAW,YAKXC,UAAW,YAKXC,KAAM,uECzBFnyH,qBADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GA2GJ,QAzCyB,SAAUC,GAK/B,SAASitD,EAAIrsD,GACT,IACI3G,EAAU2G,GAAe,CAAC,EAC1BkE,OAAoC/C,IAAvB9H,EAAQ6K,WAA2B7K,EAAQ6K,WAAa,YACrEsmF,OAAgCrpF,IAArB9H,EAAQmxF,SACjBnxF,EAAQmxF,UACR,QAAU,CACRzjF,QAAQ,QAAqB7C,GAC7BukB,cAAepvB,EAAQovB,cACvBiC,QAASrxB,EAAQqxB,QACjBD,QAASpxB,EAAQoxB,QACjBo5F,SAAUxqH,EAAQwqH,WAqB1B,OAnBQzkH,EAAOzH,KAAKhN,KAAM,CACtB4lB,aAAclX,EAAQkX,aACtBkmB,UAAWp9B,EAAQo9B,UACnBvvB,YAAa7N,EAAQ6N,YACrB+6G,eAAgB5oH,EAAQ4oH,eACxBC,OAAQ7oH,EAAQ6oH,OAChBh+G,WAAYA,EACZi+G,2BAA4B9oH,EAAQ8oH,2BACpC33B,SAAUA,EACV1hF,iBAAkBzP,EAAQyP,iBAC1B8hF,eAAgBvxF,EAAQuxF,eACxBq5B,gBAAiB5qH,EAAQ4qH,gBACzBtB,IAAKtpH,EAAQspH,IACboI,KAAM1xH,EAAQ0xH,KACdzsF,WAAyBn9B,IAAlB9H,EAAQilC,OAAsBjlC,EAAQilC,MAC7Cpc,WAAY7oB,EAAQ6oB,WACpBimG,wBAAyB9uH,EAAQ8uH,wBACjCx9B,WAAYtxF,EAAQsxF,cAClBhgG,IAEV,CACA,OAtCAqU,EAAUqtD,EAAKjtD,GAsCRitD,CACX,CAxCwB,CAwCtB,2DCjHK,IAAI8kE,EAAsB,QAKtBC,EAA2B,CAClC3pB,uBAAuB,EACvB4pB,yBAAyB,yKCOlBC,EAAiB,UAUrB,SAAS7mH,EAAY8mH,EAAIC,EAAIv/C,GAChC,IAAIhhB,EAASghB,GAAcq/C,EACvBrjI,GAAO,QAAUsjI,EAAG,IACpBhwD,GAAO,QAAUiwD,EAAG,IACpBC,GAAelwD,EAAOtzE,GAAQ,EAC9ByjI,GAAc,QAAUF,EAAG,GAAKD,EAAG,IAAM,EACzCpgI,EAAIvE,KAAKwF,IAAIq/H,GAAe7kI,KAAKwF,IAAIq/H,GACrC7kI,KAAKwF,IAAIs/H,GACL9kI,KAAKwF,IAAIs/H,GACT9kI,KAAKiG,IAAI5E,GACTrB,KAAKiG,IAAI0uE,GACjB,OAAO,EAAItQ,EAASrkE,KAAK2H,MAAM3H,KAAKuF,KAAKhB,GAAIvE,KAAKuF,KAAK,EAAIhB,GAC/D,CAOA,SAASwgI,EAAkBxkH,EAAa8jD,GAEpC,IADA,IAAIljE,EAAS,EACJoH,EAAI,EAAGiL,EAAK+M,EAAYpf,OAAQoH,EAAIiL,EAAK,IAAKjL,EACnDpH,GAAU0c,EAAY0C,EAAYhY,GAAIgY,EAAYhY,EAAI,GAAI87D,GAE9D,OAAOljE,CACX,CAaO,SAASwS,EAAUgC,EAAUvC,GAChC,IAAI3G,EAAU2G,GAAe,CAAC,EAC1BixD,EAAS53D,EAAQ43D,QAAUqgE,EAC3BptH,EAAa7K,EAAQ6K,YAAc,YACnCnI,EAAOwG,EAAS4uB,UAChBp1B,IAAS,gCACTwG,EAAWA,EAASI,QAAQuP,UAAUhO,EAAY,cAEtD,IACIiJ,EAAahI,EAAQhQ,EAAGiL,EAAIc,EAAGwP,EAD/B3iB,EAAS,EAEb,OAAQgO,GACJ,KAAK,gBACL,KAAK,sBACD,MAEJ,KAAK,sBACL,KAAK,sBAEDhO,EAAS4jI,EADTxkH,EAAwE,EAAWg9B,iBAC3C8mB,GACxC,MAEJ,KAAK,4BACL,KAAK,kBAED,IAAK97D,EAAI,EAAGiL,GADZ+M,EAAwE,EAAWg9B,kBACtDp8C,OAAQoH,EAAIiL,IAAMjL,EAC3CpH,GAAU4jI,EAAkBxkH,EAAYhY,GAAI87D,GAEhD,MAEJ,KAAK,wBAED,IAAK97D,EAAI,EAAGiL,GADZ+M,EAAwE,EAAWg9B,kBACtDp8C,OAAQoH,EAAIiL,IAAMjL,EAE3C,IAAK+L,EAAI,EAAGwP,GADZvL,EAASgI,EAAYhY,IACGpH,OAAQmT,EAAIwP,IAAMxP,EACtCnT,GAAU4jI,EAAkBxsH,EAAOjE,GAAI+vD,GAG/C,MAEJ,KAAK,8BACD,IAAI7hB,EAA2E,EAAW8U,gBAC1F,IAAK/uD,EAAI,EAAGiL,EAAKgvC,EAAWrhD,OAAQoH,EAAIiL,IAAMjL,EAC1CpH,GAAUwS,EAAU6uC,EAAWj6C,GAAI6K,GAEvC,MAEJ,QACI,MAAM,IAAIlJ,MAAM,8BAAgCiF,GAGxD,OAAOhO,CACX,CAeA,SAAS6jI,EAAgBzkH,EAAa8jD,GAKlC,IAJA,IAAIxrB,EAAO,EACPj2C,EAAM2d,EAAYpf,OAClBO,EAAK6e,EAAY3d,EAAM,GAAG,GAC1BhB,EAAK2e,EAAY3d,EAAM,GAAG,GACrB2F,EAAI,EAAGA,EAAI3F,EAAK2F,IAAK,CAC1B,IAAIvG,EAAKue,EAAYhY,GAAG,GACpBrG,EAAKqe,EAAYhY,GAAG,GACxBswC,IACI,QAAU72C,EAAKN,IACV,EAAI1B,KAAKwF,KAAI,QAAU5D,IAAO5B,KAAKwF,KAAI,QAAUtD,KAC1DR,EAAKM,EACLJ,EAAKM,CACT,CACA,OAAQ22C,EAAOwrB,EAASA,EAAU,CACtC,CAWO,SAASzrB,EAAQjjC,EAAUvC,GAC9B,IAAI3G,EAAU2G,GAAe,CAAC,EAC1BixD,EAAS53D,EAAQ43D,QAAUqgE,EAC3BptH,EAAa7K,EAAQ6K,YAAc,YACnCnI,EAAOwG,EAAS4uB,UAChBp1B,IAAS,gCACTwG,EAAWA,EAASI,QAAQuP,UAAUhO,EAAY,cAEtD,IACIiJ,EAAahI,EAAQhQ,EAAGiL,EAAIc,EAAGwP,EAD/B+0B,EAAO,EAEX,OAAQ1pC,GACJ,KAAK,gBACL,KAAK,sBACL,KAAK,sBACL,KAAK,4BACL,KAAK,sBACD,MAEJ,KAAK,kBAGD,IAFAoR,EAAiE,EAAWg9B,iBAC5E1E,EAAO74C,KAAK2G,IAAIq+H,EAAgBzkH,EAAY,GAAI8jD,IAC3C97D,EAAI,EAAGiL,EAAK+M,EAAYpf,OAAQoH,EAAIiL,IAAMjL,EAC3CswC,GAAQ74C,KAAK2G,IAAIq+H,EAAgBzkH,EAAYhY,GAAI87D,IAErD,MAEJ,KAAK,wBAED,IAAK97D,EAAI,EAAGiL,GADZ+M,EAAwE,EAAWg9B,kBACtDp8C,OAAQoH,EAAIiL,IAAMjL,EAG3C,IAFAgQ,EAASgI,EAAYhY,GACrBswC,GAAQ74C,KAAK2G,IAAIq+H,EAAgBzsH,EAAO,GAAI8rD,IACvC/vD,EAAI,EAAGwP,EAAKvL,EAAOpX,OAAQmT,EAAIwP,IAAMxP,EACtCukC,GAAQ74C,KAAK2G,IAAIq+H,EAAgBzsH,EAAOjE,GAAI+vD,IAGpD,MAEJ,KAAK,8BACD,IAAI7hB,EAA2E,EAAW8U,gBAC1F,IAAK/uD,EAAI,EAAGiL,EAAKgvC,EAAWrhD,OAAQoH,EAAIiL,IAAMjL,EAC1CswC,GAAQD,EAAQ4J,EAAWj6C,GAAI6K,GAEnC,MAEJ,QACI,MAAM,IAAIlJ,MAAM,8BAAgCiF,GAGxD,OAAO0pC,CACX,CAYO,SAAS1Z,EAAOwlG,EAAInzF,EAAUyzF,EAAS5/C,GAC1C,IAAIhhB,EAASghB,GAAcq/C,EACvBrjI,GAAO,QAAUsjI,EAAG,IACpBnjI,GAAO,QAAUmjI,EAAG,IACpBO,EAAO1zF,EAAW6yB,EAClBsO,EAAM3yE,KAAKmlI,KAAKnlI,KAAKwF,IAAInE,GAAQrB,KAAKiG,IAAIi/H,GAC1CllI,KAAKiG,IAAI5E,GAAQrB,KAAKwF,IAAI0/H,GAAQllI,KAAKiG,IAAIg/H,IAC3C3yD,EAAM9wE,EACNxB,KAAK2H,MAAM3H,KAAKwF,IAAIy/H,GAAWjlI,KAAKwF,IAAI0/H,GAAQllI,KAAKiG,IAAI5E,GAAOrB,KAAKiG,IAAIi/H,GAAQllI,KAAKwF,IAAInE,GAAQrB,KAAKwF,IAAImtE,IAC/G,MAAO,EAAC,QAAUL,IAAM,QAAUK,GACtC,+BC/NO,SAASyyD,EAAUC,EAAQj8H,EAAOk8H,GACrC,IAAIC,OAAiChxH,IAAlB+wH,EAA8BD,EAAO/1F,QAAQg2F,GAAiB,GAAKD,EAClFj2F,EAAUm2F,EAAa90H,QAAQ,KAEnC,OADA2+B,GAAuB,IAAbA,EAAiBm2F,EAAapkI,OAASiuC,GAChChmC,EACXm8H,EACA,IAAIrmI,MAAM,EAAIkK,EAAQgmC,GAAS9+B,KAAK,KAAOi1H,CACrD,CAOO,SAASC,EAAgBzW,EAAIE,GAGhC,IAFA,IAAIwW,GAAM,GAAK1W,GAAI1gH,MAAM,KACrBq3H,GAAM,GAAKzW,GAAI5gH,MAAM,KAChB9F,EAAI,EAAGA,EAAIvI,KAAKm7B,IAAIsqG,EAAGtkI,OAAQukI,EAAGvkI,QAASoH,IAAK,CACrD,IAAIo9H,EAAK1kI,SAASwkI,EAAGl9H,IAAM,IAAK,IAC5Bq9H,EAAK3kI,SAASykI,EAAGn9H,IAAM,IAAK,IAChC,GAAIo9H,EAAKC,EACL,OAAO,EAEX,GAAIA,EAAKD,EACL,OAAQ,CAEhB,CACA,OAAO,CACX,6HCmKA,QAlL2B,WAIvB,SAASz3C,EAAM23C,GAIX9nI,KAAK+nI,OAAS,IAAI,IAAJ,CAAWD,GAOzB9nI,KAAKgoI,OAAS,CAAC,CACnB,CAgKA,OA1JA73C,EAAMnrF,UAAU+sF,OAAS,SAAU31E,EAAQ1b,GAEvC,IAAIsV,EAAO,CACPomB,KAAMhgB,EAAO,GACbkgB,KAAMlgB,EAAO,GACbigB,KAAMjgB,EAAO,GACbmgB,KAAMngB,EAAO,GACb1b,MAAOA,GAEXV,KAAK+nI,OAAOh2C,OAAO/7E,GACnBhW,KAAKgoI,QAAO,QAAOtnI,IAAUsV,CACjC,EAMAm6E,EAAMnrF,UAAUoY,KAAO,SAAU0iG,EAAS1yF,GAEtC,IADA,IAAI7e,EAAQ,IAAIpN,MAAMisB,EAAOhqB,QACpBoH,EAAI,EAAGwF,EAAIod,EAAOhqB,OAAQoH,EAAIwF,EAAGxF,IAAK,CAC3C,IAAI4R,EAAS0jG,EAAQt1G,GACjB9J,EAAQ0sB,EAAO5iB,GAEfwL,EAAO,CACPomB,KAAMhgB,EAAO,GACbkgB,KAAMlgB,EAAO,GACbigB,KAAMjgB,EAAO,GACbmgB,KAAMngB,EAAO,GACb1b,MAAOA,GAEX6N,EAAM/D,GAAKwL,EACXhW,KAAKgoI,QAAO,QAAOtnI,IAAUsV,CACjC,CACAhW,KAAK+nI,OAAO3qH,KAAK7O,EACrB,EAMA4hF,EAAMnrF,UAAU+I,OAAS,SAAUrN,GAC/B,IAAIsyF,GAAM,QAAOtyF,GAGbsV,EAAOhW,KAAKgoI,OAAOh1C,GAEvB,cADOhzF,KAAKgoI,OAAOh1C,GACiB,OAA7BhzF,KAAK+nI,OAAOh6H,OAAOiI,EAC9B,EAMAm6E,EAAMnrF,UAAUwa,OAAS,SAAUpD,EAAQ1b,GACvC,IAAIsV,EAAOhW,KAAKgoI,QAAO,QAAOtnI,IAC1BiyD,EAAO,CAAC38C,EAAKomB,KAAMpmB,EAAKsmB,KAAMtmB,EAAKqmB,KAAMrmB,EAAKumB,OAC7C,IAAA7F,QAAOi8B,EAAMv2C,KACdpc,KAAK+N,OAAOrN,GACZV,KAAK+xF,OAAO31E,EAAQ1b,GAE5B,EAKAyvF,EAAMnrF,UAAUggI,OAAS,WAErB,OADYhlI,KAAK+nI,OAAOhmH,MACX7T,KAAI,SAAU8H,GACvB,OAAOA,EAAKtV,KAChB,GACJ,EAMAyvF,EAAMnrF,UAAU6tF,YAAc,SAAUz2E,GAEpC,IAAIu2C,EAAO,CACPv2B,KAAMhgB,EAAO,GACbkgB,KAAMlgB,EAAO,GACbigB,KAAMjgB,EAAO,GACbmgB,KAAMngB,EAAO,IAGjB,OADYpc,KAAK+nI,OAAO5kI,OAAOwvD,GAClBzkD,KAAI,SAAU8H,GACvB,OAAOA,EAAKtV,KAChB,GACJ,EAQAyvF,EAAMnrF,UAAUyK,QAAU,SAAU/D,GAChC,OAAO1L,KAAKioI,SAASjoI,KAAKglI,SAAUt5H,EACxC,EAOAykF,EAAMnrF,UAAUkvF,gBAAkB,SAAU93E,EAAQ1Q,GAChD,OAAO1L,KAAKioI,SAASjoI,KAAK6yF,YAAYz2E,GAAS1Q,EACnD,EAOAykF,EAAMnrF,UAAUijI,SAAW,SAAU76G,EAAQ1hB,GAEzC,IADA,IAAIlM,EACKgL,EAAI,EAAGwF,EAAIod,EAAOhqB,OAAQoH,EAAIwF,EAAGxF,IAEtC,GADAhL,EAASkM,EAAS0hB,EAAO5iB,IAErB,OAAOhL,EAGf,OAAOA,CACX,EAIA2wF,EAAMnrF,UAAUyvB,QAAU,WACtB,OAAO,QAAQz0B,KAAKgoI,OACxB,EAIA73C,EAAMnrF,UAAU7E,MAAQ,WACpBH,KAAK+nI,OAAO5nI,QACZH,KAAKgoI,OAAS,CAAC,CACnB,EAKA73C,EAAMnrF,UAAUwY,UAAY,SAAU07B,GAClC,IAAI/mC,EAAOnS,KAAK+nI,OAAOG,SACvB,OAAO,IAAAtrG,gBAAezqB,EAAKiqB,KAAMjqB,EAAKmqB,KAAMnqB,EAAKkqB,KAAMlqB,EAAKoqB,KAAM2c,EACtE,EAIAi3C,EAAMnrF,UAAUwN,OAAS,SAAU21H,GAE/B,IAAK,IAAI39H,KADTxK,KAAK+nI,OAAO3qH,KAAK+qH,EAAMJ,OAAOhmH,OAChBomH,EAAMH,OAChBhoI,KAAKgoI,OAAOx9H,GAAK29H,EAAMH,OAAOx9H,EAEtC,EACO2lF,CACX,CAjL0B,kEClBlB/7E,8DADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAydJ,QAhbkC,SAAUC,GAKxC,SAAS2zH,EAAa15H,GAClB,IAAI9N,EAAQZ,KAIR+3G,OAA4CvhG,IAA3B9H,EAAQqpG,gBAA+BrpG,EAAQqpG,eA2EpE,OA1EAn3G,EAAQ6T,EAAOzH,KAAKhN,KAAM,CACtBo5F,QAAS,EACT2e,eAAgBA,EAChBp3F,cAA+BnK,IAArB9H,EAAQiS,SAAyBjS,EAAQiS,SAAW,EAC9D6wB,MAAO,EACP62F,kBAAuC7xH,IAAzB9H,EAAQ25H,aAA6B35H,EAAQ25H,aAAe,CAAC,EAAG,MAC5EroI,MAKAm4E,QAAU,CAAC,EAKjBv3E,EAAM0nI,oBAAsB,KAK5B1nI,EAAMy0G,WAAyB7+F,IAAjB9H,EAAQ4jE,KAAqB5jE,EAAQ4jE,KAAO,KAK1D1xE,EAAM2nI,QAAU,CAAC,EAAG,GAKpB3nI,EAAMwe,QAAU1Q,EAAQ+8C,OAKxB7qD,EAAM4nI,aACiBhyH,IAAnB9H,EAAQ43D,OAAuB53D,EAAQ43D,OAAS53D,EAAQ+5H,QAK5D7nI,EAAM8nI,SAAWh6H,EAAQi6H,QAKzB/nI,EAAMye,YAA2B7I,IAAlB9H,EAAQ2kC,MAAsB3kC,EAAQ2kC,MAAQ,EAK7DzyC,EAAMgoI,aAA6BpyH,IAAnB9H,EAAQ8jE,OAAuB9jE,EAAQ8jE,OAAS,KAKhE5xE,EAAMmkF,QAAU,KAKhBnkF,EAAMioI,MAAQ,KAKdjoI,EAAMu7H,WAAa,KAKnBv7H,EAAMkoI,uBAAyB,KAC/BloI,EAAMmiB,SACCniB,CACX,CAwVA,OA7aAyT,EAAU+zH,EAAc3zH,GA2FxB2zH,EAAapjI,UAAUgT,MAAQ,WAC3B,IAAI/H,EAAQ,IAAIm4H,EAAa,CACzB91D,KAAMtyE,KAAK4wG,UAAY5wG,KAAK4wG,UAAU54F,aAAUxB,EAChDi1C,OAAQzrD,KAAK6sD,YACbyZ,OAAQtmE,KAAKsyC,YACbq2F,QAAS3oI,KAAK+oI,aACd11F,MAAOrzC,KAAK+f,WACZyyD,OAAQxyE,KAAK8wG,YAAc9wG,KAAK8wG,YAAY94F,aAAUxB,EACtDmK,SAAU3gB,KAAKmnB,cACf4wF,eAAgB/3G,KAAK+rG,oBACrBs8B,aAAcroI,KAAKgpI,kBAAkBl8H,UAIzC,OAFAmD,EAAMiqF,WAAWl6F,KAAK25F,cACtB1pF,EAAMg5H,SAASjpI,KAAK89G,YACb7tG,CACX,EAOAm4H,EAAapjI,UAAU0mG,UAAY,WAC/B,OAAO1rG,KAAK+kF,OAChB,EAMAqjD,EAAapjI,UAAU+a,SAAW,WAC9B,OAAO/f,KAAKqf,MAChB,EAMA+oH,EAAapjI,UAAU4rG,QAAU,WAC7B,OAAO5wG,KAAKq1G,KAChB,EAIA+yB,EAAapjI,UAAU4mG,qBAAuB,WAC1C,IAAK5rG,KAAKsoI,oBAAqB,CAC3B,IAAIY,EAAgBlpI,KAAKmpI,sBACzBnpI,KAAKopI,0BAA0BF,EACnC,CACA,OAAOlpI,KAAKsoI,mBAChB,EAOAF,EAAapjI,UAAU+X,SAAW,SAAUT,GACxC,IAAKtc,KAAKm4E,QAAQ77D,GAAc,GAAI,CAChC,IAAI4sH,EAAgBlpI,KAAKmpI,sBACrB7pI,GAAU,QAAsB4pI,EAAcxoH,KAAOpE,GAAc,EAAG4sH,EAAcxoH,KAAOpE,GAAc,GAC7Gtc,KAAKqpI,MAAMH,EAAe5pI,EAAS,EAAG,EAAGgd,GAAc,GACvDtc,KAAKm4E,QAAQ77D,GAAc,GAAKhd,EAAQof,MAC5C,CACA,OAAO1e,KAAKm4E,QAAQ77D,GAAc,EACtC,EAKA8rH,EAAapjI,UAAUyY,cAAgB,SAAUnB,GAC7C,OAAOA,CACX,EAIA8rH,EAAapjI,UAAUq4G,aAAe,WAClC,OAAOr9G,KAAKm8H,UAChB,EAIAiM,EAAapjI,UAAUskI,yBAA2B,WAC9C,OAAOtpI,KAAK8oI,sBAChB,EAIAV,EAAapjI,UAAU6qH,cAAgB,WACnC,OAAO53C,EAAA,QACX,EAMAmwD,EAAapjI,UAAU8mG,UAAY,WAC/B,OAAO9rG,KAAKuoI,OAChB,EAMAH,EAAapjI,UAAU6nD,UAAY,WAC/B,OAAO7sD,KAAKof,OAChB,EAMAgpH,EAAapjI,UAAUstC,UAAY,WAC/B,OAAOtyC,KAAKwoI,OAChB,EAMAJ,EAAapjI,UAAU+jI,WAAa,WAChC,OAAO/oI,KAAK0oI,QAChB,EAMAN,EAAapjI,UAAU6K,QAAU,WAC7B,OAAO7P,KAAK6oI,KAChB,EAMAT,EAAapjI,UAAU8rG,UAAY,WAC/B,OAAO9wG,KAAK4oI,OAChB,EAIAR,EAAapjI,UAAU0rH,kBAAoB,SAAU9iG,GAAY,EAIjEw6G,EAAapjI,UAAUoY,KAAO,WAAc,EAI5CgrH,EAAapjI,UAAUyrH,oBAAsB,SAAU7iG,GAAY,EAKnEw6G,EAAapjI,UAAUmkI,oBAAsB,WACzC,IAKIt5D,EALAy4B,EAAU,KACVS,EAAW,KACXK,EAAa,EACbX,EAAW,KACXG,EAAiB,EAEjB4H,EAAc,EA2BlB,OA1BIxwG,KAAK4oI,UAEe,QADpB/4D,EAAc7vE,KAAK4oI,QAAQ1gC,cAEvBr4B,EAAc,MAElBA,GAAc,OAAYA,QAENr5D,KADpBg6F,EAAcxwG,KAAK4oI,QAAQlnH,cAEvB8uF,EAAc,MAElB/H,EAAWzoG,KAAK4oI,QAAQpgC,cACxBI,EAAiB5oG,KAAK4oI,QAAQjgC,yBAEbnyF,KADjBuyF,EAAW/oG,KAAK4oI,QAAQ9/B,iBAEpBC,EAAW,WAGCvyF,KADhB8xF,EAAUtoG,KAAK4oI,QAAQvgC,gBAEnBC,EAAU,WAGK9xF,KADnB4yF,EAAappG,KAAK4oI,QAAQz/B,mBAEtBC,EAAa,OAId,CACHv5B,YAAaA,EACb2gC,YAAaA,EACb9vF,KAJO,GAAK1gB,KAAKwoI,QAAUh4B,GAAe,EAK1ClI,QAASA,EACTG,SAAUA,EACVG,eAAgBA,EAChBG,SAAUA,EACVK,WAAYA,EAEpB,EAIAg/B,EAAapjI,UAAU+d,OAAS,WAC5B,IAAImmH,EAAgBlpI,KAAKmpI,sBACrB7pI,GAAU,QAAsB4pI,EAAcxoH,KAAMwoH,EAAcxoH,MACtE1gB,KAAKqpI,MAAMH,EAAe5pI,EAAS,EAAG,EAAG,GACzCU,KAAKm4E,QAAQ,GAAK74E,EAAQof,OAE1B,IAAIgC,EAAOphB,EAAQof,OAAOrT,MACtB+hH,EAAY1sG,EACZ2nH,EAAeroI,KAAKgpI,kBACxBhpI,KAAK8oI,uBAAyB,CAACI,EAAcxoH,KAAMwoH,EAAcxoH,MACjE1gB,KAAKopI,0BAA0BF,GAC/BlpI,KAAK+kF,QAAU,CAACrkE,EAAO,EAAI2nH,EAAa,GAAI3nH,EAAO,EAAI2nH,EAAa,IACpEroI,KAAK6oI,MAAQ,CAACnoH,EAAMA,GACpB1gB,KAAKm8H,WAAa,CAAC/O,EAAWA,EAClC,EASAgb,EAAapjI,UAAUqkI,MAAQ,SAAUH,EAAe5pI,EAAS0C,EAAGD,EAAGua,GACnE,IAAI9R,EAAG++H,EAAQC,EAEflqI,EAAQ6+G,aAAa7hG,EAAY,EAAG,EAAGA,EAAY,EAAG,GAEtDhd,EAAQ0gE,UAAUh+D,EAAGD,GACrBzC,EAAQojG,YACR,IAAIj3C,EAASzrD,KAAKof,QAClB,GAAIqsC,IAAWhyB,IACXn6B,EAAQu4G,IAAIqxB,EAAcxoH,KAAO,EAAGwoH,EAAcxoH,KAAO,EAAG1gB,KAAKwoI,QAAS,EAAG,EAAIvmI,KAAKmlB,IAAI,OAEzF,CACD,IAAIuhH,OAA4BnyH,IAAlBxW,KAAK0oI,SAAyB1oI,KAAK0oI,SAAW1oI,KAAKwoI,QAIjE,IAHIG,IAAY3oI,KAAKwoI,UACjB/8E,GAAS,GAERjhD,EAAI,EAAGA,GAAKihD,EAAQjhD,IACrB++H,EAAc,EAAJ/+H,EAAQvI,KAAKmlB,GAAMqkC,EAASxpD,KAAKmlB,GAAK,EAAIpnB,KAAKqf,OACzDmqH,EAAUh/H,EAAI,GAAM,EAAIxK,KAAKwoI,QAAUG,EACvCrpI,EAAQsjG,OAAOsmC,EAAcxoH,KAAO,EAAI8oH,EAAUvnI,KAAKiG,IAAIqhI,GAASL,EAAcxoH,KAAO,EAAI8oH,EAAUvnI,KAAKwF,IAAI8hI,GAExH,CACA,GAAIvpI,KAAKq1G,MAAO,CACZ,IAAIzpE,EAAQ5rC,KAAKq1G,MAAMnN,WACT,OAAVt8D,IACAA,EAAQ,MAEZtsC,EAAQkf,WAAY,OAAYotB,GAChCtsC,EAAQgzE,MACZ,CACItyE,KAAK4oI,UACLtpI,EAAQuwE,YAAcq5D,EAAcr5D,YACpCvwE,EAAQ2pG,UAAYigC,EAAc14B,YAC9BlxG,EAAQ41G,aAAeg0B,EAAczgC,WACrCnpG,EAAQ41G,YAAYg0B,EAAczgC,UAClCnpG,EAAQspG,eAAiBsgC,EAActgC,gBAE3CtpG,EAAQgpG,QAAU4gC,EAAc5gC,QAChChpG,EAAQypG,SAAWmgC,EAAcngC,SACjCzpG,EAAQ8pG,WAAa8/B,EAAc9/B,WACnC9pG,EAAQkzE,UAEZlzE,EAAQw4G,WACZ,EAKAswB,EAAapjI,UAAUokI,0BAA4B,SAAUF,GAEzD,GADAlpI,KAAKsoI,oBAAsBtoI,KAAK+c,SAAS,GACrC/c,KAAKq1G,MAAO,CACZ,IAAIzpE,EAAQ5rC,KAAKq1G,MAAMnN,WAEnB9O,EAAU,EAUd,GATqB,iBAAVxtD,IACPA,GAAQ,QAAQA,IAEN,OAAVA,EACAwtD,EAAU,EAELj4F,MAAMkP,QAAQu7B,KACnBwtD,EAA2B,IAAjBxtD,EAAMxoC,OAAewoC,EAAM,GAAK,GAE9B,IAAZwtD,EAAe,CAGf,IAAI95F,GAAU,QAAsB4pI,EAAcxoH,KAAMwoH,EAAcxoH,MACtE1gB,KAAKsoI,oBAAsBhpI,EAAQof,OACnC1e,KAAKypI,wBAAwBP,EAAe5pI,EAAS,EAAG,EAC5D,CACJ,CACJ,EAQA8oI,EAAapjI,UAAUykI,wBAA0B,SAAUP,EAAe5pI,EAAS0C,EAAGD,GAElFzC,EAAQ0gE,UAAUh+D,EAAGD,GACrBzC,EAAQojG,YACR,IAAIj3C,EAASzrD,KAAKof,QAClB,GAAIqsC,IAAWhyB,IACXn6B,EAAQu4G,IAAIqxB,EAAcxoH,KAAO,EAAGwoH,EAAcxoH,KAAO,EAAG1gB,KAAKwoI,QAAS,EAAG,EAAIvmI,KAAKmlB,IAAI,OAEzF,CACD,IAAIuhH,OAA4BnyH,IAAlBxW,KAAK0oI,SAAyB1oI,KAAK0oI,SAAW1oI,KAAKwoI,QAC7DG,IAAY3oI,KAAKwoI,UACjB/8E,GAAS,GAEb,IAAIjhD,OAAI,EAAQg/H,OAAU,EAAQD,OAAS,EAC3C,IAAK/+H,EAAI,EAAGA,GAAKihD,EAAQjhD,IACrB++H,EAAc,EAAJ/+H,EAAQvI,KAAKmlB,GAAMqkC,EAASxpD,KAAKmlB,GAAK,EAAIpnB,KAAKqf,OACzDmqH,EAAUh/H,EAAI,GAAM,EAAIxK,KAAKwoI,QAAUG,EACvCrpI,EAAQsjG,OAAOsmC,EAAcxoH,KAAO,EAAI8oH,EAAUvnI,KAAKiG,IAAIqhI,GAASL,EAAcxoH,KAAO,EAAI8oH,EAAUvnI,KAAKwF,IAAI8hI,GAExH,CACAjqI,EAAQkf,UAAY,KACpBlf,EAAQgzE,OACJtyE,KAAK4oI,UACLtpI,EAAQuwE,YAAcq5D,EAAcr5D,YACpCvwE,EAAQ2pG,UAAYigC,EAAc14B,YAC9B04B,EAAczgC,WACdnpG,EAAQ41G,YAAYg0B,EAAczgC,UAClCnpG,EAAQspG,eAAiBsgC,EAActgC,gBAE3CtpG,EAAQkzE,UAEZlzE,EAAQw4G,WACZ,EACOswB,CACX,CA/aiC,CA+a/BzrH,EAAA,GCneF,IAAI,EAAwC,WACxC,IAAIvI,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GAuE5C,QA7CiC,SAAUC,GAKvC,SAASi1H,EAAYr0H,GACjB,IACI3G,EAAU2G,GAA4B,CAAC,EAQ3C,OAPQZ,EAAOzH,KAAKhN,KAAM,CACtByrD,OAAQhyB,IACR64C,KAAM5jE,EAAQ4jE,KACdhM,OAAQ53D,EAAQ43D,OAChBkM,OAAQ9jE,EAAQ8jE,OAChB61D,kBAAuC7xH,IAAzB9H,EAAQ25H,aAA6B35H,EAAQ25H,aAAe,CAAC,EAAG,MAC5EroI,IAEV,CA2BA,OA1CA,EAAU0pI,EAAaj1H,GAqBvBi1H,EAAY1kI,UAAUgT,MAAQ,WAC1B,IAAI/H,EAAQ,IAAIy5H,EAAY,CACxBp3D,KAAMtyE,KAAK4wG,UAAY5wG,KAAK4wG,UAAU54F,aAAUxB,EAChDg8D,OAAQxyE,KAAK8wG,YAAc9wG,KAAK8wG,YAAY94F,aAAUxB,EACtD8vD,OAAQtmE,KAAKsyC,YACb+1F,aAAcroI,KAAKgpI,kBAAkBl8H,UAIzC,OAFAmD,EAAMiqF,WAAWl6F,KAAK25F,cACtB1pF,EAAMg5H,SAASjpI,KAAK89G,YACb7tG,CACX,EAOAy5H,EAAY1kI,UAAU0iF,UAAY,SAAUphB,GACxCtmE,KAAKwoI,QAAUliE,EACftmE,KAAK+iB,QACT,EACO2mH,CACX,CA5CgC,CA4C9B,8DCjBF,QA1C0B,WAItB,SAASn3D,EAAKl9D,GACV,IAAI3G,EAAU2G,GAAe,CAAC,EAK9BrV,KAAK2pI,YAA2BnzH,IAAlB9H,EAAQk9B,MAAsBl9B,EAAQk9B,MAAQ,IAChE,CA6BA,OAvBA2mC,EAAKvtE,UAAUgT,MAAQ,WACnB,IAAI4zB,EAAQ5rC,KAAKkoG,WACjB,OAAO,IAAI31B,EAAK,CACZ3mC,MAAOzqC,MAAMkP,QAAQu7B,GAASA,EAAM9+B,QAAU8+B,QAASp1B,GAE/D,EAMA+7D,EAAKvtE,UAAUkjG,SAAW,WACtB,OAAOloG,KAAK2pI,MAChB,EAOAp3D,EAAKvtE,UAAUm4G,SAAW,SAAUvxE,GAChC5rC,KAAK2pI,OAAS/9F,CAClB,EACO2mC,CACX,CAzCyB,sFCPzB,QAKiB,cALjB,EAUkB,eAVlB,EAec,WAfd,EAoBe,gBCvBPn+D,kFADJC,GACID,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,GAWAo1H,EAAqB,KACrBC,EAA2B,SAAUp1H,GAUrC,SAASo1H,EAAUruH,EAAOI,EAAK8E,EAAMnE,EAAamyG,EAAY9iF,GAC1D,IAAIhrC,EAAQ6T,EAAOzH,KAAKhN,OAASA,KAgDjC,OA3CAY,EAAM0pG,mBAAqB,KAK3B1pG,EAAM8b,OAAUlB,GAAQ,IAAImB,MACR,OAAhBJ,IACiC3b,EAAY,OAAE2b,YAAcA,GAMjE3b,EAAMu3E,QAAU,CAAC,EAKjBv3E,EAAM+oI,OAAS/9F,EAKfhrC,EAAMgc,UAAY,KAKlBhc,EAAMkpI,YAAcpb,EAKpB9tH,EAAMioI,MAAQnoH,EAKd9f,EAAM6b,KAAOb,EAIbhb,EAAMmpI,SACCnpI,CACX,CA8KA,OAzOAyT,EAAUw1H,EAAWp1H,GAgErBo1H,EAAU7kI,UAAUglI,WAAa,WAC7B,QAAsBxzH,IAAlBxW,KAAK+pI,UAA0B/pI,KAAK8pI,cAAgB7xD,EAAA,SAAmB,CAClE2xD,IACDA,GAAqB,QAAsB,EAAG,IAElDA,EAAmB7sC,UAAU/8F,KAAK0c,OAAQ,EAAG,GAC7C,IACIktH,EAAmBtvB,aAAa,EAAG,EAAG,EAAG,GACzCt6G,KAAK+pI,UAAW,CACpB,CACA,MAAOloI,GACH+nI,EAAqB,KACrB5pI,KAAK+pI,UAAW,CACpB,CACJ,CACA,OAAyB,IAAlB/pI,KAAK+pI,QAChB,EAIAF,EAAU7kI,UAAUilI,qBAAuB,WACvCjqI,KAAKmR,cAAc+iB,EAAA,SACvB,EAIA21G,EAAU7kI,UAAUgY,kBAAoB,WACpChd,KAAK8pI,YAAc7xD,EAAA,QACnBj4E,KAAKid,iBACLjd,KAAKiqI,sBACT,EAIAJ,EAAU7kI,UAAUkY,iBAAmB,WACnCld,KAAK8pI,YAAc7xD,EAAA,SACfj4E,KAAK6oI,OACL7oI,KAAK0c,OAAOrR,MAAQrL,KAAK6oI,MAAM,GAC/B7oI,KAAK0c,OAAOzL,OAASjR,KAAK6oI,MAAM,IAGhC7oI,KAAK6oI,MAAQ,CAAC7oI,KAAK0c,OAAOrR,MAAOrL,KAAK0c,OAAOzL,QAEjDjR,KAAKid,iBACLjd,KAAKiqI,sBACT,EAKAJ,EAAU7kI,UAAU+X,SAAW,SAAUT,GAErC,OADAtc,KAAKkqI,cAAc5tH,GACZtc,KAAKm4E,QAAQ77D,GAActc,KAAKm4E,QAAQ77D,GAActc,KAAK0c,MACtE,EAKAmtH,EAAU7kI,UAAUyY,cAAgB,SAAUnB,GAE1C,OADAtc,KAAKkqI,cAAc5tH,GACZtc,KAAKm4E,QAAQ77D,GAAcA,EAAa,CACnD,EAIAutH,EAAU7kI,UAAU6qH,cAAgB,WAChC,OAAO7vH,KAAK8pI,WAChB,EAIAD,EAAU7kI,UAAU4mG,qBAAuB,WACvC,IAAK5rG,KAAKsqG,mBACN,GAAItqG,KAAKgqI,aAAc,CACnB,IAAI3+H,EAAQrL,KAAK6oI,MAAM,GACnB53H,EAASjR,KAAK6oI,MAAM,GACpBvpI,GAAU,QAAsB+L,EAAO4F,GAC3C3R,EAAQmf,SAAS,EAAG,EAAGpT,EAAO4F,GAC9BjR,KAAKsqG,mBAAqBhrG,EAAQof,MACtC,MAEI1e,KAAKsqG,mBAAqBtqG,KAAK0c,OAGvC,OAAO1c,KAAKsqG,kBAChB,EAKAu/B,EAAU7kI,UAAU6K,QAAU,WAC1B,OAAO7P,KAAK6oI,KAChB,EAIAgB,EAAU7kI,UAAUmlI,OAAS,WACzB,OAAOnqI,KAAKyc,IAChB,EAIAotH,EAAU7kI,UAAUoY,KAAO,WACvB,GAAIpd,KAAK8pI,aAAe7xD,EAAA,OAAiB,CACrCj4E,KAAK8pI,YAAc7xD,EAAA,UACnB,IACqCj4E,KAAW,OAAE4b,IAAM5b,KAAKyc,IAC7D,CACA,MAAO5a,GACH7B,KAAKgd,mBACT,CACAhd,KAAK4c,WAAY,OAAY5c,KAAK0c,OAAQ1c,KAAKkd,iBAAiBpO,KAAK9O,MAAOA,KAAKgd,kBAAkBlO,KAAK9O,MAC5G,CACJ,EAKA6pI,EAAU7kI,UAAUklI,cAAgB,SAAU5tH,GAC1C,GAAKtc,KAAK2pI,SAAU3pI,KAAKm4E,QAAQ77D,GAAjC,CAGA,IAAIoC,EAAS7R,SAASW,cAAc,UACpCxN,KAAKm4E,QAAQ77D,GAAcoC,EAC3BA,EAAOrT,MAAQpJ,KAAKk/B,KAAKnhC,KAAK0c,OAAOrR,MAAQiR,GAC7CoC,EAAOzN,OAAShP,KAAKk/B,KAAKnhC,KAAK0c,OAAOzL,OAASqL,GAC/C,IAAIiC,EAAMG,EAAOy2B,WAAW,MAG5B,GAFA52B,EAAIizB,MAAMl1B,EAAYA,GACtBiC,EAAIw+E,UAAU/8F,KAAK0c,OAAQ,EAAG,GAC1B1c,KAAKgqI,aAAc,CASnB,IAAI7+H,EAAInL,KAAK2pI,OAMb,OALAprH,EAAI0zG,yBAA2B,WAC/B1zG,EAAIC,UAAY,OAASrT,EAAE,GAAK,IAAMA,EAAE,GAAK,IAAMA,EAAE,GAAK,IAC1DoT,EAAIE,SAAS,EAAG,EAAGC,EAAOrT,MAAOqT,EAAOzN,QACxCsN,EAAI0zG,yBAA2B,sBAC/B1zG,EAAIw+E,UAAU/8F,KAAK0c,OAAQ,EAAG,EAElC,CAMA,IALA,IAAI0tH,EAAU7rH,EAAI+7F,aAAa,EAAG,EAAG57F,EAAOrT,MAAOqT,EAAOzN,QACtDkB,EAAOi4H,EAAQj4H,KACfrC,EAAI9P,KAAK2pI,OAAO,GAAK,IACrBl9H,EAAIzM,KAAK2pI,OAAO,GAAK,IACrBljI,EAAIzG,KAAK2pI,OAAO,GAAK,IAChBn/H,EAAI,EAAGiL,EAAKtD,EAAK/O,OAAQoH,EAAIiL,EAAIjL,GAAK,EAC3C2H,EAAK3H,IAAMsF,EACXqC,EAAK3H,EAAI,IAAMiC,EACf0F,EAAK3H,EAAI,IAAM/D,EAEnB8X,EAAI8rH,aAAaD,EAAS,EAAG,EAnC7B,CAoCJ,EAMAP,EAAU7kI,UAAUiY,eAAiB,WAC7Bjd,KAAK4c,YACL5c,KAAK4c,YACL5c,KAAK4c,UAAY,KAEzB,EACOitH,CACX,CA3O8B,CA2O5B,eCrQE,EAAwC,WACxC,IAAIz1H,EAAgB,SAAUhI,EAAG3F,GAI7B,OAHA2N,EAAgB5T,OAAO8T,gBAClB,CAAEhB,UAAW,cAAgBnS,OAAS,SAAUiL,EAAG3F,GAAK2F,EAAEkH,UAAY7M,CAAG,GAC1E,SAAU2F,EAAG3F,GAAK,IAAK,IAAIsD,KAAKtD,EAAOA,EAAE8N,eAAexK,KAAIqC,EAAErC,GAAKtD,EAAEsD,GAAI,EACtEqK,EAAchI,EAAG3F,EAC5B,EACA,OAAO,SAAU2F,EAAG3F,GAEhB,SAAS+N,IAAOxU,KAAKwT,YAAcpH,CAAG,CADtCgI,EAAchI,EAAG3F,GAEjB2F,EAAEpH,UAAkB,OAANyB,EAAajG,OAAO+S,OAAO9M,IAAM+N,EAAGxP,UAAYyB,EAAEzB,UAAW,IAAIwP,EACnF,CACH,CAZ2C,GAgExCkpG,EAAsB,SAAUjpG,GAKhC,SAASipG,EAAKroG,GACV,IAAIzU,EAAQZ,KACR0O,EAAU2G,GAAe,CAAC,EAI1B+jF,OAA8B5iF,IAApB9H,EAAQ0qF,QAAwB1qF,EAAQ0qF,QAAU,EAI5Dz4E,OAAgCnK,IAArB9H,EAAQiS,SAAyBjS,EAAQiS,SAAW,EAI/D6wB,OAA0Bh7B,IAAlB9H,EAAQ8iC,MAAsB9iC,EAAQ8iC,MAAQ,EAItDumE,OAA4CvhG,IAA3B9H,EAAQqpG,gBAA+BrpG,EAAQqpG,gBACpEn3G,EAAQ6T,EAAOzH,KAAKhN,KAAM,CACtBo5F,QAASA,EACTz4E,SAAUA,EACV6wB,MAAOA,EACP62F,kBAAuC7xH,IAAzB9H,EAAQ25H,aAA6B35H,EAAQ25H,aAAe,CAAC,EAAG,GAC9EtwB,eAAgBA,KACd/3G,MAKA+kF,aAA6BvuE,IAAnB9H,EAAQq0B,OAAuBr0B,EAAQq0B,OAAS,CAAC,GAAK,IAKtEniC,EAAM0pI,kBAAoB,KAK1B1pI,EAAM2pI,mBACuB/zH,IAAzB9H,EAAQ87H,aACF97H,EAAQ87H,aACRC,EAKV7pI,EAAM8pI,mBACuBl0H,IAAzB9H,EAAQivG,aACFjvG,EAAQivG,aACRC,EAAA,iBAKVh9G,EAAM+pI,mBACuBn0H,IAAzB9H,EAAQmvG,aACFnvG,EAAQmvG,aACRD,EAAA,iBAKVh9G,EAAMwd,kBACsB5H,IAAxB9H,EAAQ6N,YAA4B7N,EAAQ6N,YAAc,KAI9D,IAAIf,OAAwBhF,IAAhB9H,EAAQiN,IAAoBjN,EAAQiN,IAAM,KAIlDyhG,OAA8B5mG,IAApB9H,EAAQ0uG,QAAwB1uG,EAAQ0uG,QAAU,KAI5DxhG,EAAMlN,EAAQkN,KAClB,cAAiBpF,IAARoF,GAAqBJ,GAAQ,IACtC,QAAQA,GAAUA,GAAS4hG,EAAU,QACxB5mG,IAARoF,GAAoC,IAAfA,EAAIxY,SAAiBoY,IAC3CI,EAAsC,EAAQA,MAAO,QAAOJ,KAEhE,YAAehF,IAARoF,GAAqBA,EAAIxY,OAAS,EAAG,GAI5C,IAAIsrH,OAA6Bl4G,IAAhB9H,EAAQkN,IAAoBq8D,EAAA,OAAkBA,EAAA,SAmC/D,OA9BAr3E,EAAM+oI,YAA2BnzH,IAAlB9H,EAAQk9B,OAAsB,QAAQl9B,EAAQk9B,OAAS,KAKtEhrC,EAAMgqI,WDyGP,SAAapvH,EAAOI,EAAK8E,EAAMnE,EAAamyG,EAAY9iF,GAC3D,IAAIi/F,EAAY,QAAmBjvH,EAAKW,EAAaqvB,GAKrD,OAJKi/F,IACDA,EAAY,IAAIhB,EAAUruH,EAAOI,EAAK8E,EAAMnE,EAAamyG,EAAY9iF,GACrE,QAAmBhwB,EAAKW,EAAaqvB,EAAOi/F,IAEzCA,CACX,CChH2B5lI,CAAauW,EACV,EAAO4hG,EAASx8G,EAAMwd,aAAcswG,EAAY9tH,EAAM+oI,QAK5E/oI,EAAMkqI,aAA6Bt0H,IAAnB9H,EAAQ0yB,OAAuB1yB,EAAQ0yB,OAAS,CAAC,EAAG,GAKpExgC,EAAMmqI,mBACuBv0H,IAAzB9H,EAAQs8H,aACFt8H,EAAQs8H,aACRP,EAKV7pI,EAAM2nI,QAAU,KAKhB3nI,EAAMioI,WAAyBryH,IAAjB9H,EAAQgS,KAAqBhS,EAAQgS,KAAO,KACnD9f,CACX,CA0MA,OAzUA,EAAU88G,EAAMjpG,GAqIhBipG,EAAK14G,UAAUgT,MAAQ,WACnB,IAAIw5B,EAAQxxC,KAAK89G,WACjB,OAAO,IAAIJ,EAAK,CACZ36E,OAAQ/iC,KAAK+kF,QAAQj4E,QACrB09H,aAAcxqI,KAAKuqI,cACnB5sB,aAAc39G,KAAK0qI,cACnB7sB,aAAc79G,KAAK2qI,cACnBpuH,YAAavc,KAAKoe,aAClBwtB,MAAO5rC,KAAK2pI,QAAU3pI,KAAK2pI,OAAO78H,MAC5B9M,KAAK2pI,OAAO78H,QACZ9M,KAAK2pI,aAAUnzH,EACrBoF,IAAK5b,KAAKmqI,SACV/oG,OAAQphC,KAAK8qI,QAAQh+H,QACrBk+H,aAAchrI,KAAK+qI,cACnBrqH,KAAqB,OAAf1gB,KAAK6oI,MAAiB7oI,KAAK6oI,MAAM/7H,aAAU0J,EACjD4iF,QAASp5F,KAAK25F,aACdnoD,MAAOrwC,MAAMkP,QAAQmhC,GAASA,EAAM1kC,QAAU0kC,EAC9C7wB,SAAU3gB,KAAKmnB,cACf4wF,eAAgB/3G,KAAK+rG,qBAE7B,EAOA2R,EAAK14G,UAAU0mG,UAAY,WACvB,GAAI1rG,KAAKsqI,kBACL,OAAOtqI,KAAKsqI,kBAEhB,IAAIvnG,EAAS/iC,KAAK+kF,QACdrkE,EAAO1gB,KAAK6P,UAChB,GAAI7P,KAAK0qI,eAAiB9sB,EAAA,kBACtB59G,KAAK2qI,eAAiB/sB,EAAA,iBAA0B,CAChD,IAAKl9F,EACD,OAAO,KAEXqiB,EAAS/iC,KAAK+kF,QAAQj4E,QAClB9M,KAAK0qI,eAAiB9sB,EAAA,mBACtB76E,EAAO,IAAMriB,EAAK,IAElB1gB,KAAK2qI,eAAiB/sB,EAAA,mBACtB76E,EAAO,IAAMriB,EAAK,GAE1B,CACA,GAAI1gB,KAAKuqI,eAAiBE,EAAqB,CAC3C,IAAK/pH,EACD,OAAO,KAEPqiB,IAAW/iC,KAAK+kF,UAChBhiD,EAAS/iC,KAAK+kF,QAAQj4E,SAEtB9M,KAAKuqI,eAAiBE,GACtBzqI,KAAKuqI,eAAiBE,IACtB1nG,EAAO,IAAMA,EAAO,GAAKriB,EAAK,IAE9B1gB,KAAKuqI,eAAiBE,GACtBzqI,KAAKuqI,eAAiBE,IACtB1nG,EAAO,IAAMA,EAAO,GAAKriB,EAAK,GAEtC,CAEA,OADA1gB,KAAKsqI,kBAAoBvnG,EAClB/iC,KAAKsqI,iBAChB,EAQA5sB,EAAK14G,UAAUimI,UAAY,SAAUloG,GACjC/iC,KAAK+kF,QAAUhiD,EACf/iC,KAAKsqI,kBAAoB,IAC7B,EAMA5sB,EAAK14G,UAAUkjG,SAAW,WACtB,OAAOloG,KAAK2pI,MAChB,EAOAjsB,EAAK14G,UAAU+X,SAAW,SAAUT,GAChC,OAAOtc,KAAK4qI,WAAW7tH,SAAST,EACpC,EAOAohG,EAAK14G,UAAUyY,cAAgB,SAAUnB,GACrC,OAAOtc,KAAK4qI,WAAWntH,cAAcnB,EACzC,EAIAohG,EAAK14G,UAAUq4G,aAAe,WAC1B,OAAOr9G,KAAK4qI,WAAW/6H,SAC3B,EAIA6tG,EAAK14G,UAAUskI,yBAA2B,WACtC,OAAOtpI,KAAKq9G,cAChB,EAIAK,EAAK14G,UAAU6qH,cAAgB,WAC3B,OAAO7vH,KAAK4qI,WAAW/a,eAC3B,EAIAnS,EAAK14G,UAAU4mG,qBAAuB,WAClC,OAAO5rG,KAAK4qI,WAAWh/B,sBAC3B,EAMA8R,EAAK14G,UAAU8mG,UAAY,WACvB,GAAI9rG,KAAKuoI,QACL,OAAOvoI,KAAKuoI,QAEhB,IAAInnG,EAASphC,KAAK8qI,QACdzC,EAAeroI,KAAKgpI,kBACxB,GAAIhpI,KAAK+qI,eAAiBN,EAAqB,CAC3C,IAAI/pH,EAAO1gB,KAAK6P,UACZq7H,EAAgBlrI,KAAK4qI,WAAW/6H,UACpC,IAAK6Q,IAASwqH,EACV,OAAO,KAEX9pG,EAASA,EAAOt0B,QACZ9M,KAAK+qI,eAAiBN,GACtBzqI,KAAK+qI,eAAiBN,IACtBrpG,EAAO,GAAK8pG,EAAc,GAAKxqH,EAAK,GAAK0gB,EAAO,IAEhDphC,KAAK+qI,eAAiBN,GACtBzqI,KAAK+qI,eAAiBN,IACtBrpG,EAAO,GAAK8pG,EAAc,GAAKxqH,EAAK,GAAK0gB,EAAO,GAExD,CAIA,OAHAA,EAAO,IAAMinG,EAAa,GAC1BjnG,EAAO,IAAMinG,EAAa,GAC1BroI,KAAKuoI,QAAUnnG,EACRphC,KAAKuoI,OAChB,EAMA7qB,EAAK14G,UAAUmlI,OAAS,WACpB,OAAOnqI,KAAK4qI,WAAWT,QAC3B,EAMAzsB,EAAK14G,UAAU6K,QAAU,WACrB,OAAQ7P,KAAK6oI,MAAoC7oI,KAAK6oI,MAAjC7oI,KAAK4qI,WAAW/6H,SACzC,EAIA6tG,EAAK14G,UAAU0rH,kBAAoB,SAAU9iG,GACzC5tB,KAAK4qI,WAAWr5H,iBAAiB2iB,EAAA,SAAkBtG,EACvD,EAQA8vF,EAAK14G,UAAUoY,KAAO,WAClBpd,KAAK4qI,WAAWxtH,MACpB,EAIAsgG,EAAK14G,UAAUyrH,oBAAsB,SAAU7iG,GAC3C5tB,KAAK4qI,WAAWl5H,oBAAoBwiB,EAAA,SAAkBtG,EAC1D,EACO8vF,CACX,CA3UyB,CA2UvB,KACF,qECrYA,SAKIytB,SAAU,WAKVnlB,OAAQ,sEC6EZ,SAAS1nG,EAAO1C,EAAKW,EAAaqvB,GAE9B,OAAOrvB,EAAc,IAAMX,EAAM,KADfgwB,GAAQ,QAASA,GAAS,OAEhD,CACA,IAMWw/F,EAAS,IAhGgB,WAChC,SAASC,IAKLrrI,KAAKsrI,OAAS,CAAC,EAKftrI,KAAKurI,WAAa,EAKlBvrI,KAAKwrI,cAAgB,EACzB,CA6DA,OAzDAH,EAAermI,UAAU7E,MAAQ,WAC7BH,KAAKsrI,OAAS,CAAC,EACftrI,KAAKurI,WAAa,CACtB,EAIAF,EAAermI,UAAUyzB,eAAiB,WACtC,OAAOz4B,KAAKurI,WAAavrI,KAAKwrI,aAClC,EAIAH,EAAermI,UAAUymI,OAAS,WAC9B,GAAIzrI,KAAKy4B,iBAAkB,CACvB,IAAIjuB,EAAI,EACR,IAAK,IAAImiB,KAAO3sB,KAAKsrI,OAAQ,CACzB,IAAIT,EAAY7qI,KAAKsrI,OAAO3+G,GACV,IAAP,EAANniB,MAAmBqgI,EAAUlnH,uBACvB3jB,KAAKsrI,OAAO3+G,KACjB3sB,KAAKurI,WAEf,CACJ,CACJ,EAOAF,EAAermI,UAAUC,IAAM,SAAU2W,EAAKW,EAAaqvB,GACvD,IAAIjf,EAAMrO,EAAO1C,EAAKW,EAAaqvB,GACnC,OAAOjf,KAAO3sB,KAAKsrI,OAAStrI,KAAKsrI,OAAO3+G,GAAO,IACnD,EAOA0+G,EAAermI,UAAUyR,IAAM,SAAUmF,EAAKW,EAAaqvB,EAAOi/F,GAC9D,IAAIl+G,EAAMrO,EAAO1C,EAAKW,EAAaqvB,GACnC5rC,KAAKsrI,OAAO3+G,GAAOk+G,IACjB7qI,KAAKurI,UACX,EAQAF,EAAermI,UAAU8xB,QAAU,SAAU40G,GACzC1rI,KAAKwrI,cAAgBE,EACrB1rI,KAAKyrI,QACT,EACOJ,CACX,CA/EmC,yECgPnC,QAnOgC,WAI5B,SAASM,EAAWj9H,GAKhB1O,KAAK2qG,SAAWj8F,EAAQ0qF,QAKxBp5F,KAAK8qG,gBAAkBp8F,EAAQqpG,eAK/B/3G,KAAKgnB,UAAYtY,EAAQiS,SAKzB3gB,KAAK+qG,OAASr8F,EAAQ8iC,MAKtBxxC,KAAK4rI,aAAc,QAAOl9H,EAAQ8iC,OAKlCxxC,KAAK6rI,cAAgBn9H,EAAQ25H,YACjC,CA8LA,OAxLAsD,EAAW3mI,UAAUgT,MAAQ,WACzB,IAAIw5B,EAAQxxC,KAAK89G,WACjB,OAAO,IAAI6tB,EAAW,CAClBvyC,QAASp5F,KAAK25F,aACdnoD,MAAOrwC,MAAMkP,QAAQmhC,GAASA,EAAM1kC,QAAU0kC,EAC9C7wB,SAAU3gB,KAAKmnB,cACf4wF,eAAgB/3G,KAAK+rG,oBACrBs8B,aAAcroI,KAAKgpI,kBAAkBl8H,SAE7C,EAMA6+H,EAAW3mI,UAAU20F,WAAa,WAC9B,OAAO35F,KAAK2qG,QAChB,EAMAghC,EAAW3mI,UAAU+mG,kBAAoB,WACrC,OAAO/rG,KAAK8qG,eAChB,EAMA6gC,EAAW3mI,UAAUmiB,YAAc,WAC/B,OAAOnnB,KAAKgnB,SAChB,EAMA2kH,EAAW3mI,UAAU84G,SAAW,WAC5B,OAAO99G,KAAK+qG,MAChB,EAKA4gC,EAAW3mI,UAAUgnG,cAAgB,WACjC,OAAOhsG,KAAK4rI,WAChB,EAMAD,EAAW3mI,UAAUgkI,gBAAkB,WACnC,OAAOhpI,KAAK6rI,aAChB,EAOAF,EAAW3mI,UAAU0mG,UAAY,WAC7B,OAAO,SACX,EAOAigC,EAAW3mI,UAAU+X,SAAW,SAAUT,GACtC,OAAO,SACX,EAKAqvH,EAAW3mI,UAAU4mG,qBAAuB,WACxC,OAAO,SACX,EAKA+/B,EAAW3mI,UAAUyY,cAAgB,SAAUnB,GAC3C,OAAO,CACX,EAKAqvH,EAAW3mI,UAAU6qH,cAAgB,WACjC,OAAO,SACX,EAKA8b,EAAW3mI,UAAUq4G,aAAe,WAChC,OAAO,SACX,EAKAsuB,EAAW3mI,UAAUskI,yBAA2B,WAC5C,OAAO,SACX,EAMAqC,EAAW3mI,UAAU8mG,UAAY,WAC7B,OAAO,SACX,EAMA6/B,EAAW3mI,UAAU6K,QAAU,WAC3B,OAAO,SACX,EAOA87H,EAAW3mI,UAAUk1F,WAAa,SAAUd,GACxCp5F,KAAK2qG,SAAWvR,CACpB,EAOAuyC,EAAW3mI,UAAU8mI,kBAAoB,SAAU/zB,GAC/C/3G,KAAK8qG,gBAAkBiN,CAC3B,EAOA4zB,EAAW3mI,UAAUsiB,YAAc,SAAU3G,GACzC3gB,KAAKgnB,UAAYrG,CACrB,EAOAgrH,EAAW3mI,UAAUikI,SAAW,SAAUz3F,GACtCxxC,KAAK+qG,OAASv5D,EACdxxC,KAAK4rI,aAAc,QAAOp6F,EAC9B,EAKAm6F,EAAW3mI,UAAU0rH,kBAAoB,SAAU9iG,IAC/C,SACJ,EAKA+9G,EAAW3mI,UAAUoY,KAAO,YACxB,SACJ,EAKAuuH,EAAW3mI,UAAUyrH,oBAAsB,SAAU7iG,IACjD,SACJ,EACO+9G,CACX,CAlO+B,6DC8L/B,QA1L4B,WAIxB,SAASt8D,EAAOh6D,GACZ,IAAI3G,EAAU2G,GAAe,CAAC,EAK9BrV,KAAK2pI,YAA2BnzH,IAAlB9H,EAAQk9B,MAAsBl9B,EAAQk9B,MAAQ,KAK5D5rC,KAAK+rI,SAAWr9H,EAAQ45F,QAKxBtoG,KAAKgsI,eAAiCx1H,IAArB9H,EAAQ+5F,SAAyB/5F,EAAQ+5F,SAAW,KAKrEzoG,KAAKisI,gBAAkBv9H,EAAQk6F,eAK/B5oG,KAAKksI,UAAYx9H,EAAQq6F,SAKzB/oG,KAAKmsI,YAAcz9H,EAAQ06F,WAK3BppG,KAAKgrG,OAASt8F,EAAQrD,KAC1B,CA+IA,OAzIAgkE,EAAOrqE,UAAUgT,MAAQ,WACrB,IAAI4zB,EAAQ5rC,KAAKkoG,WACjB,OAAO,IAAI74B,EAAO,CACdzjC,MAAOzqC,MAAMkP,QAAQu7B,GAASA,EAAM9+B,QAAU8+B,QAASp1B,EACvD8xF,QAAStoG,KAAKqoG,aACdI,SAAUzoG,KAAKwoG,cAAgBxoG,KAAKwoG,cAAc17F,aAAU0J,EAC5DoyF,eAAgB5oG,KAAK2oG,oBACrBI,SAAU/oG,KAAK8oG,cACfM,WAAYppG,KAAKmpG,gBACjB99F,MAAOrL,KAAK0hB,YAEpB,EAMA2tD,EAAOrqE,UAAUkjG,SAAW,WACxB,OAAOloG,KAAK2pI,MAChB,EAMAt6D,EAAOrqE,UAAUqjG,WAAa,WAC1B,OAAOroG,KAAK+rI,QAChB,EAMA18D,EAAOrqE,UAAUwjG,YAAc,WAC3B,OAAOxoG,KAAKgsI,SAChB,EAMA38D,EAAOrqE,UAAU2jG,kBAAoB,WACjC,OAAO3oG,KAAKisI,eAChB,EAMA58D,EAAOrqE,UAAU8jG,YAAc,WAC3B,OAAO9oG,KAAKksI,SAChB,EAMA78D,EAAOrqE,UAAUmkG,cAAgB,WAC7B,OAAOnpG,KAAKmsI,WAChB,EAMA98D,EAAOrqE,UAAU0c,SAAW,WACxB,OAAO1hB,KAAKgrG,MAChB,EAOA37B,EAAOrqE,UAAUm4G,SAAW,SAAUvxE,GAClC5rC,KAAK2pI,OAAS/9F,CAClB,EAOAyjC,EAAOrqE,UAAUonI,WAAa,SAAU9jC,GACpCtoG,KAAK+rI,SAAWzjC,CACpB,EAaAj5B,EAAOrqE,UAAUkwG,YAAc,SAAUzM,GACrCzoG,KAAKgsI,UAAYvjC,CACrB,EAOAp5B,EAAOrqE,UAAUqnI,kBAAoB,SAAUzjC,GAC3C5oG,KAAKisI,gBAAkBrjC,CAC3B,EAOAv5B,EAAOrqE,UAAUsnI,YAAc,SAAUvjC,GACrC/oG,KAAKksI,UAAYnjC,CACrB,EAOA15B,EAAOrqE,UAAUunI,cAAgB,SAAUnjC,GACvCppG,KAAKmsI,YAAc/iC,CACvB,EAOA/5B,EAAOrqE,UAAUwnI,SAAW,SAAUnhI,GAClCrL,KAAKgrG,OAAS3/F,CAClB,EACOgkE,CACX,CAzL2B,sLCmHvB6C,EAAuB,WAIvB,SAASA,EAAM78D,GACX,IAAI3G,EAAU2G,GAAe,CAAC,EAK9BrV,KAAKkhF,UAAY,KAKjBlhF,KAAKqpF,kBAAoBojD,OACAj2H,IAArB9H,EAAQkJ,UACR5X,KAAK6X,YAAYnJ,EAAQkJ,UAM7B5X,KAAKq1G,WAAyB7+F,IAAjB9H,EAAQ4jE,KAAqB5jE,EAAQ4jE,KAAO,KAKzDtyE,KAAK0c,YAA2BlG,IAAlB9H,EAAQ8M,MAAsB9M,EAAQ8M,MAAQ,KAK5Dxb,KAAK0wB,eAAiCla,IAArB9H,EAAQ64F,SAAyB74F,EAAQ64F,SAAW,KAKrEvnG,KAAK4oI,aAA6BpyH,IAAnB9H,EAAQ8jE,OAAuB9jE,EAAQ8jE,OAAS,KAK/DxyE,KAAKkuG,WAAyB13F,IAAjB9H,EAAQrJ,KAAqBqJ,EAAQrJ,KAAO,KAKzDrF,KAAK0sI,QAAUh+H,EAAQ6U,MAC3B,CAqKA,OA/JA2uD,EAAMltE,UAAUgT,MAAQ,WACpB,IAAIJ,EAAW5X,KAAKqY,cAIpB,OAHIT,GAAgC,iBAAbA,IACnBA,EAAgE,EAAWI,SAExE,IAAIk6D,EAAM,CACbt6D,SAAUA,EACV06D,KAAMtyE,KAAK4wG,UAAY5wG,KAAK4wG,UAAU54F,aAAUxB,EAChDgF,MAAOxb,KAAK+c,WAAa/c,KAAK+c,WAAW/E,aAAUxB,EACnDg8D,OAAQxyE,KAAK8wG,YAAc9wG,KAAK8wG,YAAY94F,aAAUxB,EACtDnR,KAAMrF,KAAKm1D,UAAYn1D,KAAKm1D,UAAUn9C,aAAUxB,EAChD+M,OAAQvjB,KAAK05F,aAErB,EAOAxnB,EAAMltE,UAAUqd,YAAc,WAC1B,OAAOriB,KAAK0wB,SAChB,EAOAwhD,EAAMltE,UAAU2nI,YAAc,SAAUplC,GACpCvnG,KAAK0wB,UAAY62E,CACrB,EAQAr1B,EAAMltE,UAAUqT,YAAc,WAC1B,OAAOrY,KAAKkhF,SAChB,EAOAhP,EAAMltE,UAAUg5G,oBAAsB,WAClC,OAAOh+G,KAAKqpF,iBAChB,EAMAnX,EAAMltE,UAAU4rG,QAAU,WACtB,OAAO5wG,KAAKq1G,KAChB,EAMAnjC,EAAMltE,UAAU4nI,QAAU,SAAUt6D,GAChCtyE,KAAKq1G,MAAQ/iC,CACjB,EAMAJ,EAAMltE,UAAU+X,SAAW,WACvB,OAAO/c,KAAK0c,MAChB,EAMAw1D,EAAMltE,UAAUqY,SAAW,SAAU7B,GACjCxb,KAAK0c,OAASlB,CAClB,EAMA02D,EAAMltE,UAAU8rG,UAAY,WACxB,OAAO9wG,KAAK4oI,OAChB,EAMA12D,EAAMltE,UAAU6nI,UAAY,SAAUr6D,GAClCxyE,KAAK4oI,QAAUp2D,CACnB,EAMAN,EAAMltE,UAAUmwD,QAAU,WACtB,OAAOn1D,KAAKkuG,KAChB,EAMAh8B,EAAMltE,UAAU0tE,QAAU,SAAUrtE,GAChCrF,KAAKkuG,MAAQ7oG,CACjB,EAMA6sE,EAAMltE,UAAU00F,UAAY,WACxB,OAAO15F,KAAK0sI,OAChB,EASAx6D,EAAMltE,UAAU6S,YAAc,SAAUD,GACZ,mBAAbA,EACP5X,KAAKqpF,kBAAoBzxE,EAEA,iBAAbA,EACZ5X,KAAKqpF,kBAAoB,SAAUloE,GAC/B,OAA6DA,EAAQlc,IAAI2S,EAC7E,EAEMA,OAGYpB,IAAboB,IACL5X,KAAKqpF,kBAAoB,WACrB,OAA4D,CAChE,GALArpF,KAAKqpF,kBAAoBojD,EAO7BzsI,KAAKkhF,UAAYtpE,CACrB,EAOAs6D,EAAMltE,UAAUm1F,UAAY,SAAU52E,GAClCvjB,KAAK0sI,QAAUnpH,CACnB,EACO2uD,CACX,CAvN0B,GAgOnB,SAAS46D,EAAW51H,GACvB,IAAI2lG,EAQI1lG,EAPW,mBAARD,EACP2lG,EAAgB3lG,GAOZ/V,MAAMkP,QAAQ6G,GACdC,EAAWD,IAGX,OAAqD,mBAArB,EAAe,UAAkB,IAEjEC,EAAW,CADsB,IAGrC0lG,EAAgB,WACZ,OAAO1lG,CACX,GAEJ,OAAO0lG,CACX,CAIA,IAAIkwB,EAAgB,KAMb,SAASroC,EAAmBvjF,EAAS9E,GAMxC,IAAK0wH,EAAe,CAChB,IAAIz6D,EAAO,IAAI,UAAK,CAChB1mC,MAAO,0BAEP4mC,EAAS,IAAI,UAAO,CACpB5mC,MAAO,UACPvgC,MAAO,OAEX0hI,EAAgB,CACZ,IAAI76D,EAAM,CACN12D,MAAO,IAAI,UAAY,CACnB82D,KAAMA,EACNE,OAAQA,EACRlM,OAAQ,IAEZgM,KAAMA,EACNE,OAAQA,IAGpB,CACA,OAAOu6D,CACX,CAKO,SAAS9iD,IAEZ,IAAIlB,EAAS,CAAC,EACVikD,EAAQ,CAAC,IAAK,IAAK,IAAK,GACxBC,EAAO,CAAC,EAAG,IAAK,IAAK,GA2CzB,OAzCAlkD,EAAO,mBAAwB,CAC3B,IAAI7W,EAAM,CACNI,KAAM,IAAI,UAAK,CACX1mC,MAAO,CAAC,IAAK,IAAK,IAAK,SAInCm9C,EAAO,yBAA8BA,EAAO,mBAC5CA,EAAO,uBAA4B,CAC/B,IAAI7W,EAAM,CACNM,OAAQ,IAAI,UAAO,CACf5mC,MAAOohG,EACP3hI,MAAOA,MAGf,IAAI6mE,EAAM,CACNM,OAAQ,IAAI,UAAO,CACf5mC,MAAOqhG,EACP5hI,MAnBA,OAuBZ09E,EAAO,6BAAkCA,EAAO,uBAChDA,EAAO,kBAAuBA,EAAO,mBAAsBv2E,OAAOu2E,EAAO,wBACzEA,EAAO,iBAAsB,CACzB,IAAI7W,EAAM,CACN12D,MAAO,IAAI,UAAY,CACnB8qD,OAAQj7D,EACRinE,KAAM,IAAI,UAAK,CACX1mC,MAAOqhG,IAEXz6D,OAAQ,IAAI,UAAO,CACf5mC,MAAOohG,EACP3hI,MAAOA,QAGfkY,OAAQkW,OAGhBsvD,EAAO,uBAA4BA,EAAO,iBAC1CA,EAAO,+BAAoCA,EAAO,mBAAsBv2E,OAAOu2E,EAAO,uBAA2BA,EAAO,kBACjHA,CACX,CAMA,SAAS0jD,EAAwBtrH,GAC7B,OAAOA,EAAQ9I,aACnB,CACA,sGCHA,QApb0B,WAItB,SAAS85D,EAAK98D,GACV,IAAI3G,EAAU2G,GAAe,CAAC,EAK9BrV,KAAKktI,MAAQx+H,EAAQ0jE,KAKrBpyE,KAAKgnB,UAAYtY,EAAQiS,SAKzB3gB,KAAK8qG,gBAAkBp8F,EAAQqpG,eAK/B/3G,KAAK+qG,OAASr8F,EAAQ8iC,MAKtBxxC,KAAK4rI,aAAc,aAAyBp1H,IAAlB9H,EAAQ8iC,MAAsB9iC,EAAQ8iC,MAAQ,GAKxExxC,KAAKkuG,MAAQx/F,EAAQrJ,KAKrBrF,KAAKmtI,WAAaz+H,EAAQkkE,UAK1B5yE,KAAKotI,cAAgB1+H,EAAQ2jE,aAK7BryE,KAAKq1G,WACgB7+F,IAAjB9H,EAAQ4jE,KACF5jE,EAAQ4jE,KACR,IAAI,UAAK,CAAE1mC,MAxFJ,SA6FjB5rC,KAAKqtI,eACoB72H,IAArB9H,EAAQ0+F,SAAyB1+F,EAAQ0+F,SAAWnrG,KAAKmlB,GAAK,EAKlEpnB,KAAKstI,gBACqB92H,IAAtB9H,EAAQ2gG,UAA0B3gG,EAAQ2gG,UAAY,UAK1DrvG,KAAKutI,YAAc7+H,EAAQuhB,SAK3BjwB,KAAK4oI,aAA6BpyH,IAAnB9H,EAAQ8jE,OAAuB9jE,EAAQ8jE,OAAS,KAK/DxyE,KAAKwtI,cAA+Bh3H,IAApB9H,EAAQssE,QAAwBtsE,EAAQssE,QAAU,EAKlEh7E,KAAKytI,cAA+Bj3H,IAApB9H,EAAQusE,QAAwBvsE,EAAQusE,QAAU,EAKlEj7E,KAAK0tI,gBAAkBh/H,EAAQqhG,eACzBrhG,EAAQqhG,eACR,KAKN/vG,KAAK2tI,kBAAoBj/H,EAAQshG,iBAC3BthG,EAAQshG,iBACR,KAKNhwG,KAAK4tI,cAA+Bp3H,IAApB9H,EAAQm4B,QAAwB,KAAOn4B,EAAQm4B,OACnE,CAyUA,OAnUAsrC,EAAKntE,UAAUgT,MAAQ,WACnB,IAAIw5B,EAAQxxC,KAAK89G,WACjB,OAAO,IAAI3rC,EAAK,CACZC,KAAMpyE,KAAK+wG,UACX1B,UAAWrvG,KAAKmxG,eAChB/D,SAAUptG,KAAKkxG,cACfjhF,SAAUjwB,KAAKixG,cACftwF,SAAU3gB,KAAKmnB,cACf4wF,eAAgB/3G,KAAK+rG,oBACrBv6D,MAAOrwC,MAAMkP,QAAQmhC,GAASA,EAAM1kC,QAAU0kC,EAC9CnsC,KAAMrF,KAAKm1D,UACXyd,UAAW5yE,KAAKoxG,eAChB/+B,aAAcryE,KAAKqxG,kBACnB/+B,KAAMtyE,KAAK4wG,UAAY5wG,KAAK4wG,UAAU54F,aAAUxB,EAChDg8D,OAAQxyE,KAAK8wG,YAAc9wG,KAAK8wG,YAAY94F,aAAUxB,EACtDwkE,QAASh7E,KAAK0xG,aACdz2B,QAASj7E,KAAK4xG,aACd7B,eAAgB/vG,KAAKsxG,oBACftxG,KAAKsxG,oBAAoBt5F,aACzBxB,EACNw5F,iBAAkBhwG,KAAKuxG,sBACjBvxG,KAAKuxG,sBAAsBv5F,aAC3BxB,EACNqwB,QAAS7mC,KAAKwxG,cAEtB,EAMAr/B,EAAKntE,UAAUisG,YAAc,WACzB,OAAOjxG,KAAKutI,SAChB,EAMAp7D,EAAKntE,UAAU+rG,QAAU,WACrB,OAAO/wG,KAAKktI,KAChB,EAMA/6D,EAAKntE,UAAUksG,YAAc,WACzB,OAAOlxG,KAAKqtI,SAChB,EAMAl7D,EAAKntE,UAAUmsG,aAAe,WAC1B,OAAOnxG,KAAKstI,UAChB,EAMAn7D,EAAKntE,UAAU0sG,WAAa,WACxB,OAAO1xG,KAAKwtI,QAChB,EAMAr7D,EAAKntE,UAAU4sG,WAAa,WACxB,OAAO5xG,KAAKytI,QAChB,EAMAt7D,EAAKntE,UAAU4rG,QAAU,WACrB,OAAO5wG,KAAKq1G,KAChB,EAMAljC,EAAKntE,UAAU+mG,kBAAoB,WAC/B,OAAO/rG,KAAK8qG,eAChB,EAMA34B,EAAKntE,UAAUmiB,YAAc,WACzB,OAAOnnB,KAAKgnB,SAChB,EAMAmrD,EAAKntE,UAAU84G,SAAW,WACtB,OAAO99G,KAAK+qG,MAChB,EAKA54B,EAAKntE,UAAUgnG,cAAgB,WAC3B,OAAOhsG,KAAK4rI,WAChB,EAMAz5D,EAAKntE,UAAU8rG,UAAY,WACvB,OAAO9wG,KAAK4oI,OAChB,EAMAz2D,EAAKntE,UAAUmwD,QAAU,WACrB,OAAOn1D,KAAKkuG,KAChB,EAMA/7B,EAAKntE,UAAUosG,aAAe,WAC1B,OAAOpxG,KAAKmtI,UAChB,EAMAh7D,EAAKntE,UAAUqsG,gBAAkB,WAC7B,OAAOrxG,KAAKotI,aAChB,EAMAj7D,EAAKntE,UAAUssG,kBAAoB,WAC/B,OAAOtxG,KAAK0tI,eAChB,EAMAv7D,EAAKntE,UAAUusG,oBAAsB,WACjC,OAAOvxG,KAAK2tI,iBAChB,EAMAx7D,EAAKntE,UAAUwsG,WAAa,WACxB,OAAOxxG,KAAK4tI,QAChB,EAOAz7D,EAAKntE,UAAU6oI,YAAc,SAAU59G,GACnCjwB,KAAKutI,UAAYt9G,CACrB,EAOAkiD,EAAKntE,UAAU8oI,QAAU,SAAU17D,GAC/BpyE,KAAKktI,MAAQ96D,CACjB,EAOAD,EAAKntE,UAAU+oI,YAAc,SAAU3gC,GACnCptG,KAAKqtI,UAAYjgC,CACrB,EAOAj7B,EAAKntE,UAAUgpI,WAAa,SAAUhzD,GAClCh7E,KAAKwtI,SAAWxyD,CACpB,EAOA7I,EAAKntE,UAAUipI,WAAa,SAAUhzD,GAClCj7E,KAAKytI,SAAWxyD,CACpB,EAOA9I,EAAKntE,UAAUkpI,aAAe,SAAU7+B,GACpCrvG,KAAKstI,WAAaj+B,CACtB,EAOAl9B,EAAKntE,UAAU8mI,kBAAoB,SAAU/zB,GACzC/3G,KAAK8qG,gBAAkBiN,CAC3B,EAOA5lC,EAAKntE,UAAU4nI,QAAU,SAAUt6D,GAC/BtyE,KAAKq1G,MAAQ/iC,CACjB,EAOAH,EAAKntE,UAAUsiB,YAAc,SAAU3G,GACnC3gB,KAAKgnB,UAAYrG,CACrB,EAOAwxD,EAAKntE,UAAUikI,SAAW,SAAUz3F,GAChCxxC,KAAK+qG,OAASv5D,EACdxxC,KAAK4rI,aAAc,aAAiBp1H,IAAVg7B,EAAsBA,EAAQ,EAC5D,EAOA2gC,EAAKntE,UAAU6nI,UAAY,SAAUr6D,GACjCxyE,KAAK4oI,QAAUp2D,CACnB,EAOAL,EAAKntE,UAAU0tE,QAAU,SAAUrtE,GAC/BrF,KAAKkuG,MAAQ7oG,CACjB,EAOA8sE,EAAKntE,UAAUmpI,aAAe,SAAUv7D,GACpC5yE,KAAKmtI,WAAav6D,CACtB,EAOAT,EAAKntE,UAAUopI,gBAAkB,SAAU/7D,GACvCryE,KAAKotI,cAAgB/6D,CACzB,EAOAF,EAAKntE,UAAUqpI,kBAAoB,SAAU/7D,GACzCtyE,KAAK0tI,gBAAkBp7D,CAC3B,EAOAH,EAAKntE,UAAUspI,oBAAsB,SAAU97D,GAC3CxyE,KAAK2tI,kBAAoBn7D,CAC7B,EAOAL,EAAKntE,UAAUupI,WAAa,SAAU1nG,GAClC7mC,KAAK4tI,SAAW/mG,CACpB,EACOsrC,CACX,CAnbyB,iDCrCzB,SACItQ,MAAO,QACP2sE,KAAM,oCCIH,SAAS5xG,EAAerD,EAAGv3B,EAAGD,EAAG0sI,GACpC,YAAsBj4H,IAAlBi4H,GACAA,EAAc,GAAKl1G,EACnBk1G,EAAc,GAAKzsI,EACnBysI,EAAc,GAAK1sI,EACZ0sI,GAGA,CAACl1G,EAAGv3B,EAAGD,EAEtB,CAOO,SAAS2sI,EAAUn1G,EAAGv3B,EAAGD,GAC5B,OAAOw3B,EAAI,IAAMv3B,EAAI,IAAMD,CAC/B,CAMO,SAASuc,EAAOJ,GACnB,OAAOwwH,EAAUxwH,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAC3D,CAMO,SAASywH,EAAQhiH,GACpB,OAAOA,EAAIrc,MAAM,KAAKpC,IAAIq+B,OAC9B,CAKO,SAASqiG,EAAK1wH,GACjB,OAAQA,EAAU,IAAMA,EAAU,IAAMA,EAAU,EACtD,CAMO,SAAS2wH,EAAiB3wH,EAAW2hF,GACxC,IAAItmE,EAAIrb,EAAU,GACdlc,EAAIkc,EAAU,GACdnc,EAAImc,EAAU,GAClB,GAAI2hF,EAASr6D,aAAejM,GAAKA,EAAIsmE,EAASx6D,aAC1C,OAAO,EAEX,IACI3I,EADAtgB,EAASyjF,EAASriF,YAQtB,QAFIkf,EAJCtgB,EAIWyjF,EAASO,0BAA0BhkF,EAAQmd,GAH3CsmE,EAASivC,iBAAiBv1G,KAS/BmD,EAAUF,WAAWx6B,EAAGD,EAEvC,qOCtEIgtI,EAAe,CAAC,EAAG,EAAG,GAse1B,QAjc8B,WAI1B,SAASC,EAAStgI,GAed,IAAIsxB,EACJ,GAXAhgC,KAAK8/B,aAA8BtpB,IAApB9H,EAAQoxB,QAAwBpxB,EAAQoxB,QAAU,EAKjE9/B,KAAK8hC,aAAepzB,EAAQ4xB,aAC5B,QAAO,QAAStgC,KAAK8hC,cAAc,SAAUt7B,EAAGC,GAC5C,OAAOA,EAAID,CACf,IAAG,GAAO,KAGLkI,EAAQugI,QACT,IAAK,IAAIzkI,EAAI,EAAGiL,EAAKzV,KAAK8hC,aAAa1+B,OAAS,EAAGoH,EAAIiL,IAAMjL,EACzD,GAAKw1B,GAID,GAAIhgC,KAAK8hC,aAAat3B,GAAKxK,KAAK8hC,aAAat3B,EAAI,KAAOw1B,EAAY,CAChEA,OAAaxpB,EACb,KACJ,OANAwpB,EAAahgC,KAAK8hC,aAAat3B,GAAKxK,KAAK8hC,aAAat3B,EAAI,GActExK,KAAK6hC,YAAc7B,EAKnBhgC,KAAK+/B,QAAU//B,KAAK8hC,aAAa1+B,OAAS,EAK1CpD,KAAKuoI,aAA6B/xH,IAAnB9H,EAAQm9F,OAAuBn9F,EAAQm9F,OAAS,KAK/D7rG,KAAKkvI,SAAW,UACQ14H,IAApB9H,EAAQugI,UACRjvI,KAAKkvI,SAAWxgI,EAAQugI,SACxB,OAAOjvI,KAAKkvI,SAAS9rI,QAAUpD,KAAK8hC,aAAa1+B,OAAQ,KAE7D,IAAIgZ,EAAS1N,EAAQ0N,YACN5F,IAAX4F,GAAyBpc,KAAKuoI,SAAYvoI,KAAKkvI,WAC/ClvI,KAAKuoI,SAAU,IAAA3tF,YAAWx+B,KAE9B,QAASpc,KAAKuoI,SAAWvoI,KAAKkvI,UAAclvI,KAAKuoI,UAAYvoI,KAAKkvI,SAAW,IAK7ElvI,KAAKmvI,WAAa,UACQ34H,IAAtB9H,EAAQ0gI,YACRpvI,KAAKmvI,WAAazgI,EAAQ0gI,WAC1B,OAAOpvI,KAAKmvI,WAAW/rI,QAAUpD,KAAK8hC,aAAa1+B,OAAQ,KAM/DpD,KAAKqvI,eACoB74H,IAArB9H,EAAQwqH,SACFxqH,EAAQwqH,SACPl5H,KAAKmvI,WAEF,KADA,KAEd,QAASnvI,KAAKqvI,WAAarvI,KAAKmvI,YAC3BnvI,KAAKqvI,YAAcrvI,KAAKmvI,WAAa,IAK1CnvI,KAAK2+D,aAAqBnoD,IAAX4F,EAAuBA,EAAS,KAK/Cpc,KAAKsvI,gBAAkB,KAKvBtvI,KAAKuvI,SAAW,CAAC,EAAG,QACE/4H,IAAlB9H,EAAQ8gI,MACRxvI,KAAKsvI,gBAAkB5gI,EAAQ8gI,MAAMthI,KAAI,SAAUwS,EAAM6Y,GAErD,OADgB,IAAI4C,EAAA,EAAUl6B,KAAK27B,IAAI,EAAGld,EAAK,IAAKze,KAAKm7B,IAAI1c,EAAK,GAAK,GAAI,GAAIze,KAAK27B,IAAI,EAAGld,EAAK,IAAKze,KAAKm7B,IAAI1c,EAAK,GAAK,GAAI,GAEhI,GAAG1gB,MAEEoc,GACLpc,KAAKyvI,qBAAqBrzH,EAElC,CAoVA,OA3UA4yH,EAAShqI,UAAU0qI,iBAAmB,SAAUtzH,EAAQvQ,EAAMH,GAE1D,IADA,IAAIgxB,EAAY18B,KAAKogG,0BAA0BhkF,EAAQvQ,GAC9CrB,EAAIkyB,EAAUN,KAAM3mB,EAAKinB,EAAUL,KAAM7xB,GAAKiL,IAAMjL,EACzD,IAAK,IAAI+L,EAAImmB,EAAUJ,KAAMvW,EAAK2W,EAAUH,KAAMhmB,GAAKwP,IAAMxP,EACzD7K,EAAS,CAACG,EAAMrB,EAAG+L,GAG/B,EAQAy4H,EAAShqI,UAAU47F,gCAAkC,SAAU1iF,EAAWxS,EAAUikI,EAAez2F,GAC/F,IAAIxc,EAAW16B,EAAGD,EACd6tI,EAAkB,KAClBr2G,EAAIrb,EAAU,GAAK,EAQvB,IAPyB,IAArBle,KAAK6hC,aACL7/B,EAAIkc,EAAU,GACdnc,EAAImc,EAAU,IAGd0xH,EAAkB5vI,KAAK6hG,mBAAmB3jF,EAAWg7B,GAElD3f,GAAKv5B,KAAK8/B,SAAS,CAStB,GARyB,IAArB9/B,KAAK6hC,aACL7/B,EAAIC,KAAKC,MAAMF,EAAI,GACnBD,EAAIE,KAAKC,MAAMH,EAAI,GACnB26B,GAAY,OAAwB16B,EAAGA,EAAGD,EAAGA,EAAG4tI,IAGhDjzG,EAAY18B,KAAKogG,0BAA0BwvC,EAAiBr2G,EAAGo2G,GAE/DjkI,EAAS6tB,EAAGmD,GACZ,OAAO,IAETnD,CACN,CACA,OAAO,CACX,EAMAy1G,EAAShqI,UAAUwY,UAAY,WAC3B,OAAOxd,KAAK2+D,OAChB,EAMAqwE,EAAShqI,UAAUqgC,WAAa,WAC5B,OAAOrlC,KAAK+/B,OAChB,EAMAivG,EAAShqI,UAAUwgC,WAAa,WAC5B,OAAOxlC,KAAK8/B,OAChB,EAOAkvG,EAAShqI,UAAU8mG,UAAY,SAAUvyE,GACrC,OAAIv5B,KAAKuoI,QACEvoI,KAAKuoI,QAGLvoI,KAAKkvI,SAAS31G,EAE7B,EAOAy1G,EAAShqI,UAAU0Y,cAAgB,SAAU6b,GACzC,OAAOv5B,KAAK8hC,aAAavI,EAC7B,EAMAy1G,EAAShqI,UAAU4gC,eAAiB,WAChC,OAAO5lC,KAAK8hC,YAChB,EAOAktG,EAAShqI,UAAU07F,2BAA6B,SAAUxiF,EAAWyxH,EAAez2F,GAChF,GAAIh7B,EAAU,GAAKle,KAAK+/B,QAAS,CAC7B,GAAyB,IAArB//B,KAAK6hC,YAAmB,CACxB,IAAIzF,EAAsB,EAAfle,EAAU,GACjBoe,EAAsB,EAAfpe,EAAU,GACrB,OAAO,OAAwBke,EAAMA,EAAO,EAAGE,EAAMA,EAAO,EAAGqzG,EACnE,CACA,IAAIC,EAAkB5vI,KAAK6hG,mBAAmB3jF,EAAWg7B,GACzD,OAAOl5C,KAAKogG,0BAA0BwvC,EAAiB1xH,EAAU,GAAK,EAAGyxH,EAC7E,CACA,OAAO,IACX,EAQAX,EAAShqI,UAAU6qI,mBAAqB,SAAUt2G,EAAGmD,EAAWwc,GAC5D,IAAI2yD,EAAS7rG,KAAK8rG,UAAUvyE,GACxBld,EAAarc,KAAK0d,cAAc6b,GAChC2/F,GAAW,QAAOl5H,KAAKk/H,YAAY3lG,GAAIv5B,KAAKuvI,UAC5CnzG,EAAOyvE,EAAO,GAAKnvE,EAAUN,KAAO88F,EAAS,GAAK78G,EAClDggB,EAAOwvE,EAAO,IAAMnvE,EAAUL,KAAO,GAAK68F,EAAS,GAAK78G,EACxDigB,EAAOuvE,EAAO,GAAKnvE,EAAUJ,KAAO48F,EAAS,GAAK78G,EAClDkgB,EAAOsvE,EAAO,IAAMnvE,EAAUH,KAAO,GAAK28F,EAAS,GAAK78G,EAC5D,OAAO,IAAAugB,gBAAeR,EAAME,EAAMD,EAAME,EAAM2c,EAClD,EAQA81F,EAAShqI,UAAUo7F,0BAA4B,SAAUhkF,EAAQmd,EAAGo2G,GAChE,IAAIzxH,EAAY6wH,EAChB/uI,KAAK8vI,uBAAuB1zH,EAAO,GAAIA,EAAO,GAAImd,GAAG,EAAOrb,GAC5D,IAAIke,EAAOle,EAAU,GACjBoe,EAAOpe,EAAU,GAErB,OADAle,KAAK8vI,uBAAuB1zH,EAAO,GAAIA,EAAO,GAAImd,GAAG,EAAMrb,IACpD,OAAwBke,EAAMle,EAAU,GAAIoe,EAAMpe,EAAU,GAAIyxH,EAC3E,EAKAX,EAAShqI,UAAUy+F,mBAAqB,SAAUvlF,GAC9C,IAAI2tF,EAAS7rG,KAAK8rG,UAAU5tF,EAAU,IAClC7B,EAAarc,KAAK0d,cAAcQ,EAAU,IAC1Cg7G,GAAW,QAAOl5H,KAAKk/H,YAAYhhH,EAAU,IAAKle,KAAKuvI,UAC3D,MAAO,CACH1jC,EAAO,IAAM3tF,EAAU,GAAK,IAAOg7G,EAAS,GAAK78G,EACjDwvF,EAAO,IAAM3tF,EAAU,GAAK,IAAOg7G,EAAS,GAAK78G,EAEzD,EASA2yH,EAAShqI,UAAU68F,mBAAqB,SAAU3jF,EAAWg7B,GACzD,IAAI2yD,EAAS7rG,KAAK8rG,UAAU5tF,EAAU,IAClC7B,EAAarc,KAAK0d,cAAcQ,EAAU,IAC1Cg7G,GAAW,QAAOl5H,KAAKk/H,YAAYhhH,EAAU,IAAKle,KAAKuvI,UACvDnzG,EAAOyvE,EAAO,GAAK3tF,EAAU,GAAKg7G,EAAS,GAAK78G,EAChDigB,EAAOuvE,EAAO,IAAM3tF,EAAU,GAAK,GAAKg7G,EAAS,GAAK78G,EACtDggB,EAAOD,EAAO88F,EAAS,GAAK78G,EAC5BkgB,EAAOD,EAAO48F,EAAS,GAAK78G,EAChC,OAAO,IAAAugB,gBAAeR,EAAME,EAAMD,EAAME,EAAM2c,EAClD,EAYA81F,EAAShqI,UAAU+qI,kCAAoC,SAAU9jI,EAAYoQ,EAAYoyH,GACrF,OAAOzuI,KAAKgwI,gCAAgC/jI,EAAW,GAAIA,EAAW,GAAIoQ,GAAY,EAAOoyH,EACjG,EAcAO,EAAShqI,UAAUgrI,gCAAkC,SAAUhuI,EAAGD,EAAGsa,EAAY4zH,EAA2BxB,GACxG,IAAIl1G,EAAIv5B,KAAK+/F,kBAAkB1jF,GAC3Bm1B,EAAQn1B,EAAarc,KAAK0d,cAAc6b,GACxCsyE,EAAS7rG,KAAK8rG,UAAUvyE,GACxB2/F,GAAW,QAAOl5H,KAAKk/H,YAAY3lG,GAAIv5B,KAAKuvI,UAC5CW,EAAUD,EAA4B,GAAM,EAC5CE,EAAUF,EAA4B,GAAM,EAC5CG,EAAcnuI,KAAKC,OAAOF,EAAI6pG,EAAO,IAAMxvF,EAAa6zH,GACxDG,EAAcpuI,KAAKC,OAAO2pG,EAAO,GAAK9pG,GAAKsa,EAAa8zH,GACxDG,EAAc9+F,EAAQ4+F,EAAelX,EAAS,GAC9CqX,EAAc/+F,EAAQ6+F,EAAenX,EAAS,GASlD,OARI+W,GACAK,EAAaruI,KAAKk/B,KAAKmvG,GAAc,EACrCC,EAAatuI,KAAKk/B,KAAKovG,GAAc,IAGrCD,EAAaruI,KAAKC,MAAMouI,GACxBC,EAAatuI,KAAKC,MAAMquI,KAErB,QAAwBh3G,EAAG+2G,EAAYC,EAAY9B,EAC9D,EAgBAO,EAAShqI,UAAU8qI,uBAAyB,SAAU9tI,EAAGD,EAAGw3B,EAAG02G,EAA2BxB,GACtF,IAAI5iC,EAAS7rG,KAAK8rG,UAAUvyE,GACxBld,EAAarc,KAAK0d,cAAc6b,GAChC2/F,GAAW,QAAOl5H,KAAKk/H,YAAY3lG,GAAIv5B,KAAKuvI,UAC5CW,EAAUD,EAA4B,GAAM,EAC5CE,EAAUF,EAA4B,GAAM,EAC5CG,EAAcnuI,KAAKC,OAAOF,EAAI6pG,EAAO,IAAMxvF,EAAa6zH,GACxDG,EAAcpuI,KAAKC,OAAO2pG,EAAO,GAAK9pG,GAAKsa,EAAa8zH,GACxDG,EAAaF,EAAclX,EAAS,GACpCqX,EAAaF,EAAcnX,EAAS,GASxC,OARI+W,GACAK,EAAaruI,KAAKk/B,KAAKmvG,GAAc,EACrCC,EAAatuI,KAAKk/B,KAAKovG,GAAc,IAGrCD,EAAaruI,KAAKC,MAAMouI,GACxBC,EAAatuI,KAAKC,MAAMquI,KAErB,QAAwBh3G,EAAG+2G,EAAYC,EAAY9B,EAC9D,EASAO,EAAShqI,UAAU28F,yBAA2B,SAAU11F,EAAYstB,EAAGk1G,GACnE,OAAOzuI,KAAK8vI,uBAAuB7jI,EAAW,GAAIA,EAAW,GAAIstB,GAAG,EAAOk1G,EAC/E,EAKAO,EAAShqI,UAAUwrI,uBAAyB,SAAUtyH,GAClD,OAAOle,KAAK8hC,aAAa5jB,EAAU,GACvC,EASA8wH,EAAShqI,UAAUk6H,YAAc,SAAU3lG,GACvC,OAAIv5B,KAAKqvI,UACErvI,KAAKqvI,UAGLrvI,KAAKmvI,WAAW51G,EAE/B,EAKAy1G,EAAShqI,UAAU8pI,iBAAmB,SAAUv1G,GAC5C,OAAKv5B,KAAKsvI,gBAICtvI,KAAKsvI,gBAAgB/1G,GAHrB,IAKf,EASAy1G,EAAShqI,UAAU+6F,kBAAoB,SAAU1jF,EAAYmtB,GACzD,IAAIjQ,GAAI,QAAkBv5B,KAAK8hC,aAAczlB,EAAYmtB,GAAiB,GAC1E,OAAO,QAAMjQ,EAAGv5B,KAAK8/B,QAAS9/B,KAAK+/B,QACvC,EAKAivG,EAAShqI,UAAUyqI,qBAAuB,SAAUrzH,GAGhD,IAFA,IAAIhZ,EAASpD,KAAK8hC,aAAa1+B,OAC3BqtI,EAAiB,IAAItvI,MAAMiC,GACtBm2B,EAAIv5B,KAAK8/B,QAASvG,EAAIn2B,IAAUm2B,EACrCk3G,EAAel3G,GAAKv5B,KAAKogG,0BAA0BhkF,EAAQmd,GAE/Dv5B,KAAKsvI,gBAAkBmB,CAC3B,EACOzB,CACX,CAhc6B,0BCrCtB,SAAS0B,EAAiBn3H,GAC7B,IAAIsmF,EAAWtmF,EAAWosG,qBAK1B,OAJK9lB,IACDA,EA0GD,SAA6BtmF,EAAYo3H,EAAaC,EAAcC,GAEvE,OA1EG,SAAyBz0H,EAAQu0H,EAAaC,EAAcC,GAC/D,IAAI71F,EAAiD81F,EAAA,WACjDxwG,EAAcywG,EAAsB30H,EAwETu0H,UAxE8BC,GAC7D,OAAO,IAAI,EAAS,CAChBx0H,OAAQA,EACRyvF,QAAQ,IAAA9wD,WAAU3+B,EAAQ4+B,GAC1B1a,YAAaA,EACb44F,SAAU0X,GAElB,CAiEWI,CADMC,EAAqB13H,GA3GnB23H,SA6GnB,CA7GmBA,CAAoB33H,GAC/BA,EAAWqsG,mBAAmB/lB,IAE3BA,CACX,CAOO,SAASlsD,EAAMksD,EAAU3hF,EAAW3E,GACvC,IAAIggB,EAAIrb,EAAU,GACdlS,EAAS6zF,EAAS4D,mBAAmBvlF,GACrCsD,EAAmByvH,EAAqB13H,GAC5C,IAAK,IAAA6/B,oBAAmB53B,EAAkBxV,GAOtC,OAAOkS,EANP,IAAIuD,GAAa,IAAAC,UAASF,GACtBoyB,EAAa3xC,KAAKk/B,MAAM3f,EAAiB,GAAKxV,EAAO,IAAMyV,GAE/D,OADAzV,EAAO,IAAMyV,EAAamyB,EACnBisD,EAAS8B,yBAAyB31F,EAAQutB,EAKzD,CAqCO,SAAS43G,EAAU97H,GACtB,IAAI+7H,EAAa/7H,GAAe,CAAC,EAC7B+G,EAASg1H,EAAWh1H,SAAU,IAAAnX,KAAc,aAAauY,YACzD6zH,EAAc,CACdj1H,OAAQA,EACR0jB,QAASsxG,EAAWtxG,QACpBo5F,SAAUkY,EAAWlY,SACrB54F,YAAaywG,EAAsB30H,EAAQg1H,EAAWrxG,QAASqxG,EAAWlY,SAAUkY,EAAWtzG,gBAEnG,OAAO,IAAI,EAASuzG,EACxB,CAWA,SAASN,EAAsB30H,EAAQu0H,EAAaC,EAAcU,GAU9D,IATA,IAAIvxG,OAA0BvpB,IAAhBm6H,EAA4BA,EAAc,IACpD1/H,GAAS,IAAAkM,WAAUf,GACnB/Q,GAAQ,IAAAqW,UAAStF,GACjB88G,GAAW,aAAwB1iH,IAAjBo6H,EAA6BA,EAAe,KAC9D9yG,EAAgBwzG,EAAoB,EAClCA,EACArvI,KAAKm7B,IAAI/xB,EAAQ6tH,EAAS,GAAIjoH,EAASioH,EAAS,IAClD91H,EAAS28B,EAAU,EACnBO,EAAc,IAAIn/B,MAAMiC,GACnBm2B,EAAI,EAAGA,EAAIn2B,IAAUm2B,EAC1B+G,EAAY/G,GAAKuE,EAAgB77B,KAAKI,IAAI,EAAGk3B,GAEjD,OAAO+G,CACX,CAoBO,SAAS2wG,EAAqB13H,GAEjC,IAAI6C,GADJ7C,GAAa,IAAAtU,KAAcsU,IACHiE,YACxB,IAAKpB,EAAQ,CACT,IAAIm1H,EAAQ,IAAM,EAAA5wG,gBAAgBC,EAAA,WAAkBrnB,EAAWsnB,mBAC/DzkB,GAAS,IAAAwgB,iBAAgB20G,GAAOA,EAAMA,EAAMA,EAChD,CACA,OAAOn1H,CACX,uDCvIO,IAAIo1H,EAAmB,GAKnBC,EAAoB,sGCDxB,SAASC,EAAmBC,EAAU9xC,GACzC,IAAI+xC,EAAS,SACTC,EAAS,SACTC,EAAS,SACTC,EAAa,UACjB,OAAO,SAOG7zH,EAAW5B,EAAY/C,GAC7B,OAAK2E,EAIMyzH,EACFzkI,QAAQ0kI,EAAQ1zH,EAAU,GAAGnZ,YAC7BmI,QAAQ2kI,EAAQ3zH,EAAU,GAAGnZ,YAC7BmI,QAAQ4kI,EAAQ5zH,EAAU,GAAGnZ,YAC7BmI,QAAQ6kI,GAAY,WACrB,IAAIx4G,EAAIrb,EAAU,GACdwxF,EAAQ7P,EAASivC,iBAAiBv1G,GAGtC,OAFA,OAAOm2E,EAAO,KACNA,EAAMvyF,YAAce,EAAU,GAAK,GAClCnZ,UACb,SAbA,CAeP,CACL,CAMO,SAASitI,EAAoBC,EAAWpyC,GAG3C,IAFA,IAAIh7F,EAAMotI,EAAU7uI,OAChB8uI,EAAmB,IAAI/wI,MAAM0D,GACxB2F,EAAI,EAAGA,EAAI3F,IAAO2F,EACvB0nI,EAAiB1nI,GAAKknI,EAAmBO,EAAUznI,GAAIq1F,GAE3D,OAAOsyC,EAA2BD,EACtC,CAKO,SAASC,EAA2BD,GACvC,OAAgC,IAA5BA,EAAiB9uI,OACV8uI,EAAiB,GAErB,SAOGh0H,EAAW5B,EAAY/C,GAC7B,GAAK2E,EAGA,CACD,IAAI9S,GAAI,QAAc8S,GAClBhJ,GAAQ,QAAO9J,EAAG8mI,EAAiB9uI,QACvC,OAAO8uI,EAAiBh9H,GAAOgJ,EAAW5B,EAAY/C,EAC1D,CACH,CACL,CAcO,SAAS64H,EAAUpa,GACtB,IAAIoI,EAAO,GACPv9H,EAAQ,sBAAsBmpC,KAAKgsF,GACvC,GAAIn1H,EAAO,CAEP,IAAIwvI,EAAgBxvI,EAAM,GAAGugF,WAAW,GACpCkvD,EAAezvI,EAAM,GAAGugF,WAAW,GACnCD,OAAW,EACf,IAAKA,EAAWkvD,EAAelvD,GAAYmvD,IAAgBnvD,EACvDi9C,EAAK9tH,KAAK0lH,EAAI9qH,QAAQrK,EAAM,GAAIkgD,OAAOo0E,aAAah0C,KAExD,OAAOi9C,CACX,CAEA,GADAv9H,EAAQ,kBAAkBmpC,KAAKgsF,GACpB,CAGP,IADA,IAAIua,EAASrvI,SAASL,EAAM,GAAI,IACvB2H,EAAItH,SAASL,EAAM,GAAI,IAAK2H,GAAK+nI,EAAQ/nI,IAC9C41H,EAAK9tH,KAAK0lH,EAAI9qH,QAAQrK,EAAM,GAAI2H,EAAEzF,aAEtC,OAAOq7H,CACX,CAEA,OADAA,EAAK9tH,KAAK0lH,GACHoI,CACX,8HCxFO,SAAS7sH,IACZ,MAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3B,CAgBO,SAASi/H,EAASC,EAAYC,GACjC,IAAIC,EAAKF,EAAW,GAChBG,EAAKH,EAAW,GAChB7L,EAAK6L,EAAW,GAChBhtI,EAAKgtI,EAAW,GAChBI,EAAKJ,EAAW,GAChBK,EAAKL,EAAW,GAChBM,EAAKL,EAAW,GAChBM,EAAKN,EAAW,GAChB7L,EAAK6L,EAAW,GAChB9sI,EAAK8sI,EAAW,GAChBvrI,EAAKurI,EAAW,GAChBO,EAAKP,EAAW,GAOpB,OANAD,EAAW,GAAKE,EAAKI,EAAKnM,EAAKoM,EAC/BP,EAAW,GAAKG,EAAKG,EAAKttI,EAAKutI,EAC/BP,EAAW,GAAKE,EAAK9L,EAAKD,EAAKhhI,EAC/B6sI,EAAW,GAAKG,EAAK/L,EAAKphI,EAAKG,EAC/B6sI,EAAW,GAAKE,EAAKxrI,EAAKy/H,EAAKqM,EAAKJ,EACpCJ,EAAW,GAAKG,EAAKzrI,EAAK1B,EAAKwtI,EAAKH,EAC7BL,CACX,CA2BO,SAASS,EAAaT,EAAYC,GAOrC,OANAD,EAAW,GAAKC,EAAW,GAC3BD,EAAW,GAAKC,EAAW,GAC3BD,EAAW,GAAKC,EAAW,GAC3BD,EAAW,GAAKC,EAAW,GAC3BD,EAAW,GAAKC,EAAW,GAC3BD,EAAW,GAAKC,EAAW,GACpBD,CACX,CAUO,SAAS3yI,EAAMynB,EAAWtb,GAC7B,IAAIjK,EAAIiK,EAAW,GACflK,EAAIkK,EAAW,GAGnB,OAFAA,EAAW,GAAKsb,EAAU,GAAKvlB,EAAIulB,EAAU,GAAKxlB,EAAIwlB,EAAU,GAChEtb,EAAW,GAAKsb,EAAU,GAAKvlB,EAAIulB,EAAU,GAAKxlB,EAAIwlB,EAAU,GACzDtb,CACX,CA6BO,SAASknI,EAAUlhI,EAAQjQ,EAAGD,GACjC,OArE2ByE,EAqERxE,EArEWyE,EAqER,EArEW0E,EAqER,EArEWiB,EAqERrK,EArEWF,EAqER,EArEW8K,EAqER,GArElB4a,EAqELtV,GApED,GAAKzL,EACf+gB,EAAU,GAAK9gB,EACf8gB,EAAU,GAAKpc,EACfoc,EAAU,GAAKnb,EACfmb,EAAU,GAAK1lB,EACf0lB,EAAU,GAAK5a,EACR4a,EAPJ,IAAaA,EAAW/gB,EAAGC,EAAG0E,EAAGiB,EAAGvK,EAAG8K,CAsE9C,CAwBO,SAASymI,EAAQ7rH,EAAW4lD,EAAKC,EAAKxN,EAAI4H,EAAIn0B,EAAOg6B,EAAKC,GAC7D,IAAI7lE,EAAMxF,KAAKwF,IAAI4rC,GACfnrC,EAAMjG,KAAKiG,IAAImrC,GAOnB,OANA9rB,EAAU,GAAKq4C,EAAK13D,EACpBqf,EAAU,GAAKigD,EAAK//D,EACpB8f,EAAU,IAAMq4C,EAAKn4D,EACrB8f,EAAU,GAAKigD,EAAKt/D,EACpBqf,EAAU,GAAK8lD,EAAMzN,EAAK13D,EAAMolE,EAAM1N,EAAKn4D,EAAM0lE,EACjD5lD,EAAU,GAAK8lD,EAAM7F,EAAK//D,EAAM6lE,EAAM9F,EAAKt/D,EAAMklE,EAC1C7lD,CACX,CAiCO,SAAS8rH,EAAYphI,EAAQqQ,GAChC,IAqBwBg+F,EArBpBgzB,GAqBoBhzB,EArBFh+F,GAsBX,GAAKg+F,EAAI,GAAKA,EAAI,GAAKA,EAAI,IArBtC,OAAe,IAARgzB,EAAW,IAClB,IAAI9sI,EAAI8b,EAAO,GACX7b,EAAI6b,EAAO,GACXnX,EAAImX,EAAO,GACXlW,EAAIkW,EAAO,GACXzgB,EAAIygB,EAAO,GACX3V,EAAI2V,EAAO,GAOf,OANArQ,EAAO,GAAK7F,EAAIknI,EAChBrhI,EAAO,IAAMxL,EAAI6sI,EACjBrhI,EAAO,IAAM9G,EAAImoI,EACjBrhI,EAAO,GAAKzL,EAAI8sI,EAChBrhI,EAAO,IAAM9G,EAAIwB,EAAIP,EAAIvK,GAAKyxI,EAC9BrhI,EAAO,KAAOzL,EAAImG,EAAIlG,EAAI5E,GAAKyxI,EACxBrhI,CACX,CAeO,SAASlN,EAASu7G,GACrB,MAAO,UAAYA,EAAI/tG,KAAK,MAAQ,GACxC,CAjOW,IAAIpR,MAAM,gCCdd,SAASoyI,EAAa7sF,EAAKuT,GAC9B,IAAIu5E,EAAY,GAEhBhzI,OAAOgP,KAAKyqD,GAAQxqD,SAAQ,SAAUm+D,GAChB,OAAd3T,EAAO2T,SAA6Bp3D,IAAdyjD,EAAO2T,IAC7B4lE,EAAUlhI,KAAKs7D,EAAI,IAAM6lE,mBAAmBx5E,EAAO2T,IAE3D,IACA,IAAI8lE,EAAKF,EAAUjhI,KAAK,KAKxB,OADAm0C,GAA4B,KAF5BA,EAAMA,EAAIx5C,QAAQ,QAAS,KAEjBwF,QAAQ,KAAcg0C,EAAM,IAAMA,EAAM,KACrCgtF,CACjB,+CCnBO,SAASC,IACZ,OAAyB,WACrB,MAAM,IAAIxnI,MAAM,iCACnB,CAFuB,EAG5B,qCAMA,IAAIynI,EAAc,EAUX,SAASC,EAAO38H,GACnB,OAAOA,EAAI48H,SAAW58H,EAAI48H,OAAS/wF,SAAS6wF,GAChD,CAKO,IAAIG,EAAU,+NCbd,IAAIC,EAA0B,4CAM9B,SAASC,EAAgBt0F,EAAcu0F,GAC1C,OAAOC,IAAcF,gBAAgBt0F,EAAcu0F,EACvD,CASO,SAASE,EAAkBp+F,EAAMq+F,GACpC,OAAOC,EAAmBt+F,EAAMq+F,EAAqB,IAAI9hI,KAAK,GAClE,CAUO,SAAS+hI,EAAmBt+F,EAAMq+F,EAAqBE,GAC1D,GAAIv+F,EAAKwQ,UAAY2L,KAAKqiF,oBACtBx+F,EAAKwQ,UAAY2L,KAAKsiF,UAClBJ,EACAE,EAAYjiI,KAAKywC,OAAO/M,EAAK0+F,WAAWxnI,QAAQ,gBAAiB,KAGjEqnI,EAAYjiI,KAAK0jC,EAAK0+F,eAGzB,CACD,IAAI5yI,OAAI,EACR,IAAKA,EAAIk0C,EAAKtoC,WAAY5L,EAAGA,EAAIA,EAAEowD,YAC/BoiF,EAAmBxyI,EAAGuyI,EAAqBE,EAEnD,CACA,OAAOA,CACX,CAKO,SAASI,EAAWrxF,GACvB,MAAO,oBAAqBA,CAChC,CAOO,SAASsxF,EAAe5+F,EAAM2J,EAAc9qC,GAC/C,OAAOmhC,EAAK4+F,eAAej1F,EAAc9qC,IAAS,EACtD,CAOO,SAASouC,EAAM4xF,GAClB,OAAO,IAAIjS,WAAYC,gBAAgBgS,EAAK,kBAChD,CA+BO,SAASC,EAAgBC,EAAal+F,GACzC,OAAO,SAKGb,EAAMqJ,GACZ,IAAI3+C,EAAQq0I,EAAY/nI,UAAkBwJ,IAAbqgC,EAAyBA,EAAW72C,KAAMg2C,EAAMqJ,QAC/D7oC,IAAV9V,GACqC2+C,EAAYA,EAAYj8C,OAAS,GAChEkP,KAAK5R,EAElB,CACL,CASO,SAASs0I,EAAaD,EAAal+F,GACtC,OAAO,SAKGb,EAAMqJ,GACZ,IAAI3+C,EAAQq0I,EAAY/nI,UAAkBwJ,IAAbqgC,EAAyBA,EAAW72C,KAAMg2C,EAAMqJ,QAC/D7oC,IAAV9V,IACA2+C,EAAYA,EAAYj8C,OAAS,GAAK1C,EAE7C,CACL,CAyCO,SAASu0I,EAAyBF,EAAaG,EAAcr+F,GAChE,OAAO,SAKGb,EAAMqJ,GACZ,IAAI3+C,EAAQq0I,EAAY/nI,UAAkBwJ,IAAbqgC,EAAyBA,EAAW72C,KAAMg2C,EAAMqJ,QAC/D7oC,IAAV9V,IACqC2+C,EAAYA,EAAYj8C,OAAS,QACtCoT,IAAjB0+H,EAA6BA,EAAel/F,EAAK0K,WAC7ChgD,EAE1B,CACL,CAUO,SAASy0I,EAAkBC,EAAYv+F,GAC1C,OAAO,SAAUb,EAAMt1C,EAAO2+C,GAC1B+1F,EAAWpoI,UAAkBwJ,IAAbqgC,EAAyBA,EAAW72C,KAAMg2C,EAAMt1C,EAAO2+C,GAC5BA,EAAYA,EAAYj8C,OAAS,GACpD4yC,KACbroC,YAAYqoC,EAC3B,CACJ,CAaO,SAASq/F,EAAoBD,EAAYv+F,GAC5C,IAAIy+F,EAAeC,EACnB,OAAO,SAAUv/F,EAAMt1C,EAAO2+C,GAC1B,QAAsB7oC,IAAlB8+H,EAA6B,CAC7BA,EAAgB,CAAC,EACjB,IAAI5qF,EAAc,CAAC,EACnBA,EAAY1U,EAAK0K,WAAa00F,EAC9BE,EAAct/F,EAAK2J,cAAgB+K,EACnC6qF,EAAcC,EAAsBx/F,EAAK0K,UAC7C,CACA+0F,EAAUH,EAAeC,EAAa70I,EAAO2+C,EACjD,CACJ,CAcO,SAASm2F,EAAsBpzF,EAAcszF,GAChD,IAAIC,EAAgBvzF,EACpB,OAAO,SAOG1hD,EAAO2+C,EAAa+C,GAC1B,IACIpM,EADwCqJ,EAAYA,EAAYj8C,OAAS,GAC1D4yC,KACfqM,EAAWszF,EAKf,YAJiBn/H,IAAb6rC,IACAA,EAAWD,GAGR6xF,OADiCz9H,IAArBk/H,EAAiCA,EAAmB1/F,EAAK2J,aACjB,EAC9D,CACL,CAQO,IAAIi2F,EAA+BJ,IAYnC,SAASK,EAAavyF,EAAQ7D,GAGjC,IAFA,IAAIr8C,EAASq8C,EAAYr8C,OACrB0yI,EAAW,IAAI30I,MAAMiC,GAChBoH,EAAI,EAAGA,EAAIpH,IAAUoH,EAC1BsrI,EAAStrI,GAAK84C,EAAO7D,EAAYj1C,IAErC,OAAOsrI,CACX,CAWO,SAASC,EAAgBC,EAAeC,EAAWC,GAItD,IACI1rI,EAAGiL,EADH0gI,OAAkC3/H,IAApB0/H,EAAgCA,EAAkB,CAAC,EAErE,IAAK1rI,EAAI,EAAGiL,EAAKugI,EAAc5yI,OAAQoH,EAAIiL,IAAMjL,EAC7C2rI,EAAYH,EAAcxrI,IAAMyrI,EAEpC,OAAOE,CACX,CASO,SAASC,EAAUvvF,EAAW7Q,EAAMqJ,EAAaxI,GACpD,IAAI/0C,EACJ,IAAKA,EAAIk0C,EAAKkR,kBAAmBplD,EAAGA,EAAIA,EAAEwlD,mBAAoB,CAC1D,IAAIP,EAAUF,EAAU/kD,EAAE69C,cAC1B,QAAgBnpC,IAAZuwC,EAAuB,CACvB,IAAIsvF,EAAStvF,EAAQjlD,EAAE4+C,gBACRlqC,IAAX6/H,GACAA,EAAOrpI,KAAK6pC,EAAU/0C,EAAGu9C,EAEjC,CACJ,CACJ,CAYO,SAASi3F,EAAgBhzF,EAAQuD,EAAW7Q,EAAMqJ,EAAaxI,GAGlE,OAFAwI,EAAY/sC,KAAKgxC,GACjB8yF,EAAUvvF,EAAW7Q,EAAMqJ,EAAaxI,GACfwI,EAAYprC,KACzC,CAuBO,SAASwhI,EAAUH,EAAeC,EAAanoH,EAAQiyB,EAAak3F,EAAU1/F,GAGjF,IAFA,IACIn2C,EAAOs1C,EADP5yC,QAAuBoT,IAAb+/H,EAAyBA,EAAWnpH,GAAQhqB,OAEjDoH,EAAI,EAAGA,EAAIpH,IAAUoH,OAEZgM,KADd9V,EAAQ0sB,EAAO5iB,UAGEgM,KADbw/B,EAAOu/F,EAAYvoI,UAAkBwJ,IAAbqgC,EAAyBA,EAAW72C,KAAMU,EAAO2+C,OAA0B7oC,IAAb+/H,EAAyBA,EAAS/rI,QAAKgM,KAEzH8+H,EAAct/F,EAAK2J,cAAc3J,EAAK0K,WAAW1zC,KAAK6pC,EAAUb,EAAMt1C,EAAO2+C,EAI7F,CAwBO,SAASm3F,EAAoBlzF,EAAQgyF,EAAeC,EAAanoH,EAAQiyB,EAAak3F,EAAU1/F,GAGnG,OAFAwI,EAAY/sC,KAAKgxC,GACjBmyF,EAAUH,EAAeC,EAAanoH,EAAQiyB,EAAak3F,EAAU1/F,GAClCwI,EAAYprC,KACnD,CACA,IAAI0lD,OAAiBnjD,EAcd,SAASigI,IAIZ,YAHuBjgI,IAAnBmjD,GAAyD,oBAAlB+8E,gBACvC/8E,EAAiB,IAAI+8E,eAElB/8E,CACX,CACA,IAAIg9E,OAAYngI,EAeT,SAAS29H,IAIZ,YAHkB39H,IAAdmgI,GAA+C,oBAAb9pI,WAClC8pI,EAAY9pI,SAAS+pI,eAAeC,eAAe,GAAI,GAAI,OAExDF,CACX,8DC1dO,IAAIG,EAAa,EACbC,EAAa,EAEbC,EAAc,EACdC,EAAa,oBACbC,EAAUj1I,KAAKmlB,GAAG,EAOlB+vH,EAAQ,MAIRC,EAAM,oBACNC,EAAM,kBACNC,EAASr1I,KAAKmlB,GAAG,EACjBmwH,EAAmB,EAAVt1I,KAAKmlB,GAKdowH,EAAM,cCxBb,EAAU,CAGd,UAAoB,EACpB,QAAkB,eAClB,MAAgB,eAChB,QAAkB,gBAClB,QAAkB,eAClB,KAAe,gBACf,KAAe,eACf,QAAkB,iBAClB,OAAiB,gBACjB,SAAmB,SACnB,UAAoB,gBACpB,OAAiB,WACjB,KAAe,iBCff,SACE/wF,GAAI,CAAC+/D,SAAU,OACf,QAAS,CAACA,SAAU,KAAO,OCF7B,IAAIixB,EAAc,iBACH,SAAS50I,EAAMqU,EAAKyV,GACjC,GAAIzV,EAAIyV,GACN,OAAOzV,EAAIyV,GAMb,IAJA,IAGI+qH,EAHAloI,EAAOhP,OAAOgP,KAAK0H,GACnBygI,EAAOhrH,EAAIohD,cAAc7gE,QAAQuqI,EAAa,IAC9CjtI,GAAK,IAEAA,EAAIgF,EAAKpM,QAGhB,IAFAs0I,EAAUloI,EAAKhF,IACQujE,cAAc7gE,QAAQuqI,EAAa,MACrCE,EACnB,OAAOzgI,EAAIwgI,EAGjB,CCXe,WAASE,GACtB,IAWIC,EAAWC,EAAUC,EAXrBxpE,EAAO,CAAC,EACRypE,EAAWJ,EAAQtnI,MAAM,KAAKpC,KAAI,SAASZ,GAC7C,OAAOA,EAAEO,MACX,IAAGw2B,QAAO,SAAS79B,GACjB,OAAOA,CACT,IAAGyxI,QAAO,SAASluI,EAAGvD,GACpB,IAAI8J,EAAQ9J,EAAE8J,MAAM,KAGpB,OAFAA,EAAMgC,MAAK,GACXvI,EAAEuG,EAAM,GAAGy9D,eAAiBz9D,EAAM,GAC3BvG,CACT,GAAG,CAAC,GAEAkwD,EAAS,CACXpQ,KAAM,WACNquF,MAAO,YACPC,GAAI,SAAS7qI,GACXihE,EAAK4pE,GAAKzyI,WAAW4H,EACvB,EACA8qI,MAAO,SAAS9qI,GACdihE,EAAK8pE,KAAO/qI,EAAI8pI,CAClB,EACAkB,MAAO,SAAShrI,GACdihE,EAAKjrE,KAAOgK,EAAI8pI,CAClB,EACAmB,MAAO,SAASjrI,GACdihE,EAAKqI,KAAOtpE,EAAI8pI,CAClB,EACAoB,OAAQ,SAASlrI,GACfihE,EAAKiqE,OAASlrI,EAAI8pI,CACpB,EACAqB,MAAO,SAASnrI,GACdihE,EAAKmqE,MAAQprI,EAAI8pI,CACnB,EACAuB,MAAO,SAASrrI,GACdihE,EAAKqqE,MAAQtrI,EAAI8pI,CACnB,EACAyB,MAAO,SAASvrI,GACdihE,EAAKuqE,MAAQxrI,EAAI8pI,CACnB,EACAh0C,MAAO,SAAS91F,GACdihE,EAAK60B,MAAQ19F,WAAW4H,GAAK8pI,CAC/B,EACA2B,KAAM,SAASzrI,GACbihE,EAAKyqE,MAAQ1rI,EAAI8pI,CACnB,EACA6B,IAAK,SAAS3rI,GACZihE,EAAK1qC,GAAKn+B,WAAW4H,EACvB,EACA4rI,IAAK,SAAS5rI,GACZihE,EAAKzqC,GAAKp+B,WAAW4H,EACvB,EACA6rI,IAAK,SAAS7rI,GACZihE,EAAK6qE,GAAK1zI,WAAW4H,EACvB,EACAsgE,EAAG,SAAStgE,GACVihE,EAAK6qE,GAAK1zI,WAAW4H,EACvB,EACA9G,EAAG,SAAS8G,GACVihE,EAAK/nE,EAAId,WAAW4H,EACtB,EACA7G,EAAG,SAAS6G,GACVihE,EAAK9nE,EAAIf,WAAW4H,EACtB,EACA+rI,IAAK,WACH9qE,EAAK+qE,KAAM,CACb,EACAC,KAAM,SAASjsI,GACbihE,EAAKgrE,KAAOr2I,SAASoK,EAAG,GAC1B,EACAksI,MAAO,WACLjrE,EAAKkrE,UAAW,CAClB,EACAC,QAAS,SAASpsI,GAChBihE,EAAKorE,aAAersI,EAAEgD,MAAM,KAAKpC,KAAI,SAAS1H,GAC5C,OAAOd,WAAWc,EACpB,GACF,EACAggH,SAAU,SAASl5G,GACjBihE,EAAKi4C,SAAW9gH,WAAW4H,EAC7B,EACA+iC,MAAO,SAAS/iC,GACdihE,EAAKl+B,MAAQ/iC,EACb,IAAIssI,EAAO/2I,EAAMwtC,EAAO/iC,GACpBssI,IACFrrE,EAAKi4C,SAAWozB,EAAKpzB,SAEzB,EACAqzB,eAAgB,SAASvsI,GACvBihE,EAAKsrE,eAAiBvsI,EAAI8pI,CAC5B,EACA0C,GAAI,SAASxsI,GACX,IAAIwsI,EAAKj3I,EAAM,EAAeyK,GAC9BihE,EAAKsrE,gBAAkBC,GAAUp0I,WAAW4H,IAAM8pI,CACpD,EACA2C,SAAU,SAASzsI,GACP,UAANA,EACFihE,EAAKyrE,UAAY,OAGjBzrE,EAAKwrE,SAAWzsI,CAEpB,EACAi5G,KAAM,SAASj5G,GACb,IAAI2sI,EAAY,SACC,IAAb3sI,EAAElK,SAAuD,IAAvC62I,EAAUvnI,QAAQpF,EAAEP,OAAO,EAAG,MAAqD,IAAvCktI,EAAUvnI,QAAQpF,EAAEP,OAAO,EAAG,MAAqD,IAAvCktI,EAAUvnI,QAAQpF,EAAEP,OAAO,EAAG,MAC1IwhE,EAAKg4C,KAAOj5G,EAEhB,GAEF,IAAKuqI,KAAaG,EAChBF,EAAWE,EAASH,GAChBA,KAAa59E,EAEa,mBAD5B89E,EAAe99E,EAAO49E,IAEpBE,EAAaD,GAGbvpE,EAAKwpE,GAAgBD,EAIvBvpE,EAAKspE,GAAaC,EAMtB,MAH6B,iBAAnBvpE,EAAKyrE,WAA6C,UAAnBzrE,EAAKyrE,YAC5CzrE,EAAKyrE,UAAYzrE,EAAKyrE,UAAUjsE,eAE3BQ,CACT,CCtIA,QAqKA,SAAqB2rE,GAEnB,OADa,IAAItjF,EAAOsjF,GACV94B,QAChB,EAtKA,IAAI+4B,EAAU,EAMVC,EAAa,KACbC,EAAQ,WACRC,EAAU,cACVC,EAAY,QACZC,EAAS,cAEb,SAAS5jF,EAAOvxD,GACd,GAAoB,iBAATA,EACT,MAAM,IAAI8G,MAAM,gBAElBnM,KAAKqF,KAAOA,EAAKwI,OACjB7N,KAAKy6I,MAAQ,EACbz6I,KAAK06I,MAAQ,EACb16I,KAAK26I,KAAO,KACZ36I,KAAK4sE,MAAQ,GACb5sE,KAAK46I,cAAgB,KACrB56I,KAAK6c,MAAQs9H,CACf,CCvBA,SAASU,EAAM3jI,EAAKyV,EAAKjsB,GACnBS,MAAMkP,QAAQsc,KAChBjsB,EAAMo6I,QAAQnuH,GACdA,EAAM,MAER,IAAIouH,EAAQpuH,EAAM,CAAC,EAAIzV,EAEnBqrE,EAAM7hF,EAAMu3I,QAAO,SAAS+C,EAAQhlI,GAEtC,OADAilI,EAAMjlI,EAAMglI,GACLA,CACT,GAAGD,GACCpuH,IACFzV,EAAIyV,GAAO41D,EAEf,CAEO,SAAS04D,EAAM3tI,EAAG4J,GACvB,GAAK/V,MAAMkP,QAAQ/C,GAAnB,CAIA,IAAIqf,EAAMrf,EAAE4G,QAIZ,GAHY,cAARyY,IACFA,EAAMrf,EAAE4G,SAEO,IAAb5G,EAAElK,OACJ,OAAIjC,MAAMkP,QAAQ/C,EAAE,KAClB4J,EAAIyV,GAAO,CAAC,OACZsuH,EAAM3tI,EAAE,GAAI4J,EAAIyV,UAGlBzV,EAAIyV,GAAOrf,EAAE,IAGf,GAAKA,EAAElK,OAIP,GAAY,YAARupB,EAAJ,CAIA,GAAY,SAARA,EAKF,OAJMA,KAAOzV,IACXA,EAAIyV,GAAO,SAEbzV,EAAIyV,GAAKra,KAAKhF,GAOhB,IAAI9C,EACJ,OALKrJ,MAAMkP,QAAQsc,KACjBzV,EAAIyV,GAAO,CAAC,GAINA,GACN,IAAK,OACL,IAAK,SACL,IAAK,aAQH,OAPAzV,EAAIyV,GAAO,CACT9X,KAAMvH,EAAE,GAAGygE,cACXmtE,QAAS5tI,EAAE,SAEI,IAAbA,EAAElK,QACJ63I,EAAM3tI,EAAE,GAAI4J,EAAIyV,KAGpB,IAAK,WACL,IAAK,YASH,OARAzV,EAAIyV,GAAO,CACT9X,KAAMvH,EAAE,GACR9G,EAAG8G,EAAE,GACL6qI,GAAI7qI,EAAE,SAES,IAAbA,EAAElK,QACJ63I,EAAM3tI,EAAE,GAAI4J,EAAIyV,KAGpB,IAAK,eACL,IAAK,UACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,WACL,IAAK,UACL,IAAK,cACL,IAAK,gBACL,IAAK,SACL,IAAK,mBACL,IAAK,UACL,IAAK,UACL,IAAK,cACL,IAAK,WACL,IAAK,cACL,IAAK,iBACL,IAAK,SACL,IAAK,YACL,IAAK,cACL,IAAK,QAGH,OAFArf,EAAE,GAAK,CAAC,OAAQA,EAAE,SAClButI,EAAM3jI,EAAKyV,EAAKrf,GAElB,QAEE,IADA9C,GAAK,IACIA,EAAI8C,EAAElK,QACb,IAAKjC,MAAMkP,QAAQ/C,EAAE9C,IACnB,OAAOywI,EAAM3tI,EAAG4J,EAAIyV,IAGxB,OAAOkuH,EAAM3jI,EAAKyV,EAAKrf,GAnE3B,MAFE4J,EAAIyV,GAAOrf,OAJX4J,EAAIyV,IAAO,CAfb,MAFEzV,EAAI5J,IAAK,CA4Fb,CDtFAspD,EAAO5xD,UAAUm2I,cAAgB,WAC/B,IAAIrnC,EAAO9zG,KAAKqF,KAAKrF,KAAK06I,SAC1B,GAvBW,IAuBP16I,KAAK6c,MACP,KAAOu9H,EAAW/tI,KAAKynG,IAAO,CAC5B,GAAI9zG,KAAK06I,OAAS16I,KAAKqF,KAAKjC,OAC1B,OAEF0wG,EAAO9zG,KAAKqF,KAAKrF,KAAK06I,QACxB,CAEF,OAAQ16I,KAAK6c,OACX,KAAKs9H,EACH,OAAOn6I,KAAKo7I,QAAQtnC,GACtB,KApCU,EAqCR,OAAO9zG,KAAKs6I,QAAQxmC,GACtB,KApCS,EAqCP,OAAO9zG,KAAKq7I,OAAOvnC,GACrB,KArCa,EAsCX,OAAO9zG,KAAKs7I,WAAWxnC,GACzB,KAzCS,EA0CP,OAAO9zG,KAAKsnI,OAAOxzB,GACrB,KAxCQ,EAyCN,OAEN,EACAl9C,EAAO5xD,UAAUs2I,WAAa,SAASxnC,GACrC,GAAa,MAATA,EAGF,OAFA9zG,KAAKu7I,MAAQ,SACbv7I,KAAK6c,MAjDI,GAoDX,GAAI09H,EAAUluI,KAAKynG,GAGjB,OAFA9zG,KAAKu7I,KAAOv7I,KAAKu7I,KAAK1tI,YACtB7N,KAAKw7I,UAAU1nC,GAGjB,MAAM,IAAI3nG,MAAM,oBAAqB2nG,EAAO,8BAAgC9zG,KAAK06I,MACnF,EACA9jF,EAAO5xD,UAAUw2I,UAAY,SAAS1nC,GACpC,MAAa,MAATA,GACgB,OAAd9zG,KAAKu7I,MACPv7I,KAAK46I,cAActoI,KAAKtS,KAAKu7I,MAE/Bv7I,KAAKu7I,KAAO,UACZv7I,KAAK6c,MAAQs9H,IAGF,MAATrmC,GACF9zG,KAAKy6I,QACa,OAAdz6I,KAAKu7I,OACPv7I,KAAK46I,cAActoI,KAAKtS,KAAKu7I,MAC7Bv7I,KAAKu7I,KAAO,MAEdv7I,KAAK6c,MAAQs9H,EACbn6I,KAAK46I,cAAgB56I,KAAK4sE,MAAM34D,WAC3BjU,KAAK46I,gBACR56I,KAAK6c,OA3EC,UAkEV,CAcF,EACA+5C,EAAO5xD,UAAUsiI,OAAS,SAASxzB,GACjC,IAAI0mC,EAAOnuI,KAAKynG,GAAhB,CAIA,GAAIymC,EAAUluI,KAAKynG,GAGjB,OAFA9zG,KAAKu7I,KAAO71I,WAAW1F,KAAKu7I,WAC5Bv7I,KAAKw7I,UAAU1nC,GAGjB,MAAM,IAAI3nG,MAAM,oBAAqB2nG,EAAO,0BAA4B9zG,KAAK06I,MAN7E,CAFE16I,KAAKu7I,MAAQznC,CASjB,EACAl9C,EAAO5xD,UAAUq2I,OAAS,SAASvnC,GACpB,MAATA,EAIJ9zG,KAAKu7I,MAAQznC,EAHX9zG,KAAK6c,MAhGQ,CAqGjB,EACA+5C,EAAO5xD,UAAUs1I,QAAU,SAASxmC,GAClC,GAAIwmC,EAAQjuI,KAAKynG,GACf9zG,KAAKu7I,MAAQznC,MADf,CAIA,GAAa,MAATA,EAAc,CAChB,IAAI2nC,EAAa,GAWjB,OAVAA,EAAWnpI,KAAKtS,KAAKu7I,MACrBv7I,KAAKy6I,QACa,OAAdz6I,KAAK26I,KACP36I,KAAK26I,KAAOc,EAEZz7I,KAAK46I,cAActoI,KAAKmpI,GAE1Bz7I,KAAK4sE,MAAMt6D,KAAKtS,KAAK46I,eACrB56I,KAAK46I,cAAgBa,OACrBz7I,KAAK6c,MAAQs9H,EAEf,CACA,IAAII,EAAUluI,KAAKynG,GAInB,MAAM,IAAI3nG,MAAM,oBAAqB2nG,EAAO,2BAA6B9zG,KAAK06I,OAH5E16I,KAAKw7I,UAAU1nC,EAhBjB,CAoBF,EACAl9C,EAAO5xD,UAAUo2I,QAAU,SAAStnC,GAClC,GAAIumC,EAAMhuI,KAAKynG,GAGb,OAFA9zG,KAAKu7I,KAAOznC,OACZ9zG,KAAK6c,MArIK,GAwIZ,GAAa,MAATi3F,EAGF,OAFA9zG,KAAKu7I,KAAO,QACZv7I,KAAK6c,MAxII,GA2IX,GAAI29H,EAAOnuI,KAAKynG,GAGd,OAFA9zG,KAAKu7I,KAAOznC,OACZ9zG,KAAK6c,MA9II,GAiJX,IAAI09H,EAAUluI,KAAKynG,GAInB,MAAM,IAAI3nG,MAAM,oBAAqB2nG,EAAO,2BAA6B9zG,KAAK06I,OAH5E16I,KAAKw7I,UAAU1nC,EAInB,EACAl9C,EAAO5xD,UAAUo8G,OAAS,WACxB,KAAOphH,KAAK06I,MAAQ16I,KAAKqF,KAAKjC,QAC5BpD,KAAKm7I,gBAEP,IAxJU,IAwJNn7I,KAAK6c,MACP,OAAO7c,KAAK26I,KAEd,MAAM,IAAIxuI,MAAM,2BAA4BnM,KAAKqF,KAAO,eAAiBrF,KAAK6c,MAChF,EEnKA,IAAI,EAAM,oBAiBV,SAAS6+H,EAAI75B,GACX,OAAOA,EAAQ,CACjB,CA4Ke,WAAS7rD,GACtB,IAAI2lF,EAAOtF,EAAOrgF,GACd5kD,EAAOuqI,EAAKznI,QACZW,EAAO8mI,EAAKznI,QAChBynI,EAAKb,QAAQ,CAAC,OAAQjmI,IACtB8mI,EAAKb,QAAQ,CAAC,OAAQ1pI,IACtB,IAAI8F,EAAM,CAAC,EAGX,OAFA+jI,EAAMU,EAAMzkI,GAjLd,SAAkB8+C,GAahB,GAZiB,WAAbA,EAAI5kD,KACN4kD,EAAI4lF,SAAW,UACO,aAAb5lF,EAAI5kD,MACb4kD,EAAI4lF,SAAW,WACf5lF,EAAI6lF,OAAQ,GAEkB,iBAAnB7lF,EAAI5nB,WACb4nB,EAAI4lF,SAAWp7I,OAAOgP,KAAKwmD,EAAI5nB,YAAY,GAE3C4nB,EAAI4lF,SAAW5lF,EAAI5nB,WAGnB4nB,EAAI8lF,KAAM,CAEZ,IADA,IAAIC,EAAY,GACPvxI,EAAI,EAAGiL,EAAKugD,EAAI8lF,KAAK14I,OAAQoH,EAAIiL,IAAMjL,EAAG,CACjD,IAAI+7G,EAAO,CAACvwD,EAAI8lF,KAAKtxI,GAAG,GAAGujE,cAAe/X,EAAI8lF,KAAKtxI,GAAG,GAAGujE,gBACvB,IAA9Bw4C,EAAK,GAAG7zG,QAAQ,WAAiC,MAAZ6zG,EAAK,IAA0B,QAAZA,EAAK,KAA6B,UAAZA,EAAK,GACrFw1B,GAAa,KAC0B,IAA9Bx1B,EAAK,GAAG7zG,QAAQ,WAAiC,MAAZ6zG,EAAK,IAA0B,QAAZA,EAAK,KAA6B,UAAZA,EAAK,GAC5Fw1B,GAAa,KACyB,IAA7Bx1B,EAAK,GAAG7zG,QAAQ,UAAgC,MAAZ6zG,EAAK,IAA0B,QAAZA,EAAK,KAA6B,SAAZA,EAAK,GAC3Fw1B,GAAa,KACyB,IAA7Bx1B,EAAK,GAAG7zG,QAAQ,UAAgC,MAAZ6zG,EAAK,IAA0B,QAAZA,EAAK,IAA6B,SAAZA,EAAK,MAC3Fw1B,GAAa,IAEjB,CACyB,IAArBA,EAAU34I,SACZ24I,GAAa,KAEU,IAArBA,EAAU34I,SACZ4yD,EAAIuwD,KAAOw1B,EAEf,CACI/lF,EAAIgmF,OACNhmF,EAAI3lB,MAAQ2lB,EAAIgmF,KAAKnnI,KAAKk5D,cACR,UAAd/X,EAAI3lB,QACN2lB,EAAI3lB,MAAQ,SAEV2lB,EAAIgmF,KAAKd,UACM,WAAbllF,EAAI5kD,KACF4kD,EAAIimF,OAASjmF,EAAIimF,MAAMC,WACzBlmF,EAAIwwD,SAAWxwD,EAAIgmF,KAAKd,QAAQllF,EAAIimF,MAAMC,SAAS11I,GAGrDwvD,EAAIwwD,SAAWxwD,EAAIgmF,KAAKd,UAI9B,IAAIiB,EAASnmF,EAAIomF,OAoEjB,SAASC,EAAQx6B,GAEf,OAAOA,GADK7rD,EAAIwwD,UAAY,EAE9B,CAtEiB,WAAbxwD,EAAI5kD,OACN+qI,EAASnmF,GAEPmmF,IAIEA,EAAOF,MACTjmF,EAAIgkF,UAAYmC,EAAOF,MAAMpnI,KAAKk5D,cAElC/X,EAAIgkF,UAAYmC,EAAOtnI,KAAKk5D,cAEI,OAA9B/X,EAAIgkF,UAAUltI,MAAM,EAAG,KACzBkpD,EAAIgkF,UAAYhkF,EAAIgkF,UAAUltI,MAAM,IAEhB,oCAAlBkpD,EAAIgkF,WAAqE,qBAAlBhkF,EAAIgkF,YAC7DhkF,EAAIgkF,UAAY,UAEI,aAAlBhkF,EAAIgkF,WAA8C,+BAAlBhkF,EAAIgkF,YACf,8BAAnBhkF,EAAI5nB,aACN4nB,EAAIsmF,QAAS,GAEftmF,EAAIgkF,UAAY,SAEc,WAA5BhkF,EAAIgkF,UAAUltI,OAAO,KACvBkpD,EAAIgkF,UAAYhkF,EAAIgkF,UAAUltI,MAAM,GAAK,IAEX,aAA5BkpD,EAAIgkF,UAAUltI,OAAO,KACvBkpD,EAAIgkF,UAAYhkF,EAAIgkF,UAAUltI,MAAM,GAAK,KAEtCkpD,EAAIgkF,UAAUtnI,QAAQ,WACzBsjD,EAAIgkF,UAAY,SAEdmC,EAAOF,OAASE,EAAOF,MAAMC,WAC/BlmF,EAAIumF,MAAQJ,EAAOF,MAAMC,SAASrnI,KAAK3H,QAAQ,MAAO,IAAIA,QAAQ,gBAAiB,QACtC,kBAAzC8oD,EAAIumF,MAAMxuE,cAAcjhE,MAAM,EAAG,MACnCkpD,EAAIumF,MAAQ,QAGdvmF,EAAIxvD,EAAI21I,EAAOF,MAAMC,SAAS11I,EAC9BwvD,EAAImiF,GAAKzyI,WAAWy2I,EAAOF,MAAMC,SAAS/D,GAAI,KAG5CgE,EAAOF,OAASE,EAAOF,MAAMO,UAC/BxmF,EAAI2jF,aAAewC,EAAOF,MAAMO,UAE7BxmF,EAAIgkF,UAAUtnI,QAAQ,eACzBsjD,EAAIgkF,UAAY,WAEbhkF,EAAIgkF,UAAUtnI,QAAQ,eACzBsjD,EAAIgkF,UAAY,YAEbhkF,EAAIgkF,UAAUtnI,QAAQ,UACrBsjD,EAAIgkF,UAAUtnI,QAAQ,6BAC1BsjD,EAAIgkF,UAAY,SAEI,YAAlBhkF,EAAIgkF,YACNhkF,EAAIgkF,UAAY,WAEbhkF,EAAIgkF,UAAUtnI,QAAQ,YACzBsjD,EAAIgkF,UAAY,UAGhBhkF,EAAIvvD,IAAMgrH,SAASz7D,EAAIvvD,KACzBuvD,EAAIvvD,EAAIuvD,EAAIxvD,GAUH,CACT,CAAC,sBAAuB,uBACxB,CAAC,sBAAuB,qCACxB,CAAC,sBAAuB,uBACxB,CAAC,sBAAuB,qCACxB,CAAC,gBAAiB,iBAClB,CAAC,gBAAiB,iBAClB,CAAC,gBAAiB,2BAClB,CAAC,iBAAkB,kBACnB,CAAC,iBAAkB,kBACnB,CAAC,iBAAkB,4BACnB,CAAC,mBAAoB,oBACrB,CAAC,mBAAoB,+BACrB,CAAC,mBAAoB,6BACrB,CAAC,qBAAsB,sBACvB,CAAC,qBAAsB,oBACvB,CAAC,qBAAsB,8BACvB,CAAC,qBAAsB,4BACvB,CAAC,eAAgB,gBACjB,CAAC,KAAM,gBACP,CAAC,qBAAsB,sBACvB,CAAC,qBAAsB,sBACvB,CAAC,OAAQ,qBAAsBk1I,GAC/B,CAAC,sBAAuB,uBACxB,CAAC,sBAAuB,uBACxB,CAAC,QAAS,sBAAuBA,GACjC,CAAC,KAAM,gBAAiBW,GACxB,CAAC,KAAM,iBAAkBA,GACzB,CAAC,QAAS,mBAAoBX,GAC9B,CAAC,OAAQ,qBAAsBA,GAC/B,CAAC,OAAQ,sBAAuBA,GAChC,CAAC,OAAQ,sBAAuBA,GAChC,CAAC,OAAQ,sBAAuBA,GAChC,CAAC,UAAW,WACZ,CAAC,QAAS,UAAWA,GACrB,CAAC,UAAW,SAETjsI,SAxCS,SAASjJ,GACrB,OAzIY0Q,EAyIE8+C,EAxIZymF,GADexiF,EAyIEzzD,GAxIA,GACjBk2I,EAASziF,EAAO,UACdwiF,KAAWvlI,IAASwlI,KAAUxlI,IAClCA,EAAIulI,GAAWvlI,EAAIwlI,GACG,IAAlBziF,EAAO72D,SACT8T,EAAIulI,GAAWxiF,EAAO,GAAG/iD,EAAIulI,OANnC,IAAgBvlI,EAAK+iD,EACfwiF,EACAC,CAwIJ,IAuCK1mF,EAAI0iF,QAAS1iF,EAAIgjF,OAA2B,4BAAjBhjF,EAAI4lF,UAA2D,iCAAjB5lF,EAAI4lF,WAChF5lF,EAAI0iF,MAAQ1iF,EAAIgjF,OAEbhjF,EAAIwiF,SAAUxiF,EAAI1yD,MAA0B,6BAAjB0yD,EAAI4lF,UAA4D,oCAAjB5lF,EAAI4lF,WACjF5lF,EAAIqiF,KAAOqD,EAAI1lF,EAAI1yD,KAAO,EAAI,IAAM,IACpC0yD,EAAIwiF,OAASxiF,EAAI1yD,KAErB,CASEq5I,CAASzlI,GACFA,CACT,CCrMA,SAASmvG,EAAKxxG,GAEZ,IAAI+nI,EAAO58I,KACX,GAAyB,IAArBC,UAAUmD,OAAc,CAC1B,IAAIkjH,EAAMrmH,UAAU,GACD,iBAARqmH,EACa,MAAlBA,EAAIpzE,OAAO,GACbmzE,EAAKxxG,GAAQ,EAAU5U,UAAU,IAGjComH,EAAKxxG,GAAQ,EAAI5U,UAAU,IAG7BomH,EAAKxxG,GAAQyxG,CAEjB,MACK,GAAyB,IAArBrmH,UAAUmD,OAAc,CAC/B,GAAIjC,MAAMkP,QAAQwE,GAChB,OAAOA,EAAK3G,KAAI,SAASZ,GACnBnM,MAAMkP,QAAQ/C,GAChB+4G,EAAKvmH,MAAM88I,EAAMtvI,GAGjB+4G,EAAK/4G,EAET,IAEG,GAAoB,iBAATuH,GACd,GAAIA,KAAQwxG,EACV,OAAOA,EAAKxxG,OAGP,SAAUA,EACjBwxG,EAAK,QAAUxxG,EAAKgoI,MAAQhoI,EAErB,SAAUA,EACjBwxG,EAAK,QAAUxxG,EAAKioI,MAAQjoI,EAErB,YAAaA,EACpBwxG,EAAK,WAAaxxG,EAAKkoI,SAAWloI,EAGlCnT,QAAQC,IAAIkT,GAEd,MACF,CAGF,ECpDe,SAASwxG,GACtBA,EAAK,YAAa,mFAClBA,EAAK,YAAa,mHAClBA,EAAK,YAAa,oJAElBA,EAAK1hH,MAAQ0hH,EAAK,aAClBA,EAAK,aAAeA,EAAK,aACzBA,EAAK22B,OAAS32B,EAAK,aACnBA,EAAK,eAAiBA,EAAK,aAC3BA,EAAK,eAAiBA,EAAK,YAC7B,CD2CA5E,CAAQ4E,GACR,UE5CC,IAAI42B,EAAY,CAAC,eAAgB,UAAW,SAAS,SAAS,SAAS,WAAY,UAAW,cAAe,gBAAiB,SAAU,kBAMrIC,EAAQ,CAAC,OAAQ,SAAU,OAAQ,UChBxB,WAASj9E,EAAa39C,GAEnC,IAAI5hB,EAAOq0D,EACX,GAFAkL,EAAcA,GAAe,CAAC,GAEzB39C,EACH,OAAO29C,EAET,IAAKlL,KAAYzyC,OAED9L,KADd9V,EAAQ4hB,EAAOyyC,MAEbkL,EAAYlL,GAAYr0D,GAG5B,OAAOu/D,CACT,CCbe,WAASk9E,EAAQC,EAAQC,GACtC,IAAIC,EAAMH,EAASC,EACnB,OAAOC,EAAUp7I,KAAKuF,KAAK,EAAI81I,EAAMA,EACvC,CCHe,WAASt7I,GACtB,OAAOA,EAAE,GAAK,EAAI,CACpB,CCEe,WAASA,GACtB,OAAQC,KAAK2G,IAAI5G,IAAMw1I,EAAOx1I,EAAKA,EAAKu7I,EAAKv7I,GAAKu1I,CACpD,CCJe,WAAS4F,EAAQK,EAAKJ,GACnC,IAAIE,EAAMH,EAASC,EACfK,EAAM,GAAMN,EAEhB,OADAG,EAAMr7I,KAAKI,KAAM,EAAIi7I,IAAQ,EAAIA,GAAOG,GAChCx7I,KAAK4F,IAAI,IAAOqvI,EAAUsG,IAAQF,CAC5C,CCLe,WAASH,EAAQO,GAI9B,IAHA,IACIJ,EAAKK,EADLC,EAAS,GAAMT,EAEfK,EAAMtG,EAAU,EAAIj1I,KAAK+/G,KAAK07B,GACzBlzI,EAAI,EAAGA,GAAK,GAAIA,IAIvB,GAHA8yI,EAAMH,EAASl7I,KAAKwF,IAAI+1I,GAExBA,GADAG,EAAOzG,EAAU,EAAIj1I,KAAK+/G,KAAK07B,EAAMz7I,KAAKI,KAAM,EAAIi7I,IAAQ,EAAIA,GAAOM,IAAYJ,EAE/Ev7I,KAAK2G,IAAI+0I,IAAS,MACpB,OAAOH,EAIX,OAAQ,IACV,CCZA,SAASK,EAASC,GAChB,OAAOA,CACT,CCJA,IAAIC,EAAQ,CC4FZ,CACE98I,KAzFK,WACL,IAAIq8I,EAAMt9I,KAAKyG,EAAIzG,KAAKwG,EACxBxG,KAAKg+I,GAAK,EAAIV,EAAMA,EACf,OAAQt9I,OACXA,KAAK6jC,GAAK,GAEP,OAAQ7jC,OACXA,KAAK8jC,GAAK,GAEZ9jC,KAAK6B,EAAII,KAAKuF,KAAKxH,KAAKg+I,IACpBh+I,KAAKw4I,OACHx4I,KAAKs8I,OACPt8I,KAAKo5I,GAAKn3I,KAAKiG,IAAIlI,KAAKw4I,QAGxBx4I,KAAKo5I,GAAK6E,EAAMj+I,KAAK6B,EAAGI,KAAKwF,IAAIzH,KAAKw4I,QAASv2I,KAAKiG,IAAIlI,KAAKw4I,SAI1Dx4I,KAAKo5I,KACJp5I,KAAK4tE,EACP5tE,KAAKo5I,GAAKp5I,KAAK4tE,EAGf5tE,KAAKo5I,GAAK,EAIlB,EA8DEx1B,QAzDK,SAAiB75G,GACtB,IAOI/H,EAAGD,EAPHwyE,EAAMxqE,EAAE/H,EACR4yE,EAAM7qE,EAAEhI,EAEZ,GAAI6yE,EAAMyiE,EAAM,IAAMziE,EAAMyiE,GAAO,IAAM9iE,EAAM8iE,EAAM,KAAO9iE,EAAM8iE,GAAO,IACvE,OAAO,KAIT,GAAIp1I,KAAK2G,IAAI3G,KAAK2G,IAAIgsE,GAAOsiE,IAAYC,EACvC,OAAO,KAGP,GAAIn3I,KAAKs8I,OACPt6I,EAAIhC,KAAK6jC,GAAK7jC,KAAKwG,EAAIxG,KAAKo5I,GAAK8E,EAAW3pE,EAAMv0E,KAAK04I,OACvD32I,EAAI/B,KAAK8jC,GAAK9jC,KAAKwG,EAAIxG,KAAKo5I,GAAKn3I,KAAKN,IAAIM,KAAK4F,IAAIyvI,EAAS,GAAM1iE,QAE/D,CACH,IAAIwoE,EAASn7I,KAAKwF,IAAImtE,GAClB8oE,EAAKS,EAAMn+I,KAAK6B,EAAG+yE,EAAKwoE,GAC5Bp7I,EAAIhC,KAAK6jC,GAAK7jC,KAAKwG,EAAIxG,KAAKo5I,GAAK8E,EAAW3pE,EAAMv0E,KAAK04I,OACvD32I,EAAI/B,KAAK8jC,GAAK9jC,KAAKwG,EAAIxG,KAAKo5I,GAAKn3I,KAAKN,IAAI+7I,EAC5C,CAGA,OAFA3zI,EAAE/H,EAAIA,EACN+H,EAAEhI,EAAIA,EACCgI,CAEX,EA+BE85G,QA3BK,SAAiB95G,GAEtB,IAEIwqE,EAAKK,EAFL5yE,EAAI+H,EAAE/H,EAAIhC,KAAK6jC,GACf9hC,EAAIgI,EAAEhI,EAAI/B,KAAK8jC,GAGnB,GAAI9jC,KAAKs8I,OACP1nE,EAAMsiE,EAAU,EAAIj1I,KAAK+/G,KAAK//G,KAAKg+G,KAAKl+G,GAAK/B,KAAKwG,EAAIxG,KAAKo5I,UAExD,CACH,IAAIsE,EAAKz7I,KAAKg+G,KAAKl+G,GAAK/B,KAAKwG,EAAIxG,KAAKo5I,KAEtC,IAAa,QADbxkE,EAAMwpE,EAAMp+I,KAAK6B,EAAG67I,IAElB,OAAO,IAEX,CAKA,OAJAnpE,EAAM2pE,EAAWl+I,KAAK04I,MAAQ12I,GAAKhC,KAAKwG,EAAIxG,KAAKo5I,KAEjDrvI,EAAE/H,EAAIuyE,EACNxqE,EAAEhI,EAAI6yE,EACC7qE,CACT,EAOEs0I,MALiB,CAAC,WAAY,wCAAyC,eAAgB,4BAA6B,SFnFtH,CACEp9I,KAXK,WAEP,EAUE2iH,QAASi6B,EACTh6B,QAASg6B,EACTQ,MALiB,CAAC,UAAW,cCN3B,EAAQ,CAAC,EACTC,EAAY,GAEhB,SAAS1wI,EAAIi8C,EAAMr/C,GACjB,IAAI3F,EAAMy5I,EAAUl7I,OACpB,OAAKymD,EAAKw0F,OAIVC,EAAUz5I,GAAOglD,EACjBA,EAAKw0F,MAAM5uI,SAAQ,SAAS3N,GAC1B,EAAMA,EAAEisE,eAAiBlpE,CAC3B,IACO7E,OAPL0B,QAAQC,IAAI6I,IACL,EAOX,CAiBA,SACEutB,MAJK,WACLgmH,EAAMtuI,QAAQ7B,EAChB,EAGEA,IAAKA,EACL3I,IAhBK,SAAa4P,GAClB,IAAKA,EACH,OAAO,EAET,IAAI/S,EAAI+S,EAAKk5D,cACb,YAAwB,IAAb,EAAMjsE,IAAsBw8I,EAAU,EAAMx8I,IAC9Cw8I,EAAU,EAAMx8I,SADzB,CAGF,GE7BA,IAAI,EAAU,CAEd,MAAgB,CACd0E,EAAG,QACH2xI,GAAI,QACJoG,YAAa,cAGf,MAAgB,CACd/3I,EAAG,QACH2xI,GAAI,QACJoG,YAAa,6BAGf,MAAgB,CACd/3I,EAAG,QACH2xI,GAAI,cACJoG,YAAa,wBAGf,MAAgB,CACd/3I,EAAG,QACH2xI,GAAI,QACJoG,YAAa,YAGf,KAAe,CACb/3I,EAAG,YACHC,EAAG,WACH83I,YAAa,aAGf,KAAe,CACb/3I,EAAG,QACH2xI,GAAI,OACJoG,YAAa,uBAGf,MAAgB,CACd/3I,EAAG,QACH2xI,GAAI,OACJoG,YAAa,4BAGf,SAAmB,CACjB/3I,EAAG,YACHC,EAAG,YACH83I,YAAa,iBAGf,OAAiB,CACf/3I,EAAG,WACH2xI,GAAI,IACJoG,YAAa,8BAGf,QAAkB,CAChB/3I,EAAG,QACH2xI,GAAI,OACJoG,YAAa,mCAGf,MAAgB,CACd/3I,EAAG,QACH2xI,GAAI,cACJoG,YAAa,qBAGf,OAAiB,CACf/3I,EAAG,YACH2xI,GAAI,YACJoG,YAAa,eAGf,SAAmB,CACjB/3I,EAAG,YACH2xI,GAAI,YACJoG,YAAa,yBAGf,OAAiB,CACf/3I,EAAG,UACHC,EAAG,UACH83I,YAAa,eAGf,OAAiB,CACf/3I,EAAG,YACH2xI,GAAI,SACJoG,YAAa,oBAGf,OAAiB,CACf/3I,EAAG,kBACH2xI,GAAI,kBACJoG,YAAa,eAGf,IAAc,CACZ/3I,EAAG,UACH2xI,GAAI,OACJoG,YAAa,mCAGf,OAAiB,CACf/3I,EAAG,QACH2xI,GAAI,MACJoG,YAAa,2BAGf,QAAkB,CAChB/3I,EAAG,WACH2xI,GAAI,SACJoG,YAAa,gBAGf,QAAkB,CAChB/3I,EAAG,YACH2xI,GAAI,SACJoG,YAAa,gBAGf,QAAkB,CAChB/3I,EAAG,YACH2xI,GAAI,SACJoG,YAAa,gBAGf,QAAkB,CAChB/3I,EAAG,YACH2xI,GAAI,SACJoG,YAAa,gBAGf,QAAkB,CAChB/3I,EAAG,YACH2xI,GAAI,SACJoG,YAAa,gBAGf,QAAkB,CAChB/3I,EAAG,YACH2xI,GAAI,SACJoG,YAAa,6BAGf,QAAkB,CAChB/3I,EAAG,QACH2xI,GAAI,MACJoG,YAAa,gCAGf,SAAmB,CACjB/3I,EAAG,QACH2xI,GAAI,MACJoG,YAAa,gBAGf,QAAkB,CAChB/3I,EAAG,QACH2xI,GAAI,MACJoG,YAAa,gBAGf,QAAkB,CAChB/3I,EAAG,QACH2xI,GAAI,MACJoG,YAAa,gBAGf,MAAgB,CACd/3I,EAAG,QACH2xI,GAAI,IACJoG,YAAa,SAGf,KAAe,CACb/3I,EAAG,QACH2xI,GAAI,IACJoG,YAAa,gCAGf,MAAgB,CACd/3I,EAAG,QACH2xI,GAAI,OACJoG,YAAa,cAGf,MAAgB,CACd/3I,EAAG,QACH2xI,GAAI,QACJoG,YAAa,cAGf,MAAgB,CACd/3I,EAAG,QACH2xI,GAAI,IACJoG,YAAa,mBAGf,SAAmB,CACjB/3I,EAAG,UACHC,EAAG,UACH83I,YAAa,0BAGf,QAAkB,CAChB/3I,EAAG,QACH2xI,GAAI,QACJoG,YAAa,yBAGf,MAAgB,CACd/3I,EAAG,QACH2xI,GAAI,MACJoG,YAAa,oBAGf,OAAiB,CACf/3I,EAAG,QACHC,EAAG,aACH83I,YAAa,kBAGf,QAAkB,CAChB/3I,EAAG,QACHC,EAAG,aACH83I,YAAa,WAGf,MAAgB,CACd/3I,EAAG,QACH2xI,GAAI,MACJoG,YAAa,UAGf,MAAgB,CACd/3I,EAAG,QACH2xI,GAAI,OACJoG,YAAa,UAGf,KAAe,CACb/3I,EAAG,QACH2xI,GAAI,OACJoG,YAAa,WAGJ55I,EAAQ,EAAQA,MAAQ,CACjC6B,EAAG,QACH2xI,GAAI,cACJoG,YAAa,UAGf,EAAQjC,OAAS,CACf91I,EAAG,QACHC,EAAG,QACH83I,YAAa,6BCjQf,IAAI,EAAU,CAEd,MAAgB,CACd7E,QAAS,QACT8E,QAAS,QACTC,UAAW,SAGb,OAAiB,CACf/E,QAAS,yBACT8E,QAAS,SACTC,UAAW,SAGb,OAAiB,CACf/E,QAAS,uBACT8E,QAAS,QACTC,UAAW,wCAGb,MAAgB,CACd/E,QAAS,QACT8E,QAAS,QACTC,UAAW,6BAGb,MAAgB,CACd1E,SAAU,2CACVyE,QAAS,SACTC,UAAW,6BAGb,QAAkB,CAChB/E,QAAS,mBACT8E,QAAS,SACTC,UAAW,+BAGb,SAAmB,CACjB/E,QAAS,mBACT8E,QAAS,UACTC,UAAW,yBAGb,cAAwB,CACtB/E,QAAS,qBACT8E,QAAS,SACTC,UAAW,iBAGb,OAAiB,CACf/E,QAAS,qDACT8E,QAAS,OACTC,UAAW,kBAGb,MAAgB,CACd/E,QAAS,qDACT8E,QAAS,WACTC,UAAW,gBAGb,WAAqB,CACnB/E,QAAS,yBACT8E,QAAS,OACTC,UAAW,cAGb,OAAiB,CACf/E,QAAS,6CACT8E,QAAS,OACTC,UAAW,mCAGb,OAAiB,CACf/E,QAAS,yDACT8E,QAAS,OACTC,UAAW,aAGb,OAAiB,CACf/E,QAAS,aACT8E,QAAS,SACTC,UAAW,kBAGb,SAAmB,CACjB/E,QAAS,eACT8E,QAAS,SACTC,UAAW,YAGb,cAAwB,CACtB/E,QAAS,cACT8E,QAAS,SACTC,UAAW,yBAGb,MAAgB,CACd/E,QAAS,wDACT8E,QAAS,OACTC,UAAW,+BC7Fb,SAAS/8B,EAAWg9B,EAAQhzI,GAC1B,KAAM1L,gBAAgB0hH,GACpB,OAAO,IAAIA,EAAWg9B,GAExBhzI,EAAWA,GAAY,SAASqN,GAC9B,GAAGA,EACD,MAAMA,CAEV,EACA,IAAI4lI,EZkBN,SAAehqI,GACb,IAhCF,SAAiBA,GACf,MAAuB,iBAATA,CAChB,CA8BMiqI,CAAQjqI,GAqBV,OAAOA,EAnBP,GA/BJ,SAAiBA,GACf,OAAOA,KAAQ,CACjB,CA6BQkqI,CAAQlqI,GACV,OAAO,EAAKA,GAEd,GA9BJ,SAAiBA,GACf,OAAOsoI,EAAUv/C,MAAK,SAAU69C,GAC9B,OAAO5mI,EAAKjC,QAAQ6oI,IAAS,CAC/B,GACF,CA0BQuD,CAAQnqI,GAAO,CACjB,IAAI4tE,EAAM,EAAI5tE,GAEd,GA3BN,SAAuBqB,GACrB,IAAI+oI,EAAOl8I,EAAMmT,EAAM,aACvB,GAAK+oI,EAAL,CAGA,IAAIpqI,EAAO9R,EAAMk8I,EAAM,QACvB,OAAOpqI,GAAQuoI,EAAMxqI,QAAQiC,IAAS,CAFtC,CAGF,CAoBUqqI,CAAcz8D,GAChB,OAAO,eAET,IAAI08D,EAtBV,SAAsBjpI,GACpB,IAAIkpI,EAAMr8I,EAAMmT,EAAM,aACtB,GAAKkpI,EAGL,OAAOr8I,EAAMq8I,EAAK,QACpB,CAgByBC,CAAa58D,GAChC,OAAI08D,EACK,EAAQA,GAEV18D,CACT,CACA,OArBJ,SAAkB5tE,GAChB,MAAmB,MAAZA,EAAK,EACd,CAmBQyqI,CAASzqI,GACJ,EAAQA,QADjB,CAMJ,CY1Ca0qI,CAAUX,GACrB,GAAmB,iBAATC,EAAV,CAIA,IAAIW,EAAU59B,EAAWc,YAAYv9G,IAAI05I,EAAK/C,UAC9C,GAAI0D,EAAJ,CAIA,GAAIX,EAAK3E,WAAgC,SAAnB2E,EAAK3E,UAAsB,CAC/C,IAAIuF,EAAW18I,EAAM,EAAO87I,EAAK3E,WAC7BuF,IACFZ,EAAKhF,aAAe4F,EAAS7F,QAAU6F,EAAS7F,QAAQppI,MAAM,KAAO,KACrEquI,EAAKpC,MAAQgD,EAASf,QACtBG,EAAKF,UAAYc,EAASd,UAAYc,EAASd,UAAYE,EAAK3E,UAEpE,CACA2E,EAAKvF,GAAKuF,EAAKvF,IAAM,EACrBuF,EAAKp4B,KAAOo4B,EAAKp4B,MAAQ,MACzBo4B,EAAKpC,MAAQoC,EAAKpC,OAAS,QAC3B,IClC2B/1I,EAAGC,EAC1BssI,EACAC,EACAgL,EACAn8I,ED8BA29I,ECfC,SAAgBh5I,EAAGC,EAAG0xI,EAAIoE,EAAOD,GACtC,IAAK91I,EAAG,CACN,IAAIg4I,EAAU37I,EAAM,EAAW05I,GAC1BiC,IACHA,EAAU75I,GAEZ6B,EAAIg4I,EAAQh4I,EACZC,EAAI+3I,EAAQ/3I,EACZ0xI,EAAKqG,EAAQrG,EACf,CASA,OAPIA,IAAO1xI,IACTA,GAAK,EAAM,EAAM0xI,GAAM3xI,IAEd,IAAP2xI,GAAYl2I,KAAK2G,IAAIpC,EAAIC,GAAK0wI,KAChCmF,GAAS,EACT71I,EAAID,GAEC,CACLA,EAAGA,EACHC,EAAGA,EACH0xI,GAAIA,EACJmE,OAAQA,EAEZ,CDTgB,CAAUqC,EAAKn4I,EAAGm4I,EAAKl4I,EAAGk4I,EAAKxG,GAAIwG,EAAKpC,MAAOoC,EAAKrC,QAC9DmD,GCnCuBj5I,EDmCDg5I,EAAQh5I,ECnCJC,EDmCO+4I,EAAQ/4I,EAAG+4I,EAAQrH,GChCpD6F,IAFAjL,EAAKvsI,EAAIA,IACTwsI,EAAKvsI,EAAIA,IACQssI,EACjBlxI,EAAI,ED+BoD88I,EAAKrF,KC5B/DvG,GADAvsI,GAAK,EAAIw3I,GvBHM,mBuBGQA,GvBDV,mBAEA,oBuBDsBA,KAC1Bx3I,EACTw3I,EAAK,GAELn8I,EAAII,KAAKuF,KAAKw2I,GAGT,CACLA,GAAIA,EACJn8I,EAAGA,EACH69I,KAJS3M,EAAKC,GAAMA,IDwBlB2M,EAAWhB,EAAKzG,OEtCtB,SAAe8B,EAAWL,EAAcnzI,EAAGC,EAAGu3I,EAAI0B,GAChD,IAAIn9D,EAAM,CAAC,EA4BX,OAzBEA,EAAIq9D,gBADYppI,IAAdwjI,GAAyC,SAAdA,EACZhD,ExBJE,EwBSjB2C,IACFp3D,EAAIo3D,aAAeA,EAAazrI,IAAIxI,YACR,IAAxB68E,EAAIo3D,aAAa,IAAoC,IAAxBp3D,EAAIo3D,aAAa,IAAoC,IAAxBp3D,EAAIo3D,aAAa,KAC7Ep3D,EAAIq9D,WAAa9I,GAEfv0D,EAAIo3D,aAAav2I,OAAS,IACA,IAAxBm/E,EAAIo3D,aAAa,IAAoC,IAAxBp3D,EAAIo3D,aAAa,IAAoC,IAAxBp3D,EAAIo3D,aAAa,IAAoC,IAAxBp3D,EAAIo3D,aAAa,KAC1Gp3D,EAAIq9D,WAAa7I,EACjBx0D,EAAIo3D,aAAa,IAAM1C,EACvB10D,EAAIo3D,aAAa,IAAM1C,EACvB10D,EAAIo3D,aAAa,IAAM1C,EACvB10D,EAAIo3D,aAAa,GAAMp3D,EAAIo3D,aAAa,GAAK,IAAa,KAKhEp3D,EAAI/7E,EAAIA,EACR+7E,EAAI97E,EAAIA,EACR87E,EAAIy7D,GAAKA,EACTz7D,EAAIm9D,IAAMA,EACHn9D,CACT,CFQ+B,CAAMo8D,EAAK3E,UAAW2E,EAAKhF,aAAc6F,EAAQh5I,EAAGg5I,EAAQ/4I,EAAGg5I,EAAIzB,GAAIyB,EAAIC,KAExG5rI,EAAO9T,KAAM2+I,GACb7qI,EAAO9T,KAAMs/I,GAGbt/I,KAAKwG,EAAIg5I,EAAQh5I,EACjBxG,KAAKyG,EAAI+4I,EAAQ/4I,EACjBzG,KAAKm4I,GAAKqH,EAAQrH,GAClBn4I,KAAKs8I,OAASkD,EAAQlD,OAGtBt8I,KAAKg+I,GAAKyB,EAAIzB,GACdh+I,KAAK6B,EAAI49I,EAAI59I,EACb7B,KAAK0/I,IAAMD,EAAIC,IAGf1/I,KAAKk4I,MAAQyH,EAGb3/I,KAAKiB,OAGLyK,EAAS,KAAM1L,KArCf,MAFE0L,EAASgzI,EAHX,MAFEhzI,EAASgzI,EA8Cb,CACAh9B,EAAWc,YAAcA,EACzBd,EAAWc,YAAYzqF,QACvB,UGjEA,SAAS8nH,EAAYzuI,GACnB,OAAQA,IAAS0lI,GAAc1lI,IAAS2lI,CAC1C,CCLe,YAASnxF,EAAKk6F,EAAQ7/F,GACnC,IAGI3yC,EAAGhD,EAAGE,EAHNu1I,EAAM9/F,EAAMj+C,EACdg+I,EAAM//F,EAAMl+C,EACZk+I,EAAMhgG,EAAM1mB,GAAK,EAEfgpD,EAAM,CAAC,EACX,IAAK/3E,EAAI,EAAGA,EAAI,EAAGA,IACjB,IAAIs1I,GAAgB,IAANt1I,QAAuBgM,IAAZypC,EAAM1mB,EAe/B,OAZU,IAAN/uB,GACF8C,EAAIyyI,EACJz1I,EAAI,KAES,IAANE,GACP8C,EAAI0yI,EACJ11I,EAAI,MAGJgD,EAAI2yI,EACJ31I,EAAI,KAEEs7C,EAAI2gE,KAAK/7G,IACjB,IAAK,IAML,IAAK,IACH+3E,EAAIj4E,GAAKgD,EACT,MALF,IAAK,IAML,IAAK,IACHi1E,EAAIj4E,IAAMgD,EACV,MACF,IAAK,SACckJ,IAAbypC,EAAM31C,KACRi4E,EAAIhpD,EAAIjsB,GAEV,MACF,IAAK,SACckJ,IAAbypC,EAAM31C,KACRi4E,EAAIhpD,GAAKjsB,GAEX,MACF,QAEE,OAAO,KAGX,OAAOi1E,CACT,CCnDe,SAAS,GAACzsE,GACvB,IAAIysE,EAAM,CACRvgF,EAAG8T,EAAM,GACT/T,EAAG+T,EAAM,IAQX,OANIA,EAAM1S,OAAO,IACfm/E,EAAIhpD,EAAIzjB,EAAM,IAEZA,EAAM1S,OAAO,IACfm/E,EAAIj2E,EAAIwJ,EAAM,IAETysE,CACT,CCRA,SAAS29D,GAAWt7I,GAClB,GAA+B,mBAApB2nC,OAAOklF,SAAyB,CACzC,GAAIllF,OAAOklF,SAAS7sH,GAClB,OAEF,MAAM,IAAIu8G,UAAU,qCACtB,CACA,GAAmB,iBAARv8G,GAAoBA,GAAQA,IAAQ6sH,SAAS7sH,GACtD,MAAM,IAAIu8G,UAAU,qCAExB,CCHe,SAAS55F,GAAUjF,EAAQioD,EAAMtqB,GAC9C,IAAIkgG,EAgEJ,OA/DIh/I,MAAMkP,QAAQ4vC,KAChBA,EAAQmgG,GAAQngG,IDdL,SAAUA,GACvBigG,GAAWjgG,EAAMj+C,GACjBk+I,GAAWjgG,EAAMl+C,EACnB,CCaEs+I,CAAYpgG,GAER39B,EAAO41H,OAAS3tE,EAAK2tE,OAX3B,SAAqB51H,EAAQioD,GAC3B,OAASjoD,EAAO41H,MAAM0H,aAAe9I,GAAcx0H,EAAO41H,MAAM0H,aAAe7I,IAAkC,UAAnBxsE,EAAKyvE,YAA4BzvE,EAAK2tE,MAAM0H,aAAe9I,GAAcvsE,EAAK2tE,MAAM0H,aAAe7I,IAAoC,UAArBz0H,EAAO03H,SACzN,CASoCsG,CAAYh+H,EAAQioD,KAEpDtqB,EAAQ14B,GAAUjF,EADlB69H,EAAQ,IAAI,EAAK,SACgBlgG,GACjC39B,EAAS69H,GAGS,QAAhB79H,EAAOikG,OACTtmE,EAAQsgG,GAAYj+H,GAAQ,EAAO29B,IAGb,YAApB39B,EAAOs5H,SACT37F,EAAQ,CACNj+C,EAAGi+C,EAAMj+C,EAAIo1I,EACbr1I,EAAGk+C,EAAMl+C,EAAIq1I,IAIX90H,EAAOkkG,WACTvmE,EAAQ,CACNj+C,EAAGi+C,EAAMj+C,EAAIsgB,EAAOkkG,SACpBzkH,EAAGk+C,EAAMl+C,EAAIugB,EAAOkkG,WAGxBvmE,EAAQ39B,EAAOuhG,QAAQ5jE,IAGrB39B,EAAOu3H,iBACT55F,EAAMj+C,GAAKsgB,EAAOu3H,gBAIpB55F,EJ1Ca,SAAS39B,EAAQioD,EAAMtqB,GAEpC,OKPK,SAAuB39B,EAAQioD,GACpC,OAAIjoD,EAAOs9H,aAAer1E,EAAKq1E,cAEpBt9H,EAAO9b,IAAM+jE,EAAK/jE,GAAKvE,KAAK2G,IAAI0Z,EAAO07H,GAAKzzE,EAAKyzE,IAAM,SAIvD17H,EAAOs9H,aAAe9I,EACvBx0H,EAAOq3H,aAAa,KAAOpvE,EAAKovE,aAAa,IAAMr3H,EAAOq3H,aAAa,KAAOpvE,EAAKovE,aAAa,IAAMr3H,EAAOq3H,aAAa,KAAOpvE,EAAKovE,aAAa,GAClJr3H,EAAOs9H,aAAe7I,GACvBz0H,EAAOq3H,aAAa,KAAOpvE,EAAKovE,aAAa,IAAMr3H,EAAOq3H,aAAa,KAAOpvE,EAAKovE,aAAa,IAAMr3H,EAAOq3H,aAAa,KAAOpvE,EAAKovE,aAAa,IAAMr3H,EAAOq3H,aAAa,KAAOpvE,EAAKovE,aAAa,IAAMr3H,EAAOq3H,aAAa,KAAOpvE,EAAKovE,aAAa,IAAMr3H,EAAOq3H,aAAa,KAAOpvE,EAAKovE,aAAa,IAAMr3H,EAAOq3H,aAAa,KAAOpvE,EAAKovE,aAAa,GAI3W,CLPM6G,CAAcl+H,EAAQioD,IAOtBjoD,EAAOs9H,aAAe5I,GAAezsE,EAAKq1E,aAAe5I,EANpD/2F,EAaL39B,EAAO07H,KAAOzzE,EAAKyzE,IAAM17H,EAAO9b,IAAM+jE,EAAK/jE,GAAMq5I,EAAYv9H,EAAOs9H,aAAiBC,EAAYt1E,EAAKq1E,aAK1G3/F,EKGK,SAA8Bl2C,EAAGi0I,EAAIx3I,GAC1C,IAIIi6I,EACAC,EACAC,EACAC,EAPAC,EAAY92I,EAAE/H,EACd8+I,EAAW/2I,EAAEhI,EACbg/I,EAASh3I,EAAEwvB,EAAIxvB,EAAEwvB,EAAI,EAYzB,GAAIunH,GAAY5J,GAAW4J,GAAY,MAAQ5J,EAC7C4J,GAAY5J,OACP,GAAI4J,EAAW5J,GAAW4J,EAAW,MAAQ5J,EAClD4J,EAAW5J,MACN,IAAI4J,GAAY5J,EAGrB,MAAO,CAAEl1I,GAAG,IAAWD,GAAG,IAAWw3B,EAAGxvB,EAAEwvB,GACrC,GAAIunH,EAAW5J,EAEpB,MAAO,CAAEl1I,EAAGy3B,IAAU13B,EAAG03B,IAAUF,EAAGxvB,EAAEwvB,EAC1C,CASA,OAPIsnH,EAAY5+I,KAAKmlB,KACnBy5H,GAAc,EAAI5+I,KAAKmlB,IAEzBs5H,EAAUz+I,KAAKwF,IAAIq5I,GACnBF,EAAU3+I,KAAKiG,IAAI44I,GACnBH,EAAWD,EAAUA,EAEd,CACL1+I,IAFFy+I,EAAKj6I,EAAKvE,KAAKuF,KAAK,EAAQw2I,EAAK2C,IAEtBI,GAAUH,EAAU3+I,KAAKiG,IAAI24I,GACtC9+I,GAAI0+I,EAAKM,GAAUH,EAAU3+I,KAAKwF,IAAIo5I,GACtCtnH,GAAKknH,GAAM,EAAIzC,GAAO+C,GAAUL,EAEpC,CL3CUM,CAAqB/gG,EAAO39B,EAAO07H,GAAI17H,EAAO9b,GAElDq5I,EAAYv9H,EAAOs9H,cACrB3/F,EKsJG,SAA2Bl2C,EAAG61I,EAAYjG,GAE/C,GAAIiG,IAAe9I,EAGjB,MAAO,CACL90I,EAAG+H,EAAE/H,EAAI23I,EAAa,GACtB53I,EAAGgI,EAAEhI,EAAI43I,EAAa,GACtBpgH,EAAGxvB,EAAEwvB,EAAIogH,EAAa,IAEnB,GAAIiG,IAAe7I,EAAY,CACpC,IAAIkK,EAAQtH,EAAa,GACrBuH,EAAQvH,EAAa,GACrBwH,EAAQxH,EAAa,GACrByH,EAAQzH,EAAa,GACrB0H,EAAQ1H,EAAa,GACrB2H,EAAQ3H,EAAa,GACrB4H,EAAO5H,EAAa,GAGxB,MAAO,CACL33I,EAAGu/I,GAAQx3I,EAAE/H,EAAIs/I,EAAQv3I,EAAEhI,EAAIs/I,EAAQt3I,EAAEwvB,GAAK0nH,EAC9Cl/I,EAAGw/I,GAAQD,EAAQv3I,EAAE/H,EAAI+H,EAAEhI,EAAIq/I,EAAQr3I,EAAEwvB,GAAK2nH,EAC9C3nH,EAAGgoH,IAASF,EAAQt3I,EAAE/H,EAAIo/I,EAAQr3I,EAAEhI,EAAIgI,EAAEwvB,GAAK4nH,EAEnD,CACF,CLhLYK,CAAkBvhG,EAAO39B,EAAOs9H,WAAYt9H,EAAOq3H,eAEzDkG,EAAYt1E,EAAKq1E,cACnB3/F,EKmLG,SAA6Bl2C,EAAG61I,EAAYjG,GAEjD,GAAIiG,IAAe9I,EAGjB,MAAO,CACL90I,EAAG+H,EAAE/H,EAAI23I,EAAa,GACtB53I,EAAGgI,EAAEhI,EAAI43I,EAAa,GACtBpgH,EAAGxvB,EAAEwvB,EAAIogH,EAAa,IAGnB,GAAIiG,IAAe7I,EAAY,CACpC,IAAIkK,EAAQtH,EAAa,GACrBuH,EAAQvH,EAAa,GACrBwH,EAAQxH,EAAa,GACrByH,EAAQzH,EAAa,GACrB0H,EAAQ1H,EAAa,GACrB2H,EAAQ3H,EAAa,GACrB4H,EAAO5H,EAAa,GACpB8H,GAAS13I,EAAE/H,EAAIi/I,GAASM,EACxBG,GAAS33I,EAAEhI,EAAIm/I,GAASK,EACxBI,GAAS53I,EAAEwvB,EAAI4nH,GAASI,EAI5B,MAAO,CACLv/I,EAAGy/I,EAAQH,EAAQI,EAAQL,EAAQM,EACnC5/I,GAAIu/I,EAAQG,EAAQC,EAAQN,EAAQO,EACpCpoH,EAAG8nH,EAAQI,EAAQL,EAAQM,EAAQC,EAEvC,CACF,CLlNYC,CAAoB3hG,EAAOsqB,EAAKq1E,WAAYr1E,EAAKovE,eKuCtD,SAA8B5vI,EAAGi0I,EAAIx3I,EAAGC,GAG7C,IAIIo7I,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAKA5B,EAEAE,EALA94I,EAAI8B,EAAE/H,EACNkH,EAAIa,EAAEhI,EACNoH,EAAIY,EAAEwvB,EAAIxvB,EAAEwvB,EAAI,EASpB,GAJAsoH,EAAI5/I,KAAKuF,KAAKS,EAAIA,EAAIiB,EAAIA,GAC1B44I,EAAK7/I,KAAKuF,KAAKS,EAAIA,EAAIiB,EAAIA,EAAIC,EAAIA,GAG/B04I,EAAIr7I,EA7BI,OAoCV,GAJAq6I,EAAY,EAIRiB,EAAKt7I,EApCC,MAuCR,OADAu6I,GAAUt6I,EACH,CACLzE,EAAG+H,EAAE/H,EACLD,EAAGgI,EAAEhI,EACLw3B,EAAGxvB,EAAEwvB,QAMTsnH,EAAY5+I,KAAK2H,MAAMV,EAAGjB,GAY5B85I,EAAK54I,EAAI24I,EAGTM,GAFAJ,EAAKH,EAAIC,IAEK,EAAM9D,IADpBiE,EAAK,EAAMhgJ,KAAKuF,KAAK,EAAMw2I,GAAM,EAAMA,GAAMgE,EAAKA,IAElDK,EAAQN,EAAKE,EACbQ,EAAO,EAIP,GACEA,IAMAP,EAAKlE,GALLmE,EAAK37I,EAAIvE,KAAKuF,KAAK,EAAMw2I,EAAKqE,EAAQA,KAKtBF,GAFhBpB,EAASc,EAAIO,EAAQj5I,EAAIk5I,EAAQF,GAAM,EAAMnE,EAAKqE,EAAQA,KAM1DG,GADAD,EAAOR,GAFPE,EAAK,EAAMhgJ,KAAKuF,KAAK,EAAM06I,GAAM,EAAMA,GAAMF,EAAKA,KAGnCI,GAFfE,EAAON,GAAM,EAAME,GAAMD,GAEKI,EAC9BD,EAAQE,EACRD,EAAQE,QAEHC,EAAQA,EAnFF,OAmFoBC,EAlFnB,IAsFd,MAAO,CACLzgJ,EAAG6+I,EACH9+I,EAHSE,KAAK+/G,KAAKugC,EAAOtgJ,KAAK2G,IAAI05I,IAInC/oH,EAAGwnH,EAEP,CLrIS2B,CAAqBziG,EAAOsqB,EAAKyzE,GAAIzzE,EAAK/jE,EAAG+jE,EAAK9jE,IAZhDw5C,CAcX,CIWU0iG,CAAgBrgI,EAAO41H,MAAO3tE,EAAK2tE,MAAOj4F,GAG9CsqB,EAAKsvE,iBACP55F,EAAQ,CACNj+C,EAAGi+C,EAAMj+C,EAAIuoE,EAAKsvE,eAClB93I,EAAGk+C,EAAMl+C,IAIS,YAAlBwoE,EAAKqxE,SAEP37F,EAAQ,CACNj+C,EAAGi+C,EAAMj+C,EAAIq1I,EACbt1I,EAAGk+C,EAAMl+C,EAAIs1I,IAGfp3F,EAAQsqB,EAAKq5C,QAAQ3jE,GACjBsqB,EAAKi8C,WACPvmE,EAAQ,CACNj+C,EAAGi+C,EAAMj+C,EAAIuoE,EAAKi8C,SAClBzkH,EAAGk+C,EAAMl+C,EAAIwoE,EAAKi8C,YAMN,QAAdj8C,EAAKg8C,KACAg6B,GAAYh2E,GAAM,EAAMtqB,GAG1BA,CACT,CE/EA,IAAIkgG,GAAQ,EAAK,SAEjB,SAASyC,GAAYC,EAAMC,EAAItoI,GAC7B,IAAIuoI,EAAkBxgE,EAAK/yE,EAC3B,OAAIrO,MAAMkP,QAAQmK,IAChBuoI,EAAmBx7H,GAAUs7H,EAAMC,EAAItoI,GACjB,IAAlBA,EAAOpX,OACF,CAAC2/I,EAAiB/gJ,EAAG+gJ,EAAiBhhJ,EAAGghJ,EAAiBxpH,GAG1D,CAACwpH,EAAiB/gJ,EAAG+gJ,EAAiBhhJ,KAI/CwgF,EAAMh7D,GAAUs7H,EAAMC,EAAItoI,GAEN,KADpBhL,EAAOhP,OAAOgP,KAAKgL,IACVpX,QAGToM,EAAKC,SAAQ,SAAUkd,GACT,MAARA,GAAuB,MAARA,IAGnB41D,EAAI51D,GAAOnS,EAAOmS,GACpB,IAPS41D,EAUb,CAEA,SAASygE,GAAUhtI,GACjB,OAAIA,aAAgB,EACXA,EAELA,EAAKitI,MACAjtI,EAAKitI,MAEP,EAAKjtI,EACd,CAmCA,SAlCA,SAAektI,EAAUC,EAAQx2F,GAC/Bu2F,EAAWF,GAAUE,GACrB,IACIhsI,EADAksI,GAAS,EAcb,YAZsB,IAAXD,GACTA,EAASD,EACTA,EAAW/C,GACXiD,GAAS,SAEkB,IAAbD,EAAOnhJ,GAAqBb,MAAMkP,QAAQ8yI,MACxDx2F,EAAQw2F,EACRA,EAASD,EACTA,EAAW/C,GACXiD,GAAS,GAEXD,EAASH,GAAUG,GACfx2F,EACKi2F,GAAYM,EAAUC,EAAQx2F,IAGrCz1C,EAAM,CACJ0sG,QAAS,SAASppG,GAChB,OAAOooI,GAAYM,EAAUC,EAAQ3oI,EACvC,EACAqpG,QAAS,SAASrpG,GAChB,OAAOooI,GAAYO,EAAQD,EAAU1oI,EACvC,GAEE4oI,IACFlsI,EAAI+rI,MAAQE,GAEPjsI,EAEX,EChEA,IAAImsI,GAAgB,EAQhBC,GAA4B,SAQ5BC,GAAyB,SAEzBC,GAAI,GACJt5I,GAAI,GACJu5I,GAAI,GACJ35I,GAAI,GACJX,GAAI,GACR,UACEy6G,QAAS,GACTC,QA4BK,SAAiB6/B,GACtB,IAAI/wF,EAAOgxF,GAAQ7nI,GAAO4nI,EAAK5tF,gBAC/B,OAAInD,EAAKiiB,KAAOjiB,EAAK4hB,IACZ,CAAC5hB,EAAK4hB,IAAK5hB,EAAKiiB,IAAKjiB,EAAK4hB,IAAK5hB,EAAKiiB,KAEtC,CAACjiB,EAAKlkD,KAAMkkD,EAAKxiD,OAAQwiD,EAAKziD,MAAOyiD,EAAKviD,IACnD,EAjCEgwI,QAAS,IAWJ,SAAS,GAAQwD,EAAInpI,GAE1B,OADAA,EAAWA,GAAY,EA6TzB,SAAgBopI,EAAKppI,GAEnB,IAuDuBqpI,EAAQC,EAE3B7uI,EACA8uI,EACAC,EAGAC,EACAC,EACAC,EAhDaC,EAASC,EACtBC,EAjBAC,EAAW,QAAUX,EAAIQ,QAC3BI,EAAY,QAAUZ,EAAIS,SAE5B,OAAOT,EAAIa,WAAab,EAAIc,YAaXN,EAbkCR,EAAIQ,QAa7BC,EAbsCT,EAAIS,SAchEC,EAAUK,GAdgEf,EAAIa,YAoD3DZ,EArCP7hJ,KAAKC,MAAMmiJ,EAAU,KAqCNN,EApClB9hJ,KAAKC,MAAMoiJ,EAAW,KAAU,GAsCzCpvI,EArCsCqvI,EAqCvB,EACfP,EAAYV,GAA0BlgE,WAAWluE,GACjD+uI,EAAYV,GAAuBngE,WAAWluE,GAK9CkvI,GAAW,GAFXF,EAASF,EAAYF,EAAS,GAIrB36I,KACX+6I,EAASA,EAAS/6I,GAAIq6I,GAAI,EAC1BY,GAAW,IAGTF,IAAWh6I,IAAM85I,EAAY95I,IAAKg6I,EAASh6I,KAAQg6I,EAASh6I,IAAK85I,EAAY95I,KAAMk6I,IACrFF,KAGEA,IAAWT,IAAMO,EAAYP,IAAKS,EAAST,KAAQS,EAAST,IAAKO,EAAYP,KAAMW,MACrFF,IAEeh6I,IACbg6I,IAIAA,EAAS/6I,KACX+6I,EAASA,EAAS/6I,GAAIq6I,GAAI,IArBxBW,EAASF,EAAYF,GAwBZj6I,IACXq6I,EAASA,EAASr6I,GAAI05I,GAAI,EAC1BY,GAAW,GAGXA,GAAW,GAGPD,IAAWj6I,IAAQ+5I,EAAY/5I,IAAOi6I,EAASj6I,KAAWi6I,EAASj6I,IAAO+5I,EAAY/5I,KAAOk6I,IACjGD,KAGIA,IAAWV,IAAQQ,EAAYR,IAAOU,EAASV,KAAWU,EAASV,IAAOQ,EAAYR,KAAOW,MACjGD,IAEej6I,IACbi6I,IAIAA,EAASr6I,KACXq6I,EAASA,EAASr6I,GAAI05I,GAAI,GAGZzgG,OAAOo0E,aAAa+sB,GAAUnhG,OAAOo0E,aAAagtB,IA5G8BK,EAASz3I,OAAOy3I,EAASphJ,OAAS,EAAGqX,GAAYgqI,EAAU13I,OAAO03I,EAAUrhJ,OAAS,EAAGqX,EAC1L,CAlUSu+C,CA8DT,SAAiB4qF,GACf,IAMIiB,EACAC,EAAGC,EAAGj3I,EAAG01I,EAGTwB,EACAC,EAXAC,EAAMtB,EAAGhvE,IACTuwE,EAAOvB,EAAGrvE,IACV/tE,EAAI,QACJ4+I,EAAa,UACbhM,EAAK,MAILiM,EAASC,GAASJ,GAClBK,EAAUD,GAASH,GAIvBF,EAAahjJ,KAAKC,OAAOijJ,EAAO,KAAO,GAAK,EAG/B,MAATA,IACFF,EAAa,IAIXC,GAAO,IAAQA,EAAM,IAAQC,GAAQ,GAAOA,EAAO,KACrDF,EAAa,IAIXC,GAAO,IAAQA,EAAM,KACnBC,GAAQ,GAAOA,EAAO,EACxBF,EAAa,GAENE,GAAQ,GAAOA,EAAO,GAC7BF,EAAa,GAENE,GAAQ,IAAQA,EAAO,GAC9BF,EAAa,GAENE,GAAQ,IAAQA,EAAO,KAC9BF,EAAa,KAOjBD,EAAgBM,GAHgB,GAAlBL,EAAa,GAAS,IAAM,GAK1CJ,EAAkB,oBAElBC,EAAIt+I,EAAIvE,KAAKuF,KAAK,EAAI49I,EAAanjJ,KAAKwF,IAAI49I,GAAUpjJ,KAAKwF,IAAI49I,IAC/DN,EAAI9iJ,KAAK4F,IAAIw9I,GAAUpjJ,KAAK4F,IAAIw9I,GAChCv3I,EAAI+2I,EAAkB5iJ,KAAKiG,IAAIm9I,GAAUpjJ,KAAKiG,IAAIm9I,GAKlD,IAyH2BzwE,EAGvB4wE,EA5HAC,EAAcrM,EAAK0L,IAJvBtB,EAAIvhJ,KAAKiG,IAAIm9I,IAAWE,EAAUP,KAID,EAAID,EAAIj3I,GAAK01I,EAAIA,EAAIA,EAAI,GAAO,EAAI,GAAKuB,EAAIA,EAAIA,EAAI,GAAKj3I,EAAI,GAAK+2I,GAAmBrB,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,KAAS,IAEhJkC,EAAetM,GAJf5yI,GAAK,kBAA2G6+I,EAAS,oBAA6GpjJ,KAAKwF,IAAI,EAAI49I,GAAU,qBAA0FpjJ,KAAKwF,IAAI,EAAI49I,GAAU,qBAAqDpjJ,KAAKwF,IAAI,EAAI49I,IAIvZP,EAAI7iJ,KAAK4F,IAAIw9I,IAAW7B,EAAIA,EAAI,GAAK,EAAIuB,EAAI,EAAIj3I,EAAI,EAAIA,EAAIA,GAAK01I,EAAIA,EAAIA,EAAIA,EAAI,IAAQ,GAAK,GAAKuB,EAAIA,EAAIA,EAAI,IAAMj3I,EAAI,oBAAyB01I,EAAIA,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,MAMxM,OALI0B,EAAM,IACRQ,GAAe,KAIV,CACLpB,SAAUriJ,KAAKE,MAAMujJ,GACrBrB,QAASpiJ,KAAKE,MAAMsjJ,GACpBf,WAAYO,EACZN,YA6GyB/vE,EA7GOswE,EAgH9BM,EAAmB,IAElB,IAAM5wE,GAASA,GAAO,GACzB4wE,EAAmB,IAEX,GAAK5wE,GAASA,GAAO,GAC7B4wE,EAAmB,IAEX,GAAK5wE,GAASA,GAAO,GAC7B4wE,EAAmB,IAEX,GAAK5wE,GAASA,GAAO,GAC7B4wE,EAAmB,IAEX,GAAK5wE,GAASA,GAAO,GAC7B4wE,EAAmB,IAEX,GAAK5wE,GAASA,GAAO,GAC7B4wE,EAAmB,IAEX,GAAK5wE,GAASA,GAAO,GAC7B4wE,EAAmB,IAEX,GAAK5wE,GAASA,GAAO,GAC7B4wE,EAAmB,IAEX,GAAK5wE,GAASA,GAAO,EAC7B4wE,EAAmB,IAEX,EAAI5wE,GAASA,GAAO,EAC5B4wE,EAAmB,IAEX,EAAI5wE,GAASA,IAAQ,EAC7B4wE,EAAmB,KAEV,EAAI5wE,GAASA,IAAQ,GAC9B4wE,EAAmB,KAEV,GAAK5wE,GAASA,IAAQ,GAC/B4wE,EAAmB,KAEV,GAAK5wE,GAASA,IAAQ,GAC/B4wE,EAAmB,KAEV,GAAK5wE,GAASA,IAAQ,GAC/B4wE,EAAmB,KAEV,GAAK5wE,GAASA,IAAQ,GAC/B4wE,EAAmB,KAEV,GAAK5wE,GAASA,IAAQ,GAC/B4wE,EAAmB,KAEV,GAAK5wE,GAASA,IAAQ,GAC/B4wE,EAAmB,KAEV,GAAK5wE,GAASA,IAAQ,GAC/B4wE,EAAmB,KAEV,GAAK5wE,GAASA,IAAQ,KAC/B4wE,EAAmB,KAEdA,GA5KT,CApIgBG,CAAQ,CACpB/wE,IAAKgvE,EAAG,GACRrvE,IAAKqvE,EAAG,KACNnpI,EACN,CAkBO,SAAS,GAAQipI,GACtB,IAAI/wF,EAAOgxF,GAAQ7nI,GAAO4nI,EAAK5tF,gBAC/B,OAAInD,EAAKiiB,KAAOjiB,EAAK4hB,IACZ,CAAC5hB,EAAK4hB,IAAK5hB,EAAKiiB,KAElB,EAAEjiB,EAAKlkD,KAAOkkD,EAAKziD,OAAS,GAAIyiD,EAAKviD,IAAMuiD,EAAKxiD,QAAU,EACnE,CAQA,SAASm1I,GAAStyG,GAChB,OAAQA,GAAO/wC,KAAKmlB,GAAK,IAC3B,CASA,SAASw+H,GAASC,GAChB,OAAiBA,EAAM5jJ,KAAKmlB,GAApB,GACV,CAoGA,SAASu8H,GAAQE,GAEf,IAAI6B,EAAc7B,EAAIS,SAClBmB,EAAa5B,EAAIQ,QACjBM,EAAad,EAAIc,WACjBD,EAAab,EAAIa,WAErB,GAAIA,EAAa,GAAKA,EAAa,GACjC,OAAO,KAGT,IAGIG,EAEAiB,EAAIC,EAAIC,EAAIC,EAAIC,EAChBC,EACAC,EAAIC,EAPJjN,EAAK,MACL5yI,EAAI,QACJ4+I,EAAa,UAEbvS,GAAM,EAAI5wI,KAAKuF,KAAK,aAAoB,EAAIvF,KAAKuF,KAAK,YAMtDxF,EAAIyjJ,EAAa,IACjB1jJ,EAAI2jJ,EAMJf,EAAa,MACf5iJ,GAAK,KAKPokJ,EAAgC,GAAlBzB,EAAa,GAAS,IAAM,EAI1CG,EAAkB,oBAKlBwB,GAFAD,EADIrkJ,EAAIq3I,EACC,oBAEO,EAAIvG,EAAK,EAAI,GAAKA,EAAKA,EAAKA,EAAK,IAAM5wI,KAAKwF,IAAI,EAAI2+I,IAAO,GAAKvT,EAAKA,EAAK,GAAK,GAAKA,EAAKA,EAAKA,EAAKA,EAAK,IAAM5wI,KAAKwF,IAAI,EAAI2+I,GAAO,IAAMvT,EAAKA,EAAKA,EAAK,GAAM5wI,KAAKwF,IAAI,EAAI2+I,GAG1LN,EAAKt/I,EAAIvE,KAAKuF,KAAK,EAAI49I,EAAanjJ,KAAKwF,IAAI4+I,GAAWpkJ,KAAKwF,IAAI4+I,IACjEN,EAAK9jJ,KAAK4F,IAAIw+I,GAAWpkJ,KAAK4F,IAAIw+I,GAClCL,EAAKnB,EAAkB5iJ,KAAKiG,IAAIm+I,GAAWpkJ,KAAKiG,IAAIm+I,GACpDJ,EAAS,UAAJz/I,EAAuBvE,KAAKI,IAAI,EAAI+iJ,EAAanjJ,KAAKwF,IAAI4+I,GAAWpkJ,KAAKwF,IAAI4+I,GAAU,KAC7FH,EAAIlkJ,GAAK8jJ,EAAK1M,GAEd,IAAIxkE,EAAMyxE,EAAWP,EAAK7jJ,KAAK4F,IAAIw+I,GAAWJ,GAAOC,EAAIA,EAAI,GAAK,EAAI,EAAIH,EAAK,GAAKC,EAAK,EAAIA,EAAKA,EAAK,EAAInB,GAAmBqB,EAAIA,EAAIA,EAAIA,EAAI,IAAM,GAAK,GAAKH,EAAK,IAAMC,EAAK,GAAKD,EAAKA,EAAK,mBAAwB,EAAIC,EAAKA,GAAME,EAAIA,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,KAC5PtxE,EAAMgxE,GAAShxE,GAEf,IAGIp1E,EAHA+0E,GAAO2xE,GAAK,EAAI,EAAIH,EAAKC,GAAME,EAAIA,EAAIA,EAAI,GAAK,EAAI,EAAIF,EAAK,GAAKD,EAAK,EAAIC,EAAKA,EAAK,EAAInB,EAAkB,GAAKkB,EAAKA,GAAMG,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,KAAOjkJ,KAAKiG,IAAIm+I,GAInK,GAHA9xE,EAAM4xE,EAAaP,GAASrxE,GAGxBsvE,EAAIppI,SAAU,CAChB,IAAIy0G,EAAWy0B,GAAQ,CACrBW,SAAUT,EAAIS,SAAWT,EAAIppI,SAC7B4pI,QAASR,EAAIQ,QAAUR,EAAIppI,SAC3BkqI,WAAYd,EAAIc,WAChBD,WAAYb,EAAIa,aAElBllJ,EAAS,CACP4Q,IAAK8+G,EAASt6C,IACd1kE,MAAOg/G,EAAS36C,IAChBpkE,OAAQykE,EACRnmE,KAAM8lE,EAEV,MAEE/0E,EAAS,CACPo1E,IAAKA,EACLL,IAAKA,GAGT,OAAO/0E,CACT,CAuHA,SAASolJ,GAAkBp6I,GACzB,IAAI+5I,EAAU/5I,EAAI64I,GAKlB,OAJgB,IAAZkB,IACFA,EAAUlB,IAGLkB,CACT,CAsFA,SAASzoI,GAAOwqI,GAEd,GAAIA,GAAoC,IAAtBA,EAAWljJ,OAC3B,KAAM,mCAWR,IARA,IAIImjJ,EAJAnjJ,EAASkjJ,EAAWljJ,OAEpBojJ,EAAO,KACPC,EAAK,GAELj8I,EAAI,GAGA,QAAU6B,KAAKk6I,EAAWD,EAAWpzG,OAAO1oC,KAAK,CACvD,GAAIA,GAAK,EACP,KAAO,kCAAoC87I,EAE7CG,GAAMF,EACN/7I,GACF,CAEA,IAAIk6I,EAAaxhJ,SAASujJ,EAAI,IAE9B,GAAU,IAANj8I,GAAWA,EAAI,EAAIpH,EAGrB,KAAO,kCAAoCkjJ,EAG7C,IAAI3B,EAAa2B,EAAWpzG,OAAO1oC,KAGnC,GAAIm6I,GAAc,KAAsB,MAAfA,GAAqC,MAAfA,GAAsBA,GAAc,KAAsB,MAAfA,GAAqC,MAAfA,EAC9G,KAAO,yBAA2BA,EAAa,iBAAmB2B,EAGpEE,EAAOF,EAAW3vF,UAAUnsD,EAAGA,GAAK,GAWpC,IATA,IAAIiM,EAAMmuI,GAAkBF,GAExBgC,EAqDN,SAA4B7kJ,EAAG4U,GAO7B,IAJA,IAAIkwI,EAASrD,GAA0BlgE,WAAW3sE,EAAM,GACpDmwI,EAAe,IACfC,GAAe,EAEZF,IAAW9kJ,EAAEuhF,WAAW,IAAI,CAQjC,KAPAujE,IACez8I,IACby8I,IAEEA,IAAWlD,IACbkD,IAEEA,EAASx9I,GAAG,CACd,GAAI09I,EACF,KAAO,kBAAoBhlJ,EAE7B8kJ,EAASnD,GACTqD,GAAe,CACjB,CACAD,GAAgB,GAClB,CAEA,OAAOA,CACT,CA/EiBE,CAAmBN,EAAKtzG,OAAO,GAAIz8B,GAC9CswI,EAgGN,SAA6BjlJ,EAAG2U,GAE9B,GAAI3U,EAAI,IACN,KAAO,oCAAsCA,EAS/C,IAJA,IAAIklJ,EAASzD,GAAuBngE,WAAW3sE,EAAM,GACjDwwI,EAAgB,EAChBJ,GAAe,EAEZG,IAAWllJ,EAAEshF,WAAW,IAAI,CAUjC,KATA4jE,IACe98I,IACb88I,IAEEA,IAAWvD,IACbuD,IAIEA,EAASl9I,GAAG,CACd,GAAI+8I,EACF,KAAO,kBAAoB/kJ,EAE7BklJ,EAASxD,GACTqD,GAAe,CACjB,CACAI,GAAiB,GACnB,CAEA,OAAOA,CACT,CAjIkBC,CAAoBV,EAAKtzG,OAAO,GAAIz8B,GAM7CswI,EAAYI,GAAexC,IAChCoC,GAAa,IAIf,IAAIK,EAAYhkJ,EAASoH,EAEzB,GAAI48I,EAAY,GAAM,EACpB,KAAO,oKAAsKd,EAG/K,IAIIe,EAAeC,EAAkBC,EAJjCC,EAAMJ,EAAY,EAElBK,EAAa,EACbC,EAAc,EAalB,OAXIF,EAAM,IACRH,EAAgB,IAAWplJ,KAAKI,IAAI,GAAImlJ,GACxCF,EAAmBhB,EAAW3vF,UAAUnsD,EAAGA,EAAIg9I,GAC/CC,EAAa/hJ,WAAW4hJ,GAAoBD,EAC5CE,EAAoBjB,EAAW3vF,UAAUnsD,EAAIg9I,GAC7CE,EAAchiJ,WAAW6hJ,GAAqBF,GAMzC,CACLhD,QAJQoD,EAAaf,EAKrBpC,SAJSoD,EAAcX,EAKvBpC,WAAYA,EACZD,WAAYA,EACZjqI,SAAU4sI,EAEd,CAqGA,SAASF,GAAexC,GACtB,IAAIL,EACJ,OAAQK,GACR,IAAK,IACHL,EAAW,KACX,MACF,IAAK,IACHA,EAAW,IACX,MACF,IAAK,IACHA,EAAW,KACX,MACF,IAAK,IACHA,EAAW,KACX,MACF,IAAK,IACHA,EAAW,KACX,MACF,IAAK,IACHA,EAAW,KACX,MACF,IAAK,IACHA,EAAW,KACX,MACF,IAAK,IACHA,EAAW,KACX,MACF,IAAK,IACHA,EAAW,KACX,MACF,IAAK,IACHA,EAAW,KACX,MACF,IAAK,IACHA,EAAW,EACX,MACF,IAAK,IACHA,EAAW,IACX,MACF,IAAK,IACHA,EAAW,KACX,MACF,IAAK,IACHA,EAAW,KACX,MACF,IAAK,IACHA,EAAW,KACX,MACF,IAAK,IACHA,EAAW,KACX,MACF,IAAK,IACHA,EAAW,KACX,MACF,IAAK,IACHA,EAAW,KACX,MACF,IAAK,IACHA,EAAW,IACX,MACF,IAAK,IACHA,EAAW,KACX,MACF,QACEA,GAAY,EAEd,GAAIA,GAAY,EACd,OAAOA,EAGP,KAAO,wBAA0BK,CAGrC,CCvuBA,SAAS9gG,GAAM7hD,EAAGD,EAAGw3B,GACnB,KAAMv5B,gBAAgB6jD,IACpB,OAAO,IAAIA,GAAM7hD,EAAGD,EAAGw3B,GAEzB,GAAIp4B,MAAMkP,QAAQrO,GAChBhC,KAAKgC,EAAIA,EAAE,GACXhC,KAAK+B,EAAIC,EAAE,GACXhC,KAAKu5B,EAAIv3B,EAAE,IAAM,OACZ,GAAgB,iBAANA,EACfhC,KAAKgC,EAAIA,EAAEA,EACXhC,KAAK+B,EAAIC,EAAED,EACX/B,KAAKu5B,EAAIv3B,EAAEu3B,GAAK,OACX,GAAiB,iBAANv3B,QAA+B,IAAND,EAAmB,CAC5D,IAAIyY,EAASxY,EAAEsO,MAAM,KACrBtQ,KAAKgC,EAAI0D,WAAW8U,EAAO,GAAI,IAC/Bxa,KAAK+B,EAAI2D,WAAW8U,EAAO,GAAI,IAC/Bxa,KAAKu5B,EAAI7zB,WAAW8U,EAAO,GAAI,KAAO,CACxC,MACExa,KAAKgC,EAAIA,EACThC,KAAK+B,EAAIA,EACT/B,KAAKu5B,EAAIA,GAAK,EAEhB73B,QAAQgnH,KAAK,8DACf,CAEA7kE,GAAM8jG,SAAW,SAASC,GACxB,OAAO,IAAI/jG,GAAM,GAAQ+jG,GAC3B,EACA/jG,GAAM7+C,UAAU6iJ,OAAS,SAASptI,GAChC,OAAO,GAAQ,CAACza,KAAKgC,EAAGhC,KAAK+B,GAAI0Y,EACnC,EACA,YCjCA,IAEIqtI,GAAM,QACNC,GAAM,UACNC,GAAM,gBASK,YAAShK,GACtB,IAAIiK,EAAK,GACTA,EAAG,GAfK,EAeMjK,GAdN,IAckBA,GAAM8J,GAAM9J,GAAM+J,GAAM/J,EAAKgK,MACvDC,EAAG,GAAKjK,GAXA,IAWYA,GAAM8J,GAAM9J,GAAM+J,GAAM/J,EAAKgK,MACjD,IAAI19I,EAAI0zI,EAAKA,EAKb,OAJAiK,EAAG,GAAK39I,GAZA,OAYW0zI,GAXX,oBACA,oBAUuBA,IAC/B1zI,GAAK0zI,EACLiK,EAAG,GAAK39I,GAXA,kBACA,oBAUW0zI,GACnBiK,EAAG,GAAK39I,EAAI0zI,EAVJ,YAWDiK,CACT,CCvBe,YAASzK,EAAK0K,EAAMC,EAAMF,GAGvC,OAFAE,GAAQD,EACRA,GAAQA,EACAD,EAAG,GAAKzK,EAAM2K,GAAQF,EAAG,GAAKC,GAAQD,EAAG,GAAKC,GAAQD,EAAG,GAAKC,EAAOD,EAAG,KAClF,CCCe,YAASG,EAAKpK,EAAIiK,GAG/B,IAFA,IAAIr6E,EAAI,GAAK,EAAIowE,GACbR,EAAM4K,EACD59I,EALI,GAKUA,IAAKA,EAAG,CAC7B,IAAIjB,EAAItH,KAAKwF,IAAI+1I,GACblzI,EAAI,EAAI0zI,EAAKz0I,EAAIA,EAKrB,GADAi0I,GADAlzI,GAAK+9I,GAAQ7K,EAAKj0I,EAAGtH,KAAKiG,IAAIs1I,GAAMyK,GAAMG,IAAQ99I,EAAIrI,KAAKuF,KAAK8C,IAAMsjE,EAElE3rE,KAAK2G,IAAI0B,GAAK6sI,EAChB,OAAOqG,CAEX,CAEA,OAAOA,CACT,CCkJA,UACEv8I,KA7JK,WACLjB,KAAK6jC,QAAiBrtB,IAAZxW,KAAK6jC,GAAmB7jC,KAAK6jC,GAAK,EAC5C7jC,KAAK8jC,QAAiBttB,IAAZxW,KAAK8jC,GAAmB9jC,KAAK8jC,GAAK,EAC5C9jC,KAAK04I,WAAuBliI,IAAfxW,KAAK04I,MAAsB14I,KAAK04I,MAAQ,EACrD14I,KAAKq4I,UAAqB7hI,IAAdxW,KAAKq4I,KAAqBr4I,KAAKq4I,KAAO,EAE9Cr4I,KAAKg+I,KACPh+I,KAAKioJ,GAAKK,GAAQtoJ,KAAKg+I,IACvBh+I,KAAKuoJ,IAAMF,GAAQroJ,KAAKq4I,KAAMp2I,KAAKwF,IAAIzH,KAAKq4I,MAAOp2I,KAAKiG,IAAIlI,KAAKq4I,MAAOr4I,KAAKioJ,IAEjF,EAoJErkC,QA9IK,SAAiB75G,GACtB,IAIIuzI,EACAt7I,EAAGD,EALHwyE,EAAMxqE,EAAE/H,EACR4yE,EAAM7qE,EAAEhI,EAERymJ,EAAYtK,EAAW3pE,EAAMv0E,KAAK04I,OAGlC+P,EAAUxmJ,KAAKwF,IAAImtE,GACnB8zE,EAAUzmJ,KAAKiG,IAAI0sE,GAEvB,GAAK50E,KAAKg+I,GA8BL,CACH,IAAI2K,EAAKD,EAAUF,EACfI,EAAM3mJ,KAAKI,IAAIsmJ,EAAI,GACnBx9I,EAAInL,KAAK0/I,IAAMz9I,KAAKI,IAAIqmJ,EAAS,GACjCG,EAAK5mJ,KAAKI,IAAI8I,EAAG,GACjB29I,EAAK7mJ,KAAK2G,IAAI8/I,GAAWvR,EAAQl1I,KAAK4F,IAAI+sE,GAAO,EACjDtqE,EAAIrI,KAAKI,IAAIymJ,EAAI,GACjBpL,EAAKz7I,KAAKI,IAAIiI,EAAG,GACrBgzI,EAAM,EAAIt9I,KAAKg+I,GAAK/7I,KAAKI,IAAIomJ,EAAS,GACtCE,GAAU1mJ,KAAKuF,KAAK81I,GACpB,IAAIyL,EAAKV,GAAQzzE,EAAK6zE,EAASC,EAAS1oJ,KAAKioJ,IAE7CjmJ,EAAIhC,KAAKwG,GAAKxG,KAAKo5I,GAAKuP,GAAM,EAC5BC,EAAM,GAAK,EAAIt+I,EAAIa,EACnBy9I,EAAM,IAAM,EAAI,GAAKt+I,EAAIozI,EAAK,GAAKvyI,EAAI,GAAKb,EAAIa,EAChDy9I,EAAM,IAAM,GAAK,IAAMlL,EAAKA,EAAKpzI,EAAI,IAAMA,OAC3CtK,KAAK6jC,GAEP9hC,EAAI/B,KAAKwG,GAAKxG,KAAKo5I,IAAM2P,EAAK/oJ,KAAKuoJ,IACjCE,EAAUD,EAAYG,EAAK,GAAK,EAChCC,EAAM,IAAM,EAAIt+I,EAAI,EAAIa,EAAI,EAAI09I,EAChCD,EAAM,IAAM,GAAKlL,EAAK,GAAKpzI,EAAI,IAAMa,EAAI,IAAMb,EAAIa,EACnDy9I,EAAM,IAAM,KAAO,IAAMlL,EAAKA,EAAKpzI,EAAI,KAAOA,QAC9CtK,KAAK8jC,EACT,KAtDc,CACZ,IAAIr9B,EAAIiiJ,EAAUzmJ,KAAKwF,IAAI+gJ,GAE3B,GAAKvmJ,KAAK2G,IAAI3G,KAAK2G,IAAInC,GAAK,GAAM0wI,EAChC,OAAO,GAOP,GAJAn1I,EAAI,GAAMhC,KAAKwG,EAAIxG,KAAKo5I,GAAKn3I,KAAKN,KAAK,EAAI8E,IAAM,EAAIA,IAAMzG,KAAK6jC,GAChE9hC,EAAI2mJ,EAAUzmJ,KAAKiG,IAAIsgJ,GAAavmJ,KAAKuF,KAAK,EAAIvF,KAAKI,IAAIoE,EAAG,KAC9DA,EAAIxE,KAAK2G,IAAI7G,KAEJ,EAAG,CACV,GAAK0E,EAAI,EAAK0wI,EACZ,OAAO,GAGPp1I,EAAI,CAER,MAEEA,EAAIE,KAAK6rG,KAAK/rG,GAGZ6yE,EAAM,IACR7yE,GAAKA,GAGPA,EAAI/B,KAAKwG,EAAIxG,KAAKo5I,IAAMr3I,EAAI/B,KAAKq4I,MAAQr4I,KAAK8jC,EAElD,CA8BA,OAHA/5B,EAAE/H,EAAIA,EACN+H,EAAEhI,EAAIA,EAECgI,CACT,EAyEE85G,QApEK,SAAiB95G,GACtB,IAAIuzI,EAAKE,EACL5oE,EAAKL,EACLvyE,GAAK+H,EAAE/H,EAAIhC,KAAK6jC,KAAO,EAAI7jC,KAAKwG,GAChCzE,GAAKgI,EAAEhI,EAAI/B,KAAK8jC,KAAO,EAAI9jC,KAAKwG,GAEpC,GAAKxG,KAAKg+I,GAuBR,GAFAR,EAAMwL,GADN1L,EAAMt9I,KAAKuoJ,IAAMxmJ,EAAI/B,KAAKo5I,GACHp5I,KAAKg+I,GAAIh+I,KAAKioJ,IAEjChmJ,KAAK2G,IAAI40I,GAAOtG,EAAS,CAC3B,IAAIuR,EAAUxmJ,KAAKwF,IAAI+1I,GACnBkL,EAAUzmJ,KAAKiG,IAAIs1I,GACnByL,EAAUhnJ,KAAK2G,IAAI8/I,GAAWvR,EAAQl1I,KAAK4F,IAAI21I,GAAO,EACtDryI,EAAInL,KAAK0/I,IAAMz9I,KAAKI,IAAIqmJ,EAAS,GACjCG,EAAK5mJ,KAAKI,IAAI8I,EAAG,GACjBb,EAAIrI,KAAKI,IAAI4mJ,EAAS,GACtBvL,EAAKz7I,KAAKI,IAAIiI,EAAG,GACrBgzI,EAAM,EAAIt9I,KAAKg+I,GAAK/7I,KAAKI,IAAIomJ,EAAS,GACtC,IAAIr8I,EAAIpK,EAAIC,KAAKuF,KAAK81I,GAAOt9I,KAAKo5I,GAC9B8P,EAAKjnJ,KAAKI,IAAI+J,EAAG,GAGrBwoE,EAAM4oE,GAFNF,GAAY2L,GAEOC,GAAM,EAAIlpJ,KAAKg+I,IAAO,IAAO,EAC9CkL,EAAK,IAAM,EAAI,EAAI5+I,EAAI,EAAIa,EAAIb,EAAIa,EAAI,EAAI09I,EAC3CK,EAAK,IAAM,GAAK,GAAK5+I,EAAI,IAAMa,EAAIb,EAAI,GAAKozI,EAAK,GAAKvyI,EACtD+9I,EAAK,IAAM,KAAO,KAAO5+I,EAAI,KAAOozI,EAAK,KAAOA,EAAKpzI,MAEvDiqE,EAAM2pE,EAAWl+I,KAAK04I,MAAStsI,GAAK,EAClC88I,EAAK,GAAK,EAAI,EAAI5+I,EAAIa,EACtB+9I,EAAK,IAAM,EAAI,GAAK5+I,EAAI,GAAKozI,EAAK,EAAIvyI,EAAIb,EAAI,EAAIa,EAClD+9I,EAAK,IAAM,GAAK,IAAM5+I,EAAI,KAAOozI,EAAK,IAAMA,EAAKpzI,MAAQo+I,EAC7D,MAEE9zE,EAAMsiE,EAAUqG,EAAKx7I,GACrBwyE,EAAM,MAhDI,CACZ,IAAI5nE,EAAI1K,KAAKg+G,IAAIj+G,EAAIhC,KAAKo5I,IACtB3sI,EAAI,IAAOE,EAAI,EAAIA,GACnBw8I,EAAOnpJ,KAAKq4I,KAAOt2I,EAAI/B,KAAKo5I,GAC5BhuI,EAAInJ,KAAKiG,IAAIihJ,GACjB7L,EAAMr7I,KAAKuF,MAAM,EAAIvF,KAAKI,IAAI+I,EAAG,KAAO,EAAInJ,KAAKI,IAAIoK,EAAG,KACxDmoE,EAAM3yE,KAAKmlI,KAAKkW,GAEZv7I,EAAI,IACN6yE,GAAOA,GAIPL,EADS,IAAN9nE,GAAmB,IAANrB,EACV,EAGA8yI,EAAWj8I,KAAK2H,MAAM6C,EAAGrB,GAAKpL,KAAK04I,MAE7C,CAqCA,OAHA3uI,EAAE/H,EAAIuyE,EACNxqE,EAAEhI,EAAI6yE,EAEC7qE,CACT,EAOEs0I,MALiB,CAAC,sBAAuB,sBAAuB,UCtKnD,YAASr8I,GACtB,IAAI8N,EAAI7N,KAAKg+G,IAAIj+G,GAEjB,OADK8N,EAAI,EAAIA,GAAK,CAEpB,CCJe,YAAS9N,EAAGD,GACzBC,EAAIC,KAAK2G,IAAI5G,GACbD,EAAIE,KAAK2G,IAAI7G,GACb,IAAIyE,EAAIvE,KAAKm7B,IAAIp7B,EAAGD,GAChB0E,EAAIxE,KAAK27B,IAAI57B,EAAGD,IAAMyE,GAAQ,GAElC,OAAOA,EAAIvE,KAAKuF,KAAK,EAAIvF,KAAKI,IAAIoE,EAAG,GACvC,CCPe,YAAS2iJ,EAAIC,GAO1B,IANA,IAIIj+I,EAJAk+I,EAAS,EAAIrnJ,KAAKiG,IAAI,EAAImhJ,GAC1B7+I,EAAI4+I,EAAGhmJ,OAAS,EAChBmmJ,EAAKH,EAAG5+I,GACRg/I,EAAK,IAGAh/I,GAAK,GACZY,EAAUk+I,EAASC,EAAdC,EAAmBJ,EAAG5+I,GAC3Bg/I,EAAKD,EACLA,EAAKn+I,EAGP,OAAQi+I,EAAIj+I,EAAInJ,KAAKwF,IAAI,EAAI4hJ,EAC/B,CCXe,YAASD,EAAIK,EAAOC,GAejC,IAdA,IAWIC,EACAC,EAZAC,EAAY5nJ,KAAKwF,IAAIgiJ,GACrBK,EAAY7nJ,KAAKiG,IAAIuhJ,GACrBM,EAAaC,GAAKN,GAClBO,ECPS,SAASjoJ,GACtB,IAAI8N,EAAI7N,KAAKg+G,IAAIj+G,GAEjB,OADK8N,EAAI,EAAIA,GAAK,CAEpB,CDGmBkwG,CAAK0pC,GAClB55I,EAAI,EAAIg6I,EAAYG,EACpBz/I,GAAK,EAAIq/I,EAAYE,EACrBxzI,EAAI6yI,EAAGhmJ,OAAS,EAChB8mJ,EAAKd,EAAG7yI,GACR4zI,EAAM,EACNC,EAAM,EACN1/E,EAAK,IAIAn0D,GAAK,GACZozI,EAAMS,EACNR,EAAMO,EAGND,EAAYp6I,GAFZs6I,EAAMF,GAEAP,EAAgBn/I,GADtB2/I,EAAMz/E,GAC0B0+E,EAAG7yI,GACnCm0D,EAAYlgE,EAAI4/I,EAAVR,EAAgB95I,EAAIq6I,EAM5B,MAAO,EAHPr6I,EAAI+5I,EAAYI,GAGJC,GAFZ1/I,EAAIs/I,EAAYC,GAEKr/E,EAAI56D,EAAI46D,EAAKlgE,EAAI0/I,EACxC,CEgIA,UACEjpJ,KArJK,WACL,QAAgBuV,IAAZxW,KAAKg+I,IAAoBh+I,KAAKg+I,IAAM,EACtC,MAAM,IAAI7xI,MAAM,8BAGlBnM,KAAK6jC,QAAiBrtB,IAAZxW,KAAK6jC,GAAmB7jC,KAAK6jC,GAAK,EAC5C7jC,KAAK8jC,QAAiBttB,IAAZxW,KAAK8jC,GAAmB9jC,KAAK8jC,GAAK,EAC5C9jC,KAAK04I,WAAuBliI,IAAfxW,KAAK04I,MAAsB14I,KAAK04I,MAAQ,EACrD14I,KAAKq4I,UAAqB7hI,IAAdxW,KAAKq4I,KAAqBr4I,KAAKq4I,KAAO,EAElDr4I,KAAKqqJ,IAAM,GACXrqJ,KAAKsqJ,IAAM,GACXtqJ,KAAKuqJ,IAAM,GACXvqJ,KAAKwqJ,IAAM,GAEX,IAAI79I,EAAI3M,KAAKg+I,IAAM,EAAI/7I,KAAKuF,KAAK,EAAIxH,KAAKg+I,KACtCl8I,EAAI6K,GAAK,EAAIA,GACb89I,EAAK3oJ,EAET9B,KAAKqqJ,IAAI,GAAKvoJ,GAAK,EAAIA,IAAM,EAAI,EAAIA,GAAUA,GAAK,IAAM,GAAKA,GAAK,GAAK,GAAKA,IAAM,KAAO,OAAhD,KAC3C9B,KAAKsqJ,IAAI,GAAKxoJ,GAAUA,GAAM,EAAI,EAAIA,GAAM,EAAI,EAAIA,IAAM,GAAK,GAAKA,GAAK,GAAK,GAAKA,GAAK,KAAO,UAA3E,GAEpB2oJ,GAAU3oJ,EACV9B,KAAKqqJ,IAAI,GAAKI,GAAM,EAAI,EAAI3oJ,GAAcA,IAAM,IAAM,GAAKA,GAAK,KAAO,IAAMA,GAAK,KAAO,OAAxD,MACjC9B,KAAKsqJ,IAAI,GAAKG,GAAM,EAAI,EAAI3oJ,IAAM,GAAK,GAAKA,IAAO,GAAK,EAAIA,GAAK,IAAM,IAAMA,IAAM,KAAO,SAE1F2oJ,GAAU3oJ,EACV9B,KAAKqqJ,IAAI,GAAKI,GAAM,GAAK,GAAK3oJ,IAAM,IAAM,GAAKA,IAAM,KAAO,IAAMA,GAAK,MAAQ,SAC/E9B,KAAKsqJ,IAAI,GAAKG,IAAO,GAAK,GAAK3oJ,GAAK,GAAK,GAAKA,GAAK,IAAQA,IAAM,MAAQ,SAEzE2oJ,GAAU3oJ,EACV9B,KAAKqqJ,IAAI,GAAKI,GAAM,KAAO,IAAM3oJ,IAAM,IAAM,GAAKA,IAAM,OAAS,SACjE9B,KAAKsqJ,IAAI,GAAKG,GAAM,KAAO,IAAM3oJ,GAAeA,IAAO,MAAQ,OAAzB,MAEtC2oJ,GAAU3oJ,EACV9B,KAAKqqJ,IAAI,GAAKI,GAAM,KAAO,IAAM3oJ,IAAM,OAAS,OAChD9B,KAAKsqJ,IAAI,GAAKG,IAAO,IAAM,IAAM3oJ,GAAK,OAAS,QAE/C2oJ,GAAU3oJ,EACV9B,KAAKqqJ,IAAI,GAAKI,GAAM,OAAS,OAC7BzqJ,KAAKsqJ,IAAI,GAAKG,GAAM,OAAS,QAE7BA,EAAKxoJ,KAAKI,IAAIP,EAAG,GACjB9B,KAAK0qJ,GAAK1qJ,KAAKo5I,IAAM,EAAIt3I,IAAM,EAAI2oJ,GAAM,EAAI,EAAIA,GAAM,EAAI,GAAKA,EAAK,OAErEzqJ,KAAKuqJ,IAAI,GAAKzoJ,GAAYA,GAAM,EAAI,EAAIA,IAAM,GAAK,GAAKA,GAAM,EAAI,IAAMA,GAAK,GAAK,IAAMA,IAAM,MAAQ,YAAlF,IACpB9B,KAAKwqJ,IAAI,GAAK1oJ,GAAK,GAAMA,IAAM,EAAI,EAAIA,GAAK,EAAI,GAAKA,GAAK,GAAK,IAAMA,IAAM,IAAM,IAAMA,GAAK,KAAO,YAEnG9B,KAAKuqJ,IAAI,GAAKE,IAAO,EAAI,GAAK3oJ,IAAM,EAAI,GAAKA,GAAK,IAAM,KAAOA,IAAM,GAAK,IAAMA,GAAK,QAAU,aAC/F9B,KAAKwqJ,IAAI,GAAKC,GAAM,GAAK,GAAK3oJ,GAAcA,GAAK,IAAM,KAAOA,GAAK,IAAM,IAAMA,IAAM,QAAU,WAA5D,KAEnC2oJ,GAAU3oJ,EACV9B,KAAKuqJ,IAAI,GAAKE,IAAO,GAAK,IAAM3oJ,GAAK,GAAK,IAAMA,GAAK,IAAM,KAAOA,IAAM,KAAO,UAC/E9B,KAAKwqJ,IAAI,GAAKC,GAAM,GAAK,IAAM3oJ,IAAM,IAAM,IAAMA,GAAK,MAAQ,MAAQA,GAAK,OAAS,WAEpF2oJ,GAAU3oJ,EACV9B,KAAKuqJ,IAAI,GAAKE,IAAO,KAAO,OAAS3oJ,GAAK,GAAK,IAAMA,GAAK,OAAS,WACnE9B,KAAKwqJ,IAAI,GAAKC,GAAM,MAAQ,OAAS3oJ,IAAM,IAAM,IAAMA,GAAK,QAAU,WAEtE2oJ,GAAU3oJ,EACV9B,KAAKuqJ,IAAI,GAAKE,IAAO,KAAO,OAAS3oJ,GAAK,OAAS,UACnD9B,KAAKwqJ,IAAI,GAAKC,GAAM,MAAQ,MAAQ3oJ,IAAM,QAAU,UAEpD2oJ,GAAU3oJ,EACV9B,KAAKuqJ,IAAI,GAAKE,IAAO,SAAW,WAChCzqJ,KAAKwqJ,IAAI,GAAU,kBAALC,EAEd,IAAIthJ,EAAIwhJ,GAAK3qJ,KAAKsqJ,IAAKtqJ,KAAKq4I,MAC5Br4I,KAAK4qJ,IAAM5qJ,KAAK0qJ,IAAMvhJ,EC/ET,SAASigJ,EAAIK,GAO1B,IANA,IAIIS,EAJAp6I,EAAI,EAAI7N,KAAKiG,IAAIuhJ,GACjBj/I,EAAI4+I,EAAGhmJ,OAAS,EAChBgnJ,EAAMhB,EAAG5+I,GACTm/I,EAAM,IAGDn/I,GAAK,GACZ0/I,EAAYp6I,EAAIs6I,EAAVT,EAAgBP,EAAG5+I,GACzBm/I,EAAMS,EACNA,EAAMF,EAGR,OAAOjoJ,KAAKwF,IAAIgiJ,GAASS,CAC3B,CDiE4BW,CAAM7qJ,KAAKwqJ,IAAK,EAAIrhJ,GAChD,EAiFEy6G,QA/EK,SAAiB75G,GACtB,IAAI+gJ,EAAK5M,EAAWn0I,EAAE/H,EAAIhC,KAAK04I,OAC3BqS,EAAKhhJ,EAAEhI,EAEXgpJ,EAAKJ,GAAK3qJ,KAAKsqJ,IAAKS,GACpB,IAAIC,EAAS/oJ,KAAKwF,IAAIsjJ,GAClBE,EAAShpJ,KAAKiG,IAAI6iJ,GAClBG,EAASjpJ,KAAKwF,IAAIqjJ,GAClBK,EAASlpJ,KAAKiG,IAAI4iJ,GAEtBC,EAAK9oJ,KAAK2H,MAAMohJ,EAAQG,EAASF,GACjCH,EAAK7oJ,KAAK2H,MAAMshJ,EAASD,EAAQG,GAAMJ,EAAQC,EAASE,IACxDL,EE3Fa,SAAS9oJ,GACtB,IAAID,EAAIE,KAAK2G,IAAI5G,GAGjB,OAFAD,ECLa,SAASC,GACtB,IAAID,EAAI,EAAIC,EACRu3B,EAAIx3B,EAAI,EAEZ,OAAa,IAANw3B,EAAUv3B,EAAIA,EAAIC,KAAKN,IAAII,GAAKw3B,CACzC,CDAM8xH,CAAOtpJ,GAAK,EAAIA,GAAKqpJ,GAAM,EAAGrpJ,GAAK,KAEhCC,EAAI,GAAKD,EAAIA,CACtB,CFsFOupJ,CAAOrpJ,KAAK4F,IAAIijJ,IAErB,IAKI9oJ,EACAD,EANA2oC,EAAM6gH,GAAYvrJ,KAAKwqJ,IAAK,EAAIO,EAAI,EAAID,GAoB5C,OAlBAC,GAAUrgH,EAAI,GACdogH,GAAUpgH,EAAI,GAKVzoC,KAAK2G,IAAIkiJ,IAAO,gBAClB9oJ,EAAIhC,KAAKwG,GAAKxG,KAAK0qJ,GAAKI,GAAM9qJ,KAAK6jC,GACnC9hC,EAAI/B,KAAKwG,GAAKxG,KAAK0qJ,GAAKK,EAAK/qJ,KAAK4qJ,IAAM5qJ,KAAK8jC,KAG7C9hC,EAAIy3B,IACJ13B,EAAI03B,KAGN1vB,EAAE/H,EAAIA,EACN+H,EAAEhI,EAAIA,EAECgI,CACT,EA6CE85G,QA3CK,SAAiB95G,GACtB,IAMIwqE,EACAK,EAPAk2E,GAAM/gJ,EAAE/H,EAAIhC,KAAK6jC,KAAO,EAAI7jC,KAAKwG,GACjCukJ,GAAMhhJ,EAAEhI,EAAI/B,KAAK8jC,KAAO,EAAI9jC,KAAKwG,GAQrC,GANAukJ,GAAMA,EAAK/qJ,KAAK4qJ,IAAM5qJ,KAAK0qJ,GAC3BI,GAAU9qJ,KAAK0qJ,GAKXzoJ,KAAK2G,IAAIkiJ,IAAO,eAAgB,CAClC,IAAIpgH,EAAM6gH,GAAYvrJ,KAAKuqJ,IAAK,EAAIQ,EAAI,EAAID,GAE5CC,GAAUrgH,EAAI,GACdogH,GAAUpgH,EAAI,GACdogH,EAAK7oJ,KAAK+/G,KAAKgoC,GAAKc,IAEpB,IAAIE,EAAS/oJ,KAAKwF,IAAIsjJ,GAClBE,EAAShpJ,KAAKiG,IAAI6iJ,GAClBG,EAASjpJ,KAAKwF,IAAIqjJ,GAClBK,EAASlpJ,KAAKiG,IAAI4iJ,GAEtBC,EAAK9oJ,KAAK2H,MAAMohJ,EAASG,EAAQC,GAAMF,EAAQC,EAASF,IAGxD12E,EAAM2pE,GAFN4M,EAAK7oJ,KAAK2H,MAAMshJ,EAAQC,EAASF,IAEXjrJ,KAAK04I,OAC3B9jE,EAAM+1E,GAAK3qJ,KAAKqqJ,IAAKU,EACvB,MAEEx2E,EAAM96C,IACNm7C,EAAMn7C,IAMR,OAHA1vB,EAAE/H,EAAIuyE,EACNxqE,EAAEhI,EAAI6yE,EAEC7qE,CACT,EAOEs0I,MALiB,CAAC,+BAAgC,+BAAgC,WIvIpF,IACEp9I,KAlBK,WACL,IAAIs4I,ECLS,SAASA,EAAMhlE,GAC5B,QAAa/9D,IAAT+iI,EAAoB,CAGtB,IAFAA,EAAOt3I,KAAKC,MAAoC,IAA7Bg8I,EAAW3pE,GAAOtyE,KAAKmlB,IAAWnlB,KAAKmlB,IAAM,GAErD,EACT,OAAO,EACF,GAAImyH,EAAO,GAChB,OAAO,EAEX,CACA,OAAOA,CACT,CDNaiS,CAAYxrJ,KAAKu5I,KAAMv5I,KAAK04I,OACvC,QAAaliI,IAAT+iI,EACF,MAAM,IAAIptI,MAAM,oBAElBnM,KAAKq4I,KAAO,EACZr4I,KAAK04I,OAAW,EAAIz2I,KAAK2G,IAAI2wI,GAAS,KAAOnC,EAC7Cp3I,KAAK6jC,GAAK,IACV7jC,KAAK8jC,GAAK9jC,KAAKy5I,SAAW,IAAW,EACrCz5I,KAAKo5I,GAAK,MAEVqS,GAAOxqJ,KAAKnB,MAAME,MAClBA,KAAK4jH,QAAU6nC,GAAO7nC,QACtB5jH,KAAK6jH,QAAU4nC,GAAO5nC,OACxB,EAKEw6B,MAHiB,CAAC,uCAAwC,OAI1DqN,UAxBqB,UEFR,YAASC,EAAO1rC,GAC7B,OAAQh+G,KAAKI,KAAK,EAAIspJ,IAAU,EAAIA,GAAQ1rC,EAC9C,CC4CA,UACEh/G,KA3CK,WACL,IAAIinJ,EAAOjmJ,KAAKwF,IAAIzH,KAAKq4I,MACrB8P,EAAOlmJ,KAAKiG,IAAIlI,KAAKq4I,MACzB8P,GAAQA,EACRnoJ,KAAK4rJ,GAAK3pJ,KAAKuF,KAAK,EAAIxH,KAAKg+I,KAAO,EAAIh+I,KAAKg+I,GAAKkK,EAAOA,GACzDloJ,KAAK8N,EAAI7L,KAAKuF,KAAK,EAAIxH,KAAKg+I,GAAKmK,EAAOA,GAAQ,EAAInoJ,KAAKg+I,KACzDh+I,KAAK6rJ,MAAQ5pJ,KAAKmlI,KAAK8gB,EAAOloJ,KAAK8N,GACnC9N,KAAK8rJ,OAAS,GAAM9rJ,KAAK8N,EAAI9N,KAAK6B,EAClC7B,KAAK+rJ,EAAI9pJ,KAAK4F,IAAI,GAAM7H,KAAK6rJ,MAAQvU,IAAWr1I,KAAKI,IAAIJ,KAAK4F,IAAI,GAAM7H,KAAKq4I,KAAOf,GAASt3I,KAAK8N,GAAKk+I,GAAKhsJ,KAAK6B,EAAIqmJ,EAAMloJ,KAAK8rJ,QAClI,EAmCEloC,QAjCK,SAAiB75G,GACtB,IAAIwqE,EAAMxqE,EAAE/H,EACR4yE,EAAM7qE,EAAEhI,EAIZ,OAFAgI,EAAEhI,EAAI,EAAIE,KAAK+/G,KAAKhiH,KAAK+rJ,EAAI9pJ,KAAKI,IAAIJ,KAAK4F,IAAI,GAAM+sE,EAAM0iE,GAASt3I,KAAK8N,GAAKk+I,GAAKhsJ,KAAK6B,EAAII,KAAKwF,IAAImtE,GAAM50E,KAAK8rJ,SAAW5U,EAC3HntI,EAAE/H,EAAIhC,KAAK8N,EAAIymE,EACRxqE,CACT,EA2BE85G,QAzBK,SAAiB95G,GAKtB,IAJA,IACIwqE,EAAMxqE,EAAE/H,EAAIhC,KAAK8N,EACjB8mE,EAAM7qE,EAAEhI,EACR6C,EAAM3C,KAAKI,IAAIJ,KAAK4F,IAAI,GAAM+sE,EAAM0iE,GAAUt3I,KAAK+rJ,EAAG,EAAI/rJ,KAAK8N,GAC1DtD,EA5BI,GA4BUA,EAAI,IACzBoqE,EAAM,EAAI3yE,KAAK+/G,KAAKp9G,EAAMonJ,GAAKhsJ,KAAK6B,EAAII,KAAKwF,IAAIsC,EAAEhI,IAAM,GAAM/B,KAAK6B,IAAMq1I,IACtEj1I,KAAK2G,IAAIgsE,EAAM7qE,EAAEhI,GANT,UAIkByI,EAK9BT,EAAEhI,EAAI6yE,EAGR,OAAKpqE,GAGLT,EAAE/H,EAAIuyE,EACNxqE,EAAEhI,EAAI6yE,EACC7qE,GAJE,IAKX,EAOEs0I,MALiB,CAAC,UCapB,IACEp9I,KAxDK,WACLgrJ,GAAMhrJ,KAAKnB,MAAME,MACZA,KAAK4rJ,KAGV5rJ,KAAKksJ,MAAQjqJ,KAAKwF,IAAIzH,KAAK6rJ,OAC3B7rJ,KAAKmsJ,MAAQlqJ,KAAKiG,IAAIlI,KAAK6rJ,OAC3B7rJ,KAAKosJ,GAAK,EAAIpsJ,KAAK4rJ,GACd5rJ,KAAKmlB,QACRnlB,KAAKmlB,MAAQ,qCAEjB,EA8CEy+F,QA5CK,SAAiB75G,GACtB,IAAIsiJ,EAAMC,EAAMC,EAAM3+E,EAWtB,OAVA7jE,EAAE/H,EAAIk8I,EAAWn0I,EAAE/H,EAAIhC,KAAK04I,OAC5BuT,GAAMroC,QAAQ9jH,MAAME,KAAM,CAAC+J,IAC3BsiJ,EAAOpqJ,KAAKwF,IAAIsC,EAAEhI,GAClBuqJ,EAAOrqJ,KAAKiG,IAAI6B,EAAEhI,GAClBwqJ,EAAOtqJ,KAAKiG,IAAI6B,EAAE/H,GAClB4rE,EAAI5tE,KAAKo5I,GAAKp5I,KAAKosJ,IAAM,EAAIpsJ,KAAKksJ,MAAQG,EAAOrsJ,KAAKmsJ,MAAQG,EAAOC,GACrExiJ,EAAE/H,EAAI4rE,EAAI0+E,EAAOrqJ,KAAKwF,IAAIsC,EAAE/H,GAC5B+H,EAAEhI,EAAI6rE,GAAK5tE,KAAKmsJ,MAAQE,EAAOrsJ,KAAKksJ,MAAQI,EAAOC,GACnDxiJ,EAAE/H,EAAIhC,KAAKwG,EAAIuD,EAAE/H,EAAIhC,KAAK6jC,GAC1B95B,EAAEhI,EAAI/B,KAAKwG,EAAIuD,EAAEhI,EAAI/B,KAAK8jC,GACnB/5B,CACT,EAgCE85G,QA9BK,SAAiB95G,GACtB,IAAIsiJ,EAAMC,EAAM/3E,EAAKK,EAAKltE,EAM1B,GALAqC,EAAE/H,GAAK+H,EAAE/H,EAAIhC,KAAK6jC,IAAM7jC,KAAKwG,EAC7BuD,EAAEhI,GAAKgI,EAAEhI,EAAI/B,KAAK8jC,IAAM9jC,KAAKwG,EAE7BuD,EAAE/H,GAAKhC,KAAKo5I,GACZrvI,EAAEhI,GAAK/B,KAAKo5I,GACP1xI,EAAMzF,KAAKuF,KAAKuC,EAAE/H,EAAI+H,EAAE/H,EAAI+H,EAAEhI,EAAIgI,EAAEhI,GAAK,CAC5C,IAAIoJ,EAAI,EAAIlJ,KAAK2H,MAAMlC,EAAK1H,KAAKosJ,IACjCC,EAAOpqJ,KAAKwF,IAAI0D,GAChBmhJ,EAAOrqJ,KAAKiG,IAAIiD,GAChBypE,EAAM3yE,KAAKmlI,KAAKklB,EAAOtsJ,KAAKksJ,MAAQniJ,EAAEhI,EAAIsqJ,EAAOrsJ,KAAKmsJ,MAAQzkJ,GAC9D6sE,EAAMtyE,KAAK2H,MAAMG,EAAE/H,EAAIqqJ,EAAM3kJ,EAAM1H,KAAKmsJ,MAAQG,EAAOviJ,EAAEhI,EAAI/B,KAAKksJ,MAAQG,EAC5E,MAEEz3E,EAAM50E,KAAK6rJ,MACXt3E,EAAM,EAOR,OAJAxqE,EAAE/H,EAAIuyE,EACNxqE,EAAEhI,EAAI6yE,EACNq3E,GAAMpoC,QAAQ/jH,MAAME,KAAM,CAAC+J,IAC3BA,EAAE/H,EAAIk8I,EAAWn0I,EAAE/H,EAAIhC,KAAK04I,OACrB3uI,CACT,EAOEs0I,MALiB,CAAC,2BAA4B,wBAAyB,sBAAuB,SAAS,oCAAoC,yBC8G7I,IACEp9I,KA3JK,WACLjB,KAAKwsJ,QAAUvqJ,KAAKiG,IAAIlI,KAAKq4I,MAC7Br4I,KAAKysJ,QAAUxqJ,KAAKwF,IAAIzH,KAAKq4I,MACzBr4I,KAAKs8I,OACS,IAAZt8I,KAAKo5I,KAAa3xG,MAAMznC,KAAKw4I,SAAWv2I,KAAK2G,IAAI5I,KAAKwsJ,UAAYrV,IACpEn3I,KAAKo5I,GAAK,IAAO,EAAImE,EAAKv9I,KAAKq4I,MAAQp2I,KAAKwF,IAAIzH,KAAKw4I,WAInDv2I,KAAK2G,IAAI5I,KAAKwsJ,UAAYrV,IACxBn3I,KAAKq4I,KAAO,EAGdr4I,KAAKs9I,IAAM,EAKXt9I,KAAKs9I,KAAO,GAGhBt9I,KAAK0sJ,KAAOzqJ,KAAKuF,KAAKvF,KAAKI,IAAI,EAAIrC,KAAK6B,EAAG,EAAI7B,KAAK6B,GAAKI,KAAKI,IAAI,EAAIrC,KAAK6B,EAAG,EAAI7B,KAAK6B,IACvE,IAAZ7B,KAAKo5I,KAAa3xG,MAAMznC,KAAKw4I,SAAWv2I,KAAK2G,IAAI5I,KAAKwsJ,UAAYrV,IACpEn3I,KAAKo5I,GAAK,GAAMp5I,KAAK0sJ,KAAOzO,EAAMj+I,KAAK6B,EAAGI,KAAKwF,IAAIzH,KAAKw4I,QAASv2I,KAAKiG,IAAIlI,KAAKw4I,SAAW2F,EAAMn+I,KAAK6B,EAAG7B,KAAKs9I,IAAMt9I,KAAKw4I,OAAQx4I,KAAKs9I,IAAMr7I,KAAKwF,IAAIzH,KAAKw4I,UAE3Jx4I,KAAK2sJ,IAAM1O,EAAMj+I,KAAK6B,EAAG7B,KAAKysJ,QAASzsJ,KAAKwsJ,SAC5CxsJ,KAAK4sJ,GAAK,EAAI3qJ,KAAK+/G,KAAKhiH,KAAK6sJ,MAAM7sJ,KAAKq4I,KAAMr4I,KAAKysJ,QAASzsJ,KAAK6B,IAAMq1I,EACvEl3I,KAAK8sJ,MAAQ7qJ,KAAKiG,IAAIlI,KAAK4sJ,IAC3B5sJ,KAAK+sJ,MAAQ9qJ,KAAKwF,IAAIzH,KAAK4sJ,IAE/B,EA8HEhpC,QA3HK,SAAiB75G,GACtB,IAIIy5I,EAAGv7I,EAAG+kJ,EAAMC,EAAMvP,EAAIwP,EAJtB34E,EAAMxqE,EAAE/H,EACR4yE,EAAM7qE,EAAEhI,EACRorJ,EAASlrJ,KAAKwF,IAAImtE,GAClBw4E,EAASnrJ,KAAKiG,IAAI0sE,GAElBy4E,EAAOnP,EAAW3pE,EAAMv0E,KAAK04I,OAEjC,OAAIz2I,KAAK2G,IAAI3G,KAAK2G,IAAI2rE,EAAMv0E,KAAK04I,OAASz2I,KAAKmlB,KAAO+vH,GAASl1I,KAAK2G,IAAIgsE,EAAM50E,KAAKq4I,OAASlB,GAG1FptI,EAAE/H,EAAI02D,IACN3uD,EAAEhI,EAAI22D,IACC3uD,GAEL/J,KAAKs8I,QAEPkH,EAAI,EAAIxjJ,KAAKo5I,IAAM,EAAIp5I,KAAKysJ,QAAUU,EAASntJ,KAAKwsJ,QAAUY,EAASnrJ,KAAKiG,IAAImlJ,IAChFtjJ,EAAE/H,EAAIhC,KAAKwG,EAAIg9I,EAAI4J,EAASnrJ,KAAKwF,IAAI4lJ,GAAQrtJ,KAAK6jC,GAClD95B,EAAEhI,EAAI/B,KAAKwG,EAAIg9I,GAAKxjJ,KAAKwsJ,QAAUW,EAASntJ,KAAKysJ,QAAUW,EAASnrJ,KAAKiG,IAAImlJ,IAASrtJ,KAAK8jC,GACpF/5B,IAGP9B,EAAI,EAAIhG,KAAK+/G,KAAKhiH,KAAK6sJ,MAAMj4E,EAAKu4E,EAAQntJ,KAAK6B,IAAMq1I,EACrD+V,EAAOhrJ,KAAKiG,IAAID,GAChB+kJ,EAAO/qJ,KAAKwF,IAAIQ,GACZhG,KAAK2G,IAAI5I,KAAKwsJ,UAAYrV,GAC5BuG,EAAKS,EAAMn+I,KAAK6B,EAAG+yE,EAAM50E,KAAKs9I,IAAKt9I,KAAKs9I,IAAM6P,GAC9CD,EAAK,EAAIltJ,KAAKwG,EAAIxG,KAAKo5I,GAAKsE,EAAK19I,KAAK0sJ,KACtC3iJ,EAAE/H,EAAIhC,KAAK6jC,GAAKqpH,EAAKjrJ,KAAKwF,IAAI8sE,EAAMv0E,KAAK04I,OACzC3uI,EAAEhI,EAAI/B,KAAK8jC,GAAK9jC,KAAKs9I,IAAM4P,EAAKjrJ,KAAKiG,IAAIqsE,EAAMv0E,KAAK04I,OAE7C3uI,IAEA9H,KAAK2G,IAAI5I,KAAKysJ,SAAWtV,GAGhCqM,EAAI,EAAIxjJ,KAAKwG,EAAIxG,KAAKo5I,IAAM,EAAI6T,EAAOhrJ,KAAKiG,IAAImlJ,IAChDtjJ,EAAEhI,EAAIyhJ,EAAIwJ,IAKVxJ,EAAI,EAAIxjJ,KAAKwG,EAAIxG,KAAKo5I,GAAKp5I,KAAK2sJ,KAAO3sJ,KAAK8sJ,OAAS,EAAI9sJ,KAAK+sJ,MAAQC,EAAOhtJ,KAAK8sJ,MAAQG,EAAOhrJ,KAAKiG,IAAImlJ,KAC1GtjJ,EAAEhI,EAAIyhJ,GAAKxjJ,KAAK8sJ,MAAQE,EAAOhtJ,KAAK+sJ,MAAQE,EAAOhrJ,KAAKiG,IAAImlJ,IAASrtJ,KAAK8jC,IAE5E/5B,EAAE/H,EAAIwhJ,EAAIyJ,EAAOhrJ,KAAKwF,IAAI4lJ,GAAQrtJ,KAAK6jC,GAGlC95B,GACT,EA0EE85G,QAvEK,SAAiB95G,GAGtB,IAAIwqE,EAAKK,EAAK8oE,EAAI4P,EAAIC,EAFtBxjJ,EAAE/H,GAAKhC,KAAK6jC,GACZ95B,EAAEhI,GAAK/B,KAAK8jC,GAEZ,IAAIopH,EAAKjrJ,KAAKuF,KAAKuC,EAAE/H,EAAI+H,EAAE/H,EAAI+H,EAAEhI,EAAIgI,EAAEhI,GACvC,GAAI/B,KAAKs8I,OAAQ,CACf,IAAInxI,EAAI,EAAIlJ,KAAK+/G,KAAKkrC,GAAM,EAAIltJ,KAAKwG,EAAIxG,KAAKo5I,KAG9C,OAFA7kE,EAAMv0E,KAAK04I,MACX9jE,EAAM50E,KAAKq4I,KACP6U,GAAM/V,GACRptI,EAAE/H,EAAIuyE,EACNxqE,EAAEhI,EAAI6yE,EACC7qE,IAET6qE,EAAM3yE,KAAKmlI,KAAKnlI,KAAKiG,IAAIiD,GAAKnL,KAAKysJ,QAAU1iJ,EAAEhI,EAAIE,KAAKwF,IAAI0D,GAAKnL,KAAKwsJ,QAAUU,GAG5E34E,EAFAtyE,KAAK2G,IAAI5I,KAAKwsJ,SAAWrV,EACvBn3I,KAAKq4I,KAAO,EACR6F,EAAWl+I,KAAK04I,MAAQz2I,KAAK2H,MAAMG,EAAE/H,GAAK,EAAI+H,EAAEhI,IAGhDm8I,EAAWl+I,KAAK04I,MAAQz2I,KAAK2H,MAAMG,EAAE/H,EAAG+H,EAAEhI,IAI5Cm8I,EAAWl+I,KAAK04I,MAAQz2I,KAAK2H,MAAMG,EAAE/H,EAAIC,KAAKwF,IAAI0D,GAAI+hJ,EAAKltJ,KAAKwsJ,QAAUvqJ,KAAKiG,IAAIiD,GAAKpB,EAAEhI,EAAI/B,KAAKysJ,QAAUxqJ,KAAKwF,IAAI0D,KAE9HpB,EAAE/H,EAAIuyE,EACNxqE,EAAEhI,EAAI6yE,EACC7qE,EACT,CAEE,GAAI9H,KAAK2G,IAAI5I,KAAKwsJ,UAAYrV,EAAO,CACnC,GAAI+V,GAAM/V,EAMR,OALAviE,EAAM50E,KAAKq4I,KACX9jE,EAAMv0E,KAAK04I,MACX3uI,EAAE/H,EAAIuyE,EACNxqE,EAAEhI,EAAI6yE,EAEC7qE,EAETA,EAAE/H,GAAKhC,KAAKs9I,IACZvzI,EAAEhI,GAAK/B,KAAKs9I,IACZI,EAAKwP,EAAKltJ,KAAK0sJ,MAAQ,EAAI1sJ,KAAKwG,EAAIxG,KAAKo5I,IACzCxkE,EAAM50E,KAAKs9I,IAAMc,EAAMp+I,KAAK6B,EAAG67I,GAC/BnpE,EAAMv0E,KAAKs9I,IAAMY,EAAWl+I,KAAKs9I,IAAMt9I,KAAK04I,MAAQz2I,KAAK2H,MAAMG,EAAE/H,GAAK,EAAI+H,EAAEhI,GAC9E,MAEEurJ,EAAK,EAAIrrJ,KAAK+/G,KAAKkrC,EAAKltJ,KAAK8sJ,OAAS,EAAI9sJ,KAAKwG,EAAIxG,KAAKo5I,GAAKp5I,KAAK2sJ,MAClEp4E,EAAMv0E,KAAK04I,MACPwU,GAAM/V,EACRoW,EAAMvtJ,KAAK4sJ,IAGXW,EAAMtrJ,KAAKmlI,KAAKnlI,KAAKiG,IAAIolJ,GAAMttJ,KAAK+sJ,MAAQhjJ,EAAEhI,EAAIE,KAAKwF,IAAI6lJ,GAAMttJ,KAAK8sJ,MAAQI,GAC9E34E,EAAM2pE,EAAWl+I,KAAK04I,MAAQz2I,KAAK2H,MAAMG,EAAE/H,EAAIC,KAAKwF,IAAI6lJ,GAAKJ,EAAKltJ,KAAK8sJ,MAAQ7qJ,KAAKiG,IAAIolJ,GAAMvjJ,EAAEhI,EAAI/B,KAAK+sJ,MAAQ9qJ,KAAKwF,IAAI6lJ,MAE5H14E,GAAO,EAAIwpE,EAAMp+I,KAAK6B,EAAGI,KAAK4F,IAAI,IAAOqvI,EAAUqW,KAOvD,OAJAxjJ,EAAE/H,EAAIuyE,EACNxqE,EAAEhI,EAAI6yE,EAGC7qE,CAET,EAOEs0I,MALiB,CAAC,QAAS,2BAA4B,mCAMvDwO,MApKK,SAAeW,EAAMpQ,EAAQqQ,GAElC,OADArQ,GAAUqQ,EACFxrJ,KAAK4F,IAAI,IAAOqvI,EAAUsW,IAASvrJ,KAAKI,KAAK,EAAI+6I,IAAW,EAAIA,GAAS,GAAMqQ,EACzF,GCqEA,IACExsJ,KAzEK,WACL,IAAIysJ,EAAO1tJ,KAAKq4I,KAChBr4I,KAAK2tJ,QAAU3tJ,KAAK04I,MACpB,IAAIkV,EAAU3rJ,KAAKwF,IAAIimJ,GACnBG,EAAgB7tJ,KAAKwG,EAErBsnJ,EAAa,EADN9tJ,KAAKm4I,GAEZhxI,EAAK,EAAI2mJ,EAAa7rJ,KAAKI,IAAIyrJ,EAAY,GAC3CjsJ,EAAI7B,KAAK6B,EAAII,KAAKuF,KAAKL,GAC3BnH,KAAK+tJ,EAAI/tJ,KAAKo5I,GAAKyU,EAAgB5rJ,KAAKuF,KAAK,EAAIL,IAAO,EAAIA,EAAKlF,KAAKI,IAAIurJ,EAAS,IACnF5tJ,KAAKojG,MAAQnhG,KAAKuF,KAAK,EAAIL,GAAM,EAAIA,GAAMlF,KAAKI,IAAIJ,KAAKiG,IAAIwlJ,GAAO,IACpE1tJ,KAAKguJ,GAAK/rJ,KAAKmlI,KAAKwmB,EAAU5tJ,KAAKojG,OACnC,IAAI6qD,EAAKhsJ,KAAKN,IAAIM,KAAK4F,IAAI5F,KAAKmlB,GAAK,EAAIpnB,KAAKguJ,GAAK,IAC/CE,EAAKjsJ,KAAKN,IAAIM,KAAK4F,IAAI5F,KAAKmlB,GAAK,EAAIsmI,EAAO,IAC5CS,EAAKlsJ,KAAKN,KAAK,EAAIE,EAAI+rJ,IAAY,EAAI/rJ,EAAI+rJ,IAC/C5tJ,KAAK+rJ,EAAIkC,EAAKjuJ,KAAKojG,MAAQ8qD,EAAKluJ,KAAKojG,MAAQvhG,EAAI,EAAIssJ,CACvD,EA0DEvqC,QAxDK,SAAiB75G,GACtB,IAAIqkJ,EAAMnsJ,KAAKN,IAAIM,KAAK4F,IAAI5F,KAAKmlB,GAAK,EAAIrd,EAAEhI,EAAI,IAC5CssJ,EAAMruJ,KAAK6B,EAAI,EAAII,KAAKN,KAAK,EAAI3B,KAAK6B,EAAII,KAAKwF,IAAIsC,EAAEhI,KAAO,EAAI/B,KAAK6B,EAAII,KAAKwF,IAAIsC,EAAEhI,KACpFusJ,GAAKtuJ,KAAKojG,OAASgrD,EAAMC,GAAOruJ,KAAK+rJ,EAGrCtlJ,EAAI,GAAKxE,KAAK+/G,KAAK//G,KAAKg+G,IAAIquC,IAAMrsJ,KAAKmlB,GAAK,GAG5Cld,EAAIlK,KAAKojG,OAASr5F,EAAE/H,EAAIhC,KAAK2tJ,SAG7BY,EAAOtsJ,KAAK+/G,KAAK//G,KAAKwF,IAAIyC,IAAMjI,KAAKwF,IAAIzH,KAAKguJ,IAAM/rJ,KAAK4F,IAAIpB,GAAKxE,KAAKiG,IAAIlI,KAAKguJ,IAAM/rJ,KAAKiG,IAAIgC,KAE/FskJ,EAAOvsJ,KAAKmlI,KAAKnlI,KAAKiG,IAAIlI,KAAKguJ,IAAM/rJ,KAAKwF,IAAIhB,GAAKxE,KAAKwF,IAAIzH,KAAKguJ,IAAM/rJ,KAAKiG,IAAIzB,GAAKxE,KAAKiG,IAAIgC,IAIlG,OAFAH,EAAEhI,EAAI/B,KAAK+tJ,EAAI,EAAI9rJ,KAAKN,KAAK,EAAIM,KAAKwF,IAAI+mJ,KAAU,EAAIvsJ,KAAKwF,IAAI+mJ,KAAUxuJ,KAAK8jC,GAChF/5B,EAAE/H,EAAIhC,KAAK+tJ,EAAIQ,EAAOvuJ,KAAK6jC,GACpB95B,CACT,EAsCE85G,QApCK,SAAiB95G,GAgBtB,IAfA,IAAIb,EAAIa,EAAE/H,EAAIhC,KAAK6jC,GACf57B,EAAI8B,EAAEhI,EAAI/B,KAAK8jC,GAEfyqH,EAAOrlJ,EAAIlJ,KAAK+tJ,EAChBS,EAAO,GAAKvsJ,KAAK+/G,KAAK//G,KAAKg+G,IAAIh4G,EAAIjI,KAAK+tJ,IAAM9rJ,KAAKmlB,GAAK,GAExD3gB,EAAIxE,KAAKmlI,KAAKnlI,KAAKiG,IAAIlI,KAAKguJ,IAAM/rJ,KAAKwF,IAAI+mJ,GAAQvsJ,KAAKwF,IAAIzH,KAAKguJ,IAAM/rJ,KAAKiG,IAAIsmJ,GAAQvsJ,KAAKiG,IAAIqmJ,IACjGrkJ,EAAIjI,KAAK+/G,KAAK//G,KAAKwF,IAAI8mJ,IAAStsJ,KAAKiG,IAAIlI,KAAKguJ,IAAM/rJ,KAAKiG,IAAIqmJ,GAAQtsJ,KAAKwF,IAAIzH,KAAKguJ,IAAM/rJ,KAAK4F,IAAI2mJ,KAElGC,EAASzuJ,KAAK2tJ,QAAUzjJ,EAAIlK,KAAKojG,MAEjCkrD,EAAI,EACJI,EAAMjoJ,EACNkoJ,GAAW,IACXC,EAAY,EACT3sJ,KAAK2G,IAAI8lJ,EAAMC,GAAW,MAAW,CAC1C,KAAMC,EAAY,GAEhB,OAGFN,EAAI,EAAItuJ,KAAKojG,OAASnhG,KAAKN,IAAIM,KAAK4F,IAAI5F,KAAKmlB,GAAK,EAAI3gB,EAAI,IAAMzG,KAAK+rJ,GAAK/rJ,KAAK6B,EAAII,KAAKN,IAAIM,KAAK4F,IAAI5F,KAAKmlB,GAAK,EAAInlB,KAAKmlI,KAAKpnI,KAAK6B,EAAII,KAAKwF,IAAIinJ,IAAQ,IACvJC,EAAUD,EACVA,EAAM,EAAIzsJ,KAAK+/G,KAAK//G,KAAKg+G,IAAIquC,IAAMrsJ,KAAKmlB,GAAK,CAC/C,CAIA,OAFArd,EAAE/H,EAAIysJ,EACN1kJ,EAAEhI,EAAI2sJ,EACC3kJ,CACT,EAOEs0I,MALiB,CAAC,WCsFpB,IACEp9I,KA/JK,WACLjB,KAAK6uJ,OAAS7uJ,KAAK6uJ,SAAU,EAC7B7uJ,KAAK8uJ,OAAS9uJ,KAAK8uJ,SAAU,EAEzBrnH,MAAMznC,KAAKo5I,MACbp5I,KAAKo5I,GAAK,GAEZ,IAAI+T,EAASlrJ,KAAKwF,IAAIzH,KAAKq4I,MACvB+U,EAASnrJ,KAAKiG,IAAIlI,KAAKq4I,MACvBiF,EAAMt9I,KAAK6B,EAAIsrJ,EAEnBntJ,KAAK+uJ,GAAK9sJ,KAAKuF,KAAK,EAAIxH,KAAKg+I,IAAM,EAAIh+I,KAAKg+I,IAAM/7I,KAAKI,IAAI+qJ,EAAQ,IACnEptJ,KAAK2oJ,GAAK3oJ,KAAKwG,EAAIxG,KAAK+uJ,GAAK/uJ,KAAKo5I,GAAKn3I,KAAKuF,KAAK,EAAIxH,KAAKg+I,KAAO,EAAIV,EAAMA,GAC3E,IAKI0R,EACAC,EANAC,EAAK/Q,EAAMn+I,KAAK6B,EAAG7B,KAAKq4I,KAAM8U,GAC9BgC,EAAKnvJ,KAAK+uJ,GAAK3B,EAASnrJ,KAAKuF,MAAM,EAAIxH,KAAKg+I,KAAO,EAAIV,EAAMA,IAMjE,GALI6R,EAAKA,EAAK,IACZA,EAAK,GAIF1nH,MAAMznC,KAAKg5I,OAeX,CAEH,IAAIoW,EAAKjR,EAAMn+I,KAAK6B,EAAG7B,KAAKsD,KAAMrB,KAAKwF,IAAIzH,KAAKsD,OAC5C+rJ,EAAKlR,EAAMn+I,KAAK6B,EAAG7B,KAAK42E,KAAM30E,KAAKwF,IAAIzH,KAAK42E,OAC5C52E,KAAKq4I,MAAQ,EACfr4I,KAAKisC,IAAMkjH,EAAKltJ,KAAKuF,KAAK2nJ,EAAKA,EAAK,IAAMltJ,KAAKI,IAAI6sJ,EAAIlvJ,KAAK+uJ,IAG5D/uJ,KAAKisC,IAAMkjH,EAAKltJ,KAAKuF,KAAK2nJ,EAAKA,EAAK,IAAMltJ,KAAKI,IAAI6sJ,EAAIlvJ,KAAK+uJ,IAE9D,IAAIO,EAAKrtJ,KAAKI,IAAI+sJ,EAAIpvJ,KAAK+uJ,IACvBnL,EAAK3hJ,KAAKI,IAAIgtJ,EAAIrvJ,KAAK+uJ,IAE3BE,EAAK,KADLD,EAAKhvJ,KAAKisC,GAAKqjH,GACE,EAAIN,GACrB,IAAIO,GAAMvvJ,KAAKisC,GAAKjsC,KAAKisC,GAAK23G,EAAK0L,IAAOtvJ,KAAKisC,GAAKjsC,KAAKisC,GAAK23G,EAAK0L,GAC/DE,GAAM5L,EAAK0L,IAAO1L,EAAK0L,GACvBG,EAASvR,EAAWl+I,KAAK44I,MAAQ54I,KAAK84I,OAC1C94I,KAAK04I,MAAQ,IAAO14I,KAAK44I,MAAQ54I,KAAK84I,OAAS72I,KAAK+/G,KAAKutC,EAAKttJ,KAAK4F,IAAI,GAAM7H,KAAK+uJ,GAAK,GAAYS,GAAMxvJ,KAAK+uJ,GAC9G/uJ,KAAK04I,MAAQwF,EAAWl+I,KAAK04I,OAC7B,IAAIgX,EAASxR,EAAWl+I,KAAK44I,MAAQ54I,KAAK04I,OAC1C14I,KAAK2vJ,OAAS1tJ,KAAK+/G,KAAK//G,KAAKwF,IAAIzH,KAAK+uJ,GAAK,GAAYE,GACvDjvJ,KAAKojG,MAAQnhG,KAAKmlI,KAAK+nB,EAAKltJ,KAAKwF,IAAIzH,KAAK2vJ,QAC5C,MAjCIX,EADEhvJ,KAAKq4I,MAAQ,EACV8W,EAAKltJ,KAAKuF,KAAK2nJ,EAAKA,EAAK,GAGzBA,EAAKltJ,KAAKuF,KAAK2nJ,EAAKA,EAAK,GAEhCnvJ,KAAKisC,GAAK+iH,EAAK/sJ,KAAKI,IAAI6sJ,EAAIlvJ,KAAK+uJ,IACjCE,EAAK,IAAOD,EAAK,EAAIA,GACrBhvJ,KAAK2vJ,OAAS1tJ,KAAKmlI,KAAKnlI,KAAKwF,IAAIzH,KAAKojG,OAAS+rD,GAC/CnvJ,KAAK04I,MAAQ14I,KAAKg5I,MAAQ/2I,KAAKmlI,KAAK6nB,EAAKhtJ,KAAK4F,IAAI7H,KAAK2vJ,SAAW3vJ,KAAK+uJ,GA2BrE/uJ,KAAK6uJ,OACP7uJ,KAAK4vJ,GAAK,EAGN5vJ,KAAKq4I,MAAQ,EACfr4I,KAAK4vJ,GAAK5vJ,KAAK2oJ,GAAK3oJ,KAAK+uJ,GAAK9sJ,KAAK2H,MAAM3H,KAAKuF,KAAK2nJ,EAAKA,EAAK,GAAIltJ,KAAKiG,IAAIlI,KAAKojG,QAG/EpjG,KAAK4vJ,IAAM,EAAI5vJ,KAAK2oJ,GAAK3oJ,KAAK+uJ,GAAK9sJ,KAAK2H,MAAM3H,KAAKuF,KAAK2nJ,EAAKA,EAAK,GAAIltJ,KAAKiG,IAAIlI,KAAKojG,OAI1F,EAyFEwgB,QArFK,SAAiB75G,GACtB,IAGI8lJ,EAAIC,EACJxS,EAJA/oE,EAAMxqE,EAAE/H,EACR4yE,EAAM7qE,EAAEhI,EACRsrJ,EAAOnP,EAAW3pE,EAAMv0E,KAAK04I,OAGjC,GAAIz2I,KAAK2G,IAAI3G,KAAK2G,IAAIgsE,GAAOsiE,IAAYC,EAErCmG,EADE1oE,EAAM,GACD,EAGD,EAERk7E,EAAK9vJ,KAAK2oJ,GAAK3oJ,KAAK+uJ,GAAK9sJ,KAAKN,IAAIM,KAAK4F,IAAIyvI,EAASgG,EAAMt9I,KAAK2vJ,OAAS,KACxEE,GAAM,EAAIvS,EAAMpG,EAAUl3I,KAAK2oJ,GAAK3oJ,KAAK+uJ,OAEtC,CACH,IAAIzkJ,EAAI6zI,EAAMn+I,KAAK6B,EAAG+yE,EAAK3yE,KAAKwF,IAAImtE,IAChCm7E,EAAK/vJ,KAAKisC,GAAKhqC,KAAKI,IAAIiI,EAAGtK,KAAK+uJ,IAChCiB,EAAK,IAAOD,EAAK,EAAIA,GACrBE,EAAK,IAAOF,EAAK,EAAIA,GACrBG,EAAKjuJ,KAAKwF,IAAIzH,KAAK+uJ,GAAK,GACxBoB,GAAMH,EAAK/tJ,KAAKwF,IAAIzH,KAAK2vJ,QAAUO,EAAKjuJ,KAAKiG,IAAIlI,KAAK2vJ,SAAWM,EAEnEH,EADE7tJ,KAAK2G,IAAI3G,KAAK2G,IAAIunJ,GAAM,IAAMhZ,EAC3B5qG,OAAO6jH,kBAGP,GAAMpwJ,KAAK2oJ,GAAK1mJ,KAAKN,KAAK,EAAIwuJ,IAAO,EAAIA,IAAOnwJ,KAAK+uJ,GAG1Dc,EADE5tJ,KAAK2G,IAAI3G,KAAKiG,IAAIlI,KAAK+uJ,GAAK,KAAY5X,EACrCn3I,KAAK2oJ,GAAK3oJ,KAAK+uJ,GAAK,EAGpB/uJ,KAAK2oJ,GAAK1mJ,KAAK2H,MAAMomJ,EAAK/tJ,KAAKiG,IAAIlI,KAAK2vJ,QAAUO,EAAKjuJ,KAAKwF,IAAIzH,KAAK2vJ,QAAS1tJ,KAAKiG,IAAIlI,KAAK+uJ,GAAK1B,IAASrtJ,KAAK+uJ,EAExH,CAYA,OAVI/uJ,KAAK8uJ,QACP/kJ,EAAE/H,EAAIhC,KAAK6jC,GAAKgsH,EAChB9lJ,EAAEhI,EAAI/B,KAAK8jC,GAAKgsH,IAIhBD,GAAM7vJ,KAAK4vJ,GACX7lJ,EAAE/H,EAAIhC,KAAK6jC,GAAKisH,EAAK7tJ,KAAKiG,IAAIlI,KAAKojG,OAASysD,EAAK5tJ,KAAKwF,IAAIzH,KAAKojG,OAC/Dr5F,EAAEhI,EAAI/B,KAAK8jC,GAAK+rH,EAAK5tJ,KAAKiG,IAAIlI,KAAKojG,OAAS0sD,EAAK7tJ,KAAKwF,IAAIzH,KAAKojG,QAE1Dr5F,CACT,EAsCE85G,QApCK,SAAiB95G,GACtB,IAAI8lJ,EAAIC,EACJ9vJ,KAAK8uJ,QACPgB,EAAK/lJ,EAAEhI,EAAI/B,KAAK8jC,GAChB+rH,EAAK9lJ,EAAE/H,EAAIhC,KAAK6jC,KAGhBisH,GAAM/lJ,EAAE/H,EAAIhC,KAAK6jC,IAAM5hC,KAAKiG,IAAIlI,KAAKojG,QAAUr5F,EAAEhI,EAAI/B,KAAK8jC,IAAM7hC,KAAKwF,IAAIzH,KAAKojG,OAC9EysD,GAAM9lJ,EAAEhI,EAAI/B,KAAK8jC,IAAM7hC,KAAKiG,IAAIlI,KAAKojG,QAAUr5F,EAAE/H,EAAIhC,KAAK6jC,IAAM5hC,KAAKwF,IAAIzH,KAAKojG,OAC9EysD,GAAM7vJ,KAAK4vJ,IAEb,IAAIS,EAAKpuJ,KAAKg+G,KAAK,EAAIjgH,KAAK+uJ,GAAKe,EAAK9vJ,KAAK2oJ,IACvC2H,EAAK,IAAOD,EAAK,EAAIA,GACrBE,EAAK,IAAOF,EAAK,EAAIA,GACrBG,EAAKvuJ,KAAKwF,IAAIzH,KAAK+uJ,GAAKc,EAAK7vJ,KAAK2oJ,IAClC8H,GAAMD,EAAKvuJ,KAAKiG,IAAIlI,KAAK2vJ,QAAUW,EAAKruJ,KAAKwF,IAAIzH,KAAK2vJ,SAAWY,EACjE7S,EAAKz7I,KAAKI,IAAIrC,KAAKisC,GAAKhqC,KAAKuF,MAAM,EAAIipJ,IAAO,EAAIA,IAAM,EAAIzwJ,KAAK+uJ,IAarE,OAZI9sJ,KAAK2G,IAAI6nJ,EAAK,GAAKtZ,GACrBptI,EAAE/H,EAAIhC,KAAK04I,MACX3uI,EAAEhI,EAAIm1I,GAECj1I,KAAK2G,IAAI6nJ,EAAK,GAAKtZ,GAC1BptI,EAAE/H,EAAIhC,KAAK04I,MACX3uI,EAAEhI,GAAK,EAAIm1I,IAGXntI,EAAEhI,EAAIq8I,EAAMp+I,KAAK6B,EAAG67I,GACpB3zI,EAAE/H,EAAIk8I,EAAWl+I,KAAK04I,MAAQz2I,KAAK2H,MAAM0mJ,EAAKruJ,KAAKiG,IAAIlI,KAAK2vJ,QAAUa,EAAKvuJ,KAAKwF,IAAIzH,KAAK2vJ,QAAS1tJ,KAAKiG,IAAIlI,KAAK+uJ,GAAKc,EAAK7vJ,KAAK2oJ,KAAO3oJ,KAAK+uJ,KAEtIhlJ,CACT,EAOEs0I,MALiB,CAAC,0BAA2B,0BAA2B,iDAAkD,yCAA0C,UC/BtK,IACEp9I,KAhIK,WAqBL,GATKjB,KAAK42E,OACR52E,KAAK42E,KAAO52E,KAAKsD,MAEdtD,KAAKo5I,KACRp5I,KAAKo5I,GAAK,GAEZp5I,KAAK6jC,GAAK7jC,KAAK6jC,IAAM,EACrB7jC,KAAK8jC,GAAK9jC,KAAK8jC,IAAM,IAEjB7hC,KAAK2G,IAAI5I,KAAKsD,KAAOtD,KAAK42E,MAAQugE,GAAtC,CAIA,IAAIgS,EAAOnpJ,KAAKyG,EAAIzG,KAAKwG,EACzBxG,KAAK6B,EAAII,KAAKuF,KAAK,EAAI2hJ,EAAOA,GAE9B,IAAIuH,EAAOzuJ,KAAKwF,IAAIzH,KAAKsD,MACrBqtJ,EAAO1uJ,KAAKiG,IAAIlI,KAAKsD,MACrBqpJ,EAAM1O,EAAMj+I,KAAK6B,EAAG6uJ,EAAMC,GAC1BC,EAAMzS,EAAMn+I,KAAK6B,EAAG7B,KAAKsD,KAAMotJ,GAE/BG,EAAO5uJ,KAAKwF,IAAIzH,KAAK42E,MACrBk6E,EAAO7uJ,KAAKiG,IAAIlI,KAAK42E,MACrBm6E,EAAM9S,EAAMj+I,KAAK6B,EAAGgvJ,EAAMC,GAC1BE,EAAM7S,EAAMn+I,KAAK6B,EAAG7B,KAAK42E,KAAMi6E,GAE/BI,EAAM9S,EAAMn+I,KAAK6B,EAAG7B,KAAKq4I,KAAMp2I,KAAKwF,IAAIzH,KAAKq4I,OAE7Cp2I,KAAK2G,IAAI5I,KAAKsD,KAAOtD,KAAK42E,MAAQugE,EACpCn3I,KAAK4mD,GAAK3kD,KAAKN,IAAIgrJ,EAAMoE,GAAO9uJ,KAAKN,IAAIivJ,EAAMI,GAG/ChxJ,KAAK4mD,GAAK8pG,EAERjpH,MAAMznC,KAAK4mD,MACb5mD,KAAK4mD,GAAK8pG,GAEZ1wJ,KAAK4G,GAAK+lJ,GAAO3sJ,KAAK4mD,GAAK3kD,KAAKI,IAAIuuJ,EAAK5wJ,KAAK4mD,KAC9C5mD,KAAKktJ,GAAKltJ,KAAKwG,EAAIxG,KAAK4G,GAAK3E,KAAKI,IAAI4uJ,EAAKjxJ,KAAK4mD,IAC3C5mD,KAAKmlB,QACRnlB,KAAKmlB,MAAQ,0BA7Bf,CA+BF,EA2EEy+F,QAvEK,SAAiB75G,GAEtB,IAAIwqE,EAAMxqE,EAAE/H,EACR4yE,EAAM7qE,EAAEhI,EAGRE,KAAK2G,IAAI,EAAI3G,KAAK2G,IAAIgsE,GAAO3yE,KAAKmlB,KAAO+vH,IAC3CviE,EAAM2oE,EAAK3oE,IAAQsiE,EAAU,QAG/B,IACIwG,EAAIwT,EADJ5T,EAAMr7I,KAAK2G,IAAI3G,KAAK2G,IAAIgsE,GAAOsiE,GAEnC,GAAIoG,EAAMnG,EACRuG,EAAKS,EAAMn+I,KAAK6B,EAAG+yE,EAAK3yE,KAAKwF,IAAImtE,IACjCs8E,EAAMlxJ,KAAKwG,EAAIxG,KAAK4G,GAAK3E,KAAKI,IAAIq7I,EAAI19I,KAAK4mD,QAExC,CAEH,IADA02F,EAAM1oE,EAAM50E,KAAK4mD,KACN,EACT,OAAO,KAETsqG,EAAM,CACR,CACA,IAAIlwE,EAAQhhF,KAAK4mD,GAAKs3F,EAAW3pE,EAAMv0E,KAAK04I,OAI5C,OAHA3uI,EAAE/H,EAAIhC,KAAKo5I,IAAM8X,EAAMjvJ,KAAKwF,IAAIu5E,IAAUhhF,KAAK6jC,GAC/C95B,EAAEhI,EAAI/B,KAAKo5I,IAAMp5I,KAAKktJ,GAAKgE,EAAMjvJ,KAAKiG,IAAI84E,IAAUhhF,KAAK8jC,GAElD/5B,CACT,EA4CE85G,QAxCK,SAAiB95G,GAEtB,IAAImnJ,EAAK5T,EAAKI,EACV9oE,EAAKL,EACLvyE,GAAK+H,EAAE/H,EAAIhC,KAAK6jC,IAAM7jC,KAAKo5I,GAC3Br3I,EAAK/B,KAAKktJ,IAAMnjJ,EAAEhI,EAAI/B,KAAK8jC,IAAM9jC,KAAKo5I,GACtCp5I,KAAK4mD,GAAK,GACZsqG,EAAMjvJ,KAAKuF,KAAKxF,EAAIA,EAAID,EAAIA,GAC5Bu7I,EAAM,IAGN4T,GAAOjvJ,KAAKuF,KAAKxF,EAAIA,EAAID,EAAIA,GAC7Bu7I,GAAO,GAET,IAAIt8D,EAAQ,EAIZ,GAHY,IAARkwE,IACFlwE,EAAQ/+E,KAAK2H,MAAO0zI,EAAMt7I,EAAKs7I,EAAMv7I,IAE1B,IAARmvJ,GAAelxJ,KAAK4mD,GAAK,GAI5B,GAHA02F,EAAM,EAAIt9I,KAAK4mD,GACf82F,EAAKz7I,KAAKI,IAAK6uJ,GAAOlxJ,KAAKwG,EAAIxG,KAAK4G,IAAM02I,IAE7B,QADb1oE,EAAMwpE,EAAMp+I,KAAK6B,EAAG67I,IAElB,OAAO,UAIT9oE,GAAOsiE,EAMT,OAJA3iE,EAAM2pE,EAAWl9D,EAAQhhF,KAAK4mD,GAAK5mD,KAAK04I,OAExC3uI,EAAE/H,EAAIuyE,EACNxqE,EAAEhI,EAAI6yE,EACC7qE,CACT,EAOEs0I,MALiB,CAAC,gDAAiD,0BAA2B,8BAA+B,QChC/H,IACEp9I,KAnGK,WACLjB,KAAKwG,EAAI,YACTxG,KAAKg+I,GAAK,iBACVh+I,KAAK6B,EAAII,KAAKuF,KAAKxH,KAAKg+I,IACnBh+I,KAAKq4I,OACRr4I,KAAKq4I,KAAO,kBAETr4I,KAAK04I,QACR14I,KAAK04I,MAAQ,mBAGV14I,KAAKo5I,KACRp5I,KAAKo5I,GAAK,OAEZp5I,KAAKmxJ,IAAM,iBACXnxJ,KAAKoxJ,IAAM,EAAIpxJ,KAAKmxJ,IACpBnxJ,KAAKqxJ,IAAMrxJ,KAAKq4I,KAChBr4I,KAAKmH,GAAKnH,KAAKg+I,GACfh+I,KAAK6B,EAAII,KAAKuF,KAAKxH,KAAKmH,IACxBnH,KAAKsxJ,KAAOrvJ,KAAKuF,KAAK,EAAKxH,KAAKmH,GAAKlF,KAAKI,IAAIJ,KAAKiG,IAAIlI,KAAKqxJ,KAAM,IAAO,EAAIrxJ,KAAKmH,KAClFnH,KAAKuxJ,GAAK,iBACVvxJ,KAAK8yH,GAAK7wH,KAAKmlI,KAAKnlI,KAAKwF,IAAIzH,KAAKqxJ,KAAOrxJ,KAAKsxJ,MAC9CtxJ,KAAKyM,EAAIxK,KAAKI,KAAK,EAAIrC,KAAK6B,EAAII,KAAKwF,IAAIzH,KAAKqxJ,OAAS,EAAIrxJ,KAAK6B,EAAII,KAAKwF,IAAIzH,KAAKqxJ,MAAOrxJ,KAAKsxJ,KAAOtxJ,KAAK6B,EAAI,GAC9G7B,KAAK4tE,EAAI3rE,KAAK4F,IAAI7H,KAAK8yH,GAAK,EAAI9yH,KAAKmxJ,KAAOlvJ,KAAKI,IAAIJ,KAAK4F,IAAI7H,KAAKqxJ,IAAM,EAAIrxJ,KAAKmxJ,KAAMnxJ,KAAKsxJ,MAAQtxJ,KAAKyM,EAC1GzM,KAAKiuJ,GAAKjuJ,KAAKo5I,GACfp5I,KAAK2G,GAAK3G,KAAKwG,EAAIvE,KAAKuF,KAAK,EAAIxH,KAAKmH,KAAO,EAAInH,KAAKmH,GAAKlF,KAAKI,IAAIJ,KAAKwF,IAAIzH,KAAKqxJ,KAAM,IACxFrxJ,KAAKwxJ,GAAK,iBACVxxJ,KAAK8B,EAAIG,KAAKwF,IAAIzH,KAAKwxJ,IACvBxxJ,KAAKyxJ,IAAMzxJ,KAAKiuJ,GAAKjuJ,KAAK2G,GAAK1E,KAAK4F,IAAI7H,KAAKwxJ,IAC7CxxJ,KAAK0xJ,GAAK1xJ,KAAKoxJ,IAAMpxJ,KAAKuxJ,EAC5B,EAsEE3tC,QAjEK,SAAiB75G,GACtB,IAAI4nJ,EAAKzlJ,EAAG0lJ,EAAQroJ,EAAG6C,EAAGylJ,EAAKC,EAC3Bv9E,EAAMxqE,EAAE/H,EACR4yE,EAAM7qE,EAAEhI,EACRymJ,EAAYtK,EAAW3pE,EAAMv0E,KAAK04I,OAgBtC,OAdAiZ,EAAM1vJ,KAAKI,KAAM,EAAIrC,KAAK6B,EAAII,KAAKwF,IAAImtE,KAAS,EAAI50E,KAAK6B,EAAII,KAAKwF,IAAImtE,IAAS50E,KAAKsxJ,KAAOtxJ,KAAK6B,EAAI,GACpGqK,EAAI,GAAKjK,KAAK+/G,KAAKhiH,KAAK4tE,EAAI3rE,KAAKI,IAAIJ,KAAK4F,IAAI+sE,EAAM,EAAI50E,KAAKmxJ,KAAMnxJ,KAAKsxJ,MAAQK,GAAO3xJ,KAAKmxJ,KAC5FS,GAAUpJ,EAAYxoJ,KAAKsxJ,KAC3B/nJ,EAAItH,KAAKmlI,KAAKnlI,KAAKiG,IAAIlI,KAAK0xJ,IAAMzvJ,KAAKwF,IAAIyE,GAAKjK,KAAKwF,IAAIzH,KAAK0xJ,IAAMzvJ,KAAKiG,IAAIgE,GAAKjK,KAAKiG,IAAI0pJ,IAC3FxlJ,EAAInK,KAAKmlI,KAAKnlI,KAAKiG,IAAIgE,GAAKjK,KAAKwF,IAAImqJ,GAAU3vJ,KAAKiG,IAAIqB,IACxDsoJ,EAAM7xJ,KAAK8B,EAAIsK,EACf0lJ,EAAK9xJ,KAAKyxJ,IAAMxvJ,KAAKI,IAAIJ,KAAK4F,IAAI7H,KAAKwxJ,GAAK,EAAIxxJ,KAAKmxJ,KAAMnxJ,KAAK8B,GAAKG,KAAKI,IAAIJ,KAAK4F,IAAI0B,EAAI,EAAIvJ,KAAKmxJ,KAAMnxJ,KAAK8B,GAC/GiI,EAAEhI,EAAI+vJ,EAAK7vJ,KAAKiG,IAAI2pJ,GAAO,EAC3B9nJ,EAAE/H,EAAI8vJ,EAAK7vJ,KAAKwF,IAAIoqJ,GAAO,EAEtB7xJ,KAAK+xJ,QACRhoJ,EAAEhI,IAAM,EACRgI,EAAE/H,IAAM,GAEH,CACT,EA6CE6hH,QA1CK,SAAiB95G,GACtB,IAAImC,EAAG0lJ,EAAQroJ,EAAG6C,EAAQ0lJ,EAAIE,EAC1BvvJ,EAIAioC,EAAM3gC,EAAE/H,EACZ+H,EAAE/H,EAAI+H,EAAEhI,EACRgI,EAAEhI,EAAI2oC,EACD1qC,KAAK+xJ,QACRhoJ,EAAEhI,IAAM,EACRgI,EAAE/H,IAAM,GAEV8vJ,EAAK7vJ,KAAKuF,KAAKuC,EAAE/H,EAAI+H,EAAE/H,EAAI+H,EAAEhI,EAAIgI,EAAEhI,GAEnCqK,EADMnK,KAAK2H,MAAMG,EAAEhI,EAAGgI,EAAE/H,GACdC,KAAKwF,IAAIzH,KAAKwxJ,IACxBjoJ,EAAI,GAAKtH,KAAK+/G,KAAK//G,KAAKI,IAAIrC,KAAKyxJ,IAAMK,EAAI,EAAI9xJ,KAAK8B,GAAKG,KAAK4F,IAAI7H,KAAKwxJ,GAAK,EAAIxxJ,KAAKmxJ,MAAQnxJ,KAAKmxJ,KAClGjlJ,EAAIjK,KAAKmlI,KAAKnlI,KAAKiG,IAAIlI,KAAK0xJ,IAAMzvJ,KAAKwF,IAAI8B,GAAKtH,KAAKwF,IAAIzH,KAAK0xJ,IAAMzvJ,KAAKiG,IAAIqB,GAAKtH,KAAKiG,IAAIkE,IAC3FwlJ,EAAS3vJ,KAAKmlI,KAAKnlI,KAAKiG,IAAIqB,GAAKtH,KAAKwF,IAAI2E,GAAKnK,KAAKiG,IAAIgE,IACxDnC,EAAE/H,EAAIhC,KAAK04I,MAAQkZ,EAAS5xJ,KAAKsxJ,KACjCU,EAAM9lJ,EACNzJ,EAAK,EACL,IAAIggJ,EAAO,EACX,GACE14I,EAAEhI,EAAI,GAAKE,KAAK+/G,KAAK//G,KAAKI,IAAIrC,KAAK4tE,GAAK,EAAI5tE,KAAKsxJ,MAAQrvJ,KAAKI,IAAIJ,KAAK4F,IAAIqE,EAAI,EAAIlM,KAAKmxJ,KAAM,EAAInxJ,KAAKsxJ,MAAQrvJ,KAAKI,KAAK,EAAIrC,KAAK6B,EAAII,KAAKwF,IAAIuqJ,KAAS,EAAIhyJ,KAAK6B,EAAII,KAAKwF,IAAIuqJ,IAAOhyJ,KAAK6B,EAAI,IAAM7B,KAAKmxJ,KACrMlvJ,KAAK2G,IAAIopJ,EAAMjoJ,EAAEhI,GAAK,QACxBU,EAAK,GAEPuvJ,EAAMjoJ,EAAEhI,EACR0gJ,GAAQ,QACM,IAAPhgJ,GAAYggJ,EAAO,IAC5B,OAAIA,GAAQ,GACH,KAGF,CACT,EAOEpE,MALiB,CAAC,SAAU,WCnGf,YAAS33I,EAAImsI,EAAI1rI,EAAI8qJ,EAAIzU,GACtC,OAAQ92I,EAAK82I,EAAM3K,EAAK5wI,KAAKwF,IAAI,EAAI+1I,GAAOr2I,EAAKlF,KAAKwF,IAAI,EAAI+1I,GAAOyU,EAAKhwJ,KAAKwF,IAAI,EAAI+1I,EACzF,CCFe,YAASx7I,GACtB,OAAQ,EAAI,IAAOA,GAAK,EAAIA,EAAI,IAAM,EAAI,KAAOA,GACnD,CCFe,YAASA,GACtB,MAAQ,KAAQA,GAAK,EAAI,IAAOA,GAAK,EAAI,OAAUA,GACrD,CCFe,YAASA,GACtB,MAAQ,UAAaA,EAAIA,GAAK,EAAI,IAAOA,EAC3C,CCFe,YAASA,GACtB,OAAQA,EAAIA,EAAIA,GAAK,GAAK,KAC5B,CCFe,YAASwE,EAAG3E,EAAGu7I,GAC5B,IAAI+L,EAAOtnJ,EAAIu7I,EACf,OAAO52I,EAAIvE,KAAKuF,KAAK,EAAI2hJ,EAAOA,EAClC,CCAe,YAASnnJ,GACtB,OAAQC,KAAK2G,IAAI5G,GAAKk1I,EAAWl1I,EAAKA,EAAKu7I,EAAKv7I,GAAKC,KAAKmlB,EAC5D,CCLe,YAAS2hI,EAAIriJ,EAAImsI,EAAI1rI,EAAI8qJ,GACtC,IAAIzU,EACAG,EAEJH,EAAMuL,EAAKriJ,EACX,IAAK,IAAI8D,EAAI,EAAGA,EAAI,GAAIA,IAGtB,GADAgzI,GADAG,GAAQoL,GAAMriJ,EAAK82I,EAAM3K,EAAK5wI,KAAKwF,IAAI,EAAI+1I,GAAOr2I,EAAKlF,KAAKwF,IAAI,EAAI+1I,GAAOyU,EAAKhwJ,KAAKwF,IAAI,EAAI+1I,MAAU92I,EAAK,EAAImsI,EAAK5wI,KAAKiG,IAAI,EAAIs1I,GAAO,EAAIr2I,EAAKlF,KAAKiG,IAAI,EAAIs1I,GAAO,EAAIyU,EAAKhwJ,KAAKiG,IAAI,EAAIs1I,IAExLv7I,KAAK2G,IAAI+0I,IAAS,MACpB,OAAOH,EAKX,OAAO9kF,GACT,CCuFA,UACEz3D,KA5FK,WACAjB,KAAKs8I,SACRt8I,KAAK0G,GAAKwrJ,GAAKlyJ,KAAKg+I,IACpBh+I,KAAK6yI,GAAKsf,GAAKnyJ,KAAKg+I,IACpBh+I,KAAKmH,GAAKirJ,GAAKpyJ,KAAKg+I,IACpBh+I,KAAKiyJ,GAAKI,GAAKryJ,KAAKg+I,IACpBh+I,KAAKuoJ,IAAMvoJ,KAAKwG,EAAI8rJ,GAAKtyJ,KAAK0G,GAAI1G,KAAK6yI,GAAI7yI,KAAKmH,GAAInH,KAAKiyJ,GAAIjyJ,KAAKq4I,MAEtE,EAqFEz0B,QAjFK,SAAiB75G,GAItB,IAAI/H,EAAGD,EACHwwJ,EAAMxoJ,EAAE/H,EACRw7I,EAAMzzI,EAAEhI,EAGZ,GAFAwwJ,EAAMrU,EAAWqU,EAAMvyJ,KAAK04I,OAExB14I,KAAKs8I,OACPt6I,EAAIhC,KAAKwG,EAAIvE,KAAKmlI,KAAKnlI,KAAKiG,IAAIs1I,GAAOv7I,KAAKwF,IAAI8qJ,IAChDxwJ,EAAI/B,KAAKwG,GAAKvE,KAAK2H,MAAM3H,KAAK4F,IAAI21I,GAAMv7I,KAAKiG,IAAIqqJ,IAAQvyJ,KAAKq4I,UAE3D,CAEH,IAAI+E,EAASn7I,KAAKwF,IAAI+1I,GAClBH,EAASp7I,KAAKiG,IAAIs1I,GAClBgV,EAAKC,GAAGzyJ,KAAKwG,EAAGxG,KAAK6B,EAAGu7I,GACxB6S,EAAKhuJ,KAAK4F,IAAI21I,GAAOv7I,KAAK4F,IAAI21I,GAC9BmL,EAAK4J,EAAMtwJ,KAAKiG,IAAIs1I,GACpBkV,EAAM/J,EAAKA,EACXgK,EAAK3yJ,KAAKg+I,GAAKX,EAASA,GAAU,EAAIr9I,KAAKg+I,IAG/Ch8I,EAAIwwJ,EAAK7J,GAAM,EAAI+J,EAAMzC,GAAM,EAAI,GAAK,EAAIA,EAAK,EAAI0C,GAAMD,EAAM,MACjE3wJ,EAHS/B,KAAKwG,EAAI8rJ,GAAKtyJ,KAAK0G,GAAI1G,KAAK6yI,GAAI7yI,KAAKmH,GAAInH,KAAKiyJ,GAAIzU,GAGlDx9I,KAAKuoJ,IAAMiK,EAAKpV,EAASC,EAASqV,GAAO,IAAO,EAAIzC,EAAK,EAAI0C,GAAMD,EAAM,GAGpF,CAIA,OAFA3oJ,EAAE/H,EAAIA,EAAIhC,KAAK6jC,GACf95B,EAAEhI,EAAIA,EAAI/B,KAAK8jC,GACR/5B,CACT,EAiDE85G,QA7CK,SAAiB95G,GACtBA,EAAE/H,GAAKhC,KAAK6jC,GACZ95B,EAAEhI,GAAK/B,KAAK8jC,GACZ,IAEI05G,EAAK+U,EAFLvwJ,EAAI+H,EAAE/H,EAAIhC,KAAKwG,EACfzE,EAAIgI,EAAEhI,EAAI/B,KAAKwG,EAGnB,GAAIxG,KAAKs8I,OAAQ,CACf,IAAItlC,EAAKj1G,EAAI/B,KAAKq4I,KAClBmF,EAAMv7I,KAAKmlI,KAAKnlI,KAAKwF,IAAIuvG,GAAM/0G,KAAKiG,IAAIlG,IACxCuwJ,EAAMtwJ,KAAK2H,MAAM3H,KAAK4F,IAAI7F,GAAIC,KAAKiG,IAAI8uG,GACzC,KACK,CAEH,IACI47C,EAAOC,GADD7yJ,KAAKuoJ,IAAMvoJ,KAAKwG,EAAIzE,EACR/B,KAAK0G,GAAI1G,KAAK6yI,GAAI7yI,KAAKmH,GAAInH,KAAKiyJ,IACtD,GAAIhwJ,KAAK2G,IAAI3G,KAAK2G,IAAIgqJ,GAAQ1b,IAAYC,EAMxC,OALAptI,EAAE/H,EAAIhC,KAAK04I,MACX3uI,EAAEhI,EAAIm1I,EACFn1I,EAAI,IACNgI,EAAEhI,IAAM,GAEHgI,EAET,IAAI+oJ,EAAML,GAAGzyJ,KAAKwG,EAAGxG,KAAK6B,EAAGI,KAAKwF,IAAImrJ,IAElCG,EAAMD,EAAMA,EAAMA,EAAM9yJ,KAAKwG,EAAIxG,KAAKwG,GAAK,EAAIxG,KAAKg+I,IACpDgV,EAAM/wJ,KAAKI,IAAIJ,KAAK4F,IAAI+qJ,GAAO,GAC/BzD,EAAKntJ,EAAIhC,KAAKwG,EAAIssJ,EAClBG,EAAM9D,EAAKA,EACf3R,EAAMoV,EAAOE,EAAM7wJ,KAAK4F,IAAI+qJ,GAAQG,EAAM5D,EAAKA,GAAM,IAAO,EAAI,EAAI6D,GAAO7D,EAAKA,EAAK,IACrFoD,EAAMpD,GAAM,EAAI8D,GAAOD,EAAM,GAAK,EAAI,EAAIA,GAAOA,EAAMC,EAAM,KAAOhxJ,KAAKiG,IAAI0qJ,EAE/E,CAIA,OAFA7oJ,EAAE/H,EAAIk8I,EAAWqU,EAAMvyJ,KAAK04I,OAC5B3uI,EAAEhI,EAAImxJ,GAAW1V,GACVzzI,CAET,EAOEs0I,MALiB,CAAC,UAAW,kBAAmB,SCrGnC,YAASlB,EAAQC,GAC9B,IAAIE,EACJ,OAAIH,EAAS,MAEF,EAAIA,EAASA,IAAWC,GAAU,GAD3CE,EAAMH,EAASC,GACsCE,GAAQ,GAAMH,EAAUl7I,KAAKN,KAAK,EAAI27I,IAAQ,EAAIA,KAG/F,EAAIF,CAEhB,CCuRA,UACEn8I,KA7QK,WACL,IAWMm8I,EAXF9yI,EAAIrI,KAAK2G,IAAI5I,KAAKq4I,MAUtB,GATIp2I,KAAK2G,IAAI0B,EAAI4sI,GAAWC,EAC1Bn3I,KAAK8nF,KAAO9nF,KAAKq4I,KAAO,EAAIr4I,KAAKmzJ,OAASnzJ,KAAKozJ,OAExCnxJ,KAAK2G,IAAI0B,GAAK6sI,EACrBn3I,KAAK8nF,KAAO9nF,KAAKqzJ,MAGjBrzJ,KAAK8nF,KAAO9nF,KAAKszJ,MAEftzJ,KAAKg+I,GAAK,EAMZ,OAHAh+I,KAAKqwJ,GAAKkD,GAAMvzJ,KAAK6B,EAAG,GACxB7B,KAAKwzJ,IAAM,IAAO,EAAIxzJ,KAAKg+I,IAC3Bh+I,KAAKyzJ,IAwOT,SAAiBzV,GACf,IAAI1zI,EACAopJ,EAAM,GASV,OARAA,EAAI,GAXI,kBAWC1V,EACT1zI,EAAI0zI,EAAKA,EACT0V,EAAI,IAXI,mBAWEppJ,EACVopJ,EAAI,GAVI,mBAUCppJ,EACTA,GAAK0zI,EACL0V,EAAI,IAbI,mBAaEppJ,EACVopJ,EAAI,IAZI,kBAYEppJ,EACVopJ,EAAI,GAZI,oBAYCppJ,EACFopJ,CACT,CApPeC,CAAQ3zJ,KAAKg+I,IAChBh+I,KAAK8nF,MACb,KAAK9nF,KAAKozJ,OAGV,KAAKpzJ,KAAKmzJ,OACRnzJ,KAAKg3G,GAAK,EACV,MACF,KAAKh3G,KAAKqzJ,MACRrzJ,KAAK4zJ,GAAK3xJ,KAAKuF,KAAK,GAAMxH,KAAKqwJ,IAC/BrwJ,KAAKg3G,GAAK,EAAIh3G,KAAK4zJ,GACnB5zJ,KAAK6zJ,IAAM,EACX7zJ,KAAK8zJ,IAAM,GAAM9zJ,KAAKqwJ,GACtB,MACF,KAAKrwJ,KAAKszJ,MACRtzJ,KAAK4zJ,GAAK3xJ,KAAKuF,KAAK,GAAMxH,KAAKqwJ,IAC/BjT,EAASn7I,KAAKwF,IAAIzH,KAAKq4I,MACvBr4I,KAAK+zJ,MAAQR,GAAMvzJ,KAAK6B,EAAGu7I,GAAUp9I,KAAKqwJ,GAC1CrwJ,KAAKg0J,MAAQ/xJ,KAAKuF,KAAK,EAAIxH,KAAK+zJ,MAAQ/zJ,KAAK+zJ,OAC7C/zJ,KAAKg3G,GAAK/0G,KAAKiG,IAAIlI,KAAKq4I,OAASp2I,KAAKuF,KAAK,EAAIxH,KAAKg+I,GAAKZ,EAASA,GAAUp9I,KAAK4zJ,GAAK5zJ,KAAKg0J,OAC3Fh0J,KAAK8zJ,KAAO9zJ,KAAK6zJ,IAAM7zJ,KAAK4zJ,IAAM5zJ,KAAKg3G,GACvCh3G,KAAK6zJ,KAAO7zJ,KAAKg3G,QAKfh3G,KAAK8nF,OAAS9nF,KAAKszJ,QACrBtzJ,KAAKi0J,OAAShyJ,KAAKwF,IAAIzH,KAAKq4I,MAC5Br4I,KAAKk0J,OAASjyJ,KAAKiG,IAAIlI,KAAKq4I,MAGlC,EA+NEz0B,QA3NK,SAAiB75G,GAItB,IAAI/H,EAAGD,EAAGoyJ,EAAQC,EAAQhX,EAAQiX,EAAGC,EAAMC,EAAM9tJ,EAAG42I,EAChDkV,EAAMxoJ,EAAE/H,EACRw7I,EAAMzzI,EAAEhI,EAGZ,GADAwwJ,EAAMrU,EAAWqU,EAAMvyJ,KAAK04I,OACxB14I,KAAKs8I,QAIP,GAHAc,EAASn7I,KAAKwF,IAAI+1I,GAClBH,EAASp7I,KAAKiG,IAAIs1I,GAClB2W,EAASlyJ,KAAKiG,IAAIqqJ,GACdvyJ,KAAK8nF,OAAS9nF,KAAKszJ,OAAStzJ,KAAK8nF,OAAS9nF,KAAKqzJ,MAAO,CAExD,IADAtxJ,EAAK/B,KAAK8nF,OAAS9nF,KAAKqzJ,MAAS,EAAIhW,EAAS8W,EAAS,EAAIn0J,KAAKi0J,OAAS7W,EAASp9I,KAAKk0J,OAAS7W,EAAS8W,IAChGhd,EACP,OAAO,KAGTn1I,GADAD,EAAIE,KAAKuF,KAAK,EAAIzF,IACVs7I,EAASp7I,KAAKwF,IAAI8qJ,GAC1BxwJ,GAAM/B,KAAK8nF,OAAS9nF,KAAKqzJ,MAASjW,EAASp9I,KAAKk0J,OAAS9W,EAASp9I,KAAKi0J,OAAS5W,EAAS8W,CAC3F,MACK,GAAIn0J,KAAK8nF,OAAS9nF,KAAKozJ,QAAUpzJ,KAAK8nF,OAAS9nF,KAAKmzJ,OAAQ,CAI/D,GAHInzJ,KAAK8nF,OAAS9nF,KAAKozJ,SACrBe,GAAUA,GAERlyJ,KAAK2G,IAAI40I,EAAMx9I,KAAKw0J,MAAQrd,EAC9B,OAAO,KAETp1I,EAAIu1I,EAAe,GAANkG,EAEbx7I,GADAD,EAAI,GAAM/B,KAAK8nF,OAAS9nF,KAAKmzJ,OAAUlxJ,KAAKiG,IAAInG,GAAKE,KAAKwF,IAAI1F,KACtDE,KAAKwF,IAAI8qJ,GACjBxwJ,GAAKoyJ,CACP,MAEG,CAYH,OAXAG,EAAO,EACPC,EAAO,EACP9tJ,EAAI,EACJ0tJ,EAASlyJ,KAAKiG,IAAIqqJ,GAClB6B,EAASnyJ,KAAKwF,IAAI8qJ,GAClBnV,EAASn7I,KAAKwF,IAAI+1I,GAClB6W,EAAId,GAAMvzJ,KAAK6B,EAAGu7I,GACdp9I,KAAK8nF,OAAS9nF,KAAKszJ,OAAStzJ,KAAK8nF,OAAS9nF,KAAKqzJ,QACjDiB,EAAOD,EAAIr0J,KAAKqwJ,GAChBkE,EAAOtyJ,KAAKuF,KAAK,EAAI8sJ,EAAOA,IAEtBt0J,KAAK8nF,MACb,KAAK9nF,KAAKszJ,MACR7sJ,EAAI,EAAIzG,KAAK+zJ,MAAQO,EAAOt0J,KAAKg0J,MAAQO,EAAOJ,EAChD,MACF,KAAKn0J,KAAKqzJ,MACR5sJ,EAAI,EAAI8tJ,EAAOJ,EACf,MACF,KAAKn0J,KAAKozJ,OACR3sJ,EAAIywI,EAAUsG,EACd6W,EAAIr0J,KAAKqwJ,GAAKgE,EACd,MACF,KAAKr0J,KAAKmzJ,OACR1sJ,EAAI+2I,EAAMtG,EACVmd,EAAIr0J,KAAKqwJ,GAAKgE,EAGhB,GAAIpyJ,KAAK2G,IAAInC,GAAK0wI,EAChB,OAAO,KAET,OAAQn3I,KAAK8nF,MACb,KAAK9nF,KAAKszJ,MACV,KAAKtzJ,KAAKqzJ,MACR5sJ,EAAIxE,KAAKuF,KAAK,EAAIf,GAEhB1E,EADE/B,KAAK8nF,OAAS9nF,KAAKszJ,MACjBtzJ,KAAK8zJ,IAAMrtJ,GAAKzG,KAAKg0J,MAAQM,EAAOt0J,KAAK+zJ,MAAQQ,EAAOJ,IAGvD1tJ,EAAIxE,KAAKuF,KAAK,GAAK,EAAI+sJ,EAAOJ,KAAYG,EAAOt0J,KAAK8zJ,IAE7D9xJ,EAAIhC,KAAK6zJ,IAAMptJ,EAAI8tJ,EAAOH,EAC1B,MACF,KAAKp0J,KAAKozJ,OACV,KAAKpzJ,KAAKmzJ,OACJkB,GAAK,GACPryJ,GAAKyE,EAAIxE,KAAKuF,KAAK6sJ,IAAMD,EACzBryJ,EAAIoyJ,GAAWn0J,KAAK8nF,OAAS9nF,KAAKmzJ,OAAU1sJ,GAAKA,IAGjDzE,EAAID,EAAI,EAId,CAIA,OAFAgI,EAAE/H,EAAIhC,KAAKwG,EAAIxE,EAAIhC,KAAK6jC,GACxB95B,EAAEhI,EAAI/B,KAAKwG,EAAIzE,EAAI/B,KAAK8jC,GACjB/5B,CACT,EA8HE85G,QA1HK,SAAiB95G,GACtBA,EAAE/H,GAAKhC,KAAK6jC,GACZ95B,EAAEhI,GAAK/B,KAAK8jC,GACZ,IAEIyuH,EAAK/U,EAAKiX,EAAKC,EAAKL,EAAG3sJ,EAAK2uH,EA4GjBs+B,EAAMjB,EACjBppJ,EA/GAtI,EAAI+H,EAAE/H,EAAIhC,KAAKwG,EACfzE,EAAIgI,EAAEhI,EAAI/B,KAAKwG,EAEnB,GAAIxG,KAAKs8I,OAAQ,CACf,IACE4Q,EADE0H,EAAO,EACLC,EAAO,EAIb,IADArX,EAAW,IADX0P,EAAKjrJ,KAAKuF,KAAKxF,EAAIA,EAAID,EAAIA,KAEjB,EACR,OAAO,KAOT,OALAy7I,EAAM,EAAIv7I,KAAKmlI,KAAKoW,GAChBx9I,KAAK8nF,OAAS9nF,KAAKszJ,OAAStzJ,KAAK8nF,OAAS9nF,KAAKqzJ,QACjDwB,EAAO5yJ,KAAKwF,IAAI+1I,GAChBoX,EAAO3yJ,KAAKiG,IAAIs1I,IAEVx9I,KAAK8nF,MACb,KAAK9nF,KAAKqzJ,MACR7V,EAAOv7I,KAAK2G,IAAIskJ,IAAO/V,EAAS,EAAIl1I,KAAKmlI,KAAKrlI,EAAI8yJ,EAAO3H,GACzDlrJ,GAAK6yJ,EACL9yJ,EAAI6yJ,EAAO1H,EACX,MACF,KAAKltJ,KAAKszJ,MACR9V,EAAOv7I,KAAK2G,IAAIskJ,IAAO/V,EAASn3I,KAAKw0J,KAAOvyJ,KAAKmlI,KAAKwtB,EAAO50J,KAAKi0J,OAASlyJ,EAAI8yJ,EAAO70J,KAAKk0J,OAAShH,GACpGlrJ,GAAK6yJ,EAAO70J,KAAKk0J,OACjBnyJ,GAAK6yJ,EAAO3yJ,KAAKwF,IAAI+1I,GAAOx9I,KAAKi0J,QAAU/G,EAC3C,MACF,KAAKltJ,KAAKozJ,OACRrxJ,GAAKA,EACLy7I,EAAMtG,EAAUsG,EAChB,MACF,KAAKx9I,KAAKmzJ,OACR3V,GAAOtG,EAGTqb,EAAa,IAANxwJ,GAAY/B,KAAK8nF,OAAS9nF,KAAKqzJ,OAASrzJ,KAAK8nF,OAAS9nF,KAAKszJ,MAAcrxJ,KAAK2H,MAAM5H,EAAGD,GAAlB,CAC9E,KACK,CAEH,GADAs0H,EAAK,EACDr2H,KAAK8nF,OAAS9nF,KAAKszJ,OAAStzJ,KAAK8nF,OAAS9nF,KAAKqzJ,MAAO,CAIxD,GAHArxJ,GAAKhC,KAAKg3G,GACVj1G,GAAK/B,KAAKg3G,IACVtvG,EAAMzF,KAAKuF,KAAKxF,EAAIA,EAAID,EAAIA,IAClBo1I,EAGR,OAFAptI,EAAE/H,EAAI,EACN+H,EAAEhI,EAAI/B,KAAKw0J,KACJzqJ,EAET2qJ,EAAM,EAAIzyJ,KAAKmlI,KAAK,GAAM1/H,EAAM1H,KAAK4zJ,IACrCa,EAAMxyJ,KAAKiG,IAAIwsJ,GACf1yJ,GAAM0yJ,EAAMzyJ,KAAKwF,IAAIitJ,GACjB10J,KAAK8nF,OAAS9nF,KAAKszJ,OACrBj9B,EAAKo+B,EAAMz0J,KAAK+zJ,MAAQhyJ,EAAI2yJ,EAAM10J,KAAKg0J,MAAQtsJ,EAC/C2sJ,EAAIr0J,KAAKqwJ,GAAKh6B,EACdt0H,EAAI2F,EAAM1H,KAAKg0J,MAAQS,EAAM1yJ,EAAI/B,KAAK+zJ,MAAQW,IAG9Cr+B,EAAKt0H,EAAI2yJ,EAAMhtJ,EACf2sJ,EAAIr0J,KAAKqwJ,GAAKh6B,EACdt0H,EAAI2F,EAAM+sJ,EAEd,MACK,GAAIz0J,KAAK8nF,OAAS9nF,KAAKozJ,QAAUpzJ,KAAK8nF,OAAS9nF,KAAKmzJ,OAAQ,CAK/D,GAJInzJ,KAAK8nF,OAAS9nF,KAAKozJ,SACrBrxJ,GAAKA,KAEPsyJ,EAAKryJ,EAAIA,EAAID,EAAIA,GAIf,OAFAgI,EAAE/H,EAAI,EACN+H,EAAEhI,EAAI/B,KAAKw0J,KACJzqJ,EAETssH,EAAK,EAAIg+B,EAAIr0J,KAAKqwJ,GACdrwJ,KAAK8nF,OAAS9nF,KAAKmzJ,SACrB98B,GAAMA,EAEV,CACAk8B,EAAMtwJ,KAAK2H,MAAM5H,EAAGD,GAiClBuI,GADWqqJ,EA/BC1yJ,KAAKmlI,KAAK/Q,IAgCXs+B,EAhCbnX,EAiCMmX,GAFajB,EA/BU1zJ,KAAKyzJ,KAiCjB,GAAKxxJ,KAAKwF,IAAI6C,GAAKopJ,EAAI,GAAKzxJ,KAAKwF,IAAI6C,EAAIA,GAAKopJ,EAAI,GAAKzxJ,KAAKwF,IAAI6C,EAAIA,EAAIA,EAhC3F,CAIA,OAFAP,EAAE/H,EAAIk8I,EAAWl+I,KAAK04I,MAAQ6Z,GAC9BxoJ,EAAEhI,EAAIy7I,EACCzzI,CACT,EAmCEs0I,MALiB,CAAC,+BAAgC,+BAAgC,QAMlF8U,OAzRkB,EA0RlBC,OAxRkB,EAyRlBC,MAxRiB,EAyRjBC,MAxRiB,GChBJ,YAAStxJ,GAItB,OAHIC,KAAK2G,IAAI5G,GAAK,IAChBA,EAAKA,EAAI,EAAK,GAAK,GAEdC,KAAKmlI,KAAKplI,EACnB,CCqHA,UACEf,KArHK,WAEDgB,KAAK2G,IAAI5I,KAAKsD,KAAOtD,KAAK42E,MAAQugE,IAGtCn3I,KAAKmpJ,KAAOnpJ,KAAKyG,EAAIzG,KAAKwG,EAC1BxG,KAAKg+I,GAAK,EAAI/7I,KAAKI,IAAIrC,KAAKmpJ,KAAM,GAClCnpJ,KAAKiyJ,GAAKhwJ,KAAKuF,KAAKxH,KAAKg+I,IAEzBh+I,KAAK80J,OAAS7yJ,KAAKwF,IAAIzH,KAAKsD,MAC5BtD,KAAK+0J,OAAS9yJ,KAAKiG,IAAIlI,KAAKsD,MAC5BtD,KAAKovJ,GAAKpvJ,KAAK80J,OACf90J,KAAKs9I,IAAMt9I,KAAK80J,OAChB90J,KAAK2sJ,IAAM1O,EAAMj+I,KAAKiyJ,GAAIjyJ,KAAK80J,OAAQ90J,KAAK+0J,QAC5C/0J,KAAKg1J,IAAMzB,GAAMvzJ,KAAKiyJ,GAAIjyJ,KAAK80J,OAAQ90J,KAAK+0J,QAE5C/0J,KAAK80J,OAAS7yJ,KAAKwF,IAAIzH,KAAK42E,MAC5B52E,KAAK+0J,OAAS9yJ,KAAKiG,IAAIlI,KAAK42E,MAC5B52E,KAAKqvJ,GAAKrvJ,KAAK80J,OACf90J,KAAK+wJ,IAAM9S,EAAMj+I,KAAKiyJ,GAAIjyJ,KAAK80J,OAAQ90J,KAAK+0J,QAC5C/0J,KAAKi1J,IAAM1B,GAAMvzJ,KAAKiyJ,GAAIjyJ,KAAK80J,OAAQ90J,KAAK+0J,QAE5C/0J,KAAK80J,OAAS7yJ,KAAKwF,IAAIzH,KAAKq4I,MAC5Br4I,KAAK+0J,OAAS9yJ,KAAKiG,IAAIlI,KAAKq4I,MAC5Br4I,KAAKk1J,GAAKl1J,KAAK80J,OACf90J,KAAKm1J,IAAM5B,GAAMvzJ,KAAKiyJ,GAAIjyJ,KAAK80J,OAAQ90J,KAAK+0J,QAExC9yJ,KAAK2G,IAAI5I,KAAKsD,KAAOtD,KAAK42E,MAAQugE,EACpCn3I,KAAKo1J,KAAOp1J,KAAK2sJ,IAAM3sJ,KAAK2sJ,IAAM3sJ,KAAK+wJ,IAAM/wJ,KAAK+wJ,MAAQ/wJ,KAAKi1J,IAAMj1J,KAAKg1J,KAG1Eh1J,KAAKo1J,IAAMp1J,KAAKs9I,IAElBt9I,KAAKmL,EAAInL,KAAK2sJ,IAAM3sJ,KAAK2sJ,IAAM3sJ,KAAKo1J,IAAMp1J,KAAKg1J,IAC/Ch1J,KAAKktJ,GAAKltJ,KAAKwG,EAAIvE,KAAKuF,KAAKxH,KAAKmL,EAAInL,KAAKo1J,IAAMp1J,KAAKm1J,KAAOn1J,KAAKo1J,IACpE,EAmFExxC,QA/EK,SAAiB75G,GAEtB,IAAIwqE,EAAMxqE,EAAE/H,EACR4yE,EAAM7qE,EAAEhI,EAEZ/B,KAAKyoJ,QAAUxmJ,KAAKwF,IAAImtE,GACxB50E,KAAK0oJ,QAAUzmJ,KAAKiG,IAAI0sE,GAExB,IAAI8+D,EAAK6f,GAAMvzJ,KAAKiyJ,GAAIjyJ,KAAKyoJ,QAASzoJ,KAAK0oJ,SACvCwI,EAAMlxJ,KAAKwG,EAAIvE,KAAKuF,KAAKxH,KAAKmL,EAAInL,KAAKo1J,IAAM1hB,GAAM1zI,KAAKo1J,IACxDp0E,EAAQhhF,KAAKo1J,IAAMlX,EAAW3pE,EAAMv0E,KAAK04I,OACzC12I,EAAIkvJ,EAAMjvJ,KAAKwF,IAAIu5E,GAAShhF,KAAK6jC,GACjC9hC,EAAI/B,KAAKktJ,GAAKgE,EAAMjvJ,KAAKiG,IAAI84E,GAAShhF,KAAK8jC,GAI/C,OAFA/5B,EAAE/H,EAAIA,EACN+H,EAAEhI,EAAIA,EACCgI,CACT,EA+DE85G,QA7DK,SAAiB95G,GACtB,IAAImnJ,EAAKxd,EAAI4J,EAAKt8D,EAAOzM,EAAKK,EA4B9B,OA1BA7qE,EAAE/H,GAAKhC,KAAK6jC,GACZ95B,EAAEhI,EAAI/B,KAAKktJ,GAAKnjJ,EAAEhI,EAAI/B,KAAK8jC,GACvB9jC,KAAKo1J,KAAO,GACdlE,EAAMjvJ,KAAKuF,KAAKuC,EAAE/H,EAAI+H,EAAE/H,EAAI+H,EAAEhI,EAAIgI,EAAEhI,GACpCu7I,EAAM,IAGN4T,GAAOjvJ,KAAKuF,KAAKuC,EAAE/H,EAAI+H,EAAE/H,EAAI+H,EAAEhI,EAAIgI,EAAEhI,GACrCu7I,GAAO,GAETt8D,EAAQ,EACI,IAARkwE,IACFlwE,EAAQ/+E,KAAK2H,MAAM0zI,EAAMvzI,EAAE/H,EAAGs7I,EAAMvzI,EAAEhI,IAExCu7I,EAAM4T,EAAMlxJ,KAAKo1J,IAAMp1J,KAAKwG,EACxBxG,KAAKs8I,OACP1nE,EAAM3yE,KAAKmlI,MAAMpnI,KAAKmL,EAAImyI,EAAMA,IAAQ,EAAIt9I,KAAKo1J,OAGjD1hB,GAAM1zI,KAAKmL,EAAImyI,EAAMA,GAAOt9I,KAAKo1J,IACjCxgF,EAAM50E,KAAKq1J,MAAMr1J,KAAKiyJ,GAAIve,IAG5Bn/D,EAAM2pE,EAAWl9D,EAAQhhF,KAAKo1J,IAAMp1J,KAAK04I,OACzC3uI,EAAE/H,EAAIuyE,EACNxqE,EAAEhI,EAAI6yE,EACC7qE,CACT,EAgCEs0I,MALiB,CAAC,0BAA2B,SAAU,OAMvDgX,MA5BK,SAAelY,EAAQzJ,GAC5B,IAAI0J,EAAgBE,EAAKG,EAAKE,EAC1BH,EAAM8X,GAAM,GAAM5hB,GACtB,GAAIyJ,EAAShG,EACX,OAAOqG,EAIT,IADA,IAAI+X,EAASpY,EAASA,EACb3yI,EAAI,EAAGA,GAAK,GAAIA,IAOvB,GADAgzI,GADAG,EAAO,IADPF,EAAM,GADNH,EAAMH,GAFNC,EAASn7I,KAAKwF,IAAI+1I,KAGFF,GACGG,EAHVx7I,KAAKiG,IAAIs1I,IAGiB9J,GAAM,EAAI6hB,GAAUnY,EAASK,EAAM,GAAMN,EAASl7I,KAAKN,KAAK,EAAI27I,IAAQ,EAAIA,KAE3Gr7I,KAAK2G,IAAI+0I,IAAS,KACpB,OAAOH,EAGX,OAAO,IACT,GCrBA,IACEv8I,KAzFK,WAILjB,KAAKw1J,QAAUvzJ,KAAKwF,IAAIzH,KAAKq4I,MAC7Br4I,KAAKy1J,QAAUxzJ,KAAKiG,IAAIlI,KAAKq4I,MAE7Br4I,KAAK01J,cAAgB,IAAO11J,KAAKwG,EACjCxG,KAAK4rJ,GAAK,CACZ,EAiFEhoC,QA7EK,SAAiB75G,GACtB,IAAIqzI,EAAQC,EACRgQ,EACAsI,EAEAlpJ,EACAzK,EAAGD,EACHwyE,EAAMxqE,EAAE/H,EACR4yE,EAAM7qE,EAAEhI,EA8BZ,OA3BAsrJ,EAAOnP,EAAW3pE,EAAMv0E,KAAK04I,OAE7B0E,EAASn7I,KAAKwF,IAAImtE,GAClByoE,EAASp7I,KAAKiG,IAAI0sE,GAElB+gF,EAAS1zJ,KAAKiG,IAAImlJ,IAClB5gJ,EAAIzM,KAAKw1J,QAAUpY,EAASp9I,KAAKy1J,QAAUpY,EAASsY,GAE3C,GAAO1zJ,KAAK2G,IAAI6D,IAAM0qI,GAC7Bn1I,EAAIhC,KAAK6jC,GAFL,EAEU7jC,KAAKwG,EAAU62I,EAASp7I,KAAKwF,IAAI4lJ,GAAQ5gJ,EACvD1K,EAAI/B,KAAK8jC,GAHL,EAGU9jC,KAAKwG,GAAWxG,KAAKy1J,QAAUrY,EAASp9I,KAAKw1J,QAAUnY,EAASsY,GAAUlpJ,IAWxFzK,EAAIhC,KAAK6jC,GAAK7jC,KAAK01J,cAAgBrY,EAASp7I,KAAKwF,IAAI4lJ,GACrDtrJ,EAAI/B,KAAK8jC,GAAK9jC,KAAK01J,eAAiB11J,KAAKy1J,QAAUrY,EAASp9I,KAAKw1J,QAAUnY,EAASsY,IAGtF5rJ,EAAE/H,EAAIA,EACN+H,EAAEhI,EAAIA,EACCgI,CACT,EAuCE85G,QArCK,SAAiB95G,GACtB,IAAImjJ,EACAb,EAAMC,EACNnhJ,EACAopE,EAAKK,EA0BT,OAtBA7qE,EAAE/H,GAAK+H,EAAE/H,EAAIhC,KAAK6jC,IAAM7jC,KAAKwG,EAC7BuD,EAAEhI,GAAKgI,EAAEhI,EAAI/B,KAAK8jC,IAAM9jC,KAAKwG,EAE7BuD,EAAE/H,GAAKhC,KAAKo5I,GACZrvI,EAAEhI,GAAK/B,KAAKo5I,IAEP8T,EAAKjrJ,KAAKuF,KAAKuC,EAAE/H,EAAI+H,EAAE/H,EAAI+H,EAAEhI,EAAIgI,EAAEhI,KACtCoJ,EAAIlJ,KAAK2H,MAAMsjJ,EAAIltJ,KAAK4rJ,IACxBS,EAAOpqJ,KAAKwF,IAAI0D,GAGhBypE,EAAM0gF,IAFNhJ,EAAOrqJ,KAAKiG,IAAIiD,IAEGnL,KAAKw1J,QAAWzrJ,EAAEhI,EAAIsqJ,EAAOrsJ,KAAKy1J,QAAWvI,GAChE34E,EAAMtyE,KAAK2H,MAAMG,EAAE/H,EAAIqqJ,EAAMa,EAAKltJ,KAAKy1J,QAAUnJ,EAAOviJ,EAAEhI,EAAI/B,KAAKw1J,QAAUnJ,GAC7E93E,EAAM2pE,EAAWl+I,KAAK04I,MAAQnkE,KAG9BK,EAAM50E,KAAK6rJ,MACXt3E,EAAM,GAGRxqE,EAAE/H,EAAIuyE,EACNxqE,EAAEhI,EAAI6yE,EACC7qE,CACT,EAOEs0I,MALiB,CAAC,SCjCpB,IACEp9I,KAtDK,WAEAjB,KAAKs8I,SACRt8I,KAAKo5I,GAAK6E,EAAMj+I,KAAK6B,EAAGI,KAAKwF,IAAIzH,KAAKw4I,QAASv2I,KAAKiG,IAAIlI,KAAKw4I,SAEjE,EAkDE50B,QA9CK,SAAiB75G,GACtB,IAEI/H,EAAGD,EAFHwyE,EAAMxqE,EAAE/H,EACR4yE,EAAM7qE,EAAEhI,EAIRsrJ,EAAOnP,EAAW3pE,EAAMv0E,KAAK04I,OACjC,GAAI14I,KAAKs8I,OACPt6I,EAAIhC,KAAK6jC,GAAK7jC,KAAKwG,EAAI6mJ,EAAOprJ,KAAKiG,IAAIlI,KAAKw4I,QAC5Cz2I,EAAI/B,KAAK8jC,GAAK9jC,KAAKwG,EAAIvE,KAAKwF,IAAImtE,GAAO3yE,KAAKiG,IAAIlI,KAAKw4I,YAElD,CACH,IAAI9E,EAAK6f,GAAMvzJ,KAAK6B,EAAGI,KAAKwF,IAAImtE,IAChC5yE,EAAIhC,KAAK6jC,GAAK7jC,KAAKwG,EAAIxG,KAAKo5I,GAAKiU,EACjCtrJ,EAAI/B,KAAK8jC,GAAK9jC,KAAKwG,EAAIktI,EAAK,GAAM1zI,KAAKo5I,EACzC,CAIA,OAFArvI,EAAE/H,EAAIA,EACN+H,EAAEhI,EAAIA,EACCgI,CACT,EA2BE85G,QAvBK,SAAiB95G,GAGtB,IAAIwqE,EAAKK,EAaT,OAfA7qE,EAAE/H,GAAKhC,KAAK6jC,GACZ95B,EAAEhI,GAAK/B,KAAK8jC,GAGR9jC,KAAKs8I,QACP/nE,EAAM2pE,EAAWl+I,KAAK04I,MAAS3uI,EAAE/H,EAAIhC,KAAKwG,EAAKvE,KAAKiG,IAAIlI,KAAKw4I,SAC7D5jE,EAAM3yE,KAAKmlI,KAAMr9H,EAAEhI,EAAI/B,KAAKwG,EAAKvE,KAAKiG,IAAIlI,KAAKw4I,WAG/C5jE,ECpDW,SAASuoE,EAAQkX,GAC9B,IAAIlL,EAAO,GAAK,EAAIhM,EAASA,IAAW,EAAIA,GAAUl7I,KAAKN,KAAK,EAAIw7I,IAAW,EAAIA,IACnF,GAAIl7I,KAAK2G,IAAI3G,KAAK2G,IAAIyrJ,GAAKlL,GAAQ,KACjC,OAAIkL,EAAI,GACG,EAAInd,EAGNA,EASX,IALA,IACIyG,EACA8K,EACAC,EACApL,EAJAE,EAAMv7I,KAAKmlI,KAAK,GAAMitB,GAKjB7pJ,EAAI,EAAGA,EAAI,GAAIA,IAMtB,GALAi+I,EAAUxmJ,KAAKwF,IAAI+1I,GACnBkL,EAAUzmJ,KAAKiG,IAAIs1I,GACnBF,EAAMH,EAASsL,EAEfjL,GADAG,EAAO17I,KAAKI,IAAI,EAAIi7I,EAAMA,EAAK,IAAM,EAAIoL,IAAY2L,GAAK,EAAIlX,EAASA,GAAUsL,GAAW,EAAInL,EAAMA,GAAO,GAAMH,EAASl7I,KAAKN,KAAK,EAAI27I,IAAQ,EAAIA,KAElJr7I,KAAK2G,IAAI+0I,IAAS,MACpB,OAAOH,EAKX,OAAO9kF,GACT,CDuBUk9F,CAAO51J,KAAK6B,EAAG,EAAIkI,EAAEhI,EAAI/B,KAAKo5I,GAAKp5I,KAAKwG,GAC9C+tE,EAAM2pE,EAAWl+I,KAAK04I,MAAQ3uI,EAAE/H,GAAKhC,KAAKwG,EAAIxG,KAAKo5I,MAGrDrvI,EAAE/H,EAAIuyE,EACNxqE,EAAEhI,EAAI6yE,EACC7qE,CACT,EAOEs0I,MALiB,CAAC,QErBpB,IACEp9I,KAxCK,WAELjB,KAAK6jC,GAAK7jC,KAAK6jC,IAAM,EACrB7jC,KAAK8jC,GAAK9jC,KAAK8jC,IAAM,EACrB9jC,KAAKq4I,KAAOr4I,KAAKq4I,MAAQ,EACzBr4I,KAAK04I,MAAQ14I,KAAK04I,OAAS,EAC3B14I,KAAKw4I,OAASx4I,KAAKw4I,QAAU,EAC7Bx4I,KAAKmlB,MAAQnlB,KAAKmlB,OAAS,wCAE3BnlB,KAAK4rJ,GAAK3pJ,KAAKiG,IAAIlI,KAAKw4I,OAC1B,EA+BE50B,QA3BK,SAAiB75G,GAEtB,IAAIwqE,EAAMxqE,EAAE/H,EACR4yE,EAAM7qE,EAAEhI,EAERsrJ,EAAOnP,EAAW3pE,EAAMv0E,KAAK04I,OAC7Bmd,EAAO3C,GAAWt+E,EAAM50E,KAAKq4I,MAGjC,OAFAtuI,EAAE/H,EAAIhC,KAAK6jC,GAAM7jC,KAAKwG,EAAI6mJ,EAAOrtJ,KAAK4rJ,GACtC7hJ,EAAEhI,EAAI/B,KAAK8jC,GAAM9jC,KAAKwG,EAAIqvJ,EACnB9rJ,CACT,EAkBE85G,QAdK,SAAiB95G,GAEtB,IAAI/H,EAAI+H,EAAE/H,EACND,EAAIgI,EAAEhI,EAIV,OAFAgI,EAAE/H,EAAIk8I,EAAWl+I,KAAK04I,OAAU12I,EAAIhC,KAAK6jC,KAAO7jC,KAAKwG,EAAIxG,KAAK4rJ,KAC9D7hJ,EAAEhI,EAAImxJ,GAAWlzJ,KAAKq4I,MAASt2I,EAAI/B,KAAK8jC,IAAO9jC,KAAM,GAC9C+J,CACT,EAOEs0I,MALiB,CAAC,kBAAmB,0BAA2B,QCwFlE,IACEp9I,KAtHK,WAGLjB,KAAKmpJ,KAAOnpJ,KAAKyG,EAAIzG,KAAKwG,EAC1BxG,KAAKg+I,GAAK,EAAI/7I,KAAKI,IAAIrC,KAAKmpJ,KAAM,GAClCnpJ,KAAK6B,EAAII,KAAKuF,KAAKxH,KAAKg+I,IACxBh+I,KAAK0G,GAAKwrJ,GAAKlyJ,KAAKg+I,IACpBh+I,KAAK6yI,GAAKsf,GAAKnyJ,KAAKg+I,IACpBh+I,KAAKmH,GAAKirJ,GAAKpyJ,KAAKg+I,IACpBh+I,KAAKiyJ,GAAKI,GAAKryJ,KAAKg+I,IACpBh+I,KAAKuoJ,IAAMvoJ,KAAKwG,EAAI8rJ,GAAKtyJ,KAAK0G,GAAI1G,KAAK6yI,GAAI7yI,KAAKmH,GAAInH,KAAKiyJ,GAAIjyJ,KAAKq4I,KACpE,EA4GEz0B,QAxGK,SAAiB75G,GACtB,IAEI/H,EAAGD,EAAGkqC,EAFNsoC,EAAMxqE,EAAE/H,EACR4yE,EAAM7qE,EAAEhI,EAERsrJ,EAAOnP,EAAW3pE,EAAMv0E,KAAK04I,OAEjC,GADAzsG,EAAKohH,EAAOprJ,KAAKwF,IAAImtE,GACjB50E,KAAKs8I,OACHr6I,KAAK2G,IAAIgsE,IAAQuiE,GACnBn1I,EAAIhC,KAAKwG,EAAI6mJ,EACbtrJ,GAAK,EAAI/B,KAAKwG,EAAIxG,KAAKq4I,OAGvBr2I,EAAIhC,KAAKwG,EAAIvE,KAAKwF,IAAIwkC,GAAMhqC,KAAK4F,IAAI+sE,GACrC7yE,EAAI/B,KAAKwG,GAAK0sJ,GAAWt+E,EAAM50E,KAAKq4I,OAAS,EAAIp2I,KAAKiG,IAAI+jC,IAAOhqC,KAAK4F,IAAI+sE,UAI5E,GAAI3yE,KAAK2G,IAAIgsE,IAAQuiE,EACnBn1I,EAAIhC,KAAKwG,EAAI6mJ,EACbtrJ,GAAK,EAAI/B,KAAKuoJ,QAEX,CACH,IAAIiK,EAAKC,GAAGzyJ,KAAKwG,EAAGxG,KAAK6B,EAAGI,KAAKwF,IAAImtE,IAAQ3yE,KAAK4F,IAAI+sE,GACtD5yE,EAAIwwJ,EAAKvwJ,KAAKwF,IAAIwkC,GAClBlqC,EAAI/B,KAAKwG,EAAI8rJ,GAAKtyJ,KAAK0G,GAAI1G,KAAK6yI,GAAI7yI,KAAKmH,GAAInH,KAAKiyJ,GAAIr9E,GAAO50E,KAAKuoJ,IAAMiK,GAAM,EAAIvwJ,KAAKiG,IAAI+jC,GAC7F,CAKF,OAFAliC,EAAE/H,EAAIA,EAAIhC,KAAK6jC,GACf95B,EAAEhI,EAAIA,EAAI/B,KAAK8jC,GACR/5B,CACT,EA0EE85G,QAtEK,SAAiB95G,GACtB,IAAIwqE,EAAKK,EAAK5yE,EAAGD,EAAGyI,EAChBm+I,EAAIoG,EACJvR,EAAKG,EAIT,GAHA37I,EAAI+H,EAAE/H,EAAIhC,KAAK6jC,GACf9hC,EAAIgI,EAAEhI,EAAI/B,KAAK8jC,GAEX9jC,KAAKs8I,OACP,GAAIr6I,KAAK2G,IAAI7G,EAAI/B,KAAKwG,EAAIxG,KAAKq4I,OAASlB,EACtC5iE,EAAM2pE,EAAWl8I,EAAIhC,KAAKwG,EAAIxG,KAAK04I,OACnC9jE,EAAM,MAEH,CAIH,IAAIkhF,EACJ,IAJAnN,EAAK3oJ,KAAKq4I,KAAOt2I,EAAI/B,KAAKwG,EAC1BuoJ,EAAK/sJ,EAAIA,EAAIhC,KAAKwG,EAAIxG,KAAKwG,EAAImiJ,EAAKA,EACpCnL,EAAMmL,EAEDn+I,EArEI,GAqEUA,IAAKA,EAItB,GADAgzI,GADAG,GAAQ,GAAKgL,GAAMnL,GADnBsY,EAAS7zJ,KAAK4F,IAAI21I,IACgB,GAAKA,EAAM,IAAOA,EAAMA,EAAMuR,GAAM+G,KAAYtY,EAAMmL,GAAMmN,EAAS,GAEnG7zJ,KAAK2G,IAAI+0I,IAASxG,EAAO,CAC3BviE,EAAM4oE,EACN,KACF,CAEFjpE,EAAM2pE,EAAWl+I,KAAK04I,MAASz2I,KAAKmlI,KAAKplI,EAAIC,KAAK4F,IAAI21I,GAAOx9I,KAAKwG,GAAMvE,KAAKwF,IAAImtE,GACnF,MAGA,GAAI3yE,KAAK2G,IAAI7G,EAAI/B,KAAKuoJ,MAAQpR,EAC5BviE,EAAM,EACNL,EAAM2pE,EAAWl+I,KAAK04I,MAAQ12I,EAAIhC,KAAKwG,OAEpC,CAKH,IAAImsJ,EAAIoD,EAAKC,EAAMC,EACf3Y,EACJ,IALAqL,GAAM3oJ,KAAKuoJ,IAAMxmJ,GAAK/B,KAAKwG,EAC3BuoJ,EAAK/sJ,EAAIA,EAAIhC,KAAKwG,EAAIxG,KAAKwG,EAAImiJ,EAAKA,EACpCnL,EAAMmL,EAGDn+I,EA7FI,GA6FUA,IAAKA,EAQtB,GAPA8yI,EAAMt9I,KAAK6B,EAAII,KAAKwF,IAAI+1I,GACxBmV,EAAK1wJ,KAAKuF,KAAK,EAAI81I,EAAMA,GAAOr7I,KAAK4F,IAAI21I,GACzCuY,EAAM/1J,KAAKwG,EAAI8rJ,GAAKtyJ,KAAK0G,GAAI1G,KAAK6yI,GAAI7yI,KAAKmH,GAAInH,KAAKiyJ,GAAIzU,GACxDwY,EAAOh2J,KAAK0G,GAAK,EAAI1G,KAAK6yI,GAAK5wI,KAAKiG,IAAI,EAAIs1I,GAAO,EAAIx9I,KAAKmH,GAAKlF,KAAKiG,IAAI,EAAIs1I,GAAO,EAAIx9I,KAAKiyJ,GAAKhwJ,KAAKiG,IAAI,EAAIs1I,GAGhHA,GADAG,GAAQgL,GAAMgK,GADdsD,EAAKF,EAAM/1J,KAAKwG,GACQ,GAAKyvJ,EAAK,GAAMtD,GAAMsD,EAAKA,EAAKlH,KAAQ/uJ,KAAKg+I,GAAK/7I,KAAKwF,IAAI,EAAI+1I,IAAQyY,EAAKA,EAAKlH,EAAK,EAAIpG,EAAKsN,IAAO,EAAItD,IAAOhK,EAAKsN,IAAOtD,EAAKqD,EAAO,EAAI/zJ,KAAKwF,IAAI,EAAI+1I,IAAQwY,GAEtL/zJ,KAAK2G,IAAI+0I,IAASxG,EAAO,CAC3BviE,EAAM4oE,EACN,KACF,CAIFmV,EAAK1wJ,KAAKuF,KAAK,EAAIxH,KAAKg+I,GAAK/7I,KAAKI,IAAIJ,KAAKwF,IAAImtE,GAAM,IAAM3yE,KAAK4F,IAAI+sE,GACpEL,EAAM2pE,EAAWl+I,KAAK04I,MAAQz2I,KAAKmlI,KAAKplI,EAAI2wJ,EAAK3yJ,KAAKwG,GAAKvE,KAAKwF,IAAImtE,GACtE,CAKF,OAFA7qE,EAAE/H,EAAIuyE,EACNxqE,EAAEhI,EAAI6yE,EACC7qE,CACT,EAOEs0I,MALiB,CAAC,YAAa,SC4FjC,IACEp9I,KA3MK,WACLjB,KAAKwjJ,EAAI,GACTxjJ,KAAKwjJ,EAAE,GAAK,YACZxjJ,KAAKwjJ,EAAE,IAAM,YACbxjJ,KAAKwjJ,EAAE,GAAK,WACZxjJ,KAAKwjJ,EAAE,IAAM,UACbxjJ,KAAKwjJ,EAAE,GAAK,SACZxjJ,KAAKwjJ,EAAE,IAAM,SACbxjJ,KAAKwjJ,EAAE,GAAK,SACZxjJ,KAAKwjJ,EAAE,IAAM,QACbxjJ,KAAKwjJ,EAAE,GAAK,MACZxjJ,KAAKwjJ,EAAE,KAAO,MAEdxjJ,KAAKk2J,KAAO,GACZl2J,KAAKm2J,KAAO,GACZn2J,KAAKk2J,KAAK,GAAK,YACfl2J,KAAKm2J,KAAK,GAAK,EACfn2J,KAAKk2J,KAAK,GAAK,WACfl2J,KAAKm2J,KAAK,GAAK,WACfn2J,KAAKk2J,KAAK,IAAM,WAChBl2J,KAAKm2J,KAAK,GAAK,UACfn2J,KAAKk2J,KAAK,IAAM,UAChBl2J,KAAKm2J,KAAK,GAAK,UACfn2J,KAAKk2J,KAAK,IAAM,UAChBl2J,KAAKm2J,KAAK,IAAM,UAChBn2J,KAAKk2J,KAAK,IAAM,SAChBl2J,KAAKm2J,KAAK,IAAM,UAEhBn2J,KAAKo2J,KAAO,GACZp2J,KAAKq2J,KAAO,GACZr2J,KAAKo2J,KAAK,GAAK,aACfp2J,KAAKq2J,KAAK,GAAK,EACfr2J,KAAKo2J,KAAK,IAAM,WAChBp2J,KAAKq2J,KAAK,IAAM,WAChBr2J,KAAKo2J,KAAK,GAAK,WACfp2J,KAAKq2J,KAAK,IAAM,WAChBr2J,KAAKo2J,KAAK,IAAM,UAChBp2J,KAAKq2J,KAAK,GAAK,UACfr2J,KAAKo2J,KAAK,GAAK,WACfp2J,KAAKq2J,KAAK,GAAK,WACfr2J,KAAKo2J,KAAK,GAAK,UACfp2J,KAAKq2J,KAAK,GAAK,UAEfr2J,KAAKkmJ,EAAI,GACTlmJ,KAAKkmJ,EAAE,GAAK,aACZlmJ,KAAKkmJ,EAAE,GAAK,YACZlmJ,KAAKkmJ,EAAE,IAAM,UACblmJ,KAAKkmJ,EAAE,IAAM,SACblmJ,KAAKkmJ,EAAE,IAAM,SACblmJ,KAAKkmJ,EAAE,GAAK,QACZlmJ,KAAKkmJ,EAAE,GAAK,MACZlmJ,KAAKkmJ,EAAE,GAAK,OACZlmJ,KAAKkmJ,EAAE,IAAM,KACf,EAuJEtiC,QAjJK,SAAiB75G,GACtB,IAAIjI,EACAyyE,EAAMxqE,EAAE/H,EAGRs0J,EAFMvsJ,EAAEhI,EAEU/B,KAAKq4I,KACvBmQ,EAAYj0E,EAAMv0E,KAAK04I,MAIvB6d,EAAQD,EAAYrf,EAAa,KACjCuf,EAAWhO,EACXiO,EAAU,EAEVC,EAAQ,EACZ,IAAK50J,EAAI,EAAGA,GAAK,GAAIA,IACnB20J,GAAoBF,EACpBG,GAAgB12J,KAAKwjJ,EAAE1hJ,GAAK20J,EAI9B,IAOIE,EAPAC,EAAQF,EACRG,EAAQL,EAGRM,EAAU,EACVC,EAAU,EAIVC,EAAO,EACPC,EAAO,EACX,IAAKn1J,EAAI,EAAGA,GAAK,EAAGA,IAElB60J,EAAWI,EAAUH,EAAQE,EAAUD,EACvCC,EAFWA,EAAUF,EAAQG,EAAUF,EAGvCE,EAAUJ,EACVK,EAAOA,EAAOh3J,KAAKk2J,KAAKp0J,GAAKg1J,EAAU92J,KAAKm2J,KAAKr0J,GAAKi1J,EACtDE,EAAOA,EAAOj3J,KAAKm2J,KAAKr0J,GAAKg1J,EAAU92J,KAAKk2J,KAAKp0J,GAAKi1J,EAOxD,OAHAhtJ,EAAE/H,EAAKi1J,EAAOj3J,KAAKwG,EAAKxG,KAAK6jC,GAC7B95B,EAAEhI,EAAKi1J,EAAOh3J,KAAKwG,EAAKxG,KAAK8jC,GAEtB/5B,CACT,EAoGE85G,QA/FK,SAAiB95G,GACtB,IAAIjI,EAeAo1J,EAdAl1J,EAAI+H,EAAE/H,EACND,EAAIgI,EAAEhI,EAENo1J,EAAUn1J,EAAIhC,KAAK6jC,GAInBmzH,GAHUj1J,EAAI/B,KAAK8jC,IAGF9jC,KAAKwG,EACtBywJ,EAAOE,EAAUn3J,KAAKwG,EAGtB4wJ,EAAS,EACTC,EAAS,EAITT,EAAQ,EACRC,EAAQ,EACZ,IAAK/0J,EAAI,EAAGA,GAAK,EAAGA,IAElBo1J,EAAUG,EAASL,EAAOI,EAASH,EACnCG,EAFUA,EAASJ,EAAOK,EAASJ,EAGnCI,EAASH,EACTN,EAAQA,EAAQ52J,KAAKo2J,KAAKt0J,GAAKs1J,EAASp3J,KAAKq2J,KAAKv0J,GAAKu1J,EACvDR,EAAQA,EAAQ72J,KAAKq2J,KAAKv0J,GAAKs1J,EAASp3J,KAAKo2J,KAAKt0J,GAAKu1J,EAOzD,IAAK,IAAI7sJ,EAAI,EAAGA,EAAIxK,KAAKs3J,WAAY9sJ,IAAK,CACxC,IAGImsJ,EAHAG,EAAUF,EACVG,EAAUF,EAIVU,EAASP,EACTQ,EAASP,EACb,IAAKn1J,EAAI,EAAGA,GAAK,EAAGA,IAElB60J,EAAWI,EAAUH,EAAQE,EAAUD,EACvCC,EAFWA,EAAUF,EAAQG,EAAUF,EAGvCE,EAAUJ,EACVY,IAAmBz1J,EAAI,IAAM9B,KAAKk2J,KAAKp0J,GAAKg1J,EAAU92J,KAAKm2J,KAAKr0J,GAAKi1J,GACrES,IAAmB11J,EAAI,IAAM9B,KAAKm2J,KAAKr0J,GAAKg1J,EAAU92J,KAAKk2J,KAAKp0J,GAAKi1J,GAGvED,EAAU,EACVC,EAAU,EACV,IAAIU,EAASz3J,KAAKk2J,KAAK,GACnBwB,EAAS13J,KAAKm2J,KAAK,GACvB,IAAKr0J,EAAI,EAAGA,GAAK,EAAGA,IAElB60J,EAAWI,EAAUH,EAAQE,EAAUD,EACvCC,EAFWA,EAAUF,EAAQG,EAAUF,EAGvCE,EAAUJ,EACVc,GAAkB31J,GAAK9B,KAAKk2J,KAAKp0J,GAAKg1J,EAAU92J,KAAKm2J,KAAKr0J,GAAKi1J,GAC/DW,GAAkB51J,GAAK9B,KAAKm2J,KAAKr0J,GAAKg1J,EAAU92J,KAAKk2J,KAAKp0J,GAAKi1J,GAIjE,IAAIY,EAAOF,EAASA,EAASC,EAASA,EACtCd,GAASW,EAASE,EAASD,EAASE,GAAUC,EAC9Cd,GAASW,EAASC,EAASF,EAASG,GAAUC,CAChD,CAGA,IAAIjB,EAAQE,EACRJ,EAAWK,EACXe,EAAU,EAEVrB,EAAQ,EACZ,IAAKz0J,EAAI,EAAGA,GAAK,EAAGA,IAClB81J,GAAoBlB,EACpBH,GAAgBv2J,KAAKkmJ,EAAEpkJ,GAAK81J,EAK9B,IAAIhjF,EAAM50E,KAAKq4I,KAAQke,EAAQtf,EAAa,IACxC1iE,EAAMv0E,KAAK04I,MAAQ8d,EAKvB,OAHAzsJ,EAAE/H,EAAIuyE,EACNxqE,EAAEhI,EAAI6yE,EAEC7qE,CACT,EAOEs0I,MALiB,CAAC,uBAAwB,SC7K5C,IACEp9I,KApCK,WAEP,EAmCE2iH,QA/BK,SAAiB75G,GACtB,IAAIwqE,EAAMxqE,EAAE/H,EACR4yE,EAAM7qE,EAAEhI,EAGRsrJ,EAAOnP,EAAW3pE,EAAMv0E,KAAK04I,OAC7B12I,EAAIhC,KAAK6jC,GAAK7jC,KAAKwG,EAAI6mJ,EACvBtrJ,EAAI/B,KAAK8jC,GAAK9jC,KAAKwG,EAAIvE,KAAKN,IAAIM,KAAK4F,IAAK5F,KAAKmlB,GAAK,EAAMwtD,EAAM,MAAS,KAI7E,OAFA7qE,EAAE/H,EAAIA,EACN+H,EAAEhI,EAAIA,EACCgI,CACT,EAoBE85G,QAhBK,SAAiB95G,GACtBA,EAAE/H,GAAKhC,KAAK6jC,GACZ95B,EAAEhI,GAAK/B,KAAK8jC,GAEZ,IAAIywC,EAAM2pE,EAAWl+I,KAAK04I,MAAQ3uI,EAAE/H,EAAIhC,KAAKwG,GACzCouE,EAAM,KAAO3yE,KAAK+/G,KAAK//G,KAAKg+G,IAAI,GAAMl2G,EAAEhI,EAAI/B,KAAKwG,IAAMvE,KAAKmlB,GAAK,GAIrE,OAFArd,EAAE/H,EAAIuyE,EACNxqE,EAAEhI,EAAI6yE,EACC7qE,CACT,EAOEs0I,MALiB,CAAC,qBAAsB,SCgE1C,IACEp9I,KAnGK,WAKAjB,KAAKs8I,QAIRt8I,KAAK8B,EAAI,EACT9B,KAAKsM,EAAI,EACTtM,KAAKg+I,GAAK,EACVh+I,KAAK63J,IAAM51J,KAAKuF,MAAMxH,KAAKsM,EAAI,GAAKtM,KAAK8B,GACzC9B,KAAK83J,IAAM93J,KAAK63J,KAAO73J,KAAKsM,EAAI,IAPhCtM,KAAKioJ,GAAKK,GAAQtoJ,KAAKg+I,GAU3B,EAoFEp6B,QAhFK,SAAiB75G,GACtB,IAAI/H,EAAGD,EACHwyE,EAAMxqE,EAAE/H,EACR4yE,EAAM7qE,EAAEhI,EAKZ,GAFAwyE,EAAM2pE,EAAW3pE,EAAMv0E,KAAK04I,OAExB14I,KAAKs8I,OAAQ,CACf,GAAKt8I,KAAKsM,EAKR,IADA,IAAIshE,EAAI5tE,KAAK8B,EAAIG,KAAKwF,IAAImtE,GACjBpqE,EA1CA,GA0CcA,IAAKA,EAAG,CAC7B,IAAIV,GAAK9J,KAAKsM,EAAIsoE,EAAM3yE,KAAKwF,IAAImtE,GAAOhH,IAAM5tE,KAAKsM,EAAIrK,KAAKiG,IAAI0sE,IAEhE,GADAA,GAAO9qE,EACH7H,KAAK2G,IAAIkB,GAAKqtI,EAChB,KAEJ,MAVAviE,EAAiB,IAAX50E,KAAK8B,EAAUG,KAAKmlI,KAAKpnI,KAAK8B,EAAIG,KAAKwF,IAAImtE,IAAQA,EAY3D5yE,EAAIhC,KAAKwG,EAAIxG,KAAK83J,IAAMvjF,GAAOv0E,KAAKsM,EAAIrK,KAAKiG,IAAI0sE,IACjD7yE,EAAI/B,KAAKwG,EAAIxG,KAAK63J,IAAMjjF,CAE1B,KACK,CAEH,IAAIrrE,EAAItH,KAAKwF,IAAImtE,GACbzpE,EAAIlJ,KAAKiG,IAAI0sE,GACjB7yE,EAAI/B,KAAKwG,EAAI6hJ,GAAQzzE,EAAKrrE,EAAG4B,EAAGnL,KAAKioJ,IACrCjmJ,EAAIhC,KAAKwG,EAAI+tE,EAAMppE,EAAIlJ,KAAKuF,KAAK,EAAIxH,KAAKg+I,GAAKz0I,EAAIA,EACrD,CAIA,OAFAQ,EAAE/H,EAAIA,EACN+H,EAAEhI,EAAIA,EACCgI,CACT,EA4CE85G,QA1CK,SAAiB95G,GACtB,IAAI6qE,EAAWL,EAAKhrE,EAkCpB,OAhCAQ,EAAE/H,GAAKhC,KAAK6jC,GACZ0wC,EAAMxqE,EAAE/H,EAAIhC,KAAKwG,EACjBuD,EAAEhI,GAAK/B,KAAK8jC,GACZ8wC,EAAM7qE,EAAEhI,EAAI/B,KAAKwG,EAEbxG,KAAKs8I,QACP1nE,GAAO50E,KAAK63J,IACZtjF,GAAav0E,KAAK83J,KAAO93J,KAAKsM,EAAIrK,KAAKiG,IAAI0sE,IACvC50E,KAAKsM,EACPsoE,EAAM0gF,IAAOt1J,KAAKsM,EAAIsoE,EAAM3yE,KAAKwF,IAAImtE,IAAQ50E,KAAK8B,GAEhC,IAAX9B,KAAK8B,IACZ8yE,EAAM0gF,GAAMrzJ,KAAKwF,IAAImtE,GAAO50E,KAAK8B,IAEnCyyE,EAAM2pE,EAAW3pE,EAAMv0E,KAAK04I,OAC5B9jE,EAAMs+E,GAAWt+E,KAGjBA,EAAMo0E,GAAYj/I,EAAEhI,EAAI/B,KAAKwG,EAAGxG,KAAKg+I,GAAIh+I,KAAKioJ,KAC9C1+I,EAAItH,KAAK2G,IAAIgsE,IACLsiE,GACN3tI,EAAItH,KAAKwF,IAAImtE,GAGbL,EAAM2pE,EAFCl+I,KAAK04I,MAAQ3uI,EAAE/H,EAAIC,KAAKuF,KAAK,EAAIxH,KAAKg+I,GAAKz0I,EAAIA,IAAMvJ,KAAKwG,EAAIvE,KAAKiG,IAAI0sE,MAItErrE,EAAI4tI,EAASD,IACrB3iE,EAAMv0E,KAAK04I,QAGf3uI,EAAE/H,EAAIuyE,EACNxqE,EAAEhI,EAAI6yE,EACC7qE,CACT,EAOEs0I,MALiB,CAAC,aAAc,SC/BlC,IACEp9I,KA7EK,WAAiB,EA8EtB2iH,QA1EK,SAAiB75G,GAatB,IATA,IAAIwqE,EAAMxqE,EAAE/H,EACR4yE,EAAM7qE,EAAEhI,EAERymJ,EAAYtK,EAAW3pE,EAAMv0E,KAAK04I,OAClC13D,EAAQpM,EACR0oE,EAAMr7I,KAAKmlB,GAAKnlB,KAAKwF,IAAImtE,KAIhB,CACX,IAAImjF,IAAgB/2E,EAAQ/+E,KAAKwF,IAAIu5E,GAASs8D,IAAQ,EAAIr7I,KAAKiG,IAAI84E,IAEnE,GADAA,GAAS+2E,EACL91J,KAAK2G,IAAImvJ,GAAe5gB,EAC1B,KAEJ,CACAn2D,GAAS,EAKL/+E,KAAKmlB,GAAK,EAAInlB,KAAK2G,IAAIgsE,GAAOuiE,IAChCqR,EAAY,GAEd,IAAIxmJ,EAAI,cAAiBhC,KAAKwG,EAAIgiJ,EAAYvmJ,KAAKiG,IAAI84E,GAAShhF,KAAK6jC,GACjE9hC,EAAI,gBAAkB/B,KAAKwG,EAAIvE,KAAKwF,IAAIu5E,GAAShhF,KAAK8jC,GAI1D,OAFA/5B,EAAE/H,EAAIA,EACN+H,EAAEhI,EAAIA,EACCgI,CACT,EAyCE85G,QAvCK,SAAiB95G,GACtB,IAAIi3E,EACAonE,EAIJr+I,EAAE/H,GAAKhC,KAAK6jC,GACZ95B,EAAEhI,GAAK/B,KAAK8jC,GACZskH,EAAMr+I,EAAEhI,GAAK,gBAAkB/B,KAAKwG,GAKhCvE,KAAK2G,IAAIw/I,GAAO,gBAClBA,EAAM,eAERpnE,EAAQ/+E,KAAKmlI,KAAKghB,GAClB,IAAI7zE,EAAM2pE,EAAWl+I,KAAK04I,MAAS3uI,EAAE/H,GAAK,cAAiBhC,KAAKwG,EAAIvE,KAAKiG,IAAI84E,KACzEzM,GAAQtyE,KAAKmlB,KACfmtD,GAAOtyE,KAAKmlB,IAEVmtD,EAAMtyE,KAAKmlB,KACbmtD,EAAMtyE,KAAKmlB,IAEbghI,GAAO,EAAIpnE,EAAQ/+E,KAAKwF,IAAI,EAAIu5E,IAAU/+E,KAAKmlB,GAC3CnlB,KAAK2G,IAAIw/I,GAAO,IAClBA,EAAM,GAER,IAAIxzE,EAAM3yE,KAAKmlI,KAAKghB,GAIpB,OAFAr+I,EAAE/H,EAAIuyE,EACNxqE,EAAEhI,EAAI6yE,EACC7qE,CACT,EAOEs0I,MALiB,CAAC,YAAa,SCmCjC,IACEp9I,KArGK,WAKDgB,KAAK2G,IAAI5I,KAAKsD,KAAOtD,KAAK42E,MAAQugE,IAGtCn3I,KAAK42E,KAAO52E,KAAK42E,MAAQ52E,KAAKsD,KAC9BtD,KAAKmpJ,KAAOnpJ,KAAKyG,EAAIzG,KAAKwG,EAC1BxG,KAAKg+I,GAAK,EAAI/7I,KAAKI,IAAIrC,KAAKmpJ,KAAM,GAClCnpJ,KAAK6B,EAAII,KAAKuF,KAAKxH,KAAKg+I,IACxBh+I,KAAK0G,GAAKwrJ,GAAKlyJ,KAAKg+I,IACpBh+I,KAAK6yI,GAAKsf,GAAKnyJ,KAAKg+I,IACpBh+I,KAAKmH,GAAKirJ,GAAKpyJ,KAAKg+I,IACpBh+I,KAAKiyJ,GAAKI,GAAKryJ,KAAKg+I,IAEpBh+I,KAAKo9I,OAASn7I,KAAKwF,IAAIzH,KAAKsD,MAC5BtD,KAAKq9I,OAASp7I,KAAKiG,IAAIlI,KAAKsD,MAE5BtD,KAAK2sJ,IAAM1O,EAAMj+I,KAAK6B,EAAG7B,KAAKo9I,OAAQp9I,KAAKq9I,QAC3Cr9I,KAAKg4J,IAAM1F,GAAKtyJ,KAAK0G,GAAI1G,KAAK6yI,GAAI7yI,KAAKmH,GAAInH,KAAKiyJ,GAAIjyJ,KAAKsD,MAErDrB,KAAK2G,IAAI5I,KAAKsD,KAAOtD,KAAK42E,MAAQugE,EACpCn3I,KAAK4mD,GAAK5mD,KAAKo9I,QAGfp9I,KAAKo9I,OAASn7I,KAAKwF,IAAIzH,KAAK42E,MAC5B52E,KAAKq9I,OAASp7I,KAAKiG,IAAIlI,KAAK42E,MAC5B52E,KAAK+wJ,IAAM9S,EAAMj+I,KAAK6B,EAAG7B,KAAKo9I,OAAQp9I,KAAKq9I,QAC3Cr9I,KAAKi4J,IAAM3F,GAAKtyJ,KAAK0G,GAAI1G,KAAK6yI,GAAI7yI,KAAKmH,GAAInH,KAAKiyJ,GAAIjyJ,KAAK42E,MACzD52E,KAAK4mD,IAAM5mD,KAAK2sJ,IAAM3sJ,KAAK+wJ,MAAQ/wJ,KAAKi4J,IAAMj4J,KAAKg4J,MAErDh4J,KAAKyM,EAAIzM,KAAKg4J,IAAMh4J,KAAK2sJ,IAAM3sJ,KAAK4mD,GACpC5mD,KAAKuoJ,IAAM+J,GAAKtyJ,KAAK0G,GAAI1G,KAAK6yI,GAAI7yI,KAAKmH,GAAInH,KAAKiyJ,GAAIjyJ,KAAKq4I,MACzDr4I,KAAKktJ,GAAKltJ,KAAKwG,GAAKxG,KAAKyM,EAAIzM,KAAKuoJ,KACpC,EAkEE3kC,QA9DK,SAAiB75G,GACtB,IAEImnJ,EAFA38E,EAAMxqE,EAAE/H,EACR4yE,EAAM7qE,EAAEhI,EAKZ,GAAI/B,KAAKs8I,OACP4U,EAAMlxJ,KAAKwG,GAAKxG,KAAKyM,EAAImoE,OAEtB,CACH,IAAIm0E,EAAKuJ,GAAKtyJ,KAAK0G,GAAI1G,KAAK6yI,GAAI7yI,KAAKmH,GAAInH,KAAKiyJ,GAAIr9E,GAClDs8E,EAAMlxJ,KAAKwG,GAAKxG,KAAKyM,EAAIs8I,EAC3B,CACA,IAAI/nE,EAAQhhF,KAAK4mD,GAAKs3F,EAAW3pE,EAAMv0E,KAAK04I,OACxC12I,EAAIhC,KAAK6jC,GAAKqtH,EAAMjvJ,KAAKwF,IAAIu5E,GAC7Bj/E,EAAI/B,KAAK8jC,GAAK9jC,KAAKktJ,GAAKgE,EAAMjvJ,KAAKiG,IAAI84E,GAG3C,OAFAj3E,EAAE/H,EAAIA,EACN+H,EAAEhI,EAAIA,EACCgI,CACT,EA2CE85G,QAvCK,SAAiB95G,GAGtB,IAAIuzI,EAAK4T,EAAKt8E,EAAKL,EAFnBxqE,EAAE/H,GAAKhC,KAAK6jC,GACZ95B,EAAEhI,EAAI/B,KAAKktJ,GAAKnjJ,EAAEhI,EAAI/B,KAAK8jC,GAEvB9jC,KAAK4mD,IAAM,GACbsqG,EAAMjvJ,KAAKuF,KAAKuC,EAAE/H,EAAI+H,EAAE/H,EAAI+H,EAAEhI,EAAIgI,EAAEhI,GACpCu7I,EAAM,IAGN4T,GAAOjvJ,KAAKuF,KAAKuC,EAAE/H,EAAI+H,EAAE/H,EAAI+H,EAAEhI,EAAIgI,EAAEhI,GACrCu7I,GAAO,GAET,IAAIt8D,EAAQ,EAKZ,OAJY,IAARkwE,IACFlwE,EAAQ/+E,KAAK2H,MAAM0zI,EAAMvzI,EAAE/H,EAAGs7I,EAAMvzI,EAAEhI,IAGpC/B,KAAKs8I,QACP/nE,EAAM2pE,EAAWl+I,KAAK04I,MAAQ13D,EAAQhhF,KAAK4mD,IAC3CguB,EAAMs+E,GAAWlzJ,KAAKyM,EAAIykJ,EAAMlxJ,KAAKwG,GACrCuD,EAAE/H,EAAIuyE,EACNxqE,EAAEhI,EAAI6yE,EACC7qE,IAIP6qE,EAAMi+E,GADG7yJ,KAAKyM,EAAIykJ,EAAMlxJ,KAAKwG,EACbxG,KAAK0G,GAAI1G,KAAK6yI,GAAI7yI,KAAKmH,GAAInH,KAAKiyJ,IAChD19E,EAAM2pE,EAAWl+I,KAAK04I,MAAQ13D,EAAQhhF,KAAK4mD,IAC3C78C,EAAE/H,EAAIuyE,EACNxqE,EAAEhI,EAAI6yE,EACC7qE,EAGX,EAOEs0I,MALiB,CAAC,oBAAqB,SCazC,IACEp9I,KApHK,WAELjB,KAAK+tJ,EAAI/tJ,KAAKwG,CAChB,EAkHEo9G,QAhHK,SAAiB75G,GAEtB,IAMI/H,EAAGD,EANHwyE,EAAMxqE,EAAE/H,EACR4yE,EAAM7qE,EAAEhI,EAIRsrJ,EAAOnP,EAAW3pE,EAAMv0E,KAAK04I,OAG7Bz2I,KAAK2G,IAAIgsE,IAAQuiE,IACnBn1I,EAAIhC,KAAK6jC,GAAK7jC,KAAK+tJ,EAAIV,EACvBtrJ,EAAI/B,KAAK8jC,IAEX,IAAIk9C,EAAQs0E,GAAM,EAAIrzJ,KAAK2G,IAAIgsE,EAAM3yE,KAAKmlB,MACrCnlB,KAAK2G,IAAIykJ,IAASlW,GAAWl1I,KAAK2G,IAAI3G,KAAK2G,IAAIgsE,GAAOsiE,IAAYC,KACrEn1I,EAAIhC,KAAK6jC,GAEP9hC,EADE6yE,GAAO,EACL50E,KAAK8jC,GAAK7hC,KAAKmlB,GAAKpnB,KAAK+tJ,EAAI9rJ,KAAK4F,IAAI,GAAMm5E,GAG5ChhF,KAAK8jC,GAAK7hC,KAAKmlB,GAAKpnB,KAAK+tJ,GAAK9rJ,KAAK4F,IAAI,GAAMm5E,IAIrD,IAAI2nE,EAAK,GAAM1mJ,KAAK2G,IAAK3G,KAAKmlB,GAAKimI,EAASA,EAAOprJ,KAAKmlB,IACpDsrI,EAAM/J,EAAKA,EACXuP,EAAQj2J,KAAKwF,IAAIu5E,GACjBm3E,EAAQl2J,KAAKiG,IAAI84E,GAEjBv0E,EAAI0rJ,GAASD,EAAQC,EAAQ,GAC7BC,EAAM3rJ,EAAIA,EACVH,EAAIG,GAAK,EAAIyrJ,EAAQ,GACrBG,EAAM/rJ,EAAIA,EACVgxI,EAAMr7I,KAAKmlB,GAAKpnB,KAAK+tJ,GAAKpF,GAAMl8I,EAAI4rJ,GAAOp2J,KAAKuF,KAAKkrJ,GAAOjmJ,EAAI4rJ,IAAQ5rJ,EAAI4rJ,IAAQA,EAAM3F,IAAQ0F,EAAMC,MAAUA,EAAM3F,GACxHrF,EAAO,IACT/P,GAAOA,GAETt7I,EAAIhC,KAAK6jC,GAAKy5G,EAEd,IAAI+W,EAAI3B,EAAMjmJ,EAYd,OAXA6wI,EAAMr7I,KAAKmlB,GAAKpnB,KAAK+tJ,GAAKzhJ,EAAI+nJ,EAAI1L,EAAK1mJ,KAAKuF,MAAM6wJ,EAAM3F,IAAQA,EAAM,GAAK2B,EAAIA,KAAOgE,EAAM3F,GAG1F3wJ,EAFE6yE,GAAO,EAEL50E,KAAK8jC,GAAKw5G,EAIVt9I,KAAK8jC,GAAKw5G,EAEhBvzI,EAAE/H,EAAIA,EACN+H,EAAEhI,EAAIA,EACCgI,CACT,EA4DE85G,QAxDK,SAAiB95G,GACtB,IAAIwqE,EAAKK,EACL0jF,EAAIC,EAAIC,EAAK5xB,EAAIC,EAAI4xB,EACrB9lB,EACAhtI,EACA23I,EACAob,EA2CJ,OAtCA3uJ,EAAE/H,GAAKhC,KAAK6jC,GACZ95B,EAAEhI,GAAK/B,KAAK8jC,GACZw5G,EAAMr7I,KAAKmlB,GAAKpnB,KAAK+tJ,EAGrByK,GAFAF,EAAKvuJ,EAAE/H,EAAIs7I,GAEAgb,GADXC,EAAKxuJ,EAAEhI,EAAIu7I,GACUib,EAOrBjb,EAAQ,GAHJib,EAAKA,GADTE,GAAM,GAFN7xB,GAAM3kI,KAAK2G,IAAI2vJ,IAAO,EAAIC,IAEX,EAAI,EAAID,EAAKA,EAAKC,EAAMA,IACnB,GAFpB3xB,EAAKD,EAAK,EAAI2xB,EAAKA,EAAKD,EAAKA,GAEAzxB,EAAKA,EAAK4xB,EAAKA,EAAKA,EAAK,EAAI7xB,EAAKC,EAAK4xB,EAAKA,GAAM,KAC/E9lB,GAAM/L,EAAKC,EAAKA,EAAK,EAAI4xB,GAAMA,IAC/B9yJ,EAAK,EAAI1D,KAAKuF,MAAMmrI,EAAK,IAErB1wI,KAAK2G,IAAI00I,GAAO,IAEhBA,EADEA,GAAO,EACH,GAGC,GAGXob,EAAMz2J,KAAK6rG,KAAKwvC,GAAO,EAErB1oE,EADE7qE,EAAEhI,GAAK,IACD4D,EAAK1D,KAAKiG,IAAIwwJ,EAAMz2J,KAAKmlB,GAAK,GAAKy/G,EAAK,EAAI4xB,GAAMx2J,KAAKmlB,MAGtDzhB,EAAK1D,KAAKiG,IAAIwwJ,EAAMz2J,KAAKmlB,GAAK,GAAKy/G,EAAK,EAAI4xB,GAAMx2J,KAAKmlB,GAIhEmtD,EADEtyE,KAAK2G,IAAI0vJ,GAAMnhB,EACXn3I,KAAK04I,MAGLwF,EAAWl+I,KAAK04I,MAAQz2I,KAAKmlB,IAAMoxI,EAAM,EAAIv2J,KAAKuF,KAAK,EAAI,GAAK8wJ,EAAKA,EAAKC,EAAKA,GAAMC,EAAMA,IAAQ,EAAIF,GAG/GvuJ,EAAE/H,EAAIuyE,EACNxqE,EAAEhI,EAAI6yE,EACC7qE,CACT,EAOEs0I,MALiB,CAAC,oBAAqB,gBAAiB,UC+E1D,IACEp9I,KA5LK,WACLjB,KAAK24J,QAAU12J,KAAKwF,IAAIzH,KAAKq4I,MAC7Br4I,KAAK44J,QAAU32J,KAAKiG,IAAIlI,KAAKq4I,KAC/B,EA0LEz0B,QAxLK,SAAiB75G,GACtB,IAKIrD,EAAImsI,EAAI1rI,EAAI8qJ,EAAI4G,EAAKC,EAAIhD,EAAQiD,EAAKC,EAAIC,EAAKC,EAAIC,EAAGpwJ,EAAGqwJ,EAAIC,EAAIluJ,EAAGmuJ,EAAIC,EAAOhwJ,EAAGo+H,EAAI6xB,EAAIC,EAL1FllF,EAAMxqE,EAAE/H,EACR4yE,EAAM7qE,EAAEhI,EACRq7I,EAASn7I,KAAKwF,IAAIsC,EAAEhI,GACpBs7I,EAASp7I,KAAKiG,IAAI6B,EAAEhI,GACpBsrJ,EAAOnP,EAAW3pE,EAAMv0E,KAAK04I,OAEjC,OAAI14I,KAAKs8I,OACHr6I,KAAK2G,IAAI5I,KAAK24J,QAAU,IAAMxhB,GAEhCptI,EAAE/H,EAAIhC,KAAK6jC,GAAK7jC,KAAKwG,GAAK0wI,EAAUtiE,GAAO3yE,KAAKwF,IAAI4lJ,GACpDtjJ,EAAEhI,EAAI/B,KAAK8jC,GAAK9jC,KAAKwG,GAAK0wI,EAAUtiE,GAAO3yE,KAAKiG,IAAImlJ,GAC7CtjJ,GAEA9H,KAAK2G,IAAI5I,KAAK24J,QAAU,IAAMxhB,GAErCptI,EAAE/H,EAAIhC,KAAK6jC,GAAK7jC,KAAKwG,GAAK0wI,EAAUtiE,GAAO3yE,KAAKwF,IAAI4lJ,GACpDtjJ,EAAEhI,EAAI/B,KAAK8jC,GAAK9jC,KAAKwG,GAAK0wI,EAAUtiE,GAAO3yE,KAAKiG,IAAImlJ,GAC7CtjJ,IAIPwvJ,EAAQv5J,KAAK24J,QAAUvb,EAASp9I,KAAK44J,QAAUvb,EAASp7I,KAAKiG,IAAImlJ,GAEjEiM,GADAnuJ,EAAIlJ,KAAK6rG,KAAKyrD,IACLt3J,KAAKwF,IAAI0D,GAClBpB,EAAE/H,EAAIhC,KAAK6jC,GAAK7jC,KAAKwG,EAAI8yJ,EAAKjc,EAASp7I,KAAKwF,IAAI4lJ,GAChDtjJ,EAAEhI,EAAI/B,KAAK8jC,GAAK9jC,KAAKwG,EAAI8yJ,GAAMt5J,KAAK44J,QAAUxb,EAASp9I,KAAK24J,QAAUtb,EAASp7I,KAAKiG,IAAImlJ,IACjFtjJ,IAITrD,EAAKwrJ,GAAKlyJ,KAAKg+I,IACfnL,EAAKsf,GAAKnyJ,KAAKg+I,IACf72I,EAAKirJ,GAAKpyJ,KAAKg+I,IACfiU,EAAKI,GAAKryJ,KAAKg+I,IACX/7I,KAAK2G,IAAI5I,KAAK24J,QAAU,IAAMxhB,GAEhC0hB,EAAM74J,KAAKwG,EAAI8rJ,GAAK5rJ,EAAImsI,EAAI1rI,EAAI8qJ,EAAI/a,GACpC4hB,EAAK94J,KAAKwG,EAAI8rJ,GAAK5rJ,EAAImsI,EAAI1rI,EAAI8qJ,EAAIr9E,GACnC7qE,EAAE/H,EAAIhC,KAAK6jC,IAAMg1H,EAAMC,GAAM72J,KAAKwF,IAAI4lJ,GACtCtjJ,EAAEhI,EAAI/B,KAAK8jC,IAAM+0H,EAAMC,GAAM72J,KAAKiG,IAAImlJ,GAC/BtjJ,GAEA9H,KAAK2G,IAAI5I,KAAK24J,QAAU,IAAMxhB,GAErC0hB,EAAM74J,KAAKwG,EAAI8rJ,GAAK5rJ,EAAImsI,EAAI1rI,EAAI8qJ,EAAI/a,GACpC4hB,EAAK94J,KAAKwG,EAAI8rJ,GAAK5rJ,EAAImsI,EAAI1rI,EAAI8qJ,EAAIr9E,GACnC7qE,EAAE/H,EAAIhC,KAAK6jC,IAAMg1H,EAAMC,GAAM72J,KAAKwF,IAAI4lJ,GACtCtjJ,EAAEhI,EAAI/B,KAAK8jC,IAAM+0H,EAAMC,GAAM72J,KAAKiG,IAAImlJ,GAC/BtjJ,IAIP+rJ,EAAS1Y,EAASC,EAClB0b,EAAMtG,GAAGzyJ,KAAKwG,EAAGxG,KAAK6B,EAAG7B,KAAK24J,SAC9BK,EAAKvG,GAAGzyJ,KAAKwG,EAAGxG,KAAK6B,EAAGu7I,GACxB6b,EAAMh3J,KAAK+/G,MAAM,EAAIhiH,KAAKg+I,IAAM8X,EAAS91J,KAAKg+I,GAAK+a,EAAM/4J,KAAK24J,SAAWK,EAAK3b,IAG5E9zI,EADS,KADX2vJ,EAAKj3J,KAAK2H,MAAM3H,KAAKwF,IAAI4lJ,GAAOrtJ,KAAK44J,QAAU32J,KAAK4F,IAAIoxJ,GAAOj5J,KAAK24J,QAAU12J,KAAKiG,IAAImlJ,KAEjFprJ,KAAKmlI,KAAKpnI,KAAK44J,QAAU32J,KAAKwF,IAAIwxJ,GAAOj5J,KAAK24J,QAAU12J,KAAKiG,IAAI+wJ,IAE9Dh3J,KAAK2G,IAAI3G,KAAK2G,IAAIswJ,GAAMj3J,KAAKmlB,KAAO+vH,GACtCl1I,KAAKmlI,KAAKpnI,KAAK44J,QAAU32J,KAAKwF,IAAIwxJ,GAAOj5J,KAAK24J,QAAU12J,KAAKiG,IAAI+wJ,IAGlEh3J,KAAKmlI,KAAKnlI,KAAKwF,IAAI4lJ,GAAQprJ,KAAKiG,IAAI+wJ,GAAOh3J,KAAKwF,IAAIyxJ,IAE1DC,EAAIn5J,KAAK6B,EAAI7B,KAAK24J,QAAU12J,KAAKuF,KAAK,EAAIxH,KAAKg+I,IAQ/C7yI,EAAI4tJ,EAAMxvJ,GAAK,GAJfo+H,EAAKp+H,EAAIA,IADT8vJ,GAFAtwJ,EAAI/I,KAAK6B,EAAI7B,KAAK44J,QAAU32J,KAAKiG,IAAIgxJ,GAAMj3J,KAAKuF,KAAK,EAAIxH,KAAKg+I,KAErDj1I,IAKqB,EAAIswJ,GAAM,GAHxCG,EAAK7xB,EAAKp+H,GAGuC,GANjD6vJ,EAAKD,EAAIpwJ,IAMkD,EAAI,EAAIswJ,IAFnEI,EAAKD,EAAKjwJ,GAEoE,KAAO8vJ,GAAM,EAAI,EAAIA,GAAM,EAAIF,EAAIA,GAAK,EAAI,EAAIE,IADzHI,EAAKlwJ,EACgI,GAAK6vJ,GAC/IrvJ,EAAE/H,EAAIhC,KAAK6jC,GAAK14B,EAAIlJ,KAAKwF,IAAIyxJ,GAC7BnvJ,EAAEhI,EAAI/B,KAAK8jC,GAAK34B,EAAIlJ,KAAKiG,IAAIgxJ,GACtBnvJ,GAKb,EAsGE85G,QApGK,SAAiB95G,GAGtB,IAAImjJ,EAAI3zH,EAAGs7H,EAAMD,EAAMrgF,EAAKK,EAAK0oE,EAAK52I,EAAImsI,EAAI1rI,EAAI8qJ,EAAI4G,EAAQ/S,EAAImT,EAAKC,EAAIQ,EAAOhvH,EAAK84G,EAAG6F,EAAGnD,EAAGyT,EAAIC,EACpG,GAHA7vJ,EAAE/H,GAAKhC,KAAK6jC,GACZ95B,EAAEhI,GAAK/B,KAAK8jC,GAER9jC,KAAKs8I,OAAQ,CAEf,IADA4Q,EAAKjrJ,KAAKuF,KAAKuC,EAAE/H,EAAI+H,EAAE/H,EAAI+H,EAAEhI,EAAIgI,EAAEhI,IACzB,EAAIm1I,EAAUl3I,KAAKwG,EAC3B,OAoCF,OAlCA+yB,EAAI2zH,EAAKltJ,KAAKwG,EAEdquJ,EAAO5yJ,KAAKwF,IAAI8xB,GAChBq7H,EAAO3yJ,KAAKiG,IAAIqxB,GAEhBg7C,EAAMv0E,KAAK04I,MACPz2I,KAAK2G,IAAIskJ,IAAO/V,EAClBviE,EAAM50E,KAAKq4I,MAGXzjE,EAAM0gF,GAAMV,EAAO50J,KAAK24J,QAAW5uJ,EAAEhI,EAAI8yJ,EAAO70J,KAAK44J,QAAW1L,GAChE5P,EAAMr7I,KAAK2G,IAAI5I,KAAKq4I,MAAQnB,EAGxB3iE,EAFAtyE,KAAK2G,IAAI00I,IAAQnG,EACfn3I,KAAKq4I,MAAQ,EACT6F,EAAWl+I,KAAK04I,MAAQz2I,KAAK2H,MAAMG,EAAE/H,GAAK+H,EAAEhI,IAG5Cm8I,EAAWl+I,KAAK04I,MAAQz2I,KAAK2H,OAAOG,EAAE/H,EAAG+H,EAAEhI,IAW7Cm8I,EAAWl+I,KAAK04I,MAAQz2I,KAAK2H,MAAMG,EAAE/H,EAAI6yJ,EAAM3H,EAAKltJ,KAAK44J,QAAUhE,EAAO7qJ,EAAEhI,EAAI/B,KAAK24J,QAAU9D,KAIzG9qJ,EAAE/H,EAAIuyE,EACNxqE,EAAEhI,EAAI6yE,EACC7qE,CACT,CAME,OAJArD,EAAKwrJ,GAAKlyJ,KAAKg+I,IACfnL,EAAKsf,GAAKnyJ,KAAKg+I,IACf72I,EAAKirJ,GAAKpyJ,KAAKg+I,IACfiU,EAAKI,GAAKryJ,KAAKg+I,IACX/7I,KAAK2G,IAAI5I,KAAK24J,QAAU,IAAMxhB,GAKhCviE,EAAMi+E,KAHNgG,EAAM74J,KAAKwG,EAAI8rJ,GAAK5rJ,EAAImsI,EAAI1rI,EAAI8qJ,EAAI/a,KACpCgW,EAAKjrJ,KAAKuF,KAAKuC,EAAE/H,EAAI+H,EAAE/H,EAAI+H,EAAEhI,EAAIgI,EAAEhI,KAEnB/B,KAAKwG,EAAGE,EAAImsI,EAAI1rI,EAAI8qJ,GACpC19E,EAAM2pE,EAAWl+I,KAAK04I,MAAQz2I,KAAK2H,MAAMG,EAAE/H,GAAK,EAAI+H,EAAEhI,IACtDgI,EAAE/H,EAAIuyE,EACNxqE,EAAEhI,EAAI6yE,EACC7qE,GAEA9H,KAAK2G,IAAI5I,KAAK24J,QAAU,IAAMxhB,GAErC0hB,EAAM74J,KAAKwG,EAAI8rJ,GAAK5rJ,EAAImsI,EAAI1rI,EAAI8qJ,EAAI/a,GAIpCtiE,EAAMi+E,KAHN3F,EAAKjrJ,KAAKuF,KAAKuC,EAAE/H,EAAI+H,EAAE/H,EAAI+H,EAAEhI,EAAIgI,EAAEhI,IAC1B82J,GAEO74J,KAAKwG,EAAGE,EAAImsI,EAAI1rI,EAAI8qJ,GACpC19E,EAAM2pE,EAAWl+I,KAAK04I,MAAQz2I,KAAK2H,MAAMG,EAAE/H,EAAG+H,EAAEhI,IAChDgI,EAAE/H,EAAIuyE,EACNxqE,EAAEhI,EAAI6yE,EACC7qE,IAIPmjJ,EAAKjrJ,KAAKuF,KAAKuC,EAAE/H,EAAI+H,EAAE/H,EAAI+H,EAAEhI,EAAIgI,EAAEhI,GACnCm3J,EAAKj3J,KAAK2H,MAAMG,EAAE/H,EAAG+H,EAAEhI,GACvB+jJ,EAAK2M,GAAGzyJ,KAAKwG,EAAGxG,KAAK6B,EAAG7B,KAAK24J,SAC7Be,EAAQz3J,KAAKiG,IAAIgxJ,GAEjB1V,IADA94G,EAAM1qC,KAAK6B,EAAI7B,KAAK44J,QAAUc,GACnBhvH,GAAO,EAAI1qC,KAAKg+I,IAC3BqL,EAAI,EAAIrpJ,KAAKg+I,IAAM,EAAIwF,GAAKxjJ,KAAK24J,QAAU34J,KAAK44J,QAAUc,GAAS,EAAI15J,KAAKg+I,IAG5E4b,EAAI,EAAIpW,GADRmW,GADAzT,EAAIgH,EAAKpH,GACAtC,GAAK,EAAIA,GAAKvhJ,KAAKI,IAAI6jJ,EAAG,GAAK,EAAImD,GAAK,EAAI,EAAI7F,GAAKvhJ,KAAKI,IAAI6jJ,EAAG,GAAK,IAC9DyT,EAAK,EAAIzT,EAAIyT,EAAKA,EAAKA,EAAK,EAC7CV,EAAMh3J,KAAKmlI,KAAKpnI,KAAK24J,QAAU12J,KAAKiG,IAAIyxJ,GAAM35J,KAAK44J,QAAU32J,KAAKwF,IAAIkyJ,GAAMD,GAC5EnlF,EAAM2pE,EAAWl+I,KAAK04I,MAAQz2I,KAAKmlI,KAAKnlI,KAAKwF,IAAIyxJ,GAAMj3J,KAAKwF,IAAIkyJ,GAAM13J,KAAKiG,IAAI+wJ,KAC/ErkF,EAAM3yE,KAAK+/G,MAAM,EAAIhiH,KAAKg+I,GAAK4b,EAAI55J,KAAK24J,QAAU12J,KAAKwF,IAAIwxJ,IAAQh3J,KAAK4F,IAAIoxJ,IAAQ,EAAIj5J,KAAKg+I,KAC7Fj0I,EAAE/H,EAAIuyE,EACNxqE,EAAEhI,EAAI6yE,EACC7qE,EAIb,EAOEs0I,MALiB,CAAC,wBAAyB,SCnH7C,IACEp9I,KAlFK,WAKLjB,KAAKw1J,QAAUvzJ,KAAKwF,IAAIzH,KAAKq4I,MAC7Br4I,KAAKy1J,QAAUxzJ,KAAKiG,IAAIlI,KAAKq4I,KAC/B,EA4EEz0B,QAxEK,SAAiB75G,GACtB,IAAIqzI,EAAQC,EACRgQ,EACAsI,EAEAlpJ,EAAGzK,EAAGD,EACNwyE,EAAMxqE,EAAE/H,EACR4yE,EAAM7qE,EAAEhI,EAiBZ,OAdAsrJ,EAAOnP,EAAW3pE,EAAMv0E,KAAK04I,OAE7B0E,EAASn7I,KAAKwF,IAAImtE,GAClByoE,EAASp7I,KAAKiG,IAAI0sE,GAElB+gF,EAAS1zJ,KAAKiG,IAAImlJ,KAClB5gJ,EAAIzM,KAAKw1J,QAAUpY,EAASp9I,KAAKy1J,QAAUpY,EAASsY,GAE3C,GAAO1zJ,KAAK2G,IAAI6D,IAAM0qI,KAC7Bn1I,EAFI,EAEAhC,KAAKwG,EAAU62I,EAASp7I,KAAKwF,IAAI4lJ,GACrCtrJ,EAAI/B,KAAK8jC,GAHL,EAGU9jC,KAAKwG,GAAWxG,KAAKy1J,QAAUrY,EAASp9I,KAAKw1J,QAAUnY,EAASsY,IAEhF5rJ,EAAE/H,EAAIA,EACN+H,EAAEhI,EAAIA,EACCgI,CACT,EAgDE85G,QA9CK,SAAiB95G,GACtB,IAAImjJ,EACA3zH,EACAs7H,EAAMD,EACNtX,EACA/oE,EAAKK,EAYT,OATA7qE,EAAE/H,GAAKhC,KAAK6jC,GACZ95B,EAAEhI,GAAK/B,KAAK8jC,GAEZvK,EAAI+7H,IADJpI,EAAKjrJ,KAAKuF,KAAKuC,EAAE/H,EAAI+H,EAAE/H,EAAI+H,EAAEhI,EAAIgI,EAAEhI,IACpB/B,KAAKwG,GAEpBquJ,EAAO5yJ,KAAKwF,IAAI8xB,GAChBq7H,EAAO3yJ,KAAKiG,IAAIqxB,GAEhBg7C,EAAMv0E,KAAK04I,MACPz2I,KAAK2G,IAAIskJ,IAAO/V,GAClBviE,EAAM50E,KAAKq4I,KACXtuI,EAAE/H,EAAIuyE,EACNxqE,EAAEhI,EAAI6yE,EACC7qE,IAET6qE,EAAM0gF,GAAMV,EAAO50J,KAAKw1J,QAAWzrJ,EAAEhI,EAAI8yJ,EAAO70J,KAAKy1J,QAAWvI,GAChE5P,EAAMr7I,KAAK2G,IAAI5I,KAAKq4I,MAAQnB,EACxBj1I,KAAK2G,IAAI00I,IAAQnG,GAEjB5iE,EADEv0E,KAAKq4I,MAAQ,EACT6F,EAAWl+I,KAAK04I,MAAQz2I,KAAK2H,MAAMG,EAAE/H,GAAK+H,EAAEhI,IAG5Cm8I,EAAWl+I,KAAK04I,MAAQz2I,KAAK2H,OAAOG,EAAE/H,EAAG+H,EAAEhI,IAEnDgI,EAAE/H,EAAIuyE,EACNxqE,EAAEhI,EAAI6yE,EACC7qE,IAETwqE,EAAM2pE,EAAWl+I,KAAK04I,MAAQz2I,KAAK2H,MAAOG,EAAE/H,EAAI6yJ,EAAO3H,EAAKltJ,KAAKy1J,QAAUb,EAAO7qJ,EAAEhI,EAAI/B,KAAKw1J,QAAUX,IACvG9qJ,EAAE/H,EAAIuyE,EACNxqE,EAAEhI,EAAI6yE,EACC7qE,GACT,EAOEs0I,MALiB,CAAC,UC9EpB,IASIwb,GACQ,EADRA,GAEQ,EAFRA,GAGQ,EAHRA,GAIQ,EAmTZ,SAASC,GAAyBtc,EAAKz7I,EAAGC,EAAG84C,GAC3C,IAAIkmC,EAmBJ,OAlBIw8D,EAAMrG,GACRr8F,EAAKp6C,MAAQm5J,GACb74E,EAAQ,IAERA,EAAQ/+E,KAAK2H,MAAM7H,EAAGC,GAClBC,KAAK2G,IAAIo4E,IAAUs2D,EACrBx8F,EAAKp6C,MAAQm5J,GACJ74E,EAAQs2D,GAAUt2D,GAASk2D,EAAUI,GAC9Cx8F,EAAKp6C,MAAQm5J,GACb74E,GAASk2D,GACAl2D,EAAQk2D,EAAUI,GAAUt2D,KAAWk2D,EAAUI,IAC1Dx8F,EAAKp6C,MAAQm5J,GACb74E,EAASA,GAAS,EAAMA,EAAQw2D,EAAMx2D,EAAQw2D,IAE9C18F,EAAKp6C,MAAQm5J,GACb74E,GAASk2D,IAGNl2D,CACT,CAGA,SAAS+4E,GAAqBxlF,EAAKnzC,GACjC,IAAI44H,EAAOzlF,EAAMnzC,EAMjB,OALI44H,GAAQxiB,EACVwiB,GAAQziB,EACCyiB,GAAQxiB,IACjBwiB,GAAQziB,GAEHyiB,CACT,CAGA,UACE/4J,KApVK,WAELjB,KAAK6jC,GAAK7jC,KAAK6jC,IAAM,EACrB7jC,KAAK8jC,GAAK9jC,KAAK8jC,IAAM,EACrB9jC,KAAKq4I,KAAOr4I,KAAKq4I,MAAQ,EACzBr4I,KAAK04I,MAAQ14I,KAAK04I,OAAS,EAC3B14I,KAAKw4I,OAASx4I,KAAKw4I,QAAU,EAC7Bx4I,KAAKmlB,MAAQnlB,KAAKmlB,OAAS,mCAGvBnlB,KAAKq4I,MAAQnB,EAAUI,EAAS,EAClCt3I,KAAKi6J,KAtBA,EAuBIj6J,KAAKq4I,QAAUnB,EAAUI,EAAS,GAC3Ct3I,KAAKi6J,KAvBG,EAwBCh4J,KAAK2G,IAAI5I,KAAK04I,QAAUpB,EACjCt3I,KAAKi6J,KA9BE,EA+BEh4J,KAAK2G,IAAI5I,KAAK04I,QAAUxB,EAAUI,EAC3Ct3I,KAAKi6J,KAAOj6J,KAAK04I,MAAQ,EA/BlB,EAED,EA+BN14I,KAAKi6J,KAhCC,EAqCQ,IAAZj6J,KAAKg+I,KACPh+I,KAAKk6J,YAAc,GAAKl6J,KAAKwG,EAAIxG,KAAKyG,GAAKzG,KAAKwG,EAChDxG,KAAKm6J,oBAAsBn6J,KAAKk6J,YAAcl6J,KAAKk6J,YAEvD,EAyTEt2C,QArTK,SAAiB75G,GACtB,IACI6qE,EAAKL,EACLyM,EAAOw8D,EACPlzI,EAAG87I,EAHHgU,EAAK,CAACp4J,EAAG,EAAGD,EAAG,GAKf+4C,EAAO,CAACp6C,MAAO,GAoBnB,GAjBAqJ,EAAE/H,GAAKhC,KAAK04I,MAMV9jE,EADc,IAAZ50E,KAAKg+I,GACD/7I,KAAK+/G,KAAKhiH,KAAKm6J,oBAAsBl4J,KAAK4F,IAAIkC,EAAEhI,IAEhDgI,EAAEhI,EAQVwyE,EAAMxqE,EAAE/H,EApED,IAqEHhC,KAAKi6J,KACPzc,EAAMtG,EAAUtiE,EACZL,GAAO+iE,GAAU/iE,GAAO2iE,EAAUI,GACpCx8F,EAAKp6C,MAAQm5J,GACb74E,EAAQzM,EAAM2iE,GACL3iE,EAAM2iE,EAAUI,GAAU/iE,KAAS2iE,EAAUI,IACtDx8F,EAAKp6C,MAAQm5J,GACb74E,EAASzM,EAAM,EAAMA,EAAMijE,EAAMjjE,EAAMijE,GAC9BjjE,IAAQ2iE,EAAUI,IAAW/iE,IAAQ+iE,GAC9Cx8F,EAAKp6C,MAAQm5J,GACb74E,EAAQzM,EAAM2iE,IAEdp8F,EAAKp6C,MAAQm5J,GACb74E,EAAQzM,QAEL,GAnFG,IAmFCv0E,KAAKi6J,KACdzc,EAAMtG,EAAUtiE,EACZL,GAAO+iE,GAAU/iE,GAAO2iE,EAAUI,GACpCx8F,EAAKp6C,MAAQm5J,GACb74E,GAASzM,EAAM2iE,GACN3iE,EAAM+iE,GAAU/iE,IAAQ+iE,GACjCx8F,EAAKp6C,MAAQm5J,GACb74E,GAASzM,GACAA,GAAO+iE,GAAU/iE,KAAS2iE,EAAUI,IAC7Cx8F,EAAKp6C,MAAQm5J,GACb74E,GAASzM,EAAM2iE,IAEfp8F,EAAKp6C,MAAQm5J,GACb74E,EAASzM,EAAM,GAAOA,EAAMijE,GAAOjjE,EAAMijE,OAEtC,CACL,IAAI6c,EAAGvkJ,EAAGvG,EACN4jJ,EAAQC,EACRiN,EAzGG,IA2GHr6J,KAAKi6J,KACP1lF,EAAMwlF,GAAqBxlF,GAAM2iE,GA3G7B,IA4GKl3I,KAAKi6J,KACd1lF,EAAMwlF,GAAqBxlF,GAAMijE,GA5G7B,IA6GKx3I,KAAKi6J,OACd1lF,EAAMwlF,GAAqBxlF,GAAM2iE,IAEnCiW,EAASlrJ,KAAKwF,IAAImtE,GAClBw4E,EAASnrJ,KAAKiG,IAAI0sE,GAClBylF,EAASp4J,KAAKwF,IAAI8sE,GAElB8/E,EAAIjH,EADKnrJ,KAAKiG,IAAIqsE,GAElBzkE,EAAIs9I,EAASiN,EACb9wJ,EAAI4jJ,EAzHG,IA2HHntJ,KAAKi6J,KAEPj5E,EAAQ84E,GADRtc,EAAMv7I,KAAK6rG,KAAKumD,GACsB9qJ,EAAGuG,EAAGgrC,GA5HvC,IA6HI96C,KAAKi6J,KAEdj5E,EAAQ84E,GADRtc,EAAMv7I,KAAK6rG,KAAKh+F,GACsBvG,GAAI8qJ,EAAGv5G,GA9HzC,IA+HK96C,KAAKi6J,KAEdj5E,EAAQ84E,GADRtc,EAAMv7I,KAAK6rG,MAAMumD,GACqB9qJ,GAAIuG,EAAGgrC,GAhIzC,IAiIK96C,KAAKi6J,KAEdj5E,EAAQ84E,GADRtc,EAAMv7I,KAAK6rG,MAAMh+F,GACqBvG,EAAG8qJ,EAAGv5G,IAG5C0iG,EAAMx8D,EAAQ,EACdlmC,EAAKp6C,MAAQm5J,GAEjB,CAyBA,OApBAzT,EAAKnkJ,KAAK+/G,KAAM,GAAKw1B,GAAQx2D,EAAQ/+E,KAAK6rG,KAAK7rG,KAAKwF,IAAIu5E,GAAS/+E,KAAKiG,IAAIovI,IAAWJ,IACrF5sI,EAAIrI,KAAKuF,MAAM,EAAIvF,KAAKiG,IAAIs1I,KAASv7I,KAAKiG,IAAIk+I,GAAMnkJ,KAAKiG,IAAIk+I,KAAQ,EAAInkJ,KAAKiG,IAAIjG,KAAK+/G,KAAK,EAAI//G,KAAKiG,IAAI84E,OAGrGlmC,EAAKp6C,QAAUm5J,GACjBzT,GAAMlP,EACGp8F,EAAKp6C,QAAUm5J,GACxBzT,GAAM5O,EACG18F,EAAKp6C,QAAUm5J,KACxBzT,GAAM,IAAM5O,GAId4iB,EAAGp4J,EAAIsI,EAAIrI,KAAKiG,IAAIk+I,GACpBgU,EAAGr4J,EAAIuI,EAAIrI,KAAKwF,IAAI2+I,GACpBgU,EAAGp4J,EAAIo4J,EAAGp4J,EAAIhC,KAAKwG,EAAIxG,KAAK6jC,GAC5Bu2H,EAAGr4J,EAAIq4J,EAAGr4J,EAAI/B,KAAKwG,EAAIxG,KAAK8jC,GAE5B/5B,EAAE/H,EAAIo4J,EAAGp4J,EACT+H,EAAEhI,EAAIq4J,EAAGr4J,EACFgI,CACT,EA+LE85G,QA3LK,SAAiB95G,GACtB,IACIq8I,EAAI7+I,EAAI+yJ,EAAOC,EACfC,EAAUx5E,EAAOq8D,EAAQG,EACzBlzI,EA8HEmwJ,EACA3E,EAAQ4E,EAlIVC,EAAK,CAACpI,IAAK,EAAG/U,IAAK,GAInB1iG,EAAO,CAACp6C,MAAO,GA4CnB,GAzCAqJ,EAAE/H,GAAK+H,EAAE/H,EAAIhC,KAAK6jC,IAAM7jC,KAAKwG,EAC7BuD,EAAEhI,GAAKgI,EAAEhI,EAAI/B,KAAK8jC,IAAM9jC,KAAKwG,EAI7Be,EAAKtF,KAAK+/G,KAAK//G,KAAKuF,KAAKuC,EAAE/H,EAAI+H,EAAE/H,EAAI+H,EAAEhI,EAAIgI,EAAEhI,IAC7CqkJ,EAAKnkJ,KAAK2H,MAAMG,EAAEhI,EAAGgI,EAAE/H,GACnB+H,EAAE/H,GAAK,GAAO+H,EAAE/H,GAAKC,KAAK2G,IAAImB,EAAEhI,GAClC+4C,EAAKp6C,MAAQm5J,GACJ9vJ,EAAEhI,GAAK,GAAOgI,EAAEhI,GAAKE,KAAK2G,IAAImB,EAAE/H,IACzC84C,EAAKp6C,MAAQm5J,GACbzT,GAAMlP,GACGntI,EAAE/H,EAAI,IAAQ+H,EAAE/H,GAAKC,KAAK2G,IAAImB,EAAEhI,IACzC+4C,EAAKp6C,MAAQm5J,GACbzT,EAAMA,EAAK,EAAMA,EAAK5O,EAAM4O,EAAK5O,IAEjC18F,EAAKp6C,MAAQm5J,GACbzT,GAAMlP,GAQR5sI,EAAKktI,EAAM,GAAMv1I,KAAK4F,IAAIu+I,GAC1BoU,EAAWv4J,KAAKwF,IAAI6C,IAAMrI,KAAKiG,IAAIoC,GAAM,EAAIrI,KAAKuF,KAAK,IACvDw5E,EAAQ/+E,KAAK+/G,KAAKw4C,IAGlBnd,EAAS,GAFTid,EAAQr4J,KAAKiG,IAAIk+I,IAEIkU,GADrBC,EAAQt4J,KAAK4F,IAAIN,IACoBgzJ,GAAS,EAAIt4J,KAAKiG,IAAIjG,KAAK+/G,KAAK,EAAI//G,KAAKiG,IAAI84E,QACpE,EACZq8D,GAAU,EACDA,EAAS,IAClBA,EAAS,GAhNJ,IAuNHr9I,KAAKi6J,KACPzc,EAAMv7I,KAAK6rG,KAAKuvC,GAChBsd,EAAGnd,IAAMtG,EAAUsG,EACf1iG,EAAKp6C,QAAUm5J,GACjBc,EAAGpI,IAAMvxE,EAAQk2D,EACRp8F,EAAKp6C,QAAUm5J,GACxBc,EAAGpI,IAAOvxE,EAAQ,EAAMA,EAAQw2D,EAAMx2D,EAAQw2D,EACrC18F,EAAKp6C,QAAUm5J,GACxBc,EAAGpI,IAAMvxE,EAAQk2D,EAEjByjB,EAAGpI,IAAMvxE,OAEN,GAlOG,IAkOChhF,KAAKi6J,KACdzc,EAAMv7I,KAAK6rG,KAAKuvC,GAChBsd,EAAGnd,IAAMA,EAAMtG,EACXp8F,EAAKp6C,QAAUm5J,GACjBc,EAAGpI,KAAOvxE,EAAQk2D,EACTp8F,EAAKp6C,QAAUm5J,GACxBc,EAAGpI,KAAOvxE,EACDlmC,EAAKp6C,QAAUm5J,GACxBc,EAAGpI,KAAOvxE,EAAQk2D,EAElByjB,EAAGpI,IAAOvxE,EAAQ,GAAOA,EAAQw2D,GAAOx2D,EAAQw2D,MAE7C,CAEL,IAAI6c,EAAGvkJ,EAAGvG,EAEVe,GADA+pJ,EAAIhX,GACIgX,EAQNvkJ,GAFFxF,IAJEf,EADEe,GAAK,EACH,EAEArI,KAAKuF,KAAK,EAAI8C,GAAKrI,KAAKwF,IAAIu5E,IAEzBz3E,IACA,EACH,EAEAtH,KAAKuF,KAAK,EAAI8C,GAGhBwwC,EAAKp6C,QAAUm5J,IACjBvvJ,EAAIwF,EACJA,GAAKvG,EACLA,EAAIe,GACKwwC,EAAKp6C,QAAUm5J,IACxB/pJ,GAAKA,EACLvG,GAAKA,GACIuxC,EAAKp6C,QAAUm5J,KACxBvvJ,EAAIwF,EACJA,EAAIvG,EACJA,GAAKe,GA7QA,IAgRHtK,KAAKi6J,MACP3vJ,EAAI+pJ,EACJA,GAAKvkJ,EACLA,EAAIxF,GAlRA,IAmRKtK,KAAKi6J,MACd5F,GAAKA,EACLvkJ,GAAKA,GApRD,IAqRK9P,KAAKi6J,OACd3vJ,EAAI+pJ,EACJA,EAAIvkJ,EACJA,GAAKxF,GAGPqwJ,EAAGnd,IAAMv7I,KAAK6rG,MAAMvkG,GAAK2tI,EACzByjB,EAAGpI,IAAMtwJ,KAAK2H,MAAMkG,EAAGukJ,GA9RhB,IA+RHr0J,KAAKi6J,KACPU,EAAGpI,IAAMwH,GAAqBY,EAAGpI,KAAMrb,GA/RnC,IAgSKl3I,KAAKi6J,KACdU,EAAGpI,IAAMwH,GAAqBY,EAAGpI,KAAM/a,GAhSnC,IAiSKx3I,KAAKi6J,OACdU,EAAGpI,IAAMwH,GAAqBY,EAAGpI,KAAMrb,GAE3C,CAmBA,OAfgB,IAAZl3I,KAAKg+I,KAGPyc,EAAeE,EAAGnd,IAAM,EAAI,EAAI,EAChCsY,EAAS7zJ,KAAK4F,IAAI8yJ,EAAGnd,KACrBkd,EAAK16J,KAAKyG,EAAIxE,KAAKuF,KAAKsuJ,EAASA,EAAS91J,KAAKm6J,qBAC/CQ,EAAGnd,IAAMv7I,KAAK+/G,KAAK//G,KAAKuF,KAAKxH,KAAKwG,EAAIxG,KAAKwG,EAAIk0J,EAAKA,IAAO16J,KAAKk6J,YAAcQ,IAC1ED,IACFE,EAAGnd,KAAOmd,EAAGnd,MAIjBmd,EAAGpI,KAAOvyJ,KAAK04I,MACf3uI,EAAE/H,EAAI24J,EAAGpI,IACTxoJ,EAAEhI,EAAI44J,EAAGnd,IACFzzI,CACT,EA2CEs0I,MALiB,CAAC,mCAAoC,mCAAoC,QCjW5F,IAAIuc,GAAU,CACV,CAAC,EAAQ,WAAa,WAAa,WACnC,CAAC,OAAS,WAAc,UAAa,WACrC,CAAC,OAAS,UAAa,YAAc,YACrC,CAAC,KAAS,WAAa,SAAY,WACnC,CAAC,OAAS,WAAa,YAAc,YACrC,CAAC,MAAS,WAAa,WAAa,WACpC,CAAC,KAAS,WAAa,WAAa,YACpC,CAAC,OAAS,WAAa,YAAc,WACrC,CAAC,OAAS,WAAa,SAAY,YACnC,CAAC,OAAS,WAAa,YAAc,YACrC,CAAC,OAAS,WAAa,UAAa,YACpC,CAAC,MAAS,WAAa,WAAa,YACpC,CAAC,OAAS,WAAa,WAAa,YACpC,CAAC,OAAS,WAAa,UAAa,YACpC,CAAC,OAAS,WAAa,YAAc,WACrC,CAAC,OAAS,WAAa,UAAa,YACpC,CAAC,OAAS,QAAU,WAAa,YACjC,CAAC,OAAS,UAAY,OAAU,YAChC,CAAC,OAAS,UAAY,UAAa,aAGnCC,GAAU,CACV,EAAE,WAAa,MAAQ,YAAc,YACrC,CAAC,KAAQ,OAAS,WAAa,aAC/B,CAAC,KAAQ,MAAQ,YAAc,YAC/B,CAAC,KAAQ,UAAY,WAAa,YAClC,CAAC,KAAQ,SAAW,YAAc,SAClC,CAAC,IAAQ,UAAY,WAAa,YAClC,CAAC,KAAQ,SAAW,YAAc,YAClC,CAAC,KAAQ,UAAY,YAAc,YACnC,CAAC,MAAQ,UAAY,YAAc,YACnC,CAAC,MAAQ,UAAY,YAAc,YACnC,CAAC,MAAQ,UAAY,YAAc,YACnC,CAAC,MAAQ,SAAW,YAAc,YAClC,CAAC,MAAQ,UAAY,YAAc,YACnC,CAAC,MAAQ,UAAY,YAAc,YACnC,CAAC,MAAQ,UAAY,UAAa,YAClC,CAAC,MAAQ,WAAa,UAAa,SACnC,CAAC,MAAQ,WAAa,WAAc,WACpC,CAAC,MAAQ,WAAa,QAAW,WACjC,CAAC,EAAQ,WAAa,WAAc,YAGpCC,GAAM,MACNC,GAAM,OACN/U,GAAK3O,EAAI,EACT2jB,GAAM,EAAEhV,GAGRiV,GAAY,SAASC,EAAOl5J,GAC5B,OAAOk5J,EAAM,GAAKl5J,GAAKk5J,EAAM,GAAKl5J,GAAKk5J,EAAM,GAAKl5J,EAAIk5J,EAAM,IAChE,EAgGA,UACEj6J,KA/EK,WACHjB,KAAK6jC,GAAK7jC,KAAK6jC,IAAM,EACrB7jC,KAAK8jC,GAAK9jC,KAAK8jC,IAAM,EACrB9jC,KAAK04I,MAAQ14I,KAAK04I,OAAS,EAC3B14I,KAAKg+I,GAAK,EACVh+I,KAAKmlB,MAAQnlB,KAAKmlB,OAAS,UAC/B,EA0EEy+F,QAxEK,SAAiBggC,GACpB,IAAIrvE,EAAM2pE,EAAW0F,EAAG5hJ,EAAIhC,KAAK04I,OAE7BiF,EAAO17I,KAAK2G,IAAIg7I,EAAG7hJ,GACnByI,EAAIvI,KAAKC,MAAMy7I,EAAOqI,IACtBx7I,EAAI,EACJA,EAAI,EACGA,GArCH,KAsCJA,EAAI2wJ,IAGR,IAAIf,EAAK,CACLp4J,EAAGi5J,GAAUL,GAAQpwJ,GAFzBmzI,EAAOtG,GAAOsG,EAAOqd,GAAMxwJ,IAEU+pE,EACjCxyE,EAAGk5J,GAAUJ,GAAQrwJ,GAAImzI,IAQ7B,OANIiG,EAAG7hJ,EAAI,IACPq4J,EAAGr4J,GAAKq4J,EAAGr4J,GAGfq4J,EAAGp4J,EAAIo4J,EAAGp4J,EAAIhC,KAAKwG,EAAIs0J,GAAM96J,KAAK6jC,GAClCu2H,EAAGr4J,EAAIq4J,EAAGr4J,EAAI/B,KAAKwG,EAAIu0J,GAAM/6J,KAAK8jC,GAC3Bs2H,CACX,EAmDEv2C,QAjDK,SAAiBu2C,GACpB,IAAIxW,EAAK,CACL5hJ,GAAIo4J,EAAGp4J,EAAIhC,KAAK6jC,KAAO7jC,KAAKwG,EAAIs0J,IAChC/4J,EAAGE,KAAK2G,IAAIwxJ,EAAGr4J,EAAI/B,KAAK8jC,KAAO9jC,KAAKwG,EAAIu0J,KAG5C,GAAInX,EAAG7hJ,GAAK,EACR6hJ,EAAG5hJ,GAAK44J,GAAQO,IAAO,GACvBvX,EAAG7hJ,EAAIq4J,EAAGr4J,EAAI,GAAKm1I,EAAUA,MAC1B,CAEH,IAAI1sI,EAAIvI,KAAKC,MAjET,GAiEe0hJ,EAAG7hJ,GAMtB,IALIyI,EAAI,EACJA,EAAI,EACGA,GApEP,KAqEAA,EAAI2wJ,MAGJ,GAAIN,GAAQrwJ,GAAG,GAAKo5I,EAAG7hJ,IACjByI,MACC,MAAIqwJ,GAAQrwJ,EAAE,GAAG,IAAMo5I,EAAG7hJ,GAG7B,QAFEyI,CAGN,CAGJ,IAAI0wJ,EAAQL,GAAQrwJ,GAChBF,EAAI,GAAKs5I,EAAG7hJ,EAAIm5J,EAAM,KAAOL,GAAQrwJ,EAAE,GAAG,GAAK0wJ,EAAM,IAEzD5wJ,EA1ER,SAAwB8wJ,EAAMrjI,EAAOsjI,EAASC,GAE1C,IADA,IAAIt5J,EAAI+1B,EACDujI,IAASA,EAAO,CACnB,IAAIC,EAAMH,EAAKp5J,GAEf,GADAA,GAAKu5J,EACDt5J,KAAK2G,IAAI2yJ,GAuEPpkB,MAtEF,KAER,CACA,OAAOn1I,CACX,CAgEYw5J,EAAe,SAASx5J,GACxB,OAAQi5J,GAAUC,EAAOl5J,GAAK4hJ,EAAG7hJ,GA/E7B,SAASm5J,EAAOl5J,GAC5B,OAAOk5J,EAAM,GAAKl5J,GAAK,EAAIk5J,EAAM,GAAS,EAAJl5J,EAAQk5J,EAAM,GACxD,CA6EkDO,CAAUP,EAAOl5J,EAC3D,GAAGsI,EAAG6sI,EAAO,KAEbyM,EAAG5hJ,GAAKi5J,GAAUL,GAAQpwJ,GAAIF,GAC9Bs5I,EAAG7hJ,GAAK,EAAIyI,EAAIF,GAAK8sI,EACjBgjB,EAAGr4J,EAAI,IACP6hJ,EAAG7hJ,GAAK6hJ,EAAG7hJ,EAEnB,CAGA,OADA6hJ,EAAG5hJ,EAAIk8I,EAAW0F,EAAG5hJ,EAAIhC,KAAK04I,OACvBkL,CACX,EAOEvF,MALiB,CAAC,WAAY,UChIjB,IAASl4B,GChBxB,gBAAqB,QACrB,QAAau1C,EACb,SAAc,IAAI,QAAW,SAC7B,SAAc,GACd,WAAgB,GAChB,QAAa,EACb,aAAkBn0I,GAClB,QAAam8H,GACb,oBDQwBv9B,GCPJ,IDQZu1C,KAAKl5C,YAAY50G,IAAI+tJ,IAC3Bx1C,GAAMu1C,KAAKl5C,YAAY50G,IAAI69I,IAC3BtlC,GAAMu1C,KAAKl5C,YAAY50G,IAAIi2I,IAC3B19B,GAAMu1C,KAAKl5C,YAAY50G,IAAIguJ,IAC3Bz1C,GAAMu1C,KAAKl5C,YAAY50G,IAAIiuJ,IAC3B11C,GAAMu1C,KAAKl5C,YAAY50G,IAAIkuJ,IAC3B31C,GAAMu1C,KAAKl5C,YAAY50G,IAAImuJ,IAC3B51C,GAAMu1C,KAAKl5C,YAAY50G,IAAIouJ,IAC3B71C,GAAMu1C,KAAKl5C,YAAY50G,IAAIquJ,IAC3B91C,GAAMu1C,KAAKl5C,YAAY50G,IAAIsuJ,IAC3B/1C,GAAMu1C,KAAKl5C,YAAY50G,IAAIuuJ,IAC3Bh2C,GAAMu1C,KAAKl5C,YAAY50G,IAAIwuJ,IAC3Bj2C,GAAMu1C,KAAKl5C,YAAY50G,IAAIyuJ,IAC3Bl2C,GAAMu1C,KAAKl5C,YAAY50G,IAAI0uJ,IAC3Bn2C,GAAMu1C,KAAKl5C,YAAY50G,IAAI2uJ,IAC3Bp2C,GAAMu1C,KAAKl5C,YAAY50G,IAAI4uJ,IAC3Br2C,GAAMu1C,KAAKl5C,YAAY50G,IAAI6uJ,IAC3Bt2C,GAAMu1C,KAAKl5C,YAAY50G,IAAI8uJ,IAC3Bv2C,GAAMu1C,KAAKl5C,YAAY50G,IAAI+uJ,IAC3Bx2C,GAAMu1C,KAAKl5C,YAAY50G,IAAIgvJ,IAC3Bz2C,GAAMu1C,KAAKl5C,YAAY50G,IAAIivJ,IAC3B12C,GAAMu1C,KAAKl5C,YAAY50G,IAAIkvJ,IAC3B32C,GAAMu1C,KAAKl5C,YAAY50G,IAAImvJ,IAC3B52C,GAAMu1C,KAAKl5C,YAAY50G,IAAIovJ,IAC3B72C,GAAMu1C,KAAKl5C,YAAY50G,IAAIqvJ,IAC3B92C,GAAMu1C,KAAKl5C,YAAY50G,IAAIsvJ,IChC7B,8BCnB+D58J,EAAOC,QAG9D,WAAc,aAEtB,SAAS48J,EAAYtnJ,EAAK+3D,EAAGn/D,EAAMyB,EAAOg7B,GACtCkyH,EAAgBvnJ,EAAK+3D,EAAGn/D,GAAQ,EAAGyB,GAAU2F,EAAIzS,OAAS,EAAI8nC,GAAWmyH,EAC7E,CAEA,SAASD,EAAgBvnJ,EAAK+3D,EAAGn/D,EAAMyB,EAAOg7B,GAE1C,KAAOh7B,EAAQzB,GAAM,CACjB,GAAIyB,EAAQzB,EAAO,IAAK,CACpB,IAAI3M,EAAIoO,EAAQzB,EAAO,EACnBnC,EAAIshE,EAAIn/D,EAAO,EACf8qB,EAAIt3B,KAAKN,IAAIG,GACbyH,EAAI,GAAMtH,KAAKg+G,IAAI,EAAI1mF,EAAI,GAC3B+jI,EAAK,GAAMr7J,KAAKuF,KAAK+xB,EAAIhwB,GAAKzH,EAAIyH,GAAKzH,IAAMwK,EAAIxK,EAAI,EAAI,GAAK,EAAI,GAGtEs7J,EAAgBvnJ,EAAK+3D,EAFP3rE,KAAKm7B,IAAI3uB,EAAMxM,KAAKC,MAAM0rE,EAAIthE,EAAI/C,EAAIzH,EAAIw7J,IACzCr7J,KAAK27B,IAAI1tB,EAAOjO,KAAKC,MAAM0rE,GAAK9rE,EAAIwK,GAAK/C,EAAIzH,EAAIw7J,IACrBpyH,EAC/C,CAEA,IAAI5gC,EAAIuL,EAAI+3D,GACRpjE,EAAIiE,EACJ8H,EAAIrG,EAKR,IAHAqtJ,EAAK1nJ,EAAKpH,EAAMm/D,GACZ1iC,EAAQr1B,EAAI3F,GAAQ5F,GAAK,GAAKizJ,EAAK1nJ,EAAKpH,EAAMyB,GAE3C1F,EAAI+L,GAAG,CAIV,IAHAgnJ,EAAK1nJ,EAAKrL,EAAG+L,GACb/L,IACA+L,IACO20B,EAAQr1B,EAAIrL,GAAIF,GAAK,GAAKE,IACjC,KAAO0gC,EAAQr1B,EAAIU,GAAIjM,GAAK,GAAKiM,GACrC,CAE8B,IAA1B20B,EAAQr1B,EAAIpH,GAAOnE,GAAYizJ,EAAK1nJ,EAAKpH,EAAM8H,GAG/CgnJ,EAAK1nJ,IADLU,EACarG,GAGbqG,GAAKq3D,IAAKn/D,EAAO8H,EAAI,GACrBq3D,GAAKr3D,IAAKrG,EAAQqG,EAAI,EAC9B,CACJ,CAEA,SAASgnJ,EAAK1nJ,EAAKrL,EAAG+L,GAClB,IAAIm0B,EAAM70B,EAAIrL,GACdqL,EAAIrL,GAAKqL,EAAIU,GACbV,EAAIU,GAAKm0B,CACb,CAEA,SAAS2yH,EAAe72J,EAAGC,GACvB,OAAOD,EAAIC,GAAK,EAAID,EAAIC,EAAI,EAAI,CACpC,CAEA,IAAI0pF,EAAQ,SAAeqtE,QACH,IAAfA,IAAwBA,EAAa,GAG1Cx9J,KAAKy9J,YAAcx7J,KAAKm7B,IAAI,EAAGogI,GAC/Bx9J,KAAK09J,YAAcz7J,KAAKm7B,IAAI,EAAGn7B,KAAKk/B,KAAwB,GAAnBnhC,KAAKy9J,cAC9Cz9J,KAAKG,OACT,EAgZA,SAASw9J,EAAS3nJ,EAAMzH,EAAOqvJ,GAC3B,IAAKA,EAAY,OAAOrvJ,EAAMmE,QAAQsD,GAEtC,IAAK,IAAIxL,EAAI,EAAGA,EAAI+D,EAAMnL,OAAQoH,IAC9B,GAAIozJ,EAAS5nJ,EAAMzH,EAAM/D,IAAO,OAAOA,EAE3C,OAAQ,CACZ,CAGA,SAASqzJ,EAAS7nH,EAAM8nH,GACpBC,EAAS/nH,EAAM,EAAGA,EAAKI,SAAShzC,OAAQ06J,EAAQ9nH,EACpD,CAGA,SAAS+nH,EAAS/nH,EAAM43B,EAAG7jE,EAAG+zJ,EAAQE,GAC7BA,IAAYA,EAAWC,EAAW,OACvCD,EAAS5hI,KAAO3C,IAChBukI,EAAS1hI,KAAO7C,IAChBukI,EAAS3hI,MAAO,IAChB2hI,EAASzhI,MAAO,IAEhB,IAAK,IAAI/xB,EAAIojE,EAAGpjE,EAAIT,EAAGS,IAAK,CACxB,IAAI+7C,EAAQvQ,EAAKI,SAAS5rC,GAC1BsJ,EAAOkqJ,EAAUhoH,EAAKkoH,KAAOJ,EAAOv3G,GAASA,EACjD,CAEA,OAAOy3G,CACX,CAEA,SAASlqJ,EAAOtN,EAAGC,GAKf,OAJAD,EAAE41B,KAAOn6B,KAAK27B,IAAIp3B,EAAE41B,KAAM31B,EAAE21B,MAC5B51B,EAAE81B,KAAOr6B,KAAK27B,IAAIp3B,EAAE81B,KAAM71B,EAAE61B,MAC5B91B,EAAE61B,KAAOp6B,KAAKm7B,IAAI52B,EAAE61B,KAAM51B,EAAE41B,MAC5B71B,EAAE+1B,KAAOt6B,KAAKm7B,IAAI52B,EAAE+1B,KAAM91B,EAAE81B,MACrB/1B,CACX,CAEA,SAAS23J,EAAgB33J,EAAGC,GAAK,OAAOD,EAAE41B,KAAO31B,EAAE21B,IAAM,CACzD,SAASgiI,EAAgB53J,EAAGC,GAAK,OAAOD,EAAE81B,KAAO71B,EAAE61B,IAAM,CAEzD,SAAS+hI,EAAS73J,GAAO,OAAQA,EAAE61B,KAAO71B,EAAE41B,OAAS51B,EAAE+1B,KAAO/1B,EAAE81B,KAAO,CACvE,SAASgiI,EAAW93J,GAAK,OAAQA,EAAE61B,KAAO71B,EAAE41B,MAAS51B,EAAE+1B,KAAO/1B,EAAE81B,KAAO,CAiBvE,SAAS9vB,EAAShG,EAAGC,GACjB,OAAOD,EAAE41B,MAAQ31B,EAAE21B,MACZ51B,EAAE81B,MAAQ71B,EAAE61B,MACZ71B,EAAE41B,MAAQ71B,EAAE61B,MACZ51B,EAAE81B,MAAQ/1B,EAAE+1B,IACvB,CAEA,SAASI,EAAWn2B,EAAGC,GACnB,OAAOA,EAAE21B,MAAQ51B,EAAE61B,MACZ51B,EAAE61B,MAAQ91B,EAAE+1B,MACZ91B,EAAE41B,MAAQ71B,EAAE41B,MACZ31B,EAAE81B,MAAQ/1B,EAAE81B,IACvB,CAEA,SAAS2hI,EAAW7nH,GAChB,MAAO,CACHA,SAAUA,EACVnlC,OAAQ,EACRitJ,MAAM,EACN9hI,KAAM3C,IACN6C,KAAM7C,IACN4C,MAAM,IACNE,MAAM,IAEd,CAKA,SAASgiI,EAAY1oJ,EAAKpH,EAAMyB,EAAOpO,EAAGopC,GAGtC,IAFA,IAAI0hC,EAAQ,CAACn+D,EAAMyB,GAEZ08D,EAAMxpE,QAIT,MAHA8M,EAAQ08D,EAAM34D,QACdxF,EAAOm+D,EAAM34D,QAEOnS,GAApB,CAEA,IAAIkoC,EAAMv7B,EAAOxM,KAAKk/B,MAAMjxB,EAAQzB,GAAQ3M,EAAI,GAAKA,EACrDq7J,EAAYtnJ,EAAKm0B,EAAKv7B,EAAMyB,EAAOg7B,GAEnC0hC,EAAMt6D,KAAK7D,EAAMu7B,EAAKA,EAAK95B,EALQ,CAO3C,CAEA,OAtfAigF,EAAMnrF,UAAU+c,IAAM,WAClB,OAAO/hB,KAAKw+J,KAAKx+J,KAAKmS,KAAM,GAChC,EAEAg+E,EAAMnrF,UAAU7B,OAAS,SAAiBwvD,GACtC,IAAI3c,EAAOh2C,KAAKmS,KACZ3S,EAAS,GAEb,IAAKm9B,EAAWg2B,EAAM3c,GAAS,OAAOx2C,EAKtC,IAHA,IAAIs+J,EAAS99J,KAAK89J,OACdW,EAAgB,GAEbzoH,GAAM,CACT,IAAK,IAAIxrC,EAAI,EAAGA,EAAIwrC,EAAKI,SAAShzC,OAAQoH,IAAK,CAC3C,IAAI+7C,EAAQvQ,EAAKI,SAAS5rC,GACtBk0J,EAAY1oH,EAAKkoH,KAAOJ,EAAOv3G,GAASA,EAExC5pB,EAAWg2B,EAAM+rG,KACb1oH,EAAKkoH,KAAQ1+J,EAAO8S,KAAKi0C,GACpB/5C,EAASmmD,EAAM+rG,GAAc1+J,KAAKw+J,KAAKj4G,EAAO/mD,GAChDi/J,EAAcnsJ,KAAKi0C,GAElC,CACAvQ,EAAOyoH,EAAcxqJ,KACzB,CAEA,OAAOzU,CACX,EAEA2wF,EAAMnrF,UAAUyxG,SAAW,SAAmB9jD,GAC1C,IAAI3c,EAAOh2C,KAAKmS,KAEhB,IAAKwqB,EAAWg2B,EAAM3c,GAAS,OAAO,EAGtC,IADA,IAAIyoH,EAAgB,GACbzoH,GAAM,CACT,IAAK,IAAIxrC,EAAI,EAAGA,EAAIwrC,EAAKI,SAAShzC,OAAQoH,IAAK,CAC3C,IAAI+7C,EAAQvQ,EAAKI,SAAS5rC,GACtBk0J,EAAY1oH,EAAKkoH,KAAOl+J,KAAK89J,OAAOv3G,GAASA,EAEjD,GAAI5pB,EAAWg2B,EAAM+rG,GAAY,CAC7B,GAAI1oH,EAAKkoH,MAAQ1xJ,EAASmmD,EAAM+rG,GAAc,OAAO,EACrDD,EAAcnsJ,KAAKi0C,EACvB,CACJ,CACAvQ,EAAOyoH,EAAcxqJ,KACzB,CAEA,OAAO,CACX,EAEAk8E,EAAMnrF,UAAUoY,KAAO,SAAejL,GAClC,IAAMA,IAAQA,EAAK/O,OAAW,OAAOpD,KAErC,GAAImS,EAAK/O,OAASpD,KAAK09J,YAAa,CAChC,IAAK,IAAIlzJ,EAAI,EAAGA,EAAI2H,EAAK/O,OAAQoH,IAC7BxK,KAAK+xF,OAAO5/E,EAAK3H,IAErB,OAAOxK,IACX,CAGA,IAAIg2C,EAAOh2C,KAAK2+J,OAAOxsJ,EAAKrF,QAAS,EAAGqF,EAAK/O,OAAS,EAAG,GAEzD,GAAKpD,KAAKmS,KAAKikC,SAAShzC,OAIjB,GAAIpD,KAAKmS,KAAKlB,SAAW+kC,EAAK/kC,OAEjCjR,KAAK4+J,WAAW5+J,KAAKmS,KAAM6jC,OAExB,CACH,GAAIh2C,KAAKmS,KAAKlB,OAAS+kC,EAAK/kC,OAAQ,CAEhC,IAAI4tJ,EAAU7+J,KAAKmS,KACnBnS,KAAKmS,KAAO6jC,EACZA,EAAO6oH,CACX,CAGA7+J,KAAK8+J,QAAQ9oH,EAAMh2C,KAAKmS,KAAKlB,OAAS+kC,EAAK/kC,OAAS,GAAG,EAC3D,MAhBIjR,KAAKmS,KAAO6jC,EAkBhB,OAAOh2C,IACX,EAEAmwF,EAAMnrF,UAAU+sF,OAAS,SAAiB/7E,GAEtC,OADIA,GAAQhW,KAAK8+J,QAAQ9oJ,EAAMhW,KAAKmS,KAAKlB,OAAS,GAC3CjR,IACX,EAEAmwF,EAAMnrF,UAAU7E,MAAQ,WAEpB,OADAH,KAAKmS,KAAO8rJ,EAAW,IAChBj+J,IACX,EAEAmwF,EAAMnrF,UAAU+I,OAAS,SAAiBiI,EAAM4nJ,GAC5C,IAAK5nJ,EAAQ,OAAOhW,KASpB,IAPA,IAIIwK,EAAGqrC,EAAQkpH,EAJX/oH,EAAOh2C,KAAKmS,KACZwgD,EAAO3yD,KAAK89J,OAAO9nJ,GACnBgpJ,EAAO,GACPC,EAAU,GAIPjpH,GAAQgpH,EAAK57J,QAAQ,CASxB,GAPK4yC,IACDA,EAAOgpH,EAAK/qJ,MACZ4hC,EAASmpH,EAAKA,EAAK57J,OAAS,GAC5BoH,EAAIy0J,EAAQhrJ,MACZ8qJ,GAAU,GAGV/oH,EAAKkoH,KAAM,CACX,IAAIhpJ,EAAQyoJ,EAAS3nJ,EAAMggC,EAAKI,SAAUwnH,GAE1C,IAAe,IAAX1oJ,EAKA,OAHA8gC,EAAKI,SAASjgC,OAAOjB,EAAO,GAC5B8pJ,EAAK1sJ,KAAK0jC,GACVh2C,KAAKk/J,UAAUF,GACRh/J,IAEf,CAEK++J,GAAY/oH,EAAKkoH,OAAQ1xJ,EAASwpC,EAAM2c,GAOlC9c,GACPrrC,IACAwrC,EAAOH,EAAOO,SAAS5rC,GACvBu0J,GAAU,GAEL/oH,EAAO,MAXZgpH,EAAK1sJ,KAAK0jC,GACVipH,EAAQ3sJ,KAAK9H,GACbA,EAAI,EACJqrC,EAASG,EACTA,EAAOA,EAAKI,SAAS,GAQ7B,CAEA,OAAOp2C,IACX,EAEAmwF,EAAMnrF,UAAU84J,OAAS,SAAiB9nJ,GAAQ,OAAOA,CAAM,EAE/Dm6E,EAAMnrF,UAAUm6J,YAAc,SAAsB34J,EAAGC,GAAK,OAAOD,EAAE41B,KAAO31B,EAAE21B,IAAM,EACpF+zD,EAAMnrF,UAAUo6J,YAAc,SAAsB54J,EAAGC,GAAK,OAAOD,EAAE81B,KAAO71B,EAAE61B,IAAM,EAEpF6zD,EAAMnrF,UAAUkjI,OAAS,WAAqB,OAAOloI,KAAKmS,IAAM,EAEhEg+E,EAAMnrF,UAAUq6J,SAAW,SAAmBltJ,GAE1C,OADAnS,KAAKmS,KAAOA,EACLnS,IACX,EAEAmwF,EAAMnrF,UAAUw5J,KAAO,SAAexoH,EAAMx2C,GAExC,IADA,IAAIi/J,EAAgB,GACbzoH,GACCA,EAAKkoH,KAAQ1+J,EAAO8S,KAAKxS,MAAMN,EAAQw2C,EAAKI,UACzCqoH,EAAcnsJ,KAAKxS,MAAM2+J,EAAezoH,EAAKI,UAEpDJ,EAAOyoH,EAAcxqJ,MAEzB,OAAOzU,CACX,EAEA2wF,EAAMnrF,UAAU25J,OAAS,SAAiBpwJ,EAAOE,EAAMyB,EAAOe,GAE1D,IAEI+kC,EAFA8uG,EAAI50I,EAAQzB,EAAO,EACnBhG,EAAIzI,KAAKy9J,YAGb,GAAI3Y,GAAKr8I,EAIL,OADAo1J,EADA7nH,EAAOioH,EAAW1vJ,EAAMzB,MAAM2B,EAAMyB,EAAQ,IAC7BlQ,KAAK89J,QACb9nH,EAGN/kC,IAEDA,EAAShP,KAAKk/B,KAAKl/B,KAAKN,IAAImjJ,GAAK7iJ,KAAKN,IAAI8G,IAG1CA,EAAIxG,KAAKk/B,KAAK2jH,EAAI7iJ,KAAKI,IAAIoG,EAAGwI,EAAS,MAG3C+kC,EAAOioH,EAAW,KACbC,MAAO,EACZloH,EAAK/kC,OAASA,EAId,IAAIquJ,EAAKr9J,KAAKk/B,KAAK2jH,EAAIr8I,GACnBq9I,EAAKwZ,EAAKr9J,KAAKk/B,KAAKl/B,KAAKuF,KAAKiB,IAElC81J,EAAYhwJ,EAAOE,EAAMyB,EAAO41I,EAAI9lJ,KAAKm/J,aAEzC,IAAK,IAAI30J,EAAIiE,EAAMjE,GAAK0F,EAAO1F,GAAKs7I,EAAI,CAEpC,IAAIyZ,EAASt9J,KAAK27B,IAAIpzB,EAAIs7I,EAAK,EAAG51I,GAElCquJ,EAAYhwJ,EAAO/D,EAAG+0J,EAAQD,EAAIt/J,KAAKo/J,aAEvC,IAAK,IAAI7oJ,EAAI/L,EAAG+L,GAAKgpJ,EAAQhpJ,GAAK+oJ,EAAI,CAElC,IAAIE,EAASv9J,KAAK27B,IAAIrnB,EAAI+oJ,EAAK,EAAGC,GAGlCvpH,EAAKI,SAAS9jC,KAAKtS,KAAK2+J,OAAOpwJ,EAAOgI,EAAGipJ,EAAQvuJ,EAAS,GAC9D,CACJ,CAIA,OAFA4sJ,EAAS7nH,EAAMh2C,KAAK89J,QAEb9nH,CACX,EAEAm6C,EAAMnrF,UAAUy6J,eAAiB,SAAyB9sG,EAAM3c,EAAMykG,EAAOukB,GACzE,KACIA,EAAK1sJ,KAAK0jC,IAENA,EAAKkoH,MAAQc,EAAK57J,OAAS,IAAMq3I,GAH5B,CAST,IAJA,IAAIz4D,EAAUvoD,IACVimI,EAAiBjmI,IACjBkmI,OAAa,EAERn1J,EAAI,EAAGA,EAAIwrC,EAAKI,SAAShzC,OAAQoH,IAAK,CAC3C,IAAI+7C,EAAQvQ,EAAKI,SAAS5rC,GACtBswC,EAAOujH,EAAS93G,GAChBq5G,GA+MMp5J,EA/MqBmsD,EA+MlBlsD,EA/MwB8/C,GAgNrCtkD,KAAKm7B,IAAI32B,EAAE41B,KAAM71B,EAAE61B,MAAQp6B,KAAK27B,IAAIn3B,EAAE21B,KAAM51B,EAAE41B,QAC9Cn6B,KAAKm7B,IAAI32B,EAAE81B,KAAM/1B,EAAE+1B,MAAQt6B,KAAK27B,IAAIn3B,EAAE61B,KAAM91B,EAAE81B,OAjNAwe,GAG1C8kH,EAAcF,GACdA,EAAiBE,EACjB59E,EAAUlnC,EAAOknC,EAAUlnC,EAAOknC,EAClC29E,EAAap5G,GAENq5G,IAAgBF,GAEnB5kH,EAAOknC,IACPA,EAAUlnC,EACV6kH,EAAap5G,EAGzB,CAEAvQ,EAAO2pH,GAAc3pH,EAAKI,SAAS,EACvC,CA6LJ,IAAsB5vC,EAAGC,EA3LrB,OAAOuvC,CACX,EAEAm6C,EAAMnrF,UAAU85J,QAAU,SAAkB9oJ,EAAMykI,EAAOolB,GACrD,IAAIltG,EAAOktG,EAAS7pJ,EAAOhW,KAAK89J,OAAO9nJ,GACnC8pJ,EAAa,GAGb9pH,EAAOh2C,KAAKy/J,eAAe9sG,EAAM3yD,KAAKmS,KAAMsoI,EAAOqlB,GAOvD,IAJA9pH,EAAKI,SAAS9jC,KAAK0D,GACnBlC,EAAOkiC,EAAM2c,GAGN8nF,GAAS,GACRqlB,EAAWrlB,GAAOrkG,SAAShzC,OAASpD,KAAKy9J,aACzCz9J,KAAK+/J,OAAOD,EAAYrlB,GACxBA,IAKRz6I,KAAKggK,oBAAoBrtG,EAAMmtG,EAAYrlB,EAC/C,EAGAtqD,EAAMnrF,UAAU+6J,OAAS,SAAiBD,EAAYrlB,GAClD,IAAIzkG,EAAO8pH,EAAWrlB,GAClBhyI,EAAIutC,EAAKI,SAAShzC,OAClBkJ,EAAItM,KAAK09J,YAEb19J,KAAKigK,iBAAiBjqH,EAAM1pC,EAAG7D,GAE/B,IAAIy3J,EAAalgK,KAAKmgK,kBAAkBnqH,EAAM1pC,EAAG7D,GAE7CktC,EAAUsoH,EAAWjoH,EAAKI,SAASjgC,OAAO+pJ,EAAYlqH,EAAKI,SAAShzC,OAAS88J,IACjFvqH,EAAQ1kC,OAAS+kC,EAAK/kC,OACtB0kC,EAAQuoH,KAAOloH,EAAKkoH,KAEpBL,EAAS7nH,EAAMh2C,KAAK89J,QACpBD,EAASloH,EAAS31C,KAAK89J,QAEnBrjB,EAASqlB,EAAWrlB,EAAQ,GAAGrkG,SAAS9jC,KAAKqjC,GAC1C31C,KAAK4+J,WAAW5oH,EAAML,EACjC,EAEAw6C,EAAMnrF,UAAU45J,WAAa,SAAqB5oH,EAAML,GAEpD31C,KAAKmS,KAAO8rJ,EAAW,CAACjoH,EAAML,IAC9B31C,KAAKmS,KAAKlB,OAAS+kC,EAAK/kC,OAAS,EACjCjR,KAAKmS,KAAK+rJ,MAAO,EACjBL,EAAS79J,KAAKmS,KAAMnS,KAAK89J,OAC7B,EAEA3tE,EAAMnrF,UAAUm7J,kBAAoB,SAA4BnqH,EAAM1pC,EAAG7D,GAKrE,IAJA,IAAIyM,EACAkrJ,EAAa3mI,IACbuoD,EAAUvoD,IAELjvB,EAAI8B,EAAG9B,GAAK/B,EAAI6D,EAAG9B,IAAK,CAC7B,IAAI61J,EAAQtC,EAAS/nH,EAAM,EAAGxrC,EAAGxK,KAAK89J,QAClCwC,EAAQvC,EAAS/nH,EAAMxrC,EAAG/B,EAAGzI,KAAK89J,QAElCyC,GAgIc/5J,EAhIa65J,EAgIV55J,EAhIiB65J,EAiItClkI,SACAE,SACAD,SACAE,SAHAH,EAAOn6B,KAAKm7B,IAAI52B,EAAE41B,KAAM31B,EAAE21B,MAC1BE,EAAOr6B,KAAKm7B,IAAI52B,EAAE81B,KAAM71B,EAAE61B,MAC1BD,EAAOp6B,KAAK27B,IAAIp3B,EAAE61B,KAAM51B,EAAE41B,MAC1BE,EAAOt6B,KAAK27B,IAAIp3B,EAAE+1B,KAAM91B,EAAE81B,MAEvBt6B,KAAKm7B,IAAI,EAAGf,EAAOD,GACnBn6B,KAAKm7B,IAAI,EAAGb,EAAOD,IAtIlBwe,EAAOujH,EAASgC,GAAShC,EAASiC,GAGlCC,EAAUH,GACVA,EAAaG,EACbrrJ,EAAQ1K,EAERw3E,EAAUlnC,EAAOknC,EAAUlnC,EAAOknC,GAE3Bu+E,IAAYH,GAEftlH,EAAOknC,IACPA,EAAUlnC,EACV5lC,EAAQ1K,EAGpB,CA+GJ,IAA0BhE,EAAGC,EACrB21B,EACAE,EACAD,EACAE,EAjHJ,OAAOrnB,GAASzM,EAAI6D,CACxB,EAGA6jF,EAAMnrF,UAAUi7J,iBAAmB,SAA2BjqH,EAAM1pC,EAAG7D,GACnE,IAAI02J,EAAcnpH,EAAKkoH,KAAOl+J,KAAKm/J,YAAchB,EAC7CiB,EAAcppH,EAAKkoH,KAAOl+J,KAAKo/J,YAAchB,EACnCp+J,KAAKwgK,eAAexqH,EAAM1pC,EAAG7D,EAAG02J,GAChCn/J,KAAKwgK,eAAexqH,EAAM1pC,EAAG7D,EAAG22J,IAIrBppH,EAAKI,SAASvyB,KAAKs7I,EAChD,EAGAhvE,EAAMnrF,UAAUw7J,eAAiB,SAAyBxqH,EAAM1pC,EAAG7D,EAAGyiC,GAClE8K,EAAKI,SAASvyB,KAAKqnB,GAOnB,IALA,IAAI4yH,EAAS99J,KAAK89J,OACd2C,EAAW1C,EAAS/nH,EAAM,EAAG1pC,EAAGwxJ,GAChC4C,EAAY3C,EAAS/nH,EAAMvtC,EAAI6D,EAAG7D,EAAGq1J,GACrCjlF,EAASylF,EAAWmC,GAAYnC,EAAWoC,GAEtCl2J,EAAI8B,EAAG9B,EAAI/B,EAAI6D,EAAG9B,IAAK,CAC5B,IAAI+7C,EAAQvQ,EAAKI,SAAS5rC,GAC1BsJ,EAAO2sJ,EAAUzqH,EAAKkoH,KAAOJ,EAAOv3G,GAASA,GAC7CsyB,GAAUylF,EAAWmC,EACzB,CAEA,IAAK,IAAIE,EAAMl4J,EAAI6D,EAAI,EAAGq0J,GAAOr0J,EAAGq0J,IAAO,CACvC,IAAIC,EAAU5qH,EAAKI,SAASuqH,GAC5B7sJ,EAAO4sJ,EAAW1qH,EAAKkoH,KAAOJ,EAAO8C,GAAWA,GAChD/nF,GAAUylF,EAAWoC,EACzB,CAEA,OAAO7nF,CACX,EAEAsX,EAAMnrF,UAAUg7J,oBAAsB,SAA8BrtG,EAAMqsG,EAAMvkB,GAE5E,IAAK,IAAIjwI,EAAIiwI,EAAOjwI,GAAK,EAAGA,IACxBsJ,EAAOkrJ,EAAKx0J,GAAImoD,EAExB,EAEAw9B,EAAMnrF,UAAUk6J,UAAY,SAAoBF,GAE5C,IAAK,IAAIx0J,EAAIw0J,EAAK57J,OAAS,EAAGy9J,OAAW,EAAUr2J,GAAK,EAAGA,IACvB,IAA5Bw0J,EAAKx0J,GAAG4rC,SAAShzC,OACboH,EAAI,GACJq2J,EAAW7B,EAAKx0J,EAAI,GAAG4rC,UACdjgC,OAAO0qJ,EAASnuJ,QAAQssJ,EAAKx0J,IAAK,GAEtCxK,KAAKG,QAET09J,EAASmB,EAAKx0J,GAAIxK,KAAK89J,OAExC,EA0GO3tE,CAEP,CA5jBgF2wE,2CCChFtgK,OAAOC,eAAeF,EAAS,aAAc,CAC3CG,OAAO,IAETH,EAAQwgK,oBAAiB,EAEzB,IAAIC,EAAkB,EAAQ,MAE1BC,EAAW,EAAQ,MAEvB,MAAMC,EA4BatsJ,IACf,IAAKA,EAAQusJ,QACX,MAAM,IAAIh1J,MAAM,0CAA0CuyC,KAAK+E,UAAU7uC,KAC3E,EAQJ,MAAMmsJ,UAAuBC,EAAgBI,eAC3C,WAAA5tJ,CAAY6tJ,GACVC,MAAMD,EAAKjiK,SACXY,KAAKuhK,gBAAa,EAClBvhK,KAAKwhK,qBAAkB,EACvBxhK,KAAKyhK,aAAU,EACfzhK,KAAK0hK,QAAU,CAAC,EAChB1hK,KAAKuhK,WAAaF,EAAKM,UACvB3hK,KAAKyhK,QAAUJ,EAAKO,OACpB5hK,KAAKwhK,gBAAkBH,EAAKQ,iBAAmB,CACjD,CAaA,IAAA9+B,CAAKnuH,GACH,MAAMktJ,EAAcpjH,KAAK+E,UAAU7uC,GAEnC,GAAIktJ,EAAY1+J,QAAUpD,KAAKuhK,WAG7B,YAFAvhK,KAAKyhK,QAAQ7sJ,GAKf,MAAMmtJ,EArEOj9J,KACb,MAAMk9J,EAAU,IAAIC,YAAYn9J,EAAI1B,QAEpC,IAAK,IAAIoH,EAAI,EAAG03J,EAASp9J,EAAI1B,OAAQoH,EAAI03J,EAAQ13J,IAC/Cw3J,EAAQx3J,GAAK1F,EAAIs+E,WAAW54E,GAG9B,OAAOw3J,CAAO,EA8Dad,CAAoBY,GACzCX,EAvEW,IAAIhgK,MAAM,KAAK+M,KAAI,IAAMjM,KAAK4Q,SAAS9N,SAAS,IAAI,KAAIwN,KAAK,IAyE9EvS,KAAKyhK,QAAQ,CACXrwJ,KAAM,cACN+vJ,UACAzgJ,KAAMohJ,EAAY1+J,SAGpB,MAAM++J,EAAa,CAACpqI,EAAQ,KAC1B,IAAIqqI,EAAQL,EAAmBj1J,MAAMirB,EAAOA,EAAQ/3B,KAAKuhK,YAErDa,EAAMh/J,SACRpD,KAAKyhK,QAAQ,CACXrwJ,KAAM,aACN+vJ,UAGAhvJ,KAAMhR,MAAM0hJ,KAAKuf,KAGnBD,EAAWpqI,EAAQ/3B,KAAKuhK,YAC1B,EAGFY,IAEAniK,KAAKyhK,QAAQ,CACXrwJ,KAAM,YACN+vJ,WAEJ,CASA,gBAAAkB,CAAiBztJ,GACf,OAAQA,EAAQxD,MACd,IAAK,cACHpR,KAAKsiK,iBAAiB1tJ,GAEtB,MAEF,IAAK,aACH5U,KAAKuiK,kBAAkB3tJ,GAEvB,MAEF,IAAK,YACH,MAAM4tJ,EAAiBxiK,KAAKyiK,aAAa7tJ,GAEzC0sJ,MAAMe,iBAAiBG,GAEvB,MAEF,QAGElB,MAAMe,iBAAiBztJ,GAG7B,CAEA,gBAAA0tJ,CAAiB1tJ,GAGf,GAFAssJ,EAAsBtsJ,GAElB5U,KAAK0hK,QAAQ9sJ,EAAQusJ,SACvB,MAAM,IAAIh1J,MAAM,wDAAwDyI,EAAQusJ,WAGlFnhK,KAAK0hK,QAAQ9sJ,EAAQusJ,SAAW,CAC9BnuJ,GAAI4B,EAAQusJ,QACZuB,OAAQ,GACRhiJ,KAAM9L,EAAQ8L,KAElB,CAEA,iBAAA6hJ,CAAkB3tJ,GAGhB,GAFAssJ,EAAsBtsJ,IAEjB5U,KAAK0hK,QAAQ9sJ,EAAQusJ,SACxB,MAAM,IAAIh1J,MAAM,WAAWyI,EAAQusJ,uCAGrCnhK,KAAK0hK,QAAQ9sJ,EAAQusJ,SAASuB,OAAOpwJ,KAAKsC,EAAQzC,KACpD,CAEA,YAAAswJ,CAAa7tJ,GAGX,GAFAssJ,EAAsBtsJ,IAEjB5U,KAAK0hK,QAAQ9sJ,EAAQusJ,SACxB,MAAM,IAAIh1J,MAAM,WAAWyI,EAAQusJ,uCAarC,IAAIwB,EAEJ,MAAMC,EA1KkB,EAACp8J,EAAGq7J,KAC5B,IAAwB,IAApBA,EACF,OAAO9+G,OAAOo0E,aAAar3H,MAAM,KAAM0G,GAClC,CACL,IAAIhH,EAAS,GAEb,IAAK,IAAIgL,EAAI,EAAGA,EAAIhE,EAAEpD,OAAQoH,GAAKq3J,EAC7Br3J,EAAIq3J,EAAiBr7J,EAAEpD,OACzB5D,GAAUujD,OAAOo0E,aAAar3H,MAAM,KAAM0G,EAAEq8J,SAASr4J,IAErDhL,GAAUujD,OAAOo0E,aAAar3H,MAAM,KAAM0G,EAAEq8J,SAASr4J,EAAGA,EAAIq3J,IAIhE,OAAOriK,CACT,GA2JqB0hK,CAXAlhK,KAAK0hK,QAAQ9sJ,EAAQusJ,SAASuB,OAAOzqB,QAAO,CAAC7rI,EAAGg2J,EAAOU,KAC1EV,EAAM3yJ,SAAQ,CAACszJ,EAAMv4J,IAAM4B,EAAE42J,UAAU52J,EAAE62J,UAAYz4J,GAAKu4J,IAC1D32J,EAAE62J,WAAab,EAAMh/J,OACdgJ,IACN,CACD42J,UAAW,IAAIf,YAAYjiK,KAAK0hK,QAAQ9sJ,EAAQusJ,SAASzgJ,MACzDuiJ,UAAW,IAKoDD,UAAWhjK,KAAKwhK,iBAEjF,IACEmB,EAAmBjkH,KAAKuE,MAAM2/G,EAChC,CAAE,MAAO/gK,GACP,MAAM,IAAIsK,MAAM,4BAA4By2J,IAC9C,CAEA,KAAK,EAAI3B,EAASiC,oBAAoBP,GACpC,MAAM,IAAIx2J,MAAM,4BAA4BuyC,KAAK+E,UAAUk/G,MAG7D,OAAOA,CACT,EAIFpiK,EAAQwgK,eAAiBA,6BC/MzBvgK,OAAOC,eAAeF,EAAS,aAAc,CAC3CG,OAAO,IAETH,EAAQ6gK,oBAAiB,EA6DzB7gK,EAAQ6gK,eA1DR,MACE,WAAA5tJ,CAAY2vJ,EAHU,KAIpBnjK,KAAKmjK,SAAWA,EAChBnjK,KAAKojK,oBAAsB,GAC3BpjK,KAAKqjK,oBAAsB,GAC3BrjK,KAAKsjK,uBAAyB,GAC9BtjK,KAAKujK,kBAAoB,GACzBvjK,KAAKwjK,QAAS,CAChB,CAEA,WAAIpkK,GACF,OAAOY,KAAKmjK,QACd,CAEA,MAAAM,CAAOC,IACyC,IAA1C1jK,KAAKojK,oBAAoB1wJ,QAAQgxJ,IACnC1jK,KAAKojK,oBAAoB9wJ,KAAKoxJ,EAElC,CAEA,SAAAC,CAAUD,GACJ1jK,KAAKwjK,QACPE,IAGF1jK,KAAKqjK,oBAAoB/wJ,KAAKoxJ,EAChC,CAEA,YAAAE,CAAaF,GACX1jK,KAAKsjK,uBAAuBhxJ,KAAKoxJ,EACnC,CAEA,OAAAjmF,CAAQimF,GACN1jK,KAAKujK,kBAAkBjxJ,KAAKoxJ,EAC9B,CAEA,gBAAArB,CAAiBztJ,GACf5U,KAAKojK,oBAAoB3zJ,SAAQi0J,GAAMA,EAAG9uJ,IAC5C,CAEA,MAAAivJ,CAAO9qJ,GACL/Y,KAAKujK,kBAAkB9zJ,SAAQi0J,GAAMA,EAAG3qJ,IAC1C,CAEA,UAAA+qJ,GACE9jK,KAAKwjK,QAAS,EAEdxjK,KAAKqjK,oBAAoB5zJ,SAAQi0J,GAAMA,KACzC,CAEA,aAAAK,GACE/jK,KAAKwjK,QAAS,EAEdxjK,KAAKsjK,uBAAuB7zJ,SAAQi0J,GAAMA,KAC5C,8BC5DFljK,OAAOC,eAAeF,EAAS,aAAc,CAC3CG,OAAO,IAETH,EAAQyjK,mBAAgB,EAExBzjK,EAAQyjK,cADc,2CCJtBxjK,OAAOC,eAAeF,EAAS,aAAc,CAC3CG,OAAO,IAETH,EAAQ0jK,cAOR,YAA0B5kK,GACxB,MAAMmQ,EAAOnQ,EAAK44I,QAAO,CAACisB,EAAK9b,KAC7B8b,EAAI5xJ,KAAKxS,MAAMokK,EAAK1jK,OAAOgP,KAAK44I,IACzB8b,IACN,IACGC,EAAW,IAAI,IAAIC,IAAI50J,IAE7B,GAAIA,EAAKpM,OAAS+gK,EAAS/gK,OACzB,MAAM,IAAI+I,MAAM,+DAGlB,OAAO3L,OAAOygH,OAAO,CAAC,KAAM5hH,EAC9B,EAlBAkB,EAAQ8jK,eAoBR,SAAwBhlK,GACtB,MAAMilK,GAAcjlK,EAAKklK,UAAY,IAAIr2J,KAAI/C,GAAK,IAAIq5J,EAAWC,UAAUt5J,EAAG9L,EAAKqlK,iBAC7EC,EAAW,CAAC,EAElB,IAAK,MAAMz+I,KAAS7mB,EAAKutC,OACnBvtC,EAAKutC,OAAOr4B,eAAe2R,MAAY7mB,EAAKqlK,eAAiBrlK,EAAKqlK,gBAAkBrlK,EAAKqlK,cAAcn6H,SAASrkB,MAClHy+I,EAASz+I,IAAS,EAAI0+I,EAAMC,aAAa3+I,EAAOo+I,EAAYjlK,EAAKutC,OAAO1mB,GAAO4+I,SAInF,OAAOH,CACT,EA7BA,IAAIC,EAAQ,EAAQ,MAEhBJ,EAAa,EAAQ,iCCSzB,SAASO,EAAe35J,EAAG+G,GACzB,IAAI3S,EAAS,KAEb,IACEA,EAAS4L,EAAE+G,EACb,CAAE,MAAOomE,GACP,OAAOkkC,QAAQE,OAAOpkC,EACxB,CAEA,OAAI/4E,GAAUA,EAAOwc,KACZxc,EAEAi9G,QAAQC,QAAQl9G,EAE3B,CA/BAgB,OAAOC,eAAeF,EAAS,aAAc,CAC3CG,OAAO,IAETH,EAAQykK,aA0CR,SAAsB7yJ,EAAM8yJ,GAC1B,OAAKA,GAAgC,IAApBA,EAAS7hK,OAKK,IAApB6hK,EAAS7hK,OACX2hK,EAAeE,EAAS,GAAI9yJ,GAE5BsqG,QAAQ16F,IAAIkjJ,EAAS/2J,KAAI9C,GAAK25J,EAAe35J,EAAG+G,MANhD,IAAIsqG,SAAQC,OAQvB,6BCxDAl8G,OAAOC,eAAeF,EAAS,aAAc,CAC3CG,OAAO,IAETH,EAAQ2iK,mBAER,SAA4B52J,GAC1B,OAAQA,EAAE8E,MACR,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,uBACL,IAAK,qBACL,IAAK,aACH,OAAO,EAET,QACE,OAAO,EAEb,+BClBA5Q,OAAOC,eAAeF,EAAS,aAAc,CAC3CG,OAAO,IAETH,EAAQ2kK,KAwDR,SAAcJ,EAASK,GACrB,OAAOC,EAAoBN,EAC7B,EAzDAvkK,EAAQskK,YA2DR,SAAqBQ,EAAUf,EAAYQ,EAAS,CAAC,GAOnD,MAAMG,EAAWX,EAAWrsB,QAAO,CAACisB,EAAKoB,EAAIxC,KAAO,IAAMoB,EACxD,CAACpB,GAAK,CAAC,KACL,CACF,CAACyC,GAAkB,CAAC,IAKhBC,EAA0BlB,EAAWrsB,QAAO,CAACisB,EAAKoB,EAAIG,KAAiB,IAAMvB,EACjF,CAACuB,GAAe,CAAC,KACf,CAAC,GAECC,EAA2B,CAACD,EAAcE,KAC9C,IAAIC,EAAsB,OAE1B,MAAMC,EAA0B,IAAIppD,SAAQC,GAAWkpD,EAAsBlpD,IAC7E8oD,EAAwBC,GAAcE,GAAS,CAC7CG,WAAYD,EACZE,WAAYH,EACb,EAIGI,EAAuB,GACvBC,EAAyB,GAEzBC,EAA2BP,GAASK,EAAqBv2J,SAAQtE,GAAKA,EAAEw6J,KAExEQ,EAA6BR,GAASM,EAAuBx2J,SAAQtE,GAAKA,EAAEw6J,KA6LlF,OA1LArB,EAAW70J,SAAQ,CAAC22J,EAAWX,KAoD7BW,EAAUC,qCAAqChB,GAnDf,CAACM,EAAQW,EAAWtC,cAAeuC,KAIjE,IAAKf,EAAwBC,GAC3B,OAIF,MAAMe,EAAgBvB,EAASQ,GAAcE,IAAU,GACvDV,EAASQ,GAAcE,GAASa,EAAch0J,OAAO+zJ,GAEJ,IAA7CE,EAAiBd,EAAOV,GAAU7hK,QACpC8iK,EAAyBP,GAItBH,EAAwBC,GAAcE,IACzCD,EAAyB3iH,OAAO0iH,GAAeE,GAMjDH,EAAwBC,GAAcE,GAAOI,YAAY,IA4B3DK,EAAUM,uCAAuCrB,GAzBf,CAACM,EAAQW,EAAWtC,cAAeuC,KACnE,MACMI,GADgB1B,EAASQ,GAAcE,IAAU,IACpBjzJ,QAAQ6zJ,GACvCI,GAAgB,GAAG1B,EAASQ,GAAcE,GAAOxvJ,OAAOwwJ,EAAc,GACzB,IAA7CF,EAAiBd,EAAOV,GAAU7hK,QAAc+iK,EAA2BR,GAC3EH,EAAwBC,IAAeC,EAAyB3iH,OAAO0iH,GAAeE,EAAM,IAqBlGS,EAAUQ,kCAAkCvB,GAlBL,KAOjCG,EAAwBC,IAC1BjlK,OAAOgP,KAAKg2J,EAAwBC,IAAeh2J,SAAQk2J,IACzDH,EAAwBC,GAAcE,GAAOI,YAAY,WAItDP,EAAwBC,EAAa,GAKuC,IAoIhFjlK,OAAOygH,QAtHd,SAAiB4lD,EAAUC,GACzB,MAAMC,EAAiC,IAArB9mK,UAAUmD,OACtB+O,EAAO40J,EAAYD,EAAYD,EAC/BlB,EAAQoB,EAAYF,EAAWP,EAAWtC,cAK1CgD,EAA6B,KACjC,MAAMC,EAAmBR,EAAiBd,EAAOV,GACjD,OAAO,EAAIiC,EAASlC,cAAc7yJ,EAAM80J,EAAiB,EAK3D,GAA0B,IAAtB3C,EAAWlhK,OACb,OAAO4jK,IAMT,MAAMG,EAA8B,GAYpC,GAVIrC,EAAOsC,eACT9C,EAAW70J,SAAQ61J,IAEjB6B,EAA4B70J,KAAKgzJ,EAAG8B,gBAAgB,IAOpDtC,EAAOuC,SACT,OAAO5qD,QAAQ16F,IAAIolJ,GAA6BnrJ,MAAK,IAC5CgrJ,MAEJ,CACL1C,EAAW70J,SAAQ,CAAC61J,EAAIG,KAClBD,EAAwBC,KAAkBD,EAAwBC,GAAcE,IAClFD,EAAyB3iH,OAAO0iH,GAAeE,EACjD,IAEF,MAAM2B,EAAoBhD,EAAWrsB,QAAO,CAACisB,EAAKoB,EAAIG,KACpD,IAAI8B,EAEJ,MAAO,IAAIrD,KAAyH,QAA/GqD,EAAO/B,EAAwBC,IAAiB,CAACD,EAAwBC,GAAcE,GAAOG,mBAAkC,IAATyB,EAAkBA,EAAO,GAAI,GACxK,IACH,OAAO9qD,QAAQ16F,IAAIulJ,GAAmBtrJ,MAAK,IAClCgrJ,KAEX,CACF,GAiE8B,CAC5Bx1J,GAnCF,SAAYg2J,EAAgBC,GAE1B,IAAI9B,EAAQ,GAERY,EAAU,IAAM,IAAI9pD,SAAQ3sG,GAAKA,MAkBrC,MAhB8B,iBAAnB03J,GACT7B,EAAQ6B,EACRjB,EAAUkB,GAAkBlB,IAE5BZ,EAAQW,EAAWtC,cACnBuC,EAAUiB,GAIZlD,EAAW70J,SAAQnF,GAAKA,EAAEo9J,gBAAgBrC,EAAUM,EAAOY,KAE3DtB,EAASM,GAAiBI,IAAUV,EAASM,GAAiBI,IAAU,IAAInzJ,OAAO+zJ,GAGtD,IADPE,EAAiBd,EAAOV,GAC5B7hK,QAAc8iK,EAAyBP,GAElD,KAELrB,EAAW70J,SAAQnF,GAAKA,EAAEq9J,kBAAkBtC,EAAUM,EAAOY,KAC7D,MACMzD,GADqBmC,EAASM,GAAiBI,IAAU,IACjCjzJ,QAAQ6zJ,IAC1B,IAARzD,GAAWmC,EAASM,GAAiBI,GAAOxvJ,OAAO2sJ,EAAI,GAG9B,IADP2D,EAAiBd,EAAOV,GAC5B7hK,QAAc+iK,EAA2BR,EAAM,CAErE,EAIEiC,KA3DF,SAAcC,EAA4BC,GAKxC,OAJA9B,EAAqB1zJ,KAAKu1J,GAC1B5B,EAAuB3zJ,KAAKw1J,GAE5BC,EAAkB9C,GAAUx1J,QAAQo4J,GAC7B,KAELE,EAAkB9C,GAAUx1J,QAAQq4J,GAEpC,MAAME,EAAYhC,EAAqBtzJ,QAAQm1J,GAC3CG,GAAa,GAAGhC,EAAqB7vJ,OAAO6xJ,EAAW,GAC3D,MAAMC,EAAehC,EAAuBvzJ,QAAQo1J,GAChDG,GAAgB,GAAGhC,EAAuB9vJ,OAAO8xJ,EAAc,EAAE,CAEzE,EA8CEnD,SACAO,YAEJ,EAhSA9kK,EAAQ4kK,uBAAoB,EAE5B,IAAI+B,EAAW,EAAQ,MAEnBZ,EAAa,EAAQ,MAEzB,MAAM4B,EAAqB,KACzB,MAAM,IAAI/7J,MAAM,qBAAqB,EAGjCg5J,EAAoB,CACxBkC,UAAU,EACVD,eAAe,GAEjB7mK,EAAQ4kK,kBAAoBA,EAE5B,MAAMC,EAAsBN,GAAUtkK,OAAOygH,QAAO,IAAMinD,KAAsB,CAC9EpD,SACA8C,KAAM,IAAMM,EACZ12J,GAAI,IAAM02J,EACV7C,SAAU,kBAINE,EAAkB,kBAGlBkB,EAAmB,CAACd,EAAOV,IAAazkK,OAAOgP,KAAKy1J,GAAUhtB,QAAO,CAACuuB,EAAef,IAClFe,EAAch0J,OAAOyyJ,EAASQ,GAAcE,IAAU,KAC5D,IAGGoC,EAAoB9C,GAAYzkK,OAAOgP,KAAKy1J,GAAUhtB,QAAO,CAACh+E,EAAQwrG,KAC1E,MAAM0C,EAAoBlD,EAASQ,GAE7B2C,EAAuB,IAAInuG,KADRz5D,OAAOgP,KAAK24J,GAAmB9jI,QAAOshI,IAAUwC,EAAkBxC,IAAU,IAAIviK,OAAS,KAGlH,MADmB,IAAI,IAAIghK,IAAIgE,GACd,GAChB,iCC3CH5nK,OAAOC,eAAeF,EAAS,aAAc,CAC3CG,OAAO,IAETH,EAAQkkK,eAAY,EAEpB,IAAIyC,EAAW,EAAQ,MAEvB,IAAImB,EAAM,EAsaV9nK,EAAQkkK,UAxZR,MAyBE,WAAAjxJ,CAAY80J,EAAU5D,GACpB1kK,KAAKsoK,SAAWA,EAChBtoK,KAAKuoK,eAAiB,CAAC,EACvBvoK,KAAKwoK,2BAA6B,CAAC,EACnCxoK,KAAKyoK,gBAAkB,CAAC,EACxBzoK,KAAK0oK,oCAAsC,CAAC,EAC5C1oK,KAAK2oK,gCAAkC,CAAC,EACxC3oK,KAAK4oK,8BAAgC,CAAC,EACtC5oK,KAAK6oK,iBAAmB,CAAC,EACzB7oK,KAAK8oK,eAAgB,EAErB9oK,KAAKsoK,SAAS7E,QAAO7uJ,IACnB,OAAQA,EAAQxD,MACd,IAAK,UACH,OAAOpR,KAAK+oK,iBAAiBn0J,GAE/B,IAAK,WACH,OAAO5U,KAAKgpK,kBAAkBp0J,GAEhC,IAAK,qBACH,OAAO5U,KAAKipK,uBAAuBr0J,GAErC,IAAK,uBACH,OAAO5U,KAAKkpK,yBAAyBt0J,GAEvC,IAAK,QACH,OAAO5U,KAAKmpK,eAAev0J,GAE7B,IAAK,aACH,OAAO5U,KAAKopK,6BAA6Bx0J,GAE3C,QAlEYpO,KAClB,MAAM,IAAI2F,MAAM,sBAAsB3F,IAAI,EAkElC6iK,CAAYz0J,GAChB,IAGF5U,KAAKsoK,SAAS3E,WAAU,KACtB3jK,KAAK8oK,eAAgB,EAErBtoK,OAAOgP,KAAKxP,KAAKwoK,4BAA4B/4J,SAAQk2J,IACnD3lK,KAAKwoK,2BAA2B7C,GAAOl2J,SAAQpO,IAC7CrB,KAAKsoK,SAASvlC,KAAK1hI,EAAI,GACvB,IAMAqjK,GACF1kK,KAAKsoK,SAASvlC,KAAK,CACjB3xH,KAAM,aACNszJ,iBAEJ,IAGF1kK,KAAKsoK,SAAS1E,cAAa,KACzB5jK,KAAK8oK,eAAgB,EAErB9oK,KAAKspK,+BAELtpK,KAAKupK,0BAA0B,IAAIp9J,MAAM,4BAAsC,IAMjFnM,KAAKsoK,SAAS7qF,SAAQ57E,GAAK7B,KAAKupK,0BAA0B1nK,IAC5D,CASA,4BAAAunK,EAA6B,cAC3B1E,IAEAlkK,OAAOgP,KAAKxP,KAAK4oK,+BAA+Bn5J,SAAQ41J,IAClDX,EAAcn6H,SAAS86H,IACzBrlK,KAAK4oK,8BAA8BvD,IACrC,GAEJ,CAQA,gBAAA0D,EAAiB,SACf1D,EAAQ,KACRlzJ,EAAI,GACJa,EAAE,MACF2yJ,IAGA,MAAM6D,EAAexpK,KAAKuoK,eAAelD,GACzC,IAAKmE,EAAc,OACnB,MAAMvE,EAAWuE,EAAa7D,GACzBV,IAEL,EAAIiC,EAASlC,cAAc7yJ,EAAM8yJ,GAChCjpJ,MAAK08G,GAAY14H,KAAKsoK,SAASvlC,KAAK,CACnC3xH,KAAM,WACNi0J,WACAryJ,KACAb,KAAMumH,EACNitC,YAED1pJ,OAAMlD,GAAS/Y,KAAKsoK,SAASvlC,KAAK,CACjC/vH,KACA4B,QAAS,GAAGmE,IACZ4sJ,QACAN,WACAz4F,MAAO7zD,EAAM6zD,OAAS,GACtBx7D,KAAM,WAEV,CAOA,iBAAA43J,EAAkB,SAChB3D,EAAQ,KACRlzJ,EAAI,GACJa,EAAE,MACF2yJ,IAEA,MAAM8D,EAAezpK,KAAK6oK,iBAAiBxD,GAEtCoE,GAAiBA,EAAa9D,IAAW8D,EAAa9D,GAAO3yJ,KAIlEy2J,EAAa9D,GAAO3yJ,GAAI0pG,QAAQvqG,UACzBs3J,EAAa9D,GAAO3yJ,GAC7B,CAOA,cAAAm2J,EAAe,SACb9D,EAAQ,GACRryJ,EAAE,QACF4B,EAAO,MACPg4D,EAAK,MACL+4F,IAEA,MAAM8D,EAAezpK,KAAK6oK,iBAAiBxD,GAC3C,IAAKoE,IAAiBA,EAAa9D,KAAW8D,EAAa9D,GAAO3yJ,GAAK,OACvE,MAAM+F,EAAQ,IAAI5M,MAAM,GAAGyI,QAAcywJ,gBAAuBM,KAChE5sJ,EAAM6zD,MAAQA,GAAS7zD,EAAM6zD,MAE7B5sE,KAAK6oK,iBAAiBxD,GAAUM,GAAO3yJ,GAAI2pG,OAAO5jG,UAE3C/Y,KAAK6oK,iBAAiBxD,GAAUM,GAAO3yJ,EAChD,CAUA,sBAAAi2J,EAAuB,SACrB5D,EAAQ,MACRM,IAEA,MAAM+D,EAAa1pK,KAAK0oK,oCAAoCrD,GAC5D,IAAKqE,EAAY,OACjB,MAAMF,EAAexpK,KAAKyoK,gBAAgBpD,GAC1C,GAAImE,GAAgBA,EAAa7D,GAAQ,OAEzC,MAAMgE,EAAgBC,GAAe,IAAIntD,SAAQ,CAACC,EAASC,KAGzD,IAAK38G,KAAK8oK,cACR,OAAOnsD,EAAO,IAAIxwG,MAAM,wBAAkCk5J,MAK5D,MAAMryJ,EArOQ,GAAGq1J,IAsOjBroK,KAAK6oK,iBAAiBxD,GAAYrlK,KAAK6oK,iBAAiBxD,IAAa,CAAC,EACtErlK,KAAK6oK,iBAAiBxD,GAAUM,GAAS3lK,KAAK6oK,iBAAiBxD,GAAUM,IAAU,CAAC,EACpF3lK,KAAK6oK,iBAAiBxD,GAAUM,GAAO3yJ,GAAM,CAC3C0pG,UACAC,UAGF38G,KAAKsoK,SAASvlC,KAAK,CACjB3xH,KAAM,UACN4B,KACAqyJ,WACAM,QACAxzJ,KAAMy3J,IAIR/pK,YAAW,KACT,MAEMgqK,IAFe7pK,KAAK6oK,iBAAiBxD,IAAa,CAAC,GACtBM,IAAU,CAAC,GAChB3yJ,GAE9B,GAAI62J,EAAS,CACX,MAAM9wJ,EAAQ,IAAI5M,MAAM,gBAA0Bk5J,gBAAuBM,KACzEkE,EAAQltD,OAAO5jG,UACR/Y,KAAK6oK,iBAAiBxD,GAAUM,GAAO3yJ,EAChD,IACChT,KAAKsoK,SAASlpK,QAAQ,IAG3BY,KAAKyoK,gBAAgBpD,GAAYrlK,KAAKyoK,gBAAgBpD,IAAa,CAAC,EACpErlK,KAAKyoK,gBAAgBpD,GAAUM,GAASgE,EACxCD,EAAW/D,EAAOgE,EACpB,CAEA,wBAAAT,EAAyB,SACvB7D,EAAQ,MACRM,IAEA,MAAMmE,EAA0B9pK,KAAK2oK,gCAAgCtD,GAC/DmE,EAAexpK,KAAKyoK,gBAAgBpD,GAC1C,IAAKmE,EAAc,OACnB,MAAMG,EAAgBH,EAAa7D,GAE/BgE,GAAiBG,IACnBA,EAAwBnE,EAAOgE,UACxB3pK,KAAKyoK,gBAAgBpD,GAAUM,GAE1C,CAEA,4BAAA2D,GACE9oK,OAAOgP,KAAKxP,KAAK2oK,iCAAiCl5J,SAAQ41J,IACxD,MAAMmE,EAAexpK,KAAKyoK,gBAAgBpD,GACrCmE,GACUhpK,OAAOgP,KAAKg6J,GAAcnlI,QAAOshI,GAAS6D,EAAa7D,KAC/Dl2J,SAAQk2J,GAAS3lK,KAAKkpK,yBAAyB,CACpD7D,WACAM,WACC,GAEP,CAEA,yBAAA4D,CAA0B1nK,GACxBrB,OAAOgP,KAAKxP,KAAK6oK,kBAAkBp5J,SAAQ41J,IACzC7kK,OAAOgP,KAAKxP,KAAK6oK,iBAAiBxD,IAAW51J,SAAQk2J,IACnDnlK,OAAOgP,KAAKxP,KAAK6oK,iBAAiBxD,GAAUM,IAAQl2J,SAAQuD,IAC1DhT,KAAK6oK,iBAAiBxD,GAAUM,GAAO3yJ,GAAI2pG,OAAO96G,EAAE,GACpD,IAEJ7B,KAAK6oK,iBAAiBxD,GAAY,CAAC,CAAC,GAExC,CAEA,oCAAAgB,CAAqChB,EAAU0E,GACxC/pK,KAAK0oK,oCAAoCrD,KAC5CrlK,KAAK0oK,oCAAoCrD,GAAY0E,EAEzD,CAEA,sCAAArD,CAAuCrB,EAAU2E,GAC1ChqK,KAAK2oK,gCAAgCtD,KACxCrlK,KAAK2oK,gCAAgCtD,GAAY2E,EAErD,CAEA,iCAAApD,CAAkCvB,EAAU4E,GACrCjqK,KAAK4oK,8BAA8BvD,KACtCrlK,KAAK4oK,8BAA8BvD,GAAY4E,EAEnD,CAOA,eAAAvC,CAAgBrC,EAAUM,EAAOY,GAW/B,GAVAvmK,KAAKuoK,eAAelD,GAAYrlK,KAAKuoK,eAAelD,IAAa,CAAC,EAClErlK,KAAKuoK,eAAelD,GAAUM,GAAS3lK,KAAKuoK,eAAelD,GAAUM,IAAU,GAE/E3lK,KAAKuoK,eAAelD,GAAUM,GAAOrzJ,KAAKi0J,GAOU,IAAhDvmK,KAAKuoK,eAAelD,GAAUM,GAAOviK,OAAc,CACrD,MAAM8mK,EAAsB,CAC1B94J,KAAM,qBACNu0J,QACAN,YAEFrlK,KAAKwoK,2BAA2B7C,GAAS3lK,KAAKwoK,2BAA2B7C,IAAU,GAEnF3lK,KAAKwoK,2BAA2B7C,GAAOrzJ,KAAK43J,GAExClqK,KAAK8oK,eACP9oK,KAAKsoK,SAASvlC,KAAKmnC,EAEvB,CACF,CAOA,iBAAAvC,CAAkBtC,EAAUM,EAAOY,GACjC,MAAM4D,EAAoBnqK,KAAKuoK,eAAelD,GAE9C,GAAI8E,GAAqBA,EAAkBxE,GAAQ,CACjD,MAAM7C,EAAKqH,EAAkBxE,GAAOjzJ,QAAQ6zJ,GAE5C,GAAIzD,GAAM,IACRqH,EAAkBxE,GAAOxvJ,OAAO2sJ,EAAI,GAMI,IAApCqH,EAAkBxE,GAAOviK,QAAc,CACzC,MAAMgnK,EAAwB,CAC5Bh5J,KAAM,uBACNu0J,QACAN,YAGErlK,KAAK8oK,eACP9oK,KAAKsoK,SAASvlC,KAAKqnC,EAEvB,CAEJ,CACF,CAQA,cAAAC,GACE,OAAQrqK,KAAK8oK,aACf,CASA,aAAA1B,GACE,GAAIpnK,KAAKqqK,kBAAoBrqK,KAAKsoK,SAASlB,cAAe,CACxD,MAAMvrJ,EAAU,IAAI4gG,SAAQC,IAC1B18G,KAAKsoK,SAAS3E,WAAU,IACfjnD,KACP,IAKJ,OAFA18G,KAAKsoK,SAASlB,gBAEPvrJ,CACT,CAEA,OAAO4gG,QAAQC,SACjB,gCCzaFl8G,OAAOC,eAAeF,EAAS,aAAc,CAC3CG,OAAO,IAETF,OAAOC,eAAeF,EAAS,OAAQ,CACrC2E,YAAY,EACZD,IAAK,WACH,OAAO2/J,EAAMM,IACf,IAEF1kK,OAAOC,eAAeF,EAAS,OAAQ,CACrC2E,YAAY,EACZD,IAAK,WACH,OAAO2/J,EAAM0F,IACf,IAEF9pK,OAAOC,eAAeF,EAAS,mBAAoB,CACjD2E,YAAY,EACZD,IAAK,WACH,OAAOslK,EAAQC,gBACjB,IAEFhqK,OAAOC,eAAeF,EAAS,gBAAiB,CAC9C2E,YAAY,EACZD,IAAK,WACH,OAAOslK,EAAQtG,aACjB,IAEFzjK,OAAOC,eAAeF,EAAS,iBAAkB,CAC/C2E,YAAY,EACZD,IAAK,WACH,OAAOslK,EAAQlG,cACjB,IAEF7jK,OAAOC,eAAeF,EAAS,UAAW,CACxC2E,YAAY,EACZD,IAAK,WACH,OAAOwlK,EAASC,OAClB,IAEFlqK,OAAOC,eAAeF,EAAS,iBAAkB,CAC/C2E,YAAY,EACZD,IAAK,WACH,OAAO+7J,EAAgBI,cACzB,IAEF5gK,OAAOC,eAAeF,EAAS,iBAAkB,CAC/C2E,YAAY,EACZD,IAAK,WACH,OAAO0lK,EAAgB5J,cACzB,IAEFvgK,OAAOC,eAAeF,EAAS,mBAAoB,CACjD2E,YAAY,EACZD,IAAK,WACH,OAAOg8J,EAAS2J,gBAClB,IAEFpqK,OAAOC,eAAeF,EAAS,gBAAiB,CAC9C2E,YAAY,EACZD,IAAK,WACH,OAAOqhK,EAAWtC,aACpB,IAGF,IAAIY,EAAQ,EAAQ,MAEhB2F,EAAU,EAAQ,MAElBE,EAAW,EAAQ,KAEnBzJ,EAAkB,EAAQ,MAE1B2J,EAAkB,EAAQ,MAE1B1J,EAAW,EAAQ,MAEnBqF,EAAa,EAAQ","sources":["webpack://[name]/./node_modules/debounce/index.js","webpack://[name]/./node_modules/esdm-gridreference/dist/GridReference.js","webpack://[name]/./node_modules/ol-contextmenu/dist/ol-contextmenu.js","webpack://[name]/./node_modules/ol/AssertionError.js","webpack://[name]/./node_modules/ol/Collection.js","webpack://[name]/./node_modules/ol/CollectionEventType.js","webpack://[name]/./node_modules/ol/Disposable.js","webpack://[name]/./node_modules/ol/Feature.js","webpack://[name]/./node_modules/ol/Geolocation.js","webpack://[name]/./node_modules/ol/Image.js","webpack://[name]/./node_modules/ol/ImageBase.js","webpack://[name]/./node_modules/ol/ImageState.js","webpack://[name]/./node_modules/ol/ImageTile.js","webpack://[name]/./node_modules/ol/Kinetic.js","webpack://[name]/./node_modules/ol/renderer/Map.js","webpack://[name]/./node_modules/ol/renderer/Composite.js","webpack://[name]/./node_modules/ol/control/Attribution.js","webpack://[name]/./node_modules/ol/control/Rotate.js","webpack://[name]/./node_modules/ol/control/Zoom.js","webpack://[name]/./node_modules/ol/Map.js","webpack://[name]/./node_modules/ol/control.js","webpack://[name]/./node_modules/ol/MapBrowserEvent.js","webpack://[name]/./node_modules/ol/MapBrowserEventHandler.js","webpack://[name]/./node_modules/ol/MapBrowserEventType.js","webpack://[name]/./node_modules/ol/MapEvent.js","webpack://[name]/./node_modules/ol/MapEventType.js","webpack://[name]/./node_modules/ol/Object.js","webpack://[name]/./node_modules/ol/ObjectEventType.js","webpack://[name]/./node_modules/ol/Observable.js","webpack://[name]/./node_modules/ol/OverlayPositioning.js","webpack://[name]/./node_modules/ol/MapProperty.js","webpack://[name]/./node_modules/ol/PluggableMap.js","webpack://[name]/./node_modules/ol/Tile.js","webpack://[name]/./node_modules/ol/structs/LRUCache.js","webpack://[name]/./node_modules/ol/TileCache.js","webpack://[name]/./node_modules/ol/structs/PriorityQueue.js","webpack://[name]/./node_modules/ol/TileQueue.js","webpack://[name]/./node_modules/ol/TileRange.js","webpack://[name]/./node_modules/ol/TileState.js","webpack://[name]/./node_modules/ol/ViewProperty.js","webpack://[name]/./node_modules/ol/centerconstraint.js","webpack://[name]/./node_modules/ol/resolutionconstraint.js","webpack://[name]/./node_modules/ol/View.js","webpack://[name]/./node_modules/ol/ViewHint.js","webpack://[name]/./node_modules/ol/array.js","webpack://[name]/./node_modules/ol/asserts.js","webpack://[name]/./node_modules/ol/color.js","webpack://[name]/./node_modules/ol/colorlike.js","webpack://[name]/./node_modules/ol/control/Control.js","webpack://[name]/./node_modules/ol/control/FullScreen.js","webpack://[name]/./node_modules/ol/control/MousePosition.js","webpack://[name]/./node_modules/ol/control/ScaleLine.js","webpack://[name]/./node_modules/ol/coordinate.js","webpack://[name]/./node_modules/ol/css.js","webpack://[name]/./node_modules/ol/dom.js","webpack://[name]/./node_modules/ol/easing.js","webpack://[name]/./node_modules/ol/events.js","webpack://[name]/./node_modules/ol/events/Event.js","webpack://[name]/./node_modules/ol/events/EventType.js","webpack://[name]/./node_modules/ol/events/Target.js","webpack://[name]/./node_modules/ol/extent.js","webpack://[name]/./node_modules/ol/extent/Corner.js","webpack://[name]/./node_modules/ol/extent/Relationship.js","webpack://[name]/./node_modules/ol/format/Feature.js","webpack://[name]/./node_modules/ol/format/FormatType.js","webpack://[name]/./node_modules/ol/format/GPX.js","webpack://[name]/./node_modules/ol/format/JSONFeature.js","webpack://[name]/./node_modules/ol/format/GeoJSON.js","webpack://[name]/./node_modules/ol/format/GMLBase.js","webpack://[name]/./node_modules/ol/format/GML2.js","webpack://[name]/./node_modules/ol/format/GML3.js","webpack://[name]/./node_modules/ol/format/WFS.js","webpack://[name]/./node_modules/ol/format/TextFeature.js","webpack://[name]/./node_modules/ol/format/WKT.js","webpack://[name]/./node_modules/ol/format/XMLFeature.js","webpack://[name]/./node_modules/ol/format/filter.js","webpack://[name]/./node_modules/ol/format/filter/And.js","webpack://[name]/./node_modules/ol/format/filter/Bbox.js","webpack://[name]/./node_modules/ol/format/filter/Comparison.js","webpack://[name]/./node_modules/ol/format/filter/ComparisonBinary.js","webpack://[name]/./node_modules/ol/format/filter/Contains.js","webpack://[name]/./node_modules/ol/format/filter/During.js","webpack://[name]/./node_modules/ol/format/filter/EqualTo.js","webpack://[name]/./node_modules/ol/format/filter/Filter.js","webpack://[name]/./node_modules/ol/format/filter/GreaterThan.js","webpack://[name]/./node_modules/ol/format/filter/GreaterThanOrEqualTo.js","webpack://[name]/./node_modules/ol/format/filter/Intersects.js","webpack://[name]/./node_modules/ol/format/filter/IsBetween.js","webpack://[name]/./node_modules/ol/format/filter/IsLike.js","webpack://[name]/./node_modules/ol/format/filter/IsNull.js","webpack://[name]/./node_modules/ol/format/filter/LessThan.js","webpack://[name]/./node_modules/ol/format/filter/LessThanOrEqualTo.js","webpack://[name]/./node_modules/ol/format/filter/LogicalNary.js","webpack://[name]/./node_modules/ol/format/filter/Not.js","webpack://[name]/./node_modules/ol/format/filter/NotEqualTo.js","webpack://[name]/./node_modules/ol/format/filter/Or.js","webpack://[name]/./node_modules/ol/format/filter/Spatial.js","webpack://[name]/./node_modules/ol/format/filter/Within.js","webpack://[name]/./node_modules/ol/format/xsd.js","webpack://[name]/./node_modules/ol/functions.js","webpack://[name]/./node_modules/ol/geom/Geometry.js","webpack://[name]/./node_modules/ol/geom/GeometryCollection.js","webpack://[name]/./node_modules/ol/geom/GeometryLayout.js","webpack://[name]/./node_modules/ol/geom/GeometryType.js","webpack://[name]/./node_modules/ol/geom/LineString.js","webpack://[name]/./node_modules/ol/geom/LinearRing.js","webpack://[name]/./node_modules/ol/geom/MultiLineString.js","webpack://[name]/./node_modules/ol/geom/MultiPoint.js","webpack://[name]/./node_modules/ol/geom/MultiPolygon.js","webpack://[name]/./node_modules/ol/geom/flat/center.js","webpack://[name]/./node_modules/ol/geom/Point.js","webpack://[name]/./node_modules/ol/geom/Polygon.js","webpack://[name]/./node_modules/ol/geom/SimpleGeometry.js","webpack://[name]/./node_modules/ol/geom/flat/area.js","webpack://[name]/./node_modules/ol/geom/flat/closest.js","webpack://[name]/./node_modules/ol/geom/flat/contains.js","webpack://[name]/./node_modules/ol/geom/flat/deflate.js","webpack://[name]/./node_modules/ol/geom/flat/inflate.js","webpack://[name]/./node_modules/ol/geom/flat/interiorpoint.js","webpack://[name]/./node_modules/ol/geom/flat/interpolate.js","webpack://[name]/./node_modules/ol/geom/flat/intersectsextent.js","webpack://[name]/./node_modules/ol/geom/flat/length.js","webpack://[name]/./node_modules/ol/geom/flat/reverse.js","webpack://[name]/./node_modules/ol/geom/flat/orient.js","webpack://[name]/./node_modules/ol/geom/flat/segments.js","webpack://[name]/./node_modules/ol/geom/flat/simplify.js","webpack://[name]/./node_modules/ol/geom/flat/transform.js","webpack://[name]/./node_modules/ol/has.js","webpack://[name]/./node_modules/ol/geom/flat/geodesic.js","webpack://[name]/./node_modules/ol/layer/Graticule.js","webpack://[name]/./node_modules/ol/ImageCanvas.js","webpack://[name]/./node_modules/ol/Overlay.js","webpack://[name]/./node_modules/ol/VectorRenderTile.js","webpack://[name]/./node_modules/ol/VectorTile.js","webpack://[name]/./node_modules/ol/interaction/Property.js","webpack://[name]/./node_modules/ol/interaction/Interaction.js","webpack://[name]/./node_modules/ol/interaction/DoubleClickZoom.js","webpack://[name]/./node_modules/ol/interaction/Pointer.js","webpack://[name]/./node_modules/ol/events/condition.js","webpack://[name]/./node_modules/ol/interaction/DragPan.js","webpack://[name]/./node_modules/ol/interaction/DragRotate.js","webpack://[name]/./node_modules/ol/render/Box.js","webpack://[name]/./node_modules/ol/interaction/DragBox.js","webpack://[name]/./node_modules/ol/interaction/DragZoom.js","webpack://[name]/./node_modules/ol/interaction/KeyboardPan.js","webpack://[name]/./node_modules/ol/events/KeyCode.js","webpack://[name]/./node_modules/ol/interaction/KeyboardZoom.js","webpack://[name]/./node_modules/ol/interaction/MouseWheelZoom.js","webpack://[name]/./node_modules/ol/interaction/PinchRotate.js","webpack://[name]/./node_modules/ol/interaction/PinchZoom.js","webpack://[name]/./node_modules/ol/interaction/DragAndDrop.js","webpack://[name]/./node_modules/ol/interaction/DragRotateAndZoom.js","webpack://[name]/./node_modules/ol/geom/Circle.js","webpack://[name]/./node_modules/ol/interaction/Draw.js","webpack://[name]/./node_modules/ol/interaction/Extent.js","webpack://[name]/./node_modules/ol/interaction/Modify.js","webpack://[name]/./node_modules/ol/interaction/Select.js","webpack://[name]/./node_modules/ol/interaction/Snap.js","webpack://[name]/./node_modules/ol/interaction/Translate.js","webpack://[name]/./node_modules/ol/interaction.js","webpack://[name]/./node_modules/ol/layer/Base.js","webpack://[name]/./node_modules/ol/layer/Group.js","webpack://[name]/./node_modules/ol/layer/BaseImage.js","webpack://[name]/./node_modules/ol/renderer/canvas/ImageLayer.js","webpack://[name]/./node_modules/ol/layer/Image.js","webpack://[name]/./node_modules/ol/layer/Layer.js","webpack://[name]/./node_modules/ol/layer/Property.js","webpack://[name]/./node_modules/ol/layer/TileProperty.js","webpack://[name]/./node_modules/ol/layer/BaseTile.js","webpack://[name]/./node_modules/ol/renderer/canvas/TileLayer.js","webpack://[name]/./node_modules/ol/layer/Tile.js","webpack://[name]/./node_modules/ol/layer/BaseVector.js","webpack://[name]/./node_modules/ol/render/canvas/Instruction.js","webpack://[name]/./node_modules/ol/render/canvas/Builder.js","webpack://[name]/./node_modules/ol/render/canvas/ImageBuilder.js","webpack://[name]/./node_modules/ol/render/canvas/LineStringBuilder.js","webpack://[name]/./node_modules/ol/render/canvas/PolygonBuilder.js","webpack://[name]/./node_modules/ol/geom/flat/straightchunk.js","webpack://[name]/./node_modules/ol/render/canvas/TextBuilder.js","webpack://[name]/./node_modules/ol/render/canvas/BuilderGroup.js","webpack://[name]/./node_modules/ol/geom/flat/textpath.js","webpack://[name]/./node_modules/ol/render/canvas/Executor.js","webpack://[name]/./node_modules/ol/render/canvas/ExecutorGroup.js","webpack://[name]/./node_modules/ol/renderer/canvas/VectorLayer.js","webpack://[name]/./node_modules/ol/render/canvas/hitdetect.js","webpack://[name]/./node_modules/ol/layer/Vector.js","webpack://[name]/./node_modules/ol/loadingstrategy.js","webpack://[name]/./node_modules/ol/math.js","webpack://[name]/./node_modules/ol/obj.js","webpack://[name]/./node_modules/ol/pointer/EventType.js","webpack://[name]/./node_modules/ol/proj/epsg3857.js","webpack://[name]/./node_modules/ol/proj/epsg4326.js","webpack://[name]/./node_modules/ol/proj/projections.js","webpack://[name]/./node_modules/ol/proj.js","webpack://[name]/./node_modules/ol/proj/Projection.js","webpack://[name]/./node_modules/ol/proj/Units.js","webpack://[name]/./node_modules/ol/proj/proj4.js","webpack://[name]/./node_modules/ol/proj/transforms.js","webpack://[name]/./node_modules/ol/render.js","webpack://[name]/./node_modules/ol/render/Event.js","webpack://[name]/./node_modules/ol/render/EventType.js","webpack://[name]/./node_modules/ol/render/VectorContext.js","webpack://[name]/./node_modules/ol/render/canvas.js","webpack://[name]/./node_modules/ol/render/canvas/BuilderType.js","webpack://[name]/./node_modules/ol/render/canvas/Immediate.js","webpack://[name]/./node_modules/ol/renderer/Layer.js","webpack://[name]/./node_modules/ol/renderer/canvas/Layer.js","webpack://[name]/./node_modules/ol/renderer/vector.js","webpack://[name]/./node_modules/ol/reproj.js","webpack://[name]/./node_modules/ol/reproj/Triangulation.js","webpack://[name]/./node_modules/ol/reproj/common.js","webpack://[name]/./node_modules/ol/rotationconstraint.js","webpack://[name]/./node_modules/ol/size.js","webpack://[name]/./node_modules/ol/source/BingMaps.js","webpack://[name]/./node_modules/ol/net.js","webpack://[name]/./node_modules/ol/reproj/Image.js","webpack://[name]/./node_modules/ol/source/Image.js","webpack://[name]/./node_modules/ol/source/ImageWMS.js","webpack://[name]/./node_modules/ol/source/OSM.js","webpack://[name]/./node_modules/ol/source/Source.js","webpack://[name]/./node_modules/ol/source/State.js","webpack://[name]/./node_modules/ol/reproj/Tile.js","webpack://[name]/./node_modules/ol/source/Tile.js","webpack://[name]/./node_modules/ol/source/UrlTile.js","webpack://[name]/./node_modules/ol/source/TileEventType.js","webpack://[name]/./node_modules/ol/source/TileImage.js","webpack://[name]/./node_modules/ol/source/TileWMS.js","webpack://[name]/./node_modules/ol/featureloader.js","webpack://[name]/./node_modules/ol/source/Vector.js","webpack://[name]/./node_modules/ol/source/VectorEventType.js","webpack://[name]/./node_modules/ol/source/WMSServerType.js","webpack://[name]/./node_modules/ol/source/XYZ.js","webpack://[name]/./node_modules/ol/source/common.js","webpack://[name]/./node_modules/ol/sphere.js","webpack://[name]/./node_modules/ol/string.js","webpack://[name]/./node_modules/ol/structs/RBush.js","webpack://[name]/./node_modules/ol/style/RegularShape.js","webpack://[name]/./node_modules/ol/style/Circle.js","webpack://[name]/./node_modules/ol/style/Fill.js","webpack://[name]/./node_modules/ol/style/IconOrigin.js","webpack://[name]/./node_modules/ol/style/IconImage.js","webpack://[name]/./node_modules/ol/style/Icon.js","webpack://[name]/./node_modules/ol/style/IconAnchorUnits.js","webpack://[name]/./node_modules/ol/style/IconImageCache.js","webpack://[name]/./node_modules/ol/style/Image.js","webpack://[name]/./node_modules/ol/style/Stroke.js","webpack://[name]/./node_modules/ol/style/Style.js","webpack://[name]/./node_modules/ol/style/Text.js","webpack://[name]/./node_modules/ol/style/TextPlacement.js","webpack://[name]/./node_modules/ol/tilecoord.js","webpack://[name]/./node_modules/ol/tilegrid/TileGrid.js","webpack://[name]/./node_modules/ol/tilegrid.js","webpack://[name]/./node_modules/ol/tilegrid/common.js","webpack://[name]/./node_modules/ol/tileurlfunction.js","webpack://[name]/./node_modules/ol/transform.js","webpack://[name]/./node_modules/ol/uri.js","webpack://[name]/./node_modules/ol/util.js","webpack://[name]/./node_modules/ol/xml.js","webpack://[name]/./node_modules/proj4/lib/constants/values.js","webpack://[name]/./node_modules/proj4/lib/constants/PrimeMeridian.js","webpack://[name]/./node_modules/proj4/lib/constants/units.js","webpack://[name]/./node_modules/proj4/lib/match.js","webpack://[name]/./node_modules/proj4/lib/projString.js","webpack://[name]/./node_modules/wkt-parser/parser.js","webpack://[name]/./node_modules/wkt-parser/process.js","webpack://[name]/./node_modules/wkt-parser/index.js","webpack://[name]/./node_modules/proj4/lib/defs.js","webpack://[name]/./node_modules/proj4/lib/global.js","webpack://[name]/./node_modules/proj4/lib/parseCode.js","webpack://[name]/./node_modules/proj4/lib/extend.js","webpack://[name]/./node_modules/proj4/lib/common/msfnz.js","webpack://[name]/./node_modules/proj4/lib/common/sign.js","webpack://[name]/./node_modules/proj4/lib/common/adjust_lon.js","webpack://[name]/./node_modules/proj4/lib/common/tsfnz.js","webpack://[name]/./node_modules/proj4/lib/common/phi2z.js","webpack://[name]/./node_modules/proj4/lib/projections/longlat.js","webpack://[name]/./node_modules/proj4/lib/projections.js","webpack://[name]/./node_modules/proj4/lib/projections/merc.js","webpack://[name]/./node_modules/proj4/lib/constants/Ellipsoid.js","webpack://[name]/./node_modules/proj4/lib/constants/Datum.js","webpack://[name]/./node_modules/proj4/lib/Proj.js","webpack://[name]/./node_modules/proj4/lib/deriveConstants.js","webpack://[name]/./node_modules/proj4/lib/datum.js","webpack://[name]/./node_modules/proj4/lib/datum_transform.js","webpack://[name]/./node_modules/proj4/lib/adjust_axis.js","webpack://[name]/./node_modules/proj4/lib/common/toPoint.js","webpack://[name]/./node_modules/proj4/lib/checkSanity.js","webpack://[name]/./node_modules/proj4/lib/transform.js","webpack://[name]/./node_modules/proj4/lib/datumUtils.js","webpack://[name]/./node_modules/proj4/lib/core.js","webpack://[name]/./node_modules/mgrs/mgrs.js","webpack://[name]/./node_modules/proj4/lib/Point.js","webpack://[name]/./node_modules/proj4/lib/common/pj_enfn.js","webpack://[name]/./node_modules/proj4/lib/common/pj_mlfn.js","webpack://[name]/./node_modules/proj4/lib/common/pj_inv_mlfn.js","webpack://[name]/./node_modules/proj4/lib/projections/tmerc.js","webpack://[name]/./node_modules/proj4/lib/common/sinh.js","webpack://[name]/./node_modules/proj4/lib/common/hypot.js","webpack://[name]/./node_modules/proj4/lib/common/gatg.js","webpack://[name]/./node_modules/proj4/lib/common/clens_cmplx.js","webpack://[name]/./node_modules/proj4/lib/common/cosh.js","webpack://[name]/./node_modules/proj4/lib/projections/etmerc.js","webpack://[name]/./node_modules/proj4/lib/common/clens.js","webpack://[name]/./node_modules/proj4/lib/common/asinhy.js","webpack://[name]/./node_modules/proj4/lib/common/log1py.js","webpack://[name]/./node_modules/proj4/lib/projections/utm.js","webpack://[name]/./node_modules/proj4/lib/common/adjust_zone.js","webpack://[name]/./node_modules/proj4/lib/common/srat.js","webpack://[name]/./node_modules/proj4/lib/projections/gauss.js","webpack://[name]/./node_modules/proj4/lib/projections/sterea.js","webpack://[name]/./node_modules/proj4/lib/projections/stere.js","webpack://[name]/./node_modules/proj4/lib/projections/somerc.js","webpack://[name]/./node_modules/proj4/lib/projections/omerc.js","webpack://[name]/./node_modules/proj4/lib/projections/lcc.js","webpack://[name]/./node_modules/proj4/lib/projections/krovak.js","webpack://[name]/./node_modules/proj4/lib/common/mlfn.js","webpack://[name]/./node_modules/proj4/lib/common/e0fn.js","webpack://[name]/./node_modules/proj4/lib/common/e1fn.js","webpack://[name]/./node_modules/proj4/lib/common/e2fn.js","webpack://[name]/./node_modules/proj4/lib/common/e3fn.js","webpack://[name]/./node_modules/proj4/lib/common/gN.js","webpack://[name]/./node_modules/proj4/lib/common/adjust_lat.js","webpack://[name]/./node_modules/proj4/lib/common/imlfn.js","webpack://[name]/./node_modules/proj4/lib/projections/cass.js","webpack://[name]/./node_modules/proj4/lib/common/qsfnz.js","webpack://[name]/./node_modules/proj4/lib/projections/laea.js","webpack://[name]/./node_modules/proj4/lib/common/asinz.js","webpack://[name]/./node_modules/proj4/lib/projections/aea.js","webpack://[name]/./node_modules/proj4/lib/projections/gnom.js","webpack://[name]/./node_modules/proj4/lib/projections/cea.js","webpack://[name]/./node_modules/proj4/lib/common/iqsfnz.js","webpack://[name]/./node_modules/proj4/lib/projections/eqc.js","webpack://[name]/./node_modules/proj4/lib/projections/poly.js","webpack://[name]/./node_modules/proj4/lib/projections/nzmg.js","webpack://[name]/./node_modules/proj4/lib/projections/mill.js","webpack://[name]/./node_modules/proj4/lib/projections/sinu.js","webpack://[name]/./node_modules/proj4/lib/projections/moll.js","webpack://[name]/./node_modules/proj4/lib/projections/eqdc.js","webpack://[name]/./node_modules/proj4/lib/projections/vandg.js","webpack://[name]/./node_modules/proj4/lib/projections/aeqd.js","webpack://[name]/./node_modules/proj4/lib/projections/ortho.js","webpack://[name]/./node_modules/proj4/lib/projections/qsc.js","webpack://[name]/./node_modules/proj4/lib/projections/robin.js","webpack://[name]/./node_modules/proj4/projs.js","webpack://[name]/./node_modules/proj4/lib/index.js","webpack://[name]/./node_modules/rbush/rbush.js","webpack://[name]/./node_modules/ts-event-bus/build/Channels/ChunkedChannel.js","webpack://[name]/./node_modules/ts-event-bus/build/Channels/GenericChannel.js","webpack://[name]/./node_modules/ts-event-bus/build/Constants.js","webpack://[name]/./node_modules/ts-event-bus/build/Events.js","webpack://[name]/./node_modules/ts-event-bus/build/Handler.js","webpack://[name]/./node_modules/ts-event-bus/build/Message.js","webpack://[name]/./node_modules/ts-event-bus/build/Slot.js","webpack://[name]/./node_modules/ts-event-bus/build/Transport.js","webpack://[name]/./node_modules/ts-event-bus/build/index.js"],"sourcesContent":["/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing. The function also has a property 'clear' \n * that is a function which will clear the timer to prevent previously scheduled executions. \n *\n * @source underscore.js\n * @see http://unscriptable.com/2009/03/20/debouncing-javascript-methods/\n * @param {Function} function to wrap\n * @param {Number} timeout in ms (`100`)\n * @param {Boolean} whether to execute at the beginning (`false`)\n * @api public\n */\nfunction debounce(func, wait, immediate){\n var timeout, args, context, timestamp, result;\n if (null == wait) wait = 100;\n\n function later() {\n var last = Date.now() - timestamp;\n\n if (last < wait && last >= 0) {\n timeout = setTimeout(later, wait - last);\n } else {\n timeout = null;\n if (!immediate) {\n result = func.apply(context, args);\n context = args = null;\n }\n }\n };\n\n var debounced = function(){\n context = this;\n args = arguments;\n timestamp = Date.now();\n var callNow = immediate && !timeout;\n if (!timeout) timeout = setTimeout(later, wait);\n if (callNow) {\n result = func.apply(context, args);\n context = args = null;\n }\n\n return result;\n };\n\n debounced.clear = function() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n };\n \n debounced.flush = function() {\n if (timeout) {\n result = func.apply(context, args);\n context = args = null;\n \n clearTimeout(timeout);\n timeout = null;\n }\n };\n\n return debounced;\n};\n\n// Adds compatibility for ES modules\ndebounce.debounce = debounce;\n\nmodule.exports = debounce;\n","\"use strict\";\r\n/*****************************************************************************\r\n*\r\n* GT_OSGB holds OSGB grid coordinates **\r\n*\r\n*****************************************************************************/\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar OSGB = /** @class */ (function () {\r\n function OSGB() {\r\n var _this = this;\r\n this.initialised = false;\r\n this.northings = 0;\r\n this.eastings = 0;\r\n this.status = \"Undefined\";\r\n this.init = function () {\r\n if (!_this.initialised) {\r\n _this.prefixes = new Array(new Array(\"SV\", \"SW\", \"SX\", \"SY\", \"SZ\", \"TV\", \"TW\"), new Array(\"SQ\", \"SR\", \"SS\", \"ST\", \"SU\", \"TQ\", \"TR\"), new Array(\"SL\", \"SM\", \"SN\", \"SO\", \"SP\", \"TL\", \"TM\"), new Array(\"SF\", \"SG\", \"SH\", \"SJ\", \"SK\", \"TF\", \"TG\"), new Array(\"SA\", \"SB\", \"SC\", \"SD\", \"SE\", \"TA\", \"TB\"), new Array(\"NV\", \"NW\", \"NX\", \"NY\", \"NZ\", \"OV\", \"OW\"), new Array(\"NQ\", \"NR\", \"NS\", \"NT\", \"NU\", \"OQ\", \"OR\"), new Array(\"NL\", \"NM\", \"NN\", \"NO\", \"NP\", \"OL\", \"OM\"), new Array(\"NF\", \"NG\", \"NH\", \"NJ\", \"NK\", \"OF\", \"OG\"), new Array(\"NA\", \"NB\", \"NC\", \"ND\", \"NE\", \"OA\", \"OB\"), new Array(\"HV\", \"HW\", \"HX\", \"HY\", \"HZ\", \"JV\", \"JW\"), new Array(\"HQ\", \"HR\", \"HS\", \"HT\", \"HU\", \"JQ\", \"JR\"), new Array(\"HL\", \"HM\", \"HN\", \"HO\", \"HP\", \"JL\", \"JM\"));\r\n _this.initialised = true;\r\n }\r\n };\r\n this.SetError = function (msg) {\r\n _this.status = msg;\r\n };\r\n this.SetGridCoordinates = function (eastings, northings) {\r\n _this.northings = northings;\r\n _this.eastings = eastings;\r\n _this.status = \"OK\";\r\n };\r\n this.LogGridRef = function () {\r\n var gr = _this.GetGridRef(4);\r\n console.log(gr);\r\n };\r\n this.GetGridRef = function (precision) {\r\n if (precision < 0) {\r\n precision = 0;\r\n }\r\n if (precision > 5) {\r\n precision = 5;\r\n }\r\n var e;\r\n var n;\r\n var y = 0;\r\n var x = 0;\r\n if (precision > 0) {\r\n y = Math.floor(_this.northings / 100000);\r\n x = Math.floor(_this.eastings / 100000);\r\n e = Math.round(_this.eastings % 100000);\r\n n = Math.round(_this.northings % 100000);\r\n var div = (5 - precision);\r\n /* CHANGED to round DOWN, not up\r\n gives more precise co-ords close to gridlines*/\r\n e = Math.floor(e / Math.pow(10, div));\r\n n = Math.floor(n / Math.pow(10, div));\r\n //e=Math.round(e / Math.pow(10, div));\r\n //n=Math.round(n / Math.pow(10, div));\r\n }\r\n var prefix = _this.prefixes[y][x];\r\n return prefix + \" \" + _this._zeropad(e, precision) + \" \" + _this._zeropad(n, precision);\r\n };\r\n this.ParseGridRef = function (landranger) {\r\n var ok = false;\r\n var precision;\r\n _this.northings = 0;\r\n _this.eastings = 0;\r\n for (precision = 5; precision >= 1; precision--) {\r\n var pattern = new RegExp(\"^([A-Z]{2})\\\\s*(\\\\d{\" + precision + \"})\\\\s*(\\\\d{\" + precision + \"})$\", \"i\");\r\n var gridRef = landranger.match(pattern);\r\n if (gridRef) {\r\n var gridSheet = gridRef[1];\r\n var gridEast = 0;\r\n var gridNorth = 0;\r\n //5x1 4x10 3x100 2x1000 1x10000\r\n if (precision > 0) {\r\n var mult = Math.pow(10, 5 - precision);\r\n gridEast = parseInt(gridRef[2], 10) * mult;\r\n gridNorth = parseInt(gridRef[3], 10) * mult;\r\n }\r\n var x = void 0, y = void 0;\r\n search: for (y = 0; y < _this.prefixes.length; y++) {\r\n for (x = 0; x < _this.prefixes[y].length; x++)\r\n if (_this.prefixes[y][x] == gridSheet) {\r\n _this.eastings = (x * 100000) + gridEast;\r\n _this.northings = (y * 100000) + gridNorth;\r\n ok = true;\r\n break search;\r\n }\r\n }\r\n }\r\n }\r\n return ok;\r\n };\r\n this.GetWGS84 = function () {\r\n var height = 0;\r\n var lat1 = GtMath.E_N_to_Lat(_this.eastings, _this.northings, 6377563.396, 6356256.910, 400000, -100000, 0.999601272, 49.00000, -2.00000);\r\n var lon1 = GtMath.E_N_to_Long(_this.eastings, _this.northings, 6377563.396, 6356256.910, 400000, -100000, 0.999601272, 49.00000, -2.00000);\r\n var x1 = GtMath.Lat_Long_H_to_X(lat1, lon1, height, 6377563.396, 6356256.910);\r\n var y1 = GtMath.Lat_Long_H_to_Y(lat1, lon1, height, 6377563.396, 6356256.910);\r\n var z1 = GtMath.Lat_H_to_Z(lat1, height, 6377563.396, 6356256.910);\r\n var x2 = GtMath.Helmert_X(x1, y1, z1, 446.448, 0.2470, 0.8421, -20.4894);\r\n var y2 = GtMath.Helmert_Y(x1, y1, z1, -125.157, 0.1502, 0.8421, -20.4894);\r\n var z2 = GtMath.Helmert_Z(x1, y1, z1, 542.060, 0.1502, 0.2470, -20.4894);\r\n var latitude = GtMath.XYZ_to_Lat(x2, y2, z2, 6378137.000, 6356752.313);\r\n var longitude = GtMath.XYZ_to_Long(x2, y2);\r\n var wgs84 = new WGS84(latitude, longitude);\r\n return wgs84;\r\n };\r\n this._zeropad = function (num, len) {\r\n var str = num.toString();\r\n while (str.length < len) {\r\n str = '0' + str;\r\n }\r\n return str;\r\n };\r\n this.init();\r\n }\r\n Object.defineProperty(OSGB.prototype, \"Northings\", {\r\n get: function () {\r\n return this.northings;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(OSGB.prototype, \"Eastings\", {\r\n get: function () {\r\n return this.eastings;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return OSGB;\r\n}());\r\nexports.OSGB = OSGB;\r\n/*****************************************************************************\r\n*\r\n* GT_WGS84 holds WGS84 latitude and longitude\r\n*\r\n*****************************************************************************/\r\nvar WGS84 = /** @class */ (function () {\r\n function WGS84(latitude, longitude) {\r\n var _this = this;\r\n this.latitude = 0;\r\n this.longitude = 0;\r\n this.ParseString = function (text) {\r\n var ok = false;\r\n var str = text;\r\n //N 51° 53.947 W 000° 10.018\r\n var pattern = /([ns])\\s*(\\d+)[°\\s]+(\\d+\\.\\d+)\\s+([we])\\s*(\\d+)[°\\s]+(\\d+\\.\\d+)/i;\r\n var matches = str.match(pattern);\r\n if (matches) {\r\n ok = true;\r\n var latsign = (matches[1] == 's' || matches[1] == 'S') ? -1 : 1;\r\n var longsign = (matches[4] == 'w' || matches[4] == 'W') ? -1 : 1;\r\n var d1 = parseFloat(matches[2]);\r\n var m1 = parseFloat(matches[3]);\r\n var d2 = parseFloat(matches[5]);\r\n var m2 = parseFloat(matches[6]);\r\n this.latitude = latsign * (d1 + (m1 / 60.0));\r\n this.longitude = longsign * (d2 + (m2 / 60.0));\r\n }\r\n return ok;\r\n };\r\n this.IsGreatBritain = function () {\r\n return _this.latitude > 49 &&\r\n _this.latitude < 62 &&\r\n _this.longitude > -9.5 &&\r\n _this.longitude < 2.3;\r\n };\r\n this.IsIreland = function () {\r\n return _this.latitude > 51.2 &&\r\n _this.latitude < 55.73 &&\r\n _this.longitude > -12.2 &&\r\n _this.longitude < -4.8;\r\n };\r\n this.GetOSGB = function () {\r\n var osgb = new OSGB();\r\n if (_this.IsGreatBritain()) {\r\n var height = 0;\r\n var x1 = GtMath.Lat_Long_H_to_X(_this.latitude, _this.longitude, height, 6378137.00, 6356752.313);\r\n var y1 = GtMath.Lat_Long_H_to_Y(_this.latitude, _this.longitude, height, 6378137.00, 6356752.313);\r\n var z1 = GtMath.Lat_H_to_Z(_this.latitude, height, 6378137.00, 6356752.313);\r\n var x2 = GtMath.Helmert_X(x1, y1, z1, -446.448, -0.2470, -0.8421, 20.4894);\r\n var y2 = GtMath.Helmert_Y(x1, y1, z1, 125.157, -0.1502, -0.8421, 20.4894);\r\n var z2 = GtMath.Helmert_Z(x1, y1, z1, -542.060, -0.1502, -0.2470, 20.4894);\r\n var latitude2 = GtMath.XYZ_to_Lat(x2, y2, z2, 6377563.396, 6356256.910);\r\n var longitude2 = GtMath.XYZ_to_Long(x2, y2);\r\n var e = GtMath.Lat_Long_to_East(latitude2, longitude2, 6377563.396, 6356256.910, 400000, 0.999601272, 49.00000, -2.00000);\r\n var n = GtMath.Lat_Long_to_North(latitude2, longitude2, 6377563.396, 6356256.910, 400000, -100000, 0.999601272, 49.00000, -2.00000);\r\n osgb.SetGridCoordinates(Math.round(e), Math.round(n));\r\n }\r\n else {\r\n osgb.SetError(\"Coordinate not within Great Britain\");\r\n }\r\n return osgb;\r\n };\r\n this.latitude = latitude;\r\n this.longitude = longitude;\r\n }\r\n Object.defineProperty(WGS84.prototype, \"Latitude\", {\r\n get: function () {\r\n return this.latitude;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(WGS84.prototype, \"Longitude\", {\r\n get: function () {\r\n return this.longitude;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return WGS84;\r\n}());\r\nexports.WGS84 = WGS84;\r\n/*****************************************************************************\r\n*\r\n* GtMath is a collection of static methods doing all the nasty sums\r\n*\r\n*****************************************************************************/\r\nvar GtMath = /** @class */ (function () {\r\n function GtMath() {\r\n }\r\n GtMath.E_N_to_Lat = function (East, North, a, b, e0, n0, f0, PHI0, LAM0) {\r\n //Un-project Transverse Mercator eastings and northings back to latitude.\r\n //Input: - _\r\n //eastings (East) and northings (North) in meters; _\r\n //ellipsoid axis dimensions (a & b) in meters; _\r\n //eastings (e0) and northings (n0) of false origin in meters; _\r\n //central meridian scale factor (f0) and _\r\n //latitude (PHI0) and longitude (LAM0) of false origin in decimal degrees.\r\n //'REQUIRES THE \"Marc\" AND \"InitialLat\" FUNCTIONS\r\n //Convert angle measures to radians\r\n var Pi = 3.14159265358979;\r\n var RadPHI0 = PHI0 * (Pi / 180);\r\n var RadLAM0 = LAM0 * (Pi / 180);\r\n //Compute af0, bf0, e squared (e2), n and Et\r\n var af0 = a * f0;\r\n var bf0 = b * f0;\r\n var e2 = (Math.pow(af0, 2) - Math.pow(bf0, 2)) / Math.pow(af0, 2);\r\n var n = (af0 - bf0) / (af0 + bf0);\r\n var Et = East - e0;\r\n //Compute initial value for latitude (PHI) in radians\r\n var PHId = GtMath.InitialLat(North, n0, af0, RadPHI0, n, bf0);\r\n //Compute nu, rho and eta2 using value for PHId\r\n var nu = af0 / (Math.sqrt(1 - (e2 * (Math.pow(Math.sin(PHId), 2)))));\r\n var rho = (nu * (1 - e2)) / (1 - (e2 * Math.pow(Math.sin(PHId), 2)));\r\n var eta2 = (nu / rho) - 1;\r\n //Compute Latitude\r\n var VII = (Math.tan(PHId)) / (2 * rho * nu);\r\n var VIII = ((Math.tan(PHId)) / (24 * rho * Math.pow(nu, 3))) * (5 + (3 * (Math.pow(Math.tan(PHId), 2))) + eta2 - (9 * eta2 * (Math.pow(Math.tan(PHId), 2))));\r\n var IX = ((Math.tan(PHId)) / (720 * rho * Math.pow(nu, 5))) * (61 + (90 * ((Math.tan(PHId)) ^ 2)) + (45 * (Math.pow(Math.tan(PHId), 4))));\r\n var E_N_to_Lat = (180 / Pi) * (PHId - (Math.pow(Et, 2) * VII) + (Math.pow(Et, 4) * VIII) - ((Et ^ 6) * IX));\r\n return (E_N_to_Lat);\r\n };\r\n GtMath.E_N_to_Long = function (East, North, a, b, e0, n0, f0, PHI0, LAM0) {\r\n //Un-project Transverse Mercator eastings and northings back to longitude.\r\n //Input: - _\r\n //eastings (East) and northings (North) in meters; _\r\n //ellipsoid axis dimensions (a & b) in meters; _\r\n //eastings (e0) and northings (n0) of false origin in meters; _\r\n //central meridian scale factor (f0) and _\r\n //latitude (PHI0) and longitude (LAM0) of false origin in decimal degrees.\r\n //REQUIRES THE \"Marc\" AND \"InitialLat\" FUNCTIONS\r\n //Convert angle measures to radians\r\n var Pi = 3.14159265358979;\r\n var RadPHI0 = PHI0 * (Pi / 180);\r\n var RadLAM0 = LAM0 * (Pi / 180);\r\n //Compute af0, bf0, e squared (e2), n and Et\r\n var af0 = a * f0;\r\n var bf0 = b * f0;\r\n var e2 = (Math.pow(af0, 2) - Math.pow(bf0, 2)) / Math.pow(af0, 2);\r\n var n = (af0 - bf0) / (af0 + bf0);\r\n var Et = East - e0;\r\n //Compute initial value for latitude (PHI) in radians\r\n var PHId = GtMath.InitialLat(North, n0, af0, RadPHI0, n, bf0);\r\n //Compute nu, rho and eta2 using value for PHId\r\n var nu = af0 / (Math.sqrt(1 - (e2 * (Math.pow(Math.sin(PHId), 2)))));\r\n var rho = (nu * (1 - e2)) / (1 - (e2 * Math.pow(Math.sin(PHId), 2)));\r\n var eta2 = (nu / rho) - 1;\r\n //Compute Longitude\r\n var X = (Math.pow(Math.cos(PHId), -1)) / nu;\r\n var XI = ((Math.pow(Math.cos(PHId), -1)) / (6 * Math.pow(nu, 3))) * ((nu / rho) + (2 * (Math.pow(Math.tan(PHId), 2))));\r\n var XII = ((Math.pow(Math.cos(PHId), -1)) / (120 * Math.pow(nu, 5))) * (5 + (28 * (Math.pow(Math.tan(PHId), 2))) + (24 * (Math.pow(Math.tan(PHId), 4))));\r\n var XIIA = ((Math.pow(Math.cos(PHId), -1)) / (5040 * Math.pow(nu, 7))) * (61 + (662 * (Math.pow(Math.tan(PHId), 2))) + (1320 * (Math.pow(Math.tan(PHId), 4))) + (720 * (Math.pow(Math.tan(PHId), 6))));\r\n var E_N_to_Long = (180 / Pi) * (RadLAM0 + (Et * X) - (Math.pow(Et, 3) * XI) + (Math.pow(Et, 5) * XII) - (Math.pow(Et, 7) * XIIA));\r\n return E_N_to_Long;\r\n };\r\n GtMath.InitialLat = function (North, n0, afo, PHI0, n, bfo) {\r\n //Compute initial value for Latitude (PHI) IN RADIANS.\r\n //Input: - _\r\n //northing of point (North) and northing of false origin (n0) in meters; _\r\n //semi major axis multiplied by central meridian scale factor (af0) in meters; _\r\n //latitude of false origin (PHI0) IN RADIANS; _\r\n //n (computed from a, b and f0) and _\r\n //ellipsoid semi major axis multiplied by central meridian scale factor (bf0) in meters.\r\n //REQUIRES THE \"Marc\" FUNCTION\r\n //THIS FUNCTION IS CALLED BY THE \"E_N_to_Lat\", \"E_N_to_Long\" and \"E_N_to_C\" FUNCTIONS\r\n //THIS FUNCTION IS ALSO USED ON IT'S OWN IN THE \"Projection and Transformation Calculations.xls\" SPREADSHEET\r\n //First PHI value (PHI1)\r\n var PHI1 = ((North - n0) / afo) + PHI0;\r\n //Calculate M\r\n var M = GtMath.Marc(bfo, n, PHI0, PHI1);\r\n //Calculate new PHI value (PHI2)\r\n var PHI2 = ((North - n0 - M) / afo) + PHI1;\r\n //Iterate to get final value for InitialLat\r\n while (Math.abs(North - n0 - M) > 0.00001) {\r\n PHI2 = ((North - n0 - M) / afo) + PHI1;\r\n M = GtMath.Marc(bfo, n, PHI0, PHI2);\r\n PHI1 = PHI2;\r\n }\r\n return PHI2;\r\n };\r\n GtMath.Lat_Long_H_to_X = function (PHI, LAM, H, a, b) {\r\n // Convert geodetic coords lat (PHI), long (LAM) and height (H) to cartesian X coordinate.\r\n // Input: - _\r\n // Latitude (PHI)& Longitude (LAM) both in decimal degrees; _\r\n // Ellipsoidal height (H) and ellipsoid axis dimensions (a & b) all in meters.\r\n // Convert angle measures to radians\r\n var Pi = 3.14159265358979;\r\n var RadPHI = PHI * (Pi / 180);\r\n var RadLAM = LAM * (Pi / 180);\r\n // Compute eccentricity squared and nu\r\n var e2 = (Math.pow(a, 2) - Math.pow(b, 2)) / Math.pow(a, 2);\r\n var V = a / (Math.sqrt(1 - (e2 * (Math.pow(Math.sin(RadPHI), 2)))));\r\n // Compute X\r\n return (V + H) * (Math.cos(RadPHI)) * (Math.cos(RadLAM));\r\n };\r\n GtMath.Lat_Long_H_to_Y = function (PHI, LAM, H, a, b) {\r\n // Convert geodetic coords lat (PHI), long (LAM) and height (H) to cartesian Y coordinate.\r\n // Input: - _\r\n // Latitude (PHI)& Longitude (LAM) both in decimal degrees; _\r\n // Ellipsoidal height (H) and ellipsoid axis dimensions (a & b) all in meters.\r\n // Convert angle measures to radians\r\n var Pi = 3.14159265358979;\r\n var RadPHI = PHI * (Pi / 180);\r\n var RadLAM = LAM * (Pi / 180);\r\n // Compute eccentricity squared and nu\r\n var e2 = (Math.pow(a, 2) - Math.pow(b, 2)) / Math.pow(a, 2);\r\n var V = a / (Math.sqrt(1 - (e2 * (Math.pow(Math.sin(RadPHI), 2)))));\r\n // Compute Y\r\n return (V + H) * (Math.cos(RadPHI)) * (Math.sin(RadLAM));\r\n };\r\n GtMath.Lat_H_to_Z = function (PHI, H, a, b) {\r\n // Convert geodetic coord components latitude (PHI) and height (H) to cartesian Z coordinate.\r\n // Input: - _\r\n // Latitude (PHI) decimal degrees; _\r\n // Ellipsoidal height (H) and ellipsoid axis dimensions (a & b) all in meters.\r\n // Convert angle measures to radians\r\n var Pi = 3.14159265358979;\r\n var RadPHI = PHI * (Pi / 180);\r\n // Compute eccentricity squared and nu\r\n var e2 = (Math.pow(a, 2) - Math.pow(b, 2)) / Math.pow(a, 2);\r\n var V = a / (Math.sqrt(1 - (e2 * (Math.pow(Math.sin(RadPHI), 2)))));\r\n // Compute X\r\n return ((V * (1 - e2)) + H) * (Math.sin(RadPHI));\r\n };\r\n GtMath.Helmert_X = function (X, Y, Z, DX, Y_Rot, Z_Rot, s) {\r\n // (X, Y, Z, DX, Y_Rot, Z_Rot, s)\r\n // Computed Helmert transformed X coordinate.\r\n // Input: - _\r\n // cartesian XYZ coords (X,Y,Z), X translation (DX) all in meters ; _\r\n // Y and Z rotations in seconds of arc (Y_Rot, Z_Rot) and scale in ppm (s).\r\n // Convert rotations to radians and ppm scale to a factor\r\n var Pi = 3.14159265358979;\r\n var sfactor = s * 0.000001;\r\n var RadY_Rot = (Y_Rot / 3600) * (Pi / 180);\r\n var RadZ_Rot = (Z_Rot / 3600) * (Pi / 180);\r\n //Compute transformed X coord\r\n return (X + (X * sfactor) - (Y * RadZ_Rot) + (Z * RadY_Rot) + DX);\r\n };\r\n GtMath.Helmert_Y = function (X, Y, Z, DY, X_Rot, Z_Rot, s) {\r\n // (X, Y, Z, DY, X_Rot, Z_Rot, s)\r\n // Computed Helmert transformed Y coordinate.\r\n // Input: - _\r\n // cartesian XYZ coords (X,Y,Z), Y translation (DY) all in meters ; _\r\n // X and Z rotations in seconds of arc (X_Rot, Z_Rot) and scale in ppm (s).\r\n // Convert rotations to radians and ppm scale to a factor\r\n var Pi = 3.14159265358979;\r\n var sfactor = s * 0.000001;\r\n var RadX_Rot = (X_Rot / 3600) * (Pi / 180);\r\n var RadZ_Rot = (Z_Rot / 3600) * (Pi / 180);\r\n // Compute transformed Y coord\r\n return (X * RadZ_Rot) + Y + (Y * sfactor) - (Z * RadX_Rot) + DY;\r\n };\r\n GtMath.Helmert_Z = function (X, Y, Z, DZ, X_Rot, Y_Rot, s) {\r\n // (X, Y, Z, DZ, X_Rot, Y_Rot, s)\r\n // Computed Helmert transformed Z coordinate.\r\n // Input: - _\r\n // cartesian XYZ coords (X,Y,Z), Z translation (DZ) all in meters ; _\r\n // X and Y rotations in seconds of arc (X_Rot, Y_Rot) and scale in ppm (s).\r\n //\r\n // Convert rotations to radians and ppm scale to a factor\r\n var Pi = 3.14159265358979;\r\n var sfactor = s * 0.000001;\r\n var RadX_Rot = (X_Rot / 3600) * (Pi / 180);\r\n var RadY_Rot = (Y_Rot / 3600) * (Pi / 180);\r\n // Compute transformed Z coord\r\n return (-1 * X * RadY_Rot) + (Y * RadX_Rot) + Z + (Z * sfactor) + DZ;\r\n };\r\n GtMath.XYZ_to_Lat = function (X, Y, Z, a, b) {\r\n // Convert XYZ to Latitude (PHI) in Dec Degrees.\r\n // Input: - _\r\n // XYZ cartesian coords (X,Y,Z) and ellipsoid axis dimensions (a & b), all in meters.\r\n // THIS FUNCTION REQUIRES THE \"Iterate_XYZ_to_Lat\" FUNCTION\r\n // THIS FUNCTION IS CALLED BY THE \"XYZ_to_H\" FUNCTION\r\n var RootXYSqr = Math.sqrt(Math.pow(X, 2) + Math.pow(Y, 2));\r\n var e2 = (Math.pow(a, 2) - Math.pow(b, 2)) / Math.pow(a, 2);\r\n var PHI1 = Math.atan2(Z, (RootXYSqr * (1 - e2)));\r\n var PHI = GtMath.Iterate_XYZ_to_Lat(a, e2, PHI1, Z, RootXYSqr);\r\n var Pi = 3.14159265358979;\r\n return PHI * (180 / Pi);\r\n };\r\n GtMath.Iterate_XYZ_to_Lat = function (a, e2, PHI1, Z, RootXYSqr) {\r\n // Iteratively computes Latitude (PHI).\r\n // Input: - _\r\n // ellipsoid semi major axis (a) in meters; _\r\n // eta squared (e2); _\r\n // estimated value for latitude (PHI1) in radians; _\r\n // cartesian Z coordinate (Z) in meters; _\r\n // RootXYSqr computed from X & Y in meters.\r\n // THIS FUNCTION IS CALLED BY THE \"XYZ_to_PHI\" FUNCTION\r\n // THIS FUNCTION IS ALSO USED ON IT'S OWN IN THE _\r\n // \"Projection and Transformation Calculations.xls\" SPREADSHEET\r\n var V = a / (Math.sqrt(1 - (e2 * Math.pow(Math.sin(PHI1), 2))));\r\n var PHI2 = Math.atan2((Z + (e2 * V * (Math.sin(PHI1)))), RootXYSqr);\r\n while (Math.abs(PHI1 - PHI2) > 0.000000001) {\r\n PHI1 = PHI2;\r\n V = a / (Math.sqrt(1 - (e2 * Math.pow(Math.sin(PHI1), 2))));\r\n PHI2 = Math.atan2((Z + (e2 * V * (Math.sin(PHI1)))), RootXYSqr);\r\n }\r\n return PHI2;\r\n };\r\n GtMath.XYZ_to_Long = function (X, Y) {\r\n // Convert XYZ to Longitude (LAM) in Dec Degrees.\r\n // Input: - _\r\n // X and Y cartesian coords in meters.\r\n var Pi = 3.14159265358979;\r\n return Math.atan2(Y, X) * (180 / Pi);\r\n };\r\n GtMath.Lat_Long_to_East = function (PHI, LAM, a, b, e0, f0, PHI0, LAM0) {\r\n //Project Latitude and longitude to Transverse Mercator eastings.\r\n //Input: - _\r\n // Latitude (PHI) and Longitude (LAM) in decimal degrees; _\r\n // ellipsoid axis dimensions (a & b) in meters; _\r\n // eastings of false origin (e0) in meters; _\r\n // central meridian scale factor (f0); _\r\n // latitude (PHI0) and longitude (LAM0) of false origin in decimal degrees.\r\n // Convert angle measures to radians\r\n var Pi = 3.14159265358979;\r\n var RadPHI = PHI * (Pi / 180);\r\n var RadLAM = LAM * (Pi / 180);\r\n var RadPHI0 = PHI0 * (Pi / 180);\r\n var RadLAM0 = LAM0 * (Pi / 180);\r\n var af0 = a * f0;\r\n var bf0 = b * f0;\r\n var e2 = (Math.pow(af0, 2) - Math.pow(bf0, 2)) / Math.pow(af0, 2);\r\n var n = (af0 - bf0) / (af0 + bf0);\r\n var nu = af0 / (Math.sqrt(1 - (e2 * Math.pow(Math.sin(RadPHI), 2))));\r\n var rho = (nu * (1 - e2)) / (1 - (e2 * Math.pow(Math.sin(RadPHI), 2)));\r\n var eta2 = (nu / rho) - 1;\r\n var p = RadLAM - RadLAM0;\r\n var IV = nu * (Math.cos(RadPHI));\r\n var V = (nu / 6) * (Math.pow(Math.cos(RadPHI), 3)) * ((nu / rho) - (Math.pow(Math.tan(RadPHI), 2)));\r\n var VI = (nu / 120) * (Math.pow(Math.cos(RadPHI), 5)) * (5 - (18 * (Math.pow(Math.tan(RadPHI), 2))) + (Math.pow(Math.tan(RadPHI), 4)) + (14 * eta2) - (58 * (Math.pow(Math.tan(RadPHI), 2)) * eta2));\r\n return e0 + (p * IV) + (Math.pow(p, 3) * V) + (Math.pow(p, 5) * VI);\r\n };\r\n GtMath.Lat_Long_to_North = function (PHI, LAM, a, b, e0, n0, f0, PHI0, LAM0) {\r\n // Project Latitude and longitude to Transverse Mercator northings\r\n // Input: - _\r\n // Latitude (PHI) and Longitude (LAM) in decimal degrees; _\r\n // ellipsoid axis dimensions (a & b) in meters; _\r\n // eastings (e0) and northings (n0) of false origin in meters; _\r\n // central meridian scale factor (f0); _\r\n // latitude (PHI0) and longitude (LAM0) of false origin in decimal degrees.\r\n // REQUIRES THE \"Marc\" FUNCTION\r\n // Convert angle measures to radians\r\n var Pi = 3.14159265358979;\r\n var RadPHI = PHI * (Pi / 180);\r\n var RadLAM = LAM * (Pi / 180);\r\n var RadPHI0 = PHI0 * (Pi / 180);\r\n var RadLAM0 = LAM0 * (Pi / 180);\r\n var af0 = a * f0;\r\n var bf0 = b * f0;\r\n var e2 = (Math.pow(af0, 2) - Math.pow(bf0, 2)) / Math.pow(af0, 2);\r\n var n = (af0 - bf0) / (af0 + bf0);\r\n var nu = af0 / (Math.sqrt(1 - (e2 * Math.pow(Math.sin(RadPHI), 2))));\r\n var rho = (nu * (1 - e2)) / (1 - (e2 * Math.pow(Math.sin(RadPHI), 2)));\r\n var eta2 = (nu / rho) - 1;\r\n var p = RadLAM - RadLAM0;\r\n var M = GtMath.Marc(bf0, n, RadPHI0, RadPHI);\r\n var I = M + n0;\r\n var II = (nu / 2) * (Math.sin(RadPHI)) * (Math.cos(RadPHI));\r\n var III = ((nu / 24) * (Math.sin(RadPHI)) * (Math.pow(Math.cos(RadPHI), 3))) * (5 - (Math.pow(Math.tan(RadPHI), 2)) + (9 * eta2));\r\n var IIIA = ((nu / 720) * (Math.sin(RadPHI)) * (Math.pow(Math.cos(RadPHI), 5))) * (61 - (58 * (Math.pow(Math.tan(RadPHI), 2))) + (Math.pow(Math.tan(RadPHI), 4)));\r\n return I + (Math.pow(p, 2) * II) + (Math.pow(p, 4) * III) + (Math.pow(p, 6) * IIIA);\r\n };\r\n GtMath.Marc = function (bf0, n, PHI0, PHI) {\r\n //Compute meridional arc.\r\n //Input: - _\r\n // ellipsoid semi major axis multiplied by central meridian scale factor (bf0) in meters; _\r\n // n (computed from a, b and f0); _\r\n // lat of false origin (PHI0) and initial or final latitude of point (PHI) IN RADIANS.\r\n //THIS FUNCTION IS CALLED BY THE - _\r\n // \"Lat_Long_to_North\" and \"InitialLat\" FUNCTIONS\r\n // THIS FUNCTION IS ALSO USED ON IT'S OWN IN THE \"Projection and Transformation Calculations.xls\" SPREADSHEET\r\n return bf0 * (((1 + n + ((5 / 4) * Math.pow(n, 2)) + ((5 / 4) * Math.pow(n, 3))) * (PHI - PHI0)) - (((3 * n) + (3 * Math.pow(n, 2)) + ((21 / 8) * Math.pow(n, 3))) * (Math.sin(PHI - PHI0)) * (Math.cos(PHI + PHI0))) + ((((15 / 8) * Math.pow(n, 2)) + ((15 / 8) * Math.pow(n, 3))) * (Math.sin(2 * (PHI - PHI0))) * (Math.cos(2 * (PHI + PHI0)))) - (((35 / 24) * Math.pow(n, 3)) * (Math.sin(3 * (PHI - PHI0))) * (Math.cos(3 * (PHI + PHI0)))));\r\n };\r\n return GtMath;\r\n}());\r\n//# sourceMappingURL=GridReference.js.map","/*!\n * ol-contextmenu - v4.1.0\n * https://github.com/jonataswalker/ol-contextmenu\n * Built: Sat Aug 15 2020 10:43:26 GMT-0300 (Brasilia Standard Time)\n */\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e(require(\"ol/control/Control\")):\"function\"==typeof define&&define.amd?define([\"ol/control/Control\"],e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).ContextMenu=e(t.ol.control.Control)}(this,(function(t){\"use strict\";function e(t){return t&&\"object\"==typeof t&&\"default\"in t?t:{default:t}}var n=e(t),i=\"ol-ctx-menu\",o={namespace:i,container:i+\"-container\",separator:i+\"-separator\",submenu:i+\"-submenu\",hidden:i+\"-hidden\",icon:i+\"-icon\",zoomIn:i+\"-zoom-in\",zoomOut:i+\"-zoom-out\",unselectable:\"ol-unselectable\"},s=o,a=\"beforeopen\",r=\"open\",l=\"close\",c=\"contextmenu\",h={width:150,scrollAt:4,eventType:c,defaultItems:!0},p=[{text:\"Zoom In\",classname:o.zoomIn+\" \"+o.icon,callback:function(t,e){var n=e.getView();n.animate({zoom:+n.getZoom()+1,duration:700,center:t.coordinate})}},{text:\"Zoom Out\",classname:o.zoomOut+\" \"+o.icon,callback:function(t,e){var n=e.getView();n.animate({zoom:+n.getZoom()-1,duration:700,center:t.coordinate})}}];function u(t,e){if(void 0===e&&(e=\"Assertion failed\"),!t){if(\"undefined\"!=typeof Error)throw new Error(e);throw e}}function d(t){return/^\\d+$/.test(t)}function m(t,e){return t.classList?t.classList.contains(e):g(e).test(t.className)}function f(t,e,n){void 0===e&&(e=window.document);var i=Array.prototype.slice,o=[];if(/^(#?[\\w-]+|\\.[\\w-.]+)$/.test(t))switch(t[0]){case\"#\":o=[y(t.substr(1))];break;case\".\":o=i.call(e.getElementsByClassName(t.substr(1).replace(/\\./g,\" \")));break;default:o=i.call(e.getElementsByTagName(t))}else o=i.call(e.querySelectorAll(t));return n?o:o[0]}function y(t){return t=\"#\"===t[0]?t.substr(1,t.length):t,document.getElementById(t)}function v(t){var e=document.createDocumentFragment(),n=document.createElement(\"div\");for(n.innerHTML=t;n.firstChild;)e.appendChild(n.firstChild);return e}function g(t){return new RegExp(\"(^|\\\\s+) \"+t+\" (\\\\s+|$)\")}function b(t,e,n){t.classList?t.classList.add(e):t.className=(t.className+\" \"+e).trim(),n&&d(n)&&window.setTimeout((function(){return C(t,e)}),n)}function C(t,e,n){t.classList?t.classList.remove(e):t.className=t.className.replace(g(e),\" \").trim(),n&&d(n)&&window.setTimeout((function(){return b(t,e)}),n)}var E=function(t){return this.Base=t,this.map=void 0,this.viewport=void 0,this.coordinateClicked=void 0,this.pixelClicked=void 0,this.lineHeight=0,this.items={},this.opened=!1,this.submenu={left:t.options.width-15+\"px\",lastLeft:\"\"},this.eventHandler=this.handleEvent.bind(this),this.eventMapMoveHandler=this.handleMapMoveEvent.bind(this),this};E.prototype.init=function(t){this.map=t,this.viewport=t.getViewport(),this.setListeners(),this.Base.Html.createMenu(),this.lineHeight=this.getItemsLength()>0?this.Base.container.offsetHeight/this.getItemsLength():this.Base.Html.cloneAndGetLineHeight()},E.prototype.getItemsLength=function(){var t=this,e=0;return Object.keys(this.items).forEach((function(n){t.items[n].submenu||t.items[n].separator||e++})),e},E.prototype.getPixelClicked=function(){return this.pixelClicked},E.prototype.getCoordinateClicked=function(){return this.coordinateClicked},E.prototype.positionContainer=function(t){var e=this,n=this.Base.container,i=this.map.getSize(),o=i[1]-t[1],a=i[0]-t[0],r=n.offsetWidth,l=Math.round(this.lineHeight*this.getItemsLength()),c=f(\"li.\"+s.submenu+\">div\",n,!0);a>=r?(n.style.right=\"auto\",n.style.left=t[0]+5+\"px\"):(n.style.left=\"auto\",n.style.right=\"15px\"),o>=l?(n.style.bottom=\"auto\",n.style.top=t[1]-10+\"px\"):(n.style.top=\"auto\",n.style.bottom=0),function t(e,n,i){if(Array.isArray(e))e.forEach((function(e){return t(e,n,i)}));else for(var o=Array.isArray(n)?n:n.split(/\\s+/),s=o.length;s--;)m(e,o[s])&&C(e,o[s],i)}(n,s.hidden),c.length&&(this.submenu.lastLeft=a<2*r?\"-\"+r+\"px\":this.submenu.left,c.forEach((function(t){var n,i,s,a={w:window.innerWidth||document.documentElement.clientWidth,h:window.innerHeight||document.documentElement.clientHeight},r=(i=(n=t).getBoundingClientRect(),s=document.documentElement,{left:i.left+window.pageXOffset-s.clientLeft,top:i.top+window.pageYOffset-s.clientTop,width:n.offsetWidth,height:n.offsetHeight}),l=r.height,c=o-l;c<0&&(c=l-(a.h-r.top),t.style.top=\"-\"+c+\"px\"),t.style.left=e.submenu.lastLeft})))},E.prototype.openMenu=function(t,e){this.Base.dispatchEvent({type:r,pixel:t,coordinate:e}),this.opened=!0,this.positionContainer(t)},E.prototype.closeMenu=function(){this.opened=!1,function t(e,n,i){if(Array.isArray(e))e.forEach((function(e){return t(e,n)}));else for(var o=Array.isArray(n)?n:n.split(/\\s+/),s=o.length;s--;)m(e,o[s])||b(e,o[s],i)}(this.Base.container,s.hidden),this.Base.dispatchEvent({type:l})},E.prototype.setListeners=function(){this.viewport.addEventListener(this.Base.options.eventType,this.eventHandler,!1),this.map.on(\"movestart\",this.eventMapMoveHandler)},E.prototype.removeListeners=function(){this.viewport.removeEventListener(this.Base.options.eventType,this.eventHandler,!1),this.map.un(\"movestart\",this.eventMapMoveHandler)},E.prototype.handleEvent=function(t){var e=this;this.coordinateClicked=this.map.getEventCoordinate(t),this.pixelClicked=this.map.getEventPixel(t),this.Base.dispatchEvent({type:a,pixel:this.pixelClicked,coordinate:this.coordinateClicked}),this.Base.disabled||(this.Base.options.eventType===c&&(t.stopPropagation(),t.preventDefault()),this.openMenu(this.pixelClicked,this.coordinateClicked),t.target.addEventListener(\"pointerdown\",{handleEvent:function(n){e.opened&&(e.closeMenu(),n.stopPropagation(),t.target.removeEventListener(n.type,this,!1))}},!1))},E.prototype.handleMapMoveEvent=function(t){this.closeMenu()},E.prototype.setItemListener=function(t,e){var n,i=this;t&&\"function\"==typeof this.items[e].callback&&(n=this.items[e].callback,t.addEventListener(\"click\",(function(t){t.preventDefault();var o={coordinate:i.getCoordinateClicked(),data:i.items[e].data||null};i.closeMenu(),n(o,i.map)}),!1))};var w=function(t){return this.Base=t,this.Base.container=this.container=this.createContainer(!0),this};return w.prototype.createContainer=function(t){var e=document.createElement(\"div\"),n=document.createElement(\"ul\"),i=[s.container,s.unselectable];return t&&i.push(s.hidden),e.className=i.join(\" \"),e.style.width=parseInt(this.Base.options.width,10)+\"px\",e.appendChild(n),e},w.prototype.createMenu=function(){var t=[];if(\"items\"in this.Base.options?t=this.Base.options.defaultItems?this.Base.options.items.concat(p):this.Base.options.items:this.Base.options.defaultItems&&(t=p),0===t.length)return!1;t.forEach(this.addMenuEntry,this)},w.prototype.addMenuEntry=function(t){var e,n=this;if(t.items&&Array.isArray(t.items)){t.classname=t.classname||\"\",e=s.submenu,~t.classname.indexOf(e)||(t.classname=t.classname.length?\" \"+s.submenu:s.submenu);var i=this.generateHtmlAndPublish(this.container,t),o=this.createContainer();o.style.left=this.Base.Internal.submenu.lastLeft||this.Base.Internal.submenu.left,i.appendChild(o),t.items.forEach((function(t){n.generateHtmlAndPublish(o,t,!0)}))}else this.generateHtmlAndPublish(this.container,t)},w.prototype.generateHtmlAndPublish=function(t,e,n){var i,o,a=\"_\"+Math.random().toString(36).substr(2,9),r=!1;return\"string\"==typeof e&&\"-\"===e.trim()?(i=v('

  • '),o=[].slice.call(i.childNodes,0)[0],t.firstChild.appendChild(i),r=!0):(e.classname=e.classname||\"\",i=v(\"\"+e.text+\"\"),o=document.createElement(\"li\"),e.icon&&(\"\"===e.classname?e.classname=s.icon:-1===e.classname.indexOf(s.icon)&&(e.classname+=\" \"+s.icon),o.setAttribute(\"style\",\"background-image:url(\"+e.icon+\")\")),o.id=a,o.className=e.classname,o.appendChild(i),t.firstChild.appendChild(o)),this.Base.Internal.items[a]={id:a,submenu:n||0,separator:r,callback:e.callback,data:e.data||null},this.Base.Internal.setItemListener(o,a),o},w.prototype.removeMenuEntry=function(t){var e=f(\"#\"+t,this.container.firstChild);e&&this.container.firstChild.removeChild(e),delete this.Base.Internal.items[t]},w.prototype.cloneAndGetLineHeight=function(){var t=this.container.cloneNode(),e=v(\"Foo\"),n=v(\"Foo\"),i=document.createElement(\"li\"),o=document.createElement(\"li\");i.appendChild(e),o.appendChild(n),t.appendChild(i),t.appendChild(o),this.container.parentNode.appendChild(t);var s=t.offsetHeight/2;return this.container.parentNode.removeChild(t),s},function(t){function e(e){void 0===e&&(e={}),u(\"object\"==typeof e,\"@param `opt_options` should be object type!\"),this.options=function(t,e){var n={};for(var i in t)n[i]=t[i];for(var o in e)n[o]=e[o];return n}(h,e),this.disabled=!1,this.Internal=new E(this),this.Html=new w(this),t.call(this,{element:this.container})}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.clear=function(){Object.keys(this.Internal.items).forEach(this.Html.removeMenuEntry,this.Html)},e.prototype.close=function(){this.Internal.closeMenu()},e.prototype.enable=function(){this.disabled=!1},e.prototype.disable=function(){this.disabled=!0},e.prototype.getDefaultItems=function(){return p},e.prototype.countItems=function(){return Object.keys(this.Internal.items).length},e.prototype.extend=function(t){u(Array.isArray(t),\"@param `arr` should be an Array.\"),t.forEach(this.push,this)},e.prototype.isOpen=function(){return this.Internal.opened},e.prototype.updatePosition=function(t){u(Array.isArray(t),\"@param `pixel` should be an Array.\"),this.isOpen()&&this.Internal.positionContainer(t)},e.prototype.pop=function(){var t=Object.keys(this.Internal.items);this.Html.removeMenuEntry(t[t.length-1])},e.prototype.push=function(t){u(null!=t,\"@param `item` must be informed.\"),this.Html.addMenuEntry(t)},e.prototype.shift=function(){this.Html.removeMenuEntry(Object.keys(this.Internal.items)[0])},e.prototype.setMap=function(e){t.prototype.setMap.call(this,e),e?this.Internal.init(e,this):this.Internal.removeListeners()},e}(n.default)}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/AssertionError\n */\nimport { VERSION } from './util.js';\n/**\n * Error object thrown when an assertion failed. This is an ECMA-262 Error,\n * extended with a `code` property.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error.\n */\nvar AssertionError = /** @class */ (function (_super) {\n __extends(AssertionError, _super);\n /**\n * @param {number} code Error code.\n */\n function AssertionError(code) {\n var _this = this;\n var path = VERSION === 'latest' ? VERSION : 'v' + VERSION.split('-')[0];\n var message = 'Assertion failed. See https://openlayers.org/en/' +\n path +\n '/doc/errors/#' +\n code +\n ' for details.';\n _this = _super.call(this, message) || this;\n /**\n * Error code. The meaning of the code can be found on\n * https://openlayers.org/en/latest/doc/errors/ (replace `latest` with\n * the version found in the OpenLayers script's header comment if a version\n * other than the latest is used).\n * @type {number}\n * @api\n */\n _this.code = code;\n /**\n * @type {string}\n */\n _this.name = 'AssertionError';\n // Re-assign message, see https://github.com/Rich-Harris/buble/issues/40\n _this.message = message;\n return _this;\n }\n return AssertionError;\n}(Error));\nexport default AssertionError;\n//# sourceMappingURL=AssertionError.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Collection\n */\nimport AssertionError from './AssertionError.js';\nimport BaseObject from './Object.js';\nimport CollectionEventType from './CollectionEventType.js';\nimport Event from './events/Event.js';\n/**\n * @enum {string}\n * @private\n */\nvar Property = {\n LENGTH: 'length',\n};\n/**\n * @classdesc\n * Events emitted by {@link module:ol/Collection~Collection} instances are instances of this\n * type.\n */\nvar CollectionEvent = /** @class */ (function (_super) {\n __extends(CollectionEvent, _super);\n /**\n * @param {import(\"./CollectionEventType.js\").default} type Type.\n * @param {*=} opt_element Element.\n * @param {number=} opt_index The index of the added or removed element.\n */\n function CollectionEvent(type, opt_element, opt_index) {\n var _this = _super.call(this, type) || this;\n /**\n * The element that is added to or removed from the collection.\n * @type {*}\n * @api\n */\n _this.element = opt_element;\n /**\n * The index of the added or removed element.\n * @type {number}\n * @api\n */\n _this.index = opt_index;\n return _this;\n }\n return CollectionEvent;\n}(Event));\nexport { CollectionEvent };\n/**\n * @typedef {Object} Options\n * @property {boolean} [unique=false] Disallow the same item from being added to\n * the collection twice.\n */\n/**\n * @classdesc\n * An expanded version of standard JS Array, adding convenience methods for\n * manipulation. Add and remove changes to the Collection trigger a Collection\n * event. Note that this does not cover changes to the objects _within_ the\n * Collection; they trigger events on the appropriate object, not on the\n * Collection as a whole.\n *\n * @fires CollectionEvent\n *\n * @template T\n * @api\n */\nvar Collection = /** @class */ (function (_super) {\n __extends(Collection, _super);\n /**\n * @param {Array=} opt_array Array.\n * @param {Options=} opt_options Collection options.\n */\n function Collection(opt_array, opt_options) {\n var _this = _super.call(this) || this;\n var options = opt_options || {};\n /**\n * @private\n * @type {boolean}\n */\n _this.unique_ = !!options.unique;\n /**\n * @private\n * @type {!Array}\n */\n _this.array_ = opt_array ? opt_array : [];\n if (_this.unique_) {\n for (var i = 0, ii = _this.array_.length; i < ii; ++i) {\n _this.assertUnique_(_this.array_[i], i);\n }\n }\n _this.updateLength_();\n return _this;\n }\n /**\n * Remove all elements from the collection.\n * @api\n */\n Collection.prototype.clear = function () {\n while (this.getLength() > 0) {\n this.pop();\n }\n };\n /**\n * Add elements to the collection. This pushes each item in the provided array\n * to the end of the collection.\n * @param {!Array} arr Array.\n * @return {Collection} This collection.\n * @api\n */\n Collection.prototype.extend = function (arr) {\n for (var i = 0, ii = arr.length; i < ii; ++i) {\n this.push(arr[i]);\n }\n return this;\n };\n /**\n * Iterate over each element, calling the provided callback.\n * @param {function(T, number, Array): *} f The function to call\n * for every element. This function takes 3 arguments (the element, the\n * index and the array). The return value is ignored.\n * @api\n */\n Collection.prototype.forEach = function (f) {\n var array = this.array_;\n for (var i = 0, ii = array.length; i < ii; ++i) {\n f(array[i], i, array);\n }\n };\n /**\n * Get a reference to the underlying Array object. Warning: if the array\n * is mutated, no events will be dispatched by the collection, and the\n * collection's \"length\" property won't be in sync with the actual length\n * of the array.\n * @return {!Array} Array.\n * @api\n */\n Collection.prototype.getArray = function () {\n return this.array_;\n };\n /**\n * Get the element at the provided index.\n * @param {number} index Index.\n * @return {T} Element.\n * @api\n */\n Collection.prototype.item = function (index) {\n return this.array_[index];\n };\n /**\n * Get the length of this collection.\n * @return {number} The length of the array.\n * @observable\n * @api\n */\n Collection.prototype.getLength = function () {\n return this.get(Property.LENGTH);\n };\n /**\n * Insert an element at the provided index.\n * @param {number} index Index.\n * @param {T} elem Element.\n * @api\n */\n Collection.prototype.insertAt = function (index, elem) {\n if (this.unique_) {\n this.assertUnique_(elem);\n }\n this.array_.splice(index, 0, elem);\n this.updateLength_();\n this.dispatchEvent(new CollectionEvent(CollectionEventType.ADD, elem, index));\n };\n /**\n * Remove the last element of the collection and return it.\n * Return `undefined` if the collection is empty.\n * @return {T|undefined} Element.\n * @api\n */\n Collection.prototype.pop = function () {\n return this.removeAt(this.getLength() - 1);\n };\n /**\n * Insert the provided element at the end of the collection.\n * @param {T} elem Element.\n * @return {number} New length of the collection.\n * @api\n */\n Collection.prototype.push = function (elem) {\n if (this.unique_) {\n this.assertUnique_(elem);\n }\n var n = this.getLength();\n this.insertAt(n, elem);\n return this.getLength();\n };\n /**\n * Remove the first occurrence of an element from the collection.\n * @param {T} elem Element.\n * @return {T|undefined} The removed element or undefined if none found.\n * @api\n */\n Collection.prototype.remove = function (elem) {\n var arr = this.array_;\n for (var i = 0, ii = arr.length; i < ii; ++i) {\n if (arr[i] === elem) {\n return this.removeAt(i);\n }\n }\n return undefined;\n };\n /**\n * Remove the element at the provided index and return it.\n * Return `undefined` if the collection does not contain this index.\n * @param {number} index Index.\n * @return {T|undefined} Value.\n * @api\n */\n Collection.prototype.removeAt = function (index) {\n var prev = this.array_[index];\n this.array_.splice(index, 1);\n this.updateLength_();\n this.dispatchEvent(new CollectionEvent(CollectionEventType.REMOVE, prev, index));\n return prev;\n };\n /**\n * Set the element at the provided index.\n * @param {number} index Index.\n * @param {T} elem Element.\n * @api\n */\n Collection.prototype.setAt = function (index, elem) {\n var n = this.getLength();\n if (index < n) {\n if (this.unique_) {\n this.assertUnique_(elem, index);\n }\n var prev = this.array_[index];\n this.array_[index] = elem;\n this.dispatchEvent(new CollectionEvent(CollectionEventType.REMOVE, prev, index));\n this.dispatchEvent(new CollectionEvent(CollectionEventType.ADD, elem, index));\n }\n else {\n for (var j = n; j < index; ++j) {\n this.insertAt(j, undefined);\n }\n this.insertAt(index, elem);\n }\n };\n /**\n * @private\n */\n Collection.prototype.updateLength_ = function () {\n this.set(Property.LENGTH, this.array_.length);\n };\n /**\n * @private\n * @param {T} elem Element.\n * @param {number=} opt_except Optional index to ignore.\n */\n Collection.prototype.assertUnique_ = function (elem, opt_except) {\n for (var i = 0, ii = this.array_.length; i < ii; ++i) {\n if (this.array_[i] === elem && i !== opt_except) {\n throw new AssertionError(58);\n }\n }\n };\n return Collection;\n}(BaseObject));\nexport default Collection;\n//# sourceMappingURL=Collection.js.map","/**\n * @module ol/CollectionEventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when an item is added to the collection.\n * @event module:ol/Collection.CollectionEvent#add\n * @api\n */\n ADD: 'add',\n /**\n * Triggered when an item is removed from the collection.\n * @event module:ol/Collection.CollectionEvent#remove\n * @api\n */\n REMOVE: 'remove',\n};\n//# sourceMappingURL=CollectionEventType.js.map","/**\n * @module ol/Disposable\n */\n/**\n * @classdesc\n * Objects that need to clean up after themselves.\n */\nvar Disposable = /** @class */ (function () {\n function Disposable() {\n /**\n * The object has already been disposed.\n * @type {boolean}\n * @protected\n */\n this.disposed = false;\n }\n /**\n * Clean up.\n */\n Disposable.prototype.dispose = function () {\n if (!this.disposed) {\n this.disposed = true;\n this.disposeInternal();\n }\n };\n /**\n * Extension point for disposable objects.\n * @protected\n */\n Disposable.prototype.disposeInternal = function () { };\n return Disposable;\n}());\nexport default Disposable;\n//# sourceMappingURL=Disposable.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Feature\n */\nimport BaseObject, { getChangeEventType } from './Object.js';\nimport EventType from './events/EventType.js';\nimport { assert } from './asserts.js';\nimport { listen, unlistenByKey } from './events.js';\n/**\n * @typedef {typeof Feature|typeof import(\"./render/Feature.js\").default} FeatureClass\n */\n/**\n * @typedef {Feature|import(\"./render/Feature.js\").default} FeatureLike\n */\n/**\n * @classdesc\n * A vector object for geographic features with a geometry and other\n * attribute properties, similar to the features in vector file formats like\n * GeoJSON.\n *\n * Features can be styled individually with `setStyle`; otherwise they use the\n * style of their vector layer.\n *\n * Note that attribute properties are set as {@link module:ol/Object} properties on\n * the feature object, so they are observable, and have get/set accessors.\n *\n * Typically, a feature has a single geometry property. You can set the\n * geometry using the `setGeometry` method and get it with `getGeometry`.\n * It is possible to store more than one geometry on a feature using attribute\n * properties. By default, the geometry used for rendering is identified by\n * the property name `geometry`. If you want to use another geometry property\n * for rendering, use the `setGeometryName` method to change the attribute\n * property associated with the geometry for the feature. For example:\n *\n * ```js\n *\n * import Feature from 'ol/Feature';\n * import Polygon from 'ol/geom/Polygon';\n * import Point from 'ol/geom/Point';\n *\n * var feature = new Feature({\n * geometry: new Polygon(polyCoords),\n * labelPoint: new Point(labelCoords),\n * name: 'My Polygon'\n * });\n *\n * // get the polygon geometry\n * var poly = feature.getGeometry();\n *\n * // Render the feature as a point using the coordinates from labelPoint\n * feature.setGeometryName('labelPoint');\n *\n * // get the point geometry\n * var point = feature.getGeometry();\n * ```\n *\n * @api\n * @template {import(\"./geom/Geometry.js\").default} Geometry\n */\nvar Feature = /** @class */ (function (_super) {\n __extends(Feature, _super);\n /**\n * @param {Geometry|Object=} opt_geometryOrProperties\n * You may pass a Geometry object directly, or an object literal containing\n * properties. If you pass an object literal, you may include a Geometry\n * associated with a `geometry` key.\n */\n function Feature(opt_geometryOrProperties) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {number|string|undefined}\n */\n _this.id_ = undefined;\n /**\n * @type {string}\n * @private\n */\n _this.geometryName_ = 'geometry';\n /**\n * User provided style.\n * @private\n * @type {import(\"./style/Style.js\").StyleLike}\n */\n _this.style_ = null;\n /**\n * @private\n * @type {import(\"./style/Style.js\").StyleFunction|undefined}\n */\n _this.styleFunction_ = undefined;\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n _this.geometryChangeKey_ = null;\n _this.addEventListener(getChangeEventType(_this.geometryName_), _this.handleGeometryChanged_);\n if (opt_geometryOrProperties) {\n if (typeof (\n /** @type {?} */ (opt_geometryOrProperties).getSimplifiedGeometry) === 'function') {\n var geometry = /** @type {Geometry} */ (opt_geometryOrProperties);\n _this.setGeometry(geometry);\n }\n else {\n /** @type {Object} */\n var properties = opt_geometryOrProperties;\n _this.setProperties(properties);\n }\n }\n return _this;\n }\n /**\n * Clone this feature. If the original feature has a geometry it\n * is also cloned. The feature id is not set in the clone.\n * @return {Feature} The clone.\n * @api\n */\n Feature.prototype.clone = function () {\n var clone = new Feature(this.hasProperties() ? this.getProperties() : null);\n clone.setGeometryName(this.getGeometryName());\n var geometry = this.getGeometry();\n if (geometry) {\n clone.setGeometry(geometry.clone());\n }\n var style = this.getStyle();\n if (style) {\n clone.setStyle(style);\n }\n return clone;\n };\n /**\n * Get the feature's default geometry. A feature may have any number of named\n * geometries. The \"default\" geometry (the one that is rendered by default) is\n * set when calling {@link module:ol/Feature~Feature#setGeometry}.\n * @return {Geometry|undefined} The default geometry for the feature.\n * @api\n * @observable\n */\n Feature.prototype.getGeometry = function () {\n return /** @type {Geometry|undefined} */ (this.get(this.geometryName_));\n };\n /**\n * Get the feature identifier. This is a stable identifier for the feature and\n * is either set when reading data from a remote source or set explicitly by\n * calling {@link module:ol/Feature~Feature#setId}.\n * @return {number|string|undefined} Id.\n * @api\n */\n Feature.prototype.getId = function () {\n return this.id_;\n };\n /**\n * Get the name of the feature's default geometry. By default, the default\n * geometry is named `geometry`.\n * @return {string} Get the property name associated with the default geometry\n * for this feature.\n * @api\n */\n Feature.prototype.getGeometryName = function () {\n return this.geometryName_;\n };\n /**\n * Get the feature's style. Will return what was provided to the\n * {@link module:ol/Feature~Feature#setStyle} method.\n * @return {import(\"./style/Style.js\").StyleLike|undefined} The feature style.\n * @api\n */\n Feature.prototype.getStyle = function () {\n return this.style_;\n };\n /**\n * Get the feature's style function.\n * @return {import(\"./style/Style.js\").StyleFunction|undefined} Return a function\n * representing the current style of this feature.\n * @api\n */\n Feature.prototype.getStyleFunction = function () {\n return this.styleFunction_;\n };\n /**\n * @private\n */\n Feature.prototype.handleGeometryChange_ = function () {\n this.changed();\n };\n /**\n * @private\n */\n Feature.prototype.handleGeometryChanged_ = function () {\n if (this.geometryChangeKey_) {\n unlistenByKey(this.geometryChangeKey_);\n this.geometryChangeKey_ = null;\n }\n var geometry = this.getGeometry();\n if (geometry) {\n this.geometryChangeKey_ = listen(geometry, EventType.CHANGE, this.handleGeometryChange_, this);\n }\n this.changed();\n };\n /**\n * Set the default geometry for the feature. This will update the property\n * with the name returned by {@link module:ol/Feature~Feature#getGeometryName}.\n * @param {Geometry|undefined} geometry The new geometry.\n * @api\n * @observable\n */\n Feature.prototype.setGeometry = function (geometry) {\n this.set(this.geometryName_, geometry);\n };\n /**\n * Set the style for the feature to override the layer style. This can be a\n * single style object, an array of styles, or a function that takes a\n * resolution and returns an array of styles. To unset the feature style, call\n * `setStyle()` without arguments or a falsey value.\n * @param {import(\"./style/Style.js\").StyleLike=} opt_style Style for this feature.\n * @api\n * @fires module:ol/events/Event~BaseEvent#event:change\n */\n Feature.prototype.setStyle = function (opt_style) {\n this.style_ = opt_style;\n this.styleFunction_ = !opt_style\n ? undefined\n : createStyleFunction(opt_style);\n this.changed();\n };\n /**\n * Set the feature id. The feature id is considered stable and may be used when\n * requesting features or comparing identifiers returned from a remote source.\n * The feature id can be used with the\n * {@link module:ol/source/Vector~VectorSource#getFeatureById} method.\n * @param {number|string|undefined} id The feature id.\n * @api\n * @fires module:ol/events/Event~BaseEvent#event:change\n */\n Feature.prototype.setId = function (id) {\n this.id_ = id;\n this.changed();\n };\n /**\n * Set the property name to be used when getting the feature's default geometry.\n * When calling {@link module:ol/Feature~Feature#getGeometry}, the value of the property with\n * this name will be returned.\n * @param {string} name The property name of the default geometry.\n * @api\n */\n Feature.prototype.setGeometryName = function (name) {\n this.removeEventListener(getChangeEventType(this.geometryName_), this.handleGeometryChanged_);\n this.geometryName_ = name;\n this.addEventListener(getChangeEventType(this.geometryName_), this.handleGeometryChanged_);\n this.handleGeometryChanged_();\n };\n return Feature;\n}(BaseObject));\n/**\n * Convert the provided object into a feature style function. Functions passed\n * through unchanged. Arrays of Style or single style objects wrapped\n * in a new feature style function.\n * @param {!import(\"./style/Style.js\").StyleFunction|!Array|!import(\"./style/Style.js\").default} obj\n * A feature style function, a single style, or an array of styles.\n * @return {import(\"./style/Style.js\").StyleFunction} A style function.\n */\nexport function createStyleFunction(obj) {\n if (typeof obj === 'function') {\n return obj;\n }\n else {\n /**\n * @type {Array}\n */\n var styles_1;\n if (Array.isArray(obj)) {\n styles_1 = obj;\n }\n else {\n assert(typeof ( /** @type {?} */(obj).getZIndex) === 'function', 41); // Expected an `import(\"./style/Style.js\").Style` or an array of `import(\"./style/Style.js\").Style`\n var style = /** @type {import(\"./style/Style.js\").default} */ (obj);\n styles_1 = [style];\n }\n return function () {\n return styles_1;\n };\n }\n}\nexport default Feature;\n//# sourceMappingURL=Feature.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Geolocation\n */\nimport BaseEvent from './events/Event.js';\nimport BaseObject, { getChangeEventType } from './Object.js';\nimport EventType from './events/EventType.js';\nimport { circular as circularPolygon } from './geom/Polygon.js';\nimport { get as getProjection, getTransformFromProjections, identityTransform, } from './proj.js';\nimport { toRadians } from './math.js';\n/**\n * @enum {string}\n */\nvar Property = {\n ACCURACY: 'accuracy',\n ACCURACY_GEOMETRY: 'accuracyGeometry',\n ALTITUDE: 'altitude',\n ALTITUDE_ACCURACY: 'altitudeAccuracy',\n HEADING: 'heading',\n POSITION: 'position',\n PROJECTION: 'projection',\n SPEED: 'speed',\n TRACKING: 'tracking',\n TRACKING_OPTIONS: 'trackingOptions',\n};\n/**\n * @classdesc\n * Events emitted on Geolocation error.\n */\nvar GeolocationError = /** @class */ (function (_super) {\n __extends(GeolocationError, _super);\n /**\n * @param {PositionError} error error object.\n */\n function GeolocationError(error) {\n var _this = _super.call(this, EventType.ERROR) || this;\n /**\n * @type {number}\n */\n _this.code = error.code;\n /**\n * @type {string}\n */\n _this.message = error.message;\n return _this;\n }\n return GeolocationError;\n}(BaseEvent));\n/**\n * @typedef {Object} Options\n * @property {boolean} [tracking=false] Start Tracking right after\n * instantiation.\n * @property {PositionOptions} [trackingOptions] Tracking options.\n * See http://www.w3.org/TR/geolocation-API/#position_options_interface.\n * @property {import(\"./proj.js\").ProjectionLike} [projection] The projection the position\n * is reported in.\n */\n/**\n * @classdesc\n * Helper class for providing HTML5 Geolocation capabilities.\n * The [Geolocation API](http://www.w3.org/TR/geolocation-API/)\n * is used to locate a user's position.\n *\n * To get notified of position changes, register a listener for the generic\n * `change` event on your instance of {@link module:ol/Geolocation~Geolocation}.\n *\n * Example:\n *\n * var geolocation = new Geolocation({\n * // take the projection to use from the map's view\n * projection: view.getProjection()\n * });\n * // listen to changes in position\n * geolocation.on('change', function(evt) {\n * window.console.log(geolocation.getPosition());\n * });\n *\n * @fires module:ol/events/Event~BaseEvent#event:error\n * @api\n */\nvar Geolocation = /** @class */ (function (_super) {\n __extends(Geolocation, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function Geolocation(opt_options) {\n var _this = _super.call(this) || this;\n var options = opt_options || {};\n /**\n * The unprojected (EPSG:4326) device position.\n * @private\n * @type {?import(\"./coordinate.js\").Coordinate}\n */\n _this.position_ = null;\n /**\n * @private\n * @type {import(\"./proj.js\").TransformFunction}\n */\n _this.transform_ = identityTransform;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.watchId_ = undefined;\n _this.addEventListener(getChangeEventType(Property.PROJECTION), _this.handleProjectionChanged_);\n _this.addEventListener(getChangeEventType(Property.TRACKING), _this.handleTrackingChanged_);\n if (options.projection !== undefined) {\n _this.setProjection(options.projection);\n }\n if (options.trackingOptions !== undefined) {\n _this.setTrackingOptions(options.trackingOptions);\n }\n _this.setTracking(options.tracking !== undefined ? options.tracking : false);\n return _this;\n }\n /**\n * Clean up.\n */\n Geolocation.prototype.disposeInternal = function () {\n this.setTracking(false);\n _super.prototype.disposeInternal.call(this);\n };\n /**\n * @private\n */\n Geolocation.prototype.handleProjectionChanged_ = function () {\n var projection = this.getProjection();\n if (projection) {\n this.transform_ = getTransformFromProjections(getProjection('EPSG:4326'), projection);\n if (this.position_) {\n this.set(Property.POSITION, this.transform_(this.position_));\n }\n }\n };\n /**\n * @private\n */\n Geolocation.prototype.handleTrackingChanged_ = function () {\n if ('geolocation' in navigator) {\n var tracking = this.getTracking();\n if (tracking && this.watchId_ === undefined) {\n this.watchId_ = navigator.geolocation.watchPosition(this.positionChange_.bind(this), this.positionError_.bind(this), this.getTrackingOptions());\n }\n else if (!tracking && this.watchId_ !== undefined) {\n navigator.geolocation.clearWatch(this.watchId_);\n this.watchId_ = undefined;\n }\n }\n };\n /**\n * @private\n * @param {Position} position position event.\n */\n Geolocation.prototype.positionChange_ = function (position) {\n var coords = position.coords;\n this.set(Property.ACCURACY, coords.accuracy);\n this.set(Property.ALTITUDE, coords.altitude === null ? undefined : coords.altitude);\n this.set(Property.ALTITUDE_ACCURACY, coords.altitudeAccuracy === null ? undefined : coords.altitudeAccuracy);\n this.set(Property.HEADING, coords.heading === null ? undefined : toRadians(coords.heading));\n if (!this.position_) {\n this.position_ = [coords.longitude, coords.latitude];\n }\n else {\n this.position_[0] = coords.longitude;\n this.position_[1] = coords.latitude;\n }\n var projectedPosition = this.transform_(this.position_);\n this.set(Property.POSITION, projectedPosition);\n this.set(Property.SPEED, coords.speed === null ? undefined : coords.speed);\n var geometry = circularPolygon(this.position_, coords.accuracy);\n geometry.applyTransform(this.transform_);\n this.set(Property.ACCURACY_GEOMETRY, geometry);\n this.changed();\n };\n /**\n * @private\n * @param {PositionError} error error object.\n */\n Geolocation.prototype.positionError_ = function (error) {\n this.dispatchEvent(new GeolocationError(error));\n };\n /**\n * Get the accuracy of the position in meters.\n * @return {number|undefined} The accuracy of the position measurement in\n * meters.\n * @observable\n * @api\n */\n Geolocation.prototype.getAccuracy = function () {\n return /** @type {number|undefined} */ (this.get(Property.ACCURACY));\n };\n /**\n * Get a geometry of the position accuracy.\n * @return {?import(\"./geom/Polygon.js\").default} A geometry of the position accuracy.\n * @observable\n * @api\n */\n Geolocation.prototype.getAccuracyGeometry = function () {\n return /** @type {?import(\"./geom/Polygon.js\").default} */ (this.get(Property.ACCURACY_GEOMETRY) || null);\n };\n /**\n * Get the altitude associated with the position.\n * @return {number|undefined} The altitude of the position in meters above mean\n * sea level.\n * @observable\n * @api\n */\n Geolocation.prototype.getAltitude = function () {\n return /** @type {number|undefined} */ (this.get(Property.ALTITUDE));\n };\n /**\n * Get the altitude accuracy of the position.\n * @return {number|undefined} The accuracy of the altitude measurement in\n * meters.\n * @observable\n * @api\n */\n Geolocation.prototype.getAltitudeAccuracy = function () {\n return /** @type {number|undefined} */ (this.get(Property.ALTITUDE_ACCURACY));\n };\n /**\n * Get the heading as radians clockwise from North.\n * Note: depending on the browser, the heading is only defined if the `enableHighAccuracy`\n * is set to `true` in the tracking options.\n * @return {number|undefined} The heading of the device in radians from north.\n * @observable\n * @api\n */\n Geolocation.prototype.getHeading = function () {\n return /** @type {number|undefined} */ (this.get(Property.HEADING));\n };\n /**\n * Get the position of the device.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The current position of the device reported\n * in the current projection.\n * @observable\n * @api\n */\n Geolocation.prototype.getPosition = function () {\n return /** @type {import(\"./coordinate.js\").Coordinate|undefined} */ (this.get(Property.POSITION));\n };\n /**\n * Get the projection associated with the position.\n * @return {import(\"./proj/Projection.js\").default|undefined} The projection the position is\n * reported in.\n * @observable\n * @api\n */\n Geolocation.prototype.getProjection = function () {\n return /** @type {import(\"./proj/Projection.js\").default|undefined} */ (this.get(Property.PROJECTION));\n };\n /**\n * Get the speed in meters per second.\n * @return {number|undefined} The instantaneous speed of the device in meters\n * per second.\n * @observable\n * @api\n */\n Geolocation.prototype.getSpeed = function () {\n return /** @type {number|undefined} */ (this.get(Property.SPEED));\n };\n /**\n * Determine if the device location is being tracked.\n * @return {boolean} The device location is being tracked.\n * @observable\n * @api\n */\n Geolocation.prototype.getTracking = function () {\n return /** @type {boolean} */ (this.get(Property.TRACKING));\n };\n /**\n * Get the tracking options.\n * See http://www.w3.org/TR/geolocation-API/#position-options.\n * @return {PositionOptions|undefined} PositionOptions as defined by\n * the [HTML5 Geolocation spec\n * ](http://www.w3.org/TR/geolocation-API/#position_options_interface).\n * @observable\n * @api\n */\n Geolocation.prototype.getTrackingOptions = function () {\n return /** @type {PositionOptions|undefined} */ (this.get(Property.TRACKING_OPTIONS));\n };\n /**\n * Set the projection to use for transforming the coordinates.\n * @param {import(\"./proj.js\").ProjectionLike} projection The projection the position is\n * reported in.\n * @observable\n * @api\n */\n Geolocation.prototype.setProjection = function (projection) {\n this.set(Property.PROJECTION, getProjection(projection));\n };\n /**\n * Enable or disable tracking.\n * @param {boolean} tracking Enable tracking.\n * @observable\n * @api\n */\n Geolocation.prototype.setTracking = function (tracking) {\n this.set(Property.TRACKING, tracking);\n };\n /**\n * Set the tracking options.\n * See http://www.w3.org/TR/geolocation-API/#position-options.\n * @param {PositionOptions} options PositionOptions as defined by the\n * [HTML5 Geolocation spec\n * ](http://www.w3.org/TR/geolocation-API/#position_options_interface).\n * @observable\n * @api\n */\n Geolocation.prototype.setTrackingOptions = function (options) {\n this.set(Property.TRACKING_OPTIONS, options);\n };\n return Geolocation;\n}(BaseObject));\nexport default Geolocation;\n//# sourceMappingURL=Geolocation.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Image\n */\nimport EventType from './events/EventType.js';\nimport ImageBase from './ImageBase.js';\nimport ImageState from './ImageState.js';\nimport { IMAGE_DECODE } from './has.js';\nimport { getHeight } from './extent.js';\nimport { listenOnce, unlistenByKey } from './events.js';\n/**\n * A function that takes an {@link module:ol/Image~Image} for the image and a\n * `{string}` for the src as arguments. It is supposed to make it so the\n * underlying image {@link module:ol/Image~Image#getImage} is assigned the\n * content specified by the src. If not specified, the default is\n *\n * function(image, src) {\n * image.getImage().src = src;\n * }\n *\n * Providing a custom `imageLoadFunction` can be useful to load images with\n * post requests or - in general - through XHR requests, where the src of the\n * image element would be set to a data URI when the content is loaded.\n *\n * @typedef {function(ImageWrapper, string): void} LoadFunction\n * @api\n */\nvar ImageWrapper = /** @class */ (function (_super) {\n __extends(ImageWrapper, _super);\n /**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number|undefined} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n * @param {string} src Image source URI.\n * @param {?string} crossOrigin Cross origin.\n * @param {LoadFunction} imageLoadFunction Image load function.\n */\n function ImageWrapper(extent, resolution, pixelRatio, src, crossOrigin, imageLoadFunction) {\n var _this = _super.call(this, extent, resolution, pixelRatio, ImageState.IDLE) || this;\n /**\n * @private\n * @type {string}\n */\n _this.src_ = src;\n /**\n * @private\n * @type {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement}\n */\n _this.image_ = new Image();\n if (crossOrigin !== null) {\n _this.image_.crossOrigin = crossOrigin;\n }\n /**\n * @private\n * @type {?function():void}\n */\n _this.unlisten_ = null;\n /**\n * @protected\n * @type {import(\"./ImageState.js\").default}\n */\n _this.state = ImageState.IDLE;\n /**\n * @private\n * @type {LoadFunction}\n */\n _this.imageLoadFunction_ = imageLoadFunction;\n return _this;\n }\n /**\n * @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.\n * @api\n */\n ImageWrapper.prototype.getImage = function () {\n return this.image_;\n };\n /**\n * Tracks loading or read errors.\n *\n * @private\n */\n ImageWrapper.prototype.handleImageError_ = function () {\n this.state = ImageState.ERROR;\n this.unlistenImage_();\n this.changed();\n };\n /**\n * Tracks successful image load.\n *\n * @private\n */\n ImageWrapper.prototype.handleImageLoad_ = function () {\n if (this.resolution === undefined) {\n this.resolution = getHeight(this.extent) / this.image_.height;\n }\n this.state = ImageState.LOADED;\n this.unlistenImage_();\n this.changed();\n };\n /**\n * Load the image or retry if loading previously failed.\n * Loading is taken care of by the tile queue, and calling this method is\n * only needed for preloading or for reloading in case of an error.\n * @api\n */\n ImageWrapper.prototype.load = function () {\n if (this.state == ImageState.IDLE || this.state == ImageState.ERROR) {\n this.state = ImageState.LOADING;\n this.changed();\n this.imageLoadFunction_(this, this.src_);\n this.unlisten_ = listenImage(this.image_, this.handleImageLoad_.bind(this), this.handleImageError_.bind(this));\n }\n };\n /**\n * @param {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} image Image.\n */\n ImageWrapper.prototype.setImage = function (image) {\n this.image_ = image;\n };\n /**\n * Discards event handlers which listen for load completion or errors.\n *\n * @private\n */\n ImageWrapper.prototype.unlistenImage_ = function () {\n if (this.unlisten_) {\n this.unlisten_();\n this.unlisten_ = null;\n }\n };\n return ImageWrapper;\n}(ImageBase));\n/**\n * @param {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} image Image element.\n * @param {function():any} loadHandler Load callback function.\n * @param {function():any} errorHandler Error callback function.\n * @return {function():void} Callback to stop listening.\n */\nexport function listenImage(image, loadHandler, errorHandler) {\n var img = /** @type {HTMLImageElement} */ (image);\n if (img.src && IMAGE_DECODE) {\n var promise = img.decode();\n var listening_1 = true;\n var unlisten = function () {\n listening_1 = false;\n };\n promise\n .then(function () {\n if (listening_1) {\n loadHandler();\n }\n })\n .catch(function (error) {\n if (listening_1) {\n // FIXME: Unconditionally call errorHandler() when this bug is fixed upstream:\n // https://bugs.webkit.org/show_bug.cgi?id=198527\n if (error.name === 'EncodingError' &&\n error.message === 'Invalid image type.') {\n loadHandler();\n }\n else {\n errorHandler();\n }\n }\n });\n return unlisten;\n }\n var listenerKeys = [\n listenOnce(img, EventType.LOAD, loadHandler),\n listenOnce(img, EventType.ERROR, errorHandler),\n ];\n return function unlisten() {\n listenerKeys.forEach(unlistenByKey);\n };\n}\nexport default ImageWrapper;\n//# sourceMappingURL=Image.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/ImageBase\n */\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\nimport { abstract } from './util.js';\n/**\n * @abstract\n */\nvar ImageBase = /** @class */ (function (_super) {\n __extends(ImageBase, _super);\n /**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number|undefined} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n * @param {import(\"./ImageState.js\").default} state State.\n */\n function ImageBase(extent, resolution, pixelRatio, state) {\n var _this = _super.call(this) || this;\n /**\n * @protected\n * @type {import(\"./extent.js\").Extent}\n */\n _this.extent = extent;\n /**\n * @private\n * @type {number}\n */\n _this.pixelRatio_ = pixelRatio;\n /**\n * @protected\n * @type {number|undefined}\n */\n _this.resolution = resolution;\n /**\n * @protected\n * @type {import(\"./ImageState.js\").default}\n */\n _this.state = state;\n return _this;\n }\n /**\n * @protected\n */\n ImageBase.prototype.changed = function () {\n this.dispatchEvent(EventType.CHANGE);\n };\n /**\n * @return {import(\"./extent.js\").Extent} Extent.\n */\n ImageBase.prototype.getExtent = function () {\n return this.extent;\n };\n /**\n * @abstract\n * @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.\n */\n ImageBase.prototype.getImage = function () {\n return abstract();\n };\n /**\n * @return {number} PixelRatio.\n */\n ImageBase.prototype.getPixelRatio = function () {\n return this.pixelRatio_;\n };\n /**\n * @return {number} Resolution.\n */\n ImageBase.prototype.getResolution = function () {\n return /** @type {number} */ (this.resolution);\n };\n /**\n * @return {import(\"./ImageState.js\").default} State.\n */\n ImageBase.prototype.getState = function () {\n return this.state;\n };\n /**\n * Load not yet loaded URI.\n * @abstract\n */\n ImageBase.prototype.load = function () {\n abstract();\n };\n return ImageBase;\n}(EventTarget));\nexport default ImageBase;\n//# sourceMappingURL=ImageBase.js.map","/**\n * @module ol/ImageState\n */\n/**\n * @enum {number}\n */\nexport default {\n IDLE: 0,\n LOADING: 1,\n LOADED: 2,\n ERROR: 3,\n EMPTY: 4,\n};\n//# sourceMappingURL=ImageState.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/ImageTile\n */\nimport Tile from './Tile.js';\nimport TileState from './TileState.js';\nimport { createCanvasContext2D } from './dom.js';\nimport { listenImage } from './Image.js';\nvar ImageTile = /** @class */ (function (_super) {\n __extends(ImageTile, _super);\n /**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {import(\"./TileState.js\").default} state State.\n * @param {string} src Image source URI.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"./Tile.js\").LoadFunction} tileLoadFunction Tile load function.\n * @param {import(\"./Tile.js\").Options=} opt_options Tile options.\n */\n function ImageTile(tileCoord, state, src, crossOrigin, tileLoadFunction, opt_options) {\n var _this = _super.call(this, tileCoord, state, opt_options) || this;\n /**\n * @private\n * @type {?string}\n */\n _this.crossOrigin_ = crossOrigin;\n /**\n * Image URI\n *\n * @private\n * @type {string}\n */\n _this.src_ = src;\n /**\n * @private\n * @type {HTMLImageElement|HTMLCanvasElement}\n */\n _this.image_ = new Image();\n if (crossOrigin !== null) {\n _this.image_.crossOrigin = crossOrigin;\n }\n /**\n * @private\n * @type {?function():void}\n */\n _this.unlisten_ = null;\n /**\n * @private\n * @type {import(\"./Tile.js\").LoadFunction}\n */\n _this.tileLoadFunction_ = tileLoadFunction;\n return _this;\n }\n /**\n * Get the HTML image element for this tile (may be a Canvas, Image, or Video).\n * @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.\n * @api\n */\n ImageTile.prototype.getImage = function () {\n return this.image_;\n };\n /**\n * @return {string} Key.\n */\n ImageTile.prototype.getKey = function () {\n return this.src_;\n };\n /**\n * Tracks loading or read errors.\n *\n * @private\n */\n ImageTile.prototype.handleImageError_ = function () {\n this.state = TileState.ERROR;\n this.unlistenImage_();\n this.image_ = getBlankImage();\n this.changed();\n };\n /**\n * Tracks successful image load.\n *\n * @private\n */\n ImageTile.prototype.handleImageLoad_ = function () {\n var image = /** @type {HTMLImageElement} */ (this.image_);\n if (image.naturalWidth && image.naturalHeight) {\n this.state = TileState.LOADED;\n }\n else {\n this.state = TileState.EMPTY;\n }\n this.unlistenImage_();\n this.changed();\n };\n /**\n * Load not yet loaded URI.\n * @api\n */\n ImageTile.prototype.load = function () {\n if (this.state == TileState.ERROR) {\n this.state = TileState.IDLE;\n this.image_ = new Image();\n if (this.crossOrigin_ !== null) {\n this.image_.crossOrigin = this.crossOrigin_;\n }\n }\n if (this.state == TileState.IDLE) {\n this.state = TileState.LOADING;\n this.changed();\n this.tileLoadFunction_(this, this.src_);\n this.unlisten_ = listenImage(this.image_, this.handleImageLoad_.bind(this), this.handleImageError_.bind(this));\n }\n };\n /**\n * Discards event handlers which listen for load completion or errors.\n *\n * @private\n */\n ImageTile.prototype.unlistenImage_ = function () {\n if (this.unlisten_) {\n this.unlisten_();\n this.unlisten_ = null;\n }\n };\n return ImageTile;\n}(Tile));\n/**\n * Get a 1-pixel blank image.\n * @return {HTMLCanvasElement} Blank image.\n */\nfunction getBlankImage() {\n var ctx = createCanvasContext2D(1, 1);\n ctx.fillStyle = 'rgba(0,0,0,0)';\n ctx.fillRect(0, 0, 1, 1);\n return ctx.canvas;\n}\nexport default ImageTile;\n//# sourceMappingURL=ImageTile.js.map","/**\n * @module ol/Kinetic\n */\n/**\n * @classdesc\n * Implementation of inertial deceleration for map movement.\n *\n * @api\n */\nvar Kinetic = /** @class */ (function () {\n /**\n * @param {number} decay Rate of decay (must be negative).\n * @param {number} minVelocity Minimum velocity (pixels/millisecond).\n * @param {number} delay Delay to consider to calculate the kinetic\n * initial values (milliseconds).\n */\n function Kinetic(decay, minVelocity, delay) {\n /**\n * @private\n * @type {number}\n */\n this.decay_ = decay;\n /**\n * @private\n * @type {number}\n */\n this.minVelocity_ = minVelocity;\n /**\n * @private\n * @type {number}\n */\n this.delay_ = delay;\n /**\n * @private\n * @type {Array}\n */\n this.points_ = [];\n /**\n * @private\n * @type {number}\n */\n this.angle_ = 0;\n /**\n * @private\n * @type {number}\n */\n this.initialVelocity_ = 0;\n }\n /**\n * FIXME empty description for jsdoc\n */\n Kinetic.prototype.begin = function () {\n this.points_.length = 0;\n this.angle_ = 0;\n this.initialVelocity_ = 0;\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n */\n Kinetic.prototype.update = function (x, y) {\n this.points_.push(x, y, Date.now());\n };\n /**\n * @return {boolean} Whether we should do kinetic animation.\n */\n Kinetic.prototype.end = function () {\n if (this.points_.length < 6) {\n // at least 2 points are required (i.e. there must be at least 6 elements\n // in the array)\n return false;\n }\n var delay = Date.now() - this.delay_;\n var lastIndex = this.points_.length - 3;\n if (this.points_[lastIndex + 2] < delay) {\n // the last tracked point is too old, which means that the user stopped\n // panning before releasing the map\n return false;\n }\n // get the first point which still falls into the delay time\n var firstIndex = lastIndex - 3;\n while (firstIndex > 0 && this.points_[firstIndex + 2] > delay) {\n firstIndex -= 3;\n }\n var duration = this.points_[lastIndex + 2] - this.points_[firstIndex + 2];\n // we don't want a duration of 0 (divide by zero)\n // we also make sure the user panned for a duration of at least one frame\n // (1/60s) to compute sane displacement values\n if (duration < 1000 / 60) {\n return false;\n }\n var dx = this.points_[lastIndex] - this.points_[firstIndex];\n var dy = this.points_[lastIndex + 1] - this.points_[firstIndex + 1];\n this.angle_ = Math.atan2(dy, dx);\n this.initialVelocity_ = Math.sqrt(dx * dx + dy * dy) / duration;\n return this.initialVelocity_ > this.minVelocity_;\n };\n /**\n * @return {number} Total distance travelled (pixels).\n */\n Kinetic.prototype.getDistance = function () {\n return (this.minVelocity_ - this.initialVelocity_) / this.decay_;\n };\n /**\n * @return {number} Angle of the kinetic panning animation (radians).\n */\n Kinetic.prototype.getAngle = function () {\n return this.angle_;\n };\n return Kinetic;\n}());\nexport default Kinetic;\n//# sourceMappingURL=Kinetic.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/renderer/Map\n */\nimport Disposable from '../Disposable.js';\nimport { TRUE } from '../functions.js';\nimport { abstract } from '../util.js';\nimport { compose as composeTransform, makeInverse } from '../transform.js';\nimport { getWidth } from '../extent.js';\nimport { shared as iconImageCache } from '../style/IconImageCache.js';\nimport { inView } from '../layer/Layer.js';\nimport { renderDeclutterItems } from '../render.js';\nimport { wrapX } from '../coordinate.js';\n/**\n * @abstract\n */\nvar MapRenderer = /** @class */ (function (_super) {\n __extends(MapRenderer, _super);\n /**\n * @param {import(\"../PluggableMap.js\").default} map Map.\n */\n function MapRenderer(map) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {import(\"../PluggableMap.js\").default}\n */\n _this.map_ = map;\n /**\n * @private\n */\n _this.declutterTree_ = null;\n return _this;\n }\n /**\n * @abstract\n * @param {import(\"../render/EventType.js\").default} type Event type.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n MapRenderer.prototype.dispatchRenderEvent = function (type, frameState) {\n abstract();\n };\n /**\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @protected\n */\n MapRenderer.prototype.calculateMatrices2D = function (frameState) {\n var viewState = frameState.viewState;\n var coordinateToPixelTransform = frameState.coordinateToPixelTransform;\n var pixelToCoordinateTransform = frameState.pixelToCoordinateTransform;\n composeTransform(coordinateToPixelTransform, frameState.size[0] / 2, frameState.size[1] / 2, 1 / viewState.resolution, -1 / viewState.resolution, -viewState.rotation, -viewState.center[0], -viewState.center[1]);\n makeInverse(pixelToCoordinateTransform, coordinateToPixelTransform);\n };\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {boolean} checkWrapped Check for wrapped geometries.\n * @param {function(this: S, import(\"../Feature.js\").FeatureLike,\n * import(\"../layer/Layer.js\").default): T} callback Feature callback.\n * @param {S} thisArg Value to use as `this` when executing `callback`.\n * @param {function(this: U, import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @param {U} thisArg2 Value to use as `this` when executing `layerFilter`.\n * @return {T|undefined} Callback result.\n * @template S,T,U\n */\n MapRenderer.prototype.forEachFeatureAtCoordinate = function (coordinate, frameState, hitTolerance, checkWrapped, callback, thisArg, layerFilter, thisArg2) {\n var result;\n var viewState = frameState.viewState;\n /**\n * @param {boolean} managed Managed layer.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {import(\"../layer/Layer.js\").default} layer Layer.\n * @return {?} Callback result.\n */\n function forEachFeatureAtCoordinate(managed, feature, layer) {\n return callback.call(thisArg, feature, managed ? layer : null);\n }\n var projection = viewState.projection;\n var translatedCoordinate = wrapX(coordinate.slice(), projection);\n var offsets = [[0, 0]];\n if (projection.canWrapX() && checkWrapped) {\n var projectionExtent = projection.getExtent();\n var worldWidth = getWidth(projectionExtent);\n offsets.push([-worldWidth, 0], [worldWidth, 0]);\n }\n var layerStates = frameState.layerStatesArray;\n var numLayers = layerStates.length;\n var declutteredFeatures;\n if (this.declutterTree_) {\n declutteredFeatures = this.declutterTree_.all().map(function (entry) {\n return entry.value;\n });\n }\n var tmpCoord = [];\n for (var i = 0; i < offsets.length; i++) {\n for (var j = numLayers - 1; j >= 0; --j) {\n var layerState = layerStates[j];\n var layer = /** @type {import(\"../layer/Layer.js\").default} */ (layerState.layer);\n if (layer.hasRenderer() &&\n inView(layerState, viewState) &&\n layerFilter.call(thisArg2, layer)) {\n var layerRenderer = layer.getRenderer();\n var source = layer.getSource();\n if (layerRenderer && source) {\n var coordinates = source.getWrapX()\n ? translatedCoordinate\n : coordinate;\n var callback_1 = forEachFeatureAtCoordinate.bind(null, layerState.managed);\n tmpCoord[0] = coordinates[0] + offsets[i][0];\n tmpCoord[1] = coordinates[1] + offsets[i][1];\n result = layerRenderer.forEachFeatureAtCoordinate(tmpCoord, frameState, hitTolerance, callback_1, declutteredFeatures);\n }\n if (result) {\n return result;\n }\n }\n }\n }\n return undefined;\n };\n /**\n * @abstract\n * @param {import(\"../pixel.js\").Pixel} pixel Pixel.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {function(import(\"../layer/Layer.js\").default, (Uint8ClampedArray|Uint8Array)): T} callback Layer\n * callback.\n * @param {function(import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @return {T|undefined} Callback result.\n * @template T\n */\n MapRenderer.prototype.forEachLayerAtPixel = function (pixel, frameState, hitTolerance, callback, layerFilter) {\n return abstract();\n };\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {boolean} checkWrapped Check for wrapped geometries.\n * @param {function(this: U, import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @param {U} thisArg Value to use as `this` when executing `layerFilter`.\n * @return {boolean} Is there a feature at the given coordinate?\n * @template U\n */\n MapRenderer.prototype.hasFeatureAtCoordinate = function (coordinate, frameState, hitTolerance, checkWrapped, layerFilter, thisArg) {\n var hasFeature = this.forEachFeatureAtCoordinate(coordinate, frameState, hitTolerance, checkWrapped, TRUE, this, layerFilter, thisArg);\n return hasFeature !== undefined;\n };\n /**\n * @return {import(\"../PluggableMap.js\").default} Map.\n */\n MapRenderer.prototype.getMap = function () {\n return this.map_;\n };\n /**\n * Render.\n * @param {?import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n MapRenderer.prototype.renderFrame = function (frameState) {\n this.declutterTree_ = renderDeclutterItems(frameState, this.declutterTree_);\n };\n /**\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n * @protected\n */\n MapRenderer.prototype.scheduleExpireIconCache = function (frameState) {\n if (iconImageCache.canExpireCache()) {\n frameState.postRenderFunctions.push(expireIconCache);\n }\n };\n return MapRenderer;\n}(Disposable));\n/**\n * @param {import(\"../PluggableMap.js\").default} map Map.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\nfunction expireIconCache(map, frameState) {\n iconImageCache.expire();\n}\nexport default MapRenderer;\n//# sourceMappingURL=Map.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/renderer/Composite\n */\nimport MapRenderer from './Map.js';\nimport ObjectEventType from '../ObjectEventType.js';\nimport RenderEvent from '../render/Event.js';\nimport RenderEventType from '../render/EventType.js';\nimport SourceState from '../source/State.js';\nimport { CLASS_UNSELECTABLE } from '../css.js';\nimport { checkedFonts } from '../render/canvas.js';\nimport { inView } from '../layer/Layer.js';\nimport { listen, unlistenByKey } from '../events.js';\nimport { replaceChildren } from '../dom.js';\n/**\n * @classdesc\n * Canvas map renderer.\n * @api\n */\nvar CompositeMapRenderer = /** @class */ (function (_super) {\n __extends(CompositeMapRenderer, _super);\n /**\n * @param {import(\"../PluggableMap.js\").default} map Map.\n */\n function CompositeMapRenderer(map) {\n var _this = _super.call(this, map) || this;\n /**\n * @type {import(\"../events.js\").EventsKey}\n */\n _this.fontChangeListenerKey_ = listen(checkedFonts, ObjectEventType.PROPERTYCHANGE, map.redrawText.bind(map));\n /**\n * @private\n * @type {HTMLDivElement}\n */\n _this.element_ = document.createElement('div');\n var style = _this.element_.style;\n style.position = 'absolute';\n style.width = '100%';\n style.height = '100%';\n style.zIndex = '0';\n _this.element_.className = CLASS_UNSELECTABLE + ' ol-layers';\n var container = map.getViewport();\n container.insertBefore(_this.element_, container.firstChild || null);\n /**\n * @private\n * @type {Array}\n */\n _this.children_ = [];\n /**\n * @private\n * @type {boolean}\n */\n _this.renderedVisible_ = true;\n return _this;\n }\n /**\n * @param {import(\"../render/EventType.js\").default} type Event type.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n CompositeMapRenderer.prototype.dispatchRenderEvent = function (type, frameState) {\n var map = this.getMap();\n if (map.hasListener(type)) {\n var event_1 = new RenderEvent(type, undefined, frameState);\n map.dispatchEvent(event_1);\n }\n };\n CompositeMapRenderer.prototype.disposeInternal = function () {\n unlistenByKey(this.fontChangeListenerKey_);\n this.element_.parentNode.removeChild(this.element_);\n _super.prototype.disposeInternal.call(this);\n };\n /**\n * Render.\n * @param {?import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n CompositeMapRenderer.prototype.renderFrame = function (frameState) {\n if (!frameState) {\n if (this.renderedVisible_) {\n this.element_.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n this.calculateMatrices2D(frameState);\n this.dispatchRenderEvent(RenderEventType.PRECOMPOSE, frameState);\n var layerStatesArray = frameState.layerStatesArray.sort(function (a, b) {\n return a.zIndex - b.zIndex;\n });\n var viewState = frameState.viewState;\n this.children_.length = 0;\n var previousElement = null;\n for (var i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n var layerState = layerStatesArray[i];\n frameState.layerIndex = i;\n if (!inView(layerState, viewState) ||\n (layerState.sourceState != SourceState.READY &&\n layerState.sourceState != SourceState.UNDEFINED)) {\n continue;\n }\n var layer = layerState.layer;\n var element = layer.render(frameState, previousElement);\n if (!element) {\n continue;\n }\n if (element !== previousElement) {\n this.children_.push(element);\n previousElement = element;\n }\n }\n _super.prototype.renderFrame.call(this, frameState);\n replaceChildren(this.element_, this.children_);\n this.dispatchRenderEvent(RenderEventType.POSTCOMPOSE, frameState);\n if (!this.renderedVisible_) {\n this.element_.style.display = '';\n this.renderedVisible_ = true;\n }\n this.scheduleExpireIconCache(frameState);\n };\n /**\n * @param {import(\"../pixel.js\").Pixel} pixel Pixel.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {function(import(\"../layer/Layer.js\").default, (Uint8ClampedArray|Uint8Array)): T} callback Layer\n * callback.\n * @param {function(import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @return {T|undefined} Callback result.\n * @template T\n */\n CompositeMapRenderer.prototype.forEachLayerAtPixel = function (pixel, frameState, hitTolerance, callback, layerFilter) {\n var viewState = frameState.viewState;\n var layerStates = frameState.layerStatesArray;\n var numLayers = layerStates.length;\n for (var i = numLayers - 1; i >= 0; --i) {\n var layerState = layerStates[i];\n var layer = layerState.layer;\n if (layer.hasRenderer() &&\n inView(layerState, viewState) &&\n layerFilter(layer)) {\n var layerRenderer = layer.getRenderer();\n var data = layerRenderer.getDataAtPixel(pixel, frameState, hitTolerance);\n if (data) {\n var result = callback(layer, data);\n if (result) {\n return result;\n }\n }\n }\n }\n return undefined;\n };\n return CompositeMapRenderer;\n}(MapRenderer));\nexport default CompositeMapRenderer;\n//# sourceMappingURL=Composite.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/Attribution\n */\nimport Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport { CLASS_COLLAPSED, CLASS_CONTROL, CLASS_UNSELECTABLE } from '../css.js';\nimport { equals } from '../array.js';\nimport { inView } from '../layer/Layer.js';\nimport { removeChildren, replaceNode } from '../dom.js';\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-attribution'] CSS class name.\n * @property {HTMLElement|string} [target] Specify a target if you\n * want the control to be rendered outside of the map's\n * viewport.\n * @property {boolean} [collapsible] Specify if attributions can\n * be collapsed. If not specified, sources control this behavior with their\n * `attributionsCollapsible` setting.\n * @property {boolean} [collapsed=true] Specify if attributions should\n * be collapsed at startup.\n * @property {string} [tipLabel='Attributions'] Text label to use for the button tip.\n * @property {string} [label='i'] Text label to use for the\n * collapsed attributions button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string|HTMLElement} [collapseLabel='»'] Text label to use\n * for the expanded attributions button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when\n * the control should be re-rendered. This is called in a `requestAnimationFrame`\n * callback.\n */\n/**\n * @classdesc\n * Control to show all the attributions associated with the layer sources\n * in the map. This control is one of the default controls included in maps.\n * By default it will show in the bottom right portion of the map, but this can\n * be changed by using a css selector for `.ol-attribution`.\n *\n * @api\n */\nvar Attribution = /** @class */ (function (_super) {\n __extends(Attribution, _super);\n /**\n * @param {Options=} opt_options Attribution options.\n */\n function Attribution(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, {\n element: document.createElement('div'),\n render: options.render,\n target: options.target,\n }) || this;\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.ulElement_ = document.createElement('ul');\n /**\n * @private\n * @type {boolean}\n */\n _this.collapsed_ =\n options.collapsed !== undefined ? options.collapsed : true;\n /**\n * @private\n * @type {boolean}\n */\n _this.overrideCollapsible_ = options.collapsible !== undefined;\n /**\n * @private\n * @type {boolean}\n */\n _this.collapsible_ =\n options.collapsible !== undefined ? options.collapsible : true;\n if (!_this.collapsible_) {\n _this.collapsed_ = false;\n }\n var className = options.className !== undefined ? options.className : 'ol-attribution';\n var tipLabel = options.tipLabel !== undefined ? options.tipLabel : 'Attributions';\n var collapseLabel = options.collapseLabel !== undefined ? options.collapseLabel : '\\u00BB';\n if (typeof collapseLabel === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.collapseLabel_ = document.createElement('span');\n _this.collapseLabel_.textContent = collapseLabel;\n }\n else {\n _this.collapseLabel_ = collapseLabel;\n }\n var label = options.label !== undefined ? options.label : 'i';\n if (typeof label === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.label_ = document.createElement('span');\n _this.label_.textContent = label;\n }\n else {\n _this.label_ = label;\n }\n var activeLabel = _this.collapsible_ && !_this.collapsed_ ? _this.collapseLabel_ : _this.label_;\n var button = document.createElement('button');\n button.setAttribute('type', 'button');\n button.title = tipLabel;\n button.appendChild(activeLabel);\n button.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this), false);\n var cssClasses = className +\n ' ' +\n CLASS_UNSELECTABLE +\n ' ' +\n CLASS_CONTROL +\n (_this.collapsed_ && _this.collapsible_ ? ' ' + CLASS_COLLAPSED : '') +\n (_this.collapsible_ ? '' : ' ol-uncollapsible');\n var element = _this.element;\n element.className = cssClasses;\n element.appendChild(_this.ulElement_);\n element.appendChild(button);\n /**\n * A list of currently rendered resolutions.\n * @type {Array}\n * @private\n */\n _this.renderedAttributions_ = [];\n /**\n * @private\n * @type {boolean}\n */\n _this.renderedVisible_ = true;\n return _this;\n }\n /**\n * Collect a list of visible attributions and set the collapsible state.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n * @return {Array} Attributions.\n * @private\n */\n Attribution.prototype.collectSourceAttributions_ = function (frameState) {\n /**\n * Used to determine if an attribution already exists.\n * @type {!Object}\n */\n var lookup = {};\n /**\n * A list of visible attributions.\n * @type {Array}\n */\n var visibleAttributions = [];\n var layerStatesArray = frameState.layerStatesArray;\n for (var i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n var layerState = layerStatesArray[i];\n if (!inView(layerState, frameState.viewState)) {\n continue;\n }\n var source = /** @type {import(\"../layer/Layer.js\").default} */ (layerState.layer).getSource();\n if (!source) {\n continue;\n }\n var attributionGetter = source.getAttributions();\n if (!attributionGetter) {\n continue;\n }\n var attributions = attributionGetter(frameState);\n if (!attributions) {\n continue;\n }\n if (!this.overrideCollapsible_ &&\n source.getAttributionsCollapsible() === false) {\n this.setCollapsible(false);\n }\n if (Array.isArray(attributions)) {\n for (var j = 0, jj = attributions.length; j < jj; ++j) {\n if (!(attributions[j] in lookup)) {\n visibleAttributions.push(attributions[j]);\n lookup[attributions[j]] = true;\n }\n }\n }\n else {\n if (!(attributions in lookup)) {\n visibleAttributions.push(attributions);\n lookup[attributions] = true;\n }\n }\n }\n return visibleAttributions;\n };\n /**\n * @private\n * @param {?import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n Attribution.prototype.updateElement_ = function (frameState) {\n if (!frameState) {\n if (this.renderedVisible_) {\n this.element.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n var attributions = this.collectSourceAttributions_(frameState);\n var visible = attributions.length > 0;\n if (this.renderedVisible_ != visible) {\n this.element.style.display = visible ? '' : 'none';\n this.renderedVisible_ = visible;\n }\n if (equals(attributions, this.renderedAttributions_)) {\n return;\n }\n removeChildren(this.ulElement_);\n // append the attributions\n for (var i = 0, ii = attributions.length; i < ii; ++i) {\n var element = document.createElement('li');\n element.innerHTML = attributions[i];\n this.ulElement_.appendChild(element);\n }\n this.renderedAttributions_ = attributions;\n };\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n Attribution.prototype.handleClick_ = function (event) {\n event.preventDefault();\n this.handleToggle_();\n };\n /**\n * @private\n */\n Attribution.prototype.handleToggle_ = function () {\n this.element.classList.toggle(CLASS_COLLAPSED);\n if (this.collapsed_) {\n replaceNode(this.collapseLabel_, this.label_);\n }\n else {\n replaceNode(this.label_, this.collapseLabel_);\n }\n this.collapsed_ = !this.collapsed_;\n };\n /**\n * Return `true` if the attribution is collapsible, `false` otherwise.\n * @return {boolean} True if the widget is collapsible.\n * @api\n */\n Attribution.prototype.getCollapsible = function () {\n return this.collapsible_;\n };\n /**\n * Set whether the attribution should be collapsible.\n * @param {boolean} collapsible True if the widget is collapsible.\n * @api\n */\n Attribution.prototype.setCollapsible = function (collapsible) {\n if (this.collapsible_ === collapsible) {\n return;\n }\n this.collapsible_ = collapsible;\n this.element.classList.toggle('ol-uncollapsible');\n if (!collapsible && this.collapsed_) {\n this.handleToggle_();\n }\n };\n /**\n * Collapse or expand the attribution according to the passed parameter. Will\n * not do anything if the attribution isn't collapsible or if the current\n * collapsed state is already the one requested.\n * @param {boolean} collapsed True if the widget is collapsed.\n * @api\n */\n Attribution.prototype.setCollapsed = function (collapsed) {\n if (!this.collapsible_ || this.collapsed_ === collapsed) {\n return;\n }\n this.handleToggle_();\n };\n /**\n * Return `true` when the attribution is currently collapsed or `false`\n * otherwise.\n * @return {boolean} True if the widget is collapsed.\n * @api\n */\n Attribution.prototype.getCollapsed = function () {\n return this.collapsed_;\n };\n /**\n * Update the attribution element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @override\n */\n Attribution.prototype.render = function (mapEvent) {\n this.updateElement_(mapEvent.frameState);\n };\n return Attribution;\n}(Control));\nexport default Attribution;\n//# sourceMappingURL=Attribution.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/Rotate\n */\nimport Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport { CLASS_CONTROL, CLASS_HIDDEN, CLASS_UNSELECTABLE } from '../css.js';\nimport { easeOut } from '../easing.js';\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-rotate'] CSS class name.\n * @property {string|HTMLElement} [label='⇧'] Text label to use for the rotate button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [tipLabel='Reset rotation'] Text label to use for the rotate tip.\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {boolean} [autoHide=true] Hide the control when rotation is 0.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when the control should\n * be re-rendered. This is called in a `requestAnimationFrame` callback.\n * @property {function():void} [resetNorth] Function called when the control is clicked.\n * This will override the default `resetNorth`.\n * @property {HTMLElement|string} [target] Specify a target if you want the control to be\n * rendered outside of the map's viewport.\n */\n/**\n * @classdesc\n * A button control to reset rotation to 0.\n * To style this control use css selector `.ol-rotate`. A `.ol-hidden` css\n * selector is added to the button when the rotation is 0.\n *\n * @api\n */\nvar Rotate = /** @class */ (function (_super) {\n __extends(Rotate, _super);\n /**\n * @param {Options=} opt_options Rotate options.\n */\n function Rotate(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, {\n element: document.createElement('div'),\n render: options.render,\n target: options.target,\n }) || this;\n var className = options.className !== undefined ? options.className : 'ol-rotate';\n var label = options.label !== undefined ? options.label : '\\u21E7';\n /**\n * @type {HTMLElement}\n * @private\n */\n _this.label_ = null;\n if (typeof label === 'string') {\n _this.label_ = document.createElement('span');\n _this.label_.className = 'ol-compass';\n _this.label_.textContent = label;\n }\n else {\n _this.label_ = label;\n _this.label_.classList.add('ol-compass');\n }\n var tipLabel = options.tipLabel ? options.tipLabel : 'Reset rotation';\n var button = document.createElement('button');\n button.className = className + '-reset';\n button.setAttribute('type', 'button');\n button.title = tipLabel;\n button.appendChild(_this.label_);\n button.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this), false);\n var cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n var element = _this.element;\n element.className = cssClasses;\n element.appendChild(button);\n _this.callResetNorth_ = options.resetNorth ? options.resetNorth : undefined;\n /**\n * @type {number}\n * @private\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n /**\n * @type {boolean}\n * @private\n */\n _this.autoHide_ = options.autoHide !== undefined ? options.autoHide : true;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.rotation_ = undefined;\n if (_this.autoHide_) {\n _this.element.classList.add(CLASS_HIDDEN);\n }\n return _this;\n }\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n Rotate.prototype.handleClick_ = function (event) {\n event.preventDefault();\n if (this.callResetNorth_ !== undefined) {\n this.callResetNorth_();\n }\n else {\n this.resetNorth_();\n }\n };\n /**\n * @private\n */\n Rotate.prototype.resetNorth_ = function () {\n var map = this.getMap();\n var view = map.getView();\n if (!view) {\n // the map does not have a view, so we can't act\n // upon it\n return;\n }\n var rotation = view.getRotation();\n if (rotation !== undefined) {\n if (this.duration_ > 0 && rotation % (2 * Math.PI) !== 0) {\n view.animate({\n rotation: 0,\n duration: this.duration_,\n easing: easeOut,\n });\n }\n else {\n view.setRotation(0);\n }\n }\n };\n /**\n * Update the rotate control element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @override\n */\n Rotate.prototype.render = function (mapEvent) {\n var frameState = mapEvent.frameState;\n if (!frameState) {\n return;\n }\n var rotation = frameState.viewState.rotation;\n if (rotation != this.rotation_) {\n var transform = 'rotate(' + rotation + 'rad)';\n if (this.autoHide_) {\n var contains = this.element.classList.contains(CLASS_HIDDEN);\n if (!contains && rotation === 0) {\n this.element.classList.add(CLASS_HIDDEN);\n }\n else if (contains && rotation !== 0) {\n this.element.classList.remove(CLASS_HIDDEN);\n }\n }\n this.label_.style.transform = transform;\n }\n this.rotation_ = rotation;\n };\n return Rotate;\n}(Control));\nexport default Rotate;\n//# sourceMappingURL=Rotate.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/Zoom\n */\nimport Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport { CLASS_CONTROL, CLASS_UNSELECTABLE } from '../css.js';\nimport { easeOut } from '../easing.js';\n/**\n * @typedef {Object} Options\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {string} [className='ol-zoom'] CSS class name.\n * @property {string|HTMLElement} [zoomInLabel='+'] Text label to use for the zoom-in\n * button. Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string|HTMLElement} [zoomOutLabel='-'] Text label to use for the zoom-out button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [zoomInTipLabel='Zoom in'] Text label to use for the button tip.\n * @property {string} [zoomOutTipLabel='Zoom out'] Text label to use for the button tip.\n * @property {number} [delta=1] The zoom delta applied on each click.\n * @property {HTMLElement|string} [target] Specify a target if you want the control to be\n * rendered outside of the map's viewport.\n */\n/**\n * @classdesc\n * A control with 2 buttons, one for zoom in and one for zoom out.\n * This control is one of the default controls of a map. To style this control\n * use css selectors `.ol-zoom-in` and `.ol-zoom-out`.\n *\n * @api\n */\nvar Zoom = /** @class */ (function (_super) {\n __extends(Zoom, _super);\n /**\n * @param {Options=} opt_options Zoom options.\n */\n function Zoom(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, {\n element: document.createElement('div'),\n target: options.target,\n }) || this;\n var className = options.className !== undefined ? options.className : 'ol-zoom';\n var delta = options.delta !== undefined ? options.delta : 1;\n var zoomInLabel = options.zoomInLabel !== undefined ? options.zoomInLabel : '+';\n var zoomOutLabel = options.zoomOutLabel !== undefined ? options.zoomOutLabel : '\\u2212';\n var zoomInTipLabel = options.zoomInTipLabel !== undefined ? options.zoomInTipLabel : 'Zoom in';\n var zoomOutTipLabel = options.zoomOutTipLabel !== undefined\n ? options.zoomOutTipLabel\n : 'Zoom out';\n var inElement = document.createElement('button');\n inElement.className = className + '-in';\n inElement.setAttribute('type', 'button');\n inElement.title = zoomInTipLabel;\n inElement.appendChild(typeof zoomInLabel === 'string'\n ? document.createTextNode(zoomInLabel)\n : zoomInLabel);\n inElement.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this, delta), false);\n var outElement = document.createElement('button');\n outElement.className = className + '-out';\n outElement.setAttribute('type', 'button');\n outElement.title = zoomOutTipLabel;\n outElement.appendChild(typeof zoomOutLabel === 'string'\n ? document.createTextNode(zoomOutLabel)\n : zoomOutLabel);\n outElement.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this, -delta), false);\n var cssClasses = className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n var element = _this.element;\n element.className = cssClasses;\n element.appendChild(inElement);\n element.appendChild(outElement);\n /**\n * @type {number}\n * @private\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n return _this;\n }\n /**\n * @param {number} delta Zoom delta.\n * @param {MouseEvent} event The event to handle\n * @private\n */\n Zoom.prototype.handleClick_ = function (delta, event) {\n event.preventDefault();\n this.zoomByDelta_(delta);\n };\n /**\n * @param {number} delta Zoom delta.\n * @private\n */\n Zoom.prototype.zoomByDelta_ = function (delta) {\n var map = this.getMap();\n var view = map.getView();\n if (!view) {\n // the map does not have a view, so we can't act\n // upon it\n return;\n }\n var currentZoom = view.getZoom();\n if (currentZoom !== undefined) {\n var newZoom = view.getConstrainedZoom(currentZoom + delta);\n if (this.duration_ > 0) {\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n view.animate({\n zoom: newZoom,\n duration: this.duration_,\n easing: easeOut,\n });\n }\n else {\n view.setZoom(newZoom);\n }\n }\n };\n return Zoom;\n}(Control));\nexport default Zoom;\n//# sourceMappingURL=Zoom.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Map\n */\nimport CompositeMapRenderer from './renderer/Composite.js';\nimport PluggableMap from './PluggableMap.js';\nimport { assign } from './obj.js';\nimport { defaults as defaultControls } from './control.js';\nimport { defaults as defaultInteractions } from './interaction.js';\n/**\n * @classdesc\n * The map is the core component of OpenLayers. For a map to render, a view,\n * one or more layers, and a target container are needed:\n *\n * import Map from 'ol/Map';\n * import View from 'ol/View';\n * import TileLayer from 'ol/layer/Tile';\n * import OSM from 'ol/source/OSM';\n *\n * var map = new Map({\n * view: new View({\n * center: [0, 0],\n * zoom: 1\n * }),\n * layers: [\n * new TileLayer({\n * source: new OSM()\n * })\n * ],\n * target: 'map'\n * });\n *\n * The above snippet creates a map using a {@link module:ol/layer/Tile} to\n * display {@link module:ol/source/OSM~OSM} OSM data and render it to a DOM\n * element with the id `map`.\n *\n * The constructor places a viewport container (with CSS class name\n * `ol-viewport`) in the target element (see `getViewport()`), and then two\n * further elements within the viewport: one with CSS class name\n * `ol-overlaycontainer-stopevent` for controls and some overlays, and one with\n * CSS class name `ol-overlaycontainer` for other overlays (see the `stopEvent`\n * option of {@link module:ol/Overlay~Overlay} for the difference). The map\n * itself is placed in a further element within the viewport.\n *\n * Layers are stored as a {@link module:ol/Collection~Collection} in\n * layerGroups. A top-level group is provided by the library. This is what is\n * accessed by `getLayerGroup` and `setLayerGroup`. Layers entered in the\n * options are added to this group, and `addLayer` and `removeLayer` change the\n * layer collection in the group. `getLayers` is a convenience function for\n * `getLayerGroup().getLayers()`. Note that {@link module:ol/layer/Group~Group}\n * is a subclass of {@link module:ol/layer/Base}, so layers entered in the\n * options or added with `addLayer` can be groups, which can contain further\n * groups, and so on.\n *\n * @api\n */\nvar Map = /** @class */ (function (_super) {\n __extends(Map, _super);\n /**\n * @param {import(\"./PluggableMap.js\").MapOptions} options Map options.\n */\n function Map(options) {\n var _this = this;\n options = assign({}, options);\n if (!options.controls) {\n options.controls = defaultControls();\n }\n if (!options.interactions) {\n options.interactions = defaultInteractions({\n onFocusOnly: true,\n });\n }\n _this = _super.call(this, options) || this;\n return _this;\n }\n Map.prototype.createRenderer = function () {\n return new CompositeMapRenderer(this);\n };\n return Map;\n}(PluggableMap));\nexport default Map;\n//# sourceMappingURL=Map.js.map","/**\n * @module ol/control\n */\nimport Attribution from './control/Attribution.js';\nimport Collection from './Collection.js';\nimport Rotate from './control/Rotate.js';\nimport Zoom from './control/Zoom.js';\nexport { default as Attribution } from './control/Attribution.js';\nexport { default as Control } from './control/Control.js';\nexport { default as FullScreen } from './control/FullScreen.js';\nexport { default as MousePosition } from './control/MousePosition.js';\nexport { default as OverviewMap } from './control/OverviewMap.js';\nexport { default as Rotate } from './control/Rotate.js';\nexport { default as ScaleLine } from './control/ScaleLine.js';\nexport { default as Zoom } from './control/Zoom.js';\nexport { default as ZoomSlider } from './control/ZoomSlider.js';\nexport { default as ZoomToExtent } from './control/ZoomToExtent.js';\n/**\n * @typedef {Object} DefaultsOptions\n * @property {boolean} [attribution=true] Include\n * {@link module:ol/control/Attribution~Attribution}.\n * @property {import(\"./control/Attribution.js\").Options} [attributionOptions]\n * Options for {@link module:ol/control/Attribution~Attribution}.\n * @property {boolean} [rotate=true] Include\n * {@link module:ol/control/Rotate~Rotate}.\n * @property {import(\"./control/Rotate.js\").Options} [rotateOptions] Options\n * for {@link module:ol/control/Rotate~Rotate}.\n * @property {boolean} [zoom] Include {@link module:ol/control/Zoom~Zoom}.\n * @property {import(\"./control/Zoom.js\").Options} [zoomOptions] Options for\n * {@link module:ol/control/Zoom~Zoom}.\n * @api\n */\n/**\n * Set of controls included in maps by default. Unless configured otherwise,\n * this returns a collection containing an instance of each of the following\n * controls:\n * * {@link module:ol/control/Zoom~Zoom}\n * * {@link module:ol/control/Rotate~Rotate}\n * * {@link module:ol/control/Attribution~Attribution}\n *\n * @param {DefaultsOptions=} opt_options\n * Defaults options.\n * @return {Collection}\n * Controls.\n * @api\n */\nexport function defaults(opt_options) {\n var options = opt_options ? opt_options : {};\n var controls = new Collection();\n var zoomControl = options.zoom !== undefined ? options.zoom : true;\n if (zoomControl) {\n controls.push(new Zoom(options.zoomOptions));\n }\n var rotateControl = options.rotate !== undefined ? options.rotate : true;\n if (rotateControl) {\n controls.push(new Rotate(options.rotateOptions));\n }\n var attributionControl = options.attribution !== undefined ? options.attribution : true;\n if (attributionControl) {\n controls.push(new Attribution(options.attributionOptions));\n }\n return controls;\n}\n//# sourceMappingURL=control.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/MapBrowserEvent\n */\nimport MapEvent from './MapEvent.js';\n/**\n * @classdesc\n * Events emitted as map browser events are instances of this type.\n * See {@link module:ol/PluggableMap~PluggableMap} for which events trigger a map browser event.\n * @template {UIEvent} EVENT\n */\nvar MapBrowserEvent = /** @class */ (function (_super) {\n __extends(MapBrowserEvent, _super);\n /**\n * @param {string} type Event type.\n * @param {import(\"./PluggableMap.js\").default} map Map.\n * @param {EVENT} originalEvent Original event.\n * @param {boolean=} opt_dragging Is the map currently being dragged?\n * @param {?import(\"./PluggableMap.js\").FrameState=} opt_frameState Frame state.\n */\n function MapBrowserEvent(type, map, originalEvent, opt_dragging, opt_frameState) {\n var _this = _super.call(this, type, map, opt_frameState) || this;\n /**\n * The original browser event.\n * @const\n * @type {EVENT}\n * @api\n */\n _this.originalEvent = originalEvent;\n /**\n * The map pixel relative to the viewport corresponding to the original browser event.\n * @type {?import(\"./pixel.js\").Pixel}\n */\n _this.pixel_ = null;\n /**\n * The coordinate in the user projection corresponding to the original browser event.\n * @type {?import(\"./coordinate.js\").Coordinate}\n */\n _this.coordinate_ = null;\n /**\n * Indicates if the map is currently being dragged. Only set for\n * `POINTERDRAG` and `POINTERMOVE` events. Default is `false`.\n *\n * @type {boolean}\n * @api\n */\n _this.dragging = opt_dragging !== undefined ? opt_dragging : false;\n return _this;\n }\n Object.defineProperty(MapBrowserEvent.prototype, \"pixel\", {\n /**\n * The map pixel relative to the viewport corresponding to the original event.\n * @type {import(\"./pixel.js\").Pixel}\n * @api\n */\n get: function () {\n if (!this.pixel_) {\n this.pixel_ = this.map.getEventPixel(this.originalEvent);\n }\n return this.pixel_;\n },\n set: function (pixel) {\n this.pixel_ = pixel;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MapBrowserEvent.prototype, \"coordinate\", {\n /**\n * The coordinate corresponding to the original browser event. This will be in the user\n * projection if one is set. Otherwise it will be in the view projection.\n * @type {import(\"./coordinate.js\").Coordinate}\n * @api\n */\n get: function () {\n if (!this.coordinate_) {\n this.coordinate_ = this.map.getCoordinateFromPixel(this.pixel);\n }\n return this.coordinate_;\n },\n set: function (coordinate) {\n this.coordinate_ = coordinate;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Prevents the default browser action.\n * See https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault.\n * @api\n */\n MapBrowserEvent.prototype.preventDefault = function () {\n _super.prototype.preventDefault.call(this);\n this.originalEvent.preventDefault();\n };\n /**\n * Prevents further propagation of the current event.\n * See https://developer.mozilla.org/en-US/docs/Web/API/event.stopPropagation.\n * @api\n */\n MapBrowserEvent.prototype.stopPropagation = function () {\n _super.prototype.stopPropagation.call(this);\n this.originalEvent.stopPropagation();\n };\n return MapBrowserEvent;\n}(MapEvent));\nexport default MapBrowserEvent;\n//# sourceMappingURL=MapBrowserEvent.js.map","/**\n * @module ol/MapBrowserEventHandler\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\nimport MapBrowserEvent from './MapBrowserEvent.js';\nimport MapBrowserEventType from './MapBrowserEventType.js';\nimport PointerEventType from './pointer/EventType.js';\nimport { DEVICE_PIXEL_RATIO, PASSIVE_EVENT_LISTENERS } from './has.js';\nimport { listen, unlistenByKey } from './events.js';\nvar MapBrowserEventHandler = /** @class */ (function (_super) {\n __extends(MapBrowserEventHandler, _super);\n /**\n * @param {import(\"./PluggableMap.js\").default} map The map with the viewport to listen to events on.\n * @param {number=} moveTolerance The minimal distance the pointer must travel to trigger a move.\n */\n function MapBrowserEventHandler(map, moveTolerance) {\n var _this = _super.call(this, map) || this;\n /**\n * This is the element that we will listen to the real events on.\n * @type {import(\"./PluggableMap.js\").default}\n * @private\n */\n _this.map_ = map;\n /**\n * @type {any}\n * @private\n */\n _this.clickTimeoutId_;\n /**\n * @type {boolean}\n * @private\n */\n _this.dragging_ = false;\n /**\n * @type {!Array}\n * @private\n */\n _this.dragListenerKeys_ = [];\n /**\n * @type {number}\n * @private\n */\n _this.moveTolerance_ = moveTolerance\n ? moveTolerance * DEVICE_PIXEL_RATIO\n : DEVICE_PIXEL_RATIO;\n /**\n * The most recent \"down\" type event (or null if none have occurred).\n * Set on pointerdown.\n * @type {PointerEvent}\n * @private\n */\n _this.down_ = null;\n var element = _this.map_.getViewport();\n /**\n * @type {number}\n * @private\n */\n _this.activePointers_ = 0;\n /**\n * @type {!Object}\n * @private\n */\n _this.trackedTouches_ = {};\n _this.element_ = element;\n /**\n * @type {?import(\"./events.js\").EventsKey}\n * @private\n */\n _this.pointerdownListenerKey_ = listen(element, PointerEventType.POINTERDOWN, _this.handlePointerDown_, _this);\n /**\n * @type {PointerEvent}\n * @private\n */\n _this.originalPointerMoveEvent_;\n /**\n * @type {?import(\"./events.js\").EventsKey}\n * @private\n */\n _this.relayedListenerKey_ = listen(element, PointerEventType.POINTERMOVE, _this.relayEvent_, _this);\n /**\n * @private\n */\n _this.boundHandleTouchMove_ = _this.handleTouchMove_.bind(_this);\n _this.element_.addEventListener(EventType.TOUCHMOVE, _this.boundHandleTouchMove_, PASSIVE_EVENT_LISTENERS ? { passive: false } : false);\n return _this;\n }\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.emulateClick_ = function (pointerEvent) {\n var newEvent = new MapBrowserEvent(MapBrowserEventType.CLICK, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n if (this.clickTimeoutId_ !== undefined) {\n // double-click\n clearTimeout(this.clickTimeoutId_);\n this.clickTimeoutId_ = undefined;\n newEvent = new MapBrowserEvent(MapBrowserEventType.DBLCLICK, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n }\n else {\n // click\n this.clickTimeoutId_ = setTimeout(function () {\n this.clickTimeoutId_ = undefined;\n var newEvent = new MapBrowserEvent(MapBrowserEventType.SINGLECLICK, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n }.bind(this), 250);\n }\n };\n /**\n * Keeps track on how many pointers are currently active.\n *\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.updateActivePointers_ = function (pointerEvent) {\n var event = pointerEvent;\n if (event.type == MapBrowserEventType.POINTERUP ||\n event.type == MapBrowserEventType.POINTERCANCEL) {\n delete this.trackedTouches_[event.pointerId];\n }\n else if (event.type == MapBrowserEventType.POINTERDOWN) {\n this.trackedTouches_[event.pointerId] = true;\n }\n this.activePointers_ = Object.keys(this.trackedTouches_).length;\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.handlePointerUp_ = function (pointerEvent) {\n this.updateActivePointers_(pointerEvent);\n var newEvent = new MapBrowserEvent(MapBrowserEventType.POINTERUP, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n // We emulate click events on left mouse button click, touch contact, and pen\n // contact. isMouseActionButton returns true in these cases (evt.button is set\n // to 0).\n // See http://www.w3.org/TR/pointerevents/#button-states\n // We only fire click, singleclick, and doubleclick if nobody has called\n // event.stopPropagation() or event.preventDefault().\n if (!newEvent.propagationStopped &&\n !this.dragging_ &&\n this.isMouseActionButton_(pointerEvent)) {\n this.emulateClick_(this.down_);\n }\n if (this.activePointers_ === 0) {\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n this.dragging_ = false;\n this.down_ = null;\n }\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @return {boolean} If the left mouse button was pressed.\n * @private\n */\n MapBrowserEventHandler.prototype.isMouseActionButton_ = function (pointerEvent) {\n return pointerEvent.button === 0;\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.handlePointerDown_ = function (pointerEvent) {\n this.updateActivePointers_(pointerEvent);\n var newEvent = new MapBrowserEvent(MapBrowserEventType.POINTERDOWN, this.map_, pointerEvent);\n this.dispatchEvent(newEvent);\n this.down_ = pointerEvent;\n if (this.dragListenerKeys_.length === 0) {\n this.dragListenerKeys_.push(listen(document, MapBrowserEventType.POINTERMOVE, this.handlePointerMove_, this), listen(document, MapBrowserEventType.POINTERUP, this.handlePointerUp_, this), \n /* Note that the listener for `pointercancel is set up on\n * `pointerEventHandler_` and not `documentPointerEventHandler_` like\n * the `pointerup` and `pointermove` listeners.\n *\n * The reason for this is the following: `TouchSource.vacuumTouches_()`\n * issues `pointercancel` events, when there was no `touchend` for a\n * `touchstart`. Now, let's say a first `touchstart` is registered on\n * `pointerEventHandler_`. The `documentPointerEventHandler_` is set up.\n * But `documentPointerEventHandler_` doesn't know about the first\n * `touchstart`. If there is no `touchend` for the `touchstart`, we can\n * only receive a `touchcancel` from `pointerEventHandler_`, because it is\n * only registered there.\n */\n listen(this.element_, MapBrowserEventType.POINTERCANCEL, this.handlePointerUp_, this));\n if (this.element_.getRootNode &&\n this.element_.getRootNode() !== document) {\n this.dragListenerKeys_.push(listen(this.element_.getRootNode(), MapBrowserEventType.POINTERUP, this.handlePointerUp_, this));\n }\n }\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.handlePointerMove_ = function (pointerEvent) {\n // Between pointerdown and pointerup, pointermove events are triggered.\n // To avoid a 'false' touchmove event to be dispatched, we test if the pointer\n // moved a significant distance.\n if (this.isMoving_(pointerEvent)) {\n this.dragging_ = true;\n var newEvent = new MapBrowserEvent(MapBrowserEventType.POINTERDRAG, this.map_, pointerEvent, this.dragging_);\n this.dispatchEvent(newEvent);\n }\n };\n /**\n * Wrap and relay a pointer event. Note that this requires that the type\n * string for the MapBrowserEvent matches the PointerEvent type.\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n MapBrowserEventHandler.prototype.relayEvent_ = function (pointerEvent) {\n this.originalPointerMoveEvent_ = pointerEvent;\n var dragging = !!(this.down_ && this.isMoving_(pointerEvent));\n this.dispatchEvent(new MapBrowserEvent(pointerEvent.type, this.map_, pointerEvent, dragging));\n };\n /**\n * Flexible handling of a `touch-action: none` css equivalent: because calling\n * `preventDefault()` on a `pointermove` event does not stop native page scrolling\n * and zooming, we also listen for `touchmove` and call `preventDefault()` on it\n * when an interaction (currently `DragPan` handles the event.\n * @param {TouchEvent} event Event.\n * @private\n */\n MapBrowserEventHandler.prototype.handleTouchMove_ = function (event) {\n // Due to https://github.com/mpizenberg/elm-pep/issues/2, `this.originalPointerMoveEvent_`\n // may not be initialized yet when we get here on a platform without native pointer events.\n if (!this.originalPointerMoveEvent_ ||\n this.originalPointerMoveEvent_.defaultPrevented) {\n event.preventDefault();\n }\n };\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @return {boolean} Is moving.\n * @private\n */\n MapBrowserEventHandler.prototype.isMoving_ = function (pointerEvent) {\n return (this.dragging_ ||\n Math.abs(pointerEvent.clientX - this.down_.clientX) >\n this.moveTolerance_ ||\n Math.abs(pointerEvent.clientY - this.down_.clientY) > this.moveTolerance_);\n };\n /**\n * Clean up.\n */\n MapBrowserEventHandler.prototype.disposeInternal = function () {\n if (this.relayedListenerKey_) {\n unlistenByKey(this.relayedListenerKey_);\n this.relayedListenerKey_ = null;\n }\n this.element_.removeEventListener(EventType.TOUCHMOVE, this.boundHandleTouchMove_);\n if (this.pointerdownListenerKey_) {\n unlistenByKey(this.pointerdownListenerKey_);\n this.pointerdownListenerKey_ = null;\n }\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n this.element_ = null;\n _super.prototype.disposeInternal.call(this);\n };\n return MapBrowserEventHandler;\n}(EventTarget));\nexport default MapBrowserEventHandler;\n//# sourceMappingURL=MapBrowserEventHandler.js.map","/**\n * @module ol/MapBrowserEventType\n */\nimport EventType from './events/EventType.js';\n/**\n * Constants for event names.\n * @enum {string}\n */\nexport default {\n /**\n * A true single click with no dragging and no double click. Note that this\n * event is delayed by 250 ms to ensure that it is not a double click.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#singleclick\n * @api\n */\n SINGLECLICK: 'singleclick',\n /**\n * A click with no dragging. A double click will fire two of this.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#click\n * @api\n */\n CLICK: EventType.CLICK,\n /**\n * A true double click, with no dragging.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#dblclick\n * @api\n */\n DBLCLICK: EventType.DBLCLICK,\n /**\n * Triggered when a pointer is dragged.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#pointerdrag\n * @api\n */\n POINTERDRAG: 'pointerdrag',\n /**\n * Triggered when a pointer is moved. Note that on touch devices this is\n * triggered when the map is panned, so is not the same as mousemove.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#pointermove\n * @api\n */\n POINTERMOVE: 'pointermove',\n POINTERDOWN: 'pointerdown',\n POINTERUP: 'pointerup',\n POINTEROVER: 'pointerover',\n POINTEROUT: 'pointerout',\n POINTERENTER: 'pointerenter',\n POINTERLEAVE: 'pointerleave',\n POINTERCANCEL: 'pointercancel',\n};\n//# sourceMappingURL=MapBrowserEventType.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/MapEvent\n */\nimport Event from './events/Event.js';\n/**\n * @classdesc\n * Events emitted as map events are instances of this type.\n * See {@link module:ol/PluggableMap~PluggableMap} for which events trigger a map event.\n */\nvar MapEvent = /** @class */ (function (_super) {\n __extends(MapEvent, _super);\n /**\n * @param {string} type Event type.\n * @param {import(\"./PluggableMap.js\").default} map Map.\n * @param {?import(\"./PluggableMap.js\").FrameState=} opt_frameState Frame state.\n */\n function MapEvent(type, map, opt_frameState) {\n var _this = _super.call(this, type) || this;\n /**\n * The map where the event occurred.\n * @type {import(\"./PluggableMap.js\").default}\n * @api\n */\n _this.map = map;\n /**\n * The frame state at the time of the event.\n * @type {?import(\"./PluggableMap.js\").FrameState}\n * @api\n */\n _this.frameState = opt_frameState !== undefined ? opt_frameState : null;\n return _this;\n }\n return MapEvent;\n}(Event));\nexport default MapEvent;\n//# sourceMappingURL=MapEvent.js.map","/**\n * @module ol/MapEventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered after a map frame is rendered.\n * @event module:ol/MapEvent~MapEvent#postrender\n * @api\n */\n POSTRENDER: 'postrender',\n /**\n * Triggered when the map starts moving.\n * @event module:ol/MapEvent~MapEvent#movestart\n * @api\n */\n MOVESTART: 'movestart',\n /**\n * Triggered after the map is moved.\n * @event module:ol/MapEvent~MapEvent#moveend\n * @api\n */\n MOVEEND: 'moveend',\n};\n//# sourceMappingURL=MapEventType.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Object\n */\nimport Event from './events/Event.js';\nimport ObjectEventType from './ObjectEventType.js';\nimport Observable from './Observable.js';\nimport { assign, isEmpty } from './obj.js';\nimport { getUid } from './util.js';\n/**\n * @classdesc\n * Events emitted by {@link module:ol/Object~BaseObject} instances are instances of this type.\n */\nvar ObjectEvent = /** @class */ (function (_super) {\n __extends(ObjectEvent, _super);\n /**\n * @param {string} type The event type.\n * @param {string} key The property name.\n * @param {*} oldValue The old value for `key`.\n */\n function ObjectEvent(type, key, oldValue) {\n var _this = _super.call(this, type) || this;\n /**\n * The name of the property whose value is changing.\n * @type {string}\n * @api\n */\n _this.key = key;\n /**\n * The old value. To get the new value use `e.target.get(e.key)` where\n * `e` is the event object.\n * @type {*}\n * @api\n */\n _this.oldValue = oldValue;\n return _this;\n }\n return ObjectEvent;\n}(Event));\nexport { ObjectEvent };\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Most non-trivial classes inherit from this.\n *\n * This extends {@link module:ol/Observable} with observable\n * properties, where each property is observable as well as the object as a\n * whole.\n *\n * Classes that inherit from this have pre-defined properties, to which you can\n * add your owns. The pre-defined properties are listed in this documentation as\n * 'Observable Properties', and have their own accessors; for example,\n * {@link module:ol/Map~Map} has a `target` property, accessed with\n * `getTarget()` and changed with `setTarget()`. Not all properties are however\n * settable. There are also general-purpose accessors `get()` and `set()`. For\n * example, `get('target')` is equivalent to `getTarget()`.\n *\n * The `set` accessors trigger a change event, and you can monitor this by\n * registering a listener. For example, {@link module:ol/View~View} has a\n * `center` property, so `view.on('change:center', function(evt) {...});` would\n * call the function whenever the value of the center property changes. Within\n * the function, `evt.target` would be the view, so `evt.target.getCenter()`\n * would return the new center.\n *\n * You can add your own observable properties with\n * `object.set('prop', 'value')`, and retrieve that with `object.get('prop')`.\n * You can listen for changes on that property value with\n * `object.on('change:prop', listener)`. You can get a list of all\n * properties with {@link module:ol/Object~BaseObject#getProperties}.\n *\n * Note that the observable properties are separate from standard JS properties.\n * You can, for example, give your map object a title with\n * `map.title='New title'` and with `map.set('title', 'Another title')`. The\n * first will be a `hasOwnProperty`; the second will appear in\n * `getProperties()`. Only the second is observable.\n *\n * Properties can be deleted by using the unset method. E.g.\n * object.unset('foo').\n *\n * @fires ObjectEvent\n * @api\n */\nvar BaseObject = /** @class */ (function (_super) {\n __extends(BaseObject, _super);\n /**\n * @param {Object=} opt_values An object with key-value pairs.\n */\n function BaseObject(opt_values) {\n var _this = _super.call(this) || this;\n // Call {@link module:ol/util~getUid} to ensure that the order of objects' ids is\n // the same as the order in which they were created. This also helps to\n // ensure that object properties are always added in the same order, which\n // helps many JavaScript engines generate faster code.\n getUid(_this);\n /**\n * @private\n * @type {Object}\n */\n _this.values_ = null;\n if (opt_values !== undefined) {\n _this.setProperties(opt_values);\n }\n return _this;\n }\n /**\n * Gets a value.\n * @param {string} key Key name.\n * @return {*} Value.\n * @api\n */\n BaseObject.prototype.get = function (key) {\n var value;\n if (this.values_ && this.values_.hasOwnProperty(key)) {\n value = this.values_[key];\n }\n return value;\n };\n /**\n * Get a list of object property names.\n * @return {Array} List of property names.\n * @api\n */\n BaseObject.prototype.getKeys = function () {\n return (this.values_ && Object.keys(this.values_)) || [];\n };\n /**\n * Get an object of all property names and values.\n * @return {Object} Object.\n * @api\n */\n BaseObject.prototype.getProperties = function () {\n return (this.values_ && assign({}, this.values_)) || {};\n };\n /**\n * @return {boolean} The object has properties.\n */\n BaseObject.prototype.hasProperties = function () {\n return !!this.values_;\n };\n /**\n * @param {string} key Key name.\n * @param {*} oldValue Old value.\n */\n BaseObject.prototype.notify = function (key, oldValue) {\n var eventType;\n eventType = getChangeEventType(key);\n this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));\n eventType = ObjectEventType.PROPERTYCHANGE;\n this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));\n };\n /**\n * Sets a value.\n * @param {string} key Key name.\n * @param {*} value Value.\n * @param {boolean=} opt_silent Update without triggering an event.\n * @api\n */\n BaseObject.prototype.set = function (key, value, opt_silent) {\n var values = this.values_ || (this.values_ = {});\n if (opt_silent) {\n values[key] = value;\n }\n else {\n var oldValue = values[key];\n values[key] = value;\n if (oldValue !== value) {\n this.notify(key, oldValue);\n }\n }\n };\n /**\n * Sets a collection of key-value pairs. Note that this changes any existing\n * properties and adds new ones (it does not remove any existing properties).\n * @param {Object} values Values.\n * @param {boolean=} opt_silent Update without triggering an event.\n * @api\n */\n BaseObject.prototype.setProperties = function (values, opt_silent) {\n for (var key in values) {\n this.set(key, values[key], opt_silent);\n }\n };\n /**\n * Unsets a property.\n * @param {string} key Key name.\n * @param {boolean=} opt_silent Unset without triggering an event.\n * @api\n */\n BaseObject.prototype.unset = function (key, opt_silent) {\n if (this.values_ && key in this.values_) {\n var oldValue = this.values_[key];\n delete this.values_[key];\n if (isEmpty(this.values_)) {\n this.values_ = null;\n }\n if (!opt_silent) {\n this.notify(key, oldValue);\n }\n }\n };\n return BaseObject;\n}(Observable));\n/**\n * @type {Object}\n */\nvar changeEventTypeCache = {};\n/**\n * @param {string} key Key name.\n * @return {string} Change name.\n */\nexport function getChangeEventType(key) {\n return changeEventTypeCache.hasOwnProperty(key)\n ? changeEventTypeCache[key]\n : (changeEventTypeCache[key] = 'change:' + key);\n}\nexport default BaseObject;\n//# sourceMappingURL=Object.js.map","/**\n * @module ol/ObjectEventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when a property is changed.\n * @event module:ol/Object.ObjectEvent#propertychange\n * @api\n */\n PROPERTYCHANGE: 'propertychange',\n};\n//# sourceMappingURL=ObjectEventType.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Observable\n */\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\nimport { listen, listenOnce, unlistenByKey } from './events.js';\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * An event target providing convenient methods for listener registration\n * and unregistration. A generic `change` event is always available through\n * {@link module:ol/Observable~Observable#changed}.\n *\n * @fires import(\"./events/Event.js\").default\n * @api\n */\nvar Observable = /** @class */ (function (_super) {\n __extends(Observable, _super);\n function Observable() {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {number}\n */\n _this.revision_ = 0;\n return _this;\n }\n /**\n * Increases the revision counter and dispatches a 'change' event.\n * @api\n */\n Observable.prototype.changed = function () {\n ++this.revision_;\n this.dispatchEvent(EventType.CHANGE);\n };\n /**\n * Get the version number for this object. Each time the object is modified,\n * its version number will be incremented.\n * @return {number} Revision.\n * @api\n */\n Observable.prototype.getRevision = function () {\n return this.revision_;\n };\n /**\n * Listen for a certain type of event.\n * @param {string|Array} type The event type or array of event types.\n * @param {function(?): ?} listener The listener function.\n * @return {import(\"./events.js\").EventsKey|Array} Unique key for the listener. If\n * called with an array of event types as the first argument, the return\n * will be an array of keys.\n * @api\n */\n Observable.prototype.on = function (type, listener) {\n if (Array.isArray(type)) {\n var len = type.length;\n var keys = new Array(len);\n for (var i = 0; i < len; ++i) {\n keys[i] = listen(this, type[i], listener);\n }\n return keys;\n }\n else {\n return listen(this, /** @type {string} */ (type), listener);\n }\n };\n /**\n * Listen once for a certain type of event.\n * @param {string|Array} type The event type or array of event types.\n * @param {function(?): ?} listener The listener function.\n * @return {import(\"./events.js\").EventsKey|Array} Unique key for the listener. If\n * called with an array of event types as the first argument, the return\n * will be an array of keys.\n * @api\n */\n Observable.prototype.once = function (type, listener) {\n var key;\n if (Array.isArray(type)) {\n var len = type.length;\n key = new Array(len);\n for (var i = 0; i < len; ++i) {\n key[i] = listenOnce(this, type[i], listener);\n }\n }\n else {\n key = listenOnce(this, /** @type {string} */ (type), listener);\n }\n /** @type {Object} */ (listener).ol_key = key;\n return key;\n };\n /**\n * Unlisten for a certain type of event.\n * @param {string|Array} type The event type or array of event types.\n * @param {function(?): ?} listener The listener function.\n * @api\n */\n Observable.prototype.un = function (type, listener) {\n var key = /** @type {Object} */ (listener).ol_key;\n if (key) {\n unByKey(key);\n }\n else if (Array.isArray(type)) {\n for (var i = 0, ii = type.length; i < ii; ++i) {\n this.removeEventListener(type[i], listener);\n }\n }\n else {\n this.removeEventListener(type, listener);\n }\n };\n return Observable;\n}(EventTarget));\n/**\n * Removes an event listener using the key returned by `on()` or `once()`.\n * @param {import(\"./events.js\").EventsKey|Array} key The key returned by `on()`\n * or `once()` (or an array of keys).\n * @api\n */\nexport function unByKey(key) {\n if (Array.isArray(key)) {\n for (var i = 0, ii = key.length; i < ii; ++i) {\n unlistenByKey(key[i]);\n }\n }\n else {\n unlistenByKey(/** @type {import(\"./events.js\").EventsKey} */ (key));\n }\n}\nexport default Observable;\n//# sourceMappingURL=Observable.js.map","/**\n * @module ol/OverlayPositioning\n */\n/**\n * Overlay position: `'bottom-left'`, `'bottom-center'`, `'bottom-right'`,\n * `'center-left'`, `'center-center'`, `'center-right'`, `'top-left'`,\n * `'top-center'`, `'top-right'`\n * @enum {string}\n */\nexport default {\n BOTTOM_LEFT: 'bottom-left',\n BOTTOM_CENTER: 'bottom-center',\n BOTTOM_RIGHT: 'bottom-right',\n CENTER_LEFT: 'center-left',\n CENTER_CENTER: 'center-center',\n CENTER_RIGHT: 'center-right',\n TOP_LEFT: 'top-left',\n TOP_CENTER: 'top-center',\n TOP_RIGHT: 'top-right',\n};\n//# sourceMappingURL=OverlayPositioning.js.map","/**\n * @module ol/MapProperty\n */\n/**\n * @enum {string}\n */\nexport default {\n LAYERGROUP: 'layergroup',\n SIZE: 'size',\n TARGET: 'target',\n VIEW: 'view',\n};\n//# sourceMappingURL=MapProperty.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/PluggableMap\n */\nimport BaseObject, { getChangeEventType } from './Object.js';\nimport Collection from './Collection.js';\nimport CollectionEventType from './CollectionEventType.js';\nimport EventType from './events/EventType.js';\nimport LayerGroup from './layer/Group.js';\nimport MapBrowserEvent from './MapBrowserEvent.js';\nimport MapBrowserEventHandler from './MapBrowserEventHandler.js';\nimport MapBrowserEventType from './MapBrowserEventType.js';\nimport MapEvent from './MapEvent.js';\nimport MapEventType from './MapEventType.js';\nimport MapProperty from './MapProperty.js';\nimport ObjectEventType from './ObjectEventType.js';\nimport PointerEventType from './pointer/EventType.js';\nimport RenderEventType from './render/EventType.js';\nimport TileQueue, { getTilePriority } from './TileQueue.js';\nimport View from './View.js';\nimport ViewHint from './ViewHint.js';\nimport { DEVICE_PIXEL_RATIO, IMAGE_DECODE, PASSIVE_EVENT_LISTENERS, } from './has.js';\nimport { TRUE } from './functions.js';\nimport { apply as applyTransform, create as createTransform, } from './transform.js';\nimport { assert } from './asserts.js';\nimport { clone, createOrUpdateEmpty, equals, getForViewAndSize, isEmpty, } from './extent.js';\nimport { fromUserCoordinate, toUserCoordinate } from './proj.js';\nimport { hasArea } from './size.js';\nimport { listen, unlistenByKey } from './events.js';\nimport { removeNode } from './dom.js';\n/**\n * State of the current frame. Only `pixelRatio`, `time` and `viewState` should\n * be used in applications.\n * @typedef {Object} FrameState\n * @property {number} pixelRatio The pixel ratio of the frame.\n * @property {number} time The time when rendering of the frame was requested.\n * @property {import(\"./View.js\").State} viewState The state of the current view.\n * @property {boolean} animate\n * @property {import(\"./transform.js\").Transform} coordinateToPixelTransform\n * @property {null|import(\"./extent.js\").Extent} extent\n * @property {Array} declutterItems\n * @property {number} index\n * @property {Array} layerStatesArray\n * @property {number} layerIndex\n * @property {import(\"./transform.js\").Transform} pixelToCoordinateTransform\n * @property {Array} postRenderFunctions\n * @property {import(\"./size.js\").Size} size\n * @property {TileQueue} tileQueue\n * @property {!Object>} usedTiles\n * @property {Array} viewHints\n * @property {!Object>} wantedTiles\n */\n/**\n * @typedef {Object} DeclutterItems\n * @property {Array<*>} items Declutter items of an executor.\n * @property {number} opacity Layer opacity.\n */\n/**\n * @typedef {function(PluggableMap, ?FrameState): any} PostRenderFunction\n */\n/**\n * @typedef {Object} AtPixelOptions\n * @property {undefined|function(import(\"./layer/Layer.js\").default): boolean} [layerFilter] Layer filter\n * function. The filter function will receive one argument, the\n * {@link module:ol/layer/Layer layer-candidate} and it should return a boolean value.\n * Only layers which are visible and for which this function returns `true`\n * will be tested for features. By default, all visible layers will be tested.\n * @property {number} [hitTolerance=0] Hit-detection tolerance in pixels. Pixels\n * inside the radius around the given position will be checked for features.\n * @property {boolean} [checkWrapped=true] Check-Wrapped Will check for for wrapped geometries inside the range of\n * +/- 1 world width. Works only if a projection is used that can be wrapped.\n */\n/**\n * @typedef {Object} MapOptionsInternal\n * @property {Collection} [controls]\n * @property {Collection} [interactions]\n * @property {HTMLElement|Document} keyboardEventTarget\n * @property {Collection} overlays\n * @property {Object} values\n */\n/**\n * Object literal with config options for the map.\n * @typedef {Object} MapOptions\n * @property {Collection|Array} [controls]\n * Controls initially added to the map. If not specified,\n * {@link module:ol/control~defaults} is used.\n * @property {number} [pixelRatio=window.devicePixelRatio] The ratio between\n * physical pixels and device-independent pixels (dips) on the device.\n * @property {Collection|Array} [interactions]\n * Interactions that are initially added to the map. If not specified,\n * {@link module:ol/interaction~defaults} is used.\n * @property {HTMLElement|Document|string} [keyboardEventTarget] The element to\n * listen to keyboard events on. This determines when the `KeyboardPan` and\n * `KeyboardZoom` interactions trigger. For example, if this option is set to\n * `document` the keyboard interactions will always trigger. If this option is\n * not specified, the element the library listens to keyboard events on is the\n * map target (i.e. the user-provided div for the map). If this is not\n * `document`, the target element needs to be focused for key events to be\n * emitted, requiring that the target element has a `tabindex` attribute.\n * @property {Array|Collection|LayerGroup} [layers]\n * Layers. If this is not defined, a map with no layers will be rendered. Note\n * that layers are rendered in the order supplied, so if you want, for example,\n * a vector layer to appear on top of a tile layer, it must come after the tile\n * layer.\n * @property {number} [maxTilesLoading=16] Maximum number tiles to load\n * simultaneously.\n * @property {number} [moveTolerance=1] The minimum distance in pixels the\n * cursor must move to be detected as a map move event instead of a click.\n * Increasing this value can make it easier to click on the map.\n * @property {Collection|Array} [overlays]\n * Overlays initially added to the map. By default, no overlays are added.\n * @property {HTMLElement|string} [target] The container for the map, either the\n * element itself or the `id` of the element. If not specified at construction\n * time, {@link module:ol/Map~Map#setTarget} must be called for the map to be\n * rendered.\n * @property {View} [view] The map's view. No layer sources will be\n * fetched unless this is specified at construction time or through\n * {@link module:ol/Map~Map#setView}.\n */\n/**\n * @fires import(\"./MapBrowserEvent.js\").MapBrowserEvent\n * @fires import(\"./MapEvent.js\").MapEvent\n * @fires import(\"./render/Event.js\").default#precompose\n * @fires import(\"./render/Event.js\").default#postcompose\n * @fires import(\"./render/Event.js\").default#rendercomplete\n * @api\n */\nvar PluggableMap = /** @class */ (function (_super) {\n __extends(PluggableMap, _super);\n /**\n * @param {MapOptions} options Map options.\n */\n function PluggableMap(options) {\n var _this = _super.call(this) || this;\n var optionsInternal = createOptionsInternal(options);\n /** @private */\n _this.boundHandleBrowserEvent_ = _this.handleBrowserEvent.bind(_this);\n /**\n * @type {number}\n * @private\n */\n _this.maxTilesLoading_ =\n options.maxTilesLoading !== undefined ? options.maxTilesLoading : 16;\n /**\n * @private\n * @type {number}\n */\n _this.pixelRatio_ =\n options.pixelRatio !== undefined\n ? options.pixelRatio\n : DEVICE_PIXEL_RATIO;\n /**\n * @private\n * @type {*}\n */\n _this.postRenderTimeoutHandle_;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.animationDelayKey_;\n /**\n * @private\n */\n _this.animationDelay_ = function () {\n this.animationDelayKey_ = undefined;\n this.renderFrame_(Date.now());\n }.bind(_this);\n /**\n * @private\n * @type {import(\"./transform.js\").Transform}\n */\n _this.coordinateToPixelTransform_ = createTransform();\n /**\n * @private\n * @type {import(\"./transform.js\").Transform}\n */\n _this.pixelToCoordinateTransform_ = createTransform();\n /**\n * @private\n * @type {number}\n */\n _this.frameIndex_ = 0;\n /**\n * @private\n * @type {?FrameState}\n */\n _this.frameState_ = null;\n /**\n * The extent at the previous 'moveend' event.\n * @private\n * @type {import(\"./extent.js\").Extent}\n */\n _this.previousExtent_ = null;\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n _this.viewPropertyListenerKey_ = null;\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n _this.viewChangeListenerKey_ = null;\n /**\n * @private\n * @type {?Array}\n */\n _this.layerGroupPropertyListenerKeys_ = null;\n /**\n * @private\n * @type {!HTMLElement}\n */\n _this.viewport_ = document.createElement('div');\n _this.viewport_.className =\n 'ol-viewport' + ('ontouchstart' in window ? ' ol-touch' : '');\n _this.viewport_.style.position = 'relative';\n _this.viewport_.style.overflow = 'hidden';\n _this.viewport_.style.width = '100%';\n _this.viewport_.style.height = '100%';\n /**\n * @private\n * @type {!HTMLElement}\n */\n _this.overlayContainer_ = document.createElement('div');\n _this.overlayContainer_.style.position = 'absolute';\n _this.overlayContainer_.style.zIndex = '0';\n _this.overlayContainer_.style.width = '100%';\n _this.overlayContainer_.style.height = '100%';\n _this.overlayContainer_.style.pointerEvents = 'none';\n _this.overlayContainer_.className = 'ol-overlaycontainer';\n _this.viewport_.appendChild(_this.overlayContainer_);\n /**\n * @private\n * @type {!HTMLElement}\n */\n _this.overlayContainerStopEvent_ = document.createElement('div');\n _this.overlayContainerStopEvent_.style.position = 'absolute';\n _this.overlayContainerStopEvent_.style.zIndex = '0';\n _this.overlayContainerStopEvent_.style.width = '100%';\n _this.overlayContainerStopEvent_.style.height = '100%';\n _this.overlayContainerStopEvent_.style.pointerEvents = 'none';\n _this.overlayContainerStopEvent_.className = 'ol-overlaycontainer-stopevent';\n _this.viewport_.appendChild(_this.overlayContainerStopEvent_);\n /**\n * @private\n * @type {MapBrowserEventHandler}\n */\n _this.mapBrowserEventHandler_ = null;\n /**\n * @private\n * @type {number}\n */\n _this.moveTolerance_ = options.moveTolerance;\n /**\n * @private\n * @type {HTMLElement|Document}\n */\n _this.keyboardEventTarget_ = optionsInternal.keyboardEventTarget;\n /**\n * @private\n * @type {?Array}\n */\n _this.keyHandlerKeys_ = null;\n /**\n * @type {Collection}\n * @protected\n */\n _this.controls = optionsInternal.controls || new Collection();\n /**\n * @type {Collection}\n * @protected\n */\n _this.interactions = optionsInternal.interactions || new Collection();\n /**\n * @type {Collection}\n * @private\n */\n _this.overlays_ = optionsInternal.overlays;\n /**\n * A lookup of overlays by id.\n * @private\n * @type {Object}\n */\n _this.overlayIdIndex_ = {};\n /**\n * @type {import(\"./renderer/Map.js\").default}\n * @private\n */\n _this.renderer_ = null;\n /**\n * @type {undefined|function(Event): void}\n * @private\n */\n _this.handleResize_;\n /**\n * @private\n * @type {!Array}\n */\n _this.postRenderFunctions_ = [];\n /**\n * @private\n * @type {TileQueue}\n */\n _this.tileQueue_ = new TileQueue(_this.getTilePriority.bind(_this), _this.handleTileChange_.bind(_this));\n _this.addEventListener(getChangeEventType(MapProperty.LAYERGROUP), _this.handleLayerGroupChanged_);\n _this.addEventListener(getChangeEventType(MapProperty.VIEW), _this.handleViewChanged_);\n _this.addEventListener(getChangeEventType(MapProperty.SIZE), _this.handleSizeChanged_);\n _this.addEventListener(getChangeEventType(MapProperty.TARGET), _this.handleTargetChanged_);\n // setProperties will trigger the rendering of the map if the map\n // is \"defined\" already.\n _this.setProperties(optionsInternal.values);\n _this.controls.forEach(\n /**\n * @param {import(\"./control/Control.js\").default} control Control.\n * @this {PluggableMap}\n */\n function (control) {\n control.setMap(this);\n }.bind(_this));\n _this.controls.addEventListener(CollectionEventType.ADD, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(this);\n }.bind(_this));\n _this.controls.addEventListener(CollectionEventType.REMOVE, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(null);\n }.bind(_this));\n _this.interactions.forEach(\n /**\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction.\n * @this {PluggableMap}\n */\n function (interaction) {\n interaction.setMap(this);\n }.bind(_this));\n _this.interactions.addEventListener(CollectionEventType.ADD, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(this);\n }.bind(_this));\n _this.interactions.addEventListener(CollectionEventType.REMOVE, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(null);\n }.bind(_this));\n _this.overlays_.forEach(_this.addOverlayInternal_.bind(_this));\n _this.overlays_.addEventListener(CollectionEventType.ADD, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n this.addOverlayInternal_(\n /** @type {import(\"./Overlay.js\").default} */ (event.element));\n }.bind(_this));\n _this.overlays_.addEventListener(CollectionEventType.REMOVE, \n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n var overlay = /** @type {import(\"./Overlay.js\").default} */ (event.element);\n var id = overlay.getId();\n if (id !== undefined) {\n delete this.overlayIdIndex_[id.toString()];\n }\n event.element.setMap(null);\n }.bind(_this));\n return _this;\n }\n /**\n * @abstract\n * @return {import(\"./renderer/Map.js\").default} The map renderer\n */\n PluggableMap.prototype.createRenderer = function () {\n throw new Error('Use a map type that has a createRenderer method');\n };\n /**\n * Add the given control to the map.\n * @param {import(\"./control/Control.js\").default} control Control.\n * @api\n */\n PluggableMap.prototype.addControl = function (control) {\n this.getControls().push(control);\n };\n /**\n * Add the given interaction to the map. If you want to add an interaction\n * at another point of the collection use `getInteraction()` and the methods\n * available on {@link module:ol/Collection~Collection}. This can be used to\n * stop the event propagation from the handleEvent function. The interactions\n * get to handle the events in the reverse order of this collection.\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction to add.\n * @api\n */\n PluggableMap.prototype.addInteraction = function (interaction) {\n this.getInteractions().push(interaction);\n };\n /**\n * Adds the given layer to the top of this map. If you want to add a layer\n * elsewhere in the stack, use `getLayers()` and the methods available on\n * {@link module:ol/Collection~Collection}.\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @api\n */\n PluggableMap.prototype.addLayer = function (layer) {\n var layers = this.getLayerGroup().getLayers();\n layers.push(layer);\n };\n /**\n * Add the given overlay to the map.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @api\n */\n PluggableMap.prototype.addOverlay = function (overlay) {\n this.getOverlays().push(overlay);\n };\n /**\n * This deals with map's overlay collection changes.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @private\n */\n PluggableMap.prototype.addOverlayInternal_ = function (overlay) {\n var id = overlay.getId();\n if (id !== undefined) {\n this.overlayIdIndex_[id.toString()] = overlay;\n }\n overlay.setMap(this);\n };\n /**\n *\n * Clean up.\n */\n PluggableMap.prototype.disposeInternal = function () {\n this.setTarget(null);\n _super.prototype.disposeInternal.call(this);\n };\n /**\n * Detect features that intersect a pixel on the viewport, and execute a\n * callback with each intersecting feature. Layers included in the detection can\n * be configured through the `layerFilter` option in `opt_options`.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {function(this: S, import(\"./Feature.js\").FeatureLike,\n * import(\"./layer/Layer.js\").default): T} callback Feature callback. The callback will be\n * called with two arguments. The first argument is one\n * {@link module:ol/Feature feature} or\n * {@link module:ol/render/Feature render feature} at the pixel, the second is\n * the {@link module:ol/layer/Layer layer} of the feature and will be null for\n * unmanaged layers. To stop detection, callback functions can return a\n * truthy value.\n * @param {AtPixelOptions=} opt_options Optional options.\n * @return {T|undefined} Callback result, i.e. the return value of last\n * callback execution, or the first truthy callback return value.\n * @template S,T\n * @api\n */\n PluggableMap.prototype.forEachFeatureAtPixel = function (pixel, callback, opt_options) {\n if (!this.frameState_) {\n return;\n }\n var coordinate = this.getCoordinateFromPixelInternal(pixel);\n opt_options = opt_options !== undefined ? opt_options : {};\n var hitTolerance = opt_options.hitTolerance !== undefined\n ? opt_options.hitTolerance * this.frameState_.pixelRatio\n : 0;\n var layerFilter = opt_options.layerFilter !== undefined ? opt_options.layerFilter : TRUE;\n var checkWrapped = opt_options.checkWrapped !== false;\n return this.renderer_.forEachFeatureAtCoordinate(coordinate, this.frameState_, hitTolerance, checkWrapped, callback, null, layerFilter, null);\n };\n /**\n * Get all features that intersect a pixel on the viewport.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {AtPixelOptions=} opt_options Optional options.\n * @return {Array} The detected features or\n * an empty array if none were found.\n * @api\n */\n PluggableMap.prototype.getFeaturesAtPixel = function (pixel, opt_options) {\n var features = [];\n this.forEachFeatureAtPixel(pixel, function (feature) {\n features.push(feature);\n }, opt_options);\n return features;\n };\n /**\n * Detect layers that have a color value at a pixel on the viewport, and\n * execute a callback with each matching layer. Layers included in the\n * detection can be configured through `opt_layerFilter`.\n *\n * Note: this may give false positives unless the map layers have had different `className`\n * properties assigned to them.\n *\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {function(this: S, import(\"./layer/Layer.js\").default, (Uint8ClampedArray|Uint8Array)): T} callback\n * Layer callback. This callback will receive two arguments: first is the\n * {@link module:ol/layer/Layer layer}, second argument is an array representing\n * [R, G, B, A] pixel values (0 - 255) and will be `null` for layer types\n * that do not currently support this argument. To stop detection, callback\n * functions can return a truthy value.\n * @param {AtPixelOptions=} opt_options Configuration options.\n * @return {T|undefined} Callback result, i.e. the return value of last\n * callback execution, or the first truthy callback return value.\n * @template S,T\n * @api\n */\n PluggableMap.prototype.forEachLayerAtPixel = function (pixel, callback, opt_options) {\n if (!this.frameState_) {\n return;\n }\n var options = opt_options || {};\n var hitTolerance = options.hitTolerance !== undefined\n ? options.hitTolerance * this.frameState_.pixelRatio\n : 0;\n var layerFilter = options.layerFilter || TRUE;\n return this.renderer_.forEachLayerAtPixel(pixel, this.frameState_, hitTolerance, callback, layerFilter);\n };\n /**\n * Detect if features intersect a pixel on the viewport. Layers included in the\n * detection can be configured through `opt_layerFilter`.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {AtPixelOptions=} opt_options Optional options.\n * @return {boolean} Is there a feature at the given pixel?\n * @api\n */\n PluggableMap.prototype.hasFeatureAtPixel = function (pixel, opt_options) {\n if (!this.frameState_) {\n return false;\n }\n var coordinate = this.getCoordinateFromPixelInternal(pixel);\n opt_options = opt_options !== undefined ? opt_options : {};\n var layerFilter = opt_options.layerFilter !== undefined ? opt_options.layerFilter : TRUE;\n var hitTolerance = opt_options.hitTolerance !== undefined\n ? opt_options.hitTolerance * this.frameState_.pixelRatio\n : 0;\n var checkWrapped = opt_options.checkWrapped !== false;\n return this.renderer_.hasFeatureAtCoordinate(coordinate, this.frameState_, hitTolerance, checkWrapped, layerFilter, null);\n };\n /**\n * Returns the coordinate in user projection for a browser event.\n * @param {MouseEvent} event Event.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n * @api\n */\n PluggableMap.prototype.getEventCoordinate = function (event) {\n return this.getCoordinateFromPixel(this.getEventPixel(event));\n };\n /**\n * Returns the coordinate in view projection for a browser event.\n * @param {MouseEvent} event Event.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n */\n PluggableMap.prototype.getEventCoordinateInternal = function (event) {\n return this.getCoordinateFromPixelInternal(this.getEventPixel(event));\n };\n /**\n * Returns the map pixel position for a browser event relative to the viewport.\n * @param {UIEvent} event Event.\n * @return {import(\"./pixel.js\").Pixel} Pixel.\n * @api\n */\n PluggableMap.prototype.getEventPixel = function (event) {\n var viewportPosition = this.viewport_.getBoundingClientRect();\n var eventPosition = \n //FIXME Are we really calling this with a TouchEvent anywhere?\n 'changedTouches' in event\n ? /** @type {TouchEvent} */ (event).changedTouches[0]\n : /** @type {MouseEvent} */ (event);\n return [\n eventPosition.clientX - viewportPosition.left,\n eventPosition.clientY - viewportPosition.top,\n ];\n };\n /**\n * Get the target in which this map is rendered.\n * Note that this returns what is entered as an option or in setTarget:\n * if that was an element, it returns an element; if a string, it returns that.\n * @return {HTMLElement|string|undefined} The Element or id of the Element that the\n * map is rendered in.\n * @observable\n * @api\n */\n PluggableMap.prototype.getTarget = function () {\n return /** @type {HTMLElement|string|undefined} */ (this.get(MapProperty.TARGET));\n };\n /**\n * Get the DOM element into which this map is rendered. In contrast to\n * `getTarget` this method always return an `Element`, or `null` if the\n * map has no target.\n * @return {HTMLElement} The element that the map is rendered in.\n * @api\n */\n PluggableMap.prototype.getTargetElement = function () {\n var target = this.getTarget();\n if (target !== undefined) {\n return typeof target === 'string'\n ? document.getElementById(target)\n : target;\n }\n else {\n return null;\n }\n };\n /**\n * Get the coordinate for a given pixel. This returns a coordinate in the\n * user projection.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel position in the map viewport.\n * @return {import(\"./coordinate.js\").Coordinate} The coordinate for the pixel position.\n * @api\n */\n PluggableMap.prototype.getCoordinateFromPixel = function (pixel) {\n return toUserCoordinate(this.getCoordinateFromPixelInternal(pixel), this.getView().getProjection());\n };\n /**\n * Get the coordinate for a given pixel. This returns a coordinate in the\n * map view projection.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel position in the map viewport.\n * @return {import(\"./coordinate.js\").Coordinate} The coordinate for the pixel position.\n */\n PluggableMap.prototype.getCoordinateFromPixelInternal = function (pixel) {\n var frameState = this.frameState_;\n if (!frameState) {\n return null;\n }\n else {\n return applyTransform(frameState.pixelToCoordinateTransform, pixel.slice());\n }\n };\n /**\n * Get the map controls. Modifying this collection changes the controls\n * associated with the map.\n * @return {Collection} Controls.\n * @api\n */\n PluggableMap.prototype.getControls = function () {\n return this.controls;\n };\n /**\n * Get the map overlays. Modifying this collection changes the overlays\n * associated with the map.\n * @return {Collection} Overlays.\n * @api\n */\n PluggableMap.prototype.getOverlays = function () {\n return this.overlays_;\n };\n /**\n * Get an overlay by its identifier (the value returned by overlay.getId()).\n * Note that the index treats string and numeric identifiers as the same. So\n * `map.getOverlayById(2)` will return an overlay with id `'2'` or `2`.\n * @param {string|number} id Overlay identifier.\n * @return {import(\"./Overlay.js\").default} Overlay.\n * @api\n */\n PluggableMap.prototype.getOverlayById = function (id) {\n var overlay = this.overlayIdIndex_[id.toString()];\n return overlay !== undefined ? overlay : null;\n };\n /**\n * Get the map interactions. Modifying this collection changes the interactions\n * associated with the map.\n *\n * Interactions are used for e.g. pan, zoom and rotate.\n * @return {Collection} Interactions.\n * @api\n */\n PluggableMap.prototype.getInteractions = function () {\n return this.interactions;\n };\n /**\n * Get the layergroup associated with this map.\n * @return {LayerGroup} A layer group containing the layers in this map.\n * @observable\n * @api\n */\n PluggableMap.prototype.getLayerGroup = function () {\n return /** @type {LayerGroup} */ (this.get(MapProperty.LAYERGROUP));\n };\n /**\n * Get the collection of layers associated with this map.\n * @return {!Collection} Layers.\n * @api\n */\n PluggableMap.prototype.getLayers = function () {\n var layers = this.getLayerGroup().getLayers();\n return layers;\n };\n /**\n * @return {boolean} Layers have sources that are still loading.\n */\n PluggableMap.prototype.getLoading = function () {\n var layerStatesArray = this.getLayerGroup().getLayerStatesArray();\n for (var i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n var layer = layerStatesArray[i].layer;\n var source = /** @type {import(\"./layer/Layer.js\").default} */ (layer).getSource();\n if (source && source.loading) {\n return true;\n }\n }\n return false;\n };\n /**\n * Get the pixel for a coordinate. This takes a coordinate in the user\n * projection and returns the corresponding pixel.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate A map coordinate.\n * @return {import(\"./pixel.js\").Pixel} A pixel position in the map viewport.\n * @api\n */\n PluggableMap.prototype.getPixelFromCoordinate = function (coordinate) {\n var viewCoordinate = fromUserCoordinate(coordinate, this.getView().getProjection());\n return this.getPixelFromCoordinateInternal(viewCoordinate);\n };\n /**\n * Get the pixel for a coordinate. This takes a coordinate in the map view\n * projection and returns the corresponding pixel.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate A map coordinate.\n * @return {import(\"./pixel.js\").Pixel} A pixel position in the map viewport.\n */\n PluggableMap.prototype.getPixelFromCoordinateInternal = function (coordinate) {\n var frameState = this.frameState_;\n if (!frameState) {\n return null;\n }\n else {\n return applyTransform(frameState.coordinateToPixelTransform, coordinate.slice(0, 2));\n }\n };\n /**\n * Get the map renderer.\n * @return {import(\"./renderer/Map.js\").default} Renderer\n */\n PluggableMap.prototype.getRenderer = function () {\n return this.renderer_;\n };\n /**\n * Get the size of this map.\n * @return {import(\"./size.js\").Size|undefined} The size in pixels of the map in the DOM.\n * @observable\n * @api\n */\n PluggableMap.prototype.getSize = function () {\n return /** @type {import(\"./size.js\").Size|undefined} */ (this.get(MapProperty.SIZE));\n };\n /**\n * Get the view associated with this map. A view manages properties such as\n * center and resolution.\n * @return {View} The view that controls this map.\n * @observable\n * @api\n */\n PluggableMap.prototype.getView = function () {\n return /** @type {View} */ (this.get(MapProperty.VIEW));\n };\n /**\n * Get the element that serves as the map viewport.\n * @return {HTMLElement} Viewport.\n * @api\n */\n PluggableMap.prototype.getViewport = function () {\n return this.viewport_;\n };\n /**\n * Get the element that serves as the container for overlays. Elements added to\n * this container will let mousedown and touchstart events through to the map,\n * so clicks and gestures on an overlay will trigger {@link module:ol/MapBrowserEvent~MapBrowserEvent}\n * events.\n * @return {!HTMLElement} The map's overlay container.\n */\n PluggableMap.prototype.getOverlayContainer = function () {\n return this.overlayContainer_;\n };\n /**\n * Get the element that serves as a container for overlays that don't allow\n * event propagation. Elements added to this container won't let mousedown and\n * touchstart events through to the map, so clicks and gestures on an overlay\n * don't trigger any {@link module:ol/MapBrowserEvent~MapBrowserEvent}.\n * @return {!HTMLElement} The map's overlay container that stops events.\n */\n PluggableMap.prototype.getOverlayContainerStopEvent = function () {\n return this.overlayContainerStopEvent_;\n };\n /**\n * @param {import(\"./Tile.js\").default} tile Tile.\n * @param {string} tileSourceKey Tile source key.\n * @param {import(\"./coordinate.js\").Coordinate} tileCenter Tile center.\n * @param {number} tileResolution Tile resolution.\n * @return {number} Tile priority.\n */\n PluggableMap.prototype.getTilePriority = function (tile, tileSourceKey, tileCenter, tileResolution) {\n return getTilePriority(this.frameState_, tile, tileSourceKey, tileCenter, tileResolution);\n };\n /**\n * @param {UIEvent} browserEvent Browser event.\n * @param {string=} opt_type Type.\n */\n PluggableMap.prototype.handleBrowserEvent = function (browserEvent, opt_type) {\n var type = opt_type || browserEvent.type;\n var mapBrowserEvent = new MapBrowserEvent(type, this, browserEvent);\n this.handleMapBrowserEvent(mapBrowserEvent);\n };\n /**\n * @param {MapBrowserEvent} mapBrowserEvent The event to handle.\n */\n PluggableMap.prototype.handleMapBrowserEvent = function (mapBrowserEvent) {\n if (!this.frameState_) {\n // With no view defined, we cannot translate pixels into geographical\n // coordinates so interactions cannot be used.\n return;\n }\n var originalEvent = /** @type {PointerEvent} */ (mapBrowserEvent.originalEvent);\n var eventType = originalEvent.type;\n if (eventType === PointerEventType.POINTERDOWN ||\n eventType === EventType.WHEEL ||\n eventType === EventType.KEYDOWN) {\n var rootNode = this.viewport_.getRootNode\n ? this.viewport_.getRootNode()\n : document;\n var target = rootNode === document\n ? /** @type {Node} */ (originalEvent.target)\n : /** @type {ShadowRoot} */ (rootNode).elementFromPoint(originalEvent.clientX, originalEvent.clientY);\n if (\n // Abort if the target is a child of the container for elements whose events are not meant\n // to be handled by map interactions.\n this.overlayContainerStopEvent_.contains(target) ||\n // Abort if the event target is a child of the container that is no longer in the page.\n // It's possible for the target to no longer be in the page if it has been removed in an\n // event listener, this might happen in a Control that recreates it's content based on\n // user interaction either manually or via a render in something like https://reactjs.org/\n !(rootNode === document ? document.documentElement : rootNode).contains(target)) {\n return;\n }\n }\n mapBrowserEvent.frameState = this.frameState_;\n var interactionsArray = this.getInteractions().getArray();\n if (this.dispatchEvent(mapBrowserEvent) !== false) {\n for (var i = interactionsArray.length - 1; i >= 0; i--) {\n var interaction = interactionsArray[i];\n if (!interaction.getActive()) {\n continue;\n }\n var cont = interaction.handleEvent(mapBrowserEvent);\n if (!cont) {\n break;\n }\n }\n }\n };\n /**\n * @protected\n */\n PluggableMap.prototype.handlePostRender = function () {\n var frameState = this.frameState_;\n // Manage the tile queue\n // Image loads are expensive and a limited resource, so try to use them\n // efficiently:\n // * When the view is static we allow a large number of parallel tile loads\n // to complete the frame as quickly as possible.\n // * When animating or interacting, image loads can cause janks, so we reduce\n // the maximum number of loads per frame and limit the number of parallel\n // tile loads to remain reactive to view changes and to reduce the chance of\n // loading tiles that will quickly disappear from view.\n var tileQueue = this.tileQueue_;\n if (!tileQueue.isEmpty()) {\n var maxTotalLoading = this.maxTilesLoading_;\n var maxNewLoads = maxTotalLoading;\n if (frameState) {\n var hints = frameState.viewHints;\n if (hints[ViewHint.ANIMATING] || hints[ViewHint.INTERACTING]) {\n var lowOnFrameBudget = !IMAGE_DECODE && Date.now() - frameState.time > 8;\n maxTotalLoading = lowOnFrameBudget ? 0 : 8;\n maxNewLoads = lowOnFrameBudget ? 0 : 2;\n }\n }\n if (tileQueue.getTilesLoading() < maxTotalLoading) {\n tileQueue.reprioritize(); // FIXME only call if view has changed\n tileQueue.loadMoreTiles(maxTotalLoading, maxNewLoads);\n }\n }\n if (frameState &&\n this.hasListener(RenderEventType.RENDERCOMPLETE) &&\n !frameState.animate &&\n !this.tileQueue_.getTilesLoading() &&\n !this.getLoading()) {\n this.renderer_.dispatchRenderEvent(RenderEventType.RENDERCOMPLETE, frameState);\n }\n var postRenderFunctions = this.postRenderFunctions_;\n for (var i = 0, ii = postRenderFunctions.length; i < ii; ++i) {\n postRenderFunctions[i](this, frameState);\n }\n postRenderFunctions.length = 0;\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleSizeChanged_ = function () {\n if (this.getView() && !this.getView().getAnimating()) {\n this.getView().resolveConstraints(0);\n }\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleTargetChanged_ = function () {\n // target may be undefined, null, a string or an Element.\n // If it's a string we convert it to an Element before proceeding.\n // If it's not now an Element we remove the viewport from the DOM.\n // If it's an Element we append the viewport element to it.\n var targetElement;\n if (this.getTarget()) {\n targetElement = this.getTargetElement();\n }\n if (this.mapBrowserEventHandler_) {\n for (var i = 0, ii = this.keyHandlerKeys_.length; i < ii; ++i) {\n unlistenByKey(this.keyHandlerKeys_[i]);\n }\n this.keyHandlerKeys_ = null;\n this.viewport_.removeEventListener(EventType.CONTEXTMENU, this.boundHandleBrowserEvent_);\n this.viewport_.removeEventListener(EventType.WHEEL, this.boundHandleBrowserEvent_);\n if (this.handleResize_ !== undefined) {\n removeEventListener(EventType.RESIZE, this.handleResize_, false);\n this.handleResize_ = undefined;\n }\n this.mapBrowserEventHandler_.dispose();\n this.mapBrowserEventHandler_ = null;\n removeNode(this.viewport_);\n }\n if (!targetElement) {\n if (this.renderer_) {\n clearTimeout(this.postRenderTimeoutHandle_);\n this.postRenderFunctions_.length = 0;\n this.renderer_.dispose();\n this.renderer_ = null;\n }\n if (this.animationDelayKey_) {\n cancelAnimationFrame(this.animationDelayKey_);\n this.animationDelayKey_ = undefined;\n }\n }\n else {\n targetElement.appendChild(this.viewport_);\n if (!this.renderer_) {\n this.renderer_ = this.createRenderer();\n }\n this.mapBrowserEventHandler_ = new MapBrowserEventHandler(this, this.moveTolerance_);\n for (var key in MapBrowserEventType) {\n this.mapBrowserEventHandler_.addEventListener(MapBrowserEventType[key], this.handleMapBrowserEvent.bind(this));\n }\n this.viewport_.addEventListener(EventType.CONTEXTMENU, this.boundHandleBrowserEvent_, false);\n this.viewport_.addEventListener(EventType.WHEEL, this.boundHandleBrowserEvent_, PASSIVE_EVENT_LISTENERS ? { passive: false } : false);\n var keyboardEventTarget = !this.keyboardEventTarget_\n ? targetElement\n : this.keyboardEventTarget_;\n this.keyHandlerKeys_ = [\n listen(keyboardEventTarget, EventType.KEYDOWN, this.handleBrowserEvent, this),\n listen(keyboardEventTarget, EventType.KEYPRESS, this.handleBrowserEvent, this),\n ];\n if (!this.handleResize_) {\n this.handleResize_ = this.updateSize.bind(this);\n window.addEventListener(EventType.RESIZE, this.handleResize_, false);\n }\n }\n this.updateSize();\n // updateSize calls setSize, so no need to call this.render\n // ourselves here.\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleTileChange_ = function () {\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleViewPropertyChanged_ = function () {\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleViewChanged_ = function () {\n if (this.viewPropertyListenerKey_) {\n unlistenByKey(this.viewPropertyListenerKey_);\n this.viewPropertyListenerKey_ = null;\n }\n if (this.viewChangeListenerKey_) {\n unlistenByKey(this.viewChangeListenerKey_);\n this.viewChangeListenerKey_ = null;\n }\n var view = this.getView();\n if (view) {\n this.updateViewportSize_();\n this.viewPropertyListenerKey_ = listen(view, ObjectEventType.PROPERTYCHANGE, this.handleViewPropertyChanged_, this);\n this.viewChangeListenerKey_ = listen(view, EventType.CHANGE, this.handleViewPropertyChanged_, this);\n view.resolveConstraints(0);\n }\n this.render();\n };\n /**\n * @private\n */\n PluggableMap.prototype.handleLayerGroupChanged_ = function () {\n if (this.layerGroupPropertyListenerKeys_) {\n this.layerGroupPropertyListenerKeys_.forEach(unlistenByKey);\n this.layerGroupPropertyListenerKeys_ = null;\n }\n var layerGroup = this.getLayerGroup();\n if (layerGroup) {\n this.layerGroupPropertyListenerKeys_ = [\n listen(layerGroup, ObjectEventType.PROPERTYCHANGE, this.render, this),\n listen(layerGroup, EventType.CHANGE, this.render, this),\n ];\n }\n this.render();\n };\n /**\n * @return {boolean} Is rendered.\n */\n PluggableMap.prototype.isRendered = function () {\n return !!this.frameState_;\n };\n /**\n * Requests an immediate render in a synchronous manner.\n * @api\n */\n PluggableMap.prototype.renderSync = function () {\n if (this.animationDelayKey_) {\n cancelAnimationFrame(this.animationDelayKey_);\n }\n this.animationDelay_();\n };\n /**\n * Redraws all text after new fonts have loaded\n */\n PluggableMap.prototype.redrawText = function () {\n var layerStates = this.getLayerGroup().getLayerStatesArray();\n for (var i = 0, ii = layerStates.length; i < ii; ++i) {\n var layer = layerStates[i].layer;\n if (layer.hasRenderer()) {\n layer.getRenderer().handleFontsChanged();\n }\n }\n };\n /**\n * Request a map rendering (at the next animation frame).\n * @api\n */\n PluggableMap.prototype.render = function () {\n if (this.renderer_ && this.animationDelayKey_ === undefined) {\n this.animationDelayKey_ = requestAnimationFrame(this.animationDelay_);\n }\n };\n /**\n * Remove the given control from the map.\n * @param {import(\"./control/Control.js\").default} control Control.\n * @return {import(\"./control/Control.js\").default|undefined} The removed control (or undefined\n * if the control was not found).\n * @api\n */\n PluggableMap.prototype.removeControl = function (control) {\n return this.getControls().remove(control);\n };\n /**\n * Remove the given interaction from the map.\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction to remove.\n * @return {import(\"./interaction/Interaction.js\").default|undefined} The removed interaction (or\n * undefined if the interaction was not found).\n * @api\n */\n PluggableMap.prototype.removeInteraction = function (interaction) {\n return this.getInteractions().remove(interaction);\n };\n /**\n * Removes the given layer from the map.\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @return {import(\"./layer/Base.js\").default|undefined} The removed layer (or undefined if the\n * layer was not found).\n * @api\n */\n PluggableMap.prototype.removeLayer = function (layer) {\n var layers = this.getLayerGroup().getLayers();\n return layers.remove(layer);\n };\n /**\n * Remove the given overlay from the map.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @return {import(\"./Overlay.js\").default|undefined} The removed overlay (or undefined\n * if the overlay was not found).\n * @api\n */\n PluggableMap.prototype.removeOverlay = function (overlay) {\n return this.getOverlays().remove(overlay);\n };\n /**\n * @param {number} time Time.\n * @private\n */\n PluggableMap.prototype.renderFrame_ = function (time) {\n var size = this.getSize();\n var view = this.getView();\n var previousFrameState = this.frameState_;\n /** @type {?FrameState} */\n var frameState = null;\n if (size !== undefined && hasArea(size) && view && view.isDef()) {\n var viewHints = view.getHints(this.frameState_ ? this.frameState_.viewHints : undefined);\n var viewState = view.getState();\n frameState = {\n animate: false,\n coordinateToPixelTransform: this.coordinateToPixelTransform_,\n declutterItems: previousFrameState\n ? previousFrameState.declutterItems\n : [],\n extent: getForViewAndSize(viewState.center, viewState.resolution, viewState.rotation, size),\n index: this.frameIndex_++,\n layerIndex: 0,\n layerStatesArray: this.getLayerGroup().getLayerStatesArray(),\n pixelRatio: this.pixelRatio_,\n pixelToCoordinateTransform: this.pixelToCoordinateTransform_,\n postRenderFunctions: [],\n size: size,\n tileQueue: this.tileQueue_,\n time: time,\n usedTiles: {},\n viewState: viewState,\n viewHints: viewHints,\n wantedTiles: {},\n };\n }\n this.frameState_ = frameState;\n this.renderer_.renderFrame(frameState);\n if (frameState) {\n if (frameState.animate) {\n this.render();\n }\n Array.prototype.push.apply(this.postRenderFunctions_, frameState.postRenderFunctions);\n if (previousFrameState) {\n var moveStart = !this.previousExtent_ ||\n (!isEmpty(this.previousExtent_) &&\n !equals(frameState.extent, this.previousExtent_));\n if (moveStart) {\n this.dispatchEvent(new MapEvent(MapEventType.MOVESTART, this, previousFrameState));\n this.previousExtent_ = createOrUpdateEmpty(this.previousExtent_);\n }\n }\n var idle = this.previousExtent_ &&\n !frameState.viewHints[ViewHint.ANIMATING] &&\n !frameState.viewHints[ViewHint.INTERACTING] &&\n !equals(frameState.extent, this.previousExtent_);\n if (idle) {\n this.dispatchEvent(new MapEvent(MapEventType.MOVEEND, this, frameState));\n clone(frameState.extent, this.previousExtent_);\n }\n }\n this.dispatchEvent(new MapEvent(MapEventType.POSTRENDER, this, frameState));\n this.postRenderTimeoutHandle_ = setTimeout(this.handlePostRender.bind(this), 0);\n };\n /**\n * Sets the layergroup of this map.\n * @param {LayerGroup} layerGroup A layer group containing the layers in this map.\n * @observable\n * @api\n */\n PluggableMap.prototype.setLayerGroup = function (layerGroup) {\n this.set(MapProperty.LAYERGROUP, layerGroup);\n };\n /**\n * Set the size of this map.\n * @param {import(\"./size.js\").Size|undefined} size The size in pixels of the map in the DOM.\n * @observable\n * @api\n */\n PluggableMap.prototype.setSize = function (size) {\n this.set(MapProperty.SIZE, size);\n };\n /**\n * Set the target element to render this map into.\n * @param {HTMLElement|string|undefined} target The Element or id of the Element\n * that the map is rendered in.\n * @observable\n * @api\n */\n PluggableMap.prototype.setTarget = function (target) {\n this.set(MapProperty.TARGET, target);\n };\n /**\n * Set the view for this map.\n * @param {View} view The view that controls this map.\n * @observable\n * @api\n */\n PluggableMap.prototype.setView = function (view) {\n this.set(MapProperty.VIEW, view);\n };\n /**\n * Force a recalculation of the map viewport size. This should be called when\n * third-party code changes the size of the map viewport.\n * @api\n */\n PluggableMap.prototype.updateSize = function () {\n var targetElement = this.getTargetElement();\n if (!targetElement) {\n this.setSize(undefined);\n }\n else {\n var computedStyle = getComputedStyle(targetElement);\n this.setSize([\n targetElement.offsetWidth -\n parseFloat(computedStyle['borderLeftWidth']) -\n parseFloat(computedStyle['paddingLeft']) -\n parseFloat(computedStyle['paddingRight']) -\n parseFloat(computedStyle['borderRightWidth']),\n targetElement.offsetHeight -\n parseFloat(computedStyle['borderTopWidth']) -\n parseFloat(computedStyle['paddingTop']) -\n parseFloat(computedStyle['paddingBottom']) -\n parseFloat(computedStyle['borderBottomWidth']),\n ]);\n }\n this.updateViewportSize_();\n };\n /**\n * Recomputes the viewport size and save it on the view object (if any)\n * @private\n */\n PluggableMap.prototype.updateViewportSize_ = function () {\n var view = this.getView();\n if (view) {\n var size = undefined;\n var computedStyle = getComputedStyle(this.viewport_);\n if (computedStyle.width && computedStyle.height) {\n size = [\n parseInt(computedStyle.width, 10),\n parseInt(computedStyle.height, 10),\n ];\n }\n view.setViewportSize(size);\n }\n };\n return PluggableMap;\n}(BaseObject));\n/**\n * @param {MapOptions} options Map options.\n * @return {MapOptionsInternal} Internal map options.\n */\nfunction createOptionsInternal(options) {\n /**\n * @type {HTMLElement|Document}\n */\n var keyboardEventTarget = null;\n if (options.keyboardEventTarget !== undefined) {\n keyboardEventTarget =\n typeof options.keyboardEventTarget === 'string'\n ? document.getElementById(options.keyboardEventTarget)\n : options.keyboardEventTarget;\n }\n /**\n * @type {Object}\n */\n var values = {};\n var layerGroup = options.layers &&\n typeof ( /** @type {?} */(options.layers).getLayers) === 'function'\n ? /** @type {LayerGroup} */ (options.layers)\n : new LayerGroup({ layers: /** @type {Collection} */ (options.layers) });\n values[MapProperty.LAYERGROUP] = layerGroup;\n values[MapProperty.TARGET] = options.target;\n values[MapProperty.VIEW] =\n options.view !== undefined ? options.view : new View();\n var controls;\n if (options.controls !== undefined) {\n if (Array.isArray(options.controls)) {\n controls = new Collection(options.controls.slice());\n }\n else {\n assert(typeof ( /** @type {?} */(options.controls).getArray) === 'function', 47); // Expected `controls` to be an array or an `import(\"./Collection.js\").Collection`\n controls = /** @type {Collection} */ (options.controls);\n }\n }\n var interactions;\n if (options.interactions !== undefined) {\n if (Array.isArray(options.interactions)) {\n interactions = new Collection(options.interactions.slice());\n }\n else {\n assert(typeof ( /** @type {?} */(options.interactions).getArray) ===\n 'function', 48); // Expected `interactions` to be an array or an `import(\"./Collection.js\").Collection`\n interactions = /** @type {Collection} */ (options.interactions);\n }\n }\n var overlays;\n if (options.overlays !== undefined) {\n if (Array.isArray(options.overlays)) {\n overlays = new Collection(options.overlays.slice());\n }\n else {\n assert(typeof ( /** @type {?} */(options.overlays).getArray) === 'function', 49); // Expected `overlays` to be an array or an `import(\"./Collection.js\").Collection`\n overlays = options.overlays;\n }\n }\n else {\n overlays = new Collection();\n }\n return {\n controls: controls,\n interactions: interactions,\n keyboardEventTarget: keyboardEventTarget,\n overlays: overlays,\n values: values,\n };\n}\nexport default PluggableMap;\n//# sourceMappingURL=PluggableMap.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Tile\n */\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\nimport TileState from './TileState.js';\nimport { abstract } from './util.js';\nimport { easeIn } from './easing.js';\n/**\n * A function that takes an {@link module:ol/Tile} for the tile and a\n * `{string}` for the url as arguments. The default is\n * ```js\n * source.setTileLoadFunction(function(tile, src) {\n * tile.getImage().src = src;\n * });\n * ```\n * For more fine grained control, the load function can use fetch or XMLHttpRequest and involve\n * error handling:\n *\n * ```js\n * import TileState from 'ol/TileState';\n *\n * source.setTileLoadFunction(function(tile, src) {\n * var xhr = new XMLHttpRequest();\n * xhr.responseType = 'blob';\n * xhr.addEventListener('loadend', function (evt) {\n * var data = this.response;\n * if (data !== undefined) {\n * tile.getImage().src = URL.createObjectURL(data);\n * } else {\n * tile.setState(TileState.ERROR);\n * }\n * });\n * xhr.addEventListener('error', function () {\n * tile.setState(TileState.ERROR);\n * });\n * xhr.open('GET', src);\n * xhr.send();\n * });\n * ```\n *\n * @typedef {function(Tile, string): void} LoadFunction\n * @api\n */\n/**\n * {@link module:ol/source/Tile~Tile} sources use a function of this type to get\n * the url that provides a tile for a given tile coordinate.\n *\n * This function takes an {@link module:ol/tilecoord~TileCoord} for the tile\n * coordinate, a `{number}` representing the pixel ratio and a\n * {@link module:ol/proj/Projection} for the projection as arguments\n * and returns a `{string}` representing the tile URL, or undefined if no tile\n * should be requested for the passed tile coordinate.\n *\n * @typedef {function(import(\"./tilecoord.js\").TileCoord, number,\n * import(\"./proj/Projection.js\").default): (string|undefined)} UrlFunction\n * @api\n */\n/**\n * @typedef {Object} Options\n * @property {number} [transition=250] A duration for tile opacity\n * transitions in milliseconds. A duration of 0 disables the opacity transition.\n * @api\n */\n/**\n * @classdesc\n * Base class for tiles.\n *\n * @abstract\n */\nvar Tile = /** @class */ (function (_super) {\n __extends(Tile, _super);\n /**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {import(\"./TileState.js\").default} state State.\n * @param {Options=} opt_options Tile options.\n */\n function Tile(tileCoord, state, opt_options) {\n var _this = _super.call(this) || this;\n var options = opt_options ? opt_options : {};\n /**\n * @type {import(\"./tilecoord.js\").TileCoord}\n */\n _this.tileCoord = tileCoord;\n /**\n * @protected\n * @type {import(\"./TileState.js\").default}\n */\n _this.state = state;\n /**\n * An \"interim\" tile for this tile. The interim tile may be used while this\n * one is loading, for \"smooth\" transitions when changing params/dimensions\n * on the source.\n * @type {Tile}\n */\n _this.interimTile = null;\n /**\n * The tile is available at the highest possible resolution. Subclasses can\n * set this to `false` initially. Tile load listeners will not be\n * unregistered before this is set to `true` and a `#changed()` is called.\n * @type {boolean}\n */\n _this.hifi = true;\n /**\n * A key assigned to the tile. This is used by the tile source to determine\n * if this tile can effectively be used, or if a new tile should be created\n * and this one be used as an interim tile for this new tile.\n * @type {string}\n */\n _this.key = '';\n /**\n * The duration for the opacity transition.\n * @type {number}\n */\n _this.transition_ =\n options.transition === undefined ? 250 : options.transition;\n /**\n * Lookup of start times for rendering transitions. If the start time is\n * equal to -1, the transition is complete.\n * @type {Object}\n */\n _this.transitionStarts_ = {};\n return _this;\n }\n /**\n * @protected\n */\n Tile.prototype.changed = function () {\n this.dispatchEvent(EventType.CHANGE);\n };\n /**\n * Called by the tile cache when the tile is removed from the cache due to expiry\n */\n Tile.prototype.release = function () { };\n /**\n * @return {string} Key.\n */\n Tile.prototype.getKey = function () {\n return this.key + '/' + this.tileCoord;\n };\n /**\n * Get the interim tile most suitable for rendering using the chain of interim\n * tiles. This corresponds to the most recent tile that has been loaded, if no\n * such tile exists, the original tile is returned.\n * @return {!Tile} Best tile for rendering.\n */\n Tile.prototype.getInterimTile = function () {\n if (!this.interimTile) {\n //empty chain\n return this;\n }\n var tile = this.interimTile;\n // find the first loaded tile and return it. Since the chain is sorted in\n // decreasing order of creation time, there is no need to search the remainder\n // of the list (all those tiles correspond to older requests and will be\n // cleaned up by refreshInterimChain)\n do {\n if (tile.getState() == TileState.LOADED) {\n // Show tile immediately instead of fading it in after loading, because\n // the interim tile is in place already\n this.transition_ = 0;\n return tile;\n }\n tile = tile.interimTile;\n } while (tile);\n // we can not find a better tile\n return this;\n };\n /**\n * Goes through the chain of interim tiles and discards sections of the chain\n * that are no longer relevant.\n */\n Tile.prototype.refreshInterimChain = function () {\n if (!this.interimTile) {\n return;\n }\n var tile = this.interimTile;\n var prev = /** @type {Tile} */ (this);\n do {\n if (tile.getState() == TileState.LOADED) {\n //we have a loaded tile, we can discard the rest of the list\n //we would could abort any LOADING tile request\n //older than this tile (i.e. any LOADING tile following this entry in the chain)\n tile.interimTile = null;\n break;\n }\n else if (tile.getState() == TileState.LOADING) {\n //keep this LOADING tile any loaded tiles later in the chain are\n //older than this tile, so we're still interested in the request\n prev = tile;\n }\n else if (tile.getState() == TileState.IDLE) {\n //the head of the list is the most current tile, we don't need\n //to start any other requests for this chain\n prev.interimTile = tile.interimTile;\n }\n else {\n prev = tile;\n }\n tile = prev.interimTile;\n } while (tile);\n };\n /**\n * Get the tile coordinate for this tile.\n * @return {import(\"./tilecoord.js\").TileCoord} The tile coordinate.\n * @api\n */\n Tile.prototype.getTileCoord = function () {\n return this.tileCoord;\n };\n /**\n * @return {import(\"./TileState.js\").default} State.\n */\n Tile.prototype.getState = function () {\n return this.state;\n };\n /**\n * Sets the state of this tile. If you write your own {@link module:ol/Tile~LoadFunction tileLoadFunction} ,\n * it is important to set the state correctly to {@link module:ol/TileState~ERROR}\n * when the tile cannot be loaded. Otherwise the tile cannot be removed from\n * the tile queue and will block other requests.\n * @param {import(\"./TileState.js\").default} state State.\n * @api\n */\n Tile.prototype.setState = function (state) {\n if (this.state !== TileState.ERROR && this.state > state) {\n throw new Error('Tile load sequence violation');\n }\n this.state = state;\n this.changed();\n };\n /**\n * Load the image or retry if loading previously failed.\n * Loading is taken care of by the tile queue, and calling this method is\n * only needed for preloading or for reloading in case of an error.\n * @abstract\n * @api\n */\n Tile.prototype.load = function () {\n abstract();\n };\n /**\n * Get the alpha value for rendering.\n * @param {string} id An id for the renderer.\n * @param {number} time The render frame time.\n * @return {number} A number between 0 and 1.\n */\n Tile.prototype.getAlpha = function (id, time) {\n if (!this.transition_) {\n return 1;\n }\n var start = this.transitionStarts_[id];\n if (!start) {\n start = time;\n this.transitionStarts_[id] = start;\n }\n else if (start === -1) {\n return 1;\n }\n var delta = time - start + 1000 / 60; // avoid rendering at 0\n if (delta >= this.transition_) {\n return 1;\n }\n return easeIn(delta / this.transition_);\n };\n /**\n * Determine if a tile is in an alpha transition. A tile is considered in\n * transition if tile.getAlpha() has not yet been called or has been called\n * and returned 1.\n * @param {string} id An id for the renderer.\n * @return {boolean} The tile is in transition.\n */\n Tile.prototype.inTransition = function (id) {\n if (!this.transition_) {\n return false;\n }\n return this.transitionStarts_[id] !== -1;\n };\n /**\n * Mark a transition as complete.\n * @param {string} id An id for the renderer.\n */\n Tile.prototype.endTransition = function (id) {\n if (this.transition_) {\n this.transitionStarts_[id] = -1;\n }\n };\n return Tile;\n}(EventTarget));\nexport default Tile;\n//# sourceMappingURL=Tile.js.map","/**\n * @module ol/structs/LRUCache\n */\nimport { assert } from '../asserts.js';\n/**\n * @typedef {Object} Entry\n * @property {string} key_\n * @property {Object} newer\n * @property {Object} older\n * @property {*} value_\n */\n/**\n * @classdesc\n * Implements a Least-Recently-Used cache where the keys do not conflict with\n * Object's properties (e.g. 'hasOwnProperty' is not allowed as a key). Expiring\n * items from the cache is the responsibility of the user.\n *\n * @fires import(\"../events/Event.js\").default\n * @template T\n */\nvar LRUCache = /** @class */ (function () {\n /**\n * @param {number=} opt_highWaterMark High water mark.\n */\n function LRUCache(opt_highWaterMark) {\n /**\n * Desired max cache size after expireCache(). If set to 0, no cache entries\n * will be pruned at all.\n * @type {number}\n */\n this.highWaterMark =\n opt_highWaterMark !== undefined ? opt_highWaterMark : 2048;\n /**\n * @private\n * @type {number}\n */\n this.count_ = 0;\n /**\n * @private\n * @type {!Object}\n */\n this.entries_ = {};\n /**\n * @private\n * @type {?Entry}\n */\n this.oldest_ = null;\n /**\n * @private\n * @type {?Entry}\n */\n this.newest_ = null;\n }\n /**\n * @return {boolean} Can expire cache.\n */\n LRUCache.prototype.canExpireCache = function () {\n return this.highWaterMark > 0 && this.getCount() > this.highWaterMark;\n };\n /**\n * FIXME empty description for jsdoc\n */\n LRUCache.prototype.clear = function () {\n this.count_ = 0;\n this.entries_ = {};\n this.oldest_ = null;\n this.newest_ = null;\n };\n /**\n * @param {string} key Key.\n * @return {boolean} Contains key.\n */\n LRUCache.prototype.containsKey = function (key) {\n return this.entries_.hasOwnProperty(key);\n };\n /**\n * @param {function(T, string, LRUCache): ?} f The function\n * to call for every entry from the oldest to the newer. This function takes\n * 3 arguments (the entry value, the entry key and the LRUCache object).\n * The return value is ignored.\n */\n LRUCache.prototype.forEach = function (f) {\n var entry = this.oldest_;\n while (entry) {\n f(entry.value_, entry.key_, this);\n entry = entry.newer;\n }\n };\n /**\n * @param {string} key Key.\n * @param {*=} opt_options Options (reserverd for subclasses).\n * @return {T} Value.\n */\n LRUCache.prototype.get = function (key, opt_options) {\n var entry = this.entries_[key];\n assert(entry !== undefined, 15); // Tried to get a value for a key that does not exist in the cache\n if (entry === this.newest_) {\n return entry.value_;\n }\n else if (entry === this.oldest_) {\n this.oldest_ = /** @type {Entry} */ (this.oldest_.newer);\n this.oldest_.older = null;\n }\n else {\n entry.newer.older = entry.older;\n entry.older.newer = entry.newer;\n }\n entry.newer = null;\n entry.older = this.newest_;\n this.newest_.newer = entry;\n this.newest_ = entry;\n return entry.value_;\n };\n /**\n * Remove an entry from the cache.\n * @param {string} key The entry key.\n * @return {T} The removed entry.\n */\n LRUCache.prototype.remove = function (key) {\n var entry = this.entries_[key];\n assert(entry !== undefined, 15); // Tried to get a value for a key that does not exist in the cache\n if (entry === this.newest_) {\n this.newest_ = /** @type {Entry} */ (entry.older);\n if (this.newest_) {\n this.newest_.newer = null;\n }\n }\n else if (entry === this.oldest_) {\n this.oldest_ = /** @type {Entry} */ (entry.newer);\n if (this.oldest_) {\n this.oldest_.older = null;\n }\n }\n else {\n entry.newer.older = entry.older;\n entry.older.newer = entry.newer;\n }\n delete this.entries_[key];\n --this.count_;\n return entry.value_;\n };\n /**\n * @return {number} Count.\n */\n LRUCache.prototype.getCount = function () {\n return this.count_;\n };\n /**\n * @return {Array} Keys.\n */\n LRUCache.prototype.getKeys = function () {\n var keys = new Array(this.count_);\n var i = 0;\n var entry;\n for (entry = this.newest_; entry; entry = entry.older) {\n keys[i++] = entry.key_;\n }\n return keys;\n };\n /**\n * @return {Array} Values.\n */\n LRUCache.prototype.getValues = function () {\n var values = new Array(this.count_);\n var i = 0;\n var entry;\n for (entry = this.newest_; entry; entry = entry.older) {\n values[i++] = entry.value_;\n }\n return values;\n };\n /**\n * @return {T} Last value.\n */\n LRUCache.prototype.peekLast = function () {\n return this.oldest_.value_;\n };\n /**\n * @return {string} Last key.\n */\n LRUCache.prototype.peekLastKey = function () {\n return this.oldest_.key_;\n };\n /**\n * Get the key of the newest item in the cache. Throws if the cache is empty.\n * @return {string} The newest key.\n */\n LRUCache.prototype.peekFirstKey = function () {\n return this.newest_.key_;\n };\n /**\n * @return {T} value Value.\n */\n LRUCache.prototype.pop = function () {\n var entry = this.oldest_;\n delete this.entries_[entry.key_];\n if (entry.newer) {\n entry.newer.older = null;\n }\n this.oldest_ = /** @type {Entry} */ (entry.newer);\n if (!this.oldest_) {\n this.newest_ = null;\n }\n --this.count_;\n return entry.value_;\n };\n /**\n * @param {string} key Key.\n * @param {T} value Value.\n */\n LRUCache.prototype.replace = function (key, value) {\n this.get(key); // update `newest_`\n this.entries_[key].value_ = value;\n };\n /**\n * @param {string} key Key.\n * @param {T} value Value.\n */\n LRUCache.prototype.set = function (key, value) {\n assert(!(key in this.entries_), 16); // Tried to set a value for a key that is used already\n var entry = {\n key_: key,\n newer: null,\n older: this.newest_,\n value_: value,\n };\n if (!this.newest_) {\n this.oldest_ = entry;\n }\n else {\n this.newest_.newer = entry;\n }\n this.newest_ = entry;\n this.entries_[key] = entry;\n ++this.count_;\n };\n /**\n * Set a maximum number of entries for the cache.\n * @param {number} size Cache size.\n * @api\n */\n LRUCache.prototype.setSize = function (size) {\n this.highWaterMark = size;\n };\n return LRUCache;\n}());\nexport default LRUCache;\n//# sourceMappingURL=LRUCache.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/TileCache\n */\nimport LRUCache from './structs/LRUCache.js';\nimport { fromKey, getKey } from './tilecoord.js';\nvar TileCache = /** @class */ (function (_super) {\n __extends(TileCache, _super);\n function TileCache() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {!Object} usedTiles Used tiles.\n */\n TileCache.prototype.expireCache = function (usedTiles) {\n while (this.canExpireCache()) {\n var tile = this.peekLast();\n if (tile.getKey() in usedTiles) {\n break;\n }\n else {\n this.pop().release();\n }\n }\n };\n /**\n * Prune all tiles from the cache that don't have the same z as the newest tile.\n */\n TileCache.prototype.pruneExceptNewestZ = function () {\n if (this.getCount() === 0) {\n return;\n }\n var key = this.peekFirstKey();\n var tileCoord = fromKey(key);\n var z = tileCoord[0];\n this.forEach(function (tile) {\n if (tile.tileCoord[0] !== z) {\n this.remove(getKey(tile.tileCoord));\n tile.release();\n }\n }.bind(this));\n };\n return TileCache;\n}(LRUCache));\nexport default TileCache;\n//# sourceMappingURL=TileCache.js.map","/**\n * @module ol/structs/PriorityQueue\n */\nimport { assert } from '../asserts.js';\nimport { clear } from '../obj.js';\n/**\n * @type {number}\n */\nexport var DROP = Infinity;\n/**\n * @classdesc\n * Priority queue.\n *\n * The implementation is inspired from the Closure Library's Heap class and\n * Python's heapq module.\n *\n * See http://closure-library.googlecode.com/svn/docs/closure_goog_structs_heap.js.source.html\n * and http://hg.python.org/cpython/file/2.7/Lib/heapq.py.\n *\n * @template T\n */\nvar PriorityQueue = /** @class */ (function () {\n /**\n * @param {function(T): number} priorityFunction Priority function.\n * @param {function(T): string} keyFunction Key function.\n */\n function PriorityQueue(priorityFunction, keyFunction) {\n /**\n * @type {function(T): number}\n * @private\n */\n this.priorityFunction_ = priorityFunction;\n /**\n * @type {function(T): string}\n * @private\n */\n this.keyFunction_ = keyFunction;\n /**\n * @type {Array}\n * @private\n */\n this.elements_ = [];\n /**\n * @type {Array}\n * @private\n */\n this.priorities_ = [];\n /**\n * @type {!Object}\n * @private\n */\n this.queuedElements_ = {};\n }\n /**\n * FIXME empty description for jsdoc\n */\n PriorityQueue.prototype.clear = function () {\n this.elements_.length = 0;\n this.priorities_.length = 0;\n clear(this.queuedElements_);\n };\n /**\n * Remove and return the highest-priority element. O(log N).\n * @return {T} Element.\n */\n PriorityQueue.prototype.dequeue = function () {\n var elements = this.elements_;\n var priorities = this.priorities_;\n var element = elements[0];\n if (elements.length == 1) {\n elements.length = 0;\n priorities.length = 0;\n }\n else {\n elements[0] = elements.pop();\n priorities[0] = priorities.pop();\n this.siftUp_(0);\n }\n var elementKey = this.keyFunction_(element);\n delete this.queuedElements_[elementKey];\n return element;\n };\n /**\n * Enqueue an element. O(log N).\n * @param {T} element Element.\n * @return {boolean} The element was added to the queue.\n */\n PriorityQueue.prototype.enqueue = function (element) {\n assert(!(this.keyFunction_(element) in this.queuedElements_), 31); // Tried to enqueue an `element` that was already added to the queue\n var priority = this.priorityFunction_(element);\n if (priority != DROP) {\n this.elements_.push(element);\n this.priorities_.push(priority);\n this.queuedElements_[this.keyFunction_(element)] = true;\n this.siftDown_(0, this.elements_.length - 1);\n return true;\n }\n return false;\n };\n /**\n * @return {number} Count.\n */\n PriorityQueue.prototype.getCount = function () {\n return this.elements_.length;\n };\n /**\n * Gets the index of the left child of the node at the given index.\n * @param {number} index The index of the node to get the left child for.\n * @return {number} The index of the left child.\n * @private\n */\n PriorityQueue.prototype.getLeftChildIndex_ = function (index) {\n return index * 2 + 1;\n };\n /**\n * Gets the index of the right child of the node at the given index.\n * @param {number} index The index of the node to get the right child for.\n * @return {number} The index of the right child.\n * @private\n */\n PriorityQueue.prototype.getRightChildIndex_ = function (index) {\n return index * 2 + 2;\n };\n /**\n * Gets the index of the parent of the node at the given index.\n * @param {number} index The index of the node to get the parent for.\n * @return {number} The index of the parent.\n * @private\n */\n PriorityQueue.prototype.getParentIndex_ = function (index) {\n return (index - 1) >> 1;\n };\n /**\n * Make this a heap. O(N).\n * @private\n */\n PriorityQueue.prototype.heapify_ = function () {\n var i;\n for (i = (this.elements_.length >> 1) - 1; i >= 0; i--) {\n this.siftUp_(i);\n }\n };\n /**\n * @return {boolean} Is empty.\n */\n PriorityQueue.prototype.isEmpty = function () {\n return this.elements_.length === 0;\n };\n /**\n * @param {string} key Key.\n * @return {boolean} Is key queued.\n */\n PriorityQueue.prototype.isKeyQueued = function (key) {\n return key in this.queuedElements_;\n };\n /**\n * @param {T} element Element.\n * @return {boolean} Is queued.\n */\n PriorityQueue.prototype.isQueued = function (element) {\n return this.isKeyQueued(this.keyFunction_(element));\n };\n /**\n * @param {number} index The index of the node to move down.\n * @private\n */\n PriorityQueue.prototype.siftUp_ = function (index) {\n var elements = this.elements_;\n var priorities = this.priorities_;\n var count = elements.length;\n var element = elements[index];\n var priority = priorities[index];\n var startIndex = index;\n while (index < count >> 1) {\n var lIndex = this.getLeftChildIndex_(index);\n var rIndex = this.getRightChildIndex_(index);\n var smallerChildIndex = rIndex < count && priorities[rIndex] < priorities[lIndex]\n ? rIndex\n : lIndex;\n elements[index] = elements[smallerChildIndex];\n priorities[index] = priorities[smallerChildIndex];\n index = smallerChildIndex;\n }\n elements[index] = element;\n priorities[index] = priority;\n this.siftDown_(startIndex, index);\n };\n /**\n * @param {number} startIndex The index of the root.\n * @param {number} index The index of the node to move up.\n * @private\n */\n PriorityQueue.prototype.siftDown_ = function (startIndex, index) {\n var elements = this.elements_;\n var priorities = this.priorities_;\n var element = elements[index];\n var priority = priorities[index];\n while (index > startIndex) {\n var parentIndex = this.getParentIndex_(index);\n if (priorities[parentIndex] > priority) {\n elements[index] = elements[parentIndex];\n priorities[index] = priorities[parentIndex];\n index = parentIndex;\n }\n else {\n break;\n }\n }\n elements[index] = element;\n priorities[index] = priority;\n };\n /**\n * FIXME empty description for jsdoc\n */\n PriorityQueue.prototype.reprioritize = function () {\n var priorityFunction = this.priorityFunction_;\n var elements = this.elements_;\n var priorities = this.priorities_;\n var index = 0;\n var n = elements.length;\n var element, i, priority;\n for (i = 0; i < n; ++i) {\n element = elements[i];\n priority = priorityFunction(element);\n if (priority == DROP) {\n delete this.queuedElements_[this.keyFunction_(element)];\n }\n else {\n priorities[index] = priority;\n elements[index++] = element;\n }\n }\n elements.length = index;\n priorities.length = index;\n this.heapify_();\n };\n return PriorityQueue;\n}());\nexport default PriorityQueue;\n//# sourceMappingURL=PriorityQueue.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/TileQueue\n */\nimport EventType from './events/EventType.js';\nimport PriorityQueue, { DROP } from './structs/PriorityQueue.js';\nimport TileState from './TileState.js';\n/**\n * @typedef {function(import(\"./Tile.js\").default, string, import(\"./coordinate.js\").Coordinate, number): number} PriorityFunction\n */\nvar TileQueue = /** @class */ (function (_super) {\n __extends(TileQueue, _super);\n /**\n * @param {PriorityFunction} tilePriorityFunction Tile priority function.\n * @param {function(): ?} tileChangeCallback Function called on each tile change event.\n */\n function TileQueue(tilePriorityFunction, tileChangeCallback) {\n var _this = _super.call(this, \n /**\n * @param {Array} element Element.\n * @return {number} Priority.\n */\n function (element) {\n return tilePriorityFunction.apply(null, element);\n }, \n /**\n * @param {Array} element Element.\n * @return {string} Key.\n */\n function (element) {\n return /** @type {import(\"./Tile.js\").default} */ (element[0]).getKey();\n }) || this;\n /** @private */\n _this.boundHandleTileChange_ = _this.handleTileChange.bind(_this);\n /**\n * @private\n * @type {function(): ?}\n */\n _this.tileChangeCallback_ = tileChangeCallback;\n /**\n * @private\n * @type {number}\n */\n _this.tilesLoading_ = 0;\n /**\n * @private\n * @type {!Object}\n */\n _this.tilesLoadingKeys_ = {};\n return _this;\n }\n /**\n * @param {Array} element Element.\n * @return {boolean} The element was added to the queue.\n */\n TileQueue.prototype.enqueue = function (element) {\n var added = _super.prototype.enqueue.call(this, element);\n if (added) {\n var tile = element[0];\n tile.addEventListener(EventType.CHANGE, this.boundHandleTileChange_);\n }\n return added;\n };\n /**\n * @return {number} Number of tiles loading.\n */\n TileQueue.prototype.getTilesLoading = function () {\n return this.tilesLoading_;\n };\n /**\n * @param {import(\"./events/Event.js\").default} event Event.\n * @protected\n */\n TileQueue.prototype.handleTileChange = function (event) {\n var tile = /** @type {import(\"./Tile.js\").default} */ (event.target);\n var state = tile.getState();\n if ((tile.hifi && state === TileState.LOADED) ||\n state === TileState.ERROR ||\n state === TileState.EMPTY) {\n tile.removeEventListener(EventType.CHANGE, this.boundHandleTileChange_);\n var tileKey = tile.getKey();\n if (tileKey in this.tilesLoadingKeys_) {\n delete this.tilesLoadingKeys_[tileKey];\n --this.tilesLoading_;\n }\n this.tileChangeCallback_();\n }\n };\n /**\n * @param {number} maxTotalLoading Maximum number tiles to load simultaneously.\n * @param {number} maxNewLoads Maximum number of new tiles to load.\n */\n TileQueue.prototype.loadMoreTiles = function (maxTotalLoading, maxNewLoads) {\n var newLoads = 0;\n var state, tile, tileKey;\n while (this.tilesLoading_ < maxTotalLoading &&\n newLoads < maxNewLoads &&\n this.getCount() > 0) {\n tile = /** @type {import(\"./Tile.js\").default} */ (this.dequeue()[0]);\n tileKey = tile.getKey();\n state = tile.getState();\n if (state === TileState.IDLE && !(tileKey in this.tilesLoadingKeys_)) {\n this.tilesLoadingKeys_[tileKey] = true;\n ++this.tilesLoading_;\n ++newLoads;\n tile.load();\n }\n }\n };\n return TileQueue;\n}(PriorityQueue));\nexport default TileQueue;\n/**\n * @param {import('./PluggableMap.js').FrameState} frameState Frame state.\n * @param {import(\"./Tile.js\").default} tile Tile.\n * @param {string} tileSourceKey Tile source key.\n * @param {import(\"./coordinate.js\").Coordinate} tileCenter Tile center.\n * @param {number} tileResolution Tile resolution.\n * @return {number} Tile priority.\n */\nexport function getTilePriority(frameState, tile, tileSourceKey, tileCenter, tileResolution) {\n // Filter out tiles at higher zoom levels than the current zoom level, or that\n // are outside the visible extent.\n if (!frameState || !(tileSourceKey in frameState.wantedTiles)) {\n return DROP;\n }\n if (!frameState.wantedTiles[tileSourceKey][tile.getKey()]) {\n return DROP;\n }\n // Prioritize the highest zoom level tiles closest to the focus.\n // Tiles at higher zoom levels are prioritized using Math.log(tileResolution).\n // Within a zoom level, tiles are prioritized by the distance in pixels between\n // the center of the tile and the center of the viewport. The factor of 65536\n // means that the prioritization should behave as desired for tiles up to\n // 65536 * Math.log(2) = 45426 pixels from the focus.\n var center = frameState.viewState.center;\n var deltaX = tileCenter[0] - center[0];\n var deltaY = tileCenter[1] - center[1];\n return (65536 * Math.log(tileResolution) +\n Math.sqrt(deltaX * deltaX + deltaY * deltaY) / tileResolution);\n}\n//# sourceMappingURL=TileQueue.js.map","/**\n * @module ol/TileRange\n */\n/**\n * A representation of a contiguous block of tiles. A tile range is specified\n * by its min/max tile coordinates and is inclusive of coordinates.\n */\nvar TileRange = /** @class */ (function () {\n /**\n * @param {number} minX Minimum X.\n * @param {number} maxX Maximum X.\n * @param {number} minY Minimum Y.\n * @param {number} maxY Maximum Y.\n */\n function TileRange(minX, maxX, minY, maxY) {\n /**\n * @type {number}\n */\n this.minX = minX;\n /**\n * @type {number}\n */\n this.maxX = maxX;\n /**\n * @type {number}\n */\n this.minY = minY;\n /**\n * @type {number}\n */\n this.maxY = maxY;\n }\n /**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @return {boolean} Contains tile coordinate.\n */\n TileRange.prototype.contains = function (tileCoord) {\n return this.containsXY(tileCoord[1], tileCoord[2]);\n };\n /**\n * @param {TileRange} tileRange Tile range.\n * @return {boolean} Contains.\n */\n TileRange.prototype.containsTileRange = function (tileRange) {\n return (this.minX <= tileRange.minX &&\n tileRange.maxX <= this.maxX &&\n this.minY <= tileRange.minY &&\n tileRange.maxY <= this.maxY);\n };\n /**\n * @param {number} x Tile coordinate x.\n * @param {number} y Tile coordinate y.\n * @return {boolean} Contains coordinate.\n */\n TileRange.prototype.containsXY = function (x, y) {\n return this.minX <= x && x <= this.maxX && this.minY <= y && y <= this.maxY;\n };\n /**\n * @param {TileRange} tileRange Tile range.\n * @return {boolean} Equals.\n */\n TileRange.prototype.equals = function (tileRange) {\n return (this.minX == tileRange.minX &&\n this.minY == tileRange.minY &&\n this.maxX == tileRange.maxX &&\n this.maxY == tileRange.maxY);\n };\n /**\n * @param {TileRange} tileRange Tile range.\n */\n TileRange.prototype.extend = function (tileRange) {\n if (tileRange.minX < this.minX) {\n this.minX = tileRange.minX;\n }\n if (tileRange.maxX > this.maxX) {\n this.maxX = tileRange.maxX;\n }\n if (tileRange.minY < this.minY) {\n this.minY = tileRange.minY;\n }\n if (tileRange.maxY > this.maxY) {\n this.maxY = tileRange.maxY;\n }\n };\n /**\n * @return {number} Height.\n */\n TileRange.prototype.getHeight = function () {\n return this.maxY - this.minY + 1;\n };\n /**\n * @return {import(\"./size.js\").Size} Size.\n */\n TileRange.prototype.getSize = function () {\n return [this.getWidth(), this.getHeight()];\n };\n /**\n * @return {number} Width.\n */\n TileRange.prototype.getWidth = function () {\n return this.maxX - this.minX + 1;\n };\n /**\n * @param {TileRange} tileRange Tile range.\n * @return {boolean} Intersects.\n */\n TileRange.prototype.intersects = function (tileRange) {\n return (this.minX <= tileRange.maxX &&\n this.maxX >= tileRange.minX &&\n this.minY <= tileRange.maxY &&\n this.maxY >= tileRange.minY);\n };\n return TileRange;\n}());\n/**\n * @param {number} minX Minimum X.\n * @param {number} maxX Maximum X.\n * @param {number} minY Minimum Y.\n * @param {number} maxY Maximum Y.\n * @param {TileRange=} tileRange TileRange.\n * @return {TileRange} Tile range.\n */\nexport function createOrUpdate(minX, maxX, minY, maxY, tileRange) {\n if (tileRange !== undefined) {\n tileRange.minX = minX;\n tileRange.maxX = maxX;\n tileRange.minY = minY;\n tileRange.maxY = maxY;\n return tileRange;\n }\n else {\n return new TileRange(minX, maxX, minY, maxY);\n }\n}\nexport default TileRange;\n//# sourceMappingURL=TileRange.js.map","/**\n * @module ol/TileState\n */\n/**\n * @enum {number}\n */\nexport default {\n IDLE: 0,\n LOADING: 1,\n LOADED: 2,\n /**\n * Indicates that tile loading failed\n * @type {number}\n */\n ERROR: 3,\n EMPTY: 4,\n};\n//# sourceMappingURL=TileState.js.map","/**\n * @module ol/ViewProperty\n */\n/**\n * @enum {string}\n */\nexport default {\n CENTER: 'center',\n RESOLUTION: 'resolution',\n ROTATION: 'rotation',\n};\n//# sourceMappingURL=ViewProperty.js.map","/**\n * @module ol/centerconstraint\n */\nimport { clamp } from './math.js';\n/**\n * @typedef {function((import(\"./coordinate.js\").Coordinate|undefined), number, import(\"./size.js\").Size, boolean=): (import(\"./coordinate.js\").Coordinate|undefined)} Type\n */\n/**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {boolean} onlyCenter If true, the constraint will only apply to the view center.\n * @param {boolean} smooth If true, the view will be able to go slightly out of the given extent\n * (only during interaction and animation).\n * @return {Type} The constraint.\n */\nexport function createExtent(extent, onlyCenter, smooth) {\n return (\n /**\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center Center.\n * @param {number} resolution Resolution.\n * @param {import(\"./size.js\").Size} size Viewport size; unused if `onlyCenter` was specified.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center.\n */\n function (center, resolution, size, opt_isMoving) {\n if (center) {\n var viewWidth = onlyCenter ? 0 : size[0] * resolution;\n var viewHeight = onlyCenter ? 0 : size[1] * resolution;\n var minX = extent[0] + viewWidth / 2;\n var maxX = extent[2] - viewWidth / 2;\n var minY = extent[1] + viewHeight / 2;\n var maxY = extent[3] - viewHeight / 2;\n // note: when zooming out of bounds, min and max values for x and y may\n // end up inverted (min > max); this has to be accounted for\n if (minX > maxX) {\n minX = (maxX + minX) / 2;\n maxX = minX;\n }\n if (minY > maxY) {\n minY = (maxY + minY) / 2;\n maxY = minY;\n }\n var x = clamp(center[0], minX, maxX);\n var y = clamp(center[1], minY, maxY);\n var ratio = 30 * resolution;\n // during an interaction, allow some overscroll\n if (opt_isMoving && smooth) {\n x +=\n -ratio * Math.log(1 + Math.max(0, minX - center[0]) / ratio) +\n ratio * Math.log(1 + Math.max(0, center[0] - maxX) / ratio);\n y +=\n -ratio * Math.log(1 + Math.max(0, minY - center[1]) / ratio) +\n ratio * Math.log(1 + Math.max(0, center[1] - maxY) / ratio);\n }\n return [x, y];\n }\n else {\n return undefined;\n }\n });\n}\n/**\n * @param {import(\"./coordinate.js\").Coordinate=} center Center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center.\n */\nexport function none(center) {\n return center;\n}\n//# sourceMappingURL=centerconstraint.js.map","/**\n * @module ol/resolutionconstraint\n */\nimport { clamp } from './math.js';\nimport { getHeight, getWidth } from './extent.js';\nimport { linearFindNearest } from './array.js';\n/**\n * @typedef {function((number|undefined), number, import(\"./size.js\").Size, boolean=): (number|undefined)} Type\n */\n/**\n * Returns a modified resolution taking into account the viewport size and maximum\n * allowed extent.\n * @param {number} resolution Resolution\n * @param {import(\"./extent.js\").Extent=} maxExtent Maximum allowed extent.\n * @param {import(\"./size.js\").Size} viewportSize Viewport size.\n * @param {boolean} showFullExtent Whether to show the full extent.\n * @return {number} Capped resolution.\n */\nfunction getViewportClampedResolution(resolution, maxExtent, viewportSize, showFullExtent) {\n var xResolution = getWidth(maxExtent) / viewportSize[0];\n var yResolution = getHeight(maxExtent) / viewportSize[1];\n if (showFullExtent) {\n return Math.min(resolution, Math.max(xResolution, yResolution));\n }\n return Math.min(resolution, Math.min(xResolution, yResolution));\n}\n/**\n * Returns a modified resolution to be between maxResolution and minResolution while\n * still allowing the value to be slightly out of bounds.\n * Note: the computation is based on the logarithm function (ln):\n * - at 1, ln(x) is 0\n * - above 1, ln(x) keeps increasing but at a much slower pace than x\n * The final result is clamped to prevent getting too far away from bounds.\n * @param {number} resolution Resolution.\n * @param {number} maxResolution Max resolution.\n * @param {number} minResolution Min resolution.\n * @return {number} Smoothed resolution.\n */\nfunction getSmoothClampedResolution(resolution, maxResolution, minResolution) {\n var result = Math.min(resolution, maxResolution);\n var ratio = 50;\n result *=\n Math.log(1 + ratio * Math.max(0, resolution / maxResolution - 1)) / ratio +\n 1;\n if (minResolution) {\n result = Math.max(result, minResolution);\n result /=\n Math.log(1 + ratio * Math.max(0, minResolution / resolution - 1)) /\n ratio +\n 1;\n }\n return clamp(result, minResolution / 2, maxResolution * 2);\n}\n/**\n * @param {Array} resolutions Resolutions.\n * @param {boolean=} opt_smooth If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent=} opt_maxExtent Maximum allowed extent.\n * @param {boolean=} opt_showFullExtent If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createSnapToResolutions(resolutions, opt_smooth, opt_maxExtent, opt_showFullExtent) {\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, opt_isMoving) {\n if (resolution !== undefined) {\n var maxResolution = resolutions[0];\n var minResolution = resolutions[resolutions.length - 1];\n var cappedMaxRes = opt_maxExtent\n ? getViewportClampedResolution(maxResolution, opt_maxExtent, size, opt_showFullExtent)\n : maxResolution;\n // during interacting or animating, allow intermediary values\n if (opt_isMoving) {\n var smooth = opt_smooth !== undefined ? opt_smooth : true;\n if (!smooth) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(resolution, cappedMaxRes, minResolution);\n }\n var capped = Math.min(cappedMaxRes, resolution);\n var z = Math.floor(linearFindNearest(resolutions, capped, direction));\n if (resolutions[z] > cappedMaxRes && z < resolutions.length - 1) {\n return resolutions[z + 1];\n }\n return resolutions[z];\n }\n else {\n return undefined;\n }\n });\n}\n/**\n * @param {number} power Power.\n * @param {number} maxResolution Maximum resolution.\n * @param {number=} opt_minResolution Minimum resolution.\n * @param {boolean=} opt_smooth If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent=} opt_maxExtent Maximum allowed extent.\n * @param {boolean=} opt_showFullExtent If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createSnapToPower(power, maxResolution, opt_minResolution, opt_smooth, opt_maxExtent, opt_showFullExtent) {\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, opt_isMoving) {\n if (resolution !== undefined) {\n var cappedMaxRes = opt_maxExtent\n ? getViewportClampedResolution(maxResolution, opt_maxExtent, size, opt_showFullExtent)\n : maxResolution;\n var minResolution = opt_minResolution !== undefined ? opt_minResolution : 0;\n // during interacting or animating, allow intermediary values\n if (opt_isMoving) {\n var smooth = opt_smooth !== undefined ? opt_smooth : true;\n if (!smooth) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(resolution, cappedMaxRes, minResolution);\n }\n var tolerance = 1e-9;\n var minZoomLevel = Math.ceil(Math.log(maxResolution / cappedMaxRes) / Math.log(power) - tolerance);\n var offset = -direction * (0.5 - tolerance) + 0.5;\n var capped = Math.min(cappedMaxRes, resolution);\n var cappedZoomLevel = Math.floor(Math.log(maxResolution / capped) / Math.log(power) + offset);\n var zoomLevel = Math.max(minZoomLevel, cappedZoomLevel);\n var newResolution = maxResolution / Math.pow(power, zoomLevel);\n return clamp(newResolution, minResolution, cappedMaxRes);\n }\n else {\n return undefined;\n }\n });\n}\n/**\n * @param {number} maxResolution Max resolution.\n * @param {number} minResolution Min resolution.\n * @param {boolean=} opt_smooth If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent=} opt_maxExtent Maximum allowed extent.\n * @param {boolean=} opt_showFullExtent If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createMinMaxResolution(maxResolution, minResolution, opt_smooth, opt_maxExtent, opt_showFullExtent) {\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean=} opt_isMoving True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, opt_isMoving) {\n if (resolution !== undefined) {\n var cappedMaxRes = opt_maxExtent\n ? getViewportClampedResolution(maxResolution, opt_maxExtent, size, opt_showFullExtent)\n : maxResolution;\n var smooth = opt_smooth !== undefined ? opt_smooth : true;\n if (!smooth || !opt_isMoving) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(resolution, cappedMaxRes, minResolution);\n }\n else {\n return undefined;\n }\n });\n}\n//# sourceMappingURL=resolutionconstraint.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/View\n */\nimport BaseObject from './Object.js';\nimport GeometryType from './geom/GeometryType.js';\nimport Units from './proj/Units.js';\nimport ViewHint from './ViewHint.js';\nimport ViewProperty from './ViewProperty.js';\nimport { DEFAULT_TILE_SIZE } from './tilegrid/common.js';\nimport { METERS_PER_UNIT, createProjection, fromUserCoordinate, fromUserExtent, getUserProjection, toUserCoordinate, toUserExtent, } from './proj.js';\nimport { VOID } from './functions.js';\nimport { add as addCoordinate, equals as coordinatesEqual, rotate as rotateCoordinate, } from './coordinate.js';\nimport { assert } from './asserts.js';\nimport { assign } from './obj.js';\nimport { none as centerNone, createExtent } from './centerconstraint.js';\nimport { clamp, modulo } from './math.js';\nimport { createMinMaxResolution } from './resolutionconstraint.js';\nimport { createSnapToN, createSnapToZero, disable, none as rotationNone, } from './rotationconstraint.js';\nimport { createSnapToPower, createSnapToResolutions, } from './resolutionconstraint.js';\nimport { easeOut } from './easing.js';\nimport { equals } from './coordinate.js';\nimport { getCenter, getForViewAndSize, getHeight, getWidth, isEmpty, } from './extent.js';\nimport { inAndOut } from './easing.js';\nimport { linearFindNearest } from './array.js';\nimport { fromExtent as polygonFromExtent } from './geom/Polygon.js';\n/**\n * An animation configuration\n *\n * @typedef {Object} Animation\n * @property {import(\"./coordinate.js\").Coordinate} [sourceCenter]\n * @property {import(\"./coordinate.js\").Coordinate} [targetCenter]\n * @property {number} [sourceResolution]\n * @property {number} [targetResolution]\n * @property {number} [sourceRotation]\n * @property {number} [targetRotation]\n * @property {import(\"./coordinate.js\").Coordinate} [anchor]\n * @property {number} start\n * @property {number} duration\n * @property {boolean} complete\n * @property {function(number):number} easing\n * @property {function(boolean):void} callback\n */\n/**\n * @typedef {Object} Constraints\n * @property {import(\"./centerconstraint.js\").Type} center\n * @property {import(\"./resolutionconstraint.js\").Type} resolution\n * @property {import(\"./rotationconstraint.js\").Type} rotation\n */\n/**\n * @typedef {Object} FitOptions\n * @property {import(\"./size.js\").Size} [size] The size in pixels of the box to fit\n * the extent into. Default is the current size of the first map in the DOM that\n * uses this view, or `[100, 100]` if no such map is found.\n * @property {!Array} [padding=[0, 0, 0, 0]] Padding (in pixels) to be\n * cleared inside the view. Values in the array are top, right, bottom and left\n * padding.\n * @property {boolean} [nearest=false] If the view `constrainResolution` option is `true`,\n * get the nearest extent instead of the closest that actually fits the view.\n * @property {number} [minResolution=0] Minimum resolution that we zoom to.\n * @property {number} [maxZoom] Maximum zoom level that we zoom to. If\n * `minResolution` is given, this property is ignored.\n * @property {number} [duration] The duration of the animation in milliseconds.\n * By default, there is no animation to the target extent.\n * @property {function(number):number} [easing] The easing function used during\n * the animation (defaults to {@link module:ol/easing~inAndOut}).\n * The function will be called for each frame with a number representing a\n * fraction of the animation's duration. The function should return a number\n * between 0 and 1 representing the progress toward the destination state.\n * @property {function(boolean):void} [callback] Function called when the view is in\n * its final position. The callback will be called with `true` if the animation\n * series completed on its own or `false` if it was cancelled.\n */\n/**\n * @typedef {Object} ViewOptions\n * @property {import(\"./coordinate.js\").Coordinate} [center] The initial center for\n * the view. If a user projection is not set, the coordinate system for the center is\n * specified with the `projection` option. Layer sources will not be fetched if this\n * is not set, but the center can be set later with {@link #setCenter}.\n * @property {boolean|number} [constrainRotation=true] Rotation constraint.\n * `false` means no constraint. `true` means no constraint, but snap to zero\n * near zero. A number constrains the rotation to that number of values. For\n * example, `4` will constrain the rotation to 0, 90, 180, and 270 degrees.\n * @property {boolean} [enableRotation=true] Enable rotation.\n * If `false`, a rotation constraint that always sets the rotation to zero is\n * used. The `constrainRotation` option has no effect if `enableRotation` is\n * `false`.\n * @property {import(\"./extent.js\").Extent} [extent] The extent that constrains the\n * view, in other words, nothing outside of this extent can be visible on the map.\n * @property {boolean} [constrainOnlyCenter=false] If true, the extent\n * constraint will only apply to the view center and not the whole extent.\n * @property {boolean} [smoothExtentConstraint=true] If true, the extent\n * constraint will be applied smoothly, i.e. allow the view to go slightly outside\n * of the given `extent`.\n * @property {number} [maxResolution] The maximum resolution used to determine\n * the resolution constraint. It is used together with `minResolution` (or\n * `maxZoom`) and `zoomFactor`. If unspecified it is calculated in such a way\n * that the projection's validity extent fits in a 256x256 px tile. If the\n * projection is Spherical Mercator (the default) then `maxResolution` defaults\n * to `40075016.68557849 / 256 = 156543.03392804097`.\n * @property {number} [minResolution] The minimum resolution used to determine\n * the resolution constraint. It is used together with `maxResolution` (or\n * `minZoom`) and `zoomFactor`. If unspecified it is calculated assuming 29\n * zoom levels (with a factor of 2). If the projection is Spherical Mercator\n * (the default) then `minResolution` defaults to\n * `40075016.68557849 / 256 / Math.pow(2, 28) = 0.0005831682455839253`.\n * @property {number} [maxZoom=28] The maximum zoom level used to determine the\n * resolution constraint. It is used together with `minZoom` (or\n * `maxResolution`) and `zoomFactor`. Note that if `minResolution` is also\n * provided, it is given precedence over `maxZoom`.\n * @property {number} [minZoom=0] The minimum zoom level used to determine the\n * resolution constraint. It is used together with `maxZoom` (or\n * `minResolution`) and `zoomFactor`. Note that if `maxResolution` is also\n * provided, it is given precedence over `minZoom`.\n * @property {boolean} [multiWorld=false] If `false` the view is constrained so\n * only one world is visible, and you cannot pan off the edge. If `true` the map\n * may show multiple worlds at low zoom levels. Only used if the `projection` is\n * global. Note that if `extent` is also provided it is given precedence.\n * @property {boolean} [constrainResolution=false] If true, the view will always\n * animate to the closest zoom level after an interaction; false means\n * intermediary zoom levels are allowed.\n * @property {boolean} [smoothResolutionConstraint=true] If true, the resolution\n * min/max values will be applied smoothly, i. e. allow the view to exceed slightly\n * the given resolution or zoom bounds.\n * @property {boolean} [showFullExtent=false] Allow the view to be zoomed out to\n * show the full configured extent. By default, when a view is configured with an\n * extent, users will not be able to zoom out so the viewport exceeds the extent in\n * either dimension. This means the full extent may not be visible if the viewport\n * is taller or wider than the aspect ratio of the configured extent. If\n * showFullExtent is true, the user will be able to zoom out so that the viewport\n * exceeds the height or width of the configured extent, but not both, allowing the\n * full extent to be shown.\n * @property {import(\"./proj.js\").ProjectionLike} [projection='EPSG:3857'] The\n * projection. The default is Spherical Mercator.\n * @property {number} [resolution] The initial resolution for the view. The\n * units are `projection` units per pixel (e.g. meters per pixel). An\n * alternative to setting this is to set `zoom`. Layer sources will not be\n * fetched if neither this nor `zoom` are defined, but they can be set later\n * with {@link #setZoom} or {@link #setResolution}.\n * @property {Array} [resolutions] Resolutions to determine the\n * resolution constraint. If set the `maxResolution`, `minResolution`,\n * `minZoom`, `maxZoom`, and `zoomFactor` options are ignored.\n * @property {number} [rotation=0] The initial rotation for the view in radians\n * (positive rotation clockwise, 0 means North).\n * @property {number} [zoom] Only used if `resolution` is not defined. Zoom\n * level used to calculate the initial resolution for the view.\n * @property {number} [zoomFactor=2] The zoom factor used to compute the\n * corresponding resolution.\n */\n/**\n * @typedef {Object} AnimationOptions\n * @property {import(\"./coordinate.js\").Coordinate} [center] The center of the view at the end of\n * the animation.\n * @property {number} [zoom] The zoom level of the view at the end of the\n * animation. This takes precedence over `resolution`.\n * @property {number} [resolution] The resolution of the view at the end\n * of the animation. If `zoom` is also provided, this option will be ignored.\n * @property {number} [rotation] The rotation of the view at the end of\n * the animation.\n * @property {import(\"./coordinate.js\").Coordinate} [anchor] Optional anchor to remain fixed\n * during a rotation or resolution animation.\n * @property {number} [duration=1000] The duration of the animation in milliseconds.\n * @property {function(number):number} [easing] The easing function used\n * during the animation (defaults to {@link module:ol/easing~inAndOut}).\n * The function will be called for each frame with a number representing a\n * fraction of the animation's duration. The function should return a number\n * between 0 and 1 representing the progress toward the destination state.\n */\n/**\n * @typedef {Object} State\n * @property {import(\"./coordinate.js\").Coordinate} center\n * @property {import(\"./proj/Projection.js\").default} projection\n * @property {number} resolution\n * @property {number} rotation\n * @property {number} zoom\n */\n/**\n * Default min zoom level for the map view.\n * @type {number}\n */\nvar DEFAULT_MIN_ZOOM = 0;\n/**\n * @classdesc\n * A View object represents a simple 2D view of the map.\n *\n * This is the object to act upon to change the center, resolution,\n * and rotation of the map.\n *\n * A View has a `projection`. The projection determines the\n * coordinate system of the center, and its units determine the units of the\n * resolution (projection units per pixel). The default projection is\n * Spherical Mercator (EPSG:3857).\n *\n * ### The view states\n *\n * A View is determined by three states: `center`, `resolution`,\n * and `rotation`. Each state has a corresponding getter and setter, e.g.\n * `getCenter` and `setCenter` for the `center` state.\n *\n * The `zoom` state is actually not saved on the view: all computations\n * internally use the `resolution` state. Still, the `setZoom` and `getZoom`\n * methods are available, as well as `getResolutionForZoom` and\n * `getZoomForResolution` to switch from one system to the other.\n *\n * ### The constraints\n *\n * `setCenter`, `setResolution` and `setRotation` can be used to change the\n * states of the view, but any constraint defined in the constructor will\n * be applied along the way.\n *\n * A View object can have a *resolution constraint*, a *rotation constraint*\n * and a *center constraint*.\n *\n * The *resolution constraint* typically restricts min/max values and\n * snaps to specific resolutions. It is determined by the following\n * options: `resolutions`, `maxResolution`, `maxZoom` and `zoomFactor`.\n * If `resolutions` is set, the other three options are ignored. See\n * documentation for each option for more information. By default, the view\n * only has a min/max restriction and allow intermediary zoom levels when\n * pinch-zooming for example.\n *\n * The *rotation constraint* snaps to specific angles. It is determined\n * by the following options: `enableRotation` and `constrainRotation`.\n * By default rotation is allowed and its value is snapped to zero when approaching the\n * horizontal.\n *\n * The *center constraint* is determined by the `extent` option. By\n * default the view center is not constrained at all.\n *\n * ### Changing the view state\n *\n * It is important to note that `setZoom`, `setResolution`, `setCenter` and\n * `setRotation` are subject to the above mentioned constraints. As such, it\n * may sometimes not be possible to know in advance the resulting state of the\n * View. For example, calling `setResolution(10)` does not guarantee that\n * `getResolution()` will return `10`.\n *\n * A consequence of this is that, when applying a delta on the view state, one\n * should use `adjustCenter`, `adjustRotation`, `adjustZoom` and `adjustResolution`\n * rather than the corresponding setters. This will let view do its internal\n * computations. Besides, the `adjust*` methods also take an `opt_anchor`\n * argument which allows specifying an origin for the transformation.\n *\n * ### Interacting with the view\n *\n * View constraints are usually only applied when the view is *at rest*, meaning that\n * no interaction or animation is ongoing. As such, if the user puts the view in a\n * state that is not equivalent to a constrained one (e.g. rotating the view when\n * the snap angle is 0), an animation will be triggered at the interaction end to\n * put back the view to a stable state;\n *\n * @api\n */\nvar View = /** @class */ (function (_super) {\n __extends(View, _super);\n /**\n * @param {ViewOptions=} opt_options View options.\n */\n function View(opt_options) {\n var _this = _super.call(this) || this;\n var options = assign({}, opt_options);\n /**\n * @private\n * @type {Array}\n */\n _this.hints_ = [0, 0];\n /**\n * @private\n * @type {Array>}\n */\n _this.animations_ = [];\n /**\n * @private\n * @type {number|undefined}\n */\n _this.updateAnimationKey_;\n /**\n * @private\n * @const\n * @type {import(\"./proj/Projection.js\").default}\n */\n _this.projection_ = createProjection(options.projection, 'EPSG:3857');\n /**\n * @private\n * @type {import(\"./size.js\").Size}\n */\n _this.viewportSize_ = [100, 100];\n /**\n * @private\n * @type {import(\"./coordinate.js\").Coordinate|undefined}\n */\n _this.targetCenter_ = null;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.targetResolution_;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.targetRotation_;\n /**\n * @private\n * @type {import(\"./coordinate.js\").Coordinate|undefined}\n */\n _this.cancelAnchor_ = undefined;\n if (options.center) {\n options.center = fromUserCoordinate(options.center, _this.projection_);\n }\n if (options.extent) {\n options.extent = fromUserExtent(options.extent, _this.projection_);\n }\n _this.applyOptions_(options);\n return _this;\n }\n /**\n * Set up the view with the given options.\n * @param {ViewOptions} options View options.\n */\n View.prototype.applyOptions_ = function (options) {\n /**\n * @type {Object}\n */\n var properties = {};\n var resolutionConstraintInfo = createResolutionConstraint(options);\n /**\n * @private\n * @type {number}\n */\n this.maxResolution_ = resolutionConstraintInfo.maxResolution;\n /**\n * @private\n * @type {number}\n */\n this.minResolution_ = resolutionConstraintInfo.minResolution;\n /**\n * @private\n * @type {number}\n */\n this.zoomFactor_ = resolutionConstraintInfo.zoomFactor;\n /**\n * @private\n * @type {Array|undefined}\n */\n this.resolutions_ = options.resolutions;\n /**\n * @private\n * @type {number}\n */\n this.minZoom_ = resolutionConstraintInfo.minZoom;\n var centerConstraint = createCenterConstraint(options);\n var resolutionConstraint = resolutionConstraintInfo.constraint;\n var rotationConstraint = createRotationConstraint(options);\n /**\n * @private\n * @type {Constraints}\n */\n this.constraints_ = {\n center: centerConstraint,\n resolution: resolutionConstraint,\n rotation: rotationConstraint,\n };\n this.setRotation(options.rotation !== undefined ? options.rotation : 0);\n this.setCenterInternal(options.center !== undefined ? options.center : null);\n if (options.resolution !== undefined) {\n this.setResolution(options.resolution);\n }\n else if (options.zoom !== undefined) {\n this.setZoom(options.zoom);\n }\n this.setProperties(properties);\n /**\n * @private\n * @type {ViewOptions}\n */\n this.options_ = options;\n };\n /**\n * Get an updated version of the view options used to construct the view. The\n * current resolution (or zoom), center, and rotation are applied to any stored\n * options. The provided options can be used to apply new min/max zoom or\n * resolution limits.\n * @param {ViewOptions} newOptions New options to be applied.\n * @return {ViewOptions} New options updated with the current view state.\n */\n View.prototype.getUpdatedOptions_ = function (newOptions) {\n var options = assign({}, this.options_);\n // preserve resolution (or zoom)\n if (options.resolution !== undefined) {\n options.resolution = this.getResolution();\n }\n else {\n options.zoom = this.getZoom();\n }\n // preserve center\n options.center = this.getCenterInternal();\n // preserve rotation\n options.rotation = this.getRotation();\n return assign({}, options, newOptions);\n };\n /**\n * Animate the view. The view's center, zoom (or resolution), and rotation\n * can be animated for smooth transitions between view states. For example,\n * to animate the view to a new zoom level:\n *\n * view.animate({zoom: view.getZoom() + 1});\n *\n * By default, the animation lasts one second and uses in-and-out easing. You\n * can customize this behavior by including `duration` (in milliseconds) and\n * `easing` options (see {@link module:ol/easing}).\n *\n * To chain together multiple animations, call the method with multiple\n * animation objects. For example, to first zoom and then pan:\n *\n * view.animate({zoom: 10}, {center: [0, 0]});\n *\n * If you provide a function as the last argument to the animate method, it\n * will get called at the end of an animation series. The callback will be\n * called with `true` if the animation series completed on its own or `false`\n * if it was cancelled.\n *\n * Animations are cancelled by user interactions (e.g. dragging the map) or by\n * calling `view.setCenter()`, `view.setResolution()`, or `view.setRotation()`\n * (or another method that calls one of these).\n *\n * @param {...(AnimationOptions|function(boolean): void)} var_args Animation\n * options. Multiple animations can be run in series by passing multiple\n * options objects. To run multiple animations in parallel, call the method\n * multiple times. An optional callback can be provided as a final\n * argument. The callback will be called with a boolean indicating whether\n * the animation completed without being cancelled.\n * @api\n */\n View.prototype.animate = function (var_args) {\n if (this.isDef() && !this.getAnimating()) {\n this.resolveConstraints(0);\n }\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; ++i) {\n var options = arguments[i];\n if (options.center) {\n options = assign({}, options);\n options.center = fromUserCoordinate(options.center, this.getProjection());\n }\n if (options.anchor) {\n options = assign({}, options);\n options.anchor = fromUserCoordinate(options.anchor, this.getProjection());\n }\n args[i] = options;\n }\n this.animateInternal.apply(this, args);\n };\n /**\n * @param {...(AnimationOptions|function(boolean): void)} var_args Animation options.\n */\n View.prototype.animateInternal = function (var_args) {\n var animationCount = arguments.length;\n var callback;\n if (animationCount > 1 &&\n typeof arguments[animationCount - 1] === 'function') {\n callback = arguments[animationCount - 1];\n --animationCount;\n }\n if (!this.isDef()) {\n // if view properties are not yet set, shortcut to the final state\n var state = arguments[animationCount - 1];\n if (state.center) {\n this.setCenterInternal(state.center);\n }\n if (state.zoom !== undefined) {\n this.setZoom(state.zoom);\n }\n if (state.rotation !== undefined) {\n this.setRotation(state.rotation);\n }\n if (callback) {\n animationCallback(callback, true);\n }\n return;\n }\n var start = Date.now();\n var center = this.targetCenter_.slice();\n var resolution = this.targetResolution_;\n var rotation = this.targetRotation_;\n var series = [];\n for (var i = 0; i < animationCount; ++i) {\n var options = /** @type {AnimationOptions} */ (arguments[i]);\n var animation = {\n start: start,\n complete: false,\n anchor: options.anchor,\n duration: options.duration !== undefined ? options.duration : 1000,\n easing: options.easing || inAndOut,\n callback: callback,\n };\n if (options.center) {\n animation.sourceCenter = center;\n animation.targetCenter = options.center.slice();\n center = animation.targetCenter;\n }\n if (options.zoom !== undefined) {\n animation.sourceResolution = resolution;\n animation.targetResolution = this.getResolutionForZoom(options.zoom);\n resolution = animation.targetResolution;\n }\n else if (options.resolution) {\n animation.sourceResolution = resolution;\n animation.targetResolution = options.resolution;\n resolution = animation.targetResolution;\n }\n if (options.rotation !== undefined) {\n animation.sourceRotation = rotation;\n var delta = modulo(options.rotation - rotation + Math.PI, 2 * Math.PI) - Math.PI;\n animation.targetRotation = rotation + delta;\n rotation = animation.targetRotation;\n }\n // check if animation is a no-op\n if (isNoopAnimation(animation)) {\n animation.complete = true;\n // we still push it onto the series for callback handling\n }\n else {\n start += animation.duration;\n }\n series.push(animation);\n }\n this.animations_.push(series);\n this.setHint(ViewHint.ANIMATING, 1);\n this.updateAnimations_();\n };\n /**\n * Determine if the view is being animated.\n * @return {boolean} The view is being animated.\n * @api\n */\n View.prototype.getAnimating = function () {\n return this.hints_[ViewHint.ANIMATING] > 0;\n };\n /**\n * Determine if the user is interacting with the view, such as panning or zooming.\n * @return {boolean} The view is being interacted with.\n * @api\n */\n View.prototype.getInteracting = function () {\n return this.hints_[ViewHint.INTERACTING] > 0;\n };\n /**\n * Cancel any ongoing animations.\n * @api\n */\n View.prototype.cancelAnimations = function () {\n this.setHint(ViewHint.ANIMATING, -this.hints_[ViewHint.ANIMATING]);\n var anchor;\n for (var i = 0, ii = this.animations_.length; i < ii; ++i) {\n var series = this.animations_[i];\n if (series[0].callback) {\n animationCallback(series[0].callback, false);\n }\n if (!anchor) {\n for (var j = 0, jj = series.length; j < jj; ++j) {\n var animation = series[j];\n if (!animation.complete) {\n anchor = animation.anchor;\n break;\n }\n }\n }\n }\n this.animations_.length = 0;\n this.cancelAnchor_ = anchor;\n };\n /**\n * Update all animations.\n */\n View.prototype.updateAnimations_ = function () {\n if (this.updateAnimationKey_ !== undefined) {\n cancelAnimationFrame(this.updateAnimationKey_);\n this.updateAnimationKey_ = undefined;\n }\n if (!this.getAnimating()) {\n return;\n }\n var now = Date.now();\n var more = false;\n for (var i = this.animations_.length - 1; i >= 0; --i) {\n var series = this.animations_[i];\n var seriesComplete = true;\n for (var j = 0, jj = series.length; j < jj; ++j) {\n var animation = series[j];\n if (animation.complete) {\n continue;\n }\n var elapsed = now - animation.start;\n var fraction = animation.duration > 0 ? elapsed / animation.duration : 1;\n if (fraction >= 1) {\n animation.complete = true;\n fraction = 1;\n }\n else {\n seriesComplete = false;\n }\n var progress = animation.easing(fraction);\n if (animation.sourceCenter) {\n var x0 = animation.sourceCenter[0];\n var y0 = animation.sourceCenter[1];\n var x1 = animation.targetCenter[0];\n var y1 = animation.targetCenter[1];\n var x = x0 + progress * (x1 - x0);\n var y = y0 + progress * (y1 - y0);\n this.targetCenter_ = [x, y];\n }\n if (animation.sourceResolution && animation.targetResolution) {\n var resolution = progress === 1\n ? animation.targetResolution\n : animation.sourceResolution +\n progress *\n (animation.targetResolution - animation.sourceResolution);\n if (animation.anchor) {\n var size = this.getViewportSize_(this.getRotation());\n var constrainedResolution = this.constraints_.resolution(resolution, 0, size, true);\n this.targetCenter_ = this.calculateCenterZoom(constrainedResolution, animation.anchor);\n }\n this.targetResolution_ = resolution;\n this.applyTargetState_(true);\n }\n if (animation.sourceRotation !== undefined &&\n animation.targetRotation !== undefined) {\n var rotation = progress === 1\n ? modulo(animation.targetRotation + Math.PI, 2 * Math.PI) -\n Math.PI\n : animation.sourceRotation +\n progress *\n (animation.targetRotation - animation.sourceRotation);\n if (animation.anchor) {\n var constrainedRotation = this.constraints_.rotation(rotation, true);\n this.targetCenter_ = this.calculateCenterRotate(constrainedRotation, animation.anchor);\n }\n this.targetRotation_ = rotation;\n }\n this.applyTargetState_(true);\n more = true;\n if (!animation.complete) {\n break;\n }\n }\n if (seriesComplete) {\n this.animations_[i] = null;\n this.setHint(ViewHint.ANIMATING, -1);\n var callback = series[0].callback;\n if (callback) {\n animationCallback(callback, true);\n }\n }\n }\n // prune completed series\n this.animations_ = this.animations_.filter(Boolean);\n if (more && this.updateAnimationKey_ === undefined) {\n this.updateAnimationKey_ = requestAnimationFrame(this.updateAnimations_.bind(this));\n }\n };\n /**\n * @param {number} rotation Target rotation.\n * @param {import(\"./coordinate.js\").Coordinate} anchor Rotation anchor.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center for rotation and anchor.\n */\n View.prototype.calculateCenterRotate = function (rotation, anchor) {\n var center;\n var currentCenter = this.getCenterInternal();\n if (currentCenter !== undefined) {\n center = [currentCenter[0] - anchor[0], currentCenter[1] - anchor[1]];\n rotateCoordinate(center, rotation - this.getRotation());\n addCoordinate(center, anchor);\n }\n return center;\n };\n /**\n * @param {number} resolution Target resolution.\n * @param {import(\"./coordinate.js\").Coordinate} anchor Zoom anchor.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center for resolution and anchor.\n */\n View.prototype.calculateCenterZoom = function (resolution, anchor) {\n var center;\n var currentCenter = this.getCenterInternal();\n var currentResolution = this.getResolution();\n if (currentCenter !== undefined && currentResolution !== undefined) {\n var x = anchor[0] -\n (resolution * (anchor[0] - currentCenter[0])) / currentResolution;\n var y = anchor[1] -\n (resolution * (anchor[1] - currentCenter[1])) / currentResolution;\n center = [x, y];\n }\n return center;\n };\n /**\n * Returns the current viewport size.\n * @private\n * @param {number=} opt_rotation Take into account the rotation of the viewport when giving the size\n * @return {import(\"./size.js\").Size} Viewport size or `[100, 100]` when no viewport is found.\n */\n View.prototype.getViewportSize_ = function (opt_rotation) {\n var size = this.viewportSize_;\n if (opt_rotation) {\n var w = size[0];\n var h = size[1];\n return [\n Math.abs(w * Math.cos(opt_rotation)) +\n Math.abs(h * Math.sin(opt_rotation)),\n Math.abs(w * Math.sin(opt_rotation)) +\n Math.abs(h * Math.cos(opt_rotation)),\n ];\n }\n else {\n return size;\n }\n };\n /**\n * Stores the viewport size on the view. The viewport size is not read every time from the DOM\n * to avoid performance hit and layout reflow.\n * This should be done on map size change.\n * Note: the constraints are not resolved during an animation to avoid stopping it\n * @param {import(\"./size.js\").Size=} opt_size Viewport size; if undefined, [100, 100] is assumed\n */\n View.prototype.setViewportSize = function (opt_size) {\n this.viewportSize_ = Array.isArray(opt_size)\n ? opt_size.slice()\n : [100, 100];\n if (!this.getAnimating()) {\n this.resolveConstraints(0);\n }\n };\n /**\n * Get the view center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The center of the view.\n * @observable\n * @api\n */\n View.prototype.getCenter = function () {\n var center = this.getCenterInternal();\n if (!center) {\n return center;\n }\n return toUserCoordinate(center, this.getProjection());\n };\n /**\n * Get the view center without transforming to user projection.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The center of the view.\n */\n View.prototype.getCenterInternal = function () {\n return /** @type {import(\"./coordinate.js\").Coordinate|undefined} */ (this.get(ViewProperty.CENTER));\n };\n /**\n * @return {Constraints} Constraints.\n */\n View.prototype.getConstraints = function () {\n return this.constraints_;\n };\n /**\n * @return {boolean} Resolution constraint is set\n */\n View.prototype.getConstrainResolution = function () {\n return this.options_.constrainResolution;\n };\n /**\n * @param {Array=} opt_hints Destination array.\n * @return {Array} Hint.\n */\n View.prototype.getHints = function (opt_hints) {\n if (opt_hints !== undefined) {\n opt_hints[0] = this.hints_[0];\n opt_hints[1] = this.hints_[1];\n return opt_hints;\n }\n else {\n return this.hints_.slice();\n }\n };\n /**\n * Calculate the extent for the current view state and the passed size.\n * The size is the pixel dimensions of the box into which the calculated extent\n * should fit. In most cases you want to get the extent of the entire map,\n * that is `map.getSize()`.\n * @param {import(\"./size.js\").Size=} opt_size Box pixel size. If not provided, the size\n * of the map that uses this view will be used.\n * @return {import(\"./extent.js\").Extent} Extent.\n * @api\n */\n View.prototype.calculateExtent = function (opt_size) {\n var extent = this.calculateExtentInternal(opt_size);\n return toUserExtent(extent, this.getProjection());\n };\n /**\n * @param {import(\"./size.js\").Size=} opt_size Box pixel size. If not provided, the size of the\n * first map that uses this view will be used.\n * @return {import(\"./extent.js\").Extent} Extent.\n */\n View.prototype.calculateExtentInternal = function (opt_size) {\n var size = opt_size || this.getViewportSize_();\n var center = /** @type {!import(\"./coordinate.js\").Coordinate} */ (this.getCenterInternal());\n assert(center, 1); // The view center is not defined\n var resolution = /** @type {!number} */ (this.getResolution());\n assert(resolution !== undefined, 2); // The view resolution is not defined\n var rotation = /** @type {!number} */ (this.getRotation());\n assert(rotation !== undefined, 3); // The view rotation is not defined\n return getForViewAndSize(center, resolution, rotation, size);\n };\n /**\n * Get the maximum resolution of the view.\n * @return {number} The maximum resolution of the view.\n * @api\n */\n View.prototype.getMaxResolution = function () {\n return this.maxResolution_;\n };\n /**\n * Get the minimum resolution of the view.\n * @return {number} The minimum resolution of the view.\n * @api\n */\n View.prototype.getMinResolution = function () {\n return this.minResolution_;\n };\n /**\n * Get the maximum zoom level for the view.\n * @return {number} The maximum zoom level.\n * @api\n */\n View.prototype.getMaxZoom = function () {\n return /** @type {number} */ (this.getZoomForResolution(this.minResolution_));\n };\n /**\n * Set a new maximum zoom level for the view.\n * @param {number} zoom The maximum zoom level.\n * @api\n */\n View.prototype.setMaxZoom = function (zoom) {\n this.applyOptions_(this.getUpdatedOptions_({ maxZoom: zoom }));\n };\n /**\n * Get the minimum zoom level for the view.\n * @return {number} The minimum zoom level.\n * @api\n */\n View.prototype.getMinZoom = function () {\n return /** @type {number} */ (this.getZoomForResolution(this.maxResolution_));\n };\n /**\n * Set a new minimum zoom level for the view.\n * @param {number} zoom The minimum zoom level.\n * @api\n */\n View.prototype.setMinZoom = function (zoom) {\n this.applyOptions_(this.getUpdatedOptions_({ minZoom: zoom }));\n };\n /**\n * Set whether the view shoud allow intermediary zoom levels.\n * @param {boolean} enabled Whether the resolution is constrained.\n * @api\n */\n View.prototype.setConstrainResolution = function (enabled) {\n this.applyOptions_(this.getUpdatedOptions_({ constrainResolution: enabled }));\n };\n /**\n * Get the view projection.\n * @return {import(\"./proj/Projection.js\").default} The projection of the view.\n * @api\n */\n View.prototype.getProjection = function () {\n return this.projection_;\n };\n /**\n * Get the view resolution.\n * @return {number|undefined} The resolution of the view.\n * @observable\n * @api\n */\n View.prototype.getResolution = function () {\n return /** @type {number|undefined} */ (this.get(ViewProperty.RESOLUTION));\n };\n /**\n * Get the resolutions for the view. This returns the array of resolutions\n * passed to the constructor of the View, or undefined if none were given.\n * @return {Array|undefined} The resolutions of the view.\n * @api\n */\n View.prototype.getResolutions = function () {\n return this.resolutions_;\n };\n /**\n * Get the resolution for a provided extent (in map units) and size (in pixels).\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {import(\"./size.js\").Size=} opt_size Box pixel size.\n * @return {number} The resolution at which the provided extent will render at\n * the given size.\n * @api\n */\n View.prototype.getResolutionForExtent = function (extent, opt_size) {\n return this.getResolutionForExtentInternal(fromUserExtent(extent, this.getProjection()), opt_size);\n };\n /**\n * Get the resolution for a provided extent (in map units) and size (in pixels).\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {import(\"./size.js\").Size=} opt_size Box pixel size.\n * @return {number} The resolution at which the provided extent will render at\n * the given size.\n */\n View.prototype.getResolutionForExtentInternal = function (extent, opt_size) {\n var size = opt_size || this.getViewportSize_();\n var xResolution = getWidth(extent) / size[0];\n var yResolution = getHeight(extent) / size[1];\n return Math.max(xResolution, yResolution);\n };\n /**\n * Return a function that returns a value between 0 and 1 for a\n * resolution. Exponential scaling is assumed.\n * @param {number=} opt_power Power.\n * @return {function(number): number} Resolution for value function.\n */\n View.prototype.getResolutionForValueFunction = function (opt_power) {\n var power = opt_power || 2;\n var maxResolution = this.getConstrainedResolution(this.maxResolution_);\n var minResolution = this.minResolution_;\n var max = Math.log(maxResolution / minResolution) / Math.log(power);\n return (\n /**\n * @param {number} value Value.\n * @return {number} Resolution.\n */\n function (value) {\n var resolution = maxResolution / Math.pow(power, value * max);\n return resolution;\n });\n };\n /**\n * Get the view rotation.\n * @return {number} The rotation of the view in radians.\n * @observable\n * @api\n */\n View.prototype.getRotation = function () {\n return /** @type {number} */ (this.get(ViewProperty.ROTATION));\n };\n /**\n * Return a function that returns a resolution for a value between\n * 0 and 1. Exponential scaling is assumed.\n * @param {number=} opt_power Power.\n * @return {function(number): number} Value for resolution function.\n */\n View.prototype.getValueForResolutionFunction = function (opt_power) {\n var logPower = Math.log(opt_power || 2);\n var maxResolution = this.getConstrainedResolution(this.maxResolution_);\n var minResolution = this.minResolution_;\n var max = Math.log(maxResolution / minResolution) / logPower;\n return (\n /**\n * @param {number} resolution Resolution.\n * @return {number} Value.\n */\n function (resolution) {\n var value = Math.log(maxResolution / resolution) / logPower / max;\n return value;\n });\n };\n /**\n * @return {State} View state.\n */\n View.prototype.getState = function () {\n var center = /** @type {import(\"./coordinate.js\").Coordinate} */ (this.getCenterInternal());\n var projection = this.getProjection();\n var resolution = /** @type {number} */ (this.getResolution());\n var rotation = this.getRotation();\n return {\n center: center.slice(0),\n projection: projection !== undefined ? projection : null,\n resolution: resolution,\n rotation: rotation,\n zoom: this.getZoom(),\n };\n };\n /**\n * Get the current zoom level. This method may return non-integer zoom levels\n * if the view does not constrain the resolution, or if an interaction or\n * animation is underway.\n * @return {number|undefined} Zoom.\n * @api\n */\n View.prototype.getZoom = function () {\n var zoom;\n var resolution = this.getResolution();\n if (resolution !== undefined) {\n zoom = this.getZoomForResolution(resolution);\n }\n return zoom;\n };\n /**\n * Get the zoom level for a resolution.\n * @param {number} resolution The resolution.\n * @return {number|undefined} The zoom level for the provided resolution.\n * @api\n */\n View.prototype.getZoomForResolution = function (resolution) {\n var offset = this.minZoom_ || 0;\n var max, zoomFactor;\n if (this.resolutions_) {\n var nearest = linearFindNearest(this.resolutions_, resolution, 1);\n offset = nearest;\n max = this.resolutions_[nearest];\n if (nearest == this.resolutions_.length - 1) {\n zoomFactor = 2;\n }\n else {\n zoomFactor = max / this.resolutions_[nearest + 1];\n }\n }\n else {\n max = this.maxResolution_;\n zoomFactor = this.zoomFactor_;\n }\n return offset + Math.log(max / resolution) / Math.log(zoomFactor);\n };\n /**\n * Get the resolution for a zoom level.\n * @param {number} zoom Zoom level.\n * @return {number} The view resolution for the provided zoom level.\n * @api\n */\n View.prototype.getResolutionForZoom = function (zoom) {\n if (this.resolutions_) {\n if (this.resolutions_.length <= 1) {\n return 0;\n }\n var baseLevel = clamp(Math.floor(zoom), 0, this.resolutions_.length - 2);\n var zoomFactor = this.resolutions_[baseLevel] / this.resolutions_[baseLevel + 1];\n return (this.resolutions_[baseLevel] /\n Math.pow(zoomFactor, clamp(zoom - baseLevel, 0, 1)));\n }\n else {\n return (this.maxResolution_ / Math.pow(this.zoomFactor_, zoom - this.minZoom_));\n }\n };\n /**\n * Fit the given geometry or extent based on the given map size and border.\n * The size is pixel dimensions of the box to fit the extent into.\n * In most cases you will want to use the map size, that is `map.getSize()`.\n * Takes care of the map angle.\n * @param {import(\"./geom/SimpleGeometry.js\").default|import(\"./extent.js\").Extent} geometryOrExtent The geometry or\n * extent to fit the view to.\n * @param {FitOptions=} opt_options Options.\n * @api\n */\n View.prototype.fit = function (geometryOrExtent, opt_options) {\n var options = assign({ size: this.getViewportSize_() }, opt_options || {});\n /** @type {import(\"./geom/SimpleGeometry.js\").default} */\n var geometry;\n assert(Array.isArray(geometryOrExtent) ||\n typeof ( /** @type {?} */(geometryOrExtent).getSimplifiedGeometry) ===\n 'function', 24); // Invalid extent or geometry provided as `geometry`\n if (Array.isArray(geometryOrExtent)) {\n assert(!isEmpty(geometryOrExtent), 25); // Cannot fit empty extent provided as `geometry`\n var extent = fromUserExtent(geometryOrExtent, this.getProjection());\n geometry = polygonFromExtent(extent);\n }\n else if (geometryOrExtent.getType() === GeometryType.CIRCLE) {\n var extent = fromUserExtent(geometryOrExtent.getExtent(), this.getProjection());\n geometry = polygonFromExtent(extent);\n geometry.rotate(this.getRotation(), getCenter(extent));\n }\n else {\n var userProjection = getUserProjection();\n if (userProjection) {\n geometry = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometryOrExtent\n .clone()\n .transform(userProjection, this.getProjection()));\n }\n else {\n geometry = geometryOrExtent;\n }\n }\n this.fitInternal(geometry, options);\n };\n /**\n * @param {import(\"./geom/SimpleGeometry.js\").default} geometry The geometry.\n * @param {FitOptions=} opt_options Options.\n */\n View.prototype.fitInternal = function (geometry, opt_options) {\n var options = opt_options || {};\n var size = options.size;\n if (!size) {\n size = this.getViewportSize_();\n }\n var padding = options.padding !== undefined ? options.padding : [0, 0, 0, 0];\n var nearest = options.nearest !== undefined ? options.nearest : false;\n var minResolution;\n if (options.minResolution !== undefined) {\n minResolution = options.minResolution;\n }\n else if (options.maxZoom !== undefined) {\n minResolution = this.getResolutionForZoom(options.maxZoom);\n }\n else {\n minResolution = 0;\n }\n var coords = geometry.getFlatCoordinates();\n // calculate rotated extent\n var rotation = this.getRotation();\n var cosAngle = Math.cos(-rotation);\n var sinAngle = Math.sin(-rotation);\n var minRotX = +Infinity;\n var minRotY = +Infinity;\n var maxRotX = -Infinity;\n var maxRotY = -Infinity;\n var stride = geometry.getStride();\n for (var i = 0, ii = coords.length; i < ii; i += stride) {\n var rotX = coords[i] * cosAngle - coords[i + 1] * sinAngle;\n var rotY = coords[i] * sinAngle + coords[i + 1] * cosAngle;\n minRotX = Math.min(minRotX, rotX);\n minRotY = Math.min(minRotY, rotY);\n maxRotX = Math.max(maxRotX, rotX);\n maxRotY = Math.max(maxRotY, rotY);\n }\n // calculate resolution\n var resolution = this.getResolutionForExtentInternal([minRotX, minRotY, maxRotX, maxRotY], [size[0] - padding[1] - padding[3], size[1] - padding[0] - padding[2]]);\n resolution = isNaN(resolution)\n ? minResolution\n : Math.max(resolution, minResolution);\n resolution = this.getConstrainedResolution(resolution, nearest ? 0 : 1);\n // calculate center\n sinAngle = -sinAngle; // go back to original rotation\n var centerRotX = (minRotX + maxRotX) / 2;\n var centerRotY = (minRotY + maxRotY) / 2;\n centerRotX += ((padding[1] - padding[3]) / 2) * resolution;\n centerRotY += ((padding[0] - padding[2]) / 2) * resolution;\n var centerX = centerRotX * cosAngle - centerRotY * sinAngle;\n var centerY = centerRotY * cosAngle + centerRotX * sinAngle;\n var center = [centerX, centerY];\n var callback = options.callback ? options.callback : VOID;\n if (options.duration !== undefined) {\n this.animateInternal({\n resolution: resolution,\n center: this.getConstrainedCenter(center, resolution),\n duration: options.duration,\n easing: options.easing,\n }, callback);\n }\n else {\n this.targetResolution_ = resolution;\n this.targetCenter_ = center;\n this.applyTargetState_(false, true);\n animationCallback(callback, true);\n }\n };\n /**\n * Center on coordinate and view position.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"./size.js\").Size} size Box pixel size.\n * @param {import(\"./pixel.js\").Pixel} position Position on the view to center on.\n * @api\n */\n View.prototype.centerOn = function (coordinate, size, position) {\n this.centerOnInternal(fromUserCoordinate(coordinate, this.getProjection()), size, position);\n };\n /**\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"./size.js\").Size} size Box pixel size.\n * @param {import(\"./pixel.js\").Pixel} position Position on the view to center on.\n */\n View.prototype.centerOnInternal = function (coordinate, size, position) {\n // calculate rotated position\n var rotation = this.getRotation();\n var cosAngle = Math.cos(-rotation);\n var sinAngle = Math.sin(-rotation);\n var rotX = coordinate[0] * cosAngle - coordinate[1] * sinAngle;\n var rotY = coordinate[1] * cosAngle + coordinate[0] * sinAngle;\n var resolution = this.getResolution();\n rotX += (size[0] / 2 - position[0]) * resolution;\n rotY += (position[1] - size[1] / 2) * resolution;\n // go back to original angle\n sinAngle = -sinAngle; // go back to original rotation\n var centerX = rotX * cosAngle - rotY * sinAngle;\n var centerY = rotY * cosAngle + rotX * sinAngle;\n this.setCenterInternal([centerX, centerY]);\n };\n /**\n * @return {boolean} Is defined.\n */\n View.prototype.isDef = function () {\n return !!this.getCenterInternal() && this.getResolution() !== undefined;\n };\n /**\n * Adds relative coordinates to the center of the view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate} deltaCoordinates Relative value to add.\n * @api\n */\n View.prototype.adjustCenter = function (deltaCoordinates) {\n var center = toUserCoordinate(this.targetCenter_, this.getProjection());\n this.setCenter([\n center[0] + deltaCoordinates[0],\n center[1] + deltaCoordinates[1],\n ]);\n };\n /**\n * Adds relative coordinates to the center of the view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate} deltaCoordinates Relative value to add.\n */\n View.prototype.adjustCenterInternal = function (deltaCoordinates) {\n var center = this.targetCenter_;\n this.setCenterInternal([\n center[0] + deltaCoordinates[0],\n center[1] + deltaCoordinates[1],\n ]);\n };\n /**\n * Multiply the view resolution by a ratio, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} ratio The ratio to apply on the view resolution.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n * @api\n */\n View.prototype.adjustResolution = function (ratio, opt_anchor) {\n var anchor = opt_anchor && fromUserCoordinate(opt_anchor, this.getProjection());\n this.adjustResolutionInternal(ratio, anchor);\n };\n /**\n * Multiply the view resolution by a ratio, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} ratio The ratio to apply on the view resolution.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n */\n View.prototype.adjustResolutionInternal = function (ratio, opt_anchor) {\n var isMoving = this.getAnimating() || this.getInteracting();\n var size = this.getViewportSize_(this.getRotation());\n var newResolution = this.constraints_.resolution(this.targetResolution_ * ratio, 0, size, isMoving);\n if (opt_anchor) {\n this.targetCenter_ = this.calculateCenterZoom(newResolution, opt_anchor);\n }\n this.targetResolution_ *= ratio;\n this.applyTargetState_();\n };\n /**\n * Adds a value to the view zoom level, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} delta Relative value to add to the zoom level.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n * @api\n */\n View.prototype.adjustZoom = function (delta, opt_anchor) {\n this.adjustResolution(Math.pow(this.zoomFactor_, -delta), opt_anchor);\n };\n /**\n * Adds a value to the view rotation, optionally using an anchor. Any rotation\n * constraint will apply.\n * @param {number} delta Relative value to add to the zoom rotation, in radians.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The rotation center.\n * @api\n */\n View.prototype.adjustRotation = function (delta, opt_anchor) {\n if (opt_anchor) {\n opt_anchor = fromUserCoordinate(opt_anchor, this.getProjection());\n }\n this.adjustRotationInternal(delta, opt_anchor);\n };\n /**\n * @param {number} delta Relative value to add to the zoom rotation, in radians.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The rotation center.\n */\n View.prototype.adjustRotationInternal = function (delta, opt_anchor) {\n var isMoving = this.getAnimating() || this.getInteracting();\n var newRotation = this.constraints_.rotation(this.targetRotation_ + delta, isMoving);\n if (opt_anchor) {\n this.targetCenter_ = this.calculateCenterRotate(newRotation, opt_anchor);\n }\n this.targetRotation_ += delta;\n this.applyTargetState_();\n };\n /**\n * Set the center of the current view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center The center of the view.\n * @observable\n * @api\n */\n View.prototype.setCenter = function (center) {\n this.setCenterInternal(fromUserCoordinate(center, this.getProjection()));\n };\n /**\n * Set the center using the view projection (not the user projection).\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center The center of the view.\n */\n View.prototype.setCenterInternal = function (center) {\n this.targetCenter_ = center;\n this.applyTargetState_();\n };\n /**\n * @param {import(\"./ViewHint.js\").default} hint Hint.\n * @param {number} delta Delta.\n * @return {number} New value.\n */\n View.prototype.setHint = function (hint, delta) {\n this.hints_[hint] += delta;\n this.changed();\n return this.hints_[hint];\n };\n /**\n * Set the resolution for this view. Any resolution constraint will apply.\n * @param {number|undefined} resolution The resolution of the view.\n * @observable\n * @api\n */\n View.prototype.setResolution = function (resolution) {\n this.targetResolution_ = resolution;\n this.applyTargetState_();\n };\n /**\n * Set the rotation for this view. Any rotation constraint will apply.\n * @param {number} rotation The rotation of the view in radians.\n * @observable\n * @api\n */\n View.prototype.setRotation = function (rotation) {\n this.targetRotation_ = rotation;\n this.applyTargetState_();\n };\n /**\n * Zoom to a specific zoom level. Any resolution constrain will apply.\n * @param {number} zoom Zoom level.\n * @api\n */\n View.prototype.setZoom = function (zoom) {\n this.setResolution(this.getResolutionForZoom(zoom));\n };\n /**\n * Recompute rotation/resolution/center based on target values.\n * Note: we have to compute rotation first, then resolution and center considering that\n * parameters can influence one another in case a view extent constraint is present.\n * @param {boolean=} opt_doNotCancelAnims Do not cancel animations.\n * @param {boolean=} opt_forceMoving Apply constraints as if the view is moving.\n * @private\n */\n View.prototype.applyTargetState_ = function (opt_doNotCancelAnims, opt_forceMoving) {\n var isMoving = this.getAnimating() || this.getInteracting() || opt_forceMoving;\n // compute rotation\n var newRotation = this.constraints_.rotation(this.targetRotation_, isMoving);\n var size = this.getViewportSize_(newRotation);\n var newResolution = this.constraints_.resolution(this.targetResolution_, 0, size, isMoving);\n var newCenter = this.constraints_.center(this.targetCenter_, newResolution, size, isMoving);\n if (this.get(ViewProperty.ROTATION) !== newRotation) {\n this.set(ViewProperty.ROTATION, newRotation);\n }\n if (this.get(ViewProperty.RESOLUTION) !== newResolution) {\n this.set(ViewProperty.RESOLUTION, newResolution);\n }\n if (!this.get(ViewProperty.CENTER) ||\n !equals(this.get(ViewProperty.CENTER), newCenter)) {\n this.set(ViewProperty.CENTER, newCenter);\n }\n if (this.getAnimating() && !opt_doNotCancelAnims) {\n this.cancelAnimations();\n }\n this.cancelAnchor_ = undefined;\n };\n /**\n * If any constraints need to be applied, an animation will be triggered.\n * This is typically done on interaction end.\n * Note: calling this with a duration of 0 will apply the constrained values straight away,\n * without animation.\n * @param {number=} opt_duration The animation duration in ms.\n * @param {number=} opt_resolutionDirection Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n */\n View.prototype.resolveConstraints = function (opt_duration, opt_resolutionDirection, opt_anchor) {\n var duration = opt_duration !== undefined ? opt_duration : 200;\n var direction = opt_resolutionDirection || 0;\n var newRotation = this.constraints_.rotation(this.targetRotation_);\n var size = this.getViewportSize_(newRotation);\n var newResolution = this.constraints_.resolution(this.targetResolution_, direction, size);\n var newCenter = this.constraints_.center(this.targetCenter_, newResolution, size);\n if (duration === 0 && !this.cancelAnchor_) {\n this.targetResolution_ = newResolution;\n this.targetRotation_ = newRotation;\n this.targetCenter_ = newCenter;\n this.applyTargetState_();\n return;\n }\n var anchor = opt_anchor || (duration === 0 ? this.cancelAnchor_ : undefined);\n this.cancelAnchor_ = undefined;\n if (this.getResolution() !== newResolution ||\n this.getRotation() !== newRotation ||\n !this.getCenterInternal() ||\n !equals(this.getCenterInternal(), newCenter)) {\n if (this.getAnimating()) {\n this.cancelAnimations();\n }\n this.animateInternal({\n rotation: newRotation,\n center: newCenter,\n resolution: newResolution,\n duration: duration,\n easing: easeOut,\n anchor: anchor,\n });\n }\n };\n /**\n * Notify the View that an interaction has started.\n * The view state will be resolved to a stable one if needed\n * (depending on its constraints).\n * @api\n */\n View.prototype.beginInteraction = function () {\n this.resolveConstraints(0);\n this.setHint(ViewHint.INTERACTING, 1);\n };\n /**\n * Notify the View that an interaction has ended. The view state will be resolved\n * to a stable one if needed (depending on its constraints).\n * @param {number=} opt_duration Animation duration in ms.\n * @param {number=} opt_resolutionDirection Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n * @api\n */\n View.prototype.endInteraction = function (opt_duration, opt_resolutionDirection, opt_anchor) {\n var anchor = opt_anchor && fromUserCoordinate(opt_anchor, this.getProjection());\n this.endInteractionInternal(opt_duration, opt_resolutionDirection, anchor);\n };\n /**\n * Notify the View that an interaction has ended. The view state will be resolved\n * to a stable one if needed (depending on its constraints).\n * @param {number=} opt_duration Animation duration in ms.\n * @param {number=} opt_resolutionDirection Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate=} opt_anchor The origin of the transformation.\n */\n View.prototype.endInteractionInternal = function (opt_duration, opt_resolutionDirection, opt_anchor) {\n this.setHint(ViewHint.INTERACTING, -1);\n this.resolveConstraints(opt_duration, opt_resolutionDirection, opt_anchor);\n };\n /**\n * Get a valid position for the view center according to the current constraints.\n * @param {import(\"./coordinate.js\").Coordinate|undefined} targetCenter Target center position.\n * @param {number=} opt_targetResolution Target resolution. If not supplied, the current one will be used.\n * This is useful to guess a valid center position at a different zoom level.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Valid center position.\n */\n View.prototype.getConstrainedCenter = function (targetCenter, opt_targetResolution) {\n var size = this.getViewportSize_(this.getRotation());\n return this.constraints_.center(targetCenter, opt_targetResolution || this.getResolution(), size);\n };\n /**\n * Get a valid zoom level according to the current view constraints.\n * @param {number|undefined} targetZoom Target zoom.\n * @param {number=} [opt_direction=0] Indicate which resolution should be used\n * by a renderer if the view resolution does not match any resolution of the tile source.\n * If 0, the nearest resolution will be used. If 1, the nearest lower resolution\n * will be used. If -1, the nearest higher resolution will be used.\n * @return {number|undefined} Valid zoom level.\n */\n View.prototype.getConstrainedZoom = function (targetZoom, opt_direction) {\n var targetRes = this.getResolutionForZoom(targetZoom);\n return this.getZoomForResolution(this.getConstrainedResolution(targetRes, opt_direction));\n };\n /**\n * Get a valid resolution according to the current view constraints.\n * @param {number|undefined} targetResolution Target resolution.\n * @param {number=} [opt_direction=0] Indicate which resolution should be used\n * by a renderer if the view resolution does not match any resolution of the tile source.\n * If 0, the nearest resolution will be used. If 1, the nearest lower resolution\n * will be used. If -1, the nearest higher resolution will be used.\n * @return {number|undefined} Valid resolution.\n */\n View.prototype.getConstrainedResolution = function (targetResolution, opt_direction) {\n var direction = opt_direction || 0;\n var size = this.getViewportSize_(this.getRotation());\n return this.constraints_.resolution(targetResolution, direction, size);\n };\n return View;\n}(BaseObject));\n/**\n * @param {Function} callback Callback.\n * @param {*} returnValue Return value.\n */\nfunction animationCallback(callback, returnValue) {\n setTimeout(function () {\n callback(returnValue);\n }, 0);\n}\n/**\n * @param {ViewOptions} options View options.\n * @return {import(\"./centerconstraint.js\").Type} The constraint.\n */\nexport function createCenterConstraint(options) {\n if (options.extent !== undefined) {\n var smooth = options.smoothExtentConstraint !== undefined\n ? options.smoothExtentConstraint\n : true;\n return createExtent(options.extent, options.constrainOnlyCenter, smooth);\n }\n var projection = createProjection(options.projection, 'EPSG:3857');\n if (options.multiWorld !== true && projection.isGlobal()) {\n var extent = projection.getExtent().slice();\n extent[0] = -Infinity;\n extent[2] = Infinity;\n return createExtent(extent, false, false);\n }\n return centerNone;\n}\n/**\n * @param {ViewOptions} options View options.\n * @return {{constraint: import(\"./resolutionconstraint.js\").Type, maxResolution: number,\n * minResolution: number, minZoom: number, zoomFactor: number}} The constraint.\n */\nexport function createResolutionConstraint(options) {\n var resolutionConstraint;\n var maxResolution;\n var minResolution;\n // TODO: move these to be ol constants\n // see https://github.com/openlayers/openlayers/issues/2076\n var defaultMaxZoom = 28;\n var defaultZoomFactor = 2;\n var minZoom = options.minZoom !== undefined ? options.minZoom : DEFAULT_MIN_ZOOM;\n var maxZoom = options.maxZoom !== undefined ? options.maxZoom : defaultMaxZoom;\n var zoomFactor = options.zoomFactor !== undefined ? options.zoomFactor : defaultZoomFactor;\n var multiWorld = options.multiWorld !== undefined ? options.multiWorld : false;\n var smooth = options.smoothResolutionConstraint !== undefined\n ? options.smoothResolutionConstraint\n : true;\n var showFullExtent = options.showFullExtent !== undefined ? options.showFullExtent : false;\n var projection = createProjection(options.projection, 'EPSG:3857');\n var projExtent = projection.getExtent();\n var constrainOnlyCenter = options.constrainOnlyCenter;\n var extent = options.extent;\n if (!multiWorld && !extent && projection.isGlobal()) {\n constrainOnlyCenter = false;\n extent = projExtent;\n }\n if (options.resolutions !== undefined) {\n var resolutions = options.resolutions;\n maxResolution = resolutions[minZoom];\n minResolution =\n resolutions[maxZoom] !== undefined\n ? resolutions[maxZoom]\n : resolutions[resolutions.length - 1];\n if (options.constrainResolution) {\n resolutionConstraint = createSnapToResolutions(resolutions, smooth, !constrainOnlyCenter && extent, showFullExtent);\n }\n else {\n resolutionConstraint = createMinMaxResolution(maxResolution, minResolution, smooth, !constrainOnlyCenter && extent, showFullExtent);\n }\n }\n else {\n // calculate the default min and max resolution\n var size = !projExtent\n ? // use an extent that can fit the whole world if need be\n (360 * METERS_PER_UNIT[Units.DEGREES]) / projection.getMetersPerUnit()\n : Math.max(getWidth(projExtent), getHeight(projExtent));\n var defaultMaxResolution = size / DEFAULT_TILE_SIZE / Math.pow(defaultZoomFactor, DEFAULT_MIN_ZOOM);\n var defaultMinResolution = defaultMaxResolution /\n Math.pow(defaultZoomFactor, defaultMaxZoom - DEFAULT_MIN_ZOOM);\n // user provided maxResolution takes precedence\n maxResolution = options.maxResolution;\n if (maxResolution !== undefined) {\n minZoom = 0;\n }\n else {\n maxResolution = defaultMaxResolution / Math.pow(zoomFactor, minZoom);\n }\n // user provided minResolution takes precedence\n minResolution = options.minResolution;\n if (minResolution === undefined) {\n if (options.maxZoom !== undefined) {\n if (options.maxResolution !== undefined) {\n minResolution = maxResolution / Math.pow(zoomFactor, maxZoom);\n }\n else {\n minResolution = defaultMaxResolution / Math.pow(zoomFactor, maxZoom);\n }\n }\n else {\n minResolution = defaultMinResolution;\n }\n }\n // given discrete zoom levels, minResolution may be different than provided\n maxZoom =\n minZoom +\n Math.floor(Math.log(maxResolution / minResolution) / Math.log(zoomFactor));\n minResolution = maxResolution / Math.pow(zoomFactor, maxZoom - minZoom);\n if (options.constrainResolution) {\n resolutionConstraint = createSnapToPower(zoomFactor, maxResolution, minResolution, smooth, !constrainOnlyCenter && extent, showFullExtent);\n }\n else {\n resolutionConstraint = createMinMaxResolution(maxResolution, minResolution, smooth, !constrainOnlyCenter && extent, showFullExtent);\n }\n }\n return {\n constraint: resolutionConstraint,\n maxResolution: maxResolution,\n minResolution: minResolution,\n minZoom: minZoom,\n zoomFactor: zoomFactor,\n };\n}\n/**\n * @param {ViewOptions} options View options.\n * @return {import(\"./rotationconstraint.js\").Type} Rotation constraint.\n */\nexport function createRotationConstraint(options) {\n var enableRotation = options.enableRotation !== undefined ? options.enableRotation : true;\n if (enableRotation) {\n var constrainRotation = options.constrainRotation;\n if (constrainRotation === undefined || constrainRotation === true) {\n return createSnapToZero();\n }\n else if (constrainRotation === false) {\n return rotationNone;\n }\n else if (typeof constrainRotation === 'number') {\n return createSnapToN(constrainRotation);\n }\n else {\n return rotationNone;\n }\n }\n else {\n return disable;\n }\n}\n/**\n * Determine if an animation involves no view change.\n * @param {Animation} animation The animation.\n * @return {boolean} The animation involves no view change.\n */\nexport function isNoopAnimation(animation) {\n if (animation.sourceCenter && animation.targetCenter) {\n if (!coordinatesEqual(animation.sourceCenter, animation.targetCenter)) {\n return false;\n }\n }\n if (animation.sourceResolution !== animation.targetResolution) {\n return false;\n }\n if (animation.sourceRotation !== animation.targetRotation) {\n return false;\n }\n return true;\n}\nexport default View;\n//# sourceMappingURL=View.js.map","/**\n * @module ol/ViewHint\n */\n/**\n * @enum {number}\n */\nexport default {\n ANIMATING: 0,\n INTERACTING: 1,\n};\n//# sourceMappingURL=ViewHint.js.map","/**\n * @module ol/array\n */\n/**\n * Performs a binary search on the provided sorted list and returns the index of the item if found. If it can't be found it'll return -1.\n * https://github.com/darkskyapp/binary-search\n *\n * @param {Array<*>} haystack Items to search through.\n * @param {*} needle The item to look for.\n * @param {Function=} opt_comparator Comparator function.\n * @return {number} The index of the item if found, -1 if not.\n */\nexport function binarySearch(haystack, needle, opt_comparator) {\n var mid, cmp;\n var comparator = opt_comparator || numberSafeCompareFunction;\n var low = 0;\n var high = haystack.length;\n var found = false;\n while (low < high) {\n /* Note that \"(low + high) >>> 1\" may overflow, and results in a typecast\n * to double (which gives the wrong results). */\n mid = low + ((high - low) >> 1);\n cmp = +comparator(haystack[mid], needle);\n if (cmp < 0.0) {\n /* Too low. */\n low = mid + 1;\n }\n else {\n /* Key found or too high */\n high = mid;\n found = !cmp;\n }\n }\n /* Key not found. */\n return found ? low : ~low;\n}\n/**\n * Compare function for array sort that is safe for numbers.\n * @param {*} a The first object to be compared.\n * @param {*} b The second object to be compared.\n * @return {number} A negative number, zero, or a positive number as the first\n * argument is less than, equal to, or greater than the second.\n */\nexport function numberSafeCompareFunction(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n}\n/**\n * Whether the array contains the given object.\n * @param {Array<*>} arr The array to test for the presence of the element.\n * @param {*} obj The object for which to test.\n * @return {boolean} The object is in the array.\n */\nexport function includes(arr, obj) {\n return arr.indexOf(obj) >= 0;\n}\n/**\n * @param {Array} arr Array.\n * @param {number} target Target.\n * @param {number} direction 0 means return the nearest, > 0\n * means return the largest nearest, < 0 means return the\n * smallest nearest.\n * @return {number} Index.\n */\nexport function linearFindNearest(arr, target, direction) {\n var n = arr.length;\n if (arr[0] <= target) {\n return 0;\n }\n else if (target <= arr[n - 1]) {\n return n - 1;\n }\n else {\n var i = void 0;\n if (direction > 0) {\n for (i = 1; i < n; ++i) {\n if (arr[i] < target) {\n return i - 1;\n }\n }\n }\n else if (direction < 0) {\n for (i = 1; i < n; ++i) {\n if (arr[i] <= target) {\n return i;\n }\n }\n }\n else {\n for (i = 1; i < n; ++i) {\n if (arr[i] == target) {\n return i;\n }\n else if (arr[i] < target) {\n if (arr[i - 1] - target < target - arr[i]) {\n return i - 1;\n }\n else {\n return i;\n }\n }\n }\n }\n return n - 1;\n }\n}\n/**\n * @param {Array<*>} arr Array.\n * @param {number} begin Begin index.\n * @param {number} end End index.\n */\nexport function reverseSubArray(arr, begin, end) {\n while (begin < end) {\n var tmp = arr[begin];\n arr[begin] = arr[end];\n arr[end] = tmp;\n ++begin;\n --end;\n }\n}\n/**\n * @param {Array} arr The array to modify.\n * @param {!Array|VALUE} data The elements or arrays of elements to add to arr.\n * @template VALUE\n */\nexport function extend(arr, data) {\n var extension = Array.isArray(data) ? data : [data];\n var length = extension.length;\n for (var i = 0; i < length; i++) {\n arr[arr.length] = extension[i];\n }\n}\n/**\n * @param {Array} arr The array to modify.\n * @param {VALUE} obj The element to remove.\n * @template VALUE\n * @return {boolean} If the element was removed.\n */\nexport function remove(arr, obj) {\n var i = arr.indexOf(obj);\n var found = i > -1;\n if (found) {\n arr.splice(i, 1);\n }\n return found;\n}\n/**\n * @param {Array} arr The array to search in.\n * @param {function(VALUE, number, ?) : boolean} func The function to compare.\n * @template VALUE\n * @return {VALUE|null} The element found or null.\n */\nexport function find(arr, func) {\n var length = arr.length >>> 0;\n var value;\n for (var i = 0; i < length; i++) {\n value = arr[i];\n if (func(value, i, arr)) {\n return value;\n }\n }\n return null;\n}\n/**\n * @param {Array|Uint8ClampedArray} arr1 The first array to compare.\n * @param {Array|Uint8ClampedArray} arr2 The second array to compare.\n * @return {boolean} Whether the two arrays are equal.\n */\nexport function equals(arr1, arr2) {\n var len1 = arr1.length;\n if (len1 !== arr2.length) {\n return false;\n }\n for (var i = 0; i < len1; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n/**\n * Sort the passed array such that the relative order of equal elements is preverved.\n * See https://en.wikipedia.org/wiki/Sorting_algorithm#Stability for details.\n * @param {Array<*>} arr The array to sort (modifies original).\n * @param {!function(*, *): number} compareFnc Comparison function.\n * @api\n */\nexport function stableSort(arr, compareFnc) {\n var length = arr.length;\n var tmp = Array(arr.length);\n var i;\n for (i = 0; i < length; i++) {\n tmp[i] = { index: i, value: arr[i] };\n }\n tmp.sort(function (a, b) {\n return compareFnc(a.value, b.value) || a.index - b.index;\n });\n for (i = 0; i < arr.length; i++) {\n arr[i] = tmp[i].value;\n }\n}\n/**\n * @param {Array<*>} arr The array to search in.\n * @param {Function} func Comparison function.\n * @return {number} Return index.\n */\nexport function findIndex(arr, func) {\n var index;\n var found = !arr.every(function (el, idx) {\n index = idx;\n return !func(el, idx, arr);\n });\n return found ? index : -1;\n}\n/**\n * @param {Array<*>} arr The array to test.\n * @param {Function=} opt_func Comparison function.\n * @param {boolean=} opt_strict Strictly sorted (default false).\n * @return {boolean} Return index.\n */\nexport function isSorted(arr, opt_func, opt_strict) {\n var compare = opt_func || numberSafeCompareFunction;\n return arr.every(function (currentVal, index) {\n if (index === 0) {\n return true;\n }\n var res = compare(arr[index - 1], currentVal);\n return !(res > 0 || (opt_strict && res === 0));\n });\n}\n//# sourceMappingURL=array.js.map","/**\n * @module ol/asserts\n */\nimport AssertionError from './AssertionError.js';\n/**\n * @param {*} assertion Assertion we expected to be truthy.\n * @param {number} errorCode Error code.\n */\nexport function assert(assertion, errorCode) {\n if (!assertion) {\n throw new AssertionError(errorCode);\n }\n}\n//# sourceMappingURL=asserts.js.map","/**\n * @module ol/color\n */\nimport { assert } from './asserts.js';\nimport { clamp } from './math.js';\n/**\n * A color represented as a short array [red, green, blue, alpha].\n * red, green, and blue should be integers in the range 0..255 inclusive.\n * alpha should be a float in the range 0..1 inclusive. If no alpha value is\n * given then `1` will be used.\n * @typedef {Array} Color\n * @api\n */\n/**\n * This RegExp matches # followed by 3, 4, 6, or 8 hex digits.\n * @const\n * @type {RegExp}\n * @private\n */\nvar HEX_COLOR_RE_ = /^#([a-f0-9]{3}|[a-f0-9]{4}(?:[a-f0-9]{2}){0,2})$/i;\n/**\n * Regular expression for matching potential named color style strings.\n * @const\n * @type {RegExp}\n * @private\n */\nvar NAMED_COLOR_RE_ = /^([a-z]*)$|^hsla?\\(.*\\)$/i;\n/**\n * Return the color as an rgba string.\n * @param {Color|string} color Color.\n * @return {string} Rgba string.\n * @api\n */\nexport function asString(color) {\n if (typeof color === 'string') {\n return color;\n }\n else {\n return toString(color);\n }\n}\n/**\n * Return named color as an rgba string.\n * @param {string} color Named color.\n * @return {string} Rgb string.\n */\nfunction fromNamed(color) {\n var el = document.createElement('div');\n el.style.color = color;\n if (el.style.color !== '') {\n document.body.appendChild(el);\n var rgb = getComputedStyle(el).color;\n document.body.removeChild(el);\n return rgb;\n }\n else {\n return '';\n }\n}\n/**\n * @param {string} s String.\n * @return {Color} Color.\n */\nexport var fromString = (function () {\n // We maintain a small cache of parsed strings. To provide cheap LRU-like\n // semantics, whenever the cache grows too large we simply delete an\n // arbitrary 25% of the entries.\n /**\n * @const\n * @type {number}\n */\n var MAX_CACHE_SIZE = 1024;\n /**\n * @type {Object}\n */\n var cache = {};\n /**\n * @type {number}\n */\n var cacheSize = 0;\n return (\n /**\n * @param {string} s String.\n * @return {Color} Color.\n */\n function (s) {\n var color;\n if (cache.hasOwnProperty(s)) {\n color = cache[s];\n }\n else {\n if (cacheSize >= MAX_CACHE_SIZE) {\n var i = 0;\n for (var key in cache) {\n if ((i++ & 3) === 0) {\n delete cache[key];\n --cacheSize;\n }\n }\n }\n color = fromStringInternal_(s);\n cache[s] = color;\n ++cacheSize;\n }\n return color;\n });\n})();\n/**\n * Return the color as an array. This function maintains a cache of calculated\n * arrays which means the result should not be modified.\n * @param {Color|string} color Color.\n * @return {Color} Color.\n * @api\n */\nexport function asArray(color) {\n if (Array.isArray(color)) {\n return color;\n }\n else {\n return fromString(color);\n }\n}\n/**\n * @param {string} s String.\n * @private\n * @return {Color} Color.\n */\nfunction fromStringInternal_(s) {\n var r, g, b, a, color;\n if (NAMED_COLOR_RE_.exec(s)) {\n s = fromNamed(s);\n }\n if (HEX_COLOR_RE_.exec(s)) {\n // hex\n var n = s.length - 1; // number of hex digits\n var d = // number of digits per channel\n void 0; // number of digits per channel\n if (n <= 4) {\n d = 1;\n }\n else {\n d = 2;\n }\n var hasAlpha = n === 4 || n === 8;\n r = parseInt(s.substr(1 + 0 * d, d), 16);\n g = parseInt(s.substr(1 + 1 * d, d), 16);\n b = parseInt(s.substr(1 + 2 * d, d), 16);\n if (hasAlpha) {\n a = parseInt(s.substr(1 + 3 * d, d), 16);\n }\n else {\n a = 255;\n }\n if (d == 1) {\n r = (r << 4) + r;\n g = (g << 4) + g;\n b = (b << 4) + b;\n if (hasAlpha) {\n a = (a << 4) + a;\n }\n }\n color = [r, g, b, a / 255];\n }\n else if (s.indexOf('rgba(') == 0) {\n // rgba()\n color = s.slice(5, -1).split(',').map(Number);\n normalize(color);\n }\n else if (s.indexOf('rgb(') == 0) {\n // rgb()\n color = s.slice(4, -1).split(',').map(Number);\n color.push(1);\n normalize(color);\n }\n else {\n assert(false, 14); // Invalid color\n }\n return color;\n}\n/**\n * TODO this function is only used in the test, we probably shouldn't export it\n * @param {Color} color Color.\n * @return {Color} Clamped color.\n */\nexport function normalize(color) {\n color[0] = clamp((color[0] + 0.5) | 0, 0, 255);\n color[1] = clamp((color[1] + 0.5) | 0, 0, 255);\n color[2] = clamp((color[2] + 0.5) | 0, 0, 255);\n color[3] = clamp(color[3], 0, 1);\n return color;\n}\n/**\n * @param {Color} color Color.\n * @return {string} String.\n */\nexport function toString(color) {\n var r = color[0];\n if (r != (r | 0)) {\n r = (r + 0.5) | 0;\n }\n var g = color[1];\n if (g != (g | 0)) {\n g = (g + 0.5) | 0;\n }\n var b = color[2];\n if (b != (b | 0)) {\n b = (b + 0.5) | 0;\n }\n var a = color[3] === undefined ? 1 : color[3];\n return 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';\n}\n/**\n * @param {string} s String.\n * @return {boolean} Whether the string is actually a valid color\n */\nexport function isStringColor(s) {\n if (NAMED_COLOR_RE_.test(s)) {\n s = fromNamed(s);\n }\n return (HEX_COLOR_RE_.test(s) || s.indexOf('rgba(') === 0 || s.indexOf('rgb(') === 0);\n}\n//# sourceMappingURL=color.js.map","/**\n * @module ol/colorlike\n */\nimport { toString } from './color.js';\n/**\n * A type accepted by CanvasRenderingContext2D.fillStyle\n * or CanvasRenderingContext2D.strokeStyle.\n * Represents a color, pattern, or gradient. The origin for patterns and\n * gradients as fill style is an increment of 512 css pixels from map coordinate\n * `[0, 0]`. For seamless repeat patterns, width and height of the pattern image\n * must be a factor of two (2, 4, 8, ..., 512).\n *\n * @typedef {string|CanvasPattern|CanvasGradient} ColorLike\n * @api\n */\n/**\n * @param {import(\"./color.js\").Color|ColorLike} color Color.\n * @return {ColorLike} The color as an {@link ol/colorlike~ColorLike}.\n * @api\n */\nexport function asColorLike(color) {\n if (Array.isArray(color)) {\n return toString(color);\n }\n else {\n return color;\n }\n}\n//# sourceMappingURL=colorlike.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/Control\n */\nimport BaseObject from '../Object.js';\nimport MapEventType from '../MapEventType.js';\nimport { VOID } from '../functions.js';\nimport { listen, unlistenByKey } from '../events.js';\nimport { removeNode } from '../dom.js';\n/**\n * @typedef {Object} Options\n * @property {HTMLElement} [element] The element is the control's\n * container element. This only needs to be specified if you're developing\n * a custom control.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when\n * the control should be re-rendered. This is called in a `requestAnimationFrame`\n * callback.\n * @property {HTMLElement|string} [target] Specify a target if you want\n * the control to be rendered outside of the map's viewport.\n */\n/**\n * @classdesc\n * A control is a visible widget with a DOM element in a fixed position on the\n * screen. They can involve user input (buttons), or be informational only;\n * the position is determined using CSS. By default these are placed in the\n * container with CSS class name `ol-overlaycontainer-stopevent`, but can use\n * any outside DOM element.\n *\n * This is the base class for controls. You can use it for simple custom\n * controls by creating the element with listeners, creating an instance:\n * ```js\n * var myControl = new Control({element: myElement});\n * ```\n * and then adding this to the map.\n *\n * The main advantage of having this as a control rather than a simple separate\n * DOM element is that preventing propagation is handled for you. Controls\n * will also be objects in a {@link module:ol/Collection~Collection}, so you can use their methods.\n *\n * You can also extend this base for your own control class. See\n * examples/custom-controls for an example of how to do this.\n *\n * @api\n */\nvar Control = /** @class */ (function (_super) {\n __extends(Control, _super);\n /**\n * @param {Options} options Control options.\n */\n function Control(options) {\n var _this = _super.call(this) || this;\n var element = options.element;\n if (element && !options.target && !element.style.pointerEvents) {\n element.style.pointerEvents = 'auto';\n }\n /**\n * @protected\n * @type {HTMLElement}\n */\n _this.element = element ? element : null;\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.target_ = null;\n /**\n * @private\n * @type {import(\"../PluggableMap.js\").default}\n */\n _this.map_ = null;\n /**\n * @protected\n * @type {!Array}\n */\n _this.listenerKeys = [];\n if (options.render) {\n _this.render = options.render;\n }\n if (options.target) {\n _this.setTarget(options.target);\n }\n return _this;\n }\n /**\n * Clean up.\n */\n Control.prototype.disposeInternal = function () {\n removeNode(this.element);\n _super.prototype.disposeInternal.call(this);\n };\n /**\n * Get the map associated with this control.\n * @return {import(\"../PluggableMap.js\").default} Map.\n * @api\n */\n Control.prototype.getMap = function () {\n return this.map_;\n };\n /**\n * Remove the control from its current map and attach it to the new map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../PluggableMap.js\").default} map Map.\n * @api\n */\n Control.prototype.setMap = function (map) {\n if (this.map_) {\n removeNode(this.element);\n }\n for (var i = 0, ii = this.listenerKeys.length; i < ii; ++i) {\n unlistenByKey(this.listenerKeys[i]);\n }\n this.listenerKeys.length = 0;\n this.map_ = map;\n if (this.map_) {\n var target = this.target_\n ? this.target_\n : map.getOverlayContainerStopEvent();\n target.appendChild(this.element);\n if (this.render !== VOID) {\n this.listenerKeys.push(listen(map, MapEventType.POSTRENDER, this.render, this));\n }\n map.render();\n }\n };\n /**\n * Renders the control.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @api\n */\n Control.prototype.render = function (mapEvent) { };\n /**\n * This function is used to set a target element for the control. It has no\n * effect if it is called after the control has been added to the map (i.e.\n * after `setMap` is called on the control). If no `target` is set in the\n * options passed to the control constructor and if `setTarget` is not called\n * then the control is added to the map's overlay container.\n * @param {HTMLElement|string} target Target.\n * @api\n */\n Control.prototype.setTarget = function (target) {\n this.target_ =\n typeof target === 'string' ? document.getElementById(target) : target;\n };\n return Control;\n}(BaseObject));\nexport default Control;\n//# sourceMappingURL=Control.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/FullScreen\n */\nimport Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport { CLASS_CONTROL, CLASS_UNSELECTABLE, CLASS_UNSUPPORTED } from '../css.js';\nimport { listen } from '../events.js';\nimport { replaceNode } from '../dom.js';\nvar events = [\n 'fullscreenchange',\n 'webkitfullscreenchange',\n 'MSFullscreenChange',\n];\n/**\n * @enum {string}\n */\nvar FullScreenEventType = {\n /**\n * Triggered after the map entered fullscreen.\n * @event FullScreenEventType#enterfullscreen\n * @api\n */\n ENTERFULLSCREEN: 'enterfullscreen',\n /**\n * Triggered after the map leave fullscreen.\n * @event FullScreenEventType#leavefullscreen\n * @api\n */\n LEAVEFULLSCREEN: 'leavefullscreen',\n};\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-full-screen'] CSS class name.\n * @property {string|Text} [label='\\u2922'] Text label to use for the button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string|Text} [labelActive='\\u00d7'] Text label to use for the\n * button when full-screen is active.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [tipLabel='Toggle full-screen'] Text label to use for the button tip.\n * @property {boolean} [keys=false] Full keyboard access.\n * @property {HTMLElement|string} [target] Specify a target if you want the\n * control to be rendered outside of the map's viewport.\n * @property {HTMLElement|string} [source] The element to be displayed\n * fullscreen. When not provided, the element containing the map viewport will\n * be displayed fullscreen.\n */\n/**\n * @classdesc\n * Provides a button that when clicked fills up the full screen with the map.\n * The full screen source element is by default the element containing the map viewport unless\n * overridden by providing the `source` option. In which case, the dom\n * element introduced using this parameter will be displayed in full screen.\n *\n * When in full screen mode, a close button is shown to exit full screen mode.\n * The [Fullscreen API](http://www.w3.org/TR/fullscreen/) is used to\n * toggle the map in full screen mode.\n *\n * @fires FullScreenEventType#enterfullscreen\n * @fires FullScreenEventType#leavefullscreen\n * @api\n */\nvar FullScreen = /** @class */ (function (_super) {\n __extends(FullScreen, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function FullScreen(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, {\n element: document.createElement('div'),\n target: options.target,\n }) || this;\n /**\n * @private\n * @type {string}\n */\n _this.cssClassName_ =\n options.className !== undefined ? options.className : 'ol-full-screen';\n var label = options.label !== undefined ? options.label : '\\u2922';\n /**\n * @private\n * @type {Text}\n */\n _this.labelNode_ =\n typeof label === 'string' ? document.createTextNode(label) : label;\n var labelActive = options.labelActive !== undefined ? options.labelActive : '\\u00d7';\n /**\n * @private\n * @type {Text}\n */\n _this.labelActiveNode_ =\n typeof labelActive === 'string'\n ? document.createTextNode(labelActive)\n : labelActive;\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.button_ = document.createElement('button');\n var tipLabel = options.tipLabel ? options.tipLabel : 'Toggle full-screen';\n _this.setClassName_(_this.button_, isFullScreen());\n _this.button_.setAttribute('type', 'button');\n _this.button_.title = tipLabel;\n _this.button_.appendChild(_this.labelNode_);\n _this.button_.addEventListener(EventType.CLICK, _this.handleClick_.bind(_this), false);\n var cssClasses = _this.cssClassName_ +\n ' ' +\n CLASS_UNSELECTABLE +\n ' ' +\n CLASS_CONTROL +\n ' ' +\n (!isFullScreenSupported() ? CLASS_UNSUPPORTED : '');\n var element = _this.element;\n element.className = cssClasses;\n element.appendChild(_this.button_);\n /**\n * @private\n * @type {boolean}\n */\n _this.keys_ = options.keys !== undefined ? options.keys : false;\n /**\n * @private\n * @type {HTMLElement|string|undefined}\n */\n _this.source_ = options.source;\n return _this;\n }\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n FullScreen.prototype.handleClick_ = function (event) {\n event.preventDefault();\n this.handleFullScreen_();\n };\n /**\n * @private\n */\n FullScreen.prototype.handleFullScreen_ = function () {\n if (!isFullScreenSupported()) {\n return;\n }\n var map = this.getMap();\n if (!map) {\n return;\n }\n if (isFullScreen()) {\n exitFullScreen();\n }\n else {\n var element = void 0;\n if (this.source_) {\n element =\n typeof this.source_ === 'string'\n ? document.getElementById(this.source_)\n : this.source_;\n }\n else {\n element = map.getTargetElement();\n }\n if (this.keys_) {\n requestFullScreenWithKeys(element);\n }\n else {\n requestFullScreen(element);\n }\n }\n };\n /**\n * @private\n */\n FullScreen.prototype.handleFullScreenChange_ = function () {\n var map = this.getMap();\n if (isFullScreen()) {\n this.setClassName_(this.button_, true);\n replaceNode(this.labelActiveNode_, this.labelNode_);\n this.dispatchEvent(FullScreenEventType.ENTERFULLSCREEN);\n }\n else {\n this.setClassName_(this.button_, false);\n replaceNode(this.labelNode_, this.labelActiveNode_);\n this.dispatchEvent(FullScreenEventType.LEAVEFULLSCREEN);\n }\n if (map) {\n map.updateSize();\n }\n };\n /**\n * @param {HTMLElement} element Target element\n * @param {boolean} fullscreen True if fullscreen class name should be active\n * @private\n */\n FullScreen.prototype.setClassName_ = function (element, fullscreen) {\n var activeClassName = this.cssClassName_ + '-true';\n var inactiveClassName = this.cssClassName_ + '-false';\n var nextClassName = fullscreen ? activeClassName : inactiveClassName;\n element.classList.remove(activeClassName);\n element.classList.remove(inactiveClassName);\n element.classList.add(nextClassName);\n };\n /**\n * Remove the control from its current map and attach it to the new map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../PluggableMap.js\").default} map Map.\n * @api\n */\n FullScreen.prototype.setMap = function (map) {\n _super.prototype.setMap.call(this, map);\n if (map) {\n for (var i = 0, ii = events.length; i < ii; ++i) {\n this.listenerKeys.push(listen(document, events[i], this.handleFullScreenChange_, this));\n }\n }\n };\n return FullScreen;\n}(Control));\n/**\n * @return {boolean} Fullscreen is supported by the current platform.\n */\nfunction isFullScreenSupported() {\n var body = document.body;\n return !!(body['webkitRequestFullscreen'] ||\n (body['msRequestFullscreen'] && document['msFullscreenEnabled']) ||\n (body.requestFullscreen && document.fullscreenEnabled));\n}\n/**\n * @return {boolean} Element is currently in fullscreen.\n */\nfunction isFullScreen() {\n return !!(document['webkitIsFullScreen'] ||\n document['msFullscreenElement'] ||\n document.fullscreenElement);\n}\n/**\n * Request to fullscreen an element.\n * @param {HTMLElement} element Element to request fullscreen\n */\nfunction requestFullScreen(element) {\n if (element.requestFullscreen) {\n element.requestFullscreen();\n }\n else if (element['msRequestFullscreen']) {\n element['msRequestFullscreen']();\n }\n else if (element['webkitRequestFullscreen']) {\n element['webkitRequestFullscreen']();\n }\n}\n/**\n * Request to fullscreen an element with keyboard input.\n * @param {HTMLElement} element Element to request fullscreen\n */\nfunction requestFullScreenWithKeys(element) {\n if (element['webkitRequestFullscreen']) {\n element['webkitRequestFullscreen']();\n }\n else {\n requestFullScreen(element);\n }\n}\n/**\n * Exit fullscreen.\n */\nfunction exitFullScreen() {\n if (document.exitFullscreen) {\n document.exitFullscreen();\n }\n else if (document['msExitFullscreen']) {\n document['msExitFullscreen']();\n }\n else if (document['webkitExitFullscreen']) {\n document['webkitExitFullscreen']();\n }\n}\nexport default FullScreen;\n//# sourceMappingURL=FullScreen.js.map","/**\n * @module ol/control/MousePosition\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport Control from './Control.js';\nimport EventType from '../pointer/EventType.js';\nimport { getChangeEventType } from '../Object.js';\nimport { get as getProjection, getTransformFromProjections, getUserProjection, identityTransform, } from '../proj.js';\nimport { listen } from '../events.js';\n/**\n * @type {string}\n */\nvar PROJECTION = 'projection';\n/**\n * @type {string}\n */\nvar COORDINATE_FORMAT = 'coordinateFormat';\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-mouse-position'] CSS class name.\n * @property {import(\"../coordinate.js\").CoordinateFormat} [coordinateFormat] Coordinate format.\n * @property {import(\"../proj.js\").ProjectionLike} [projection] Projection. Default is the view projection.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when the\n * control should be re-rendered. This is called in a `requestAnimationFrame`\n * callback.\n * @property {HTMLElement|string} [target] Specify a target if you want the\n * control to be rendered outside of the map's viewport.\n * @property {string} [undefinedHTML=' '] Markup to show when coordinates are not\n * available (e.g. when the pointer leaves the map viewport). By default, the last position\n * will be replaced with `' '` (` `) when the pointer leaves the viewport. To\n * retain the last rendered position, set this option to something falsey (like an empty\n * string `''`).\n */\n/**\n * @classdesc\n * A control to show the 2D coordinates of the mouse cursor. By default, these\n * are in the view projection, but can be in any supported projection.\n * By default the control is shown in the top right corner of the map, but this\n * can be changed by using the css selector `.ol-mouse-position`.\n *\n * On touch devices, which usually do not have a mouse cursor, the coordinates\n * of the currently touched position are shown.\n *\n * @api\n */\nvar MousePosition = /** @class */ (function (_super) {\n __extends(MousePosition, _super);\n /**\n * @param {Options=} opt_options Mouse position options.\n */\n function MousePosition(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n var element = document.createElement('div');\n element.className =\n options.className !== undefined ? options.className : 'ol-mouse-position';\n _this = _super.call(this, {\n element: element,\n render: options.render,\n target: options.target,\n }) || this;\n _this.addEventListener(getChangeEventType(PROJECTION), _this.handleProjectionChanged_);\n if (options.coordinateFormat) {\n _this.setCoordinateFormat(options.coordinateFormat);\n }\n if (options.projection) {\n _this.setProjection(options.projection);\n }\n /**\n * @private\n * @type {string}\n */\n _this.undefinedHTML_ =\n options.undefinedHTML !== undefined ? options.undefinedHTML : ' ';\n /**\n * @private\n * @type {boolean}\n */\n _this.renderOnMouseOut_ = !!_this.undefinedHTML_;\n /**\n * @private\n * @type {string}\n */\n _this.renderedHTML_ = element.innerHTML;\n /**\n * @private\n * @type {?import(\"../proj/Projection.js\").default}\n */\n _this.mapProjection_ = null;\n /**\n * @private\n * @type {?import(\"../proj.js\").TransformFunction}\n */\n _this.transform_ = null;\n return _this;\n }\n /**\n * @private\n */\n MousePosition.prototype.handleProjectionChanged_ = function () {\n this.transform_ = null;\n };\n /**\n * Return the coordinate format type used to render the current position or\n * undefined.\n * @return {import(\"../coordinate.js\").CoordinateFormat|undefined} The format to render the current\n * position in.\n * @observable\n * @api\n */\n MousePosition.prototype.getCoordinateFormat = function () {\n return /** @type {import(\"../coordinate.js\").CoordinateFormat|undefined} */ (this.get(COORDINATE_FORMAT));\n };\n /**\n * Return the projection that is used to report the mouse position.\n * @return {import(\"../proj/Projection.js\").default|undefined} The projection to report mouse\n * position in.\n * @observable\n * @api\n */\n MousePosition.prototype.getProjection = function () {\n return /** @type {import(\"../proj/Projection.js\").default|undefined} */ (this.get(PROJECTION));\n };\n /**\n * @param {MouseEvent} event Browser event.\n * @protected\n */\n MousePosition.prototype.handleMouseMove = function (event) {\n var map = this.getMap();\n this.updateHTML_(map.getEventPixel(event));\n };\n /**\n * @param {Event} event Browser event.\n * @protected\n */\n MousePosition.prototype.handleMouseOut = function (event) {\n this.updateHTML_(null);\n };\n /**\n * Remove the control from its current map and attach it to the new map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../PluggableMap.js\").default} map Map.\n * @api\n */\n MousePosition.prototype.setMap = function (map) {\n _super.prototype.setMap.call(this, map);\n if (map) {\n var viewport = map.getViewport();\n this.listenerKeys.push(listen(viewport, EventType.POINTERMOVE, this.handleMouseMove, this));\n if (this.renderOnMouseOut_) {\n this.listenerKeys.push(listen(viewport, EventType.POINTEROUT, this.handleMouseOut, this));\n }\n }\n };\n /**\n * Set the coordinate format type used to render the current position.\n * @param {import(\"../coordinate.js\").CoordinateFormat} format The format to render the current\n * position in.\n * @observable\n * @api\n */\n MousePosition.prototype.setCoordinateFormat = function (format) {\n this.set(COORDINATE_FORMAT, format);\n };\n /**\n * Set the projection that is used to report the mouse position.\n * @param {import(\"../proj.js\").ProjectionLike} projection The projection to report mouse\n * position in.\n * @observable\n * @api\n */\n MousePosition.prototype.setProjection = function (projection) {\n this.set(PROJECTION, getProjection(projection));\n };\n /**\n * @param {?import(\"../pixel.js\").Pixel} pixel Pixel.\n * @private\n */\n MousePosition.prototype.updateHTML_ = function (pixel) {\n var html = this.undefinedHTML_;\n if (pixel && this.mapProjection_) {\n if (!this.transform_) {\n var projection = this.getProjection();\n if (projection) {\n this.transform_ = getTransformFromProjections(this.mapProjection_, projection);\n }\n else {\n this.transform_ = identityTransform;\n }\n }\n var map = this.getMap();\n var coordinate = map.getCoordinateFromPixelInternal(pixel);\n if (coordinate) {\n var userProjection = getUserProjection();\n if (userProjection) {\n this.transform_ = getTransformFromProjections(this.mapProjection_, userProjection);\n }\n this.transform_(coordinate, coordinate);\n var coordinateFormat = this.getCoordinateFormat();\n if (coordinateFormat) {\n html = coordinateFormat(coordinate);\n }\n else {\n html = coordinate.toString();\n }\n }\n }\n if (!this.renderedHTML_ || html !== this.renderedHTML_) {\n this.element.innerHTML = html;\n this.renderedHTML_ = html;\n }\n };\n /**\n * Update the projection. Rendering of the coordinates is done in\n * `handleMouseMove` and `handleMouseUp`.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @override\n */\n MousePosition.prototype.render = function (mapEvent) {\n var frameState = mapEvent.frameState;\n if (!frameState) {\n this.mapProjection_ = null;\n }\n else {\n if (this.mapProjection_ != frameState.viewState.projection) {\n this.mapProjection_ = frameState.viewState.projection;\n this.transform_ = null;\n }\n }\n };\n return MousePosition;\n}(Control));\nexport default MousePosition;\n//# sourceMappingURL=MousePosition.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/control/ScaleLine\n */\nimport Control from './Control.js';\nimport ProjUnits from '../proj/Units.js';\nimport { CLASS_UNSELECTABLE } from '../css.js';\nimport { METERS_PER_UNIT, getPointResolution } from '../proj.js';\nimport { assert } from '../asserts.js';\nimport { getChangeEventType } from '../Object.js';\n/**\n * @type {string}\n */\nvar UNITS_PROP = 'units';\n/**\n * Units for the scale line. Supported values are `'degrees'`, `'imperial'`,\n * `'nautical'`, `'metric'`, `'us'`.\n * @enum {string}\n */\nexport var Units = {\n DEGREES: 'degrees',\n IMPERIAL: 'imperial',\n NAUTICAL: 'nautical',\n METRIC: 'metric',\n US: 'us',\n};\n/**\n * @const\n * @type {Array}\n */\nvar LEADING_DIGITS = [1, 2, 5];\n/**\n * @const\n * @type {number}\n */\nvar DEFAULT_DPI = 25.4 / 0.28;\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-scale-line'] CSS Class name.\n * @property {number} [minWidth=64] Minimum width in pixels at the OGC default dpi. The width will be\n * adjusted to match the dpi used.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when the control\n * should be re-rendered. This is called in a `requestAnimationFrame` callback.\n * @property {HTMLElement|string} [target] Specify a target if you want the control\n * to be rendered outside of the map's viewport.\n * @property {import(\"./ScaleLine.js\").Units|string} [units='metric'] Units.\n * @property {boolean} [bar=false] Render scalebars instead of a line.\n * @property {number} [steps=4] Number of steps the scalebar should use. Use even numbers\n * for best results. Only applies when `bar` is `true`.\n * @property {boolean} [text=false] Render the text scale above of the scalebar. Only applies\n * when `bar` is `true`.\n * @property {number|undefined} [dpi=undefined] dpi of output device such as printer. Only applies\n * when `bar` is `true`. If undefined the OGC default screen pixel size of 0.28mm will be assumed.\n */\n/**\n * @classdesc\n * A control displaying rough y-axis distances, calculated for the center of the\n * viewport. For conformal projections (e.g. EPSG:3857, the default view\n * projection in OpenLayers), the scale is valid for all directions.\n * No scale line will be shown when the y-axis distance of a pixel at the\n * viewport center cannot be calculated in the view projection.\n * By default the scale line will show in the bottom left portion of the map,\n * but this can be changed by using the css selector `.ol-scale-line`.\n * When specifying `bar` as `true`, a scalebar will be rendered instead\n * of a scaleline.\n *\n * @api\n */\nvar ScaleLine = /** @class */ (function (_super) {\n __extends(ScaleLine, _super);\n /**\n * @param {Options=} opt_options Scale line options.\n */\n function ScaleLine(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n var className = options.className !== undefined\n ? options.className\n : options.bar\n ? 'ol-scale-bar'\n : 'ol-scale-line';\n _this = _super.call(this, {\n element: document.createElement('div'),\n render: options.render,\n target: options.target,\n }) || this;\n /**\n * @private\n * @type {HTMLElement}\n */\n _this.innerElement_ = document.createElement('div');\n _this.innerElement_.className = className + '-inner';\n _this.element.className = className + ' ' + CLASS_UNSELECTABLE;\n _this.element.appendChild(_this.innerElement_);\n /**\n * @private\n * @type {?import(\"../View.js\").State}\n */\n _this.viewState_ = null;\n /**\n * @private\n * @type {number}\n */\n _this.minWidth_ = options.minWidth !== undefined ? options.minWidth : 64;\n /**\n * @private\n * @type {boolean}\n */\n _this.renderedVisible_ = false;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.renderedWidth_ = undefined;\n /**\n * @private\n * @type {string}\n */\n _this.renderedHTML_ = '';\n _this.addEventListener(getChangeEventType(UNITS_PROP), _this.handleUnitsChanged_);\n _this.setUnits(options.units || Units.METRIC);\n /**\n * @private\n * @type {boolean}\n */\n _this.scaleBar_ = options.bar || false;\n /**\n * @private\n * @type {number}\n */\n _this.scaleBarSteps_ = options.steps || 4;\n /**\n * @private\n * @type {boolean}\n */\n _this.scaleBarText_ = options.text || false;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.dpi_ = options.dpi || undefined;\n return _this;\n }\n /**\n * Return the units to use in the scale line.\n * @return {import(\"./ScaleLine.js\").Units} The units\n * to use in the scale line.\n * @observable\n * @api\n */\n ScaleLine.prototype.getUnits = function () {\n return this.get(UNITS_PROP);\n };\n /**\n * @private\n */\n ScaleLine.prototype.handleUnitsChanged_ = function () {\n this.updateElement_();\n };\n /**\n * Set the units to use in the scale line.\n * @param {import(\"./ScaleLine.js\").Units} units The units to use in the scale line.\n * @observable\n * @api\n */\n ScaleLine.prototype.setUnits = function (units) {\n this.set(UNITS_PROP, units);\n };\n /**\n * Specify the dpi of output device such as printer.\n * @param {number|undefined} dpi The dpi of output device.\n * @api\n */\n ScaleLine.prototype.setDpi = function (dpi) {\n this.dpi_ = dpi;\n };\n /**\n * @private\n */\n ScaleLine.prototype.updateElement_ = function () {\n var viewState = this.viewState_;\n if (!viewState) {\n if (this.renderedVisible_) {\n this.element.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n var center = viewState.center;\n var projection = viewState.projection;\n var units = this.getUnits();\n var pointResolutionUnits = units == Units.DEGREES ? ProjUnits.DEGREES : ProjUnits.METERS;\n var pointResolution = getPointResolution(projection, viewState.resolution, center, pointResolutionUnits);\n var minWidth = (this.minWidth_ * (this.dpi_ || DEFAULT_DPI)) / DEFAULT_DPI;\n var nominalCount = minWidth * pointResolution;\n var suffix = '';\n if (units == Units.DEGREES) {\n var metersPerDegree = METERS_PER_UNIT[ProjUnits.DEGREES];\n nominalCount *= metersPerDegree;\n if (nominalCount < metersPerDegree / 60) {\n suffix = '\\u2033'; // seconds\n pointResolution *= 3600;\n }\n else if (nominalCount < metersPerDegree) {\n suffix = '\\u2032'; // minutes\n pointResolution *= 60;\n }\n else {\n suffix = '\\u00b0'; // degrees\n }\n }\n else if (units == Units.IMPERIAL) {\n if (nominalCount < 0.9144) {\n suffix = 'in';\n pointResolution /= 0.0254;\n }\n else if (nominalCount < 1609.344) {\n suffix = 'ft';\n pointResolution /= 0.3048;\n }\n else {\n suffix = 'mi';\n pointResolution /= 1609.344;\n }\n }\n else if (units == Units.NAUTICAL) {\n pointResolution /= 1852;\n suffix = 'nm';\n }\n else if (units == Units.METRIC) {\n if (nominalCount < 0.001) {\n suffix = 'μm';\n pointResolution *= 1000000;\n }\n else if (nominalCount < 1) {\n suffix = 'mm';\n pointResolution *= 1000;\n }\n else if (nominalCount < 1000) {\n suffix = 'm';\n }\n else {\n suffix = 'km';\n pointResolution /= 1000;\n }\n }\n else if (units == Units.US) {\n if (nominalCount < 0.9144) {\n suffix = 'in';\n pointResolution *= 39.37;\n }\n else if (nominalCount < 1609.344) {\n suffix = 'ft';\n pointResolution /= 0.30480061;\n }\n else {\n suffix = 'mi';\n pointResolution /= 1609.3472;\n }\n }\n else {\n assert(false, 33); // Invalid units\n }\n var i = 3 * Math.floor(Math.log(minWidth * pointResolution) / Math.log(10));\n var count, width, decimalCount;\n while (true) {\n decimalCount = Math.floor(i / 3);\n var decimal = Math.pow(10, decimalCount);\n count = LEADING_DIGITS[((i % 3) + 3) % 3] * decimal;\n width = Math.round(count / pointResolution);\n if (isNaN(width)) {\n this.element.style.display = 'none';\n this.renderedVisible_ = false;\n return;\n }\n else if (width >= minWidth) {\n break;\n }\n ++i;\n }\n var html;\n if (this.scaleBar_) {\n html = this.createScaleBar(width, count, suffix);\n }\n else {\n html = count.toFixed(decimalCount < 0 ? -decimalCount : 0) + ' ' + suffix;\n }\n if (this.renderedHTML_ != html) {\n this.innerElement_.innerHTML = html;\n this.renderedHTML_ = html;\n }\n if (this.renderedWidth_ != width) {\n this.innerElement_.style.width = width + 'px';\n this.renderedWidth_ = width;\n }\n if (!this.renderedVisible_) {\n this.element.style.display = '';\n this.renderedVisible_ = true;\n }\n };\n /**\n * @private\n * @param {number} width The current width of the scalebar.\n * @param {number} scale The current scale.\n * @param {string} suffix The suffix to append to the scale text.\n * @returns {string} The stringified HTML of the scalebar.\n */\n ScaleLine.prototype.createScaleBar = function (width, scale, suffix) {\n var mapScale = '1 : ' + Math.round(this.getScaleForResolution()).toLocaleString();\n var scaleSteps = [];\n var stepWidth = width / this.scaleBarSteps_;\n var backgroundColor = '#ffffff';\n for (var i = 0; i < this.scaleBarSteps_; i++) {\n if (i === 0) {\n // create the first marker at position 0\n scaleSteps.push(this.createMarker('absolute', i));\n }\n scaleSteps.push('
    ' +\n '
    ' +\n '
    ' +\n this.createMarker('relative', i) +\n /*render text every second step, except when only 2 steps */\n (i % 2 === 0 || this.scaleBarSteps_ === 2\n ? this.createStepText(i, width, false, scale, suffix)\n : '') +\n '
    ');\n if (i === this.scaleBarSteps_ - 1) {\n {\n /*render text at the end */\n }\n scaleSteps.push(this.createStepText(i + 1, width, true, scale, suffix));\n }\n // switch colors of steps between black and white\n if (backgroundColor === '#ffffff') {\n backgroundColor = '#000000';\n }\n else {\n backgroundColor = '#ffffff';\n }\n }\n var scaleBarText;\n if (this.scaleBarText_) {\n scaleBarText =\n '
    ' +\n mapScale +\n '
    ';\n }\n else {\n scaleBarText = '';\n }\n var container = '
    ' +\n scaleBarText +\n scaleSteps.join('') +\n '
    ';\n return container;\n };\n /**\n * Creates a marker at given position\n * @param {string} position - The position, absolute or relative\n * @param {number} i - The iterator\n * @returns {string} The stringified div containing the marker\n */\n ScaleLine.prototype.createMarker = function (position, i) {\n var top = position === 'absolute' ? 3 : -10;\n return ('
    ');\n };\n /**\n * Creates the label for a marker marker at given position\n * @param {number} i - The iterator\n * @param {number} width - The width the scalebar will currently use\n * @param {boolean} isLast - Flag indicating if we add the last step text\n * @param {number} scale - The current scale for the whole scalebar\n * @param {string} suffix - The suffix for the scale\n * @returns {string} The stringified div containing the step text\n */\n ScaleLine.prototype.createStepText = function (i, width, isLast, scale, suffix) {\n var length = i === 0 ? 0 : Math.round((scale / this.scaleBarSteps_) * i * 100) / 100;\n var lengthString = length + (i === 0 ? '' : ' ' + suffix);\n var margin = i === 0 ? -3 : (width / this.scaleBarSteps_) * -1;\n var minWidth = i === 0 ? 0 : (width / this.scaleBarSteps_) * 2;\n return ('
    ' +\n lengthString +\n '
    ');\n };\n /**\n * Returns the appropriate scale for the given resolution and units.\n * @return {number} The appropriate scale.\n */\n ScaleLine.prototype.getScaleForResolution = function () {\n var resolution = getPointResolution(this.viewState_.projection, this.viewState_.resolution, this.viewState_.center);\n var dpi = this.dpi_ || DEFAULT_DPI;\n var mpu = this.viewState_.projection.getMetersPerUnit();\n var inchesPerMeter = 39.37;\n return parseFloat(resolution.toString()) * mpu * inchesPerMeter * dpi;\n };\n /**\n * Update the scale line element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @override\n */\n ScaleLine.prototype.render = function (mapEvent) {\n var frameState = mapEvent.frameState;\n if (!frameState) {\n this.viewState_ = null;\n }\n else {\n this.viewState_ = frameState.viewState;\n }\n this.updateElement_();\n };\n return ScaleLine;\n}(Control));\nexport default ScaleLine;\n//# sourceMappingURL=ScaleLine.js.map","/**\n * @module ol/coordinate\n */\nimport { getWidth } from './extent.js';\nimport { modulo } from './math.js';\nimport { padNumber } from './string.js';\n/**\n * An array of numbers representing an xy coordinate. Example: `[16, 48]`.\n * @typedef {Array} Coordinate\n * @api\n */\n/**\n * A function that takes a {@link module:ol/coordinate~Coordinate} and\n * transforms it into a `{string}`.\n *\n * @typedef {function((Coordinate|undefined)): string} CoordinateFormat\n * @api\n */\n/**\n * Add `delta` to `coordinate`. `coordinate` is modified in place and returned\n * by the function.\n *\n * Example:\n *\n * import {add} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * add(coord, [-2, 4]);\n * // coord is now [5.85, 51.983333]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {Coordinate} delta Delta.\n * @return {Coordinate} The input coordinate adjusted by\n * the given delta.\n * @api\n */\nexport function add(coordinate, delta) {\n coordinate[0] += +delta[0];\n coordinate[1] += +delta[1];\n return coordinate;\n}\n/**\n * Calculates the point closest to the passed coordinate on the passed circle.\n *\n * @param {Coordinate} coordinate The coordinate.\n * @param {import(\"./geom/Circle.js\").default} circle The circle.\n * @return {Coordinate} Closest point on the circumference.\n */\nexport function closestOnCircle(coordinate, circle) {\n var r = circle.getRadius();\n var center = circle.getCenter();\n var x0 = center[0];\n var y0 = center[1];\n var x1 = coordinate[0];\n var y1 = coordinate[1];\n var dx = x1 - x0;\n var dy = y1 - y0;\n if (dx === 0 && dy === 0) {\n dx = 1;\n }\n var d = Math.sqrt(dx * dx + dy * dy);\n var x = x0 + (r * dx) / d;\n var y = y0 + (r * dy) / d;\n return [x, y];\n}\n/**\n * Calculates the point closest to the passed coordinate on the passed segment.\n * This is the foot of the perpendicular of the coordinate to the segment when\n * the foot is on the segment, or the closest segment coordinate when the foot\n * is outside the segment.\n *\n * @param {Coordinate} coordinate The coordinate.\n * @param {Array} segment The two coordinates\n * of the segment.\n * @return {Coordinate} The foot of the perpendicular of\n * the coordinate to the segment.\n */\nexport function closestOnSegment(coordinate, segment) {\n var x0 = coordinate[0];\n var y0 = coordinate[1];\n var start = segment[0];\n var end = segment[1];\n var x1 = start[0];\n var y1 = start[1];\n var x2 = end[0];\n var y2 = end[1];\n var dx = x2 - x1;\n var dy = y2 - y1;\n var along = dx === 0 && dy === 0\n ? 0\n : (dx * (x0 - x1) + dy * (y0 - y1)) / (dx * dx + dy * dy || 0);\n var x, y;\n if (along <= 0) {\n x = x1;\n y = y1;\n }\n else if (along >= 1) {\n x = x2;\n y = y2;\n }\n else {\n x = x1 + along * dx;\n y = y1 + along * dy;\n }\n return [x, y];\n}\n/**\n * Returns a {@link module:ol/coordinate~CoordinateFormat} function that can be\n * used to format\n * a {Coordinate} to a string.\n *\n * Example without specifying the fractional digits:\n *\n * import {createStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var stringifyFunc = createStringXY();\n * var out = stringifyFunc(coord);\n * // out is now '8, 48'\n *\n * Example with explicitly specifying 2 fractional digits:\n *\n * import {createStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var stringifyFunc = createStringXY(2);\n * var out = stringifyFunc(coord);\n * // out is now '7.85, 47.98'\n *\n * @param {number=} opt_fractionDigits The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {CoordinateFormat} Coordinate format.\n * @api\n */\nexport function createStringXY(opt_fractionDigits) {\n return (\n /**\n * @param {Coordinate} coordinate Coordinate.\n * @return {string} String XY.\n */\n function (coordinate) {\n return toStringXY(coordinate, opt_fractionDigits);\n });\n}\n/**\n * @param {string} hemispheres Hemispheres.\n * @param {number} degrees Degrees.\n * @param {number=} opt_fractionDigits The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} String.\n */\nexport function degreesToStringHDMS(hemispheres, degrees, opt_fractionDigits) {\n var normalizedDegrees = modulo(degrees + 180, 360) - 180;\n var x = Math.abs(3600 * normalizedDegrees);\n var dflPrecision = opt_fractionDigits || 0;\n var precision = Math.pow(10, dflPrecision);\n var deg = Math.floor(x / 3600);\n var min = Math.floor((x - deg * 3600) / 60);\n var sec = x - deg * 3600 - min * 60;\n sec = Math.ceil(sec * precision) / precision;\n if (sec >= 60) {\n sec = 0;\n min += 1;\n }\n if (min >= 60) {\n min = 0;\n deg += 1;\n }\n return (deg +\n '\\u00b0 ' +\n padNumber(min, 2) +\n '\\u2032 ' +\n padNumber(sec, 2, dflPrecision) +\n '\\u2033' +\n (normalizedDegrees == 0\n ? ''\n : ' ' + hemispheres.charAt(normalizedDegrees < 0 ? 1 : 0)));\n}\n/**\n * Transforms the given {@link module:ol/coordinate~Coordinate} to a string\n * using the given string template. The strings `{x}` and `{y}` in the template\n * will be replaced with the first and second coordinate values respectively.\n *\n * Example without specifying the fractional digits:\n *\n * import {format} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var template = 'Coordinate is ({x}|{y}).';\n * var out = format(coord, template);\n * // out is now 'Coordinate is (8|48).'\n *\n * Example explicitly specifying the fractional digits:\n *\n * import {format} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var template = 'Coordinate is ({x}|{y}).';\n * var out = format(coord, template, 2);\n * // out is now 'Coordinate is (7.85|47.98).'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {string} template A template string with `{x}` and `{y}` placeholders\n * that will be replaced by first and second coordinate values.\n * @param {number=} opt_fractionDigits The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} Formatted coordinate.\n * @api\n */\nexport function format(coordinate, template, opt_fractionDigits) {\n if (coordinate) {\n return template\n .replace('{x}', coordinate[0].toFixed(opt_fractionDigits))\n .replace('{y}', coordinate[1].toFixed(opt_fractionDigits));\n }\n else {\n return '';\n }\n}\n/**\n * @param {Coordinate} coordinate1 First coordinate.\n * @param {Coordinate} coordinate2 Second coordinate.\n * @return {boolean} The two coordinates are equal.\n */\nexport function equals(coordinate1, coordinate2) {\n var equals = true;\n for (var i = coordinate1.length - 1; i >= 0; --i) {\n if (coordinate1[i] != coordinate2[i]) {\n equals = false;\n break;\n }\n }\n return equals;\n}\n/**\n * Rotate `coordinate` by `angle`. `coordinate` is modified in place and\n * returned by the function.\n *\n * Example:\n *\n * import {rotate} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var rotateRadians = Math.PI / 2; // 90 degrees\n * rotate(coord, rotateRadians);\n * // coord is now [-47.983333, 7.85]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} angle Angle in radian.\n * @return {Coordinate} Coordinate.\n * @api\n */\nexport function rotate(coordinate, angle) {\n var cosAngle = Math.cos(angle);\n var sinAngle = Math.sin(angle);\n var x = coordinate[0] * cosAngle - coordinate[1] * sinAngle;\n var y = coordinate[1] * cosAngle + coordinate[0] * sinAngle;\n coordinate[0] = x;\n coordinate[1] = y;\n return coordinate;\n}\n/**\n * Scale `coordinate` by `scale`. `coordinate` is modified in place and returned\n * by the function.\n *\n * Example:\n *\n * import {scale as scaleCoordinate} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var scale = 1.2;\n * scaleCoordinate(coord, scale);\n * // coord is now [9.42, 57.5799996]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} scale Scale factor.\n * @return {Coordinate} Coordinate.\n */\nexport function scale(coordinate, scale) {\n coordinate[0] *= scale;\n coordinate[1] *= scale;\n return coordinate;\n}\n/**\n * @param {Coordinate} coord1 First coordinate.\n * @param {Coordinate} coord2 Second coordinate.\n * @return {number} Squared distance between coord1 and coord2.\n */\nexport function squaredDistance(coord1, coord2) {\n var dx = coord1[0] - coord2[0];\n var dy = coord1[1] - coord2[1];\n return dx * dx + dy * dy;\n}\n/**\n * @param {Coordinate} coord1 First coordinate.\n * @param {Coordinate} coord2 Second coordinate.\n * @return {number} Distance between coord1 and coord2.\n */\nexport function distance(coord1, coord2) {\n return Math.sqrt(squaredDistance(coord1, coord2));\n}\n/**\n * Calculate the squared distance from a coordinate to a line segment.\n *\n * @param {Coordinate} coordinate Coordinate of the point.\n * @param {Array} segment Line segment (2\n * coordinates).\n * @return {number} Squared distance from the point to the line segment.\n */\nexport function squaredDistanceToSegment(coordinate, segment) {\n return squaredDistance(coordinate, closestOnSegment(coordinate, segment));\n}\n/**\n * Format a geographic coordinate with the hemisphere, degrees, minutes, and\n * seconds.\n *\n * Example without specifying fractional digits:\n *\n * import {toStringHDMS} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringHDMS(coord);\n * // out is now '47° 58′ 60″ N 7° 50′ 60″ E'\n *\n * Example explicitly specifying 1 fractional digit:\n *\n * import {toStringHDMS} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringHDMS(coord, 1);\n * // out is now '47° 58′ 60.0″ N 7° 50′ 60.0″ E'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number=} opt_fractionDigits The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} Hemisphere, degrees, minutes and seconds.\n * @api\n */\nexport function toStringHDMS(coordinate, opt_fractionDigits) {\n if (coordinate) {\n return (degreesToStringHDMS('NS', coordinate[1], opt_fractionDigits) +\n ' ' +\n degreesToStringHDMS('EW', coordinate[0], opt_fractionDigits));\n }\n else {\n return '';\n }\n}\n/**\n * Format a coordinate as a comma delimited string.\n *\n * Example without specifying fractional digits:\n *\n * import {toStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringXY(coord);\n * // out is now '8, 48'\n *\n * Example explicitly specifying 1 fractional digit:\n *\n * import {toStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringXY(coord, 1);\n * // out is now '7.8, 48.0'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number=} opt_fractionDigits The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} XY.\n * @api\n */\nexport function toStringXY(coordinate, opt_fractionDigits) {\n return format(coordinate, '{x}, {y}', opt_fractionDigits);\n}\n/**\n * Modifies the provided coordinate in-place to be within the real world\n * extent. The lower projection extent boundary is inclusive, the upper one\n * exclusive.\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @return {Coordinate} The coordinate within the real world extent.\n */\nexport function wrapX(coordinate, projection) {\n if (projection.canWrapX()) {\n var worldWidth = getWidth(projection.getExtent());\n var worldsAway = getWorldsAway(coordinate, projection, worldWidth);\n if (worldsAway) {\n coordinate[0] -= worldsAway * worldWidth;\n }\n }\n return coordinate;\n}\n/**\n * @param {Coordinate} coordinate Coordinate.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @param {number=} opt_sourceExtentWidth Width of the source extent.\n * @return {number} Offset in world widths.\n */\nexport function getWorldsAway(coordinate, projection, opt_sourceExtentWidth) {\n var projectionExtent = projection.getExtent();\n var worldsAway = 0;\n if (projection.canWrapX() &&\n (coordinate[0] < projectionExtent[0] || coordinate[0] > projectionExtent[2])) {\n var sourceExtentWidth = opt_sourceExtentWidth || getWidth(projectionExtent);\n worldsAway = Math.floor((coordinate[0] - projectionExtent[0]) / sourceExtentWidth);\n }\n return worldsAway;\n}\n//# sourceMappingURL=coordinate.js.map","/**\n * @module ol/css\n */\n/**\n * @typedef {Object} FontParameters\n * @property {string} style\n * @property {string} variant\n * @property {string} weight\n * @property {string} size\n * @property {string} lineHeight\n * @property {string} family\n * @property {Array} families\n */\n/**\n * The CSS class for hidden feature.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_HIDDEN = 'ol-hidden';\n/**\n * The CSS class that we'll give the DOM elements to have them selectable.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_SELECTABLE = 'ol-selectable';\n/**\n * The CSS class that we'll give the DOM elements to have them unselectable.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_UNSELECTABLE = 'ol-unselectable';\n/**\n * The CSS class for unsupported feature.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_UNSUPPORTED = 'ol-unsupported';\n/**\n * The CSS class for controls.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_CONTROL = 'ol-control';\n/**\n * The CSS class that we'll give the DOM elements that are collapsed, i.e.\n * to those elements which usually can be expanded.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_COLLAPSED = 'ol-collapsed';\n/**\n * From http://stackoverflow.com/questions/10135697/regex-to-parse-any-css-font\n * @type {RegExp}\n */\nvar fontRegEx = new RegExp([\n '^\\\\s*(?=(?:(?:[-a-z]+\\\\s*){0,2}(italic|oblique))?)',\n '(?=(?:(?:[-a-z]+\\\\s*){0,2}(small-caps))?)',\n '(?=(?:(?:[-a-z]+\\\\s*){0,2}(bold(?:er)?|lighter|[1-9]00 ))?)',\n '(?:(?:normal|\\\\1|\\\\2|\\\\3)\\\\s*){0,3}((?:xx?-)?',\n '(?:small|large)|medium|smaller|larger|[\\\\.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx]))',\n '(?:\\\\s*\\\\/\\\\s*(normal|[\\\\.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx])?))',\n '?\\\\s*([-,\\\\\"\\\\\\'\\\\sa-z]+?)\\\\s*$',\n].join(''), 'i');\nvar fontRegExMatchIndex = [\n 'style',\n 'variant',\n 'weight',\n 'size',\n 'lineHeight',\n 'family',\n];\n/**\n * Get the list of font families from a font spec. Note that this doesn't work\n * for font families that have commas in them.\n * @param {string} fontSpec The CSS font property.\n * @return {FontParameters} The font parameters (or null if the input spec is invalid).\n */\nexport var getFontParameters = function (fontSpec) {\n var match = fontSpec.match(fontRegEx);\n if (!match) {\n return null;\n }\n var style = /** @type {FontParameters} */ ({\n lineHeight: 'normal',\n size: '1.2em',\n style: 'normal',\n weight: 'normal',\n variant: 'normal',\n });\n for (var i = 0, ii = fontRegExMatchIndex.length; i < ii; ++i) {\n var value = match[i + 1];\n if (value !== undefined) {\n style[fontRegExMatchIndex[i]] = value;\n }\n }\n style.families = style.family.split(/,\\s?/);\n return style;\n};\n//# sourceMappingURL=css.js.map","import { WORKER_OFFSCREEN_CANVAS } from './has.js';\n/**\n * @module ol/dom\n */\n//FIXME Move this function to the canvas module\n/**\n * Create an html canvas element and returns its 2d context.\n * @param {number=} opt_width Canvas width.\n * @param {number=} opt_height Canvas height.\n * @param {Array=} opt_canvasPool Canvas pool to take existing canvas from.\n * @return {CanvasRenderingContext2D} The context.\n */\nexport function createCanvasContext2D(opt_width, opt_height, opt_canvasPool) {\n var canvas = opt_canvasPool && opt_canvasPool.length\n ? opt_canvasPool.shift()\n : WORKER_OFFSCREEN_CANVAS\n ? new OffscreenCanvas(opt_width || 300, opt_height || 300)\n : document.createElement('canvas');\n if (opt_width) {\n canvas.width = opt_width;\n }\n if (opt_height) {\n canvas.height = opt_height;\n }\n //FIXME Allow OffscreenCanvasRenderingContext2D as return type\n return /** @type {CanvasRenderingContext2D} */ (canvas.getContext('2d'));\n}\n/**\n * Get the current computed width for the given element including margin,\n * padding and border.\n * Equivalent to jQuery's `$(el).outerWidth(true)`.\n * @param {!HTMLElement} element Element.\n * @return {number} The width.\n */\nexport function outerWidth(element) {\n var width = element.offsetWidth;\n var style = getComputedStyle(element);\n width += parseInt(style.marginLeft, 10) + parseInt(style.marginRight, 10);\n return width;\n}\n/**\n * Get the current computed height for the given element including margin,\n * padding and border.\n * Equivalent to jQuery's `$(el).outerHeight(true)`.\n * @param {!HTMLElement} element Element.\n * @return {number} The height.\n */\nexport function outerHeight(element) {\n var height = element.offsetHeight;\n var style = getComputedStyle(element);\n height += parseInt(style.marginTop, 10) + parseInt(style.marginBottom, 10);\n return height;\n}\n/**\n * @param {Node} newNode Node to replace old node\n * @param {Node} oldNode The node to be replaced\n */\nexport function replaceNode(newNode, oldNode) {\n var parent = oldNode.parentNode;\n if (parent) {\n parent.replaceChild(newNode, oldNode);\n }\n}\n/**\n * @param {Node} node The node to remove.\n * @returns {Node} The node that was removed or null.\n */\nexport function removeNode(node) {\n return node && node.parentNode ? node.parentNode.removeChild(node) : null;\n}\n/**\n * @param {Node} node The node to remove the children from.\n */\nexport function removeChildren(node) {\n while (node.lastChild) {\n node.removeChild(node.lastChild);\n }\n}\n/**\n * Transform the children of a parent node so they match the\n * provided list of children. This function aims to efficiently\n * remove, add, and reorder child nodes while maintaining a simple\n * implementation (it is not guaranteed to minimize DOM operations).\n * @param {Node} node The parent node whose children need reworking.\n * @param {Array} children The desired children.\n */\nexport function replaceChildren(node, children) {\n var oldChildren = node.childNodes;\n for (var i = 0; true; ++i) {\n var oldChild = oldChildren[i];\n var newChild = children[i];\n // check if our work is done\n if (!oldChild && !newChild) {\n break;\n }\n // check if children match\n if (oldChild === newChild) {\n continue;\n }\n // check if a new child needs to be added\n if (!oldChild) {\n node.appendChild(newChild);\n continue;\n }\n // check if an old child needs to be removed\n if (!newChild) {\n node.removeChild(oldChild);\n --i;\n continue;\n }\n // reorder\n node.insertBefore(newChild, oldChild);\n }\n}\n//# sourceMappingURL=dom.js.map","/**\n * @module ol/easing\n */\n/**\n * Start slow and speed up.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function easeIn(t) {\n return Math.pow(t, 3);\n}\n/**\n * Start fast and slow down.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function easeOut(t) {\n return 1 - easeIn(1 - t);\n}\n/**\n * Start slow, speed up, and then slow down again.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function inAndOut(t) {\n return 3 * t * t - 2 * t * t * t;\n}\n/**\n * Maintain a constant speed over time.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function linear(t) {\n return t;\n}\n/**\n * Start slow, speed up, and at the very end slow down again. This has the\n * same general behavior as {@link module:ol/easing~inAndOut}, but the final\n * slowdown is delayed.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function upAndDown(t) {\n if (t < 0.5) {\n return inAndOut(2 * t);\n }\n else {\n return 1 - inAndOut(2 * (t - 0.5));\n }\n}\n//# sourceMappingURL=easing.js.map","/**\n * @module ol/events\n */\nimport { clear } from './obj.js';\n/**\n * Key to use with {@link module:ol/Observable~Observable#unByKey}.\n * @typedef {Object} EventsKey\n * @property {ListenerFunction} listener\n * @property {import(\"./events/Target.js\").EventTargetLike} target\n * @property {string} type\n * @api\n */\n/**\n * Listener function. This function is called with an event object as argument.\n * When the function returns `false`, event propagation will stop.\n *\n * @typedef {function((Event|import(\"./events/Event.js\").default)): (void|boolean)} ListenerFunction\n * @api\n */\n/**\n * @typedef {Object} ListenerObject\n * @property {ListenerFunction} handleEvent\n */\n/**\n * @typedef {ListenerFunction|ListenerObject} Listener\n */\n/**\n * Registers an event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` to a `this` object, and returns\n * a key for use with {@link module:ol/events~unlistenByKey}.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object=} opt_this Object referenced by the `this` keyword in the\n * listener. Default is the `target`.\n * @param {boolean=} opt_once If true, add the listener as one-off listener.\n * @return {EventsKey} Unique key for the listener.\n */\nexport function listen(target, type, listener, opt_this, opt_once) {\n if (opt_this && opt_this !== target) {\n listener = listener.bind(opt_this);\n }\n if (opt_once) {\n var originalListener_1 = listener;\n listener = function () {\n target.removeEventListener(type, listener);\n originalListener_1.apply(this, arguments);\n };\n }\n var eventsKey = {\n target: target,\n type: type,\n listener: listener,\n };\n target.addEventListener(type, listener);\n return eventsKey;\n}\n/**\n * Registers a one-off event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` as self-unregistering listener\n * to a `this` object, and returns a key for use with\n * {@link module:ol/events~unlistenByKey} in case the listener needs to be\n * unregistered before it is called.\n *\n * When {@link module:ol/events~listen} is called with the same arguments after this\n * function, the self-unregistering listener will be turned into a permanent\n * listener.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object=} opt_this Object referenced by the `this` keyword in the\n * listener. Default is the `target`.\n * @return {EventsKey} Key for unlistenByKey.\n */\nexport function listenOnce(target, type, listener, opt_this) {\n return listen(target, type, listener, opt_this, true);\n}\n/**\n * Unregisters event listeners on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * The argument passed to this function is the key returned from\n * {@link module:ol/events~listen} or {@link module:ol/events~listenOnce}.\n *\n * @param {EventsKey} key The key.\n */\nexport function unlistenByKey(key) {\n if (key && key.target) {\n key.target.removeEventListener(key.type, key.listener);\n clear(key);\n }\n}\n//# sourceMappingURL=events.js.map","/**\n * @module ol/events/Event\n */\n/**\n * @classdesc\n * Stripped down implementation of the W3C DOM Level 2 Event interface.\n * See https://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-interface.\n *\n * This implementation only provides `type` and `target` properties, and\n * `stopPropagation` and `preventDefault` methods. It is meant as base class\n * for higher level events defined in the library, and works with\n * {@link module:ol/events/Target~Target}.\n */\nvar BaseEvent = /** @class */ (function () {\n /**\n * @param {string} type Type.\n */\n function BaseEvent(type) {\n /**\n * @type {boolean}\n */\n this.propagationStopped;\n /**\n * The event type.\n * @type {string}\n * @api\n */\n this.type = type;\n /**\n * The event target.\n * @type {Object}\n * @api\n */\n this.target = null;\n }\n /**\n * Stop event propagation.\n * @api\n */\n BaseEvent.prototype.preventDefault = function () {\n this.propagationStopped = true;\n };\n /**\n * Stop event propagation.\n * @api\n */\n BaseEvent.prototype.stopPropagation = function () {\n this.propagationStopped = true;\n };\n return BaseEvent;\n}());\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function stopPropagation(evt) {\n evt.stopPropagation();\n}\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function preventDefault(evt) {\n evt.preventDefault();\n}\nexport default BaseEvent;\n//# sourceMappingURL=Event.js.map","/**\n * @module ol/events/EventType\n */\n/**\n * @enum {string}\n * @const\n */\nexport default {\n /**\n * Generic change event. Triggered when the revision counter is increased.\n * @event module:ol/events/Event~BaseEvent#change\n * @api\n */\n CHANGE: 'change',\n /**\n * Generic error event. Triggered when an error occurs.\n * @event module:ol/events/Event~BaseEvent#error\n * @api\n */\n ERROR: 'error',\n BLUR: 'blur',\n CLEAR: 'clear',\n CONTEXTMENU: 'contextmenu',\n CLICK: 'click',\n DBLCLICK: 'dblclick',\n DRAGENTER: 'dragenter',\n DRAGOVER: 'dragover',\n DROP: 'drop',\n FOCUS: 'focus',\n KEYDOWN: 'keydown',\n KEYPRESS: 'keypress',\n LOAD: 'load',\n RESIZE: 'resize',\n TOUCHMOVE: 'touchmove',\n WHEEL: 'wheel',\n};\n//# sourceMappingURL=EventType.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/events/Target\n */\nimport Disposable from '../Disposable.js';\nimport Event from './Event.js';\nimport { VOID } from '../functions.js';\nimport { clear } from '../obj.js';\n/**\n * @typedef {EventTarget|Target} EventTargetLike\n */\n/**\n * @classdesc\n * A simplified implementation of the W3C DOM Level 2 EventTarget interface.\n * See https://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-EventTarget.\n *\n * There are two important simplifications compared to the specification:\n *\n * 1. The handling of `useCapture` in `addEventListener` and\n * `removeEventListener`. There is no real capture model.\n * 2. The handling of `stopPropagation` and `preventDefault` on `dispatchEvent`.\n * There is no event target hierarchy. When a listener calls\n * `stopPropagation` or `preventDefault` on an event object, it means that no\n * more listeners after this one will be called. Same as when the listener\n * returns false.\n */\nvar Target = /** @class */ (function (_super) {\n __extends(Target, _super);\n /**\n * @param {*=} opt_target Default event target for dispatched events.\n */\n function Target(opt_target) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {*}\n */\n _this.eventTarget_ = opt_target;\n /**\n * @private\n * @type {Object}\n */\n _this.pendingRemovals_ = null;\n /**\n * @private\n * @type {Object}\n */\n _this.dispatching_ = null;\n /**\n * @private\n * @type {Object>}\n */\n _this.listeners_ = null;\n return _this;\n }\n /**\n * @param {string} type Type.\n * @param {import(\"../events.js\").Listener} listener Listener.\n */\n Target.prototype.addEventListener = function (type, listener) {\n if (!type || !listener) {\n return;\n }\n var listeners = this.listeners_ || (this.listeners_ = {});\n var listenersForType = listeners[type] || (listeners[type] = []);\n if (listenersForType.indexOf(listener) === -1) {\n listenersForType.push(listener);\n }\n };\n /**\n * Dispatches an event and calls all listeners listening for events\n * of this type. The event parameter can either be a string or an\n * Object with a `type` property.\n *\n * @param {import(\"./Event.js\").default|string} event Event object.\n * @return {boolean|undefined} `false` if anyone called preventDefault on the\n * event object or if any of the listeners returned false.\n * @api\n */\n Target.prototype.dispatchEvent = function (event) {\n /** @type {import(\"./Event.js\").default|Event} */\n var evt = typeof event === 'string' ? new Event(event) : event;\n var type = evt.type;\n if (!evt.target) {\n evt.target = this.eventTarget_ || this;\n }\n var listeners = this.listeners_ && this.listeners_[type];\n var propagate;\n if (listeners) {\n var dispatching = this.dispatching_ || (this.dispatching_ = {});\n var pendingRemovals = this.pendingRemovals_ || (this.pendingRemovals_ = {});\n if (!(type in dispatching)) {\n dispatching[type] = 0;\n pendingRemovals[type] = 0;\n }\n ++dispatching[type];\n for (var i = 0, ii = listeners.length; i < ii; ++i) {\n if ('handleEvent' in listeners[i]) {\n propagate = /** @type {import(\"../events.js\").ListenerObject} */ (listeners[i]).handleEvent(evt);\n }\n else {\n propagate = /** @type {import(\"../events.js\").ListenerFunction} */ (listeners[i]).call(this, evt);\n }\n if (propagate === false || evt.propagationStopped) {\n propagate = false;\n break;\n }\n }\n --dispatching[type];\n if (dispatching[type] === 0) {\n var pr = pendingRemovals[type];\n delete pendingRemovals[type];\n while (pr--) {\n this.removeEventListener(type, VOID);\n }\n delete dispatching[type];\n }\n return propagate;\n }\n };\n /**\n * Clean up.\n */\n Target.prototype.disposeInternal = function () {\n this.listeners_ && clear(this.listeners_);\n };\n /**\n * Get the listeners for a specified event type. Listeners are returned in the\n * order that they will be called in.\n *\n * @param {string} type Type.\n * @return {Array|undefined} Listeners.\n */\n Target.prototype.getListeners = function (type) {\n return (this.listeners_ && this.listeners_[type]) || undefined;\n };\n /**\n * @param {string=} opt_type Type. If not provided,\n * `true` will be returned if this event target has any listeners.\n * @return {boolean} Has listeners.\n */\n Target.prototype.hasListener = function (opt_type) {\n if (!this.listeners_) {\n return false;\n }\n return opt_type\n ? opt_type in this.listeners_\n : Object.keys(this.listeners_).length > 0;\n };\n /**\n * @param {string} type Type.\n * @param {import(\"../events.js\").Listener} listener Listener.\n */\n Target.prototype.removeEventListener = function (type, listener) {\n var listeners = this.listeners_ && this.listeners_[type];\n if (listeners) {\n var index = listeners.indexOf(listener);\n if (index !== -1) {\n if (this.pendingRemovals_ && type in this.pendingRemovals_) {\n // make listener a no-op, and remove later in #dispatchEvent()\n listeners[index] = VOID;\n ++this.pendingRemovals_[type];\n }\n else {\n listeners.splice(index, 1);\n if (listeners.length === 0) {\n delete this.listeners_[type];\n }\n }\n }\n }\n };\n return Target;\n}(Disposable));\nexport default Target;\n//# sourceMappingURL=Target.js.map","/**\n * @module ol/extent\n */\nimport Corner from './extent/Corner.js';\nimport Relationship from './extent/Relationship.js';\nimport { assert } from './asserts.js';\n/**\n * An array of numbers representing an extent: `[minx, miny, maxx, maxy]`.\n * @typedef {Array} Extent\n * @api\n */\n/**\n * Build an extent that includes all given coordinates.\n *\n * @param {Array} coordinates Coordinates.\n * @return {Extent} Bounding extent.\n * @api\n */\nexport function boundingExtent(coordinates) {\n var extent = createEmpty();\n for (var i = 0, ii = coordinates.length; i < ii; ++i) {\n extendCoordinate(extent, coordinates[i]);\n }\n return extent;\n}\n/**\n * @param {Array} xs Xs.\n * @param {Array} ys Ys.\n * @param {Extent=} opt_extent Destination extent.\n * @private\n * @return {Extent} Extent.\n */\nfunction _boundingExtentXYs(xs, ys, opt_extent) {\n var minX = Math.min.apply(null, xs);\n var minY = Math.min.apply(null, ys);\n var maxX = Math.max.apply(null, xs);\n var maxY = Math.max.apply(null, ys);\n return createOrUpdate(minX, minY, maxX, maxY, opt_extent);\n}\n/**\n * Return extent increased by the provided value.\n * @param {Extent} extent Extent.\n * @param {number} value The amount by which the extent should be buffered.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n * @api\n */\nexport function buffer(extent, value, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = extent[0] - value;\n opt_extent[1] = extent[1] - value;\n opt_extent[2] = extent[2] + value;\n opt_extent[3] = extent[3] + value;\n return opt_extent;\n }\n else {\n return [\n extent[0] - value,\n extent[1] - value,\n extent[2] + value,\n extent[3] + value,\n ];\n }\n}\n/**\n * Creates a clone of an extent.\n *\n * @param {Extent} extent Extent to clone.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} The clone.\n */\nexport function clone(extent, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = extent[0];\n opt_extent[1] = extent[1];\n opt_extent[2] = extent[2];\n opt_extent[3] = extent[3];\n return opt_extent;\n }\n else {\n return extent.slice();\n }\n}\n/**\n * @param {Extent} extent Extent.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {number} Closest squared distance.\n */\nexport function closestSquaredDistanceXY(extent, x, y) {\n var dx, dy;\n if (x < extent[0]) {\n dx = extent[0] - x;\n }\n else if (extent[2] < x) {\n dx = x - extent[2];\n }\n else {\n dx = 0;\n }\n if (y < extent[1]) {\n dy = extent[1] - y;\n }\n else if (extent[3] < y) {\n dy = y - extent[3];\n }\n else {\n dy = 0;\n }\n return dx * dx + dy * dy;\n}\n/**\n * Check if the passed coordinate is contained or on the edge of the extent.\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} The coordinate is contained in the extent.\n * @api\n */\nexport function containsCoordinate(extent, coordinate) {\n return containsXY(extent, coordinate[0], coordinate[1]);\n}\n/**\n * Check if one extent contains another.\n *\n * An extent is deemed contained if it lies completely within the other extent,\n * including if they share one or more edges.\n *\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {boolean} The second extent is contained by or on the edge of the\n * first.\n * @api\n */\nexport function containsExtent(extent1, extent2) {\n return (extent1[0] <= extent2[0] &&\n extent2[2] <= extent1[2] &&\n extent1[1] <= extent2[1] &&\n extent2[3] <= extent1[3]);\n}\n/**\n * Check if the passed coordinate is contained or on the edge of the extent.\n *\n * @param {Extent} extent Extent.\n * @param {number} x X coordinate.\n * @param {number} y Y coordinate.\n * @return {boolean} The x, y values are contained in the extent.\n * @api\n */\nexport function containsXY(extent, x, y) {\n return extent[0] <= x && x <= extent[2] && extent[1] <= y && y <= extent[3];\n}\n/**\n * Get the relationship between a coordinate and extent.\n * @param {Extent} extent The extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate The coordinate.\n * @return {import(\"./extent/Relationship.js\").default} The relationship (bitwise compare with\n * import(\"./extent/Relationship.js\").Relationship).\n */\nexport function coordinateRelationship(extent, coordinate) {\n var minX = extent[0];\n var minY = extent[1];\n var maxX = extent[2];\n var maxY = extent[3];\n var x = coordinate[0];\n var y = coordinate[1];\n var relationship = Relationship.UNKNOWN;\n if (x < minX) {\n relationship = relationship | Relationship.LEFT;\n }\n else if (x > maxX) {\n relationship = relationship | Relationship.RIGHT;\n }\n if (y < minY) {\n relationship = relationship | Relationship.BELOW;\n }\n else if (y > maxY) {\n relationship = relationship | Relationship.ABOVE;\n }\n if (relationship === Relationship.UNKNOWN) {\n relationship = Relationship.INTERSECTING;\n }\n return relationship;\n}\n/**\n * Create an empty extent.\n * @return {Extent} Empty extent.\n * @api\n */\nexport function createEmpty() {\n return [Infinity, Infinity, -Infinity, -Infinity];\n}\n/**\n * Create a new extent or update the provided extent.\n * @param {number} minX Minimum X.\n * @param {number} minY Minimum Y.\n * @param {number} maxX Maximum X.\n * @param {number} maxY Maximum Y.\n * @param {Extent=} opt_extent Destination extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdate(minX, minY, maxX, maxY, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = minX;\n opt_extent[1] = minY;\n opt_extent[2] = maxX;\n opt_extent[3] = maxY;\n return opt_extent;\n }\n else {\n return [minX, minY, maxX, maxY];\n }\n}\n/**\n * Create a new empty extent or make the provided one empty.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateEmpty(opt_extent) {\n return createOrUpdate(Infinity, Infinity, -Infinity, -Infinity, opt_extent);\n}\n/**\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromCoordinate(coordinate, opt_extent) {\n var x = coordinate[0];\n var y = coordinate[1];\n return createOrUpdate(x, y, x, y, opt_extent);\n}\n/**\n * @param {Array} coordinates Coordinates.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromCoordinates(coordinates, opt_extent) {\n var extent = createOrUpdateEmpty(opt_extent);\n return extendCoordinates(extent, coordinates);\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromFlatCoordinates(flatCoordinates, offset, end, stride, opt_extent) {\n var extent = createOrUpdateEmpty(opt_extent);\n return extendFlatCoordinates(extent, flatCoordinates, offset, end, stride);\n}\n/**\n * @param {Array>} rings Rings.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromRings(rings, opt_extent) {\n var extent = createOrUpdateEmpty(opt_extent);\n return extendRings(extent, rings);\n}\n/**\n * Determine if two extents are equivalent.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {boolean} The two extents are equivalent.\n * @api\n */\nexport function equals(extent1, extent2) {\n return (extent1[0] == extent2[0] &&\n extent1[2] == extent2[2] &&\n extent1[1] == extent2[1] &&\n extent1[3] == extent2[3]);\n}\n/**\n * Determine if two extents are approximately equivalent.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @param {number} tolerance Tolerance in extent coordinate units.\n * @return {boolean} The two extents differ by less than the tolerance.\n */\nexport function approximatelyEquals(extent1, extent2, tolerance) {\n return (Math.abs(extent1[0] - extent2[0]) < tolerance &&\n Math.abs(extent1[2] - extent2[2]) < tolerance &&\n Math.abs(extent1[1] - extent2[1]) < tolerance &&\n Math.abs(extent1[3] - extent2[3]) < tolerance);\n}\n/**\n * Modify an extent to include another extent.\n * @param {Extent} extent1 The extent to be modified.\n * @param {Extent} extent2 The extent that will be included in the first.\n * @return {Extent} A reference to the first (extended) extent.\n * @api\n */\nexport function extend(extent1, extent2) {\n if (extent2[0] < extent1[0]) {\n extent1[0] = extent2[0];\n }\n if (extent2[2] > extent1[2]) {\n extent1[2] = extent2[2];\n }\n if (extent2[1] < extent1[1]) {\n extent1[1] = extent2[1];\n }\n if (extent2[3] > extent1[3]) {\n extent1[3] = extent2[3];\n }\n return extent1;\n}\n/**\n * @param {Extent} extent Extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n */\nexport function extendCoordinate(extent, coordinate) {\n if (coordinate[0] < extent[0]) {\n extent[0] = coordinate[0];\n }\n if (coordinate[0] > extent[2]) {\n extent[2] = coordinate[0];\n }\n if (coordinate[1] < extent[1]) {\n extent[1] = coordinate[1];\n }\n if (coordinate[1] > extent[3]) {\n extent[3] = coordinate[1];\n }\n}\n/**\n * @param {Extent} extent Extent.\n * @param {Array} coordinates Coordinates.\n * @return {Extent} Extent.\n */\nexport function extendCoordinates(extent, coordinates) {\n for (var i = 0, ii = coordinates.length; i < ii; ++i) {\n extendCoordinate(extent, coordinates[i]);\n }\n return extent;\n}\n/**\n * @param {Extent} extent Extent.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {Extent} Extent.\n */\nexport function extendFlatCoordinates(extent, flatCoordinates, offset, end, stride) {\n for (; offset < end; offset += stride) {\n extendXY(extent, flatCoordinates[offset], flatCoordinates[offset + 1]);\n }\n return extent;\n}\n/**\n * @param {Extent} extent Extent.\n * @param {Array>} rings Rings.\n * @return {Extent} Extent.\n */\nexport function extendRings(extent, rings) {\n for (var i = 0, ii = rings.length; i < ii; ++i) {\n extendCoordinates(extent, rings[i]);\n }\n return extent;\n}\n/**\n * @param {Extent} extent Extent.\n * @param {number} x X.\n * @param {number} y Y.\n */\nexport function extendXY(extent, x, y) {\n extent[0] = Math.min(extent[0], x);\n extent[1] = Math.min(extent[1], y);\n extent[2] = Math.max(extent[2], x);\n extent[3] = Math.max(extent[3], y);\n}\n/**\n * This function calls `callback` for each corner of the extent. If the\n * callback returns a truthy value the function returns that value\n * immediately. Otherwise the function returns `false`.\n * @param {Extent} extent Extent.\n * @param {function(import(\"./coordinate.js\").Coordinate): S} callback Callback.\n * @return {S|boolean} Value.\n * @template S\n */\nexport function forEachCorner(extent, callback) {\n var val;\n val = callback(getBottomLeft(extent));\n if (val) {\n return val;\n }\n val = callback(getBottomRight(extent));\n if (val) {\n return val;\n }\n val = callback(getTopRight(extent));\n if (val) {\n return val;\n }\n val = callback(getTopLeft(extent));\n if (val) {\n return val;\n }\n return false;\n}\n/**\n * Get the size of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Area.\n * @api\n */\nexport function getArea(extent) {\n var area = 0;\n if (!isEmpty(extent)) {\n area = getWidth(extent) * getHeight(extent);\n }\n return area;\n}\n/**\n * Get the bottom left coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Bottom left coordinate.\n * @api\n */\nexport function getBottomLeft(extent) {\n return [extent[0], extent[1]];\n}\n/**\n * Get the bottom right coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Bottom right coordinate.\n * @api\n */\nexport function getBottomRight(extent) {\n return [extent[2], extent[1]];\n}\n/**\n * Get the center coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Center.\n * @api\n */\nexport function getCenter(extent) {\n return [(extent[0] + extent[2]) / 2, (extent[1] + extent[3]) / 2];\n}\n/**\n * Get a corner coordinate of an extent.\n * @param {Extent} extent Extent.\n * @param {import(\"./extent/Corner.js\").default} corner Corner.\n * @return {import(\"./coordinate.js\").Coordinate} Corner coordinate.\n */\nexport function getCorner(extent, corner) {\n var coordinate;\n if (corner === Corner.BOTTOM_LEFT) {\n coordinate = getBottomLeft(extent);\n }\n else if (corner === Corner.BOTTOM_RIGHT) {\n coordinate = getBottomRight(extent);\n }\n else if (corner === Corner.TOP_LEFT) {\n coordinate = getTopLeft(extent);\n }\n else if (corner === Corner.TOP_RIGHT) {\n coordinate = getTopRight(extent);\n }\n else {\n assert(false, 13); // Invalid corner\n }\n return coordinate;\n}\n/**\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {number} Enlarged area.\n */\nexport function getEnlargedArea(extent1, extent2) {\n var minX = Math.min(extent1[0], extent2[0]);\n var minY = Math.min(extent1[1], extent2[1]);\n var maxX = Math.max(extent1[2], extent2[2]);\n var maxY = Math.max(extent1[3], extent2[3]);\n return (maxX - minX) * (maxY - minY);\n}\n/**\n * @param {import(\"./coordinate.js\").Coordinate} center Center.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @param {import(\"./size.js\").Size} size Size.\n * @param {Extent=} opt_extent Destination extent.\n * @return {Extent} Extent.\n */\nexport function getForViewAndSize(center, resolution, rotation, size, opt_extent) {\n var dx = (resolution * size[0]) / 2;\n var dy = (resolution * size[1]) / 2;\n var cosRotation = Math.cos(rotation);\n var sinRotation = Math.sin(rotation);\n var xCos = dx * cosRotation;\n var xSin = dx * sinRotation;\n var yCos = dy * cosRotation;\n var ySin = dy * sinRotation;\n var x = center[0];\n var y = center[1];\n var x0 = x - xCos + ySin;\n var x1 = x - xCos - ySin;\n var x2 = x + xCos - ySin;\n var x3 = x + xCos + ySin;\n var y0 = y - xSin - yCos;\n var y1 = y - xSin + yCos;\n var y2 = y + xSin + yCos;\n var y3 = y + xSin - yCos;\n return createOrUpdate(Math.min(x0, x1, x2, x3), Math.min(y0, y1, y2, y3), Math.max(x0, x1, x2, x3), Math.max(y0, y1, y2, y3), opt_extent);\n}\n/**\n * Get the height of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Height.\n * @api\n */\nexport function getHeight(extent) {\n return extent[3] - extent[1];\n}\n/**\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {number} Intersection area.\n */\nexport function getIntersectionArea(extent1, extent2) {\n var intersection = getIntersection(extent1, extent2);\n return getArea(intersection);\n}\n/**\n * Get the intersection of two extents.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @param {Extent=} opt_extent Optional extent to populate with intersection.\n * @return {Extent} Intersecting extent.\n * @api\n */\nexport function getIntersection(extent1, extent2, opt_extent) {\n var intersection = opt_extent ? opt_extent : createEmpty();\n if (intersects(extent1, extent2)) {\n if (extent1[0] > extent2[0]) {\n intersection[0] = extent1[0];\n }\n else {\n intersection[0] = extent2[0];\n }\n if (extent1[1] > extent2[1]) {\n intersection[1] = extent1[1];\n }\n else {\n intersection[1] = extent2[1];\n }\n if (extent1[2] < extent2[2]) {\n intersection[2] = extent1[2];\n }\n else {\n intersection[2] = extent2[2];\n }\n if (extent1[3] < extent2[3]) {\n intersection[3] = extent1[3];\n }\n else {\n intersection[3] = extent2[3];\n }\n }\n else {\n createOrUpdateEmpty(intersection);\n }\n return intersection;\n}\n/**\n * @param {Extent} extent Extent.\n * @return {number} Margin.\n */\nexport function getMargin(extent) {\n return getWidth(extent) + getHeight(extent);\n}\n/**\n * Get the size (width, height) of an extent.\n * @param {Extent} extent The extent.\n * @return {import(\"./size.js\").Size} The extent size.\n * @api\n */\nexport function getSize(extent) {\n return [extent[2] - extent[0], extent[3] - extent[1]];\n}\n/**\n * Get the top left coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Top left coordinate.\n * @api\n */\nexport function getTopLeft(extent) {\n return [extent[0], extent[3]];\n}\n/**\n * Get the top right coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Top right coordinate.\n * @api\n */\nexport function getTopRight(extent) {\n return [extent[2], extent[3]];\n}\n/**\n * Get the width of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Width.\n * @api\n */\nexport function getWidth(extent) {\n return extent[2] - extent[0];\n}\n/**\n * Determine if one extent intersects another.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent.\n * @return {boolean} The two extents intersect.\n * @api\n */\nexport function intersects(extent1, extent2) {\n return (extent1[0] <= extent2[2] &&\n extent1[2] >= extent2[0] &&\n extent1[1] <= extent2[3] &&\n extent1[3] >= extent2[1]);\n}\n/**\n * Determine if an extent is empty.\n * @param {Extent} extent Extent.\n * @return {boolean} Is empty.\n * @api\n */\nexport function isEmpty(extent) {\n return extent[2] < extent[0] || extent[3] < extent[1];\n}\n/**\n * @param {Extent} extent Extent.\n * @param {Extent=} opt_extent Extent.\n * @return {Extent} Extent.\n */\nexport function returnOrUpdate(extent, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = extent[0];\n opt_extent[1] = extent[1];\n opt_extent[2] = extent[2];\n opt_extent[3] = extent[3];\n return opt_extent;\n }\n else {\n return extent;\n }\n}\n/**\n * @param {Extent} extent Extent.\n * @param {number} value Value.\n */\nexport function scaleFromCenter(extent, value) {\n var deltaX = ((extent[2] - extent[0]) / 2) * (value - 1);\n var deltaY = ((extent[3] - extent[1]) / 2) * (value - 1);\n extent[0] -= deltaX;\n extent[2] += deltaX;\n extent[1] -= deltaY;\n extent[3] += deltaY;\n}\n/**\n * Determine if the segment between two coordinates intersects (crosses,\n * touches, or is contained by) the provided extent.\n * @param {Extent} extent The extent.\n * @param {import(\"./coordinate.js\").Coordinate} start Segment start coordinate.\n * @param {import(\"./coordinate.js\").Coordinate} end Segment end coordinate.\n * @return {boolean} The segment intersects the extent.\n */\nexport function intersectsSegment(extent, start, end) {\n var intersects = false;\n var startRel = coordinateRelationship(extent, start);\n var endRel = coordinateRelationship(extent, end);\n if (startRel === Relationship.INTERSECTING ||\n endRel === Relationship.INTERSECTING) {\n intersects = true;\n }\n else {\n var minX = extent[0];\n var minY = extent[1];\n var maxX = extent[2];\n var maxY = extent[3];\n var startX = start[0];\n var startY = start[1];\n var endX = end[0];\n var endY = end[1];\n var slope = (endY - startY) / (endX - startX);\n var x = void 0, y = void 0;\n if (!!(endRel & Relationship.ABOVE) && !(startRel & Relationship.ABOVE)) {\n // potentially intersects top\n x = endX - (endY - maxY) / slope;\n intersects = x >= minX && x <= maxX;\n }\n if (!intersects &&\n !!(endRel & Relationship.RIGHT) &&\n !(startRel & Relationship.RIGHT)) {\n // potentially intersects right\n y = endY - (endX - maxX) * slope;\n intersects = y >= minY && y <= maxY;\n }\n if (!intersects &&\n !!(endRel & Relationship.BELOW) &&\n !(startRel & Relationship.BELOW)) {\n // potentially intersects bottom\n x = endX - (endY - minY) / slope;\n intersects = x >= minX && x <= maxX;\n }\n if (!intersects &&\n !!(endRel & Relationship.LEFT) &&\n !(startRel & Relationship.LEFT)) {\n // potentially intersects left\n y = endY - (endX - minX) * slope;\n intersects = y >= minY && y <= maxY;\n }\n }\n return intersects;\n}\n/**\n * Apply a transform function to the extent.\n * @param {Extent} extent Extent.\n * @param {import(\"./proj.js\").TransformFunction} transformFn Transform function.\n * Called with `[minX, minY, maxX, maxY]` extent coordinates.\n * @param {Extent=} opt_extent Destination extent.\n * @param {number=} opt_stops Number of stops per side used for the transform.\n * By default only the corners are used.\n * @return {Extent} Extent.\n * @api\n */\nexport function applyTransform(extent, transformFn, opt_extent, opt_stops) {\n var coordinates = [];\n if (opt_stops > 1) {\n var width = extent[2] - extent[0];\n var height = extent[3] - extent[1];\n for (var i = 0; i < opt_stops; ++i) {\n coordinates.push(extent[0] + (width * i) / opt_stops, extent[1], extent[2], extent[1] + (height * i) / opt_stops, extent[2] - (width * i) / opt_stops, extent[3], extent[0], extent[3] - (height * i) / opt_stops);\n }\n }\n else {\n coordinates = [\n extent[0],\n extent[1],\n extent[2],\n extent[1],\n extent[2],\n extent[3],\n extent[0],\n extent[3],\n ];\n }\n transformFn(coordinates, coordinates, 2);\n var xs = [];\n var ys = [];\n for (var i = 0, l = coordinates.length; i < l; i += 2) {\n xs.push(coordinates[i]);\n ys.push(coordinates[i + 1]);\n }\n return _boundingExtentXYs(xs, ys, opt_extent);\n}\n/**\n * Modifies the provided extent in-place to be within the real world\n * extent.\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./proj/Projection.js\").default} projection Projection\n * @return {Extent} The extent within the real world extent.\n */\nexport function wrapX(extent, projection) {\n var projectionExtent = projection.getExtent();\n var center = getCenter(extent);\n if (projection.canWrapX() &&\n (center[0] < projectionExtent[0] || center[0] >= projectionExtent[2])) {\n var worldWidth = getWidth(projectionExtent);\n var worldsAway = Math.floor((center[0] - projectionExtent[0]) / worldWidth);\n var offset = worldsAway * worldWidth;\n extent[0] -= offset;\n extent[2] -= offset;\n }\n return extent;\n}\n//# sourceMappingURL=extent.js.map","/**\n * @module ol/extent/Corner\n */\n/**\n * Extent corner.\n * @enum {string}\n */\nexport default {\n BOTTOM_LEFT: 'bottom-left',\n BOTTOM_RIGHT: 'bottom-right',\n TOP_LEFT: 'top-left',\n TOP_RIGHT: 'top-right',\n};\n//# sourceMappingURL=Corner.js.map","/**\n * @module ol/extent/Relationship\n */\n/**\n * Relationship to an extent.\n * @enum {number}\n */\nexport default {\n UNKNOWN: 0,\n INTERSECTING: 1,\n ABOVE: 2,\n RIGHT: 4,\n BELOW: 8,\n LEFT: 16,\n};\n//# sourceMappingURL=Relationship.js.map","/**\n * @module ol/format/Feature\n */\nimport Units from '../proj/Units.js';\nimport { abstract } from '../util.js';\nimport { assign } from '../obj.js';\nimport { equivalent as equivalentProjection, get as getProjection, transformExtent, } from '../proj.js';\n/**\n * @typedef {Object} ReadOptions\n * @property {import(\"../proj.js\").ProjectionLike} [dataProjection] Projection of the data we are reading.\n * If not provided, the projection will be derived from the data (where possible) or\n * the `dataProjection` of the format is assigned (where set). If the projection\n * can not be derived from the data and if no `dataProjection` is set for a format,\n * the features will not be reprojected.\n * @property {import(\"../extent.js\").Extent} [extent] Tile extent in map units of the tile being read.\n * This is only required when reading data with tile pixels as geometry units. When configured,\n * a `dataProjection` with `TILE_PIXELS` as `units` and the tile's pixel extent as `extent` needs to be\n * provided.\n * @property {import(\"../proj.js\").ProjectionLike} [featureProjection] Projection of the feature geometries\n * created by the format reader. If not provided, features will be returned in the\n * `dataProjection`.\n */\n/**\n * @typedef {Object} WriteOptions\n * @property {import(\"../proj.js\").ProjectionLike} [dataProjection] Projection of the data we are writing.\n * If not provided, the `dataProjection` of the format is assigned (where set).\n * If no `dataProjection` is set for a format, the features will be returned\n * in the `featureProjection`.\n * @property {import(\"../proj.js\").ProjectionLike} [featureProjection] Projection of the feature geometries\n * that will be serialized by the format writer. If not provided, geometries are assumed\n * to be in the `dataProjection` if that is set; in other words, they are not transformed.\n * @property {boolean} [rightHanded] When writing geometries, follow the right-hand\n * rule for linear ring orientation. This means that polygons will have counter-clockwise\n * exterior rings and clockwise interior rings. By default, coordinates are serialized\n * as they are provided at construction. If `true`, the right-hand rule will\n * be applied. If `false`, the left-hand rule will be applied (clockwise for\n * exterior and counter-clockwise for interior rings). Note that not all\n * formats support this. The GeoJSON format does use this property when writing\n * geometries.\n * @property {number} [decimals] Maximum number of decimal places for coordinates.\n * Coordinates are stored internally as floats, but floating-point arithmetic can create\n * coordinates with a large number of decimal places, not generally wanted on output.\n * Set a number here to round coordinates. Can also be used to ensure that\n * coordinates read in can be written back out with the same number of decimals.\n * Default is no rounding.\n */\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Base class for feature formats.\n * {@link module:ol/format/Feature~FeatureFormat} subclasses provide the ability to decode and encode\n * {@link module:ol/Feature~Feature} objects from a variety of commonly used geospatial\n * file formats. See the documentation for each format for more details.\n *\n * @abstract\n * @api\n */\nvar FeatureFormat = /** @class */ (function () {\n function FeatureFormat() {\n /**\n * @protected\n * @type {import(\"../proj/Projection.js\").default}\n */\n this.dataProjection = null;\n /**\n * @protected\n * @type {import(\"../proj/Projection.js\").default}\n */\n this.defaultFeatureProjection = null;\n }\n /**\n * Adds the data projection to the read options.\n * @param {Document|Element|Object|string} source Source.\n * @param {ReadOptions=} opt_options Options.\n * @return {ReadOptions|undefined} Options.\n * @protected\n */\n FeatureFormat.prototype.getReadOptions = function (source, opt_options) {\n var options;\n if (opt_options) {\n var dataProjection = opt_options.dataProjection\n ? getProjection(opt_options.dataProjection)\n : this.readProjection(source);\n if (opt_options.extent &&\n dataProjection &&\n dataProjection.getUnits() === Units.TILE_PIXELS) {\n dataProjection = getProjection(dataProjection);\n dataProjection.setWorldExtent(opt_options.extent);\n }\n options = {\n dataProjection: dataProjection,\n featureProjection: opt_options.featureProjection,\n };\n }\n return this.adaptOptions(options);\n };\n /**\n * Sets the `dataProjection` on the options, if no `dataProjection`\n * is set.\n * @param {WriteOptions|ReadOptions|undefined} options\n * Options.\n * @protected\n * @return {WriteOptions|ReadOptions|undefined}\n * Updated options.\n */\n FeatureFormat.prototype.adaptOptions = function (options) {\n return assign({\n dataProjection: this.dataProjection,\n featureProjection: this.defaultFeatureProjection,\n }, options);\n };\n /**\n * @abstract\n * @return {import(\"./FormatType.js\").default} Format.\n */\n FeatureFormat.prototype.getType = function () {\n return abstract();\n };\n /**\n * Read a single feature from a source.\n *\n * @abstract\n * @param {Document|Element|Object|string} source Source.\n * @param {ReadOptions=} opt_options Read options.\n * @return {import(\"../Feature.js\").FeatureLike} Feature.\n */\n FeatureFormat.prototype.readFeature = function (source, opt_options) {\n return abstract();\n };\n /**\n * Read all features from a source.\n *\n * @abstract\n * @param {Document|Element|ArrayBuffer|Object|string} source Source.\n * @param {ReadOptions=} opt_options Read options.\n * @return {Array} Features.\n */\n FeatureFormat.prototype.readFeatures = function (source, opt_options) {\n return abstract();\n };\n /**\n * Read a single geometry from a source.\n *\n * @abstract\n * @param {Document|Element|Object|string} source Source.\n * @param {ReadOptions=} opt_options Read options.\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\n FeatureFormat.prototype.readGeometry = function (source, opt_options) {\n return abstract();\n };\n /**\n * Read the projection from a source.\n *\n * @abstract\n * @param {Document|Element|Object|string} source Source.\n * @return {import(\"../proj/Projection.js\").default} Projection.\n */\n FeatureFormat.prototype.readProjection = function (source) {\n return abstract();\n };\n /**\n * Encode a feature in this format.\n *\n * @abstract\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {WriteOptions=} opt_options Write options.\n * @return {string} Result.\n */\n FeatureFormat.prototype.writeFeature = function (feature, opt_options) {\n return abstract();\n };\n /**\n * Encode an array of features in this format.\n *\n * @abstract\n * @param {Array} features Features.\n * @param {WriteOptions=} opt_options Write options.\n * @return {string} Result.\n */\n FeatureFormat.prototype.writeFeatures = function (features, opt_options) {\n return abstract();\n };\n /**\n * Write a single geometry in this format.\n *\n * @abstract\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {WriteOptions=} opt_options Write options.\n * @return {string} Result.\n */\n FeatureFormat.prototype.writeGeometry = function (geometry, opt_options) {\n return abstract();\n };\n return FeatureFormat;\n}());\nexport default FeatureFormat;\n/**\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {boolean} write Set to true for writing, false for reading.\n * @param {(WriteOptions|ReadOptions)=} opt_options Options.\n * @return {import(\"../geom/Geometry.js\").default} Transformed geometry.\n */\nexport function transformGeometryWithOptions(geometry, write, opt_options) {\n var featureProjection = opt_options\n ? getProjection(opt_options.featureProjection)\n : null;\n var dataProjection = opt_options\n ? getProjection(opt_options.dataProjection)\n : null;\n var transformed;\n if (featureProjection &&\n dataProjection &&\n !equivalentProjection(featureProjection, dataProjection)) {\n transformed = (write ? geometry.clone() : geometry).transform(write ? featureProjection : dataProjection, write ? dataProjection : featureProjection);\n }\n else {\n transformed = geometry;\n }\n if (write &&\n opt_options &&\n /** @type {WriteOptions} */ (opt_options).decimals !== undefined) {\n var power_1 = Math.pow(10, \n /** @type {WriteOptions} */ (opt_options).decimals);\n // if decimals option on write, round each coordinate appropriately\n /**\n * @param {Array} coordinates Coordinates.\n * @return {Array} Transformed coordinates.\n */\n var transform = function (coordinates) {\n for (var i = 0, ii = coordinates.length; i < ii; ++i) {\n coordinates[i] = Math.round(coordinates[i] * power_1) / power_1;\n }\n return coordinates;\n };\n if (transformed === geometry) {\n transformed = geometry.clone();\n }\n transformed.applyTransform(transform);\n }\n return transformed;\n}\n/**\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @param {ReadOptions=} opt_options Read options.\n * @return {import(\"../extent.js\").Extent} Transformed extent.\n */\nexport function transformExtentWithOptions(extent, opt_options) {\n var featureProjection = opt_options\n ? getProjection(opt_options.featureProjection)\n : null;\n var dataProjection = opt_options\n ? getProjection(opt_options.dataProjection)\n : null;\n if (featureProjection &&\n dataProjection &&\n !equivalentProjection(featureProjection, dataProjection)) {\n return transformExtent(extent, dataProjection, featureProjection);\n }\n else {\n return extent;\n }\n}\n//# sourceMappingURL=Feature.js.map","/**\n * @module ol/format/FormatType\n */\n/**\n * @enum {string}\n */\nexport default {\n ARRAY_BUFFER: 'arraybuffer',\n JSON: 'json',\n TEXT: 'text',\n XML: 'xml',\n};\n//# sourceMappingURL=FormatType.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/format/GPX\n */\nimport Feature from '../Feature.js';\nimport GeometryLayout from '../geom/GeometryLayout.js';\nimport GeometryType from '../geom/GeometryType.js';\nimport LineString from '../geom/LineString.js';\nimport MultiLineString from '../geom/MultiLineString.js';\nimport Point from '../geom/Point.js';\nimport XMLFeature from './XMLFeature.js';\nimport { OBJECT_PROPERTY_NODE_FACTORY, XML_SCHEMA_INSTANCE_URI, createElementNS, makeArrayPusher, makeArraySerializer, makeChildAppender, makeObjectPropertySetter, makeSequence, makeSimpleNodeFactory, makeStructureNS, parseNode, pushParseAndPop, pushSerializeAndPop, } from '../xml.js';\nimport { get as getProjection } from '../proj.js';\nimport { includes } from '../array.js';\nimport { readDateTime, readDecimal, readNonNegativeInteger, readString, writeDateTimeTextNode, writeDecimalTextNode, writeNonNegativeIntegerTextNode, writeStringTextNode, } from './xsd.js';\nimport { transformGeometryWithOptions } from './Feature.js';\n/**\n * @const\n * @type {Array}\n */\nvar NAMESPACE_URIS = [\n null,\n 'http://www.topografix.com/GPX/1/0',\n 'http://www.topografix.com/GPX/1/1',\n];\n/**\n * @const\n * @type {string}\n */\nvar SCHEMA_LOCATION = 'http://www.topografix.com/GPX/1/1 ' +\n 'http://www.topografix.com/GPX/1/1/gpx.xsd';\n/**\n * @const\n * @type {Object): (Feature|undefined)>}\n */\nvar FEATURE_READER = {\n 'rte': readRte,\n 'trk': readTrk,\n 'wpt': readWpt,\n};\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nvar GPX_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n 'rte': makeArrayPusher(readRte),\n 'trk': makeArrayPusher(readTrk),\n 'wpt': makeArrayPusher(readWpt),\n});\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nvar LINK_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n 'text': makeObjectPropertySetter(readString, 'linkText'),\n 'type': makeObjectPropertySetter(readString, 'linkType'),\n});\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nvar GPX_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {\n 'rte': makeChildAppender(writeRte),\n 'trk': makeChildAppender(writeTrk),\n 'wpt': makeChildAppender(writeWpt),\n});\n/**\n * @typedef {Object} Options\n * @property {function(Feature, Node):void} [readExtensions] Callback function\n * to process `extensions` nodes. To prevent memory leaks, this callback function must\n * not store any references to the node. Note that the `extensions`\n * node is not allowed in GPX 1.0. Moreover, only `extensions`\n * nodes from `wpt`, `rte` and `trk` can be processed, as those are\n * directly mapped to a feature.\n */\n/**\n * @typedef {Object} LayoutOptions\n * @property {boolean} [hasZ]\n * @property {boolean} [hasM]\n */\n/**\n * @classdesc\n * Feature format for reading and writing data in the GPX format.\n *\n * Note that {@link module:ol/format/GPX~GPX#readFeature} only reads the first\n * feature of the source.\n *\n * When reading, routes (``) are converted into LineString geometries, and\n * tracks (``) into MultiLineString. Any properties on route and track\n * waypoints are ignored.\n *\n * When writing, LineString geometries are output as routes (``), and\n * MultiLineString as tracks (``).\n *\n * @api\n */\nvar GPX = /** @class */ (function (_super) {\n __extends(GPX, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function GPX(opt_options) {\n var _this = _super.call(this) || this;\n var options = opt_options ? opt_options : {};\n /**\n * @type {import(\"../proj/Projection.js\").default}\n */\n _this.dataProjection = getProjection('EPSG:4326');\n /**\n * @type {function(Feature, Node): void|undefined}\n * @private\n */\n _this.readExtensions_ = options.readExtensions;\n return _this;\n }\n /**\n * @param {Array} features List of features.\n * @private\n */\n GPX.prototype.handleReadExtensions_ = function (features) {\n if (!features) {\n features = [];\n }\n for (var i = 0, ii = features.length; i < ii; ++i) {\n var feature = features[i];\n if (this.readExtensions_) {\n var extensionsNode = feature.get('extensionsNode_') || null;\n this.readExtensions_(feature, extensionsNode);\n }\n feature.set('extensionsNode_', undefined);\n }\n };\n /**\n * @param {Element} node Node.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Options.\n * @return {import(\"../Feature.js\").default} Feature.\n */\n GPX.prototype.readFeatureFromNode = function (node, opt_options) {\n if (!includes(NAMESPACE_URIS, node.namespaceURI)) {\n return null;\n }\n var featureReader = FEATURE_READER[node.localName];\n if (!featureReader) {\n return null;\n }\n var feature = featureReader(node, [\n this.getReadOptions(node, opt_options),\n ]);\n if (!feature) {\n return null;\n }\n this.handleReadExtensions_([feature]);\n return feature;\n };\n /**\n * @param {Element} node Node.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Options.\n * @return {Array} Features.\n */\n GPX.prototype.readFeaturesFromNode = function (node, opt_options) {\n if (!includes(NAMESPACE_URIS, node.namespaceURI)) {\n return [];\n }\n if (node.localName == 'gpx') {\n /** @type {Array} */\n var features = pushParseAndPop([], GPX_PARSERS, node, [\n this.getReadOptions(node, opt_options),\n ]);\n if (features) {\n this.handleReadExtensions_(features);\n return features;\n }\n else {\n return [];\n }\n }\n return [];\n };\n /**\n * Encode an array of features in the GPX format as an XML node.\n * LineString geometries are output as routes (``), and MultiLineString\n * as tracks (``).\n *\n * @param {Array} features Features.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Options.\n * @return {Node} Node.\n * @api\n */\n GPX.prototype.writeFeaturesNode = function (features, opt_options) {\n opt_options = this.adaptOptions(opt_options);\n //FIXME Serialize metadata\n var gpx = createElementNS('http://www.topografix.com/GPX/1/1', 'gpx');\n var xmlnsUri = 'http://www.w3.org/2000/xmlns/';\n gpx.setAttributeNS(xmlnsUri, 'xmlns:xsi', XML_SCHEMA_INSTANCE_URI);\n gpx.setAttributeNS(XML_SCHEMA_INSTANCE_URI, 'xsi:schemaLocation', SCHEMA_LOCATION);\n gpx.setAttribute('version', '1.1');\n gpx.setAttribute('creator', 'OpenLayers');\n pushSerializeAndPop(\n /** @type {import(\"../xml.js\").NodeStackItem} */\n ({ node: gpx }), GPX_SERIALIZERS, GPX_NODE_FACTORY, features, [opt_options]);\n return gpx;\n };\n return GPX;\n}(XMLFeature));\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nvar RTE_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n 'name': makeObjectPropertySetter(readString),\n 'cmt': makeObjectPropertySetter(readString),\n 'desc': makeObjectPropertySetter(readString),\n 'src': makeObjectPropertySetter(readString),\n 'link': parseLink,\n 'number': makeObjectPropertySetter(readNonNegativeInteger),\n 'extensions': parseExtensions,\n 'type': makeObjectPropertySetter(readString),\n 'rtept': parseRtePt,\n});\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nvar RTEPT_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n 'ele': makeObjectPropertySetter(readDecimal),\n 'time': makeObjectPropertySetter(readDateTime),\n});\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nvar TRK_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n 'name': makeObjectPropertySetter(readString),\n 'cmt': makeObjectPropertySetter(readString),\n 'desc': makeObjectPropertySetter(readString),\n 'src': makeObjectPropertySetter(readString),\n 'link': parseLink,\n 'number': makeObjectPropertySetter(readNonNegativeInteger),\n 'type': makeObjectPropertySetter(readString),\n 'extensions': parseExtensions,\n 'trkseg': parseTrkSeg,\n});\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nvar TRKSEG_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n 'trkpt': parseTrkPt,\n});\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nvar TRKPT_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n 'ele': makeObjectPropertySetter(readDecimal),\n 'time': makeObjectPropertySetter(readDateTime),\n});\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nvar WPT_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n 'ele': makeObjectPropertySetter(readDecimal),\n 'time': makeObjectPropertySetter(readDateTime),\n 'magvar': makeObjectPropertySetter(readDecimal),\n 'geoidheight': makeObjectPropertySetter(readDecimal),\n 'name': makeObjectPropertySetter(readString),\n 'cmt': makeObjectPropertySetter(readString),\n 'desc': makeObjectPropertySetter(readString),\n 'src': makeObjectPropertySetter(readString),\n 'link': parseLink,\n 'sym': makeObjectPropertySetter(readString),\n 'type': makeObjectPropertySetter(readString),\n 'fix': makeObjectPropertySetter(readString),\n 'sat': makeObjectPropertySetter(readNonNegativeInteger),\n 'hdop': makeObjectPropertySetter(readDecimal),\n 'vdop': makeObjectPropertySetter(readDecimal),\n 'pdop': makeObjectPropertySetter(readDecimal),\n 'ageofdgpsdata': makeObjectPropertySetter(readDecimal),\n 'dgpsid': makeObjectPropertySetter(readNonNegativeInteger),\n 'extensions': parseExtensions,\n});\n/**\n * @const\n * @type {Array}\n */\nvar LINK_SEQUENCE = ['text', 'type'];\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nvar LINK_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {\n 'text': makeChildAppender(writeStringTextNode),\n 'type': makeChildAppender(writeStringTextNode),\n});\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nvar RTE_SEQUENCE = makeStructureNS(NAMESPACE_URIS, [\n 'name',\n 'cmt',\n 'desc',\n 'src',\n 'link',\n 'number',\n 'type',\n 'rtept',\n]);\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nvar RTE_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {\n 'name': makeChildAppender(writeStringTextNode),\n 'cmt': makeChildAppender(writeStringTextNode),\n 'desc': makeChildAppender(writeStringTextNode),\n 'src': makeChildAppender(writeStringTextNode),\n 'link': makeChildAppender(writeLink),\n 'number': makeChildAppender(writeNonNegativeIntegerTextNode),\n 'type': makeChildAppender(writeStringTextNode),\n 'rtept': makeArraySerializer(makeChildAppender(writeWptType)),\n});\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nvar RTEPT_TYPE_SEQUENCE = makeStructureNS(NAMESPACE_URIS, ['ele', 'time']);\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nvar TRK_SEQUENCE = makeStructureNS(NAMESPACE_URIS, [\n 'name',\n 'cmt',\n 'desc',\n 'src',\n 'link',\n 'number',\n 'type',\n 'trkseg',\n]);\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nvar TRK_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {\n 'name': makeChildAppender(writeStringTextNode),\n 'cmt': makeChildAppender(writeStringTextNode),\n 'desc': makeChildAppender(writeStringTextNode),\n 'src': makeChildAppender(writeStringTextNode),\n 'link': makeChildAppender(writeLink),\n 'number': makeChildAppender(writeNonNegativeIntegerTextNode),\n 'type': makeChildAppender(writeStringTextNode),\n 'trkseg': makeArraySerializer(makeChildAppender(writeTrkSeg)),\n});\n/**\n * @const\n * @type {function(*, Array<*>, string=): (Node|undefined)}\n */\nvar TRKSEG_NODE_FACTORY = makeSimpleNodeFactory('trkpt');\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nvar TRKSEG_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {\n 'trkpt': makeChildAppender(writeWptType),\n});\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nvar WPT_TYPE_SEQUENCE = makeStructureNS(NAMESPACE_URIS, [\n 'ele',\n 'time',\n 'magvar',\n 'geoidheight',\n 'name',\n 'cmt',\n 'desc',\n 'src',\n 'link',\n 'sym',\n 'type',\n 'fix',\n 'sat',\n 'hdop',\n 'vdop',\n 'pdop',\n 'ageofdgpsdata',\n 'dgpsid',\n]);\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nvar WPT_TYPE_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {\n 'ele': makeChildAppender(writeDecimalTextNode),\n 'time': makeChildAppender(writeDateTimeTextNode),\n 'magvar': makeChildAppender(writeDecimalTextNode),\n 'geoidheight': makeChildAppender(writeDecimalTextNode),\n 'name': makeChildAppender(writeStringTextNode),\n 'cmt': makeChildAppender(writeStringTextNode),\n 'desc': makeChildAppender(writeStringTextNode),\n 'src': makeChildAppender(writeStringTextNode),\n 'link': makeChildAppender(writeLink),\n 'sym': makeChildAppender(writeStringTextNode),\n 'type': makeChildAppender(writeStringTextNode),\n 'fix': makeChildAppender(writeStringTextNode),\n 'sat': makeChildAppender(writeNonNegativeIntegerTextNode),\n 'hdop': makeChildAppender(writeDecimalTextNode),\n 'vdop': makeChildAppender(writeDecimalTextNode),\n 'pdop': makeChildAppender(writeDecimalTextNode),\n 'ageofdgpsdata': makeChildAppender(writeDecimalTextNode),\n 'dgpsid': makeChildAppender(writeNonNegativeIntegerTextNode),\n});\n/**\n * @const\n * @type {Object}\n */\nvar GEOMETRY_TYPE_TO_NODENAME = {\n 'Point': 'wpt',\n 'LineString': 'rte',\n 'MultiLineString': 'trk',\n};\n/**\n * @param {*} value Value.\n * @param {Array<*>} objectStack Object stack.\n * @param {string=} opt_nodeName Node name.\n * @return {Node|undefined} Node.\n */\nfunction GPX_NODE_FACTORY(value, objectStack, opt_nodeName) {\n var geometry = /** @type {Feature} */ (value).getGeometry();\n if (geometry) {\n var nodeName = GEOMETRY_TYPE_TO_NODENAME[geometry.getType()];\n if (nodeName) {\n var parentNode = objectStack[objectStack.length - 1].node;\n return createElementNS(parentNode.namespaceURI, nodeName);\n }\n }\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {LayoutOptions} layoutOptions Layout options.\n * @param {Element} node Node.\n * @param {!Object} values Values.\n * @return {Array} Flat coordinates.\n */\nfunction appendCoordinate(flatCoordinates, layoutOptions, node, values) {\n flatCoordinates.push(parseFloat(node.getAttribute('lon')), parseFloat(node.getAttribute('lat')));\n if ('ele' in values) {\n flatCoordinates.push(/** @type {number} */ (values['ele']));\n delete values['ele'];\n layoutOptions.hasZ = true;\n }\n else {\n flatCoordinates.push(0);\n }\n if ('time' in values) {\n flatCoordinates.push(/** @type {number} */ (values['time']));\n delete values['time'];\n layoutOptions.hasM = true;\n }\n else {\n flatCoordinates.push(0);\n }\n return flatCoordinates;\n}\n/**\n * Choose GeometryLayout based on flags in layoutOptions and adjust flatCoordinates\n * and ends arrays by shrinking them accordingly (removing unused zero entries).\n *\n * @param {LayoutOptions} layoutOptions Layout options.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {Array=} ends Ends.\n * @return {import(\"../geom/GeometryLayout.js\").default} Layout.\n */\nfunction applyLayoutOptions(layoutOptions, flatCoordinates, ends) {\n var layout = GeometryLayout.XY;\n var stride = 2;\n if (layoutOptions.hasZ && layoutOptions.hasM) {\n layout = GeometryLayout.XYZM;\n stride = 4;\n }\n else if (layoutOptions.hasZ) {\n layout = GeometryLayout.XYZ;\n stride = 3;\n }\n else if (layoutOptions.hasM) {\n layout = GeometryLayout.XYM;\n stride = 3;\n }\n if (stride !== 4) {\n for (var i = 0, ii = flatCoordinates.length / 4; i < ii; i++) {\n flatCoordinates[i * stride] = flatCoordinates[i * 4];\n flatCoordinates[i * stride + 1] = flatCoordinates[i * 4 + 1];\n if (layoutOptions.hasZ) {\n flatCoordinates[i * stride + 2] = flatCoordinates[i * 4 + 2];\n }\n if (layoutOptions.hasM) {\n flatCoordinates[i * stride + 2] = flatCoordinates[i * 4 + 3];\n }\n }\n flatCoordinates.length = (flatCoordinates.length / 4) * stride;\n if (ends) {\n for (var i = 0, ii = ends.length; i < ii; i++) {\n ends[i] = (ends[i] / 4) * stride;\n }\n }\n }\n return layout;\n}\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\nfunction parseLink(node, objectStack) {\n var values = /** @type {Object} */ (objectStack[objectStack.length - 1]);\n var href = node.getAttribute('href');\n if (href !== null) {\n values['link'] = href;\n }\n parseNode(LINK_PARSERS, node, objectStack);\n}\n/**\n * @param {Node} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\nfunction parseExtensions(node, objectStack) {\n var values = /** @type {Object} */ (objectStack[objectStack.length - 1]);\n values['extensionsNode_'] = node;\n}\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\nfunction parseRtePt(node, objectStack) {\n var values = pushParseAndPop({}, RTEPT_PARSERS, node, objectStack);\n if (values) {\n var rteValues = /** @type {!Object} */ (objectStack[objectStack.length - 1]);\n var flatCoordinates = /** @type {Array} */ (rteValues['flatCoordinates']);\n var layoutOptions = /** @type {LayoutOptions} */ (rteValues['layoutOptions']);\n appendCoordinate(flatCoordinates, layoutOptions, node, values);\n }\n}\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\nfunction parseTrkPt(node, objectStack) {\n var values = pushParseAndPop({}, TRKPT_PARSERS, node, objectStack);\n if (values) {\n var trkValues = /** @type {!Object} */ (objectStack[objectStack.length - 1]);\n var flatCoordinates = /** @type {Array} */ (trkValues['flatCoordinates']);\n var layoutOptions = /** @type {LayoutOptions} */ (trkValues['layoutOptions']);\n appendCoordinate(flatCoordinates, layoutOptions, node, values);\n }\n}\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\nfunction parseTrkSeg(node, objectStack) {\n var values = /** @type {Object} */ (objectStack[objectStack.length - 1]);\n parseNode(TRKSEG_PARSERS, node, objectStack);\n var flatCoordinates = \n /** @type {Array} */\n (values['flatCoordinates']);\n var ends = /** @type {Array} */ (values['ends']);\n ends.push(flatCoordinates.length);\n}\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Feature|undefined} Track.\n */\nfunction readRte(node, objectStack) {\n var options = /** @type {import(\"./Feature.js\").ReadOptions} */ (objectStack[0]);\n var values = pushParseAndPop({\n 'flatCoordinates': [],\n 'layoutOptions': {},\n }, RTE_PARSERS, node, objectStack);\n if (!values) {\n return undefined;\n }\n var flatCoordinates = \n /** @type {Array} */\n (values['flatCoordinates']);\n delete values['flatCoordinates'];\n var layoutOptions = /** @type {LayoutOptions} */ (values['layoutOptions']);\n delete values['layoutOptions'];\n var layout = applyLayoutOptions(layoutOptions, flatCoordinates);\n var geometry = new LineString(flatCoordinates, layout);\n transformGeometryWithOptions(geometry, false, options);\n var feature = new Feature(geometry);\n feature.setProperties(values, true);\n return feature;\n}\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Feature|undefined} Track.\n */\nfunction readTrk(node, objectStack) {\n var options = /** @type {import(\"./Feature.js\").ReadOptions} */ (objectStack[0]);\n var values = pushParseAndPop({\n 'flatCoordinates': [],\n 'ends': [],\n 'layoutOptions': {},\n }, TRK_PARSERS, node, objectStack);\n if (!values) {\n return undefined;\n }\n var flatCoordinates = \n /** @type {Array} */\n (values['flatCoordinates']);\n delete values['flatCoordinates'];\n var ends = /** @type {Array} */ (values['ends']);\n delete values['ends'];\n var layoutOptions = /** @type {LayoutOptions} */ (values['layoutOptions']);\n delete values['layoutOptions'];\n var layout = applyLayoutOptions(layoutOptions, flatCoordinates, ends);\n var geometry = new MultiLineString(flatCoordinates, layout, ends);\n transformGeometryWithOptions(geometry, false, options);\n var feature = new Feature(geometry);\n feature.setProperties(values, true);\n return feature;\n}\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Feature|undefined} Waypoint.\n */\nfunction readWpt(node, objectStack) {\n var options = /** @type {import(\"./Feature.js\").ReadOptions} */ (objectStack[0]);\n var values = pushParseAndPop({}, WPT_PARSERS, node, objectStack);\n if (!values) {\n return undefined;\n }\n var layoutOptions = /** @type {LayoutOptions} */ ({});\n var coordinates = appendCoordinate([], layoutOptions, node, values);\n var layout = applyLayoutOptions(layoutOptions, coordinates);\n var geometry = new Point(coordinates, layout);\n transformGeometryWithOptions(geometry, false, options);\n var feature = new Feature(geometry);\n feature.setProperties(values, true);\n return feature;\n}\n/**\n * @param {Element} node Node.\n * @param {string} value Value for the link's `href` attribute.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeLink(node, value, objectStack) {\n node.setAttribute('href', value);\n var context = objectStack[objectStack.length - 1];\n var properties = context['properties'];\n var link = [properties['linkText'], properties['linkType']];\n pushSerializeAndPop(\n /** @type {import(\"../xml.js\").NodeStackItem} */ ({ node: node }), LINK_SERIALIZERS, OBJECT_PROPERTY_NODE_FACTORY, link, objectStack, LINK_SEQUENCE);\n}\n/**\n * @param {Element} node Node.\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {Array<*>} objectStack Object stack.\n */\nfunction writeWptType(node, coordinate, objectStack) {\n var context = objectStack[objectStack.length - 1];\n var parentNode = context.node;\n var namespaceURI = parentNode.namespaceURI;\n var properties = context['properties'];\n //FIXME Projection handling\n node.setAttributeNS(null, 'lat', String(coordinate[1]));\n node.setAttributeNS(null, 'lon', String(coordinate[0]));\n var geometryLayout = context['geometryLayout'];\n switch (geometryLayout) {\n case GeometryLayout.XYZM:\n if (coordinate[3] !== 0) {\n properties['time'] = coordinate[3];\n }\n // fall through\n case GeometryLayout.XYZ:\n if (coordinate[2] !== 0) {\n properties['ele'] = coordinate[2];\n }\n break;\n case GeometryLayout.XYM:\n if (coordinate[2] !== 0) {\n properties['time'] = coordinate[2];\n }\n break;\n default:\n // pass\n }\n var orderedKeys = node.nodeName == 'rtept'\n ? RTEPT_TYPE_SEQUENCE[namespaceURI]\n : WPT_TYPE_SEQUENCE[namespaceURI];\n var values = makeSequence(properties, orderedKeys);\n pushSerializeAndPop(\n /** @type {import(\"../xml.js\").NodeStackItem} */\n ({ node: node, 'properties': properties }), WPT_TYPE_SERIALIZERS, OBJECT_PROPERTY_NODE_FACTORY, values, objectStack, orderedKeys);\n}\n/**\n * @param {Node} node Node.\n * @param {Feature} feature Feature.\n * @param {Array<*>} objectStack Object stack.\n */\nfunction writeRte(node, feature, objectStack) {\n var options = /** @type {import(\"./Feature.js\").WriteOptions} */ (objectStack[0]);\n var properties = feature.getProperties();\n var context = { node: node };\n context['properties'] = properties;\n var geometry = feature.getGeometry();\n if (geometry.getType() == GeometryType.LINE_STRING) {\n var lineString = /** @type {LineString} */ (transformGeometryWithOptions(geometry, true, options));\n context['geometryLayout'] = lineString.getLayout();\n properties['rtept'] = lineString.getCoordinates();\n }\n var parentNode = objectStack[objectStack.length - 1].node;\n var orderedKeys = RTE_SEQUENCE[parentNode.namespaceURI];\n var values = makeSequence(properties, orderedKeys);\n pushSerializeAndPop(context, RTE_SERIALIZERS, OBJECT_PROPERTY_NODE_FACTORY, values, objectStack, orderedKeys);\n}\n/**\n * @param {Node} node Node.\n * @param {Feature} feature Feature.\n * @param {Array<*>} objectStack Object stack.\n */\nfunction writeTrk(node, feature, objectStack) {\n var options = /** @type {import(\"./Feature.js\").WriteOptions} */ (objectStack[0]);\n var properties = feature.getProperties();\n /** @type {import(\"../xml.js\").NodeStackItem} */\n var context = { node: node };\n context['properties'] = properties;\n var geometry = feature.getGeometry();\n if (geometry.getType() == GeometryType.MULTI_LINE_STRING) {\n var multiLineString = /** @type {MultiLineString} */ (transformGeometryWithOptions(geometry, true, options));\n properties['trkseg'] = multiLineString.getLineStrings();\n }\n var parentNode = objectStack[objectStack.length - 1].node;\n var orderedKeys = TRK_SEQUENCE[parentNode.namespaceURI];\n var values = makeSequence(properties, orderedKeys);\n pushSerializeAndPop(context, TRK_SERIALIZERS, OBJECT_PROPERTY_NODE_FACTORY, values, objectStack, orderedKeys);\n}\n/**\n * @param {Node} node Node.\n * @param {LineString} lineString LineString.\n * @param {Array<*>} objectStack Object stack.\n */\nfunction writeTrkSeg(node, lineString, objectStack) {\n /** @type {import(\"../xml.js\").NodeStackItem} */\n var context = { node: node };\n context['geometryLayout'] = lineString.getLayout();\n context['properties'] = {};\n pushSerializeAndPop(context, TRKSEG_SERIALIZERS, TRKSEG_NODE_FACTORY, lineString.getCoordinates(), objectStack);\n}\n/**\n * @param {Element} node Node.\n * @param {Feature} feature Feature.\n * @param {Array<*>} objectStack Object stack.\n */\nfunction writeWpt(node, feature, objectStack) {\n var options = /** @type {import(\"./Feature.js\").WriteOptions} */ (objectStack[0]);\n var context = objectStack[objectStack.length - 1];\n context['properties'] = feature.getProperties();\n var geometry = feature.getGeometry();\n if (geometry.getType() == GeometryType.POINT) {\n var point = /** @type {Point} */ (transformGeometryWithOptions(geometry, true, options));\n context['geometryLayout'] = point.getLayout();\n writeWptType(node, point.getCoordinates(), objectStack);\n }\n}\nexport default GPX;\n//# sourceMappingURL=GPX.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/format/JSONFeature\n */\nimport FeatureFormat from './Feature.js';\nimport FormatType from './FormatType.js';\nimport { abstract } from '../util.js';\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Base class for JSON feature formats.\n *\n * @abstract\n */\nvar JSONFeature = /** @class */ (function (_super) {\n __extends(JSONFeature, _super);\n function JSONFeature() {\n return _super.call(this) || this;\n }\n /**\n * @return {import(\"./FormatType.js\").default} Format.\n */\n JSONFeature.prototype.getType = function () {\n return FormatType.JSON;\n };\n /**\n * Read a feature. Only works for a single feature. Use `readFeatures` to\n * read a feature collection.\n *\n * @param {ArrayBuffer|Document|Element|Object|string} source Source.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Read options.\n * @return {import(\"../Feature.js\").default} Feature.\n * @api\n */\n JSONFeature.prototype.readFeature = function (source, opt_options) {\n return this.readFeatureFromObject(getObject(source), this.getReadOptions(source, opt_options));\n };\n /**\n * Read all features. Works with both a single feature and a feature\n * collection.\n *\n * @param {ArrayBuffer|Document|Element|Object|string} source Source.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Read options.\n * @return {Array} Features.\n * @api\n */\n JSONFeature.prototype.readFeatures = function (source, opt_options) {\n return this.readFeaturesFromObject(getObject(source), this.getReadOptions(source, opt_options));\n };\n /**\n * @abstract\n * @param {Object} object Object.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Read options.\n * @protected\n * @return {import(\"../Feature.js\").default} Feature.\n */\n JSONFeature.prototype.readFeatureFromObject = function (object, opt_options) {\n return abstract();\n };\n /**\n * @abstract\n * @param {Object} object Object.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Read options.\n * @protected\n * @return {Array} Features.\n */\n JSONFeature.prototype.readFeaturesFromObject = function (object, opt_options) {\n return abstract();\n };\n /**\n * Read a geometry.\n *\n * @param {ArrayBuffer|Document|Element|Object|string} source Source.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Read options.\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n * @api\n */\n JSONFeature.prototype.readGeometry = function (source, opt_options) {\n return this.readGeometryFromObject(getObject(source), this.getReadOptions(source, opt_options));\n };\n /**\n * @abstract\n * @param {Object} object Object.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Read options.\n * @protected\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\n JSONFeature.prototype.readGeometryFromObject = function (object, opt_options) {\n return abstract();\n };\n /**\n * Read the projection.\n *\n * @param {ArrayBuffer|Document|Element|Object|string} source Source.\n * @return {import(\"../proj/Projection.js\").default} Projection.\n * @api\n */\n JSONFeature.prototype.readProjection = function (source) {\n return this.readProjectionFromObject(getObject(source));\n };\n /**\n * @abstract\n * @param {Object} object Object.\n * @protected\n * @return {import(\"../proj/Projection.js\").default} Projection.\n */\n JSONFeature.prototype.readProjectionFromObject = function (object) {\n return abstract();\n };\n /**\n * Encode a feature as string.\n *\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {string} Encoded feature.\n * @api\n */\n JSONFeature.prototype.writeFeature = function (feature, opt_options) {\n return JSON.stringify(this.writeFeatureObject(feature, opt_options));\n };\n /**\n * @abstract\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {Object} Object.\n */\n JSONFeature.prototype.writeFeatureObject = function (feature, opt_options) {\n return abstract();\n };\n /**\n * Encode an array of features as string.\n *\n * @param {Array} features Features.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {string} Encoded features.\n * @api\n */\n JSONFeature.prototype.writeFeatures = function (features, opt_options) {\n return JSON.stringify(this.writeFeaturesObject(features, opt_options));\n };\n /**\n * @abstract\n * @param {Array} features Features.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {Object} Object.\n */\n JSONFeature.prototype.writeFeaturesObject = function (features, opt_options) {\n return abstract();\n };\n /**\n * Encode a geometry as string.\n *\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {string} Encoded geometry.\n * @api\n */\n JSONFeature.prototype.writeGeometry = function (geometry, opt_options) {\n return JSON.stringify(this.writeGeometryObject(geometry, opt_options));\n };\n /**\n * @abstract\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {Object} Object.\n */\n JSONFeature.prototype.writeGeometryObject = function (geometry, opt_options) {\n return abstract();\n };\n return JSONFeature;\n}(FeatureFormat));\n/**\n * @param {Document|Element|Object|string} source Source.\n * @return {Object} Object.\n */\nfunction getObject(source) {\n if (typeof source === 'string') {\n var object = JSON.parse(source);\n return object ? /** @type {Object} */ (object) : null;\n }\n else if (source !== null) {\n return source;\n }\n else {\n return null;\n }\n}\nexport default JSONFeature;\n//# sourceMappingURL=JSONFeature.js.map","/**\n * @module ol/format/GeoJSON\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport Feature from '../Feature.js';\nimport GeometryCollection from '../geom/GeometryCollection.js';\nimport GeometryType from '../geom/GeometryType.js';\nimport JSONFeature from './JSONFeature.js';\nimport LineString from '../geom/LineString.js';\nimport MultiLineString from '../geom/MultiLineString.js';\nimport MultiPoint from '../geom/MultiPoint.js';\nimport MultiPolygon from '../geom/MultiPolygon.js';\nimport Point from '../geom/Point.js';\nimport Polygon from '../geom/Polygon.js';\nimport { assert } from '../asserts.js';\nimport { assign, isEmpty } from '../obj.js';\nimport { get as getProjection } from '../proj.js';\nimport { transformGeometryWithOptions } from './Feature.js';\n/**\n * @typedef {import(\"geojson\").GeoJSON} GeoJSONObject\n * @typedef {import(\"geojson\").Feature} GeoJSONFeature\n * @typedef {import(\"geojson\").FeatureCollection} GeoJSONFeatureCollection\n * @typedef {import(\"geojson\").Geometry} GeoJSONGeometry\n * @typedef {import(\"geojson\").Point} GeoJSONPoint\n * @typedef {import(\"geojson\").LineString} GeoJSONLineString\n * @typedef {import(\"geojson\").Polygon} GeoJSONPolygon\n * @typedef {import(\"geojson\").MultiPoint} GeoJSONMultiPoint\n * @typedef {import(\"geojson\").MultiLineString} GeoJSONMultiLineString\n * @typedef {import(\"geojson\").MultiPolygon} GeoJSONMultiPolygon\n * @typedef {import(\"geojson\").GeometryCollection} GeoJSONGeometryCollection\n */\n/**\n * @typedef {Object} Options\n * @property {import(\"../proj.js\").ProjectionLike} [dataProjection='EPSG:4326'] Default data projection.\n * @property {import(\"../proj.js\").ProjectionLike} [featureProjection] Projection for features read or\n * written by the format. Options passed to read or write methods will take precedence.\n * @property {string} [geometryName] Geometry name to use when creating features.\n * @property {boolean} [extractGeometryName=false] Certain GeoJSON providers include\n * the geometry_name field in the feature GeoJSON. If set to `true` the GeoJSON reader\n * will look for that field to set the geometry name. If both this field is set to `true`\n * and a `geometryName` is provided, the `geometryName` will take precedence.\n */\n/**\n * @classdesc\n * Feature format for reading and writing data in the GeoJSON format.\n *\n * @api\n */\nvar GeoJSON = /** @class */ (function (_super) {\n __extends(GeoJSON, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function GeoJSON(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this) || this;\n /**\n * @type {import(\"../proj/Projection.js\").default}\n */\n _this.dataProjection = getProjection(options.dataProjection ? options.dataProjection : 'EPSG:4326');\n if (options.featureProjection) {\n _this.defaultFeatureProjection = getProjection(options.featureProjection);\n }\n /**\n * Name of the geometry attribute for features.\n * @type {string|undefined}\n * @private\n */\n _this.geometryName_ = options.geometryName;\n /**\n * Look for the geometry name in the feature GeoJSON\n * @type {boolean|undefined}\n * @private\n */\n _this.extractGeometryName_ = options.extractGeometryName;\n return _this;\n }\n /**\n * @param {Object} object Object.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Read options.\n * @protected\n * @return {import(\"../Feature.js\").default} Feature.\n */\n GeoJSON.prototype.readFeatureFromObject = function (object, opt_options) {\n /**\n * @type {GeoJSONFeature}\n */\n var geoJSONFeature = null;\n if (object['type'] === 'Feature') {\n geoJSONFeature = /** @type {GeoJSONFeature} */ (object);\n }\n else {\n geoJSONFeature = {\n 'type': 'Feature',\n 'geometry': /** @type {GeoJSONGeometry} */ (object),\n 'properties': null,\n };\n }\n var geometry = readGeometry(geoJSONFeature['geometry'], opt_options);\n var feature = new Feature();\n if (this.geometryName_) {\n feature.setGeometryName(this.geometryName_);\n }\n else if (this.extractGeometryName_ &&\n 'geometry_name' in geoJSONFeature !== undefined) {\n feature.setGeometryName(geoJSONFeature['geometry_name']);\n }\n feature.setGeometry(geometry);\n if ('id' in geoJSONFeature) {\n feature.setId(geoJSONFeature['id']);\n }\n if (geoJSONFeature['properties']) {\n feature.setProperties(geoJSONFeature['properties'], true);\n }\n return feature;\n };\n /**\n * @param {Object} object Object.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Read options.\n * @protected\n * @return {Array} Features.\n */\n GeoJSON.prototype.readFeaturesFromObject = function (object, opt_options) {\n var geoJSONObject = /** @type {GeoJSONObject} */ (object);\n /** @type {Array} */\n var features = null;\n if (geoJSONObject['type'] === 'FeatureCollection') {\n var geoJSONFeatureCollection = /** @type {GeoJSONFeatureCollection} */ (object);\n features = [];\n var geoJSONFeatures = geoJSONFeatureCollection['features'];\n for (var i = 0, ii = geoJSONFeatures.length; i < ii; ++i) {\n features.push(this.readFeatureFromObject(geoJSONFeatures[i], opt_options));\n }\n }\n else {\n features = [this.readFeatureFromObject(object, opt_options)];\n }\n return features;\n };\n /**\n * @param {GeoJSONGeometry} object Object.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Read options.\n * @protected\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\n GeoJSON.prototype.readGeometryFromObject = function (object, opt_options) {\n return readGeometry(object, opt_options);\n };\n /**\n * @param {Object} object Object.\n * @protected\n * @return {import(\"../proj/Projection.js\").default} Projection.\n */\n GeoJSON.prototype.readProjectionFromObject = function (object) {\n var crs = object['crs'];\n var projection;\n if (crs) {\n if (crs['type'] == 'name') {\n projection = getProjection(crs['properties']['name']);\n }\n else if (crs['type'] === 'EPSG') {\n projection = getProjection('EPSG:' + crs['properties']['code']);\n }\n else {\n assert(false, 36); // Unknown SRS type\n }\n }\n else {\n projection = this.dataProjection;\n }\n return /** @type {import(\"../proj/Projection.js\").default} */ (projection);\n };\n /**\n * Encode a feature as a GeoJSON Feature object.\n *\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {GeoJSONFeature} Object.\n * @api\n */\n GeoJSON.prototype.writeFeatureObject = function (feature, opt_options) {\n opt_options = this.adaptOptions(opt_options);\n /** @type {GeoJSONFeature} */\n var object = {\n 'type': 'Feature',\n geometry: null,\n properties: null,\n };\n var id = feature.getId();\n if (id !== undefined) {\n object.id = id;\n }\n if (!feature.hasProperties()) {\n return object;\n }\n var properties = feature.getProperties();\n var geometry = feature.getGeometry();\n if (geometry) {\n object.geometry = writeGeometry(geometry, opt_options);\n delete properties[feature.getGeometryName()];\n }\n if (!isEmpty(properties)) {\n object.properties = properties;\n }\n return object;\n };\n /**\n * Encode an array of features as a GeoJSON object.\n *\n * @param {Array} features Features.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {GeoJSONFeatureCollection} GeoJSON Object.\n * @api\n */\n GeoJSON.prototype.writeFeaturesObject = function (features, opt_options) {\n opt_options = this.adaptOptions(opt_options);\n var objects = [];\n for (var i = 0, ii = features.length; i < ii; ++i) {\n objects.push(this.writeFeatureObject(features[i], opt_options));\n }\n return {\n type: 'FeatureCollection',\n features: objects,\n };\n };\n /**\n * Encode a geometry as a GeoJSON object.\n *\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {GeoJSONGeometry|GeoJSONGeometryCollection} Object.\n * @api\n */\n GeoJSON.prototype.writeGeometryObject = function (geometry, opt_options) {\n return writeGeometry(geometry, this.adaptOptions(opt_options));\n };\n return GeoJSON;\n}(JSONFeature));\n/**\n * @param {GeoJSONGeometry|GeoJSONGeometryCollection} object Object.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Read options.\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\nfunction readGeometry(object, opt_options) {\n if (!object) {\n return null;\n }\n /**\n * @type {import(\"../geom/Geometry.js\").default}\n */\n var geometry;\n switch (object['type']) {\n case GeometryType.POINT: {\n geometry = readPointGeometry(/** @type {GeoJSONPoint} */ (object));\n break;\n }\n case GeometryType.LINE_STRING: {\n geometry = readLineStringGeometry(\n /** @type {GeoJSONLineString} */ (object));\n break;\n }\n case GeometryType.POLYGON: {\n geometry = readPolygonGeometry(/** @type {GeoJSONPolygon} */ (object));\n break;\n }\n case GeometryType.MULTI_POINT: {\n geometry = readMultiPointGeometry(\n /** @type {GeoJSONMultiPoint} */ (object));\n break;\n }\n case GeometryType.MULTI_LINE_STRING: {\n geometry = readMultiLineStringGeometry(\n /** @type {GeoJSONMultiLineString} */ (object));\n break;\n }\n case GeometryType.MULTI_POLYGON: {\n geometry = readMultiPolygonGeometry(\n /** @type {GeoJSONMultiPolygon} */ (object));\n break;\n }\n case GeometryType.GEOMETRY_COLLECTION: {\n geometry = readGeometryCollectionGeometry(\n /** @type {GeoJSONGeometryCollection} */ (object));\n break;\n }\n default: {\n throw new Error('Unsupported GeoJSON type: ' + object.type);\n }\n }\n return transformGeometryWithOptions(geometry, false, opt_options);\n}\n/**\n * @param {GeoJSONGeometryCollection} object Object.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Read options.\n * @return {GeometryCollection} Geometry collection.\n */\nfunction readGeometryCollectionGeometry(object, opt_options) {\n var geometries = object['geometries'].map(\n /**\n * @param {GeoJSONGeometry} geometry Geometry.\n * @return {import(\"../geom/Geometry.js\").default} geometry Geometry.\n */\n function (geometry) {\n return readGeometry(geometry, opt_options);\n });\n return new GeometryCollection(geometries);\n}\n/**\n * @param {GeoJSONPoint} object Object.\n * @return {Point} Point.\n */\nfunction readPointGeometry(object) {\n return new Point(object['coordinates']);\n}\n/**\n * @param {GeoJSONLineString} object Object.\n * @return {LineString} LineString.\n */\nfunction readLineStringGeometry(object) {\n return new LineString(object['coordinates']);\n}\n/**\n * @param {GeoJSONMultiLineString} object Object.\n * @return {MultiLineString} MultiLineString.\n */\nfunction readMultiLineStringGeometry(object) {\n return new MultiLineString(object['coordinates']);\n}\n/**\n * @param {GeoJSONMultiPoint} object Object.\n * @return {MultiPoint} MultiPoint.\n */\nfunction readMultiPointGeometry(object) {\n return new MultiPoint(object['coordinates']);\n}\n/**\n * @param {GeoJSONMultiPolygon} object Object.\n * @return {MultiPolygon} MultiPolygon.\n */\nfunction readMultiPolygonGeometry(object) {\n return new MultiPolygon(object['coordinates']);\n}\n/**\n * @param {GeoJSONPolygon} object Object.\n * @return {Polygon} Polygon.\n */\nfunction readPolygonGeometry(object) {\n return new Polygon(object['coordinates']);\n}\n/**\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writeGeometry(geometry, opt_options) {\n geometry = transformGeometryWithOptions(geometry, true, opt_options);\n var type = geometry.getType();\n /** @type {GeoJSONGeometry} */\n var geoJSON;\n switch (type) {\n case GeometryType.POINT: {\n geoJSON = writePointGeometry(\n /** @type {Point} */ (geometry), opt_options);\n break;\n }\n case GeometryType.LINE_STRING: {\n geoJSON = writeLineStringGeometry(\n /** @type {LineString} */ (geometry), opt_options);\n break;\n }\n case GeometryType.POLYGON: {\n geoJSON = writePolygonGeometry(\n /** @type {Polygon} */ (geometry), opt_options);\n break;\n }\n case GeometryType.MULTI_POINT: {\n geoJSON = writeMultiPointGeometry(\n /** @type {MultiPoint} */ (geometry), opt_options);\n break;\n }\n case GeometryType.MULTI_LINE_STRING: {\n geoJSON = writeMultiLineStringGeometry(\n /** @type {MultiLineString} */ (geometry), opt_options);\n break;\n }\n case GeometryType.MULTI_POLYGON: {\n geoJSON = writeMultiPolygonGeometry(\n /** @type {MultiPolygon} */ (geometry), opt_options);\n break;\n }\n case GeometryType.GEOMETRY_COLLECTION: {\n geoJSON = writeGeometryCollectionGeometry(\n /** @type {GeometryCollection} */ (geometry), opt_options);\n break;\n }\n case GeometryType.CIRCLE: {\n geoJSON = {\n type: 'GeometryCollection',\n geometries: [],\n };\n break;\n }\n default: {\n throw new Error('Unsupported geometry type: ' + type);\n }\n }\n return geoJSON;\n}\n/**\n * @param {GeometryCollection} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {GeoJSONGeometryCollection} GeoJSON geometry collection.\n */\nfunction writeGeometryCollectionGeometry(geometry, opt_options) {\n var geometries = geometry.getGeometriesArray().map(function (geometry) {\n var options = assign({}, opt_options);\n delete options.featureProjection;\n return writeGeometry(geometry, options);\n });\n return {\n type: 'GeometryCollection',\n geometries: geometries,\n };\n}\n/**\n * @param {LineString} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writeLineStringGeometry(geometry, opt_options) {\n return {\n type: 'LineString',\n coordinates: geometry.getCoordinates(),\n };\n}\n/**\n * @param {MultiLineString} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writeMultiLineStringGeometry(geometry, opt_options) {\n return {\n type: 'MultiLineString',\n coordinates: geometry.getCoordinates(),\n };\n}\n/**\n * @param {MultiPoint} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writeMultiPointGeometry(geometry, opt_options) {\n return {\n type: 'MultiPoint',\n coordinates: geometry.getCoordinates(),\n };\n}\n/**\n * @param {MultiPolygon} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writeMultiPolygonGeometry(geometry, opt_options) {\n var right;\n if (opt_options) {\n right = opt_options.rightHanded;\n }\n return {\n type: 'MultiPolygon',\n coordinates: geometry.getCoordinates(right),\n };\n}\n/**\n * @param {Point} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writePointGeometry(geometry, opt_options) {\n return {\n type: 'Point',\n coordinates: geometry.getCoordinates(),\n };\n}\n/**\n * @param {Polygon} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writePolygonGeometry(geometry, opt_options) {\n var right;\n if (opt_options) {\n right = opt_options.rightHanded;\n }\n return {\n type: 'Polygon',\n coordinates: geometry.getCoordinates(right),\n };\n}\nexport default GeoJSON;\n//# sourceMappingURL=GeoJSON.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/format/GMLBase\n */\n// FIXME Envelopes should not be treated as geometries! readEnvelope_ is part\n// of GEOMETRY_PARSERS_ and methods using GEOMETRY_PARSERS_ do not expect\n// envelopes/extents, only geometries!\nimport Feature from '../Feature.js';\nimport GeometryLayout from '../geom/GeometryLayout.js';\nimport LineString from '../geom/LineString.js';\nimport LinearRing from '../geom/LinearRing.js';\nimport MultiLineString from '../geom/MultiLineString.js';\nimport MultiPoint from '../geom/MultiPoint.js';\nimport MultiPolygon from '../geom/MultiPolygon.js';\nimport Point from '../geom/Point.js';\nimport Polygon from '../geom/Polygon.js';\nimport XMLFeature from './XMLFeature.js';\nimport { assign } from '../obj.js';\nimport { extend } from '../array.js';\nimport { getAllTextContent, getAttributeNS, makeArrayPusher, makeReplacer, parseNode, pushParseAndPop, } from '../xml.js';\nimport { get as getProjection } from '../proj.js';\nimport { transformExtentWithOptions, transformGeometryWithOptions, } from './Feature.js';\n/**\n * @const\n * @type {string}\n */\nexport var GMLNS = 'http://www.opengis.net/gml';\n/**\n * A regular expression that matches if a string only contains whitespace\n * characters. It will e.g. match `''`, `' '`, `'\\n'` etc. The non-breaking\n * space (0xa0) is explicitly included as IE doesn't include it in its\n * definition of `\\s`.\n *\n * Information from `goog.string.isEmptyOrWhitespace`: https://github.com/google/closure-library/blob/e877b1e/closure/goog/string/string.js#L156-L160\n *\n * @const\n * @type {RegExp}\n */\nvar ONLY_WHITESPACE_RE = /^[\\s\\xa0]*$/;\n/**\n * @typedef {Object} Options\n * @property {Object|string} [featureNS] Feature\n * namespace. If not defined will be derived from GML. If multiple\n * feature types have been configured which come from different feature\n * namespaces, this will be an object with the keys being the prefixes used\n * in the entries of featureType array. The values of the object will be the\n * feature namespaces themselves. So for instance there might be a featureType\n * item `topp:states` in the `featureType` array and then there will be a key\n * `topp` in the featureNS object with value `http://www.openplans.org/topp`.\n * @property {Array|string} [featureType] Feature type(s) to parse.\n * If multiple feature types need to be configured\n * which come from different feature namespaces, `featureNS` will be an object\n * with the keys being the prefixes used in the entries of featureType array.\n * The values of the object will be the feature namespaces themselves.\n * So for instance there might be a featureType item `topp:states` and then\n * there will be a key named `topp` in the featureNS object with value\n * `http://www.openplans.org/topp`.\n * @property {string} srsName srsName to use when writing geometries.\n * @property {boolean} [surface=false] Write gml:Surface instead of gml:Polygon\n * elements. This also affects the elements in multi-part geometries.\n * @property {boolean} [curve=false] Write gml:Curve instead of gml:LineString\n * elements. This also affects the elements in multi-part geometries.\n * @property {boolean} [multiCurve=true] Write gml:MultiCurve instead of gml:MultiLineString.\n * Since the latter is deprecated in GML 3.\n * @property {boolean} [multiSurface=true] Write gml:multiSurface instead of\n * gml:MultiPolygon. Since the latter is deprecated in GML 3.\n * @property {string} [schemaLocation] Optional schemaLocation to use when\n * writing out the GML, this will override the default provided.\n * @property {boolean} [hasZ=false] If coordinates have a Z value.\n */\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Feature base format for reading and writing data in the GML format.\n * This class cannot be instantiated, it contains only base content that\n * is shared with versioned format classes GML2 and GML3.\n *\n * @abstract\n */\nvar GMLBase = /** @class */ (function (_super) {\n __extends(GMLBase, _super);\n /**\n * @param {Options=} opt_options Optional configuration object.\n */\n function GMLBase(opt_options) {\n var _this = _super.call(this) || this;\n var options = /** @type {Options} */ (opt_options ? opt_options : {});\n /**\n * @protected\n * @type {Array|string|undefined}\n */\n _this.featureType = options.featureType;\n /**\n * @protected\n * @type {Object|string|undefined}\n */\n _this.featureNS = options.featureNS;\n /**\n * @protected\n * @type {string}\n */\n _this.srsName = options.srsName;\n /**\n * @protected\n * @type {string}\n */\n _this.schemaLocation = '';\n /**\n * @type {Object>}\n */\n _this.FEATURE_COLLECTION_PARSERS = {};\n _this.FEATURE_COLLECTION_PARSERS[_this.namespace] = {\n 'featureMember': makeArrayPusher(_this.readFeaturesInternal),\n 'featureMembers': makeReplacer(_this.readFeaturesInternal),\n };\n return _this;\n }\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Array | undefined} Features.\n */\n GMLBase.prototype.readFeaturesInternal = function (node, objectStack) {\n var localName = node.localName;\n var features = null;\n if (localName == 'FeatureCollection') {\n features = pushParseAndPop([], this.FEATURE_COLLECTION_PARSERS, node, objectStack, this);\n }\n else if (localName == 'featureMembers' || localName == 'featureMember') {\n var context = objectStack[0];\n var featureType = context['featureType'];\n var featureNS = context['featureNS'];\n var prefix = 'p';\n var defaultPrefix = 'p0';\n if (!featureType && node.childNodes) {\n (featureType = []), (featureNS = {});\n for (var i = 0, ii = node.childNodes.length; i < ii; ++i) {\n var child = node.childNodes[i];\n if (child.nodeType === 1) {\n var ft = child.nodeName.split(':').pop();\n if (featureType.indexOf(ft) === -1) {\n var key = '';\n var count = 0;\n var uri = child.namespaceURI;\n for (var candidate in featureNS) {\n if (featureNS[candidate] === uri) {\n key = candidate;\n break;\n }\n ++count;\n }\n if (!key) {\n key = prefix + count;\n featureNS[key] = uri;\n }\n featureType.push(key + ':' + ft);\n }\n }\n }\n if (localName != 'featureMember') {\n // recheck featureType for each featureMember\n context['featureType'] = featureType;\n context['featureNS'] = featureNS;\n }\n }\n if (typeof featureNS === 'string') {\n var ns = featureNS;\n featureNS = {};\n featureNS[defaultPrefix] = ns;\n }\n /** @type {Object>} */\n var parsersNS = {};\n var featureTypes = Array.isArray(featureType)\n ? featureType\n : [featureType];\n for (var p in featureNS) {\n /** @type {Object} */\n var parsers = {};\n for (var i = 0, ii = featureTypes.length; i < ii; ++i) {\n var featurePrefix = featureTypes[i].indexOf(':') === -1\n ? defaultPrefix\n : featureTypes[i].split(':')[0];\n if (featurePrefix === p) {\n parsers[featureTypes[i].split(':').pop()] =\n localName == 'featureMembers'\n ? makeArrayPusher(this.readFeatureElement, this)\n : makeReplacer(this.readFeatureElement, this);\n }\n }\n parsersNS[featureNS[p]] = parsers;\n }\n if (localName == 'featureMember') {\n features = pushParseAndPop(undefined, parsersNS, node, objectStack);\n }\n else {\n features = pushParseAndPop([], parsersNS, node, objectStack);\n }\n }\n if (features === null) {\n features = [];\n }\n return features;\n };\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {import(\"../geom/Geometry.js\").default|import(\"../extent.js\").Extent|undefined} Geometry.\n */\n GMLBase.prototype.readGeometryElement = function (node, objectStack) {\n var context = /** @type {Object} */ (objectStack[0]);\n context['srsName'] = node.firstElementChild.getAttribute('srsName');\n context['srsDimension'] = node.firstElementChild.getAttribute('srsDimension');\n var geometry = pushParseAndPop(null, this.GEOMETRY_PARSERS, node, objectStack, this);\n if (geometry) {\n if (Array.isArray(geometry)) {\n return transformExtentWithOptions(\n /** @type {import(\"../extent.js\").Extent} */ (geometry), context);\n }\n else {\n return transformGeometryWithOptions(\n /** @type {import(\"../geom/Geometry.js\").default} */ (geometry), false, context);\n }\n }\n else {\n return undefined;\n }\n };\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @param {boolean} asFeature whether result should be wrapped as a feature.\n * @return {Feature|Object} Feature\n */\n GMLBase.prototype.readFeatureElementInternal = function (node, objectStack, asFeature) {\n var geometryName;\n var values = {};\n for (var n = node.firstElementChild; n; n = n.nextElementSibling) {\n var value = void 0;\n var localName = n.localName;\n // first, check if it is simple attribute\n if (n.childNodes.length === 0 ||\n (n.childNodes.length === 1 &&\n (n.firstChild.nodeType === 3 || n.firstChild.nodeType === 4))) {\n value = getAllTextContent(n, false);\n if (ONLY_WHITESPACE_RE.test(value)) {\n value = undefined;\n }\n }\n else {\n if (asFeature) {\n //if feature, try it as a geometry\n value = this.readGeometryElement(n, objectStack);\n }\n if (!value) {\n //if not a geometry or not a feature, treat it as a complex attribute\n value = this.readFeatureElementInternal(n, objectStack, false);\n }\n else if (localName !== 'boundedBy') {\n // boundedBy is an extent and must not be considered as a geometry\n geometryName = localName;\n }\n }\n if (values[localName]) {\n if (!(values[localName] instanceof Array)) {\n values[localName] = [values[localName]];\n }\n values[localName].push(value);\n }\n else {\n values[localName] = value;\n }\n var len = n.attributes.length;\n if (len > 0) {\n values[localName] = { _content_: values[localName] };\n for (var i = 0; i < len; i++) {\n var attName = n.attributes[i].name;\n values[localName][attName] = n.attributes[i].value;\n }\n }\n }\n if (!asFeature) {\n return values;\n }\n else {\n var feature = new Feature(values);\n if (geometryName) {\n feature.setGeometryName(geometryName);\n }\n var fid = node.getAttribute('fid') || getAttributeNS(node, this.namespace, 'id');\n if (fid) {\n feature.setId(fid);\n }\n return feature;\n }\n };\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Feature} Feature.\n */\n GMLBase.prototype.readFeatureElement = function (node, objectStack) {\n return this.readFeatureElementInternal(node, objectStack, true);\n };\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Point|undefined} Point.\n */\n GMLBase.prototype.readPoint = function (node, objectStack) {\n var flatCoordinates = this.readFlatCoordinatesFromNode(node, objectStack);\n if (flatCoordinates) {\n return new Point(flatCoordinates, GeometryLayout.XYZ);\n }\n };\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {MultiPoint|undefined} MultiPoint.\n */\n GMLBase.prototype.readMultiPoint = function (node, objectStack) {\n /** @type {Array>} */\n var coordinates = pushParseAndPop([], this.MULTIPOINT_PARSERS, node, objectStack, this);\n if (coordinates) {\n return new MultiPoint(coordinates);\n }\n else {\n return undefined;\n }\n };\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {MultiLineString|undefined} MultiLineString.\n */\n GMLBase.prototype.readMultiLineString = function (node, objectStack) {\n /** @type {Array} */\n var lineStrings = pushParseAndPop([], this.MULTILINESTRING_PARSERS, node, objectStack, this);\n if (lineStrings) {\n return new MultiLineString(lineStrings);\n }\n };\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {MultiPolygon|undefined} MultiPolygon.\n */\n GMLBase.prototype.readMultiPolygon = function (node, objectStack) {\n /** @type {Array} */\n var polygons = pushParseAndPop([], this.MULTIPOLYGON_PARSERS, node, objectStack, this);\n if (polygons) {\n return new MultiPolygon(polygons);\n }\n };\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\n GMLBase.prototype.pointMemberParser = function (node, objectStack) {\n parseNode(this.POINTMEMBER_PARSERS, node, objectStack, this);\n };\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\n GMLBase.prototype.lineStringMemberParser = function (node, objectStack) {\n parseNode(this.LINESTRINGMEMBER_PARSERS, node, objectStack, this);\n };\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\n GMLBase.prototype.polygonMemberParser = function (node, objectStack) {\n parseNode(this.POLYGONMEMBER_PARSERS, node, objectStack, this);\n };\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {LineString|undefined} LineString.\n */\n GMLBase.prototype.readLineString = function (node, objectStack) {\n var flatCoordinates = this.readFlatCoordinatesFromNode(node, objectStack);\n if (flatCoordinates) {\n var lineString = new LineString(flatCoordinates, GeometryLayout.XYZ);\n return lineString;\n }\n else {\n return undefined;\n }\n };\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Array|undefined} LinearRing flat coordinates.\n */\n GMLBase.prototype.readFlatLinearRing = function (node, objectStack) {\n var ring = pushParseAndPop(null, this.GEOMETRY_FLAT_COORDINATES_PARSERS, node, objectStack, this);\n if (ring) {\n return ring;\n }\n else {\n return undefined;\n }\n };\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {LinearRing|undefined} LinearRing.\n */\n GMLBase.prototype.readLinearRing = function (node, objectStack) {\n var flatCoordinates = this.readFlatCoordinatesFromNode(node, objectStack);\n if (flatCoordinates) {\n return new LinearRing(flatCoordinates, GeometryLayout.XYZ);\n }\n };\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Polygon|undefined} Polygon.\n */\n GMLBase.prototype.readPolygon = function (node, objectStack) {\n /** @type {Array>} */\n var flatLinearRings = pushParseAndPop([null], this.FLAT_LINEAR_RINGS_PARSERS, node, objectStack, this);\n if (flatLinearRings && flatLinearRings[0]) {\n var flatCoordinates = flatLinearRings[0];\n var ends = [flatCoordinates.length];\n var i = void 0, ii = void 0;\n for (i = 1, ii = flatLinearRings.length; i < ii; ++i) {\n extend(flatCoordinates, flatLinearRings[i]);\n ends.push(flatCoordinates.length);\n }\n return new Polygon(flatCoordinates, GeometryLayout.XYZ, ends);\n }\n else {\n return undefined;\n }\n };\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Array} Flat coordinates.\n */\n GMLBase.prototype.readFlatCoordinatesFromNode = function (node, objectStack) {\n return pushParseAndPop(null, this.GEOMETRY_FLAT_COORDINATES_PARSERS, node, objectStack, this);\n };\n /**\n * @param {Element} node Node.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Options.\n * @protected\n * @return {import(\"../geom/Geometry.js\").default|import(\"../extent.js\").Extent} Geometry.\n */\n //@ts-ignore\n GMLBase.prototype.readGeometryFromNode = function (node, opt_options) {\n var geometry = this.readGeometryElement(node, [\n this.getReadOptions(node, opt_options ? opt_options : {}),\n ]);\n return geometry ? geometry : null;\n };\n /**\n * @param {Element} node Node.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Options.\n * @return {Array} Features.\n */\n GMLBase.prototype.readFeaturesFromNode = function (node, opt_options) {\n var options = {\n featureType: this.featureType,\n featureNS: this.featureNS,\n };\n if (opt_options) {\n assign(options, this.getReadOptions(node, opt_options));\n }\n var features = this.readFeaturesInternal(node, [options]);\n return features || [];\n };\n /**\n * @param {Element} node Node.\n * @return {import(\"../proj/Projection.js\").default} Projection.\n */\n GMLBase.prototype.readProjectionFromNode = function (node) {\n return getProjection(this.srsName\n ? this.srsName\n : node.firstElementChild.getAttribute('srsName'));\n };\n return GMLBase;\n}(XMLFeature));\nGMLBase.prototype.namespace = GMLNS;\n/**\n * @const\n * @type {Object>}\n */\nGMLBase.prototype.FLAT_LINEAR_RINGS_PARSERS = {\n 'http://www.opengis.net/gml': {},\n};\n/**\n * @const\n * @type {Object>}\n */\nGMLBase.prototype.GEOMETRY_FLAT_COORDINATES_PARSERS = {\n 'http://www.opengis.net/gml': {},\n};\n/**\n * @const\n * @type {Object>}\n */\nGMLBase.prototype.GEOMETRY_PARSERS = {\n 'http://www.opengis.net/gml': {},\n};\n/**\n * @const\n * @type {Object>}\n */\nGMLBase.prototype.MULTIPOINT_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'pointMember': makeArrayPusher(GMLBase.prototype.pointMemberParser),\n 'pointMembers': makeArrayPusher(GMLBase.prototype.pointMemberParser),\n },\n};\n/**\n * @const\n * @type {Object>}\n */\nGMLBase.prototype.MULTILINESTRING_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'lineStringMember': makeArrayPusher(GMLBase.prototype.lineStringMemberParser),\n 'lineStringMembers': makeArrayPusher(GMLBase.prototype.lineStringMemberParser),\n },\n};\n/**\n * @const\n * @type {Object>}\n */\nGMLBase.prototype.MULTIPOLYGON_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'polygonMember': makeArrayPusher(GMLBase.prototype.polygonMemberParser),\n 'polygonMembers': makeArrayPusher(GMLBase.prototype.polygonMemberParser),\n },\n};\n/**\n * @const\n * @type {Object>}\n */\nGMLBase.prototype.POINTMEMBER_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'Point': makeArrayPusher(GMLBase.prototype.readFlatCoordinatesFromNode),\n },\n};\n/**\n * @const\n * @type {Object>}\n */\nGMLBase.prototype.LINESTRINGMEMBER_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'LineString': makeArrayPusher(GMLBase.prototype.readLineString),\n },\n};\n/**\n * @const\n * @type {Object>}\n */\nGMLBase.prototype.POLYGONMEMBER_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'Polygon': makeArrayPusher(GMLBase.prototype.readPolygon),\n },\n};\n/**\n * @const\n * @type {Object>}\n */\nGMLBase.prototype.RING_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'LinearRing': makeReplacer(GMLBase.prototype.readFlatLinearRing),\n },\n};\nexport default GMLBase;\n//# sourceMappingURL=GMLBase.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/format/GML2\n */\nimport GMLBase, { GMLNS } from './GMLBase.js';\nimport { OBJECT_PROPERTY_NODE_FACTORY, createElementNS, getAllTextContent, makeArrayPusher, makeChildAppender, makeReplacer, makeSimpleNodeFactory, pushParseAndPop, pushSerializeAndPop, } from '../xml.js';\nimport { assign } from '../obj.js';\nimport { createOrUpdate } from '../extent.js';\nimport { get as getProjection } from '../proj.js';\nimport { transformExtentWithOptions, transformGeometryWithOptions, } from './Feature.js';\nimport { writeStringTextNode } from './xsd.js';\n/**\n * @const\n * @type {string}\n */\nvar schemaLocation = GMLNS + ' http://schemas.opengis.net/gml/2.1.2/feature.xsd';\n/**\n * @const\n * @type {Object}\n */\nvar MULTIGEOMETRY_TO_MEMBER_NODENAME = {\n 'MultiLineString': 'lineStringMember',\n 'MultiCurve': 'curveMember',\n 'MultiPolygon': 'polygonMember',\n 'MultiSurface': 'surfaceMember',\n};\n/**\n * @classdesc\n * Feature format for reading and writing data in the GML format,\n * version 2.1.2.\n *\n * @api\n */\nvar GML2 = /** @class */ (function (_super) {\n __extends(GML2, _super);\n /**\n * @param {import(\"./GMLBase.js\").Options=} opt_options Optional configuration object.\n */\n function GML2(opt_options) {\n var _this = this;\n var options = \n /** @type {import(\"./GMLBase.js\").Options} */\n (opt_options ? opt_options : {});\n _this = _super.call(this, options) || this;\n _this.FEATURE_COLLECTION_PARSERS[GMLNS]['featureMember'] = makeArrayPusher(_this.readFeaturesInternal);\n /**\n * @type {string}\n */\n _this.schemaLocation = options.schemaLocation\n ? options.schemaLocation\n : schemaLocation;\n return _this;\n }\n /**\n * @param {Node} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Array|undefined} Flat coordinates.\n */\n GML2.prototype.readFlatCoordinates = function (node, objectStack) {\n var s = getAllTextContent(node, false).replace(/^\\s*|\\s*$/g, '');\n var context = /** @type {import(\"../xml.js\").NodeStackItem} */ (objectStack[0]);\n var containerSrs = context['srsName'];\n var axisOrientation = 'enu';\n if (containerSrs) {\n var proj = getProjection(containerSrs);\n if (proj) {\n axisOrientation = proj.getAxisOrientation();\n }\n }\n var coordsGroups = s.trim().split(/\\s+/);\n var flatCoordinates = [];\n for (var i = 0, ii = coordsGroups.length; i < ii; i++) {\n var coords = coordsGroups[i].split(/,+/);\n var x = parseFloat(coords[0]);\n var y = parseFloat(coords[1]);\n var z = coords.length === 3 ? parseFloat(coords[2]) : 0;\n if (axisOrientation.substr(0, 2) === 'en') {\n flatCoordinates.push(x, y, z);\n }\n else {\n flatCoordinates.push(y, x, z);\n }\n }\n return flatCoordinates;\n };\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {import(\"../extent.js\").Extent|undefined} Envelope.\n */\n GML2.prototype.readBox = function (node, objectStack) {\n /** @type {Array} */\n var flatCoordinates = pushParseAndPop([null], this.BOX_PARSERS_, node, objectStack, this);\n return createOrUpdate(flatCoordinates[1][0], flatCoordinates[1][1], flatCoordinates[1][3], flatCoordinates[1][4]);\n };\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\n GML2.prototype.innerBoundaryIsParser = function (node, objectStack) {\n /** @type {Array|undefined} */\n var flatLinearRing = pushParseAndPop(undefined, this.RING_PARSERS, node, objectStack, this);\n if (flatLinearRing) {\n var flatLinearRings = \n /** @type {Array>} */\n (objectStack[objectStack.length - 1]);\n flatLinearRings.push(flatLinearRing);\n }\n };\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\n GML2.prototype.outerBoundaryIsParser = function (node, objectStack) {\n /** @type {Array|undefined} */\n var flatLinearRing = pushParseAndPop(undefined, this.RING_PARSERS, node, objectStack, this);\n if (flatLinearRing) {\n var flatLinearRings = \n /** @type {Array>} */\n (objectStack[objectStack.length - 1]);\n flatLinearRings[0] = flatLinearRing;\n }\n };\n /**\n * @const\n * @param {*} value Value.\n * @param {Array<*>} objectStack Object stack.\n * @param {string=} opt_nodeName Node name.\n * @return {Element|undefined} Node.\n * @private\n */\n GML2.prototype.GEOMETRY_NODE_FACTORY_ = function (value, objectStack, opt_nodeName) {\n var context = objectStack[objectStack.length - 1];\n var multiSurface = context['multiSurface'];\n var surface = context['surface'];\n var multiCurve = context['multiCurve'];\n var nodeName;\n if (!Array.isArray(value)) {\n nodeName = /** @type {import(\"../geom/Geometry.js\").default} */ (value).getType();\n if (nodeName === 'MultiPolygon' && multiSurface === true) {\n nodeName = 'MultiSurface';\n }\n else if (nodeName === 'Polygon' && surface === true) {\n nodeName = 'Surface';\n }\n else if (nodeName === 'MultiLineString' && multiCurve === true) {\n nodeName = 'MultiCurve';\n }\n }\n else {\n nodeName = 'Envelope';\n }\n return createElementNS('http://www.opengis.net/gml', nodeName);\n };\n /**\n * @param {Element} node Node.\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {Array<*>} objectStack Node stack.\n */\n GML2.prototype.writeFeatureElement = function (node, feature, objectStack) {\n var fid = feature.getId();\n if (fid) {\n node.setAttribute('fid', /** @type {string} */ (fid));\n }\n var context = /** @type {Object} */ (objectStack[objectStack.length - 1]);\n var featureNS = context['featureNS'];\n var geometryName = feature.getGeometryName();\n if (!context.serializers) {\n context.serializers = {};\n context.serializers[featureNS] = {};\n }\n var keys = [];\n var values = [];\n if (feature.hasProperties()) {\n var properties = feature.getProperties();\n for (var key in properties) {\n var value = properties[key];\n if (value !== null) {\n keys.push(key);\n values.push(value);\n if (key == geometryName ||\n typeof ( /** @type {?} */(value).getSimplifiedGeometry) ===\n 'function') {\n if (!(key in context.serializers[featureNS])) {\n context.serializers[featureNS][key] = makeChildAppender(this.writeGeometryElement, this);\n }\n }\n else {\n if (!(key in context.serializers[featureNS])) {\n context.serializers[featureNS][key] = makeChildAppender(writeStringTextNode);\n }\n }\n }\n }\n }\n var item = assign({}, context);\n item.node = node;\n pushSerializeAndPop(\n /** @type {import(\"../xml.js\").NodeStackItem} */\n (item), context.serializers, makeSimpleNodeFactory(undefined, featureNS), values, objectStack, keys);\n };\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/LineString.js\").default} geometry LineString geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n GML2.prototype.writeCurveOrLineString = function (node, geometry, objectStack) {\n var context = objectStack[objectStack.length - 1];\n var srsName = context['srsName'];\n if (node.nodeName !== 'LineStringSegment' && srsName) {\n node.setAttribute('srsName', srsName);\n }\n if (node.nodeName === 'LineString' ||\n node.nodeName === 'LineStringSegment') {\n var coordinates = this.createCoordinatesNode_(node.namespaceURI);\n node.appendChild(coordinates);\n this.writeCoordinates_(coordinates, geometry, objectStack);\n }\n else if (node.nodeName === 'Curve') {\n var segments = createElementNS(node.namespaceURI, 'segments');\n node.appendChild(segments);\n this.writeCurveSegments_(segments, geometry, objectStack);\n }\n };\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/LineString.js\").default} line LineString geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n GML2.prototype.writeLineStringOrCurveMember = function (node, line, objectStack) {\n var child = this.GEOMETRY_NODE_FACTORY_(line, objectStack);\n if (child) {\n node.appendChild(child);\n this.writeCurveOrLineString(child, line, objectStack);\n }\n };\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/MultiLineString.js\").default} geometry MultiLineString geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n GML2.prototype.writeMultiCurveOrLineString = function (node, geometry, objectStack) {\n var context = objectStack[objectStack.length - 1];\n var hasZ = context['hasZ'];\n var srsName = context['srsName'];\n var curve = context['curve'];\n if (srsName) {\n node.setAttribute('srsName', srsName);\n }\n var lines = geometry.getLineStrings();\n pushSerializeAndPop({ node: node, hasZ: hasZ, srsName: srsName, curve: curve }, this.LINESTRINGORCURVEMEMBER_SERIALIZERS, this.MULTIGEOMETRY_MEMBER_NODE_FACTORY_, lines, objectStack, undefined, this);\n };\n /**\n * @param {Node} node Node.\n * @param {import(\"../geom/Geometry.js\").default|import(\"../extent.js\").Extent} geometry Geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n GML2.prototype.writeGeometryElement = function (node, geometry, objectStack) {\n var context = /** @type {import(\"./Feature.js\").WriteOptions} */ (objectStack[objectStack.length - 1]);\n var item = assign({}, context);\n item['node'] = node;\n var value;\n if (Array.isArray(geometry)) {\n value = transformExtentWithOptions(\n /** @type {import(\"../extent.js\").Extent} */ (geometry), context);\n }\n else {\n value = transformGeometryWithOptions(\n /** @type {import(\"../geom/Geometry.js\").default} */ (geometry), true, context);\n }\n pushSerializeAndPop(\n /** @type {import(\"../xml.js\").NodeStackItem} */\n (item), this.GEOMETRY_SERIALIZERS, this.GEOMETRY_NODE_FACTORY_, [value], objectStack, undefined, this);\n };\n /**\n * @param {string} namespaceURI XML namespace.\n * @returns {Element} coordinates node.\n * @private\n */\n GML2.prototype.createCoordinatesNode_ = function (namespaceURI) {\n var coordinates = createElementNS(namespaceURI, 'coordinates');\n coordinates.setAttribute('decimal', '.');\n coordinates.setAttribute('cs', ',');\n coordinates.setAttribute('ts', ' ');\n return coordinates;\n };\n /**\n * @param {Node} node Node.\n * @param {import(\"../geom/LineString.js\").default|import(\"../geom/LinearRing.js\").default} value Geometry.\n * @param {Array<*>} objectStack Node stack.\n * @private\n */\n GML2.prototype.writeCoordinates_ = function (node, value, objectStack) {\n var context = objectStack[objectStack.length - 1];\n var hasZ = context['hasZ'];\n var srsName = context['srsName'];\n // only 2d for simple features profile\n var points = value.getCoordinates();\n var len = points.length;\n var parts = new Array(len);\n for (var i = 0; i < len; ++i) {\n var point = points[i];\n parts[i] = this.getCoords_(point, srsName, hasZ);\n }\n writeStringTextNode(node, parts.join(' '));\n };\n /**\n * @param {Node} node Node.\n * @param {import(\"../geom/LineString.js\").default} line LineString geometry.\n * @param {Array<*>} objectStack Node stack.\n * @private\n */\n GML2.prototype.writeCurveSegments_ = function (node, line, objectStack) {\n var child = createElementNS(node.namespaceURI, 'LineStringSegment');\n node.appendChild(child);\n this.writeCurveOrLineString(child, line, objectStack);\n };\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/Polygon.js\").default} geometry Polygon geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n GML2.prototype.writeSurfaceOrPolygon = function (node, geometry, objectStack) {\n var context = objectStack[objectStack.length - 1];\n var hasZ = context['hasZ'];\n var srsName = context['srsName'];\n if (node.nodeName !== 'PolygonPatch' && srsName) {\n node.setAttribute('srsName', srsName);\n }\n if (node.nodeName === 'Polygon' || node.nodeName === 'PolygonPatch') {\n var rings = geometry.getLinearRings();\n pushSerializeAndPop({ node: node, hasZ: hasZ, srsName: srsName }, this.RING_SERIALIZERS, this.RING_NODE_FACTORY_, rings, objectStack, undefined, this);\n }\n else if (node.nodeName === 'Surface') {\n var patches = createElementNS(node.namespaceURI, 'patches');\n node.appendChild(patches);\n this.writeSurfacePatches_(patches, geometry, objectStack);\n }\n };\n /**\n * @param {*} value Value.\n * @param {Array<*>} objectStack Object stack.\n * @param {string=} opt_nodeName Node name.\n * @return {Node} Node.\n * @private\n */\n GML2.prototype.RING_NODE_FACTORY_ = function (value, objectStack, opt_nodeName) {\n var context = objectStack[objectStack.length - 1];\n var parentNode = context.node;\n var exteriorWritten = context['exteriorWritten'];\n if (exteriorWritten === undefined) {\n context['exteriorWritten'] = true;\n }\n return createElementNS(parentNode.namespaceURI, exteriorWritten !== undefined ? 'innerBoundaryIs' : 'outerBoundaryIs');\n };\n /**\n * @param {Node} node Node.\n * @param {import(\"../geom/Polygon.js\").default} polygon Polygon geometry.\n * @param {Array<*>} objectStack Node stack.\n * @private\n */\n GML2.prototype.writeSurfacePatches_ = function (node, polygon, objectStack) {\n var child = createElementNS(node.namespaceURI, 'PolygonPatch');\n node.appendChild(child);\n this.writeSurfaceOrPolygon(child, polygon, objectStack);\n };\n /**\n * @param {Node} node Node.\n * @param {import(\"../geom/LinearRing.js\").default} ring LinearRing geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n GML2.prototype.writeRing = function (node, ring, objectStack) {\n var linearRing = createElementNS(node.namespaceURI, 'LinearRing');\n node.appendChild(linearRing);\n this.writeLinearRing(linearRing, ring, objectStack);\n };\n /**\n * @param {Array} point Point geometry.\n * @param {string=} opt_srsName Optional srsName\n * @param {boolean=} opt_hasZ whether the geometry has a Z coordinate (is 3D) or not.\n * @return {string} The coords string.\n * @private\n */\n GML2.prototype.getCoords_ = function (point, opt_srsName, opt_hasZ) {\n var axisOrientation = 'enu';\n if (opt_srsName) {\n axisOrientation = getProjection(opt_srsName).getAxisOrientation();\n }\n var coords = axisOrientation.substr(0, 2) === 'en'\n ? point[0] + ',' + point[1]\n : point[1] + ',' + point[0];\n if (opt_hasZ) {\n // For newly created points, Z can be undefined.\n var z = point[2] || 0;\n coords += ',' + z;\n }\n return coords;\n };\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/Point.js\").default} geometry Point geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n GML2.prototype.writePoint = function (node, geometry, objectStack) {\n var context = objectStack[objectStack.length - 1];\n var hasZ = context['hasZ'];\n var srsName = context['srsName'];\n if (srsName) {\n node.setAttribute('srsName', srsName);\n }\n var coordinates = this.createCoordinatesNode_(node.namespaceURI);\n node.appendChild(coordinates);\n var point = geometry.getCoordinates();\n var coord = this.getCoords_(point, srsName, hasZ);\n writeStringTextNode(coordinates, coord);\n };\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/MultiPoint.js\").default} geometry MultiPoint geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n GML2.prototype.writeMultiPoint = function (node, geometry, objectStack) {\n var context = objectStack[objectStack.length - 1];\n var hasZ = context['hasZ'];\n var srsName = context['srsName'];\n if (srsName) {\n node.setAttribute('srsName', srsName);\n }\n var points = geometry.getPoints();\n pushSerializeAndPop({ node: node, hasZ: hasZ, srsName: srsName }, this.POINTMEMBER_SERIALIZERS, makeSimpleNodeFactory('pointMember'), points, objectStack, undefined, this);\n };\n /**\n * @param {Node} node Node.\n * @param {import(\"../geom/Point.js\").default} point Point geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n GML2.prototype.writePointMember = function (node, point, objectStack) {\n var child = createElementNS(node.namespaceURI, 'Point');\n node.appendChild(child);\n this.writePoint(child, point, objectStack);\n };\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/LinearRing.js\").default} geometry LinearRing geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n GML2.prototype.writeLinearRing = function (node, geometry, objectStack) {\n var context = objectStack[objectStack.length - 1];\n var srsName = context['srsName'];\n if (srsName) {\n node.setAttribute('srsName', srsName);\n }\n var coordinates = this.createCoordinatesNode_(node.namespaceURI);\n node.appendChild(coordinates);\n this.writeCoordinates_(coordinates, geometry, objectStack);\n };\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/MultiPolygon.js\").default} geometry MultiPolygon geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n GML2.prototype.writeMultiSurfaceOrPolygon = function (node, geometry, objectStack) {\n var context = objectStack[objectStack.length - 1];\n var hasZ = context['hasZ'];\n var srsName = context['srsName'];\n var surface = context['surface'];\n if (srsName) {\n node.setAttribute('srsName', srsName);\n }\n var polygons = geometry.getPolygons();\n pushSerializeAndPop({ node: node, hasZ: hasZ, srsName: srsName, surface: surface }, this.SURFACEORPOLYGONMEMBER_SERIALIZERS, this.MULTIGEOMETRY_MEMBER_NODE_FACTORY_, polygons, objectStack, undefined, this);\n };\n /**\n * @param {Node} node Node.\n * @param {import(\"../geom/Polygon.js\").default} polygon Polygon geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n GML2.prototype.writeSurfaceOrPolygonMember = function (node, polygon, objectStack) {\n var child = this.GEOMETRY_NODE_FACTORY_(polygon, objectStack);\n if (child) {\n node.appendChild(child);\n this.writeSurfaceOrPolygon(child, polygon, objectStack);\n }\n };\n /**\n * @param {Element} node Node.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @param {Array<*>} objectStack Node stack.\n */\n GML2.prototype.writeEnvelope = function (node, extent, objectStack) {\n var context = objectStack[objectStack.length - 1];\n var srsName = context['srsName'];\n if (srsName) {\n node.setAttribute('srsName', srsName);\n }\n var keys = ['lowerCorner', 'upperCorner'];\n var values = [extent[0] + ' ' + extent[1], extent[2] + ' ' + extent[3]];\n pushSerializeAndPop(\n /** @type {import(\"../xml.js\").NodeStackItem} */\n ({ node: node }), this.ENVELOPE_SERIALIZERS, OBJECT_PROPERTY_NODE_FACTORY, values, objectStack, keys, this);\n };\n /**\n * @const\n * @param {*} value Value.\n * @param {Array<*>} objectStack Object stack.\n * @param {string=} opt_nodeName Node name.\n * @return {Node|undefined} Node.\n * @private\n */\n GML2.prototype.MULTIGEOMETRY_MEMBER_NODE_FACTORY_ = function (value, objectStack, opt_nodeName) {\n var parentNode = objectStack[objectStack.length - 1].node;\n return createElementNS('http://www.opengis.net/gml', MULTIGEOMETRY_TO_MEMBER_NODENAME[parentNode.nodeName]);\n };\n return GML2;\n}(GMLBase));\n/**\n * @const\n * @type {Object>}\n */\nGML2.prototype.GEOMETRY_FLAT_COORDINATES_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'coordinates': makeReplacer(GML2.prototype.readFlatCoordinates),\n },\n};\n/**\n * @const\n * @type {Object>}\n */\nGML2.prototype.FLAT_LINEAR_RINGS_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'innerBoundaryIs': GML2.prototype.innerBoundaryIsParser,\n 'outerBoundaryIs': GML2.prototype.outerBoundaryIsParser,\n },\n};\n/**\n * @const\n * @type {Object>}\n */\nGML2.prototype.BOX_PARSERS_ = {\n 'http://www.opengis.net/gml': {\n 'coordinates': makeArrayPusher(GML2.prototype.readFlatCoordinates),\n },\n};\n/**\n * @const\n * @type {Object>}\n */\nGML2.prototype.GEOMETRY_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'Point': makeReplacer(GMLBase.prototype.readPoint),\n 'MultiPoint': makeReplacer(GMLBase.prototype.readMultiPoint),\n 'LineString': makeReplacer(GMLBase.prototype.readLineString),\n 'MultiLineString': makeReplacer(GMLBase.prototype.readMultiLineString),\n 'LinearRing': makeReplacer(GMLBase.prototype.readLinearRing),\n 'Polygon': makeReplacer(GMLBase.prototype.readPolygon),\n 'MultiPolygon': makeReplacer(GMLBase.prototype.readMultiPolygon),\n 'Box': makeReplacer(GML2.prototype.readBox),\n },\n};\n/**\n * @const\n * @type {Object>}\n */\nGML2.prototype.GEOMETRY_SERIALIZERS = {\n 'http://www.opengis.net/gml': {\n 'Curve': makeChildAppender(GML2.prototype.writeCurveOrLineString),\n 'MultiCurve': makeChildAppender(GML2.prototype.writeMultiCurveOrLineString),\n 'Point': makeChildAppender(GML2.prototype.writePoint),\n 'MultiPoint': makeChildAppender(GML2.prototype.writeMultiPoint),\n 'LineString': makeChildAppender(GML2.prototype.writeCurveOrLineString),\n 'MultiLineString': makeChildAppender(GML2.prototype.writeMultiCurveOrLineString),\n 'LinearRing': makeChildAppender(GML2.prototype.writeLinearRing),\n 'Polygon': makeChildAppender(GML2.prototype.writeSurfaceOrPolygon),\n 'MultiPolygon': makeChildAppender(GML2.prototype.writeMultiSurfaceOrPolygon),\n 'Surface': makeChildAppender(GML2.prototype.writeSurfaceOrPolygon),\n 'MultiSurface': makeChildAppender(GML2.prototype.writeMultiSurfaceOrPolygon),\n 'Envelope': makeChildAppender(GML2.prototype.writeEnvelope),\n },\n};\n/**\n * @type {Object>}\n */\nGML2.prototype.LINESTRINGORCURVEMEMBER_SERIALIZERS = {\n 'http://www.opengis.net/gml': {\n 'lineStringMember': makeChildAppender(GML2.prototype.writeLineStringOrCurveMember),\n 'curveMember': makeChildAppender(GML2.prototype.writeLineStringOrCurveMember),\n },\n};\n/**\n * @type {Object>}\n */\nGML2.prototype.RING_SERIALIZERS = {\n 'http://www.opengis.net/gml': {\n 'outerBoundaryIs': makeChildAppender(GML2.prototype.writeRing),\n 'innerBoundaryIs': makeChildAppender(GML2.prototype.writeRing),\n },\n};\n/**\n * @type {Object>}\n */\nGML2.prototype.POINTMEMBER_SERIALIZERS = {\n 'http://www.opengis.net/gml': {\n 'pointMember': makeChildAppender(GML2.prototype.writePointMember),\n },\n};\n/**\n * @const\n * @type {Object>}\n */\nGML2.prototype.SURFACEORPOLYGONMEMBER_SERIALIZERS = {\n 'http://www.opengis.net/gml': {\n 'surfaceMember': makeChildAppender(GML2.prototype.writeSurfaceOrPolygonMember),\n 'polygonMember': makeChildAppender(GML2.prototype.writeSurfaceOrPolygonMember),\n },\n};\n/**\n * @type {Object>}\n */\nGML2.prototype.ENVELOPE_SERIALIZERS = {\n 'http://www.opengis.net/gml': {\n 'lowerCorner': makeChildAppender(writeStringTextNode),\n 'upperCorner': makeChildAppender(writeStringTextNode),\n },\n};\nexport default GML2;\n//# sourceMappingURL=GML2.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/format/GML3\n */\nimport GMLBase, { GMLNS } from './GMLBase.js';\nimport GeometryLayout from '../geom/GeometryLayout.js';\nimport LineString from '../geom/LineString.js';\nimport MultiLineString from '../geom/MultiLineString.js';\nimport MultiPolygon from '../geom/MultiPolygon.js';\nimport Polygon from '../geom/Polygon.js';\nimport { OBJECT_PROPERTY_NODE_FACTORY, XML_SCHEMA_INSTANCE_URI, createElementNS, getAllTextContent, makeArrayPusher, makeChildAppender, makeReplacer, makeSimpleNodeFactory, parseNode, pushParseAndPop, pushSerializeAndPop, } from '../xml.js';\nimport { assign } from '../obj.js';\nimport { createOrUpdate } from '../extent.js';\nimport { extend } from '../array.js';\nimport { get as getProjection } from '../proj.js';\nimport { readNonNegativeIntegerString, writeStringTextNode } from './xsd.js';\nimport { transformExtentWithOptions, transformGeometryWithOptions, } from './Feature.js';\n/**\n * @const\n * @type {string}\n * @private\n */\nvar schemaLocation = GMLNS +\n ' http://schemas.opengis.net/gml/3.1.1/profiles/gmlsfProfile/' +\n '1.0.0/gmlsf.xsd';\n/**\n * @const\n * @type {Object}\n */\nvar MULTIGEOMETRY_TO_MEMBER_NODENAME = {\n 'MultiLineString': 'lineStringMember',\n 'MultiCurve': 'curveMember',\n 'MultiPolygon': 'polygonMember',\n 'MultiSurface': 'surfaceMember',\n};\n/**\n * @classdesc\n * Feature format for reading and writing data in the GML format\n * version 3.1.1.\n * Currently only supports GML 3.1.1 Simple Features profile.\n *\n * @api\n */\nvar GML3 = /** @class */ (function (_super) {\n __extends(GML3, _super);\n /**\n * @param {import(\"./GMLBase.js\").Options=} opt_options Optional configuration object.\n */\n function GML3(opt_options) {\n var _this = this;\n var options = \n /** @type {import(\"./GMLBase.js\").Options} */\n (opt_options ? opt_options : {});\n _this = _super.call(this, options) || this;\n /**\n * @private\n * @type {boolean}\n */\n _this.surface_ = options.surface !== undefined ? options.surface : false;\n /**\n * @private\n * @type {boolean}\n */\n _this.curve_ = options.curve !== undefined ? options.curve : false;\n /**\n * @private\n * @type {boolean}\n */\n _this.multiCurve_ =\n options.multiCurve !== undefined ? options.multiCurve : true;\n /**\n * @private\n * @type {boolean}\n */\n _this.multiSurface_ =\n options.multiSurface !== undefined ? options.multiSurface : true;\n /**\n * @type {string}\n */\n _this.schemaLocation = options.schemaLocation\n ? options.schemaLocation\n : schemaLocation;\n /**\n * @private\n * @type {boolean}\n */\n _this.hasZ = options.hasZ !== undefined ? options.hasZ : false;\n return _this;\n }\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {MultiLineString|undefined} MultiLineString.\n */\n GML3.prototype.readMultiCurve = function (node, objectStack) {\n /** @type {Array} */\n var lineStrings = pushParseAndPop([], this.MULTICURVE_PARSERS, node, objectStack, this);\n if (lineStrings) {\n var multiLineString = new MultiLineString(lineStrings);\n return multiLineString;\n }\n else {\n return undefined;\n }\n };\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {MultiPolygon|undefined} MultiPolygon.\n */\n GML3.prototype.readMultiSurface = function (node, objectStack) {\n /** @type {Array} */\n var polygons = pushParseAndPop([], this.MULTISURFACE_PARSERS, node, objectStack, this);\n if (polygons) {\n return new MultiPolygon(polygons);\n }\n };\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\n GML3.prototype.curveMemberParser = function (node, objectStack) {\n parseNode(this.CURVEMEMBER_PARSERS, node, objectStack, this);\n };\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\n GML3.prototype.surfaceMemberParser = function (node, objectStack) {\n parseNode(this.SURFACEMEMBER_PARSERS, node, objectStack, this);\n };\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Array<(Array)>|undefined} flat coordinates.\n */\n GML3.prototype.readPatch = function (node, objectStack) {\n return pushParseAndPop([null], this.PATCHES_PARSERS, node, objectStack, this);\n };\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Array|undefined} flat coordinates.\n */\n GML3.prototype.readSegment = function (node, objectStack) {\n return pushParseAndPop([null], this.SEGMENTS_PARSERS, node, objectStack, this);\n };\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Array<(Array)>|undefined} flat coordinates.\n */\n GML3.prototype.readPolygonPatch = function (node, objectStack) {\n return pushParseAndPop([null], this.FLAT_LINEAR_RINGS_PARSERS, node, objectStack, this);\n };\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Array|undefined} flat coordinates.\n */\n GML3.prototype.readLineStringSegment = function (node, objectStack) {\n return pushParseAndPop([null], this.GEOMETRY_FLAT_COORDINATES_PARSERS, node, objectStack, this);\n };\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\n GML3.prototype.interiorParser = function (node, objectStack) {\n /** @type {Array|undefined} */\n var flatLinearRing = pushParseAndPop(undefined, this.RING_PARSERS, node, objectStack, this);\n if (flatLinearRing) {\n var flatLinearRings = \n /** @type {Array>} */\n (objectStack[objectStack.length - 1]);\n flatLinearRings.push(flatLinearRing);\n }\n };\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\n GML3.prototype.exteriorParser = function (node, objectStack) {\n /** @type {Array|undefined} */\n var flatLinearRing = pushParseAndPop(undefined, this.RING_PARSERS, node, objectStack, this);\n if (flatLinearRing) {\n var flatLinearRings = \n /** @type {Array>} */\n (objectStack[objectStack.length - 1]);\n flatLinearRings[0] = flatLinearRing;\n }\n };\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Polygon|undefined} Polygon.\n */\n GML3.prototype.readSurface = function (node, objectStack) {\n /** @type {Array>} */\n var flatLinearRings = pushParseAndPop([null], this.SURFACE_PARSERS, node, objectStack, this);\n if (flatLinearRings && flatLinearRings[0]) {\n var flatCoordinates = flatLinearRings[0];\n var ends = [flatCoordinates.length];\n var i = void 0, ii = void 0;\n for (i = 1, ii = flatLinearRings.length; i < ii; ++i) {\n extend(flatCoordinates, flatLinearRings[i]);\n ends.push(flatCoordinates.length);\n }\n return new Polygon(flatCoordinates, GeometryLayout.XYZ, ends);\n }\n else {\n return undefined;\n }\n };\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {LineString|undefined} LineString.\n */\n GML3.prototype.readCurve = function (node, objectStack) {\n /** @type {Array} */\n var flatCoordinates = pushParseAndPop([null], this.CURVE_PARSERS, node, objectStack, this);\n if (flatCoordinates) {\n var lineString = new LineString(flatCoordinates, GeometryLayout.XYZ);\n return lineString;\n }\n else {\n return undefined;\n }\n };\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {import(\"../extent.js\").Extent|undefined} Envelope.\n */\n GML3.prototype.readEnvelope = function (node, objectStack) {\n /** @type {Array} */\n var flatCoordinates = pushParseAndPop([null], this.ENVELOPE_PARSERS, node, objectStack, this);\n return createOrUpdate(flatCoordinates[1][0], flatCoordinates[1][1], flatCoordinates[2][0], flatCoordinates[2][1]);\n };\n /**\n * @param {Node} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Array|undefined} Flat coordinates.\n */\n GML3.prototype.readFlatPos = function (node, objectStack) {\n var s = getAllTextContent(node, false);\n var re = /^\\s*([+\\-]?\\d*\\.?\\d+(?:[eE][+\\-]?\\d+)?)\\s*/;\n /** @type {Array} */\n var flatCoordinates = [];\n var m;\n while ((m = re.exec(s))) {\n flatCoordinates.push(parseFloat(m[1]));\n s = s.substr(m[0].length);\n }\n if (s !== '') {\n return undefined;\n }\n var context = objectStack[0];\n var containerSrs = context['srsName'];\n var axisOrientation = 'enu';\n if (containerSrs) {\n var proj = getProjection(containerSrs);\n axisOrientation = proj.getAxisOrientation();\n }\n if (axisOrientation === 'neu') {\n var i = void 0, ii = void 0;\n for (i = 0, ii = flatCoordinates.length; i < ii; i += 3) {\n var y = flatCoordinates[i];\n var x = flatCoordinates[i + 1];\n flatCoordinates[i] = x;\n flatCoordinates[i + 1] = y;\n }\n }\n var len = flatCoordinates.length;\n if (len == 2) {\n flatCoordinates.push(0);\n }\n if (len === 0) {\n return undefined;\n }\n return flatCoordinates;\n };\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Array|undefined} Flat coordinates.\n */\n GML3.prototype.readFlatPosList = function (node, objectStack) {\n var s = getAllTextContent(node, false).replace(/^\\s*|\\s*$/g, '');\n var context = objectStack[0];\n var containerSrs = context['srsName'];\n var contextDimension = context['srsDimension'];\n var axisOrientation = 'enu';\n if (containerSrs) {\n var proj = getProjection(containerSrs);\n axisOrientation = proj.getAxisOrientation();\n }\n var coords = s.split(/\\s+/);\n // The \"dimension\" attribute is from the GML 3.0.1 spec.\n var dim = 2;\n if (node.getAttribute('srsDimension')) {\n dim = readNonNegativeIntegerString(node.getAttribute('srsDimension'));\n }\n else if (node.getAttribute('dimension')) {\n dim = readNonNegativeIntegerString(node.getAttribute('dimension'));\n }\n else if (\n /** @type {Element} */ (node.parentNode).getAttribute('srsDimension')) {\n dim = readNonNegativeIntegerString(\n /** @type {Element} */ (node.parentNode).getAttribute('srsDimension'));\n }\n else if (contextDimension) {\n dim = readNonNegativeIntegerString(contextDimension);\n }\n var x, y, z;\n var flatCoordinates = [];\n for (var i = 0, ii = coords.length; i < ii; i += dim) {\n x = parseFloat(coords[i]);\n y = parseFloat(coords[i + 1]);\n z = dim === 3 ? parseFloat(coords[i + 2]) : 0;\n if (axisOrientation.substr(0, 2) === 'en') {\n flatCoordinates.push(x, y, z);\n }\n else {\n flatCoordinates.push(y, x, z);\n }\n }\n return flatCoordinates;\n };\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/Point.js\").default} value Point geometry.\n * @param {Array<*>} objectStack Node stack.\n * @private\n */\n GML3.prototype.writePos_ = function (node, value, objectStack) {\n var context = objectStack[objectStack.length - 1];\n var hasZ = context['hasZ'];\n var srsDimension = hasZ ? '3' : '2';\n node.setAttribute('srsDimension', srsDimension);\n var srsName = context['srsName'];\n var axisOrientation = 'enu';\n if (srsName) {\n axisOrientation = getProjection(srsName).getAxisOrientation();\n }\n var point = value.getCoordinates();\n var coords;\n // only 2d for simple features profile\n if (axisOrientation.substr(0, 2) === 'en') {\n coords = point[0] + ' ' + point[1];\n }\n else {\n coords = point[1] + ' ' + point[0];\n }\n if (hasZ) {\n // For newly created points, Z can be undefined.\n var z = point[2] || 0;\n coords += ' ' + z;\n }\n writeStringTextNode(node, coords);\n };\n /**\n * @param {Array} point Point geometry.\n * @param {string=} opt_srsName Optional srsName\n * @param {boolean=} opt_hasZ whether the geometry has a Z coordinate (is 3D) or not.\n * @return {string} The coords string.\n * @private\n */\n GML3.prototype.getCoords_ = function (point, opt_srsName, opt_hasZ) {\n var axisOrientation = 'enu';\n if (opt_srsName) {\n axisOrientation = getProjection(opt_srsName).getAxisOrientation();\n }\n var coords = axisOrientation.substr(0, 2) === 'en'\n ? point[0] + ' ' + point[1]\n : point[1] + ' ' + point[0];\n if (opt_hasZ) {\n // For newly created points, Z can be undefined.\n var z = point[2] || 0;\n coords += ' ' + z;\n }\n return coords;\n };\n /**\n * @param {Element} node Node.\n * @param {LineString|import(\"../geom/LinearRing.js\").default} value Geometry.\n * @param {Array<*>} objectStack Node stack.\n * @private\n */\n GML3.prototype.writePosList_ = function (node, value, objectStack) {\n var context = objectStack[objectStack.length - 1];\n var hasZ = context['hasZ'];\n var srsDimension = hasZ ? '3' : '2';\n node.setAttribute('srsDimension', srsDimension);\n var srsName = context['srsName'];\n // only 2d for simple features profile\n var points = value.getCoordinates();\n var len = points.length;\n var parts = new Array(len);\n var point;\n for (var i = 0; i < len; ++i) {\n point = points[i];\n parts[i] = this.getCoords_(point, srsName, hasZ);\n }\n writeStringTextNode(node, parts.join(' '));\n };\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/Point.js\").default} geometry Point geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n GML3.prototype.writePoint = function (node, geometry, objectStack) {\n var context = objectStack[objectStack.length - 1];\n var srsName = context['srsName'];\n if (srsName) {\n node.setAttribute('srsName', srsName);\n }\n var pos = createElementNS(node.namespaceURI, 'pos');\n node.appendChild(pos);\n this.writePos_(pos, geometry, objectStack);\n };\n /**\n * @param {Element} node Node.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @param {Array<*>} objectStack Node stack.\n */\n GML3.prototype.writeEnvelope = function (node, extent, objectStack) {\n var context = objectStack[objectStack.length - 1];\n var srsName = context['srsName'];\n if (srsName) {\n node.setAttribute('srsName', srsName);\n }\n var keys = ['lowerCorner', 'upperCorner'];\n var values = [extent[0] + ' ' + extent[1], extent[2] + ' ' + extent[3]];\n pushSerializeAndPop(\n /** @type {import(\"../xml.js\").NodeStackItem} */\n ({ node: node }), this.ENVELOPE_SERIALIZERS, OBJECT_PROPERTY_NODE_FACTORY, values, objectStack, keys, this);\n };\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/LinearRing.js\").default} geometry LinearRing geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n GML3.prototype.writeLinearRing = function (node, geometry, objectStack) {\n var context = objectStack[objectStack.length - 1];\n var srsName = context['srsName'];\n if (srsName) {\n node.setAttribute('srsName', srsName);\n }\n var posList = createElementNS(node.namespaceURI, 'posList');\n node.appendChild(posList);\n this.writePosList_(posList, geometry, objectStack);\n };\n /**\n * @param {*} value Value.\n * @param {Array<*>} objectStack Object stack.\n * @param {string=} opt_nodeName Node name.\n * @return {Node} Node.\n * @private\n */\n GML3.prototype.RING_NODE_FACTORY_ = function (value, objectStack, opt_nodeName) {\n var context = objectStack[objectStack.length - 1];\n var parentNode = context.node;\n var exteriorWritten = context['exteriorWritten'];\n if (exteriorWritten === undefined) {\n context['exteriorWritten'] = true;\n }\n return createElementNS(parentNode.namespaceURI, exteriorWritten !== undefined ? 'interior' : 'exterior');\n };\n /**\n * @param {Element} node Node.\n * @param {Polygon} geometry Polygon geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n GML3.prototype.writeSurfaceOrPolygon = function (node, geometry, objectStack) {\n var context = objectStack[objectStack.length - 1];\n var hasZ = context['hasZ'];\n var srsName = context['srsName'];\n if (node.nodeName !== 'PolygonPatch' && srsName) {\n node.setAttribute('srsName', srsName);\n }\n if (node.nodeName === 'Polygon' || node.nodeName === 'PolygonPatch') {\n var rings = geometry.getLinearRings();\n pushSerializeAndPop({ node: node, hasZ: hasZ, srsName: srsName }, this.RING_SERIALIZERS, this.RING_NODE_FACTORY_, rings, objectStack, undefined, this);\n }\n else if (node.nodeName === 'Surface') {\n var patches = createElementNS(node.namespaceURI, 'patches');\n node.appendChild(patches);\n this.writeSurfacePatches_(patches, geometry, objectStack);\n }\n };\n /**\n * @param {Element} node Node.\n * @param {LineString} geometry LineString geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n GML3.prototype.writeCurveOrLineString = function (node, geometry, objectStack) {\n var context = objectStack[objectStack.length - 1];\n var srsName = context['srsName'];\n if (node.nodeName !== 'LineStringSegment' && srsName) {\n node.setAttribute('srsName', srsName);\n }\n if (node.nodeName === 'LineString' ||\n node.nodeName === 'LineStringSegment') {\n var posList = createElementNS(node.namespaceURI, 'posList');\n node.appendChild(posList);\n this.writePosList_(posList, geometry, objectStack);\n }\n else if (node.nodeName === 'Curve') {\n var segments = createElementNS(node.namespaceURI, 'segments');\n node.appendChild(segments);\n this.writeCurveSegments_(segments, geometry, objectStack);\n }\n };\n /**\n * @param {Element} node Node.\n * @param {MultiPolygon} geometry MultiPolygon geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n GML3.prototype.writeMultiSurfaceOrPolygon = function (node, geometry, objectStack) {\n var context = objectStack[objectStack.length - 1];\n var hasZ = context['hasZ'];\n var srsName = context['srsName'];\n var surface = context['surface'];\n if (srsName) {\n node.setAttribute('srsName', srsName);\n }\n var polygons = geometry.getPolygons();\n pushSerializeAndPop({ node: node, hasZ: hasZ, srsName: srsName, surface: surface }, this.SURFACEORPOLYGONMEMBER_SERIALIZERS, this.MULTIGEOMETRY_MEMBER_NODE_FACTORY_, polygons, objectStack, undefined, this);\n };\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/MultiPoint.js\").default} geometry MultiPoint geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n GML3.prototype.writeMultiPoint = function (node, geometry, objectStack) {\n var context = objectStack[objectStack.length - 1];\n var srsName = context['srsName'];\n var hasZ = context['hasZ'];\n if (srsName) {\n node.setAttribute('srsName', srsName);\n }\n var points = geometry.getPoints();\n pushSerializeAndPop({ node: node, hasZ: hasZ, srsName: srsName }, this.POINTMEMBER_SERIALIZERS, makeSimpleNodeFactory('pointMember'), points, objectStack, undefined, this);\n };\n /**\n * @param {Element} node Node.\n * @param {MultiLineString} geometry MultiLineString geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n GML3.prototype.writeMultiCurveOrLineString = function (node, geometry, objectStack) {\n var context = objectStack[objectStack.length - 1];\n var hasZ = context['hasZ'];\n var srsName = context['srsName'];\n var curve = context['curve'];\n if (srsName) {\n node.setAttribute('srsName', srsName);\n }\n var lines = geometry.getLineStrings();\n pushSerializeAndPop({ node: node, hasZ: hasZ, srsName: srsName, curve: curve }, this.LINESTRINGORCURVEMEMBER_SERIALIZERS, this.MULTIGEOMETRY_MEMBER_NODE_FACTORY_, lines, objectStack, undefined, this);\n };\n /**\n * @param {Node} node Node.\n * @param {import(\"../geom/LinearRing.js\").default} ring LinearRing geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n GML3.prototype.writeRing = function (node, ring, objectStack) {\n var linearRing = createElementNS(node.namespaceURI, 'LinearRing');\n node.appendChild(linearRing);\n this.writeLinearRing(linearRing, ring, objectStack);\n };\n /**\n * @param {Node} node Node.\n * @param {Polygon} polygon Polygon geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n GML3.prototype.writeSurfaceOrPolygonMember = function (node, polygon, objectStack) {\n var child = this.GEOMETRY_NODE_FACTORY_(polygon, objectStack);\n if (child) {\n node.appendChild(child);\n this.writeSurfaceOrPolygon(child, polygon, objectStack);\n }\n };\n /**\n * @param {Node} node Node.\n * @param {import(\"../geom/Point.js\").default} point Point geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n GML3.prototype.writePointMember = function (node, point, objectStack) {\n var child = createElementNS(node.namespaceURI, 'Point');\n node.appendChild(child);\n this.writePoint(child, point, objectStack);\n };\n /**\n * @param {Node} node Node.\n * @param {LineString} line LineString geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n GML3.prototype.writeLineStringOrCurveMember = function (node, line, objectStack) {\n var child = this.GEOMETRY_NODE_FACTORY_(line, objectStack);\n if (child) {\n node.appendChild(child);\n this.writeCurveOrLineString(child, line, objectStack);\n }\n };\n /**\n * @param {Node} node Node.\n * @param {Polygon} polygon Polygon geometry.\n * @param {Array<*>} objectStack Node stack.\n * @private\n */\n GML3.prototype.writeSurfacePatches_ = function (node, polygon, objectStack) {\n var child = createElementNS(node.namespaceURI, 'PolygonPatch');\n node.appendChild(child);\n this.writeSurfaceOrPolygon(child, polygon, objectStack);\n };\n /**\n * @param {Node} node Node.\n * @param {LineString} line LineString geometry.\n * @param {Array<*>} objectStack Node stack.\n * @private\n */\n GML3.prototype.writeCurveSegments_ = function (node, line, objectStack) {\n var child = createElementNS(node.namespaceURI, 'LineStringSegment');\n node.appendChild(child);\n this.writeCurveOrLineString(child, line, objectStack);\n };\n /**\n * @param {Node} node Node.\n * @param {import(\"../geom/Geometry.js\").default|import(\"../extent.js\").Extent} geometry Geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n GML3.prototype.writeGeometryElement = function (node, geometry, objectStack) {\n var context = /** @type {import(\"./Feature.js\").WriteOptions} */ (objectStack[objectStack.length - 1]);\n var item = assign({}, context);\n item['node'] = node;\n var value;\n if (Array.isArray(geometry)) {\n value = transformExtentWithOptions(\n /** @type {import(\"../extent.js\").Extent} */ (geometry), context);\n }\n else {\n value = transformGeometryWithOptions(\n /** @type {import(\"../geom/Geometry.js\").default} */ (geometry), true, context);\n }\n pushSerializeAndPop(\n /** @type {import(\"../xml.js\").NodeStackItem} */\n (item), this.GEOMETRY_SERIALIZERS, this.GEOMETRY_NODE_FACTORY_, [value], objectStack, undefined, this);\n };\n /**\n * @param {Element} node Node.\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {Array<*>} objectStack Node stack.\n */\n GML3.prototype.writeFeatureElement = function (node, feature, objectStack) {\n var fid = feature.getId();\n if (fid) {\n node.setAttribute('fid', /** @type {string} */ (fid));\n }\n var context = /** @type {Object} */ (objectStack[objectStack.length - 1]);\n var featureNS = context['featureNS'];\n var geometryName = feature.getGeometryName();\n if (!context.serializers) {\n context.serializers = {};\n context.serializers[featureNS] = {};\n }\n var keys = [];\n var values = [];\n if (feature.hasProperties()) {\n var properties = feature.getProperties();\n for (var key in properties) {\n var value = properties[key];\n if (value !== null) {\n keys.push(key);\n values.push(value);\n if (key == geometryName ||\n typeof ( /** @type {?} */(value).getSimplifiedGeometry) ===\n 'function') {\n if (!(key in context.serializers[featureNS])) {\n context.serializers[featureNS][key] = makeChildAppender(this.writeGeometryElement, this);\n }\n }\n else {\n if (!(key in context.serializers[featureNS])) {\n context.serializers[featureNS][key] = makeChildAppender(writeStringTextNode);\n }\n }\n }\n }\n }\n var item = assign({}, context);\n item.node = node;\n pushSerializeAndPop(\n /** @type {import(\"../xml.js\").NodeStackItem} */\n (item), context.serializers, makeSimpleNodeFactory(undefined, featureNS), values, objectStack, keys);\n };\n /**\n * @param {Node} node Node.\n * @param {Array} features Features.\n * @param {Array<*>} objectStack Node stack.\n * @private\n */\n GML3.prototype.writeFeatureMembers_ = function (node, features, objectStack) {\n var context = /** @type {Object} */ (objectStack[objectStack.length - 1]);\n var featureType = context['featureType'];\n var featureNS = context['featureNS'];\n /** @type {Object>} */\n var serializers = {};\n serializers[featureNS] = {};\n serializers[featureNS][featureType] = makeChildAppender(this.writeFeatureElement, this);\n var item = assign({}, context);\n item.node = node;\n pushSerializeAndPop(\n /** @type {import(\"../xml.js\").NodeStackItem} */\n (item), serializers, makeSimpleNodeFactory(featureType, featureNS), features, objectStack);\n };\n /**\n * @const\n * @param {*} value Value.\n * @param {Array<*>} objectStack Object stack.\n * @param {string=} opt_nodeName Node name.\n * @return {Node|undefined} Node.\n * @private\n */\n GML3.prototype.MULTIGEOMETRY_MEMBER_NODE_FACTORY_ = function (value, objectStack, opt_nodeName) {\n var parentNode = objectStack[objectStack.length - 1].node;\n return createElementNS(this.namespace, MULTIGEOMETRY_TO_MEMBER_NODENAME[parentNode.nodeName]);\n };\n /**\n * @const\n * @param {*} value Value.\n * @param {Array<*>} objectStack Object stack.\n * @param {string=} opt_nodeName Node name.\n * @return {Element|undefined} Node.\n * @private\n */\n GML3.prototype.GEOMETRY_NODE_FACTORY_ = function (value, objectStack, opt_nodeName) {\n var context = objectStack[objectStack.length - 1];\n var multiSurface = context['multiSurface'];\n var surface = context['surface'];\n var curve = context['curve'];\n var multiCurve = context['multiCurve'];\n var nodeName;\n if (!Array.isArray(value)) {\n nodeName = /** @type {import(\"../geom/Geometry.js\").default} */ (value).getType();\n if (nodeName === 'MultiPolygon' && multiSurface === true) {\n nodeName = 'MultiSurface';\n }\n else if (nodeName === 'Polygon' && surface === true) {\n nodeName = 'Surface';\n }\n else if (nodeName === 'LineString' && curve === true) {\n nodeName = 'Curve';\n }\n else if (nodeName === 'MultiLineString' && multiCurve === true) {\n nodeName = 'MultiCurve';\n }\n }\n else {\n nodeName = 'Envelope';\n }\n return createElementNS(this.namespace, nodeName);\n };\n /**\n * Encode a geometry in GML 3.1.1 Simple Features.\n *\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Options.\n * @return {Node} Node.\n * @api\n */\n GML3.prototype.writeGeometryNode = function (geometry, opt_options) {\n opt_options = this.adaptOptions(opt_options);\n var geom = createElementNS(this.namespace, 'geom');\n var context = {\n node: geom,\n hasZ: this.hasZ,\n srsName: this.srsName,\n curve: this.curve_,\n surface: this.surface_,\n multiSurface: this.multiSurface_,\n multiCurve: this.multiCurve_,\n };\n if (opt_options) {\n assign(context, opt_options);\n }\n this.writeGeometryElement(geom, geometry, [context]);\n return geom;\n };\n /**\n * Encode an array of features in the GML 3.1.1 format as an XML node.\n *\n * @param {Array} features Features.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Options.\n * @return {Element} Node.\n * @api\n */\n GML3.prototype.writeFeaturesNode = function (features, opt_options) {\n opt_options = this.adaptOptions(opt_options);\n var node = createElementNS(this.namespace, 'featureMembers');\n node.setAttributeNS(XML_SCHEMA_INSTANCE_URI, 'xsi:schemaLocation', this.schemaLocation);\n var context = {\n srsName: this.srsName,\n hasZ: this.hasZ,\n curve: this.curve_,\n surface: this.surface_,\n multiSurface: this.multiSurface_,\n multiCurve: this.multiCurve_,\n featureNS: this.featureNS,\n featureType: this.featureType,\n };\n if (opt_options) {\n assign(context, opt_options);\n }\n this.writeFeatureMembers_(node, features, [context]);\n return node;\n };\n return GML3;\n}(GMLBase));\n/**\n * @const\n * @type {Object>}\n */\nGML3.prototype.GEOMETRY_FLAT_COORDINATES_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'pos': makeReplacer(GML3.prototype.readFlatPos),\n 'posList': makeReplacer(GML3.prototype.readFlatPosList),\n },\n};\n/**\n * @const\n * @type {Object>}\n */\nGML3.prototype.FLAT_LINEAR_RINGS_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'interior': GML3.prototype.interiorParser,\n 'exterior': GML3.prototype.exteriorParser,\n },\n};\n/**\n * @const\n * @type {Object>}\n */\nGML3.prototype.GEOMETRY_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'Point': makeReplacer(GMLBase.prototype.readPoint),\n 'MultiPoint': makeReplacer(GMLBase.prototype.readMultiPoint),\n 'LineString': makeReplacer(GMLBase.prototype.readLineString),\n 'MultiLineString': makeReplacer(GMLBase.prototype.readMultiLineString),\n 'LinearRing': makeReplacer(GMLBase.prototype.readLinearRing),\n 'Polygon': makeReplacer(GMLBase.prototype.readPolygon),\n 'MultiPolygon': makeReplacer(GMLBase.prototype.readMultiPolygon),\n 'Surface': makeReplacer(GML3.prototype.readSurface),\n 'MultiSurface': makeReplacer(GML3.prototype.readMultiSurface),\n 'Curve': makeReplacer(GML3.prototype.readCurve),\n 'MultiCurve': makeReplacer(GML3.prototype.readMultiCurve),\n 'Envelope': makeReplacer(GML3.prototype.readEnvelope),\n },\n};\n/**\n * @const\n * @type {Object>}\n */\nGML3.prototype.MULTICURVE_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'curveMember': makeArrayPusher(GML3.prototype.curveMemberParser),\n 'curveMembers': makeArrayPusher(GML3.prototype.curveMemberParser),\n },\n};\n/**\n * @const\n * @type {Object>}\n */\nGML3.prototype.MULTISURFACE_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'surfaceMember': makeArrayPusher(GML3.prototype.surfaceMemberParser),\n 'surfaceMembers': makeArrayPusher(GML3.prototype.surfaceMemberParser),\n },\n};\n/**\n * @const\n * @type {Object>}\n */\nGML3.prototype.CURVEMEMBER_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'LineString': makeArrayPusher(GMLBase.prototype.readLineString),\n 'Curve': makeArrayPusher(GML3.prototype.readCurve),\n },\n};\n/**\n * @const\n * @type {Object>}\n */\nGML3.prototype.SURFACEMEMBER_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'Polygon': makeArrayPusher(GMLBase.prototype.readPolygon),\n 'Surface': makeArrayPusher(GML3.prototype.readSurface),\n },\n};\n/**\n * @const\n * @type {Object>}\n */\nGML3.prototype.SURFACE_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'patches': makeReplacer(GML3.prototype.readPatch),\n },\n};\n/**\n * @const\n * @type {Object>}\n */\nGML3.prototype.CURVE_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'segments': makeReplacer(GML3.prototype.readSegment),\n },\n};\n/**\n * @const\n * @type {Object>}\n */\nGML3.prototype.ENVELOPE_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'lowerCorner': makeArrayPusher(GML3.prototype.readFlatPosList),\n 'upperCorner': makeArrayPusher(GML3.prototype.readFlatPosList),\n },\n};\n/**\n * @const\n * @type {Object>}\n */\nGML3.prototype.PATCHES_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'PolygonPatch': makeReplacer(GML3.prototype.readPolygonPatch),\n },\n};\n/**\n * @const\n * @type {Object>}\n */\nGML3.prototype.SEGMENTS_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'LineStringSegment': makeReplacer(GML3.prototype.readLineStringSegment),\n },\n};\n/**\n * Encode an array of features in GML 3.1.1 Simple Features.\n *\n * @function\n * @param {Array} features Features.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Options.\n * @return {string} Result.\n * @api\n */\nGML3.prototype.writeFeatures;\n/**\n * @type {Object>}\n */\nGML3.prototype.RING_SERIALIZERS = {\n 'http://www.opengis.net/gml': {\n 'exterior': makeChildAppender(GML3.prototype.writeRing),\n 'interior': makeChildAppender(GML3.prototype.writeRing),\n },\n};\n/**\n * @type {Object>}\n */\nGML3.prototype.ENVELOPE_SERIALIZERS = {\n 'http://www.opengis.net/gml': {\n 'lowerCorner': makeChildAppender(writeStringTextNode),\n 'upperCorner': makeChildAppender(writeStringTextNode),\n },\n};\n/**\n * @type {Object>}\n */\nGML3.prototype.SURFACEORPOLYGONMEMBER_SERIALIZERS = {\n 'http://www.opengis.net/gml': {\n 'surfaceMember': makeChildAppender(GML3.prototype.writeSurfaceOrPolygonMember),\n 'polygonMember': makeChildAppender(GML3.prototype.writeSurfaceOrPolygonMember),\n },\n};\n/**\n * @type {Object>}\n */\nGML3.prototype.POINTMEMBER_SERIALIZERS = {\n 'http://www.opengis.net/gml': {\n 'pointMember': makeChildAppender(GML3.prototype.writePointMember),\n },\n};\n/**\n * @type {Object>}\n */\nGML3.prototype.LINESTRINGORCURVEMEMBER_SERIALIZERS = {\n 'http://www.opengis.net/gml': {\n 'lineStringMember': makeChildAppender(GML3.prototype.writeLineStringOrCurveMember),\n 'curveMember': makeChildAppender(GML3.prototype.writeLineStringOrCurveMember),\n },\n};\n/**\n * @type {Object>}\n */\nGML3.prototype.GEOMETRY_SERIALIZERS = {\n 'http://www.opengis.net/gml': {\n 'Curve': makeChildAppender(GML3.prototype.writeCurveOrLineString),\n 'MultiCurve': makeChildAppender(GML3.prototype.writeMultiCurveOrLineString),\n 'Point': makeChildAppender(GML3.prototype.writePoint),\n 'MultiPoint': makeChildAppender(GML3.prototype.writeMultiPoint),\n 'LineString': makeChildAppender(GML3.prototype.writeCurveOrLineString),\n 'MultiLineString': makeChildAppender(GML3.prototype.writeMultiCurveOrLineString),\n 'LinearRing': makeChildAppender(GML3.prototype.writeLinearRing),\n 'Polygon': makeChildAppender(GML3.prototype.writeSurfaceOrPolygon),\n 'MultiPolygon': makeChildAppender(GML3.prototype.writeMultiSurfaceOrPolygon),\n 'Surface': makeChildAppender(GML3.prototype.writeSurfaceOrPolygon),\n 'MultiSurface': makeChildAppender(GML3.prototype.writeMultiSurfaceOrPolygon),\n 'Envelope': makeChildAppender(GML3.prototype.writeEnvelope),\n },\n};\nexport default GML3;\n//# sourceMappingURL=GML3.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/format/WFS\n */\nimport GML2 from './GML2.js';\nimport GML3 from './GML3.js';\nimport GMLBase, { GMLNS } from './GMLBase.js';\nimport XMLFeature from './XMLFeature.js';\nimport { XML_SCHEMA_INSTANCE_URI, createElementNS, isDocument, makeArrayPusher, makeChildAppender, makeObjectPropertySetter, makeSimpleNodeFactory, parse, parseNode, pushParseAndPop, pushSerializeAndPop, } from '../xml.js';\nimport { and as andFilter, bbox as bboxFilter } from './filter.js';\nimport { assert } from '../asserts.js';\nimport { assign } from '../obj.js';\nimport { get as getProjection } from '../proj.js';\nimport { readNonNegativeInteger, readNonNegativeIntegerString, writeStringTextNode, } from './xsd.js';\n/**\n * @const\n * @type {Object>}\n */\nvar FEATURE_COLLECTION_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'boundedBy': makeObjectPropertySetter(GMLBase.prototype.readGeometryElement, 'bounds'),\n },\n};\n/**\n * @const\n * @type {Object>}\n */\nvar TRANSACTION_SUMMARY_PARSERS = {\n 'http://www.opengis.net/wfs': {\n 'totalInserted': makeObjectPropertySetter(readNonNegativeInteger),\n 'totalUpdated': makeObjectPropertySetter(readNonNegativeInteger),\n 'totalDeleted': makeObjectPropertySetter(readNonNegativeInteger),\n },\n};\n/**\n * @const\n * @type {Object>}\n */\nvar TRANSACTION_RESPONSE_PARSERS = {\n 'http://www.opengis.net/wfs': {\n 'TransactionSummary': makeObjectPropertySetter(readTransactionSummary, 'transactionSummary'),\n 'InsertResults': makeObjectPropertySetter(readInsertResults, 'insertIds'),\n },\n};\n/**\n * @type {Object>}\n */\nvar QUERY_SERIALIZERS = {\n 'http://www.opengis.net/wfs': {\n 'PropertyName': makeChildAppender(writeStringTextNode),\n },\n};\n/**\n * @type {Object>}\n */\nvar TRANSACTION_SERIALIZERS = {\n 'http://www.opengis.net/wfs': {\n 'Insert': makeChildAppender(writeFeature),\n 'Update': makeChildAppender(writeUpdate),\n 'Delete': makeChildAppender(writeDelete),\n 'Property': makeChildAppender(writeProperty),\n 'Native': makeChildAppender(writeNative),\n },\n};\n/**\n * @typedef {Object} Options\n * @property {Object|string} [featureNS] The namespace URI used for features.\n * @property {Array|string} [featureType] The feature type to parse. Only used for read operations.\n * @property {GMLBase} [gmlFormat] The GML format to use to parse the response. Default is `ol/format/GML3`.\n * @property {string} [schemaLocation] Optional schemaLocation to use for serialization, this will override the default.\n */\n/**\n * @typedef {Object} WriteGetFeatureOptions\n * @property {string} featureNS The namespace URI used for features.\n * @property {string} featurePrefix The prefix for the feature namespace.\n * @property {Array} featureTypes The feature type names.\n * @property {string} [srsName] SRS name. No srsName attribute will be set on\n * geometries when this is not provided.\n * @property {string} [handle] Handle.\n * @property {string} [outputFormat] Output format.\n * @property {number} [maxFeatures] Maximum number of features to fetch.\n * @property {string} [geometryName] Geometry name to use in a BBOX filter.\n * @property {Array} [propertyNames] Optional list of property names to serialize.\n * @property {string} [viewParams] viewParams GeoServer vendor parameter.\n * @property {number} [startIndex] Start index to use for WFS paging. This is a\n * WFS 2.0 feature backported to WFS 1.1.0 by some Web Feature Services.\n * @property {number} [count] Number of features to retrieve when paging. This is a\n * WFS 2.0 feature backported to WFS 1.1.0 by some Web Feature Services. Please note that some\n * Web Feature Services have repurposed `maxfeatures` instead.\n * @property {import(\"../extent.js\").Extent} [bbox] Extent to use for the BBOX filter.\n * @property {import(\"./filter/Filter.js\").default} [filter] Filter condition. See\n * {@link module:ol/format/Filter} for more information.\n * @property {string} [resultType] Indicates what response should be returned,\n * E.g. `hits` only includes the `numberOfFeatures` attribute in the response and no features.\n */\n/**\n * @typedef {Object} WriteTransactionOptions\n * @property {string} featureNS The namespace URI used for features.\n * @property {string} featurePrefix The prefix for the feature namespace.\n * @property {string} featureType The feature type name.\n * @property {string} [srsName] SRS name. No srsName attribute will be set on\n * geometries when this is not provided.\n * @property {string} [handle] Handle.\n * @property {boolean} [hasZ] Must be set to true if the transaction is for\n * a 3D layer. This will allow the Z coordinate to be included in the transaction.\n * @property {Array} nativeElements Native elements. Currently not supported.\n * @property {import(\"./GMLBase.js\").Options} [gmlOptions] GML options for the WFS transaction writer.\n * @property {string} [version='1.1.0'] WFS version to use for the transaction. Can be either `1.0.0` or `1.1.0`.\n */\n/**\n * Number of features; bounds/extent.\n * @typedef {Object} FeatureCollectionMetadata\n * @property {number} numberOfFeatures\n * @property {import(\"../extent.js\").Extent} bounds\n */\n/**\n * Total deleted; total inserted; total updated; array of insert ids.\n * @typedef {Object} TransactionResponse\n * @property {number} totalDeleted\n * @property {number} totalInserted\n * @property {number} totalUpdated\n * @property {Array} insertIds\n */\n/**\n * @type {string}\n */\nvar FEATURE_PREFIX = 'feature';\n/**\n * @type {string}\n */\nvar XMLNS = 'http://www.w3.org/2000/xmlns/';\n/**\n * @type {string}\n */\nvar OGCNS = 'http://www.opengis.net/ogc';\n/**\n * @type {string}\n */\nvar WFSNS = 'http://www.opengis.net/wfs';\n/**\n * @type {string}\n */\nvar FESNS = 'http://www.opengis.net/fes';\n/**\n * @type {Object}\n */\nvar SCHEMA_LOCATIONS = {\n '1.1.0': 'http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd',\n '1.0.0': 'http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/wfs.xsd',\n};\n/**\n * @const\n * @type {string}\n */\nvar DEFAULT_VERSION = '1.1.0';\n/**\n * @classdesc\n * Feature format for reading and writing data in the WFS format.\n * By default, supports WFS version 1.1.0. You can pass a GML format\n * as option if you want to read a WFS that contains GML2 (WFS 1.0.0).\n * Also see {@link module:ol/format/GMLBase~GMLBase} which is used by this format.\n *\n * @api\n */\nvar WFS = /** @class */ (function (_super) {\n __extends(WFS, _super);\n /**\n * @param {Options=} opt_options Optional configuration object.\n */\n function WFS(opt_options) {\n var _this = _super.call(this) || this;\n var options = opt_options ? opt_options : {};\n /**\n * @private\n * @type {Array|string|undefined}\n */\n _this.featureType_ = options.featureType;\n /**\n * @private\n * @type {Object|string|undefined}\n */\n _this.featureNS_ = options.featureNS;\n /**\n * @private\n * @type {GMLBase}\n */\n _this.gmlFormat_ = options.gmlFormat ? options.gmlFormat : new GML3();\n /**\n * @private\n * @type {string}\n */\n _this.schemaLocation_ = options.schemaLocation\n ? options.schemaLocation\n : SCHEMA_LOCATIONS[DEFAULT_VERSION];\n return _this;\n }\n /**\n * @return {Array|string|undefined} featureType\n */\n WFS.prototype.getFeatureType = function () {\n return this.featureType_;\n };\n /**\n * @param {Array|string|undefined} featureType Feature type(s) to parse.\n */\n WFS.prototype.setFeatureType = function (featureType) {\n this.featureType_ = featureType;\n };\n /**\n * @protected\n * @param {Element} node Node.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Options.\n * @return {Array} Features.\n */\n WFS.prototype.readFeaturesFromNode = function (node, opt_options) {\n /** @type {import(\"../xml.js\").NodeStackItem} */\n var context = {\n node: node,\n };\n assign(context, {\n 'featureType': this.featureType_,\n 'featureNS': this.featureNS_,\n });\n assign(context, this.getReadOptions(node, opt_options ? opt_options : {}));\n var objectStack = [context];\n this.gmlFormat_.FEATURE_COLLECTION_PARSERS[GMLNS]['featureMember'] = makeArrayPusher(GMLBase.prototype.readFeaturesInternal);\n var features = pushParseAndPop([], this.gmlFormat_.FEATURE_COLLECTION_PARSERS, node, objectStack, this.gmlFormat_);\n if (!features) {\n features = [];\n }\n return features;\n };\n /**\n * Read transaction response of the source.\n *\n * @param {Document|Element|Object|string} source Source.\n * @return {TransactionResponse|undefined} Transaction response.\n * @api\n */\n WFS.prototype.readTransactionResponse = function (source) {\n if (!source) {\n return undefined;\n }\n else if (typeof source === 'string') {\n var doc = parse(source);\n return this.readTransactionResponseFromDocument(doc);\n }\n else if (isDocument(source)) {\n return this.readTransactionResponseFromDocument(\n /** @type {Document} */ (source));\n }\n else {\n return this.readTransactionResponseFromNode(\n /** @type {Element} */ (source));\n }\n };\n /**\n * Read feature collection metadata of the source.\n *\n * @param {Document|Element|Object|string} source Source.\n * @return {FeatureCollectionMetadata|undefined}\n * FeatureCollection metadata.\n * @api\n */\n WFS.prototype.readFeatureCollectionMetadata = function (source) {\n if (!source) {\n return undefined;\n }\n else if (typeof source === 'string') {\n var doc = parse(source);\n return this.readFeatureCollectionMetadataFromDocument(doc);\n }\n else if (isDocument(source)) {\n return this.readFeatureCollectionMetadataFromDocument(\n /** @type {Document} */ (source));\n }\n else {\n return this.readFeatureCollectionMetadataFromNode(\n /** @type {Element} */ (source));\n }\n };\n /**\n * @param {Document} doc Document.\n * @return {FeatureCollectionMetadata|undefined}\n * FeatureCollection metadata.\n */\n WFS.prototype.readFeatureCollectionMetadataFromDocument = function (doc) {\n for (var n = /** @type {Node} */ (doc.firstChild); n; n = n.nextSibling) {\n if (n.nodeType == Node.ELEMENT_NODE) {\n return this.readFeatureCollectionMetadataFromNode(\n /** @type {Element} */ (n));\n }\n }\n return undefined;\n };\n /**\n * @param {Element} node Node.\n * @return {FeatureCollectionMetadata|undefined}\n * FeatureCollection metadata.\n */\n WFS.prototype.readFeatureCollectionMetadataFromNode = function (node) {\n var result = {};\n var value = readNonNegativeIntegerString(node.getAttribute('numberOfFeatures'));\n result['numberOfFeatures'] = value;\n return pushParseAndPop(\n /** @type {FeatureCollectionMetadata} */ (result), FEATURE_COLLECTION_PARSERS, node, [], this.gmlFormat_);\n };\n /**\n * @param {Document} doc Document.\n * @return {TransactionResponse|undefined} Transaction response.\n */\n WFS.prototype.readTransactionResponseFromDocument = function (doc) {\n for (var n = /** @type {Node} */ (doc.firstChild); n; n = n.nextSibling) {\n if (n.nodeType == Node.ELEMENT_NODE) {\n return this.readTransactionResponseFromNode(/** @type {Element} */ (n));\n }\n }\n return undefined;\n };\n /**\n * @param {Element} node Node.\n * @return {TransactionResponse|undefined} Transaction response.\n */\n WFS.prototype.readTransactionResponseFromNode = function (node) {\n return pushParseAndPop(\n /** @type {TransactionResponse} */ ({}), TRANSACTION_RESPONSE_PARSERS, node, []);\n };\n /**\n * Encode format as WFS `GetFeature` and return the Node.\n *\n * @param {WriteGetFeatureOptions} options Options.\n * @return {Node} Result.\n * @api\n */\n WFS.prototype.writeGetFeature = function (options) {\n var node = createElementNS(WFSNS, 'GetFeature');\n node.setAttribute('service', 'WFS');\n node.setAttribute('version', '1.1.0');\n var filter;\n if (options) {\n if (options.handle) {\n node.setAttribute('handle', options.handle);\n }\n if (options.outputFormat) {\n node.setAttribute('outputFormat', options.outputFormat);\n }\n if (options.maxFeatures !== undefined) {\n node.setAttribute('maxFeatures', String(options.maxFeatures));\n }\n if (options.resultType) {\n node.setAttribute('resultType', options.resultType);\n }\n if (options.startIndex !== undefined) {\n node.setAttribute('startIndex', String(options.startIndex));\n }\n if (options.count !== undefined) {\n node.setAttribute('count', String(options.count));\n }\n if (options.viewParams !== undefined) {\n node.setAttribute('viewParams', options.viewParams);\n }\n filter = options.filter;\n if (options.bbox) {\n assert(options.geometryName, 12); // `options.geometryName` must also be provided when `options.bbox` is set\n var bbox = bboxFilter(\n /** @type {string} */ (options.geometryName), options.bbox, options.srsName);\n if (filter) {\n // if bbox and filter are both set, combine the two into a single filter\n filter = andFilter(filter, bbox);\n }\n else {\n filter = bbox;\n }\n }\n }\n node.setAttributeNS(XML_SCHEMA_INSTANCE_URI, 'xsi:schemaLocation', this.schemaLocation_);\n /** @type {import(\"../xml.js\").NodeStackItem} */\n var context = {\n node: node,\n };\n assign(context, {\n 'srsName': options.srsName,\n 'featureNS': options.featureNS ? options.featureNS : this.featureNS_,\n 'featurePrefix': options.featurePrefix,\n 'geometryName': options.geometryName,\n 'filter': filter,\n 'propertyNames': options.propertyNames ? options.propertyNames : [],\n });\n assert(Array.isArray(options.featureTypes), 11); // `options.featureTypes` should be an Array\n writeGetFeature(node, \n /** @type {!Array} */ (options.featureTypes), [context]);\n return node;\n };\n /**\n * Encode format as WFS `Transaction` and return the Node.\n *\n * @param {Array} inserts The features to insert.\n * @param {Array} updates The features to update.\n * @param {Array} deletes The features to delete.\n * @param {WriteTransactionOptions} options Write options.\n * @return {Node} Result.\n * @api\n */\n WFS.prototype.writeTransaction = function (inserts, updates, deletes, options) {\n var objectStack = [];\n var node = createElementNS(WFSNS, 'Transaction');\n var version = options.version ? options.version : DEFAULT_VERSION;\n var gmlVersion = version === '1.0.0' ? 2 : 3;\n node.setAttribute('service', 'WFS');\n node.setAttribute('version', version);\n var baseObj;\n /** @type {import(\"../xml.js\").NodeStackItem} */\n var obj;\n if (options) {\n baseObj = options.gmlOptions ? options.gmlOptions : {};\n if (options.handle) {\n node.setAttribute('handle', options.handle);\n }\n }\n var schemaLocation = SCHEMA_LOCATIONS[version];\n node.setAttributeNS(XML_SCHEMA_INSTANCE_URI, 'xsi:schemaLocation', schemaLocation);\n var featurePrefix = options.featurePrefix\n ? options.featurePrefix\n : FEATURE_PREFIX;\n if (inserts) {\n obj = assign({ node: node }, {\n 'featureNS': options.featureNS,\n 'featureType': options.featureType,\n 'featurePrefix': featurePrefix,\n 'gmlVersion': gmlVersion,\n 'hasZ': options.hasZ,\n 'srsName': options.srsName,\n });\n assign(obj, baseObj);\n pushSerializeAndPop(obj, TRANSACTION_SERIALIZERS, makeSimpleNodeFactory('Insert'), inserts, objectStack);\n }\n if (updates) {\n obj = assign({ node: node }, {\n 'featureNS': options.featureNS,\n 'featureType': options.featureType,\n 'featurePrefix': featurePrefix,\n 'gmlVersion': gmlVersion,\n 'hasZ': options.hasZ,\n 'srsName': options.srsName,\n });\n assign(obj, baseObj);\n pushSerializeAndPop(obj, TRANSACTION_SERIALIZERS, makeSimpleNodeFactory('Update'), updates, objectStack);\n }\n if (deletes) {\n pushSerializeAndPop({\n node: node,\n 'featureNS': options.featureNS,\n 'featureType': options.featureType,\n 'featurePrefix': featurePrefix,\n 'gmlVersion': gmlVersion,\n 'srsName': options.srsName,\n }, TRANSACTION_SERIALIZERS, makeSimpleNodeFactory('Delete'), deletes, objectStack);\n }\n if (options.nativeElements) {\n pushSerializeAndPop({\n node: node,\n 'featureNS': options.featureNS,\n 'featureType': options.featureType,\n 'featurePrefix': featurePrefix,\n 'gmlVersion': gmlVersion,\n 'srsName': options.srsName,\n }, TRANSACTION_SERIALIZERS, makeSimpleNodeFactory('Native'), options.nativeElements, objectStack);\n }\n return node;\n };\n /**\n * @param {Document} doc Document.\n * @return {import(\"../proj/Projection.js\").default} Projection.\n */\n WFS.prototype.readProjectionFromDocument = function (doc) {\n for (var n = doc.firstChild; n; n = n.nextSibling) {\n if (n.nodeType == Node.ELEMENT_NODE) {\n return this.readProjectionFromNode(/** @type {Element} */ (n));\n }\n }\n return null;\n };\n /**\n * @param {Element} node Node.\n * @return {import(\"../proj/Projection.js\").default} Projection.\n */\n WFS.prototype.readProjectionFromNode = function (node) {\n if (node.firstElementChild && node.firstElementChild.firstElementChild) {\n node = node.firstElementChild.firstElementChild;\n for (var n = node.firstElementChild; n; n = n.nextElementSibling) {\n if (!(n.childNodes.length === 0 ||\n (n.childNodes.length === 1 && n.firstChild.nodeType === 3))) {\n var objectStack = [{}];\n this.gmlFormat_.readGeometryElement(n, objectStack);\n return getProjection(objectStack.pop().srsName);\n }\n }\n }\n return null;\n };\n return WFS;\n}(XMLFeature));\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Object|undefined} Transaction Summary.\n */\nfunction readTransactionSummary(node, objectStack) {\n return pushParseAndPop({}, TRANSACTION_SUMMARY_PARSERS, node, objectStack);\n}\n/**\n * @const\n * @type {Object>}\n */\nvar OGC_FID_PARSERS = {\n 'http://www.opengis.net/ogc': {\n 'FeatureId': makeArrayPusher(function (node, objectStack) {\n return node.getAttribute('fid');\n }),\n },\n};\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\nfunction fidParser(node, objectStack) {\n parseNode(OGC_FID_PARSERS, node, objectStack);\n}\n/**\n * @const\n * @type {Object>}\n */\nvar INSERT_RESULTS_PARSERS = {\n 'http://www.opengis.net/wfs': {\n 'Feature': fidParser,\n },\n};\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Array|undefined} Insert results.\n */\nfunction readInsertResults(node, objectStack) {\n return pushParseAndPop([], INSERT_RESULTS_PARSERS, node, objectStack);\n}\n/**\n * @param {Element} node Node.\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeFeature(node, feature, objectStack) {\n var context = objectStack[objectStack.length - 1];\n var featureType = context['featureType'];\n var featureNS = context['featureNS'];\n var gmlVersion = context['gmlVersion'];\n var child = createElementNS(featureNS, featureType);\n node.appendChild(child);\n if (gmlVersion === 2) {\n GML2.prototype.writeFeatureElement(child, feature, objectStack);\n }\n else {\n GML3.prototype.writeFeatureElement(child, feature, objectStack);\n }\n}\n/**\n * @param {Node} node Node.\n * @param {number|string} fid Feature identifier.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeOgcFidFilter(node, fid, objectStack) {\n var filter = createElementNS(OGCNS, 'Filter');\n var child = createElementNS(OGCNS, 'FeatureId');\n filter.appendChild(child);\n child.setAttribute('fid', /** @type {string} */ (fid));\n node.appendChild(filter);\n}\n/**\n * @param {string|undefined} featurePrefix The prefix of the feature.\n * @param {string} featureType The type of the feature.\n * @returns {string} The value of the typeName property.\n */\nfunction getTypeName(featurePrefix, featureType) {\n featurePrefix = featurePrefix ? featurePrefix : FEATURE_PREFIX;\n var prefix = featurePrefix + ':';\n // The featureType already contains the prefix.\n if (featureType.indexOf(prefix) === 0) {\n return featureType;\n }\n else {\n return prefix + featureType;\n }\n}\n/**\n * @param {Element} node Node.\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeDelete(node, feature, objectStack) {\n var context = objectStack[objectStack.length - 1];\n assert(feature.getId() !== undefined, 26); // Features must have an id set\n var featureType = context['featureType'];\n var featurePrefix = context['featurePrefix'];\n var featureNS = context['featureNS'];\n var typeName = getTypeName(featurePrefix, featureType);\n node.setAttribute('typeName', typeName);\n node.setAttributeNS(XMLNS, 'xmlns:' + featurePrefix, featureNS);\n var fid = feature.getId();\n if (fid !== undefined) {\n writeOgcFidFilter(node, fid, objectStack);\n }\n}\n/**\n * @param {Element} node Node.\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeUpdate(node, feature, objectStack) {\n var context = objectStack[objectStack.length - 1];\n assert(feature.getId() !== undefined, 27); // Features must have an id set\n var featureType = context['featureType'];\n var featurePrefix = context['featurePrefix'];\n var featureNS = context['featureNS'];\n var typeName = getTypeName(featurePrefix, featureType);\n var geometryName = feature.getGeometryName();\n node.setAttribute('typeName', typeName);\n node.setAttributeNS(XMLNS, 'xmlns:' + featurePrefix, featureNS);\n var fid = feature.getId();\n if (fid !== undefined) {\n var keys = feature.getKeys();\n var values = [];\n for (var i = 0, ii = keys.length; i < ii; i++) {\n var value = feature.get(keys[i]);\n if (value !== undefined) {\n var name_1 = keys[i];\n if (value &&\n typeof ( /** @type {?} */(value).getSimplifiedGeometry) === 'function') {\n name_1 = geometryName;\n }\n values.push({ name: name_1, value: value });\n }\n }\n pushSerializeAndPop(\n /** @type {import(\"../xml.js\").NodeStackItem} */ ({\n 'gmlVersion': context['gmlVersion'],\n node: node,\n 'hasZ': context['hasZ'],\n 'srsName': context['srsName'],\n }), TRANSACTION_SERIALIZERS, makeSimpleNodeFactory('Property'), values, objectStack);\n writeOgcFidFilter(node, fid, objectStack);\n }\n}\n/**\n * @param {Node} node Node.\n * @param {Object} pair Property name and value.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeProperty(node, pair, objectStack) {\n var name = createElementNS(WFSNS, 'Name');\n var context = objectStack[objectStack.length - 1];\n var gmlVersion = context['gmlVersion'];\n node.appendChild(name);\n writeStringTextNode(name, pair.name);\n if (pair.value !== undefined && pair.value !== null) {\n var value = createElementNS(WFSNS, 'Value');\n node.appendChild(value);\n if (pair.value &&\n typeof ( /** @type {?} */(pair.value).getSimplifiedGeometry) ===\n 'function') {\n if (gmlVersion === 2) {\n GML2.prototype.writeGeometryElement(value, pair.value, objectStack);\n }\n else {\n GML3.prototype.writeGeometryElement(value, pair.value, objectStack);\n }\n }\n else {\n writeStringTextNode(value, pair.value);\n }\n }\n}\n/**\n * @param {Element} node Node.\n * @param {{vendorId: string, safeToIgnore: boolean, value: string}} nativeElement The native element.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeNative(node, nativeElement, objectStack) {\n if (nativeElement.vendorId) {\n node.setAttribute('vendorId', nativeElement.vendorId);\n }\n if (nativeElement.safeToIgnore !== undefined) {\n node.setAttribute('safeToIgnore', String(nativeElement.safeToIgnore));\n }\n if (nativeElement.value !== undefined) {\n writeStringTextNode(node, nativeElement.value);\n }\n}\n/**\n * @type {Object>}\n */\nvar GETFEATURE_SERIALIZERS = {\n 'http://www.opengis.net/wfs': {\n 'Query': makeChildAppender(writeQuery),\n },\n 'http://www.opengis.net/ogc': {\n 'During': makeChildAppender(writeDuringFilter),\n 'And': makeChildAppender(writeLogicalFilter),\n 'Or': makeChildAppender(writeLogicalFilter),\n 'Not': makeChildAppender(writeNotFilter),\n 'BBOX': makeChildAppender(writeBboxFilter),\n 'Contains': makeChildAppender(writeContainsFilter),\n 'Intersects': makeChildAppender(writeIntersectsFilter),\n 'Within': makeChildAppender(writeWithinFilter),\n 'PropertyIsEqualTo': makeChildAppender(writeComparisonFilter),\n 'PropertyIsNotEqualTo': makeChildAppender(writeComparisonFilter),\n 'PropertyIsLessThan': makeChildAppender(writeComparisonFilter),\n 'PropertyIsLessThanOrEqualTo': makeChildAppender(writeComparisonFilter),\n 'PropertyIsGreaterThan': makeChildAppender(writeComparisonFilter),\n 'PropertyIsGreaterThanOrEqualTo': makeChildAppender(writeComparisonFilter),\n 'PropertyIsNull': makeChildAppender(writeIsNullFilter),\n 'PropertyIsBetween': makeChildAppender(writeIsBetweenFilter),\n 'PropertyIsLike': makeChildAppender(writeIsLikeFilter),\n },\n};\n/**\n * @param {Element} node Node.\n * @param {string} featureType Feature type.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeQuery(node, featureType, objectStack) {\n var context = /** @type {Object} */ (objectStack[objectStack.length - 1]);\n var featurePrefix = context['featurePrefix'];\n var featureNS = context['featureNS'];\n var propertyNames = context['propertyNames'];\n var srsName = context['srsName'];\n var typeName;\n // If feature prefix is not defined, we must not use the default prefix.\n if (featurePrefix) {\n typeName = getTypeName(featurePrefix, featureType);\n }\n else {\n typeName = featureType;\n }\n node.setAttribute('typeName', typeName);\n if (srsName) {\n node.setAttribute('srsName', srsName);\n }\n if (featureNS) {\n node.setAttributeNS(XMLNS, 'xmlns:' + featurePrefix, featureNS);\n }\n var item = /** @type {import(\"../xml.js\").NodeStackItem} */ (assign({}, context));\n item.node = node;\n pushSerializeAndPop(item, QUERY_SERIALIZERS, makeSimpleNodeFactory('PropertyName'), propertyNames, objectStack);\n var filter = context['filter'];\n if (filter) {\n var child = createElementNS(OGCNS, 'Filter');\n node.appendChild(child);\n writeFilterCondition(child, filter, objectStack);\n }\n}\n/**\n * @param {Node} node Node.\n * @param {import(\"./filter/Filter.js\").default} filter Filter.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeFilterCondition(node, filter, objectStack) {\n /** @type {import(\"../xml.js\").NodeStackItem} */\n var item = { node: node };\n pushSerializeAndPop(item, GETFEATURE_SERIALIZERS, makeSimpleNodeFactory(filter.getTagName()), [filter], objectStack);\n}\n/**\n * @param {Node} node Node.\n * @param {import(\"./filter/Bbox.js\").default} filter Filter.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeBboxFilter(node, filter, objectStack) {\n var context = objectStack[objectStack.length - 1];\n context['srsName'] = filter.srsName;\n writeOgcPropertyName(node, filter.geometryName);\n GML3.prototype.writeGeometryElement(node, filter.extent, objectStack);\n}\n/**\n * @param {Node} node Node.\n * @param {import(\"./filter/Contains.js\").default} filter Filter.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeContainsFilter(node, filter, objectStack) {\n var context = objectStack[objectStack.length - 1];\n context['srsName'] = filter.srsName;\n writeOgcPropertyName(node, filter.geometryName);\n GML3.prototype.writeGeometryElement(node, filter.geometry, objectStack);\n}\n/**\n * @param {Node} node Node.\n * @param {import(\"./filter/Intersects.js\").default} filter Filter.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeIntersectsFilter(node, filter, objectStack) {\n var context = objectStack[objectStack.length - 1];\n context['srsName'] = filter.srsName;\n writeOgcPropertyName(node, filter.geometryName);\n GML3.prototype.writeGeometryElement(node, filter.geometry, objectStack);\n}\n/**\n * @param {Node} node Node.\n * @param {import(\"./filter/Within.js\").default} filter Filter.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeWithinFilter(node, filter, objectStack) {\n var context = objectStack[objectStack.length - 1];\n context['srsName'] = filter.srsName;\n writeOgcPropertyName(node, filter.geometryName);\n GML3.prototype.writeGeometryElement(node, filter.geometry, objectStack);\n}\n/**\n * @param {Node} node Node.\n * @param {import(\"./filter/During.js\").default} filter Filter.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeDuringFilter(node, filter, objectStack) {\n var valueReference = createElementNS(FESNS, 'ValueReference');\n writeStringTextNode(valueReference, filter.propertyName);\n node.appendChild(valueReference);\n var timePeriod = createElementNS(GMLNS, 'TimePeriod');\n node.appendChild(timePeriod);\n var begin = createElementNS(GMLNS, 'begin');\n timePeriod.appendChild(begin);\n writeTimeInstant(begin, filter.begin);\n var end = createElementNS(GMLNS, 'end');\n timePeriod.appendChild(end);\n writeTimeInstant(end, filter.end);\n}\n/**\n * @param {Node} node Node.\n * @param {import(\"./filter/LogicalNary.js\").default} filter Filter.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeLogicalFilter(node, filter, objectStack) {\n /** @type {import(\"../xml.js\").NodeStackItem} */\n var item = { node: node };\n var conditions = filter.conditions;\n for (var i = 0, ii = conditions.length; i < ii; ++i) {\n var condition = conditions[i];\n pushSerializeAndPop(item, GETFEATURE_SERIALIZERS, makeSimpleNodeFactory(condition.getTagName()), [condition], objectStack);\n }\n}\n/**\n * @param {Node} node Node.\n * @param {import(\"./filter/Not.js\").default} filter Filter.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeNotFilter(node, filter, objectStack) {\n /** @type {import(\"../xml.js\").NodeStackItem} */\n var item = { node: node };\n var condition = filter.condition;\n pushSerializeAndPop(item, GETFEATURE_SERIALIZERS, makeSimpleNodeFactory(condition.getTagName()), [condition], objectStack);\n}\n/**\n * @param {Element} node Node.\n * @param {import(\"./filter/ComparisonBinary.js\").default} filter Filter.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeComparisonFilter(node, filter, objectStack) {\n if (filter.matchCase !== undefined) {\n node.setAttribute('matchCase', filter.matchCase.toString());\n }\n writeOgcPropertyName(node, filter.propertyName);\n writeOgcLiteral(node, '' + filter.expression);\n}\n/**\n * @param {Node} node Node.\n * @param {import(\"./filter/IsNull.js\").default} filter Filter.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeIsNullFilter(node, filter, objectStack) {\n writeOgcPropertyName(node, filter.propertyName);\n}\n/**\n * @param {Node} node Node.\n * @param {import(\"./filter/IsBetween.js\").default} filter Filter.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeIsBetweenFilter(node, filter, objectStack) {\n writeOgcPropertyName(node, filter.propertyName);\n var lowerBoundary = createElementNS(OGCNS, 'LowerBoundary');\n node.appendChild(lowerBoundary);\n writeOgcLiteral(lowerBoundary, '' + filter.lowerBoundary);\n var upperBoundary = createElementNS(OGCNS, 'UpperBoundary');\n node.appendChild(upperBoundary);\n writeOgcLiteral(upperBoundary, '' + filter.upperBoundary);\n}\n/**\n * @param {Element} node Node.\n * @param {import(\"./filter/IsLike.js\").default} filter Filter.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeIsLikeFilter(node, filter, objectStack) {\n node.setAttribute('wildCard', filter.wildCard);\n node.setAttribute('singleChar', filter.singleChar);\n node.setAttribute('escapeChar', filter.escapeChar);\n if (filter.matchCase !== undefined) {\n node.setAttribute('matchCase', filter.matchCase.toString());\n }\n writeOgcPropertyName(node, filter.propertyName);\n writeOgcLiteral(node, '' + filter.pattern);\n}\n/**\n * @param {string} tagName Tag name.\n * @param {Node} node Node.\n * @param {string} value Value.\n */\nfunction writeOgcExpression(tagName, node, value) {\n var property = createElementNS(OGCNS, tagName);\n writeStringTextNode(property, value);\n node.appendChild(property);\n}\n/**\n * @param {Node} node Node.\n * @param {string} value PropertyName value.\n */\nfunction writeOgcPropertyName(node, value) {\n writeOgcExpression('PropertyName', node, value);\n}\n/**\n * @param {Node} node Node.\n * @param {string} value PropertyName value.\n */\nfunction writeOgcLiteral(node, value) {\n writeOgcExpression('Literal', node, value);\n}\n/**\n * @param {Node} node Node.\n * @param {string} time PropertyName value.\n */\nfunction writeTimeInstant(node, time) {\n var timeInstant = createElementNS(GMLNS, 'TimeInstant');\n node.appendChild(timeInstant);\n var timePosition = createElementNS(GMLNS, 'timePosition');\n timeInstant.appendChild(timePosition);\n writeStringTextNode(timePosition, time);\n}\n/**\n * Encode filter as WFS `Filter` and return the Node.\n *\n * @param {import(\"./filter/Filter.js\").default} filter Filter.\n * @return {Node} Result.\n * @api\n */\nexport function writeFilter(filter) {\n var child = createElementNS(OGCNS, 'Filter');\n writeFilterCondition(child, filter, []);\n return child;\n}\n/**\n * @param {Node} node Node.\n * @param {Array} featureTypes Feature types.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeGetFeature(node, featureTypes, objectStack) {\n var context = /** @type {Object} */ (objectStack[objectStack.length - 1]);\n var item = /** @type {import(\"../xml.js\").NodeStackItem} */ (assign({}, context));\n item.node = node;\n pushSerializeAndPop(item, GETFEATURE_SERIALIZERS, makeSimpleNodeFactory('Query'), featureTypes, objectStack);\n}\nexport default WFS;\n//# sourceMappingURL=WFS.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/format/TextFeature\n */\nimport FeatureFormat from '../format/Feature.js';\nimport FormatType from '../format/FormatType.js';\nimport { abstract } from '../util.js';\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Base class for text feature formats.\n *\n * @abstract\n */\nvar TextFeature = /** @class */ (function (_super) {\n __extends(TextFeature, _super);\n function TextFeature() {\n return _super.call(this) || this;\n }\n /**\n * @return {import(\"./FormatType.js\").default} Format.\n */\n TextFeature.prototype.getType = function () {\n return FormatType.TEXT;\n };\n /**\n * Read the feature from the source.\n *\n * @param {Document|Element|Object|string} source Source.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Read options.\n * @return {import(\"../Feature.js\").default} Feature.\n * @api\n */\n TextFeature.prototype.readFeature = function (source, opt_options) {\n return this.readFeatureFromText(getText(source), this.adaptOptions(opt_options));\n };\n /**\n * @abstract\n * @param {string} text Text.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Read options.\n * @protected\n * @return {import(\"../Feature.js\").default} Feature.\n */\n TextFeature.prototype.readFeatureFromText = function (text, opt_options) {\n return abstract();\n };\n /**\n * Read the features from the source.\n *\n * @param {Document|Element|Object|string} source Source.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Read options.\n * @return {Array} Features.\n * @api\n */\n TextFeature.prototype.readFeatures = function (source, opt_options) {\n return this.readFeaturesFromText(getText(source), this.adaptOptions(opt_options));\n };\n /**\n * @abstract\n * @param {string} text Text.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Read options.\n * @protected\n * @return {Array} Features.\n */\n TextFeature.prototype.readFeaturesFromText = function (text, opt_options) {\n return abstract();\n };\n /**\n * Read the geometry from the source.\n *\n * @param {Document|Element|Object|string} source Source.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Read options.\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n * @api\n */\n TextFeature.prototype.readGeometry = function (source, opt_options) {\n return this.readGeometryFromText(getText(source), this.adaptOptions(opt_options));\n };\n /**\n * @abstract\n * @param {string} text Text.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Read options.\n * @protected\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\n TextFeature.prototype.readGeometryFromText = function (text, opt_options) {\n return abstract();\n };\n /**\n * Read the projection from the source.\n *\n * @param {Document|Element|Object|string} source Source.\n * @return {import(\"../proj/Projection.js\").default} Projection.\n * @api\n */\n TextFeature.prototype.readProjection = function (source) {\n return this.readProjectionFromText(getText(source));\n };\n /**\n * @param {string} text Text.\n * @protected\n * @return {import(\"../proj/Projection.js\").default} Projection.\n */\n TextFeature.prototype.readProjectionFromText = function (text) {\n return this.dataProjection;\n };\n /**\n * Encode a feature as a string.\n *\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {string} Encoded feature.\n * @api\n */\n TextFeature.prototype.writeFeature = function (feature, opt_options) {\n return this.writeFeatureText(feature, this.adaptOptions(opt_options));\n };\n /**\n * @abstract\n * @param {import(\"../Feature.js\").default} feature Features.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @protected\n * @return {string} Text.\n */\n TextFeature.prototype.writeFeatureText = function (feature, opt_options) {\n return abstract();\n };\n /**\n * Encode an array of features as string.\n *\n * @param {Array} features Features.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {string} Encoded features.\n * @api\n */\n TextFeature.prototype.writeFeatures = function (features, opt_options) {\n return this.writeFeaturesText(features, this.adaptOptions(opt_options));\n };\n /**\n * @abstract\n * @param {Array} features Features.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @protected\n * @return {string} Text.\n */\n TextFeature.prototype.writeFeaturesText = function (features, opt_options) {\n return abstract();\n };\n /**\n * Write a single geometry.\n *\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {string} Geometry.\n * @api\n */\n TextFeature.prototype.writeGeometry = function (geometry, opt_options) {\n return this.writeGeometryText(geometry, this.adaptOptions(opt_options));\n };\n /**\n * @abstract\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @protected\n * @return {string} Text.\n */\n TextFeature.prototype.writeGeometryText = function (geometry, opt_options) {\n return abstract();\n };\n return TextFeature;\n}(FeatureFormat));\n/**\n * @param {Document|Element|Object|string} source Source.\n * @return {string} Text.\n */\nfunction getText(source) {\n if (typeof source === 'string') {\n return source;\n }\n else {\n return '';\n }\n}\nexport default TextFeature;\n//# sourceMappingURL=TextFeature.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/format/WKT\n */\nimport Feature from '../Feature.js';\nimport GeometryCollection from '../geom/GeometryCollection.js';\nimport GeometryLayout from '../geom/GeometryLayout.js';\nimport GeometryType from '../geom/GeometryType.js';\nimport LineString from '../geom/LineString.js';\nimport MultiLineString from '../geom/MultiLineString.js';\nimport MultiPoint from '../geom/MultiPoint.js';\nimport MultiPolygon from '../geom/MultiPolygon.js';\nimport Point from '../geom/Point.js';\nimport Polygon from '../geom/Polygon.js';\nimport TextFeature from './TextFeature.js';\nimport { transformGeometryWithOptions } from './Feature.js';\n/**\n * Geometry constructors\n * @enum {function (new:import(\"../geom/Geometry.js\").default, Array, import(\"../geom/GeometryLayout.js\").default)}\n */\nvar GeometryConstructor = {\n 'POINT': Point,\n 'LINESTRING': LineString,\n 'POLYGON': Polygon,\n 'MULTIPOINT': MultiPoint,\n 'MULTILINESTRING': MultiLineString,\n 'MULTIPOLYGON': MultiPolygon,\n};\n/**\n * @typedef {Object} Options\n * @property {boolean} [splitCollection=false] Whether to split GeometryCollections into\n * multiple features on reading.\n */\n/**\n * @typedef {Object} Token\n * @property {number} type\n * @property {number|string} [value]\n * @property {number} position\n */\n/**\n * @const\n * @type {string}\n */\nvar EMPTY = 'EMPTY';\n/**\n * @const\n * @type {string}\n */\nvar Z = 'Z';\n/**\n * @const\n * @type {string}\n */\nvar M = 'M';\n/**\n * @const\n * @type {string}\n */\nvar ZM = 'ZM';\n/**\n * @const\n * @enum {number}\n */\nvar TokenType = {\n TEXT: 1,\n LEFT_PAREN: 2,\n RIGHT_PAREN: 3,\n NUMBER: 4,\n COMMA: 5,\n EOF: 6,\n};\n/**\n * @const\n * @type {Object}\n */\nvar WKTGeometryType = {};\nfor (var type in GeometryType) {\n WKTGeometryType[type] = GeometryType[type].toUpperCase();\n}\n/**\n * Class to tokenize a WKT string.\n */\nvar Lexer = /** @class */ (function () {\n /**\n * @param {string} wkt WKT string.\n */\n function Lexer(wkt) {\n /**\n * @type {string}\n */\n this.wkt = wkt;\n /**\n * @type {number}\n * @private\n */\n this.index_ = -1;\n }\n /**\n * @param {string} c Character.\n * @return {boolean} Whether the character is alphabetic.\n * @private\n */\n Lexer.prototype.isAlpha_ = function (c) {\n return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');\n };\n /**\n * @param {string} c Character.\n * @param {boolean=} opt_decimal Whether the string number\n * contains a dot, i.e. is a decimal number.\n * @return {boolean} Whether the character is numeric.\n * @private\n */\n Lexer.prototype.isNumeric_ = function (c, opt_decimal) {\n var decimal = opt_decimal !== undefined ? opt_decimal : false;\n return (c >= '0' && c <= '9') || (c == '.' && !decimal);\n };\n /**\n * @param {string} c Character.\n * @return {boolean} Whether the character is whitespace.\n * @private\n */\n Lexer.prototype.isWhiteSpace_ = function (c) {\n return c == ' ' || c == '\\t' || c == '\\r' || c == '\\n';\n };\n /**\n * @return {string} Next string character.\n * @private\n */\n Lexer.prototype.nextChar_ = function () {\n return this.wkt.charAt(++this.index_);\n };\n /**\n * Fetch and return the next token.\n * @return {!Token} Next string token.\n */\n Lexer.prototype.nextToken = function () {\n var c = this.nextChar_();\n var position = this.index_;\n /** @type {number|string} */\n var value = c;\n var type;\n if (c == '(') {\n type = TokenType.LEFT_PAREN;\n }\n else if (c == ',') {\n type = TokenType.COMMA;\n }\n else if (c == ')') {\n type = TokenType.RIGHT_PAREN;\n }\n else if (this.isNumeric_(c) || c == '-') {\n type = TokenType.NUMBER;\n value = this.readNumber_();\n }\n else if (this.isAlpha_(c)) {\n type = TokenType.TEXT;\n value = this.readText_();\n }\n else if (this.isWhiteSpace_(c)) {\n return this.nextToken();\n }\n else if (c === '') {\n type = TokenType.EOF;\n }\n else {\n throw new Error('Unexpected character: ' + c);\n }\n return { position: position, value: value, type: type };\n };\n /**\n * @return {number} Numeric token value.\n * @private\n */\n Lexer.prototype.readNumber_ = function () {\n var c;\n var index = this.index_;\n var decimal = false;\n var scientificNotation = false;\n do {\n if (c == '.') {\n decimal = true;\n }\n else if (c == 'e' || c == 'E') {\n scientificNotation = true;\n }\n c = this.nextChar_();\n } while (this.isNumeric_(c, decimal) ||\n // if we haven't detected a scientific number before, 'e' or 'E'\n // hint that we should continue to read\n (!scientificNotation && (c == 'e' || c == 'E')) ||\n // once we know that we have a scientific number, both '-' and '+'\n // are allowed\n (scientificNotation && (c == '-' || c == '+')));\n return parseFloat(this.wkt.substring(index, this.index_--));\n };\n /**\n * @return {string} String token value.\n * @private\n */\n Lexer.prototype.readText_ = function () {\n var c;\n var index = this.index_;\n do {\n c = this.nextChar_();\n } while (this.isAlpha_(c));\n return this.wkt.substring(index, this.index_--).toUpperCase();\n };\n return Lexer;\n}());\n/**\n * Class to parse the tokens from the WKT string.\n */\nvar Parser = /** @class */ (function () {\n /**\n * @param {Lexer} lexer The lexer.\n */\n function Parser(lexer) {\n /**\n * @type {Lexer}\n * @private\n */\n this.lexer_ = lexer;\n /**\n * @type {Token}\n * @private\n */\n this.token_;\n /**\n * @type {import(\"../geom/GeometryLayout.js\").default}\n * @private\n */\n this.layout_ = GeometryLayout.XY;\n }\n /**\n * Fetch the next token form the lexer and replace the active token.\n * @private\n */\n Parser.prototype.consume_ = function () {\n this.token_ = this.lexer_.nextToken();\n };\n /**\n * Tests if the given type matches the type of the current token.\n * @param {TokenType} type Token type.\n * @return {boolean} Whether the token matches the given type.\n */\n Parser.prototype.isTokenType = function (type) {\n var isMatch = this.token_.type == type;\n return isMatch;\n };\n /**\n * If the given type matches the current token, consume it.\n * @param {TokenType} type Token type.\n * @return {boolean} Whether the token matches the given type.\n */\n Parser.prototype.match = function (type) {\n var isMatch = this.isTokenType(type);\n if (isMatch) {\n this.consume_();\n }\n return isMatch;\n };\n /**\n * Try to parse the tokens provided by the lexer.\n * @return {import(\"../geom/Geometry.js\").default} The geometry.\n */\n Parser.prototype.parse = function () {\n this.consume_();\n var geometry = this.parseGeometry_();\n return geometry;\n };\n /**\n * Try to parse the dimensional info.\n * @return {import(\"../geom/GeometryLayout.js\").default} The layout.\n * @private\n */\n Parser.prototype.parseGeometryLayout_ = function () {\n var layout = GeometryLayout.XY;\n var dimToken = this.token_;\n if (this.isTokenType(TokenType.TEXT)) {\n var dimInfo = dimToken.value;\n if (dimInfo === Z) {\n layout = GeometryLayout.XYZ;\n }\n else if (dimInfo === M) {\n layout = GeometryLayout.XYM;\n }\n else if (dimInfo === ZM) {\n layout = GeometryLayout.XYZM;\n }\n if (layout !== GeometryLayout.XY) {\n this.consume_();\n }\n }\n return layout;\n };\n /**\n * @return {!Array} A collection of geometries.\n * @private\n */\n Parser.prototype.parseGeometryCollectionText_ = function () {\n if (this.match(TokenType.LEFT_PAREN)) {\n var geometries = [];\n do {\n geometries.push(this.parseGeometry_());\n } while (this.match(TokenType.COMMA));\n if (this.match(TokenType.RIGHT_PAREN)) {\n return geometries;\n }\n }\n else if (this.isEmptyGeometry_()) {\n return [];\n }\n throw new Error(this.formatErrorMessage_());\n };\n /**\n * @return {Array} All values in a point.\n * @private\n */\n Parser.prototype.parsePointText_ = function () {\n if (this.match(TokenType.LEFT_PAREN)) {\n var coordinates = this.parsePoint_();\n if (this.match(TokenType.RIGHT_PAREN)) {\n return coordinates;\n }\n }\n else if (this.isEmptyGeometry_()) {\n return null;\n }\n throw new Error(this.formatErrorMessage_());\n };\n /**\n * @return {!Array>} All points in a linestring.\n * @private\n */\n Parser.prototype.parseLineStringText_ = function () {\n if (this.match(TokenType.LEFT_PAREN)) {\n var coordinates = this.parsePointList_();\n if (this.match(TokenType.RIGHT_PAREN)) {\n return coordinates;\n }\n }\n else if (this.isEmptyGeometry_()) {\n return [];\n }\n throw new Error(this.formatErrorMessage_());\n };\n /**\n * @return {!Array>>} All points in a polygon.\n * @private\n */\n Parser.prototype.parsePolygonText_ = function () {\n if (this.match(TokenType.LEFT_PAREN)) {\n var coordinates = this.parseLineStringTextList_();\n if (this.match(TokenType.RIGHT_PAREN)) {\n return coordinates;\n }\n }\n else if (this.isEmptyGeometry_()) {\n return [];\n }\n throw new Error(this.formatErrorMessage_());\n };\n /**\n * @return {!Array>} All points in a multipoint.\n * @private\n */\n Parser.prototype.parseMultiPointText_ = function () {\n if (this.match(TokenType.LEFT_PAREN)) {\n var coordinates = void 0;\n if (this.token_.type == TokenType.LEFT_PAREN) {\n coordinates = this.parsePointTextList_();\n }\n else {\n coordinates = this.parsePointList_();\n }\n if (this.match(TokenType.RIGHT_PAREN)) {\n return coordinates;\n }\n }\n else if (this.isEmptyGeometry_()) {\n return [];\n }\n throw new Error(this.formatErrorMessage_());\n };\n /**\n * @return {!Array>>} All linestring points\n * in a multilinestring.\n * @private\n */\n Parser.prototype.parseMultiLineStringText_ = function () {\n if (this.match(TokenType.LEFT_PAREN)) {\n var coordinates = this.parseLineStringTextList_();\n if (this.match(TokenType.RIGHT_PAREN)) {\n return coordinates;\n }\n }\n else if (this.isEmptyGeometry_()) {\n return [];\n }\n throw new Error(this.formatErrorMessage_());\n };\n /**\n * @return {!Array>>>} All polygon points in a multipolygon.\n * @private\n */\n Parser.prototype.parseMultiPolygonText_ = function () {\n if (this.match(TokenType.LEFT_PAREN)) {\n var coordinates = this.parsePolygonTextList_();\n if (this.match(TokenType.RIGHT_PAREN)) {\n return coordinates;\n }\n }\n else if (this.isEmptyGeometry_()) {\n return [];\n }\n throw new Error(this.formatErrorMessage_());\n };\n /**\n * @return {!Array} A point.\n * @private\n */\n Parser.prototype.parsePoint_ = function () {\n var coordinates = [];\n var dimensions = this.layout_.length;\n for (var i = 0; i < dimensions; ++i) {\n var token = this.token_;\n if (this.match(TokenType.NUMBER)) {\n coordinates.push(/** @type {number} */ (token.value));\n }\n else {\n break;\n }\n }\n if (coordinates.length == dimensions) {\n return coordinates;\n }\n throw new Error(this.formatErrorMessage_());\n };\n /**\n * @return {!Array>} An array of points.\n * @private\n */\n Parser.prototype.parsePointList_ = function () {\n var coordinates = [this.parsePoint_()];\n while (this.match(TokenType.COMMA)) {\n coordinates.push(this.parsePoint_());\n }\n return coordinates;\n };\n /**\n * @return {!Array>} An array of points.\n * @private\n */\n Parser.prototype.parsePointTextList_ = function () {\n var coordinates = [this.parsePointText_()];\n while (this.match(TokenType.COMMA)) {\n coordinates.push(this.parsePointText_());\n }\n return coordinates;\n };\n /**\n * @return {!Array>>} An array of points.\n * @private\n */\n Parser.prototype.parseLineStringTextList_ = function () {\n var coordinates = [this.parseLineStringText_()];\n while (this.match(TokenType.COMMA)) {\n coordinates.push(this.parseLineStringText_());\n }\n return coordinates;\n };\n /**\n * @return {!Array>>>} An array of points.\n * @private\n */\n Parser.prototype.parsePolygonTextList_ = function () {\n var coordinates = [this.parsePolygonText_()];\n while (this.match(TokenType.COMMA)) {\n coordinates.push(this.parsePolygonText_());\n }\n return coordinates;\n };\n /**\n * @return {boolean} Whether the token implies an empty geometry.\n * @private\n */\n Parser.prototype.isEmptyGeometry_ = function () {\n var isEmpty = this.isTokenType(TokenType.TEXT) && this.token_.value == EMPTY;\n if (isEmpty) {\n this.consume_();\n }\n return isEmpty;\n };\n /**\n * Create an error message for an unexpected token error.\n * @return {string} Error message.\n * @private\n */\n Parser.prototype.formatErrorMessage_ = function () {\n return ('Unexpected `' +\n this.token_.value +\n '` at position ' +\n this.token_.position +\n ' in `' +\n this.lexer_.wkt +\n '`');\n };\n /**\n * @return {!import(\"../geom/Geometry.js\").default} The geometry.\n * @private\n */\n Parser.prototype.parseGeometry_ = function () {\n var token = this.token_;\n if (this.match(TokenType.TEXT)) {\n var geomType = token.value;\n this.layout_ = this.parseGeometryLayout_();\n if (geomType == 'GEOMETRYCOLLECTION') {\n var geometries = this.parseGeometryCollectionText_();\n return new GeometryCollection(geometries);\n }\n else {\n var ctor = GeometryConstructor[geomType];\n if (!ctor) {\n throw new Error('Invalid geometry type: ' + geomType);\n }\n var coordinates = void 0;\n switch (geomType) {\n case 'POINT': {\n coordinates = this.parsePointText_();\n break;\n }\n case 'LINESTRING': {\n coordinates = this.parseLineStringText_();\n break;\n }\n case 'POLYGON': {\n coordinates = this.parsePolygonText_();\n break;\n }\n case 'MULTIPOINT': {\n coordinates = this.parseMultiPointText_();\n break;\n }\n case 'MULTILINESTRING': {\n coordinates = this.parseMultiLineStringText_();\n break;\n }\n case 'MULTIPOLYGON': {\n coordinates = this.parseMultiPolygonText_();\n break;\n }\n default: {\n throw new Error('Invalid geometry type: ' + geomType);\n }\n }\n if (!coordinates) {\n if (ctor === GeometryConstructor['POINT']) {\n coordinates = [NaN, NaN];\n }\n else {\n coordinates = [];\n }\n }\n return new ctor(coordinates, this.layout_);\n }\n }\n throw new Error(this.formatErrorMessage_());\n };\n return Parser;\n}());\n/**\n * @classdesc\n * Geometry format for reading and writing data in the `WellKnownText` (WKT)\n * format.\n *\n * @api\n */\nvar WKT = /** @class */ (function (_super) {\n __extends(WKT, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function WKT(opt_options) {\n var _this = _super.call(this) || this;\n var options = opt_options ? opt_options : {};\n /**\n * Split GeometryCollection into multiple features.\n * @type {boolean}\n * @private\n */\n _this.splitCollection_ =\n options.splitCollection !== undefined ? options.splitCollection : false;\n return _this;\n }\n /**\n * Parse a WKT string.\n * @param {string} wkt WKT string.\n * @return {import(\"../geom/Geometry.js\").default|undefined}\n * The geometry created.\n * @private\n */\n WKT.prototype.parse_ = function (wkt) {\n var lexer = new Lexer(wkt);\n var parser = new Parser(lexer);\n return parser.parse();\n };\n /**\n * @protected\n * @param {string} text Text.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Read options.\n * @return {import(\"../Feature.js\").default} Feature.\n */\n WKT.prototype.readFeatureFromText = function (text, opt_options) {\n var geom = this.readGeometryFromText(text, opt_options);\n if (geom) {\n var feature = new Feature();\n feature.setGeometry(geom);\n return feature;\n }\n return null;\n };\n /**\n * @param {string} text Text.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Read options.\n * @protected\n * @return {Array} Features.\n */\n WKT.prototype.readFeaturesFromText = function (text, opt_options) {\n var geometries = [];\n var geometry = this.readGeometryFromText(text, opt_options);\n if (this.splitCollection_ &&\n geometry.getType() == GeometryType.GEOMETRY_COLLECTION) {\n geometries = /** @type {GeometryCollection} */ (geometry).getGeometriesArray();\n }\n else {\n geometries = [geometry];\n }\n var features = [];\n for (var i = 0, ii = geometries.length; i < ii; ++i) {\n var feature = new Feature();\n feature.setGeometry(geometries[i]);\n features.push(feature);\n }\n return features;\n };\n /**\n * @param {string} text Text.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Read options.\n * @protected\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\n WKT.prototype.readGeometryFromText = function (text, opt_options) {\n var geometry = this.parse_(text);\n if (geometry) {\n return transformGeometryWithOptions(geometry, false, opt_options);\n }\n else {\n return null;\n }\n };\n /**\n * @param {import(\"../Feature.js\").default} feature Features.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @protected\n * @return {string} Text.\n */\n WKT.prototype.writeFeatureText = function (feature, opt_options) {\n var geometry = feature.getGeometry();\n if (geometry) {\n return this.writeGeometryText(geometry, opt_options);\n }\n return '';\n };\n /**\n * @param {Array} features Features.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @protected\n * @return {string} Text.\n */\n WKT.prototype.writeFeaturesText = function (features, opt_options) {\n if (features.length == 1) {\n return this.writeFeatureText(features[0], opt_options);\n }\n var geometries = [];\n for (var i = 0, ii = features.length; i < ii; ++i) {\n geometries.push(features[i].getGeometry());\n }\n var collection = new GeometryCollection(geometries);\n return this.writeGeometryText(collection, opt_options);\n };\n /**\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @protected\n * @return {string} Text.\n */\n WKT.prototype.writeGeometryText = function (geometry, opt_options) {\n return encode(transformGeometryWithOptions(geometry, true, opt_options));\n };\n return WKT;\n}(TextFeature));\n/**\n * @param {Point} geom Point geometry.\n * @return {string} Coordinates part of Point as WKT.\n */\nfunction encodePointGeometry(geom) {\n var coordinates = geom.getCoordinates();\n if (coordinates.length === 0) {\n return '';\n }\n return coordinates.join(' ');\n}\n/**\n * @param {MultiPoint} geom MultiPoint geometry.\n * @return {string} Coordinates part of MultiPoint as WKT.\n */\nfunction encodeMultiPointGeometry(geom) {\n var array = [];\n var components = geom.getPoints();\n for (var i = 0, ii = components.length; i < ii; ++i) {\n array.push('(' + encodePointGeometry(components[i]) + ')');\n }\n return array.join(',');\n}\n/**\n * @param {GeometryCollection} geom GeometryCollection geometry.\n * @return {string} Coordinates part of GeometryCollection as WKT.\n */\nfunction encodeGeometryCollectionGeometry(geom) {\n var array = [];\n var geoms = geom.getGeometries();\n for (var i = 0, ii = geoms.length; i < ii; ++i) {\n array.push(encode(geoms[i]));\n }\n return array.join(',');\n}\n/**\n * @param {LineString|import(\"../geom/LinearRing.js\").default} geom LineString geometry.\n * @return {string} Coordinates part of LineString as WKT.\n */\nfunction encodeLineStringGeometry(geom) {\n var coordinates = geom.getCoordinates();\n var array = [];\n for (var i = 0, ii = coordinates.length; i < ii; ++i) {\n array.push(coordinates[i].join(' '));\n }\n return array.join(',');\n}\n/**\n * @param {MultiLineString} geom MultiLineString geometry.\n * @return {string} Coordinates part of MultiLineString as WKT.\n */\nfunction encodeMultiLineStringGeometry(geom) {\n var array = [];\n var components = geom.getLineStrings();\n for (var i = 0, ii = components.length; i < ii; ++i) {\n array.push('(' + encodeLineStringGeometry(components[i]) + ')');\n }\n return array.join(',');\n}\n/**\n * @param {Polygon} geom Polygon geometry.\n * @return {string} Coordinates part of Polygon as WKT.\n */\nfunction encodePolygonGeometry(geom) {\n var array = [];\n var rings = geom.getLinearRings();\n for (var i = 0, ii = rings.length; i < ii; ++i) {\n array.push('(' + encodeLineStringGeometry(rings[i]) + ')');\n }\n return array.join(',');\n}\n/**\n * @param {MultiPolygon} geom MultiPolygon geometry.\n * @return {string} Coordinates part of MultiPolygon as WKT.\n */\nfunction encodeMultiPolygonGeometry(geom) {\n var array = [];\n var components = geom.getPolygons();\n for (var i = 0, ii = components.length; i < ii; ++i) {\n array.push('(' + encodePolygonGeometry(components[i]) + ')');\n }\n return array.join(',');\n}\n/**\n * @param {import(\"../geom/SimpleGeometry.js\").default} geom SimpleGeometry geometry.\n * @return {string} Potential dimensional information for WKT type.\n */\nfunction encodeGeometryLayout(geom) {\n var layout = geom.getLayout();\n var dimInfo = '';\n if (layout === GeometryLayout.XYZ || layout === GeometryLayout.XYZM) {\n dimInfo += Z;\n }\n if (layout === GeometryLayout.XYM || layout === GeometryLayout.XYZM) {\n dimInfo += M;\n }\n return dimInfo;\n}\n/**\n * @const\n * @type {Object}\n */\nvar GeometryEncoder = {\n 'Point': encodePointGeometry,\n 'LineString': encodeLineStringGeometry,\n 'Polygon': encodePolygonGeometry,\n 'MultiPoint': encodeMultiPointGeometry,\n 'MultiLineString': encodeMultiLineStringGeometry,\n 'MultiPolygon': encodeMultiPolygonGeometry,\n 'GeometryCollection': encodeGeometryCollectionGeometry,\n};\n/**\n * Encode a geometry as WKT.\n * @param {!import(\"../geom/Geometry.js\").default} geom The geometry to encode.\n * @return {string} WKT string for the geometry.\n */\nfunction encode(geom) {\n var type = geom.getType();\n var geometryEncoder = GeometryEncoder[type];\n var enc = geometryEncoder(geom);\n type = type.toUpperCase();\n if (typeof ( /** @type {?} */(geom).getFlatCoordinates) === 'function') {\n var dimInfo = encodeGeometryLayout(\n /** @type {import(\"../geom/SimpleGeometry.js\").default} */ (geom));\n if (dimInfo.length > 0) {\n type += ' ' + dimInfo;\n }\n }\n if (enc.length === 0) {\n return type + ' ' + EMPTY;\n }\n return type + '(' + enc + ')';\n}\nexport default WKT;\n//# sourceMappingURL=WKT.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/format/XMLFeature\n */\nimport FeatureFormat from '../format/Feature.js';\nimport FormatType from '../format/FormatType.js';\nimport { abstract } from '../util.js';\nimport { extend } from '../array.js';\nimport { getXMLSerializer, isDocument, parse } from '../xml.js';\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Base class for XML feature formats.\n *\n * @abstract\n */\nvar XMLFeature = /** @class */ (function (_super) {\n __extends(XMLFeature, _super);\n function XMLFeature() {\n var _this = _super.call(this) || this;\n /**\n * @type {XMLSerializer}\n * @private\n */\n _this.xmlSerializer_ = getXMLSerializer();\n return _this;\n }\n /**\n * @return {import(\"./FormatType.js\").default} Format.\n */\n XMLFeature.prototype.getType = function () {\n return FormatType.XML;\n };\n /**\n * Read a single feature.\n *\n * @param {Document|Element|Object|string} source Source.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Read options.\n * @return {import(\"../Feature.js\").default} Feature.\n * @api\n */\n XMLFeature.prototype.readFeature = function (source, opt_options) {\n if (!source) {\n return null;\n }\n else if (typeof source === 'string') {\n var doc = parse(source);\n return this.readFeatureFromDocument(doc, opt_options);\n }\n else if (isDocument(source)) {\n return this.readFeatureFromDocument(\n /** @type {Document} */ (source), opt_options);\n }\n else {\n return this.readFeatureFromNode(\n /** @type {Element} */ (source), opt_options);\n }\n };\n /**\n * @param {Document} doc Document.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Options.\n * @return {import(\"../Feature.js\").default} Feature.\n */\n XMLFeature.prototype.readFeatureFromDocument = function (doc, opt_options) {\n var features = this.readFeaturesFromDocument(doc, opt_options);\n if (features.length > 0) {\n return features[0];\n }\n else {\n return null;\n }\n };\n /**\n * @param {Element} node Node.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Options.\n * @return {import(\"../Feature.js\").default} Feature.\n */\n XMLFeature.prototype.readFeatureFromNode = function (node, opt_options) {\n return null; // not implemented\n };\n /**\n * Read all features from a feature collection.\n *\n * @param {Document|Element|Object|string} source Source.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Options.\n * @return {Array} Features.\n * @api\n */\n XMLFeature.prototype.readFeatures = function (source, opt_options) {\n if (!source) {\n return [];\n }\n else if (typeof source === 'string') {\n var doc = parse(source);\n return this.readFeaturesFromDocument(doc, opt_options);\n }\n else if (isDocument(source)) {\n return this.readFeaturesFromDocument(\n /** @type {Document} */ (source), opt_options);\n }\n else {\n return this.readFeaturesFromNode(\n /** @type {Element} */ (source), opt_options);\n }\n };\n /**\n * @param {Document} doc Document.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Options.\n * @protected\n * @return {Array} Features.\n */\n XMLFeature.prototype.readFeaturesFromDocument = function (doc, opt_options) {\n /** @type {Array} */\n var features = [];\n for (var n = doc.firstChild; n; n = n.nextSibling) {\n if (n.nodeType == Node.ELEMENT_NODE) {\n extend(features, this.readFeaturesFromNode(/** @type {Element} */ (n), opt_options));\n }\n }\n return features;\n };\n /**\n * @abstract\n * @param {Element} node Node.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Options.\n * @protected\n * @return {Array} Features.\n */\n XMLFeature.prototype.readFeaturesFromNode = function (node, opt_options) {\n return abstract();\n };\n /**\n * Read a single geometry from a source.\n *\n * @param {Document|Element|Object|string} source Source.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Read options.\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\n XMLFeature.prototype.readGeometry = function (source, opt_options) {\n if (!source) {\n return null;\n }\n else if (typeof source === 'string') {\n var doc = parse(source);\n return this.readGeometryFromDocument(doc, opt_options);\n }\n else if (isDocument(source)) {\n return this.readGeometryFromDocument(\n /** @type {Document} */ (source), opt_options);\n }\n else {\n return this.readGeometryFromNode(\n /** @type {Element} */ (source), opt_options);\n }\n };\n /**\n * @param {Document} doc Document.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Options.\n * @protected\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\n XMLFeature.prototype.readGeometryFromDocument = function (doc, opt_options) {\n return null; // not implemented\n };\n /**\n * @param {Element} node Node.\n * @param {import(\"./Feature.js\").ReadOptions=} opt_options Options.\n * @protected\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\n XMLFeature.prototype.readGeometryFromNode = function (node, opt_options) {\n return null; // not implemented\n };\n /**\n * Read the projection from the source.\n *\n * @param {Document|Element|Object|string} source Source.\n * @return {import(\"../proj/Projection.js\").default} Projection.\n * @api\n */\n XMLFeature.prototype.readProjection = function (source) {\n if (!source) {\n return null;\n }\n else if (typeof source === 'string') {\n var doc = parse(source);\n return this.readProjectionFromDocument(doc);\n }\n else if (isDocument(source)) {\n return this.readProjectionFromDocument(/** @type {Document} */ (source));\n }\n else {\n return this.readProjectionFromNode(/** @type {Element} */ (source));\n }\n };\n /**\n * @param {Document} doc Document.\n * @protected\n * @return {import(\"../proj/Projection.js\").default} Projection.\n */\n XMLFeature.prototype.readProjectionFromDocument = function (doc) {\n return this.dataProjection;\n };\n /**\n * @param {Element} node Node.\n * @protected\n * @return {import(\"../proj/Projection.js\").default} Projection.\n */\n XMLFeature.prototype.readProjectionFromNode = function (node) {\n return this.dataProjection;\n };\n /**\n * Encode a feature as string.\n *\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {string} Encoded feature.\n */\n XMLFeature.prototype.writeFeature = function (feature, opt_options) {\n var node = this.writeFeatureNode(feature, opt_options);\n return this.xmlSerializer_.serializeToString(node);\n };\n /**\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Options.\n * @protected\n * @return {Node} Node.\n */\n XMLFeature.prototype.writeFeatureNode = function (feature, opt_options) {\n return null; // not implemented\n };\n /**\n * Encode an array of features as string.\n *\n * @param {Array} features Features.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {string} Result.\n * @api\n */\n XMLFeature.prototype.writeFeatures = function (features, opt_options) {\n var node = this.writeFeaturesNode(features, opt_options);\n return this.xmlSerializer_.serializeToString(node);\n };\n /**\n * @param {Array} features Features.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Options.\n * @return {Node} Node.\n */\n XMLFeature.prototype.writeFeaturesNode = function (features, opt_options) {\n return null; // not implemented\n };\n /**\n * Encode a geometry as string.\n *\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Write options.\n * @return {string} Encoded geometry.\n */\n XMLFeature.prototype.writeGeometry = function (geometry, opt_options) {\n var node = this.writeGeometryNode(geometry, opt_options);\n return this.xmlSerializer_.serializeToString(node);\n };\n /**\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions=} opt_options Options.\n * @return {Node} Node.\n */\n XMLFeature.prototype.writeGeometryNode = function (geometry, opt_options) {\n return null; // not implemented\n };\n return XMLFeature;\n}(FeatureFormat));\nexport default XMLFeature;\n//# sourceMappingURL=XMLFeature.js.map","/**\n * @module ol/format/filter\n */\nimport And from './filter/And.js';\nimport Bbox from './filter/Bbox.js';\nimport Contains from './filter/Contains.js';\nimport During from './filter/During.js';\nimport EqualTo from './filter/EqualTo.js';\nimport GreaterThan from './filter/GreaterThan.js';\nimport GreaterThanOrEqualTo from './filter/GreaterThanOrEqualTo.js';\nimport Intersects from './filter/Intersects.js';\nimport IsBetween from './filter/IsBetween.js';\nimport IsLike from './filter/IsLike.js';\nimport IsNull from './filter/IsNull.js';\nimport LessThan from './filter/LessThan.js';\nimport LessThanOrEqualTo from './filter/LessThanOrEqualTo.js';\nimport Not from './filter/Not.js';\nimport NotEqualTo from './filter/NotEqualTo.js';\nimport Or from './filter/Or.js';\nimport Within from './filter/Within.js';\n/**\n * Create a logical `` operator between two or more filter conditions.\n *\n * @param {...import(\"./filter/Filter.js\").default} conditions Filter conditions.\n * @returns {!And} `` operator.\n * @api\n */\nexport function and(conditions) {\n var params = [null].concat(Array.prototype.slice.call(arguments));\n return new (Function.prototype.bind.apply(And, params))();\n}\n/**\n * Create a logical `` operator between two or more filter conditions.\n *\n * @param {...import(\"./filter/Filter.js\").default} conditions Filter conditions.\n * @returns {!Or} `` operator.\n * @api\n */\nexport function or(conditions) {\n var params = [null].concat(Array.prototype.slice.call(arguments));\n return new (Function.prototype.bind.apply(Or, params))();\n}\n/**\n * Represents a logical `` operator for a filter condition.\n *\n * @param {!import(\"./filter/Filter.js\").default} condition Filter condition.\n * @returns {!Not} `` operator.\n * @api\n */\nexport function not(condition) {\n return new Not(condition);\n}\n/**\n * Create a `` operator to test whether a geometry-valued property\n * intersects a fixed bounding box\n *\n * @param {!string} geometryName Geometry name to use.\n * @param {!import(\"../extent.js\").Extent} extent Extent.\n * @param {string=} opt_srsName SRS name. No srsName attribute will be\n * set on geometries when this is not provided.\n * @returns {!Bbox} `` operator.\n * @api\n */\nexport function bbox(geometryName, extent, opt_srsName) {\n return new Bbox(geometryName, extent, opt_srsName);\n}\n/**\n * Create a `` operator to test whether a geometry-valued property\n * contains a given geometry.\n *\n * @param {!string} geometryName Geometry name to use.\n * @param {!import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {string=} opt_srsName SRS name. No srsName attribute will be\n * set on geometries when this is not provided.\n * @returns {!Contains} `` operator.\n * @api\n */\nexport function contains(geometryName, geometry, opt_srsName) {\n return new Contains(geometryName, geometry, opt_srsName);\n}\n/**\n * Create a `` operator to test whether a geometry-valued property\n * intersects a given geometry.\n *\n * @param {!string} geometryName Geometry name to use.\n * @param {!import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {string=} opt_srsName SRS name. No srsName attribute will be\n * set on geometries when this is not provided.\n * @returns {!Intersects} `` operator.\n * @api\n */\nexport function intersects(geometryName, geometry, opt_srsName) {\n return new Intersects(geometryName, geometry, opt_srsName);\n}\n/**\n * Create a `` operator to test whether a geometry-valued property\n * is within a given geometry.\n *\n * @param {!string} geometryName Geometry name to use.\n * @param {!import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {string=} opt_srsName SRS name. No srsName attribute will be\n * set on geometries when this is not provided.\n * @returns {!Within} `` operator.\n * @api\n */\nexport function within(geometryName, geometry, opt_srsName) {\n return new Within(geometryName, geometry, opt_srsName);\n}\n/**\n * Creates a `` comparison operator.\n *\n * @param {!string} propertyName Name of the context property to compare.\n * @param {!(string|number)} expression The value to compare.\n * @param {boolean=} opt_matchCase Case-sensitive?\n * @returns {!EqualTo} `` operator.\n * @api\n */\nexport function equalTo(propertyName, expression, opt_matchCase) {\n return new EqualTo(propertyName, expression, opt_matchCase);\n}\n/**\n * Creates a `` comparison operator.\n *\n * @param {!string} propertyName Name of the context property to compare.\n * @param {!(string|number)} expression The value to compare.\n * @param {boolean=} opt_matchCase Case-sensitive?\n * @returns {!NotEqualTo} `` operator.\n * @api\n */\nexport function notEqualTo(propertyName, expression, opt_matchCase) {\n return new NotEqualTo(propertyName, expression, opt_matchCase);\n}\n/**\n * Creates a `` comparison operator.\n *\n * @param {!string} propertyName Name of the context property to compare.\n * @param {!number} expression The value to compare.\n * @returns {!LessThan} `` operator.\n * @api\n */\nexport function lessThan(propertyName, expression) {\n return new LessThan(propertyName, expression);\n}\n/**\n * Creates a `` comparison operator.\n *\n * @param {!string} propertyName Name of the context property to compare.\n * @param {!number} expression The value to compare.\n * @returns {!LessThanOrEqualTo} `` operator.\n * @api\n */\nexport function lessThanOrEqualTo(propertyName, expression) {\n return new LessThanOrEqualTo(propertyName, expression);\n}\n/**\n * Creates a `` comparison operator.\n *\n * @param {!string} propertyName Name of the context property to compare.\n * @param {!number} expression The value to compare.\n * @returns {!GreaterThan} `` operator.\n * @api\n */\nexport function greaterThan(propertyName, expression) {\n return new GreaterThan(propertyName, expression);\n}\n/**\n * Creates a `` comparison operator.\n *\n * @param {!string} propertyName Name of the context property to compare.\n * @param {!number} expression The value to compare.\n * @returns {!GreaterThanOrEqualTo} `` operator.\n * @api\n */\nexport function greaterThanOrEqualTo(propertyName, expression) {\n return new GreaterThanOrEqualTo(propertyName, expression);\n}\n/**\n * Creates a `` comparison operator to test whether a property value\n * is null.\n *\n * @param {!string} propertyName Name of the context property to compare.\n * @returns {!IsNull} `` operator.\n * @api\n */\nexport function isNull(propertyName) {\n return new IsNull(propertyName);\n}\n/**\n * Creates a `` comparison operator to test whether an expression\n * value lies within a range given by a lower and upper bound (inclusive).\n *\n * @param {!string} propertyName Name of the context property to compare.\n * @param {!number} lowerBoundary The lower bound of the range.\n * @param {!number} upperBoundary The upper bound of the range.\n * @returns {!IsBetween} `` operator.\n * @api\n */\nexport function between(propertyName, lowerBoundary, upperBoundary) {\n return new IsBetween(propertyName, lowerBoundary, upperBoundary);\n}\n/**\n * Represents a `` comparison operator that matches a string property\n * value against a text pattern.\n *\n * @param {!string} propertyName Name of the context property to compare.\n * @param {!string} pattern Text pattern.\n * @param {string=} opt_wildCard Pattern character which matches any sequence of\n * zero or more string characters. Default is '*'.\n * @param {string=} opt_singleChar pattern character which matches any single\n * string character. Default is '.'.\n * @param {string=} opt_escapeChar Escape character which can be used to escape\n * the pattern characters. Default is '!'.\n * @param {boolean=} opt_matchCase Case-sensitive?\n * @returns {!IsLike} `` operator.\n * @api\n */\nexport function like(propertyName, pattern, opt_wildCard, opt_singleChar, opt_escapeChar, opt_matchCase) {\n return new IsLike(propertyName, pattern, opt_wildCard, opt_singleChar, opt_escapeChar, opt_matchCase);\n}\n/**\n * Create a `` temporal operator.\n *\n * @param {!string} propertyName Name of the context property to compare.\n * @param {!string} begin The begin date in ISO-8601 format.\n * @param {!string} end The end date in ISO-8601 format.\n * @returns {!During} `` operator.\n * @api\n */\nexport function during(propertyName, begin, end) {\n return new During(propertyName, begin, end);\n}\n//# sourceMappingURL=filter.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/format/filter/And\n */\nimport LogicalNary from './LogicalNary.js';\n/**\n * @classdesc\n * Represents a logical `` operator between two or more filter conditions.\n *\n * @abstract\n */\nvar And = /** @class */ (function (_super) {\n __extends(And, _super);\n /**\n * @param {...import(\"./Filter.js\").default} conditions Conditions.\n */\n function And(conditions) {\n return _super.call(this, 'And', Array.prototype.slice.call(arguments)) || this;\n }\n return And;\n}(LogicalNary));\nexport default And;\n//# sourceMappingURL=And.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/format/filter/Bbox\n */\nimport Filter from './Filter.js';\n/**\n * @classdesc\n * Represents a `` operator to test whether a geometry-valued property\n * intersects a fixed bounding box\n *\n * @api\n */\nvar Bbox = /** @class */ (function (_super) {\n __extends(Bbox, _super);\n /**\n * @param {!string} geometryName Geometry name to use.\n * @param {!import(\"../../extent.js\").Extent} extent Extent.\n * @param {string=} opt_srsName SRS name. No srsName attribute will be set\n * on geometries when this is not provided.\n */\n function Bbox(geometryName, extent, opt_srsName) {\n var _this = _super.call(this, 'BBOX') || this;\n /**\n * @type {!string}\n */\n _this.geometryName = geometryName;\n /**\n * @type {import(\"../../extent.js\").Extent}\n */\n _this.extent = extent;\n if (extent.length !== 4) {\n throw new Error('Expected an extent with four values ([minX, minY, maxX, maxY])');\n }\n /**\n * @type {string|undefined}\n */\n _this.srsName = opt_srsName;\n return _this;\n }\n return Bbox;\n}(Filter));\nexport default Bbox;\n//# sourceMappingURL=Bbox.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/format/filter/Comparison\n */\nimport Filter from './Filter.js';\n/**\n * @classdesc\n * Abstract class; normally only used for creating subclasses and not instantiated in apps.\n * Base class for WFS GetFeature property comparison filters.\n *\n * @abstract\n */\nvar Comparison = /** @class */ (function (_super) {\n __extends(Comparison, _super);\n /**\n * @param {!string} tagName The XML tag name for this filter.\n * @param {!string} propertyName Name of the context property to compare.\n */\n function Comparison(tagName, propertyName) {\n var _this = _super.call(this, tagName) || this;\n /**\n * @type {!string}\n */\n _this.propertyName = propertyName;\n return _this;\n }\n return Comparison;\n}(Filter));\nexport default Comparison;\n//# sourceMappingURL=Comparison.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/format/filter/ComparisonBinary\n */\nimport Comparison from './Comparison.js';\n/**\n * @classdesc\n * Abstract class; normally only used for creating subclasses and not instantiated in apps.\n * Base class for WFS GetFeature property binary comparison filters.\n *\n * @abstract\n */\nvar ComparisonBinary = /** @class */ (function (_super) {\n __extends(ComparisonBinary, _super);\n /**\n * @param {!string} tagName The XML tag name for this filter.\n * @param {!string} propertyName Name of the context property to compare.\n * @param {!(string|number)} expression The value to compare.\n * @param {boolean=} opt_matchCase Case-sensitive?\n */\n function ComparisonBinary(tagName, propertyName, expression, opt_matchCase) {\n var _this = _super.call(this, tagName, propertyName) || this;\n /**\n * @type {!(string|number)}\n */\n _this.expression = expression;\n /**\n * @type {boolean|undefined}\n */\n _this.matchCase = opt_matchCase;\n return _this;\n }\n return ComparisonBinary;\n}(Comparison));\nexport default ComparisonBinary;\n//# sourceMappingURL=ComparisonBinary.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/format/filter/Contains\n */\nimport Spatial from './Spatial.js';\n/**\n * @classdesc\n * Represents a `` operator to test whether a geometry-valued property\n * contains a given geometry.\n * @api\n */\nvar Contains = /** @class */ (function (_super) {\n __extends(Contains, _super);\n /**\n * @param {!string} geometryName Geometry name to use.\n * @param {!import(\"../../geom/Geometry.js\").default} geometry Geometry.\n * @param {string=} opt_srsName SRS name. No srsName attribute will be\n * set on geometries when this is not provided.\n */\n function Contains(geometryName, geometry, opt_srsName) {\n return _super.call(this, 'Contains', geometryName, geometry, opt_srsName) || this;\n }\n return Contains;\n}(Spatial));\nexport default Contains;\n//# sourceMappingURL=Contains.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/format/filter/During\n */\nimport Comparison from './Comparison.js';\n/**\n * @classdesc\n * Represents a `` comparison operator.\n * @api\n */\nvar During = /** @class */ (function (_super) {\n __extends(During, _super);\n /**\n * @param {!string} propertyName Name of the context property to compare.\n * @param {!string} begin The begin date in ISO-8601 format.\n * @param {!string} end The end date in ISO-8601 format.\n */\n function During(propertyName, begin, end) {\n var _this = _super.call(this, 'During', propertyName) || this;\n /**\n * @type {!string}\n */\n _this.begin = begin;\n /**\n * @type {!string}\n */\n _this.end = end;\n return _this;\n }\n return During;\n}(Comparison));\nexport default During;\n//# sourceMappingURL=During.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/format/filter/EqualTo\n */\nimport ComparisonBinary from './ComparisonBinary.js';\n/**\n * @classdesc\n * Represents a `` comparison operator.\n * @api\n */\nvar EqualTo = /** @class */ (function (_super) {\n __extends(EqualTo, _super);\n /**\n * @param {!string} propertyName Name of the context property to compare.\n * @param {!(string|number)} expression The value to compare.\n * @param {boolean=} opt_matchCase Case-sensitive?\n */\n function EqualTo(propertyName, expression, opt_matchCase) {\n return _super.call(this, 'PropertyIsEqualTo', propertyName, expression, opt_matchCase) || this;\n }\n return EqualTo;\n}(ComparisonBinary));\nexport default EqualTo;\n//# sourceMappingURL=EqualTo.js.map","/**\n * @module ol/format/filter/Filter\n */\n/**\n * @classdesc\n * Abstract class; normally only used for creating subclasses and not instantiated in apps.\n * Base class for WFS GetFeature filters.\n *\n * @abstract\n */\nvar Filter = /** @class */ (function () {\n /**\n * @param {!string} tagName The XML tag name for this filter.\n */\n function Filter(tagName) {\n /**\n * @private\n * @type {!string}\n */\n this.tagName_ = tagName;\n }\n /**\n * The XML tag name for a filter.\n * @returns {!string} Name.\n */\n Filter.prototype.getTagName = function () {\n return this.tagName_;\n };\n return Filter;\n}());\nexport default Filter;\n//# sourceMappingURL=Filter.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/format/filter/GreaterThan\n */\nimport ComparisonBinary from './ComparisonBinary.js';\n/**\n * @classdesc\n * Represents a `` comparison operator.\n * @api\n */\nvar GreaterThan = /** @class */ (function (_super) {\n __extends(GreaterThan, _super);\n /**\n * @param {!string} propertyName Name of the context property to compare.\n * @param {!number} expression The value to compare.\n */\n function GreaterThan(propertyName, expression) {\n return _super.call(this, 'PropertyIsGreaterThan', propertyName, expression) || this;\n }\n return GreaterThan;\n}(ComparisonBinary));\nexport default GreaterThan;\n//# sourceMappingURL=GreaterThan.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/format/filter/GreaterThanOrEqualTo\n */\nimport ComparisonBinary from './ComparisonBinary.js';\n/**\n * @classdesc\n * Represents a `` comparison operator.\n * @api\n */\nvar GreaterThanOrEqualTo = /** @class */ (function (_super) {\n __extends(GreaterThanOrEqualTo, _super);\n /**\n * @param {!string} propertyName Name of the context property to compare.\n * @param {!number} expression The value to compare.\n */\n function GreaterThanOrEqualTo(propertyName, expression) {\n return _super.call(this, 'PropertyIsGreaterThanOrEqualTo', propertyName, expression) || this;\n }\n return GreaterThanOrEqualTo;\n}(ComparisonBinary));\nexport default GreaterThanOrEqualTo;\n//# sourceMappingURL=GreaterThanOrEqualTo.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/format/filter/Intersects\n */\nimport Spatial from './Spatial.js';\n/**\n * @classdesc\n * Represents a `` operator to test whether a geometry-valued property\n * intersects a given geometry.\n * @api\n */\nvar Intersects = /** @class */ (function (_super) {\n __extends(Intersects, _super);\n /**\n * @param {!string} geometryName Geometry name to use.\n * @param {!import(\"../../geom/Geometry.js\").default} geometry Geometry.\n * @param {string=} opt_srsName SRS name. No srsName attribute will be\n * set on geometries when this is not provided.\n */\n function Intersects(geometryName, geometry, opt_srsName) {\n return _super.call(this, 'Intersects', geometryName, geometry, opt_srsName) || this;\n }\n return Intersects;\n}(Spatial));\nexport default Intersects;\n//# sourceMappingURL=Intersects.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/format/filter/IsBetween\n */\nimport Comparison from './Comparison.js';\n/**\n * @classdesc\n * Represents a `` comparison operator.\n * @api\n */\nvar IsBetween = /** @class */ (function (_super) {\n __extends(IsBetween, _super);\n /**\n * @param {!string} propertyName Name of the context property to compare.\n * @param {!number} lowerBoundary The lower bound of the range.\n * @param {!number} upperBoundary The upper bound of the range.\n */\n function IsBetween(propertyName, lowerBoundary, upperBoundary) {\n var _this = _super.call(this, 'PropertyIsBetween', propertyName) || this;\n /**\n * @type {!number}\n */\n _this.lowerBoundary = lowerBoundary;\n /**\n * @type {!number}\n */\n _this.upperBoundary = upperBoundary;\n return _this;\n }\n return IsBetween;\n}(Comparison));\nexport default IsBetween;\n//# sourceMappingURL=IsBetween.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/format/filter/IsLike\n */\nimport Comparison from './Comparison.js';\n/**\n * @classdesc\n * Represents a `` comparison operator.\n * @api\n */\nvar IsLike = /** @class */ (function (_super) {\n __extends(IsLike, _super);\n /**\n * [constructor description]\n * @param {!string} propertyName Name of the context property to compare.\n * @param {!string} pattern Text pattern.\n * @param {string=} opt_wildCard Pattern character which matches any sequence of\n * zero or more string characters. Default is '*'.\n * @param {string=} opt_singleChar pattern character which matches any single\n * string character. Default is '.'.\n * @param {string=} opt_escapeChar Escape character which can be used to escape\n * the pattern characters. Default is '!'.\n * @param {boolean=} opt_matchCase Case-sensitive?\n */\n function IsLike(propertyName, pattern, opt_wildCard, opt_singleChar, opt_escapeChar, opt_matchCase) {\n var _this = _super.call(this, 'PropertyIsLike', propertyName) || this;\n /**\n * @type {!string}\n */\n _this.pattern = pattern;\n /**\n * @type {!string}\n */\n _this.wildCard = opt_wildCard !== undefined ? opt_wildCard : '*';\n /**\n * @type {!string}\n */\n _this.singleChar = opt_singleChar !== undefined ? opt_singleChar : '.';\n /**\n * @type {!string}\n */\n _this.escapeChar = opt_escapeChar !== undefined ? opt_escapeChar : '!';\n /**\n * @type {boolean|undefined}\n */\n _this.matchCase = opt_matchCase;\n return _this;\n }\n return IsLike;\n}(Comparison));\nexport default IsLike;\n//# sourceMappingURL=IsLike.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/format/filter/IsNull\n */\nimport Comparison from './Comparison.js';\n/**\n * @classdesc\n * Represents a `` comparison operator.\n * @api\n */\nvar IsNull = /** @class */ (function (_super) {\n __extends(IsNull, _super);\n /**\n * @param {!string} propertyName Name of the context property to compare.\n */\n function IsNull(propertyName) {\n return _super.call(this, 'PropertyIsNull', propertyName) || this;\n }\n return IsNull;\n}(Comparison));\nexport default IsNull;\n//# sourceMappingURL=IsNull.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/format/filter/LessThan\n */\nimport ComparisonBinary from './ComparisonBinary.js';\n/**\n * @classdesc\n * Represents a `` comparison operator.\n * @api\n */\nvar LessThan = /** @class */ (function (_super) {\n __extends(LessThan, _super);\n /**\n * @param {!string} propertyName Name of the context property to compare.\n * @param {!number} expression The value to compare.\n */\n function LessThan(propertyName, expression) {\n return _super.call(this, 'PropertyIsLessThan', propertyName, expression) || this;\n }\n return LessThan;\n}(ComparisonBinary));\nexport default LessThan;\n//# sourceMappingURL=LessThan.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/format/filter/LessThanOrEqualTo\n */\nimport ComparisonBinary from './ComparisonBinary.js';\n/**\n * @classdesc\n * Represents a `` comparison operator.\n * @api\n */\nvar LessThanOrEqualTo = /** @class */ (function (_super) {\n __extends(LessThanOrEqualTo, _super);\n /**\n * @param {!string} propertyName Name of the context property to compare.\n * @param {!number} expression The value to compare.\n */\n function LessThanOrEqualTo(propertyName, expression) {\n return _super.call(this, 'PropertyIsLessThanOrEqualTo', propertyName, expression) || this;\n }\n return LessThanOrEqualTo;\n}(ComparisonBinary));\nexport default LessThanOrEqualTo;\n//# sourceMappingURL=LessThanOrEqualTo.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/format/filter/LogicalNary\n */\nimport Filter from './Filter.js';\nimport { assert } from '../../asserts.js';\n/**\n * @classdesc\n * Abstract class; normally only used for creating subclasses and not instantiated in apps.\n * Base class for WFS GetFeature n-ary logical filters.\n *\n * @abstract\n */\nvar LogicalNary = /** @class */ (function (_super) {\n __extends(LogicalNary, _super);\n /**\n * @param {!string} tagName The XML tag name for this filter.\n * @param {Array} conditions Conditions.\n */\n function LogicalNary(tagName, conditions) {\n var _this = _super.call(this, tagName) || this;\n /**\n * @type {Array}\n */\n _this.conditions = conditions;\n assert(_this.conditions.length >= 2, 57); // At least 2 conditions are required.\n return _this;\n }\n return LogicalNary;\n}(Filter));\nexport default LogicalNary;\n//# sourceMappingURL=LogicalNary.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/format/filter/Not\n */\nimport Filter from './Filter.js';\n/**\n * @classdesc\n * Represents a logical `` operator for a filter condition.\n * @api\n */\nvar Not = /** @class */ (function (_super) {\n __extends(Not, _super);\n /**\n * @param {!import(\"./Filter.js\").default} condition Filter condition.\n */\n function Not(condition) {\n var _this = _super.call(this, 'Not') || this;\n /**\n * @type {!import(\"./Filter.js\").default}\n */\n _this.condition = condition;\n return _this;\n }\n return Not;\n}(Filter));\nexport default Not;\n//# sourceMappingURL=Not.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/format/filter/NotEqualTo\n */\nimport ComparisonBinary from './ComparisonBinary.js';\n/**\n * @classdesc\n * Represents a `` comparison operator.\n * @api\n */\nvar NotEqualTo = /** @class */ (function (_super) {\n __extends(NotEqualTo, _super);\n /**\n * @param {!string} propertyName Name of the context property to compare.\n * @param {!(string|number)} expression The value to compare.\n * @param {boolean=} opt_matchCase Case-sensitive?\n */\n function NotEqualTo(propertyName, expression, opt_matchCase) {\n return _super.call(this, 'PropertyIsNotEqualTo', propertyName, expression, opt_matchCase) || this;\n }\n return NotEqualTo;\n}(ComparisonBinary));\nexport default NotEqualTo;\n//# sourceMappingURL=NotEqualTo.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/format/filter/Or\n */\nimport LogicalNary from './LogicalNary.js';\n/**\n * @classdesc\n * Represents a logical `` operator between two ore more filter conditions.\n * @api\n */\nvar Or = /** @class */ (function (_super) {\n __extends(Or, _super);\n /**\n * @param {...import(\"./Filter.js\").default} conditions Conditions.\n */\n function Or(conditions) {\n return _super.call(this, 'Or', Array.prototype.slice.call(arguments)) || this;\n }\n return Or;\n}(LogicalNary));\nexport default Or;\n//# sourceMappingURL=Or.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/format/filter/Spatial\n */\nimport Filter from './Filter.js';\n/**\n * @classdesc\n * Abstract class; normally only used for creating subclasses and not instantiated in apps.\n * Represents a spatial operator to test whether a geometry-valued property\n * relates to a given geometry.\n *\n * @abstract\n */\nvar Spatial = /** @class */ (function (_super) {\n __extends(Spatial, _super);\n /**\n * @param {!string} tagName The XML tag name for this filter.\n * @param {!string} geometryName Geometry name to use.\n * @param {!import(\"../../geom/Geometry.js\").default} geometry Geometry.\n * @param {string=} opt_srsName SRS name. No srsName attribute will be\n * set on geometries when this is not provided.\n */\n function Spatial(tagName, geometryName, geometry, opt_srsName) {\n var _this = _super.call(this, tagName) || this;\n /**\n * @type {!string}\n */\n _this.geometryName = geometryName || 'the_geom';\n /**\n * @type {import(\"../../geom/Geometry.js\").default}\n */\n _this.geometry = geometry;\n /**\n * @type {string|undefined}\n */\n _this.srsName = opt_srsName;\n return _this;\n }\n return Spatial;\n}(Filter));\nexport default Spatial;\n//# sourceMappingURL=Spatial.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/format/filter/Within\n */\nimport Spatial from './Spatial.js';\n/**\n * @classdesc\n * Represents a `` operator to test whether a geometry-valued property\n * is within a given geometry.\n * @api\n */\nvar Within = /** @class */ (function (_super) {\n __extends(Within, _super);\n /**\n * @param {!string} geometryName Geometry name to use.\n * @param {!import(\"../../geom/Geometry.js\").default} geometry Geometry.\n * @param {string=} opt_srsName SRS name. No srsName attribute will be\n * set on geometries when this is not provided.\n */\n function Within(geometryName, geometry, opt_srsName) {\n return _super.call(this, 'Within', geometryName, geometry, opt_srsName) || this;\n }\n return Within;\n}(Spatial));\nexport default Within;\n//# sourceMappingURL=Within.js.map","/**\n * @module ol/format/xsd\n */\nimport { getAllTextContent, getDocument } from '../xml.js';\nimport { padNumber } from '../string.js';\n/**\n * @param {Node} node Node.\n * @return {boolean|undefined} Boolean.\n */\nexport function readBoolean(node) {\n var s = getAllTextContent(node, false);\n return readBooleanString(s);\n}\n/**\n * @param {string} string String.\n * @return {boolean|undefined} Boolean.\n */\nexport function readBooleanString(string) {\n var m = /^\\s*(true|1)|(false|0)\\s*$/.exec(string);\n if (m) {\n return m[1] !== undefined || false;\n }\n else {\n return undefined;\n }\n}\n/**\n * @param {Node} node Node.\n * @return {number|undefined} DateTime in seconds.\n */\nexport function readDateTime(node) {\n var s = getAllTextContent(node, false);\n var dateTime = Date.parse(s);\n return isNaN(dateTime) ? undefined : dateTime / 1000;\n}\n/**\n * @param {Node} node Node.\n * @return {number|undefined} Decimal.\n */\nexport function readDecimal(node) {\n var s = getAllTextContent(node, false);\n return readDecimalString(s);\n}\n/**\n * @param {string} string String.\n * @return {number|undefined} Decimal.\n */\nexport function readDecimalString(string) {\n // FIXME check spec\n var m = /^\\s*([+\\-]?\\d*\\.?\\d+(?:e[+\\-]?\\d+)?)\\s*$/i.exec(string);\n if (m) {\n return parseFloat(m[1]);\n }\n else {\n return undefined;\n }\n}\n/**\n * @param {Node} node Node.\n * @return {number|undefined} Non negative integer.\n */\nexport function readNonNegativeInteger(node) {\n var s = getAllTextContent(node, false);\n return readNonNegativeIntegerString(s);\n}\n/**\n * @param {string} string String.\n * @return {number|undefined} Non negative integer.\n */\nexport function readNonNegativeIntegerString(string) {\n var m = /^\\s*(\\d+)\\s*$/.exec(string);\n if (m) {\n return parseInt(m[1], 10);\n }\n else {\n return undefined;\n }\n}\n/**\n * @param {Node} node Node.\n * @return {string|undefined} String.\n */\nexport function readString(node) {\n return getAllTextContent(node, false).trim();\n}\n/**\n * @param {Node} node Node to append a TextNode with the boolean to.\n * @param {boolean} bool Boolean.\n */\nexport function writeBooleanTextNode(node, bool) {\n writeStringTextNode(node, bool ? '1' : '0');\n}\n/**\n * @param {Node} node Node to append a CDATA Section with the string to.\n * @param {string} string String.\n */\nexport function writeCDATASection(node, string) {\n node.appendChild(getDocument().createCDATASection(string));\n}\n/**\n * @param {Node} node Node to append a TextNode with the dateTime to.\n * @param {number} dateTime DateTime in seconds.\n */\nexport function writeDateTimeTextNode(node, dateTime) {\n var date = new Date(dateTime * 1000);\n var string = date.getUTCFullYear() +\n '-' +\n padNumber(date.getUTCMonth() + 1, 2) +\n '-' +\n padNumber(date.getUTCDate(), 2) +\n 'T' +\n padNumber(date.getUTCHours(), 2) +\n ':' +\n padNumber(date.getUTCMinutes(), 2) +\n ':' +\n padNumber(date.getUTCSeconds(), 2) +\n 'Z';\n node.appendChild(getDocument().createTextNode(string));\n}\n/**\n * @param {Node} node Node to append a TextNode with the decimal to.\n * @param {number} decimal Decimal.\n */\nexport function writeDecimalTextNode(node, decimal) {\n var string = decimal.toPrecision();\n node.appendChild(getDocument().createTextNode(string));\n}\n/**\n * @param {Node} node Node to append a TextNode with the decimal to.\n * @param {number} nonNegativeInteger Non negative integer.\n */\nexport function writeNonNegativeIntegerTextNode(node, nonNegativeInteger) {\n var string = nonNegativeInteger.toString();\n node.appendChild(getDocument().createTextNode(string));\n}\n/**\n * @param {Node} node Node to append a TextNode with the string to.\n * @param {string} string String.\n */\nexport function writeStringTextNode(node, string) {\n node.appendChild(getDocument().createTextNode(string));\n}\n//# sourceMappingURL=xsd.js.map","/**\n * @module ol/functions\n */\nimport { equals as arrayEquals } from './array.js';\n/**\n * Always returns true.\n * @returns {boolean} true.\n */\nexport function TRUE() {\n return true;\n}\n/**\n * Always returns false.\n * @returns {boolean} false.\n */\nexport function FALSE() {\n return false;\n}\n/**\n * A reusable function, used e.g. as a default for callbacks.\n *\n * @return {void} Nothing.\n */\nexport function VOID() { }\n/**\n * Wrap a function in another function that remembers the last return. If the\n * returned function is called twice in a row with the same arguments and the same\n * this object, it will return the value from the first call in the second call.\n *\n * @param {function(...any): ReturnType} fn The function to memoize.\n * @return {function(...any): ReturnType} The memoized function.\n * @template ReturnType\n */\nexport function memoizeOne(fn) {\n var called = false;\n /** @type {ReturnType} */\n var lastResult;\n /** @type {Array} */\n var lastArgs;\n var lastThis;\n return function () {\n var nextArgs = Array.prototype.slice.call(arguments);\n if (!called || this !== lastThis || !arrayEquals(nextArgs, lastArgs)) {\n called = true;\n lastThis = this;\n lastArgs = nextArgs;\n lastResult = fn.apply(this, arguments);\n }\n return lastResult;\n };\n}\n//# sourceMappingURL=functions.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/Geometry\n */\nimport BaseObject from '../Object.js';\nimport Units from '../proj/Units.js';\nimport { abstract } from '../util.js';\nimport { compose as composeTransform, create as createTransform, } from '../transform.js';\nimport { createEmpty, createOrUpdateEmpty, getHeight, returnOrUpdate, } from '../extent.js';\nimport { get as getProjection, getTransform } from '../proj.js';\nimport { memoizeOne } from '../functions.js';\nimport { transform2D } from './flat/transform.js';\n/**\n * @type {import(\"../transform.js\").Transform}\n */\nvar tmpTransform = createTransform();\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Base class for vector geometries.\n *\n * To get notified of changes to the geometry, register a listener for the\n * generic `change` event on your geometry instance.\n *\n * @abstract\n * @api\n */\nvar Geometry = /** @class */ (function (_super) {\n __extends(Geometry, _super);\n function Geometry() {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {import(\"../extent.js\").Extent}\n */\n _this.extent_ = createEmpty();\n /**\n * @private\n * @type {number}\n */\n _this.extentRevision_ = -1;\n /**\n * @protected\n * @type {number}\n */\n _this.simplifiedGeometryMaxMinSquaredTolerance = 0;\n /**\n * @protected\n * @type {number}\n */\n _this.simplifiedGeometryRevision = 0;\n /**\n * Get a transformed and simplified version of the geometry.\n * @abstract\n * @param {number} revision The geometry revision.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {import(\"../proj.js\").TransformFunction} [opt_transform] Optional transform function.\n * @return {Geometry} Simplified geometry.\n */\n _this.simplifyTransformedInternal = memoizeOne(function (revision, squaredTolerance, opt_transform) {\n if (!opt_transform) {\n return this.getSimplifiedGeometry(squaredTolerance);\n }\n var clone = this.clone();\n clone.applyTransform(opt_transform);\n return clone.getSimplifiedGeometry(squaredTolerance);\n });\n return _this;\n }\n /**\n * Get a transformed and simplified version of the geometry.\n * @abstract\n * @param {number} squaredTolerance Squared tolerance.\n * @param {import(\"../proj.js\").TransformFunction} [opt_transform] Optional transform function.\n * @return {Geometry} Simplified geometry.\n */\n Geometry.prototype.simplifyTransformed = function (squaredTolerance, opt_transform) {\n return this.simplifyTransformedInternal(this.getRevision(), squaredTolerance, opt_transform);\n };\n /**\n * Make a complete copy of the geometry.\n * @abstract\n * @return {!Geometry} Clone.\n */\n Geometry.prototype.clone = function () {\n return abstract();\n };\n /**\n * @abstract\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n Geometry.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n return abstract();\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\n Geometry.prototype.containsXY = function (x, y) {\n var coord = this.getClosestPoint([x, y]);\n return coord[0] === x && coord[1] === y;\n };\n /**\n * Return the closest point of the geometry to the passed point as\n * {@link module:ol/coordinate~Coordinate coordinate}.\n * @param {import(\"../coordinate.js\").Coordinate} point Point.\n * @param {import(\"../coordinate.js\").Coordinate=} opt_closestPoint Closest point.\n * @return {import(\"../coordinate.js\").Coordinate} Closest point.\n * @api\n */\n Geometry.prototype.getClosestPoint = function (point, opt_closestPoint) {\n var closestPoint = opt_closestPoint ? opt_closestPoint : [NaN, NaN];\n this.closestPointXY(point[0], point[1], closestPoint, Infinity);\n return closestPoint;\n };\n /**\n * Returns true if this geometry includes the specified coordinate. If the\n * coordinate is on the boundary of the geometry, returns false.\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} Contains coordinate.\n * @api\n */\n Geometry.prototype.intersectsCoordinate = function (coordinate) {\n return this.containsXY(coordinate[0], coordinate[1]);\n };\n /**\n * @abstract\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @protected\n * @return {import(\"../extent.js\").Extent} extent Extent.\n */\n Geometry.prototype.computeExtent = function (extent) {\n return abstract();\n };\n /**\n * Get the extent of the geometry.\n * @param {import(\"../extent.js\").Extent=} opt_extent Extent.\n * @return {import(\"../extent.js\").Extent} extent Extent.\n * @api\n */\n Geometry.prototype.getExtent = function (opt_extent) {\n if (this.extentRevision_ != this.getRevision()) {\n var extent = this.computeExtent(this.extent_);\n if (isNaN(extent[0]) || isNaN(extent[1])) {\n createOrUpdateEmpty(extent);\n }\n this.extentRevision_ = this.getRevision();\n }\n return returnOrUpdate(this.extent_, opt_extent);\n };\n /**\n * Rotate the geometry around a given coordinate. This modifies the geometry\n * coordinates in place.\n * @abstract\n * @param {number} angle Rotation angle in radians.\n * @param {import(\"../coordinate.js\").Coordinate} anchor The rotation center.\n * @api\n */\n Geometry.prototype.rotate = function (angle, anchor) {\n abstract();\n };\n /**\n * Scale the geometry (with an optional origin). This modifies the geometry\n * coordinates in place.\n * @abstract\n * @param {number} sx The scaling factor in the x-direction.\n * @param {number=} opt_sy The scaling factor in the y-direction (defaults to sx).\n * @param {import(\"../coordinate.js\").Coordinate=} opt_anchor The scale origin (defaults to the center\n * of the geometry extent).\n * @api\n */\n Geometry.prototype.scale = function (sx, opt_sy, opt_anchor) {\n abstract();\n };\n /**\n * Create a simplified version of this geometry. For linestrings, this uses\n * the [Douglas Peucker](https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm)\n * algorithm. For polygons, a quantization-based\n * simplification is used to preserve topology.\n * @param {number} tolerance The tolerance distance for simplification.\n * @return {Geometry} A new, simplified version of the original geometry.\n * @api\n */\n Geometry.prototype.simplify = function (tolerance) {\n return this.getSimplifiedGeometry(tolerance * tolerance);\n };\n /**\n * Create a simplified version of this geometry using the Douglas Peucker\n * algorithm.\n * See https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm.\n * @abstract\n * @param {number} squaredTolerance Squared tolerance.\n * @return {Geometry} Simplified geometry.\n */\n Geometry.prototype.getSimplifiedGeometry = function (squaredTolerance) {\n return abstract();\n };\n /**\n * Get the type of this geometry.\n * @abstract\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n */\n Geometry.prototype.getType = function () {\n return abstract();\n };\n /**\n * Apply a transform function to the coordinates of the geometry.\n * The geometry is modified in place.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n * @abstract\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform function.\n * Called with a flat array of geometry coordinates.\n */\n Geometry.prototype.applyTransform = function (transformFn) {\n abstract();\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @abstract\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n */\n Geometry.prototype.intersectsExtent = function (extent) {\n return abstract();\n };\n /**\n * Translate the geometry. This modifies the geometry coordinates in place. If\n * instead you want a new geometry, first `clone()` this geometry.\n * @abstract\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @api\n */\n Geometry.prototype.translate = function (deltaX, deltaY) {\n abstract();\n };\n /**\n * Transform each coordinate of the geometry from one coordinate reference\n * system to another. The geometry is modified in place.\n * For example, a line will be transformed to a line and a circle to a circle.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n *\n * @param {import(\"../proj.js\").ProjectionLike} source The current projection. Can be a\n * string identifier or a {@link module:ol/proj/Projection~Projection} object.\n * @param {import(\"../proj.js\").ProjectionLike} destination The desired projection. Can be a\n * string identifier or a {@link module:ol/proj/Projection~Projection} object.\n * @return {Geometry} This geometry. Note that original geometry is\n * modified in place.\n * @api\n */\n Geometry.prototype.transform = function (source, destination) {\n /** @type {import(\"../proj/Projection.js\").default} */\n var sourceProj = getProjection(source);\n var transformFn = sourceProj.getUnits() == Units.TILE_PIXELS\n ? function (inCoordinates, outCoordinates, stride) {\n var pixelExtent = sourceProj.getExtent();\n var projectedExtent = sourceProj.getWorldExtent();\n var scale = getHeight(projectedExtent) / getHeight(pixelExtent);\n composeTransform(tmpTransform, projectedExtent[0], projectedExtent[3], scale, -scale, 0, 0, 0);\n transform2D(inCoordinates, 0, inCoordinates.length, stride, tmpTransform, outCoordinates);\n return getTransform(sourceProj, destination)(inCoordinates, outCoordinates, stride);\n }\n : getTransform(sourceProj, destination);\n this.applyTransform(transformFn);\n return this;\n };\n return Geometry;\n}(BaseObject));\nexport default Geometry;\n//# sourceMappingURL=Geometry.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/GeometryCollection\n */\nimport EventType from '../events/EventType.js';\nimport Geometry from './Geometry.js';\nimport GeometryType from './GeometryType.js';\nimport { closestSquaredDistanceXY, createOrUpdateEmpty, extend, getCenter, } from '../extent.js';\nimport { listen, unlistenByKey } from '../events.js';\n/**\n * @classdesc\n * An array of {@link module:ol/geom/Geometry} objects.\n *\n * @api\n */\nvar GeometryCollection = /** @class */ (function (_super) {\n __extends(GeometryCollection, _super);\n /**\n * @param {Array=} opt_geometries Geometries.\n */\n function GeometryCollection(opt_geometries) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {Array}\n */\n _this.geometries_ = opt_geometries ? opt_geometries : null;\n /**\n * @type {Array}\n */\n _this.changeEventsKeys_ = [];\n _this.listenGeometriesChange_();\n return _this;\n }\n /**\n * @private\n */\n GeometryCollection.prototype.unlistenGeometriesChange_ = function () {\n this.changeEventsKeys_.forEach(unlistenByKey);\n this.changeEventsKeys_.length = 0;\n };\n /**\n * @private\n */\n GeometryCollection.prototype.listenGeometriesChange_ = function () {\n if (!this.geometries_) {\n return;\n }\n for (var i = 0, ii = this.geometries_.length; i < ii; ++i) {\n this.changeEventsKeys_.push(listen(this.geometries_[i], EventType.CHANGE, this.changed, this));\n }\n };\n /**\n * Make a complete copy of the geometry.\n * @return {!GeometryCollection} Clone.\n * @api\n */\n GeometryCollection.prototype.clone = function () {\n var geometryCollection = new GeometryCollection(null);\n geometryCollection.setGeometries(this.geometries_);\n return geometryCollection;\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n GeometryCollection.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n var geometries = this.geometries_;\n for (var i = 0, ii = geometries.length; i < ii; ++i) {\n minSquaredDistance = geometries[i].closestPointXY(x, y, closestPoint, minSquaredDistance);\n }\n return minSquaredDistance;\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\n GeometryCollection.prototype.containsXY = function (x, y) {\n var geometries = this.geometries_;\n for (var i = 0, ii = geometries.length; i < ii; ++i) {\n if (geometries[i].containsXY(x, y)) {\n return true;\n }\n }\n return false;\n };\n /**\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @protected\n * @return {import(\"../extent.js\").Extent} extent Extent.\n */\n GeometryCollection.prototype.computeExtent = function (extent) {\n createOrUpdateEmpty(extent);\n var geometries = this.geometries_;\n for (var i = 0, ii = geometries.length; i < ii; ++i) {\n extend(extent, geometries[i].getExtent());\n }\n return extent;\n };\n /**\n * Return the geometries that make up this geometry collection.\n * @return {Array} Geometries.\n * @api\n */\n GeometryCollection.prototype.getGeometries = function () {\n return cloneGeometries(this.geometries_);\n };\n /**\n * @return {Array} Geometries.\n */\n GeometryCollection.prototype.getGeometriesArray = function () {\n return this.geometries_;\n };\n /**\n * @return {Array} Geometries.\n */\n GeometryCollection.prototype.getGeometriesArrayRecursive = function () {\n /** @type {Array} */\n var geometriesArray = [];\n var geometries = this.geometries_;\n for (var i = 0, ii = geometries.length; i < ii; ++i) {\n if (geometries[i].getType() === this.getType()) {\n geometriesArray = geometriesArray.concat(\n /** @type {GeometryCollection} */ (geometries[i]).getGeometriesArrayRecursive());\n }\n else {\n geometriesArray.push(geometries[i]);\n }\n }\n return geometriesArray;\n };\n /**\n * Create a simplified version of this geometry using the Douglas Peucker algorithm.\n * @param {number} squaredTolerance Squared tolerance.\n * @return {GeometryCollection} Simplified GeometryCollection.\n */\n GeometryCollection.prototype.getSimplifiedGeometry = function (squaredTolerance) {\n if (this.simplifiedGeometryRevision !== this.getRevision()) {\n this.simplifiedGeometryMaxMinSquaredTolerance = 0;\n this.simplifiedGeometryRevision = this.getRevision();\n }\n if (squaredTolerance < 0 ||\n (this.simplifiedGeometryMaxMinSquaredTolerance !== 0 &&\n squaredTolerance < this.simplifiedGeometryMaxMinSquaredTolerance)) {\n return this;\n }\n var simplifiedGeometries = [];\n var geometries = this.geometries_;\n var simplified = false;\n for (var i = 0, ii = geometries.length; i < ii; ++i) {\n var geometry = geometries[i];\n var simplifiedGeometry = geometry.getSimplifiedGeometry(squaredTolerance);\n simplifiedGeometries.push(simplifiedGeometry);\n if (simplifiedGeometry !== geometry) {\n simplified = true;\n }\n }\n if (simplified) {\n var simplifiedGeometryCollection = new GeometryCollection(null);\n simplifiedGeometryCollection.setGeometriesArray(simplifiedGeometries);\n return simplifiedGeometryCollection;\n }\n else {\n this.simplifiedGeometryMaxMinSquaredTolerance = squaredTolerance;\n return this;\n }\n };\n /**\n * Get the type of this geometry.\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n * @api\n */\n GeometryCollection.prototype.getType = function () {\n return GeometryType.GEOMETRY_COLLECTION;\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n GeometryCollection.prototype.intersectsExtent = function (extent) {\n var geometries = this.geometries_;\n for (var i = 0, ii = geometries.length; i < ii; ++i) {\n if (geometries[i].intersectsExtent(extent)) {\n return true;\n }\n }\n return false;\n };\n /**\n * @return {boolean} Is empty.\n */\n GeometryCollection.prototype.isEmpty = function () {\n return this.geometries_.length === 0;\n };\n /**\n * Rotate the geometry around a given coordinate. This modifies the geometry\n * coordinates in place.\n * @param {number} angle Rotation angle in radians.\n * @param {import(\"../coordinate.js\").Coordinate} anchor The rotation center.\n * @api\n */\n GeometryCollection.prototype.rotate = function (angle, anchor) {\n var geometries = this.geometries_;\n for (var i = 0, ii = geometries.length; i < ii; ++i) {\n geometries[i].rotate(angle, anchor);\n }\n this.changed();\n };\n /**\n * Scale the geometry (with an optional origin). This modifies the geometry\n * coordinates in place.\n * @abstract\n * @param {number} sx The scaling factor in the x-direction.\n * @param {number=} opt_sy The scaling factor in the y-direction (defaults to sx).\n * @param {import(\"../coordinate.js\").Coordinate=} opt_anchor The scale origin (defaults to the center\n * of the geometry extent).\n * @api\n */\n GeometryCollection.prototype.scale = function (sx, opt_sy, opt_anchor) {\n var anchor = opt_anchor;\n if (!anchor) {\n anchor = getCenter(this.getExtent());\n }\n var geometries = this.geometries_;\n for (var i = 0, ii = geometries.length; i < ii; ++i) {\n geometries[i].scale(sx, opt_sy, anchor);\n }\n this.changed();\n };\n /**\n * Set the geometries that make up this geometry collection.\n * @param {Array} geometries Geometries.\n * @api\n */\n GeometryCollection.prototype.setGeometries = function (geometries) {\n this.setGeometriesArray(cloneGeometries(geometries));\n };\n /**\n * @param {Array} geometries Geometries.\n */\n GeometryCollection.prototype.setGeometriesArray = function (geometries) {\n this.unlistenGeometriesChange_();\n this.geometries_ = geometries;\n this.listenGeometriesChange_();\n this.changed();\n };\n /**\n * Apply a transform function to the coordinates of the geometry.\n * The geometry is modified in place.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform function.\n * Called with a flat array of geometry coordinates.\n * @api\n */\n GeometryCollection.prototype.applyTransform = function (transformFn) {\n var geometries = this.geometries_;\n for (var i = 0, ii = geometries.length; i < ii; ++i) {\n geometries[i].applyTransform(transformFn);\n }\n this.changed();\n };\n /**\n * Translate the geometry. This modifies the geometry coordinates in place. If\n * instead you want a new geometry, first `clone()` this geometry.\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @api\n */\n GeometryCollection.prototype.translate = function (deltaX, deltaY) {\n var geometries = this.geometries_;\n for (var i = 0, ii = geometries.length; i < ii; ++i) {\n geometries[i].translate(deltaX, deltaY);\n }\n this.changed();\n };\n /**\n * Clean up.\n */\n GeometryCollection.prototype.disposeInternal = function () {\n this.unlistenGeometriesChange_();\n _super.prototype.disposeInternal.call(this);\n };\n return GeometryCollection;\n}(Geometry));\n/**\n * @param {Array} geometries Geometries.\n * @return {Array} Cloned geometries.\n */\nfunction cloneGeometries(geometries) {\n var clonedGeometries = [];\n for (var i = 0, ii = geometries.length; i < ii; ++i) {\n clonedGeometries.push(geometries[i].clone());\n }\n return clonedGeometries;\n}\nexport default GeometryCollection;\n//# sourceMappingURL=GeometryCollection.js.map","/**\n * @module ol/geom/GeometryLayout\n */\n/**\n * The coordinate layout for geometries, indicating whether a 3rd or 4th z ('Z')\n * or measure ('M') coordinate is available. Supported values are `'XY'`,\n * `'XYZ'`, `'XYM'`, `'XYZM'`.\n * @enum {string}\n */\nexport default {\n XY: 'XY',\n XYZ: 'XYZ',\n XYM: 'XYM',\n XYZM: 'XYZM',\n};\n//# sourceMappingURL=GeometryLayout.js.map","/**\n * @module ol/geom/GeometryType\n */\n/**\n * The geometry type. One of `'Point'`, `'LineString'`, `'LinearRing'`,\n * `'Polygon'`, `'MultiPoint'`, `'MultiLineString'`, `'MultiPolygon'`,\n * `'GeometryCollection'`, `'Circle'`.\n * @enum {string}\n */\nexport default {\n POINT: 'Point',\n LINE_STRING: 'LineString',\n LINEAR_RING: 'LinearRing',\n POLYGON: 'Polygon',\n MULTI_POINT: 'MultiPoint',\n MULTI_LINE_STRING: 'MultiLineString',\n MULTI_POLYGON: 'MultiPolygon',\n GEOMETRY_COLLECTION: 'GeometryCollection',\n CIRCLE: 'Circle',\n};\n//# sourceMappingURL=GeometryType.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/LineString\n */\nimport GeometryLayout from './GeometryLayout.js';\nimport GeometryType from './GeometryType.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { assignClosestPoint, maxSquaredDelta } from './flat/closest.js';\nimport { closestSquaredDistanceXY } from '../extent.js';\nimport { deflateCoordinates } from './flat/deflate.js';\nimport { douglasPeucker } from './flat/simplify.js';\nimport { extend } from '../array.js';\nimport { forEach as forEachSegment } from './flat/segments.js';\nimport { inflateCoordinates } from './flat/inflate.js';\nimport { interpolatePoint, lineStringCoordinateAtM } from './flat/interpolate.js';\nimport { intersectsLineString } from './flat/intersectsextent.js';\nimport { lineStringLength } from './flat/length.js';\n/**\n * @classdesc\n * Linestring geometry.\n *\n * @api\n */\nvar LineString = /** @class */ (function (_super) {\n __extends(LineString, _super);\n /**\n * @param {Array|Array} coordinates Coordinates.\n * For internal use, flat coordinates in combination with `opt_layout` are also accepted.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n */\n function LineString(coordinates, opt_layout) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {import(\"../coordinate.js\").Coordinate}\n */\n _this.flatMidpoint_ = null;\n /**\n * @private\n * @type {number}\n */\n _this.flatMidpointRevision_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.maxDelta_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.maxDeltaRevision_ = -1;\n if (opt_layout !== undefined && !Array.isArray(coordinates[0])) {\n _this.setFlatCoordinates(opt_layout, \n /** @type {Array} */ (coordinates));\n }\n else {\n _this.setCoordinates(\n /** @type {Array} */ (coordinates), opt_layout);\n }\n return _this;\n }\n /**\n * Append the passed coordinate to the coordinates of the linestring.\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @api\n */\n LineString.prototype.appendCoordinate = function (coordinate) {\n if (!this.flatCoordinates) {\n this.flatCoordinates = coordinate.slice();\n }\n else {\n extend(this.flatCoordinates, coordinate);\n }\n this.changed();\n };\n /**\n * Make a complete copy of the geometry.\n * @return {!LineString} Clone.\n * @api\n */\n LineString.prototype.clone = function () {\n return new LineString(this.flatCoordinates.slice(), this.layout);\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n LineString.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n if (this.maxDeltaRevision_ != this.getRevision()) {\n this.maxDelta_ = Math.sqrt(maxSquaredDelta(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, 0));\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestPoint(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, this.maxDelta_, false, x, y, closestPoint, minSquaredDistance);\n };\n /**\n * Iterate over each segment, calling the provided callback.\n * If the callback returns a truthy value the function returns that\n * value immediately. Otherwise the function returns `false`.\n *\n * @param {function(this: S, import(\"../coordinate.js\").Coordinate, import(\"../coordinate.js\").Coordinate): T} callback Function\n * called for each segment. The function will receive two arguments, the start and end coordinates of the segment.\n * @return {T|boolean} Value.\n * @template T,S\n * @api\n */\n LineString.prototype.forEachSegment = function (callback) {\n return forEachSegment(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, callback);\n };\n /**\n * Returns the coordinate at `m` using linear interpolation, or `null` if no\n * such coordinate exists.\n *\n * `opt_extrapolate` controls extrapolation beyond the range of Ms in the\n * MultiLineString. If `opt_extrapolate` is `true` then Ms less than the first\n * M will return the first coordinate and Ms greater than the last M will\n * return the last coordinate.\n *\n * @param {number} m M.\n * @param {boolean=} opt_extrapolate Extrapolate. Default is `false`.\n * @return {import(\"../coordinate.js\").Coordinate} Coordinate.\n * @api\n */\n LineString.prototype.getCoordinateAtM = function (m, opt_extrapolate) {\n if (this.layout != GeometryLayout.XYM &&\n this.layout != GeometryLayout.XYZM) {\n return null;\n }\n var extrapolate = opt_extrapolate !== undefined ? opt_extrapolate : false;\n return lineStringCoordinateAtM(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, m, extrapolate);\n };\n /**\n * Return the coordinates of the linestring.\n * @return {Array} Coordinates.\n * @api\n */\n LineString.prototype.getCoordinates = function () {\n return inflateCoordinates(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);\n };\n /**\n * Return the coordinate at the provided fraction along the linestring.\n * The `fraction` is a number between 0 and 1, where 0 is the start of the\n * linestring and 1 is the end.\n * @param {number} fraction Fraction.\n * @param {import(\"../coordinate.js\").Coordinate=} opt_dest Optional coordinate whose values will\n * be modified. If not provided, a new coordinate will be returned.\n * @return {import(\"../coordinate.js\").Coordinate} Coordinate of the interpolated point.\n * @api\n */\n LineString.prototype.getCoordinateAt = function (fraction, opt_dest) {\n return interpolatePoint(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, fraction, opt_dest, this.stride);\n };\n /**\n * Return the length of the linestring on projected plane.\n * @return {number} Length (on projected plane).\n * @api\n */\n LineString.prototype.getLength = function () {\n return lineStringLength(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);\n };\n /**\n * @return {Array} Flat midpoint.\n */\n LineString.prototype.getFlatMidpoint = function () {\n if (this.flatMidpointRevision_ != this.getRevision()) {\n this.flatMidpoint_ = this.getCoordinateAt(0.5, this.flatMidpoint_);\n this.flatMidpointRevision_ = this.getRevision();\n }\n return this.flatMidpoint_;\n };\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {LineString} Simplified LineString.\n * @protected\n */\n LineString.prototype.getSimplifiedGeometryInternal = function (squaredTolerance) {\n var simplifiedFlatCoordinates = [];\n simplifiedFlatCoordinates.length = douglasPeucker(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, squaredTolerance, simplifiedFlatCoordinates, 0);\n return new LineString(simplifiedFlatCoordinates, GeometryLayout.XY);\n };\n /**\n * Get the type of this geometry.\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n * @api\n */\n LineString.prototype.getType = function () {\n return GeometryType.LINE_STRING;\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n LineString.prototype.intersectsExtent = function (extent) {\n return intersectsLineString(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, extent);\n };\n /**\n * Set the coordinates of the linestring.\n * @param {!Array} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n * @api\n */\n LineString.prototype.setCoordinates = function (coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 1);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n this.flatCoordinates.length = deflateCoordinates(this.flatCoordinates, 0, coordinates, this.stride);\n this.changed();\n };\n return LineString;\n}(SimpleGeometry));\nexport default LineString;\n//# sourceMappingURL=LineString.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/LinearRing\n */\nimport GeometryLayout from './GeometryLayout.js';\nimport GeometryType from './GeometryType.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { assignClosestPoint, maxSquaredDelta } from './flat/closest.js';\nimport { closestSquaredDistanceXY } from '../extent.js';\nimport { deflateCoordinates } from './flat/deflate.js';\nimport { douglasPeucker } from './flat/simplify.js';\nimport { inflateCoordinates } from './flat/inflate.js';\nimport { linearRing as linearRingArea } from './flat/area.js';\n/**\n * @classdesc\n * Linear ring geometry. Only used as part of polygon; cannot be rendered\n * on its own.\n *\n * @api\n */\nvar LinearRing = /** @class */ (function (_super) {\n __extends(LinearRing, _super);\n /**\n * @param {Array|Array} coordinates Coordinates.\n * For internal use, flat coordinates in combination with `opt_layout` are also accepted.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n */\n function LinearRing(coordinates, opt_layout) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {number}\n */\n _this.maxDelta_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.maxDeltaRevision_ = -1;\n if (opt_layout !== undefined && !Array.isArray(coordinates[0])) {\n _this.setFlatCoordinates(opt_layout, \n /** @type {Array} */ (coordinates));\n }\n else {\n _this.setCoordinates(\n /** @type {Array} */ (coordinates), opt_layout);\n }\n return _this;\n }\n /**\n * Make a complete copy of the geometry.\n * @return {!LinearRing} Clone.\n * @api\n */\n LinearRing.prototype.clone = function () {\n return new LinearRing(this.flatCoordinates.slice(), this.layout);\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n LinearRing.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n if (this.maxDeltaRevision_ != this.getRevision()) {\n this.maxDelta_ = Math.sqrt(maxSquaredDelta(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, 0));\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestPoint(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, this.maxDelta_, true, x, y, closestPoint, minSquaredDistance);\n };\n /**\n * Return the area of the linear ring on projected plane.\n * @return {number} Area (on projected plane).\n * @api\n */\n LinearRing.prototype.getArea = function () {\n return linearRingArea(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);\n };\n /**\n * Return the coordinates of the linear ring.\n * @return {Array} Coordinates.\n * @api\n */\n LinearRing.prototype.getCoordinates = function () {\n return inflateCoordinates(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);\n };\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {LinearRing} Simplified LinearRing.\n * @protected\n */\n LinearRing.prototype.getSimplifiedGeometryInternal = function (squaredTolerance) {\n var simplifiedFlatCoordinates = [];\n simplifiedFlatCoordinates.length = douglasPeucker(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, squaredTolerance, simplifiedFlatCoordinates, 0);\n return new LinearRing(simplifiedFlatCoordinates, GeometryLayout.XY);\n };\n /**\n * Get the type of this geometry.\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n * @api\n */\n LinearRing.prototype.getType = function () {\n return GeometryType.LINEAR_RING;\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n LinearRing.prototype.intersectsExtent = function (extent) {\n return false;\n };\n /**\n * Set the coordinates of the linear ring.\n * @param {!Array} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n * @api\n */\n LinearRing.prototype.setCoordinates = function (coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 1);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n this.flatCoordinates.length = deflateCoordinates(this.flatCoordinates, 0, coordinates, this.stride);\n this.changed();\n };\n return LinearRing;\n}(SimpleGeometry));\nexport default LinearRing;\n//# sourceMappingURL=LinearRing.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/MultiLineString\n */\nimport GeometryLayout from './GeometryLayout.js';\nimport GeometryType from './GeometryType.js';\nimport LineString from './LineString.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { arrayMaxSquaredDelta, assignClosestArrayPoint } from './flat/closest.js';\nimport { closestSquaredDistanceXY } from '../extent.js';\nimport { deflateCoordinatesArray } from './flat/deflate.js';\nimport { douglasPeuckerArray } from './flat/simplify.js';\nimport { extend } from '../array.js';\nimport { inflateCoordinatesArray } from './flat/inflate.js';\nimport { interpolatePoint, lineStringsCoordinateAtM, } from './flat/interpolate.js';\nimport { intersectsLineStringArray } from './flat/intersectsextent.js';\n/**\n * @classdesc\n * Multi-linestring geometry.\n *\n * @api\n */\nvar MultiLineString = /** @class */ (function (_super) {\n __extends(MultiLineString, _super);\n /**\n * @param {Array|LineString>|Array} coordinates\n * Coordinates or LineString geometries. (For internal use, flat coordinates in\n * combination with `opt_layout` and `opt_ends` are also accepted.)\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n * @param {Array=} opt_ends Flat coordinate ends for internal use.\n */\n function MultiLineString(coordinates, opt_layout, opt_ends) {\n var _this = _super.call(this) || this;\n /**\n * @type {Array}\n * @private\n */\n _this.ends_ = [];\n /**\n * @private\n * @type {number}\n */\n _this.maxDelta_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.maxDeltaRevision_ = -1;\n if (Array.isArray(coordinates[0])) {\n _this.setCoordinates(\n /** @type {Array>} */ (coordinates), opt_layout);\n }\n else if (opt_layout !== undefined && opt_ends) {\n _this.setFlatCoordinates(opt_layout, \n /** @type {Array} */ (coordinates));\n _this.ends_ = opt_ends;\n }\n else {\n var layout = _this.getLayout();\n var lineStrings = /** @type {Array} */ (coordinates);\n var flatCoordinates = [];\n var ends = [];\n for (var i = 0, ii = lineStrings.length; i < ii; ++i) {\n var lineString = lineStrings[i];\n if (i === 0) {\n layout = lineString.getLayout();\n }\n extend(flatCoordinates, lineString.getFlatCoordinates());\n ends.push(flatCoordinates.length);\n }\n _this.setFlatCoordinates(layout, flatCoordinates);\n _this.ends_ = ends;\n }\n return _this;\n }\n /**\n * Append the passed linestring to the multilinestring.\n * @param {LineString} lineString LineString.\n * @api\n */\n MultiLineString.prototype.appendLineString = function (lineString) {\n if (!this.flatCoordinates) {\n this.flatCoordinates = lineString.getFlatCoordinates().slice();\n }\n else {\n extend(this.flatCoordinates, lineString.getFlatCoordinates().slice());\n }\n this.ends_.push(this.flatCoordinates.length);\n this.changed();\n };\n /**\n * Make a complete copy of the geometry.\n * @return {!MultiLineString} Clone.\n * @api\n */\n MultiLineString.prototype.clone = function () {\n return new MultiLineString(this.flatCoordinates.slice(), this.layout, this.ends_.slice());\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n MultiLineString.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n if (this.maxDeltaRevision_ != this.getRevision()) {\n this.maxDelta_ = Math.sqrt(arrayMaxSquaredDelta(this.flatCoordinates, 0, this.ends_, this.stride, 0));\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestArrayPoint(this.flatCoordinates, 0, this.ends_, this.stride, this.maxDelta_, false, x, y, closestPoint, minSquaredDistance);\n };\n /**\n * Returns the coordinate at `m` using linear interpolation, or `null` if no\n * such coordinate exists.\n *\n * `opt_extrapolate` controls extrapolation beyond the range of Ms in the\n * MultiLineString. If `opt_extrapolate` is `true` then Ms less than the first\n * M will return the first coordinate and Ms greater than the last M will\n * return the last coordinate.\n *\n * `opt_interpolate` controls interpolation between consecutive LineStrings\n * within the MultiLineString. If `opt_interpolate` is `true` the coordinates\n * will be linearly interpolated between the last coordinate of one LineString\n * and the first coordinate of the next LineString. If `opt_interpolate` is\n * `false` then the function will return `null` for Ms falling between\n * LineStrings.\n *\n * @param {number} m M.\n * @param {boolean=} opt_extrapolate Extrapolate. Default is `false`.\n * @param {boolean=} opt_interpolate Interpolate. Default is `false`.\n * @return {import(\"../coordinate.js\").Coordinate} Coordinate.\n * @api\n */\n MultiLineString.prototype.getCoordinateAtM = function (m, opt_extrapolate, opt_interpolate) {\n if ((this.layout != GeometryLayout.XYM &&\n this.layout != GeometryLayout.XYZM) ||\n this.flatCoordinates.length === 0) {\n return null;\n }\n var extrapolate = opt_extrapolate !== undefined ? opt_extrapolate : false;\n var interpolate = opt_interpolate !== undefined ? opt_interpolate : false;\n return lineStringsCoordinateAtM(this.flatCoordinates, 0, this.ends_, this.stride, m, extrapolate, interpolate);\n };\n /**\n * Return the coordinates of the multilinestring.\n * @return {Array>} Coordinates.\n * @api\n */\n MultiLineString.prototype.getCoordinates = function () {\n return inflateCoordinatesArray(this.flatCoordinates, 0, this.ends_, this.stride);\n };\n /**\n * @return {Array} Ends.\n */\n MultiLineString.prototype.getEnds = function () {\n return this.ends_;\n };\n /**\n * Return the linestring at the specified index.\n * @param {number} index Index.\n * @return {LineString} LineString.\n * @api\n */\n MultiLineString.prototype.getLineString = function (index) {\n if (index < 0 || this.ends_.length <= index) {\n return null;\n }\n return new LineString(this.flatCoordinates.slice(index === 0 ? 0 : this.ends_[index - 1], this.ends_[index]), this.layout);\n };\n /**\n * Return the linestrings of this multilinestring.\n * @return {Array} LineStrings.\n * @api\n */\n MultiLineString.prototype.getLineStrings = function () {\n var flatCoordinates = this.flatCoordinates;\n var ends = this.ends_;\n var layout = this.layout;\n /** @type {Array} */\n var lineStrings = [];\n var offset = 0;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n var lineString = new LineString(flatCoordinates.slice(offset, end), layout);\n lineStrings.push(lineString);\n offset = end;\n }\n return lineStrings;\n };\n /**\n * @return {Array} Flat midpoints.\n */\n MultiLineString.prototype.getFlatMidpoints = function () {\n var midpoints = [];\n var flatCoordinates = this.flatCoordinates;\n var offset = 0;\n var ends = this.ends_;\n var stride = this.stride;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n var midpoint = interpolatePoint(flatCoordinates, offset, end, stride, 0.5);\n extend(midpoints, midpoint);\n offset = end;\n }\n return midpoints;\n };\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {MultiLineString} Simplified MultiLineString.\n * @protected\n */\n MultiLineString.prototype.getSimplifiedGeometryInternal = function (squaredTolerance) {\n var simplifiedFlatCoordinates = [];\n var simplifiedEnds = [];\n simplifiedFlatCoordinates.length = douglasPeuckerArray(this.flatCoordinates, 0, this.ends_, this.stride, squaredTolerance, simplifiedFlatCoordinates, 0, simplifiedEnds);\n return new MultiLineString(simplifiedFlatCoordinates, GeometryLayout.XY, simplifiedEnds);\n };\n /**\n * Get the type of this geometry.\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n * @api\n */\n MultiLineString.prototype.getType = function () {\n return GeometryType.MULTI_LINE_STRING;\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n MultiLineString.prototype.intersectsExtent = function (extent) {\n return intersectsLineStringArray(this.flatCoordinates, 0, this.ends_, this.stride, extent);\n };\n /**\n * Set the coordinates of the multilinestring.\n * @param {!Array>} coordinates Coordinates.\n * @param {GeometryLayout=} opt_layout Layout.\n * @api\n */\n MultiLineString.prototype.setCoordinates = function (coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 2);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n var ends = deflateCoordinatesArray(this.flatCoordinates, 0, coordinates, this.stride, this.ends_);\n this.flatCoordinates.length = ends.length === 0 ? 0 : ends[ends.length - 1];\n this.changed();\n };\n return MultiLineString;\n}(SimpleGeometry));\nexport default MultiLineString;\n//# sourceMappingURL=MultiLineString.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/MultiPoint\n */\nimport GeometryType from './GeometryType.js';\nimport Point from './Point.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { closestSquaredDistanceXY, containsXY } from '../extent.js';\nimport { deflateCoordinates } from './flat/deflate.js';\nimport { extend } from '../array.js';\nimport { inflateCoordinates } from './flat/inflate.js';\nimport { squaredDistance as squaredDx } from '../math.js';\n/**\n * @classdesc\n * Multi-point geometry.\n *\n * @api\n */\nvar MultiPoint = /** @class */ (function (_super) {\n __extends(MultiPoint, _super);\n /**\n * @param {Array|Array} coordinates Coordinates.\n * For internal use, flat coordinates in combination with `opt_layout` are also accepted.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n */\n function MultiPoint(coordinates, opt_layout) {\n var _this = _super.call(this) || this;\n if (opt_layout && !Array.isArray(coordinates[0])) {\n _this.setFlatCoordinates(opt_layout, \n /** @type {Array} */ (coordinates));\n }\n else {\n _this.setCoordinates(\n /** @type {Array} */ (coordinates), opt_layout);\n }\n return _this;\n }\n /**\n * Append the passed point to this multipoint.\n * @param {Point} point Point.\n * @api\n */\n MultiPoint.prototype.appendPoint = function (point) {\n if (!this.flatCoordinates) {\n this.flatCoordinates = point.getFlatCoordinates().slice();\n }\n else {\n extend(this.flatCoordinates, point.getFlatCoordinates());\n }\n this.changed();\n };\n /**\n * Make a complete copy of the geometry.\n * @return {!MultiPoint} Clone.\n * @api\n */\n MultiPoint.prototype.clone = function () {\n var multiPoint = new MultiPoint(this.flatCoordinates.slice(), this.layout);\n return multiPoint;\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n MultiPoint.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n var flatCoordinates = this.flatCoordinates;\n var stride = this.stride;\n for (var i = 0, ii = flatCoordinates.length; i < ii; i += stride) {\n var squaredDistance = squaredDx(x, y, flatCoordinates[i], flatCoordinates[i + 1]);\n if (squaredDistance < minSquaredDistance) {\n minSquaredDistance = squaredDistance;\n for (var j = 0; j < stride; ++j) {\n closestPoint[j] = flatCoordinates[i + j];\n }\n closestPoint.length = stride;\n }\n }\n return minSquaredDistance;\n };\n /**\n * Return the coordinates of the multipoint.\n * @return {Array} Coordinates.\n * @api\n */\n MultiPoint.prototype.getCoordinates = function () {\n return inflateCoordinates(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);\n };\n /**\n * Return the point at the specified index.\n * @param {number} index Index.\n * @return {Point} Point.\n * @api\n */\n MultiPoint.prototype.getPoint = function (index) {\n var n = !this.flatCoordinates\n ? 0\n : this.flatCoordinates.length / this.stride;\n if (index < 0 || n <= index) {\n return null;\n }\n return new Point(this.flatCoordinates.slice(index * this.stride, (index + 1) * this.stride), this.layout);\n };\n /**\n * Return the points of this multipoint.\n * @return {Array} Points.\n * @api\n */\n MultiPoint.prototype.getPoints = function () {\n var flatCoordinates = this.flatCoordinates;\n var layout = this.layout;\n var stride = this.stride;\n /** @type {Array} */\n var points = [];\n for (var i = 0, ii = flatCoordinates.length; i < ii; i += stride) {\n var point = new Point(flatCoordinates.slice(i, i + stride), layout);\n points.push(point);\n }\n return points;\n };\n /**\n * Get the type of this geometry.\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n * @api\n */\n MultiPoint.prototype.getType = function () {\n return GeometryType.MULTI_POINT;\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n MultiPoint.prototype.intersectsExtent = function (extent) {\n var flatCoordinates = this.flatCoordinates;\n var stride = this.stride;\n for (var i = 0, ii = flatCoordinates.length; i < ii; i += stride) {\n var x = flatCoordinates[i];\n var y = flatCoordinates[i + 1];\n if (containsXY(extent, x, y)) {\n return true;\n }\n }\n return false;\n };\n /**\n * Set the coordinates of the multipoint.\n * @param {!Array} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n * @api\n */\n MultiPoint.prototype.setCoordinates = function (coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 1);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n this.flatCoordinates.length = deflateCoordinates(this.flatCoordinates, 0, coordinates, this.stride);\n this.changed();\n };\n return MultiPoint;\n}(SimpleGeometry));\nexport default MultiPoint;\n//# sourceMappingURL=MultiPoint.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/MultiPolygon\n */\nimport GeometryLayout from './GeometryLayout.js';\nimport GeometryType from './GeometryType.js';\nimport MultiPoint from './MultiPoint.js';\nimport Polygon from './Polygon.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { assignClosestMultiArrayPoint, multiArrayMaxSquaredDelta, } from './flat/closest.js';\nimport { closestSquaredDistanceXY } from '../extent.js';\nimport { deflateMultiCoordinatesArray } from './flat/deflate.js';\nimport { extend } from '../array.js';\nimport { getInteriorPointsOfMultiArray } from './flat/interiorpoint.js';\nimport { inflateMultiCoordinatesArray } from './flat/inflate.js';\nimport { intersectsLinearRingMultiArray } from './flat/intersectsextent.js';\nimport { linearRingssAreOriented, orientLinearRingsArray, } from './flat/orient.js';\nimport { linearRingss as linearRingssArea } from './flat/area.js';\nimport { linearRingss as linearRingssCenter } from './flat/center.js';\nimport { linearRingssContainsXY } from './flat/contains.js';\nimport { quantizeMultiArray } from './flat/simplify.js';\n/**\n * @classdesc\n * Multi-polygon geometry.\n *\n * @api\n */\nvar MultiPolygon = /** @class */ (function (_super) {\n __extends(MultiPolygon, _super);\n /**\n * @param {Array>|Polygon>|Array} coordinates Coordinates.\n * For internal use, flat coordinates in combination with `opt_layout` and `opt_endss` are also accepted.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n * @param {Array>=} opt_endss Array of ends for internal use with flat coordinates.\n */\n function MultiPolygon(coordinates, opt_layout, opt_endss) {\n var _this = _super.call(this) || this;\n /**\n * @type {Array>}\n * @private\n */\n _this.endss_ = [];\n /**\n * @private\n * @type {number}\n */\n _this.flatInteriorPointsRevision_ = -1;\n /**\n * @private\n * @type {Array}\n */\n _this.flatInteriorPoints_ = null;\n /**\n * @private\n * @type {number}\n */\n _this.maxDelta_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.maxDeltaRevision_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.orientedRevision_ = -1;\n /**\n * @private\n * @type {Array}\n */\n _this.orientedFlatCoordinates_ = null;\n if (!opt_endss && !Array.isArray(coordinates[0])) {\n var layout = _this.getLayout();\n var polygons = /** @type {Array} */ (coordinates);\n var flatCoordinates = [];\n var endss = [];\n for (var i = 0, ii = polygons.length; i < ii; ++i) {\n var polygon = polygons[i];\n if (i === 0) {\n layout = polygon.getLayout();\n }\n var offset = flatCoordinates.length;\n var ends = polygon.getEnds();\n for (var j = 0, jj = ends.length; j < jj; ++j) {\n ends[j] += offset;\n }\n extend(flatCoordinates, polygon.getFlatCoordinates());\n endss.push(ends);\n }\n opt_layout = layout;\n coordinates = flatCoordinates;\n opt_endss = endss;\n }\n if (opt_layout !== undefined && opt_endss) {\n _this.setFlatCoordinates(opt_layout, \n /** @type {Array} */ (coordinates));\n _this.endss_ = opt_endss;\n }\n else {\n _this.setCoordinates(\n /** @type {Array>>} */ (coordinates), opt_layout);\n }\n return _this;\n }\n /**\n * Append the passed polygon to this multipolygon.\n * @param {Polygon} polygon Polygon.\n * @api\n */\n MultiPolygon.prototype.appendPolygon = function (polygon) {\n /** @type {Array} */\n var ends;\n if (!this.flatCoordinates) {\n this.flatCoordinates = polygon.getFlatCoordinates().slice();\n ends = polygon.getEnds().slice();\n this.endss_.push();\n }\n else {\n var offset = this.flatCoordinates.length;\n extend(this.flatCoordinates, polygon.getFlatCoordinates());\n ends = polygon.getEnds().slice();\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n ends[i] += offset;\n }\n }\n this.endss_.push(ends);\n this.changed();\n };\n /**\n * Make a complete copy of the geometry.\n * @return {!MultiPolygon} Clone.\n * @api\n */\n MultiPolygon.prototype.clone = function () {\n var len = this.endss_.length;\n var newEndss = new Array(len);\n for (var i = 0; i < len; ++i) {\n newEndss[i] = this.endss_[i].slice();\n }\n return new MultiPolygon(this.flatCoordinates.slice(), this.layout, newEndss);\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n MultiPolygon.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n if (this.maxDeltaRevision_ != this.getRevision()) {\n this.maxDelta_ = Math.sqrt(multiArrayMaxSquaredDelta(this.flatCoordinates, 0, this.endss_, this.stride, 0));\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestMultiArrayPoint(this.getOrientedFlatCoordinates(), 0, this.endss_, this.stride, this.maxDelta_, true, x, y, closestPoint, minSquaredDistance);\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\n MultiPolygon.prototype.containsXY = function (x, y) {\n return linearRingssContainsXY(this.getOrientedFlatCoordinates(), 0, this.endss_, this.stride, x, y);\n };\n /**\n * Return the area of the multipolygon on projected plane.\n * @return {number} Area (on projected plane).\n * @api\n */\n MultiPolygon.prototype.getArea = function () {\n return linearRingssArea(this.getOrientedFlatCoordinates(), 0, this.endss_, this.stride);\n };\n /**\n * Get the coordinate array for this geometry. This array has the structure\n * of a GeoJSON coordinate array for multi-polygons.\n *\n * @param {boolean=} opt_right Orient coordinates according to the right-hand\n * rule (counter-clockwise for exterior and clockwise for interior rings).\n * If `false`, coordinates will be oriented according to the left-hand rule\n * (clockwise for exterior and counter-clockwise for interior rings).\n * By default, coordinate orientation will depend on how the geometry was\n * constructed.\n * @return {Array>>} Coordinates.\n * @api\n */\n MultiPolygon.prototype.getCoordinates = function (opt_right) {\n var flatCoordinates;\n if (opt_right !== undefined) {\n flatCoordinates = this.getOrientedFlatCoordinates().slice();\n orientLinearRingsArray(flatCoordinates, 0, this.endss_, this.stride, opt_right);\n }\n else {\n flatCoordinates = this.flatCoordinates;\n }\n return inflateMultiCoordinatesArray(flatCoordinates, 0, this.endss_, this.stride);\n };\n /**\n * @return {Array>} Endss.\n */\n MultiPolygon.prototype.getEndss = function () {\n return this.endss_;\n };\n /**\n * @return {Array} Flat interior points.\n */\n MultiPolygon.prototype.getFlatInteriorPoints = function () {\n if (this.flatInteriorPointsRevision_ != this.getRevision()) {\n var flatCenters = linearRingssCenter(this.flatCoordinates, 0, this.endss_, this.stride);\n this.flatInteriorPoints_ = getInteriorPointsOfMultiArray(this.getOrientedFlatCoordinates(), 0, this.endss_, this.stride, flatCenters);\n this.flatInteriorPointsRevision_ = this.getRevision();\n }\n return this.flatInteriorPoints_;\n };\n /**\n * Return the interior points as {@link module:ol/geom/MultiPoint multipoint}.\n * @return {MultiPoint} Interior points as XYM coordinates, where M is\n * the length of the horizontal intersection that the point belongs to.\n * @api\n */\n MultiPolygon.prototype.getInteriorPoints = function () {\n return new MultiPoint(this.getFlatInteriorPoints().slice(), GeometryLayout.XYM);\n };\n /**\n * @return {Array} Oriented flat coordinates.\n */\n MultiPolygon.prototype.getOrientedFlatCoordinates = function () {\n if (this.orientedRevision_ != this.getRevision()) {\n var flatCoordinates = this.flatCoordinates;\n if (linearRingssAreOriented(flatCoordinates, 0, this.endss_, this.stride)) {\n this.orientedFlatCoordinates_ = flatCoordinates;\n }\n else {\n this.orientedFlatCoordinates_ = flatCoordinates.slice();\n this.orientedFlatCoordinates_.length = orientLinearRingsArray(this.orientedFlatCoordinates_, 0, this.endss_, this.stride);\n }\n this.orientedRevision_ = this.getRevision();\n }\n return this.orientedFlatCoordinates_;\n };\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {MultiPolygon} Simplified MultiPolygon.\n * @protected\n */\n MultiPolygon.prototype.getSimplifiedGeometryInternal = function (squaredTolerance) {\n var simplifiedFlatCoordinates = [];\n var simplifiedEndss = [];\n simplifiedFlatCoordinates.length = quantizeMultiArray(this.flatCoordinates, 0, this.endss_, this.stride, Math.sqrt(squaredTolerance), simplifiedFlatCoordinates, 0, simplifiedEndss);\n return new MultiPolygon(simplifiedFlatCoordinates, GeometryLayout.XY, simplifiedEndss);\n };\n /**\n * Return the polygon at the specified index.\n * @param {number} index Index.\n * @return {Polygon} Polygon.\n * @api\n */\n MultiPolygon.prototype.getPolygon = function (index) {\n if (index < 0 || this.endss_.length <= index) {\n return null;\n }\n var offset;\n if (index === 0) {\n offset = 0;\n }\n else {\n var prevEnds = this.endss_[index - 1];\n offset = prevEnds[prevEnds.length - 1];\n }\n var ends = this.endss_[index].slice();\n var end = ends[ends.length - 1];\n if (offset !== 0) {\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n ends[i] -= offset;\n }\n }\n return new Polygon(this.flatCoordinates.slice(offset, end), this.layout, ends);\n };\n /**\n * Return the polygons of this multipolygon.\n * @return {Array} Polygons.\n * @api\n */\n MultiPolygon.prototype.getPolygons = function () {\n var layout = this.layout;\n var flatCoordinates = this.flatCoordinates;\n var endss = this.endss_;\n var polygons = [];\n var offset = 0;\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i].slice();\n var end = ends[ends.length - 1];\n if (offset !== 0) {\n for (var j = 0, jj = ends.length; j < jj; ++j) {\n ends[j] -= offset;\n }\n }\n var polygon = new Polygon(flatCoordinates.slice(offset, end), layout, ends);\n polygons.push(polygon);\n offset = end;\n }\n return polygons;\n };\n /**\n * Get the type of this geometry.\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n * @api\n */\n MultiPolygon.prototype.getType = function () {\n return GeometryType.MULTI_POLYGON;\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n MultiPolygon.prototype.intersectsExtent = function (extent) {\n return intersectsLinearRingMultiArray(this.getOrientedFlatCoordinates(), 0, this.endss_, this.stride, extent);\n };\n /**\n * Set the coordinates of the multipolygon.\n * @param {!Array>>} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n * @api\n */\n MultiPolygon.prototype.setCoordinates = function (coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 3);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n var endss = deflateMultiCoordinatesArray(this.flatCoordinates, 0, coordinates, this.stride, this.endss_);\n if (endss.length === 0) {\n this.flatCoordinates.length = 0;\n }\n else {\n var lastEnds = endss[endss.length - 1];\n this.flatCoordinates.length =\n lastEnds.length === 0 ? 0 : lastEnds[lastEnds.length - 1];\n }\n this.changed();\n };\n return MultiPolygon;\n}(SimpleGeometry));\nexport default MultiPolygon;\n//# sourceMappingURL=MultiPolygon.js.map","/**\n * @module ol/geom/flat/center\n */\nimport { createEmpty, createOrUpdateFromFlatCoordinates } from '../../extent.js';\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @return {Array} Flat centers.\n */\nexport function linearRingss(flatCoordinates, offset, endss, stride) {\n var flatCenters = [];\n var extent = createEmpty();\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n extent = createOrUpdateFromFlatCoordinates(flatCoordinates, offset, ends[0], stride);\n flatCenters.push((extent[0] + extent[2]) / 2, (extent[1] + extent[3]) / 2);\n offset = ends[ends.length - 1];\n }\n return flatCenters;\n}\n//# sourceMappingURL=center.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/Point\n */\nimport GeometryType from './GeometryType.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { containsXY, createOrUpdateFromCoordinate } from '../extent.js';\nimport { deflateCoordinate } from './flat/deflate.js';\nimport { squaredDistance as squaredDx } from '../math.js';\n/**\n * @classdesc\n * Point geometry.\n *\n * @api\n */\nvar Point = /** @class */ (function (_super) {\n __extends(Point, _super);\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n */\n function Point(coordinates, opt_layout) {\n var _this = _super.call(this) || this;\n _this.setCoordinates(coordinates, opt_layout);\n return _this;\n }\n /**\n * Make a complete copy of the geometry.\n * @return {!Point} Clone.\n * @api\n */\n Point.prototype.clone = function () {\n var point = new Point(this.flatCoordinates.slice(), this.layout);\n return point;\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n Point.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n var flatCoordinates = this.flatCoordinates;\n var squaredDistance = squaredDx(x, y, flatCoordinates[0], flatCoordinates[1]);\n if (squaredDistance < minSquaredDistance) {\n var stride = this.stride;\n for (var i = 0; i < stride; ++i) {\n closestPoint[i] = flatCoordinates[i];\n }\n closestPoint.length = stride;\n return squaredDistance;\n }\n else {\n return minSquaredDistance;\n }\n };\n /**\n * Return the coordinate of the point.\n * @return {import(\"../coordinate.js\").Coordinate} Coordinates.\n * @api\n */\n Point.prototype.getCoordinates = function () {\n return !this.flatCoordinates ? [] : this.flatCoordinates.slice();\n };\n /**\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @protected\n * @return {import(\"../extent.js\").Extent} extent Extent.\n */\n Point.prototype.computeExtent = function (extent) {\n return createOrUpdateFromCoordinate(this.flatCoordinates, extent);\n };\n /**\n * Get the type of this geometry.\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n * @api\n */\n Point.prototype.getType = function () {\n return GeometryType.POINT;\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n Point.prototype.intersectsExtent = function (extent) {\n return containsXY(extent, this.flatCoordinates[0], this.flatCoordinates[1]);\n };\n /**\n * @param {!Array<*>} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n * @api\n */\n Point.prototype.setCoordinates = function (coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 0);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n this.flatCoordinates.length = deflateCoordinate(this.flatCoordinates, 0, coordinates, this.stride);\n this.changed();\n };\n return Point;\n}(SimpleGeometry));\nexport default Point;\n//# sourceMappingURL=Point.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/Polygon\n */\nimport GeometryLayout from './GeometryLayout.js';\nimport GeometryType from './GeometryType.js';\nimport LinearRing from './LinearRing.js';\nimport Point from './Point.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { arrayMaxSquaredDelta, assignClosestArrayPoint } from './flat/closest.js';\nimport { closestSquaredDistanceXY, getCenter } from '../extent.js';\nimport { deflateCoordinatesArray } from './flat/deflate.js';\nimport { extend } from '../array.js';\nimport { getInteriorPointOfArray } from './flat/interiorpoint.js';\nimport { inflateCoordinatesArray } from './flat/inflate.js';\nimport { intersectsLinearRingArray } from './flat/intersectsextent.js';\nimport { linearRingsAreOriented, orientLinearRings } from './flat/orient.js';\nimport { linearRings as linearRingsArea } from './flat/area.js';\nimport { linearRingsContainsXY } from './flat/contains.js';\nimport { modulo } from '../math.js';\nimport { quantizeArray } from './flat/simplify.js';\nimport { offset as sphereOffset } from '../sphere.js';\n/**\n * @classdesc\n * Polygon geometry.\n *\n * @api\n */\nvar Polygon = /** @class */ (function (_super) {\n __extends(Polygon, _super);\n /**\n * @param {!Array>|!Array} coordinates\n * Array of linear rings that define the polygon. The first linear ring of the\n * array defines the outer-boundary or surface of the polygon. Each subsequent\n * linear ring defines a hole in the surface of the polygon. A linear ring is\n * an array of vertices' coordinates where the first coordinate and the last are\n * equivalent. (For internal use, flat coordinates in combination with\n * `opt_layout` and `opt_ends` are also accepted.)\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n * @param {Array=} opt_ends Ends (for internal use with flat coordinates).\n */\n function Polygon(coordinates, opt_layout, opt_ends) {\n var _this = _super.call(this) || this;\n /**\n * @type {Array}\n * @private\n */\n _this.ends_ = [];\n /**\n * @private\n * @type {number}\n */\n _this.flatInteriorPointRevision_ = -1;\n /**\n * @private\n * @type {import(\"../coordinate.js\").Coordinate}\n */\n _this.flatInteriorPoint_ = null;\n /**\n * @private\n * @type {number}\n */\n _this.maxDelta_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.maxDeltaRevision_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.orientedRevision_ = -1;\n /**\n * @private\n * @type {Array}\n */\n _this.orientedFlatCoordinates_ = null;\n if (opt_layout !== undefined && opt_ends) {\n _this.setFlatCoordinates(opt_layout, \n /** @type {Array} */ (coordinates));\n _this.ends_ = opt_ends;\n }\n else {\n _this.setCoordinates(\n /** @type {Array>} */ (coordinates), opt_layout);\n }\n return _this;\n }\n /**\n * Append the passed linear ring to this polygon.\n * @param {LinearRing} linearRing Linear ring.\n * @api\n */\n Polygon.prototype.appendLinearRing = function (linearRing) {\n if (!this.flatCoordinates) {\n this.flatCoordinates = linearRing.getFlatCoordinates().slice();\n }\n else {\n extend(this.flatCoordinates, linearRing.getFlatCoordinates());\n }\n this.ends_.push(this.flatCoordinates.length);\n this.changed();\n };\n /**\n * Make a complete copy of the geometry.\n * @return {!Polygon} Clone.\n * @api\n */\n Polygon.prototype.clone = function () {\n return new Polygon(this.flatCoordinates.slice(), this.layout, this.ends_.slice());\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n Polygon.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n if (this.maxDeltaRevision_ != this.getRevision()) {\n this.maxDelta_ = Math.sqrt(arrayMaxSquaredDelta(this.flatCoordinates, 0, this.ends_, this.stride, 0));\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestArrayPoint(this.flatCoordinates, 0, this.ends_, this.stride, this.maxDelta_, true, x, y, closestPoint, minSquaredDistance);\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\n Polygon.prototype.containsXY = function (x, y) {\n return linearRingsContainsXY(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, x, y);\n };\n /**\n * Return the area of the polygon on projected plane.\n * @return {number} Area (on projected plane).\n * @api\n */\n Polygon.prototype.getArea = function () {\n return linearRingsArea(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride);\n };\n /**\n * Get the coordinate array for this geometry. This array has the structure\n * of a GeoJSON coordinate array for polygons.\n *\n * @param {boolean=} opt_right Orient coordinates according to the right-hand\n * rule (counter-clockwise for exterior and clockwise for interior rings).\n * If `false`, coordinates will be oriented according to the left-hand rule\n * (clockwise for exterior and counter-clockwise for interior rings).\n * By default, coordinate orientation will depend on how the geometry was\n * constructed.\n * @return {Array>} Coordinates.\n * @api\n */\n Polygon.prototype.getCoordinates = function (opt_right) {\n var flatCoordinates;\n if (opt_right !== undefined) {\n flatCoordinates = this.getOrientedFlatCoordinates().slice();\n orientLinearRings(flatCoordinates, 0, this.ends_, this.stride, opt_right);\n }\n else {\n flatCoordinates = this.flatCoordinates;\n }\n return inflateCoordinatesArray(flatCoordinates, 0, this.ends_, this.stride);\n };\n /**\n * @return {Array} Ends.\n */\n Polygon.prototype.getEnds = function () {\n return this.ends_;\n };\n /**\n * @return {Array} Interior point.\n */\n Polygon.prototype.getFlatInteriorPoint = function () {\n if (this.flatInteriorPointRevision_ != this.getRevision()) {\n var flatCenter = getCenter(this.getExtent());\n this.flatInteriorPoint_ = getInteriorPointOfArray(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, flatCenter, 0);\n this.flatInteriorPointRevision_ = this.getRevision();\n }\n return this.flatInteriorPoint_;\n };\n /**\n * Return an interior point of the polygon.\n * @return {Point} Interior point as XYM coordinate, where M is the\n * length of the horizontal intersection that the point belongs to.\n * @api\n */\n Polygon.prototype.getInteriorPoint = function () {\n return new Point(this.getFlatInteriorPoint(), GeometryLayout.XYM);\n };\n /**\n * Return the number of rings of the polygon, this includes the exterior\n * ring and any interior rings.\n *\n * @return {number} Number of rings.\n * @api\n */\n Polygon.prototype.getLinearRingCount = function () {\n return this.ends_.length;\n };\n /**\n * Return the Nth linear ring of the polygon geometry. Return `null` if the\n * given index is out of range.\n * The exterior linear ring is available at index `0` and the interior rings\n * at index `1` and beyond.\n *\n * @param {number} index Index.\n * @return {LinearRing} Linear ring.\n * @api\n */\n Polygon.prototype.getLinearRing = function (index) {\n if (index < 0 || this.ends_.length <= index) {\n return null;\n }\n return new LinearRing(this.flatCoordinates.slice(index === 0 ? 0 : this.ends_[index - 1], this.ends_[index]), this.layout);\n };\n /**\n * Return the linear rings of the polygon.\n * @return {Array} Linear rings.\n * @api\n */\n Polygon.prototype.getLinearRings = function () {\n var layout = this.layout;\n var flatCoordinates = this.flatCoordinates;\n var ends = this.ends_;\n var linearRings = [];\n var offset = 0;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n var linearRing = new LinearRing(flatCoordinates.slice(offset, end), layout);\n linearRings.push(linearRing);\n offset = end;\n }\n return linearRings;\n };\n /**\n * @return {Array} Oriented flat coordinates.\n */\n Polygon.prototype.getOrientedFlatCoordinates = function () {\n if (this.orientedRevision_ != this.getRevision()) {\n var flatCoordinates = this.flatCoordinates;\n if (linearRingsAreOriented(flatCoordinates, 0, this.ends_, this.stride)) {\n this.orientedFlatCoordinates_ = flatCoordinates;\n }\n else {\n this.orientedFlatCoordinates_ = flatCoordinates.slice();\n this.orientedFlatCoordinates_.length = orientLinearRings(this.orientedFlatCoordinates_, 0, this.ends_, this.stride);\n }\n this.orientedRevision_ = this.getRevision();\n }\n return this.orientedFlatCoordinates_;\n };\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {Polygon} Simplified Polygon.\n * @protected\n */\n Polygon.prototype.getSimplifiedGeometryInternal = function (squaredTolerance) {\n var simplifiedFlatCoordinates = [];\n var simplifiedEnds = [];\n simplifiedFlatCoordinates.length = quantizeArray(this.flatCoordinates, 0, this.ends_, this.stride, Math.sqrt(squaredTolerance), simplifiedFlatCoordinates, 0, simplifiedEnds);\n return new Polygon(simplifiedFlatCoordinates, GeometryLayout.XY, simplifiedEnds);\n };\n /**\n * Get the type of this geometry.\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n * @api\n */\n Polygon.prototype.getType = function () {\n return GeometryType.POLYGON;\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n Polygon.prototype.intersectsExtent = function (extent) {\n return intersectsLinearRingArray(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, extent);\n };\n /**\n * Set the coordinates of the polygon.\n * @param {!Array>} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n * @api\n */\n Polygon.prototype.setCoordinates = function (coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 2);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n var ends = deflateCoordinatesArray(this.flatCoordinates, 0, coordinates, this.stride, this.ends_);\n this.flatCoordinates.length = ends.length === 0 ? 0 : ends[ends.length - 1];\n this.changed();\n };\n return Polygon;\n}(SimpleGeometry));\nexport default Polygon;\n/**\n * Create an approximation of a circle on the surface of a sphere.\n * @param {import(\"../coordinate.js\").Coordinate} center Center (`[lon, lat]` in degrees).\n * @param {number} radius The great-circle distance from the center to\n * the polygon vertices.\n * @param {number=} opt_n Optional number of vertices for the resulting\n * polygon. Default is `32`.\n * @param {number=} opt_sphereRadius Optional radius for the sphere (defaults to\n * the Earth's mean radius using the WGS84 ellipsoid).\n * @return {Polygon} The \"circular\" polygon.\n * @api\n */\nexport function circular(center, radius, opt_n, opt_sphereRadius) {\n var n = opt_n ? opt_n : 32;\n /** @type {Array} */\n var flatCoordinates = [];\n for (var i = 0; i < n; ++i) {\n extend(flatCoordinates, sphereOffset(center, radius, (2 * Math.PI * i) / n, opt_sphereRadius));\n }\n flatCoordinates.push(flatCoordinates[0], flatCoordinates[1]);\n return new Polygon(flatCoordinates, GeometryLayout.XY, [\n flatCoordinates.length,\n ]);\n}\n/**\n * Create a polygon from an extent. The layout used is `XY`.\n * @param {import(\"../extent.js\").Extent} extent The extent.\n * @return {Polygon} The polygon.\n * @api\n */\nexport function fromExtent(extent) {\n var minX = extent[0];\n var minY = extent[1];\n var maxX = extent[2];\n var maxY = extent[3];\n var flatCoordinates = [\n minX,\n minY,\n minX,\n maxY,\n maxX,\n maxY,\n maxX,\n minY,\n minX,\n minY,\n ];\n return new Polygon(flatCoordinates, GeometryLayout.XY, [\n flatCoordinates.length,\n ]);\n}\n/**\n * Create a regular polygon from a circle.\n * @param {import(\"./Circle.js\").default} circle Circle geometry.\n * @param {number=} opt_sides Number of sides of the polygon. Default is 32.\n * @param {number=} opt_angle Start angle for the first vertex of the polygon in\n * radians. Default is 0.\n * @return {Polygon} Polygon geometry.\n * @api\n */\nexport function fromCircle(circle, opt_sides, opt_angle) {\n var sides = opt_sides ? opt_sides : 32;\n var stride = circle.getStride();\n var layout = circle.getLayout();\n var center = circle.getCenter();\n var arrayLength = stride * (sides + 1);\n var flatCoordinates = new Array(arrayLength);\n for (var i = 0; i < arrayLength; i += stride) {\n flatCoordinates[i] = 0;\n flatCoordinates[i + 1] = 0;\n for (var j = 2; j < stride; j++) {\n flatCoordinates[i + j] = center[j];\n }\n }\n var ends = [flatCoordinates.length];\n var polygon = new Polygon(flatCoordinates, layout, ends);\n makeRegular(polygon, center, circle.getRadius(), opt_angle);\n return polygon;\n}\n/**\n * Modify the coordinates of a polygon to make it a regular polygon.\n * @param {Polygon} polygon Polygon geometry.\n * @param {import(\"../coordinate.js\").Coordinate} center Center of the regular polygon.\n * @param {number} radius Radius of the regular polygon.\n * @param {number=} opt_angle Start angle for the first vertex of the polygon in\n * radians. Default is 0.\n */\nexport function makeRegular(polygon, center, radius, opt_angle) {\n var flatCoordinates = polygon.getFlatCoordinates();\n var stride = polygon.getStride();\n var sides = flatCoordinates.length / stride - 1;\n var startAngle = opt_angle ? opt_angle : 0;\n for (var i = 0; i <= sides; ++i) {\n var offset = i * stride;\n var angle = startAngle + (modulo(i, sides) * 2 * Math.PI) / sides;\n flatCoordinates[offset] = center[0] + radius * Math.cos(angle);\n flatCoordinates[offset + 1] = center[1] + radius * Math.sin(angle);\n }\n polygon.changed();\n}\n//# sourceMappingURL=Polygon.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/SimpleGeometry\n */\nimport Geometry from './Geometry.js';\nimport GeometryLayout from './GeometryLayout.js';\nimport { abstract } from '../util.js';\nimport { createOrUpdateFromFlatCoordinates, getCenter } from '../extent.js';\nimport { rotate, scale, transform2D, translate } from './flat/transform.js';\n/**\n * @classdesc\n * Abstract base class; only used for creating subclasses; do not instantiate\n * in apps, as cannot be rendered.\n *\n * @abstract\n * @api\n */\nvar SimpleGeometry = /** @class */ (function (_super) {\n __extends(SimpleGeometry, _super);\n function SimpleGeometry() {\n var _this = _super.call(this) || this;\n /**\n * @protected\n * @type {import(\"./GeometryLayout.js\").default}\n */\n _this.layout = GeometryLayout.XY;\n /**\n * @protected\n * @type {number}\n */\n _this.stride = 2;\n /**\n * @protected\n * @type {Array}\n */\n _this.flatCoordinates = null;\n return _this;\n }\n /**\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @protected\n * @return {import(\"../extent.js\").Extent} extent Extent.\n */\n SimpleGeometry.prototype.computeExtent = function (extent) {\n return createOrUpdateFromFlatCoordinates(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, extent);\n };\n /**\n * @abstract\n * @return {Array<*>} Coordinates.\n */\n SimpleGeometry.prototype.getCoordinates = function () {\n return abstract();\n };\n /**\n * Return the first coordinate of the geometry.\n * @return {import(\"../coordinate.js\").Coordinate} First coordinate.\n * @api\n */\n SimpleGeometry.prototype.getFirstCoordinate = function () {\n return this.flatCoordinates.slice(0, this.stride);\n };\n /**\n * @return {Array} Flat coordinates.\n */\n SimpleGeometry.prototype.getFlatCoordinates = function () {\n return this.flatCoordinates;\n };\n /**\n * Return the last coordinate of the geometry.\n * @return {import(\"../coordinate.js\").Coordinate} Last point.\n * @api\n */\n SimpleGeometry.prototype.getLastCoordinate = function () {\n return this.flatCoordinates.slice(this.flatCoordinates.length - this.stride);\n };\n /**\n * Return the {@link module:ol/geom/GeometryLayout layout} of the geometry.\n * @return {import(\"./GeometryLayout.js\").default} Layout.\n * @api\n */\n SimpleGeometry.prototype.getLayout = function () {\n return this.layout;\n };\n /**\n * Create a simplified version of this geometry using the Douglas Peucker algorithm.\n * @param {number} squaredTolerance Squared tolerance.\n * @return {SimpleGeometry} Simplified geometry.\n */\n SimpleGeometry.prototype.getSimplifiedGeometry = function (squaredTolerance) {\n if (this.simplifiedGeometryRevision !== this.getRevision()) {\n this.simplifiedGeometryMaxMinSquaredTolerance = 0;\n this.simplifiedGeometryRevision = this.getRevision();\n }\n // If squaredTolerance is negative or if we know that simplification will not\n // have any effect then just return this.\n if (squaredTolerance < 0 ||\n (this.simplifiedGeometryMaxMinSquaredTolerance !== 0 &&\n squaredTolerance <= this.simplifiedGeometryMaxMinSquaredTolerance)) {\n return this;\n }\n var simplifiedGeometry = this.getSimplifiedGeometryInternal(squaredTolerance);\n var simplifiedFlatCoordinates = simplifiedGeometry.getFlatCoordinates();\n if (simplifiedFlatCoordinates.length < this.flatCoordinates.length) {\n return simplifiedGeometry;\n }\n else {\n // Simplification did not actually remove any coordinates. We now know\n // that any calls to getSimplifiedGeometry with a squaredTolerance less\n // than or equal to the current squaredTolerance will also not have any\n // effect. This allows us to short circuit simplification (saving CPU\n // cycles) and prevents the cache of simplified geometries from filling\n // up with useless identical copies of this geometry (saving memory).\n this.simplifiedGeometryMaxMinSquaredTolerance = squaredTolerance;\n return this;\n }\n };\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {SimpleGeometry} Simplified geometry.\n * @protected\n */\n SimpleGeometry.prototype.getSimplifiedGeometryInternal = function (squaredTolerance) {\n return this;\n };\n /**\n * @return {number} Stride.\n */\n SimpleGeometry.prototype.getStride = function () {\n return this.stride;\n };\n /**\n * @param {import(\"./GeometryLayout.js\").default} layout Layout.\n * @param {Array} flatCoordinates Flat coordinates.\n */\n SimpleGeometry.prototype.setFlatCoordinates = function (layout, flatCoordinates) {\n this.stride = getStrideForLayout(layout);\n this.layout = layout;\n this.flatCoordinates = flatCoordinates;\n };\n /**\n * @abstract\n * @param {!Array<*>} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default=} opt_layout Layout.\n */\n SimpleGeometry.prototype.setCoordinates = function (coordinates, opt_layout) {\n abstract();\n };\n /**\n * @param {import(\"./GeometryLayout.js\").default|undefined} layout Layout.\n * @param {Array<*>} coordinates Coordinates.\n * @param {number} nesting Nesting.\n * @protected\n */\n SimpleGeometry.prototype.setLayout = function (layout, coordinates, nesting) {\n /** @type {number} */\n var stride;\n if (layout) {\n stride = getStrideForLayout(layout);\n }\n else {\n for (var i = 0; i < nesting; ++i) {\n if (coordinates.length === 0) {\n this.layout = GeometryLayout.XY;\n this.stride = 2;\n return;\n }\n else {\n coordinates = /** @type {Array} */ (coordinates[0]);\n }\n }\n stride = coordinates.length;\n layout = getLayoutForStride(stride);\n }\n this.layout = layout;\n this.stride = stride;\n };\n /**\n * Apply a transform function to the coordinates of the geometry.\n * The geometry is modified in place.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform function.\n * Called with a flat array of geometry coordinates.\n * @api\n */\n SimpleGeometry.prototype.applyTransform = function (transformFn) {\n if (this.flatCoordinates) {\n transformFn(this.flatCoordinates, this.flatCoordinates, this.stride);\n this.changed();\n }\n };\n /**\n * Rotate the geometry around a given coordinate. This modifies the geometry\n * coordinates in place.\n * @param {number} angle Rotation angle in radians.\n * @param {import(\"../coordinate.js\").Coordinate} anchor The rotation center.\n * @api\n */\n SimpleGeometry.prototype.rotate = function (angle, anchor) {\n var flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n var stride = this.getStride();\n rotate(flatCoordinates, 0, flatCoordinates.length, stride, angle, anchor, flatCoordinates);\n this.changed();\n }\n };\n /**\n * Scale the geometry (with an optional origin). This modifies the geometry\n * coordinates in place.\n * @param {number} sx The scaling factor in the x-direction.\n * @param {number=} opt_sy The scaling factor in the y-direction (defaults to sx).\n * @param {import(\"../coordinate.js\").Coordinate=} opt_anchor The scale origin (defaults to the center\n * of the geometry extent).\n * @api\n */\n SimpleGeometry.prototype.scale = function (sx, opt_sy, opt_anchor) {\n var sy = opt_sy;\n if (sy === undefined) {\n sy = sx;\n }\n var anchor = opt_anchor;\n if (!anchor) {\n anchor = getCenter(this.getExtent());\n }\n var flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n var stride = this.getStride();\n scale(flatCoordinates, 0, flatCoordinates.length, stride, sx, sy, anchor, flatCoordinates);\n this.changed();\n }\n };\n /**\n * Translate the geometry. This modifies the geometry coordinates in place. If\n * instead you want a new geometry, first `clone()` this geometry.\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @api\n */\n SimpleGeometry.prototype.translate = function (deltaX, deltaY) {\n var flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n var stride = this.getStride();\n translate(flatCoordinates, 0, flatCoordinates.length, stride, deltaX, deltaY, flatCoordinates);\n this.changed();\n }\n };\n return SimpleGeometry;\n}(Geometry));\n/**\n * @param {number} stride Stride.\n * @return {import(\"./GeometryLayout.js\").default} layout Layout.\n */\nfunction getLayoutForStride(stride) {\n var layout;\n if (stride == 2) {\n layout = GeometryLayout.XY;\n }\n else if (stride == 3) {\n layout = GeometryLayout.XYZ;\n }\n else if (stride == 4) {\n layout = GeometryLayout.XYZM;\n }\n return /** @type {import(\"./GeometryLayout.js\").default} */ (layout);\n}\n/**\n * @param {import(\"./GeometryLayout.js\").default} layout Layout.\n * @return {number} Stride.\n */\nexport function getStrideForLayout(layout) {\n var stride;\n if (layout == GeometryLayout.XY) {\n stride = 2;\n }\n else if (layout == GeometryLayout.XYZ || layout == GeometryLayout.XYM) {\n stride = 3;\n }\n else if (layout == GeometryLayout.XYZM) {\n stride = 4;\n }\n return /** @type {number} */ (stride);\n}\n/**\n * @param {SimpleGeometry} simpleGeometry Simple geometry.\n * @param {import(\"../transform.js\").Transform} transform Transform.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Transformed flat coordinates.\n */\nexport function transformGeom2D(simpleGeometry, transform, opt_dest) {\n var flatCoordinates = simpleGeometry.getFlatCoordinates();\n if (!flatCoordinates) {\n return null;\n }\n else {\n var stride = simpleGeometry.getStride();\n return transform2D(flatCoordinates, 0, flatCoordinates.length, stride, transform, opt_dest);\n }\n}\nexport default SimpleGeometry;\n//# sourceMappingURL=SimpleGeometry.js.map","/**\n * @module ol/geom/flat/area\n */\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRing(flatCoordinates, offset, end, stride) {\n var twiceArea = 0;\n var x1 = flatCoordinates[end - stride];\n var y1 = flatCoordinates[end - stride + 1];\n for (; offset < end; offset += stride) {\n var x2 = flatCoordinates[offset];\n var y2 = flatCoordinates[offset + 1];\n twiceArea += y1 * x2 - x1 * y2;\n x1 = x2;\n y1 = y2;\n }\n return twiceArea / 2;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRings(flatCoordinates, offset, ends, stride) {\n var area = 0;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n area += linearRing(flatCoordinates, offset, end, stride);\n offset = end;\n }\n return area;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRingss(flatCoordinates, offset, endss, stride) {\n var area = 0;\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n area += linearRings(flatCoordinates, offset, ends, stride);\n offset = ends[ends.length - 1];\n }\n return area;\n}\n//# sourceMappingURL=area.js.map","/**\n * @module ol/geom/flat/closest\n */\nimport { lerp, squaredDistance as squaredDx } from '../../math.js';\n/**\n * Returns the point on the 2D line segment flatCoordinates[offset1] to\n * flatCoordinates[offset2] that is closest to the point (x, y). Extra\n * dimensions are linearly interpolated.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset1 Offset 1.\n * @param {number} offset2 Offset 2.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n */\nfunction assignClosest(flatCoordinates, offset1, offset2, stride, x, y, closestPoint) {\n var x1 = flatCoordinates[offset1];\n var y1 = flatCoordinates[offset1 + 1];\n var dx = flatCoordinates[offset2] - x1;\n var dy = flatCoordinates[offset2 + 1] - y1;\n var offset;\n if (dx === 0 && dy === 0) {\n offset = offset1;\n }\n else {\n var t = ((x - x1) * dx + (y - y1) * dy) / (dx * dx + dy * dy);\n if (t > 1) {\n offset = offset2;\n }\n else if (t > 0) {\n for (var i = 0; i < stride; ++i) {\n closestPoint[i] = lerp(flatCoordinates[offset1 + i], flatCoordinates[offset2 + i], t);\n }\n closestPoint.length = stride;\n return;\n }\n else {\n offset = offset1;\n }\n }\n for (var i = 0; i < stride; ++i) {\n closestPoint[i] = flatCoordinates[offset + i];\n }\n closestPoint.length = stride;\n}\n/**\n * Return the squared of the largest distance between any pair of consecutive\n * coordinates.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function maxSquaredDelta(flatCoordinates, offset, end, stride, max) {\n var x1 = flatCoordinates[offset];\n var y1 = flatCoordinates[offset + 1];\n for (offset += stride; offset < end; offset += stride) {\n var x2 = flatCoordinates[offset];\n var y2 = flatCoordinates[offset + 1];\n var squaredDelta = squaredDx(x1, y1, x2, y2);\n if (squaredDelta > max) {\n max = squaredDelta;\n }\n x1 = x2;\n y1 = y2;\n }\n return max;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function arrayMaxSquaredDelta(flatCoordinates, offset, ends, stride, max) {\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n max = maxSquaredDelta(flatCoordinates, offset, end, stride, max);\n offset = end;\n }\n return max;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function multiArrayMaxSquaredDelta(flatCoordinates, offset, endss, stride, max) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n max = arrayMaxSquaredDelta(flatCoordinates, offset, ends, stride, max);\n offset = ends[ends.length - 1];\n }\n return max;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array=} opt_tmpPoint Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestPoint(flatCoordinates, offset, end, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, opt_tmpPoint) {\n if (offset == end) {\n return minSquaredDistance;\n }\n var i, squaredDistance;\n if (maxDelta === 0) {\n // All points are identical, so just test the first point.\n squaredDistance = squaredDx(x, y, flatCoordinates[offset], flatCoordinates[offset + 1]);\n if (squaredDistance < minSquaredDistance) {\n for (i = 0; i < stride; ++i) {\n closestPoint[i] = flatCoordinates[offset + i];\n }\n closestPoint.length = stride;\n return squaredDistance;\n }\n else {\n return minSquaredDistance;\n }\n }\n var tmpPoint = opt_tmpPoint ? opt_tmpPoint : [NaN, NaN];\n var index = offset + stride;\n while (index < end) {\n assignClosest(flatCoordinates, index - stride, index, stride, x, y, tmpPoint);\n squaredDistance = squaredDx(x, y, tmpPoint[0], tmpPoint[1]);\n if (squaredDistance < minSquaredDistance) {\n minSquaredDistance = squaredDistance;\n for (i = 0; i < stride; ++i) {\n closestPoint[i] = tmpPoint[i];\n }\n closestPoint.length = stride;\n index += stride;\n }\n else {\n // Skip ahead multiple points, because we know that all the skipped\n // points cannot be any closer than the closest point we have found so\n // far. We know this because we know how close the current point is, how\n // close the closest point we have found so far is, and the maximum\n // distance between consecutive points. For example, if we're currently\n // at distance 10, the best we've found so far is 3, and that the maximum\n // distance between consecutive points is 2, then we'll need to skip at\n // least (10 - 3) / 2 == 3 (rounded down) points to have any chance of\n // finding a closer point. We use Math.max(..., 1) to ensure that we\n // always advance at least one point, to avoid an infinite loop.\n index +=\n stride *\n Math.max(((Math.sqrt(squaredDistance) - Math.sqrt(minSquaredDistance)) /\n maxDelta) |\n 0, 1);\n }\n }\n if (isRing) {\n // Check the closing segment.\n assignClosest(flatCoordinates, end - stride, offset, stride, x, y, tmpPoint);\n squaredDistance = squaredDx(x, y, tmpPoint[0], tmpPoint[1]);\n if (squaredDistance < minSquaredDistance) {\n minSquaredDistance = squaredDistance;\n for (i = 0; i < stride; ++i) {\n closestPoint[i] = tmpPoint[i];\n }\n closestPoint.length = stride;\n }\n }\n return minSquaredDistance;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array=} opt_tmpPoint Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestArrayPoint(flatCoordinates, offset, ends, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, opt_tmpPoint) {\n var tmpPoint = opt_tmpPoint ? opt_tmpPoint : [NaN, NaN];\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n minSquaredDistance = assignClosestPoint(flatCoordinates, offset, end, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, tmpPoint);\n offset = end;\n }\n return minSquaredDistance;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array=} opt_tmpPoint Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestMultiArrayPoint(flatCoordinates, offset, endss, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, opt_tmpPoint) {\n var tmpPoint = opt_tmpPoint ? opt_tmpPoint : [NaN, NaN];\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n minSquaredDistance = assignClosestArrayPoint(flatCoordinates, offset, ends, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, tmpPoint);\n offset = ends[ends.length - 1];\n }\n return minSquaredDistance;\n}\n//# sourceMappingURL=closest.js.map","/**\n * @module ol/geom/flat/contains\n */\nimport { forEachCorner } from '../../extent.js';\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} Contains extent.\n */\nexport function linearRingContainsExtent(flatCoordinates, offset, end, stride, extent) {\n var outside = forEachCorner(extent, \n /**\n * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} Contains (x, y).\n */\n function (coordinate) {\n return !linearRingContainsXY(flatCoordinates, offset, end, stride, coordinate[0], coordinate[1]);\n });\n return !outside;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingContainsXY(flatCoordinates, offset, end, stride, x, y) {\n // http://geomalgorithms.com/a03-_inclusion.html\n // Copyright 2000 softSurfer, 2012 Dan Sunday\n // This code may be freely used and modified for any purpose\n // providing that this copyright notice is included with it.\n // SoftSurfer makes no warranty for this code, and cannot be held\n // liable for any real or imagined damage resulting from its use.\n // Users of this code must verify correctness for their application.\n var wn = 0;\n var x1 = flatCoordinates[end - stride];\n var y1 = flatCoordinates[end - stride + 1];\n for (; offset < end; offset += stride) {\n var x2 = flatCoordinates[offset];\n var y2 = flatCoordinates[offset + 1];\n if (y1 <= y) {\n if (y2 > y && (x2 - x1) * (y - y1) - (x - x1) * (y2 - y1) > 0) {\n wn++;\n }\n }\n else if (y2 <= y && (x2 - x1) * (y - y1) - (x - x1) * (y2 - y1) < 0) {\n wn--;\n }\n x1 = x2;\n y1 = y2;\n }\n return wn !== 0;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y) {\n if (ends.length === 0) {\n return false;\n }\n if (!linearRingContainsXY(flatCoordinates, offset, ends[0], stride, x, y)) {\n return false;\n }\n for (var i = 1, ii = ends.length; i < ii; ++i) {\n if (linearRingContainsXY(flatCoordinates, ends[i - 1], ends[i], stride, x, y)) {\n return false;\n }\n }\n return true;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingssContainsXY(flatCoordinates, offset, endss, stride, x, y) {\n if (endss.length === 0) {\n return false;\n }\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n if (linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y)) {\n return true;\n }\n offset = ends[ends.length - 1];\n }\n return false;\n}\n//# sourceMappingURL=contains.js.map","/**\n * @module ol/geom/flat/deflate\n */\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {number} stride Stride.\n * @return {number} offset Offset.\n */\nexport function deflateCoordinate(flatCoordinates, offset, coordinate, stride) {\n for (var i = 0, ii = coordinate.length; i < ii; ++i) {\n flatCoordinates[offset++] = coordinate[i];\n }\n return offset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} coordinates Coordinates.\n * @param {number} stride Stride.\n * @return {number} offset Offset.\n */\nexport function deflateCoordinates(flatCoordinates, offset, coordinates, stride) {\n for (var i = 0, ii = coordinates.length; i < ii; ++i) {\n var coordinate = coordinates[i];\n for (var j = 0; j < stride; ++j) {\n flatCoordinates[offset++] = coordinate[j];\n }\n }\n return offset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} coordinatess Coordinatess.\n * @param {number} stride Stride.\n * @param {Array=} opt_ends Ends.\n * @return {Array} Ends.\n */\nexport function deflateCoordinatesArray(flatCoordinates, offset, coordinatess, stride, opt_ends) {\n var ends = opt_ends ? opt_ends : [];\n var i = 0;\n for (var j = 0, jj = coordinatess.length; j < jj; ++j) {\n var end = deflateCoordinates(flatCoordinates, offset, coordinatess[j], stride);\n ends[i++] = end;\n offset = end;\n }\n ends.length = i;\n return ends;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>>} coordinatesss Coordinatesss.\n * @param {number} stride Stride.\n * @param {Array>=} opt_endss Endss.\n * @return {Array>} Endss.\n */\nexport function deflateMultiCoordinatesArray(flatCoordinates, offset, coordinatesss, stride, opt_endss) {\n var endss = opt_endss ? opt_endss : [];\n var i = 0;\n for (var j = 0, jj = coordinatesss.length; j < jj; ++j) {\n var ends = deflateCoordinatesArray(flatCoordinates, offset, coordinatesss[j], stride, endss[i]);\n endss[i++] = ends;\n offset = ends[ends.length - 1];\n }\n endss.length = i;\n return endss;\n}\n//# sourceMappingURL=deflate.js.map","/**\n * @module ol/geom/flat/inflate\n */\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {Array=} opt_coordinates Coordinates.\n * @return {Array} Coordinates.\n */\nexport function inflateCoordinates(flatCoordinates, offset, end, stride, opt_coordinates) {\n var coordinates = opt_coordinates !== undefined ? opt_coordinates : [];\n var i = 0;\n for (var j = offset; j < end; j += stride) {\n coordinates[i++] = flatCoordinates.slice(j, j + stride);\n }\n coordinates.length = i;\n return coordinates;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {Array>=} opt_coordinatess Coordinatess.\n * @return {Array>} Coordinatess.\n */\nexport function inflateCoordinatesArray(flatCoordinates, offset, ends, stride, opt_coordinatess) {\n var coordinatess = opt_coordinatess !== undefined ? opt_coordinatess : [];\n var i = 0;\n for (var j = 0, jj = ends.length; j < jj; ++j) {\n var end = ends[j];\n coordinatess[i++] = inflateCoordinates(flatCoordinates, offset, end, stride, coordinatess[i]);\n offset = end;\n }\n coordinatess.length = i;\n return coordinatess;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {Array>>=} opt_coordinatesss\n * Coordinatesss.\n * @return {Array>>} Coordinatesss.\n */\nexport function inflateMultiCoordinatesArray(flatCoordinates, offset, endss, stride, opt_coordinatesss) {\n var coordinatesss = opt_coordinatesss !== undefined ? opt_coordinatesss : [];\n var i = 0;\n for (var j = 0, jj = endss.length; j < jj; ++j) {\n var ends = endss[j];\n coordinatesss[i++] = inflateCoordinatesArray(flatCoordinates, offset, ends, stride, coordinatesss[i]);\n offset = ends[ends.length - 1];\n }\n coordinatesss.length = i;\n return coordinatesss;\n}\n//# sourceMappingURL=inflate.js.map","/**\n * @module ol/geom/flat/interiorpoint\n */\nimport { linearRingsContainsXY } from './contains.js';\nimport { numberSafeCompareFunction } from '../../array.js';\n/**\n * Calculates a point that is likely to lie in the interior of the linear rings.\n * Inspired by JTS's com.vividsolutions.jts.geom.Geometry#getInteriorPoint.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {Array} flatCenters Flat centers.\n * @param {number} flatCentersOffset Flat center offset.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Destination point as XYM coordinate, where M is the\n * length of the horizontal intersection that the point belongs to.\n */\nexport function getInteriorPointOfArray(flatCoordinates, offset, ends, stride, flatCenters, flatCentersOffset, opt_dest) {\n var i, ii, x, x1, x2, y1, y2;\n var y = flatCenters[flatCentersOffset + 1];\n /** @type {Array} */\n var intersections = [];\n // Calculate intersections with the horizontal line\n for (var r = 0, rr = ends.length; r < rr; ++r) {\n var end = ends[r];\n x1 = flatCoordinates[end - stride];\n y1 = flatCoordinates[end - stride + 1];\n for (i = offset; i < end; i += stride) {\n x2 = flatCoordinates[i];\n y2 = flatCoordinates[i + 1];\n if ((y <= y1 && y2 <= y) || (y1 <= y && y <= y2)) {\n x = ((y - y1) / (y2 - y1)) * (x2 - x1) + x1;\n intersections.push(x);\n }\n x1 = x2;\n y1 = y2;\n }\n }\n // Find the longest segment of the horizontal line that has its center point\n // inside the linear ring.\n var pointX = NaN;\n var maxSegmentLength = -Infinity;\n intersections.sort(numberSafeCompareFunction);\n x1 = intersections[0];\n for (i = 1, ii = intersections.length; i < ii; ++i) {\n x2 = intersections[i];\n var segmentLength = Math.abs(x2 - x1);\n if (segmentLength > maxSegmentLength) {\n x = (x1 + x2) / 2;\n if (linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y)) {\n pointX = x;\n maxSegmentLength = segmentLength;\n }\n }\n x1 = x2;\n }\n if (isNaN(pointX)) {\n // There is no horizontal line that has its center point inside the linear\n // ring. Use the center of the the linear ring's extent.\n pointX = flatCenters[flatCentersOffset];\n }\n if (opt_dest) {\n opt_dest.push(pointX, y, maxSegmentLength);\n return opt_dest;\n }\n else {\n return [pointX, y, maxSegmentLength];\n }\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {Array} flatCenters Flat centers.\n * @return {Array} Interior points as XYM coordinates, where M is the\n * length of the horizontal intersection that the point belongs to.\n */\nexport function getInteriorPointsOfMultiArray(flatCoordinates, offset, endss, stride, flatCenters) {\n var interiorPoints = [];\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n interiorPoints = getInteriorPointOfArray(flatCoordinates, offset, ends, stride, flatCenters, 2 * i, interiorPoints);\n offset = ends[ends.length - 1];\n }\n return interiorPoints;\n}\n//# sourceMappingURL=interiorpoint.js.map","/**\n * @module ol/geom/flat/interpolate\n */\nimport { binarySearch } from '../../array.js';\nimport { lerp } from '../../math.js';\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} fraction Fraction.\n * @param {Array=} opt_dest Destination.\n * @param {number=} opt_dimension Destination dimension (default is `2`)\n * @return {Array} Destination.\n */\nexport function interpolatePoint(flatCoordinates, offset, end, stride, fraction, opt_dest, opt_dimension) {\n var o, t;\n var n = (end - offset) / stride;\n if (n === 1) {\n o = offset;\n }\n else if (n === 2) {\n o = offset;\n t = fraction;\n }\n else if (n !== 0) {\n var x1 = flatCoordinates[offset];\n var y1 = flatCoordinates[offset + 1];\n var length_1 = 0;\n var cumulativeLengths = [0];\n for (var i = offset + stride; i < end; i += stride) {\n var x2 = flatCoordinates[i];\n var y2 = flatCoordinates[i + 1];\n length_1 += Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n cumulativeLengths.push(length_1);\n x1 = x2;\n y1 = y2;\n }\n var target = fraction * length_1;\n var index = binarySearch(cumulativeLengths, target);\n if (index < 0) {\n t =\n (target - cumulativeLengths[-index - 2]) /\n (cumulativeLengths[-index - 1] - cumulativeLengths[-index - 2]);\n o = offset + (-index - 2) * stride;\n }\n else {\n o = offset + index * stride;\n }\n }\n var dimension = opt_dimension > 1 ? opt_dimension : 2;\n var dest = opt_dest ? opt_dest : new Array(dimension);\n for (var i = 0; i < dimension; ++i) {\n dest[i] =\n o === undefined\n ? NaN\n : t === undefined\n ? flatCoordinates[o + i]\n : lerp(flatCoordinates[o + i], flatCoordinates[o + stride + i], t);\n }\n return dest;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} m M.\n * @param {boolean} extrapolate Extrapolate.\n * @return {import(\"../../coordinate.js\").Coordinate} Coordinate.\n */\nexport function lineStringCoordinateAtM(flatCoordinates, offset, end, stride, m, extrapolate) {\n if (end == offset) {\n return null;\n }\n var coordinate;\n if (m < flatCoordinates[offset + stride - 1]) {\n if (extrapolate) {\n coordinate = flatCoordinates.slice(offset, offset + stride);\n coordinate[stride - 1] = m;\n return coordinate;\n }\n else {\n return null;\n }\n }\n else if (flatCoordinates[end - 1] < m) {\n if (extrapolate) {\n coordinate = flatCoordinates.slice(end - stride, end);\n coordinate[stride - 1] = m;\n return coordinate;\n }\n else {\n return null;\n }\n }\n // FIXME use O(1) search\n if (m == flatCoordinates[offset + stride - 1]) {\n return flatCoordinates.slice(offset, offset + stride);\n }\n var lo = offset / stride;\n var hi = end / stride;\n while (lo < hi) {\n var mid = (lo + hi) >> 1;\n if (m < flatCoordinates[(mid + 1) * stride - 1]) {\n hi = mid;\n }\n else {\n lo = mid + 1;\n }\n }\n var m0 = flatCoordinates[lo * stride - 1];\n if (m == m0) {\n return flatCoordinates.slice((lo - 1) * stride, (lo - 1) * stride + stride);\n }\n var m1 = flatCoordinates[(lo + 1) * stride - 1];\n var t = (m - m0) / (m1 - m0);\n coordinate = [];\n for (var i = 0; i < stride - 1; ++i) {\n coordinate.push(lerp(flatCoordinates[(lo - 1) * stride + i], flatCoordinates[lo * stride + i], t));\n }\n coordinate.push(m);\n return coordinate;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} m M.\n * @param {boolean} extrapolate Extrapolate.\n * @param {boolean} interpolate Interpolate.\n * @return {import(\"../../coordinate.js\").Coordinate} Coordinate.\n */\nexport function lineStringsCoordinateAtM(flatCoordinates, offset, ends, stride, m, extrapolate, interpolate) {\n if (interpolate) {\n return lineStringCoordinateAtM(flatCoordinates, offset, ends[ends.length - 1], stride, m, extrapolate);\n }\n var coordinate;\n if (m < flatCoordinates[stride - 1]) {\n if (extrapolate) {\n coordinate = flatCoordinates.slice(0, stride);\n coordinate[stride - 1] = m;\n return coordinate;\n }\n else {\n return null;\n }\n }\n if (flatCoordinates[flatCoordinates.length - 1] < m) {\n if (extrapolate) {\n coordinate = flatCoordinates.slice(flatCoordinates.length - stride);\n coordinate[stride - 1] = m;\n return coordinate;\n }\n else {\n return null;\n }\n }\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n if (offset == end) {\n continue;\n }\n if (m < flatCoordinates[offset + stride - 1]) {\n return null;\n }\n else if (m <= flatCoordinates[end - 1]) {\n return lineStringCoordinateAtM(flatCoordinates, offset, end, stride, m, false);\n }\n offset = end;\n }\n return null;\n}\n//# sourceMappingURL=interpolate.js.map","/**\n * @module ol/geom/flat/intersectsextent\n */\nimport { containsExtent, createEmpty, extendFlatCoordinates, intersects, intersectsSegment, } from '../../extent.js';\nimport { forEach as forEachSegment } from './segments.js';\nimport { linearRingContainsExtent, linearRingContainsXY } from './contains.js';\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLineString(flatCoordinates, offset, end, stride, extent) {\n var coordinatesExtent = extendFlatCoordinates(createEmpty(), flatCoordinates, offset, end, stride);\n if (!intersects(extent, coordinatesExtent)) {\n return false;\n }\n if (containsExtent(extent, coordinatesExtent)) {\n return true;\n }\n if (coordinatesExtent[0] >= extent[0] && coordinatesExtent[2] <= extent[2]) {\n return true;\n }\n if (coordinatesExtent[1] >= extent[1] && coordinatesExtent[3] <= extent[3]) {\n return true;\n }\n return forEachSegment(flatCoordinates, offset, end, stride, \n /**\n * @param {import(\"../../coordinate.js\").Coordinate} point1 Start point.\n * @param {import(\"../../coordinate.js\").Coordinate} point2 End point.\n * @return {boolean} `true` if the segment and the extent intersect,\n * `false` otherwise.\n */\n function (point1, point2) {\n return intersectsSegment(extent, point1, point2);\n });\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLineStringArray(flatCoordinates, offset, ends, stride, extent) {\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n if (intersectsLineString(flatCoordinates, offset, ends[i], stride, extent)) {\n return true;\n }\n offset = ends[i];\n }\n return false;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLinearRing(flatCoordinates, offset, end, stride, extent) {\n if (intersectsLineString(flatCoordinates, offset, end, stride, extent)) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[0], extent[1])) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[0], extent[3])) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[2], extent[1])) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[2], extent[3])) {\n return true;\n }\n return false;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLinearRingArray(flatCoordinates, offset, ends, stride, extent) {\n if (!intersectsLinearRing(flatCoordinates, offset, ends[0], stride, extent)) {\n return false;\n }\n if (ends.length === 1) {\n return true;\n }\n for (var i = 1, ii = ends.length; i < ii; ++i) {\n if (linearRingContainsExtent(flatCoordinates, ends[i - 1], ends[i], stride, extent)) {\n if (!intersectsLineString(flatCoordinates, ends[i - 1], ends[i], stride, extent)) {\n return false;\n }\n }\n }\n return true;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLinearRingMultiArray(flatCoordinates, offset, endss, stride, extent) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n if (intersectsLinearRingArray(flatCoordinates, offset, ends, stride, extent)) {\n return true;\n }\n offset = ends[ends.length - 1];\n }\n return false;\n}\n//# sourceMappingURL=intersectsextent.js.map","/**\n * @module ol/geom/flat/length\n */\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {number} Length.\n */\nexport function lineStringLength(flatCoordinates, offset, end, stride) {\n var x1 = flatCoordinates[offset];\n var y1 = flatCoordinates[offset + 1];\n var length = 0;\n for (var i = offset + stride; i < end; i += stride) {\n var x2 = flatCoordinates[i];\n var y2 = flatCoordinates[i + 1];\n length += Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n x1 = x2;\n y1 = y2;\n }\n return length;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {number} Perimeter.\n */\nexport function linearRingLength(flatCoordinates, offset, end, stride) {\n var perimeter = lineStringLength(flatCoordinates, offset, end, stride);\n var dx = flatCoordinates[end - stride] - flatCoordinates[offset];\n var dy = flatCoordinates[end - stride + 1] - flatCoordinates[offset + 1];\n perimeter += Math.sqrt(dx * dx + dy * dy);\n return perimeter;\n}\n//# sourceMappingURL=length.js.map","/**\n * @module ol/geom/flat/reverse\n */\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n */\nexport function coordinates(flatCoordinates, offset, end, stride) {\n while (offset < end - stride) {\n for (var i = 0; i < stride; ++i) {\n var tmp = flatCoordinates[offset + i];\n flatCoordinates[offset + i] = flatCoordinates[end - stride + i];\n flatCoordinates[end - stride + i] = tmp;\n }\n offset += stride;\n end -= stride;\n }\n}\n//# sourceMappingURL=reverse.js.map","/**\n * @module ol/geom/flat/orient\n */\nimport { coordinates as reverseCoordinates } from './reverse.js';\n/**\n * Is the linear ring oriented clockwise in a coordinate system with a bottom-left\n * coordinate origin? For a coordinate system with a top-left coordinate origin,\n * the ring's orientation is clockwise when this function returns false.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {boolean} Is clockwise.\n */\nexport function linearRingIsClockwise(flatCoordinates, offset, end, stride) {\n // https://stackoverflow.com/a/1180256/2389327\n // https://en.wikipedia.org/wiki/Curve_orientation#Orientation_of_a_simple_polygon\n var firstVertexRepeated = true;\n for (var i = 0; i < stride; ++i) {\n if (flatCoordinates[offset + i] !== flatCoordinates[end - stride + i]) {\n firstVertexRepeated = false;\n break;\n }\n }\n if (firstVertexRepeated) {\n end -= stride;\n }\n var iMinVertex = findCornerVertex(flatCoordinates, offset, end, stride);\n // Orientation matrix:\n // [ 1 xa ya ]\n // O = | 1 xb yb |\n // [ 1 xc yc ]\n var iPreviousVertex = iMinVertex - stride;\n if (iPreviousVertex < offset) {\n iPreviousVertex = end - stride;\n }\n var iNextVertex = iMinVertex + stride;\n if (iNextVertex >= end) {\n iNextVertex = offset;\n }\n var aX = flatCoordinates[iPreviousVertex];\n var aY = flatCoordinates[iPreviousVertex + 1];\n var bX = flatCoordinates[iMinVertex];\n var bY = flatCoordinates[iMinVertex + 1];\n var cX = flatCoordinates[iNextVertex];\n var cY = flatCoordinates[iNextVertex + 1];\n var determinant = bX * cY + aX * bY + aY * cX - (aY * bX + bY * cX + aX * cY);\n return determinant < 0;\n}\n// Find vertex along one edge of bounding box.\n// In this case, we find smallest y; in case of tie also smallest x.\nfunction findCornerVertex(flatCoordinates, offset, end, stride) {\n var iMinVertex = -1;\n var minY = Infinity;\n var minXAtMinY = Infinity;\n for (var i = offset; i < end; i += stride) {\n var x = flatCoordinates[i];\n var y = flatCoordinates[i + 1];\n if (y > minY) {\n continue;\n }\n if (y == minY) {\n if (x >= minXAtMinY) {\n continue;\n }\n }\n // Minimum so far.\n iMinVertex = i;\n minY = y;\n minXAtMinY = x;\n }\n return iMinVertex;\n}\n/**\n * Determines if linear rings are oriented. By default, left-hand orientation\n * is tested (first ring must be clockwise, remaining rings counter-clockwise).\n * To test for right-hand orientation, use the `opt_right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean=} opt_right Test for right-hand orientation\n * (counter-clockwise exterior ring and clockwise interior rings).\n * @return {boolean} Rings are correctly oriented.\n */\nexport function linearRingsAreOriented(flatCoordinates, offset, ends, stride, opt_right) {\n var right = opt_right !== undefined ? opt_right : false;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n var isClockwise = linearRingIsClockwise(flatCoordinates, offset, end, stride);\n if (i === 0) {\n if ((right && isClockwise) || (!right && !isClockwise)) {\n return false;\n }\n }\n else {\n if ((right && !isClockwise) || (!right && isClockwise)) {\n return false;\n }\n }\n offset = end;\n }\n return true;\n}\n/**\n * Determines if linear rings are oriented. By default, left-hand orientation\n * is tested (first ring must be clockwise, remaining rings counter-clockwise).\n * To test for right-hand orientation, use the `opt_right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Array of array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean=} opt_right Test for right-hand orientation\n * (counter-clockwise exterior ring and clockwise interior rings).\n * @return {boolean} Rings are correctly oriented.\n */\nexport function linearRingssAreOriented(flatCoordinates, offset, endss, stride, opt_right) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n if (!linearRingsAreOriented(flatCoordinates, offset, ends, stride, opt_right)) {\n return false;\n }\n if (ends.length) {\n offset = ends[ends.length - 1];\n }\n }\n return true;\n}\n/**\n * Orient coordinates in a flat array of linear rings. By default, rings\n * are oriented following the left-hand rule (clockwise for exterior and\n * counter-clockwise for interior rings). To orient according to the\n * right-hand rule, use the `opt_right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {boolean=} opt_right Follow the right-hand rule for orientation.\n * @return {number} End.\n */\nexport function orientLinearRings(flatCoordinates, offset, ends, stride, opt_right) {\n var right = opt_right !== undefined ? opt_right : false;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n var isClockwise = linearRingIsClockwise(flatCoordinates, offset, end, stride);\n var reverse = i === 0\n ? (right && isClockwise) || (!right && !isClockwise)\n : (right && !isClockwise) || (!right && isClockwise);\n if (reverse) {\n reverseCoordinates(flatCoordinates, offset, end, stride);\n }\n offset = end;\n }\n return offset;\n}\n/**\n * Orient coordinates in a flat array of linear rings. By default, rings\n * are oriented following the left-hand rule (clockwise for exterior and\n * counter-clockwise for interior rings). To orient according to the\n * right-hand rule, use the `opt_right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Array of array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean=} opt_right Follow the right-hand rule for orientation.\n * @return {number} End.\n */\nexport function orientLinearRingsArray(flatCoordinates, offset, endss, stride, opt_right) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n offset = orientLinearRings(flatCoordinates, offset, endss[i], stride, opt_right);\n }\n return offset;\n}\n//# sourceMappingURL=orient.js.map","/**\n * @module ol/geom/flat/segments\n */\n/**\n * This function calls `callback` for each segment of the flat coordinates\n * array. If the callback returns a truthy value the function returns that\n * value immediately. Otherwise the function returns `false`.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {function(import(\"../../coordinate.js\").Coordinate, import(\"../../coordinate.js\").Coordinate): T} callback Function\n * called for each segment.\n * @return {T|boolean} Value.\n * @template T\n */\nexport function forEach(flatCoordinates, offset, end, stride, callback) {\n var point1 = [flatCoordinates[offset], flatCoordinates[offset + 1]];\n var point2 = [];\n var ret;\n for (; offset + stride < end; offset += stride) {\n point2[0] = flatCoordinates[offset + stride];\n point2[1] = flatCoordinates[offset + stride + 1];\n ret = callback(point1, point2);\n if (ret) {\n return ret;\n }\n point1[0] = point2[0];\n point1[1] = point2[1];\n }\n return false;\n}\n//# sourceMappingURL=segments.js.map","/**\n * @module ol/geom/flat/simplify\n */\n// Based on simplify-js https://github.com/mourner/simplify-js\n// Copyright (c) 2012, Vladimir Agafonkin\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are met:\n//\n// 1. Redistributions of source code must retain the above copyright notice,\n// this list of conditions and the following disclaimer.\n//\n// 2. Redistributions in binary form must reproduce the above copyright\n// notice, this list of conditions and the following disclaimer in the\n// documentation and/or other materials provided with the distribution.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n// POSSIBILITY OF SUCH DAMAGE.\nimport { squaredDistance, squaredSegmentDistance } from '../../math.js';\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {boolean} highQuality Highest quality.\n * @param {Array=} opt_simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @return {Array} Simplified line string.\n */\nexport function simplifyLineString(flatCoordinates, offset, end, stride, squaredTolerance, highQuality, opt_simplifiedFlatCoordinates) {\n var simplifiedFlatCoordinates = opt_simplifiedFlatCoordinates !== undefined\n ? opt_simplifiedFlatCoordinates\n : [];\n if (!highQuality) {\n end = radialDistance(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, 0);\n flatCoordinates = simplifiedFlatCoordinates;\n offset = 0;\n stride = 2;\n }\n simplifiedFlatCoordinates.length = douglasPeucker(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, 0);\n return simplifiedFlatCoordinates;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function douglasPeucker(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset) {\n var n = (end - offset) / stride;\n if (n < 3) {\n for (; offset < end; offset += stride) {\n simplifiedFlatCoordinates[simplifiedOffset++] = flatCoordinates[offset];\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + 1];\n }\n return simplifiedOffset;\n }\n /** @type {Array} */\n var markers = new Array(n);\n markers[0] = 1;\n markers[n - 1] = 1;\n /** @type {Array} */\n var stack = [offset, end - stride];\n var index = 0;\n while (stack.length > 0) {\n var last = stack.pop();\n var first = stack.pop();\n var maxSquaredDistance = 0;\n var x1 = flatCoordinates[first];\n var y1 = flatCoordinates[first + 1];\n var x2 = flatCoordinates[last];\n var y2 = flatCoordinates[last + 1];\n for (var i = first + stride; i < last; i += stride) {\n var x = flatCoordinates[i];\n var y = flatCoordinates[i + 1];\n var squaredDistance_1 = squaredSegmentDistance(x, y, x1, y1, x2, y2);\n if (squaredDistance_1 > maxSquaredDistance) {\n index = i;\n maxSquaredDistance = squaredDistance_1;\n }\n }\n if (maxSquaredDistance > squaredTolerance) {\n markers[(index - offset) / stride] = 1;\n if (first + stride < index) {\n stack.push(first, index);\n }\n if (index + stride < last) {\n stack.push(index, last);\n }\n }\n }\n for (var i = 0; i < n; ++i) {\n if (markers[i]) {\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + i * stride];\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + i * stride + 1];\n }\n }\n return simplifiedOffset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array} simplifiedEnds Simplified ends.\n * @return {number} Simplified offset.\n */\nexport function douglasPeuckerArray(flatCoordinates, offset, ends, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds) {\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n simplifiedOffset = douglasPeucker(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset);\n simplifiedEnds.push(simplifiedOffset);\n offset = end;\n }\n return simplifiedOffset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array>} simplifiedEndss Simplified endss.\n * @return {number} Simplified offset.\n */\nexport function douglasPeuckerMultiArray(flatCoordinates, offset, endss, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEndss) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n var simplifiedEnds = [];\n simplifiedOffset = douglasPeuckerArray(flatCoordinates, offset, ends, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds);\n simplifiedEndss.push(simplifiedEnds);\n offset = ends[ends.length - 1];\n }\n return simplifiedOffset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function radialDistance(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset) {\n if (end <= offset + stride) {\n // zero or one point, no simplification possible, so copy and return\n for (; offset < end; offset += stride) {\n simplifiedFlatCoordinates[simplifiedOffset++] = flatCoordinates[offset];\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + 1];\n }\n return simplifiedOffset;\n }\n var x1 = flatCoordinates[offset];\n var y1 = flatCoordinates[offset + 1];\n // copy first point\n simplifiedFlatCoordinates[simplifiedOffset++] = x1;\n simplifiedFlatCoordinates[simplifiedOffset++] = y1;\n var x2 = x1;\n var y2 = y1;\n for (offset += stride; offset < end; offset += stride) {\n x2 = flatCoordinates[offset];\n y2 = flatCoordinates[offset + 1];\n if (squaredDistance(x1, y1, x2, y2) > squaredTolerance) {\n // copy point at offset\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n x1 = x2;\n y1 = y2;\n }\n }\n if (x2 != x1 || y2 != y1) {\n // copy last point\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n }\n return simplifiedOffset;\n}\n/**\n * @param {number} value Value.\n * @param {number} tolerance Tolerance.\n * @return {number} Rounded value.\n */\nexport function snap(value, tolerance) {\n return tolerance * Math.round(value / tolerance);\n}\n/**\n * Simplifies a line string using an algorithm designed by Tim Schaub.\n * Coordinates are snapped to the nearest value in a virtual grid and\n * consecutive duplicate coordinates are discarded. This effectively preserves\n * topology as the simplification of any subsection of a line string is\n * independent of the rest of the line string. This means that, for examples,\n * the common edge between two polygons will be simplified to the same line\n * string independently in both polygons. This implementation uses a single\n * pass over the coordinates and eliminates intermediate collinear points.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function quantize(flatCoordinates, offset, end, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset) {\n // do nothing if the line is empty\n if (offset == end) {\n return simplifiedOffset;\n }\n // snap the first coordinate (P1)\n var x1 = snap(flatCoordinates[offset], tolerance);\n var y1 = snap(flatCoordinates[offset + 1], tolerance);\n offset += stride;\n // add the first coordinate to the output\n simplifiedFlatCoordinates[simplifiedOffset++] = x1;\n simplifiedFlatCoordinates[simplifiedOffset++] = y1;\n // find the next coordinate that does not snap to the same value as the first\n // coordinate (P2)\n var x2, y2;\n do {\n x2 = snap(flatCoordinates[offset], tolerance);\n y2 = snap(flatCoordinates[offset + 1], tolerance);\n offset += stride;\n if (offset == end) {\n // all coordinates snap to the same value, the line collapses to a point\n // push the last snapped value anyway to ensure that the output contains\n // at least two points\n // FIXME should we really return at least two points anyway?\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n return simplifiedOffset;\n }\n } while (x2 == x1 && y2 == y1);\n while (offset < end) {\n // snap the next coordinate (P3)\n var x3 = snap(flatCoordinates[offset], tolerance);\n var y3 = snap(flatCoordinates[offset + 1], tolerance);\n offset += stride;\n // skip P3 if it is equal to P2\n if (x3 == x2 && y3 == y2) {\n continue;\n }\n // calculate the delta between P1 and P2\n var dx1 = x2 - x1;\n var dy1 = y2 - y1;\n // calculate the delta between P3 and P1\n var dx2 = x3 - x1;\n var dy2 = y3 - y1;\n // if P1, P2, and P3 are colinear and P3 is further from P1 than P2 is from\n // P1 in the same direction then P2 is on the straight line between P1 and\n // P3\n if (dx1 * dy2 == dy1 * dx2 &&\n ((dx1 < 0 && dx2 < dx1) || dx1 == dx2 || (dx1 > 0 && dx2 > dx1)) &&\n ((dy1 < 0 && dy2 < dy1) || dy1 == dy2 || (dy1 > 0 && dy2 > dy1))) {\n // discard P2 and set P2 = P3\n x2 = x3;\n y2 = y3;\n continue;\n }\n // either P1, P2, and P3 are not colinear, or they are colinear but P3 is\n // between P3 and P1 or on the opposite half of the line to P2. add P2,\n // and continue with P1 = P2 and P2 = P3\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n x1 = x2;\n y1 = y2;\n x2 = x3;\n y2 = y3;\n }\n // add the last point (P2)\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n return simplifiedOffset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array} simplifiedEnds Simplified ends.\n * @return {number} Simplified offset.\n */\nexport function quantizeArray(flatCoordinates, offset, ends, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds) {\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n simplifiedOffset = quantize(flatCoordinates, offset, end, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset);\n simplifiedEnds.push(simplifiedOffset);\n offset = end;\n }\n return simplifiedOffset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array>} simplifiedEndss Simplified endss.\n * @return {number} Simplified offset.\n */\nexport function quantizeMultiArray(flatCoordinates, offset, endss, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEndss) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n var simplifiedEnds = [];\n simplifiedOffset = quantizeArray(flatCoordinates, offset, ends, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds);\n simplifiedEndss.push(simplifiedEnds);\n offset = ends[ends.length - 1];\n }\n return simplifiedOffset;\n}\n//# sourceMappingURL=simplify.js.map","/**\n * @module ol/geom/flat/transform\n */\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../transform.js\").Transform} transform Transform.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function transform2D(flatCoordinates, offset, end, stride, transform, opt_dest) {\n var dest = opt_dest ? opt_dest : [];\n var i = 0;\n for (var j = offset; j < end; j += stride) {\n var x = flatCoordinates[j];\n var y = flatCoordinates[j + 1];\n dest[i++] = transform[0] * x + transform[2] * y + transform[4];\n dest[i++] = transform[1] * x + transform[3] * y + transform[5];\n }\n if (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} angle Angle.\n * @param {Array} anchor Rotation anchor point.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function rotate(flatCoordinates, offset, end, stride, angle, anchor, opt_dest) {\n var dest = opt_dest ? opt_dest : [];\n var cos = Math.cos(angle);\n var sin = Math.sin(angle);\n var anchorX = anchor[0];\n var anchorY = anchor[1];\n var i = 0;\n for (var j = offset; j < end; j += stride) {\n var deltaX = flatCoordinates[j] - anchorX;\n var deltaY = flatCoordinates[j + 1] - anchorY;\n dest[i++] = anchorX + deltaX * cos - deltaY * sin;\n dest[i++] = anchorY + deltaX * sin + deltaY * cos;\n for (var k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n/**\n * Scale the coordinates.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} sx Scale factor in the x-direction.\n * @param {number} sy Scale factor in the y-direction.\n * @param {Array} anchor Scale anchor point.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function scale(flatCoordinates, offset, end, stride, sx, sy, anchor, opt_dest) {\n var dest = opt_dest ? opt_dest : [];\n var anchorX = anchor[0];\n var anchorY = anchor[1];\n var i = 0;\n for (var j = offset; j < end; j += stride) {\n var deltaX = flatCoordinates[j] - anchorX;\n var deltaY = flatCoordinates[j + 1] - anchorY;\n dest[i++] = anchorX + sx * deltaX;\n dest[i++] = anchorY + sy * deltaY;\n for (var k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @param {Array=} opt_dest Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function translate(flatCoordinates, offset, end, stride, deltaX, deltaY, opt_dest) {\n var dest = opt_dest ? opt_dest : [];\n var i = 0;\n for (var j = offset; j < end; j += stride) {\n dest[i++] = flatCoordinates[j] + deltaX;\n dest[i++] = flatCoordinates[j + 1] + deltaY;\n for (var k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n//# sourceMappingURL=transform.js.map","/**\n * @module ol/has\n */\nvar ua = typeof navigator !== 'undefined' && typeof navigator.userAgent !== 'undefined'\n ? navigator.userAgent.toLowerCase()\n : '';\n/**\n * User agent string says we are dealing with Firefox as browser.\n * @type {boolean}\n */\nexport var FIREFOX = ua.indexOf('firefox') !== -1;\n/**\n * User agent string says we are dealing with Safari as browser.\n * @type {boolean}\n */\nexport var SAFARI = ua.indexOf('safari') !== -1 && ua.indexOf('chrom') == -1;\n/**\n * User agent string says we are dealing with a WebKit engine.\n * @type {boolean}\n */\nexport var WEBKIT = ua.indexOf('webkit') !== -1 && ua.indexOf('edge') == -1;\n/**\n * User agent string says we are dealing with a Mac as platform.\n * @type {boolean}\n */\nexport var MAC = ua.indexOf('macintosh') !== -1;\n/**\n * The ratio between physical pixels and device-independent pixels\n * (dips) on the device (`window.devicePixelRatio`).\n * @const\n * @type {number}\n * @api\n */\nexport var DEVICE_PIXEL_RATIO = typeof devicePixelRatio !== 'undefined' ? devicePixelRatio : 1;\n/**\n * The execution context is a worker with OffscreenCanvas available.\n * @const\n * @type {boolean}\n */\nexport var WORKER_OFFSCREEN_CANVAS = typeof WorkerGlobalScope !== 'undefined' &&\n typeof OffscreenCanvas !== 'undefined' &&\n self instanceof WorkerGlobalScope; //eslint-disable-line\n/**\n * Image.prototype.decode() is supported.\n * @type {boolean}\n */\nexport var IMAGE_DECODE = typeof Image !== 'undefined' && Image.prototype.decode;\n/**\n * @type {boolean}\n */\nexport var PASSIVE_EVENT_LISTENERS = (function () {\n var passive = false;\n try {\n var options = Object.defineProperty({}, 'passive', {\n get: function () {\n passive = true;\n },\n });\n window.addEventListener('_', null, options);\n window.removeEventListener('_', null, options);\n }\n catch (error) {\n // passive not supported\n }\n return passive;\n})();\n//# sourceMappingURL=has.js.map","/**\n * @module ol/geom/flat/geodesic\n */\nimport { get as getProjection, getTransform } from '../../proj.js';\nimport { squaredSegmentDistance, toDegrees, toRadians } from '../../math.js';\n/**\n * @param {function(number): import(\"../../coordinate.js\").Coordinate} interpolate Interpolate function.\n * @param {import(\"../../proj.js\").TransformFunction} transform Transform from longitude/latitude to\n * projected coordinates.\n * @param {number} squaredTolerance Squared tolerance.\n * @return {Array} Flat coordinates.\n */\nfunction line(interpolate, transform, squaredTolerance) {\n // FIXME reduce garbage generation\n // FIXME optimize stack operations\n /** @type {Array} */\n var flatCoordinates = [];\n var geoA = interpolate(0);\n var geoB = interpolate(1);\n var a = transform(geoA);\n var b = transform(geoB);\n /** @type {Array} */\n var geoStack = [geoB, geoA];\n /** @type {Array} */\n var stack = [b, a];\n /** @type {Array} */\n var fractionStack = [1, 0];\n /** @type {!Object} */\n var fractions = {};\n var maxIterations = 1e5;\n var geoM, m, fracA, fracB, fracM, key;\n while (--maxIterations > 0 && fractionStack.length > 0) {\n // Pop the a coordinate off the stack\n fracA = fractionStack.pop();\n geoA = geoStack.pop();\n a = stack.pop();\n // Add the a coordinate if it has not been added yet\n key = fracA.toString();\n if (!(key in fractions)) {\n flatCoordinates.push(a[0], a[1]);\n fractions[key] = true;\n }\n // Pop the b coordinate off the stack\n fracB = fractionStack.pop();\n geoB = geoStack.pop();\n b = stack.pop();\n // Find the m point between the a and b coordinates\n fracM = (fracA + fracB) / 2;\n geoM = interpolate(fracM);\n m = transform(geoM);\n if (squaredSegmentDistance(m[0], m[1], a[0], a[1], b[0], b[1]) <\n squaredTolerance) {\n // If the m point is sufficiently close to the straight line, then we\n // discard it. Just use the b coordinate and move on to the next line\n // segment.\n flatCoordinates.push(b[0], b[1]);\n key = fracB.toString();\n fractions[key] = true;\n }\n else {\n // Otherwise, we need to subdivide the current line segment. Split it\n // into two and push the two line segments onto the stack.\n fractionStack.push(fracB, fracM, fracM, fracA);\n stack.push(b, m, m, a);\n geoStack.push(geoB, geoM, geoM, geoA);\n }\n }\n return flatCoordinates;\n}\n/**\n * Generate a great-circle arcs between two lat/lon points.\n * @param {number} lon1 Longitude 1 in degrees.\n * @param {number} lat1 Latitude 1 in degrees.\n * @param {number} lon2 Longitude 2 in degrees.\n * @param {number} lat2 Latitude 2 in degrees.\n * @param {import(\"../../proj/Projection.js\").default} projection Projection.\n * @param {number} squaredTolerance Squared tolerance.\n * @return {Array} Flat coordinates.\n */\nexport function greatCircleArc(lon1, lat1, lon2, lat2, projection, squaredTolerance) {\n var geoProjection = getProjection('EPSG:4326');\n var cosLat1 = Math.cos(toRadians(lat1));\n var sinLat1 = Math.sin(toRadians(lat1));\n var cosLat2 = Math.cos(toRadians(lat2));\n var sinLat2 = Math.sin(toRadians(lat2));\n var cosDeltaLon = Math.cos(toRadians(lon2 - lon1));\n var sinDeltaLon = Math.sin(toRadians(lon2 - lon1));\n var d = sinLat1 * sinLat2 + cosLat1 * cosLat2 * cosDeltaLon;\n return line(\n /**\n * @param {number} frac Fraction.\n * @return {import(\"../../coordinate.js\").Coordinate} Coordinate.\n */\n function (frac) {\n if (1 <= d) {\n return [lon2, lat2];\n }\n var D = frac * Math.acos(d);\n var cosD = Math.cos(D);\n var sinD = Math.sin(D);\n var y = sinDeltaLon * cosLat2;\n var x = cosLat1 * sinLat2 - sinLat1 * cosLat2 * cosDeltaLon;\n var theta = Math.atan2(y, x);\n var lat = Math.asin(sinLat1 * cosD + cosLat1 * sinD * Math.cos(theta));\n var lon = toRadians(lon1) +\n Math.atan2(Math.sin(theta) * sinD * cosLat1, cosD - sinLat1 * Math.sin(lat));\n return [toDegrees(lon), toDegrees(lat)];\n }, getTransform(geoProjection, projection), squaredTolerance);\n}\n/**\n * Generate a meridian (line at constant longitude).\n * @param {number} lon Longitude.\n * @param {number} lat1 Latitude 1.\n * @param {number} lat2 Latitude 2.\n * @param {import(\"../../proj/Projection.js\").default} projection Projection.\n * @param {number} squaredTolerance Squared tolerance.\n * @return {Array} Flat coordinates.\n */\nexport function meridian(lon, lat1, lat2, projection, squaredTolerance) {\n var epsg4326Projection = getProjection('EPSG:4326');\n return line(\n /**\n * @param {number} frac Fraction.\n * @return {import(\"../../coordinate.js\").Coordinate} Coordinate.\n */\n function (frac) {\n return [lon, lat1 + (lat2 - lat1) * frac];\n }, getTransform(epsg4326Projection, projection), squaredTolerance);\n}\n/**\n * Generate a parallel (line at constant latitude).\n * @param {number} lat Latitude.\n * @param {number} lon1 Longitude 1.\n * @param {number} lon2 Longitude 2.\n * @param {import(\"../../proj/Projection.js\").default} projection Projection.\n * @param {number} squaredTolerance Squared tolerance.\n * @return {Array} Flat coordinates.\n */\nexport function parallel(lat, lon1, lon2, projection, squaredTolerance) {\n var epsg4326Projection = getProjection('EPSG:4326');\n return line(\n /**\n * @param {number} frac Fraction.\n * @return {import(\"../../coordinate.js\").Coordinate} Coordinate.\n */\n function (frac) {\n return [lon1 + (lon2 - lon1) * frac, lat];\n }, getTransform(epsg4326Projection, projection), squaredTolerance);\n}\n//# sourceMappingURL=geodesic.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/layer/Graticule\n */\nimport Collection from '../Collection.js';\nimport EventType from '../render/EventType.js';\nimport Feature from '../Feature.js';\nimport Fill from '../style/Fill.js';\nimport GeometryLayout from '../geom/GeometryLayout.js';\nimport LineString from '../geom/LineString.js';\nimport Point from '../geom/Point.js';\nimport Stroke from '../style/Stroke.js';\nimport Style from '../style/Style.js';\nimport Text from '../style/Text.js';\nimport VectorLayer from './Vector.js';\nimport VectorSource from '../source/Vector.js';\nimport { applyTransform, approximatelyEquals, containsCoordinate, containsExtent, equals, getCenter, getHeight, getIntersection, getWidth, intersects, isEmpty, wrapX as wrapExtentX, } from '../extent.js';\nimport { assign } from '../obj.js';\nimport { clamp } from '../math.js';\nimport { degreesToStringHDMS } from '../coordinate.js';\nimport { equivalent as equivalentProjection, get as getProjection, getTransform, } from '../proj.js';\nimport { getVectorContext } from '../render.js';\nimport { meridian, parallel } from '../geom/flat/geodesic.js';\n/**\n * @type {Stroke}\n * @private\n * @const\n */\nvar DEFAULT_STROKE_STYLE = new Stroke({\n color: 'rgba(0,0,0,0.2)',\n});\n/**\n * @type {Array}\n * @private\n */\nvar INTERVALS = [\n 90,\n 45,\n 30,\n 20,\n 10,\n 5,\n 2,\n 1,\n 0.5,\n 0.2,\n 0.1,\n 0.05,\n 0.01,\n 0.005,\n 0.002,\n 0.001,\n];\n/**\n * @typedef {Object} GraticuleLabelDataType\n * @property {Point} geom\n * @property {string} text\n */\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-layer'] A CSS class name to set to the layer element.\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering. The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {number} [maxLines=100] The maximum number of meridians and\n * parallels from the center of the map. The default value of 100 means that at\n * most 200 meridians and 200 parallels will be displayed. The default value is\n * appropriate for conformal projections like Spherical Mercator. If you\n * increase the value, more lines will be drawn and the drawing performance will\n * decrease.\n * @property {Stroke} [strokeStyle='rgba(0,0,0,0.2)'] The\n * stroke style to use for drawing the graticule. If not provided, a not fully\n * opaque black will be used.\n * @property {number} [targetSize=100] The target size of the graticule cells,\n * in pixels.\n * @property {boolean} [showLabels=false] Render a label with the respective\n * latitude/longitude for each graticule line.\n * @property {function(number):string} [lonLabelFormatter] Label formatter for\n * longitudes. This function is called with the longitude as argument, and\n * should return a formatted string representing the longitude. By default,\n * labels are formatted as degrees, minutes, seconds and hemisphere.\n * @property {function(number):string} [latLabelFormatter] Label formatter for\n * latitudes. This function is called with the latitude as argument, and\n * should return a formatted string representing the latitude. By default,\n * labels are formatted as degrees, minutes, seconds and hemisphere.\n * @property {number} [lonLabelPosition=0] Longitude label position in fractions\n * (0..1) of view extent. 0 means at the bottom of the viewport, 1 means at the\n * top.\n * @property {number} [latLabelPosition=1] Latitude label position in fractions\n * (0..1) of view extent. 0 means at the left of the viewport, 1 means at the\n * right.\n * @property {Text} [lonLabelStyle] Longitude label text\n * style. If not provided, the following style will be used:\n * ```js\n * new Text({\n * font: '12px Calibri,sans-serif',\n * textBaseline: 'bottom',\n * fill: new Fill({\n * color: 'rgba(0,0,0,1)'\n * }),\n * stroke: new Stroke({\n * color: 'rgba(255,255,255,1)',\n * width: 3\n * })\n * });\n * ```\n * Note that the default's `textBaseline` configuration will not work well for\n * `lonLabelPosition` configurations that position labels close to the top of\n * the viewport.\n * @property {Text} [latLabelStyle] Latitude label text style.\n * If not provided, the following style will be used:\n * ```js\n * new Text({\n * font: '12px Calibri,sans-serif',\n * textAlign: 'end',\n * fill: new Fill({\n * color: 'rgba(0,0,0,1)'\n * }),\n * stroke: Stroke({\n * color: 'rgba(255,255,255,1)',\n * width: 3\n * })\n * });\n * ```\n * Note that the default's `textAlign` configuration will not work well for\n * `latLabelPosition` configurations that position labels close to the left of\n * the viewport.\n * @property {Array} [intervals=[90, 45, 30, 20, 10, 5, 2, 1, 0.5, 0.2, 0.1, 0.05, 0.01, 0.005, 0.002, 0.001]]\n * Intervals (in degrees) for the graticule. Example to limit graticules to 30 and 10 degrees intervals:\n * ```js\n * [30, 10]\n * ```\n * @property {boolean} [wrapX=true] Whether to repeat the graticule horizontally.\n */\n/**\n * @classdesc\n * Layer that renders a grid for a coordinate system (currently only EPSG:4326 is supported).\n * Note that the view projection must define both extent and worldExtent.\n *\n * @fires import(\"../render/Event.js\").RenderEvent\n * @api\n */\nvar Graticule = /** @class */ (function (_super) {\n __extends(Graticule, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function Graticule(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n var baseOptions = assign({\n updateWhileAnimating: true,\n updateWhileInteracting: true,\n renderBuffer: 0,\n }, options);\n delete baseOptions.maxLines;\n delete baseOptions.strokeStyle;\n delete baseOptions.targetSize;\n delete baseOptions.showLabels;\n delete baseOptions.lonLabelFormatter;\n delete baseOptions.latLabelFormatter;\n delete baseOptions.lonLabelPosition;\n delete baseOptions.latLabelPosition;\n delete baseOptions.lonLabelStyle;\n delete baseOptions.latLabelStyle;\n delete baseOptions.intervals;\n _this = _super.call(this, baseOptions) || this;\n /**\n * @type {import(\"../proj/Projection.js\").default}\n */\n _this.projection_ = null;\n /**\n * @type {number}\n * @private\n */\n _this.maxLat_ = Infinity;\n /**\n * @type {number}\n * @private\n */\n _this.maxLon_ = Infinity;\n /**\n * @type {number}\n * @private\n */\n _this.minLat_ = -Infinity;\n /**\n * @type {number}\n * @private\n */\n _this.minLon_ = -Infinity;\n /**\n * @type {number}\n * @private\n */\n _this.maxX_ = Infinity;\n /**\n * @type {number}\n * @private\n */\n _this.maxY_ = Infinity;\n /**\n * @type {number}\n * @private\n */\n _this.minX_ = -Infinity;\n /**\n * @type {number}\n * @private\n */\n _this.minY_ = -Infinity;\n /**\n * @type {number}\n * @private\n */\n _this.targetSize_ =\n options.targetSize !== undefined ? options.targetSize : 100;\n /**\n * @type {number}\n * @private\n */\n _this.maxLines_ = options.maxLines !== undefined ? options.maxLines : 100;\n /**\n * @type {Array}\n * @private\n */\n _this.meridians_ = [];\n /**\n * @type {Array}\n * @private\n */\n _this.parallels_ = [];\n /**\n * @type {Stroke}\n * @private\n */\n _this.strokeStyle_ =\n options.strokeStyle !== undefined\n ? options.strokeStyle\n : DEFAULT_STROKE_STYLE;\n /**\n * @type {import(\"../proj.js\").TransformFunction|undefined}\n * @private\n */\n _this.fromLonLatTransform_ = undefined;\n /**\n * @type {import(\"../proj.js\").TransformFunction|undefined}\n * @private\n */\n _this.toLonLatTransform_ = undefined;\n /**\n * @type {import(\"../coordinate.js\").Coordinate}\n * @private\n */\n _this.projectionCenterLonLat_ = null;\n /**\n * @type {import(\"../coordinate.js\").Coordinate}\n * @private\n */\n _this.bottomLeft_ = null;\n /**\n * @type {import(\"../coordinate.js\").Coordinate}\n * @private\n */\n _this.bottomRight_ = null;\n /**\n * @type {import(\"../coordinate.js\").Coordinate}\n * @private\n */\n _this.topLeft_ = null;\n /**\n * @type {import(\"../coordinate.js\").Coordinate}\n * @private\n */\n _this.topRight_ = null;\n /**\n * @type {Array}\n * @private\n */\n _this.meridiansLabels_ = null;\n /**\n * @type {Array}\n * @private\n */\n _this.parallelsLabels_ = null;\n if (options.showLabels) {\n /**\n * @type {null|function(number):string}\n * @private\n */\n _this.lonLabelFormatter_ =\n options.lonLabelFormatter == undefined\n ? degreesToStringHDMS.bind(_this, 'EW')\n : options.lonLabelFormatter;\n /**\n * @type {function(number):string}\n * @private\n */\n _this.latLabelFormatter_ =\n options.latLabelFormatter == undefined\n ? degreesToStringHDMS.bind(_this, 'NS')\n : options.latLabelFormatter;\n /**\n * Longitude label position in fractions (0..1) of view extent. 0 means\n * bottom, 1 means top.\n * @type {number}\n * @private\n */\n _this.lonLabelPosition_ =\n options.lonLabelPosition == undefined ? 0 : options.lonLabelPosition;\n /**\n * Latitude Label position in fractions (0..1) of view extent. 0 means left, 1\n * means right.\n * @type {number}\n * @private\n */\n _this.latLabelPosition_ =\n options.latLabelPosition == undefined ? 1 : options.latLabelPosition;\n /**\n * @type {Style}\n * @private\n */\n _this.lonLabelStyleBase_ = new Style({\n text: options.lonLabelStyle !== undefined\n ? options.lonLabelStyle.clone()\n : new Text({\n font: '12px Calibri,sans-serif',\n textBaseline: 'bottom',\n fill: new Fill({\n color: 'rgba(0,0,0,1)',\n }),\n stroke: new Stroke({\n color: 'rgba(255,255,255,1)',\n width: 3,\n }),\n }),\n });\n /**\n * @private\n * @param {import(\"../Feature\").default} feature Feature\n * @return {Style} style\n */\n _this.lonLabelStyle_ = function (feature) {\n var label = feature.get('graticule_label');\n this.lonLabelStyleBase_.getText().setText(label);\n return this.lonLabelStyleBase_;\n }.bind(_this);\n /**\n * @type {Style}\n * @private\n */\n _this.latLabelStyleBase_ = new Style({\n text: options.latLabelStyle !== undefined\n ? options.latLabelStyle.clone()\n : new Text({\n font: '12px Calibri,sans-serif',\n textAlign: 'right',\n fill: new Fill({\n color: 'rgba(0,0,0,1)',\n }),\n stroke: new Stroke({\n color: 'rgba(255,255,255,1)',\n width: 3,\n }),\n }),\n });\n /**\n * @private\n * @param {import(\"../Feature\").default} feature Feature\n * @return {Style} style\n */\n _this.latLabelStyle_ = function (feature) {\n var label = feature.get('graticule_label');\n this.latLabelStyleBase_.getText().setText(label);\n return this.latLabelStyleBase_;\n }.bind(_this);\n _this.meridiansLabels_ = [];\n _this.parallelsLabels_ = [];\n _this.addEventListener(EventType.POSTRENDER, _this.drawLabels_.bind(_this));\n }\n /**\n * @type {Array}\n * @private\n */\n _this.intervals_ =\n options.intervals !== undefined ? options.intervals : INTERVALS;\n // use a source with a custom loader for lines & text\n _this.setSource(new VectorSource({\n loader: _this.loaderFunction.bind(_this),\n strategy: _this.strategyFunction.bind(_this),\n features: new Collection(),\n overlaps: false,\n useSpatialIndex: false,\n wrapX: options.wrapX,\n }));\n /**\n * feature pool to use when updating graticule\n * @type {Array}\n * @private\n */\n _this.featurePool_ = [];\n /**\n * @type {Style}\n * @private\n */\n _this.lineStyle_ = new Style({\n stroke: _this.strokeStyle_,\n });\n /**\n * @type {?import(\"../extent.js\").Extent}\n * @private\n */\n _this.loadedExtent_ = null;\n /**\n * @type {?import(\"../extent.js\").Extent}\n */\n _this.renderedExtent_ = null;\n _this.setRenderOrder(null);\n return _this;\n }\n /**\n * Strategy function for loading features based on the view's extent and\n * resolution.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @param {number} resolution Resolution.\n * @return {Array} Extents.\n */\n Graticule.prototype.strategyFunction = function (extent, resolution) {\n // extents may be passed in different worlds, to avoid endless loop we use only one\n var realWorldExtent = extent.slice();\n if (this.projection_ && this.getSource().getWrapX()) {\n wrapExtentX(realWorldExtent, this.projection_);\n }\n if (this.loadedExtent_) {\n if (approximatelyEquals(this.loadedExtent_, realWorldExtent, resolution)) {\n // make sure result is exactly equal to previous extent\n realWorldExtent = this.loadedExtent_.slice();\n }\n else {\n // we should not keep track of loaded extents\n this.getSource().removeLoadedExtent(this.loadedExtent_);\n }\n }\n return [realWorldExtent];\n };\n /**\n * Update geometries in the source based on current view\n * @param {import(\"../extent\").Extent} extent Extent\n * @param {number} resolution Resolution\n * @param {import(\"../proj/Projection.js\").default} projection Projection\n */\n Graticule.prototype.loaderFunction = function (extent, resolution, projection) {\n this.loadedExtent_ = extent;\n var source = this.getSource();\n // only consider the intersection between our own extent & the requested one\n var layerExtent = this.getExtent() || [\n -Infinity,\n -Infinity,\n Infinity,\n Infinity,\n ];\n var renderExtent = getIntersection(layerExtent, extent);\n if (this.renderedExtent_ && equals(this.renderedExtent_, renderExtent)) {\n return;\n }\n this.renderedExtent_ = renderExtent;\n // bail out if nothing to render\n if (isEmpty(renderExtent)) {\n return;\n }\n // update projection info\n var center = getCenter(renderExtent);\n var squaredTolerance = (resolution * resolution) / 4;\n var updateProjectionInfo = !this.projection_ || !equivalentProjection(this.projection_, projection);\n if (updateProjectionInfo) {\n this.updateProjectionInfo_(projection);\n }\n this.createGraticule_(renderExtent, center, resolution, squaredTolerance);\n // first make sure we have enough features in the pool\n var featureCount = this.meridians_.length + this.parallels_.length;\n if (this.meridiansLabels_) {\n featureCount += this.meridians_.length;\n }\n if (this.parallelsLabels_) {\n featureCount += this.parallels_.length;\n }\n var feature;\n while (featureCount > this.featurePool_.length) {\n feature = new Feature();\n this.featurePool_.push(feature);\n }\n var featuresColl = source.getFeaturesCollection();\n featuresColl.clear();\n var poolIndex = 0;\n // add features for the lines & labels\n var i, l;\n for (i = 0, l = this.meridians_.length; i < l; ++i) {\n feature = this.featurePool_[poolIndex++];\n feature.setGeometry(this.meridians_[i]);\n feature.setStyle(this.lineStyle_);\n featuresColl.push(feature);\n }\n for (i = 0, l = this.parallels_.length; i < l; ++i) {\n feature = this.featurePool_[poolIndex++];\n feature.setGeometry(this.parallels_[i]);\n feature.setStyle(this.lineStyle_);\n featuresColl.push(feature);\n }\n };\n /**\n * @param {number} lon Longitude.\n * @param {number} minLat Minimal latitude.\n * @param {number} maxLat Maximal latitude.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @param {number} index Index.\n * @return {number} Index.\n * @private\n */\n Graticule.prototype.addMeridian_ = function (lon, minLat, maxLat, squaredTolerance, extent, index) {\n var lineString = this.getMeridian_(lon, minLat, maxLat, squaredTolerance, index);\n if (intersects(lineString.getExtent(), extent)) {\n if (this.meridiansLabels_) {\n var text = this.lonLabelFormatter_(lon);\n if (index in this.meridiansLabels_) {\n this.meridiansLabels_[index].text = text;\n }\n else {\n this.meridiansLabels_[index] = {\n geom: new Point([]),\n text: text,\n };\n }\n }\n this.meridians_[index++] = lineString;\n }\n return index;\n };\n /**\n * @param {number} lat Latitude.\n * @param {number} minLon Minimal longitude.\n * @param {number} maxLon Maximal longitude.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @param {number} index Index.\n * @return {number} Index.\n * @private\n */\n Graticule.prototype.addParallel_ = function (lat, minLon, maxLon, squaredTolerance, extent, index) {\n var lineString = this.getParallel_(lat, minLon, maxLon, squaredTolerance, index);\n if (intersects(lineString.getExtent(), extent)) {\n if (this.parallelsLabels_) {\n var text = this.latLabelFormatter_(lat);\n if (index in this.parallelsLabels_) {\n this.parallelsLabels_[index].text = text;\n }\n else {\n this.parallelsLabels_[index] = {\n geom: new Point([]),\n text: text,\n };\n }\n }\n this.parallels_[index++] = lineString;\n }\n return index;\n };\n /**\n * @param {import(\"../render/Event.js\").default} event Render event.\n * @private\n */\n Graticule.prototype.drawLabels_ = function (event) {\n var rotation = event.frameState.viewState.rotation;\n var extent = event.frameState.extent;\n var rotationCenter = getCenter(extent);\n var rotationExtent = extent;\n if (rotation) {\n var width = getWidth(extent);\n var height = getHeight(extent);\n var cr = Math.abs(Math.cos(rotation));\n var sr = Math.abs(Math.sin(rotation));\n var unrotatedWidth = (sr * height - cr * width) / (sr * sr - cr * cr);\n var unrotatedHeight = (sr * width - cr * height) / (sr * sr - cr * cr);\n rotationExtent = [\n rotationCenter[0] - unrotatedWidth / 2,\n rotationCenter[1] - unrotatedHeight / 2,\n rotationCenter[0] + unrotatedWidth / 2,\n rotationCenter[1] + unrotatedHeight / 2,\n ];\n }\n var startWorld = 0;\n var endWorld = 0;\n var labelsAtStart = this.latLabelPosition_ < 0.5;\n var projectionExtent = this.projection_.getExtent();\n var worldWidth = getWidth(projectionExtent);\n if (this.getSource().getWrapX() &&\n this.projection_.canWrapX() &&\n !containsExtent(projectionExtent, extent)) {\n startWorld = Math.floor((extent[0] - projectionExtent[0]) / worldWidth);\n endWorld = Math.ceil((extent[2] - projectionExtent[2]) / worldWidth);\n var inverted = Math.abs(rotation) > Math.PI / 2;\n labelsAtStart = labelsAtStart !== inverted;\n }\n var vectorContext = getVectorContext(event);\n for (var world = startWorld; world <= endWorld; ++world) {\n var poolIndex = this.meridians_.length + this.parallels_.length;\n var feature = void 0, index = void 0, l = void 0, textPoint = void 0;\n if (this.meridiansLabels_) {\n for (index = 0, l = this.meridiansLabels_.length; index < l; ++index) {\n var lineString = this.meridians_[index];\n if (!rotation && world === 0) {\n textPoint = this.getMeridianPoint_(lineString, extent, index);\n }\n else {\n var clone = lineString.clone();\n clone.translate(world * worldWidth, 0);\n clone.rotate(-rotation, rotationCenter);\n textPoint = this.getMeridianPoint_(clone, rotationExtent, index);\n textPoint.rotate(rotation, rotationCenter);\n }\n feature = this.featurePool_[poolIndex++];\n feature.setGeometry(textPoint);\n feature.set('graticule_label', this.meridiansLabels_[index].text);\n vectorContext.drawFeature(feature, this.lonLabelStyle_(feature));\n }\n }\n if (this.parallelsLabels_) {\n if ((world === startWorld && labelsAtStart) ||\n (world === endWorld && !labelsAtStart)) {\n for (index = 0, l = this.parallels_.length; index < l; ++index) {\n var lineString = this.parallels_[index];\n if (!rotation && world === 0) {\n textPoint = this.getParallelPoint_(lineString, extent, index);\n }\n else {\n var clone = lineString.clone();\n clone.translate(world * worldWidth, 0);\n clone.rotate(-rotation, rotationCenter);\n textPoint = this.getParallelPoint_(clone, rotationExtent, index);\n textPoint.rotate(rotation, rotationCenter);\n }\n feature = this.featurePool_[poolIndex++];\n feature.setGeometry(textPoint);\n feature.set('graticule_label', this.parallelsLabels_[index].text);\n vectorContext.drawFeature(feature, this.latLabelStyle_(feature));\n }\n }\n }\n }\n };\n /**\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @param {import(\"../coordinate.js\").Coordinate} center Center.\n * @param {number} resolution Resolution.\n * @param {number} squaredTolerance Squared tolerance.\n * @private\n */\n Graticule.prototype.createGraticule_ = function (extent, center, resolution, squaredTolerance) {\n var interval = this.getInterval_(resolution);\n if (interval == -1) {\n this.meridians_.length = 0;\n this.parallels_.length = 0;\n if (this.meridiansLabels_) {\n this.meridiansLabels_.length = 0;\n }\n if (this.parallelsLabels_) {\n this.parallelsLabels_.length = 0;\n }\n return;\n }\n var wrapX = false;\n var projectionExtent = this.projection_.getExtent();\n var worldWidth = getWidth(projectionExtent);\n if (this.getSource().getWrapX() &&\n this.projection_.canWrapX() &&\n !containsExtent(projectionExtent, extent)) {\n if (getWidth(extent) >= worldWidth) {\n extent[0] = projectionExtent[0];\n extent[2] = projectionExtent[2];\n }\n else {\n wrapX = true;\n }\n }\n // Constrain the center to fit into the extent available to the graticule\n var validCenterP = [\n clamp(center[0], this.minX_, this.maxX_),\n clamp(center[1], this.minY_, this.maxY_),\n ];\n // Transform the center to lon lat\n // Some projections may have a void area at the poles\n // so replace any NaN latitudes with the min or max value closest to a pole\n var centerLonLat = this.toLonLatTransform_(validCenterP);\n if (isNaN(centerLonLat[1])) {\n centerLonLat[1] =\n Math.abs(this.maxLat_) >= Math.abs(this.minLat_)\n ? this.maxLat_\n : this.minLat_;\n }\n var centerLon = clamp(centerLonLat[0], this.minLon_, this.maxLon_);\n var centerLat = clamp(centerLonLat[1], this.minLat_, this.maxLat_);\n var maxLines = this.maxLines_;\n var cnt, idx, lat, lon;\n // Limit the extent to fit into the extent available to the graticule\n var validExtentP = extent;\n if (!wrapX) {\n validExtentP = [\n clamp(extent[0], this.minX_, this.maxX_),\n clamp(extent[1], this.minY_, this.maxY_),\n clamp(extent[2], this.minX_, this.maxX_),\n clamp(extent[3], this.minY_, this.maxY_),\n ];\n }\n // Transform the extent to get the lon lat ranges for the edges of the extent\n var validExtent = applyTransform(validExtentP, this.toLonLatTransform_, undefined, 8);\n var maxLat = validExtent[3];\n var maxLon = validExtent[2];\n var minLat = validExtent[1];\n var minLon = validExtent[0];\n if (!wrapX) {\n // Check if extremities of the world extent lie inside the extent\n // (for example the pole in a polar projection)\n // and extend the extent as appropriate\n if (containsCoordinate(validExtentP, this.bottomLeft_)) {\n minLon = this.minLon_;\n minLat = this.minLat_;\n }\n if (containsCoordinate(validExtentP, this.bottomRight_)) {\n maxLon = this.maxLon_;\n minLat = this.minLat_;\n }\n if (containsCoordinate(validExtentP, this.topLeft_)) {\n minLon = this.minLon_;\n maxLat = this.maxLat_;\n }\n if (containsCoordinate(validExtentP, this.topRight_)) {\n maxLon = this.maxLon_;\n maxLat = this.maxLat_;\n }\n // The transformed center may also extend the lon lat ranges used for rendering\n maxLat = clamp(maxLat, centerLat, this.maxLat_);\n maxLon = clamp(maxLon, centerLon, this.maxLon_);\n minLat = clamp(minLat, this.minLat_, centerLat);\n minLon = clamp(minLon, this.minLon_, centerLon);\n }\n // Create meridians\n centerLon = Math.floor(centerLon / interval) * interval;\n lon = clamp(centerLon, this.minLon_, this.maxLon_);\n idx = this.addMeridian_(lon, minLat, maxLat, squaredTolerance, extent, 0);\n cnt = 0;\n if (wrapX) {\n while ((lon -= interval) >= minLon && cnt++ < maxLines) {\n idx = this.addMeridian_(lon, minLat, maxLat, squaredTolerance, extent, idx);\n }\n }\n else {\n while (lon != this.minLon_ && cnt++ < maxLines) {\n lon = Math.max(lon - interval, this.minLon_);\n idx = this.addMeridian_(lon, minLat, maxLat, squaredTolerance, extent, idx);\n }\n }\n lon = clamp(centerLon, this.minLon_, this.maxLon_);\n cnt = 0;\n if (wrapX) {\n while ((lon += interval) <= maxLon && cnt++ < maxLines) {\n idx = this.addMeridian_(lon, minLat, maxLat, squaredTolerance, extent, idx);\n }\n }\n else {\n while (lon != this.maxLon_ && cnt++ < maxLines) {\n lon = Math.min(lon + interval, this.maxLon_);\n idx = this.addMeridian_(lon, minLat, maxLat, squaredTolerance, extent, idx);\n }\n }\n this.meridians_.length = idx;\n if (this.meridiansLabels_) {\n this.meridiansLabels_.length = idx;\n }\n // Create parallels\n centerLat = Math.floor(centerLat / interval) * interval;\n lat = clamp(centerLat, this.minLat_, this.maxLat_);\n idx = this.addParallel_(lat, minLon, maxLon, squaredTolerance, extent, 0);\n cnt = 0;\n while (lat != this.minLat_ && cnt++ < maxLines) {\n lat = Math.max(lat - interval, this.minLat_);\n idx = this.addParallel_(lat, minLon, maxLon, squaredTolerance, extent, idx);\n }\n lat = clamp(centerLat, this.minLat_, this.maxLat_);\n cnt = 0;\n while (lat != this.maxLat_ && cnt++ < maxLines) {\n lat = Math.min(lat + interval, this.maxLat_);\n idx = this.addParallel_(lat, minLon, maxLon, squaredTolerance, extent, idx);\n }\n this.parallels_.length = idx;\n if (this.parallelsLabels_) {\n this.parallelsLabels_.length = idx;\n }\n };\n /**\n * @param {number} resolution Resolution.\n * @return {number} The interval in degrees.\n * @private\n */\n Graticule.prototype.getInterval_ = function (resolution) {\n var centerLon = this.projectionCenterLonLat_[0];\n var centerLat = this.projectionCenterLonLat_[1];\n var interval = -1;\n var target = Math.pow(this.targetSize_ * resolution, 2);\n /** @type {Array} **/\n var p1 = [];\n /** @type {Array} **/\n var p2 = [];\n for (var i = 0, ii = this.intervals_.length; i < ii; ++i) {\n var delta = clamp(this.intervals_[i] / 2, 0, 90);\n // Don't attempt to transform latitudes beyond the poles!\n var clampedLat = clamp(centerLat, -90 + delta, 90 - delta);\n p1[0] = centerLon - delta;\n p1[1] = clampedLat - delta;\n p2[0] = centerLon + delta;\n p2[1] = clampedLat + delta;\n this.fromLonLatTransform_(p1, p1);\n this.fromLonLatTransform_(p2, p2);\n var dist = Math.pow(p2[0] - p1[0], 2) + Math.pow(p2[1] - p1[1], 2);\n if (dist <= target) {\n break;\n }\n interval = this.intervals_[i];\n }\n return interval;\n };\n /**\n * @param {number} lon Longitude.\n * @param {number} minLat Minimal latitude.\n * @param {number} maxLat Maximal latitude.\n * @param {number} squaredTolerance Squared tolerance.\n * @return {LineString} The meridian line string.\n * @param {number} index Index.\n * @private\n */\n Graticule.prototype.getMeridian_ = function (lon, minLat, maxLat, squaredTolerance, index) {\n var flatCoordinates = meridian(lon, minLat, maxLat, this.projection_, squaredTolerance);\n var lineString = this.meridians_[index];\n if (!lineString) {\n lineString = new LineString(flatCoordinates, GeometryLayout.XY);\n this.meridians_[index] = lineString;\n }\n else {\n lineString.setFlatCoordinates(GeometryLayout.XY, flatCoordinates);\n lineString.changed();\n }\n return lineString;\n };\n /**\n * @param {LineString} lineString Meridian\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @param {number} index Index.\n * @return {Point} Meridian point.\n * @private\n */\n Graticule.prototype.getMeridianPoint_ = function (lineString, extent, index) {\n var flatCoordinates = lineString.getFlatCoordinates();\n var bottom = 1;\n var top = flatCoordinates.length - 1;\n if (flatCoordinates[bottom] > flatCoordinates[top]) {\n bottom = top;\n top = 1;\n }\n var clampedBottom = Math.max(extent[1], flatCoordinates[bottom]);\n var clampedTop = Math.min(extent[3], flatCoordinates[top]);\n var lat = clamp(extent[1] + Math.abs(extent[1] - extent[3]) * this.lonLabelPosition_, clampedBottom, clampedTop);\n var coordinate0 = flatCoordinates[bottom - 1] +\n ((flatCoordinates[top - 1] - flatCoordinates[bottom - 1]) *\n (lat - flatCoordinates[bottom])) /\n (flatCoordinates[top] - flatCoordinates[bottom]);\n var coordinate = [coordinate0, lat];\n var point = this.meridiansLabels_[index].geom;\n point.setCoordinates(coordinate);\n return point;\n };\n /**\n * Get the list of meridians. Meridians are lines of equal longitude.\n * @return {Array} The meridians.\n * @api\n */\n Graticule.prototype.getMeridians = function () {\n return this.meridians_;\n };\n /**\n * @param {number} lat Latitude.\n * @param {number} minLon Minimal longitude.\n * @param {number} maxLon Maximal longitude.\n * @param {number} squaredTolerance Squared tolerance.\n * @return {LineString} The parallel line string.\n * @param {number} index Index.\n * @private\n */\n Graticule.prototype.getParallel_ = function (lat, minLon, maxLon, squaredTolerance, index) {\n var flatCoordinates = parallel(lat, minLon, maxLon, this.projection_, squaredTolerance);\n var lineString = this.parallels_[index];\n if (!lineString) {\n lineString = new LineString(flatCoordinates, GeometryLayout.XY);\n }\n else {\n lineString.setFlatCoordinates(GeometryLayout.XY, flatCoordinates);\n lineString.changed();\n }\n return lineString;\n };\n /**\n * @param {LineString} lineString Parallels.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @param {number} index Index.\n * @return {Point} Parallel point.\n * @private\n */\n Graticule.prototype.getParallelPoint_ = function (lineString, extent, index) {\n var flatCoordinates = lineString.getFlatCoordinates();\n var left = 0;\n var right = flatCoordinates.length - 2;\n if (flatCoordinates[left] > flatCoordinates[right]) {\n left = right;\n right = 0;\n }\n var clampedLeft = Math.max(extent[0], flatCoordinates[left]);\n var clampedRight = Math.min(extent[2], flatCoordinates[right]);\n var lon = clamp(extent[0] + Math.abs(extent[0] - extent[2]) * this.latLabelPosition_, clampedLeft, clampedRight);\n var coordinate1 = flatCoordinates[left + 1] +\n ((flatCoordinates[right + 1] - flatCoordinates[left + 1]) *\n (lon - flatCoordinates[left])) /\n (flatCoordinates[right] - flatCoordinates[left]);\n var coordinate = [lon, coordinate1];\n var point = this.parallelsLabels_[index].geom;\n point.setCoordinates(coordinate);\n return point;\n };\n /**\n * Get the list of parallels. Parallels are lines of equal latitude.\n * @return {Array} The parallels.\n * @api\n */\n Graticule.prototype.getParallels = function () {\n return this.parallels_;\n };\n /**\n * @param {import(\"../proj/Projection.js\").default} projection Projection.\n * @private\n */\n Graticule.prototype.updateProjectionInfo_ = function (projection) {\n var epsg4326Projection = getProjection('EPSG:4326');\n var worldExtent = projection.getWorldExtent();\n this.maxLat_ = worldExtent[3];\n this.maxLon_ = worldExtent[2];\n this.minLat_ = worldExtent[1];\n this.minLon_ = worldExtent[0];\n // If the world extent crosses the dateline define a custom transform to\n // return longitudes which wrap the dateline\n var toLonLatTransform = getTransform(projection, epsg4326Projection);\n if (this.minLon_ < this.maxLon_) {\n this.toLonLatTransform_ = toLonLatTransform;\n }\n else {\n var split_1 = this.minLon_ + this.maxLon_ / 2;\n this.maxLon_ += 360;\n this.toLonLatTransform_ = function (coordinates, opt_output, opt_dimension) {\n var dimension = opt_dimension || 2;\n var lonLatCoordinates = toLonLatTransform(coordinates, opt_output, dimension);\n for (var i = 0, l = lonLatCoordinates.length; i < l; i += dimension) {\n if (lonLatCoordinates[i] < split_1) {\n lonLatCoordinates[i] += 360;\n }\n }\n return lonLatCoordinates;\n };\n }\n // Transform the extent to get the limits of the view projection extent\n // which should be available to the graticule\n this.fromLonLatTransform_ = getTransform(epsg4326Projection, projection);\n var worldExtentP = applyTransform([this.minLon_, this.minLat_, this.maxLon_, this.maxLat_], this.fromLonLatTransform_, undefined, 8);\n this.minX_ = worldExtentP[0];\n this.maxX_ = worldExtentP[2];\n this.minY_ = worldExtentP[1];\n this.maxY_ = worldExtentP[3];\n // Determine the view projection coordinates of the extremities of the world extent\n // as these may lie inside a view extent (for example the pole in a polar projection)\n this.bottomLeft_ = this.fromLonLatTransform_([this.minLon_, this.minLat_]);\n this.bottomRight_ = this.fromLonLatTransform_([this.maxLon_, this.minLat_]);\n this.topLeft_ = this.fromLonLatTransform_([this.minLon_, this.maxLat_]);\n this.topRight_ = this.fromLonLatTransform_([this.maxLon_, this.maxLat_]);\n // Transform the projection center to lon lat\n // Some projections may have a void area at the poles\n // so replace any NaN latitudes with the min or max value closest to a pole\n this.projectionCenterLonLat_ = this.toLonLatTransform_(getCenter(projection.getExtent()));\n if (isNaN(this.projectionCenterLonLat_[1])) {\n this.projectionCenterLonLat_[1] =\n Math.abs(this.maxLat_) >= Math.abs(this.minLat_)\n ? this.maxLat_\n : this.minLat_;\n }\n this.projection_ = projection;\n };\n return Graticule;\n}(VectorLayer));\nexport default Graticule;\n//# sourceMappingURL=Graticule.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/ImageCanvas\n */\nimport ImageBase from './ImageBase.js';\nimport ImageState from './ImageState.js';\n/**\n * A function that is called to trigger asynchronous canvas drawing. It is\n * called with a \"done\" callback that should be called when drawing is done.\n * If any error occurs during drawing, the \"done\" callback should be called with\n * that error.\n *\n * @typedef {function(function(Error=): void): void} Loader\n */\nvar ImageCanvas = /** @class */ (function (_super) {\n __extends(ImageCanvas, _super);\n /**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n * @param {HTMLCanvasElement} canvas Canvas.\n * @param {Loader=} opt_loader Optional loader function to\n * support asynchronous canvas drawing.\n */\n function ImageCanvas(extent, resolution, pixelRatio, canvas, opt_loader) {\n var _this = this;\n var state = opt_loader !== undefined ? ImageState.IDLE : ImageState.LOADED;\n _this = _super.call(this, extent, resolution, pixelRatio, state) || this;\n /**\n * Optional canvas loader function.\n * @type {?Loader}\n * @private\n */\n _this.loader_ = opt_loader !== undefined ? opt_loader : null;\n /**\n * @private\n * @type {HTMLCanvasElement}\n */\n _this.canvas_ = canvas;\n /**\n * @private\n * @type {?Error}\n */\n _this.error_ = null;\n return _this;\n }\n /**\n * Get any error associated with asynchronous rendering.\n * @return {?Error} Any error that occurred during rendering.\n */\n ImageCanvas.prototype.getError = function () {\n return this.error_;\n };\n /**\n * Handle async drawing complete.\n * @param {Error=} err Any error during drawing.\n * @private\n */\n ImageCanvas.prototype.handleLoad_ = function (err) {\n if (err) {\n this.error_ = err;\n this.state = ImageState.ERROR;\n }\n else {\n this.state = ImageState.LOADED;\n }\n this.changed();\n };\n /**\n * Load not yet loaded URI.\n */\n ImageCanvas.prototype.load = function () {\n if (this.state == ImageState.IDLE) {\n this.state = ImageState.LOADING;\n this.changed();\n this.loader_(this.handleLoad_.bind(this));\n }\n };\n /**\n * @return {HTMLCanvasElement} Canvas element.\n */\n ImageCanvas.prototype.getImage = function () {\n return this.canvas_;\n };\n return ImageCanvas;\n}(ImageBase));\nexport default ImageCanvas;\n//# sourceMappingURL=ImageCanvas.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Overlay\n */\nimport BaseObject, { getChangeEventType } from './Object.js';\nimport MapEventType from './MapEventType.js';\nimport OverlayPositioning from './OverlayPositioning.js';\nimport { CLASS_SELECTABLE } from './css.js';\nimport { containsExtent } from './extent.js';\nimport { listen, unlistenByKey } from './events.js';\nimport { outerHeight, outerWidth, removeChildren, removeNode } from './dom.js';\n/**\n * @typedef {Object} Options\n * @property {number|string} [id] Set the overlay id. The overlay id can be used\n * with the {@link module:ol/Map~Map#getOverlayById} method.\n * @property {HTMLElement} [element] The overlay element.\n * @property {Array} [offset=[0, 0]] Offsets in pixels used when positioning\n * the overlay. The first element in the\n * array is the horizontal offset. A positive value shifts the overlay right.\n * The second element in the array is the vertical offset. A positive value\n * shifts the overlay down.\n * @property {import(\"./coordinate.js\").Coordinate} [position] The overlay position\n * in map projection.\n * @property {import(\"./OverlayPositioning.js\").default} [positioning='top-left'] Defines how\n * the overlay is actually positioned with respect to its `position` property.\n * Possible values are `'bottom-left'`, `'bottom-center'`, `'bottom-right'`,\n * `'center-left'`, `'center-center'`, `'center-right'`, `'top-left'`,\n * `'top-center'`, and `'top-right'`.\n * @property {boolean} [stopEvent=true] Whether event propagation to the map\n * viewport should be stopped. If `true` the overlay is placed in the same\n * container as that of the controls (CSS class name\n * `ol-overlaycontainer-stopevent`); if `false` it is placed in the container\n * with CSS class name specified by the `className` property.\n * @property {boolean} [insertFirst=true] Whether the overlay is inserted first\n * in the overlay container, or appended. If the overlay is placed in the same\n * container as that of the controls (see the `stopEvent` option) you will\n * probably set `insertFirst` to `true` so the overlay is displayed below the\n * controls.\n * @property {PanIntoViewOptions|boolean} [autoPan=false] Pan the map when calling\n * `setPosition`, so that the overlay is entirely visible in the current viewport?\n * If `true` (deprecated), then `autoPanAnimation` and `autoPanMargin` will be\n * used to determine the panning parameters; if an object is supplied then other\n * parameters are ignored.\n * @property {PanOptions} [autoPanAnimation] The animation options used to pan\n * the overlay into view. This animation is only used when `autoPan` is enabled.\n * A `duration` and `easing` may be provided to customize the animation.\n * Deprecated and ignored if `autoPan` is supplied as an object.\n * @property {number} [autoPanMargin=20] The margin (in pixels) between the\n * overlay and the borders of the map when autopanning. Deprecated and ignored\n * if `autoPan` is supplied as an object.\n * @property {PanIntoViewOptions} [autoPanOptions] The options to use for the\n * autoPan. This is only used when `autoPan` is enabled and has preference over\n * the individual `autoPanMargin` and `autoPanOptions`.\n * @property {string} [className='ol-overlay-container ol-selectable'] CSS class\n * name.\n */\n/**\n * @typedef {Object} PanOptions\n * @property {number} [duration=1000] The duration of the animation in\n * milliseconds.\n * @property {function(number):number} [easing] The easing function to use. Can\n * be one from {@link module:ol/easing} or a custom function.\n * Default is {@link module:ol/easing~inAndOut}.\n */\n/**\n * @typedef {Object} PanIntoViewOptions\n * @property {PanOptions} [animation={}] The animation parameters for the pan\n * @property {number} [margin=20] The margin (in pixels) between the\n * overlay and the borders of the map when panning into view.\n */\n/**\n * @enum {string}\n * @protected\n */\nvar Property = {\n ELEMENT: 'element',\n MAP: 'map',\n OFFSET: 'offset',\n POSITION: 'position',\n POSITIONING: 'positioning',\n};\n/**\n * @classdesc\n * An element to be displayed over the map and attached to a single map\n * location. Like {@link module:ol/control/Control~Control}, Overlays are\n * visible widgets. Unlike Controls, they are not in a fixed position on the\n * screen, but are tied to a geographical coordinate, so panning the map will\n * move an Overlay but not a Control.\n *\n * Example:\n *\n * import Overlay from 'ol/Overlay';\n *\n * var popup = new Overlay({\n * element: document.getElementById('popup')\n * });\n * popup.setPosition(coordinate);\n * map.addOverlay(popup);\n *\n * @api\n */\nvar Overlay = /** @class */ (function (_super) {\n __extends(Overlay, _super);\n /**\n * @param {Options} options Overlay options.\n */\n function Overlay(options) {\n var _this = _super.call(this) || this;\n /**\n * @protected\n * @type {Options}\n */\n _this.options = options;\n /**\n * @protected\n * @type {number|string|undefined}\n */\n _this.id = options.id;\n /**\n * @protected\n * @type {boolean}\n */\n _this.insertFirst =\n options.insertFirst !== undefined ? options.insertFirst : true;\n /**\n * @protected\n * @type {boolean}\n */\n _this.stopEvent = options.stopEvent !== undefined ? options.stopEvent : true;\n /**\n * @protected\n * @type {HTMLElement}\n */\n _this.element = document.createElement('div');\n _this.element.className =\n options.className !== undefined\n ? options.className\n : 'ol-overlay-container ' + CLASS_SELECTABLE;\n _this.element.style.position = 'absolute';\n _this.element.style.pointerEvents = 'auto';\n var autoPan = options.autoPan;\n if (autoPan && 'object' !== typeof autoPan) {\n autoPan = {\n animation: options.autoPanAnimation,\n margin: options.autoPanMargin,\n };\n }\n /**\n * @protected\n * @type {PanIntoViewOptions|false}\n */\n _this.autoPan = /** @type {PanIntoViewOptions} */ (autoPan) || false;\n /**\n * @protected\n * @type {{transform_: string,\n * visible: boolean}}\n */\n _this.rendered = {\n transform_: '',\n visible: true,\n };\n /**\n * @protected\n * @type {?import(\"./events.js\").EventsKey}\n */\n _this.mapPostrenderListenerKey = null;\n _this.addEventListener(getChangeEventType(Property.ELEMENT), _this.handleElementChanged);\n _this.addEventListener(getChangeEventType(Property.MAP), _this.handleMapChanged);\n _this.addEventListener(getChangeEventType(Property.OFFSET), _this.handleOffsetChanged);\n _this.addEventListener(getChangeEventType(Property.POSITION), _this.handlePositionChanged);\n _this.addEventListener(getChangeEventType(Property.POSITIONING), _this.handlePositioningChanged);\n if (options.element !== undefined) {\n _this.setElement(options.element);\n }\n _this.setOffset(options.offset !== undefined ? options.offset : [0, 0]);\n _this.setPositioning(options.positioning !== undefined\n ? /** @type {import(\"./OverlayPositioning.js\").default} */ (options.positioning)\n : OverlayPositioning.TOP_LEFT);\n if (options.position !== undefined) {\n _this.setPosition(options.position);\n }\n return _this;\n }\n /**\n * Get the DOM element of this overlay.\n * @return {HTMLElement|undefined} The Element containing the overlay.\n * @observable\n * @api\n */\n Overlay.prototype.getElement = function () {\n return /** @type {HTMLElement|undefined} */ (this.get(Property.ELEMENT));\n };\n /**\n * Get the overlay identifier which is set on constructor.\n * @return {number|string|undefined} Id.\n * @api\n */\n Overlay.prototype.getId = function () {\n return this.id;\n };\n /**\n * Get the map associated with this overlay.\n * @return {import(\"./PluggableMap.js\").default|undefined} The map that the\n * overlay is part of.\n * @observable\n * @api\n */\n Overlay.prototype.getMap = function () {\n return /** @type {import(\"./PluggableMap.js\").default|undefined} */ (this.get(Property.MAP));\n };\n /**\n * Get the offset of this overlay.\n * @return {Array} The offset.\n * @observable\n * @api\n */\n Overlay.prototype.getOffset = function () {\n return /** @type {Array} */ (this.get(Property.OFFSET));\n };\n /**\n * Get the current position of this overlay.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The spatial point that the overlay is\n * anchored at.\n * @observable\n * @api\n */\n Overlay.prototype.getPosition = function () {\n return /** @type {import(\"./coordinate.js\").Coordinate|undefined} */ (this.get(Property.POSITION));\n };\n /**\n * Get the current positioning of this overlay.\n * @return {import(\"./OverlayPositioning.js\").default} How the overlay is positioned\n * relative to its point on the map.\n * @observable\n * @api\n */\n Overlay.prototype.getPositioning = function () {\n return /** @type {import(\"./OverlayPositioning.js\").default} */ (this.get(Property.POSITIONING));\n };\n /**\n * @protected\n */\n Overlay.prototype.handleElementChanged = function () {\n removeChildren(this.element);\n var element = this.getElement();\n if (element) {\n this.element.appendChild(element);\n }\n };\n /**\n * @protected\n */\n Overlay.prototype.handleMapChanged = function () {\n if (this.mapPostrenderListenerKey) {\n removeNode(this.element);\n unlistenByKey(this.mapPostrenderListenerKey);\n this.mapPostrenderListenerKey = null;\n }\n var map = this.getMap();\n if (map) {\n this.mapPostrenderListenerKey = listen(map, MapEventType.POSTRENDER, this.render, this);\n this.updatePixelPosition();\n var container = this.stopEvent\n ? map.getOverlayContainerStopEvent()\n : map.getOverlayContainer();\n if (this.insertFirst) {\n container.insertBefore(this.element, container.childNodes[0] || null);\n }\n else {\n container.appendChild(this.element);\n }\n this.performAutoPan();\n }\n };\n /**\n * @protected\n */\n Overlay.prototype.render = function () {\n this.updatePixelPosition();\n };\n /**\n * @protected\n */\n Overlay.prototype.handleOffsetChanged = function () {\n this.updatePixelPosition();\n };\n /**\n * @protected\n */\n Overlay.prototype.handlePositionChanged = function () {\n this.updatePixelPosition();\n this.performAutoPan();\n };\n /**\n * @protected\n */\n Overlay.prototype.handlePositioningChanged = function () {\n this.updatePixelPosition();\n };\n /**\n * Set the DOM element to be associated with this overlay.\n * @param {HTMLElement|undefined} element The Element containing the overlay.\n * @observable\n * @api\n */\n Overlay.prototype.setElement = function (element) {\n this.set(Property.ELEMENT, element);\n };\n /**\n * Set the map to be associated with this overlay.\n * @param {import(\"./PluggableMap.js\").default|undefined} map The map that the\n * overlay is part of.\n * @observable\n * @api\n */\n Overlay.prototype.setMap = function (map) {\n this.set(Property.MAP, map);\n };\n /**\n * Set the offset for this overlay.\n * @param {Array} offset Offset.\n * @observable\n * @api\n */\n Overlay.prototype.setOffset = function (offset) {\n this.set(Property.OFFSET, offset);\n };\n /**\n * Set the position for this overlay. If the position is `undefined` the\n * overlay is hidden.\n * @param {import(\"./coordinate.js\").Coordinate|undefined} position The spatial point that the overlay\n * is anchored at.\n * @observable\n * @api\n */\n Overlay.prototype.setPosition = function (position) {\n this.set(Property.POSITION, position);\n };\n /**\n * Pan the map so that the overlay is entirely visisble in the current viewport\n * (if necessary) using the configured autoPan parameters\n * @protected\n */\n Overlay.prototype.performAutoPan = function () {\n if (this.autoPan) {\n this.panIntoView(this.autoPan);\n }\n };\n /**\n * Pan the map so that the overlay is entirely visible in the current viewport\n * (if necessary).\n * @param {PanIntoViewOptions=} opt_panIntoViewOptions Options for the pan action\n * @api\n */\n Overlay.prototype.panIntoView = function (opt_panIntoViewOptions) {\n var map = this.getMap();\n if (!map || !map.getTargetElement() || !this.get(Property.POSITION)) {\n return;\n }\n var mapRect = this.getRect(map.getTargetElement(), map.getSize());\n var element = this.getElement();\n var overlayRect = this.getRect(element, [\n outerWidth(element),\n outerHeight(element),\n ]);\n var panIntoViewOptions = opt_panIntoViewOptions || {};\n var myMargin = panIntoViewOptions.margin === undefined ? 20 : panIntoViewOptions.margin;\n if (!containsExtent(mapRect, overlayRect)) {\n // the overlay is not completely inside the viewport, so pan the map\n var offsetLeft = overlayRect[0] - mapRect[0];\n var offsetRight = mapRect[2] - overlayRect[2];\n var offsetTop = overlayRect[1] - mapRect[1];\n var offsetBottom = mapRect[3] - overlayRect[3];\n var delta = [0, 0];\n if (offsetLeft < 0) {\n // move map to the left\n delta[0] = offsetLeft - myMargin;\n }\n else if (offsetRight < 0) {\n // move map to the right\n delta[0] = Math.abs(offsetRight) + myMargin;\n }\n if (offsetTop < 0) {\n // move map up\n delta[1] = offsetTop - myMargin;\n }\n else if (offsetBottom < 0) {\n // move map down\n delta[1] = Math.abs(offsetBottom) + myMargin;\n }\n if (delta[0] !== 0 || delta[1] !== 0) {\n var center = /** @type {import(\"./coordinate.js\").Coordinate} */ (map\n .getView()\n .getCenterInternal());\n var centerPx = map.getPixelFromCoordinateInternal(center);\n var newCenterPx = [centerPx[0] + delta[0], centerPx[1] + delta[1]];\n var panOptions = panIntoViewOptions.animation || {};\n map.getView().animateInternal({\n center: map.getCoordinateFromPixelInternal(newCenterPx),\n duration: panOptions.duration,\n easing: panOptions.easing,\n });\n }\n }\n };\n /**\n * Get the extent of an element relative to the document\n * @param {HTMLElement} element The element.\n * @param {import(\"./size.js\").Size} size The size of the element.\n * @return {import(\"./extent.js\").Extent} The extent.\n * @protected\n */\n Overlay.prototype.getRect = function (element, size) {\n var box = element.getBoundingClientRect();\n var offsetX = box.left + window.pageXOffset;\n var offsetY = box.top + window.pageYOffset;\n return [offsetX, offsetY, offsetX + size[0], offsetY + size[1]];\n };\n /**\n * Set the positioning for this overlay.\n * @param {import(\"./OverlayPositioning.js\").default} positioning how the overlay is\n * positioned relative to its point on the map.\n * @observable\n * @api\n */\n Overlay.prototype.setPositioning = function (positioning) {\n this.set(Property.POSITIONING, positioning);\n };\n /**\n * Modify the visibility of the element.\n * @param {boolean} visible Element visibility.\n * @protected\n */\n Overlay.prototype.setVisible = function (visible) {\n if (this.rendered.visible !== visible) {\n this.element.style.display = visible ? '' : 'none';\n this.rendered.visible = visible;\n }\n };\n /**\n * Update pixel position.\n * @protected\n */\n Overlay.prototype.updatePixelPosition = function () {\n var map = this.getMap();\n var position = this.getPosition();\n if (!map || !map.isRendered() || !position) {\n this.setVisible(false);\n return;\n }\n var pixel = map.getPixelFromCoordinate(position);\n var mapSize = map.getSize();\n this.updateRenderedPosition(pixel, mapSize);\n };\n /**\n * @param {import(\"./pixel.js\").Pixel} pixel The pixel location.\n * @param {import(\"./size.js\").Size|undefined} mapSize The map size.\n * @protected\n */\n Overlay.prototype.updateRenderedPosition = function (pixel, mapSize) {\n var style = this.element.style;\n var offset = this.getOffset();\n var positioning = this.getPositioning();\n this.setVisible(true);\n var x = Math.round(pixel[0] + offset[0]) + 'px';\n var y = Math.round(pixel[1] + offset[1]) + 'px';\n var posX = '0%';\n var posY = '0%';\n if (positioning == OverlayPositioning.BOTTOM_RIGHT ||\n positioning == OverlayPositioning.CENTER_RIGHT ||\n positioning == OverlayPositioning.TOP_RIGHT) {\n posX = '-100%';\n }\n else if (positioning == OverlayPositioning.BOTTOM_CENTER ||\n positioning == OverlayPositioning.CENTER_CENTER ||\n positioning == OverlayPositioning.TOP_CENTER) {\n posX = '-50%';\n }\n if (positioning == OverlayPositioning.BOTTOM_LEFT ||\n positioning == OverlayPositioning.BOTTOM_CENTER ||\n positioning == OverlayPositioning.BOTTOM_RIGHT) {\n posY = '-100%';\n }\n else if (positioning == OverlayPositioning.CENTER_LEFT ||\n positioning == OverlayPositioning.CENTER_CENTER ||\n positioning == OverlayPositioning.CENTER_RIGHT) {\n posY = '-50%';\n }\n var transform = \"translate(\" + posX + \", \" + posY + \") translate(\" + x + \", \" + y + \")\";\n if (this.rendered.transform_ != transform) {\n this.rendered.transform_ = transform;\n style.transform = transform;\n // @ts-ignore IE9\n style.msTransform = transform;\n }\n };\n /**\n * returns the options this Overlay has been created with\n * @return {Options} overlay options\n */\n Overlay.prototype.getOptions = function () {\n return this.options;\n };\n return Overlay;\n}(BaseObject));\nexport default Overlay;\n//# sourceMappingURL=Overlay.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/VectorRenderTile\n */\nimport Tile from './Tile.js';\nimport { createCanvasContext2D } from './dom.js';\nimport { getUid } from './util.js';\n/**\n * @typedef {Object} ReplayState\n * @property {boolean} dirty\n * @property {null|import(\"./render.js\").OrderFunction} renderedRenderOrder\n * @property {number} renderedTileRevision\n * @property {number} renderedResolution\n * @property {number} renderedRevision\n * @property {number} renderedZ\n * @property {number} renderedTileResolution\n * @property {number} renderedTileZ\n */\n/**\n * @type {Array}\n */\nvar canvasPool = [];\nvar VectorRenderTile = /** @class */ (function (_super) {\n __extends(VectorRenderTile, _super);\n /**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {import(\"./TileState.js\").default} state State.\n * @param {import(\"./tilecoord.js\").TileCoord} urlTileCoord Wrapped tile coordinate for source urls.\n * @param {function(VectorRenderTile):Array} getSourceTiles Function\n * to get source tiles for this tile.\n */\n function VectorRenderTile(tileCoord, state, urlTileCoord, getSourceTiles) {\n var _this = _super.call(this, tileCoord, state, { transition: 0 }) || this;\n /**\n * @private\n * @type {!Object}\n */\n _this.context_ = {};\n /**\n * Executor groups by layer uid. Entries are read/written by the renderer.\n * @type {Object>}\n */\n _this.executorGroups = {};\n /**\n * Number of loading source tiles. Read/written by the source.\n * @type {number}\n */\n _this.loadingSourceTiles = 0;\n /**\n * Tile keys of error source tiles. Read/written by the source.\n * @type {Object}\n */\n _this.errorSourceTileKeys = {};\n /**\n * @type {Object}\n */\n _this.hitDetectionImageData = {};\n /**\n * @private\n * @type {!Object}\n */\n _this.replayState_ = {};\n /**\n * @type {Array}\n */\n _this.sourceTiles = null;\n /**\n * @type {number}\n */\n _this.wantedResolution;\n /**\n * @type {!function():Array}\n */\n _this.getSourceTiles = getSourceTiles.bind(undefined, _this);\n /**\n * z of the source tiles of the last getSourceTiles call.\n * @type {number}\n */\n _this.sourceZ = -1;\n /**\n * True when all tiles for this tile's nominal resolution are available.\n * @type {boolean}\n */\n _this.hifi = false;\n /**\n * @type {import(\"./tilecoord.js\").TileCoord}\n */\n _this.wrappedTileCoord = urlTileCoord;\n return _this;\n }\n /**\n * @param {import(\"./layer/Layer.js\").default} layer Layer.\n * @return {CanvasRenderingContext2D} The rendering context.\n */\n VectorRenderTile.prototype.getContext = function (layer) {\n var key = getUid(layer);\n if (!(key in this.context_)) {\n this.context_[key] = createCanvasContext2D(1, 1, canvasPool);\n }\n return this.context_[key];\n };\n /**\n * @param {import(\"./layer/Layer.js\").default} layer Layer.\n * @return {boolean} Tile has a rendering context for the given layer.\n */\n VectorRenderTile.prototype.hasContext = function (layer) {\n return getUid(layer) in this.context_;\n };\n /**\n * Get the Canvas for this tile.\n * @param {import(\"./layer/Layer.js\").default} layer Layer.\n * @return {HTMLCanvasElement} Canvas.\n */\n VectorRenderTile.prototype.getImage = function (layer) {\n return this.hasContext(layer) ? this.getContext(layer).canvas : null;\n };\n /**\n * @param {import(\"./layer/Layer.js\").default} layer Layer.\n * @return {ReplayState} The replay state.\n */\n VectorRenderTile.prototype.getReplayState = function (layer) {\n var key = getUid(layer);\n if (!(key in this.replayState_)) {\n this.replayState_[key] = {\n dirty: false,\n renderedRenderOrder: null,\n renderedResolution: NaN,\n renderedRevision: -1,\n renderedTileResolution: NaN,\n renderedTileRevision: -1,\n renderedZ: -1,\n renderedTileZ: -1,\n };\n }\n return this.replayState_[key];\n };\n /**\n * Load the tile.\n */\n VectorRenderTile.prototype.load = function () {\n this.getSourceTiles();\n };\n /**\n * Remove from the cache due to expiry\n */\n VectorRenderTile.prototype.release = function () {\n for (var key in this.context_) {\n canvasPool.push(this.context_[key].canvas);\n }\n _super.prototype.release.call(this);\n };\n return VectorRenderTile;\n}(Tile));\nexport default VectorRenderTile;\n//# sourceMappingURL=VectorRenderTile.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/VectorTile\n */\nimport Tile from './Tile.js';\nimport TileState from './TileState.js';\nvar VectorTile = /** @class */ (function (_super) {\n __extends(VectorTile, _super);\n /**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {import(\"./TileState.js\").default} state State.\n * @param {string} src Data source url.\n * @param {import(\"./format/Feature.js\").default} format Feature format.\n * @param {import(\"./Tile.js\").LoadFunction} tileLoadFunction Tile load function.\n * @param {import(\"./Tile.js\").Options=} opt_options Tile options.\n */\n function VectorTile(tileCoord, state, src, format, tileLoadFunction, opt_options) {\n var _this = _super.call(this, tileCoord, state, opt_options) || this;\n /**\n * Extent of this tile; set by the source.\n * @type {import(\"./extent.js\").Extent}\n */\n _this.extent = null;\n /**\n * @private\n * @type {import(\"./format/Feature.js\").default}\n */\n _this.format_ = format;\n /**\n * @private\n * @type {Array}\n */\n _this.features_ = null;\n /**\n * @private\n * @type {import(\"./featureloader.js\").FeatureLoader}\n */\n _this.loader_;\n /**\n * Feature projection of this tile; set by the source.\n * @type {import(\"./proj/Projection.js\").default}\n */\n _this.projection = null;\n /**\n * Resolution of this tile; set by the source.\n * @type {number}\n */\n _this.resolution;\n /**\n * @private\n * @type {import(\"./Tile.js\").LoadFunction}\n */\n _this.tileLoadFunction_ = tileLoadFunction;\n /**\n * @private\n * @type {string}\n */\n _this.url_ = src;\n return _this;\n }\n /**\n * Get the feature format assigned for reading this tile's features.\n * @return {import(\"./format/Feature.js\").default} Feature format.\n * @api\n */\n VectorTile.prototype.getFormat = function () {\n return this.format_;\n };\n /**\n * Get the features for this tile. Geometries will be in the view projection.\n * @return {Array} Features.\n * @api\n */\n VectorTile.prototype.getFeatures = function () {\n return this.features_;\n };\n /**\n * @return {string} Key.\n */\n VectorTile.prototype.getKey = function () {\n return this.url_;\n };\n /**\n * Load not yet loaded URI.\n */\n VectorTile.prototype.load = function () {\n if (this.state == TileState.IDLE) {\n this.setState(TileState.LOADING);\n this.tileLoadFunction_(this, this.url_);\n if (this.loader_) {\n this.loader_(this.extent, this.resolution, this.projection);\n }\n }\n };\n /**\n * Handler for successful tile load.\n * @param {Array} features The loaded features.\n * @param {import(\"./proj/Projection.js\").default} dataProjection Data projection.\n */\n VectorTile.prototype.onLoad = function (features, dataProjection) {\n this.setFeatures(features);\n };\n /**\n * Handler for tile load errors.\n */\n VectorTile.prototype.onError = function () {\n this.setState(TileState.ERROR);\n };\n /**\n * Function for use in an {@link module:ol/source/VectorTile~VectorTile}'s `tileLoadFunction`.\n * Sets the features for the tile.\n * @param {Array} features Features.\n * @api\n */\n VectorTile.prototype.setFeatures = function (features) {\n this.features_ = features;\n this.setState(TileState.LOADED);\n };\n /**\n * Set the feature loader for reading this tile's features.\n * @param {import(\"./featureloader.js\").FeatureLoader} loader Feature loader.\n * @api\n */\n VectorTile.prototype.setLoader = function (loader) {\n this.loader_ = loader;\n };\n return VectorTile;\n}(Tile));\nexport default VectorTile;\n//# sourceMappingURL=VectorTile.js.map","/**\n * @module ol/interaction/Property\n */\n/**\n * @enum {string}\n */\nexport default {\n ACTIVE: 'active',\n};\n//# sourceMappingURL=Property.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/Interaction\n */\nimport BaseObject from '../Object.js';\nimport InteractionProperty from './Property.js';\nimport { easeOut, linear } from '../easing.js';\n/**\n * Object literal with config options for interactions.\n * @typedef {Object} InteractionOptions\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} handleEvent\n * Method called by the map to notify the interaction that a browser event was\n * dispatched to the map. If the function returns a falsy value, propagation of\n * the event to other interactions in the map's interactions chain will be\n * prevented (this includes functions with no explicit return). The interactions\n * are traversed in reverse order of the interactions collection of the map.\n */\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * User actions that change the state of the map. Some are similar to controls,\n * but are not associated with a DOM element.\n * For example, {@link module:ol/interaction/KeyboardZoom~KeyboardZoom} is\n * functionally the same as {@link module:ol/control/Zoom~Zoom}, but triggered\n * by a keyboard event not a button element event.\n * Although interactions do not have a DOM element, some of them do render\n * vectors and so are visible on the screen.\n * @api\n */\nvar Interaction = /** @class */ (function (_super) {\n __extends(Interaction, _super);\n /**\n * @param {InteractionOptions=} opt_options Options.\n */\n function Interaction(opt_options) {\n var _this = _super.call(this) || this;\n if (opt_options && opt_options.handleEvent) {\n _this.handleEvent = opt_options.handleEvent;\n }\n /**\n * @private\n * @type {import(\"../PluggableMap.js\").default}\n */\n _this.map_ = null;\n _this.setActive(true);\n return _this;\n }\n /**\n * Return whether the interaction is currently active.\n * @return {boolean} `true` if the interaction is active, `false` otherwise.\n * @observable\n * @api\n */\n Interaction.prototype.getActive = function () {\n return /** @type {boolean} */ (this.get(InteractionProperty.ACTIVE));\n };\n /**\n * Get the map associated with this interaction.\n * @return {import(\"../PluggableMap.js\").default} Map.\n * @api\n */\n Interaction.prototype.getMap = function () {\n return this.map_;\n };\n /**\n * Handles the {@link module:ol/MapBrowserEvent map browser event}.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n * @api\n */\n Interaction.prototype.handleEvent = function (mapBrowserEvent) {\n return true;\n };\n /**\n * Activate or deactivate the interaction.\n * @param {boolean} active Active.\n * @observable\n * @api\n */\n Interaction.prototype.setActive = function (active) {\n this.set(InteractionProperty.ACTIVE, active);\n };\n /**\n * Remove the interaction from its current map and attach it to the new map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../PluggableMap.js\").default} map Map.\n */\n Interaction.prototype.setMap = function (map) {\n this.map_ = map;\n };\n return Interaction;\n}(BaseObject));\n/**\n * @param {import(\"../View.js\").default} view View.\n * @param {import(\"../coordinate.js\").Coordinate} delta Delta.\n * @param {number=} opt_duration Duration.\n */\nexport function pan(view, delta, opt_duration) {\n var currentCenter = view.getCenterInternal();\n if (currentCenter) {\n var center = [currentCenter[0] + delta[0], currentCenter[1] + delta[1]];\n view.animateInternal({\n duration: opt_duration !== undefined ? opt_duration : 250,\n easing: linear,\n center: view.getConstrainedCenter(center),\n });\n }\n}\n/**\n * @param {import(\"../View.js\").default} view View.\n * @param {number} delta Delta from previous zoom level.\n * @param {import(\"../coordinate.js\").Coordinate=} opt_anchor Anchor coordinate in the user projection.\n * @param {number=} opt_duration Duration.\n */\nexport function zoomByDelta(view, delta, opt_anchor, opt_duration) {\n var currentZoom = view.getZoom();\n if (currentZoom === undefined) {\n return;\n }\n var newZoom = view.getConstrainedZoom(currentZoom + delta);\n var newResolution = view.getResolutionForZoom(newZoom);\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n view.animate({\n resolution: newResolution,\n anchor: opt_anchor,\n duration: opt_duration !== undefined ? opt_duration : 250,\n easing: easeOut,\n });\n}\nexport default Interaction;\n//# sourceMappingURL=Interaction.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/DoubleClickZoom\n */\nimport Interaction, { zoomByDelta } from './Interaction.js';\nimport MapBrowserEventType from '../MapBrowserEventType.js';\n/**\n * @typedef {Object} Options\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {number} [delta=1] The zoom delta applied on each double click.\n */\n/**\n * @classdesc\n * Allows the user to zoom by double-clicking on the map.\n * @api\n */\nvar DoubleClickZoom = /** @class */ (function (_super) {\n __extends(DoubleClickZoom, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function DoubleClickZoom(opt_options) {\n var _this = _super.call(this) || this;\n var options = opt_options ? opt_options : {};\n /**\n * @private\n * @type {number}\n */\n _this.delta_ = options.delta ? options.delta : 1;\n /**\n * @private\n * @type {number}\n */\n _this.duration_ = options.duration !== undefined ? options.duration : 250;\n return _this;\n }\n /**\n * Handles the {@link module:ol/MapBrowserEvent map browser event} (if it was a\n * doubleclick) and eventually zooms the map.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n */\n DoubleClickZoom.prototype.handleEvent = function (mapBrowserEvent) {\n var stopEvent = false;\n if (mapBrowserEvent.type == MapBrowserEventType.DBLCLICK) {\n var browserEvent = /** @type {MouseEvent} */ (mapBrowserEvent.originalEvent);\n var map = mapBrowserEvent.map;\n var anchor = mapBrowserEvent.coordinate;\n var delta = browserEvent.shiftKey ? -this.delta_ : this.delta_;\n var view = map.getView();\n zoomByDelta(view, delta, anchor, this.duration_);\n mapBrowserEvent.preventDefault();\n stopEvent = true;\n }\n return !stopEvent;\n };\n return DoubleClickZoom;\n}(Interaction));\nexport default DoubleClickZoom;\n//# sourceMappingURL=DoubleClickZoom.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/interaction/Pointer\n */\nimport Interaction from './Interaction.js';\nimport MapBrowserEventType from '../MapBrowserEventType.js';\nimport { getValues } from '../obj.js';\n/**\n * @typedef {Object} Options\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} [handleDownEvent]\n * Function handling \"down\" events. If the function returns `true` then a drag\n * sequence is started.\n * @property {function(import(\"../MapBrowserEvent.js\").default):void} [handleDragEvent]\n * Function handling \"drag\" events. This function is called on \"move\" events\n * during a drag sequence.\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} [handleEvent]\n * Method called by the map to notify the interaction that a browser event was\n * dispatched to the map. The function may return `false` to prevent the\n * propagation of the event to other interactions in the map's interactions\n * chain.\n * @property {function(import(\"../MapBrowserEvent.js\").default):void} [handleMoveEvent]\n * Function handling \"move\" events. This function is called on \"move\" events.\n * This functions is also called during a drag sequence, so during a drag\n * sequence both the `handleDragEvent` function and this function are called.\n * If `handleDownEvent` is defined and it returns true this function will not\n * be called during a drag sequence.\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} [handleUpEvent]\n * Function handling \"up\" events. If the function returns `false` then the\n * current drag sequence is stopped.\n * @property {function(boolean):boolean} [stopDown]\n * Should the down event be propagated to other interactions, or should be\n * stopped?\n */\n/**\n * @classdesc\n * Base class that calls user-defined functions on `down`, `move` and `up`\n * events. This class also manages \"drag sequences\".\n *\n * When the `handleDownEvent` user function returns `true` a drag sequence is\n * started. During a drag sequence the `handleDragEvent` user function is\n * called on `move` events. The drag sequence ends when the `handleUpEvent`\n * user function is called and returns `false`.\n * @api\n */\nvar PointerInteraction = /** @class */ (function (_super) {\n __extends(PointerInteraction, _super);\n /**\n * @param {Options=} opt_options Options.\n */\n function PointerInteraction(opt_options) {\n var _this = this;\n var options = opt_options ? opt_options : {};\n _this = _super.call(this, \n /** @type {import(\"./Interaction.js\").InteractionOptions} */ (options)) || this;\n if (options.handleDownEvent) {\n _this.handleDownEvent = options.handleDownEvent;\n }\n if (options.handleDragEvent) {\n _this.handleDragEvent = options.handleDragEvent;\n }\n if (options.handleMoveEvent) {\n _this.handleMoveEvent = options.handleMoveEvent;\n }\n if (options.handleUpEvent) {\n _this.handleUpEvent = options.handleUpEvent;\n }\n if (options.stopDown) {\n _this.stopDown = options.stopDown;\n }\n /**\n * @type {boolean}\n * @protected\n */\n _this.handlingDownUpSequence = false;\n /**\n * @type {!Object}\n * @private\n */\n _this.trackedPointers_ = {};\n /**\n * @type {Array}\n * @protected\n */\n _this.targetPointers = [];\n return _this;\n }\n /**\n * Returns the current number of pointers involved in the interaction,\n * e.g. `2` when two fingers are used.\n * @return {number} The number of pointers.\n * @api\n */\n PointerInteraction.prototype.getPointerCount = function () {\n return this.targetPointers.length;\n };\n /**\n * Handle pointer down events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n * @protected\n */\n PointerInteraction.prototype.handleDownEvent = function (mapBrowserEvent) {\n return false;\n };\n /**\n * Handle pointer drag events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @protected\n */\n PointerInteraction.prototype.handleDragEvent = function (mapBrowserEvent) { };\n /**\n * Handles the {@link module:ol/MapBrowserEvent map browser event} and may call into\n * other functions, if event sequences like e.g. 'drag' or 'down-up' etc. are\n * detected.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n * @api\n */\n PointerInteraction.prototype.handleEvent = function (mapBrowserEvent) {\n if (!mapBrowserEvent.originalEvent) {\n return true;\n }\n var stopEvent = false;\n this.updateTrackedPointers_(mapBrowserEvent);\n if (this.handlingDownUpSequence) {\n if (mapBrowserEvent.type == MapBrowserEventType.POINTERDRAG) {\n this.handleDragEvent(mapBrowserEvent);\n // prevent page scrolling during dragging\n mapBrowserEvent.preventDefault();\n }\n else if (mapBrowserEvent.type == MapBrowserEventType.POINTERUP) {\n var handledUp = this.handleUpEvent(mapBrowserEvent);\n this.handlingDownUpSequence =\n handledUp && this.targetPointers.length > 0;\n }\n }\n else {\n if (mapBrowserEvent.type == MapBrowserEventType.POINTERDOWN) {\n var handled = this.handleDownEvent(mapBrowserEvent);\n this.handlingDownUpSequence = handled;\n stopEvent = this.stopDown(handled);\n }\n else if (mapBrowserEvent.type == MapBrowserEventType.POINTERMOVE) {\n this.handleMoveEvent(mapBrowserEvent);\n }\n }\n return !stopEvent;\n };\n /**\n * Handle pointer move events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @protected\n */\n PointerInteraction.prototype.handleMoveEvent = function (mapBrowserEvent) { };\n /**\n * Handle pointer up events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n * @protected\n */\n PointerInteraction.prototype.handleUpEvent = function (mapBrowserEvent) {\n return false;\n };\n /**\n * This function is used to determine if \"down\" events should be propagated\n * to other interactions or should be stopped.\n * @param {boolean} handled Was the event handled by the interaction?\n * @return {boolean} Should the `down` event be stopped?\n */\n PointerInteraction.prototype.stopDown = function (handled) {\n return handled;\n };\n /**\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @private\n */\n PointerInteraction.prototype.updateTrackedPointers_ = function (mapBrowserEvent) {\n if (isPointerDraggingEvent(mapBrowserEvent)) {\n var event_1 = mapBrowserEvent.originalEvent;\n var id = event_1.pointerId.toString();\n if (mapBrowserEvent.type == MapBrowserEventType.POINTERUP) {\n delete this.trackedPointers_[id];\n }\n else if (mapBrowserEvent.type == MapBrowserEventType.POINTERDOWN) {\n this.trackedPointers_[id] = event_1;\n }\n else if (id in this.trackedPointers_) {\n // update only when there was a pointerdown event for this pointer\n this.trackedPointers_[id] = event_1;\n }\n this.targetPointers = getValues(this.trackedPointers_);\n }\n };\n return PointerInteraction;\n}(Interaction));\n/**\n * @param {Array} pointerEvents List of events.\n * @return {import(\"../pixel.js\").Pixel} Centroid pixel.\n */\nexport function centroid(pointerEvents) {\n var length = pointerEvents.length;\n var clientX = 0;\n var clientY = 0;\n for (var i = 0; i < length; i++) {\n clientX += pointerEvents[i].clientX;\n clientY += pointerEvents[i].clientY;\n }\n return [clientX / length, clientY / length];\n}\n/**\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} Whether the event is a pointerdown, pointerdrag\n * or pointerup event.\n */\nfunction isPointerDraggingEvent(mapBrowserEvent) {\n var type = mapBrowserEvent.type;\n return (type === MapBrowserEventType.POINTERDOWN ||\n type === MapBrowserEventType.POINTERDRAG ||\n type === MapBrowserEventType.POINTERUP);\n}\nexport default PointerInteraction;\n//# sourceMappingURL=Pointer.js.map","/**\n * @module ol/events/condition\n */\nimport MapBrowserEventType from '../MapBrowserEventType.js';\nimport { FALSE, TRUE } from '../functions.js';\nimport { MAC, WEBKIT } from '../has.js';\nimport { assert } from '../asserts.js';\n/**\n * A function that takes an {@link module:ol/MapBrowserEvent} and returns a\n * `{boolean}`. If the condition is met, true should be returned.\n *\n * @typedef {function(this: ?, import(\"../MapBrowserEvent.js\").default): boolean} Condition\n */\n/**\n * Creates a condition function that passes when all provided conditions pass.\n * @param {...Condition} var_args Conditions to check.\n * @return {Condition} Condition function.\n */\nexport function all(var_args) {\n var conditions = arguments;\n /**\n * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n * @return {boolean} All conditions passed.\n */\n return function (event) {\n var pass = true;\n for (var i = 0, ii = conditions.length; i < ii; ++i) {\n pass = pass && conditions[i](event);\n if (!pass) {\n break;\n }\n }\n return pass;\n };\n}\n/**\n * Return `true` if only the alt-key is pressed, `false` otherwise (e.g. when\n * additionally the shift-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the alt key is pressed.\n * @api\n */\nexport var altKeyOnly = function (mapBrowserEvent) {\n var originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n !originalEvent.shiftKey);\n};\n/**\n * Return `true` if only the alt-key and shift-key is pressed, `false` otherwise\n * (e.g. when additionally the platform-modifier-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the alt and shift keys are pressed.\n * @api\n */\nexport var altShiftKeysOnly = function (mapBrowserEvent) {\n var originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n originalEvent.shiftKey);\n};\n/**\n * Return `true` if the map has the focus. This condition requires a map target\n * element with a `tabindex` attribute, e.g. `
    `.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} event Map browser event.\n * @return {boolean} The map has the focus.\n * @api\n */\nexport var focus = function (event) {\n return event.target.getTargetElement().contains(document.activeElement);\n};\n/**\n * Return `true` if the map has the focus or no 'tabindex' attribute set.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} event Map browser event.\n * @return {boolean} The map container has the focus or no 'tabindex' attribute.\n */\nexport var focusWithTabindex = function (event) {\n return event.map.getTargetElement().hasAttribute('tabindex')\n ? focus(event)\n : true;\n};\n/**\n * Return always true.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True.\n * @api\n */\nexport var always = TRUE;\n/**\n * Return `true` if the event is a `click` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `click` event.\n * @api\n */\nexport var click = function (mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.CLICK;\n};\n/**\n * Return `true` if the event has an \"action\"-producing mouse button.\n *\n * By definition, this includes left-click on windows/linux, and left-click\n * without the ctrl key on Macs.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} The result.\n */\nexport var mouseActionButton = function (mapBrowserEvent) {\n var originalEvent = /** @type {MouseEvent} */ (mapBrowserEvent.originalEvent);\n return originalEvent.button == 0 && !(WEBKIT && MAC && originalEvent.ctrlKey);\n};\n/**\n * Return always false.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} False.\n * @api\n */\nexport var never = FALSE;\n/**\n * Return `true` if the browser event is a `pointermove` event, `false`\n * otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the browser event is a `pointermove` event.\n * @api\n */\nexport var pointerMove = function (mapBrowserEvent) {\n return mapBrowserEvent.type == 'pointermove';\n};\n/**\n * Return `true` if the event is a map `singleclick` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `singleclick` event.\n * @api\n */\nexport var singleClick = function (mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.SINGLECLICK;\n};\n/**\n * Return `true` if the event is a map `dblclick` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `dblclick` event.\n * @api\n */\nexport var doubleClick = function (mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.DBLCLICK;\n};\n/**\n * Return `true` if no modifier key (alt-, shift- or platform-modifier-key) is\n * pressed.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True only if there no modifier keys are pressed.\n * @api\n */\nexport var noModifierKeys = function (mapBrowserEvent) {\n var originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (!originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n !originalEvent.shiftKey);\n};\n/**\n * Return `true` if only the platform-modifier-key (the meta-key on Mac,\n * ctrl-key otherwise) is pressed, `false` otherwise (e.g. when additionally\n * the shift-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the platform modifier key is pressed.\n * @api\n */\nexport var platformModifierKeyOnly = function (mapBrowserEvent) {\n var originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (!originalEvent.altKey &&\n (MAC ? originalEvent.metaKey : originalEvent.ctrlKey) &&\n !originalEvent.shiftKey);\n};\n/**\n * Return `true` if only the shift-key is pressed, `false` otherwise (e.g. when\n * additionally the alt-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the shift key is pressed.\n * @api\n */\nexport var shiftKeyOnly = function (mapBrowserEvent) {\n var originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);\n return (!originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n originalEvent.shiftKey);\n};\n/**\n * Return `true` if the target element is not editable, i.e. not a ``-,\n * `