{"version":3,"file":"js/2954-ea7b69d3f1342eccf188.js","mappings":";0GAOIA,GAAkB,EAiBlBC,EAAmB,SAAUC,EAAIC,EAAWC,GAC9CF,EAAGD,iBAAiBE,EAAWC,IAAIJ,GAAkB,CAAEK,SAAS,GAClE,EAEIC,EAAc,SAAUJ,GAC1B,OAA+F,IAAxF,CAAC,OAAQ,WAAY,SAAU,QAAS,MAAO,MAAO,YAAYK,QAAQL,EAAGM,KACtF,EAEIC,EAAyB,SAAUP,GACrC,OAAmD,IAA5C,CAAC,QAAS,YAAYK,QAAQL,EAAGM,KAC1C,EASIE,EAAmB,SAAUR,EAAIS,GAAQ,OAAOT,EAAGU,aAAc,WAAaD,EAAQ,EAKtFE,EAAoB,SAAUC,GAChC,OAAiB,OAAVA,QAA4BC,IAAVD,CAC3B,EAqBIE,EAAU,SAAUC,EAAKC,GAC3B,GAAID,aAAeE,QAAUD,aAAeC,OAC1C,OAAOH,EAAQC,EAAIG,OAAQF,EAAIE,SAAWJ,EAAQC,EAAII,MAAOH,EAAIG,OAGnE,GAAIC,MAAMC,QAAQN,IAAQK,MAAMC,QAAQL,GAAM,CAC5C,GAAID,EAAIO,SAAWN,EAAIM,OAAU,OAAO,EAExC,IAAK,IAAIC,EAAI,EAAGA,EAAIR,EAAIO,OAAQC,IAC9B,IAAKT,EAAQC,EAAIQ,GAAIP,EAAIO,IACvB,OAAO,EAIX,OAAO,CACT,CAGA,OAAIC,EAAST,IAAQS,EAASR,GACrBS,OAAOC,KAAKX,GAAKY,OAAM,SAAUC,GACtC,OAAOd,EAAQC,EAAIa,GAAMZ,EAAIY,GAC/B,KAAMH,OAAOC,KAAKV,GAAKW,OAAM,SAAUC,GACrC,OAAOd,EAAQC,EAAIa,GAAMZ,EAAIY,GAC/B,IAGKb,IAAQC,CACjB,EAqBIa,EAAU,SAAU7B,GACtB,OAAIW,EAAkBX,GAAc,KAEjB,SAAfA,EAAG8B,QAA6B9B,EAE/BW,EAAkBX,EAAG+B,MAElBpB,EAAkBX,EAAGgC,YAAuC,KAAzBH,EAAQ7B,EAAGgC,YAFZhC,EAAG+B,IAG/C,EAKIE,EAAU,SAAUC,EAAMC,EAAQC,GAGpC,QAFa,IAARA,IAAiBA,OAAMvB,IAEvBqB,IAASC,EAAU,OAAOC,EAE/B,IAAIxB,EAAQuB,EAaZ,OAZAD,EAAKG,MAAM,KAAKV,OAAM,SAAUW,GAC9B,OAAIA,KAAQ1B,GACVA,EAAQA,EAAM0B,IAEP,IAGT1B,EAAQwB,GAED,EACT,IAEOxB,CACT,EAmCI2B,EAAW,SAAUC,EAAIC,EAAMC,EAAWC,GAK5C,YAJc,IAATF,IAAkBA,EAAO,QACX,IAAdC,IAAuBA,GAAY,QACzB,IAAVC,IAAmBA,EAAQ,CAAEC,WAAW,IAEhC,IAATH,EACKD,EAKF,WAEL,IADA,IAAIK,EAAO,GAAIC,EAAMC,UAAUzB,OACvBwB,KAAQD,EAAMC,GAAQC,UAAWD,GAEzC,IAAIE,EAAQ,WACVC,EAAU,KAELP,GAAcC,EAAMC,WAAaJ,EAAGU,WAAM,EAAQL,EACzD,EAEIM,EAAUT,IAAcO,EAC5BG,aAAaH,GACbA,EAAUI,WAAWL,EAAOP,GAExBU,GAAWX,EAAGU,WAAM,EAAQL,EAClC,EAjBA,IAAII,CAkBN,EAKIK,EAAa,SAAUC,EAAMC,GAC/B,OAAKA,EAIAD,EAIgB,kBAAVC,EACDA,EAAQ,IAAMD,EAGjBE,EAAO,CAAC,EAAGD,EAAOE,EAAeH,IAP/BC,EAJAD,CAYX,EAKIG,EAAiB,SAAUF,GAE7B,OAAKA,EAIDhC,EAASgC,GAEJ/B,OAAOC,KAAK8B,GAAOG,QAAO,SAAUC,EAAMC,GAC/C,IAAIC,EAAS,GAeb,OAZEA,GADkB,IAAhBN,EAAMK,GACC,GACAzC,MAAMC,QAAQmC,EAAMK,IACpBL,EAAMK,GAEN,CAACL,EAAMK,KAIE,IAAhBL,EAAMK,KACRD,EAAKC,GAAQC,GAGRF,CACT,GAAG,CAAC,GAGe,kBAAVJ,GACTO,EAAK,+CACE,CAAC,GAGHP,EAAMnB,MAAM,KAAKsB,QAAO,SAAUC,EAAML,GAC7C,IAAIS,EAnGQ,SAAUT,GACxB,IAAIO,EAAS,GACTrD,EAAO8C,EAAKlB,MAAM,KAAK,GAM3B,OAJKkB,EAAKlD,QAAQ,OAChByD,EAASP,EAAKlB,MAAM,KAAK4B,MAAM,GAAGC,KAAK,KAAK7B,MAAM,MAG7C,CAAE5B,KAAMA,EAAMqD,OAAQA,EAC/B,CA0FqBK,CAAUZ,GAC3B,OAAKS,EAAWvD,MAIhBmD,EAAKI,EAAWvD,MAAQuD,EAAWF,OAC5BF,GAJEA,CAKX,GAAG,CAAC,GAtCK,CAAC,CAuCZ,EAKIG,EAAO,SAAUK,GACnBC,EAAQN,KAAM,kBAAoBK,EACpC,EAKIE,EAAc,SAAUF,GAAW,OAAO,IAAIG,MAAO,kBAAoBH,EAAW,EAKpF5C,EAAW,SAAUgD,GAAO,OAAe,OAARA,GAAgBA,GAAsB,kBAARA,IAAsBpD,MAAMC,QAAQmD,EAAM,EAK3GC,EAAa,SAAUC,GAAQ,MAAuB,oBAATA,CAAqB,EAKlEC,EAAW,SAAU3E,EAAI4E,GAC3B,OAAI5E,EAAG6E,UACE7E,EAAG6E,UAAUC,SAASF,KAGtB5E,EAAG4E,UAAUG,MAAM,IAAI9D,OAAQ,UAAY2D,EAAY,WAClE,EAkCII,EAAc,SAAUhF,EAAI4E,EAAWK,GACzC,GAAKjF,GAAO4E,EAAZ,CAEA,IAAIxD,MAAMC,QAAQuD,GAKlB,OAAIK,EArCS,SAAUjF,EAAI4E,GACvB5E,EAAG6E,UACL7E,EAAG6E,UAAUK,IAAIN,GAIdD,EAAS3E,EAAI4E,KAChB5E,EAAG4E,WAAa,IAAMA,EAE1B,CA6BWO,CAASnF,EAAI4E,QAxBN,SAAU5E,EAAI4E,GAC9B,GAAI5E,EAAG6E,UACL7E,EAAG6E,UAAUO,OAAOR,QAItB,GAAID,EAAS3E,EAAI4E,GAAY,CAC3B,IAAIS,EAAM,IAAIpE,OAAQ,UAAY2D,EAAY,WAC9C5E,EAAG4E,UAAY5E,EAAG4E,UAAUU,QAAQD,EAAK,IAC3C,CACF,CAiBEE,CAAYvF,EAAI4E,GARdA,EAAUY,SAAQ,SAAUC,GAAQ,OAAOT,EAAYhF,EAAIyF,EAAMR,EAAS,GAH3C,CAYnC,EAKIS,EAAU,SAAUC,GACtB,GAAIlB,EAAWrD,MAAMwE,MACnB,OAAOxE,MAAMwE,KAAKD,GAKpB,IAFA,IAAIE,EAAQ,GACRvE,EAASqE,EAAUrE,OACdC,EAAI,EAAGA,EAAID,EAAQC,IAC1BsE,EAAMC,KAAKH,EAAUpE,IAGvB,OAAOsE,CACT,EAKIpC,EAAS,SAAUtB,GAErB,IADA,IAAI4D,EAAS,GAAIjD,EAAMC,UAAUzB,OAAS,EAClCwB,KAAQ,GAAIiD,EAAQjD,GAAQC,UAAWD,EAAM,GAGrD,GAAI2B,EAAWhD,OAAOgC,QACpB,OAAOhC,OAAOgC,OAAOP,MAAMzB,OAAQ,CAAEU,GAAS6D,OAAQD,IAIxD,GAAc,MAAV5D,EACF,MAAM,IAAI8D,UAAU,8CAItB,IAAIC,EAAKzE,OAAOU,GAWhB,OATA4D,EAAOP,SAAQ,SAAUW,GAEZ,MAAPA,GACF1E,OAAOC,KAAKyE,GAAKX,SAAQ,SAAU5D,GACjCsE,EAAGtE,GAAOuE,EAAIvE,EAChB,GAEJ,IAEOsE,CACT,EAEIE,EAAK,EACLC,EAAa,OAsBbC,EAAO,SAAUX,EAAWY,GAE9B,IADA,IAAIV,EAAQzE,MAAMC,QAAQsE,GAAaA,EAAYD,EAAQC,GAClDpE,EAAI,EAAGA,EAAIsE,EAAMvE,OAAQC,IAChC,GAAIgF,EAAUV,EAAMtE,IAClB,OAAOsE,EAAMtE,EAKnB,EAEIiF,EAAqB,SAAUC,GACjC,IAAKA,EACH,OAAO,EAGT,IAAIC,EAAMD,EAAME,iBAAiBD,IAEjC,MAAO,6CAA6CE,KAAKF,EAC3D,EA+BIG,EAAe,SAAUC,GAC3B,GAAqB,kBAAVA,EAAsB,OAAOA,EAExC,GAAqB,kBAAVA,EAAsB,OAAOC,SAASD,GAEjD,IAAIE,EAAM,CAAC,EACX,IAAK,IAAIC,KAAWH,EAClBE,EAAIC,GAAWF,SAASD,EAAMG,IAGhC,OAAOD,CACT,EAEIE,EAAQ,SAAU/E,EAAQjB,GAC5B,OAAOM,EAASW,IAAWX,EAASN,IAIpCO,OAAOC,KAAKR,GAAQsE,SAAQ,SAAU5D,GACpC,IAAI4C,EAAK2C,EAET,GAAI3F,EAASN,EAAOU,IAMlB,OALMO,EAAOP,IACX6B,EAAOtB,IAAUqC,EAAM,CAAC,GAAO5C,GAAO,CAAC,EAAG4C,SAG5C0C,EAAM/E,EAAOP,GAAMV,EAAOU,IAI5B6B,EAAOtB,IAAUgF,EAAQ,CAAC,GAASvF,GAAOV,EAAOU,GAAMuF,GACzD,IAEOhF,GAlBEA,CAmBX,EAsEIiF,EAAW,WACbC,KAAKC,MAAQ,EACf,EAEAF,EAASG,UAA4B,oBAAXC,OAAwBA,OAAOC,SAAW,cAAgB,WAChF,IAAIC,EAASL,KAEXM,EAAQ,EACZ,MAAO,CACLC,KAAM,WACJ,MAAO,CAAEhH,MAAO8G,EAAOJ,MAAMK,KAAUE,KAAMF,EAAQD,EAAOJ,MAAMhG,OACpE,EAEJ,EAKA8F,EAASG,UAAUrC,IAAM,SAAc4C,GACnC,IAAIC,EAGFhF,UAAUzB,OAAS,IAKrBwG,EAAQ,CACNE,MAAOjF,UAAU,GACjBkF,IAAKlF,UAAU,GACfQ,KAAMR,UAAU,GAChBmF,MAAQvH,EAAkBoC,UAAU,IAAqB,KAAfA,UAAU,GACpDoF,WAAY,QAIfJ,EAAMV,KAAKC,OAAOxB,KAAK5C,MACtB6E,EAAKV,KAAKe,gBAAgBN,GAE9B,EAKAV,EAASG,UAAUa,gBAAkB,SAA0BN,GAC7D,OAAI1G,MAAMC,QAAQyG,GACTA,EAAMd,KAAI,SAAUqB,GAGzB,OAFAA,EAAEH,MAASvH,EAAkB0H,EAAEH,OAAmB,KAAVG,EAAEH,MAEnCG,CACT,KAGFP,EAAMI,MAASvH,EAAkBmH,EAAMI,OAAuB,KAAdJ,EAAMI,MAE/C,CAACJ,GACV,EAKAV,EAASG,UAAUY,WAAa,WAC9Bd,KAAKC,MAAM9B,SAAQ,SAAUjE,GAC3BA,EAAE0G,IAAMxD,EAAWlD,EAAE4G,YAAc5G,EAAE4G,aAAe5G,EAAE0G,GACxD,GACF,EAKAb,EAASG,UAAUe,OAAS,SAAiBlC,EAAI0B,GAC/C,IAAIrC,EAAOa,EAAKe,KAAKC,OAAO,SAAU/F,GAAK,OAAOA,EAAE6E,KAAOA,CAAI,IAC/D,GAAKX,EAAL,CAIA,IAAI8C,EAAMlB,KAAKC,MAAMjH,QAAQoF,GAC7B4B,KAAKC,MAAMkB,OAAOD,EAAK,GACvB9C,EAAKyC,MAAQJ,EAAMI,MACnBb,KAAKC,MAAMxB,KAAKL,EALhB,CAMF,EAKA2B,EAASG,UAAUkB,IAAM,SAAcP,GACrC,OAAIvH,EAAkBuH,GACbb,KAAKC,MAAMN,KAAI,SAAUqB,GAAK,OAAOA,EAAEJ,GAAK,IAG9CZ,KAAKC,MAAMoB,QAAO,SAAUL,GAAK,OAAOA,EAAEH,QAAUA,CAAO,IAAGlB,KAAI,SAAUqB,GAAK,OAAOA,EAAEJ,GAAK,GACxG,EAKAb,EAASG,UAAUoB,IAAM,SAAcT,GACrC,OAAIvH,EAAkBuH,KACXb,KAAKC,MAAMhG,SAGb+F,KAAKC,MAAMoB,QAAO,SAAUL,GAAK,OAAOA,EAAEH,QAAUA,CAAO,IAAG5G,MACzE,EAKA8F,EAASG,UAAUqB,MAAQ,SAAgBV,GAGrCvH,EAAkBuH,KACpBA,EAAQ,MAGV,IAAK,IAAI3G,EAAI,EAAGA,EAAI8F,KAAKC,MAAMhG,SAAUC,EAN1B8F,KAOFC,MAAM/F,GAAG2G,QAAUA,IAPjBb,KAQJC,MAAMkB,OAAOjH,EAAG,KACrBA,EAGR,EAKA6F,EAASG,UAAUsB,QAAU,SAAkBb,EAAOE,EAAOlB,GAG3D,QAFe,IAARA,IAAiBA,GAAM,GAE1BrG,EAAkBqH,GAAQ,CAC5B,IAAIc,EAAa,CAAC,EASlB,OARAzB,KAAKC,MAAM9B,SAAQ,SAAU6C,GACrBS,EAAWT,EAAEL,SACjBc,EAAWT,EAAEL,OAAS,IAGxBc,EAAWT,EAAEL,OAAOlC,KAAKkB,EAAMqB,EAAEJ,IAAMI,EACzC,IAEOS,CACT,CAEA,IAAIC,EAAWpI,EAAkBuH,GAASc,OAAOhB,GAAUE,EAAQ,IAAMF,EACrED,EAAMV,KAAK4B,sBAAsBF,GAC/BG,EAAYnB,EAAImB,UAChBC,EAAQpB,EAAIoB,MAEdC,EAAY/B,KAAKC,MAAM3D,QAAO,SAAUC,EAAMC,GAShD,OARIqF,EAAUrF,IACZD,EAAKyF,QAAQvD,KAAKkB,EAAMnD,EAAKoE,IAAMpE,GAGjCsF,EAAMtF,IACRD,EAAK0F,IAAIxD,KAAKkB,EAAMnD,EAAKoE,IAAMpE,GAG1BD,CACT,GAAG,CAAEyF,QAAS,GAAIC,IAAK,KAEvB,OAAOF,EAAUC,QAAQ/H,OAAS8H,EAAUC,QAAUD,EAAUE,GAClE,EAKAlC,EAASG,UAAUgC,MAAQ,WACzB,OAAOlC,KAAKC,MAAMhG,MACpB,EAKA8F,EAASG,UAAUiC,UAAY,SAAoBpD,GACjD,IAAI0B,EAAQxB,EAAKe,KAAKC,OAAO,SAAU/F,GAAK,OAAOA,EAAE6E,KAAOA,CAAI,IAEhE,OAAO0B,EAAQA,EAAMG,SAAMpH,CAC7B,EAKAuG,EAASG,UAAUkC,MAAQ,SAAgBzB,EAAOE,QAC/B,IAAVA,IAAmBA,EAAQ,MAElC,IAAIa,EAAWpI,EAAkBuH,GAASF,EAASE,EAAQ,IAAMF,EAC7DjD,EAAQsC,KAAKqC,OAAOX,GAExB,OAAOhE,GAASA,EAAMkD,GACxB,EAKAb,EAASG,UAAUoC,UAAY,SAAoB3B,EAAOE,GACxD,IAAI0B,EAASvC,KAAKwB,QAAQb,EAAOE,GAAO,GAExC,OAAQ0B,EAAOtI,QAAUsI,EAAO,GAAGrG,WAAS1C,CAC9C,EAKAuG,EAASG,UAAUsC,IAAM,SAAc7B,EAAOE,GAG5C,YAFiB,IAAVA,IAAmBA,EAAQ,QAEzBb,KAAKoC,MAAMzB,EAAOE,EAC7B,EAKAd,EAASG,UAAUuC,YAAc,SAAsBrJ,EAAM8C,EAAM2E,QAChD,IAAVA,IAAmBA,EAAQ,MAElC,IAAIJ,EAAQT,KAAKwB,QAAQpI,EAAMyH,GAAO,GAAOQ,QAAO,SAAUL,GAAK,OAAOA,EAAE9E,OAASA,CAAM,IAAG,GAE9F,OAAQuE,GAASA,EAAMG,UAAQpH,CACjC,EAKAuG,EAASG,UAAUwC,SAAW,SAAmBtJ,EAAM8C,EAAM2E,QAC3C,IAAT3E,IAAkBA,EAAO,iBACf,IAAV2E,IAAmBA,EAAQ,MAElC,IAAIJ,EAAQT,KAAKwB,QAAQpI,EAAMyH,GAAO,GAAOQ,QAAO,SAAUL,GAAK,OAAOA,EAAE9E,OAASA,CAAM,IAAG,GAE9F,OAAQuE,GAASA,EAAMG,UAAQpH,CACjC,EAKAuG,EAASG,UAAUyC,WAAa,SAAqB5D,GAGnD,GAAIhF,MAAMC,QAAQ+E,GAEhBiB,KAAKC,MAAQD,KAAKC,MAAMoB,QAAO,SAAUnH,GAAK,OAA6B,IAAtB6E,EAAG/F,QAAQkB,EAAE6E,GAAY,SAIhF,IAAK,IAAI7E,EAAI,EAAGA,EAAI8F,KAAKC,MAAMhG,SAAUC,EAR1B8F,KASFC,MAAM/F,GAAG6E,KAAOA,IATdiB,KAUJC,MAAMkB,OAAOjH,EAAG,KACrBA,EAGR,EAKA6F,EAASG,UAAUnC,OAAS,SAAiB4C,EAAOE,GAGlD,IAAIvH,EAAkBqH,GAQtB,IAJA,IAAIe,EAAWpI,EAAkBuH,GAASc,OAAOhB,GAAUE,EAAQ,IAAMF,EAEnEkB,EADI7B,KAAK4B,sBAAsBF,GACfG,UAEb3H,EAAI,EAAGA,EAAI8F,KAAKC,MAAMhG,SAAUC,EACnC2H,EAXS7B,KAWQC,MAAM/F,MAXd8F,KAYJC,MAAMkB,OAAOjH,EAAG,KACrBA,EAGR,EAEA6F,EAASG,UAAU0B,sBAAwB,SAAgCF,GACzE,IAAIkB,EAAc,WAAc,OAAO,CAAM,EACzCC,EAAe,WAAc,OAAO,CAAM,EAC1CC,EAAc,WAAc,OAAO,CAAM,EAEzCpC,EAAMgB,EAAShE,MAAM,uCACnBmD,EAAQH,EAAI,GACZtH,EAAOsH,EAAI,GACXxE,EAAOwE,EAAI,GAOjB,GANIxE,IACFA,EAAOA,EAAK+B,QAAQ,IAAK,IACzB2E,EAAc,SAAUxE,GAAQ,OAAOA,EAAKlC,OAASA,CAAM,GAIzDwF,EAASqB,WAAW,KACtB,MAAO,CACLlB,UAAW,SAAUzD,GAAQ,OAAOwE,EAAYxE,IAAS,SAAWA,GAAQ,OAAOsD,EAAS9E,MAAM,GAAGmG,WAAW3E,EAAKW,GAAM,CAAG,EAC9H+C,MAAO,WAAc,OAAO,CAAO,GAInCxI,EAAkBuH,GAEpBgC,EAAe,SAAUzE,GAAQ,OAAO9E,EAAkB8E,EAAKyC,MAAQ,GAEvEA,EAAQA,EAAM5C,QAAQ,IAAK,IAC3B4E,EAAe,SAAUzE,GAAQ,OAAOA,EAAKyC,QAAUA,CAAO,GAG1DvH,EAAkBF,KACtB0J,EAAc,SAAU1E,GAAQ,OAAOA,EAAKuC,QAAUvH,CAAM,GAa9D,MAAO,CACLyI,UAVc,SAAUzD,GACxB,OAAO0E,EAAY1E,IAASwE,EAAYxE,IAASyE,EAAazE,EAChE,EASE0D,MANU,SAAU1D,GACpB,OAAOwE,EAAYxE,IAASA,EAAKuC,QAAWE,EAAQ,IAAMzH,CAC5D,EAMF,EAEA2G,EAASG,UAAUmC,OAAS,SAAiBX,GAC3C,IAAIpI,EAAkBoI,GAAtB,CAIA,IAAIhB,EAAMV,KAAK4B,sBAAsBF,GAC/BG,EAAYnB,EAAImB,UAChBC,EAAQpB,EAAIoB,MAElB,OAAO9B,KAAKC,MAAM3D,QAAO,SAAUC,EAAM6B,EAAM8C,EAAK8B,GAClD,IAAIC,EAAS/B,IAAQ8B,EAAI/I,OAAS,EAClC,OAAIsC,EAAKyF,QACAiB,EAAS1G,EAAKyF,QAAUzF,GAG7BsF,EAAUzD,KACZ7B,EAAKyF,QAAU5D,GAGb0D,EAAM1D,KACR7B,EAAK0F,IAAM7D,GAIR6E,EAIE1G,EAAKyF,SAAWzF,EAAK0F,IAHnB1F,EAIX,GAAG,CAAC,EA1BJ,CA2BF,EAIA,IAAI2G,EAAS,KAETC,EAAa,SAAqBC,QAChB,IAAfA,IAAwBA,EAAa,CAAC,GAE3CpD,KAAKqD,UAAY,CAAC,EAClBrD,KAAKH,MAAMuD,EACb,EAEIE,EAAqB,CAAEC,OAAQ,CAAEC,cAAc,IAEnDF,EAAmBC,OAAOE,IAAM,WAC9B,OAAOP,CACT,EAEAI,EAAmBC,OAAOG,IAAM,SAAUnK,GACxC2J,EAAS3J,GAAS,IACpB,EAEA4J,EAAWjD,UAAUyD,UAAY,SAAoBJ,GACnD,QAASvD,KAAKqD,UAAUE,EAC1B,EAEAJ,EAAWjD,UAAU0D,cAAgB,SAAwBL,EAAQM,GAC9D7D,KAAKqD,UAAUE,KAClBvD,KAAKqD,UAAUE,GAAU,CAAC,GAG5BvD,KAAKqD,UAAUE,GAAQO,WAAaD,CACtC,EAEAV,EAAWjD,UAAU6D,cAAgB,SAAwBR,GAC3D,OAAKvD,KAAKqD,UAAUE,IAAYvD,KAAKqD,UAAUE,GAAQO,WAIhD9D,KAAKqD,UAAUE,GAAQO,WAHrB,IAIX,EAEAX,EAAWjD,UAAU8D,WAAa,SAAqBT,EAAQhJ,EAAK0J,GAClE,IAAIlH,EAAU,KAOd,OAHEA,EAHGiD,KAAKkE,WAAWX,EAAQhJ,GAGjByF,KAAKqD,UAAUE,GAAQY,SAAS5J,GAFhCyF,KAAKoE,mBAAmBb,GAK7BnG,EAAWL,GAAWA,EAAQlB,WAAM,EAAQoI,GAAQlH,CAC7D,EAKAoG,EAAWjD,UAAUmE,gBAAkB,SAA0Bd,EAAQ5C,EAAOpG,EAAK0J,GACnF,IAAKjE,KAAK2D,UAAUJ,GAClB,OAAOvD,KAAKgE,WAAWT,EAAQhJ,EAAK0J,GAGtC,IAAIK,EAAOtE,KAAKqD,UAAUE,GAAQgB,QAAUvE,KAAKqD,UAAUE,GAAQgB,OAAO5D,GAC1E,IAAK2D,IAASA,EAAK/J,GACjB,OAAOyF,KAAKgE,WAAWT,EAAQhJ,EAAK0J,GAGtC,IAAIlH,EAAUuH,EAAK/J,GACnB,OAAO6C,EAAWL,GAAWA,EAAQlB,WAAM,EAAQoI,GAAQlH,CAC7D,EAEAoG,EAAWjD,UAAUkE,mBAAqB,SAA6Bb,GACrE,OAAIvD,KAAKkE,WAAWX,EAAQ,YACnBvD,KAAKqD,UAAUE,GAAQY,SAASK,SAGlCxE,KAAKqD,UAAUoB,GAAGN,SAASK,QACpC,EAEArB,EAAWjD,UAAU7G,aAAe,SAAuBkK,EAAQhJ,EAAKmK,GAGtE,YAFoB,IAAbA,IAAsBA,EAAW,IAEnC1E,KAAK2E,aAAapB,EAAQhJ,GAIxByF,KAAKqD,UAAUE,GAAQqB,WAAWrK,GAHhCmK,CAIX,EAEAvB,EAAWjD,UAAUgE,WAAa,SAAqBX,EAAQhJ,GAC7D,SACEyF,KAAK2D,UAAUJ,IACTvD,KAAKqD,UAAUE,GAAQY,UACvBnE,KAAKqD,UAAUE,GAAQY,SAAS5J,GAE1C,EAEA4I,EAAWjD,UAAUyE,aAAe,SAAuBpB,EAAQhJ,GACjE,SACEyF,KAAK2D,UAAUJ,IACTvD,KAAKqD,UAAUE,GAAQqB,YACvB5E,KAAKqD,UAAUE,GAAQqB,WAAWrK,GAE5C,EAEA4I,EAAWjD,UAAUL,MAAQ,SAAkBuD,GAC7CvD,EAAMG,KAAKqD,UAAWD,EACxB,EAEAD,EAAWjD,UAAU2E,WAAa,SAAqBtB,EAAQhJ,EAAKwC,GAC5DiD,KAAK2D,UAAUJ,KACnBvD,KAAKqD,UAAUE,GAAU,CACvBY,SAAU,CAAC,EACXS,WAAY,CAAC,IAIjB5E,KAAKqD,UAAUE,GAAQY,SAAS5J,GAAOwC,CACzC,EAEAoG,EAAWjD,UAAU4E,aAAe,SAAuBvB,EAAQhJ,EAAKwK,GAChE/E,KAAK2D,UAAUJ,KACnBvD,KAAKqD,UAAUE,GAAU,CACvBY,SAAU,CAAC,EACXS,WAAY,CAAC,IAIjB5E,KAAKqD,UAAUE,GAAQqB,WAAWrK,GAAOwK,CAC3C,EAEA3K,OAAO4K,iBAAkB7B,EAAWjD,UAAWoD,GAI/C,IAAI2B,EAAiB,SAAU1L,GAC7B,OAAIY,EAASZ,GACJa,OAAOC,KAAKd,GAAO+C,QAAO,SAAUC,EAAMhC,GAG/C,OAFAgC,EAAKhC,GAAO0K,EAAe1L,EAAMgB,IAE1BgC,CACT,GAAG,CAAC,GAGFa,EAAW7D,GACNA,EAAM,MAAO,CAAC,MAAO,MAAO,QAG9BA,CACT,EAeI2L,EAAiB,SAAyBC,EAAMC,GAClDpF,KAAKmF,KAAOA,EACZnF,KAAKoF,QAAUA,CACjB,EAEIC,EAAuB,CAAE9B,OAAQ,CAAEC,cAAc,IAErD6B,EAAqB9B,OAAOE,IAAM,WAChC,OAAOzD,KAAKmF,KAAK5B,MACnB,EAEA8B,EAAqB9B,OAAOG,IAAM,SAAUnK,GAC1CmD,EAAK,2FACP,EAEAwI,EAAehF,UAAU6D,cAAgB,SAAwBR,GAC/D,OAAOvD,KAAKmF,KAAKG,kBAAkB/B,GAAUvD,KAAKuD,OACpD,EAEA2B,EAAehF,UAAU0D,cAAgB,SAAwBL,EAAQhK,GACvEyG,KAAKmF,KAAKI,kBAAkBhC,GAAUvD,KAAKuD,OAAQhK,EACrD,EAEA2L,EAAehF,UAAU8D,WAAa,SAAqBT,EAAQhJ,EAAK0J,GACtE,IAAIpJ,EAAQmF,KAAY,QAAI,aAAezF,EAC3C,OAAKyF,KAAKmF,KAAKK,GAAG3K,GAIXmF,KAAKmF,KAAKM,EAAE5K,EAAM0I,EAAQU,GAHxBjE,KAAKmF,KAAKM,EAAIzF,KAAY,QAAI,qBAAuBuD,EAAQU,EAIxE,EAEAiB,EAAehF,UAAU7G,aAAe,SAAuBkK,EAAQhJ,EAAKmK,QACtD,IAAbA,IAAsBA,EAAW,IAExC,IAAI7J,EAAQmF,KAAY,QAAI,eAAiBzF,EAC7C,OAAKyF,KAAKmF,KAAKK,GAAG3K,GAIXmF,KAAKmF,KAAKM,EAAE5K,EAAM0I,GAHhBmB,CAIX,EAEAQ,EAAehF,UAAUmE,gBAAkB,SAA0Bd,EAAQ5C,EAAOpG,EAAK0J,GACvF,IAAIpJ,EAAQmF,KAAY,QAAI,WAAaW,EAAQ,IAAMpG,EACvD,OAAIyF,KAAKmF,KAAKK,GAAG3K,GACRmF,KAAKmF,KAAKM,EAAE5K,GAGdmF,KAAKgE,WAAWT,EAAQhJ,EAAK0J,EACtC,EAEAiB,EAAehF,UAAUL,MAAQ,SAAkBuD,GAC/C,IAAI/C,EAASL,KAEf5F,OAAOC,KAAK+I,GAAYjF,SAAQ,SAAUuH,GACtC,IAAIvI,EAIFwI,EAAQ9F,EAAM,CAAC,EAAGjF,EAAS8K,EAAY,IAAOrF,EAAc,QAAIA,EAAO8E,KAAKhB,SAAU,CAAC,IAEvFZ,EAAS1D,EAAM8F,EA3ED,SAAUpC,GAK9B,MAAO,CACLY,SAJac,EAAe1B,EAAOY,UAKnCI,OAJWU,EAAe1B,EAAOgB,QAKjCK,WAAYrB,EAAOqB,WACnBd,WAAYP,EAAOO,WAEvB,CAgE8B8B,CAAgBxC,EAAWsC,KACrDrF,EAAO8E,KAAKU,mBAAmBH,IAAavI,EAAM,CAAC,GAAOkD,EAAO+E,SAAW7B,EAAQpG,IAChFoG,EAAOO,YACTzD,EAAO8E,KAAKI,kBAAkBG,EAAWnC,EAAOO,WAEpD,GACF,EAEAoB,EAAehF,UAAU2E,WAAa,SAAqBtB,EAAQhJ,EAAKhB,GACpE,IAAI4D,EAAK2C,EAEXE,KAAKH,QAAQC,EAAQ,CAAC,GAASyD,GAAU,CACrCY,UAAYhH,EAAM,CAAC,EAAGA,EAAI5C,GAAOhB,EAAO4D,IACvC2C,GACP,EAEAoF,EAAehF,UAAU4E,aAAe,SAAuBvB,EAAQhJ,EAAKhB,GACxE,IAAI4D,EAAK2C,EAEXE,KAAKH,QAAQC,EAAQ,CAAC,GAASyD,GAAU,CACrCqB,YAAczH,EAAM,CAAC,EAAGA,EAAI5C,GAAOhB,EAAO4D,IACzC2C,GACP,EAEA1F,OAAO4K,iBAAkBE,EAAehF,UAAWmF,GAInD,IAAIS,EAAgB,CAClBvC,OAAQ,KACRwC,MAAO,EACPC,aAAc,SACd5C,WAAY,KACZ6C,QAAQ,EACRC,cAAe,SACfC,SAAS,EACTC,WAAY,KACZC,OAAQ,aACRC,QAAQ,EACRC,UAAU,EACVC,MAAM,EACNC,UAAU,EACVtB,KAAM,KACNuB,YAAa,cAGXC,EAAgBvK,EAAO,CAAC,EAAG0J,GAC3Bc,EAAe,CACjBxD,WAAY,IAAID,EAAW,CACzBsB,GAAI,CACFN,SAAU,CAAC,EACXS,WAAY,CAAC,EACbL,OAAQ,CAAC,MAKXsC,EAAS,WAAoB,EAE7BC,EAAkB,CAAEC,QAAS,CAAEvD,cAAc,GAAOwD,QAAS,CAAExD,cAAc,IAEjFsD,EAAgBC,QAAQtD,IAAM,WAC5B,OAAOqC,CACT,EAEAgB,EAAgBE,QAAQvD,IAAM,WAC5B,OAAOkD,CACT,EAEAE,EAAOI,WAAa,SAAqB1M,GACvC,OAAOqM,EAAarM,EACtB,EAKAsM,EAAOhH,MAAQ,SAAmBqH,IAChCP,EAAgBvK,EAAO,CAAC,EAAGuK,EAAeO,IACxB/B,MAChB0B,EAAOM,SAAS,aAAc,IAAIjC,EAAeyB,EAAcxB,KAAMwB,EAAcD,aAEvF,EAKAG,EAAOM,SAAW,SAAmB5M,EAAKhB,GACxCqN,EAAarM,GAAOhB,CACtB,EAKAsN,EAAOO,QAAU,SAAkBC,GACjC,IAAIC,EAAa1M,EAAQ,yBAA0ByM,EAAS,CAAC,GAE7D,OAAOjL,EAAO,CAAC,EAAGyK,EAAOG,QAASM,EACpC,EAEAlN,OAAO4K,iBAAkB6B,EAAQC,GAKjC,IAAIS,EAAY,WAAuB,EAEvCA,EAAUC,SAAW,SAAmB7O,EAAI8O,EAASrI,GACnD,IAAIsI,EAAQH,EAAUI,aAAaF,EAASrI,GACxCwI,EAAUf,EAAOO,QAAQhI,EAAMiI,SAEnC,MAAO,CACLjO,KAAMmO,EAAUM,YAAYlP,EAAIyG,GAChCzG,GAAIA,EACJmP,QAASL,EAAQM,UAAUC,QAC3BnH,MAAO0G,EAAUU,aAAatP,EAAI8O,EAASrI,GAC3C8I,GAAIX,EAAUY,OAAO/I,EAAMiI,SAC3Be,WAAYX,EAAQlO,MACpB8O,UAAWjJ,EAAMkJ,kBACjBnC,QAASyB,EAAQzB,QACjBC,WAAYwB,EAAQxB,WACpBmC,OAAQhB,EAAUiB,cAAc7P,EAAIyG,EAAOsI,GAC3CrB,OAAQkB,EAAUkB,cAAc9P,EAAIyG,IAAUwI,EAAQvB,OACtDqB,MAAOA,EACP3B,MAAOwB,EAAUmB,aAAa/P,EAAIyG,EAAOwI,GACzCzL,MAAOoL,EAAUoB,aAAahQ,EAAI8O,EAASrI,GAC3CwJ,UAAWnB,EAAQM,UAAUa,QAC7BnC,SAAUmB,EAAQnB,SAClBD,KAAMoB,EAAQpB,KACdqC,aAActB,EAAUuB,oBAAoB1J,GAEhD,EAEAmI,EAAUwB,cAAgB,SAAwB3J,GAChD,OAAKA,EAAMkJ,kBAEE1N,EAAQ,2CAA4CwE,GAF1B,IAKzC,EAKAmI,EAAUoB,aAAe,SAAuBhQ,EAAI8O,EAASrI,GAC3D,IAAIjD,EAAQ,GAWZ,OAVKsL,EAAQlO,OAAWkO,GAAYA,EAAQW,aAC1CjM,EAAQhD,EAAiBR,EAAI,UAG3B8O,EAAQlO,QAAU,CAAC,SAAU,UAAUP,eAAeyO,EAAQlO,MAAM4C,OACtEA,EAAQsL,EAAQlO,MAAM4C,MACbsL,EAAQlO,QACjB4C,EAAQsL,EAAQlO,OAGd6F,EAAMkJ,kBACDnM,EAlyBgB,SAAUxD,EAAIwD,GAKvC,GAJIxD,EAAGqQ,WACL7M,EAAQF,EAAW,WAAYE,IAG7BpD,EAAYJ,GAkBd,MAjBgB,UAAZA,EAAGM,OACLkD,EAAQF,EAAY,SAAWtD,EAAGsQ,SAAW,YAAc,IAAM9M,IAG/DxD,EAAGuQ,UACL/M,EAAQF,EAAY,SAAYtD,EAAU,QAAIwD,IAI5CxD,EAAGwQ,WAAa,GAAKxQ,EAAGwQ,UAAY,SACtChN,EAAQF,EAAY,OAAUtD,EAAY,UAAIwD,IAG5CxD,EAAGyQ,UAAY,IACjBjN,EAAQF,EAAY,OAAUtD,EAAY,UAAIwD,IAGzCA,EAGT,GAAgB,WAAZxD,EAAGM,KAUL,OATAkD,EAAQF,EAAW,UAAWE,GACf,KAAXxD,EAAG0Q,MACLlN,EAAQF,EAAY,aAAgBtD,EAAM,IAAIwD,IAGjC,KAAXxD,EAAG2Q,MACLnN,EAAQF,EAAY,aAAgBtD,EAAM,IAAIwD,IAGzCA,EAGT,GA1gBgB,SAAUxD,GAC1B,OAAiF,IAA1E,CAAC,OAAQ,OAAQ,QAAS,iBAAkB,QAAQK,QAAQL,EAAGM,KACxE,CAwgBMsQ,CAAY5Q,GAAK,CACnB,IAAI6Q,EAAa7Q,EAAG8Q,MAAQC,OAAO/Q,EAAG8Q,MAAQ,GAAK,WAAa,QAEhE,GAAgB,SAAZ9Q,EAAGM,KACL,OAAOgD,EAAW,yBAA0BE,GAG9C,GAAgB,mBAAZxD,EAAGM,KACL,OAAOgD,EAAY,0BAA4BuN,EAAarN,GAG9D,GAAgB,UAAZxD,EAAGM,KACL,OAAOgD,EAAW,sBAAuBE,GAG3C,GAAgB,SAAZxD,EAAGM,KACL,OAAOgD,EAAW,yBAA0BE,GAG9C,GAAgB,SAAZxD,EAAGM,KACL,OAAOgD,EAAY,eAAiBuN,EAAarN,EAErD,CAEA,OAAOA,CACT,CAquBSwN,CAAqBhR,EAAIwD,EAClC,EAKAoL,EAAUuB,oBAAsB,SAA8B1J,GAC5D,IAAIsI,EAAQtI,EAAM6E,KAAKyD,OAASzI,EAAKG,EAAM6E,KAAK2F,YAAY,SAAUC,GAAK,MAAkB,UAAXA,EAAEzQ,IAAkB,IAEtG,OAAOsO,GAASA,EAAMnO,KACxB,EAMAgO,EAAUY,OAAS,SAAiBD,GAClC,MAAO,CACD4B,UACF,OAAO5B,EAAG4B,GACZ,EACIC,YACF,OAAO7B,EAAG6B,KACZ,EACAC,OAAQ9B,EAAG8B,OAAS9B,EAAG8B,OAAOC,KAAK/B,GAAM,WAAa,EACtDgC,WAAYhC,EAAGgC,WAAa,CAC1B3H,OAAQ2F,EAAGgC,WAAW3H,OACtB4H,SAAUjC,EAAGgC,WAAWC,SAASF,KAAK/B,EAAGgC,YACzCjJ,OAAQiH,EAAGgC,WAAWjJ,OAAOgJ,KAAK/B,EAAGgC,aACnC,KAER,EAQA3C,EAAUmB,aAAe,SAAuB/P,EAAIyG,EAAOwI,GACzD,IAAI7B,EAAQ5M,EAAiBR,EAAI,SAC7ByR,EAAexC,GAAW,UAAWA,EAAWA,EAAQ7B,MAAQ,EAMpE,OAJKA,GAAS3G,EAAMkJ,mBAAqBlJ,EAAMkJ,kBAAkB+B,SAC/DtE,EAAQ3G,EAAMkJ,kBAAkB+B,OAAO,kBAGpClQ,EAASiQ,IAIT9Q,EAAkByM,KACrBqE,EAAY3K,MAAQsG,GAGfvG,EAAa4K,IAPX5K,EAAauG,GAASqE,EAQjC,EAOA7C,EAAUkB,cAAgB,SAAwB9P,EAAIyG,GACpD,IAAIiH,EAASlN,EAAiBR,EAAI,eAMlC,IAJK0N,GAAUjH,EAAMkJ,mBAAqBlJ,EAAMkJ,kBAAkB+B,SAChEhE,EAASjH,EAAMkJ,kBAAkB+B,OAAO,yBAGrChE,GAAUjH,EAAMkJ,kBAAmB,CACtC,IAAIpB,EAASK,EAAUwB,cAAc3J,GACrCiH,EAASa,GAAUA,EAAOb,MAC5B,CAEA,OAAOA,CACT,EAOAkB,EAAUU,aAAe,SAAuBtP,EAAI8O,EAASrI,QAC1C,IAAVA,IAAmBA,EAAQ,CAAC,GAEnC,IAAIyB,EAAQ,KAKZ,OAJIzB,EAAMkJ,mBAAqBhP,EAAkBuH,KAC/CA,EAAQzB,EAAMkJ,kBAAkB+B,QAAUjL,EAAMkJ,kBAAkB+B,OAAO,kBAGnE/Q,EAAkBuH,GAhyCb,SAAUlI,GACvB,IAAIkI,EAAQ1H,EAAiBR,EAAI,SACjC,GAAIW,EAAkBuH,GAAQ,CAC5B,IAAInG,EAAOF,EAAQ7B,GAEf+B,IACFmG,EAAQ1H,EAAiBuB,EAAM,SAEnC,CAEA,OAAQpB,EAAkBuH,GAAiB,KAARA,CACrC,CAqxC6CyJ,CAAS3R,GAAjBkI,CACrC,EAQA0G,EAAUI,aAAe,SAAuBF,EAASrI,GACvD,GAAIqI,EAAQ3I,IACV,MAAO,CAAEsJ,WAAYX,EAAQ3I,KAG/B,IAAI4I,EAAQtI,EAAM6E,KAAKyD,OAASzI,EAAKG,EAAM6E,KAAK2F,YAAY,SAAUC,GAAK,MAAkB,UAAXA,EAAEzQ,IAAkB,IACtG,IAAKsO,EACH,OAAO,KAIT,IAAI6C,GAAa,UAAUhL,KAAKmI,EAAMU,aA/vC1B,SAAUvN,EAAMC,GAC5B,IAAIqC,EAAMrC,EACV,OAAOD,EAAKG,MAAM,KAAKV,OAAM,SAAUW,GACrC,OAAIA,KAAQkC,IACVA,EAAMA,EAAIlC,IAEH,EAIX,GACF,CAovCuDuP,CAAQ9C,EAAMU,WAAYhJ,EAAMiI,SACjFoD,KAAU/C,EAAMK,YAAaL,EAAMK,UAAU0C,MACjD,OAAKF,EAIE,CAAEnC,WAAYV,EAAMU,WAAYqC,KAAMA,GAHpC,CAAErC,WAAY,KAAMqC,KAAMA,EAIrC,EAMAlD,EAAUM,YAAc,SAAsBlP,EAAIyG,GAChD,IAAIhG,EAAOD,EAAiBR,EAAI,QAEhC,IAAKS,IAASgG,EAAMkJ,kBAClB,OAAO3P,EAAGS,KAOZ,IAJKA,GAAQgG,EAAMkJ,mBAAqBlJ,EAAMkJ,kBAAkB+B,SAC9DjR,EAAOgG,EAAMkJ,kBAAkB+B,OAAO,iBAAmBjL,EAAMkJ,kBAAkB+B,OAAa,OAG3FjR,GAAQgG,EAAMkJ,kBAAmB,CACpC,IAAIpB,EAASK,EAAUwB,cAAc3J,GACrC,OAAI8H,GAAU9J,EAAW8J,EAAO9N,MACZ8N,EAAO9N,KAAK6Q,KAAK7K,EAAMkJ,kBAElCoC,GAGFtL,EAAMkJ,kBAAkBlP,IACjC,CAEA,OAAOA,CACT,EAKAmO,EAAUiB,cAAgB,SAAwB7P,EAAIyG,EAAOsI,GAC3D,GAAIA,GAASA,EAAMU,WACjB,OAAO,WACL,OAAOxN,EAAQ8M,EAAMU,WAAYhJ,EAAMiI,QACzC,EAGF,GAAIjI,EAAMkJ,kBAAmB,CAC3B,IAAIzN,EAAO1B,EAAiBR,EAAI,eAAkByG,EAAMkJ,kBAAkB+B,QAAUjL,EAAMkJ,kBAAkB+B,OAAO,sBACnH,GAAIxP,EACF,OAAO,WACL,OAAOD,EAAQC,EAAMuE,EAAMkJ,kBAC7B,EAGF,IAAIpB,EAASK,EAAUwB,cAAc3J,GACrC,GAAI8H,GAAU9J,EAAW8J,EAAO3N,OAAQ,CACtC,IAAImR,EAAcxD,EAAO3N,MAAM0Q,KAAK7K,EAAMkJ,mBAE1C,OAAO,WACL,OAAOoC,GACT,CACF,CAEA,OAAO,WACL,OAAOtL,EAAMkJ,kBAAkB/O,KACjC,CACF,CAEA,OAAQZ,EAAGM,MACX,IAAK,WAAY,OAAO,WACtB,IAAI0R,EAAMC,SAASC,iBAAkB,eAAmBlS,EAAO,KAAI,MAGnE,GADAgS,EAAMtM,EAAQsM,GAAKtJ,QAAO,SAAU1I,GAAM,OAAOA,EAAGmS,OAAS,IACxDH,EAAI1Q,OAET,OAAO0Q,EAAIhL,KAAI,SAAUoL,GAAY,OAAOA,EAASxR,KAAO,GAC9D,EACA,IAAK,QAAS,OAAO,WACnB,IAAIoR,EAAMC,SAASC,iBAAkB,eAAmBlS,EAAO,KAAI,MAC/DqS,EAAM/L,EAAK0L,GAAK,SAAUhS,GAAM,OAAOA,EAAGmS,OAAS,IAEvD,OAAOE,GAAOA,EAAIzR,KACpB,EACA,IAAK,OAAQ,OAAO,SAAU8N,GAC5B,OAAOhJ,EAAQ1F,EAAGsS,MACpB,EACA,IAAK,kBAAmB,OAAO,WAC7B,OAAO5M,EAAQ1F,EAAGiP,SAASvG,QAAO,SAAU6J,GAAO,OAAOA,EAAIC,QAAU,IAAGxL,KAAI,SAAUuL,GAAO,OAAOA,EAAI3R,KAAO,GACpH,EACA,QAAS,OAAO,WACd,OAAOZ,GAAMA,EAAGY,KAClB,EAEF,EAIA,IAAI6R,EAAkB,CACpBC,SAAU,KACVzC,SAAS,EACT/H,MAAO,KACPiH,QAAQ,EACR1O,KAAM,KACN+C,MAAO,CAAC,EACR+L,GAAI,KACJ/B,SAAS,EACTM,UAAU,EACVD,MAAM,EACNH,OAAQ,aACRN,MAAO,EACPK,WAAY,CACVkF,QAAS,UACTC,UAAW,YACXC,MAAO,QACPC,QAAS,UACTC,SAAU,WACVC,MAAO,UAIPC,EAAQ,SAAgBhE,QACT,IAAZA,IAAqBA,EAAU,CAAC,GAErC5H,KAAKjB,IAtnCDA,GAAM,OACRA,EAAK,EAELC,EAAaA,EAAWf,QAAQ,OAAQ,UAG1Cc,IACYC,EAAWf,QAAQ,OAAQ0D,OAAO5C,KAgnC9CiB,KAAKrH,GAAKiP,EAAQjP,GAClBqH,KAAK6L,SAAU,EACf7L,KAAK4G,aAAe,GACpB5G,KAAK8L,SAAW,GAChB9L,KAAKqG,OAAS,GACdrG,KAAK+F,MAAQ,EACb/F,KAAK7D,MAAQ,CAAC,EACd6D,KAAK+L,SAASnE,GACd5H,KAAKoG,WAAahK,EAAO,CAAC,EAAGgP,EAAgBhF,YAC7CwB,EAAUxL,EAAO,CAAC,EAAGgP,EAAiBxD,GACtC5H,KAAKgM,OAAU1S,EAAkBsO,EAAQ7B,OAAyB,EAAhB6B,EAAQ7B,MAC1D/F,KAAKyG,SAAWmB,EAAQnB,SACxBzG,KAAKwG,KAAOoB,EAAQpB,KACpBxG,KAAKlG,MA/+CgC,CACrCyR,WAAW,EACXD,SAAS,EACTK,OAAO,EACPD,UAAU,EACVF,MAAO,KACPC,QAAS,KACTQ,WAAW,EACXC,SAAS,EACTlD,UAAU,EACVmD,SAAS,GAs+CTnM,KAAKkI,GAAKN,EAAQM,GAClBlI,KAAKqI,UAAYT,EAAQS,UACzBrI,KAAKoM,WAAapM,KAAKqI,UAAYzN,EAAQ,yBAA0BoF,KAAKqI,gBAAa7O,EACvFwG,KAAKiB,OAAO2G,GAEZ5H,KAAK6I,aAAe7I,KAAKzG,MACzByG,KAAK6L,SAAU,CACjB,EAEIQ,EAAuB,CAAEC,UAAW,CAAE9I,cAAc,GAAO+I,WAAY,CAAE/I,cAAc,GAAOgJ,WAAY,CAAEhJ,cAAc,GAAOiJ,MAAO,CAAEjJ,cAAc,GAAOjK,MAAO,CAAEiK,cAAc,GAAOkJ,aAAc,CAAElJ,cAAc,IAE/N6I,EAAqBC,UAAU7I,IAAM,WACnC,OAAKzD,KAAKkI,IAAOlI,KAAKkI,GAAGgC,WAIlBlK,KAAKkI,GAAGgC,WAHN,CAAEC,SAAU,WAAa,EAIpC,EAEAkC,EAAqBE,WAAW9I,IAAM,WACpC,QAASzD,KAAK7D,MAAM6M,QACtB,EAEAqD,EAAqBG,WAAW/I,IAAM,WACpC,SAAUzD,KAAKqI,YAAarI,KAAKqI,UAAUsE,cAAgB3M,KAAKrH,KAAMqH,KAAKrH,GAAGgU,SAChF,EAKAN,EAAqBI,MAAMhJ,IAAM,WAC/B,GAAIzD,KAAK4M,OACP,OAAO5M,KAAK4M,OAGd,IAAIH,EAAQ,KAKZ,OAJIzM,KAAKrH,KACP8T,EAAQtT,EAAiB6G,KAAKrH,GAAI,QAG/B8T,GAASzM,KAAKqI,UACVrI,KAAKqI,UAAUgC,QAAUrK,KAAKqI,UAAUgC,OAAO,cAGjDoC,CACT,EAMAJ,EAAqB9S,MAAMkK,IAAM,WAC/B,GAAKrG,EAAW4C,KAAKuI,QAIrB,OAAOvI,KAAKuI,QACd,EAMA8D,EAAqBK,aAAajJ,IAAM,WACtC,OAAIzD,KAAKqI,WAAarI,KAAKoM,aAChBpM,KAAKoM,WAAWM,eAGtB1M,KAAKrH,IAIc,aAAjBqH,KAAKrH,GAAGM,IACjB,EAKA2S,EAAM1L,UAAU2M,QAAU,SAAkBjF,GAC1C,OAAKA,IAIDA,EAAQ7I,GACHiB,KAAKjB,KAAO6I,EAAQ7I,QAGRvF,IAAjBoO,EAAQxO,WAAwCI,IAAlBoO,EAAQ/G,aAIpBrH,IAAlBoO,EAAQ/G,MACHb,KAAK5G,OAASwO,EAAQxO,UAGVI,IAAjBoO,EAAQxO,KACH4G,KAAKa,QAAU+G,EAAQ/G,MAGzB+G,EAAQxO,OAAS4G,KAAK5G,MAAQwO,EAAQ/G,QAAUb,KAAKa,OAC9D,EAKA+K,EAAM1L,UAAU6L,SAAW,SAAmBnE,GACxC5H,KAAKrH,KAAOiP,EAAQyD,WACtBrL,KAAKrH,GAAGmU,eAAiB9M,KAAKjB,GAElC,EAKA6M,EAAM1L,UAAUe,OAAS,SAAiB2G,GAntCpB,IAAUvB,EAotC9BrG,KAAKqL,SAAWzD,EAAQyD,UAAY,KACpCrL,KAAK4I,QAAUhB,EAAQgB,SAAW5I,KAAK4I,UAAW,GAG7CtP,EAAkBsO,EAAQ/G,QAAU+G,EAAQ/G,QAAUb,KAAKa,OAASzD,EAAW4C,KAAKsM,UAAUrL,SACjGjB,KAAKsM,UAAUrL,OAAOjB,KAAKjB,GAAI,CAAE8B,MAAO+G,EAAQ/G,QAElDb,KAAKa,MAASvH,EAAkBsO,EAAQ/G,OACnCvH,EAAkB0G,KAAKa,OAAsB,KAAbb,KAAKa,MADO+G,EAAQ/G,MAEzDb,KAAK5G,MAASE,EAAkBsO,EAAQxO,MAA+BwO,EAAQxO,KAA/BuI,OAAOiG,EAAQxO,QAAyB4G,KAAK5G,MAAQ,KACrG4G,KAAK7D,WAA0B3C,IAAlBoO,EAAQzL,MAAsBE,EAAeuL,EAAQzL,OAAS6D,KAAK7D,MAChF6D,KAAK0H,MAAQE,EAAQF,OAAS1H,KAAK0H,MACnC1H,KAAK8H,YAA4BtO,IAAnBoO,EAAQE,OAAuBF,EAAQE,OAAS9H,KAAK8H,OACnE9H,KAAKmG,WAAWyB,EAAQzB,UAAWnG,KAAKmG,WAAsBnG,KAAKqI,UACnErI,KAAKoG,WAAajM,EAASyN,EAAQxB,YAAcvG,EAAMG,KAAKoG,WAAYwB,EAAQxB,YAAcpG,KAAKoG,WACnGpG,KAAKuI,OAASnL,EAAWwK,EAAQW,QAAUX,EAAQW,OAASvI,KAAKuI,OACjEvI,KAAK4M,OAAShF,EAAQ6E,OAASzM,KAAK4M,OACpC5M,KAAKqG,OAAUuB,EAAc,OApuCH,kBADIvB,EAquCmBuB,EAAQvB,SApuCnBA,EAAOpM,OAAUoM,EAAOrL,MAAM,KAAO,GAouCRgF,KAAKqG,OACxErG,KAAK+F,MAluCe,SAAUM,EAAQN,EAAOgH,GAC7C,MAAqB,kBAAVhH,EACFM,EAAO/J,QAAO,SAAUC,EAAMyE,GAEnC,OADAzE,EAAKyE,GAAK+E,EACHxJ,CACT,GAAG,CAAC,GAGC8J,EAAO/J,QAAO,SAAUC,EAAMyE,GACnC,MAAqB,kBAAV+E,GAAsB/E,KAAK+E,GACpCxJ,EAAKyE,GAAK+E,EAAM/E,GACTzE,GAGkB,kBAAhBwQ,GACTxQ,EAAKyE,GAAK+L,EACHxQ,IAGTA,EAAKyE,GAAM+L,GAAeA,EAAY/L,IAAO,EAEtCzE,EACT,GAAG,CAAC,EACN,CA2sCeyQ,CAAgBhN,KAAKqG,OAAQuB,EAAQ7B,OAAS/F,KAAK+F,MAAO/F,KAAKgM,QAC5EhM,KAAKiN,qBACLjN,KAAKkN,0BAOiB1T,IAAlBoO,EAAQzL,QACV6D,KAAKlG,MAAMkP,SAAWhJ,KAAKuM,YAIzBvM,KAAKlG,MAAMmS,gBAA+BzS,IAAlBoO,EAAQzL,OAAuB6D,KAAK6L,SAC9D7L,KAAKsM,UAAUnC,SAAU,IAAOnK,KAAO,IAGzCA,KAAK6L,SAAU,EACf7L,KAAKmN,oBAGAnN,KAAKrH,KAGVqH,KAAKoN,gBACLpN,KAAKqN,kBACP,EAKAzB,EAAM1L,UAAUoN,MAAQ,WACpB,IAAIjN,EAASL,KAEXA,KAAKuN,qBACPvN,KAAKuN,mBAAmBhS,WAAY,SAC7ByE,KAAKuN,oBAGd,IAAIC,EA7pDiC,CACrCjC,WAAW,EACXD,SAAS,EACTK,OAAO,EACPD,UAAU,EACVF,MAAO,KACPC,QAAS,KACTQ,WAAW,EACXC,SAAS,EACTlD,UAAU,EACVmD,SAAS,GAopDT/R,OAAOC,KAAK2F,KAAKlG,OAAOuH,QAAO,SAAUoM,GAAQ,MAAgB,aAATA,CAAqB,IAAGtP,SAAQ,SAAUsP,GAChGpN,EAAOvG,MAAM2T,GAAQD,EAASC,EAChC,IAEAzN,KAAKkN,qBACLlN,KAAKoN,gBACLpN,KAAKqN,kBACLrN,KAAK0N,sBACP,EAKA9B,EAAM1L,UAAUyN,SAAW,SAAmB7T,GAC1C,IAAIuG,EAASL,KAEX4N,EAAU,CACZlC,SAAU,QACVC,MAAO,WACPH,MAAO,UACPC,QAAS,QACTH,QAAS,YACTC,UAAW,WAGbnR,OAAOC,KAAKP,GAAOqE,SAAQ,SAAUsP,GACnCpN,EAAOvG,MAAM2T,GAAQ3T,EAAM2T,GAEvBG,EAAQH,SAAkCjU,IAAzBM,EAAM8T,EAAQH,MACjCpN,EAAOvG,MAAM8T,EAAQH,KAAU3T,EAAM2T,GAEzC,SAGsBjU,IAApBM,EAAMyR,gBACY/R,IAAlBM,EAAMwR,cACU9R,IAAhBM,EAAM6R,YACanS,IAAnBM,EAAM4R,UAEN1L,KAAKkN,qBAEPlN,KAAKoN,gBACLpN,KAAKqN,kBACLrN,KAAK0N,sBACP,EAKA9B,EAAM1L,UAAU+M,mBAAqB,WACjC,IAAI5M,EAASL,KAGfA,KAAK4G,aAAazI,SAAQ,SAAU0L,GAAK,OAAOA,EAAElJ,MAAMkN,SAAW,IACnE7N,KAAK4G,aAAe,GAGpB,IAAIkH,EAAS1T,OAAOC,KAAK2F,KAAK7D,OAAOG,QAAO,SAAUC,EAAMwR,GAK1D,OAJIC,EAAUC,aAAaF,IACzBxR,EAAKkC,KAAK,CAAEiD,SAAUrB,EAAOlE,MAAM4R,GAAG,GAAI3U,KAAM2U,IAG3CxR,CACT,GAAG,IAEEuR,EAAO7T,QAAW+F,KAAKkI,IAAOlI,KAAKkI,GAAG4B,KAG3CgE,EAAO3P,SAAQ,SAAU+P,GACrB,IAAIxM,EAAWwM,EAAMxM,SACjBtI,EAAO8U,EAAM9U,KAEfsH,EAAML,EAAO6H,GAAG6B,MAAMrI,GACtB/I,EAAKoB,MAAMC,QAAQ0G,GAAOA,EAAI,GAAKA,EACvC,GAAK/H,EAAL,CAIA,IAAIiP,EAAU,CACZM,GAAI7H,EAAO6H,GACX/B,QAAS9F,EAAO8F,QAChBC,WAAY/F,EAAO+F,WACnBL,MAAO1F,EAAO0F,MACdlF,MAAOR,EAAOQ,MACdwF,OAAQhG,EAAOgG,OAAOxJ,KAAK,KAC3B+L,QAASvI,EAAOuI,QAChByC,SAAUhL,EAAOtB,IAIf3B,EAAWzE,EAAGqR,SAChBpC,EAAQS,UAAY1P,EACpBiP,EAAQjP,GAAKA,EAAGmR,IAChBlC,EAAQW,OAAShB,EAAUiB,cAAc7P,EAAGmR,IAAKnR,EAAGwV,UAEpDvG,EAAQjP,GAAKA,EACbiP,EAAQW,OAAShB,EAAUiB,cAAc7P,EAAI,CAAC,IAGhD0H,EAAOuG,aAAanI,KAAK,CAAErF,KAAMA,EAAMuH,MAAO,IAAIiL,EAAMhE,IAvBxD,CAwBF,GACF,EAKAgE,EAAM1L,UAAUkO,QAAU,SAAkB/O,GAG1C,QAFe,IAARA,IAAiBA,EAAM,OAEzBA,EAGH,OAFAW,KAAK8L,SAAS3N,SAAQ,SAAUkQ,GAAK,OAAOA,EAAED,SAAW,SACzDpO,KAAK8L,SAAW,IAIlB9L,KAAK8L,SAASzK,QAAO,SAAUgN,GAAK,OAAOhP,EAAIE,KAAK8O,EAAEhP,IAAM,IAAGlB,SAAQ,SAAUkQ,GAAK,OAAOA,EAAED,SAAW,IAC1GpO,KAAK8L,SAAW9L,KAAK8L,SAASzK,QAAO,SAAUgN,GAAK,OAAQhP,EAAIE,KAAK8O,EAAEhP,IAAM,GAC/E,EAKAuM,EAAM1L,UAAUkN,cAAgB,WAC5B,IAAI/M,EAASL,KAEf,GAAKA,KAAKmG,UAAWnG,KAAKwM,WAA1B,CACA,IAAI8B,EAAe,SAAU3V,GAC3BgF,EAAYhF,EAAI0H,EAAO+F,WAAWuF,MAAOtL,EAAOvG,MAAM6R,OACtDhO,EAAYhF,EAAI0H,EAAO+F,WAAWsF,SAAUrL,EAAOvG,MAAM4R,UACzD/N,EAAYhF,EAAI0H,EAAO+F,WAAWkF,QAASjL,EAAOvG,MAAMwR,SACxD3N,EAAYhF,EAAI0H,EAAO+F,WAAWmF,UAAWlL,EAAOvG,MAAMyR,YAErDjS,EAAkB+G,EAAOvG,MAAM0R,QAAUnL,EAAOvG,MAAMmS,WACzDtO,EAAYhF,EAAI0H,EAAO+F,WAAWoF,MAAOnL,EAAOvG,MAAM0R,QAGnDlS,EAAkB+G,EAAOvG,MAAM2R,UAAYpL,EAAOvG,MAAMmS,WAC3DtO,EAAYhF,EAAI0H,EAAO+F,WAAWqF,QAASpL,EAAOvG,MAAM2R,QAE5D,EAEA,GAAKvS,EAAuB8G,KAAKrH,IAAjC,CAKA,IAAIgS,EAAMC,SAASC,iBAAkB,eAAmB7K,KAAKrH,GAAO,KAAI,MACxE0F,EAAQsM,GAAKxM,QAAQmQ,EAHrB,MAFEA,EAAatO,KAAKrH,GAjB4B,CAuBlD,EAKAiT,EAAM1L,UAAUgN,mBAAqB,WACjC,IAAI7M,EAASL,KAKf,GAFAA,KAAKoO,QAAQ,SAERpO,KAAKrH,GAAV,CAEA,IAAI4V,EAAS,WACXlO,EAAOvG,MAAMwR,SAAU,EACvBjL,EAAOvG,MAAMyR,WAAY,EACrBlL,EAAO8F,UACTxI,EAAY0C,EAAO1H,GAAI0H,EAAO+F,WAAWkF,SAAS,GAClD3N,EAAY0C,EAAO1H,GAAI0H,EAAO+F,WAAWmF,WAAW,IAItDlL,EAAO+N,QAAQ,eACjB,EAEII,EAAazV,EAAYiH,KAAKrH,IAAM,QAAU,SAC9C8V,EAAU,WACZpO,EAAOvG,MAAM6R,OAAQ,EACrBtL,EAAOvG,MAAM4R,UAAW,EACpBrL,EAAO8F,UACTxI,EAAY0C,EAAO1H,GAAI0H,EAAO+F,WAAWsF,UAAU,GACnD/N,EAAY0C,EAAO1H,GAAI0H,EAAO+F,WAAWuF,OAAO,IAIlDtL,EAAO+N,QAAQ,gBACjB,EAEA,GAAIpO,KAAKqI,WAAajL,EAAW4C,KAAKqI,UAAUqG,OAe9C,OAdA1O,KAAKqI,UAAUqG,MAAM,QAASD,GAC9BzO,KAAKqI,UAAUqG,MAAM,OAAQH,GAC7BvO,KAAK8L,SAASrN,KAAK,CACjBY,IAAK,cACL+O,QAAS,WACP/N,EAAOgI,UAAUsG,KAAK,QAASF,EACjC,SAEFzO,KAAK8L,SAASrN,KAAK,CACjBY,IAAK,aACL+O,QAAS,WACP/N,EAAOgI,UAAUsG,KAAK,OAAQJ,EAChC,IAKJ,GAAKvO,KAAKrH,GAAV,CAEAD,EAAiBsH,KAAKrH,GAAI6V,EAAYC,GAEtC,IAAIG,EAAY1V,EAAuB8G,KAAKrH,IAAM,SAAW,OAC7DD,EAAiBsH,KAAKrH,GAAIiW,EAAWL,GACrCvO,KAAK8L,SAASrN,KAAK,CACjBY,IAAK,cACL+O,QAAS,WACP/N,EAAO1H,GAAGkW,oBAAoBL,EAAYC,EAC5C,IAGFzO,KAAK8L,SAASrN,KAAK,CACjBY,IAAK,aACL+O,QAAS,WACP/N,EAAO1H,GAAGkW,oBAAoBD,EAAWL,EAC3C,GAjBsB,CA7CA,CAgE1B,EAEA3C,EAAM1L,UAAU4O,kBAAoB,WAElC,OAA0B,OAAtB9O,KAAK6I,cAAwC,KAAf7I,KAAKzG,QAAgBR,EAAYiH,KAAKrH,MAIjEqH,KAAKzG,QAAUyG,KAAK6I,YAC7B,EAKA+C,EAAM1L,UAAUiN,kBAAoB,WAChC,IAAI9M,EAASL,KAGf,GADAA,KAAKoO,QAAQ,aACRpO,KAAK8H,QAAW9H,KAAKrH,GAA1B,CAEA,IAAI2C,EAAQ,CAAEC,WAAW,GACrBJ,EAAK6E,KAAKqL,SAAW,WACvBhL,EAAOvG,MAAMqS,QAAU9L,EAAOyO,oBAAwBzO,EAAOiM,UAAUnC,SAAU,IAAO9J,EAAe,SACzG,EAAI,WAEA,IADA,IAAI7E,EAAO,GAAIC,EAAMC,UAAUzB,OACvBwB,KAAQD,EAAMC,GAAQC,UAAWD,IAGvB,IAAhBD,EAAKvB,QAAiBmD,EAAW2R,QAAUvT,EAAK,aAAcuT,OAAWvT,EAAK,IAAMA,EAAK,GAAGwT,cAC9FxT,EAAK,GAAK6E,EAAO9G,OAGnB8G,EAAOvG,MAAMqS,QAAU9L,EAAOyO,oBAC9BzO,EAAOiM,UAAUnC,SAAU,IAAO9J,EAAS,GAAI7E,EAAK,GACtD,EAEIgT,EAAaxO,KAAKqI,WAAatP,EAAYiH,KAAKrH,IAAM,QAAU,SACpE6V,EAAaxO,KAAK0H,OAAS1H,KAAK0H,MAAM+C,KAAO,SAAW+D,EAGxD,IAAInI,GAAUrG,KAAKqG,OAAOpM,QAAU+F,KAAKqI,WAAatP,EAAYiH,KAAKrH,IAAMqH,KAAKqG,OAAS,CAAC,UAG5F,GAAIrG,KAAK0H,OAAS1H,KAAK0H,MAAMU,aAA8C,IAAhC/B,EAAOrN,QAAQwV,GAAoB,CAC5E,IAAIS,EAAc/T,EAASC,EAAI6E,KAAK+F,MAAMyI,IAAa,EAAOlT,GAC1D8S,EAAUpO,KAAKkI,GAAG8B,OAAOhK,KAAK0H,MAAMU,YAAY,WAEhD,IADA,IAAI5M,EAAO,GAAIC,EAAMC,UAAUzB,OACvBwB,KAAQD,EAAMC,GAAQC,UAAWD,GAE3C4E,EAAOvG,MAAMoS,SAAU,EACvB7L,EAAOkN,mBAAqBjS,EAC5B2T,EAAYpT,WAAM,EAAQL,EAC5B,IACAwE,KAAK8L,SAASrN,KAAK,CACjBY,IAAK,cACL+O,QAASA,IAIX/H,EAASA,EAAOhF,QAAO,SAAUL,GAAK,OAAOA,IAAMwN,CAAY,GACjE,CAGAnI,EAAOlI,SAAQ,SAAU6C,GACvB,IAAIiO,EAAc/T,EAASC,EAAIkF,EAAO0F,MAAM/E,IAAI,EAAO1F,GACnD6O,EAAW,WAEX,IADA,IAAI3O,EAAO,GAAIC,EAAMC,UAAUzB,OACvBwB,KAAQD,EAAMC,GAAQC,UAAWD,GAE3C4E,EAAOvG,MAAMoS,SAAU,EACvB7L,EAAOkN,mBAAqBjS,EAC5B2T,EAAYpT,WAAM,EAAQL,EAC5B,EAEA6E,EAAO6O,2BAA2BlO,EAAGmJ,GACrC9J,EAAO8O,sBAAsBnO,EAAGmJ,EAClC,GA1DwC,CA2D1C,EAEAyB,EAAM1L,UAAUgP,2BAA6B,SAAqCE,EAAKjF,GACnF,IAAI9J,EAASL,KAEVA,KAAKqI,YAEVrI,KAAKqI,UAAUgH,IAAID,EAAKjF,GACxBnK,KAAK8L,SAASrN,KAAK,CACjBY,IAAK,YACL+O,QAAS,WACP/N,EAAOgI,UAAUsG,KAAKS,EAAKjF,EAC7B,IAEJ,EAEAyB,EAAM1L,UAAUiP,sBAAwB,SAAgCC,EAAKjF,GACzE,IAAI9J,EAASL,KAEf,GAAKA,KAAKrH,KAAMqH,KAAKqI,UAArB,CAGA,IAAIiH,EAAc,SAAU3W,GAC1BD,EAAiBC,EAAIyW,EAAKjF,GAC1B9J,EAAOyL,SAASrN,KAAK,CACnBY,IAAK,eACL+O,QAAS,WACPzV,EAAGkW,oBAAoBO,EAAKjF,EAC9B,GAEJ,EAGA,GADAmF,EAAYtP,KAAKrH,IACZO,EAAuB8G,KAAKrH,IAAjC,CAIA,IAAIgS,EAAMC,SAASC,iBAAkB,eAAmB7K,KAAKrH,GAAO,KAAI,MACxE0F,EAAQsM,GAAKxM,SAAQ,SAAUxF,GAEzBA,EAAGmU,gBAAkBnU,IAAO0H,EAAO1H,IAIvC2W,EAAY3W,EACd,GAVA,CAhB0C,CA2B5C,EAKAiT,EAAM1L,UAAUmN,gBAAkB,WAC9B,IAAIhN,EAASL,KAEf,GAAKA,KAAKwG,MAASxG,KAAKrH,IAAOyE,EAAW4C,KAAKrH,GAAGmM,cAAlD,CAEA,IAAIyK,EAAiB,SAAU5W,GAC7BA,EAAGmM,aAAa,gBAAiBzE,EAAOkM,WAAa,OAAS,SAC9D5T,EAAGmM,aAAa,eAAgBzE,EAAOvG,MAAM2R,QAAU,OAAS,QAClE,EAEA,GAAKvS,EAAuB8G,KAAKrH,IAAjC,CAKA,IAAIgS,EAAMC,SAASC,iBAAkB,eAAmB7K,KAAKrH,GAAO,KAAI,MACxE0F,EAAQsM,GAAKxM,QAAQoR,EAHrB,MAFEA,EAAevP,KAAKrH,GARqD,CAc7E,EAKAiT,EAAM1L,UAAUwN,qBAAuB,WAChC1N,KAAKyG,UAAazG,KAAKrH,IAAOyE,EAAW4C,KAAKrH,GAAG6W,oBAAuBxP,KAAKsM,UAAU/J,QAE5FvC,KAAKrH,GAAG6W,kBAAkBxP,KAAKlG,MAAM0R,MAAQ,GAAMxL,KAAKsM,UAAU/J,OAAOJ,UAAUnC,KAAKjB,KAAO,GACjG,EAKA6M,EAAM1L,UAAU2N,QAAU,WACxB7N,KAAKoO,UACLpO,KAAK4G,aAAazI,SAAQ,SAAU0L,GAAK,OAAOA,EAAElJ,MAAMkN,SAAW,IACnE7N,KAAK4G,aAAe,EACtB,EAEAxM,OAAO4K,iBAAkB4G,EAAM1L,UAAWmM,GAI1C,IAAIoD,EAAW,WACbzP,KAAKC,MAAQ,EACf,EAEIyP,EAAuB,CAAEzV,OAAQ,CAAEuJ,cAAc,IAErDiM,EAASvP,UAA4B,oBAAXC,OAAwBA,OAAOC,SAAW,cAAgB,WAChF,IAAIC,EAASL,KAEXM,EAAQ,EACZ,MAAO,CACLC,KAAM,WACJ,MAAO,CAAEhH,MAAO8G,EAAOJ,MAAMK,KAAUE,KAAMF,EAAQD,EAAOJ,MAAMhG,OACpE,EAEJ,EAMAyV,EAAqBzV,OAAOwJ,IAAM,WAChC,OAAOzD,KAAKC,MAAMhG,MACpB,EAKAwV,EAASvP,UAAUjB,KAAO,SAAiB0Q,GACzC,OAAO1Q,EAAKe,KAAKC,OAAO,SAAU7B,GAAQ,OAAOA,EAAKyO,QAAQ8C,EAAU,GAC1E,EAKAF,EAASvP,UAAUmB,OAAS,SAAiBsO,GAE3C,OAAI5V,MAAMC,QAAQ2V,GACT3P,KAAKC,MAAMoB,QAAO,SAAUjD,GAAQ,OAAOuR,EAAQC,MAAK,SAAUC,GAAK,OAAOzR,EAAKyO,QAAQgD,EAAI,GAAI,IAGrG7P,KAAKC,MAAMoB,QAAO,SAAUjD,GAAQ,OAAOA,EAAKyO,QAAQ8C,EAAU,GAC3E,EAKAF,EAASvP,UAAUP,IAAM,SAAcmQ,GACrC,OAAO9P,KAAKC,MAAMN,IAAImQ,EACxB,EAKAL,EAASvP,UAAUnC,OAAS,SAAiB4R,GAC3C,IAAIvR,EAAO,KAOX,KALEA,EADEuR,aAAmB/D,EACd+D,EAEA3P,KAAKf,KAAK0Q,IAGN,OAAO,KAEpB,IAAIrP,EAAQN,KAAKC,MAAMjH,QAAQoF,GAG/B,OAFA4B,KAAKC,MAAMkB,OAAOb,EAAO,GAElBlC,CACT,EAKAqR,EAASvP,UAAUzB,KAAO,SAAeL,GACvC,KAAOA,aAAgBwN,GACrB,MAAM3O,EAAY,oEAGpB,IAAKmB,EAAKW,GACR,MAAM9B,EAAY,6BAGpB,GAAI+C,KAAKf,KAAK,CAAEF,GAAIX,EAAKW,KACvB,MAAM9B,EAAa,iBAAoBmB,EAAO,GAAI,sBAGpD4B,KAAKC,MAAMxB,KAAKL,EAClB,EAEAhE,OAAO4K,iBAAkByK,EAASvP,UAAWwP,GAI7C,IAAIK,EAAQ,CAAC,EACTC,GAAc,EACdC,EAAe,CAAC,YAAa,QAAS,UAEtCjC,EAAY,SAAoBkC,EAAatI,GAC/C,IAAIvH,EAASL,UACI,IAAZ4H,IAAqBA,EAAU,CAAErB,UAAU,IAEhDvG,KAAKiG,OAAS+J,EACdhQ,KAAKuC,OAAS,IAAIxC,EAClBC,KAAK8N,OAAS,IAAI2B,EAClBzP,KAAKlG,MAAQ,CAAC,EACdkG,KAAKmQ,cAAcD,GACnBlQ,KAAKoQ,QAAS,EACdpQ,KAAKuG,SAAWqB,EAAQrB,WAAY,EACpCvG,KAAKqQ,QAAUzI,EAAQM,IAAMN,EAAQM,GAAGoI,KACxCtQ,KAAKuQ,gBAAkB,WACrBlQ,EAAOkC,OAAOzB,YAChB,EAEId,KAAKwQ,KACPxQ,KAAKwQ,IAAInB,IAAI,gBAAiBrP,KAAKuQ,gBAEvC,EAEIE,EAAuB,CAAErN,WAAY,CAAEI,cAAc,GAAOgN,IAAK,CAAEhN,cAAc,GAAOD,OAAQ,CAAEC,cAAc,GAAOrH,MAAO,CAAEqH,cAAc,IAC9IkN,EAAoB,CAAEtN,WAAY,CAAEI,cAAc,GAAOD,OAAQ,CAAEC,cAAc,GAAOrH,MAAO,CAAEqH,cAAc,IAKnHiN,EAAqBrN,WAAWK,IAAM,WACpC,OAAOoD,EAAOI,WAAW,aAC3B,EAEAwJ,EAAqBD,IAAI/M,IAAM,WAC7B,OAAOoD,EAAOI,WAAW,KAC3B,EAKAyJ,EAAkBtN,WAAWK,IAAM,WACjC,OAAOoD,EAAOI,WAAW,aAC3B,EAKAwJ,EAAqBlN,OAAOE,IAAM,WAChC,OAAOzD,KAAKoD,WAAWG,MACzB,EAKAkN,EAAqBlN,OAAOG,IAAM,SAAUnK,GAC1CyU,EAAUzK,OAAShK,CACrB,EAKAmX,EAAkBnN,OAAOE,IAAM,WAC7B,OAAOuK,EAAU5K,WAAWG,MAC9B,EAKAmN,EAAkBnN,OAAOG,IAAM,SAAUnK,GACvC,IAAIoX,EAAapX,IAAUyU,EAAU5K,WAAWG,OAChDyK,EAAU5K,WAAWG,OAAShK,EAC1BoX,GAAc9J,EAAOI,WAAW,OAClCJ,EAAOI,WAAW,MAAM2J,MAAM,gBAElC,EAKAH,EAAqBtU,MAAMsH,IAAM,WAC/B,OAAOsM,CACT,EAKAW,EAAkBvU,MAAMsH,IAAM,WAC5B,OAAOsM,CACT,EAKA/B,EAAU6C,OAAS,SAAiBX,EAAatI,GAC/C,OAAO,IAAIoG,EAAUkC,EAAatI,EACpC,EAKAoG,EAAU8C,OAAS,SAAiB1X,EAAMkT,EAAW1E,QAChC,IAAZA,IAAqBA,EAAU,CAAC,GAEvCoG,EAAU+C,aAAa3X,EAAMkT,GAC7B0B,EAAUgD,OAAO5X,EAAMkT,GACnB1E,GAAWA,EAAQqJ,WACrBhB,EAAaxR,KAAKrF,EAEtB,EAKA4U,EAAUjQ,OAAS,SAAiB3E,UAC3B2W,EAAM3W,GACb,IAAI8H,EAAM+O,EAAajX,QAAQI,IAClB,IAAT8H,GAEJ+O,EAAa9O,OAAOD,EAAK,EAC3B,EAKA8M,EAAUC,aAAe,SAAuB7U,GAC9C,OAAuC,IAAhC6W,EAAajX,QAAQI,EAC9B,EAOA4U,EAAUkD,cAAgB,SAAwBC,QAC1B,IAAfA,IAAwBA,GAAa,GAE5CnB,EAAcmB,CAChB,EAKAnD,EAAU9N,UAAUkR,SAAW,SAAmBC,EAAMjO,GACtD4K,EAAUoD,SAASC,EAAMjO,EAC3B,EAKA4K,EAAUoD,SAAW,SAAmBC,EAAMjO,GAC1C,IAAIjG,EAEN,GAAIhD,EAASkX,GACXrD,EAAU5K,WAAWvD,MAAMwR,OAD7B,CAMA,GAAIjO,EAAY,CACd,IAAIG,EAAS8N,GAAQjO,EAAWhK,KAChCgK,EAAahH,EAAO,CAAC,EAAGgH,GACxB4K,EAAU5K,WAAWvD,QAAQ1C,EAAM,CAAC,GAAOoG,GAAUH,EAAYjG,GACnE,CAEIkU,IAEFrD,EAAUzK,OAAS8N,EAXrB,CAaF,EAKArD,EAAU9N,UAAUoR,OAAS,SAAiB3Q,GAGxCjF,UAAUzB,OAAS,IAKrB0G,EAAQvE,EAAO,CAAC,EAAG,CACjBhD,KAAMsC,UAAU,GAChBS,MAAOT,UAAU,IAChBA,UAAU,IAAM,CAAEwM,GAAI,CAAEgC,WAAYlK,SAIzC,IAAIzG,EAAQoH,EAAMkI,aAkBlB,OAjBMlI,aAAiBiL,IACrBjL,EAAQ,IAAIiL,EAAMjL,IAGpBX,KAAK8N,OAAOrP,KAAKkC,GAGbA,EAAMiI,QACR5I,KAAKmK,SAAU,IAAOxJ,EAAQ,GAAIpH,GAASoH,EAAMpH,OAEjDyG,KAAKuR,UAAU5Q,EAAOpH,GAASoH,EAAMpH,OAAO,GAAMiY,MAAK,SAAUC,GAC/D9Q,EAAM7G,MAAM0R,MAAQiG,EAAOjG,MAC3B7K,EAAM7G,MAAM2R,SAAWgG,EAAOjG,KAChC,IAGFxL,KAAK0R,SAAS/Q,EAAOA,EAAME,OACpBF,CACT,EAKAqN,EAAU9N,UAAUuN,KAAO,SAAerU,EAAMU,GAC9C,IAAI6G,EAAQX,KAAK2R,cAAcvY,GACzBuH,GAAU7G,GAIhB6G,EAAMgN,SAAS7T,EACjB,EAKAkU,EAAU9N,UAAU0R,OAAS,SAAiBxY,EAAMyH,GAClD,IAAIF,EAAQvH,aAAgBwS,EAAQxS,EAAO4G,KAAK2R,cAAcvY,EAAMyH,GACpE,GAAKF,EAAL,CAEAA,EAAMkN,UACN7N,KAAKuC,OAAOxE,OAAO4C,EAAMvH,KAAMuH,EAAME,MAAOF,EAAM5B,IAClDiB,KAAK8N,OAAO/P,OAAO4C,GACnB,IAAI7G,EAAQkG,KAAKlG,OACZR,EAAkBqH,EAAME,QAAU/G,EAAO,IAAO6G,EAAW,cACvD7G,EAAO,IAAO6G,EAAW,OAAIA,EAAMvH,MACjCE,EAAkBqH,EAAME,eAC1B/G,EAAM6G,EAAMvH,MAGrB4G,KAAKlG,MAAQsC,EAAO,CAAC,EAAGtC,EAZF,CAaxB,EAKAkU,EAAU9N,UAAU4Q,OAAS,SAAiB1X,EAAMkT,EAAW1E,QAC1C,IAAZA,IAAqBA,EAAU,CAAC,GAEvCoG,EAAU8C,OAAO1X,EAAMkT,EAAW1E,EACpC,EAEAoG,EAAU9N,UAAUoN,MAAQ,SAAgBqC,GACxC,IAAItP,EAASL,KAGf,OAAOA,KAAKwQ,IAAIqB,YAAYL,MAAK,WAC/B,OAAOnR,EAAOmQ,IAAIqB,WACpB,IAAGL,MAAK,WACNnR,EAAOyN,OAAOzM,OAAOsO,GAASxR,SAAQ,SAAUwC,GAC9CA,EAAM2M,QACNjN,EAAOkC,OAAOxE,OAAO4C,EAAMvH,KAAMuH,EAAME,MAAOF,EAAM5B,GACtD,GACF,GACF,EAKAiP,EAAU9N,UAAUe,OAAS,SAAiBlC,EAAI2B,GAC9C,IAAIG,EAAQH,EAAIG,MAEdF,EAAQX,KAAK2R,cAAe,IAAM5S,GACjC4B,IAGLX,KAAKuC,OAAOtB,OAAOlC,EAAI,CAAE8B,MAAOA,KAC3BvH,EAAkBqH,EAAME,QAAUb,KAAKlG,MAAO,IAAO6G,EAAW,cAC5DX,KAAKlG,MAAO,IAAO6G,EAAW,OAAIA,EAAMvH,MACtCE,EAAkBqH,EAAME,eAC1Bb,KAAKlG,MAAM6G,EAAMvH,MAG1B4G,KAAK0R,SAAS/Q,EAAOE,GACvB,EAKAmN,EAAU9N,UAAUnC,OAAS,SAAiB3E,GAC5C4U,EAAUjQ,OAAO3E,EACnB,EAKA4U,EAAU9N,UAAUiK,SAAW,SAAmB/Q,EAAMG,EAAOsH,EAAOiR,GAClE,IAAIzR,EAASL,KAIf,QAHiB,IAAVa,IAAmBA,EAAQ,WAChB,IAAXiR,IAAoBA,GAAS,GAEhC9R,KAAKoQ,OAAU,OAAO2B,QAAQ3K,SAAQ,GAG1C,GAAyB,IAArB1L,UAAUzB,OACZ,OAAO+F,KAAKgS,iBAId,GAAyB,IAArBtW,UAAUzB,QAAiC,MAAjByB,UAAU,GACtC,OAAOsE,KAAKiS,cAId,GAAyB,IAArBvW,UAAUzB,QAAwC,kBAAjByB,UAAU,IAAmB,aAAa6D,KAAK7D,UAAU,IAAK,CACjG,IAAIwW,EAAUxW,UAAU,GAAGgC,MAAM,cAAc,GAC/C,OAAOsC,KAAKiS,YAAYC,EAC1B,CAEA,IAAIvR,EAAQX,KAAK2R,cAAcvY,EAAMyH,GACrC,OAAKF,GAIAmR,IAAUnR,EAAM7G,MAAMoS,SAAU,GACZ,IAArBxQ,UAAUzB,SACZV,EAAQoH,EAAMpH,OAGTyG,KAAKuR,UAAU5Q,EAAOpH,GAAOiY,MAAK,SAAUC,GAKjD,OAJKK,GACHzR,EAAO8R,yBAAyB,CAACV,IAG5BA,EAAOjG,KAChB,KAdSxL,KAAKoS,qBAAqBhZ,EAAMyH,EAe3C,EAKAmN,EAAU9N,UAAUmS,MAAQ,WAG1B,OAFArS,KAAKoQ,QAAS,EAEPpQ,IACT,EAKAgO,EAAU9N,UAAUoS,OAAS,WAG3B,OAFAtS,KAAKoQ,QAAS,EAEPpQ,IACT,EAKAgO,EAAU9N,UAAU+R,YAAc,SAAsBM,EAAQ1R,EAAOiR,GACnE,IAAIzR,EAASL,KAIf,QAHiB,IAAVa,IAAmBA,EAAQ,WAChB,IAAXiR,IAAoBA,GAAS,GAEhC9R,KAAKoQ,OAAU,OAAO2B,QAAQ3K,SAAQ,GAE1C,IAAIuI,EAAU,KACV6C,GAAiB,EAiBrB,MAfsB,kBAAXD,EACT5C,EAAU,CAAE9O,MAAO0R,GACVpY,EAASoY,IAClB5C,EAAUvV,OAAOC,KAAKkY,GAAQ5S,KAAI,SAAUpF,GAC1C,MAAO,CAAEnB,KAAMmB,EAAKsG,MAAOA,EAC7B,IACA2R,GAAiB,GAEjB7C,EADS5V,MAAMC,QAAQuY,GACbA,EAAO5S,KAAI,SAAUpF,GAC7B,MAAO,CAAEnB,KAAMmB,EAAKsG,MAAOA,EAC7B,IAEU,CAAEA,MAAOA,GAGdkR,QAAQ3Q,IACbpB,KAAK8N,OAAOzM,OAAOsO,GAAShQ,KAAI,SAAUgB,GAAS,OAAON,EAAOkR,UAAU5Q,EAAO6R,EAAiBD,EAAO5R,EAAMvH,MAAQuH,EAAMpH,MAAQ,KACtIiY,MAAK,SAAUiB,GAKf,OAJKX,GACHzR,EAAO8R,yBAAyBM,GAG3BA,EAAQnY,OAAM,SAAUmL,GAAK,OAAOA,EAAE+F,KAAO,GACtD,GACF,EAKAwC,EAAU9N,UAAU8R,eAAiB,SAAyBF,GAC1D,IAAIzR,EAASL,KAGf,YAFkB,IAAX8R,IAAoBA,GAAS,GAEhC9R,KAAKoQ,OAAiB2B,QAAQ3K,SAAQ,GAEnC2K,QAAQ3Q,IACbpB,KAAK8N,OAAOnO,KAAI,SAAUgB,GAAS,OAAON,EAAOkR,UAAU5Q,EAAOA,EAAMpH,MAAQ,KAChFiY,MAAK,SAAUiB,GAKf,OAJKX,GACHzR,EAAO8R,yBAAyBM,GAG3BA,EAAQnY,OAAM,SAAUmL,GAAK,OAAOA,EAAE+F,KAAO,GACtD,GACF,EAKAwC,EAAU9N,UAAU2N,QAAU,WAC5B7N,KAAKwQ,IAAI7B,KAAK,gBAAiB3O,KAAKuQ,gBACtC,EAKAvC,EAAU9N,UAAUiQ,cAAgB,SAAwBD,GACxD,IAAI7P,EAASL,KAEVkQ,GAEL9V,OAAOC,KAAK6V,GAAa/R,SAAQ,SAAUwC,GACzC,IAAIiH,EAAUxL,EAAO,CAAC,EAAG,CAAEhD,KAAMuH,EAAOxE,MAAO+T,EAAYvP,KAC3DN,EAAOiR,OAAO1J,EAChB,GACF,EAKAoG,EAAU9N,UAAUwS,eAAiB,SAAyBxC,GAC5D,IAAIrM,EAAS,KAKb,OAJIqM,EAAYyC,aAAe5Y,MAAMC,QAAQkW,EAAYyC,eACvD9O,EAASqM,EAAYyC,YAAY,IAG5B9O,GAAU7D,KAAKoD,WAAWW,cAAc/D,KAAKuD,OACtD,EAKAyK,EAAU9N,UAAU0S,aAAe,SAAuB1W,GACxD,SAAW,CAAC,QAAS,SAAU,eAAgB,eAAelD,QAAQkD,EACxE,EAKA8R,EAAU9N,UAAU2S,oBAAsB,SAA8BlS,EAAOzE,EAAM+H,EAAM6O,QACzE,IAAT7O,IAAkBA,EAAO,CAAC,QACX,IAAf6O,IAAwBA,EAAa,MAE5C,IAAI1Z,EAAO4G,KAAK+S,qBAAqBpS,GACjClE,EAASuD,KAAKgT,oBAAoB9W,EAAM4W,GAE5C,OAAO9S,KAAKoD,WAAWiB,gBAAgBrE,KAAKuD,OAAQ5C,EAAMvH,KAAM8C,EAAK9C,KAAM,CAACA,EAAMqD,EAAQwH,GAC5F,EAKA+J,EAAU9N,UAAU8S,oBAAsB,SAA8B9W,EAAM4W,GAG5E,YAFsB,IAAfA,IAAwBA,EAAa,OAEvC7C,EAAajX,QAAQkD,EAAK9C,OAAS8C,EAAKO,QAAUP,EAAKO,OAAO,GAE1D,CADaqW,GAAc9S,KAAKoD,WAAW/J,aAAa2G,KAAKuD,OAAQrH,EAAKO,OAAO,GAAIP,EAAKO,OAAO,KACjFkC,OAAOzC,EAAKO,OAAOG,MAAM,IAG3CV,EAAKO,MACd,EAKAuR,EAAU9N,UAAU6S,qBAAuB,SAA+BpS,GACxE,OAAOA,EAAM8L,OAASzM,KAAKoD,WAAW/J,aAAa2G,KAAKuD,OAAQ5C,EAAMvH,KAAMuH,EAAMvH,KACpF,EAKA4U,EAAU9N,UAAUwR,SAAW,SAAmB/Q,EAAOE,GACrD,IAAI1D,EAAK2C,EAAOmT,EAGlB,QADiB,IAAVpS,IAAmBA,EAAQ,MAC9BvH,EAAkBuH,GACpBb,KAAKlG,MAAQsC,EAAO,CAAC,EAAG4D,KAAKlG,QAASqD,EAAM,CAAC,GAAQ,GAAMwD,EAAU,MAAMA,EAAM7G,MAAOqD,QAD1F,CAKA,IAAI+V,EAAW9W,EAAO,CAAC,EAAG4D,KAAKlG,MAAO,IAAM+G,IAAW,CAAC,IAAKf,EAAQ,CAAC,GAAU,GAAMa,EAAU,MAAMA,EAAM7G,MAAOgG,IACnHE,KAAKlG,MAAQsC,EAAO,CAAC,EAAG4D,KAAKlG,QAASmZ,EAAQ,CAAC,GAAU,IAAMpS,GAAUqS,EAAUD,GAHnF,CAIF,EAKAjF,EAAU9N,UAAUiT,MAAQ,SAAgBxS,EAAOpH,EAAO2C,GACtD,IAAImE,EAASL,KAEXsM,EAAYyD,EAAM7T,EAAK9C,MACvBqD,EAAS1C,MAAMC,QAAQkC,EAAKO,QAAU4B,EAAQnC,EAAKO,QAAU,GAC7DqW,EAAa,KACjB,IAAKxG,GAAkC,oBAAdA,EACvB,OAAOyF,QAAQqB,OAAOnW,EAAa,sBAAyBf,EAAS,KAAI,cAI3E,IAAyC,IAArC+T,EAAajX,QAAQkD,EAAK9C,MAAc,CAC1C,IAAI0B,EAASmE,EAAK0B,EAAMiG,cAAc,SAAUiD,GAAK,OAAOA,EAAEzQ,OAAS8C,EAAK9C,IAAM,IAC9E0B,IACFgY,EAAahY,EAAO6F,MAAM8L,MAC1BhQ,EAAS,CAAC3B,EAAO6F,MAAMpH,OAAOoF,OAAOlC,EAAOG,MAAM,IAEtD,KAAyB,aAAdV,EAAK9C,MAAuBuH,EAAM+L,eAE3CjQ,EAASA,EAAOxC,OAASwC,EAAS,EAAC,IAGrC,GAAIuD,KAAK4S,aAAa1W,EAAK9C,MAAO,CAChC,IAAI0K,EAAa9D,KAAK0S,eAAe/R,EAAMxE,OACzB,gBAAdD,EAAK9C,MACPqD,EAAOgC,KAAKqF,EAEhB,CAEA,IAAI2N,EAASnF,EAAU/S,EAAOkD,GAG9B,OAAIW,EAAWqU,EAAOD,MACbC,EAAOD,MAAK,SAAUe,GAC3B,IAAIc,GAAW,EACXpP,EAAO,CAAC,EAQZ,OAPIlK,MAAMC,QAAQuY,GAChBc,EAAWd,EAAOjY,OAAM,SAAUmL,GAAK,OAAQtL,EAASsL,GAAKA,EAAE+F,MAAQ/F,CAAI,KAE3E4N,EAAWlZ,EAASoY,GAAUA,EAAO/G,MAAQ+G,EAC7CtO,EAAOsO,EAAOtO,MAGT,CACLuH,MAAO6H,EACP9Q,OAAQ8Q,EAAW,GAAK,CAAChT,EAAOiT,kBAAkB3S,EAAOzE,EAAM+H,EAAM6O,IAEzE,KAGG3Y,EAASsX,KACZA,EAAS,CAAEjG,MAAOiG,EAAQxN,KAAM,CAAC,IAG5B,CACLuH,MAAOiG,EAAOjG,MACdjJ,OAAQkP,EAAOjG,MAAQ,GAAK,CAACxL,KAAKsT,kBAAkB3S,EAAOzE,EAAMuV,EAAOxN,KAAM6O,KAElF,EAKA9E,EAAUgD,OAAS,SAAiB5X,EAAMkT,GACpClP,EAAWkP,GACbyD,EAAM3W,GAAQkT,GAIhByD,EAAM3W,GAAQkT,EAAUnC,SACpBmC,EAAUtI,YACZgK,EAAU5K,WAAWyB,WAAW7E,KAAKuD,OAAQnK,EAAMkT,EAAUtI,YAEjE,EAKAgK,EAAU+C,aAAe,SAAuB3X,EAAMkT,GACpD,IAAIlP,EAAWkP,KAIVlP,EAAWkP,EAAUnC,UACxB,MAAMlN,EACH,mCAAqC7D,EAAO,oDAGnD,EAKA4U,EAAU9N,UAAUoT,kBAAoB,SAA4B3S,EAAOzE,EAAM+H,EAAM6O,GACnF,IAAIzS,EAASL,KAEf,MAAO,CACLjB,GAAI4B,EAAM5B,GACV4B,MAAOA,EAAMvH,KACbwH,IAAKZ,KAAK6S,oBAAoBlS,EAAOzE,EAAM+H,EAAM6O,GACjD5W,KAAMA,EAAK9C,KACXyH,MAAOF,EAAME,MACbC,WAAY,WACV,OAAOT,EAAOwS,oBAAoBlS,EAAOzE,EAAM+H,EAAM6O,EACvD,EAEJ,EAKA9E,EAAU9N,UAAUyR,cAAgB,SAAwBvY,EAAMyH,GAChE,IAAKvH,EAAkBuH,GACrB,OAAOb,KAAK8N,OAAO7O,KAAK,CAAE7F,KAAMA,EAAMyH,MAAOA,IAG/C,GAAgB,MAAZzH,EAAK,GACP,OAAO4G,KAAK8N,OAAO7O,KAAK,CAAEF,GAAI3F,EAAKwD,MAAM,KAG3C,GAAIxD,EAAKJ,QAAQ,MAAQ,EAAG,CAC1B,IAAI0H,EAAMtH,EAAK4B,MAAM,KACfuY,EAAa7S,EAAI,GACjB8S,EAAY9S,EAAI9D,MAAM,GACxB+D,EAAQX,KAAK8N,OAAO7O,KAAK,CAAE7F,KAAMoa,EAAU3W,KAAK,KAAMgE,MAAO0S,IACjE,GAAI5S,EACF,OAAOA,CAEX,CAEA,OAAOX,KAAK8N,OAAO7O,KAAK,CAAE7F,KAAMA,EAAMyH,MAAO,MAC/C,EAKAmN,EAAU9N,UAAUkS,qBAAuB,SAA+BhZ,EAAMyH,GAC9E,IAAKb,KAAKiG,OAAU,OAAO8L,QAAQ3K,SAAQ,GAE3C,IAAIqM,EAAWna,EAAkBuH,GAASzH,GAAeE,EAAkBuH,GAAuB,GAAdA,EAAQ,KAAYzH,EAExG,OAAO2Y,QAAQqB,OAAOnW,EACnB,qCAAwCwW,EAAW,4BAExD,EAEAzF,EAAU9N,UAAUiS,yBAA2B,SAAmCM,GAC9E,IAAIpS,EAASL,KAEX0T,EAAWjB,EAAQ9S,KAAI,SAAU8R,GAAU,MAAO,CAAG1S,GAAI0S,EAAO1S,GAAO,IAC3EiB,KAAKuC,OAAOI,WAAW+Q,EAAS/T,KAAI,SAAUkQ,GAAK,OAAOA,EAAE9Q,EAAI,KAEhE0T,EAAQtU,SAAQ,SAAUsT,GACxBpR,EAAOkC,OAAOxE,OAAO0T,EAAO9Q,MAAO8Q,EAAO5Q,MAC5C,IACA,IAAI8S,EAAYlB,EAAQnW,QAAO,SAAUC,EAAMC,GAG7C,OAFAD,EAAKkC,KAAK5C,MAAMU,EAAMC,EAAK+F,QAEpBhG,CACT,GAAG,IAEHyD,KAAKuC,OAAO1E,IAAI8V,GAGhB3T,KAAK8N,OAAOzM,OAAOqS,GAAUvV,SAAQ,SAAUwC,GAC7C,IAAI8Q,EAASxS,EAAKwT,GAAS,SAAU1E,GAAK,OAAOA,EAAEhP,KAAO4B,EAAM5B,EAAI,IACpE4B,EAAMgN,SAAS,CACbzB,SAAS,EACTV,MAAOiG,EAAOjG,MACdS,WAAW,GAEf,GACF,EAKA+B,EAAU9N,UAAUqR,UAAY,SAAoB5Q,EAAOpH,GACvD,IAAI8G,EAASL,KAGf,GAAIW,EAAM6L,aAAgB7L,EAAM4L,aAAejT,EAAkBC,IAAoB,KAAVA,GACzE,OAAOwY,QAAQ3K,QAAQ,CAAEoE,OAAO,EAAMzM,GAAI4B,EAAM5B,GAAI4B,MAAOA,EAAMvH,KAAMyH,MAAOF,EAAME,MAAO0B,OAAQ,KAGrG,IAAIqR,EAAW,GACXrR,EAAS,GACTsR,GAAc,EAiBlB,OAfAzZ,OAAOC,KAAKsG,EAAMxE,OAAOyT,MAAK,SAAU1T,GACtC,IAAIuV,EAASpR,EAAO8S,MAAMxS,EAAOpH,EAAO,CAAEH,KAAM8C,EAAMO,OAAQkE,EAAMxE,MAAMD,KAW1E,OAVIkB,EAAWqU,EAAOD,MACpBoC,EAASnV,KAAKgT,GACLpR,EAAOkG,WAAakL,EAAOjG,OACpCjJ,EAAO9D,KAAK5C,MAAM0G,EAAQkP,EAAOlP,QACjCsR,GAAc,GAGdD,EAASnV,KAAK,IAAIsT,SAAQ,SAAU3K,GAAW,OAAOA,EAAQqK,EAAS,KAGlEoC,CACT,IAEIA,EACK9B,QAAQ3K,QAAQ,CAAEoE,OAAO,EAAOjJ,OAAQA,EAAQxD,GAAI4B,EAAM5B,GAAI4B,MAAOA,EAAMvH,KAAMyH,MAAOF,EAAME,QAGhGkR,QAAQ3Q,IAAIwS,GAAUpC,MAAK,SAAUiB,GAC1C,OAAOA,EAAQnW,QAAO,SAAUC,EAAMuX,GAClC,IAAIpT,EAQN,OANKoT,EAAEtI,QACJ9K,EAAMnE,EAAKgG,QAAQ9D,KAAK5C,MAAM6E,EAAKoT,EAAEvR,QAGxChG,EAAKiP,MAAQjP,EAAKiP,OAASsI,EAAEtI,MAEtBjP,CACT,GAAG,CAAEiP,OAAO,EAAMjJ,OAAQA,EAAQxD,GAAI4B,EAAM5B,GAAI4B,MAAOA,EAAMvH,KAAMyH,MAAOF,EAAME,OAClF,GACF,EAEAzG,OAAO4K,iBAAkBgJ,EAAU9N,UAAWuQ,GAC9CrW,OAAO4K,iBAAkBgJ,EAAW0C,GAOpC,IAWIqD,GAAkB,SAAU7L,EAAIN,GAAW,OAAO,IAAIoG,EAAU,KAAM,CAAE9F,GAAIA,EAAI3B,SAAUqB,EAAQrB,UAAa,EAE/GyN,GAAQ,CACVC,QAAS,WACP,OAAIjU,KAAKkK,aAAe/K,EAAmBa,KAAKmO,QACvC,CACLjE,WAAYlK,KAAKkK,YAId,CAAC,CACV,EACAgK,aAAc,WAEZ,IAAI/U,EAAmBa,KAAKmO,QAA5B,CAKKnO,KAAKmU,SACRtN,EAAOhH,MAAMG,KAAKoU,SAASC,eAAiB,CAAC,GAG/C,IAAIzM,EAAUf,EAAOO,QAAQpH,MACzBsU,EAAMtU,KAAKoU,SAASG,QAGnBvU,KAAKmU,SAAYnU,KAAKoU,SAASC,eAAiB,MAAM9U,KAAKS,KAAKoU,SAASC,cAAc/H,cAC1FtM,KAAKkK,WAAa6J,GAAgB/T,KAAM4H,IAG1C,IA1C8B4M,EA0C1BC,GA1C0BD,EA0CIxU,KAAKoU,SAAS9N,UAzC9CnM,EAASqa,KAAeA,EAAWtK,aA4C/BlK,KAAKkK,aAActC,EAAQtB,QAAWmO,IAC1CzU,KAAKkK,WAAa6J,GAAgB/T,KAAM4H,KAIpC6M,GAAezU,KAAKkK,eAKpBuK,GAAazU,KAAKkK,aACtBoK,EAAII,KAAKC,eAAe3U,KAAKkK,WAAY,SAAUlK,KAAKkK,WAAW3H,QACnE+R,EAAII,KAAKC,eAAe3U,KAAKkK,WAAY,QAASlK,KAAKkK,WAAWpQ,QAG9DkG,KAAKoU,SAASQ,WAClB5U,KAAKoU,SAASQ,SAAW,CAAC,GAG5B5U,KAAKoU,SAASQ,SAAShN,EAAQ5B,cAAgB,UAAY,WACzD,OAAOhG,KAAKkK,WAAW3H,MACzB,EACAvC,KAAKoU,SAASQ,SAAShN,EAAQ1B,eAAiB,UAAY,WAC1D,OAAOlG,KAAKkK,WAAWpQ,KACzB,EA1CA,CA2CF,EACA+a,cAAe,WACT1V,EAAmBa,KAAKmO,SAGxBnO,KAAKkK,YAAclK,KAAKkK,WAAWmG,UAAYrQ,KAAKsQ,OACtDtQ,KAAKkK,WAAWmI,QAChBrS,KAAKkK,WAAW2D,UAEpB,GAQF,SAASiH,GAAWnc,EAAI0O,GACtB,OAAKA,GAAYA,EAAQ6C,WAIlB7C,EAAQ6C,WAAW4D,OAAO7O,KAAK,CAAEF,GAAIpG,EAAGmU,iBAHtC,IAIX,CACA,IAkDIwH,GAlDAS,GAAY,CACd9K,KAAM,SAAetR,EAAI8O,EAASrI,GAChC,IAAIkN,EAAYlN,EAAMiI,QAAQ6C,WAC9B,GAAKoC,EAAL,CAQA,IAAI0I,EAAezN,EAAUC,SAAS7O,EAAI8O,EAASrI,GACnDkN,EAAUgF,OAAO0D,EAHjB,CAIF,EACAC,SAAU,SAAmBtc,EAAI8O,EAASrI,GACxC,IAAIuB,EAAQmU,GAAUnc,EAAIyG,EAAMiI,SAC5BxG,EAAQ0G,EAAUU,aAAatP,EAAI8O,EAASrI,GAG3CuB,GAASE,IAAUF,EAAME,QAG9BF,EAAMM,OAAO,CAAEJ,MAAOA,IAGtBF,EAAMkL,SAAU,EAClB,EACA5K,OAAQ,SAAiBtI,EAAI8O,EAASrI,GACpC,IAAIuB,EAAQmU,GAAUnc,EAAIyG,EAAMiI,SAGhC,MAAK1G,GAAUA,EAAMkL,SAAWpS,EAAQgO,EAAQlO,MAAOkO,EAAQyN,WAA/D,CACA,IAAIrU,EAAQ0G,EAAUU,aAAatP,EAAI8O,EAASrI,GAC5CjD,EAAQoL,EAAUoB,aAAahQ,EAAI8O,EAASrI,GAEhDuB,EAAMM,OAAO,CACXJ,MAAOA,EACP1E,MAAOA,GAN4E,CAQvF,EACAgZ,OAAQ,SAAiBxc,EAAI8O,EAAS/G,GACpC,IAAI2G,EAAU3G,EAAI2G,QAEd1G,EAAQmU,GAAUnc,EAAI0O,GACrB1G,GAEL0G,EAAQ6C,WAAW0H,OAAOjR,EAC5B,GAmDF,IAeIxD,GAEAgH,GAAW,CACbK,SAAU,SAAU7D,GAAS,MAAQ,OAASA,EAAQ,sBAAyB,EAC/EyU,MAAO,SAAUzU,EAAOD,GACtB,IAAI5F,EAAS4F,EAAI,GAGjB,MAAQ,OAASC,EAAQ,mBAFTD,EAAI,GAEsC,eAAiB,IAAM5F,EAAS,GAC9F,EACEua,WAAY,SAAU1U,GAAS,MAAQ,OAASA,EAAQ,gFAAmF,EAC3I2U,UAAW,SAAU3U,GAAS,MAAQ,OAASA,EAAQ,mDAAsD,EAC7G4U,aAAc,SAAU5U,GAAS,MAAQ,OAASA,EAAQ,kEAAqE,EAC/H6U,MAAO,SAAU7U,GAAS,MAAQ,OAASA,EAAQ,gDAAmD,EACtG8U,OAAQ,SAAU9U,EAAOD,GACvB,IAAI5F,EAAS4F,EAAI,GAGjB,MAAQ,OAASC,EAAQ,oBAFTD,EAAI,GAEuC,eAAiB,IAAM5F,EAAS,GAC/F,EACE4a,QAAS,SAAU/U,EAAOD,GAIxB,MAAQ,OAASC,EAAQ,0BAHfD,EAAI,GAG6C,QAFjDA,EAAI,GAE6D,GAC/E,EACEiV,UAAW,SAAUhV,GAAS,MAAQ,OAASA,EAAQ,+BAAkC,EACzFiV,YAAa,SAAUjV,GAAS,MAAQ,OAASA,EAAQ,oBAAuB,EAChFkV,aAAc,SAAUlV,EAAOD,GAI7B,MAAQ,OAASC,EAAQ,oBAHfD,EAAI,GAGuC,QAF3CA,EAAI,GAEuD,GACzE,EACEiS,YAAa,SAAUhS,EAAOD,GAG5B,MAAQ,OAASC,EAAQ,0BAFZD,EAAI,GAE6C,GAClE,EACEoV,QAAS,SAAUnV,EAAOD,QACX,IAARA,IAAiBA,EAAM,IAC5B,IAAIqV,EAAWrV,EAAI,GAEnB,YAFyC,IAAbqV,IAAsBA,EAAW,KAErD,OAASpV,EAAQ,2CAA8CoV,GAAyB,MAAbA,EAAwBA,EAAL,IAAiB,kBAC3H,EACEC,OAAQ,SAAUrV,EAAOD,GAGvB,MAAQ,OAASC,EAAQ,8CAFZD,EAAI,GAEiE,UACtF,EACEuV,WAAY,SAAUtV,EAAOD,GAI3B,MAAQ,OAASC,EAAQ,kBAHbD,EAAI,GAGqC,cAFxCA,EAAI,GAE6D,UAClF,EACEwV,MAAO,SAAUvV,GAAS,MAAQ,OAASA,EAAQ,+BAAkC,EACrFwV,IAAK,SAAUxV,GAAS,MAAQ,OAASA,EAAQ,8BAAiC,EAClFyV,MAAO,SAAUzV,GAAS,MAAQ,OAASA,EAAQ,0BAA6B,EAChF0V,SAAU,SAAU1V,GAAS,MAAQ,OAASA,EAAQ,+BAAkC,EACxF2V,QAAS,SAAU3V,GAAS,MAAQ,OAASA,EAAQ,4BAA+B,EACpF4V,GAAI,SAAU5V,GAAS,MAAQ,OAASA,EAAQ,oCAAuC,EACvF1G,OAAQ,SAAU0G,EAAOD,GACvB,IAAIzG,EAASyG,EAAI,GACb4I,EAAM5I,EAAI,GAEd,OAAI4I,EACM,OAAS3I,EAAQ,2BAA6B1G,EAAS,QAAUqP,EAAM,IAGzE,OAAS3I,EAAQ,mBAAqB1G,EAAS,GACzD,EACAqP,IAAK,SAAU3I,EAAOD,GAGpB,MAAQ,OAASC,EAAQ,kCAFZD,EAAI,GAEqD,cAC1E,EACE8V,UAAW,SAAU7V,EAAOD,GAG1B,MAAQ,OAASC,EAAQ,kBAFfD,EAAI,GAEqC,WACvD,EACE+V,MAAO,SAAU9V,GAAS,MAAQ,OAASA,EAAQ,qCAAwC,EAC3F0I,IAAK,SAAU1I,EAAOD,GAGpB,MAAQ,OAASC,EAAQ,2BAFZD,EAAI,GAE8C,cACnE,EACEgW,UAAW,SAAU/V,EAAOD,GAG1B,MAAQ,OAASC,EAAQ,kBAFfD,EAAI,GAEqC,WACvD,EACEiW,SAAU,SAAUhW,GAAS,MAAQ,OAASA,EAAQ,+BAAkC,EACxFiW,QAAS,SAAUjW,GAAS,MAAQ,OAASA,EAAQ,6CAAgD,EACrGkW,MAAO,SAAUlW,GAAS,MAAQ,OAASA,EAAQ,2BAA8B,EACjFqI,SAAU,SAAUrI,GAAS,MAAQ,OAASA,EAAQ,qBAAwB,EAC9EmW,KAAM,SAAUnW,EAAOD,GAGrB,MAAQ,OAASC,EAAQ,2BAnHR,SAAUmW,GAC7B,IACIC,EAAY,KAEZ7c,EAAa,KADjB4c,EAAOpN,OAAOoN,GAAQC,GACD,EAAIC,KAAKC,MAAMD,KAAKE,IAAIJ,GAAQE,KAAKE,IAAIH,IAC9D,OAAsD,GAA5CD,EAAOE,KAAKG,IAAIJ,EAAW7c,IAAIkd,QAAQ,GAAU,IAJ/C,CAAC,OAAQ,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAISld,EAC1E,CA6G0D,CAF3CwG,EAAI,IAEgE,GACnF,EACE2W,IAAK,SAAU1W,GAAS,MAAQ,OAASA,EAAQ,4BAA+B,GAG9E4C,GAAS,CACXnK,KAAM,KACN+K,SAAUA,GACVS,WAAY,CAAC,GAUf,SAAS0S,GAAKC,EAAQ3P,GAGpB,QAFiB,IAAZA,IAAqBA,EAAU,CAAC,IAEhCxK,EAAWma,GACd,OAAO7a,EAAK,0CAGd6a,EAAO,CAAEvJ,UAAWA,EAAWjO,SAAUA,EAAUyX,MAAOxJ,EAAU7R,OAASyL,EAC/E,CAjIgC,qBAAhB6P,aAoHdA,YAAYzJ,UAAUoD,WAAWjU,GAAM,CAAC,GAAOoG,GAAOnK,MAAQmK,GAAQpG,KAexE,IAAIua,GAAuB,KACvBC,GAAyB,IAGzBC,GAAW,CACbC,kBAAmB,OACnBC,UAAW,IAGXC,GAAI,YACJC,IAAK,CACH,gBACA,gBACA,iBAEFC,KAAM,WACNC,MAAO,CACL,eACA,eACA,gBAIFC,GAAI,aACJC,IAAK,cACLC,KAAM,uBACNC,IAAK,eACLC,KAAM,wBAENC,GAAI,sBACJC,KAAM,+BACNC,OAAQ,wCAGRC,SAAU,aACVC,UAAW,QACXC,WAAY,kBACZC,aAAc,4BA4ChB,SAASC,GAAQC,EAAUC,GACzB,GAAIvd,UAAUzB,OAAS,EACrB,MAAM,IAAI2E,UAAU,iCAAmClD,UAAUzB,OAAS,YAG5E,GAAiB,OAAb+e,EACF,OAAO,IAAIE,KAAKC,KAGlB,IAAIvR,EAAUqR,GAAgB,CAAC,EAE3BG,OAAgD5f,IAA7BoO,EAAQwR,iBA1FD,EA0F8D1P,OAAO9B,EAAQwR,kBAC3G,GAAyB,IAArBA,GAA+C,IAArBA,GAA+C,IAArBA,EACtD,MAAM,IAAIC,WAAW,sCAIvB,GAAIL,aAAoBE,KAEtB,OAAO,IAAIA,KAAKF,EAASM,WACpB,GAAwB,kBAAbN,EAChB,OAAO,IAAIE,KAAKF,GAGlB,IAAIO,EAAcC,GAAgBR,GAE9BS,EAAkBC,GAAUH,EAAYI,KAAMP,GAC9CQ,EAAOH,EAAgBG,KACvBC,EAAiBJ,EAAgBI,eAEjCF,EAAOG,GAAUD,EAAgBD,GAErC,GAAID,EAAM,CACR,IAEII,EAFAC,EAAYL,EAAKL,UACjBW,EAAO,EAeX,OAZIV,EAAYU,OACdA,EAAOC,GAAUX,EAAYU,OAG3BV,EAAYZ,SACdoB,EAASI,GAAcZ,EAAYZ,WAGnCoB,EAAS,IAAIb,KAAKc,EAAYC,GAAMG,oBACpCL,EAAS,IAAIb,KAAKc,EAAYC,EAAOF,EAASpC,IAAwByC,qBAGjE,IAAIlB,KAAKc,EAAYC,EAAOF,EAASpC,GAC9C,CACE,OAAO,IAAIuB,KAAKF,EAEpB,CAEA,SAASQ,GAAiBa,GACxB,IAEIC,EAFAf,EAAc,CAAC,EACf/a,EAAQ6b,EAAWrf,MAAM4c,GAASC,mBAWtC,GARID,GAASE,UAAUvY,KAAKf,EAAM,KAChC+a,EAAYI,KAAO,KACnBW,EAAa9b,EAAM,KAEnB+a,EAAYI,KAAOnb,EAAM,GACzB8b,EAAa9b,EAAM,IAGjB8b,EAAY,CACd,IAAIhf,EAAQsc,GAASe,SAAS4B,KAAKD,GAC/Bhf,GACFie,EAAYU,KAAOK,EAAWrc,QAAQ3C,EAAM,GAAI,IAChDie,EAAYZ,SAAWrd,EAAM,IAE7Bie,EAAYU,KAAOK,CAEvB,CAEA,OAAOf,CACT,CAEA,SAASG,GAAWW,EAAYjB,GAC9B,IAGI9d,EAHAkf,EAAa5C,GAASI,IAAIoB,GAC1BqB,EAAe7C,GAASM,MAAMkB,GAMlC,GADA9d,EAAQsc,GAASK,KAAKsC,KAAKF,IAAeI,EAAaF,KAAKF,GACjD,CACT,IAAIK,EAAapf,EAAM,GACvB,MAAO,CACLse,KAAMla,SAASgb,EAAY,IAC3Bb,eAAgBQ,EAAWzd,MAAM8d,EAAWzgB,QAEhD,CAIA,GADAqB,EAAQsc,GAASG,GAAGwC,KAAKF,IAAeG,EAAWD,KAAKF,GAC7C,CACT,IAAIM,EAAgBrf,EAAM,GAC1B,MAAO,CACLse,KAAoC,IAA9Bla,SAASib,EAAe,IAC9Bd,eAAgBQ,EAAWzd,MAAM+d,EAAc1gB,QAEnD,CAGA,MAAO,CACL2f,KAAM,KAEV,CAEA,SAASE,GAAWO,EAAYT,GAE9B,GAAa,OAATA,EACF,OAAO,KAGT,IAAIte,EACAqe,EACAiB,EAIJ,GAA0B,IAAtBP,EAAWpgB,OAGb,OAFA0f,EAAO,IAAIT,KAAK,IACX2B,eAAejB,GACbD,EAKT,GADAre,EAAQsc,GAASO,GAAGoC,KAAKF,GAKvB,OAHAV,EAAO,IAAIT,KAAK,GAChB0B,EAAQlb,SAASpE,EAAM,GAAI,IAAM,EACjCqe,EAAKkB,eAAejB,EAAMgB,GACnBjB,EAKT,GADAre,EAAQsc,GAASQ,IAAImC,KAAKF,GACf,CACTV,EAAO,IAAIT,KAAK,GAChB,IAAI4B,EAAYpb,SAASpE,EAAM,GAAI,IAEnC,OADAqe,EAAKkB,eAAejB,EAAM,EAAGkB,GACtBnB,CACT,CAIA,GADAre,EAAQsc,GAASS,KAAKkC,KAAKF,GAChB,CACTV,EAAO,IAAIT,KAAK,GAChB0B,EAAQlb,SAASpE,EAAM,GAAI,IAAM,EACjC,IAAIyf,EAAMrb,SAASpE,EAAM,GAAI,IAE7B,OADAqe,EAAKkB,eAAejB,EAAMgB,EAAOG,GAC1BpB,CACT,CAIA,OADAre,EAAQsc,GAASU,IAAIiC,KAAKF,IAGjBW,GAAapB,EADbla,SAASpE,EAAM,GAAI,IAAM,IAKlCA,EAAQsc,GAASW,KAAKgC,KAAKF,IAIlBW,GAAapB,EAFbla,SAASpE,EAAM,GAAI,IAAM,EAChBoE,SAASpE,EAAM,GAAI,IAAM,GAKpC,IACT,CAEA,SAAS4e,GAAWI,GAClB,IAAIhf,EACA2f,EACAC,EAIJ,GADA5f,EAAQsc,GAASY,GAAG+B,KAAKD,GAGvB,OADAW,EAAQE,WAAW7f,EAAM,GAAG2C,QAAQ,IAAK,OACzB,GAAMyZ,GAKxB,GADApc,EAAQsc,GAASa,KAAK8B,KAAKD,GAIzB,OAFAW,EAAQvb,SAASpE,EAAM,GAAI,IAC3B4f,EAAUC,WAAW7f,EAAM,GAAG2C,QAAQ,IAAK,MACnCgd,EAAQ,GAAMvD,GACpBwD,EAAUvD,GAKd,GADArc,EAAQsc,GAASc,OAAO6B,KAAKD,GAClB,CACTW,EAAQvb,SAASpE,EAAM,GAAI,IAC3B4f,EAAUxb,SAASpE,EAAM,GAAI,IAC7B,IAAI8f,EAAUD,WAAW7f,EAAM,GAAG2C,QAAQ,IAAK,MAC/C,OAAQgd,EAAQ,GAAMvD,GACpBwD,EAAUvD,GACA,IAAVyD,CACJ,CAGA,OAAO,IACT,CAEA,SAASjB,GAAekB,GACtB,IAAI/f,EACAggB,EAIJ,OADAhgB,EAAQsc,GAASgB,UAAU2B,KAAKc,IAEvB,GAIT/f,EAAQsc,GAASiB,WAAW0B,KAAKc,KAE/BC,EAA0C,GAAzB5b,SAASpE,EAAM,GAAI,IACf,MAAbA,EAAM,IAAeggB,EAAiBA,IAIhDhgB,EAAQsc,GAASkB,aAAayB,KAAKc,KAEjCC,EAA0C,GAAzB5b,SAASpE,EAAM,GAAI,IAAWoE,SAASpE,EAAM,GAAI,IAC7C,MAAbA,EAAM,IAAeggB,EAAiBA,GAGzC,CACT,CAEA,SAASN,GAAcO,EAASC,EAAMT,GACpCS,EAAOA,GAAQ,EACfT,EAAMA,GAAO,EACb,IAAIpB,EAAO,IAAIT,KAAK,GACpBS,EAAKkB,eAAeU,EAAS,EAAG,GAChC,IACIE,EAAc,EAAPD,EAAWT,EAAM,GADHpB,EAAK+B,aAAe,GAG7C,OADA/B,EAAKgC,WAAWhC,EAAKiC,aAAeH,GAC7B9B,CACT,CAuBA,SAASkC,GAAiBC,EAAWC,EAAa9C,GAChD,GAAIvd,UAAUzB,OAAS,EACrB,MAAM,IAAI2E,UAAU,kCAAoClD,UAAUzB,OAAS,YAG7E,IAAI+f,EAAYjB,GAAO+C,EAAW7C,GAAcK,UAC5C0C,EAAStS,OAAOqS,GACpB,OAAO,IAAI7C,KAAKc,EAAYgC,EAC9B,CAEA,SAASC,GAAaC,GACpBA,EAAcA,GAAe,CAAC,EAC9B,IAAIC,EAAS,CAAC,EAEd,IAAK,IAAIC,KAAYF,EACfA,EAAYG,eAAeD,KAC7BD,EAAOC,GAAYF,EAAYE,IAInC,OAAOD,CACT,CAyBA,SAASG,GAAYR,EAAWC,EAAa9C,GAC3C,GAAIvd,UAAUzB,OAAS,EACrB,MAAM,IAAI2E,UAAU,kCAAoClD,UAAUzB,OAAS,YAG7E,IAAI+hB,EAAStS,OAAOqS,GACpB,OAAOF,GAAgBC,EA7BM,IA6BKE,EAAmC/C,EACvE,CAoCA,SAASsD,GAAST,EAAW7C,GAC3B,GAAIvd,UAAUzB,OAAS,EACrB,MAAM,IAAI2E,UAAU,iCAAmClD,UAAUzB,OAAS,YAG5E,IAAI0f,EAAOZ,GAAO+C,EAAW7C,GAC7B,OAAQuD,MAAM7C,EAChB,CAEA,IAAI8C,GAAuB,CACzBC,iBAAkB,CAChBC,IAAK,qBACLC,MAAO,+BAGTC,SAAU,CACRF,IAAK,WACLC,MAAO,qBAGTE,YAAa,gBAEbC,iBAAkB,CAChBJ,IAAK,qBACLC,MAAO,+BAGTI,SAAU,CACRL,IAAK,WACLC,MAAO,qBAGTK,YAAa,CACXN,IAAK,eACLC,MAAO,yBAGTM,OAAQ,CACNP,IAAK,SACLC,MAAO,mBAGTO,MAAO,CACLR,IAAK,QACLC,MAAO,kBAGTQ,aAAc,CACZT,IAAK,gBACLC,MAAO,0BAGTS,QAAS,CACPV,IAAK,UACLC,MAAO,oBAGTU,YAAa,CACXX,IAAK,eACLC,MAAO,yBAGTW,OAAQ,CACNZ,IAAK,SACLC,MAAO,mBAGTY,WAAY,CACVb,IAAK,cACLC,MAAO,wBAGTa,aAAc,CACZd,IAAK,gBACLC,MAAO,2BA2BX,IAAIc,GAA2B,mBAE/B,SAASC,GAAsB9Z,GAC7B,OAAOA,EAAO5F,QAAQyf,IAA0B,SAAUpiB,GACxD,OAAOA,EAAMsB,MAAM,EACrB,GACF,CA6DA,IAAIghB,GAnBJ,SAA4BzgB,GAC1B,IAAI0gB,EAAmB,CACrBC,IAAK3gB,EAAI2gB,IACTC,GAAI5gB,EAAI4gB,GACRC,EAAG7gB,EAAI6gB,EACPC,GAAI9gB,EAAI8gB,GACRC,IAAK/gB,EAAI+gB,IACTC,KAAMhhB,EAAIghB,KACVC,EAAGjhB,EAAIihB,GAAKT,GAAqBxgB,EAAI6gB,GACrCK,GAAIlhB,EAAIkhB,IAAMV,GAAqBxgB,EAAI8gB,IACvCK,IAAKnhB,EAAImhB,KAAOX,GAAqBxgB,EAAI+gB,KACzCK,KAAMphB,EAAIohB,MAAQZ,GAAqBxgB,EAAIghB,OAG7C,OAAO,SAAU7iB,GACf,OAAOuiB,EAAiBviB,EAC1B,CACF,CAEiBkjB,CAAkB,CACjCT,GAAI,UACJD,IAAK,aACLE,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,8BAGJM,GAAuB,CACzBC,SAAU,sBACVC,UAAW,oBACXC,MAAO,gBACPC,SAAU,mBACVC,SAAU,eACVlC,MAAO,KAwCT,SAASmC,GAAiBxM,EAAQyM,EAAaC,GAC7C,OAAO,SAAUC,EAAYjG,GAC3B,IAAIrR,EAAUqR,GAAgB,CAAC,EAC3BhgB,EAAO2O,EAAQ3O,KAAO0I,OAAOiG,EAAQ3O,MAAQ+lB,EAGjD,OAFkBzM,EAAOtZ,IAASsZ,EAAOyM,IAC7BC,EAAgBA,EAAcvV,OAAOwV,IAAexV,OAAOwV,GAEzE,CACF,CAyBA,SAASC,GAAsB5M,EAAQyM,GACrC,OAAO,SAAU/F,GACf,IAAIrR,EAAUqR,GAAgB,CAAC,EAC3BhgB,EAAO2O,EAAQ3O,KAAO0I,OAAOiG,EAAQ3O,MAAQ+lB,EACjD,OAAOzM,EAAOtZ,IAASsZ,EAAOyM,EAChC,CACF,CAMA,IAAII,GAAgB,CAClBC,OAAQ,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAC7CC,MAAO,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAClDC,KAAM,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,aAGvEC,GAAc,CAChBF,MAAO,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACrFC,KAAM,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,aA4BnHE,GAAkB,CACpBC,UAAW,CAAC,KAAM,MAClBC,UAAW,CAAC,KAAM,MAClBJ,KAAM,CAAC,OAAQ,SAmEjB,SAASK,GAAchI,EAAUoH,GAC/B,OAAO,SAAUa,EAAa5G,GAC5B,IAAIrR,EAAUqR,GAAgB,CAAC,EAC3BhgB,EAAO2O,EAAQ3O,KAAO0I,OAAOiG,EAAQ3O,MAAQ+lB,EAC7C9V,EAAU0O,EAAS3e,IAAS2e,EAASoH,GAEzC,OADard,OAAOke,GACNniB,MAAMwL,EACtB,CACF,CAwBA,SAAS4W,GAAclI,EAAUoH,GAC/B,OAAO,SAAUe,EAAa9G,GAC5B,IAAIrR,EAAUqR,GAAgB,CAAC,EAC3BhgB,EAAO2O,EAAQ3O,KAAO0I,OAAOiG,EAAQ3O,MAAQ+lB,EAC7CgB,EAAgBpI,EAAS3e,IAAS2e,EAASoH,GAC3CiB,EAASF,EAAY,GAEzB,OAAOC,EAAcE,WAAU,SAAUhX,GACvC,OAAOA,EAAQ3J,KAAK0gB,EACtB,GACF,CACF,CAiDA,IA/B8B/W,GA0F1BiX,GAAW,CACbC,eAhcF,SAAyB9kB,EAAO4G,EAAO0F,GAGrC,IAAI6J,EASJ,OAXA7J,EAAUA,GAAW,CAAC,EAIpB6J,EADyC,kBAAhCgL,GAAqBnhB,GACrBmhB,GAAqBnhB,GACX,IAAV4G,EACAua,GAAqBnhB,GAAOqhB,IAE5BF,GAAqBnhB,GAAOshB,MAAM3e,QAAQ,YAAaiE,GAG9D0F,EAAQyY,UACNzY,EAAQ0Y,WAAa,EAChB,MAAQ7O,EAERA,EAAS,OAIbA,CACT,EA4aEmM,WAAYA,GACZ2C,eAtVF,SAAyBjlB,EAAOqe,EAAM6G,EAAU5Y,GAC9C,OAAO6W,GAAqBnjB,EAC9B,EAqVE8V,SAhMa,CACbqP,cA5BF,SAAwBC,EAAazH,GACnC,IAAI0H,EAASjX,OAAOgX,GAYhBE,EAASD,EAAS,IACtB,GAAIC,EAAS,IAAMA,EAAS,GAC1B,OAAQA,EAAS,IACf,KAAK,EACH,OAAOD,EAAS,KAClB,KAAK,EACH,OAAOA,EAAS,KAClB,KAAK,EACH,OAAOA,EAAS,KAGtB,OAAOA,EAAS,IAClB,EAIEE,QAAS9B,GAAgBK,GAAe,QACxC0B,SAAU3B,GAAqBC,GAAe,QAC9CxE,MAAOmE,GAAgBS,GAAa,QACpCuB,OAAQ5B,GAAqBK,GAAa,QAC1CwB,UAAWjC,GAAgBU,GAAiB,QAAQ,SAAUxE,GAC5D,OAAQA,EAAQ,IAAO,EAAI,EAAI,CACjC,IACAgG,WAAY9B,GAAqBM,GAAiB,SAwLlD/hB,MAvBU,CACVwjB,gBAzE4BhY,GA+BG,wBA9BxB,SAAU2W,GAEf,OADale,OAAOke,GACNniB,MAAMwL,GACtB,GAsEAuX,cA/CF,SAAuBV,GACrB,OAAOrgB,SAASqgB,EAAY,GAAI,GAClC,EA8CEe,SAAUlB,GA1CgB,CAC1BP,OAAQ,2BACRC,MAAO,kCACPC,KAAM,gEAuCwC,QAC9CsB,QAASf,GArCgB,CACzBxe,IAAK,CAAC,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,SAoCP,OAC5Cyf,OAAQnB,GAlCgB,CACxBN,MAAO,sDACPC,KAAM,6FAgCoC,QAC1C3E,MAAOkF,GA9BgB,CACvBxe,IAAK,CAAC,OAAQ,MAAO,QAAS,OAAQ,QAAS,QAAS,QAAS,OAAQ,MAAO,MAAO,MAAO,QA6BtD,OACxC2f,WAAYrB,GAhBgB,CAC5BN,MAAO,YACPC,KAAM,sBAc4C,QAClDyB,UAAWlB,GAZgB,CAC3Bxe,IAAK,CAAC,MAAO,QAWmC,QAgBhDsG,QAAS,CACPuZ,aAAc,EACdC,sBAAuB,IAQ3B,SAASC,GAAiBvF,EAAW7C,GACnC,IAAIU,EAAOZ,GAAO+C,EAAW7C,GACzBe,EAAYL,EAAKL,UACrBK,EAAK2H,YAAY,EAAG,GACpB3H,EAAK4H,YAAY,EAAG,EAAG,EAAG,GAC1B,IACIC,EAAaxH,EADUL,EAAKL,UAEhC,OAAOtC,KAAKC,MAAMuK,EAXQ,OAW8B,CAC1D,CAIA,SAASC,GAAmB3F,EAAW7C,GACrC,IAEIU,EAAOZ,GAAO+C,EAAW7C,GACzB8B,EAAMpB,EAAK+B,YACXD,GAAQV,EAJO,EAIc,EAAI,GAAKA,EAJvB,EAQnB,OAFApB,EAAKgC,WAAWhC,EAAKiC,aAAeH,GACpC9B,EAAK4H,YAAY,EAAG,EAAG,EAAG,GACnB5H,CACT,CAIA,SAAS+H,GAAmB5F,EAAW7C,GACrC,IAAIU,EAAOZ,GAAO+C,EAAW7C,GACzBW,EAAOD,EAAKgI,iBAEZC,EAA4B,IAAI1I,KAAK,GACzC0I,EAA0B/G,eAAejB,EAAO,EAAG,EAAG,GACtDgI,EAA0BL,YAAY,EAAG,EAAG,EAAG,GAC/C,IAAIM,EAAkBJ,GAAkBG,EAA2B3I,GAE/D6I,EAA4B,IAAI5I,KAAK,GACzC4I,EAA0BjH,eAAejB,EAAM,EAAG,GAClDkI,EAA0BP,YAAY,EAAG,EAAG,EAAG,GAC/C,IAAIQ,EAAkBN,GAAkBK,EAA2B7I,GAEnE,OAAIU,EAAKL,WAAauI,EAAgBvI,UAC7BM,EAAO,EACLD,EAAKL,WAAayI,EAAgBzI,UACpCM,EAEAA,EAAO,CAElB,CAIA,SAASoI,GAAuBlG,EAAW7C,GACzC,IAAIW,EAAO8H,GAAkB5F,EAAW7C,GACpCgJ,EAAkB,IAAI/I,KAAK,GAI/B,OAHA+I,EAAgBpH,eAAejB,EAAM,EAAG,GACxCqI,EAAgBV,YAAY,EAAG,EAAG,EAAG,GAC1BE,GAAkBQ,EAAiBhJ,EAEhD,CAMA,SAASiJ,GAAepG,EAAW7C,GACjC,IAAIU,EAAOZ,GAAO+C,EAAW7C,GACzBwC,EAAOgG,GAAkB9H,EAAMV,GAAcK,UAAY0I,GAAsBrI,EAAMV,GAAcK,UAKvG,OAAOtC,KAAKmL,MAAM1G,EAXS,QAWwB,CACrD,CAEA,IAAI2G,GAAa,CAEf,EAAK,SAAUzI,GACb,OAAOA,EAAK0I,cAAgB,CAC9B,EAGA,GAAM,SAAU1I,EAAM/R,GACpB,IAAIgT,EAAQjB,EAAK0I,cAAgB,EACjC,OAAOza,EAAQrE,OAAO6N,SAASqP,cAAc7F,EAAO,CAAC0H,KAAM,SAC7D,EAGA,GAAM,SAAU3I,GACd,OAAO4I,GAAgB5I,EAAK0I,cAAgB,EAAG,EACjD,EAGA,IAAO,SAAU1I,EAAM/R,GACrB,OAAOA,EAAQrE,OAAO6N,SAASwJ,MAAMjB,EAAK0I,cAAe,CAACppB,KAAM,SAClE,EAGA,KAAQ,SAAU0gB,EAAM/R,GACtB,OAAOA,EAAQrE,OAAO6N,SAASwJ,MAAMjB,EAAK0I,cAAe,CAACppB,KAAM,QAClE,EAGA,EAAK,SAAU0gB,GACb,OAAO3C,KAAKwL,MAAM7I,EAAK0I,cAAgB,GAAK,EAC9C,EAGA,GAAM,SAAU1I,EAAM/R,GACpB,IAAI6a,EAAUzL,KAAKwL,MAAM7I,EAAK0I,cAAgB,GAAK,GACnD,OAAOza,EAAQrE,OAAO6N,SAASqP,cAAcgC,EAAS,CAACH,KAAM,WAC/D,EAGA,EAAK,SAAU3I,GACb,OAAOA,EAAKiC,YACd,EAGA,GAAM,SAAUjC,EAAM/R,GACpB,OAAOA,EAAQrE,OAAO6N,SAASqP,cAAc9G,EAAKiC,aAAc,CAAC0G,KAAM,cACzE,EAGA,GAAM,SAAU3I,GACd,OAAO4I,GAAgB5I,EAAKiC,aAAc,EAC5C,EAGA,IAAO,SAAUjC,GACf,OAAO0H,GAAgB1H,EACzB,EAGA,KAAQ,SAAUA,EAAM/R,GACtB,OAAOA,EAAQrE,OAAO6N,SAASqP,cAAcY,GAAgB1H,GAAO,CAAC2I,KAAM,aAC7E,EAGA,KAAQ,SAAU3I,GAChB,OAAO4I,GAAgBlB,GAAgB1H,GAAO,EAChD,EAGA,GAAM,SAAUA,EAAM/R,GACpB,OAAOA,EAAQrE,OAAO6N,SAASyP,QAAQlH,EAAK+B,YAAa,CAACziB,KAAM,UAClE,EAGA,IAAO,SAAU0gB,EAAM/R,GACrB,OAAOA,EAAQrE,OAAO6N,SAASyP,QAAQlH,EAAK+B,YAAa,CAACziB,KAAM,SAClE,EAGA,KAAQ,SAAU0gB,EAAM/R,GACtB,OAAOA,EAAQrE,OAAO6N,SAASyP,QAAQlH,EAAK+B,YAAa,CAACziB,KAAM,QAClE,EAGA,EAAK,SAAU0gB,GACb,OAAOA,EAAK+B,WACd,EAGA,GAAM,SAAU/B,EAAM/R,GACpB,OAAOA,EAAQrE,OAAO6N,SAASqP,cAAc9G,EAAK+B,YAAa,CAAC4G,KAAM,aACxE,EAGA,EAAK,SAAU3I,GACb,OAAOA,EAAK+B,aAAe,CAC7B,EAGA,EAAK,SAAU/B,GACb,OAAOuI,GAAcvI,EACvB,EAGA,GAAM,SAAUA,EAAM/R,GACpB,OAAOA,EAAQrE,OAAO6N,SAASqP,cAAcyB,GAAcvI,GAAO,CAAC2I,KAAM,WAC3E,EAGA,GAAM,SAAU3I,GACd,OAAO4I,GAAgBL,GAAcvI,GAAO,EAC9C,EAGA,GAAM,SAAUA,GACd,OAAO4I,GAAgB5I,EAAKgI,iBAAkB,GAAGe,OAAO,EAC1D,EAGA,KAAQ,SAAU/I,GAChB,OAAO4I,GAAgB5I,EAAKgI,iBAAkB,EAChD,EAGA,GAAM,SAAUhI,GACd,OAAOhY,OAAO+f,GAAkB/H,IAAO+I,OAAO,EAChD,EAGA,KAAQ,SAAU/I,GAChB,OAAO+H,GAAkB/H,EAC3B,EAGA,EAAK,SAAUA,GACb,OAAOA,EAAKgJ,aACd,EAGA,GAAM,SAAUhJ,GACd,OAAO4I,GAAgB5I,EAAKgJ,cAAe,EAC7C,EAGA,EAAK,SAAUhJ,GACb,IAAIsB,EAAQtB,EAAKgJ,cACjB,OAAc,IAAV1H,EACK,GACEA,EAAQ,GACVA,EAAQ,GAERA,CAEX,EAGA,GAAM,SAAUtB,GACd,OAAO4I,GAAgBH,GAAc,EAAEzI,GAAO,EAChD,EAGA,EAAK,SAAUA,GACb,OAAOA,EAAKiJ,eACd,EAGA,GAAM,SAAUjJ,GACd,OAAO4I,GAAgB5I,EAAKiJ,gBAAiB,EAC/C,EAGA,EAAK,SAAUjJ,GACb,OAAOA,EAAKkJ,eACd,EAGA,GAAM,SAAUlJ,GACd,OAAO4I,GAAgB5I,EAAKkJ,gBAAiB,EAC/C,EAGA,EAAK,SAAUlJ,GACb,OAAO3C,KAAKC,MAAM0C,EAAKmJ,qBAAuB,IAChD,EAGA,GAAM,SAAUnJ,GACd,OAAO4I,GAAgBvL,KAAKC,MAAM0C,EAAKmJ,qBAAuB,IAAK,EACrE,EAGA,IAAO,SAAUnJ,GACf,OAAO4I,GAAgB5I,EAAKmJ,qBAAsB,EACpD,EAGA,EAAK,SAAUnJ,EAAM/R,GAEnB,OAAOmb,IADYnb,EAAQob,eAAiBrJ,GACTS,oBAAqB,IAC1D,EAGA,GAAM,SAAUT,EAAM/R,GAEpB,OAAOmb,IADYnb,EAAQob,eAAiBrJ,GACTS,oBACrC,EAGA,EAAK,SAAUT,EAAM/R,GACnB,IAAIqb,EAAerb,EAAQob,eAAiBrJ,EAC5C,OAAO3C,KAAKC,MAAMgM,EAAa3J,UAAY,IAC7C,EAGA,EAAK,SAAUK,EAAM/R,GAEnB,OADmBA,EAAQob,eAAiBrJ,GACxBL,SACtB,EAGA,EAAK,SAAUK,EAAM/R,GACnB,OAAOA,EAAQrE,OAAO6N,SAAS4P,UAAUrH,EAAKgJ,cAAe,CAAC1pB,KAAM,aACtE,EAGA,EAAK,SAAU0gB,EAAM/R,GACnB,OAAOA,EAAQrE,OAAO6N,SAAS4P,UAAUrH,EAAKgJ,cAAe,CAAC1pB,KAAM,aACtE,EAGA,GAAM,SAAU0gB,EAAM/R,GACpB,OAAOA,EAAQrE,OAAO6N,SAAS4P,UAAUrH,EAAKgJ,cAAe,CAAC1pB,KAAM,QACtE,GAGF,SAAS8pB,GAAgBhJ,EAAQmJ,GAC/BA,EAAYA,GAAa,GACzB,IAAIC,EAAOpJ,EAAS,EAAI,IAAM,IAC1BqJ,EAAYpM,KAAKqM,IAAItJ,GAErBmB,EAAUkI,EAAY,GAC1B,OAAOD,EAAOZ,GAFFvL,KAAKC,MAAMmM,EAAY,IAEE,GAAKF,EAAYX,GAAgBrH,EAAS,EACjF,CAEA,SAASqH,GAAiB5B,EAAQ2C,GAEhC,IADA,IAAIC,EAASvM,KAAKqM,IAAI1C,GAAQ6C,WACvBD,EAAOtpB,OAASqpB,GACrBC,EAAS,IAAMA,EAEjB,OAAOA,CACT,CAIA,SAASE,GAAe3H,EAAWC,EAAa9C,GAC9C,IAAIU,EAAOZ,GAAO+C,EAAW7C,GACzB+C,EAAStS,OAAOqS,GAEpB,OADApC,EAAK+J,cAAc/J,EAAKiJ,gBAAkB5G,GACnCrC,CACT,CAEA,IAAIgK,GAA6B,wDAC7BC,GAAgC,2JAyKpC,SAASC,GAAoBpkB,GAC3B,OAAIA,EAAM/B,MAAM,YACP+B,EAAMxB,QAAQ,UAAW,IAE3BwB,EAAMxB,QAAQ,MAAO,GAC9B,CAuBA,SAAS6lB,GAAYhI,EAAWC,EAAa9C,GAC3C,GAAIvd,UAAUzB,OAAS,EACrB,MAAM,IAAI2E,UAAU,kCAAoClD,UAAUzB,OAAS,YAG7E,IAAI+hB,EAAStS,OAAOqS,GACpB,OAAOO,GAAWR,GAAYE,EAAQ/C,EACxC,CAuBA,SAAS8K,GAASjI,EAAWkI,EAAoB/K,GAC/C,GAAIvd,UAAUzB,OAAS,EACrB,MAAM,IAAI2E,UAAU,kCAAoClD,UAAUzB,OAAS,YAG7E,IAAI0f,EAAOZ,GAAO+C,EAAW7C,GACzBgL,EAAgBlL,GAAOiL,EAAoB/K,GAC/C,OAAOU,EAAKL,UAAY2K,EAAc3K,SACxC,CAuBA,SAAS4K,GAAUpI,EAAWkI,EAAoB/K,GAChD,GAAIvd,UAAUzB,OAAS,EACrB,MAAM,IAAI2E,UAAU,kCAAoClD,UAAUzB,OAAS,YAG7E,IAAI0f,EAAOZ,GAAO+C,EAAW7C,GACzBgL,EAAgBlL,GAAOiL,EAAoB/K,GAC/C,OAAOU,EAAKL,UAAY2K,EAAc3K,SACxC,CA0BA,SAAS6K,GAAWC,EAAeC,EAAgBpL,GACjD,GAAIvd,UAAUzB,OAAS,EACrB,MAAM,IAAI2E,UAAU,kCAAoClD,UAAUzB,OAAS,YAG7E,IAAIqqB,EAAWvL,GAAOqL,EAAenL,GACjCsL,EAAYxL,GAAOsL,EAAgBpL,GACvC,OAAOqL,EAAShL,YAAciL,EAAUjL,SAC1C,CAEA,IAAIkL,GAAa,CACf,EAAK,iBACL,EAAK,qBACL,IAAO,kCACP,EAAK,qBACL,KAAQ,aACR,EAAK,qBACL,EAAK,cACL,EAAK,yBACL,GAAM,wBACNC,YAAa,QACbC,UAAW,WACXC,YAAa,WACbC,WAAY,WACZC,UAAW,UAGb,SAASC,GAAgB/E,GACvB,OAAOrgB,SAASqgB,EAAY,GAAI,GAClC,CAEA,IAAIgF,GAAU,CAEZ,GAAM,CACJzC,KAAM,eACN5kB,MAAO8mB,GAAWE,UAClBM,MAAO,SAAUjF,GACf,OAAO+E,GAAe/E,EACxB,GAIF,KAAQ,CACNuC,KAAM,OACN5kB,MAAO8mB,GAAWvM,KAClB+M,MAAOF,IAIT,GAAM,CACJxC,KAAM,UACN5kB,MAAO8mB,GAAWE,UAClBM,MAAO,SAAUjF,GACf,OAAO+E,GAAe/E,GAAe,IACvC,GAIF,KAAQ,CACNuC,KAAM,UACN5kB,MAAO8mB,GAAWvM,KAClB+M,MAAOF,IAIT,EAAK,CACHxC,KAAM,UACN5kB,MAAO8mB,GAAWC,YAClBO,MAAOF,IAIT,GAAM,CACJxC,KAAM,UACN5kB,MAAO,SAAUuiB,EAAQrY,GACvB,OAAOA,EAAQrE,OAAO7F,MAAMwjB,eAAejB,EAAQ,CAACqC,KAAM,WAC5D,EACA0C,MAAO,SAAUjF,EAAanY,GAC5B,OAAOA,EAAQrE,OAAO7F,MAAM+iB,cAAcV,EAAa,CAACuC,KAAM,WAChE,GAIF,EAAK,CACHA,KAAM,QACN5kB,MAAO8mB,GAAWS,EAClBD,MAAO,SAAUjF,GACf,OAAO+E,GAAe/E,GAAe,CACvC,GAIF,GAAM,CACJuC,KAAM,QACN5kB,MAAO,SAAUuiB,EAAQrY,GACvB,OAAOA,EAAQrE,OAAO7F,MAAMwjB,eAAejB,EAAQ,CAACqC,KAAM,SAC5D,EACA0C,MAAO,SAAUjF,EAAanY,GAC5B,OAAOA,EAAQrE,OAAO7F,MAAM+iB,cAAcV,EAAa,CAACuC,KAAM,UAAY,CAC5E,GAIF,GAAM,CACJA,KAAM,QACN5kB,MAAO8mB,GAAWE,UAClBM,MAAO,SAAUjF,GACf,OAAO+E,GAAe/E,GAAe,CACvC,GAIF,IAAO,CACLuC,KAAM,QACN5kB,MAAO,SAAUuiB,EAAQrY,GACvB,OAAOA,EAAQrE,OAAO7F,MAAMqjB,OAAOd,EAAQ,CAAChnB,KAAM,SACpD,EACA+rB,MAAO,SAAUjF,EAAanY,GAC5B,OAAOA,EAAQrE,OAAO7F,MAAMkd,MAAMmF,EAAa,CAAC9mB,KAAM,SACxD,GAIF,KAAQ,CACNqpB,KAAM,QACN5kB,MAAO,SAAUuiB,EAAQrY,GACvB,OAAOA,EAAQrE,OAAO7F,MAAMqjB,OAAOd,EAAQ,CAAChnB,KAAM,UAChD2O,EAAQrE,OAAO7F,MAAMqjB,OAAOd,EAAQ,CAAChnB,KAAM,SAC/C,EACA+rB,MAAO,SAAUjF,EAAanY,GAC5B,IAAIsd,EAActd,EAAQrE,OAAO7F,MAAMkd,MAAMmF,EAAa,CAAC9mB,KAAM,SAMjE,OAJmB,MAAfisB,IACFA,EAActd,EAAQrE,OAAO7F,MAAMkd,MAAMmF,EAAa,CAAC9mB,KAAM,WAGxDisB,CACT,GAIF,EAAK,CACH5C,KAAM,UACN5kB,MAAO8mB,GAAWW,EAClBH,MAAOF,IAIT,GAAM,CACJxC,KAAM,UACN5kB,MAAO,SAAUuiB,EAAQrY,GACvB,OAAOA,EAAQrE,OAAO7F,MAAMwjB,eAAejB,EAAQ,CAACqC,KAAM,WAC5D,EACA0C,MAAO,SAAUjF,EAAanY,GAC5B,OAAOA,EAAQrE,OAAO7F,MAAM+iB,cAAcV,EAAa,CAACuC,KAAM,WAChE,GAIF,GAAM,CACJA,KAAM,UACN5kB,MAAO8mB,GAAWE,UAClBM,MAAOF,IAIT,EAAK,CACHxC,KAAM,YACN5kB,MAAO8mB,GAAWC,YAClBO,MAAOF,IAIT,GAAM,CACJxC,KAAM,YACN5kB,MAAO,SAAUuiB,EAAQrY,GACvB,OAAOA,EAAQrE,OAAO7F,MAAMwjB,eAAejB,EAAQ,CAACqC,KAAM,aAC5D,EACA0C,MAAO,SAAUjF,EAAanY,GAC5B,OAAOA,EAAQrE,OAAO7F,MAAM+iB,cAAcV,EAAa,CAACuC,KAAM,aAChE,GAIF,GAAM,CACJA,KAAM,YACN5kB,MAAO,SAAUuiB,EAAQrY,GACvB,OAAOA,EAAQrE,OAAO7F,MAAMojB,SAASb,EAAQ,CAAChnB,KAAM,UACtD,EACA+rB,MAAO,SAAUjF,EAAanY,GAC5B,OAAOA,EAAQrE,OAAO7F,MAAMmjB,QAAQd,EAAa,CAAC9mB,KAAM,UAC1D,GAIF,IAAO,CACLqpB,KAAM,YACN5kB,MAAO,SAAUuiB,EAAQrY,GACvB,OAAOA,EAAQrE,OAAO7F,MAAMojB,SAASb,EAAQ,CAAChnB,KAAM,WAClD2O,EAAQrE,OAAO7F,MAAMojB,SAASb,EAAQ,CAAChnB,KAAM,UACjD,EACA+rB,MAAO,SAAUjF,EAAanY,GAC5B,IAAIsd,EAActd,EAAQrE,OAAO7F,MAAMmjB,QAAQd,EAAa,CAAC9mB,KAAM,UAMnE,OAJmB,MAAfisB,IACFA,EAActd,EAAQrE,OAAO7F,MAAMmjB,QAAQd,EAAa,CAAC9mB,KAAM,YAG1DisB,CACT,GAIF,KAAQ,CACN5C,KAAM,YACN5kB,MAAO,SAAUuiB,EAAQrY,GACvB,OAAOA,EAAQrE,OAAO7F,MAAMojB,SAASb,EAAQ,CAAChnB,KAAM,UAClD2O,EAAQrE,OAAO7F,MAAMojB,SAASb,EAAQ,CAAChnB,KAAM,WAC7C2O,EAAQrE,OAAO7F,MAAMojB,SAASb,EAAQ,CAAChnB,KAAM,UACjD,EACA+rB,MAAO,SAAUjF,EAAanY,GAC5B,IAAIsd,EAActd,EAAQrE,OAAO7F,MAAMmjB,QAAQd,EAAa,CAAC9mB,KAAM,SAUnE,OARmB,MAAfisB,GAGiB,OAFnBA,EAActd,EAAQrE,OAAO7F,MAAMmjB,QAAQd,EAAa,CAAC9mB,KAAM,aAG7DisB,EAActd,EAAQrE,OAAO7F,MAAMmjB,QAAQd,EAAa,CAAC9mB,KAAM,YAI5DisB,CACT,GAIF,EAAK,CACH5C,KAAM,eACN5kB,MAAO8mB,GAAWC,YAClBO,MAAO,SAAUjF,GACf,OAAO+E,GAAe/E,EACxB,GAIF,EAAK,CACHuC,KAAM,aACN5kB,MAAO8mB,GAAWY,EAClBJ,MAAOF,IAIT,GAAM,CACJxC,KAAM,aACN5kB,MAAO,SAAUuiB,EAAQrY,GACvB,OAAOA,EAAQrE,OAAO7F,MAAMwjB,eAAejB,EAAQ,CAACqC,KAAM,cAC5D,EACA0C,MAAO,SAAUjF,EAAanY,GAC5B,OAAOA,EAAQrE,OAAO7F,MAAM+iB,cAAcV,EAAa,CAACuC,KAAM,cAChE,GAIF,GAAM,CACJA,KAAM,aACN5kB,MAAO8mB,GAAWE,UAClBM,MAAOF,IAIT,IAAO,CACLxC,KAAM,YACN5kB,MAAO8mB,GAAWpM,IAClB4M,MAAOF,IAIT,KAAQ,CACNxC,KAAM,YACN5kB,MAAO,SAAUuiB,EAAQrY,GACvB,OAAOA,EAAQrE,OAAO7F,MAAMwjB,eAAejB,EAAQ,CAACqC,KAAM,aAC5D,EACA0C,MAAO,SAAUjF,EAAanY,GAC5B,OAAOA,EAAQrE,OAAO7F,MAAM+iB,cAAcV,EAAa,CAACuC,KAAM,aAChE,GAIF,KAAQ,CACNA,KAAM,YACN5kB,MAAO8mB,GAAWG,YAClBK,MAAOF,IAIT,EAAK,CACHxC,KAAM,YACN5kB,MAAO,SAAUuiB,EAAQrY,GACvB,OAAOA,EAAQrE,OAAO7F,MAAMujB,WAAWhB,EAAQ,CAAChnB,KAAM,SACxD,EACA+rB,MAAO,SAAUjF,EAAanY,GAC5B,OAAOA,EAAQrE,OAAO7F,MAAMsjB,UAAUjB,EAAa,CAAC9mB,KAAM,SAC5D,GAIF,GAAM,CACJqpB,KAAM,YACN5kB,MAAO,SAAUuiB,EAAQrY,GACvB,OAAOA,EAAQrE,OAAO7F,MAAMujB,WAAWhB,EAAQ,CAAChnB,KAAM,UACpD2O,EAAQrE,OAAO7F,MAAMujB,WAAWhB,EAAQ,CAAChnB,KAAM,SACnD,EACA+rB,MAAO,SAAUjF,EAAanY,GAC5B,IAAIsd,EAActd,EAAQrE,OAAO7F,MAAMsjB,UAAUjB,EAAa,CAAC9mB,KAAM,SAMrE,OAJmB,MAAfisB,IACFA,EAActd,EAAQrE,OAAO7F,MAAMsjB,UAAUjB,EAAa,CAAC9mB,KAAM,WAG5DisB,CACT,GAIF,EAAK,CACH5C,KAAM,QACN5kB,MAAO8mB,GAAWa,EAClBL,MAAOF,IAIT,GAAM,CACJxC,KAAM,QACN5kB,MAAO8mB,GAAWE,UAClBM,MAAOF,IAIT,EAAK,CACHxC,KAAM,iBACN5kB,MAAO8mB,GAAWS,EAClBD,MAAOF,IAIT,GAAM,CACJxC,KAAM,iBACN5kB,MAAO8mB,GAAWE,UAClBM,MAAOF,IAIT,EAAK,CACHxC,KAAM,UACN5kB,MAAO8mB,GAAW3U,EAClBmV,MAAOF,IAIT,GAAM,CACJxC,KAAM,UACN5kB,MAAO8mB,GAAWE,UAClBM,MAAOF,IAIT,EAAK,CACHxC,KAAM,UACN5kB,MAAO8mB,GAAW3U,EAClBmV,MAAOF,IAIT,GAAM,CACJxC,KAAM,UACN5kB,MAAO8mB,GAAWE,UAClBM,MAAOF,IAIT,EAAK,CACHxC,KAAM,eACN5kB,MAAO8mB,GAAWC,YAClBO,MAAO,SAAUjF,GACf,OAAqC,IAA9B+E,GAAe/E,EACxB,GAIF,GAAM,CACJuC,KAAM,eACN5kB,MAAO8mB,GAAWE,UAClBM,MAAO,SAAUjF,GACf,OAAqC,GAA9B+E,GAAe/E,EACxB,GAIF,IAAO,CACLuC,KAAM,eACN5kB,MAAO8mB,GAAWG,YAClBK,MAAOF,IAIT,EAAK,CACHxC,KAAM,WACN5kB,MAAO8mB,GAAWc,EAClBN,MAAO,SAAUjF,GACf,IAAIoD,EAAOpD,EAAY,GAGnBzE,EAAyB,GAFjB5b,SAASqgB,EAAY,GAAI,IACvBrgB,SAASqgB,EAAY,GAAI,IAEvC,MAAiB,MAAToD,EAAgB7H,GAAkBA,CAC5C,GAIF,GAAM,CACJgH,KAAM,WACN5kB,MAAO8mB,GAAWe,GAClBP,MAAO,SAAUjF,GACf,IAAIoD,EAAOpD,EAAY,GAGnBzE,EAAyB,GAFjB5b,SAASqgB,EAAY,GAAI,IACvBrgB,SAASqgB,EAAY,GAAI,IAEvC,MAAiB,MAAToD,EAAgB7H,GAAkBA,CAC5C,GAIF,EAAK,CACHgH,KAAM,YACN5kB,MAAO8mB,GAAWK,UAClBG,MAAO,SAAUjF,GACf,OAAqC,IAA9B+E,GAAe/E,EACxB,GAIF,EAAK,CACHuC,KAAM,YACN5kB,MAAO8mB,GAAWK,UAClBG,MAAOF,KAIXC,GAAW,EAAIA,GAAW,EAiG1B,IAAIS,GAAQ,CACVC,aAAc,CACZC,SAAU,GACVhiB,IAAK,SAAUiiB,EAAYpsB,GACzB,IACIqgB,EAAiB,IADP5C,KAAKC,MAAM0O,EAAWhM,KAAKgI,iBAAmB,KACjCpoB,EAG3B,OAFAosB,EAAWhM,KAAKkB,eAAejB,EAAM,EAAG,GACxC+L,EAAWhM,KAAK4H,YAAY,EAAG,EAAG,EAAG,GAC9BoE,CACT,GAGF/L,KAAM,CACJ8L,SAAU,GACVhiB,IAAK,SAAUiiB,EAAYpsB,GAGzB,OAFAosB,EAAWhM,KAAKkB,eAAethB,EAAO,EAAG,GACzCosB,EAAWhM,KAAK4H,YAAY,EAAG,EAAG,EAAG,GAC9BoE,CACT,GAGFpK,QAAS,CACPmK,SAAU,GACVhiB,IAAK,SAAUiiB,EAAYpsB,EAAOqO,GAtDtC,IAA4BkU,EAAW8J,EAAc3M,EAC/CU,EACA4B,EACAsK,EACApK,EACAwG,EAmDA,OADA0D,EAAWhM,KAAOqI,IAvDIlG,EAuDoC6J,EAAWhM,KAvDpCiM,EAuD0CrsB,EAtD3EogB,EAAOZ,GAAO+C,EADiC7C,EAuDmCrR,GArDlF2T,EAAU7R,OAAOkc,GACjBC,EAAkB7D,GAAsBrI,EAAMV,GAC9CwC,EAAOzE,KAAKC,OAAO0C,EAAKL,UAAYuM,EAAgBvM,WAR9B,QAStB2I,EAAkB,IAAI/I,KAAK,IACf2B,eAAeU,EAAS,EAAG,GAC3C0G,EAAgBV,YAAY,EAAG,EAAG,EAAG,IACrC5H,EAAOqI,GAAsBC,EAAiBhJ,IACzC0C,WAAWhC,EAAKiC,aAAeH,GAC7B9B,GA6CyF/R,GACrF+d,CACT,GAGFlD,QAAS,CACPiD,SAAU,GACVhiB,IAAK,SAAUiiB,EAAYpsB,GAGzB,OAFAosB,EAAWhM,KAAK2H,YAA0B,GAAb/nB,EAAQ,GAAQ,GAC7CosB,EAAWhM,KAAK4H,YAAY,EAAG,EAAG,EAAG,GAC9BoE,CACT,GAGF/K,MAAO,CACL8K,SAAU,GACVhiB,IAAK,SAAUiiB,EAAYpsB,GAGzB,OAFAosB,EAAWhM,KAAK2H,YAAY/nB,EAAO,GACnCosB,EAAWhM,KAAK4H,YAAY,EAAG,EAAG,EAAG,GAC9BoE,CACT,GAGFG,QAAS,CACPJ,SAAU,GACVhiB,IAAK,SAAUiiB,EAAYpsB,EAAOqO,GA5FtC,IAAwBkU,EAAWiK,EAAc9M,EAC3CU,EACAmM,EACArK,EA2FA,OADAkK,EAAWhM,KAAO8H,IA7FA3F,EA6FgC6J,EAAWhM,KA7FhCoM,EA6FsCxsB,EA5FnEogB,EAAOZ,GAAO+C,EAD6B7C,EA6F+BrR,GA3F1Eke,EAAUpc,OAAOqc,GACjBtK,EAAOyG,GAAcvI,EAAMV,GAAgB6M,EAC/CnM,EAAKgC,WAAWhC,EAAKiC,aAAsB,EAAPH,GAC7B9B,GAwFiF/R,GAC7E+d,CACT,GAGFK,UAAW,CACTN,SAAU,GACVhiB,IAAK,SAAUiiB,EAAYpsB,EAAOqO,GAGhC,OAFA+d,EAAWhM,KAvJjB,SAAoBmC,EAAWmK,EAAUhN,GACvC,IAAIrR,EAAUqR,GAAgB,CAAC,EAC3B1V,EAASqE,EAAQrE,OACjB2iB,EAAqB3iB,GAAUA,EAAOqE,SAAWrE,EAAOqE,QAAQuZ,aAChEgF,OAA6C3sB,IAAvB0sB,EAAmC,EAAIxc,OAAOwc,GACpE/E,OAAwC3nB,IAAzBoO,EAAQuZ,aAA6BgF,EAAsBzc,OAAO9B,EAAQuZ,cAG7F,KAAMA,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAI9H,WAAW,oDAGvB,IAAIM,EAAOZ,GAAO+C,EAAW7C,GACzB8B,EAAMrR,OAAOuc,GAObxK,IAHYV,EAAM,EACM,GAAK,EAEVoG,EAAe,EAAI,GAAKpG,EAL9BpB,EAAK+B,YAQtB,OADA/B,EAAKgC,WAAWhC,EAAKiC,aAAeH,GAC7B9B,CACT,CA+HwByM,CAAUT,EAAWhM,KAAMpgB,EAAOqO,GACpD+d,EAAWhM,KAAK4H,YAAY,EAAG,EAAG,EAAG,GAC9BoE,CACT,GAGFU,aAAc,CACZX,SAAU,GACVhiB,IAAK,SAAUiiB,EAAYpsB,EAAOqO,GAGhC,OAFA+d,EAAWhM,KApIjB,SAAuBmC,EAAWmK,EAAUhN,GAC1C,IAAI8B,EAAMrR,OAAOuc,GAEblL,EAAM,IAAM,IACdA,GAAY,GAGd,IACIpB,EAAOZ,GAAO+C,EAAW7C,GAMzBwC,IAHYV,EAAM,EACM,GAAK,EALd,EAOmB,EAAI,GAAKA,EAL9BpB,EAAK+B,YAQtB,OADA/B,EAAKgC,WAAWhC,EAAKiC,aAAeH,GAC7B9B,CACT,CAkHwB2M,CAAaX,EAAWhM,KAAMpgB,EAAOqO,GACvD+d,EAAWhM,KAAK4H,YAAY,EAAG,EAAG,EAAG,GAC9BoE,CACT,GAGFY,WAAY,CACVb,SAAU,GACVhiB,IAAK,SAAUiiB,EAAYpsB,GAGzB,OAFAosB,EAAWhM,KAAKgC,WAAWpiB,GAC3BosB,EAAWhM,KAAK4H,YAAY,EAAG,EAAG,EAAG,GAC9BoE,CACT,GAGF7K,UAAW,CACT4K,SAAU,GACVhiB,IAAK,SAAUiiB,EAAYpsB,GAGzB,OAFAosB,EAAWhM,KAAK2H,YAAY,EAAG/nB,GAC/BosB,EAAWhM,KAAK4H,YAAY,EAAG,EAAG,EAAG,GAC9BoE,CACT,GAGF3E,UAAW,CACT0E,SAAU,GACVhiB,IAAK,SAAUiiB,EAAYpsB,EAAOqO,GAEhC,OADA+d,EAAW3E,UAAYznB,EAChBosB,CACT,GAGF1K,MAAO,CACLyK,SAAU,GACVhiB,IAAK,SAAUiiB,EAAYpsB,EAAOqO,GAEhC,OADA+d,EAAWhM,KAAK4H,YAAYhoB,EAAO,EAAG,EAAG,GAClCosB,CACT,GAGFa,eAAgB,CACdd,SAAU,GACVhiB,IAAK,SAAUiiB,EAAYpsB,EAAOqO,GAChC,IAAIoZ,EAAY2E,EAAW3E,UAK3B,OAJiB,MAAbA,IACFznB,EAhIR,SAAuB0hB,EAAO+F,GAG5B,GAFyB,IAAdA,GAGT,GAAc,KAAV/F,EACF,OAAO,OAGT,GAAc,KAAVA,EACF,OAAO,GAAKA,EAIhB,OAAOA,CACT,CAkHgBwL,CAAaltB,EAAOynB,IAE9B2E,EAAWhM,KAAK4H,YAAYhoB,EAAO,EAAG,EAAG,GAClCosB,CACT,GAGFzK,QAAS,CACPwK,SAAU,GACVhiB,IAAK,SAAUiiB,EAAYpsB,GAEzB,OADAosB,EAAWhM,KAAK+J,cAAcnqB,EAAO,EAAG,GACjCosB,CACT,GAGFvK,QAAS,CACPsK,SAAU,GACVhiB,IAAK,SAAUiiB,EAAYpsB,GAEzB,OADAosB,EAAWhM,KAAK+M,cAAcntB,EAAO,GAC9BosB,CACT,GAGFgB,aAAc,CACZjB,SAAU,IACVhiB,IAAK,SAAUiiB,EAAYpsB,GAEzB,OADAosB,EAAWhM,KAAKiN,mBAAmBrtB,GAC5BosB,CACT,GAGFhN,SAAU,CACR+M,SAAU,IACVhiB,IAAK,SAAUiiB,EAAYpsB,GAEzB,OADAosB,EAAWhM,KAAO,IAAIT,KAAKyM,EAAWhM,KAAKL,UApKlB,IAoK8B/f,GAChDosB,CACT,GAGF3L,UAAW,CACT0L,SAAU,IACVhiB,IAAK,SAAUiiB,EAAYpsB,GAEzB,OADAosB,EAAWhM,KAAO,IAAIT,KAAK3f,GACpBosB,CACT,IAOAkB,GAA+B,wDAC/BC,GAA6B,2JAgRjC,SAASC,GAAsBpB,GAC7B,IAAIhM,EAAOgM,EAAWhM,KAClBM,EAAON,EAAKL,UAGZS,EAASJ,EAAKS,oBAQlB,OALAL,EAAS,IAAIb,KAAKe,EA3RW,IA2RJF,GAAmCK,oBAG5DuL,EAAWhM,KAAO,IAAIT,KAAKe,EA9RE,IA8RKF,GAE3B4L,CACT,CAEA,SAASqB,GAAsBvnB,GAC7B,OAAIA,EAAM/B,MAAM,YACP+B,EAAMxB,QAAQ,UAAW,IAE3BwB,EAAMxB,QAAQ,MAAO,GAC9B,CASA,SAASgpB,GAAatN,EAAMuN,GAC1B,GAAoB,kBAATvN,EACT,OAAO4C,GAAQ5C,GAAQA,EAAO,KAGhC,IAAIwN,EAlLN,SAAgBC,EAAiBC,EAAmBC,EAAerO,GACjE,GAAIvd,UAAUzB,OAAS,EACrB,MAAM,IAAI2E,UAAU,kCAAoClD,UAAUzB,OAAS,YAG7E,IAAIogB,EAAa1Y,OAAOylB,GACpBxf,EAAUqR,GAAgB,CAAC,EAE3BkI,OAAwC3nB,IAAzBoO,EAAQuZ,aAA6B,EAAIzX,OAAO9B,EAAQuZ,cAG3E,KAAMA,GAAgB,GAAKA,GAAgB,GACzC,MAAM,IAAI9H,WAAW,oDAGvB,IAAI9V,EAASqE,EAAQrE,QAAU4c,GAC3BoH,EAAgBhkB,EAAOwhB,SAAW,CAAC,EACnCyC,EAAcjkB,EAAOiiB,OAAS,CAAC,EAEnC,IAAKjiB,EAAO7F,MACV,MAAM,IAAI2b,WAAW,sCAGvB,IAAK9V,EAAOqa,WACV,MAAM,IAAIvE,WAAW,2CAGvB,IAAIoO,EAAe9lB,OAAO0lB,GACvBppB,QAAQ4oB,IAA8B,SAAUa,GAC/C,MAAqB,MAAjBA,EAAU,GACLA,EAGY,OAAjBA,EAAU,GACLV,GAAqBU,GAGvBnkB,EAAOqa,WAAW8J,EAC3B,IAEF,GAAqB,KAAjBD,EACF,MAAmB,KAAfpN,EACKtB,GAAOuO,EAAe1f,GAEtB,IAAIsR,KAAKC,KAIpB,IAAIwO,EAAe1L,GAAYrU,GAC/B+f,EAAapkB,OAASA,EAEtB,IAUIrJ,EAVA0tB,EAASH,EAAa/pB,MAAM6F,EAAOskB,qBAAuBf,IAC1DgB,EAAeF,EAAO3tB,OAGtB8tB,EAAU,CAAC,CACbrC,SA7LyB,IA8LzBhiB,IAAKqjB,GACLzmB,MAAO,IAIT,IAAKpG,EAAI,EAAGA,EAAI4tB,EAAc5tB,IAAK,CACjC,IAAIoB,EAAQssB,EAAO1tB,GACf8tB,EAAST,EAAcjsB,IAAUypB,GAAQzpB,GAC7C,GAAI0sB,EAAQ,CACV,IAAIjI,EAQJ,KALEA,EADEiI,EAAOtqB,iBAAiB9D,OACZouB,EAAOtqB,MAAM6c,KAAKF,GAElB2N,EAAOtqB,MAAM2c,EAAYsN,IAIvC,OAAO,IAAIzO,KAAKC,KAGlB,IAAI8O,EAAWD,EAAO1F,KAClBA,EAAOkF,EAAYS,IAAazC,GAAMyC,GAE1CF,EAAQtpB,KAAK,CACXinB,SAAUpD,EAAKoD,SACfhiB,IAAK4e,EAAK5e,IACVnK,MAAOyuB,EAAOhD,MAAMjF,EAAa4H,GACjCrnB,MAAOynB,EAAQ9tB,SAGjB,IAAIytB,EAAY3H,EAAY,GAC5B1F,EAAaA,EAAWzd,MAAM8qB,EAAUztB,OAC1C,KAAO,CACL,IAAIiuB,EAAON,EAAO1tB,GAAGwD,MAAM,WAAakqB,EAAO1tB,GAAG+D,QAAQ,UAAW,IAAM2pB,EAAO1tB,GAClF,GAAiC,IAA7BmgB,EAAWrhB,QAAQkvB,GAGrB,OAAO,IAAIhP,KAAKC,KAFhBkB,EAAaA,EAAWzd,MAAMsrB,EAAKjuB,OAIvC,CACF,CAEA,IAAIkuB,EAAwBJ,EACzBpoB,KAAI,SAAUyoB,GACb,OAAOA,EAAO1C,QAChB,IACC2C,MAAK,SAAUC,EAAGC,GACjB,OAAOD,EAAIC,CACb,IACClnB,QAAO,SAAUqkB,EAAUplB,EAAO9B,GACjC,OAAOA,EAAMxF,QAAQ0sB,KAAcplB,CACrC,IACCX,KAAI,SAAU+lB,GACb,OAAOqC,EACJ1mB,QAAO,SAAU+mB,GAChB,OAAOA,EAAO1C,WAAaA,CAC7B,IACC8C,SACL,IACC7oB,KAAI,SAAU8oB,GACb,OAAOA,EAAY,EACrB,IAEE9O,EAAOZ,GAAOuO,EAAe1f,GAEjC,GAAI4U,MAAM7C,GACR,OAAO,IAAIT,KAAKC,KAMlB,IAEIwM,EAAa,CAAChM,KAFJmK,GAAWnK,EAAMA,EAAKS,sBAIhCsO,EAAgBP,EAAsBluB,OAC1C,IAAKC,EAAI,EAAGA,EAAIwuB,EAAexuB,IAAK,CAClC,IAAIkuB,EAASD,EAAsBjuB,GACnCyrB,EAAayC,EAAO1kB,IAAIiiB,EAAYyC,EAAO7uB,MAAOouB,EACpD,CAEA,OAAOhC,EAAWhM,IACpB,CAqCeqL,CAAMrL,EAAMuN,EAAW,IAAIhO,MAIxC,OAAKqD,GAAQ4K,IA1rCf,SAAiBrL,EAAW6M,EAAgB1P,GAC1C,GAAIvd,UAAUzB,OAAS,EACrB,MAAM,IAAI2E,UAAU,kCAAoClD,UAAUzB,OAAS,YAG7E,IAAI2uB,EAAYjnB,OAAOgnB,GACnB/gB,EAAUqR,GAAgB,CAAC,EAE3B1V,EAASqE,EAAQrE,QAAU4c,GAE/B,IAAK5c,EAAO6N,SACV,MAAM,IAAIiI,WAAW,yCAGvB,IAAK9V,EAAOqa,WACV,MAAM,IAAIvE,WAAW,2CAGvB,IAAIwP,EAAmBtlB,EAAO6e,YAAc,CAAC,EACzC0G,EAAyBvlB,EAAOulB,wBAA0BlF,GAC1DhG,EAAara,EAAOqa,WAEpBqF,EAAelK,GAAO+C,EAAWlU,GAErC,IAAK2U,GAAQ0G,EAAcrb,GACzB,MAAO,eAMT,IAAImhB,EAAiB9F,EAAa7I,oBAC9B4O,EAAUvF,GAAcR,GAAe8F,EAAgBnhB,GAEvDqhB,EAAmBhN,GAAYrU,GA+BnC,OA9BAqhB,EAAiB1lB,OAASA,EAC1B0lB,EAAiB7G,WAAaA,GAK9B6G,EAAiBjG,cAAgBC,EAEpB2F,EACV3qB,QAAQ0lB,IAA4B,SAAU+D,GAC7C,MAAqB,MAAjBA,EAAU,GACLA,EAGY,OAAjBA,EAAU,GACL7D,GAAmB6D,GAGrB9J,EAAW8J,EACpB,IACCzpB,QAAQ6qB,GAAwB,SAAUpB,GACzC,IAAIwB,EAAYL,EAAiBnB,IAActF,GAAWsF,GAE1D,OAAIwB,EACKA,EAAUF,EAASC,GAEnBpF,GAAmB6D,EAE9B,GAGJ,CAwnC0B7jB,CAAOsjB,EAAQD,KAAevN,EAI/CwN,EAHE,IAIX,CA2BA,IAAI3R,GAAQ,CACV/Q,GAAI,YACJ0kB,GAAI,0FACJC,GAAI,wBACJC,GAAI,4BACJC,GAAI,wCACJC,GAAI,gFACJC,GAAI,kEACJC,GAAI,oCACJC,GAAI,oDACJC,GAAI,gEACJC,GAAI,gEACJC,GAAI,4BACJC,GAAI,8FACJC,GAAI,0CACJC,GAAI,gDACJC,GAAI,gEACJC,GAAI,uRAGFC,GAAc,CAChB1lB,GAAI,cACJ0kB,GAAI,4FACJC,GAAI,0BACJC,GAAI,8BACJC,GAAI,0CACJC,GAAI,kFACJC,GAAI,oEACJC,GAAI,sCACJC,GAAI,sDACJC,GAAI,kEACJC,GAAI,kEACJC,GAAI,8BACJC,GAAI,gGACJC,GAAI,4CACJC,GAAI,kDACJC,GAAI,kEACJC,GAAI,yRAGFE,GAAe,CACjB3lB,GAAI,eACJ0kB,GAAI,6FACJC,GAAI,0BACJC,GAAI,+BACJC,GAAI,2CACJC,GAAI,mFACJC,GAAI,qEACJE,GAAI,uDACJD,GAAI,uCACJE,GAAI,mEACJC,GAAI,mEACJC,GAAI,+BACJC,GAAI,iGACJC,GAAI,6CACJC,GAAI,mDACJC,GAAI,mEACJC,GAAI,sVAGFG,GAAY,CACd5lB,GAAI,iBACJ0kB,GAAI,+FACJC,GAAI,6BACJC,GAAI,iCACJC,GAAI,6CACJC,GAAI,qFACJC,GAAI,uEACJC,GAAI,yCACJC,GAAI,yDACJC,GAAI,qEACJC,GAAI,qEACJC,GAAI,iCACJC,GAAI,mGACJC,GAAI,+CACJC,GAAI,qDACJC,GAAI,qEACJC,GAAI,wVAGF/f,GAAW,SAAU5Q,EAAOmH,QACjB,IAARA,IAAiBA,EAAM,IAC5B,IAAI6C,EAAS7C,EAAI,GAEjB,YAFqC,IAAX6C,IAAoBA,EAAS,MAEnDxJ,MAAMC,QAAQT,GACTA,EAAMe,OAAM,SAAUgwB,GAAO,OAAOngB,GAASmgB,EAAK,CAAC/mB,GAAU,IAIhEA,GAIEiS,GAAMjS,IAAWiS,GAAM/Q,IAAIlF,KAAKhG,GAH/Ba,OAAOC,KAAKmb,IAAO5F,MAAK,SAAU2a,GAAO,OAAO/U,GAAM+U,GAAKhrB,KAAKhG,EAAQ,GAInF,EAEIixB,GAAa,SAAUjxB,EAAOmH,QACnB,IAARA,IAAiBA,EAAM,IAC5B,IAAI6C,EAAS7C,EAAI,GAEjB,YAFqC,IAAX6C,IAAoBA,EAAS,MAEnDxJ,MAAMC,QAAQT,GACTA,EAAMe,OAAM,SAAUgwB,GAAO,OAAOE,GAAWF,EAAK,CAAC/mB,GAAU,IAIlEA,GAIE8mB,GAAU9mB,IAAW8mB,GAAU5lB,IAAIlF,KAAKhG,GAHvCa,OAAOC,KAAKgwB,IAAWza,MAAK,SAAU2a,GAAO,OAAOF,GAAUE,GAAKhrB,KAAKhG,EAAQ,GAI3F,EAEIkxB,GAAa,SAAUlxB,EAAOmH,QACnB,IAARA,IAAiBA,EAAM,IAC5B,IAAI6C,EAAS7C,EAAI,GAEjB,YAFqC,IAAX6C,IAAoBA,EAAS,MAEnDxJ,MAAMC,QAAQT,GACTA,EAAMe,OAAM,SAAUgwB,GAAO,OAAOG,GAAWH,EAAK,CAAC/mB,GAAU,IAIlEA,GAIE6mB,GAAa7mB,IAAW6mB,GAAa3lB,IAAIlF,KAAKhG,GAH7Ca,OAAOC,KAAK+vB,IAAcxa,MAAK,SAAU2a,GAAO,OAAOH,GAAaG,GAAKhrB,KAAKhG,EAAQ,GAIjG,EAEImxB,GAAa,SAAUnxB,EAAOmH,QACnB,IAARA,IAAiBA,EAAM,IAC5B,IAAI6C,EAAS7C,EAAI,GAEjB,YAFqC,IAAX6C,IAAoBA,EAAS,MAEnDxJ,MAAMC,QAAQT,GACTA,EAAMe,OAAM,SAAUgwB,GAAO,OAAOI,GAAWJ,EAAK,CAAC/mB,GAAU,IAIlEA,GAIE4mB,GAAY5mB,IAAW4mB,GAAY1lB,IAAIlF,KAAKhG,GAH3Ca,OAAOC,KAAK8vB,IAAava,MAAK,SAAU2a,GAAO,OAAOJ,GAAYI,GAAKhrB,KAAKhG,EAAQ,GAI/F,EAsBA,IAAIoxB,GAAa,SAAUpxB,EAAOmH,GAChC,IAAI2I,EAAM3I,EAAI,GACV4I,EAAM5I,EAAI,GAEd,OAAI3G,MAAMC,QAAQT,GACTA,EAAMe,OAAM,SAAUgwB,GAAO,OAAOK,GAAWL,EAAK,CAACjhB,EAAKC,GAAO,IAGnEI,OAAOL,IAAQ9P,GAASmQ,OAAOJ,IAAQ/P,CAChD,EAIA,SAASqxB,GAAeC,GACvB,OAAOA,GAAKA,EAAEC,YAAc1wB,OAAO8F,UAAUmc,eAAe0O,KAAKF,EAAG,WAAaA,EAAW,QAAIA,CACjG,CAEA,SAASG,GAAqB7vB,EAAI8vB,GACjC,OAAiC9vB,EAA1B8vB,EAAS,CAAEC,QAAS,CAAC,GAAgBD,EAAOC,SAAUD,EAAOC,OACrE,CAEA,IAAIC,GAAiBH,IAAqB,SAAUC,EAAQC,GAE5D9wB,OAAOgxB,eAAeF,EAAS,aAAc,CAC3C3xB,OAAO,IAET2xB,EAAQnkB,QACR,SAAsBtH,GAGpB,KAFgC,kBAAVA,GAAsBA,aAAiBkC,QAG3D,MAAM,IAAI/C,UAAU,qDAExB,EACAqsB,EAAOC,QAAUA,EAAiB,OAClC,IAEAN,GAAcO,IAEd,IAAIE,GAAiBL,IAAqB,SAAUC,EAAQC,GAE5D9wB,OAAOgxB,eAAeF,EAAS,aAAc,CAC3C3xB,OAAO,IAET2xB,EAAQnkB,QAYR,SAAsBukB,IACpB,EAAIC,EAAexkB,SAASukB,GAC5B,IAAIE,EAAYF,EAAIrtB,QAAQ,SAAU,IACtC,IAAKwtB,EAAWlsB,KAAKisB,GACnB,OAAO,EAMT,IAJA,IAAIE,EAAM,EACNC,OAAQ,EACRC,OAAS,EACTC,OAAe,EACV3xB,EAAIsxB,EAAUvxB,OAAS,EAAGC,GAAK,EAAGA,IACzCyxB,EAAQH,EAAU9D,UAAUxtB,EAAGA,EAAI,GACnC0xB,EAASlsB,SAASisB,EAAO,IAIrBD,GAHAG,IACFD,GAAU,IACI,GACLA,EAAS,GAAK,EAKhBA,EAETC,GAAgBA,EAElB,QAAUH,EAAM,KAAO,IAAIF,EAC7B,EAlCA,IAAID,EAEJ,SAAgCpuB,GAAO,OAAOA,GAAOA,EAAI2tB,WAAa3tB,EAAM,CAAE4J,QAAS5J,EAAO,CAFzE2uB,CAAuBX,IAK5C,IAAIM,EAAa,wOA8BjBR,EAAOC,QAAUA,EAAiB,OAClC,IAEIa,GAAenB,GAAcS,IAgDjC,IAAIW,GAAa,SAAUzyB,EAAOmH,QACnB,IAARA,IAAiBA,EAAM,IAC5B,IAAIqV,EAAWrV,EAAI,QAAsB,IAAbqV,IAAsBA,EAAW,KAC7D,IAAIkW,EAAYvrB,EAAI,GAEpB,QAF2C,IAAdurB,IAAuBA,EAAY,KAE5DlyB,MAAMC,QAAQT,GAChB,OAAOA,EAAMe,OAAM,SAAUgwB,GAAO,OAAO0B,GAAW1B,EAAK,CAACvU,EAAUkW,GAAa,IAGrF,GAAc,OAAV1yB,QAA4BC,IAAVD,GAAiC,KAAVA,EAC3C,OAAO,EAIT,GAAyB,IAArBmQ,OAAOqM,GACT,MAAO,UAAUxW,KAAKhG,GAMxB,IAFY,IAAIK,OAAQ,aAAeqyB,EAAY,OADtB,MAAblW,EAAmB,IAAO,MAAQA,EAAW,KACU,OAE3DxW,KAAKhG,GACf,OAAO,EAGT,IAAI2yB,EAAc/Q,WAAW5hB,GAG3B,OAAO2yB,IAAgBA,CAC3B,EAEIC,GAAa,SAAU5yB,EAAOmH,GAChC,IAAIzG,EAASyG,EAAI,GAEjB,GAAI3G,MAAMC,QAAQT,GAChB,OAAOA,EAAMe,OAAM,SAAUgwB,GAAO,OAAO6B,GAAW7B,EAAK,CAACrwB,GAAU,IAExE,IAAImyB,EAASzqB,OAAOpI,GAEpB,MAAO,WAAWgG,KAAK6sB,IAAWA,EAAOnyB,SAAWyP,OAAOzP,EAC7D,EAgCA,IAAIoyB,GAAUrB,IAAqB,SAAUC,EAAQC,GAErD9wB,OAAOgxB,eAAeF,EAAS,aAAc,CAC3C3xB,OAAO,IAET2xB,EAAQnkB,QACR,WACE,IAAI5J,EAAMzB,UAAUzB,OAAS,QAAsBT,IAAjBkC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC3E8R,EAAW9R,UAAU,GAEzB,IAAK,IAAInB,KAAOiT,EACU,qBAAbrQ,EAAI5C,KACb4C,EAAI5C,GAAOiT,EAASjT,IAGxB,OAAO4C,CACT,EACA8tB,EAAOC,QAAUA,EAAiB,OAClC,IAEAN,GAAcyB,IAEd,IAAIC,GAAiBtB,IAAqB,SAAUC,EAAQC,GAE5D9wB,OAAOgxB,eAAeF,EAAS,aAAc,CAC3C3xB,OAAO,IAGT,IAAIgzB,EAA4B,oBAAXpsB,QAAoD,kBAApBA,OAAOC,SAAwB,SAAUjD,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAyB,oBAAXgD,QAAyBhD,EAAIqvB,cAAgBrsB,QAAUhD,IAAQgD,OAAOD,UAAY,gBAAkB/C,CAAK,EAE3Q+tB,EAAQnkB,QASR,SAAsBukB,EAAK1jB,IACzB,EAAI2jB,EAAexkB,SAASukB,GAC5B,IAAIjiB,OAAM,EACNC,OAAM,EACgE,YAAlD,qBAAZ1B,EAA0B,YAAc2kB,EAAQ3kB,KAC1DyB,EAAMzB,EAAQyB,KAAO,EACrBC,EAAM1B,EAAQ0B,MAGdD,EAAM3N,UAAU,GAChB4N,EAAM5N,UAAU,IAElB,IAAID,EAAMgxB,UAAUnB,GAAKtwB,MAAM,SAASf,OAAS,EACjD,OAAOwB,GAAO4N,IAAuB,qBAARC,GAAuB7N,GAAO6N,EAC7D,EAnBA,IAAIiiB,EAEJ,SAAgCpuB,GAAO,OAAOA,GAAOA,EAAI2tB,WAAa3tB,EAAM,CAAE4J,QAAS5J,EAAO,CAFzE2uB,CAAuBX,IAoB5CF,EAAOC,QAAUA,EAAiB,OAClC,IAEAN,GAAc0B,IAEd,IAAII,GAAW1B,IAAqB,SAAUC,EAAQC,GAEtD9wB,OAAOgxB,eAAeF,EAAS,aAAc,CAC3C3xB,OAAO,IAET2xB,EAAQnkB,QAkBR,SAAgBukB,EAAK1jB,IACnB,EAAI2jB,EAAexkB,SAASukB,IAC5B1jB,GAAU,EAAI+kB,EAAQ5lB,SAASa,EAASglB,IAG5BC,oBAA8C,MAAxBvB,EAAIA,EAAIrxB,OAAS,KACjDqxB,EAAMA,EAAI5D,UAAU,EAAG4D,EAAIrxB,OAAS,IAGtC,IADA,IAAI6yB,EAAQxB,EAAItwB,MAAM,KACbd,EAAI,EAAGA,EAAI4yB,EAAM7yB,OAAQC,IAChC,GAAI4yB,EAAM5yB,GAAGD,OAAS,GACpB,OAAO,EAGX,GAAI2N,EAAQmlB,YAAa,CACvB,IAAIC,EAAMF,EAAMG,MAChB,IAAKH,EAAM7yB,SAAW,8CAA8CsF,KAAKytB,GACvE,OAAO,EAGT,GAAI,wDAAwDztB,KAAKytB,GAC/D,OAAO,CAEX,CACA,IAAK,IAAIE,EAAMC,EAAK,EAAGA,EAAKL,EAAM7yB,OAAQkzB,IAAM,CAK9C,GAJAD,EAAOJ,EAAMK,GACTvlB,EAAQwlB,oBACVF,EAAOA,EAAKjvB,QAAQ,KAAM,MAEvB,6BAA6BsB,KAAK2tB,GACrC,OAAO,EAGT,GAAI,kBAAkB3tB,KAAK2tB,GACzB,OAAO,EAET,GAAgB,MAAZA,EAAK,IAAwC,MAA1BA,EAAKA,EAAKjzB,OAAS,GACxC,OAAO,CAEX,CACA,OAAO,CACT,EAvDA,IAAIsxB,EAAiBO,EAAuBX,IAIxCwB,EAAUb,EAAuBO,IAErC,SAASP,EAAuB3uB,GAAO,OAAOA,GAAOA,EAAI2tB,WAAa3tB,EAAM,CAAE4J,QAAS5J,EAAO,CAE9F,IAAIyvB,EAAuB,CACzBG,aAAa,EACbK,mBAAmB,EACnBP,oBAAoB,GA6CtB5B,EAAOC,QAAUA,EAAiB,OAClC,IAEAN,GAAc8B,IAEd,IAAIW,GAAYrC,IAAqB,SAAUC,EAAQC,GAEvD9wB,OAAOgxB,eAAeF,EAAS,aAAc,CAC3C3xB,OAAO,IAET2xB,EAAQnkB,QAqCR,SAAiBukB,EAAK1jB,GAIpB,IAHA,EAAI2jB,EAAexkB,SAASukB,IAC5B1jB,GAAU,EAAI+kB,EAAQ5lB,SAASa,EAAS0lB,IAE5BC,sBAAwB3lB,EAAQ4lB,mBAAoB,CAC9D,IAAIC,EAAgBnC,EAAI5tB,MAAMgwB,GAC9B,GAAID,EACFnC,EAAMmC,EAAc,QACf,GAAI7lB,EAAQ2lB,qBACjB,OAAO,CAEX,CAEA,IAAIT,EAAQxB,EAAItwB,MAAM,KAClB2yB,EAASb,EAAMG,MACfW,EAAOd,EAAMjwB,KAAK,KAElBgxB,EAAeF,EAAOG,cAEL,cAAjBD,GAAiD,mBAAjBA,IAQlCD,EAAOA,EAAKE,eAGd,KAAK,EAAIC,EAAehnB,SAAS6mB,EAAM,CAAEtkB,IAAK,QAAU,EAAIykB,EAAehnB,SAAS4mB,EAAQ,CAAErkB,IAAK,MACjG,OAAO,EAGT,KAAK,EAAI0kB,EAASjnB,SAAS4mB,EAAQ,CAAEZ,YAAanlB,EAAQmlB,cACxD,OAAO,EAGT,GAAgB,MAAZa,EAAK,GAEP,OADAA,EAAOA,EAAKhxB,MAAM,EAAGgxB,EAAK3zB,OAAS,GAC5B2N,EAAQqmB,sBAAwBC,EAAoB3uB,KAAKquB,GAAQO,EAAgB5uB,KAAKquB,GAM/F,IAHA,IAAI1kB,EAAUtB,EAAQqmB,sBAAwBG,EAAoBC,EAE9DC,EAAaV,EAAK5yB,MAAM,KACnBd,EAAI,EAAGA,EAAIo0B,EAAWr0B,OAAQC,IACrC,IAAKgP,EAAQ3J,KAAK+uB,EAAWp0B,IAC3B,OAAO,EAIX,OAAO,CACT,EAtFA,IAAIqxB,EAAiBO,EAAuBX,IAIxCwB,EAAUb,EAAuBO,IAIjC0B,EAAiBjC,EAAuBQ,IAIxC0B,EAAWlC,EAAuBY,IAEtC,SAASZ,EAAuB3uB,GAAO,OAAOA,GAAOA,EAAI2tB,WAAa3tB,EAAM,CAAE4J,QAAS5J,EAAO,CAE9F,IAAImwB,EAAwB,CAC1BE,oBAAoB,EACpBD,sBAAsB,EACtBU,uBAAuB,EACvBlB,aAAa,GAKXW,EAAc,wKACdW,EAAgB,yCAChBF,EAAkB,kGAClBC,EAAoB,gFACpBF,EAAsB,gLA0D1BjD,EAAOC,QAAUA,EAAiB,OAClC,IAEIqD,GAAU3D,GAAcyC,IAiBxBmB,GAAa,SAAUj1B,EAAOqO,GAChC,OAAI7N,MAAMC,QAAQT,GACTA,EAAMe,OAAM,SAAUgwB,GAAO,OAAOkE,GAAWlE,EAAK1iB,EAAU,IAGhEvJ,EAAQuJ,GAASgI,MAAK,SAAUxR,GAErC,OAAOA,GAAQ7E,CACjB,GACF,EA0BA,IAAIk1B,GAASzD,IAAqB,SAAUC,EAAQC,GAEpD9wB,OAAOgxB,eAAeF,EAAS,aAAc,CAC3C3xB,OAAO,IAET2xB,EAAQnkB,QAWR,SAAS2nB,EAAKpD,GACZ,IAAIqD,EAAUjzB,UAAUzB,OAAS,QAAsBT,IAAjBkC,UAAU,GAAmBA,UAAU,GAAK,GAIlF,IAFA,EAAI6vB,EAAexkB,SAASukB,KAC5BqD,EAAUhtB,OAAOgtB,IAEf,OAAOD,EAAKpD,EAAK,IAAMoD,EAAKpD,EAAK,GAC5B,GAAgB,MAAZqD,EAAiB,CAC1B,IAAKC,EAAUrvB,KAAK+rB,GAClB,OAAO,EAET,IAAIwB,EAAQxB,EAAItwB,MAAM,KAAKqtB,MAAK,SAAUC,EAAGC,GAC3C,OAAOD,EAAIC,CACb,IACA,OAAOuE,EAAM,IAAM,GACrB,CAAO,GAAgB,MAAZ6B,EAAiB,CAC1B,IAAIE,EAASvD,EAAItwB,MAAM,KACnB8zB,GAAqB,EAMrBC,EAA2BL,EAAKG,EAAOA,EAAO50B,OAAS,GAAI,GAC3D+0B,EAAyBD,EAA2B,EAAI,EAE5D,GAAIF,EAAO50B,OAAS+0B,EAClB,OAAO,EAGT,GAAY,OAAR1D,EACF,OAAO,EACuB,OAArBA,EAAI5I,OAAO,EAAG,IACvBmM,EAAOI,QACPJ,EAAOI,QACPH,GAAqB,GACmB,OAA/BxD,EAAI5I,OAAO4I,EAAIrxB,OAAS,KACjC40B,EAAO5B,MACP4B,EAAO5B,MACP6B,GAAqB,GAGvB,IAAK,IAAI50B,EAAI,EAAGA,EAAI20B,EAAO50B,SAAUC,EAGnC,GAAkB,KAAd20B,EAAO30B,IAAaA,EAAI,GAAKA,EAAI20B,EAAO50B,OAAS,EAAG,CACtD,GAAI60B,EACF,OAAO,EAETA,GAAqB,CACvB,MAAO,GAAIC,GAA4B70B,IAAM20B,EAAO50B,OAAS,QAAU,IAAKi1B,EAAU3vB,KAAKsvB,EAAO30B,IAChG,OAAO,EAGX,OAAI40B,EACKD,EAAO50B,QAAU,EAEnB40B,EAAO50B,SAAW+0B,CAC3B,CACA,OAAO,CACT,EAnEA,IAAIzD,EAEJ,SAAgCpuB,GAAO,OAAOA,GAAOA,EAAI2tB,WAAa3tB,EAAM,CAAE4J,QAAS5J,EAAO,CAFzE2uB,CAAuBX,IAI5C,IAAIyD,EAAY,+CACZM,EAAY,mBA+DhBjE,EAAOC,QAAUA,EAAiB,OAClC,IAEIwD,GAAO9D,GAAc6D,IAwKzB,IAAIU,GAAUnE,IAAqB,SAAUC,EAAQC,GAErD9wB,OAAOgxB,eAAeF,EAAS,aAAc,CAC3C3xB,OAAO,IAET2xB,EAAQnkB,QA+CR,SAAesQ,EAAKzP,GAElB,IADA,EAAI2jB,EAAexkB,SAASsQ,IACvBA,GAAOA,EAAIpd,QAAU,MAAQ,SAASsF,KAAK8X,GAC9C,OAAO,EAET,GAA+B,IAA3BA,EAAIre,QAAQ,WACd,OAAO,EAET4O,GAAU,EAAI+kB,EAAQ5lB,SAASa,EAASwnB,GACxC,IAAIC,OAAW,EACXC,OAAO,EACPC,OAAO,EACPC,OAAW,EACXC,OAAO,EACPC,OAAW,EACX10B,OAAQ,EACR20B,OAAO,EASX,GAPA30B,EAAQqc,EAAIrc,MAAM,KAClBqc,EAAMrc,EAAMi0B,QAEZj0B,EAAQqc,EAAIrc,MAAM,KAClBqc,EAAMrc,EAAMi0B,SAEZj0B,EAAQqc,EAAIrc,MAAM,QACRf,OAAS,GAEjB,GADAo1B,EAAWr0B,EAAMi0B,QACbrnB,EAAQgoB,yBAAmE,IAAzChoB,EAAQioB,UAAU72B,QAAQq2B,GAC9D,OAAO,MAEJ,IAAIznB,EAAQkoB,iBACjB,OAAO,EACEloB,EAAQmoB,8BAAqD,OAArB1Y,EAAIqL,OAAO,EAAG,KAC/D1nB,EAAM,GAAKqc,EAAIqL,OAAO,GACxB,CAGA,GAAY,MAFZrL,EAAMrc,EAAM6B,KAAK,QAGf,OAAO,EAMT,GAHA7B,EAAQqc,EAAIrc,MAAM,KAGN,MAFZqc,EAAMrc,EAAMi0B,WAEOrnB,EAAQooB,aACzB,OAAO,EAIT,IADAh1B,EAAQqc,EAAIrc,MAAM,MACRf,OAAS,IACjBq1B,EAAOt0B,EAAMi0B,SACJj2B,QAAQ,MAAQ,GAAKs2B,EAAKt0B,MAAM,KAAKf,OAAS,EACrD,OAAO,EAGXu1B,EAAWx0B,EAAM6B,KAAK,KAEtB6yB,EAAW,KACXC,EAAO,KACP,IAAIM,EAAaT,EAAS9xB,MAAMwyB,GAC5BD,GACFV,EAAO,GACPI,EAAOM,EAAW,GAClBP,EAAWO,EAAW,IAAM,OAE5Bj1B,EAAQw0B,EAASx0B,MAAM,KACvBu0B,EAAOv0B,EAAMi0B,QACTj0B,EAAMf,SACRy1B,EAAW10B,EAAM6B,KAAK,OAI1B,GAAiB,OAAb6yB,IACFD,EAAO/vB,SAASgwB,EAAU,KACrB,WAAWnwB,KAAKmwB,IAAaD,GAAQ,GAAKA,EAAO,OACpD,OAAO,EAIX,KAAK,EAAIU,EAAOppB,SAASwoB,MAAU,EAAIvB,EAASjnB,SAASwoB,EAAM3nB,MAAc+nB,KAAS,EAAIQ,EAAOppB,SAAS4oB,EAAM,IAC9G,OAAO,EAKT,GAFAJ,EAAOA,GAAQI,EAEX/nB,EAAQwoB,iBAAmBC,EAAUd,EAAM3nB,EAAQwoB,gBACrD,OAAO,EAET,GAAIxoB,EAAQ0oB,gBAAkBD,EAAUd,EAAM3nB,EAAQ0oB,gBACpD,OAAO,EAGT,OAAO,CACT,EAxIA,IAAI/E,EAAiBO,EAAuBX,IAIxC6C,EAAWlC,EAAuBY,IAIlCyD,EAASrE,EAAuB2C,IAIhC9B,EAAUb,EAAuBO,IAErC,SAASP,EAAuB3uB,GAAO,OAAOA,GAAOA,EAAI2tB,WAAa3tB,EAAM,CAAE4J,QAAS5J,EAAO,CAE9F,IAAIiyB,EAAsB,CACxBS,UAAW,CAAC,OAAQ,QAAS,OAC7B9C,aAAa,EACb+C,kBAAkB,EAClBE,cAAc,EACdJ,wBAAwB,EACxBxC,mBAAmB,EACnBP,oBAAoB,EACpBkD,8BAA8B,GAG5BG,EAAe,+BAEnB,SAASK,EAASpzB,GAChB,MAA+C,oBAAxC/C,OAAO8F,UAAUsjB,SAASuH,KAAK5tB,EACxC,CAEA,SAASkzB,EAAUd,EAAM1iB,GACvB,IAAK,IAAI3S,EAAI,EAAGA,EAAI2S,EAAQ5S,OAAQC,IAAK,CACvC,IAAIwD,EAAQmP,EAAQ3S,GACpB,GAAIq1B,IAAS7xB,GAAS6yB,EAAS7yB,IAAUA,EAAM6B,KAAKgwB,GAClD,OAAO,CAEX,CACA,OAAO,CACT,CAgGAtE,EAAOC,QAAUA,EAAiB,OAClC,IAEIsF,GAAQ5F,GAAcuE,IAoB1B,IAAI3X,GAAqBpd,OAAOq2B,OAAO,CACrCrb,MArkCF,SAAgB7b,EAAOmH,GACrB,IAAIgwB,EAAahwB,EAAI,GACjBiwB,EAAYjwB,EAAI,GAChBwmB,EAAYxmB,EAAI,GAUpB,MARyB,qBAAdwmB,IACTA,EAAYyJ,EACZA,GAAY,GAEdp3B,EAAQ0tB,GAAY1tB,EAAO2tB,GAC3BwJ,EAAazJ,GAAYyJ,EAAYxJ,MAGhC3tB,IAAUm3B,KAIR3M,GAAQxqB,EAAOm3B,IAAgBC,GAAaxM,GAAU5qB,EAAOm3B,GACtE,EAojCErb,WAAYmV,GACZlV,UAAWmV,GACXlV,aAAcmV,GACdlV,MAAOrL,GACPsL,OAj6BF,SAAiBlc,EAAOmH,GACtB,IAAIgwB,EAAahwB,EAAI,GACjBiwB,EAAYjwB,EAAI,GAChBwmB,EAAYxmB,EAAI,GAUpB,MARyB,qBAAdwmB,IACTA,EAAYyJ,EACZA,GAAY,GAEdp3B,EAAQ0tB,GAAY1tB,EAAO2tB,GAC3BwJ,EAAazJ,GAAYyJ,EAAYxJ,MAGhC3tB,IAAUm3B,KAIRxM,GAAS3qB,EAAOm3B,IAAgBC,GAAaxM,GAAU5qB,EAAOm3B,GACvE,EAg5BEhb,QAASiV,GACThV,UAp4BF,SAAoBpc,EAAOqjB,GAAS,OAAOjb,OAAOpI,KAAWoI,OAAOib,EAAQ,EAq4B1EhH,YAxzBF,SAAsBrc,GAAS,OAAOwyB,GAAapqB,OAAOpI,GAAS,EAyzBjEsc,aAvzBF,SAAuBtc,EAAOkD,GAC5B,IAAIL,EAAQw0B,EAERC,EACAC,EACA5J,EACA6J,EAAc,KAEdt0B,EAAOxC,OAAS,GACA42B,GAAjBz0B,EAASK,GAAwB,GAAIq0B,EAAS10B,EAAO,GAAI20B,EAAc30B,EAAO,GAAI8qB,EAAY9qB,EAAO,KAElFy0B,GAAnBD,EAAWn0B,GAA0B,GAAIq0B,EAASF,EAAS,GAAI1J,EAAY0J,EAAS,IAGvF,IAAII,EAAU/J,GAAYtlB,OAAOkvB,GAAS3J,GACtC+J,EAAUhK,GAAYtlB,OAAOmvB,GAAS5J,GACtCgK,EAAUjK,GAAYtlB,OAAOpI,GAAQ2tB,GAEzC,SAAK8J,GAAYC,GAAYC,KAIT,OAAhBH,EACKhN,GAAQmN,EAASF,IAAY9M,GAASgN,EAASD,GAGpC,OAAhBF,EACKhN,GAAQmN,EAASF,KAAa7M,GAAU+M,EAASD,IAAY/M,GAASgN,EAASD,IAGpE,OAAhBF,EACK7M,GAASgN,EAASD,KAAa9M,GAAU+M,EAASF,IAAYjN,GAAQmN,EAASF,IAGjF7M,GAAU+M,EAASD,IAAY9M,GAAU+M,EAASF,IAClD9M,GAASgN,EAASD,IAAYlN,GAAQmN,EAASF,GACxD,EAoxBEre,YAlxBF,SAAsBpZ,EAAOmH,GAG3B,QAASumB,GAAY1tB,EAFRmH,EAAI,GAGnB,EA+wBEoV,QAASkW,GACThW,OAAQmW,GACRlW,WAxtBF,SAAqBhL,EAAOvK,GAK1B,IAJA,IAAIywB,EAAQzwB,EAAI,GACZ0wB,EAAS1wB,EAAI,GAEb2wB,EAAO,GACFn3B,EAAI,EAAGA,EAAI+Q,EAAMhR,OAAQC,IAAK,CAErC,IAAM,iCAAiCqF,KAAK0L,EAAM/Q,GAAGd,MACnD,OAAO,EAGTi4B,EAAK5yB,KAAKwM,EAAM/Q,GAClB,CAEA,OAAO6X,QAAQ3Q,IAAIiwB,EAAK1xB,KAAI,SAAU2xB,GAAQ,OA3B5B,SAAUA,EAAMH,EAAOC,GACzC,IAAIG,EAAMC,OAAOD,KAAOC,OAAOC,UAC/B,OAAO,IAAI1f,SAAQ,SAAU3K,GAC3B,IAAIgP,EAAQ,IAAIsb,MAChBtb,EAAMub,QAAU,WAAc,OAAOvqB,EAAQ,CAAEoE,OAAO,GAAU,EAChE4K,EAAMwb,OAAS,WAAc,OAAOxqB,EAAQ,CAC1CoE,MAAO4K,EAAM+a,QAAUznB,OAAOynB,IAAU/a,EAAMgb,SAAW1nB,OAAO0nB,IAC9D,EAEJhb,EAAMyb,IAAMN,EAAIO,gBAAgBR,EAClC,GACF,CAgBuDS,CAAcT,EAAMH,EAAOC,EAAS,IAC3F,EA0sBElb,MAlee,SAAU3c,EAAOmH,QACnB,IAARA,IAAiBA,EAAM,IAC5B,IAAIuI,EAAWvI,EAAI,GAMnB,YANyC,IAAbuI,IAAsBA,GAAW,GAEzDA,IACF1P,EAAQA,EAAMyB,MAAM,KAAK2E,KAAI,SAAUqyB,GAAY,OAAOA,EAASC,MAAQ,KAGzEl4B,MAAMC,QAAQT,GACTA,EAAMe,OAAM,SAAUgwB,GAAO,OAAOiE,GAAQ5sB,OAAO2oB,GAAO,IAG5DiE,GAAQ5sB,OAAOpI,GACxB,EAsdE4c,IAlcF,SAAclL,EAAOinB,GACnB,IAAIrb,EAAQ,IAAIjd,OAAQ,KAAQs4B,EAAWr1B,KAAK,KAAQ,KAAO,KAE/D,OAAOoO,EAAM3Q,OAAM,SAAUg3B,GAAQ,OAAOza,EAAMtX,KAAK+xB,EAAKl4B,KAAO,GACrE,EA+bEgd,MA7bF,SAAgBnL,GAAS,OAAOA,EAAM3Q,OAAM,SAAUg3B,GAAQ,MAAO,iCAAiC/xB,KAAK+xB,EAAKl4B,KAAO,GACpH,EA6bDid,SAAUmY,GACVlY,QA5bF,SAAkB/c,GAChB,OAAIQ,MAAMC,QAAQT,GACTA,EAAMe,OAAM,SAAUgwB,GAAO,MAAO,aAAa/qB,KAAKoC,OAAO2oB,GAAO,IAGtE,aAAa/qB,KAAKoC,OAAOpI,GAClC,EAubEU,OAtTF,SAAiBV,EAAOmH,GACtB,IAAIzG,EAASyG,EAAI,GACb4I,EAAM5I,EAAI,GAGd,YAH+B,IAAR4I,IAAiBA,OAAM9P,GAE9CS,EAASyP,OAAOzP,QACFT,IAAVD,GAAiC,OAAVA,IAIN,kBAAVA,IACTA,EAAQoI,OAAOpI,IAGZA,EAAMU,SACTV,EAAQ8E,EAAQ9E,IAzBN,SAAUA,EAAOU,EAAQqP,GACrC,YAAY9P,IAAR8P,EACK/P,EAAMU,SAAWA,GAI1BqP,EAAMI,OAAOJ,GAEN/P,EAAMU,QAAUA,GAAUV,EAAMU,QAAUqP,EACnD,CAmBS6oB,CAAQ54B,EAAOU,EAAQqP,GAChC,EAqSEiN,GApWF,SAAahd,EAAOmH,QACL,IAARA,IAAiBA,EAAM,IAC5B,IAAIiuB,EAAUjuB,EAAI,GAMlB,YANuC,IAAZiuB,IAAqBA,EAAU,GAEtDr1B,EAAkBC,KACpBA,EAAQ,IAGNQ,MAAMC,QAAQT,GACTA,EAAMe,OAAM,SAAUgwB,GAAO,OAAOoE,GAAKpE,EAAKqE,EAAU,IAG1DD,GAAKn1B,EAAOo1B,EACrB,EAwVEyD,OA/UF,SAAiB74B,EAAOmH,GAItB,YAHa,IAARA,IAAiBA,EAAM,IAGrBnH,IAFKmH,EAAI,EAGlB,EA2UE2xB,GAvVF,SAAa94B,EAAOmH,GAIlB,YAHa,IAARA,IAAiBA,EAAM,IAGrBnH,IAFKmH,EAAI,EAGlB,EAmVE4I,IAtSF,SAAgB/P,EAAOmH,GACrB,IAAIzG,EAASyG,EAAI,GAEjB,YAAclH,IAAVD,GAAiC,OAAVA,EAClBU,GAAU,EAGZ0H,OAAOpI,GAAOU,QAAUA,CACjC,EA+REuc,UA7RF,SAAoBjd,EAAOmH,GACzB,IAAI4I,EAAM5I,EAAI,GAEd,OAAI3G,MAAMC,QAAQT,IAAoB,OAAVA,QAA4BC,IAAVD,GAAiC,KAAVA,GAI9DmQ,OAAOnQ,IAAU+P,CAC1B,EAsREmN,MApRF,SAAgBxL,EAAOwL,GACrB,IAAII,EAAQ,IAAIjd,OAAS6c,EAAM5Z,KAAK,KAAKoB,QAAQ,IAAK,MAAS,IAAM,KAErE,OAAOgN,EAAM3Q,OAAM,SAAUg3B,GAAQ,OAAOza,EAAMtX,KAAK+xB,EAAKr4B,KAAO,GACrE,EAiREoQ,IA/QF,SAAgB9P,EAAOmH,GACrB,IAAIzG,EAASyG,EAAI,GAEjB,YAAclH,IAAVD,GAAiC,OAAVA,GAGpBoI,OAAOpI,GAAOU,QAAUA,CACjC,EAyQEyc,UAvQF,SAAoBnd,EAAOmH,GACzB,IAAI2I,EAAM3I,EAAI,GAEd,OAAI3G,MAAMC,QAAQT,IAAoB,OAAVA,QAA4BC,IAAVD,GAAiC,KAAVA,GAI9DmQ,OAAOnQ,IAAU8P,CAC1B,EAgQEsN,SAtdF,WAEE,IADA,IAAInb,EAAO,GAAIC,EAAMC,UAAUzB,OACvBwB,KAAQD,EAAMC,GAAQC,UAAWD,GAEzC,OAAQ+yB,GAAW3yB,WAAM,EAAQL,EACnC,EAkdEob,QA/PF,SAAkBrd,GAChB,OAAIQ,MAAMC,QAAQT,GACTA,EAAMe,OAAM,SAAUgwB,GAAO,MAAO,WAAW/qB,KAAKoC,OAAO2oB,GAAO,IAGpE,WAAW/qB,KAAKoC,OAAOpI,GAChC,EA0PEsd,MAxPF,SAAgBtd,EAAOmH,GACrB,IAAImW,EAAQnW,EAAI,GACZ5G,EAAQ4G,EAAI9D,MAAM,GAEtB,OAAIia,aAAiBjd,OACZid,EAAMtX,KAAKhG,GAGb,IAAIK,OAAOid,EAAO/c,GAAOyF,KAAKoC,OAAOpI,GAC9C,EAgPEyP,SA9OF,SAAmBzP,EAAOmH,QACX,IAARA,IAAiBA,EAAM,IAC5B,IAAI4xB,EAAkB5xB,EAAI,GAE1B,YAFuD,IAApB4xB,IAA6BA,GAAkB,GAE9Ev4B,MAAMC,QAAQT,KACNA,EAAMU,SAIJ,IAAVV,IAAmB+4B,UAIT94B,IAAVD,GAAiC,OAAVA,KAIjBoI,OAAOpI,GAAO04B,OAAOh4B,OACjC,EA6NE6c,KA3NF,SAAe7L,EAAOvK,GACpB,IAAIoW,EAAOpW,EAAI,GAEf,GAAI8b,MAAM1F,GACR,OAAO,EAIT,IADA,IAAIyb,EAAuB,KAAf7oB,OAAOoN,GACV5c,EAAI,EAAGA,EAAI+Q,EAAMhR,OAAQC,IAChC,GAAI+Q,EAAM/Q,GAAG4c,KAAOyb,EAClB,OAAO,EAIX,OAAO,CACT,EA6MElb,IApDF,SAAc9d,EAAOmH,QACN,IAARA,IAAiBA,EAAM,IAC5B,IAAI8xB,EAAkB9xB,EAAI,QAA6B,IAApB8xB,IAA6BA,GAAkB,GAElF,IAAI5qB,EAAU,CAAEkoB,mBAAoB0C,EAAiBpF,mBAAmB,GAKxE,OAJI9zB,EAAkBC,KACpBA,EAAQ,IAGNQ,MAAMC,QAAQT,GACTA,EAAMe,OAAM,SAAUgwB,GAAO,OAAOkG,GAAMlG,EAAK1iB,EAAU,IAG3D4oB,GAAMj3B,EAAOqO,EACtB,IA4DI6qB,GAAU,SAAU/4B,EAAKC,GAC3B,IAAImW,EAAS,CACXpE,SAAU,SAAUhS,EAAKC,GAAO,OAAOD,GAAOC,CAAK,EACnDgS,MAAO,SAAUjS,EAAKC,GAAO,OAAOD,GAAOC,CAAK,EAChD2R,QAAS,SAAU5R,EAAKC,GAAO,OAAOD,GAAOC,CAAK,EAClD4R,UAAW,SAAU7R,EAAKC,GAAO,OAAOD,GAAOC,CAAK,EACpD6R,MAAO,SAAU9R,EAAKC,GAAO,OAAOD,GAAOC,CAAK,EAChD8R,QAAS,SAAU/R,EAAKC,GAAO,OAAOD,GAAOC,CAAK,EAClDuS,QAAS,SAAUxS,EAAKC,GAAO,OAAOD,GAAOC,CAAK,EAClDqP,SAAU,SAAUtP,EAAKC,GAAO,OAAOD,GAAOC,CAAK,EACnDsS,UAAW,SAAUvS,EAAKC,GAAO,OAAOD,GAAOC,CAAK,GAGtD,OAAOS,OAAOC,KAAKyV,GAAQxT,QAAO,SAAUxC,EAAO2T,GAGjD,OAFA3T,EAAM2T,GAAQqC,EAAOrC,GAAM/T,EAAI+T,GAAO9T,EAAI8T,IAEnC3T,CACT,GAAG,CAAC,EACN,EAEI44B,GAAW,SAAU7xB,EAAO8xB,GAG9B,YAFc,IAATA,IAAkBA,GAAO,GAEvBv4B,OAAOC,KAAKwG,GAAOvE,QAAO,SAAUxC,EAAO6G,GAChD,IAAK7G,EAEH,OADAA,EAAQsC,EAAO,CAAC,EAAGyE,EAAMF,IAK3B,IAAIiyB,EAAiC,IAAvBjyB,EAAM3H,QAAQ,KAC5B,OAAI25B,GAAQC,EACHH,GAAQC,GAAS7xB,EAAMF,IAAS7G,IAC7B64B,GAAQC,EACX94B,EAGTA,EAAQ24B,GAAQ34B,EAAO+G,EAAMF,GAG/B,GAAG,KACL,EAuDIkyB,GAAiB,CACnBz5B,KAAM,WACNkN,OAAQ,CAAC,cACTwsB,YAAY,EACZC,MAAO,CACLC,IAAK,CACH/5B,KAAM0I,OACNqH,UAAU,GAEZ3J,IAAK,CACHpG,KAAM0I,OACNoF,QAAS,SAGbksB,OAAQ,SAAiBC,EAAexyB,GACtC,IAAIqyB,EAAQryB,EAAIqyB,MACZve,EAAa9T,EAAI8T,WAErB,OAAO0e,EAAcH,EAAM1zB,IAAKmV,EAAWtK,WAAW3H,OAAOH,MAAM2wB,EAAMC,KAC3E,GAgBF1b,IAXkB,SAAU5W,GAC1B,IAAIyyB,EAAezyB,EAAIsN,UAEvB5T,OAAOC,KAAKmd,IAAOrZ,SAAQ,SAAUjC,GACnCi3B,EAAariB,OAAO5U,EAAMsb,GAAMtb,GAClC,IAGAi3B,EAAa/hB,SAAS,KAAM7N,GAC9B,IAIA,IAAI6vB,GAAY,CACdC,QA7gIF,SAAkBC,EAAM1rB,GAGtB,QAFiB,IAAZA,IAAqBA,EAAU,CAAC,IAEjC0M,IAAOgf,IAAShf,GAApB,EAziGyB,WACzB,IACE,IAAIif,EAAOn5B,OAAOgxB,eAAe,CAAC,EAAG,UAAW,CAC9C3nB,IAAK,WACHhL,GAAkB,CACpB,IAEF+4B,OAAO94B,iBAAiB,cAAe,KAAM66B,GAC7C/B,OAAO3iB,oBAAoB,cAAe,KAAM0kB,EAGlD,CAFE,MAAOvyB,GACPvI,GAAkB,CACpB,CAEF,CAmiGE+6B,GAEA,IAAIC,EAAW,IADfnf,GAAMgf,GAENzsB,EAAOM,SAAS,KAAMssB,GACtB5sB,EAAOhH,MAAM+H,GAEb,IAAIlH,EAAMmG,EAAOG,QACb5D,EAAa1C,EAAI0C,WACjB+B,EAAOzE,EAAIyE,KAEX/B,GACF4K,EAAUoD,SAAShO,GAIjB+B,GAAQA,EAAKqL,KAAOpT,EAAW+H,EAAKqL,IAAIxG,SAC1C7E,EAAKqL,IAAIxG,OAAO,UAAU,WACxBypB,EAAS7iB,MAAM,gBACjB,KAGGzL,GAAQyC,EAAQrE,QACnByK,EAAUoD,SAASxJ,EAAQrE,QAG7ByK,EAAUkD,cAAcrK,EAAOG,QAAQf,QAEvCqO,GAAIN,MAAMA,IACVM,GAAIS,UAAU,WAAYA,GA9B1B,CA+BF,EAu+HEuC,IAAKA,GACLvC,UAAWA,GACXf,MAAOA,GACP0f,UA5Fc,SAAU5lB,GACxB,IAAKA,EACH,OAAO,WACL,OAAO4kB,GAAS1yB,KAAKkK,WAAWpQ,MAClC,EAGF,IAAI65B,EAtEU,SAAU7lB,GACxB,OAAI/T,MAAMC,QAAQ8T,GACTA,EAAOxR,QAAO,SAAUC,EAAMC,GAOnC,OANKA,EAAKxD,QAAQ,KAChBuD,EAAKC,EAAKxB,MAAM,KAAK,IAAMwB,EAE3BD,EAAKC,GAAQA,EAGRD,CACT,GAAG,CAAC,GAGCuR,CACT,CAwDmB8lB,CAAU9lB,GAC3B,OAAO1T,OAAOC,KAAKs5B,GAAYr3B,QAAO,SAAUC,EAAMC,GACpD,IAAImE,EAAQgzB,EAAWn3B,GAqCvB,OApCAD,EAAKC,GAAQ,WAEX,GAAIwD,KAAKkK,WAAWpQ,MAAM6G,GACxB,OAAOX,KAAKkK,WAAWpQ,MAAM6G,GAI/B,GAAyB,MAArBgzB,EAAWn3B,GACb,OAAOk2B,GAAS1yB,KAAKkK,WAAWpQ,OAAO,GAKzC,GADY6G,EAAM3H,QAAQ,MACb,EACX,MAAO,CAAC,EAGV,IAAI0H,EAAMC,EAAM3F,MAAM,KAClB6F,EAAQH,EAAI,GACZtH,EAAOsH,EAAI9D,MAAM,GAMrB,OAJAiE,EAAQb,KAAKkK,WAAWpQ,MAAO,IAAM+G,GAIxB,OAHbzH,EAAOA,EAAKyD,KAAK,OAGGgE,EACX6xB,GAAS7xB,GAGdA,GAASA,EAAMzH,GACVyH,EAAMzH,GAGR,CAAC,CACV,EAEOmD,CACT,GAAG,CAAC,EACN,EA6CEyR,UAAWA,EACXjO,SAAUA,EACV8yB,eAAgBA,GAChBrb,MAAOA,GACPmX,QAzBY,gBA4Bd","sources":["webpack:///./node_modules/vee-validate/dist/vee-validate.esm.js"],"sourcesContent":["/**\n * vee-validate v2.1.0-beta.1\n * (c) 2018 Abdelrahman Awad\n * @license MIT\n */\n// \n\nvar supportsPassive = true;\n\nvar detectPassiveSupport = function () {\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get () {\n supportsPassive = true;\n }\n });\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n } catch (e) {\n supportsPassive = false;\n }\n return supportsPassive;\n};\n\nvar addEventListener = function (el, eventName, cb) {\n el.addEventListener(eventName, cb, supportsPassive ? { passive: true } : false);\n};\n\nvar isTextInput = function (el) {\n return ['text', 'password', 'search', 'email', 'tel', 'url', 'textarea'].indexOf(el.type) !== -1;\n};\n\nvar isCheckboxOrRadioInput = function (el) {\n return ['radio', 'checkbox'].indexOf(el.type) !== -1;\n};\n\nvar isDateInput = function (el) {\n return ['date', 'week', 'month', 'datetime-local', 'time'].indexOf(el.type) !== -1;\n};\n\n/**\n * Gets the data attribute. the name must be kebab-case.\n */\nvar getDataAttribute = function (el, name) { return el.getAttribute((\"data-vv-\" + name)); };\n\n/**\n * Checks if the value is either null or undefined.\n */\nvar isNullOrUndefined = function (value) {\n return value === null || value === undefined;\n};\n\n/**\n * Creates the default flags object.\n */\nvar createFlags = function () { return ({\n untouched: true,\n touched: false,\n dirty: false,\n pristine: true,\n valid: null,\n invalid: null,\n validated: false,\n pending: false,\n required: false,\n changed: false\n}); };\n\n/**\n * Shallow object comparison.\n */\nvar isEqual = function (lhs, rhs) {\n if (lhs instanceof RegExp && rhs instanceof RegExp) {\n return isEqual(lhs.source, rhs.source) && isEqual(lhs.flags, rhs.flags);\n }\n\n if (Array.isArray(lhs) && Array.isArray(rhs)) {\n if (lhs.length !== rhs.length) { return false; }\n\n for (var i = 0; i < lhs.length; i++) {\n if (!isEqual(lhs[i], rhs[i])) {\n return false;\n }\n }\n\n return true;\n }\n\n // if both are objects, compare each key recursively.\n if (isObject(lhs) && isObject(rhs)) {\n return Object.keys(lhs).every(function (key) {\n return isEqual(lhs[key], rhs[key]);\n }) && Object.keys(rhs).every(function (key) {\n return isEqual(lhs[key], rhs[key]);\n });\n }\n\n return lhs === rhs;\n};\n\n/**\n * Determines the input field scope.\n */\nvar getScope = function (el) {\n var scope = getDataAttribute(el, 'scope');\n if (isNullOrUndefined(scope)) {\n var form = getForm(el);\n\n if (form) {\n scope = getDataAttribute(form, 'scope');\n }\n }\n\n return !isNullOrUndefined(scope) ? scope : null;\n};\n\n/**\n * Get the closest form element.\n */\nvar getForm = function (el) {\n if (isNullOrUndefined(el)) { return null; }\n\n if (el.tagName === 'FORM') { return el; }\n\n if (!isNullOrUndefined(el.form)) { return el.form; }\n\n return !isNullOrUndefined(el.parentNode) ? getForm(el.parentNode) : null;\n};\n\n/**\n * Gets the value in an object safely.\n */\nvar getPath = function (path, target, def) {\n if ( def === void 0 ) def = undefined;\n\n if (!path || !target) { return def; }\n\n var value = target;\n path.split('.').every(function (prop) {\n if (prop in value) {\n value = value[prop];\n\n return true;\n }\n\n value = def;\n\n return false;\n });\n\n return value;\n};\n\n/**\n * Checks if path exists within an object.\n */\nvar hasPath = function (path, target) {\n var obj = target;\n return path.split('.').every(function (prop) {\n if (prop in obj) {\n obj = obj[prop];\n\n return true;\n }\n\n return false;\n });\n};\n\n/**\n * Parses a rule string expression.\n */\nvar parseRule = function (rule) {\n var params = [];\n var name = rule.split(':')[0];\n\n if (~rule.indexOf(':')) {\n params = rule.split(':').slice(1).join(':').split(',');\n }\n\n return { name: name, params: params };\n};\n\n/**\n * Debounces a function.\n */\nvar debounce = function (fn, wait, immediate, token) {\n if ( wait === void 0 ) wait = 0;\n if ( immediate === void 0 ) immediate = false;\n if ( token === void 0 ) token = { cancelled: false };\n\n if (wait === 0) {\n return fn;\n }\n\n var timeout;\n\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var later = function () {\n timeout = null;\n\n if (!immediate && !token.cancelled) { fn.apply(void 0, args); }\n };\n /* istanbul ignore next */\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n /* istanbul ignore next */\n if (callNow) { fn.apply(void 0, args); }\n };\n};\n\n/**\n * Appends a rule definition to a list of rules.\n */\nvar appendRule = function (rule, rules) {\n if (!rules) {\n return rule;\n }\n\n if (!rule) {\n return rules;\n }\n\n if (typeof rules === 'string') {\n return (rules + \"|\" + rule);\n }\n\n return assign({}, rules, normalizeRules(rule));\n};\n\n/**\n * Normalizes the given rules expression.\n */\nvar normalizeRules = function (rules) {\n // if falsy value return an empty object.\n if (!rules) {\n return {};\n }\n\n if (isObject(rules)) {\n // $FlowFixMe\n return Object.keys(rules).reduce(function (prev, curr) {\n var params = [];\n // $FlowFixMe\n if (rules[curr] === true) {\n params = [];\n } else if (Array.isArray(rules[curr])) {\n params = rules[curr];\n } else {\n params = [rules[curr]];\n }\n\n // $FlowFixMe\n if (rules[curr] !== false) {\n prev[curr] = params;\n }\n\n return prev;\n }, {});\n }\n\n if (typeof rules !== 'string') {\n warn('rules must be either a string or an object.');\n return {};\n }\n\n return rules.split('|').reduce(function (prev, rule) {\n var parsedRule = parseRule(rule);\n if (!parsedRule.name) {\n return prev;\n }\n\n prev[parsedRule.name] = parsedRule.params;\n return prev;\n }, {});\n};\n\n/**\n * Emits a warning to the console.\n */\nvar warn = function (message) {\n console.warn((\"[vee-validate] \" + message)); // eslint-disable-line\n};\n\n/**\n * Creates a branded error object.\n */\nvar createError = function (message) { return new Error((\"[vee-validate] \" + message)); };\n\n/**\n * Checks if the value is an object.\n */\nvar isObject = function (obj) { return obj !== null && obj && typeof obj === 'object' && ! Array.isArray(obj); };\n\n/**\n * Checks if a function is callable.\n */\nvar isCallable = function (func) { return typeof func === 'function'; };\n\n/**\n * Check if element has the css class on it.\n */\nvar hasClass = function (el, className) {\n if (el.classList) {\n return el.classList.contains(className);\n }\n\n return !!el.className.match(new RegExp((\"(\\\\s|^)\" + className + \"(\\\\s|$)\")));\n};\n\n/**\n * Adds the provided css className to the element.\n */\nvar addClass = function (el, className) {\n if (el.classList) {\n el.classList.add(className);\n return;\n }\n\n if (!hasClass(el, className)) {\n el.className += \" \" + className;\n }\n};\n\n/**\n * Remove the provided css className from the element.\n */\nvar removeClass = function (el, className) {\n if (el.classList) {\n el.classList.remove(className);\n return;\n }\n\n if (hasClass(el, className)) {\n var reg = new RegExp((\"(\\\\s|^)\" + className + \"(\\\\s|$)\"));\n el.className = el.className.replace(reg, ' ');\n }\n};\n\n/**\n * Adds or removes a class name on the input depending on the status flag.\n */\nvar toggleClass = function (el, className, status) {\n if (!el || !className) { return; }\n\n if (Array.isArray(className)) {\n className.forEach(function (item) { return toggleClass(el, item, status); });\n return;\n }\n\n if (status) {\n return addClass(el, className);\n }\n\n removeClass(el, className);\n};\n\n/**\n * Converts an array-like object to array, provides a simple polyfill for Array.from\n */\nvar toArray = function (arrayLike) {\n if (isCallable(Array.from)) {\n return Array.from(arrayLike);\n }\n\n var array = [];\n var length = arrayLike.length;\n for (var i = 0; i < length; i++) {\n array.push(arrayLike[i]);\n }\n\n return array;\n};\n\n/**\n * Assign polyfill from the mdn.\n */\nvar assign = function (target) {\n var others = [], len = arguments.length - 1;\n while ( len-- > 0 ) others[ len ] = arguments[ len + 1 ];\n\n /* istanbul ignore else */\n if (isCallable(Object.assign)) {\n return Object.assign.apply(Object, [ target ].concat( others ));\n }\n\n /* istanbul ignore next */\n if (target == null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n /* istanbul ignore next */\n var to = Object(target);\n /* istanbul ignore next */\n others.forEach(function (arg) {\n // Skip over if undefined or null\n if (arg != null) {\n Object.keys(arg).forEach(function (key) {\n to[key] = arg[key];\n });\n }\n });\n /* istanbul ignore next */\n return to;\n};\n\nvar id = 0;\nvar idTemplate = '{id}';\n\n/**\n * Generates a unique id.\n */\nvar uniqId = function () {\n // handle too many uses of uniqId, although unlikely.\n if (id >= 9999) {\n id = 0;\n // shift the template.\n idTemplate = idTemplate.replace('{id}', '_{id}');\n }\n\n id++;\n var newId = idTemplate.replace('{id}', String(id));\n\n return newId;\n};\n\n/**\n * finds the first element that satisfies the predicate callback, polyfills array.find\n */\nvar find = function (arrayLike, predicate) {\n var array = Array.isArray(arrayLike) ? arrayLike : toArray(arrayLike);\n for (var i = 0; i < array.length; i++) {\n if (predicate(array[i])) {\n return array[i];\n }\n }\n\n return undefined;\n};\n\nvar isBuiltInComponent = function (vnode) {\n if (!vnode) {\n return false;\n }\n\n var tag = vnode.componentOptions.tag;\n\n return /^(keep-alive|transition|transition-group)$/.test(tag);\n};\n\nvar makeEventsArray = function (events) {\n return (typeof events === 'string' && events.length) ? events.split('|') : [];\n};\n\nvar makeDelayObject = function (events, delay, delayConfig) {\n if (typeof delay === 'number') {\n return events.reduce(function (prev, e) {\n prev[e] = delay;\n return prev;\n }, {});\n }\n\n return events.reduce(function (prev, e) {\n if (typeof delay === 'object' && e in delay) {\n prev[e] = delay[e];\n return prev;\n }\n\n if (typeof delayConfig === 'number') {\n prev[e] = delayConfig;\n return prev;\n }\n\n prev[e] = (delayConfig && delayConfig[e]) || 0;\n\n return prev;\n }, {});\n};\n\nvar deepParseInt = function (input) {\n if (typeof input === 'number') { return input; }\n\n if (typeof input === 'string') { return parseInt(input); }\n\n var map = {};\n for (var element in input) {\n map[element] = parseInt(input[element]);\n }\n\n return map;\n};\n\nvar merge = function (target, source) {\n if (! (isObject(target) && isObject(source))) {\n return target;\n }\n\n Object.keys(source).forEach(function (key) {\n var obj, obj$1;\n\n if (isObject(source[key])) {\n if (! target[key]) {\n assign(target, ( obj = {}, obj[key] = {}, obj ));\n }\n\n merge(target[key], source[key]);\n return;\n }\n\n assign(target, ( obj$1 = {}, obj$1[key] = source[key], obj$1 ));\n });\n\n return target;\n};\n\nvar fillRulesFromElement = function (el, rules) {\n if (el.required) {\n rules = appendRule('required', rules);\n }\n\n if (isTextInput(el)) {\n if (el.type === 'email') {\n rules = appendRule((\"email\" + (el.multiple ? ':multiple' : '')), rules);\n }\n\n if (el.pattern) {\n rules = appendRule((\"regex:\" + (el.pattern)), rules);\n }\n\n // 524288 is the max on some browsers and test environments.\n if (el.maxLength >= 0 && el.maxLength < 524288) {\n rules = appendRule((\"max:\" + (el.maxLength)), rules);\n }\n\n if (el.minLength > 0) {\n rules = appendRule((\"min:\" + (el.minLength)), rules);\n }\n\n return rules;\n }\n\n if (el.type === 'number') {\n rules = appendRule('decimal', rules);\n if (el.min !== '') {\n rules = appendRule((\"min_value:\" + (el.min)), rules);\n }\n\n if (el.max !== '') {\n rules = appendRule((\"max_value:\" + (el.max)), rules);\n }\n\n return rules;\n }\n\n if (isDateInput(el)) {\n var timeFormat = el.step && Number(el.step) < 60 ? 'HH:mm:ss' : 'HH:mm';\n\n if (el.type === 'date') {\n return appendRule('date_format:YYYY-MM-DD', rules);\n }\n\n if (el.type === 'datetime-local') {\n return appendRule((\"date_format:YYYY-MM-DDT\" + timeFormat), rules);\n }\n\n if (el.type === 'month') {\n return appendRule('date_format:YYYY-MM', rules);\n }\n\n if (el.type === 'week') {\n return appendRule('date_format:YYYY-[W]WW', rules);\n }\n\n if (el.type === 'time') {\n return appendRule((\"date_format:\" + timeFormat), rules);\n }\n }\n\n return rules;\n};\n\n// \n\nvar ErrorBag = function ErrorBag () {\n this.items = [];\n};\n\nErrorBag.prototype[typeof Symbol === 'function' ? Symbol.iterator : '@@iterator'] = function () {\n var this$1 = this;\n\n var index = 0;\n return {\n next: function () {\n return { value: this$1.items[index++], done: index > this$1.items.length };\n }\n };\n};\n\n/**\n * Adds an error to the internal array.\n */\nErrorBag.prototype.add = function add (error) {\n var ref;\n\n // handle old signature.\n if (arguments.length > 1) {\n if (process.env.NODE_ENV !== 'production') {\n warn('This usage of \"errors.add()\" is deprecated, please consult the docs for the new signature.');\n }\n\n error = {\n field: arguments[0],\n msg: arguments[1],\n rule: arguments[2],\n scope: !isNullOrUndefined(arguments[3]) ? arguments[3] : null,\n regenerate: null\n };\n }\n\n (ref = this.items).push.apply(\n ref, this._normalizeError(error)\n );\n};\n\n/**\n * Normalizes passed errors to an error array.\n */\nErrorBag.prototype._normalizeError = function _normalizeError (error) {\n if (Array.isArray(error)) {\n return error.map(function (e) {\n e.scope = !isNullOrUndefined(e.scope) ? e.scope : null;\n\n return e;\n });\n }\n\n error.scope = !isNullOrUndefined(error.scope) ? error.scope : null;\n\n return [error];\n};\n\n/**\n * Regenrates error messages if they have a generator function.\n */\nErrorBag.prototype.regenerate = function regenerate () {\n this.items.forEach(function (i) {\n i.msg = isCallable(i.regenerate) ? i.regenerate() : i.msg;\n });\n};\n\n/**\n * Updates a field error with the new field scope.\n */\nErrorBag.prototype.update = function update (id, error) {\n var item = find(this.items, function (i) { return i.id === id; });\n if (!item) {\n return;\n }\n\n var idx = this.items.indexOf(item);\n this.items.splice(idx, 1);\n item.scope = error.scope;\n this.items.push(item);\n};\n\n/**\n * Gets all error messages from the internal array.\n */\nErrorBag.prototype.all = function all (scope) {\n if (isNullOrUndefined(scope)) {\n return this.items.map(function (e) { return e.msg; });\n }\n\n return this.items.filter(function (e) { return e.scope === scope; }).map(function (e) { return e.msg; });\n};\n\n/**\n * Checks if there are any errors in the internal array.\n */\nErrorBag.prototype.any = function any (scope) {\n if (isNullOrUndefined(scope)) {\n return !!this.items.length;\n }\n\n return !!this.items.filter(function (e) { return e.scope === scope; }).length;\n};\n\n/**\n * Removes all items from the internal array.\n */\nErrorBag.prototype.clear = function clear (scope) {\n var this$1 = this;\n\n if (isNullOrUndefined(scope)) {\n scope = null;\n }\n\n for (var i = 0; i < this.items.length; ++i) {\n if (this$1.items[i].scope === scope) {\n this$1.items.splice(i, 1);\n --i;\n }\n }\n};\n\n/**\n * Collects errors into groups or for a specific field.\n */\nErrorBag.prototype.collect = function collect (field, scope, map) {\n if ( map === void 0 ) map = true;\n\n if (isNullOrUndefined(field)) {\n var collection = {};\n this.items.forEach(function (e) {\n if (! collection[e.field]) {\n collection[e.field] = [];\n }\n\n collection[e.field].push(map ? e.msg : e);\n });\n\n return collection;\n }\n\n var selector = isNullOrUndefined(scope) ? String(field) : (scope + \".\" + field);\n var ref = this._makeCandidateFilters(selector);\n var isPrimary = ref.isPrimary;\n var isAlt = ref.isAlt;\n\n var collected = this.items.reduce(function (prev, curr) {\n if (isPrimary(curr)) {\n prev.primary.push(map ? curr.msg : curr);\n }\n\n if (isAlt(curr)) {\n prev.alt.push(map ? curr.msg : curr);\n }\n\n return prev;\n }, { primary: [], alt: [] });\n\n return collected.primary.length ? collected.primary : collected.alt;\n};\n\n/**\n * Gets the internal array length.\n */\nErrorBag.prototype.count = function count () {\n return this.items.length;\n};\n\n/**\n * Finds and fetches the first error message for the specified field id.\n */\nErrorBag.prototype.firstById = function firstById (id) {\n var error = find(this.items, function (i) { return i.id === id; });\n\n return error ? error.msg : undefined;\n};\n\n/**\n * Gets the first error message for a specific field.\n */\nErrorBag.prototype.first = function first (field, scope) {\n if ( scope === void 0 ) scope = null;\n\n var selector = isNullOrUndefined(scope) ? field : (scope + \".\" + field);\n var match = this._match(selector);\n\n return match && match.msg;\n};\n\n/**\n * Returns the first error rule for the specified field\n */\nErrorBag.prototype.firstRule = function firstRule (field, scope) {\n var errors = this.collect(field, scope, false);\n\n return (errors.length && errors[0].rule) || undefined;\n};\n\n/**\n * Checks if the internal array has at least one error for the specified field.\n */\nErrorBag.prototype.has = function has (field, scope) {\n if ( scope === void 0 ) scope = null;\n\n return !!this.first(field, scope);\n};\n\n/**\n * Gets the first error message for a specific field and a rule.\n */\nErrorBag.prototype.firstByRule = function firstByRule (name, rule, scope) {\n if ( scope === void 0 ) scope = null;\n\n var error = this.collect(name, scope, false).filter(function (e) { return e.rule === rule; })[0];\n\n return (error && error.msg) || undefined;\n};\n\n/**\n * Gets the first error message for a specific field that not match the rule.\n */\nErrorBag.prototype.firstNot = function firstNot (name, rule, scope) {\n if ( rule === void 0 ) rule = 'required';\n if ( scope === void 0 ) scope = null;\n\n var error = this.collect(name, scope, false).filter(function (e) { return e.rule !== rule; })[0];\n\n return (error && error.msg) || undefined;\n};\n\n/**\n * Removes errors by matching against the id or ids.\n */\nErrorBag.prototype.removeById = function removeById (id) {\n var this$1 = this;\n\n if (Array.isArray(id)) {\n // filter out the non-matching fields.\n this.items = this.items.filter(function (i) { return id.indexOf(i.id) === -1; });\n return;\n }\n\n for (var i = 0; i < this.items.length; ++i) {\n if (this$1.items[i].id === id) {\n this$1.items.splice(i, 1);\n --i;\n }\n }\n};\n\n/**\n * Removes all error messages associated with a specific field.\n */\nErrorBag.prototype.remove = function remove (field, scope) {\n var this$1 = this;\n\n if (isNullOrUndefined(field)) {\n return;\n }\n\n var selector = isNullOrUndefined(scope) ? String(field) : (scope + \".\" + field);\n var ref = this._makeCandidateFilters(selector);\n var isPrimary = ref.isPrimary;\n\n for (var i = 0; i < this.items.length; ++i) {\n if (isPrimary(this$1.items[i])) {\n this$1.items.splice(i, 1);\n --i;\n }\n }\n};\n\nErrorBag.prototype._makeCandidateFilters = function _makeCandidateFilters (selector) {\n var matchesRule = function () { return true; };\n var matchesScope = function () { return true; };\n var matchesName = function () { return true; };\n\n var ref = selector.match(/((?:[\\w-])+\\.)?((?:[\\w-.])+)(:\\w+)?/);\n var scope = ref[1];\n var name = ref[2];\n var rule = ref[3];\n if (rule) {\n rule = rule.replace(':', '');\n matchesRule = function (item) { return item.rule === rule; };\n }\n\n // match by id, can be combined with rule selection.\n if (selector.startsWith('#')) {\n return {\n isPrimary: function (item) { return matchesRule(item) && (function (item) { return selector.slice(1).startsWith(item.id); }); },\n isAlt: function () { return false; }\n };\n }\n\n if (isNullOrUndefined(scope)) {\n // if no scope specified, make sure the found error has no scope.\n matchesScope = function (item) { return isNullOrUndefined(item.scope); };\n } else {\n scope = scope.replace('.', '');\n matchesScope = function (item) { return item.scope === scope; };\n }\n\n if (!(isNullOrUndefined(name))) {\n matchesName = function (item) { return item.field === name; };\n }\n\n // matches the first candidate.\n var isPrimary = function (item) {\n return matchesName(item) && matchesRule(item) && matchesScope(item);\n };\n\n // matches a second candidate, which is a field with a name containing the '.' character.\n var isAlt = function (item) {\n return matchesRule(item) && item.field === (scope + \".\" + name);\n };\n\n return {\n isPrimary: isPrimary,\n isAlt: isAlt\n };\n};\n\nErrorBag.prototype._match = function _match (selector) {\n if (isNullOrUndefined(selector)) {\n return undefined;\n }\n\n var ref = this._makeCandidateFilters(selector);\n var isPrimary = ref.isPrimary;\n var isAlt = ref.isAlt;\n\n return this.items.reduce(function (prev, item, idx, arr) {\n var isLast = idx === arr.length - 1;\n if (prev.primary) {\n return isLast ? prev.primary : prev;\n }\n\n if (isPrimary(item)) {\n prev.primary = item;\n }\n\n if (isAlt(item)) {\n prev.alt = item;\n }\n\n // keep going.\n if (!isLast) {\n return prev;\n }\n\n return prev.primary || prev.alt;\n }, {});\n};\n\n// \n\nvar LOCALE = 'en';\n\nvar Dictionary = function Dictionary (dictionary) {\n if ( dictionary === void 0 ) dictionary = {};\n\n this.container = {};\n this.merge(dictionary);\n};\n\nvar prototypeAccessors = { locale: { configurable: true } };\n\nprototypeAccessors.locale.get = function () {\n return LOCALE;\n};\n\nprototypeAccessors.locale.set = function (value) {\n LOCALE = value || 'en';\n};\n\nDictionary.prototype.hasLocale = function hasLocale (locale) {\n return !!this.container[locale];\n};\n\nDictionary.prototype.setDateFormat = function setDateFormat (locale, format) {\n if (!this.container[locale]) {\n this.container[locale] = {};\n }\n\n this.container[locale].dateFormat = format;\n};\n\nDictionary.prototype.getDateFormat = function getDateFormat (locale) {\n if (!this.container[locale] || !this.container[locale].dateFormat) {\n return null;\n }\n\n return this.container[locale].dateFormat;\n};\n\nDictionary.prototype.getMessage = function getMessage (locale, key, data) {\n var message = null;\n if (!this.hasMessage(locale, key)) {\n message = this._getDefaultMessage(locale);\n } else {\n message = this.container[locale].messages[key];\n }\n\n return isCallable(message) ? message.apply(void 0, data) : message;\n};\n\n/**\n * Gets a specific message for field. falls back to the rule message.\n */\nDictionary.prototype.getFieldMessage = function getFieldMessage (locale, field, key, data) {\n if (!this.hasLocale(locale)) {\n return this.getMessage(locale, key, data);\n }\n\n var dict = this.container[locale].custom && this.container[locale].custom[field];\n if (!dict || !dict[key]) {\n return this.getMessage(locale, key, data);\n }\n\n var message = dict[key];\n return isCallable(message) ? message.apply(void 0, data) : message;\n};\n\nDictionary.prototype._getDefaultMessage = function _getDefaultMessage (locale) {\n if (this.hasMessage(locale, '_default')) {\n return this.container[locale].messages._default;\n }\n\n return this.container.en.messages._default;\n};\n\nDictionary.prototype.getAttribute = function getAttribute (locale, key, fallback) {\n if ( fallback === void 0 ) fallback = '';\n\n if (!this.hasAttribute(locale, key)) {\n return fallback;\n }\n\n return this.container[locale].attributes[key];\n};\n\nDictionary.prototype.hasMessage = function hasMessage (locale, key) {\n return !! (\n this.hasLocale(locale) &&\n this.container[locale].messages &&\n this.container[locale].messages[key]\n );\n};\n\nDictionary.prototype.hasAttribute = function hasAttribute (locale, key) {\n return !! (\n this.hasLocale(locale) &&\n this.container[locale].attributes &&\n this.container[locale].attributes[key]\n );\n};\n\nDictionary.prototype.merge = function merge$1 (dictionary) {\n merge(this.container, dictionary);\n};\n\nDictionary.prototype.setMessage = function setMessage (locale, key, message) {\n if (! this.hasLocale(locale)) {\n this.container[locale] = {\n messages: {},\n attributes: {}\n };\n }\n\n this.container[locale].messages[key] = message;\n};\n\nDictionary.prototype.setAttribute = function setAttribute (locale, key, attribute) {\n if (! this.hasLocale(locale)) {\n this.container[locale] = {\n messages: {},\n attributes: {}\n };\n }\n\n this.container[locale].attributes[key] = attribute;\n};\n\nObject.defineProperties( Dictionary.prototype, prototypeAccessors );\n\n// \n\nvar normalizeValue = function (value) {\n if (isObject(value)) {\n return Object.keys(value).reduce(function (prev, key) {\n prev[key] = normalizeValue(value[key]);\n\n return prev;\n }, {});\n }\n\n if (isCallable(value)) {\n return value('{0}', ['{1}', '{2}', '{3}']);\n }\n\n return value;\n};\n\nvar normalizeFormat = function (locale) {\n // normalize messages\n var messages = normalizeValue(locale.messages);\n var custom = normalizeValue(locale.custom);\n\n return {\n messages: messages,\n custom: custom,\n attributes: locale.attributes,\n dateFormat: locale.dateFormat\n };\n};\n\nvar I18nDictionary = function I18nDictionary (i18n, rootKey) {\n this.i18n = i18n;\n this.rootKey = rootKey;\n};\n\nvar prototypeAccessors$1 = { locale: { configurable: true } };\n\nprototypeAccessors$1.locale.get = function () {\n return this.i18n.locale;\n};\n\nprototypeAccessors$1.locale.set = function (value) {\n warn('Cannot set locale from the validator when using vue-i18n, use i18n.locale setter instead');\n};\n\nI18nDictionary.prototype.getDateFormat = function getDateFormat (locale) {\n return this.i18n.getDateTimeFormat(locale || this.locale);\n};\n\nI18nDictionary.prototype.setDateFormat = function setDateFormat (locale, value) {\n this.i18n.setDateTimeFormat(locale || this.locale, value);\n};\n\nI18nDictionary.prototype.getMessage = function getMessage (locale, key, data) {\n var path = (this.rootKey) + \".messages.\" + key;\n if (!this.i18n.te(path)) {\n return this.i18n.t(((this.rootKey) + \".messages._default\"), locale, data);\n }\n\n return this.i18n.t(path, locale, data);\n};\n\nI18nDictionary.prototype.getAttribute = function getAttribute (locale, key, fallback) {\n if ( fallback === void 0 ) fallback = '';\n\n var path = (this.rootKey) + \".attributes.\" + key;\n if (!this.i18n.te(path)) {\n return fallback;\n }\n\n return this.i18n.t(path, locale);\n};\n\nI18nDictionary.prototype.getFieldMessage = function getFieldMessage (locale, field, key, data) {\n var path = (this.rootKey) + \".custom.\" + field + \".\" + key;\n if (this.i18n.te(path)) {\n return this.i18n.t(path);\n }\n\n return this.getMessage(locale, key, data);\n};\n\nI18nDictionary.prototype.merge = function merge$1 (dictionary) {\n var this$1 = this;\n\n Object.keys(dictionary).forEach(function (localeKey) {\n var obj;\n\n // i18n doesn't deep merge\n // first clone the existing locale (avoid mutations to locale)\n var clone = merge({}, getPath((localeKey + \".\" + (this$1.rootKey)), this$1.i18n.messages, {}));\n // Merge cloned locale with new one\n var locale = merge(clone, normalizeFormat(dictionary[localeKey]));\n this$1.i18n.mergeLocaleMessage(localeKey, ( obj = {}, obj[this$1.rootKey] = locale, obj ));\n if (locale.dateFormat) {\n this$1.i18n.setDateTimeFormat(localeKey, locale.dateFormat);\n }\n });\n};\n\nI18nDictionary.prototype.setMessage = function setMessage (locale, key, value) {\n var obj, obj$1;\n\n this.merge(( obj$1 = {}, obj$1[locale] = {\n messages: ( obj = {}, obj[key] = value, obj )\n }, obj$1 ));\n};\n\nI18nDictionary.prototype.setAttribute = function setAttribute (locale, key, value) {\n var obj, obj$1;\n\n this.merge(( obj$1 = {}, obj$1[locale] = {\n attributes: ( obj = {}, obj[key] = value, obj )\n }, obj$1 ));\n};\n\nObject.defineProperties( I18nDictionary.prototype, prototypeAccessors$1 );\n\n// \n\nvar defaultConfig = {\n locale: 'en',\n delay: 0,\n errorBagName: 'errors',\n dictionary: null,\n strict: true,\n fieldsBagName: 'fields',\n classes: false,\n classNames: null,\n events: 'input|blur',\n inject: true,\n fastExit: true,\n aria: true,\n validity: false,\n i18n: null,\n i18nRootKey: 'validation'\n};\n\nvar currentConfig = assign({}, defaultConfig);\nvar dependencies = {\n dictionary: new Dictionary({\n en: {\n messages: {},\n attributes: {},\n custom: {}\n }\n })\n};\n\nvar Config = function Config () {};\n\nvar staticAccessors = { default: { configurable: true },current: { configurable: true } };\n\nstaticAccessors.default.get = function () {\n return defaultConfig;\n};\n\nstaticAccessors.current.get = function () {\n return currentConfig;\n};\n\nConfig.dependency = function dependency (key) {\n return dependencies[key];\n};\n\n/**\n * Merges the config with a new one.\n */\nConfig.merge = function merge$$1 (config) {\n currentConfig = assign({}, currentConfig, config);\n if (currentConfig.i18n) {\n Config.register('dictionary', new I18nDictionary(currentConfig.i18n, currentConfig.i18nRootKey));\n }\n};\n\n/**\n * Registers a dependency.\n */\nConfig.register = function register (key, value) {\n dependencies[key] = value;\n};\n\n/**\n * Resolves the working config from a Vue instance.\n */\nConfig.resolve = function resolve (context) {\n var selfConfig = getPath('$options.$_veeValidate', context, {});\n\n return assign({}, Config.current, selfConfig);\n};\n\nObject.defineProperties( Config, staticAccessors );\n\n/**\n * Generates the options required to construct a field.\n */\nvar Generator = function Generator () {};\n\nGenerator.generate = function generate (el, binding, vnode) {\n var model = Generator.resolveModel(binding, vnode);\n var options = Config.resolve(vnode.context);\n\n return {\n name: Generator.resolveName(el, vnode),\n el: el,\n listen: !binding.modifiers.disable,\n scope: Generator.resolveScope(el, binding, vnode),\n vm: Generator.makeVM(vnode.context),\n expression: binding.value,\n component: vnode.componentInstance,\n classes: options.classes,\n classNames: options.classNames,\n getter: Generator.resolveGetter(el, vnode, model),\n events: Generator.resolveEvents(el, vnode) || options.events,\n model: model,\n delay: Generator.resolveDelay(el, vnode, options),\n rules: Generator.resolveRules(el, binding, vnode),\n initial: !!binding.modifiers.initial,\n validity: options.validity,\n aria: options.aria,\n initialValue: Generator.resolveInitialValue(vnode)\n };\n};\n\nGenerator.getCtorConfig = function getCtorConfig (vnode) {\n if (!vnode.componentInstance) { return null; }\n\n var config = getPath('componentInstance.$options.$_veeValidate', vnode);\n\n return config;\n};\n\n/**\n * Resolves the rules defined on an element.\n */\nGenerator.resolveRules = function resolveRules (el, binding, vnode) {\n var rules = '';\n if (!binding.value && (!binding || !binding.expression)) {\n rules = getDataAttribute(el, 'rules');\n }\n\n if (binding.value && ~['string', 'object'].indexOf(typeof binding.value.rules)) {\n rules = binding.value.rules;\n } else if (binding.value) {\n rules = binding.value;\n }\n\n if (vnode.componentInstance) {\n return rules;\n }\n\n return fillRulesFromElement(el, rules);\n};\n\n/**\n * @param {*} vnode\n */\nGenerator.resolveInitialValue = function resolveInitialValue (vnode) {\n var model = vnode.data.model || find(vnode.data.directives, function (d) { return d.name === 'model'; });\n\n return model && model.value;\n};\n\n/**\n * Creates a non-circular partial VM instance from a Vue instance.\n * @param {*} vm\n */\nGenerator.makeVM = function makeVM (vm) {\n return {\n get $el () {\n return vm.$el;\n },\n get $refs () {\n return vm.$refs;\n },\n $watch: vm.$watch ? vm.$watch.bind(vm) : function () {},\n $validator: vm.$validator ? {\n errors: vm.$validator.errors,\n validate: vm.$validator.validate.bind(vm.$validator),\n update: vm.$validator.update.bind(vm.$validator)\n } : null\n };\n};\n\n/**\n * Resolves the delay value.\n * @param {*} el\n * @param {*} vnode\n * @param {Object} options\n */\nGenerator.resolveDelay = function resolveDelay (el, vnode, options) {\n var delay = getDataAttribute(el, 'delay');\n var globalDelay = (options && 'delay' in options) ? options.delay : 0;\n\n if (!delay && vnode.componentInstance && vnode.componentInstance.$attrs) {\n delay = vnode.componentInstance.$attrs['data-vv-delay'];\n }\n\n if (!isObject(globalDelay)) {\n return deepParseInt(delay || globalDelay);\n }\n\n if (!isNullOrUndefined(delay)) {\n globalDelay.input = delay;\n }\n\n return deepParseInt(globalDelay);\n};\n\n/**\n * Resolves the events to validate in response to.\n * @param {*} el\n * @param {*} vnode\n */\nGenerator.resolveEvents = function resolveEvents (el, vnode) {\n var events = getDataAttribute(el, 'validate-on');\n\n if (!events && vnode.componentInstance && vnode.componentInstance.$attrs) {\n events = vnode.componentInstance.$attrs['data-vv-validate-on'];\n }\n\n if (!events && vnode.componentInstance) {\n var config = Generator.getCtorConfig(vnode);\n events = config && config.events;\n }\n\n return events;\n};\n\n/**\n * Resolves the scope for the field.\n * @param {*} el\n * @param {*} binding\n */\nGenerator.resolveScope = function resolveScope (el, binding, vnode) {\n if ( vnode === void 0 ) vnode = {};\n\n var scope = null;\n if (vnode.componentInstance && isNullOrUndefined(scope)) {\n scope = vnode.componentInstance.$attrs && vnode.componentInstance.$attrs['data-vv-scope'];\n }\n\n return !isNullOrUndefined(scope) ? scope : getScope(el);\n};\n\n/**\n * Checks if the node directives contains a v-model or a specified arg.\n * Args take priority over models.\n *\n * @return {Object}\n */\nGenerator.resolveModel = function resolveModel (binding, vnode) {\n if (binding.arg) {\n return { expression: binding.arg };\n }\n\n var model = vnode.data.model || find(vnode.data.directives, function (d) { return d.name === 'model'; });\n if (!model) {\n return null;\n }\n\n // https://github.com/vuejs/vue/blob/dev/src/core/util/lang.js#L26\n var watchable = !/[^\\w.$]/.test(model.expression) && hasPath(model.expression, vnode.context);\n var lazy = !!(model.modifiers && model.modifiers.lazy);\n if (!watchable) {\n return { expression: null, lazy: lazy };\n }\n\n return { expression: model.expression, lazy: lazy };\n};\n\n/**\n * Resolves the field name to trigger validations.\n * @return {String} The field name.\n */\nGenerator.resolveName = function resolveName (el, vnode) {\n var name = getDataAttribute(el, 'name');\n\n if (!name && !vnode.componentInstance) {\n return el.name;\n }\n\n if (!name && vnode.componentInstance && vnode.componentInstance.$attrs) {\n name = vnode.componentInstance.$attrs['data-vv-name'] || vnode.componentInstance.$attrs['name'];\n }\n\n if (!name && vnode.componentInstance) {\n var config = Generator.getCtorConfig(vnode);\n if (config && isCallable(config.name)) {\n var boundGetter = config.name.bind(vnode.componentInstance);\n\n return boundGetter();\n }\n\n return vnode.componentInstance.name;\n }\n\n return name;\n};\n\n/**\n * Returns a value getter input type.\n */\nGenerator.resolveGetter = function resolveGetter (el, vnode, model) {\n if (model && model.expression) {\n return function () {\n return getPath(model.expression, vnode.context);\n };\n }\n\n if (vnode.componentInstance) {\n var path = getDataAttribute(el, 'value-path') || (vnode.componentInstance.$attrs && vnode.componentInstance.$attrs['data-vv-value-path']);\n if (path) {\n return function () {\n return getPath(path, vnode.componentInstance);\n };\n }\n\n var config = Generator.getCtorConfig(vnode);\n if (config && isCallable(config.value)) {\n var boundGetter = config.value.bind(vnode.componentInstance);\n\n return function () {\n return boundGetter();\n };\n }\n\n return function () {\n return vnode.componentInstance.value;\n };\n }\n\n switch (el.type) {\n case 'checkbox': return function () {\n var els = document.querySelectorAll((\"input[name=\\\"\" + (el.name) + \"\\\"]\"));\n\n els = toArray(els).filter(function (el) { return el.checked; });\n if (!els.length) { return undefined; }\n\n return els.map(function (checkbox) { return checkbox.value; });\n };\n case 'radio': return function () {\n var els = document.querySelectorAll((\"input[name=\\\"\" + (el.name) + \"\\\"]\"));\n var elm = find(els, function (el) { return el.checked; });\n\n return elm && elm.value;\n };\n case 'file': return function (context) {\n return toArray(el.files);\n };\n case 'select-multiple': return function () {\n return toArray(el.options).filter(function (opt) { return opt.selected; }).map(function (opt) { return opt.value; });\n };\n default: return function () {\n return el && el.value;\n };\n }\n};\n\n// \n\nvar DEFAULT_OPTIONS = {\n targetOf: null,\n initial: false,\n scope: null,\n listen: true,\n name: null,\n rules: {},\n vm: null,\n classes: false,\n validity: true,\n aria: true,\n events: 'input|blur',\n delay: 0,\n classNames: {\n touched: 'touched', // the control has been blurred\n untouched: 'untouched', // the control hasn't been blurred\n valid: 'valid', // model is valid\n invalid: 'invalid', // model is invalid\n pristine: 'pristine', // control has not been interacted with\n dirty: 'dirty' // control has been interacted with\n }\n};\n\nvar Field = function Field (options) {\n if ( options === void 0 ) options = {};\n\n this.id = uniqId();\n this.el = options.el;\n this.updated = false;\n this.dependencies = [];\n this.watchers = [];\n this.events = [];\n this.delay = 0;\n this.rules = {};\n this._cacheId(options);\n this.classNames = assign({}, DEFAULT_OPTIONS.classNames);\n options = assign({}, DEFAULT_OPTIONS, options);\n this._delay = !isNullOrUndefined(options.delay) ? options.delay : 0; // cache initial delay\n this.validity = options.validity;\n this.aria = options.aria;\n this.flags = createFlags();\n this.vm = options.vm;\n this.component = options.component;\n this.ctorConfig = this.component ? getPath('$options.$_veeValidate', this.component) : undefined;\n this.update(options);\n // set initial value.\n this.initialValue = this.value;\n this.updated = false;\n};\n\nvar prototypeAccessors$2 = { validator: { configurable: true },isRequired: { configurable: true },isDisabled: { configurable: true },alias: { configurable: true },value: { configurable: true },rejectsFalse: { configurable: true } };\n\nprototypeAccessors$2.validator.get = function () {\n if (!this.vm || !this.vm.$validator) {\n return { validate: function () {} };\n }\n\n return this.vm.$validator;\n};\n\nprototypeAccessors$2.isRequired.get = function () {\n return !!this.rules.required;\n};\n\nprototypeAccessors$2.isDisabled.get = function () {\n return !!(this.component && this.component.disabled) || !!(this.el && this.el.disabled);\n};\n\n/**\n * Gets the display name (user-friendly name).\n */\nprototypeAccessors$2.alias.get = function () {\n if (this._alias) {\n return this._alias;\n }\n\n var alias = null;\n if (this.el) {\n alias = getDataAttribute(this.el, 'as');\n }\n\n if (!alias && this.component) {\n return this.component.$attrs && this.component.$attrs['data-vv-as'];\n }\n\n return alias;\n};\n\n/**\n * Gets the input value.\n */\n\nprototypeAccessors$2.value.get = function () {\n if (!isCallable(this.getter)) {\n return undefined;\n }\n\n return this.getter();\n};\n\n/**\n * If the field rejects false as a valid value for the required rule.\n */\n\nprototypeAccessors$2.rejectsFalse.get = function () {\n if (this.component && this.ctorConfig) {\n return !!this.ctorConfig.rejectsFalse;\n }\n\n if (!this.el) {\n return false;\n }\n\n return this.el.type === 'checkbox';\n};\n\n/**\n * Determines if the instance matches the options provided.\n */\nField.prototype.matches = function matches (options) {\n if (!options) {\n return true;\n }\n\n if (options.id) {\n return this.id === options.id;\n }\n\n if (options.name === undefined && options.scope === undefined) {\n return true;\n }\n\n if (options.scope === undefined) {\n return this.name === options.name;\n }\n\n if (options.name === undefined) {\n return this.scope === options.scope;\n }\n\n return options.name === this.name && options.scope === this.scope;\n};\n\n/**\n * Caches the field id.\n */\nField.prototype._cacheId = function _cacheId (options) {\n if (this.el && !options.targetOf) {\n this.el._veeValidateId = this.id;\n }\n};\n\n/**\n * Updates the field with changed data.\n */\nField.prototype.update = function update (options) {\n this.targetOf = options.targetOf || null;\n this.initial = options.initial || this.initial || false;\n\n // update errors scope if the field scope was changed.\n if (!isNullOrUndefined(options.scope) && options.scope !== this.scope && isCallable(this.validator.update)) {\n this.validator.update(this.id, { scope: options.scope });\n }\n this.scope = !isNullOrUndefined(options.scope) ? options.scope\n : !isNullOrUndefined(this.scope) ? this.scope : null;\n this.name = (!isNullOrUndefined(options.name) ? String(options.name) : options.name) || this.name || null;\n this.rules = options.rules !== undefined ? normalizeRules(options.rules) : this.rules;\n this.model = options.model || this.model;\n this.listen = options.listen !== undefined ? options.listen : this.listen;\n this.classes = (options.classes || this.classes || false) && !this.component;\n this.classNames = isObject(options.classNames) ? merge(this.classNames, options.classNames) : this.classNames;\n this.getter = isCallable(options.getter) ? options.getter : this.getter;\n this._alias = options.alias || this._alias;\n this.events = (options.events) ? makeEventsArray(options.events) : this.events;\n this.delay = makeDelayObject(this.events, options.delay || this.delay, this._delay);\n this.updateDependencies();\n this.addActionListeners();\n\n if (process.env.NODE_ENV !== 'production' && !this.name && !this.targetOf) {\n warn('A field is missing a \"name\" or \"data-vv-name\" attribute');\n }\n\n // update required flag flags\n if (options.rules !== undefined) {\n this.flags.required = this.isRequired;\n }\n\n // validate if it was validated before and field was updated and there was a rules mutation.\n if (this.flags.validated && options.rules !== undefined && this.updated) {\n this.validator.validate((\"#\" + (this.id)));\n }\n\n this.updated = true;\n this.addValueListeners();\n\n // no need to continue.\n if (!this.el) {\n return;\n }\n this.updateClasses();\n this.updateAriaAttrs();\n};\n\n/**\n * Resets field flags and errors.\n */\nField.prototype.reset = function reset () {\n var this$1 = this;\n\n if (this._cancellationToken) {\n this._cancellationToken.cancelled = true;\n delete this._cancellationToken;\n }\n\n var defaults = createFlags();\n Object.keys(this.flags).filter(function (flag) { return flag !== 'required'; }).forEach(function (flag) {\n this$1.flags[flag] = defaults[flag];\n });\n\n this.addActionListeners();\n this.updateClasses();\n this.updateAriaAttrs();\n this.updateCustomValidity();\n};\n\n/**\n * Sets the flags and their negated counterparts, and updates the classes and re-adds action listeners.\n */\nField.prototype.setFlags = function setFlags (flags) {\n var this$1 = this;\n\n var negated = {\n pristine: 'dirty',\n dirty: 'pristine',\n valid: 'invalid',\n invalid: 'valid',\n touched: 'untouched',\n untouched: 'touched'\n };\n\n Object.keys(flags).forEach(function (flag) {\n this$1.flags[flag] = flags[flag];\n // if it has a negation and was not specified, set it as well.\n if (negated[flag] && flags[negated[flag]] === undefined) {\n this$1.flags[negated[flag]] = !flags[flag];\n }\n });\n\n if (\n flags.untouched !== undefined ||\n flags.touched !== undefined ||\n flags.dirty !== undefined ||\n flags.pristine !== undefined\n ) {\n this.addActionListeners();\n }\n this.updateClasses();\n this.updateAriaAttrs();\n this.updateCustomValidity();\n};\n\n/**\n * Determines if the field requires references to target fields.\n*/\nField.prototype.updateDependencies = function updateDependencies () {\n var this$1 = this;\n\n // reset dependencies.\n this.dependencies.forEach(function (d) { return d.field.destroy(); });\n this.dependencies = [];\n\n // we get the selectors for each field.\n var fields = Object.keys(this.rules).reduce(function (prev, r) {\n if (Validator.isTargetRule(r)) {\n prev.push({ selector: this$1.rules[r][0], name: r });\n }\n\n return prev;\n }, []);\n\n if (!fields.length || !this.vm || !this.vm.$el) { return; }\n\n // must be contained within the same component, so we use the vm root element constrain our dom search.\n fields.forEach(function (ref$1) {\n var selector = ref$1.selector;\n var name = ref$1.name;\n\n var ref = this$1.vm.$refs[selector];\n var el = Array.isArray(ref) ? ref[0] : ref;\n if (!el) {\n return;\n }\n\n var options = {\n vm: this$1.vm,\n classes: this$1.classes,\n classNames: this$1.classNames,\n delay: this$1.delay,\n scope: this$1.scope,\n events: this$1.events.join('|'),\n initial: this$1.initial,\n targetOf: this$1.id\n };\n\n // probably a component.\n if (isCallable(el.$watch)) {\n options.component = el;\n options.el = el.$el;\n options.getter = Generator.resolveGetter(el.$el, el.$vnode);\n } else {\n options.el = el;\n options.getter = Generator.resolveGetter(el, {});\n }\n\n this$1.dependencies.push({ name: name, field: new Field(options) });\n });\n};\n\n/**\n * Removes listeners.\n */\nField.prototype.unwatch = function unwatch (tag) {\n if ( tag === void 0 ) tag = null;\n\n if (!tag) {\n this.watchers.forEach(function (w) { return w.unwatch(); });\n this.watchers = [];\n return;\n }\n\n this.watchers.filter(function (w) { return tag.test(w.tag); }).forEach(function (w) { return w.unwatch(); });\n this.watchers = this.watchers.filter(function (w) { return !tag.test(w.tag); });\n};\n\n/**\n * Updates the element classes depending on each field flag status.\n */\nField.prototype.updateClasses = function updateClasses () {\n var this$1 = this;\n\n if (!this.classes || this.isDisabled) { return; }\n var applyClasses = function (el) {\n toggleClass(el, this$1.classNames.dirty, this$1.flags.dirty);\n toggleClass(el, this$1.classNames.pristine, this$1.flags.pristine);\n toggleClass(el, this$1.classNames.touched, this$1.flags.touched);\n toggleClass(el, this$1.classNames.untouched, this$1.flags.untouched);\n // make sure we don't set any classes if the state is undetermined.\n if (!isNullOrUndefined(this$1.flags.valid) && this$1.flags.validated) {\n toggleClass(el, this$1.classNames.valid, this$1.flags.valid);\n }\n\n if (!isNullOrUndefined(this$1.flags.invalid) && this$1.flags.validated) {\n toggleClass(el, this$1.classNames.invalid, this$1.flags.invalid);\n }\n };\n\n if (!isCheckboxOrRadioInput(this.el)) {\n applyClasses(this.el);\n return;\n }\n\n var els = document.querySelectorAll((\"input[name=\\\"\" + (this.el.name) + \"\\\"]\"));\n toArray(els).forEach(applyClasses);\n};\n\n/**\n * Adds the listeners required for automatic classes and some flags.\n */\nField.prototype.addActionListeners = function addActionListeners () {\n var this$1 = this;\n\n // remove previous listeners.\n this.unwatch(/class/);\n\n if (!this.el) { return; }\n\n var onBlur = function () {\n this$1.flags.touched = true;\n this$1.flags.untouched = false;\n if (this$1.classes) {\n toggleClass(this$1.el, this$1.classNames.touched, true);\n toggleClass(this$1.el, this$1.classNames.untouched, false);\n }\n\n // only needed once.\n this$1.unwatch(/^class_blur$/);\n };\n\n var inputEvent = isTextInput(this.el) ? 'input' : 'change';\n var onInput = function () {\n this$1.flags.dirty = true;\n this$1.flags.pristine = false;\n if (this$1.classes) {\n toggleClass(this$1.el, this$1.classNames.pristine, false);\n toggleClass(this$1.el, this$1.classNames.dirty, true);\n }\n\n // only needed once.\n this$1.unwatch(/^class_input$/);\n };\n\n if (this.component && isCallable(this.component.$once)) {\n this.component.$once('input', onInput);\n this.component.$once('blur', onBlur);\n this.watchers.push({\n tag: 'class_input',\n unwatch: function () {\n this$1.component.$off('input', onInput);\n }\n });\n this.watchers.push({\n tag: 'class_blur',\n unwatch: function () {\n this$1.component.$off('blur', onBlur);\n }\n });\n return;\n }\n\n if (!this.el) { return; }\n\n addEventListener(this.el, inputEvent, onInput);\n // Checkboxes and radio buttons on Mac don't emit blur naturally, so we listen on click instead.\n var blurEvent = isCheckboxOrRadioInput(this.el) ? 'change' : 'blur';\n addEventListener(this.el, blurEvent, onBlur);\n this.watchers.push({\n tag: 'class_input',\n unwatch: function () {\n this$1.el.removeEventListener(inputEvent, onInput);\n }\n });\n\n this.watchers.push({\n tag: 'class_blur',\n unwatch: function () {\n this$1.el.removeEventListener(blurEvent, onBlur);\n }\n });\n};\n\nField.prototype.checkValueChanged = function checkValueChanged () {\n // handle some people initialize the value to null, since text inputs have empty string value.\n if (this.initialValue === null && this.value === '' && isTextInput(this.el)) {\n return false;\n }\n\n return this.value !== this.initialValue;\n};\n\n/**\n * Adds the listeners required for validation.\n */\nField.prototype.addValueListeners = function addValueListeners () {\n var this$1 = this;\n\n this.unwatch(/^input_.+/);\n if (!this.listen || !this.el) { return; }\n\n var token = { cancelled: false };\n var fn = this.targetOf ? function () {\n this$1.flags.changed = this$1.checkValueChanged(); this$1.validator.validate((\"#\" + (this$1.targetOf)));\n } : function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // if its a DOM event, resolve the value, otherwise use the first parameter as the value.\n if (args.length === 0 || (isCallable(Event) && args[0] instanceof Event) || (args[0] && args[0].srcElement)) {\n args[0] = this$1.value;\n }\n\n this$1.flags.changed = this$1.checkValueChanged();\n this$1.validator.validate((\"#\" + (this$1.id)), args[0]);\n };\n\n var inputEvent = this.component || isTextInput(this.el) ? 'input' : 'change';\n inputEvent = this.model && this.model.lazy ? 'change' : inputEvent;\n // force change event for non-text type fields, otherwise use the configured.\n // if no event is configured then respect the user choice.\n var events = !this.events.length || this.component || isTextInput(this.el) ? this.events : ['change'];\n\n // if there is a watchable model and an on input validation is requested.\n if (this.model && this.model.expression && events.indexOf(inputEvent) !== -1) {\n var debouncedFn = debounce(fn, this.delay[inputEvent], false, token);\n var unwatch = this.vm.$watch(this.model.expression, function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n this$1.flags.pending = true;\n this$1._cancellationToken = token;\n debouncedFn.apply(void 0, args);\n });\n this.watchers.push({\n tag: 'input_model',\n unwatch: unwatch\n });\n\n // filter out input event as it is already handled by the watcher API.\n events = events.filter(function (e) { return e !== inputEvent; });\n }\n\n // Add events.\n events.forEach(function (e) {\n var debouncedFn = debounce(fn, this$1.delay[e], false, token);\n var validate = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n this$1.flags.pending = true;\n this$1._cancellationToken = token;\n debouncedFn.apply(void 0, args);\n };\n\n this$1._addComponentEventListener(e, validate);\n this$1._addHTMLEventListener(e, validate);\n });\n};\n\nField.prototype._addComponentEventListener = function _addComponentEventListener (evt, validate) {\n var this$1 = this;\n\n if (!this.component) { return; }\n\n this.component.$on(evt, validate);\n this.watchers.push({\n tag: 'input_vue',\n unwatch: function () {\n this$1.component.$off(evt, validate);\n }\n });\n};\n\nField.prototype._addHTMLEventListener = function _addHTMLEventListener (evt, validate) {\n var this$1 = this;\n\n if (!this.el || this.component) { return; }\n\n // listen for the current element.\n var addListener = function (el) {\n addEventListener(el, evt, validate);\n this$1.watchers.push({\n tag: 'input_native',\n unwatch: function () {\n el.removeEventListener(evt, validate);\n }\n });\n };\n\n addListener(this.el);\n if (!isCheckboxOrRadioInput(this.el)) {\n return;\n }\n\n var els = document.querySelectorAll((\"input[name=\\\"\" + (this.el.name) + \"\\\"]\"));\n toArray(els).forEach(function (el) {\n // skip if it is added by v-validate and is not the current element.\n if (el._veeValidateId && el !== this$1.el) {\n return;\n }\n\n addListener(el);\n });\n};\n\n/**\n * Updates aria attributes on the element.\n */\nField.prototype.updateAriaAttrs = function updateAriaAttrs () {\n var this$1 = this;\n\n if (!this.aria || !this.el || !isCallable(this.el.setAttribute)) { return; }\n\n var applyAriaAttrs = function (el) {\n el.setAttribute('aria-required', this$1.isRequired ? 'true' : 'false');\n el.setAttribute('aria-invalid', this$1.flags.invalid ? 'true' : 'false');\n };\n\n if (!isCheckboxOrRadioInput(this.el)) {\n applyAriaAttrs(this.el);\n return;\n }\n\n var els = document.querySelectorAll((\"input[name=\\\"\" + (this.el.name) + \"\\\"]\"));\n toArray(els).forEach(applyAriaAttrs);\n};\n\n/**\n * Updates the custom validity for the field.\n */\nField.prototype.updateCustomValidity = function updateCustomValidity () {\n if (!this.validity || !this.el || !isCallable(this.el.setCustomValidity) || !this.validator.errors) { return; }\n\n this.el.setCustomValidity(this.flags.valid ? '' : (this.validator.errors.firstById(this.id) || ''));\n};\n\n/**\n * Removes all listeners.\n */\nField.prototype.destroy = function destroy () {\n this.unwatch();\n this.dependencies.forEach(function (d) { return d.field.destroy(); });\n this.dependencies = [];\n};\n\nObject.defineProperties( Field.prototype, prototypeAccessors$2 );\n\n// \n\nvar FieldBag = function FieldBag () {\n this.items = [];\n};\n\nvar prototypeAccessors$3 = { length: { configurable: true } };\n\nFieldBag.prototype[typeof Symbol === 'function' ? Symbol.iterator : '@@iterator'] = function () {\n var this$1 = this;\n\n var index = 0;\n return {\n next: function () {\n return { value: this$1.items[index++], done: index > this$1.items.length };\n }\n };\n};\n\n/**\n * Gets the current items length.\n */\n\nprototypeAccessors$3.length.get = function () {\n return this.items.length;\n};\n\n/**\n * Finds the first field that matches the provided matcher object.\n */\nFieldBag.prototype.find = function find$1 (matcher) {\n return find(this.items, function (item) { return item.matches(matcher); });\n};\n\n/**\n * Filters the items down to the matched fields.\n */\nFieldBag.prototype.filter = function filter (matcher) {\n // multiple matchers to be tried.\n if (Array.isArray(matcher)) {\n return this.items.filter(function (item) { return matcher.some(function (m) { return item.matches(m); }); });\n }\n\n return this.items.filter(function (item) { return item.matches(matcher); });\n};\n\n/**\n * Maps the field items using the mapping function.\n */\nFieldBag.prototype.map = function map (mapper) {\n return this.items.map(mapper);\n};\n\n/**\n * Finds and removes the first field that matches the provided matcher object, returns the removed item.\n */\nFieldBag.prototype.remove = function remove (matcher) {\n var item = null;\n if (matcher instanceof Field) {\n item = matcher;\n } else {\n item = this.find(matcher);\n }\n\n if (!item) { return null; }\n\n var index = this.items.indexOf(item);\n this.items.splice(index, 1);\n\n return item;\n};\n\n/**\n * Adds a field item to the list.\n */\nFieldBag.prototype.push = function push (item) {\n if (! (item instanceof Field)) {\n throw createError('FieldBag only accepts instances of Field that has an id defined.');\n }\n\n if (!item.id) {\n throw createError('Field id must be defined.');\n }\n\n if (this.find({ id: item.id })) {\n throw createError((\"Field with id \" + (item.id) + \" is already added.\"));\n }\n\n this.items.push(item);\n};\n\nObject.defineProperties( FieldBag.prototype, prototypeAccessors$3 );\n\n// \n\nvar RULES = {};\nvar STRICT_MODE = true;\nvar TARGET_RULES = ['confirmed', 'after', 'before'];\n\nvar Validator = function Validator (validations, options) {\n var this$1 = this;\n if ( options === void 0 ) options = { fastExit: true };\n\n this.strict = STRICT_MODE;\n this.errors = new ErrorBag();\n this.fields = new FieldBag();\n this.flags = {};\n this._createFields(validations);\n this.paused = false;\n this.fastExit = options.fastExit || false;\n this.ownerId = options.vm && options.vm._uid;\n this._localeListener = function () {\n this$1.errors.regenerate();\n };\n\n if (this._vm) {\n this._vm.$on('localeChanged', this._localeListener);\n }\n};\n\nvar prototypeAccessors$4 = { dictionary: { configurable: true },_vm: { configurable: true },locale: { configurable: true },rules: { configurable: true } };\nvar staticAccessors$1 = { dictionary: { configurable: true },locale: { configurable: true },rules: { configurable: true } };\n\n/**\n * Getter for the dictionary.\n */\nprototypeAccessors$4.dictionary.get = function () {\n return Config.dependency('dictionary');\n};\n\nprototypeAccessors$4._vm.get = function () {\n return Config.dependency('vm');\n};\n\n/**\n * Static Getter for the dictionary.\n */\nstaticAccessors$1.dictionary.get = function () {\n return Config.dependency('dictionary');\n};\n\n/**\n * Getter for the current locale.\n */\nprototypeAccessors$4.locale.get = function () {\n return this.dictionary.locale;\n};\n\n/**\n * Setter for the validator locale.\n */\nprototypeAccessors$4.locale.set = function (value) {\n Validator.locale = value;\n};\n\n/**\n* Static getter for the validator locale.\n*/\nstaticAccessors$1.locale.get = function () {\n return Validator.dictionary.locale;\n};\n\n/**\n * Static setter for the validator locale.\n */\nstaticAccessors$1.locale.set = function (value) {\n var hasChanged = value !== Validator.dictionary.locale;\n Validator.dictionary.locale = value;\n if (hasChanged && Config.dependency('vm')) {\n Config.dependency('vm').$emit('localeChanged');\n }\n};\n\n/**\n * Getter for the rules object.\n */\nprototypeAccessors$4.rules.get = function () {\n return RULES;\n};\n\n/**\n * Static Getter for the rules object.\n */\nstaticAccessors$1.rules.get = function () {\n return RULES;\n};\n\n/**\n * Static constructor.\n */\nValidator.create = function create (validations, options) {\n return new Validator(validations, options);\n};\n\n/**\n * Adds a custom validator to the list of validation rules.\n */\nValidator.extend = function extend (name, validator, options) {\n if ( options === void 0 ) options = {};\n\n Validator._guardExtend(name, validator);\n Validator._merge(name, validator);\n if (options && options.hasTarget) {\n TARGET_RULES.push(name);\n }\n};\n\n/**\n * Removes a rule from the list of validators.\n */\nValidator.remove = function remove (name) {\n delete RULES[name];\n var idx = TARGET_RULES.indexOf(name);\n if (idx === -1) { return; }\n\n TARGET_RULES.splice(idx, 1);\n};\n\n/**\n * Checks if the given rule name is a rule that targets other fields.\n */\nValidator.isTargetRule = function isTargetRule (name) {\n return TARGET_RULES.indexOf(name) !== -1;\n};\n\n/**\n * Sets the operating mode for all newly created validators.\n * strictMode = true: Values without a rule are invalid and cause failure.\n * strictMode = false: Values without a rule are valid and are skipped.\n */\nValidator.setStrictMode = function setStrictMode (strictMode) {\n if ( strictMode === void 0 ) strictMode = true;\n\n STRICT_MODE = strictMode;\n};\n\n/**\n * Adds and sets the current locale for the validator.\n */\nValidator.prototype.localize = function localize (lang, dictionary) {\n Validator.localize(lang, dictionary);\n};\n\n/**\n * Adds and sets the current locale for the validator.\n */\nValidator.localize = function localize (lang, dictionary) {\n var obj;\n\n if (isObject(lang)) {\n Validator.dictionary.merge(lang);\n return;\n }\n\n // merge the dictionary.\n if (dictionary) {\n var locale = lang || dictionary.name;\n dictionary = assign({}, dictionary);\n Validator.dictionary.merge(( obj = {}, obj[locale] = dictionary, obj ));\n }\n\n if (lang) {\n // set the locale.\n Validator.locale = lang;\n }\n};\n\n/**\n * Registers a field to be validated.\n */\nValidator.prototype.attach = function attach (field) {\n // deprecate: handle old signature.\n /* istanbul ignore next */\n if (arguments.length > 1) {\n if (process.env.NODE_ENV !== 'production') {\n warn('This signature of the attach method has been deprecated, please consult the docs.');\n }\n\n field = assign({}, {\n name: arguments[0],\n rules: arguments[1]\n }, arguments[2] || { vm: { $validator: this } });\n }\n\n // fixes initial value detection with v-model and select elements.\n var value = field.initialValue;\n if (!(field instanceof Field)) {\n field = new Field(field);\n }\n\n this.fields.push(field);\n\n // validate the field initially\n if (field.initial) {\n this.validate((\"#\" + (field.id)), value || field.value);\n } else {\n this._validate(field, value || field.value, true).then(function (result) {\n field.flags.valid = result.valid;\n field.flags.invalid = !result.valid;\n });\n }\n\n this._addFlag(field, field.scope);\n return field;\n};\n\n/**\n * Sets the flags on a field.\n */\nValidator.prototype.flag = function flag (name, flags) {\n var field = this._resolveField(name);\n if (! field || !flags) {\n return;\n }\n\n field.setFlags(flags);\n};\n\n/**\n * Removes a field from the validator.\n */\nValidator.prototype.detach = function detach (name, scope) {\n var field = name instanceof Field ? name : this._resolveField(name, scope);\n if (!field) { return; }\n\n field.destroy();\n this.errors.remove(field.name, field.scope, field.id);\n this.fields.remove(field);\n var flags = this.flags;\n if (!isNullOrUndefined(field.scope) && flags[(\"$\" + (field.scope))]) {\n delete flags[(\"$\" + (field.scope))][field.name];\n } else if (isNullOrUndefined(field.scope)) {\n delete flags[field.name];\n }\n\n this.flags = assign({}, flags);\n};\n\n/**\n * Adds a custom validator to the list of validation rules.\n */\nValidator.prototype.extend = function extend (name, validator, options) {\n if ( options === void 0 ) options = {};\n\n Validator.extend(name, validator, options);\n};\n\nValidator.prototype.reset = function reset (matcher) {\n var this$1 = this;\n\n // two ticks\n return this._vm.$nextTick().then(function () {\n return this$1._vm.$nextTick();\n }).then(function () {\n this$1.fields.filter(matcher).forEach(function (field) {\n field.reset(); // reset field flags.\n this$1.errors.remove(field.name, field.scope, field.id);\n });\n });\n};\n\n/**\n * Updates a field, updating both errors and flags.\n */\nValidator.prototype.update = function update (id, ref) {\n var scope = ref.scope;\n\n var field = this._resolveField((\"#\" + id));\n if (!field) { return; }\n\n // remove old scope.\n this.errors.update(id, { scope: scope });\n if (!isNullOrUndefined(field.scope) && this.flags[(\"$\" + (field.scope))]) {\n delete this.flags[(\"$\" + (field.scope))][field.name];\n } else if (isNullOrUndefined(field.scope)) {\n delete this.flags[field.name];\n }\n\n this._addFlag(field, scope);\n};\n\n/**\n * Removes a rule from the list of validators.\n */\nValidator.prototype.remove = function remove (name) {\n Validator.remove(name);\n};\n\n/**\n * Validates a value against a registered field validations.\n */\nValidator.prototype.validate = function validate (name, value, scope, silent) {\n var this$1 = this;\n if ( scope === void 0 ) scope = null;\n if ( silent === void 0 ) silent = false;\n\n if (this.paused) { return Promise.resolve(true); }\n\n // overload to validate all.\n if (arguments.length === 0) {\n return this.validateScopes();\n }\n\n // overload to validate scope-less fields.\n if (arguments.length === 1 && arguments[0] === '*') {\n return this.validateAll();\n }\n\n // overload to validate a scope.\n if (arguments.length === 1 && typeof arguments[0] === 'string' && /^(.+)\\.\\*$/.test(arguments[0])) {\n var matched = arguments[0].match(/^(.+)\\.\\*$/)[1];\n return this.validateAll(matched);\n }\n\n var field = this._resolveField(name, scope);\n if (!field) {\n return this._handleFieldNotFound(name, scope);\n }\n\n if (!silent) { field.flags.pending = true; }\n if (arguments.length === 1) {\n value = field.value;\n }\n\n return this._validate(field, value).then(function (result) {\n if (!silent) {\n this$1._handleValidationResults([result]);\n }\n\n return result.valid;\n });\n};\n\n/**\n * Pauses the validator.\n */\nValidator.prototype.pause = function pause () {\n this.paused = true;\n\n return this;\n};\n\n/**\n * Resumes the validator.\n */\nValidator.prototype.resume = function resume () {\n this.paused = false;\n\n return this;\n};\n\n/**\n * Validates each value against the corresponding field validations.\n */\nValidator.prototype.validateAll = function validateAll (values, scope, silent) {\n var this$1 = this;\n if ( scope === void 0 ) scope = null;\n if ( silent === void 0 ) silent = false;\n\n if (this.paused) { return Promise.resolve(true); }\n\n var matcher = null;\n var providedValues = false;\n\n if (typeof values === 'string') {\n matcher = { scope: values };\n } else if (isObject(values)) {\n matcher = Object.keys(values).map(function (key) {\n return { name: key, scope: scope };\n });\n providedValues = true;\n } else if (Array.isArray(values)) {\n matcher = values.map(function (key) {\n return { name: key, scope: scope };\n });\n } else {\n matcher = { scope: scope };\n }\n\n return Promise.all(\n this.fields.filter(matcher).map(function (field) { return this$1._validate(field, providedValues ? values[field.name] : field.value); })\n ).then(function (results) {\n if (!silent) {\n this$1._handleValidationResults(results);\n }\n\n return results.every(function (t) { return t.valid; });\n });\n};\n\n/**\n * Validates all scopes.\n */\nValidator.prototype.validateScopes = function validateScopes (silent) {\n var this$1 = this;\n if ( silent === void 0 ) silent = false;\n\n if (this.paused) { return Promise.resolve(true); }\n\n return Promise.all(\n this.fields.map(function (field) { return this$1._validate(field, field.value); })\n ).then(function (results) {\n if (!silent) {\n this$1._handleValidationResults(results);\n }\n\n return results.every(function (t) { return t.valid; });\n });\n};\n\n/**\n * Perform cleanup.\n */\nValidator.prototype.destroy = function destroy () {\n this._vm.$off('localeChanged', this._localeListener);\n};\n\n/**\n * Creates the fields to be validated.\n */\nValidator.prototype._createFields = function _createFields (validations) {\n var this$1 = this;\n\n if (!validations) { return; }\n\n Object.keys(validations).forEach(function (field) {\n var options = assign({}, { name: field, rules: validations[field] });\n this$1.attach(options);\n });\n};\n\n/**\n * Date rules need the existence of a format, so date_format must be supplied.\n */\nValidator.prototype._getDateFormat = function _getDateFormat (validations) {\n var format = null;\n if (validations.date_format && Array.isArray(validations.date_format)) {\n format = validations.date_format[0];\n }\n\n return format || this.dictionary.getDateFormat(this.locale);\n};\n\n/**\n * Checks if the passed rule is a date rule.\n */\nValidator.prototype._isADateRule = function _isADateRule (rule) {\n return !! ~['after', 'before', 'date_between', 'date_format'].indexOf(rule);\n};\n\n/**\n * Formats an error message for field and a rule.\n */\nValidator.prototype._formatErrorMessage = function _formatErrorMessage (field, rule, data, targetName) {\n if ( data === void 0 ) data = {};\n if ( targetName === void 0 ) targetName = null;\n\n var name = this._getFieldDisplayName(field);\n var params = this._getLocalizedParams(rule, targetName);\n\n return this.dictionary.getFieldMessage(this.locale, field.name, rule.name, [name, params, data]);\n};\n\n/**\n * Translates the parameters passed to the rule (mainly for target fields).\n */\nValidator.prototype._getLocalizedParams = function _getLocalizedParams (rule, targetName) {\n if ( targetName === void 0 ) targetName = null;\n\n if (~TARGET_RULES.indexOf(rule.name) && rule.params && rule.params[0]) {\n var localizedName = targetName || this.dictionary.getAttribute(this.locale, rule.params[0], rule.params[0]);\n return [localizedName].concat(rule.params.slice(1));\n }\n\n return rule.params;\n};\n\n/**\n * Resolves an appropriate display name, first checking 'data-as' or the registered 'prettyName'\n */\nValidator.prototype._getFieldDisplayName = function _getFieldDisplayName (field) {\n return field.alias || this.dictionary.getAttribute(this.locale, field.name, field.name);\n};\n\n/**\n * Adds a field flags to the flags collection.\n */\nValidator.prototype._addFlag = function _addFlag (field, scope) {\n var obj, obj$1, obj$2;\n\n if ( scope === void 0 ) scope = null;\n if (isNullOrUndefined(scope)) {\n this.flags = assign({}, this.flags, ( obj = {}, obj[(\"\" + (field.name))] = field.flags, obj ));\n return;\n }\n\n var scopeObj = assign({}, this.flags[(\"$\" + scope)] || {}, ( obj$1 = {}, obj$1[(\"\" + (field.name))] = field.flags, obj$1 ));\n this.flags = assign({}, this.flags, ( obj$2 = {}, obj$2[(\"$\" + scope)] = scopeObj, obj$2 ));\n};\n\n/**\n * Tests a single input value against a rule.\n */\nValidator.prototype._test = function _test (field, value, rule) {\n var this$1 = this;\n\n var validator = RULES[rule.name];\n var params = Array.isArray(rule.params) ? toArray(rule.params) : [];\n var targetName = null;\n if (!validator || typeof validator !== 'function') {\n return Promise.reject(createError((\"No such validator '\" + (rule.name) + \"' exists.\")));\n }\n\n // has field dependencies.\n if (TARGET_RULES.indexOf(rule.name) !== -1) {\n var target = find(field.dependencies, function (d) { return d.name === rule.name; });\n if (target) {\n targetName = target.field.alias;\n params = [target.field.value].concat(params.slice(1));\n }\n } else if (rule.name === 'required' && field.rejectsFalse) {\n // invalidate false if no args were specified and the field rejects false by default.\n params = params.length ? params : [true];\n }\n\n if (this._isADateRule(rule.name)) {\n var dateFormat = this._getDateFormat(field.rules);\n if (rule.name !== 'date_format') {\n params.push(dateFormat);\n }\n }\n\n var result = validator(value, params);\n\n // If it is a promise.\n if (isCallable(result.then)) {\n return result.then(function (values) {\n var allValid = true;\n var data = {};\n if (Array.isArray(values)) {\n allValid = values.every(function (t) { return (isObject(t) ? t.valid : t); });\n } else { // Is a single object/boolean.\n allValid = isObject(values) ? values.valid : values;\n data = values.data;\n }\n\n return {\n valid: allValid,\n errors: allValid ? [] : [this$1._createFieldError(field, rule, data, targetName)]\n };\n });\n }\n\n if (!isObject(result)) {\n result = { valid: result, data: {} };\n }\n\n return {\n valid: result.valid,\n errors: result.valid ? [] : [this._createFieldError(field, rule, result.data, targetName)]\n };\n};\n\n/**\n * Merges a validator object into the RULES and Messages.\n */\nValidator._merge = function _merge (name, validator) {\n if (isCallable(validator)) {\n RULES[name] = validator;\n return;\n }\n\n RULES[name] = validator.validate;\n if (validator.getMessage) {\n Validator.dictionary.setMessage(this.locale, name, validator.getMessage);\n }\n};\n\n/**\n * Guards from extension violations.\n */\nValidator._guardExtend = function _guardExtend (name, validator) {\n if (isCallable(validator)) {\n return;\n }\n\n if (!isCallable(validator.validate)) {\n throw createError(\n (\"Extension Error: The validator '\" + name + \"' must be a function or have a 'validate' method.\")\n );\n }\n};\n\n/**\n * Creates a Field Error Object.\n */\nValidator.prototype._createFieldError = function _createFieldError (field, rule, data, targetName) {\n var this$1 = this;\n\n return {\n id: field.id,\n field: field.name,\n msg: this._formatErrorMessage(field, rule, data, targetName),\n rule: rule.name,\n scope: field.scope,\n regenerate: function () {\n return this$1._formatErrorMessage(field, rule, data, targetName);\n }\n };\n};\n\n/**\n * Tries different strategies to find a field.\n */\nValidator.prototype._resolveField = function _resolveField (name, scope) {\n if (!isNullOrUndefined(scope)) {\n return this.fields.find({ name: name, scope: scope });\n }\n\n if (name[0] === '#') {\n return this.fields.find({ id: name.slice(1) });\n }\n\n if (name.indexOf('.') > -1) {\n var ref = name.split('.');\n var fieldScope = ref[0];\n var fieldName = ref.slice(1);\n var field = this.fields.find({ name: fieldName.join('.'), scope: fieldScope });\n if (field) {\n return field;\n }\n }\n\n return this.fields.find({ name: name, scope: null });\n};\n\n/**\n * Handles when a field is not found depending on the strict flag.\n */\nValidator.prototype._handleFieldNotFound = function _handleFieldNotFound (name, scope) {\n if (!this.strict) { return Promise.resolve(true); }\n\n var fullName = isNullOrUndefined(scope) ? name : (\"\" + (!isNullOrUndefined(scope) ? scope + '.' : '') + name);\n\n return Promise.reject(createError(\n (\"Validating a non-existent field: \\\"\" + fullName + \"\\\". Use \\\"attach()\\\" first.\")\n ));\n};\n\nValidator.prototype._handleValidationResults = function _handleValidationResults (results) {\n var this$1 = this;\n\n var matchers = results.map(function (result) { return ({ id: result.id }); });\n this.errors.removeById(matchers.map(function (m) { return m.id; }));\n // remove by name and scope to remove any custom errors added.\n results.forEach(function (result) {\n this$1.errors.remove(result.field, result.scope);\n });\n var allErrors = results.reduce(function (prev, curr) {\n prev.push.apply(prev, curr.errors);\n\n return prev;\n }, []);\n\n this.errors.add(allErrors);\n\n // handle flags.\n this.fields.filter(matchers).forEach(function (field) {\n var result = find(results, function (r) { return r.id === field.id; });\n field.setFlags({\n pending: false,\n valid: result.valid,\n validated: true\n });\n });\n};\n\n/**\n * Starts the validation process.\n */\nValidator.prototype._validate = function _validate (field, value) {\n var this$1 = this;\n\n // if field is disabled and is not required.\n if (field.isDisabled || (!field.isRequired && (isNullOrUndefined(value) || value === ''))) {\n return Promise.resolve({ valid: true, id: field.id, field: field.name, scope: field.scope, errors: [] });\n }\n\n var promises = [];\n var errors = [];\n var isExitEarly = false;\n // use of '.some()' is to break iteration in middle by returning true\n Object.keys(field.rules).some(function (rule) {\n var result = this$1._test(field, value, { name: rule, params: field.rules[rule] });\n if (isCallable(result.then)) {\n promises.push(result);\n } else if (this$1.fastExit && !result.valid) {\n errors.push.apply(errors, result.errors);\n isExitEarly = true;\n } else {\n // promisify the result.\n promises.push(new Promise(function (resolve) { return resolve(result); }));\n }\n\n return isExitEarly;\n });\n\n if (isExitEarly) {\n return Promise.resolve({ valid: false, errors: errors, id: field.id, field: field.name, scope: field.scope });\n }\n\n return Promise.all(promises).then(function (results) {\n return results.reduce(function (prev, v) {\n var ref;\n\n if (!v.valid) {\n (ref = prev.errors).push.apply(ref, v.errors);\n }\n\n prev.valid = prev.valid && v.valid;\n\n return prev;\n }, { valid: true, errors: errors, id: field.id, field: field.name, scope: field.scope });\n });\n};\n\nObject.defineProperties( Validator.prototype, prototypeAccessors$4 );\nObject.defineProperties( Validator, staticAccessors$1 );\n\n// \n\n/**\n * Checks if a parent validator instance was requested.\n */\nvar requestsValidator = function (injections) {\n if (isObject(injections) && injections.$validator) {\n return true;\n }\n\n return false;\n};\n\n/**\n * Creates a validator instance.\n */\nvar createValidator = function (vm, options) { return new Validator(null, { vm: vm, fastExit: options.fastExit }); };\n\nvar mixin = {\n provide: function provide () {\n if (this.$validator && !isBuiltInComponent(this.$vnode)) {\n return {\n $validator: this.$validator\n };\n }\n\n return {};\n },\n beforeCreate: function beforeCreate () {\n // if built in do nothing.\n if (isBuiltInComponent(this.$vnode)) {\n return;\n }\n\n // if its a root instance set the config if it exists.\n if (!this.$parent) {\n Config.merge(this.$options.$_veeValidate || {});\n }\n\n var options = Config.resolve(this);\n var Vue = this.$options._base; // the vue constructor.\n\n // if its a root instance, inject anyways, or if it requested a new instance.\n if (!this.$parent || (this.$options.$_veeValidate && /new/.test(this.$options.$_veeValidate.validator))) {\n this.$validator = createValidator(this, options);\n }\n\n var requested = requestsValidator(this.$options.inject);\n\n // if automatic injection is enabled and no instance was requested.\n if (! this.$validator && options.inject && !requested) {\n this.$validator = createValidator(this, options);\n }\n\n // don't inject errors or fieldBag as no validator was resolved.\n if (! requested && ! this.$validator) {\n return;\n }\n\n // There is a validator but it isn't injected, mark as reactive.\n if (! requested && this.$validator) {\n Vue.util.defineReactive(this.$validator, 'errors', this.$validator.errors);\n Vue.util.defineReactive(this.$validator, 'flags', this.$validator.flags);\n }\n\n if (! this.$options.computed) {\n this.$options.computed = {};\n }\n\n this.$options.computed[options.errorBagName || 'errors'] = function errorBagGetter () {\n return this.$validator.errors;\n };\n this.$options.computed[options.fieldsBagName || 'fields'] = function fieldBagGetter () {\n return this.$validator.flags;\n };\n },\n beforeDestroy: function beforeDestroy () {\n if (isBuiltInComponent(this.$vnode)) { return; }\n\n // mark the validator paused to prevent delayed validation.\n if (this.$validator && this.$validator.ownerId === this._uid) {\n this.$validator.pause();\n this.$validator.destroy();\n }\n }\n};\n\n// \n\n/**\n * Finds the requested field by id from the context object.\n */\nfunction findField (el, context) {\n if (!context || !context.$validator) {\n return null;\n }\n\n return context.$validator.fields.find({ id: el._veeValidateId });\n}\nvar directive = {\n bind: function bind (el, binding, vnode) {\n var validator = vnode.context.$validator;\n if (!validator) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\"No validator instance is present on vm, did you forget to inject '$validator'?\");\n }\n\n return;\n }\n\n var fieldOptions = Generator.generate(el, binding, vnode);\n validator.attach(fieldOptions);\n },\n inserted: function inserted (el, binding, vnode) {\n var field = findField(el, vnode.context);\n var scope = Generator.resolveScope(el, binding, vnode);\n\n // skip if scope hasn't changed.\n if (!field || scope === field.scope) { return; }\n\n // only update scope.\n field.update({ scope: scope });\n\n // allows the field to re-evaluated once more in the update hook.\n field.updated = false;\n },\n update: function update (el, binding, vnode) {\n var field = findField(el, vnode.context);\n\n // make sure we don't do unneccasary work if no important change was done.\n if (!field || (field.updated && isEqual(binding.value, binding.oldValue))) { return; }\n var scope = Generator.resolveScope(el, binding, vnode);\n var rules = Generator.resolveRules(el, binding, vnode);\n\n field.update({\n scope: scope,\n rules: rules\n });\n },\n unbind: function unbind (el, binding, ref) {\n var context = ref.context;\n\n var field = findField(el, context);\n if (!field) { return; }\n\n context.$validator.detach(field);\n }\n};\n\nvar Vue;\n\nfunction install (_Vue, options) {\n if ( options === void 0 ) options = {};\n\n if (Vue && _Vue === Vue) {\n if (process.env.NODE_ENV !== 'production') {\n warn('already installed, Vue.use(VeeValidate) should only be called once.');\n }\n return;\n }\n\n detectPassiveSupport();\n Vue = _Vue;\n var localVue = new Vue();\n Config.register('vm', localVue);\n Config.merge(options);\n\n var ref = Config.current;\n var dictionary = ref.dictionary;\n var i18n = ref.i18n;\n\n if (dictionary) {\n Validator.localize(dictionary); // merge the dictionary.\n }\n\n // try to watch locale changes.\n if (i18n && i18n._vm && isCallable(i18n._vm.$watch)) {\n i18n._vm.$watch('locale', function () {\n localVue.$emit('localeChanged');\n });\n }\n\n if (!i18n && options.locale) {\n Validator.localize(options.locale); // set the locale\n }\n\n Validator.setStrictMode(Config.current.strict);\n\n Vue.mixin(mixin);\n Vue.directive('validate', directive);\n}\n\n/**\n * Formates file size.\n *\n * @param {Number|String} size\n */\nvar formatFileSize = function (size) {\n var units = ['Byte', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n var threshold = 1024;\n size = Number(size) * threshold;\n var i = size === 0 ? 0 : Math.floor(Math.log(size) / Math.log(threshold));\n return (((size / Math.pow(threshold, i)).toFixed(2) * 1) + \" \" + (units[i]));\n};\n\n/**\n * Checks if vee-validate is defined globally.\n */\nvar isDefinedGlobally = function () {\n return typeof VeeValidate !== 'undefined';\n};\n\nvar obj;\n\nvar messages = {\n _default: function (field) { return (\"The \" + field + \" value is not valid.\"); },\n after: function (field, ref) {\n var target = ref[0];\n var inclusion = ref[1];\n\n return (\"The \" + field + \" must be after \" + (inclusion ? 'or equal to ' : '') + target + \".\");\n},\n alpha_dash: function (field) { return (\"The \" + field + \" field may contain alpha-numeric characters as well as dashes and underscores.\"); },\n alpha_num: function (field) { return (\"The \" + field + \" field may only contain alpha-numeric characters.\"); },\n alpha_spaces: function (field) { return (\"The \" + field + \" field may only contain alphabetic characters as well as spaces.\"); },\n alpha: function (field) { return (\"The \" + field + \" field may only contain alphabetic characters.\"); },\n before: function (field, ref) {\n var target = ref[0];\n var inclusion = ref[1];\n\n return (\"The \" + field + \" must be before \" + (inclusion ? 'or equal to ' : '') + target + \".\");\n},\n between: function (field, ref) {\n var min = ref[0];\n var max = ref[1];\n\n return (\"The \" + field + \" field must be between \" + min + \" and \" + max + \".\");\n},\n confirmed: function (field) { return (\"The \" + field + \" confirmation does not match.\"); },\n credit_card: function (field) { return (\"The \" + field + \" field is invalid.\"); },\n date_between: function (field, ref) {\n var min = ref[0];\n var max = ref[1];\n\n return (\"The \" + field + \" must be between \" + min + \" and \" + max + \".\");\n},\n date_format: function (field, ref) {\n var format = ref[0];\n\n return (\"The \" + field + \" must be in the format \" + format + \".\");\n},\n decimal: function (field, ref) {\n if ( ref === void 0 ) ref = [];\n var decimals = ref[0]; if ( decimals === void 0 ) decimals = '*';\n\n return (\"The \" + field + \" field must be numeric and may contain \" + (!decimals || decimals === '*' ? '' : decimals) + \" decimal points.\");\n},\n digits: function (field, ref) {\n var length = ref[0];\n\n return (\"The \" + field + \" field must be numeric and exactly contain \" + length + \" digits.\");\n},\n dimensions: function (field, ref) {\n var width = ref[0];\n var height = ref[1];\n\n return (\"The \" + field + \" field must be \" + width + \" pixels by \" + height + \" pixels.\");\n},\n email: function (field) { return (\"The \" + field + \" field must be a valid email.\"); },\n ext: function (field) { return (\"The \" + field + \" field must be a valid file.\"); },\n image: function (field) { return (\"The \" + field + \" field must be an image.\"); },\n included: function (field) { return (\"The \" + field + \" field must be a valid value.\"); },\n integer: function (field) { return (\"The \" + field + \" field must be an integer.\"); },\n ip: function (field) { return (\"The \" + field + \" field must be a valid ip address.\"); },\n length: function (field, ref) {\n var length = ref[0];\n var max = ref[1];\n\n if (max) {\n return (\"The \" + field + \" length must be between \" + length + \" and \" + max + \".\");\n }\n\n return (\"The \" + field + \" length must be \" + length + \".\");\n },\n max: function (field, ref) {\n var length = ref[0];\n\n return (\"The \" + field + \" field may not be greater than \" + length + \" characters.\");\n},\n max_value: function (field, ref) {\n var max = ref[0];\n\n return (\"The \" + field + \" field must be \" + max + \" or less.\");\n},\n mimes: function (field) { return (\"The \" + field + \" field must have a valid file type.\"); },\n min: function (field, ref) {\n var length = ref[0];\n\n return (\"The \" + field + \" field must be at least \" + length + \" characters.\");\n},\n min_value: function (field, ref) {\n var min = ref[0];\n\n return (\"The \" + field + \" field must be \" + min + \" or more.\");\n},\n excluded: function (field) { return (\"The \" + field + \" field must be a valid value.\"); },\n numeric: function (field) { return (\"The \" + field + \" field may only contain numeric characters.\"); },\n regex: function (field) { return (\"The \" + field + \" field format is invalid.\"); },\n required: function (field) { return (\"The \" + field + \" field is required.\"); },\n size: function (field, ref) {\n var size = ref[0];\n\n return (\"The \" + field + \" size must be less than \" + (formatFileSize(size)) + \".\");\n},\n url: function (field) { return (\"The \" + field + \" field is not a valid URL.\"); }\n};\n\nvar locale = {\n name: 'en',\n messages: messages,\n attributes: {}\n};\n\nif (isDefinedGlobally()) {\n // eslint-disable-next-line\n VeeValidate.Validator.localize(( obj = {}, obj[locale.name] = locale, obj ));\n}\n\n// \n\nfunction use (plugin, options) {\n if ( options === void 0 ) options = {};\n\n if (!isCallable(plugin)) {\n return warn('The plugin must be a callable function');\n }\n\n plugin({ Validator: Validator, ErrorBag: ErrorBag, Rules: Validator.rules }, options);\n}\n\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar DEFAULT_ADDITIONAL_DIGITS = 2;\n\nvar patterns = {\n dateTimeDelimeter: /[T ]/,\n plainTime: /:/,\n\n // year tokens\n YY: /^(\\d{2})$/,\n YYY: [\n /^([+-]\\d{2})$/, // 0 additional digits\n /^([+-]\\d{3})$/, // 1 additional digit\n /^([+-]\\d{4})$/ // 2 additional digits\n ],\n YYYY: /^(\\d{4})/,\n YYYYY: [\n /^([+-]\\d{4})/, // 0 additional digits\n /^([+-]\\d{5})/, // 1 additional digit\n /^([+-]\\d{6})/ // 2 additional digits\n ],\n\n // date tokens\n MM: /^-(\\d{2})$/,\n DDD: /^-?(\\d{3})$/,\n MMDD: /^-?(\\d{2})-?(\\d{2})$/,\n Www: /^-?W(\\d{2})$/,\n WwwD: /^-?W(\\d{2})-?(\\d{1})$/,\n\n HH: /^(\\d{2}([.,]\\d*)?)$/,\n HHMM: /^(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n HHMMSS: /^(\\d{2}):?(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n\n // timezone tokens\n timezone: /([Z+-].*)$/,\n timezoneZ: /^(Z)$/,\n timezoneHH: /^([+-])(\\d{2})$/,\n timezoneHHMM: /^([+-])(\\d{2}):?(\\d{2})$/\n};\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If an argument is a string, the function tries to parse it.\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument is null, it is treated as an invalid date.\n *\n * If all above fails, the function passes the given argument to Date constructor.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n * All *date-fns* functions will throw `RangeError` if `options.additionalDigits` is not 0, 1, 2 or undefined.\n *\n * @param {*} argument - the value to convert\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * var result = toDate('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * var result = toDate('+02014101', {additionalDigits: 1})\n * //=> Fri Apr 11 2014 00:00:00\n */\nfunction toDate (argument, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n if (argument === null) {\n return new Date(NaN)\n }\n\n var options = dirtyOptions || {};\n\n var additionalDigits = options.additionalDigits === undefined ? DEFAULT_ADDITIONAL_DIGITS : Number(options.additionalDigits);\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2')\n }\n\n // Clone the date\n if (argument instanceof Date) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime())\n } else if (typeof argument !== 'string') {\n return new Date(argument)\n }\n\n var dateStrings = splitDateString(argument);\n\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n var year = parseYearResult.year;\n var restDateString = parseYearResult.restDateString;\n\n var date = parseDate(restDateString, year);\n\n if (date) {\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n } else {\n // get offset accurate to hour in timezones that change offset\n offset = new Date(timestamp + time).getTimezoneOffset();\n offset = new Date(timestamp + time + offset * MILLISECONDS_IN_MINUTE).getTimezoneOffset();\n }\n\n return new Date(timestamp + time + offset * MILLISECONDS_IN_MINUTE)\n } else {\n return new Date(argument)\n }\n}\n\nfunction splitDateString (dateString) {\n var dateStrings = {};\n var array = dateString.split(patterns.dateTimeDelimeter);\n var timeString;\n\n if (patterns.plainTime.test(array[0])) {\n dateStrings.date = null;\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n }\n\n if (timeString) {\n var token = patterns.timezone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n\n return dateStrings\n}\n\nfunction parseYear (dateString, additionalDigits) {\n var patternYYY = patterns.YYY[additionalDigits];\n var patternYYYYY = patterns.YYYYY[additionalDigits];\n\n var token;\n\n // YYYY or ±YYYYY\n token = patterns.YYYY.exec(dateString) || patternYYYYY.exec(dateString);\n if (token) {\n var yearString = token[1];\n return {\n year: parseInt(yearString, 10),\n restDateString: dateString.slice(yearString.length)\n }\n }\n\n // YY or ±YYY\n token = patterns.YY.exec(dateString) || patternYYY.exec(dateString);\n if (token) {\n var centuryString = token[1];\n return {\n year: parseInt(centuryString, 10) * 100,\n restDateString: dateString.slice(centuryString.length)\n }\n }\n\n // Invalid ISO-formatted year\n return {\n year: null\n }\n}\n\nfunction parseDate (dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) {\n return null\n }\n\n var token;\n var date;\n var month;\n var week;\n\n // YYYY\n if (dateString.length === 0) {\n date = new Date(0);\n date.setUTCFullYear(year);\n return date\n }\n\n // YYYY-MM\n token = patterns.MM.exec(dateString);\n if (token) {\n date = new Date(0);\n month = parseInt(token[1], 10) - 1;\n date.setUTCFullYear(year, month);\n return date\n }\n\n // YYYY-DDD or YYYYDDD\n token = patterns.DDD.exec(dateString);\n if (token) {\n date = new Date(0);\n var dayOfYear = parseInt(token[1], 10);\n date.setUTCFullYear(year, 0, dayOfYear);\n return date\n }\n\n // YYYY-MM-DD or YYYYMMDD\n token = patterns.MMDD.exec(dateString);\n if (token) {\n date = new Date(0);\n month = parseInt(token[1], 10) - 1;\n var day = parseInt(token[2], 10);\n date.setUTCFullYear(year, month, day);\n return date\n }\n\n // YYYY-Www or YYYYWww\n token = patterns.Www.exec(dateString);\n if (token) {\n week = parseInt(token[1], 10) - 1;\n return dayOfISOYear(year, week)\n }\n\n // YYYY-Www-D or YYYYWwwD\n token = patterns.WwwD.exec(dateString);\n if (token) {\n week = parseInt(token[1], 10) - 1;\n var dayOfWeek = parseInt(token[2], 10) - 1;\n return dayOfISOYear(year, week, dayOfWeek)\n }\n\n // Invalid ISO-formatted date\n return null\n}\n\nfunction parseTime (timeString) {\n var token;\n var hours;\n var minutes;\n\n // hh\n token = patterns.HH.exec(timeString);\n if (token) {\n hours = parseFloat(token[1].replace(',', '.'));\n return (hours % 24) * MILLISECONDS_IN_HOUR\n }\n\n // hh:mm or hhmm\n token = patterns.HHMM.exec(timeString);\n if (token) {\n hours = parseInt(token[1], 10);\n minutes = parseFloat(token[2].replace(',', '.'));\n return (hours % 24) * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE\n }\n\n // hh:mm:ss or hhmmss\n token = patterns.HHMMSS.exec(timeString);\n if (token) {\n hours = parseInt(token[1], 10);\n minutes = parseInt(token[2], 10);\n var seconds = parseFloat(token[3].replace(',', '.'));\n return (hours % 24) * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE +\n seconds * 1000\n }\n\n // Invalid ISO-formatted time\n return null\n}\n\nfunction parseTimezone (timezoneString) {\n var token;\n var absoluteOffset;\n\n // Z\n token = patterns.timezoneZ.exec(timezoneString);\n if (token) {\n return 0\n }\n\n // ±hh\n token = patterns.timezoneHH.exec(timezoneString);\n if (token) {\n absoluteOffset = parseInt(token[2], 10) * 60;\n return (token[1] === '+') ? -absoluteOffset : absoluteOffset\n }\n\n // ±hh:mm or ±hhmm\n token = patterns.timezoneHHMM.exec(timezoneString);\n if (token) {\n absoluteOffset = parseInt(token[2], 10) * 60 + parseInt(token[3], 10);\n return (token[1] === '+') ? -absoluteOffset : absoluteOffset\n }\n\n return 0\n}\n\nfunction dayOfISOYear (isoYear, week, day) {\n week = week || 0;\n day = day || 0;\n var date = new Date(0);\n date.setUTCFullYear(isoYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = week * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date\n}\n\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * var result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nfunction addMilliseconds (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var timestamp = toDate(dirtyDate, dirtyOptions).getTime();\n var amount = Number(dirtyAmount);\n return new Date(timestamp + amount)\n}\n\nfunction cloneObject (dirtyObject) {\n dirtyObject = dirtyObject || {};\n var object = {};\n\n for (var property in dirtyObject) {\n if (dirtyObject.hasOwnProperty(property)) {\n object[property] = dirtyObject[property];\n }\n }\n\n return object\n}\n\nvar MILLISECONDS_IN_MINUTE$2 = 60000;\n\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the minutes added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * var result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\nfunction addMinutes (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = Number(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE$2, dirtyOptions)\n}\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // For the valid date:\n * var result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * var result = isValid('2014-02-31')\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\nfunction isValid (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n return !isNaN(date)\n}\n\nvar formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n\n halfAMinute: 'half a minute',\n\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\n\nfunction formatDistance (token, count, options) {\n options = options || {};\n\n var result;\n if (typeof formatDistanceLocale[token] === 'string') {\n result = formatDistanceLocale[token];\n } else if (count === 1) {\n result = formatDistanceLocale[token].one;\n } else {\n result = formatDistanceLocale[token].other.replace('{{count}}', count);\n }\n\n if (options.addSuffix) {\n if (options.comparison > 0) {\n return 'in ' + result\n } else {\n return result + ' ago'\n }\n }\n\n return result\n}\n\nvar tokensToBeShortedPattern = /MMMM|MM|DD|dddd/g;\n\nfunction buildShortLongFormat (format) {\n return format.replace(tokensToBeShortedPattern, function (token) {\n return token.slice(1)\n })\n}\n\n/**\n * @name buildFormatLongFn\n * @category Locale Helpers\n * @summary Build `formatLong` property for locale used by `format`, `formatRelative` and `parse` functions.\n *\n * @description\n * Build `formatLong` property for locale used by `format`, `formatRelative` and `parse` functions.\n * Returns a function which takes one of the following tokens as the argument:\n * `'LTS'`, `'LT'`, `'L'`, `'LL'`, `'LLL'`, `'l'`, `'ll'`, `'lll'`, `'llll'`\n * and returns a long format string written as `format` token strings.\n * See [format]{@link https://date-fns.org/docs/format}\n *\n * `'l'`, `'ll'`, `'lll'` and `'llll'` formats are built automatically\n * by shortening some of the tokens from corresponding unshortened formats\n * (e.g., if `LL` is `'MMMM DD YYYY'` then `ll` will be `MMM D YYYY`)\n *\n * @param {Object} obj - the object with long formats written as `format` token strings\n * @param {String} obj.LT - time format: hours and minutes\n * @param {String} obj.LTS - time format: hours, minutes and seconds\n * @param {String} obj.L - short date format: numeric day, month and year\n * @param {String} [obj.l] - short date format: numeric day, month and year (shortened)\n * @param {String} obj.LL - long date format: day, month in words, and year\n * @param {String} [obj.ll] - long date format: day, month in words, and year (shortened)\n * @param {String} obj.LLL - long date and time format\n * @param {String} [obj.lll] - long date and time format (shortened)\n * @param {String} obj.LLLL - long date, time and weekday format\n * @param {String} [obj.llll] - long date, time and weekday format (shortened)\n * @returns {Function} `formatLong` property of the locale\n *\n * @example\n * // For `en-US` locale:\n * locale.formatLong = buildFormatLongFn({\n * LT: 'h:mm aa',\n * LTS: 'h:mm:ss aa',\n * L: 'MM/DD/YYYY',\n * LL: 'MMMM D YYYY',\n * LLL: 'MMMM D YYYY h:mm aa',\n * LLLL: 'dddd, MMMM D YYYY h:mm aa'\n * })\n */\nfunction buildFormatLongFn (obj) {\n var formatLongLocale = {\n LTS: obj.LTS,\n LT: obj.LT,\n L: obj.L,\n LL: obj.LL,\n LLL: obj.LLL,\n LLLL: obj.LLLL,\n l: obj.l || buildShortLongFormat(obj.L),\n ll: obj.ll || buildShortLongFormat(obj.LL),\n lll: obj.lll || buildShortLongFormat(obj.LLL),\n llll: obj.llll || buildShortLongFormat(obj.LLLL)\n };\n\n return function (token) {\n return formatLongLocale[token]\n }\n}\n\nvar formatLong = buildFormatLongFn({\n LT: 'h:mm aa',\n LTS: 'h:mm:ss aa',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D YYYY',\n LLL: 'MMMM D YYYY h:mm aa',\n LLLL: 'dddd, MMMM D YYYY h:mm aa'\n});\n\nvar formatRelativeLocale = {\n lastWeek: '[last] dddd [at] LT',\n yesterday: '[yesterday at] LT',\n today: '[today at] LT',\n tomorrow: '[tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n other: 'L'\n};\n\nfunction formatRelative (token, date, baseDate, options) {\n return formatRelativeLocale[token]\n}\n\n/**\n * @name buildLocalizeFn\n * @category Locale Helpers\n * @summary Build `localize.weekday`, `localize.month` and `localize.timeOfDay` properties for the locale.\n *\n * @description\n * Build `localize.weekday`, `localize.month` and `localize.timeOfDay` properties for the locale\n * used by `format` function.\n * If no `type` is supplied to the options of the resulting function, `defaultType` will be used (see example).\n *\n * `localize.weekday` function takes the weekday index as argument (0 - Sunday).\n * `localize.month` takes the month index (0 - January).\n * `localize.timeOfDay` takes the hours. Use `indexCallback` to convert them to an array index (see example).\n *\n * @param {Object} values - the object with arrays of values\n * @param {String} defaultType - the default type for the localize function\n * @param {Function} [indexCallback] - the callback which takes the resulting function argument\n * and converts it into value array index\n * @returns {Function} the resulting function\n *\n * @example\n * var timeOfDayValues = {\n * uppercase: ['AM', 'PM'],\n * lowercase: ['am', 'pm'],\n * long: ['a.m.', 'p.m.']\n * }\n * locale.localize.timeOfDay = buildLocalizeFn(timeOfDayValues, 'long', function (hours) {\n * // 0 is a.m. array index, 1 is p.m. array index\n * return (hours / 12) >= 1 ? 1 : 0\n * })\n * locale.localize.timeOfDay(16, {type: 'uppercase'}) //=> 'PM'\n * locale.localize.timeOfDay(5) //=> 'a.m.'\n */\nfunction buildLocalizeFn (values, defaultType, indexCallback) {\n return function (dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {};\n var type = options.type ? String(options.type) : defaultType;\n var valuesArray = values[type] || values[defaultType];\n var index = indexCallback ? indexCallback(Number(dirtyIndex)) : Number(dirtyIndex);\n return valuesArray[index]\n }\n}\n\n/**\n * @name buildLocalizeArrayFn\n * @category Locale Helpers\n * @summary Build `localize.weekdays`, `localize.months` and `localize.timesOfDay` properties for the locale.\n *\n * @description\n * Build `localize.weekdays`, `localize.months` and `localize.timesOfDay` properties for the locale.\n * If no `type` is supplied to the options of the resulting function, `defaultType` will be used (see example).\n *\n * @param {Object} values - the object with arrays of values\n * @param {String} defaultType - the default type for the localize function\n * @returns {Function} the resulting function\n *\n * @example\n * var weekdayValues = {\n * narrow: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n * short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n * long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n * }\n * locale.localize.weekdays = buildLocalizeArrayFn(weekdayValues, 'long')\n * locale.localize.weekdays({type: 'narrow'}) //=> ['Su', 'Mo', ...]\n * locale.localize.weekdays() //=> ['Sunday', 'Monday', ...]\n */\nfunction buildLocalizeArrayFn (values, defaultType) {\n return function (dirtyOptions) {\n var options = dirtyOptions || {};\n var type = options.type ? String(options.type) : defaultType;\n return values[type] || values[defaultType]\n }\n}\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar weekdayValues = {\n narrow: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\n\nvar monthValues = {\n short: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n long: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\n\n// `timeOfDay` is used to designate which part of the day it is, when used with 12-hour clock.\n// Use the system which is used the most commonly in the locale.\n// For example, if the country doesn't use a.m./p.m., you can use `night`/`morning`/`afternoon`/`evening`:\n//\n// var timeOfDayValues = {\n// any: ['in the night', 'in the morning', 'in the afternoon', 'in the evening']\n// }\n//\n// And later:\n//\n// var localize = {\n// // The callback takes the hours as the argument and returns the array index\n// timeOfDay: buildLocalizeFn(timeOfDayValues, 'any', function (hours) {\n// if (hours >= 17) {\n// return 3\n// } else if (hours >= 12) {\n// return 2\n// } else if (hours >= 4) {\n// return 1\n// } else {\n// return 0\n// }\n// }),\n// timesOfDay: buildLocalizeArrayFn(timeOfDayValues, 'any')\n// }\nvar timeOfDayValues = {\n uppercase: ['AM', 'PM'],\n lowercase: ['am', 'pm'],\n long: ['a.m.', 'p.m.']\n};\n\nfunction ordinalNumber (dirtyNumber, dirtyOptions) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`:\n //\n // var options = dirtyOptions || {}\n // var unit = String(options.unit)\n //\n // where `unit` can be 'month', 'quarter', 'week', 'isoWeek', 'dayOfYear',\n // 'dayOfMonth' or 'dayOfWeek'\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st'\n case 2:\n return number + 'nd'\n case 3:\n return number + 'rd'\n }\n }\n return number + 'th'\n}\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n weekday: buildLocalizeFn(weekdayValues, 'long'),\n weekdays: buildLocalizeArrayFn(weekdayValues, 'long'),\n month: buildLocalizeFn(monthValues, 'long'),\n months: buildLocalizeArrayFn(monthValues, 'long'),\n timeOfDay: buildLocalizeFn(timeOfDayValues, 'long', function (hours) {\n return (hours / 12) >= 1 ? 1 : 0\n }),\n timesOfDay: buildLocalizeArrayFn(timeOfDayValues, 'long')\n};\n\n/**\n * @name buildMatchFn\n * @category Locale Helpers\n * @summary Build `match.weekdays`, `match.months` and `match.timesOfDay` properties for the locale.\n *\n * @description\n * Build `match.weekdays`, `match.months` and `match.timesOfDay` properties for the locale used by `parse` function.\n * If no `type` is supplied to the options of the resulting function, `defaultType` will be used (see example).\n * The result of the match function will be passed into corresponding parser function\n * (`match.weekday`, `match.month` or `match.timeOfDay` respectively. See `buildParseFn`).\n *\n * @param {Object} values - the object with RegExps\n * @param {String} defaultType - the default type for the match function\n * @returns {Function} the resulting function\n *\n * @example\n * var matchWeekdaysPatterns = {\n * narrow: /^(su|mo|tu|we|th|fr|sa)/i,\n * short: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n * long: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n * }\n * locale.match.weekdays = buildMatchFn(matchWeekdaysPatterns, 'long')\n * locale.match.weekdays('Sunday', {type: 'narrow'}) //=> ['Su', 'Su', ...]\n * locale.match.weekdays('Sunday') //=> ['Sunday', 'Sunday', ...]\n */\nfunction buildMatchFn (patterns, defaultType) {\n return function (dirtyString, dirtyOptions) {\n var options = dirtyOptions || {};\n var type = options.type ? String(options.type) : defaultType;\n var pattern = patterns[type] || patterns[defaultType];\n var string = String(dirtyString);\n return string.match(pattern)\n }\n}\n\n/**\n * @name buildParseFn\n * @category Locale Helpers\n * @summary Build `match.weekday`, `match.month` and `match.timeOfDay` properties for the locale.\n *\n * @description\n * Build `match.weekday`, `match.month` and `match.timeOfDay` properties for the locale used by `parse` function.\n * The argument of the resulting function is the result of the corresponding match function\n * (`match.weekdays`, `match.months` or `match.timesOfDay` respectively. See `buildMatchFn`).\n *\n * @param {Object} values - the object with arrays of RegExps\n * @param {String} defaultType - the default type for the parser function\n * @returns {Function} the resulting function\n *\n * @example\n * var parseWeekdayPatterns = {\n * any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n * }\n * locale.match.weekday = buildParseFn(matchWeekdaysPatterns, 'long')\n * var matchResult = locale.match.weekdays('Friday')\n * locale.match.weekday(matchResult) //=> 5\n */\nfunction buildParseFn (patterns, defaultType) {\n return function (matchResult, dirtyOptions) {\n var options = dirtyOptions || {};\n var type = options.type ? String(options.type) : defaultType;\n var patternsArray = patterns[type] || patterns[defaultType];\n var string = matchResult[1];\n\n return patternsArray.findIndex(function (pattern) {\n return pattern.test(string)\n })\n }\n}\n\n/**\n * @name buildMatchPatternFn\n * @category Locale Helpers\n * @summary Build match function from a single RegExp.\n *\n * @description\n * Build match function from a single RegExp.\n * Usually used for building `match.ordinalNumbers` property of the locale.\n *\n * @param {Object} pattern - the RegExp\n * @returns {Function} the resulting function\n *\n * @example\n * locale.match.ordinalNumbers = buildMatchPatternFn(/^(\\d+)(th|st|nd|rd)?/i)\n * locale.match.ordinalNumbers('3rd') //=> ['3rd', '3', 'rd', ...]\n */\nfunction buildMatchPatternFn (pattern) {\n return function (dirtyString) {\n var string = String(dirtyString);\n return string.match(pattern)\n }\n}\n\n/**\n * @name parseDecimal\n * @category Locale Helpers\n * @summary Parses the match result into decimal number.\n *\n * @description\n * Parses the match result into decimal number.\n * Uses the string matched with the first set of parentheses of match RegExp.\n *\n * @param {Array} matchResult - the object returned by matching function\n * @returns {Number} the parsed value\n *\n * @example\n * locale.match = {\n * ordinalNumbers: (dirtyString) {\n * return String(dirtyString).match(/^(\\d+)(th|st|nd|rd)?/i)\n * },\n * ordinalNumber: parseDecimal\n * }\n */\nfunction parseDecimal (matchResult) {\n return parseInt(matchResult[1], 10)\n}\n\nvar matchOrdinalNumbersPattern = /^(\\d+)(th|st|nd|rd)?/i;\n\nvar matchWeekdaysPatterns = {\n narrow: /^(su|mo|tu|we|th|fr|sa)/i,\n short: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n long: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\n\nvar parseWeekdayPatterns = {\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\n\nvar matchMonthsPatterns = {\n short: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n long: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\n\nvar parseMonthPatterns = {\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\n\n// `timeOfDay` is used to designate which part of the day it is, when used with 12-hour clock.\n// Use the system which is used the most commonly in the locale.\n// For example, if the country doesn't use a.m./p.m., you can use `night`/`morning`/`afternoon`/`evening`:\n//\n// var matchTimesOfDayPatterns = {\n// long: /^((in the)? (night|morning|afternoon|evening?))/i\n// }\n//\n// var parseTimeOfDayPatterns = {\n// any: [/(night|morning)/i, /(afternoon|evening)/i]\n// }\nvar matchTimesOfDayPatterns = {\n short: /^(am|pm)/i,\n long: /^([ap]\\.?\\s?m\\.?)/i\n};\n\nvar parseTimeOfDayPatterns = {\n any: [/^a/i, /^p/i]\n};\n\nvar match = {\n ordinalNumbers: buildMatchPatternFn(matchOrdinalNumbersPattern),\n ordinalNumber: parseDecimal,\n weekdays: buildMatchFn(matchWeekdaysPatterns, 'long'),\n weekday: buildParseFn(parseWeekdayPatterns, 'any'),\n months: buildMatchFn(matchMonthsPatterns, 'long'),\n month: buildParseFn(parseMonthPatterns, 'any'),\n timesOfDay: buildMatchFn(matchTimesOfDayPatterns, 'long'),\n timeOfDay: buildParseFn(parseTimeOfDayPatterns, 'any')\n};\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n */\nvar locale$1 = {\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\n\nvar MILLISECONDS_IN_DAY$1 = 86400000;\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction getUTCDayOfYear (dirtyDate, dirtyOptions) {\n var date = toDate(dirtyDate, dirtyOptions);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY$1) + 1\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction startOfUTCISOWeek (dirtyDate, dirtyOptions) {\n var weekStartsOn = 1;\n\n var date = toDate(dirtyDate, dirtyOptions);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction getUTCISOWeekYear (dirtyDate, dirtyOptions) {\n var date = toDate(dirtyDate, dirtyOptions);\n var year = date.getUTCFullYear();\n\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear, dirtyOptions);\n\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear, dirtyOptions);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year\n } else {\n return year - 1\n }\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction startOfUTCISOWeekYear (dirtyDate, dirtyOptions) {\n var year = getUTCISOWeekYear(dirtyDate, dirtyOptions);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary, dirtyOptions);\n return date\n}\n\nvar MILLISECONDS_IN_WEEK$2 = 604800000;\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction getUTCISOWeek (dirtyDate, dirtyOptions) {\n var date = toDate(dirtyDate, dirtyOptions);\n var diff = startOfUTCISOWeek(date, dirtyOptions).getTime() - startOfUTCISOWeekYear(date, dirtyOptions).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK$2) + 1\n}\n\nvar formatters = {\n // Month: 1, 2, ..., 12\n 'M': function (date) {\n return date.getUTCMonth() + 1\n },\n\n // Month: 1st, 2nd, ..., 12th\n 'Mo': function (date, options) {\n var month = date.getUTCMonth() + 1;\n return options.locale.localize.ordinalNumber(month, {unit: 'month'})\n },\n\n // Month: 01, 02, ..., 12\n 'MM': function (date) {\n return addLeadingZeros(date.getUTCMonth() + 1, 2)\n },\n\n // Month: Jan, Feb, ..., Dec\n 'MMM': function (date, options) {\n return options.locale.localize.month(date.getUTCMonth(), {type: 'short'})\n },\n\n // Month: January, February, ..., December\n 'MMMM': function (date, options) {\n return options.locale.localize.month(date.getUTCMonth(), {type: 'long'})\n },\n\n // Quarter: 1, 2, 3, 4\n 'Q': function (date) {\n return Math.ceil((date.getUTCMonth() + 1) / 3)\n },\n\n // Quarter: 1st, 2nd, 3rd, 4th\n 'Qo': function (date, options) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n return options.locale.localize.ordinalNumber(quarter, {unit: 'quarter'})\n },\n\n // Day of month: 1, 2, ..., 31\n 'D': function (date) {\n return date.getUTCDate()\n },\n\n // Day of month: 1st, 2nd, ..., 31st\n 'Do': function (date, options) {\n return options.locale.localize.ordinalNumber(date.getUTCDate(), {unit: 'dayOfMonth'})\n },\n\n // Day of month: 01, 02, ..., 31\n 'DD': function (date) {\n return addLeadingZeros(date.getUTCDate(), 2)\n },\n\n // Day of year: 1, 2, ..., 366\n 'DDD': function (date) {\n return getUTCDayOfYear(date)\n },\n\n // Day of year: 1st, 2nd, ..., 366th\n 'DDDo': function (date, options) {\n return options.locale.localize.ordinalNumber(getUTCDayOfYear(date), {unit: 'dayOfYear'})\n },\n\n // Day of year: 001, 002, ..., 366\n 'DDDD': function (date) {\n return addLeadingZeros(getUTCDayOfYear(date), 3)\n },\n\n // Day of week: Su, Mo, ..., Sa\n 'dd': function (date, options) {\n return options.locale.localize.weekday(date.getUTCDay(), {type: 'narrow'})\n },\n\n // Day of week: Sun, Mon, ..., Sat\n 'ddd': function (date, options) {\n return options.locale.localize.weekday(date.getUTCDay(), {type: 'short'})\n },\n\n // Day of week: Sunday, Monday, ..., Saturday\n 'dddd': function (date, options) {\n return options.locale.localize.weekday(date.getUTCDay(), {type: 'long'})\n },\n\n // Day of week: 0, 1, ..., 6\n 'd': function (date) {\n return date.getUTCDay()\n },\n\n // Day of week: 0th, 1st, 2nd, ..., 6th\n 'do': function (date, options) {\n return options.locale.localize.ordinalNumber(date.getUTCDay(), {unit: 'dayOfWeek'})\n },\n\n // Day of ISO week: 1, 2, ..., 7\n 'E': function (date) {\n return date.getUTCDay() || 7\n },\n\n // ISO week: 1, 2, ..., 53\n 'W': function (date) {\n return getUTCISOWeek(date)\n },\n\n // ISO week: 1st, 2nd, ..., 53th\n 'Wo': function (date, options) {\n return options.locale.localize.ordinalNumber(getUTCISOWeek(date), {unit: 'isoWeek'})\n },\n\n // ISO week: 01, 02, ..., 53\n 'WW': function (date) {\n return addLeadingZeros(getUTCISOWeek(date), 2)\n },\n\n // Year: 00, 01, ..., 99\n 'YY': function (date) {\n return addLeadingZeros(date.getUTCFullYear(), 4).substr(2)\n },\n\n // Year: 1900, 1901, ..., 2099\n 'YYYY': function (date) {\n return addLeadingZeros(date.getUTCFullYear(), 4)\n },\n\n // ISO week-numbering year: 00, 01, ..., 99\n 'GG': function (date) {\n return String(getUTCISOWeekYear(date)).substr(2)\n },\n\n // ISO week-numbering year: 1900, 1901, ..., 2099\n 'GGGG': function (date) {\n return getUTCISOWeekYear(date)\n },\n\n // Hour: 0, 1, ... 23\n 'H': function (date) {\n return date.getUTCHours()\n },\n\n // Hour: 00, 01, ..., 23\n 'HH': function (date) {\n return addLeadingZeros(date.getUTCHours(), 2)\n },\n\n // Hour: 1, 2, ..., 12\n 'h': function (date) {\n var hours = date.getUTCHours();\n if (hours === 0) {\n return 12\n } else if (hours > 12) {\n return hours % 12\n } else {\n return hours\n }\n },\n\n // Hour: 01, 02, ..., 12\n 'hh': function (date) {\n return addLeadingZeros(formatters['h'](date), 2)\n },\n\n // Minute: 0, 1, ..., 59\n 'm': function (date) {\n return date.getUTCMinutes()\n },\n\n // Minute: 00, 01, ..., 59\n 'mm': function (date) {\n return addLeadingZeros(date.getUTCMinutes(), 2)\n },\n\n // Second: 0, 1, ..., 59\n 's': function (date) {\n return date.getUTCSeconds()\n },\n\n // Second: 00, 01, ..., 59\n 'ss': function (date) {\n return addLeadingZeros(date.getUTCSeconds(), 2)\n },\n\n // 1/10 of second: 0, 1, ..., 9\n 'S': function (date) {\n return Math.floor(date.getUTCMilliseconds() / 100)\n },\n\n // 1/100 of second: 00, 01, ..., 99\n 'SS': function (date) {\n return addLeadingZeros(Math.floor(date.getUTCMilliseconds() / 10), 2)\n },\n\n // Millisecond: 000, 001, ..., 999\n 'SSS': function (date) {\n return addLeadingZeros(date.getUTCMilliseconds(), 3)\n },\n\n // Timezone: -01:00, +00:00, ... +12:00\n 'Z': function (date, options) {\n var originalDate = options._originalDate || date;\n return formatTimezone(originalDate.getTimezoneOffset(), ':')\n },\n\n // Timezone: -0100, +0000, ... +1200\n 'ZZ': function (date, options) {\n var originalDate = options._originalDate || date;\n return formatTimezone(originalDate.getTimezoneOffset())\n },\n\n // Seconds timestamp: 512969520\n 'X': function (date, options) {\n var originalDate = options._originalDate || date;\n return Math.floor(originalDate.getTime() / 1000)\n },\n\n // Milliseconds timestamp: 512969520900\n 'x': function (date, options) {\n var originalDate = options._originalDate || date;\n return originalDate.getTime()\n },\n\n // AM, PM\n 'A': function (date, options) {\n return options.locale.localize.timeOfDay(date.getUTCHours(), {type: 'uppercase'})\n },\n\n // am, pm\n 'a': function (date, options) {\n return options.locale.localize.timeOfDay(date.getUTCHours(), {type: 'lowercase'})\n },\n\n // a.m., p.m.\n 'aa': function (date, options) {\n return options.locale.localize.timeOfDay(date.getUTCHours(), {type: 'long'})\n }\n};\n\nfunction formatTimezone (offset, delimeter) {\n delimeter = delimeter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n return sign + addLeadingZeros(hours, 2) + delimeter + addLeadingZeros(minutes, 2)\n}\n\nfunction addLeadingZeros (number, targetLength) {\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return output\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction addUTCMinutes (dirtyDate, dirtyAmount, dirtyOptions) {\n var date = toDate(dirtyDate, dirtyOptions);\n var amount = Number(dirtyAmount);\n date.setUTCMinutes(date.getUTCMinutes() + amount);\n return date\n}\n\nvar longFormattingTokensRegExp = /(\\[[^[]*])|(\\\\)?(LTS|LT|LLLL|LLL|LL|L|llll|lll|ll|l)/g;\nvar defaultFormattingTokensRegExp = /(\\[[^[]*])|(\\\\)?(x|ss|s|mm|m|hh|h|do|dddd|ddd|dd|d|aa|a|ZZ|Z|YYYY|YY|X|Wo|WW|W|SSS|SS|S|Qo|Q|Mo|MMMM|MMM|MM|M|HH|H|GGGG|GG|E|Do|DDDo|DDDD|DDD|DD|D|A|.)/g;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format.\n *\n * Accepted tokens:\n * | Unit | Token | Result examples |\n * |-------------------------|-------|----------------------------------|\n * | Month | M | 1, 2, ..., 12 |\n * | | Mo | 1st, 2nd, ..., 12th |\n * | | MM | 01, 02, ..., 12 |\n * | | MMM | Jan, Feb, ..., Dec |\n * | | MMMM | January, February, ..., December |\n * | Quarter | Q | 1, 2, 3, 4 |\n * | | Qo | 1st, 2nd, 3rd, 4th |\n * | Day of month | D | 1, 2, ..., 31 |\n * | | Do | 1st, 2nd, ..., 31st |\n * | | DD | 01, 02, ..., 31 |\n * | Day of year | DDD | 1, 2, ..., 366 |\n * | | DDDo | 1st, 2nd, ..., 366th |\n * | | DDDD | 001, 002, ..., 366 |\n * | Day of week | d | 0, 1, ..., 6 |\n * | | do | 0th, 1st, ..., 6th |\n * | | dd | Su, Mo, ..., Sa |\n * | | ddd | Sun, Mon, ..., Sat |\n * | | dddd | Sunday, Monday, ..., Saturday |\n * | Day of ISO week | E | 1, 2, ..., 7 |\n * | ISO week | W | 1, 2, ..., 53 |\n * | | Wo | 1st, 2nd, ..., 53rd |\n * | | WW | 01, 02, ..., 53 |\n * | Year | YY | 00, 01, ..., 99 |\n * | | YYYY | 1900, 1901, ..., 2099 |\n * | ISO week-numbering year | GG | 00, 01, ..., 99 |\n * | | GGGG | 1900, 1901, ..., 2099 |\n * | AM/PM | A | AM, PM |\n * | | a | am, pm |\n * | | aa | a.m., p.m. |\n * | Hour | H | 0, 1, ... 23 |\n * | | HH | 00, 01, ... 23 |\n * | | h | 1, 2, ..., 12 |\n * | | hh | 01, 02, ..., 12 |\n * | Minute | m | 0, 1, ..., 59 |\n * | | mm | 00, 01, ..., 59 |\n * | Second | s | 0, 1, ..., 59 |\n * | | ss | 00, 01, ..., 59 |\n * | 1/10 of second | S | 0, 1, ..., 9 |\n * | 1/100 of second | SS | 00, 01, ..., 99 |\n * | Millisecond | SSS | 000, 001, ..., 999 |\n * | Timezone | Z | -01:00, +00:00, ... +12:00 |\n * | | ZZ | -0100, +0000, ..., +1200 |\n * | Seconds timestamp | X | 512969520 |\n * | Milliseconds timestamp | x | 512969520900 |\n * | Long format | LT | 05:30 a.m. |\n * | | LTS | 05:30:15 a.m. |\n * | | L | 07/02/1995 |\n * | | l | 7/2/1995 |\n * | | LL | July 2 1995 |\n * | | ll | Jul 2 1995 |\n * | | LLL | July 2 1995 05:30 a.m. |\n * | | lll | Jul 2 1995 05:30 a.m. |\n * | | LLLL | Sunday, July 2 1995 05:30 a.m. |\n * | | llll | Sun, Jul 2 1995 05:30 a.m. |\n *\n * The characters wrapped in square brackets are escaped.\n *\n * The result may vary by locale.\n *\n * @param {Date|String|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(\n * new Date(2014, 1, 11),\n * 'MM/DD/YYYY'\n * )\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(\n * new Date(2014, 6, 2),\n * 'Do [de] MMMM YYYY',\n * {locale: eoLocale}\n * )\n * //=> '2-a de julio 2014'\n */\nfunction format (dirtyDate, dirtyFormatStr, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var formatStr = String(dirtyFormatStr);\n var options = dirtyOptions || {};\n\n var locale = options.locale || locale$1;\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property')\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property')\n }\n\n var localeFormatters = locale.formatters || {};\n var formattingTokensRegExp = locale.formattingTokensRegExp || defaultFormattingTokensRegExp;\n var formatLong = locale.formatLong;\n\n var originalDate = toDate(dirtyDate, options);\n\n if (!isValid(originalDate, options)) {\n return 'Invalid Date'\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = originalDate.getTimezoneOffset();\n var utcDate = addUTCMinutes(originalDate, -timezoneOffset, options);\n\n var formatterOptions = cloneObject(options);\n formatterOptions.locale = locale;\n formatterOptions.formatters = formatters;\n\n // When UTC functions will be implemented, options._originalDate will likely be a part of public API.\n // Right now, please don't use it in locales. If you have to use an original date,\n // please restore it from `date`, adding a timezone offset to it.\n formatterOptions._originalDate = originalDate;\n\n var result = formatStr\n .replace(longFormattingTokensRegExp, function (substring) {\n if (substring[0] === '[') {\n return substring\n }\n\n if (substring[0] === '\\\\') {\n return cleanEscapedString(substring)\n }\n\n return formatLong(substring)\n })\n .replace(formattingTokensRegExp, function (substring) {\n var formatter = localeFormatters[substring] || formatters[substring];\n\n if (formatter) {\n return formatter(utcDate, formatterOptions)\n } else {\n return cleanEscapedString(substring)\n }\n });\n\n return result\n}\n\nfunction cleanEscapedString (input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|]$/g, '')\n }\n return input.replace(/\\\\/g, '')\n}\n\n/**\n * @name subMinutes\n * @category Minute Helpers\n * @summary Subtract the specified number of minutes from the given date.\n *\n * @description\n * Subtract the specified number of minutes from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the mintues subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 30 minutes from 10 July 2014 12:00:00:\n * var result = subMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 11:30:00\n */\nfunction subMinutes (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = Number(dirtyAmount);\n return addMinutes(dirtyDate, -amount, dirtyOptions)\n}\n\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param {Date|String|Number} date - the date that should be after the other one to return true\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * var result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nfunction isAfter (dirtyDate, dirtyDateToCompare, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var dateToCompare = toDate(dirtyDateToCompare, dirtyOptions);\n return date.getTime() > dateToCompare.getTime()\n}\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|String|Number} date - the date that should be before the other one to return true\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * var result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nfunction isBefore (dirtyDate, dirtyDateToCompare, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var dateToCompare = toDate(dirtyDateToCompare, dirtyOptions);\n return date.getTime() < dateToCompare.getTime()\n}\n\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * @param {Date|String|Number} dateLeft - the first date to compare\n * @param {Date|String|Number} dateRight - the second date to compare\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are equal\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * var result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0)\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\nfunction isEqual$1 (dirtyLeftDate, dirtyRightDate, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyLeftDate, dirtyOptions);\n var dateRight = toDate(dirtyRightDate, dirtyOptions);\n return dateLeft.getTime() === dateRight.getTime()\n}\n\nvar patterns$1 = {\n 'M': /^(1[0-2]|0?\\d)/, // 0 to 12\n 'D': /^(3[0-1]|[0-2]?\\d)/, // 0 to 31\n 'DDD': /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/, // 0 to 366\n 'W': /^(5[0-3]|[0-4]?\\d)/, // 0 to 53\n 'YYYY': /^(\\d{1,4})/, // 0 to 9999\n 'H': /^(2[0-3]|[0-1]?\\d)/, // 0 to 23\n 'm': /^([0-5]?\\d)/, // 0 to 59\n 'Z': /^([+-])(\\d{2}):(\\d{2})/,\n 'ZZ': /^([+-])(\\d{2})(\\d{2})/,\n singleDigit: /^(\\d)/,\n twoDigits: /^(\\d{2})/,\n threeDigits: /^(\\d{3})/,\n fourDigits: /^(\\d{4})/,\n anyDigits: /^(\\d+)/\n};\n\nfunction parseDecimal$1 (matchResult) {\n return parseInt(matchResult[1], 10)\n}\n\nvar parsers = {\n // Year: 00, 01, ..., 99\n 'YY': {\n unit: 'twoDigitYear',\n match: patterns$1.twoDigits,\n parse: function (matchResult) {\n return parseDecimal$1(matchResult)\n }\n },\n\n // Year: 1900, 1901, ..., 2099\n 'YYYY': {\n unit: 'year',\n match: patterns$1.YYYY,\n parse: parseDecimal$1\n },\n\n // ISO week-numbering year: 00, 01, ..., 99\n 'GG': {\n unit: 'isoYear',\n match: patterns$1.twoDigits,\n parse: function (matchResult) {\n return parseDecimal$1(matchResult) + 1900\n }\n },\n\n // ISO week-numbering year: 1900, 1901, ..., 2099\n 'GGGG': {\n unit: 'isoYear',\n match: patterns$1.YYYY,\n parse: parseDecimal$1\n },\n\n // Quarter: 1, 2, 3, 4\n 'Q': {\n unit: 'quarter',\n match: patterns$1.singleDigit,\n parse: parseDecimal$1\n },\n\n // Ordinal quarter\n 'Qo': {\n unit: 'quarter',\n match: function (string, options) {\n return options.locale.match.ordinalNumbers(string, {unit: 'quarter'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.ordinalNumber(matchResult, {unit: 'quarter'})\n }\n },\n\n // Month: 1, 2, ..., 12\n 'M': {\n unit: 'month',\n match: patterns$1.M,\n parse: function (matchResult) {\n return parseDecimal$1(matchResult) - 1\n }\n },\n\n // Ordinal month\n 'Mo': {\n unit: 'month',\n match: function (string, options) {\n return options.locale.match.ordinalNumbers(string, {unit: 'month'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.ordinalNumber(matchResult, {unit: 'month'}) - 1\n }\n },\n\n // Month: 01, 02, ..., 12\n 'MM': {\n unit: 'month',\n match: patterns$1.twoDigits,\n parse: function (matchResult) {\n return parseDecimal$1(matchResult) - 1\n }\n },\n\n // Month: Jan, Feb, ..., Dec\n 'MMM': {\n unit: 'month',\n match: function (string, options) {\n return options.locale.match.months(string, {type: 'short'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.month(matchResult, {type: 'short'})\n }\n },\n\n // Month: January, February, ..., December\n 'MMMM': {\n unit: 'month',\n match: function (string, options) {\n return options.locale.match.months(string, {type: 'long'}) ||\n options.locale.match.months(string, {type: 'short'})\n },\n parse: function (matchResult, options) {\n var parseResult = options.locale.match.month(matchResult, {type: 'long'});\n\n if (parseResult == null) {\n parseResult = options.locale.match.month(matchResult, {type: 'short'});\n }\n\n return parseResult\n }\n },\n\n // ISO week: 1, 2, ..., 53\n 'W': {\n unit: 'isoWeek',\n match: patterns$1.W,\n parse: parseDecimal$1\n },\n\n // Ordinal ISO week\n 'Wo': {\n unit: 'isoWeek',\n match: function (string, options) {\n return options.locale.match.ordinalNumbers(string, {unit: 'isoWeek'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.ordinalNumber(matchResult, {unit: 'isoWeek'})\n }\n },\n\n // ISO week: 01, 02, ..., 53\n 'WW': {\n unit: 'isoWeek',\n match: patterns$1.twoDigits,\n parse: parseDecimal$1\n },\n\n // Day of week: 0, 1, ..., 6\n 'd': {\n unit: 'dayOfWeek',\n match: patterns$1.singleDigit,\n parse: parseDecimal$1\n },\n\n // Ordinal day of week\n 'do': {\n unit: 'dayOfWeek',\n match: function (string, options) {\n return options.locale.match.ordinalNumbers(string, {unit: 'dayOfWeek'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.ordinalNumber(matchResult, {unit: 'dayOfWeek'})\n }\n },\n\n // Day of week: Su, Mo, ..., Sa\n 'dd': {\n unit: 'dayOfWeek',\n match: function (string, options) {\n return options.locale.match.weekdays(string, {type: 'narrow'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.weekday(matchResult, {type: 'narrow'})\n }\n },\n\n // Day of week: Sun, Mon, ..., Sat\n 'ddd': {\n unit: 'dayOfWeek',\n match: function (string, options) {\n return options.locale.match.weekdays(string, {type: 'short'}) ||\n options.locale.match.weekdays(string, {type: 'narrow'})\n },\n parse: function (matchResult, options) {\n var parseResult = options.locale.match.weekday(matchResult, {type: 'short'});\n\n if (parseResult == null) {\n parseResult = options.locale.match.weekday(matchResult, {type: 'narrow'});\n }\n\n return parseResult\n }\n },\n\n // Day of week: Sunday, Monday, ..., Saturday\n 'dddd': {\n unit: 'dayOfWeek',\n match: function (string, options) {\n return options.locale.match.weekdays(string, {type: 'long'}) ||\n options.locale.match.weekdays(string, {type: 'short'}) ||\n options.locale.match.weekdays(string, {type: 'narrow'})\n },\n parse: function (matchResult, options) {\n var parseResult = options.locale.match.weekday(matchResult, {type: 'long'});\n\n if (parseResult == null) {\n parseResult = options.locale.match.weekday(matchResult, {type: 'short'});\n\n if (parseResult == null) {\n parseResult = options.locale.match.weekday(matchResult, {type: 'narrow'});\n }\n }\n\n return parseResult\n }\n },\n\n // Day of ISO week: 1, 2, ..., 7\n 'E': {\n unit: 'dayOfISOWeek',\n match: patterns$1.singleDigit,\n parse: function (matchResult) {\n return parseDecimal$1(matchResult)\n }\n },\n\n // Day of month: 1, 2, ..., 31\n 'D': {\n unit: 'dayOfMonth',\n match: patterns$1.D,\n parse: parseDecimal$1\n },\n\n // Ordinal day of month\n 'Do': {\n unit: 'dayOfMonth',\n match: function (string, options) {\n return options.locale.match.ordinalNumbers(string, {unit: 'dayOfMonth'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.ordinalNumber(matchResult, {unit: 'dayOfMonth'})\n }\n },\n\n // Day of month: 01, 02, ..., 31\n 'DD': {\n unit: 'dayOfMonth',\n match: patterns$1.twoDigits,\n parse: parseDecimal$1\n },\n\n // Day of year: 1, 2, ..., 366\n 'DDD': {\n unit: 'dayOfYear',\n match: patterns$1.DDD,\n parse: parseDecimal$1\n },\n\n // Ordinal day of year\n 'DDDo': {\n unit: 'dayOfYear',\n match: function (string, options) {\n return options.locale.match.ordinalNumbers(string, {unit: 'dayOfYear'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.ordinalNumber(matchResult, {unit: 'dayOfYear'})\n }\n },\n\n // Day of year: 001, 002, ..., 366\n 'DDDD': {\n unit: 'dayOfYear',\n match: patterns$1.threeDigits,\n parse: parseDecimal$1\n },\n\n // AM, PM\n 'A': {\n unit: 'timeOfDay',\n match: function (string, options) {\n return options.locale.match.timesOfDay(string, {type: 'short'})\n },\n parse: function (matchResult, options) {\n return options.locale.match.timeOfDay(matchResult, {type: 'short'})\n }\n },\n\n // a.m., p.m.\n 'aa': {\n unit: 'timeOfDay',\n match: function (string, options) {\n return options.locale.match.timesOfDay(string, {type: 'long'}) ||\n options.locale.match.timesOfDay(string, {type: 'short'})\n },\n parse: function (matchResult, options) {\n var parseResult = options.locale.match.timeOfDay(matchResult, {type: 'long'});\n\n if (parseResult == null) {\n parseResult = options.locale.match.timeOfDay(matchResult, {type: 'short'});\n }\n\n return parseResult\n }\n },\n\n // Hour: 0, 1, ... 23\n 'H': {\n unit: 'hours',\n match: patterns$1.H,\n parse: parseDecimal$1\n },\n\n // Hour: 00, 01, ..., 23\n 'HH': {\n unit: 'hours',\n match: patterns$1.twoDigits,\n parse: parseDecimal$1\n },\n\n // Hour: 1, 2, ..., 12\n 'h': {\n unit: 'timeOfDayHours',\n match: patterns$1.M,\n parse: parseDecimal$1\n },\n\n // Hour: 01, 02, ..., 12\n 'hh': {\n unit: 'timeOfDayHours',\n match: patterns$1.twoDigits,\n parse: parseDecimal$1\n },\n\n // Minute: 0, 1, ..., 59\n 'm': {\n unit: 'minutes',\n match: patterns$1.m,\n parse: parseDecimal$1\n },\n\n // Minute: 00, 01, ..., 59\n 'mm': {\n unit: 'minutes',\n match: patterns$1.twoDigits,\n parse: parseDecimal$1\n },\n\n // Second: 0, 1, ..., 59\n 's': {\n unit: 'seconds',\n match: patterns$1.m,\n parse: parseDecimal$1\n },\n\n // Second: 00, 01, ..., 59\n 'ss': {\n unit: 'seconds',\n match: patterns$1.twoDigits,\n parse: parseDecimal$1\n },\n\n // 1/10 of second: 0, 1, ..., 9\n 'S': {\n unit: 'milliseconds',\n match: patterns$1.singleDigit,\n parse: function (matchResult) {\n return parseDecimal$1(matchResult) * 100\n }\n },\n\n // 1/100 of second: 00, 01, ..., 99\n 'SS': {\n unit: 'milliseconds',\n match: patterns$1.twoDigits,\n parse: function (matchResult) {\n return parseDecimal$1(matchResult) * 10\n }\n },\n\n // Millisecond: 000, 001, ..., 999\n 'SSS': {\n unit: 'milliseconds',\n match: patterns$1.threeDigits,\n parse: parseDecimal$1\n },\n\n // Timezone: -01:00, +00:00, ... +12:00\n 'Z': {\n unit: 'timezone',\n match: patterns$1.Z,\n parse: function (matchResult) {\n var sign = matchResult[1];\n var hours = parseInt(matchResult[2], 10);\n var minutes = parseInt(matchResult[3], 10);\n var absoluteOffset = hours * 60 + minutes;\n return (sign === '+') ? absoluteOffset : -absoluteOffset\n }\n },\n\n // Timezone: -0100, +0000, ... +1200\n 'ZZ': {\n unit: 'timezone',\n match: patterns$1.ZZ,\n parse: function (matchResult) {\n var sign = matchResult[1];\n var hours = parseInt(matchResult[2], 10);\n var minutes = parseInt(matchResult[3], 10);\n var absoluteOffset = hours * 60 + minutes;\n return (sign === '+') ? absoluteOffset : -absoluteOffset\n }\n },\n\n // Seconds timestamp: 512969520\n 'X': {\n unit: 'timestamp',\n match: patterns$1.anyDigits,\n parse: function (matchResult) {\n return parseDecimal$1(matchResult) * 1000\n }\n },\n\n // Milliseconds timestamp: 512969520900\n 'x': {\n unit: 'timestamp',\n match: patterns$1.anyDigits,\n parse: parseDecimal$1\n }\n};\n\nparsers['a'] = parsers['A'];\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction setUTCDay (dirtyDate, dirtyDay, dirtyOptions) {\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn === undefined ? 0 : Number(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn === undefined ? defaultWeekStartsOn : Number(options.weekStartsOn);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var day = Number(dirtyDay);\n\n var currentDay = date.getUTCDay();\n\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n\n date.setUTCDate(date.getUTCDate() + diff);\n return date\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction setUTCISODay (dirtyDate, dirtyDay, dirtyOptions) {\n var day = Number(dirtyDay);\n\n if (day % 7 === 0) {\n day = day - 7;\n }\n\n var weekStartsOn = 1;\n var date = toDate(dirtyDate, dirtyOptions);\n var currentDay = date.getUTCDay();\n\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n\n date.setUTCDate(date.getUTCDate() + diff);\n return date\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction setUTCISOWeek (dirtyDate, dirtyISOWeek, dirtyOptions) {\n var date = toDate(dirtyDate, dirtyOptions);\n var isoWeek = Number(dirtyISOWeek);\n var diff = getUTCISOWeek(date, dirtyOptions) - isoWeek;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date\n}\n\nvar MILLISECONDS_IN_DAY$3 = 86400000;\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction setUTCISOWeekYear (dirtyDate, dirtyISOYear, dirtyOptions) {\n var date = toDate(dirtyDate, dirtyOptions);\n var isoYear = Number(dirtyISOYear);\n var dateStartOfYear = startOfUTCISOWeekYear(date, dirtyOptions);\n var diff = Math.floor((date.getTime() - dateStartOfYear.getTime()) / MILLISECONDS_IN_DAY$3);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(isoYear, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n date = startOfUTCISOWeekYear(fourthOfJanuary, dirtyOptions);\n date.setUTCDate(date.getUTCDate() + diff);\n return date\n}\n\nvar MILLISECONDS_IN_MINUTE$6 = 60000;\n\nfunction setTimeOfDay (hours, timeOfDay) {\n var isAM = timeOfDay === 0;\n\n if (isAM) {\n if (hours === 12) {\n return 0\n }\n } else {\n if (hours !== 12) {\n return 12 + hours\n }\n }\n\n return hours\n}\n\nvar units = {\n twoDigitYear: {\n priority: 10,\n set: function (dateValues, value) {\n var century = Math.floor(dateValues.date.getUTCFullYear() / 100);\n var year = century * 100 + value;\n dateValues.date.setUTCFullYear(year, 0, 1);\n dateValues.date.setUTCHours(0, 0, 0, 0);\n return dateValues\n }\n },\n\n year: {\n priority: 10,\n set: function (dateValues, value) {\n dateValues.date.setUTCFullYear(value, 0, 1);\n dateValues.date.setUTCHours(0, 0, 0, 0);\n return dateValues\n }\n },\n\n isoYear: {\n priority: 10,\n set: function (dateValues, value, options) {\n dateValues.date = startOfUTCISOWeekYear(setUTCISOWeekYear(dateValues.date, value, options), options);\n return dateValues\n }\n },\n\n quarter: {\n priority: 20,\n set: function (dateValues, value) {\n dateValues.date.setUTCMonth((value - 1) * 3, 1);\n dateValues.date.setUTCHours(0, 0, 0, 0);\n return dateValues\n }\n },\n\n month: {\n priority: 30,\n set: function (dateValues, value) {\n dateValues.date.setUTCMonth(value, 1);\n dateValues.date.setUTCHours(0, 0, 0, 0);\n return dateValues\n }\n },\n\n isoWeek: {\n priority: 40,\n set: function (dateValues, value, options) {\n dateValues.date = startOfUTCISOWeek(setUTCISOWeek(dateValues.date, value, options), options);\n return dateValues\n }\n },\n\n dayOfWeek: {\n priority: 50,\n set: function (dateValues, value, options) {\n dateValues.date = setUTCDay(dateValues.date, value, options);\n dateValues.date.setUTCHours(0, 0, 0, 0);\n return dateValues\n }\n },\n\n dayOfISOWeek: {\n priority: 50,\n set: function (dateValues, value, options) {\n dateValues.date = setUTCISODay(dateValues.date, value, options);\n dateValues.date.setUTCHours(0, 0, 0, 0);\n return dateValues\n }\n },\n\n dayOfMonth: {\n priority: 50,\n set: function (dateValues, value) {\n dateValues.date.setUTCDate(value);\n dateValues.date.setUTCHours(0, 0, 0, 0);\n return dateValues\n }\n },\n\n dayOfYear: {\n priority: 50,\n set: function (dateValues, value) {\n dateValues.date.setUTCMonth(0, value);\n dateValues.date.setUTCHours(0, 0, 0, 0);\n return dateValues\n }\n },\n\n timeOfDay: {\n priority: 60,\n set: function (dateValues, value, options) {\n dateValues.timeOfDay = value;\n return dateValues\n }\n },\n\n hours: {\n priority: 70,\n set: function (dateValues, value, options) {\n dateValues.date.setUTCHours(value, 0, 0, 0);\n return dateValues\n }\n },\n\n timeOfDayHours: {\n priority: 70,\n set: function (dateValues, value, options) {\n var timeOfDay = dateValues.timeOfDay;\n if (timeOfDay != null) {\n value = setTimeOfDay(value, timeOfDay);\n }\n dateValues.date.setUTCHours(value, 0, 0, 0);\n return dateValues\n }\n },\n\n minutes: {\n priority: 80,\n set: function (dateValues, value) {\n dateValues.date.setUTCMinutes(value, 0, 0);\n return dateValues\n }\n },\n\n seconds: {\n priority: 90,\n set: function (dateValues, value) {\n dateValues.date.setUTCSeconds(value, 0);\n return dateValues\n }\n },\n\n milliseconds: {\n priority: 100,\n set: function (dateValues, value) {\n dateValues.date.setUTCMilliseconds(value);\n return dateValues\n }\n },\n\n timezone: {\n priority: 110,\n set: function (dateValues, value) {\n dateValues.date = new Date(dateValues.date.getTime() - value * MILLISECONDS_IN_MINUTE$6);\n return dateValues\n }\n },\n\n timestamp: {\n priority: 120,\n set: function (dateValues, value) {\n dateValues.date = new Date(value);\n return dateValues\n }\n }\n};\n\nvar TIMEZONE_UNIT_PRIORITY = 110;\nvar MILLISECONDS_IN_MINUTE$7 = 60000;\n\nvar longFormattingTokensRegExp$1 = /(\\[[^[]*])|(\\\\)?(LTS|LT|LLLL|LLL|LL|L|llll|lll|ll|l)/g;\nvar defaultParsingTokensRegExp = /(\\[[^[]*])|(\\\\)?(x|ss|s|mm|m|hh|h|do|dddd|ddd|dd|d|aa|a|ZZ|Z|YYYY|YY|X|Wo|WW|W|SSS|SS|S|Qo|Q|Mo|MMMM|MMM|MM|M|HH|H|GGGG|GG|E|Do|DDDo|DDDD|DDD|DD|D|A|.)/g;\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format.\n *\n * Accepted format tokens:\n * | Unit | Priority | Token | Input examples |\n * |-------------------------|----------|-------|----------------------------------|\n * | Year | 10 | YY | 00, 01, ..., 99 |\n * | | | YYYY | 1900, 1901, ..., 2099 |\n * | ISO week-numbering year | 10 | GG | 00, 01, ..., 99 |\n * | | | GGGG | 1900, 1901, ..., 2099 |\n * | Quarter | 20 | Q | 1, 2, 3, 4 |\n * | | | Qo | 1st, 2nd, 3rd, 4th |\n * | Month | 30 | M | 1, 2, ..., 12 |\n * | | | Mo | 1st, 2nd, ..., 12th |\n * | | | MM | 01, 02, ..., 12 |\n * | | | MMM | Jan, Feb, ..., Dec |\n * | | | MMMM | January, February, ..., December |\n * | ISO week | 40 | W | 1, 2, ..., 53 |\n * | | | Wo | 1st, 2nd, ..., 53rd |\n * | | | WW | 01, 02, ..., 53 |\n * | Day of week | 50 | d | 0, 1, ..., 6 |\n * | | | do | 0th, 1st, ..., 6th |\n * | | | dd | Su, Mo, ..., Sa |\n * | | | ddd | Sun, Mon, ..., Sat |\n * | | | dddd | Sunday, Monday, ..., Saturday |\n * | Day of ISO week | 50 | E | 1, 2, ..., 7 |\n * | Day of month | 50 | D | 1, 2, ..., 31 |\n * | | | Do | 1st, 2nd, ..., 31st |\n * | | | DD | 01, 02, ..., 31 |\n * | Day of year | 50 | DDD | 1, 2, ..., 366 |\n * | | | DDDo | 1st, 2nd, ..., 366th |\n * | | | DDDD | 001, 002, ..., 366 |\n * | Time of day | 60 | A | AM, PM |\n * | | | a | am, pm |\n * | | | aa | a.m., p.m. |\n * | Hour | 70 | H | 0, 1, ... 23 |\n * | | | HH | 00, 01, ... 23 |\n * | Time of day hour | 70 | h | 1, 2, ..., 12 |\n * | | | hh | 01, 02, ..., 12 |\n * | Minute | 80 | m | 0, 1, ..., 59 |\n * | | | mm | 00, 01, ..., 59 |\n * | Second | 90 | s | 0, 1, ..., 59 |\n * | | | ss | 00, 01, ..., 59 |\n * | 1/10 of second | 100 | S | 0, 1, ..., 9 |\n * | 1/100 of second | 100 | SS | 00, 01, ..., 99 |\n * | Millisecond | 100 | SSS | 000, 001, ..., 999 |\n * | Timezone | 110 | Z | -01:00, +00:00, ... +12:00 |\n * | | | ZZ | -0100, +0000, ..., +1200 |\n * | Seconds timestamp | 120 | X | 512969520 |\n * | Milliseconds timestamp | 120 | x | 512969520900 |\n *\n * Values will be assigned to the date in the ascending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `baseDate` which works as a context of parsing.\n *\n * `baseDate` must be passed for correct work of the function.\n * If you're not sure which `baseDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/DD/YYYY', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `baseDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * Also, `parse` unfolds long formats like those in [format]{@link https://date-fns.org/docs/format}:\n * | Token | Input examples |\n * |-------|--------------------------------|\n * | LT | 05:30 a.m. |\n * | LTS | 05:30:15 a.m. |\n * | L | 07/02/1995 |\n * | l | 7/2/1995 |\n * | LL | July 2 1995 |\n * | ll | Jul 2 1995 |\n * | LLL | July 2 1995 05:30 a.m. |\n * | lll | Jul 2 1995 05:30 a.m. |\n * | LLLL | Sunday, July 2 1995 05:30 a.m. |\n * | llll | Sun, Jul 2 1995 05:30 a.m. |\n *\n * The characters wrapped in square brackets in the format string are escaped.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `baseDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|String|Number} baseDate - the date to took the missing higher priority values from\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse(\n * '02/11/2014',\n * 'MM/DD/YYYY',\n * new Date()\n * )\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in English locale in the context of 2010 year:\n * import eoLocale from 'date-fns/locale/eo'\n * var result = parse(\n * '28-a de februaro',\n * 'Do [de] MMMM',\n * new Date(2010, 0, 1)\n * {locale: eoLocale}\n * )\n * //=> Sun Feb 28 2010 00:00:00\n */\nfunction parse (dirtyDateString, dirtyFormatString, dirtyBaseDate, dirtyOptions) {\n if (arguments.length < 3) {\n throw new TypeError('3 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateString = String(dirtyDateString);\n var options = dirtyOptions || {};\n\n var weekStartsOn = options.weekStartsOn === undefined ? 0 : Number(options.weekStartsOn);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var locale = options.locale || locale$1;\n var localeParsers = locale.parsers || {};\n var localeUnits = locale.units || {};\n\n if (!locale.match) {\n throw new RangeError('locale must contain match property')\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property')\n }\n\n var formatString = String(dirtyFormatString)\n .replace(longFormattingTokensRegExp$1, function (substring) {\n if (substring[0] === '[') {\n return substring\n }\n\n if (substring[0] === '\\\\') {\n return cleanEscapedString$1(substring)\n }\n\n return locale.formatLong(substring)\n });\n\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyBaseDate, options)\n } else {\n return new Date(NaN)\n }\n }\n\n var subFnOptions = cloneObject(options);\n subFnOptions.locale = locale;\n\n var tokens = formatString.match(locale.parsingTokensRegExp || defaultParsingTokensRegExp);\n var tokensLength = tokens.length;\n\n // If timezone isn't specified, it will be set to the system timezone\n var setters = [{\n priority: TIMEZONE_UNIT_PRIORITY,\n set: dateToSystemTimezone,\n index: 0\n }];\n\n var i;\n for (i = 0; i < tokensLength; i++) {\n var token = tokens[i];\n var parser = localeParsers[token] || parsers[token];\n if (parser) {\n var matchResult;\n\n if (parser.match instanceof RegExp) {\n matchResult = parser.match.exec(dateString);\n } else {\n matchResult = parser.match(dateString, subFnOptions);\n }\n\n if (!matchResult) {\n return new Date(NaN)\n }\n\n var unitName = parser.unit;\n var unit = localeUnits[unitName] || units[unitName];\n\n setters.push({\n priority: unit.priority,\n set: unit.set,\n value: parser.parse(matchResult, subFnOptions),\n index: setters.length\n });\n\n var substring = matchResult[0];\n dateString = dateString.slice(substring.length);\n } else {\n var head = tokens[i].match(/^\\[.*]$/) ? tokens[i].replace(/^\\[|]$/g, '') : tokens[i];\n if (dateString.indexOf(head) === 0) {\n dateString = dateString.slice(head.length);\n } else {\n return new Date(NaN)\n }\n }\n }\n\n var uniquePrioritySetters = setters\n .map(function (setter) {\n return setter.priority\n })\n .sort(function (a, b) {\n return a - b\n })\n .filter(function (priority, index, array) {\n return array.indexOf(priority) === index\n })\n .map(function (priority) {\n return setters\n .filter(function (setter) {\n return setter.priority === priority\n })\n .reverse()\n })\n .map(function (setterArray) {\n return setterArray[0]\n });\n\n var date = toDate(dirtyBaseDate, options);\n\n if (isNaN(date)) {\n return new Date(NaN)\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/37\n var utcDate = subMinutes(date, date.getTimezoneOffset());\n\n var dateValues = {date: utcDate};\n\n var settersLength = uniquePrioritySetters.length;\n for (i = 0; i < settersLength; i++) {\n var setter = uniquePrioritySetters[i];\n dateValues = setter.set(dateValues, setter.value, subFnOptions);\n }\n\n return dateValues.date\n}\n\nfunction dateToSystemTimezone (dateValues) {\n var date = dateValues.date;\n var time = date.getTime();\n\n // Get the system timezone offset at (moment of time - offset)\n var offset = date.getTimezoneOffset();\n\n // Get the system timezone offset at the exact moment of time\n offset = new Date(time + offset * MILLISECONDS_IN_MINUTE$7).getTimezoneOffset();\n\n // Convert date in timezone \"UTC+00:00\" to the system timezone\n dateValues.date = new Date(time + offset * MILLISECONDS_IN_MINUTE$7);\n\n return dateValues\n}\n\nfunction cleanEscapedString$1 (input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|]$/g, '')\n }\n return input.replace(/\\\\/g, '')\n}\n\n// This file is generated automatically by `scripts/build/indices.js`. Please, don't change it.\n\n// \n\n/**\n * Custom parse behavior on top of date-fns parse function.\n */\nfunction parseDate$1 (date, format$$1) {\n if (typeof date !== 'string') {\n return isValid(date) ? date : null;\n }\n\n var parsed = parse(date, format$$1, new Date());\n\n // if date is not valid or the formatted output after parsing does not match\n // the string value passed in (avoids overflows)\n if (!isValid(parsed) || format(parsed, format$$1) !== date) {\n return null;\n }\n\n return parsed;\n}\n\nfunction after (value, ref) {\n var otherValue = ref[0];\n var inclusion = ref[1];\n var format$$1 = ref[2];\n\n if (typeof format$$1 === 'undefined') {\n format$$1 = inclusion;\n inclusion = false;\n }\n value = parseDate$1(value, format$$1);\n otherValue = parseDate$1(otherValue, format$$1);\n\n // if either is not valid.\n if (!value || !otherValue) {\n return false;\n }\n\n return isAfter(value, otherValue) || (inclusion && isEqual$1(value, otherValue));\n}\n\n/**\n * Some Alpha Regex helpers.\n * https://github.com/chriso/validator.js/blob/master/src/lib/alpha.js\n */\n\nvar alpha = {\n en: /^[A-Z]*$/i,\n cs: /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]*$/i,\n da: /^[A-ZÆØÅ]*$/i,\n de: /^[A-ZÄÖÜß]*$/i,\n es: /^[A-ZÁÉÍÑÓÚÜ]*$/i,\n fr: /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]*$/i,\n lt: /^[A-ZĄČĘĖĮŠŲŪŽ]*$/i,\n nl: /^[A-ZÉËÏÓÖÜ]*$/i,\n hu: /^[A-ZÁÉÍÓÖŐÚÜŰ]*$/i,\n pl: /^[A-ZĄĆĘŚŁŃÓŻŹ]*$/i,\n pt: /^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]*$/i,\n ru: /^[А-ЯЁ]*$/i,\n sk: /^[A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ]*$/i,\n sr: /^[A-ZČĆŽŠĐ]*$/i,\n tr: /^[A-ZÇĞİıÖŞÜ]*$/i,\n uk: /^[А-ЩЬЮЯЄІЇҐ]*$/i,\n ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/\n};\n\nvar alphaSpaces = {\n en: /^[A-Z\\s]*$/i,\n cs: /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ\\s]*$/i,\n da: /^[A-ZÆØÅ\\s]*$/i,\n de: /^[A-ZÄÖÜß\\s]*$/i,\n es: /^[A-ZÁÉÍÑÓÚÜ\\s]*$/i,\n fr: /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ\\s]*$/i,\n lt: /^[A-ZĄČĘĖĮŠŲŪŽ\\s]*$/i,\n nl: /^[A-ZÉËÏÓÖÜ\\s]*$/i,\n hu: /^[A-ZÁÉÍÓÖŐÚÜŰ\\s]*$/i,\n pl: /^[A-ZĄĆĘŚŁŃÓŻŹ\\s]*$/i,\n pt: /^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ\\s]*$/i,\n ru: /^[А-ЯЁ\\s]*$/i,\n sk: /^[A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ\\s]*$/i,\n sr: /^[A-ZČĆŽŠĐ\\s]*$/i,\n tr: /^[A-ZÇĞİıÖŞÜ\\s]*$/i,\n uk: /^[А-ЩЬЮЯЄІЇҐ\\s]*$/i,\n ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ\\s]*$/\n};\n\nvar alphanumeric = {\n en: /^[0-9A-Z]*$/i,\n cs: /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]*$/i,\n da: /^[0-9A-ZÆØÅ]$/i,\n de: /^[0-9A-ZÄÖÜß]*$/i,\n es: /^[0-9A-ZÁÉÍÑÓÚÜ]*$/i,\n fr: /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]*$/i,\n lt: /^[0-9A-ZĄČĘĖĮŠŲŪŽ]*$/i,\n hu: /^[0-9A-ZÁÉÍÓÖŐÚÜŰ]*$/i,\n nl: /^[0-9A-ZÉËÏÓÖÜ]*$/i,\n pl: /^[0-9A-ZĄĆĘŚŁŃÓŻŹ]*$/i,\n pt: /^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]*$/i,\n ru: /^[0-9А-ЯЁ]*$/i,\n sk: /^[0-9A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ]*$/i,\n sr: /^[0-9A-ZČĆŽŠĐ]*$/i,\n tr: /^[0-9A-ZÇĞİıÖŞÜ]*$/i,\n uk: /^[0-9А-ЩЬЮЯЄІЇҐ]*$/i,\n ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/\n};\n\nvar alphaDash = {\n en: /^[0-9A-Z_-]*$/i,\n cs: /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ_-]*$/i,\n da: /^[0-9A-ZÆØÅ_-]*$/i,\n de: /^[0-9A-ZÄÖÜß_-]*$/i,\n es: /^[0-9A-ZÁÉÍÑÓÚÜ_-]*$/i,\n fr: /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ_-]*$/i,\n lt: /^[0-9A-ZĄČĘĖĮŠŲŪŽ_-]*$/i,\n nl: /^[0-9A-ZÉËÏÓÖÜ_-]*$/i,\n hu: /^[0-9A-ZÁÉÍÓÖŐÚÜŰ_-]*$/i,\n pl: /^[0-9A-ZĄĆĘŚŁŃÓŻŹ_-]*$/i,\n pt: /^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ_-]*$/i,\n ru: /^[0-9А-ЯЁ_-]*$/i,\n sk: /^[0-9A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ_-]*$/i,\n sr: /^[0-9A-ZČĆŽŠĐ_-]*$/i,\n tr: /^[0-9A-ZÇĞİıÖŞÜ_-]*$/i,\n uk: /^[0-9А-ЩЬЮЯЄІЇҐ_-]*$/i,\n ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ_-]*$/\n};\n\nvar validate = function (value, ref) {\n if ( ref === void 0 ) ref = [];\n var locale = ref[0]; if ( locale === void 0 ) locale = null;\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate(val, [locale]); });\n }\n\n // Match at least one locale.\n if (! locale) {\n return Object.keys(alpha).some(function (loc) { return alpha[loc].test(value); });\n }\n\n return (alpha[locale] || alpha.en).test(value);\n};\n\nvar validate$1 = function (value, ref) {\n if ( ref === void 0 ) ref = [];\n var locale = ref[0]; if ( locale === void 0 ) locale = null;\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$1(val, [locale]); });\n }\n\n // Match at least one locale.\n if (! locale) {\n return Object.keys(alphaDash).some(function (loc) { return alphaDash[loc].test(value); });\n }\n\n return (alphaDash[locale] || alphaDash.en).test(value);\n};\n\nvar validate$2 = function (value, ref) {\n if ( ref === void 0 ) ref = [];\n var locale = ref[0]; if ( locale === void 0 ) locale = null;\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$2(val, [locale]); });\n }\n\n // Match at least one locale.\n if (! locale) {\n return Object.keys(alphanumeric).some(function (loc) { return alphanumeric[loc].test(value); });\n }\n\n return (alphanumeric[locale] || alphanumeric.en).test(value);\n};\n\nvar validate$3 = function (value, ref) {\n if ( ref === void 0 ) ref = [];\n var locale = ref[0]; if ( locale === void 0 ) locale = null;\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$3(val, [locale]); });\n }\n\n // Match at least one locale.\n if (! locale) {\n return Object.keys(alphaSpaces).some(function (loc) { return alphaSpaces[loc].test(value); });\n }\n\n return (alphaSpaces[locale] || alphaSpaces.en).test(value);\n};\n\nfunction before (value, ref) {\n var otherValue = ref[0];\n var inclusion = ref[1];\n var format$$1 = ref[2];\n\n if (typeof format$$1 === 'undefined') {\n format$$1 = inclusion;\n inclusion = false;\n }\n value = parseDate$1(value, format$$1);\n otherValue = parseDate$1(otherValue, format$$1);\n\n // if either is not valid.\n if (!value || !otherValue) {\n return false;\n }\n\n return isBefore(value, otherValue) || (inclusion && isEqual$1(value, otherValue));\n}\n\nvar validate$4 = function (value, ref) {\n var min = ref[0];\n var max = ref[1];\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$4(val, [min, max]); });\n }\n\n return Number(min) <= value && Number(max) >= value;\n};\n\nfunction confirmed (value, other) { return String(value) === String(other); }\n\nfunction unwrapExports (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar assertString_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = assertString;\nfunction assertString(input) {\n var isString = typeof input === 'string' || input instanceof String;\n\n if (!isString) {\n throw new TypeError('This library (validator.js) validates strings only');\n }\n}\nmodule.exports = exports['default'];\n});\n\nunwrapExports(assertString_1);\n\nvar isCreditCard_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isCreditCard;\n\n\n\nvar _assertString2 = _interopRequireDefault(assertString_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* eslint-disable max-len */\nvar creditCard = /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|(222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\d{3})\\d{11}|6[27][0-9]{14})$/;\n/* eslint-enable max-len */\n\nfunction isCreditCard(str) {\n (0, _assertString2.default)(str);\n var sanitized = str.replace(/[- ]+/g, '');\n if (!creditCard.test(sanitized)) {\n return false;\n }\n var sum = 0;\n var digit = void 0;\n var tmpNum = void 0;\n var shouldDouble = void 0;\n for (var i = sanitized.length - 1; i >= 0; i--) {\n digit = sanitized.substring(i, i + 1);\n tmpNum = parseInt(digit, 10);\n if (shouldDouble) {\n tmpNum *= 2;\n if (tmpNum >= 10) {\n sum += tmpNum % 10 + 1;\n } else {\n sum += tmpNum;\n }\n } else {\n sum += tmpNum;\n }\n shouldDouble = !shouldDouble;\n }\n return !!(sum % 10 === 0 ? sanitized : false);\n}\nmodule.exports = exports['default'];\n});\n\nvar isCreditCard = unwrapExports(isCreditCard_1);\n\nfunction credit_card (value) { return isCreditCard(String(value)); }\n\nfunction date_between (value, params) {\n var assign, assign$1;\n\n var min$$1;\n var max$$1;\n var format$$1;\n var inclusivity = '()';\n\n if (params.length > 3) {\n (assign = params, min$$1 = assign[0], max$$1 = assign[1], inclusivity = assign[2], format$$1 = assign[3]);\n } else {\n (assign$1 = params, min$$1 = assign$1[0], max$$1 = assign$1[1], format$$1 = assign$1[2]);\n }\n\n var minDate = parseDate$1(String(min$$1), format$$1);\n var maxDate = parseDate$1(String(max$$1), format$$1);\n var dateVal = parseDate$1(String(value), format$$1);\n\n if (!minDate || !maxDate || !dateVal) {\n return false;\n }\n\n if (inclusivity === '()') {\n return isAfter(dateVal, minDate) && isBefore(dateVal, maxDate);\n }\n\n if (inclusivity === '(]') {\n return isAfter(dateVal, minDate) && (isEqual$1(dateVal, maxDate) || isBefore(dateVal, maxDate));\n }\n\n if (inclusivity === '[)') {\n return isBefore(dateVal, maxDate) && (isEqual$1(dateVal, minDate) || isAfter(dateVal, minDate));\n }\n\n return isEqual$1(dateVal, maxDate) || isEqual$1(dateVal, minDate) ||\n (isBefore(dateVal, maxDate) && isAfter(dateVal, minDate));\n}\n\nfunction date_format (value, ref) {\n var format = ref[0];\n\n return !!parseDate$1(value, format);\n}\n\nvar validate$5 = function (value, ref) {\n if ( ref === void 0 ) ref = [];\n var decimals = ref[0]; if ( decimals === void 0 ) decimals = '*';\n var separator = ref[1]; if ( separator === void 0 ) separator = '.';\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$5(val, [decimals, separator]); });\n }\n\n if (value === null || value === undefined || value === '') {\n return true;\n }\n\n // if is 0.\n if (Number(decimals) === 0) {\n return /^-?\\d*$/.test(value);\n }\n\n var regexPart = decimals === '*' ? '+' : (\"{1,\" + decimals + \"}\");\n var regex = new RegExp((\"^-?\\\\d*(\\\\\" + separator + \"\\\\d\" + regexPart + \")?$\"));\n\n if (! regex.test(value)) {\n return false;\n }\n\n var parsedValue = parseFloat(value);\n\n // eslint-disable-next-line\n return parsedValue === parsedValue;\n};\n\nvar validate$6 = function (value, ref) {\n var length = ref[0];\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$6(val, [length]); });\n }\n var strVal = String(value);\n\n return /^[0-9]*$/.test(strVal) && strVal.length === Number(length);\n};\n\nvar validateImage = function (file, width, height) {\n var URL = window.URL || window.webkitURL;\n return new Promise(function (resolve) {\n var image = new Image();\n image.onerror = function () { return resolve({ valid: false }); };\n image.onload = function () { return resolve({\n valid: image.width === Number(width) && image.height === Number(height)\n }); };\n\n image.src = URL.createObjectURL(file);\n });\n};\n\nfunction dimensions (files, ref) {\n var width = ref[0];\n var height = ref[1];\n\n var list = [];\n for (var i = 0; i < files.length; i++) {\n // if file is not an image, reject.\n if (! /\\.(jpg|svg|jpeg|png|bmp|gif)$/i.test(files[i].name)) {\n return false;\n }\n\n list.push(files[i]);\n }\n\n return Promise.all(list.map(function (file) { return validateImage(file, width, height); }));\n}\n\nvar merge_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = merge;\nfunction merge() {\n var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var defaults = arguments[1];\n\n for (var key in defaults) {\n if (typeof obj[key] === 'undefined') {\n obj[key] = defaults[key];\n }\n }\n return obj;\n}\nmodule.exports = exports['default'];\n});\n\nunwrapExports(merge_1);\n\nvar isByteLength_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.default = isByteLength;\n\n\n\nvar _assertString2 = _interopRequireDefault(assertString_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* eslint-disable prefer-rest-params */\nfunction isByteLength(str, options) {\n (0, _assertString2.default)(str);\n var min = void 0;\n var max = void 0;\n if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object') {\n min = options.min || 0;\n max = options.max;\n } else {\n // backwards compatibility: isByteLength(str, min [, max])\n min = arguments[1];\n max = arguments[2];\n }\n var len = encodeURI(str).split(/%..|./).length - 1;\n return len >= min && (typeof max === 'undefined' || len <= max);\n}\nmodule.exports = exports['default'];\n});\n\nunwrapExports(isByteLength_1);\n\nvar isFQDN_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isFQDN;\n\n\n\nvar _assertString2 = _interopRequireDefault(assertString_1);\n\n\n\nvar _merge2 = _interopRequireDefault(merge_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar default_fqdn_options = {\n require_tld: true,\n allow_underscores: false,\n allow_trailing_dot: false\n};\n\nfunction isFQDN(str, options) {\n (0, _assertString2.default)(str);\n options = (0, _merge2.default)(options, default_fqdn_options);\n\n /* Remove the optional trailing dot before checking validity */\n if (options.allow_trailing_dot && str[str.length - 1] === '.') {\n str = str.substring(0, str.length - 1);\n }\n var parts = str.split('.');\n for (var i = 0; i < parts.length; i++) {\n if (parts[i].length > 63) {\n return false;\n }\n }\n if (options.require_tld) {\n var tld = parts.pop();\n if (!parts.length || !/^([a-z\\u00a1-\\uffff]{2,}|xn[a-z0-9-]{2,})$/i.test(tld)) {\n return false;\n }\n // disallow spaces\n if (/[\\s\\u2002-\\u200B\\u202F\\u205F\\u3000\\uFEFF\\uDB40\\uDC20]/.test(tld)) {\n return false;\n }\n }\n for (var part, _i = 0; _i < parts.length; _i++) {\n part = parts[_i];\n if (options.allow_underscores) {\n part = part.replace(/_/g, '');\n }\n if (!/^[a-z\\u00a1-\\uffff0-9-]+$/i.test(part)) {\n return false;\n }\n // disallow full-width chars\n if (/[\\uff01-\\uff5e]/.test(part)) {\n return false;\n }\n if (part[0] === '-' || part[part.length - 1] === '-') {\n return false;\n }\n }\n return true;\n}\nmodule.exports = exports['default'];\n});\n\nunwrapExports(isFQDN_1);\n\nvar isEmail_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isEmail;\n\n\n\nvar _assertString2 = _interopRequireDefault(assertString_1);\n\n\n\nvar _merge2 = _interopRequireDefault(merge_1);\n\n\n\nvar _isByteLength2 = _interopRequireDefault(isByteLength_1);\n\n\n\nvar _isFQDN2 = _interopRequireDefault(isFQDN_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar default_email_options = {\n allow_display_name: false,\n require_display_name: false,\n allow_utf8_local_part: true,\n require_tld: true\n};\n\n/* eslint-disable max-len */\n/* eslint-disable no-control-regex */\nvar displayName = /^[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~\\.\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~\\,\\.\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF\\s]*<(.+)>$/i;\nvar emailUserPart = /^[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]+$/i;\nvar quotedEmailUser = /^([\\s\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\x21\\x23-\\x5b\\x5d-\\x7e]|(\\\\[\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]))*$/i;\nvar emailUserUtf8Part = /^[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+$/i;\nvar quotedEmailUserUtf8 = /^([\\s\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\x21\\x23-\\x5b\\x5d-\\x7e\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]|(\\\\[\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))*$/i;\n/* eslint-enable max-len */\n/* eslint-enable no-control-regex */\n\nfunction isEmail(str, options) {\n (0, _assertString2.default)(str);\n options = (0, _merge2.default)(options, default_email_options);\n\n if (options.require_display_name || options.allow_display_name) {\n var display_email = str.match(displayName);\n if (display_email) {\n str = display_email[1];\n } else if (options.require_display_name) {\n return false;\n }\n }\n\n var parts = str.split('@');\n var domain = parts.pop();\n var user = parts.join('@');\n\n var lower_domain = domain.toLowerCase();\n\n if (lower_domain === 'gmail.com' || lower_domain === 'googlemail.com') {\n /*\n Previously we removed dots for gmail addresses before validating.\n This was removed because it allows `multiple..dots@gmail.com`\n to be reported as valid, but it is not.\n Gmail only normalizes single dots, removing them from here is pointless,\n should be done in normalizeEmail\n */\n user = user.toLowerCase();\n }\n\n if (!(0, _isByteLength2.default)(user, { max: 64 }) || !(0, _isByteLength2.default)(domain, { max: 254 })) {\n return false;\n }\n\n if (!(0, _isFQDN2.default)(domain, { require_tld: options.require_tld })) {\n return false;\n }\n\n if (user[0] === '\"') {\n user = user.slice(1, user.length - 1);\n return options.allow_utf8_local_part ? quotedEmailUserUtf8.test(user) : quotedEmailUser.test(user);\n }\n\n var pattern = options.allow_utf8_local_part ? emailUserUtf8Part : emailUserPart;\n\n var user_parts = user.split('.');\n for (var i = 0; i < user_parts.length; i++) {\n if (!pattern.test(user_parts[i])) {\n return false;\n }\n }\n\n return true;\n}\nmodule.exports = exports['default'];\n});\n\nvar isEmail = unwrapExports(isEmail_1);\n\nvar validate$7 = function (value, ref) {\n if ( ref === void 0 ) ref = [];\n var multiple = ref[0]; if ( multiple === void 0 ) multiple = false;\n\n if (multiple) {\n value = value.split(',').map(function (emailStr) { return emailStr.trim(); });\n }\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return isEmail(String(val)); });\n }\n\n return isEmail(String(value));\n};\n\nvar validate$8 = function (value, options) {\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$8(val, options); });\n }\n\n return toArray(options).some(function (item) {\n // eslint-disable-next-line\n return item == value;\n });\n};\n\nfunction excluded () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return !validate$8.apply(void 0, args);\n}\n\nfunction ext (files, extensions) {\n var regex = new RegExp((\".(\" + (extensions.join('|')) + \")$\"), 'i');\n\n return files.every(function (file) { return regex.test(file.name); });\n}\n\nfunction image (files) { return files.every(function (file) { return /\\.(jpg|svg|jpeg|png|bmp|gif)$/i.test(file.name); }\n); }\n\nfunction integer (value) {\n if (Array.isArray(value)) {\n return value.every(function (val) { return /^-?[0-9]+$/.test(String(val)); });\n }\n\n return /^-?[0-9]+$/.test(String(value));\n}\n\nvar isIP_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isIP;\n\n\n\nvar _assertString2 = _interopRequireDefault(assertString_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ipv4Maybe = /^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$/;\nvar ipv6Block = /^[0-9A-F]{1,4}$/i;\n\nfunction isIP(str) {\n var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n (0, _assertString2.default)(str);\n version = String(version);\n if (!version) {\n return isIP(str, 4) || isIP(str, 6);\n } else if (version === '4') {\n if (!ipv4Maybe.test(str)) {\n return false;\n }\n var parts = str.split('.').sort(function (a, b) {\n return a - b;\n });\n return parts[3] <= 255;\n } else if (version === '6') {\n var blocks = str.split(':');\n var foundOmissionBlock = false; // marker to indicate ::\n\n // At least some OS accept the last 32 bits of an IPv6 address\n // (i.e. 2 of the blocks) in IPv4 notation, and RFC 3493 says\n // that '::ffff:a.b.c.d' is valid for IPv4-mapped IPv6 addresses,\n // and '::a.b.c.d' is deprecated, but also valid.\n var foundIPv4TransitionBlock = isIP(blocks[blocks.length - 1], 4);\n var expectedNumberOfBlocks = foundIPv4TransitionBlock ? 7 : 8;\n\n if (blocks.length > expectedNumberOfBlocks) {\n return false;\n }\n // initial or final ::\n if (str === '::') {\n return true;\n } else if (str.substr(0, 2) === '::') {\n blocks.shift();\n blocks.shift();\n foundOmissionBlock = true;\n } else if (str.substr(str.length - 2) === '::') {\n blocks.pop();\n blocks.pop();\n foundOmissionBlock = true;\n }\n\n for (var i = 0; i < blocks.length; ++i) {\n // test for a :: which can not be at the string start/end\n // since those cases have been handled above\n if (blocks[i] === '' && i > 0 && i < blocks.length - 1) {\n if (foundOmissionBlock) {\n return false; // multiple :: in address\n }\n foundOmissionBlock = true;\n } else if (foundIPv4TransitionBlock && i === blocks.length - 1) ; else if (!ipv6Block.test(blocks[i])) {\n return false;\n }\n }\n if (foundOmissionBlock) {\n return blocks.length >= 1;\n }\n return blocks.length === expectedNumberOfBlocks;\n }\n return false;\n}\nmodule.exports = exports['default'];\n});\n\nvar isIP = unwrapExports(isIP_1);\n\nfunction ip (value, ref) {\n if ( ref === void 0 ) ref = [];\n var version = ref[0]; if ( version === void 0 ) version = 4;\n\n if (isNullOrUndefined(value)) {\n value = '';\n }\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return isIP(val, version); });\n }\n\n return isIP(value, version);\n}\n\nfunction is (value, ref) {\n if ( ref === void 0 ) ref = [];\n var other = ref[0];\n\n return value === other;\n}\n\nfunction is_not (value, ref) {\n if ( ref === void 0 ) ref = [];\n var other = ref[0];\n\n return value !== other;\n}\n\n/**\n * @param {Array|String} value\n * @param {Number} length\n * @param {Number} max\n */\nvar compare = function (value, length, max) {\n if (max === undefined) {\n return value.length === length;\n }\n\n // cast to number.\n max = Number(max);\n\n return value.length >= length && value.length <= max;\n};\n\nfunction length (value, ref) {\n var length = ref[0];\n var max = ref[1]; if ( max === void 0 ) max = undefined;\n\n length = Number(length);\n if (value === undefined || value === null) {\n return false;\n }\n\n if (typeof value === 'number') {\n value = String(value);\n }\n\n if (!value.length) {\n value = toArray(value);\n }\n\n return compare(value, length, max);\n}\n\nfunction max$1 (value, ref) {\n var length = ref[0];\n\n if (value === undefined || value === null) {\n return length >= 0;\n }\n\n return String(value).length <= length;\n}\n\nfunction max_value (value, ref) {\n var max = ref[0];\n\n if (Array.isArray(value) || value === null || value === undefined || value === '') {\n return false;\n }\n\n return Number(value) <= max;\n}\n\nfunction mimes (files, mimes) {\n var regex = new RegExp(((mimes.join('|').replace('*', '.+')) + \"$\"), 'i');\n\n return files.every(function (file) { return regex.test(file.type); });\n}\n\nfunction min$1 (value, ref) {\n var length = ref[0];\n\n if (value === undefined || value === null) {\n return false;\n }\n return String(value).length >= length;\n}\n\nfunction min_value (value, ref) {\n var min = ref[0];\n\n if (Array.isArray(value) || value === null || value === undefined || value === '') {\n return false;\n }\n\n return Number(value) >= min;\n}\n\nfunction numeric (value) {\n if (Array.isArray(value)) {\n return value.every(function (val) { return /^[0-9]+$/.test(String(val)); });\n }\n\n return /^[0-9]+$/.test(String(value));\n}\n\nfunction regex (value, ref) {\n var regex = ref[0];\n var flags = ref.slice(1);\n\n if (regex instanceof RegExp) {\n return regex.test(value);\n }\n\n return new RegExp(regex, flags).test(String(value));\n}\n\nfunction required (value, ref) {\n if ( ref === void 0 ) ref = [];\n var invalidateFalse = ref[0]; if ( invalidateFalse === void 0 ) invalidateFalse = false;\n\n if (Array.isArray(value)) {\n return !! value.length;\n }\n\n // incase a field considers `false` as an empty value like checkboxes.\n if (value === false && invalidateFalse) {\n return false;\n }\n\n if (value === undefined || value === null) {\n return false;\n }\n\n return !! String(value).trim().length;\n}\n\nfunction size (files, ref) {\n var size = ref[0];\n\n if (isNaN(size)) {\n return false;\n }\n\n var nSize = Number(size) * 1024;\n for (var i = 0; i < files.length; i++) {\n if (files[i].size > nSize) {\n return false;\n }\n }\n\n return true;\n}\n\nvar isURL_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isURL;\n\n\n\nvar _assertString2 = _interopRequireDefault(assertString_1);\n\n\n\nvar _isFQDN2 = _interopRequireDefault(isFQDN_1);\n\n\n\nvar _isIP2 = _interopRequireDefault(isIP_1);\n\n\n\nvar _merge2 = _interopRequireDefault(merge_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar default_url_options = {\n protocols: ['http', 'https', 'ftp'],\n require_tld: true,\n require_protocol: false,\n require_host: true,\n require_valid_protocol: true,\n allow_underscores: false,\n allow_trailing_dot: false,\n allow_protocol_relative_urls: false\n};\n\nvar wrapped_ipv6 = /^\\[([^\\]]+)\\](?::([0-9]+))?$/;\n\nfunction isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n}\n\nfunction checkHost(host, matches) {\n for (var i = 0; i < matches.length; i++) {\n var match = matches[i];\n if (host === match || isRegExp(match) && match.test(host)) {\n return true;\n }\n }\n return false;\n}\n\nfunction isURL(url, options) {\n (0, _assertString2.default)(url);\n if (!url || url.length >= 2083 || /[\\s<>]/.test(url)) {\n return false;\n }\n if (url.indexOf('mailto:') === 0) {\n return false;\n }\n options = (0, _merge2.default)(options, default_url_options);\n var protocol = void 0,\n auth = void 0,\n host = void 0,\n hostname = void 0,\n port = void 0,\n port_str = void 0,\n split = void 0,\n ipv6 = void 0;\n\n split = url.split('#');\n url = split.shift();\n\n split = url.split('?');\n url = split.shift();\n\n split = url.split('://');\n if (split.length > 1) {\n protocol = split.shift();\n if (options.require_valid_protocol && options.protocols.indexOf(protocol) === -1) {\n return false;\n }\n } else if (options.require_protocol) {\n return false;\n } else if (options.allow_protocol_relative_urls && url.substr(0, 2) === '//') {\n split[0] = url.substr(2);\n }\n url = split.join('://');\n\n if (url === '') {\n return false;\n }\n\n split = url.split('/');\n url = split.shift();\n\n if (url === '' && !options.require_host) {\n return true;\n }\n\n split = url.split('@');\n if (split.length > 1) {\n auth = split.shift();\n if (auth.indexOf(':') >= 0 && auth.split(':').length > 2) {\n return false;\n }\n }\n hostname = split.join('@');\n\n port_str = null;\n ipv6 = null;\n var ipv6_match = hostname.match(wrapped_ipv6);\n if (ipv6_match) {\n host = '';\n ipv6 = ipv6_match[1];\n port_str = ipv6_match[2] || null;\n } else {\n split = hostname.split(':');\n host = split.shift();\n if (split.length) {\n port_str = split.join(':');\n }\n }\n\n if (port_str !== null) {\n port = parseInt(port_str, 10);\n if (!/^[0-9]+$/.test(port_str) || port <= 0 || port > 65535) {\n return false;\n }\n }\n\n if (!(0, _isIP2.default)(host) && !(0, _isFQDN2.default)(host, options) && (!ipv6 || !(0, _isIP2.default)(ipv6, 6))) {\n return false;\n }\n\n host = host || ipv6;\n\n if (options.host_whitelist && !checkHost(host, options.host_whitelist)) {\n return false;\n }\n if (options.host_blacklist && checkHost(host, options.host_blacklist)) {\n return false;\n }\n\n return true;\n}\nmodule.exports = exports['default'];\n});\n\nvar isURL = unwrapExports(isURL_1);\n\nfunction url (value, ref) {\n if ( ref === void 0 ) ref = [];\n var requireProtocol = ref[0]; if ( requireProtocol === void 0 ) requireProtocol = false;\n\n var options = { require_protocol: !!requireProtocol, allow_underscores: true };\n if (isNullOrUndefined(value)) {\n value = '';\n }\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return isURL(val, options); });\n }\n\n return isURL(value, options);\n}\n\n/* eslint-disable camelcase */\n\nvar Rules = /*#__PURE__*/Object.freeze({\n after: after,\n alpha_dash: validate$1,\n alpha_num: validate$2,\n alpha_spaces: validate$3,\n alpha: validate,\n before: before,\n between: validate$4,\n confirmed: confirmed,\n credit_card: credit_card,\n date_between: date_between,\n date_format: date_format,\n decimal: validate$5,\n digits: validate$6,\n dimensions: dimensions,\n email: validate$7,\n ext: ext,\n image: image,\n included: validate$8,\n integer: integer,\n length: length,\n ip: ip,\n is_not: is_not,\n is: is,\n max: max$1,\n max_value: max_value,\n mimes: mimes,\n min: min$1,\n min_value: min_value,\n excluded: excluded,\n numeric: numeric,\n regex: regex,\n required: required,\n size: size,\n url: url\n});\n\n// \n\nvar normalize = function (fields) {\n if (Array.isArray(fields)) {\n return fields.reduce(function (prev, curr) {\n if (~curr.indexOf('.')) {\n prev[curr.split('.')[1]] = curr;\n } else {\n prev[curr] = curr;\n }\n\n return prev;\n }, {});\n }\n\n return fields;\n};\n\n// Combines two flags using either AND or OR depending on the flag type.\nvar combine = function (lhs, rhs) {\n var mapper = {\n pristine: function (lhs, rhs) { return lhs && rhs; },\n dirty: function (lhs, rhs) { return lhs || rhs; },\n touched: function (lhs, rhs) { return lhs || rhs; },\n untouched: function (lhs, rhs) { return lhs && rhs; },\n valid: function (lhs, rhs) { return lhs && rhs; },\n invalid: function (lhs, rhs) { return lhs || rhs; },\n pending: function (lhs, rhs) { return lhs || rhs; },\n required: function (lhs, rhs) { return lhs || rhs; },\n validated: function (lhs, rhs) { return lhs && rhs; }\n };\n\n return Object.keys(mapper).reduce(function (flags, flag) {\n flags[flag] = mapper[flag](lhs[flag], rhs[flag]);\n\n return flags;\n }, {});\n};\n\nvar mapScope = function (scope, deep) {\n if ( deep === void 0 ) deep = true;\n\n return Object.keys(scope).reduce(function (flags, field) {\n if (!flags) {\n flags = assign({}, scope[field]);\n return flags;\n }\n\n // scope.\n var isScope = field.indexOf('$') === 0;\n if (deep && isScope) {\n return combine(mapScope(scope[field]), flags);\n } else if (!deep && isScope) {\n return flags;\n }\n\n flags = combine(flags, scope[field]);\n\n return flags;\n }, null);\n};\n\n/**\n * Maps fields to computed functions.\n */\nvar mapFields = function (fields) {\n if (!fields) {\n return function () {\n return mapScope(this.$validator.flags);\n };\n }\n\n var normalized = normalize(fields);\n return Object.keys(normalized).reduce(function (prev, curr) {\n var field = normalized[curr];\n prev[curr] = function mappedField () {\n // if field exists\n if (this.$validator.flags[field]) {\n return this.$validator.flags[field];\n }\n\n // scopeless fields were selected.\n if (normalized[curr] === '*') {\n return mapScope(this.$validator.flags, false);\n }\n\n // if it has a scope defined\n var index = field.indexOf('.');\n if (index <= 0) {\n return {};\n }\n\n var ref = field.split('.');\n var scope = ref[0];\n var name = ref.slice(1);\n\n scope = this.$validator.flags[(\"$\" + scope)];\n name = name.join('.');\n\n // an entire scope was selected: scope.*\n if (name === '*' && scope) {\n return mapScope(scope);\n }\n\n if (scope && scope[name]) {\n return scope[name];\n }\n\n return {};\n };\n\n return prev;\n }, {});\n};\n\nvar ErrorComponent = {\n name: 'vv-error',\n inject: ['$validator'],\n functional: true,\n props: {\n for: {\n type: String,\n required: true\n },\n tag: {\n type: String,\n default: 'span'\n }\n },\n render: function render (createElement, ref) {\n var props = ref.props;\n var injections = ref.injections;\n\n return createElement(props.tag, injections.$validator.errors.first(props.for));\n }\n};\n\nvar version = '2.1.0-beta.1';\n\nvar rulesPlugin = function (ref) {\n var Validator$$1 = ref.Validator;\n\n Object.keys(Rules).forEach(function (rule) {\n Validator$$1.extend(rule, Rules[rule]);\n });\n\n // Merge the english messages.\n Validator$$1.localize('en', locale);\n};\n\nuse(rulesPlugin);\n\nvar index_esm = {\n install: install,\n use: use,\n directive: directive,\n mixin: mixin,\n mapFields: mapFields,\n Validator: Validator,\n ErrorBag: ErrorBag,\n ErrorComponent: ErrorComponent,\n Rules: Rules,\n version: version\n};\n\nexport default index_esm;\nexport { install, use, directive, mixin, mapFields, Validator, ErrorBag, Rules, ErrorComponent, version };\n"],"names":["supportsPassive","addEventListener","el","eventName","cb","passive","isTextInput","indexOf","type","isCheckboxOrRadioInput","getDataAttribute","name","getAttribute","isNullOrUndefined","value","undefined","isEqual","lhs","rhs","RegExp","source","flags","Array","isArray","length","i","isObject","Object","keys","every","key","getForm","tagName","form","parentNode","getPath","path","target","def","split","prop","debounce","fn","wait","immediate","token","cancelled","args","len","arguments","later","timeout","apply","callNow","clearTimeout","setTimeout","appendRule","rule","rules","assign","normalizeRules","reduce","prev","curr","params","warn","parsedRule","slice","join","parseRule","message","console","createError","Error","obj","isCallable","func","hasClass","className","classList","contains","match","toggleClass","status","add","addClass","remove","reg","replace","removeClass","forEach","item","toArray","arrayLike","from","array","push","others","concat","TypeError","to","arg","id","idTemplate","find","predicate","isBuiltInComponent","vnode","tag","componentOptions","test","deepParseInt","input","parseInt","map","element","merge","obj$1","ErrorBag","this","items","prototype","Symbol","iterator","this$1","index","next","done","error","ref","field","msg","scope","regenerate","_normalizeError","e","update","idx","splice","all","filter","any","clear","collect","collection","selector","String","_makeCandidateFilters","isPrimary","isAlt","collected","primary","alt","count","firstById","first","_match","firstRule","errors","has","firstByRule","firstNot","removeById","matchesRule","matchesScope","matchesName","startsWith","arr","isLast","LOCALE","Dictionary","dictionary","container","prototypeAccessors","locale","configurable","get","set","hasLocale","setDateFormat","format","dateFormat","getDateFormat","getMessage","data","hasMessage","messages","_getDefaultMessage","getFieldMessage","dict","custom","_default","en","fallback","hasAttribute","attributes","setMessage","setAttribute","attribute","defineProperties","normalizeValue","I18nDictionary","i18n","rootKey","prototypeAccessors$1","getDateTimeFormat","setDateTimeFormat","te","t","localeKey","clone","normalizeFormat","mergeLocaleMessage","defaultConfig","delay","errorBagName","strict","fieldsBagName","classes","classNames","events","inject","fastExit","aria","validity","i18nRootKey","currentConfig","dependencies","Config","staticAccessors","default","current","dependency","config","register","resolve","context","selfConfig","Generator","generate","binding","model","resolveModel","options","resolveName","listen","modifiers","disable","resolveScope","vm","makeVM","expression","component","componentInstance","getter","resolveGetter","resolveEvents","resolveDelay","resolveRules","initial","initialValue","resolveInitialValue","getCtorConfig","required","multiple","pattern","maxLength","minLength","min","max","isDateInput","timeFormat","step","Number","fillRulesFromElement","directives","d","$el","$refs","$watch","bind","$validator","validate","globalDelay","$attrs","getScope","watchable","hasPath","lazy","boundGetter","els","document","querySelectorAll","checked","checkbox","elm","files","opt","selected","DEFAULT_OPTIONS","targetOf","touched","untouched","valid","invalid","pristine","dirty","Field","updated","watchers","_cacheId","_delay","validated","pending","changed","ctorConfig","prototypeAccessors$2","validator","isRequired","isDisabled","alias","rejectsFalse","disabled","_alias","matches","_veeValidateId","delayConfig","makeDelayObject","updateDependencies","addActionListeners","addValueListeners","updateClasses","updateAriaAttrs","reset","_cancellationToken","defaults","flag","updateCustomValidity","setFlags","negated","destroy","fields","r","Validator","isTargetRule","ref$1","$vnode","unwatch","w","applyClasses","onBlur","inputEvent","onInput","$once","$off","blurEvent","removeEventListener","checkValueChanged","Event","srcElement","debouncedFn","_addComponentEventListener","_addHTMLEventListener","evt","$on","addListener","applyAriaAttrs","setCustomValidity","FieldBag","prototypeAccessors$3","matcher","some","m","mapper","RULES","STRICT_MODE","TARGET_RULES","validations","_createFields","paused","ownerId","_uid","_localeListener","_vm","prototypeAccessors$4","staticAccessors$1","hasChanged","$emit","create","extend","_guardExtend","_merge","hasTarget","setStrictMode","strictMode","localize","lang","attach","_validate","then","result","_addFlag","_resolveField","detach","$nextTick","silent","Promise","validateScopes","validateAll","matched","_handleValidationResults","_handleFieldNotFound","pause","resume","values","providedValues","results","_getDateFormat","date_format","_isADateRule","_formatErrorMessage","targetName","_getFieldDisplayName","_getLocalizedParams","obj$2","scopeObj","_test","reject","allValid","_createFieldError","fieldScope","fieldName","fullName","matchers","allErrors","promises","isExitEarly","v","createValidator","mixin","provide","beforeCreate","$parent","$options","$_veeValidate","Vue","_base","injections","requested","util","defineReactive","computed","beforeDestroy","findField","directive","fieldOptions","inserted","oldValue","unbind","after","alpha_dash","alpha_num","alpha_spaces","alpha","before","between","confirmed","credit_card","date_between","decimal","decimals","digits","dimensions","email","ext","image","included","integer","ip","max_value","mimes","min_value","excluded","numeric","regex","size","threshold","Math","floor","log","pow","toFixed","url","use","plugin","Rules","VeeValidate","MILLISECONDS_IN_HOUR","MILLISECONDS_IN_MINUTE","patterns","dateTimeDelimeter","plainTime","YY","YYY","YYYY","YYYYY","MM","DDD","MMDD","Www","WwwD","HH","HHMM","HHMMSS","timezone","timezoneZ","timezoneHH","timezoneHHMM","toDate","argument","dirtyOptions","Date","NaN","additionalDigits","RangeError","getTime","dateStrings","splitDateString","parseYearResult","parseYear","date","year","restDateString","parseDate","offset","timestamp","time","parseTime","parseTimezone","getTimezoneOffset","dateString","timeString","exec","patternYYY","patternYYYYY","yearString","centuryString","month","setUTCFullYear","dayOfYear","day","dayOfISOYear","hours","minutes","parseFloat","seconds","timezoneString","absoluteOffset","isoYear","week","diff","getUTCDay","setUTCDate","getUTCDate","addMilliseconds","dirtyDate","dirtyAmount","amount","cloneObject","dirtyObject","object","property","hasOwnProperty","addMinutes","isValid","isNaN","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","tokensToBeShortedPattern","buildShortLongFormat","formatLong","formatLongLocale","LTS","LT","L","LL","LLL","LLLL","l","ll","lll","llll","buildFormatLongFn","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","buildLocalizeFn","defaultType","indexCallback","dirtyIndex","buildLocalizeArrayFn","weekdayValues","narrow","short","long","monthValues","timeOfDayValues","uppercase","lowercase","buildMatchFn","dirtyString","buildParseFn","matchResult","patternsArray","string","findIndex","locale$1","formatDistance","addSuffix","comparison","formatRelative","baseDate","ordinalNumber","dirtyNumber","number","rem100","weekday","weekdays","months","timeOfDay","timesOfDay","ordinalNumbers","weekStartsOn","firstWeekContainsDate","getUTCDayOfYear","setUTCMonth","setUTCHours","difference","startOfUTCISOWeek","getUTCISOWeekYear","getUTCFullYear","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfUTCISOWeekYear","fourthOfJanuary","getUTCISOWeek","round","formatters","getUTCMonth","unit","addLeadingZeros","ceil","quarter","substr","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","formatTimezone","_originalDate","originalDate","delimeter","sign","absOffset","abs","targetLength","output","toString","addUTCMinutes","setUTCMinutes","longFormattingTokensRegExp","defaultFormattingTokensRegExp","cleanEscapedString","subMinutes","isAfter","dirtyDateToCompare","dateToCompare","isBefore","isEqual$1","dirtyLeftDate","dirtyRightDate","dateLeft","dateRight","patterns$1","singleDigit","twoDigits","threeDigits","fourDigits","anyDigits","parseDecimal$1","parsers","parse","M","parseResult","W","D","H","Z","ZZ","units","twoDigitYear","priority","dateValues","dirtyISOYear","dateStartOfYear","isoWeek","dirtyISOWeek","dayOfWeek","dirtyDay","localeWeekStartsOn","defaultWeekStartsOn","setUTCDay","dayOfISOWeek","setUTCISODay","dayOfMonth","timeOfDayHours","setTimeOfDay","setUTCSeconds","milliseconds","setUTCMilliseconds","longFormattingTokensRegExp$1","defaultParsingTokensRegExp","dateToSystemTimezone","cleanEscapedString$1","parseDate$1","format$$1","parsed","dirtyDateString","dirtyFormatString","dirtyBaseDate","localeParsers","localeUnits","formatString","substring","subFnOptions","tokens","parsingTokensRegExp","tokensLength","setters","parser","unitName","head","uniquePrioritySetters","setter","sort","a","b","reverse","setterArray","settersLength","dirtyFormatStr","formatStr","localeFormatters","formattingTokensRegExp","timezoneOffset","utcDate","formatterOptions","formatter","cs","da","de","es","fr","lt","nl","hu","pl","pt","ru","sk","sr","tr","uk","ar","alphaSpaces","alphanumeric","alphaDash","val","loc","validate$1","validate$2","validate$3","validate$4","unwrapExports","x","__esModule","call","createCommonjsModule","module","exports","assertString_1","defineProperty","isCreditCard_1","str","_assertString2","sanitized","creditCard","sum","digit","tmpNum","shouldDouble","_interopRequireDefault","isCreditCard","validate$5","separator","parsedValue","validate$6","strVal","merge_1","isByteLength_1","_typeof","constructor","encodeURI","isFQDN_1","_merge2","default_fqdn_options","allow_trailing_dot","parts","require_tld","tld","pop","part","_i","allow_underscores","isEmail_1","default_email_options","require_display_name","allow_display_name","display_email","displayName","domain","user","lower_domain","toLowerCase","_isByteLength2","_isFQDN2","allow_utf8_local_part","quotedEmailUserUtf8","quotedEmailUser","emailUserUtf8Part","emailUserPart","user_parts","isEmail","validate$8","isIP_1","isIP","version","ipv4Maybe","blocks","foundOmissionBlock","foundIPv4TransitionBlock","expectedNumberOfBlocks","shift","ipv6Block","isURL_1","default_url_options","protocol","auth","host","hostname","port","port_str","ipv6","require_valid_protocol","protocols","require_protocol","allow_protocol_relative_urls","require_host","ipv6_match","wrapped_ipv6","_isIP2","host_whitelist","checkHost","host_blacklist","isRegExp","isURL","freeze","otherValue","inclusion","assign$1","min$$1","max$$1","inclusivity","minDate","maxDate","dateVal","width","height","list","file","URL","window","webkitURL","Image","onerror","onload","src","createObjectURL","validateImage","emailStr","trim","extensions","compare","is_not","is","invalidateFalse","nSize","requireProtocol","combine","mapScope","deep","isScope","ErrorComponent","functional","props","for","render","createElement","Validator$$1","index_esm","install","_Vue","opts","detectPassiveSupport","localVue","mapFields","normalized","normalize"],"sourceRoot":""}